bsmnt 0.0.2 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/release.yml +2 -0
- package/CHANGELOG.md +21 -0
- package/CLAUDE.md +42 -23
- package/README.md +33 -11
- package/biome.json +1 -0
- package/bun.lock +1 -1
- package/docs/architecture.drawio +266 -0
- package/docs/architecture.mermaid +91 -0
- package/package.json +1 -1
- package/{bin → packages/cli/bin}/index.js +28 -27
- package/packages/cli/package.json +16 -0
- package/{src → packages/cli/src}/commands/add-integration.js +23 -25
- package/{src → packages/cli/src}/commands/create.js +104 -133
- package/packages/create-basement-app/integrations/basehub/config.js +21 -0
- package/packages/create-basement-app/integrations/sanity/config.js +46 -0
- package/{src → packages/create-basement-app/integrations/sanity}/mergers/check-integration-merger.js +1 -1
- package/{src → packages/create-basement-app/integrations/sanity}/mergers/layout-merger.js +1 -1
- package/{src → packages/create-basement-app/integrations/sanity}/mergers/sitemap-merger.js +1 -1
- package/packages/create-basement-app/package.json +10 -0
- package/packages/create-basement-app/src/configs/animations.js +28 -0
- package/packages/create-basement-app/src/index.js +15 -0
- package/packages/create-basement-app/src/mergers/check-integration-merger.js +105 -0
- package/{src → packages/create-basement-app/src}/mergers/config.js +1 -7
- package/{src → packages/create-basement-app/src}/mergers/index.js +87 -93
- package/packages/create-basement-app/src/mergers/layout-merger.js +223 -0
- package/packages/create-basement-app/src/mergers/sitemap-merger.js +121 -0
- package/packages/create-basement-app/template-hooks/config.js +38 -0
- package/packages/create-basement-app/templates/default/.biome/plugins/README.md +21 -0
- package/packages/create-basement-app/templates/default/.biome/plugins/no-anchor-element.grit +12 -0
- package/packages/create-basement-app/templates/default/.biome/plugins/no-relative-parent-imports.grit +10 -0
- package/packages/create-basement-app/templates/default/.biome/plugins/no-unnecessary-forwardref.grit +9 -0
- package/packages/create-basement-app/templates/default/.cursor/rules/README.md +184 -0
- package/packages/create-basement-app/templates/default/.cursor/rules/architecture.mdc +437 -0
- package/packages/create-basement-app/templates/default/.cursor/rules/components.mdc +436 -0
- package/packages/create-basement-app/templates/default/.cursor/rules/integrations.mdc +447 -0
- package/packages/create-basement-app/templates/default/.cursor/rules/main.mdc +278 -0
- package/packages/create-basement-app/templates/default/.cursor/rules/styling.mdc +433 -0
- package/packages/create-basement-app/templates/default/.editorconfig +40 -0
- package/packages/create-basement-app/templates/default/.env.example +81 -0
- package/packages/create-basement-app/templates/default/.gitattributes +19 -0
- package/packages/create-basement-app/templates/default/.github/PULL_REQUEST_TEMPLATE.md +14 -0
- package/packages/create-basement-app/templates/default/.github/workflows/lighthouse-to-slack.yml +136 -0
- package/packages/create-basement-app/templates/default/.vscode/extensions.json +20 -0
- package/packages/create-basement-app/templates/default/.vscode/settings.json +105 -0
- package/packages/create-basement-app/templates/default/README.md +221 -0
- package/packages/create-basement-app/templates/default/_gitignore +67 -0
- package/packages/create-basement-app/templates/default/app/favicon.ico +0 -0
- package/packages/create-basement-app/templates/default/app/layout.tsx +104 -0
- package/packages/create-basement-app/templates/default/app/page.tsx +275 -0
- package/packages/create-basement-app/templates/default/app/robots.ts +15 -0
- package/packages/create-basement-app/templates/default/app/sitemap.ts +16 -0
- package/packages/create-basement-app/templates/default/biome.json +250 -0
- package/packages/create-basement-app/templates/default/components/basement.svg +1 -0
- package/packages/create-basement-app/templates/default/components/layout/footer/index.tsx +27 -0
- package/packages/create-basement-app/templates/default/components/layout/header/index.tsx +11 -0
- package/packages/create-basement-app/templates/default/components/layout/theme/index.tsx +66 -0
- package/packages/create-basement-app/templates/default/components/layout/wrapper/index.tsx +65 -0
- package/packages/create-basement-app/templates/default/components/ui/README.md +77 -0
- package/packages/create-basement-app/templates/default/components/ui/image/README.md +37 -0
- package/packages/create-basement-app/templates/default/components/ui/image/index.tsx +224 -0
- package/packages/create-basement-app/templates/default/components/ui/link/index.tsx +146 -0
- package/packages/create-basement-app/templates/default/lib/README.md +33 -0
- package/packages/create-basement-app/templates/default/lib/hooks/index.ts +12 -0
- package/packages/create-basement-app/templates/default/lib/hooks/use-device-detection.ts +81 -0
- package/packages/create-basement-app/templates/default/lib/hooks/use-media-breakpoint.ts +15 -0
- package/packages/create-basement-app/templates/default/lib/hooks/use-prefetch.ts +74 -0
- package/packages/create-basement-app/templates/default/lib/scripts/dev.ts +52 -0
- package/packages/create-basement-app/templates/default/lib/scripts/generate-component.ts +322 -0
- package/packages/create-basement-app/templates/default/lib/scripts/generate-page.ts +193 -0
- package/packages/create-basement-app/templates/default/lib/scripts/generate.ts +79 -0
- package/packages/create-basement-app/templates/default/lib/scripts/utils.ts +246 -0
- package/packages/create-basement-app/templates/default/lib/store/app.ts +11 -0
- package/packages/create-basement-app/templates/default/lib/store/index.ts +11 -0
- package/packages/create-basement-app/templates/default/lib/styles/README.md +64 -0
- package/packages/create-basement-app/templates/default/lib/styles/cn.ts +7 -0
- package/packages/create-basement-app/templates/default/lib/styles/colors.ts +63 -0
- package/packages/create-basement-app/templates/default/lib/styles/config.ts +34 -0
- package/packages/create-basement-app/templates/default/lib/styles/css/global.css +85 -0
- package/packages/create-basement-app/templates/default/lib/styles/css/index.css +6 -0
- package/packages/create-basement-app/templates/default/lib/styles/css/reset.css +166 -0
- package/packages/create-basement-app/templates/default/lib/styles/css/root.css +68 -0
- package/packages/create-basement-app/templates/default/lib/styles/css/tailwind.css +132 -0
- package/packages/create-basement-app/templates/default/lib/styles/easings.ts +21 -0
- package/packages/create-basement-app/templates/default/lib/styles/fonts.ts +28 -0
- package/packages/create-basement-app/templates/default/lib/styles/index.ts +12 -0
- package/packages/create-basement-app/templates/default/lib/styles/layout.mjs +27 -0
- package/packages/create-basement-app/templates/default/lib/styles/scripts/README.md +29 -0
- package/packages/create-basement-app/templates/default/lib/styles/scripts/generate-root.ts +57 -0
- package/packages/create-basement-app/templates/default/lib/styles/scripts/generate-tailwind.ts +162 -0
- package/packages/create-basement-app/templates/default/lib/styles/scripts/postcss-functions.mjs +168 -0
- package/packages/create-basement-app/templates/default/lib/styles/scripts/setup-styles.ts +24 -0
- package/packages/create-basement-app/templates/default/lib/styles/scripts/utils.ts +20 -0
- package/packages/create-basement-app/templates/default/lib/styles/typography.ts +36 -0
- package/packages/create-basement-app/templates/default/lib/utils/README.md +40 -0
- package/packages/create-basement-app/templates/default/lib/utils/css.d.ts +21 -0
- package/packages/create-basement-app/templates/default/lib/utils/easings.ts +240 -0
- package/packages/create-basement-app/templates/default/lib/utils/fetch.ts +84 -0
- package/packages/create-basement-app/templates/default/lib/utils/math.test.ts +221 -0
- package/packages/create-basement-app/templates/default/lib/utils/math.ts +236 -0
- package/packages/create-basement-app/templates/default/lib/utils/metadata.ts +126 -0
- package/packages/create-basement-app/templates/default/lib/utils/strings.test.ts +166 -0
- package/packages/create-basement-app/templates/default/lib/utils/strings.ts +246 -0
- package/packages/create-basement-app/templates/default/lib/utils/types.d.ts +15 -0
- package/packages/create-basement-app/templates/default/lib/utils/viewport.test.ts +256 -0
- package/packages/create-basement-app/templates/default/lib/utils/viewport.ts +193 -0
- package/packages/create-basement-app/templates/default/next.config.ts +142 -0
- package/packages/create-basement-app/templates/default/package.json +62 -0
- package/packages/create-basement-app/templates/default/postcss.config.mjs +42 -0
- package/packages/create-basement-app/templates/default/public/fonts/geist/Geist-Mono.woff2 +0 -0
- package/packages/create-basement-app/templates/default/tsconfig.json +43 -0
- package/packages/create-basement-app/templates/experiment/.biome/plugins/README.md +21 -0
- package/packages/create-basement-app/templates/experiment/.biome/plugins/no-anchor-element.grit +12 -0
- package/packages/create-basement-app/templates/experiment/.biome/plugins/no-relative-parent-imports.grit +10 -0
- package/packages/create-basement-app/templates/experiment/.biome/plugins/no-unnecessary-forwardref.grit +9 -0
- package/packages/create-basement-app/templates/experiment/.cursor/rules/README.md +184 -0
- package/packages/create-basement-app/templates/experiment/.cursor/rules/architecture.mdc +437 -0
- package/packages/create-basement-app/templates/experiment/.cursor/rules/components.mdc +436 -0
- package/packages/create-basement-app/templates/experiment/.cursor/rules/integrations.mdc +447 -0
- package/packages/create-basement-app/templates/experiment/.cursor/rules/main.mdc +278 -0
- package/packages/create-basement-app/templates/experiment/.cursor/rules/styling.mdc +433 -0
- package/packages/create-basement-app/templates/experiment/.editorconfig +40 -0
- package/packages/create-basement-app/templates/experiment/.env.example +81 -0
- package/packages/create-basement-app/templates/experiment/.gitattributes +19 -0
- package/packages/create-basement-app/templates/experiment/.github/PULL_REQUEST_TEMPLATE.md +14 -0
- package/packages/create-basement-app/templates/experiment/.github/workflows/lighthouse-to-slack.yml +136 -0
- package/packages/create-basement-app/templates/experiment/.vscode/extensions.json +20 -0
- package/packages/create-basement-app/templates/experiment/.vscode/settings.json +105 -0
- package/packages/create-basement-app/templates/experiment/README.md +221 -0
- package/packages/create-basement-app/templates/experiment/_gitignore +67 -0
- package/packages/create-basement-app/templates/experiment/app/favicon.ico +0 -0
- package/packages/create-basement-app/templates/experiment/app/layout.tsx +104 -0
- package/packages/create-basement-app/templates/experiment/app/page.tsx +275 -0
- package/packages/create-basement-app/templates/experiment/app/robots.ts +15 -0
- package/packages/create-basement-app/templates/experiment/app/sitemap.ts +16 -0
- package/packages/create-basement-app/templates/experiment/biome.json +250 -0
- package/packages/create-basement-app/templates/experiment/components/basement.svg +1 -0
- package/packages/create-basement-app/templates/experiment/components/layout/footer/index.tsx +27 -0
- package/packages/create-basement-app/templates/experiment/components/layout/header/index.tsx +58 -0
- package/packages/create-basement-app/templates/experiment/components/layout/navigation-menu.tsx +127 -0
- package/packages/create-basement-app/templates/experiment/components/layout/theme/index.tsx +66 -0
- package/packages/create-basement-app/templates/experiment/components/layout/wrapper/index.tsx +65 -0
- package/packages/create-basement-app/templates/experiment/components/ui/README.md +77 -0
- package/packages/create-basement-app/templates/experiment/components/ui/image/README.md +37 -0
- package/packages/create-basement-app/templates/experiment/components/ui/image/index.tsx +224 -0
- package/packages/create-basement-app/templates/experiment/components/ui/link/index.tsx +146 -0
- package/packages/create-basement-app/templates/experiment/lib/README.md +33 -0
- package/packages/create-basement-app/templates/experiment/lib/constants.ts +12 -0
- package/packages/create-basement-app/templates/experiment/lib/hooks/index.ts +12 -0
- package/packages/create-basement-app/templates/experiment/lib/hooks/use-device-detection.ts +81 -0
- package/packages/create-basement-app/templates/experiment/lib/hooks/use-media-breakpoint.ts +15 -0
- package/packages/create-basement-app/templates/experiment/lib/hooks/use-prefetch.ts +74 -0
- package/packages/create-basement-app/templates/experiment/lib/integrations/.gitkeep +0 -0
- package/packages/create-basement-app/templates/experiment/lib/scripts/dev.ts +52 -0
- package/packages/create-basement-app/templates/experiment/lib/scripts/generate-component.ts +322 -0
- package/packages/create-basement-app/templates/experiment/lib/scripts/generate-page.ts +193 -0
- package/packages/create-basement-app/templates/experiment/lib/scripts/generate.ts +79 -0
- package/packages/create-basement-app/templates/experiment/lib/scripts/utils.ts +246 -0
- package/packages/create-basement-app/templates/experiment/lib/store/app.ts +11 -0
- package/packages/create-basement-app/templates/experiment/lib/store/index.ts +11 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/README.md +64 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/cn.ts +7 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/colors.ts +63 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/config.ts +34 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/css/global.css +85 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/css/index.css +6 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/css/reset.css +166 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/css/root.css +68 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/css/tailwind.css +132 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/easings.ts +21 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/fonts.ts +28 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/index.ts +12 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/layout.mjs +27 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/scripts/README.md +29 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/scripts/generate-root.ts +57 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/scripts/generate-tailwind.ts +162 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/scripts/postcss-functions.mjs +168 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/scripts/setup-styles.ts +24 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/scripts/utils.ts +20 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/typography.ts +36 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/README.md +40 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/css.d.ts +21 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/easings.ts +240 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/fetch.ts +84 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/math.test.ts +221 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/math.ts +236 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/metadata.ts +126 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/strings.test.ts +166 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/strings.ts +246 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/types.d.ts +15 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/viewport.test.ts +256 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/viewport.ts +193 -0
- package/packages/create-basement-app/templates/experiment/next.config.ts +142 -0
- package/packages/create-basement-app/templates/experiment/package.json +69 -0
- package/packages/create-basement-app/templates/experiment/postcss.config.mjs +42 -0
- package/packages/create-basement-app/templates/experiment/public/fonts/geist/Geist-Mono.woff2 +0 -0
- package/packages/create-basement-app/templates/experiment/tsconfig.json +43 -0
- package/packages/create-basement-app/templates/webgl/.biome/plugins/README.md +21 -0
- package/packages/create-basement-app/templates/webgl/.biome/plugins/no-anchor-element.grit +12 -0
- package/packages/create-basement-app/templates/webgl/.biome/plugins/no-relative-parent-imports.grit +10 -0
- package/packages/create-basement-app/templates/webgl/.biome/plugins/no-unnecessary-forwardref.grit +9 -0
- package/packages/create-basement-app/templates/webgl/.cursor/rules/README.md +184 -0
- package/packages/create-basement-app/templates/webgl/.cursor/rules/architecture.mdc +437 -0
- package/packages/create-basement-app/templates/webgl/.cursor/rules/components.mdc +436 -0
- package/packages/create-basement-app/templates/webgl/.cursor/rules/integrations.mdc +447 -0
- package/packages/create-basement-app/templates/webgl/.cursor/rules/main.mdc +278 -0
- package/packages/create-basement-app/templates/webgl/.cursor/rules/styling.mdc +433 -0
- package/packages/create-basement-app/templates/webgl/.editorconfig +40 -0
- package/packages/create-basement-app/templates/webgl/.env.example +81 -0
- package/packages/create-basement-app/templates/webgl/.gitattributes +19 -0
- package/packages/create-basement-app/templates/webgl/.github/PULL_REQUEST_TEMPLATE.md +14 -0
- package/packages/create-basement-app/templates/webgl/.github/workflows/lighthouse-to-slack.yml +136 -0
- package/packages/create-basement-app/templates/webgl/.vscode/extensions.json +20 -0
- package/packages/create-basement-app/templates/webgl/.vscode/settings.json +105 -0
- package/packages/create-basement-app/templates/webgl/README.md +221 -0
- package/packages/create-basement-app/templates/webgl/_gitignore +67 -0
- package/packages/create-basement-app/templates/webgl/app/favicon.ico +0 -0
- package/packages/create-basement-app/templates/webgl/app/layout.tsx +104 -0
- package/packages/create-basement-app/templates/webgl/app/page.tsx +10 -0
- package/packages/create-basement-app/templates/webgl/app/robots.ts +15 -0
- package/packages/create-basement-app/templates/webgl/app/sitemap.ts +16 -0
- package/packages/create-basement-app/templates/webgl/biome.json +250 -0
- package/packages/create-basement-app/templates/webgl/components/basement.svg +1 -0
- package/packages/create-basement-app/templates/webgl/components/layout/footer/index.tsx +27 -0
- package/packages/create-basement-app/templates/webgl/components/layout/header/index.tsx +11 -0
- package/packages/create-basement-app/templates/webgl/components/layout/theme/index.tsx +66 -0
- package/packages/create-basement-app/templates/webgl/components/layout/wrapper/index.tsx +65 -0
- package/packages/create-basement-app/templates/webgl/components/ui/README.md +77 -0
- package/packages/create-basement-app/templates/webgl/components/ui/image/README.md +37 -0
- package/packages/create-basement-app/templates/webgl/components/ui/image/index.tsx +224 -0
- package/packages/create-basement-app/templates/webgl/components/ui/link/index.tsx +146 -0
- package/packages/create-basement-app/templates/webgl/components/webgl/canvas/dynamic.tsx +34 -0
- package/packages/create-basement-app/templates/webgl/components/webgl/canvas/index.tsx +43 -0
- package/packages/create-basement-app/templates/webgl/components/webgl/components/scene/index.tsx +21 -0
- package/packages/create-basement-app/templates/webgl/lib/README.md +33 -0
- package/packages/create-basement-app/templates/webgl/lib/hooks/index.ts +12 -0
- package/packages/create-basement-app/templates/webgl/lib/hooks/use-device-detection.ts +81 -0
- package/packages/create-basement-app/templates/webgl/lib/hooks/use-media-breakpoint.ts +15 -0
- package/packages/create-basement-app/templates/webgl/lib/hooks/use-prefetch.ts +74 -0
- package/packages/create-basement-app/templates/webgl/lib/integrations/.gitkeep +0 -0
- package/packages/create-basement-app/templates/webgl/lib/scripts/dev.ts +52 -0
- package/packages/create-basement-app/templates/webgl/lib/scripts/generate-component.ts +322 -0
- package/packages/create-basement-app/templates/webgl/lib/scripts/generate-page.ts +193 -0
- package/packages/create-basement-app/templates/webgl/lib/scripts/generate.ts +79 -0
- package/packages/create-basement-app/templates/webgl/lib/scripts/utils.ts +246 -0
- package/packages/create-basement-app/templates/webgl/lib/store/app.ts +11 -0
- package/packages/create-basement-app/templates/webgl/lib/store/index.ts +11 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/README.md +64 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/cn.ts +7 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/colors.ts +63 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/config.ts +34 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/css/global.css +85 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/css/index.css +6 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/css/reset.css +166 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/css/root.css +68 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/css/tailwind.css +132 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/easings.ts +21 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/fonts.ts +28 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/index.ts +12 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/layout.mjs +27 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/scripts/README.md +29 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/scripts/generate-root.ts +57 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/scripts/generate-tailwind.ts +162 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/scripts/postcss-functions.mjs +168 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/scripts/setup-styles.ts +24 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/scripts/utils.ts +20 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/typography.ts +36 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/README.md +40 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/css.d.ts +21 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/easings.ts +240 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/fetch.ts +84 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/math.test.ts +221 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/math.ts +236 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/metadata.ts +126 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/strings.test.ts +166 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/strings.ts +246 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/types.d.ts +15 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/viewport.test.ts +256 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/viewport.ts +193 -0
- package/packages/create-basement-app/templates/webgl/next.config.ts +142 -0
- package/packages/create-basement-app/templates/webgl/package.json +68 -0
- package/packages/create-basement-app/templates/webgl/postcss.config.mjs +42 -0
- package/packages/create-basement-app/templates/webgl/public/fonts/geist/Geist-Mono.woff2 +0 -0
- package/packages/create-basement-app/templates/webgl/tsconfig.json +43 -0
- package/packages/create-basement-app/templates/webgpu/.biome/plugins/README.md +21 -0
- package/packages/create-basement-app/templates/webgpu/.biome/plugins/no-anchor-element.grit +12 -0
- package/packages/create-basement-app/templates/webgpu/.biome/plugins/no-relative-parent-imports.grit +10 -0
- package/packages/create-basement-app/templates/webgpu/.biome/plugins/no-unnecessary-forwardref.grit +9 -0
- package/packages/create-basement-app/templates/webgpu/.cursor/rules/README.md +184 -0
- package/packages/create-basement-app/templates/webgpu/.cursor/rules/architecture.mdc +437 -0
- package/packages/create-basement-app/templates/webgpu/.cursor/rules/components.mdc +436 -0
- package/packages/create-basement-app/templates/webgpu/.cursor/rules/integrations.mdc +447 -0
- package/packages/create-basement-app/templates/webgpu/.cursor/rules/main.mdc +278 -0
- package/packages/create-basement-app/templates/webgpu/.cursor/rules/styling.mdc +433 -0
- package/packages/create-basement-app/templates/webgpu/.editorconfig +40 -0
- package/packages/create-basement-app/templates/webgpu/.env.example +81 -0
- package/packages/create-basement-app/templates/webgpu/.gitattributes +19 -0
- package/packages/create-basement-app/templates/webgpu/.github/PULL_REQUEST_TEMPLATE.md +14 -0
- package/packages/create-basement-app/templates/webgpu/.github/workflows/lighthouse-to-slack.yml +136 -0
- package/packages/create-basement-app/templates/webgpu/.vscode/extensions.json +20 -0
- package/packages/create-basement-app/templates/webgpu/.vscode/settings.json +105 -0
- package/packages/create-basement-app/templates/webgpu/README.md +221 -0
- package/packages/create-basement-app/templates/webgpu/_gitignore +67 -0
- package/packages/create-basement-app/templates/webgpu/app/favicon.ico +0 -0
- package/packages/create-basement-app/templates/webgpu/app/layout.tsx +104 -0
- package/packages/create-basement-app/templates/webgpu/app/page.tsx +275 -0
- package/packages/create-basement-app/templates/webgpu/app/robots.ts +15 -0
- package/packages/create-basement-app/templates/webgpu/app/sitemap.ts +16 -0
- package/packages/create-basement-app/templates/webgpu/biome.json +250 -0
- package/packages/create-basement-app/templates/webgpu/components/basement.svg +1 -0
- package/packages/create-basement-app/templates/webgpu/components/layout/footer/index.tsx +27 -0
- package/packages/create-basement-app/templates/webgpu/components/layout/header/index.tsx +11 -0
- package/packages/create-basement-app/templates/webgpu/components/layout/theme/index.tsx +66 -0
- package/packages/create-basement-app/templates/webgpu/components/layout/wrapper/index.tsx +65 -0
- package/packages/create-basement-app/templates/webgpu/components/ui/README.md +77 -0
- package/packages/create-basement-app/templates/webgpu/components/ui/image/README.md +37 -0
- package/packages/create-basement-app/templates/webgpu/components/ui/image/index.tsx +224 -0
- package/packages/create-basement-app/templates/webgpu/components/ui/link/index.tsx +146 -0
- package/packages/create-basement-app/templates/webgpu/lib/README.md +33 -0
- package/packages/create-basement-app/templates/webgpu/lib/hooks/index.ts +12 -0
- package/packages/create-basement-app/templates/webgpu/lib/hooks/use-device-detection.ts +81 -0
- package/packages/create-basement-app/templates/webgpu/lib/hooks/use-media-breakpoint.ts +15 -0
- package/packages/create-basement-app/templates/webgpu/lib/hooks/use-prefetch.ts +74 -0
- package/packages/create-basement-app/templates/webgpu/lib/integrations/.gitkeep +0 -0
- package/packages/create-basement-app/templates/webgpu/lib/scripts/dev.ts +52 -0
- package/packages/create-basement-app/templates/webgpu/lib/scripts/generate-component.ts +322 -0
- package/packages/create-basement-app/templates/webgpu/lib/scripts/generate-page.ts +193 -0
- package/packages/create-basement-app/templates/webgpu/lib/scripts/generate.ts +79 -0
- package/packages/create-basement-app/templates/webgpu/lib/scripts/utils.ts +246 -0
- package/packages/create-basement-app/templates/webgpu/lib/store/app.ts +11 -0
- package/packages/create-basement-app/templates/webgpu/lib/store/index.ts +11 -0
- package/packages/create-basement-app/templates/webgpu/lib/styles/README.md +64 -0
- package/packages/create-basement-app/templates/webgpu/lib/styles/cn.ts +7 -0
- package/packages/create-basement-app/templates/webgpu/lib/styles/colors.ts +63 -0
- package/packages/create-basement-app/templates/webgpu/lib/styles/config.ts +34 -0
- package/packages/create-basement-app/templates/webgpu/lib/styles/css/global.css +85 -0
- package/packages/create-basement-app/templates/webgpu/lib/styles/css/index.css +6 -0
- package/packages/create-basement-app/templates/webgpu/lib/styles/css/reset.css +166 -0
- package/packages/create-basement-app/templates/webgpu/lib/styles/css/root.css +68 -0
- package/packages/create-basement-app/templates/webgpu/lib/styles/css/tailwind.css +132 -0
- package/packages/create-basement-app/templates/webgpu/lib/styles/easings.ts +21 -0
- package/packages/create-basement-app/templates/webgpu/lib/styles/fonts.ts +28 -0
- package/packages/create-basement-app/templates/webgpu/lib/styles/index.ts +12 -0
- package/packages/create-basement-app/templates/webgpu/lib/styles/layout.mjs +27 -0
- package/packages/create-basement-app/templates/webgpu/lib/styles/scripts/README.md +29 -0
- package/packages/create-basement-app/templates/webgpu/lib/styles/scripts/generate-root.ts +57 -0
- package/packages/create-basement-app/templates/webgpu/lib/styles/scripts/generate-tailwind.ts +162 -0
- package/packages/create-basement-app/templates/webgpu/lib/styles/scripts/postcss-functions.mjs +168 -0
- package/packages/create-basement-app/templates/webgpu/lib/styles/scripts/setup-styles.ts +24 -0
- package/packages/create-basement-app/templates/webgpu/lib/styles/scripts/utils.ts +20 -0
- package/packages/create-basement-app/templates/webgpu/lib/styles/typography.ts +36 -0
- package/packages/create-basement-app/templates/webgpu/lib/utils/README.md +40 -0
- package/packages/create-basement-app/templates/webgpu/lib/utils/css.d.ts +21 -0
- package/packages/create-basement-app/templates/webgpu/lib/utils/easings.ts +240 -0
- package/packages/create-basement-app/templates/webgpu/lib/utils/fetch.ts +84 -0
- package/packages/create-basement-app/templates/webgpu/lib/utils/math.test.ts +221 -0
- package/packages/create-basement-app/templates/webgpu/lib/utils/math.ts +236 -0
- package/packages/create-basement-app/templates/webgpu/lib/utils/metadata.ts +126 -0
- package/packages/create-basement-app/templates/webgpu/lib/utils/strings.test.ts +166 -0
- package/packages/create-basement-app/templates/webgpu/lib/utils/strings.ts +246 -0
- package/packages/create-basement-app/templates/webgpu/lib/utils/types.d.ts +15 -0
- package/packages/create-basement-app/templates/webgpu/lib/utils/viewport.test.ts +256 -0
- package/packages/create-basement-app/templates/webgpu/lib/utils/viewport.ts +193 -0
- package/packages/create-basement-app/templates/webgpu/next.config.ts +142 -0
- package/packages/create-basement-app/templates/webgpu/package.json +69 -0
- package/packages/create-basement-app/templates/webgpu/postcss.config.mjs +42 -0
- package/packages/create-basement-app/templates/webgpu/public/fonts/geist/Geist-Mono.woff2 +0 -0
- package/packages/create-basement-app/templates/webgpu/tsconfig.json +43 -0
- package/tasks/.last-branch +1 -0
- package/tasks/CLAUDE.md +104 -0
- package/tasks/archive/2026-02-09-next-starter-dynamic-layers/prd.json +153 -0
- package/tasks/archive/2026-02-09-next-starter-dynamic-layers/progress.txt +115 -0
- package/tasks/prd-project-restructure.md +375 -0
- package/tasks/prd.json +227 -91
- package/tasks/progress.txt +281 -87
- package/tasks/ralph.sh +113 -0
- package/layers/experiment/components/layout/header/index.tsx +0 -58
- package/layers/experiment/components/layout/navigation-menu.tsx +0 -127
- package/layers/experiment/lib/constants.ts +0 -12
- package/layers/webgl/app/page.tsx +0 -10
- package/layers/webgl/components/webgl/canvas/dynamic.tsx +0 -34
- package/layers/webgl/components/webgl/canvas/index.tsx +0 -43
- package/layers/webgl/components/webgl/components/scene/index.tsx +0 -21
- package/src/mergers/next-config-merger.js +0 -63
- /package/{src → packages/cli/src}/commands/setup-sanity.js +0 -0
- /package/{src → packages/cli/src}/commands/worktree.js +0 -0
- /package/{integrations/basehub → packages/create-basement-app/integrations/basehub/files}/README.md +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/api/draft-mode/disable/route.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/api/draft-mode/enable/route.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/api/revalidate/route.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/layout.tsx +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/sitemap.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/studio/[[...tool]]/page.tsx +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/studio/layout.tsx +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/components/ui/sanity-image/index.tsx +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/README.md +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/check-integration.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/README.md +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/client.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/components/disable-draft-mode.tsx +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/components/rich-text.tsx +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/env.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/live/index.tsx +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/queries.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/sanity.cli.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/sanity.config.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/sanity.types.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schema.json +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/article.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/example.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/index.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/link.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/metadata.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/navigation.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/page.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/richText.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/structure.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/utils/image.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/utils/link.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/scripts/copy-sanity-mcp.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/scripts/generate-page.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/utils/metadata.ts +0 -0
- /package/{plugins → packages/create-basement-app/plugins}/README.md +0 -0
- /package/{plugins → packages/create-basement-app/plugins}/no-anchor-element.grit +0 -0
- /package/{plugins → packages/create-basement-app/plugins}/no-relative-parent-imports.grit +0 -0
- /package/{plugins → packages/create-basement-app/plugins}/no-unnecessary-forwardref.grit +0 -0
- /package/{template-hooks → packages/create-basement-app/template-hooks}/use-battery.ts +0 -0
- /package/{template-hooks → packages/create-basement-app/template-hooks}/use-device-perf.ts +0 -0
- /package/{template-hooks → packages/create-basement-app/template-hooks}/use-intersection-observer.ts +0 -0
- /package/{template-hooks → packages/create-basement-app/template-hooks}/use-media.ts +0 -0
- /package/{layers/webgpu → packages/create-basement-app/templates/default/lib/integrations}/.gitkeep +0 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import withBundleAnalyzer from "@next/bundle-analyzer"
|
|
2
|
+
import type { NextConfig } from "next"
|
|
3
|
+
|
|
4
|
+
const nextConfig: NextConfig = {
|
|
5
|
+
reactStrictMode: true,
|
|
6
|
+
reactCompiler: true,
|
|
7
|
+
typedRoutes: true,
|
|
8
|
+
turbopack: {
|
|
9
|
+
rules: {
|
|
10
|
+
"*.svg": {
|
|
11
|
+
loaders: [
|
|
12
|
+
{
|
|
13
|
+
loader: "@svgr/webpack",
|
|
14
|
+
options: {
|
|
15
|
+
memo: true,
|
|
16
|
+
dimensions: false,
|
|
17
|
+
svgoConfig: {
|
|
18
|
+
multipass: true,
|
|
19
|
+
plugins: [
|
|
20
|
+
"removeDimensions",
|
|
21
|
+
"removeOffCanvasPaths",
|
|
22
|
+
"reusePaths",
|
|
23
|
+
"removeElementsByAttr",
|
|
24
|
+
"removeStyleElement",
|
|
25
|
+
"removeScriptElement",
|
|
26
|
+
"prefixIds",
|
|
27
|
+
"cleanupIds",
|
|
28
|
+
{
|
|
29
|
+
name: "cleanupNumericValues",
|
|
30
|
+
params: {
|
|
31
|
+
floatPrecision: 1,
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "convertPathData",
|
|
36
|
+
params: {
|
|
37
|
+
floatPrecision: 1,
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: "convertTransform",
|
|
42
|
+
params: {
|
|
43
|
+
floatPrecision: 1,
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: "cleanupListOfValues",
|
|
48
|
+
params: {
|
|
49
|
+
floatPrecision: 1,
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
as: "*.js",
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
cacheComponents: true,
|
|
62
|
+
experimental: {
|
|
63
|
+
browserDebugInfoInTerminal: true,
|
|
64
|
+
optimizePackageImports: [
|
|
65
|
+
"@react-three/drei",
|
|
66
|
+
"@react-three/fiber",
|
|
67
|
+
"gsap",
|
|
68
|
+
"three",
|
|
69
|
+
"postprocessing",
|
|
70
|
+
"lenis",
|
|
71
|
+
"zustand",
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
images: {
|
|
75
|
+
dangerouslyAllowSVG: true,
|
|
76
|
+
remotePatterns: [],
|
|
77
|
+
minimumCacheTTL: 60 * 60 * 24 * 30, // 30 days
|
|
78
|
+
qualities: [90],
|
|
79
|
+
formats: ["image/avif", "image/webp"],
|
|
80
|
+
deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
|
|
81
|
+
imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
|
|
82
|
+
},
|
|
83
|
+
headers: async () => [
|
|
84
|
+
{
|
|
85
|
+
source: "/(.*)",
|
|
86
|
+
headers: [
|
|
87
|
+
{
|
|
88
|
+
key: "X-Content-Type-Options",
|
|
89
|
+
value: "nosniff",
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
key: "Content-Security-Policy",
|
|
93
|
+
value: "frame-ancestors 'self';",
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
key: "X-Frame-Options",
|
|
97
|
+
value: "SAMEORIGIN",
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
key: "X-XSS-Protection",
|
|
101
|
+
value: "1; mode=block",
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
key: "X-DNS-Prefetch-Control",
|
|
105
|
+
value: "on",
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
key: "Strict-Transport-Security",
|
|
109
|
+
value: "max-age=63072000; includeSubDomains; preload",
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
key: "Permissions-Policy",
|
|
113
|
+
value: "camera=(), microphone=(), geolocation=()",
|
|
114
|
+
},
|
|
115
|
+
],
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
redirects: async () => [
|
|
119
|
+
{
|
|
120
|
+
source: "/home",
|
|
121
|
+
destination: "/",
|
|
122
|
+
permanent: true,
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
rewrites: async () => [
|
|
126
|
+
{
|
|
127
|
+
source: "/",
|
|
128
|
+
destination: "/home",
|
|
129
|
+
},
|
|
130
|
+
],
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const bundleAnalyzerPlugin = withBundleAnalyzer({
|
|
134
|
+
enabled: process.env.ANALYZE === "true",
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
const NextApp = () => {
|
|
138
|
+
const plugins = [bundleAnalyzerPlugin]
|
|
139
|
+
return plugins.reduce((config, plugin) => plugin(config), nextConfig)
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export default NextApp
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "basement-next-starter",
|
|
3
|
+
"description": "Basement Next.js starter template",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"private": true,
|
|
6
|
+
"packageManager": "bun@1.3.5",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"analyze": "cross-env ANALYZE=true bun run build",
|
|
9
|
+
"analyze:experimental": "next experimental-analyze",
|
|
10
|
+
"build": "bun run setup:styles && next build",
|
|
11
|
+
"dev": "bun ./lib/scripts/dev.ts",
|
|
12
|
+
"dev:https": "bun ./lib/scripts/dev.ts --https",
|
|
13
|
+
"dev:inspect": "bun ./lib/scripts/dev.ts --inspect",
|
|
14
|
+
"format": "biome format --write .",
|
|
15
|
+
"generate": "bun ./lib/scripts/generate.ts",
|
|
16
|
+
"lighthouse": "bunx @unlighthouse/cli --site http://localhost:3000",
|
|
17
|
+
"lint": "biome lint --max-diagnostics=200",
|
|
18
|
+
"lint:fix": "biome lint --write --unsafe --max-diagnostics=200",
|
|
19
|
+
"setup:styles": "bun ./lib/styles/scripts/setup-styles.ts",
|
|
20
|
+
"start": "next start",
|
|
21
|
+
"test": "bun test",
|
|
22
|
+
"test:setup": "bun test lib/scripts/setup-project.test.ts",
|
|
23
|
+
"typecheck": "tsgo --noEmit",
|
|
24
|
+
"typecheck:compare": "bun run typecheck:tsc && bun run typecheck",
|
|
25
|
+
"typecheck:tsc": "tsc --noEmit --incremental false"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@radix-ui/react-navigation-menu": "^1.2.5",
|
|
29
|
+
"@react-three/drei": "^10.7.7",
|
|
30
|
+
"@react-three/fiber": "^9.5.0",
|
|
31
|
+
"class-variance-authority": "^0.7.1",
|
|
32
|
+
"leva": "^0.9.35",
|
|
33
|
+
"next": "16.1.4",
|
|
34
|
+
"react": "19.2.4",
|
|
35
|
+
"react-dom": "19.2.4",
|
|
36
|
+
"react-use": "^17.6.0",
|
|
37
|
+
"tailwind-merge": "^3.4.0",
|
|
38
|
+
"three": "^0.182.0",
|
|
39
|
+
"zod": "^4.3.6",
|
|
40
|
+
"zustand": "^5.0.10"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"@biomejs/biome": "2.3.11",
|
|
44
|
+
"@clack/prompts": "^0.11.0",
|
|
45
|
+
"@csstools/postcss-global-data": "^3.1.0",
|
|
46
|
+
"@next/bundle-analyzer": "16.1.1",
|
|
47
|
+
"@svgr/webpack": "^8.1.0",
|
|
48
|
+
"@tailwindcss/postcss": "^4.1.18",
|
|
49
|
+
"@types/bun": "^1.3.6",
|
|
50
|
+
"@types/node": "^20.19.30",
|
|
51
|
+
"@types/react": "^19.2.9",
|
|
52
|
+
"@types/react-dom": "^19.2.3",
|
|
53
|
+
"@types/three": "^0.182.0",
|
|
54
|
+
"@typescript/native-preview": "^7.0.0-dev.20260122.3",
|
|
55
|
+
"babel-plugin-react-compiler": "1.0.0",
|
|
56
|
+
"cross-env": "^10.1.0",
|
|
57
|
+
"postcss-functions": "^4.0.2",
|
|
58
|
+
"postcss-preset-env": "^10.6.1",
|
|
59
|
+
"tailwindcss": "^4.1.18",
|
|
60
|
+
"typescript": "^5.9.3"
|
|
61
|
+
},
|
|
62
|
+
"trustedDependencies": [
|
|
63
|
+
"@biomejs/biome",
|
|
64
|
+
"@tailwindcss/oxide",
|
|
65
|
+
"esbuild",
|
|
66
|
+
"sharp"
|
|
67
|
+
]
|
|
68
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { functions } from "./lib/styles/scripts/postcss-functions.mjs"
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* PostCSS preset-env config
|
|
5
|
+
* @see Docs {@link https://github.com/csstools/postcss-plugins/blob/main/plugin-packs/postcss-preset-env/README.md#options}
|
|
6
|
+
* @see Features Flags {@link https://github.com/csstools/postcss-plugins/blob/main/plugin-packs/postcss-preset-env/FEATURES.md}
|
|
7
|
+
* @type {import('postcss-preset-env').pluginOptions}
|
|
8
|
+
*/
|
|
9
|
+
const presetEnvConfig = {
|
|
10
|
+
autoprefixer: {
|
|
11
|
+
flexbox: "no-2009",
|
|
12
|
+
},
|
|
13
|
+
stage: 3,
|
|
14
|
+
features: {
|
|
15
|
+
"custom-properties": false,
|
|
16
|
+
"custom-media-queries": true,
|
|
17
|
+
"nesting-rules": true,
|
|
18
|
+
},
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* PostCSS global data config
|
|
23
|
+
* Makes sure the css module files have access to these context files
|
|
24
|
+
* @see {@link https://github.com/csstools/postcss-global-data?tab=readme-ov-file#options}
|
|
25
|
+
* @type {import('@csstools/postcss-global-data').pluginOptions}
|
|
26
|
+
*/
|
|
27
|
+
const globalDataConfig = {
|
|
28
|
+
files: ["./lib/styles/css/root.css"],
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const postcssConfig = {
|
|
32
|
+
// NOTE: Order is important
|
|
33
|
+
plugins: {
|
|
34
|
+
"@tailwindcss/postcss": {},
|
|
35
|
+
"@csstools/postcss-global-data": globalDataConfig,
|
|
36
|
+
"postcss-functions": { functions },
|
|
37
|
+
// NOTE: This has to be last config
|
|
38
|
+
"postcss-preset-env": presetEnvConfig,
|
|
39
|
+
},
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export default postcssConfig
|
|
Binary file
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2023",
|
|
4
|
+
"lib": ["ES2023", "DOM", "DOM.Iterable"],
|
|
5
|
+
"allowJs": true,
|
|
6
|
+
"skipLibCheck": true,
|
|
7
|
+
"strict": true,
|
|
8
|
+
"noEmit": true,
|
|
9
|
+
"esModuleInterop": true,
|
|
10
|
+
"module": "esnext",
|
|
11
|
+
"moduleResolution": "bundler",
|
|
12
|
+
"resolveJsonModule": true,
|
|
13
|
+
"isolatedModules": true,
|
|
14
|
+
"jsx": "react-jsx",
|
|
15
|
+
"incremental": true,
|
|
16
|
+
"noImplicitOverride": true,
|
|
17
|
+
"exactOptionalPropertyTypes": true,
|
|
18
|
+
"useUnknownInCatchVariables": true,
|
|
19
|
+
"noFallthroughCasesInSwitch": true,
|
|
20
|
+
"noImplicitReturns": true,
|
|
21
|
+
"noUncheckedSideEffectImports": true,
|
|
22
|
+
"noUnusedLocals": true,
|
|
23
|
+
"noUnusedParameters": true,
|
|
24
|
+
"noUncheckedIndexedAccess": true,
|
|
25
|
+
"plugins": [
|
|
26
|
+
{
|
|
27
|
+
"name": "next"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"paths": {
|
|
31
|
+
"@/*": ["./*"]
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"include": [
|
|
35
|
+
"next-env.d.ts",
|
|
36
|
+
"**/*.ts",
|
|
37
|
+
"**/*.tsx",
|
|
38
|
+
".next/types/**/*.ts",
|
|
39
|
+
".next/dev/types/**/*.ts",
|
|
40
|
+
"**/*.mts"
|
|
41
|
+
],
|
|
42
|
+
"exclude": ["node_modules"]
|
|
43
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
## Plugins
|
|
2
|
+
|
|
3
|
+
### 1. `no-anchor-element.grit`
|
|
4
|
+
Enforces using Next.js `<Link>` component instead of HTML `<a>` elements.
|
|
5
|
+
|
|
6
|
+
### 2. `no-unnecessary-forwardref.grit`
|
|
7
|
+
Checks for unnecessary `forwardRef` usage in React 19 with the compiler.
|
|
8
|
+
|
|
9
|
+
### 3. `no-relative-parent-imports.grit`
|
|
10
|
+
Forbids relative parent imports (`../`) and encourages alias imports (`@/`).
|
|
11
|
+
|
|
12
|
+
## Plugin Configuration
|
|
13
|
+
|
|
14
|
+
The plugins are configured in `biome.json`:
|
|
15
|
+
```json
|
|
16
|
+
"plugins": [
|
|
17
|
+
"./biome-plugins/no-anchor-element.grit",
|
|
18
|
+
"./biome-plugins/no-unnecessary-forwardref.grit",
|
|
19
|
+
"./biome-plugins/no-relative-parent-imports.grit"
|
|
20
|
+
]
|
|
21
|
+
```
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
language js;
|
|
2
|
+
|
|
3
|
+
`<a $attrs>$content</a>` as $anchor where {
|
|
4
|
+
!$anchor <: within `if ($condition) { return ($jsx) }` where {
|
|
5
|
+
$condition <: contains or { `isExternal`, `isExternalSSR` }
|
|
6
|
+
},
|
|
7
|
+
register_diagnostic(
|
|
8
|
+
span = $anchor,
|
|
9
|
+
message = "Use custom Link component instead of <a> element. The Link component handles both internal and external links automatically.",
|
|
10
|
+
severity = "error"
|
|
11
|
+
)
|
|
12
|
+
}
|
package/packages/create-basement-app/templates/webgpu/.biome/plugins/no-relative-parent-imports.grit
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
language js;
|
|
2
|
+
|
|
3
|
+
`import $imports from $source` as $import where {
|
|
4
|
+
$source <: r"['\"]\.\.\/\.\.\/.*['\"]",
|
|
5
|
+
register_diagnostic(
|
|
6
|
+
span = $import,
|
|
7
|
+
message = "Use alias imports (~/dir/) instead of deep relative imports (../../). Single level imports (../) are allowed for colocated files.",
|
|
8
|
+
severity = "error"
|
|
9
|
+
)
|
|
10
|
+
}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# Cursor Rules Documentation
|
|
2
|
+
|
|
3
|
+
This directory contains consolidated Cursor AI rules for the Satus project. The rules are organized into 5 focused files for easy maintenance and efficient AI context loading.
|
|
4
|
+
|
|
5
|
+
## 📁 File Structure
|
|
6
|
+
|
|
7
|
+
### 1. `main.mdc` - Project Overview & Cross-Cutting Concerns
|
|
8
|
+
**Purpose**: High-level overview and concerns that apply across the entire project
|
|
9
|
+
|
|
10
|
+
**Contents**:
|
|
11
|
+
- Technology stack (Next.js 16+, React 19+, Tailwind v4, Biome, Bun)
|
|
12
|
+
- React 19+ new features (`<Activity />`, `useEffectEvent`, `cacheSignal`)
|
|
13
|
+
- Next.js 16 Cache Components gotchas and best practices
|
|
14
|
+
- File organization
|
|
15
|
+
- React Compiler & memoization guidelines (single source of truth)
|
|
16
|
+
- Image optimization guidelines (single source of truth)
|
|
17
|
+
- Development vs production guidelines (single source of truth)
|
|
18
|
+
- Core utility libraries (`@/utils`)
|
|
19
|
+
|
|
20
|
+
**When to reference**: Starting a new project, understanding the tech stack, cross-cutting concerns
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
### 2. `components.mdc` - React Component Patterns & WebGL
|
|
25
|
+
**Purpose**: All React component patterns including standard components and WebGL/Three.js
|
|
26
|
+
|
|
27
|
+
**Contents**:
|
|
28
|
+
- Component structure and imports
|
|
29
|
+
- Props interfaces and React 19 ref handling
|
|
30
|
+
- Forms and responsive design
|
|
31
|
+
- Performance best practices (code splitting)
|
|
32
|
+
- Error handling
|
|
33
|
+
- WebGL/Three.js setup and patterns
|
|
34
|
+
- React Three Fiber
|
|
35
|
+
- Drei components
|
|
36
|
+
- Custom shaders
|
|
37
|
+
- Animation and interaction
|
|
38
|
+
- Post-processing
|
|
39
|
+
|
|
40
|
+
**When to reference**: Building React components, creating WebGL experiences, working with Three.js
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
### 3. `styling.mdc` - CSS Modules & Tailwind CSS v4
|
|
45
|
+
**Purpose**: All styling approaches including CSS Modules and Tailwind CSS v4
|
|
46
|
+
|
|
47
|
+
**Contents**:
|
|
48
|
+
- CSS Modules (file naming, class naming, imports)
|
|
49
|
+
- Responsive design (viewport functions, breakpoints, grid system)
|
|
50
|
+
- Typography and colors
|
|
51
|
+
- Animations and transitions
|
|
52
|
+
- Tailwind CSS v4 (CSS-first configuration, theme variables, new features)
|
|
53
|
+
- 3D transforms, gradients, shadows
|
|
54
|
+
- New variants (composable, `starting`, `not-*`, `nth-*`)
|
|
55
|
+
- Custom extensions (`@utility`, `@variant`, `@plugin`)
|
|
56
|
+
- Breaking changes and migration
|
|
57
|
+
- Project-specific custom utilities (`b-*` classes)
|
|
58
|
+
- PostCSS functions
|
|
59
|
+
|
|
60
|
+
**When to reference**: Styling components, using Tailwind, creating responsive designs
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
### 4. `integrations.mdc` - Third-Party Integrations
|
|
65
|
+
**Purpose**: Guidelines for all third-party service integrations
|
|
66
|
+
|
|
67
|
+
**Contents**:
|
|
68
|
+
- **Sanity CMS**: Configuration, schema management, GROQ queries, visual editing, TypeScript generation, cacheSignal integration
|
|
69
|
+
- **Shopify**: API configuration, product management, cart operations, cacheSignal integration
|
|
70
|
+
- General best practices (environment variables, API resilience, error handling)
|
|
71
|
+
- Cache Components gotchas for integrations (user-specific data, real-time data)
|
|
72
|
+
- Type safety and performance
|
|
73
|
+
- Security and integration management
|
|
74
|
+
- Webhook handling
|
|
75
|
+
|
|
76
|
+
**When to reference**: Integrating with Sanity, Shopify, or other third-party services
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
### 5. `architecture.mdc` - Architecture Patterns & Best Practices
|
|
81
|
+
**Purpose**: Architectural patterns, state management, routing, and code quality guidelines
|
|
82
|
+
|
|
83
|
+
**Contents**:
|
|
84
|
+
- Type safety (TypeScript configuration)
|
|
85
|
+
- State management (React state, Zustand)
|
|
86
|
+
- Routing & navigation (Next.js App Router, Link component)
|
|
87
|
+
- Metadata & SEO
|
|
88
|
+
- Performance (server components, code splitting, caching)
|
|
89
|
+
- Cache Components (Next.js 16) - Suspense, invalidation, gotchas
|
|
90
|
+
- Security (environment variables, input validation, authentication)
|
|
91
|
+
- Testing & debugging (unit tests, debugging tools, error boundaries)
|
|
92
|
+
- Code quality (linting, formatting, code organization)
|
|
93
|
+
- Development workflow (package manager, git workflow, client/server boundaries)
|
|
94
|
+
|
|
95
|
+
**When to reference**: Architectural decisions, state management, routing patterns, code quality
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 🎯 Quick Reference Guide
|
|
100
|
+
|
|
101
|
+
### I want to...
|
|
102
|
+
|
|
103
|
+
- **Start a new feature** → Read `main.mdc` for overview, then `architecture.mdc` for patterns
|
|
104
|
+
- **Build a React component** → `components.mdc`
|
|
105
|
+
- **Add WebGL/Three.js** → `components.mdc` § WebGL Components & Activity Integration
|
|
106
|
+
- **Style with CSS Modules** → `styling.mdc` § CSS Modules
|
|
107
|
+
- **Style with Tailwind** → `styling.mdc` § Tailwind CSS v4
|
|
108
|
+
- **Use custom utilities** → `styling.mdc` § Project-Specific Custom Utilities
|
|
109
|
+
- **Integrate Sanity CMS** → `integrations.mdc` § Sanity CMS Integration
|
|
110
|
+
- **Integrate Shopify** → `integrations.mdc` § Shopify Integration
|
|
111
|
+
- **Manage state** → `architecture.mdc` § State Management
|
|
112
|
+
- **Add routing** → `architecture.mdc` § Routing & Navigation
|
|
113
|
+
- **Optimize performance** → `architecture.mdc` § Performance
|
|
114
|
+
- **Handle security** → `architecture.mdc` § Security
|
|
115
|
+
- **Debug issues** → `architecture.mdc` § Testing & Debugging
|
|
116
|
+
- **Understand React Compiler** → `main.mdc` § React Compiler & Memoization
|
|
117
|
+
- **Handle images** → `main.mdc` § Image Optimization (`@/components/ui/image`)
|
|
118
|
+
- **Dev vs prod differences** → `main.mdc` § Development vs Production
|
|
119
|
+
- **Use utility functions** → `main.mdc` § Core Utility Libraries (`@/utils`)
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 📝 Maintenance Guidelines
|
|
124
|
+
|
|
125
|
+
### When Editing Rules
|
|
126
|
+
|
|
127
|
+
1. **Avoid Duplication**: If content applies to multiple areas, put it in `main.mdc` and reference it
|
|
128
|
+
2. **Use Cross-References**: Link to other sections instead of duplicating content
|
|
129
|
+
3. **Keep It Focused**: Each file should maintain its specific purpose
|
|
130
|
+
4. **Update Dates**: Update the "Last updated" date when making changes
|
|
131
|
+
5. **Check Dependencies**: When updating one file, check if related files need updates
|
|
132
|
+
|
|
133
|
+
### Example Cross-Reference Pattern
|
|
134
|
+
|
|
135
|
+
```markdown
|
|
136
|
+
<!-- In components.mdc -->
|
|
137
|
+
## Performance Optimization
|
|
138
|
+
See main.mdc § React Compiler & Memoization for optimization guidelines.
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Adding New Content
|
|
142
|
+
|
|
143
|
+
**Ask yourself**:
|
|
144
|
+
- Is this component-specific? → `components.mdc`
|
|
145
|
+
- Is this styling-related? → `styling.mdc`
|
|
146
|
+
- Is this an integration? → `integrations.mdc`
|
|
147
|
+
- Is this architectural? → `architecture.mdc`
|
|
148
|
+
- Is this cross-cutting? → `main.mdc`
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## 🚀 For Developers
|
|
153
|
+
|
|
154
|
+
### Quick Setup
|
|
155
|
+
1. These rules are automatically loaded by Cursor AI
|
|
156
|
+
2. All files have `alwaysApply: true` in frontmatter
|
|
157
|
+
3. Files apply to: `*.tsx, *.jsx, *.css, *.js, *.ts`
|
|
158
|
+
|
|
159
|
+
### Contributing
|
|
160
|
+
When adding new guidelines:
|
|
161
|
+
1. Choose the appropriate file
|
|
162
|
+
2. Follow existing formatting patterns
|
|
163
|
+
3. Add clear examples
|
|
164
|
+
4. Update this README if needed
|
|
165
|
+
5. Keep content focused and actionable
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## 📊 File Statistics
|
|
170
|
+
|
|
171
|
+
| File | Purpose | Key Topics |
|
|
172
|
+
|------|---------|------------|
|
|
173
|
+
| `main.mdc` | Overview & Cross-cutting | Tech stack, React 19+ features, Cache Components, React Compiler, Images, Dev/Prod |
|
|
174
|
+
| `components.mdc` | React & WebGL | Components, Forms, WebGL, Three.js, Shaders, Activity |
|
|
175
|
+
| `styling.mdc` | All Styling | CSS Modules, Tailwind v4, Responsive, Custom utilities |
|
|
176
|
+
| `integrations.mdc` | Third-party Services | Sanity, Shopify, Cache Components, cacheSignal |
|
|
177
|
+
| `architecture.mdc` | Patterns & Quality | State, Routing, Performance, Cache Components, Security, Testing |
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
Last updated: 2026-01-26
|
|
182
|
+
|
|
183
|
+
For questions or suggestions about these rules, contact the development team.
|
|
184
|
+
|