Verser un pattern
Deux portes, la même bibliothèque : un formulaire si vous ne voulez pas cloner, une pull request si git ne vous fait pas peur. Dans les deux cas un contrôle automatique répond dans la minute, champ par champ, et vous êtes crédité dans le pattern. Licence MIT.
Sans git — le formulaire
- Remplissez le formulaire. Identifiant, famille, intention, conditions d'emploi, mots-clés, et le fragment HTML avec son
<style>. Rien à installer. - Un robot contrôle dans la minute et commente ce qui manque : identifiant déjà pris, script ou image interdits, couleurs en dur,
avoid_whentrop court. Vous modifiez l'issue, le contrôle se rejoue. - Un mainteneur répond
/accepter: les fichiers sont écrits, l'index régénéré, et une pull request s'ouvre à votre nom. Elle se referme sur votre issue à la fusion.
Avec git — la pull request
- Forkez et clonez.
gh repo fork lbachelotcapitalb/visual-lab --clone - Écrivez le fragment dans
patterns/<famille>-<NN>-<slug>.html. Autonome : son CSS voyage dans un<style>à l'intérieur du fichier, ses couleurs passent par des variables--vl-*, jamais par des valeurs en dur. Aucun script, aucune police distante, aucune image. - Écrivez le contrat dans le
.jsondu même nom (gabarit ci-dessous).avoid_whenvautwhen_to_use: un pattern qu'on ne sait pas refuser ne sert à rien. - Régénérez et vérifiez.
node bin/index.mjs && node bin/check.mjs <id>— l'index se reconstruit, les benchmarks se rejouent dans un vrai navigateur. - Ouvrez la pull request. Une pull request = un pattern (ou une charte + ses patterns). Décrivez ce que la composition résout, pas à quoi elle ressemble.
La nomenclature
Le nom de fichier porte la famille : card-12-inverted-kpi-row est de famille card, et l'index le vérifie. Le vocabulaire est fermé — huit familles, pas neuf :
diagram ≠ chart : un chart porte des données (une valeur mesurée décide de la géométrie), un diagram porte une structure (couches, flux, appartenance) où rien n'est proportionnel à quoi que ce soit.
Les médias
Un pattern déclare où il est censé servir — c'est une intention, la faisabilité se prouve par bin/emit.mjs --target <média>, qui refuse ce que la cible ne sait pas rendre :
Ce qui fait refuser une contribution
une couleur en dur au lieu d'un --vl-* | le fragment ne se thème plus |
| une police ou une image distante | zéro requête sortante est un invariant |
| du JavaScript dans le fragment | un pattern est une composition, pas un composant |
un avoid_when vide ou décoratif | sans lui le catalogue ne route plus |
| un binaire (PNG, capture) | une image est une copie morte, elle périme en silence |