@bestagentkits/render 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +119 -0
- package/README.md +189 -34
- package/assets/fonts/bricolage-grotesque/OFL.txt +93 -0
- package/assets/fonts/fraunces/OFL.txt +93 -0
- package/assets/fonts/geist/OFL.txt +93 -0
- package/assets/fonts/inter-tight/OFL.txt +93 -0
- package/assets/fonts/jetbrains-mono/OFL.txt +93 -0
- package/assets/fonts/plus-jakarta-sans/OFL.txt +93 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +51 -10
- package/dist/cli.js.map +1 -1
- package/dist/mcp-server.d.ts +37 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +274 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/registry/roster.d.ts +1 -1
- package/dist/registry/roster.d.ts.map +1 -1
- package/dist/registry/roster.js +222 -6
- package/dist/registry/roster.js.map +1 -1
- package/dist/render/block-helpers.d.ts +52 -0
- package/dist/render/block-helpers.d.ts.map +1 -0
- package/dist/render/block-helpers.js +113 -0
- package/dist/render/block-helpers.js.map +1 -0
- package/dist/render/blocks.d.ts +3 -4
- package/dist/render/blocks.d.ts.map +1 -1
- package/dist/render/blocks.js +126 -121
- package/dist/render/blocks.js.map +1 -1
- package/dist/render/charts.d.ts +5 -0
- package/dist/render/charts.d.ts.map +1 -1
- package/dist/render/charts.js +205 -90
- package/dist/render/charts.js.map +1 -1
- package/dist/render/derived-variables.d.ts +17 -0
- package/dist/render/derived-variables.d.ts.map +1 -0
- package/dist/render/derived-variables.js +17 -0
- package/dist/render/derived-variables.js.map +1 -0
- package/dist/render/diagram-fallback.d.ts +25 -0
- package/dist/render/diagram-fallback.d.ts.map +1 -0
- package/dist/render/diagram-fallback.js +86 -0
- package/dist/render/diagram-fallback.js.map +1 -0
- package/dist/render/document.d.ts +4 -0
- package/dist/render/document.d.ts.map +1 -1
- package/dist/render/document.js +34 -6
- package/dist/render/document.js.map +1 -1
- package/dist/render/effects-styles.d.ts +14 -0
- package/dist/render/effects-styles.d.ts.map +1 -0
- package/dist/render/effects-styles.js +39 -0
- package/dist/render/effects-styles.js.map +1 -0
- package/dist/render/embedded-fonts.generated.d.ts +22 -0
- package/dist/render/embedded-fonts.generated.d.ts.map +1 -0
- package/dist/render/embedded-fonts.generated.js +59 -0
- package/dist/render/embedded-fonts.generated.js.map +1 -0
- package/dist/render/feature-styles.d.ts +14 -0
- package/dist/render/feature-styles.d.ts.map +1 -0
- package/dist/render/feature-styles.js +161 -0
- package/dist/render/feature-styles.js.map +1 -0
- package/dist/render/font-faces.d.ts +22 -0
- package/dist/render/font-faces.d.ts.map +1 -0
- package/dist/render/font-faces.js +60 -0
- package/dist/render/font-faces.js.map +1 -0
- package/dist/render/outline.d.ts +21 -0
- package/dist/render/outline.d.ts.map +1 -0
- package/dist/render/outline.js +44 -0
- package/dist/render/outline.js.map +1 -0
- package/dist/render/render.d.ts.map +1 -1
- package/dist/render/render.js +53 -10
- package/dist/render/render.js.map +1 -1
- package/dist/render/runtime.d.ts.map +1 -1
- package/dist/render/runtime.js +184 -10
- package/dist/render/runtime.js.map +1 -1
- package/dist/render/showcase-blocks.d.ts +47 -0
- package/dist/render/showcase-blocks.d.ts.map +1 -0
- package/dist/render/showcase-blocks.js +349 -0
- package/dist/render/showcase-blocks.js.map +1 -0
- package/dist/render/showcase-styles.d.ts +15 -0
- package/dist/render/showcase-styles.d.ts.map +1 -0
- package/dist/render/showcase-styles.js +217 -0
- package/dist/render/showcase-styles.js.map +1 -0
- package/dist/render/signature-styles.d.ts +18 -0
- package/dist/render/signature-styles.d.ts.map +1 -0
- package/dist/render/signature-styles.js +41 -0
- package/dist/render/signature-styles.js.map +1 -0
- package/dist/render/styles.d.ts +18 -9
- package/dist/render/styles.d.ts.map +1 -1
- package/dist/render/styles.js +224 -128
- package/dist/render/styles.js.map +1 -1
- package/dist/render/surface-styles.d.ts +24 -0
- package/dist/render/surface-styles.d.ts.map +1 -0
- package/dist/render/surface-styles.js +41 -0
- package/dist/render/surface-styles.js.map +1 -0
- package/dist/render/verify.d.ts.map +1 -1
- package/dist/render/verify.js +30 -0
- package/dist/render/verify.js.map +1 -1
- package/dist/spec/normalize.d.ts.map +1 -1
- package/dist/spec/normalize.js +32 -0
- package/dist/spec/normalize.js.map +1 -1
- package/dist/theme/load-theme.d.ts +2 -2
- package/dist/theme/load-theme.d.ts.map +1 -1
- package/dist/theme/load-theme.js +46 -10
- package/dist/theme/load-theme.js.map +1 -1
- package/dist/theme/presets.d.ts +4 -3
- package/dist/theme/presets.d.ts.map +1 -1
- package/dist/theme/presets.js +35 -18
- package/dist/theme/presets.js.map +1 -1
- package/dist/theme/tokens.d.ts.map +1 -1
- package/dist/theme/tokens.js +4 -4
- package/dist/theme/tokens.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/llms.txt +25 -0
- package/package.json +9 -3
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Showcase block renderers.
|
|
3
|
+
*
|
|
4
|
+
* Blocks that present work rather than structure it: a bento mosaic, a ticker,
|
|
5
|
+
* a terminal session, a file tree, a before/after slider, KPI cards with
|
|
6
|
+
* sparklines, a framed feature spotlight, and a checklist.
|
|
7
|
+
*
|
|
8
|
+
* The same rules as `blocks.ts` apply: pure functions of the node and the IR,
|
|
9
|
+
* exactly one `data-ak-id` per block, no style attributes or handlers. Every
|
|
10
|
+
* motion these blocks get comes from CSS or the runtime, and the markup is
|
|
11
|
+
* complete without either, so the content reads the same in a PDF, a
|
|
12
|
+
* screenshot, or with script disabled.
|
|
13
|
+
*/
|
|
14
|
+
import { isPlainObject } from '../json.js';
|
|
15
|
+
import { blockedReason, element, figureCaption, listProp, nodeAttributes, numberProp, numProp, objectListProp, resolveMedia, str, stringProp, titleHeader, } from './block-helpers.js';
|
|
16
|
+
import { escapeAttribute, escapeText, escapeUrl, renderAttributes } from './escape.js';
|
|
17
|
+
/** An image allowed by the policy, or an honest note when it is not. */
|
|
18
|
+
function framedImage(source, alt, policy, loading = 'lazy') {
|
|
19
|
+
const resolved = resolveMedia(source, policy, 'images');
|
|
20
|
+
if (!resolved.allowed) {
|
|
21
|
+
// The alt text still describes the picture, so it leads the note.
|
|
22
|
+
const subject = alt === '' ? '' : `<strong>${escapeText(alt)}</strong>. `;
|
|
23
|
+
return `<p class="ak-caption">${subject}Remote image not loaded: ${blockedReason(policy, 'images')}. <a href="${escapeAttribute(resolved.src)}" rel="noreferrer noopener">Open image</a></p>`;
|
|
24
|
+
}
|
|
25
|
+
return `<img src="${escapeAttribute(resolved.src)}" alt="${escapeAttribute(alt)}" loading="${loading}" decoding="async" />`;
|
|
26
|
+
}
|
|
27
|
+
/** Browser chrome (decorative) around an image: the bar, then the viewport. */
|
|
28
|
+
export function browserShot(source, alt, address, policy, loading = 'lazy') {
|
|
29
|
+
const bar = `<div class="ak-frame-bar" aria-hidden="true"><span class="ak-window-dots"><span></span><span></span><span></span></span>${address === '' ? '' : `<span class="ak-frame-address">${escapeText(address)}</span>`}</div>`;
|
|
30
|
+
return `${bar}<div class="ak-frame-view">${framedImage(source, alt, policy, loading)}</div>`;
|
|
31
|
+
}
|
|
32
|
+
function paragraph(className, text) {
|
|
33
|
+
return text === '' ? '' : `<p class="${className}">${escapeText(text)}</p>`;
|
|
34
|
+
}
|
|
35
|
+
// --- bento ------------------------------------------------------------------
|
|
36
|
+
const TILE_SIZES = new Set(['small', 'wide', 'tall', 'large']);
|
|
37
|
+
function bento(node, context) {
|
|
38
|
+
const tiles = objectListProp(node, 'items').map((item) => {
|
|
39
|
+
const size = TILE_SIZES.has(str(item.size)) ? str(item.size) : 'small';
|
|
40
|
+
const source = str(item.src);
|
|
41
|
+
const media = source === ''
|
|
42
|
+
? ''
|
|
43
|
+
: `<div class="ak-tile-media">${framedImage(source, str(item.alt), context.ir.policy.network)}</div>`;
|
|
44
|
+
const body = [
|
|
45
|
+
paragraph('ak-eyebrow', str(item.eyebrow)),
|
|
46
|
+
paragraph('ak-tile-value', str(item.value)),
|
|
47
|
+
paragraph('ak-tile-title', str(item.title)),
|
|
48
|
+
paragraph('ak-tile-text', str(item.text)),
|
|
49
|
+
].join('');
|
|
50
|
+
return `<li${renderAttributes({
|
|
51
|
+
class: 'ak-tile',
|
|
52
|
+
'data-size': size,
|
|
53
|
+
'data-media': source === '' ? undefined : 'true',
|
|
54
|
+
})}>${media}<div class="ak-tile-body">${body}</div></li>`;
|
|
55
|
+
});
|
|
56
|
+
return element('section', nodeAttributes(node, { class: 'ak-block ak-bento-block' }), `${titleHeader(node)}<ul class="ak-bento">${tiles.join('')}</ul>`);
|
|
57
|
+
}
|
|
58
|
+
// --- marquee ----------------------------------------------------------------
|
|
59
|
+
function marquee(node) {
|
|
60
|
+
const items = listProp(node, 'items').filter((item) => typeof item === 'string');
|
|
61
|
+
const entries = items.map((item) => `<li>${escapeText(item)}</li>`).join('');
|
|
62
|
+
const speed = stringProp(node, 'speed', 'normal');
|
|
63
|
+
// The first track is the real list. The second repeats it so the loop has no
|
|
64
|
+
// seam; it is hidden from assistive technology and only shown while moving.
|
|
65
|
+
return element('section', nodeAttributes(node, {
|
|
66
|
+
class: 'ak-block ak-marquee',
|
|
67
|
+
'data-speed': ['slow', 'normal', 'fast'].includes(speed) ? speed : 'normal',
|
|
68
|
+
'aria-label': stringProp(node, 'label', 'Highlights'),
|
|
69
|
+
}), `<div class="ak-marquee-viewport"><ul class="ak-marquee-track">${entries}</ul><ul class="ak-marquee-track" aria-hidden="true">${entries}</ul></div>`);
|
|
70
|
+
}
|
|
71
|
+
// --- terminal ---------------------------------------------------------------
|
|
72
|
+
const LINE_KINDS = new Set(['command', 'output', 'comment', 'success', 'error']);
|
|
73
|
+
function terminal(node) {
|
|
74
|
+
const title = stringProp(node, 'title', 'Terminal');
|
|
75
|
+
const lines = objectListProp(node, 'lines').map((line) => {
|
|
76
|
+
const kind = LINE_KINDS.has(str(line.kind)) ? str(line.kind) : 'output';
|
|
77
|
+
return `<span class="ak-term-line" data-kind="${kind}">${escapeText(str(line.text))}</span>`;
|
|
78
|
+
});
|
|
79
|
+
const copy = renderAttributes({
|
|
80
|
+
'data-ak-on-click': JSON.stringify([{ action: 'copy', target: node.id }]),
|
|
81
|
+
'aria-label': `Copy ${title}`,
|
|
82
|
+
});
|
|
83
|
+
// The whole bar is the figure's caption, so the caption is a direct child of
|
|
84
|
+
// the figure. The figure is named by the title alone, not the copy control.
|
|
85
|
+
return [
|
|
86
|
+
`<figure class="ak-block ak-terminal" aria-label="${escapeAttribute(title)}" data-ak-animate>`,
|
|
87
|
+
'<figcaption class="ak-terminal-bar">',
|
|
88
|
+
'<span class="ak-window-dots" aria-hidden="true"><span></span><span></span><span></span></span>',
|
|
89
|
+
`<span class="ak-terminal-title">${escapeText(title)}</span>`,
|
|
90
|
+
`<button type="button" class="ak-code-copy"${copy}>Copy</button>`,
|
|
91
|
+
'</figcaption>',
|
|
92
|
+
`<pre${renderAttributes({ 'data-ak-id': node.id, class: 'ak-terminal-body' })}>${lines.join('\n')}</pre>`,
|
|
93
|
+
'</figure>',
|
|
94
|
+
].join('');
|
|
95
|
+
}
|
|
96
|
+
// --- file tree --------------------------------------------------------------
|
|
97
|
+
const FILE_STATUSES = new Set(['added', 'modified', 'deleted', 'renamed', 'unchanged']);
|
|
98
|
+
function newDir(name) {
|
|
99
|
+
return { name, dirs: new Map(), files: [] };
|
|
100
|
+
}
|
|
101
|
+
/** Build a folder tree from slash-separated paths; a trailing slash names an empty folder. */
|
|
102
|
+
export function buildFileTree(items) {
|
|
103
|
+
const root = newDir('');
|
|
104
|
+
for (const item of items) {
|
|
105
|
+
const parts = str(item.path)
|
|
106
|
+
.split('/')
|
|
107
|
+
.map((part) => part.trim())
|
|
108
|
+
.filter((part) => part !== '' && part !== '.');
|
|
109
|
+
const isFolder = str(item.path).endsWith('/');
|
|
110
|
+
let cursor = root;
|
|
111
|
+
const folders = isFolder ? parts : parts.slice(0, -1);
|
|
112
|
+
for (const part of folders) {
|
|
113
|
+
let next = cursor.dirs.get(part);
|
|
114
|
+
if (next === undefined) {
|
|
115
|
+
next = newDir(part);
|
|
116
|
+
cursor.dirs.set(part, next);
|
|
117
|
+
}
|
|
118
|
+
cursor = next;
|
|
119
|
+
}
|
|
120
|
+
const name = parts[parts.length - 1];
|
|
121
|
+
if (!isFolder && name !== undefined) {
|
|
122
|
+
const status = FILE_STATUSES.has(str(item.status)) ? str(item.status) : 'unchanged';
|
|
123
|
+
cursor.files.push({ name, status, note: str(item.note) });
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return root;
|
|
127
|
+
}
|
|
128
|
+
/** Fold a chain of single-folder directories into one `a/b/c` entry, as editors do. */
|
|
129
|
+
function compact(dir) {
|
|
130
|
+
let current = dir;
|
|
131
|
+
let name = dir.name;
|
|
132
|
+
while (current.files.length === 0 && current.dirs.size === 1) {
|
|
133
|
+
const [only] = current.dirs.values();
|
|
134
|
+
if (only === undefined)
|
|
135
|
+
break;
|
|
136
|
+
name = `${name}/${only.name}`;
|
|
137
|
+
current = only;
|
|
138
|
+
}
|
|
139
|
+
return { ...current, name };
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Case-insensitive order with a code-point tie-break. No `localeCompare`: its
|
|
143
|
+
* collation comes from the runtime's ICU data, which would let the same spec
|
|
144
|
+
* emit different bytes on different Node builds.
|
|
145
|
+
*/
|
|
146
|
+
function byName(left, right) {
|
|
147
|
+
const a = left.name.toLowerCase();
|
|
148
|
+
const b = right.name.toLowerCase();
|
|
149
|
+
if (a !== b)
|
|
150
|
+
return a < b ? -1 : 1;
|
|
151
|
+
return left.name < right.name ? -1 : left.name > right.name ? 1 : 0;
|
|
152
|
+
}
|
|
153
|
+
function treeEntries(dir) {
|
|
154
|
+
const dirs = [...dir.dirs.values()].map(compact).sort(byName);
|
|
155
|
+
const files = [...dir.files].sort(byName);
|
|
156
|
+
return [
|
|
157
|
+
...dirs.map((child) => `<li><details open><summary><span class="ak-tree-name" data-kind="folder">${escapeText(child.name)}/</span></summary><ul>${treeEntries(child)}</ul></details></li>`),
|
|
158
|
+
...files.map((file) => `<li data-status="${file.status}"><span class="ak-tree-name" data-kind="file">${escapeText(file.name)}</span>${file.status === 'unchanged' ? '' : `<span class="ak-tree-status">${file.status}</span>`}${file.note === '' ? '' : `<span class="ak-tree-note">${escapeText(file.note)}</span>`}</li>`),
|
|
159
|
+
].join('');
|
|
160
|
+
}
|
|
161
|
+
function fileTree(node) {
|
|
162
|
+
const items = objectListProp(node, 'items');
|
|
163
|
+
const counts = new Map();
|
|
164
|
+
for (const item of items) {
|
|
165
|
+
const status = str(item.status, 'unchanged');
|
|
166
|
+
if (status !== 'unchanged' && FILE_STATUSES.has(status)) {
|
|
167
|
+
counts.set(status, (counts.get(status) ?? 0) + 1);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
const summary = ['added', 'modified', 'renamed', 'deleted']
|
|
171
|
+
.filter((status) => counts.has(status))
|
|
172
|
+
.map((status) => `<li data-status="${status}"><strong>${counts.get(status)}</strong> ${status}</li>`)
|
|
173
|
+
.join('');
|
|
174
|
+
return element('section', nodeAttributes(node, { class: 'ak-block ak-tree-block' }), [
|
|
175
|
+
titleHeader(node),
|
|
176
|
+
'<div class="ak-tree-panel">',
|
|
177
|
+
summary === '' ? '' : `<ul class="ak-tree-summary">${summary}</ul>`,
|
|
178
|
+
`<ul class="ak-tree">${treeEntries(buildFileTree(items))}</ul>`,
|
|
179
|
+
'</div>',
|
|
180
|
+
].join(''));
|
|
181
|
+
}
|
|
182
|
+
// --- before / after ---------------------------------------------------------
|
|
183
|
+
function beforeAfter(node, context) {
|
|
184
|
+
const side = (key, fallbackLabel) => {
|
|
185
|
+
const value = node.props[key];
|
|
186
|
+
const item = isPlainObject(value) ? value : {};
|
|
187
|
+
return {
|
|
188
|
+
image: framedImage(str(item.src), str(item.alt), context.ir.policy.network),
|
|
189
|
+
label: str(item.label, fallbackLabel),
|
|
190
|
+
};
|
|
191
|
+
};
|
|
192
|
+
const before = side('before', 'Before');
|
|
193
|
+
const after = side('after', 'After');
|
|
194
|
+
const start = Math.min(Math.max(Math.round(numberProp(node, 'start', 50)), 0), 100);
|
|
195
|
+
const title = stringProp(node, 'title');
|
|
196
|
+
// Without script the two images sit side by side. The runtime switches the
|
|
197
|
+
// stage to the overlay and keeps `--ak-split` in step with the range input.
|
|
198
|
+
return [
|
|
199
|
+
`<figure${renderAttributes(nodeAttributes(node, { class: 'ak-block ak-ba', 'data-ak-before-after': '' }))}>`,
|
|
200
|
+
titleHeader(node),
|
|
201
|
+
'<div class="ak-ba-stage">',
|
|
202
|
+
`<div class="ak-ba-pane" data-side="before">${before.image}<span class="ak-ba-label">${escapeText(before.label)}</span></div>`,
|
|
203
|
+
`<div class="ak-ba-pane" data-side="after">${after.image}<span class="ak-ba-label">${escapeText(after.label)}</span></div>`,
|
|
204
|
+
'<span class="ak-ba-handle" aria-hidden="true"></span>',
|
|
205
|
+
`<input type="range" class="ak-ba-range" min="0" max="100" step="1" value="${start}" aria-label="${escapeAttribute(`Reveal ${before.label} or ${after.label}${title === '' ? '' : ` of ${title}`}`)}" />`,
|
|
206
|
+
'</div>',
|
|
207
|
+
figureCaption(stringProp(node, 'caption')),
|
|
208
|
+
'</figure>',
|
|
209
|
+
].join('');
|
|
210
|
+
}
|
|
211
|
+
// --- kpi --------------------------------------------------------------------
|
|
212
|
+
const SPARK_WIDTH = 120;
|
|
213
|
+
const SPARK_HEIGHT = 36;
|
|
214
|
+
function round(value) {
|
|
215
|
+
return String(Math.round(value * 100) / 100);
|
|
216
|
+
}
|
|
217
|
+
/** Line and area paths for a sparkline, scaled into a fixed view box. */
|
|
218
|
+
export function sparkPaths(series) {
|
|
219
|
+
const min = Math.min(...series);
|
|
220
|
+
const max = Math.max(...series);
|
|
221
|
+
const span = max - min;
|
|
222
|
+
const step = series.length > 1 ? SPARK_WIDTH / (series.length - 1) : 0;
|
|
223
|
+
const inset = 3;
|
|
224
|
+
const points = series.map((value, index) => [
|
|
225
|
+
index * step,
|
|
226
|
+
// A flat series sits on the midline rather than the floor.
|
|
227
|
+
span === 0 ? SPARK_HEIGHT / 2 : inset + (1 - (value - min) / span) * (SPARK_HEIGHT - inset * 2),
|
|
228
|
+
]);
|
|
229
|
+
const line = points
|
|
230
|
+
.map(([x, y], index) => `${index === 0 ? 'M' : 'L'}${round(x)} ${round(y)}`)
|
|
231
|
+
.join(' ');
|
|
232
|
+
const last = points[points.length - 1] ?? [0, SPARK_HEIGHT / 2];
|
|
233
|
+
return {
|
|
234
|
+
line,
|
|
235
|
+
area: `${line} L${round(last[0])} ${SPARK_HEIGHT} L0 ${SPARK_HEIGHT} Z`,
|
|
236
|
+
end: last,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
function verdict(trend, good) {
|
|
240
|
+
if (trend !== 'up' && trend !== 'down')
|
|
241
|
+
return 'neutral';
|
|
242
|
+
return trend === good ? 'good' : 'bad';
|
|
243
|
+
}
|
|
244
|
+
function kpi(node) {
|
|
245
|
+
const cards = objectListProp(node, 'items').map((item, index) => {
|
|
246
|
+
const trend = str(item.trend, 'flat');
|
|
247
|
+
const judged = verdict(trend, str(item.good, 'up'));
|
|
248
|
+
const delta = str(item.delta);
|
|
249
|
+
const series = (Array.isArray(item.series) ? item.series : [])
|
|
250
|
+
.map((value) => numProp(value, Number.NaN))
|
|
251
|
+
.filter(Number.isFinite);
|
|
252
|
+
const arrow = trend === 'up' ? '↗' : trend === 'down' ? '↘' : '→';
|
|
253
|
+
const deltaMarkup = delta === ''
|
|
254
|
+
? ''
|
|
255
|
+
: `<p class="ak-kpi-delta"><span aria-hidden="true">${arrow}</span>${escapeText(delta)}${judged === 'neutral'
|
|
256
|
+
? ''
|
|
257
|
+
: `<span class="ak-sr"> (${judged === 'good' ? 'improving' : 'worsening'})</span>`}</p>`;
|
|
258
|
+
let spark = '';
|
|
259
|
+
if (series.length >= 2) {
|
|
260
|
+
const paths = sparkPaths(series);
|
|
261
|
+
const gradient = `ak-kpi-${node.id.replace(/[^A-Za-z0-9_-]/gu, '-')}-${index}`;
|
|
262
|
+
spark = [
|
|
263
|
+
`<svg class="ak-kpi-spark" viewBox="0 0 ${SPARK_WIDTH} ${SPARK_HEIGHT}" preserveAspectRatio="none" aria-hidden="true" focusable="false">`,
|
|
264
|
+
`<defs><linearGradient id="${gradient}" x1="0" y1="0" x2="0" y2="1"><stop offset="0" class="ak-kpi-stop" /><stop offset="1" class="ak-kpi-stop ak-kpi-stop--end" /></linearGradient></defs>`,
|
|
265
|
+
`<path class="ak-kpi-area" d="${paths.area}" fill="url(#${gradient})" />`,
|
|
266
|
+
`<path class="ak-kpi-line" d="${paths.line}" pathLength="1" />`,
|
|
267
|
+
'</svg>',
|
|
268
|
+
].join('');
|
|
269
|
+
}
|
|
270
|
+
return [
|
|
271
|
+
`<li class="ak-kpi-card" data-verdict="${judged}">`,
|
|
272
|
+
`<p class="ak-kpi-label">${escapeText(str(item.label))}</p>`,
|
|
273
|
+
`<p class="ak-kpi-value" data-ak-count>${escapeText(str(item.value))}</p>`,
|
|
274
|
+
deltaMarkup,
|
|
275
|
+
spark,
|
|
276
|
+
paragraph('ak-caption', str(item.caption)),
|
|
277
|
+
'</li>',
|
|
278
|
+
].join('');
|
|
279
|
+
});
|
|
280
|
+
return element('section', nodeAttributes(node, { class: 'ak-block ak-kpis', 'data-ak-animate': '' }), `${titleHeader(node)}<ul class="ak-kpi-grid">${cards.join('')}</ul>`);
|
|
281
|
+
}
|
|
282
|
+
// --- showcase ---------------------------------------------------------------
|
|
283
|
+
function showcase(node, context) {
|
|
284
|
+
const frame = stringProp(node, 'frame', 'browser') === 'plain' ? 'plain' : 'browser';
|
|
285
|
+
const address = stringProp(node, 'address');
|
|
286
|
+
const bullets = listProp(node, 'bullets').filter((item) => typeof item === 'string');
|
|
287
|
+
return element('section', nodeAttributes(node, {
|
|
288
|
+
class: 'ak-block ak-showcase',
|
|
289
|
+
'data-align': stringProp(node, 'align') === 'media-left' ? 'media-left' : 'media-right',
|
|
290
|
+
}), [
|
|
291
|
+
'<div class="ak-showcase-copy">',
|
|
292
|
+
paragraph('ak-eyebrow', stringProp(node, 'eyebrow')),
|
|
293
|
+
`<h2>${escapeText(stringProp(node, 'title'))}</h2>`,
|
|
294
|
+
paragraph('ak-showcase-text', stringProp(node, 'text')),
|
|
295
|
+
bullets.length === 0
|
|
296
|
+
? ''
|
|
297
|
+
: `<ul class="ak-showcase-points">${bullets.map((item) => `<li>${escapeText(item)}</li>`).join('')}</ul>`,
|
|
298
|
+
'</div>',
|
|
299
|
+
`<figure class="ak-showcase-media" data-frame="${frame}">${frame === 'browser'
|
|
300
|
+
? browserShot(stringProp(node, 'src'), stringProp(node, 'alt'), address, context.ir.policy.network)
|
|
301
|
+
: `<div class="ak-frame-view">${framedImage(stringProp(node, 'src'), stringProp(node, 'alt'), context.ir.policy.network)}</div>`}</figure>`,
|
|
302
|
+
].join(''));
|
|
303
|
+
}
|
|
304
|
+
// --- checklist --------------------------------------------------------------
|
|
305
|
+
function checklist(node) {
|
|
306
|
+
const items = objectListProp(node, 'items');
|
|
307
|
+
const done = items.filter((item) => item.done === true).length;
|
|
308
|
+
const title = stringProp(node, 'title');
|
|
309
|
+
const progress = items.length === 0 ? 0 : Math.round((done / items.length) * 100);
|
|
310
|
+
return element('section', nodeAttributes(node, { class: 'ak-block ak-checklist' }), [
|
|
311
|
+
`<header class="ak-checklist-head">${title === '' ? '' : `<h2>${escapeText(title)}</h2>`}<p class="ak-checklist-count"><strong>${done}</strong> of ${items.length} done</p></header>`,
|
|
312
|
+
`<progress class="ak-checklist-meter" max="100" value="${progress}" aria-hidden="true">${progress}%</progress>`,
|
|
313
|
+
`<ul>${items
|
|
314
|
+
.map((item) => {
|
|
315
|
+
const state = item.done === true ? 'done' : 'open';
|
|
316
|
+
return `<li data-state="${state}"><span class="ak-check" aria-hidden="true"></span><span class="ak-check-text">${escapeText(str(item.text))}</span><span class="ak-sr"> (${state})</span></li>`;
|
|
317
|
+
})
|
|
318
|
+
.join('')}</ul>`,
|
|
319
|
+
].join(''));
|
|
320
|
+
}
|
|
321
|
+
// --- cta --------------------------------------------------------------------
|
|
322
|
+
function cta(node) {
|
|
323
|
+
const actions = objectListProp(node, 'actions')
|
|
324
|
+
.map((action) => `<a${renderAttributes({
|
|
325
|
+
class: 'ak-btn',
|
|
326
|
+
'data-variant': str(action.variant) === 'primary' ? 'primary' : 'secondary',
|
|
327
|
+
href: escapeUrl(str(action.href)),
|
|
328
|
+
rel: 'noreferrer noopener',
|
|
329
|
+
})}>${escapeText(str(action.label))}</a>`)
|
|
330
|
+
.join('');
|
|
331
|
+
return element('section', nodeAttributes(node, { class: 'ak-block ak-cta', 'data-surface': 'inverse' }), [
|
|
332
|
+
paragraph('ak-eyebrow', stringProp(node, 'eyebrow')),
|
|
333
|
+
`<h2 class="ak-cta-title">${escapeText(stringProp(node, 'title'))}</h2>`,
|
|
334
|
+
paragraph('ak-cta-text', stringProp(node, 'text')),
|
|
335
|
+
actions === '' ? '' : `<div class="ak-cta-actions">${actions}</div>`,
|
|
336
|
+
].join(''));
|
|
337
|
+
}
|
|
338
|
+
export const SHOWCASE_RENDERERS = {
|
|
339
|
+
bento,
|
|
340
|
+
marquee,
|
|
341
|
+
terminal,
|
|
342
|
+
'file-tree': fileTree,
|
|
343
|
+
'before-after': beforeAfter,
|
|
344
|
+
kpi,
|
|
345
|
+
showcase,
|
|
346
|
+
checklist,
|
|
347
|
+
cta,
|
|
348
|
+
};
|
|
349
|
+
//# sourceMappingURL=showcase-blocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"showcase-blocks.js","sourceRoot":"","sources":["../../src/render/showcase-blocks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stylesheets for the showcase blocks.
|
|
3
|
+
*
|
|
4
|
+
* Each entry is a feature sheet: the compiler emits it only when a block on the
|
|
5
|
+
* page declares the feature, and `verify.ts` checks the marker selector in both
|
|
6
|
+
* directions. Only the window dots, which the terminal and the frame share, and
|
|
7
|
+
* the page-wide effects live in the base sheet.
|
|
8
|
+
*
|
|
9
|
+
* Motion follows the signature layer's rules: gated on
|
|
10
|
+
* `prefers-reduced-motion: no-preference`, never hiding content that has not
|
|
11
|
+
* been revealed by an observer, and switched off in print.
|
|
12
|
+
*/
|
|
13
|
+
import type { RuntimeFeature } from '../registry/roster.js';
|
|
14
|
+
export declare const SHOWCASE_CSS: Readonly<Partial<Record<RuntimeFeature, string>>>;
|
|
15
|
+
//# sourceMappingURL=showcase-styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"showcase-styles.d.ts","sourceRoot":"","sources":["../../src/render/showcase-styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAuB5D,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAoM1E,CAAC"}
|