@cogenta/theme-docs 0.3.3 → 0.5.4

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.
Files changed (148) hide show
  1. package/dist/src/index.d.ts +2 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +2 -0
  4. package/dist/src/index.js.map +1 -1
  5. package/dist/src/render/blocks/accordion.d.ts +8 -0
  6. package/dist/src/render/blocks/accordion.d.ts.map +1 -1
  7. package/dist/src/render/blocks/accordion.js +10 -10
  8. package/dist/src/render/blocks/accordion.js.map +1 -1
  9. package/dist/src/render/blocks/collection-list.d.ts +3 -11
  10. package/dist/src/render/blocks/collection-list.d.ts.map +1 -1
  11. package/dist/src/render/blocks/collection-list.js +69 -68
  12. package/dist/src/render/blocks/collection-list.js.map +1 -1
  13. package/dist/src/render/blocks/cta.d.ts +6 -0
  14. package/dist/src/render/blocks/cta.d.ts.map +1 -1
  15. package/dist/src/render/blocks/cta.js +9 -4
  16. package/dist/src/render/blocks/cta.js.map +1 -1
  17. package/dist/src/render/blocks/embed.d.ts.map +1 -1
  18. package/dist/src/render/blocks/embed.js +14 -13
  19. package/dist/src/render/blocks/embed.js.map +1 -1
  20. package/dist/src/render/blocks/faq.d.ts +7 -0
  21. package/dist/src/render/blocks/faq.d.ts.map +1 -1
  22. package/dist/src/render/blocks/faq.js +10 -10
  23. package/dist/src/render/blocks/faq.js.map +1 -1
  24. package/dist/src/render/blocks/feature-grid.d.ts.map +1 -1
  25. package/dist/src/render/blocks/feature-grid.js +19 -19
  26. package/dist/src/render/blocks/feature-grid.js.map +1 -1
  27. package/dist/src/render/blocks/gallery.d.ts +8 -4
  28. package/dist/src/render/blocks/gallery.d.ts.map +1 -1
  29. package/dist/src/render/blocks/gallery.js +19 -13
  30. package/dist/src/render/blocks/gallery.js.map +1 -1
  31. package/dist/src/render/blocks/hero.d.ts +12 -9
  32. package/dist/src/render/blocks/hero.d.ts.map +1 -1
  33. package/dist/src/render/blocks/hero.js +22 -20
  34. package/dist/src/render/blocks/hero.js.map +1 -1
  35. package/dist/src/render/blocks/logo-strip.d.ts +6 -0
  36. package/dist/src/render/blocks/logo-strip.d.ts.map +1 -1
  37. package/dist/src/render/blocks/logo-strip.js +6 -10
  38. package/dist/src/render/blocks/logo-strip.js.map +1 -1
  39. package/dist/src/render/blocks/logos.d.ts +10 -0
  40. package/dist/src/render/blocks/logos.d.ts.map +1 -1
  41. package/dist/src/render/blocks/logos.js +20 -17
  42. package/dist/src/render/blocks/logos.js.map +1 -1
  43. package/dist/src/render/blocks/media-figure.d.ts +0 -6
  44. package/dist/src/render/blocks/media-figure.d.ts.map +1 -1
  45. package/dist/src/render/blocks/media-figure.js +28 -16
  46. package/dist/src/render/blocks/media-figure.js.map +1 -1
  47. package/dist/src/render/blocks/pricing-table.d.ts.map +1 -1
  48. package/dist/src/render/blocks/pricing-table.js +16 -20
  49. package/dist/src/render/blocks/pricing-table.js.map +1 -1
  50. package/dist/src/render/blocks/prose.d.ts +13 -1
  51. package/dist/src/render/blocks/prose.d.ts.map +1 -1
  52. package/dist/src/render/blocks/prose.js +12 -31
  53. package/dist/src/render/blocks/prose.js.map +1 -1
  54. package/dist/src/render/blocks/quote.d.ts +5 -3
  55. package/dist/src/render/blocks/quote.d.ts.map +1 -1
  56. package/dist/src/render/blocks/quote.js +10 -14
  57. package/dist/src/render/blocks/quote.js.map +1 -1
  58. package/dist/src/render/blocks/stat-counter.d.ts +5 -0
  59. package/dist/src/render/blocks/stat-counter.d.ts.map +1 -1
  60. package/dist/src/render/blocks/stat-counter.js +6 -10
  61. package/dist/src/render/blocks/stat-counter.js.map +1 -1
  62. package/dist/src/render/blocks/stats.d.ts +10 -0
  63. package/dist/src/render/blocks/stats.d.ts.map +1 -1
  64. package/dist/src/render/blocks/stats.js +13 -8
  65. package/dist/src/render/blocks/stats.js.map +1 -1
  66. package/dist/src/render/blocks/testimonial.d.ts +4 -5
  67. package/dist/src/render/blocks/testimonial.d.ts.map +1 -1
  68. package/dist/src/render/blocks/testimonial.js +9 -13
  69. package/dist/src/render/blocks/testimonial.js.map +1 -1
  70. package/dist/src/render/chrome.d.ts +36 -1
  71. package/dist/src/render/chrome.d.ts.map +1 -1
  72. package/dist/src/render/chrome.js +122 -80
  73. package/dist/src/render/chrome.js.map +1 -1
  74. package/dist/src/render/doc-index.d.ts +25 -0
  75. package/dist/src/render/doc-index.d.ts.map +1 -0
  76. package/dist/src/render/doc-index.js +49 -0
  77. package/dist/src/render/doc-index.js.map +1 -0
  78. package/dist/src/render/doc-page.d.ts +6 -0
  79. package/dist/src/render/doc-page.d.ts.map +1 -0
  80. package/dist/src/render/doc-page.js +127 -0
  81. package/dist/src/render/doc-page.js.map +1 -0
  82. package/dist/src/render/layout.d.ts +23 -0
  83. package/dist/src/render/layout.d.ts.map +1 -0
  84. package/dist/src/render/layout.js +40 -0
  85. package/dist/src/render/layout.js.map +1 -0
  86. package/dist/src/render/render-block.d.ts +9 -6
  87. package/dist/src/render/render-block.d.ts.map +1 -1
  88. package/dist/src/render/render-block.js +47 -100
  89. package/dist/src/render/render-block.js.map +1 -1
  90. package/dist/src/render/rich-text.d.ts +26 -0
  91. package/dist/src/render/rich-text.d.ts.map +1 -0
  92. package/dist/src/render/rich-text.js +325 -0
  93. package/dist/src/render/rich-text.js.map +1 -0
  94. package/dist/src/render/search.d.ts +15 -0
  95. package/dist/src/render/search.d.ts.map +1 -0
  96. package/dist/src/render/search.js +31 -0
  97. package/dist/src/render/search.js.map +1 -0
  98. package/dist/src/render/strings.d.ts +51 -0
  99. package/dist/src/render/strings.d.ts.map +1 -0
  100. package/dist/src/render/strings.js +60 -0
  101. package/dist/src/render/strings.js.map +1 -0
  102. package/dist/src/render/term-archive.d.ts +5 -5
  103. package/dist/src/render/term-archive.d.ts.map +1 -1
  104. package/dist/src/render/term-archive.js +27 -16
  105. package/dist/src/render/term-archive.js.map +1 -1
  106. package/dist/src/render/widget-areas.d.ts +22 -0
  107. package/dist/src/render/widget-areas.d.ts.map +1 -0
  108. package/dist/src/render/widget-areas.js +29 -0
  109. package/dist/src/render/widget-areas.js.map +1 -0
  110. package/package.json +4 -4
  111. package/src/index.ts +2 -0
  112. package/src/render/blocks/accordion.ts +31 -42
  113. package/src/render/blocks/collection-list.ts +132 -123
  114. package/src/render/blocks/cta.ts +23 -18
  115. package/src/render/blocks/embed.ts +37 -28
  116. package/src/render/blocks/faq.ts +26 -37
  117. package/src/render/blocks/feature-grid.ts +34 -42
  118. package/src/render/blocks/gallery.ts +33 -29
  119. package/src/render/blocks/hero.ts +41 -45
  120. package/src/render/blocks/logo-strip.ts +21 -21
  121. package/src/render/blocks/logos.ts +32 -42
  122. package/src/render/blocks/media-figure.ts +47 -25
  123. package/src/render/blocks/pricing-table.ts +34 -41
  124. package/src/render/blocks/prose.ts +25 -40
  125. package/src/render/blocks/quote.ts +25 -19
  126. package/src/render/blocks/stat-counter.ts +27 -29
  127. package/src/render/blocks/stats.ts +35 -32
  128. package/src/render/blocks/testimonial.ts +18 -19
  129. package/src/render/chrome.ts +170 -83
  130. package/src/render/doc-index.ts +65 -0
  131. package/src/render/doc-page.ts +303 -0
  132. package/src/render/layout.ts +73 -0
  133. package/src/render/render-block.ts +67 -191
  134. package/src/render/rich-text.ts +446 -0
  135. package/src/render/search.ts +41 -0
  136. package/src/render/strings.ts +67 -0
  137. package/src/render/term-archive.ts +62 -38
  138. package/src/render/widget-areas.ts +33 -0
  139. package/src/styles/archive.css +21 -27
  140. package/src/styles/base.css +438 -838
  141. package/src/styles/blocks.css +658 -916
  142. package/src/styles/chrome.css +439 -0
  143. package/src/styles/docs.css +404 -0
  144. package/src/styles/rich.css +337 -0
  145. package/src/styles/theme.css +28 -23
  146. package/src/styles/tokens.css +209 -215
  147. package/src/styles/widgets.css +890 -0
  148. package/tokens.json +15 -15
