@astryxdesign/cli 0.6.4 → 0.6.5-canary.00f1ed9

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 (405) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +103 -95
  3. package/api/build/_adapter.d.mts +36 -2
  4. package/api/build/_adapter.mjs +41 -10
  5. package/api/build/build.doc.mjs +8 -3
  6. package/api/build/build.test.mjs +60 -2
  7. package/api/build/kit/kit.mjs +109 -26
  8. package/api/build/kit/rank.d.mts +24 -8
  9. package/api/build/kit/rank.mjs +277 -97
  10. package/api/build/kit/rank.test.mjs +231 -48
  11. package/api/component/_adapter.d.mts +25 -0
  12. package/api/component/_adapter.mjs +59 -5
  13. package/api/component/component.d.mts +6 -3
  14. package/api/component/component.doc.mjs +37 -17
  15. package/api/component/component.mjs +249 -9
  16. package/api/component/component.type.d.mts +25 -0
  17. package/api/component/component.type.mjs +44 -0
  18. package/api/discover/_adapter.d.mts +114 -6
  19. package/api/discover/_adapter.mjs +372 -17
  20. package/api/discover/_adapter.test.mjs +215 -0
  21. package/api/discover/_catalog-view.d.mts +115 -0
  22. package/api/discover/_catalog-view.mjs +203 -0
  23. package/api/discover/_catalog-view.test.mjs +128 -0
  24. package/api/discover/detail/detail.d.mts +18 -6
  25. package/api/discover/detail/detail.mjs +67 -13
  26. package/api/discover/detail/detail.test.mjs +85 -0
  27. package/api/discover/detail/item/item.d.mts +26 -0
  28. package/api/discover/detail/item/item.mjs +78 -0
  29. package/api/discover/detail/item/item.test.mjs +73 -0
  30. package/api/discover/discover.d.mts +3 -9
  31. package/api/discover/discover.doc.mjs +61 -18
  32. package/api/discover/discover.mjs +220 -36
  33. package/api/discover/discover.test.mjs +11 -2
  34. package/api/discover/discover.type.d.mts +147 -8
  35. package/api/discover/discover.type.mjs +102 -12
  36. package/api/discover/list/list.d.mts +20 -6
  37. package/api/discover/list/list.mjs +45 -12
  38. package/api/discover/list/list.test.mjs +46 -0
  39. package/api/discover/search/search.d.mts +18 -16
  40. package/api/discover/search/search.mjs +102 -56
  41. package/api/discover/search/search.test.mjs +144 -10
  42. package/api/docs/_adapter.d.mts +8 -3
  43. package/api/docs/_adapter.mjs +14 -6
  44. package/api/docs/docOverlays.test.mjs +27 -1
  45. package/api/docs/docs.doc.mjs +2 -2
  46. package/api/docs/docs.test.mjs +54 -18
  47. package/api/docs/integration-tree.test.mjs +17 -0
  48. package/api/docs/integrationDocs.test.mjs +27 -5
  49. package/api/doctor/doctor.d.mts +8 -3
  50. package/api/doctor/doctor.doc.mjs +17 -8
  51. package/api/doctor/doctor.mjs +90 -9
  52. package/api/doctor/doctor.test.mjs +122 -10
  53. package/api/doctor/doctor.type.d.mts +1 -1
  54. package/api/doctor/doctor.type.mjs +1 -1
  55. package/api/error.d.mts +22 -0
  56. package/api/error.mjs +42 -0
  57. package/api/gap-report/gap-report.doc.mjs +19 -10
  58. package/api/hook/hook.doc.mjs +6 -3
  59. package/api/index.d.mts +1 -0
  60. package/api/index.mjs +5 -3
  61. package/api/init/init.doc.mjs +17 -12
  62. package/api/integration/add-contribution.d.mts +2 -1
  63. package/api/integration/add-contribution.mjs +7 -3
  64. package/api/integration/add-contribution.test.mjs +3 -3
  65. package/api/integration/add-helpers.d.mts +5 -2
  66. package/api/integration/add-helpers.mjs +36 -9
  67. package/api/integration/add-theme.mjs +266 -23
  68. package/api/integration/add-theme.test.mjs +247 -0
  69. package/api/integration/authoring-checks.mjs +12 -9
  70. package/api/integration/authoring-checks.type.d.mts +8 -0
  71. package/api/integration/authoring-checks.type.mjs +7 -3
  72. package/api/integration/integration-authoring.type.d.mts +4 -1
  73. package/api/integration/integration-authoring.type.mjs +6 -1
  74. package/api/integration/integrationAdd.doc.mjs +6 -0
  75. package/api/integration/integrationAddTheme.doc.mjs +10 -0
  76. package/api/integration/integrationComponentConflicts.doc.mjs +1 -1
  77. package/api/integration/integrationDocConflicts.doc.mjs +1 -1
  78. package/api/integration/integrationPackCheck.doc.mjs +3 -3
  79. package/api/integration/integrationTemplateConflicts.doc.mjs +1 -1
  80. package/api/integration/pack-check.lifecycle-output.test.mjs +107 -0
  81. package/api/integration/pack-check.mjs +92 -10
  82. package/api/integration/pack-check.test.mjs +140 -1
  83. package/api/integration/pack-check.type.mjs +1 -1
  84. package/api/integration/validate-integration.d.mts +4 -2
  85. package/api/integration/validate-integration.mjs +7 -2
  86. package/api/integration/validate-integration.test.mjs +55 -0
  87. package/api/integration/validate-integration.type.d.mts +5 -0
  88. package/api/integration/validate-integration.type.mjs +5 -1
  89. package/api/integration/validateIntegration.doc.mjs +1 -1
  90. package/api/json/assertResponse.doc.mjs +1 -1
  91. package/api/json/isError.doc.mjs +1 -1
  92. package/api/layout/expand/expand.mjs +12 -7
  93. package/api/layout/expand/expand.receipt.test.mjs +74 -0
  94. package/api/layout/layout.type.d.mts +1 -0
  95. package/api/layout/layout.type.mjs +1 -0
  96. package/api/layout/layoutExpand.doc.mjs +1 -1
  97. package/api/search/search.d.mts +51 -1
  98. package/api/search/search.doc.mjs +2 -2
  99. package/api/search/search.mjs +299 -17
  100. package/api/search/search.test.mjs +216 -18
  101. package/api/swizzle/copy/copy.mjs +66 -3
  102. package/api/swizzle/swizzle.doc.mjs +11 -5
  103. package/api/template/copy/copy.mjs +15 -9
  104. package/api/template/copy/copy.receipt.test.mjs +77 -0
  105. package/api/template/copy/copy.test.mjs +9 -0
  106. package/api/template/show/show.mjs +15 -4
  107. package/api/template/show/show.test.mjs +76 -0
  108. package/api/template/template-integration.test.mjs +14 -0
  109. package/api/template/template.d.mts +1 -1
  110. package/api/template/template.doc.mjs +8 -3
  111. package/api/template/template.mjs +1 -0
  112. package/api/template/template.type.d.mts +2 -0
  113. package/api/template/template.type.mjs +2 -0
  114. package/api/theme/add/add.mjs +17 -25
  115. package/api/theme/add/add.rollback.test.mjs +158 -0
  116. package/api/theme/add/add.staging.test.mjs +40 -23
  117. package/api/theme/build/build.d.mts +24 -0
  118. package/api/theme/build/build.family.test.mjs +7 -12
  119. package/api/theme/build/build.mjs +243 -26
  120. package/api/theme/build/build.project-core.test.mjs +165 -0
  121. package/api/theme/build/build.rollback.test.mjs +148 -0
  122. package/api/theme/generateTonalPalette.doc.mjs +1 -2
  123. package/api/theme/listThemes.doc.mjs +1 -1
  124. package/api/theme/themeAdd.doc.mjs +9 -10
  125. package/api/theme/themeBuild.doc.mjs +13 -13
  126. package/api/theme/themeList.doc.mjs +1 -1
  127. package/api/theme/themeListAvailable.doc.mjs +2 -1
  128. package/api/theme/themePaletteGenerate.doc.mjs +15 -8
  129. package/api/theme/themeTargets.doc.mjs +3 -2
  130. package/api/theme/themeTemplate.doc.mjs +2 -1
  131. package/api/upgrade/run/files-changed.test.mjs +111 -0
  132. package/api/upgrade/run/run.mjs +25 -6
  133. package/api/upgrade/run/run.test.mjs +45 -1
  134. package/api/upgrade/upgrade.doc.mjs +24 -22
  135. package/api/upgrade/upgrade.type.d.mts +1 -0
  136. package/api/upgrade/upgrade.type.mjs +3 -2
  137. package/assets/codemods/__tests__/runner.test.mjs +3 -1
  138. package/assets/codemods/file-count.test.mjs +163 -0
  139. package/assets/codemods/integration-runner.mjs +3 -3
  140. package/assets/codemods/runner.mjs +5 -4
  141. package/assets/docs/README.md +4 -2
  142. package/assets/docs/browser-support.doc.mjs +11 -11
  143. package/assets/docs/color.doc.mjs +8 -2
  144. package/assets/docs/elevation.doc.mjs +6 -4
  145. package/assets/docs/getting-started.doc.mjs +5 -16
  146. package/assets/docs/icons.doc.mjs +3 -21
  147. package/assets/docs/illustrations.doc.mjs +7 -15
  148. package/assets/docs/internationalization.doc.mjs +7 -5
  149. package/assets/docs/layout.doc.dense.mjs +130 -82
  150. package/assets/docs/layout.doc.mjs +133 -77
  151. package/assets/docs/migration.doc.mjs +19 -21
  152. package/assets/docs/motion.doc.mjs +16 -3
  153. package/assets/docs/principles.doc.dense.mjs +5 -5
  154. package/assets/docs/principles.doc.mjs +8 -0
  155. package/assets/docs/principles.doc.zh.mjs +6 -6
  156. package/assets/docs/shape.doc.mjs +8 -3
  157. package/assets/docs/spacing.doc.mjs +7 -2
  158. package/assets/docs/styling-libraries.doc.mjs +6 -2
  159. package/assets/docs/styling.doc.mjs +19 -23
  160. package/assets/docs/theme.doc.dense.mjs +58 -18
  161. package/assets/docs/theme.doc.mjs +57 -47
  162. package/assets/docs/theme.doc.zh.mjs +9 -8
  163. package/assets/docs/tokens.doc.dense.mjs +2 -2
  164. package/assets/docs/tokens.doc.mjs +389 -8
  165. package/assets/docs/tokens.doc.zh.mjs +2 -2
  166. package/assets/docs/tree/add-a-component.doc.mjs +75 -0
  167. package/assets/docs/tree/add-a-theme.doc.mjs +85 -0
  168. package/assets/docs/tree/add-a-topic.doc.mjs +144 -0
  169. package/assets/docs/tree/agent-guidance.doc.mjs +138 -0
  170. package/assets/docs/tree/block-template.doc.mjs +130 -0
  171. package/assets/docs/tree/build-the-template.doc.mjs +28 -0
  172. package/assets/docs/tree/building-blocks.doc.mjs +46 -0
  173. package/assets/docs/tree/check-your-docs.doc.mjs +137 -0
  174. package/assets/docs/tree/checks.doc.mjs +119 -0
  175. package/assets/docs/tree/codemods.doc.mjs +147 -0
  176. package/assets/docs/tree/component-family.doc.mjs +113 -0
  177. package/assets/docs/tree/component-imports.doc.mjs +69 -0
  178. package/assets/docs/tree/component-lookups.doc.mjs +149 -0
  179. package/assets/docs/tree/components.doc.mjs +23 -0
  180. package/assets/docs/tree/configuration.doc.mjs +23 -0
  181. package/assets/docs/tree/debug-and-gap-reports.doc.mjs +182 -0
  182. package/assets/docs/tree/define-the-theme.doc.mjs +118 -0
  183. package/assets/docs/tree/describe-the-component.doc.mjs +57 -0
  184. package/assets/docs/tree/docs.doc.mjs +21 -0
  185. package/assets/docs/tree/document-the-template.doc.mjs +28 -0
  186. package/assets/docs/tree/document-the-theme.doc.mjs +68 -0
  187. package/assets/docs/tree/export-template-assets.doc.mjs +147 -0
  188. package/assets/docs/tree/extend-or-replace.doc.mjs +103 -0
  189. package/assets/docs/tree/fonts-and-assets.doc.mjs +106 -0
  190. package/assets/docs/tree/generate-a-palette.doc.mjs +66 -0
  191. package/assets/docs/tree/grade-template-with-agent.doc.mjs +105 -0
  192. package/assets/docs/tree/help.doc.mjs +16 -0
  193. package/assets/docs/tree/integrations.doc.mjs +25 -451
  194. package/assets/docs/tree/links.doc.mjs +98 -0
  195. package/assets/docs/tree/package-and-test.doc.mjs +32 -0
  196. package/assets/docs/tree/page-template.doc.mjs +71 -0
  197. package/assets/docs/tree/publishing.doc.mjs +111 -0
  198. package/assets/docs/tree/quick-start.doc.mjs +272 -0
  199. package/assets/docs/tree/replace-a-core-component.doc.mjs +104 -0
  200. package/assets/docs/tree/replace-a-core-template.doc.mjs +172 -0
  201. package/assets/docs/tree/sections-and-placement.doc.mjs +108 -0
  202. package/assets/docs/tree/see-it-in-an-app.doc.mjs +59 -0
  203. package/assets/docs/tree/ship.doc.mjs +16 -0
  204. package/assets/docs/tree/short-and-findable.doc.mjs +108 -0
  205. package/assets/docs/tree/single-component.doc.mjs +165 -0
  206. package/assets/docs/tree/start-a-template.doc.mjs +143 -0
  207. package/assets/docs/tree/subcomponent.doc.mjs +115 -0
  208. package/assets/docs/tree/template-assets.doc.mjs +64 -0
  209. package/assets/docs/tree/template-doc-overview.doc.mjs +121 -0
  210. package/assets/docs/tree/template-fonts.doc.mjs +102 -0
  211. package/assets/docs/tree/template-grading-rubric.doc.mjs +452 -0
  212. package/assets/docs/tree/template-icons.doc.mjs +97 -0
  213. package/assets/docs/tree/template-images-media.doc.mjs +127 -0
  214. package/assets/docs/tree/template-styles.doc.mjs +93 -0
  215. package/assets/docs/tree/templates.doc.mjs +34 -0
  216. package/assets/docs/tree/test-in-an-app.doc.mjs +115 -0
  217. package/assets/docs/tree/test-template-in-app.doc.mjs +128 -0
  218. package/assets/docs/tree/themes.doc.mjs +39 -0
  219. package/assets/docs/tree/troubleshooting.doc.mjs +153 -0
  220. package/assets/docs/tree/upgrading.doc.mjs +103 -0
  221. package/assets/docs/tree/use-a-theme-in-an-app.doc.mjs +51 -0
  222. package/assets/docs/tree/verify-packed-template.doc.mjs +77 -0
  223. package/assets/docs/tree/versioning.doc.mjs +162 -0
  224. package/assets/docs/tree/write-good-templates.doc.mjs +64 -0
  225. package/assets/docs/tree/write-the-template-file.doc.mjs +154 -0
  226. package/assets/docs/typography.doc.mjs +24 -4
  227. package/assets/docs/working-with-ai.doc.mjs +30 -22
  228. package/assets/templates/blocks/components/InternationalizationProvider/InternationalizationProvider01ShippedLocale.tsx +1 -1
  229. package/assets/templates/pages/ai-chat/template.doc.mjs +16 -1
  230. package/assets/templates/pages/ai-chat-landing/template.doc.mjs +9 -1
  231. package/assets/templates/pages/blank/template.doc.mjs +3 -1
  232. package/assets/templates/pages/canvas-editor/template.doc.mjs +9 -1
  233. package/assets/templates/pages/centered-hero/template.doc.mjs +3 -1
  234. package/assets/templates/pages/checkout-wizard/template.doc.mjs +1 -0
  235. package/assets/templates/pages/classic-gallery/template.doc.mjs +3 -1
  236. package/assets/templates/pages/contact-form/template.doc.mjs +16 -1
  237. package/assets/templates/pages/dashboard/template.doc.mjs +15 -1
  238. package/assets/templates/pages/dashboard-alert-rail/template.doc.mjs +23 -1
  239. package/assets/templates/pages/dashboard-cohort-funnel/template.doc.mjs +10 -1
  240. package/assets/templates/pages/dashboard-comparison/template.doc.mjs +9 -1
  241. package/assets/templates/pages/dashboard-composition/template.doc.mjs +10 -1
  242. package/assets/templates/pages/dashboard-progress/template.doc.mjs +17 -1
  243. package/assets/templates/pages/dashboard-scorecard/template.doc.mjs +2 -1
  244. package/assets/templates/pages/detail-page/template.doc.mjs +8 -0
  245. package/assets/templates/pages/documentation/template.doc.mjs +10 -1
  246. package/assets/templates/pages/documentation-design/template.doc.mjs +10 -1
  247. package/assets/templates/pages/documentation-technical/template.doc.mjs +10 -1
  248. package/assets/templates/pages/editor/template.doc.mjs +9 -1
  249. package/assets/templates/pages/file-explorer/template.doc.mjs +3 -1
  250. package/assets/templates/pages/form-two-column/template.doc.mjs +17 -1
  251. package/assets/templates/pages/form-wizard/template.doc.mjs +14 -1
  252. package/assets/templates/pages/form-wizard-dialog/template.doc.mjs +1 -0
  253. package/assets/templates/pages/gallery-hero/template.doc.mjs +10 -1
  254. package/assets/templates/pages/ide/template.doc.mjs +9 -1
  255. package/assets/templates/pages/incident-console/template.doc.mjs +10 -1
  256. package/assets/templates/pages/kanban-board/template.doc.mjs +11 -1
  257. package/assets/templates/pages/library/template.doc.mjs +15 -1
  258. package/assets/templates/pages/login/template.doc.mjs +10 -1
  259. package/assets/templates/pages/login-card/template.doc.mjs +11 -1
  260. package/assets/templates/pages/login-split/template.doc.mjs +10 -1
  261. package/assets/templates/pages/login-sso/template.doc.mjs +10 -1
  262. package/assets/templates/pages/messaging-shell/template.doc.mjs +11 -1
  263. package/assets/templates/pages/mixed-gallery/template.doc.mjs +10 -1
  264. package/assets/templates/pages/payment-form/template.doc.mjs +3 -1
  265. package/assets/templates/pages/product-detail/template.doc.mjs +9 -1
  266. package/assets/templates/pages/product-gallery/template.doc.mjs +10 -1
  267. package/assets/templates/pages/settings/template.doc.mjs +3 -1
  268. package/assets/templates/pages/settings-dialog/template.doc.mjs +9 -1
  269. package/assets/templates/pages/settings-sidebar/template.doc.mjs +9 -1
  270. package/assets/templates/pages/shell-nav/template.doc.mjs +10 -1
  271. package/assets/templates/pages/shell-side-nav/template.doc.mjs +14 -1
  272. package/assets/templates/pages/shell-top-nav/template.doc.mjs +11 -1
  273. package/assets/templates/pages/side-gallery/template.doc.mjs +3 -1
  274. package/assets/templates/pages/table/template.doc.mjs +11 -1
  275. package/assets/templates/pages/table-filter/template.doc.mjs +21 -1
  276. package/assets/templates/pages/table-grouped/template.doc.mjs +15 -1
  277. package/assets/templates/pages/table-inbox/template.doc.mjs +18 -6
  278. package/assets/templates/pages/table-page/template.doc.mjs +20 -1
  279. package/assets/templates/pages/table-tree/template.doc.mjs +14 -1
  280. package/assets/templates/pages/theme-showcase/template.doc.mjs +10 -1
  281. package/assets/templates/pages/work-item-detail/template.doc.mjs +10 -0
  282. package/assets/templates/themes/butter/icons.tsx +2 -0
  283. package/assets/templates/themes/chocolate/icons.tsx +2 -0
  284. package/assets/templates/themes/gothic/icons.tsx +2 -0
  285. package/assets/templates/themes/matcha/icons.tsx +2 -0
  286. package/assets/templates/themes/neutral/icons.tsx +2 -0
  287. package/assets/templates/themes/stone/icons.tsx +2 -0
  288. package/assets/templates/themes/y2k/icons.tsx +2 -0
  289. package/authoring/config/config.doc.mjs +9 -1
  290. package/authoring/config/parse.d.mts +2 -0
  291. package/authoring/config/parse.mjs +19 -0
  292. package/authoring/config/parse.test.mjs +8 -0
  293. package/authoring/config/type.ts +11 -0
  294. package/authoring/discover/discover.doc.d.mts +13 -0
  295. package/authoring/discover/discover.doc.mjs +138 -0
  296. package/authoring/discover/parse.d.mts +24 -0
  297. package/authoring/discover/parse.mjs +128 -0
  298. package/authoring/discover/parse.test.mjs +124 -0
  299. package/authoring/discover/type.ts +87 -0
  300. package/authoring/doctypes/_schema.d.mts +3 -2
  301. package/authoring/doctypes/_schema.mjs +6 -0
  302. package/authoring/doctypes/base/graph-fields.doc.mjs +3 -3
  303. package/authoring/doctypes/base/type.ts +4 -2
  304. package/authoring/doctypes/component/component.doc.mjs +6 -0
  305. package/authoring/doctypes/component/type.ts +8 -0
  306. package/authoring/doctypes/reference/reference.doc.mjs +7 -0
  307. package/authoring/doctypes/reference/type.ts +5 -0
  308. package/authoring/doctypes/schema/schema.doc.mjs +2 -2
  309. package/authoring/doctypes/template/parse.d.mts +2 -0
  310. package/authoring/doctypes/template/parse.mjs +1 -0
  311. package/authoring/doctypes/template/parse.test.mjs +21 -0
  312. package/authoring/doctypes/template/template.doc.mjs +7 -1
  313. package/authoring/doctypes/template/type.ts +12 -2
  314. package/authoring/index.d.mts +1 -0
  315. package/authoring/index.d.ts +10 -0
  316. package/authoring/index.mjs +1 -0
  317. package/authoring/integration/integration.doc.mjs +12 -10
  318. package/clients/cli/commands/component/index.mjs +152 -55
  319. package/clients/cli/commands/component-batch.test.mjs +341 -0
  320. package/clients/cli/commands/component-ownership.test.mjs +89 -0
  321. package/clients/cli/commands/component.doc.mjs +27 -9
  322. package/clients/cli/commands/discover.doc.mjs +53 -9
  323. package/clients/cli/commands/discover.mjs +393 -118
  324. package/clients/cli/commands/discover.sources.test.mjs +267 -0
  325. package/clients/cli/commands/docs.doc.mjs +1 -1
  326. package/clients/cli/commands/docs.mjs +60 -17
  327. package/clients/cli/commands/docs.test.mjs +113 -24
  328. package/clients/cli/commands/doctor-integration-docs.doc.mjs +3 -2
  329. package/clients/cli/commands/doctor-integration.test.mjs +53 -0
  330. package/clients/cli/commands/doctor.doc.mjs +3 -1
  331. package/clients/cli/commands/doctor.mjs +53 -9
  332. package/clients/cli/commands/gap-report.doc.mjs +10 -9
  333. package/clients/cli/commands/init.doc.mjs +9 -6
  334. package/clients/cli/commands/integration-add.doc.mjs +17 -7
  335. package/clients/cli/commands/integration-authoring.test.mjs +70 -9
  336. package/clients/cli/commands/integration-pack.doc.mjs +5 -9
  337. package/clients/cli/commands/integration-real-world.test.mjs +1 -1
  338. package/clients/cli/commands/integration-verify.doc.mjs +22 -0
  339. package/clients/cli/commands/integration.doc.mjs +4 -4
  340. package/clients/cli/commands/integration.mjs +76 -43
  341. package/clients/cli/commands/layout-expand.doc.mjs +3 -1
  342. package/clients/cli/commands/layout.expand-receipt.test.mjs +94 -0
  343. package/clients/cli/commands/layout.mjs +16 -0
  344. package/clients/cli/commands/manifest.doc.mjs +1 -1
  345. package/clients/cli/commands/search.doc.mjs +10 -3
  346. package/clients/cli/commands/search.mjs +21 -2
  347. package/clients/cli/commands/search.test.mjs +21 -4
  348. package/clients/cli/commands/swizzle.doc.mjs +1 -1
  349. package/clients/cli/commands/template.copy-receipt.test.mjs +60 -0
  350. package/clients/cli/commands/template.doc.mjs +1 -1
  351. package/clients/cli/commands/template.mjs +19 -5
  352. package/clients/cli/commands/template.show-media.test.mjs +62 -0
  353. package/clients/cli/commands/text-json-parity.test.mjs +7 -1
  354. package/clients/cli/commands/theme-add.doc.mjs +1 -1
  355. package/clients/cli/commands/theme-palette-generate.doc.mjs +3 -2
  356. package/clients/cli/commands/theme-palette.doc.mjs +1 -2
  357. package/clients/cli/commands/theme-targets.doc.mjs +2 -2
  358. package/clients/cli/commands/theme.doc.mjs +2 -1
  359. package/clients/cli/commands/upgrade.ascii-output.test.mjs +14 -0
  360. package/clients/cli/commands/upgrade.doc.mjs +62 -3
  361. package/clients/cli/commands/write-failure.test.mjs +175 -0
  362. package/clients/cli/index.mjs +28 -6
  363. package/clients/cli/lib/define-command.mjs +28 -4
  364. package/clients/cli/lib/define-command.test.mjs +54 -0
  365. package/clients/cli/lib/exit-codes.test.mjs +17 -1
  366. package/clients/cli/lib/json-shim.mjs +24 -14
  367. package/clients/cli/lib/manifest.mjs +48 -156
  368. package/clients/cli/lib/manifest.test.mjs +103 -9
  369. package/clients/cli/lib/parse-error-format.test.mjs +81 -0
  370. package/foundation/agent-docs/agent-docs.mjs +1 -1
  371. package/foundation/agent-docs/agent-docs.test.mjs +3 -2
  372. package/foundation/discovery/authoring-self-docs.mjs +1 -0
  373. package/foundation/discovery/authoring-self-docs.test.mjs +6 -2
  374. package/foundation/discovery/cli-self-docs.mjs +16 -2
  375. package/foundation/discovery/cli-self-docs.test.mjs +20 -0
  376. package/foundation/discovery/docs-discovery.mjs +5 -1
  377. package/foundation/discovery/docs-discovery.test.mjs +21 -0
  378. package/foundation/discovery/docs-section-key.d.mts +1 -1
  379. package/foundation/discovery/docs-section-key.mjs +1 -1
  380. package/foundation/discovery/template-adapter.d.mts +14 -0
  381. package/foundation/discovery/template-adapter.fixture-refs.test.mjs +37 -1
  382. package/foundation/discovery/template-adapter.mjs +21 -1
  383. package/foundation/doc-compiler/doc-loads.test.mjs +5 -4
  384. package/foundation/doc-compiler/inputs.test.mjs +0 -1
  385. package/foundation/doc-compiler/tree.d.mts +4 -0
  386. package/foundation/doc-compiler/tree.mjs +6 -1
  387. package/foundation/doc-compiler/tree.test.mjs +65 -14
  388. package/foundation/integrations/cli-requirement.d.mts +75 -11
  389. package/foundation/integrations/cli-requirement.mjs +120 -23
  390. package/foundation/integrations/cli-requirement.test.mjs +141 -9
  391. package/foundation/integrations/contribution-inventory.mjs +1 -1
  392. package/foundation/integrations/integrations.d.mts +14 -1
  393. package/foundation/integrations/integrations.mjs +41 -1
  394. package/foundation/integrations/integrations.test.mjs +31 -0
  395. package/foundation/response/batch.type.d.mts +33 -0
  396. package/foundation/response/batch.type.mjs +34 -0
  397. package/foundation/response/error-codes.doc.mjs +6 -8
  398. package/foundation/response/error-codes.test.mjs +30 -5
  399. package/foundation/response/response-types.doc.d.mts +5 -4
  400. package/foundation/response/response-types.doc.mjs +49 -19
  401. package/foundation/response/response-types.doc.test.mjs +23 -0
  402. package/foundation/response/response.doc.mjs +11 -10
  403. package/package.json +9 -9
  404. package/assets/docs/tree/integrations.test.mjs +0 -62
  405. package/assets/docs/tree/writing-docs.doc.mjs +0 -286
