kmcom-nuxt-layers 4.0.0 → 5.0.0

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 (103) hide show
  1. package/docs/superpowers/plans/2026-09-03-layout-layer-fluid-rebuild.md +8 -8
  2. package/docs/superpowers/specs/2026-08-30-layer-taxonomy-tier-7-design.md +1 -1
  3. package/docs/superpowers/specs/2026-08-31-swiss-grid-layer-design.md +3 -3
  4. package/docs/superpowers/specs/2026-09-03-layout-layer-fluid-rebuild-design.md +3 -3
  5. package/layers/content/app/components/Blog/Article.vue +1 -1
  6. package/layers/content/app/components/Gallery/Detail.vue +8 -8
  7. package/layers/content/app/components/Gallery/Grid.vue +8 -8
  8. package/layers/content/app/components/Gallery/ImageDetail.vue +6 -6
  9. package/layers/content/app/components/Gallery/Lightbox.vue +3 -3
  10. package/layers/content/app/components/NuxtContent/Detail.vue +1 -1
  11. package/layers/content/app/components/NuxtContent/List.vue +1 -1
  12. package/layers/content/app/components/Portfolio/ColorPalette.vue +5 -5
  13. package/layers/content/app/components/Portfolio/Detail.vue +1 -1
  14. package/layers/content/app/components/Portfolio/List.vue +1 -1
  15. package/layers/content/app/components/Portfolio/Typography.vue +5 -5
  16. package/layers/content/app/components/content/Figure.vue +1 -1
  17. package/layers/core/app/assets/css/core.css +9 -9
  18. package/layers/core/app/assets/css/layout.css +1 -1
  19. package/layers/core/app/components/DiagnosticsPage.vue +15 -15
  20. package/layers/core/app/components/Element.test.ts +1 -1
  21. package/layers/core/app/components/ElementTw.test.ts +1 -1
  22. package/layers/core/app/components/ErrorBoundary.vue +5 -5
  23. package/layers/core/app/composables/useElementGrid.test.ts +1 -1
  24. package/layers/core/app/composables/useElementInteraction.test.ts +1 -1
  25. package/layers/core/app/composables/useElementLayout.test.ts +1 -1
  26. package/layers/core/app/composables/useElementSizing.test.ts +1 -1
  27. package/layers/core/app/composables/useElementSurface.test.ts +1 -1
  28. package/layers/core/app/composables/useLayoutAttrs.test.ts +1 -1
  29. package/layers/core/app/error.vue +1 -1
  30. package/layers/core/app/pages/[...slug].vue +2 -2
  31. package/layers/core/app/utils/browserInfo.test.ts +1 -1
  32. package/layers/core/app/utils/featureClasses.test.ts +1 -1
  33. package/layers/core/app/utils/scrollGuardClamp.test.ts +1 -1
  34. package/layers/core/app/utils/styleToTailwindClasses.test.ts +1 -1
  35. package/layers/data/forms/app/utils/contact-schema.test.ts +1 -1
  36. package/layers/data/forms/app/utils/fieldProps.test.ts +1 -1
  37. package/layers/data/mailer/shared/contact.ts +23 -0
  38. package/layers/data/metadata/providers/comicvine/server/utils/metadata-comicvine/normalise.test.ts +1 -1
  39. package/layers/data/metadata/providers/google-books/server/utils/metadata-google-books/client.test.ts +1 -1
  40. package/layers/data/metadata/providers/google-books/server/utils/metadata-google-books/normalise.test.ts +1 -1
  41. package/layers/data/metadata/providers/openlibrary/server/utils/metadata-openlibrary/client.test.ts +1 -1
  42. package/layers/data/metadata/providers/openlibrary/server/utils/metadata-openlibrary/normalise.test.ts +1 -1
  43. package/layers/data/metadata/providers/themoviedb/server/utils/metadata-tmdb/client.test.ts +1 -1
  44. package/layers/data/metadata/providers/themoviedb/server/utils/metadata-tmdb/normalise.test.ts +1 -1
  45. package/layers/data/metadata/server/utils/metadata/cache.test.ts +1 -1
  46. package/layers/data/metadata/server/utils/metadata/provider-registry.test.ts +1 -1
  47. package/layers/data/metadata/server/utils/metadata/search.test.ts +1 -1
  48. package/layers/data/metadata/shared/types/index.ts +2 -0
  49. package/layers/data/metadata/shared/types/metadata.ts +59 -0
  50. package/layers/data/metadata/shared/types/providers.ts +36 -0
  51. package/layers/delivery/feeds/app/assets/css/feeds.css +23 -11
  52. package/layers/delivery/feeds/app/components/Feeds/Index.vue +10 -10
  53. package/layers/delivery/feeds/app/components/Feeds/RouteCard.vue +1 -1
  54. package/layers/delivery/feeds/public/feed/style.css +16 -16
  55. package/layers/delivery/feeds/server/utils/content-adapter.test.ts +1 -1
  56. package/layers/delivery/feeds/server/utils/feed-author.test.ts +1 -1
  57. package/layers/delivery/feeds/server/utils/feed-config.test.ts +1 -1
  58. package/layers/delivery/feeds/server/utils/formats.test.ts +1 -1
  59. package/layers/delivery/scripts/app/components/BaselineStatus.vue +3 -1
  60. package/layers/delivery/seo/app/utils/seoConfig.test.ts +1 -1
  61. package/layers/design-system/theming/app/assets/css/theme.css +0 -1
  62. package/layers/design-system/theming/app/components/ThemePicker/AccentButton.vue +2 -2
  63. package/layers/design-system/theming/app/components/ThemePicker/Menu.vue +3 -3
  64. package/layers/design-system/theming/app/composables/useAccentColor.ts +4 -1
  65. package/layers/design-system/theming/app/plugins/theme.client.ts +15 -13
  66. package/layers/design-system/theming/app/utils/themeAdapter.ts +1 -1
  67. package/layers/design-system/theming/nuxt.config.ts +1 -1
  68. package/layers/design-system/theming/server/utils/accent-css.test.ts +1 -1
  69. package/layers/design-system/theming/server/utils/fouc-config.test.ts +1 -1
  70. package/layers/design-system/typography/app/components/Typography/TextStroke.vue +1 -1
  71. package/layers/design-system/visual/app/assets/css/visual.css +0 -1
  72. package/layers/design-system/visual/app/components/Accent/Scene.vue +2 -2
  73. package/layers/design-system/visual/app/components/Tint/Overlay.vue +1 -1
  74. package/layers/design-system/visual/app/utils/colorTokens.test.ts +1 -1
  75. package/layers/design-system/visual/app/utils/gradientStyle.test.ts +1 -1
  76. package/layers/design-system/visual/app/utils/responsiveSizes.test.ts +1 -1
  77. package/layers/motion/animations/app/components/Motion/Marquee.vue +1 -1
  78. package/layers/motion/animations/app/components/Motion/MarqueeText.vue +3 -3
  79. package/layers/motion/scroll/app/components/Motion/HorizontalScroll.vue +1 -1
  80. package/layers/motion/scroll/app/components/Motion/PinnedSection.vue +2 -2
  81. package/layers/motion/scroll/app/components/Motion/ScrollProgress.vue +2 -2
  82. package/layers/motion/scroll/app/components/Motion/ScrollStats.vue +6 -6
  83. package/layers/motion/transitions/app/assets/css/transitions.css +12 -12
  84. package/layers/render/canvas/app/composables/useRendererCapabilities.ts +2 -1
  85. package/layers/render/canvas/package.json +2 -1
  86. package/layers/render/shader/app/assets/css/shader.css +5 -5
  87. package/layers/render/shader/app/components/Mesh/Plane.vue +3 -1
  88. package/layers/render/shader/app/shaders/common/grain.ts +1 -1
  89. package/layers/render/shader/app/types/tsl.ts +1 -1
  90. package/layers/render/shader/app/utils/tsl/index.ts +2 -0
  91. package/layers/structure/grid/app/assets/css/grid.css +2 -0
  92. package/layers/structure/grid/app/composables/useGridTracks.test.ts +1 -1
  93. package/layers/structure/grid/app/types/tracks.test.ts +1 -1
  94. package/layers/structure/grid/app/utils/placement.test.ts +1 -1
  95. package/layers/structure/layout/app/components/Layout/Grid/Debug.vue +1 -1
  96. package/layers/structure/layout/app/components/Layout/Page/Header.vue +3 -3
  97. package/layers/structure/layout/app/components/Layout/Page/index.vue +16 -11
  98. package/layers/structure/layout/app/utils/gridPlacementStyle.test.ts +1 -1
  99. package/layers/structure/navigation/app/components/Mast/Nav.vue +1 -1
  100. package/layers/structure/navigation/app/components/Mast/NavModal.vue +2 -2
  101. package/layers/structure/navigation/app/utils/site.test.ts +1 -1
  102. package/layers/structure/routing/app/utils/resolveRoute.test.ts +1 -1
  103. package/package.json +22 -32
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "kmcom-nuxt-layers",
3
3
  "private": false,
