@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,172 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/templates/document-the-template/replace-a-core-template`:
|
|
5
|
-
* deliberately replace one Core template through template metadata.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/** @type {import('@astryxdesign/cli/authoring').ReferenceDoc} */
|
|
9
|
-
export const docs = {
|
|
10
|
-
type: 'generic',
|
|
11
|
-
name: 'replace-a-core-template',
|
|
12
|
-
placement: {
|
|
13
|
-
parent: 'namespace:document-the-template',
|
|
14
|
-
slot: 'guides',
|
|
15
|
-
order: 40,
|
|
16
|
-
},
|
|
17
|
-
title: 'Replace a Core template',
|
|
18
|
-
category: 'guide',
|
|
19
|
-
description:
|
|
20
|
-
'Use a template replacement only when an integration intentionally changes the default source returned for one Core template id.',
|
|
21
|
-
sections: [
|
|
22
|
-
{
|
|
23
|
-
id: 'replace-only-on-purpose',
|
|
24
|
-
title: 'Replace only on purpose',
|
|
25
|
-
content: [
|
|
26
|
-
{
|
|
27
|
-
type: 'prose',
|
|
28
|
-
text: 'Use with care: replace a Core template only when every app using this integration should receive your source for an existing Core id by default. An alternative, a product-specific variation, or a different kind of template gets its own id instead ({@link generic:start-a-template}).',
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
type: 'list',
|
|
32
|
-
style: 'unordered',
|
|
33
|
-
items: [
|
|
34
|
-
'Sharing a Core id without `replaces` does not replace Core. It makes the bare id ambiguous, so `astryx template <id>` fails until the app adds `--package`, and `doctor integration templates` reports an accidental collision.',
|
|
35
|
-
'A replacement can keep the Core id or use its own. `replaces` is what makes it the default.',
|
|
36
|
-
],
|
|
37
|
-
},
|
|
38
|
-
],
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
id: 'declare-the-replacement',
|
|
42
|
-
title: 'Declare the replacement',
|
|
43
|
-
content: [
|
|
44
|
-
{
|
|
45
|
-
type: 'prose',
|
|
46
|
-
text: 'Find the exact Core id and kind first.',
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
type: 'code',
|
|
50
|
-
lang: 'bash',
|
|
51
|
-
code: 'npx astryx --json template --list --package @astryxdesign/core',
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
type: 'code',
|
|
55
|
-
lang: 'javascript',
|
|
56
|
-
label: 'templates/acme-app-shell.doc.mjs',
|
|
57
|
-
code: `/** @type {import('@astryxdesign/cli/authoring').TemplateDoc} */
|
|
58
|
-
export default {
|
|
59
|
-
type: 'page',
|
|
60
|
-
name: 'acme-app-shell',
|
|
61
|
-
displayName: 'Acme App Shell',
|
|
62
|
-
description:
|
|
63
|
-
'An Acme application shell with product navigation, account controls, and a responsive content region.',
|
|
64
|
-
replaces: 'shell-side-nav',
|
|
65
|
-
isReady: true,
|
|
66
|
-
category: 'Shell - Left Sidebar',
|
|
67
|
-
};`,
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
type: 'reference',
|
|
71
|
-
target: 'schema:template-doc',
|
|
72
|
-
projection: {fields: ['replaces']},
|
|
73
|
-
presentation: 'full',
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
type: 'prose',
|
|
77
|
-
text: 'Declare `replaces` on the template doc, never in `astryx.integration.mjs`.',
|
|
78
|
-
},
|
|
79
|
-
],
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
id: 'require-a-compatible-cli',
|
|
83
|
-
title: 'Require a compatible CLI',
|
|
84
|
-
content: [
|
|
85
|
-
{
|
|
86
|
-
type: 'prose',
|
|
87
|
-
text: 'Declare the CLI floor from the field above as an optional peer ({@link generic:versioning}).',
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
type: 'code',
|
|
91
|
-
lang: 'json',
|
|
92
|
-
label: 'package.json',
|
|
93
|
-
code: `{
|
|
94
|
-
"peerDependencies": {
|
|
95
|
-
"@astryxdesign/cli": ">=0.7.0"
|
|
96
|
-
},
|
|
97
|
-
"peerDependenciesMeta": {
|
|
98
|
-
"@astryxdesign/cli": {
|
|
99
|
-
"optional": true
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}`,
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
type: 'prose',
|
|
106
|
-
text: '`integration verify` reports `replaces_needs_cli` when that peer is missing or too old. Without it, an older CLI drops that template and hides your doc topics.',
|
|
107
|
-
},
|
|
108
|
-
],
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
id: 'what-apps-receive',
|
|
112
|
-
title: 'What apps receive',
|
|
113
|
-
content: [
|
|
114
|
-
{
|
|
115
|
-
type: 'code',
|
|
116
|
-
lang: 'bash',
|
|
117
|
-
code: `# Receives the active replacement
|
|
118
|
-
npx astryx template shell-side-nav src/app
|
|
119
|
-
|
|
120
|
-
# Receives the original Core template
|
|
121
|
-
npx astryx template shell-side-nav --package @astryxdesign/core src/app`,
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
type: 'prose',
|
|
125
|
-
text: 'When several integrations replace the same Core template, one wins:',
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
type: 'list',
|
|
129
|
-
style: 'unordered',
|
|
130
|
-
items: [
|
|
131
|
-
'An integration explicitly listed in `astryx.config.mjs` wins over one that is only installed and picked automatically.',
|
|
132
|
-
'When several explicitly configured integrations replace the same target, the one listed later wins and Astryx reports the ambiguity.',
|
|
133
|
-
"When no integration is configured explicitly, the package listed later in the app's package.json dependencies wins. Configure the intended integration explicitly instead of relying on that order.",
|
|
134
|
-
],
|
|
135
|
-
},
|
|
136
|
-
],
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
id: 'check-the-replacement',
|
|
140
|
-
title: 'Check the replacement',
|
|
141
|
-
content: [
|
|
142
|
-
{
|
|
143
|
-
type: 'code',
|
|
144
|
-
lang: 'bash',
|
|
145
|
-
code: 'npx astryx doctor integration templates',
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
type: 'table',
|
|
149
|
-
headers: ['Issue', 'Meaning'],
|
|
150
|
-
rows: [
|
|
151
|
-
[
|
|
152
|
-
'`missing_template_replacement_target`',
|
|
153
|
-
'`replaces` does not name a Core template id.',
|
|
154
|
-
],
|
|
155
|
-
[
|
|
156
|
-
'`invalid_template_replacement`',
|
|
157
|
-
'The replacement is unusable or its page/block kind differs from Core.',
|
|
158
|
-
],
|
|
159
|
-
[
|
|
160
|
-
'`ambiguous_template_replacement`',
|
|
161
|
-
'One package declares two replacements for a target, or several active packages contend for it.',
|
|
162
|
-
],
|
|
163
|
-
],
|
|
164
|
-
},
|
|
165
|
-
{
|
|
166
|
-
type: 'prose',
|
|
167
|
-
text: 'Replacement resolution is safe by default. A missing source, invalid doc, missing target, wrong kind, or conflicting declaration never hands the Core id to a questionable replacement: Astryx reports the issue and keeps the Core template. Fix every issue before publishing.',
|
|
168
|
-
},
|
|
169
|
-
],
|
|
170
|
-
},
|
|
171
|
-
],
|
|
172
|
-
};
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/docs/sections-and-placement`: give an
|
|
5
|
-
* integration package its own section in the docs tree, place guides in it,
|
|
6
|
-
* and fix a placement that fails.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
/** @type {import('@astryxdesign/cli/authoring').ReferenceDoc} */
|
|
10
|
-
export const docs = {
|
|
11
|
-
type: 'generic',
|
|
12
|
-
name: 'sections-and-placement',
|
|
13
|
-
placement: {parent: 'namespace:docs', slot: 'guides', order: 20},
|
|
14
|
-
title: 'Sections and placement',
|
|
15
|
-
category: 'guide',
|
|
16
|
-
description: 'Give your package its own docs section and place guides in it.',
|
|
17
|
-
sections: [
|
|
18
|
-
{
|
|
19
|
-
id: 'add-a-docs-section',
|
|
20
|
-
title: 'Add a docs section',
|
|
21
|
-
content: [
|
|
22
|
-
{
|
|
23
|
-
type: 'prose',
|
|
24
|
-
text: "Give your package its own section in the docs tree with `integration add doc <name> --parent <section>`. The first run also writes the section's namespace doc.",
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
type: 'code',
|
|
28
|
-
lang: 'bash',
|
|
29
|
-
code: 'npx astryx integration add doc deploying --parent acme\n# Open your section\nnpx astryx docs acme',
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
type: 'code',
|
|
33
|
-
lang: 'javascript',
|
|
34
|
-
label: 'docs/acme.doc.mjs',
|
|
35
|
-
code: "/** @type {import('@astryxdesign/cli/authoring').NamespaceDoc} */\nexport default {\n type: 'namespace',\n name: 'acme',\n title: 'Acme',\n summary: 'Guides for Acme.',\n slots: {\n guides: {title: 'Guides', accepts: {kinds: ['generic']}},\n },\n};",
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
type: 'list',
|
|
39
|
-
style: 'unordered',
|
|
40
|
-
items: [
|
|
41
|
-
'Edit its `title` and `summary`: readers see them in the docs list and at the top of your section.',
|
|
42
|
-
"The guide, `docs/deploying.doc.mjs`, gets `placement: {parent: 'namespace:acme', slot: 'guides'}`. Later runs with `--parent acme` reuse the namespace doc.",
|
|
43
|
-
'`package.json` gets the optional peer `"@astryxdesign/cli": ">=0.7.0"`, because an older CLI does not read sections; see {@link generic:versioning}.',
|
|
44
|
-
],
|
|
45
|
-
},
|
|
46
|
-
],
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
id: 'place-a-doc',
|
|
50
|
-
title: 'Place a doc',
|
|
51
|
-
content: [
|
|
52
|
-
{
|
|
53
|
-
type: 'prose',
|
|
54
|
-
text: 'A guide names its one home with `placement`: a namespace of your package, a slot in it, and an `order`. Its route is the section name, then the guide name.',
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
type: 'code',
|
|
58
|
-
lang: 'javascript',
|
|
59
|
-
code: "placement: {parent: 'namespace:acme', slot: 'guides', order: 10}, // route: acme/deploying",
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
type: 'list',
|
|
63
|
-
style: 'unordered',
|
|
64
|
-
items: [
|
|
65
|
-
"`parent` is `namespace:<name>`, a namespace that your own package ships. You cannot place a doc in the CLI's sections or in another package's.",
|
|
66
|
-
"`slot` is a slot that the namespace declares for the doc's kind. You can leave it out when the namespace has only one slot.",
|
|
67
|
-
'`order` is an integer that sorts the guides in the slot and sets their Previous and Next moves. Guides without one come last, by name.',
|
|
68
|
-
'A placed guide opens only by its route, `acme/deploying`. Its bare name no longer opens it.',
|
|
69
|
-
],
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
type: 'code',
|
|
73
|
-
lang: 'bash',
|
|
74
|
-
code: 'npx astryx docs acme/deploying',
|
|
75
|
-
},
|
|
76
|
-
],
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
id: 'fix-a-failed-placement',
|
|
80
|
-
title: 'Fix a failed placement',
|
|
81
|
-
content: [
|
|
82
|
-
{
|
|
83
|
-
type: 'prose',
|
|
84
|
-
text: 'A failed `placement` hides the doc: it gets no route and does not show in the docs list. `doctor integration docs` fails with `invalid_doc_graph` and names what to fix.',
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
type: 'code',
|
|
88
|
-
lang: 'bash',
|
|
89
|
-
code: 'npx astryx doctor integration docs',
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
type: 'code',
|
|
93
|
-
lang: 'text',
|
|
94
|
-
code: 'severity: [fail]\ncode: invalid_doc_graph\nmessage: @acme/astryx-widgets/deploying.doc.mjs: placement.parent "namespace:cli" names no namespace; @acme/astryx-widgets declares "acme".',
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
type: 'list',
|
|
98
|
-
style: 'unordered',
|
|
99
|
-
items: [
|
|
100
|
-
'A `parent` that your package does not ship, such as `namespace:cli`, "names no namespace".',
|
|
101
|
-
'A `slot` that the namespace does not declare "is not a slot of namespace"; the message lists the slots it does declare.',
|
|
102
|
-
'The check exits 1; see {@link generic:check-your-docs}.',
|
|
103
|
-
],
|
|
104
|
-
},
|
|
105
|
-
],
|
|
106
|
-
},
|
|
107
|
-
],
|
|
108
|
-
};
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/components/see-it-in-an-app`: inspect an
|
|
5
|
-
* integration component from an app that installs the package.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/** @type {import('@astryxdesign/cli/authoring').ReferenceDoc} */
|
|
9
|
-
export const docs = {
|
|
10
|
-
type: 'generic',
|
|
11
|
-
name: 'see-it-in-an-app',
|
|
12
|
-
placement: {parent: 'namespace:components', slot: 'guides', order: 40},
|
|
13
|
-
title: 'See it in an app',
|
|
14
|
-
category: 'guide',
|
|
15
|
-
description:
|
|
16
|
-
'Confirm that an app discovers the component, its package, its public import, and its documentation.',
|
|
17
|
-
sections: [
|
|
18
|
-
{
|
|
19
|
-
id: 'read-the-installed-component',
|
|
20
|
-
title: 'Read the installed component',
|
|
21
|
-
content: [
|
|
22
|
-
{
|
|
23
|
-
type: 'prose',
|
|
24
|
-
text: 'An app that installs your package sees the component beside Core components, with its package name and public import. The app needs no config.',
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
type: 'code',
|
|
28
|
-
lang: 'bash',
|
|
29
|
-
code: `npx astryx component AcmeCarousel
|
|
30
|
-
npx astryx component --list
|
|
31
|
-
npx astryx search carousel`,
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
type: 'code',
|
|
35
|
-
lang: 'text',
|
|
36
|
-
code: `# AcmeCarousel
|
|
37
|
-
|
|
38
|
-
Cycles through slides one at a time. Use it for a small set of related cards.
|
|
39
|
-
|
|
40
|
-
**Import:** \`import {AcmeCarousel} from '@acme/astryx-widgets/components/AcmeCarousel';\``,
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
type: 'prose',
|
|
44
|
-
text: '`component --list` shows it as `import: @acme/astryx-widgets/components/AcmeCarousel [@acme/astryx-widgets]`. The same commands work in your package while you build it.',
|
|
45
|
-
},
|
|
46
|
-
],
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
id: 'test-the-packed-package',
|
|
50
|
-
title: 'Test the packed package',
|
|
51
|
-
content: [
|
|
52
|
-
{
|
|
53
|
-
type: 'prose',
|
|
54
|
-
text: 'Install the packed package in a test app before publishing. Then run the same detail, list, and search commands there. See {@link generic:test-in-an-app}.',
|
|
55
|
-
},
|
|
56
|
-
],
|
|
57
|
-
},
|
|
58
|
-
],
|
|
59
|
-
};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
|
|
3
|
-
/** @file astryx docs cli/integrations/ship — test, publish, and upgrade. */
|
|
4
|
-
|
|
5
|
-
/** @type {import('@astryxdesign/cli/authoring').NamespaceDoc} */
|
|
6
|
-
export const docs = {
|
|
7
|
-
type: 'namespace',
|
|
8
|
-
name: 'ship',
|
|
9
|
-
placement: {parent: 'namespace:integrations', slot: 'guides', order: 30},
|
|
10
|
-
title: 'Ship',
|
|
11
|
-
summary: 'Test, publish, and upgrade your package.',
|
|
12
|
-
keywords: ['ship', 'publish', 'release', 'upgrade'],
|
|
13
|
-
slots: {
|
|
14
|
-
guides: {title: 'Ship', accepts: {kinds: ['generic']}},
|
|
15
|
-
},
|
|
16
|
-
};
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/docs/short-and-findable`: keep each read
|
|
5
|
-
* short, lead each section with its summary, and write docs that search finds.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/** @type {import('@astryxdesign/cli/authoring').ReferenceDoc} */
|
|
9
|
-
export const docs = {
|
|
10
|
-
type: 'generic',
|
|
11
|
-
name: 'short-and-findable',
|
|
12
|
-
placement: {parent: 'namespace:docs', slot: 'guides', order: 50},
|
|
13
|
-
title: 'Short and findable',
|
|
14
|
-
category: 'guide',
|
|
15
|
-
description: 'Write short sections that people and agents find by search.',
|
|
16
|
-
sections: [
|
|
17
|
-
{
|
|
18
|
-
id: 'keep-each-read-short',
|
|
19
|
-
title: 'Keep each read short',
|
|
20
|
-
content: [
|
|
21
|
-
{
|
|
22
|
-
type: 'prose',
|
|
23
|
-
text: 'Readers open one section at a time, so give each section one idea and keep it to about 30 lines. `npx astryx doctor` warns on any read over 32 KB.',
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
type: 'list',
|
|
27
|
-
style: 'unordered',
|
|
28
|
-
items: [
|
|
29
|
-
'When a section needs a second idea, split it into two sections.',
|
|
30
|
-
'Keep a topic to a few sections. When it grows past five, split it into more guides in your docs section.',
|
|
31
|
-
'A topic with more than one section reads as its section list. Readers open one section by its key, or the whole topic with `--full`.',
|
|
32
|
-
],
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
type: 'code',
|
|
36
|
-
lang: 'bash',
|
|
37
|
-
code: '# The section list\nnpx astryx docs acme/deploying\n# One section\nnpx astryx docs acme/deploying check-before-you-ship\n# Everything\nnpx astryx docs acme/deploying --full',
|
|
38
|
-
},
|
|
39
|
-
],
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
id: 'lead-with-the-summary',
|
|
43
|
-
title: 'Lead with the summary',
|
|
44
|
-
content: [
|
|
45
|
-
{
|
|
46
|
-
type: 'prose',
|
|
47
|
-
text: "A section's first prose block, or its first list item, is its summary in section lists and search results. Make it answer the section's question in one or two sentences.",
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
type: 'list',
|
|
51
|
-
style: 'unordered',
|
|
52
|
-
items: [
|
|
53
|
-
'The summary is cut at about 240 characters.',
|
|
54
|
-
'A code block first does not count: the summary comes from the next prose block.',
|
|
55
|
-
'Open with the answer, not with background.',
|
|
56
|
-
],
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
type: 'code',
|
|
60
|
-
lang: 'text',
|
|
61
|
-
code: 'build-before-you-ship Build before you ship - Build the app, then upload the `dist` folder to your host.',
|
|
62
|
-
},
|
|
63
|
-
],
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
id: 'make-docs-findable',
|
|
67
|
-
title: 'Make docs findable',
|
|
68
|
-
content: [
|
|
69
|
-
{
|
|
70
|
-
type: 'prose',
|
|
71
|
-
text: 'Search ranks a query that matches a whole title, or an identifier in backticks, above words in body text. Title each section with the task a reader searches for.',
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
type: 'list',
|
|
75
|
-
style: 'unordered',
|
|
76
|
-
items: [
|
|
77
|
-
'Name the task in the words a reader types, such as "Deploy to production". Avoid titles such as "Overview" or "Details".',
|
|
78
|
-
'Write field names, file names, and error codes in backticks, such as `deployTarget`: search treats each one as a keyword.',
|
|
79
|
-
'Other words in the summary and body match too, but rank below titles and identifiers. The summary shows under each hit, so make it answer the query.',
|
|
80
|
-
],
|
|
81
|
-
},
|
|
82
|
-
],
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
id: 'test-with-search',
|
|
86
|
-
title: 'Test with search',
|
|
87
|
-
content: [
|
|
88
|
-
{
|
|
89
|
-
type: 'prose',
|
|
90
|
-
text: 'Test a doc the way a new reader finds it: search for the question, and check that the first hit answers it. Quote a query of more than one word.',
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
type: 'code',
|
|
94
|
-
lang: 'bash',
|
|
95
|
-
code: 'npx astryx search "place a doc" --type doc',
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
type: 'list',
|
|
99
|
-
style: 'unordered',
|
|
100
|
-
items: [
|
|
101
|
-
'This query returns the section of these guides that shows how to place a doc.',
|
|
102
|
-
'Run the same search in an app that installs your package; see {@link generic:test-in-an-app}.',
|
|
103
|
-
],
|
|
104
|
-
},
|
|
105
|
-
],
|
|
106
|
-
},
|
|
107
|
-
],
|
|
108
|
-
};
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @file `astryx docs cli/integrations/components/describe-the-component/single-component`:
|
|
5
|
-
* write and maintain the default ComponentDoc for one public component.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/** @type {import('@astryxdesign/cli/authoring').ReferenceDoc} */
|
|
9
|
-
export const docs = {
|
|
10
|
-
type: 'generic',
|
|
11
|
-
name: 'single-component',
|
|
12
|
-
placement: {
|
|
13
|
-
parent: 'namespace:describe-the-component',
|
|
14
|
-
slot: 'guides',
|
|
15
|
-
order: 20,
|
|
16
|
-
},
|
|
17
|
-
title: 'Single component',
|
|
18
|
-
category: 'guide',
|
|
19
|
-
description:
|
|
20
|
-
'Write the default component doc: explain when to use the component, document every public prop, and add focused examples.',
|
|
21
|
-
sections: [
|
|
22
|
-
{
|
|
23
|
-
id: 'start-from-the-generated-doc',
|
|
24
|
-
title: 'Start from the generated doc',
|
|
25
|
-
content: [
|
|
26
|
-
{
|
|
27
|
-
type: 'prose',
|
|
28
|
-
text: '`integration add component` creates the normal doc for one public component. Keep the generated identity and import, then replace its sample text and props with the component\'s real public contract.',
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
type: 'code',
|
|
32
|
-
lang: 'javascript',
|
|
33
|
-
label: 'components/AcmeCarousel.doc.mjs',
|
|
34
|
-
code: `/** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
|
|
35
|
-
export default {
|
|
36
|
-
type: 'component',
|
|
37
|
-
name: 'AcmeCarousel',
|
|
38
|
-
displayName: 'Acme Carousel',
|
|
39
|
-
import: '@acme/astryx-widgets/components/AcmeCarousel',
|
|
40
|
-
usage: {
|
|
41
|
-
description:
|
|
42
|
-
'Cycles through slides one at a time. Use it for a small set of related cards.',
|
|
43
|
-
},
|
|
44
|
-
props: [
|
|
45
|
-
{
|
|
46
|
-
name: 'slides',
|
|
47
|
-
type: 'ReactNode[]',
|
|
48
|
-
description: 'The slides to show, in order.',
|
|
49
|
-
required: true,
|
|
50
|
-
},
|
|
51
|
-
],
|
|
52
|
-
};`,
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
type: 'list',
|
|
56
|
-
style: 'unordered',
|
|
57
|
-
items: [
|
|
58
|
-
'Keep `props` on the top-level doc. Private implementation helpers do not need entries.',
|
|
59
|
-
'Keep the doc beside the source and change both in the same pull request.',
|
|
60
|
-
'If the module later exposes several related public exports, adapt this doc with {@link generic:component-family}.',
|
|
61
|
-
],
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
type: 'reference',
|
|
65
|
-
target: 'schema:component-doc',
|
|
66
|
-
presentation: 'summary',
|
|
67
|
-
},
|
|
68
|
-
],
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
id: 'explain-when-to-use-it',
|
|
72
|
-
title: 'Explain when to use it',
|
|
73
|
-
content: [
|
|
74
|
-
{
|
|
75
|
-
type: 'prose',
|
|
76
|
-
text: 'Write `usage.description` so a person or agent can decide whether this is the right component without opening its source. Say what it does, when to use it, and the most important boundary with a nearby alternative.',
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
type: 'code',
|
|
80
|
-
lang: 'javascript',
|
|
81
|
-
code: `usage: {
|
|
82
|
-
description:
|
|
83
|
-
'Cycles through slides one at a time. Use it for a small set of related cards. Use a static list when every item should stay visible.',
|
|
84
|
-
bestPractices: [
|
|
85
|
-
{guidance: true, description: 'Keep the slide order stable while someone interacts with the carousel.'},
|
|
86
|
-
{guidance: false, description: 'Hide information that must remain visible for comparison.'},
|
|
87
|
-
],
|
|
88
|
-
},`,
|
|
89
|
-
},
|
|
90
|
-
],
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
id: 'document-every-public-prop',
|
|
94
|
-
title: 'Document every public prop',
|
|
95
|
-
content: [
|
|
96
|
-
{
|
|
97
|
-
type: 'prose',
|
|
98
|
-
text: 'Copy the public prop names and types from the source. Explain the behavior a caller controls, not only the TypeScript type.',
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
type: 'code',
|
|
102
|
-
lang: 'javascript',
|
|
103
|
-
code: `props: [
|
|
104
|
-
{
|
|
105
|
-
name: 'slides',
|
|
106
|
-
type: 'ReactNode[]',
|
|
107
|
-
description: 'The slides to show, in order.',
|
|
108
|
-
required: true,
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
name: 'interval',
|
|
112
|
-
type: 'number',
|
|
113
|
-
description: 'Milliseconds between automatic slide changes.',
|
|
114
|
-
default: '5000',
|
|
115
|
-
},
|
|
116
|
-
],`,
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
type: 'list',
|
|
120
|
-
style: 'unordered',
|
|
121
|
-
items: [
|
|
122
|
-
'Set `required: true` only when every caller must pass the prop.',
|
|
123
|
-
'Write `default` exactly as the value should appear in documentation.',
|
|
124
|
-
'Skip styling escape hatches such as `xstyle`, `className`, and `style`.',
|
|
125
|
-
],
|
|
126
|
-
},
|
|
127
|
-
],
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
id: 'add-focused-examples',
|
|
131
|
-
title: 'Add focused examples',
|
|
132
|
-
content: [
|
|
133
|
-
{
|
|
134
|
-
type: 'prose',
|
|
135
|
-
text: 'Add short examples for important usage that the prop table does not make obvious. Each example should teach one complete pattern and use only public imports.',
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
type: 'code',
|
|
139
|
-
lang: 'javascript',
|
|
140
|
-
code: `examples: [
|
|
141
|
-
{
|
|
142
|
-
label: 'Automatic rotation',
|
|
143
|
-
code: '<AcmeCarousel slides={slides} interval={5000} />',
|
|
144
|
-
},
|
|
145
|
-
],`,
|
|
146
|
-
},
|
|
147
|
-
],
|
|
148
|
-
},
|
|
149
|
-
{
|
|
150
|
-
id: 'read-the-result',
|
|
151
|
-
title: 'Read the result',
|
|
152
|
-
content: [
|
|
153
|
-
{
|
|
154
|
-
type: 'prose',
|
|
155
|
-
text: 'Read the component after every source or doc change. Confirm that its purpose, import, props, defaults, and examples match the source, then verify the packed package.',
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
type: 'code',
|
|
159
|
-
lang: 'bash',
|
|
160
|
-
code: 'npx astryx component AcmeCarousel\nnpx astryx integration verify',
|
|
161
|
-
},
|
|
162
|
-
],
|
|
163
|
-
},
|
|
164
|
-
],
|
|
165
|
-
};
|