@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.
Files changed (635) hide show
  1. package/CHANGELOG.md +209 -1
  2. package/README.md +324 -44
  3. package/assets/fonts/bricolage-grotesque/OFL.txt +93 -0
  4. package/assets/fonts/fraunces/OFL.txt +93 -0
  5. package/assets/fonts/geist/OFL.txt +93 -0
  6. package/assets/fonts/inter-tight/OFL.txt +93 -0
  7. package/assets/fonts/jetbrains-mono/OFL.txt +93 -0
  8. package/assets/fonts/plus-jakarta-sans/OFL.txt +93 -0
  9. package/dist/blocks/chart/chart-check-kind-rules.d.ts +10 -0
  10. package/dist/blocks/chart/chart-check-kind-rules.d.ts.map +1 -0
  11. package/dist/blocks/chart/chart-check-kind-rules.js +151 -0
  12. package/dist/blocks/chart/chart-check-kind-rules.js.map +1 -0
  13. package/dist/blocks/chart/chart-check.d.ts +15 -0
  14. package/dist/blocks/chart/chart-check.d.ts.map +1 -0
  15. package/dist/blocks/chart/chart-check.js +196 -0
  16. package/dist/blocks/chart/chart-check.js.map +1 -0
  17. package/dist/blocks/chart/chart-encoding-schema.d.ts +7 -0
  18. package/dist/blocks/chart/chart-encoding-schema.d.ts.map +1 -0
  19. package/dist/blocks/chart/chart-encoding-schema.js +39 -0
  20. package/dist/blocks/chart/chart-encoding-schema.js.map +1 -0
  21. package/dist/blocks/chart/chart-encodings.d.ts +29 -0
  22. package/dist/blocks/chart/chart-encodings.d.ts.map +1 -0
  23. package/dist/blocks/chart/chart-encodings.js +59 -0
  24. package/dist/blocks/chart/chart-encodings.js.map +1 -0
  25. package/dist/blocks/chart/chart-kinds.d.ts +18 -0
  26. package/dist/blocks/chart/chart-kinds.d.ts.map +1 -0
  27. package/dist/blocks/chart/chart-kinds.js +60 -0
  28. package/dist/blocks/chart/chart-kinds.js.map +1 -0
  29. package/dist/blocks/chart/chart-model-rows.d.ts +23 -0
  30. package/dist/blocks/chart/chart-model-rows.d.ts.map +1 -0
  31. package/dist/blocks/chart/chart-model-rows.js +153 -0
  32. package/dist/blocks/chart/chart-model-rows.js.map +1 -0
  33. package/dist/blocks/chart/chart-model.d.ts +17 -0
  34. package/dist/blocks/chart/chart-model.d.ts.map +1 -0
  35. package/dist/blocks/chart/chart-model.js +131 -0
  36. package/dist/blocks/chart/chart-model.js.map +1 -0
  37. package/dist/blocks/chart/chart-styles.d.ts +3 -0
  38. package/dist/blocks/chart/chart-styles.d.ts.map +1 -0
  39. package/dist/blocks/chart/chart-styles.js +76 -0
  40. package/dist/blocks/chart/chart-styles.js.map +1 -0
  41. package/dist/blocks/chart/chart.d.ts +12 -0
  42. package/dist/blocks/chart/chart.d.ts.map +1 -0
  43. package/dist/blocks/chart/chart.js +73 -0
  44. package/dist/blocks/chart/chart.js.map +1 -0
  45. package/dist/blocks/chart/index.d.ts +4 -0
  46. package/dist/blocks/chart/index.d.ts.map +1 -0
  47. package/dist/blocks/chart/index.js +8 -0
  48. package/dist/blocks/chart/index.js.map +1 -0
  49. package/dist/blocks/composition/accordion.d.ts +4 -0
  50. package/dist/blocks/composition/accordion.d.ts.map +1 -0
  51. package/dist/blocks/composition/accordion.js +45 -0
  52. package/dist/blocks/composition/accordion.js.map +1 -0
  53. package/dist/blocks/composition/bento.d.ts +4 -0
  54. package/dist/blocks/composition/bento.d.ts.map +1 -0
  55. package/dist/blocks/composition/bento.js +91 -0
  56. package/dist/blocks/composition/bento.js.map +1 -0
  57. package/dist/blocks/composition/carousel.d.ts +4 -0
  58. package/dist/blocks/composition/carousel.d.ts.map +1 -0
  59. package/dist/blocks/composition/carousel.js +51 -0
  60. package/dist/blocks/composition/carousel.js.map +1 -0
  61. package/dist/blocks/composition/composition-runtime.d.ts +14 -0
  62. package/dist/blocks/composition/composition-runtime.d.ts.map +1 -0
  63. package/dist/blocks/composition/composition-runtime.js +136 -0
  64. package/dist/blocks/composition/composition-runtime.js.map +1 -0
  65. package/dist/blocks/composition/composition-styles.d.ts +10 -0
  66. package/dist/blocks/composition/composition-styles.d.ts.map +1 -0
  67. package/dist/blocks/composition/composition-styles.js +80 -0
  68. package/dist/blocks/composition/composition-styles.js.map +1 -0
  69. package/dist/blocks/composition/index.d.ts +4 -0
  70. package/dist/blocks/composition/index.d.ts.map +1 -0
  71. package/dist/blocks/composition/index.js +11 -0
  72. package/dist/blocks/composition/index.js.map +1 -0
  73. package/dist/blocks/composition/nestable-blocks.d.ts +37 -0
  74. package/dist/blocks/composition/nestable-blocks.d.ts.map +1 -0
  75. package/dist/blocks/composition/nestable-blocks.js +92 -0
  76. package/dist/blocks/composition/nestable-blocks.js.map +1 -0
  77. package/dist/blocks/composition/tabs.d.ts +4 -0
  78. package/dist/blocks/composition/tabs.d.ts.map +1 -0
  79. package/dist/blocks/composition/tabs.js +48 -0
  80. package/dist/blocks/composition/tabs.js.map +1 -0
  81. package/dist/blocks/controls/checkbox.d.ts +12 -0
  82. package/dist/blocks/controls/checkbox.d.ts.map +1 -0
  83. package/dist/blocks/controls/checkbox.js +43 -0
  84. package/dist/blocks/controls/checkbox.js.map +1 -0
  85. package/dist/blocks/controls/choice-options.d.ts +24 -0
  86. package/dist/blocks/controls/choice-options.d.ts.map +1 -0
  87. package/dist/blocks/controls/choice-options.js +117 -0
  88. package/dist/blocks/controls/choice-options.js.map +1 -0
  89. package/dist/blocks/controls/control-shared.d.ts +66 -0
  90. package/dist/blocks/controls/control-shared.d.ts.map +1 -0
  91. package/dist/blocks/controls/control-shared.js +241 -0
  92. package/dist/blocks/controls/control-shared.js.map +1 -0
  93. package/dist/blocks/controls/controls-runtime.d.ts +17 -0
  94. package/dist/blocks/controls/controls-runtime.d.ts.map +1 -0
  95. package/dist/blocks/controls/controls-runtime.js +180 -0
  96. package/dist/blocks/controls/controls-runtime.js.map +1 -0
  97. package/dist/blocks/controls/controls-styles.d.ts +14 -0
  98. package/dist/blocks/controls/controls-styles.d.ts.map +1 -0
  99. package/dist/blocks/controls/controls-styles.js +54 -0
  100. package/dist/blocks/controls/controls-styles.js.map +1 -0
  101. package/dist/blocks/controls/date-input.d.ts +6 -0
  102. package/dist/blocks/controls/date-input.d.ts.map +1 -0
  103. package/dist/blocks/controls/date-input.js +58 -0
  104. package/dist/blocks/controls/date-input.js.map +1 -0
  105. package/dist/blocks/controls/field-input.d.ts +10 -0
  106. package/dist/blocks/controls/field-input.d.ts.map +1 -0
  107. package/dist/blocks/controls/field-input.js +20 -0
  108. package/dist/blocks/controls/field-input.js.map +1 -0
  109. package/dist/blocks/controls/filter-bar.d.ts +11 -0
  110. package/dist/blocks/controls/filter-bar.d.ts.map +1 -0
  111. package/dist/blocks/controls/filter-bar.js +115 -0
  112. package/dist/blocks/controls/filter-bar.js.map +1 -0
  113. package/dist/blocks/controls/index.d.ts +4 -0
  114. package/dist/blocks/controls/index.d.ts.map +1 -0
  115. package/dist/blocks/controls/index.js +41 -0
  116. package/dist/blocks/controls/index.js.map +1 -0
  117. package/dist/blocks/controls/number-input.d.ts +4 -0
  118. package/dist/blocks/controls/number-input.d.ts.map +1 -0
  119. package/dist/blocks/controls/number-input.js +62 -0
  120. package/dist/blocks/controls/number-input.js.map +1 -0
  121. package/dist/blocks/controls/radio-group.d.ts +4 -0
  122. package/dist/blocks/controls/radio-group.d.ts.map +1 -0
  123. package/dist/blocks/controls/radio-group.js +56 -0
  124. package/dist/blocks/controls/radio-group.js.map +1 -0
  125. package/dist/blocks/controls/select.d.ts +4 -0
  126. package/dist/blocks/controls/select.d.ts.map +1 -0
  127. package/dist/blocks/controls/select.js +49 -0
  128. package/dist/blocks/controls/select.js.map +1 -0
  129. package/dist/blocks/controls/switch.d.ts +4 -0
  130. package/dist/blocks/controls/switch.d.ts.map +1 -0
  131. package/dist/blocks/controls/switch.js +22 -0
  132. package/dist/blocks/controls/switch.js.map +1 -0
  133. package/dist/blocks/controls/text-input.d.ts +4 -0
  134. package/dist/blocks/controls/text-input.d.ts.map +1 -0
  135. package/dist/blocks/controls/text-input.js +42 -0
  136. package/dist/blocks/controls/text-input.js.map +1 -0
  137. package/dist/blocks/data-table/data-table-cells.d.ts +26 -0
  138. package/dist/blocks/data-table/data-table-cells.d.ts.map +1 -0
  139. package/dist/blocks/data-table/data-table-cells.js +154 -0
  140. package/dist/blocks/data-table/data-table-cells.js.map +1 -0
  141. package/dist/blocks/data-table/data-table-check.d.ts +10 -0
  142. package/dist/blocks/data-table/data-table-check.d.ts.map +1 -0
  143. package/dist/blocks/data-table/data-table-check.js +99 -0
  144. package/dist/blocks/data-table/data-table-check.js.map +1 -0
  145. package/dist/blocks/data-table/data-table-columns.d.ts +41 -0
  146. package/dist/blocks/data-table/data-table-columns.d.ts.map +1 -0
  147. package/dist/blocks/data-table/data-table-columns.js +155 -0
  148. package/dist/blocks/data-table/data-table-columns.js.map +1 -0
  149. package/dist/blocks/data-table/data-table-runtime.d.ts +15 -0
  150. package/dist/blocks/data-table/data-table-runtime.d.ts.map +1 -0
  151. package/dist/blocks/data-table/data-table-runtime.js +106 -0
  152. package/dist/blocks/data-table/data-table-runtime.js.map +1 -0
  153. package/dist/blocks/data-table/data-table-styles.d.ts +11 -0
  154. package/dist/blocks/data-table/data-table-styles.d.ts.map +1 -0
  155. package/dist/blocks/data-table/data-table-styles.js +74 -0
  156. package/dist/blocks/data-table/data-table-styles.js.map +1 -0
  157. package/dist/blocks/data-table/data-table.d.ts +17 -0
  158. package/dist/blocks/data-table/data-table.d.ts.map +1 -0
  159. package/dist/blocks/data-table/data-table.js +159 -0
  160. package/dist/blocks/data-table/data-table.js.map +1 -0
  161. package/dist/blocks/data-table/index.d.ts +4 -0
  162. package/dist/blocks/data-table/index.d.ts.map +1 -0
  163. package/dist/blocks/data-table/index.js +18 -0
  164. package/dist/blocks/data-table/index.js.map +1 -0
  165. package/dist/blocks/engineering/api-endpoint.d.ts +12 -0
  166. package/dist/blocks/engineering/api-endpoint.d.ts.map +1 -0
  167. package/dist/blocks/engineering/api-endpoint.js +174 -0
  168. package/dist/blocks/engineering/api-endpoint.js.map +1 -0
  169. package/dist/blocks/engineering/engineering-helpers.d.ts +49 -0
  170. package/dist/blocks/engineering/engineering-helpers.d.ts.map +1 -0
  171. package/dist/blocks/engineering/engineering-helpers.js +156 -0
  172. package/dist/blocks/engineering/engineering-helpers.js.map +1 -0
  173. package/dist/blocks/engineering/engineering-styles.d.ts +12 -0
  174. package/dist/blocks/engineering/engineering-styles.d.ts.map +1 -0
  175. package/dist/blocks/engineering/engineering-styles.js +174 -0
  176. package/dist/blocks/engineering/engineering-styles.js.map +1 -0
  177. package/dist/blocks/engineering/index.d.ts +4 -0
  178. package/dist/blocks/engineering/index.d.ts.map +1 -0
  179. package/dist/blocks/engineering/index.js +30 -0
  180. package/dist/blocks/engineering/index.js.map +1 -0
  181. package/dist/blocks/engineering/kanban.d.ts +11 -0
  182. package/dist/blocks/engineering/kanban.d.ts.map +1 -0
  183. package/dist/blocks/engineering/kanban.js +162 -0
  184. package/dist/blocks/engineering/kanban.js.map +1 -0
  185. package/dist/blocks/engineering/log-viewer.d.ts +14 -0
  186. package/dist/blocks/engineering/log-viewer.d.ts.map +1 -0
  187. package/dist/blocks/engineering/log-viewer.js +158 -0
  188. package/dist/blocks/engineering/log-viewer.js.map +1 -0
  189. package/dist/blocks/engineering/roadmap.d.ts +13 -0
  190. package/dist/blocks/engineering/roadmap.d.ts.map +1 -0
  191. package/dist/blocks/engineering/roadmap.js +197 -0
  192. package/dist/blocks/engineering/roadmap.js.map +1 -0
  193. package/dist/blocks/engineering/schema-viewer.d.ts +25 -0
  194. package/dist/blocks/engineering/schema-viewer.d.ts.map +1 -0
  195. package/dist/blocks/engineering/schema-viewer.js +124 -0
  196. package/dist/blocks/engineering/schema-viewer.js.map +1 -0
  197. package/dist/blocks/engineering/test-results.d.ts +12 -0
  198. package/dist/blocks/engineering/test-results.d.ts.map +1 -0
  199. package/dist/blocks/engineering/test-results.js +180 -0
  200. package/dist/blocks/engineering/test-results.js.map +1 -0
  201. package/dist/blocks/evidence/annotated-image.d.ts +15 -0
  202. package/dist/blocks/evidence/annotated-image.d.ts.map +1 -0
  203. package/dist/blocks/evidence/annotated-image.js +99 -0
  204. package/dist/blocks/evidence/annotated-image.js.map +1 -0
  205. package/dist/blocks/evidence/benchmark-comparison.d.ts +11 -0
  206. package/dist/blocks/evidence/benchmark-comparison.d.ts.map +1 -0
  207. package/dist/blocks/evidence/benchmark-comparison.js +262 -0
  208. package/dist/blocks/evidence/benchmark-comparison.js.map +1 -0
  209. package/dist/blocks/evidence/benchmark-verdict.d.ts +26 -0
  210. package/dist/blocks/evidence/benchmark-verdict.d.ts.map +1 -0
  211. package/dist/blocks/evidence/benchmark-verdict.js +31 -0
  212. package/dist/blocks/evidence/benchmark-verdict.js.map +1 -0
  213. package/dist/blocks/evidence/evidence-helpers.d.ts +39 -0
  214. package/dist/blocks/evidence/evidence-helpers.d.ts.map +1 -0
  215. package/dist/blocks/evidence/evidence-helpers.js +87 -0
  216. package/dist/blocks/evidence/evidence-helpers.js.map +1 -0
  217. package/dist/blocks/evidence/evidence-styles.d.ts +12 -0
  218. package/dist/blocks/evidence/evidence-styles.d.ts.map +1 -0
  219. package/dist/blocks/evidence/evidence-styles.js +88 -0
  220. package/dist/blocks/evidence/evidence-styles.js.map +1 -0
  221. package/dist/blocks/evidence/index.d.ts +4 -0
  222. package/dist/blocks/evidence/index.d.ts.map +1 -0
  223. package/dist/blocks/evidence/index.js +15 -0
  224. package/dist/blocks/evidence/index.js.map +1 -0
  225. package/dist/blocks/evidence/metric-breakdown.d.ts +22 -0
  226. package/dist/blocks/evidence/metric-breakdown.d.ts.map +1 -0
  227. package/dist/blocks/evidence/metric-breakdown.js +203 -0
  228. package/dist/blocks/evidence/metric-breakdown.js.map +1 -0
  229. package/dist/blocks/evidence/references.d.ts +13 -0
  230. package/dist/blocks/evidence/references.d.ts.map +1 -0
  231. package/dist/blocks/evidence/references.js +103 -0
  232. package/dist/blocks/evidence/references.js.map +1 -0
  233. package/dist/blocks/index.d.ts +8 -0
  234. package/dist/blocks/index.d.ts.map +1 -0
  235. package/dist/blocks/index.js +24 -0
  236. package/dist/blocks/index.js.map +1 -0
  237. package/dist/blocks/layout/grid-item.d.ts +4 -0
  238. package/dist/blocks/layout/grid-item.d.ts.map +1 -0
  239. package/dist/blocks/layout/grid-item.js +65 -0
  240. package/dist/blocks/layout/grid-item.js.map +1 -0
  241. package/dist/blocks/layout/grid.d.ts +9 -0
  242. package/dist/blocks/layout/grid.d.ts.map +1 -0
  243. package/dist/blocks/layout/grid.js +99 -0
  244. package/dist/blocks/layout/grid.js.map +1 -0
  245. package/dist/blocks/layout/index.d.ts +4 -0
  246. package/dist/blocks/layout/index.d.ts.map +1 -0
  247. package/dist/blocks/layout/index.js +23 -0
  248. package/dist/blocks/layout/index.js.map +1 -0
  249. package/dist/blocks/layout/layout-styles.d.ts +40 -0
  250. package/dist/blocks/layout/layout-styles.d.ts.map +1 -0
  251. package/dist/blocks/layout/layout-styles.js +110 -0
  252. package/dist/blocks/layout/layout-styles.js.map +1 -0
  253. package/dist/blocks/layout/main-aside.d.ts +4 -0
  254. package/dist/blocks/layout/main-aside.d.ts.map +1 -0
  255. package/dist/blocks/layout/main-aside.js +21 -0
  256. package/dist/blocks/layout/main-aside.js.map +1 -0
  257. package/dist/blocks/layout/rail-layout.d.ts +4 -0
  258. package/dist/blocks/layout/rail-layout.d.ts.map +1 -0
  259. package/dist/blocks/layout/rail-layout.js +33 -0
  260. package/dist/blocks/layout/rail-layout.js.map +1 -0
  261. package/dist/blocks/layout/semantic-layout-parts.d.ts +14 -0
  262. package/dist/blocks/layout/semantic-layout-parts.d.ts.map +1 -0
  263. package/dist/blocks/layout/semantic-layout-parts.js +9 -0
  264. package/dist/blocks/layout/semantic-layout-parts.js.map +1 -0
  265. package/dist/blocks/layout/sidebar-layout.d.ts +4 -0
  266. package/dist/blocks/layout/sidebar-layout.d.ts.map +1 -0
  267. package/dist/blocks/layout/sidebar-layout.js +30 -0
  268. package/dist/blocks/layout/sidebar-layout.js.map +1 -0
  269. package/dist/blocks/layout/split.d.ts +4 -0
  270. package/dist/blocks/layout/split.d.ts.map +1 -0
  271. package/dist/blocks/layout/split.js +23 -0
  272. package/dist/blocks/layout/split.js.map +1 -0
  273. package/dist/blocks/layout/stack.d.ts +4 -0
  274. package/dist/blocks/layout/stack.d.ts.map +1 -0
  275. package/dist/blocks/layout/stack.js +36 -0
  276. package/dist/blocks/layout/stack.js.map +1 -0
  277. package/dist/blocks/product/calendar-dates.d.ts +59 -0
  278. package/dist/blocks/product/calendar-dates.d.ts.map +1 -0
  279. package/dist/blocks/product/calendar-dates.js +100 -0
  280. package/dist/blocks/product/calendar-dates.js.map +1 -0
  281. package/dist/blocks/product/calendar.d.ts +12 -0
  282. package/dist/blocks/product/calendar.d.ts.map +1 -0
  283. package/dist/blocks/product/calendar.js +125 -0
  284. package/dist/blocks/product/calendar.js.map +1 -0
  285. package/dist/blocks/product/feature-matrix.d.ts +4 -0
  286. package/dist/blocks/product/feature-matrix.d.ts.map +1 -0
  287. package/dist/blocks/product/feature-matrix.js +72 -0
  288. package/dist/blocks/product/feature-matrix.js.map +1 -0
  289. package/dist/blocks/product/gallery.d.ts +14 -0
  290. package/dist/blocks/product/gallery.d.ts.map +1 -0
  291. package/dist/blocks/product/gallery.js +86 -0
  292. package/dist/blocks/product/gallery.js.map +1 -0
  293. package/dist/blocks/product/index.d.ts +4 -0
  294. package/dist/blocks/product/index.d.ts.map +1 -0
  295. package/dist/blocks/product/index.js +40 -0
  296. package/dist/blocks/product/index.js.map +1 -0
  297. package/dist/blocks/product/logo-cloud.d.ts +4 -0
  298. package/dist/blocks/product/logo-cloud.d.ts.map +1 -0
  299. package/dist/blocks/product/logo-cloud.js +42 -0
  300. package/dist/blocks/product/logo-cloud.js.map +1 -0
  301. package/dist/blocks/product/people.d.ts +4 -0
  302. package/dist/blocks/product/people.d.ts.map +1 -0
  303. package/dist/blocks/product/people.js +53 -0
  304. package/dist/blocks/product/people.js.map +1 -0
  305. package/dist/blocks/product/pricing.d.ts +4 -0
  306. package/dist/blocks/product/pricing.d.ts.map +1 -0
  307. package/dist/blocks/product/pricing.js +86 -0
  308. package/dist/blocks/product/pricing.js.map +1 -0
  309. package/dist/blocks/product/product-helpers.d.ts +22 -0
  310. package/dist/blocks/product/product-helpers.d.ts.map +1 -0
  311. package/dist/blocks/product/product-helpers.js +48 -0
  312. package/dist/blocks/product/product-helpers.js.map +1 -0
  313. package/dist/blocks/product/product-runtime.d.ts +15 -0
  314. package/dist/blocks/product/product-runtime.d.ts.map +1 -0
  315. package/dist/blocks/product/product-runtime.js +97 -0
  316. package/dist/blocks/product/product-runtime.js.map +1 -0
  317. package/dist/blocks/product/product-styles.d.ts +14 -0
  318. package/dist/blocks/product/product-styles.d.ts.map +1 -0
  319. package/dist/blocks/product/product-styles.js +120 -0
  320. package/dist/blocks/product/product-styles.js.map +1 -0
  321. package/dist/blocks/product/testimonial.d.ts +8 -0
  322. package/dist/blocks/product/testimonial.d.ts.map +1 -0
  323. package/dist/blocks/product/testimonial.js +67 -0
  324. package/dist/blocks/product/testimonial.js.map +1 -0
  325. package/dist/cli.d.ts +2 -0
  326. package/dist/cli.d.ts.map +1 -1
  327. package/dist/cli.js +193 -39
  328. package/dist/cli.js.map +1 -1
  329. package/dist/data/data-json-schema.d.ts +9 -0
  330. package/dist/data/data-json-schema.d.ts.map +1 -0
  331. package/dist/data/data-json-schema.js +48 -0
  332. package/dist/data/data-json-schema.js.map +1 -0
  333. package/dist/data/dataset-types.d.ts +47 -0
  334. package/dist/data/dataset-types.d.ts.map +1 -0
  335. package/dist/data/dataset-types.js +49 -0
  336. package/dist/data/dataset-types.js.map +1 -0
  337. package/dist/data/format-value.d.ts +39 -0
  338. package/dist/data/format-value.d.ts.map +1 -0
  339. package/dist/data/format-value.js +214 -0
  340. package/dist/data/format-value.js.map +1 -0
  341. package/dist/data/resolve-block-data.d.ts +24 -0
  342. package/dist/data/resolve-block-data.d.ts.map +1 -0
  343. package/dist/data/resolve-block-data.js +190 -0
  344. package/dist/data/resolve-block-data.js.map +1 -0
  345. package/dist/data/transform-pipeline.d.ts +65 -0
  346. package/dist/data/transform-pipeline.d.ts.map +1 -0
  347. package/dist/data/transform-pipeline.js +234 -0
  348. package/dist/data/transform-pipeline.js.map +1 -0
  349. package/dist/data/validate-datasets.d.ts +22 -0
  350. package/dist/data/validate-datasets.d.ts.map +1 -0
  351. package/dist/data/validate-datasets.js +137 -0
  352. package/dist/data/validate-datasets.js.map +1 -0
  353. package/dist/diagram/adapter-markup-fit.d.ts +44 -0
  354. package/dist/diagram/adapter-markup-fit.d.ts.map +1 -0
  355. package/dist/diagram/adapter-markup-fit.js +292 -0
  356. package/dist/diagram/adapter-markup-fit.js.map +1 -0
  357. package/dist/diagram/adapter-stylesheet-filter.d.ts +56 -0
  358. package/dist/diagram/adapter-stylesheet-filter.d.ts.map +1 -0
  359. package/dist/diagram/adapter-stylesheet-filter.js +245 -0
  360. package/dist/diagram/adapter-stylesheet-filter.js.map +1 -0
  361. package/dist/diagram/adapter.d.ts +17 -0
  362. package/dist/diagram/adapter.d.ts.map +1 -1
  363. package/dist/diagram/adapter.js +43 -2
  364. package/dist/diagram/adapter.js.map +1 -1
  365. package/dist/index.d.ts +14 -1
  366. package/dist/index.d.ts.map +1 -1
  367. package/dist/index.js +6 -0
  368. package/dist/index.js.map +1 -1
  369. package/dist/ir.d.ts +18 -0
  370. package/dist/ir.d.ts.map +1 -1
  371. package/dist/ir.js.map +1 -1
  372. package/dist/mcp/mcp-http-transport.d.ts +68 -0
  373. package/dist/mcp/mcp-http-transport.d.ts.map +1 -0
  374. package/dist/mcp/mcp-http-transport.js +140 -0
  375. package/dist/mcp/mcp-http-transport.js.map +1 -0
  376. package/dist/mcp/mcp-json-rpc-dispatch.d.ts +38 -0
  377. package/dist/mcp/mcp-json-rpc-dispatch.d.ts.map +1 -0
  378. package/dist/mcp/mcp-json-rpc-dispatch.js +98 -0
  379. package/dist/mcp/mcp-json-rpc-dispatch.js.map +1 -0
  380. package/dist/mcp/mcp-local-tools.d.ts +20 -0
  381. package/dist/mcp/mcp-local-tools.d.ts.map +1 -0
  382. package/dist/mcp/mcp-local-tools.js +58 -0
  383. package/dist/mcp/mcp-local-tools.js.map +1 -0
  384. package/dist/mcp/mcp-protocol.d.ts +79 -0
  385. package/dist/mcp/mcp-protocol.d.ts.map +1 -0
  386. package/dist/mcp/mcp-protocol.js +83 -0
  387. package/dist/mcp/mcp-protocol.js.map +1 -0
  388. package/dist/mcp/mcp-stdio-transport.d.ts +28 -0
  389. package/dist/mcp/mcp-stdio-transport.d.ts.map +1 -0
  390. package/dist/mcp/mcp-stdio-transport.js +73 -0
  391. package/dist/mcp/mcp-stdio-transport.js.map +1 -0
  392. package/dist/mcp/mcp-tool-definitions.d.ts +66 -0
  393. package/dist/mcp/mcp-tool-definitions.d.ts.map +1 -0
  394. package/dist/mcp/mcp-tool-definitions.js +246 -0
  395. package/dist/mcp/mcp-tool-definitions.js.map +1 -0
  396. package/dist/mcp-server.d.ts +10 -0
  397. package/dist/mcp-server.d.ts.map +1 -0
  398. package/dist/mcp-server.js +9 -0
  399. package/dist/mcp-server.js.map +1 -0
  400. package/dist/recipes/index.d.ts +27 -0
  401. package/dist/recipes/index.d.ts.map +1 -0
  402. package/dist/recipes/index.js +30 -0
  403. package/dist/recipes/index.js.map +1 -0
  404. package/dist/recipes/recipes.generated.d.ts +8 -0
  405. package/dist/recipes/recipes.generated.d.ts.map +1 -0
  406. package/dist/recipes/recipes.generated.js +704 -0
  407. package/dist/recipes/recipes.generated.js.map +1 -0
  408. package/dist/registry/actions.d.ts +2 -0
  409. package/dist/registry/actions.d.ts.map +1 -1
  410. package/dist/registry/actions.js +3 -1
  411. package/dist/registry/actions.js.map +1 -1
  412. package/dist/registry/block-module.d.ts +65 -0
  413. package/dist/registry/block-module.d.ts.map +1 -0
  414. package/dist/registry/block-module.js +19 -0
  415. package/dist/registry/block-module.js.map +1 -0
  416. package/dist/registry/catalog-search.d.ts +32 -0
  417. package/dist/registry/catalog-search.d.ts.map +1 -0
  418. package/dist/registry/catalog-search.js +122 -0
  419. package/dist/registry/catalog-search.js.map +1 -0
  420. package/dist/registry/define-helpers.d.ts +89 -0
  421. package/dist/registry/define-helpers.d.ts.map +1 -0
  422. package/dist/registry/define-helpers.js +87 -0
  423. package/dist/registry/define-helpers.js.map +1 -0
  424. package/dist/registry/describe-many.d.ts +58 -0
  425. package/dist/registry/describe-many.d.ts.map +1 -0
  426. package/dist/registry/describe-many.js +156 -0
  427. package/dist/registry/describe-many.js.map +1 -0
  428. package/dist/registry/prop-schema.d.ts +32 -1
  429. package/dist/registry/prop-schema.d.ts.map +1 -1
  430. package/dist/registry/prop-schema.js +108 -2
  431. package/dist/registry/prop-schema.js.map +1 -1
  432. package/dist/registry/registry-builder.d.ts +17 -0
  433. package/dist/registry/registry-builder.d.ts.map +1 -0
  434. package/dist/registry/registry-builder.js +158 -0
  435. package/dist/registry/registry-builder.js.map +1 -0
  436. package/dist/registry/registry.d.ts +32 -5
  437. package/dist/registry/registry.d.ts.map +1 -1
  438. package/dist/registry/registry.js +67 -14
  439. package/dist/registry/registry.js.map +1 -1
  440. package/dist/registry/roster.d.ts +34 -5
  441. package/dist/registry/roster.d.ts.map +1 -1
  442. package/dist/registry/roster.js +360 -184
  443. package/dist/registry/roster.js.map +1 -1
  444. package/dist/render/block-helpers.d.ts +45 -0
  445. package/dist/render/block-helpers.d.ts.map +1 -0
  446. package/dist/render/block-helpers.js +83 -0
  447. package/dist/render/block-helpers.js.map +1 -0
  448. package/dist/render/blocks.d.ts +10 -35
  449. package/dist/render/blocks.d.ts.map +1 -1
  450. package/dist/render/blocks.js +144 -263
  451. package/dist/render/blocks.js.map +1 -1
  452. package/dist/render/chart-figure-encoded.d.ts +11 -0
  453. package/dist/render/chart-figure-encoded.d.ts.map +1 -0
  454. package/dist/render/chart-figure-encoded.js +81 -0
  455. package/dist/render/chart-figure-encoded.js.map +1 -0
  456. package/dist/render/chart-kinds-cartesian.d.ts +14 -0
  457. package/dist/render/chart-kinds-cartesian.d.ts.map +1 -0
  458. package/dist/render/chart-kinds-cartesian.js +122 -0
  459. package/dist/render/chart-kinds-cartesian.js.map +1 -0
  460. package/dist/render/chart-kinds-composite.d.ts +16 -0
  461. package/dist/render/chart-kinds-composite.d.ts.map +1 -0
  462. package/dist/render/chart-kinds-composite.js +144 -0
  463. package/dist/render/chart-kinds-composite.js.map +1 -0
  464. package/dist/render/chart-kinds-gauge-treemap.d.ts +8 -0
  465. package/dist/render/chart-kinds-gauge-treemap.d.ts.map +1 -0
  466. package/dist/render/chart-kinds-gauge-treemap.js +101 -0
  467. package/dist/render/chart-kinds-gauge-treemap.js.map +1 -0
  468. package/dist/render/chart-kinds-histogram-waterfall.d.ts +17 -0
  469. package/dist/render/chart-kinds-histogram-waterfall.d.ts.map +1 -0
  470. package/dist/render/chart-kinds-histogram-waterfall.js +172 -0
  471. package/dist/render/chart-kinds-histogram-waterfall.js.map +1 -0
  472. package/dist/render/chart-overlays.d.ts +18 -0
  473. package/dist/render/chart-overlays.d.ts.map +1 -0
  474. package/dist/render/chart-overlays.js +58 -0
  475. package/dist/render/chart-overlays.js.map +1 -0
  476. package/dist/render/chart-scales.d.ts +83 -0
  477. package/dist/render/chart-scales.d.ts.map +1 -0
  478. package/dist/render/chart-scales.js +166 -0
  479. package/dist/render/chart-scales.js.map +1 -0
  480. package/dist/render/chart-svg-parts.d.ts +50 -0
  481. package/dist/render/chart-svg-parts.d.ts.map +1 -0
  482. package/dist/render/chart-svg-parts.js +125 -0
  483. package/dist/render/chart-svg-parts.js.map +1 -0
  484. package/dist/render/chart-text.d.ts +18 -0
  485. package/dist/render/chart-text.d.ts.map +1 -0
  486. package/dist/render/chart-text.js +69 -0
  487. package/dist/render/chart-text.js.map +1 -0
  488. package/dist/render/chart-treemap-layout.d.ts +17 -0
  489. package/dist/render/chart-treemap-layout.d.ts.map +1 -0
  490. package/dist/render/chart-treemap-layout.js +74 -0
  491. package/dist/render/chart-treemap-layout.js.map +1 -0
  492. package/dist/render/chart-types.d.ts +107 -0
  493. package/dist/render/chart-types.d.ts.map +1 -0
  494. package/dist/render/chart-types.js +11 -0
  495. package/dist/render/chart-types.js.map +1 -0
  496. package/dist/render/charts.d.ts +33 -11
  497. package/dist/render/charts.d.ts.map +1 -1
  498. package/dist/render/charts.js +145 -109
  499. package/dist/render/charts.js.map +1 -1
  500. package/dist/render/derived-variables.d.ts +37 -0
  501. package/dist/render/derived-variables.d.ts.map +1 -0
  502. package/dist/render/derived-variables.js +40 -0
  503. package/dist/render/derived-variables.js.map +1 -0
  504. package/dist/render/diagram-fallback.d.ts +25 -0
  505. package/dist/render/diagram-fallback.d.ts.map +1 -0
  506. package/dist/render/diagram-fallback.js +86 -0
  507. package/dist/render/diagram-fallback.js.map +1 -0
  508. package/dist/render/document.d.ts +15 -0
  509. package/dist/render/document.d.ts.map +1 -1
  510. package/dist/render/document.js +53 -8
  511. package/dist/render/document.js.map +1 -1
  512. package/dist/render/effects-styles.d.ts +14 -0
  513. package/dist/render/effects-styles.d.ts.map +1 -0
  514. package/dist/render/effects-styles.js +39 -0
  515. package/dist/render/effects-styles.js.map +1 -0
  516. package/dist/render/embedded-fonts.generated.d.ts +22 -0
  517. package/dist/render/embedded-fonts.generated.d.ts.map +1 -0
  518. package/dist/render/embedded-fonts.generated.js +59 -0
  519. package/dist/render/embedded-fonts.generated.js.map +1 -0
  520. package/dist/render/escape.d.ts +10 -0
  521. package/dist/render/escape.d.ts.map +1 -1
  522. package/dist/render/escape.js +28 -0
  523. package/dist/render/escape.js.map +1 -1
  524. package/dist/render/feature-styles.d.ts +14 -0
  525. package/dist/render/feature-styles.d.ts.map +1 -0
  526. package/dist/render/feature-styles.js +123 -0
  527. package/dist/render/feature-styles.js.map +1 -0
  528. package/dist/render/font-faces.d.ts +22 -0
  529. package/dist/render/font-faces.d.ts.map +1 -0
  530. package/dist/render/font-faces.js +60 -0
  531. package/dist/render/font-faces.js.map +1 -0
  532. package/dist/render/outline.d.ts +21 -0
  533. package/dist/render/outline.d.ts.map +1 -0
  534. package/dist/render/outline.js +47 -0
  535. package/dist/render/outline.js.map +1 -0
  536. package/dist/render/recipe-styles.d.ts +26 -0
  537. package/dist/render/recipe-styles.d.ts.map +1 -0
  538. package/dist/render/recipe-styles.js +218 -0
  539. package/dist/render/recipe-styles.js.map +1 -0
  540. package/dist/render/render-context.d.ts +40 -0
  541. package/dist/render/render-context.d.ts.map +1 -0
  542. package/dist/render/render-context.js +16 -0
  543. package/dist/render/render-context.js.map +1 -0
  544. package/dist/render/render.d.ts +7 -0
  545. package/dist/render/render.d.ts.map +1 -1
  546. package/dist/render/render.js +108 -41
  547. package/dist/render/render.js.map +1 -1
  548. package/dist/render/runtime.d.ts +4 -1
  549. package/dist/render/runtime.d.ts.map +1 -1
  550. package/dist/render/runtime.js +275 -128
  551. package/dist/render/runtime.js.map +1 -1
  552. package/dist/render/showcase-blocks.d.ts +52 -0
  553. package/dist/render/showcase-blocks.d.ts.map +1 -0
  554. package/dist/render/showcase-blocks.js +329 -0
  555. package/dist/render/showcase-blocks.js.map +1 -0
  556. package/dist/render/showcase-styles.d.ts +15 -0
  557. package/dist/render/showcase-styles.d.ts.map +1 -0
  558. package/dist/render/showcase-styles.js +201 -0
  559. package/dist/render/showcase-styles.js.map +1 -0
  560. package/dist/render/signature-styles.d.ts +18 -0
  561. package/dist/render/signature-styles.d.ts.map +1 -0
  562. package/dist/render/signature-styles.js +41 -0
  563. package/dist/render/signature-styles.js.map +1 -0
  564. package/dist/render/style-units.d.ts +17 -0
  565. package/dist/render/style-units.d.ts.map +1 -0
  566. package/dist/render/style-units.js +24 -0
  567. package/dist/render/style-units.js.map +1 -0
  568. package/dist/render/styles.d.ts +18 -9
  569. package/dist/render/styles.d.ts.map +1 -1
  570. package/dist/render/styles.js +228 -129
  571. package/dist/render/styles.js.map +1 -1
  572. package/dist/render/surface-styles.d.ts +24 -0
  573. package/dist/render/surface-styles.d.ts.map +1 -0
  574. package/dist/render/surface-styles.js +41 -0
  575. package/dist/render/surface-styles.js.map +1 -0
  576. package/dist/render/tone.d.ts +14 -0
  577. package/dist/render/tone.d.ts.map +1 -0
  578. package/dist/render/tone.js +40 -0
  579. package/dist/render/tone.js.map +1 -0
  580. package/dist/render/verify.d.ts +3 -0
  581. package/dist/render/verify.d.ts.map +1 -1
  582. package/dist/render/verify.js +45 -2
  583. package/dist/render/verify.js.map +1 -1
  584. package/dist/spec/asset-references.d.ts +35 -0
  585. package/dist/spec/asset-references.d.ts.map +1 -0
  586. package/dist/spec/asset-references.js +93 -0
  587. package/dist/spec/asset-references.js.map +1 -0
  588. package/dist/spec/bounds.d.ts +6 -0
  589. package/dist/spec/bounds.d.ts.map +1 -1
  590. package/dist/spec/bounds.js +7 -0
  591. package/dist/spec/bounds.js.map +1 -1
  592. package/dist/spec/conditions.d.ts +43 -0
  593. package/dist/spec/conditions.d.ts.map +1 -0
  594. package/dist/spec/conditions.js +179 -0
  595. package/dist/spec/conditions.js.map +1 -0
  596. package/dist/spec/network-policy.d.ts +33 -0
  597. package/dist/spec/network-policy.d.ts.map +1 -0
  598. package/dist/spec/network-policy.js +57 -0
  599. package/dist/spec/network-policy.js.map +1 -0
  600. package/dist/spec/normalize.d.ts +7 -2
  601. package/dist/spec/normalize.d.ts.map +1 -1
  602. package/dist/spec/normalize.js +219 -41
  603. package/dist/spec/normalize.js.map +1 -1
  604. package/dist/theme/dialect-presets.d.ts +12 -0
  605. package/dist/theme/dialect-presets.d.ts.map +1 -0
  606. package/dist/theme/dialect-presets.js +214 -0
  607. package/dist/theme/dialect-presets.js.map +1 -0
  608. package/dist/theme/load-theme.d.ts +11 -3
  609. package/dist/theme/load-theme.d.ts.map +1 -1
  610. package/dist/theme/load-theme.js +71 -12
  611. package/dist/theme/load-theme.js.map +1 -1
  612. package/dist/theme/preset-builder.d.ts +36 -0
  613. package/dist/theme/preset-builder.d.ts.map +1 -0
  614. package/dist/theme/preset-builder.js +51 -0
  615. package/dist/theme/preset-builder.js.map +1 -0
  616. package/dist/theme/presets.d.ts +8 -10
  617. package/dist/theme/presets.d.ts.map +1 -1
  618. package/dist/theme/presets.js +40 -56
  619. package/dist/theme/presets.js.map +1 -1
  620. package/dist/theme/recipes.d.ts +38 -0
  621. package/dist/theme/recipes.d.ts.map +1 -0
  622. package/dist/theme/recipes.js +96 -0
  623. package/dist/theme/recipes.js.map +1 -0
  624. package/dist/theme/theme-catalog.d.ts.map +1 -1
  625. package/dist/theme/theme-catalog.js +16 -0
  626. package/dist/theme/theme-catalog.js.map +1 -1
  627. package/dist/theme/tokens.d.ts.map +1 -1
  628. package/dist/theme/tokens.js +4 -4
  629. package/dist/theme/tokens.js.map +1 -1
  630. package/dist/version.d.ts +1 -1
  631. package/dist/version.d.ts.map +1 -1
  632. package/dist/version.js +1 -1
  633. package/dist/version.js.map +1 -1
  634. package/llms.txt +29 -0
  635. package/package.json +13 -3
