kmcom-nuxt-layers 1.7.9 → 2.1.6

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 (518) hide show
  1. package/layers/animations/nuxt.config.ts +17 -0
  2. package/layers/animations/package.json +6 -0
  3. package/layers/animations/tsconfig.json +7 -0
  4. package/layers/canvas/app/components/ShaderCanvas.vue +125 -0
  5. package/layers/{shader → canvas}/app/composables/useRendererCapabilities.ts +10 -2
  6. package/layers/{shader → canvas}/app/composables/useShaderTime.ts +3 -3
  7. package/layers/canvas/app/types/renderer.ts +50 -0
  8. package/layers/canvas/nuxt.config.ts +189 -0
  9. package/layers/canvas/package.json +22 -0
  10. package/layers/canvas/tsconfig.json +7 -0
  11. package/layers/content/app/components/Blog/Article.vue +12 -6
  12. package/layers/content/app/components/Blog/Card.vue +24 -24
  13. package/layers/content/app/components/Blog/List.vue +8 -11
  14. package/layers/content/app/components/Gallery/AmbientImage.vue +15 -15
  15. package/layers/content/app/components/Gallery/Card.vue +19 -19
  16. package/layers/content/app/components/Gallery/Detail.vue +29 -20
  17. package/layers/content/app/components/Gallery/Grid.vue +8 -11
  18. package/layers/content/app/components/Gallery/ImageDetail.vue +18 -17
  19. package/layers/content/app/components/Gallery/ImagePage.vue +8 -9
  20. package/layers/content/app/components/Gallery/Lightbox.vue +38 -33
  21. package/layers/content/app/components/Gallery/Page.vue +8 -8
  22. package/layers/content/app/components/Gallery/SlugPage.vue +7 -8
  23. package/layers/content/app/components/NuxtContent/Detail.vue +29 -27
  24. package/layers/content/app/components/NuxtContent/List.vue +10 -9
  25. package/layers/content/app/components/NuxtContent/Renderer.vue +4 -4
  26. package/layers/content/app/components/NuxtContent/Surround.vue +3 -3
  27. package/layers/content/app/components/NuxtContent/Toc.vue +5 -5
  28. package/layers/content/app/components/Portfolio/Card.vue +17 -17
  29. package/layers/content/app/components/Portfolio/ColorPalette.vue +11 -11
  30. package/layers/content/app/components/Portfolio/Detail.vue +9 -13
  31. package/layers/content/app/components/Portfolio/ItemPage.vue +8 -9
  32. package/layers/content/app/components/Portfolio/List.vue +10 -13
  33. package/layers/content/app/components/Portfolio/Page.vue +8 -8
  34. package/layers/content/app/components/Portfolio/Typography.vue +4 -4
  35. package/layers/content/app/components/content/Figure.vue +14 -14
  36. package/layers/content/app/composables/createPortfolioComposables.ts +1 -0
  37. package/layers/content/app/composables/useCollectionItem.ts +4 -1
  38. package/layers/content/app/composables/useCollectionSurround.ts +1 -0
  39. package/layers/content/app/composables/useContentPage.ts +1 -0
  40. package/layers/content/app/composables/useGalleryItems.ts +1 -0
  41. package/layers/content/app/composables/usePortfolioItems.ts +1 -0
  42. package/layers/content/app/types/app-config.d.ts +1 -1
  43. package/layers/content/app/types/content.ts +27 -30
  44. package/layers/content/nuxt.config.ts +4 -3
  45. package/layers/content/package.json +4 -4
  46. package/layers/core/app/components/DiagnosticsPage.vue +203 -203
  47. package/layers/core/app/components/ErrorBoundary.vue +51 -49
  48. package/layers/core/app/components/LoadingScreen.vue +112 -111
  49. package/layers/core/app/composables/useBrowser.ts +2 -1
  50. package/layers/core/app/composables/useCache.ts +4 -2
  51. package/layers/core/app/composables/useErrorLog.ts +7 -10
  52. package/layers/core/app/composables/useFeatures.ts +4 -2
  53. package/layers/core/app/composables/useLoading.ts +1 -0
  54. package/layers/core/app/composables/useNetworkInfo.ts +1 -0
  55. package/layers/core/app/composables/usePWAInfo.ts +4 -3
  56. package/layers/core/app/composables/useRendering.ts +1 -0
  57. package/layers/core/app/composables/useScreen.ts +1 -0
  58. package/layers/core/app/composables/useScrollGuard.ts +2 -1
  59. package/layers/core/app/pages/[...slug].vue +99 -99
  60. package/layers/core/app/plugins/error-handler.ts +1 -1
  61. package/layers/core/app/plugins/feature-detection.client.ts +2 -1
  62. package/layers/core/app/plugins/init.ts +8 -19
  63. package/layers/core/app/plugins/loading.client.ts +4 -2
  64. package/layers/core/app/plugins/scroll-guard.client.ts +4 -4
  65. package/layers/core/app/types/app-config.d.ts +5 -1
  66. package/layers/core/app/types/detection.ts +8 -8
  67. package/layers/core/app/types/index.ts +5 -4
  68. package/layers/core/app/types/loading.ts +3 -3
  69. package/layers/core/app/types/runtime-config.ts +2 -2
  70. package/layers/core/app/types/scroll-guard.ts +2 -2
  71. package/layers/core/app/types/site.ts +43 -0
  72. package/layers/core/app/utils/helpers.ts +4 -0
  73. package/layers/core/nuxt.config.ts +1 -0
  74. package/layers/core/package.json +1 -1
  75. package/layers/feeds/app/app.config.ts +23 -0
  76. package/layers/feeds/app/assets/css/feeds.css +66 -0
  77. package/layers/feeds/app/plugins/feed-head.ts +73 -0
  78. package/layers/feeds/nuxt.config.ts +36 -0
  79. package/layers/feeds/package.json +23 -0
  80. package/layers/feeds/tsconfig.json +7 -0
  81. package/layers/forms/app/components/Form/Contact.vue +1 -0
  82. package/layers/forms/app/components/Form/Field.vue +70 -74
  83. package/layers/forms/app/composables/useFormSchema.ts +2 -0
  84. package/layers/forms/app/config/fields.ts +1 -0
  85. package/layers/forms/app/types/app-config.d.ts +1 -1
  86. package/layers/forms/app/types/fields.ts +1 -1
  87. package/layers/forms/nuxt.config.ts +4 -9
  88. package/layers/forms/package.json +4 -9
  89. package/layers/layout/app/assets/css/layout/grids.css +12 -12
  90. package/layers/layout/app/assets/css/layout/modes/fluid.css +10 -10
  91. package/layers/layout/app/components/Layout/Container.vue +34 -34
  92. package/layers/layout/app/components/Layout/Grid/Debug.vue +55 -55
  93. package/layers/layout/app/components/Layout/Grid/Item.vue +239 -231
  94. package/layers/layout/app/components/Layout/Main.vue +27 -23
  95. package/layers/layout/app/components/Layout/Page/Container.vue +71 -67
  96. package/layers/layout/app/components/Layout/Page/Header.vue +22 -21
  97. package/layers/layout/app/components/Layout/Page/index.vue +1 -0
  98. package/layers/layout/app/components/Layout/Section/Gallery.vue +49 -48
  99. package/layers/layout/app/components/Layout/Section/Grid.vue +29 -29
  100. package/layers/layout/app/components/Layout/Section/Hero.vue +31 -29
  101. package/layers/layout/app/components/Layout/Section/Sidebar.vue +48 -48
  102. package/layers/layout/app/components/Layout/Section/Split.vue +28 -28
  103. package/layers/layout/app/components/Layout/Section/Stack.vue +39 -37
  104. package/layers/layout/app/components/Layout/Section/Title.vue +21 -20
  105. package/layers/layout/app/composables/GridPlacement.ts +1 -1
  106. package/layers/layout/app/composables/useGridConfig.ts +2 -1
  107. package/layers/layout/app/types/app-config.d.ts +2 -1
  108. package/layers/layout/app/types/layouts.ts +4 -4
  109. package/layers/layout/nuxt.config.ts +4 -1
  110. package/layers/mailer/nuxt.config.ts +26 -0
  111. package/layers/mailer/package.json +15 -0
  112. package/layers/mailer/tsconfig.json +7 -0
  113. package/layers/motion/app/components/Motion/index.vue +5 -5
  114. package/layers/motion/nuxt.config.ts +6 -22
  115. package/layers/motion/package.json +0 -5
  116. package/layers/navigation/app/app.config.ts +38 -0
  117. package/layers/navigation/app/assets/css/navigation.css +3 -0
  118. package/layers/navigation/app/components/Links/Group.vue +49 -0
  119. package/layers/navigation/app/components/Links/Named.vue +33 -0
  120. package/layers/navigation/app/components/Mast/Footer.vue +13 -0
  121. package/layers/{ui → navigation}/app/components/Mast/Header.vue +2 -2
  122. package/layers/{ui → navigation}/app/components/Mast/Nav.vue +2 -2
  123. package/layers/navigation/app/components/Mast/NavModal.vue +76 -0
  124. package/layers/{ui → navigation}/app/composables/mastNav.ts +7 -4
  125. package/layers/{ui → navigation}/app/composables/toast.ts +1 -0
  126. package/layers/{ui → navigation}/app/composables/useSite.ts +1 -0
  127. package/layers/navigation/app/types/nav.ts +11 -0
  128. package/layers/{ui → navigation}/app/utils/createModal.ts +2 -1
  129. package/layers/navigation/nuxt.config.ts +19 -0
  130. package/layers/navigation/package.json +6 -0
  131. package/layers/navigation/tsconfig.json +7 -0
  132. package/layers/page-transitions/app/app.config.ts +15 -0
  133. package/layers/page-transitions/app/composables/usePageTransition.ts +32 -0
  134. package/layers/page-transitions/app/plugins/page-transitions.client.ts +14 -0
  135. package/layers/page-transitions/nuxt.config.ts +17 -0
  136. package/layers/page-transitions/package.json +6 -0
  137. package/layers/page-transitions/tsconfig.json +7 -0
  138. package/layers/routing/app/composables/{useFeatures.ts → useFeatureFlags.ts} +1 -1
  139. package/layers/routing/app/composables/useRoutingConfig.ts +5 -6
  140. package/layers/routing/app/middleware/01.maintenance.global.ts +1 -1
  141. package/layers/routing/app/middleware/02.governance.global.ts +2 -2
  142. package/layers/routing/app/plugins/feature-flags.client.ts +4 -4
  143. package/layers/routing/app/plugins/scroll-routing.client.ts +4 -3
  144. package/layers/routing/app/types/app-config.d.ts +2 -1
  145. package/layers/routing/app/types/route-meta.d.ts +1 -1
  146. package/layers/routing/app/types/routing.ts +5 -2
  147. package/layers/routing/app/utils/resolveRoute.ts +2 -2
  148. package/layers/routing/nuxt.config.ts +6 -2
  149. package/layers/scripts/app/app.config.ts +44 -0
  150. package/layers/scripts/app/composables/useAnalytics.ts +49 -0
  151. package/layers/scripts/app/composables/useGtm.ts +21 -0
  152. package/layers/scripts/app/composables/useScriptLoader.ts +31 -0
  153. package/layers/scripts/app/composables/useScriptsConsent.ts +23 -0
  154. package/layers/scripts/app/composables/useYoutubeEmbed.ts +14 -0
  155. package/layers/scripts/nuxt.config.ts +22 -0
  156. package/layers/scripts/package.json +14 -0
  157. package/layers/scripts/tsconfig.json +7 -0
  158. package/layers/{motion/app/types/app-config.d.ts → scroll/app/app.config.ts} +16 -1
  159. package/layers/scroll/app/components/Motion/HorizontalScroll.vue +61 -0
  160. package/layers/scroll/app/components/Motion/Parallax.vue +76 -0
  161. package/layers/scroll/app/components/Motion/PinnedSection.vue +77 -0
  162. package/layers/scroll/app/components/Motion/ScrollLink.vue +50 -0
  163. package/layers/scroll/app/components/Motion/ScrollProgress.vue +85 -0
  164. package/layers/scroll/app/components/Motion/ScrollScene.vue +121 -0
  165. package/layers/{motion → scroll}/app/components/Motion/ScrollStats.vue +51 -50
  166. package/layers/scroll/app/components/Motion/ScrollStep.vue +44 -0
  167. package/layers/{motion → scroll}/app/composables/useGsap.ts +0 -6
  168. package/layers/{motion → scroll}/app/composables/useScrollSteps.ts +2 -5
  169. package/layers/{motion → scroll}/app/composables/useSectionProgress.ts +14 -7
  170. package/layers/{motion → scroll}/app/composables/useSmoothScroll.ts +6 -37
  171. package/layers/{motion → scroll}/app/plugins/locomotive-scroll.client.ts +3 -2
  172. package/layers/scroll/nuxt.config.ts +33 -0
  173. package/layers/scroll/package.json +11 -0
  174. package/layers/scroll/tsconfig.json +7 -0
  175. package/layers/seo/app/app.config.ts +30 -0
  176. package/layers/seo/app/composables/useSeoConfig.ts +14 -0
  177. package/layers/seo/nuxt.config.ts +34 -0
  178. package/layers/seo/package.json +14 -0
  179. package/layers/seo/tsconfig.json +7 -0
  180. package/layers/shader/app/components/Effect/Bloom.vue +2 -2
  181. package/layers/shader/app/components/Effect/ChromaticAberration.vue +2 -2
  182. package/layers/shader/app/components/Effect/PostProcessing.vue +14 -10
  183. package/layers/shader/app/components/Material/AmbientAurora.client.vue +162 -158
  184. package/layers/shader/app/components/Material/AmbientFlow.client.vue +165 -161
  185. package/layers/shader/app/components/Material/AmbientGradientMesh.client.vue +179 -162
  186. package/layers/shader/app/components/Material/AmbientNebula.client.vue +167 -163
  187. package/layers/shader/app/components/Material/AmbientOcean.client.vue +154 -150
  188. package/layers/shader/app/components/Material/Fresnel.client.vue +78 -75
  189. package/layers/shader/app/components/Material/Gradient.client.vue +175 -173
  190. package/layers/shader/app/components/Material/Image.client.vue +228 -225
  191. package/layers/shader/app/components/Material/Node.client.vue +66 -63
  192. package/layers/shader/app/components/Material/Noise.client.vue +128 -124
  193. package/layers/shader/app/components/Mesh/Plane.vue +20 -18
  194. package/layers/shader/app/components/Node/Color.client.vue +47 -45
  195. package/layers/shader/app/components/Node/Fresnel.client.vue +47 -47
  196. package/layers/shader/app/components/Node/Gradient.client.vue +120 -70
  197. package/layers/shader/app/components/Node/Mix.client.vue +41 -39
  198. package/layers/shader/app/components/Node/Noise.client.vue +91 -83
  199. package/layers/shader/app/components/Pipeline/ACESTonemap.client.vue +7 -10
  200. package/layers/shader/app/components/Pipeline/AddBlend.client.vue +33 -19
  201. package/layers/shader/app/components/Pipeline/AgedFilm.client.vue +61 -40
  202. package/layers/shader/app/components/Pipeline/Aurora.client.vue +92 -56
  203. package/layers/shader/app/components/Pipeline/BilinearGradient.client.vue +65 -34
  204. package/layers/shader/app/components/Pipeline/BillowNoise.client.vue +56 -32
  205. package/layers/shader/app/components/Pipeline/BrightnessContrast.client.vue +36 -20
  206. package/layers/shader/app/components/Pipeline/CellularNoise.client.vue +55 -31
  207. package/layers/shader/app/components/Pipeline/ChannelMixer.client.vue +62 -34
  208. package/layers/shader/app/components/Pipeline/ChebyshevNoiseField.client.vue +77 -50
  209. package/layers/shader/app/components/Pipeline/Checkerboard.client.vue +50 -31
  210. package/layers/shader/app/components/Pipeline/ChromaticAberration.client.vue +49 -33
  211. package/layers/shader/app/components/Pipeline/ChromaticScreenWaves.client.vue +61 -36
  212. package/layers/shader/app/components/Pipeline/Circle.client.vue +53 -30
  213. package/layers/shader/app/components/Pipeline/Clouds.client.vue +86 -48
  214. package/layers/shader/app/components/Pipeline/ColorBurnBlend.client.vue +34 -19
  215. package/layers/shader/app/components/Pipeline/ColorDodgeBlend.client.vue +34 -19
  216. package/layers/shader/app/components/Pipeline/ColourRamp.client.vue +76 -46
  217. package/layers/shader/app/components/Pipeline/ComplexPlaneField.client.vue +80 -50
  218. package/layers/shader/app/components/Pipeline/ConicGradient.client.vue +46 -28
  219. package/layers/shader/app/components/Pipeline/CosinePalette.client.vue +80 -53
  220. package/layers/shader/app/components/Pipeline/CoverageAlpha.client.vue +12 -14
  221. package/layers/shader/app/components/Pipeline/Cross.client.vue +66 -37
  222. package/layers/shader/app/components/Pipeline/CurlNoise.client.vue +58 -35
  223. package/layers/shader/app/components/Pipeline/DarkenBlend.client.vue +34 -19
  224. package/layers/shader/app/components/Pipeline/DayNightCycle.client.vue +65 -39
  225. package/layers/shader/app/components/Pipeline/Desaturate.client.vue +23 -16
  226. package/layers/shader/app/components/Pipeline/DiagonalGradient.client.vue +50 -29
  227. package/layers/shader/app/components/Pipeline/DiamondGradient.client.vue +47 -29
  228. package/layers/shader/app/components/Pipeline/DifferenceBlend.client.vue +34 -19
  229. package/layers/shader/app/components/Pipeline/DivideBlend.client.vue +34 -19
  230. package/layers/shader/app/components/Pipeline/DomainWarpedNoise.client.vue +79 -37
  231. package/layers/shader/app/components/Pipeline/Dots.client.vue +70 -34
  232. package/layers/shader/app/components/Pipeline/DuoTone.client.vue +40 -26
  233. package/layers/shader/app/components/Pipeline/ExclusionBlend.client.vue +38 -19
  234. package/layers/shader/app/components/Pipeline/ExponentialFog.client.vue +52 -35
  235. package/layers/shader/app/components/Pipeline/Exposure.client.vue +22 -16
  236. package/layers/shader/app/components/Pipeline/FBMNoise.client.vue +62 -39
  237. package/layers/shader/app/components/Pipeline/FilmBurn.client.vue +60 -38
  238. package/layers/shader/app/components/Pipeline/FilmGrain.client.vue +53 -31
  239. package/layers/shader/app/components/Pipeline/FisheyeRay.client.vue +39 -28
  240. package/layers/shader/app/components/Pipeline/Flame.client.vue +59 -35
  241. package/layers/shader/app/components/Pipeline/FocalGradient.client.vue +56 -33
  242. package/layers/shader/app/components/Pipeline/Gamma.client.vue +21 -16
  243. package/layers/shader/app/components/Pipeline/GodRays.client.vue +76 -42
  244. package/layers/shader/app/components/Pipeline/GradientNoise.client.vue +57 -32
  245. package/layers/shader/app/components/Pipeline/Grain.client.vue +84 -47
  246. package/layers/shader/app/components/Pipeline/Grid.client.vue +56 -33
  247. package/layers/shader/app/components/Pipeline/Halation.client.vue +52 -34
  248. package/layers/shader/app/components/Pipeline/Halftone.client.vue +34 -23
  249. package/layers/shader/app/components/Pipeline/HardLightBlend.client.vue +33 -19
  250. package/layers/shader/app/components/Pipeline/Haze.client.vue +57 -36
  251. package/layers/shader/app/components/Pipeline/Hexagon.client.vue +54 -31
  252. package/layers/shader/app/components/Pipeline/Hue.client.vue +20 -16
  253. package/layers/shader/app/components/Pipeline/Invert.client.vue +6 -10
  254. package/layers/shader/app/components/Pipeline/LensFlare.client.vue +56 -37
  255. package/layers/shader/app/components/Pipeline/LightenBlend.client.vue +31 -19
  256. package/layers/shader/app/components/Pipeline/LinearGradient.client.vue +36 -28
  257. package/layers/shader/app/components/Pipeline/LinearGradient4.client.vue +65 -43
  258. package/layers/shader/app/components/Pipeline/LinearToSRGB.client.vue +26 -20
  259. package/layers/shader/app/components/Pipeline/Marble.client.vue +97 -57
  260. package/layers/shader/app/components/Pipeline/MixBlend.client.vue +45 -35
  261. package/layers/shader/app/components/Pipeline/MonochromeTint.client.vue +40 -25
  262. package/layers/shader/app/components/Pipeline/MultiplyBlend.client.vue +33 -19
  263. package/layers/shader/app/components/Pipeline/NoisyGradient.client.vue +83 -42
  264. package/layers/shader/app/components/Pipeline/NoisyGradientBlend.client.vue +141 -81
  265. package/layers/shader/app/components/Pipeline/OverlayBlend.client.vue +33 -19
  266. package/layers/shader/app/components/Pipeline/PaperTexture.client.vue +47 -30
  267. package/layers/shader/app/components/Pipeline/Polygon.client.vue +74 -37
  268. package/layers/shader/app/components/Pipeline/Posterise.client.vue +21 -16
  269. package/layers/shader/app/components/Pipeline/RadialGradient.client.vue +45 -30
  270. package/layers/shader/app/components/Pipeline/RayAutoOrbit.client.vue +43 -30
  271. package/layers/shader/app/components/Pipeline/RayMouseOrbit.client.vue +60 -47
  272. package/layers/shader/app/components/Pipeline/RayRotateX.client.vue +28 -20
  273. package/layers/shader/app/components/Pipeline/RayRotateY.client.vue +28 -20
  274. package/layers/shader/app/components/Pipeline/RayRotateZ.client.vue +28 -20
  275. package/layers/shader/app/components/Pipeline/RayTiltBasis.client.vue +55 -34
  276. package/layers/shader/app/components/Pipeline/RaymarchTunnel.client.vue +132 -88
  277. package/layers/shader/app/components/Pipeline/Rectangle.client.vue +78 -37
  278. package/layers/shader/app/components/Pipeline/ReinhardTonemap.client.vue +12 -14
  279. package/layers/shader/app/components/Pipeline/RidgedNoise.client.vue +54 -31
  280. package/layers/shader/app/components/Pipeline/Ring.client.vue +69 -34
  281. package/layers/shader/app/components/Pipeline/RingField.client.vue +63 -43
  282. package/layers/shader/app/components/Pipeline/RisographGrain.client.vue +66 -32
  283. package/layers/shader/app/components/Pipeline/RotatedGradientBlend.client.vue +73 -48
  284. package/layers/shader/app/components/Pipeline/SDFColourMask.client.vue +31 -25
  285. package/layers/shader/app/components/Pipeline/SDFRadialMask.client.vue +31 -21
  286. package/layers/shader/app/components/Pipeline/SRGBToLinear.client.vue +25 -20
  287. package/layers/shader/app/components/Pipeline/Saturation.client.vue +22 -16
  288. package/layers/shader/app/components/Pipeline/Scanlines.client.vue +42 -26
  289. package/layers/shader/app/components/Pipeline/ScreenBlend.client.vue +33 -19
  290. package/layers/shader/app/components/Pipeline/ShaderDebugger.client.vue +58 -45
  291. package/layers/shader/app/components/Pipeline/SimplexNoise.client.vue +59 -37
  292. package/layers/shader/app/components/Pipeline/SkyAtmosphere.client.vue +87 -54
  293. package/layers/shader/app/components/Pipeline/SoftLightBlend.client.vue +33 -19
  294. package/layers/shader/app/components/Pipeline/SolidColour.client.vue +24 -16
  295. package/layers/shader/app/components/Pipeline/SplitTone.client.vue +58 -34
  296. package/layers/shader/app/components/Pipeline/Star.client.vue +73 -37
  297. package/layers/shader/app/components/Pipeline/Starfield.client.vue +68 -34
  298. package/layers/shader/app/components/Pipeline/Stripes.client.vue +64 -36
  299. package/layers/shader/app/components/Pipeline/SubtractBlend.client.vue +33 -19
  300. package/layers/shader/app/components/Pipeline/TanhTonemap.client.vue +25 -19
  301. package/layers/shader/app/components/Pipeline/Threshold.client.vue +23 -17
  302. package/layers/shader/app/components/Pipeline/Tint.client.vue +36 -25
  303. package/layers/shader/app/components/Pipeline/Triangle.client.vue +54 -31
  304. package/layers/shader/app/components/Pipeline/UVAspectCorrect.client.vue +5 -10
  305. package/layers/shader/app/components/Pipeline/UVBreath.client.vue +44 -31
  306. package/layers/shader/app/components/Pipeline/UVBulge.client.vue +35 -21
  307. package/layers/shader/app/components/Pipeline/UVClamp.client.vue +14 -14
  308. package/layers/shader/app/components/Pipeline/UVColumnOffset.client.vue +36 -23
  309. package/layers/shader/app/components/Pipeline/UVFlipX.client.vue +6 -10
  310. package/layers/shader/app/components/Pipeline/UVFlipXY.client.vue +6 -10
  311. package/layers/shader/app/components/Pipeline/UVFlipY.client.vue +6 -10
  312. package/layers/shader/app/components/Pipeline/UVFractBand.client.vue +31 -21
  313. package/layers/shader/app/components/Pipeline/UVMousePull.client.vue +41 -33
  314. package/layers/shader/app/components/Pipeline/UVNoiseRotate.client.vue +65 -46
  315. package/layers/shader/app/components/Pipeline/UVNoiseWarp.client.vue +49 -30
  316. package/layers/shader/app/components/Pipeline/UVOrbit.client.vue +37 -29
  317. package/layers/shader/app/components/Pipeline/UVParallax.client.vue +41 -33
  318. package/layers/shader/app/components/Pipeline/UVPixelate.client.vue +21 -16
  319. package/layers/shader/app/components/Pipeline/UVPulse.client.vue +41 -28
  320. package/layers/shader/app/components/Pipeline/UVRipple.client.vue +53 -29
  321. package/layers/shader/app/components/Pipeline/UVRotate.client.vue +40 -32
  322. package/layers/shader/app/components/Pipeline/UVScale.client.vue +33 -25
  323. package/layers/shader/app/components/Pipeline/UVScroll.client.vue +26 -22
  324. package/layers/shader/app/components/Pipeline/UVScrollX.client.vue +20 -16
  325. package/layers/shader/app/components/Pipeline/UVScrollY.client.vue +20 -16
  326. package/layers/shader/app/components/Pipeline/UVShear.client.vue +33 -20
  327. package/layers/shader/app/components/Pipeline/UVSineWarpXY.client.vue +58 -40
  328. package/layers/shader/app/components/Pipeline/UVSwapAxes.client.vue +6 -10
  329. package/layers/shader/app/components/Pipeline/UVTile.client.vue +26 -22
  330. package/layers/shader/app/components/Pipeline/UVTwirl.client.vue +31 -21
  331. package/layers/shader/app/components/Pipeline/UVWarp.client.vue +44 -25
  332. package/layers/shader/app/components/Pipeline/VHSBleed.client.vue +63 -43
  333. package/layers/shader/app/components/Pipeline/ValueNoise.client.vue +57 -32
  334. package/layers/shader/app/components/Pipeline/Vibrance.client.vue +25 -19
  335. package/layers/shader/app/components/Pipeline/Vignette.client.vue +35 -24
  336. package/layers/shader/app/components/Pipeline/VoronoiEdges.client.vue +66 -38
  337. package/layers/shader/app/components/Pipeline/Water.client.vue +78 -39
  338. package/layers/shader/app/components/Pipeline/WaveBendLayer.client.vue +74 -46
  339. package/layers/shader/app/components/Pipeline/WaveColourLayer.client.vue +76 -43
  340. package/layers/shader/app/components/Pipeline/WhiteBalance.client.vue +38 -27
  341. package/layers/shader/app/components/Pipeline/Wood.client.vue +85 -50
  342. package/layers/shader/app/components/Preset/Aurora.client.vue +69 -52
  343. package/layers/shader/app/components/Preset/Flow.client.vue +63 -47
  344. package/layers/shader/app/components/Preset/GradientMesh.client.vue +63 -47
  345. package/layers/shader/app/components/Preset/Nebula.client.vue +65 -47
  346. package/layers/shader/app/components/Preset/Ocean.client.vue +64 -47
  347. package/layers/shader/app/components/Preset/ThemeAurora.client.vue +107 -70
  348. package/layers/shader/app/components/Preset/ThemeBubble.client.vue +108 -71
  349. package/layers/shader/app/components/Preset/ThemeFlow.client.vue +107 -70
  350. package/layers/shader/app/components/Preset/ThemeGradient.client.vue +108 -71
  351. package/layers/shader/app/components/Preset/ThemeLavaLamp.client.vue +107 -70
  352. package/layers/shader/app/components/Preset/ThemePlasma.client.vue +107 -70
  353. package/layers/shader/app/components/Preset/ThemeWave.client.vue +107 -70
  354. package/layers/shader/app/components/Shader/Background.client.vue +169 -163
  355. package/layers/shader/app/components/Shader/Debug.vue +45 -40
  356. package/layers/shader/app/components/Shader/Host.client.vue +120 -121
  357. package/layers/shader/app/components/Shader/Material.client.vue +42 -36
  358. package/layers/shader/app/components/Shader/Pipeline.client.vue +55 -46
  359. package/layers/shader/app/components/Shader/PipelineContext.vue +12 -12
  360. package/layers/shader/app/components/Shader/Runtime.client.vue +42 -37
  361. package/layers/shader/app/composables/useAmbientMaterials.ts +316 -105
  362. package/layers/shader/app/composables/useCSSColourUniform.ts +7 -6
  363. package/layers/shader/app/composables/useCSSFloatUniform.ts +4 -5
  364. package/layers/shader/app/composables/useMousePosition.ts +1 -1
  365. package/layers/shader/app/composables/useShader.ts +5 -3
  366. package/layers/shader/app/composables/useShaderColor.ts +8 -1
  367. package/layers/shader/app/composables/useShaderFloat.ts +3 -1
  368. package/layers/shader/app/composables/useShaderGraph.ts +6 -3
  369. package/layers/shader/app/composables/useShaderPerf.ts +2 -3
  370. package/layers/shader/app/composables/useShaderPipeline.ts +14 -6
  371. package/layers/shader/app/composables/useShaderRuntime.ts +7 -4
  372. package/layers/shader/app/composables/useShaderVec2.ts +4 -0
  373. package/layers/shader/app/composables/useSunDirectionUniform.ts +7 -6
  374. package/layers/shader/app/composables/useTSLNodes.ts +1 -0
  375. package/layers/shader/app/composables/useThemeColors.ts +14 -10
  376. package/layers/shader/app/composables/useUniforms.ts +5 -2
  377. package/layers/shader/app/plugins/shader.client.ts +3 -2
  378. package/layers/shader/app/shaders/common/blend.ts +3 -0
  379. package/layers/shader/app/shaders/common/complex.ts +4 -5
  380. package/layers/shader/app/shaders/common/effects.ts +10 -6
  381. package/layers/shader/app/shaders/common/grain.ts +4 -0
  382. package/layers/shader/app/shaders/common/lighting.ts +4 -1
  383. package/layers/shader/app/shaders/common/math.ts +3 -0
  384. package/layers/shader/app/shaders/common/noise.ts +7 -4
  385. package/layers/shader/app/shaders/common/noiseHelpers.ts +2 -0
  386. package/layers/shader/app/shaders/common/palette.ts +6 -1
  387. package/layers/shader/app/shaders/common/patterns.ts +7 -4
  388. package/layers/shader/app/shaders/common/sdf.ts +3 -1
  389. package/layers/shader/app/shaders/common/shapes.ts +3 -0
  390. package/layers/shader/app/shaders/common/tonemapping.ts +2 -0
  391. package/layers/shader/app/shaders/common/uv.ts +8 -1
  392. package/layers/shader/app/shaders/createMaterial.ts +6 -2
  393. package/layers/shader/app/shaders/layers/aurora.ts +6 -3
  394. package/layers/shader/app/shaders/layers/meshGradient.ts +6 -3
  395. package/layers/shader/app/shaders/layers/paperShading.ts +6 -2
  396. package/layers/shader/app/shaders/layers/shaderGradient.ts +5 -0
  397. package/layers/shader/app/shaders/layers/stripe.ts +6 -3
  398. package/layers/shader/app/shaders/types.ts +1 -0
  399. package/layers/shader/app/types/app-config.d.ts +1 -1
  400. package/layers/shader/app/types/index.ts +4 -4
  401. package/layers/shader/app/types/materials.ts +5 -4
  402. package/layers/shader/app/types/renderer.ts +1 -50
  403. package/layers/shader/app/types/tsl.ts +4 -3
  404. package/layers/shader/app/types/uniforms.ts +3 -2
  405. package/layers/shader/app/utils/tsl/animation.ts +2 -0
  406. package/layers/shader/app/utils/tsl/color.ts +5 -2
  407. package/layers/shader/app/utils/tsl/math.ts +1 -0
  408. package/layers/shader/app/utils/tsl/noise.ts +2 -0
  409. package/layers/shader/app/utils/tsl/oklch.ts +2 -0
  410. package/layers/shader/app/utils/tsl/patterns.ts +2 -0
  411. package/layers/shader/app/utils/tsl/tween.ts +4 -2
  412. package/layers/shader/app/utils/tsl/uv.ts +2 -0
  413. package/layers/shader/nuxt.config.ts +8 -115
  414. package/layers/shader/package.json +3 -9
  415. package/layers/theme/app/assets/css/theme.css +2 -2
  416. package/layers/theme/app/components/ThemePicker/AccentButton.vue +32 -30
  417. package/layers/theme/app/components/ThemePicker/Colors.vue +6 -5
  418. package/layers/theme/app/components/ThemePicker/Menu.vue +23 -23
  419. package/layers/theme/app/composables/useAccentColor.ts +2 -1
  420. package/layers/theme/app/composables/useThemeContrast.ts +1 -1
  421. package/layers/theme/app/composables/useThemeMotion.ts +1 -1
  422. package/layers/theme/app/composables/useThemeTransparency.ts +1 -4
  423. package/layers/theme/app/plugins/theme.client.ts +33 -15
  424. package/layers/theme/app/types/app-config.d.ts +3 -2
  425. package/layers/theme/app/types/theme.ts +1 -1
  426. package/layers/theme/nuxt.config.ts +4 -1
  427. package/layers/transitions/app/components/Motion/Transition.vue +76 -0
  428. package/layers/transitions/nuxt.config.ts +19 -0
  429. package/layers/transitions/package.json +6 -0
  430. package/layers/transitions/tsconfig.json +7 -0
  431. package/layers/typography/app/components/Typography/CodeBlock.vue +44 -0
  432. package/layers/typography/app/components/Typography/Headline.vue +90 -0
  433. package/layers/typography/app/components/Typography/HeadlineScreen.vue +75 -0
  434. package/layers/typography/app/components/Typography/QuoteBlock.vue +21 -0
  435. package/layers/{ui → typography}/app/components/Typography/TextStroke.vue +33 -32
  436. package/layers/typography/app/components/Typography/index.vue +54 -0
  437. package/layers/{ui → typography}/app/composables/typography.ts +1 -0
  438. package/layers/{ui → typography}/app/types/typography.ts +1 -1
  439. package/layers/typography/nuxt.config.ts +17 -0
  440. package/layers/typography/package.json +6 -0
  441. package/layers/typography/tsconfig.json +7 -0
  442. package/layers/ui/app/assets/css/ui.css +0 -20
  443. package/layers/ui/nuxt.config.ts +5 -21
  444. package/layers/visual/app/app.config.ts +115 -0
  445. package/layers/visual/app/assets/css/visual.css +15 -0
  446. package/layers/visual/app/components/Accent/Blob.vue +32 -0
  447. package/layers/{ui → visual}/app/components/Accent/Scene.vue +26 -23
  448. package/layers/visual/app/components/Base/Modal.vue +123 -0
  449. package/layers/visual/app/components/Gradient/Background.vue +24 -0
  450. package/layers/visual/app/components/Gradient/Text.vue +24 -0
  451. package/layers/visual/app/components/Media/Picture.vue +51 -0
  452. package/layers/visual/app/components/Progress/Bar.vue +36 -0
  453. package/layers/{ui → visual}/app/components/Progress/Circular.vue +26 -25
  454. package/layers/visual/app/components/Tint/Overlay.vue +27 -0
  455. package/layers/{ui → visual}/app/composables/accent.ts +1 -0
  456. package/layers/{ui → visual}/app/composables/gradient.ts +3 -0
  457. package/layers/{ui → visual}/app/composables/picture.ts +2 -0
  458. package/layers/{ui → visual}/app/composables/tint.ts +3 -2
  459. package/layers/{ui → visual}/app/types/accent.ts +2 -2
  460. package/layers/{ui → visual}/app/types/gradient.ts +2 -2
  461. package/layers/{ui → visual}/app/types/media.ts +4 -3
  462. package/layers/{ui → visual}/app/types/tint.ts +1 -1
  463. package/layers/visual/nuxt.config.ts +19 -0
  464. package/layers/visual/package.json +6 -0
  465. package/layers/visual/tsconfig.json +7 -0
  466. package/package.json +29 -4
  467. package/layers/motion/app/app.config.ts +0 -27
  468. package/layers/motion/app/components/Motion/HorizontalScroll.vue +0 -61
  469. package/layers/motion/app/components/Motion/Parallax.vue +0 -75
  470. package/layers/motion/app/components/Motion/PinnedSection.vue +0 -77
  471. package/layers/motion/app/components/Motion/ScrollLink.vue +0 -49
  472. package/layers/motion/app/components/Motion/ScrollProgress.vue +0 -82
  473. package/layers/motion/app/components/Motion/ScrollScene.vue +0 -121
  474. package/layers/motion/app/components/Motion/ScrollStep.vue +0 -45
  475. package/layers/motion/app/components/Motion/Transition.vue +0 -76
  476. package/layers/shader/app/components/Shader/Canvas.vue +0 -121
  477. package/layers/ui/app/app.config.ts +0 -57
  478. package/layers/ui/app/components/Accent/Blob.vue +0 -29
  479. package/layers/ui/app/components/Base/Modal.vue +0 -111
  480. package/layers/ui/app/components/Gradient/Background.vue +0 -22
  481. package/layers/ui/app/components/Gradient/Text.vue +0 -22
  482. package/layers/ui/app/components/Links/Group.vue +0 -47
  483. package/layers/ui/app/components/Links/Named.vue +0 -31
  484. package/layers/ui/app/components/Mast/Footer.vue +0 -15
  485. package/layers/ui/app/components/Mast/NavModal.vue +0 -72
  486. package/layers/ui/app/components/Media/Picture.vue +0 -50
  487. package/layers/ui/app/components/Progress/Bar.vue +0 -35
  488. package/layers/ui/app/components/Tint/Overlay.vue +0 -25
  489. package/layers/ui/app/components/Typography/CodeBlock.vue +0 -42
  490. package/layers/ui/app/components/Typography/Headline.vue +0 -88
  491. package/layers/ui/app/components/Typography/HeadlineScreen.vue +0 -77
  492. package/layers/ui/app/components/Typography/QuoteBlock.vue +0 -20
  493. package/layers/ui/app/components/Typography/index.vue +0 -52
  494. package/layers/ui/app/types/app-config.d.ts +0 -22
  495. package/layers/ui/app/types/nav.ts +0 -5
  496. /package/layers/{motion → animations}/app/components/Motion/CountUp.vue +0 -0
  497. /package/layers/{motion → animations}/app/components/Motion/Cursor.vue +0 -0
  498. /package/layers/{motion → animations}/app/components/Motion/Magnetic.vue +0 -0
  499. /package/layers/{motion → animations}/app/components/Motion/Marquee.vue +0 -0
  500. /package/layers/{motion → animations}/app/components/Motion/MarqueeText.vue +0 -0
  501. /package/layers/{motion → animations}/app/components/Motion/Staggered.vue +0 -0
  502. /package/layers/{motion → animations}/app/components/Motion/TextReveal.vue +0 -0
  503. /package/layers/{motion → animations}/app/components/Motion/Tilt.vue +0 -0
  504. /package/layers/{motion → animations}/app/components/Motion/VelocityEffect.vue +0 -0
  505. /package/layers/{motion → animations}/app/composables/useCountUp.ts +0 -0
  506. /package/layers/{motion → animations}/app/composables/useCursorFollower.ts +0 -0
  507. /package/layers/{motion → animations}/app/composables/useMagneticElement.ts +0 -0
  508. /package/layers/{motion → animations}/app/composables/useMarqueeCopies.ts +0 -0
  509. /package/layers/{motion → animations}/app/composables/useMarqueeVelocity.ts +0 -0
  510. /package/layers/{motion → animations}/app/composables/useTiltEffect.ts +0 -0
  511. /package/layers/{ui → navigation}/app/components/Mast/Main.vue +0 -0
  512. /package/layers/{ui → navigation}/app/components/Site/Subtitle.vue +0 -0
  513. /package/layers/{ui → navigation}/app/components/Site/Title.vue +0 -0
  514. /package/layers/{ui → navigation}/app/utils/regex.ts +0 -0
  515. /package/layers/{motion/app/assets/css/motion.css → transitions/app/assets/css/transitions.css} +0 -0
  516. /package/layers/{ui → typography}/app/composables/color.ts +0 -0
  517. /package/layers/{ui → typography}/app/types/colors.ts +0 -0
  518. /package/layers/{ui → visual}/app/types/breakpoints.ts +0 -0
