@bestagentkits/render 0.1.1-next.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (635) hide show
  1. package/CHANGELOG.md +209 -1
  2. package/README.md +324 -44
  3. package/assets/fonts/bricolage-grotesque/OFL.txt +93 -0
  4. package/assets/fonts/fraunces/OFL.txt +93 -0
  5. package/assets/fonts/geist/OFL.txt +93 -0
  6. package/assets/fonts/inter-tight/OFL.txt +93 -0
  7. package/assets/fonts/jetbrains-mono/OFL.txt +93 -0
  8. package/assets/fonts/plus-jakarta-sans/OFL.txt +93 -0
  9. package/dist/blocks/chart/chart-check-kind-rules.d.ts +10 -0
  10. package/dist/blocks/chart/chart-check-kind-rules.d.ts.map +1 -0
  11. package/dist/blocks/chart/chart-check-kind-rules.js +151 -0
  12. package/dist/blocks/chart/chart-check-kind-rules.js.map +1 -0
  13. package/dist/blocks/chart/chart-check.d.ts +15 -0
  14. package/dist/blocks/chart/chart-check.d.ts.map +1 -0
  15. package/dist/blocks/chart/chart-check.js +196 -0
  16. package/dist/blocks/chart/chart-check.js.map +1 -0
  17. package/dist/blocks/chart/chart-encoding-schema.d.ts +7 -0
  18. package/dist/blocks/chart/chart-encoding-schema.d.ts.map +1 -0
  19. package/dist/blocks/chart/chart-encoding-schema.js +39 -0
  20. package/dist/blocks/chart/chart-encoding-schema.js.map +1 -0
  21. package/dist/blocks/chart/chart-encodings.d.ts +29 -0
  22. package/dist/blocks/chart/chart-encodings.d.ts.map +1 -0
  23. package/dist/blocks/chart/chart-encodings.js +59 -0
  24. package/dist/blocks/chart/chart-encodings.js.map +1 -0
  25. package/dist/blocks/chart/chart-kinds.d.ts +18 -0
  26. package/dist/blocks/chart/chart-kinds.d.ts.map +1 -0
  27. package/dist/blocks/chart/chart-kinds.js +60 -0
  28. package/dist/blocks/chart/chart-kinds.js.map +1 -0
  29. package/dist/blocks/chart/chart-model-rows.d.ts +23 -0
  30. package/dist/blocks/chart/chart-model-rows.d.ts.map +1 -0
  31. package/dist/blocks/chart/chart-model-rows.js +153 -0
  32. package/dist/blocks/chart/chart-model-rows.js.map +1 -0
  33. package/dist/blocks/chart/chart-model.d.ts +17 -0
  34. package/dist/blocks/chart/chart-model.d.ts.map +1 -0
  35. package/dist/blocks/chart/chart-model.js +131 -0
  36. package/dist/blocks/chart/chart-model.js.map +1 -0
  37. package/dist/blocks/chart/chart-styles.d.ts +3 -0
  38. package/dist/blocks/chart/chart-styles.d.ts.map +1 -0
  39. package/dist/blocks/chart/chart-styles.js +76 -0
  40. package/dist/blocks/chart/chart-styles.js.map +1 -0
  41. package/dist/blocks/chart/chart.d.ts +12 -0
  42. package/dist/blocks/chart/chart.d.ts.map +1 -0
  43. package/dist/blocks/chart/chart.js +73 -0
  44. package/dist/blocks/chart/chart.js.map +1 -0
  45. package/dist/blocks/chart/index.d.ts +4 -0
  46. package/dist/blocks/chart/index.d.ts.map +1 -0
  47. package/dist/blocks/chart/index.js +8 -0
  48. package/dist/blocks/chart/index.js.map +1 -0
  49. package/dist/blocks/composition/accordion.d.ts +4 -0
  50. package/dist/blocks/composition/accordion.d.ts.map +1 -0
  51. package/dist/blocks/composition/accordion.js +45 -0
  52. package/dist/blocks/composition/accordion.js.map +1 -0
  53. package/dist/blocks/composition/bento.d.ts +4 -0
  54. package/dist/blocks/composition/bento.d.ts.map +1 -0
  55. package/dist/blocks/composition/bento.js +91 -0
  56. package/dist/blocks/composition/bento.js.map +1 -0
  57. package/dist/blocks/composition/carousel.d.ts +4 -0
  58. package/dist/blocks/composition/carousel.d.ts.map +1 -0
  59. package/dist/blocks/composition/carousel.js +51 -0
  60. package/dist/blocks/composition/carousel.js.map +1 -0
  61. package/dist/blocks/composition/composition-runtime.d.ts +14 -0
  62. package/dist/blocks/composition/composition-runtime.d.ts.map +1 -0
  63. package/dist/blocks/composition/composition-runtime.js +136 -0
  64. package/dist/blocks/composition/composition-runtime.js.map +1 -0
  65. package/dist/blocks/composition/composition-styles.d.ts +10 -0
  66. package/dist/blocks/composition/composition-styles.d.ts.map +1 -0
  67. package/dist/blocks/composition/composition-styles.js +80 -0
  68. package/dist/blocks/composition/composition-styles.js.map +1 -0
  69. package/dist/blocks/composition/index.d.ts +4 -0
  70. package/dist/blocks/composition/index.d.ts.map +1 -0
  71. package/dist/blocks/composition/index.js +11 -0
  72. package/dist/blocks/composition/index.js.map +1 -0
  73. package/dist/blocks/composition/nestable-blocks.d.ts +37 -0
  74. package/dist/blocks/composition/nestable-blocks.d.ts.map +1 -0
  75. package/dist/blocks/composition/nestable-blocks.js +92 -0
  76. package/dist/blocks/composition/nestable-blocks.js.map +1 -0
  77. package/dist/blocks/composition/tabs.d.ts +4 -0
  78. package/dist/blocks/composition/tabs.d.ts.map +1 -0
  79. package/dist/blocks/composition/tabs.js +48 -0
  80. package/dist/blocks/composition/tabs.js.map +1 -0
  81. package/dist/blocks/controls/checkbox.d.ts +12 -0
  82. package/dist/blocks/controls/checkbox.d.ts.map +1 -0
  83. package/dist/blocks/controls/checkbox.js +43 -0
  84. package/dist/blocks/controls/checkbox.js.map +1 -0
  85. package/dist/blocks/controls/choice-options.d.ts +24 -0
  86. package/dist/blocks/controls/choice-options.d.ts.map +1 -0
  87. package/dist/blocks/controls/choice-options.js +117 -0
  88. package/dist/blocks/controls/choice-options.js.map +1 -0
  89. package/dist/blocks/controls/control-shared.d.ts +66 -0
  90. package/dist/blocks/controls/control-shared.d.ts.map +1 -0
  91. package/dist/blocks/controls/control-shared.js +241 -0
  92. package/dist/blocks/controls/control-shared.js.map +1 -0
  93. package/dist/blocks/controls/controls-runtime.d.ts +17 -0
  94. package/dist/blocks/controls/controls-runtime.d.ts.map +1 -0
  95. package/dist/blocks/controls/controls-runtime.js +180 -0
  96. package/dist/blocks/controls/controls-runtime.js.map +1 -0
  97. package/dist/blocks/controls/controls-styles.d.ts +14 -0
  98. package/dist/blocks/controls/controls-styles.d.ts.map +1 -0
  99. package/dist/blocks/controls/controls-styles.js +54 -0
  100. package/dist/blocks/controls/controls-styles.js.map +1 -0
  101. package/dist/blocks/controls/date-input.d.ts +6 -0
  102. package/dist/blocks/controls/date-input.d.ts.map +1 -0
  103. package/dist/blocks/controls/date-input.js +58 -0
  104. package/dist/blocks/controls/date-input.js.map +1 -0
  105. package/dist/blocks/controls/field-input.d.ts +10 -0
  106. package/dist/blocks/controls/field-input.d.ts.map +1 -0
  107. package/dist/blocks/controls/field-input.js +20 -0
  108. package/dist/blocks/controls/field-input.js.map +1 -0
  109. package/dist/blocks/controls/filter-bar.d.ts +11 -0
  110. package/dist/blocks/controls/filter-bar.d.ts.map +1 -0
  111. package/dist/blocks/controls/filter-bar.js +115 -0
  112. package/dist/blocks/controls/filter-bar.js.map +1 -0
  113. package/dist/blocks/controls/index.d.ts +4 -0
  114. package/dist/blocks/controls/index.d.ts.map +1 -0
  115. package/dist/blocks/controls/index.js +41 -0
  116. package/dist/blocks/controls/index.js.map +1 -0
  117. package/dist/blocks/controls/number-input.d.ts +4 -0
  118. package/dist/blocks/controls/number-input.d.ts.map +1 -0
  119. package/dist/blocks/controls/number-input.js +62 -0
  120. package/dist/blocks/controls/number-input.js.map +1 -0
  121. package/dist/blocks/controls/radio-group.d.ts +4 -0
  122. package/dist/blocks/controls/radio-group.d.ts.map +1 -0
  123. package/dist/blocks/controls/radio-group.js +56 -0
  124. package/dist/blocks/controls/radio-group.js.map +1 -0
  125. package/dist/blocks/controls/select.d.ts +4 -0
  126. package/dist/blocks/controls/select.d.ts.map +1 -0
  127. package/dist/blocks/controls/select.js +49 -0
  128. package/dist/blocks/controls/select.js.map +1 -0
  129. package/dist/blocks/controls/switch.d.ts +4 -0
  130. package/dist/blocks/controls/switch.d.ts.map +1 -0
  131. package/dist/blocks/controls/switch.js +22 -0
  132. package/dist/blocks/controls/switch.js.map +1 -0
  133. package/dist/blocks/controls/text-input.d.ts +4 -0
  134. package/dist/blocks/controls/text-input.d.ts.map +1 -0
  135. package/dist/blocks/controls/text-input.js +42 -0
  136. package/dist/blocks/controls/text-input.js.map +1 -0
  137. package/dist/blocks/data-table/data-table-cells.d.ts +26 -0
  138. package/dist/blocks/data-table/data-table-cells.d.ts.map +1 -0
  139. package/dist/blocks/data-table/data-table-cells.js +154 -0
  140. package/dist/blocks/data-table/data-table-cells.js.map +1 -0
  141. package/dist/blocks/data-table/data-table-check.d.ts +10 -0
  142. package/dist/blocks/data-table/data-table-check.d.ts.map +1 -0
  143. package/dist/blocks/data-table/data-table-check.js +99 -0
  144. package/dist/blocks/data-table/data-table-check.js.map +1 -0
  145. package/dist/blocks/data-table/data-table-columns.d.ts +41 -0
  146. package/dist/blocks/data-table/data-table-columns.d.ts.map +1 -0
  147. package/dist/blocks/data-table/data-table-columns.js +155 -0
  148. package/dist/blocks/data-table/data-table-columns.js.map +1 -0
  149. package/dist/blocks/data-table/data-table-runtime.d.ts +15 -0
  150. package/dist/blocks/data-table/data-table-runtime.d.ts.map +1 -0
  151. package/dist/blocks/data-table/data-table-runtime.js +106 -0
  152. package/dist/blocks/data-table/data-table-runtime.js.map +1 -0
  153. package/dist/blocks/data-table/data-table-styles.d.ts +11 -0
  154. package/dist/blocks/data-table/data-table-styles.d.ts.map +1 -0
  155. package/dist/blocks/data-table/data-table-styles.js +74 -0
  156. package/dist/blocks/data-table/data-table-styles.js.map +1 -0
  157. package/dist/blocks/data-table/data-table.d.ts +17 -0
  158. package/dist/blocks/data-table/data-table.d.ts.map +1 -0
  159. package/dist/blocks/data-table/data-table.js +159 -0
  160. package/dist/blocks/data-table/data-table.js.map +1 -0
  161. package/dist/blocks/data-table/index.d.ts +4 -0
  162. package/dist/blocks/data-table/index.d.ts.map +1 -0
  163. package/dist/blocks/data-table/index.js +18 -0
  164. package/dist/blocks/data-table/index.js.map +1 -0
  165. package/dist/blocks/engineering/api-endpoint.d.ts +12 -0
  166. package/dist/blocks/engineering/api-endpoint.d.ts.map +1 -0
  167. package/dist/blocks/engineering/api-endpoint.js +174 -0
  168. package/dist/blocks/engineering/api-endpoint.js.map +1 -0
  169. package/dist/blocks/engineering/engineering-helpers.d.ts +49 -0
  170. package/dist/blocks/engineering/engineering-helpers.d.ts.map +1 -0
  171. package/dist/blocks/engineering/engineering-helpers.js +156 -0
  172. package/dist/blocks/engineering/engineering-helpers.js.map +1 -0
  173. package/dist/blocks/engineering/engineering-styles.d.ts +12 -0
  174. package/dist/blocks/engineering/engineering-styles.d.ts.map +1 -0
  175. package/dist/blocks/engineering/engineering-styles.js +174 -0
  176. package/dist/blocks/engineering/engineering-styles.js.map +1 -0
  177. package/dist/blocks/engineering/index.d.ts +4 -0
  178. package/dist/blocks/engineering/index.d.ts.map +1 -0
  179. package/dist/blocks/engineering/index.js +30 -0
  180. package/dist/blocks/engineering/index.js.map +1 -0
  181. package/dist/blocks/engineering/kanban.d.ts +11 -0
  182. package/dist/blocks/engineering/kanban.d.ts.map +1 -0
  183. package/dist/blocks/engineering/kanban.js +162 -0
  184. package/dist/blocks/engineering/kanban.js.map +1 -0
  185. package/dist/blocks/engineering/log-viewer.d.ts +14 -0
  186. package/dist/blocks/engineering/log-viewer.d.ts.map +1 -0
  187. package/dist/blocks/engineering/log-viewer.js +158 -0
  188. package/dist/blocks/engineering/log-viewer.js.map +1 -0
  189. package/dist/blocks/engineering/roadmap.d.ts +13 -0
  190. package/dist/blocks/engineering/roadmap.d.ts.map +1 -0
  191. package/dist/blocks/engineering/roadmap.js +197 -0
  192. package/dist/blocks/engineering/roadmap.js.map +1 -0
  193. package/dist/blocks/engineering/schema-viewer.d.ts +25 -0
  194. package/dist/blocks/engineering/schema-viewer.d.ts.map +1 -0
  195. package/dist/blocks/engineering/schema-viewer.js +124 -0
  196. package/dist/blocks/engineering/schema-viewer.js.map +1 -0
  197. package/dist/blocks/engineering/test-results.d.ts +12 -0
  198. package/dist/blocks/engineering/test-results.d.ts.map +1 -0
  199. package/dist/blocks/engineering/test-results.js +180 -0
  200. package/dist/blocks/engineering/test-results.js.map +1 -0
  201. package/dist/blocks/evidence/annotated-image.d.ts +15 -0
  202. package/dist/blocks/evidence/annotated-image.d.ts.map +1 -0
  203. package/dist/blocks/evidence/annotated-image.js +99 -0
  204. package/dist/blocks/evidence/annotated-image.js.map +1 -0
  205. package/dist/blocks/evidence/benchmark-comparison.d.ts +11 -0
  206. package/dist/blocks/evidence/benchmark-comparison.d.ts.map +1 -0
  207. package/dist/blocks/evidence/benchmark-comparison.js +262 -0
  208. package/dist/blocks/evidence/benchmark-comparison.js.map +1 -0
  209. package/dist/blocks/evidence/benchmark-verdict.d.ts +26 -0
  210. package/dist/blocks/evidence/benchmark-verdict.d.ts.map +1 -0
  211. package/dist/blocks/evidence/benchmark-verdict.js +31 -0
  212. package/dist/blocks/evidence/benchmark-verdict.js.map +1 -0
  213. package/dist/blocks/evidence/evidence-helpers.d.ts +39 -0
  214. package/dist/blocks/evidence/evidence-helpers.d.ts.map +1 -0
  215. package/dist/blocks/evidence/evidence-helpers.js +87 -0
  216. package/dist/blocks/evidence/evidence-helpers.js.map +1 -0
  217. package/dist/blocks/evidence/evidence-styles.d.ts +12 -0
  218. package/dist/blocks/evidence/evidence-styles.d.ts.map +1 -0
  219. package/dist/blocks/evidence/evidence-styles.js +88 -0
  220. package/dist/blocks/evidence/evidence-styles.js.map +1 -0
  221. package/dist/blocks/evidence/index.d.ts +4 -0
  222. package/dist/blocks/evidence/index.d.ts.map +1 -0
  223. package/dist/blocks/evidence/index.js +15 -0
  224. package/dist/blocks/evidence/index.js.map +1 -0
  225. package/dist/blocks/evidence/metric-breakdown.d.ts +22 -0
  226. package/dist/blocks/evidence/metric-breakdown.d.ts.map +1 -0
  227. package/dist/blocks/evidence/metric-breakdown.js +203 -0
  228. package/dist/blocks/evidence/metric-breakdown.js.map +1 -0
  229. package/dist/blocks/evidence/references.d.ts +13 -0
  230. package/dist/blocks/evidence/references.d.ts.map +1 -0
  231. package/dist/blocks/evidence/references.js +103 -0
  232. package/dist/blocks/evidence/references.js.map +1 -0
  233. package/dist/blocks/index.d.ts +8 -0
  234. package/dist/blocks/index.d.ts.map +1 -0
  235. package/dist/blocks/index.js +24 -0
  236. package/dist/blocks/index.js.map +1 -0
  237. package/dist/blocks/layout/grid-item.d.ts +4 -0
  238. package/dist/blocks/layout/grid-item.d.ts.map +1 -0
  239. package/dist/blocks/layout/grid-item.js +65 -0
  240. package/dist/blocks/layout/grid-item.js.map +1 -0
  241. package/dist/blocks/layout/grid.d.ts +9 -0
  242. package/dist/blocks/layout/grid.d.ts.map +1 -0
  243. package/dist/blocks/layout/grid.js +99 -0
  244. package/dist/blocks/layout/grid.js.map +1 -0
  245. package/dist/blocks/layout/index.d.ts +4 -0
  246. package/dist/blocks/layout/index.d.ts.map +1 -0
  247. package/dist/blocks/layout/index.js +23 -0
  248. package/dist/blocks/layout/index.js.map +1 -0
  249. package/dist/blocks/layout/layout-styles.d.ts +40 -0
  250. package/dist/blocks/layout/layout-styles.d.ts.map +1 -0
  251. package/dist/blocks/layout/layout-styles.js +110 -0
  252. package/dist/blocks/layout/layout-styles.js.map +1 -0
  253. package/dist/blocks/layout/main-aside.d.ts +4 -0
  254. package/dist/blocks/layout/main-aside.d.ts.map +1 -0
  255. package/dist/blocks/layout/main-aside.js +21 -0
  256. package/dist/blocks/layout/main-aside.js.map +1 -0
  257. package/dist/blocks/layout/rail-layout.d.ts +4 -0
  258. package/dist/blocks/layout/rail-layout.d.ts.map +1 -0
  259. package/dist/blocks/layout/rail-layout.js +33 -0
  260. package/dist/blocks/layout/rail-layout.js.map +1 -0
  261. package/dist/blocks/layout/semantic-layout-parts.d.ts +14 -0
  262. package/dist/blocks/layout/semantic-layout-parts.d.ts.map +1 -0
  263. package/dist/blocks/layout/semantic-layout-parts.js +9 -0
  264. package/dist/blocks/layout/semantic-layout-parts.js.map +1 -0
  265. package/dist/blocks/layout/sidebar-layout.d.ts +4 -0
  266. package/dist/blocks/layout/sidebar-layout.d.ts.map +1 -0
  267. package/dist/blocks/layout/sidebar-layout.js +30 -0
  268. package/dist/blocks/layout/sidebar-layout.js.map +1 -0
  269. package/dist/blocks/layout/split.d.ts +4 -0
  270. package/dist/blocks/layout/split.d.ts.map +1 -0
  271. package/dist/blocks/layout/split.js +23 -0
  272. package/dist/blocks/layout/split.js.map +1 -0
  273. package/dist/blocks/layout/stack.d.ts +4 -0
  274. package/dist/blocks/layout/stack.d.ts.map +1 -0
  275. package/dist/blocks/layout/stack.js +36 -0
  276. package/dist/blocks/layout/stack.js.map +1 -0
  277. package/dist/blocks/product/calendar-dates.d.ts +59 -0
  278. package/dist/blocks/product/calendar-dates.d.ts.map +1 -0
  279. package/dist/blocks/product/calendar-dates.js +100 -0
  280. package/dist/blocks/product/calendar-dates.js.map +1 -0
  281. package/dist/blocks/product/calendar.d.ts +12 -0
  282. package/dist/blocks/product/calendar.d.ts.map +1 -0
  283. package/dist/blocks/product/calendar.js +125 -0
  284. package/dist/blocks/product/calendar.js.map +1 -0
  285. package/dist/blocks/product/feature-matrix.d.ts +4 -0
  286. package/dist/blocks/product/feature-matrix.d.ts.map +1 -0
  287. package/dist/blocks/product/feature-matrix.js +72 -0
  288. package/dist/blocks/product/feature-matrix.js.map +1 -0
  289. package/dist/blocks/product/gallery.d.ts +14 -0
  290. package/dist/blocks/product/gallery.d.ts.map +1 -0
  291. package/dist/blocks/product/gallery.js +86 -0
  292. package/dist/blocks/product/gallery.js.map +1 -0
  293. package/dist/blocks/product/index.d.ts +4 -0
  294. package/dist/blocks/product/index.d.ts.map +1 -0
  295. package/dist/blocks/product/index.js +40 -0
  296. package/dist/blocks/product/index.js.map +1 -0
  297. package/dist/blocks/product/logo-cloud.d.ts +4 -0
  298. package/dist/blocks/product/logo-cloud.d.ts.map +1 -0
  299. package/dist/blocks/product/logo-cloud.js +42 -0
  300. package/dist/blocks/product/logo-cloud.js.map +1 -0
  301. package/dist/blocks/product/people.d.ts +4 -0
  302. package/dist/blocks/product/people.d.ts.map +1 -0
  303. package/dist/blocks/product/people.js +53 -0
  304. package/dist/blocks/product/people.js.map +1 -0
  305. package/dist/blocks/product/pricing.d.ts +4 -0
  306. package/dist/blocks/product/pricing.d.ts.map +1 -0
  307. package/dist/blocks/product/pricing.js +86 -0
  308. package/dist/blocks/product/pricing.js.map +1 -0
  309. package/dist/blocks/product/product-helpers.d.ts +22 -0
  310. package/dist/blocks/product/product-helpers.d.ts.map +1 -0
  311. package/dist/blocks/product/product-helpers.js +48 -0
  312. package/dist/blocks/product/product-helpers.js.map +1 -0
  313. package/dist/blocks/product/product-runtime.d.ts +15 -0
  314. package/dist/blocks/product/product-runtime.d.ts.map +1 -0
  315. package/dist/blocks/product/product-runtime.js +97 -0
  316. package/dist/blocks/product/product-runtime.js.map +1 -0
  317. package/dist/blocks/product/product-styles.d.ts +14 -0
  318. package/dist/blocks/product/product-styles.d.ts.map +1 -0
  319. package/dist/blocks/product/product-styles.js +120 -0
  320. package/dist/blocks/product/product-styles.js.map +1 -0
  321. package/dist/blocks/product/testimonial.d.ts +8 -0
  322. package/dist/blocks/product/testimonial.d.ts.map +1 -0
  323. package/dist/blocks/product/testimonial.js +67 -0
  324. package/dist/blocks/product/testimonial.js.map +1 -0
  325. package/dist/cli.d.ts +2 -0
  326. package/dist/cli.d.ts.map +1 -1
  327. package/dist/cli.js +193 -39
  328. package/dist/cli.js.map +1 -1
  329. package/dist/data/data-json-schema.d.ts +9 -0
  330. package/dist/data/data-json-schema.d.ts.map +1 -0
  331. package/dist/data/data-json-schema.js +48 -0
  332. package/dist/data/data-json-schema.js.map +1 -0
  333. package/dist/data/dataset-types.d.ts +47 -0
  334. package/dist/data/dataset-types.d.ts.map +1 -0
  335. package/dist/data/dataset-types.js +49 -0
  336. package/dist/data/dataset-types.js.map +1 -0
  337. package/dist/data/format-value.d.ts +39 -0
  338. package/dist/data/format-value.d.ts.map +1 -0
  339. package/dist/data/format-value.js +214 -0
  340. package/dist/data/format-value.js.map +1 -0
  341. package/dist/data/resolve-block-data.d.ts +24 -0
  342. package/dist/data/resolve-block-data.d.ts.map +1 -0
  343. package/dist/data/resolve-block-data.js +190 -0
  344. package/dist/data/resolve-block-data.js.map +1 -0
  345. package/dist/data/transform-pipeline.d.ts +65 -0
  346. package/dist/data/transform-pipeline.d.ts.map +1 -0
  347. package/dist/data/transform-pipeline.js +234 -0
  348. package/dist/data/transform-pipeline.js.map +1 -0
  349. package/dist/data/validate-datasets.d.ts +22 -0
  350. package/dist/data/validate-datasets.d.ts.map +1 -0
  351. package/dist/data/validate-datasets.js +137 -0
  352. package/dist/data/validate-datasets.js.map +1 -0
  353. package/dist/diagram/adapter-markup-fit.d.ts +44 -0
  354. package/dist/diagram/adapter-markup-fit.d.ts.map +1 -0
  355. package/dist/diagram/adapter-markup-fit.js +292 -0
  356. package/dist/diagram/adapter-markup-fit.js.map +1 -0
  357. package/dist/diagram/adapter-stylesheet-filter.d.ts +56 -0
  358. package/dist/diagram/adapter-stylesheet-filter.d.ts.map +1 -0
  359. package/dist/diagram/adapter-stylesheet-filter.js +245 -0
  360. package/dist/diagram/adapter-stylesheet-filter.js.map +1 -0
  361. package/dist/diagram/adapter.d.ts +17 -0
  362. package/dist/diagram/adapter.d.ts.map +1 -1
  363. package/dist/diagram/adapter.js +43 -2
  364. package/dist/diagram/adapter.js.map +1 -1
  365. package/dist/index.d.ts +14 -1
  366. package/dist/index.d.ts.map +1 -1
  367. package/dist/index.js +6 -0
  368. package/dist/index.js.map +1 -1
  369. package/dist/ir.d.ts +18 -0
  370. package/dist/ir.d.ts.map +1 -1
  371. package/dist/ir.js.map +1 -1
  372. package/dist/mcp/mcp-http-transport.d.ts +68 -0
  373. package/dist/mcp/mcp-http-transport.d.ts.map +1 -0
  374. package/dist/mcp/mcp-http-transport.js +140 -0
  375. package/dist/mcp/mcp-http-transport.js.map +1 -0
  376. package/dist/mcp/mcp-json-rpc-dispatch.d.ts +38 -0
  377. package/dist/mcp/mcp-json-rpc-dispatch.d.ts.map +1 -0
  378. package/dist/mcp/mcp-json-rpc-dispatch.js +98 -0
  379. package/dist/mcp/mcp-json-rpc-dispatch.js.map +1 -0
  380. package/dist/mcp/mcp-local-tools.d.ts +20 -0
  381. package/dist/mcp/mcp-local-tools.d.ts.map +1 -0
  382. package/dist/mcp/mcp-local-tools.js +58 -0
  383. package/dist/mcp/mcp-local-tools.js.map +1 -0
  384. package/dist/mcp/mcp-protocol.d.ts +79 -0
  385. package/dist/mcp/mcp-protocol.d.ts.map +1 -0
  386. package/dist/mcp/mcp-protocol.js +83 -0
  387. package/dist/mcp/mcp-protocol.js.map +1 -0
  388. package/dist/mcp/mcp-stdio-transport.d.ts +28 -0
  389. package/dist/mcp/mcp-stdio-transport.d.ts.map +1 -0
  390. package/dist/mcp/mcp-stdio-transport.js +73 -0
  391. package/dist/mcp/mcp-stdio-transport.js.map +1 -0
  392. package/dist/mcp/mcp-tool-definitions.d.ts +66 -0
  393. package/dist/mcp/mcp-tool-definitions.d.ts.map +1 -0
  394. package/dist/mcp/mcp-tool-definitions.js +246 -0
  395. package/dist/mcp/mcp-tool-definitions.js.map +1 -0
  396. package/dist/mcp-server.d.ts +10 -0
  397. package/dist/mcp-server.d.ts.map +1 -0
  398. package/dist/mcp-server.js +9 -0
  399. package/dist/mcp-server.js.map +1 -0
  400. package/dist/recipes/index.d.ts +27 -0
  401. package/dist/recipes/index.d.ts.map +1 -0
  402. package/dist/recipes/index.js +30 -0
  403. package/dist/recipes/index.js.map +1 -0
  404. package/dist/recipes/recipes.generated.d.ts +8 -0
  405. package/dist/recipes/recipes.generated.d.ts.map +1 -0
  406. package/dist/recipes/recipes.generated.js +704 -0
  407. package/dist/recipes/recipes.generated.js.map +1 -0
  408. package/dist/registry/actions.d.ts +2 -0
  409. package/dist/registry/actions.d.ts.map +1 -1
  410. package/dist/registry/actions.js +3 -1
  411. package/dist/registry/actions.js.map +1 -1
  412. package/dist/registry/block-module.d.ts +65 -0
  413. package/dist/registry/block-module.d.ts.map +1 -0
  414. package/dist/registry/block-module.js +19 -0
  415. package/dist/registry/block-module.js.map +1 -0
  416. package/dist/registry/catalog-search.d.ts +32 -0
  417. package/dist/registry/catalog-search.d.ts.map +1 -0
  418. package/dist/registry/catalog-search.js +122 -0
  419. package/dist/registry/catalog-search.js.map +1 -0
  420. package/dist/registry/define-helpers.d.ts +89 -0
  421. package/dist/registry/define-helpers.d.ts.map +1 -0
  422. package/dist/registry/define-helpers.js +87 -0
  423. package/dist/registry/define-helpers.js.map +1 -0
  424. package/dist/registry/describe-many.d.ts +58 -0
  425. package/dist/registry/describe-many.d.ts.map +1 -0
  426. package/dist/registry/describe-many.js +156 -0
  427. package/dist/registry/describe-many.js.map +1 -0
  428. package/dist/registry/prop-schema.d.ts +32 -1
  429. package/dist/registry/prop-schema.d.ts.map +1 -1
  430. package/dist/registry/prop-schema.js +108 -2
  431. package/dist/registry/prop-schema.js.map +1 -1
  432. package/dist/registry/registry-builder.d.ts +17 -0
  433. package/dist/registry/registry-builder.d.ts.map +1 -0
  434. package/dist/registry/registry-builder.js +158 -0
  435. package/dist/registry/registry-builder.js.map +1 -0
  436. package/dist/registry/registry.d.ts +32 -5
  437. package/dist/registry/registry.d.ts.map +1 -1
  438. package/dist/registry/registry.js +67 -14
  439. package/dist/registry/registry.js.map +1 -1
  440. package/dist/registry/roster.d.ts +34 -5
  441. package/dist/registry/roster.d.ts.map +1 -1
  442. package/dist/registry/roster.js +360 -184
  443. package/dist/registry/roster.js.map +1 -1
  444. package/dist/render/block-helpers.d.ts +45 -0
  445. package/dist/render/block-helpers.d.ts.map +1 -0
  446. package/dist/render/block-helpers.js +83 -0
  447. package/dist/render/block-helpers.js.map +1 -0
  448. package/dist/render/blocks.d.ts +10 -35
  449. package/dist/render/blocks.d.ts.map +1 -1
  450. package/dist/render/blocks.js +144 -263
  451. package/dist/render/blocks.js.map +1 -1
  452. package/dist/render/chart-figure-encoded.d.ts +11 -0
  453. package/dist/render/chart-figure-encoded.d.ts.map +1 -0
  454. package/dist/render/chart-figure-encoded.js +81 -0
  455. package/dist/render/chart-figure-encoded.js.map +1 -0
  456. package/dist/render/chart-kinds-cartesian.d.ts +14 -0
  457. package/dist/render/chart-kinds-cartesian.d.ts.map +1 -0
  458. package/dist/render/chart-kinds-cartesian.js +122 -0
  459. package/dist/render/chart-kinds-cartesian.js.map +1 -0
  460. package/dist/render/chart-kinds-composite.d.ts +16 -0
  461. package/dist/render/chart-kinds-composite.d.ts.map +1 -0
  462. package/dist/render/chart-kinds-composite.js +144 -0
  463. package/dist/render/chart-kinds-composite.js.map +1 -0
  464. package/dist/render/chart-kinds-gauge-treemap.d.ts +8 -0
  465. package/dist/render/chart-kinds-gauge-treemap.d.ts.map +1 -0
  466. package/dist/render/chart-kinds-gauge-treemap.js +101 -0
  467. package/dist/render/chart-kinds-gauge-treemap.js.map +1 -0
  468. package/dist/render/chart-kinds-histogram-waterfall.d.ts +17 -0
  469. package/dist/render/chart-kinds-histogram-waterfall.d.ts.map +1 -0
  470. package/dist/render/chart-kinds-histogram-waterfall.js +172 -0
  471. package/dist/render/chart-kinds-histogram-waterfall.js.map +1 -0
  472. package/dist/render/chart-overlays.d.ts +18 -0
  473. package/dist/render/chart-overlays.d.ts.map +1 -0
  474. package/dist/render/chart-overlays.js +58 -0
  475. package/dist/render/chart-overlays.js.map +1 -0
  476. package/dist/render/chart-scales.d.ts +83 -0
  477. package/dist/render/chart-scales.d.ts.map +1 -0
  478. package/dist/render/chart-scales.js +166 -0
  479. package/dist/render/chart-scales.js.map +1 -0
  480. package/dist/render/chart-svg-parts.d.ts +50 -0
  481. package/dist/render/chart-svg-parts.d.ts.map +1 -0
  482. package/dist/render/chart-svg-parts.js +125 -0
  483. package/dist/render/chart-svg-parts.js.map +1 -0
  484. package/dist/render/chart-text.d.ts +18 -0
  485. package/dist/render/chart-text.d.ts.map +1 -0
  486. package/dist/render/chart-text.js +69 -0
  487. package/dist/render/chart-text.js.map +1 -0
  488. package/dist/render/chart-treemap-layout.d.ts +17 -0
  489. package/dist/render/chart-treemap-layout.d.ts.map +1 -0
  490. package/dist/render/chart-treemap-layout.js +74 -0
  491. package/dist/render/chart-treemap-layout.js.map +1 -0
  492. package/dist/render/chart-types.d.ts +107 -0
  493. package/dist/render/chart-types.d.ts.map +1 -0
  494. package/dist/render/chart-types.js +11 -0
  495. package/dist/render/chart-types.js.map +1 -0
  496. package/dist/render/charts.d.ts +33 -11
  497. package/dist/render/charts.d.ts.map +1 -1
  498. package/dist/render/charts.js +145 -109
  499. package/dist/render/charts.js.map +1 -1
  500. package/dist/render/derived-variables.d.ts +37 -0
  501. package/dist/render/derived-variables.d.ts.map +1 -0
  502. package/dist/render/derived-variables.js +40 -0
  503. package/dist/render/derived-variables.js.map +1 -0
  504. package/dist/render/diagram-fallback.d.ts +25 -0
  505. package/dist/render/diagram-fallback.d.ts.map +1 -0
  506. package/dist/render/diagram-fallback.js +86 -0
  507. package/dist/render/diagram-fallback.js.map +1 -0
  508. package/dist/render/document.d.ts +15 -0
  509. package/dist/render/document.d.ts.map +1 -1
  510. package/dist/render/document.js +53 -8
  511. package/dist/render/document.js.map +1 -1
  512. package/dist/render/effects-styles.d.ts +14 -0
  513. package/dist/render/effects-styles.d.ts.map +1 -0
  514. package/dist/render/effects-styles.js +39 -0
  515. package/dist/render/effects-styles.js.map +1 -0
  516. package/dist/render/embedded-fonts.generated.d.ts +22 -0
  517. package/dist/render/embedded-fonts.generated.d.ts.map +1 -0
  518. package/dist/render/embedded-fonts.generated.js +59 -0
  519. package/dist/render/embedded-fonts.generated.js.map +1 -0
  520. package/dist/render/escape.d.ts +10 -0
  521. package/dist/render/escape.d.ts.map +1 -1
  522. package/dist/render/escape.js +28 -0
  523. package/dist/render/escape.js.map +1 -1
  524. package/dist/render/feature-styles.d.ts +14 -0
  525. package/dist/render/feature-styles.d.ts.map +1 -0
  526. package/dist/render/feature-styles.js +123 -0
  527. package/dist/render/feature-styles.js.map +1 -0
  528. package/dist/render/font-faces.d.ts +22 -0
  529. package/dist/render/font-faces.d.ts.map +1 -0
  530. package/dist/render/font-faces.js +60 -0
  531. package/dist/render/font-faces.js.map +1 -0
  532. package/dist/render/outline.d.ts +21 -0
  533. package/dist/render/outline.d.ts.map +1 -0
  534. package/dist/render/outline.js +47 -0
  535. package/dist/render/outline.js.map +1 -0
  536. package/dist/render/recipe-styles.d.ts +26 -0
  537. package/dist/render/recipe-styles.d.ts.map +1 -0
  538. package/dist/render/recipe-styles.js +218 -0
  539. package/dist/render/recipe-styles.js.map +1 -0
  540. package/dist/render/render-context.d.ts +40 -0
  541. package/dist/render/render-context.d.ts.map +1 -0
  542. package/dist/render/render-context.js +16 -0
  543. package/dist/render/render-context.js.map +1 -0
  544. package/dist/render/render.d.ts +7 -0
  545. package/dist/render/render.d.ts.map +1 -1
  546. package/dist/render/render.js +108 -41
  547. package/dist/render/render.js.map +1 -1
  548. package/dist/render/runtime.d.ts +4 -1
  549. package/dist/render/runtime.d.ts.map +1 -1
  550. package/dist/render/runtime.js +275 -128
  551. package/dist/render/runtime.js.map +1 -1
  552. package/dist/render/showcase-blocks.d.ts +52 -0
  553. package/dist/render/showcase-blocks.d.ts.map +1 -0
  554. package/dist/render/showcase-blocks.js +329 -0
  555. package/dist/render/showcase-blocks.js.map +1 -0
  556. package/dist/render/showcase-styles.d.ts +15 -0
  557. package/dist/render/showcase-styles.d.ts.map +1 -0
  558. package/dist/render/showcase-styles.js +201 -0
  559. package/dist/render/showcase-styles.js.map +1 -0
  560. package/dist/render/signature-styles.d.ts +18 -0
  561. package/dist/render/signature-styles.d.ts.map +1 -0
  562. package/dist/render/signature-styles.js +41 -0
  563. package/dist/render/signature-styles.js.map +1 -0
  564. package/dist/render/style-units.d.ts +17 -0
  565. package/dist/render/style-units.d.ts.map +1 -0
  566. package/dist/render/style-units.js +24 -0
  567. package/dist/render/style-units.js.map +1 -0
  568. package/dist/render/styles.d.ts +18 -9
  569. package/dist/render/styles.d.ts.map +1 -1
  570. package/dist/render/styles.js +228 -129
  571. package/dist/render/styles.js.map +1 -1
  572. package/dist/render/surface-styles.d.ts +24 -0
  573. package/dist/render/surface-styles.d.ts.map +1 -0
  574. package/dist/render/surface-styles.js +41 -0
  575. package/dist/render/surface-styles.js.map +1 -0
  576. package/dist/render/tone.d.ts +14 -0
  577. package/dist/render/tone.d.ts.map +1 -0
  578. package/dist/render/tone.js +40 -0
  579. package/dist/render/tone.js.map +1 -0
  580. package/dist/render/verify.d.ts +3 -0
  581. package/dist/render/verify.d.ts.map +1 -1
  582. package/dist/render/verify.js +45 -2
  583. package/dist/render/verify.js.map +1 -1
  584. package/dist/spec/asset-references.d.ts +35 -0
  585. package/dist/spec/asset-references.d.ts.map +1 -0
  586. package/dist/spec/asset-references.js +93 -0
  587. package/dist/spec/asset-references.js.map +1 -0
  588. package/dist/spec/bounds.d.ts +6 -0
  589. package/dist/spec/bounds.d.ts.map +1 -1
  590. package/dist/spec/bounds.js +7 -0
  591. package/dist/spec/bounds.js.map +1 -1
  592. package/dist/spec/conditions.d.ts +43 -0
  593. package/dist/spec/conditions.d.ts.map +1 -0
  594. package/dist/spec/conditions.js +179 -0
  595. package/dist/spec/conditions.js.map +1 -0
  596. package/dist/spec/network-policy.d.ts +33 -0
  597. package/dist/spec/network-policy.d.ts.map +1 -0
  598. package/dist/spec/network-policy.js +57 -0
  599. package/dist/spec/network-policy.js.map +1 -0
  600. package/dist/spec/normalize.d.ts +7 -2
  601. package/dist/spec/normalize.d.ts.map +1 -1
  602. package/dist/spec/normalize.js +219 -41
  603. package/dist/spec/normalize.js.map +1 -1
  604. package/dist/theme/dialect-presets.d.ts +12 -0
  605. package/dist/theme/dialect-presets.d.ts.map +1 -0
  606. package/dist/theme/dialect-presets.js +214 -0
  607. package/dist/theme/dialect-presets.js.map +1 -0
  608. package/dist/theme/load-theme.d.ts +11 -3
  609. package/dist/theme/load-theme.d.ts.map +1 -1
  610. package/dist/theme/load-theme.js +71 -12
  611. package/dist/theme/load-theme.js.map +1 -1
  612. package/dist/theme/preset-builder.d.ts +36 -0
  613. package/dist/theme/preset-builder.d.ts.map +1 -0
  614. package/dist/theme/preset-builder.js +51 -0
  615. package/dist/theme/preset-builder.js.map +1 -0
  616. package/dist/theme/presets.d.ts +8 -10
  617. package/dist/theme/presets.d.ts.map +1 -1
  618. package/dist/theme/presets.js +40 -56
  619. package/dist/theme/presets.js.map +1 -1
  620. package/dist/theme/recipes.d.ts +38 -0
  621. package/dist/theme/recipes.d.ts.map +1 -0
  622. package/dist/theme/recipes.js +96 -0
  623. package/dist/theme/recipes.js.map +1 -0
  624. package/dist/theme/theme-catalog.d.ts.map +1 -1
  625. package/dist/theme/theme-catalog.js +16 -0
  626. package/dist/theme/theme-catalog.js.map +1 -1
  627. package/dist/theme/tokens.d.ts.map +1 -1
  628. package/dist/theme/tokens.js +4 -4
  629. package/dist/theme/tokens.js.map +1 -1
  630. package/dist/version.d.ts +1 -1
  631. package/dist/version.d.ts.map +1 -1
  632. package/dist/version.js +1 -1
  633. package/dist/version.js.map +1 -1
  634. package/llms.txt +29 -0
  635. package/package.json +13 -3
