useTypeCard
- Devuelve el texto del boton corrrespondiente al tipo de layout de una tarjeta
Implementación del Composable:
Section titled “Implementación del Composable:”// Importa los tipos necesariosimport type { CardLocales } from '@/interfaces/cards'import type { ButtonTypes } from '@/types/shared/common'
/** * Devuelve el texto del botón correspondiente al tipo de layout de una tarjeta. * * @param cardLayoutType - Tipo de diseño de la tarjeta, debe ser una clave válida de ButtonTypes (por ejemplo: 'episode', 'course', etc.) * @param cardLocales - Objeto con los textos localizados para los botones de las tarjetas. * @returns Un objeto con el texto adecuado para el botón según el tipo de tarjeta. */export function useTypeButton( cardLayoutType: keyof ButtonTypes, cardLocales: CardLocales,) { // Variable que almacenará el texto del botón let typeButton = ''
// Extrae los textos localizados para cada tipo de botón desde el objeto cardLocales.buttons const { course, direct, episode, master, medium, ondemand, pack, serie, video, soon, pdf, } = cardLocales.buttons
// Mapeo entre el tipo de diseño y el texto correspondiente const buttonTypesMap: { [key in keyof ButtonTypes]: string } = { episode, pack, serie, course, master, direct, ondemand, video, medium, soon, pdf, }
// Asigna el texto según el tipo de tarjeta typeButton = buttonTypesMap[cardLayoutType]
// Devuelve el texto del botón return { typeButton, }}Ejemplo de uso:
Section titled “Ejemplo de uso:”const cardLocales = { buttons: { episode: "Ver episodio", pack: "Comprar pack", serie: "Ver serie", course: "Acceder al curso", master: "Ver máster", direct: "En directo", ondemand: "Bajo demanda", video: "Ver video", medium: "Ver medio", soon: "Próximamente", pdf: "Descargar PDF", },};const { typeButton } = useTypeButton("video", cardLocales);
console.log(typeButton); // "Ver video"