@@ -1,75 +1,78 @@
1
+ <!-- eslint-disable vue/no-boolean-default vue/no-duplicate-attr-inheritance -->
2
+ <!-- eslint-disable vue/no-duplicate-attr-inheritance -->
3
+ <!-- eslint-disable vue/require-default-prop -->
1
4
  <script setup lang="ts">
2
- /**
3
- * PageContainer - Unified page wrapper component
4
- *
5
- * Integrates with the Swiss Grid System and optionally supports UPage layout.
6
- * Manages page metadata via useHead() and provides title redundancy.
7
- *
8
- * @prop {string} title - Page title (required) - sets <title> and displays in header
9
- * @prop {string} description - Optional meta description for SEO
10
- * @prop {boolean} showHeader - Show visible page header (default: true)
11
- * @prop {string} headerPreset - Grid preset for header: 'hero', 'centered', 'fullWidth' (default: 'centered')
12
- * @prop {string} layout - Layout mode: 'grid' | 'upage' (default: 'grid')
13
- *
14
- * @example
15
- * <!-- Simple centered page -->
16
- * <PageContainer title="About" description="Learn about our company">
17
- * <LayoutSection>
18
- * <LayoutGridItem preset="centered">
19
- * <p>Content here</p>
20
- * </LayoutGridItem>
21
- * </LayoutSection>
22
- * </PageContainer>
23
- *
24
- * @example
25
- * <!-- Hero page with custom grid (no visible header) -->
26
- * <PageContainer title="Welcome" :show-header="false" description="Welcome page">
27
- * <LayoutSectionHero full-height>
28
- * <h1>{{ title }}</h1>
29
- * </LayoutSectionHero>
30
- * </PageContainer>
31
- *
32
- * @example
33
- * <!-- Documentation-style with UPage -->
34
- * <PageContainer title="Documentation" layout="upage">
35
- * <UPageBody>
36
- * <p>Documentation content</p>
37
- * </UPageBody>
38
- * </PageContainer>
39
- */
5
+ /**
6
+ * PageContainer - Unified page wrapper component
7
+ *
8
+ * Integrates with the Swiss Grid System and optionally supports UPage layout.
9
+ * Manages page metadata via useHead() and provides title redundancy.
10
+ *
11
+ * @prop {string} title - Page title (required) - sets <title> and displays in header
12
+ * @prop {string} description - Optional meta description for SEO
13
+ * @prop {boolean} showHeader - Show visible page header (default: true)
14
+ * @prop {string} headerPreset - Grid preset for header: 'hero', 'centered', 'fullWidth' (default: 'centered')
15
+ * @prop {string} layout - Layout mode: 'grid' | 'upage' (default: 'grid')
16
+ *
17
+ * @example
18
+ * <!-- Simple centered page -->
19
+ * <PageContainer title="About" description="Learn about our company">
20
+ * <LayoutSection>
21
+ * <LayoutGridItem preset="centered">
22
+ * <p>Content here</p>
23
+ * </LayoutGridItem>
24
+ * </LayoutSection>
25
+ * </PageContainer>
26
+ *
27
+ * @example
28
+ * <!-- Hero page with custom grid (no visible header) -->
29
+ * <PageContainer title="Welcome" :show-header="false" description="Welcome page">
30
+ * <LayoutSectionHero full-height>
31
+ * <h1>{{ title }}</h1>
32
+ * </LayoutSectionHero>
33
+ * </PageContainer>
34
+ *
35
+ * @example
36
+ * <!-- Documentation-style with UPage -->
37
+ * <PageContainer title="Documentation" layout="upage">
38
+ * <UPageBody>
39
+ * <p>Documentation content</p>
40
+ * </UPageBody>
41
+ * </PageContainer>
42
+ */
40
43
 