@@ -5,7 +5,17 @@ export const doc = {
5
5
  type: 'page',
6
6
  name: 'Kanban Board',
7
7
  displayName: 'Kanban Board',
8
- description: 'Horizontal lanes of draggable cards where the column itself is the status, so drag and drop between lanes is the state change. Fixed columns, variable-height cards. Kanban, board, swimlane, sprint, backlog, tasks, or pipeline.',
8
+ description:
9
+ 'Horizontal lanes of draggable cards where the column itself is the status, so drag and drop between lanes is the state change. Fixed columns, variable-height cards.',
10
+ keywords: [
11
+ 'kanban',
12
+ 'board',
13
+ 'swimlane',
14
+ 'sprint',
15
+ 'backlog',
16
+ 'tasks',
17
+ 'pipeline',
18
+ ],
9
19
  isReady: true,
10
20
  category: 'Tools - Kanban Board',
11
21
  };
@@ -5,7 +5,21 @@ export const doc = {
5
5
  type: 'page',
6
6
  name: 'Card Grid',
7
7
  displayName: 'Card Grid',
8
- description: 'Searchable, browsable card grid with filter tabs and a real empty state: uniform tiles organized by topic, narrowing in place, with no detail surface behind them. Catalog, index, directory, library, browse, or gallery of entries.',
8
+ description:
9
+ 'Searchable, browsable card grid with filter tabs and a real empty state: uniform tiles organized by topic, narrowing in place, with no detail surface behind them.',
10
+ keywords: [
11
+ 'catalog',
12
+ 'index',
13
+ 'directory',
14
+ 'library',
15
+ 'browse',
16
+ 'gallery of entries',
17
+ 'hub',
18
+ 'landing',
19
+ 'feed',
20
+ 'tags',
21
+ 'previews',
22
+ ],
9
23
  isReady: true,
10
24
  category: 'Content - Card Grid',
11
25
  };