@@ -0,0 +1,325 @@
1
+ import { h, renderRichText, text, } from '@cogenta/theme-kit';
2
+ /** Ids the host or the chrome already uses on every page. */
3
+ const RESERVED_IDS = new Set([
4
+ 'cg-main',
5
+ 'cd-search-header',
6
+ 'cd-search-menu',
7
+ 'cd-search-hero',
8
+ 'cd-toc-label',
9
+ ]);
10
+ export function slugify(value) {
11
+ const slug = value
12
+ .normalize('NFKD')
13
+ .replace(/[\u0300-\u036f]/g, '')
14
+ .toLowerCase()
15
+ .replace(/[^a-z0-9]+/g, '-')
16
+ .replace(/^-+|-+$/g, '');
17
+ return slug === '' ? 'section' : slug;
18
+ }
19
+ function isTextBlock(node) {
20
+ return node !== undefined && node._type === 'block';
21
+ }
22
+ function plainText(node) {
23
+ return node.children.map((span) => span.text).join('');
24
+ }
25
+ /**
26
+ * One id per `h2`/`h3` of every `prose` block on a page, unique across the
27
+ * page: a second "Examples" becomes `examples-2`. Computed once for the whole
28
+ * page, so the table of contents and the headings always agree.
29
+ */
30
+ export function headingAnchors(blocks) {
31
+ const used = new Set(RESERVED_IDS);
32
+ const anchors = new Map();
33
+ for (const block of blocks) {
34
+ if (block._type !== 'prose')
35
+ continue;
36
+ for (const node of block.body) {
37
+ if (!isTextBlock(node) || node.listItem !== undefined)
38
+ continue;
39
+ if (node.style !== 'h2' && node.style !== 'h3')
40
+ continue;
41
+ const label = plainText(node).trim();
42
+ if (label === '')
43
+ continue;
44
+ const base = slugify(label);
45
+ let id = base;
46
+ for (let suffix = 2; used.has(id); suffix += 1)
47
+ id = `${base}-${suffix}`;
48
+ used.add(id);
49
+ anchors.set(`${block._key}:${node._key}`, {
50
+ id,
51
+ text: label,
52
+ level: node.style === 'h2' ? 2 : 3,
53
+ });
54
+ }
55
+ }
56
+ return anchors;
57
+ }
58
+ // ---------------------------------------------------------------------------
59
+ // Shape detection
60
+ // ---------------------------------------------------------------------------
61
+ function hasOnlyMarks(span, allowed) {
62
+ return span.marks.every((mark) => allowed.includes(mark));
63
+ }
64
+ function isCodeBlock(node) {
65
+ return (isTextBlock(node) &&
66
+ node.style === 'normal' &&
67
+ node.listItem === undefined &&
68
+ node.children.length > 0 &&
69
+ node.children.every((span) => span.marks.includes('code') && hasOnlyMarks(span, ['code', 'strong'])));
70
+ }
71
+ const NOTE_LABEL = /^(note|tip|important|warning|caution)\s*[:.]?\s*$/i;
72
+ function calloutLabel(node) {
73
+ if (!isTextBlock(node) || node.style !== 'blockquote' || node.children.length < 2)
74
+ return null;
75
+ const first = node.children[0];
76
+ if (first === undefined || !first.marks.includes('strong'))
77
+ return null;
78
+ const match = NOTE_LABEL.exec(first.text.trim());
79
+ return match === null ? null : match[1];
80
+ }
81
+ function isReferenceItem(node) {
82
+ if (!isTextBlock(node) || node.listItem !== 'bullet' || (node.level ?? 1) !== 1)
83
+ return false;
84
+ const [first, ...rest] = node.children;
85
+ if (first === undefined || rest.length === 0)
86
+ return false;
87
+ if (first.marks.length !== 1 || first.marks[0] !== 'code' || first.text.includes('\n'))
88
+ return false;
89
+ return rest.some((span) => span.text.trim() !== '');
90
+ }
91
+ // ---------------------------------------------------------------------------
92
+ // Rendering helpers
93
+ // ---------------------------------------------------------------------------
94
+ /** The inline content of one text block, through theme-kit (marks and links resolved once). */
95
+ function inline(ctx, node, spans) {
96
+ const { listItem: _listItem, level: _level, ...paragraph } = node;
97
+ const [rendered] = renderRichText(ctx, [{ ...paragraph, style: 'normal', children: [...spans] }]);
98
+ return rendered !== undefined && rendered.kind === 'element' ? rendered.children : [];
99
+ }
100
+ /** Drops the separator an editor types after a label or a term. */
101
+ function trimLead(spans) {
102
+ const [first, ...rest] = spans;
103
+ if (first === undefined)
104
+ return spans;
105
+ return [{ ...first, text: first.text.replace(/^[\s:.\u2013\u2014-]+/u, '') }, ...rest];
106
+ }
107
+ function codeLines(source) {
108
+ const lines = source.replace(/^\n+|\n+$/g, '').split('\n');
109
+ const shell = lines.some((line) => line.startsWith('$ '));
110
+ const nodes = [];
111
+ // A command that ends in a backslash goes on to the next line.
112
+ let continued = false;
113
+ lines.forEach((line, index) => {
114
+ if (index > 0)
115
+ nodes.push(text('\n'));
116
+ const trimmed = line.trimStart();
117
+ const wasContinued = continued;
118
+ continued = shell && (wasContinued || line.startsWith('$ ')) && line.trimEnd().endsWith('\\');
119
+ if ((trimmed.startsWith('#') && !trimmed.startsWith('#!')) || trimmed.startsWith('//')) {
120
+ nodes.push(h('span', { class: 'cd-code__comment' }, line));
121
+ return;
122
+ }
123
+ if (shell && line.startsWith('$ ')) {
124
+ nodes.push(h('span', { class: 'cd-code__prompt', 'aria-hidden': 'true' }, '$ '), text(line.slice(2)));
125
+ return;
126
+ }
127
+ if (wasContinued) {
128
+ nodes.push(text(line));
129
+ return;
130
+ }
131
+ if (shell && line.trim() !== '') {
132
+ nodes.push(h('span', { class: 'cd-code__output' }, line));
133
+ return;
134
+ }
135
+ nodes.push(text(line));
136
+ });
137
+ return nodes;
138
+ }
139
+ function renderCodeBlock(node) {
140
+ const [first, ...rest] = node.children;
141
+ const labelled = first?.marks.includes('strong') === true && rest.length > 0 && !first.text.includes('\n');
142
+ const label = labelled ? first.text.trim() : '';
143
+ const source = (labelled ? rest : node.children).map((span) => span.text).join('');
144
+ const pre = h('pre', { class: 'cd-code__pre', tabindex: '0' }, h('code', {}, codeLines(source)));
145
+ if (label === '')
146
+ return h('div', { class: 'cd-code' }, pre);
147
+ return h('figure', { class: 'cd-code', 'data-labelled': 'true' }, h('figcaption', { class: 'cd-code__label' }, label), pre);
148
+ }
149
+ function renderCallout(ctx, node, label) {
150
+ const kind = /^(note|tip)$/i.test(label) ? 'note' : 'warning';
151
+ const normalised = label.charAt(0).toUpperCase() + label.slice(1).toLowerCase();
152
+ return h('div', { class: 'cd-callout', 'data-kind': kind, role: 'note' }, h('p', { class: 'cd-callout__label' }, normalised), h('p', { class: 'cd-callout__text' }, inline(ctx, node, trimLead(node.children.slice(1)))));
153
+ }
154
+ function renderReferenceTable(ctx, items) {
155
+ const rows = items.map((node) => {
156
+ const [term, ...rest] = node.children;
157
+ const meta = [];
158
+ let index = 0;
159
+ // A run of italic spans (whitespace between them allowed) right after the term.
160
+ while (index < rest.length) {
161
+ const span = rest[index];
162
+ if (span.marks.includes('em'))
163
+ meta.push({ ...span, marks: span.marks.filter((m) => m !== 'em') });
164
+ else if (span.text.trim() !== '' || meta.length === 0)
165
+ break;
166
+ index += 1;
167
+ }
168
+ const description = trimLead(rest.slice(index));
169
+ const lastMeta = meta[meta.length - 1];
170
+ if (lastMeta !== undefined) {
171
+ meta[meta.length - 1] = { ...lastMeta, text: lastMeta.text.replace(/[.,;\s]+$/u, '') };
172
+ }
173
+ return { node, term, meta: trimLead(meta), description };
174
+ });
175
+ const hasMeta = rows.some((row) => row.meta.length > 0);
176
+ return h('dl', { class: 'cd-ref', 'data-columns': hasMeta ? '3' : '2' }, rows.map((row) => h('div', { class: 'cd-ref__row' }, h('dt', { class: 'cd-ref__term' }, inline(ctx, row.node, [row.term])), hasMeta ? h('dd', { class: 'cd-ref__meta' }, inline(ctx, row.node, row.meta)) : null, h('dd', { class: 'cd-ref__desc' }, inline(ctx, row.node, row.description)))));
177
+ }
178
+ function usesLinks(node) {
179
+ return node.children.some((span) => span.marks.some((mark) => node.markDefs.some((d) => d._key === mark)));
180
+ }
181
+ function renderHeading(ctx, node, anchor) {
182
+ const content = inline(ctx, node, node.children);
183
+ // A heading that already holds a link cannot also be a link to itself.
184
+ if (usesLinks(node))
185
+ return h(node.style, { id: anchor.id, class: 'cd-rich__heading' }, content);
186
+ return h(node.style, { id: anchor.id, class: 'cd-rich__heading' }, h('a', { class: 'cd-anchor', href: `#${anchor.id}` }, content));
187
+ }
188
+ // ---------------------------------------------------------------------------
189
+ // Keys
190
+ // ---------------------------------------------------------------------------
191
+ const NAMED_KEYS = new Set([
192
+ 'ctrl',
193
+ 'control',
194
+ 'cmd',
195
+ 'command',
196
+ 'alt',
197
+ 'option',
198
+ 'opt',
199
+ 'shift',
200
+ 'enter',
201
+ 'return',
202
+ 'esc',
203
+ 'escape',
204
+ 'tab',
205
+ 'space',
206
+ 'backspace',
207
+ 'delete',
208
+ 'up',
209
+ 'down',
210
+ 'left',
211
+ 'right',
212
+ 'pageup',
213
+ 'pagedown',
214
+ '⌘',
215
+ '⌥',
216
+ '⇧',
217
+ '⌃',
218
+ ]);
219
+ const LONE_KEYS = new Set([
220
+ 'enter',
221
+ 'return',
222
+ 'esc',
223
+ 'escape',
224
+ 'tab',
225
+ 'backspace',
226
+ ]);
227
+ const FUNCTION_KEY = /^f([1-9]|1[0-2])$/i;
228
+ const CHARACTER_KEY = /^[A-Za-z0-9/.,;=\-[\]]$/;
229
+ export function keyChord(value) {
230
+ const parts = value.split('+');
231
+ if (parts.some((part) => part.trim() === ''))
232
+ return null;
233
+ const keys = parts.map((part) => part.trim());
234
+ const named = (key) => NAMED_KEYS.has(key.toLowerCase()) || FUNCTION_KEY.test(key);
235
+ if (!keys.every((key) => named(key) || CHARACTER_KEY.test(key)))
236
+ return null;
237
+ if (keys.length === 1) {
238
+ const [only] = keys;
239
+ return LONE_KEYS.has(only.toLowerCase()) || FUNCTION_KEY.test(only) ? keys : null;
240
+ }
241
+ return keys.some(named) ? keys : null;
242
+ }
243
+ function withKeys(nodes) {
244
+ return nodes.map((node) => {
245
+ if (node.kind !== 'element' || node.tag === 'pre')
246
+ return node;
247
+ const only = node.children.length === 1 ? node.children[0] : undefined;
248
+ if (node.tag === 'code' && only !== undefined && only.kind === 'text') {
249
+ const chord = keyChord(only.value);
250
+ if (chord !== null) {
251
+ const parts = [];
252
+ chord.forEach((key, index) => {
253
+ if (index > 0)
254
+ parts.push(text('+'));
255
+ parts.push(h('kbd', {}, key));
256
+ });
257
+ return h('kbd', { class: 'cd-kbd' }, parts);
258
+ }
259
+ }
260
+ return { ...node, children: withKeys(node.children) };
261
+ });
262
+ }
263
+ export function renderDocsRichText(ctx, document, options = {}) {
264
+ const out = [];
265
+ let run = [];
266
+ const flush = () => {
267
+ if (run.length > 0)
268
+ out.push(...renderRichText(ctx, run));
269
+ run = [];
270
+ };
271
+ let index = 0;
272
+ while (index < document.length) {
273
+ const node = document[index];
274
+ if (isTextBlock(node) && isCodeBlock(node)) {
275
+ flush();
276
+ out.push(renderCodeBlock(node));
277
+ index += 1;
278
+ continue;
279
+ }
280
+ const label = calloutLabel(node);
281
+ if (label !== null && isTextBlock(node)) {
282
+ flush();
283
+ out.push(renderCallout(ctx, node, label));
284
+ index += 1;
285
+ continue;
286
+ }
287
+ if (isTextBlock(node) &&
288
+ node.listItem === undefined &&
289
+ (node.style === 'h2' || node.style === 'h3')) {
290
+ const anchor = options.anchors?.map.get(`${options.anchors.blockKey}:${node._key}`);
291
+ if (anchor !== undefined) {
292
+ flush();
293
+ out.push(renderHeading(ctx, node, anchor));
294
+ index += 1;
295
+ continue;
296
+ }
297
+ }
298
+ if (isTextBlock(node) && node.listItem === 'bullet') {
299
+ // The whole run of consecutive bullet items decides together: a list is
300
+ // a reference table only if every one of its items has the shape.
301
+ let end = index;
302
+ while (end < document.length) {
303
+ const candidate = document[end];
304
+ if (!isTextBlock(candidate) || candidate.listItem !== 'bullet')
305
+ break;
306
+ end += 1;
307
+ }
308
+ const items = document.slice(index, end);
309
+ if (items.every(isReferenceItem)) {
310
+ flush();
311
+ out.push(renderReferenceTable(ctx, items));
312
+ }
313
+ else {
314
+ run.push(...items);
315
+ }
316
+ index = end;
317
+ continue;
318
+ }
319
+ run.push(node);
320
+ index += 1;
321
+ }
322
+ flush();
323
+ return withKeys(out);
324
+ }
325
+ //# sourceMappingURL=rich-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rich-text.js","sourceRoot":"","sources":["../../../src/render/rich-text.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { type HtmlElement } from '@cogenta/theme-kit';
2
+ /**
3
+ * The search field: a real `GET /search?q=` form, answered by the host's own
4
+ * search page (`cogenta serve`), so it works without a line of client
5
+ * JavaScript. One input, submitted with Enter; the label is visually hidden
6
+ * because the magnifier and the placeholder already say what the field is,
7
+ * and a screen reader still hears the full name.
8
+ *
9
+ * Two sizes: compact in the header, large at the top of the home page. Each
10
+ * copy on a page has its own `id`, so every label points at its own input.
11
+ */
12
+ export declare const SEARCH_PATH = "/search";
13
+ export type SearchSize = 'compact' | 'large';
14
+ export declare function renderSearchForm(locale: string, id: string, size: SearchSize): HtmlElement;
15
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/render/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,oBAAoB,CAAA;AAGpE;;;;;;;;;GASG;AAEH,eAAO,MAAM,WAAW,YAAY,CAAA;AAEpC,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,CAAA;AAE5C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,WAAW,CAsB1F"}
@@ -0,0 +1,31 @@
1
+ import { h, renderIcon } from '@cogenta/theme-kit';
2
+ import { word } from './strings.js';
3
+ /**
4
+ * The search field: a real `GET /search?q=` form, answered by the host's own
5
+ * search page (`cogenta serve`), so it works without a line of client
6
+ * JavaScript. One input, submitted with Enter; the label is visually hidden
7
+ * because the magnifier and the placeholder already say what the field is,
8
+ * and a screen reader still hears the full name.
9
+ *
10
+ * Two sizes: compact in the header, large at the top of the home page. Each
11
+ * copy on a page has its own `id`, so every label points at its own input.
12
+ */
13
+ export const SEARCH_PATH = '/search';
14
+ export function renderSearchForm(locale, id, size) {
15
+ return h('form', {
16
+ class: size === 'large' ? 'cd-search cd-search--large' : 'cd-search',
17
+ action: SEARCH_PATH,
18
+ method: 'get',
19
+ role: 'search',
20
+ }, h('label', { class: 'cg-visually-hidden', for: id }, word(locale, 'searchLabel')), renderIcon('search', { className: 'cd-search__icon', size: 20 }), h('input', {
21
+ id,
22
+ class: 'cd-search__input',
23
+ type: 'search',
24
+ name: 'q',
25
+ placeholder: word(locale, 'searchPlaceholder'),
26
+ autocomplete: 'off',
27
+ spellcheck: 'false',
28
+ required: true,
29
+ }));
30
+ }
31
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/render/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,CAAC,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAEnC;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAA;AAIpC,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,EAAU,EAAE,IAAgB;IAC3E,OAAO,CAAC,CACN,MAAM,EACN;QACE,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,WAAW;QACpE,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,QAAQ;KACf,EACD,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EACjF,UAAU,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAChE,CAAC,CAAC,OAAO,EAAE;QACT,EAAE;QACF,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC;QAC9C,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,OAAO;QACnB,QAAQ,EAAE,IAAI;KACf,CAAC,CACH,CAAA;AACH,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * The handful of visitor-facing words this theme prints on its own, beyond
3
+ * `THEME_STRINGS` (`@cogenta/theme-kit`): the search field, the navigation
4
+ * disclosures, the table of contents, previous and next, the date a page was
5
+ * last changed. Two languages, like the shared table, and English for
6
+ * anything else.
7
+ */
8
+ declare const STRINGS: {
9
+ readonly en: {
10
+ readonly search: 'Search';
11
+ readonly searchLabel: 'Search the documentation';
12
+ readonly searchPlaceholder: 'Search the documentation';
13
+ readonly menu: 'Menu';
14
+ readonly documentation: 'Documentation';
15
+ readonly docsHome: 'Docs';
16
+ readonly breadcrumb: 'Breadcrumb';
17
+ readonly onThisPage: 'On this page';
18
+ readonly pager: 'Previous and next pages';
19
+ readonly previous: 'Previous';
20
+ readonly next: 'Next';
21
+ readonly lastUpdated: 'Last updated';
22
+ readonly recommended: 'Recommended';
23
+ readonly primary: 'Primary';
24
+ readonly footer: 'Footer';
25
+ };
26
+ readonly fr: {
27
+ readonly search: 'Rechercher';
28
+ readonly searchLabel: 'Rechercher dans la documentation';
29
+ readonly searchPlaceholder: 'Rechercher dans la documentation';
30
+ readonly menu: 'Menu';
31
+ readonly documentation: 'Documentation';
32
+ readonly docsHome: 'Docs';
33
+ readonly breadcrumb: 'Fil d’Ariane';
34
+ readonly onThisPage: 'Sur cette page';
35
+ readonly pager: 'Pages précédente et suivante';
36
+ readonly previous: 'Précédent';
37
+ readonly next: 'Suivant';
38
+ readonly lastUpdated: 'Dernière mise à jour';
39
+ readonly recommended: 'Recommandé';
40
+ readonly primary: 'Principale';
41
+ readonly footer: 'Pied de page';
42
+ };
43
+ };
44
+ export type ThemeWord = keyof (typeof STRINGS)['en'];
45
+ export declare function word(locale: string, key: ThemeWord): string;
46
+ export declare function splitSiteName(name: string): {
47
+ readonly product: string;
48
+ readonly suffix: string | null;
49
+ };
50
+ export {};
51
+ //# sourceMappingURL=strings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../../../src/render/strings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,QAAA,MAAM,OAAO;aACX,EAAE;iBACA,MAAM,EAAE,QAAQ;iBAChB,WAAW,EAAE,0BAA0B;iBACvC,iBAAiB,EAAE,0BAA0B;iBAC7C,IAAI,EAAE,MAAM;iBACZ,aAAa,EAAE,eAAe;iBAC9B,QAAQ,EAAE,MAAM;iBAChB,UAAU,EAAE,YAAY;iBACxB,UAAU,EAAE,cAAc;iBAC1B,KAAK,EAAE,yBAAyB;iBAChC,QAAQ,EAAE,UAAU;iBACpB,IAAI,EAAE,MAAM;iBACZ,WAAW,EAAE,cAAc;iBAC3B,WAAW,EAAE,aAAa;iBAC1B,OAAO,EAAE,SAAS;iBAClB,MAAM,EAAE,QAAQ;;aAElB,EAAE;iBACA,MAAM,EAAE,YAAY;iBACpB,WAAW,EAAE,kCAAkC;iBAC/C,iBAAiB,EAAE,kCAAkC;iBACrD,IAAI,EAAE,MAAM;iBACZ,aAAa,EAAE,eAAe;iBAC9B,QAAQ,EAAE,MAAM;iBAChB,UAAU,EAAE,cAAc;iBAC1B,UAAU,EAAE,gBAAgB;iBAC5B,KAAK,EAAE,8BAA8B;iBACrC,QAAQ,EAAE,WAAW;iBACrB,IAAI,EAAE,SAAS;iBACf,WAAW,EAAE,sBAAsB;iBACnC,WAAW,EAAE,YAAY;iBACzB,OAAO,EAAE,YAAY;iBACrB,MAAM,EAAE,cAAc;;CAEhB,CAAA;AAEV,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,OAAO,CAAC,CAAC,IAAI,CAAC,CAAA;AAEpD,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,MAAM,CAG3D;AASD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B,CAIA"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * The handful of visitor-facing words this theme prints on its own, beyond
3
+ * `THEME_STRINGS` (`@cogenta/theme-kit`): the search field, the navigation
4
+ * disclosures, the table of contents, previous and next, the date a page was
5
+ * last changed. Two languages, like the shared table, and English for
6
+ * anything else.
7
+ */
8
+ const STRINGS = {
9
+ en: {
10
+ search: 'Search',
11
+ searchLabel: 'Search the documentation',
12
+ searchPlaceholder: 'Search the documentation',
13
+ menu: 'Menu',
14
+ documentation: 'Documentation',
15
+ docsHome: 'Docs',
16
+ breadcrumb: 'Breadcrumb',
17
+ onThisPage: 'On this page',
18
+ pager: 'Previous and next pages',
19
+ previous: 'Previous',
20
+ next: 'Next',
21
+ lastUpdated: 'Last updated',
22
+ recommended: 'Recommended',
23
+ primary: 'Primary',
24
+ footer: 'Footer',
25
+ },
26
+ fr: {
27
+ search: 'Rechercher',
28
+ searchLabel: 'Rechercher dans la documentation',
29
+ searchPlaceholder: 'Rechercher dans la documentation',
30
+ menu: 'Menu',
31
+ documentation: 'Documentation',
32
+ docsHome: 'Docs',
33
+ breadcrumb: 'Fil d’Ariane',
34
+ onThisPage: 'Sur cette page',
35
+ pager: 'Pages précédente et suivante',
36
+ previous: 'Précédent',
37
+ next: 'Suivant',
38
+ lastUpdated: 'Dernière mise à jour',
39
+ recommended: 'Recommandé',
40
+ primary: 'Principale',
41
+ footer: 'Pied de page',
42
+ },
43
+ };
44
+ export function word(locale, key) {
45
+ const language = locale.toLowerCase().split(/[-_]/)[0];
46
+ return language === 'fr' ? STRINGS.fr[key] : STRINGS.en[key];
47
+ }
48
+ /**
49
+ * A documentation site is usually named "<product> Docs". The header sets the
50
+ * product in ink and the word that says what the site is in the quieter grey,
51
+ * and the copyright line names the product, not the word "Docs".
52
+ */
53
+ const DOCS_SUFFIX = /^(.+?)\s+(docs|documentation|developer docs|developers|dev docs)$/i;
54
+ export function splitSiteName(name) {
55
+ const match = DOCS_SUFFIX.exec(name.trim());
56
+ if (match === null)
57
+ return { product: name.trim(), suffix: null };
58
+ return { product: match[1], suffix: match[2] };
59
+ }
60
+ //# sourceMappingURL=strings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strings.js","sourceRoot":"","sources":["../../../src/render/strings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,OAAO,GAAG;IACd,EAAE,EAAE;QACF,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,0BAA0B;QACvC,iBAAiB,EAAE,0BAA0B;QAC7C,IAAI,EAAE,MAAM;QACZ,aAAa,EAAE,eAAe;QAC9B,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,YAAY;QACxB,UAAU,EAAE,cAAc;QAC1B,KAAK,EAAE,yBAAyB;QAChC,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,cAAc;QAC3B,WAAW,EAAE,aAAa;QAC1B,OAAO,EAAE,SAAS;QAClB,MAAM,EAAE,QAAQ;KACjB;IACD,EAAE,EAAE;QACF,MAAM,EAAE,YAAY;QACpB,WAAW,EAAE,kCAAkC;QAC/C,iBAAiB,EAAE,kCAAkC;QACrD,IAAI,EAAE,MAAM;QACZ,aAAa,EAAE,eAAe;QAC9B,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,cAAc;QAC1B,UAAU,EAAE,gBAAgB;QAC5B,KAAK,EAAE,8BAA8B;QACrC,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,sBAAsB;QACnC,WAAW,EAAE,YAAY;QACzB,OAAO,EAAE,YAAY;QACrB,MAAM,EAAE,cAAc;KACvB;CACO,CAAA;AAIV,MAAM,UAAU,IAAI,CAAC,MAAc,EAAE,GAAc;IACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACtD,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,WAAW,GAAG,oEAAoE,CAAA;AAExF,MAAM,UAAU,aAAa,CAAC,IAAY;IAIxC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAC3C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;IACjE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAW,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAW,EAAE,CAAA;AACpE,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import { type HtmlElement, type TermArchiveInput } from '@cogenta/theme-kit';
2
2
  /**
3
- * The taxonomy-term archive (contract D `theme@1.3`) — a simple titled list,
4
- * deliberately: a documentation site's own information architecture is the
5
- * sidebar (`section`/`order`, plain fields), not a taxonomy, so this page is
6
- * the plain fallback for a term an editor still chooses to classify content
7
- * under, not a second navigation surface competing with the sidebar.
3
+ * The taxonomy-term archive (contract D `theme@1.3`): a titled index of
4
+ * ruled rows on the reading width. A documentation site's own information
5
+ * architecture is the sidebar (`section` and `order`), not a taxonomy, so
6
+ * this page is the plain, well-set fallback for a term an editor still
7
+ * classifies pages under, not a second navigation competing with it.
8
8
  */