41
- interface Props {
42
- title: string
43
- description?: string
44
- showHeader?: boolean
45
- headerPreset?: string
46
- layout?: 'grid' | 'upage'
47
- back?: string
48
- }
44
+ interface Props {
45
+ title: string
46
+ description?: string
47
+ showHeader?: boolean
48
+ headerPreset?: string
49
+ layout?: 'grid' | 'upage'
50
+ back?: string
51
+ }
49
52
 
50
- const {
51
- title,
52
- description,
53
- showHeader = true,
54
- headerPreset = 'centered',
55
- layout = 'grid',
56
- back,
57
- } = defineProps<Props>()
53
+ const {
54
+ title,
55
+ description,
56
+ showHeader = true,
57
+ headerPreset = 'centered',
58
+ layout = 'grid',
59
+ back,
60
+ } = defineProps<Props>()
58
61
 
59
- // Set page metadata for SEO and browser tab
60
- useHead({
61
- title,
62
- meta: description
63
- ? [
64
- { name: 'description', content: description },
65
- { property: 'og:title', content: title },
66
- { property: 'og:description', content: description },
67
- ]
68
- : undefined,
69
- })
62
+ // Set page metadata for SEO and browser tab
63
+ useHead({
64
+ title,
65
+ meta: description
66
+ ? [
67
+ { name: 'description', content: description },
68
+ { property: 'og:title', content: title },
69
+ { property: 'og:description', content: description },
70
+ ]
71
+ : undefined,
72
+ })
70
73
 
