jekyll-obsidian-site 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +133 -0
- data/website/_config.yml +21 -0
- data/website/_includes/website/archive-timeline.html +8 -0
- data/website/_includes/website/blog-ledger.html +19 -0
- data/website/_includes/website/blog-navigation.html +7 -0
- data/website/_includes/website/comments.html +22 -0
- data/website/_includes/website/contact-icon.html +14 -0
- data/website/_includes/website/context-tags.html +7 -0
- data/website/_includes/website/context.html +3 -0
- data/website/_includes/website/dialogs.html +71 -0
- data/website/_includes/website/docs-navigation.html +7 -0
- data/website/_includes/website/docs-tree.html +8 -0
- data/website/_includes/website/footer.html +14 -0
- data/website/_includes/website/github-icon.html +3 -0
- data/website/_includes/website/head.html +41 -0
- data/website/_includes/website/header.html +35 -0
- data/website/_includes/website/language-switcher.html +16 -0
- data/website/_includes/website/local-graph.html +25 -0
- data/website/_includes/website/note-header.html +35 -0
- data/website/_includes/website/outline.html +9 -0
- data/website/_includes/website/page-actions.html +34 -0
- data/website/_includes/website/portfolio-grid.html +36 -0
- data/website/_includes/website/portfolio-topics.html +4 -0
- data/website/_includes/website/post-cards.html +16 -0
- data/website/_includes/website/related-articles.html +7 -0
- data/website/_includes/website/relations.html +16 -0
- data/website/_includes/website/source-actions.html +28 -0
- data/website/_includes/website/system-page.html +31 -0
- data/website/_includes/website/tab-collection.html +28 -0
- data/website/_includes/website/tag-filter.html +12 -0
- data/website/_layouts/website-docs.html +20 -0
- data/website/_layouts/website-minimal.html +93 -0
- data/website/_layouts/website-redirect.html +17 -0
- data/website/assets/chunks/abnfDiagram-N423BO3Z-TSORAEI2.js +1 -0
- data/website/assets/chunks/architecture-TIHT7OUA-OUC5PEC7.js +1 -0
- data/website/assets/chunks/architectureDiagram-T3A2C74G-6P5MB2DJ.js +36 -0
- data/website/assets/chunks/blockDiagram-VBNYF7ZC-ZWINYROZ.js +132 -0
- data/website/assets/chunks/c4Diagram-5PPSVZJV-R5RMEAOT.js +10 -0
- data/website/assets/chunks/chunk-22DRK7VS.js +1 -0
- data/website/assets/chunks/chunk-25REBZ7M.js +2 -0
- data/website/assets/chunks/chunk-2RQCUDTG.js +1 -0
- data/website/assets/chunks/chunk-34FHPXU4.js +1 -0
- data/website/assets/chunks/chunk-57XXJOQN.js +10 -0
- data/website/assets/chunks/chunk-6DCNDVBX.js +2 -0
- data/website/assets/chunks/chunk-6DHFEWGX.js +1 -0
- data/website/assets/chunks/chunk-6VQ47JJS.js +2 -0
- data/website/assets/chunks/chunk-7CSIRG7W.js +127 -0
- data/website/assets/chunks/chunk-A43YELH5.js +1 -0
- data/website/assets/chunks/chunk-AIX6IH4O.js +1 -0
- data/website/assets/chunks/chunk-B3K7RH5O.js +88 -0
- data/website/assets/chunks/chunk-CBGUD2NP.js +1 -0
- data/website/assets/chunks/chunk-D3WOCELE.js +1 -0
- data/website/assets/chunks/chunk-D6FURU6X.js +1 -0
- data/website/assets/chunks/chunk-DGEGT77F.js +1 -0
- data/website/assets/chunks/chunk-DN52R6U7.js +1 -0
- data/website/assets/chunks/chunk-E3T3IFAC.js +1 -0
- data/website/assets/chunks/chunk-EIBFAW37.js +1 -0
- data/website/assets/chunks/chunk-ERWOH47R.js +1 -0
- data/website/assets/chunks/chunk-ETOVTYWF.js +1 -0
- data/website/assets/chunks/chunk-GHD3PFWA.js +231 -0
- data/website/assets/chunks/chunk-GMBKQ7NZ.js +1 -0
- data/website/assets/chunks/chunk-GQM25EPP.js +156 -0
- data/website/assets/chunks/chunk-GSOU4UTT.js +1 -0
- data/website/assets/chunks/chunk-HEMELP7J.js +1 -0
- data/website/assets/chunks/chunk-HZ5I5NJO.js +1 -0
- data/website/assets/chunks/chunk-IP56FOSI.js +70 -0
- data/website/assets/chunks/chunk-L7BMR7WL.js +1 -0
- data/website/assets/chunks/chunk-LGUG3SQB.js +1 -0
- data/website/assets/chunks/chunk-LOMHZYS2.js +1 -0
- data/website/assets/chunks/chunk-MII4VZEB.js +3 -0
- data/website/assets/chunks/chunk-MYMJLHQL.js +62 -0
- data/website/assets/chunks/chunk-NBH7YOBD.js +15 -0
- data/website/assets/chunks/chunk-NCOVM3YF.js +1 -0
- data/website/assets/chunks/chunk-OAGTSILX.js +1 -0
- data/website/assets/chunks/chunk-OCX5OCIU.js +321 -0
- data/website/assets/chunks/chunk-OE3NOVIH.js +1 -0
- data/website/assets/chunks/chunk-PLP5XUTJ.js +1 -0
- data/website/assets/chunks/chunk-PNOERP6G.js +1 -0
- data/website/assets/chunks/chunk-QBPQ7DPE.js +1 -0
- data/website/assets/chunks/chunk-RWFFDL53.js +1 -0
- data/website/assets/chunks/chunk-SEGIW3MP.js +1 -0
- data/website/assets/chunks/chunk-SZDMZNUS.js +1 -0
- data/website/assets/chunks/chunk-T2QBAPVT.js +1 -0
- data/website/assets/chunks/chunk-UE533OZ7.js +1 -0
- data/website/assets/chunks/chunk-UTWOJE2A.js +1 -0
- data/website/assets/chunks/chunk-VOCDYA3H.js +1 -0
- data/website/assets/chunks/chunk-VYZZPKGK.js +161 -0
- data/website/assets/chunks/chunk-WWLZIRS6.js +1 -0
- data/website/assets/chunks/chunk-XNXYDBKX.js +32 -0
- data/website/assets/chunks/chunk-XQUIO562.js +1 -0
- data/website/assets/chunks/chunk-Y2XVFW7T.js +2 -0
- data/website/assets/chunks/chunk-YORIST7Z.js +1 -0
- data/website/assets/chunks/chunk-Z2WBQPVY.js +206 -0
- data/website/assets/chunks/classDiagram-JCYQIIEL-OFDVDDIM.js +1 -0
- data/website/assets/chunks/classDiagram-v2-OCEON4UE-E36B6BGQ.js +1 -0
- data/website/assets/chunks/cose-bilkent-JH36ORCC-CBAW64AB.js +1 -0
- data/website/assets/chunks/cynefin-VYW2F7L2-CBO6DLNV.js +1 -0
- data/website/assets/chunks/cynefinDiagram-MW4NZA55-DFINLOUY.js +62 -0
- data/website/assets/chunks/dagre-VZM6K2ZE-BZFBSZAH.js +4 -0
- data/website/assets/chunks/diagram-7IWD3JNH-XQHTVOU2.js +30 -0
- data/website/assets/chunks/diagram-B4RE2ZJO-FTSXBZJR.js +3 -0
- data/website/assets/chunks/diagram-LBJQPF4R-ZSZW4OLH.js +24 -0
- data/website/assets/chunks/diagram-Q27KOJAE-2IV5TVCJ.js +24 -0
- data/website/assets/chunks/diagram-UB23O5K3-D6PDUTFL.js +41 -0
- data/website/assets/chunks/ebnfDiagram-BXEA7PRR-C6MAER3M.js +1 -0
- data/website/assets/chunks/erDiagram-JOGREHBK-EDAD2H5M.js +85 -0
- data/website/assets/chunks/eventmodeling-45OFAUF4-4K577DMF.js +1 -0
- data/website/assets/chunks/flowDiagram-UKHOOZJN-545F4YX3.js +1 -0
- data/website/assets/chunks/ganttDiagram-PKOTCBZU-7A7EKMY3.js +292 -0
- data/website/assets/chunks/gitGraph-TEB2WS4Q-3WUB7WYQ.js +1 -0
- data/website/assets/chunks/gitGraphDiagram-DS77QQ5N-A5UWV5FF.js +106 -0
- data/website/assets/chunks/info-DKCQHKI2-EOOHI7XS.js +1 -0
- data/website/assets/chunks/infoDiagram-6WML65LV-CWIOOWJP.js +2 -0
- data/website/assets/chunks/ishikawaDiagram-WSZJBQD7-CEASQVDL.js +70 -0
- data/website/assets/chunks/journeyDiagram-NVQOT4AX-LYG3S2AW.js +139 -0
- data/website/assets/chunks/kanban-definition-27J2QSJJ-HCC6KAYI.js +89 -0
- data/website/assets/chunks/katex-F4MQ6FB3.js +257 -0
- data/website/assets/chunks/mindmap-definition-FAOFIHXS-JMGSM3RE.js +96 -0
- data/website/assets/chunks/packet-7NZHBO7P-W3SJA3MY.js +1 -0
- data/website/assets/chunks/pegDiagram-VL7TDLO6-4JO3Y3Z3.js +1 -0
- data/website/assets/chunks/pie-RZYD4A2V-YOIQBTY7.js +1 -0
- data/website/assets/chunks/pieDiagram-7S7Q4E2Y-VFQ7SE46.js +39 -0
- data/website/assets/chunks/quadrantDiagram-CIZ2JOQS-JISDI2S6.js +7 -0
- data/website/assets/chunks/radar-I7S5WNFK-NMKP5AZO.js +1 -0
- data/website/assets/chunks/railroad-3IZDKUUU-7MOIV7CI.js +1 -0
- data/website/assets/chunks/railroad-abnf-AHOZXSZD-HXNH5SLO.js +1 -0
- data/website/assets/chunks/railroad-ebnf-EBAXGLYW-OWDJEWMK.js +1 -0
- data/website/assets/chunks/railroad-peg-LSFZ7HO6-ASSINGP5.js +1 -0
- data/website/assets/chunks/railroadDiagram-AXF67PYL-AFV5VP5F.js +1 -0
- data/website/assets/chunks/requirementDiagram-LRYGKXZP-RNRPEHHN.js +84 -0
- data/website/assets/chunks/sankeyDiagram-W5VNT64P-O54R2L3E.js +40 -0
- data/website/assets/chunks/sequenceDiagram-SI44F4Z6-42WISKJ7.js +162 -0
- data/website/assets/chunks/sizeCapture-X5ZJPWSS-LRN2Q37T.js +1 -0
- data/website/assets/chunks/stateDiagram-OKZ733FA-BWIBJXIR.js +1 -0
- data/website/assets/chunks/stateDiagram-v2-UEYNNEHI-L73LHL3L.js +1 -0
- data/website/assets/chunks/swimlanes-SLNWSIFB-ECOAE7LQ.js +1 -0
- data/website/assets/chunks/swimlanesDiagram-ULZ7WXOC-3CKKKFZZ.js +8 -0
- data/website/assets/chunks/timeline-definition-Z64GVDOM-HR2OL5G7.js +120 -0
- data/website/assets/chunks/treeView-QDETBFTQ-C6D5WFJA.js +1 -0
- data/website/assets/chunks/treemap-6X3UGDF4-JFCDMSCA.js +1 -0
- data/website/assets/chunks/vennDiagram-T6HMQDX7-62WAAPTF.js +34 -0
- data/website/assets/chunks/wardley-OPB4EBWU-RQIOII7I.js +1 -0
- data/website/assets/chunks/wardleyDiagram-T6FBY63Y-KUXO3NHV.js +78 -0
- data/website/assets/chunks/xychartDiagram-ELKLHX3M-I54W4HJ7.js +7 -0
- data/website/assets/color-scheme-bootstrap-4H4ZR4BW.js +1 -0
- data/website/assets/docs-3WBBQT6K.css +1 -0
- data/website/assets/docs-W3D5DWQF.js +1 -0
- data/website/assets/docs-navigation-75ALFYBA.js +1 -0
- data/website/assets/graph-QWL54LWD.js +1 -0
- data/website/assets/manifest.json +314 -0
- data/website/assets/math-7JTH4OWZ.js +21 -0
- data/website/assets/mermaid-RXC6URG4.js +10 -0
- data/website/assets/minimal-3NPTDWQX.js +1 -0
- data/website/assets/minimal-E2VATXXS.css +1 -0
- data/website/assets/previews-FMHOX7UX.js +1 -0
- data/website/assets/search-BH73JZDU.js +1 -0
- data/website/assets/search-worker-SM4IM4J7.js +1 -0
- data/website/exe/jekyll-obsidian +5 -0
- data/website/lib/jekyll_obsidian/adapter.rb +733 -0
- data/website/lib/jekyll_obsidian/built_in_themes.rb +855 -0
- data/website/lib/jekyll_obsidian/cli.rb +84 -0
- data/website/lib/jekyll_obsidian/content_policy.rb +194 -0
- data/website/lib/jekyll_obsidian/destination_registry.rb +39 -0
- data/website/lib/jekyll_obsidian/directory_indexes.rb +30 -0
- data/website/lib/jekyll_obsidian/external_media.rb +371 -0
- data/website/lib/jekyll_obsidian/front_matter.rb +453 -0
- data/website/lib/jekyll_obsidian/github_markdown.rb +664 -0
- data/website/lib/jekyll_obsidian/html_publication.rb +206 -0
- data/website/lib/jekyll_obsidian/initializer.rb +68 -0
- data/website/lib/jekyll_obsidian/localized_compiler.rb +1044 -0
- data/website/lib/jekyll_obsidian/media_policy.rb +41 -0
- data/website/lib/jekyll_obsidian/ofm_scanner.rb +493 -0
- data/website/lib/jekyll_obsidian/output_text.rb +13 -0
- data/website/lib/jekyll_obsidian/preview.rb +93 -0
- data/website/lib/jekyll_obsidian/published_markdown.rb +32 -0
- data/website/lib/jekyll_obsidian/raw_html_manifest.rb +66 -0
- data/website/lib/jekyll_obsidian/runtime.rb +197 -0
- data/website/lib/jekyll_obsidian/site_compilation.rb +147 -0
- data/website/lib/jekyll_obsidian/site_navigation.rb +517 -0
- data/website/lib/jekyll_obsidian/url_builder.rb +163 -0
- data/website/lib/jekyll_obsidian/value_objects.rb +198 -0
- data/website/lib/jekyll_obsidian/vault_compiler.rb +2771 -0
- data/website/lib/jekyll_obsidian/version.rb +6 -0
- data/website/lib/jekyll_obsidian/workspace_layout.rb +104 -0
- data/website/lib/jekyll_obsidian.rb +22 -0
- data/website/scripts/audit-site.rb +120 -0
- data/website/scripts/templates/pages.yml +55 -0
- data/website/scripts/verify-site-urls.rb +585 -0
- metadata +319 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<section class="relation-section" aria-labelledby="outline-title-{{ include.location }}">
|
|
2
|
+
{% assign ui = page.website.i18n.messages %}
|
|
3
|
+
<h2 class="relation-section__title" id="outline-title-{{ include.location }}">{{ ui.outline | default: 'On this page' | escape }}</h2>
|
|
4
|
+
<ol class="outline-list">
|
|
5
|
+
{% for item in page.website.outline %}
|
|
6
|
+
<li class="outline-level-{{ item.level }}"><a href="#{{ item.id | escape }}" data-outline-link>{{ item.label | escape }}</a></li>
|
|
7
|
+
{% endfor %}
|
|
8
|
+
</ol>
|
|
9
|
+
</section>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{% if page.website.markdown_url %}
|
|
2
|
+
{% assign ui = page.website.i18n.messages %}
|
|
3
|
+
<div
|
|
4
|
+
class="page-actions"
|
|
5
|
+
data-page-actions
|
|
6
|
+
data-markdown-url="{{ page.website.markdown_url | escape }}"
|
|
7
|
+
data-copy-success="{{ ui.copied | default: 'Copied' | escape }}"
|
|
8
|
+
data-copy-error="{{ ui.copy_failed | default: 'Copy failed. Open View as Markdown and copy the text.' | escape }}"
|
|
9
|
+
>
|
|
10
|
+
<div class="page-actions__split">
|
|
11
|
+
<button class="page-actions__primary" type="button" data-copy-page>
|
|
12
|
+
<svg class="page-actions__icon" viewBox="0 0 20 20" aria-hidden="true"><rect x="6" y="5" width="10" height="11" rx="2"></rect><path d="M4 13H3.5A1.5 1.5 0 0 1 2 11.5v-8A1.5 1.5 0 0 1 3.5 2h8A1.5 1.5 0 0 1 13 3.5V4"></path></svg>
|
|
13
|
+
<span class="page-actions__primary-label" data-copy-page-label>{{ ui.copy_page | default: 'Copy page' | escape }}</span>
|
|
14
|
+
</button>
|
|
15
|
+
<details class="page-actions__menu" data-page-actions-menu>
|
|
16
|
+
<summary aria-label="{{ ui.more_page_actions | default: 'More page actions' | escape }}" title="{{ ui.more_page_actions | default: 'More page actions' | escape }}">
|
|
17
|
+
<svg viewBox="0 0 20 20" aria-hidden="true"><path d="m6 8 4 4 4-4"></path></svg>
|
|
18
|
+
</summary>
|
|
19
|
+
<div class="page-actions__panel">
|
|
20
|
+
<button class="page-actions__item" type="button" data-copy-page>
|
|
21
|
+
<span class="page-actions__item-icon" aria-hidden="true"><svg viewBox="0 0 20 20"><rect x="6" y="5" width="10" height="11" rx="2"></rect><path d="M4 13H3.5A1.5 1.5 0 0 1 2 11.5v-8A1.5 1.5 0 0 1 3.5 2h8A1.5 1.5 0 0 1 13 3.5V4"></path></svg></span>
|
|
22
|
+
<span><strong data-copy-page-label>{{ ui.copy_page | default: 'Copy page' | escape }}</strong><small>{{ ui.copy_page_description | default: 'Copy page as Markdown for LLMs' | escape }}</small></span>
|
|
23
|
+
</button>
|
|
24
|
+
<a class="page-actions__item" href="{{ page.website.markdown_url | escape }}" target="_blank" rel="noopener">
|
|
25
|
+
<span class="page-actions__item-icon" aria-hidden="true"><svg viewBox="0 0 20 20"><path d="M3 4.5A1.5 1.5 0 0 1 4.5 3h11A1.5 1.5 0 0 1 17 4.5v11a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 3 15.5z"></path><path d="M5.5 7.5h2l1.5 5 1.5-5h2M13.5 12.5V7.5M12 9l1.5-1.5L15 9"></path></svg></span>
|
|
26
|
+
<span><strong>{{ ui.view_as_markdown | default: 'View as Markdown' | escape }} <span aria-hidden="true">↗</span><span class="visually-hidden"> {{ ui.opens_in_new_tab | default: 'opens in a new tab' | escape }}</span></strong><small>{{ ui.view_as_markdown_description | default: 'View this page as plain text' | escape }}</small></span>
|
|
27
|
+
</a>
|
|
28
|
+
<p class="page-actions__error" data-copy-page-error hidden></p>
|
|
29
|
+
</div>
|
|
30
|
+
</details>
|
|
31
|
+
</div>
|
|
32
|
+
<span class="visually-hidden" role="status" aria-live="polite" data-copy-page-status></span>
|
|
33
|
+
</div>
|
|
34
|
+
{% endif %}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{% assign projects = include.projects | default: page.website.theme_data.portfolio_projects %}
|
|
2
|
+
{% if projects.size > 0 %}
|
|
3
|
+
{% assign ui = page.website.i18n.messages %}
|
|
4
|
+
{% assign topic_summaries = page.website.theme_data.portfolio_topic_summaries %}
|
|
5
|
+
<section class="minimal-portfolio{% if include.index %} minimal-portfolio--index{% endif %}" aria-labelledby="portfolio-projects-heading"{% if topic_summaries.size > 0 %} data-filter-page{% endif %}>
|
|
6
|
+
{% if include.index %}
|
|
7
|
+
<h1 class="minimal-portfolio__heading" id="portfolio-projects-heading">{{ ui.projects | default: 'Projects' | escape }}</h1>
|
|
8
|
+
{% else %}
|
|
9
|
+
<h2 class="minimal-portfolio__heading" id="portfolio-projects-heading">{{ ui.projects | default: 'Projects' | escape }}</h2>
|
|
10
|
+
{% endif %}
|
|
11
|
+
{% include website/tag-filter.html summaries=topic_summaries total=page.website.theme_data.portfolio_topic_filter_count url=page.website.routes.portfolio %}
|
|
12
|
+
<ul class="minimal-portfolio__grid">
|
|
13
|
+
{% for project in projects %}
|
|
14
|
+
<li data-filter-item data-topic-anchors="{{ project.topic_anchors | join: ' ' | escape }}">
|
|
15
|
+
<article class="minimal-portfolio-card{% if project.image %} minimal-portfolio-card--with-image{% endif %}{% if project.repository_url %} minimal-portfolio-card--with-repository{% endif %}">
|
|
16
|
+
{% if project.image %}<span class="minimal-portfolio-card__media"><img src="{{ project.image | escape }}" alt="" loading="lazy" decoding="async"></span>{% endif %}
|
|
17
|
+
<div class="minimal-portfolio-card__body">
|
|
18
|
+
{% if include.index %}
|
|
19
|
+
<h2 class="minimal-portfolio-card__title"><a class="minimal-portfolio-card__main" href="{{ project.url | escape }}">{{ project.title | escape }}</a></h2>
|
|
20
|
+
{% else %}
|
|
21
|
+
<h3 class="minimal-portfolio-card__title"><a class="minimal-portfolio-card__main" href="{{ project.url | escape }}">{{ project.title | escape }}</a></h3>
|
|
22
|
+
{% endif %}
|
|
23
|
+
{% if project.summary %}<p class="minimal-portfolio-card__summary">{{ project.summary | escape }}</p>{% endif %}
|
|
24
|
+
{% include website/portfolio-topics.html topics=project.topics %}
|
|
25
|
+
</div>
|
|
26
|
+
{% if project.repository_url %}
|
|
27
|
+
{% assign repository_label_template = ui.open_project_on_github | default: 'Open {title} on GitHub' %}
|
|
28
|
+
{% assign repository_label = repository_label_template | replace: '{title}', project.title %}
|
|
29
|
+
<a class="minimal-portfolio-card__repository" href="{{ project.repository_url | escape }}" aria-label="{{ repository_label | escape }}" title="{{ repository_label | escape }}">{% include website/github-icon.html %}</a>
|
|
30
|
+
{% endif %}
|
|
31
|
+
</article>
|
|
32
|
+
</li>
|
|
33
|
+
{% endfor %}
|
|
34
|
+
</ul>
|
|
35
|
+
</section>
|
|
36
|
+
{% endif %}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
{% if include.topics.size > 0 %}
|
|
2
|
+
{% assign ui = page.website.i18n.messages %}
|
|
3
|
+
<ul class="minimal-portfolio-card__topics" aria-label="{{ ui.topics | default: 'Topics' | escape }}" lang="{{ page.website.i18n.locale | default: site.lang | default: 'en' | escape }}" dir="{{ page.website.i18n.dir | default: 'ltr' | escape }}">{% for topic in include.topics %}<li lang="{{ page.website.i18n.content_lang | default: page.website.i18n.locale | default: site.lang | default: 'en' | escape }}" dir="{{ page.website.i18n.content_dir | default: page.website.i18n.dir | default: 'ltr' | escape }}">{% if include.url and topic.anchor %}<a class="tag-chip" href="{{ include.url | escape }}?topic={{ topic.anchor | url_encode }}">{{ topic.name | escape }}</a>{% else %}<span class="tag-chip">{{ topic.name | escape }}</span>{% endif %}</li>{% endfor %}</ul>
|
|
4
|
+
{% endif %}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{% for post in include.posts %}
|
|
2
|
+
<article class="minimal-post-card{% if post.image or post.image_url %} minimal-post-card--with-image{% endif %}">
|
|
3
|
+
{% if post.image or post.image_url %}<div class="minimal-post-card__media"><img src="{{ post.image | default: post.image_url | escape }}" alt="" loading="lazy" decoding="async"></div>{% endif %}
|
|
4
|
+
<div class="minimal-post-card__body">
|
|
5
|
+
<h3><a href="{{ post.url | escape }}">{{ post.title | escape }}</a></h3>
|
|
6
|
+
{% if post.subtitle %}<p class="minimal-post-card__subtitle">{{ post.subtitle | escape }}</p>{% endif %}
|
|
7
|
+
{% if post.summary and post.summary != '' %}<p class="minimal-post-card__excerpt">{{ post.summary | escape }}</p>{% endif %}
|
|
8
|
+
{% if post.authors.size > 0 or post.published_at %}
|
|
9
|
+
<footer>
|
|
10
|
+
{% if post.authors.size > 0 %}<span>{{ ui.posted_by | default: 'Posted by' | escape }} {% for author in post.authors %}{% if author.url %}<a href="{{ author.url | escape }}">{{ author.name | escape }}</a>{% else %}{{ author.name | escape }}{% endif %}{% unless forloop.last %}, {% endunless %}{% endfor %}{% if post.published_at %} {{ ui.on | default: 'on' | escape }} {% endif %}</span>{% endif %}
|
|
11
|
+
{% if post.published_at %}<time datetime="{{ post.published_at | escape }}">{% unless post.authors.size > 0 %}{{ ui.published | default: 'Published' | escape }} {% endunless %}{{ post.published_at | date: "%Y-%m-%d" }}</time>{% endif %}
|
|
12
|
+
</footer>
|
|
13
|
+
{% endif %}
|
|
14
|
+
</div>
|
|
15
|
+
</article>
|
|
16
|
+
{% endfor %}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{% if page.website.related_articles and page.website.related_articles.size > 0 %}
|
|
2
|
+
{% assign ui = page.website.i18n.messages %}
|
|
3
|
+
<nav class="related-articles minimal-recent" aria-labelledby="related-articles-title">
|
|
4
|
+
<header class="minimal-section-heading"><h2 id="related-articles-title">{{ ui.related_articles | default: 'Related articles' | escape }}</h2></header>
|
|
5
|
+
<div class="minimal-recent__grid">{% include website/post-cards.html posts=page.website.related_articles %}</div>
|
|
6
|
+
</nav>
|
|
7
|
+
{% endif %}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{% assign ui = page.website.i18n.messages %}
|
|
2
|
+
{% if page.website.backlinks and page.website.backlinks.size > 0 %}<section class="relation-section" aria-labelledby="backlinks-title-{{ include.location }}">
|
|
3
|
+
<h2 class="relation-section__title" id="backlinks-title-{{ include.location }}">{{ ui.backlinks | default: 'Backlinks' | escape }}</h2>
|
|
4
|
+
<ul class="relation-list">{% for relation in page.website.backlinks %}<li><a href="{{ relation.url | escape }}">{{ relation.title | escape }}</a></li>{% endfor %}</ul>
|
|
5
|
+
</section>{% endif %}
|
|
6
|
+
{% if page.website.links and page.website.links.size > 0 %}<section class="relation-section" aria-labelledby="links-title-{{ include.location }}">
|
|
7
|
+
<details class="relation-disclosure">
|
|
8
|
+
<summary><h2 class="relation-section__title" id="links-title-{{ include.location }}">{{ ui.direct_links | default: 'Direct links' | escape }}</h2></summary>
|
|
9
|
+
<ul class="relation-list">{% for relation in page.website.links %}<li><a href="{{ relation.url | escape }}">{{ relation.title | escape }}</a></li>{% endfor %}</ul>
|
|
10
|
+
</details>
|
|
11
|
+
</section>{% endif %}
|
|
12
|
+
{% if page.website.tag_summaries and page.website.tag_summaries.size > 0 %}{% include website/context-tags.html location=include.location %}{% endif %}
|
|
13
|
+
{% if page.website.embedded_by and page.website.embedded_by.size > 0 %}<section class="relation-section" aria-labelledby="embedded-title-{{ include.location }}">
|
|
14
|
+
<h2 class="relation-section__title" id="embedded-title-{{ include.location }}">{{ ui.embedded_by | default: 'Embedded by' | escape }}</h2>
|
|
15
|
+
<ul class="relation-list">{% for relation in page.website.embedded_by %}<li><a href="{{ relation.url | escape }}">{{ relation.title | escape }}</a></li>{% endfor %}</ul>
|
|
16
|
+
</section>{% endif %}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{% if page.website.source_links and page.website.source_links.size > 0 %}
|
|
2
|
+
{% assign ui = page.website.i18n.messages %}
|
|
3
|
+
{% assign source_actions_label = ui.contribute | default: 'Contribute to this page' %}
|
|
4
|
+
{% unless page.website.source_links.edit %}
|
|
5
|
+
{% if page.website.source_links.imported %}
|
|
6
|
+
{% assign source_actions_label = ui.view_imported_markdown | default: 'View imported Markdown' %}
|
|
7
|
+
{% endif %}
|
|
8
|
+
{% endunless %}
|
|
9
|
+
<nav class="source-actions" aria-label="{{ source_actions_label | escape }}">
|
|
10
|
+
{% if page.website.source_links.edit %}
|
|
11
|
+
<a href="{{ page.website.source_links.edit | escape }}">
|
|
12
|
+
<svg class="source-actions__icon" viewBox="0 0 20 20" aria-hidden="true" focusable="false"><path d="m12.9 3.1 4 4L7 17H3v-4Z"></path><path d="m10.8 5.2 4 4"></path></svg>
|
|
13
|
+
<span>{{ ui.edit | default: 'Edit' | escape }}</span>
|
|
14
|
+
</a>
|
|
15
|
+
{% endif %}
|
|
16
|
+
{% if page.website.source_links.imported %}
|
|
17
|
+
<a href="{{ page.website.source_links.imported | escape }}">
|
|
18
|
+
<svg class="source-actions__icon" viewBox="0 0 20 20" aria-hidden="true" focusable="false"><path d="M5 2.8h6l4 4v10.4H5Z"></path><path d="M11 2.8v4h4M7.8 10h4.4M7.8 13h4.4"></path></svg>
|
|
19
|
+
<span>{{ ui.view_imported_markdown | default: 'View imported Markdown' | escape }}</span>
|
|
20
|
+
</a>
|
|
21
|
+
{% endif %}
|
|
22
|
+
{% if page.website.source_links.repository %}
|
|
23
|
+
{% assign repository_label_template = ui.open_project_on_github | default: 'Open {title} on GitHub' %}
|
|
24
|
+
{% assign repository_label = repository_label_template | replace: '{title}', page.title %}
|
|
25
|
+
<a class="source-actions__repository" href="{{ page.website.source_links.repository | escape }}" aria-label="{{ repository_label | escape }}" title="{{ repository_label | escape }}">{% include website/github-icon.html class='source-actions__github-icon' %}</a>
|
|
26
|
+
{% endif %}
|
|
27
|
+
</nav>
|
|
28
|
+
{% endif %}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{% assign ui = page.website.i18n.messages %}
|
|
2
|
+
{% case page.website.kind %}
|
|
3
|
+
{% when 'home' %}
|
|
4
|
+
{% assign recent_posts = page.website.theme_data.recent_posts %}
|
|
5
|
+
{% if recent_posts.size > 0 %}
|
|
6
|
+
{% assign blog_url = page.website.theme_data.view_all_url | default: page.website.routes.blog %}
|
|
7
|
+
{% unless blog_url %}{% assign blog_url = '/blog/' | relative_url %}{% endunless %}
|
|
8
|
+
<section class="minimal-recent" aria-labelledby="minimal-recent-title">
|
|
9
|
+
<header class="minimal-section-heading">
|
|
10
|
+
<h2 id="minimal-recent-title">{{ ui.recent_posts | default: 'Recent posts' | escape }}</h2>
|
|
11
|
+
</header>
|
|
12
|
+
<div class="minimal-recent__grid">
|
|
13
|
+
{% include website/post-cards.html posts=recent_posts %}
|
|
14
|
+
</div>
|
|
15
|
+
<div class="minimal-recent__footer">
|
|
16
|
+
<a class="minimal-recent__view-all" href="{{ blog_url | escape }}">{{ ui.view_all | default: 'View all' | escape }} <span aria-hidden="true">→</span></a>
|
|
17
|
+
</div>
|
|
18
|
+
</section>
|
|
19
|
+
{% endif %}
|
|
20
|
+
{% if page.website.theme_data.contacts.size > 0 %}<nav class="minimal-contacts" aria-label="{{ ui.contact | default: 'Contact' | escape }}">{% for contact in page.website.theme_data.contacts %}{% if contact.icon %}<a class="minimal-contact minimal-contact--icon" href="{{ contact.url | escape }}" rel="me" aria-label="{{ contact.label | escape }}" title="{{ contact.label | escape }}">{% include website/contact-icon.html icon=contact.icon %}</a>{% else %}<a class="minimal-contact minimal-contact--text" href="{{ contact.url | escape }}" rel="me">{{ contact.label | escape }}</a>{% endif %}{% endfor %}</nav>{% endif %}
|
|
21
|
+
{% when 'portfolio-index' %}
|
|
22
|
+
{% include website/portfolio-grid.html index=true %}
|
|
23
|
+
{% when 'blog-index' %}
|
|
24
|
+
<h1 class="visually-hidden">{{ page.title | default: ui.blog | default: 'Blog' | escape }}</h1>
|
|
25
|
+
{% include website/tag-filter.html summaries=page.website.theme_data.topic_summaries total=page.website.theme_data.topic_filter_count %}
|
|
26
|
+
{% when 'tags' %}
|
|
27
|
+
<h1>{{ ui.tags | default: 'Tags' | escape }}</h1>
|
|
28
|
+
{% for group in page.website.theme_data.tag_groups %}<section id="{{ group.anchor | escape }}"><h2>{{ group.name | escape }}</h2><ul>{% for note in group.notes %}<li><a href="{{ note.url | escape }}">{{ note.title | escape }}</a></li>{% endfor %}</ul></section>{% endfor %}
|
|
29
|
+
{% when '404' %}
|
|
30
|
+
<h1>{{ ui.page_not_found | default: 'Page not found' | escape }}</h1><p>{{ ui.page_not_found_description | default: 'The requested page is not in this published site.' | escape }}</p><p><a href="{{ page.website.theme_data.home_url | escape }}">{{ ui.return_home | default: 'Return home' | escape }}</a></p>
|
|
31
|
+
{% endcase %}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{% assign members = page.website.theme_data.tab_members %}
|
|
2
|
+
{% if members.size > 0 %}
|
|
3
|
+
<section class="tab-collection minimal-recent" aria-label="{{ page.title | escape }}">
|
|
4
|
+
<div class="minimal-recent__grid">
|
|
5
|
+
{% for member in members %}
|
|
6
|
+
<article class="minimal-post-card{% if member.image %} minimal-post-card--with-image{% endif %}">
|
|
7
|
+
{% if member.image %}<div class="minimal-post-card__media"><img src="{{ member.image | escape }}" alt="" loading="lazy" decoding="async"></div>{% endif %}
|
|
8
|
+
<div class="minimal-post-card__body">
|
|
9
|
+
<h2><a href="{{ member.url | escape }}">{{ member.title | escape }}</a></h2>
|
|
10
|
+
{% if member.subtitle %}<p class="minimal-post-card__subtitle">{{ member.subtitle | escape }}</p>{% endif %}
|
|
11
|
+
{% if member.summary and member.summary != '' %}<p class="minimal-post-card__excerpt">{{ member.summary | escape }}</p>{% endif %}
|
|
12
|
+
{% if member.topics.size > 0 %}
|
|
13
|
+
<ul class="tab-collection__topics" aria-label="{{ ui.topics | default: 'Topics' | escape }}">
|
|
14
|
+
{% for topic in member.topics %}<li>{% if topic.url %}<a class="tag-chip" href="{{ topic.url | escape }}">{{ topic.name | escape }}</a>{% else %}<span class="tag-chip">{{ topic.name | escape }}</span>{% endif %}</li>{% endfor %}
|
|
15
|
+
</ul>
|
|
16
|
+
{% endif %}
|
|
17
|
+
{% if member.authors.size > 0 or member.published_at %}
|
|
18
|
+
<footer>
|
|
19
|
+
{% if member.authors.size > 0 %}<span>{{ ui.posted_by | default: 'Posted by' | escape }} {% for author in member.authors %}{% if author.url %}<a href="{{ author.url | escape }}">{{ author.name | escape }}</a>{% else %}{{ author.name | escape }}{% endif %}{% unless forloop.last %}, {% endunless %}{% endfor %}{% if member.published_at %} {{ ui.on | default: 'on' | escape }} {% endif %}</span>{% endif %}
|
|
20
|
+
{% if member.published_at %}<time datetime="{{ member.published_at | escape }}">{% unless member.authors.size > 0 %}{{ ui.published | default: 'Published' | escape }} {% endunless %}{{ member.published_at | date: "%Y-%m-%d" }}</time>{% endif %}
|
|
21
|
+
</footer>
|
|
22
|
+
{% endif %}
|
|
23
|
+
</div>
|
|
24
|
+
</article>
|
|
25
|
+
{% endfor %}
|
|
26
|
+
</div>
|
|
27
|
+
</section>
|
|
28
|
+
{% endif %}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{% if include.summaries and include.summaries.size > 0 %}
|
|
2
|
+
{% assign ui = page.website.i18n.messages %}
|
|
3
|
+
{% assign filter_url = include.url %}
|
|
4
|
+
{% unless filter_url %}{% if page.website.theme == 'minimal' %}{% assign filter_url = page.website.routes.blog %}{% unless filter_url %}{% assign filter_url = '/blog/' | relative_url %}{% endunless %}{% else %}{% assign filter_url = page.website.routes.tags %}{% unless filter_url %}{% assign filter_url = '/tags/' | relative_url %}{% endunless %}{% endif %}{% endunless %}
|
|
5
|
+
<nav class="tag-filter" data-topic-filter-nav aria-label="{% if page.website.theme == 'minimal' %}{{ ui.filter_by_topic | default: 'Filter by topic' | escape }}{% else %}{{ ui.filter_by_tag | default: 'Filter by tag' | escape }}{% endif %}">
|
|
6
|
+
<ul class="tag-filter__list">
|
|
7
|
+
<li><a href="{{ filter_url | escape }}" data-topic-filter-option data-topic-anchor="" aria-current="page"><span class="context-tag__name">{{ ui.all | default: 'All' | escape }}</span><span class="context-tag__count">{{ include.total }}</span></a></li>
|
|
8
|
+
{% for topic in include.summaries %}<li><a href="{{ filter_url | escape }}?topic={{ topic.anchor | url_encode }}" data-topic-filter-option data-topic-anchor="{{ topic.anchor | escape }}"><span class="context-tag__name">{{ topic.name | escape }}</span><span class="context-tag__count">{{ topic.count }}</span></a></li>{% endfor %}
|
|
9
|
+
</ul>
|
|
10
|
+
</nav>
|
|
11
|
+
<p class="filter-empty" data-filter-empty hidden>{{ ui.no_matching_entries | default: 'No entries match these filters.' | escape }}</p>
|
|
12
|
+
{% endif %}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html class="no-js" lang="{{ page.website.i18n.locale | default: site.lang | default: 'en' | escape }}" dir="{{ page.website.i18n.dir | default: 'ltr' | escape }}">
|
|
3
|
+
<head>{% assign entry = site.data.website_assets.entries.docs %}{% include website/head.html entry=entry %}</head>
|
|
4
|
+
<body class="theme-docs">
|
|
5
|
+
{% assign ui = page.website.i18n.messages %}
|
|
6
|
+
<a class="skip-link" href="#main-content">{{ ui.skip_to_content | default: 'Skip to content' | escape }}</a>
|
|
7
|
+
{% include website/header.html theme='docs' %}
|
|
8
|
+
<div class="docs-shell">
|
|
9
|
+
<aside class="docs-sidebar"><nav class="docs-tree" aria-label="{{ ui.documentation | default: 'Documentation' | escape }}" data-docs-navigation>{% include website/docs-tree.html nodes=page.website.theme_data.docs_tree %}</nav></aside>
|
|
10
|
+
<main class="docs-main" id="main-content" data-docs-main>
|
|
11
|
+
<article class="docs-article{% if page.website.cssclasses %} {{ page.website.cssclasses | join: ' ' }}{% endif %}">{% if page.website.i18n.fallback %}<aside class="translation-fallback" role="status">{{ ui.translation_missing | default: 'This page is not translated yet. The default-language version is shown.' | escape }}</aside>{% endif %}{% unless page.website.has_h1 %}{% include website/page-actions.html %}{% endunless %}{% include website/note-header.html %}{% if page.website.has_h1 %}{% include website/page-actions.html %}{% endif %}<div class="note-content" lang="{{ page.website.i18n.content_lang | default: page.website.i18n.locale | default: site.lang | default: 'en' | escape }}" dir="{{ page.website.i18n.content_dir | default: page.website.i18n.dir | default: 'ltr' | escape }}" data-copy-code-label="{{ ui.copy_code | default: 'Copy code' | escape }}" data-copy-diagram-label="{{ ui.copy_diagram_source | default: 'Copy diagram source' | escape }}" data-expand-diagram-label="{{ ui.expand_diagram | default: 'Expand diagram' | escape }}" data-close-diagram-label="{{ ui.close_diagram | default: 'Close diagram' | escape }}" data-image-label="{{ ui.image | default: 'Image' | escape }}" data-expand-image-label="{{ ui.expand_image | default: 'Expand image' | escape }}" data-close-image-label="{{ ui.close_image | default: 'Close image' | escape }}" data-copy-formula-label="{{ ui.copy_formula_source | default: 'Copy formula source' | escape }}" data-copy-code-success="{{ ui.copied | default: 'Copied' | escape }}" data-copy-code-error="{{ ui.copy_code_failed | default: 'Copy failed' | escape }}">{% if page.website.kind == 'note' %}{{ content }}{% else %}{% include website/system-page.html %}{% endif %}</div>{% if page.website.kind == 'note' and page.website.theme_data.tab_id %}{% include website/tab-collection.html %}{% endif %}{% include website/source-actions.html %}{% include website/related-articles.html %}{% include website/comments.html %}</article>
|
|
12
|
+
{% include website/docs-navigation.html %}
|
|
13
|
+
</main>
|
|
14
|
+
{% if page.website.kind == 'note' and page.website.has_context %}<aside class="docs-context" data-page-context data-context-panel data-dialog-movable="context" aria-label="{{ ui.page_context | default: 'Page context' | escape }}">{% include website/context.html location='rail' %}</aside>{% endif %}
|
|
15
|
+
</div>
|
|
16
|
+
{% include website/footer.html %}
|
|
17
|
+
<nav class="mobile-toolbar" aria-label="{{ ui.mobile_actions | default: 'Mobile actions' | escape }}"><button type="button" data-dialog-open="browse">{{ ui.browse | default: 'Browse' | escape }}</button>{% if page.website.features.search %}<button type="button" data-search-open>{{ ui.search | default: 'Search' | escape }}</button>{% endif %}{% if page.website.kind == 'note' and page.website.has_context %}<button type="button" data-dialog-open="context">{% if page.website.features.outline and page.website.features.relations == false and page.website.local_graph == nil %}{{ ui.on_this_page | default: 'On this page' | escape }}{% else %}{{ ui.context | default: 'Context' | escape }}{% endif %}</button>{% endif %}</nav>
|
|
18
|
+
<div data-page-dialogs>{% include website/dialogs.html theme='docs' %}</div>
|
|
19
|
+
</body>
|
|
20
|
+
</html>
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html class="no-js" lang="{{ page.website.i18n.locale | default: site.lang | default: 'en' | escape }}" dir="{{ page.website.i18n.dir | default: 'ltr' | escape }}" data-auto-hide-root-scrollbar>
|
|
3
|
+
<head>{% assign entry = site.data.website_assets.entries.minimal %}{% include website/head.html entry=entry %}</head>
|
|
4
|
+
<body class="theme-minimal">
|
|
5
|
+
{% assign ui = page.website.i18n.messages %}
|
|
6
|
+
{% assign is_docs_page = false %}
|
|
7
|
+
{% if page.website.kind == 'note' and page.website.content_type == 'doc' and page.website.theme_data.docs_tree.size > 0 %}{% assign is_docs_page = true %}{% endif %}
|
|
8
|
+
{% assign is_authored_home = false %}
|
|
9
|
+
{% if page.website.kind == 'home' and page.website.id %}{% assign is_authored_home = true %}{% endif %}
|
|
10
|
+
{% assign has_home_modules = false %}
|
|
11
|
+
{% if is_authored_home %}
|
|
12
|
+
{% if page.website.theme_data.recent_posts.size > 0 or page.website.theme_data.contacts.size > 0 %}{% assign has_home_modules = true %}{% endif %}
|
|
13
|
+
{% endif %}
|
|
14
|
+
{% assign has_mobile_context = false %}
|
|
15
|
+
{% if page.website.kind == 'home' %}
|
|
16
|
+
{% if page.website.theme_data.topic_summaries.size > 0 or page.website.has_context %}{% assign has_mobile_context = true %}{% endif %}
|
|
17
|
+
{% elsif page.website.kind == 'blog-index' and page.website.theme_data.timeline.size > 0 %}
|
|
18
|
+
{% assign has_mobile_context = true %}
|
|
19
|
+
{% elsif page.website.kind == 'note' and page.website.has_context %}
|
|
20
|
+
{% assign has_mobile_context = true %}
|
|
21
|
+
{% endif %}
|
|
22
|
+
|
|
23
|
+
<a class="skip-link" href="#main-content">{{ ui.skip_to_content | default: 'Skip to content' | escape }}</a>
|
|
24
|
+
{% include website/header.html theme='minimal' %}
|
|
25
|
+
|
|
26
|
+
<main class="minimal-shell{% unless page.website.kind == 'note' %} minimal-shell--system{% endunless %}{% if is_authored_home %} minimal-shell--authored-home{% endif %}{% if is_docs_page %} minimal-shell--docs{% endif %}{% if page.website.kind == 'blog-index' %} minimal-shell--blog{% endif %}" id="main-content"{% if page.website.kind == 'blog-index' %} data-filter-page{% endif %}>
|
|
27
|
+
{% if is_docs_page %}
|
|
28
|
+
<aside class="minimal-docs-sidebar">
|
|
29
|
+
<nav class="docs-tree" aria-label="{{ ui.documentation | default: 'Documentation' | escape }}" data-docs-navigation>
|
|
30
|
+
{% include website/docs-tree.html nodes=page.website.theme_data.docs_tree %}
|
|
31
|
+
</nav>
|
|
32
|
+
</aside>
|
|
33
|
+
{% endif %}
|
|
34
|
+
|
|
35
|
+
<div class="minimal-reading-column" data-docs-main>
|
|
36
|
+
<article class="minimal-entry{% if page.website.cssclasses %} {{ page.website.cssclasses | join: ' ' }}{% endif %}">
|
|
37
|
+
{% if page.website.i18n.fallback %}<aside class="translation-fallback" role="status">{{ ui.translation_missing | default: 'This page is not translated yet. The default-language version is shown.' | escape }}</aside>{% endif %}
|
|
38
|
+
{% unless page.website.has_h1 %}{% include website/page-actions.html %}{% endunless %}
|
|
39
|
+
{% include website/note-header.html %}
|
|
40
|
+
{% if page.website.has_h1 %}{% include website/page-actions.html %}{% endif %}
|
|
41
|
+
<div class="note-content" lang="{{ page.website.i18n.content_lang | default: page.website.i18n.locale | default: site.lang | default: 'en' | escape }}" dir="{{ page.website.i18n.content_dir | default: page.website.i18n.dir | default: 'ltr' | escape }}" data-copy-code-label="{{ ui.copy_code | default: 'Copy code' | escape }}" data-copy-diagram-label="{{ ui.copy_diagram_source | default: 'Copy diagram source' | escape }}" data-expand-diagram-label="{{ ui.expand_diagram | default: 'Expand diagram' | escape }}" data-close-diagram-label="{{ ui.close_diagram | default: 'Close diagram' | escape }}" data-image-label="{{ ui.image | default: 'Image' | escape }}" data-expand-image-label="{{ ui.expand_image | default: 'Expand image' | escape }}" data-close-image-label="{{ ui.close_image | default: 'Close image' | escape }}" data-copy-formula-label="{{ ui.copy_formula_source | default: 'Copy formula source' | escape }}" data-copy-code-success="{{ ui.copied | default: 'Copied' | escape }}" data-copy-code-error="{{ ui.copy_code_failed | default: 'Copy failed' | escape }}">
|
|
42
|
+
{% if page.website.kind == 'note' or page.website.kind == 'home' %}{{ content }}{% endif %}
|
|
43
|
+
{% unless page.website.kind == 'note' %}
|
|
44
|
+
{% unless is_authored_home %}{% include website/system-page.html %}{% endunless %}
|
|
45
|
+
{% endunless %}
|
|
46
|
+
</div>
|
|
47
|
+
{% if page.website.kind == 'note' and page.website.theme_data.tab_id %}{% include website/tab-collection.html %}{% endif %}
|
|
48
|
+
{% if page.website.kind == 'note' and page.website.theme_data.portfolio_projects.size > 0 %}{% include website/portfolio-grid.html %}{% endif %}
|
|
49
|
+
{% if page.website.kind == 'note' or is_authored_home %}{% include website/source-actions.html %}{% endif %}
|
|
50
|
+
{% if page.website.kind == 'note' or is_authored_home %}{% include website/related-articles.html %}{% endif %}
|
|
51
|
+
{% if page.website.kind == 'note' %}{% include website/comments.html %}{% endif %}
|
|
52
|
+
</article>
|
|
53
|
+
|
|
54
|
+
{% if has_home_modules %}
|
|
55
|
+
<div class="minimal-home-modules">{% include website/system-page.html %}</div>
|
|
56
|
+
{% endif %}
|
|
57
|
+
|
|
58
|
+
{% if page.website.kind == 'blog-index' and page.website.theme_data.archive_groups %}
|
|
59
|
+
<div class="archive-ledger" data-filter-list>
|
|
60
|
+
{% for group in page.website.theme_data.archive_groups %}
|
|
61
|
+
<section data-filter-group>
|
|
62
|
+
<h2>{{ group.label | default: group.year | escape }}</h2>
|
|
63
|
+
{% include website/blog-ledger.html posts=group.posts compact=true filterable=true %}
|
|
64
|
+
</section>
|
|
65
|
+
{% endfor %}
|
|
66
|
+
</div>
|
|
67
|
+
{% endif %}
|
|
68
|
+
|
|
69
|
+
{% if is_docs_page %}{% include website/docs-navigation.html %}{% else %}{% include website/blog-navigation.html %}{% endif %}
|
|
70
|
+
</div>
|
|
71
|
+
|
|
72
|
+
{% if page.website.kind == 'home' and has_mobile_context %}
|
|
73
|
+
<aside class="minimal-context minimal-home-context" data-page-context data-context-panel data-dialog-movable="context" aria-label="{% if page.website.has_context %}{{ ui.page_context | default: 'Page context' | escape }}{% else %}{{ ui.topics | default: 'Topics' | escape }}{% endif %}">
|
|
74
|
+
{% if page.website.theme_data.topic_summaries.size > 0 %}{% include website/context-tags.html location='rail' summaries=page.website.theme_data.topic_summaries %}{% endif %}
|
|
75
|
+
{% if page.website.has_context %}{% include website/context.html location='rail' %}{% endif %}
|
|
76
|
+
</aside>
|
|
77
|
+
{% elsif page.website.kind == 'blog-index' and page.website.theme_data.timeline.size > 0 %}
|
|
78
|
+
<aside class="minimal-context archive-context" data-page-context data-dialog-movable="context" data-auto-hide-scrollbar aria-label="{{ ui.chronology | default: 'Chronology' | escape }}">{% include website/archive-timeline.html timeline=page.website.theme_data.timeline %}</aside>
|
|
79
|
+
{% elsif page.website.kind == 'note' and page.website.has_context %}
|
|
80
|
+
<aside class="minimal-context" data-page-context data-context-panel data-dialog-movable="context" aria-label="{{ ui.page_context | default: 'Page context' | escape }}">{% include website/context.html location='rail' %}</aside>
|
|
81
|
+
{% endif %}
|
|
82
|
+
|
|
83
|
+
</main>
|
|
84
|
+
|
|
85
|
+
{% include website/footer.html %}
|
|
86
|
+
<nav class="mobile-toolbar" aria-label="{{ ui.mobile_actions | default: 'Mobile actions' | escape }}">
|
|
87
|
+
<button type="button" data-dialog-open="browse">{{ ui.browse | default: 'Browse' | escape }}</button>
|
|
88
|
+
{% if page.website.features.search %}<button type="button" data-search-open>{{ ui.search | default: 'Search' | escape }}</button>{% endif %}
|
|
89
|
+
{% if has_mobile_context %}<button type="button" data-dialog-open="context">{% if page.website.kind == 'blog-index' %}{{ ui.chronology | default: 'Chronology' | escape }}{% elsif page.website.kind == 'home' and page.website.has_context %}{{ ui.context | default: 'Context' | escape }}{% elsif page.website.kind == 'home' %}{{ ui.topics | default: 'Topics' | escape }}{% elsif page.website.features.outline and page.website.features.relations == false and page.website.local_graph == nil %}{{ ui.on_this_page | default: 'On this page' | escape }}{% else %}{{ ui.context | default: 'Context' | escape }}{% endif %}</button>{% endif %}
|
|
90
|
+
</nav>
|
|
91
|
+
<div data-page-dialogs>{% include website/dialogs.html theme='minimal' %}</div>
|
|
92
|
+
</body>
|
|
93
|
+
</html>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="{{ page.website.i18n.locale | default: site.lang | default: 'en' | escape }}" dir="{{ page.website.i18n.dir | default: 'ltr' | escape }}">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<meta name="color-scheme" content="light dark">
|
|
7
|
+
<meta http-equiv="Content-Security-Policy" data-page-csp content="default-src 'self'; base-uri 'self'; form-action 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' https:; media-src 'self'; object-src 'self'; font-src 'self'; connect-src 'self'; frame-src 'self'">
|
|
8
|
+
<meta name="robots" content="noindex">
|
|
9
|
+
<meta http-equiv="refresh" content="0; url={{ page.website.redirect_url | escape }}">
|
|
10
|
+
<link rel="canonical" href="{{ page.website.canonical_url | escape }}">
|
|
11
|
+
<meta property="og:url" content="{{ page.website.absolute_url | escape }}">
|
|
12
|
+
<title>{{ page.title | escape }} · {{ site.title | escape }}</title>
|
|
13
|
+
</head>
|
|
14
|
+
<body>
|
|
15
|
+
<main><p><a href="{{ page.website.redirect_url | escape }}">{{ page.title | escape }}</a></p></main>
|
|
16
|
+
</body>
|
|
17
|
+
</html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a,b as u,c as f}from"./chunk-B3K7RH5O.js";import{a as m}from"./chunk-NCOVM3YF.js";import{b as p}from"./chunk-MII4VZEB.js";import"./chunk-HEMELP7J.js";import"./chunk-AIX6IH4O.js";import"./chunk-HZ5I5NJO.js";import"./chunk-ETOVTYWF.js";import"./chunk-SEGIW3MP.js";import"./chunk-Y2XVFW7T.js";import"./chunk-25REBZ7M.js";import{b as l}from"./chunk-UTWOJE2A.js";import"./chunk-6VQ47JJS.js";import"./chunk-OE3NOVIH.js";import"./chunk-LOMHZYS2.js";import"./chunk-OAGTSILX.js";import"./chunk-DN52R6U7.js";import"./chunk-RWFFDL53.js";import"./chunk-A43YELH5.js";import"./chunk-VYZZPKGK.js";import"./chunk-VOCDYA3H.js";import"./chunk-7CSIRG7W.js";import{b as s}from"./chunk-ERWOH47R.js";import{a as t}from"./chunk-EIBFAW37.js";import"./chunk-LGUG3SQB.js";import"./chunk-6DHFEWGX.js";var v=l().RailroadAbnf.parser.LangiumParser,i=t(e=>{let r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=t(e=>{let r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=t(e=>{if(e.includes("*")){let[n,o]=e.split("*"),c=n?parseInt(n,10):0,d=o?parseInt(o,10):1/0;return{min:c,max:d}}let r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=t(e=>{let r=A(e.primary);if(!e.repeat)return r;let{min:n,max:o}=b(e.repeat);return n===0&&o===1?{type:"optional",element:r}:{type:"repetition",element:r,min:n,max:o}},"transformElement"),A=t(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=t(e=>({name:e.name,definition:i(e.definition)}),"transformRule"),h=t(e=>{m(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:t(e=>{a.clear(),s.debug("[ABNF Parser] Starting Langium parse");let r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new p(r);let n=r.value;s.debug("[ABNF Parser] Parsed rules:",n.rules.length),h(n),s.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},I={parser:R,db:a,renderer:f,styles:u};export{I as diagram};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,b as r}from"./chunk-A43YELH5.js";import"./chunk-VYZZPKGK.js";import"./chunk-6DHFEWGX.js";export{e as ArchitectureModule,r as createArchitectureServices};
|