@@ -0,0 +1,329 @@
1
+ /**
2
+ * Showcase block renderers.
3
+ *
4
+ * Blocks that present work rather than structure it: a bento mosaic, a ticker,
5
+ * a terminal session, a file tree, a before/after slider, KPI cards with
6
+ * sparklines, a framed feature spotlight, and a checklist.
7
+ *
8
+ * The same rules as `blocks.ts` apply: pure functions of the node and the IR,
9
+ * exactly one `data-ak-id` per block, no style attributes or handlers. Every
10
+ * motion these blocks get comes from CSS or the runtime, and the markup is
11
+ * complete without either, so the content reads the same in a PDF, a
12
+ * screenshot, or with script disabled.
13
+ */
14
+ import { isPlainObject } from '../json.js';
15
+ import { blockedReason, element, figureCaption, listProp, nodeAttributes, numberProp, numProp, objectListProp, resolveMedia, str, stringProp, titleHeader, } from './block-helpers.js';
16
+ import { escapeAttribute, escapeInlineText, escapeText, escapeUrl, renderAttributes, } from './escape.js';
17
+ /** An image allowed by the policy, or an honest note when it is not. */
18
+ export function framedImage(source, alt, policy, loading = 'lazy') {
19
+ const resolved = resolveMedia(source, policy, 'images');
20
+ if (!resolved.allowed) {
21
+ // The alt text still describes the picture, so it leads the note.
22
+ const subject = alt === '' ? '' : `<strong>${escapeText(alt)}</strong>. `;
23
+ return `<p class="ak-caption">${subject}Remote image not loaded: ${blockedReason(policy, 'images')}. <a href="${escapeAttribute(resolved.src)}" rel="noreferrer noopener">Open image</a></p>`;
24
+ }
25
+ return `<img src="${escapeAttribute(resolved.src)}" alt="${escapeAttribute(alt)}" loading="${loading}" decoding="async" />`;
26
+ }
27
+ /** Browser chrome (decorative) around an image: the bar, then the viewport. */
28
+ export function browserShot(source, alt, address, policy, loading = 'lazy') {
29
+ const bar = `<div class="ak-frame-bar" aria-hidden="true"><span class="ak-window-dots"><span></span><span></span><span></span></span>${address === '' ? '' : `<span class="ak-frame-address">${escapeText(address)}</span>`}</div>`;
30
+ return `${bar}<div class="ak-frame-view">${framedImage(source, alt, policy, loading)}</div>`;
31
+ }
32
+ export function paragraph(className, text) {
33
+ return text === '' ? '' : `<p class="${className}">${escapeText(text)}</p>`;
34
+ }
35
+ /** A paragraph of prose: backtick spans become inline code. */
36
+ export function prose(className, text) {
37
+ return text === '' ? '' : `<p class="${className}">${escapeInlineText(text)}</p>`;
38
+ }
39
+ // --- marquee ----------------------------------------------------------------
40
+ function marquee(node) {
41
+ const items = listProp(node, 'items').filter((item) => typeof item === 'string');
42
+ const entries = items.map((item) => `<li>${escapeText(item)}</li>`).join('');
43
+ const speed = stringProp(node, 'speed', 'normal');
44
+ // The first track is the real list. The second repeats it so the loop has no
45
+ // seam; it is hidden from assistive technology and only shown while moving.
46
+ return element('section', nodeAttributes(node, {
47
+ class: 'ak-block ak-marquee',
48
+ 'data-speed': ['slow', 'normal', 'fast'].includes(speed) ? speed : 'normal',
49
+ 'aria-label': stringProp(node, 'label', 'Highlights'),
50
+ }), `<div class="ak-marquee-viewport"><ul class="ak-marquee-track">${entries}</ul><ul class="ak-marquee-track" aria-hidden="true">${entries}</ul></div>`);
51
+ }
52
+ // --- terminal ---------------------------------------------------------------
53
+ const LINE_KINDS = new Set(['command', 'output', 'comment', 'success', 'error']);
54
+ function terminal(node) {
55
+ const title = stringProp(node, 'title', 'Terminal');
56
+ const lines = objectListProp(node, 'lines').map((line) => {
57
+ const kind = LINE_KINDS.has(str(line.kind)) ? str(line.kind) : 'output';
58
+ return `<span class="ak-term-line" data-kind="${kind}">${escapeText(str(line.text))}</span>`;
59
+ });
60
+ const copy = renderAttributes({
61
+ 'data-ak-on-click': JSON.stringify([{ action: 'copy', target: node.id }]),
62
+ 'aria-label': `Copy ${title}`,
63
+ });
64
+ // The whole bar is the figure's caption, so the caption is a direct child of
65
+ // the figure. The figure is named by the title alone, not the copy control.
66
+ return [
67
+ `<figure class="ak-block ak-terminal" aria-label="${escapeAttribute(title)}" data-ak-animate>`,
68
+ '<figcaption class="ak-terminal-bar">',
69
+ '<span class="ak-window-dots" aria-hidden="true"><span></span><span></span><span></span></span>',
70
+ `<span class="ak-terminal-title">${escapeText(title)}</span>`,
71
+ `<button type="button" class="ak-code-copy"${copy}>Copy</button>`,
72
+ '</figcaption>',
73
+ `<pre${renderAttributes({ 'data-ak-id': node.id, class: 'ak-terminal-body' })}>${lines.join('\n')}</pre>`,
74
+ '</figure>',
75
+ ].join('');
76
+ }
77
+ // --- file tree --------------------------------------------------------------
78
+ const FILE_STATUSES = new Set(['added', 'modified', 'deleted', 'renamed', 'unchanged']);
79
+ function newDir(name) {
80
+ return { name, dirs: new Map(), files: [] };
81
+ }
82
+ /** Build a folder tree from slash-separated paths; a trailing slash names an empty folder. */
83
+ export function buildFileTree(items) {
84
+ const root = newDir('');
85
+ for (const item of items) {
86
+ const parts = str(item.path)
87
+ .split('/')
88
+ .map((part) => part.trim())
89
+ .filter((part) => part !== '' && part !== '.');
90
+ const isFolder = str(item.path).endsWith('/');
91
+ let cursor = root;
92
+ const folders = isFolder ? parts : parts.slice(0, -1);
93
+ for (const part of folders) {
94
+ let next = cursor.dirs.get(part);
95
+ if (next === undefined) {
96
+ next = newDir(part);
97
+ cursor.dirs.set(part, next);
98
+ }
99
+ cursor = next;
100
+ }
101
+ const name = parts[parts.length - 1];
102
+ if (!isFolder && name !== undefined) {
103
+ const status = FILE_STATUSES.has(str(item.status)) ? str(item.status) : 'unchanged';
104
+ cursor.files.push({ name, status, note: str(item.note) });
105
+ }
106
+ }
107
+ return root;
108
+ }
109
+ /** Fold a chain of single-folder directories into one `a/b/c` entry, as editors do. */
110
+ function compact(dir) {
111
+ let current = dir;
112
+ let name = dir.name;
113
+ while (current.files.length === 0 && current.dirs.size === 1) {
114
+ const [only] = current.dirs.values();
115
+ if (only === undefined)
116
+ break;
117
+ name = `${name}/${only.name}`;
118
+ current = only;
119
+ }
120
+ return { ...current, name };
121
+ }
122
+ /**
123
+ * Case-insensitive order with a code-point tie-break. No `localeCompare`: its
124
+ * collation comes from the runtime's ICU data, which would let the same spec
125
+ * emit different bytes on different Node builds.
126
+ */
127
+ function byName(left, right) {
128
+ const a = left.name.toLowerCase();
129
+ const b = right.name.toLowerCase();
130
+ if (a !== b)
131
+ return a < b ? -1 : 1;
132
+ return left.name < right.name ? -1 : left.name > right.name ? 1 : 0;
133
+ }
134
+ function treeEntries(dir) {
135
+ const dirs = [...dir.dirs.values()].map(compact).sort(byName);
136
+ const files = [...dir.files].sort(byName);
137
+ return [
138
+ ...dirs.map((child) => `<li><details open><summary><span class="ak-tree-name" data-kind="folder">${escapeText(child.name)}/</span></summary><ul>${treeEntries(child)}</ul></details></li>`),
139
+ ...files.map((file) => `<li data-status="${file.status}"><span class="ak-tree-name" data-kind="file">${escapeText(file.name)}</span>${file.status === 'unchanged' ? '' : `<span class="ak-tree-status">${file.status}</span>`}${file.note === '' ? '' : `<span class="ak-tree-note">${escapeText(file.note)}</span>`}</li>`),
140
+ ].join('');
141
+ }
142
+ function fileTree(node) {
143
+ const items = objectListProp(node, 'items');
144
+ const counts = new Map();
145
+ for (const item of items) {
146
+ const status = str(item.status, 'unchanged');
147
+ if (status !== 'unchanged' && FILE_STATUSES.has(status)) {
148
+ counts.set(status, (counts.get(status) ?? 0) + 1);
149
+ }
150
+ }
151
+ const summary = ['added', 'modified', 'renamed', 'deleted']
152
+ .filter((status) => counts.has(status))
153
+ .map((status) => `<li data-status="${status}"><strong>${counts.get(status)}</strong> ${status}</li>`)
154
+ .join('');
155
+ return element('section', nodeAttributes(node, { class: 'ak-block ak-tree-block' }), [
156
+ titleHeader(node),
157
+ '<div class="ak-tree-panel">',
158
+ summary === '' ? '' : `<ul class="ak-tree-summary">${summary}</ul>`,
159
+ `<ul class="ak-tree">${treeEntries(buildFileTree(items))}</ul>`,
160
+ '</div>',
161
+ ].join(''));
162
+ }
163
+ // --- before / after ---------------------------------------------------------
164
+ function beforeAfter(node, context) {
165
+ const side = (key, fallbackLabel) => {
166
+ const value = node.props[key];
167
+ const item = isPlainObject(value) ? value : {};
168
+ return {
169
+ image: framedImage(str(item.src), str(item.alt), context.ir.policy.network),
170
+ label: str(item.label, fallbackLabel),
171
+ };
172
+ };
173
+ const before = side('before', 'Before');
174
+ const after = side('after', 'After');
175
+ const start = Math.min(Math.max(Math.round(numberProp(node, 'start', 50)), 0), 100);
176
+ const title = stringProp(node, 'title');
177
+ // Without script the two images sit side by side. The runtime switches the
178
+ // stage to the overlay and keeps `--ak-split` in step with the range input.
179
+ return [
180
+ `<figure${renderAttributes(nodeAttributes(node, { class: 'ak-block ak-ba', 'data-ak-before-after': '' }))}>`,
181
+ titleHeader(node),
182
+ '<div class="ak-ba-stage">',
183
+ `<div class="ak-ba-pane" data-side="before">${before.image}<span class="ak-ba-label">${escapeText(before.label)}</span></div>`,
184
+ `<div class="ak-ba-pane" data-side="after">${after.image}<span class="ak-ba-label">${escapeText(after.label)}</span></div>`,
185
+ '<span class="ak-ba-handle" aria-hidden="true"></span>',
186
+ `<input type="range" class="ak-ba-range" min="0" max="100" step="1" value="${start}" aria-label="${escapeAttribute(`Reveal ${before.label} or ${after.label}${title === '' ? '' : ` of ${title}`}`)}" />`,
187
+ '</div>',
188
+ figureCaption(stringProp(node, 'caption')),
189
+ '</figure>',
190
+ ].join('');
191
+ }
192
+ // --- kpi --------------------------------------------------------------------
193
+ const SPARK_WIDTH = 120;
194
+ const SPARK_HEIGHT = 36;
195
+ function round(value) {
196
+ return String(Math.round(value * 100) / 100);
197
+ }
198
+ /** Line and area paths for a sparkline, scaled into a fixed view box. */
199
+ export function sparkPaths(series) {
200
+ const min = Math.min(...series);
201
+ const max = Math.max(...series);
202
+ const span = max - min;
203
+ const step = series.length > 1 ? SPARK_WIDTH / (series.length - 1) : 0;
204
+ const inset = 3;
205
+ const points = series.map((value, index) => [
206
+ index * step,
207
+ // A flat series sits on the midline rather than the floor.
208
+ span === 0 ? SPARK_HEIGHT / 2 : inset + (1 - (value - min) / span) * (SPARK_HEIGHT - inset * 2),
209
+ ]);
210
+ const line = points
211
+ .map(([x, y], index) => `${index === 0 ? 'M' : 'L'}${round(x)} ${round(y)}`)
212
+ .join(' ');
213
+ const last = points[points.length - 1] ?? [0, SPARK_HEIGHT / 2];
214
+ return {
215
+ line,
216
+ area: `${line} L${round(last[0])} ${SPARK_HEIGHT} L0 ${SPARK_HEIGHT} Z`,
217
+ end: last,
218
+ };
219
+ }
220
+ function verdict(trend, good) {
221
+ if (trend !== 'up' && trend !== 'down')
222
+ return 'neutral';
223
+ return trend === good ? 'good' : 'bad';
224
+ }
225
+ function kpi(node) {
226
+ const cards = objectListProp(node, 'items').map((item, index) => {
227
+ const trend = str(item.trend, 'flat');
228
+ const judged = verdict(trend, str(item.good, 'up'));
229
+ const delta = str(item.delta);
230
+ const series = (Array.isArray(item.series) ? item.series : [])
231
+ .map((value) => numProp(value, Number.NaN))
232
+ .filter(Number.isFinite);
233
+ const arrow = trend === 'up' ? '↗' : trend === 'down' ? '↘' : '→';
234
+ const deltaMarkup = delta === ''
235
+ ? ''
236
+ : `<p class="ak-kpi-delta"><span aria-hidden="true">${arrow}</span>${escapeText(delta)}${judged === 'neutral'
237
+ ? ''
238
+ : `<span class="ak-sr"> (${judged === 'good' ? 'improving' : 'worsening'})</span>`}</p>`;
239
+ let spark = '';
240
+ if (series.length >= 2) {
241
+ const paths = sparkPaths(series);
242
+ const gradient = `ak-kpi-${node.id.replace(/[^A-Za-z0-9_-]/gu, '-')}-${index}`;
243
+ spark = [
244
+ `<svg class="ak-kpi-spark" viewBox="0 0 ${SPARK_WIDTH} ${SPARK_HEIGHT}" preserveAspectRatio="none" aria-hidden="true" focusable="false">`,
245
+ `<defs><linearGradient id="${gradient}" x1="0" y1="0" x2="0" y2="1"><stop offset="0" class="ak-kpi-stop" /><stop offset="1" class="ak-kpi-stop ak-kpi-stop--end" /></linearGradient></defs>`,
246
+ `<path class="ak-kpi-area" d="${paths.area}" fill="url(#${gradient})" />`,
247
+ `<path class="ak-kpi-line" d="${paths.line}" pathLength="1" />`,
248
+ '</svg>',
249
+ ].join('');
250
+ }
251
+ return [
252
+ `<li class="ak-kpi-card" data-verdict="${judged}">`,
253
+ `<p class="ak-kpi-label">${escapeText(str(item.label))}</p>`,
254
+ `<p class="ak-kpi-value" data-ak-count>${escapeText(str(item.value))}</p>`,
255
+ deltaMarkup,
256
+ spark,
257
+ paragraph('ak-caption', str(item.caption)),
258
+ '</li>',
259
+ ].join('');
260
+ });
261
+ return element('section', nodeAttributes(node, { class: 'ak-block ak-kpis', 'data-ak-animate': '' }), `${titleHeader(node)}<ul class="ak-kpi-grid">${cards.join('')}</ul>`);
262
+ }
263
+ // --- showcase ---------------------------------------------------------------
264
+ function showcase(node, context) {
265
+ const frame = stringProp(node, 'frame', 'browser') === 'plain' ? 'plain' : 'browser';
266
+ const address = stringProp(node, 'address');
267
+ const bullets = listProp(node, 'bullets').filter((item) => typeof item === 'string');
268
+ return element('section', nodeAttributes(node, {
269
+ class: 'ak-block ak-showcase',
270
+ 'data-align': stringProp(node, 'align') === 'media-left' ? 'media-left' : 'media-right',
271
+ }), [
272
+ '<div class="ak-showcase-copy">',
273
+ paragraph('ak-eyebrow', stringProp(node, 'eyebrow')),
274
+ `<h2>${escapeText(stringProp(node, 'title'))}</h2>`,
275
+ prose('ak-showcase-text', stringProp(node, 'text')),
276
+ bullets.length === 0
277
+ ? ''
278
+ : `<ul class="ak-showcase-points">${bullets.map((item) => `<li>${escapeText(item)}</li>`).join('')}</ul>`,
279
+ '</div>',
280
+ `<figure class="ak-showcase-media" data-frame="${frame}">${frame === 'browser'
281
+ ? browserShot(stringProp(node, 'src'), stringProp(node, 'alt'), address, context.ir.policy.network)
282
+ : `<div class="ak-frame-view">${framedImage(stringProp(node, 'src'), stringProp(node, 'alt'), context.ir.policy.network)}</div>`}</figure>`,
283
+ ].join(''));
284
+ }
285
+ // --- checklist --------------------------------------------------------------
286
+ function checklist(node) {
287
+ const items = objectListProp(node, 'items');
288
+ const done = items.filter((item) => item.done === true).length;
289
+ const title = stringProp(node, 'title');
290
+ const progress = items.length === 0 ? 0 : Math.round((done / items.length) * 100);
291
+ return element('section', nodeAttributes(node, { class: 'ak-block ak-checklist' }), [
292
+ `<header class="ak-checklist-head">${title === '' ? '' : `<h2>${escapeText(title)}</h2>`}<p class="ak-checklist-count"><strong>${done}</strong> of ${items.length} done</p></header>`,
293
+ `<progress class="ak-checklist-meter" max="100" value="${progress}" aria-hidden="true">${progress}%</progress>`,
294
+ `<ul>${items
295
+ .map((item) => {
296
+ const state = item.done === true ? 'done' : 'open';
297
+ return `<li data-state="${state}"><span class="ak-check" aria-hidden="true"></span><span class="ak-check-text">${escapeText(str(item.text))}</span><span class="ak-sr"> (${state})</span></li>`;
298
+ })
299
+ .join('')}</ul>`,
300
+ ].join(''));
301
+ }
302
+ // --- cta --------------------------------------------------------------------
303
+ function cta(node) {
304
+ const actions = objectListProp(node, 'actions')
305
+ .map((action) => `<a${renderAttributes({
306
+ class: 'ak-btn',
307
+ 'data-variant': str(action.variant) === 'primary' ? 'primary' : 'secondary',
308
+ href: escapeUrl(str(action.href)),
309
+ rel: 'noreferrer noopener',
310
+ })}>${escapeText(str(action.label))}</a>`)
311
+ .join('');
312
+ return element('section', nodeAttributes(node, { class: 'ak-block ak-cta', 'data-surface': 'inverse' }), [
313
+ paragraph('ak-eyebrow', stringProp(node, 'eyebrow')),
314
+ `<h2 class="ak-cta-title">${escapeText(stringProp(node, 'title'))}</h2>`,
315
+ prose('ak-cta-text', stringProp(node, 'text')),
316
+ actions === '' ? '' : `<div class="ak-cta-actions">${actions}</div>`,
317
+ ].join(''));
318
+ }
319
+ export const SHOWCASE_RENDERERS = {
320
+ marquee,
321
+ terminal,
322
+ 'file-tree': fileTree,
323
+ 'before-after': beforeAfter,
324
+ kpi,
325
+ showcase,
326
+ checklist,
327
+ cta,
328
+ };
329
+ //# sourceMappingURL=showcase-blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"showcase-blocks.js","sourceRoot":"","sources":["../../src/render/showcase-blocks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Stylesheets for the showcase blocks.
3
+ *
4
+ * Each entry is a feature sheet: the compiler emits it only when a block on the
5
+ * page declares the feature, and `verify.ts` checks the marker selector in both
6
+ * directions. Only the window dots, which the terminal and the frame share, and
7
+ * the page-wide effects live in the base sheet.
8
+ *
9
+ * Motion follows the signature layer's rules: gated on
10
+ * `prefers-reduced-motion: no-preference`, never hiding content that has not
11
+ * been revealed by an observer, and switched off in print.
12
+ */
13
+ import type { RuntimeFeature } from '../registry/roster.js';
14
+ export declare const SHOWCASE_CSS: Readonly<Partial<Record<RuntimeFeature, string>>>;
15
+ //# sourceMappingURL=showcase-styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"showcase-styles.d.ts","sourceRoot":"","sources":["../../src/render/showcase-styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAyB5D,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CA4K1E,CAAC"}
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Stylesheets for the showcase blocks.
3
+ *
4
+ * Each entry is a feature sheet: the compiler emits it only when a block on the
5
+ * page declares the feature, and `verify.ts` checks the marker selector in both
6
+ * directions. Only the window dots, which the terminal and the frame share, and
7
+ * the page-wide effects live in the base sheet.
8
+ *
9
+ * Motion follows the signature layer's rules: gated on
10
+ * `prefers-reduced-motion: no-preference`, never hiding content that has not
11
+ * been revealed by an observer, and switched off in print.
12
+ */
13
+ import { BENTO_CSS } from '../blocks/composition/composition-styles.js';
14
+ import { EASE_OUT, MID, SLOW, UNIT } from './style-units.js';
15
+ /**
16
+ * Stagger for terminal lines; lines past the last step share its delay.
17
+ *
18
+ * A line waiting for its turn is invisible, so the whole session must settle
19
+ * fast: the last line starts by 0.88s and every line is drawn by about 1.4s.
20
+ * A longer cascade left the last lines blank in captures taken after a scroll.
21
+ */
22
+ const TERMINAL_STEP_COUNT = 12;
23
+ const TERMINAL_STEPS = Array.from({ length: TERMINAL_STEP_COUNT }, (_, index) => {
24
+ const nth = index === TERMINAL_STEP_COUNT - 1 ? `n + ${TERMINAL_STEP_COUNT}` : String(index + 1);
25
+ return `.ak-terminal[data-ak-inview] .ak-term-line:nth-child(${nth}){animation-delay:${(index * 0.08).toFixed(2)}s}`;
26
+ }).join('');
27
+ /** Each KPI card's sparkline draws a beat after the previous one. */
28
+ const KPI_STEPS = [2, 3, 4]
29
+ .map((position) => {
30
+ const nth = position === 4 ? 'n + 4' : String(position);
31
+ const lead = (position - 1) * 0.12;
32
+ return `.ak-kpis[data-ak-inview] .ak-kpi-card:nth-child(${nth}) .ak-kpi-line{animation-delay:${lead.toFixed(2)}s}.ak-kpis[data-ak-inview] .ak-kpi-card:nth-child(${nth}) .ak-kpi-area{animation-delay:${(lead + 0.5).toFixed(2)}s}`;
33
+ })
34
+ .join('');
35
+ export const SHOWCASE_CSS = {
36
+ bento: BENTO_CSS,
37
+ marquee: `.ak-marquee{--ak-marquee-time:42s;padding:${UNIT(2.25)} 0;border-block:var(--ak-border-width) solid var(--ak-color-border)}
38
+ .ak-marquee[data-speed="slow"]{--ak-marquee-time:70s}
39
+ .ak-marquee[data-speed="fast"]{--ak-marquee-time:24s}
40
+ .ak-marquee-viewport{display:flex;overflow:hidden}
41
+ .ak-marquee-track{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center;row-gap:.4em}
42
+ .ak-marquee-track[aria-hidden="true"]{display:none}
43
+ .ak-marquee li{display:inline-flex;align-items:center;gap:${UNIT(3)};padding-right:${UNIT(3)};font-family:var(--ak-font-heading);font-size:clamp(1.3rem,2.8vw,2.3rem);font-weight:650;line-height:1.15;letter-spacing:-.03em;white-space:nowrap}
44
+ .ak-marquee li::after{content:"";flex:none;width:.34em;height:.34em;border-radius:2px;background:var(--ak-color-accent);rotate:45deg}
45
+ @supports (-webkit-text-stroke:1px black){.ak-marquee li:nth-child(even){color:transparent;-webkit-text-stroke:1.2px var(--ak-color-text)}}
46
+ @keyframes ak-marquee{to{transform:translateX(-100%)}}
47
+ @media (prefers-reduced-motion:no-preference){.ak-marquee-viewport{-webkit-mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent)}.ak-marquee-track{flex:none;flex-wrap:nowrap;animation:ak-marquee var(--ak-marquee-time) linear infinite}.ak-marquee-track[aria-hidden="true"]{display:flex}.ak-marquee:hover .ak-marquee-track{animation-play-state:paused}}
48
+ @media print{.ak-marquee-track{animation:none!important;flex-wrap:wrap}.ak-marquee-track[aria-hidden="true"]{display:none!important}}`,
49
+ terminal: `.ak-terminal{--ak-term-bg:color-mix(in srgb,var(--ak-color-accent) 7%,#0b0d12);--ak-term-bar:color-mix(in srgb,var(--ak-color-accent) 6%,#151821);--ak-term-text:#e8eaf0;--ak-term-muted:#8f96a8;align-self:start;margin:0;overflow:hidden;border-radius:var(--ak-radius-large);background:var(--ak-term-bg);color:var(--ak-term-text);border:var(--ak-border-width) solid color-mix(in srgb,#fff 9%,var(--ak-term-bg));box-shadow:0 1px 0 color-mix(in srgb,#fff 8%,transparent) inset,var(--ak-elevation-popover)}
50
+ .ak-terminal-bar{display:flex;align-items:center;gap:${UNIT(1.5)};padding:.55em .75em .55em 1em;background:var(--ak-term-bar);border-bottom:var(--ak-border-width) solid color-mix(in srgb,#fff 7%,transparent)}
51
+ .ak-terminal .ak-window-dots{color:var(--ak-term-muted)}
52
+ .ak-terminal-title{flex:1;margin:0;text-align:center;font-family:var(--ak-font-mono);font-size:.74rem;letter-spacing:.04em;color:var(--ak-term-muted)}
53
+ .ak-terminal .ak-code-copy{color:var(--ak-term-muted);border-color:color-mix(in srgb,#fff 12%,transparent);background:transparent}
54
+ .ak-terminal .ak-code-copy::before{box-shadow:2.5px -2.5px 0 -1px var(--ak-term-bar),2.5px -2.5px 0 .5px currentColor}
55
+ .ak-terminal .ak-code-copy:hover{color:var(--ak-term-text);background:color-mix(in srgb,#fff 8%,transparent)}
56
+ .ak-terminal-body{margin:0;padding:${UNIT(2.5)} ${UNIT(3)} ${UNIT(3)};overflow-x:auto;background:transparent;border:0;border-radius:0;font-family:var(--ak-font-mono);font-size:.86rem;line-height:1.75;color:var(--ak-term-text);white-space:pre-wrap;word-break:break-word}
57
+ .ak-term-line{display:inline-block;max-width:100%;vertical-align:top}
58
+ .ak-term-line[data-kind="command"]{color:var(--ak-term-text);font-weight:600}
59
+ .ak-term-line[data-kind="command"]::before{content:"\\276F\\00a0\\00a0";content:"\\276F\\00a0\\00a0" / "";color:color-mix(in srgb,var(--ak-color-accent) 55%,#fff);font-weight:700}
60
+ .ak-term-line[data-kind="output"]{color:color-mix(in srgb,var(--ak-term-text) 82%,var(--ak-term-bg))}
61
+ .ak-term-line[data-kind="comment"]{color:var(--ak-term-muted);font-style:italic}
62
+ .ak-term-line[data-kind="success"]{color:#8fe3ad}
63
+ .ak-term-line[data-kind="success"]::before{content:"\\2713\\00a0";content:"\\2713\\00a0" / ""}
64
+ .ak-term-line[data-kind="error"]{color:#ffa3a3}
65
+ .ak-term-line[data-kind="error"]::before{content:"\\2717\\00a0";content:"\\2717\\00a0" / ""}
66
+ .ak-terminal-body::after{content:"";display:inline-block;width:.55em;height:1.15em;margin-left:.2em;vertical-align:-.2em;border-radius:1px;background:color-mix(in srgb,var(--ak-color-accent) 70%,#fff)}
67
+ @keyframes ak-type{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
68
+ @keyframes ak-line-in{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
69
+ @keyframes ak-caret{50%{opacity:0}}
70
+ @media (prefers-reduced-motion:no-preference){.ak-terminal[data-ak-inview] .ak-term-line{animation:ak-line-in calc(var(--ak-motion-duration) * 2) ${EASE_OUT} both}.ak-terminal[data-ak-inview] .ak-term-line[data-kind="command"]{animation:ak-type .5s steps(22,end) both}.ak-terminal-body::after{animation:ak-caret 1.1s steps(1) infinite}${TERMINAL_STEPS}}
71
+ @media print{.ak-terminal{box-shadow:none}.ak-terminal .ak-code-copy{display:none}.ak-term-line{animation:none!important}}`,
72
+ tree: `.ak-tree-panel{padding:${UNIT(2.5)} ${UNIT(3)};border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-large);background:var(--ak-fill);box-shadow:var(--ak-elevation-card);font-family:var(--ak-font-mono);font-size:.84rem}
73
+ .ak-tree-summary{list-style:none;display:flex;flex-wrap:wrap;gap:.5em;margin:0 0 ${UNIT(2)};padding:0 0 ${UNIT(2)};border-bottom:var(--ak-border-width) solid var(--ak-color-border)}
74
+ .ak-tree-summary li,.ak-tree-status{display:inline-flex;align-items:center;gap:.45em;padding:.2em .7em;border-radius:999px;background:color-mix(in srgb,var(--ak-status) 13%,transparent);color:color-mix(in srgb,var(--ak-status) 78%,var(--ak-color-text));font-size:.72rem;letter-spacing:.05em}
75
+ .ak-tree-summary li::before{content:"";width:.45em;height:.45em;border-radius:50%;background:var(--ak-status)}
76
+ .ak-tree-block [data-status]{--ak-status:var(--ak-color-text-muted)}
77
+ .ak-tree-block [data-status="added"]{--ak-status:var(--ak-color-success)}
78
+ .ak-tree-block [data-status="modified"]{--ak-status:var(--ak-color-warning)}
79
+ .ak-tree-block [data-status="deleted"]{--ak-status:var(--ak-color-danger)}
80
+ .ak-tree-block [data-status="renamed"]{--ak-status:var(--ak-color-info)}
81
+ .ak-tree,.ak-tree ul{list-style:none;margin:0;padding:0}
82
+ .ak-tree ul{margin-left:.5em;padding-left:1.15em;border-left:var(--ak-border-width) solid var(--ak-color-border)}
83
+ .ak-tree li[data-status]{display:flex;flex-wrap:wrap;align-items:center;gap:.25em .7em;padding:.28em .45em;margin-left:-.45em;border-radius:var(--ak-radius-small);${'transition:background var(--ak-motion-duration) var(--ak-motion-easing)'}}
84
+ .ak-tree li[data-status]:hover{background:var(--ak-tint)}
85
+ .ak-tree summary{list-style:none;display:flex;align-items:center;gap:.5em;padding:.28em .45em;margin-left:-.45em;border-radius:var(--ak-radius-small);cursor:pointer;font-weight:600}
86
+ .ak-tree summary::-webkit-details-marker{display:none}
87
+ .ak-tree summary::before{content:"";width:.38em;height:.38em;margin-right:.1em;border-right:1.5px solid var(--ak-color-text-muted);border-bottom:1.5px solid var(--ak-color-text-muted);rotate:-45deg;transition:rotate var(--ak-motion-duration) var(--ak-motion-easing)}
88
+ .ak-tree details[open] > summary::before{rotate:45deg}
89
+ .ak-tree summary:hover{background:var(--ak-tint);color:var(--ak-color-accent)}
90
+ .ak-tree-name{display:inline-flex;align-items:center;gap:.5em}
91
+ .ak-tree-name::before{content:"";flex:none;display:inline-block}
92
+ .ak-tree-name[data-kind="folder"]::before{width:1.05em;height:.82em;border-radius:2px;background:linear-gradient(180deg,color-mix(in srgb,var(--ak-color-accent) 78%,#fff),var(--ak-color-accent));clip-path:polygon(0 0,42% 0,52% 16%,100% 16%,100% 100%,0 100%)}
93
+ .ak-tree-name[data-kind="file"]::before{width:.8em;height:1em;background:color-mix(in srgb,var(--ak-color-text) 22%,transparent);clip-path:polygon(0 0,64% 0,100% 30%,100% 100%,0 100%)}
94
+ .ak-tree li[data-status]:not([data-status="unchanged"]) .ak-tree-name[data-kind="file"]::before{background:var(--ak-status)}
95
+ .ak-tree li[data-status="deleted"] .ak-tree-name{text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--ak-color-danger) 60%,transparent);color:var(--ak-color-text-muted)}
96
+ .ak-tree-status{padding:.05em .55em;font-size:.66rem;text-transform:uppercase;letter-spacing:.08em}
97
+ .ak-tree-note{margin-left:auto;font-family:var(--ak-font-body);font-size:.8rem;color:var(--ak-color-text-muted)}
98
+ @media (max-width:560px){.ak-tree-panel{padding:${UNIT(2)}}.ak-tree-note{flex-basis:100%;margin-left:1.5em}}`,
99
+ 'before-after': `.ak-ba{margin:0;display:flex;flex-direction:column;gap:${UNIT(1.5)}}
100
+ .ak-ba-stage{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:${UNIT(1.5)}}
101
+ .ak-ba-pane{position:relative;overflow:hidden;margin:0;border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-large);background:var(--ak-color-surface-raised)}
102
+ .ak-ba-pane img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}
103
+ .ak-ba-pane .ak-caption{padding:${UNIT(2)}}
104
+ .ak-ba-label{position:absolute;top:12px;left:12px;z-index:1;padding:.35em .8em;border-radius:999px;font-family:var(--ak-font-mono);font-size:.68rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ak-color-text);background:color-mix(in srgb,var(--ak-color-background) 80%,transparent);border:var(--ak-border-width) solid color-mix(in srgb,var(--ak-color-text) 12%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
105
+ .ak-ba-handle,.ak-ba-range{display:none}
106
+ .ak-ba[data-ak-ready] .ak-ba-stage{grid-template-columns:1fr;gap:0;overflow:hidden;border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-large);box-shadow:var(--ak-elevation-popover);touch-action:pan-y}
107
+ .ak-ba[data-ak-ready] .ak-ba-pane{grid-area:1 / 1;border:0;border-radius:0}
108
+ .ak-ba[data-ak-ready] .ak-ba-pane[data-side="after"]{clip-path:inset(0 0 0 var(--ak-split,50%))}
109
+ .ak-ba[data-ak-ready] .ak-ba-pane[data-side="after"] .ak-ba-label{left:auto;right:12px}
110
+ .ak-ba[data-ak-ready] .ak-ba-handle{display:block;position:absolute;top:0;bottom:0;left:var(--ak-split,50%);z-index:2;width:2px;margin-left:-1px;pointer-events:none;background:var(--ak-color-background);box-shadow:0 0 0 1px color-mix(in srgb,var(--ak-color-text) 14%,transparent),0 0 28px color-mix(in srgb,var(--ak-color-text) 30%,transparent)}
111
+ .ak-ba-handle::after{content:"\\2039\\2002\\203A";content:"\\2039\\2002\\203A" / "";position:absolute;top:50%;left:50%;display:grid;place-items:center;width:46px;height:46px;translate:-50% -50%;border-radius:50%;background:var(--ak-color-background);color:var(--ak-color-text);font-size:1.2rem;font-weight:700;line-height:1;box-shadow:0 0 0 1px var(--ak-color-border),var(--ak-elevation-popover);transition:scale ${MID} ${EASE_OUT}}
112
+ .ak-ba-stage:hover .ak-ba-handle::after{scale:1.08}
113
+ .ak-ba-stage:has(.ak-ba-range:focus-visible) .ak-ba-handle::after{outline:2px solid var(--ak-color-accent);outline-offset:3px}
114
+ .ak-ba[data-ak-ready] .ak-ba-range{display:block;position:absolute;inset:0;z-index:3;width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize;touch-action:pan-y}
115
+ @media (max-width:560px){.ak-ba-stage{grid-template-columns:1fr}}`,
116
+ kpi: `.ak-kpi-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:${UNIT(2)}}
117
+ .ak-kpi-card{--ak-verdict:var(--ak-color-accent);position:relative;isolation:isolate;overflow:hidden;display:flex;flex-direction:column;gap:.5em;min-width:0;padding:${UNIT(2.75)} ${UNIT(2.75)} 0;border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-large);background:var(--ak-fill);box-shadow:var(--ak-elevation-card);transition:translate ${MID} ${EASE_OUT},box-shadow ${MID} ${EASE_OUT}}
118
+ .ak-kpi-card:hover{translate:0 -3px;box-shadow:var(--ak-elevation-popover)}
119
+ .ak-kpi-card[data-verdict="good"]{--ak-verdict:var(--ak-color-success)}
120
+ .ak-kpi-card[data-verdict="bad"]{--ak-verdict:var(--ak-color-danger)}
121
+ .ak-kpi-card > p{margin:0}
122
+ .ak-kpi-label{font-family:var(--ak-font-mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ak-color-text-muted)}
123
+ .ak-kpi-value{font-family:var(--ak-font-heading);font-size:calc(var(--ak-font-size-base) * pow(var(--ak-font-scale),4));font-weight:700;line-height:1;letter-spacing:-.045em;font-variant-numeric:tabular-nums}
124
+ .ak-kpi-delta{align-self:flex-start;display:inline-flex;align-items:center;gap:.35em;padding:.2em .65em;border-radius:999px;font-family:var(--ak-font-mono);font-size:.76rem;font-weight:600;color:color-mix(in srgb,var(--ak-verdict) 80%,var(--ak-color-text));background:color-mix(in srgb,var(--ak-verdict) 13%,transparent)}
125
+ .ak-kpi-card[data-verdict="neutral"] .ak-kpi-delta{color:var(--ak-color-text-muted);background:color-mix(in srgb,var(--ak-color-text) 7%,transparent)}
126
+ .ak-kpi-card > .ak-caption{color:var(--ak-color-text-muted);font-size:.82rem}
127
+ .ak-kpi-card:not(:has(.ak-kpi-spark)){padding-bottom:${UNIT(2.75)}}
128
+ .ak-kpi-spark{display:block;order:9;width:calc(100% + ${UNIT(5.5)});height:64px;margin:auto ${UNIT(-2.75)} 0;padding-top:${UNIT(1)};overflow:visible}
129
+ .ak-kpi-line{fill:none;stroke:var(--ak-verdict);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
130
+ .ak-kpi-stop{stop-color:var(--ak-verdict);stop-opacity:.3}
131
+ .ak-kpi-stop--end{stop-opacity:0}
132
+ @keyframes ak-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
133
+ @keyframes ak-fade{from{opacity:0}}
134
+ @media (prefers-reduced-motion:no-preference){.ak-kpis[data-ak-inview] .ak-kpi-line{stroke-dasharray:1;animation:ak-draw 1.6s ${EASE_OUT} both}.ak-kpis[data-ak-inview] .ak-kpi-area{animation:ak-fade 1.2s .5s ease-out both}${KPI_STEPS}}`,
135
+ showcase: `.ak-showcase{position:relative;isolation:isolate;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;gap:${UNIT(4)} ${UNIT(7)};padding:${UNIT(3)} 0}
136
+ .ak-showcase::before{content:"";position:absolute;z-index:-1;inset:8% 0 8% 38%;border-radius:50%;background:radial-gradient(closest-side,color-mix(in srgb,var(--ak-color-accent) 22%,transparent),transparent);filter:blur(48px);pointer-events:none}
137
+ .ak-showcase[data-align="media-left"]{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}
138
+ .ak-showcase[data-align="media-left"]::before{inset:8% 38% 8% 0}
139
+ .ak-showcase[data-align="media-left"] .ak-showcase-media{order:-1}
140
+ .ak-showcase-copy{display:flex;flex-direction:column;align-items:flex-start;gap:${UNIT(1.75)}}
141
+ .ak-showcase-copy > *{margin:0}
142
+ .ak-showcase-copy .ak-eyebrow{color:var(--ak-color-accent)}
143
+ .ak-showcase h2{font-size:calc(var(--ak-font-size-base) * pow(var(--ak-font-scale),3.4));line-height:1.04;letter-spacing:-.04em}
144
+ .ak-showcase-text{font-size:calc(var(--ak-font-size-base) * 1.1);line-height:1.6;color:var(--ak-color-text-muted);max-width:44ch}
145
+ .ak-showcase-points{list-style:none;padding:0;display:flex;flex-direction:column;gap:.7em}
146
+ .ak-showcase-points li{display:flex;align-items:flex-start;gap:.75em}
147
+ .ak-showcase-points li::before{content:"";flex:none;width:1.25em;height:1.25em;margin-top:.12em;border-radius:50%;background:radial-gradient(circle,var(--ak-color-accent) 0 28%,transparent 31%),color-mix(in srgb,var(--ak-color-accent) 16%,transparent)}
148
+ .ak-showcase-media{position:relative;margin:0;overflow:hidden;border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-large);background:var(--ak-color-surface);box-shadow:0 1px 0 color-mix(in srgb,#fff 50%,transparent) inset,0 2px 6px color-mix(in srgb,var(--ak-color-text) 6%,transparent),0 32px 64px -24px color-mix(in srgb,var(--ak-color-text) 34%,transparent);transition:transform ${SLOW} ${EASE_OUT},box-shadow ${SLOW} ${EASE_OUT}}
149
+ @keyframes ak-drift{from{translate:0 -3.5%}to{translate:0 3.5%}}
150
+ @supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.ak-showcase-media .ak-frame-view img{scale:1.08;animation:ak-drift linear both;animation-timeline:view();animation-range:cover}}}
151
+ @media (prefers-reduced-motion:no-preference) and (hover:hover){.ak-showcase:hover .ak-showcase-media{transform:perspective(1800px) rotateY(-3deg) rotateX(1.5deg) translateY(-4px)}.ak-showcase[data-align="media-left"]:hover .ak-showcase-media{transform:perspective(1800px) rotateY(3deg) rotateX(1.5deg) translateY(-4px)}}
152
+ @media (max-width:900px){.ak-showcase,.ak-showcase[data-align="media-left"]{grid-template-columns:1fr}.ak-showcase[data-align="media-left"] .ak-showcase-media{order:0}.ak-showcase::before,.ak-showcase[data-align="media-left"]::before{inset:30% 0 0 0}}
153
+ @media print{.ak-showcase-media .ak-frame-view img{animation:none!important;scale:none}}`,
154
+ cta: `.ak-cta{display:flex;flex-direction:column;align-items:flex-start;gap:${UNIT(2.5)};padding:${UNIT(11)} ${UNIT(7)}}
155
+ .ak-main > .ak-cta{margin-top:calc(var(--ak-gap) * 3)}
156
+ .ak-cta > *{margin:0}
157
+ .ak-cta .ak-eyebrow{color:var(--ak-color-accent)}
158
+ .ak-cta-title{max-width:15ch;font-size:clamp(2.5rem,1.2rem + 5.4vw,5.75rem);line-height:.96;letter-spacing:-.048em;font-weight:700}
159
+ @supports (-webkit-background-clip:text) or (background-clip:text){.ak-cta-title{background:linear-gradient(180deg,var(--ak-color-text) 35%,color-mix(in srgb,var(--ak-color-text) 52%,var(--ak-color-accent)));-webkit-background-clip:text;background-clip:text;color:transparent}}
160
+ @media (forced-colors:active){.ak-cta-title{background:none;color:CanvasText}}
161
+ .ak-cta-text{max-width:50ch;font-size:calc(var(--ak-font-size-base) * 1.15);line-height:1.6;color:var(--ak-color-text-muted)}
162
+ .ak-cta-actions{display:flex;flex-wrap:wrap;gap:${UNIT(1.5)};margin-top:${UNIT(1.5)}}
163
+ .ak-cta-actions .ak-btn{min-height:48px;padding:.8em 1.5em;font-size:1rem;text-decoration:none;border-radius:999px}
164
+ .ak-cta-actions .ak-btn[data-variant="secondary"]{background:color-mix(in srgb,var(--ak-color-text) 6%,transparent);border-color:color-mix(in srgb,var(--ak-color-text) 18%,transparent)}
165
+ .ak-cta::after{content:"";position:absolute;z-index:-1;right:-12%;bottom:-40%;width:min(640px,70%);aspect-ratio:1;border-radius:50%;background:radial-gradient(closest-side,color-mix(in srgb,var(--ak-color-accent) 40%,transparent),transparent);filter:blur(40px);pointer-events:none}
166
+ @media (prefers-reduced-motion:no-preference){.ak-cta::after{animation:ak-aurora 16s ease-in-out infinite}}
167
+ @media (max-width:768px){.ak-cta{padding:${UNIT(7)} ${UNIT(3.5)}}}
168
+ @media print{.ak-cta::after{display:none}.ak-cta-title{background:none;color:inherit}}`,
169
+ // Browser chrome around a capture: the hero shot and the showcase spotlight.
170
+ frame: `.ak-frame-bar{display:flex;align-items:center;gap:calc(var(--ak-space-unit) * 1.5);padding:.6em .9em;border-bottom:var(--ak-border-width) solid var(--ak-color-border);background:color-mix(in srgb,var(--ak-color-text) 4%,var(--ak-color-surface))}
171
+ .ak-frame-bar .ak-window-dots{color:var(--ak-color-text-muted)}
172
+ .ak-frame-address{flex:0 1 52%;margin:0 auto;padding:.28em 1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;border-radius:999px;font-family:var(--ak-font-mono);font-size:.7rem;color:var(--ak-color-text-muted);background:var(--ak-color-background);border:var(--ak-border-width) solid var(--ak-color-border)}
173
+ .ak-frame-view{overflow:hidden}
174
+ .ak-frame-view img{display:block;width:100%;height:auto}
175
+ .ak-frame-view .ak-caption{padding:calc(var(--ak-space-unit) * 3)}
176
+ .ak-hero[data-media]{padding-bottom:0}
177
+ .ak-hero-media{position:relative;align-self:stretch;margin:calc(var(--ak-space-unit) * 5) 0 0;perspective:1600px}
178
+ .ak-hero-media::before{content:"";position:absolute;z-index:-1;inset:6% 4% -6%;border-radius:40px;background:linear-gradient(120deg,color-mix(in srgb,var(--ak-color-accent) 46%,transparent),color-mix(in srgb,var(--ak-color-info) 30%,transparent) 50%,color-mix(in srgb,var(--ak-color-success) 26%,transparent));filter:blur(56px);opacity:.55;pointer-events:none}
179
+ .ak-hero-stage{overflow:hidden;text-align:start;border:var(--ak-border-width) solid var(--ak-color-border);border-radius:calc(var(--ak-radius-large) * 1.4);background:var(--ak-color-surface);box-shadow:0 1px 0 color-mix(in srgb,#fff 50%,transparent) inset,0 2px 8px color-mix(in srgb,var(--ak-color-text) 6%,transparent),0 48px 96px -32px color-mix(in srgb,var(--ak-color-text) 38%,transparent);transform-origin:50% 0}
180
+ @keyframes ak-tilt{from{transform:rotateX(16deg) scale(.95)}to{transform:none}}
181
+ @supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.ak-hero-stage{animation:ak-tilt linear both;animation-timeline:view();animation-range:cover 0% cover 48%}}}
182
+ @media print{.ak-hero-media::before{display:none}.ak-hero-stage{animation:none!important}}`,
183
+ checklist: `.ak-checklist{padding:calc(var(--ak-space-unit) * 3);border:var(--ak-border-width) solid var(--ak-color-border);border-radius:var(--ak-radius-large);background:var(--ak-fill);box-shadow:var(--ak-elevation-card)}
184
+ .ak-checklist-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5em calc(var(--ak-space-unit) * 2)}
185
+ .ak-checklist-head h2{margin:0;font-size:calc(var(--ak-font-size-base) * pow(var(--ak-font-scale),1.6));letter-spacing:-.02em}
186
+ .ak-checklist-count{margin:0;font-family:var(--ak-font-mono);font-size:.76rem;letter-spacing:.04em;color:var(--ak-color-text-muted)}
187
+ .ak-checklist-count strong{font-size:1.15em;color:var(--ak-color-text)}
188
+ .ak-checklist-meter{-webkit-appearance:none;appearance:none;display:block;width:100%;height:6px;margin:calc(var(--ak-space-unit) * 1.75) 0 calc(var(--ak-space-unit) * .5);border:0;border-radius:999px;overflow:hidden;background:color-mix(in srgb,var(--ak-color-text) 8%,var(--ak-color-surface))}
189
+ .ak-checklist-meter::-webkit-progress-bar{background:transparent}
190
+ .ak-checklist-meter::-webkit-progress-value{border-radius:999px;background:linear-gradient(90deg,color-mix(in srgb,var(--ak-color-accent) 60%,var(--ak-color-surface)),var(--ak-color-accent))}
191
+ .ak-checklist-meter::-moz-progress-bar{border-radius:999px;background:linear-gradient(90deg,color-mix(in srgb,var(--ak-color-accent) 60%,var(--ak-color-surface)),var(--ak-color-accent))}
192
+ .ak-checklist ul{list-style:none;margin:0;padding:0}
193
+ .ak-checklist li{display:flex;align-items:flex-start;gap:.85em;padding:.75em 0;border-top:var(--ak-border-width) solid var(--ak-color-border)}
194
+ .ak-checklist li:first-child{border-top:0}
195
+ .ak-check{position:relative;flex:none;width:1.25em;height:1.25em;margin-top:.12em;border-radius:6px;border:1.5px solid color-mix(in srgb,var(--ak-color-text) 28%,transparent)}
196
+ .ak-checklist li[data-state="done"] .ak-check{background:var(--ak-color-accent);border-color:var(--ak-color-accent)}
197
+ .ak-checklist li[data-state="done"] .ak-check::after{content:"";position:absolute;left:36%;top:16%;width:26%;height:50%;border:solid var(--ak-color-accent-contrast);border-width:0 2px 2px 0;rotate:45deg}
198
+ .ak-checklist li[data-state="done"] .ak-check-text{color:var(--ak-color-text-muted)}
199
+ @media print{.ak-checklist{box-shadow:none}}`,
200
+ };
201
+ //# sourceMappingURL=showcase-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"showcase-styles.js","sourceRoot":"","sources":["../../src/render/showcase-styles.ts"],"names":[],"mappings":"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"}