kmcom-nuxt-layers 1.0.1

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 (380) hide show
  1. package/.claude/rules/nuxt-layers.md +23 -0
  2. package/.claude/rules/typescript.md +16 -0
  3. package/.claude/rules/vue-components.md +34 -0
  4. package/.claude/settings.local.json +81 -0
  5. package/.editorconfig +27 -0
  6. package/.github/workflows/npm-publish.yml +33 -0
  7. package/.oxlintrc.json +10 -0
  8. package/.prettierignore +87 -0
  9. package/CLAUDE.md +71 -0
  10. package/apps/playground/README.md +75 -0
  11. package/apps/playground/app/app.config.ts +10 -0
  12. package/apps/playground/app/app.vue +12 -0
  13. package/apps/playground/app/components/AmbientBackground.client.vue +795 -0
  14. package/apps/playground/app/components/ShaderDemoCanvas.client.vue +636 -0
  15. package/apps/playground/app/components/ShaderImageDemo.client.vue +211 -0
  16. package/apps/playground/app/pages/ambient.vue +387 -0
  17. package/apps/playground/app/pages/content.vue +200 -0
  18. package/apps/playground/app/pages/core.vue +560 -0
  19. package/apps/playground/app/pages/forms.vue +645 -0
  20. package/apps/playground/app/pages/index.vue +257 -0
  21. package/apps/playground/app/pages/layout.vue +591 -0
  22. package/apps/playground/app/pages/locomotive-scroll.vue +738 -0
  23. package/apps/playground/app/pages/motion.vue +848 -0
  24. package/apps/playground/app/pages/shader.vue +1701 -0
  25. package/apps/playground/app/pages/theme.vue +115 -0
  26. package/apps/playground/app/pages/ui.vue +656 -0
  27. package/apps/playground/content/blog/hello-world.md +127 -0
  28. package/apps/playground/content/blog/second-post.md +99 -0
  29. package/apps/playground/content/blog/third-post.md +33 -0
  30. package/apps/playground/content/gallery/autumn-collection.md +57 -0
  31. package/apps/playground/content/gallery/summer-collection.md +52 -0
  32. package/apps/playground/content/pages/index.md +132 -0
  33. package/apps/playground/content/portfolio/project-one.md +90 -0
  34. package/apps/playground/content/portfolio/project-two.md +96 -0
  35. package/apps/playground/content.config.ts +93 -0
  36. package/apps/playground/nuxt.config.ts +99 -0
  37. package/apps/playground/package.json +17 -0
  38. package/apps/playground/public/favicon.ico +0 -0
  39. package/apps/playground/public/robots.txt +2 -0
  40. package/apps/playground/tsconfig.json +25 -0
  41. package/eslint.config.mjs +223 -0
  42. package/eslint.configCOPY.mjs +216 -0
  43. package/eslintconfigCURRENT.mjs +244 -0
  44. package/eslintconfigOLD.mjs +178 -0
  45. package/files for claude/Scroller.vue +31 -0
  46. package/files for claude/TextMarquee.vue +255 -0
  47. package/files for claude/gsap.client.ts +18 -0
  48. package/files for claude/gsap.ts +10 -0
  49. package/files for claude/scroll.ts +28 -0
  50. package/layers/content/app/assets/css/main.css +1 -0
  51. package/layers/content/app/components/Blog/Article.vue +29 -0
  52. package/layers/content/app/components/Blog/Card.vue +40 -0
  53. package/layers/content/app/components/Blog/List.vue +35 -0
  54. package/layers/content/app/components/Gallery/AmbientImage.vue +52 -0
  55. package/layers/content/app/components/Gallery/Card.vue +39 -0
  56. package/layers/content/app/components/Gallery/Detail.vue +76 -0
  57. package/layers/content/app/components/Gallery/Grid.vue +48 -0
  58. package/layers/content/app/components/Gallery/ImageDetail.vue +92 -0
  59. package/layers/content/app/components/Gallery/Lightbox.vue +102 -0
  60. package/layers/content/app/components/NuxtContent/Detail.vue +53 -0
  61. package/layers/content/app/components/NuxtContent/List.vue +21 -0
  62. package/layers/content/app/components/NuxtContent/Renderer.vue +14 -0
  63. package/layers/content/app/components/NuxtContent/Surround.vue +15 -0
  64. package/layers/content/app/components/NuxtContent/Toc.vue +18 -0
  65. package/layers/content/app/components/Portfolio/Card.vue +39 -0
  66. package/layers/content/app/components/Portfolio/ColorPalette.vue +39 -0
  67. package/layers/content/app/components/Portfolio/Detail.vue +49 -0
  68. package/layers/content/app/components/Portfolio/List.vue +44 -0
  69. package/layers/content/app/components/Portfolio/Typography.vue +37 -0
  70. package/layers/content/app/components/content/Figure.vue +31 -0
  71. package/layers/content/app/composables/useBlogPost.ts +3 -0
  72. package/layers/content/app/composables/useBlogPosts.ts +23 -0
  73. package/layers/content/app/composables/useCollectionItem.ts +5 -0
  74. package/layers/content/app/composables/useCollectionSurround.ts +9 -0
  75. package/layers/content/app/composables/useContentPage.ts +3 -0
  76. package/layers/content/app/composables/useGalleryItem.ts +3 -0
  77. package/layers/content/app/composables/useGalleryItems.ts +19 -0
  78. package/layers/content/app/composables/usePortfolioItem.ts +3 -0
  79. package/layers/content/app/composables/usePortfolioItems.ts +23 -0
  80. package/layers/content/app/pages/blog/[slug].vue +10 -0
  81. package/layers/content/app/pages/blog/index.vue +15 -0
  82. package/layers/content/app/pages/gallery/[slug]/[imageId].vue +11 -0
  83. package/layers/content/app/pages/gallery/[slug]/index.vue +10 -0
  84. package/layers/content/app/pages/gallery/index.vue +15 -0
  85. package/layers/content/app/pages/portfolio/[slug].vue +10 -0
  86. package/layers/content/app/pages/portfolio/index.vue +15 -0
  87. package/layers/content/app/types/content.ts +84 -0
  88. package/layers/content/app.config.ts +12 -0
  89. package/layers/content/content.config.ts +93 -0
  90. package/layers/content/nuxt.config.ts +31 -0
  91. package/layers/content/package.json +31 -0
  92. package/layers/content/tsconfig.json +6 -0
  93. package/layers/core/app/assets/css/base.css +88 -0
  94. package/layers/core/app/assets/css/layout.css +36 -0
  95. package/layers/core/app/assets/css/main.css +7 -0
  96. package/layers/core/app/assets/css-backup.zip +0 -0
  97. package/layers/core/app/components/ErrorBoundary.vue +102 -0
  98. package/layers/core/app/components/LoadingScreen.vue +137 -0
  99. package/layers/core/app/composables/useBrowser.ts +161 -0
  100. package/layers/core/app/composables/useCache.ts +138 -0
  101. package/layers/core/app/composables/useDevice.ts +36 -0
  102. package/layers/core/app/composables/useEnv.ts +23 -0
  103. package/layers/core/app/composables/useErrorLog.ts +158 -0
  104. package/layers/core/app/composables/useFeatures.ts +269 -0
  105. package/layers/core/app/composables/useLoading.ts +109 -0
  106. package/layers/core/app/composables/useNetworkInfo.ts +83 -0
  107. package/layers/core/app/composables/usePWAInfo.ts +104 -0
  108. package/layers/core/app/composables/useRendering.ts +97 -0
  109. package/layers/core/app/composables/useScreen.ts +95 -0
  110. package/layers/core/app/composables/useScrollGuard.ts +266 -0
  111. package/layers/core/app/error.vue +103 -0
  112. package/layers/core/app/layouts/default.vue +4 -0
  113. package/layers/core/app/pages/[...slug].vue +168 -0
  114. package/layers/core/app/pages/diagnostics.vue +228 -0
  115. package/layers/core/app/plugins/error-handler.ts +47 -0
  116. package/layers/core/app/plugins/feature-detection.client.ts +32 -0
  117. package/layers/core/app/plugins/init.ts +188 -0
  118. package/layers/core/app/plugins/loading.client.ts +54 -0
  119. package/layers/core/app/plugins/scroll-guard.client.ts +53 -0
  120. package/layers/core/app/types/detection.ts +117 -0
  121. package/layers/core/app/types/index.ts +10 -0
  122. package/layers/core/app/types/loading.ts +47 -0
  123. package/layers/core/app/types/runtime-config.ts +31 -0
  124. package/layers/core/app/types/scroll-guard.ts +25 -0
  125. package/layers/core/app/utils/helpers.ts +246 -0
  126. package/layers/core/app/utils/index.ts +8 -0
  127. package/layers/core/app/utils/regex.ts +6 -0
  128. package/layers/core/app.config.ts +193 -0
  129. package/layers/core/nuxt.config.ts +84 -0
  130. package/layers/core/package.json +25 -0
  131. package/layers/core/tailwind.config.js +28 -0
  132. package/layers/core/tsconfig.json +6 -0
  133. package/layers/forms/app/components/Form/Contact.vue +78 -0
  134. package/layers/forms/app/components/Form/Field.vue +85 -0
  135. package/layers/forms/app/composables/useFormSchema.ts +35 -0
  136. package/layers/forms/app/config/fields.ts +104 -0
  137. package/layers/forms/app/types/fields.ts +60 -0
  138. package/layers/forms/app.config.ts +12 -0
  139. package/layers/forms/nuxt.config.ts +17 -0
  140. package/layers/forms/package.json +17 -0
  141. package/layers/forms/tsconfig.json +6 -0
  142. package/layers/layout/.nuxtrc +1 -0
  143. package/layers/layout/CLAUDE.MD +186 -0
  144. package/layers/layout/GRID_SYSTEM.md +993 -0
  145. package/layers/layout/README.md +73 -0
  146. package/layers/layout/app/assets/css/layout/grids.css +180 -0
  147. package/layers/layout/app/assets/css/main.css +1 -0
  148. package/layers/layout/app/components/Layout/Grid/Debug.vue +79 -0
  149. package/layers/layout/app/components/Layout/Grid/Item.vue +180 -0
  150. package/layers/layout/app/components/Layout/Page/Container.vue +100 -0
  151. package/layers/layout/app/components/Layout/Page/Header.vue +33 -0
  152. package/layers/layout/app/components/Layout/Section/Gallery.vue +68 -0
  153. package/layers/layout/app/components/Layout/Section/Hero.vue +71 -0
  154. package/layers/layout/app/components/Layout/Section/Split.vue +56 -0
  155. package/layers/layout/app/components/Layout/Section/index.vue +39 -0
  156. package/layers/layout/app/composables/GridPlacement.ts +31 -0
  157. package/layers/layout/app/composables/useGridConfig.ts +27 -0
  158. package/layers/layout/app/types/layouts.ts +37 -0
  159. package/layers/layout/app.config.ts +97 -0
  160. package/layers/layout/nuxt.config.ts +14 -0
  161. package/layers/layout/package.json +14 -0
  162. package/layers/layout/tailwind.config.js +28 -0
  163. package/layers/layout/tsconfig.json +6 -0
  164. package/layers/motion/README.md +107 -0
  165. package/layers/motion/TASKS.MD +16 -0
  166. package/layers/motion/app/assets/css/main.css +111 -0
  167. package/layers/motion/app/components/Motion/Marquee.vue +171 -0
  168. package/layers/motion/app/components/Motion/Parallax.vue +75 -0
  169. package/layers/motion/app/components/Motion/ScrollLink.vue +49 -0
  170. package/layers/motion/app/components/Motion/ScrollProgress.vue +127 -0
  171. package/layers/motion/app/components/Motion/ScrollStats.vue +102 -0
  172. package/layers/motion/app/components/Motion/Staggered.vue +73 -0
  173. package/layers/motion/app/components/Motion/TextReveal.vue +101 -0
  174. package/layers/motion/app/components/Motion/Transition.vue +89 -0
  175. package/layers/motion/app/components/Motion/VelocityEffect.vue +139 -0
  176. package/layers/motion/app/components/Motion/index.vue +16 -0
  177. package/layers/motion/app/composables/useGsap.ts +21 -0
  178. package/layers/motion/app/composables/useMotion.ts +137 -0
  179. package/layers/motion/app/composables/useSmoothScroll.ts +154 -0
  180. package/layers/motion/app/plugins/gsap.client.ts +15 -0
  181. package/layers/motion/app/plugins/locomotive-scroll.client.ts +49 -0
  182. package/layers/motion/app/utils/gsapAnimations.ts +122 -0
  183. package/layers/motion/app.config.ts +30 -0
  184. package/layers/motion/nuxt.config.ts +19 -0
  185. package/layers/motion/package.json +17 -0
  186. package/layers/motion/tsconfig.json +6 -0
  187. package/layers/shader/AGENTS.MD +195 -0
  188. package/layers/shader/additional-modular-tsl-shaders-for-claude/.prettierignore +6 -0
  189. package/layers/shader/additional-modular-tsl-shaders-for-claude/.prettierrc +18 -0
  190. package/layers/shader/additional-modular-tsl-shaders-for-claude/LICENSE +21 -0
  191. package/layers/shader/additional-modular-tsl-shaders-for-claude/README.md +100 -0
  192. package/layers/shader/additional-modular-tsl-shaders-for-claude/index.html +13 -0
  193. package/layers/shader/additional-modular-tsl-shaders-for-claude/jsconfig.json +30 -0
  194. package/layers/shader/additional-modular-tsl-shaders-for-claude/package.json +18 -0
  195. package/layers/shader/additional-modular-tsl-shaders-for-claude/pnpm-lock.yaml +633 -0
  196. package/layers/shader/additional-modular-tsl-shaders-for-claude/public/vite.svg +1 -0
  197. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/components/sketch/webgpu_sketch.js +128 -0
  198. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/components/sketches_dropdown/index.css +87 -0
  199. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/components/sketches_dropdown/sketches_dropdown.js +169 -0
  200. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/index.css +25 -0
  201. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/main.js +93 -0
  202. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/router.js +43 -0
  203. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/sketches/flare-1.js +68 -0
  204. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/sketches/noise/dawn-1.js +56 -0
  205. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/distortion/bulge_distortion.js +35 -0
  206. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/distortion/swirl_distortion.js +35 -0
  207. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/distortion/wave_distortion.js +43 -0
  208. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/noise/common.js +145 -0
  209. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/noise/curl_noise_3d.js +53 -0
  210. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/noise/curl_noise_4d.js +55 -0
  211. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/noise/fbm.js +163 -0
  212. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/noise/perlin_noise_3d.js +70 -0
  213. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/noise/simplex_noise_3d.js +59 -0
  214. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/noise/simplex_noise_4d.js +72 -0
  215. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/noise/turbulence.js +41 -0
  216. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/patterns/canvas_weave_pattern.js +26 -0
  217. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/patterns/grain_texture_pattern.js +10 -0
  218. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/patterns/led_pattern.js +45 -0
  219. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/patterns/pixellation_pattern.js +15 -0
  220. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/patterns/speckled_noise_pattern.js +34 -0
  221. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/patterns/vignette_pattern.js +21 -0
  222. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/bulge_distortion_effect.js +27 -0
  223. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/chromatic_aberration_effect.js +45 -0
  224. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/crt_scanline_effect.js +45 -0
  225. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/dither_effect.js +126 -0
  226. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/grain_texture_effect.js +21 -0
  227. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/halftone_effect.js +44 -0
  228. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/led_effect.js +31 -0
  229. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/pixellation_effect.js +29 -0
  230. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/swirl_distortion_effect.js +25 -0
  231. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/vignette_effect.js +22 -0
  232. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/wave_distortion_effect.js +27 -0
  233. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/color/cosine_palette.js +15 -0
  234. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/color/tonemapping.js +151 -0
  235. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/function/bloom.js +13 -0
  236. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/function/bloom_edge_pattern.js +20 -0
  237. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/function/domain_index.js +11 -0
  238. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/function/median3.js +22 -0
  239. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/function/repeating_pattern.js +13 -0
  240. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/function/screen_aspect_uv.js +14 -0
  241. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/lighting.js +60 -0
  242. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/math/complex.js +86 -0
  243. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/math/coordinates.js +119 -0
  244. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/sdf/operations.js +24 -0
  245. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/sdf/shapes.js +182 -0
  246. package/layers/shader/additional-modular-tsl-shaders-for-claude/src/utils/math.js +33 -0
  247. package/layers/shader/additional-modular-tsl-shaders-for-claude/vite.config.js +23 -0
  248. package/layers/shader/app/assets/css/main.css +41 -0
  249. package/layers/shader/app/components/Effect/Bloom.vue +8 -0
  250. package/layers/shader/app/components/Effect/ChromaticAberration.vue +8 -0
  251. package/layers/shader/app/components/Effect/PostProcessing.vue +20 -0
  252. package/layers/shader/app/components/Material/AmbientAurora.vue +172 -0
  253. package/layers/shader/app/components/Material/AmbientFlow.vue +175 -0
  254. package/layers/shader/app/components/Material/AmbientGradientMesh.vue +173 -0
  255. package/layers/shader/app/components/Material/AmbientNebula.vue +181 -0
  256. package/layers/shader/app/components/Material/AmbientOcean.vue +161 -0
  257. package/layers/shader/app/components/Material/Fresnel.vue +89 -0
  258. package/layers/shader/app/components/Material/Gradient.vue +185 -0
  259. package/layers/shader/app/components/Material/Image.vue +232 -0
  260. package/layers/shader/app/components/Material/Node.vue +79 -0
  261. package/layers/shader/app/components/Material/Noise.vue +141 -0
  262. package/layers/shader/app/components/Mesh/Plane.vue +27 -0
  263. package/layers/shader/app/components/Shader/Background.vue +159 -0
  264. package/layers/shader/app/components/Shader/Canvas.vue +97 -0
  265. package/layers/shader/app/components/Shader/Debug.vue +66 -0
  266. package/layers/shader/app/components/WebGPUCanvas.client.vue +245 -0
  267. package/layers/shader/app/composables/useAmbientMaterials.ts +452 -0
  268. package/layers/shader/app/composables/useMousePosition.ts +94 -0
  269. package/layers/shader/app/composables/useRendererCapabilities.ts +111 -0
  270. package/layers/shader/app/composables/useShader.ts +148 -0
  271. package/layers/shader/app/composables/useShaderTime.ts +146 -0
  272. package/layers/shader/app/composables/useTSLNodes.ts +112 -0
  273. package/layers/shader/app/composables/useUniforms.ts +188 -0
  274. package/layers/shader/app/plugins/shader.client.ts +30 -0
  275. package/layers/shader/app/shaders/common/blend.ts +255 -0
  276. package/layers/shader/app/shaders/common/effects.ts +299 -0
  277. package/layers/shader/app/shaders/common/grain.ts +453 -0
  278. package/layers/shader/app/shaders/common/index.ts +22 -0
  279. package/layers/shader/app/shaders/common/lighting.ts +146 -0
  280. package/layers/shader/app/shaders/common/math.ts +250 -0
  281. package/layers/shader/app/shaders/common/noise.ts +823 -0
  282. package/layers/shader/app/shaders/common/noiseHelpers.ts +114 -0
  283. package/layers/shader/app/shaders/common/palette.ts +319 -0
  284. package/layers/shader/app/shaders/common/patterns.ts +216 -0
  285. package/layers/shader/app/shaders/common/sdf.ts +224 -0
  286. package/layers/shader/app/shaders/common/shapes.ts +366 -0
  287. package/layers/shader/app/shaders/common/tonemapping.ts +172 -0
  288. package/layers/shader/app/shaders/common/uv.ts +396 -0
  289. package/layers/shader/app/shaders/createMaterial.ts +314 -0
  290. package/layers/shader/app/shaders/index.ts +282 -0
  291. package/layers/shader/app/shaders/layers/aurora.ts +146 -0
  292. package/layers/shader/app/shaders/layers/index.ts +19 -0
  293. package/layers/shader/app/shaders/layers/meshGradient.ts +152 -0
  294. package/layers/shader/app/shaders/layers/paperShading.ts +148 -0
  295. package/layers/shader/app/shaders/layers/shaderGradient.ts +152 -0
  296. package/layers/shader/app/shaders/layers/stripe.ts +137 -0
  297. package/layers/shader/app/shaders/types.ts +12 -0
  298. package/layers/shader/app/types/index.ts +4 -0
  299. package/layers/shader/app/types/materials.ts +45 -0
  300. package/layers/shader/app/types/renderer.ts +50 -0
  301. package/layers/shader/app/types/tsl.ts +39 -0
  302. package/layers/shader/app/types/uniforms.ts +21 -0
  303. package/layers/shader/app/utils/tsl/animation.ts +251 -0
  304. package/layers/shader/app/utils/tsl/color.ts +189 -0
  305. package/layers/shader/app/utils/tsl/index.ts +84 -0
  306. package/layers/shader/app/utils/tsl/math.ts +111 -0
  307. package/layers/shader/app/utils/tsl/noise.ts +195 -0
  308. package/layers/shader/app/utils/tsl/patterns.ts +183 -0
  309. package/layers/shader/app/utils/tsl/uv.ts +145 -0
  310. package/layers/shader/app.config.ts +18 -0
  311. package/layers/shader/modular-tsl-shaders-for-claude/common/blend.tsl +1 -0
  312. package/layers/shader/modular-tsl-shaders-for-claude/common/noise.tsl +1 -0
  313. package/layers/shader/modular-tsl-shaders-for-claude/common/shapes.tsl +1 -0
  314. package/layers/shader/modular-tsl-shaders-for-claude/common/vertexFresnel.tsl +9 -0
  315. package/layers/shader/modular-tsl-shaders-for-claude/common/vertexPlane.tsl +6 -0
  316. package/layers/shader/modular-tsl-shaders-for-claude/effects/background.tsl +1 -0
  317. package/layers/shader/modular-tsl-shaders-for-claude/effects/gradient.tsl +1 -0
  318. package/layers/shader/modular-tsl-shaders-for-claude/effects/gradientLegend.tsl +1 -0
  319. package/layers/shader/modular-tsl-shaders-for-claude/effects/simpleGradient.tsl +1 -0
  320. package/layers/shader/modular-tsl-shaders-for-claude/layers/aurora.ts +1 -0
  321. package/layers/shader/modular-tsl-shaders-for-claude/layers/fragmentsTech.ts +1 -0
  322. package/layers/shader/modular-tsl-shaders-for-claude/layers/fresnel.ts +1 -0
  323. package/layers/shader/modular-tsl-shaders-for-claude/layers/linearGradient.ts +1 -0
  324. package/layers/shader/modular-tsl-shaders-for-claude/layers/meshGradient.ts +1 -0
  325. package/layers/shader/modular-tsl-shaders-for-claude/layers/noise.ts +1 -0
  326. package/layers/shader/modular-tsl-shaders-for-claude/layers/paperShading.ts +1 -0
  327. package/layers/shader/modular-tsl-shaders-for-claude/layers/radial.ts +1 -0
  328. package/layers/shader/modular-tsl-shaders-for-claude/layers/shaderGradient.ts +1 -0
  329. package/layers/shader/modular-tsl-shaders-for-claude/layers/stripe.ts +1 -0
  330. package/layers/shader/modular-tsl-shaders-for-claude/materials/createMaterial.ts +1 -0
  331. package/layers/shader/modular-tsl-shaders-for-claude/utils/glslUtils.ts +1 -0
  332. package/layers/shader/modular-tsl-shaders-for-claude/utils/palette.ts +1 -0
  333. package/layers/shader/nuxt.config.ts +48 -0
  334. package/layers/shader/package.json +17 -0
  335. package/layers/shader/tsconfig.json +6 -0
  336. package/layers/theme/app/assets/css/theme.css +47 -0
  337. package/layers/theme/app/components/ThemePicker/AccentButton.vue +51 -0
  338. package/layers/theme/app/components/ThemePicker/Colors.vue +22 -0
  339. package/layers/theme/app/components/ThemePicker/Menu.vue +108 -0
  340. package/layers/theme/app/components/ThemePicker/MenuButton.vue +9 -0
  341. package/layers/theme/app/composables/useThemePreferences.ts +158 -0
  342. package/layers/theme/app/plugins/theme.client.ts +5 -0
  343. package/layers/theme/app/types/theme.ts +34 -0
  344. package/layers/theme/app.config.ts +14 -0
  345. package/layers/theme/nuxt.config.ts +46 -0
  346. package/layers/theme/package.json +14 -0
  347. package/layers/theme/server/plugins/theme-fouc.ts +51 -0
  348. package/layers/theme/tsconfig.json +7 -0
  349. package/layers/ui/CLAUDE.MD +325 -0
  350. package/layers/ui/app/assets/css/main.css +4 -0
  351. package/layers/ui/app/components/Links/Group.vue +38 -0
  352. package/layers/ui/app/components/Links/Named.vue +32 -0
  353. package/layers/ui/app/components/Media/Picture.vue +41 -0
  354. package/layers/ui/app/components/Site/Title.vue +15 -0
  355. package/layers/ui/app/components/Typography/CodeBlock.vue +37 -0
  356. package/layers/ui/app/components/Typography/Headline.vue +73 -0
  357. package/layers/ui/app/components/Typography/QuoteBlock.vue +13 -0
  358. package/layers/ui/app/components/Typography/TextStroke.vue +109 -0
  359. package/layers/ui/app/components/Typography/index.vue +49 -0
  360. package/layers/ui/app/composables/color.ts +36 -0
  361. package/layers/ui/app/composables/picture.ts +145 -0
  362. package/layers/ui/app/composables/typography.ts +77 -0
  363. package/layers/ui/app/layouts/default.vue +4 -0
  364. package/layers/ui/app/pages/index.vue +236 -0
  365. package/layers/ui/app/types/breakpoints.ts +179 -0
  366. package/layers/ui/app/types/colors.ts +29 -0
  367. package/layers/ui/app/types/media.ts +185 -0
  368. package/layers/ui/app/types/typography.ts +108 -0
  369. package/layers/ui/app/utils/regex.ts +6 -0
  370. package/layers/ui/app.config.ts +12 -0
  371. package/layers/ui/nuxt.config.ts +38 -0
  372. package/layers/ui/package.json +14 -0
  373. package/layers/ui/tsconfig.json +6 -0
  374. package/package.json +128 -0
  375. package/playgroundOLD/app.config.ts +5 -0
  376. package/playgroundOLD/nuxt.config.ts +12 -0
  377. package/pnpm-workspace.yaml +6 -0
  378. package/prettier.config.cjs +19 -0
  379. package/stylelint.config.mjs +111 -0
  380. package/turbo.json +16 -0
