Composants
@sodinix/ui expose 26 composants React. Chacun a une API publique stable et
typée, sans exposer shadcn/Radix/Tailwind aux produits.
Catalogue
Primitifs
Button · Badge · Avatar · Separator
Formulaires
Input · Textarea · Select · Checkbox · RadioGroup · Switch ·
Slider
Navigation
Tabs · Breadcrumb · Pagination · DropdownMenu
Superpositions
Dialog · Sheet · Tooltip · Popover · Toast
Feedback
Alert · Progress · Skeleton · Spinner · Table · Card
Deux niveaux
src/components/ui/— primitives proches de shadcn/Radix, internes.src/components/{nom}/— wrappers : l'API publique, avec des props abstraites (isLoading,leftIcon,label,error…).
Les produits importent toujours depuis le point d'entrée :
import { Button } from '@sodinix/ui'
Personnalisation
Tous les composants acceptent className, fusionné sans conflit via cn()
(clsx + tailwind-merge) :
<Button className="w-full">Pleine largeur</Button>
Accessibilité
Chaque composant est vérifié par axe-core (packages/ui/src/a11y.test.tsx,
cible WCAG 2.2 AA) et l'addon @storybook/addon-a11y. L'anneau de focus est
unifié, et les animations respectent prefers-reduced-motion.
Atelier visuel
Storybook présente chaque composant, ses variantes et ses états :
bun run dev --filter=storybook # → http://localhost:6006