71
- // Provide title to child components (e.g., for breadcrumbs, schema.org)
72
- provide('pageTitle', title)
74
+ // Provide title to child components (e.g., for breadcrumbs, schema.org)
75
+ provide('pageTitle', title)
73
76
  </script>
74
77
 
75
78
  <template>
@@ -95,6 +98,7 @@ provide('pageTitle', title)
95
98
  <!-- UPage Layout Mode - needs wrapper with MastMain -->
96
99
  <div v-else>
97
100
  <MastMain>
101
+ <!-- eslint-disable-next-line vue/no-duplicate-attr-inheritance -->
98
102
  <UPage v-bind="$attrs">
99
103
  <slot />
100
104
  </UPage>
@@ -1,27 +1,28 @@
1
+ <!-- eslint-disable vue/define-props-destructuring -->
1
2
  <script setup lang="ts">
2
- /**
3
- * PageHeader - Standard page header component
4
- *
5
- * Displays a centered page title and optional description with consistent spacing.
6
- * Used by PageContainer for visible page headers.
7
- *
8
- * @prop {string} title - Page title (displays as h1)
9
- * @prop {string} description - Optional page description
10
- *
11
- * @example
12
- * <LayoutPageHeader
13
- * title="About Us"
14
- * description="Learn about our company and mission"
15
- * />
16
- */
3
+ /**
4
+ * PageHeader - Standard page header component
5
+ *
6
+ * Displays a centered page title and optional description with consistent spacing.
7
+ * Used by PageContainer for visible page headers.
8
+ *
9
+ * @prop {string} title - Page title (displays as h1)
10
+ * @prop {string} description - Optional page description
11
+ *
12
+ * @example
13
+ * <LayoutPageHeader
14
+ * title="About Us"
15
+ * description="Learn about our company and mission"
16
+ * />
17
+ */
17
18
 
