@astryxdesign/cli 0.7.2-canary.f16dc9f → 0.7.2-canary.f2b60a0
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/README.md +15 -14
- package/api/build/help/help.mjs +1 -1
- package/api/component/_adapter.d.mts +41 -1
- package/api/component/_adapter.mjs +93 -7
- package/api/component/component.mjs +22 -5
- package/api/component/component.test.mjs +420 -167
- package/api/component/integration-export-name.test.mjs +644 -0
- package/api/component/list/list.mjs +42 -4
- package/api/docs/_adapter.d.mts +11 -0
- package/api/docs/_adapter.mjs +244 -1
- package/api/docs/integrationDocs.test.mjs +124 -0
- package/api/doctor/doctor.mjs +27 -3
- package/api/doctor/doctor.test.mjs +43 -0
- package/api/doctor/theme-checks.mjs +1 -1
- package/api/gap-report/gap-report.mjs +67 -4
- package/api/index.d.mts +2 -0
- package/api/index.mjs +2 -0
- package/api/init/run/run.mjs +2 -2
- package/api/integration/_adapter.d.mts +12 -0
- package/api/integration/_adapter.mjs +54 -0
- package/api/integration/add-contribution.component-names.test.mjs +66 -0
- package/api/integration/add-contribution.mjs +8 -4
- package/api/integration/add-contribution.test.mjs +4 -2
- package/api/integration/authoring-checks.mjs +11 -2
- package/api/integration/authoring-checks.test.mjs +39 -0
- package/api/integration/authoring-checks.type.d.mts +9 -0
- package/api/integration/authoring-checks.type.mjs +14 -1
- package/api/integration/check/check.d.mts +96 -0
- package/api/integration/check/check.mjs +357 -0
- package/api/integration/check/check.test.mjs +489 -0
- package/api/integration/integration-check.type.d.mts +118 -0
- package/api/integration/integration-check.type.mjs +84 -0
- package/api/integration/integrationCheck.doc.d.mts +10 -0
- package/api/integration/integrationCheck.doc.mjs +73 -0
- package/api/integration/integrationComponentConflicts.doc.mjs +36 -5
- package/api/integration/pack-check.mjs +61 -107
- package/api/integration/pack-check.test.mjs +359 -0
- package/api/integration/validate-integration.mjs +8 -0
- package/api/integration/validate-integration.test.mjs +11 -0
- package/api/integration/validate-integration.type.d.mts +8 -0
- package/api/integration/validate-integration.type.mjs +12 -1
- package/api/integration/validateIntegration.doc.mjs +17 -3
- package/api/search/search.d.mts +22 -6
- package/api/search/search.domain-priority.test.mjs +108 -18
- package/api/search/search.integration-check.test.mjs +24 -0
- package/api/search/search.mjs +141 -25
- package/api/search/search.test.mjs +36 -0
- package/api/swizzle/copy/copy.mjs +28 -14
- package/api/template/template.test.mjs +120 -3
- package/api/theme/build/build.family.test.mjs +64 -0
- package/api/theme/build/build.mjs +180 -24
- package/api/theme/themeBuild.doc.mjs +4 -4
- package/assets/codemods/transforms/next/__tests__/migrate-list-edge-compensation-to-edge.test.mjs +120 -0
- package/assets/codemods/transforms/next/index.mjs +11 -1
- package/assets/codemods/transforms/next/migrate-list-edge-compensation-to-edge.mjs +198 -0
- package/assets/docs/README.md +10 -0
- package/assets/docs/author-a-theme.doc.mjs +1 -1
- package/assets/docs/getting-started.doc.mjs +3 -3
- package/assets/docs/styling-overview.doc.mjs +1 -1
- package/assets/docs/theme.doc.dense.mjs +1 -1
- package/assets/docs/theme.doc.mjs +1 -1
- package/assets/docs/theme.doc.zh.mjs +1 -1
- package/assets/docs/tree/add-a-component.doc.mjs +11 -1
- package/assets/docs/tree/add-a-theme.doc.mjs +1 -1
- package/assets/docs/tree/add-a-topic.doc.mjs +10 -7
- package/assets/docs/tree/agent-guidance.doc.mjs +2 -2
- package/assets/docs/tree/block-template.doc.mjs +8 -20
- package/assets/docs/tree/build-the-template.doc.mjs +1 -1
- package/assets/docs/tree/check-the-props.doc.mjs +196 -0
- package/assets/docs/tree/check-your-docs.doc.mjs +51 -5
- package/assets/docs/tree/checks.doc.mjs +24 -16
- package/assets/docs/tree/codemods.doc.mjs +4 -4
- package/assets/docs/tree/component-family.doc.mjs +8 -6
- package/assets/docs/tree/component-imports.doc.mjs +10 -2
- package/assets/docs/tree/components.doc.mjs +1 -1
- package/assets/docs/tree/debug-and-gap-reports.doc.mjs +7 -18
- package/assets/docs/tree/define-the-theme.doc.mjs +6 -5
- package/assets/docs/tree/describe-the-component.doc.mjs +2 -2
- package/assets/docs/tree/docs.doc.mjs +3 -3
- package/assets/docs/tree/document-the-template.doc.mjs +1 -1
- package/assets/docs/tree/document-the-theme.doc.mjs +1 -1
- package/assets/docs/tree/export-template-assets.doc.mjs +1 -1
- package/assets/docs/tree/extend-or-replace.doc.mjs +6 -6
- package/assets/docs/tree/fonts-and-assets.doc.mjs +2 -2
- package/assets/docs/tree/generate-a-palette.doc.mjs +5 -3
- package/assets/docs/tree/grade-template-with-agent.doc.mjs +1 -1
- package/assets/docs/tree/integrations.doc.mjs +8 -0
- package/assets/docs/tree/links.doc.mjs +6 -5
- package/assets/docs/tree/migration-setup.doc.mjs +1 -0
- package/assets/docs/tree/migration-verification.doc.mjs +0 -1
- package/assets/docs/tree/migration.doc.mjs +0 -1
- package/assets/docs/tree/package-and-test.doc.mjs +1 -1
- package/assets/docs/tree/page-template.doc.mjs +4 -8
- package/assets/docs/tree/publishing.doc.mjs +1 -1
- package/assets/docs/tree/quick-start.doc.mjs +37 -21
- package/assets/docs/tree/replace-a-core-component.doc.mjs +4 -6
- package/assets/docs/tree/replace-a-core-template.doc.mjs +6 -8
- package/assets/docs/tree/sections-and-placement.doc.mjs +4 -6
- package/assets/docs/tree/see-it-in-an-app.doc.mjs +4 -2
- package/assets/docs/tree/short-and-findable.doc.mjs +6 -5
- package/assets/docs/tree/single-component.doc.mjs +15 -6
- package/assets/docs/tree/start-a-template.doc.mjs +3 -3
- package/assets/docs/tree/subcomponent.doc.mjs +6 -6
- package/assets/docs/tree/template-assets.doc.mjs +2 -2
- package/assets/docs/tree/template-doc-overview.doc.mjs +4 -15
- package/assets/docs/tree/template-fonts.doc.mjs +1 -1
- package/assets/docs/tree/template-icons.doc.mjs +1 -1
- package/assets/docs/tree/template-images-media.doc.mjs +1 -1
- package/assets/docs/tree/template-styles.doc.mjs +2 -2
- package/assets/docs/tree/templates.doc.mjs +1 -1
- package/assets/docs/tree/test-in-an-app.doc.mjs +3 -3
- package/assets/docs/tree/test-template-in-app.doc.mjs +1 -1
- package/assets/docs/tree/tokens-and-setup.doc.mjs +19 -15
- package/assets/docs/tree/troubleshooting.doc.mjs +13 -5
- package/assets/docs/tree/type-scale.doc.mjs +3 -3
- package/assets/docs/tree/upgrading.doc.mjs +3 -3
- package/assets/docs/tree/use-a-theme-in-an-app.doc.mjs +3 -1
- package/assets/docs/tree/verify-packed-template.doc.mjs +1 -1
- package/assets/docs/tree/versioning.doc.mjs +7 -6
- package/assets/docs/tree/write-the-template-file.doc.mjs +4 -3
- package/assets/docs/use-a-theme.doc.mjs +2 -2
- package/assets/docs/working-with-ai.doc.mjs +43 -4
- package/assets/templates/blocks/components/Drawer/DrawerForm.doc.mjs +24 -0
- package/assets/templates/blocks/components/Drawer/DrawerForm.tsx +62 -0
- package/assets/templates/blocks/components/Drawer/DrawerScrim.doc.mjs +22 -0
- package/assets/templates/blocks/components/Drawer/DrawerScrim.tsx +68 -0
- package/assets/templates/blocks/components/Drawer/DrawerShowcase.doc.mjs +22 -0
- package/assets/templates/blocks/components/Drawer/DrawerShowcase.tsx +41 -0
- package/assets/templates/blocks/components/Drawer/DrawerStart.doc.mjs +21 -0
- package/assets/templates/blocks/components/Drawer/DrawerStart.tsx +41 -0
- package/assets/templates/blocks/components/Drawer/DrawerWidths.doc.mjs +22 -0
- package/assets/templates/blocks/components/Drawer/DrawerWidths.tsx +54 -0
- package/assets/templates/blocks/components/DrawerHeader/DrawerHeaderShowcase.doc.mjs +15 -0
- package/assets/templates/blocks/components/DrawerHeader/DrawerHeaderShowcase.tsx +73 -0
- package/assets/templates/blocks/components/DrawerHeader/DrawerHeaderSubtitleEndContent.doc.mjs +22 -0
- package/assets/templates/blocks/components/DrawerHeader/DrawerHeaderSubtitleEndContent.tsx +49 -0
- package/assets/templates/blocks/components/DrawerHeader/DrawerHeaderWithCloseButton.doc.mjs +21 -0
- package/assets/templates/blocks/components/DrawerHeader/DrawerHeaderWithCloseButton.tsx +42 -0
- package/assets/templates/pages/detail-page/page.tsx +3 -3
- package/assets/templates/pages/table-inbox/page.tsx +10 -8
- package/assets/theme.template.ts +1 -1
- package/authoring/codemod/codemod.doc.mjs +7 -3
- package/authoring/config/config.doc.mjs +9 -6
- package/authoring/config/type.ts +4 -2
- package/authoring/discover/discover.doc.mjs +1 -1
- package/authoring/doctypes/base/graph-fields.doc.mjs +6 -4
- package/authoring/doctypes/base/type.ts +6 -0
- package/authoring/doctypes/command/command.doc.mjs +14 -12
- package/authoring/doctypes/component/component.doc.mjs +31 -28
- package/authoring/doctypes/component/type.ts +13 -8
- package/authoring/doctypes/enum/enum.doc.mjs +7 -4
- package/authoring/doctypes/function/function.doc.mjs +9 -8
- package/authoring/doctypes/hook/hook.doc.mjs +5 -4
- package/authoring/doctypes/namespace/namespace.doc.mjs +7 -6
- package/authoring/doctypes/reference/reference.doc.mjs +11 -10
- package/authoring/doctypes/schema/schema.doc.mjs +9 -9
- package/authoring/doctypes/template/integration-template.doc.d.mts +11 -0
- package/authoring/doctypes/template/integration-template.doc.mjs +49 -0
- package/authoring/doctypes/template/parse.d.mts +6 -2
- package/authoring/doctypes/template/parse.mjs +3 -1
- package/authoring/doctypes/template/template.doc.mjs +3 -3
- package/authoring/doctypes/template/type.ts +22 -0
- package/authoring/doctypes/theme/theme.doc.mjs +2 -2
- package/authoring/gap-report/gap-report.doc.mjs +2 -2
- package/authoring/identity/identity.doc.mjs +3 -3
- package/authoring/index.d.ts +1 -0
- package/authoring/integration/integration.doc.mjs +12 -4
- package/authoring/integration/parse.test.mjs +10 -0
- package/authoring/integration/schema.d.mts +2 -0
- package/authoring/integration/schema.mjs +1 -0
- package/authoring/integration/type.ts +4 -0
- package/clients/cli/commands/build-theme.batch-report.test.mjs +3 -1
- package/clients/cli/commands/build-theme.mjs +1 -1
- package/clients/cli/commands/build-theme.path-safety.test.mjs +224 -6
- package/clients/cli/commands/build-theme.registry.test.mjs +5 -2
- package/clients/cli/commands/cli-postinstall.test.mjs +49 -1
- package/clients/cli/commands/doctor-integration-components.doc.mjs +15 -4
- package/clients/cli/commands/doctor-integration-validate.doc.mjs +11 -2
- package/clients/cli/commands/doctor-integration.test.mjs +837 -0
- package/clients/cli/commands/doctor.mjs +190 -0
- package/clients/cli/commands/integration-check.doc.mjs +85 -0
- package/clients/cli/commands/integration-check.test.mjs +267 -0
- package/clients/cli/commands/integration.doc.mjs +6 -2
- package/clients/cli/commands/integration.mjs +107 -1
- package/clients/cli/commands/setup-nudge.test.mjs +79 -1
- package/clients/cli/commands/swizzle.mjs +5 -3
- package/clients/cli/commands/swizzle.routing.test.mjs +18 -1
- package/clients/cli/commands/text-json-parity.test.mjs +5 -0
- package/clients/cli/commands/theme-build.doc.mjs +2 -2
- package/clients/cli/index.mjs +30 -5
- package/clients/cli/lib/component-format.mjs +5 -1
- package/foundation/agent-docs/agent-doc-state.d.mts +14 -0
- package/foundation/agent-docs/agent-doc-state.mjs +38 -0
- package/foundation/agent-docs/agent-docs.d.mts +2 -1
- package/foundation/agent-docs/agent-docs.mjs +8 -6
- package/foundation/config/project.mjs +82 -0
- package/foundation/discovery/authoring-self-docs.mjs +2 -1
- package/foundation/discovery/component-discovery.d.mts +190 -10
- package/foundation/discovery/component-discovery.export-names.test.mjs +760 -0
- package/foundation/discovery/component-discovery.mjs +864 -56
- package/foundation/discovery/component-discovery.test.mjs +96 -0
- package/foundation/discovery/component-replacement.mjs +18 -0
- package/foundation/discovery/component-replacement.test.mjs +40 -0
- package/foundation/discovery/doc-types.d.mts +157 -0
- package/foundation/discovery/doc-types.mjs +1224 -0
- package/foundation/discovery/doc-types.test.mjs +652 -0
- package/foundation/discovery/docs-discovery.d.mts +81 -0
- package/foundation/discovery/docs-discovery.mjs +57 -0
- package/foundation/discovery/integration-doc-files.d.mts +22 -0
- package/foundation/discovery/integration-doc-files.mjs +231 -0
- package/foundation/discovery/integration-doc-files.test.mjs +246 -0
- package/foundation/discovery/module-exports.d.mts +27 -0
- package/foundation/discovery/module-exports.mjs +356 -31
- package/foundation/discovery/module-exports.test.mjs +172 -0
- package/foundation/discovery/package-tsconfig.d.mts +14 -0
- package/foundation/discovery/package-tsconfig.mjs +228 -0
- package/foundation/discovery/package-tsconfig.test.mjs +210 -0
- package/foundation/discovery/project-typescript.d.mts +23 -0
- package/foundation/discovery/project-typescript.mjs +61 -0
- package/foundation/discovery/prop-drift.d.mts +278 -0
- package/foundation/discovery/prop-drift.mjs +2263 -0
- package/foundation/discovery/prop-drift.test.mjs +2219 -0
- package/foundation/discovery/template-adapter.mjs +74 -5
- package/foundation/discovery/type-match.d.mts +53 -0
- package/foundation/discovery/type-match.mjs +660 -0
- package/foundation/discovery/type-match.test.mjs +169 -0
- package/foundation/discovery/type-text.d.mts +68 -0
- package/foundation/discovery/type-text.mjs +658 -0
- package/foundation/discovery/type-text.test.mjs +196 -0
- package/foundation/discovery/unresolved-references.d.mts +62 -0
- package/foundation/discovery/unresolved-references.mjs +790 -0
- package/foundation/discovery/unresolved-references.test.mjs +567 -0
- package/foundation/doc-compiler/doc-loads.test.mjs +11 -1
- package/foundation/doc-compiler/inputs.mjs +23 -0
- package/foundation/doc-compiler/inputs.test.mjs +0 -1
- package/foundation/doc-compiler/links.d.mts +9 -5
- package/foundation/doc-compiler/links.mjs +4 -2
- package/foundation/integrations/contribution-inventory.mjs +6 -1
- package/foundation/response/response-types.doc.mjs +7 -2
- package/foundation/xle/registry.mjs +4 -0
- package/foundation/xle/registry.test.mjs +28 -0
- package/package.json +10 -10
- package/scripts/postinstall.mjs +3 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/components/describe-the-component/subcomponent`:
|
|
4
|
+
* @file `astryx docs cli/integrations/building-blocks/components/describe-the-component/subcomponent`:
|
|
5
5
|
* give one member of a component family its own ComponentDoc.
|
|
6
6
|
*/
|
|
7
7
|
|
|
@@ -51,6 +51,7 @@ export default {
|
|
|
51
51
|
type: 'component',
|
|
52
52
|
name: 'AcmeDialog',
|
|
53
53
|
displayName: 'Acme Dialog',
|
|
54
|
+
import: '@acme/astryx-widgets/components/AcmeDialog',
|
|
54
55
|
usage: {description: 'Presents a focused task above the current page.'},
|
|
55
56
|
components: [
|
|
56
57
|
{
|
|
@@ -82,6 +83,7 @@ export default {
|
|
|
82
83
|
type: 'component',
|
|
83
84
|
name: 'AcmeDialogHeader',
|
|
84
85
|
displayName: 'Acme Dialog Header',
|
|
86
|
+
import: '@acme/astryx-widgets/components/AcmeDialogHeader',
|
|
85
87
|
subComponentOf: 'AcmeDialog',
|
|
86
88
|
description: 'Labels an Acme Dialog and holds its close action.',
|
|
87
89
|
props: [
|
|
@@ -95,10 +97,8 @@ export default {
|
|
|
95
97
|
};`,
|
|
96
98
|
},
|
|
97
99
|
{
|
|
98
|
-
type: '
|
|
99
|
-
|
|
100
|
-
projection: {fields: ['subComponentOf', 'description', 'props']},
|
|
101
|
-
presentation: 'full',
|
|
100
|
+
type: 'prose',
|
|
101
|
+
text: 'Every field is in {@link schema:component-doc}.',
|
|
102
102
|
},
|
|
103
103
|
{
|
|
104
104
|
type: 'list',
|
|
@@ -106,7 +106,7 @@ export default {
|
|
|
106
106
|
items: [
|
|
107
107
|
'`subComponentOf` must exactly match the parent doc\'s `name`.',
|
|
108
108
|
'`description` explains this member\'s role in the family. `usage` is optional; add it when the member needs guidance beyond that sentence.',
|
|
109
|
-
'The
|
|
109
|
+
'The CLI does not copy family fields such as `group`, `category`, or `keywords` from the parent to the child. Set any the child needs in its own doc.',
|
|
110
110
|
],
|
|
111
111
|
},
|
|
112
112
|
],
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/templates/template-assets`:
|
|
5
|
-
* style, font, icon, and media dependency survive a template copy.
|
|
4
|
+
* @file `astryx docs cli/integrations/building-blocks/templates/build-the-template/template-assets`:
|
|
5
|
+
* make every style, font, icon, and media dependency survive a template copy.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
/** @type {import('@astryxdesign/cli/authoring').NamespaceDoc} */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/templates/document-the-template/template-doc-overview`:
|
|
4
|
+
* @file `astryx docs cli/integrations/building-blocks/templates/document-the-template/template-doc-overview`:
|
|
5
5
|
* the source and doc file pair, the fields every template doc shares, and how
|
|
6
6
|
* to check what Astryx lists.
|
|
7
7
|
*/
|
|
@@ -54,22 +54,11 @@ export const docs = {
|
|
|
54
54
|
content: [
|
|
55
55
|
{
|
|
56
56
|
type: 'prose',
|
|
57
|
-
text: '
|
|
57
|
+
text: 'The fields below apply to every page and block. The page, block, and replacement guides add the fields unique to each.',
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
|
-
type: '
|
|
61
|
-
|
|
62
|
-
projection: {
|
|
63
|
-
fields: [
|
|
64
|
-
'type',
|
|
65
|
-
'name',
|
|
66
|
-
'displayName',
|
|
67
|
-
'description',
|
|
68
|
-
'keywords',
|
|
69
|
-
'isReady',
|
|
70
|
-
],
|
|
71
|
-
},
|
|
72
|
-
presentation: 'full',
|
|
60
|
+
type: 'prose',
|
|
61
|
+
text: 'Every field is in {@link schema:template-doc}.',
|
|
73
62
|
},
|
|
74
63
|
{
|
|
75
64
|
type: 'list',
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/templates/build-the-template/template-assets/template-fonts`:
|
|
4
|
+
* @file `astryx docs cli/integrations/building-blocks/templates/build-the-template/template-assets/template-fonts`:
|
|
5
5
|
* use the app typeface by default, and ship every font file a template needs
|
|
6
6
|
* when it must bring its own.
|
|
7
7
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/templates/build-the-template/template-assets/template-icons`:
|
|
4
|
+
* @file `astryx docs cli/integrations/building-blocks/templates/build-the-template/template-assets/template-icons`:
|
|
5
5
|
* render template icons through Astryx and ship custom product icons from the
|
|
6
6
|
* package.
|
|
7
7
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/templates/build-the-template/template-assets/template-images-media`:
|
|
4
|
+
* @file `astryx docs cli/integrations/building-blocks/templates/build-the-template/template-assets/template-images-media`:
|
|
5
5
|
* keep template images and video working after the copy, or make them clear
|
|
6
6
|
* placeholders.
|
|
7
7
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/templates/build-the-template/template-assets/template-styles`:
|
|
4
|
+
* @file `astryx docs cli/integrations/building-blocks/templates/build-the-template/template-assets/template-styles`:
|
|
5
5
|
* style a template with Astryx first, keep editable styles in the file, and
|
|
6
6
|
* ship shared CSS from the package.
|
|
7
7
|
*/
|
|
@@ -85,7 +85,7 @@ const styles = stylex.create({
|
|
|
85
85
|
},
|
|
86
86
|
{
|
|
87
87
|
type: 'prose',
|
|
88
|
-
text: 'Then export that path and include the file in the package ({@link generic:export-template-assets}).
|
|
88
|
+
text: 'Then export that path and include the file in the package ({@link generic:export-template-assets}). TypeScript 6 and later check side-effect imports by default, so this import type-checks only when the app or its framework declares `*.css` modules.',
|
|
89
89
|
},
|
|
90
90
|
],
|
|
91
91
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/templates`: guides for adding,
|
|
4
|
+
* @file `astryx docs cli/integrations/building-blocks/templates`: guides for adding,
|
|
5
5
|
* documenting, packaging, and testing templates in an integration package.
|
|
6
6
|
*/
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/test-in-an-app`: install the packed
|
|
4
|
+
* @file `astryx docs cli/integrations/ship/test-in-an-app`: install the packed
|
|
5
5
|
* package in an app and run the commands its users run.
|
|
6
6
|
*/
|
|
7
7
|
|
|
@@ -63,11 +63,11 @@ export const docs = {
|
|
|
63
63
|
],
|
|
64
64
|
[
|
|
65
65
|
'`template --list --package`',
|
|
66
|
-
'An `acme-dashboard` entry
|
|
66
|
+
'An `acme-dashboard` entry whose `package` is `@acme/astryx-widgets`',
|
|
67
67
|
],
|
|
68
68
|
[
|
|
69
69
|
'`theme list --package`',
|
|
70
|
-
'
|
|
70
|
+
'An `ocean` entry whose `package` is `@acme/astryx-widgets`',
|
|
71
71
|
],
|
|
72
72
|
['`docs acme`', 'Your section, with guides such as `deploying`'],
|
|
73
73
|
[
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/templates/build-the-template/package-and-test/test-template-in-app`:
|
|
4
|
+
* @file `astryx docs cli/integrations/building-blocks/templates/build-the-template/package-and-test/test-template-in-app`:
|
|
5
5
|
* copy the packed template into a clean app, build it, and render it the way
|
|
6
6
|
* apps will.
|
|
7
7
|
*/
|
|
@@ -15,13 +15,7 @@ export const docs = {
|
|
|
15
15
|
category: 'guide',
|
|
16
16
|
description:
|
|
17
17
|
'Using design tokens in custom styles and configuring a StyleX compiler for swizzled components.',
|
|
18
|
-
keywords: [
|
|
19
|
-
'StyleX setup',
|
|
20
|
-
'swizzle',
|
|
21
|
-
'webpack',
|
|
22
|
-
'Vite',
|
|
23
|
-
'Next.js',
|
|
24
|
-
],
|
|
18
|
+
keywords: ['StyleX setup', 'swizzle', 'webpack', 'Vite', 'Next.js'],
|
|
25
19
|
|
|
26
20
|
sections: [
|
|
27
21
|
{
|
|
@@ -77,30 +71,40 @@ const styles = stylex.create({
|
|
|
77
71
|
content: [
|
|
78
72
|
{
|
|
79
73
|
type: 'prose',
|
|
80
|
-
text:
|
|
74
|
+
text: "Astryx components ship pre-compiled: `astryx.css` and each package's own stylesheet hold all of their styles, so consuming the published packages needs no StyleX setup. But `astryx swizzle <Component>` copies the raw StyleX *source* into your app, and StyleX source requires a build-time StyleX compiler to produce atomic CSS. Without one, importing the component throws an error that starts `Unexpected 'stylex.create' call at runtime`, and the page does not render. If a swizzled component throws that error, the app is missing a StyleX compiler. The same applies if you author your own StyleX with `stylex.create()`.",
|
|
81
75
|
},
|
|
82
76
|
{
|
|
83
77
|
type: 'table',
|
|
84
78
|
headers: ['Bundler', 'StyleX plugin'],
|
|
85
79
|
rows: [
|
|
86
80
|
['Webpack', '@stylexjs/webpack-plugin'],
|
|
87
|
-
[
|
|
88
|
-
|
|
89
|
-
|
|
81
|
+
[
|
|
82
|
+
'Vite / Rollup',
|
|
83
|
+
'@stylexjs/rollup-plugin (or a community Vite plugin)',
|
|
84
|
+
],
|
|
85
|
+
[
|
|
86
|
+
'Babel (any bundler)',
|
|
87
|
+
'@stylexjs/babel-plugin + @stylexjs/postcss-plugin',
|
|
88
|
+
],
|
|
89
|
+
[
|
|
90
|
+
'Next.js (App Router, SWC)',
|
|
91
|
+
'An SWC-based transform; see the Next.js note below',
|
|
92
|
+
],
|
|
90
93
|
],
|
|
91
94
|
},
|
|
92
95
|
{
|
|
93
96
|
type: 'prose',
|
|
94
|
-
text:
|
|
97
|
+
text: "Next.js (App Router) is the sharp edge. StyleX's canonical compiler is a Babel plugin, but introducing a Babel config in Next.js disables the SWC compiler, and with it SWC-dependent features like `next/font`.",
|
|
95
98
|
},
|
|
96
99
|
{
|
|
97
100
|
type: 'prose',
|
|
98
|
-
text:
|
|
101
|
+
text: "The repo's `apps/example-nextjs-stylex` takes the Babel path (`next/babel`, `@stylexjs/babel-plugin`, `@stylexjs/postcss-plugin`). Babel turns off SWC, so that app does not use `next/font`. To keep `next/font`, use an SWC transform such as `@stylexswc/nextjs-plugin`.",
|
|
99
102
|
},
|
|
100
103
|
{
|
|
101
104
|
type: 'code',
|
|
102
105
|
lang: 'js',
|
|
103
|
-
label:
|
|
106
|
+
label:
|
|
107
|
+
'next.config.mjs: SWC-based StyleX transform (keeps next/font working)',
|
|
104
108
|
code: `import stylexPlugin from '@stylexswc/nextjs-plugin';
|
|
105
109
|
|
|
106
110
|
export default stylexPlugin({
|
|
@@ -117,7 +121,7 @@ export default stylexPlugin({
|
|
|
117
121
|
type: 'list',
|
|
118
122
|
style: 'unordered',
|
|
119
123
|
items: [
|
|
120
|
-
|
|
124
|
+
"Symptom of a missing compiler: importing a swizzled component throws an error that starts `Unexpected 'stylex.create' call at runtime`, and the page does not render.",
|
|
121
125
|
'A Babel config turns off SWC in Next.js; skip it if you need `next/font`.',
|
|
122
126
|
'Pure theming (defineTheme + astryx theme build) needs NO StyleX compiler; only swizzled/authored StyleX source does.',
|
|
123
127
|
'Keep loading `astryx.css` with a StyleX compiler in place. The compiler builds your own and swizzled source only; never add `node_modules/@astryxdesign` to its inputs.',
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/troubleshooting`: the messages the CLI
|
|
4
|
+
* @file `astryx docs cli/integrations/help/troubleshooting`: the messages the CLI
|
|
5
5
|
* prints while you build, verify, and install an integration, and the fix
|
|
6
6
|
* for each.
|
|
7
7
|
*/
|
|
@@ -67,7 +67,7 @@ export const docs = {
|
|
|
67
67
|
rows: [
|
|
68
68
|
[
|
|
69
69
|
'`component_export_missing`: `Component "AcmeCarousel" advertises import "@acme/astryx-widgets/components/AcmeCarousel", but that packed module does not export "AcmeCarousel".`',
|
|
70
|
-
"package.json has no `exports` map, or the module does not export the name. Keep `export function AcmeCarousel`, and add the entry: `npm pkg set 'exports[./components/AcmeCarousel]=./components/AcmeCarousel.tsx'`.",
|
|
70
|
+
"package.json has no `exports` map, or the module does not export the name. Keep `export function AcmeCarousel`, and add the entry: `npm pkg set 'exports[./components/AcmeCarousel]=./components/AcmeCarousel.tsx'`. When the quoted name is a file name, such as `acme-carousel`, set the doc's `name` to the component the file exports. A type-only export does not count.",
|
|
71
71
|
],
|
|
72
72
|
[
|
|
73
73
|
'`template_export_missing`: `Template "acme-dashboard" public import "@acme/astryx-widgets/templates/acme-dashboard" does not have a default export.`',
|
|
@@ -103,11 +103,11 @@ export const docs = {
|
|
|
103
103
|
],
|
|
104
104
|
[
|
|
105
105
|
'`themes_need_cli`: The package ships a theme but declares no @astryxdesign/cli peer.',
|
|
106
|
-
"Run `npm pkg set 'peerDependencies.@astryxdesign/cli=>=0.6.4'` and `npm pkg set 'peerDependenciesMeta.@astryxdesign/cli.optional=true' --json`. A
|
|
106
|
+
"Run `npm pkg set 'peerDependencies.@astryxdesign/cli=>=0.6.4'` and `npm pkg set 'peerDependenciesMeta.@astryxdesign/cli.optional=true' --json`. A CLI older than published 0.6.4 cannot read typed theme descriptors, so it drops your themes and can hide your doc topics.",
|
|
107
107
|
],
|
|
108
108
|
[
|
|
109
109
|
'`section_ids_need_cli`: The package has a doc section that sets `id` but declares no @astryxdesign/cli peer.',
|
|
110
|
-
'The same fix as `themes_need_cli`, or drop the section `id`s: a
|
|
110
|
+
'The same fix as `themes_need_cli`, or drop the section `id`s: a CLI older than published 0.6.4 rejects them and hides your doc topics.',
|
|
111
111
|
],
|
|
112
112
|
],
|
|
113
113
|
},
|
|
@@ -125,6 +125,14 @@ export const docs = {
|
|
|
125
125
|
type: 'table',
|
|
126
126
|
headers: ['Symptom', 'Fix'],
|
|
127
127
|
rows: [
|
|
128
|
+
[
|
|
129
|
+
'`Error: No component named "AcmeCarousel"` for a component your package documents.',
|
|
130
|
+
"Its doc still names its file. Set `name` to the export, such as `name: 'AcmeCarousel'` in `acme-carousel.doc.mjs`. A family member is listed only when the module its family doc imports exports it ({@link generic:component-family}).",
|
|
131
|
+
],
|
|
132
|
+
[
|
|
133
|
+
'`npx astryx component Dialog` opens Core\'s `Dialog`, not yours.',
|
|
134
|
+
"A name that Core, a legacy docs package, or another package's file already has stays theirs. Run `npx astryx component Dialog --package @acme/astryx-widgets`, or give your component a name of its own.",
|
|
135
|
+
],
|
|
128
136
|
[
|
|
129
137
|
'`Error: Template "dashboard" is ambiguous — narrow it with --type and/or --package.`',
|
|
130
138
|
"Your template id matches a Core id. Rename it, such as `acme-dashboard`, or set `replaces: 'dashboard'` to take its place. `npx astryx doctor integration templates` warns about this before you publish.",
|
|
@@ -143,7 +151,7 @@ export const docs = {
|
|
|
143
151
|
],
|
|
144
152
|
[
|
|
145
153
|
'Your docs section, templates, or themes are missing only in some apps',
|
|
146
|
-
|
|
154
|
+
"Those apps run a CLI too old to read them: a stable CLI before 0.6.6 for a template that sets `keywords`, or before 0.6.4 for a template that sets `replaces`, a docs section, or a theme. Update `@astryxdesign/cli` there, and keep your optional `@astryxdesign/cli` peer so npm checks the app's CLI against it when the app installs your package.",
|
|
147
155
|
],
|
|
148
156
|
],
|
|
149
157
|
},
|
|
@@ -76,7 +76,7 @@ export const docs = {
|
|
|
76
76
|
type: 'code',
|
|
77
77
|
lang: 'tsx',
|
|
78
78
|
label: 'Heading for document structure',
|
|
79
|
-
code: `import {Heading} from '@astryxdesign/core';
|
|
79
|
+
code: `import {Heading} from '@astryxdesign/core/Heading';
|
|
80
80
|
|
|
81
81
|
// Heading levels map to semantic tokens: level 1 → --text-heading-1-*
|
|
82
82
|
<Heading level={1}>Page Title</Heading>
|
|
@@ -96,7 +96,7 @@ export const docs = {
|
|
|
96
96
|
type: 'code',
|
|
97
97
|
lang: 'tsx',
|
|
98
98
|
label: 'Text for body, label, and display text',
|
|
99
|
-
code: `import {Text} from '@astryxdesign/core';
|
|
99
|
+
code: `import {Text} from '@astryxdesign/core/Text';
|
|
100
100
|
|
|
101
101
|
<Text type="body">Body text at the base scale.</Text>
|
|
102
102
|
<Text type="large">Emphasized body text.</Text>
|
|
@@ -121,7 +121,7 @@ export const docs = {
|
|
|
121
121
|
type: 'code',
|
|
122
122
|
lang: 'tsx',
|
|
123
123
|
label: 'Customizing the type scale via defineTheme',
|
|
124
|
-
code: `import {defineTheme} from '@astryxdesign/core';
|
|
124
|
+
code: `import {defineTheme} from '@astryxdesign/core/theme';
|
|
125
125
|
|
|
126
126
|
// Adjust the entire ramp holistically with base and ratio
|
|
127
127
|
const editorialTheme = defineTheme({
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/upgrading`: update an integration
|
|
4
|
+
* @file `astryx docs cli/integrations/ship/upgrading`: update an integration
|
|
5
5
|
* package for each Astryx release, and the command apps run to upgrade with
|
|
6
6
|
* it.
|
|
7
7
|
*/
|
|
@@ -57,7 +57,7 @@ export const docs = {
|
|
|
57
57
|
{
|
|
58
58
|
type: 'code',
|
|
59
59
|
lang: 'text',
|
|
60
|
-
code: 'Integrations: @acme/astryx-widgets\
|
|
60
|
+
code: 'Integrations: @acme/astryx-widgets\n<n> codemods to run\nApplying integration codemods...\n Rename AcmeCarousel delay to interval (v0.7.0, @acme/astryx-widgets)\n[ok] [ok] src/Hero.tsx',
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
type: 'list',
|
|
@@ -65,7 +65,7 @@ export const docs = {
|
|
|
65
65
|
items: [
|
|
66
66
|
'`--from` is the `@astryxdesign/core` version the app had before, and the target is the installed Core.',
|
|
67
67
|
'`--integration` names your package. Without it, or an `integrations` entry in `astryx.config`, the upgrade skips your codemods, even when the app has your package installed.',
|
|
68
|
-
"
|
|
68
|
+
"`<n>` includes Core's codemods for the same versions, which run first.",
|
|
69
69
|
'Put this command in your release notes.',
|
|
70
70
|
],
|
|
71
71
|
},
|
|
@@ -34,7 +34,9 @@ export const docs = {
|
|
|
34
34
|
code: `import {Theme} from '@astryxdesign/core/theme';
|
|
35
35
|
import {themes, defaultThemeSlug} from './astryx-themes';
|
|
36
36
|
|
|
37
|
-
<Theme theme={themes[defaultThemeSlug]}>
|
|
37
|
+
<Theme theme={themes[defaultThemeSlug]}>
|
|
38
|
+
<App />
|
|
39
|
+
</Theme>`,
|
|
38
40
|
},
|
|
39
41
|
{
|
|
40
42
|
type: 'prose',
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/templates/build-the-template/package-and-test/verify-packed-template`:
|
|
4
|
+
* @file `astryx docs cli/integrations/building-blocks/templates/build-the-template/package-and-test/verify-packed-template`:
|
|
5
5
|
* what `integration verify` checks for templates, and what it leaves to the
|
|
6
6
|
* app test.
|
|
7
7
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/versioning`: version an integration
|
|
4
|
+
* @file `astryx docs cli/integrations/ship/versioning`: version an integration
|
|
5
5
|
* package, know which changes break apps, declare peer ranges, keep apps on
|
|
6
6
|
* older CLIs working, and match codemod folders to versions.
|
|
7
7
|
*/
|
|
@@ -106,8 +106,8 @@ export const docs = {
|
|
|
106
106
|
],
|
|
107
107
|
[
|
|
108
108
|
'`@astryxdesign/cli`',
|
|
109
|
-
'You ship a docs section, a placed guide, a template that sets `replaces` or `keywords`, a doc section with an `id`, or a theme',
|
|
110
|
-
'`>=0.6.6` when you ship a template that sets `keywords`, otherwise `>=0.6.4`. Optional in `peerDependenciesMeta`',
|
|
109
|
+
'You ship a docs section, a placed guide, a template that sets `replaces` or `keywords`, a component that sets `replaces`, a doc section with an `id`, or a theme',
|
|
110
|
+
'`>=0.6.6` when you ship a template that sets `keywords`, `>=0.6.7` when a component sets `replaces`, otherwise `>=0.6.4`. Optional in `peerDependenciesMeta`',
|
|
111
111
|
],
|
|
112
112
|
],
|
|
113
113
|
},
|
|
@@ -136,10 +136,11 @@ export const docs = {
|
|
|
136
136
|
items: [
|
|
137
137
|
'An unknown field in `astryx.integration.mjs` is ignored with an `unknown_manifest_key` warning, and the rest of the manifest still loads.',
|
|
138
138
|
'A named export that the CLI does not know is ignored with no warning, so `debug` and `gapReport` are safe to add.',
|
|
139
|
-
'
|
|
139
|
+
'Published 0.6.3 and earlier print each `{@link ...}` as written.',
|
|
140
140
|
'Published 0.6.3 and earlier reject a template that sets `replaces` or `keywords`, drop that template, and hide every doc topic your package ships. Published 0.6.4 and 0.6.5 still drop a template that sets `keywords`.',
|
|
141
|
-
'
|
|
142
|
-
'
|
|
141
|
+
'Published 0.6.3 and earlier cannot read a docs section, a section `id`, or a theme folder that `integration add theme` writes. They can then hide every doc topic your package ships.',
|
|
142
|
+
'Published 0.6.2 and 0.6.3 still load your components, but published 0.6.0 and 0.6.1 cannot read the component docs that `integration add component` writes: `component AcmeCarousel` fails there.',
|
|
143
|
+
'An app on an older CLI lists a component whose doc names another export of its file under the file name, and lists no family members, so `component AcmeCarousel` fails there.',
|
|
143
144
|
],
|
|
144
145
|
},
|
|
145
146
|
{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/templates/build-the-template/write-the-template-file`:
|
|
4
|
+
* @file `astryx docs cli/integrations/building-blocks/templates/build-the-template/write-the-template-file`:
|
|
5
5
|
* what gets copied, where the copied file lands, and the imports and
|
|
6
6
|
* export a copied template needs.
|
|
7
7
|
*/
|
|
@@ -91,8 +91,9 @@ npx astryx template acme-stat-card src/features/account/StatusCard.tsx`,
|
|
|
91
91
|
lang: 'tsx',
|
|
92
92
|
code: `import {Button} from '@astryxdesign/core/Button';
|
|
93
93
|
import {Card} from '@astryxdesign/core/Card';
|
|
94
|
-
import {HStack
|
|
94
|
+
import {HStack} from '@astryxdesign/core/HStack';
|
|
95
95
|
import {Text} from '@astryxdesign/core/Text';
|
|
96
|
+
import {VStack} from '@astryxdesign/core/VStack';
|
|
96
97
|
import {AcmeStatusCard} from '@acme/astryx-widgets/components/AcmeStatusCard';
|
|
97
98
|
|
|
98
99
|
const metrics = [
|
|
@@ -144,7 +145,7 @@ export default function AcmeAccountSummary() {
|
|
|
144
145
|
type: 'list',
|
|
145
146
|
style: 'unordered',
|
|
146
147
|
items: [
|
|
147
|
-
'Add `use client` as the first statement only when hooks, event handlers,
|
|
148
|
+
'Add `use client` as the first statement only when hooks, event handlers, browser APIs, or a component passed as a prop, such as `icon={BellIcon}`, need a client boundary.',
|
|
148
149
|
'Keep a static template server-compatible when it needs no client behavior.',
|
|
149
150
|
],
|
|
150
151
|
},
|
|
@@ -25,13 +25,13 @@ export const docs = {
|
|
|
25
25
|
type: 'code',
|
|
26
26
|
lang: 'tsx',
|
|
27
27
|
label: 'Wire the generated module once',
|
|
28
|
-
code: "import {Theme} from '@astryxdesign/core';\nimport {themes, defaultThemeSlug} from './astryx-themes';\n\nfunction App() {\n return (\n <Theme theme={themes[defaultThemeSlug]}>\n <YourApp />\n </Theme>\n );\n}",
|
|
28
|
+
code: "import {Theme} from '@astryxdesign/core/theme';\nimport {themes, defaultThemeSlug} from './astryx-themes';\n\nfunction App() {\n return (\n <Theme theme={themes[defaultThemeSlug]}>\n <YourApp />\n </Theme>\n );\n}",
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
type: 'code',
|
|
32
32
|
lang: 'tsx',
|
|
33
33
|
label: 'Switch among added themes',
|
|
34
|
-
code: "import {useState} from 'react';\nimport {Theme} from '@astryxdesign/core';\nimport {themes, type ThemeSlug} from './astryx-themes';\n\nconst [slug, setSlug] = useState<ThemeSlug>('neutral');\nconst app = <Theme theme={themes[slug]}><YourApp /></Theme>;",
|
|
34
|
+
code: "import {useState} from 'react';\nimport {Theme} from '@astryxdesign/core/theme';\nimport {themes, type ThemeSlug} from './astryx-themes';\n\nconst [slug, setSlug] = useState<ThemeSlug>('neutral');\nconst app = <Theme theme={themes[slug]}><YourApp /></Theme>;",
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
type: 'prose',
|
|
@@ -44,7 +44,7 @@ export const docs = {
|
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
type: 'prose',
|
|
47
|
-
text:
|
|
47
|
+
text: "By default this creates `AGENTS.md` (the tool-agnostic standard most agents read). To target a specific tool's file instead:",
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
50
|
type: 'code',
|
|
@@ -182,21 +182,60 @@ astryx docs principles --dense`,
|
|
|
182
182
|
},
|
|
183
183
|
{
|
|
184
184
|
type: 'prose',
|
|
185
|
-
text: 'Add the server to your MCP config file.
|
|
185
|
+
text: 'Add the server to your MCP config file. The entry is a remote HTTP server, and the exact shape differs per client, so use the snippet for the tool you run. An entry with an unrecognized transport is skipped with a warning rather than an error, which reads as a server that connects but exposes no tools.',
|
|
186
186
|
},
|
|
187
187
|
{
|
|
188
188
|
type: 'code',
|
|
189
189
|
lang: 'json',
|
|
190
|
-
label: '
|
|
190
|
+
label: 'Claude Code (.mcp.json)',
|
|
191
191
|
code: `{
|
|
192
192
|
"mcpServers": {
|
|
193
193
|
"astryx": {
|
|
194
|
-
"type": "
|
|
194
|
+
"type": "http",
|
|
195
195
|
"url": "https://astryx.atmeta.com/mcp"
|
|
196
196
|
}
|
|
197
197
|
}
|
|
198
198
|
}`,
|
|
199
199
|
},
|
|
200
|
+
{
|
|
201
|
+
type: 'prose',
|
|
202
|
+
text: 'Claude Code can also write that entry from the terminal:',
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
type: 'code',
|
|
206
|
+
lang: 'bash',
|
|
207
|
+
code: `claude mcp add --transport http astryx https://astryx.atmeta.com/mcp`,
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
type: 'code',
|
|
211
|
+
lang: 'json',
|
|
212
|
+
label: 'Cline (cline_mcp_settings.json) - type is streamableHttp',
|
|
213
|
+
code: `{
|
|
214
|
+
"mcpServers": {
|
|
215
|
+
"astryx": {
|
|
216
|
+
"type": "streamableHttp",
|
|
217
|
+
"url": "https://astryx.atmeta.com/mcp"
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}`,
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
type: 'code',
|
|
224
|
+
lang: 'json',
|
|
225
|
+
label:
|
|
226
|
+
'Cursor (.cursor/mcp.json) - remote servers take no type field',
|
|
227
|
+
code: `{
|
|
228
|
+
"mcpServers": {
|
|
229
|
+
"astryx": {
|
|
230
|
+
"url": "https://astryx.atmeta.com/mcp"
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}`,
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
type: 'prose',
|
|
237
|
+
text: 'Claude Desktop is the exception: claude_desktop_config.json holds local stdio servers, so a remote server is added through Settings, then Connectors, then Add custom connector, pasting the URL above.',
|
|
238
|
+
},
|
|
200
239
|
{
|
|
201
240
|
type: 'prose',
|
|
202
241
|
text: 'Once connected, your AI tool can search for components by natural language (e.g. "dropdown menu", "success message") and retrieve full documentation without any manual CLI invocation. The server uses the same keyword index from component docs, so search quality improves automatically as component documentation is updated.',
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').TemplateDoc} */
|
|
4
|
+
export const doc = {
|
|
5
|
+
type: 'block',
|
|
6
|
+
name: 'Edit form with footer actions',
|
|
7
|
+
displayName: 'Edit form with footer actions',
|
|
8
|
+
description:
|
|
9
|
+
'Compose a Layout with DrawerHeader, the fields in LayoutContent, and Cancel and Save in a pinned LayoutFooter. purpose="form" keeps Escape but ignores scrim clicks, so a stray click outside does not discard edits.',
|
|
10
|
+
exampleFor: 'Drawer',
|
|
11
|
+
isReady: true,
|
|
12
|
+
aspectRatio: 16 / 9,
|
|
13
|
+
componentsUsed: [
|
|
14
|
+
'Drawer',
|
|
15
|
+
'DrawerHeader',
|
|
16
|
+
'Button',
|
|
17
|
+
'Layout',
|
|
18
|
+
'LayoutContent',
|
|
19
|
+
'LayoutFooter',
|
|
20
|
+
'HStack',
|
|
21
|
+
'VStack',
|
|
22
|
+
'TextInput',
|
|
23
|
+
],
|
|
24
|
+
};
|