@janga/norna 0.7.26 → 0.7.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/README.md +51 -35
  2. package/astro.config.mjs +19 -1
  3. package/bin/norna-cli.mjs +6 -4
  4. package/package.json +9 -5
  5. package/schemas/card-list.schema.json +1 -1
  6. package/schemas/config.schema.json +66 -66
  7. package/schemas/content-frontmatter.schema.json +17 -8
  8. package/schemas/manifest.json +49 -3
  9. package/schemas/page-theme.schema.json +1585 -41
  10. package/schemas/root-theme.schema.json +1767 -0
  11. package/schemas/sitewide-content.schema.json +18 -18
  12. package/schemas/theme.schema.json +243 -243
  13. package/scripts/add-site-node.mjs +13 -161
  14. package/scripts/build-site.mjs +11 -6
  15. package/scripts/check-config.mjs +7 -23
  16. package/scripts/dev-local.mjs +17 -10
  17. package/scripts/export-theme-preset.mjs +2 -2
  18. package/scripts/generate-images.mjs +7 -6
  19. package/scripts/generate-schemas.mjs +9 -6
  20. package/scripts/lib/category-destinations.mjs +13 -12
  21. package/scripts/lib/documentation-links.mjs +33 -2
  22. package/scripts/lib/documentation-routes.json +229 -0
  23. package/scripts/lib/docusaurus-migration-audit.mjs +9 -6
  24. package/scripts/lib/editor-file-policy.mjs +18 -0
  25. package/scripts/lib/editor-language-service.mjs +53 -55
  26. package/scripts/lib/editor-page-addresses.mjs +55 -0
  27. package/scripts/lib/editor-page-placement.mjs +172 -0
  28. package/scripts/lib/editor-site-editing-tree.mjs +146 -0
  29. package/scripts/lib/editor-site-files.mjs +153 -0
  30. package/scripts/lib/editor-site-links.mjs +79 -0
  31. package/scripts/lib/editor-site-tree.mjs +151 -0
  32. package/scripts/lib/editor-source-files.mjs +87 -0
  33. package/scripts/lib/editor-theme-help.mjs +43 -0
  34. package/scripts/lib/locale-registry.mjs +1 -1
  35. package/scripts/lib/locales/en.mjs +1 -1
  36. package/scripts/lib/navigation-model.mjs +2 -44
  37. package/scripts/lib/navigation-review.mjs +14 -50
  38. package/scripts/lib/norna-markdown-blocks.mjs +1 -1
  39. package/scripts/lib/page-aliases.mjs +3 -1
  40. package/scripts/lib/page-model.mjs +39 -20
  41. package/scripts/lib/page-move-apply.mjs +117 -0
  42. package/scripts/lib/page-move-plan.mjs +27 -59
  43. package/scripts/lib/presentation.mjs +3 -3
  44. package/scripts/lib/project-config.mjs +7 -8
  45. package/scripts/lib/schema-definitions.mjs +12 -39
  46. package/scripts/lib/schema-editor-metadata.mjs +12 -59
  47. package/scripts/lib/schema-value-definitions.mjs +1 -1
  48. package/scripts/lib/site-content.mjs +7 -24
  49. package/scripts/lib/site-conventions.mjs +19 -1
  50. package/scripts/lib/site-navigation-tree.mjs +2 -7
  51. package/scripts/lib/site-node-create.mjs +169 -0
  52. package/scripts/lib/site-paths.mjs +22 -10
  53. package/scripts/lib/site-structure.mjs +72 -82
  54. package/scripts/lib/site-upgrade.mjs +30 -0
  55. package/scripts/lib/source-files.mjs +34 -0
  56. package/scripts/lib/theme-config.mjs +26 -68
  57. package/scripts/lib/theme-packages.mjs +47 -0
  58. package/scripts/lib/theme-presets.mjs +20 -53
  59. package/scripts/lib/typography.mjs +2 -2
  60. package/scripts/lib/yaml-config.mjs +1 -1
  61. package/scripts/lib/yaml-source-edit.mjs +94 -0
  62. package/scripts/move-site-page.mjs +3 -124
  63. package/scripts/show-typography.mjs +32 -17
  64. package/scripts/sync-content-sections.mjs +9 -7
  65. package/scripts/sync-site-public.mjs +1 -1
  66. package/scripts/upgrade-site.mjs +17 -0
  67. package/src/components/AreaNavigationMenu.astro +24 -0
  68. package/src/components/AreaNavigationPanel.astro +55 -0
  69. package/src/components/AreaNavigationSwitcher.astro +30 -0
  70. package/src/components/ImageStackEnhancement.astro +0 -7
  71. package/src/components/NavigationContinuity.astro +26 -0
  72. package/src/components/NavigationPageTree.astro +13 -4
  73. package/src/components/NavigationState.astro +11 -0
  74. package/src/components/NavigationTreeControls.astro +3 -2
  75. package/src/components/PageAliasRedirect.astro +44 -3
  76. package/src/components/SearchPage.astro +9 -1
  77. package/src/components/SectionNavigationScript.astro +106 -26
  78. package/src/components/SiteNavigation.astro +45 -20
  79. package/src/components/SitePage.astro +37 -61
  80. package/src/components/SiteTreeNavigation.astro +38 -18
  81. package/src/components/TopPageMenu.astro +4 -3
  82. package/src/components/TreeNavigationScript.astro +50 -57
  83. package/src/content.config.ts +15 -16
  84. package/src/layouts/BaseLayout.astro +15 -39
  85. package/src/lib/areaNavigation.ts +42 -0
  86. package/src/lib/navigationContinuity.ts +212 -0
  87. package/src/lib/navigationFollowing.ts +28 -18
  88. package/src/lib/navigationState.mjs +88 -0
  89. package/src/lib/navigationStateScript.mjs +76 -0
  90. package/src/lib/navigationVisibility.ts +9 -0
  91. package/src/lib/pageThemes.ts +5 -42
  92. package/src/lib/sectionContent.ts +3 -2
  93. package/src/lib/siteNavigation.ts +6 -0
  94. package/src/lib/sitePages.ts +12 -23
  95. package/src/pages/404.astro +1 -1
  96. package/src/pages/[...slug].astro +5 -15
  97. package/src/pages/index.astro +1 -3
  98. package/src/styles/area-navigation.css +399 -0
  99. package/src/styles/content.css +5 -31
  100. package/src/styles/navigation-continuity.css +163 -0
  101. package/src/styles/page-layout.css +57 -68
  102. package/src/styles/responsive.css +0 -4
  103. package/starters/basic/README.md +10 -9
  104. package/starters/basic/site/{pages/000-home → root}/content.md +2 -2
  105. package/schemas/category.schema.json +0 -20
  106. package/src/components/PageContentsNavigation.astro +0 -20
  107. /package/starters/basic/site/{pages/000-home → root}/images/.gitkeep +0 -0
  108. /package/starters/basic/site/{theme.yaml → root/tree-theme.yaml} +0 -0
  109. /package/starters/basic/site/{config.yaml → site-config/settings.yaml} +0 -0
  110. /package/starters/basic/site/{sitewide-content.yaml → site-config/shared-content.yaml} +0 -0