18
- interface Props {
19
- title: string
20
- description?: string
21
- back?: string
22
- }
19
+ interface Props {
20
+ title: string
21
+ description?: string
22
+ back?: string
23
+ }
23
24
 
24
- defineProps<Props>()
25
+ defineProps<Props>()
25
26
  </script>
26
27
 
27
28
  <template>
@@ -1,3 +1,4 @@
1
+ <!-- eslint-disable vue/require-default-prop -->
1
2
  <script setup lang="ts">
2
3
  /**
3
4
  * LayoutPage — canonical page wrapper for the Swiss Grid System.
@@ -1,57 +1,58 @@
1
+ <!-- eslint-disable vue/require-default-prop -->
1
2
  <script setup lang="ts" generic="T">
2
- /**
3
- * SectionGallery - Auto-placing grid for collections
4
- *
5
- * Creates an evenly-distributed gallery layout with auto-placing grid items.
6
- * Items flow automatically based on the specified column count.
7
- *
8
- * @prop {T[]} items - Array of items to render (required)
9
- * @prop {2 | 3 | 4 | 6} columns - Number of columns (default: 3)
10
- * @prop {number} itemRowSpan - Rows per item (default: 4)
11
- * @prop {boolean} fullHeight - Force 100svh (default: false)
12
- *
13
- * @slot item - Template for each item
14
- * @param {T} item - The current item
15
- * @param {number} index - Item index
16
- *
17
- * @example
18
- * <SectionGallery :items="images" :columns="3" :item-row-span="4">
19
- * <template #item="{ item, index }">
20
- * <NuxtImg :src="item.src" class="size-full object-cover" />
21
- * </template>
22
- * </SectionGallery>
23
- */
3
+ /**
4
+ * SectionGallery - Auto-placing grid for collections
5
+ *
6
+ * Creates an evenly-distributed gallery layout with auto-placing grid items.
7
+ * Items flow automatically based on the specified column count.
8
+ *
9
+ * @prop {T[]} items - Array of items to render (required)
10
+ * @prop {2 | 3 | 4 | 6} columns - Number of columns (default: 3)
11
+ * @prop {number} itemRowSpan - Rows per item (default: 4)
12
+ * @prop {boolean} fullHeight - Force 100svh (default: false)
13
+ *
14
+ * @slot item - Template for each item
15
+ * @param {T} item - The current item
16
+ * @param {number} index - Item index
17
+ *
18
+ * @example
19
+ * <SectionGallery :items="images" :columns="3" :item-row-span="4">
20
+ * <template #item="{ item, index }">
21
+ * <NuxtImg :src="item.src" class="size-full object-cover" />
22
+ * </template>
23
+ * </SectionGallery>
24
+ */
24
25
 
