@astryxdesign/cli 0.6.4-canary.f0355e3 → 0.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +96 -99
- package/api/build/build.doc.mjs +1 -6
- package/api/build/build.test.mjs +0 -22
- package/api/build/kit/kit.mjs +5 -44
- package/api/component/_adapter.d.mts +0 -25
- package/api/component/_adapter.mjs +5 -59
- package/api/component/component.d.mts +3 -6
- package/api/component/component.doc.mjs +17 -37
- package/api/component/component.mjs +9 -249
- package/api/component/component.type.d.mts +0 -25
- package/api/component/component.type.mjs +0 -44
- package/api/discover/_adapter.d.mts +6 -114
- package/api/discover/_adapter.mjs +17 -372
- package/api/discover/detail/detail.d.mts +6 -18
- package/api/discover/detail/detail.mjs +13 -67
- package/api/discover/detail/detail.test.mjs +0 -85
- package/api/discover/discover.d.mts +9 -3
- package/api/discover/discover.doc.mjs +18 -61
- package/api/discover/discover.mjs +36 -220
- package/api/discover/discover.test.mjs +2 -11
- package/api/discover/discover.type.d.mts +8 -147
- package/api/discover/discover.type.mjs +12 -102
- package/api/discover/list/list.d.mts +6 -20
- package/api/discover/list/list.mjs +12 -45
- package/api/discover/list/list.test.mjs +0 -46
- package/api/discover/search/search.d.mts +16 -18
- package/api/discover/search/search.mjs +56 -102
- package/api/discover/search/search.test.mjs +10 -144
- package/api/docs/_adapter.d.mts +3 -8
- package/api/docs/_adapter.mjs +6 -14
- package/api/docs/docOverlays.test.mjs +1 -27
- package/api/docs/docs.doc.mjs +2 -2
- package/api/docs/docs.test.mjs +243 -0
- package/api/docs/integration-tree.test.mjs +555 -0
- package/api/docs/integrationDocs.test.mjs +314 -0
- package/api/doctor/doctor.d.mts +3 -8
- package/api/doctor/doctor.doc.mjs +8 -17
- package/api/doctor/doctor.mjs +9 -90
- package/api/doctor/doctor.test.mjs +10 -122
- 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 +10 -19
- package/api/hook/hook.doc.mjs +3 -6
- package/api/index.d.mts +2 -1
- package/api/index.mjs +5 -5
- package/api/init/init.doc.mjs +12 -17
- package/api/integration/add-helpers.d.mts +2 -5
- package/api/integration/add-helpers.mjs +9 -36
- package/api/integration/add-theme.mjs +1 -22
- package/api/integration/add-theme.test.mjs +0 -34
- package/api/integration/authoring-checks.mjs +2 -2
- package/api/integration/integrationPackCheck.doc.mjs +3 -3
- package/api/integration/pack-check.mjs +9 -82
- package/api/integration/pack-check.test.mjs +0 -90
- package/api/integration/pack-check.type.mjs +1 -1
- package/api/json/assertResponse.doc.mjs +1 -1
- package/api/json/index.ts +1 -0
- package/api/json/isError.doc.mjs +1 -1
- package/api/layout/_adapter.d.mts +34 -0
- package/api/layout/_adapter.mjs +148 -0
- package/api/layout/check/check.d.mts +16 -0
- package/api/layout/check/check.mjs +40 -0
- package/api/layout/expand/expand.d.mts +22 -0
- package/api/layout/expand/expand.mjs +155 -0
- package/api/layout/expand/expand.path-safety.test.mjs +53 -0
- package/api/layout/grammar/grammar.d.mts +13 -0
- package/api/layout/grammar/grammar.mjs +87 -0
- package/api/layout/layout.d.mts +6 -0
- package/api/layout/layout.mjs +17 -0
- package/api/layout/layout.test.mjs +297 -0
- package/api/layout/layout.type.d.mts +89 -0
- package/api/layout/layout.type.mjs +103 -0
- package/api/layout/layoutCheck.doc.d.mts +11 -0
- package/api/layout/layoutCheck.doc.mjs +85 -0
- package/api/layout/layoutExpand.doc.d.mts +11 -0
- package/api/layout/layoutExpand.doc.mjs +107 -0
- package/api/layout/layoutGrammar.doc.d.mts +11 -0
- package/api/layout/layoutGrammar.doc.mjs +57 -0
- package/api/search/search.d.mts +1 -27
- package/api/search/search.doc.mjs +2 -2
- package/api/search/search.mjs +16 -228
- package/api/search/search.test.mjs +512 -0
- package/api/swizzle/swizzle.doc.mjs +5 -7
- package/api/template/copy/copy.mjs +1 -1
- package/api/template/copy/copy.test.mjs +0 -9
- package/api/template/template-integration.test.mjs +65 -1
- package/api/template/template.doc.mjs +1 -2
- package/api/template/template.mjs +1 -1
- package/api/theme/add/add.mjs +25 -17
- package/api/theme/add/add.staging.test.mjs +23 -40
- package/api/theme/build/build.family.test.mjs +12 -7
- package/api/theme/build/build.mjs +18 -8
- package/api/theme/generateTonalPalette.doc.mjs +2 -1
- package/api/theme/listThemes.doc.mjs +1 -1
- package/api/theme/themeAdd.doc.mjs +10 -9
- package/api/theme/themeBuild.doc.mjs +13 -13
- package/api/theme/themeList.doc.mjs +1 -1
- package/api/theme/themeListAvailable.doc.mjs +1 -2
- package/api/theme/themePaletteGenerate.doc.mjs +8 -15
- package/api/theme/themeTargets.doc.mjs +2 -3
- package/api/theme/themeTemplate.doc.mjs +1 -2
- package/api/upgrade/run/run.mjs +4 -6
- package/api/upgrade/upgrade.doc.mjs +22 -24
- package/api/upgrade/upgrade.type.mjs +2 -2
- package/assets/codemods/__tests__/runner.test.mjs +1 -3
- package/assets/codemods/integration-runner.mjs +3 -3
- package/assets/codemods/runner.mjs +4 -5
- package/assets/docs/README.md +2 -4
- package/assets/docs/browser-support.doc.mjs +11 -11
- package/assets/docs/color.doc.mjs +2 -8
- package/assets/docs/elevation.doc.mjs +4 -6
- package/assets/docs/getting-started.doc.mjs +16 -5
- package/assets/docs/icons.doc.mjs +21 -2
- package/assets/docs/illustrations.doc.mjs +15 -7
- package/assets/docs/internationalization.doc.mjs +5 -7
- package/assets/docs/layout.doc.dense.mjs +82 -130
- package/assets/docs/layout.doc.mjs +77 -133
- package/assets/docs/migration.doc.mjs +21 -19
- package/assets/docs/motion.doc.mjs +3 -16
- package/assets/docs/principles.doc.dense.mjs +5 -5
- package/assets/docs/principles.doc.mjs +0 -8
- package/assets/docs/principles.doc.zh.mjs +6 -6
- package/assets/docs/shape.doc.mjs +3 -8
- package/assets/docs/spacing.doc.mjs +2 -7
- package/assets/docs/styling-libraries.doc.mjs +2 -6
- package/assets/docs/styling.doc.mjs +23 -19
- package/assets/docs/theme.doc.dense.mjs +18 -58
- package/assets/docs/theme.doc.mjs +46 -56
- package/assets/docs/theme.doc.zh.mjs +8 -9
- package/assets/docs/tokens.doc.dense.mjs +2 -2
- package/assets/docs/tokens.doc.mjs +8 -389
- package/assets/docs/tokens.doc.zh.mjs +2 -2
- package/assets/docs/tree/integrations.doc.mjs +451 -25
- package/assets/docs/tree/integrations.test.mjs +62 -0
- package/assets/docs/tree/writing-docs.doc.mjs +286 -0
- package/assets/docs/typography.doc.mjs +4 -24
- package/assets/docs/working-with-ai.doc.mjs +22 -30
- package/assets/templates/blocks/components/InternationalizationProvider/InternationalizationProvider01ShippedLocale.tsx +1 -1
- package/authoring/config/config.doc.mjs +2 -10
- package/authoring/config/parse.d.mts +0 -2
- package/authoring/config/parse.mjs +0 -19
- package/authoring/config/parse.test.mjs +0 -8
- package/authoring/config/type.ts +2 -13
- package/authoring/doctypes/_schema.d.mts +2 -3
- package/authoring/doctypes/_schema.mjs +0 -6
- package/authoring/doctypes/base/graph-fields.doc.mjs +3 -3
- package/authoring/doctypes/base/type.ts +2 -4
- package/authoring/doctypes/command/command.doc.mjs +1 -1
- package/authoring/doctypes/command/type.ts +1 -1
- package/authoring/doctypes/component/component.doc.mjs +0 -6
- package/authoring/doctypes/component/type.ts +0 -8
- package/authoring/doctypes/reference/reference.doc.mjs +0 -7
- package/authoring/doctypes/reference/type.ts +0 -5
- package/authoring/doctypes/schema/schema.doc.mjs +2 -2
- package/authoring/doctypes/template/template.doc.mjs +1 -1
- package/authoring/doctypes/template/type.ts +2 -2
- package/authoring/index.d.mts +0 -1
- package/authoring/index.d.ts +0 -10
- package/authoring/index.mjs +0 -1
- package/authoring/integration/integration.doc.mjs +10 -12
- package/clients/cli/command-result-coverage.test.mjs +7 -7
- package/clients/cli/commands/component/index.mjs +55 -152
- package/clients/cli/commands/component-ownership.test.mjs +0 -89
- package/clients/cli/commands/component.doc.mjs +9 -27
- package/clients/cli/commands/debug-result-summary.test.mjs +2 -2
- package/clients/cli/commands/discover.doc.mjs +9 -53
- package/clients/cli/commands/discover.mjs +118 -393
- package/clients/cli/commands/docs.doc.mjs +1 -1
- package/clients/cli/commands/docs.mjs +17 -60
- package/clients/cli/commands/docs.test.mjs +294 -0
- package/clients/cli/commands/doctor-integration-docs.doc.mjs +2 -3
- package/clients/cli/commands/doctor-integration.test.mjs +0 -53
- package/clients/cli/commands/doctor.doc.mjs +1 -3
- package/clients/cli/commands/doctor.mjs +5 -49
- package/clients/cli/commands/gap-report.doc.mjs +9 -10
- package/clients/cli/commands/init.doc.mjs +6 -9
- package/clients/cli/commands/integration-add.doc.mjs +9 -9
- package/clients/cli/commands/integration-authoring.test.mjs +10 -61
- package/clients/cli/commands/integration-pack.doc.mjs +9 -5
- package/clients/cli/commands/integration-real-world.test.mjs +1 -1
- package/clients/cli/commands/integration.doc.mjs +4 -4
- package/clients/cli/commands/integration.mjs +43 -74
- package/clients/cli/commands/layout-check.doc.mjs +65 -0
- package/clients/cli/commands/layout-expand.doc.mjs +83 -0
- package/clients/cli/commands/layout-grammar.doc.mjs +30 -0
- package/clients/cli/commands/layout.doc.mjs +34 -0
- package/clients/cli/commands/layout.error-codes.test.mjs +66 -0
- package/clients/cli/commands/layout.exit-parity.test.mjs +41 -0
- package/clients/cli/commands/layout.mjs +275 -0
- 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 +1 -1
- package/clients/cli/commands/search.doc.mjs +3 -10
- package/clients/cli/commands/search.mjs +2 -21
- package/clients/cli/commands/search.test.mjs +4 -21
- package/clients/cli/commands/swizzle.doc.mjs +1 -1
- package/clients/cli/commands/template.doc.mjs +1 -1
- package/clients/cli/commands/text-json-parity.test.mjs +16 -5
- package/clients/cli/commands/theme-add.doc.mjs +1 -1
- package/clients/cli/commands/theme-palette-generate.doc.mjs +2 -3
- package/clients/cli/commands/theme-palette.doc.mjs +2 -1
- package/clients/cli/commands/theme-targets.doc.mjs +2 -2
- package/clients/cli/commands/theme.doc.mjs +1 -2
- package/clients/cli/commands/upgrade.doc.mjs +3 -62
- package/clients/cli/index.mjs +10 -28
- package/clients/cli/lib/define-command.mjs +4 -28
- package/clients/cli/lib/define-command.test.mjs +0 -54
- package/clients/cli/lib/exit-codes.test.mjs +9 -18
- package/clients/cli/lib/json-shim.mjs +14 -24
- package/clients/cli/lib/json-shim.test.mjs +20 -6
- package/clients/cli/lib/manifest.mjs +13 -18
- package/clients/cli/lib/manifest.test.mjs +2 -5
- package/foundation/agent-docs/agent-docs.mjs +1 -1
- package/foundation/agent-docs/agent-docs.test.mjs +1159 -0
- package/foundation/discovery/authoring-self-docs.mjs +0 -1
- package/foundation/discovery/authoring-self-docs.test.mjs +2 -6
- package/foundation/discovery/cli-self-docs.mjs +2 -16
- package/foundation/discovery/cli-self-docs.test.mjs +0 -20
- package/foundation/discovery/docs-discovery.mjs +1 -5
- package/foundation/discovery/docs-discovery.test.mjs +0 -21
- package/foundation/discovery/docs-section-key.d.mts +1 -1
- package/foundation/discovery/docs-section-key.mjs +1 -1
- package/foundation/discovery/template-adapter.mjs +1 -1
- package/foundation/doc-compiler/doc-loads.test.mjs +14 -3
- package/foundation/doc-compiler/tree.d.mts +0 -4
- package/foundation/doc-compiler/tree.mjs +1 -6
- package/foundation/doc-compiler/tree.test.mjs +598 -0
- package/foundation/integrations/cli-requirement.d.mts +6 -26
- package/foundation/integrations/cli-requirement.mjs +11 -46
- package/foundation/integrations/cli-requirement.test.mjs +2 -7
- package/foundation/integrations/contribution-inventory.mjs +1 -1
- package/foundation/integrations/integrations.d.mts +1 -14
- package/foundation/integrations/integrations.mjs +1 -41
- package/foundation/integrations/integrations.test.mjs +0 -31
- package/foundation/response/error-codes.doc.mjs +8 -6
- package/foundation/response/error-codes.test.mjs +5 -30
- package/foundation/response/response-types.doc.d.mts +3 -4
- package/foundation/response/response-types.doc.mjs +27 -40
- package/foundation/response/response-types.doc.test.mjs +0 -23
- package/foundation/response/response.doc.mjs +10 -11
- package/foundation/xle/browser.d.mts +3 -3
- package/foundation/xle/browser.mjs +3 -3
- package/foundation/xle/expand.mjs +2 -2
- package/foundation/xle/parse.mjs +1 -1
- package/foundation/xle/print.mjs +2 -2
- package/foundation/xle/splice.mjs +1 -1
- package/package.json +9 -9
- package/api/discover/_adapter.test.mjs +0 -215
- package/api/discover/_catalog-view.d.mts +0 -115
- package/api/discover/_catalog-view.mjs +0 -203
- package/api/discover/_catalog-view.test.mjs +0 -128
- package/api/discover/detail/item/item.d.mts +0 -26
- package/api/discover/detail/item/item.mjs +0 -78
- package/api/discover/detail/item/item.test.mjs +0 -73
- package/api/integration/pack-check.lifecycle-output.test.mjs +0 -107
- package/api/theme/add/add.rollback.test.mjs +0 -158
- package/api/theme/build/build.rollback.test.mjs +0 -148
- package/api/upgrade/run/files-changed.test.mjs +0 -111
- package/assets/codemods/file-count.test.mjs +0 -163
- package/assets/docs/tree/add-a-component.doc.mjs +0 -75
- package/assets/docs/tree/add-a-theme.doc.mjs +0 -85
- package/assets/docs/tree/add-a-topic.doc.mjs +0 -144
- package/assets/docs/tree/agent-guidance.doc.mjs +0 -138
- package/assets/docs/tree/block-template.doc.mjs +0 -130
- package/assets/docs/tree/build-the-template.doc.mjs +0 -28
- package/assets/docs/tree/building-blocks.doc.mjs +0 -46
- package/assets/docs/tree/check-your-docs.doc.mjs +0 -137
- package/assets/docs/tree/checks.doc.mjs +0 -119
- package/assets/docs/tree/codemods.doc.mjs +0 -147
- package/assets/docs/tree/component-family.doc.mjs +0 -113
- package/assets/docs/tree/component-imports.doc.mjs +0 -69
- package/assets/docs/tree/component-lookups.doc.mjs +0 -149
- package/assets/docs/tree/components.doc.mjs +0 -23
- package/assets/docs/tree/configuration.doc.mjs +0 -23
- package/assets/docs/tree/debug-and-gap-reports.doc.mjs +0 -182
- package/assets/docs/tree/define-the-theme.doc.mjs +0 -118
- package/assets/docs/tree/describe-the-component.doc.mjs +0 -57
- package/assets/docs/tree/docs.doc.mjs +0 -21
- package/assets/docs/tree/document-the-template.doc.mjs +0 -28
- package/assets/docs/tree/document-the-theme.doc.mjs +0 -68
- package/assets/docs/tree/export-template-assets.doc.mjs +0 -147
- package/assets/docs/tree/extend-or-replace.doc.mjs +0 -103
- package/assets/docs/tree/fonts-and-assets.doc.mjs +0 -106
- package/assets/docs/tree/generate-a-palette.doc.mjs +0 -66
- package/assets/docs/tree/grade-template-with-agent.doc.mjs +0 -105
- package/assets/docs/tree/help.doc.mjs +0 -16
- package/assets/docs/tree/links.doc.mjs +0 -98
- package/assets/docs/tree/package-and-test.doc.mjs +0 -32
- package/assets/docs/tree/page-template.doc.mjs +0 -71
- package/assets/docs/tree/publishing.doc.mjs +0 -111
- package/assets/docs/tree/quick-start.doc.mjs +0 -272
- package/assets/docs/tree/replace-a-core-component.doc.mjs +0 -104
- package/assets/docs/tree/replace-a-core-template.doc.mjs +0 -172
- package/assets/docs/tree/sections-and-placement.doc.mjs +0 -108
- package/assets/docs/tree/see-it-in-an-app.doc.mjs +0 -59
- package/assets/docs/tree/ship.doc.mjs +0 -16
- package/assets/docs/tree/short-and-findable.doc.mjs +0 -108
- package/assets/docs/tree/single-component.doc.mjs +0 -165
- package/assets/docs/tree/start-a-template.doc.mjs +0 -143
- package/assets/docs/tree/subcomponent.doc.mjs +0 -115
- package/assets/docs/tree/template-assets.doc.mjs +0 -64
- package/assets/docs/tree/template-doc-overview.doc.mjs +0 -109
- package/assets/docs/tree/template-fonts.doc.mjs +0 -102
- package/assets/docs/tree/template-grading-rubric.doc.mjs +0 -452
- package/assets/docs/tree/template-icons.doc.mjs +0 -97
- package/assets/docs/tree/template-images-media.doc.mjs +0 -127
- package/assets/docs/tree/template-styles.doc.mjs +0 -93
- package/assets/docs/tree/templates.doc.mjs +0 -34
- package/assets/docs/tree/test-in-an-app.doc.mjs +0 -115
- package/assets/docs/tree/test-template-in-app.doc.mjs +0 -128
- package/assets/docs/tree/themes.doc.mjs +0 -39
- package/assets/docs/tree/troubleshooting.doc.mjs +0 -149
- package/assets/docs/tree/upgrading.doc.mjs +0 -103
- package/assets/docs/tree/use-a-theme-in-an-app.doc.mjs +0 -51
- package/assets/docs/tree/verify-packed-template.doc.mjs +0 -77
- package/assets/docs/tree/versioning.doc.mjs +0 -161
- package/assets/docs/tree/write-good-templates.doc.mjs +0 -64
- package/assets/docs/tree/write-the-template-file.doc.mjs +0 -154
- package/authoring/discover/discover.doc.d.mts +0 -13
- package/authoring/discover/discover.doc.mjs +0 -138
- package/authoring/discover/parse.d.mts +0 -24
- package/authoring/discover/parse.mjs +0 -128
- package/authoring/discover/parse.test.mjs +0 -124
- package/authoring/discover/type.ts +0 -87
- package/clients/cli/commands/component-batch.test.mjs +0 -341
- package/clients/cli/commands/discover.sources.test.mjs +0 -267
- package/clients/cli/commands/integration-verify.doc.mjs +0 -22
- package/clients/cli/lib/parse-error-format.test.mjs +0 -81
- package/foundation/response/batch.type.d.mts +0 -33
- package/foundation/response/batch.type.mjs +0 -34
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/templates/start-a-template`: what a
|
|
5
|
-
* template is, why an integration shares one, whether it is a page or a
|
|
6
|
-
* block, and how to add one.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
/** @type {import('@astryxdesign/cli/authoring').ReferenceDoc} */
|
|
10
|
-
export const docs = {
|
|
11
|
-
type: 'generic',
|
|
12
|
-
name: 'start-a-template',
|
|
13
|
-
placement: {parent: 'namespace:templates', slot: 'build', order: 10},
|
|
14
|
-
title: 'Start a template',
|
|
15
|
-
category: 'guide',
|
|
16
|
-
keywords: [
|
|
17
|
-
'what is a template',
|
|
18
|
-
'add a template',
|
|
19
|
-
'page template',
|
|
20
|
-
'block template',
|
|
21
|
-
],
|
|
22
|
-
description:
|
|
23
|
-
'Help others build apps faster and share a consistent visual language by turning your UI idea into a full page or page section.',
|
|
24
|
-
sections: [
|
|
25
|
-
{
|
|
26
|
-
id: 'what-a-template-is',
|
|
27
|
-
title: 'What a template is',
|
|
28
|
-
content: [
|
|
29
|
-
{
|
|
30
|
-
type: 'prose',
|
|
31
|
-
text: 'Unlike a component, a template becomes app code: an app copies it into its own code and adapts it to its product.',
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
type: 'prose',
|
|
35
|
-
text: "A component stays a package dependency and updates with the package. A copied template does not, so updating the package never rewrites the app's copy.",
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
type: 'code',
|
|
39
|
-
lang: 'bash',
|
|
40
|
-
code: `# How an app finds a template and copies it
|
|
41
|
-
npx astryx template --list
|
|
42
|
-
npx astryx template acme-dashboard src/app/dashboard`,
|
|
43
|
-
},
|
|
44
|
-
],
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
id: 'why-share-one',
|
|
48
|
-
title: 'Why share one',
|
|
49
|
-
content: [
|
|
50
|
-
{
|
|
51
|
-
type: 'prose',
|
|
52
|
-
text: 'Templates help other people build apps faster while keeping a consistent visual language across products. Share one when people need more than one component to get started: a template brings the right components, layout, content structure, and interaction wiring already assembled.',
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
type: 'prose',
|
|
56
|
-
text: 'Do not turn a product-specific page into a rigid component only to share its structure. Share it as a template and let each app adapt its copy.',
|
|
57
|
-
},
|
|
58
|
-
],
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
id: 'choose-page-or-block',
|
|
62
|
-
title: 'Choose a page or block',
|
|
63
|
-
content: [
|
|
64
|
-
{
|
|
65
|
-
type: 'table',
|
|
66
|
-
headers: ['Kind', 'Use it for'],
|
|
67
|
-
rows: [
|
|
68
|
-
[
|
|
69
|
-
'Page',
|
|
70
|
-
'A complete screen, such as a dashboard, settings page, or checkout flow.',
|
|
71
|
-
],
|
|
72
|
-
[
|
|
73
|
-
'Block',
|
|
74
|
-
'A smaller section that fits inside a page, such as a hero, form, or data panel. A block can also be the example or showcase for a component.',
|
|
75
|
-
],
|
|
76
|
-
],
|
|
77
|
-
},
|
|
78
|
-
],
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
id: 'pick-a-template-id',
|
|
82
|
-
title: 'Pick a template id',
|
|
83
|
-
content: [
|
|
84
|
-
{
|
|
85
|
-
type: 'prose',
|
|
86
|
-
text: 'Choose a stable lowercase kebab-case id, such as `acme-dashboard`. The id becomes the source and doc file name, the package export, and the value apps pass to `astryx template`. To change a label, edit the doc ({@link generic:template-doc-overview}); never rename the id.',
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
type: 'list',
|
|
90
|
-
style: 'unordered',
|
|
91
|
-
items: [
|
|
92
|
-
'Start with your product or package name, then name the reusable pattern, so the id stays distinct from Core and other integrations.',
|
|
93
|
-
'Do not end the id with `-page`, `-app`, `-view`, or `-screen`.',
|
|
94
|
-
'Do not reuse a Core id by accident: the bare id becomes ambiguous in every app that installs your package. To take over a Core template on purpose, declare `replaces` ({@link generic:replace-a-core-template}).',
|
|
95
|
-
],
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
type: 'code',
|
|
99
|
-
lang: 'bash',
|
|
100
|
-
code: '# See the Core ids\nnpx astryx --json template --list --package @astryxdesign/core',
|
|
101
|
-
},
|
|
102
|
-
],
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
id: 'run-the-add-command',
|
|
106
|
-
title: 'Run the add command',
|
|
107
|
-
content: [
|
|
108
|
-
{
|
|
109
|
-
type: 'prose',
|
|
110
|
-
text: 'Pages are the default. Pass `--type block` to add a block.',
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
type: 'code',
|
|
114
|
-
lang: 'bash',
|
|
115
|
-
code: `npx astryx integration add template acme-dashboard
|
|
116
|
-
npx astryx integration add template acme-stat-card --type block`,
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
type: 'code',
|
|
120
|
-
lang: 'text',
|
|
121
|
-
code: `template contribution added
|
|
122
|
-
|
|
123
|
-
[ok] acme-dashboard
|
|
124
|
-
|
|
125
|
-
Declare template root ./templates in astryx.integration.mjs.
|
|
126
|
-
|
|
127
|
-
- templates/acme-dashboard.doc.mjs
|
|
128
|
-
- templates/acme-dashboard.tsx
|
|
129
|
-
- package.json
|
|
130
|
-
- astryx.integration.mjs`,
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
type: 'prose',
|
|
134
|
-
text: 'The command writes `templates/<id>.tsx` for the UI and `templates/<id>.doc.mjs` for its metadata, and declares the templates directory in `astryx.integration.mjs`. When `package.json` has an `exports` map, it also adds the `./templates/<id>` export ({@link generic:export-template-assets}).',
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
type: 'prose',
|
|
138
|
-
text: 'It never overwrites an existing source or doc file. Add `--dry-run` to see every planned write first.',
|
|
139
|
-
},
|
|
140
|
-
],
|
|
141
|
-
},
|
|
142
|
-
],
|
|
143
|
-
};
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/components/describe-the-component/subcomponent`:
|
|
5
|
-
* give one member of a component family its own ComponentDoc.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/** @type {import('@astryxdesign/cli/authoring').ReferenceDoc} */
|
|
9
|
-
export const docs = {
|
|
10
|
-
type: 'generic',
|
|
11
|
-
name: 'subcomponent',
|
|
12
|
-
placement: {
|
|
13
|
-
parent: 'namespace:describe-the-component',
|
|
14
|
-
slot: 'guides',
|
|
15
|
-
order: 40,
|
|
16
|
-
},
|
|
17
|
-
title: 'Subcomponent',
|
|
18
|
-
category: 'guide',
|
|
19
|
-
description:
|
|
20
|
-
'Move one member of a component family into its own sibling doc without duplicating it in the parent.',
|
|
21
|
-
sections: [
|
|
22
|
-
{
|
|
23
|
-
id: 'choose-a-separate-doc',
|
|
24
|
-
title: 'Choose a separate doc',
|
|
25
|
-
content: [
|
|
26
|
-
{
|
|
27
|
-
type: 'prose',
|
|
28
|
-
text: 'Start with a component family doc. Move one public member into a sibling doc when it has its own source and enough behavior, props, or usage guidance to maintain separately. The parent still lists the member, but only by name.',
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
type: 'list',
|
|
32
|
-
style: 'unordered',
|
|
33
|
-
items: [
|
|
34
|
-
'Keep a small member inline when its whole contract stays clear in the family doc.',
|
|
35
|
-
'Use a sibling doc when the member needs focused search results, examples, usage guidance, or independent maintenance.',
|
|
36
|
-
'Give each member one documentation owner. Do not keep a full parent entry and a sibling doc for the same name.',
|
|
37
|
-
],
|
|
38
|
-
},
|
|
39
|
-
],
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
id: 'reference-it-from-the-parent',
|
|
43
|
-
title: 'Reference it from the parent',
|
|
44
|
-
content: [
|
|
45
|
-
{
|
|
46
|
-
type: 'code',
|
|
47
|
-
lang: 'javascript',
|
|
48
|
-
label: 'components/AcmeDialog.doc.mjs',
|
|
49
|
-
code: `/** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
|
|
50
|
-
export default {
|
|
51
|
-
type: 'component',
|
|
52
|
-
name: 'AcmeDialog',
|
|
53
|
-
displayName: 'Acme Dialog',
|
|
54
|
-
usage: {description: 'Presents a focused task above the current page.'},
|
|
55
|
-
components: [
|
|
56
|
-
{
|
|
57
|
-
name: 'AcmeDialog',
|
|
58
|
-
displayName: 'Acme Dialog',
|
|
59
|
-
description: 'Owns the modal surface and open state.',
|
|
60
|
-
props: [],
|
|
61
|
-
},
|
|
62
|
-
{name: 'AcmeDialogHeader'},
|
|
63
|
-
],
|
|
64
|
-
};`,
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
type: 'prose',
|
|
68
|
-
text: 'The name-only entry keeps `AcmeDialogHeader` in the family. Its description and props come only from the sibling file.',
|
|
69
|
-
},
|
|
70
|
-
],
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
id: 'write-the-subcomponent-doc',
|
|
74
|
-
title: 'Write the subcomponent doc',
|
|
75
|
-
content: [
|
|
76
|
-
{
|
|
77
|
-
type: 'code',
|
|
78
|
-
lang: 'javascript',
|
|
79
|
-
label: 'components/AcmeDialogHeader.doc.mjs',
|
|
80
|
-
code: `/** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
|
|
81
|
-
export default {
|
|
82
|
-
type: 'component',
|
|
83
|
-
name: 'AcmeDialogHeader',
|
|
84
|
-
displayName: 'Acme Dialog Header',
|
|
85
|
-
subComponentOf: 'AcmeDialog',
|
|
86
|
-
description: 'Labels an Acme Dialog and holds its close action.',
|
|
87
|
-
props: [
|
|
88
|
-
{
|
|
89
|
-
name: 'title',
|
|
90
|
-
type: 'string',
|
|
91
|
-
description: 'The dialog title.',
|
|
92
|
-
required: true,
|
|
93
|
-
},
|
|
94
|
-
],
|
|
95
|
-
};`,
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
type: 'reference',
|
|
99
|
-
target: 'schema:component-doc',
|
|
100
|
-
projection: {fields: ['subComponentOf', 'description', 'props']},
|
|
101
|
-
presentation: 'full',
|
|
102
|
-
},
|
|
103
|
-
{
|
|
104
|
-
type: 'list',
|
|
105
|
-
style: 'unordered',
|
|
106
|
-
items: [
|
|
107
|
-
'`subComponentOf` must exactly match the parent doc\'s `name`.',
|
|
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 child inherits family fields such as `group`, `category`, `keywords`, `theming`, and `playground` unless it overrides them.',
|
|
110
|
-
],
|
|
111
|
-
},
|
|
112
|
-
],
|
|
113
|
-
},
|
|
114
|
-
],
|
|
115
|
-
};
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/templates/template-assets`: make every
|
|
5
|
-
* style, font, icon, and media dependency survive a template copy.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/** @type {import('@astryxdesign/cli/authoring').NamespaceDoc} */
|
|
9
|
-
export const docs = {
|
|
10
|
-
type: 'namespace',
|
|
11
|
-
name: 'template-assets',
|
|
12
|
-
placement: {
|
|
13
|
-
parent: 'namespace:build-the-template',
|
|
14
|
-
slot: 'guides',
|
|
15
|
-
order: 20,
|
|
16
|
-
},
|
|
17
|
-
title: 'Assets',
|
|
18
|
-
summary:
|
|
19
|
-
"Make sure the template's styles, fonts, icons, images, and video still show up after an app copies it.",
|
|
20
|
-
blocks: [
|
|
21
|
-
{
|
|
22
|
-
type: 'prose',
|
|
23
|
-
text: 'The copied file does not bring sibling assets with it ({@link generic:write-the-template-file}). Give every asset exactly one owner:',
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
type: 'table',
|
|
27
|
-
headers: ['Owner', 'Use when', 'How the copied source reaches it'],
|
|
28
|
-
rows: [
|
|
29
|
-
[
|
|
30
|
-
'Copied source',
|
|
31
|
-
'The value is small, editable, and belongs to the starting point',
|
|
32
|
-
'Keep it in the `.tsx` file',
|
|
33
|
-
],
|
|
34
|
-
[
|
|
35
|
-
'Integration package',
|
|
36
|
-
'The asset should stay centrally maintained with the package',
|
|
37
|
-
'Import a stable public package path',
|
|
38
|
-
],
|
|
39
|
-
[
|
|
40
|
-
'App',
|
|
41
|
-
'The app must provide product-specific content or branding',
|
|
42
|
-
'Use an explicit placeholder or app public URL and say what to replace',
|
|
43
|
-
],
|
|
44
|
-
],
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
type: 'prose',
|
|
48
|
-
text: 'Do not make a template look self-contained while it relies on an undocumented package file or app convention.',
|
|
49
|
-
},
|
|
50
|
-
],
|
|
51
|
-
keywords: [
|
|
52
|
-
'template assets',
|
|
53
|
-
'template styles',
|
|
54
|
-
'template fonts',
|
|
55
|
-
'template icons',
|
|
56
|
-
'template images',
|
|
57
|
-
],
|
|
58
|
-
slots: {
|
|
59
|
-
guides: {
|
|
60
|
-
title: 'Guides',
|
|
61
|
-
accepts: {kinds: ['generic']},
|
|
62
|
-
},
|
|
63
|
-
},
|
|
64
|
-
};
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/templates/document-the-template/template-doc-overview`:
|
|
5
|
-
* the source and doc file pair, the fields every template doc shares, and how
|
|
6
|
-
* to check what Astryx lists.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
/** @type {import('@astryxdesign/cli/authoring').ReferenceDoc} */
|
|
10
|
-
export const docs = {
|
|
11
|
-
type: 'generic',
|
|
12
|
-
name: 'template-doc-overview',
|
|
13
|
-
placement: {
|
|
14
|
-
parent: 'namespace:document-the-template',
|
|
15
|
-
slot: 'guides',
|
|
16
|
-
order: 10,
|
|
17
|
-
},
|
|
18
|
-
title: 'Template doc overview',
|
|
19
|
-
category: 'guide',
|
|
20
|
-
description:
|
|
21
|
-
'Understand what the template doc controls, keep it accurate as the UI changes, and check how Astryx lists the template.',
|
|
22
|
-
sections: [
|
|
23
|
-
{
|
|
24
|
-
id: 'understand-the-two-files',
|
|
25
|
-
title: 'Understand the two files',
|
|
26
|
-
content: [
|
|
27
|
-
{
|
|
28
|
-
type: 'prose',
|
|
29
|
-
text: 'Every template has a source file and a doc file. For `acme-dashboard`, the source is `templates/acme-dashboard.tsx` and the doc is `templates/acme-dashboard.doc.mjs`. Both begin with `acme-dashboard`, which is how Astryx knows they belong together.',
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
type: 'table',
|
|
33
|
-
headers: ['File', 'What it controls'],
|
|
34
|
-
rows: [
|
|
35
|
-
[
|
|
36
|
-
'`templates/acme-dashboard.tsx`',
|
|
37
|
-
'The UI source that an app copies and then owns.',
|
|
38
|
-
],
|
|
39
|
-
[
|
|
40
|
-
'`templates/acme-dashboard.doc.mjs`',
|
|
41
|
-
'How Astryx names, describes, categorizes, previews, and resolves the template before it is copied.',
|
|
42
|
-
],
|
|
43
|
-
],
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
type: 'prose',
|
|
47
|
-
text: 'The integration manifest points Astryx to the `templates` directory; it does not list each template. Change the source and doc together whenever the purpose, preview, readiness, or replacement behavior changes. No automated check can tell whether the doc still describes the rendered UI.',
|
|
48
|
-
},
|
|
49
|
-
],
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
id: 'document-the-shared-fields',
|
|
53
|
-
title: 'Document the shared fields',
|
|
54
|
-
content: [
|
|
55
|
-
{
|
|
56
|
-
type: 'prose',
|
|
57
|
-
text: 'These fields apply to every page and block. The page, block, and replacement guides add the fields unique to each.',
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
type: 'reference',
|
|
61
|
-
target: 'schema:template-doc',
|
|
62
|
-
projection: {
|
|
63
|
-
fields: ['type', 'name', 'displayName', 'description', 'isReady'],
|
|
64
|
-
},
|
|
65
|
-
presentation: 'full',
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
type: 'list',
|
|
69
|
-
style: 'unordered',
|
|
70
|
-
items: [
|
|
71
|
-
'Set `type` to the kind you chose in {@link generic:start-a-template}. It decides which other fields the doc accepts.',
|
|
72
|
-
'The file name sets the template id ({@link generic:start-a-template}). Labels live in the doc: the terminal list prints `name`, and JSON listings print `displayName`. Changing either never changes the id.',
|
|
73
|
-
'Write the description for someone choosing between templates. The Doc metadata category in {@link generic:template-grading-rubric} defines what a complete description covers.',
|
|
74
|
-
'Add `isReady: false` as soon as you generate the doc, because a doc without `isReady` is listed as ready. Keep it until the template passes {@link generic:test-template-in-app} and the quality review.',
|
|
75
|
-
],
|
|
76
|
-
},
|
|
77
|
-
],
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
id: 'check-how-astryx-lists-it',
|
|
81
|
-
title: 'Check how Astryx lists it',
|
|
82
|
-
content: [
|
|
83
|
-
{
|
|
84
|
-
type: 'prose',
|
|
85
|
-
text: 'Read the package-scoped template list after every doc change. Confirm the id, visible name, description, type, readiness, and package.',
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
type: 'code',
|
|
89
|
-
lang: 'bash',
|
|
90
|
-
code: 'npx astryx --json template --list --package @acme/astryx-templates',
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
type: 'code',
|
|
94
|
-
lang: 'json',
|
|
95
|
-
label: 'Relevant list result',
|
|
96
|
-
code: `{
|
|
97
|
-
"id": "acme-dashboard",
|
|
98
|
-
"name": "acme-dashboard",
|
|
99
|
-
"displayName": "Acme Dashboard",
|
|
100
|
-
"description": "An analytics dashboard for reviewing account health and recent trends.",
|
|
101
|
-
"type": "page",
|
|
102
|
-
"package": "@acme/astryx-templates",
|
|
103
|
-
"isReady": false
|
|
104
|
-
}`,
|
|
105
|
-
},
|
|
106
|
-
],
|
|
107
|
-
},
|
|
108
|
-
],
|
|
109
|
-
};
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/templates/build-the-template/template-assets/template-fonts`:
|
|
5
|
-
* use the app typeface by default, and ship every font file a template needs
|
|
6
|
-
* when it must bring its own.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
/** @type {import('@astryxdesign/cli/authoring').ReferenceDoc} */
|
|
10
|
-
export const docs = {
|
|
11
|
-
type: 'generic',
|
|
12
|
-
name: 'template-fonts',
|
|
13
|
-
placement: {
|
|
14
|
-
parent: 'namespace:template-assets',
|
|
15
|
-
slot: 'guides',
|
|
16
|
-
order: 30,
|
|
17
|
-
},
|
|
18
|
-
title: 'Fonts',
|
|
19
|
-
category: 'guide',
|
|
20
|
-
description:
|
|
21
|
-
"Keep text in the app's typeface unless the template truly needs its own, and ship every font file it uses when it does.",
|
|
22
|
-
sections: [
|
|
23
|
-
{
|
|
24
|
-
id: 'prefer-host-typography',
|
|
25
|
-
title: 'Prefer host typography',
|
|
26
|
-
content: [
|
|
27
|
-
{
|
|
28
|
-
type: 'prose',
|
|
29
|
-
text: 'Use Astryx typography components and theme values unless the template must demonstrate a specific licensed typeface. A copied template should normally inherit the app typography instead of installing a new global font.',
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
type: 'list',
|
|
33
|
-
style: 'unordered',
|
|
34
|
-
items: [
|
|
35
|
-
'Do not add a font only to make sample content look more polished.',
|
|
36
|
-
'Do not override the app body font from a template.',
|
|
37
|
-
'Use a custom face only for a real product or content requirement that the integration package owns.',
|
|
38
|
-
],
|
|
39
|
-
},
|
|
40
|
-
],
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
id: 'package-a-required-font',
|
|
44
|
-
title: 'Package a required font',
|
|
45
|
-
content: [
|
|
46
|
-
{
|
|
47
|
-
type: 'prose',
|
|
48
|
-
text: 'Keep the font files beside a package-owned stylesheet. The stylesheet can use relative `url()` paths because it stays in the package, and the template imports the stylesheet by its public path ({@link generic:template-styles}).',
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
type: 'code',
|
|
52
|
-
lang: 'css',
|
|
53
|
-
label: 'styles/acme-dashboard.css',
|
|
54
|
-
code: `@font-face {
|
|
55
|
-
font-family: 'Acme Sans';
|
|
56
|
-
src: url('../assets/fonts/acme-sans-regular.woff2') format('woff2');
|
|
57
|
-
font-style: normal;
|
|
58
|
-
font-weight: 400;
|
|
59
|
-
font-display: swap;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
.acme-dashboard-title {
|
|
63
|
-
font-family: 'Acme Sans', sans-serif;
|
|
64
|
-
}`,
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
type: 'list',
|
|
68
|
-
style: 'unordered',
|
|
69
|
-
items: [
|
|
70
|
-
'Ship WOFF2 when it satisfies the supported browsers. Add another format only when those browsers require it.',
|
|
71
|
-
'Declare every weight and style the template uses. Do not make the browser synthesize bold or italic because a file is missing.',
|
|
72
|
-
'Use `font-display: swap` unless the product requirement and performance test justify another value.',
|
|
73
|
-
'Confirm that the font license permits redistribution in the integration package.',
|
|
74
|
-
],
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
type: 'prose',
|
|
78
|
-
text: 'Exporting the stylesheet does not publish the font files it points to. Include the font directory in the package as well ({@link generic:export-template-assets}).',
|
|
79
|
-
},
|
|
80
|
-
],
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
id: 'check-fonts-in-the-app',
|
|
84
|
-
title: 'Check fonts in the app',
|
|
85
|
-
content: [
|
|
86
|
-
{
|
|
87
|
-
type: 'prose',
|
|
88
|
-
text: 'When you test the template in an app ({@link generic:test-template-in-app}), also confirm the following.',
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
type: 'list',
|
|
92
|
-
style: 'unordered',
|
|
93
|
-
items: [
|
|
94
|
-
'Every font request succeeds from the built asset path.',
|
|
95
|
-
'Computed styles show the requested family, weight, and style.',
|
|
96
|
-
'Text stays readable with the fallback stack when a font loads slowly or fails.',
|
|
97
|
-
],
|
|
98
|
-
},
|
|
99
|
-
],
|
|
100
|
-
},
|
|
101
|
-
],
|
|
102
|
-
};
|