@bestagentkits/render 0.2.0 → 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 (596) hide show
  1. package/CHANGELOG.md +100 -1
  2. package/README.md +157 -32
  3. package/dist/blocks/chart/chart-check-kind-rules.d.ts +10 -0
  4. package/dist/blocks/chart/chart-check-kind-rules.d.ts.map +1 -0
  5. package/dist/blocks/chart/chart-check-kind-rules.js +151 -0
  6. package/dist/blocks/chart/chart-check-kind-rules.js.map +1 -0
  7. package/dist/blocks/chart/chart-check.d.ts +15 -0
  8. package/dist/blocks/chart/chart-check.d.ts.map +1 -0
  9. package/dist/blocks/chart/chart-check.js +196 -0
  10. package/dist/blocks/chart/chart-check.js.map +1 -0
  11. package/dist/blocks/chart/chart-encoding-schema.d.ts +7 -0
  12. package/dist/blocks/chart/chart-encoding-schema.d.ts.map +1 -0
  13. package/dist/blocks/chart/chart-encoding-schema.js +39 -0
  14. package/dist/blocks/chart/chart-encoding-schema.js.map +1 -0
  15. package/dist/blocks/chart/chart-encodings.d.ts +29 -0
  16. package/dist/blocks/chart/chart-encodings.d.ts.map +1 -0
  17. package/dist/blocks/chart/chart-encodings.js +59 -0
  18. package/dist/blocks/chart/chart-encodings.js.map +1 -0
  19. package/dist/blocks/chart/chart-kinds.d.ts +18 -0
  20. package/dist/blocks/chart/chart-kinds.d.ts.map +1 -0
  21. package/dist/blocks/chart/chart-kinds.js +60 -0
  22. package/dist/blocks/chart/chart-kinds.js.map +1 -0
  23. package/dist/blocks/chart/chart-model-rows.d.ts +23 -0
  24. package/dist/blocks/chart/chart-model-rows.d.ts.map +1 -0
  25. package/dist/blocks/chart/chart-model-rows.js +153 -0
  26. package/dist/blocks/chart/chart-model-rows.js.map +1 -0
  27. package/dist/blocks/chart/chart-model.d.ts +17 -0
  28. package/dist/blocks/chart/chart-model.d.ts.map +1 -0
  29. package/dist/blocks/chart/chart-model.js +131 -0
  30. package/dist/blocks/chart/chart-model.js.map +1 -0
  31. package/dist/blocks/chart/chart-styles.d.ts +3 -0
  32. package/dist/blocks/chart/chart-styles.d.ts.map +1 -0
  33. package/dist/blocks/chart/chart-styles.js +76 -0
  34. package/dist/blocks/chart/chart-styles.js.map +1 -0
  35. package/dist/blocks/chart/chart.d.ts +12 -0
  36. package/dist/blocks/chart/chart.d.ts.map +1 -0
  37. package/dist/blocks/chart/chart.js +73 -0
  38. package/dist/blocks/chart/chart.js.map +1 -0
  39. package/dist/blocks/chart/index.d.ts +4 -0
  40. package/dist/blocks/chart/index.d.ts.map +1 -0
  41. package/dist/blocks/chart/index.js +8 -0
  42. package/dist/blocks/chart/index.js.map +1 -0
  43. package/dist/blocks/composition/accordion.d.ts +4 -0
  44. package/dist/blocks/composition/accordion.d.ts.map +1 -0
  45. package/dist/blocks/composition/accordion.js +45 -0
  46. package/dist/blocks/composition/accordion.js.map +1 -0
  47. package/dist/blocks/composition/bento.d.ts +4 -0
  48. package/dist/blocks/composition/bento.d.ts.map +1 -0
  49. package/dist/blocks/composition/bento.js +91 -0
  50. package/dist/blocks/composition/bento.js.map +1 -0
  51. package/dist/blocks/composition/carousel.d.ts +4 -0
  52. package/dist/blocks/composition/carousel.d.ts.map +1 -0
  53. package/dist/blocks/composition/carousel.js +51 -0
  54. package/dist/blocks/composition/carousel.js.map +1 -0
  55. package/dist/blocks/composition/composition-runtime.d.ts +14 -0
  56. package/dist/blocks/composition/composition-runtime.d.ts.map +1 -0
  57. package/dist/blocks/composition/composition-runtime.js +136 -0
  58. package/dist/blocks/composition/composition-runtime.js.map +1 -0
  59. package/dist/blocks/composition/composition-styles.d.ts +10 -0
  60. package/dist/blocks/composition/composition-styles.d.ts.map +1 -0
  61. package/dist/blocks/composition/composition-styles.js +80 -0
  62. package/dist/blocks/composition/composition-styles.js.map +1 -0
  63. package/dist/blocks/composition/index.d.ts +4 -0
  64. package/dist/blocks/composition/index.d.ts.map +1 -0
  65. package/dist/blocks/composition/index.js +11 -0
  66. package/dist/blocks/composition/index.js.map +1 -0
  67. package/dist/blocks/composition/nestable-blocks.d.ts +37 -0
  68. package/dist/blocks/composition/nestable-blocks.d.ts.map +1 -0
  69. package/dist/blocks/composition/nestable-blocks.js +92 -0
  70. package/dist/blocks/composition/nestable-blocks.js.map +1 -0
  71. package/dist/blocks/composition/tabs.d.ts +4 -0
  72. package/dist/blocks/composition/tabs.d.ts.map +1 -0
  73. package/dist/blocks/composition/tabs.js +48 -0
  74. package/dist/blocks/composition/tabs.js.map +1 -0
  75. package/dist/blocks/controls/checkbox.d.ts +12 -0
  76. package/dist/blocks/controls/checkbox.d.ts.map +1 -0
  77. package/dist/blocks/controls/checkbox.js +43 -0
  78. package/dist/blocks/controls/checkbox.js.map +1 -0
  79. package/dist/blocks/controls/choice-options.d.ts +24 -0
  80. package/dist/blocks/controls/choice-options.d.ts.map +1 -0
  81. package/dist/blocks/controls/choice-options.js +117 -0
  82. package/dist/blocks/controls/choice-options.js.map +1 -0
  83. package/dist/blocks/controls/control-shared.d.ts +66 -0
  84. package/dist/blocks/controls/control-shared.d.ts.map +1 -0
  85. package/dist/blocks/controls/control-shared.js +241 -0
  86. package/dist/blocks/controls/control-shared.js.map +1 -0
  87. package/dist/blocks/controls/controls-runtime.d.ts +17 -0
  88. package/dist/blocks/controls/controls-runtime.d.ts.map +1 -0
  89. package/dist/blocks/controls/controls-runtime.js +180 -0
  90. package/dist/blocks/controls/controls-runtime.js.map +1 -0
  91. package/dist/blocks/controls/controls-styles.d.ts +14 -0
  92. package/dist/blocks/controls/controls-styles.d.ts.map +1 -0
  93. package/dist/blocks/controls/controls-styles.js +54 -0
  94. package/dist/blocks/controls/controls-styles.js.map +1 -0
  95. package/dist/blocks/controls/date-input.d.ts +6 -0
  96. package/dist/blocks/controls/date-input.d.ts.map +1 -0
  97. package/dist/blocks/controls/date-input.js +58 -0
  98. package/dist/blocks/controls/date-input.js.map +1 -0
  99. package/dist/blocks/controls/field-input.d.ts +10 -0
  100. package/dist/blocks/controls/field-input.d.ts.map +1 -0
  101. package/dist/blocks/controls/field-input.js +20 -0
  102. package/dist/blocks/controls/field-input.js.map +1 -0
  103. package/dist/blocks/controls/filter-bar.d.ts +11 -0
  104. package/dist/blocks/controls/filter-bar.d.ts.map +1 -0
  105. package/dist/blocks/controls/filter-bar.js +115 -0
  106. package/dist/blocks/controls/filter-bar.js.map +1 -0
  107. package/dist/blocks/controls/index.d.ts +4 -0
  108. package/dist/blocks/controls/index.d.ts.map +1 -0
  109. package/dist/blocks/controls/index.js +41 -0
  110. package/dist/blocks/controls/index.js.map +1 -0
  111. package/dist/blocks/controls/number-input.d.ts +4 -0
  112. package/dist/blocks/controls/number-input.d.ts.map +1 -0
  113. package/dist/blocks/controls/number-input.js +62 -0
  114. package/dist/blocks/controls/number-input.js.map +1 -0
  115. package/dist/blocks/controls/radio-group.d.ts +4 -0
  116. package/dist/blocks/controls/radio-group.d.ts.map +1 -0
  117. package/dist/blocks/controls/radio-group.js +56 -0
  118. package/dist/blocks/controls/radio-group.js.map +1 -0
  119. package/dist/blocks/controls/select.d.ts +4 -0
  120. package/dist/blocks/controls/select.d.ts.map +1 -0
  121. package/dist/blocks/controls/select.js +49 -0
  122. package/dist/blocks/controls/select.js.map +1 -0
  123. package/dist/blocks/controls/switch.d.ts +4 -0
  124. package/dist/blocks/controls/switch.d.ts.map +1 -0
  125. package/dist/blocks/controls/switch.js +22 -0
  126. package/dist/blocks/controls/switch.js.map +1 -0
  127. package/dist/blocks/controls/text-input.d.ts +4 -0
  128. package/dist/blocks/controls/text-input.d.ts.map +1 -0
  129. package/dist/blocks/controls/text-input.js +42 -0
  130. package/dist/blocks/controls/text-input.js.map +1 -0
  131. package/dist/blocks/data-table/data-table-cells.d.ts +26 -0
  132. package/dist/blocks/data-table/data-table-cells.d.ts.map +1 -0
  133. package/dist/blocks/data-table/data-table-cells.js +154 -0
  134. package/dist/blocks/data-table/data-table-cells.js.map +1 -0
  135. package/dist/blocks/data-table/data-table-check.d.ts +10 -0
  136. package/dist/blocks/data-table/data-table-check.d.ts.map +1 -0
  137. package/dist/blocks/data-table/data-table-check.js +99 -0
  138. package/dist/blocks/data-table/data-table-check.js.map +1 -0
  139. package/dist/blocks/data-table/data-table-columns.d.ts +41 -0
  140. package/dist/blocks/data-table/data-table-columns.d.ts.map +1 -0
  141. package/dist/blocks/data-table/data-table-columns.js +155 -0
  142. package/dist/blocks/data-table/data-table-columns.js.map +1 -0
  143. package/dist/blocks/data-table/data-table-runtime.d.ts +15 -0
  144. package/dist/blocks/data-table/data-table-runtime.d.ts.map +1 -0
  145. package/dist/blocks/data-table/data-table-runtime.js +106 -0
  146. package/dist/blocks/data-table/data-table-runtime.js.map +1 -0
  147. package/dist/blocks/data-table/data-table-styles.d.ts +11 -0
  148. package/dist/blocks/data-table/data-table-styles.d.ts.map +1 -0
  149. package/dist/blocks/data-table/data-table-styles.js +74 -0
  150. package/dist/blocks/data-table/data-table-styles.js.map +1 -0
  151. package/dist/blocks/data-table/data-table.d.ts +17 -0
  152. package/dist/blocks/data-table/data-table.d.ts.map +1 -0
  153. package/dist/blocks/data-table/data-table.js +159 -0
  154. package/dist/blocks/data-table/data-table.js.map +1 -0
  155. package/dist/blocks/data-table/index.d.ts +4 -0
  156. package/dist/blocks/data-table/index.d.ts.map +1 -0
  157. package/dist/blocks/data-table/index.js +18 -0
  158. package/dist/blocks/data-table/index.js.map +1 -0
  159. package/dist/blocks/engineering/api-endpoint.d.ts +12 -0
  160. package/dist/blocks/engineering/api-endpoint.d.ts.map +1 -0
  161. package/dist/blocks/engineering/api-endpoint.js +174 -0
  162. package/dist/blocks/engineering/api-endpoint.js.map +1 -0
  163. package/dist/blocks/engineering/engineering-helpers.d.ts +49 -0
  164. package/dist/blocks/engineering/engineering-helpers.d.ts.map +1 -0
  165. package/dist/blocks/engineering/engineering-helpers.js +156 -0
  166. package/dist/blocks/engineering/engineering-helpers.js.map +1 -0
  167. package/dist/blocks/engineering/engineering-styles.d.ts +12 -0
  168. package/dist/blocks/engineering/engineering-styles.d.ts.map +1 -0
  169. package/dist/blocks/engineering/engineering-styles.js +174 -0
  170. package/dist/blocks/engineering/engineering-styles.js.map +1 -0
  171. package/dist/blocks/engineering/index.d.ts +4 -0
  172. package/dist/blocks/engineering/index.d.ts.map +1 -0
  173. package/dist/blocks/engineering/index.js +30 -0
  174. package/dist/blocks/engineering/index.js.map +1 -0
  175. package/dist/blocks/engineering/kanban.d.ts +11 -0
  176. package/dist/blocks/engineering/kanban.d.ts.map +1 -0
  177. package/dist/blocks/engineering/kanban.js +162 -0
  178. package/dist/blocks/engineering/kanban.js.map +1 -0
  179. package/dist/blocks/engineering/log-viewer.d.ts +14 -0
  180. package/dist/blocks/engineering/log-viewer.d.ts.map +1 -0
  181. package/dist/blocks/engineering/log-viewer.js +158 -0
  182. package/dist/blocks/engineering/log-viewer.js.map +1 -0
  183. package/dist/blocks/engineering/roadmap.d.ts +13 -0
  184. package/dist/blocks/engineering/roadmap.d.ts.map +1 -0
  185. package/dist/blocks/engineering/roadmap.js +197 -0
  186. package/dist/blocks/engineering/roadmap.js.map +1 -0
  187. package/dist/blocks/engineering/schema-viewer.d.ts +25 -0
  188. package/dist/blocks/engineering/schema-viewer.d.ts.map +1 -0
  189. package/dist/blocks/engineering/schema-viewer.js +124 -0
  190. package/dist/blocks/engineering/schema-viewer.js.map +1 -0
  191. package/dist/blocks/engineering/test-results.d.ts +12 -0
  192. package/dist/blocks/engineering/test-results.d.ts.map +1 -0
  193. package/dist/blocks/engineering/test-results.js +180 -0
  194. package/dist/blocks/engineering/test-results.js.map +1 -0
  195. package/dist/blocks/evidence/annotated-image.d.ts +15 -0
  196. package/dist/blocks/evidence/annotated-image.d.ts.map +1 -0
  197. package/dist/blocks/evidence/annotated-image.js +99 -0
  198. package/dist/blocks/evidence/annotated-image.js.map +1 -0
  199. package/dist/blocks/evidence/benchmark-comparison.d.ts +11 -0
  200. package/dist/blocks/evidence/benchmark-comparison.d.ts.map +1 -0
  201. package/dist/blocks/evidence/benchmark-comparison.js +262 -0
  202. package/dist/blocks/evidence/benchmark-comparison.js.map +1 -0
  203. package/dist/blocks/evidence/benchmark-verdict.d.ts +26 -0
  204. package/dist/blocks/evidence/benchmark-verdict.d.ts.map +1 -0
  205. package/dist/blocks/evidence/benchmark-verdict.js +31 -0
  206. package/dist/blocks/evidence/benchmark-verdict.js.map +1 -0
  207. package/dist/blocks/evidence/evidence-helpers.d.ts +39 -0
  208. package/dist/blocks/evidence/evidence-helpers.d.ts.map +1 -0
  209. package/dist/blocks/evidence/evidence-helpers.js +87 -0
  210. package/dist/blocks/evidence/evidence-helpers.js.map +1 -0
  211. package/dist/blocks/evidence/evidence-styles.d.ts +12 -0
  212. package/dist/blocks/evidence/evidence-styles.d.ts.map +1 -0
  213. package/dist/blocks/evidence/evidence-styles.js +88 -0
  214. package/dist/blocks/evidence/evidence-styles.js.map +1 -0
  215. package/dist/blocks/evidence/index.d.ts +4 -0
  216. package/dist/blocks/evidence/index.d.ts.map +1 -0
  217. package/dist/blocks/evidence/index.js +15 -0
  218. package/dist/blocks/evidence/index.js.map +1 -0
  219. package/dist/blocks/evidence/metric-breakdown.d.ts +22 -0
  220. package/dist/blocks/evidence/metric-breakdown.d.ts.map +1 -0
  221. package/dist/blocks/evidence/metric-breakdown.js +203 -0
  222. package/dist/blocks/evidence/metric-breakdown.js.map +1 -0
  223. package/dist/blocks/evidence/references.d.ts +13 -0
  224. package/dist/blocks/evidence/references.d.ts.map +1 -0
  225. package/dist/blocks/evidence/references.js +103 -0
  226. package/dist/blocks/evidence/references.js.map +1 -0
  227. package/dist/blocks/index.d.ts +8 -0
  228. package/dist/blocks/index.d.ts.map +1 -0
  229. package/dist/blocks/index.js +24 -0
  230. package/dist/blocks/index.js.map +1 -0
  231. package/dist/blocks/layout/grid-item.d.ts +4 -0
  232. package/dist/blocks/layout/grid-item.d.ts.map +1 -0
  233. package/dist/blocks/layout/grid-item.js +65 -0
  234. package/dist/blocks/layout/grid-item.js.map +1 -0
  235. package/dist/blocks/layout/grid.d.ts +9 -0
  236. package/dist/blocks/layout/grid.d.ts.map +1 -0
  237. package/dist/blocks/layout/grid.js +99 -0
  238. package/dist/blocks/layout/grid.js.map +1 -0
  239. package/dist/blocks/layout/index.d.ts +4 -0
  240. package/dist/blocks/layout/index.d.ts.map +1 -0
  241. package/dist/blocks/layout/index.js +23 -0
  242. package/dist/blocks/layout/index.js.map +1 -0
  243. package/dist/blocks/layout/layout-styles.d.ts +40 -0
  244. package/dist/blocks/layout/layout-styles.d.ts.map +1 -0
  245. package/dist/blocks/layout/layout-styles.js +110 -0
  246. package/dist/blocks/layout/layout-styles.js.map +1 -0
  247. package/dist/blocks/layout/main-aside.d.ts +4 -0
  248. package/dist/blocks/layout/main-aside.d.ts.map +1 -0
  249. package/dist/blocks/layout/main-aside.js +21 -0
  250. package/dist/blocks/layout/main-aside.js.map +1 -0
  251. package/dist/blocks/layout/rail-layout.d.ts +4 -0
  252. package/dist/blocks/layout/rail-layout.d.ts.map +1 -0
  253. package/dist/blocks/layout/rail-layout.js +33 -0
  254. package/dist/blocks/layout/rail-layout.js.map +1 -0
  255. package/dist/blocks/layout/semantic-layout-parts.d.ts +14 -0
  256. package/dist/blocks/layout/semantic-layout-parts.d.ts.map +1 -0
  257. package/dist/blocks/layout/semantic-layout-parts.js +9 -0
  258. package/dist/blocks/layout/semantic-layout-parts.js.map +1 -0
  259. package/dist/blocks/layout/sidebar-layout.d.ts +4 -0
  260. package/dist/blocks/layout/sidebar-layout.d.ts.map +1 -0
  261. package/dist/blocks/layout/sidebar-layout.js +30 -0
  262. package/dist/blocks/layout/sidebar-layout.js.map +1 -0
  263. package/dist/blocks/layout/split.d.ts +4 -0
  264. package/dist/blocks/layout/split.d.ts.map +1 -0
  265. package/dist/blocks/layout/split.js +23 -0
  266. package/dist/blocks/layout/split.js.map +1 -0
  267. package/dist/blocks/layout/stack.d.ts +4 -0
  268. package/dist/blocks/layout/stack.d.ts.map +1 -0
  269. package/dist/blocks/layout/stack.js +36 -0
  270. package/dist/blocks/layout/stack.js.map +1 -0
  271. package/dist/blocks/product/calendar-dates.d.ts +59 -0
  272. package/dist/blocks/product/calendar-dates.d.ts.map +1 -0
  273. package/dist/blocks/product/calendar-dates.js +100 -0
  274. package/dist/blocks/product/calendar-dates.js.map +1 -0
  275. package/dist/blocks/product/calendar.d.ts +12 -0
  276. package/dist/blocks/product/calendar.d.ts.map +1 -0
  277. package/dist/blocks/product/calendar.js +125 -0
  278. package/dist/blocks/product/calendar.js.map +1 -0
  279. package/dist/blocks/product/feature-matrix.d.ts +4 -0
  280. package/dist/blocks/product/feature-matrix.d.ts.map +1 -0
  281. package/dist/blocks/product/feature-matrix.js +72 -0
  282. package/dist/blocks/product/feature-matrix.js.map +1 -0
  283. package/dist/blocks/product/gallery.d.ts +14 -0
  284. package/dist/blocks/product/gallery.d.ts.map +1 -0
  285. package/dist/blocks/product/gallery.js +86 -0
  286. package/dist/blocks/product/gallery.js.map +1 -0
  287. package/dist/blocks/product/index.d.ts +4 -0
  288. package/dist/blocks/product/index.d.ts.map +1 -0
  289. package/dist/blocks/product/index.js +40 -0
  290. package/dist/blocks/product/index.js.map +1 -0
  291. package/dist/blocks/product/logo-cloud.d.ts +4 -0
  292. package/dist/blocks/product/logo-cloud.d.ts.map +1 -0
  293. package/dist/blocks/product/logo-cloud.js +42 -0
  294. package/dist/blocks/product/logo-cloud.js.map +1 -0
  295. package/dist/blocks/product/people.d.ts +4 -0
  296. package/dist/blocks/product/people.d.ts.map +1 -0
  297. package/dist/blocks/product/people.js +53 -0
  298. package/dist/blocks/product/people.js.map +1 -0
  299. package/dist/blocks/product/pricing.d.ts +4 -0
  300. package/dist/blocks/product/pricing.d.ts.map +1 -0
  301. package/dist/blocks/product/pricing.js +86 -0
  302. package/dist/blocks/product/pricing.js.map +1 -0
  303. package/dist/blocks/product/product-helpers.d.ts +22 -0
  304. package/dist/blocks/product/product-helpers.d.ts.map +1 -0
  305. package/dist/blocks/product/product-helpers.js +48 -0
  306. package/dist/blocks/product/product-helpers.js.map +1 -0
  307. package/dist/blocks/product/product-runtime.d.ts +15 -0
  308. package/dist/blocks/product/product-runtime.d.ts.map +1 -0
  309. package/dist/blocks/product/product-runtime.js +97 -0
  310. package/dist/blocks/product/product-runtime.js.map +1 -0
  311. package/dist/blocks/product/product-styles.d.ts +14 -0
  312. package/dist/blocks/product/product-styles.d.ts.map +1 -0
  313. package/dist/blocks/product/product-styles.js +120 -0
  314. package/dist/blocks/product/product-styles.js.map +1 -0
  315. package/dist/blocks/product/testimonial.d.ts +8 -0
  316. package/dist/blocks/product/testimonial.d.ts.map +1 -0
  317. package/dist/blocks/product/testimonial.js +67 -0
  318. package/dist/blocks/product/testimonial.js.map +1 -0
  319. package/dist/cli.d.ts.map +1 -1
  320. package/dist/cli.js +143 -30
  321. package/dist/cli.js.map +1 -1
  322. package/dist/data/data-json-schema.d.ts +9 -0
  323. package/dist/data/data-json-schema.d.ts.map +1 -0
  324. package/dist/data/data-json-schema.js +48 -0
  325. package/dist/data/data-json-schema.js.map +1 -0
  326. package/dist/data/dataset-types.d.ts +47 -0
  327. package/dist/data/dataset-types.d.ts.map +1 -0
  328. package/dist/data/dataset-types.js +49 -0
  329. package/dist/data/dataset-types.js.map +1 -0
  330. package/dist/data/format-value.d.ts +39 -0
  331. package/dist/data/format-value.d.ts.map +1 -0
  332. package/dist/data/format-value.js +214 -0
  333. package/dist/data/format-value.js.map +1 -0
  334. package/dist/data/resolve-block-data.d.ts +24 -0
  335. package/dist/data/resolve-block-data.d.ts.map +1 -0
  336. package/dist/data/resolve-block-data.js +190 -0
  337. package/dist/data/resolve-block-data.js.map +1 -0
  338. package/dist/data/transform-pipeline.d.ts +65 -0
  339. package/dist/data/transform-pipeline.d.ts.map +1 -0
  340. package/dist/data/transform-pipeline.js +234 -0
  341. package/dist/data/transform-pipeline.js.map +1 -0
  342. package/dist/data/validate-datasets.d.ts +22 -0
  343. package/dist/data/validate-datasets.d.ts.map +1 -0
  344. package/dist/data/validate-datasets.js +137 -0
  345. package/dist/data/validate-datasets.js.map +1 -0
  346. package/dist/diagram/adapter-markup-fit.d.ts +44 -0
  347. package/dist/diagram/adapter-markup-fit.d.ts.map +1 -0
  348. package/dist/diagram/adapter-markup-fit.js +292 -0
  349. package/dist/diagram/adapter-markup-fit.js.map +1 -0
  350. package/dist/diagram/adapter-stylesheet-filter.d.ts +56 -0
  351. package/dist/diagram/adapter-stylesheet-filter.d.ts.map +1 -0
  352. package/dist/diagram/adapter-stylesheet-filter.js +245 -0
  353. package/dist/diagram/adapter-stylesheet-filter.js.map +1 -0
  354. package/dist/diagram/adapter.d.ts +17 -0
  355. package/dist/diagram/adapter.d.ts.map +1 -1
  356. package/dist/diagram/adapter.js +43 -2
  357. package/dist/diagram/adapter.js.map +1 -1
  358. package/dist/index.d.ts +14 -1
  359. package/dist/index.d.ts.map +1 -1
  360. package/dist/index.js +6 -0
  361. package/dist/index.js.map +1 -1
  362. package/dist/ir.d.ts +18 -0
  363. package/dist/ir.d.ts.map +1 -1
  364. package/dist/ir.js.map +1 -1
  365. package/dist/mcp/mcp-http-transport.d.ts +68 -0
  366. package/dist/mcp/mcp-http-transport.d.ts.map +1 -0
  367. package/dist/mcp/mcp-http-transport.js +140 -0
  368. package/dist/mcp/mcp-http-transport.js.map +1 -0
  369. package/dist/mcp/mcp-json-rpc-dispatch.d.ts +38 -0
  370. package/dist/mcp/mcp-json-rpc-dispatch.d.ts.map +1 -0
  371. package/dist/mcp/mcp-json-rpc-dispatch.js +98 -0
  372. package/dist/mcp/mcp-json-rpc-dispatch.js.map +1 -0
  373. package/dist/mcp/mcp-local-tools.d.ts +20 -0
  374. package/dist/mcp/mcp-local-tools.d.ts.map +1 -0
  375. package/dist/mcp/mcp-local-tools.js +58 -0
  376. package/dist/mcp/mcp-local-tools.js.map +1 -0
  377. package/dist/mcp/mcp-protocol.d.ts +79 -0
  378. package/dist/mcp/mcp-protocol.d.ts.map +1 -0
  379. package/dist/mcp/mcp-protocol.js +83 -0
  380. package/dist/mcp/mcp-protocol.js.map +1 -0
  381. package/dist/mcp/mcp-stdio-transport.d.ts +28 -0
  382. package/dist/mcp/mcp-stdio-transport.d.ts.map +1 -0
  383. package/dist/mcp/mcp-stdio-transport.js +73 -0
  384. package/dist/mcp/mcp-stdio-transport.js.map +1 -0
  385. package/dist/mcp/mcp-tool-definitions.d.ts +66 -0
  386. package/dist/mcp/mcp-tool-definitions.d.ts.map +1 -0
  387. package/dist/mcp/mcp-tool-definitions.js +246 -0
  388. package/dist/mcp/mcp-tool-definitions.js.map +1 -0
  389. package/dist/mcp-server.d.ts +6 -33
  390. package/dist/mcp-server.d.ts.map +1 -1
  391. package/dist/mcp-server.js +5 -270
  392. package/dist/mcp-server.js.map +1 -1
  393. package/dist/recipes/index.d.ts +27 -0
  394. package/dist/recipes/index.d.ts.map +1 -0
  395. package/dist/recipes/index.js +30 -0
  396. package/dist/recipes/index.js.map +1 -0
  397. package/dist/recipes/recipes.generated.d.ts +8 -0
  398. package/dist/recipes/recipes.generated.d.ts.map +1 -0
  399. package/dist/recipes/recipes.generated.js +704 -0
  400. package/dist/recipes/recipes.generated.js.map +1 -0
  401. package/dist/registry/actions.d.ts +2 -0
  402. package/dist/registry/actions.d.ts.map +1 -1
  403. package/dist/registry/actions.js +3 -1
  404. package/dist/registry/actions.js.map +1 -1
  405. package/dist/registry/block-module.d.ts +65 -0
  406. package/dist/registry/block-module.d.ts.map +1 -0
  407. package/dist/registry/block-module.js +19 -0
  408. package/dist/registry/block-module.js.map +1 -0
  409. package/dist/registry/catalog-search.d.ts +32 -0
  410. package/dist/registry/catalog-search.d.ts.map +1 -0
  411. package/dist/registry/catalog-search.js +122 -0
  412. package/dist/registry/catalog-search.js.map +1 -0
  413. package/dist/registry/define-helpers.d.ts +89 -0
  414. package/dist/registry/define-helpers.d.ts.map +1 -0
  415. package/dist/registry/define-helpers.js +87 -0
  416. package/dist/registry/define-helpers.js.map +1 -0
  417. package/dist/registry/describe-many.d.ts +58 -0
  418. package/dist/registry/describe-many.d.ts.map +1 -0
  419. package/dist/registry/describe-many.js +156 -0
  420. package/dist/registry/describe-many.js.map +1 -0
  421. package/dist/registry/prop-schema.d.ts +32 -1
  422. package/dist/registry/prop-schema.d.ts.map +1 -1
  423. package/dist/registry/prop-schema.js +108 -2
  424. package/dist/registry/prop-schema.js.map +1 -1
  425. package/dist/registry/registry-builder.d.ts +17 -0
  426. package/dist/registry/registry-builder.d.ts.map +1 -0
  427. package/dist/registry/registry-builder.js +158 -0
  428. package/dist/registry/registry-builder.js.map +1 -0
  429. package/dist/registry/registry.d.ts +32 -5
  430. package/dist/registry/registry.d.ts.map +1 -1
  431. package/dist/registry/registry.js +67 -14
  432. package/dist/registry/registry.js.map +1 -1
  433. package/dist/registry/roster.d.ts +34 -5
  434. package/dist/registry/roster.d.ts.map +1 -1
  435. package/dist/registry/roster.js +184 -224
  436. package/dist/registry/roster.js.map +1 -1
  437. package/dist/render/block-helpers.d.ts +11 -18
  438. package/dist/render/block-helpers.d.ts.map +1 -1
  439. package/dist/render/block-helpers.js +14 -44
  440. package/dist/render/block-helpers.js.map +1 -1
  441. package/dist/render/blocks.d.ts +9 -33
  442. package/dist/render/blocks.d.ts.map +1 -1
  443. package/dist/render/blocks.js +56 -180
  444. package/dist/render/blocks.js.map +1 -1
  445. package/dist/render/chart-figure-encoded.d.ts +11 -0
  446. package/dist/render/chart-figure-encoded.d.ts.map +1 -0
  447. package/dist/render/chart-figure-encoded.js +81 -0
  448. package/dist/render/chart-figure-encoded.js.map +1 -0
  449. package/dist/render/chart-kinds-cartesian.d.ts +14 -0
  450. package/dist/render/chart-kinds-cartesian.d.ts.map +1 -0
  451. package/dist/render/chart-kinds-cartesian.js +122 -0
  452. package/dist/render/chart-kinds-cartesian.js.map +1 -0
  453. package/dist/render/chart-kinds-composite.d.ts +16 -0
  454. package/dist/render/chart-kinds-composite.d.ts.map +1 -0
  455. package/dist/render/chart-kinds-composite.js +144 -0
  456. package/dist/render/chart-kinds-composite.js.map +1 -0
  457. package/dist/render/chart-kinds-gauge-treemap.d.ts +8 -0
  458. package/dist/render/chart-kinds-gauge-treemap.d.ts.map +1 -0
  459. package/dist/render/chart-kinds-gauge-treemap.js +101 -0
  460. package/dist/render/chart-kinds-gauge-treemap.js.map +1 -0
  461. package/dist/render/chart-kinds-histogram-waterfall.d.ts +17 -0
  462. package/dist/render/chart-kinds-histogram-waterfall.d.ts.map +1 -0
  463. package/dist/render/chart-kinds-histogram-waterfall.js +172 -0
  464. package/dist/render/chart-kinds-histogram-waterfall.js.map +1 -0
  465. package/dist/render/chart-overlays.d.ts +18 -0
  466. package/dist/render/chart-overlays.d.ts.map +1 -0
  467. package/dist/render/chart-overlays.js +58 -0
  468. package/dist/render/chart-overlays.js.map +1 -0
  469. package/dist/render/chart-scales.d.ts +83 -0
  470. package/dist/render/chart-scales.d.ts.map +1 -0
  471. package/dist/render/chart-scales.js +166 -0
  472. package/dist/render/chart-scales.js.map +1 -0
  473. package/dist/render/chart-svg-parts.d.ts +50 -0
  474. package/dist/render/chart-svg-parts.d.ts.map +1 -0
  475. package/dist/render/chart-svg-parts.js +125 -0
  476. package/dist/render/chart-svg-parts.js.map +1 -0
  477. package/dist/render/chart-text.d.ts +18 -0
  478. package/dist/render/chart-text.d.ts.map +1 -0
  479. package/dist/render/chart-text.js +69 -0
  480. package/dist/render/chart-text.js.map +1 -0
  481. package/dist/render/chart-treemap-layout.d.ts +17 -0
  482. package/dist/render/chart-treemap-layout.d.ts.map +1 -0
  483. package/dist/render/chart-treemap-layout.js +74 -0
  484. package/dist/render/chart-treemap-layout.js.map +1 -0
  485. package/dist/render/chart-types.d.ts +107 -0
  486. package/dist/render/chart-types.d.ts.map +1 -0
  487. package/dist/render/chart-types.js +11 -0
  488. package/dist/render/chart-types.js.map +1 -0
  489. package/dist/render/charts.d.ts +28 -11
  490. package/dist/render/charts.d.ts.map +1 -1
  491. package/dist/render/charts.js +38 -117
  492. package/dist/render/charts.js.map +1 -1
  493. package/dist/render/derived-variables.d.ts +20 -0
  494. package/dist/render/derived-variables.d.ts.map +1 -1
  495. package/dist/render/derived-variables.js +23 -0
  496. package/dist/render/derived-variables.js.map +1 -1
  497. package/dist/render/document.d.ts +11 -0
  498. package/dist/render/document.d.ts.map +1 -1
  499. package/dist/render/document.js +20 -3
  500. package/dist/render/document.js.map +1 -1
  501. package/dist/render/escape.d.ts +10 -0
  502. package/dist/render/escape.d.ts.map +1 -1
  503. package/dist/render/escape.js +28 -0
  504. package/dist/render/escape.js.map +1 -1
  505. package/dist/render/feature-styles.d.ts.map +1 -1
  506. package/dist/render/feature-styles.js +42 -80
  507. package/dist/render/feature-styles.js.map +1 -1
  508. package/dist/render/outline.d.ts +1 -1
  509. package/dist/render/outline.d.ts.map +1 -1
  510. package/dist/render/outline.js +4 -1
  511. package/dist/render/outline.js.map +1 -1
  512. package/dist/render/recipe-styles.d.ts +26 -0
  513. package/dist/render/recipe-styles.d.ts.map +1 -0
  514. package/dist/render/recipe-styles.js +218 -0
  515. package/dist/render/recipe-styles.js.map +1 -0
  516. package/dist/render/render-context.d.ts +40 -0
  517. package/dist/render/render-context.d.ts.map +1 -0
  518. package/dist/render/render-context.js +16 -0
  519. package/dist/render/render-context.js.map +1 -0
  520. package/dist/render/render.d.ts +7 -0
  521. package/dist/render/render.d.ts.map +1 -1
  522. package/dist/render/render.js +68 -44
  523. package/dist/render/render.js.map +1 -1
  524. package/dist/render/runtime.d.ts +4 -1
  525. package/dist/render/runtime.d.ts.map +1 -1
  526. package/dist/render/runtime.js +91 -118
  527. package/dist/render/runtime.js.map +1 -1
  528. package/dist/render/showcase-blocks.d.ts +5 -0
  529. package/dist/render/showcase-blocks.d.ts.map +1 -1
  530. package/dist/render/showcase-blocks.js +8 -28
  531. package/dist/render/showcase-blocks.js.map +1 -1
  532. package/dist/render/showcase-styles.d.ts.map +1 -1
  533. package/dist/render/showcase-styles.js +15 -31
  534. package/dist/render/showcase-styles.js.map +1 -1
  535. package/dist/render/style-units.d.ts +17 -0
  536. package/dist/render/style-units.d.ts.map +1 -0
  537. package/dist/render/style-units.js +24 -0
  538. package/dist/render/style-units.js.map +1 -0
  539. package/dist/render/styles.d.ts.map +1 -1
  540. package/dist/render/styles.js +8 -5
  541. package/dist/render/styles.js.map +1 -1
  542. package/dist/render/tone.d.ts +14 -0
  543. package/dist/render/tone.d.ts.map +1 -0
  544. package/dist/render/tone.js +40 -0
  545. package/dist/render/tone.js.map +1 -0
  546. package/dist/render/verify.d.ts +3 -0
  547. package/dist/render/verify.d.ts.map +1 -1
  548. package/dist/render/verify.js +15 -2
  549. package/dist/render/verify.js.map +1 -1
  550. package/dist/spec/asset-references.d.ts +35 -0
  551. package/dist/spec/asset-references.d.ts.map +1 -0
  552. package/dist/spec/asset-references.js +93 -0
  553. package/dist/spec/asset-references.js.map +1 -0
  554. package/dist/spec/bounds.d.ts +6 -0
  555. package/dist/spec/bounds.d.ts.map +1 -1
  556. package/dist/spec/bounds.js +7 -0
  557. package/dist/spec/bounds.js.map +1 -1
  558. package/dist/spec/conditions.d.ts +43 -0
  559. package/dist/spec/conditions.d.ts.map +1 -0
  560. package/dist/spec/conditions.js +179 -0
  561. package/dist/spec/conditions.js.map +1 -0
  562. package/dist/spec/network-policy.d.ts +33 -0
  563. package/dist/spec/network-policy.d.ts.map +1 -0
  564. package/dist/spec/network-policy.js +57 -0
  565. package/dist/spec/network-policy.js.map +1 -0
  566. package/dist/spec/normalize.d.ts +7 -2
  567. package/dist/spec/normalize.d.ts.map +1 -1
  568. package/dist/spec/normalize.js +203 -57
  569. package/dist/spec/normalize.js.map +1 -1
  570. package/dist/theme/dialect-presets.d.ts +12 -0
  571. package/dist/theme/dialect-presets.d.ts.map +1 -0
  572. package/dist/theme/dialect-presets.js +214 -0
  573. package/dist/theme/dialect-presets.js.map +1 -0
  574. package/dist/theme/load-theme.d.ts +9 -1
  575. package/dist/theme/load-theme.d.ts.map +1 -1
  576. package/dist/theme/load-theme.js +25 -2
  577. package/dist/theme/load-theme.js.map +1 -1
  578. package/dist/theme/preset-builder.d.ts +36 -0
  579. package/dist/theme/preset-builder.d.ts.map +1 -0
  580. package/dist/theme/preset-builder.js +51 -0
  581. package/dist/theme/preset-builder.js.map +1 -0
  582. package/dist/theme/presets.d.ts +4 -7
  583. package/dist/theme/presets.d.ts.map +1 -1
  584. package/dist/theme/presets.js +7 -40
  585. package/dist/theme/presets.js.map +1 -1
  586. package/dist/theme/recipes.d.ts +38 -0
  587. package/dist/theme/recipes.d.ts.map +1 -0
  588. package/dist/theme/recipes.js +96 -0
  589. package/dist/theme/recipes.js.map +1 -0
  590. package/dist/theme/theme-catalog.d.ts.map +1 -1
  591. package/dist/theme/theme-catalog.js +16 -0
  592. package/dist/theme/theme-catalog.js.map +1 -1
  593. package/dist/version.d.ts +1 -1
  594. package/dist/version.js +1 -1
  595. package/llms.txt +9 -5
  596. package/package.json +6 -2