25
- interface Props<T> {
26
- items?: T[]
27
- columns?: 2 | 3 | 4 | 6
28
- itemRowSpan?: number
29
- fullHeight?: boolean
30
- }
26
+ interface Props<T> {
27
+ items?: T[]
28
+ columns?: 2 | 3 | 4 | 6
29
+ itemRowSpan?: number
30
+ fullHeight?: boolean
31
+ }
31
32
 
32
- const { items, columns = 3, itemRowSpan = 4, fullHeight = false } = defineProps<Props<T>>()
33
+ const { items, columns = 3, itemRowSpan = 4, fullHeight = false } = defineProps<Props<T>>()
33
34
 
34
- // Responsive column spans that work across 6/12/18 column grids
35
- const columnSpan = computed(() => {
36
- // On mobile (6 cols): Always 1 column (full width)
37
- // On tablet (12 cols): 2 columns max
38
- // On desktop (18 cols): Use requested columns
35
+ // Responsive column spans that work across 6/12/18 column grids
36
+ const columnSpan = computed(() => {
37
+ // On mobile (6 cols): Always 1 column (full width)
38
+ // On tablet (12 cols): 2 columns max
39
+ // On desktop (18 cols): Use requested columns
39
40
 
40
- if (columns === 2) {
41
- return { default: 6, md: 6, lg: 9 } // 1 col mobile, 2 cols tablet, 2 cols desktop
42
- }
43
- if (columns === 3) {
44
- return { default: 6, md: 6, lg: 6 } // 1 col mobile, 2 cols tablet, 3 cols desktop
45
- }
46
- if (columns === 4) {
47
- return { default: 6, md: 6, lg: 4 } // 1 col mobile, 2 cols tablet, 4-5 cols desktop
48
- }
49
- if (columns === 6) {
50
- return { default: 6, md: 4, lg: 3 } // 1 col mobile, 3 cols tablet, 6 cols desktop
51
- }
41
+ if (columns === 2) {
42
+ return { default: 6, md: 6, lg: 9 } // 1 col mobile, 2 cols tablet, 2 cols desktop
43
+ }
44
+ if (columns === 3) {
45
+ return { default: 6, md: 6, lg: 6 } // 1 col mobile, 2 cols tablet, 3 cols desktop
46
+ }
47
+ if (columns === 4) {
48
+ return { default: 6, md: 6, lg: 4 } // 1 col mobile, 2 cols tablet, 4-5 cols desktop
49
+ }
50
+ if (columns === 6) {
51
+ return { default: 6, md: 4, lg: 3 } // 1 col mobile, 3 cols tablet, 6 cols desktop
52
+ }
52
53
 
53
- return { default: 6, md: 6, lg: 6 }
54
- })
54
+ return { default: 6, md: 6, lg: 6 }
55
+ })
55
56
  </script>
