@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
package/README.md
CHANGED
|
@@ -1,37 +1,303 @@
|
|
|
1
1
|
# @bestagentkits/render
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
A declarative page compiler for coding agents. An agent writes a short YAML or
|
|
4
|
+
JSON **Page Spec**; `ak-render` compiles it into one deterministic,
|
|
5
|
+
self-contained, interactive **HTML file**.
|
|
6
|
+
|
|
7
|
+
[](https://render.agentkit.best)
|
|
8
|
+
|
|
9
|
+
**[render.agentkit.best](https://render.agentkit.best)** · [Gallery](https://render.agentkit.best/gallery/) · [Agent guide](./docs/agent-guide.md) · [npm](https://www.npmjs.com/package/@bestagentkits/render)
|
|
5
10
|
|
|
6
11
|
Agents describe meaning and composition. The compiler owns HTML, CSS,
|
|
7
|
-
interaction, accessibility, responsive layout, theming,
|
|
8
|
-
|
|
12
|
+
interaction, accessibility, responsive layout, theming, fonts, security policy
|
|
13
|
+
and byte-for-byte determinism. The agent spends tokens on the content instead
|
|
14
|
+
of on markup, and the result looks designed every time.
|
|
15
|
+
|
|
16
|
+
- **Offline by default.** The file opens from disk (`file://`) and makes zero
|
|
17
|
+
network requests. Fonts are embedded; nothing loads from a CDN.
|
|
18
|
+
- **Deterministic.** The same spec and compiler version produce the same bytes.
|
|
19
|
+
- **No escape hatch.** A spec cannot carry raw HTML, CSS or JavaScript, so a
|
|
20
|
+
page cannot drift off the design system or smuggle in a script.
|
|
21
|
+
- **Local is canonical.** No account, no server, no API key.
|
|
22
|
+
|
|
23
|
+
## Quick start
|
|
24
|
+
|
|
25
|
+
Requires Node.js >= 20.11.
|
|
26
|
+
|
|
27
|
+
1. Write a spec, `plan.yaml`:
|
|
28
|
+
|
|
29
|
+
```yaml
|
|
30
|
+
version: 1
|
|
31
|
+
meta:
|
|
32
|
+
title: Migration plan
|
|
33
|
+
description: How we move the API to the new gateway.
|
|
34
|
+
theme:
|
|
35
|
+
preset: editorial
|
|
36
|
+
blocks:
|
|
37
|
+
- type: hero
|
|
38
|
+
eyebrow: Plan
|
|
39
|
+
title: Migration plan
|
|
40
|
+
description: Move the public API to the new gateway without downtime.
|
|
41
|
+
- type: section
|
|
42
|
+
title: Steps
|
|
43
|
+
blocks:
|
|
44
|
+
- type: steps
|
|
45
|
+
items:
|
|
46
|
+
- title: Mirror traffic
|
|
47
|
+
text: Send a copy of production requests to the new gateway.
|
|
48
|
+
- title: Switch reads
|
|
49
|
+
text: Route read endpoints once error rates match.
|
|
50
|
+
- type: callout
|
|
51
|
+
tone: info
|
|
52
|
+
title: Rollback
|
|
53
|
+
text: Point DNS back to the old gateway; no data migrates.
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
2. Validate it, then compile it:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npx -y @bestagentkits/render validate plan.yaml
|
|
60
|
+
npx -y @bestagentkits/render plan.yaml --out plan.html
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
3. Open `plan.html` in any browser. It is one file you can attach, email or
|
|
64
|
+
commit.
|
|
65
|
+
|
|
66
|
+
## Usage guide
|
|
67
|
+
|
|
68
|
+
### Find the blocks you need
|
|
69
|
+
|
|
70
|
+
There are 83 block types in eight categories (layout, content, data,
|
|
71
|
+
interaction, media, showcase, engineering, product), from primitives (`section`,
|
|
72
|
+
`grid`, `split`, `text`) to semantic blocks that carry the design for you
|
|
73
|
+
(`hero`, `steps`, `timeline`, `kpi`, `data-table`, `chart`, `kanban`,
|
|
74
|
+
`pricing`, `cta`). Find the ones you need, then read only their contracts:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
ak-render catalog # every block by category, and every action
|
|
78
|
+
ak-render catalog --category data # one category
|
|
79
|
+
ak-render search-catalog sortable table # rank block types by intent words
|
|
80
|
+
ak-render describe kpi chart --compact # one line per prop, for several types
|
|
81
|
+
ak-render describe timeline --json # one full contract: defaults, bounds, a11y notes
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Containers (`section`, `grid`, `split`, `stack` and the page layouts
|
|
85
|
+
`sidebar-layout`, `main-aside`, `rail-layout`) take their children under
|
|
86
|
+
`blocks:`. Tabs, accordion sections, carousel slides and bento tiles hold
|
|
87
|
+
blocks too, under `items[i].blocks`.
|
|
88
|
+
|
|
89
|
+
Text is plain text, with one exception: in prose props such as `text`, a step's
|
|
90
|
+
or list item's `text`, a `description` or a `caption`, a pair of backticks
|
|
91
|
+
renders as inline code, so `` `ak-render catalog` `` reads as a command. Nothing
|
|
92
|
+
else is parsed as markup, an unpaired backtick stays literal, and titles, code
|
|
93
|
+
and terminal lines are never changed. `describe` marks each prop that does this.
|
|
94
|
+
|
|
95
|
+
### Start from a page recipe
|
|
96
|
+
|
|
97
|
+
A recipe is a complete, valid starter spec for a common page: a dashboard, a
|
|
98
|
+
benchmark report, an architecture review, an incident report, a product
|
|
99
|
+
showcase, a case study, a release recap, an implementation plan, a research
|
|
100
|
+
report or a decision memo. Replace its placeholder text and data, then validate.
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
ak-render recipes # names, summaries and the blocks each uses
|
|
104
|
+
ak-render recipe dashboard > page.yaml # the starter spec as YAML
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Datasets and state
|
|
108
|
+
|
|
109
|
+
Declare a table once under `datasets` and bind charts, tables and widgets to it
|
|
110
|
+
with `dataRef`, reshaped by a bounded `transform`. Native controls write page
|
|
111
|
+
`state`, `visibleWhen` switches views from it, and `filter-bar` filters a table,
|
|
112
|
+
board or log. All of it is data, and every page still reads completely with
|
|
113
|
+
scripts off. See [docs/data-and-state.md](./docs/data-and-state.md).
|
|
114
|
+
|
|
115
|
+
### Validate and fix
|
|
9
116
|
|
|
10
117
|
```bash
|
|
11
|
-
|
|
118
|
+
ak-render validate plan.yaml --json
|
|
12
119
|
```
|
|
13
120
|
|
|
14
|
-
The
|
|
15
|
-
|
|
16
|
-
|
|
121
|
+
The result is `{ ok, diagnostics[] }`. Each diagnostic has a stable `code` and
|
|
122
|
+
the JSON `path` to fix, such as `$.blocks[1].blocks[0].items[2].title`. Exit
|
|
123
|
+
code `1` means "fix and retry"; `2` means the input could not be read or the
|
|
124
|
+
output could not be written.
|
|
17
125
|
|
|
18
|
-
|
|
19
|
-
> milestones. The package skeleton, ADR, CI, and fixture corpus exist; the
|
|
20
|
-
> schema, compiler, themes, runtime, catalog, and cloud service land in the
|
|
21
|
-
> milestones described in [docs/adr/0001-page-spec-compiler-boundary.md](./docs/adr/0001-page-spec-compiler-boundary.md)
|
|
22
|
-
> and the [changelog](./CHANGELOG.md). Nothing below is advertised as available
|
|
23
|
-
> before it exists.
|
|
126
|
+
### Compile
|
|
24
127
|
|
|
25
|
-
|
|
128
|
+
```bash
|
|
129
|
+
ak-render plan.yaml --out plan.html # compile is the default command
|
|
130
|
+
ak-render plan.yaml --out plan.html --json # print bytes, hash, features, warnings
|
|
131
|
+
ak-render - --out plan.html < plan.yaml # read the spec from stdin
|
|
132
|
+
ak-render plan.yaml --theme blueprint # override the spec's theme
|
|
133
|
+
```
|
|
26
134
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
135
|
+
### Themes
|
|
136
|
+
|
|
137
|
+
Ten built-in presets, each with a light and a dark scheme and an embedded
|
|
138
|
+
display face: `blueprint`, `data-console`, `editorial`, `executive-report`,
|
|
139
|
+
`paper-ink`, `product-studio`, `research-notebook`, `swiss-clean`,
|
|
140
|
+
`terminal-mono` and `warm-signal`. Presets also choose component recipes, such
|
|
141
|
+
as ledger tables or outlined cards, from closed lists. Pick one under
|
|
142
|
+
`theme.preset`, or extend one with validated tokens:
|
|
143
|
+
|
|
144
|
+
```yaml
|
|
145
|
+
theme:
|
|
146
|
+
preset: team-theme
|
|
147
|
+
extends: editorial
|
|
148
|
+
tokens:
|
|
149
|
+
color-accent: "#b8860b"
|
|
150
|
+
motion-policy: none # a still page, as under reduced motion
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
`ak-render themes` lists the presets it can see, including project and user
|
|
154
|
+
presets. See [docs/themes.md](./docs/themes.md).
|
|
155
|
+
|
|
156
|
+
### Interaction
|
|
157
|
+
|
|
158
|
+
Tabs, accordions, carousels, native form controls, filter bars, sortable
|
|
159
|
+
tables, dialogs, copy buttons and the theme toggle come from a small trusted
|
|
160
|
+
runtime. A spec wires them with a closed
|
|
161
|
+
set of declarative actions (`ak-render catalog` lists them); there is no
|
|
162
|
+
JavaScript field. Every page reads completely with scripts off, with motion
|
|
163
|
+
reduced, in print and in a screenshot.
|
|
164
|
+
|
|
165
|
+
### Images, video and the network
|
|
166
|
+
|
|
167
|
+
Local paths (`assets/shot.png`) always work. A remote URL renders as a labelled
|
|
168
|
+
fallback with a link unless the spec opts in. A remote video `poster` is the
|
|
169
|
+
exception: it has no fallback, so `validate` rejects it at its own path until
|
|
170
|
+
the page allows remote `images`:
|
|
171
|
+
|
|
172
|
+
```yaml
|
|
173
|
+
policy:
|
|
174
|
+
network:
|
|
175
|
+
allow: [images, media]
|
|
176
|
+
```
|
|
31
177
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
178
|
+
The page's Content Security Policy is derived from that policy. See
|
|
179
|
+
[docs/media-policy.md](./docs/media-policy.md).
|
|
180
|
+
|
|
181
|
+
## Use it from an agent
|
|
182
|
+
|
|
183
|
+
Agents follow one loop: find blocks with `catalog` or `search-catalog`, start
|
|
184
|
+
from a `recipe` when one fits, `describe --compact` the blocks they use,
|
|
185
|
+
`validate` and fix diagnostics by JSON path, then compile. The
|
|
186
|
+
[agent guide](./docs/agent-guide.md) has the details and [llms.txt](./llms.txt)
|
|
187
|
+
is the LLM-facing index.
|
|
188
|
+
|
|
189
|
+
### Install the agent skill
|
|
190
|
+
|
|
191
|
+
The `ak-render` skill ([skills/ak-render/SKILL.md](./skills/ak-render/SKILL.md))
|
|
192
|
+
teaches an agent that loop.
|
|
193
|
+
|
|
194
|
+
**Any agent**, with the [skills CLI](https://github.com/vercel-labs/skills):
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
npx skills add bestagentkits/ak-render
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Claude Code**, as a plugin that also registers the MCP server:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
claude plugin marketplace add bestagentkits/ak-render
|
|
204
|
+
claude plugin install ak-render@ak-render
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
**Codex and ChatGPT**, as a plugin:
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
codex plugin marketplace add bestagentkits/ak-render
|
|
211
|
+
codex plugin add ak-render@ak-render
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### Three ways to run it
|
|
215
|
+
|
|
216
|
+
All three serve the same tools with the same contracts, backed by the same
|
|
217
|
+
compiler, so a spec renders to the same bytes whichever an agent picks.
|
|
218
|
+
|
|
219
|
+
| Mode | Needs | `render` returns | Network |
|
|
220
|
+
| --- | --- | --- | --- |
|
|
221
|
+
| Local CLI | Node 20.11+ | writes `--out`, prints a summary with `--json` | none |
|
|
222
|
+
| Local MCP (stdio) | Node 20.11+ | writes `out`, returns a summary | none |
|
|
223
|
+
| Remote MCP (Streamable HTTP) | an AgentKit token | stores the page, returns a summary and `artifactUrl` | yes |
|
|
224
|
+
|
|
225
|
+
Local is canonical and needs no account. The remote server exists for agents
|
|
226
|
+
that cannot install Node or need a URL to hand someone.
|
|
227
|
+
|
|
228
|
+
**Local CLI.** The loop above, with `ak-render` on the path or through `npx`.
|
|
229
|
+
|
|
230
|
+
**Local MCP over stdio.** `ak-render mcp` serves `catalog`, `search-catalog`,
|
|
231
|
+
`describe`, `recipes`, `recipe`, `validate`, `render` and `themes` as MCP
|
|
232
|
+
tools. `render` writes the HTML to disk
|
|
233
|
+
and returns only a summary, so the page never enters the agent's context.
|
|
234
|
+
|
|
235
|
+
```json
|
|
236
|
+
{
|
|
237
|
+
"mcpServers": {
|
|
238
|
+
"ak-render": { "command": "npx", "args": ["-y", "@bestagentkits/render", "mcp"] }
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
**Remote MCP over Streamable HTTP.** `https://render.agentkit.best/mcp` serves
|
|
244
|
+
`catalog`, `search-catalog`, `describe`, `recipes`, `recipe`, `validate`,
|
|
245
|
+
`render` and `themes` with the same contracts. A remote server cannot write into your filesystem, so
|
|
246
|
+
`render` takes no `out`: it stores the page and returns the same summary plus an
|
|
247
|
+
`artifactUrl` that lives for one hour, or a share link that lives for 30 days
|
|
248
|
+
with `share: true`. The HTML still never enters the agent's context.
|
|
249
|
+
`catalog`, `search-catalog`, `describe`, `recipes`, `recipe` and `themes`
|
|
250
|
+
answer without a token; `validate` and `render` need an AgentKit bearer token.
|
|
251
|
+
|
|
252
|
+
```json
|
|
253
|
+
{
|
|
254
|
+
"mcpServers": {
|
|
255
|
+
"ak-render": {
|
|
256
|
+
"type": "http",
|
|
257
|
+
"url": "https://render.agentkit.best/mcp",
|
|
258
|
+
"headers": { "Authorization": "Bearer ${AGENTKIT_TOKEN}" }
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
Details, limits and the REST routes are in
|
|
265
|
+
[apps/cloud/README.md](./apps/cloud/README.md).
|
|
266
|
+
|
|
267
|
+
## Token cost
|
|
268
|
+
|
|
269
|
+
The compiled page goes to disk, never through the model. What the agent pays
|
|
270
|
+
is guidance it reads, the spec it writes, and a one-line summary it reads back.
|
|
271
|
+
|
|
272
|
+
| Part of a page task | Hand-written HTML | AK Render |
|
|
273
|
+
| --- | ---: | ---: |
|
|
274
|
+
| Presentation guidance read | 25.0k (baseline mean) | 10.6k (shared contract, skill, catalog, `describe --json`) |
|
|
275
|
+
| Written by the agent | 13.9k (median legacy page) | 7.2k (projected spec) |
|
|
276
|
+
| Returned into context | the written page is already there | 0.1k (render summary) |
|
|
277
|
+
| **Total, estimated** | **38.9k** | **17.9k (−54%)** |
|
|
278
|
+
|
|
279
|
+
With the compact workflow the agent guide recommends,
|
|
280
|
+
`describe <types...> --compact`, the guidance read is 5.7k and the total
|
|
281
|
+
13.1k (−66%). The spec written and the summary returned are the same.
|
|
282
|
+
|
|
283
|
+
- **Benchmarked:** presentation context drops 64–68%, from 23.7k–26.6k tokens
|
|
284
|
+
of AgentKit's legacy HTML guidance to 7.9k–8.5k on the `ak-render` skill
|
|
285
|
+
route: the shared AgentKit contract, the skill, `catalog`, and the
|
|
286
|
+
`describe --json` output of the blocks a task uses
|
|
287
|
+
([render benchmark](./docs/artifacts/benchmark-render.md)). The `ak:preview`
|
|
288
|
+
diff task (68%) follows AgentKit's reference-loading table directly; the
|
|
289
|
+
explain, brainstorm and plan rows use the `ak-preview` reference set as a
|
|
290
|
+
proxy for their hand-written HTML route.
|
|
291
|
+
- **Measured on 12 HTML pages agents wrote in real projects:** a median of 26%
|
|
292
|
+
of each page is visible text; the rest is markup, CSS and script. The
|
|
293
|
+
projected median output saving is 52%. A page that is mostly prose saves
|
|
294
|
+
little or nothing: one of the twelve grew by 35%.
|
|
295
|
+
- **Not measured yet:** live model token counts, repair loops, wall time and
|
|
296
|
+
output quality.
|
|
297
|
+
|
|
298
|
+
Characters are measured; tokens are estimated at 4 characters per token. Method
|
|
299
|
+
and per-page data: [agent token cost](./docs/artifacts/agent-token-cost.md),
|
|
300
|
+
produced by `benchmarks/agent-token-cost.mjs`.
|
|
35
301
|
|
|
36
302
|
## Design in one screen
|
|
37
303
|
|
|
@@ -55,29 +321,26 @@ Six decisions define the boundary, argued in
|
|
|
55
321
|
model-friendly spec normalizes into a flat node graph with stable IDs for
|
|
56
322
|
rendering, future diff/patch/editor tooling, and MCP surfaces.
|
|
57
323
|
2. **Catalog and registry are separate.** `catalog()` is compact and cheap;
|
|
58
|
-
`describe(type)` carries the full contract
|
|
324
|
+
`describe(type)` carries the full contract, and `--compact` one line per
|
|
325
|
+
prop. Discovery stays out of the token
|
|
59
326
|
budget until a block is actually selected.
|
|
60
327
|
3. **The interaction runtime is trusted and declarative.** A closed action
|
|
61
328
|
vocabulary, one small event-delegation script, native HTML controls first,
|
|
62
329
|
and only the feature modules a page uses.
|
|
63
330
|
4. **Themes are typed data, never CSS.** Built-in presets plus user presets that
|
|
64
331
|
`extends` them. No CSS escape hatch, no CDN fonts.
|
|
65
|
-
5. **Local is canonical; cloud is opt-in.** The hosted renderer
|
|
66
|
-
compiler and
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
332
|
+
5. **Local is canonical; cloud is opt-in.** The hosted renderer and the remote
|
|
333
|
+
MCP server reuse the same compiler and tool contracts and are never the
|
|
334
|
+
source of truth.
|
|
335
|
+
6. **Optional capabilities arrive as adapters.** Diagrams can delegate to an
|
|
336
|
+
installed diagram compiler; without one, a structured fallback renders.
|
|
70
337
|
|
|
71
|
-
## Install
|
|
338
|
+
## Install as a dependency
|
|
72
339
|
|
|
73
340
|
```bash
|
|
74
341
|
pnpm add @bestagentkits/render
|
|
75
|
-
# or run without installing
|
|
76
|
-
npx @bestagentkits/render --help
|
|
77
342
|
```
|
|
78
343
|
|
|
79
|
-
Requires Node.js >= 20.11.
|
|
80
|
-
|
|
81
344
|
## Library API
|
|
82
345
|
|
|
83
346
|
```ts
|
|
@@ -98,32 +361,41 @@ import {
|
|
|
98
361
|
| `render(spec, options)` | Compile a spec to a standalone HTML artifact | Available |
|
|
99
362
|
| `validate(spec)` | Report spec diagnostics without rendering | Available |
|
|
100
363
|
| `normalize(spec)` | Produce the flat internal IR | Available |
|
|
101
|
-
| `catalog()` | Compact list of
|
|
364
|
+
| `catalog(options)` | Compact list of blocks and actions, optionally one `category` | Available |
|
|
365
|
+
| `searchCatalog(query)` | Block types ranked by intent words | Available |
|
|
102
366
|
| `describe(type)` | Full machine-readable contract for one entry | Available |
|
|
367
|
+
| `describeMany(types, options)` | Up to 12 contracts, full or `compact` | Available |
|
|
368
|
+
| `recipes()`, `recipe(name)` | Page recipe list, and one recipe's starter spec | Available |
|
|
103
369
|
| `loadTheme(input)` | Validate and resolve a theme preset | Available |
|
|
104
370
|
| `buildThemeCatalog(options)` | Discover built-in, user, project, and explicit presets | Available |
|
|
105
371
|
|
|
106
|
-
## CLI
|
|
372
|
+
## CLI reference
|
|
107
373
|
|
|
108
374
|
```bash
|
|
109
375
|
ak-render page.yaml --out page.html
|
|
376
|
+
ak-render - --out page.html < page.yaml # read the spec from stdin
|
|
110
377
|
ak-render validate page.json
|
|
111
|
-
ak-render catalog
|
|
112
|
-
ak-render
|
|
378
|
+
ak-render catalog [--category <c>]
|
|
379
|
+
ak-render search-catalog <terms...>
|
|
380
|
+
ak-render describe <type...> [--compact]
|
|
381
|
+
ak-render recipes
|
|
382
|
+
ak-render recipe <name> # YAML by default
|
|
113
383
|
ak-render themes
|
|
384
|
+
ak-render mcp # MCP server over stdio
|
|
114
385
|
|
|
115
|
-
ak-render --help
|
|
386
|
+
ak-render <command> --help
|
|
116
387
|
ak-render --version
|
|
117
388
|
```
|
|
118
389
|
|
|
119
|
-
|
|
120
|
-
are registered by the milestones that implement them.
|
|
390
|
+
Every command accepts `--json` and never prompts.
|
|
121
391
|
|
|
122
392
|
## Fixtures and snapshots
|
|
123
393
|
|
|
124
394
|
`fixtures/pages/` holds the representative corpus the compiler is built
|
|
125
|
-
against: plan, explain, recap, diff, dashboard, media, interactive
|
|
126
|
-
showcase pages
|
|
395
|
+
against: plan, explain, recap, diff, dashboard, media, interactive and theme
|
|
396
|
+
showcase pages, one page per widget family, layout, data and theme feature,
|
|
397
|
+
and six composition pages (a dashboard, a benchmark report, a research report,
|
|
398
|
+
a product case study, a data explorer and an incident report). `fixtures/snapshots/` holds one committed artifact per built-in
|
|
127
399
|
preset. See [fixtures/README.md](./fixtures/README.md) and
|
|
128
400
|
[docs/themes.md](./docs/themes.md). Fixtures are the specification: a new
|
|
129
401
|
capability is not done until a fixture exercises it.
|
|
@@ -139,16 +411,24 @@ capability is not done until a fixture exercises it.
|
|
|
139
411
|
| `benchmarks/` | Reproducible measurement harnesses |
|
|
140
412
|
| `docs/adr/` | Architecture decision records |
|
|
141
413
|
| `docs/artifacts/` | Captured measurements and evidence |
|
|
142
|
-
| `
|
|
414
|
+
| `skills/`, `.claude-plugin/`, `.agents/plugins/`, `plugin.json`, `mcp.json` | Agent skill and plugin manifests |
|
|
415
|
+
| `assets/` | Embedded font licences and the plugin icon (`icon.svg` is the source of `logo.png` and `composer-icon.png`) |
|
|
416
|
+
| `site/` | Landing page spec, build script output and Cloudflare config |
|
|
417
|
+
| `src/mcp/` | MCP protocol, shared tool contracts, stdio and Streamable HTTP transports |
|
|
418
|
+
| `apps/cloud/` | Opt-in Cloudflare renderer: REST routes and the remote MCP endpoint |
|
|
143
419
|
|
|
144
420
|
## Development
|
|
145
421
|
|
|
146
422
|
```bash
|
|
147
423
|
pnpm install
|
|
148
|
-
pnpm verify # lint
|
|
424
|
+
pnpm verify # lint, typecheck, font and recipe checks, unit tests, build
|
|
149
425
|
pnpm test:browser # Playwright, after: pnpm exec playwright install chromium
|
|
150
426
|
pnpm test:package # pack, install into a temp project, exercise API and bin
|
|
151
427
|
pnpm bench:baseline # re-run the legacy presentation-context measurement
|
|
428
|
+
pnpm bench:spec # spec compression for the composition fixtures
|
|
429
|
+
pnpm build && pnpm bench:render --agentkit ../agentkit --repeat 9 # committed render artifact
|
|
430
|
+
pnpm site:build # compile the landing page and gallery into site/dist
|
|
431
|
+
pnpm site:deploy # build, then deploy site/dist with wrangler
|
|
152
432
|
```
|
|
153
433
|
|
|
154
434
|
See [CONTRIBUTING.md](./CONTRIBUTING.md) for the determinism, trust, and testing
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
Copyright 2022 The Bricolage Grotesque Project Authors (https://github.com/ateliertriay/bricolage)
|
|
2
|
+
|
|
3
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
4
|
+
This license is copied below, and is also available with a FAQ at:
|
|
5
|
+
http://scripts.sil.org/OFL
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
-----------------------------------------------------------
|
|
9
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
10
|
+
-----------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
PREAMBLE
|
|
13
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
14
|
+
development of collaborative font projects, to support the font creation
|
|
15
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
16
|
+
open framework in which fonts may be shared and improved in partnership
|
|
17
|
+
with others.
|
|
18
|
+
|
|
19
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
20
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
21
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
22
|
+
redistributed and/or sold with any software provided that any reserved
|
|
23
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
24
|
+
however, cannot be released under any other type of license. The
|
|
25
|
+
requirement for fonts to remain under this license does not apply
|
|
26
|
+
to any document created using the fonts or their derivatives.
|
|
27
|
+
|
|
28
|
+
DEFINITIONS
|
|
29
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
30
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
31
|
+
include source files, build scripts and documentation.
|
|
32
|
+
|
|
33
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
34
|
+
copyright statement(s).
|
|
35
|
+
|
|
36
|
+
"Original Version" refers to the collection of Font Software components as
|
|
37
|
+
distributed by the Copyright Holder(s).
|
|
38
|
+
|
|
39
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
40
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
41
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
42
|
+
new environment.
|
|
43
|
+
|
|
44
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
45
|
+
writer or other person who contributed to the Font Software.
|
|
46
|
+
|
|
47
|
+
PERMISSION & CONDITIONS
|
|
48
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
49
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
50
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
51
|
+
Software, subject to the following conditions:
|
|
52
|
+
|
|
53
|
+
1) Neither the Font Software nor any of its individual components,
|
|
54
|
+
in Original or Modified Versions, may be sold by itself.
|
|
55
|
+
|
|
56
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
57
|
+
redistributed and/or sold with any software, provided that each copy
|
|
58
|
+
contains the above copyright notice and this license. These can be
|
|
59
|
+
included either as stand-alone text files, human-readable headers or
|
|
60
|
+
in the appropriate machine-readable metadata fields within text or
|
|
61
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
62
|
+
|
|
63
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
64
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
65
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
66
|
+
presented to the users.
|
|
67
|
+
|
|
68
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
69
|
+
Software shall not be used to promote, endorse or advertise any
|
|
70
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
71
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
72
|
+
permission.
|
|
73
|
+
|
|
74
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
75
|
+
must be distributed entirely under this license, and must not be
|
|
76
|
+
distributed under any other license. The requirement for fonts to
|
|
77
|
+
remain under this license does not apply to any document created
|
|
78
|
+
using the Font Software.
|
|
79
|
+
|
|
80
|
+
TERMINATION
|
|
81
|
+
This license becomes null and void if any of the above conditions are
|
|
82
|
+
not met.
|
|
83
|
+
|
|
84
|
+
DISCLAIMER
|
|
85
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
86
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
87
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
88
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
89
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
90
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
91
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
92
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
93
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
Copyright 2020 The Fraunces Project Authors (github.com/undercasetype/Fraunces) Fraunces-Italic[SOFT,WONK,opsz,wght].ttf: Copyright 2020 The Fraunces Project Authors (github.com/undercasetype/Fraunces)
|
|
2
|
+
|
|
3
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
4
|
+
This license is copied below, and is also available with a FAQ at:
|
|
5
|
+
http://scripts.sil.org/OFL
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
-----------------------------------------------------------
|
|
9
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
10
|
+
-----------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
PREAMBLE
|
|
13
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
14
|
+
development of collaborative font projects, to support the font creation
|
|
15
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
16
|
+
open framework in which fonts may be shared and improved in partnership
|
|
17
|
+
with others.
|
|
18
|
+
|
|
19
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
20
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
21
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
22
|
+
redistributed and/or sold with any software provided that any reserved
|
|
23
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
24
|
+
however, cannot be released under any other type of license. The
|
|
25
|
+
requirement for fonts to remain under this license does not apply
|
|
26
|
+
to any document created using the fonts or their derivatives.
|
|
27
|
+
|
|
28
|
+
DEFINITIONS
|
|
29
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
30
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
31
|
+
include source files, build scripts and documentation.
|
|
32
|
+
|
|
33
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
34
|
+
copyright statement(s).
|
|
35
|
+
|
|
36
|
+
"Original Version" refers to the collection of Font Software components as
|
|
37
|
+
distributed by the Copyright Holder(s).
|
|
38
|
+
|
|
39
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
40
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
41
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
42
|
+
new environment.
|
|
43
|
+
|
|
44
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
45
|
+
writer or other person who contributed to the Font Software.
|
|
46
|
+
|
|
47
|
+
PERMISSION & CONDITIONS
|
|
48
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
49
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
50
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
51
|
+
Software, subject to the following conditions:
|
|
52
|
+
|
|
53
|
+
1) Neither the Font Software nor any of its individual components,
|
|
54
|
+
in Original or Modified Versions, may be sold by itself.
|
|
55
|
+
|
|
56
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
57
|
+
redistributed and/or sold with any software, provided that each copy
|
|
58
|
+
contains the above copyright notice and this license. These can be
|
|
59
|
+
included either as stand-alone text files, human-readable headers or
|
|
60
|
+
in the appropriate machine-readable metadata fields within text or
|
|
61
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
62
|
+
|
|
63
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
64
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
65
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
66
|
+
presented to the users.
|
|
67
|
+
|
|
68
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
69
|
+
Software shall not be used to promote, endorse or advertise any
|
|
70
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
71
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
72
|
+
permission.
|
|
73
|
+
|
|
74
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
75
|
+
must be distributed entirely under this license, and must not be
|
|
76
|
+
distributed under any other license. The requirement for fonts to
|
|
77
|
+
remain under this license does not apply to any document created
|
|
78
|
+
using the Font Software.
|
|
79
|
+
|
|
80
|
+
TERMINATION
|
|
81
|
+
This license becomes null and void if any of the above conditions are
|
|
82
|
+
not met.
|
|
83
|
+
|
|
84
|
+
DISCLAIMER
|
|
85
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
86
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
87
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
88
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
89
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
90
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
91
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
92
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
93
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|