@heroiclands/package-build 23.12.8 → 24.0.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.
- package/CHANGELOG.md +84 -0
- package/README.md +3 -2
- package/assets/preview/gitea.ini +12 -7
- package/assets/styles/content-base.css +293 -24
- package/bin/content-commands.mjs +370 -213
- package/bin/package-build-preview.mjs +2 -2
- package/bin/package-build.mjs +3 -2
- package/ci/check-banners.mjs +7 -7
- package/config.mjs +21 -6
- package/content-config.mjs +199 -80
- package/docs/api.md +110 -89
- package/docs/authoring/links-and-markup.md +469 -97
- package/docs/commands.md +259 -78
- package/docs/configuration.md +211 -103
- package/docs/content-format.md +4 -4
- package/docs/diagnostics.md +44 -2
- package/docs/getting-started.md +1 -1
- package/docs/guides/icons.md +1 -1
- package/docs/guides/module-project.md +5 -8
- package/docs/guides/release-and-deploy.md +2 -2
- package/docs/guides/site.md +112 -23
- package/docs/guides/system-project.md +1 -1
- package/docs/guides/writing-in-invented-scripts.md +1247 -0
- package/docs/index.md +1 -0
- package/docs/project-setup.md +28 -30
- package/docs/reference/format-details.md +677 -319
- package/docs/reference/note-types.md +47 -10
- package/docs/reference/theme-pages.md +178 -108
- package/docs/source-preview.md +16 -2
- package/engine/anchors.mjs +2 -2
- package/engine/asset-shipping.mjs +22 -10
- package/engine/base-compiler.mjs +62 -104
- package/engine/changelog-lint.mjs +1 -1
- package/engine/code-fences.mjs +3 -3
- package/engine/content-address.mjs +1 -1
- package/engine/content-alerts.mjs +8 -4
- package/engine/content-blocks.mjs +29 -14
- package/engine/content-embeds.mjs +1 -1
- package/engine/content-expand.mjs +376 -0
- package/engine/content-figures.mjs +18 -11
- package/engine/content-format.yaml +8 -0
- package/engine/content-glyphs.mjs +213 -0
- package/engine/content-images.mjs +6 -7
- package/engine/content-index.mjs +1 -1
- package/engine/content-links.mjs +3 -3
- package/engine/content-lint.mjs +1 -1
- package/engine/content-render.mjs +453 -0
- package/engine/content-scripts.mjs +376 -43
- package/engine/content-spans.mjs +6 -3
- package/engine/content-styles.mjs +91 -0
- package/engine/content-symbols.mjs +186 -0
- package/engine/content-verse.mjs +738 -0
- package/engine/core-report.mjs +169 -0
- package/engine/core-vocabulary.mjs +208 -0
- package/engine/dictionary-html.mjs +119 -0
- package/engine/dictionary-rows.mjs +15 -4
- package/engine/field-reference.mjs +5 -5
- package/engine/first-use.mjs +17 -27
- package/engine/frontmatter-lint.mjs +1 -1
- package/engine/heading-attributes.mjs +89 -0
- package/engine/helpers.mjs +61 -101
- package/engine/homepage.mjs +17 -29
- package/engine/html-minify.mjs +70 -0
- package/engine/index.mjs +8 -5
- package/engine/key-case-collisions.mjs +136 -0
- package/engine/language-data.mjs +203 -6
- package/engine/language-rows.mjs +8 -2
- package/engine/language-terms.mjs +186 -16
- package/engine/language-words.mjs +12 -0
- package/engine/logographic.mjs +255 -0
- package/engine/map-lexicon.mjs +262 -47
- package/engine/map-places.mjs +5 -4
- package/engine/markdown-expressions.mjs +0 -2
- package/engine/markdownlint-run.mjs +9 -3
- package/engine/markup-validation.mjs +21 -0
- package/engine/metre-declaration.mjs +134 -0
- package/engine/names.mjs +36 -9
- package/engine/note-matter.mjs +66 -0
- package/engine/note-vocabulary.mjs +187 -3
- package/engine/pdf-build.mjs +69 -133
- package/engine/pdf-render.mjs +205 -58
- package/engine/post-fields.mjs +157 -0
- package/engine/preview-index.mjs +130 -0
- package/engine/preview-source.mjs +450 -0
- package/engine/project-init.mjs +5 -12
- package/engine/prose-config.mjs +3 -3
- package/engine/read-stdin.mjs +29 -0
- package/engine/run-rows.mjs +2 -2
- package/engine/run-words.mjs +6 -112
- package/engine/script-emphasis-terms.mjs +38 -0
- package/engine/script-emphasis.mjs +295 -0
- package/engine/script-font-delivery.mjs +4 -4
- package/engine/site-build.mjs +260 -315
- package/engine/site-config.mjs +26 -238
- package/engine/site-files.mjs +175 -0
- package/engine/site-index.mjs +9 -4
- package/engine/site-preview.mjs +52 -525
- package/engine/site-render.mjs +593 -0
- package/engine/site-root.mjs +22 -13
- package/engine/site-search.mjs +161 -0
- package/engine/site-serve.mjs +273 -0
- package/engine/site-theme-banner.mjs +154 -0
- package/engine/site-theme-urls.mjs +125 -0
- package/engine/site-theme.mjs +926 -0
- package/engine/sql-tables.mjs +20 -3
- package/engine/text-maps.mjs +57 -10
- package/engine/typographer.mjs +248 -0
- package/engine/verse-metre.mjs +357 -0
- package/engine/wikilink-syntax.mjs +29 -47
- package/engine/wikilinks.mjs +758 -279
- package/engine/word-forms.mjs +364 -0
- package/engine/word-rows.mjs +12 -2
- package/engine/word-terms.mjs +38 -4
- package/manifest.mjs +3 -4
- package/package.json +11 -8
- package/{hugo-theme → site-theme}/data/banners.yaml +6 -10
- package/site-theme/layouts/base.hbs +31 -0
- package/site-theme/layouts/blog-list.hbs +30 -0
- package/site-theme/layouts/blog-post.hbs +40 -0
- package/site-theme/layouts/home.hbs +35 -0
- package/site-theme/layouts/list.hbs +20 -0
- package/site-theme/layouts/not-found.hbs +31 -0
- package/site-theme/layouts/page.hbs +7 -0
- package/site-theme/partials/copy-buttons.hbs +37 -0
- package/site-theme/partials/draft-notice.hbs +5 -0
- package/site-theme/partials/exturl.hbs +2 -0
- package/{hugo-theme/layouts/partials/footer.html → site-theme/partials/footer.hbs} +10 -7
- package/site-theme/partials/header.hbs +44 -0
- package/site-theme/partials/hero-banner.hbs +11 -0
- package/site-theme/partials/infobox-entry.hbs +2 -0
- package/site-theme/partials/infobox-section.hbs +31 -0
- package/site-theme/partials/infobox-value.hbs +2 -0
- package/site-theme/partials/infobox.hbs +18 -0
- package/site-theme/partials/list-members.hbs +9 -0
- package/site-theme/partials/nav-links.hbs +5 -0
- package/site-theme/partials/page-body.hbs +48 -0
- package/site-theme/partials/page-list.hbs +14 -0
- package/site-theme/partials/related.hbs +24 -0
- package/site-theme/partials/search-meta.hbs +6 -0
- package/site-theme/partials/search-names.hbs +2 -0
- package/site-theme/partials/search.hbs +52 -0
- package/site-theme/partials/tags.hbs +4 -0
- package/site-theme/partials/toc.hbs +7 -0
- package/{hugo-theme → site-theme}/static/css/style.css +106 -14
- package/stage.mjs +1 -2
- package/types/config.d.mts +8 -4
- package/types/content-config.d.mts +15 -15
- package/types/engine/asset-shipping.d.mts +5 -2
- package/types/engine/base-compiler.d.mts +20 -2
- package/types/engine/code-fences.d.mts +3 -3
- package/types/engine/content-address.d.mts +1 -1
- package/types/engine/content-alerts.d.mts +8 -2
- package/types/engine/content-blocks.d.mts +11 -4
- package/types/engine/content-expand.d.mts +288 -0
- package/types/engine/content-figures.d.mts +11 -3
- package/types/engine/content-glyphs.d.mts +85 -0
- package/types/engine/content-images.d.mts +6 -7
- package/types/engine/content-links.d.mts +1 -1
- package/types/engine/content-render.d.mts +199 -0
- package/types/engine/content-scripts.d.mts +70 -4
- package/types/engine/content-spans.d.mts +1 -1
- package/types/engine/content-styles.d.mts +33 -0
- package/types/engine/content-symbols.d.mts +35 -0
- package/types/engine/content-verse.d.mts +240 -0
- package/types/engine/core-report.d.mts +45 -0
- package/types/engine/core-vocabulary.d.mts +53 -0
- package/types/engine/dictionary-html.d.mts +8 -0
- package/types/engine/dictionary-rows.d.mts +10 -0
- package/types/engine/field-reference.d.mts +2 -2
- package/types/engine/heading-attributes.d.mts +20 -0
- package/types/engine/helpers.d.mts +3 -10
- package/types/engine/homepage.d.mts +11 -24
- package/types/engine/html-minify.d.mts +9 -0
- package/types/engine/index.d.mts +2 -1
- package/types/engine/key-case-collisions.d.mts +28 -0
- package/types/engine/language-data.d.mts +0 -2
- package/types/engine/language-terms.d.mts +24 -2
- package/types/engine/logographic.d.mts +45 -0
- package/types/engine/map-lexicon.d.mts +66 -13
- package/types/engine/map-places.d.mts +8 -0
- package/types/engine/markdown-expressions.d.mts +0 -2
- package/types/engine/metre-declaration.d.mts +39 -0
- package/types/engine/names.d.mts +34 -3
- package/types/engine/note-matter.d.mts +48 -0
- package/types/engine/pdf-render.d.mts +6 -2
- package/types/engine/post-fields.d.mts +44 -0
- package/types/engine/preview-index.d.mts +72 -0
- package/types/engine/preview-source.d.mts +51 -0
- package/types/engine/read-stdin.d.mts +11 -0
- package/types/engine/run-rows.d.mts +2 -2
- package/types/engine/run-words.d.mts +0 -15
- package/types/engine/script-emphasis-terms.d.mts +21 -0
- package/types/engine/script-emphasis.d.mts +84 -0
- package/types/engine/script-font-delivery.d.mts +4 -4
- package/types/engine/site-build.d.mts +71 -113
- package/types/engine/site-config.d.mts +14 -134
- package/types/engine/site-files.d.mts +73 -0
- package/types/engine/site-index.d.mts +11 -3
- package/types/engine/site-preview.d.mts +15 -19
- package/types/engine/site-render.d.mts +171 -0
- package/types/engine/site-root.d.mts +12 -4
- package/types/engine/site-search.d.mts +54 -0
- package/types/engine/site-serve.d.mts +44 -0
- package/types/engine/site-theme-banner.d.mts +51 -0
- package/types/engine/site-theme-urls.d.mts +60 -0
- package/types/engine/site-theme.d.mts +127 -0
- package/types/engine/sql-tables.d.mts +4 -1
- package/types/engine/text-maps.d.mts +17 -3
- package/types/engine/typographer.d.mts +11 -0
- package/types/engine/verse-metre.d.mts +131 -0
- package/types/engine/wikilink-syntax.d.mts +30 -48
- package/types/engine/wikilinks.d.mts +330 -14
- package/types/engine/word-forms.d.mts +83 -0
- package/types/manifest.d.mts +3 -4
- package/types/stage.d.mts +1 -2
- package/types/vendor/markdownlint.d.mts +8 -0
- package/vendor/markdownlint.mjs +20388 -0
- package/engine/content-poetry.mjs +0 -240
- package/engine/web-wikilinks.mjs +0 -594
- package/hugo-theme/layouts/404.html +0 -85
- package/hugo-theme/layouts/_default/baseof.html +0 -67
- package/hugo-theme/layouts/_default/list.html +0 -139
- package/hugo-theme/layouts/_default/single.html +0 -4
- package/hugo-theme/layouts/blog/list.html +0 -54
- package/hugo-theme/layouts/blog-post/single.html +0 -36
- package/hugo-theme/layouts/index.html +0 -75
- package/hugo-theme/layouts/partials/banner-url.html +0 -141
- package/hugo-theme/layouts/partials/cdn-url.html +0 -36
- package/hugo-theme/layouts/partials/dictionary-lists.html +0 -58
- package/hugo-theme/layouts/partials/draft-notice.html +0 -41
- package/hugo-theme/layouts/partials/draft-state.html +0 -26
- package/hugo-theme/layouts/partials/header.html +0 -35
- package/hugo-theme/layouts/partials/hero-banner.html +0 -85
- package/hugo-theme/layouts/partials/infobox/entry.html +0 -18
- package/hugo-theme/layouts/partials/infobox/items.html +0 -26
- package/hugo-theme/layouts/partials/infobox/section.html +0 -56
- package/hugo-theme/layouts/partials/infobox/value.html +0 -43
- package/hugo-theme/layouts/partials/infobox.html +0 -57
- package/hugo-theme/layouts/partials/page-body.html +0 -152
- package/hugo-theme/layouts/partials/related.html +0 -138
- package/hugo-theme/layouts/partials/search.html +0 -84
- package/hugo-theme/layouts/partials/site-url.html +0 -32
- package/hugo-theme/layouts/partials/tags.html +0 -30
- package/hugo-theme/layouts/partials/toc.html +0 -28
- package/hugo-theme/layouts/partials/warn-missing-banner.html +0 -3
- package/hugo-theme/layouts/shortcodes/cartouche.html +0 -64
- package/hugo-theme/layouts/shortcodes/exturl.html +0 -12
- package/hugo-theme/layouts/shortcodes/glyph.html +0 -43
- package/hugo-theme/layouts/shortcodes/pagelist.html +0 -63
- package/hugo-theme/theme.toml +0 -11
- package/types/engine/content-poetry.d.mts +0 -58
- package/types/engine/web-wikilinks.d.mts +0 -107
- /package/{hugo-theme → site-theme}/data/banner-kinds.yaml +0 -0
- /package/{hugo-theme → site-theme}/static/css/sohl-icons.css +0 -0
- /package/{hugo-theme → site-theme}/static/fonts/game-icons-kb.woff2 +0 -0
- /package/{hugo-theme → site-theme}/static/img/banners/takheperu-hieroglyphs.svg +0 -0
- /package/{hugo-theme → site-theme}/static/img/cartouches/takheperu.svg +0 -0
- /package/{hugo-theme → site-theme}/static/js/inline-spoilers.js +0 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{{!-- SPDX-License-Identifier: GPL-3.0-or-later --}}
|
|
2
|
+
{{#if hero}}
|
|
3
|
+
{{> hero-banner hero}}
|
|
4
|
+
{{/if}}
|
|
5
|
+
{{#if article}}
|
|
6
|
+
<article class="single">
|
|
7
|
+
{{> search-meta article.search}}
|
|
8
|
+
<div class="single-content">
|
|
9
|
+
{{#if article.meta}}
|
|
10
|
+
<div class="single-meta blog-meta">
|
|
11
|
+
{{#if article.meta.series}}
|
|
12
|
+
<div class="blog-series">
|
|
13
|
+
<span class="blog-series-label">Series</span>
|
|
14
|
+
<span class="blog-series-name">{{article.meta.series}}</span>
|
|
15
|
+
</div>
|
|
16
|
+
{{/if}}
|
|
17
|
+
{{#if article.meta.date}}
|
|
18
|
+
<time class="single-date" datetime="{{article.meta.date.iso}}">{{article.meta.date.text}}</time>
|
|
19
|
+
{{/if}}
|
|
20
|
+
{{#if article.meta.tags}}
|
|
21
|
+
{{> tags article.meta.tags}}
|
|
22
|
+
{{/if}}
|
|
23
|
+
</div>
|
|
24
|
+
{{/if}}
|
|
25
|
+
|
|
26
|
+
{{#if article.content}}
|
|
27
|
+
<div class="single-body" data-pagefind-body>
|
|
28
|
+
{{{article.content}}}
|
|
29
|
+
</div>
|
|
30
|
+
{{/if}}
|
|
31
|
+
|
|
32
|
+
{{#if article.related}}
|
|
33
|
+
{{> related article.related}}
|
|
34
|
+
{{/if}}
|
|
35
|
+
{{#if article.nav}}
|
|
36
|
+
{{> nav-links article.nav}}
|
|
37
|
+
{{/if}}
|
|
38
|
+
</div>
|
|
39
|
+
</article>
|
|
40
|
+
{{/if}}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{{!-- SPDX-License-Identifier: GPL-3.0-or-later --}}
|
|
2
|
+
{{#if isHomepage}}
|
|
3
|
+
{{#if hero}}
|
|
4
|
+
{{> hero-banner hero}}
|
|
5
|
+
{{/if}}
|
|
6
|
+
{{#if article}}
|
|
7
|
+
{{> page-body article}}
|
|
8
|
+
{{/if}}
|
|
9
|
+
{{else if grid}}
|
|
10
|
+
{{#if grid.hero}}
|
|
11
|
+
{{> hero-banner grid.hero}}
|
|
12
|
+
{{/if}}
|
|
13
|
+
{{#if grid.hasItems}}
|
|
14
|
+
<section class="home-sections">
|
|
15
|
+
<div class="home-featured">
|
|
16
|
+
{{#each grid.headings}}
|
|
17
|
+
<h2 class="home-section-title{{#if class}} home-section-title--{{class}}{{/if}}">{{title}}</h2>
|
|
18
|
+
{{/each}}
|
|
19
|
+
{{#each grid.cards}}
|
|
20
|
+
|
|
21
|
+
<div class="home-card{{#if key}} home-card--{{key}}{{/if}}">
|
|
22
|
+
{{#if imageUrl}}
|
|
23
|
+
<a href="{{url}}">
|
|
24
|
+
<img src="{{imageUrl}}" alt="{{alt}}" class="card-image">
|
|
25
|
+
</a>
|
|
26
|
+
{{/if}}
|
|
27
|
+
<h2><a href="{{url}}">{{title}}</a></h2>
|
|
28
|
+
<p>{{text}}</p>
|
|
29
|
+
<a href="{{url}}" class="card-button">More Info →</a>
|
|
30
|
+
</div>
|
|
31
|
+
{{/each}}
|
|
32
|
+
</div>
|
|
33
|
+
</section>
|
|
34
|
+
{{/if}}
|
|
35
|
+
{{/if}}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{{!-- SPDX-License-Identifier: GPL-3.0-or-later --}}
|
|
2
|
+
{{#if hero}}
|
|
3
|
+
{{> hero-banner hero}}
|
|
4
|
+
{{/if}}
|
|
5
|
+
{{#if hasBody}}
|
|
6
|
+
<article class="single">
|
|
7
|
+
<div class="single-content">
|
|
8
|
+
<div class="single-body" data-pagefind-body>
|
|
9
|
+
{{{body}}}
|
|
10
|
+
</div>
|
|
11
|
+
{{> list-members}}
|
|
12
|
+
</div>
|
|
13
|
+
</article>
|
|
14
|
+
{{else if hasMembers}}
|
|
15
|
+
<article class="single">
|
|
16
|
+
<div class="single-content">
|
|
17
|
+
{{> list-members}}
|
|
18
|
+
</div>
|
|
19
|
+
</article>
|
|
20
|
+
{{/if}}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{{!-- SPDX-License-Identifier: GPL-3.0-or-later --}}
|
|
2
|
+
<section class="hero hero-with-image" style="background-image: url('{{cssUrl heroUrl}}');">
|
|
3
|
+
<div class="hero-inner" data-pagefind-ignore>
|
|
4
|
+
<h1>Page not found</h1>
|
|
5
|
+
<p class="hero-tagline">{{tagline}} <code id="missing-path">the address you followed</code>.</p>
|
|
6
|
+
</div>
|
|
7
|
+
</section>
|
|
8
|
+
|
|
9
|
+
<article class="single">
|
|
10
|
+
<div class="single-content">
|
|
11
|
+
<div class="single-body">
|
|
12
|
+
<p>
|
|
13
|
+
The page may have been moved to another part of the
|
|
14
|
+
{{noun}}, or withdrawn along with the concept it described. Links
|
|
15
|
+
from older discussions, issues, and search results can outlive the
|
|
16
|
+
pages they point at.
|
|
17
|
+
</p>
|
|
18
|
+
{{#if links}}
|
|
19
|
+
<p>Start again from one of these:</p>
|
|
20
|
+
{{> page-list links}}
|
|
21
|
+
{{/if}}
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
</article>
|
|
25
|
+
|
|
26
|
+
<script>
|
|
27
|
+
(function () {
|
|
28
|
+
var el = document.getElementById("missing-path");
|
|
29
|
+
if (el) el.textContent = window.location.pathname;
|
|
30
|
+
})();
|
|
31
|
+
</script>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{{!-- SPDX-License-Identifier: GPL-3.0-or-later --}}
|
|
2
|
+
<script>
|
|
3
|
+
// Auto-enhance <span data-copy="URL"> elements with a clipboard copy button
|
|
4
|
+
document.querySelectorAll('[data-copy]').forEach(function(el) {
|
|
5
|
+
var url = el.getAttribute('data-copy');
|
|
6
|
+
el.classList.add('exturl');
|
|
7
|
+
|
|
8
|
+
// Wrap existing text in a code element if not already
|
|
9
|
+
if (!el.querySelector('.exturl-text')) {
|
|
10
|
+
var code = document.createElement('code');
|
|
11
|
+
code.className = 'exturl-text';
|
|
12
|
+
code.textContent = el.textContent;
|
|
13
|
+
el.textContent = '';
|
|
14
|
+
el.appendChild(code);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
var btn = document.createElement('button');
|
|
18
|
+
btn.className = 'exturl-copy';
|
|
19
|
+
btn.title = 'Copy URL to clipboard';
|
|
20
|
+
btn.setAttribute('aria-label', 'Copy URL to clipboard');
|
|
21
|
+
btn.innerHTML =
|
|
22
|
+
'<svg class="exturl-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">' +
|
|
23
|
+
'<rect x="9" y="9" width="13" height="13" rx="2" ry="2"/>' +
|
|
24
|
+
'<path d="M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"/>' +
|
|
25
|
+
'</svg>' +
|
|
26
|
+
'<svg class="exturl-check" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">' +
|
|
27
|
+
'<polyline points="20 6 9 17 4 12"/>' +
|
|
28
|
+
'</svg>';
|
|
29
|
+
btn.addEventListener('click', function() {
|
|
30
|
+
navigator.clipboard.writeText(url).then(function() {
|
|
31
|
+
btn.classList.add('copied');
|
|
32
|
+
setTimeout(function() { btn.classList.remove('copied'); }, 1500);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
el.appendChild(btn);
|
|
36
|
+
});
|
|
37
|
+
</script>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
{{!-- SPDX-License-Identifier: GPL-3.0-or-later --}}
|
|
2
|
+
<aside class="draft-notice">
|
|
3
|
+
<i class="fa-solid fa-circle-exclamation draft-notice-icon" aria-hidden="true"></i>
|
|
4
|
+
<p class="draft-notice-text"><strong class="draft-notice-label">Draft.</strong> <em>{{notice}}</em></p>
|
|
5
|
+
</aside>
|
|
@@ -1,31 +1,34 @@
|
|
|
1
|
+
{{!-- SPDX-License-Identifier: GPL-3.0-or-later --}}
|
|
1
2
|
<footer class="site-footer" data-pagefind-ignore>
|
|
2
3
|
<div class="footer-inner">
|
|
3
4
|
<p class="footer-text">
|
|
4
|
-
© 2020–{{
|
|
5
|
-
<a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>; all other content is © Tom Rodriguez, all rights reserved.{{
|
|
6
|
-
<a href="{{
|
|
5
|
+
© 2020–{{year}} Tom Rodriguez. Content under The World of Thalorna and Song of Heroic Lands is licensed under
|
|
6
|
+
<a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>; all other content is © Tom Rodriguez, all rights reserved.{{#if brand.licenseUrl}} See
|
|
7
|
+
<a href="{{brand.licenseUrl}}">License</a>.{{/if}}
|
|
7
8
|
</p>
|
|
8
9
|
<div class="footer-links">
|
|
9
10
|
<a href="https://creativecommons.org/licenses/by-sa/4.0/">
|
|
10
11
|
<img src="https://licensebuttons.net/l/by-sa/4.0/88x31.png" alt="CC BY-SA 4.0" class="cc-badge">
|
|
11
12
|
</a>
|
|
12
|
-
{{
|
|
13
|
-
<a href="{{
|
|
13
|
+
{{#if brand.discordUrl}}
|
|
14
|
+
<a href="{{brand.discordUrl}}">
|
|
14
15
|
<svg width="24" height="19" viewBox="0 0 71 55" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
|
15
16
|
<path d="M60.1 4.9A58.5 58.5 0 0045.4.2a.2.2 0 00-.2.1 40.8 40.8 0 00-1.8 3.7 54 54 0 00-16.2 0A39 39 0 0025.4.3a.2.2 0 00-.2-.1A58.4 58.4 0 0010.5 5a.2.2 0 00-.1 0A60 60 0 00.3 45.3a.2.2 0 000 .2 58.7 58.7 0 0017.7 9 .2.2 0 00.3-.1 42 42 0 003.6-5.9.2.2 0 00-.1-.3 38.6 38.6 0 01-5.5-2.6.2.2 0 01 0-.4c.4-.3.7-.6 1.1-.8a.2.2 0 01.2 0 41.9 41.9 0 0035.6 0 .2.2 0 01.2 0l1 .9a.2.2 0 010 .3 36.2 36.2 0 01-5.5 2.6.2.2 0 00-.1.4 47.1 47.1 0 003.6 5.8.2.2 0 00.2.1A58.5 58.5 0 0070.3 45.5a.2.2 0 000-.2A59.7 59.7 0 0060.2 5a.2.2 0 00-.1 0zM23.7 37.3c-3.5 0-6.4-3.2-6.4-7.1s2.8-7.1 6.4-7.1 6.5 3.2 6.4 7.1c0 3.9-2.8 7.1-6.4 7.1zm23.7 0c-3.5 0-6.4-3.2-6.4-7.1s2.8-7.1 6.4-7.1 6.5 3.2 6.4 7.1c0 3.9-2.8 7.1-6.4 7.1z"/>
|
|
16
17
|
</svg>
|
|
17
18
|
Discord
|
|
18
19
|
</a>
|
|
19
|
-
{{
|
|
20
|
+
{{/if}}
|
|
20
21
|
</div>
|
|
21
22
|
</div>
|
|
22
23
|
</footer>
|
|
23
24
|
|
|
25
|
+
{{#if hasMenu}}
|
|
24
26
|
<script>
|
|
25
27
|
document.querySelector('.nav-toggle')?.addEventListener('click', function() {
|
|
26
28
|
document.querySelector('.site-nav').classList.toggle('open');
|
|
27
29
|
this.classList.toggle('open');
|
|
28
30
|
});
|
|
29
31
|
</script>
|
|
32
|
+
{{/if}}
|
|
30
33
|
|
|
31
|
-
<script src="{{
|
|
34
|
+
<script src="{{urls.spoilers}}" defer></script>
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{{!-- SPDX-License-Identifier: GPL-3.0-or-later --}}
|
|
2
|
+
<header class="site-header" data-pagefind-ignore>
|
|
3
|
+
<div class="header-inner">
|
|
4
|
+
<a href="{{homeUrl}}" class="site-title">
|
|
5
|
+
{{#if brand.logoUrl}}
|
|
6
|
+
<img src="{{brand.logoUrl}}" alt="Heroic Lands" class="site-logo">
|
|
7
|
+
{{/if}}
|
|
8
|
+
<span class="title-main">Heroic Lands</span>
|
|
9
|
+
</a>
|
|
10
|
+
{{#if hasActions}}
|
|
11
|
+
<div class="header-actions">
|
|
12
|
+
{{#if hasMenu}}
|
|
13
|
+
<nav class="site-nav">
|
|
14
|
+
{{#each menu}}
|
|
15
|
+
{{#if hasChildren}}
|
|
16
|
+
<div class="nav-dropdown">
|
|
17
|
+
<a href="{{url}}" class="nav-link{{#if active}} active{{/if}}">
|
|
18
|
+
{{name}}
|
|
19
|
+
<svg class="dropdown-arrow" width="10" height="6" viewBox="0 0 10 6" fill="currentColor"><path d="M1 1l4 4 4-4"/></svg>
|
|
20
|
+
</a>
|
|
21
|
+
<div class="dropdown-menu">
|
|
22
|
+
{{#each children}}
|
|
23
|
+
<a href="{{url}}" class="dropdown-item">{{name}}</a>
|
|
24
|
+
{{/each}}
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
{{else}}
|
|
28
|
+
<a href="{{url}}" class="nav-link{{#if active}} active{{/if}}">{{name}}</a>
|
|
29
|
+
{{/if}}
|
|
30
|
+
{{/each}}
|
|
31
|
+
</nav>
|
|
32
|
+
{{/if}}
|
|
33
|
+
{{#if search}}
|
|
34
|
+
{{> search}}
|
|
35
|
+
{{/if}}
|
|
36
|
+
{{#if hasMenu}}
|
|
37
|
+
<button class="nav-toggle" aria-label="Toggle navigation">
|
|
38
|
+
<span></span><span></span><span></span>
|
|
39
|
+
</button>
|
|
40
|
+
{{/if}}
|
|
41
|
+
</div>
|
|
42
|
+
{{/if}}
|
|
43
|
+
</div>
|
|
44
|
+
</header>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{{!-- SPDX-License-Identifier: GPL-3.0-or-later --}}
|
|
2
|
+
<section class="hero hero-with-image"{{#if bannerUrl}} style="background-image: url('{{cssUrl bannerUrl}}');"{{/if}}>
|
|
3
|
+
<div class="hero-inner" data-pagefind-ignore>
|
|
4
|
+
{{#if title}}
|
|
5
|
+
<h1>{{title}}</h1>
|
|
6
|
+
{{/if}}
|
|
7
|
+
{{#if tagline}}
|
|
8
|
+
<p class="hero-tagline">{{tagline}}</p>
|
|
9
|
+
{{/if}}
|
|
10
|
+
</div>
|
|
11
|
+
</section>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{{!-- SPDX-License-Identifier: GPL-3.0-or-later --}}
|
|
2
|
+
{{#if rows}}
|
|
3
|
+
<dl class="info-profile-grid">
|
|
4
|
+
{{#each rows}}
|
|
5
|
+
<dt>{{label}}</dt>
|
|
6
|
+
<dd>{{> infobox-value}}</dd>
|
|
7
|
+
{{/each}}
|
|
8
|
+
</dl>
|
|
9
|
+
{{else if grid}}
|
|
10
|
+
<div class="info-attrs-grid">
|
|
11
|
+
{{#each cells}}
|
|
12
|
+
<div class="info-attr">
|
|
13
|
+
<span class="attr-label">{{label}}</span>
|
|
14
|
+
<span class="attr-value">{{value}}</span>
|
|
15
|
+
</div>
|
|
16
|
+
{{/each}}
|
|
17
|
+
</div>
|
|
18
|
+
{{else if runin}}
|
|
19
|
+
{{#each groups}}
|
|
20
|
+
<p class="info-skill-line">
|
|
21
|
+
{{#if label}}<span class="skill-cat">{{label}}:</span>{{/if}}
|
|
22
|
+
<span class="skill-entries">{{#each entries}}{{#unless @first}}, {{/unless}}{{> infobox-entry entry=this class="skill-entry"}}{{/each}}</span>
|
|
23
|
+
</p>
|
|
24
|
+
{{/each}}
|
|
25
|
+
{{else if list}}
|
|
26
|
+
<ul class="info-mystical-list">
|
|
27
|
+
{{#each entries}}
|
|
28
|
+
<li class="info-mystical-item">{{> infobox-entry entry=this class="mystical-name"}}</li>
|
|
29
|
+
{{/each}}
|
|
30
|
+
</ul>
|
|
31
|
+
{{/if}}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{{!-- SPDX-License-Identifier: GPL-3.0-or-later --}}
|
|
2
|
+
{{#each boxes}}
|
|
3
|
+
<details class="info-sidebar info-box{{#if id}} info-box-{{id}}{{/if}}" open data-pagefind-ignore>
|
|
4
|
+
<summary class="info-sidebar-title"><h2>{{title}}</h2></summary>
|
|
5
|
+
{{#if statement}}
|
|
6
|
+
<p class="info-statement">{{statement}}</p>
|
|
7
|
+
{{else}}
|
|
8
|
+
{{#each sections}}
|
|
9
|
+
<section class="info-section{{#if id}} info-section-{{id}}{{/if}}">
|
|
10
|
+
{{#if label}}
|
|
11
|
+
<h3 class="info-section-title">{{label}}</h3>
|
|
12
|
+
{{/if}}
|
|
13
|
+
{{> infobox-section}}
|
|
14
|
+
</section>
|
|
15
|
+
{{/each}}
|
|
16
|
+
{{/if}}
|
|
17
|
+
</details>
|
|
18
|
+
{{/each}}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
{{!-- SPDX-License-Identifier: GPL-3.0-or-later --}}
|
|
2
|
+
<nav class="single-nav" data-pagefind-ignore>
|
|
3
|
+
{{#if prev}}<a href="{{prev.url}}" class="nav-prev">← {{prev.title}}</a>{{/if}}
|
|
4
|
+
{{#if next}}<a href="{{next.url}}" class="nav-next">{{next.title}} →</a>{{/if}}
|
|
5
|
+
</nav>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{{!-- SPDX-License-Identifier: GPL-3.0-or-later --}}
|
|
2
|
+
<article class="{{articleClass}}"{{#unless hasBody}} data-pagefind-body{{/unless}}>
|
|
3
|
+
{{#if isDraft}}
|
|
4
|
+
{{> draft-notice}}
|
|
5
|
+
{{/if}}
|
|
6
|
+
{{> search-meta search}}
|
|
7
|
+
{{#unless hasBody}}{{> search-names search}}{{/unless}}
|
|
8
|
+
{{#if hasSidebar}}
|
|
9
|
+
<aside class="info-rail">
|
|
10
|
+
{{> infobox}}
|
|
11
|
+
{{#if tocBeside}}
|
|
12
|
+
{{> toc}}
|
|
13
|
+
{{/if}}
|
|
14
|
+
</aside>
|
|
15
|
+
{{/if}}
|
|
16
|
+
{{#if hasMain}}
|
|
17
|
+
<div class="single-content">
|
|
18
|
+
{{#if meta}}
|
|
19
|
+
<div class="single-meta">
|
|
20
|
+
{{#if meta.date}}
|
|
21
|
+
<time class="single-date" datetime="{{meta.date.iso}}">{{meta.date.text}}</time>
|
|
22
|
+
{{/if}}
|
|
23
|
+
{{#if meta.subtype}}<span class="single-subtype">{{meta.subtype}}</span>{{/if}}
|
|
24
|
+
{{#if meta.tags}}
|
|
25
|
+
{{> tags meta.tags}}
|
|
26
|
+
{{/if}}
|
|
27
|
+
</div>
|
|
28
|
+
{{/if}}
|
|
29
|
+
|
|
30
|
+
{{#if hasBody}}
|
|
31
|
+
<div class="single-body" data-pagefind-body>
|
|
32
|
+
{{> search-names search}}
|
|
33
|
+
{{{content}}}
|
|
34
|
+
</div>
|
|
35
|
+
{{/if}}
|
|
36
|
+
|
|
37
|
+
{{#if related}}
|
|
38
|
+
{{> related related}}
|
|
39
|
+
{{/if}}
|
|
40
|
+
{{#if nav}}
|
|
41
|
+
{{> nav-links nav}}
|
|
42
|
+
{{/if}}
|
|
43
|
+
</div>
|
|
44
|
+
{{/if}}
|
|
45
|
+
{{#if tocBelow}}
|
|
46
|
+
{{> toc}}
|
|
47
|
+
{{/if}}
|
|
48
|
+
</article>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{{!-- SPDX-License-Identifier: GPL-3.0-or-later --}}
|
|
2
|
+
<ul class="page-list">
|
|
3
|
+
{{#each items}}
|
|
4
|
+
<li class="page-list-item">
|
|
5
|
+
<a class="page-list-title" href="{{url}}">{{title}}</a>
|
|
6
|
+
{{#if count}}
|
|
7
|
+
<span class="page-list-count">{{count}}</span>
|
|
8
|
+
{{/if}}
|
|
9
|
+
{{#if text}}
|
|
10
|
+
<span class="page-list-desc">{{text}}</span>
|
|
11
|
+
{{/if}}
|
|
12
|
+
</li>
|
|
13
|
+
{{/each}}
|
|
14
|
+
</ul>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{{!-- SPDX-License-Identifier: GPL-3.0-or-later --}}
|
|
2
|
+
<section class="related" aria-labelledby="related-heading" data-pagefind-ignore>
|
|
3
|
+
<h2 id="related-heading" class="related-heading">Related</h2>
|
|
4
|
+
{{#if seeAlso}}
|
|
5
|
+
<div class="related-group">
|
|
6
|
+
<h3 class="related-group-label">See also</h3>
|
|
7
|
+
<ul class="related-group-grid">
|
|
8
|
+
{{#each seeAlso}}
|
|
9
|
+
<li><a href="{{url}}">{{title}}</a>{{#if gloss}} — {{gloss}}{{/if}}</li>
|
|
10
|
+
{{/each}}
|
|
11
|
+
</ul>
|
|
12
|
+
</div>
|
|
13
|
+
{{/if}}
|
|
14
|
+
{{#each groups}}
|
|
15
|
+
<div class="related-group">
|
|
16
|
+
<h3 class="related-group-label">{{label}}</h3>
|
|
17
|
+
<ul class="related-group-grid">
|
|
18
|
+
{{#each refs}}
|
|
19
|
+
<li><a href="{{url}}">{{title}}</a></li>
|
|
20
|
+
{{/each}}
|
|
21
|
+
</ul>
|
|
22
|
+
</div>
|
|
23
|
+
{{/each}}
|
|
24
|
+
</section>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{{!-- SPDX-License-Identifier: GPL-3.0-or-later --}}
|
|
2
|
+
{{#if title}}<span data-pagefind-meta="title" hidden>{{title}}</span>{{/if}}
|
|
3
|
+
{{#each filters}}{{#each values}}<span data-pagefind-filter="{{../name}}" hidden>{{this}}</span>{{/each}}{{/each}}
|
|
4
|
+
{{#if aliases}}<span data-pagefind-meta="aliases" hidden>{{aliases}}</span>{{/if}}
|
|
5
|
+
{{#if image}}<span data-pagefind-meta="image" hidden>{{image}}</span>{{/if}}
|
|
6
|
+
{{#if date}}<span data-pagefind-sort="date" hidden>{{date}}</span>{{/if}}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{{!-- SPDX-License-Identifier: GPL-3.0-or-later --}}
|
|
2
|
+
<div class="site-search" data-pagefind-ignore>
|
|
3
|
+
<button
|
|
4
|
+
type="button"
|
|
5
|
+
class="search-toggle"
|
|
6
|
+
aria-label="Search"
|
|
7
|
+
aria-expanded="false"
|
|
8
|
+
aria-controls="site-search-panel"
|
|
9
|
+
><i class="fa-solid fa-magnifying-glass" aria-hidden="true"></i></button>
|
|
10
|
+
<div id="site-search-panel" class="search-panel" hidden>
|
|
11
|
+
<div class="search-panel-inner" id="search"></div>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
<link rel="stylesheet" href="{{urls.pagefindCss}}">
|
|
15
|
+
<script src="{{urls.pagefindJs}}" defer></script>
|
|
16
|
+
<script>
|
|
17
|
+
(function () {
|
|
18
|
+
var toggle = document.querySelector(".search-toggle");
|
|
19
|
+
var panel = document.getElementById("site-search-panel");
|
|
20
|
+
if (!toggle || !panel) return;
|
|
21
|
+
var ui = null;
|
|
22
|
+
|
|
23
|
+
function open() {
|
|
24
|
+
panel.hidden = false;
|
|
25
|
+
toggle.setAttribute("aria-expanded", "true");
|
|
26
|
+
if (!ui && typeof PagefindUI !== "undefined") {
|
|
27
|
+
ui = new PagefindUI({{{json searchOptions}}});
|
|
28
|
+
}
|
|
29
|
+
var input = panel.querySelector("input");
|
|
30
|
+
if (input) input.focus();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function close() {
|
|
34
|
+
panel.hidden = true;
|
|
35
|
+
toggle.setAttribute("aria-expanded", "false");
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
toggle.addEventListener("click", function () {
|
|
39
|
+
if (panel.hidden) { open(); } else { close(); }
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
document.addEventListener("keydown", function (e) {
|
|
43
|
+
if (e.key === "Escape" && !panel.hidden) close();
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
document.addEventListener("click", function (e) {
|
|
47
|
+
if (panel.hidden) return;
|
|
48
|
+
if (panel.contains(e.target) || toggle.contains(e.target)) return;
|
|
49
|
+
close();
|
|
50
|
+
});
|
|
51
|
+
})();
|
|
52
|
+
</script>
|