56
57
 
57
58
  <template>
@@ -1,29 +1,29 @@
1
1
  <script setup lang="ts">
2
- /**
3
- * LayoutSectionGrid — RAM (Repeat Auto Minmax) pattern
4
- *
5
- * Auto-wrapping grid that fits as many columns as possible at `minItemWidth`
6
- * without media queries. Uses `repeat(auto-fit, minmax(..., 1fr))`.
7
- *
8
- * @prop {string} minItemWidth - Minimum column width before wrapping (default: '200px')
9
- * @prop {boolean} fullHeight - Force 100svh on the section (default: false)
10
- *
11
- * @slot default - Grid items
12
- *
13
- * @example
14
- * <LayoutSectionGrid min-item-width="250px">
15
- * <div>Card 1</div>
16
- * <div>Card 2</div>
17
- * <div>Card 3</div>
18
- * </LayoutSectionGrid>
19
- */
2
+ /**
3
+ * LayoutSectionGrid — RAM (Repeat Auto Minmax) pattern
4
+ *
5
+ * Auto-wrapping grid that fits as many columns as possible at `minItemWidth`
6
+ * without media queries. Uses `repeat(auto-fit, minmax(..., 1fr))`.
7
+ *
8
+ * @prop {string} minItemWidth - Minimum column width before wrapping (default: '200px')
9
+ * @prop {boolean} fullHeight - Force 100svh on the section (default: false)
10
+ *
11
+ * @slot default - Grid items
12
+ *
13
+ * @example
14
+ * <LayoutSectionGrid min-item-width="250px">
15
+ * <div>Card 1</div>
16
+ * <div>Card 2</div>
17
+ * <div>Card 3</div>
18
+ * </LayoutSectionGrid>
19
+ */
20
20
 
21
- interface Props {
22
- minItemWidth?: string
23
- fullHeight?: boolean
24
- }
21
+ interface Props {
22
+ minItemWidth?: string
23
+ fullHeight?: boolean
24
+ }
25
25
 
26
- const { minItemWidth = '200px', fullHeight = false } = defineProps<Props>()
26
+ const { minItemWidth = '200px', fullHeight = false } = defineProps<Props>()
27
27
  </script>
28
28
 
29
29
  <template>
@@ -37,10 +37,10 @@ const { minItemWidth = '200px', fullHeight = false } = defineProps<Props>()
37
37
  </template>
38
38
 
39
39
  <style scoped>
40
- .ram-grid {
41
- display: grid;
42
- grid-template-columns: repeat(auto-fit, minmax(var(--min-item-width, 200px), 1fr));
43
- gap: var(--grid-gap, clamp(0.75rem, 1.5vw, 1.5rem));
44
- width: 100%;
45
- }
40
+ .ram-grid {
41
+ display: grid;
42
+ grid-template-columns: repeat(auto-fit, minmax(var(--min-item-width, 200px), 1fr));
43
+ gap: var(--grid-gap, clamp(0.75rem, 1.5vw, 1.5rem));
44
+ width: 100%;
45
+ }
46
46
  </style>
@@ -1,35 +1,37 @@
1
+ <!-- eslint-disable vue/no-boolean-default -->
2
+ <!-- eslint-disable @typescript-eslint/ban-ts-comment -->
1
3
  <script setup lang="ts">
