@astryxdesign/cli 0.6.3 → 0.6.4-canary.078fd25
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.
- package/CHANGELOG.md +194 -0
- package/README.md +152 -107
- package/api/blog/blog.doc.mjs +1 -0
- package/api/build/_adapter.d.mts +50 -0
- package/api/build/_adapter.mjs +60 -0
- package/api/build/build.doc.mjs +22 -10
- package/api/build/build.test.mjs +219 -8
- package/api/build/build.type.d.mts +91 -2
- package/api/build/build.type.mjs +52 -8
- package/api/build/help/help.d.mts +12 -5
- package/api/build/help/help.mjs +69 -6
- package/api/build/kit/kit.d.mts +4 -1
- package/api/build/kit/kit.mjs +208 -53
- package/api/build/kit/rank.d.mts +44 -0
- package/api/build/kit/rank.mjs +432 -0
- package/api/build/kit/rank.test.mjs +196 -0
- package/api/component/_adapter.d.mts +31 -12
- package/api/component/_adapter.mjs +79 -15
- package/api/component/component.d.mts +6 -3
- package/api/component/component.doc.mjs +49 -19
- package/api/component/component.mjs +339 -22
- package/api/component/component.test.mjs +38 -0
- package/api/component/component.type.d.mts +47 -11
- package/api/component/component.type.mjs +76 -24
- package/api/component/detail/blocks/blocks.d.mts +2 -1
- package/api/component/detail/blocks/blocks.mjs +4 -3
- package/api/component/list/list.d.mts +0 -5
- package/api/component/list/list.mjs +40 -11
- package/api/discover/_adapter.d.mts +114 -6
- package/api/discover/_adapter.mjs +372 -17
- package/api/discover/_adapter.test.mjs +215 -0
- package/api/discover/_catalog-view.d.mts +115 -0
- package/api/discover/_catalog-view.mjs +203 -0
- package/api/discover/_catalog-view.test.mjs +128 -0
- package/api/discover/detail/detail.d.mts +18 -6
- package/api/discover/detail/detail.mjs +67 -13
- package/api/discover/detail/detail.test.mjs +85 -0
- package/api/discover/detail/item/item.d.mts +26 -0
- package/api/discover/detail/item/item.mjs +78 -0
- package/api/discover/detail/item/item.test.mjs +73 -0
- package/api/discover/discover.d.mts +3 -9
- package/api/discover/discover.doc.mjs +62 -18
- package/api/discover/discover.mjs +220 -36
- package/api/discover/discover.test.mjs +11 -2
- package/api/discover/discover.type.d.mts +150 -11
- package/api/discover/discover.type.mjs +107 -17
- package/api/discover/list/list.d.mts +20 -6
- package/api/discover/list/list.mjs +45 -12
- package/api/discover/list/list.test.mjs +46 -0
- package/api/discover/search/search.d.mts +18 -16
- package/api/discover/search/search.mjs +102 -56
- package/api/discover/search/search.test.mjs +144 -10
- package/api/docs/_adapter.d.mts +277 -41
- package/api/docs/_adapter.mjs +993 -108
- package/api/docs/compiled-topics.test.mjs +78 -0
- package/api/docs/detail/detail.mjs +22 -63
- package/api/docs/detail/section/section.d.mts +1 -1
- package/api/docs/detail/section/section.mjs +54 -19
- package/api/docs/detail/section/section.test.mjs +50 -0
- package/api/docs/docOverlays.test.mjs +27 -1
- package/api/docs/docs.d.mts +10 -3
- package/api/docs/docs.doc.mjs +55 -16
- package/api/docs/docs.mjs +53 -10
- package/api/docs/docs.type.d.mts +221 -5
- package/api/docs/docs.type.mjs +153 -11
- package/api/docs/index/index.d.mts +18 -0
- package/api/docs/index/index.mjs +40 -0
- package/api/docs/index/index.test.mjs +62 -0
- package/api/docs/list/list.mjs +28 -12
- package/api/docs/node/node.d.mts +43 -0
- package/api/docs/node/node.mjs +192 -0
- package/api/docs/reference-blocks.test.mjs +406 -0
- package/api/doctor/doctor.d.mts +104 -1
- package/api/doctor/doctor.doc.mjs +18 -8
- package/api/doctor/doctor.mjs +635 -7
- package/api/doctor/doctor.test.mjs +732 -11
- package/api/doctor/doctor.type.d.mts +1 -1
- package/api/doctor/doctor.type.mjs +1 -1
- package/api/gap-report/gap-report.doc.mjs +27 -14
- package/api/hook/_adapter.mjs +19 -5
- package/api/hook/hook.doc.mjs +7 -3
- package/api/hook/hook.type.d.mts +3 -3
- package/api/hook/hook.type.mjs +11 -11
- package/api/hook/list/list.d.mts +2 -2
- package/api/hook/list/list.mjs +69 -17
- package/api/index.d.mts +2 -1
- package/api/index.mjs +6 -3
- package/api/init/init.doc.mjs +22 -12
- package/api/init/init.test.mjs +41 -1
- package/api/init/remove/remove.mjs +1 -1
- package/api/init/run/run.mjs +20 -10
- package/api/integration/add-contribution.component-names.test.mjs +120 -0
- package/api/integration/add-contribution.d.mts +2 -1
- package/api/integration/add-contribution.mjs +130 -15
- package/api/integration/add-contribution.test.mjs +258 -7
- package/api/integration/add-helpers.d.mts +5 -2
- package/api/integration/add-helpers.mjs +36 -9
- package/api/integration/add-theme.mjs +56 -65
- package/api/integration/add-theme.test.mjs +139 -21
- package/api/integration/authoring-checks.mjs +138 -28
- package/api/integration/authoring-checks.test.mjs +179 -7
- package/api/integration/authoring-checks.type.mjs +6 -1
- package/api/integration/integration-authoring.type.d.mts +3 -1
- package/api/integration/integration-authoring.type.mjs +2 -0
- package/api/integration/integration-block-exports.test.mjs +10 -6
- package/api/integration/integrationAdd.doc.mjs +14 -4
- package/api/integration/integrationAddAgentDoc.doc.mjs +1 -0
- package/api/integration/integrationAddCodemod.doc.mjs +1 -0
- package/api/integration/integrationAddComponent.doc.mjs +2 -1
- package/api/integration/integrationAddDoc.doc.mjs +8 -1
- package/api/integration/integrationAddTemplate.doc.mjs +1 -0
- package/api/integration/integrationAddTheme.doc.mjs +6 -5
- package/api/integration/integrationComponentConflicts.doc.mjs +1 -0
- package/api/integration/integrationDocConflicts.doc.mjs +2 -1
- package/api/integration/integrationPackCheck.doc.mjs +5 -4
- package/api/integration/integrationTemplateConflicts.doc.d.mts +3 -0
- package/api/integration/integrationTemplateConflicts.doc.mjs +4 -0
- package/api/integration/pack-check.lifecycle-output.test.mjs +107 -0
- package/api/integration/pack-check.mjs +160 -11
- package/api/integration/pack-check.test.mjs +477 -47
- package/api/integration/pack-check.type.d.mts +26 -2
- package/api/integration/pack-check.type.mjs +15 -2
- package/api/integration/summarizeIssues.doc.mjs +1 -0
- package/api/integration/template-conflict-compatibility.test.mjs +73 -0
- package/api/integration/validate-integration-fixes.test.mjs +1389 -0
- package/api/integration/validate-integration.mjs +52 -102
- package/api/integration/validate-integration.test.mjs +179 -26
- package/api/integration/validate-unread-theme-folders.test.mjs +110 -0
- package/api/integration/validateIntegration.doc.mjs +3 -2
- package/api/json/assertResponse.doc.mjs +2 -1
- package/api/json/envelope-types.test.mjs +76 -0
- package/api/json/index.ts +2 -0
- package/api/json/isError.doc.mjs +2 -1
- package/api/json/parseResponse.doc.mjs +3 -2
- package/api/layout/_adapter.mjs +20 -5
- package/api/layout/expand/expand.mjs +7 -5
- package/api/layout/expand/expand.path-safety.test.mjs +53 -0
- package/api/layout/grammar/grammar.mjs +2 -1
- package/api/layout/layoutCheck.doc.mjs +1 -0
- package/api/layout/layoutExpand.doc.mjs +2 -1
- package/api/layout/layoutGrammar.doc.mjs +1 -0
- package/api/search/search-return-type.test.mjs +54 -0
- package/api/search/search.d.mts +89 -12
- package/api/search/search.doc.mjs +8 -2
- package/api/search/search.mjs +697 -97
- package/api/search/search.type.d.mts +15 -3
- package/api/search/search.type.mjs +5 -2
- package/api/swizzle/copy/copy.mjs +28 -11
- package/api/swizzle/swizzle.doc.mjs +8 -5
- package/api/swizzle/swizzle.type.d.mts +2 -2
- package/api/swizzle/swizzle.type.mjs +2 -2
- package/api/template/copy/copy.mjs +18 -24
- package/api/template/copy/copy.test.mjs +26 -0
- package/api/template/list/list.mjs +1 -0
- package/api/template/table-floating-bulk-actions.test.mjs +66 -0
- package/api/template/template-integration.test.mjs +1072 -3
- package/api/template/template-suffix.test.mjs +41 -21
- package/api/template/template.d.mts +1 -1
- package/api/template/template.doc.mjs +32 -9
- package/api/template/template.mjs +45 -8
- package/api/template/template.type.d.mts +12 -14
- package/api/template/template.type.mjs +15 -14
- package/api/theme/_adapter.d.mts +2 -3
- package/api/theme/_adapter.mjs +4 -5
- package/api/theme/add/add.binary.test.mjs +84 -0
- package/api/theme/add/add.mjs +31 -22
- package/api/theme/add/add.rollback.test.mjs +158 -0
- package/api/theme/add/add.staging.test.mjs +83 -0
- package/api/theme/add/add.test.mjs +14 -1
- package/api/theme/build/build.family.test.mjs +7 -12
- package/api/theme/build/build.mjs +140 -59
- package/api/theme/build/build.public-component-vars.test.mjs +1 -1
- package/api/theme/build/build.receipt-doc.test.mjs +111 -0
- package/api/theme/build/build.rollback.test.mjs +148 -0
- package/api/theme/build/build.test.mjs +127 -0
- package/api/theme/build/font-warning.mjs +3 -3
- package/api/theme/build/font-warning.test.mjs +5 -2
- package/api/theme/generateTonalPalette.doc.mjs +2 -2
- package/api/theme/integration-themes.test.mjs +39 -28
- package/api/theme/list/list.test.mjs +19 -20
- package/api/theme/listThemes.doc.mjs +6 -5
- package/api/theme/palette/generate/generate.mjs +8 -3
- package/api/theme/palette/generate/generate.test.mjs +96 -0
- package/api/theme/palette/generate/generator.d.mts +10 -13
- package/api/theme/palette/generate/generator.mjs +15 -4
- package/api/theme/palette/generate/generator.test.mjs +10 -0
- package/api/theme/template/template.mjs +11 -2
- package/api/theme/template/template.test.mjs +20 -0
- package/api/theme/theme.type.d.mts +170 -11
- package/api/theme/theme.type.mjs +94 -27
- package/api/theme/themeAdd.doc.mjs +12 -12
- package/api/theme/themeBuild.doc.mjs +21 -17
- package/api/theme/themeList.doc.mjs +6 -3
- package/api/theme/themeListAvailable.doc.mjs +6 -3
- package/api/theme/themePaletteGenerate.doc.mjs +16 -8
- package/api/theme/themeTargets.doc.mjs +4 -2
- package/api/theme/themeTemplate.doc.mjs +8 -3
- package/api/upgrade/_adapter.d.mts +32 -5
- package/api/upgrade/_adapter.mjs +139 -22
- package/api/upgrade/list/list.mjs +2 -1
- package/api/upgrade/list/list.test.mjs +73 -0
- package/api/upgrade/project-context.test.mjs +272 -0
- package/api/upgrade/provider-agreement.test.mjs +152 -0
- package/api/upgrade/run/files-changed.test.mjs +111 -0
- package/api/upgrade/run/run.mjs +358 -59
- package/api/upgrade/status/status.mjs +2 -2
- package/api/upgrade/upgrade.doc.mjs +32 -23
- package/api/upgrade/upgrade.type.d.mts +43 -5
- package/api/upgrade/upgrade.type.mjs +29 -13
- package/assets/codemods/__tests__/registry.test.mjs +1 -0
- package/assets/codemods/__tests__/runner.test.mjs +332 -8
- package/assets/codemods/file-count.test.mjs +163 -0
- package/assets/codemods/integration-discovery.mjs +48 -4
- package/assets/codemods/integration-discovery.test.mjs +73 -0
- package/assets/codemods/integration-runner.mjs +59 -7
- package/assets/codemods/integration-runner.protection.test.mjs +153 -0
- package/assets/codemods/registry.mjs +1 -0
- package/assets/codemods/run-codemod.mjs +177 -34
- package/assets/codemods/runner.mjs +353 -104
- package/assets/codemods/term-log.mjs +32 -8
- package/assets/codemods/term-log.test.mjs +19 -1
- package/assets/codemods/transform-prop.mjs +109 -0
- package/assets/codemods/transform-prop.test.mjs +95 -0
- package/assets/codemods/transforms/v0.0.14/__tests__/rename-status-variants.test.mjs +86 -165
- package/assets/codemods/transforms/v0.0.14/rename-status-variants.mjs +72 -210
- package/assets/codemods/transforms/v0.1.8/__tests__/rename-avatar-size-scale.test.mjs +83 -115
- package/assets/codemods/transforms/v0.1.8/rename-avatar-size-scale.mjs +57 -186
- package/assets/codemods/transforms/v0.3.0/__tests__/unwrap-authoring-factories.test.mjs +27 -5
- package/assets/codemods/transforms/v0.3.0/unwrap-authoring-factories.mjs +20 -5
- package/assets/codemods/transforms/v0.6.0/__tests__/next-codemods.test.mjs +47 -0
- package/assets/codemods/transforms/v0.6.0/rename-resizable-pixel-bounds.mjs +57 -10
- package/assets/codemods/transforms/v0.6.4/__tests__/migrate-native-picker-to-presentation.test.mjs +63 -0
- package/assets/codemods/transforms/v0.6.4/__tests__/migrate-theme-catalog-to-descriptors.test.mjs +220 -0
- package/assets/codemods/transforms/v0.6.4/index.mjs +31 -0
- package/assets/codemods/transforms/v0.6.4/migrate-native-picker-to-presentation.mjs +148 -0
- package/assets/codemods/transforms/v0.6.4/migrate-theme-catalog-to-descriptors.mjs +141 -0
- package/assets/docs/README.md +12 -1
- package/assets/docs/authoring.doc.mjs +14 -0
- package/assets/docs/browser-support.doc.mjs +11 -11
- package/assets/docs/color.doc.mjs +8 -2
- package/assets/docs/elevation.doc.mjs +6 -4
- package/assets/docs/getting-started.doc.mjs +6 -17
- package/assets/docs/icons.doc.mjs +2 -21
- package/assets/docs/illustrations.doc.mjs +7 -15
- package/assets/docs/internationalization.doc.mjs +7 -5
- package/assets/docs/layout.doc.dense.mjs +132 -84
- package/assets/docs/layout.doc.mjs +134 -78
- package/assets/docs/migration.doc.mjs +19 -21
- package/assets/docs/motion.doc.mjs +16 -3
- package/assets/docs/principles.doc.dense.mjs +5 -5
- package/assets/docs/principles.doc.mjs +14 -6
- package/assets/docs/principles.doc.zh.mjs +6 -6
- package/assets/docs/shape.doc.mjs +8 -3
- package/assets/docs/spacing.doc.mjs +7 -2
- package/assets/docs/styling-libraries.doc.mjs +10 -6
- package/assets/docs/styling.doc.mjs +22 -26
- package/assets/docs/theme.doc.dense.mjs +58 -18
- package/assets/docs/theme.doc.mjs +60 -50
- package/assets/docs/theme.doc.zh.mjs +9 -8
- package/assets/docs/tokens.doc.dense.mjs +2 -2
- package/assets/docs/tokens.doc.mjs +390 -9
- package/assets/docs/tokens.doc.zh.mjs +2 -2
- package/assets/docs/tree/add-a-component.doc.mjs +75 -0
- package/assets/docs/tree/add-a-theme.doc.mjs +85 -0
- package/assets/docs/tree/add-a-topic.doc.mjs +144 -0
- package/assets/docs/tree/agent-guidance.doc.mjs +138 -0
- package/assets/docs/tree/api.doc.mjs +30 -0
- package/assets/docs/tree/block-template.doc.mjs +130 -0
- package/assets/docs/tree/build-the-template.doc.mjs +28 -0
- package/assets/docs/tree/building-blocks.doc.mjs +46 -0
- package/assets/docs/tree/check-your-docs.doc.mjs +137 -0
- package/assets/docs/tree/checks.doc.mjs +119 -0
- package/assets/docs/tree/cli.doc.mjs +23 -0
- package/assets/docs/tree/codemods.doc.mjs +147 -0
- package/assets/docs/tree/commands.doc.mjs +25 -0
- package/assets/docs/tree/component-family.doc.mjs +113 -0
- package/assets/docs/tree/component-imports.doc.mjs +69 -0
- package/assets/docs/tree/component-lookups.doc.mjs +149 -0
- package/assets/docs/tree/components.doc.mjs +23 -0
- package/assets/docs/tree/configuration.doc.mjs +23 -0
- package/assets/docs/tree/debug-and-gap-reports.doc.mjs +182 -0
- package/assets/docs/tree/define-the-theme.doc.mjs +118 -0
- package/assets/docs/tree/describe-the-component.doc.mjs +57 -0
- package/assets/docs/tree/docs.doc.mjs +21 -0
- package/assets/docs/tree/document-the-template.doc.mjs +28 -0
- package/assets/docs/tree/document-the-theme.doc.mjs +68 -0
- package/assets/docs/tree/export-template-assets.doc.mjs +147 -0
- package/assets/docs/tree/extend-or-replace.doc.mjs +103 -0
- package/assets/docs/tree/fonts-and-assets.doc.mjs +106 -0
- package/assets/docs/tree/generate-a-palette.doc.mjs +66 -0
- package/assets/docs/tree/grade-template-with-agent.doc.mjs +105 -0
- package/assets/docs/tree/help.doc.mjs +16 -0
- package/assets/docs/tree/integrations.doc.mjs +40 -0
- package/assets/docs/tree/links.doc.mjs +98 -0
- package/assets/docs/tree/package-and-test.doc.mjs +32 -0
- package/assets/docs/tree/page-template.doc.mjs +71 -0
- package/assets/docs/tree/publishing.doc.mjs +111 -0
- package/assets/docs/tree/quick-start.doc.mjs +272 -0
- package/assets/docs/tree/replace-a-core-component.doc.mjs +104 -0
- package/assets/docs/tree/replace-a-core-template.doc.mjs +172 -0
- package/assets/docs/tree/sections-and-placement.doc.mjs +108 -0
- package/assets/docs/tree/see-it-in-an-app.doc.mjs +59 -0
- package/assets/docs/tree/ship.doc.mjs +16 -0
- package/assets/docs/tree/short-and-findable.doc.mjs +108 -0
- package/assets/docs/tree/single-component.doc.mjs +165 -0
- package/assets/docs/tree/start-a-template.doc.mjs +143 -0
- package/assets/docs/tree/subcomponent.doc.mjs +115 -0
- package/assets/docs/tree/template-assets.doc.mjs +64 -0
- package/assets/docs/tree/template-doc-overview.doc.mjs +109 -0
- package/assets/docs/tree/template-fonts.doc.mjs +102 -0
- package/assets/docs/tree/template-grading-rubric.doc.mjs +452 -0
- package/assets/docs/tree/template-icons.doc.mjs +97 -0
- package/assets/docs/tree/template-images-media.doc.mjs +127 -0
- package/assets/docs/tree/template-styles.doc.mjs +93 -0
- package/assets/docs/tree/templates.doc.mjs +34 -0
- package/assets/docs/tree/test-in-an-app.doc.mjs +115 -0
- package/assets/docs/tree/test-template-in-app.doc.mjs +128 -0
- package/assets/docs/tree/themes.doc.mjs +39 -0
- package/assets/docs/tree/troubleshooting.doc.mjs +149 -0
- package/assets/docs/tree/upgrading.doc.mjs +103 -0
- package/assets/docs/tree/use-a-theme-in-an-app.doc.mjs +51 -0
- package/assets/docs/tree/verify-packed-template.doc.mjs +77 -0
- package/assets/docs/tree/versioning.doc.mjs +161 -0
- package/assets/docs/tree/write-good-templates.doc.mjs +64 -0
- package/assets/docs/tree/write-the-template-file.doc.mjs +154 -0
- package/assets/docs/typography.doc.mjs +24 -4
- package/assets/docs/working-with-ai.doc.mjs +34 -26
- package/assets/templates/blocks/components/CheckboxList/CheckboxListSelectAllPattern.doc.mjs +1 -1
- package/assets/templates/blocks/components/CheckboxList/CheckboxListSelectAllPattern.tsx +1 -3
- package/assets/templates/blocks/components/DateInput/DateInputDateRange.tsx +1 -1
- package/assets/templates/blocks/components/InternationalizationProvider/InternationalizationProvider01ShippedLocale.tsx +1 -1
- package/assets/templates/blocks/components/Item/ItemDocumentTabs.doc.mjs +14 -0
- package/assets/templates/blocks/components/Item/ItemDocumentTabs.tsx +100 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaInlineRail.doc.mjs +14 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaInlineRail.tsx +61 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaOverscrollChaining.doc.mjs +14 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaOverscrollChaining.tsx +126 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaShowcase.doc.mjs +15 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaShowcase.tsx +86 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaStickyGroupHeaders.doc.mjs +14 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaStickyGroupHeaders.tsx +99 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaStickyPassthrough.doc.mjs +14 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaStickyPassthrough.tsx +122 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaTwoAxisBoard.doc.mjs +14 -0
- package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaTwoAxisBoard.tsx +95 -0
- package/assets/templates/blocks/components/Table/TableBulkActionsTable.doc.mjs +14 -0
- package/assets/templates/blocks/components/Table/TableBulkActionsTable.tsx +71 -0
- package/assets/templates/blocks/components/Table/TableFloatingBulkActionsTable.doc.mjs +19 -0
- package/assets/templates/blocks/components/Table/TableFloatingBulkActionsTable.tsx +139 -0
- package/assets/templates/blocks/components/TimeInput/TimeInputConstrained.tsx +1 -0
- package/assets/templates/blocks/components/Timer/TimerFormats.doc.mjs +14 -0
- package/assets/templates/blocks/components/Timer/TimerFormats.tsx +34 -0
- package/assets/templates/blocks/components/Timer/TimerInline.doc.mjs +14 -0
- package/assets/templates/blocks/components/Timer/TimerInline.tsx +14 -0
- package/assets/templates/blocks/components/Timer/TimerShowcase.doc.mjs +13 -0
- package/assets/templates/blocks/components/Timer/TimerShowcase.tsx +47 -0
- package/assets/templates/blocks/components/Timer/TimerTypography.doc.mjs +14 -0
- package/assets/templates/blocks/components/Timer/TimerTypography.tsx +31 -0
- package/assets/templates/blocks/components/Toolbar/ToolbarTableFilter.doc.mjs +19 -3
- package/assets/templates/blocks/components/Toolbar/ToolbarTableFilter.tsx +383 -65
- package/assets/templates/pages/table-tree/page.tsx +1704 -0
- package/assets/templates/pages/table-tree/template.doc.mjs +12 -0
- package/assets/templates/themes/butter/butterTheme.doc.mjs +11 -0
- package/assets/templates/themes/chocolate/chocolateTheme.doc.mjs +11 -0
- package/assets/templates/themes/gothic/gothicTheme.doc.mjs +11 -0
- package/assets/templates/themes/matcha/matchaTheme.doc.mjs +11 -0
- package/assets/templates/themes/neutral/neutralTheme.doc.mjs +11 -0
- package/assets/templates/themes/stone/stoneTheme.doc.mjs +11 -0
- package/assets/templates/themes/y2k/y2kTheme.doc.mjs +11 -0
- package/authoring/_shared/contract.ts +22 -0
- package/authoring/codemod/codemod.doc.mjs +7 -2
- package/authoring/codemod/parse.d.mts +8 -8
- package/authoring/codemod/parse.mjs +8 -6
- package/authoring/codemod/type.ts +12 -0
- package/authoring/config/config.doc.mjs +11 -3
- package/authoring/config/debug-composition.test.mjs +92 -0
- package/authoring/config/parse.d.mts +15 -13
- package/authoring/config/parse.mjs +27 -8
- package/authoring/config/parse.test.mjs +8 -0
- package/authoring/config/type.ts +29 -6
- package/authoring/debug/debug.doc.d.mts +11 -0
- package/authoring/debug/debug.doc.mjs +182 -0
- package/authoring/debug/parse.d.mts +8 -8
- package/authoring/debug/parse.mjs +3 -3
- package/authoring/discover/discover.doc.d.mts +13 -0
- package/authoring/discover/discover.doc.mjs +138 -0
- package/authoring/discover/parse.d.mts +24 -0
- package/authoring/discover/parse.mjs +128 -0
- package/authoring/discover/parse.test.mjs +124 -0
- package/authoring/discover/type.ts +87 -0
- package/authoring/doctypes/_schema.d.mts +792 -24
- package/authoring/doctypes/_schema.mjs +549 -39
- package/authoring/doctypes/base/graph-fields.doc.d.mts +9 -0
- package/authoring/doctypes/base/graph-fields.doc.mjs +64 -0
- package/authoring/doctypes/base/type.ts +43 -0
- package/authoring/doctypes/command/command.doc.mjs +4 -3
- package/authoring/doctypes/command/parse.d.mts +2 -2
- package/authoring/doctypes/command/parse.mjs +1 -1
- package/authoring/doctypes/command/type.ts +5 -4
- package/authoring/doctypes/component/component.doc.mjs +12 -3
- package/authoring/doctypes/component/parse.d.mts +2 -2
- package/authoring/doctypes/component/parse.mjs +1 -1
- package/authoring/doctypes/component/type.ts +14 -5
- package/authoring/doctypes/doctypes-new.test.mjs +48 -6
- package/authoring/doctypes/enum/enum.doc.mjs +1 -1
- package/authoring/doctypes/enum/parse.d.mts +2 -2
- package/authoring/doctypes/enum/parse.mjs +1 -1
- package/authoring/doctypes/enum/type.ts +4 -2
- package/authoring/doctypes/function/function.doc.mjs +7 -2
- package/authoring/doctypes/function/parse.d.mts +2 -2
- package/authoring/doctypes/function/parse.mjs +1 -1
- package/authoring/doctypes/function/type.ts +9 -4
- package/authoring/doctypes/hook/hook.doc.mjs +4 -0
- package/authoring/doctypes/hook/parse.d.mts +2 -2
- package/authoring/doctypes/hook/parse.mjs +1 -1
- package/authoring/doctypes/hook/type.ts +5 -4
- package/authoring/doctypes/legacy.d.mts +8 -6
- package/authoring/doctypes/legacy.mjs +5 -4
- package/authoring/doctypes/load-contract.test.mjs +233 -0
- package/authoring/doctypes/namespace/namespace.doc.d.mts +9 -0
- package/authoring/doctypes/namespace/namespace.doc.mjs +128 -0
- package/authoring/doctypes/namespace/parse.d.mts +12 -0
- package/authoring/doctypes/namespace/parse.mjs +25 -0
- package/authoring/doctypes/namespace/parse.test.mjs +163 -0
- package/authoring/doctypes/namespace/type.ts +74 -0
- package/authoring/doctypes/parse.d.mts +22 -18
- package/authoring/doctypes/parse.mjs +22 -11
- package/authoring/doctypes/parse.test.mjs +77 -3
- package/authoring/doctypes/reference/parse.d.mts +2 -2
- package/authoring/doctypes/reference/parse.mjs +8 -5
- package/authoring/doctypes/reference/reference.doc.mjs +55 -6
- package/authoring/doctypes/reference/type.ts +75 -7
- package/authoring/doctypes/schema/parse.d.mts +2 -2
- package/authoring/doctypes/schema/parse.mjs +1 -1
- package/authoring/doctypes/schema/schema.doc.mjs +2 -2
- package/authoring/doctypes/schema/type.ts +4 -4
- package/authoring/doctypes/template/parse.d.mts +94 -1
- package/authoring/doctypes/template/parse.mjs +40 -2
- package/authoring/doctypes/template/parse.test.mjs +26 -2
- package/authoring/doctypes/template/template.doc.mjs +13 -3
- package/authoring/doctypes/template/type.ts +13 -2
- package/authoring/doctypes/theme/parse.d.mts +35 -0
- package/authoring/doctypes/theme/parse.mjs +76 -0
- package/authoring/doctypes/theme/theme.doc.d.mts +9 -0
- package/authoring/doctypes/theme/theme.doc.mjs +79 -0
- package/authoring/doctypes/theme/type.ts +42 -0
- package/authoring/doctypes/types.ts +12 -10
- package/authoring/gap-report/gap-report.doc.d.mts +12 -0
- package/authoring/gap-report/gap-report.doc.mjs +183 -0
- package/authoring/gap-report/parse.d.mts +10 -10
- package/authoring/gap-report/parse.mjs +6 -6
- package/authoring/gap-report/type.ts +1 -1
- package/authoring/identity/identity.doc.d.mts +9 -0
- package/authoring/identity/identity.doc.mjs +61 -0
- package/authoring/identity/type.ts +132 -0
- package/authoring/index.d.mts +3 -0
- package/authoring/index.d.ts +62 -17
- package/authoring/index.mjs +4 -1
- package/authoring/integration/integration.doc.mjs +22 -13
- package/authoring/integration/parse.d.mts +2 -2
- package/authoring/integration/parse.mjs +1 -1
- package/authoring/integration/parse.test.mjs +10 -1
- package/authoring/integration/schema.d.mts +6 -4
- package/authoring/integration/schema.mjs +9 -3
- package/authoring/integration/type.ts +19 -8
- package/authoring/shadcn/receipt.d.mts +6 -6
- package/clients/cli/__tests__/cliManifest.test.ts +27 -29
- package/clients/cli/command-load-failure.test.mjs +83 -0
- package/clients/cli/commands/blog.doc.mjs +1 -1
- package/clients/cli/commands/blog.mjs +23 -8
- package/clients/cli/commands/blog.test.mjs +42 -1
- package/clients/cli/commands/build-theme.adaptations.test.mjs +100 -1
- package/clients/cli/commands/build-theme.ascii-output.test.mjs +161 -0
- package/clients/cli/commands/build-theme.flag-docs.test.mjs +110 -0
- package/clients/cli/commands/build-theme.mjs +16 -50
- package/clients/cli/commands/build-theme.path-safety.test.mjs +86 -1
- package/clients/cli/commands/build-theme.variants.test.mjs +76 -0
- package/clients/cli/commands/build.doc.mjs +16 -8
- package/clients/cli/commands/build.exit-codes-doc.test.mjs +50 -0
- package/clients/cli/commands/build.mjs +137 -114
- package/clients/cli/commands/build.playbook.test.mjs +75 -0
- package/clients/cli/commands/build.text-fields.test.mjs +81 -0
- package/clients/cli/commands/component/index.mjs +153 -61
- package/clients/cli/commands/component-batch.test.mjs +341 -0
- package/clients/cli/commands/component-ownership.test.mjs +92 -3
- package/clients/cli/commands/component-package.test.mjs +46 -0
- package/clients/cli/commands/component-resolution.test.mjs +21 -0
- package/clients/cli/commands/component.doc.mjs +28 -10
- package/clients/cli/commands/component.test.mjs +19 -0
- package/clients/cli/commands/detail-levels.test.mjs +2 -2
- package/clients/cli/commands/discover.broken-integration.test.mjs +52 -5
- package/clients/cli/commands/discover.components-flag.test.mjs +97 -0
- package/clients/cli/commands/discover.doc.mjs +55 -9
- package/clients/cli/commands/discover.mjs +393 -118
- package/clients/cli/commands/discover.sources.test.mjs +267 -0
- package/clients/cli/commands/discover.text-projection.test.mjs +103 -0
- package/clients/cli/commands/docs.doc.mjs +28 -6
- package/clients/cli/commands/docs.mjs +295 -38
- package/clients/cli/commands/doctor-integration-components.doc.mjs +1 -1
- package/clients/cli/commands/doctor-integration-docs.doc.mjs +6 -5
- package/clients/cli/commands/doctor-integration-templates.doc.mjs +15 -8
- package/clients/cli/commands/doctor-integration-validate.doc.mjs +1 -1
- package/clients/cli/commands/doctor-integration.doc.mjs +1 -1
- package/clients/cli/commands/doctor-integration.package-json.test.mjs +53 -0
- package/clients/cli/commands/doctor-integration.test.mjs +143 -8
- package/clients/cli/commands/doctor.doc.mjs +4 -2
- package/clients/cli/commands/doctor.mjs +108 -37
- package/clients/cli/commands/doctor.test.mjs +42 -0
- package/clients/cli/commands/gap-report.doc.mjs +27 -15
- package/clients/cli/commands/gap-report.test.mjs +72 -0
- package/clients/cli/commands/hook/index.mjs +7 -17
- package/clients/cli/commands/hook.doc.mjs +1 -1
- package/clients/cli/commands/hook.text-projection.test.mjs +45 -0
- package/clients/cli/commands/init.doc.mjs +24 -10
- package/clients/cli/commands/init.flag-help.test.mjs +153 -0
- package/clients/cli/commands/integration-add.controls.test.mjs +132 -0
- package/clients/cli/commands/integration-add.doc.mjs +39 -13
- package/clients/cli/commands/integration-authoring.test.mjs +74 -19
- package/clients/cli/commands/integration-pack.doc.mjs +6 -10
- package/clients/cli/commands/integration-real-world.test.mjs +4 -10
- package/clients/cli/commands/integration-verify.doc.mjs +22 -0
- package/clients/cli/commands/integration.doc.mjs +5 -5
- package/clients/cli/commands/integration.mjs +75 -43
- package/clients/cli/commands/interactive-guard.test.mjs +101 -24
- package/clients/cli/commands/json-contract.test.mjs +33 -0
- package/clients/cli/commands/layout-check.doc.mjs +15 -4
- package/clients/cli/commands/layout-expand.doc.mjs +22 -5
- package/clients/cli/commands/layout-grammar.doc.mjs +1 -1
- package/clients/cli/commands/layout.doc.mjs +3 -3
- package/clients/cli/commands/layout.mjs +21 -9
- package/clients/cli/commands/layout.path-help.test.mjs +33 -0
- package/clients/cli/commands/layout.stdin-cap.test.mjs +47 -0
- package/clients/cli/commands/layout.text-fields.test.mjs +39 -0
- package/clients/cli/commands/manifest.doc.mjs +2 -2
- package/clients/cli/commands/no-prompt-wording.test.mjs +94 -0
- package/clients/cli/commands/search.doc.mjs +16 -6
- package/clients/cli/commands/search.mjs +49 -11
- package/clients/cli/commands/search.test.mjs +92 -0
- package/clients/cli/commands/setup-nudge.test.mjs +6 -0
- package/clients/cli/commands/swizzle.doc.mjs +4 -3
- package/clients/cli/commands/swizzle.path-safety.test.mjs +42 -0
- package/clients/cli/commands/template.doc.mjs +53 -14
- package/clients/cli/commands/template.flag-help.test.mjs +117 -0
- package/clients/cli/commands/template.mjs +4 -91
- package/clients/cli/commands/template.path-help.test.mjs +40 -0
- package/clients/cli/commands/text-json-parity.test.mjs +725 -0
- package/clients/cli/commands/theme-add.doc.mjs +5 -4
- package/clients/cli/commands/theme-build.doc.mjs +8 -7
- package/clients/cli/commands/theme-list.doc.mjs +2 -2
- package/clients/cli/commands/theme-palette-generate.doc.mjs +12 -7
- package/clients/cli/commands/theme-palette-generate.test.mjs +19 -0
- package/clients/cli/commands/theme-palette.doc.mjs +2 -3
- package/clients/cli/commands/theme-targets.behavior.test.mjs +4 -3
- package/clients/cli/commands/theme-targets.doc.mjs +3 -3
- package/clients/cli/commands/theme-template.behavior.test.mjs +12 -0
- package/clients/cli/commands/theme-template.doc.mjs +2 -2
- package/clients/cli/commands/theme.doc.mjs +3 -2
- package/clients/cli/commands/upgrade.ascii-output.test.mjs +87 -0
- package/clients/cli/commands/upgrade.doc.mjs +83 -12
- package/clients/cli/commands/upgrade.file-protection.test.mjs +228 -0
- package/clients/cli/commands/upgrade.flag-help.test.mjs +188 -0
- package/clients/cli/commands/upgrade.hook-output.test.mjs +88 -0
- package/clients/cli/commands/upgrade.mjs +29 -7
- package/clients/cli/formatters/index.mjs +164 -1
- package/clients/cli/formatters/index.test.mjs +97 -0
- package/clients/cli/index.mjs +47 -34
- package/clients/cli/latest-version-env.test.mjs +50 -0
- package/clients/cli/lib/cli-error.test.mjs +7 -0
- package/clients/cli/lib/component-format.mjs +9 -9
- package/clients/cli/lib/component-format.test.mjs +1 -1
- package/clients/cli/lib/define-command.mjs +56 -6
- package/clients/cli/lib/define-command.test.mjs +54 -0
- package/clients/cli/lib/doc-text-ascii.test.mjs +82 -0
- package/clients/cli/lib/exit-codes.test.mjs +113 -0
- package/clients/cli/lib/hook-format.mjs +19 -10
- package/clients/cli/lib/json-shim.mjs +62 -16
- package/clients/cli/lib/json-shim.test.mjs +83 -0
- package/clients/cli/lib/manifest.d.ts +2 -0
- package/clients/cli/lib/manifest.mjs +53 -6
- package/clients/cli/lib/manifest.test.mjs +22 -2
- package/clients/cli/lib/parse-error-format.test.mjs +81 -0
- package/foundation/agent-docs/agent-docs.d.mts +7 -2
- package/foundation/agent-docs/agent-docs.mjs +83 -13
- package/foundation/agent-docs/agent-docs.path-safety.test.mjs +266 -4
- package/foundation/config/integration-debug.test.mjs +28 -3
- package/foundation/config/project-themes.test.mjs +11 -19
- package/foundation/config/project.d.mts +20 -11
- package/foundation/config/project.mjs +263 -91
- package/foundation/config/project.test.mjs +270 -21
- package/foundation/discovery/authoring-self-docs.d.mts +87 -0
- package/foundation/discovery/authoring-self-docs.mjs +237 -0
- package/foundation/discovery/authoring-self-docs.test.mjs +174 -0
- package/foundation/discovery/authoring-surface.d.mts +74 -0
- package/foundation/discovery/authoring-surface.mjs +525 -0
- package/foundation/discovery/authoring-surface.test.mjs +392 -0
- package/foundation/discovery/cli-self-docs.d.mts +119 -0
- package/foundation/discovery/cli-self-docs.mjs +504 -0
- package/foundation/discovery/cli-self-docs.test.mjs +395 -0
- package/foundation/discovery/component-discovery.d.mts +39 -1
- package/foundation/discovery/component-discovery.mjs +50 -1
- package/foundation/discovery/component-loader.d.mts +35 -38
- package/foundation/discovery/component-loader.mjs +53 -222
- package/foundation/discovery/docs-discovery.d.mts +119 -11
- package/foundation/discovery/docs-discovery.mjs +427 -108
- package/foundation/discovery/docs-discovery.test.mjs +386 -20
- package/foundation/discovery/docs-output-budget.d.mts +28 -0
- package/foundation/discovery/docs-output-budget.mjs +50 -0
- package/foundation/discovery/docs-section-key.d.mts +116 -0
- package/foundation/discovery/docs-section-key.mjs +322 -0
- package/foundation/discovery/docs-section-key.test.mjs +246 -0
- package/foundation/discovery/template-adapter.d.mts +113 -11
- package/foundation/discovery/template-adapter.fixture-refs.test.mjs +248 -0
- package/foundation/discovery/template-adapter.integration-isolation.test.mjs +94 -0
- package/foundation/discovery/template-adapter.mjs +774 -83
- package/foundation/discovery/template-adapter.test.mjs +57 -0
- package/foundation/discovery/template-conflict-release.d.mts +13 -0
- package/foundation/discovery/template-conflict-release.mjs +40 -0
- package/foundation/discovery/template-conflict-release.test.mjs +40 -0
- package/foundation/discovery/theme-discovery.d.mts +67 -7
- package/foundation/discovery/theme-discovery.mjs +916 -186
- package/foundation/discovery/theme-discovery.test.mjs +613 -219
- package/foundation/discovery/theming-targets.test.mjs +4 -0
- package/foundation/doc-compiler/bundle.d.mts +47 -0
- package/foundation/doc-compiler/bundle.mjs +278 -0
- package/foundation/doc-compiler/bundle.test.mjs +266 -0
- package/foundation/doc-compiler/compile.d.mts +343 -0
- package/foundation/doc-compiler/compile.mjs +558 -0
- package/foundation/doc-compiler/diagnostics.d.mts +126 -0
- package/foundation/doc-compiler/diagnostics.mjs +305 -0
- package/foundation/doc-compiler/doc-compiler.test.mjs +714 -0
- package/foundation/doc-compiler/doc-loads.test.mjs +1643 -0
- package/foundation/doc-compiler/import.d.mts +24 -0
- package/foundation/doc-compiler/import.mjs +59 -0
- package/foundation/doc-compiler/inputs.d.mts +102 -0
- package/foundation/doc-compiler/inputs.mjs +291 -0
- package/foundation/doc-compiler/inputs.test.mjs +298 -0
- package/foundation/doc-compiler/ir.d.mts +22 -0
- package/foundation/doc-compiler/ir.mjs +471 -0
- package/foundation/doc-compiler/lenses.d.mts +36 -0
- package/foundation/doc-compiler/lenses.mjs +173 -0
- package/foundation/doc-compiler/links.d.mts +162 -0
- package/foundation/doc-compiler/links.mjs +294 -0
- package/foundation/doc-compiler/links.test.mjs +192 -0
- package/foundation/doc-compiler/lower-doc.test.mjs +495 -0
- package/foundation/doc-compiler/overlays.d.mts +37 -0
- package/foundation/doc-compiler/overlays.mjs +206 -0
- package/foundation/doc-compiler/parse-readable.d.mts +9 -0
- package/foundation/doc-compiler/parse-readable.mjs +29 -0
- package/foundation/doc-compiler/read.d.mts +127 -0
- package/foundation/doc-compiler/read.mjs +325 -0
- package/foundation/doc-compiler/read.test.mjs +313 -0
- package/foundation/doc-compiler/source.d.mts +33 -0
- package/foundation/doc-compiler/source.mjs +128 -0
- package/foundation/doc-compiler/tree.d.mts +292 -0
- package/foundation/doc-compiler/tree.mjs +881 -0
- package/foundation/fs/file-protection.d.mts +33 -0
- package/foundation/fs/file-protection.mjs +825 -0
- package/foundation/fs/file-protection.test.mjs +250 -0
- package/foundation/fs/module-loader.d.mts +1 -0
- package/foundation/fs/module-loader.mjs +50 -1
- package/foundation/fs/module-loader.stdout.test.mjs +332 -0
- package/foundation/fs/path-safety.d.mts +3 -2
- package/foundation/fs/path-safety.mjs +49 -19
- package/foundation/fs/path-safety.test.mjs +50 -0
- package/foundation/fs/publish-file-hardlink-unavailable.test.mjs +129 -94
- package/foundation/identity/provider-identity.d.mts +90 -0
- package/foundation/identity/provider-identity.mjs +320 -0
- package/foundation/identity/provider-identity.test.mjs +254 -0
- package/foundation/identity/providers.d.mts +7 -0
- package/foundation/identity/providers.mjs +16 -0
- package/foundation/integrations/autolink.d.mts +58 -1
- package/foundation/integrations/autolink.mjs +143 -45
- package/foundation/integrations/autolink.test.mjs +1 -1
- package/foundation/integrations/cli-requirement.d.mts +65 -0
- package/foundation/integrations/cli-requirement.mjs +189 -0
- package/foundation/integrations/cli-requirement.test.mjs +89 -0
- package/foundation/integrations/contribution-fixes.d.mts +145 -0
- package/foundation/integrations/contribution-fixes.mjs +1284 -0
- package/foundation/integrations/contribution-inventory.d.mts +3 -2
- package/foundation/integrations/contribution-inventory.mjs +28 -25
- package/foundation/integrations/contribution-inventory.test.mjs +86 -27
- package/foundation/integrations/integration-warnings.d.mts +9 -2
- package/foundation/integrations/integration-warnings.mjs +52 -21
- package/foundation/integrations/integration-warnings.test.mjs +74 -1
- package/foundation/integrations/integrations.d.mts +63 -3
- package/foundation/integrations/integrations.mjs +122 -9
- package/foundation/integrations/integrations.test.mjs +415 -1
- package/foundation/integrations/provider-conflicts.test.mjs +125 -0
- package/foundation/integrations/provider-ledger.test.mjs +275 -0
- package/foundation/integrations/provider-resolution.d.mts +152 -0
- package/foundation/integrations/provider-resolution.mjs +576 -0
- package/foundation/integrations/provider-resolution.test.mjs +369 -0
- package/foundation/integrations/theme-descriptor.d.mts +8 -0
- package/foundation/integrations/theme-descriptor.mjs +44 -0
- package/foundation/integrations/validate-contributions.d.mts +2 -0
- package/foundation/integrations/validate-contributions.mjs +131 -29
- package/foundation/response/base.d.ts +8 -4
- package/foundation/response/batch.type.d.mts +33 -0
- package/foundation/response/batch.type.mjs +34 -0
- package/foundation/response/error-codes.d.mts +3 -1
- package/foundation/response/error-codes.d.ts +2 -0
- package/foundation/response/error-codes.doc.mjs +19 -12
- package/foundation/response/error-codes.mjs +8 -2
- package/foundation/response/error-codes.test.mjs +166 -14
- package/foundation/response/json-contract.test.mjs +57 -17
- package/foundation/response/json.d.mts +4 -2
- package/foundation/response/json.mjs +8 -10
- package/foundation/response/response-types.doc.d.mts +7 -2
- package/foundation/response/response-types.doc.mjs +69 -25
- package/foundation/response/response-types.doc.test.mjs +181 -0
- package/foundation/response/response.doc.mjs +12 -11
- package/foundation/text/string-utils.d.mts +8 -0
- package/foundation/text/string-utils.mjs +40 -10
- package/foundation/xle/expand.d.mts +2 -0
- package/foundation/xle/expand.mjs +4 -3
- package/foundation/xle/expand.test.mjs +54 -0
- package/foundation/xle/xle.test.mjs +13 -0
- package/package.json +10 -11
- package/api/docs/docs.test.mjs +0 -83
- package/api/docs/integrationDocs.test.mjs +0 -208
- package/api/search/search.test.mjs +0 -389
- package/assets/docs/cli-integrations.doc.mjs +0 -367
- package/assets/templates/themes/manifest.json +0 -95
- package/clients/cli/commands/docs.test.mjs +0 -102
- package/clients/cli/lib/update-check.mjs +0 -83
- package/clients/cli/lib/update-check.test.mjs +0 -137
- package/clients/cli/update-hint-commands.test.mjs +0 -54
- package/foundation/agent-docs/agent-docs.test.mjs +0 -1141
|
@@ -8,6 +8,7 @@ export const docs = {
|
|
|
8
8
|
category: 'guide',
|
|
9
9
|
description:
|
|
10
10
|
'How to set up AI coding tools to generate correct component code.',
|
|
11
|
+
keywords: ['claude', 'cursor', 'codex', 'copilot', 'agents', 'mcp'],
|
|
11
12
|
|
|
12
13
|
sections: [
|
|
13
14
|
{
|
|
@@ -24,7 +25,8 @@ export const docs = {
|
|
|
24
25
|
],
|
|
25
26
|
},
|
|
26
27
|
{
|
|
27
|
-
|
|
28
|
+
id: 'quick-start',
|
|
29
|
+
title: 'Set up agent docs',
|
|
28
30
|
content: [
|
|
29
31
|
{
|
|
30
32
|
type: 'prose',
|
|
@@ -38,7 +40,7 @@ export const docs = {
|
|
|
38
40
|
},
|
|
39
41
|
{
|
|
40
42
|
type: 'prose',
|
|
41
|
-
text: "That's it. The `init --features agents` command generates everything your AI needs (component index, behavioral rules, CLI reference, and package guidance from configured integrations) from the installed project. After a dependency bump, `astryx upgrade
|
|
43
|
+
text: "That's it. The `init --features agents` command generates everything your AI needs (component index, behavioral rules, CLI reference, and package guidance from configured integrations) from the installed project. After a dependency bump, `astryx upgrade --from <old version>` reports a stale block and adding `--apply` refreshes it.",
|
|
42
44
|
},
|
|
43
45
|
{
|
|
44
46
|
type: 'prose',
|
|
@@ -48,10 +50,12 @@ export const docs = {
|
|
|
48
50
|
type: 'code',
|
|
49
51
|
lang: 'bash',
|
|
50
52
|
label: 'Manual options',
|
|
51
|
-
code: `npx @astryxdesign/cli init --features agents --agent claude # .claude/CLAUDE.md
|
|
52
|
-
npx @astryxdesign/cli init --features agents --agent cursor # .cursorrules
|
|
53
|
+
code: `npx @astryxdesign/cli init --features agents --agent claude # CLAUDE.md if present, else .claude/CLAUDE.md
|
|
54
|
+
npx @astryxdesign/cli init --features agents --agent cursor # .cursorrules if present, else AGENTS.md
|
|
53
55
|
npx @astryxdesign/cli init --features agents --agent codex # AGENTS.md (Copilot, Codex, etc.)
|
|
54
|
-
npx @astryxdesign/cli init --features agents --agent
|
|
56
|
+
npx @astryxdesign/cli init --features agents --agent hermes # .hermes.md or HERMES.md if present, else AGENTS.md
|
|
57
|
+
npx @astryxdesign/cli init --features agents --agent muse # AGENTS.md (Muse)
|
|
58
|
+
npx @astryxdesign/cli init --features agents --agent all # every agent file present, else AGENTS.md and .claude/CLAUDE.md`,
|
|
55
59
|
},
|
|
56
60
|
],
|
|
57
61
|
},
|
|
@@ -66,14 +70,14 @@ npx @astryxdesign/cli init --features agents --agent muse # AGENTS.md (Muse
|
|
|
66
70
|
type: 'list',
|
|
67
71
|
style: 'ordered',
|
|
68
72
|
items: [
|
|
69
|
-
'`astryx
|
|
70
|
-
'`astryx template <name>
|
|
73
|
+
'`astryx build "<idea>"`: get the page template to start from (always one: the closest match, or the app shell), two other templates, and the blocks and components for the parts it lacks',
|
|
74
|
+
'`astryx template <name> <path>`: scaffold that template into the project, keep its frame and spacing, and replace its content',
|
|
71
75
|
'`astryx component <Name>`: read props and examples for every component used',
|
|
72
76
|
],
|
|
73
77
|
},
|
|
74
78
|
{
|
|
75
79
|
type: 'prose',
|
|
76
|
-
text: "It also includes rules that prevent common mistakes (no raw divs, no style={{}}, use tokens not magic values), a CLI quick reference, and package-labeled integration guidance when a configured manifest declares `agentDocs`. After setup, you shouldn't need to manually correct your AI on these conventions; the agent docs handle it at the system level.",
|
|
80
|
+
text: "It also includes rules that prevent common mistakes (start every page from a template, no raw divs, no style={{}}, use tokens not magic values), a CLI quick reference, and package-labeled integration guidance when a configured manifest declares `agentDocs`. After setup, you shouldn't need to manually correct your AI on these conventions; the agent docs handle it at the system level.",
|
|
77
81
|
},
|
|
78
82
|
],
|
|
79
83
|
},
|
|
@@ -82,14 +86,17 @@ npx @astryxdesign/cli init --features agents --agent muse # AGENTS.md (Muse
|
|
|
82
86
|
content: [
|
|
83
87
|
{
|
|
84
88
|
type: 'prose',
|
|
85
|
-
text: 'Cursor project rules
|
|
89
|
+
text: 'Cursor reads project rules from `.cursor/rules/`. To keep the Astryx context in a rule of its own, write it there. Give a path relative to the project root, such as `.cursor/rules/astryx.mdc`; an absolute path is refused.',
|
|
86
90
|
},
|
|
87
91
|
{
|
|
88
92
|
type: 'code',
|
|
89
93
|
lang: 'bash',
|
|
90
|
-
label: 'Install as a Cursor
|
|
91
|
-
code: `
|
|
92
|
-
|
|
94
|
+
label: 'Install as a Cursor project rule',
|
|
95
|
+
code: `npx @astryxdesign/cli init --features agents --agent-docs-path .cursor/rules/astryx.mdc`,
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
type: 'prose',
|
|
99
|
+
text: 'Rerunning the same command rewrites only the Astryx block, so frontmatter you add above it (such as `alwaysApply: true`) stays.',
|
|
93
100
|
},
|
|
94
101
|
],
|
|
95
102
|
},
|
|
@@ -98,7 +105,7 @@ npx @astryxdesign/cli init --features agents --agent-docs-path ~/.cursor/rules/x
|
|
|
98
105
|
content: [
|
|
99
106
|
{
|
|
100
107
|
type: 'prose',
|
|
101
|
-
text: 'Paste this into your AI before writing any component code.
|
|
108
|
+
text: 'Paste this into your AI before writing any component code. If your AI can\'t answer these questions, it\'ll know to install the agent docs first.',
|
|
102
109
|
},
|
|
103
110
|
{
|
|
104
111
|
type: 'code',
|
|
@@ -107,7 +114,7 @@ npx @astryxdesign/cli init --features agents --agent-docs-path ~/.cursor/rules/x
|
|
|
107
114
|
code: `Before writing any Astryx code, check your knowledge:
|
|
108
115
|
|
|
109
116
|
1. What is the correct import path for Button?
|
|
110
|
-
2. How do you make
|
|
117
|
+
2. How do you make a Dialog non-dismissible?
|
|
111
118
|
3. What prop does Selector use for its items?
|
|
112
119
|
|
|
113
120
|
If you don't know all three, run \`npx @astryxdesign/cli init --features agents\` to generate agent docs, then read the generated file.`,
|
|
@@ -131,33 +138,34 @@ If you don't know all three, run \`npx @astryxdesign/cli init --features agents\
|
|
|
131
138
|
},
|
|
132
139
|
{
|
|
133
140
|
type: 'prose',
|
|
134
|
-
text: 'With this alias, agents
|
|
141
|
+
text: 'With this alias, agents run `npm run astryx -- component --list` instead of guessing the binary path. The `--` separator is standard npm convention for passing flags to scripts.',
|
|
135
142
|
},
|
|
136
143
|
{
|
|
137
144
|
type: 'code',
|
|
138
145
|
lang: 'bash',
|
|
139
146
|
label: 'Reliable CLI invocation',
|
|
140
|
-
code: `astryx component --list
|
|
141
|
-
astryx component Dialog --dense
|
|
142
|
-
astryx docs styling --
|
|
143
|
-
astryx docs tokens --dense`,
|
|
147
|
+
code: `npm run astryx -- component --list
|
|
148
|
+
npm run astryx -- component Dialog --dense
|
|
149
|
+
npm run astryx -- docs styling --full --detail brief
|
|
150
|
+
npm run astryx -- docs tokens --dense`,
|
|
144
151
|
},
|
|
145
152
|
],
|
|
146
153
|
},
|
|
147
154
|
{
|
|
148
|
-
|
|
155
|
+
id: 'the-dense-flag',
|
|
156
|
+
title: 'Shorter output: --detail and --dense',
|
|
149
157
|
content: [
|
|
150
158
|
{
|
|
151
159
|
type: 'prose',
|
|
152
|
-
text: '
|
|
160
|
+
text: 'For a shorter read, add `--detail brief` (one line per section) or `--detail compact`. `--dense` swaps in a shorter text where a doc ships one. Use them when pasting CLI output into a web-based AI tool like ChatGPT or Claude.',
|
|
153
161
|
},
|
|
154
162
|
{
|
|
155
163
|
type: 'code',
|
|
156
164
|
lang: 'bash',
|
|
157
|
-
label: '
|
|
158
|
-
code: `astryx
|
|
159
|
-
astryx
|
|
160
|
-
astryx docs
|
|
165
|
+
label: 'Short output for pasting into AI conversations',
|
|
166
|
+
code: `astryx docs styling --full --detail brief
|
|
167
|
+
astryx component Dialog --detail compact
|
|
168
|
+
astryx docs principles --dense`,
|
|
161
169
|
},
|
|
162
170
|
],
|
|
163
171
|
},
|
|
@@ -182,7 +190,7 @@ astryx docs tokens --dense`,
|
|
|
182
190
|
label: 'MCP config (same for all tools)',
|
|
183
191
|
code: `{
|
|
184
192
|
"mcpServers": {
|
|
185
|
-
"
|
|
193
|
+
"astryx": {
|
|
186
194
|
"type": "url",
|
|
187
195
|
"url": "https://astryx.atmeta.com/mcp"
|
|
188
196
|
}
|
package/assets/templates/blocks/components/CheckboxList/CheckboxListSelectAllPattern.doc.mjs
CHANGED
|
@@ -10,5 +10,5 @@ export const doc = {
|
|
|
10
10
|
'A "select all" toggle at the top of a checkbox list that switches to an indeterminate dash when only some items are checked, useful for bulk actions like exporting documents or assigning permissions where users often want everything at once.',
|
|
11
11
|
isReady: true,
|
|
12
12
|
aspectRatio: 16 / 9,
|
|
13
|
-
componentsUsed: ['CheckboxList'
|
|
13
|
+
componentsUsed: ['CheckboxList'],
|
|
14
14
|
};
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
import {useState} from 'react';
|
|
6
6
|
import {CheckboxList, CheckboxListItem} from '@astryxdesign/core/CheckboxList';
|
|
7
|
-
import {Divider} from '@astryxdesign/core/Divider';
|
|
8
7
|
|
|
9
8
|
const DOCUMENTS = [
|
|
10
9
|
{id: 'transactions', label: 'Transaction history'},
|
|
@@ -27,7 +26,7 @@ export default function CheckboxListSelectAllPattern() {
|
|
|
27
26
|
: ('indeterminate' as const);
|
|
28
27
|
|
|
29
28
|
return (
|
|
30
|
-
<CheckboxList label="Include in export">
|
|
29
|
+
<CheckboxList label="Include in export" hasDividers>
|
|
31
30
|
<CheckboxListItem
|
|
32
31
|
label="Select all"
|
|
33
32
|
isChecked={selectAllState}
|
|
@@ -35,7 +34,6 @@ export default function CheckboxListSelectAllPattern() {
|
|
|
35
34
|
setSelected(checked ? [...ALL_IDS] : []);
|
|
36
35
|
}}
|
|
37
36
|
/>
|
|
38
|
-
<Divider />
|
|
39
37
|
{DOCUMENTS.map(doc => (
|
|
40
38
|
<CheckboxListItem
|
|
41
39
|
key={doc.id}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import {useState} from 'react';
|
|
6
6
|
import {InternationalizationProvider} from '@astryxdesign/core/i18n';
|
|
7
|
-
import frFR from '@astryxdesign/core/locales/fr-FR.
|
|
7
|
+
import frFR from '@astryxdesign/core/locales/fr-FR.generated.js';
|
|
8
8
|
import {Stack} from '@astryxdesign/core/Layout';
|
|
9
9
|
import {
|
|
10
10
|
SegmentedControl,
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').TemplateDoc} */
|
|
4
|
+
export const doc = {
|
|
5
|
+
type: 'block',
|
|
6
|
+
exampleFor: 'Item',
|
|
7
|
+
name: 'Item — Document Tabs',
|
|
8
|
+
displayName: 'Item — Document Tabs',
|
|
9
|
+
description:
|
|
10
|
+
'Single-row, horizontally scrollable document switcher with compact selected rows, leading file icons, instant reveal-on-hover close actions with reserved geometry, stable separators, and an add control outside the scroll area. Use for editor tabs, workspace tabs, open documents, files, canvases, or panels.',
|
|
11
|
+
isReady: true,
|
|
12
|
+
aspectRatio: 16 / 4,
|
|
13
|
+
componentsUsed: ['Item', 'Divider', 'Icon', 'IconButton', 'Layout'],
|
|
14
|
+
};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
import {Fragment} from 'react';
|
|
6
|
+
import * as stylex from '@stylexjs/stylex';
|
|
7
|
+
|
|
8
|
+
import {Divider} from '@astryxdesign/core/Divider';
|
|
9
|
+
import {useContainerReveal} from '@astryxdesign/core/hooks';
|
|
10
|
+
import {Icon} from '@astryxdesign/core/Icon';
|
|
11
|
+
import {IconButton} from '@astryxdesign/core/IconButton';
|
|
12
|
+
import {Item} from '@astryxdesign/core/Item';
|
|
13
|
+
import {HStack} from '@astryxdesign/core/Layout';
|
|
14
|
+
import {mergeProps} from '@astryxdesign/core/utils';
|
|
15
|
+
import {DocumentIcon, PlusIcon, XMarkIcon} from '@heroicons/react/24/outline';
|
|
16
|
+
|
|
17
|
+
const TABS = [
|
|
18
|
+
{name: 'Project brief', isActive: true},
|
|
19
|
+
{name: 'Research notes', isActive: false},
|
|
20
|
+
{name: 'Interaction prototype', isActive: false},
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
const styles = stylex.create({
|
|
24
|
+
strip: {minWidth: 0, flexShrink: 1, scrollbarWidth: 'none'},
|
|
25
|
+
rule: {height: 16},
|
|
26
|
+
hidden: {visibility: 'hidden'},
|
|
27
|
+
tab: {flexShrink: 1, width: 164, minWidth: 96},
|
|
28
|
+
action: {margin: 'calc(-1 * var(--spacing-1))', transitionProperty: 'none'},
|
|
29
|
+
});
|
|
30
|
+
function DocumentTab({name, isActive}: (typeof TABS)[number]) {
|
|
31
|
+
const {getContainerProps, getContentRevealProps} = useContainerReveal();
|
|
32
|
+
const revealProps = getContentRevealProps({
|
|
33
|
+
forceVisibility: isActive ? 'shown' : undefined,
|
|
34
|
+
isLayoutPreserved: true,
|
|
35
|
+
});
|
|
36
|
+
return (
|
|
37
|
+
<Item
|
|
38
|
+
label={name}
|
|
39
|
+
density="compact"
|
|
40
|
+
isSelected={isActive}
|
|
41
|
+
onClick={() => {}}
|
|
42
|
+
aria-current={isActive ? 'true' : undefined}
|
|
43
|
+
{...getContainerProps()}
|
|
44
|
+
startContent={
|
|
45
|
+
<Icon
|
|
46
|
+
icon={DocumentIcon}
|
|
47
|
+
size="sm"
|
|
48
|
+
color={isActive ? 'primary' : 'secondary'}
|
|
49
|
+
/>
|
|
50
|
+
}
|
|
51
|
+
endContent={
|
|
52
|
+
<IconButton
|
|
53
|
+
label={`Close ${name}`}
|
|
54
|
+
variant="ghost"
|
|
55
|
+
size="sm"
|
|
56
|
+
icon={<Icon icon={XMarkIcon} size="sm" />}
|
|
57
|
+
{...mergeProps(revealProps, stylex.props(styles.action))}
|
|
58
|
+
/>
|
|
59
|
+
}
|
|
60
|
+
xstyle={styles.tab}
|
|
61
|
+
/>
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export default function ItemDocumentTabs() {
|
|
66
|
+
return (
|
|
67
|
+
<HStack width="100%" maxWidth={600} gap={0.5} vAlign="center">
|
|
68
|
+
<HStack
|
|
69
|
+
role="group"
|
|
70
|
+
aria-label="Open documents"
|
|
71
|
+
vAlign="center"
|
|
72
|
+
paddingInline={2}
|
|
73
|
+
paddingBlock={1}
|
|
74
|
+
isScrollable
|
|
75
|
+
xstyle={styles.strip}>
|
|
76
|
+
{TABS.map((tab, index) => (
|
|
77
|
+
<Fragment key={tab.name}>
|
|
78
|
+
{index > 0 ? (
|
|
79
|
+
<Divider
|
|
80
|
+
orientation="vertical"
|
|
81
|
+
xstyle={[
|
|
82
|
+
styles.rule,
|
|
83
|
+
(TABS[index - 1]?.isActive || tab.isActive) && styles.hidden,
|
|
84
|
+
]}
|
|
85
|
+
/>
|
|
86
|
+
) : null}
|
|
87
|
+
<DocumentTab {...tab} />
|
|
88
|
+
</Fragment>
|
|
89
|
+
))}
|
|
90
|
+
</HStack>
|
|
91
|
+
<IconButton
|
|
92
|
+
label="New document"
|
|
93
|
+
tooltip="New document"
|
|
94
|
+
variant="ghost"
|
|
95
|
+
size="sm"
|
|
96
|
+
icon={<Icon icon={PlusIcon} size="sm" color="secondary" />}
|
|
97
|
+
/>
|
|
98
|
+
</HStack>
|
|
99
|
+
);
|
|
100
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').TemplateDoc} */
|
|
4
|
+
export const doc = {
|
|
5
|
+
type: 'block',
|
|
6
|
+
exampleFor: 'ScrollableArea',
|
|
7
|
+
name: 'ScrollableArea — Inline Rail',
|
|
8
|
+
displayName: 'Scrollable Area — Inline Rail',
|
|
9
|
+
description:
|
|
10
|
+
'axis="inline" scrolls the same cards sideways; isFullBleed lets the rail run to the panel edges while the content padding keeps the first card aligned with the heading.',
|
|
11
|
+
isReady: true,
|
|
12
|
+
aspectRatio: 16 / 9,
|
|
13
|
+
componentsUsed: ['ScrollableArea', 'Card', 'Link'],
|
|
14
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
import {ScrollableArea} from '@astryxdesign/core/ScrollableArea';
|
|
6
|
+
import {Card} from '@astryxdesign/core/Card';
|
|
7
|
+
import {HStack, VStack} from '@astryxdesign/core/Layout';
|
|
8
|
+
import {Heading, Text} from '@astryxdesign/core/Text';
|
|
9
|
+
import {Link} from '@astryxdesign/core/Link';
|
|
10
|
+
|
|
11
|
+
const FILES = [
|
|
12
|
+
{id: 'brief', title: 'Q3 launch brief', meta: 'Edited 2 days ago'},
|
|
13
|
+
{id: 'pricing', title: 'Pricing rework', meta: 'Edited 3 days ago'},
|
|
14
|
+
{id: 'onboarding', title: 'Onboarding flow v4', meta: 'Edited 4 days ago'},
|
|
15
|
+
{id: 'macros', title: 'Support macros', meta: 'Edited last week'},
|
|
16
|
+
{id: 'brand', title: 'Brand refresh', meta: 'Priya Raman'},
|
|
17
|
+
{id: 'checkout', title: 'Checkout audit', meta: 'Tomas Lindqvist'},
|
|
18
|
+
{id: 'partner', title: 'Partner deck', meta: 'Ines Okafor'},
|
|
19
|
+
];
|
|
20
|
+
|
|
21
|
+
export default function ScrollableAreaInlineRail() {
|
|
22
|
+
return (
|
|
23
|
+
<Card width={460} padding={4}>
|
|
24
|
+
<VStack gap={3}>
|
|
25
|
+
<HStack hAlign="between" vAlign="center">
|
|
26
|
+
<VStack gap={0.5}>
|
|
27
|
+
<Heading level={3}>Workspace files</Heading>
|
|
28
|
+
<Text type="supporting">Recently opened</Text>
|
|
29
|
+
</VStack>
|
|
30
|
+
<Link href="#files">View all</Link>
|
|
31
|
+
</HStack>
|
|
32
|
+
{/* isFullBleed lets the rail reach the card's edges, while the content
|
|
33
|
+
padding keeps the first card aligned with the heading above it and
|
|
34
|
+
leaves room under the cards for the scrollbar. */}
|
|
35
|
+
<ScrollableArea
|
|
36
|
+
axis="inline"
|
|
37
|
+
role="region"
|
|
38
|
+
label="Recently opened files"
|
|
39
|
+
isFullBleed
|
|
40
|
+
paddingInline={4}
|
|
41
|
+
paddingBlockStart={0.5}
|
|
42
|
+
paddingBlockEnd={4}>
|
|
43
|
+
<HStack gap={2}>
|
|
44
|
+
{FILES.map(file => (
|
|
45
|
+
<Card key={file.id} variant="muted" padding={3} width={170}>
|
|
46
|
+
<VStack gap={1}>
|
|
47
|
+
<Text weight="medium" maxLines={1}>
|
|
48
|
+
{file.title}
|
|
49
|
+
</Text>
|
|
50
|
+
<Text type="supporting" maxLines={1}>
|
|
51
|
+
{file.meta}
|
|
52
|
+
</Text>
|
|
53
|
+
</VStack>
|
|
54
|
+
</Card>
|
|
55
|
+
))}
|
|
56
|
+
</HStack>
|
|
57
|
+
</ScrollableArea>
|
|
58
|
+
</VStack>
|
|
59
|
+
</Card>
|
|
60
|
+
);
|
|
61
|
+
}
|
package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaOverscrollChaining.doc.mjs
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').TemplateDoc} */
|
|
4
|
+
export const doc = {
|
|
5
|
+
type: 'block',
|
|
6
|
+
exampleFor: 'ScrollableArea',
|
|
7
|
+
name: 'ScrollableArea — Overscroll',
|
|
8
|
+
displayName: 'Scrollable Area — Overscroll',
|
|
9
|
+
description:
|
|
10
|
+
'The same section, two edge policies: the default overscroll="allow" hands a gesture that reaches the end to the panel behind it, while overscroll="contain" stops it at the section edge.',
|
|
11
|
+
isReady: true,
|
|
12
|
+
aspectRatio: 1,
|
|
13
|
+
componentsUsed: ['ScrollableArea', 'Card', 'Grid'],
|
|
14
|
+
};
|
package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaOverscrollChaining.tsx
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
import * as stylex from '@stylexjs/stylex';
|
|
6
|
+
import {ScrollableArea} from '@astryxdesign/core/ScrollableArea';
|
|
7
|
+
import {Card} from '@astryxdesign/core/Card';
|
|
8
|
+
import {Grid} from '@astryxdesign/core/Grid';
|
|
9
|
+
import {VStack} from '@astryxdesign/core/Layout';
|
|
10
|
+
import {Heading, Text} from '@astryxdesign/core/Text';
|
|
11
|
+
import {
|
|
12
|
+
borderVars,
|
|
13
|
+
colorVars,
|
|
14
|
+
radiusVars,
|
|
15
|
+
} from '@astryxdesign/core/theme/tokens.stylex';
|
|
16
|
+
|
|
17
|
+
const styles = stylex.create({
|
|
18
|
+
// A hairline frame so the nested viewport's edge — the edge the gesture
|
|
19
|
+
// meets — is visible.
|
|
20
|
+
sectionFrame: {
|
|
21
|
+
borderWidth: borderVars['--border-width'],
|
|
22
|
+
borderStyle: 'solid',
|
|
23
|
+
borderColor: colorVars['--color-border'],
|
|
24
|
+
borderRadius: radiusVars['--radius-element'],
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
const SHARED = [
|
|
29
|
+
{id: 'brand', title: 'Brand refresh', meta: 'Priya Raman'},
|
|
30
|
+
{id: 'checkout', title: 'Checkout audit', meta: 'Tomas Lindqvist'},
|
|
31
|
+
{id: 'partner', title: 'Partner deck', meta: 'Ines Okafor'},
|
|
32
|
+
{id: 'research', title: 'Research synthesis', meta: 'Mei Watanabe'},
|
|
33
|
+
{id: 'tax', title: 'Tax region notes', meta: 'Hugo Bernard'},
|
|
34
|
+
{id: 'sso', title: 'SSO rollout plan', meta: 'Sofia Marchetti'},
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
const ARCHIVED = [
|
|
38
|
+
{id: 'roadmap', title: '2025 roadmap', meta: 'Archived in March'},
|
|
39
|
+
{id: 'legacy', title: 'Legacy pricing', meta: 'Archived in March'},
|
|
40
|
+
{id: 'kit', title: 'Old brand kit', meta: 'Archived in January'},
|
|
41
|
+
{id: 'beta', title: 'Beta feedback', meta: 'Archived in January'},
|
|
42
|
+
{id: 'survey', title: 'Q4 survey results', meta: 'Archived in January'},
|
|
43
|
+
{id: 'offsite', title: 'Offsite agenda', meta: 'Archived last year'},
|
|
44
|
+
];
|
|
45
|
+
|
|
46
|
+
function FileGrid({
|
|
47
|
+
files,
|
|
48
|
+
}: {
|
|
49
|
+
files: Array<{id: string; title: string; meta: string}>;
|
|
50
|
+
}) {
|
|
51
|
+
return (
|
|
52
|
+
<Grid columns={2} gap={2}>
|
|
53
|
+
{files.map(file => (
|
|
54
|
+
<Card key={file.id} variant="muted" padding={3}>
|
|
55
|
+
<VStack gap={1}>
|
|
56
|
+
<Text weight="medium" maxLines={1}>
|
|
57
|
+
{file.title}
|
|
58
|
+
</Text>
|
|
59
|
+
<Text type="supporting" maxLines={1}>
|
|
60
|
+
{file.meta}
|
|
61
|
+
</Text>
|
|
62
|
+
</VStack>
|
|
63
|
+
</Card>
|
|
64
|
+
))}
|
|
65
|
+
</Grid>
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export default function ScrollableAreaOverscrollChaining() {
|
|
70
|
+
return (
|
|
71
|
+
<Card width={400} padding={0}>
|
|
72
|
+
<ScrollableArea
|
|
73
|
+
axis="block"
|
|
74
|
+
role="region"
|
|
75
|
+
label="Workspace files"
|
|
76
|
+
height={300}
|
|
77
|
+
padding={4}>
|
|
78
|
+
<VStack gap={4}>
|
|
79
|
+
<VStack gap={0.5}>
|
|
80
|
+
<Heading level={3}>Workspace files</Heading>
|
|
81
|
+
<Text type="supporting">Two sections, two edge policies</Text>
|
|
82
|
+
</VStack>
|
|
83
|
+
|
|
84
|
+
<VStack gap={2}>
|
|
85
|
+
<Text type="label" color="secondary">
|
|
86
|
+
Shared with you
|
|
87
|
+
</Text>
|
|
88
|
+
{/* Default overscroll="allow": a gesture that reaches this
|
|
89
|
+
section's end carries on scrolling the panel behind it. */}
|
|
90
|
+
<ScrollableArea
|
|
91
|
+
axis="block"
|
|
92
|
+
label="Shared with you"
|
|
93
|
+
height={150}
|
|
94
|
+
padding={2}
|
|
95
|
+
xstyle={styles.sectionFrame}>
|
|
96
|
+
<FileGrid files={SHARED} />
|
|
97
|
+
</ScrollableArea>
|
|
98
|
+
<Text type="supporting">
|
|
99
|
+
Scroll past the end and the panel keeps going.
|
|
100
|
+
</Text>
|
|
101
|
+
</VStack>
|
|
102
|
+
|
|
103
|
+
<VStack gap={2}>
|
|
104
|
+
<Text type="label" color="secondary">
|
|
105
|
+
Archived
|
|
106
|
+
</Text>
|
|
107
|
+
{/* overscroll="contain" stops the gesture at this section's
|
|
108
|
+
edge, so the panel behind it stays put. */}
|
|
109
|
+
<ScrollableArea
|
|
110
|
+
axis="block"
|
|
111
|
+
label="Archived"
|
|
112
|
+
overscroll="contain"
|
|
113
|
+
height={150}
|
|
114
|
+
padding={2}
|
|
115
|
+
xstyle={styles.sectionFrame}>
|
|
116
|
+
<FileGrid files={ARCHIVED} />
|
|
117
|
+
</ScrollableArea>
|
|
118
|
+
<Text type="supporting">
|
|
119
|
+
Scroll past the end and the panel stays where it is.
|
|
120
|
+
</Text>
|
|
121
|
+
</VStack>
|
|
122
|
+
</VStack>
|
|
123
|
+
</ScrollableArea>
|
|
124
|
+
</Card>
|
|
125
|
+
);
|
|
126
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').TemplateDoc} */
|
|
4
|
+
export const doc = {
|
|
5
|
+
type: 'block',
|
|
6
|
+
exampleFor: 'ScrollableArea',
|
|
7
|
+
name: 'ScrollableArea',
|
|
8
|
+
displayName: 'Scrollable Area',
|
|
9
|
+
description:
|
|
10
|
+
'A fixed-height file panel that scrolls on the block axis; the heading sits inside the viewport, so it scrolls away with the content.',
|
|
11
|
+
isReady: true,
|
|
12
|
+
aspectRatio: 1,
|
|
13
|
+
isShowcase: true,
|
|
14
|
+
componentsUsed: ['ScrollableArea', 'Card', 'Grid'],
|
|
15
|
+
};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
import {ScrollableArea} from '@astryxdesign/core/ScrollableArea';
|
|
6
|
+
import {Card} from '@astryxdesign/core/Card';
|
|
7
|
+
import {Grid} from '@astryxdesign/core/Grid';
|
|
8
|
+
import {VStack} from '@astryxdesign/core/Layout';
|
|
9
|
+
import {Heading, Text} from '@astryxdesign/core/Text';
|
|
10
|
+
|
|
11
|
+
const SECTIONS = [
|
|
12
|
+
{
|
|
13
|
+
label: 'Recently opened',
|
|
14
|
+
files: [
|
|
15
|
+
{id: 'brief', title: 'Q3 launch brief', meta: 'Edited 2 days ago'},
|
|
16
|
+
{id: 'pricing', title: 'Pricing rework', meta: 'Edited 3 days ago'},
|
|
17
|
+
{
|
|
18
|
+
id: 'onboarding',
|
|
19
|
+
title: 'Onboarding flow v4',
|
|
20
|
+
meta: 'Edited 4 days ago',
|
|
21
|
+
},
|
|
22
|
+
{id: 'macros', title: 'Support macros', meta: 'Edited last week'},
|
|
23
|
+
],
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
label: 'Shared with you',
|
|
27
|
+
files: [
|
|
28
|
+
{id: 'brand', title: 'Brand refresh', meta: 'Priya Raman'},
|
|
29
|
+
{id: 'checkout', title: 'Checkout audit', meta: 'Tomas Lindqvist'},
|
|
30
|
+
{id: 'partner', title: 'Partner deck', meta: 'Ines Okafor'},
|
|
31
|
+
{id: 'research', title: 'Research synthesis', meta: 'Mei Watanabe'},
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
label: 'Archived',
|
|
36
|
+
files: [
|
|
37
|
+
{id: 'roadmap', title: '2025 roadmap', meta: 'Archived in March'},
|
|
38
|
+
{id: 'legacy', title: 'Legacy pricing', meta: 'Archived in March'},
|
|
39
|
+
{id: 'kit', title: 'Old brand kit', meta: 'Archived in January'},
|
|
40
|
+
{id: 'beta', title: 'Beta feedback', meta: 'Archived in January'},
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
export default function ScrollableAreaShowcase() {
|
|
46
|
+
return (
|
|
47
|
+
<Card width={380} padding={0}>
|
|
48
|
+
{/* The heading sits inside the viewport, so it scrolls away with the
|
|
49
|
+
content instead of staying pinned above it. */}
|
|
50
|
+
<ScrollableArea
|
|
51
|
+
axis="block"
|
|
52
|
+
role="region"
|
|
53
|
+
label="Workspace files"
|
|
54
|
+
height={300}
|
|
55
|
+
padding={4}>
|
|
56
|
+
<VStack gap={4}>
|
|
57
|
+
<VStack gap={0.5}>
|
|
58
|
+
<Heading level={3}>Workspace files</Heading>
|
|
59
|
+
<Text type="supporting">12 files across 3 sections</Text>
|
|
60
|
+
</VStack>
|
|
61
|
+
{SECTIONS.map(section => (
|
|
62
|
+
<VStack key={section.label} gap={2}>
|
|
63
|
+
<Text type="label" color="secondary">
|
|
64
|
+
{section.label}
|
|
65
|
+
</Text>
|
|
66
|
+
<Grid columns={2} gap={2}>
|
|
67
|
+
{section.files.map(file => (
|
|
68
|
+
<Card key={file.id} variant="muted" padding={3}>
|
|
69
|
+
<VStack gap={1}>
|
|
70
|
+
<Text weight="medium" maxLines={1}>
|
|
71
|
+
{file.title}
|
|
72
|
+
</Text>
|
|
73
|
+
<Text type="supporting" maxLines={1}>
|
|
74
|
+
{file.meta}
|
|
75
|
+
</Text>
|
|
76
|
+
</VStack>
|
|
77
|
+
</Card>
|
|
78
|
+
))}
|
|
79
|
+
</Grid>
|
|
80
|
+
</VStack>
|
|
81
|
+
))}
|
|
82
|
+
</VStack>
|
|
83
|
+
</ScrollableArea>
|
|
84
|
+
</Card>
|
|
85
|
+
);
|
|
86
|
+
}
|
package/assets/templates/blocks/components/ScrollableArea/ScrollableAreaStickyGroupHeaders.doc.mjs
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').TemplateDoc} */
|
|
4
|
+
export const doc = {
|
|
5
|
+
type: 'block',
|
|
6
|
+
exampleFor: 'ScrollableArea',
|
|
7
|
+
name: 'ScrollableArea — Sticky Section Labels',
|
|
8
|
+
displayName: 'Scrollable Area — Sticky Section Labels',
|
|
9
|
+
description:
|
|
10
|
+
'A scrollable viewport is the containing block for position: sticky, so section labels pin to the top edge of the list instead of the page.',
|
|
11
|
+
isReady: true,
|
|
12
|
+
aspectRatio: 1,
|
|
13
|
+
componentsUsed: ['ScrollableArea', 'Card', 'Grid'],
|
|
14
|
+
};
|