4
- "version": "4.0.0",
4
+ "version": "5.0.0",
5
5
  "description": "Composable Nuxt 4 layers for building scalable Vue applications",
6
6
  "exports": {
7
7
  "./layers/core": "./layers/core/nuxt.config.ts",
@@ -41,6 +41,7 @@
41
41
  "layers/*/app/**",
42
42
  "layers/*/public/**",
43
43
  "layers/*/server/**",
44
+ "layers/*/shared/**",
44
45
  "layers/*/*/nuxt.config.ts",
45
46
  "layers/*/*/app.config.ts",
46
47
  "layers/*/*/package.json",
@@ -49,6 +50,7 @@
49
50
  "layers/*/*/app/**",
50
51
  "layers/*/*/public/**",
51
52
  "layers/*/*/server/**",
53
+ "layers/*/*/shared/**",
52
54
  "layers/*/*/providers/*/nuxt.config.ts",
53
55
  "layers/*/*/providers/*/package.json",
54
56
  "layers/*/*/providers/*/tsconfig.json",
@@ -151,7 +153,6 @@
151
153
  "@culur/config-stylelint": "^1.7.2",
152
154
  "@eslint/json": "^1.2.0",
153
155
  "@eslint/markdown": "^8.0.3",
154
- "@ianvs/prettier-plugin-sort-imports": "^4.7.1",
155
156
  "@iconify-json/lucide": "^1.2.126",
156
157
  "@netlify/nuxt": "0.3.7",
157
158
  "@nuxt/eslint": "^1.15.2",
@@ -169,7 +170,7 @@
169
170
  "@typescript-eslint/eslint-plugin": "^8.60.1",
170
171
  "@typescript-eslint/parser": "^8.60.1",
171
172
  "@vitejs/plugin-vue": "^6.0.8",
172
- "@vitest/coverage-v8": "^4.1.11",
173
+ "@vitest/coverage-v8": "5.0.4",
173
174
  "@vue/eslint-config-typescript": "^14.7.0",
174
175
  "@vue/test-utils": "^2.4.10",
175
176
  "@vueuse/core": "^14.3.0",
@@ -186,7 +187,6 @@
186
187
  "eslint-plugin-compat": "^7.0.2",
187
188
  "eslint-plugin-glsl": "0.0.0-wip",
188
189
  "eslint-plugin-pnpm": "^1.6.1",
189
- "eslint-plugin-prettier": "^5.5.6",
190
190
  "eslint-plugin-unicorn": "^64.0.0",
191
191
  "eslint-plugin-unused-imports": "^4.4.1",
192
192
  "eslint-plugin-vue": "^10.9.2",
@@ -194,32 +194,26 @@
194
194
  "happy-dom": "^20.10.3",
195
195
  "netlify-cli": "^26.1.0",
196
196
  "npm-check-updates": "^22.2.2",
197
- "nuxt": "latest",
197
+ "nuxt": "4.6.1",
198
198
  "pinia": "^4.0.3",
199
199
  "postcss-html": "^1.8.1",
200
- "prettier": "^3.8.3",
201
- "prettier-plugin-css-order": "^2.2.0",
202
- "prettier-plugin-glsl": "^0.3.1",
203
- "prettier-plugin-organize-attributes": "^1.0.0",
204
- "prettier-plugin-tailwind-styled-components": "^2.0.2",
205
- "prettier-plugin-tailwindcss": "^0.8.1",
206
200
  "stylelint": "^17.12.0",
207
201
  "stylelint-config-recommended-vue": "^1.6.1",
208
202
  "stylelint-config-standard": "^40.0.0",
209
203
  "stylelint-config-standard-vue": "^1.0.0",
210
204
  "stylelint-config-tailwindcss": "^1.0.1",
211
205
  "stylelint-no-unsupported-browser-features": "^8.1.1",
212
- "stylelint-prettier": "^5.0.3",
213
206
  "tailwindcss": "latest",
214
- "turbo": "^2.9.18",
207
+ "turbo": "^2.11.8",
215
208
  "type-fest": "^5.7.0",
216
209
  "typescript": "^6",
217
210
  "vite-plugin-checker": "^0.14.5",
218
- "vitest": "^4.1.11",
211
+ "vitest": "5.0.4",
219
212
  "vue": "3.5.35",
220
213
  "vue-tsc": "3.3.11",
221
214
  "zod": "^4.4.3",
222
- "zod-to-json-schema": "^3.25.2"
215
+ "zod-to-json-schema": "^3.25.2",
216
+ "vite-plus": "1.2.0"
223
217
  },
