इंटरैक्टिव और साज़ो-सामान
एक जीवंत canvas-डेमो और उसके पीछे का अनुबंध, फिर वे ख़ामोश कंपोनेंट जो हर नोट को चौखट देते हैं — वही जिन्हें आप पहले पन्ने से देखते आ रहे हैं।
§3.1DemoMount — जीवंत
काम का बँटवारा पैकेज का जाना-पहचाना ही है: माउंट-मार्कअप (मंच, controls-slot, caption-slot) पैकेज में आता है; डेमो-मॉड्यूल और उसका लोडर साइट के हैं। यह साइट अपना लोडर src/lib/demo-loader.ts में रखती है और लेआउट से एक बार mountAllDemos() पुकारती है; पुकार हर पन्ने पर चलती है, पर डेमो-मॉड्यूल का chunk सिर्फ़ उसी पन्ने के लिए मँगाया जाता है जिस पर कोई [data-demo] माउंट हो।
जो डेमो अपने canvas पर पॉइंटर-इनपुट लेता है, वह interactive भेजता है — तब मंच स्पर्श-इशारों पर दावा करता है और crosshair दिखाता है। यह वाला निष्क्रिय है (सिर्फ़ रेंडर), इसलिए झंडा नहीं भेजता और canvas पर उँगली फिराने से पन्ना ही स्क्रॉल होता है। यह पन्ने के अपने स्याही-टोकन से दो-स्रोत तरंग-व्यतिकरण खींचता है, इसलिए थीम के पीछे-पीछे चलता है:
दो बिंदु-स्रोत गोलाकार तरंगें छोड़ते हैं; जहाँ शिखर से शिखर मिलता है वहाँ स्याही जम जाती है, जहाँ शिखर से गर्त — वहाँ काग़ज़ झाँकता है। थीम पलटिए — डेमो जीवित टोकनों से खुद को नई स्याही में रँग लेता है।
मॉड्यूल-अनुबंध एक default export है — mount(ctx), जो सफ़ाई करने वाला फ़ंक्शन लौटाता है; waves/interference जैसी मॉड्यूल-id को लोडर जैसे चाहे हल करे (यहाँ import.meta.glob से)।
§3.2पन्ने का साज़ो-सामान
बाक़ी कंपोनेंट नोट को भरते नहीं, चौखट देते हैं:
Heroनोट खोलता है: kicker, डिस्प्ले-शीर्षक, पूरी Markdown पाइपलाइन से गुज़रने वाला आमुख, एक मेटा-पंक्ति, और वैकल्पिकtocLabelजो साइडबार में बिना-क्रमांक की "भूमिका" पंक्ति जोड़ देता है। नोट के frontmatter काtitleछोटा प्रामाणिक नाम ही रहता है —<title>और कार्डों के लिए; हीरो का शीर्षक लंबा हो सकता है।PartHeroहब का अध्याय खोलता है — इसी पन्ने का सिर। उसका kicker कभी हाथ से नहीं लिखा जाता: रूट अध्याय का "भाग III · …" लेबलprops.partLabelबनाकर भेजता है।Partलंबे एक-पन्ना नोट को भागों में काटता है; क्रमांकन-प्रीसेट उसे साइडबार की "भाग II · …" जैसी समूह-पंक्तियाँ बना देता है। kitchen-sink इसी तरह कटा है।HubCardऔर.hub-gridहब के लैंडिंग-कार्ड हैं;.pathउसका पढ़ने-का-रास्ता बक्सा — दोनों इस गैलरी के अवलोकन पर।LocalTocपन्ना-भीतर जंप-लिस्ट रेंडर करता है; दोनों क्रमांकन-प्रीसेटों के ToC-आकार स्वीकारता है, और तय-योग्य न्यूनतम से नीचे खुद छिप जाता है। नीचे जीवंत — इसी अध्याय के अपने ToC पर।SidebarMemoryस्क्रॉल होने वाले साइडबार को पन्ना बदलने पर वहीं रखता है जहाँ पाठक छोड़ गया था, और मौजूदा प्रविष्टि (डिफ़ॉल्ट[aria-current="page"]) जब भी नज़र से बाहर होती, उसे बीच में ले आता है। साइडबार के स्क्रॉल-बॉक्स के भीतर, नेविगेशन-मार्कअप के बाद रखिए; यह पहले paint से पहले चलता है, इसलिए साइडबार कभी ऊपर से झिलमिलाकर शुरू नहीं होता। डेमो का अपना साइडबार इसे ढोता है।LineageSvgबिना शब्दों वाले SVG — वंश-वृक्ष, वर्गीकरण — को कार्ड की तरह घेरता है; शब्दों वाला आरेखFlowDiagramहै, नीचे।PageFooterनोट के पैर की महीन छपाई है — यहाँ हर नोट के नीचे की पंक्ति।- ब्राउज़ के हिस्से विकी अध्याय में रहते हैं; गैलरी का Markdown-पक्ष kitchen-sink है।
§3.3LocalToc और FlowDiagram, जीवंत
LocalToc को इसी पन्ने का बिल्ड-समय ToC थमाया गया — वही डेटा जो साइडबार बरतता है, नोट को props.toc के रूप में मिला हुआ:
वही चित्र FlowDiagram के रूप में — बक्से HTML हैं जो अपने शब्दों के अनुसार आकार लेते हैं, तीर लेआउट के बाद मापे जाते हैं, इसलिए किसी भी फ़ॉन्ट में कुछ भी बक्से से बाहर नहीं जाता:
§3.4FlowDiagram — शब्दों के नाप के बक्से
शब्दों वाला आरेख FlowDiagram होता है (या mermaid ब्लॉक)। हाथ से रखे <text> वाला <svg> एक फ़ॉन्ट के लिए बनता है और अगले चौड़े फ़ॉन्ट में टूट जाता है — और हर साइट अपने फ़ॉन्ट से रेंडर करती है; LineageSvg उस SVG के लिए है जिसमें ऐसा कोई पाठ नहीं जिसे फ़ॉन्ट आकार से बाहर धकेल सके। विनिर्देश डेटा है: cols, nodes (col / row / span, tone, lines, tag, बिंदीदार नोट के लिए ghost, पथों के लिए mono), edges (label, dashed, टूटे संबंध के लिए off), वैकल्पिक lanes और heads:
लेन पंक्तियों को लेबल देती हैं और विभाजक खींचती हैं; tone बक्से की सीमा और टैग को रंगता है; तार का लेबल तब छोड़ दिया जाता है जब अंतर शब्दों से संकरा हो।
§3.5बिना कंपोनेंट का साज़ो-सामान
कुछ हिस्से base.css की सादी क्लासें हैं — उन साइटों के लिए जो उन्हें अपने लेआउट से रेंडर करती हैं या गद्य में HTML लिख देती हैं:
| क्लास | यह क्या है |
|---|---|
.page-head + .kicker, .page-desc, .page-date | frontmatter से चलने वाला पन्ना-सिर (kicker, h1, विवरण, तारीख़), जिसे <Hero> की जगह लेआउट रेंडर करता है |
.banner, .banner-fallback | सिर के नीचे एक-पंक्ति सूचना; fallback वेरिएंट दबे स्वर वाला है |
.page-foot | दो-कॉलम महीन-छपाई फ़ुटर (बायाँ slot, दायाँ slot) |
.speak | गहरे विश्लेषण वाले शीर्षक के नीचे की आसान-भाषा टिप्पणी; उसका लेबल --speak-label है |
.path + .title, .route, .arrow | हब पर पढ़ने-का-रास्ता बक्सा |
.ref-tag | संदर्भ-सूची का छोटा monospace टैग (प्रकाशन-स्थल, वर्ष) |
.tag, .tag.teal / .mustard / .violet | पेपर-कार्ड के बैज, कहीं भी बरतने-योग्य |
.measured + .measured-head, .measured-body, .measured-pane (.doc), .measured-tag | दस्तावेज़-बनाम-नाप तुलना-कार्ड: ठोस टील शीर्षक-पट्टी के नीचे दो फलक — .doc फलक पर दावा, दूसरे पर नाप — हर callout से अलग पहचानी जाने वाली छाया |
.paper .idea-label | PaperCard की देह में छोटा uppercase मुख्य-विचार लेबल, जैसे <span class="idea-label">Key idea</span> |