@astryxdesign/cli 0.6.4-canary.f0355e3 → 0.6.4

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 (331) hide show
  1. package/README.md +96 -99
  2. package/api/build/build.doc.mjs +1 -6
  3. package/api/build/build.test.mjs +0 -22
  4. package/api/build/kit/kit.mjs +5 -44
  5. package/api/component/_adapter.d.mts +0 -25
  6. package/api/component/_adapter.mjs +5 -59
  7. package/api/component/component.d.mts +3 -6
  8. package/api/component/component.doc.mjs +17 -37
  9. package/api/component/component.mjs +9 -249
  10. package/api/component/component.type.d.mts +0 -25
  11. package/api/component/component.type.mjs +0 -44
  12. package/api/discover/_adapter.d.mts +6 -114
  13. package/api/discover/_adapter.mjs +17 -372
  14. package/api/discover/detail/detail.d.mts +6 -18
  15. package/api/discover/detail/detail.mjs +13 -67
  16. package/api/discover/detail/detail.test.mjs +0 -85
  17. package/api/discover/discover.d.mts +9 -3
  18. package/api/discover/discover.doc.mjs +18 -61
  19. package/api/discover/discover.mjs +36 -220
  20. package/api/discover/discover.test.mjs +2 -11
  21. package/api/discover/discover.type.d.mts +8 -147
  22. package/api/discover/discover.type.mjs +12 -102
  23. package/api/discover/list/list.d.mts +6 -20
  24. package/api/discover/list/list.mjs +12 -45
  25. package/api/discover/list/list.test.mjs +0 -46
  26. package/api/discover/search/search.d.mts +16 -18
  27. package/api/discover/search/search.mjs +56 -102
  28. package/api/discover/search/search.test.mjs +10 -144
  29. package/api/docs/_adapter.d.mts +3 -8
  30. package/api/docs/_adapter.mjs +6 -14
  31. package/api/docs/docOverlays.test.mjs +1 -27
  32. package/api/docs/docs.doc.mjs +2 -2
  33. package/api/docs/docs.test.mjs +243 -0
  34. package/api/docs/integration-tree.test.mjs +555 -0
  35. package/api/docs/integrationDocs.test.mjs +314 -0
  36. package/api/doctor/doctor.d.mts +3 -8
  37. package/api/doctor/doctor.doc.mjs +8 -17
  38. package/api/doctor/doctor.mjs +9 -90
  39. package/api/doctor/doctor.test.mjs +10 -122
  40. package/api/doctor/doctor.type.d.mts +1 -1
  41. package/api/doctor/doctor.type.mjs +1 -1
  42. package/api/gap-report/gap-report.doc.mjs +10 -19
  43. package/api/hook/hook.doc.mjs +3 -6
  44. package/api/index.d.mts +2 -1
  45. package/api/index.mjs +5 -5
  46. package/api/init/init.doc.mjs +12 -17
  47. package/api/integration/add-helpers.d.mts +2 -5
  48. package/api/integration/add-helpers.mjs +9 -36
  49. package/api/integration/add-theme.mjs +1 -22
  50. package/api/integration/add-theme.test.mjs +0 -34
  51. package/api/integration/authoring-checks.mjs +2 -2
  52. package/api/integration/integrationPackCheck.doc.mjs +3 -3
  53. package/api/integration/pack-check.mjs +9 -82
  54. package/api/integration/pack-check.test.mjs +0 -90
  55. package/api/integration/pack-check.type.mjs +1 -1
  56. package/api/json/assertResponse.doc.mjs +1 -1
  57. package/api/json/index.ts +1 -0
  58. package/api/json/isError.doc.mjs +1 -1
  59. package/api/layout/_adapter.d.mts +34 -0
  60. package/api/layout/_adapter.mjs +148 -0
  61. package/api/layout/check/check.d.mts +16 -0
  62. package/api/layout/check/check.mjs +40 -0
  63. package/api/layout/expand/expand.d.mts +22 -0
  64. package/api/layout/expand/expand.mjs +155 -0
  65. package/api/layout/expand/expand.path-safety.test.mjs +53 -0
  66. package/api/layout/grammar/grammar.d.mts +13 -0
  67. package/api/layout/grammar/grammar.mjs +87 -0
  68. package/api/layout/layout.d.mts +6 -0
  69. package/api/layout/layout.mjs +17 -0
  70. package/api/layout/layout.test.mjs +297 -0
  71. package/api/layout/layout.type.d.mts +89 -0
  72. package/api/layout/layout.type.mjs +103 -0
  73. package/api/layout/layoutCheck.doc.d.mts +11 -0
  74. package/api/layout/layoutCheck.doc.mjs +85 -0
  75. package/api/layout/layoutExpand.doc.d.mts +11 -0
  76. package/api/layout/layoutExpand.doc.mjs +107 -0
  77. package/api/layout/layoutGrammar.doc.d.mts +11 -0
  78. package/api/layout/layoutGrammar.doc.mjs +57 -0
  79. package/api/search/search.d.mts +1 -27
  80. package/api/search/search.doc.mjs +2 -2
  81. package/api/search/search.mjs +16 -228
  82. package/api/search/search.test.mjs +512 -0
  83. package/api/swizzle/swizzle.doc.mjs +5 -7
  84. package/api/template/copy/copy.mjs +1 -1
  85. package/api/template/copy/copy.test.mjs +0 -9
  86. package/api/template/template-integration.test.mjs +65 -1
  87. package/api/template/template.doc.mjs +1 -2
  88. package/api/template/template.mjs +1 -1
  89. package/api/theme/add/add.mjs +25 -17
  90. package/api/theme/add/add.staging.test.mjs +23 -40
  91. package/api/theme/build/build.family.test.mjs +12 -7
  92. package/api/theme/build/build.mjs +18 -8
  93. package/api/theme/generateTonalPalette.doc.mjs +2 -1
  94. package/api/theme/listThemes.doc.mjs +1 -1
  95. package/api/theme/themeAdd.doc.mjs +10 -9
  96. package/api/theme/themeBuild.doc.mjs +13 -13
  97. package/api/theme/themeList.doc.mjs +1 -1
  98. package/api/theme/themeListAvailable.doc.mjs +1 -2
  99. package/api/theme/themePaletteGenerate.doc.mjs +8 -15
  100. package/api/theme/themeTargets.doc.mjs +2 -3
  101. package/api/theme/themeTemplate.doc.mjs +1 -2
  102. package/api/upgrade/run/run.mjs +4 -6
  103. package/api/upgrade/upgrade.doc.mjs +22 -24
  104. package/api/upgrade/upgrade.type.mjs +2 -2
  105. package/assets/codemods/__tests__/runner.test.mjs +1 -3
  106. package/assets/codemods/integration-runner.mjs +3 -3
  107. package/assets/codemods/runner.mjs +4 -5
  108. package/assets/docs/README.md +2 -4
  109. package/assets/docs/browser-support.doc.mjs +11 -11
  110. package/assets/docs/color.doc.mjs +2 -8
  111. package/assets/docs/elevation.doc.mjs +4 -6
  112. package/assets/docs/getting-started.doc.mjs +16 -5
  113. package/assets/docs/icons.doc.mjs +21 -2
  114. package/assets/docs/illustrations.doc.mjs +15 -7
  115. package/assets/docs/internationalization.doc.mjs +5 -7
  116. package/assets/docs/layout.doc.dense.mjs +82 -130
  117. package/assets/docs/layout.doc.mjs +77 -133
  118. package/assets/docs/migration.doc.mjs +21 -19
  119. package/assets/docs/motion.doc.mjs +3 -16
  120. package/assets/docs/principles.doc.dense.mjs +5 -5
  121. package/assets/docs/principles.doc.mjs +0 -8
  122. package/assets/docs/principles.doc.zh.mjs +6 -6
  123. package/assets/docs/shape.doc.mjs +3 -8
  124. package/assets/docs/spacing.doc.mjs +2 -7
  125. package/assets/docs/styling-libraries.doc.mjs +2 -6
  126. package/assets/docs/styling.doc.mjs +23 -19
  127. package/assets/docs/theme.doc.dense.mjs +18 -58
  128. package/assets/docs/theme.doc.mjs +46 -56
  129. package/assets/docs/theme.doc.zh.mjs +8 -9
  130. package/assets/docs/tokens.doc.dense.mjs +2 -2
  131. package/assets/docs/tokens.doc.mjs +8 -389
  132. package/assets/docs/tokens.doc.zh.mjs +2 -2
  133. package/assets/docs/tree/integrations.doc.mjs +451 -25
  134. package/assets/docs/tree/integrations.test.mjs +62 -0
  135. package/assets/docs/tree/writing-docs.doc.mjs +286 -0
  136. package/assets/docs/typography.doc.mjs +4 -24
  137. package/assets/docs/working-with-ai.doc.mjs +22 -30
  138. package/assets/templates/blocks/components/InternationalizationProvider/InternationalizationProvider01ShippedLocale.tsx +1 -1
  139. package/authoring/config/config.doc.mjs +2 -10
  140. package/authoring/config/parse.d.mts +0 -2
  141. package/authoring/config/parse.mjs +0 -19
  142. package/authoring/config/parse.test.mjs +0 -8
  143. package/authoring/config/type.ts +2 -13
  144. package/authoring/doctypes/_schema.d.mts +2 -3
  145. package/authoring/doctypes/_schema.mjs +0 -6
  146. package/authoring/doctypes/base/graph-fields.doc.mjs +3 -3
  147. package/authoring/doctypes/base/type.ts +2 -4
  148. package/authoring/doctypes/command/command.doc.mjs +1 -1
  149. package/authoring/doctypes/command/type.ts +1 -1
  150. package/authoring/doctypes/component/component.doc.mjs +0 -6
  151. package/authoring/doctypes/component/type.ts +0 -8
  152. package/authoring/doctypes/reference/reference.doc.mjs +0 -7
  153. package/authoring/doctypes/reference/type.ts +0 -5
  154. package/authoring/doctypes/schema/schema.doc.mjs +2 -2
  155. package/authoring/doctypes/template/template.doc.mjs +1 -1
  156. package/authoring/doctypes/template/type.ts +2 -2
  157. package/authoring/index.d.mts +0 -1
  158. package/authoring/index.d.ts +0 -10
  159. package/authoring/index.mjs +0 -1
  160. package/authoring/integration/integration.doc.mjs +10 -12
  161. package/clients/cli/command-result-coverage.test.mjs +7 -7
  162. package/clients/cli/commands/component/index.mjs +55 -152
  163. package/clients/cli/commands/component-ownership.test.mjs +0 -89
  164. package/clients/cli/commands/component.doc.mjs +9 -27
  165. package/clients/cli/commands/debug-result-summary.test.mjs +2 -2
  166. package/clients/cli/commands/discover.doc.mjs +9 -53
  167. package/clients/cli/commands/discover.mjs +118 -393
  168. package/clients/cli/commands/docs.doc.mjs +1 -1
  169. package/clients/cli/commands/docs.mjs +17 -60
  170. package/clients/cli/commands/docs.test.mjs +294 -0
  171. package/clients/cli/commands/doctor-integration-docs.doc.mjs +2 -3
  172. package/clients/cli/commands/doctor-integration.test.mjs +0 -53
  173. package/clients/cli/commands/doctor.doc.mjs +1 -3
  174. package/clients/cli/commands/doctor.mjs +5 -49
  175. package/clients/cli/commands/gap-report.doc.mjs +9 -10
  176. package/clients/cli/commands/init.doc.mjs +6 -9
  177. package/clients/cli/commands/integration-add.doc.mjs +9 -9
  178. package/clients/cli/commands/integration-authoring.test.mjs +10 -61
  179. package/clients/cli/commands/integration-pack.doc.mjs +9 -5
  180. package/clients/cli/commands/integration-real-world.test.mjs +1 -1
  181. package/clients/cli/commands/integration.doc.mjs +4 -4
  182. package/clients/cli/commands/integration.mjs +43 -74
  183. package/clients/cli/commands/layout-check.doc.mjs +65 -0
  184. package/clients/cli/commands/layout-expand.doc.mjs +83 -0
  185. package/clients/cli/commands/layout-grammar.doc.mjs +30 -0
  186. package/clients/cli/commands/layout.doc.mjs +34 -0
  187. package/clients/cli/commands/layout.error-codes.test.mjs +66 -0
  188. package/clients/cli/commands/layout.exit-parity.test.mjs +41 -0
  189. package/clients/cli/commands/layout.mjs +275 -0
  190. package/clients/cli/commands/layout.path-help.test.mjs +33 -0
  191. package/clients/cli/commands/layout.stdin-cap.test.mjs +47 -0
  192. package/clients/cli/commands/layout.text-fields.test.mjs +39 -0
  193. package/clients/cli/commands/manifest.doc.mjs +1 -1
  194. package/clients/cli/commands/search.doc.mjs +3 -10
  195. package/clients/cli/commands/search.mjs +2 -21
  196. package/clients/cli/commands/search.test.mjs +4 -21
  197. package/clients/cli/commands/swizzle.doc.mjs +1 -1
  198. package/clients/cli/commands/template.doc.mjs +1 -1
  199. package/clients/cli/commands/text-json-parity.test.mjs +16 -5
  200. package/clients/cli/commands/theme-add.doc.mjs +1 -1
  201. package/clients/cli/commands/theme-palette-generate.doc.mjs +2 -3
  202. package/clients/cli/commands/theme-palette.doc.mjs +2 -1
  203. package/clients/cli/commands/theme-targets.doc.mjs +2 -2
  204. package/clients/cli/commands/theme.doc.mjs +1 -2
  205. package/clients/cli/commands/upgrade.doc.mjs +3 -62
  206. package/clients/cli/index.mjs +10 -28
  207. package/clients/cli/lib/define-command.mjs +4 -28
  208. package/clients/cli/lib/define-command.test.mjs +0 -54
  209. package/clients/cli/lib/exit-codes.test.mjs +9 -18
  210. package/clients/cli/lib/json-shim.mjs +14 -24
  211. package/clients/cli/lib/json-shim.test.mjs +20 -6
  212. package/clients/cli/lib/manifest.mjs +13 -18
  213. package/clients/cli/lib/manifest.test.mjs +2 -5
  214. package/foundation/agent-docs/agent-docs.mjs +1 -1
  215. package/foundation/agent-docs/agent-docs.test.mjs +1159 -0
  216. package/foundation/discovery/authoring-self-docs.mjs +0 -1
  217. package/foundation/discovery/authoring-self-docs.test.mjs +2 -6
  218. package/foundation/discovery/cli-self-docs.mjs +2 -16
  219. package/foundation/discovery/cli-self-docs.test.mjs +0 -20
  220. package/foundation/discovery/docs-discovery.mjs +1 -5
  221. package/foundation/discovery/docs-discovery.test.mjs +0 -21
  222. package/foundation/discovery/docs-section-key.d.mts +1 -1
  223. package/foundation/discovery/docs-section-key.mjs +1 -1
  224. package/foundation/discovery/template-adapter.mjs +1 -1
  225. package/foundation/doc-compiler/doc-loads.test.mjs +14 -3
  226. package/foundation/doc-compiler/tree.d.mts +0 -4
  227. package/foundation/doc-compiler/tree.mjs +1 -6
  228. package/foundation/doc-compiler/tree.test.mjs +598 -0
  229. package/foundation/integrations/cli-requirement.d.mts +6 -26
  230. package/foundation/integrations/cli-requirement.mjs +11 -46
  231. package/foundation/integrations/cli-requirement.test.mjs +2 -7
  232. package/foundation/integrations/contribution-inventory.mjs +1 -1
  233. package/foundation/integrations/integrations.d.mts +1 -14
  234. package/foundation/integrations/integrations.mjs +1 -41
  235. package/foundation/integrations/integrations.test.mjs +0 -31
  236. package/foundation/response/error-codes.doc.mjs +8 -6
  237. package/foundation/response/error-codes.test.mjs +5 -30
  238. package/foundation/response/response-types.doc.d.mts +3 -4
  239. package/foundation/response/response-types.doc.mjs +27 -40
  240. package/foundation/response/response-types.doc.test.mjs +0 -23
  241. package/foundation/response/response.doc.mjs +10 -11
  242. package/foundation/xle/browser.d.mts +3 -3
  243. package/foundation/xle/browser.mjs +3 -3
  244. package/foundation/xle/expand.mjs +2 -2
  245. package/foundation/xle/parse.mjs +1 -1
  246. package/foundation/xle/print.mjs +2 -2
  247. package/foundation/xle/splice.mjs +1 -1
  248. package/package.json +9 -9
  249. package/api/discover/_adapter.test.mjs +0 -215
  250. package/api/discover/_catalog-view.d.mts +0 -115
  251. package/api/discover/_catalog-view.mjs +0 -203
  252. package/api/discover/_catalog-view.test.mjs +0 -128
  253. package/api/discover/detail/item/item.d.mts +0 -26
  254. package/api/discover/detail/item/item.mjs +0 -78
  255. package/api/discover/detail/item/item.test.mjs +0 -73
  256. package/api/integration/pack-check.lifecycle-output.test.mjs +0 -107
  257. package/api/theme/add/add.rollback.test.mjs +0 -158
  258. package/api/theme/build/build.rollback.test.mjs +0 -148
  259. package/api/upgrade/run/files-changed.test.mjs +0 -111
  260. package/assets/codemods/file-count.test.mjs +0 -163
  261. package/assets/docs/tree/add-a-component.doc.mjs +0 -75
  262. package/assets/docs/tree/add-a-theme.doc.mjs +0 -85
  263. package/assets/docs/tree/add-a-topic.doc.mjs +0 -144
  264. package/assets/docs/tree/agent-guidance.doc.mjs +0 -138
  265. package/assets/docs/tree/block-template.doc.mjs +0 -130
  266. package/assets/docs/tree/build-the-template.doc.mjs +0 -28
  267. package/assets/docs/tree/building-blocks.doc.mjs +0 -46
  268. package/assets/docs/tree/check-your-docs.doc.mjs +0 -137
  269. package/assets/docs/tree/checks.doc.mjs +0 -119
  270. package/assets/docs/tree/codemods.doc.mjs +0 -147
  271. package/assets/docs/tree/component-family.doc.mjs +0 -113
  272. package/assets/docs/tree/component-imports.doc.mjs +0 -69
  273. package/assets/docs/tree/component-lookups.doc.mjs +0 -149
  274. package/assets/docs/tree/components.doc.mjs +0 -23
  275. package/assets/docs/tree/configuration.doc.mjs +0 -23
  276. package/assets/docs/tree/debug-and-gap-reports.doc.mjs +0 -182
  277. package/assets/docs/tree/define-the-theme.doc.mjs +0 -118
  278. package/assets/docs/tree/describe-the-component.doc.mjs +0 -57
  279. package/assets/docs/tree/docs.doc.mjs +0 -21
  280. package/assets/docs/tree/document-the-template.doc.mjs +0 -28
  281. package/assets/docs/tree/document-the-theme.doc.mjs +0 -68
  282. package/assets/docs/tree/export-template-assets.doc.mjs +0 -147
  283. package/assets/docs/tree/extend-or-replace.doc.mjs +0 -103
  284. package/assets/docs/tree/fonts-and-assets.doc.mjs +0 -106
  285. package/assets/docs/tree/generate-a-palette.doc.mjs +0 -66
  286. package/assets/docs/tree/grade-template-with-agent.doc.mjs +0 -105
  287. package/assets/docs/tree/help.doc.mjs +0 -16
  288. package/assets/docs/tree/links.doc.mjs +0 -98
  289. package/assets/docs/tree/package-and-test.doc.mjs +0 -32
  290. package/assets/docs/tree/page-template.doc.mjs +0 -71
  291. package/assets/docs/tree/publishing.doc.mjs +0 -111
  292. package/assets/docs/tree/quick-start.doc.mjs +0 -272
  293. package/assets/docs/tree/replace-a-core-component.doc.mjs +0 -104
  294. package/assets/docs/tree/replace-a-core-template.doc.mjs +0 -172
  295. package/assets/docs/tree/sections-and-placement.doc.mjs +0 -108
  296. package/assets/docs/tree/see-it-in-an-app.doc.mjs +0 -59
  297. package/assets/docs/tree/ship.doc.mjs +0 -16
  298. package/assets/docs/tree/short-and-findable.doc.mjs +0 -108
  299. package/assets/docs/tree/single-component.doc.mjs +0 -165
  300. package/assets/docs/tree/start-a-template.doc.mjs +0 -143
  301. package/assets/docs/tree/subcomponent.doc.mjs +0 -115
  302. package/assets/docs/tree/template-assets.doc.mjs +0 -64
  303. package/assets/docs/tree/template-doc-overview.doc.mjs +0 -109
  304. package/assets/docs/tree/template-fonts.doc.mjs +0 -102
  305. package/assets/docs/tree/template-grading-rubric.doc.mjs +0 -452
  306. package/assets/docs/tree/template-icons.doc.mjs +0 -97
  307. package/assets/docs/tree/template-images-media.doc.mjs +0 -127
  308. package/assets/docs/tree/template-styles.doc.mjs +0 -93
  309. package/assets/docs/tree/templates.doc.mjs +0 -34
  310. package/assets/docs/tree/test-in-an-app.doc.mjs +0 -115
  311. package/assets/docs/tree/test-template-in-app.doc.mjs +0 -128
  312. package/assets/docs/tree/themes.doc.mjs +0 -39
  313. package/assets/docs/tree/troubleshooting.doc.mjs +0 -149
  314. package/assets/docs/tree/upgrading.doc.mjs +0 -103
  315. package/assets/docs/tree/use-a-theme-in-an-app.doc.mjs +0 -51
  316. package/assets/docs/tree/verify-packed-template.doc.mjs +0 -77
  317. package/assets/docs/tree/versioning.doc.mjs +0 -161
  318. package/assets/docs/tree/write-good-templates.doc.mjs +0 -64
  319. package/assets/docs/tree/write-the-template-file.doc.mjs +0 -154
  320. package/authoring/discover/discover.doc.d.mts +0 -13
  321. package/authoring/discover/discover.doc.mjs +0 -138
  322. package/authoring/discover/parse.d.mts +0 -24
  323. package/authoring/discover/parse.mjs +0 -128
  324. package/authoring/discover/parse.test.mjs +0 -124
  325. package/authoring/discover/type.ts +0 -87
  326. package/clients/cli/commands/component-batch.test.mjs +0 -341
  327. package/clients/cli/commands/discover.sources.test.mjs +0 -267
  328. package/clients/cli/commands/integration-verify.doc.mjs +0 -22
  329. package/clients/cli/lib/parse-error-format.test.mjs +0 -81
  330. package/foundation/response/batch.type.d.mts +0 -33
  331. package/foundation/response/batch.type.mjs +0 -34
