@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
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Feature sheets for the evidence widgets. `evidence` covers the benchmark
3
+ * comparison, the metric breakdown and the references list; `annotated-image`
4
+ * is separate because it is the only one that positions pins over media.
5
+ *
6
+ * Every value comes from theme tokens. Positions and widths are static rules
7
+ * keyed by quantized attributes (`data-ak-pct`, `data-x`, `data-y`), so the
8
+ * page needs no inline style and no script to lay them out.
9
+ */
10
+ import { TRANSITION, UNIT } from '../../render/style-units.js';
11
+ import { PIN_STEP } from './annotated-image.js';
12
+ import { BREAKDOWN_SERIES } from './metric-breakdown.js';
13
+ const MONO_LABEL = 'font-family:var(--ak-font-mono);font-size:.7rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ak-color-text-muted)';
14
+ /** One rule per value of an integer attribute, e.g. `[data-ak-pct="42"]{width:42%}`. */
15
+ function steppedRules(selector, attribute, property, step) {
16
+ const rules = [];
17
+ for (let value = 0; value <= 100; value += step) {
18
+ rules.push(`${selector}[${attribute}="${value}"]{${property}:${value}%}`);
19
+ }
20
+ return rules.join('');
21
+ }
22
+ const BENCHMARK_CSS = `.ak-bench{display:flex;flex-direction:column;gap:${UNIT(1.5)}}
23
+ .ak-bench-summary{display:flex;flex-wrap:wrap;align-items:center;gap:.5em 1em;margin:0;font-family:var(--ak-font-mono);font-size:.78rem;letter-spacing:.03em;color:var(--ak-color-text-muted)}
24
+ .ak-bench-summary strong{color:var(--ak-color-text);font-weight:600}
25
+ .ak-bench-tally{padding:.2em .75em;border-radius:999px;background:var(--ak-tint);color:var(--ak-color-text);border:var(--ak-border-width) solid color-mix(in srgb,var(--ak-color-accent) 22%,var(--ak-color-border))}
26
+ .ak-bench-metric{display:block;overflow-wrap:anywhere}
27
+ .ak-bench-better{display:block;margin-top:.2em;${MONO_LABEL};font-size:.64rem;white-space:nowrap}
28
+ .ak-bench-delta{white-space:nowrap;font-weight:600}
29
+ .ak-bench-pct{display:block;margin-top:.15em;font-family:var(--ak-font-mono);font-size:.76em;font-weight:500;color:var(--ak-color-text-muted)}
30
+ .ak-bench tr[data-verdict="improved"] .ak-bench-delta{color:color-mix(in srgb,var(--ak-color-success) 78%,var(--ak-color-text))}
31
+ .ak-bench tr[data-verdict="regressed"] .ak-bench-delta{color:color-mix(in srgb,var(--ak-color-danger) 78%,var(--ak-color-text))}
32
+ .ak-bench-notes{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:${UNIT(1.5)} ${UNIT(3)};margin:0;padding-top:${UNIT(1.5)};border-top:var(--ak-border-width) solid var(--ak-color-border)}
33
+ .ak-bench-notes div{min-width:0}
34
+ .ak-bench-notes dt{${MONO_LABEL}}
35
+ .ak-bench-notes dd{margin:.35em 0 0;font-size:.92rem;color:var(--ak-color-text-muted);overflow-wrap:anywhere}
36
+ @media (max-width:560px){.ak-bench .ak-table-wrap table{min-width:0}.ak-bench thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.ak-bench tbody{display:block}.ak-bench tbody tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:${UNIT(1)} ${UNIT(2)};padding:${UNIT(1.75)} ${UNIT(2)};border-bottom:var(--ak-border-width) solid var(--ak-color-border)}.ak-bench tbody tr:last-child{border-bottom:0}.ak-bench tbody tr > *{display:block;padding:0;border:0;text-align:left}.ak-bench tbody th{grid-column:1 / -1}.ak-bench td::before{content:attr(data-label);display:block;margin-bottom:.2em;${MONO_LABEL};font-size:.64rem}.ak-bench-delta{white-space:normal}}`;
37
+ const SERIES_RULES = Array.from({ length: BREAKDOWN_SERIES }, (_, index) => `.ak-breakdown [data-series="${index}"]{--ak-part:var(--ak-c${index})}`).join('\n');
38
+ const BREAKDOWN_CSS = `.ak-breakdown{display:flex;flex-direction:column;gap:${UNIT(1.5)};--ak-c0:var(--ak-color-accent);--ak-c1:var(--ak-color-info);--ak-c2:var(--ak-color-success);--ak-c3:var(--ak-color-warning);--ak-c4:var(--ak-color-danger);--ak-c5:var(--ak-color-text-muted)}
39
+ @supports (color:oklch(from red l c h)){.ak-breakdown{--ak-c1:oklch(from var(--ak-color-accent) l max(c,.1) calc(h + 210));--ak-c2:oklch(from var(--ak-color-accent) l max(c,.1) calc(h + 120));--ak-c3:oklch(from var(--ak-color-accent) l max(c,.1) calc(h + 60));--ak-c4:oklch(from var(--ak-color-accent) l max(c,.1) calc(h + 290));--ak-c5:oklch(from var(--ak-color-accent) l max(c,.1) calc(h + 165))}}
40
+ ${SERIES_RULES}
41
+ .ak-breakdown [data-tone="neutral"]{--ak-part:var(--ak-color-text-muted)}
42
+ .ak-breakdown [data-tone="info"]{--ak-part:var(--ak-color-info)}
43
+ .ak-breakdown [data-tone="success"]{--ak-part:var(--ak-color-success)}
44
+ .ak-breakdown [data-tone="warning"]{--ak-part:var(--ak-color-warning)}
45
+ .ak-breakdown [data-tone="danger"]{--ak-part:var(--ak-color-danger)}
46
+ .ak-breakdown-total{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.25em 1em;margin:0}
47
+ .ak-breakdown-total strong{font-family:var(--ak-font-heading);font-size:calc(var(--ak-font-size-base) * 1.6);font-weight:650;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--ak-color-text)}
48
+ .ak-breakdown-bar{display:flex;height:14px;border-radius:999px;overflow:hidden;background:color-mix(in srgb,var(--ak-color-text) 7%,transparent);print-color-adjust:exact;-webkit-print-color-adjust:exact}
49
+ .ak-breakdown-seg{flex:none;box-sizing:border-box;height:100%;background-color:var(--ak-part);background-clip:padding-box}
50
+ .ak-breakdown-seg + .ak-breakdown-seg{border-left:2px solid transparent}
51
+ .ak-breakdown-seg[data-ak-pct="0"]{display:none}
52
+ ${steppedRules('.ak-breakdown-seg', 'data-ak-pct', 'width', 1)}
53
+ .ak-breakdown [data-hatch] .ak-breakdown-swatch,.ak-breakdown-seg[data-hatch]{background-image:repeating-linear-gradient(135deg,transparent 0 3px,color-mix(in srgb,var(--ak-color-surface) 55%,transparent) 3px 5px)}
54
+ .ak-breakdown-list{list-style:none;margin:0;padding:0}
55
+ .ak-breakdown-list li{display:grid;grid-template-columns:auto minmax(0,1fr) auto 3.4em;align-items:baseline;gap:.75em;padding:.6em 0;border-bottom:var(--ak-border-width) solid var(--ak-color-border)}
56
+ .ak-breakdown-list li:last-child{border-bottom:0}
57
+ .ak-breakdown-swatch{align-self:center;width:.75em;height:.75em;border-radius:3px;background-color:var(--ak-part);print-color-adjust:exact;-webkit-print-color-adjust:exact}
58
+ .ak-breakdown-label{overflow-wrap:anywhere}
59
+ .ak-breakdown-value{font-variant-numeric:tabular-nums;text-align:right;font-weight:600}
60
+ .ak-breakdown-share{font-family:var(--ak-font-mono);font-size:.8rem;font-variant-numeric:tabular-nums;text-align:right;color:var(--ak-color-text-muted)}`;
61
+ const REFERENCES_CSS = `.ak-ref-list{margin:0;padding-left:2.4em;display:flex;flex-direction:column;gap:${UNIT(1.25)}}
62
+ .ak-ref{padding-left:.35em;border-radius:var(--ak-radius-small);scroll-margin-top:${UNIT(4)};${TRANSITION}}
63
+ .ak-ref::marker{font-family:var(--ak-font-mono);font-size:.8rem;color:var(--ak-color-text-muted)}
64
+ .ak-ref p{margin:0}
65
+ .ak-ref-title cite{font-style:normal;font-weight:600;color:var(--ak-color-text);overflow-wrap:anywhere}
66
+ .ak-ref .ak-ref-meta{margin-top:.2em;font-size:.84rem;color:var(--ak-color-text-muted);overflow-wrap:anywhere}
67
+ .ak-ref .ak-ref-note{margin-top:.3em;font-size:.92rem;color:var(--ak-color-text-muted);max-width:var(--ak-measure)}
68
+ .ak-ref:target{background:var(--ak-tint);box-shadow:0 0 0 ${UNIT(0.75)} var(--ak-tint)}
69
+ @media print{.ak-ref-title a[href^="http"]::after{content:" <" attr(href) ">";font-weight:400;font-size:.84em;overflow-wrap:anywhere}.ak-ref{break-inside:avoid}.ak-ref:target{background:none;box-shadow:none}}`;
70
+ export const EVIDENCE_CSS = [BENCHMARK_CSS, BREAKDOWN_CSS, REFERENCES_CSS].join('\n');
71
+ const PIN = `display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--ak-color-accent);color:var(--ak-color-accent-contrast);font-family:var(--ak-font-mono);font-size:.74rem;font-weight:700;line-height:1;font-variant-numeric:tabular-nums;print-color-adjust:exact;-webkit-print-color-adjust:exact`;
72
+ export const ANNOTATED_IMAGE_CSS = `.ak-annotated{display:flex;flex-direction:column;gap:${UNIT(1.5)}}
73
+ .ak-annotated-stage{position:relative;align-self:flex-start;max-width:100%;overflow:hidden;border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-medium);background:var(--ak-color-surface-raised);box-shadow:var(--ak-elevation-card)}
74
+ .ak-annotated-stage img{display:block;max-width:100%;height:auto}
75
+ .ak-annotated-blocked{display:block;padding:${UNIT(2.5)}}
76
+ .ak-annotated-pins{position:absolute;inset:0;list-style:none;margin:0;padding:0;pointer-events:none}
77
+ .ak-pin{position:absolute;translate:-50% -50%;${PIN};box-shadow:0 0 0 2px var(--ak-color-accent-contrast),0 4px 12px color-mix(in srgb,var(--ak-color-text) 32%,transparent)}
78
+ ${steppedRules('.ak-pin', 'data-x', 'left', PIN_STEP)}
79
+ ${steppedRules('.ak-pin', 'data-y', 'top', PIN_STEP)}
80
+ .ak-annotated figcaption{font-size:.84rem;color:var(--ak-color-text-muted)}
81
+ .ak-annotated-notes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:${UNIT(1)}}
82
+ .ak-annotated-notes li{display:flex;align-items:flex-start;gap:.75em}
83
+ .ak-pin-number{flex:none;${PIN};width:22px;height:22px;font-size:.68rem;margin-top:.1em}
84
+ .ak-annotated-notes p{margin:0;min-width:0;overflow-wrap:anywhere;max-width:var(--ak-measure)}
85
+ .ak-annotated-notes strong{font-weight:600;color:var(--ak-color-text)}
86
+ @media (max-width:480px){.ak-pin{width:22px;height:22px;font-size:.66rem}}
87
+ @media print{.ak-annotated-stage{box-shadow:none;break-inside:avoid}.ak-annotated-notes li{break-inside:avoid}}`;
88
+ //# sourceMappingURL=evidence-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-styles.js","sourceRoot":"","sources":["../../../src/blocks/evidence/evidence-styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,UAAU,GACd,gJAAgJ,CAAC;AAEnJ,wFAAwF;AACxF,SAAS,YAAY,CAAC,QAAgB,EAAE,SAAiB,EAAE,QAAgB,EAAE,IAAY;IACvF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,IAAI,SAAS,KAAK,KAAK,MAAM,QAAQ,IAAI,KAAK,IAAI,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,aAAa,GAAG,oDAAoD,IAAI,CAAC,GAAG,CAAC;;;;;iDAKlC,UAAU;;;;;sGAK2C,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,yBAAyB,IAAI,CAAC,GAAG,CAAC;;qBAEvI,UAAU;;mSAEoQ,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,iTAAiT,UAAU,wDAAwD,CAAC;AAE1sB,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAC7B,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAC5B,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,+BAA+B,KAAK,0BAA0B,KAAK,IAAI,CACtF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,aAAa,GAAG,wDAAwD,IAAI,CAAC,GAAG,CAAC;;EAErF,YAAY;;;;;;;;;;;;EAYZ,YAAY,CAAC,mBAAmB,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;;;;;;;;yJAQ2F,CAAC;AAE1J,MAAM,cAAc,GAAG,mFAAmF,IAAI,CAAC,IAAI,CAAC;oFAChC,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU;;;;;;4DAM7C,IAAI,CAAC,IAAI,CAAC;iNAC2I,CAAC;AAElN,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEtF,MAAM,GAAG,GAAG,6TAA6T,CAAC;AAE1U,MAAM,CAAC,MAAM,mBAAmB,GAAG,wDAAwD,IAAI,CAAC,GAAG,CAAC;;;8CAGtD,IAAI,CAAC,GAAG,CAAC;;gDAEP,GAAG;EACjD,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;EACnD,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC;;gGAE4C,IAAI,CAAC,CAAC,CAAC;;2BAE5E,GAAG;;;;gHAIkF,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** Evidence widgets: measured comparisons, breakdowns, annotated captures and sources. */
2
+ import type { BlockGroup } from '../../registry/block-module.js';
3
+ export declare const EVIDENCE_GROUP: BlockGroup;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/blocks/evidence/index.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAE1F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAOjE,eAAO,MAAM,cAAc,EAAE,UAO5B,CAAC"}
@@ -0,0 +1,15 @@
1
+ /** Evidence widgets: measured comparisons, breakdowns, annotated captures and sources. */
2
+ import { annotatedImageBlock } from './annotated-image.js';
3
+ import { benchmarkComparisonBlock } from './benchmark-comparison.js';
4
+ import { ANNOTATED_IMAGE_CSS, EVIDENCE_CSS } from './evidence-styles.js';
5
+ import { metricBreakdownBlock } from './metric-breakdown.js';
6
+ import { referencesBlock } from './references.js';
7
+ export const EVIDENCE_GROUP = {
8
+ name: 'evidence',
9
+ blocks: [benchmarkComparisonBlock, metricBreakdownBlock, annotatedImageBlock, referencesBlock],
10
+ features: [
11
+ { name: 'evidence', marker: '.ak-bench', css: EVIDENCE_CSS },
12
+ { name: 'annotated-image', marker: '.ak-annotated', css: ANNOTATED_IMAGE_CSS },
13
+ ],
14
+ };
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/blocks/evidence/index.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAG1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,CAAC,MAAM,cAAc,GAAe;IACxC,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,CAAC,wBAAwB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,eAAe,CAAC;IAC9F,QAAQ,EAAE;QACR,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE;QAC5D,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,mBAAmB,EAAE;KAC/E;CACF,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Metric breakdown: how a total splits into parts. A stacked bar shows the
3
+ * shares at a glance and a list states each part's value and share, so the
4
+ * list alone carries everything the bar shows.
5
+ */
6
+ import type { BlockModule } from '../../registry/block-module.js';
7
+ export declare const BREAKDOWN_LIMITS: {
8
+ readonly minParts: 2;
9
+ readonly maxParts: 12;
10
+ };
11
+ export declare const PART_TONES: readonly ["neutral", "info", "success", "warning", "danger"];
12
+ /** Distinct series colours before the bar repeats them with a hatch. */
13
+ export declare const BREAKDOWN_SERIES = 6;
14
+ /**
15
+ * Whole-percent shares of `denominator` that never sum past what the parts
16
+ * cover: each share is floored, then the points left over go to the largest
17
+ * remainders (earlier parts win ties), so the bar and the list always agree
18
+ * and the bar never overflows.
19
+ */
20
+ export declare function quantizeShares(values: readonly number[], denominator: number): number[];
21
+ export declare const metricBreakdownBlock: BlockModule;
22
+ //# sourceMappingURL=metric-breakdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metric-breakdown.d.ts","sourceRoot":"","sources":["../../../src/blocks/evidence/metric-breakdown.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,gCAAgC,CAAC;AA6BhF,eAAO,MAAM,gBAAgB;;;CAAyC,CAAC;AACvE,eAAO,MAAM,UAAU,8DAA+D,CAAC;AACvF,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAUlC;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAevF;AA0JD,eAAO,MAAM,oBAAoB,EAAE,WA2ClC,CAAC"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Metric breakdown: how a total splits into parts. A stacked bar shows the
3
+ * shares at a glance and a list states each part's value and share, so the
4
+ * list alone carries everything the bar shows.
5
+ */
6
+ import { FORMAT_FIELDS } from '../../data/format-value.js';
7
+ import { pathIndex, pathKey } from '../../diagnostics.js';
8
+ import { isPlainObject } from '../../json.js';
9
+ import { anchorProps, enumStr, LABEL, list, num, OPTIONAL_TITLE, obj, semantic, str as strProp, } from '../../registry/define-helpers.js';
10
+ import { element, nodeAttributes, objectListProp, str, titleHeader, } from '../../render/block-helpers.js';
11
+ import { escapeText } from '../../render/escape.js';
12
+ import { checkFieldMap, dataBindingFailed, fieldMap, formatMeasure, formatSpecOf, projectRow, } from './evidence-helpers.js';
13
+ export const BREAKDOWN_LIMITS = { minParts: 2, maxParts: 12 };
14
+ export const PART_TONES = ['neutral', 'info', 'success', 'warning', 'danger'];
15
+ /** Distinct series colours before the bar repeats them with a hatch. */
16
+ export const BREAKDOWN_SERIES = 6;
17
+ const DATA_FIELDS = { label: 'label', value: 'value' };
18
+ /**
19
+ * Whole-percent shares of `denominator` that never sum past what the parts
20
+ * cover: each share is floored, then the points left over go to the largest
21
+ * remainders (earlier parts win ties), so the bar and the list always agree
22
+ * and the bar never overflows.
23
+ */
24
+ export function quantizeShares(values, denominator) {
25
+ if (denominator <= 0)
26
+ return values.map(() => 0);
27
+ const exact = values.map((value) => (Math.max(value, 0) / denominator) * 100);
28
+ const floors = exact.map((share) => Math.floor(share));
29
+ const covered = exact.reduce((sum, share) => sum + share, 0);
30
+ let spare = Math.min(100, Math.round(covered)) - floors.reduce((sum, share) => sum + share, 0);
31
+ const order = exact
32
+ .map((share, index) => ({ index, remainder: share - Math.floor(share) }))
33
+ .sort((a, b) => b.remainder - a.remainder || a.index - b.index);
34
+ for (const { index } of order) {
35
+ if (spare <= 0)
36
+ break;
37
+ floors[index] = (floors[index] ?? 0) + 1;
38
+ spare -= 1;
39
+ }
40
+ return floors;
41
+ }
42
+ function isMeasure(value) {
43
+ return typeof value === 'number' && Number.isFinite(value);
44
+ }
45
+ function readParts(node) {
46
+ if (node.data === undefined) {
47
+ return objectListProp(node, 'parts').flatMap((item) => isMeasure(item.value) && item.value >= 0
48
+ ? [{ label: str(item.label), value: item.value, tone: str(item.tone) }]
49
+ : []);
50
+ }
51
+ const map = fieldMap(node, DATA_FIELDS);
52
+ return node.data.rows.slice(0, BREAKDOWN_LIMITS.maxParts).flatMap((row) => {
53
+ const value = projectRow(row, map);
54
+ if (!isMeasure(value.value) || value.value < 0)
55
+ return [];
56
+ return [
57
+ { label: value.label === null ? '' : String(value.label), value: value.value, tone: '' },
58
+ ];
59
+ });
60
+ }
61
+ function authoredTotal(node) {
62
+ const total = node.props.total;
63
+ if (!isPlainObject(total) || !isMeasure(total.value))
64
+ return undefined;
65
+ return { label: str(total.label), value: total.value };
66
+ }
67
+ function checkData(node, { bag }) {
68
+ const data = node.data;
69
+ if (data === undefined)
70
+ return;
71
+ const map = fieldMap(node, DATA_FIELDS);
72
+ if (!checkFieldMap(node, data, map, [], bag))
73
+ return;
74
+ const path = pathKey(node.path, data.source === null ? 'data' : 'dataRef');
75
+ if (data.rows.length < BREAKDOWN_LIMITS.minParts ||
76
+ data.rows.length > BREAKDOWN_LIMITS.maxParts) {
77
+ bag.add({
78
+ code: data.rows.length > BREAKDOWN_LIMITS.maxParts
79
+ ? 'SPEC_BOUNDS_ERROR'
80
+ : 'SPEC_VALIDATION_ERROR',
81
+ path,
82
+ nodeId: node.id,
83
+ message: `metric-breakdown has ${data.rows.length} rows; it takes ${BREAKDOWN_LIMITS.minParts}-${BREAKDOWN_LIMITS.maxParts} parts`,
84
+ });
85
+ }
86
+ data.rows.forEach((row, index) => {
87
+ const value = projectRow(row, map).value;
88
+ if (isMeasure(value) && value >= 0)
89
+ return;
90
+ bag.add({
91
+ code: 'SPEC_VALIDATION_ERROR',
92
+ path: pathKey(pathKey(node.path, 'fields'), 'value'),
93
+ nodeId: node.id,
94
+ message: `row ${index}: value field "${map.value}" must hold a non-negative number`,
95
+ details: { row: index, field: map.value },
96
+ });
97
+ });
98
+ }
99
+ function check(node, context) {
100
+ const { bag } = context;
101
+ const parts = objectListProp(node, 'parts');
102
+ if (node.data !== undefined && parts.length > 0) {
103
+ bag.add({
104
+ code: 'SPEC_VALIDATION_ERROR',
105
+ path: pathKey(node.path, 'parts'),
106
+ nodeId: node.id,
107
+ message: 'use either parts or bound data (dataRef/data), not both',
108
+ });
109
+ return;
110
+ }
111
+ if (node.data === undefined && parts.length === 0) {
112
+ if (dataBindingFailed(node, bag))
113
+ return;
114
+ bag.add({
115
+ code: 'SPEC_VALIDATION_ERROR',
116
+ path: pathKey(node.path, 'parts'),
117
+ nodeId: node.id,
118
+ message: 'metric-breakdown needs parts, or dataRef/data with fields',
119
+ });
120
+ return;
121
+ }
122
+ parts.forEach((part, index) => {
123
+ if (!isMeasure(part.value) || part.value >= 0)
124
+ return;
125
+ bag.add({
126
+ code: 'SPEC_VALIDATION_ERROR',
127
+ path: pathKey(pathIndex(pathKey(node.path, 'parts'), index), 'value'),
128
+ nodeId: node.id,
129
+ message: 'a part value must not be negative',
130
+ });
131
+ });
132
+ checkData(node, context);
133
+ const total = authoredTotal(node);
134
+ if (total === undefined)
135
+ return;
136
+ const sum = readParts(node).reduce((acc, part) => acc + part.value, 0);
137
+ if (sum > total.value) {
138
+ bag.add({
139
+ code: 'SPEC_VALIDATION_ERROR',
140
+ severity: 'warning',
141
+ path: pathKey(pathKey(node.path, 'total'), 'value'),
142
+ nodeId: node.id,
143
+ message: `the parts sum to ${sum}, more than the total ${total.value}; shares use the sum`,
144
+ details: { sum, total: total.value },
145
+ });
146
+ }
147
+ }
148
+ function render(node) {
149
+ const format = formatSpecOf(node.props);
150
+ const parts = readParts(node);
151
+ const sum = parts.reduce((acc, part) => acc + part.value, 0);
152
+ const authored = authoredTotal(node);
153
+ const total = authored ?? { label: 'Total', value: sum };
154
+ const shares = quantizeShares(parts.map((part) => part.value), Math.max(total.value, sum));
155
+ const attributes = (part, index) => `data-series="${index % BREAKDOWN_SERIES}"${index >= BREAKDOWN_SERIES ? ' data-hatch' : ''}${part.tone === '' ? '' : ` data-tone="${part.tone}"`}`;
156
+ const bar = `<div class="ak-breakdown-bar" aria-hidden="true">${parts
157
+ .map((part, index) => `<span class="ak-breakdown-seg" data-ak-pct="${shares[index] ?? 0}" ${attributes(part, index)}></span>`)
158
+ .join('')}</div>`;
159
+ const items = parts
160
+ .map((part, index) => `<li ${attributes(part, index)}><span class="ak-breakdown-swatch" aria-hidden="true"></span><span class="ak-breakdown-label">${escapeText(part.label)}</span><span class="ak-breakdown-value">${escapeText(formatMeasure(part.value, format))}</span><span class="ak-breakdown-share">${shares[index] ?? 0}%</span></li>`)
161
+ .join('');
162
+ return element('section', nodeAttributes(node, { class: 'ak-block ak-breakdown' }), [
163
+ titleHeader(node),
164
+ `<p class="ak-breakdown-total"><span class="ak-label">${escapeText(total.label)}</span><strong>${escapeText(formatMeasure(total.value, format))}</strong></p>`,
165
+ bar,
166
+ `<ol class="ak-breakdown-list">${items}</ol>`,
167
+ ].join(''));
168
+ }
169
+ export const metricBreakdownBlock = {
170
+ definition: semantic({
171
+ type: 'metric-breakdown',
172
+ category: 'data',
173
+ tags: ['share', 'composition', 'stacked-bar', 'budget', 'evidence'],
174
+ useCases: ['cost breakdown', 'latency budget', 'share of total'],
175
+ purpose: 'A total split into parts, as a stacked bar plus a list with shares.',
176
+ summary: 'Metric breakdown: parts of a total as a stacked bar and a list with value and share %.',
177
+ props: {
178
+ title: OPTIONAL_TITLE,
179
+ total: obj({ label: LABEL, value: num({ required: true, min: 0 }) }, { description: 'Omit to use the sum of the parts.' }),
180
+ parts: list(obj({
181
+ label: LABEL,
182
+ value: num({ required: true, min: 0 }),
183
+ tone: enumStr(PART_TONES, { description: 'Status colour instead of a series colour.' }),
184
+ }), {
185
+ minItems: BREAKDOWN_LIMITS.minParts,
186
+ maxItems: BREAKDOWN_LIMITS.maxParts,
187
+ description: 'Omit when the rows come from dataRef or data.',
188
+ }),
189
+ fields: obj({
190
+ label: strProp({ maxLength: 64, default: DATA_FIELDS.label }),
191
+ value: strProp({ maxLength: 64, default: DATA_FIELDS.value }),
192
+ }, { description: 'Data fields for the part label and value.' }),
193
+ ...FORMAT_FIELDS,
194
+ ...anchorProps,
195
+ },
196
+ data: { required: false, description: 'Rows with a label and a non-negative value field.' },
197
+ runtimeFeatures: ['evidence'],
198
+ a11y: 'The bar is decorative; the list states every part, its value and its share in text.',
199
+ }),
200
+ render,
201
+ check,
202
+ };
203
+ //# sourceMappingURL=metric-breakdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metric-breakdown.js","sourceRoot":"","sources":["../../../src/blocks/evidence/metric-breakdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * References: a numbered source list with a stable anchor per entry, so any
3
+ * link on the page can point at `#ref-<id>`. Links are emitted as plain
4
+ * anchors; the compiler never fetches them.
5
+ */
6
+ import type { BlockModule } from '../../registry/block-module.js';
7
+ export declare const REFERENCE_LIMITS: {
8
+ readonly maxItems: 60;
9
+ };
10
+ /** The element id of a reference entry: the anchor other text links to. */
11
+ export declare function referenceAnchor(id: string): string;
12
+ export declare const referencesBlock: BlockModule;
13
+ //# sourceMappingURL=references.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../../../src/blocks/evidence/references.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,gCAAgC,CAAC;AAsBhF,eAAO,MAAM,gBAAgB;;CAA4B,CAAC;AAE1D,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAElD;AAmED,eAAO,MAAM,eAAe,EAAE,WA8B7B,CAAC"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * References: a numbered source list with a stable anchor per entry, so any
3
+ * link on the page can point at `#ref-<id>`. Links are emitted as plain
4
+ * anchors; the compiler never fetches them.
5
+ */
6
+ import { pathIndex, pathKey } from '../../diagnostics.js';
7
+ import { anchorProps, idProp, itemsOf, LABEL, num, OPTIONAL_TITLE, semantic, str as strProp, txt, urlProp, } from '../../registry/define-helpers.js';
8
+ import { element, nodeAttributes, objectListProp, str, titleHeader, } from '../../render/block-helpers.js';
9
+ import { escapeAttribute, escapeInlineText, escapeText, escapeUrl } from '../../render/escape.js';
10
+ export const REFERENCE_LIMITS = { maxItems: 60 };
11
+ /** The element id of a reference entry: the anchor other text links to. */
12
+ export function referenceAnchor(id) {
13
+ return `ref-${id}`;
14
+ }
15
+ function referenceIds(node) {
16
+ return objectListProp(node, 'items').map((item) => str(item.id));
17
+ }
18
+ /**
19
+ * Entry ids must be unique across every references block on the page, because
20
+ * each becomes a document-level anchor. The first occurrence wins; each later
21
+ * one is reported where it is written.
22
+ */
23
+ function check(node, { bag, byId }) {
24
+ const seen = new Map();
25
+ for (const other of byId.values()) {
26
+ if (other === node)
27
+ break;
28
+ if (other.type !== 'references')
29
+ continue;
30
+ for (const id of referenceIds(other))
31
+ if (!seen.has(id))
32
+ seen.set(id, other.id);
33
+ }
34
+ referenceIds(node).forEach((id, index) => {
35
+ if (id === '')
36
+ return;
37
+ const owner = seen.get(id);
38
+ if (owner !== undefined) {
39
+ bag.add({
40
+ code: 'SPEC_VALIDATION_ERROR',
41
+ path: pathKey(pathIndex(pathKey(node.path, 'items'), index), 'id'),
42
+ nodeId: node.id,
43
+ message: `reference id "${id}" is already used${owner === node.id ? ' in this list' : ` by block "${owner}"`}; anchors must be unique`,
44
+ details: { id, anchor: referenceAnchor(id) },
45
+ });
46
+ return;
47
+ }
48
+ seen.set(id, node.id);
49
+ });
50
+ }
51
+ function entry(item) {
52
+ const title = escapeText(str(item.title));
53
+ const href = str(item.href);
54
+ const heading = href === ''
55
+ ? `<cite>${title}</cite>`
56
+ : `<cite><a href="${escapeAttribute(escapeUrl(href))}" rel="noreferrer noopener">${title}</a></cite>`;
57
+ const meta = [
58
+ str(item.authors),
59
+ str(item.source),
60
+ typeof item.year === 'number' ? String(item.year) : '',
61
+ ].filter((part) => part !== '');
62
+ const note = str(item.note);
63
+ return [
64
+ `<li id="${escapeAttribute(referenceAnchor(str(item.id)))}" class="ak-ref">`,
65
+ `<p class="ak-ref-title">${heading}</p>`,
66
+ meta.length === 0 ? '' : `<p class="ak-ref-meta">${escapeText(meta.join(' · '))}</p>`,
67
+ note === '' ? '' : `<p class="ak-ref-note">${escapeInlineText(note)}</p>`,
68
+ '</li>',
69
+ ].join('');
70
+ }
71
+ function render(node) {
72
+ return element('section', nodeAttributes(node, { class: 'ak-block ak-refs' }), `${titleHeader(node)}<ol class="ak-ref-list">${objectListProp(node, 'items')
73
+ .map(entry)
74
+ .join('')}</ol>`);
75
+ }
76
+ export const referencesBlock = {
77
+ definition: semantic({
78
+ type: 'references',
79
+ category: 'content',
80
+ tags: ['citations', 'sources', 'bibliography', 'evidence'],
81
+ useCases: ['research report sources', 'benchmark evidence'],
82
+ purpose: 'Numbered sources with stable anchors (#ref-<id>).',
83
+ summary: 'References: numbered citations with title, authors, source, year, link and note; anchor #ref-<id>.',
84
+ props: {
85
+ title: OPTIONAL_TITLE,
86
+ items: itemsOf({
87
+ id: { ...idProp('Anchor id; the entry is reachable at #ref-<id>.'), required: true },
88
+ title: LABEL,
89
+ href: urlProp({ description: 'Link to the source; never fetched.' }),
90
+ authors: strProp({ maxLength: 200 }),
91
+ source: strProp({ maxLength: 200, description: 'Publisher, venue or site.' }),
92
+ year: num({ integer: true, min: 1, max: 9999 }),
93
+ note: txt({ maxLength: 600 }),
94
+ }, { maxItems: REFERENCE_LIMITS.maxItems }),
95
+ ...anchorProps,
96
+ },
97
+ runtimeFeatures: ['evidence'],
98
+ a11y: 'An ordered list of <cite> titles; each entry has a stable id, so in-page links land on it.',
99
+ }),
100
+ render,
101
+ check,
102
+ };
103
+ //# sourceMappingURL=references.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"references.js","sourceRoot":"","sources":["../../../src/blocks/evidence/references.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Block groups, in their fixed registration order. The order decides where a
3
+ * group's blocks appear in the catalog and where its feature CSS and runtime
4
+ * parts are emitted, so it never depends on discovery.
5
+ */
6
+ import type { BlockGroup } from '../registry/block-module.js';
7
+ export declare const BLOCK_GROUPS: readonly BlockGroup[];
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/blocks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAU9D,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAS7C,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Block groups, in their fixed registration order. The order decides where a
3
+ * group's blocks appear in the catalog and where its feature CSS and runtime
4
+ * parts are emitted, so it never depends on discovery.
5
+ */
6
+ import { CHART_GROUP } from './chart/index.js';
7
+ import { COMPOSITION_GROUP } from './composition/index.js';
8
+ import { CONTROLS_GROUP } from './controls/index.js';
9
+ import { DATA_TABLE_GROUP } from './data-table/index.js';
10
+ import { ENGINEERING_GROUP } from './engineering/index.js';
11
+ import { EVIDENCE_GROUP } from './evidence/index.js';
12
+ import { LAYOUT_GROUP } from './layout/index.js';
13
+ import { PRODUCT_GROUP } from './product/index.js';
14
+ export const BLOCK_GROUPS = [
15
+ COMPOSITION_GROUP,
16
+ LAYOUT_GROUP,
17
+ DATA_TABLE_GROUP,
18
+ CHART_GROUP,
19
+ ENGINEERING_GROUP,
20
+ EVIDENCE_GROUP,
21
+ PRODUCT_GROUP,
22
+ CONTROLS_GROUP,
23
+ ];
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/blocks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD,iBAAiB;IACjB,YAAY;IACZ,gBAAgB;IAChB,WAAW;IACX,iBAAiB;IACjB,cAAc;IACd,aAAa;IACb,cAAc;CACf,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** Grid item block: explicit placement of child blocks inside a 12-track grid. */
2
+ import type { BlockModule } from '../../registry/block-module.js';
3
+ export declare const gridItemBlock: BlockModule;
4
+ //# sourceMappingURL=grid-item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-item.d.ts","sourceRoot":"","sources":["../../../src/blocks/layout/grid-item.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAGlF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAalE,eAAO,MAAM,aAAa,EAAE,WAyD3B,CAAC"}
@@ -0,0 +1,65 @@
1
+ /** Grid item block: explicit placement of child blocks inside a 12-track grid. */
2
+ import { pathKey } from '../../diagnostics.js';
3
+ import { define, enumStr, num } from '../../registry/define-helpers.js';
4
+ import { element, nodeAttributes } from '../../render/block-helpers.js';
5
+ import { defaultTrackSpan } from './grid.js';
6
+ import { GRID_TRACKS, LAYOUT_TRACKS_FEATURE } from './layout-styles.js';
7
+ const track = (description) => num({ integer: true, min: 1, max: GRID_TRACKS, description });
8
+ /** An integer prop as an attribute value, or undefined when unset. */
9
+ const attribute = (value) => typeof value === 'number' ? String(value) : undefined;
10
+ export const gridItemBlock = {
11
+ definition: define({
12
+ type: 'grid-item',
13
+ category: 'layout',
14
+ tags: ['span', 'columns', 'responsive', 'dashboard'],
15
+ useCases: ['8/4 dashboard split', 'wide chart beside a narrow list'],
16
+ parents: ['grid'],
17
+ purpose: 'Places its child blocks across tracks of a 12-track grid.',
18
+ summary: 'Grid item: spans 1–12 tracks of its grid, with tablet and mobile spans.',
19
+ runtimeFeatures: [LAYOUT_TRACKS_FEATURE],
20
+ props: {
21
+ span: track('Tracks of 12 to span. Default 12 / the grid columns.'),
22
+ tabletSpan: track('Span at 768px and below. Default: span.'),
23
+ mobileSpan: track('Span at 480px and below. Default 12 (full width).'),
24
+ rowSpan: num({
25
+ integer: true,
26
+ min: 1,
27
+ max: 4,
28
+ description: 'Rows to span; wide screens only.',
29
+ }),
30
+ start: track('First track; wide screens only.'),
31
+ align: enumStr(['start', 'center', 'end', 'stretch']),
32
+ },
33
+ slots: { children: { accepts: '*', min: 1, max: 40 } },
34
+ }),
35
+ render: (node, context) => {
36
+ const parent = node.parentId === null ? undefined : context.byId(node.parentId);
37
+ const span = typeof node.props.span === 'number' ? node.props.span : defaultTrackSpan(parent);
38
+ return element('div', nodeAttributes(node, {
39
+ class: 'ak-block ak-grid-item',
40
+ 'data-ak-span': String(span),
41
+ 'data-ak-tablet-span': attribute(node.props.tabletSpan),
42
+ 'data-ak-mobile-span': attribute(node.props.mobileSpan),
43
+ 'data-ak-row-span': attribute(node.props.rowSpan),
44
+ 'data-ak-start': attribute(node.props.start),
45
+ 'data-align': typeof node.props.align === 'string' ? node.props.align : undefined,
46
+ }), context.renderChildren(node));
47
+ },
48
+ check: (node, { bag, byId }) => {
49
+ const start = node.props.start;
50
+ if (typeof start !== 'number')
51
+ return;
52
+ const parent = node.parentId === null ? undefined : byId.get(node.parentId);
53
+ const span = typeof node.props.span === 'number' ? node.props.span : defaultTrackSpan(parent);
54
+ if (start + span - 1 > GRID_TRACKS) {
55
+ bag.add({
56
+ code: 'SPEC_VALIDATION_ERROR',
57
+ path: pathKey(node.path, 'start'),
58
+ nodeId: node.id,
59
+ message: `"start: ${start}" with a span of ${span} runs past track ${GRID_TRACKS}`,
60
+ details: { start, span, maxStart: GRID_TRACKS - span + 1 },
61
+ });
62
+ }
63
+ },
64
+ };
65
+ //# sourceMappingURL=grid-item.js.map