@@ -0,0 +1,314 @@
1
+ // @ts-nocheck - TSL types are complex and not fully exported from three/tsl
2
+ /**
3
+ * Material Factory
4
+ * Creates Three.js TSL materials from shader layer functions
5
+ */
6
+ import { BackSide, DoubleSide, FrontSide, type Side } from 'three'
7
+ import { vec4 } from 'three/tsl'
8
+ import { MeshBasicNodeMaterial } from 'three/webgpu'
9
+ import {
10
+ aurora,
11
+ createAuroraUniforms,
12
+ updateAuroraUniforms,
13
+ type AuroraOptions,
14
+ type AuroraUniforms,
15
+ } from './layers/aurora'
16
+ import {
17
+ createMeshGradientUniforms,
18
+ meshGradient,
19
+ updateMeshGradientUniforms,
20
+ type MeshGradientOptions,
21
+ type MeshGradientUniforms,
22
+ } from './layers/meshGradient'
23
+ import {
24
+ createPaperShadingUniforms,
25
+ paperShading,
26
+ updatePaperShadingUniforms,
27
+ type PaperShadingOptions,
28
+ type PaperShadingUniforms,
29
+ } from './layers/paperShading'
30
+ import {
31
+ createShaderGradientUniforms,
32
+ shaderGradient,
33
+ updateShaderGradientUniforms,
34
+ type ShaderGradientOptions,
35
+ type ShaderGradientUniforms,
36
+ } from './layers/shaderGradient'
37
+ // Import shader layers
38
+ import {
39
+ createStripeGradientUniforms,
40
+ stripeGradient,
41
+ updateStripeGradientUniforms,
42
+ type StripeGradientOptions,
43
+ type StripeGradientUniforms,
44
+ } from './layers/stripe'
45
+
46
+ type TSLNode = ShaderNodeObject<Node>
47
+
48
+ // ============================================
49
+ // Types
50
+ // ============================================
51
+
52
+ export interface MaterialOptions {
53
+ /** Transparent material */
54
+ transparent?: boolean
55
+ /** Material side */
56
+ side?: 'front' | 'back' | 'double'
57
+ /** Opacity (0-1) */
58
+ opacity?: number
59
+ /** Depth test */
60
+ depthTest?: boolean
61
+ /** Depth write */
62
+ depthWrite?: boolean
63
+ }
64
+
65
+ export type ShaderType = 'stripe' | 'meshGradient' | 'aurora' | 'shaderGradient' | 'paperShading'
66
+
67
+ export type ShaderOptions<T extends ShaderType> = T extends 'stripe'
68
+ ? StripeGradientOptions
69
+ : T extends 'meshGradient'
70
+ ? MeshGradientOptions
71
+ : T extends 'aurora'
72
+ ? AuroraOptions
73
+ : T extends 'shaderGradient'
74
+ ? ShaderGradientOptions
75
+ : T extends 'paperShading'
76
+ ? PaperShadingOptions
77
+ : never
78
+
79
+ export type ShaderUniforms<T extends ShaderType> = T extends 'stripe'
80
+ ? StripeGradientUniforms
81
+ : T extends 'meshGradient'
82
+ ? MeshGradientUniforms
83
+ : T extends 'aurora'
84
+ ? AuroraUniforms
85
+ : T extends 'shaderGradient'
86
+ ? ShaderGradientUniforms
87
+ : T extends 'paperShading'
88
+ ? PaperShadingUniforms
89
+ : never
90
+
91
+ export interface ShaderMaterialResult<T extends ShaderType> {
92
+ material: MeshBasicNodeMaterial
93
+ uniforms: ShaderUniforms<T>
94
+ update: (options: Partial<ShaderOptions<T>>) => void
95
+ dispose: () => void
96
+ }
97
+
98
+ // ============================================
99
+ // Side Mapping
100
+ // ============================================
101
+
102
+ const sideMap: Record<string, Side> = {
103
+ front: FrontSide,
104
+ back: BackSide,
105
+ double: DoubleSide,
106
+ }
107
+
108
+ // ============================================
109
+ // Factory Functions
110
+ // ============================================
111
+
112
+ /**
113
+ * Create a shader material from a shader type
114
+ */
115
+ export function createShaderMaterial<T extends ShaderType>(
116
+ type: T,
117
+ shaderOptions?: ShaderOptions<T>,
118
+ materialOptions?: MaterialOptions
119
+ ): ShaderMaterialResult<T> {
120
+ const {
121
+ transparent = false,
122
+ side = 'double',
123
+ opacity = 1,
124
+ depthTest = true,
125
+ depthWrite = true,
126
+ } = materialOptions || {}
127
+
128
+ let uniforms: ShaderUniforms<T>
129
+ let colorNode: TSLNode
130
+
131
+ // Create uniforms and color node based on type
132
+ switch (type) {
133
+ case 'stripe':
134
+ uniforms = createStripeGradientUniforms(
135
+ shaderOptions as StripeGradientOptions
136
+ ) as ShaderUniforms<T>
137
+ colorNode = stripeGradient(uniforms as StripeGradientUniforms)
138
+ break
139
+ case 'meshGradient':
140
+ uniforms = createMeshGradientUniforms(
141
+ shaderOptions as MeshGradientOptions
142
+ ) as ShaderUniforms<T>
143
+ colorNode = meshGradient(uniforms as MeshGradientUniforms)
144
+ break
145
+ case 'aurora':
146
+ uniforms = createAuroraUniforms(shaderOptions as AuroraOptions) as ShaderUniforms<T>
147
+ colorNode = aurora(uniforms as AuroraUniforms)
148
+ break
149
+ case 'shaderGradient':
150
+ uniforms = createShaderGradientUniforms(
151
+ shaderOptions as ShaderGradientOptions
152
+ ) as ShaderUniforms<T>
153
+ colorNode = shaderGradient(uniforms as ShaderGradientUniforms)
154
+ break
155
+ case 'paperShading':
156
+ uniforms = createPaperShadingUniforms(
157
+ shaderOptions as PaperShadingOptions
158
+ ) as ShaderUniforms<T>
159
+ colorNode = paperShading(uniforms as PaperShadingUniforms)
160
+ break
161
+ default:
162
+ throw new Error(`Unknown shader type: ${type}`)
163
+ }
164
+
165
+ // Create material
166
+ const material = new MeshBasicNodeMaterial()
167
+ material.colorNode = transparent ? vec4(colorNode, opacity) : colorNode
168
+ material.transparent = transparent
169
+ material.side = sideMap[side] || DoubleSide
170
+ material.depthTest = depthTest
171
+ material.depthWrite = depthWrite
172
+
173
+ // Update function
174
+ const update = (options: Partial<ShaderOptions<T>>) => {
175
+ switch (type) {
176
+ case 'stripe':
177
+ updateStripeGradientUniforms(
178
+ uniforms as StripeGradientUniforms,
179
+ options as Partial<StripeGradientOptions>
180
+ )
181
+ break
182
+ case 'meshGradient':
183
+ updateMeshGradientUniforms(
184
+ uniforms as MeshGradientUniforms,
185
+ options as Partial<MeshGradientOptions>
186
+ )
187
+ break
188
+ case 'aurora':
189
+ updateAuroraUniforms(uniforms as AuroraUniforms, options as Partial<AuroraOptions>)
190
+ break
191
+ case 'shaderGradient':
192
+ updateShaderGradientUniforms(
193
+ uniforms as ShaderGradientUniforms,
194
+ options as Partial<ShaderGradientOptions>
195
+ )
196
+ break
197
+ case 'paperShading':
198
+ updatePaperShadingUniforms(
199
+ uniforms as PaperShadingUniforms,
200
+ options as Partial<PaperShadingOptions>
201
+ )
202
+ break
203
+ }
204
+ }
205
+
206
+ // Dispose function
207
+ const dispose = () => {
208
+ material.dispose()
209
+ }
210
+
211
+ return {
212
+ material,
213
+ uniforms,
214
+ update,
215
+ dispose,
216
+ }
217
+ }
218
+
219
+ // ============================================
220
+ // Convenience Factory Functions
221
+ // ============================================
222
+
223
+ /**
224
+ * Create a stripe gradient material
225
+ */
226
+ export function createStripeMaterial(
227
+ options?: StripeGradientOptions,
228
+ materialOptions?: MaterialOptions
229
+ ): ShaderMaterialResult<'stripe'> {
230
+ return createShaderMaterial('stripe', options, materialOptions)
231
+ }
232
+
233
+ /**
234
+ * Create a mesh gradient material
235
+ */
236
+ export function createMeshGradientMaterial(
237
+ options?: MeshGradientOptions,
238
+ materialOptions?: MaterialOptions
239
+ ): ShaderMaterialResult<'meshGradient'> {
240
+ return createShaderMaterial('meshGradient', options, materialOptions)
241
+ }
242
+
243
+ /**
244
+ * Create an aurora material
245
+ */
246
+ export function createAuroraMaterial(
247
+ options?: AuroraOptions,
248
+ materialOptions?: MaterialOptions
249
+ ): ShaderMaterialResult<'aurora'> {
250
+ return createShaderMaterial('aurora', options, materialOptions)
251
+ }
252
+
253
+ /**
254
+ * Create a shader gradient material
255
+ */
256
+ export function createShaderGradientMaterial(
257
+ options?: ShaderGradientOptions,
258
+ materialOptions?: MaterialOptions
259
+ ): ShaderMaterialResult<'shaderGradient'> {
260
+ return createShaderMaterial('shaderGradient', options, materialOptions)
261
+ }
262
+
263
+ /**
264
+ * Create a paper shading material
265
+ */
266
+ export function createPaperShadingMaterial(
267
+ options?: PaperShadingOptions,
268
+ materialOptions?: MaterialOptions
269
+ ): ShaderMaterialResult<'paperShading'> {
270
+ return createShaderMaterial('paperShading', options, materialOptions)
271
+ }
272
+
273
+ // ============================================
274
+ // Composable Hook
275
+ // ============================================
276
+
277
+ /**
278
+ * Vue composable for creating reactive shader materials
279
+ */
280
+ export function useShaderMaterial<T extends ShaderType>(
281
+ type: T,
282
+ shaderOptions?: MaybeRef<ShaderOptions<T>>,
283
+ materialOptions?: MaterialOptions
284
+ ) {
285
+ const result = shallowRef<ShaderMaterialResult<T> | null>(null)
286
+
287
+ const initOptions = unref(shaderOptions)
288
+ result.value = createShaderMaterial(type, initOptions, materialOptions)
289
+
290
+ // Watch for option changes
291
+ if (isRef(shaderOptions)) {
292
+ watch(
293
+ shaderOptions,
294
+ (newOptions) => {
295
+ if (result.value && newOptions) {
296
+ result.value.update(newOptions as Partial<ShaderOptions<T>>)
297
+ }
298
+ },
299
+ { deep: true }
300
+ )
301
+ }
302
+
303
+ // Auto dispose on unmount
304
+ onUnmounted(() => {
305
+ result.value?.dispose()
306
+ })
307
+
308
+ return {
309
+ material: computed(() => result.value?.material),
310
+ uniforms: computed(() => result.value?.uniforms),
311
+ update: (options: Partial<ShaderOptions<T>>) => result.value?.update(options),
312
+ dispose: () => result.value?.dispose(),
313
+ }
314
+ }
@@ -0,0 +1,282 @@
1
+ /**
2
+ * Modular TSL Shader System
3
+ *
4
+ * A composable shader system built on Three.js TSL (Texture Shader Language)
5
+ * for creating reactive, high-performance shader effects.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * // Using the material factory
10
+ * import { createStripeMaterial } from '#layers/shader/app/shaders'
11
+ *
12
+ * const { material, update, dispose } = createStripeMaterial({
13
+ * colors: ['#ff0000', '#00ff00', '#0000ff'],
14
+ * speed: 0.5,
15
+ * })
16
+ *
17
+ * // Update colors reactively
18
+ * update({ colors: ['#ffff00', '#ff00ff', '#00ffff'] })
19
+ * ```
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * // Using individual utilities
24
+ * import { simplexNoise2D, blob, rainbow } from '#layers/shader/app/shaders'
25
+ * import { uv, mix } from 'three/tsl'
26
+ *
27
+ * const noise = simplexNoise2D(uv().mul(5))
28
+ * const shape = blob(uv(), [0.5, 0.5], 0.3)
29
+ * const color = rainbow(noise)
30
+ * ```
31
+ */
32
+
33
+ // ============================================
34
+ // Types
35
+ // ============================================
36
+
37
+ export type { TSLNode } from './types'
38
+
39
+ // ============================================
40
+ // Common Utilities
41
+ // ============================================
42
+
43
+ // Noise functions
44
+ export {
45
+ // Hash functions
46
+ hash21,
47
+ hash22,
48
+ hash33,
49
+ // 2D noise
50
+ valueNoise2D,
51
+ simplexNoise2D,
52
+ // 3D noise
53
+ gradientNoise3D,
54
+ // FBM
55
+ fbm2D,
56
+ fbm3D,
57
+ // Voronoi
58
+ voronoi2D,
59
+ // Domain warping
60
+ domainWarp2D,
61
+ // Turbulence
62
+ turbulence2D,
63
+ // Types
64
+ type FBMOptions,
65
+ type VoronoiResult,
66
+ } from './common/noise'
67
+
68
+ // Shape functions
69
+ export {
70
+ // Basic shapes
71
+ blob,
72
+ circle,
73
+ ring,
74
+ radialGradient,
75
+ roundedRect,
76
+ rect,
77
+ // Lines & stripes
78
+ horizontalLine,
79
+ verticalLine,
80
+ stripes,
81
+ smoothStripes,
82
+ // Grids & patterns
83
+ grid,
84
+ dots,
85
+ checker,
86
+ // Polar patterns
87
+ star,
88
+ radialLines,
89
+ concentricCircles,
90
+ polygon,
91
+ } from './common/shapes'
92
+
93
+ // Blend modes
94
+ export {
95
+ // Basic blending
96
+ blendLinear,
97
+ blendAdd,
98
+ blendSubtract,
99
+ // Photoshop-style
100
+ blendMultiply,
101
+ blendScreen,
102
+ blendOverlay,
103
+ blendSoftLight,
104
+ blendHardLight,
105
+ blendDifference,
106
+ blendExclusion,
107
+ blendDarken,
108
+ blendLighten,
109
+ blendColorDodge,
110
+ blendColorBurn,
111
+ blendLinearDodge,
112
+ blendLinearBurn,
113
+ blendVividLight,
114
+ blendPinLight,
115
+ // Advanced
116
+ blendWithOpacity,
117
+ blendLayers,
118
+ // Color utilities
119
+ luminance,
120
+ desaturate,
121
+ saturate,
122
+ brightness,
123
+ contrast,
124
+ invert,
125
+ } from './common/blend'
126
+
127
+ // Palette & color
128
+ export {
129
+ // Gradients
130
+ gradient2,
131
+ gradient3,
132
+ gradient4,
133
+ gradientMulti,
134
+ // Cosine palette
135
+ cosinePalette,
136
+ // Preset palettes
137
+ rainbow,
138
+ sunset,
139
+ ocean,
140
+ fire,
141
+ ice,
142
+ neon,
143
+ pastel,
144
+ grayscale,
145
+ // Color manipulation
146
+ hueShift,
147
+ temperature,
148
+ vibrance,
149
+ // Utilities
150
+ hexToVec3,
151
+ hslToRgb,
152
+ quantize,
153
+ // Types
154
+ type ColorStop,
155
+ } from './common/palette'
156
+
157
+ // Grain & film effects
158
+ export {
159
+ // Basic grain
160
+ grain,
161
+ animatedGrain,
162
+ coloredGrain,
163
+ // Dithering
164
+ bayer2x2,
165
+ bayer4x4,
166
+ ditherColor,
167
+ // Scanlines
168
+ scanlines,
169
+ interlace,
170
+ // Vignette
171
+ vignette,
172
+ rectVignette,
173
+ // Paper/texture
174
+ paperTexture,
175
+ halftone,
176
+ // Apply effects
177
+ applyGrain,
178
+ applyColoredGrain,
179
+ applyVignette,
180
+ applyScanlines,
181
+ crtEffect,
182
+ } from './common/grain'
183
+
184
+ // UV manipulation
185
+ export {
186
+ // Basic transformations
187
+ scaleUV,
188
+ rotateUV,
189
+ translateUV,
190
+ tileUV,
191
+ mirrorUV,
192
+ // Coordinate conversion
193
+ toPolar,
194
+ fromPolar,
195
+ // Distortions
196
+ waveUV,
197
+ rippleUV,
198
+ swirlUV,
199
+ barrelUV,
200
+ pincushionUV,
201
+ kaleidoscopeUV,
202
+ zoomUV,
203
+ // Aspect ratio
204
+ aspectCorrect,
205
+ coverUV,
206
+ containUV,
207
+ // Animation
208
+ scrollUV,
209
+ parallaxUV,
210
+ } from './common/uv'
211
+
212
+ // ============================================
213
+ // Shader Layers
214
+ // ============================================
215
+
216
+ // Stripe gradient
217
+ export {
218
+ createStripeGradientUniforms,
219
+ stripeGradient,
220
+ updateStripeGradientUniforms,
221
+ type StripeGradientOptions,
222
+ type StripeGradientUniforms,
223
+ } from './layers/stripe'
224
+
225
+ // Mesh gradient
226
+ export {
227
+ createMeshGradientUniforms,
228
+ meshGradient,
229
+ updateMeshGradientUniforms,
230
+ type MeshGradientOptions,
231
+ type MeshGradientUniforms,
232
+ } from './layers/meshGradient'
233
+
234
+ // Aurora
235
+ export {
236
+ createAuroraUniforms,
237
+ aurora,
238
+ updateAuroraUniforms,
239
+ type AuroraOptions,
240
+ type AuroraUniforms,
241
+ } from './layers/aurora'
242
+
243
+ // Shader gradient
244
+ export {
245
+ createShaderGradientUniforms,
246
+ shaderGradient,
247
+ updateShaderGradientUniforms,
248
+ type ShaderGradientOptions,
249
+ type ShaderGradientUniforms,
250
+ } from './layers/shaderGradient'
251
+
252
+ // Paper shading
253
+ export {
254
+ createPaperShadingUniforms,
255
+ paperShading,
256
+ updatePaperShadingUniforms,
257
+ type PaperShadingOptions,
258
+ type PaperShadingUniforms,
259
+ } from './layers/paperShading'
260
+
261
+ // ============================================
262
+ // Material Factory
263
+ // ============================================
264
+
265
+ export {
266
+ // Main factory
267
+ createShaderMaterial,
268
+ // Convenience factories
269
+ createStripeMaterial,
270
+ createMeshGradientMaterial,
271
+ createAuroraMaterial,
272
+ createShaderGradientMaterial,
273
+ createPaperShadingMaterial,
274
+ // Vue composable
275
+ useShaderMaterial,
276
+ // Types
277
+ type MaterialOptions,
278
+ type ShaderType,
279
+ type ShaderOptions,
280
+ type ShaderUniforms,
281
+ type ShaderMaterialResult,
282
+ } from './createMaterial'