Interactief & meubilair
Een live canvasdemo en het contract erachter, en daarna de stille componenten waar elke notitie door omlijst wordt — dezelfde die je sinds de eerste pagina al voor je hebt.
§3.1DemoMount — live
De taakverdeling is de gebruikelijke van dit pakket: de mount-markup (podium, slot voor bediening, slot voor onderschrift) reist mee in het pakket; de demomodule en haar loader horen bij de site. Deze site houdt zijn loader in src/lib/demo-loader.ts en roept mountAllDemos() één keer aan vanuit de layout; die aanroep draait op elke pagina, maar een demomodule-chunk wordt alleen opgehaald voor een pagina die een [data-demo]-mount draagt.
Een demo die aanwijzerinvoer op haar canvas aanneemt, geeft interactive mee — het podium claimt dan aanraakgebaren en toont een draadkruis. Deze demo is passief (alleen renderen), laat de vlag dus weg, en een veeg over het canvas scrolt gewoon de pagina. Ze tekent interferentie van twee golfbronnen met het eigen inkt-token van de pagina, en volgt zo het thema:
Twee puntbronnen zenden cirkelvormige golven uit; waar toppen op toppen vallen hoopt de inkt zich op, waar toppen op dalen vallen schemert het papier erdoorheen. Wissel eens van thema — de demo inkt zichzelf opnieuw vanuit de actuele tokens.
Het modulecontract is één default export, mount(ctx), die een opruimfunctie teruggeeft; de loader lost module-ids als waves/interference op zoals het de site uitkomt (hier met import.meta.glob).
§3.2Paginameubilair
De resterende componenten omlijsten een notitie in plaats van haar te vullen:
Heroopent een notitie: kicker, displaytitel, een intro die door de volledige Markdown-pipeline gaat, een metaregel en een optioneeltocLabeldat een ongenummerde "intro"-rij aan de zijbalk toevoegt. De frontmatter-titlevan de notitie blijft de korte canonieke naam voor<title>en kaarten; die van de hero mag lang zijn.PartHeroopent een hoofdstuk van een hub — het hoofd van deze pagina zelf. Zijn kicker typ je nooit uit: de route geeft het "Deel III · …"-label van het hoofdstuk door alsprops.partLabel.Partverdeelt een lange notitie van één pagina in delen; de nummeringspreset maakt er de groepsrijen van de zijbalk van. De staalkaart is zo opgedeeld.HubCarden.hub-gridzijn de landingskaarten van een hub;.pathis zijn leesroutekader — beide op het overzicht van deze galerij.LocalTocrendert een springlijst binnen de pagina; het accepteert beide ToC-vormen die de twee nummeringspresets produceren en verbergt zichzelf onder een instelbaar minimum. Hieronder, live, op de ToC van dit hoofdstuk zelf.SidebarMemoryhoudt een scrollende zijbalk over paginaladingen heen waar de lezer hem achterliet, en centreert het huidige item (standaard[aria-current="page"]) zodra het anders buiten beeld zou vallen. Zet het in de scrollbak van de zijbalk, na de navigatiemarkup; het draait vóór de eerste paint, dus de zijbalk flitst nooit eerst naar boven. De zijbalk van deze demo draagt het zelf.LineageSvglijst een handgetekende SVG (een methodestamboom, een taxonomieboom) in als kaart — er staat er één hieronder.PageFooteris de kleine lettertjes aan de voet van een notitie — de regel onder elke notitie hier.- De bladeronderdelen wonen in het wiki-hoofdstuk; de Markdown-kant van de galerij is de staalkaart.
§3.3LocalToc en LineageSvg, live
LocalToc, gevoed met de buildtijd-ToC van deze pagina zelf — dezelfde data die de zijbalk consumeert, aan de notitie doorgegeven als props.toc:
En LineageSvg rond een handgeschreven diagram, volledig geïnkt in semantische tokens zodat het op beide thema's past:
§3.4Meubilair zonder component
Een paar stukken zijn gewone classes in base.css, voor sites die ze vanuit hun eigen layout renderen of als HTML in lopende tekst schrijven:
| Class | Wat het is |
|---|---|
.page-head + .kicker, .page-desc, .page-date | een paginakop uit frontmatter (kicker, h1, beschrijving, datum), gerenderd door een layout in plaats van een <Hero> |
.banner, .banner-fallback | een éénregelige melding onder de kop; de fallback-variant is de gedempte |
.page-foot | een tweekoloms voetregel in kleine letters (linkerslot, rechterslot) |
.speak | de uitleg in gewone taal onder een verdiepingskop; zijn label is --speak-label |
.path + .title, .route, .arrow | een leesroutekader op een hub |
.ref-tag | een klein monospace-label in een literatuurlijst (een venue, een jaartal) |
.tag, .tag.teal / .mustard / .violet | de badges van de papierkaarten, overal bruikbaar |
.measured + .measured-head, .measured-body, .measured-pane (.doc), .measured-tag | de vergelijkingskaart gedocumenteerd-versus-gemeten: een effen teal titelbalk boven twee panelen, het .doc-paneel met de bewering en het andere met de meting — een silhouet dat van elke callout te onderscheiden is |
.paper .idea-label | het kleine kernidee-label in kapitalen binnen een PaperCard-tekst, bijv. <span class="idea-label">Kernidee</span> |