musa-design-system
v2.0.4
Published
``` import 'musa-design-system/dist/index.cjs.css'; import { Alert, ContainedButton, DropdownSelector, LetterInput, OutlinedButton, PasswordInput, } from "musa-design-system";; ```
Downloads
86
Readme
Instalación
import 'musa-design-system/dist/index.cjs.css';
import {
Alert,
ContainedButton,
DropdownSelector,
LetterInput,
OutlinedButton,
PasswordInput,
} from "musa-design-system";;
Componentes Documentados
1. Buttons
Botones reutilizables con diferentes estilos y variantes.
Variantes:
- Outline: Botón con borde visible.
- Solid: Botón con fondo sólido.
- Gosh: Estilo de botón con efecto especial.
- Button Icon: Botón que incluye un ícono y es rounded-full.
Props
| Propiedad | Tipo | Descripción |
| ---------------- | -------------------------------------------------------------------- | -------------------------------------------------------------- |
| variant
| 'contained' \| 'outlined'
| Variante del botón: relleno (contained
) o borde (outlined
) |
| children
| React.ReactNode
| Contenido interno del botón (texto, íconos, etc.) |
| icon
| React.ReactNode
| Ícono al inicio del botón (opcional) |
| endIcon
| React.ReactNode
| Ícono al final del botón (opcional) |
| color
| 'primary' \| 'secondary' \| 'error' \| 'gray' \| 'info' \| 'white'
| Color del botón, según el tema del sistema |
| extraPadding
| boolean
| Agrega un padding extra al botón (opcional) |
| full
| boolean
| Hace que el botón ocupe el ancho completo del contenedor |
| loading
| boolean
| Muestra un indicador de carga dentro del botón |
| roundedFull
| boolean
| Estilo con bordes completamente redondeados |
| size
| 'normal' \| 'small' \| 'large' \| 'medium'
| Tamaño del botón |
| centerText
| boolean
| Centra el texto del botón |
| shadowDisabled
| boolean
| Desactiva la sombra del botón (opcional) |
| style
| React.CSSProperties
| Estilos personalizados aplicados al botón |
| onClick
| function
| Función a ejecutar al hacer clic |
| type
| 'button' \| 'submit' \| 'reset'
| Tipo del botón HTML |
| disabled
| boolean
| Desactiva el botón |
Ejemplo
<OutlinedButton color="primary">Hola</OutlinedButton>
<ContainedButton color="primary">Hola</ContainedButton>
2. Input
Campos de entrada de texto con múltiples variantes y funcionalidad avanzada.
Tipos de Inputs
- LetterInput: Entrada restringida a letras (con opción para permitir espacios).
- NumberInput: Entrada restringida a números (con soporte opcional para decimales).
- PasswordInput: Entrada para contraseñas.
Props Generales
| Propiedad | Tipo | Descripción |
| ----------------- | -------------------------------------------- | --------------------------------------------------- |
| variant
| 'normal'
| Variante visual del input |
| disabled
| boolean
| Desactiva la entrada, impidiendo interacción |
| fullWidth
| boolean
| Ajusta el ancho del input al 100% del contenedor |
| endIcon
| ReactElement
| Ícono al final del input (opcional) |
| isInvalid
| boolean
| Marca el input como inválido |
| isError
| boolean
| Marca el input con un estado de error |
| error
| string
| Mensaje de error mostrado debajo del input |
| label
| string
| Etiqueta asociada al input |
| placeholder
| string
| Texto de marcador dentro del input |
| hint
| string
| Mensaje de ayuda mostrado debajo del input |
| actionEndIcon
| ReactElement
| Ícono de acción al final del input |
| onClickEndIcon
| function
| Acción ejecutada al hacer clic en endIcon
|
| onActionEndIcon
| function
| Acción ejecutada al interactuar con actionEndIcon
|
| showIconAction
| boolean
| Muestra o no el actionEndIcon
|
| width
| string
| Ancho personalizado del input |
| padding
| string
| Espaciado interno del input |
| onChange
| (e: ChangeEvent<HTMLInputElement>) => void
| Función ejecutada al cambiar el valor |
| type
| string
| Tipo de entrada HTML |
Props Específicas
LetterInput
| Propiedad | Tipo | Descripción |
| ------------- | --------- | ---------------------------- |
| allowSpaces
| boolean
| Permite espacios en el input |
NumberInput
| Propiedad | Tipo | Descripción |
| --------- | --------- | ------------------------- |
| decimal
| boolean
| Permite números decimales |
Ejemplo de Uso
// Entrada de solo letras
<LetterInput
label="Solo letras"
placeholder="Ej. ABC"
allowSpaces
/>
// Entrada de números
<NumberInput
label="Edad"
placeholder="Ej. 25"
decimal={false}
/>
3. Card
Componente para contener contenido con sombra, bordes redondeados y tamaños configurables.
Props
| Propiedad | Tipo | Descripción |
| ----------- | ------------------------------------------ | ------------------------------- |
| children
| React.ReactNode
| Contenido interno de la tarjeta |
| className
| string
| Clase CSS personalizada |
| padding
| 'none' \| 'small' \| 'normal' \| 'large'
| Tamaño del padding interno |
| center
| boolean
| Centra el contenido |
| onClick
| function
| Acción al hacer clic |
| bordered
| boolean
| Agrega un borde visible |
Ejemplo
<Card center bordered padding="large">
Este es un card con sombra y bordes redondeados.
</Card>
4. Alert
Mensajes informativos con diferentes estilos.
Props
| Propiedad | Tipo | Descripción |
| --------- | --------------------------------------------- | -------------------- |
| type
| 'info' \| 'error' \| 'success' \| 'warning'
| Tipo de alerta |
| message
| string
| Mensaje de la alerta |
Ejemplo
<Alert type="success" message="Operación exitosa." />
<Alert type="error" message="Ha ocurrido un error." />
5. Checkbox y Radio
Props de Radio
| Propiedad | Tipo | Descripción |
| ------------- | -------------------------- | ------------------------------ |
| label
| string \| ReactElement
| Etiqueta del radio button |
| full
| boolean
| Ocupa todo el ancho disponible |
| centerRadio
| boolean
| Centra el radio button |
| hideRadio
| boolean
| Oculta el radio button |
| hint
| string
| Texto adicional |
| color
| 'primary' \| 'secondary'
| Color del radio button |
Props de Checkbox
| Propiedad | Tipo | Descripción |
| ---------------- | -------------------------- | ------------------------------ |
| label
| string \| ReactElement
| Etiqueta del checkbox |
| full
| boolean
| Ocupa todo el ancho disponible |
| centerCheckbox
| boolean
| Centra el checkbox |
| hideCheckbox
| boolean
| Oculta el checkbox |
| hint
| string
| Texto adicional |
| endIcon
| ReactElement
| Icono al final |
| color
| 'primary' \| 'secondary'
| Color del checkbox |
Ejemplo
<Checkbox label="Acepto los términos y condiciones" />
<div className="flex flex-col gap-4">
<Radio
label="Option 1"
name="radioGroup"
value="option1"
checked={selected === 'option1'}
onChange={() => setSelected('option1')}
color='primary'
/>
<Radio
label="Option 2"
name="radioGroup"
value="option2"
checked={selected === 'option2'}
onChange={() => setSelected('option2')}
color='secondary'
/>
</div>
6. Loader
Props
| Propiedad | Tipo | Descripción |
| --------- | -------- | -------------------------------- |
| label
| string
| Descripción del mensaje de carga |
Ejemplo
<Loader label="Cargando componentes..." />
7. DropdownSelector
Props
| Propiedad | Tipo | Descripción |
| ------------------- | ----------------------------------------- | ---------------------------------- |
| options
| Array<{ value: string, label: string }>
| Lista de opciones disponibles |
| formGroupWidth
| string
| Ancho personalizado del contenedor |
| selectedOption
| { value: string, label: string }
| Opción seleccionada |
| setSelectedOption
| function
| Función para actualizar selección |
| labelText
| string
| Etiqueta del dropdown |
| hintText
| string
| Mensaje de ayuda |
| emptyMessage
| string
| Mensaje cuando no hay opciones |
| isDisabled
| boolean
| Desactiva el dropdown |
| isError
| boolean
| Indica estado de error |
8. Header
Props
| Propiedad | Tipo | Descripción |
| ---------- | ------------- | --------------------- |
| logo
| JSX.Element
| Logo del encabezado |
| navLinks
| JSX.Element
| Enlaces de navegación |
Ejemplo
const navLinks = (
<>
<a href="#home">Home</a>
<a href="#about">About</a>
<a href="#contact">Contact</a>
</>
);
<Header logo={<FaReact />} navLinks={navLinks} />;