@bestagentkits/render 0.1.1-next.1 → 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 +109 -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.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/llms.txt +25 -0
- package/package.json +9 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedded-fonts.generated.js","sourceRoot":"","sources":["../../src/render/embedded-fonts.generated.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,MAAM,CAAC,MAAM,WAAW,GAAG,0JAA0J,CAAC;AACtL,MAAM,CAAC,MAAM,gBAAgB,GAAG,8IAA8I,CAAC;AAE/K,MAAM,CAAC,MAAM,cAAc,GAA4B;IACrD;QACE,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,iFAAiF;QAC5F,KAAK,EAAE,kysCAAkysC;QACzysC,UAAU,EAAE,k7UAAk7U;KAC/7U;IACD;QACE,MAAM,EAAE,aAAa;QACrB,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,iFAAiF;QAC5F,KAAK,EAAE,8r/CAA8r/C;QACrs/C,UAAU,EAAE,0keAA0ke;KACvle;IACD;QACE,MAAM,EAAE,wBAAwB;QAChC,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,oGAAoG;QAC/G,KAAK,EAAE,01rDAA01rD;QACj2rD,UAAU,EAAE,0tWAA0tW;KACvuW;IACD;QACE,MAAM,EAAE,mBAAmB;QAC3B,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,gGAAgG;QAC3G,KAAK,EAAE,knpDAAknpD;QACznpD,UAAU,EAAE,0xTAA0xT;KACvyT;IACD;QACE,MAAM,EAAE,gBAAgB;QACxB,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,gFAAgF;QAC3F,KAAK,EAAE,070DAA070D;QACj80D,UAAU,EAAE,0pbAA0pb;KACvqb;IACD;QACE,MAAM,EAAE,sBAAsB;QAC9B,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,oGAAoG;QAC/G,KAAK,EAAE,knnCAAknnC;QACznnC,UAAU,EAAE,k4VAAk4V;KAC/4V;CACF,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-feature stylesheets.
|
|
3
|
+
*
|
|
4
|
+
* The compiler emits a sheet here only when the page uses that feature, and
|
|
5
|
+
* `verify.ts` checks the marker selector in both directions, so selectors for a
|
|
6
|
+
* feature must stay in its own entry and never move into `BASE_CSS`.
|
|
7
|
+
*
|
|
8
|
+
* Shared vocabulary from the base sheet: `--ak-transition` for every state
|
|
9
|
+
* change, `--ak-fill` for surface backgrounds (a top-lit sheen in dark mode),
|
|
10
|
+
* `--ak-tint` for hover washes and `--ak-ring` for focus halos on inputs.
|
|
11
|
+
*/
|
|
12
|
+
import type { RuntimeFeature } from '../registry/roster.js';
|
|
13
|
+
export declare const FEATURE_CSS: Readonly<Partial<Record<RuntimeFeature, string>>>;
|
|
14
|
+
//# sourceMappingURL=feature-styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-styles.d.ts","sourceRoot":"","sources":["../../src/render/feature-styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CA2JzE,CAAC"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-feature stylesheets.
|
|
3
|
+
*
|
|
4
|
+
* The compiler emits a sheet here only when the page uses that feature, and
|
|
5
|
+
* `verify.ts` checks the marker selector in both directions, so selectors for a
|
|
6
|
+
* feature must stay in its own entry and never move into `BASE_CSS`.
|
|
7
|
+
*
|
|
8
|
+
* Shared vocabulary from the base sheet: `--ak-transition` for every state
|
|
9
|
+
* change, `--ak-fill` for surface backgrounds (a top-lit sheen in dark mode),
|
|
10
|
+
* `--ak-tint` for hover washes and `--ak-ring` for focus halos on inputs.
|
|
11
|
+
*/
|
|
12
|
+
import { SHOWCASE_CSS } from './showcase-styles.js';
|
|
13
|
+
const TRANSITION = 'transition:var(--ak-transition)';
|
|
14
|
+
export const FEATURE_CSS = {
|
|
15
|
+
...SHOWCASE_CSS,
|
|
16
|
+
tabs: `.ak-tabs [role="tablist"]{display:inline-flex;flex-wrap:wrap;gap:3px;max-width:100%;padding:3px;margin-bottom:calc(var(--ak-space-unit) * 2);background:color-mix(in srgb,var(--ak-color-text) 5%,var(--ak-color-background));border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-medium)}
|
|
17
|
+
.ak-tabs [role="tab"]{font:inherit;font-size:.92em;font-weight:550;background:transparent;border:0;padding:.5em 1.05em;min-height:36px;cursor:pointer;color:var(--ak-color-text-muted);border-radius:max(0px,calc(var(--ak-radius-medium) - 3px));${TRANSITION}}
|
|
18
|
+
.ak-tabs [role="tab"]:hover{color:var(--ak-color-text)}
|
|
19
|
+
.ak-tabs [role="tab"][aria-selected="true"]{color:var(--ak-color-text);background:var(--ak-color-surface);box-shadow:0 0 0 var(--ak-border-width) var(--ak-color-border),0 1px 3px color-mix(in srgb,var(--ak-color-text) 10%,transparent)}
|
|
20
|
+
.ak-tabs [role="tabpanel"]{padding:0;max-width:var(--ak-measure)}
|
|
21
|
+
.ak-tabs [role="tabpanel"][hidden]{display:none}
|
|
22
|
+
@media (max-width:768px){.ak-tabs [role="tab"]{min-height:44px}}`,
|
|
23
|
+
accordion: `.ak-accordion{display:flex;flex-direction:column;gap:calc(var(--ak-space-unit) * 1)}
|
|
24
|
+
.ak-accordion details{background:var(--ak-fill);border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-medium);${TRANSITION}}
|
|
25
|
+
.ak-accordion details[open]{border-color:color-mix(in srgb,var(--ak-color-accent) 28%,var(--ak-color-border));box-shadow:var(--ak-elevation-card)}
|
|
26
|
+
.ak-accordion summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:calc(var(--ak-space-unit) * 2);cursor:pointer;padding:calc(var(--ak-space-unit) * 1.75) calc(var(--ak-space-unit) * 2.25);min-height:48px;font-family:var(--ak-font-heading);font-weight:600;border-radius:inherit;${TRANSITION}}
|
|
27
|
+
.ak-accordion summary::-webkit-details-marker{display:none}
|
|
28
|
+
.ak-accordion summary::after{content:"";flex:none;width:26px;height:26px;border-radius:50%;border:var(--ak-border-width) solid var(--ak-color-border);color:var(--ak-color-text-muted);background:linear-gradient(currentColor,currentColor) center/10px 1.5px no-repeat,linear-gradient(currentColor,currentColor) center/1.5px 10px no-repeat;${TRANSITION}}
|
|
29
|
+
.ak-accordion summary:hover{color:var(--ak-color-accent)}
|
|
30
|
+
.ak-accordion summary:hover::after{border-color:var(--ak-color-accent);color:var(--ak-color-accent)}
|
|
31
|
+
.ak-accordion details[open] summary::after{transform:rotate(180deg);background-size:10px 1.5px,1.5px 0;background-color:var(--ak-tint);color:var(--ak-color-accent);border-color:color-mix(in srgb,var(--ak-color-accent) 40%,var(--ak-color-border))}
|
|
32
|
+
.ak-accordion details > :not(summary){padding:0 calc(var(--ak-space-unit) * 2.25) calc(var(--ak-space-unit) * 2);margin:0;max-width:var(--ak-measure);color:var(--ak-color-text-muted)}`,
|
|
33
|
+
carousel: `.ak-carousel{display:flex;flex-direction:column;gap:calc(var(--ak-space-unit) * 1.5)}
|
|
34
|
+
.ak-carousel-slides{position:relative;min-height:120px}
|
|
35
|
+
.ak-carousel-slide{display:flex;flex-direction:column;justify-content:flex-end;gap:.5em;min-height:200px;padding:calc(var(--ak-space-unit) * 4);border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-large);background:radial-gradient(120% 140% at 100% 0%,color-mix(in srgb,var(--ak-color-accent) 12%,transparent),transparent 55%),var(--ak-fill);box-shadow:var(--ak-elevation-card)}
|
|
36
|
+
.ak-carousel-slide h3{font-size:calc(var(--ak-font-size-base) * 1.56);font-size:calc(var(--ak-font-size-base) * pow(var(--ak-font-scale),2));letter-spacing:-.018em}
|
|
37
|
+
.ak-carousel-slide p{color:var(--ak-color-text-muted);max-width:56ch;margin:0}
|
|
38
|
+
.ak-carousel-slide[hidden]{display:none}
|
|
39
|
+
.ak-carousel-controls{display:flex;gap:var(--ak-space-unit);align-items:center}
|
|
40
|
+
.ak-carousel-controls [data-ak-carousel="prev"]::before{content:"\\2190";font-family:var(--ak-font-mono)}
|
|
41
|
+
.ak-carousel-controls [data-ak-carousel="next"]::after{content:"\\2192";font-family:var(--ak-font-mono)}
|
|
42
|
+
.ak-carousel-status{margin-left:auto;font-family:var(--ak-font-mono);font-size:.78rem;letter-spacing:.08em;color:var(--ak-color-text-muted);font-variant-numeric:tabular-nums}
|
|
43
|
+
@media (max-width:480px){.ak-carousel-slide{min-height:160px;padding:calc(var(--ak-space-unit) * 2.5)}}`,
|
|
44
|
+
slider: `.ak-slider{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.6em var(--ak-space-unit);max-width:440px}
|
|
45
|
+
.ak-slider label{font-weight:550}
|
|
46
|
+
.ak-slider input[type="range"]{grid-column:1 / -1;width:100%;margin:0;accent-color:var(--ak-color-accent);min-height:28px;cursor:pointer}
|
|
47
|
+
.ak-slider output{grid-row:1;grid-column:2;min-width:2.5em;padding:.15em .6em;text-align:center;border-radius:999px;background:var(--ak-tint);border:var(--ak-border-width) solid color-mix(in srgb,var(--ak-color-accent) 25%,var(--ak-color-border));font-family:var(--ak-font-mono);font-size:.8rem;color:var(--ak-color-accent);font-variant-numeric:tabular-nums}
|
|
48
|
+
@media (max-width:768px){.ak-slider input[type="range"]{min-height:44px}}`,
|
|
49
|
+
dialog: `dialog.ak-dialog{width:min(560px,calc(100vw - 32px));max-width:none;border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-large);background:var(--ak-fill);color:var(--ak-color-text);padding:calc(var(--ak-space-unit) * 3.5);box-shadow:var(--ak-elevation-popover)}
|
|
50
|
+
dialog.ak-dialog::backdrop{background:color-mix(in srgb,var(--ak-color-background) 62%,transparent);backdrop-filter:blur(8px) saturate(.9)}
|
|
51
|
+
dialog.ak-dialog[open]{animation:ak-rise calc(var(--ak-motion-duration) * 1.5) var(--ak-motion-easing)}
|
|
52
|
+
@keyframes ak-rise{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}
|
|
53
|
+
.ak-dialog-title{margin-bottom:var(--ak-space-unit)}
|
|
54
|
+
.ak-dialog-title h2{font-size:calc(var(--ak-font-size-base) * 1.4);font-size:calc(var(--ak-font-size-base) * pow(var(--ak-font-scale),1.5))}
|
|
55
|
+
dialog.ak-dialog > p{color:var(--ak-color-text-muted)}
|
|
56
|
+
.ak-dialog-actions{display:flex;flex-wrap:wrap;gap:var(--ak-space-unit);justify-content:flex-end;margin:calc(var(--ak-space-unit) * 3) calc(var(--ak-space-unit) * -3.5) calc(var(--ak-space-unit) * -3.5);padding:calc(var(--ak-space-unit) * 2) calc(var(--ak-space-unit) * 3.5);border-top:var(--ak-border-width) solid var(--ak-color-border);background:color-mix(in srgb,var(--ak-color-text) 3%,transparent);border-radius:0 0 var(--ak-radius-large) var(--ak-radius-large)}`,
|
|
57
|
+
chart: `.ak-chart{display:flex;flex-direction:column;gap:calc(var(--ak-space-unit) * 2);background:var(--ak-fill);border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-medium);padding:calc(var(--ak-space-unit) * 3);box-shadow:var(--ak-elevation-card);--ak-c0:var(--ak-color-accent);--ak-c1:var(--ak-color-info);--ak-c2:var(--ak-color-success);--ak-c3:var(--ak-color-warning);--ak-c4:var(--ak-color-danger);--ak-c5:var(--ak-color-text-muted)}
|
|
58
|
+
@supports (color:oklch(from red l c h)){.ak-chart{--ak-c1:oklch(from var(--ak-color-accent) l max(c,.1) calc(h + 210));--ak-c2:oklch(from var(--ak-color-accent) l max(c,.1) calc(h + 120));--ak-c3:oklch(from var(--ak-color-accent) l max(c,.1) calc(h + 60));--ak-c4:oklch(from var(--ak-color-accent) l max(c,.1) calc(h + 290));--ak-c5:oklch(from var(--ak-color-accent) l max(c,.1) calc(h + 165))}}
|
|
59
|
+
.ak-chart svg{display:block;width:100%;height:auto;overflow:visible}
|
|
60
|
+
.ak-chart:is([data-ak-kind="pie"],[data-ak-kind="donut"]) svg{max-height:320px}
|
|
61
|
+
.ak-chart figcaption{font-family:var(--ak-font-heading);font-weight:600;font-size:calc(var(--ak-font-size-base) * 1.06);letter-spacing:-.01em;color:var(--ak-color-text)}
|
|
62
|
+
.ak-chart .ak-chart-s0{--ak-series:var(--ak-c0)}
|
|
63
|
+
.ak-chart .ak-chart-s1{--ak-series:var(--ak-c1)}
|
|
64
|
+
.ak-chart .ak-chart-s2{--ak-series:var(--ak-c2)}
|
|
65
|
+
.ak-chart .ak-chart-s3{--ak-series:var(--ak-c3)}
|
|
66
|
+
.ak-chart .ak-chart-s4{--ak-series:var(--ak-c4)}
|
|
67
|
+
.ak-chart .ak-chart-s5{--ak-series:var(--ak-c5)}
|
|
68
|
+
.ak-chart .ak-chart-bar:not([fill]),.ak-chart .ak-chart-slice{fill:var(--ak-series,var(--ak-c0))}
|
|
69
|
+
.ak-chart .ak-chart-bar,.ak-chart .ak-chart-slice{${TRANSITION}}
|
|
70
|
+
.ak-chart .ak-chart-slice{stroke:var(--ak-color-surface);stroke-width:3}
|
|
71
|
+
.ak-chart .ak-chart-slice:hover,.ak-chart .ak-chart-slice:focus-visible{opacity:.72}
|
|
72
|
+
.ak-chart svg:has(.ak-chart-bar:is(:hover,:focus-visible)) .ak-chart-bar:not(:hover,:focus-visible){opacity:.38}
|
|
73
|
+
.ak-chart-canvas{overflow-x:auto;overscroll-behavior-x:contain}
|
|
74
|
+
.ak-chart:is([data-ak-kind="bar"],[data-ak-kind="line"],[data-ak-kind="area"]) .ak-chart-canvas svg{min-width:560px}
|
|
75
|
+
.ak-chart .ak-chart-stop{stop-color:var(--ak-series,var(--ak-c0));stop-opacity:.34}
|
|
76
|
+
.ak-chart .ak-chart-stop--end{stop-opacity:0}
|
|
77
|
+
.ak-chart .ak-chart-stop--bar{stop-opacity:1}
|
|
78
|
+
.ak-chart .ak-chart-stop--bar.ak-chart-stop--end{stop-opacity:.62}
|
|
79
|
+
.ak-chart .ak-chart-value{fill:var(--ak-color-text);font-family:var(--ak-font-mono);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;opacity:0;pointer-events:none;${TRANSITION}}
|
|
80
|
+
.ak-chart :is(.ak-chart-bar,.ak-chart-point):is(:hover,:focus-visible) + .ak-chart-value{opacity:1}
|
|
81
|
+
.ak-chart .ak-chart-line{fill:none;stroke:var(--ak-series,var(--ak-c0));stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
|
|
82
|
+
.ak-chart .ak-chart-point{fill:var(--ak-color-surface);stroke:var(--ak-series,var(--ak-c0));stroke-width:2.25;${TRANSITION}}
|
|
83
|
+
.ak-chart .ak-chart-point:hover,.ak-chart .ak-chart-point:focus-visible{fill:var(--ak-series,var(--ak-c0));stroke-width:5;stroke-opacity:.35}
|
|
84
|
+
.ak-chart .ak-chart-area{stroke:none}
|
|
85
|
+
.ak-chart .ak-chart-axis{stroke:color-mix(in srgb,var(--ak-color-text) 28%,var(--ak-color-border));stroke-width:1}
|
|
86
|
+
.ak-chart .ak-chart-grid{stroke:var(--ak-color-border);stroke-width:1;stroke-dasharray:1 5;stroke-linecap:round}
|
|
87
|
+
.ak-chart .ak-chart-track{fill:color-mix(in srgb,var(--ak-color-text) 7%,var(--ak-color-surface))}
|
|
88
|
+
.ak-chart .ak-chart-label{fill:var(--ak-color-text-muted);font-family:var(--ak-font-mono);font-size:10.5px;font-variant-numeric:tabular-nums}
|
|
89
|
+
.ak-chart .ak-chart-label--row{fill:var(--ak-color-text);font-family:var(--ak-font-body);font-size:13px;font-weight:500}
|
|
90
|
+
.ak-chart .ak-chart-total{fill:var(--ak-color-text);font-family:var(--ak-font-heading);font-size:26px;font-weight:700;letter-spacing:-.02em}
|
|
91
|
+
.ak-chart :focus-visible{outline:2px solid var(--ak-color-accent)}
|
|
92
|
+
.ak-chart-legend{display:flex;flex-wrap:wrap;gap:.5em 1.4em;list-style:none;margin:0;padding:0;font-size:.82rem;color:var(--ak-color-text-muted)}
|
|
93
|
+
.ak-chart:is([data-ak-kind="pie"],[data-ak-kind="donut"]) .ak-chart-legend{justify-content:center}
|
|
94
|
+
.ak-chart-legend li{display:inline-flex;align-items:center;gap:.5em}
|
|
95
|
+
.ak-chart-swatch{width:.7em;height:.7em;border-radius:2px;background:var(--ak-series,var(--ak-c0))}
|
|
96
|
+
.ak-details{border-top:var(--ak-border-width) solid var(--ak-color-border);padding-top:calc(var(--ak-space-unit) * 1.5);margin-top:calc(var(--ak-space-unit) * -.5)}
|
|
97
|
+
.ak-details summary{display:inline-flex;align-items:center;gap:.55em;cursor:pointer;list-style:none;font-family:var(--ak-font-mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ak-color-text-muted);${TRANSITION}}
|
|
98
|
+
.ak-details summary::-webkit-details-marker{display:none}
|
|
99
|
+
.ak-details summary::before{content:"";width:.42em;height:.42em;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);${TRANSITION}}
|
|
100
|
+
.ak-details[open] summary::before{transform:rotate(45deg)}
|
|
101
|
+
.ak-details summary:hover{color:var(--ak-color-accent)}
|
|
102
|
+
.ak-details[open] summary{margin-bottom:calc(var(--ak-space-unit) * 1.5)}
|
|
103
|
+
.ak-details table{font-size:.85rem;border:var(--ak-border-width) solid var(--ak-color-border)}
|
|
104
|
+
.ak-details caption{font-size:.8rem}
|
|
105
|
+
@media (max-width:768px){.ak-details summary{min-height:44px}}`,
|
|
106
|
+
filter: `.ak-search{display:flex;flex-direction:column;gap:.5em;max-width:420px}
|
|
107
|
+
.ak-search label{font-weight:550}
|
|
108
|
+
.ak-search input{font:inherit;min-height:44px;padding:.55em .95em;border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-medium);background:var(--ak-color-surface);color:var(--ak-color-text);box-shadow:inset 0 1px 2px color-mix(in srgb,var(--ak-color-text) 6%,transparent);${TRANSITION}}
|
|
109
|
+
.ak-search input::placeholder{color:var(--ak-color-text-muted);opacity:.85}
|
|
110
|
+
.ak-search input:hover{border-color:color-mix(in srgb,var(--ak-color-text) 30%,var(--ak-color-border))}
|
|
111
|
+
.ak-search input:focus-visible{outline:0;border-color:var(--ak-color-accent);box-shadow:var(--ak-ring)}`,
|
|
112
|
+
theme: `.ak-theme-toggle{min-height:34px;padding:.35em .9em;font-family:var(--ak-font-mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ak-color-text-muted);border-radius:999px;background:var(--ak-color-surface)}
|
|
113
|
+
.ak-theme-toggle::before{content:"";width:.75em;height:.75em;border-radius:50%;background:linear-gradient(90deg,currentColor 50%,transparent 50%);box-shadow:inset 0 0 0 1.5px currentColor;${TRANSITION}}
|
|
114
|
+
.ak-theme-toggle:hover{color:var(--ak-color-text)}
|
|
115
|
+
.ak-theme-toggle[aria-pressed="true"]::before{transform:rotate(180deg)}
|
|
116
|
+
@keyframes ak-reveal{from{clip-path:circle(0 at var(--ak-vt-x,100%) var(--ak-vt-y,0))}to{clip-path:circle(150vmax at var(--ak-vt-x,100%) var(--ak-vt-y,0))}}
|
|
117
|
+
@media (prefers-reduced-motion:no-preference){::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-new(root){animation:ak-reveal .75s cubic-bezier(.16,1,.3,1)}}
|
|
118
|
+
@media (max-width:768px){.ak-theme-toggle{min-height:44px}}`,
|
|
119
|
+
media: `.ak-media-fallback{display:flex;flex-direction:column;align-items:flex-start;gap:.5em;background:var(--ak-fill);border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-medium);padding:calc(var(--ak-space-unit) * 2.5)}
|
|
120
|
+
.ak-media-fallback p{margin:0}
|
|
121
|
+
.ak-media-fallback img{width:100%;max-width:100%;border-radius:var(--ak-radius-small);margin-bottom:calc(var(--ak-space-unit) * 1)}
|
|
122
|
+
.ak-media-fallback > p:first-of-type:has(strong){font-family:var(--ak-font-heading);font-size:calc(var(--ak-font-size-base) * 1.1)}
|
|
123
|
+
.ak-media-fallback .ak-caption{display:inline-flex;align-items:center;gap:.5em;font-family:var(--ak-font-mono);font-size:.72rem;letter-spacing:.04em}
|
|
124
|
+
.ak-media-fallback .ak-caption::before{content:"";width:.5em;height:.5em;border-radius:50%;background:var(--ak-color-warning)}
|
|
125
|
+
.ak-media-fallback > a{display:inline-flex;align-items:center;gap:.35em;margin-top:.35em;font-weight:550}
|
|
126
|
+
.ak-media-fallback > a::after{content:"\\2197";text-decoration:none}`,
|
|
127
|
+
outline: `.ak-toc{display:none;font-size:.84rem}
|
|
128
|
+
.ak-toc-title{margin:0 0 .9em;font-family:var(--ak-font-mono);font-size:.68rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ak-color-text-muted)}
|
|
129
|
+
.ak-toc ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;border-left:var(--ak-border-width) solid var(--ak-color-border)}
|
|
130
|
+
.ak-toc a{display:block;margin-left:calc(var(--ak-border-width) * -1);padding:.42em 0 .42em 1.1em;border-left:2px solid transparent;color:var(--ak-color-text-muted);text-decoration:none;line-height:1.4;${TRANSITION}}
|
|
131
|
+
.ak-toc a:hover{color:var(--ak-color-text);border-left-color:color-mix(in srgb,var(--ak-color-text) 30%,transparent)}
|
|
132
|
+
.ak-toc a[aria-current]{color:var(--ak-color-accent);border-left-color:var(--ak-color-accent);font-weight:600}
|
|
133
|
+
@media (min-width:1280px){.ak-shell--outline{max-width:1400px;display:grid;grid-template-columns:minmax(0,1fr) 216px;column-gap:calc(var(--ak-space-unit) * 8);align-items:start}.ak-shell--outline > *{grid-column:1}.ak-shell--outline > .ak-toc{display:block;grid-column:2;grid-row:1 / span 2;position:sticky;top:calc(var(--ak-space-unit) * 4);max-height:calc(100vh - var(--ak-space-unit) * 8);overflow-y:auto;padding-top:calc(var(--ak-space-unit) * 1)}}
|
|
134
|
+
@media print{.ak-toc{display:none!important}}`,
|
|
135
|
+
diagram: `.ak-diagram{overflow-x:auto}
|
|
136
|
+
.ak-diagram svg{max-width:100%;height:auto}
|
|
137
|
+
.ak-diagram-fallback{display:flex;flex-direction:column;gap:var(--ak-space-unit);background:var(--ak-fill);border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-medium);padding:calc(var(--ak-space-unit) * 3);box-shadow:var(--ak-elevation-card)}
|
|
138
|
+
.ak-diagram-fallback{gap:calc(var(--ak-space-unit) * 2)}
|
|
139
|
+
.ak-diagram-fallback > .ak-caption{font-size:.74rem;color:var(--ak-color-text-muted)}
|
|
140
|
+
.ak-diagram-title{margin:0;font-family:var(--ak-font-mono);font-size:.7rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ak-color-text-muted)}
|
|
141
|
+
.ak-flow{list-style:none;margin:0;padding:calc(var(--ak-space-unit) * 1) 0;display:flex;align-items:center;overflow-x:auto}
|
|
142
|
+
.ak-flow > li{display:flex;align-items:center;flex:1 1 auto;min-width:0}
|
|
143
|
+
.ak-flow > li:last-child{flex:0 0 auto}
|
|
144
|
+
.ak-flow-node{flex:none;display:flex;flex-direction:column;gap:.3em;min-width:9rem;padding:calc(var(--ak-space-unit) * 1.75) calc(var(--ak-space-unit) * 2.25);background:var(--ak-color-surface);border:var(--ak-border-width) solid color-mix(in srgb,var(--ak-color-text) 14%,var(--ak-color-border));border-radius:var(--ak-radius-medium);box-shadow:var(--ak-elevation-card);${TRANSITION}}
|
|
145
|
+
.ak-flow-name{font-family:var(--ak-font-heading);font-weight:600;line-height:1.25;color:var(--ak-color-text)}
|
|
146
|
+
.ak-flow-node code{align-self:flex-start;padding:0;background:none;border:0;font-size:.72rem;color:var(--ak-color-text-muted)}
|
|
147
|
+
.ak-flow > li:first-child .ak-flow-node{border-color:color-mix(in srgb,var(--ak-color-accent) 45%,var(--ak-color-border))}
|
|
148
|
+
.ak-flow > li:last-child .ak-flow-node{background:color-mix(in srgb,var(--ak-color-accent) 9%,var(--ak-color-surface));border-color:var(--ak-color-accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--ak-color-accent) 12%,transparent),var(--ak-elevation-card)}
|
|
149
|
+
.ak-flow-node:hover{border-color:var(--ak-color-accent)}
|
|
150
|
+
.ak-flow-edge{position:relative;flex:1;min-width:7rem;height:2.75rem;margin:0 .4rem}
|
|
151
|
+
.ak-flow-edge::before{content:"";position:absolute;left:0;right:6px;top:50%;height:1.5px;background:linear-gradient(90deg,color-mix(in srgb,var(--ak-color-text) 22%,var(--ak-color-border)),var(--ak-color-accent))}
|
|
152
|
+
.ak-flow-edge::after{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);border-left:7px solid var(--ak-color-accent);border-top:4.5px solid transparent;border-bottom:4.5px solid transparent}
|
|
153
|
+
.ak-flow-edge-label{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);max-width:calc(100% - 1.5rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:.2em .7em;background:var(--ak-color-surface);border:var(--ak-border-width) solid var(--ak-color-border);border-radius:999px;font-family:var(--ak-font-mono);font-size:.66rem;letter-spacing:.03em;color:var(--ak-color-text-muted)}
|
|
154
|
+
.ak-flow-nodes{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:calc(var(--ak-space-unit) * 1.5)}
|
|
155
|
+
.ak-flow-links{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
|
|
156
|
+
.ak-flow-links li{display:flex;flex-wrap:wrap;align-items:center;gap:.6em;padding:.65em 0;border-top:var(--ak-border-width) solid var(--ak-color-border)}
|
|
157
|
+
.ak-flow-arrow{color:var(--ak-color-accent);font-weight:600}
|
|
158
|
+
.ak-flow-link-label{margin-left:auto;font-size:.88rem;color:var(--ak-color-text-muted)}
|
|
159
|
+
@media (max-width:640px){.ak-flow{flex-direction:column;align-items:stretch}.ak-flow > li{flex-direction:column;align-items:stretch}.ak-flow-edge{flex:none;min-width:0;height:3.25rem;margin:.25rem 0}.ak-flow-edge::before{left:50%;right:auto;top:0;bottom:6px;width:1.5px;height:auto;background:linear-gradient(180deg,color-mix(in srgb,var(--ak-color-text) 22%,var(--ak-color-border)),var(--ak-color-accent))}.ak-flow-edge::after{right:auto;left:50%;top:auto;bottom:0;transform:translateX(-50%);border-left:4.5px solid transparent;border-right:4.5px solid transparent;border-top:7px solid var(--ak-color-accent);border-bottom:0}}`,
|
|
160
|
+
};
|
|
161
|
+
//# sourceMappingURL=feature-styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-styles.js","sourceRoot":"","sources":["../../src/render/feature-styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,UAAU,GAAG,iCAAiC,CAAC;AAErD,MAAM,CAAC,MAAM,WAAW,GAAsD;IAC5E,GAAG,YAAY;IACf,IAAI,EAAE;oPAC4O,UAAU;;;;;iEAK7L;IAE/D,SAAS,EAAE;mJACsI,UAAU;;6TAEgK,UAAU;;kVAEW,UAAU;;;;wLAIpK;IAEtL,QAAQ,EAAE;;;;;;;;;;wGAU4F;IAEtG,MAAM,EAAE;;;;0EAIgE;IAExE,MAAM,EAAE;;;;;;;qdAO2c;IAEnd,KAAK,EAAE;;;;;;;;;;;;oDAY2C,UAAU;;;;;;;;;;qLAUuH,UAAU;;;gHAG/E,UAAU;;;;;;;;;;;;;;;sOAe4G,UAAU;;wKAExE,UAAU;;;;;;+DAMnH;IAE7D,MAAM,EAAE;;qTAE2S,UAAU;;;wGAGvN;IAEtG,KAAK,EAAE;8LACqL,UAAU;;;;;4DAK5I;IAE1D,KAAK,EAAE;;;;;;;qEAO4D;IAEnE,OAAO,EAAE;;;4MAGiM,UAAU;;;;8CAIxK;IAC5C,OAAO,EAAE;;;;;;;;;qXAS0W,UAAU;;;;;;;;;;;;;;;onBAeqP;CACnnB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedded display faces.
|
|
3
|
+
*
|
|
4
|
+
* A theme opts into a bundled face by naming its namespaced family (for example
|
|
5
|
+
* `AK Geist`) in a font stack. The compiler then inlines that family as a
|
|
6
|
+
* `data:` WOFF2, so the artifact still opens offline and makes no request; the
|
|
7
|
+
* CSP widens `font-src` to `data:` only on pages that carry a face.
|
|
8
|
+
*
|
|
9
|
+
* Each family ships two subsets. Latin is always emitted; Vietnamese is emitted
|
|
10
|
+
* only when the page text uses a character the Latin subset lacks, so an English
|
|
11
|
+
* page does not pay for it. A family no stack names is never emitted.
|
|
12
|
+
*/
|
|
13
|
+
import type { ResolvedTheme } from '../theme/load-theme.js';
|
|
14
|
+
import { type EmbeddedFont } from './embedded-fonts.generated.js';
|
|
15
|
+
/** Bundled families named by any of the theme's font stacks, in bundle order. */
|
|
16
|
+
export declare function embeddedFamilies(theme: ResolvedTheme): EmbeddedFont[];
|
|
17
|
+
/**
|
|
18
|
+
* The `@font-face` rules a page needs, or an empty string. `text` is the
|
|
19
|
+
* rendered page text the faces must cover; it only decides the subsets.
|
|
20
|
+
*/
|
|
21
|
+
export declare function embeddedFontCss(theme: ResolvedTheme, text: string): string;
|
|
22
|
+
//# sourceMappingURL=font-faces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"font-faces.d.ts","sourceRoot":"","sources":["../../src/render/font-faces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAEL,KAAK,YAAY,EAGlB,MAAM,+BAA+B,CAAC;AAmBvC,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,EAAE,CASrE;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAe1E"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedded display faces.
|
|
3
|
+
*
|
|
4
|
+
* A theme opts into a bundled face by naming its namespaced family (for example
|
|
5
|
+
* `AK Geist`) in a font stack. The compiler then inlines that family as a
|
|
6
|
+
* `data:` WOFF2, so the artifact still opens offline and makes no request; the
|
|
7
|
+
* CSP widens `font-src` to `data:` only on pages that carry a face.
|
|
8
|
+
*
|
|
9
|
+
* Each family ships two subsets. Latin is always emitted; Vietnamese is emitted
|
|
10
|
+
* only when the page text uses a character the Latin subset lacks, so an English
|
|
11
|
+
* page does not pay for it. A family no stack names is never emitted.
|
|
12
|
+
*/
|
|
13
|
+
import { EMBEDDED_FONTS, LATIN_RANGE, VIETNAMESE_RANGE, } from './embedded-fonts.generated.js';
|
|
14
|
+
const STACK_TOKENS = ['font-heading', 'font-body', 'font-mono'];
|
|
15
|
+
/**
|
|
16
|
+
* Characters only the Vietnamese subset covers (its overlap with Latin removed).
|
|
17
|
+
* The combining marks are alternatives, because a character class may not mix
|
|
18
|
+
* them with base letters.
|
|
19
|
+
*/
|
|
20
|
+
// biome-ignore lint/complexity/useRegexLiterals: the autofix turns the escapes into raw combining marks.
|
|
21
|
+
const VIETNAMESE_ONLY = new RegExp('[\u0102\u0103\u0110\u0111\u0128\u0129\u0168\u0169\u01A0\u01A1\u01AF\u01B0\u1EA0-\u1EF9\u20AB]|\u0300|\u0301|\u0303|\u0309|\u0323', 'u');
|
|
22
|
+
function stackFamilies(stack) {
|
|
23
|
+
return stack.split(',').map((family) => family.trim().replace(/^["']|["']$/gu, ''));
|
|
24
|
+
}
|
|
25
|
+
/** Bundled families named by any of the theme's font stacks, in bundle order. */
|
|
26
|
+
export function embeddedFamilies(theme) {
|
|
27
|
+
const named = new Set();
|
|
28
|
+
for (const tokens of [theme.light, theme.dark]) {
|
|
29
|
+
for (const token of STACK_TOKENS) {
|
|
30
|
+
const stack = tokens[token];
|
|
31
|
+
if (stack !== undefined)
|
|
32
|
+
for (const family of stackFamilies(stack))
|
|
33
|
+
named.add(family);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return EMBEDDED_FONTS.filter((font) => named.has(font.family));
|
|
37
|
+
}
|
|
38
|
+
function face(font, data, range) {
|
|
39
|
+
return `@font-face{font-family:"${font.family}";font-style:normal;font-weight:${font.weight};font-display:swap;src:url(data:font/woff2;base64,${data}) format("woff2");unicode-range:${range}}`;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The `@font-face` rules a page needs, or an empty string. `text` is the
|
|
43
|
+
* rendered page text the faces must cover; it only decides the subsets.
|
|
44
|
+
*/
|
|
45
|
+
export function embeddedFontCss(theme, text) {
|
|
46
|
+
const fonts = embeddedFamilies(theme);
|
|
47
|
+
if (fonts.length === 0)
|
|
48
|
+
return '';
|
|
49
|
+
const vietnamese = VIETNAMESE_ONLY.test(text.normalize('NFC'));
|
|
50
|
+
return fonts
|
|
51
|
+
.map((font) => [
|
|
52
|
+
`/* ${font.name}: ${font.copyright}. SIL Open Font License 1.1, https://openfontlicense.org */`,
|
|
53
|
+
face(font, font.latin, LATIN_RANGE),
|
|
54
|
+
vietnamese ? face(font, font.vietnamese, VIETNAMESE_RANGE) : '',
|
|
55
|
+
]
|
|
56
|
+
.filter((rule) => rule !== '')
|
|
57
|
+
.join('\n'))
|
|
58
|
+
.join('\n');
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=font-faces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"font-faces.js","sourceRoot":"","sources":["../../src/render/font-faces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EACL,cAAc,EAEd,WAAW,EACX,gBAAgB,GACjB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,YAAY,GAAG,CAAC,cAAc,EAAE,WAAW,EAAE,WAAW,CAAU,CAAC;AAEzE;;;;GAIG;AACH,yGAAyG;AACzG,MAAM,eAAe,GAAG,IAAI,MAAM,CAChC,kIAAkI,EAClI,GAAG,CACJ,CAAC;AAEF,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC;AACtF,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,gBAAgB,CAAC,KAAoB;IACnD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,KAAK,KAAK,SAAS;gBAAE,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC;oBAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IACD,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,IAAI,CAAC,IAAkB,EAAE,IAAY,EAAE,KAAa;IAC3D,OAAO,2BAA2B,IAAI,CAAC,MAAM,mCAAmC,IAAI,CAAC,MAAM,qDAAqD,IAAI,mCAAmC,KAAK,GAAG,CAAC;AAClM,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAoB,EAAE,IAAY;IAChE,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ;QACE,MAAM,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,6DAA6D;QAC/F,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC;QACnC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE;KAChE;SACE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;SAC7B,IAAI,CAAC,IAAI,CAAC,CACd;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Page outline ("On this page").
|
|
3
|
+
*
|
|
4
|
+
* A long artifact gets a table of contents built from its top-level titled
|
|
5
|
+
* sections. It is derived from the IR alone, so it is deterministic, and it
|
|
6
|
+
* only appears once there is enough structure to navigate: below the threshold
|
|
7
|
+
* an outline is noise.
|
|
8
|
+
*/
|
|
9
|
+
import type { IrDocument } from '../ir.js';
|
|
10
|
+
/** Fewest titled top-level sections that justify an outline. */
|
|
11
|
+
export declare const OUTLINE_MIN_SECTIONS = 3;
|
|
12
|
+
export interface OutlineEntry {
|
|
13
|
+
anchor: string;
|
|
14
|
+
title: string;
|
|
15
|
+
}
|
|
16
|
+
/** Titled sections that are direct children of the page root, in document order. */
|
|
17
|
+
export declare function outlineEntries(ir: IrDocument): OutlineEntry[];
|
|
18
|
+
export declare function hasOutline(ir: IrDocument): boolean;
|
|
19
|
+
/** The outline navigation landmark, or an empty string when the page is too short. */
|
|
20
|
+
export declare function renderOutline(ir: IrDocument): string;
|
|
21
|
+
//# sourceMappingURL=outline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outline.d.ts","sourceRoot":"","sources":["../../src/render/outline.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C,gEAAgE;AAChE,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,EAAE,EAAE,UAAU,GAAG,YAAY,EAAE,CAa7D;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAElD;AAED,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM,CAUpD"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Page outline ("On this page").
|
|
3
|
+
*
|
|
4
|
+
* A long artifact gets a table of contents built from its top-level titled
|
|
5
|
+
* sections. It is derived from the IR alone, so it is deterministic, and it
|
|
6
|
+
* only appears once there is enough structure to navigate: below the threshold
|
|
7
|
+
* an outline is noise.
|
|
8
|
+
*/
|
|
9
|
+
import { sectionAnchor } from './blocks.js';
|
|
10
|
+
import { escapeAttribute, escapeText } from './escape.js';
|
|
11
|
+
/** Fewest titled top-level sections that justify an outline. */
|
|
12
|
+
export const OUTLINE_MIN_SECTIONS = 3;
|
|
13
|
+
/** Titled sections that are direct children of the page root, in document order. */
|
|
14
|
+
export function outlineEntries(ir) {
|
|
15
|
+
const byId = new Map(ir.nodes.map((node) => [node.id, node]));
|
|
16
|
+
const root = byId.get(ir.rootId);
|
|
17
|
+
if (root === undefined)
|
|
18
|
+
return [];
|
|
19
|
+
const entries = [];
|
|
20
|
+
for (const childId of root.children) {
|
|
21
|
+
const child = byId.get(childId);
|
|
22
|
+
if (child === undefined || child.type !== 'section')
|
|
23
|
+
continue;
|
|
24
|
+
const title = child.props.title;
|
|
25
|
+
if (typeof title !== 'string' || title.trim() === '')
|
|
26
|
+
continue;
|
|
27
|
+
entries.push({ anchor: sectionAnchor(child.id), title });
|
|
28
|
+
}
|
|
29
|
+
return entries;
|
|
30
|
+
}
|
|
31
|
+
export function hasOutline(ir) {
|
|
32
|
+
return outlineEntries(ir).length >= OUTLINE_MIN_SECTIONS;
|
|
33
|
+
}
|
|
34
|
+
/** The outline navigation landmark, or an empty string when the page is too short. */
|
|
35
|
+
export function renderOutline(ir) {
|
|
36
|
+
const entries = outlineEntries(ir);
|
|
37
|
+
if (entries.length < OUTLINE_MIN_SECTIONS)
|
|
38
|
+
return '';
|
|
39
|
+
const items = entries
|
|
40
|
+
.map((entry) => `<li><a href="#${escapeAttribute(entry.anchor)}" data-ak-outline-link>${escapeText(entry.title)}</a></li>`)
|
|
41
|
+
.join('');
|
|
42
|
+
return `<nav class="ak-toc" aria-label="On this page"><p class="ak-toc-title">On this page</p><ol>${items}</ol></nav>`;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=outline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outline.js","sourceRoot":"","sources":["../../src/render/outline.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE1D,gEAAgE;AAChE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAOtC,oFAAoF;AACpF,MAAM,UAAU,cAAc,CAAC,EAAc;IAC3C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAClC,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS;QAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,SAAS;QAC/D,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAc;IACvC,OAAO,cAAc,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,oBAAoB,CAAC;AAC3D,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,aAAa,CAAC,EAAc;IAC1C,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;IACnC,IAAI,OAAO,CAAC,MAAM,GAAG,oBAAoB;QAAE,OAAO,EAAE,CAAC;IACrD,MAAM,KAAK,GAAG,OAAO;SAClB,GAAG,CACF,CAAC,KAAK,EAAE,EAAE,CACR,iBAAiB,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAC7G;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,6FAA6F,KAAK,aAAa,CAAC;AACzH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/render/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,KAAK,EAAE,UAAU,EAAU,MAAM,UAAU,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAgB,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/render/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,KAAK,EAAE,UAAU,EAAU,MAAM,UAAU,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAgB,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAKnF,OAAO,EAAgB,eAAe,EAAE,MAAM,cAAc,CAAC;AAK7D,MAAM,WAAW,aAAa;IAC5B,4EAA4E;IAC5E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;0CACsC;IACtC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB;AAgJD,+DAA+D;AAC/D,wBAAgB,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,GAAE,aAAkB,GAAG,aAAa,CAqGjF;AAED,oDAAoD;AACpD,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAEzE;AAED,oEAAoE;AACpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAEnE;AAED,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC"}
|
package/dist/render/render.js
CHANGED
|
@@ -17,8 +17,11 @@ import { loadTheme, resolveTheme } from '../theme/load-theme.js';
|
|
|
17
17
|
import { builtinThemeCatalog } from '../theme/theme-catalog.js';
|
|
18
18
|
import { renderNode } from './blocks.js';
|
|
19
19
|
import { assembleDocument } from './document.js';
|
|
20
|
+
import { embeddedFontCss } from './font-faces.js';
|
|
21
|
+
import { hasOutline, renderOutline } from './outline.js';
|
|
20
22
|
import { buildRuntime, needsLiveRegion } from './runtime.js';
|
|
21
23
|
import { BASE_CSS, FEATURE_CSS } from './styles.js';
|
|
24
|
+
import { inverseSurfaceCss, usesInverseSurface } from './surface-styles.js';
|
|
22
25
|
import { verifyDocument, verifyIr } from './verify.js';
|
|
23
26
|
/** Fixed feature order: emitted bytes must not depend on discovery order. */
|
|
24
27
|
const FEATURE_ORDER = [
|
|
@@ -33,6 +36,17 @@ const FEATURE_ORDER = [
|
|
|
33
36
|
'chart',
|
|
34
37
|
'diagram',
|
|
35
38
|
'media',
|
|
39
|
+
'outline',
|
|
40
|
+
'frame',
|
|
41
|
+
'bento',
|
|
42
|
+
'marquee',
|
|
43
|
+
'terminal',
|
|
44
|
+
'tree',
|
|
45
|
+
'before-after',
|
|
46
|
+
'kpi',
|
|
47
|
+
'checklist',
|
|
48
|
+
'showcase',
|
|
49
|
+
'cta',
|
|
36
50
|
];
|
|
37
51
|
function collectFeatures(ir, includeTheme) {
|
|
38
52
|
const features = new Set();
|
|
@@ -42,6 +56,13 @@ function collectFeatures(ir, includeTheme) {
|
|
|
42
56
|
}
|
|
43
57
|
if (includeTheme)
|
|
44
58
|
features.add('theme');
|
|
59
|
+
if (hasOutline(ir))
|
|
60
|
+
features.add('outline');
|
|
61
|
+
// The browser frame is a style feature with no block of its own: the
|
|
62
|
+
// showcase always draws one, and a hero draws one around its optional shot.
|
|
63
|
+
const heroShot = ir.nodes.some((node) => node.type === 'hero' && typeof node.props.src === 'string');
|
|
64
|
+
if (heroShot || features.has('showcase'))
|
|
65
|
+
features.add('frame');
|
|
45
66
|
return features;
|
|
46
67
|
}
|
|
47
68
|
function collectOrigins(ir) {
|
|
@@ -60,21 +81,25 @@ function collectOrigins(ir) {
|
|
|
60
81
|
}
|
|
61
82
|
};
|
|
62
83
|
for (const node of ir.nodes) {
|
|
63
|
-
|
|
84
|
+
// Only players load through the media capability; every other block that
|
|
85
|
+
// carries a source shows a still image.
|
|
86
|
+
const capability = node.type === 'video' || node.type === 'audio' ? 'media' : 'images';
|
|
64
87
|
const src = node.props.src;
|
|
65
88
|
if (typeof src === 'string')
|
|
66
89
|
add(src, capability);
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
90
|
+
const nested = [
|
|
91
|
+
...(Array.isArray(node.props.items) ? node.props.items : []),
|
|
92
|
+
node.props.before,
|
|
93
|
+
node.props.after,
|
|
94
|
+
];
|
|
95
|
+
for (const item of nested) {
|
|
96
|
+
if (isPlainObject(item) && typeof item.src === 'string')
|
|
97
|
+
add(item.src, capability);
|
|
73
98
|
}
|
|
74
99
|
}
|
|
75
100
|
return origins;
|
|
76
101
|
}
|
|
77
|
-
function buildCss(features, theme) {
|
|
102
|
+
function buildCss(features, theme, ir) {
|
|
78
103
|
const sheets = [BASE_CSS];
|
|
79
104
|
for (const feature of FEATURE_ORDER) {
|
|
80
105
|
if (!features.has(feature))
|
|
@@ -84,7 +109,21 @@ function buildCss(features, theme) {
|
|
|
84
109
|
sheets.push(sheet);
|
|
85
110
|
}
|
|
86
111
|
sheets.push(theme.css);
|
|
87
|
-
|
|
112
|
+
// The night band redeclares colour tokens, so it must follow the theme sheet.
|
|
113
|
+
if (usesInverseSurface(ir.nodes))
|
|
114
|
+
sheets.push(inverseSurfaceCss(theme));
|
|
115
|
+
const css = sheets.join('\n');
|
|
116
|
+
return theme.motionPolicy === 'none' ? withoutMotion(css) : css;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Every animation in the emitted CSS sits behind
|
|
120
|
+
* `(prefers-reduced-motion:no-preference)`. A theme that disables motion turns
|
|
121
|
+
* that condition into one that never matches, so the page renders exactly as it
|
|
122
|
+
* does for a reader who asked the system to reduce motion.
|
|
123
|
+
*/
|
|
124
|
+
const MOTION_ALLOWED = '(prefers-reduced-motion:no-preference)';
|
|
125
|
+
function withoutMotion(css) {
|
|
126
|
+
return css.replaceAll(MOTION_ALLOWED, `${MOTION_ALLOWED} and (prefers-reduced-motion:reduce)`);
|
|
88
127
|
}
|
|
89
128
|
function bodyNeedsRuntime(body) {
|
|
90
129
|
return body.includes('data-ak-on-') || body.includes('data-ak-dialog-open');
|
|
@@ -146,7 +185,6 @@ export function compile(spec, options = {}) {
|
|
|
146
185
|
}
|
|
147
186
|
const includeThemeToggle = options.themeToggle !== false;
|
|
148
187
|
const features = collectFeatures(ir, includeThemeToggle);
|
|
149
|
-
const css = buildCss(features, resolved);
|
|
150
188
|
const irDiagnostics = verifyIr(ir, features);
|
|
151
189
|
if (irDiagnostics.some((diagnostic) => diagnostic.severity === 'error')) {
|
|
152
190
|
throw new RenderError('INTERNAL_ERROR', 'IR verification failed', {
|
|
@@ -159,6 +197,9 @@ export function compile(spec, options = {}) {
|
|
|
159
197
|
warnings: renderWarnings,
|
|
160
198
|
...(options.diagramAdapter === undefined ? {} : { diagramAdapter: options.diagramAdapter }),
|
|
161
199
|
});
|
|
200
|
+
// Faces come first and need the rendered text, which decides their subsets.
|
|
201
|
+
const fonts = embeddedFontCss(resolved, `${ir.meta.title}\n${body}`);
|
|
202
|
+
const css = [fonts, buildCss(features, resolved, ir)].filter((sheet) => sheet !== '').join('\n');
|
|
162
203
|
const runtimeNeeded = features.size > 0 || bodyNeedsRuntime(body);
|
|
163
204
|
const js = runtimeNeeded
|
|
164
205
|
? buildRuntime({ features, state: ir.state, hasBindings: bodyNeedsRuntime(body) })
|
|
@@ -172,6 +213,8 @@ export function compile(spec, options = {}) {
|
|
|
172
213
|
allowedOrigins: collectOrigins(ir),
|
|
173
214
|
themeToggle: includeThemeToggle,
|
|
174
215
|
density: resolved.density,
|
|
216
|
+
motionDisabled: resolved.motionPolicy === 'none',
|
|
217
|
+
outline: renderOutline(ir),
|
|
175
218
|
});
|
|
176
219
|
const verification = verifyDocument({
|
|
177
220
|
html: assembled.html,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/render/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAmB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAwB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAsB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAqB,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAsB,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA+BvD,6EAA6E;AAC7E,MAAM,aAAa,GAA8B;IAC/C,MAAM;IACN,WAAW;IACX,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,OAAO;IACP,OAAO;IACP,SAAS;IACT,OAAO;
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/render/render.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/render/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,+DAA+D;IAC/D,WAAW,EAAE,OAAO,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/render/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,+DAA+D;IAC/D,WAAW,EAAE,OAAO,CAAC;CACtB;AAqjBD,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CA2C5D;AAED,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,cAAc,CAAC,GAAG,OAAO,CAE9E"}
|