Interactif & mobilier
Une démonstration canvas en direct et le contrat qui la sous-tend, puis les composants discrets qui encadrent chaque note — ceux que vous avez sous les yeux depuis la première page.
§3.1DemoMount, en direct
La répartition des rôles est celle, habituelle, du paquet : le balisage de montage (scène, emplacement des contrôles, emplacement de la légende) est livré dans le paquet ; le module de démonstration et son chargeur appartiennent au site. Ce site garde son chargeur dans src/lib/demo-loader.ts et appelle mountAllDemos() une fois depuis le layout ; l’appel s’exécute sur chaque page, mais le chunk d’un module de démonstration n’est récupéré que pour une page qui porte un montage [data-demo].
Une démonstration qui prend l’entrée du pointeur sur son canvas passe interactive — la scène s’approprie alors les gestes tactiles et affiche un réticule. Celle-ci est passive (rendu seul) : elle laisse le drapeau éteint, et un glissement sur le canvas continue de faire défiler la page. Elle dessine l’interférence de deux sources d’ondes avec le token d’encre de la page elle-même, et suit donc le thème :
Deux sources ponctuelles émettent des ondes circulaires ; où les crêtes rencontrent les crêtes, l’encre s’accumule ; où les crêtes rencontrent les creux, le papier transparaît. Basculez le thème — la démonstration se ré-encre depuis les tokens vivants.
Le contrat de module tient en un export par défaut, mount(ctx), qui retourne une fonction de nettoyage ; les ids de modules comme waves/interference se résolvent comme bon semble au site (import.meta.glob ici).
§3.2Le mobilier de page
Les composants restants n’emplissent pas une note : ils l’encadrent.
Heroouvre une note : surtitre, titre d’affichage, un chapeau qui traverse toute la chaîne Markdown, une ligne de méta, et untocLabelfacultatif qui ajoute à la barre latérale une ligne « intro » non numérotée. Letitledu frontmatter reste le nom canonique court pour<title>et les cartes ; celui du hero peut être long.PartHeroouvre un chapitre de hub — l’en-tête de cette page même. Son surtitre ne se tape jamais : la route passe le libellé « Partie III · … » du chapitre enprops.partLabel.Partdécoupe une longue note d’une seule page en parties ; le préréglage de numérotation les transforme en lignes de groupe « PARTIE II · … » de la barre latérale. La démonstration intégrale est découpée ainsi.HubCardet.hub-gridsont les cartes d’accueil d’un hub ;.pathest sa boîte de chemin de lecture — les deux sont sur la vue d’ensemble de cette galerie.LocalTocrend une liste de sauts dans la page ; il accepte les deux formes de ToC que produisent les deux préréglages de numérotation, et se masque de lui-même sous un minimum configurable. Ci-dessous, en direct, sur le ToC de ce chapitre même.SidebarMemorygarde une barre latérale défilante là où le lecteur l’a laissée d’une page à l’autre, et centre l’élément courant ([aria-current="page"]par défaut) dès qu’il sortirait de la vue. Déposez-le dans la boîte de défilement de la barre latérale, après le balisage de navigation ; il s’exécute avant le premier rendu, la barre ne clignote donc jamais en haut. La barre latérale de cette démo le porte.LineageSvgmet en carte un SVG dessiné à la main (une filiation de méthodes, un arbre de taxonomie) — il y en a un plus bas.PageFooterest la petite ligne au pied d’une note — celle qui clôt chaque note ici.- Les pièces de parcours vivent dans le chapitre wiki ; le versant Markdown de la galerie, c’est la démonstration intégrale.
§3.3LocalToc et LineageSvg, en direct
LocalToc, nourri du ToC de cette page généré au build — les mêmes données que consomme la barre latérale, remises à la note en props.toc :
Et LineageSvg autour d’un schéma écrit à la main, encré uniquement en tokens sémantiques pour se tenir sur les deux thèmes :
§3.4Du mobilier sans composant
Quelques pièces ne sont que des classes ordinaires de base.css, pour les sites qui les rendent depuis leur propre layout ou les écrivent en HTML au fil de la prose :
| Classe | Ce que c’est |
|---|---|
.page-head + .kicker, .page-desc, .page-date | un en-tête de page piloté par le frontmatter (surtitre, h1, description, date), rendu par un layout au lieu d’un <Hero> |
.banner, .banner-fallback | un avis d’une ligne sous l’en-tête ; la variante fallback est la version assourdie |
.page-foot | un pied de page de petites lignes en deux colonnes (emplacement gauche, emplacement droit) |
.speak | la glose en langage courant sous un titre de section pointue ; son libellé vit dans --speak-label |
.path + .title, .route, .arrow | la boîte de chemin de lecture d’un hub |
.ref-tag | une petite étiquette monospace dans une liste de références (une conférence, une année) |
.tag, .tag.teal / .mustard / .violet | les badges des cartes d’articles, utilisables partout |
.measured + .measured-head, .measured-body, .measured-pane (.doc), .measured-tag | la carte de comparaison documenté-contre-mesuré : une barre de titre pleine en bleu-vert au-dessus de deux volets, le volet .doc portant l’affirmation et l’autre la mesure — une silhouette distincte de tout callout |
.paper .idea-label | le petit libellé d’idée clé en capitales dans le corps d’une PaperCard, p. ex. <span class="idea-label">Key idea</span> |