@refrakt-md/runes 0.33.0 → 0.35.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 +218 -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.map +1 -1
- package/dist/data-emit.js.map +1 -1
- package/dist/data-pipeline.d.ts.map +1 -1
- package/dist/data-pipeline.js +45 -12
- package/dist/data-pipeline.js.map +1 -1
- package/dist/data-projection.d.ts.map +1 -1
- package/dist/data-projection.js +4 -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.map +1 -1
- package/dist/include-pipeline.js +3 -1
- package/dist/include-pipeline.js.map +1 -1
- package/dist/index.d.ts +95 -37
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +273 -60
- 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 +2 -2
- 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.map +1 -1
- package/dist/lib/component.js +7 -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 +29 -1
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +298 -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 +42 -36
- package/dist/lib/resolver.js.map +1 -1
- package/dist/lib/schema-table.d.ts +176 -0
- package/dist/lib/schema-table.d.ts.map +1 -0
- package/dist/lib/schema-table.js +427 -0
- package/dist/lib/schema-table.js.map +1 -0
- 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 +9 -11
- 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 +33 -0
- package/dist/reference.d.ts.map +1 -1
- package/dist/reference.js +60 -23
- 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 +0 -2
- package/dist/rune.d.ts.map +1 -1
- package/dist/rune.js +0 -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/schema-row.d.ts +89 -0
- package/dist/schema-row.d.ts.map +1 -0
- package/dist/schema-row.js +78 -0
- package/dist/schema-row.js.map +1 -0
- package/dist/seo.d.ts +9 -0
- package/dist/seo.d.ts.map +1 -1
- package/dist/seo.js +88 -11
- 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 +58 -0
- package/dist/tags/accordion.d.ts.map +1 -1
- package/dist/tags/accordion.js +69 -23
- 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 +43 -10
- package/dist/tags/blog.js.map +1 -1
- package/dist/tags/breadcrumb.d.ts +30 -0
- package/dist/tags/breadcrumb.d.ts.map +1 -1
- package/dist/tags/breadcrumb.js +57 -28
- package/dist/tags/breadcrumb.js.map +1 -1
- package/dist/tags/budget.d.ts.map +1 -1
- package/dist/tags/budget.js +60 -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/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 +67 -13
- package/dist/tags/data.js.map +1 -1
- package/dist/tags/datatable.d.ts.map +1 -1
- package/dist/tags/datatable.js +27 -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 +8 -0
- package/dist/tags/embed.d.ts.map +1 -1
- package/dist/tags/embed.js +28 -10
- 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 +7 -0
- package/dist/tags/figure.d.ts.map +1 -1
- package/dist/tags/figure.js +42 -13
- 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 +33 -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.map +1 -1
- package/dist/tags/include.js +1 -1
- package/dist/tags/include.js.map +1 -1
- 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.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.map +1 -1
- package/dist/util.js +4 -4
- 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,7 +1,6 @@
|
|
|
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';
|
|
@@ -63,18 +62,25 @@ import Markdoc from '@markdoc/markdoc';
|
|
|
63
62
|
import { defineRune, runeTagMap } from './rune.js';
|
|
64
63
|
export * from './interfaces.js';
|
|
65
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';
|
|
66
71
|
export { RenderableNodeCursor } from './lib/renderable.js';
|
|
67
|
-
export { createContentModelSchema, createComponentRenderable, asNodes, schemaContentModels, schemaRuneStructures, declareUniversalPosture, sanitizeSandboxContent } from './lib/index.js';
|
|
72
|
+
export { createContentModelSchema, createComponentRenderable, asNodes, schemaContentModels, schemaRuneStructures, declareUniversalPosture, sanitizeSandboxContent, schemaTables, applySchemaTable, validateSchemaTable, SCHEMA_TYPE_EXPLICIT, selectRow, findByName, } from './lib/index.js';
|
|
73
|
+
export { describeSchemaRow, bySchemaProperty, collectSchemaRows, tableFor } from './schema-row.js';
|
|
68
74
|
// SPEC-125 Phase 3 — the declared rule for universal-attribute availability
|
|
69
|
-
export { resolveUniversalAttributes, AXIS_ATTRIBUTES, POSTURE_REASONS } from './universal-attributes.js';
|
|
75
|
+
export { resolveUniversalAttributes, AXIS_ATTRIBUTES, POSTURE_REASONS, } from './universal-attributes.js';
|
|
70
76
|
export { describeSchemaUniversals, UNRECORDED_REASON } from './schema-universals.js';
|
|
71
|
-
export { resolve, resolveSequence, resolveDelimited, resolveContentModel, resolveListItems, evaluateCondition, matchesType } from './lib/resolver.js';
|
|
77
|
+
export { resolve, resolveSequence, resolveDelimited, resolveContentModel, resolveListItems, evaluateCondition, matchesType, } from './lib/resolver.js';
|
|
72
78
|
export { registerImageScheme, resolveImageScheme, hasImageScheme } from './lib/image-schemes.js';
|
|
73
79
|
export { resolveIcon, splitIconName } from './lib/icon-resolve.js';
|
|
74
|
-
export { placeholderSvg, PLACEHOLDER_SHAPES, DEFAULT_PLACEHOLDER_SHAPE } from './lib/placeholder.js';
|
|
80
|
+
export { placeholderSvg, PLACEHOLDER_SHAPES, DEFAULT_PLACEHOLDER_SHAPE, } from './lib/placeholder.js';
|
|
75
81
|
export { FIXTURE_ROLES, splitFixture, parseFixtureFilename, validateFixtureFrontmatter, parseFixture, } from './fixtures.js';
|
|
76
|
-
export { parseFieldMatch, matchesFieldMatch, matchesFilterExpr, resolveEntityField } from './field-match.js';
|
|
77
|
-
export { DEFERRED_BODY_ATTR, captureDeferredBodies, readDeferredBody, transformDeferredTemplate } from './deferred-body.js';
|
|
82
|
+
export { parseFieldMatch, matchesFieldMatch, matchesFilterExpr, resolveEntityField, } from './field-match.js';
|
|
83
|
+
export { DEFERRED_BODY_ATTR, captureDeferredBodies, readDeferredBody, transformDeferredTemplate, } from './deferred-body.js';
|
|
78
84
|
export { resolveCollections } from './collection-resolve.js';
|
|
79
85
|
export { resolveRelationships } from './relationships-resolve.js';
|
|
80
86
|
export { resolveAggregates } from './aggregate-resolve.js';
|
|
@@ -88,8 +94,8 @@ export { hoistPreviewDrawers, registerHoistBuilder, getHoistBuilder, pathToSlug,
|
|
|
88
94
|
export { Ordering, buildOrdering, sortEntities, groupEntities, groupBy, entityUrl, entityTitle, fieldValue, titleLink, projectItem, renderItemTemplate, } from './collection-helpers.js';
|
|
89
95
|
export { COLLECTION_SENTINEL } from './tags/collection.js';
|
|
90
96
|
export { functions, currency, date, number, join, concat, humanize } from './functions.js';
|
|
91
|
-
export { linkItem, pageSectionProperties, buildLayoutMetas, splitMediaBodyFooter, extractMediaImage, unwrapParagraphImages, isMediaNode, isSchemeMediaNode, name as nameHelper, description as descriptionHelper, SplitablePageSectionModel, SplitLayoutModel, splitLayoutAttributes } from './tags/common.js';
|
|
92
|
-
export { extractHeadings, firstH1, headingsToList, headingSlug, headingText, renderableText } from './util.js';
|
|
97
|
+
export { linkItem, pageSectionProperties, buildLayoutMetas, splitMediaBodyFooter, extractMediaImage, unwrapParagraphImages, isMediaNode, isSchemeMediaNode, name as nameHelper, description as descriptionHelper, SplitablePageSectionModel, SplitLayoutModel, splitLayoutAttributes, } from './tags/common.js';
|
|
98
|
+
export { extractHeadings, firstH1, headingsToList, headingSlug, headingText, renderableText, } from './util.js';
|
|
93
99
|
export { LANG_MAP, FALLBACK_LANG, inferLanguage } from './lang-map.js';
|
|
94
100
|
export { extractSeo, collectJsonLd, textContent } from './seo.js';
|
|
95
101
|
export { serialize, serializeTree } from './serialize.js';
|
|
@@ -97,9 +103,9 @@ export { RUNE_EXAMPLES, RUNE_FIXTURE_META } from './examples.js';
|
|
|
97
103
|
export { describeRune, renderContentModel, serializeContentModel, stripContentModel, hydrateRuneInfo, hydrateAllRuneInfos, hydrateRuneByName, serializeRune, groupReferenceInfos, renderReferenceMarkdown, EXCLUDED_RUNES, HIDDEN_ATTRIBUTES, } from './reference.js';
|
|
98
104
|
export { registerAttributePreset, lookupAttributePreset, schemaBasePresets, UNIVERSAL_ATTRIBUTE_NAMES, } from './attribute-presets.js';
|
|
99
105
|
export { LAYOUT, CANONICAL_LAYOUTS, layoutMatches } from './layout-vocabulary.js';
|
|
100
|
-
export { READING_REGISTERS, DEFAULT_READING, READING_CAPABILITIES, resolveReading, coerceRegister } from '@refrakt-md/transform';
|
|
101
|
-
export { loadPlugin, mergePlugins, applyAliases, loadLocalRunes, discoverPluginFixtures, discoverPluginFixtureManifest, assertFileRootNamespaceAllowed } from './plugins.js';
|
|
102
|
-
export { coreConfig, baseConfig, corePipelineHooks, createCorePipelineHooks, resolveCoreSentinels } from './config.js';
|
|
106
|
+
export { READING_REGISTERS, DEFAULT_READING, READING_CAPABILITIES, resolveReading, coerceRegister, } from '@refrakt-md/transform';
|
|
107
|
+
export { loadPlugin, mergePlugins, applyAliases, loadLocalRunes, discoverPluginFixtures, discoverPluginFixtureManifest, assertFileRootNamespaceAllowed, } from './plugins.js';
|
|
108
|
+
export { coreConfig, baseConfig, corePipelineHooks, createCorePipelineHooks, resolveCoreSentinels, } from './config.js';
|
|
103
109
|
// SPEC-035 — first-party core translation bundles (generated from i18n/*.json).
|
|
104
110
|
export { coreTranslations } from './translations.generated.js';
|
|
105
111
|
export { BREADCRUMB_AUTO_SENTINEL } from './tags/breadcrumb.js';
|
|
@@ -120,7 +126,14 @@ export const runes = {
|
|
|
120
126
|
description: 'Navigation structure with page slug references and optional grouping',
|
|
121
127
|
typeName: 'Nav',
|
|
122
128
|
category: 'Site',
|
|
123
|
-
snippet: [
|
|
129
|
+
snippet: [
|
|
130
|
+
'{% nav %}',
|
|
131
|
+
'## ${1:Section}',
|
|
132
|
+
'',
|
|
133
|
+
'- ${2:page-slug}',
|
|
134
|
+
'- ${3:another-page}',
|
|
135
|
+
'{% /nav %}',
|
|
136
|
+
],
|
|
124
137
|
}),
|
|
125
138
|
region: defineRune({
|
|
126
139
|
name: 'region',
|
|
@@ -133,7 +146,13 @@ export const runes = {
|
|
|
133
146
|
schema: layout,
|
|
134
147
|
description: 'Layout definition containing named regions',
|
|
135
148
|
category: 'Site',
|
|
136
|
-
snippet: [
|
|
149
|
+
snippet: [
|
|
150
|
+
'{% layout %}',
|
|
151
|
+
'{% region name="${1:header}" %}',
|
|
152
|
+
'$0',
|
|
153
|
+
'{% /region %}',
|
|
154
|
+
'{% /layout %}',
|
|
155
|
+
],
|
|
137
156
|
}),
|
|
138
157
|
codegroup: defineRune({
|
|
139
158
|
name: 'codegroup',
|
|
@@ -141,14 +160,17 @@ export const runes = {
|
|
|
141
160
|
description: 'Tabbed code block with language tabs',
|
|
142
161
|
typeName: 'CodeGroup',
|
|
143
162
|
category: 'Code & Data',
|
|
144
|
-
snippet: [
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
163
|
+
snippet: [
|
|
164
|
+
'{% codegroup %}',
|
|
165
|
+
'```${1:js}',
|
|
166
|
+
'$0',
|
|
167
|
+
'```',
|
|
168
|
+
'',
|
|
169
|
+
'```${2:ts}',
|
|
170
|
+
'',
|
|
171
|
+
'```',
|
|
172
|
+
'{% /codegroup %}',
|
|
173
|
+
],
|
|
152
174
|
}),
|
|
153
175
|
grid: defineRune({
|
|
154
176
|
name: 'grid',
|
|
@@ -157,7 +179,15 @@ export const runes = {
|
|
|
157
179
|
description: 'Grid layout container with configurable columns and rows',
|
|
158
180
|
typeName: 'Grid',
|
|
159
181
|
category: 'Layout',
|
|
160
|
-
snippet: [
|
|
182
|
+
snippet: [
|
|
183
|
+
'{% grid columns=${1:2} %}',
|
|
184
|
+
'${2:First column content}',
|
|
185
|
+
'',
|
|
186
|
+
'---',
|
|
187
|
+
'',
|
|
188
|
+
'${3:Second column content}',
|
|
189
|
+
'{% /grid %}',
|
|
190
|
+
],
|
|
161
191
|
}),
|
|
162
192
|
hint: defineRune({
|
|
163
193
|
name: 'hint',
|
|
@@ -180,7 +210,17 @@ export const runes = {
|
|
|
180
210
|
description: 'Tabbed interface with tab panels',
|
|
181
211
|
typeName: 'TabGroup',
|
|
182
212
|
category: 'Layout',
|
|
183
|
-
snippet: [
|
|
213
|
+
snippet: [
|
|
214
|
+
'{% tabs %}',
|
|
215
|
+
'## ${1:Tab One}',
|
|
216
|
+
'',
|
|
217
|
+
'${2:Content for tab one.}',
|
|
218
|
+
'',
|
|
219
|
+
'## ${3:Tab Two}',
|
|
220
|
+
'',
|
|
221
|
+
'${4:Content for tab two.}',
|
|
222
|
+
'{% /tabs %}',
|
|
223
|
+
],
|
|
184
224
|
}),
|
|
185
225
|
details: defineRune({
|
|
186
226
|
name: 'details',
|
|
@@ -196,25 +236,41 @@ export const runes = {
|
|
|
196
236
|
description: 'Modal side panel addressed by id. Triggered by xrefs anywhere on the page; falls back to in-flow rendering without JS.',
|
|
197
237
|
typeName: 'Drawer',
|
|
198
238
|
category: 'Layout',
|
|
199
|
-
snippet: [
|
|
239
|
+
snippet: [
|
|
240
|
+
'{% drawer id="${1:auth-explainer}" title="${2:Auth system}" %}',
|
|
241
|
+
'$0',
|
|
242
|
+
'{% /drawer %}',
|
|
243
|
+
],
|
|
200
244
|
}),
|
|
201
245
|
figure: defineRune({
|
|
202
246
|
name: 'figure',
|
|
203
247
|
schema: figure,
|
|
204
248
|
description: 'Enhanced image with caption, attribution, and sizing',
|
|
205
249
|
seoType: 'ImageObject',
|
|
206
|
-
typeName: 'Figure',
|
|
250
|
+
typeName: 'Figure',
|
|
207
251
|
category: 'Content',
|
|
208
|
-
snippet: [
|
|
252
|
+
snippet: [
|
|
253
|
+
'{% figure size="${1|medium,small,large,full|}" %}',
|
|
254
|
+
'',
|
|
255
|
+
'',
|
|
256
|
+
'${4:Caption text}',
|
|
257
|
+
'{% /figure %}',
|
|
258
|
+
],
|
|
209
259
|
}),
|
|
210
260
|
gallery: defineRune({
|
|
211
261
|
name: 'gallery',
|
|
212
262
|
schema: gallery,
|
|
213
263
|
description: 'Multi-image container with grid, carousel, or masonry layout and optional lightbox',
|
|
214
264
|
seoType: 'ImageGallery',
|
|
215
|
-
typeName: 'Gallery',
|
|
265
|
+
typeName: 'Gallery',
|
|
216
266
|
category: 'Content',
|
|
217
|
-
snippet: [
|
|
267
|
+
snippet: [
|
|
268
|
+
'{% gallery layout="${1|grid,carousel,masonry|}" %}',
|
|
269
|
+
'',
|
|
270
|
+
'',
|
|
271
|
+
'',
|
|
272
|
+
'{% /gallery %}',
|
|
273
|
+
],
|
|
218
274
|
}),
|
|
219
275
|
accordion: defineRune({
|
|
220
276
|
name: 'accordion',
|
|
@@ -222,15 +278,25 @@ export const runes = {
|
|
|
222
278
|
schema: accordion,
|
|
223
279
|
description: 'Collapsible accordion sections where headings become toggleable headers',
|
|
224
280
|
seoType: 'FAQPage',
|
|
225
|
-
typeName: 'Accordion',
|
|
281
|
+
typeName: 'Accordion',
|
|
226
282
|
category: 'Layout',
|
|
227
|
-
snippet: [
|
|
283
|
+
snippet: [
|
|
284
|
+
'{% accordion %}',
|
|
285
|
+
'## ${1:First Question}',
|
|
286
|
+
'',
|
|
287
|
+
'${2:Answer to the first question.}',
|
|
288
|
+
'',
|
|
289
|
+
'## ${3:Second Question}',
|
|
290
|
+
'',
|
|
291
|
+
'${4:Answer to the second question.}',
|
|
292
|
+
'{% /accordion %}',
|
|
293
|
+
],
|
|
228
294
|
}),
|
|
229
295
|
'accordion-item': defineRune({
|
|
230
296
|
name: 'accordion-item',
|
|
231
297
|
schema: accordionItem,
|
|
232
298
|
description: 'Individual accordion section',
|
|
233
|
-
typeName: 'AccordionItem',
|
|
299
|
+
typeName: 'AccordionItem',
|
|
234
300
|
}),
|
|
235
301
|
toc: defineRune({
|
|
236
302
|
name: 'toc',
|
|
@@ -246,7 +312,7 @@ export const runes = {
|
|
|
246
312
|
schema: embed,
|
|
247
313
|
description: 'Embedded content from external services (YouTube, Twitter, CodePen, Spotify)',
|
|
248
314
|
seoType: 'VideoObject',
|
|
249
|
-
typeName: 'Embed',
|
|
315
|
+
typeName: 'Embed',
|
|
250
316
|
category: 'Content',
|
|
251
317
|
snippet: ['{% embed url="${1:https://}" /%}'],
|
|
252
318
|
}),
|
|
@@ -255,7 +321,7 @@ export const runes = {
|
|
|
255
321
|
schema: breadcrumb,
|
|
256
322
|
description: 'Navigation breadcrumb trail showing page hierarchy',
|
|
257
323
|
seoType: 'BreadcrumbList',
|
|
258
|
-
typeName: 'Breadcrumb',
|
|
324
|
+
typeName: 'Breadcrumb',
|
|
259
325
|
category: 'Site',
|
|
260
326
|
snippet: ['{% breadcrumb /%}'],
|
|
261
327
|
}),
|
|
@@ -272,9 +338,16 @@ export const runes = {
|
|
|
272
338
|
schema: budget,
|
|
273
339
|
description: 'Structured cost breakdown with categories, line items, and auto-calculated totals',
|
|
274
340
|
seoType: 'ItemList',
|
|
275
|
-
typeName: 'Budget',
|
|
341
|
+
typeName: 'Budget',
|
|
276
342
|
category: 'Semantic',
|
|
277
|
-
snippet: [
|
|
343
|
+
snippet: [
|
|
344
|
+
'{% budget %}',
|
|
345
|
+
'## ${1:Category}',
|
|
346
|
+
'',
|
|
347
|
+
'- ${2:Item description}: \\$${3:100}',
|
|
348
|
+
'- ${4:Another item}: \\$${5:200}',
|
|
349
|
+
'{% /budget %}',
|
|
350
|
+
],
|
|
278
351
|
}),
|
|
279
352
|
'budget-category': defineRune({
|
|
280
353
|
name: 'budget-category',
|
|
@@ -294,7 +367,17 @@ export const runes = {
|
|
|
294
367
|
description: 'Side-by-side code comparison with labeled panels',
|
|
295
368
|
typeName: 'Compare',
|
|
296
369
|
category: 'Code & Data',
|
|
297
|
-
snippet: [
|
|
370
|
+
snippet: [
|
|
371
|
+
'{% compare %}',
|
|
372
|
+
'```${1:js}',
|
|
373
|
+
'${2:// Before}',
|
|
374
|
+
'```',
|
|
375
|
+
'',
|
|
376
|
+
'```${3:js}',
|
|
377
|
+
'${4:// After}',
|
|
378
|
+
'```',
|
|
379
|
+
'{% /compare %}',
|
|
380
|
+
],
|
|
298
381
|
}),
|
|
299
382
|
datatable: defineRune({
|
|
300
383
|
name: 'datatable',
|
|
@@ -302,9 +385,15 @@ export const runes = {
|
|
|
302
385
|
schema: datatable,
|
|
303
386
|
description: 'Interactive data table with sorting, filtering, and pagination from a Markdown table',
|
|
304
387
|
seoType: 'Dataset',
|
|
305
|
-
typeName: 'DataTable',
|
|
388
|
+
typeName: 'DataTable',
|
|
306
389
|
category: 'Code & Data',
|
|
307
|
-
snippet: [
|
|
390
|
+
snippet: [
|
|
391
|
+
'{% datatable %}',
|
|
392
|
+
'| ${1:Column A} | ${2:Column B} | ${3:Column C} |',
|
|
393
|
+
'|---|---|---|',
|
|
394
|
+
'| ${4:Data} | ${5:Data} | ${6:Data} |',
|
|
395
|
+
'{% /datatable %}',
|
|
396
|
+
],
|
|
308
397
|
}),
|
|
309
398
|
diff: defineRune({
|
|
310
399
|
name: 'diff',
|
|
@@ -312,7 +401,17 @@ export const runes = {
|
|
|
312
401
|
description: 'Side-by-side or unified diff view between two code blocks',
|
|
313
402
|
typeName: 'Diff',
|
|
314
403
|
category: 'Code & Data',
|
|
315
|
-
snippet: [
|
|
404
|
+
snippet: [
|
|
405
|
+
'{% diff %}',
|
|
406
|
+
'```${1:js}',
|
|
407
|
+
'${2:// Before}',
|
|
408
|
+
'```',
|
|
409
|
+
'',
|
|
410
|
+
'```${3:js}',
|
|
411
|
+
'${4:// After}',
|
|
412
|
+
'```',
|
|
413
|
+
'{% /diff %}',
|
|
414
|
+
],
|
|
316
415
|
}),
|
|
317
416
|
snippet: defineRune({
|
|
318
417
|
name: 'snippet',
|
|
@@ -341,7 +440,7 @@ export const runes = {
|
|
|
341
440
|
include: defineRune({
|
|
342
441
|
name: 'include',
|
|
343
442
|
schema: include,
|
|
344
|
-
description:
|
|
443
|
+
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).",
|
|
345
444
|
typeName: 'Include',
|
|
346
445
|
category: 'Code & Data',
|
|
347
446
|
snippet: ['{% include file="${1:shared-block.md}" /%}'],
|
|
@@ -352,7 +451,14 @@ export const runes = {
|
|
|
352
451
|
description: 'Chart visualization from a Markdown table. First column becomes axis labels, header row becomes series names.',
|
|
353
452
|
typeName: 'Chart',
|
|
354
453
|
category: 'Code & Data',
|
|
355
|
-
snippet: [
|
|
454
|
+
snippet: [
|
|
455
|
+
'{% chart type="${1|bar,line,pie,area|}" %}',
|
|
456
|
+
'| ${2:Label} | ${3:Series A} | ${4:Series B} |',
|
|
457
|
+
'|---|---|---|',
|
|
458
|
+
'| ${5:Item 1} | ${6:10} | ${7:20} |',
|
|
459
|
+
'| ${8:Item 2} | ${9:30} | ${10:15} |',
|
|
460
|
+
'{% /chart %}',
|
|
461
|
+
],
|
|
356
462
|
}),
|
|
357
463
|
diagram: defineRune({
|
|
358
464
|
name: 'diagram',
|
|
@@ -360,7 +466,13 @@ export const runes = {
|
|
|
360
466
|
description: 'Diagram rendering from Mermaid, PlantUML, or ASCII art code blocks',
|
|
361
467
|
typeName: 'Diagram',
|
|
362
468
|
category: 'Code & Data',
|
|
363
|
-
snippet: [
|
|
469
|
+
snippet: [
|
|
470
|
+
'{% diagram language="${1|mermaid,plantuml,ascii|}" %}',
|
|
471
|
+
'```${1:mermaid}',
|
|
472
|
+
'$0',
|
|
473
|
+
'```',
|
|
474
|
+
'{% /diagram %}',
|
|
475
|
+
],
|
|
364
476
|
}),
|
|
365
477
|
sidenote: defineRune({
|
|
366
478
|
name: 'sidenote',
|
|
@@ -378,7 +490,13 @@ export const runes = {
|
|
|
378
490
|
description: 'Chat/dialogue display where blockquotes become alternating speaker messages',
|
|
379
491
|
typeName: 'Conversation',
|
|
380
492
|
category: 'Semantic',
|
|
381
|
-
snippet: [
|
|
493
|
+
snippet: [
|
|
494
|
+
'{% conversation %}',
|
|
495
|
+
'> **${1:Alice}**: ${2:Hello!}',
|
|
496
|
+
'',
|
|
497
|
+
'> **${3:Bob}**: ${4:Hi there!}',
|
|
498
|
+
'{% /conversation %}',
|
|
499
|
+
],
|
|
382
500
|
}),
|
|
383
501
|
'conversation-message': defineRune({
|
|
384
502
|
name: 'conversation-message',
|
|
@@ -392,7 +510,17 @@ export const runes = {
|
|
|
392
510
|
description: 'Progressive disclosure where headings become reveal steps shown one at a time',
|
|
393
511
|
typeName: 'Reveal',
|
|
394
512
|
category: 'Layout',
|
|
395
|
-
snippet: [
|
|
513
|
+
snippet: [
|
|
514
|
+
'{% reveal %}',
|
|
515
|
+
'## ${1:Step One}',
|
|
516
|
+
'',
|
|
517
|
+
'${2:Content revealed first.}',
|
|
518
|
+
'',
|
|
519
|
+
'## ${3:Step Two}',
|
|
520
|
+
'',
|
|
521
|
+
'${4:Content revealed next.}',
|
|
522
|
+
'{% /reveal %}',
|
|
523
|
+
],
|
|
396
524
|
}),
|
|
397
525
|
'reveal-step': defineRune({
|
|
398
526
|
name: 'reveal-step',
|
|
@@ -406,7 +534,17 @@ export const runes = {
|
|
|
406
534
|
description: 'A generic page section: an eyebrow/headline/blurb header above arbitrary body content',
|
|
407
535
|
typeName: 'Section',
|
|
408
536
|
category: 'Layout',
|
|
409
|
-
snippet: [
|
|
537
|
+
snippet: [
|
|
538
|
+
'{% section %}',
|
|
539
|
+
'Eyebrow',
|
|
540
|
+
'',
|
|
541
|
+
'## ${1:Section title}',
|
|
542
|
+
'',
|
|
543
|
+
'${2:A short supporting blurb.}',
|
|
544
|
+
'',
|
|
545
|
+
'${3:Body content — a bento, cards, anything.}',
|
|
546
|
+
'{% /section %}',
|
|
547
|
+
],
|
|
410
548
|
}),
|
|
411
549
|
juxtapose: defineRune({
|
|
412
550
|
name: 'juxtapose',
|
|
@@ -421,7 +559,17 @@ export const runes = {
|
|
|
421
559
|
description: 'Content with margin annotations. Nested note tags appear as margin notes alongside the main text.',
|
|
422
560
|
typeName: 'Annotate',
|
|
423
561
|
category: 'Layout',
|
|
424
|
-
snippet: [
|
|
562
|
+
snippet: [
|
|
563
|
+
'{% annotate %}',
|
|
564
|
+
'${1:Main content here.}',
|
|
565
|
+
'',
|
|
566
|
+
'{% note %}',
|
|
567
|
+
'${2:Margin note content.}',
|
|
568
|
+
'{% /note %}',
|
|
569
|
+
'',
|
|
570
|
+
'${3:More main content.}',
|
|
571
|
+
'{% /annotate %}',
|
|
572
|
+
],
|
|
425
573
|
}),
|
|
426
574
|
note: defineRune({
|
|
427
575
|
name: 'note',
|
|
@@ -436,7 +584,15 @@ export const runes = {
|
|
|
436
584
|
description: 'Accessible HTML form from Markdown. Lists become input fields with smart type inference, blockquotes followed by lists become select/radio/checkbox groups.',
|
|
437
585
|
typeName: 'Form',
|
|
438
586
|
category: 'Content',
|
|
439
|
-
snippet: [
|
|
587
|
+
snippet: [
|
|
588
|
+
'{% form action="${1:/api/contact}" %}',
|
|
589
|
+
'- Name',
|
|
590
|
+
'- Email',
|
|
591
|
+
'- Message',
|
|
592
|
+
'',
|
|
593
|
+
'**${2:Submit}**',
|
|
594
|
+
'{% /form %}',
|
|
595
|
+
],
|
|
440
596
|
}),
|
|
441
597
|
'form-field': defineRune({
|
|
442
598
|
name: 'form-field',
|
|
@@ -450,7 +606,11 @@ export const runes = {
|
|
|
450
606
|
description: 'Isolated HTML/CSS/JS rendering in an iframe with optional framework loading',
|
|
451
607
|
typeName: 'Sandbox',
|
|
452
608
|
category: 'Code & Data',
|
|
453
|
-
snippet: [
|
|
609
|
+
snippet: [
|
|
610
|
+
'{% sandbox framework="${1|,tailwind,bootstrap,bulma,pico|}" %}',
|
|
611
|
+
'$0',
|
|
612
|
+
'{% /sandbox %}',
|
|
613
|
+
],
|
|
454
614
|
}),
|
|
455
615
|
pullquote: defineRune({
|
|
456
616
|
name: 'pullquote',
|
|
@@ -459,7 +619,11 @@ export const runes = {
|
|
|
459
619
|
description: 'Decorative pull quote for magazine-style emphasis with float and block modes',
|
|
460
620
|
typeName: 'PullQuote',
|
|
461
621
|
category: 'Content',
|
|
462
|
-
snippet: [
|
|
622
|
+
snippet: [
|
|
623
|
+
'{% pullquote variant="${1|default,accent,editorial|}" %}',
|
|
624
|
+
'> ${2:Quote text to emphasize.}',
|
|
625
|
+
'{% /pullquote %}',
|
|
626
|
+
],
|
|
463
627
|
}),
|
|
464
628
|
textblock: defineRune({
|
|
465
629
|
name: 'textblock',
|
|
@@ -468,7 +632,11 @@ export const runes = {
|
|
|
468
632
|
description: 'Text formatting block with drop caps, multi-column layout, lead paragraphs, and alignment control',
|
|
469
633
|
typeName: 'TextBlock',
|
|
470
634
|
category: 'Content',
|
|
471
|
-
snippet: [
|
|
635
|
+
snippet: [
|
|
636
|
+
'{% textblock dropcap %}',
|
|
637
|
+
'${1:Formatted text content with drop cap styling.}',
|
|
638
|
+
'{% /textblock %}',
|
|
639
|
+
],
|
|
472
640
|
}),
|
|
473
641
|
mediatext: defineRune({
|
|
474
642
|
name: 'mediatext',
|
|
@@ -477,7 +645,13 @@ export const runes = {
|
|
|
477
645
|
description: 'Image and text side by side with configurable ratio and optional text wrapping',
|
|
478
646
|
typeName: 'MediaText',
|
|
479
647
|
category: 'Layout',
|
|
480
|
-
snippet: [
|
|
648
|
+
snippet: [
|
|
649
|
+
'{% mediatext align="${1|left,right|}" ratio="${2|1:1,1:2,2:1|}" %}',
|
|
650
|
+
'',
|
|
651
|
+
'',
|
|
652
|
+
'${5:Text content displayed alongside the image.}',
|
|
653
|
+
'{% /mediatext %}',
|
|
654
|
+
],
|
|
481
655
|
}),
|
|
482
656
|
icon: defineRune({
|
|
483
657
|
name: 'icon',
|
|
@@ -491,7 +665,13 @@ export const runes = {
|
|
|
491
665
|
schema: tint,
|
|
492
666
|
description: 'Section-level colour override via CSS custom properties. Declared as first child of a block rune.',
|
|
493
667
|
typeName: 'Tint',
|
|
494
|
-
snippet: [
|
|
668
|
+
snippet: [
|
|
669
|
+
'{% tint %}',
|
|
670
|
+
'- background: ${1:#1a1a2e}',
|
|
671
|
+
'- primary: ${2:#e94560}',
|
|
672
|
+
'- accent: ${3:#0f3460}',
|
|
673
|
+
'{% /tint %}',
|
|
674
|
+
],
|
|
495
675
|
}),
|
|
496
676
|
showcase: defineRune({
|
|
497
677
|
name: 'showcase',
|
|
@@ -513,7 +693,7 @@ export const runes = {
|
|
|
513
693
|
schema: blog,
|
|
514
694
|
description: 'Blog post listing with filtering, sorting, and multiple layouts. Displays pages from a content folder as a navigable blog index.',
|
|
515
695
|
seoType: 'Blog',
|
|
516
|
-
typeName: 'Blog',
|
|
696
|
+
typeName: 'Blog',
|
|
517
697
|
category: 'Semantic',
|
|
518
698
|
}),
|
|
519
699
|
xref: defineRune({
|
|
@@ -525,7 +705,7 @@ export const runes = {
|
|
|
525
705
|
expand: defineRune({
|
|
526
706
|
name: 'expand',
|
|
527
707
|
schema: expand,
|
|
528
|
-
description:
|
|
708
|
+
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).",
|
|
529
709
|
typeName: 'Expand',
|
|
530
710
|
category: 'Content',
|
|
531
711
|
snippet: ['{% expand "${1:SPEC-001}" /%}'],
|
|
@@ -536,7 +716,11 @@ export const runes = {
|
|
|
536
716
|
description: 'Inline pill that flags a piece of content (status, category, recency, tag). Visual variant from the universal metadata-system dimensions (sentiment, rank, type).',
|
|
537
717
|
typeName: 'Badge',
|
|
538
718
|
category: 'Content',
|
|
539
|
-
snippet: [
|
|
719
|
+
snippet: [
|
|
720
|
+
'{% badge sentiment="${1|positive,negative,caution,neutral|}" %}',
|
|
721
|
+
'${2:Label}',
|
|
722
|
+
'{% /badge %}',
|
|
723
|
+
],
|
|
540
724
|
}),
|
|
541
725
|
bar: defineRune({
|
|
542
726
|
name: 'bar',
|
|
@@ -553,7 +737,12 @@ export const runes = {
|
|
|
553
737
|
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>.',
|
|
554
738
|
typeName: 'Deflist',
|
|
555
739
|
category: 'Content',
|
|
556
|
-
snippet: [
|
|
740
|
+
snippet: [
|
|
741
|
+
'{% deflist %}',
|
|
742
|
+
'- **${1:Term}:** ${2:Value}',
|
|
743
|
+
'- **${3:Term}:** ${4:Value}',
|
|
744
|
+
'{% /deflist %}',
|
|
745
|
+
],
|
|
557
746
|
}),
|
|
558
747
|
collection: defineRune({
|
|
559
748
|
name: 'collection',
|
|
@@ -585,7 +774,9 @@ export const runes = {
|
|
|
585
774
|
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.',
|
|
586
775
|
typeName: 'FileRef',
|
|
587
776
|
category: 'Content',
|
|
588
|
-
snippet: [
|
|
777
|
+
snippet: [
|
|
778
|
+
'{% file-ref path="${1:packages/types/src/token-contract.ts}" lines="${2:42-58}" label="${3:ThemeTokensConfig}" /%}',
|
|
779
|
+
],
|
|
589
780
|
}),
|
|
590
781
|
progress: defineRune({
|
|
591
782
|
name: 'progress',
|
|
@@ -601,7 +792,12 @@ export const runes = {
|
|
|
601
792
|
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.',
|
|
602
793
|
typeName: 'Card',
|
|
603
794
|
category: 'Content',
|
|
604
|
-
snippet: [
|
|
795
|
+
snippet: [
|
|
796
|
+
'{% card href="${1:/posts/slug/}" %}',
|
|
797
|
+
'### ${2:Title}',
|
|
798
|
+
'${3:A short summary.}',
|
|
799
|
+
'{% /card %}',
|
|
800
|
+
],
|
|
605
801
|
}),
|
|
606
802
|
};
|
|
607
803
|
/** Markdoc-compatible tags map derived from runes + Markdoc built-in tags.
|
|
@@ -615,6 +811,23 @@ export const tags = {
|
|
|
615
811
|
...runeTagMap(runes),
|
|
616
812
|
link,
|
|
617
813
|
...Markdoc.tags,
|
|
814
|
+
// Markdoc's `if` / `else` declare `primary: { type: Object }`, which is a
|
|
815
|
+
// statement about *expression syntax*: `{% if $var %}` and
|
|
816
|
+
// `{% if equals(a, b) %}` both pass an AST node, and an AST node is an
|
|
817
|
+
// object. It stops being true in this pipeline, because preprocess hooks
|
|
818
|
+
// substitute variables for their values before the page is validated —
|
|
819
|
+
// `bindRow` turns `{% if $row.required %}` into `{% if true %}`, and a
|
|
820
|
+
// boolean is not an Object.
|
|
821
|
+
//
|
|
822
|
+
// SPEC-132's validation pass reported that 3,302 times across `site/`
|
|
823
|
+
// (WORK-557), every one a false positive. The type check cannot catch a
|
|
824
|
+
// real authoring error here: pre-substitution every legal form is already
|
|
825
|
+
// an object, and post-substitution every value is legal. So the constraint
|
|
826
|
+
// is dropped rather than the findings filtered — the root cause, not the
|
|
827
|
+
// symptom. `render: false` is preserved; it is what keeps the condition out
|
|
828
|
+
// of the rendered output.
|
|
829
|
+
if: { ...Markdoc.tags.if, attributes: { primary: { render: false } } },
|
|
830
|
+
else: { ...Markdoc.tags.else, attributes: { primary: { render: false } } },
|
|
618
831
|
};
|
|
619
832
|
export const nodes = {
|
|
620
833
|
heading,
|