Architecture
Organisation
sia-ui/
├── packages/
│ ├── tokens/ # valeurs visuelles, thèmes et vocabulaire de rendu
│ ├── utils/ # helpers transverses importables à la carte
│ ├── api/ # client HTTP typé, sans React ni DOM
│ ├── headless/ # logique de composant sans rendu
│ ├── react/ # fondations React partagées
│ ├── react-web/ # les composants web, source unique
│ ├── registry/ # catalogue et sources copiables
│ └── cli/ # commandes init, list et add
└── docs/ # documentation d'architecture, et le site qui la publieGraphe des dépendances
Une dépendance inverse est interdite. Par exemple, tokens ne peut pas importer React, et headless ne peut pas importer un composant de react-web.
Responsabilités
@sia-ui/tokens
Contient les couleurs, espacements, rayons, ombres et thèmes sémantiques. Il ne dépend ni du DOM ni de React et peut donc servir à plusieurs moteurs de rendu.
@sia-ui/headless
Contient la logique de composant sans son rendu : magasins hors de React (annonces, session), contrat de formulaire, et crochets d'état réutilisables entre le web et un futur moteur natif.
@sia-ui/api
Contient le client HTTP typé, ses greffons de transport et ses services de ressource. Il ne dépend ni de React, ni du DOM, ni des tokens, et s'installe seul.
@sia-ui/utils
Contient les helpers transverses réutilisés entre produits : classes CSS, formatage de montants, dates, nombres et chaînes de caractères. Il reste indépendant de React pour pouvoir être utilisé aussi bien dans le registre que dans les applications.
@sia-ui/react
Contient uniquement les mécanismes React réellement partagés : SiaProvider, portail, état contrôlé/non contrôlé, disclosure et fusion de références.
@sia-ui/react-web
Contient les composants web eux-mêmes — source unique de leur code et de leur CSS. C'est ce paquet que le registre sert, fichier pour fichier.
@sia-ui/registry
Décrit les composants installables et conserve leurs fichiers sources. Une entrée indique son type, ses fichiers et ses dépendances envers d'autres entrées.
@sia-ui/cli
Lit le registre, résout les dépendances transitives et copie les fichiers dans l'application. Elle n'écrase pas un fichier existant.
Frontières
SIA UI peut accepter un queryFn ou des données, mais ne doit pas connaître une URL d'API, une entité métier ou une règle d'autorisation propre à un produit.