- Paquete separado (monorepo o repositorio independiente)
- Cada componente: Props tipadas, emits tipados, slots para flexibilidad
- Documentación: VitePress o Storybook con ejemplos interactivos
- Design tokens: Custom properties de CSS para theming (
--color-primary, etc.) - Testing: Vitest para tests unitarios + tests de regresión visual
- Versionado: Semver para que cada equipo pueda actualizar a su ritmo
- Tree-shaking: Named exports para que solo se incluya lo que se usa
- Accesibilidad: ARIA, navegación por teclado, gestión del foco
ts
// Buen componente de librería
<script setup lang="ts">
interface Props {
variant?: 'primary' | 'secondary' | 'danger'
size?: 'sm' | 'md' | 'lg'
disabled?: boolean
}
withDefaults(defineProps<Props>(), {
variant: 'primary',
size: 'md',
disabled: false
})
defineEmits<{ click: [event: MouseEvent] }>()
</script>