Etkileşim ve sayfa donatıları
Canlı bir canvas demosu ve arkasındaki sözleşme; ardından her notu çerçeveleyen sessiz bileşenler — ilk sayfadan beri bakmakta olduklarınız.
§3.1DemoMount — canlı
İş bölümü, paketin her zamanki ayrımıdır: bağlama işaretlemesi (sahne, kontrol yuvası, altyazı yuvası) paketle gelir; demo modülü ve yükleyicisi sitenindir. Bu site yükleyicisini src/lib/demo-loader.ts içinde tutar ve layout’tan bir kez mountAllDemos() çağırır; çağrı her sayfada çalışır, ama bir demo modülü parçası yalnızca [data-demo] bağlama noktası taşıyan bir sayfa için indirilir.
Canvas’ı üzerinde işaretçi girdisi alan bir demo interactive geçer — sahne o zaman dokunma hareketlerini sahiplenir ve bir nişangâh gösterir. Aşağıdaki demo edilgendir (yalnızca çizer); bayrağı kapalı bırakır, canvas üzerinde kaydırma sayfayı kaydırmaya devam eder. İki kaynaklı dalga girişimini sayfanın kendi mürekkep token’ıyla çizer, dolayısıyla temayı izler:
İki nokta kaynak dairesel dalgalar yayar; tepeler tepelerle buluştuğu yerde mürekkep birikir, tepeler çukurlarla buluştuğu yerde kâğıt görünür. Temayı değiştirin — demo kendini canlı token’lardan yeniden mürekkepler.
Modül sözleşmesi tek bir varsayılan export’tur: temizleme fonksiyonu döndüren mount(ctx); yükleyici, waves/interference gibi modül kimliklerini sitenin gönlünce çözer (burada import.meta.glob).
§3.2Sayfa donatıları
Kalan bileşenler bir notu doldurmaz, çerçeveler:
Herobir notu açar: kicker, vitrin başlığı, tam Markdown işlem hattından geçen bir giriş paragrafı, bir üstveri satırı ve kenar çubuğuna numarasız bir "giriş" satırı ekleyen isteğe bağlıtocLabel. Notun frontmatter’dakititledeğeri,<title>ve kartlar için kısa ve kurallı olan kalır; hero’nunki uzun olabilir.PartHerobir hub’ın bölümünü açar — bu sayfanın kendi başı. Kicker’ı asla elle yazılmaz: rota, bölümün "III. Kısım · …" etiketiniprops.partLabelolarak içeri geçirir.Part, uzun tek sayfalık bir notu kısımlara böler; numaralandırma ön ayarı bunu kenar çubuğundaki "II. Kısım · Temeller" tarzı grup satırlarına çevirir. Hepsi bir arada böyle bölünmüştür.HubCardile.hub-gridbir hub’ın açılış kartlarıdır;.pathonun okuma rotası kutusudur — ikisi de bu galerinin genel bakışında.LocalTocsayfa içi bir atlama listesi çizer; iki numaralandırma ön ayarının ürettiği her iki ToC biçimini de kabul eder ve ayarlanabilir bir alt sınırın altında kendini gizler. Aşağıda, bu bölümün kendi ToC’siyle, canlı.SidebarMemory, kayan bir kenar çubuğunu sayfa geçişleri arasında okurun bıraktığı yerde tutar ve geçerli öge görünümden çıkacaksa onu ortalar (varsayılan olarak[aria-current="page"]). Kenar çubuğunun kaydırma kutusunun içine, gezinme işaretlemesinin ardına koyun; ilk boyamadan önce çalışır, kenar çubuğu asla tepede parlamaz. Demonun kendi kenar çubuğu onu taşır.LineageSvg, sözcük içermeyen bir SVG'yi — bir soy ağacı, bir sınıflandırma — kart olarak çerçeveler; sözcük içeren bir şema aşağıdakiFlowDiagramdır.PageFooter, notun dibindeki küçük punto satırıdır — buradaki her notun altındaki satır.- Göz atma parçaları wiki bölümünde yaşar; galerinin Markdown tarafı ise hepsi bir arada.
§3.3LocalToc ve FlowDiagram, canlı
LocalToc, bu sayfanın derleme zamanı ToC’siyle beslenmiş hâlde — kenar çubuğunun tükettiği verinin aynısı, nota props.toc olarak verilir:
Aynı şekil FlowDiagram olarak — kutular sözcüklerine göre boyutlanan HTML'dir, oklar yerleşimden sonra ölçülür, dolayısıyla hiçbir yazı tipinde hiçbir şey kutusundan taşmaz:
§3.4FlowDiagram — sözcüklerine göre boyutlanan kutular
Sözcük taşıyan bir şema FlowDiagramdır (ya da bir mermaid bloğu). Elle konumlandırılmış <text> içeren bir <svg> tek bir yazı tipine göre çizilir ve daha geniş olanda bozulur — her site kendi yazı tipiyle çizer; LineageSvg, bir yazı tipinin biçimini bozamayacağı, metinsiz SVG içindir. Tanım veridir: cols, nodes (col / row / span, tone, lines, tag, kesik çizgili not için ghost, yollar için mono), edges (label, dashed, kopuk bağlantı için off), isteğe bağlı lanes ve heads:
Şeritler satırları etiketler ve ayırıcıları çizer; tone bir kutunun kenarını ve etiketini renklendirir; bir telin etiketi, boşluk sözcüklerden darsa çizilmez.
§3.5Bileşensiz donatılar
Birkaç parça, base.css içinde düz sınıf olarak yaşar — kendi layout’undan çizen ya da düz yazının içine HTML olarak yazan siteler için:
| Sınıf | Nedir |
|---|---|
.page-head + .kicker, .page-desc, .page-date | <Hero> yerine bir layout’un çizdiği, frontmatter’dan beslenen sayfa başı (kicker, h1, açıklama, tarih) |
.banner, .banner-fallback | başlığın altında tek satırlık bir duyuru; fallback varyantı sönük olanıdır |
.page-foot | iki sütunlu küçük punto alt bilgisi (sol yuva, sağ yuva) |
.speak | derin inceleme başlığının altındaki sade dilli açıklama; etiketi --speak-label |
.path + .title, .route, .arrow | bir hub’daki okuma rotası kutusu |
.ref-tag | kaynakça listesindeki küçük eş aralıklı etiket (bir mekân, bir yıl) |
.tag, .tag.teal / .mustard / .violet | makale kartı rozetleri, her yerde kullanılabilir |
.measured + .measured-head, .measured-body, .measured-pane (.doc), .measured-tag | belgelenen-ölçülen karşılaştırma kartı: iki panonun üstünde dolgun petrol yeşili bir başlık çubuğu; .doc panosu iddiayı, öteki ölçümü taşır — silüeti her callout’tan ayrıdır |
.paper .idea-label | PaperCard gövdesindeki küçük, büyük harfli ana fikir etiketi, örn. <span class="idea-label">Ana fikir</span> |