package/README.md CHANGED
@@ -20,7 +20,7 @@ implementing a new presentation layer for every project.
20
20
  [![A multi-page dog shelter site with a logo, navigation between pages, text, a card, and a managed image.](docs/assets/norna-dog-shelter.jpg)](https://janga.github.io/norna/examples/complete-sites/dog-shelter-multi-page/)
21
21
 
22
22
  The screenshot shows the built
23
- [multi-page example source](examples/complete-sites/dog-shelter-multi-page/).
23
+ [multi-page example source](examples/complete-sites/dog-shelter-multi-page).
24
24
 
25
25
  ## Quick Start
26
26
 
@@ -50,39 +50,48 @@ locally installed and pinned Norna version.
50
50
 
51
51
  ```text
52
52
  site/
53
- |-- config.yaml
54
- |-- theme.yaml
55
- |-- sitewide-content.yaml
56
- |-- pages/
57
- | |-- 000-home/
58
- | | |-- content.md
59
- | | `-- images/
60
- | `-- 010-guides/
61
- | |-- category.yaml
62
- | `-- pages/
63
- | `-- 010-installation/
64
- | |-- content.md
65
- | `-- images/
66
- `-- public/
53
+ |-- site-config/
54
+ | |-- settings.yaml
55
+ | `-- shared-content.yaml
56
+ |-- public/
57
+ `-- root/
58
+ |-- content.md # Required homepage
59
+ |-- tree-theme.yaml # Required preset and inherited overrides
60
+ |-- page-theme.yaml # Optional homepage-only overrides
61
+ |-- images/
62
+ `-- pages/
63
+ `-- 010-guide/
64
+ |-- content.md
65
+ |-- tree-theme.yaml # Optional inherited branch overrides
66
+ |-- images/
67
+ `-- pages/
68
+ `-- 010-install/content.md
67
69
  ```
68
70
 
69
- - `pages/000-home/content.md` is the required homepage at `/`.
70
- - Every other ordered directory under `pages/` contains either `content.md` for
71
- a routable page or `category.yaml` for a navigation-only group.
72
- - A page may contain local images. A page or category may contain limited
73
- presentation settings and nested entries under its own `pages/` directory.
74
- - Category ids remain in child URLs. Opening a category URL leads to its first
75
- listed direct page or a generated child list; see
76
- [Category destinations](docs/pages.md#opening-a-category-url).
77
- - `theme.yaml` normally selects one complete visual preset.
78
- - `sitewide-content.yaml` holds shared logo display settings, banners, and
71
+ - `root/content.md` is the required homepage at `/`; `root/pages/` contains its
72
+ children. The site container holds shared configuration and public files
73
+ beside this root page. `root/` never becomes a URL segment.
74
+ - Every ordered directory under `pages/` contains `content.md` for a routable
75
+ page. A parent can append a generated list of its direct child pages with
76
+ `page.listChildren: true`; see
77
+ [Child-page lists](https://janga.github.io/norna/reference/site/pages/#list-child-pages).
78
+ - A page may contain local images, visual settings and nested
79
+ entries under its own `pages/` directory.
80
+ - `root/tree-theme.yaml` selects shared visual defaults. Optional `page-theme.yaml`
81
+ overrides its page alone; a child's `tree-theme.yaml` is inherited further.
82
+ The root requires `preset`; elsewhere it is optional and explicitly replaces
83
+ the inherited base. Without it, only supplied fields change.
84
+ - `site-config/shared-content.yaml` holds shared logo display settings, banners, and
79
85
  footer content.
80
- - `config.yaml` holds the public URL and optional language, local and remote
86
+ - `site-config/settings.yaml` holds the public URL and optional language, local and remote
81
87
  source links, navigation model, static search, and scroll behavior.
82
88
  - `public/` holds static files copied without processing.
83
89
 
84
90
  Norna validates this structure, processes managed images when needed, and
85
- builds the generated website into `dist/`.
91
+ builds the generated website into `dist/`. Sites using an earlier layout need
92
+ manual [source conversion](https://janga.github.io/norna/reference/site/files/#convert-the-former-homepage-folder).
93
+ `norna site:upgrade` checks the layout and reports former locations without
94
+ moving or overwriting source files.
86
95
 
87
96
  ## Why Norna?
88
97
 
@@ -134,24 +143,31 @@ components, and rendering logic.
134
143
 
135
144
  GitHub CLI and Playwright are needed only for specific deploy helpers and
136
145
  engine diagnostics, not for ordinary editing and local preview. See
137
- [Requirements and limitations](docs/requirements.md) for the exact boundaries.
146
+ [Requirements and limitations](https://janga.github.io/norna/reference/site/requirements/) for the exact boundaries.
138
147
 
139
148
  ## Documentation
140
149
 
141
150
  - [Getting Started](https://janga.github.io/norna/getting-started/install-norna/)
142
- - [Site files](docs/site-files.md)
143
- - [Upgrading an existing site](docs/upgrading.md)
144
- - [Task-oriented documentation map](docs/README.md)
145
- - [Common workflows](docs/README.md#common-workflows)
146
- - [Explanation and JavaScript boundaries](docs/README.md#explanation)
147
- - [Command and platform reference](docs/README.md#command-and-platform-reference)
148
- - [Troubleshooting](docs/README.md#troubleshooting)
151
+ - [Site files](https://janga.github.io/norna/reference/site/files/)
152
+ - [Upgrading an existing site](https://janga.github.io/norna/reference/workflows/upgrading/)
153
+ - [Complete reference](https://janga.github.io/norna/reference/)
154
+ - [Working on a site](https://janga.github.io/norna/reference/workflows/)
155
+ - [JavaScript and accessibility](https://janga.github.io/norna/reference/reader/accessibility/)
156
+ - [Commands](https://janga.github.io/norna/reference/commands/invocation/)
157
+ - [Troubleshooting](https://janga.github.io/norna/faq/installation/)
149
158
  - [AI-readable documentation index](https://janga.github.io/norna/llms.txt)
150
159
 
151
160
  Engine contributors should start with
152
161
  [Engine Development](docs/engine-development.md). Planning and future work are
153
162
  tracked in [BACKLOG.md](BACKLOG.md).
154
163
 
164
+ The user reference is authored once under `site/root/pages/032-reference/` and
165
+ rendered on the documentation site. It describes current development; use the
166
+ installed release's Git tag when checking older behavior. Tags through 0.7.26
167
+ keep their reference under `docs/`; later tags use the documentation page tree.
168
+ The [contributor documentation](docs/README.md) explains maintenance and version
169
+ selection.
170
+
155
171
  ## Support And License
156
172
 
157
173
  Use the [issue tracker](https://github.com/janga/norna/issues) for reproducible
package/astro.config.mjs CHANGED
@@ -17,6 +17,7 @@ import {
17
17
  engineRoot,
18
18
  generatedImagesManifestPath,
19
19
  siteContentPath,
20
+ siteHomePageDir,
20
21
  siteImagesDir,
21
22
  siteProjectRoot,
22
23
  sitePagesDir,
@@ -72,6 +73,8 @@ const nornaGeneratedImagesWatcher = () => ({
72
73
  const manifestPath = path.resolve(generatedImagesManifestPath);
73
74
  const watchedSourcePaths = [
74
75
  siteContentPath,
76
+ path.join(siteHomePageDir, 'tree-theme.yaml'),
77
+ path.join(siteHomePageDir, 'page-theme.yaml'),
75
78
  siteImagesDir,
76
79
  sitePagesDir,
77
80
  ].map((watchedPath) => path.resolve(watchedPath));
@@ -109,7 +112,7 @@ const nornaGeneratedImagesWatcher = () => ({
109
112
  const scheduleStructureReload = (changedPath) => {
110
113
  if (!isRelevantSourcePath(changedPath)) return;
111
114
  const filename = path.basename(changedPath);
112
- if (filename !== 'category.yaml' && filename !== 'theme.yaml') return;
115
+ if (!['tree-theme.yaml', 'page-theme.yaml'].includes(filename)) return;
113
116
 
114
117
  clearTimeout(structureReloadTimer);
115
118
  structureReloadTimer = setTimeout(() => {
@@ -162,6 +165,21 @@ markdownProcessor.createRenderer = async (shared) => {
162
165
  export default defineConfig({
163
166
  base: projectConfig.site.basePath,
164
167
  cacheDir: astroCacheDir,
168
+ prefetch: { prefetchAll: false, defaultStrategy: 'hover' },
169
+ integrations: [{
170
+ name: 'norna-navigation-continuity',
171
+ hooks: {
172
+ 'astro:config:setup': ({ injectScript }) => {
173
+ injectScript('page', `
174
+ import { prefetch } from 'astro:prefetch';
175
+ import { setupNavigationContinuity } from ${JSON.stringify(path.join(engineRoot, 'src/lib/navigationContinuity.ts'))};
176
+ if (document.documentElement.hasAttribute('data-navigation-continuity')) {
177
+ setupNavigationContinuity(prefetch);
178
+ }
179
+ `);
180
+ },
181
+ },
182
+ }],
165
183
  markdown: {
166
184
  shikiConfig: {
167
185
  transformers: [nornaCodeFenceTransformer],
package/bin/norna-cli.mjs CHANGED
@@ -15,7 +15,7 @@ Commands:
15
15
  dev:logs Show local dev server logs
16
16
  dev:stop Stop local dev server
17
17
  check Validate configuration and content
18
- config:check Validate site/config.yaml
18
+ config:check Validate site/site-config/settings.yaml
19
19
  content:check Validate page content and managed image references
20
20
  content:sync Move misplaced Norna-managed images and refresh generated images
21
21
  navigation:review Review the derived navigation structure without changing files
@@ -23,14 +23,14 @@ Commands:
23
23
  theme:export Export a commented theme preset reference
24
24
  typography profiles Show built-in typography profile values
25
25
  typography show Show resolved typography for the selected site
26
- site:public Sync site/public/ to public/
26
+ site:public Sync static files to the selected site's .norna/public/
27
+ site:upgrade Convert former configuration and homepage locations
27
28
  images Generate optimized image variants
28
29
  engine:update Update @janga/norna in a site repository
29
30
  engine:version Show installed engine and Astro versions
30
31
  init Create a new site project from the starter
31
32
  page:add Add a page to the site page tree
32
33
  page:move Move a page subtree and update internal links
33
- category:add Add a non-routable category to the site page tree
34
34
  migrate:check Audit a Docusaurus project without modifying it
35
35
  build Build the selected site
36
36
  build:local Build and restart local dev server
@@ -169,6 +169,8 @@ try {
169
169
  throw new Error(`Unknown typography command: ${subcommand ?? ''}\n${usage}`);
170
170
  } else if (command === 'site:public') {
171
171
  await runScript('scripts/sync-site-public.mjs', rest);
172
+ } else if (command === 'site:upgrade') {
173
+ await runScript('scripts/upgrade-site.mjs', rest);
172
174
  } else if (command === 'images') {
173
175
  await runScript('scripts/generate-images.mjs', rest);
174
176
  } else if (command === 'engine:update') {
@@ -182,7 +184,7 @@ try {
182
184
  } else if (command === 'page:move') {
183
185
  await runScript('scripts/move-site-page.mjs', rest);
184
186
  } else if (command === 'category:add') {
185
- await runScript('scripts/add-site-node.mjs', ['category', ...rest]);
187
+ throw new Error('category:add is no longer supported. Use page:add, then set page.listChildren: true in its content.md to list direct children.');
186
188
  } else if (command === 'build') {
187
189
  await runBuild();
188
190
  } else if (command === 'build:local') {
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@janga/norna",
3
3
  "description": "An opinionated CLI for building responsive websites from Markdown, images, and theme presets.",
4
4
  "type": "module",
5
- "version": "0.7.26",
5
+ "version": "0.7.28",
6
6
  "license": "GPL-3.0-only",
7
7
  "repository": {
8
8
  "type": "git",
@@ -56,6 +56,7 @@
56
56
  "scripts/sync-content-sections.mjs",
57
57
  "scripts/sync-site-public.mjs",
58
58
  "scripts/update-engine.mjs",
59
+ "scripts/upgrade-site.mjs",
59
60
  "scripts/watch-pages-deploy.mjs",
60
61
  "README.md"
61
62
  ],
@@ -100,11 +101,12 @@
100
101
  "deploy:watch": "node bin/norna.mjs deploy:watch",
101
102
  "doctor": "node bin/norna.mjs doctor",
102
103
  "demo:build": "node scripts/build-demo.mjs",
103
- "test": "npm run schemas:check && npm run test:dead-code && npm run test:schemas && npm run test:page-model && npm run test:page-markdown && npm run test:migration-check && npm run test:site-links && npm run test:page-aliases && npm run test:sitemap && npm run test:not-found-page && npm run test:site-node-commands && npm run test:page-move && npm run test:navigation-review && npm run test:nested-pages && npm run test:heading-ids && npm run test:navigation-model && npm run test:project-config && npm run test:locales && npm run test:edit-source-link && npm run test:static-search && npm run test:editor-language && npm run test:content-check && npm run test:content-sync-plan && npm run test:content-model && npm run test:theme-presets && npm run test:presentation-contract && npm run test:presentation-review && npm run test:preset-baselines && npm run test:documentation-preset-review && npm run test:site-public && npm run test:cli-discovery && npm run test:dev-local && npm run test:review-environments && npm run test:engine-commands && npm run test:documentation && npm run test:ci-lockfile && npm run test:banner-visibility && npm run test:client-javascript && npm run test:table-sorting && npm run test:fixture:build && npm run test:examples && npm run package:check",
104
+ "test": "npm run schemas:check && npm run test:dead-code && npm run test:schemas && npm run test:page-model && npm run test:site-upgrade && npm run test:page-markdown && npm run test:migration-check && npm run test:site-links && npm run test:page-aliases && npm run test:sitemap && npm run test:not-found-page && npm run test:site-node-commands && npm run test:page-move && npm run test:navigation-review && npm run test:nested-pages && npm run test:heading-ids && npm run test:navigation-model && npm run test:project-config && npm run test:locales && npm run test:edit-source-link && npm run test:static-search && npm run test:editor-language && npm run test:content-check && npm run test:content-sync-plan && npm run test:content-model && npm run test:theme-inheritance && npm run test:theme-presets && npm run test:presentation-contract && npm run test:presentation-review && npm run test:preset-baselines && npm run test:documentation-preset-review && npm run test:site-public && npm run test:cli-discovery && npm run test:dev-local && npm run test:review-environments && npm run test:engine-commands && npm run test:documentation && npm run test:ci-lockfile && npm run test:banner-visibility && npm run test:client-javascript && npm run test:browser-test-server && npm run test:table-sorting && npm run test:fixture:build && npm run test:examples && npm run package:check",
104
105
  "test:fixture:build": "node scripts/test-basic-fixture-build.mjs",
105
106
  "test:examples": "node scripts/test-examples.mjs",
106
107
  "test:examples:browser": "node scripts/test-navigation.mjs --site-dir site tests/examples-gallery.spec.ts",
107
108
  "test:page-model": "node scripts/test-page-model.mjs",
109
+ "test:site-upgrade": "node scripts/test-site-upgrade.mjs",
108
110
  "test:page-markdown": "node scripts/test-page-markdown.mjs && node scripts/test-structured-blocks.mjs && node scripts/test-named-notes.mjs && node scripts/test-content-tabs.mjs",
109
111
  "test:tabs:browser": "node scripts/test-navigation.mjs --site-dir fixtures/content-tabs/site tests/content-tabs.spec.ts",
110
112
  "test:site-links": "node scripts/test-site-link-graph.mjs",
@@ -112,7 +114,7 @@
112
114
  "test:sitemap": "node scripts/test-sitemap.mjs",
113
115
  "test:not-found-page": "node scripts/test-not-found-page.mjs",
114
116
  "test:site-node-commands": "node scripts/test-site-node-commands.mjs",
115
- "test:page-move": "node scripts/test-page-move.mjs",
117
+ "test:page-move": "node scripts/test-page-move.mjs && node --test scripts/test-editor-page-placement.mjs",
116
118
  "test:navigation-review": "node scripts/test-navigation-review.mjs",
117
119
  "test:nested-pages": "node scripts/test-nested-pages.mjs && node scripts/test-top-navigation-contract.mjs",
118
120
  "test:heading-ids": "node scripts/test-heading-ids.mjs",
@@ -135,6 +137,7 @@
135
137
  "test:presentation-review": "node scripts/test-presentation-review-fixture.mjs",
136
138
  "test:presentation:browser": "node scripts/test-navigation.mjs --site-dir fixtures/preset-baseline/site tests/presentation-contract.spec.ts",
137
139
  "test:table-layout:top": "node scripts/test-navigation.mjs --site-dir fixtures/top-navigation/site tests/table-width-top.spec.ts",
140
+ "test:browser-test-server": "node scripts/test-browser-test-server.mjs",
138
141
  "test:table-sorting": "node scripts/test-navigation.mjs --site-dir fixtures/table-sorting/site tests/table-sorting.spec.ts",
139
142
  "test:table-context:browser": "node scripts/test-navigation.mjs --site-dir fixtures/presentation-review/site tests/table-responsive-context.spec.ts",
140
143
  "test:navigation-surfaces:browser": "npm run test:navigation-surfaces:top && npm run test:navigation-surfaces:tree",
@@ -173,7 +176,8 @@
173
176
  "release:minor": "node scripts/release.mjs minor",
174
177
  "release:major": "node scripts/release.mjs major",
175
178
  "preview": "node bin/norna.mjs preview",
176
- "astro": "node bin/norna.mjs astro"
179
+ "astro": "node bin/norna.mjs astro",
180
+ "test:theme-inheritance": "node scripts/test-theme-inheritance.mjs"
177
181
  },
178
182
  "dependencies": {
179
183
  "@astrojs/markdown-satteri": "0.3.4",
@@ -187,7 +191,7 @@
187
191
  "yaml": "2.9.0"
188
192
  },
189
193
  "devDependencies": {
190
- "@playwright/test": "^1.61.1",
194
+ "@playwright/test": "^1.63.0",
191
195
  "knip": "6.33.0"
192
196
  }
193
197
  }
@@ -45,7 +45,7 @@
45
45
  },
46
46
  "width": {
47
47
  "type": "string",
48
- "description": "Override the root theme's maximum width for this card list.",
48
+ "description": "Override the shared theme's maximum width for this card list.",
49
49
  "enum": [
50
50
  "text",
51
51
  "narrow",