package/CHANGELOG.md CHANGED
@@ -7,7 +7,215 @@ this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
7
7
  Release mechanics and the compatibility contract live in
8
8
  [docs/release-policy.md](./docs/release-policy.md).
9
9
 
10
- ## [Unreleased]
10
+ ## [0.3.0] - 2026-10-06
11
+
12
+ The Page Spec stays `version: 1`, and every spec that was valid in 0.2.0 stays
13
+ valid. These changes alter existing behaviour or output on purpose:
14
+
15
+ - `--theme` (and the `theme` render option) now replaces the spec's
16
+ `theme.recipes` as well as its tokens. Before, spec recipes applied
17
+ regardless.
18
+ - Every `gallery` thumbnail opens a full-size lightbox. There is no author
19
+ flag, so every page with a gallery emits new markup, CSS and runtime.
20
+ - Tabs no longer fire `select` for the initial tab when the page loads, so page
21
+ state keeps its declared initial values.
22
+ - A remote video `poster` that the network policy blocks is a `validate` error
23
+ (`POLICY_VIOLATION` at the `poster` path), not a compile failure at `$`.
24
+ - Pages with tabs or a carousel change markup and CSS so every panel and slide
25
+ reads without scripts and in print.
26
+ - `catalog` text is grouped by category, and `catalog --json` prints one block
27
+ per line with new `category` and `tags` fields.
28
+ - The Claude Code and Codex plugin manifests link to https://render.agentkit.best, and the Codex plugin shows an icon, a logo and the brand colour in the plugin directory.
29
+ - The benchmarks are measured against AgentKit `9e322f928`. The legacy baseline no longer counts the slide guide for document tasks (AgentKit loads it for `--slides` only), so its per-task mean is ~25.0k tokens, not ~33.7k. `render-benchmark.mjs` measures the `ak-render` skill route per task: the AgentKit shared HTML contract, the skill, `catalog`, and `describe --json` for each block type the task's fixture compiles to. It fails when the AgentKit checkout is missing. Presentation context now drops 64–68% (previously reported as 87–88%). The typical-task estimate is 54% with full contracts and 66% with `describe --compact`, which counts the shared contract too (previously 65% and 75%). `agent-token-cost.mjs --reuse-legacy` reruns that estimate from recorded corpus measurements. The README and landing page use the new figures.
30
+ - The landing page shows what the compiler saves an agent (measured and estimated token figures, kept apart), each component crop beside the fixture YAML that produced it, and a gallery of every demo page. The README gains a token cost section.
31
+
32
+ ### Added
33
+
34
+ - Rich composition: a tab panel, an accordion section, a carousel slide and a bento tile hold child blocks in `items[i].blocks` (up to 12, or 6 in a bento tile). Any block may nest except `page`, `section` and `hero`, and tabs may nest in tabs. An item's `text`, and a bento tile's `title`, are optional when the item has blocks; an item with neither is an error at its path.
35
+ - Nested slots with `accepts` and `parents` rules. Diagnostics carry the nested JSON path, and nested blocks count toward the block limit.
36
+ - `grid-item` places blocks on a 12-track grid with `span`, `tabletSpan`, `mobileSpan`, `rowSpan`, `start` and `align`. `grid.columns` takes 1–12 or `auto` (with `minItemWidth`), grids take `gap` and `align`, and `stack` takes `align`.
37
+ - Semantic page layouts: `sidebar-layout` (a `sidebar` beside the main `blocks`, on either `side`), `main-aside` (an `aside` that stays in view on wide screens) and `rail-layout` (a compact `rail`, a labelled `<nav>` when it holds only links or toolbars).
38
+ - Datasets: top-level `datasets`, and `dataRef`, inline `data` and a bounded `transform` (filter, groupBy, sort, select, limit) on blocks that take data. Values format through one locale-free formatter (`number`, `integer`, `compact`, `percent`, `currency`, `duration`, `bytes`, `date`); `percent` takes `87` for "87%". See [docs/data-and-state.md](./docs/data-and-state.md).
39
+ - `visibleWhen` shows a block only while a state value matches (`equals`, `notEquals`, `in`, `notIn`, `truthy`, `falsy`). The compiler emits the initial view, so the page reads correctly without scripts and in print.
40
+ - Native input controls `select`, `radio-group`, `checkbox`, `switch`, `text-input`, `number-input` and `date-input`. Each has a visible label, writes one value to `state.<key>` through `bind`, and fires `change` with its value.
41
+ - `filter-bar` filters a `data-table`, `kanban` or `log-viewer` with 1–8 controls, each naming a row `field` and a `match`. It adds an announced result count and a Reset button; `select` and `radio-group` can list the target's values with `optionsFrom`. A `data-table` that a filter-bar targets renders no search box, row count or "no match" note of its own, so two filters never fight over the same rows; put free-text search in the bar as a `search` child.
42
+ - `data-table`: a typed, sortable table bound to a dataset. Column types `text`, `number`, `percent` (alias `percentage`), `currency`, `date`, `badge`, `link`, `progress` and `sparkline`; search past 10 rows (unless a filter-bar targets the table), a sticky header past 12, labelled cards on phones, and the full table in authored order without scripts or in print.
43
+ - Chart kinds `scatter`, `histogram`, `stacked-bar`, `stacked-bar-100`, `heatmap`, `waterfall`, `funnel`, `gauge` and `treemap`. A chart can bind rows and read them through the `x`, `y`, `series: { field }` and `value` encodings, and takes `markers`, `annotations`, `sort` and a gauge `target`. A bound chart's fallback table comes from the bound rows. Charts that use `labels` and `series` render the same markup as before.
44
+ - Engineering widgets: `kanban`, `roadmap`, `test-results`, `log-viewer`, `api-endpoint` and `schema-viewer`.
45
+ - Evidence widgets: `benchmark-comparison` (computed delta, change and verdict; `currency` is set once for the whole block, not per metric), `metric-breakdown`, `annotated-image` and `references` (stable `#ref-<id>` anchors).
46
+ - Product widgets: `pricing`, `feature-matrix`, `testimonial` (two or more quotes form a grid), `logo-cloud`, `people` and `calendar` (weeks start on Monday; `weekStart: sunday` changes that).
47
+ - Theme recipes restyle components through closed enums for cards, sections, tables, charts, hero, metrics, media and callouts. A preset, a preset file or the spec's `theme.recipes` selects them. See [docs/themes.md](./docs/themes.md#recipes).
48
+ - Four built-in presets: `data-console`, `executive-report`, `product-studio` and `research-notebook`. They reuse the bundled faces. Every built-in preset is tested for WCAG 2.2 contrast in both schemes.
49
+ - An inline spec theme accepts `theme.dark`, dark-scheme token overrides.
50
+ - Catalog discovery: every block has a category and tags. `ak-render catalog --category <c>` lists one category, `ak-render search-catalog <terms...>` ranks block types by intent words, and `ak-render describe <type...> --compact` returns up to 12 contracts with one line per prop; a shape repeated within a contract reads `like <field>` and a repeated long enum `enum as <field>`. Row-filtering words rank `filter-bar` first. MCP gains `search-catalog`, `catalog{category}` and `describe{types, compact}`, on the stdio and the remote server; the remote `search-catalog` needs no token. The library exports `searchCatalog` and `describeMany`.
51
+ - Page recipes: `ak-render recipes [--json]` lists ten starter specs (`architecture-review`, `benchmark-report`, `case-study`, `dashboard`, `decision-memo`, `implementation-plan`, `incident-report`, `product-showcase`, `release-recap`, `research-report`), and `ak-render recipe <name>` prints one as YAML, or the full record with `--json`. An unknown name exits 1 and lists the allowed names; a missing name exits 2. Each recipe validates with no errors or warnings, compiles deterministically, stays within 3,000 bytes of YAML and loads nothing remote. MCP serves them as `recipes` and `recipe{name}` on the stdio and the remote server, and the library as `recipes()`, `recipe(name)` and the `PageRecipe` and `PageRecipeSummary` types; an unknown name throws `SPEC_VALIDATION_ERROR` at path `name` with `details.allowed`.
52
+ - `pnpm recipes:generate` embeds the recipe YAML in `src/recipes/recipes.generated.ts`, and `pnpm recipes:check`, part of `pnpm verify`, fails when that module is stale.
53
+ - The library exports `BLOCK_CATEGORIES`, `THEME_RECIPE_SPECS`, `VALUE_FORMATS` and the `MaterializedData`, `DataRow` and `DataScalar` types.
54
+ - Remote MCP over Streamable HTTP at `https://render.agentkit.best/mcp`, served by the cloud Worker. It lists the same tools as `ak-render mcp`: `catalog`, `search-catalog`, `describe`, `recipes`, `recipe`, `validate`, `render` and `themes`. A remote `render` takes no `out`: it compiles through the same path as `POST /v1/render` (byte-identical HTML), stores the page and returns the summary plus `artifactUrl` and `expiresAt`, never the HTML. The artifact lives one hour, or becomes an expiring share with `share: true` (needs the share scope). `catalog`, `search-catalog`, `describe`, `recipes`, `recipe` and `themes` answer without a token; `validate` and `render` need an AgentKit bearer and count against the same per-subject rate limits as REST.
55
+ - The MCP server is split into transport-independent modules under `src/mcp/`: protocol vocabulary, one set of tool contracts, JSON-RPC routing, the stdio transport, and a Fetch-API Streamable HTTP transport the Worker imports. `ak-render mcp` answers byte for byte as before.
56
+ - `GET /v1/artifact/:id` serves the short-lived artifact a remote MCP render stored.
57
+ - `scripts/cloud-smoke.mjs` smoke-tests a deployed renderer (MCP and REST, share lifecycle, exports) with `BASE_URL` and an optional `TOKEN`; the manual cloud deploy workflow runs it after deploying.
58
+ - `benchmarks/agent-token-cost.mjs` estimates the tokens of a page task end to end: guidance read, output written and what returns into context, against a corpus of hand-written HTML passed with `--legacy-html`. Results are in `docs/artifacts/agent-token-cost.md`, with the corpus recorded by anonymous label. `--legacy-from <artifact.json>` refreshes the artifact from the recorded legacy rows without the private corpus, and a second typical-task row measures the compact workflow (`describe <types...> --compact`). Block types are read from the compiler IR.
59
+ - `pnpm bench:spec` (`benchmarks/spec-compression.mjs`) records, per composition fixture, the spec bytes, the bytes with every `dataRef` inlined, the HTML bytes, and the catalog and compact-describe bytes an agent reads, in `docs/artifacts/spec-compression.{json,md}`. The output is deterministic.
60
+ - Six composition fixtures: `complex-dashboard`, `benchmark-report`, `research-report`, `product-case-study`, `interactive-data-explorer` and `incident-report`. Each validates with no warnings and compiles to identical bytes three times. `fixtures/rejected/validation/` holds well-formed but wrong specs that must fail validation at a located path, optionally pinned by a first line `# expect: CODE $.path`.
61
+ - `tests/browser/composition-matrix.spec.ts` checks every fixture page for horizontal overflow at 320, 375, 768 and 1440 in light and dark, running animation under reduced motion, script-off readability, print, keyboard focus, network requests and critical axe violations. `@axe-core/playwright` is a new devDependency.
62
+ - `scripts/capture-demo-media.mjs` captures five more page shots and four component crops (KPI, terminal, checklist, file tree), and `--only <names>` recaptures a subset without the walkthrough video.
63
+ - A pair of backticks in prose text renders as inline code, so `` `ak-render catalog` `` in a `text`, a step, a list item, a description or a caption reads as a command. The text is escaped before the span is wrapped, nothing else is parsed as markup, and an unpaired backtick stays literal. Titles, `code` blocks, `terminal` lines and the chart summary are unchanged, and `describe` and the JSON Schema say which props do this.
64
+
65
+ ### Changed
66
+
67
+ - `catalog` text is grouped by category under `## <category>` headers, one `type — summary` line per block, without the kind column. `catalog --json` and the MCP `catalog` add `category` and `tags` to each entry and print one block and one action per line; the parsed value is otherwise unchanged. A single-type `describe <type>` is byte-identical.
68
+ - The MCP `describe` input no longer requires `type`: pass `type` or `types`, plus optional `compact`. Every local tool description is at most 200 characters.
69
+ - URL props declare the network capability of the asset they load, so the CSP origins and the validation gate come from one schema walk at any depth.
70
+ - When a `oneOf` value fails, diagnostics come from the option the author meant, chosen by JSON shape and then by `type`.
71
+ - A tab's `select` event passes the tab id as its value, so `set-value` without its own `value` stores the selected tab.
72
+ - Chart `labels` is optional in the schema; a chart without bound data still requires it, with the same message and path.
73
+ - The cloud Worker is routed at `render.agentkit.best/mcp` and `render.agentkit.best/v1/*`, beside the site's Custom Domain on the same hostname.
74
+ - The Claude Code and Codex plugin manifests link to https://render.agentkit.best, and the Codex plugin shows an icon, a logo and the brand colour in the plugin directory.
75
+ - The landing page shows what the compiler saves an agent (measured and estimated token figures, kept apart), each component crop beside the fixture YAML that produced it, and a gallery of every demo page. The README gains a token cost section.
76
+
77
+ ### Fixed
78
+
79
+ - Tab panels and carousel slides are readable without scripts and in print: every panel ships visible with its title until the runtime marks the container ready.
80
+ - Accordion sections print open, nested blocks included.
81
+ - Accordion and carousel styles apply only to their own sections and slides, so a nested block keeps its own look.
82
+ - The runtime escapes embedded state, so a value such as `</script>` cannot close the script element.
83
+ - An event stops at the nearest block, so it no longer reaches an enclosing block's bindings.
84
+ - A `set-value` action without `value` takes the event's value, for example a slider's. With no event value it does nothing; before, it set `undefined`.
85
+ - The cloud Worker validates bearers against the canonical AgentKit endpoint, `GET https://agentkit.best/api/agentkit/entitlements`, instead of an unreachable host, so authenticated render, share and export can succeed. It fails closed on a rejected token (401), an inactive account (403), and an upstream error, redirect, timeout or malformed body (502). An active app or kit entitlement grants the `render` and `share` scopes, which stay separate checks.
86
+ - Screenshot and PDF export call the Browser Run binding's Quick Actions with the compiled HTML inline and caching off, and `wrangler.jsonc` attaches the `BROWSER` binding.
87
+ - Remote MCP bounds its anonymous surface: a JSON-RPC batch carries at most 16 members, never `initialize`, and is refused (400) under protocol revision 2025-06-18 or later, which removed batching. `catalog`, `search-catalog`, `describe`, `recipes`, `recipe` and `themes` stay anonymous but count per client IP (`anon-ip`, 120/min).
88
+ - A remote MCP request that presents a rejected bearer answers HTTP 401 with `WWW-Authenticate: Bearer`, whatever the method, instead of a tool error; REST 401s carry the same challenge. A request without a bearer is still served, and `validate`/`render` still answer a tool error with `UNAUTHENTICATED`.
89
+ - Cloud rate limits use the Workers Rate Limiting binding, one per route class, instead of KV counters that could fail on rapid writes; a limiter fault refuses the call with `RATE_LIMITED`. An MCP `render` with `share: true` counts against `share` only, as `POST /v1/share` does, and a call refused by authorization consumes nothing.
90
+ - The cloud Worker caches entitlements answers in memory under a SHA-256 digest of the bearer (60 s accepted, 10 s rejected), and limits uncached bearer checks per client IP (30/min) before contacting the entitlements endpoint.
91
+ - Remote MCP reports a storage or runtime fault as a generic `INTERNAL_ERROR` tool error, and the REST routes answer such a fault with a generic 500, so no internal message reaches a caller.
92
+ - Hosted shares and artifacts are served with `content-security-policy: sandbox …; frame-ancestors 'none'`: they run in an opaque origin and cannot be framed.
93
+ - The expiry sweep pages through every listed object with the cursor, reads expiry from listing metadata instead of downloading bodies, and deletes in batches; R2 lifecycle rules (`apps/cloud/r2-lifecycle.json`, applied on deploy) delete artifacts after 1 day and shares after the retention period plus a day.
94
+ - A remote video `poster` that the network policy blocks now fails `validate` with a `POLICY_VIOLATION` at the block's `poster` path, naming the reason. Before, validate passed and compile failed at `$` with "emitted a remote resource reference". A poster is gated by the `images` capability, an allowed remote poster's origin joins the CSP, and the renderer drops a blocked poster even for an IR that skipped validation.
95
+ - Diagram adapter `<style>` elements now receive the page style nonce, so styled adapter SVG renders as drawn instead of in default black. The policy stays nonce-only: inline `style` attributes are removed from adapter output with a warning. Adapter CSS is scoped with `@scope` to its own diagram canvas, so it cannot restyle the page, and it cannot load anything: escapes, character references, `url()` other than a fragment reference such as `url(#grad)`, `image-set()`, every at-rule except `@media`, `@keyframes` and `@supports`, and `@keyframes` that redefine the page's own reject the output to the structured fallback. Comments and `!important` are removed. Adapter markup that writes a `nonce` or any `data-ak-*` attribute, or an `href`, `xlink:href`, `src`, `srcset`, `poster`, `action`, `formaction`, `background`, `data`, `codebase` or `ping` that is not a same-document `#fragment`, or SVG animation whose `attributeName` is one of those, is rejected too, and so is markup that is not a self-contained fragment: a stray or missing end tag, a raw-text element such as `plaintext` or `textarea`, an element that merges into the page document such as `body` or `meta`, an HTML element inside SVG, or a comment. Output from the `ak:diagram` compiler passes these checks. Adapter animation stops under reduced motion, `motion-policy: none` and print. `docs/diagram-adapter.md` lists what adapter CSS may use.
96
+ - Checking adapter markup is linear in its size. An unterminated tag repeated to the 256 KB bound took minutes; it now takes milliseconds.
97
+ - A long unbroken token, such as a path or an env var list, no longer widens the page on a phone. Key-value values, list items, text and callouts break the token inside their own line, so the reported key-value page no longer scrolls sideways at 375px.
98
+ - A `diagram-panel` shows adapter SVG at its natural size. A wide diagram scrolls sideways inside its panel, a named region that scrolls from the keyboard, instead of shrinking its labels until they are unreadable. In print it is scaled to the page width.
99
+ - A `diagram-panel` whose adapter rendered no longer shows the structured description beside the drawing. The description stays in the document behind a closed "Text description" disclosure, which opens in print, with or without script.
100
+ - A long `terminal` session no longer leaves its last lines blank in a capture. Lines now stagger 80ms apart instead of 340ms, lines past the twelfth share its delay, and the whole session is drawn about 1.4s after it arrives.
101
+ - A wide `table` or adapter diagram now shows a soft shade on each edge that has more content beyond it, so a frame that scrolls sideways no longer looks clipped. A frame that fits shows none.
102
+ - A `data-table` row that a filter hides stays hidden at phone widths, where rows become cards.
103
+ - Blocks inside or after a `visibleWhen` view keep the normal block gap and the section-break gaps.
104
+ - A thinned category axis always labels the last category, so a series never reads as ending early.
105
+ - Chart ticks finer than 0.01 keep the decimals the step needs instead of all printing the same value, and only floating-point noise is removed before a value is formatted.
106
+ - A histogram over huge, close values (such as 1e16 and 1e16 + 4) keeps finite, increasing bin edges: when clean steps cannot separate the values it draws one bin.
107
+ - The page outline skips a section behind `visibleWhen`, so it never links to a hidden section.
108
+ - Dataset field names `__proto__`, `constructor` and `prototype` are refused at validation, and a `log-viewer` level named like an object property gets the neutral tone.
109
+ - `date-input` accepts ISO dates in the years 0001–0099.
110
+
111
+ ## [0.2.0] - 2026-10-05
112
+
113
+ Every emitted page changes in this release: new styles, embedded fonts, and a
114
+ CSP that allows `font-src data:` on pages that carry a face.
115
+
116
+ ### Changed
117
+
118
+ - Polished the emitted artifacts:
119
+ - Heading sizes now follow the `font-scale` token.
120
+ - Spacing is driven by density, with larger gaps at section breaks.
121
+ - The hero carries an accent eyebrow rule, and the theme toggle is a right-aligned pill.
122
+ - Callouts, badges and tables are tinted, buttons and tabs have hover and press states, and all transitions use the motion tokens.
123
+ - Mobile touch targets are 44px.
124
+ - Charts now have clean axis ticks with gridlines, rounded bars centered under their labels, a series palette derived from the theme accent, legends, a donut total, and SVG heights sized to their content (sparkline and progress).
125
+ - Elevation shadows are layered. A table title no longer prints twice; its caption is kept for screen readers only.
126
+ - Artifacts now emit `og:title`, `og:type`, `og:description` and `twitter:card` from the spec meta.
127
+ - The gallery index is now one card per artifact.
128
+ - Redesigned the component system in the emitted stylesheet:
129
+ - Top-level sections open on a hairline with a short accent tab, and nested block titles step down a size, so the heading hierarchy reads at a glance.
130
+ - The hero title is larger, and the page carries a faint accent wash at the top.
131
+ - Stats share one framed panel with hairline dividers. Steps use numbered rings on a connector, and timeline dots carry a halo.
132
+ - Callouts and alerts carry a tone glyph instead of a side stripe. Quotes use a hanging quote mark.
133
+ - Tabs are a segmented control, accordion items are separate panels with a plus/minus indicator, and the carousel slide is a framed stage with arrow controls.
134
+ - Tables gain a caption bar, row headers, and a minimum width on small screens so cells scroll instead of breaking word by word. Comparisons, key-value lists, code blocks, badges, key caps, progress bars, sliders, search inputs and dialogs were refined to match.
135
+ - In dark schemes, surfaces get a top-lit sheen, because the fixed elevation shadows are invisible on a dark page.
136
+ - Images on a page that allows `images` now add their origin to `img-src` for every image-bearing block. Before, only `image` and `gallery` did; only `video` and `audio` use the `media` capability.
137
+ - Feature stylesheets moved to `src/render/feature-styles.ts`; `styles.ts` re-exports them.
138
+ - **Embedded fonts (CSP change).** Every preset now leads its display stack with a bundled SIL OFL 1.1 variable face: Geist (blueprint), Fraunces (editorial), Bricolage Grotesque (paper-ink), Inter Tight (swiss-clean), JetBrains Mono (terminal-mono) and Plus Jakarta Sans (warm-signal).
139
+ - The face is inlined as a `data:` WOFF2, so nothing is fetched. The Latin subset is always emitted; the Vietnamese subset only when the page text needs it.
140
+ - Pages that carry a face emit `font-src data:` instead of `font-src 'none'`. Verification fails on any `@font-face` source that is not inlined, and on a CSP that does not match.
141
+ - Artifacts grow by roughly 30–60 kB per page. A custom font stack that names no bundled `AK ` family embeds nothing.
142
+ - The licences ship in `assets/fonts/<family>/OFL.txt` and in the npm package. Each `@font-face` carries a notice comment.
143
+ - Blueprint's light scheme is warmer and higher-contrast: a drafting-paper background (`#f4f2ed`), near-black text, and a cobalt accent (`#1d4fd7`).
144
+ - Bento tile images now sit as a panel bleeding off the tile edge over an accent-tinted backdrop. Showcase frame images drift with scroll (parallax) instead of settling.
145
+ - The browser frame styles moved to the base sheet, so the hero can use them.
146
+
147
+ ### Added
148
+
149
+ - `ak-render mcp` serves the compiler as an MCP server over stdio, with `catalog`, `describe`, `validate`, `render` and `themes` tools. `render` writes the HTML to the `out` path, which must end in `.html` or `.htm`, and returns only a summary. `themes` returns the presets plus any preset file that failed to load. The server accepts JSON-RPC batches and answers an unknown tool or a null id with a protocol error. No new runtime dependency.
150
+ - An `ak-render` agent skill (`skills/ak-render/SKILL.md`), installable with `npx skills add bestagentkits/ak-render`, plus Claude Code and Codex plugin marketplaces that bundle the skill and register the MCP server, pinned to the matching package version.
151
+ - Pass `-` as the spec path to compile or validate a spec from standard input. Diagnostics name the source `<stdin>`.
152
+ - `llms.txt` (shipped in the package) and `docs/agent-guide.md`: the agent loop, a minimal spec, and the MCP client config.
153
+ - `section` gains `surface: plain | inverse`. An inverse section sits on a night band: a dark panel where every colour token takes the theme's dark value, so nested blocks recolour without variants.
154
+ - A `cta` block: eyebrow, an oversized gradient title, text, and up to three link actions, on the night band. It is the new `cta` runtime feature.
155
+ - `hero` gains optional `src`, `alt`, `address` and `align: start | center`. With `src`, a framed product shot sits below the copy and straightens from a tilt as the page scrolls. `alt` is required when `src` is set.
156
+ - The theme toggle reveals the new scheme as a circle growing from the button, through the View Transitions API, when motion is allowed. Otherwise it switches instantly, as before.
157
+ - `scripts/capture-demo-media.mjs` records element-level crops at 2x (`crop-chart`, `crop-donut`, `crop-compare`, `crop-timeline`, `crop-diagram`). The showcase bento uses them.
158
+ - `pnpm fonts:generate` and `pnpm fonts:check` regenerate and check the embedded font module.
159
+ - A page outline ("On this page") with scroll-spy appears when a page has three or more titled top-level sections. It is the new `outline` runtime feature, and sections now carry an `id` of the form `ak-sec-<node id>`.
160
+ - A reading-progress rail.
161
+ - A colophon footer with a back-to-top link.
162
+ - Code blocks have line numbers, a language pill, and a Copy button with a copied state. The `code` block now declares the `copy` runtime feature.
163
+ - Charts:
164
+ - Area fills are gradients.
165
+ - Bars and points reveal their values on hover or focus.
166
+ - The cartesian viewBox is 800×300, and on narrow screens the chart scrolls sideways instead of shrinking its text.
167
+ - Tables:
168
+ - Numeric columns align right.
169
+ - Diff status, risk levels and review kinds render as toned badges.
170
+ - Diff line counts are signed and colored.
171
+ - External links in prose carry a ↗ marker.
172
+ - Diagram fallbacks render a simple chain as a flow of node cards joined by labelled arrows, vertical on phones. Other graphs show node cards plus an explicit connection list.
173
+ - A signature style layer (`src/render/signature-styles.ts`):
174
+ - a fluid display-size hero title and a staggered hero entrance;
175
+ - balanced headings;
176
+ - drawn link underlines;
177
+ - cards that end in a link become a single lifted target with an arrow CTA;
178
+ - larger stat figures and a subtle top light on primary buttons.
179
+ - Bar charts use per-series gradients.
180
+ - Eight showcase blocks:
181
+ - `bento`, a mosaic of tiles with sizes, images and display figures;
182
+ - `marquee`, an accessible looping ticker;
183
+ - `terminal`, a typed session with a copy control;
184
+ - `file-tree`, built from flat paths with status;
185
+ - `before-after`, an image slider driven by a native range input, which adds the `before-after` runtime feature;
186
+ - `kpi`, metrics with a delta, a good/bad verdict and a sparkline;
187
+ - `showcase`, copy beside a capture in browser chrome;
188
+ - `checklist`, with a done count and a progress meter.
189
+ Each has its own tree-shaken feature sheet.
190
+ - An effects layer (`src/render/effects-styles.ts`):
191
+ - a theme-tinted hero aurora;
192
+ - a word-by-word hero title reveal;
193
+ - a film-grain texture;
194
+ - a pointer spotlight on cards;
195
+ - count-up for numeric stats and KPIs;
196
+ - scroll-linked settling of framed images;
197
+ - a sweep on primary buttons.
198
+ All of it respects reduced motion and print. Count-up keeps the authored value in the DOM and draws the rolling figure on a hidden layer, so screen readers, copy and print always get the real number.
199
+ - Real demo media in `fixtures/assets`: screenshots and a 41s screen recording of the compiled gallery, captured by `scripts/capture-demo-media.mjs`.
200
+ - A `showcase` landing fixture. The media fixture plays the local recording, shows the real screenshots, and compares light and dark. The gallery index opens with a marquee and a showcase of the landing page.
201
+
202
+ ### Fixed
203
+
204
+ - A non-colour token set under a theme's `tokens` (a font stack, spacing, or motion value) now applies to the dark scheme too. Before, dark mode fell back to the parent preset's value.
205
+ - `motion-policy: none` now stops every animation, not only the token-driven durations: the aurora, marquee, caret, word reveal, scroll-linked reveals, count-up, the primary-button sweep and the theme-toggle transition. The zeroed duration now also wins over the dark scheme, which used to restore it under reduced motion. The reading-progress rail still follows the scroll position, since it moves only when the reader scrolls. The page renders as it does under reduced motion, and the root carries `data-motion="none"`.
206
+ - `loadTheme` reports a non-object `tokens` or `dark` value as a `POLICY_VIOLATION` render error instead of throwing a `TypeError`.
207
+ - File trees order names by code point, so the order no longer depends on the runtime's collation.
208
+ - A blocked remote image keeps its alt text, and every blocked image, video, audio or embed names the real reason: the network is denied, the capability is not allowed, or the host is not on the provider allowlist. Before, the note always said the network was denied.
209
+ - A `bento` tile with `src` now requires `alt`; an explicit `alt: ""` marks a decorative image.
210
+ - The terminal's caption is a direct child of its figure, and the figure is named by the title alone.
211
+ - Checklist, browser-frame (hero shot and showcase) and bento image styles moved out of the base stylesheet into feature sheets, so pages without those blocks no longer carry them. `checklist` and `frame` are new runtime features.
212
+ - The night band now uses the same tint, focus ring and sheen as dark mode; it had drifted to stronger values.
213
+ - Font verification checks every source of every `@font-face`, and rejects `local()`, instead of only the first `url()`.
214
+ - The theme toggle names the scheme it switches to from the first paint, and follows a system scheme change while the page is open. Before, it read "Dark" on a page the system had already put in dark mode.
215
+ - A `split`, `grid` or `comparison` column no longer grows past a phone screen when a child holds a long code line; the line scrolls inside its frame.
216
+ - `ak-render <command> --help` prints that command's usage instead of trying to read a file named `--help`; `ak-render page.yaml --help` prints the compile usage instead of compiling.
217
+ - `--out` creates missing folders, and a file that cannot be written exits `2` with a one-line reason instead of a stack trace and exit `1`, which agents read as "fix the spec".
218
+ - `img-src` and `media-src` include `'self'`, so a page's relative assets load when it is served over HTTP(S) instead of opened from disk. Remote URLs are still gated by the network policy.
11
219
 
12
220
  ## [0.1.1-next.1] - 2026-09-22
13
221