@refrakt-md/runes 0.32.0 → 0.34.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/dist/aggregate-resolve.d.ts.map +1 -1
- package/dist/aggregate-resolve.js +18 -4
- package/dist/aggregate-resolve.js.map +1 -1
- package/dist/attributes.d.ts +15 -0
- package/dist/attributes.d.ts.map +1 -1
- package/dist/attributes.js +22 -7
- package/dist/attributes.js.map +1 -1
- package/dist/collection-helpers.d.ts.map +1 -1
- package/dist/collection-helpers.js +1 -1
- package/dist/collection-helpers.js.map +1 -1
- package/dist/collection-resolve.d.ts.map +1 -1
- package/dist/collection-resolve.js +31 -8
- package/dist/collection-resolve.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +214 -77
- package/dist/config.js.map +1 -1
- package/dist/data-adapters.d.ts.map +1 -1
- package/dist/data-adapters.js +28 -11
- package/dist/data-adapters.js.map +1 -1
- package/dist/data-emit.d.ts +1 -0
- package/dist/data-emit.d.ts.map +1 -1
- package/dist/data-emit.js +40 -0
- package/dist/data-emit.js.map +1 -1
- package/dist/data-pipeline.d.ts +10 -4
- package/dist/data-pipeline.d.ts.map +1 -1
- package/dist/data-pipeline.js +331 -32
- package/dist/data-pipeline.js.map +1 -1
- package/dist/data-projection.d.ts +21 -0
- package/dist/data-projection.d.ts.map +1 -1
- package/dist/data-projection.js +41 -3
- package/dist/data-projection.js.map +1 -1
- package/dist/data-resolve.d.ts.map +1 -1
- package/dist/data-resolve.js +5 -2
- package/dist/data-resolve.js.map +1 -1
- package/dist/documents/page.d.ts.map +1 -1
- package/dist/documents/page.js.map +1 -1
- package/dist/drawer-pipeline.d.ts.map +1 -1
- package/dist/drawer-pipeline.js +3 -2
- package/dist/drawer-pipeline.js.map +1 -1
- package/dist/expand-pipeline.d.ts.map +1 -1
- package/dist/expand-pipeline.js +3 -3
- package/dist/expand-pipeline.js.map +1 -1
- package/dist/fence-escape.d.ts.map +1 -1
- package/dist/fence-escape.js +1 -3
- package/dist/fence-escape.js.map +1 -1
- package/dist/field-match.d.ts.map +1 -1
- package/dist/field-match.js.map +1 -1
- package/dist/file-ref-resolve.js +6 -4
- package/dist/file-ref-resolve.js.map +1 -1
- package/dist/fixtures.js +2 -2
- package/dist/fixtures.js.map +1 -1
- package/dist/functions.d.ts.map +1 -1
- package/dist/functions.js +16 -3
- package/dist/functions.js.map +1 -1
- package/dist/include-pipeline.d.ts +52 -0
- package/dist/include-pipeline.d.ts.map +1 -0
- package/dist/include-pipeline.js +206 -0
- package/dist/include-pipeline.js.map +1 -0
- package/dist/index.d.ts +94 -37
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +298 -59
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/layouts/grid.d.ts +1 -1
- package/dist/layouts/grid.d.ts.map +1 -1
- package/dist/layouts/grid.js +4 -6
- package/dist/layouts/grid.js.map +1 -1
- package/dist/lib/component.d.ts +20 -0
- package/dist/lib/component.d.ts.map +1 -1
- package/dist/lib/component.js +42 -7
- package/dist/lib/component.js.map +1 -1
- package/dist/lib/icon-resolve.d.ts.map +1 -1
- package/dist/lib/icon-resolve.js.map +1 -1
- package/dist/lib/image-schemes.js +2 -2
- package/dist/lib/image-schemes.js.map +1 -1
- package/dist/lib/index.d.ts +2 -2
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +252 -51
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/node.d.ts.map +1 -1
- package/dist/lib/node.js +3 -2
- package/dist/lib/node.js.map +1 -1
- package/dist/lib/placeholder.d.ts.map +1 -1
- package/dist/lib/placeholder.js +6 -9
- package/dist/lib/placeholder.js.map +1 -1
- package/dist/lib/read-file.d.ts.map +1 -1
- package/dist/lib/read-file.js.map +1 -1
- package/dist/lib/renderable.d.ts.map +1 -1
- package/dist/lib/renderable.js +5 -5
- package/dist/lib/renderable.js.map +1 -1
- package/dist/lib/resolver.d.ts.map +1 -1
- package/dist/lib/resolver.js +26 -35
- package/dist/lib/resolver.js.map +1 -1
- package/dist/lib/svg.d.ts.map +1 -1
- package/dist/lib/svg.js.map +1 -1
- package/dist/nodes.d.ts.map +1 -1
- package/dist/nodes.js +24 -22
- package/dist/nodes.js.map +1 -1
- package/dist/outline-scope.js +1 -3
- package/dist/outline-scope.js.map +1 -1
- package/dist/plugins.d.ts.map +1 -1
- package/dist/plugins.js +13 -10
- package/dist/plugins.js.map +1 -1
- package/dist/reference.d.ts +27 -2
- package/dist/reference.d.ts.map +1 -1
- package/dist/reference.js +58 -25
- package/dist/reference.js.map +1 -1
- package/dist/relationships-resolve.d.ts.map +1 -1
- package/dist/relationships-resolve.js +31 -7
- package/dist/relationships-resolve.js.map +1 -1
- package/dist/rune.d.ts.map +1 -1
- package/dist/rune.js.map +1 -1
- package/dist/sandbox-sources.js +6 -6
- package/dist/sandbox-sources.js.map +1 -1
- package/dist/seo.d.ts.map +1 -1
- package/dist/seo.js +4 -4
- package/dist/seo.js.map +1 -1
- package/dist/snippet-pipeline.d.ts.map +1 -1
- package/dist/snippet-pipeline.js +1 -1
- package/dist/snippet-pipeline.js.map +1 -1
- package/dist/tags/accordion.d.ts.map +1 -1
- package/dist/tags/accordion.js +43 -11
- package/dist/tags/accordion.js.map +1 -1
- package/dist/tags/aggregate.d.ts.map +1 -1
- package/dist/tags/aggregate.js +65 -10
- package/dist/tags/aggregate.js.map +1 -1
- package/dist/tags/annotate.d.ts.map +1 -1
- package/dist/tags/annotate.js +12 -9
- package/dist/tags/annotate.js.map +1 -1
- package/dist/tags/badge.d.ts.map +1 -1
- package/dist/tags/badge.js.map +1 -1
- package/dist/tags/bar.d.ts.map +1 -1
- package/dist/tags/bar.js +3 -7
- package/dist/tags/bar.js.map +1 -1
- package/dist/tags/bg.d.ts.map +1 -1
- package/dist/tags/bg.js +60 -12
- package/dist/tags/bg.js.map +1 -1
- package/dist/tags/blog.d.ts.map +1 -1
- package/dist/tags/blog.js +35 -10
- package/dist/tags/blog.js.map +1 -1
- package/dist/tags/breadcrumb.d.ts.map +1 -1
- package/dist/tags/breadcrumb.js +33 -11
- package/dist/tags/breadcrumb.js.map +1 -1
- package/dist/tags/budget.d.ts.map +1 -1
- package/dist/tags/budget.js +54 -16
- package/dist/tags/budget.js.map +1 -1
- package/dist/tags/card.d.ts.map +1 -1
- package/dist/tags/card.js +24 -6
- package/dist/tags/card.js.map +1 -1
- package/dist/tags/chart.d.ts.map +1 -1
- package/dist/tags/chart.js +33 -11
- package/dist/tags/chart.js.map +1 -1
- package/dist/tags/code.d.ts +25 -0
- package/dist/tags/code.d.ts.map +1 -0
- package/dist/tags/code.js +36 -0
- package/dist/tags/code.js.map +1 -0
- package/dist/tags/codegroup.d.ts.map +1 -1
- package/dist/tags/codegroup.js +39 -21
- package/dist/tags/codegroup.js.map +1 -1
- package/dist/tags/collection.d.ts.map +1 -1
- package/dist/tags/collection.js +55 -9
- package/dist/tags/collection.js.map +1 -1
- package/dist/tags/common.d.ts.map +1 -1
- package/dist/tags/common.js +34 -9
- package/dist/tags/common.js.map +1 -1
- package/dist/tags/compare.d.ts.map +1 -1
- package/dist/tags/compare.js +26 -14
- package/dist/tags/compare.js.map +1 -1
- package/dist/tags/conversation.d.ts.map +1 -1
- package/dist/tags/conversation.js +19 -17
- package/dist/tags/conversation.js.map +1 -1
- package/dist/tags/data.d.ts.map +1 -1
- package/dist/tags/data.js +91 -15
- package/dist/tags/data.js.map +1 -1
- package/dist/tags/datatable.d.ts.map +1 -1
- package/dist/tags/datatable.js +22 -8
- package/dist/tags/datatable.js.map +1 -1
- package/dist/tags/deflist.d.ts.map +1 -1
- package/dist/tags/deflist.js +5 -11
- package/dist/tags/deflist.js.map +1 -1
- package/dist/tags/details.d.ts.map +1 -1
- package/dist/tags/details.js +8 -5
- package/dist/tags/details.js.map +1 -1
- package/dist/tags/diagram.d.ts.map +1 -1
- package/dist/tags/diagram.js +9 -5
- package/dist/tags/diagram.js.map +1 -1
- package/dist/tags/diff.d.ts.map +1 -1
- package/dist/tags/diff.js +43 -24
- package/dist/tags/diff.js.map +1 -1
- package/dist/tags/drawer.d.ts.map +1 -1
- package/dist/tags/drawer.js +4 -6
- package/dist/tags/drawer.js.map +1 -1
- package/dist/tags/embed.d.ts.map +1 -1
- package/dist/tags/embed.js +10 -5
- package/dist/tags/embed.js.map +1 -1
- package/dist/tags/expand.d.ts.map +1 -1
- package/dist/tags/expand.js.map +1 -1
- package/dist/tags/figure.d.ts.map +1 -1
- package/dist/tags/figure.js +29 -9
- package/dist/tags/figure.js.map +1 -1
- package/dist/tags/file-ref.d.ts.map +1 -1
- package/dist/tags/file-ref.js.map +1 -1
- package/dist/tags/form.d.ts.map +1 -1
- package/dist/tags/form.js +52 -25
- package/dist/tags/form.js.map +1 -1
- package/dist/tags/gallery.d.ts.map +1 -1
- package/dist/tags/gallery.js +26 -12
- package/dist/tags/gallery.js.map +1 -1
- package/dist/tags/grid.d.ts.map +1 -1
- package/dist/tags/grid.js +57 -14
- package/dist/tags/grid.js.map +1 -1
- package/dist/tags/hint.d.ts.map +1 -1
- package/dist/tags/hint.js +9 -5
- package/dist/tags/hint.js.map +1 -1
- package/dist/tags/icon.d.ts.map +1 -1
- package/dist/tags/icon.js +5 -1
- package/dist/tags/icon.js.map +1 -1
- package/dist/tags/include.d.ts +24 -0
- package/dist/tags/include.d.ts.map +1 -0
- package/dist/tags/include.js +46 -0
- package/dist/tags/include.js.map +1 -0
- package/dist/tags/juxtapose.d.ts.map +1 -1
- package/dist/tags/juxtapose.js +32 -14
- package/dist/tags/juxtapose.js.map +1 -1
- package/dist/tags/layout.d.ts.map +1 -1
- package/dist/tags/layout.js +7 -4
- package/dist/tags/layout.js.map +1 -1
- package/dist/tags/mediatext.d.ts.map +1 -1
- package/dist/tags/mediatext.js +19 -8
- package/dist/tags/mediatext.js.map +1 -1
- package/dist/tags/nav.d.ts.map +1 -1
- package/dist/tags/nav.js +43 -23
- package/dist/tags/nav.js.map +1 -1
- package/dist/tags/pagination.d.ts.map +1 -1
- package/dist/tags/pagination.js +27 -5
- package/dist/tags/pagination.js.map +1 -1
- package/dist/tags/progress.d.ts.map +1 -1
- package/dist/tags/progress.js +25 -5
- package/dist/tags/progress.js.map +1 -1
- package/dist/tags/pullquote.d.ts.map +1 -1
- package/dist/tags/pullquote.js +16 -9
- package/dist/tags/pullquote.js.map +1 -1
- package/dist/tags/region.d.ts.map +1 -1
- package/dist/tags/region.js +9 -4
- package/dist/tags/region.js.map +1 -1
- package/dist/tags/relationships.d.ts.map +1 -1
- package/dist/tags/relationships.js +55 -9
- package/dist/tags/relationships.js.map +1 -1
- package/dist/tags/reveal.d.ts.map +1 -1
- package/dist/tags/reveal.js +16 -7
- package/dist/tags/reveal.js.map +1 -1
- package/dist/tags/sandbox.d.ts.map +1 -1
- package/dist/tags/sandbox.js +104 -44
- package/dist/tags/sandbox.js.map +1 -1
- package/dist/tags/section.d.ts.map +1 -1
- package/dist/tags/section.js +13 -3
- package/dist/tags/section.js.map +1 -1
- package/dist/tags/showcase.d.ts.map +1 -1
- package/dist/tags/showcase.js +33 -11
- package/dist/tags/showcase.js.map +1 -1
- package/dist/tags/sidenote.d.ts.map +1 -1
- package/dist/tags/sidenote.js +9 -5
- package/dist/tags/sidenote.js.map +1 -1
- package/dist/tags/snippet.d.ts.map +1 -1
- package/dist/tags/snippet.js +14 -6
- package/dist/tags/snippet.js.map +1 -1
- package/dist/tags/tabs.d.ts.map +1 -1
- package/dist/tags/tabs.js +16 -9
- package/dist/tags/tabs.js.map +1 -1
- package/dist/tags/textblock.d.ts.map +1 -1
- package/dist/tags/textblock.js +9 -5
- package/dist/tags/textblock.js.map +1 -1
- package/dist/tags/tint.d.ts +1 -1
- package/dist/tags/tint.d.ts.map +1 -1
- package/dist/tags/tint.js +14 -2
- package/dist/tags/tint.js.map +1 -1
- package/dist/tags/toc.d.ts.map +1 -1
- package/dist/tags/toc.js +16 -7
- package/dist/tags/toc.js.map +1 -1
- package/dist/tags/xref.d.ts.map +1 -1
- package/dist/tags/xref.js.map +1 -1
- package/dist/universal-attributes.d.ts.map +1 -1
- package/dist/universal-attributes.js +28 -5
- package/dist/universal-attributes.js.map +1 -1
- package/dist/util.d.ts +41 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +72 -14
- package/dist/util.js.map +1 -1
- package/dist/xref-patterns.js +1 -1
- package/dist/xref-patterns.js.map +1 -1
- package/dist/xref-preview-resolve.js +3 -4
- package/dist/xref-preview-resolve.js.map +1 -1
- package/dist/xref-resolve.d.ts.map +1 -1
- package/dist/xref-resolve.js +4 -4
- package/dist/xref-resolve.js.map +1 -1
- package/i18n/de.json +67 -67
- package/i18n/en.json +67 -67
- package/package.json +3 -3
- package/dist/tags/error.d.ts +0 -3
- package/dist/tags/error.d.ts.map +0 -1
- package/dist/tags/error.js +0 -34
- package/dist/tags/error.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { heading, paragraph, fence, list, item, em, strong, text, link, hardbreak, image, table, td } from './nodes.js';
|
|
1
|
+
import { heading, paragraph, fence, list, item, em, strong, text, link, hardbreak, image, table, td, } from './nodes.js';
|
|
2
2
|
export { Page } from './documents/page.js';
|
|
3
3
|
import { DocPage } from './documents/doc.js';
|
|
4
|
-
import { error } from './tags/error.js';
|
|
5
4
|
import { grid } from './tags/grid.js';
|
|
6
5
|
import { codegroup } from './tags/codegroup.js';
|
|
7
6
|
import { snippet } from './tags/snippet.js';
|
|
8
7
|
import { data } from './tags/data.js';
|
|
8
|
+
import { include } from './tags/include.js';
|
|
9
|
+
import { code } from './tags/code.js';
|
|
9
10
|
import { hint } from './tags/hint.js';
|
|
10
11
|
import { tab, tabs } from './tags/tabs.js';
|
|
11
12
|
import { nav } from './tags/nav.js';
|
|
@@ -61,18 +62,24 @@ import Markdoc from '@markdoc/markdoc';
|
|
|
61
62
|
import { defineRune, runeTagMap } from './rune.js';
|
|
62
63
|
export * from './interfaces.js';
|
|
63
64
|
export { Rune, defineRune, runeTagMap } from './rune.js';
|
|
65
|
+
/** Custom Markdoc attribute types. Exported since SPEC-132, which is the first
|
|
66
|
+
* release in which their `validate()` runs in a build at all — `transform()`
|
|
67
|
+
* never invoked it, only `Markdoc.validate()` does. `plugins/media` carries its
|
|
68
|
+
* own copies of these classes, which is what an unexported utility tends to
|
|
69
|
+
* produce. */
|
|
70
|
+
export { SeparatedString, CommaSeparatedList, SpaceSeparatedList, SpaceSeparatedNumberList, } from './attributes.js';
|
|
64
71
|
export { RenderableNodeCursor } from './lib/renderable.js';
|
|
65
|
-
export { createContentModelSchema, createComponentRenderable, asNodes, schemaContentModels, schemaRuneStructures, declareUniversalPosture, sanitizeSandboxContent } from './lib/index.js';
|
|
72
|
+
export { createContentModelSchema, createComponentRenderable, asNodes, schemaContentModels, schemaRuneStructures, declareUniversalPosture, sanitizeSandboxContent, } from './lib/index.js';
|
|
66
73
|
// SPEC-125 Phase 3 — the declared rule for universal-attribute availability
|
|
67
|
-
export { resolveUniversalAttributes, AXIS_ATTRIBUTES, POSTURE_REASONS } from './universal-attributes.js';
|
|
74
|
+
export { resolveUniversalAttributes, AXIS_ATTRIBUTES, POSTURE_REASONS, } from './universal-attributes.js';
|
|
68
75
|
export { describeSchemaUniversals, UNRECORDED_REASON } from './schema-universals.js';
|
|
69
|
-
export { resolve, resolveSequence, resolveDelimited, resolveContentModel, resolveListItems, evaluateCondition, matchesType } from './lib/resolver.js';
|
|
76
|
+
export { resolve, resolveSequence, resolveDelimited, resolveContentModel, resolveListItems, evaluateCondition, matchesType, } from './lib/resolver.js';
|
|
70
77
|
export { registerImageScheme, resolveImageScheme, hasImageScheme } from './lib/image-schemes.js';
|
|
71
78
|
export { resolveIcon, splitIconName } from './lib/icon-resolve.js';
|
|
72
|
-
export { placeholderSvg, PLACEHOLDER_SHAPES, DEFAULT_PLACEHOLDER_SHAPE } from './lib/placeholder.js';
|
|
79
|
+
export { placeholderSvg, PLACEHOLDER_SHAPES, DEFAULT_PLACEHOLDER_SHAPE, } from './lib/placeholder.js';
|
|
73
80
|
export { FIXTURE_ROLES, splitFixture, parseFixtureFilename, validateFixtureFrontmatter, parseFixture, } from './fixtures.js';
|
|
74
|
-
export { parseFieldMatch, matchesFieldMatch, matchesFilterExpr, resolveEntityField } from './field-match.js';
|
|
75
|
-
export { DEFERRED_BODY_ATTR, captureDeferredBodies, readDeferredBody, transformDeferredTemplate } from './deferred-body.js';
|
|
81
|
+
export { parseFieldMatch, matchesFieldMatch, matchesFilterExpr, resolveEntityField, } from './field-match.js';
|
|
82
|
+
export { DEFERRED_BODY_ATTR, captureDeferredBodies, readDeferredBody, transformDeferredTemplate, } from './deferred-body.js';
|
|
76
83
|
export { resolveCollections } from './collection-resolve.js';
|
|
77
84
|
export { resolveRelationships } from './relationships-resolve.js';
|
|
78
85
|
export { resolveAggregates } from './aggregate-resolve.js';
|
|
@@ -86,8 +93,8 @@ export { hoistPreviewDrawers, registerHoistBuilder, getHoistBuilder, pathToSlug,
|
|
|
86
93
|
export { Ordering, buildOrdering, sortEntities, groupEntities, groupBy, entityUrl, entityTitle, fieldValue, titleLink, projectItem, renderItemTemplate, } from './collection-helpers.js';
|
|
87
94
|
export { COLLECTION_SENTINEL } from './tags/collection.js';
|
|
88
95
|
export { functions, currency, date, number, join, concat, humanize } from './functions.js';
|
|
89
|
-
export { linkItem, pageSectionProperties, buildLayoutMetas, splitMediaBodyFooter, extractMediaImage, unwrapParagraphImages, isMediaNode, isSchemeMediaNode, name as nameHelper, description as descriptionHelper, SplitablePageSectionModel, SplitLayoutModel, splitLayoutAttributes } from './tags/common.js';
|
|
90
|
-
export { extractHeadings, firstH1, headingsToList } from './util.js';
|
|
96
|
+
export { linkItem, pageSectionProperties, buildLayoutMetas, splitMediaBodyFooter, extractMediaImage, unwrapParagraphImages, isMediaNode, isSchemeMediaNode, name as nameHelper, description as descriptionHelper, SplitablePageSectionModel, SplitLayoutModel, splitLayoutAttributes, } from './tags/common.js';
|
|
97
|
+
export { extractHeadings, firstH1, headingsToList, headingSlug, headingText, renderableText, } from './util.js';
|
|
91
98
|
export { LANG_MAP, FALLBACK_LANG, inferLanguage } from './lang-map.js';
|
|
92
99
|
export { extractSeo, collectJsonLd, textContent } from './seo.js';
|
|
93
100
|
export { serialize, serializeTree } from './serialize.js';
|
|
@@ -95,9 +102,9 @@ export { RUNE_EXAMPLES, RUNE_FIXTURE_META } from './examples.js';
|
|
|
95
102
|
export { describeRune, renderContentModel, serializeContentModel, stripContentModel, hydrateRuneInfo, hydrateAllRuneInfos, hydrateRuneByName, serializeRune, groupReferenceInfos, renderReferenceMarkdown, EXCLUDED_RUNES, HIDDEN_ATTRIBUTES, } from './reference.js';
|
|
96
103
|
export { registerAttributePreset, lookupAttributePreset, schemaBasePresets, UNIVERSAL_ATTRIBUTE_NAMES, } from './attribute-presets.js';
|
|
97
104
|
export { LAYOUT, CANONICAL_LAYOUTS, layoutMatches } from './layout-vocabulary.js';
|
|
98
|
-
export { READING_REGISTERS, DEFAULT_READING, READING_CAPABILITIES, resolveReading, coerceRegister } from '@refrakt-md/transform';
|
|
99
|
-
export { loadPlugin, mergePlugins, applyAliases, loadLocalRunes, discoverPluginFixtures, discoverPluginFixtureManifest, assertFileRootNamespaceAllowed } from './plugins.js';
|
|
100
|
-
export { coreConfig, baseConfig, corePipelineHooks, createCorePipelineHooks, resolveCoreSentinels } from './config.js';
|
|
105
|
+
export { READING_REGISTERS, DEFAULT_READING, READING_CAPABILITIES, resolveReading, coerceRegister, } from '@refrakt-md/transform';
|
|
106
|
+
export { loadPlugin, mergePlugins, applyAliases, loadLocalRunes, discoverPluginFixtures, discoverPluginFixtureManifest, assertFileRootNamespaceAllowed, } from './plugins.js';
|
|
107
|
+
export { coreConfig, baseConfig, corePipelineHooks, createCorePipelineHooks, resolveCoreSentinels, } from './config.js';
|
|
101
108
|
// SPEC-035 — first-party core translation bundles (generated from i18n/*.json).
|
|
102
109
|
export { coreTranslations } from './translations.generated.js';
|
|
103
110
|
export { BREADCRUMB_AUTO_SENTINEL } from './tags/breadcrumb.js';
|
|
@@ -118,7 +125,14 @@ export const runes = {
|
|
|
118
125
|
description: 'Navigation structure with page slug references and optional grouping',
|
|
119
126
|
typeName: 'Nav',
|
|
120
127
|
category: 'Site',
|
|
121
|
-
snippet: [
|
|
128
|
+
snippet: [
|
|
129
|
+
'{% nav %}',
|
|
130
|
+
'## ${1:Section}',
|
|
131
|
+
'',
|
|
132
|
+
'- ${2:page-slug}',
|
|
133
|
+
'- ${3:another-page}',
|
|
134
|
+
'{% /nav %}',
|
|
135
|
+
],
|
|
122
136
|
}),
|
|
123
137
|
region: defineRune({
|
|
124
138
|
name: 'region',
|
|
@@ -131,7 +145,13 @@ export const runes = {
|
|
|
131
145
|
schema: layout,
|
|
132
146
|
description: 'Layout definition containing named regions',
|
|
133
147
|
category: 'Site',
|
|
134
|
-
snippet: [
|
|
148
|
+
snippet: [
|
|
149
|
+
'{% layout %}',
|
|
150
|
+
'{% region name="${1:header}" %}',
|
|
151
|
+
'$0',
|
|
152
|
+
'{% /region %}',
|
|
153
|
+
'{% /layout %}',
|
|
154
|
+
],
|
|
135
155
|
}),
|
|
136
156
|
codegroup: defineRune({
|
|
137
157
|
name: 'codegroup',
|
|
@@ -139,14 +159,17 @@ export const runes = {
|
|
|
139
159
|
description: 'Tabbed code block with language tabs',
|
|
140
160
|
typeName: 'CodeGroup',
|
|
141
161
|
category: 'Code & Data',
|
|
142
|
-
snippet: [
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
162
|
+
snippet: [
|
|
163
|
+
'{% codegroup %}',
|
|
164
|
+
'```${1:js}',
|
|
165
|
+
'$0',
|
|
166
|
+
'```',
|
|
167
|
+
'',
|
|
168
|
+
'```${2:ts}',
|
|
169
|
+
'',
|
|
170
|
+
'```',
|
|
171
|
+
'{% /codegroup %}',
|
|
172
|
+
],
|
|
150
173
|
}),
|
|
151
174
|
grid: defineRune({
|
|
152
175
|
name: 'grid',
|
|
@@ -155,7 +178,15 @@ export const runes = {
|
|
|
155
178
|
description: 'Grid layout container with configurable columns and rows',
|
|
156
179
|
typeName: 'Grid',
|
|
157
180
|
category: 'Layout',
|
|
158
|
-
snippet: [
|
|
181
|
+
snippet: [
|
|
182
|
+
'{% grid columns=${1:2} %}',
|
|
183
|
+
'${2:First column content}',
|
|
184
|
+
'',
|
|
185
|
+
'---',
|
|
186
|
+
'',
|
|
187
|
+
'${3:Second column content}',
|
|
188
|
+
'{% /grid %}',
|
|
189
|
+
],
|
|
159
190
|
}),
|
|
160
191
|
hint: defineRune({
|
|
161
192
|
name: 'hint',
|
|
@@ -178,7 +209,17 @@ export const runes = {
|
|
|
178
209
|
description: 'Tabbed interface with tab panels',
|
|
179
210
|
typeName: 'TabGroup',
|
|
180
211
|
category: 'Layout',
|
|
181
|
-
snippet: [
|
|
212
|
+
snippet: [
|
|
213
|
+
'{% tabs %}',
|
|
214
|
+
'## ${1:Tab One}',
|
|
215
|
+
'',
|
|
216
|
+
'${2:Content for tab one.}',
|
|
217
|
+
'',
|
|
218
|
+
'## ${3:Tab Two}',
|
|
219
|
+
'',
|
|
220
|
+
'${4:Content for tab two.}',
|
|
221
|
+
'{% /tabs %}',
|
|
222
|
+
],
|
|
182
223
|
}),
|
|
183
224
|
details: defineRune({
|
|
184
225
|
name: 'details',
|
|
@@ -194,25 +235,43 @@ export const runes = {
|
|
|
194
235
|
description: 'Modal side panel addressed by id. Triggered by xrefs anywhere on the page; falls back to in-flow rendering without JS.',
|
|
195
236
|
typeName: 'Drawer',
|
|
196
237
|
category: 'Layout',
|
|
197
|
-
snippet: [
|
|
238
|
+
snippet: [
|
|
239
|
+
'{% drawer id="${1:auth-explainer}" title="${2:Auth system}" %}',
|
|
240
|
+
'$0',
|
|
241
|
+
'{% /drawer %}',
|
|
242
|
+
],
|
|
198
243
|
}),
|
|
199
244
|
figure: defineRune({
|
|
200
245
|
name: 'figure',
|
|
201
246
|
schema: figure,
|
|
202
247
|
description: 'Enhanced image with caption, attribution, and sizing',
|
|
203
248
|
seoType: 'ImageObject',
|
|
204
|
-
typeName: 'Figure',
|
|
249
|
+
typeName: 'Figure',
|
|
250
|
+
schemaOrgType: 'ImageObject',
|
|
205
251
|
category: 'Content',
|
|
206
|
-
snippet: [
|
|
252
|
+
snippet: [
|
|
253
|
+
'{% figure size="${1|medium,small,large,full|}" %}',
|
|
254
|
+
'',
|
|
255
|
+
'',
|
|
256
|
+
'${4:Caption text}',
|
|
257
|
+
'{% /figure %}',
|
|
258
|
+
],
|
|
207
259
|
}),
|
|
208
260
|
gallery: defineRune({
|
|
209
261
|
name: 'gallery',
|
|
210
262
|
schema: gallery,
|
|
211
263
|
description: 'Multi-image container with grid, carousel, or masonry layout and optional lightbox',
|
|
212
264
|
seoType: 'ImageGallery',
|
|
213
|
-
typeName: 'Gallery',
|
|
265
|
+
typeName: 'Gallery',
|
|
266
|
+
schemaOrgType: 'ImageGallery',
|
|
214
267
|
category: 'Content',
|
|
215
|
-
snippet: [
|
|
268
|
+
snippet: [
|
|
269
|
+
'{% gallery layout="${1|grid,carousel,masonry|}" %}',
|
|
270
|
+
'',
|
|
271
|
+
'',
|
|
272
|
+
'',
|
|
273
|
+
'{% /gallery %}',
|
|
274
|
+
],
|
|
216
275
|
}),
|
|
217
276
|
accordion: defineRune({
|
|
218
277
|
name: 'accordion',
|
|
@@ -220,15 +279,27 @@ export const runes = {
|
|
|
220
279
|
schema: accordion,
|
|
221
280
|
description: 'Collapsible accordion sections where headings become toggleable headers',
|
|
222
281
|
seoType: 'FAQPage',
|
|
223
|
-
typeName: 'Accordion',
|
|
282
|
+
typeName: 'Accordion',
|
|
283
|
+
schemaOrgType: 'FAQPage',
|
|
224
284
|
category: 'Layout',
|
|
225
|
-
snippet: [
|
|
285
|
+
snippet: [
|
|
286
|
+
'{% accordion %}',
|
|
287
|
+
'## ${1:First Question}',
|
|
288
|
+
'',
|
|
289
|
+
'${2:Answer to the first question.}',
|
|
290
|
+
'',
|
|
291
|
+
'## ${3:Second Question}',
|
|
292
|
+
'',
|
|
293
|
+
'${4:Answer to the second question.}',
|
|
294
|
+
'{% /accordion %}',
|
|
295
|
+
],
|
|
226
296
|
}),
|
|
227
297
|
'accordion-item': defineRune({
|
|
228
298
|
name: 'accordion-item',
|
|
229
299
|
schema: accordionItem,
|
|
230
300
|
description: 'Individual accordion section',
|
|
231
|
-
typeName: 'AccordionItem',
|
|
301
|
+
typeName: 'AccordionItem',
|
|
302
|
+
schemaOrgType: 'Question',
|
|
232
303
|
}),
|
|
233
304
|
toc: defineRune({
|
|
234
305
|
name: 'toc',
|
|
@@ -244,7 +315,8 @@ export const runes = {
|
|
|
244
315
|
schema: embed,
|
|
245
316
|
description: 'Embedded content from external services (YouTube, Twitter, CodePen, Spotify)',
|
|
246
317
|
seoType: 'VideoObject',
|
|
247
|
-
typeName: 'Embed',
|
|
318
|
+
typeName: 'Embed',
|
|
319
|
+
schemaOrgType: 'VideoObject',
|
|
248
320
|
category: 'Content',
|
|
249
321
|
snippet: ['{% embed url="${1:https://}" /%}'],
|
|
250
322
|
}),
|
|
@@ -253,7 +325,8 @@ export const runes = {
|
|
|
253
325
|
schema: breadcrumb,
|
|
254
326
|
description: 'Navigation breadcrumb trail showing page hierarchy',
|
|
255
327
|
seoType: 'BreadcrumbList',
|
|
256
|
-
typeName: 'Breadcrumb',
|
|
328
|
+
typeName: 'Breadcrumb',
|
|
329
|
+
schemaOrgType: 'BreadcrumbList',
|
|
257
330
|
category: 'Site',
|
|
258
331
|
snippet: ['{% breadcrumb /%}'],
|
|
259
332
|
}),
|
|
@@ -270,9 +343,17 @@ export const runes = {
|
|
|
270
343
|
schema: budget,
|
|
271
344
|
description: 'Structured cost breakdown with categories, line items, and auto-calculated totals',
|
|
272
345
|
seoType: 'ItemList',
|
|
273
|
-
typeName: 'Budget',
|
|
346
|
+
typeName: 'Budget',
|
|
347
|
+
schemaOrgType: 'ItemList',
|
|
274
348
|
category: 'Semantic',
|
|
275
|
-
snippet: [
|
|
349
|
+
snippet: [
|
|
350
|
+
'{% budget %}',
|
|
351
|
+
'## ${1:Category}',
|
|
352
|
+
'',
|
|
353
|
+
'- ${2:Item description}: \\$${3:100}',
|
|
354
|
+
'- ${4:Another item}: \\$${5:200}',
|
|
355
|
+
'{% /budget %}',
|
|
356
|
+
],
|
|
276
357
|
}),
|
|
277
358
|
'budget-category': defineRune({
|
|
278
359
|
name: 'budget-category',
|
|
@@ -292,7 +373,17 @@ export const runes = {
|
|
|
292
373
|
description: 'Side-by-side code comparison with labeled panels',
|
|
293
374
|
typeName: 'Compare',
|
|
294
375
|
category: 'Code & Data',
|
|
295
|
-
snippet: [
|
|
376
|
+
snippet: [
|
|
377
|
+
'{% compare %}',
|
|
378
|
+
'```${1:js}',
|
|
379
|
+
'${2:// Before}',
|
|
380
|
+
'```',
|
|
381
|
+
'',
|
|
382
|
+
'```${3:js}',
|
|
383
|
+
'${4:// After}',
|
|
384
|
+
'```',
|
|
385
|
+
'{% /compare %}',
|
|
386
|
+
],
|
|
296
387
|
}),
|
|
297
388
|
datatable: defineRune({
|
|
298
389
|
name: 'datatable',
|
|
@@ -300,9 +391,16 @@ export const runes = {
|
|
|
300
391
|
schema: datatable,
|
|
301
392
|
description: 'Interactive data table with sorting, filtering, and pagination from a Markdown table',
|
|
302
393
|
seoType: 'Dataset',
|
|
303
|
-
typeName: 'DataTable',
|
|
394
|
+
typeName: 'DataTable',
|
|
395
|
+
schemaOrgType: 'Dataset',
|
|
304
396
|
category: 'Code & Data',
|
|
305
|
-
snippet: [
|
|
397
|
+
snippet: [
|
|
398
|
+
'{% datatable %}',
|
|
399
|
+
'| ${1:Column A} | ${2:Column B} | ${3:Column C} |',
|
|
400
|
+
'|---|---|---|',
|
|
401
|
+
'| ${4:Data} | ${5:Data} | ${6:Data} |',
|
|
402
|
+
'{% /datatable %}',
|
|
403
|
+
],
|
|
306
404
|
}),
|
|
307
405
|
diff: defineRune({
|
|
308
406
|
name: 'diff',
|
|
@@ -310,7 +408,17 @@ export const runes = {
|
|
|
310
408
|
description: 'Side-by-side or unified diff view between two code blocks',
|
|
311
409
|
typeName: 'Diff',
|
|
312
410
|
category: 'Code & Data',
|
|
313
|
-
snippet: [
|
|
411
|
+
snippet: [
|
|
412
|
+
'{% diff %}',
|
|
413
|
+
'```${1:js}',
|
|
414
|
+
'${2:// Before}',
|
|
415
|
+
'```',
|
|
416
|
+
'',
|
|
417
|
+
'```${3:js}',
|
|
418
|
+
'${4:// After}',
|
|
419
|
+
'```',
|
|
420
|
+
'{% /diff %}',
|
|
421
|
+
],
|
|
314
422
|
}),
|
|
315
423
|
snippet: defineRune({
|
|
316
424
|
name: 'snippet',
|
|
@@ -328,13 +436,36 @@ export const runes = {
|
|
|
328
436
|
category: 'Code & Data',
|
|
329
437
|
snippet: ['{% data src="${1:data/revenue.csv}" /%}'],
|
|
330
438
|
}),
|
|
439
|
+
code: defineRune({
|
|
440
|
+
name: 'code',
|
|
441
|
+
schema: code,
|
|
442
|
+
description: 'Inline code span for dynamic content. Backticks are literal by definition, so a variable inside them never resolves; this renders the same `<code>` and does (WORK-551).',
|
|
443
|
+
typeName: 'Code',
|
|
444
|
+
category: 'Code & Data',
|
|
445
|
+
snippet: ['{% code %}${1:value}{% /code %}'],
|
|
446
|
+
}),
|
|
447
|
+
include: defineRune({
|
|
448
|
+
name: 'include',
|
|
449
|
+
schema: include,
|
|
450
|
+
description: "Paste a partial's AST into the page before the preprocess phase, so `data` and `snippet` inside it resolve — the case `{% partial %}` cannot serve. Reads the same `_partials/` and file roots (SPEC-129).",
|
|
451
|
+
typeName: 'Include',
|
|
452
|
+
category: 'Code & Data',
|
|
453
|
+
snippet: ['{% include file="${1:shared-block.md}" /%}'],
|
|
454
|
+
}),
|
|
331
455
|
chart: defineRune({
|
|
332
456
|
name: 'chart',
|
|
333
457
|
schema: chart,
|
|
334
458
|
description: 'Chart visualization from a Markdown table. First column becomes axis labels, header row becomes series names.',
|
|
335
459
|
typeName: 'Chart',
|
|
336
460
|
category: 'Code & Data',
|
|
337
|
-
snippet: [
|
|
461
|
+
snippet: [
|
|
462
|
+
'{% chart type="${1|bar,line,pie,area|}" %}',
|
|
463
|
+
'| ${2:Label} | ${3:Series A} | ${4:Series B} |',
|
|
464
|
+
'|---|---|---|',
|
|
465
|
+
'| ${5:Item 1} | ${6:10} | ${7:20} |',
|
|
466
|
+
'| ${8:Item 2} | ${9:30} | ${10:15} |',
|
|
467
|
+
'{% /chart %}',
|
|
468
|
+
],
|
|
338
469
|
}),
|
|
339
470
|
diagram: defineRune({
|
|
340
471
|
name: 'diagram',
|
|
@@ -342,7 +473,13 @@ export const runes = {
|
|
|
342
473
|
description: 'Diagram rendering from Mermaid, PlantUML, or ASCII art code blocks',
|
|
343
474
|
typeName: 'Diagram',
|
|
344
475
|
category: 'Code & Data',
|
|
345
|
-
snippet: [
|
|
476
|
+
snippet: [
|
|
477
|
+
'{% diagram language="${1|mermaid,plantuml,ascii|}" %}',
|
|
478
|
+
'```${1:mermaid}',
|
|
479
|
+
'$0',
|
|
480
|
+
'```',
|
|
481
|
+
'{% /diagram %}',
|
|
482
|
+
],
|
|
346
483
|
}),
|
|
347
484
|
sidenote: defineRune({
|
|
348
485
|
name: 'sidenote',
|
|
@@ -360,7 +497,13 @@ export const runes = {
|
|
|
360
497
|
description: 'Chat/dialogue display where blockquotes become alternating speaker messages',
|
|
361
498
|
typeName: 'Conversation',
|
|
362
499
|
category: 'Semantic',
|
|
363
|
-
snippet: [
|
|
500
|
+
snippet: [
|
|
501
|
+
'{% conversation %}',
|
|
502
|
+
'> **${1:Alice}**: ${2:Hello!}',
|
|
503
|
+
'',
|
|
504
|
+
'> **${3:Bob}**: ${4:Hi there!}',
|
|
505
|
+
'{% /conversation %}',
|
|
506
|
+
],
|
|
364
507
|
}),
|
|
365
508
|
'conversation-message': defineRune({
|
|
366
509
|
name: 'conversation-message',
|
|
@@ -374,7 +517,17 @@ export const runes = {
|
|
|
374
517
|
description: 'Progressive disclosure where headings become reveal steps shown one at a time',
|
|
375
518
|
typeName: 'Reveal',
|
|
376
519
|
category: 'Layout',
|
|
377
|
-
snippet: [
|
|
520
|
+
snippet: [
|
|
521
|
+
'{% reveal %}',
|
|
522
|
+
'## ${1:Step One}',
|
|
523
|
+
'',
|
|
524
|
+
'${2:Content revealed first.}',
|
|
525
|
+
'',
|
|
526
|
+
'## ${3:Step Two}',
|
|
527
|
+
'',
|
|
528
|
+
'${4:Content revealed next.}',
|
|
529
|
+
'{% /reveal %}',
|
|
530
|
+
],
|
|
378
531
|
}),
|
|
379
532
|
'reveal-step': defineRune({
|
|
380
533
|
name: 'reveal-step',
|
|
@@ -388,7 +541,17 @@ export const runes = {
|
|
|
388
541
|
description: 'A generic page section: an eyebrow/headline/blurb header above arbitrary body content',
|
|
389
542
|
typeName: 'Section',
|
|
390
543
|
category: 'Layout',
|
|
391
|
-
snippet: [
|
|
544
|
+
snippet: [
|
|
545
|
+
'{% section %}',
|
|
546
|
+
'Eyebrow',
|
|
547
|
+
'',
|
|
548
|
+
'## ${1:Section title}',
|
|
549
|
+
'',
|
|
550
|
+
'${2:A short supporting blurb.}',
|
|
551
|
+
'',
|
|
552
|
+
'${3:Body content — a bento, cards, anything.}',
|
|
553
|
+
'{% /section %}',
|
|
554
|
+
],
|
|
392
555
|
}),
|
|
393
556
|
juxtapose: defineRune({
|
|
394
557
|
name: 'juxtapose',
|
|
@@ -403,7 +566,17 @@ export const runes = {
|
|
|
403
566
|
description: 'Content with margin annotations. Nested note tags appear as margin notes alongside the main text.',
|
|
404
567
|
typeName: 'Annotate',
|
|
405
568
|
category: 'Layout',
|
|
406
|
-
snippet: [
|
|
569
|
+
snippet: [
|
|
570
|
+
'{% annotate %}',
|
|
571
|
+
'${1:Main content here.}',
|
|
572
|
+
'',
|
|
573
|
+
'{% note %}',
|
|
574
|
+
'${2:Margin note content.}',
|
|
575
|
+
'{% /note %}',
|
|
576
|
+
'',
|
|
577
|
+
'${3:More main content.}',
|
|
578
|
+
'{% /annotate %}',
|
|
579
|
+
],
|
|
407
580
|
}),
|
|
408
581
|
note: defineRune({
|
|
409
582
|
name: 'note',
|
|
@@ -418,7 +591,15 @@ export const runes = {
|
|
|
418
591
|
description: 'Accessible HTML form from Markdown. Lists become input fields with smart type inference, blockquotes followed by lists become select/radio/checkbox groups.',
|
|
419
592
|
typeName: 'Form',
|
|
420
593
|
category: 'Content',
|
|
421
|
-
snippet: [
|
|
594
|
+
snippet: [
|
|
595
|
+
'{% form action="${1:/api/contact}" %}',
|
|
596
|
+
'- Name',
|
|
597
|
+
'- Email',
|
|
598
|
+
'- Message',
|
|
599
|
+
'',
|
|
600
|
+
'**${2:Submit}**',
|
|
601
|
+
'{% /form %}',
|
|
602
|
+
],
|
|
422
603
|
}),
|
|
423
604
|
'form-field': defineRune({
|
|
424
605
|
name: 'form-field',
|
|
@@ -432,7 +613,11 @@ export const runes = {
|
|
|
432
613
|
description: 'Isolated HTML/CSS/JS rendering in an iframe with optional framework loading',
|
|
433
614
|
typeName: 'Sandbox',
|
|
434
615
|
category: 'Code & Data',
|
|
435
|
-
snippet: [
|
|
616
|
+
snippet: [
|
|
617
|
+
'{% sandbox framework="${1|,tailwind,bootstrap,bulma,pico|}" %}',
|
|
618
|
+
'$0',
|
|
619
|
+
'{% /sandbox %}',
|
|
620
|
+
],
|
|
436
621
|
}),
|
|
437
622
|
pullquote: defineRune({
|
|
438
623
|
name: 'pullquote',
|
|
@@ -441,7 +626,11 @@ export const runes = {
|
|
|
441
626
|
description: 'Decorative pull quote for magazine-style emphasis with float and block modes',
|
|
442
627
|
typeName: 'PullQuote',
|
|
443
628
|
category: 'Content',
|
|
444
|
-
snippet: [
|
|
629
|
+
snippet: [
|
|
630
|
+
'{% pullquote variant="${1|default,accent,editorial|}" %}',
|
|
631
|
+
'> ${2:Quote text to emphasize.}',
|
|
632
|
+
'{% /pullquote %}',
|
|
633
|
+
],
|
|
445
634
|
}),
|
|
446
635
|
textblock: defineRune({
|
|
447
636
|
name: 'textblock',
|
|
@@ -450,7 +639,11 @@ export const runes = {
|
|
|
450
639
|
description: 'Text formatting block with drop caps, multi-column layout, lead paragraphs, and alignment control',
|
|
451
640
|
typeName: 'TextBlock',
|
|
452
641
|
category: 'Content',
|
|
453
|
-
snippet: [
|
|
642
|
+
snippet: [
|
|
643
|
+
'{% textblock dropcap %}',
|
|
644
|
+
'${1:Formatted text content with drop cap styling.}',
|
|
645
|
+
'{% /textblock %}',
|
|
646
|
+
],
|
|
454
647
|
}),
|
|
455
648
|
mediatext: defineRune({
|
|
456
649
|
name: 'mediatext',
|
|
@@ -459,7 +652,13 @@ export const runes = {
|
|
|
459
652
|
description: 'Image and text side by side with configurable ratio and optional text wrapping',
|
|
460
653
|
typeName: 'MediaText',
|
|
461
654
|
category: 'Layout',
|
|
462
|
-
snippet: [
|
|
655
|
+
snippet: [
|
|
656
|
+
'{% mediatext align="${1|left,right|}" ratio="${2|1:1,1:2,2:1|}" %}',
|
|
657
|
+
'',
|
|
658
|
+
'',
|
|
659
|
+
'${5:Text content displayed alongside the image.}',
|
|
660
|
+
'{% /mediatext %}',
|
|
661
|
+
],
|
|
463
662
|
}),
|
|
464
663
|
icon: defineRune({
|
|
465
664
|
name: 'icon',
|
|
@@ -473,7 +672,13 @@ export const runes = {
|
|
|
473
672
|
schema: tint,
|
|
474
673
|
description: 'Section-level colour override via CSS custom properties. Declared as first child of a block rune.',
|
|
475
674
|
typeName: 'Tint',
|
|
476
|
-
snippet: [
|
|
675
|
+
snippet: [
|
|
676
|
+
'{% tint %}',
|
|
677
|
+
'- background: ${1:#1a1a2e}',
|
|
678
|
+
'- primary: ${2:#e94560}',
|
|
679
|
+
'- accent: ${3:#0f3460}',
|
|
680
|
+
'{% /tint %}',
|
|
681
|
+
],
|
|
477
682
|
}),
|
|
478
683
|
showcase: defineRune({
|
|
479
684
|
name: 'showcase',
|
|
@@ -495,7 +700,8 @@ export const runes = {
|
|
|
495
700
|
schema: blog,
|
|
496
701
|
description: 'Blog post listing with filtering, sorting, and multiple layouts. Displays pages from a content folder as a navigable blog index.',
|
|
497
702
|
seoType: 'Blog',
|
|
498
|
-
typeName: 'Blog',
|
|
703
|
+
typeName: 'Blog',
|
|
704
|
+
schemaOrgType: 'Blog',
|
|
499
705
|
category: 'Semantic',
|
|
500
706
|
}),
|
|
501
707
|
xref: defineRune({
|
|
@@ -507,7 +713,7 @@ export const runes = {
|
|
|
507
713
|
expand: defineRune({
|
|
508
714
|
name: 'expand',
|
|
509
715
|
schema: expand,
|
|
510
|
-
description:
|
|
716
|
+
description: "Substitute a registered entity's source content inline. Reads the entity's sourceFile via the plan plugin (or any plugin that registers extractable entities) and inlines it. Symmetric with `xref`: same lookup chain, different output (content rather than a link).",
|
|
511
717
|
typeName: 'Expand',
|
|
512
718
|
category: 'Content',
|
|
513
719
|
snippet: ['{% expand "${1:SPEC-001}" /%}'],
|
|
@@ -518,7 +724,11 @@ export const runes = {
|
|
|
518
724
|
description: 'Inline pill that flags a piece of content (status, category, recency, tag). Visual variant from the universal metadata-system dimensions (sentiment, rank, type).',
|
|
519
725
|
typeName: 'Badge',
|
|
520
726
|
category: 'Content',
|
|
521
|
-
snippet: [
|
|
727
|
+
snippet: [
|
|
728
|
+
'{% badge sentiment="${1|positive,negative,caution,neutral|}" %}',
|
|
729
|
+
'${2:Label}',
|
|
730
|
+
'{% /badge %}',
|
|
731
|
+
],
|
|
522
732
|
}),
|
|
523
733
|
bar: defineRune({
|
|
524
734
|
name: 'bar',
|
|
@@ -535,7 +745,12 @@ export const runes = {
|
|
|
535
745
|
description: 'Block-level wrapper that renders the SPEC-079 definition-list layout primitive over a markdown list. Each `- **Term:** value` item becomes a <dt>/<dd> pair. Inline runes compose naturally inside <dd>.',
|
|
536
746
|
typeName: 'Deflist',
|
|
537
747
|
category: 'Content',
|
|
538
|
-
snippet: [
|
|
748
|
+
snippet: [
|
|
749
|
+
'{% deflist %}',
|
|
750
|
+
'- **${1:Term}:** ${2:Value}',
|
|
751
|
+
'- **${3:Term}:** ${4:Value}',
|
|
752
|
+
'{% /deflist %}',
|
|
753
|
+
],
|
|
539
754
|
}),
|
|
540
755
|
collection: defineRune({
|
|
541
756
|
name: 'collection',
|
|
@@ -567,7 +782,9 @@ export const runes = {
|
|
|
567
782
|
description: 'Path-based inline reference to a project file — third member of the Registry family beside `xref` (id → link) and `expand` (id → inlined content). Resolves to a deep-link `<a>` pointing at `{repoUrl}/blob/{repoBranch}/{path}#L{start}-L{end}` on GitHub. With `preview="drawer"`, hoists a drawer containing the file\'s snippet and a "View source on GitHub →" footer link, leaving an inline link at the call site that opens it.',
|
|
568
783
|
typeName: 'FileRef',
|
|
569
784
|
category: 'Content',
|
|
570
|
-
snippet: [
|
|
785
|
+
snippet: [
|
|
786
|
+
'{% file-ref path="${1:packages/types/src/token-contract.ts}" lines="${2:42-58}" label="${3:ThemeTokensConfig}" /%}',
|
|
787
|
+
],
|
|
571
788
|
}),
|
|
572
789
|
progress: defineRune({
|
|
573
790
|
name: 'progress',
|
|
@@ -583,7 +800,12 @@ export const runes = {
|
|
|
583
800
|
description: 'A generic, self-contained content card. The body splits on `---` into [media] / body / [footer]: the media zone holds any content (image, codegroup, sandbox, …) and lays out beside the body on wide screens / as a full-bleed header on mobile; the footer is a muted meta row. Optional `href` makes the whole card a link. Knows nothing about the registry — usable standalone or inside a collection body template.',
|
|
584
801
|
typeName: 'Card',
|
|
585
802
|
category: 'Content',
|
|
586
|
-
snippet: [
|
|
803
|
+
snippet: [
|
|
804
|
+
'{% card href="${1:/posts/slug/}" %}',
|
|
805
|
+
'### ${2:Title}',
|
|
806
|
+
'${3:A short summary.}',
|
|
807
|
+
'{% /card %}',
|
|
808
|
+
],
|
|
587
809
|
}),
|
|
588
810
|
};
|
|
589
811
|
/** Markdoc-compatible tags map derived from runes + Markdoc built-in tags.
|
|
@@ -597,6 +819,23 @@ export const tags = {
|
|
|
597
819
|
...runeTagMap(runes),
|
|
598
820
|
link,
|
|
599
821
|
...Markdoc.tags,
|
|
822
|
+
// Markdoc's `if` / `else` declare `primary: { type: Object }`, which is a
|
|
823
|
+
// statement about *expression syntax*: `{% if $var %}` and
|
|
824
|
+
// `{% if equals(a, b) %}` both pass an AST node, and an AST node is an
|
|
825
|
+
// object. It stops being true in this pipeline, because preprocess hooks
|
|
826
|
+
// substitute variables for their values before the page is validated —
|
|
827
|
+
// `bindRow` turns `{% if $row.required %}` into `{% if true %}`, and a
|
|
828
|
+
// boolean is not an Object.
|
|
829
|
+
//
|
|
830
|
+
// SPEC-132's validation pass reported that 3,302 times across `site/`
|
|
831
|
+
// (WORK-557), every one a false positive. The type check cannot catch a
|
|
832
|
+
// real authoring error here: pre-substitution every legal form is already
|
|
833
|
+
// an object, and post-substitution every value is legal. So the constraint
|
|
834
|
+
// is dropped rather than the findings filtered — the root cause, not the
|
|
835
|
+
// symptom. `render: false` is preserved; it is what keeps the condition out
|
|
836
|
+
// of the rendered output.
|
|
837
|
+
if: { ...Markdoc.tags.if, attributes: { primary: { render: false } } },
|
|
838
|
+
else: { ...Markdoc.tags.else, attributes: { primary: { render: false } } },
|
|
600
839
|
};
|
|
601
840
|
export const nodes = {
|
|
602
841
|
heading,
|