2
- // @ts-nocheck
3
- /**
4
- * SectionHero - Full-viewport hero section
5
- *
6
- * Pre-configured hero layout with optional background and footer slots.
7
- * Main content is vertically and horizontally centered.
8
- *
9
- * @prop {boolean} fullHeight - Force 100svh (default: true)
10
- *
11
- * @slot background - Full-bleed background layer (z-index: 0)
12
- * @slot default - Main centered content (z-index: 10)
13
- * @slot footer - Bottom-aligned content (z-index: 10)
14
- *
15
- * @example
16
- * <SectionHero>
17
- * <template #background>
18
- * <NuxtImg src="/hero.jpg" class="size-full object-cover" />
19
- * </template>
20
- * <h1>Main Heading</h1>
21
- * <p>Subtitle</p>
22
- * <template #footer>
23
- * <UButton>CTA</UButton>
24
- * </template>
25
- * </SectionHero>
26
- */
4
+ // @ts-nocheck
5
+ /**
6
+ * SectionHero - Full-viewport hero section
7
+ *
8
+ * Pre-configured hero layout with optional background and footer slots.
9
+ * Main content is vertically and horizontally centered.
10
+ *
11
+ * @prop {boolean} fullHeight - Force 100svh (default: true)
12
+ *
13
+ * @slot background - Full-bleed background layer (z-index: 0)
14
+ * @slot default - Main centered content (z-index: 10)
15
+ * @slot footer - Bottom-aligned content (z-index: 10)
16
+ *
17
+ * @example
18
+ * <SectionHero>
19
+ * <template #background>
20
+ * <NuxtImg src="/hero.jpg" class="size-full object-cover" />
21
+ * </template>
22
+ * <h1>Main Heading</h1>
23
+ * <p>Subtitle</p>
24
+ * <template #footer>
25
+ * <UButton>CTA</UButton>
26
+ * </template>
27
+ * </SectionHero>
28
+ */
27
29
 
28
- interface Props {
29
- fullHeight?: boolean
30
- }
30
+ interface Props {
31
+ fullHeight?: boolean
32
+ }
31
33
 
32
- const { fullHeight = true } = defineProps<Props>()
34
+ const { fullHeight = true } = defineProps<Props>()
33
35
  </script>
34
36
 
35
37
  <template>
@@ -1,38 +1,38 @@
1
1
  <script setup lang="ts">
2
- /**
3
- * LayoutSectionSidebar — Sidebar Says layout
4
- *
5
- * Two-column layout where the sidebar takes a clamped width and main content
6
- * fills the rest. Uses `minmax(min, max) 1fr` (or reversed for right sidebar).
7
- *
8
- * @prop {string} sidebarMin - Minimum sidebar width (default: '150px')
9
- * @prop {string} sidebarMax - Maximum sidebar width (default: '25%')
10
- * @prop {boolean} reverse - Put sidebar on the right (default: false)
11
- * @prop {boolean} fullHeight - Force 100svh on the section (default: false)
12
- *
13
- * @slot sidebar - Sidebar content
14
- * @slot default - Main content (fills remaining space)
15
- *
16
- * @example
17
- * <LayoutSectionSidebar sidebar-max="20rem">
18
- * <template #sidebar><nav>...</nav></template>
19
- * <article>Main content</article>
20
- * </LayoutSectionSidebar>
21
- */
2
+ /**
3
+ * LayoutSectionSidebar — Sidebar Says layout
4
+ *
5
+ * Two-column layout where the sidebar takes a clamped width and main content
6
+ * fills the rest. Uses `minmax(min, max) 1fr` (or reversed for right sidebar).
7
+ *
8
+ * @prop {string} sidebarMin - Minimum sidebar width (default: '150px')
9
+ * @prop {string} sidebarMax - Maximum sidebar width (default: '25%')
10
+ * @prop {boolean} reverse - Put sidebar on the right (default: false)
11
+ * @prop {boolean} fullHeight - Force 100svh on the section (default: false)
12
+ *
13
+ * @slot sidebar - Sidebar content
14
+ * @slot default - Main content (fills remaining space)
15
+ *
16
+ * @example
17
+ * <LayoutSectionSidebar sidebar-max="20rem">
18
+ * <template #sidebar><nav>...</nav></template>
19
+ * <article>Main content</article>
20
+ * </LayoutSectionSidebar>
21
+ */
22
22
 
23
- interface Props {
24
- sidebarMin?: string
25
- sidebarMax?: string
26
- reverse?: boolean
27
- fullHeight?: boolean
28
- }
23
+ interface Props {
24
+ sidebarMin?: string
25
+ sidebarMax?: string
26
+ reverse?: boolean
27
+ fullHeight?: boolean
28
+ }
29
29
 
30
- const {
31
- sidebarMin = '150px',
32
- sidebarMax = '25%',
33
- reverse = false,
34
- fullHeight = false,
35
- } = defineProps<Props>()
30
+ const {
31
+ sidebarMin = '150px',
32
+ sidebarMax = '25%',
33
+ reverse = false,
34
+ fullHeight = false,
35
+ } = defineProps<Props>()
36
36
  </script>
37
37
 
38
38
  <template>
@@ -55,23 +55,23 @@ const {
55
55
  </template>
56
56
 
57
57
  <style scoped>
58
- .sidebar-inner {
59
- display: grid;
60
- grid-template-columns: minmax(var(--sidebar-min, 150px), var(--sidebar-max, 25%)) 1fr;
61
- gap: var(--grid-gap, clamp(0.75rem, 1.5vw, 1.5rem));
62
- width: 100%;
63
- height: 100%;
64
- }
58
+ .sidebar-inner {
59
+ display: grid;
60
+ grid-template-columns: minmax(var(--sidebar-min, 150px), var(--sidebar-max, 25%)) 1fr;
61
+ gap: var(--grid-gap, clamp(0.75rem, 1.5vw, 1.5rem));
62
+ width: 100%;
63
+ height: 100%;
64
+ }
65
65
 
66
- .sidebar-inner.sidebar-reverse {
67
- grid-template-columns: 1fr minmax(var(--sidebar-min, 150px), var(--sidebar-max, 25%));
68
- }
66
+ .sidebar-inner.sidebar-reverse {
67
+ grid-template-columns: 1fr minmax(var(--sidebar-min, 150px), var(--sidebar-max, 25%));
68
+ }
69
69
 
70
- .sidebar-inner.sidebar-reverse .sidebar-aside {
71
- order: 2;
72
- }
70
+ .sidebar-inner.sidebar-reverse .sidebar-aside {
71
+ order: 2;
72
+ }
73
73
 
74
- .sidebar-inner.sidebar-reverse .sidebar-main {
75
- order: 1;
76
- }
74
+ .sidebar-inner.sidebar-reverse .sidebar-main {
75
+ order: 1;
76
+ }
77
77
  </style>
@@ -1,34 +1,34 @@
1
1
  <script setup lang="ts">
2
- /**
3
- * SectionSplit - Two-column layout section
4
- *
5
- * Creates a balanced two-column layout with optional column reversal on mobile.
6
- * Each column spans 9 columns (half of 18-column grid).
7
- *
8
- * @prop {boolean} fullHeight - Force 100svh (default: false)
9
- * @prop {boolean} reverse - Swap column order on mobile (default: false)
10
- *
11
- * @slot left - Left column content (stacks first on mobile unless reverse=true)
12
- * @slot right - Right column content (stacks second on mobile unless reverse=true)
13
- *
14
- * @example
15
- * <SectionSplit reverse>
16
- * <template #left>
17
- * <NuxtImg src="/image.jpg" class="size-full object-cover" />
18
- * </template>
19
- * <template #right>
20
- * <h2>Content</h2>
21
- * <p>Description...</p>
22
- * </template>
23
- * </SectionSplit>
24
- */
2
+ /**
3
+ * SectionSplit - Two-column layout section
4
+ *
5
+ * Creates a balanced two-column layout with optional column reversal on mobile.
6
+ * Each column spans 9 columns (half of 18-column grid).
7
+ *
8
+ * @prop {boolean} fullHeight - Force 100svh (default: false)
9
+ * @prop {boolean} reverse - Swap column order on mobile (default: false)
10
+ *
11
+ * @slot left - Left column content (stacks first on mobile unless reverse=true)
12
+ * @slot right - Right column content (stacks second on mobile unless reverse=true)
13
+ *
14
+ * @example
15
+ * <SectionSplit reverse>
16
+ * <template #left>
17
+ * <NuxtImg src="/image.jpg" class="size-full object-cover" />
18
+ * </template>
19
+ * <template #right>
20
+ * <h2>Content</h2>
21
+ * <p>Description...</p>
22
+ * </template>
23
+ * </SectionSplit>
24
+ */
25
25
 
26
- interface Props {
27
- fullHeight?: boolean
28
- reverse?: boolean
29
- }
26
+ interface Props {
27
+ fullHeight?: boolean
28
+ reverse?: boolean
29
+ }
30
30
 
31
- const { fullHeight = false, reverse = false } = defineProps<Props>()
31
+ const { fullHeight = false, reverse = false } = defineProps<Props>()
32
32
  </script>
33
33
 
34
34
  <template>