@@ -5,7 +5,16 @@ export const doc = {
5
5
  type: 'page',
6
6
  name: 'Basic Login',
7
7
  displayName: 'Basic Login',
8
- description: 'Minimal centered credential form on a plain ground: two fields and a submit, nothing competing for attention. The least-chrome entry surface. Login, sign in, signin, authentication, credentials, or account access.',
8
+ description:
9
+ 'Minimal centered credential form on a plain ground: two fields and a submit, nothing competing for attention. The least-chrome entry surface.',
10
+ keywords: [
11
+ 'login',
12
+ 'sign in',
13
+ 'signin',
14
+ 'authentication',
15
+ 'credentials',
16
+ 'account access',
17
+ ],
9
18
  isReady: true,
10
19
  isHiddenFromOverview: true,
11
20
  category: 'Login - Basic',
@@ -5,7 +5,17 @@ export const doc = {
5
5
  type: 'page',
6
6
  name: 'Login Card',
7
7
  displayName: 'Login Card',
8
- description: 'Credential form inside an elevated centered card, third-party provider buttons separated from the fields by a divider, secondary sign-up and legal links beneath. Login, sign in, signin, authentication, credentials, social, or account access.',
8
+ description:
9
+ 'Credential form inside an elevated centered card, third-party provider buttons separated from the fields by a divider, secondary sign-up and legal links beneath.',
10
+ keywords: [
11
+ 'login',
12
+ 'sign in',
13
+ 'signin',
14
+ 'authentication',
15
+ 'credentials',
16
+ 'social',
17
+ 'account access',
18
+ ],
9
19
  isReady: true,
10
20
  category: 'Login - Card',
11
21
  };
@@ -5,7 +5,16 @@ export const doc = {
5
5
  type: 'page',
6
6
  name: 'Login Split',
7
7
  displayName: 'Login Split',
8
- description: 'Credential form filling one half of a two-pane split, full-bleed media holding the other. Same fields as the card variant, but the layout carries brand imagery. Login, sign in, signin, authentication, credentials, or account access.',
8
+ description:
9
+ 'Credential form filling one half of a two-pane split, full-bleed media holding the other. Same fields as the card variant, but the layout carries brand imagery.',
10
+ keywords: [
11
+ 'login',
12
+ 'sign in',
13
+ 'signin',
14
+ 'authentication',
15
+ 'credentials',
16
+ 'account access',
17
+ ],
9
18
  isReady: true,
10
19
  category: 'Login - Split',
11
20
  };
@@ -5,7 +5,16 @@ export const doc = {
5
5
  type: 'page',
6
6
  name: 'Login SSO',
7
7
  displayName: 'Login SSO',
8
- description: 'Progressive credential flow that branches on input: the email domain resolves an identity provider and redirects, with a password path as fallback. Two-stage rather than one form. Single sign-on, SSO, SAML, enterprise login, directory, or corporate authentication.',
8
+ description:
9
+ 'Progressive credential flow that branches on input: the email domain resolves an identity provider and redirects, with a password path as fallback. Two-stage rather than one form.',
10
+ keywords: [
11
+ 'single sign-on',
12
+ 'sso',
13
+ 'saml',
14
+ 'enterprise login',
15
+ 'directory',
16
+ 'corporate authentication',
17
+ ],
9
18
  isReady: true,
10
19
  category: 'Login - SSO',
11
20
  };
@@ -5,7 +5,17 @@ export const doc = {
5
5
  type: 'page',
6
6
  name: 'Messaging Shell',
7
7
  displayName: 'Messaging Shell',
8
- description: 'Four-column nested navigation narrowing left to right (team workspace, channel list, message stream, thread panel) where each column scopes the next. Dense rows, zero cards. Team messaging, chat, channels, threads, inbox, direct message, or conversation workspace.',
8
+ description:
9
+ 'Four-column nested navigation narrowing left to right (team workspace, channel list, message stream, thread panel) where each column scopes the next. Dense rows, zero cards.',
10
+ keywords: [
11
+ 'team messaging',
12
+ 'chat',
13
+ 'channels',
14
+ 'threads',
15
+ 'inbox',
16
+ 'direct message',
17
+ 'conversation workspace',
18
+ ],
9
19
  isReady: false,
10
20
  category: 'Shell - Messaging',
11
21
  };
@@ -4,7 +4,16 @@
4
4
  export const doc = {
5
5
  name: 'Mixed Gallery',
6
6
  displayName: 'Mixed Gallery',
7
- description: 'Masonry grid of variable-height tiles that pack against each other instead of cropping to a shared ratio, captioned per tile. Irregular rhythm, unlike the uniform gallery. Photos, images, pictures, portfolio, masonry, or media wall.',
7
+ description:
8
+ 'Masonry grid of variable-height tiles that pack against each other instead of cropping to a shared ratio, captioned per tile. Irregular rhythm, unlike the uniform gallery.',
9
+ keywords: [
10
+ 'photos',
11
+ 'images',
12
+ 'pictures',
13
+ 'portfolio',
14
+ 'masonry',
15
+ 'media wall',
16
+ ],
8
17
  type: 'page',
9
18
  isReady: true,
10
19
  category: 'Gallery - Mixed',
@@ -5,7 +5,9 @@ export const doc = {
5
5
  type: 'page',
6
6
  name: 'Checkout Form',
7
7
  displayName: 'Checkout Form',
8
- description: 'Long sectioned form running beside a summary that stays visible while the fields scroll and recalculates as they change, ending on a terminal confirm of the total. Sections run contact, address, delivery choice, then card details. Checkout, payment, billing, cart, buyer, or purchase.',
8
+ description:
9
+ 'Long sectioned form running beside a summary that stays visible while the fields scroll and recalculates as they change, ending on a terminal confirm of the total. Sections run contact, address, delivery choice, then card details.',
10
+ keywords: ['checkout', 'payment', 'billing', 'cart', 'buyer', 'purchase'],
9
11
  isReady: true,
10
12
  category: 'Form - Checkout',
11
13
  };
@@ -5,7 +5,15 @@ export const doc = {
5
5
  type: 'page',
6
6
  name: 'Product Detail',
7
7
  displayName: 'Product Detail',
8
- description: 'Single-item detail pairing a media gallery with a selection column: variant swatches, a quantity stepper, primary and secondary commit actions, and collapsible specification sections below. Product, listing, item, catalog entry, or storefront detail.',
8
+ description:
9
+ 'Single-item detail pairing a media gallery with a selection column: variant swatches, a quantity stepper, primary and secondary commit actions, and collapsible specification sections below.',
10
+ keywords: [
11
+ 'product',
12
+ 'listing',
13
+ 'item',
14
+ 'catalog entry',
15
+ 'storefront detail',
16
+ ],
9
17
  isReady: true,
10
18
  category: 'Content - Product Detail',
11
19
  };
@@ -4,7 +4,16 @@
4
4
  export const doc = {
5
5
  name: 'Product Gallery',
6
6
  displayName: 'Product Gallery',
7
- description: 'Uniform card grid where every tile carries media, title, supporting line, and a price. Browse-to-select only, with no filtering and no detail surface. Products, catalog, storefront, shop, listings, or ecommerce grid.',
7
+ description:
8
+ 'Uniform card grid where every tile carries media, title, supporting line, and a price. Browse-to-select only, with no filtering and no detail surface.',
9
+ keywords: [
10
+ 'products',
11
+ 'catalog',
12
+ 'storefront',
13
+ 'shop',
14
+ 'listings',
15
+ 'ecommerce grid',
16
+ ],
8
17
  type: 'page',
9
18
  isReady: true,
10
19
  category: 'Gallery - Product',
@@ -5,7 +5,9 @@ export const doc = {
5
5
  type: 'page',
6
6
  name: 'Settings Form',
7
7
  displayName: 'Settings Form',
8
- description: 'Preferences as one continuously scrolling form, sections stacked in order with no navigation between them. The simplest settings shape: everything reachable by scrolling. Settings, preferences, configuration, options, or account.',
8
+ description:
9
+ 'Preferences as one continuously scrolling form, sections stacked in order with no navigation between them. The simplest settings shape: everything reachable by scrolling.',
10
+ keywords: ['settings', 'preferences', 'configuration', 'options', 'account'],
9
11
  isReady: true,
10
12
  category: 'Settings - Form',
11
13
  };
@@ -5,7 +5,15 @@ export const doc = {
5
5
  type: 'page',
6
6
  name: 'Settings Dialog',
7
7
  displayName: 'Settings Dialog',
8
- description: 'Preferences inside a modal container with searchable section navigation, so configuration happens without leaving whatever is underneath. Grouped toggles, live preview of appearance choices, rebindable shortcuts. Settings, preferences, configuration, options, or modal dialog.',
8
+ description:
9
+ 'Preferences inside a modal container with searchable section navigation, so configuration happens without leaving whatever is underneath. Grouped toggles, live preview of appearance choices, rebindable shortcuts.',
10
+ keywords: [
11
+ 'settings',
12
+ 'preferences',
13
+ 'configuration',
14
+ 'options',
15
+ 'modal dialog',
16
+ ],
9
17
  isReady: true,
10
18
  category: 'Settings - Dialog',
11
19
  };
@@ -5,7 +5,15 @@ export const doc = {
5
5
  type: 'page',
6
6
  name: 'Settings Panels',
7
7
  displayName: 'Settings Panels',
8
- description: 'Preferences split into nav-switched panels: a persistent section list swaps the pane beside it, and rows edit in place rather than opening a separate form. Settings, preferences, configuration, options, or account panels.',
8
+ description:
9
+ 'Preferences split into nav-switched panels: a persistent section list swaps the pane beside it, and rows edit in place rather than opening a separate form.',
10
+ keywords: [
11
+ 'settings',
12
+ 'preferences',
13
+ 'configuration',
14
+ 'options',
15
+ 'account panels',
16
+ ],
9
17
  isReady: true,
10
18
  category: 'Settings - Panels',
11
19
  };
@@ -5,7 +5,16 @@ export const doc = {
5
5
  type: 'page',
6
6
  name: 'Shell Nav',
7
7
  displayName: 'Shell Nav',
8
- description: 'Application frame combining both navigation axes: a top menu bar with command-palette search over a resizable hierarchy rail, wrapping placeholder content. For when one axis is not enough. Shell, chrome, layout frame, navigation, sidebar, or menu bar.',
8
+ description:
9
+ 'Application frame combining both navigation axes: a top menu bar with command-palette search over a resizable hierarchy rail, wrapping placeholder content. For when one axis is not enough.',
10
+ keywords: [
11
+ 'shell',
12
+ 'chrome',
13
+ 'layout frame',
14
+ 'navigation',
15
+ 'sidebar',
16
+ 'menu bar',
17
+ ],
9
18
  isReady: true,
10
19
  category: 'Shell - Top Nav + Left Sidebar',
11
20
  };
@@ -5,7 +5,20 @@ export const doc = {
5
5
  type: 'page',
6
6
  name: 'Side Nav',
7
7
  displayName: 'Side Nav',
8
- description: 'Application frame with a single collapsible, resizable left rail carrying grouped history and search, wrapping the main content. Vertical navigation only, no top bar. Shell, chrome, layout frame, sidebar, drawer, left rail, or navigation.',
8
+ description:
9
+ 'Application frame with a single collapsible, resizable left rail carrying grouped history and search, wrapping the main content. Vertical navigation only, no top bar.',
10
+ keywords: [
11
+ 'shell',
12
+ 'chrome',
13
+ 'layout frame',
14
+ 'sidebar',
15
+ 'drawer',
16
+ 'left rail',
17
+ 'navigation',
18
+ 'desktop app',
19
+ 'directory',
20
+ 'workspace',
21
+ ],
9
22
  isReady: true,
10
23
  category: 'Shell - Left Sidebar',
11
24
  };
@@ -5,7 +5,17 @@ export const doc = {
5
5
  type: 'page',
6
6
  name: 'Top Nav',
7
7
  displayName: 'Top Nav',
8
- description: 'Application frame with horizontal navigation only: a centered bar whose items open full-width mega-menu panels, over placeholder content that keeps the entire width. Shell, chrome, layout frame, header, menu, topbar, or navigation.',
8
+ description:
9
+ 'Application frame with horizontal navigation only: a centered bar whose items open full-width mega-menu panels, over placeholder content that keeps the entire width.',
10
+ keywords: [
11
+ 'shell',
12
+ 'chrome',
13
+ 'layout frame',
14
+ 'header',
15
+ 'menu',
16
+ 'topbar',
17
+ 'navigation',
18
+ ],
9
19
  isReady: true,
10
20
  category: 'Shell - Top Nav',
11
21
  };
@@ -4,7 +4,9 @@
4
4
  export const doc = {
5
5
  name: 'Side Gallery',
6
6
  displayName: 'Side Gallery',
7
- description: 'Asymmetric split section: a copy column of headline, supporting text, and links held against a clustered image collage opposite. Deliberately off-balance, unlike the centered hero. Feature banner, split section, marketing, or gallery intro.',
7
+ description:
8
+ 'Asymmetric split section: a copy column of headline, supporting text, and links held against a clustered image collage opposite. Deliberately off-balance, unlike the centered hero.',
9
+ keywords: ['feature banner', 'split section', 'marketing', 'gallery intro'],
8
10
  type: 'page',
9
11
  isReady: true,
10
12
  category: 'Gallery - Side',
@@ -5,7 +5,17 @@ export const doc = {
5
5
  type: 'page',
6
6
  name: 'Simple Table',
7
7
  displayName: 'Simple Table',
8
- description: 'Flat row collection where columns sort, rows select into a bulk-action toolbar, and each row carries an overflow menu. Sortable but ungrouped, with no detail pane, the baseline shape. Table, list, rows, records, grid, spreadsheet, or roster.',
8
+ description:
9
+ 'Flat row collection where columns sort, rows select into a bulk-action toolbar, and each row carries an overflow menu. Sortable but ungrouped, with no detail pane, the baseline shape.',
10
+ keywords: [
11
+ 'table',
12
+ 'list',
13
+ 'rows',
14
+ 'records',
15
+ 'grid',
16
+ 'spreadsheet',
17
+ 'roster',
18
+ ],
9
19
  isReady: false,
10
20
  category: 'Table - Basic',
11
21
  isHiddenFromOverview: true,
@@ -5,7 +5,27 @@ export const doc = {
5
5
  type: 'page',
6
6
  name: 'Filterable Table',
7
7
  displayName: 'Filterable Table',
8
- description: 'Flat row collection built around progressive filtering: a token bar that escalates into full query syntax, saved views that persist a filter set, column and grouping options, and a resizable detail pane. Table, list, rows, records, grid, search, or filtered dataset.',
8
+ description:
9
+ 'Flat row collection built around progressive filtering: a token bar that escalates into full query syntax, saved views that persist a filter set, column and grouping options, and a resizable detail pane.',
10
+ keywords: [
11
+ 'table',
12
+ 'list',
13
+ 'rows',
14
+ 'records',
15
+ 'grid',
16
+ 'search',
17
+ 'filtered dataset',
18
+ 'searchable list',
19
+ 'filters',
20
+ 'faceted search',
21
+ 'advanced search',
22
+ 'results list',
23
+ 'explorer',
24
+ 'bulk actions',
25
+ 'badges',
26
+ 'detail drawer',
27
+ 'csv export',
28
+ ],
9
29
  isReady: true,
10
30
  category: 'Table - Filtering',
11
31
  };
@@ -5,7 +5,21 @@ export const doc = {
5
5
  type: 'page',
6
6
  name: 'Grouped Table',
7
7
  displayName: 'Grouped Table',
8
- description: 'Row collection bundled into collapsible sections with per-group counts, so a long list reads as a handful of blocks that expand and collapse. Query filtering and a resizable inspector for the selected row. Table, list, rows, records, grid, or grouped dataset.',
8
+ description:
9
+ 'Row collection bundled into collapsible sections with per-group counts, so a long list reads as a handful of blocks that expand and collapse. Query filtering and a resizable inspector for the selected row.',
10
+ keywords: [
11
+ 'table',
12
+ 'list',
13
+ 'rows',
14
+ 'records',
15
+ 'grid',
16
+ 'grouped dataset',
17
+ 'to-do list',
18
+ 'todo',
19
+ 'priorities',
20
+ 'completed items',
21
+ 'checkboxes',
22
+ ],
9
23
  isReady: true,
10
24
  category: 'Table - Grouped',
11
25
  };
@@ -6,12 +6,24 @@ export const doc = {
6
6
  name: 'Inbox Table',
7
7
  displayName: 'Inbox Table',
8
8
  description:
9
- 'Two-pane message queue: the table indexes a reading pane rather than ' +
10
- 'being the destination, with a divider you drag to resize. Rows stack ' +
11
- 'when the table narrows, not the window; threads read as collapsible ' +
12
- 'messages; replying opens a composer that leaves the list live. Inbox, ' +
13
- 'mail, email, conversations, thread, triage, reading pane, split pane, ' +
14
- 'resize, collapse, compose, or notifications.',
9
+ 'Two-pane message queue: the table indexes a reading pane rather than being the destination, with a divider you drag to resize. Rows stack when the table narrows, not the window; threads read as collapsible messages; replying opens a composer that leaves the list live.',
10
+ keywords: [
11
+ 'inbox',
12
+ 'mail',
13
+ 'email',
14
+ 'conversations',
15
+ 'thread',
16
+ 'triage',
17
+ 'reading pane',
18
+ 'split pane',
19
+ 'resize',
20
+ 'collapse',
21
+ 'compose',
22
+ 'notifications',
23
+ 'review queue',
24
+ 'approvals',
25
+ 'decisions',
26
+ ],
15
27
  isReady: true,
16
28
  category: 'Table - Split Pane',
17
29
  };
@@ -6,7 +6,26 @@ export const doc = {
6
6
  name: 'Searchable Table',
7
7
  displayName: 'Searchable Table',
8
8
  description:
9
- 'Flat table of uniform rows under a block of record-level facts, narrowed three ways at once — a full-text search box, a scope toggle, and per-column popovers — with sortable and filterable columns, per-row hover detail, and totals derived from the visible rows that flag themselves as partial while a filter is on. The shape for one homogeneous list, not nested rows or groups with their own columns. Search, filter, sort, table, data table, flat rows, records, dataset, or totals.',
9
+ 'Flat table of uniform rows under a block of record-level facts, narrowed three ways at once — a full-text search box, a scope toggle, and per-column popovers — with sortable and filterable columns, per-row hover detail, and totals derived from the visible rows that flag themselves as partial while a filter is on. The shape for one homogeneous list, not nested rows or groups with their own columns.',
10
+ keywords: [
11
+ 'search',
12
+ 'filter',
13
+ 'sort',
14
+ 'table',
15
+ 'flat rows',
16
+ 'records',
17
+ 'dataset',
18
+ 'totals',
19
+ 'roster',
20
+ 'inventory',
21
+ 'assets',
22
+ 'registry',
23
+ 'lookup',
24
+ 'report table',
25
+ 'numeric columns',
26
+ 'pagination',
27
+ 'csv export',
28
+ ],
10
29
  isReady: true,
11
30
  category: 'Table - Basic',
12
31
  };
@@ -6,7 +6,20 @@ export const doc = {
6
6
  name: 'Tree Table',
7
7
  displayName: 'Tree Table',
8
8
  description:
9
- 'Hierarchical table where every parent row rolls up from its children — a code repository whose folders show the newest commit beneath them, beside a detail sidebar and a rendered README. Columns resize, siblings sort within their own level, arrow keys walk the rows, and search prunes the tree to matching branches. Tree, hierarchy, nested rows, drilldown, expand, collapse, resizable, expandable, file browser, repository, rolled-up parents.',
9
+ 'Hierarchical table where every parent row rolls up from its children — a code repository whose folders show the newest commit beneath them, beside a detail sidebar and a rendered README. Columns resize, siblings sort within their own level, arrow keys walk the rows, and search prunes the tree to matching branches.',
10
+ keywords: [
11
+ 'tree',
12
+ 'hierarchy',
13
+ 'nested rows',
14
+ 'drilldown',
15
+ 'expand',
16
+ 'collapse',
17
+ 'resizable',
18
+ 'expandable',
19
+ 'file browser',
20
+ 'repository',
21
+ 'rolled-up parents',
22
+ ],
10
23
  isReady: true,
11
24
  category: 'Table - Tree/Hierarchical List',
12
25
  };
@@ -5,7 +5,16 @@ export const doc = {
5
5
  type: 'page',
6
6
  name: 'Theme Showcase',
7
7
  displayName: 'Theme Showcase',
8
- description: 'Several unrelated product surfaces rendered together on one canvas so a token change can be judged across contexts at once. A comparison harness rather than a layout to ship. Theme, tokens, palette, typography, styling, or design system preview.',
8
+ description:
9
+ 'Several unrelated product surfaces rendered together on one canvas so a token change can be judged across contexts at once. A comparison harness rather than a layout to ship.',
10
+ keywords: [
11
+ 'theme',
12
+ 'tokens',
13
+ 'palette',
14
+ 'typography',
15
+ 'styling',
16
+ 'design system preview',
17
+ ],
9
18
  isReady: true,
10
19
  // Surfaced via the Themes page "Open in Playground" action, not the
11
20
  // Templates gallery, so keep it out of the overview + playground menu.
@@ -7,6 +7,16 @@ export const doc = {
7
7
  displayName: 'Work Item Detail',
8
8
  description:
9
9
  'Single work-item detail in two columns: a title with a status selector, a description, a subtask checklist with progress, an attachments block, and a comment and activity feed in the main column, plus a property rail with assignee, dates, labels, and linked items. The shape for any tracked item with children, properties, and a comment history — a task, ticket, issue, story, bug, card, request, or work item.',
10
+ keywords: [
11
+ 'task',
12
+ 'ticket',
13
+ 'issue',
14
+ 'story',
15
+ 'bug',
16
+ 'card',
17
+ 'request',
18
+ 'work item',
19
+ ],
10
20
  isReady: true,
11
21
  category: 'Content - Work Item Detail',
12
22
  };
@@ -31,6 +31,7 @@ import {
31
31
  Menu,
32
32
  MoreHorizontal,
33
33
  Search,
34
+ Upload,
34
35
  ArrowUp,
35
36
  ArrowDown,
36
37
  ArrowUpDown,
@@ -67,6 +68,7 @@ export const butterIconRegistry: IconRegistry = {
67
68
  menu: <Menu {...iconProps} />,
68
69
  moreHorizontal: <MoreHorizontal {...iconProps} />,
69
70
  search: <Search {...iconProps} />,
71
+ upload: <Upload {...iconProps} />,
70
72
  arrowUp: <ArrowUp {...iconProps} />,
71
73
  arrowDown: <ArrowDown {...iconProps} />,
72
74
  arrowsUpDown: <ArrowUpDown {...iconProps} />,
@@ -31,6 +31,7 @@ import {
31
31
  Menu,
32
32
  MoreHorizontal,
33
33
  Search,
34
+ Upload,
34
35
  ArrowUp,
35
36
  ArrowDown,
36
37
  ArrowUpDown,
@@ -67,6 +68,7 @@ export const chocolateIconRegistry: IconRegistry = {
67
68
  menu: <Menu {...iconProps} />,
68
69
  moreHorizontal: <MoreHorizontal {...iconProps} />,
69
70
  search: <Search {...iconProps} />,
71
+ upload: <Upload {...iconProps} />,
70
72
  arrowUp: <ArrowUp {...iconProps} />,
71
73
  arrowDown: <ArrowDown {...iconProps} />,
72
74
  arrowsUpDown: <ArrowUpDown {...iconProps} />,
@@ -31,6 +31,7 @@ import {
31
31
  Menu,
32
32
  MoreHorizontal,
33
33
  Search,
34
+ Upload,
34
35
  ArrowUp,
35
36
  ArrowDown,
36
37
  ArrowUpDown,
@@ -67,6 +68,7 @@ export const gothicIconRegistry: IconRegistry = {
67
68
  menu: <Menu {...iconProps} />,
68
69
  moreHorizontal: <MoreHorizontal {...iconProps} />,
69
70
  search: <Search {...iconProps} />,
71
+ upload: <Upload {...iconProps} />,
70
72
  arrowUp: <ArrowUp {...iconProps} />,
71
73
  arrowDown: <ArrowDown {...iconProps} />,
72
74
  arrowsUpDown: <ArrowUpDown {...iconProps} />,
@@ -21,6 +21,7 @@ import {
21
21
  Menu,
22
22
  MoreHorizontal,
23
23
  Search,
24
+ Upload,
24
25
  ArrowUp,
25
26
  ArrowDown,
26
27
  ArrowUpDown,
@@ -57,6 +58,7 @@ export const matchaIconRegistry: IconRegistry = {
57
58
  menu: <Menu {...iconProps} />,
58
59
  moreHorizontal: <MoreHorizontal {...iconProps} />,
59
60
  search: <Search {...iconProps} />,
61
+ upload: <Upload {...iconProps} />,
60
62
  arrowUp: <ArrowUp {...iconProps} />,
61
63
  arrowDown: <ArrowDown {...iconProps} />,
62
64
  arrowsUpDown: <ArrowUpDown {...iconProps} />,
@@ -31,6 +31,7 @@ import {
31
31
  Menu,
32
32
  MoreHorizontal,
33
33
  Search,
34
+ Upload,
34
35
  ArrowUp,
35
36
  ArrowDown,
36
37
  ArrowUpDown,
@@ -67,6 +68,7 @@ export const neutralIconRegistry: IconRegistry = {
67
68
  menu: <Menu {...iconProps} />,
68
69
  moreHorizontal: <MoreHorizontal {...iconProps} />,
69
70
  search: <Search {...iconProps} />,
71
+ upload: <Upload {...iconProps} />,
70
72
  arrowUp: <ArrowUp {...iconProps} />,
71
73
  arrowDown: <ArrowDown {...iconProps} />,
72
74
  arrowsUpDown: <ArrowUpDown {...iconProps} />,
@@ -31,6 +31,7 @@ import {
31
31
  Menu,
32
32
  MoreHorizontal,
33
33
  Search,
34
+ Upload,
34
35
  ArrowUp,
35
36
  ArrowDown,
36
37
  ArrowUpDown,
@@ -67,6 +68,7 @@ export const stoneIconRegistry: IconRegistry = {
67
68
  menu: <Menu {...iconProps} />,
68
69
  moreHorizontal: <MoreHorizontal {...iconProps} />,
69
70
  search: <Search {...iconProps} />,
71
+ upload: <Upload {...iconProps} />,
70
72
  arrowUp: <ArrowUp {...iconProps} />,
71
73
  arrowDown: <ArrowDown {...iconProps} />,
72
74
  arrowsUpDown: <ArrowUpDown {...iconProps} />,
@@ -21,6 +21,7 @@ import {
21
21
  Menu,
22
22
  MoreHorizontal,
23
23
  Search,
24
+ Upload,
24
25
  ArrowUp,
25
26
  ArrowDown,
26
27
  ArrowUpDown,
@@ -57,6 +58,7 @@ export const y2kIconRegistry: IconRegistry = {
57
58
  menu: <Menu {...iconProps} />,
58
59
  moreHorizontal: <MoreHorizontal {...iconProps} />,
59
60
  search: <Search {...iconProps} />,
61
+ upload: <Upload {...iconProps} />,
60
62
  arrowUp: <ArrowUp {...iconProps} />,
61
63
  arrowDown: <ArrowDown {...iconProps} />,
62
64
  arrowsUpDown: <ArrowUpDown {...iconProps} />,