Bibliothèque de composants natifs HTML stylés, accessibles et personnalisables.
- Composants natifs : Tous les éléments HTML essentiels (button, input, textarea, select, checkbox, radio, range, switch, details, dialog, table, list…) avec des styles modernes et accessibles.
- CSS vanilla moderne : Custom properties, nesting, Grid/Flexbox, media queries modernes. Aucune dépendance à un framework CSS.
- Styleguide interactif : Prévisualisez tous les composants en direct, affichez le code source et copiez-le facilement.
- Personnalisation complète : Adaptez couleurs, espacements, rayons et typographie via des variables CSS, sans toucher au HTML.
- Performance et accessibilité : Code léger, faible spécificité CSS, JavaScript minimal, navigation clavier complète.
- Éco-conception : Assets optimisés, rendu efficace, compatible avec les approches sobres.
Deux usages possibles selon votre contexte.
- Copier-coller le HTML depuis le styleguide
- Ouvrir le styleguide, choisir un composant, cliquer sur « Afficher le code » puis copier le bloc fourni.
- Inclure la feuille de styles du projet:
- Avec Vite: importer
assets/app.cssdans votre entrée JS. - En statique: utiliser les CSS générées dans
public/css/(ou le répertoire de build) dans vos pages HTML.
- Avec Vite: importer
- Personnaliser le rendu en surchargeant les variables CSS (dans
:rootou un wrapper):
:root {
/* Couleurs */
--color-primary-500: #2563eb;
--color-gray-900: #0f172a;
/* Typo et rythmes */
--text-m: 1rem;
--leading-28: 1.75rem;
/* Rayons et espacements */
--radius-8: 8px;
--spacing-16: 1rem;
}- Travailler localement avec le dépôt
- Prérequis: Node 20+ (ou récent), un gestionnaire de paquets (pnpm recommandé).
- Installer et lancer:
pnpm install
pnpm dev # serveur de dev
pnpm build # build de production
pnpm preview # prévisualisation du buildNotes d’usage
- La plupart des composants fonctionnent sans JavaScript. Certains proposent un JS optionnel (ex: dialog, textarea avec compteur). Référez‑vous au dossier du composant pour l’activer si besoin.
- Accessibilité: conservez la sémantique native (labels, attributs requis, aria‑* le cas échéant). Les styles n’entravent pas la navigation clavier.
- Theming: modifiez vos tokens via vos propres variables CSS; aucune dépendance à un framework CSS.
Le styleguide adopte un layout modulaire rendu via templates (build-time):
- Dossiers:
templates/(Handlebars),templates/partials/(header, sidebar, footer),templates/context.json(métadonnées de page),assets/data/components.json(liste des composants de nav) - L'injection des démos reste côté client via
assets/js/router.jsetimport.meta.glob("/natives/**/*.html").
Intégration plugin (à valider): ajout d'un plugin Handlebars dans Vite pour compiler les templates au build; aucune dépendance ajoutée tant que non validée.
La coloration du code affiché dans le styleguide repose sur l’API CSS Custom Highlight et le web component <syntax-highlight> (package syntax-highlight-element).
- Dépendance npm:
syntax-highlight-element(v1.x)- Déjà ajouté dans
package.json.
syntax-highlight-element utilise un top‑level await. Pour éviter une erreur de build, le projet est configuré pour cibler ES2022 côté esbuild et build:
- Dans
vite.config.js:esbuild.target = "es2022"optimizeDeps.esbuildOptions.target = "es2022"build.target = "es2022"
- Fichier:
assets/main.jsimport "syntax-highlight-element"import "syntax-highlight-element/themes/prettylights.css"
Le thème prettylights applique les couleurs via ::highlight(); vous pouvez changer de thème ou créer le vôtre.
- Le bloc de code du styleguide utilise le web component:
<syntax-highlight language="html" class="code-highlight"> </syntax-highlight>- Un nœud texte initial est présent (espace) pour garantir que l’API crée des
Rangesur unfirstChild.
- Fichier:
assets/js/router.js- Lors du clic sur "Afficher le code", le HTML du composant est sérialisé, formaté, puis injecté:
she.textContent = formattedHtmlshe.update()est appelé si disponible pour déclencher (ou re‑déclencher) la coloration.
- Fallback: si le web component n’est pas disponible, le code est inséré dans
<code class="language-html">.
- Lors du clic sur "Afficher le code", le HTML du composant est sérialisé, formaté, puis injecté:
- Le conteneur de code reste un region ARIA avec
aria-label. - Le web component expose un rôle
codeviaElementInternals.
- Thème: surchargez les variables CSS du thème (ex. couleurs
--prettylights-*) ou importez un autre thème. - Langage: ajustez l’attribut
language(html|css|js). - Compaction d’affichage: le formateur compactera certains éléments en une ligne (ex:
li,a,button, titres…) si leur contenu est un texte simple.