224
218
  "browserslist": [
225
219
  "last 2 Chrome major versions",
@@ -235,10 +229,6 @@
235
229
  "engines": {
236
230
  "node": ">=24 <25"
237
231
  },
238
- "volta": {
239
- "node": "24.16.0",
240
- "pnpm": "11.5.3"
241
- },
242
232
  "scripts": {
243
233
  "dev": "pnpm -F playground dev",
244
234
  "dev:debug": "pnpm -F debug dev",
@@ -249,25 +239,25 @@
249
239
  "dev:database": "PLAYGROUND_LAYERS=core,database pnpm -F playground dev",
250
240
  "dev:auth": "PLAYGROUND_LAYERS=core,auth pnpm -F playground dev",
251
241
  "build": "turbo run build",
252
- "lint": "turbo run lint",
253
- "lint:fix": "turbo run lint -- --fix",
242
+ "lint": "vp lint && turbo run lint",
243
+ "lint:fix": "vp lint --fix && turbo run lint -- --fix",
254
244
  "lint:style": "stylelint \"**/*.{vue,scss,css}\"",
255
245
  "lint:style:fix": "stylelint \"**/*.{vue,scss,css}\" --fix",
256
- "format": "prettier --write .",
257
- "format:check": "prettier --check .",
246
+ "format": "vp fmt .",
247
+ "format:check": "vp fmt --check .",
258
248
  "check": "pnpm run lint && pnpm run typecheck && pnpm run format:check",
259
249
  "fix": "pnpm run format && pnpm run lint:fix && pnpm run lint:style:fix",
260
- "fix:layer": "f(){ pnpm turbo run lint --filter \"./layers/$1\" -- --fix && prettier --write \"layers/$1\"; }; f",
261
- "fix:app": "f(){ pnpm turbo run lint --filter \"./apps/$1\" -- --fix && prettier --write \"apps/$1\"; }; f",
250
+ "fix:layer": "f(){ pnpm turbo run lint --filter \"./layers/$1\" -- --fix && vp fmt \"layers/$1\"; }; f",
251
+ "fix:app": "f(){ pnpm turbo run lint --filter \"./apps/$1\" -- --fix && vp fmt \"apps/$1\"; }; f",
262
252
  "validate": "pnpm run check && pnpm run build",
263
253
  "typecheck": "vue-tsc --noEmit -p tsconfig.typecheck.json",
264
- "test": "vitest run",
265
- "test:coverage": "vitest run --coverage",
266
- "test:watch": "vitest",
267
- "test:unit": "vitest run --project unit",
268
- "test:vitest": "vitest run --project vitest",
269
- "test:vue": "vitest run --project vue",
270
- "test:nuxt": "vitest run --project nuxt",
254
+ "test": "vp test run",
255
+ "test:coverage": "vp test run --coverage",
256
+ "test:watch": "vp test",
257
+ "test:unit": "vp test run --project unit",
258
+ "test:vitest": "vp test run --project vitest",
259
+ "test:vue": "vp test run --project vue",
260
+ "test:nuxt": "vp test run --project nuxt",
271
261
  "test:playwright": "playwright test",
272
262
  "test:e2e": "playwright test",
273
263
  "clean": "pnpm -r exec rm -rf .nuxt .output .data",