@@ -33,35 +33,8 @@ export const docsDense = {
33
33
  section: 'Scaffold',
34
34
  title: 'Scaffold',
35
35
  content: [
36
- {
37
- type: 'prose',
38
- text: 'pick shell, budget regions, choose nav, before content. steps: Shell, Navigation. rules for both:',
39
- },
40
- {
41
- type: 'list',
42
- items: [
43
- 'decide frame + region width budgets + fill-or-capped before content',
44
- 'state the reason for the nav choice, or inherit template pairing',
45
- 'raw px for structural widths; interior = tokens',
46
- ],
47
- },
48
- {
49
- type: 'list',
50
- items: [
51
- 'build content-first, Card-wrapping each section',
52
- 'stretch prose/forms/lists across a wide region instead of capping with contentWidth',
53
- 'SideNav when the nav is really filters/controls, or must hold wide elements like breadcrumbs',
54
- 'TopNav when top-slot ownership is unclear, or hierarchy is deep or still growing',
55
- 'both bars when the ecosystem layer is thin',
56
- 'break template nav pairing without a reason',
57
- ],
58
- },
59
- ],
60
- },
61
- {
62
- section: 'Shell',
63
- title: 'Shell',
64
- content: [
36
+ // Shell
37
+ null,
65
38
  {
66
39
  type: 'prose',
67
40
  text: 'pick the shell + budget its regions before any content exists. structural widths are the one place raw px belongs; everything inside uses the scale.',
@@ -80,12 +53,8 @@ export const docsDense = {
80
53
  type: 'prose',
81
54
  text: 'verify: every region has a width budget + fill-or-capped + a container policy written down before any content.',
82
55
  },
83
- ],
84
- },
85
- {
86
- section: 'Navigation',
87
- title: 'Navigation',
88
- content: [
56
+ // Navigation
57
+ null,
89
58
  {
90
59
  type: 'prose',
91
60
  text: 'nav left open? default SideNav: it absorbs destinations you have not planned yet. app type + destination count are guiding indicators, not determining rules.',
@@ -104,45 +73,35 @@ export const docsDense = {
104
73
  type: 'prose',
105
74
  text: 'verify: you can state the reason in one sentence, and it still holds if the nav doubles. npx astryx build "<idea>" names the template to start from; scaffold it and the pairing is wired up.',
106
75
  },
107
- ],
108
- },
109
- {
110
- section: 'Structure',
111
- title: 'Structure',
112
- content: [
113
- {
114
- type: 'prose',
115
- text: 'rank content per region, pick the weakest container that groups it. steps: Type hierarchy, Card or rows, Headers and footers, Side panels. rules for all:',
116
- },
76
+ // Best practices
77
+ null,
117
78
  {
118
79
  type: 'list',
119
80
  items: [
120
- 'one lead per region; rank via weight+color; one primary action',
121
- 'leave body copy at its defaults; demote via weight+color, not size',
122
- 'default Section; weakest container that reads as a group',
123
- 'collections = rows (Table/List), edge-to-edge with dividers',
124
- 'side panel on select; it yields width at narrow sizes',
81
+ 'decide frame + region width budgets + fill-or-capped before content',
82
+ 'state the reason for the nav choice, or inherit template pairing',
83
+ 'raw px for structural widths; interior = tokens',
125
84
  ],
126
85
  },
127
86
  {
128
87
  type: 'list',
129
88
  items: [
130
- 'grey + shrink body copy, so a whole region reads as metadata',
131
- 'the disabled color for content; it fails contrast, it is for disabled controls',
132
- 'card soup: each record in its own Card',
133
- 'cards-in-cards, or full-width Cards as page structure',
134
- 'a header/footer rebuilt inside the body, where it scrolls away with the rows',
135
- 'flexbox soup instead of Grid/Layout/Section/FormLayout',
136
- 'two competing primary actions in one region',
137
- 'Badge as decoration; use StatusDot/Token for status',
89
+ 'build content-first, Card-wrapping each section',
90
+ 'stretch prose/forms/lists across a wide region instead of capping with contentWidth',
91
+ 'SideNav when the nav is really filters/controls, or must hold wide elements like breadcrumbs',
92
+ 'TopNav when top-slot ownership is unclear, or hierarchy is deep or still growing',
93
+ 'both bars when the ecosystem layer is thin',
94
+ 'break template nav pairing without a reason',
138
95
  ],
139
96
  },
140
97
  ],
141
98
  },
142
99
  {
143
- section: 'Type hierarchy',
144
- title: 'Type hierarchy',
100
+ section: 'Structure',
101
+ title: 'Structure',
145
102
  content: [
103
+ // Type hierarchy
104
+ null,
146
105
  {
147
106
  type: 'prose',
148
107
  text: 'one lead per region, then rank with weight+color, not size. two text colors only: primary + secondary, nothing dimmer. body copy needs no props.',
@@ -161,12 +120,8 @@ export const docsDense = {
161
120
  type: 'prose',
162
121
  text: 'squint test: read lead, then support, then groups, in order. everything at once = raise contrast (weight/color), not borders and not smaller text.',
163
122
  },
164
- ],
165
- },
166
- {
167
- section: 'Card or rows',
168
- title: 'Card or rows',
169
- content: [
123
+ // Containers
124
+ null,
170
125
  {
171
126
  type: 'prose',
172
127
  text: 'weakest container that reads as a group, escalate only when it fails. weakest to strongest:',
@@ -185,12 +140,8 @@ export const docsDense = {
185
140
  type: 'prose',
186
141
  text: 'test: records -> rows (Table columnar, List single-line); self-contained widget or hard boundary -> Card; everything else -> Section.',
187
142
  },
188
- ],
189
- },
190
- {
191
- section: 'Headers and footers',
192
- title: 'Headers and footers',
193
- content: [
143
+ // Headers and footers
144
+ null,
194
145
  {
195
146
  type: 'prose',
196
147
  text: 'a region can pin a header/footer while its body scrolls. both are Layout slots, and padding set once on Layout reaches all three, so header/body/footer share one content line.',
@@ -209,12 +160,8 @@ export const docsDense = {
209
160
  type: 'prose',
210
161
  text: 'verify: scroll the body. header + footer stay put, dividers run full-bleed, all three still share one left content line.',
211
162
  },
212
- ],
213
- },
214
- {
215
- section: 'Side panels',
216
- title: 'Side panels',
217
- content: [
163
+ // Side panels
164
+ null,
218
165
  {
219
166
  type: 'prose',
220
167
  text: 'master-detail: select a row -> fixed-width side panel, no navigation away.',
@@ -232,43 +179,41 @@ export const docsDense = {
232
179
  null,
233
180
  {
234
181
  type: 'prose',
235
- text: 'verify: at narrow widths the panel yields width instead of squeezing content (see Responsive contract), and only one element between the regions draws a border.',
236
- },
237
- ],
238
- },
239
- {
240
- section: 'Spacing',
241
- title: 'Spacing',
242
- content: [
243
- {
244
- type: 'prose',
245
- text: 'one content line per region, then tune gaps + density. steps: Alignment, Rhythm, Density and size. rules for all:',
182
+ text: 'verify: at narrow widths the panel yields width instead of squeezing content (see Breakpoints), and only one element between the regions draws a border.',
246
183
  },
184
+ // Best practices
185
+ null,
247
186
  {
248
187
  type: 'list',
249
188
  items: [
250
- 'container owns padding; children zero margins',
251
- 'one content line: text on line, hover bleeds to edge',
252
- 'one padding token across region header/body/footer',
253
- 'contrast tight vs generous gaps',
254
- 'one control size per row; density by use frequency',
189
+ 'one lead per region; rank via weight+color; one primary action',
190
+ 'leave body copy at its defaults; demote via weight+color, not size',
191
+ 'default Section; weakest container that reads as a group',
192
+ 'collections = rows (Table/List), edge-to-edge with dividers',
193
+ 'side panel on select; it yields width at narrow sizes',
255
194
  ],
256
195
  },
257
196
  {
258
197
  type: 'list',
259
198
  items: [
260
- 'double padding (component past its heading); keep one inset owner',
261
- 'raw px for interior spacing; tokens only',
262
- 'one repeated gap everywhere',
263
- 'mixed control sizes in one row',
199
+ 'grey + shrink body copy, so a whole region reads as metadata',
200
+ 'the disabled color for content; it fails contrast, it is for disabled controls',
201
+ 'card soup: each record in its own Card',
202
+ 'cards-in-cards, or full-width Cards as page structure',
203
+ 'a header/footer rebuilt inside the body, where it scrolls away with the rows',
204
+ 'flexbox soup instead of Grid/Layout/Section/FormLayout',
205
+ 'two competing primary actions in one region',
206
+ 'Badge as decoration; use StatusDot/Token for status',
264
207
  ],
265
208
  },
266
209
  ],
267
210
  },
268
211
  {
269
- section: 'Alignment',
270
- title: 'Alignment',
212
+ section: 'Spacing',
213
+ title: 'Spacing',
271
214
  content: [
215
+ // Alignment
216
+ null,
272
217
  {
273
218
  type: 'prose',
274
219
  text: 'container owns padding + child gaps; children zero margins; interior spacing = token. one content line per region, hold the line not the padding: container_inset = content_line - component_intrinsic_inset.',
@@ -286,12 +231,8 @@ export const docsDense = {
286
231
  type: 'prose',
287
232
  text: 'verify: draw one vertical line down the left. every label touches it; only hover/selected backgrounds cross it.',
288
233
  },
289
- ],
290
- },
291
- {
292
- section: 'Rhythm',
293
- title: 'Rhythm',
294
- content: [
234
+ // Rhythm
235
+ null,
295
236
  {
296
237
  type: 'prose',
297
238
  text: 'grouping = contrast between tight and generous gaps, not one repeated value. same step everywhere = proximity does no work.',
@@ -309,12 +250,8 @@ export const docsDense = {
309
250
  type: 'prose',
310
251
  text: 'verify: borders removed, you can still name the groups from spacing alone. cannot = intervals too uniform. form fields excepted: FormLayout owns their spacing.',
311
252
  },
312
- ],
313
- },
314
- {
315
- section: 'Density and size',
316
- title: 'Density and size',
317
- content: [
253
+ // Density and size
254
+ null,
318
255
  {
319
256
  type: 'prose',
320
257
  text: 'density by use frequency; every control in a row shares one size so heights share a baseline.',
@@ -332,38 +269,35 @@ export const docsDense = {
332
269
  type: 'prose',
333
270
  text: 'verify: one size per row, paired with the density of the region it sits in.',
334
271
  },
335
- ],
336
- },
337
- {
338
- section: 'Breakpoints',
339
- title: 'Breakpoints',
340
- content: [
341
- {
342
- type: 'prose',
343
- text: 'decide what each region does as width changes. step: Responsive contract. rules:',
344
- },
272
+ // Best practices
273
+ null,
345
274
  {
346
275
  type: 'list',
347
276
  items: [
348
- 'write the contract down for every region before calling the layout done',
349
- 'decide per region: revealed, resized, or swapped at each width',
350
- 'drop a region rather than let it fight for width it lacks',
277
+ 'container owns padding; children zero margins',
278
+ 'one content line: text on line, hover bleeds to edge',
279
+ 'one padding token across region header/body/footer',
280
+ 'contrast tight vs generous gaps',
281
+ 'one control size per row; density by use frequency',
351
282
  ],
352
283
  },
353
284
  {
354
285
  type: 'list',
355
286
  items: [
356
- '3 regions at a width where none has usable space',
357
- 'shrink every region uniformly instead of swapping/dropping one',
358
- 'a CSS breakpoint the contract comment never mentions',
287
+ 'double padding (component past its heading); keep one inset owner',
288
+ 'raw px for interior spacing; tokens only',
289
+ 'one repeated gap everywhere',
290
+ 'mixed control sizes in one row',
359
291
  ],
360
292
  },
361
293
  ],
362
294
  },
363
295
  {
364
- section: 'Responsive contract',
365
- title: 'Responsive contract',
296
+ section: 'Breakpoints',
297
+ title: 'Breakpoints',
366
298
  content: [
299
+ // Responsive contract
300
+ null,
367
301
  {
368
302
  type: 'prose',
369
303
  text: 'lock what each region does as width changes; pair each contract line with the prop/hook that enforces it.',
@@ -382,6 +316,24 @@ export const docsDense = {
382
316
  type: 'prose',
383
317
  text: 'verify: every contract line names a mechanism, so the comment cannot drift from the behavior.',
384
318
  },
319
+ // Best practices
320
+ null,
321
+ {
322
+ type: 'list',
323
+ items: [
324
+ 'write the contract down for every region before calling the layout done',
325
+ 'decide per region: revealed, resized, or swapped at each width',
326
+ 'drop a region rather than let it fight for width it lacks',
327
+ ],
328
+ },
329
+ {
330
+ type: 'list',
331
+ items: [
332
+ '3 regions at a width where none has usable space',
333
+ 'shrink every region uniformly instead of swapping/dropping one',
334
+ 'a CSS breakpoint the contract comment never mentions',
335
+ ],
336
+ },
385
337
  ],
386
338
  },
387
339
  ],