9
9
  export declare function renderTermArchive(input: TermArchiveInput): HtmlElement;
10
10
  //# sourceMappingURL=term-archive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"term-archive.d.ts","sourceRoot":"","sources":["../../../src/render/term-archive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAK,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE/E;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,CAsDtE"}
1
+ {"version":3,"file":"term-archive.d.ts","sourceRoot":"","sources":["../../../src/render/term-archive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAK,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAG/E;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,CA2DtE"}
@@ -1,32 +1,43 @@
1
1
  import { h } from '@cogenta/theme-kit';
2
+ import { longDate } from './layout.js';
2
3
  /**
3
- * The taxonomy-term archive (contract D `theme@1.3`) — a simple titled list,
4
- * deliberately: a documentation site's own information architecture is the
5
- * sidebar (`section`/`order`, plain fields), not a taxonomy, so this page is
6
- * the plain fallback for a term an editor still chooses to classify content
7
- * under, not a second navigation surface competing with the sidebar.
4
+ * The taxonomy-term archive (contract D `theme@1.3`): a titled index of
5
+ * ruled rows on the reading width. A documentation site's own information
6
+ * architecture is the sidebar (`section` and `order`), not a taxonomy, so
7
+ * this page is the plain, well-set fallback for a term an editor still
8
+ * classifies pages under, not a second navigation competing with it.
8
9
  */
9
10
  export function renderTermArchive(input) {
10
- const rows = input.entries.map((entry) => h('li', { class: 'cg-list__row' }, h('div', { class: 'cg-list__body' }, h('h2', { class: 'cg-list__title' }, entry.href === null
11
+ const rows = input.entries.map((entry) => h('li', { class: 'cd-index__item' }, h('div', { class: 'cd-index__words' }, h('h2', { class: 'cd-index__title' }, entry.href === null
11
12
  ? entry.title
12
- : h('a', { class: 'cg-list__link', href: entry.href }, entry.title)), entry.summary === null ? null : h('p', { class: 'cg-list__excerpt' }, entry.summary)), entry.publishedAt === null
13
+ : h('a', { class: 'cd-index__link', href: entry.href }, entry.title)), entry.summary === null ? null : h('p', { class: 'cd-index__text' }, entry.summary)), entry.publishedAt === null
13
14
  ? null
14
- : h('time', { class: 'cg-list__date', datetime: entry.publishedAt }, entry.publishedAt.slice(0, 10))));
15
- return h('main', { class: 'cg-main cg-archive', id: 'cg-main' }, input.ancestors.length === 0
15
+ : h('time', { class: 'cd-index__date', datetime: entry.publishedAt }, longDate(entry.publishedAt, input.locale))));
16
+ return h('main', { class: 'cg-main cd-archive', id: 'cg-main' }, h('div', { class: 'cd-archive__inner' }, input.ancestors.length === 0
16
17
  ? null
17
- : h('nav', { class: 'cg-archive__breadcrumb', 'aria-label': input.labels.breadcrumb }, h('ol', {}, ...input.ancestors.map((l) => h('li', {}, h('a', { href: l.href }, l.label))))), h('h1', { class: 'cg-page__title' }, input.term.label), input.children.length === 0
18
+ : h('nav', { class: 'cd-breadcrumb', 'aria-label': input.labels.breadcrumb }, h('ol', { class: 'cd-breadcrumb__items' }, input.ancestors.map((link) => h('li', {}, h('a', { href: link.href }, link.label))), h('li', { 'aria-current': 'page' }, input.term.label))), h('h1', { class: 'cd-archive__title' }, input.term.label), input.children.length === 0
18
19
  ? null
19
- : h('ul', { class: 'cg-archive__children', 'aria-label': input.labels.subterms }, ...input.children.map((c) => h('li', {}, h('a', { href: c.href }, c.label)))), rows.length === 0
20
- ? h('p', { class: 'cg-list__empty' }, input.labels.empty)
21
- : h('ul', { class: 'cg-list__items' }, ...rows), pager(input));
20
+ : h('ul', { class: 'cd-archive__children', 'aria-label': input.labels.subterms }, input.children.map((child) => h('li', {}, h('a', { href: child.href }, child.label)))), rows.length === 0
21
+ ? h('p', { class: 'cd-empty' }, input.labels.empty)
22
+ : h('ul', { class: 'cd-index' }, rows), pager(input)));
22
23
  }
23
24
  function pager(input) {
24
25
  if (input.page.previousHref === null && input.page.nextHref === null)
25
26
  return null;
26
- return h('nav', { class: 'cg-archive__pager', 'aria-label': input.labels.pagination }, input.page.previousHref === null
27
+ return h('nav', { class: 'cd-pager', 'aria-label': input.labels.pagination }, input.page.previousHref === null
27
28
  ? null
28
- : h('a', { rel: 'prev', href: input.page.previousHref }, input.labels.previous), input.page.nextHref === null
29
+ : h('a', {
30
+ class: 'cd-pager__link',
31
+ 'data-direction': 'previous',
32
+ rel: 'prev',
33
+ href: input.page.previousHref,
34
+ }, h('span', { class: 'cd-pager__title' }, input.labels.previous)), input.page.nextHref === null
29
35
  ? null
30
- : h('a', { rel: 'next', href: input.page.nextHref }, input.labels.next));
36
+ : h('a', {
37
+ class: 'cd-pager__link',
38
+ 'data-direction': 'next',
39
+ rel: 'next',
40
+ href: input.page.nextHref,
41
+ }, h('span', { class: 'cd-pager__title' }, input.labels.next)));
31
42
  }
32
43
  //# sourceMappingURL=term-archive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"term-archive.js","sourceRoot":"","sources":["../../../src/render/term-archive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"term-archive.js","sourceRoot":"","sources":["../../../src/render/term-archive.ts"],"names":[],"mappings":"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"}