@bestagentkits/render 0.1.1-next.1 → 0.3.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 +209 -1
- package/README.md +324 -44
- 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/blocks/chart/chart-check-kind-rules.d.ts +10 -0
- package/dist/blocks/chart/chart-check-kind-rules.d.ts.map +1 -0
- package/dist/blocks/chart/chart-check-kind-rules.js +151 -0
- package/dist/blocks/chart/chart-check-kind-rules.js.map +1 -0
- package/dist/blocks/chart/chart-check.d.ts +15 -0
- package/dist/blocks/chart/chart-check.d.ts.map +1 -0
- package/dist/blocks/chart/chart-check.js +196 -0
- package/dist/blocks/chart/chart-check.js.map +1 -0
- package/dist/blocks/chart/chart-encoding-schema.d.ts +7 -0
- package/dist/blocks/chart/chart-encoding-schema.d.ts.map +1 -0
- package/dist/blocks/chart/chart-encoding-schema.js +39 -0
- package/dist/blocks/chart/chart-encoding-schema.js.map +1 -0
- package/dist/blocks/chart/chart-encodings.d.ts +29 -0
- package/dist/blocks/chart/chart-encodings.d.ts.map +1 -0
- package/dist/blocks/chart/chart-encodings.js +59 -0
- package/dist/blocks/chart/chart-encodings.js.map +1 -0
- package/dist/blocks/chart/chart-kinds.d.ts +18 -0
- package/dist/blocks/chart/chart-kinds.d.ts.map +1 -0
- package/dist/blocks/chart/chart-kinds.js +60 -0
- package/dist/blocks/chart/chart-kinds.js.map +1 -0
- package/dist/blocks/chart/chart-model-rows.d.ts +23 -0
- package/dist/blocks/chart/chart-model-rows.d.ts.map +1 -0
- package/dist/blocks/chart/chart-model-rows.js +153 -0
- package/dist/blocks/chart/chart-model-rows.js.map +1 -0
- package/dist/blocks/chart/chart-model.d.ts +17 -0
- package/dist/blocks/chart/chart-model.d.ts.map +1 -0
- package/dist/blocks/chart/chart-model.js +131 -0
- package/dist/blocks/chart/chart-model.js.map +1 -0
- package/dist/blocks/chart/chart-styles.d.ts +3 -0
- package/dist/blocks/chart/chart-styles.d.ts.map +1 -0
- package/dist/blocks/chart/chart-styles.js +76 -0
- package/dist/blocks/chart/chart-styles.js.map +1 -0
- package/dist/blocks/chart/chart.d.ts +12 -0
- package/dist/blocks/chart/chart.d.ts.map +1 -0
- package/dist/blocks/chart/chart.js +73 -0
- package/dist/blocks/chart/chart.js.map +1 -0
- package/dist/blocks/chart/index.d.ts +4 -0
- package/dist/blocks/chart/index.d.ts.map +1 -0
- package/dist/blocks/chart/index.js +8 -0
- package/dist/blocks/chart/index.js.map +1 -0
- package/dist/blocks/composition/accordion.d.ts +4 -0
- package/dist/blocks/composition/accordion.d.ts.map +1 -0
- package/dist/blocks/composition/accordion.js +45 -0
- package/dist/blocks/composition/accordion.js.map +1 -0
- package/dist/blocks/composition/bento.d.ts +4 -0
- package/dist/blocks/composition/bento.d.ts.map +1 -0
- package/dist/blocks/composition/bento.js +91 -0
- package/dist/blocks/composition/bento.js.map +1 -0
- package/dist/blocks/composition/carousel.d.ts +4 -0
- package/dist/blocks/composition/carousel.d.ts.map +1 -0
- package/dist/blocks/composition/carousel.js +51 -0
- package/dist/blocks/composition/carousel.js.map +1 -0
- package/dist/blocks/composition/composition-runtime.d.ts +14 -0
- package/dist/blocks/composition/composition-runtime.d.ts.map +1 -0
- package/dist/blocks/composition/composition-runtime.js +136 -0
- package/dist/blocks/composition/composition-runtime.js.map +1 -0
- package/dist/blocks/composition/composition-styles.d.ts +10 -0
- package/dist/blocks/composition/composition-styles.d.ts.map +1 -0
- package/dist/blocks/composition/composition-styles.js +80 -0
- package/dist/blocks/composition/composition-styles.js.map +1 -0
- package/dist/blocks/composition/index.d.ts +4 -0
- package/dist/blocks/composition/index.d.ts.map +1 -0
- package/dist/blocks/composition/index.js +11 -0
- package/dist/blocks/composition/index.js.map +1 -0
- package/dist/blocks/composition/nestable-blocks.d.ts +37 -0
- package/dist/blocks/composition/nestable-blocks.d.ts.map +1 -0
- package/dist/blocks/composition/nestable-blocks.js +92 -0
- package/dist/blocks/composition/nestable-blocks.js.map +1 -0
- package/dist/blocks/composition/tabs.d.ts +4 -0
- package/dist/blocks/composition/tabs.d.ts.map +1 -0
- package/dist/blocks/composition/tabs.js +48 -0
- package/dist/blocks/composition/tabs.js.map +1 -0
- package/dist/blocks/controls/checkbox.d.ts +12 -0
- package/dist/blocks/controls/checkbox.d.ts.map +1 -0
- package/dist/blocks/controls/checkbox.js +43 -0
- package/dist/blocks/controls/checkbox.js.map +1 -0
- package/dist/blocks/controls/choice-options.d.ts +24 -0
- package/dist/blocks/controls/choice-options.d.ts.map +1 -0
- package/dist/blocks/controls/choice-options.js +117 -0
- package/dist/blocks/controls/choice-options.js.map +1 -0
- package/dist/blocks/controls/control-shared.d.ts +66 -0
- package/dist/blocks/controls/control-shared.d.ts.map +1 -0
- package/dist/blocks/controls/control-shared.js +241 -0
- package/dist/blocks/controls/control-shared.js.map +1 -0
- package/dist/blocks/controls/controls-runtime.d.ts +17 -0
- package/dist/blocks/controls/controls-runtime.d.ts.map +1 -0
- package/dist/blocks/controls/controls-runtime.js +180 -0
- package/dist/blocks/controls/controls-runtime.js.map +1 -0
- package/dist/blocks/controls/controls-styles.d.ts +14 -0
- package/dist/blocks/controls/controls-styles.d.ts.map +1 -0
- package/dist/blocks/controls/controls-styles.js +54 -0
- package/dist/blocks/controls/controls-styles.js.map +1 -0
- package/dist/blocks/controls/date-input.d.ts +6 -0
- package/dist/blocks/controls/date-input.d.ts.map +1 -0
- package/dist/blocks/controls/date-input.js +58 -0
- package/dist/blocks/controls/date-input.js.map +1 -0
- package/dist/blocks/controls/field-input.d.ts +10 -0
- package/dist/blocks/controls/field-input.d.ts.map +1 -0
- package/dist/blocks/controls/field-input.js +20 -0
- package/dist/blocks/controls/field-input.js.map +1 -0
- package/dist/blocks/controls/filter-bar.d.ts +11 -0
- package/dist/blocks/controls/filter-bar.d.ts.map +1 -0
- package/dist/blocks/controls/filter-bar.js +115 -0
- package/dist/blocks/controls/filter-bar.js.map +1 -0
- package/dist/blocks/controls/index.d.ts +4 -0
- package/dist/blocks/controls/index.d.ts.map +1 -0
- package/dist/blocks/controls/index.js +41 -0
- package/dist/blocks/controls/index.js.map +1 -0
- package/dist/blocks/controls/number-input.d.ts +4 -0
- package/dist/blocks/controls/number-input.d.ts.map +1 -0
- package/dist/blocks/controls/number-input.js +62 -0
- package/dist/blocks/controls/number-input.js.map +1 -0
- package/dist/blocks/controls/radio-group.d.ts +4 -0
- package/dist/blocks/controls/radio-group.d.ts.map +1 -0
- package/dist/blocks/controls/radio-group.js +56 -0
- package/dist/blocks/controls/radio-group.js.map +1 -0
- package/dist/blocks/controls/select.d.ts +4 -0
- package/dist/blocks/controls/select.d.ts.map +1 -0
- package/dist/blocks/controls/select.js +49 -0
- package/dist/blocks/controls/select.js.map +1 -0
- package/dist/blocks/controls/switch.d.ts +4 -0
- package/dist/blocks/controls/switch.d.ts.map +1 -0
- package/dist/blocks/controls/switch.js +22 -0
- package/dist/blocks/controls/switch.js.map +1 -0
- package/dist/blocks/controls/text-input.d.ts +4 -0
- package/dist/blocks/controls/text-input.d.ts.map +1 -0
- package/dist/blocks/controls/text-input.js +42 -0
- package/dist/blocks/controls/text-input.js.map +1 -0
- package/dist/blocks/data-table/data-table-cells.d.ts +26 -0
- package/dist/blocks/data-table/data-table-cells.d.ts.map +1 -0
- package/dist/blocks/data-table/data-table-cells.js +154 -0
- package/dist/blocks/data-table/data-table-cells.js.map +1 -0
- package/dist/blocks/data-table/data-table-check.d.ts +10 -0
- package/dist/blocks/data-table/data-table-check.d.ts.map +1 -0
- package/dist/blocks/data-table/data-table-check.js +99 -0
- package/dist/blocks/data-table/data-table-check.js.map +1 -0
- package/dist/blocks/data-table/data-table-columns.d.ts +41 -0
- package/dist/blocks/data-table/data-table-columns.d.ts.map +1 -0
- package/dist/blocks/data-table/data-table-columns.js +155 -0
- package/dist/blocks/data-table/data-table-columns.js.map +1 -0
- package/dist/blocks/data-table/data-table-runtime.d.ts +15 -0
- package/dist/blocks/data-table/data-table-runtime.d.ts.map +1 -0
- package/dist/blocks/data-table/data-table-runtime.js +106 -0
- package/dist/blocks/data-table/data-table-runtime.js.map +1 -0
- package/dist/blocks/data-table/data-table-styles.d.ts +11 -0
- package/dist/blocks/data-table/data-table-styles.d.ts.map +1 -0
- package/dist/blocks/data-table/data-table-styles.js +74 -0
- package/dist/blocks/data-table/data-table-styles.js.map +1 -0
- package/dist/blocks/data-table/data-table.d.ts +17 -0
- package/dist/blocks/data-table/data-table.d.ts.map +1 -0
- package/dist/blocks/data-table/data-table.js +159 -0
- package/dist/blocks/data-table/data-table.js.map +1 -0
- package/dist/blocks/data-table/index.d.ts +4 -0
- package/dist/blocks/data-table/index.d.ts.map +1 -0
- package/dist/blocks/data-table/index.js +18 -0
- package/dist/blocks/data-table/index.js.map +1 -0
- package/dist/blocks/engineering/api-endpoint.d.ts +12 -0
- package/dist/blocks/engineering/api-endpoint.d.ts.map +1 -0
- package/dist/blocks/engineering/api-endpoint.js +174 -0
- package/dist/blocks/engineering/api-endpoint.js.map +1 -0
- package/dist/blocks/engineering/engineering-helpers.d.ts +49 -0
- package/dist/blocks/engineering/engineering-helpers.d.ts.map +1 -0
- package/dist/blocks/engineering/engineering-helpers.js +156 -0
- package/dist/blocks/engineering/engineering-helpers.js.map +1 -0
- package/dist/blocks/engineering/engineering-styles.d.ts +12 -0
- package/dist/blocks/engineering/engineering-styles.d.ts.map +1 -0
- package/dist/blocks/engineering/engineering-styles.js +174 -0
- package/dist/blocks/engineering/engineering-styles.js.map +1 -0
- package/dist/blocks/engineering/index.d.ts +4 -0
- package/dist/blocks/engineering/index.d.ts.map +1 -0
- package/dist/blocks/engineering/index.js +30 -0
- package/dist/blocks/engineering/index.js.map +1 -0
- package/dist/blocks/engineering/kanban.d.ts +11 -0
- package/dist/blocks/engineering/kanban.d.ts.map +1 -0
- package/dist/blocks/engineering/kanban.js +162 -0
- package/dist/blocks/engineering/kanban.js.map +1 -0
- package/dist/blocks/engineering/log-viewer.d.ts +14 -0
- package/dist/blocks/engineering/log-viewer.d.ts.map +1 -0
- package/dist/blocks/engineering/log-viewer.js +158 -0
- package/dist/blocks/engineering/log-viewer.js.map +1 -0
- package/dist/blocks/engineering/roadmap.d.ts +13 -0
- package/dist/blocks/engineering/roadmap.d.ts.map +1 -0
- package/dist/blocks/engineering/roadmap.js +197 -0
- package/dist/blocks/engineering/roadmap.js.map +1 -0
- package/dist/blocks/engineering/schema-viewer.d.ts +25 -0
- package/dist/blocks/engineering/schema-viewer.d.ts.map +1 -0
- package/dist/blocks/engineering/schema-viewer.js +124 -0
- package/dist/blocks/engineering/schema-viewer.js.map +1 -0
- package/dist/blocks/engineering/test-results.d.ts +12 -0
- package/dist/blocks/engineering/test-results.d.ts.map +1 -0
- package/dist/blocks/engineering/test-results.js +180 -0
- package/dist/blocks/engineering/test-results.js.map +1 -0
- package/dist/blocks/evidence/annotated-image.d.ts +15 -0
- package/dist/blocks/evidence/annotated-image.d.ts.map +1 -0
- package/dist/blocks/evidence/annotated-image.js +99 -0
- package/dist/blocks/evidence/annotated-image.js.map +1 -0
- package/dist/blocks/evidence/benchmark-comparison.d.ts +11 -0
- package/dist/blocks/evidence/benchmark-comparison.d.ts.map +1 -0
- package/dist/blocks/evidence/benchmark-comparison.js +262 -0
- package/dist/blocks/evidence/benchmark-comparison.js.map +1 -0
- package/dist/blocks/evidence/benchmark-verdict.d.ts +26 -0
- package/dist/blocks/evidence/benchmark-verdict.d.ts.map +1 -0
- package/dist/blocks/evidence/benchmark-verdict.js +31 -0
- package/dist/blocks/evidence/benchmark-verdict.js.map +1 -0
- package/dist/blocks/evidence/evidence-helpers.d.ts +39 -0
- package/dist/blocks/evidence/evidence-helpers.d.ts.map +1 -0
- package/dist/blocks/evidence/evidence-helpers.js +87 -0
- package/dist/blocks/evidence/evidence-helpers.js.map +1 -0
- package/dist/blocks/evidence/evidence-styles.d.ts +12 -0
- package/dist/blocks/evidence/evidence-styles.d.ts.map +1 -0
- package/dist/blocks/evidence/evidence-styles.js +88 -0
- package/dist/blocks/evidence/evidence-styles.js.map +1 -0
- package/dist/blocks/evidence/index.d.ts +4 -0
- package/dist/blocks/evidence/index.d.ts.map +1 -0
- package/dist/blocks/evidence/index.js +15 -0
- package/dist/blocks/evidence/index.js.map +1 -0
- package/dist/blocks/evidence/metric-breakdown.d.ts +22 -0
- package/dist/blocks/evidence/metric-breakdown.d.ts.map +1 -0
- package/dist/blocks/evidence/metric-breakdown.js +203 -0
- package/dist/blocks/evidence/metric-breakdown.js.map +1 -0
- package/dist/blocks/evidence/references.d.ts +13 -0
- package/dist/blocks/evidence/references.d.ts.map +1 -0
- package/dist/blocks/evidence/references.js +103 -0
- package/dist/blocks/evidence/references.js.map +1 -0
- package/dist/blocks/index.d.ts +8 -0
- package/dist/blocks/index.d.ts.map +1 -0
- package/dist/blocks/index.js +24 -0
- package/dist/blocks/index.js.map +1 -0
- package/dist/blocks/layout/grid-item.d.ts +4 -0
- package/dist/blocks/layout/grid-item.d.ts.map +1 -0
- package/dist/blocks/layout/grid-item.js +65 -0
- package/dist/blocks/layout/grid-item.js.map +1 -0
- package/dist/blocks/layout/grid.d.ts +9 -0
- package/dist/blocks/layout/grid.d.ts.map +1 -0
- package/dist/blocks/layout/grid.js +99 -0
- package/dist/blocks/layout/grid.js.map +1 -0
- package/dist/blocks/layout/index.d.ts +4 -0
- package/dist/blocks/layout/index.d.ts.map +1 -0
- package/dist/blocks/layout/index.js +23 -0
- package/dist/blocks/layout/index.js.map +1 -0
- package/dist/blocks/layout/layout-styles.d.ts +40 -0
- package/dist/blocks/layout/layout-styles.d.ts.map +1 -0
- package/dist/blocks/layout/layout-styles.js +110 -0
- package/dist/blocks/layout/layout-styles.js.map +1 -0
- package/dist/blocks/layout/main-aside.d.ts +4 -0
- package/dist/blocks/layout/main-aside.d.ts.map +1 -0
- package/dist/blocks/layout/main-aside.js +21 -0
- package/dist/blocks/layout/main-aside.js.map +1 -0
- package/dist/blocks/layout/rail-layout.d.ts +4 -0
- package/dist/blocks/layout/rail-layout.d.ts.map +1 -0
- package/dist/blocks/layout/rail-layout.js +33 -0
- package/dist/blocks/layout/rail-layout.js.map +1 -0
- package/dist/blocks/layout/semantic-layout-parts.d.ts +14 -0
- package/dist/blocks/layout/semantic-layout-parts.d.ts.map +1 -0
- package/dist/blocks/layout/semantic-layout-parts.js +9 -0
- package/dist/blocks/layout/semantic-layout-parts.js.map +1 -0
- package/dist/blocks/layout/sidebar-layout.d.ts +4 -0
- package/dist/blocks/layout/sidebar-layout.d.ts.map +1 -0
- package/dist/blocks/layout/sidebar-layout.js +30 -0
- package/dist/blocks/layout/sidebar-layout.js.map +1 -0
- package/dist/blocks/layout/split.d.ts +4 -0
- package/dist/blocks/layout/split.d.ts.map +1 -0
- package/dist/blocks/layout/split.js +23 -0
- package/dist/blocks/layout/split.js.map +1 -0
- package/dist/blocks/layout/stack.d.ts +4 -0
- package/dist/blocks/layout/stack.d.ts.map +1 -0
- package/dist/blocks/layout/stack.js +36 -0
- package/dist/blocks/layout/stack.js.map +1 -0
- package/dist/blocks/product/calendar-dates.d.ts +59 -0
- package/dist/blocks/product/calendar-dates.d.ts.map +1 -0
- package/dist/blocks/product/calendar-dates.js +100 -0
- package/dist/blocks/product/calendar-dates.js.map +1 -0
- package/dist/blocks/product/calendar.d.ts +12 -0
- package/dist/blocks/product/calendar.d.ts.map +1 -0
- package/dist/blocks/product/calendar.js +125 -0
- package/dist/blocks/product/calendar.js.map +1 -0
- package/dist/blocks/product/feature-matrix.d.ts +4 -0
- package/dist/blocks/product/feature-matrix.d.ts.map +1 -0
- package/dist/blocks/product/feature-matrix.js +72 -0
- package/dist/blocks/product/feature-matrix.js.map +1 -0
- package/dist/blocks/product/gallery.d.ts +14 -0
- package/dist/blocks/product/gallery.d.ts.map +1 -0
- package/dist/blocks/product/gallery.js +86 -0
- package/dist/blocks/product/gallery.js.map +1 -0
- package/dist/blocks/product/index.d.ts +4 -0
- package/dist/blocks/product/index.d.ts.map +1 -0
- package/dist/blocks/product/index.js +40 -0
- package/dist/blocks/product/index.js.map +1 -0
- package/dist/blocks/product/logo-cloud.d.ts +4 -0
- package/dist/blocks/product/logo-cloud.d.ts.map +1 -0
- package/dist/blocks/product/logo-cloud.js +42 -0
- package/dist/blocks/product/logo-cloud.js.map +1 -0
- package/dist/blocks/product/people.d.ts +4 -0
- package/dist/blocks/product/people.d.ts.map +1 -0
- package/dist/blocks/product/people.js +53 -0
- package/dist/blocks/product/people.js.map +1 -0
- package/dist/blocks/product/pricing.d.ts +4 -0
- package/dist/blocks/product/pricing.d.ts.map +1 -0
- package/dist/blocks/product/pricing.js +86 -0
- package/dist/blocks/product/pricing.js.map +1 -0
- package/dist/blocks/product/product-helpers.d.ts +22 -0
- package/dist/blocks/product/product-helpers.d.ts.map +1 -0
- package/dist/blocks/product/product-helpers.js +48 -0
- package/dist/blocks/product/product-helpers.js.map +1 -0
- package/dist/blocks/product/product-runtime.d.ts +15 -0
- package/dist/blocks/product/product-runtime.d.ts.map +1 -0
- package/dist/blocks/product/product-runtime.js +97 -0
- package/dist/blocks/product/product-runtime.js.map +1 -0
- package/dist/blocks/product/product-styles.d.ts +14 -0
- package/dist/blocks/product/product-styles.d.ts.map +1 -0
- package/dist/blocks/product/product-styles.js +120 -0
- package/dist/blocks/product/product-styles.js.map +1 -0
- package/dist/blocks/product/testimonial.d.ts +8 -0
- package/dist/blocks/product/testimonial.d.ts.map +1 -0
- package/dist/blocks/product/testimonial.js +67 -0
- package/dist/blocks/product/testimonial.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +193 -39
- package/dist/cli.js.map +1 -1
- package/dist/data/data-json-schema.d.ts +9 -0
- package/dist/data/data-json-schema.d.ts.map +1 -0
- package/dist/data/data-json-schema.js +48 -0
- package/dist/data/data-json-schema.js.map +1 -0
- package/dist/data/dataset-types.d.ts +47 -0
- package/dist/data/dataset-types.d.ts.map +1 -0
- package/dist/data/dataset-types.js +49 -0
- package/dist/data/dataset-types.js.map +1 -0
- package/dist/data/format-value.d.ts +39 -0
- package/dist/data/format-value.d.ts.map +1 -0
- package/dist/data/format-value.js +214 -0
- package/dist/data/format-value.js.map +1 -0
- package/dist/data/resolve-block-data.d.ts +24 -0
- package/dist/data/resolve-block-data.d.ts.map +1 -0
- package/dist/data/resolve-block-data.js +190 -0
- package/dist/data/resolve-block-data.js.map +1 -0
- package/dist/data/transform-pipeline.d.ts +65 -0
- package/dist/data/transform-pipeline.d.ts.map +1 -0
- package/dist/data/transform-pipeline.js +234 -0
- package/dist/data/transform-pipeline.js.map +1 -0
- package/dist/data/validate-datasets.d.ts +22 -0
- package/dist/data/validate-datasets.d.ts.map +1 -0
- package/dist/data/validate-datasets.js +137 -0
- package/dist/data/validate-datasets.js.map +1 -0
- package/dist/diagram/adapter-markup-fit.d.ts +44 -0
- package/dist/diagram/adapter-markup-fit.d.ts.map +1 -0
- package/dist/diagram/adapter-markup-fit.js +292 -0
- package/dist/diagram/adapter-markup-fit.js.map +1 -0
- package/dist/diagram/adapter-stylesheet-filter.d.ts +56 -0
- package/dist/diagram/adapter-stylesheet-filter.d.ts.map +1 -0
- package/dist/diagram/adapter-stylesheet-filter.js +245 -0
- package/dist/diagram/adapter-stylesheet-filter.js.map +1 -0
- package/dist/diagram/adapter.d.ts +17 -0
- package/dist/diagram/adapter.d.ts.map +1 -1
- package/dist/diagram/adapter.js +43 -2
- package/dist/diagram/adapter.js.map +1 -1
- package/dist/index.d.ts +14 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/ir.d.ts +18 -0
- package/dist/ir.d.ts.map +1 -1
- package/dist/ir.js.map +1 -1
- package/dist/mcp/mcp-http-transport.d.ts +68 -0
- package/dist/mcp/mcp-http-transport.d.ts.map +1 -0
- package/dist/mcp/mcp-http-transport.js +140 -0
- package/dist/mcp/mcp-http-transport.js.map +1 -0
- package/dist/mcp/mcp-json-rpc-dispatch.d.ts +38 -0
- package/dist/mcp/mcp-json-rpc-dispatch.d.ts.map +1 -0
- package/dist/mcp/mcp-json-rpc-dispatch.js +98 -0
- package/dist/mcp/mcp-json-rpc-dispatch.js.map +1 -0
- package/dist/mcp/mcp-local-tools.d.ts +20 -0
- package/dist/mcp/mcp-local-tools.d.ts.map +1 -0
- package/dist/mcp/mcp-local-tools.js +58 -0
- package/dist/mcp/mcp-local-tools.js.map +1 -0
- package/dist/mcp/mcp-protocol.d.ts +79 -0
- package/dist/mcp/mcp-protocol.d.ts.map +1 -0
- package/dist/mcp/mcp-protocol.js +83 -0
- package/dist/mcp/mcp-protocol.js.map +1 -0
- package/dist/mcp/mcp-stdio-transport.d.ts +28 -0
- package/dist/mcp/mcp-stdio-transport.d.ts.map +1 -0
- package/dist/mcp/mcp-stdio-transport.js +73 -0
- package/dist/mcp/mcp-stdio-transport.js.map +1 -0
- package/dist/mcp/mcp-tool-definitions.d.ts +66 -0
- package/dist/mcp/mcp-tool-definitions.d.ts.map +1 -0
- package/dist/mcp/mcp-tool-definitions.js +246 -0
- package/dist/mcp/mcp-tool-definitions.js.map +1 -0
- package/dist/mcp-server.d.ts +10 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +9 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/recipes/index.d.ts +27 -0
- package/dist/recipes/index.d.ts.map +1 -0
- package/dist/recipes/index.js +30 -0
- package/dist/recipes/index.js.map +1 -0
- package/dist/recipes/recipes.generated.d.ts +8 -0
- package/dist/recipes/recipes.generated.d.ts.map +1 -0
- package/dist/recipes/recipes.generated.js +704 -0
- package/dist/recipes/recipes.generated.js.map +1 -0
- package/dist/registry/actions.d.ts +2 -0
- package/dist/registry/actions.d.ts.map +1 -1
- package/dist/registry/actions.js +3 -1
- package/dist/registry/actions.js.map +1 -1
- package/dist/registry/block-module.d.ts +65 -0
- package/dist/registry/block-module.d.ts.map +1 -0
- package/dist/registry/block-module.js +19 -0
- package/dist/registry/block-module.js.map +1 -0
- package/dist/registry/catalog-search.d.ts +32 -0
- package/dist/registry/catalog-search.d.ts.map +1 -0
- package/dist/registry/catalog-search.js +122 -0
- package/dist/registry/catalog-search.js.map +1 -0
- package/dist/registry/define-helpers.d.ts +89 -0
- package/dist/registry/define-helpers.d.ts.map +1 -0
- package/dist/registry/define-helpers.js +87 -0
- package/dist/registry/define-helpers.js.map +1 -0
- package/dist/registry/describe-many.d.ts +58 -0
- package/dist/registry/describe-many.d.ts.map +1 -0
- package/dist/registry/describe-many.js +156 -0
- package/dist/registry/describe-many.js.map +1 -0
- package/dist/registry/prop-schema.d.ts +32 -1
- package/dist/registry/prop-schema.d.ts.map +1 -1
- package/dist/registry/prop-schema.js +108 -2
- package/dist/registry/prop-schema.js.map +1 -1
- package/dist/registry/registry-builder.d.ts +17 -0
- package/dist/registry/registry-builder.d.ts.map +1 -0
- package/dist/registry/registry-builder.js +158 -0
- package/dist/registry/registry-builder.js.map +1 -0
- package/dist/registry/registry.d.ts +32 -5
- package/dist/registry/registry.d.ts.map +1 -1
- package/dist/registry/registry.js +67 -14
- package/dist/registry/registry.js.map +1 -1
- package/dist/registry/roster.d.ts +34 -5
- package/dist/registry/roster.d.ts.map +1 -1
- package/dist/registry/roster.js +360 -184
- package/dist/registry/roster.js.map +1 -1
- package/dist/render/block-helpers.d.ts +45 -0
- package/dist/render/block-helpers.d.ts.map +1 -0
- package/dist/render/block-helpers.js +83 -0
- package/dist/render/block-helpers.js.map +1 -0
- package/dist/render/blocks.d.ts +10 -35
- package/dist/render/blocks.d.ts.map +1 -1
- package/dist/render/blocks.js +144 -263
- package/dist/render/blocks.js.map +1 -1
- package/dist/render/chart-figure-encoded.d.ts +11 -0
- package/dist/render/chart-figure-encoded.d.ts.map +1 -0
- package/dist/render/chart-figure-encoded.js +81 -0
- package/dist/render/chart-figure-encoded.js.map +1 -0
- package/dist/render/chart-kinds-cartesian.d.ts +14 -0
- package/dist/render/chart-kinds-cartesian.d.ts.map +1 -0
- package/dist/render/chart-kinds-cartesian.js +122 -0
- package/dist/render/chart-kinds-cartesian.js.map +1 -0
- package/dist/render/chart-kinds-composite.d.ts +16 -0
- package/dist/render/chart-kinds-composite.d.ts.map +1 -0
- package/dist/render/chart-kinds-composite.js +144 -0
- package/dist/render/chart-kinds-composite.js.map +1 -0
- package/dist/render/chart-kinds-gauge-treemap.d.ts +8 -0
- package/dist/render/chart-kinds-gauge-treemap.d.ts.map +1 -0
- package/dist/render/chart-kinds-gauge-treemap.js +101 -0
- package/dist/render/chart-kinds-gauge-treemap.js.map +1 -0
- package/dist/render/chart-kinds-histogram-waterfall.d.ts +17 -0
- package/dist/render/chart-kinds-histogram-waterfall.d.ts.map +1 -0
- package/dist/render/chart-kinds-histogram-waterfall.js +172 -0
- package/dist/render/chart-kinds-histogram-waterfall.js.map +1 -0
- package/dist/render/chart-overlays.d.ts +18 -0
- package/dist/render/chart-overlays.d.ts.map +1 -0
- package/dist/render/chart-overlays.js +58 -0
- package/dist/render/chart-overlays.js.map +1 -0
- package/dist/render/chart-scales.d.ts +83 -0
- package/dist/render/chart-scales.d.ts.map +1 -0
- package/dist/render/chart-scales.js +166 -0
- package/dist/render/chart-scales.js.map +1 -0
- package/dist/render/chart-svg-parts.d.ts +50 -0
- package/dist/render/chart-svg-parts.d.ts.map +1 -0
- package/dist/render/chart-svg-parts.js +125 -0
- package/dist/render/chart-svg-parts.js.map +1 -0
- package/dist/render/chart-text.d.ts +18 -0
- package/dist/render/chart-text.d.ts.map +1 -0
- package/dist/render/chart-text.js +69 -0
- package/dist/render/chart-text.js.map +1 -0
- package/dist/render/chart-treemap-layout.d.ts +17 -0
- package/dist/render/chart-treemap-layout.d.ts.map +1 -0
- package/dist/render/chart-treemap-layout.js +74 -0
- package/dist/render/chart-treemap-layout.js.map +1 -0
- package/dist/render/chart-types.d.ts +107 -0
- package/dist/render/chart-types.d.ts.map +1 -0
- package/dist/render/chart-types.js +11 -0
- package/dist/render/chart-types.js.map +1 -0
- package/dist/render/charts.d.ts +33 -11
- package/dist/render/charts.d.ts.map +1 -1
- package/dist/render/charts.js +145 -109
- package/dist/render/charts.js.map +1 -1
- package/dist/render/derived-variables.d.ts +37 -0
- package/dist/render/derived-variables.d.ts.map +1 -0
- package/dist/render/derived-variables.js +40 -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 +15 -0
- package/dist/render/document.d.ts.map +1 -1
- package/dist/render/document.js +53 -8
- 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/escape.d.ts +10 -0
- package/dist/render/escape.d.ts.map +1 -1
- package/dist/render/escape.js +28 -0
- package/dist/render/escape.js.map +1 -1
- 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 +123 -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 +47 -0
- package/dist/render/outline.js.map +1 -0
- package/dist/render/recipe-styles.d.ts +26 -0
- package/dist/render/recipe-styles.d.ts.map +1 -0
- package/dist/render/recipe-styles.js +218 -0
- package/dist/render/recipe-styles.js.map +1 -0
- package/dist/render/render-context.d.ts +40 -0
- package/dist/render/render-context.d.ts.map +1 -0
- package/dist/render/render-context.js +16 -0
- package/dist/render/render-context.js.map +1 -0
- package/dist/render/render.d.ts +7 -0
- package/dist/render/render.d.ts.map +1 -1
- package/dist/render/render.js +108 -41
- package/dist/render/render.js.map +1 -1
- package/dist/render/runtime.d.ts +4 -1
- package/dist/render/runtime.d.ts.map +1 -1
- package/dist/render/runtime.js +275 -128
- package/dist/render/runtime.js.map +1 -1
- package/dist/render/showcase-blocks.d.ts +52 -0
- package/dist/render/showcase-blocks.d.ts.map +1 -0
- package/dist/render/showcase-blocks.js +329 -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 +201 -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/style-units.d.ts +17 -0
- package/dist/render/style-units.d.ts.map +1 -0
- package/dist/render/style-units.js +24 -0
- package/dist/render/style-units.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 +228 -129
- 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/tone.d.ts +14 -0
- package/dist/render/tone.d.ts.map +1 -0
- package/dist/render/tone.js +40 -0
- package/dist/render/tone.js.map +1 -0
- package/dist/render/verify.d.ts +3 -0
- package/dist/render/verify.d.ts.map +1 -1
- package/dist/render/verify.js +45 -2
- package/dist/render/verify.js.map +1 -1
- package/dist/spec/asset-references.d.ts +35 -0
- package/dist/spec/asset-references.d.ts.map +1 -0
- package/dist/spec/asset-references.js +93 -0
- package/dist/spec/asset-references.js.map +1 -0
- package/dist/spec/bounds.d.ts +6 -0
- package/dist/spec/bounds.d.ts.map +1 -1
- package/dist/spec/bounds.js +7 -0
- package/dist/spec/bounds.js.map +1 -1
- package/dist/spec/conditions.d.ts +43 -0
- package/dist/spec/conditions.d.ts.map +1 -0
- package/dist/spec/conditions.js +179 -0
- package/dist/spec/conditions.js.map +1 -0
- package/dist/spec/network-policy.d.ts +33 -0
- package/dist/spec/network-policy.d.ts.map +1 -0
- package/dist/spec/network-policy.js +57 -0
- package/dist/spec/network-policy.js.map +1 -0
- package/dist/spec/normalize.d.ts +7 -2
- package/dist/spec/normalize.d.ts.map +1 -1
- package/dist/spec/normalize.js +219 -41
- package/dist/spec/normalize.js.map +1 -1
- package/dist/theme/dialect-presets.d.ts +12 -0
- package/dist/theme/dialect-presets.d.ts.map +1 -0
- package/dist/theme/dialect-presets.js +214 -0
- package/dist/theme/dialect-presets.js.map +1 -0
- package/dist/theme/load-theme.d.ts +11 -3
- package/dist/theme/load-theme.d.ts.map +1 -1
- package/dist/theme/load-theme.js +71 -12
- package/dist/theme/load-theme.js.map +1 -1
- package/dist/theme/preset-builder.d.ts +36 -0
- package/dist/theme/preset-builder.d.ts.map +1 -0
- package/dist/theme/preset-builder.js +51 -0
- package/dist/theme/preset-builder.js.map +1 -0
- package/dist/theme/presets.d.ts +8 -10
- package/dist/theme/presets.d.ts.map +1 -1
- package/dist/theme/presets.js +40 -56
- package/dist/theme/presets.js.map +1 -1
- package/dist/theme/recipes.d.ts +38 -0
- package/dist/theme/recipes.d.ts.map +1 -0
- package/dist/theme/recipes.js +96 -0
- package/dist/theme/recipes.js.map +1 -0
- package/dist/theme/theme-catalog.d.ts.map +1 -1
- package/dist/theme/theme-catalog.js +16 -0
- package/dist/theme/theme-catalog.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 +29 -0
- package/package.json +13 -3
|
@@ -0,0 +1,329 @@
|
|
|
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, escapeInlineText, escapeText, escapeUrl, renderAttributes, } from './escape.js';
|
|
17
|
+
/** An image allowed by the policy, or an honest note when it is not. */
|
|
18
|
+
export 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
|
+
export function paragraph(className, text) {
|
|
33
|
+
return text === '' ? '' : `<p class="${className}">${escapeText(text)}</p>`;
|
|
34
|
+
}
|
|
35
|
+
/** A paragraph of prose: backtick spans become inline code. */
|
|
36
|
+
export function prose(className, text) {
|
|
37
|
+
return text === '' ? '' : `<p class="${className}">${escapeInlineText(text)}</p>`;
|
|
38
|
+
}
|
|
39
|
+
// --- marquee ----------------------------------------------------------------
|
|
40
|
+
function marquee(node) {
|
|
41
|
+
const items = listProp(node, 'items').filter((item) => typeof item === 'string');
|
|
42
|
+
const entries = items.map((item) => `<li>${escapeText(item)}</li>`).join('');
|
|
43
|
+
const speed = stringProp(node, 'speed', 'normal');
|
|
44
|
+
// The first track is the real list. The second repeats it so the loop has no
|
|
45
|
+
// seam; it is hidden from assistive technology and only shown while moving.
|
|
46
|
+
return element('section', nodeAttributes(node, {
|
|
47
|
+
class: 'ak-block ak-marquee',
|
|
48
|
+
'data-speed': ['slow', 'normal', 'fast'].includes(speed) ? speed : 'normal',
|
|
49
|
+
'aria-label': stringProp(node, 'label', 'Highlights'),
|
|
50
|
+
}), `<div class="ak-marquee-viewport"><ul class="ak-marquee-track">${entries}</ul><ul class="ak-marquee-track" aria-hidden="true">${entries}</ul></div>`);
|
|
51
|
+
}
|
|
52
|
+
// --- terminal ---------------------------------------------------------------
|
|
53
|
+
const LINE_KINDS = new Set(['command', 'output', 'comment', 'success', 'error']);
|
|
54
|
+
function terminal(node) {
|
|
55
|
+
const title = stringProp(node, 'title', 'Terminal');
|
|
56
|
+
const lines = objectListProp(node, 'lines').map((line) => {
|
|
57
|
+
const kind = LINE_KINDS.has(str(line.kind)) ? str(line.kind) : 'output';
|
|
58
|
+
return `<span class="ak-term-line" data-kind="${kind}">${escapeText(str(line.text))}</span>`;
|
|
59
|
+
});
|
|
60
|
+
const copy = renderAttributes({
|
|
61
|
+
'data-ak-on-click': JSON.stringify([{ action: 'copy', target: node.id }]),
|
|
62
|
+
'aria-label': `Copy ${title}`,
|
|
63
|
+
});
|
|
64
|
+
// The whole bar is the figure's caption, so the caption is a direct child of
|
|
65
|
+
// the figure. The figure is named by the title alone, not the copy control.
|
|
66
|
+
return [
|
|
67
|
+
`<figure class="ak-block ak-terminal" aria-label="${escapeAttribute(title)}" data-ak-animate>`,
|
|
68
|
+
'<figcaption class="ak-terminal-bar">',
|
|
69
|
+
'<span class="ak-window-dots" aria-hidden="true"><span></span><span></span><span></span></span>',
|
|
70
|
+
`<span class="ak-terminal-title">${escapeText(title)}</span>`,
|
|
71
|
+
`<button type="button" class="ak-code-copy"${copy}>Copy</button>`,
|
|
72
|
+
'</figcaption>',
|
|
73
|
+
`<pre${renderAttributes({ 'data-ak-id': node.id, class: 'ak-terminal-body' })}>${lines.join('\n')}</pre>`,
|
|
74
|
+
'</figure>',
|
|
75
|
+
].join('');
|
|
76
|
+
}
|
|
77
|
+
// --- file tree --------------------------------------------------------------
|
|
78
|
+
const FILE_STATUSES = new Set(['added', 'modified', 'deleted', 'renamed', 'unchanged']);
|
|
79
|
+
function newDir(name) {
|
|
80
|
+
return { name, dirs: new Map(), files: [] };
|
|
81
|
+
}
|
|
82
|
+
/** Build a folder tree from slash-separated paths; a trailing slash names an empty folder. */
|
|
83
|
+
export function buildFileTree(items) {
|
|
84
|
+
const root = newDir('');
|
|
85
|
+
for (const item of items) {
|
|
86
|
+
const parts = str(item.path)
|
|
87
|
+
.split('/')
|
|
88
|
+
.map((part) => part.trim())
|
|
89
|
+
.filter((part) => part !== '' && part !== '.');
|
|
90
|
+
const isFolder = str(item.path).endsWith('/');
|
|
91
|
+
let cursor = root;
|
|
92
|
+
const folders = isFolder ? parts : parts.slice(0, -1);
|
|
93
|
+
for (const part of folders) {
|
|
94
|
+
let next = cursor.dirs.get(part);
|
|
95
|
+
if (next === undefined) {
|
|
96
|
+
next = newDir(part);
|
|
97
|
+
cursor.dirs.set(part, next);
|
|
98
|
+
}
|
|
99
|
+
cursor = next;
|
|
100
|
+
}
|
|
101
|
+
const name = parts[parts.length - 1];
|
|
102
|
+
if (!isFolder && name !== undefined) {
|
|
103
|
+
const status = FILE_STATUSES.has(str(item.status)) ? str(item.status) : 'unchanged';
|
|
104
|
+
cursor.files.push({ name, status, note: str(item.note) });
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return root;
|
|
108
|
+
}
|
|
109
|
+
/** Fold a chain of single-folder directories into one `a/b/c` entry, as editors do. */
|
|
110
|
+
function compact(dir) {
|
|
111
|
+
let current = dir;
|
|
112
|
+
let name = dir.name;
|
|
113
|
+
while (current.files.length === 0 && current.dirs.size === 1) {
|
|
114
|
+
const [only] = current.dirs.values();
|
|
115
|
+
if (only === undefined)
|
|
116
|
+
break;
|
|
117
|
+
name = `${name}/${only.name}`;
|
|
118
|
+
current = only;
|
|
119
|
+
}
|
|
120
|
+
return { ...current, name };
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Case-insensitive order with a code-point tie-break. No `localeCompare`: its
|
|
124
|
+
* collation comes from the runtime's ICU data, which would let the same spec
|
|
125
|
+
* emit different bytes on different Node builds.
|
|
126
|
+
*/
|
|
127
|
+
function byName(left, right) {
|
|
128
|
+
const a = left.name.toLowerCase();
|
|
129
|
+
const b = right.name.toLowerCase();
|
|
130
|
+
if (a !== b)
|
|
131
|
+
return a < b ? -1 : 1;
|
|
132
|
+
return left.name < right.name ? -1 : left.name > right.name ? 1 : 0;
|
|
133
|
+
}
|
|
134
|
+
function treeEntries(dir) {
|
|
135
|
+
const dirs = [...dir.dirs.values()].map(compact).sort(byName);
|
|
136
|
+
const files = [...dir.files].sort(byName);
|
|
137
|
+
return [
|
|
138
|
+
...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>`),
|
|
139
|
+
...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>`),
|
|
140
|
+
].join('');
|
|
141
|
+
}
|
|
142
|
+
function fileTree(node) {
|
|
143
|
+
const items = objectListProp(node, 'items');
|
|
144
|
+
const counts = new Map();
|
|
145
|
+
for (const item of items) {
|
|
146
|
+
const status = str(item.status, 'unchanged');
|
|
147
|
+
if (status !== 'unchanged' && FILE_STATUSES.has(status)) {
|
|
148
|
+
counts.set(status, (counts.get(status) ?? 0) + 1);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
const summary = ['added', 'modified', 'renamed', 'deleted']
|
|
152
|
+
.filter((status) => counts.has(status))
|
|
153
|
+
.map((status) => `<li data-status="${status}"><strong>${counts.get(status)}</strong> ${status}</li>`)
|
|
154
|
+
.join('');
|
|
155
|
+
return element('section', nodeAttributes(node, { class: 'ak-block ak-tree-block' }), [
|
|
156
|
+
titleHeader(node),
|
|
157
|
+
'<div class="ak-tree-panel">',
|
|
158
|
+
summary === '' ? '' : `<ul class="ak-tree-summary">${summary}</ul>`,
|
|
159
|
+
`<ul class="ak-tree">${treeEntries(buildFileTree(items))}</ul>`,
|
|
160
|
+
'</div>',
|
|
161
|
+
].join(''));
|
|
162
|
+
}
|
|
163
|
+
// --- before / after ---------------------------------------------------------
|
|
164
|
+
function beforeAfter(node, context) {
|
|
165
|
+
const side = (key, fallbackLabel) => {
|
|
166
|
+
const value = node.props[key];
|
|
167
|
+
const item = isPlainObject(value) ? value : {};
|
|
168
|
+
return {
|
|
169
|
+
image: framedImage(str(item.src), str(item.alt), context.ir.policy.network),
|
|
170
|
+
label: str(item.label, fallbackLabel),
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
const before = side('before', 'Before');
|
|
174
|
+
const after = side('after', 'After');
|
|
175
|
+
const start = Math.min(Math.max(Math.round(numberProp(node, 'start', 50)), 0), 100);
|
|
176
|
+
const title = stringProp(node, 'title');
|
|
177
|
+
// Without script the two images sit side by side. The runtime switches the
|
|
178
|
+
// stage to the overlay and keeps `--ak-split` in step with the range input.
|
|
179
|
+
return [
|
|
180
|
+
`<figure${renderAttributes(nodeAttributes(node, { class: 'ak-block ak-ba', 'data-ak-before-after': '' }))}>`,
|
|
181
|
+
titleHeader(node),
|
|
182
|
+
'<div class="ak-ba-stage">',
|
|
183
|
+
`<div class="ak-ba-pane" data-side="before">${before.image}<span class="ak-ba-label">${escapeText(before.label)}</span></div>`,
|
|
184
|
+
`<div class="ak-ba-pane" data-side="after">${after.image}<span class="ak-ba-label">${escapeText(after.label)}</span></div>`,
|
|
185
|
+
'<span class="ak-ba-handle" aria-hidden="true"></span>',
|
|
186
|
+
`<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}`}`)}" />`,
|
|
187
|
+
'</div>',
|
|
188
|
+
figureCaption(stringProp(node, 'caption')),
|
|
189
|
+
'</figure>',
|
|
190
|
+
].join('');
|
|
191
|
+
}
|
|
192
|
+
// --- kpi --------------------------------------------------------------------
|
|
193
|
+
const SPARK_WIDTH = 120;
|
|
194
|
+
const SPARK_HEIGHT = 36;
|
|
195
|
+
function round(value) {
|
|
196
|
+
return String(Math.round(value * 100) / 100);
|
|
197
|
+
}
|
|
198
|
+
/** Line and area paths for a sparkline, scaled into a fixed view box. */
|
|
199
|
+
export function sparkPaths(series) {
|
|
200
|
+
const min = Math.min(...series);
|
|
201
|
+
const max = Math.max(...series);
|
|
202
|
+
const span = max - min;
|
|
203
|
+
const step = series.length > 1 ? SPARK_WIDTH / (series.length - 1) : 0;
|
|
204
|
+
const inset = 3;
|
|
205
|
+
const points = series.map((value, index) => [
|
|
206
|
+
index * step,
|
|
207
|
+
// A flat series sits on the midline rather than the floor.
|
|
208
|
+
span === 0 ? SPARK_HEIGHT / 2 : inset + (1 - (value - min) / span) * (SPARK_HEIGHT - inset * 2),
|
|
209
|
+
]);
|
|
210
|
+
const line = points
|
|
211
|
+
.map(([x, y], index) => `${index === 0 ? 'M' : 'L'}${round(x)} ${round(y)}`)
|
|
212
|
+
.join(' ');
|
|
213
|
+
const last = points[points.length - 1] ?? [0, SPARK_HEIGHT / 2];
|
|
214
|
+
return {
|
|
215
|
+
line,
|
|
216
|
+
area: `${line} L${round(last[0])} ${SPARK_HEIGHT} L0 ${SPARK_HEIGHT} Z`,
|
|
217
|
+
end: last,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
function verdict(trend, good) {
|
|
221
|
+
if (trend !== 'up' && trend !== 'down')
|
|
222
|
+
return 'neutral';
|
|
223
|
+
return trend === good ? 'good' : 'bad';
|
|
224
|
+
}
|
|
225
|
+
function kpi(node) {
|
|
226
|
+
const cards = objectListProp(node, 'items').map((item, index) => {
|
|
227
|
+
const trend = str(item.trend, 'flat');
|
|
228
|
+
const judged = verdict(trend, str(item.good, 'up'));
|
|
229
|
+
const delta = str(item.delta);
|
|
230
|
+
const series = (Array.isArray(item.series) ? item.series : [])
|
|
231
|
+
.map((value) => numProp(value, Number.NaN))
|
|
232
|
+
.filter(Number.isFinite);
|
|
233
|
+
const arrow = trend === 'up' ? '↗' : trend === 'down' ? '↘' : '→';
|
|
234
|
+
const deltaMarkup = delta === ''
|
|
235
|
+
? ''
|
|
236
|
+
: `<p class="ak-kpi-delta"><span aria-hidden="true">${arrow}</span>${escapeText(delta)}${judged === 'neutral'
|
|
237
|
+
? ''
|
|
238
|
+
: `<span class="ak-sr"> (${judged === 'good' ? 'improving' : 'worsening'})</span>`}</p>`;
|
|
239
|
+
let spark = '';
|
|
240
|
+
if (series.length >= 2) {
|
|
241
|
+
const paths = sparkPaths(series);
|
|
242
|
+
const gradient = `ak-kpi-${node.id.replace(/[^A-Za-z0-9_-]/gu, '-')}-${index}`;
|
|
243
|
+
spark = [
|
|
244
|
+
`<svg class="ak-kpi-spark" viewBox="0 0 ${SPARK_WIDTH} ${SPARK_HEIGHT}" preserveAspectRatio="none" aria-hidden="true" focusable="false">`,
|
|
245
|
+
`<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>`,
|
|
246
|
+
`<path class="ak-kpi-area" d="${paths.area}" fill="url(#${gradient})" />`,
|
|
247
|
+
`<path class="ak-kpi-line" d="${paths.line}" pathLength="1" />`,
|
|
248
|
+
'</svg>',
|
|
249
|
+
].join('');
|
|
250
|
+
}
|
|
251
|
+
return [
|
|
252
|
+
`<li class="ak-kpi-card" data-verdict="${judged}">`,
|
|
253
|
+
`<p class="ak-kpi-label">${escapeText(str(item.label))}</p>`,
|
|
254
|
+
`<p class="ak-kpi-value" data-ak-count>${escapeText(str(item.value))}</p>`,
|
|
255
|
+
deltaMarkup,
|
|
256
|
+
spark,
|
|
257
|
+
paragraph('ak-caption', str(item.caption)),
|
|
258
|
+
'</li>',
|
|
259
|
+
].join('');
|
|
260
|
+
});
|
|
261
|
+
return element('section', nodeAttributes(node, { class: 'ak-block ak-kpis', 'data-ak-animate': '' }), `${titleHeader(node)}<ul class="ak-kpi-grid">${cards.join('')}</ul>`);
|
|
262
|
+
}
|
|
263
|
+
// --- showcase ---------------------------------------------------------------
|
|
264
|
+
function showcase(node, context) {
|
|
265
|
+
const frame = stringProp(node, 'frame', 'browser') === 'plain' ? 'plain' : 'browser';
|
|
266
|
+
const address = stringProp(node, 'address');
|
|
267
|
+
const bullets = listProp(node, 'bullets').filter((item) => typeof item === 'string');
|
|
268
|
+
return element('section', nodeAttributes(node, {
|
|
269
|
+
class: 'ak-block ak-showcase',
|
|
270
|
+
'data-align': stringProp(node, 'align') === 'media-left' ? 'media-left' : 'media-right',
|
|
271
|
+
}), [
|
|
272
|
+
'<div class="ak-showcase-copy">',
|
|
273
|
+
paragraph('ak-eyebrow', stringProp(node, 'eyebrow')),
|
|
274
|
+
`<h2>${escapeText(stringProp(node, 'title'))}</h2>`,
|
|
275
|
+
prose('ak-showcase-text', stringProp(node, 'text')),
|
|
276
|
+
bullets.length === 0
|
|
277
|
+
? ''
|
|
278
|
+
: `<ul class="ak-showcase-points">${bullets.map((item) => `<li>${escapeText(item)}</li>`).join('')}</ul>`,
|
|
279
|
+
'</div>',
|
|
280
|
+
`<figure class="ak-showcase-media" data-frame="${frame}">${frame === 'browser'
|
|
281
|
+
? browserShot(stringProp(node, 'src'), stringProp(node, 'alt'), address, context.ir.policy.network)
|
|
282
|
+
: `<div class="ak-frame-view">${framedImage(stringProp(node, 'src'), stringProp(node, 'alt'), context.ir.policy.network)}</div>`}</figure>`,
|
|
283
|
+
].join(''));
|
|
284
|
+
}
|
|
285
|
+
// --- checklist --------------------------------------------------------------
|
|
286
|
+
function checklist(node) {
|
|
287
|
+
const items = objectListProp(node, 'items');
|
|
288
|
+
const done = items.filter((item) => item.done === true).length;
|
|
289
|
+
const title = stringProp(node, 'title');
|
|
290
|
+
const progress = items.length === 0 ? 0 : Math.round((done / items.length) * 100);
|
|
291
|
+
return element('section', nodeAttributes(node, { class: 'ak-block ak-checklist' }), [
|
|
292
|
+
`<header class="ak-checklist-head">${title === '' ? '' : `<h2>${escapeText(title)}</h2>`}<p class="ak-checklist-count"><strong>${done}</strong> of ${items.length} done</p></header>`,
|
|
293
|
+
`<progress class="ak-checklist-meter" max="100" value="${progress}" aria-hidden="true">${progress}%</progress>`,
|
|
294
|
+
`<ul>${items
|
|
295
|
+
.map((item) => {
|
|
296
|
+
const state = item.done === true ? 'done' : 'open';
|
|
297
|
+
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>`;
|
|
298
|
+
})
|
|
299
|
+
.join('')}</ul>`,
|
|
300
|
+
].join(''));
|
|
301
|
+
}
|
|
302
|
+
// --- cta --------------------------------------------------------------------
|
|
303
|
+
function cta(node) {
|
|
304
|
+
const actions = objectListProp(node, 'actions')
|
|
305
|
+
.map((action) => `<a${renderAttributes({
|
|
306
|
+
class: 'ak-btn',
|
|
307
|
+
'data-variant': str(action.variant) === 'primary' ? 'primary' : 'secondary',
|
|
308
|
+
href: escapeUrl(str(action.href)),
|
|
309
|
+
rel: 'noreferrer noopener',
|
|
310
|
+
})}>${escapeText(str(action.label))}</a>`)
|
|
311
|
+
.join('');
|
|
312
|
+
return element('section', nodeAttributes(node, { class: 'ak-block ak-cta', 'data-surface': 'inverse' }), [
|
|
313
|
+
paragraph('ak-eyebrow', stringProp(node, 'eyebrow')),
|
|
314
|
+
`<h2 class="ak-cta-title">${escapeText(stringProp(node, 'title'))}</h2>`,
|
|
315
|
+
prose('ak-cta-text', stringProp(node, 'text')),
|
|
316
|
+
actions === '' ? '' : `<div class="ak-cta-actions">${actions}</div>`,
|
|
317
|
+
].join(''));
|
|
318
|
+
}
|
|
319
|
+
export const SHOWCASE_RENDERERS = {
|
|
320
|
+
marquee,
|
|
321
|
+
terminal,
|
|
322
|
+
'file-tree': fileTree,
|
|
323
|
+
'before-after': beforeAfter,
|
|
324
|
+
kpi,
|
|
325
|
+
showcase,
|
|
326
|
+
checklist,
|
|
327
|
+
cta,
|
|
328
|
+
};
|
|
329
|
+
//# 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;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAyB5D,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CA4K1E,CAAC"}
|
|
@@ -0,0 +1,201 @@
|
|
|
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 { BENTO_CSS } from '../blocks/composition/composition-styles.js';
|
|
14
|
+
import { EASE_OUT, MID, SLOW, UNIT } from './style-units.js';
|
|
15
|
+
/**
|
|
16
|
+
* Stagger for terminal lines; lines past the last step share its delay.
|
|
17
|
+
*
|
|
18
|
+
* A line waiting for its turn is invisible, so the whole session must settle
|
|
19
|
+
* fast: the last line starts by 0.88s and every line is drawn by about 1.4s.
|
|
20
|
+
* A longer cascade left the last lines blank in captures taken after a scroll.
|
|
21
|
+
*/
|
|
22
|
+
const TERMINAL_STEP_COUNT = 12;
|
|
23
|
+
const TERMINAL_STEPS = Array.from({ length: TERMINAL_STEP_COUNT }, (_, index) => {
|
|
24
|
+
const nth = index === TERMINAL_STEP_COUNT - 1 ? `n + ${TERMINAL_STEP_COUNT}` : String(index + 1);
|
|
25
|
+
return `.ak-terminal[data-ak-inview] .ak-term-line:nth-child(${nth}){animation-delay:${(index * 0.08).toFixed(2)}s}`;
|
|
26
|
+
}).join('');
|
|
27
|
+
/** Each KPI card's sparkline draws a beat after the previous one. */
|
|
28
|
+
const KPI_STEPS = [2, 3, 4]
|
|
29
|
+
.map((position) => {
|
|
30
|
+
const nth = position === 4 ? 'n + 4' : String(position);
|
|
31
|
+
const lead = (position - 1) * 0.12;
|
|
32
|
+
return `.ak-kpis[data-ak-inview] .ak-kpi-card:nth-child(${nth}) .ak-kpi-line{animation-delay:${lead.toFixed(2)}s}.ak-kpis[data-ak-inview] .ak-kpi-card:nth-child(${nth}) .ak-kpi-area{animation-delay:${(lead + 0.5).toFixed(2)}s}`;
|
|
33
|
+
})
|
|
34
|
+
.join('');
|
|
35
|
+
export const SHOWCASE_CSS = {
|
|
36
|
+
bento: BENTO_CSS,
|
|
37
|
+
marquee: `.ak-marquee{--ak-marquee-time:42s;padding:${UNIT(2.25)} 0;border-block:var(--ak-border-width) solid var(--ak-color-border)}
|
|
38
|
+
.ak-marquee[data-speed="slow"]{--ak-marquee-time:70s}
|
|
39
|
+
.ak-marquee[data-speed="fast"]{--ak-marquee-time:24s}
|
|
40
|
+
.ak-marquee-viewport{display:flex;overflow:hidden}
|
|
41
|
+
.ak-marquee-track{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center;row-gap:.4em}
|
|
42
|
+
.ak-marquee-track[aria-hidden="true"]{display:none}
|
|
43
|
+
.ak-marquee li{display:inline-flex;align-items:center;gap:${UNIT(3)};padding-right:${UNIT(3)};font-family:var(--ak-font-heading);font-size:clamp(1.3rem,2.8vw,2.3rem);font-weight:650;line-height:1.15;letter-spacing:-.03em;white-space:nowrap}
|
|
44
|
+
.ak-marquee li::after{content:"";flex:none;width:.34em;height:.34em;border-radius:2px;background:var(--ak-color-accent);rotate:45deg}
|
|
45
|
+
@supports (-webkit-text-stroke:1px black){.ak-marquee li:nth-child(even){color:transparent;-webkit-text-stroke:1.2px var(--ak-color-text)}}
|
|
46
|
+
@keyframes ak-marquee{to{transform:translateX(-100%)}}
|
|
47
|
+
@media (prefers-reduced-motion:no-preference){.ak-marquee-viewport{-webkit-mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent)}.ak-marquee-track{flex:none;flex-wrap:nowrap;animation:ak-marquee var(--ak-marquee-time) linear infinite}.ak-marquee-track[aria-hidden="true"]{display:flex}.ak-marquee:hover .ak-marquee-track{animation-play-state:paused}}
|
|
48
|
+
@media print{.ak-marquee-track{animation:none!important;flex-wrap:wrap}.ak-marquee-track[aria-hidden="true"]{display:none!important}}`,
|
|
49
|
+
terminal: `.ak-terminal{--ak-term-bg:color-mix(in srgb,var(--ak-color-accent) 7%,#0b0d12);--ak-term-bar:color-mix(in srgb,var(--ak-color-accent) 6%,#151821);--ak-term-text:#e8eaf0;--ak-term-muted:#8f96a8;align-self:start;margin:0;overflow:hidden;border-radius:var(--ak-radius-large);background:var(--ak-term-bg);color:var(--ak-term-text);border:var(--ak-border-width) solid color-mix(in srgb,#fff 9%,var(--ak-term-bg));box-shadow:0 1px 0 color-mix(in srgb,#fff 8%,transparent) inset,var(--ak-elevation-popover)}
|
|
50
|
+
.ak-terminal-bar{display:flex;align-items:center;gap:${UNIT(1.5)};padding:.55em .75em .55em 1em;background:var(--ak-term-bar);border-bottom:var(--ak-border-width) solid color-mix(in srgb,#fff 7%,transparent)}
|
|
51
|
+
.ak-terminal .ak-window-dots{color:var(--ak-term-muted)}
|
|
52
|
+
.ak-terminal-title{flex:1;margin:0;text-align:center;font-family:var(--ak-font-mono);font-size:.74rem;letter-spacing:.04em;color:var(--ak-term-muted)}
|
|
53
|
+
.ak-terminal .ak-code-copy{color:var(--ak-term-muted);border-color:color-mix(in srgb,#fff 12%,transparent);background:transparent}
|
|
54
|
+
.ak-terminal .ak-code-copy::before{box-shadow:2.5px -2.5px 0 -1px var(--ak-term-bar),2.5px -2.5px 0 .5px currentColor}
|
|
55
|
+
.ak-terminal .ak-code-copy:hover{color:var(--ak-term-text);background:color-mix(in srgb,#fff 8%,transparent)}
|
|
56
|
+
.ak-terminal-body{margin:0;padding:${UNIT(2.5)} ${UNIT(3)} ${UNIT(3)};overflow-x:auto;background:transparent;border:0;border-radius:0;font-family:var(--ak-font-mono);font-size:.86rem;line-height:1.75;color:var(--ak-term-text);white-space:pre-wrap;word-break:break-word}
|
|
57
|
+
.ak-term-line{display:inline-block;max-width:100%;vertical-align:top}
|
|
58
|
+
.ak-term-line[data-kind="command"]{color:var(--ak-term-text);font-weight:600}
|
|
59
|
+
.ak-term-line[data-kind="command"]::before{content:"\\276F\\00a0\\00a0";content:"\\276F\\00a0\\00a0" / "";color:color-mix(in srgb,var(--ak-color-accent) 55%,#fff);font-weight:700}
|
|
60
|
+
.ak-term-line[data-kind="output"]{color:color-mix(in srgb,var(--ak-term-text) 82%,var(--ak-term-bg))}
|
|
61
|
+
.ak-term-line[data-kind="comment"]{color:var(--ak-term-muted);font-style:italic}
|
|
62
|
+
.ak-term-line[data-kind="success"]{color:#8fe3ad}
|
|
63
|
+
.ak-term-line[data-kind="success"]::before{content:"\\2713\\00a0";content:"\\2713\\00a0" / ""}
|
|
64
|
+
.ak-term-line[data-kind="error"]{color:#ffa3a3}
|
|
65
|
+
.ak-term-line[data-kind="error"]::before{content:"\\2717\\00a0";content:"\\2717\\00a0" / ""}
|
|
66
|
+
.ak-terminal-body::after{content:"";display:inline-block;width:.55em;height:1.15em;margin-left:.2em;vertical-align:-.2em;border-radius:1px;background:color-mix(in srgb,var(--ak-color-accent) 70%,#fff)}
|
|
67
|
+
@keyframes ak-type{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
|
|
68
|
+
@keyframes ak-line-in{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
|
|
69
|
+
@keyframes ak-caret{50%{opacity:0}}
|
|
70
|
+
@media (prefers-reduced-motion:no-preference){.ak-terminal[data-ak-inview] .ak-term-line{animation:ak-line-in calc(var(--ak-motion-duration) * 2) ${EASE_OUT} both}.ak-terminal[data-ak-inview] .ak-term-line[data-kind="command"]{animation:ak-type .5s steps(22,end) both}.ak-terminal-body::after{animation:ak-caret 1.1s steps(1) infinite}${TERMINAL_STEPS}}
|
|
71
|
+
@media print{.ak-terminal{box-shadow:none}.ak-terminal .ak-code-copy{display:none}.ak-term-line{animation:none!important}}`,
|
|
72
|
+
tree: `.ak-tree-panel{padding:${UNIT(2.5)} ${UNIT(3)};border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-large);background:var(--ak-fill);box-shadow:var(--ak-elevation-card);font-family:var(--ak-font-mono);font-size:.84rem}
|
|
73
|
+
.ak-tree-summary{list-style:none;display:flex;flex-wrap:wrap;gap:.5em;margin:0 0 ${UNIT(2)};padding:0 0 ${UNIT(2)};border-bottom:var(--ak-border-width) solid var(--ak-color-border)}
|
|
74
|
+
.ak-tree-summary li,.ak-tree-status{display:inline-flex;align-items:center;gap:.45em;padding:.2em .7em;border-radius:999px;background:color-mix(in srgb,var(--ak-status) 13%,transparent);color:color-mix(in srgb,var(--ak-status) 78%,var(--ak-color-text));font-size:.72rem;letter-spacing:.05em}
|
|
75
|
+
.ak-tree-summary li::before{content:"";width:.45em;height:.45em;border-radius:50%;background:var(--ak-status)}
|
|
76
|
+
.ak-tree-block [data-status]{--ak-status:var(--ak-color-text-muted)}
|
|
77
|
+
.ak-tree-block [data-status="added"]{--ak-status:var(--ak-color-success)}
|
|
78
|
+
.ak-tree-block [data-status="modified"]{--ak-status:var(--ak-color-warning)}
|
|
79
|
+
.ak-tree-block [data-status="deleted"]{--ak-status:var(--ak-color-danger)}
|
|
80
|
+
.ak-tree-block [data-status="renamed"]{--ak-status:var(--ak-color-info)}
|
|
81
|
+
.ak-tree,.ak-tree ul{list-style:none;margin:0;padding:0}
|
|
82
|
+
.ak-tree ul{margin-left:.5em;padding-left:1.15em;border-left:var(--ak-border-width) solid var(--ak-color-border)}
|
|
83
|
+
.ak-tree li[data-status]{display:flex;flex-wrap:wrap;align-items:center;gap:.25em .7em;padding:.28em .45em;margin-left:-.45em;border-radius:var(--ak-radius-small);${'transition:background var(--ak-motion-duration) var(--ak-motion-easing)'}}
|
|
84
|
+
.ak-tree li[data-status]:hover{background:var(--ak-tint)}
|
|
85
|
+
.ak-tree summary{list-style:none;display:flex;align-items:center;gap:.5em;padding:.28em .45em;margin-left:-.45em;border-radius:var(--ak-radius-small);cursor:pointer;font-weight:600}
|
|
86
|
+
.ak-tree summary::-webkit-details-marker{display:none}
|
|
87
|
+
.ak-tree summary::before{content:"";width:.38em;height:.38em;margin-right:.1em;border-right:1.5px solid var(--ak-color-text-muted);border-bottom:1.5px solid var(--ak-color-text-muted);rotate:-45deg;transition:rotate var(--ak-motion-duration) var(--ak-motion-easing)}
|
|
88
|
+
.ak-tree details[open] > summary::before{rotate:45deg}
|
|
89
|
+
.ak-tree summary:hover{background:var(--ak-tint);color:var(--ak-color-accent)}
|
|
90
|
+
.ak-tree-name{display:inline-flex;align-items:center;gap:.5em}
|
|
91
|
+
.ak-tree-name::before{content:"";flex:none;display:inline-block}
|
|
92
|
+
.ak-tree-name[data-kind="folder"]::before{width:1.05em;height:.82em;border-radius:2px;background:linear-gradient(180deg,color-mix(in srgb,var(--ak-color-accent) 78%,#fff),var(--ak-color-accent));clip-path:polygon(0 0,42% 0,52% 16%,100% 16%,100% 100%,0 100%)}
|
|
93
|
+
.ak-tree-name[data-kind="file"]::before{width:.8em;height:1em;background:color-mix(in srgb,var(--ak-color-text) 22%,transparent);clip-path:polygon(0 0,64% 0,100% 30%,100% 100%,0 100%)}
|
|
94
|
+
.ak-tree li[data-status]:not([data-status="unchanged"]) .ak-tree-name[data-kind="file"]::before{background:var(--ak-status)}
|
|
95
|
+
.ak-tree li[data-status="deleted"] .ak-tree-name{text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--ak-color-danger) 60%,transparent);color:var(--ak-color-text-muted)}
|
|
96
|
+
.ak-tree-status{padding:.05em .55em;font-size:.66rem;text-transform:uppercase;letter-spacing:.08em}
|
|
97
|
+
.ak-tree-note{margin-left:auto;font-family:var(--ak-font-body);font-size:.8rem;color:var(--ak-color-text-muted)}
|
|
98
|
+
@media (max-width:560px){.ak-tree-panel{padding:${UNIT(2)}}.ak-tree-note{flex-basis:100%;margin-left:1.5em}}`,
|
|
99
|
+
'before-after': `.ak-ba{margin:0;display:flex;flex-direction:column;gap:${UNIT(1.5)}}
|
|
100
|
+
.ak-ba-stage{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:${UNIT(1.5)}}
|
|
101
|
+
.ak-ba-pane{position:relative;overflow:hidden;margin:0;border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-large);background:var(--ak-color-surface-raised)}
|
|
102
|
+
.ak-ba-pane img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}
|
|
103
|
+
.ak-ba-pane .ak-caption{padding:${UNIT(2)}}
|
|
104
|
+
.ak-ba-label{position:absolute;top:12px;left:12px;z-index:1;padding:.35em .8em;border-radius:999px;font-family:var(--ak-font-mono);font-size:.68rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ak-color-text);background:color-mix(in srgb,var(--ak-color-background) 80%,transparent);border:var(--ak-border-width) solid color-mix(in srgb,var(--ak-color-text) 12%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
|
|
105
|
+
.ak-ba-handle,.ak-ba-range{display:none}
|
|
106
|
+
.ak-ba[data-ak-ready] .ak-ba-stage{grid-template-columns:1fr;gap:0;overflow:hidden;border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-large);box-shadow:var(--ak-elevation-popover);touch-action:pan-y}
|
|
107
|
+
.ak-ba[data-ak-ready] .ak-ba-pane{grid-area:1 / 1;border:0;border-radius:0}
|
|
108
|
+
.ak-ba[data-ak-ready] .ak-ba-pane[data-side="after"]{clip-path:inset(0 0 0 var(--ak-split,50%))}
|
|
109
|
+
.ak-ba[data-ak-ready] .ak-ba-pane[data-side="after"] .ak-ba-label{left:auto;right:12px}
|
|
110
|
+
.ak-ba[data-ak-ready] .ak-ba-handle{display:block;position:absolute;top:0;bottom:0;left:var(--ak-split,50%);z-index:2;width:2px;margin-left:-1px;pointer-events:none;background:var(--ak-color-background);box-shadow:0 0 0 1px color-mix(in srgb,var(--ak-color-text) 14%,transparent),0 0 28px color-mix(in srgb,var(--ak-color-text) 30%,transparent)}
|
|
111
|
+
.ak-ba-handle::after{content:"\\2039\\2002\\203A";content:"\\2039\\2002\\203A" / "";position:absolute;top:50%;left:50%;display:grid;place-items:center;width:46px;height:46px;translate:-50% -50%;border-radius:50%;background:var(--ak-color-background);color:var(--ak-color-text);font-size:1.2rem;font-weight:700;line-height:1;box-shadow:0 0 0 1px var(--ak-color-border),var(--ak-elevation-popover);transition:scale ${MID} ${EASE_OUT}}
|
|
112
|
+
.ak-ba-stage:hover .ak-ba-handle::after{scale:1.08}
|
|
113
|
+
.ak-ba-stage:has(.ak-ba-range:focus-visible) .ak-ba-handle::after{outline:2px solid var(--ak-color-accent);outline-offset:3px}
|
|
114
|
+
.ak-ba[data-ak-ready] .ak-ba-range{display:block;position:absolute;inset:0;z-index:3;width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize;touch-action:pan-y}
|
|
115
|
+
@media (max-width:560px){.ak-ba-stage{grid-template-columns:1fr}}`,
|
|
116
|
+
kpi: `.ak-kpi-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:${UNIT(2)}}
|
|
117
|
+
.ak-kpi-card{--ak-verdict:var(--ak-color-accent);position:relative;isolation:isolate;overflow:hidden;display:flex;flex-direction:column;gap:.5em;min-width:0;padding:${UNIT(2.75)} ${UNIT(2.75)} 0;border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-large);background:var(--ak-fill);box-shadow:var(--ak-elevation-card);transition:translate ${MID} ${EASE_OUT},box-shadow ${MID} ${EASE_OUT}}
|
|
118
|
+
.ak-kpi-card:hover{translate:0 -3px;box-shadow:var(--ak-elevation-popover)}
|
|
119
|
+
.ak-kpi-card[data-verdict="good"]{--ak-verdict:var(--ak-color-success)}
|
|
120
|
+
.ak-kpi-card[data-verdict="bad"]{--ak-verdict:var(--ak-color-danger)}
|
|
121
|
+
.ak-kpi-card > p{margin:0}
|
|
122
|
+
.ak-kpi-label{font-family:var(--ak-font-mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ak-color-text-muted)}
|
|
123
|
+
.ak-kpi-value{font-family:var(--ak-font-heading);font-size:calc(var(--ak-font-size-base) * pow(var(--ak-font-scale),4));font-weight:700;line-height:1;letter-spacing:-.045em;font-variant-numeric:tabular-nums}
|
|
124
|
+
.ak-kpi-delta{align-self:flex-start;display:inline-flex;align-items:center;gap:.35em;padding:.2em .65em;border-radius:999px;font-family:var(--ak-font-mono);font-size:.76rem;font-weight:600;color:color-mix(in srgb,var(--ak-verdict) 80%,var(--ak-color-text));background:color-mix(in srgb,var(--ak-verdict) 13%,transparent)}
|
|
125
|
+
.ak-kpi-card[data-verdict="neutral"] .ak-kpi-delta{color:var(--ak-color-text-muted);background:color-mix(in srgb,var(--ak-color-text) 7%,transparent)}
|
|
126
|
+
.ak-kpi-card > .ak-caption{color:var(--ak-color-text-muted);font-size:.82rem}
|
|
127
|
+
.ak-kpi-card:not(:has(.ak-kpi-spark)){padding-bottom:${UNIT(2.75)}}
|
|
128
|
+
.ak-kpi-spark{display:block;order:9;width:calc(100% + ${UNIT(5.5)});height:64px;margin:auto ${UNIT(-2.75)} 0;padding-top:${UNIT(1)};overflow:visible}
|
|
129
|
+
.ak-kpi-line{fill:none;stroke:var(--ak-verdict);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
|
|
130
|
+
.ak-kpi-stop{stop-color:var(--ak-verdict);stop-opacity:.3}
|
|
131
|
+
.ak-kpi-stop--end{stop-opacity:0}
|
|
132
|
+
@keyframes ak-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
|
|
133
|
+
@keyframes ak-fade{from{opacity:0}}
|
|
134
|
+
@media (prefers-reduced-motion:no-preference){.ak-kpis[data-ak-inview] .ak-kpi-line{stroke-dasharray:1;animation:ak-draw 1.6s ${EASE_OUT} both}.ak-kpis[data-ak-inview] .ak-kpi-area{animation:ak-fade 1.2s .5s ease-out both}${KPI_STEPS}}`,
|
|
135
|
+
showcase: `.ak-showcase{position:relative;isolation:isolate;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;gap:${UNIT(4)} ${UNIT(7)};padding:${UNIT(3)} 0}
|
|
136
|
+
.ak-showcase::before{content:"";position:absolute;z-index:-1;inset:8% 0 8% 38%;border-radius:50%;background:radial-gradient(closest-side,color-mix(in srgb,var(--ak-color-accent) 22%,transparent),transparent);filter:blur(48px);pointer-events:none}
|
|
137
|
+
.ak-showcase[data-align="media-left"]{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}
|
|
138
|
+
.ak-showcase[data-align="media-left"]::before{inset:8% 38% 8% 0}
|
|
139
|
+
.ak-showcase[data-align="media-left"] .ak-showcase-media{order:-1}
|
|
140
|
+
.ak-showcase-copy{display:flex;flex-direction:column;align-items:flex-start;gap:${UNIT(1.75)}}
|
|
141
|
+
.ak-showcase-copy > *{margin:0}
|
|
142
|
+
.ak-showcase-copy .ak-eyebrow{color:var(--ak-color-accent)}
|
|
143
|
+
.ak-showcase h2{font-size:calc(var(--ak-font-size-base) * pow(var(--ak-font-scale),3.4));line-height:1.04;letter-spacing:-.04em}
|
|
144
|
+
.ak-showcase-text{font-size:calc(var(--ak-font-size-base) * 1.1);line-height:1.6;color:var(--ak-color-text-muted);max-width:44ch}
|
|
145
|
+
.ak-showcase-points{list-style:none;padding:0;display:flex;flex-direction:column;gap:.7em}
|
|
146
|
+
.ak-showcase-points li{display:flex;align-items:flex-start;gap:.75em}
|
|
147
|
+
.ak-showcase-points li::before{content:"";flex:none;width:1.25em;height:1.25em;margin-top:.12em;border-radius:50%;background:radial-gradient(circle,var(--ak-color-accent) 0 28%,transparent 31%),color-mix(in srgb,var(--ak-color-accent) 16%,transparent)}
|
|
148
|
+
.ak-showcase-media{position:relative;margin:0;overflow:hidden;border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-large);background:var(--ak-color-surface);box-shadow:0 1px 0 color-mix(in srgb,#fff 50%,transparent) inset,0 2px 6px color-mix(in srgb,var(--ak-color-text) 6%,transparent),0 32px 64px -24px color-mix(in srgb,var(--ak-color-text) 34%,transparent);transition:transform ${SLOW} ${EASE_OUT},box-shadow ${SLOW} ${EASE_OUT}}
|
|
149
|
+
@keyframes ak-drift{from{translate:0 -3.5%}to{translate:0 3.5%}}
|
|
150
|
+
@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.ak-showcase-media .ak-frame-view img{scale:1.08;animation:ak-drift linear both;animation-timeline:view();animation-range:cover}}}
|
|
151
|
+
@media (prefers-reduced-motion:no-preference) and (hover:hover){.ak-showcase:hover .ak-showcase-media{transform:perspective(1800px) rotateY(-3deg) rotateX(1.5deg) translateY(-4px)}.ak-showcase[data-align="media-left"]:hover .ak-showcase-media{transform:perspective(1800px) rotateY(3deg) rotateX(1.5deg) translateY(-4px)}}
|
|
152
|
+
@media (max-width:900px){.ak-showcase,.ak-showcase[data-align="media-left"]{grid-template-columns:1fr}.ak-showcase[data-align="media-left"] .ak-showcase-media{order:0}.ak-showcase::before,.ak-showcase[data-align="media-left"]::before{inset:30% 0 0 0}}
|
|
153
|
+
@media print{.ak-showcase-media .ak-frame-view img{animation:none!important;scale:none}}`,
|
|
154
|
+
cta: `.ak-cta{display:flex;flex-direction:column;align-items:flex-start;gap:${UNIT(2.5)};padding:${UNIT(11)} ${UNIT(7)}}
|
|
155
|
+
.ak-main > .ak-cta{margin-top:calc(var(--ak-gap) * 3)}
|
|
156
|
+
.ak-cta > *{margin:0}
|
|
157
|
+
.ak-cta .ak-eyebrow{color:var(--ak-color-accent)}
|
|
158
|
+
.ak-cta-title{max-width:15ch;font-size:clamp(2.5rem,1.2rem + 5.4vw,5.75rem);line-height:.96;letter-spacing:-.048em;font-weight:700}
|
|
159
|
+
@supports (-webkit-background-clip:text) or (background-clip:text){.ak-cta-title{background:linear-gradient(180deg,var(--ak-color-text) 35%,color-mix(in srgb,var(--ak-color-text) 52%,var(--ak-color-accent)));-webkit-background-clip:text;background-clip:text;color:transparent}}
|
|
160
|
+
@media (forced-colors:active){.ak-cta-title{background:none;color:CanvasText}}
|
|
161
|
+
.ak-cta-text{max-width:50ch;font-size:calc(var(--ak-font-size-base) * 1.15);line-height:1.6;color:var(--ak-color-text-muted)}
|
|
162
|
+
.ak-cta-actions{display:flex;flex-wrap:wrap;gap:${UNIT(1.5)};margin-top:${UNIT(1.5)}}
|
|
163
|
+
.ak-cta-actions .ak-btn{min-height:48px;padding:.8em 1.5em;font-size:1rem;text-decoration:none;border-radius:999px}
|
|
164
|
+
.ak-cta-actions .ak-btn[data-variant="secondary"]{background:color-mix(in srgb,var(--ak-color-text) 6%,transparent);border-color:color-mix(in srgb,var(--ak-color-text) 18%,transparent)}
|
|
165
|
+
.ak-cta::after{content:"";position:absolute;z-index:-1;right:-12%;bottom:-40%;width:min(640px,70%);aspect-ratio:1;border-radius:50%;background:radial-gradient(closest-side,color-mix(in srgb,var(--ak-color-accent) 40%,transparent),transparent);filter:blur(40px);pointer-events:none}
|
|
166
|
+
@media (prefers-reduced-motion:no-preference){.ak-cta::after{animation:ak-aurora 16s ease-in-out infinite}}
|
|
167
|
+
@media (max-width:768px){.ak-cta{padding:${UNIT(7)} ${UNIT(3.5)}}}
|
|
168
|
+
@media print{.ak-cta::after{display:none}.ak-cta-title{background:none;color:inherit}}`,
|
|
169
|
+
// Browser chrome around a capture: the hero shot and the showcase spotlight.
|
|
170
|
+
frame: `.ak-frame-bar{display:flex;align-items:center;gap:calc(var(--ak-space-unit) * 1.5);padding:.6em .9em;border-bottom:var(--ak-border-width) solid var(--ak-color-border);background:color-mix(in srgb,var(--ak-color-text) 4%,var(--ak-color-surface))}
|
|
171
|
+
.ak-frame-bar .ak-window-dots{color:var(--ak-color-text-muted)}
|
|
172
|
+
.ak-frame-address{flex:0 1 52%;margin:0 auto;padding:.28em 1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;border-radius:999px;font-family:var(--ak-font-mono);font-size:.7rem;color:var(--ak-color-text-muted);background:var(--ak-color-background);border:var(--ak-border-width) solid var(--ak-color-border)}
|
|
173
|
+
.ak-frame-view{overflow:hidden}
|
|
174
|
+
.ak-frame-view img{display:block;width:100%;height:auto}
|
|
175
|
+
.ak-frame-view .ak-caption{padding:calc(var(--ak-space-unit) * 3)}
|
|
176
|
+
.ak-hero[data-media]{padding-bottom:0}
|
|
177
|
+
.ak-hero-media{position:relative;align-self:stretch;margin:calc(var(--ak-space-unit) * 5) 0 0;perspective:1600px}
|
|
178
|
+
.ak-hero-media::before{content:"";position:absolute;z-index:-1;inset:6% 4% -6%;border-radius:40px;background:linear-gradient(120deg,color-mix(in srgb,var(--ak-color-accent) 46%,transparent),color-mix(in srgb,var(--ak-color-info) 30%,transparent) 50%,color-mix(in srgb,var(--ak-color-success) 26%,transparent));filter:blur(56px);opacity:.55;pointer-events:none}
|
|
179
|
+
.ak-hero-stage{overflow:hidden;text-align:start;border:var(--ak-border-width) solid var(--ak-color-border);border-radius:calc(var(--ak-radius-large) * 1.4);background:var(--ak-color-surface);box-shadow:0 1px 0 color-mix(in srgb,#fff 50%,transparent) inset,0 2px 8px color-mix(in srgb,var(--ak-color-text) 6%,transparent),0 48px 96px -32px color-mix(in srgb,var(--ak-color-text) 38%,transparent);transform-origin:50% 0}
|
|
180
|
+
@keyframes ak-tilt{from{transform:rotateX(16deg) scale(.95)}to{transform:none}}
|
|
181
|
+
@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.ak-hero-stage{animation:ak-tilt linear both;animation-timeline:view();animation-range:cover 0% cover 48%}}}
|
|
182
|
+
@media print{.ak-hero-media::before{display:none}.ak-hero-stage{animation:none!important}}`,
|
|
183
|
+
checklist: `.ak-checklist{padding:calc(var(--ak-space-unit) * 3);border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-large);background:var(--ak-fill);box-shadow:var(--ak-elevation-card)}
|
|
184
|
+
.ak-checklist-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5em calc(var(--ak-space-unit) * 2)}
|
|
185
|
+
.ak-checklist-head h2{margin:0;font-size:calc(var(--ak-font-size-base) * pow(var(--ak-font-scale),1.6));letter-spacing:-.02em}
|
|
186
|
+
.ak-checklist-count{margin:0;font-family:var(--ak-font-mono);font-size:.76rem;letter-spacing:.04em;color:var(--ak-color-text-muted)}
|
|
187
|
+
.ak-checklist-count strong{font-size:1.15em;color:var(--ak-color-text)}
|
|
188
|
+
.ak-checklist-meter{-webkit-appearance:none;appearance:none;display:block;width:100%;height:6px;margin:calc(var(--ak-space-unit) * 1.75) 0 calc(var(--ak-space-unit) * .5);border:0;border-radius:999px;overflow:hidden;background:color-mix(in srgb,var(--ak-color-text) 8%,var(--ak-color-surface))}
|
|
189
|
+
.ak-checklist-meter::-webkit-progress-bar{background:transparent}
|
|
190
|
+
.ak-checklist-meter::-webkit-progress-value{border-radius:999px;background:linear-gradient(90deg,color-mix(in srgb,var(--ak-color-accent) 60%,var(--ak-color-surface)),var(--ak-color-accent))}
|
|
191
|
+
.ak-checklist-meter::-moz-progress-bar{border-radius:999px;background:linear-gradient(90deg,color-mix(in srgb,var(--ak-color-accent) 60%,var(--ak-color-surface)),var(--ak-color-accent))}
|
|
192
|
+
.ak-checklist ul{list-style:none;margin:0;padding:0}
|
|
193
|
+
.ak-checklist li{display:flex;align-items:flex-start;gap:.85em;padding:.75em 0;border-top:var(--ak-border-width) solid var(--ak-color-border)}
|
|
194
|
+
.ak-checklist li:first-child{border-top:0}
|
|
195
|
+
.ak-check{position:relative;flex:none;width:1.25em;height:1.25em;margin-top:.12em;border-radius:6px;border:1.5px solid color-mix(in srgb,var(--ak-color-text) 28%,transparent)}
|
|
196
|
+
.ak-checklist li[data-state="done"] .ak-check{background:var(--ak-color-accent);border-color:var(--ak-color-accent)}
|
|
197
|
+
.ak-checklist li[data-state="done"] .ak-check::after{content:"";position:absolute;left:36%;top:16%;width:26%;height:50%;border:solid var(--ak-color-accent-contrast);border-width:0 2px 2px 0;rotate:45deg}
|
|
198
|
+
.ak-checklist li[data-state="done"] .ak-check-text{color:var(--ak-color-text-muted)}
|
|
199
|
+
@media print{.ak-checklist{box-shadow:none}}`,
|
|
200
|
+
};
|
|
201
|
+
//# sourceMappingURL=showcase-styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"showcase-styles.js","sourceRoot":"","sources":["../../src/render/showcase-styles.ts"],"names":[],"mappings":"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"}
|