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.
- package/.claude/rules/nuxt-layers.md +23 -0
- package/.claude/rules/typescript.md +16 -0
- package/.claude/rules/vue-components.md +34 -0
- package/.claude/settings.local.json +81 -0
- package/.editorconfig +27 -0
- package/.github/workflows/npm-publish.yml +33 -0
- package/.oxlintrc.json +10 -0
- package/.prettierignore +87 -0
- package/CLAUDE.md +71 -0
- package/apps/playground/README.md +75 -0
- package/apps/playground/app/app.config.ts +10 -0
- package/apps/playground/app/app.vue +12 -0
- package/apps/playground/app/components/AmbientBackground.client.vue +795 -0
- package/apps/playground/app/components/ShaderDemoCanvas.client.vue +636 -0
- package/apps/playground/app/components/ShaderImageDemo.client.vue +211 -0
- package/apps/playground/app/pages/ambient.vue +387 -0
- package/apps/playground/app/pages/content.vue +200 -0
- package/apps/playground/app/pages/core.vue +560 -0
- package/apps/playground/app/pages/forms.vue +645 -0
- package/apps/playground/app/pages/index.vue +257 -0
- package/apps/playground/app/pages/layout.vue +591 -0
- package/apps/playground/app/pages/locomotive-scroll.vue +738 -0
- package/apps/playground/app/pages/motion.vue +848 -0
- package/apps/playground/app/pages/shader.vue +1701 -0
- package/apps/playground/app/pages/theme.vue +115 -0
- package/apps/playground/app/pages/ui.vue +656 -0
- package/apps/playground/content/blog/hello-world.md +127 -0
- package/apps/playground/content/blog/second-post.md +99 -0
- package/apps/playground/content/blog/third-post.md +33 -0
- package/apps/playground/content/gallery/autumn-collection.md +57 -0
- package/apps/playground/content/gallery/summer-collection.md +52 -0
- package/apps/playground/content/pages/index.md +132 -0
- package/apps/playground/content/portfolio/project-one.md +90 -0
- package/apps/playground/content/portfolio/project-two.md +96 -0
- package/apps/playground/content.config.ts +93 -0
- package/apps/playground/nuxt.config.ts +99 -0
- package/apps/playground/package.json +17 -0
- package/apps/playground/public/favicon.ico +0 -0
- package/apps/playground/public/robots.txt +2 -0
- package/apps/playground/tsconfig.json +25 -0
- package/eslint.config.mjs +223 -0
- package/eslint.configCOPY.mjs +216 -0
- package/eslintconfigCURRENT.mjs +244 -0
- package/eslintconfigOLD.mjs +178 -0
- package/files for claude/Scroller.vue +31 -0
- package/files for claude/TextMarquee.vue +255 -0
- package/files for claude/gsap.client.ts +18 -0
- package/files for claude/gsap.ts +10 -0
- package/files for claude/scroll.ts +28 -0
- package/layers/content/app/assets/css/main.css +1 -0
- package/layers/content/app/components/Blog/Article.vue +29 -0
- package/layers/content/app/components/Blog/Card.vue +40 -0
- package/layers/content/app/components/Blog/List.vue +35 -0
- package/layers/content/app/components/Gallery/AmbientImage.vue +52 -0
- package/layers/content/app/components/Gallery/Card.vue +39 -0
- package/layers/content/app/components/Gallery/Detail.vue +76 -0
- package/layers/content/app/components/Gallery/Grid.vue +48 -0
- package/layers/content/app/components/Gallery/ImageDetail.vue +92 -0
- package/layers/content/app/components/Gallery/Lightbox.vue +102 -0
- package/layers/content/app/components/NuxtContent/Detail.vue +53 -0
- package/layers/content/app/components/NuxtContent/List.vue +21 -0
- package/layers/content/app/components/NuxtContent/Renderer.vue +14 -0
- package/layers/content/app/components/NuxtContent/Surround.vue +15 -0
- package/layers/content/app/components/NuxtContent/Toc.vue +18 -0
- package/layers/content/app/components/Portfolio/Card.vue +39 -0
- package/layers/content/app/components/Portfolio/ColorPalette.vue +39 -0
- package/layers/content/app/components/Portfolio/Detail.vue +49 -0
- package/layers/content/app/components/Portfolio/List.vue +44 -0
- package/layers/content/app/components/Portfolio/Typography.vue +37 -0
- package/layers/content/app/components/content/Figure.vue +31 -0
- package/layers/content/app/composables/useBlogPost.ts +3 -0
- package/layers/content/app/composables/useBlogPosts.ts +23 -0
- package/layers/content/app/composables/useCollectionItem.ts +5 -0
- package/layers/content/app/composables/useCollectionSurround.ts +9 -0
- package/layers/content/app/composables/useContentPage.ts +3 -0
- package/layers/content/app/composables/useGalleryItem.ts +3 -0
- package/layers/content/app/composables/useGalleryItems.ts +19 -0
- package/layers/content/app/composables/usePortfolioItem.ts +3 -0
- package/layers/content/app/composables/usePortfolioItems.ts +23 -0
- package/layers/content/app/pages/blog/[slug].vue +10 -0
- package/layers/content/app/pages/blog/index.vue +15 -0
- package/layers/content/app/pages/gallery/[slug]/[imageId].vue +11 -0
- package/layers/content/app/pages/gallery/[slug]/index.vue +10 -0
- package/layers/content/app/pages/gallery/index.vue +15 -0
- package/layers/content/app/pages/portfolio/[slug].vue +10 -0
- package/layers/content/app/pages/portfolio/index.vue +15 -0
- package/layers/content/app/types/content.ts +84 -0
- package/layers/content/app.config.ts +12 -0
- package/layers/content/content.config.ts +93 -0
- package/layers/content/nuxt.config.ts +31 -0
- package/layers/content/package.json +31 -0
- package/layers/content/tsconfig.json +6 -0
- package/layers/core/app/assets/css/base.css +88 -0
- package/layers/core/app/assets/css/layout.css +36 -0
- package/layers/core/app/assets/css/main.css +7 -0
- package/layers/core/app/assets/css-backup.zip +0 -0
- package/layers/core/app/components/ErrorBoundary.vue +102 -0
- package/layers/core/app/components/LoadingScreen.vue +137 -0
- package/layers/core/app/composables/useBrowser.ts +161 -0
- package/layers/core/app/composables/useCache.ts +138 -0
- package/layers/core/app/composables/useDevice.ts +36 -0
- package/layers/core/app/composables/useEnv.ts +23 -0
- package/layers/core/app/composables/useErrorLog.ts +158 -0
- package/layers/core/app/composables/useFeatures.ts +269 -0
- package/layers/core/app/composables/useLoading.ts +109 -0
- package/layers/core/app/composables/useNetworkInfo.ts +83 -0
- package/layers/core/app/composables/usePWAInfo.ts +104 -0
- package/layers/core/app/composables/useRendering.ts +97 -0
- package/layers/core/app/composables/useScreen.ts +95 -0
- package/layers/core/app/composables/useScrollGuard.ts +266 -0
- package/layers/core/app/error.vue +103 -0
- package/layers/core/app/layouts/default.vue +4 -0
- package/layers/core/app/pages/[...slug].vue +168 -0
- package/layers/core/app/pages/diagnostics.vue +228 -0
- package/layers/core/app/plugins/error-handler.ts +47 -0
- package/layers/core/app/plugins/feature-detection.client.ts +32 -0
- package/layers/core/app/plugins/init.ts +188 -0
- package/layers/core/app/plugins/loading.client.ts +54 -0
- package/layers/core/app/plugins/scroll-guard.client.ts +53 -0
- package/layers/core/app/types/detection.ts +117 -0
- package/layers/core/app/types/index.ts +10 -0
- package/layers/core/app/types/loading.ts +47 -0
- package/layers/core/app/types/runtime-config.ts +31 -0
- package/layers/core/app/types/scroll-guard.ts +25 -0
- package/layers/core/app/utils/helpers.ts +246 -0
- package/layers/core/app/utils/index.ts +8 -0
- package/layers/core/app/utils/regex.ts +6 -0
- package/layers/core/app.config.ts +193 -0
- package/layers/core/nuxt.config.ts +84 -0
- package/layers/core/package.json +25 -0
- package/layers/core/tailwind.config.js +28 -0
- package/layers/core/tsconfig.json +6 -0
- package/layers/forms/app/components/Form/Contact.vue +78 -0
- package/layers/forms/app/components/Form/Field.vue +85 -0
- package/layers/forms/app/composables/useFormSchema.ts +35 -0
- package/layers/forms/app/config/fields.ts +104 -0
- package/layers/forms/app/types/fields.ts +60 -0
- package/layers/forms/app.config.ts +12 -0
- package/layers/forms/nuxt.config.ts +17 -0
- package/layers/forms/package.json +17 -0
- package/layers/forms/tsconfig.json +6 -0
- package/layers/layout/.nuxtrc +1 -0
- package/layers/layout/CLAUDE.MD +186 -0
- package/layers/layout/GRID_SYSTEM.md +993 -0
- package/layers/layout/README.md +73 -0
- package/layers/layout/app/assets/css/layout/grids.css +180 -0
- package/layers/layout/app/assets/css/main.css +1 -0
- package/layers/layout/app/components/Layout/Grid/Debug.vue +79 -0
- package/layers/layout/app/components/Layout/Grid/Item.vue +180 -0
- package/layers/layout/app/components/Layout/Page/Container.vue +100 -0
- package/layers/layout/app/components/Layout/Page/Header.vue +33 -0
- package/layers/layout/app/components/Layout/Section/Gallery.vue +68 -0
- package/layers/layout/app/components/Layout/Section/Hero.vue +71 -0
- package/layers/layout/app/components/Layout/Section/Split.vue +56 -0
- package/layers/layout/app/components/Layout/Section/index.vue +39 -0
- package/layers/layout/app/composables/GridPlacement.ts +31 -0
- package/layers/layout/app/composables/useGridConfig.ts +27 -0
- package/layers/layout/app/types/layouts.ts +37 -0
- package/layers/layout/app.config.ts +97 -0
- package/layers/layout/nuxt.config.ts +14 -0
- package/layers/layout/package.json +14 -0
- package/layers/layout/tailwind.config.js +28 -0
- package/layers/layout/tsconfig.json +6 -0
- package/layers/motion/README.md +107 -0
- package/layers/motion/TASKS.MD +16 -0
- package/layers/motion/app/assets/css/main.css +111 -0
- package/layers/motion/app/components/Motion/Marquee.vue +171 -0
- package/layers/motion/app/components/Motion/Parallax.vue +75 -0
- package/layers/motion/app/components/Motion/ScrollLink.vue +49 -0
- package/layers/motion/app/components/Motion/ScrollProgress.vue +127 -0
- package/layers/motion/app/components/Motion/ScrollStats.vue +102 -0
- package/layers/motion/app/components/Motion/Staggered.vue +73 -0
- package/layers/motion/app/components/Motion/TextReveal.vue +101 -0
- package/layers/motion/app/components/Motion/Transition.vue +89 -0
- package/layers/motion/app/components/Motion/VelocityEffect.vue +139 -0
- package/layers/motion/app/components/Motion/index.vue +16 -0
- package/layers/motion/app/composables/useGsap.ts +21 -0
- package/layers/motion/app/composables/useMotion.ts +137 -0
- package/layers/motion/app/composables/useSmoothScroll.ts +154 -0
- package/layers/motion/app/plugins/gsap.client.ts +15 -0
- package/layers/motion/app/plugins/locomotive-scroll.client.ts +49 -0
- package/layers/motion/app/utils/gsapAnimations.ts +122 -0
- package/layers/motion/app.config.ts +30 -0
- package/layers/motion/nuxt.config.ts +19 -0
- package/layers/motion/package.json +17 -0
- package/layers/motion/tsconfig.json +6 -0
- package/layers/shader/AGENTS.MD +195 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/.prettierignore +6 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/.prettierrc +18 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/LICENSE +21 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/README.md +100 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/index.html +13 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/jsconfig.json +30 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/package.json +18 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/pnpm-lock.yaml +633 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/public/vite.svg +1 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/components/sketch/webgpu_sketch.js +128 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/components/sketches_dropdown/index.css +87 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/components/sketches_dropdown/sketches_dropdown.js +169 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/index.css +25 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/main.js +93 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/router.js +43 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/sketches/flare-1.js +68 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/sketches/noise/dawn-1.js +56 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/distortion/bulge_distortion.js +35 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/distortion/swirl_distortion.js +35 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/distortion/wave_distortion.js +43 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/noise/common.js +145 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/noise/curl_noise_3d.js +53 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/noise/curl_noise_4d.js +55 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/noise/fbm.js +163 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/noise/perlin_noise_3d.js +70 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/noise/simplex_noise_3d.js +59 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/noise/simplex_noise_4d.js +72 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/noise/turbulence.js +41 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/patterns/canvas_weave_pattern.js +26 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/patterns/grain_texture_pattern.js +10 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/patterns/led_pattern.js +45 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/patterns/pixellation_pattern.js +15 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/patterns/speckled_noise_pattern.js +34 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/patterns/vignette_pattern.js +21 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/bulge_distortion_effect.js +27 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/chromatic_aberration_effect.js +45 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/crt_scanline_effect.js +45 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/dither_effect.js +126 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/grain_texture_effect.js +21 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/halftone_effect.js +44 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/led_effect.js +31 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/pixellation_effect.js +29 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/swirl_distortion_effect.js +25 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/vignette_effect.js +22 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/post_processing/wave_distortion_effect.js +27 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/color/cosine_palette.js +15 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/color/tonemapping.js +151 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/function/bloom.js +13 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/function/bloom_edge_pattern.js +20 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/function/domain_index.js +11 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/function/median3.js +22 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/function/repeating_pattern.js +13 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/function/screen_aspect_uv.js +14 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/lighting.js +60 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/math/complex.js +86 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/math/coordinates.js +119 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/sdf/operations.js +24 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/tsl/utils/sdf/shapes.js +182 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/src/utils/math.js +33 -0
- package/layers/shader/additional-modular-tsl-shaders-for-claude/vite.config.js +23 -0
- package/layers/shader/app/assets/css/main.css +41 -0
- package/layers/shader/app/components/Effect/Bloom.vue +8 -0
- package/layers/shader/app/components/Effect/ChromaticAberration.vue +8 -0
- package/layers/shader/app/components/Effect/PostProcessing.vue +20 -0
- package/layers/shader/app/components/Material/AmbientAurora.vue +172 -0
- package/layers/shader/app/components/Material/AmbientFlow.vue +175 -0
- package/layers/shader/app/components/Material/AmbientGradientMesh.vue +173 -0
- package/layers/shader/app/components/Material/AmbientNebula.vue +181 -0
- package/layers/shader/app/components/Material/AmbientOcean.vue +161 -0
- package/layers/shader/app/components/Material/Fresnel.vue +89 -0
- package/layers/shader/app/components/Material/Gradient.vue +185 -0
- package/layers/shader/app/components/Material/Image.vue +232 -0
- package/layers/shader/app/components/Material/Node.vue +79 -0
- package/layers/shader/app/components/Material/Noise.vue +141 -0
- package/layers/shader/app/components/Mesh/Plane.vue +27 -0
- package/layers/shader/app/components/Shader/Background.vue +159 -0
- package/layers/shader/app/components/Shader/Canvas.vue +97 -0
- package/layers/shader/app/components/Shader/Debug.vue +66 -0
- package/layers/shader/app/components/WebGPUCanvas.client.vue +245 -0
- package/layers/shader/app/composables/useAmbientMaterials.ts +452 -0
- package/layers/shader/app/composables/useMousePosition.ts +94 -0
- package/layers/shader/app/composables/useRendererCapabilities.ts +111 -0
- package/layers/shader/app/composables/useShader.ts +148 -0
- package/layers/shader/app/composables/useShaderTime.ts +146 -0
- package/layers/shader/app/composables/useTSLNodes.ts +112 -0
- package/layers/shader/app/composables/useUniforms.ts +188 -0
- package/layers/shader/app/plugins/shader.client.ts +30 -0
- package/layers/shader/app/shaders/common/blend.ts +255 -0
- package/layers/shader/app/shaders/common/effects.ts +299 -0
- package/layers/shader/app/shaders/common/grain.ts +453 -0
- package/layers/shader/app/shaders/common/index.ts +22 -0
- package/layers/shader/app/shaders/common/lighting.ts +146 -0
- package/layers/shader/app/shaders/common/math.ts +250 -0
- package/layers/shader/app/shaders/common/noise.ts +823 -0
- package/layers/shader/app/shaders/common/noiseHelpers.ts +114 -0
- package/layers/shader/app/shaders/common/palette.ts +319 -0
- package/layers/shader/app/shaders/common/patterns.ts +216 -0
- package/layers/shader/app/shaders/common/sdf.ts +224 -0
- package/layers/shader/app/shaders/common/shapes.ts +366 -0
- package/layers/shader/app/shaders/common/tonemapping.ts +172 -0
- package/layers/shader/app/shaders/common/uv.ts +396 -0
- package/layers/shader/app/shaders/createMaterial.ts +314 -0
- package/layers/shader/app/shaders/index.ts +282 -0
- package/layers/shader/app/shaders/layers/aurora.ts +146 -0
- package/layers/shader/app/shaders/layers/index.ts +19 -0
- package/layers/shader/app/shaders/layers/meshGradient.ts +152 -0
- package/layers/shader/app/shaders/layers/paperShading.ts +148 -0
- package/layers/shader/app/shaders/layers/shaderGradient.ts +152 -0
- package/layers/shader/app/shaders/layers/stripe.ts +137 -0
- package/layers/shader/app/shaders/types.ts +12 -0
- package/layers/shader/app/types/index.ts +4 -0
- package/layers/shader/app/types/materials.ts +45 -0
- package/layers/shader/app/types/renderer.ts +50 -0
- package/layers/shader/app/types/tsl.ts +39 -0
- package/layers/shader/app/types/uniforms.ts +21 -0
- package/layers/shader/app/utils/tsl/animation.ts +251 -0
- package/layers/shader/app/utils/tsl/color.ts +189 -0
- package/layers/shader/app/utils/tsl/index.ts +84 -0
- package/layers/shader/app/utils/tsl/math.ts +111 -0
- package/layers/shader/app/utils/tsl/noise.ts +195 -0
- package/layers/shader/app/utils/tsl/patterns.ts +183 -0
- package/layers/shader/app/utils/tsl/uv.ts +145 -0
- package/layers/shader/app.config.ts +18 -0
- package/layers/shader/modular-tsl-shaders-for-claude/common/blend.tsl +1 -0
- package/layers/shader/modular-tsl-shaders-for-claude/common/noise.tsl +1 -0
- package/layers/shader/modular-tsl-shaders-for-claude/common/shapes.tsl +1 -0
- package/layers/shader/modular-tsl-shaders-for-claude/common/vertexFresnel.tsl +9 -0
- package/layers/shader/modular-tsl-shaders-for-claude/common/vertexPlane.tsl +6 -0
- package/layers/shader/modular-tsl-shaders-for-claude/effects/background.tsl +1 -0
- package/layers/shader/modular-tsl-shaders-for-claude/effects/gradient.tsl +1 -0
- package/layers/shader/modular-tsl-shaders-for-claude/effects/gradientLegend.tsl +1 -0
- package/layers/shader/modular-tsl-shaders-for-claude/effects/simpleGradient.tsl +1 -0
- package/layers/shader/modular-tsl-shaders-for-claude/layers/aurora.ts +1 -0
- package/layers/shader/modular-tsl-shaders-for-claude/layers/fragmentsTech.ts +1 -0
- package/layers/shader/modular-tsl-shaders-for-claude/layers/fresnel.ts +1 -0
- package/layers/shader/modular-tsl-shaders-for-claude/layers/linearGradient.ts +1 -0
- package/layers/shader/modular-tsl-shaders-for-claude/layers/meshGradient.ts +1 -0
- package/layers/shader/modular-tsl-shaders-for-claude/layers/noise.ts +1 -0
- package/layers/shader/modular-tsl-shaders-for-claude/layers/paperShading.ts +1 -0
- package/layers/shader/modular-tsl-shaders-for-claude/layers/radial.ts +1 -0
- package/layers/shader/modular-tsl-shaders-for-claude/layers/shaderGradient.ts +1 -0
- package/layers/shader/modular-tsl-shaders-for-claude/layers/stripe.ts +1 -0
- package/layers/shader/modular-tsl-shaders-for-claude/materials/createMaterial.ts +1 -0
- package/layers/shader/modular-tsl-shaders-for-claude/utils/glslUtils.ts +1 -0
- package/layers/shader/modular-tsl-shaders-for-claude/utils/palette.ts +1 -0
- package/layers/shader/nuxt.config.ts +48 -0
- package/layers/shader/package.json +17 -0
- package/layers/shader/tsconfig.json +6 -0
- package/layers/theme/app/assets/css/theme.css +47 -0
- package/layers/theme/app/components/ThemePicker/AccentButton.vue +51 -0
- package/layers/theme/app/components/ThemePicker/Colors.vue +22 -0
- package/layers/theme/app/components/ThemePicker/Menu.vue +108 -0
- package/layers/theme/app/components/ThemePicker/MenuButton.vue +9 -0
- package/layers/theme/app/composables/useThemePreferences.ts +158 -0
- package/layers/theme/app/plugins/theme.client.ts +5 -0
- package/layers/theme/app/types/theme.ts +34 -0
- package/layers/theme/app.config.ts +14 -0
- package/layers/theme/nuxt.config.ts +46 -0
- package/layers/theme/package.json +14 -0
- package/layers/theme/server/plugins/theme-fouc.ts +51 -0
- package/layers/theme/tsconfig.json +7 -0
- package/layers/ui/CLAUDE.MD +325 -0
- package/layers/ui/app/assets/css/main.css +4 -0
- package/layers/ui/app/components/Links/Group.vue +38 -0
- package/layers/ui/app/components/Links/Named.vue +32 -0
- package/layers/ui/app/components/Media/Picture.vue +41 -0
- package/layers/ui/app/components/Site/Title.vue +15 -0
- package/layers/ui/app/components/Typography/CodeBlock.vue +37 -0
- package/layers/ui/app/components/Typography/Headline.vue +73 -0
- package/layers/ui/app/components/Typography/QuoteBlock.vue +13 -0
- package/layers/ui/app/components/Typography/TextStroke.vue +109 -0
- package/layers/ui/app/components/Typography/index.vue +49 -0
- package/layers/ui/app/composables/color.ts +36 -0
- package/layers/ui/app/composables/picture.ts +145 -0
- package/layers/ui/app/composables/typography.ts +77 -0
- package/layers/ui/app/layouts/default.vue +4 -0
- package/layers/ui/app/pages/index.vue +236 -0
- package/layers/ui/app/types/breakpoints.ts +179 -0
- package/layers/ui/app/types/colors.ts +29 -0
- package/layers/ui/app/types/media.ts +185 -0
- package/layers/ui/app/types/typography.ts +108 -0
- package/layers/ui/app/utils/regex.ts +6 -0
- package/layers/ui/app.config.ts +12 -0
- package/layers/ui/nuxt.config.ts +38 -0
- package/layers/ui/package.json +14 -0
- package/layers/ui/tsconfig.json +6 -0
- package/package.json +128 -0
- package/playgroundOLD/app.config.ts +5 -0
- package/playgroundOLD/nuxt.config.ts +12 -0
- package/pnpm-workspace.yaml +6 -0
- package/prettier.config.cjs +19 -0
- package/stylelint.config.mjs +111 -0
- package/turbo.json +16 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Breakpoint Types
|
|
3
|
+
*
|
|
4
|
+
* Centralized breakpoint definitions matching Tailwind defaults.
|
|
5
|
+
* Used for responsive sizing, layouts, and media queries across the design system.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Responsive breakpoint names matching Tailwind defaults
|
|
10
|
+
*/
|
|
11
|
+
export type ResponsiveBreakpoint = 'sm' | 'md' | 'lg' | 'xl' | '2xl'
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Breakpoint values in pixels
|
|
15
|
+
* Matches Tailwind's default breakpoint system
|
|
16
|
+
*
|
|
17
|
+
* @see https://tailwindcss.com/docs/responsive-design
|
|
18
|
+
*/
|
|
19
|
+
export const BREAKPOINT_VALUES = {
|
|
20
|
+
sm: 640,
|
|
21
|
+
md: 768,
|
|
22
|
+
lg: 1024,
|
|
23
|
+
xl: 1280,
|
|
24
|
+
'2xl': 1536,
|
|
25
|
+
} as const
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Type for breakpoint values object
|
|
29
|
+
*/
|
|
30
|
+
export type BreakpointValues = typeof BREAKPOINT_VALUES
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Type for individual breakpoint keys
|
|
34
|
+
*/
|
|
35
|
+
export type BreakpointKey = keyof typeof BREAKPOINT_VALUES
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Type for breakpoint pixel values
|
|
39
|
+
*/
|
|
40
|
+
export type BreakpointValue = (typeof BREAKPOINT_VALUES)[BreakpointKey]
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Device-based breakpoint names
|
|
44
|
+
* Semantic breakpoints based on common device categories
|
|
45
|
+
*/
|
|
46
|
+
export type DeviceBreakpoint = 'mobile' | 'tablet' | 'desktop' | 'wide'
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Device breakpoint values in pixels
|
|
50
|
+
* Semantic breakpoints for mobile-first responsive design
|
|
51
|
+
*
|
|
52
|
+
* - mobile: 0-639px (default, no min-width)
|
|
53
|
+
* - tablet: 640px+ (tablets and small laptops)
|
|
54
|
+
* - desktop: 1024px+ (laptops and desktops)
|
|
55
|
+
* - wide: 1920px+ (large monitors and 4K displays)
|
|
56
|
+
*/
|
|
57
|
+
export const DEVICE_BREAKPOINT_VALUES = {
|
|
58
|
+
mobile: 0,
|
|
59
|
+
tablet: 640,
|
|
60
|
+
desktop: 1024,
|
|
61
|
+
wide: 1920,
|
|
62
|
+
} as const
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Type for device breakpoint values object
|
|
66
|
+
*/
|
|
67
|
+
export type DeviceBreakpointValues = typeof DEVICE_BREAKPOINT_VALUES
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Type for individual device breakpoint keys
|
|
71
|
+
*/
|
|
72
|
+
export type DeviceBreakpointKey = keyof typeof DEVICE_BREAKPOINT_VALUES
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Type for device breakpoint pixel values
|
|
76
|
+
*/
|
|
77
|
+
export type DeviceBreakpointValue = (typeof DEVICE_BREAKPOINT_VALUES)[DeviceBreakpointKey]
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Phone-specific breakpoint names
|
|
81
|
+
* Granular breakpoints for different phone sizes
|
|
82
|
+
*/
|
|
83
|
+
export type PhoneBreakpoint = 'phone-sm' | 'phone-md' | 'phone-lg'
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Phone breakpoint values in pixels
|
|
87
|
+
* Covers the range of common smartphone screen sizes
|
|
88
|
+
*
|
|
89
|
+
* - phone-sm: 320px+ (iPhone SE, small Android phones)
|
|
90
|
+
* - phone-md: 375px+ (iPhone 12/13/14, standard phones)
|
|
91
|
+
* - phone-lg: 428px+ (iPhone Pro Max, large Android phones)
|
|
92
|
+
*/
|
|
93
|
+
export const PHONE_BREAKPOINT_VALUES = {
|
|
94
|
+
'phone-sm': 320,
|
|
95
|
+
'phone-md': 375,
|
|
96
|
+
'phone-lg': 428,
|
|
97
|
+
} as const
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Type for phone breakpoint values object
|
|
101
|
+
*/
|
|
102
|
+
export type PhoneBreakpointValues = typeof PHONE_BREAKPOINT_VALUES
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Type for individual phone breakpoint keys
|
|
106
|
+
*/
|
|
107
|
+
export type PhoneBreakpointKey = keyof typeof PHONE_BREAKPOINT_VALUES
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Type for phone breakpoint pixel values
|
|
111
|
+
*/
|
|
112
|
+
export type PhoneBreakpointValue = (typeof PHONE_BREAKPOINT_VALUES)[PhoneBreakpointKey]
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Tablet-specific breakpoint names
|
|
116
|
+
* Granular breakpoints for different tablet sizes
|
|
117
|
+
*/
|
|
118
|
+
export type TabletBreakpoint = 'tablet-sm' | 'tablet-md' | 'tablet-lg'
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Tablet breakpoint values in pixels
|
|
122
|
+
* Covers the range of common tablet screen sizes
|
|
123
|
+
*
|
|
124
|
+
* - tablet-sm: 768px+ (iPad mini, small tablets)
|
|
125
|
+
* - tablet-md: 834px+ (iPad, standard tablets)
|
|
126
|
+
* - tablet-lg: 1024px+ (iPad Pro 11", large tablets)
|
|
127
|
+
*/
|
|
128
|
+
export const TABLET_BREAKPOINT_VALUES = {
|
|
129
|
+
'tablet-sm': 768,
|
|
130
|
+
'tablet-md': 834,
|
|
131
|
+
'tablet-lg': 1024,
|
|
132
|
+
} as const
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Type for tablet breakpoint values object
|
|
136
|
+
*/
|
|
137
|
+
export type TabletBreakpointValues = typeof TABLET_BREAKPOINT_VALUES
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Type for individual tablet breakpoint keys
|
|
141
|
+
*/
|
|
142
|
+
export type TabletBreakpointKey = keyof typeof TABLET_BREAKPOINT_VALUES
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Type for tablet breakpoint pixel values
|
|
146
|
+
*/
|
|
147
|
+
export type TabletBreakpointValue = (typeof TABLET_BREAKPOINT_VALUES)[TabletBreakpointKey]
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Device orientation types
|
|
151
|
+
* Used for orientation-specific responsive design
|
|
152
|
+
*/
|
|
153
|
+
export type DeviceOrientation = 'portrait' | 'landscape'
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Orientation breakpoint configuration
|
|
157
|
+
* Maps orientation to media query conditions
|
|
158
|
+
*
|
|
159
|
+
* Note: These are not pixel-based breakpoints, but media query features
|
|
160
|
+
*/
|
|
161
|
+
export const ORIENTATION_BREAKPOINTS = {
|
|
162
|
+
portrait: 'portrait',
|
|
163
|
+
landscape: 'landscape',
|
|
164
|
+
} as const
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Type for orientation breakpoints object
|
|
168
|
+
*/
|
|
169
|
+
export type OrientationBreakpoints = typeof ORIENTATION_BREAKPOINTS
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Combined breakpoint type (all systems)
|
|
173
|
+
*/
|
|
174
|
+
export type AllBreakpoints =
|
|
175
|
+
| ResponsiveBreakpoint
|
|
176
|
+
| DeviceBreakpoint
|
|
177
|
+
| PhoneBreakpoint
|
|
178
|
+
| TabletBreakpoint
|
|
179
|
+
| DeviceOrientation
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/***************************************************************
|
|
2
|
+
UI Primitives - Semantic Color Types
|
|
3
|
+
|
|
4
|
+
`UiSemanticColor` defines neutral or semantic colors for general UI elements.
|
|
5
|
+
`UiStatusColor` defines status-related colors (info, success, warning, error).
|
|
6
|
+
`UiCustomColors` defines custom design colors like accent or secondary.
|
|
7
|
+
`UiBaseColor` defines fundamental colors (black, white).
|
|
8
|
+
`UiColors` is the union of all color types and can be applied to text, backgrounds, borders, or other UI elements.
|
|
9
|
+
`ColorUsage` defines the intended usage of a color in a component.
|
|
10
|
+
***************************************************************/
|
|
11
|
+
|
|
12
|
+
export type ColorUsage = 'text' | 'bg' | 'border'
|
|
13
|
+
|
|
14
|
+
export type UiSemanticColor = 'dimmed' | 'muted' | 'toned' | 'default' | 'highlighted' | 'inverted'
|
|
15
|
+
|
|
16
|
+
export type UiStatusColor = 'info' | 'success' | 'warning' | 'error'
|
|
17
|
+
|
|
18
|
+
export type UiDefaultNuxtUiColors = 'primary' | 'neutral'
|
|
19
|
+
|
|
20
|
+
export type UiCustomColors = 'secondary' | 'accent'
|
|
21
|
+
|
|
22
|
+
export type UiBaseColor = 'black' | 'white'
|
|
23
|
+
|
|
24
|
+
export type UiColors =
|
|
25
|
+
| UiSemanticColor
|
|
26
|
+
| UiStatusColor
|
|
27
|
+
| UiDefaultNuxtUiColors
|
|
28
|
+
| UiCustomColors
|
|
29
|
+
| UiBaseColor
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Media Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for Picture component and usePicture composable.
|
|
5
|
+
* Provides type-safe image optimization, responsive sizing, and format handling.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Supported image formats for optimization
|
|
10
|
+
*/
|
|
11
|
+
export type ImageFormat = 'avif' | 'webp' | 'jpg' | 'jpeg' | 'png' | 'gif' | 'svg'
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Image loading strategy
|
|
15
|
+
*/
|
|
16
|
+
export type ImageLoading = 'lazy' | 'eager'
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Image fit/object-fit behavior
|
|
20
|
+
*/
|
|
21
|
+
export type ImageFit = 'cover' | 'contain' | 'fill' | 'inside' | 'outside'
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Re-export breakpoint types for convenience
|
|
25
|
+
*/
|
|
26
|
+
export type {
|
|
27
|
+
ResponsiveBreakpoint,
|
|
28
|
+
DeviceBreakpoint,
|
|
29
|
+
PhoneBreakpoint,
|
|
30
|
+
TabletBreakpoint,
|
|
31
|
+
DeviceOrientation,
|
|
32
|
+
} from '#layers/ui/app/types/breakpoints'
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Responsive sizes configuration
|
|
36
|
+
* Allows defining different image sizes per breakpoint
|
|
37
|
+
* Supports Tailwind, device, phone, tablet, and orientation breakpoints
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* // Using Tailwind breakpoints
|
|
42
|
+
* const sizes: ResponsiveSizes = {
|
|
43
|
+
* default: '100vw',
|
|
44
|
+
* md: '50vw',
|
|
45
|
+
* lg: '33vw'
|
|
46
|
+
* }
|
|
47
|
+
*
|
|
48
|
+
* // Using device breakpoints
|
|
49
|
+
* const deviceSizes: ResponsiveSizes = {
|
|
50
|
+
* default: '100vw',
|
|
51
|
+
* tablet: '768px',
|
|
52
|
+
* desktop: '1024px'
|
|
53
|
+
* }
|
|
54
|
+
*
|
|
55
|
+
* // Using granular phone breakpoints
|
|
56
|
+
* const phoneSizes: ResponsiveSizes = {
|
|
57
|
+
* default: '100vw',
|
|
58
|
+
* 'phone-sm': '320px',
|
|
59
|
+
* 'phone-md': '375px',
|
|
60
|
+
* 'phone-lg': '428px'
|
|
61
|
+
* }
|
|
62
|
+
*
|
|
63
|
+
* // Using orientation breakpoints
|
|
64
|
+
* const orientationSizes: ResponsiveSizes = {
|
|
65
|
+
* default: '100vw',
|
|
66
|
+
* portrait: '100vw',
|
|
67
|
+
* landscape: '50vw'
|
|
68
|
+
* }
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export interface ResponsiveSizes {
|
|
72
|
+
default: string
|
|
73
|
+
// Tailwind breakpoints
|
|
74
|
+
sm?: string
|
|
75
|
+
md?: string
|
|
76
|
+
lg?: string
|
|
77
|
+
xl?: string
|
|
78
|
+
'2xl'?: string
|
|
79
|
+
// Device breakpoints
|
|
80
|
+
mobile?: string
|
|
81
|
+
tablet?: string
|
|
82
|
+
desktop?: string
|
|
83
|
+
wide?: string
|
|
84
|
+
// Phone breakpoints
|
|
85
|
+
'phone-sm'?: string
|
|
86
|
+
'phone-md'?: string
|
|
87
|
+
'phone-lg'?: string
|
|
88
|
+
// Tablet breakpoints
|
|
89
|
+
'tablet-sm'?: string
|
|
90
|
+
'tablet-md'?: string
|
|
91
|
+
'tablet-lg'?: string
|
|
92
|
+
// Orientation breakpoints
|
|
93
|
+
portrait?: string
|
|
94
|
+
landscape?: string
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Props for Picture component
|
|
99
|
+
* Wraps NuxtPicture with sensible defaults and responsive sizing
|
|
100
|
+
*/
|
|
101
|
+
export interface PictureProps {
|
|
102
|
+
// Required props
|
|
103
|
+
/** Image source URL or path */
|
|
104
|
+
src: string
|
|
105
|
+
/** Alt text for accessibility (required) */
|
|
106
|
+
alt: string
|
|
107
|
+
|
|
108
|
+
// Dimensions
|
|
109
|
+
/** Image width in pixels */
|
|
110
|
+
width?: number
|
|
111
|
+
/** Image height in pixels */
|
|
112
|
+
height?: number
|
|
113
|
+
|
|
114
|
+
// Responsive sizing
|
|
115
|
+
/**
|
|
116
|
+
* Responsive sizes - can be a string or ResponsiveSizes object
|
|
117
|
+
* @example '(min-width: 1024px) 1024px, 100vw'
|
|
118
|
+
* @example { default: '100vw', md: '50vw', lg: '33vw' }
|
|
119
|
+
*/
|
|
120
|
+
sizes?: string | ResponsiveSizes
|
|
121
|
+
|
|
122
|
+
// Formats & optimization
|
|
123
|
+
/**
|
|
124
|
+
* Image formats to generate (comma-separated)
|
|
125
|
+
* @example 'avif,webp,jpg'
|
|
126
|
+
* @default 'webp'
|
|
127
|
+
*/
|
|
128
|
+
format?: string
|
|
129
|
+
/**
|
|
130
|
+
* Image quality (0-100)
|
|
131
|
+
* @default 80
|
|
132
|
+
*/
|
|
133
|
+
quality?: number
|
|
134
|
+
/**
|
|
135
|
+
* Image fit behavior
|
|
136
|
+
* @default 'cover'
|
|
137
|
+
*/
|
|
138
|
+
fit?: ImageFit
|
|
139
|
+
|
|
140
|
+
// Loading strategy
|
|
141
|
+
/**
|
|
142
|
+
* Loading strategy
|
|
143
|
+
* @default 'lazy'
|
|
144
|
+
*/
|
|
145
|
+
loading?: ImageLoading
|
|
146
|
+
/**
|
|
147
|
+
* Fetch priority hint
|
|
148
|
+
* @default 'auto'
|
|
149
|
+
*/
|
|
150
|
+
fetchpriority?: 'high' | 'low' | 'auto'
|
|
151
|
+
|
|
152
|
+
// Nuxt Image specific
|
|
153
|
+
/** Image provider - defaults to 'ipx' (Nuxt's built-in image optimizer) */
|
|
154
|
+
provider?: 'ipx'
|
|
155
|
+
/** Nuxt Image preset name */
|
|
156
|
+
preset?: string
|
|
157
|
+
/**
|
|
158
|
+
* Pixel density descriptors
|
|
159
|
+
* @example 'x1 x2'
|
|
160
|
+
*/
|
|
161
|
+
densities?: string
|
|
162
|
+
|
|
163
|
+
// Styling
|
|
164
|
+
/** Class for picture wrapper element */
|
|
165
|
+
class?: string
|
|
166
|
+
/** Class for img element */
|
|
167
|
+
imgClass?: string
|
|
168
|
+
|
|
169
|
+
// Performance
|
|
170
|
+
/**
|
|
171
|
+
* Image decoding strategy
|
|
172
|
+
* @default 'async'
|
|
173
|
+
*/
|
|
174
|
+
decoding?: 'sync' | 'async' | 'auto'
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Return type for usePicture composable
|
|
179
|
+
*/
|
|
180
|
+
export interface UsePictureReturn {
|
|
181
|
+
/** Computed sizes attribute string */
|
|
182
|
+
sizesString: import('vue').ComputedRef<string>
|
|
183
|
+
/** Computed format string */
|
|
184
|
+
computedFormat: import('vue').ComputedRef<string>
|
|
185
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// ui/types/typography.ts
|
|
2
|
+
|
|
3
|
+
/* ======================================================
|
|
4
|
+
Typography Tags
|
|
5
|
+
- Supported HTML tags for typography components
|
|
6
|
+
====================================================== */
|
|
7
|
+
|
|
8
|
+
export type TypographyTag =
|
|
9
|
+
| 'h1'
|
|
10
|
+
| 'h2'
|
|
11
|
+
| 'h3'
|
|
12
|
+
| 'h4'
|
|
13
|
+
| 'h5'
|
|
14
|
+
| 'h6'
|
|
15
|
+
| 'p'
|
|
16
|
+
| 'span'
|
|
17
|
+
| 'li'
|
|
18
|
+
| 'pre'
|
|
19
|
+
| 'code'
|
|
20
|
+
| 'blockquote'
|
|
21
|
+
|
|
22
|
+
/* ======================================================
|
|
23
|
+
Font Weight
|
|
24
|
+
- Supports Tailwind utilities
|
|
25
|
+
- Supports numeric variable-axis overrides (wght)
|
|
26
|
+
====================================================== */
|
|
27
|
+
|
|
28
|
+
export type FontWeightNumber = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900
|
|
29
|
+
|
|
30
|
+
export type FontWeight =
|
|
31
|
+
| 'font-thin'
|
|
32
|
+
| 'font-extralight'
|
|
33
|
+
| 'font-light'
|
|
34
|
+
| 'font-normal'
|
|
35
|
+
| 'font-medium'
|
|
36
|
+
| 'font-semibold'
|
|
37
|
+
| 'font-bold'
|
|
38
|
+
| 'font-extrabold'
|
|
39
|
+
| 'font-black'
|
|
40
|
+
| FontWeightNumber
|
|
41
|
+
|
|
42
|
+
/* ======================================================
|
|
43
|
+
Font Width
|
|
44
|
+
- Semantic abstraction over wdth axis
|
|
45
|
+
====================================================== */
|
|
46
|
+
|
|
47
|
+
export type FontWidth = 'condensed' | 'normal' | 'expanded' | number // variable wdth axis override
|
|
48
|
+
|
|
49
|
+
/* ======================================================
|
|
50
|
+
Font Slant
|
|
51
|
+
- slnt / ital axis abstraction
|
|
52
|
+
====================================================== */
|
|
53
|
+
|
|
54
|
+
export type FontSlant = 'normal' | 'italic' | 'oblique' | number // variable slnt axis override
|
|
55
|
+
|
|
56
|
+
/* ======================================================
|
|
57
|
+
Line Height (Leading)
|
|
58
|
+
====================================================== */
|
|
59
|
+
|
|
60
|
+
export type FontLeadingNumber = 0.9 | 1 | 1.1 | 1.2 | 1.25 | 1.3 | 1.4 | 1.5 | 1.6 | 1.75 | 2
|
|
61
|
+
|
|
62
|
+
export type FontLeading =
|
|
63
|
+
| 'leading-none'
|
|
64
|
+
| 'leading-tight'
|
|
65
|
+
| 'leading-snug'
|
|
66
|
+
| 'leading-normal'
|
|
67
|
+
| 'leading-relaxed'
|
|
68
|
+
| 'leading-loose'
|
|
69
|
+
| FontLeadingNumber
|
|
70
|
+
|
|
71
|
+
/* ======================================================
|
|
72
|
+
Letter Spacing (Tracking)
|
|
73
|
+
====================================================== */
|
|
74
|
+
|
|
75
|
+
export type FontTrackingNumber = -0.05 | -0.025 | 0 | 0.025 | 0.05 | 0.075 | 0.1
|
|
76
|
+
|
|
77
|
+
export type FontTracking =
|
|
78
|
+
| 'tracking-tighter'
|
|
79
|
+
| 'tracking-tight'
|
|
80
|
+
| 'tracking-normal'
|
|
81
|
+
| 'tracking-wide'
|
|
82
|
+
| 'tracking-wider'
|
|
83
|
+
| 'tracking-widest'
|
|
84
|
+
| FontTrackingNumber
|
|
85
|
+
|
|
86
|
+
/* ======================================================
|
|
87
|
+
Text Layout
|
|
88
|
+
====================================================== */
|
|
89
|
+
|
|
90
|
+
export type TextAlign = 'left' | 'center' | 'right' | 'justify'
|
|
91
|
+
|
|
92
|
+
export type TextTransform = 'none' | 'uppercase' | 'lowercase' | 'capitalize'
|
|
93
|
+
|
|
94
|
+
/* ======================================================
|
|
95
|
+
Base Typography Props
|
|
96
|
+
- Used by Text / Heading / Prose components
|
|
97
|
+
====================================================== */
|
|
98
|
+
|
|
99
|
+
export interface TypographyProps {
|
|
100
|
+
as?: keyof HTMLElementTagNameMap
|
|
101
|
+
weight?: FontWeight
|
|
102
|
+
width?: FontWidth
|
|
103
|
+
slant?: FontSlant
|
|
104
|
+
leading?: FontLeading
|
|
105
|
+
tracking?: FontTracking
|
|
106
|
+
align?: TextAlign
|
|
107
|
+
transform?: TextTransform
|
|
108
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// https://nuxt.com/docs/api/configuration/nuxt-config
|
|
2
|
+
export default defineNuxtConfig({
|
|
3
|
+
$meta: {
|
|
4
|
+
name: 'ui',
|
|
5
|
+
},
|
|
6
|
+
|
|
7
|
+
// Only extend core when running standalone dev (via dev:ui script)
|
|
8
|
+
extends: process.env.UI_STANDALONE ? ['../core'] : [],
|
|
9
|
+
|
|
10
|
+
alias: {
|
|
11
|
+
'#layers/ui': import.meta.dirname,
|
|
12
|
+
},
|
|
13
|
+
|
|
14
|
+
modules: [
|
|
15
|
+
'@nuxt/eslint',
|
|
16
|
+
'@nuxt/ui',
|
|
17
|
+
// '@nuxt/image'
|
|
18
|
+
],
|
|
19
|
+
|
|
20
|
+
css: ['#layers/ui/app/assets/css/main.css'],
|
|
21
|
+
|
|
22
|
+
// devtools: {
|
|
23
|
+
// enabled: true,
|
|
24
|
+
// },
|
|
25
|
+
|
|
26
|
+
compatibilityDate: '2026-01-24',
|
|
27
|
+
|
|
28
|
+
typescript: {
|
|
29
|
+
typeCheck: true,
|
|
30
|
+
strict: true,
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
// vite: {
|
|
34
|
+
// build: {
|
|
35
|
+
// target: 'es2020',
|
|
36
|
+
// },
|
|
37
|
+
// },
|
|
38
|
+
})
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ui",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "0.0.1",
|
|
5
|
+
"main": "./nuxt.config.ts",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"dev": "nuxi dev .playground",
|
|
8
|
+
"dev:ui": "UI_STANDALONE=true nuxi dev",
|
|
9
|
+
"dev:prepare": "nuxt prepare .playground",
|
|
10
|
+
"build": "UI_STANDALONE=true nuxi build",
|
|
11
|
+
"generate": "UI_STANDALONE=true nuxi generate",
|
|
12
|
+
"preview": "nuxt preview .playground"
|
|
13
|
+
}
|
|
14
|
+
}
|