@@ -12,86 +12,49 @@
12
12
  * cannot drift apart.
13
13
  */
14
14
  import { EMBED_PROVIDER_NAMES } from '../spec/providers.js';
15
- const DEFAULT_MIGRATION = 'Props are additive; removed props are reported as diagnostics, never silently dropped.';
16
- const DEFAULT_SERIALIZER = 'Serializes back to the same Page Spec shape; child blocks keep their order and slots.';
17
- const DEFAULT_SIZING = {
18
- sizes: ['medium', 'large'],
19
- default: 'medium',
20
- responsive: 'Fills its parent slot and reflows its content; never clips or scales by transform.',
21
- };
22
- const str = (o = {}) => ({
23
- kind: 'string',
24
- ...o,
25
- });
26
- const txt = (o = {}) => ({
27
- kind: 'text',
28
- ...o,
29
- });
30
- const num = (o = {}) => ({ kind: 'number', ...o });
31
- const bool = (o = {}) => ({
32
- kind: 'boolean',
33
- ...o,
34
- });
35
- const urlProp = (o = {}) => ({
36
- kind: 'url',
37
- ...o,
38
- });
39
- const list = (of, o = {}) => ({ kind: 'list', of, ...o });
40
- const obj = (fields, o = {}) => ({ kind: 'object', fields, ...o });
41
- const oneOf = (options, o = {}) => ({ kind: 'oneOf', options, ...o });
42
- const enumStr = (values, o = {}) => ({
43
- kind: 'string',
44
- enum: values,
45
- ...o,
46
- });
47
- const idProp = (description) => ({ kind: 'string', id: true, description });
48
- const actionMap = (description) => ({
49
- kind: 'json',
50
- description,
51
- maxBytes: 8_000,
52
- schemaRef: '#/$defs/actionMap',
53
- });
54
- /** Reusable prop fragments. */
55
- const onProp = (description = 'Declarative action bindings for this block.') => actionMap(description);
56
- const anchorProps = {
57
- id: idProp('Stable node id. Author-provided ids are used verbatim and must be unique.'),
58
- };
59
- const itemsOf = (fields, o = {}) => list(obj(fields), { required: true, minItems: o.minItems ?? 1, maxItems: o.maxItems ?? 200 });
60
- const TITLE = str({ required: true, maxLength: 200 });
61
- const OPTIONAL_TITLE = str({ maxLength: 200 });
62
- const LABEL = str({ required: true, maxLength: 200 });
63
- /** Chart kinds, SVG-first and deterministic. */
64
- export const CHART_KINDS = [
65
- 'bar',
66
- 'line',
67
- 'area',
68
- 'pie',
69
- 'donut',
70
- 'sparkline',
71
- 'progress',
15
+ import { anchorProps, bool, define, enumStr, idProp, itemsOf, LABEL, list, num, OPTIONAL_TITLE, obj, oneOf, onProp, semantic, str, TITLE, txt, urlProp, VERBATIM_DESCRIPTION, } from './define-helpers.js';
16
+ export { CHART_KINDS } from '../blocks/chart/chart-kinds.js';
17
+ export * from './define-helpers.js';
18
+ /**
19
+ * Features the core compiler emits. Block groups may add their own features
20
+ * (see `FeatureModule`); the registry rejects any name outside both lists.
21
+ */
22
+ export const CORE_RUNTIME_FEATURES = [
23
+ 'tabs',
24
+ 'accordion',
25
+ 'carousel',
26
+ 'slider',
27
+ 'copy',
28
+ 'filter',
29
+ 'theme',
30
+ 'dialog',
31
+ 'chart',
32
+ 'diagram',
33
+ 'media',
34
+ 'outline',
35
+ 'bento',
36
+ 'marquee',
37
+ 'terminal',
38
+ 'tree',
39
+ 'before-after',
40
+ 'kpi',
41
+ 'showcase',
42
+ 'cta',
43
+ 'frame',
44
+ 'checklist',
45
+ 'state',
72
46
  ];
73
- function define(specification) {
74
- return {
75
- version: 1,
76
- kind: 'primitive',
77
- sizing: DEFAULT_SIZING,
78
- a11y: 'Renders semantic markup; text alternatives come from the authored content.',
79
- actions: [],
80
- runtimeFeatures: [],
81
- assets: [],
82
- network: 'none',
83
- migration: DEFAULT_MIGRATION,
84
- serializer: DEFAULT_SERIALIZER,
85
- ...specification,
86
- };
87
- }
88
- function semantic(specification) {
89
- return define({ kind: 'semantic', ...specification });
90
- }
91
- export const BLOCK_DEFINITIONS = [
47
+ /**
48
+ * Core blocks: the roster entries that have not moved into a block module
49
+ * under `src/blocks/`. The registry appends every module's definition.
50
+ */
51
+ export const CORE_BLOCK_DEFINITIONS = [
92
52
  // --- root ---------------------------------------------------------------
93
53
  define({
94
54
  type: 'page',
55
+ category: 'layout',
56
+ tags: ['root', 'document'],
57
+ useCases: ['page shell'],
95
58
  kind: 'semantic',
96
59
  purpose: 'The document root. Synthesized by the normalizer from the spec envelope.',
97
60
  summary: 'Page root: title, description, locale, and top-level blocks.',
@@ -106,6 +69,9 @@ export const BLOCK_DEFINITIONS = [
106
69
  // --- layout primitives --------------------------------------------------
107
70
  define({
108
71
  type: 'section',
72
+ category: 'layout',
73
+ tags: ['container', 'heading', 'band'],
74
+ useCases: ['group related blocks', 'dark feature band'],
109
75
  purpose: 'A titled group of blocks.',
110
76
  summary: 'Section with an optional heading wrapping child blocks; an inverse surface sets it on a night band.',
111
77
  props: {
@@ -118,35 +84,11 @@ export const BLOCK_DEFINITIONS = [
118
84
  },
119
85
  slots: { children: { accepts: '*', min: 1, max: 200 } },
120
86
  }),
121
- define({
122
- type: 'stack',
123
- purpose: 'Vertical flow container.',
124
- summary: 'Stack: children flow vertically with a controlled gap.',
125
- props: { gap: enumStr(['tight', 'normal', 'loose'], { default: 'normal' }), ...anchorProps },
126
- slots: { children: { accepts: '*', min: 1, max: 200 } },
127
- }),
128
- define({
129
- type: 'grid',
130
- purpose: 'Responsive grid container.',
131
- summary: 'Grid: children in N columns that collapse on narrow viewports.',
132
- props: {
133
- columns: num({ integer: true, min: 1, max: 6, default: 3 }),
134
- ...anchorProps,
135
- },
136
- slots: { children: { accepts: '*', min: 1, max: 200 } },
137
- }),
138
- define({
139
- type: 'split',
140
- purpose: 'Two-column split container.',
141
- summary: 'Split: two child groups side by side, stacking when narrow.',
142
- props: {
143
- ratio: enumStr(['even', 'wide-left', 'wide-right'], { default: 'even' }),
144
- ...anchorProps,
145
- },
146
- slots: { children: { accepts: '*', min: 2, max: 2 } },
147
- }),
148
87
  define({
149
88
  type: 'spacer',
89
+ category: 'layout',
90
+ tags: ['spacing'],
91
+ useCases: ['vertical breathing room'],
150
92
  purpose: 'Vertical rhythm spacer.',
151
93
  summary: 'Spacer: vertical space without content.',
152
94
  props: { size: enumStr(['small', 'medium', 'large'], { default: 'medium' }), ...anchorProps },
@@ -154,6 +96,9 @@ export const BLOCK_DEFINITIONS = [
154
96
  }),
155
97
  define({
156
98
  type: 'divider',
99
+ category: 'layout',
100
+ tags: ['rule', 'separator'],
101
+ useCases: ['separate sections'],
157
102
  purpose: 'Horizontal rule with an optional label.',
158
103
  summary: 'Divider: semantic separator with an optional label.',
159
104
  props: { label: str({ maxLength: 120 }), ...anchorProps },
@@ -162,6 +107,9 @@ export const BLOCK_DEFINITIONS = [
162
107
  // --- typography and content --------------------------------------------
163
108
  define({
164
109
  type: 'heading',
110
+ category: 'content',
111
+ tags: ['title', 'outline'],
112
+ useCases: ['section title'],
165
113
  purpose: 'Section heading at a chosen level.',
166
114
  summary: 'Heading: h1–h6 with the author-chosen level.',
167
115
  props: {
@@ -173,6 +121,9 @@ export const BLOCK_DEFINITIONS = [
173
121
  }),
174
122
  define({
175
123
  type: 'text',
124
+ category: 'content',
125
+ tags: ['prose', 'paragraph'],
126
+ useCases: ['body copy'],
176
127
  purpose: 'A paragraph, lead sentence, or caption.',
177
128
  summary: 'Text: single paragraph with body, lead, or caption treatment.',
178
129
  props: {
@@ -183,24 +134,33 @@ export const BLOCK_DEFINITIONS = [
183
134
  }),
184
135
  define({
185
136
  type: 'rich-text',
137
+ category: 'content',
138
+ tags: ['prose', 'inline-marks'],
139
+ useCases: ['formatted paragraphs'],
186
140
  purpose: 'Multi-paragraph prose.',
187
141
  summary: 'RichText: multiple paragraphs from line breaks.',
188
142
  props: { text: txt({ required: true }), ...anchorProps },
189
143
  }),
190
144
  define({
191
145
  type: 'quote',
146
+ category: 'content',
147
+ tags: ['testimonial', 'citation'],
148
+ useCases: ['customer quote', 'pull quote'],
192
149
  purpose: 'Pulled quotation.',
193
150
  summary: 'Quote: blockquote with an optional attribution.',
194
151
  props: { text: txt({ required: true }), cite: str({ maxLength: 200 }), ...anchorProps },
195
152
  }),
196
153
  define({
197
154
  type: 'code',
155
+ category: 'content',
156
+ tags: ['source', 'snippet', 'copy'],
157
+ useCases: ['code sample', 'command to copy'],
198
158
  purpose: 'Code or configuration sample.',
199
159
  summary: 'Code: preformatted block with optional language and copy target.',
200
160
  props: {
201
161
  language: str({ maxLength: 32, default: 'text' }),
202
162
  title: OPTIONAL_TITLE,
203
- text: txt({ required: true, maxLength: 100_000 }),
163
+ text: txt({ required: true, maxLength: 100_000, description: VERBATIM_DESCRIPTION }),
204
164
  ...anchorProps,
205
165
  },
206
166
  assets: ['code'],
@@ -210,6 +170,9 @@ export const BLOCK_DEFINITIONS = [
210
170
  }),
211
171
  define({
212
172
  type: 'badge',
173
+ category: 'content',
174
+ tags: ['label', 'status'],
175
+ useCases: ['status label'],
213
176
  purpose: 'Short status or category label.',
214
177
  summary: 'Badge: inline status chip.',
215
178
  props: {
@@ -220,6 +183,9 @@ export const BLOCK_DEFINITIONS = [
220
183
  }),
221
184
  define({
222
185
  type: 'kbd',
186
+ category: 'content',
187
+ tags: ['keyboard', 'shortcut'],
188
+ useCases: ['keyboard shortcut'],
223
189
  purpose: 'Keyboard key sequence.',
224
190
  summary: 'Kbd: one or more keys rendered as <kbd> elements.',
225
191
  props: {
@@ -230,6 +196,9 @@ export const BLOCK_DEFINITIONS = [
230
196
  }),
231
197
  define({
232
198
  type: 'key-value',
199
+ category: 'content',
200
+ tags: ['metadata', 'pairs'],
201
+ useCases: ['spec sheet', 'document metadata'],
233
202
  purpose: 'Compact definition list.',
234
203
  summary: 'KeyValue: label/value pairs rendered as a description list.',
235
204
  props: {
@@ -242,6 +211,9 @@ export const BLOCK_DEFINITIONS = [
242
211
  // --- information --------------------------------------------------------
243
212
  define({
244
213
  type: 'card',
214
+ category: 'layout',
215
+ tags: ['surface', 'container'],
216
+ useCases: ['boxed summary', 'feature card'],
245
217
  purpose: 'Bounded content container.',
246
218
  summary: 'Card: titled container that holds child blocks.',
247
219
  props: { title: OPTIONAL_TITLE, text: txt(), ...anchorProps },
@@ -249,6 +221,9 @@ export const BLOCK_DEFINITIONS = [
249
221
  }),
250
222
  define({
251
223
  type: 'alert',
224
+ category: 'content',
225
+ tags: ['notice', 'status'],
226
+ useCases: ['warning banner', 'status notice'],
252
227
  purpose: 'Inline notice.',
253
228
  summary: 'Alert: notice with tone and title.',
254
229
  props: {
@@ -261,6 +236,9 @@ export const BLOCK_DEFINITIONS = [
261
236
  }),
262
237
  semantic({
263
238
  type: 'callout',
239
+ category: 'content',
240
+ tags: ['note', 'aside'],
241
+ useCases: ['tip or note', 'highlighted aside'],
264
242
  purpose: 'Emphasized aside for a key point or risk.',
265
243
  summary: 'Callout: highlighted aside with tone, title, and body.',
266
244
  props: {
@@ -272,6 +250,9 @@ export const BLOCK_DEFINITIONS = [
272
250
  }),
273
251
  semantic({
274
252
  type: 'hero',
253
+ category: 'content',
254
+ tags: ['landing', 'headline', 'intro'],
255
+ useCases: ['landing page header', 'report title'],
275
256
  purpose: 'Page opener that states the artifact subject.',
276
257
  summary: 'Hero: eyebrow, title, and one-line description, optionally over a framed product shot.',
277
258
  props: {
@@ -280,6 +261,7 @@ export const BLOCK_DEFINITIONS = [
280
261
  description: txt(),
281
262
  align: enumStr(['start', 'center'], { default: 'start' }),
282
263
  src: urlProp({
264
+ asset: 'images',
283
265
  description: 'Optional product shot shown in a browser frame below the copy.',
284
266
  }),
285
267
  alt: str({ maxLength: 300, description: 'Required when src is set.' }),
@@ -299,6 +281,9 @@ export const BLOCK_DEFINITIONS = [
299
281
  }),
300
282
  semantic({
301
283
  type: 'stats',
284
+ category: 'data',
285
+ tags: ['numbers', 'summary'],
286
+ useCases: ['headline numbers', 'report summary'],
302
287
  purpose: 'KPI or summary figures.',
303
288
  summary: 'Stats: labeled values as a figure list.',
304
289
  props: {
@@ -310,6 +295,9 @@ export const BLOCK_DEFINITIONS = [
310
295
  }),
311
296
  define({
312
297
  type: 'progress',
298
+ category: 'data',
299
+ tags: ['completion', 'bars'],
300
+ useCases: ['completion status', 'goal tracking'],
313
301
  purpose: 'Single progress or completeness value.',
314
302
  summary: 'Progress: single bar with an accessible value range.',
315
303
  props: {
@@ -323,6 +311,9 @@ export const BLOCK_DEFINITIONS = [
323
311
  }),
324
312
  semantic({
325
313
  type: 'steps',
314
+ category: 'content',
315
+ tags: ['process', 'ordered'],
316
+ useCases: ['how-to steps', 'onboarding flow'],
326
317
  purpose: 'Ordered procedure.',
327
318
  summary: 'Steps: numbered sequence of titled steps.',
328
319
  props: {
@@ -335,6 +326,9 @@ export const BLOCK_DEFINITIONS = [
335
326
  }),
336
327
  semantic({
337
328
  type: 'timeline',
329
+ category: 'content',
330
+ tags: ['chronology', 'history'],
331
+ useCases: ['release history', 'project milestones'],
338
332
  purpose: 'Chronological or staged events.',
339
333
  summary: 'Timeline: ordered entries with a when/title/body shape.',
340
334
  props: {
@@ -347,6 +341,9 @@ export const BLOCK_DEFINITIONS = [
347
341
  // --- collections --------------------------------------------------------
348
342
  define({
349
343
  type: 'list',
344
+ category: 'content',
345
+ tags: ['bullets', 'items'],
346
+ useCases: ['bullet list', 'checklist of points'],
350
347
  purpose: 'Short item list with optional badges.',
351
348
  summary: 'List: bulleted items with optional status badges.',
352
349
  props: {
@@ -360,6 +357,9 @@ export const BLOCK_DEFINITIONS = [
360
357
  }),
361
358
  semantic({
362
359
  type: 'card-grid',
360
+ category: 'content',
361
+ tags: ['cards', 'overview'],
362
+ useCases: ['feature overview', 'link directory'],
363
363
  purpose: 'Grid of short cards.',
364
364
  summary: 'CardGrid: titled cards in a responsive grid.',
365
365
  props: {
@@ -370,6 +370,9 @@ export const BLOCK_DEFINITIONS = [
370
370
  }),
371
371
  define({
372
372
  type: 'table',
373
+ category: 'data',
374
+ tags: ['tabular', 'rows', 'columns'],
375
+ useCases: ['tabular data', 'comparison rows'],
373
376
  purpose: 'Tabular data with a header row.',
374
377
  summary: 'Table: columns and rows with a real header row.',
375
378
  props: {
@@ -383,6 +386,9 @@ export const BLOCK_DEFINITIONS = [
383
386
  }),
384
387
  semantic({
385
388
  type: 'comparison',
389
+ category: 'data',
390
+ tags: ['versus', 'options'],
391
+ useCases: ['compare options', 'plan comparison'],
386
392
  purpose: 'Side-by-side comparison of two alternatives.',
387
393
  summary: 'Comparison: two labeled columns of points.',
388
394
  props: {
@@ -395,6 +401,9 @@ export const BLOCK_DEFINITIONS = [
395
401
  }),
396
402
  semantic({
397
403
  type: 'risk-matrix',
404
+ category: 'data',
405
+ tags: ['risk', 'impact', 'likelihood'],
406
+ useCases: ['risk register', 'threat assessment'],
398
407
  purpose: 'Impact/likelihood risk table.',
399
408
  summary: 'RiskMatrix: risks rated by impact and likelihood.',
400
409
  props: {
@@ -411,50 +420,11 @@ export const BLOCK_DEFINITIONS = [
411
420
  a11y: 'Ratings are text values in table cells, never colour-only.',
412
421
  }),
413
422
  // --- interactive collections -------------------------------------------
414
- define({
415
- type: 'tabs',
416
- purpose: 'Tabbed groups of related content.',
417
- summary: 'Tabs: roving-tabindex tablist with tabpanels.',
418
- props: {
419
- title: OPTIONAL_TITLE,
420
- items: itemsOf({ id: idProp('Tab id.'), title: LABEL, text: txt({ required: true }) }, { minItems: 2 }),
421
- on: onProp('Optional state binding fired when a tab is selected.'),
422
- ...anchorProps,
423
- },
424
- runtimeFeatures: ['tabs'],
425
- actions: ['select-tab'],
426
- a11y: 'role="tablist" with arrow-key roving focus, aria-selected, aria-controls, and labelled tabpanels.',
427
- }),
428
- define({
429
- type: 'accordion',
430
- purpose: 'Collapsible sections.',
431
- summary: 'Accordion: disclosure sections that expand and collapse.',
432
- props: {
433
- title: OPTIONAL_TITLE,
434
- items: itemsOf({ title: LABEL, text: txt({ required: true }) }),
435
- on: onProp('Optional state binding fired when a section toggles.'),
436
- ...anchorProps,
437
- },
438
- runtimeFeatures: ['accordion'],
439
- actions: ['toggle', 'expand', 'collapse'],
440
- a11y: 'Native <details>/<summary> where possible; otherwise button + region with aria-expanded.',
441
- }),
442
- define({
443
- type: 'carousel',
444
- purpose: 'Sequenced slides with manual navigation.',
445
- summary: 'Carousel: prev/next, keyboard, and swipe across slides.',
446
- props: {
447
- ariaLabel: str({ required: true, maxLength: 120 }),
448
- items: itemsOf({ title: LABEL, text: txt({ required: true }) }, { minItems: 1 }),
449
- on: onProp('Optional state binding fired when the active slide changes.'),
450
- ...anchorProps,
451
- },
452
- runtimeFeatures: ['carousel'],
453
- actions: ['next', 'previous'],
454
- a11y: 'Labeled region with prev/next buttons, arrow-key support, a slide counter, and no autoplay.',
455
- }),
456
423
  semantic({
457
424
  type: 'toolbar',
425
+ category: 'interaction',
426
+ tags: ['controls', 'actions'],
427
+ useCases: ['page actions', 'quick links'],
458
428
  purpose: 'Row of controls or chips.',
459
429
  summary: 'Toolbar: buttons, badges, and links in one accessible row.',
460
430
  props: {
@@ -488,26 +458,12 @@ export const BLOCK_DEFINITIONS = [
488
458
  a11y: 'role="toolbar" with roving focus order; every control is a real button or link.',
489
459
  }),
490
460
  // --- data visualization -------------------------------------------------
491
- define({
492
- type: 'chart',
493
- purpose: 'Deterministic SVG chart with a text summary.',
494
- summary: 'Chart: bar, line, area, pie, donut, sparkline, or progress from labeled series.',
495
- props: {
496
- kind: enumStr(CHART_KINDS, { required: true }),
497
- title: OPTIONAL_TITLE,
498
- description: txt(),
499
- labels: list(str({ maxLength: 80 }), { required: true, minItems: 1, maxItems: 200 }),
500
- series: itemsOf({ label: LABEL, values: list(num(), { required: true, minItems: 1, maxItems: 200 }) }, { minItems: 1 }),
501
- ...anchorProps,
502
- },
503
- runtimeFeatures: ['chart'],
504
- assets: ['chart'],
505
- a11y: 'SVG carries role="img" plus a generated text summary; the same values are available as a table for assistive technology.',
506
- serializer: 'Serializes to the labels/series data, never to rendered SVG.',
507
- }),
508
461
  // --- diagrams (adapter) -------------------------------------------------
509
462
  semantic({
510
463
  type: 'diagram-panel',
464
+ category: 'engineering',
465
+ tags: ['diagram', 'architecture'],
466
+ useCases: ['architecture diagram', 'flow chart'],
511
467
  purpose: 'Typed diagram rendered through an adapter.',
512
468
  summary: 'DiagramPanel: embeds trusted output from a diagram adapter (ak:diagram when installed).',
513
469
  props: {
@@ -529,39 +485,11 @@ export const BLOCK_DEFINITIONS = [
529
485
  migration: 'Adapter contract is versioned separately; a spec that no longer compiles degrades to the fallback.',
530
486
  }),
531
487
  // --- showcase -----------------------------------------------------------
532
- semantic({
533
- type: 'bento',
534
- purpose: 'Feature mosaic: tiles of mixed size that each carry one idea, figure, or image.',
535
- summary: 'Bento: asymmetric tile grid; a tile can hold an eyebrow, title, text, a large figure, and a local image.',
536
- props: {
537
- title: OPTIONAL_TITLE,
538
- items: itemsOf({
539
- title: LABEL,
540
- text: txt(),
541
- eyebrow: str({ maxLength: 60 }),
542
- value: str({ maxLength: 40, description: 'A large figure shown above the title.' }),
543
- size: enumStr(['small', 'wide', 'tall', 'large'], { default: 'small' }),
544
- src: urlProp({
545
- description: 'Optional image; remote sources follow the network policy.',
546
- }),
547
- alt: str({
548
- maxLength: 300,
549
- description: 'Required when src is set; use "" for a decorative image.',
550
- }),
551
- }, { minItems: 1, maxItems: 12 }),
552
- ...anchorProps,
553
- },
554
- runtimeFeatures: ['bento'],
555
- network: 'optional',
556
- sizing: {
557
- sizes: ['large'],
558
- default: 'large',
559
- responsive: 'Four columns on wide screens, two on tablets, one on phones; spans collapse with the grid.',
560
- },
561
- a11y: 'A list of tiles; each tile title is a heading-styled paragraph, images keep their alt text.',
562
- }),
563
488
  define({
564
489
  type: 'marquee',
490
+ category: 'showcase',
491
+ tags: ['ticker', 'logos'],
492
+ useCases: ['customer logos', 'highlight ticker'],
565
493
  purpose: 'Continuously scrolling strip of short highlights.',
566
494
  summary: 'Marquee: looping ticker of short items that pauses on hover and stops under reduced motion.',
567
495
  props: {
@@ -579,15 +507,18 @@ export const BLOCK_DEFINITIONS = [
579
507
  }),
580
508
  define({
581
509
  type: 'terminal',
510
+ category: 'engineering',
511
+ tags: ['shell', 'commands', 'output'],
512
+ useCases: ['install steps', 'cli session'],
582
513
  purpose: 'A command-line session: commands with their output.',
583
- summary: 'Terminal: window-framed session whose lines type in on load; commands, output, comments, success, and errors are styled apart.',
514
+ summary: 'Terminal: window-framed session that types in on load; commands, output and errors are styled apart.',
584
515
  props: {
585
516
  title: str({ maxLength: 120, default: 'Terminal' }),
586
517
  lines: itemsOf({
587
518
  kind: enumStr(['command', 'output', 'comment', 'success', 'error'], {
588
519
  default: 'output',
589
520
  }),
590
- text: txt({ required: true, maxLength: 2_000 }),
521
+ text: txt({ required: true, maxLength: 2_000, description: VERBATIM_DESCRIPTION }),
591
522
  }, { minItems: 1, maxItems: 60 }),
592
523
  ...anchorProps,
593
524
  },
@@ -596,6 +527,9 @@ export const BLOCK_DEFINITIONS = [
596
527
  }),
597
528
  semantic({
598
529
  type: 'file-tree',
530
+ category: 'engineering',
531
+ tags: ['files', 'paths', 'repository'],
532
+ useCases: ['project layout', 'changed files'],
599
533
  purpose: 'Files and folders, optionally with change status, derived from flat paths.',
600
534
  summary: 'File tree: nested folders built from slash-separated paths, with per-file status and notes.',
601
535
  props: {
@@ -614,17 +548,20 @@ export const BLOCK_DEFINITIONS = [
614
548
  }),
615
549
  semantic({
616
550
  type: 'before-after',
551
+ category: 'media',
552
+ tags: ['comparison', 'slider', 'images'],
553
+ useCases: ['redesign comparison', 'visual diff'],
617
554
  purpose: 'Before and after: two images of the same frame, revealed by a draggable divider.',
618
555
  summary: 'Compare: before/after image slider driven by a native range input; without script both images stay visible.',
619
556
  props: {
620
557
  title: OPTIONAL_TITLE,
621
558
  before: obj({
622
- src: urlProp({ required: true }),
559
+ src: urlProp({ required: true, asset: 'images' }),
623
560
  alt: str({ required: true, maxLength: 300 }),
624
561
  label: str({ maxLength: 40, default: 'Before' }),
625
562
  }, { required: true }),
626
563
  after: obj({
627
- src: urlProp({ required: true }),
564
+ src: urlProp({ required: true, asset: 'images' }),
628
565
  alt: str({ required: true, maxLength: 300 }),
629
566
  label: str({ maxLength: 40, default: 'After' }),
630
567
  }, { required: true }),
@@ -638,6 +575,9 @@ export const BLOCK_DEFINITIONS = [
638
575
  }),
639
576
  semantic({
640
577
  type: 'kpi',
578
+ category: 'data',
579
+ tags: ['metrics', 'sparkline', 'trend'],
580
+ useCases: ['dashboard metrics', 'performance summary'],
641
581
  purpose: 'Headline metrics with direction of change and a small trend line.',
642
582
  summary: 'KPI: metric cards with value, signed delta, good/bad direction, and an optional sparkline series.',
643
583
  props: {
@@ -661,6 +601,9 @@ export const BLOCK_DEFINITIONS = [
661
601
  }),
662
602
  semantic({
663
603
  type: 'showcase',
604
+ category: 'showcase',
605
+ tags: ['spotlight', 'screenshot'],
606
+ useCases: ['feature spotlight', 'product tour'],
664
607
  purpose: 'Feature spotlight: copy beside a framed screenshot.',
665
608
  summary: 'Showcase: eyebrow, title, text, and bullets beside an image in a browser frame; the image side can flip.',
666
609
  props: {
@@ -668,7 +611,7 @@ export const BLOCK_DEFINITIONS = [
668
611
  title: TITLE,
669
612
  text: txt(),
670
613
  bullets: list(str({ required: true, maxLength: 200 }), { maxItems: 8 }),
671
- src: urlProp({ required: true }),
614
+ src: urlProp({ required: true, asset: 'images' }),
672
615
  alt: str({ required: true, maxLength: 300 }),
673
616
  frame: enumStr(['browser', 'plain'], { default: 'browser' }),
674
617
  address: str({
@@ -689,6 +632,9 @@ export const BLOCK_DEFINITIONS = [
689
632
  }),
690
633
  define({
691
634
  type: 'checklist',
635
+ category: 'data',
636
+ tags: ['tasks', 'status'],
637
+ useCases: ['launch checklist', 'review checklist'],
692
638
  purpose: 'Task list with done and open items and a completion count.',
693
639
  summary: 'Checklist: items marked done or open, with a visible completion count.',
694
640
  props: {
@@ -701,6 +647,9 @@ export const BLOCK_DEFINITIONS = [
701
647
  }),
702
648
  semantic({
703
649
  type: 'cta',
650
+ category: 'showcase',
651
+ tags: ['conversion', 'action'],
652
+ useCases: ['sign-up prompt', 'closing call to action'],
704
653
  purpose: 'Closing call to action that sends the reader somewhere next.',
705
654
  summary: 'CTA: eyebrow, oversized title, text, and up to three link actions on a night band.',
706
655
  props: {
@@ -725,10 +674,13 @@ export const BLOCK_DEFINITIONS = [
725
674
  // --- media --------------------------------------------------------------
726
675
  define({
727
676
  type: 'image',
677
+ category: 'media',
678
+ tags: ['picture', 'figure'],
679
+ useCases: ['screenshot', 'illustration'],
728
680
  purpose: 'Single image or picture.',
729
681
  summary: 'Image: local asset or allowlisted URL with required alt text.',
730
682
  props: {
731
- src: urlProp({ required: true }),
683
+ src: urlProp({ required: true, asset: 'images' }),
732
684
  alt: str({ required: true, maxLength: 300 }),
733
685
  caption: txt(),
734
686
  ...anchorProps,
@@ -737,32 +689,17 @@ export const BLOCK_DEFINITIONS = [
737
689
  assets: ['media'],
738
690
  a11y: 'Alt text is required; decorative images must use an empty alt explicitly.',
739
691
  }),
740
- semantic({
741
- type: 'gallery',
742
- purpose: 'Image grid.',
743
- summary: 'Gallery: responsive image grid with captions.',
744
- props: {
745
- title: OPTIONAL_TITLE,
746
- columns: num({ integer: true, min: 1, max: 6, default: 3 }),
747
- items: itemsOf({
748
- src: urlProp({ required: true }),
749
- alt: str({ required: true, maxLength: 300 }),
750
- caption: txt(),
751
- }),
752
- ...anchorProps,
753
- },
754
- network: 'optional',
755
- assets: ['media'],
756
- a11y: 'Every image keeps its alt text; captions are visible text, not tooltips.',
757
- }),
758
692
  define({
759
693
  type: 'video',
694
+ category: 'media',
695
+ tags: ['player', 'poster'],
696
+ useCases: ['product demo', 'recorded talk'],
760
697
  purpose: 'Local video or a network-denied fallback.',
761
- summary: 'Video: plays local sources; a provider reference becomes a poster plus link; network sources degrade to poster plus link.',
698
+ summary: 'Video: plays local sources; a provider or network source degrades to a poster plus link.',
762
699
  props: {
763
700
  title: LABEL,
764
- src: urlProp({ required: true }),
765
- poster: urlProp(),
701
+ src: urlProp({ required: true, asset: 'media' }),
702
+ poster: urlProp({ asset: 'images', rejectBlocked: true }),
766
703
  provider: enumStr(EMBED_PROVIDER_NAMES, {
767
704
  description: 'Network media provider. Requires the media capability and this provider in the page provider allowlist; the page still links out instead of embedding.',
768
705
  }),
@@ -781,11 +718,14 @@ export const BLOCK_DEFINITIONS = [
781
718
  }),
782
719
  define({
783
720
  type: 'audio',
721
+ category: 'media',
722
+ tags: ['player', 'sound'],
723
+ useCases: ['podcast clip', 'voice note'],
784
724
  purpose: 'Local audio or a network-denied fallback.',
785
- summary: 'Audio: plays local sources; a provider reference becomes metadata plus link; network sources degrade to metadata plus link.',
725
+ summary: 'Audio: plays local sources; a provider or network source degrades to metadata plus link.',
786
726
  props: {
787
727
  title: LABEL,
788
- src: urlProp({ required: true }),
728
+ src: urlProp({ required: true, asset: 'media' }),
789
729
  provider: enumStr(EMBED_PROVIDER_NAMES, {
790
730
  description: 'Network media provider. Requires the media capability and this provider in the page provider allowlist; the page still links out instead of embedding.',
791
731
  }),
@@ -805,6 +745,9 @@ export const BLOCK_DEFINITIONS = [
805
745
  // --- controls -----------------------------------------------------------
806
746
  define({
807
747
  type: 'button',
748
+ category: 'interaction',
749
+ tags: ['action', 'control'],
750
+ useCases: ['trigger an action', 'primary call'],
808
751
  purpose: 'Single actionable control.',
809
752
  summary: 'Button: clickable control with declarative action bindings.',
810
753
  props: {
@@ -819,6 +762,9 @@ export const BLOCK_DEFINITIONS = [
819
762
  }),
820
763
  define({
821
764
  type: 'link',
765
+ category: 'interaction',
766
+ tags: ['navigation', 'anchor'],
767
+ useCases: ['external link', 'related page'],
822
768
  purpose: 'Navigational link.',
823
769
  summary: 'Link: allowlisted URL with descriptive text.',
824
770
  props: { label: LABEL, href: urlProp({ required: true }), ...anchorProps },
@@ -827,6 +773,9 @@ export const BLOCK_DEFINITIONS = [
827
773
  }),
828
774
  define({
829
775
  type: 'slider',
776
+ category: 'interaction',
777
+ tags: ['range', 'input', 'state'],
778
+ useCases: ['adjust a value', 'what-if input'],
830
779
  purpose: 'Bounded numeric input.',
831
780
  summary: 'Slider: range input with pointer drag and full keyboard support.',
832
781
  props: {
@@ -844,6 +793,9 @@ export const BLOCK_DEFINITIONS = [
844
793
  }),
845
794
  define({
846
795
  type: 'search',
796
+ category: 'interaction',
797
+ tags: ['filter', 'input'],
798
+ useCases: ['filter a list', 'find an item'],
847
799
  purpose: 'Filter input for a collection.',
848
800
  summary: 'Search: labeled filter input bound to a collection.',
849
801
  props: {
@@ -858,6 +810,9 @@ export const BLOCK_DEFINITIONS = [
858
810
  }),
859
811
  define({
860
812
  type: 'dialog',
813
+ category: 'interaction',
814
+ tags: ['modal', 'overlay'],
815
+ useCases: ['confirmation', 'detail popup'],
861
816
  purpose: 'Modal detail surface.',
862
817
  summary: 'Dialog: native <dialog> with labeled title and close controls.',
863
818
  props: {
@@ -874,6 +829,9 @@ export const BLOCK_DEFINITIONS = [
874
829
  // --- review-specific semantic blocks ------------------------------------
875
830
  semantic({
876
831
  type: 'diff-summary',
832
+ category: 'engineering',
833
+ tags: ['diff', 'changes'],
834
+ useCases: ['change summary', 'pull request files'],
877
835
  purpose: 'Changed-file summary from a diff.',
878
836
  summary: 'DiffSummary: file paths with change status and line counts.',
879
837
  props: {
@@ -890,6 +848,9 @@ export const BLOCK_DEFINITIONS = [
890
848
  }),
891
849
  semantic({
892
850
  type: 'code-review',
851
+ category: 'engineering',
852
+ tags: ['review', 'findings'],
853
+ useCases: ['review findings', 'audit notes'],
893
854
  purpose: 'Structured review findings.',
894
855
  summary: 'CodeReview: good/bad/ugly/concern/question findings.',
895
856
  props: {
@@ -904,5 +865,4 @@ export const BLOCK_DEFINITIONS = [
904
865
  a11y: 'The finding kind is written as text; tone colour is decorative.',
905
866
  }),
906
867
  ];
907
- export const BLOCKS_BY_TYPE = new Map(BLOCK_DEFINITIONS.map((definition) => [definition.type, definition]));
908
868
  //# sourceMappingURL=roster.js.map