bsmnt 0.0.2 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. package/.github/workflows/release.yml +2 -0
  2. package/CHANGELOG.md +31 -0
  3. package/CLAUDE.md +42 -24
  4. package/README.md +33 -12
  5. package/biome.json +1 -0
  6. package/bun.lock +2 -1
  7. package/docs/architecture.drawio +250 -0
  8. package/docs/architecture.mermaid +85 -0
  9. package/package.json +42 -42
  10. package/{bin → packages/cli/bin}/index.js +28 -31
  11. package/packages/cli/package.json +16 -0
  12. package/{src → packages/cli/src}/commands/add-integration.js +22 -37
  13. package/{src → packages/cli/src}/commands/create.js +125 -131
  14. package/packages/create-basement-app/integrations/sanity/config.js +46 -0
  15. package/{src → packages/create-basement-app/integrations/sanity}/mergers/check-integration-merger.js +1 -1
  16. package/{src → packages/create-basement-app/integrations/sanity}/mergers/layout-merger.js +1 -1
  17. package/{src → packages/create-basement-app/integrations/sanity}/mergers/sitemap-merger.js +1 -1
  18. package/packages/create-basement-app/package.json +10 -0
  19. package/packages/create-basement-app/src/configs/animations.js +28 -0
  20. package/packages/create-basement-app/src/index.js +15 -0
  21. package/packages/create-basement-app/src/mergers/check-integration-merger.js +105 -0
  22. package/{src → packages/create-basement-app/src}/mergers/config.js +5 -33
  23. package/{src → packages/create-basement-app/src}/mergers/index.js +89 -98
  24. package/packages/create-basement-app/src/mergers/layout-merger.js +223 -0
  25. package/packages/create-basement-app/src/mergers/sitemap-merger.js +121 -0
  26. package/packages/create-basement-app/template-hooks/config.js +38 -0
  27. package/packages/create-basement-app/templates/default/.biome/plugins/README.md +21 -0
  28. package/packages/create-basement-app/templates/default/.biome/plugins/no-anchor-element.grit +12 -0
  29. package/packages/create-basement-app/templates/default/.biome/plugins/no-relative-parent-imports.grit +10 -0
  30. package/packages/create-basement-app/templates/default/.biome/plugins/no-unnecessary-forwardref.grit +9 -0
  31. package/packages/create-basement-app/templates/default/.cursor/rules/README.md +184 -0
  32. package/packages/create-basement-app/templates/default/.cursor/rules/architecture.mdc +437 -0
  33. package/packages/create-basement-app/templates/default/.cursor/rules/components.mdc +436 -0
  34. package/packages/create-basement-app/templates/default/.cursor/rules/integrations.mdc +447 -0
  35. package/packages/create-basement-app/templates/default/.cursor/rules/main.mdc +278 -0
  36. package/packages/create-basement-app/templates/default/.cursor/rules/styling.mdc +433 -0
  37. package/packages/create-basement-app/templates/default/.editorconfig +40 -0
  38. package/packages/create-basement-app/templates/default/.env.example +81 -0
  39. package/packages/create-basement-app/templates/default/.gitattributes +19 -0
  40. package/packages/create-basement-app/templates/default/.github/PULL_REQUEST_TEMPLATE.md +14 -0
  41. package/packages/create-basement-app/templates/default/.github/workflows/lighthouse-to-slack.yml +136 -0
  42. package/packages/create-basement-app/templates/default/.vscode/extensions.json +20 -0
  43. package/packages/create-basement-app/templates/default/.vscode/settings.json +105 -0
  44. package/packages/create-basement-app/templates/default/README.md +221 -0
  45. package/packages/create-basement-app/templates/default/_gitignore +67 -0
  46. package/packages/create-basement-app/templates/default/app/favicon.ico +0 -0
  47. package/packages/create-basement-app/templates/default/app/layout.tsx +104 -0
  48. package/packages/create-basement-app/templates/default/app/page.tsx +275 -0
  49. package/packages/create-basement-app/templates/default/app/robots.ts +15 -0
  50. package/packages/create-basement-app/templates/default/app/sitemap.ts +16 -0
  51. package/packages/create-basement-app/templates/default/biome.json +250 -0
  52. package/packages/create-basement-app/templates/default/components/basement.svg +1 -0
  53. package/packages/create-basement-app/templates/default/components/layout/footer/index.tsx +27 -0
  54. package/packages/create-basement-app/templates/default/components/layout/header/index.tsx +11 -0
  55. package/packages/create-basement-app/templates/default/components/layout/theme/index.tsx +66 -0
  56. package/packages/create-basement-app/templates/default/components/layout/wrapper/index.tsx +65 -0
  57. package/packages/create-basement-app/templates/default/components/ui/README.md +77 -0
  58. package/packages/create-basement-app/templates/default/components/ui/image/README.md +37 -0
  59. package/packages/create-basement-app/templates/default/components/ui/image/index.tsx +224 -0
  60. package/packages/create-basement-app/templates/default/components/ui/link/index.tsx +146 -0
  61. package/packages/create-basement-app/templates/default/lib/README.md +33 -0
  62. package/packages/create-basement-app/templates/default/lib/hooks/index.ts +12 -0
  63. package/packages/create-basement-app/templates/default/lib/hooks/use-device-detection.ts +81 -0
  64. package/packages/create-basement-app/templates/default/lib/hooks/use-media-breakpoint.ts +15 -0
  65. package/packages/create-basement-app/templates/default/lib/hooks/use-prefetch.ts +74 -0
  66. package/packages/create-basement-app/templates/default/lib/scripts/dev.ts +52 -0
  67. package/packages/create-basement-app/templates/default/lib/scripts/generate-component.ts +322 -0
  68. package/packages/create-basement-app/templates/default/lib/scripts/generate-page.ts +193 -0
  69. package/packages/create-basement-app/templates/default/lib/scripts/generate.ts +79 -0
  70. package/packages/create-basement-app/templates/default/lib/scripts/utils.ts +246 -0
  71. package/packages/create-basement-app/templates/default/lib/store/app.ts +11 -0
  72. package/packages/create-basement-app/templates/default/lib/store/index.ts +11 -0
  73. package/packages/create-basement-app/templates/default/lib/styles/README.md +64 -0
  74. package/packages/create-basement-app/templates/default/lib/styles/cn.ts +7 -0
  75. package/packages/create-basement-app/templates/default/lib/styles/colors.ts +63 -0
  76. package/packages/create-basement-app/templates/default/lib/styles/config.ts +34 -0
  77. package/packages/create-basement-app/templates/default/lib/styles/css/global.css +85 -0
  78. package/packages/create-basement-app/templates/default/lib/styles/css/index.css +6 -0
  79. package/packages/create-basement-app/templates/default/lib/styles/css/reset.css +166 -0
  80. package/packages/create-basement-app/templates/default/lib/styles/css/root.css +68 -0
  81. package/packages/create-basement-app/templates/default/lib/styles/css/tailwind.css +132 -0
  82. package/packages/create-basement-app/templates/default/lib/styles/easings.ts +21 -0
  83. package/packages/create-basement-app/templates/default/lib/styles/fonts.ts +28 -0
  84. package/packages/create-basement-app/templates/default/lib/styles/index.ts +12 -0
  85. package/packages/create-basement-app/templates/default/lib/styles/layout.mjs +27 -0
  86. package/packages/create-basement-app/templates/default/lib/styles/scripts/README.md +29 -0
  87. package/packages/create-basement-app/templates/default/lib/styles/scripts/generate-root.ts +57 -0
  88. package/packages/create-basement-app/templates/default/lib/styles/scripts/generate-tailwind.ts +162 -0
  89. package/packages/create-basement-app/templates/default/lib/styles/scripts/postcss-functions.mjs +168 -0
  90. package/packages/create-basement-app/templates/default/lib/styles/scripts/setup-styles.ts +24 -0
  91. package/packages/create-basement-app/templates/default/lib/styles/scripts/utils.ts +20 -0
  92. package/packages/create-basement-app/templates/default/lib/styles/typography.ts +36 -0
  93. package/packages/create-basement-app/templates/default/lib/utils/README.md +40 -0
  94. package/packages/create-basement-app/templates/default/lib/utils/css.d.ts +21 -0
  95. package/packages/create-basement-app/templates/default/lib/utils/easings.ts +240 -0
  96. package/packages/create-basement-app/templates/default/lib/utils/fetch.ts +84 -0
  97. package/packages/create-basement-app/templates/default/lib/utils/math.test.ts +221 -0
  98. package/packages/create-basement-app/templates/default/lib/utils/math.ts +236 -0
  99. package/packages/create-basement-app/templates/default/lib/utils/metadata.ts +126 -0
  100. package/packages/create-basement-app/templates/default/lib/utils/strings.test.ts +166 -0
  101. package/packages/create-basement-app/templates/default/lib/utils/strings.ts +246 -0
  102. package/packages/create-basement-app/templates/default/lib/utils/types.d.ts +15 -0
  103. package/packages/create-basement-app/templates/default/lib/utils/viewport.test.ts +256 -0
  104. package/packages/create-basement-app/templates/default/lib/utils/viewport.ts +193 -0
  105. package/packages/create-basement-app/templates/default/next.config.ts +142 -0
  106. package/packages/create-basement-app/templates/default/package.json +62 -0
  107. package/packages/create-basement-app/templates/default/postcss.config.mjs +42 -0
  108. package/packages/create-basement-app/templates/default/public/fonts/geist/Geist-Mono.woff2 +0 -0
  109. package/packages/create-basement-app/templates/default/tsconfig.json +43 -0
  110. package/packages/create-basement-app/templates/experiment/.biome/plugins/README.md +21 -0
  111. package/packages/create-basement-app/templates/experiment/.biome/plugins/no-anchor-element.grit +12 -0
  112. package/packages/create-basement-app/templates/experiment/.biome/plugins/no-relative-parent-imports.grit +10 -0
  113. package/packages/create-basement-app/templates/experiment/.biome/plugins/no-unnecessary-forwardref.grit +9 -0
  114. package/packages/create-basement-app/templates/experiment/.cursor/rules/README.md +184 -0
  115. package/packages/create-basement-app/templates/experiment/.cursor/rules/architecture.mdc +437 -0
  116. package/packages/create-basement-app/templates/experiment/.cursor/rules/components.mdc +436 -0
  117. package/packages/create-basement-app/templates/experiment/.cursor/rules/integrations.mdc +447 -0
  118. package/packages/create-basement-app/templates/experiment/.cursor/rules/main.mdc +278 -0
  119. package/packages/create-basement-app/templates/experiment/.cursor/rules/styling.mdc +433 -0
  120. package/packages/create-basement-app/templates/experiment/.editorconfig +40 -0
  121. package/packages/create-basement-app/templates/experiment/.env.example +81 -0
  122. package/packages/create-basement-app/templates/experiment/.gitattributes +19 -0
  123. package/packages/create-basement-app/templates/experiment/.github/PULL_REQUEST_TEMPLATE.md +14 -0
  124. package/packages/create-basement-app/templates/experiment/.github/workflows/lighthouse-to-slack.yml +136 -0
  125. package/packages/create-basement-app/templates/experiment/.vscode/extensions.json +20 -0
  126. package/packages/create-basement-app/templates/experiment/.vscode/settings.json +105 -0
  127. package/packages/create-basement-app/templates/experiment/README.md +221 -0
  128. package/packages/create-basement-app/templates/experiment/_gitignore +67 -0
  129. package/packages/create-basement-app/templates/experiment/app/favicon.ico +0 -0
  130. package/packages/create-basement-app/templates/experiment/app/layout.tsx +104 -0
  131. package/packages/create-basement-app/templates/experiment/app/page.tsx +275 -0
  132. package/packages/create-basement-app/templates/experiment/app/robots.ts +15 -0
  133. package/packages/create-basement-app/templates/experiment/app/sitemap.ts +16 -0
  134. package/packages/create-basement-app/templates/experiment/biome.json +250 -0
  135. package/packages/create-basement-app/templates/experiment/components/basement.svg +1 -0
  136. package/packages/create-basement-app/templates/experiment/components/layout/footer/index.tsx +27 -0
  137. package/packages/create-basement-app/templates/experiment/components/layout/header/index.tsx +58 -0
  138. package/packages/create-basement-app/templates/experiment/components/layout/navigation-menu.tsx +127 -0
  139. package/packages/create-basement-app/templates/experiment/components/layout/theme/index.tsx +66 -0
  140. package/packages/create-basement-app/templates/experiment/components/layout/wrapper/index.tsx +65 -0
  141. package/packages/create-basement-app/templates/experiment/components/ui/README.md +77 -0
  142. package/packages/create-basement-app/templates/experiment/components/ui/image/README.md +37 -0
  143. package/packages/create-basement-app/templates/experiment/components/ui/image/index.tsx +224 -0
  144. package/packages/create-basement-app/templates/experiment/components/ui/link/index.tsx +146 -0
  145. package/packages/create-basement-app/templates/experiment/lib/README.md +33 -0
  146. package/packages/create-basement-app/templates/experiment/lib/constants.ts +12 -0
  147. package/packages/create-basement-app/templates/experiment/lib/hooks/index.ts +12 -0
  148. package/packages/create-basement-app/templates/experiment/lib/hooks/use-device-detection.ts +81 -0
  149. package/packages/create-basement-app/templates/experiment/lib/hooks/use-media-breakpoint.ts +15 -0
  150. package/packages/create-basement-app/templates/experiment/lib/hooks/use-prefetch.ts +74 -0
  151. package/packages/create-basement-app/templates/experiment/lib/integrations/.gitkeep +0 -0
  152. package/packages/create-basement-app/templates/experiment/lib/scripts/dev.ts +52 -0
  153. package/packages/create-basement-app/templates/experiment/lib/scripts/generate-component.ts +322 -0
  154. package/packages/create-basement-app/templates/experiment/lib/scripts/generate-page.ts +193 -0
  155. package/packages/create-basement-app/templates/experiment/lib/scripts/generate.ts +79 -0
  156. package/packages/create-basement-app/templates/experiment/lib/scripts/utils.ts +246 -0
  157. package/packages/create-basement-app/templates/experiment/lib/store/app.ts +11 -0
  158. package/packages/create-basement-app/templates/experiment/lib/store/index.ts +11 -0
  159. package/packages/create-basement-app/templates/experiment/lib/styles/README.md +64 -0
  160. package/packages/create-basement-app/templates/experiment/lib/styles/cn.ts +7 -0
  161. package/packages/create-basement-app/templates/experiment/lib/styles/colors.ts +63 -0
  162. package/packages/create-basement-app/templates/experiment/lib/styles/config.ts +34 -0
  163. package/packages/create-basement-app/templates/experiment/lib/styles/css/global.css +85 -0
  164. package/packages/create-basement-app/templates/experiment/lib/styles/css/index.css +6 -0
  165. package/packages/create-basement-app/templates/experiment/lib/styles/css/reset.css +166 -0
  166. package/packages/create-basement-app/templates/experiment/lib/styles/css/root.css +68 -0
  167. package/packages/create-basement-app/templates/experiment/lib/styles/css/tailwind.css +132 -0
  168. package/packages/create-basement-app/templates/experiment/lib/styles/easings.ts +21 -0
  169. package/packages/create-basement-app/templates/experiment/lib/styles/fonts.ts +28 -0
  170. package/packages/create-basement-app/templates/experiment/lib/styles/index.ts +12 -0
  171. package/packages/create-basement-app/templates/experiment/lib/styles/layout.mjs +27 -0
  172. package/packages/create-basement-app/templates/experiment/lib/styles/scripts/README.md +29 -0
  173. package/packages/create-basement-app/templates/experiment/lib/styles/scripts/generate-root.ts +57 -0
  174. package/packages/create-basement-app/templates/experiment/lib/styles/scripts/generate-tailwind.ts +162 -0
  175. package/packages/create-basement-app/templates/experiment/lib/styles/scripts/postcss-functions.mjs +168 -0
  176. package/packages/create-basement-app/templates/experiment/lib/styles/scripts/setup-styles.ts +24 -0
  177. package/packages/create-basement-app/templates/experiment/lib/styles/scripts/utils.ts +20 -0
  178. package/packages/create-basement-app/templates/experiment/lib/styles/typography.ts +36 -0
  179. package/packages/create-basement-app/templates/experiment/lib/utils/README.md +40 -0
  180. package/packages/create-basement-app/templates/experiment/lib/utils/css.d.ts +21 -0
  181. package/packages/create-basement-app/templates/experiment/lib/utils/easings.ts +240 -0
  182. package/packages/create-basement-app/templates/experiment/lib/utils/fetch.ts +84 -0
  183. package/packages/create-basement-app/templates/experiment/lib/utils/math.test.ts +221 -0
  184. package/packages/create-basement-app/templates/experiment/lib/utils/math.ts +236 -0
  185. package/packages/create-basement-app/templates/experiment/lib/utils/metadata.ts +126 -0
  186. package/packages/create-basement-app/templates/experiment/lib/utils/strings.test.ts +166 -0
  187. package/packages/create-basement-app/templates/experiment/lib/utils/strings.ts +246 -0
  188. package/packages/create-basement-app/templates/experiment/lib/utils/types.d.ts +15 -0
  189. package/packages/create-basement-app/templates/experiment/lib/utils/viewport.test.ts +256 -0
  190. package/packages/create-basement-app/templates/experiment/lib/utils/viewport.ts +193 -0
  191. package/packages/create-basement-app/templates/experiment/next.config.ts +142 -0
  192. package/packages/create-basement-app/templates/experiment/package.json +69 -0
  193. package/packages/create-basement-app/templates/experiment/postcss.config.mjs +42 -0
  194. package/packages/create-basement-app/templates/experiment/public/fonts/geist/Geist-Mono.woff2 +0 -0
  195. package/packages/create-basement-app/templates/experiment/tsconfig.json +43 -0
  196. package/packages/create-basement-app/templates/webgl/.biome/plugins/README.md +21 -0
  197. package/packages/create-basement-app/templates/webgl/.biome/plugins/no-anchor-element.grit +12 -0
  198. package/packages/create-basement-app/templates/webgl/.biome/plugins/no-relative-parent-imports.grit +10 -0
  199. package/packages/create-basement-app/templates/webgl/.biome/plugins/no-unnecessary-forwardref.grit +9 -0
  200. package/packages/create-basement-app/templates/webgl/.cursor/rules/README.md +184 -0
  201. package/packages/create-basement-app/templates/webgl/.cursor/rules/architecture.mdc +437 -0
  202. package/packages/create-basement-app/templates/webgl/.cursor/rules/components.mdc +436 -0
  203. package/packages/create-basement-app/templates/webgl/.cursor/rules/integrations.mdc +447 -0
  204. package/packages/create-basement-app/templates/webgl/.cursor/rules/main.mdc +278 -0
  205. package/packages/create-basement-app/templates/webgl/.cursor/rules/styling.mdc +433 -0
  206. package/packages/create-basement-app/templates/webgl/.editorconfig +40 -0
  207. package/packages/create-basement-app/templates/webgl/.env.example +81 -0
  208. package/packages/create-basement-app/templates/webgl/.gitattributes +19 -0
  209. package/packages/create-basement-app/templates/webgl/.github/PULL_REQUEST_TEMPLATE.md +14 -0
  210. package/packages/create-basement-app/templates/webgl/.github/workflows/lighthouse-to-slack.yml +136 -0
  211. package/packages/create-basement-app/templates/webgl/.vscode/extensions.json +20 -0
  212. package/packages/create-basement-app/templates/webgl/.vscode/settings.json +105 -0
  213. package/packages/create-basement-app/templates/webgl/README.md +221 -0
  214. package/packages/create-basement-app/templates/webgl/_gitignore +67 -0
  215. package/packages/create-basement-app/templates/webgl/app/favicon.ico +0 -0
  216. package/packages/create-basement-app/templates/webgl/app/layout.tsx +104 -0
  217. package/packages/create-basement-app/templates/webgl/app/page.tsx +10 -0
  218. package/packages/create-basement-app/templates/webgl/app/robots.ts +15 -0
  219. package/packages/create-basement-app/templates/webgl/app/sitemap.ts +16 -0
  220. package/packages/create-basement-app/templates/webgl/biome.json +250 -0
  221. package/packages/create-basement-app/templates/webgl/components/basement.svg +1 -0
  222. package/packages/create-basement-app/templates/webgl/components/layout/footer/index.tsx +27 -0
  223. package/packages/create-basement-app/templates/webgl/components/layout/header/index.tsx +11 -0
  224. package/packages/create-basement-app/templates/webgl/components/layout/theme/index.tsx +66 -0
  225. package/packages/create-basement-app/templates/webgl/components/layout/wrapper/index.tsx +65 -0
  226. package/packages/create-basement-app/templates/webgl/components/ui/README.md +77 -0
  227. package/packages/create-basement-app/templates/webgl/components/ui/image/README.md +37 -0
  228. package/packages/create-basement-app/templates/webgl/components/ui/image/index.tsx +224 -0
  229. package/packages/create-basement-app/templates/webgl/components/ui/link/index.tsx +146 -0
  230. package/packages/create-basement-app/templates/webgl/components/webgl/canvas/dynamic.tsx +34 -0
  231. package/packages/create-basement-app/templates/webgl/components/webgl/canvas/index.tsx +38 -0
  232. package/packages/create-basement-app/templates/webgl/components/webgl/components/scene/index.tsx +29 -0
  233. package/packages/create-basement-app/templates/webgl/lib/README.md +33 -0
  234. package/packages/create-basement-app/templates/webgl/lib/hooks/index.ts +12 -0
  235. package/packages/create-basement-app/templates/webgl/lib/hooks/use-device-detection.ts +81 -0
  236. package/packages/create-basement-app/templates/webgl/lib/hooks/use-media-breakpoint.ts +15 -0
  237. package/packages/create-basement-app/templates/webgl/lib/hooks/use-prefetch.ts +74 -0
  238. package/packages/create-basement-app/templates/webgl/lib/integrations/.gitkeep +0 -0
  239. package/packages/create-basement-app/templates/webgl/lib/renderer.ts +7 -0
  240. package/packages/create-basement-app/templates/webgl/lib/scripts/dev.ts +52 -0
  241. package/packages/create-basement-app/templates/webgl/lib/scripts/generate-component.ts +322 -0
  242. package/packages/create-basement-app/templates/webgl/lib/scripts/generate-page.ts +193 -0
  243. package/packages/create-basement-app/templates/webgl/lib/scripts/generate.ts +79 -0
  244. package/packages/create-basement-app/templates/webgl/lib/scripts/utils.ts +246 -0
  245. package/packages/create-basement-app/templates/webgl/lib/store/app.ts +11 -0
  246. package/packages/create-basement-app/templates/webgl/lib/store/index.ts +11 -0
  247. package/packages/create-basement-app/templates/webgl/lib/styles/README.md +64 -0
  248. package/packages/create-basement-app/templates/webgl/lib/styles/cn.ts +7 -0
  249. package/packages/create-basement-app/templates/webgl/lib/styles/colors.ts +63 -0
  250. package/packages/create-basement-app/templates/webgl/lib/styles/config.ts +34 -0
  251. package/packages/create-basement-app/templates/webgl/lib/styles/css/global.css +85 -0
  252. package/packages/create-basement-app/templates/webgl/lib/styles/css/index.css +6 -0
  253. package/packages/create-basement-app/templates/webgl/lib/styles/css/reset.css +166 -0
  254. package/packages/create-basement-app/templates/webgl/lib/styles/css/root.css +68 -0
  255. package/packages/create-basement-app/templates/webgl/lib/styles/css/tailwind.css +132 -0
  256. package/packages/create-basement-app/templates/webgl/lib/styles/easings.ts +21 -0
  257. package/packages/create-basement-app/templates/webgl/lib/styles/fonts.ts +28 -0
  258. package/packages/create-basement-app/templates/webgl/lib/styles/index.ts +12 -0
  259. package/packages/create-basement-app/templates/webgl/lib/styles/layout.mjs +27 -0
  260. package/packages/create-basement-app/templates/webgl/lib/styles/scripts/README.md +29 -0
  261. package/packages/create-basement-app/templates/webgl/lib/styles/scripts/generate-root.ts +57 -0
  262. package/packages/create-basement-app/templates/webgl/lib/styles/scripts/generate-tailwind.ts +162 -0
  263. package/packages/create-basement-app/templates/webgl/lib/styles/scripts/postcss-functions.mjs +168 -0
  264. package/packages/create-basement-app/templates/webgl/lib/styles/scripts/setup-styles.ts +24 -0
  265. package/packages/create-basement-app/templates/webgl/lib/styles/scripts/utils.ts +20 -0
  266. package/packages/create-basement-app/templates/webgl/lib/styles/typography.ts +36 -0
  267. package/packages/create-basement-app/templates/webgl/lib/utils/README.md +40 -0
  268. package/packages/create-basement-app/templates/webgl/lib/utils/css.d.ts +21 -0
  269. package/packages/create-basement-app/templates/webgl/lib/utils/easings.ts +240 -0
  270. package/packages/create-basement-app/templates/webgl/lib/utils/fetch.ts +84 -0
  271. package/packages/create-basement-app/templates/webgl/lib/utils/math.test.ts +221 -0
  272. package/packages/create-basement-app/templates/webgl/lib/utils/math.ts +236 -0
  273. package/packages/create-basement-app/templates/webgl/lib/utils/metadata.ts +126 -0
  274. package/packages/create-basement-app/templates/webgl/lib/utils/strings.test.ts +166 -0
  275. package/packages/create-basement-app/templates/webgl/lib/utils/strings.ts +246 -0
  276. package/packages/create-basement-app/templates/webgl/lib/utils/types.d.ts +15 -0
  277. package/packages/create-basement-app/templates/webgl/lib/utils/viewport.test.ts +256 -0
  278. package/packages/create-basement-app/templates/webgl/lib/utils/viewport.ts +193 -0
  279. package/packages/create-basement-app/templates/webgl/next.config.ts +142 -0
  280. package/packages/create-basement-app/templates/webgl/package.json +68 -0
  281. package/packages/create-basement-app/templates/webgl/postcss.config.mjs +42 -0
  282. package/packages/create-basement-app/templates/webgl/public/fonts/geist/Geist-Mono.woff2 +0 -0
  283. package/packages/create-basement-app/templates/webgl/tsconfig.json +43 -0
  284. package/tasks/.last-branch +1 -0
  285. package/tasks/CLAUDE.md +104 -0
  286. package/tasks/archive/2026-02-09-next-starter-dynamic-layers/prd.json +153 -0
  287. package/tasks/archive/2026-02-09-next-starter-dynamic-layers/progress.txt +115 -0
  288. package/tasks/prd-project-restructure.md +375 -0
  289. package/tasks/prd.json +227 -91
  290. package/tasks/progress.txt +281 -87
  291. package/tasks/ralph.sh +113 -0
  292. package/integrations/basehub/README.md +0 -3
  293. package/layers/experiment/components/layout/header/index.tsx +0 -58
  294. package/layers/experiment/components/layout/navigation-menu.tsx +0 -127
  295. package/layers/experiment/lib/constants.ts +0 -12
  296. package/layers/webgl/app/page.tsx +0 -10
  297. package/layers/webgl/components/webgl/canvas/dynamic.tsx +0 -34
  298. package/layers/webgl/components/webgl/canvas/index.tsx +0 -43
  299. package/layers/webgl/components/webgl/components/scene/index.tsx +0 -21
  300. package/src/mergers/next-config-merger.js +0 -63
  301. /package/{src → packages/cli/src}/commands/setup-sanity.js +0 -0
  302. /package/{src → packages/cli/src}/commands/worktree.js +0 -0
  303. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/api/draft-mode/disable/route.ts +0 -0
  304. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/api/draft-mode/enable/route.ts +0 -0
  305. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/api/revalidate/route.ts +0 -0
  306. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/layout.tsx +0 -0
  307. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/sitemap.ts +0 -0
  308. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/studio/[[...tool]]/page.tsx +0 -0
  309. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/studio/layout.tsx +0 -0
  310. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/components/ui/sanity-image/index.tsx +0 -0
  311. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/README.md +0 -0
  312. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/check-integration.ts +0 -0
  313. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/README.md +0 -0
  314. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/client.ts +0 -0
  315. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/components/disable-draft-mode.tsx +0 -0
  316. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/components/rich-text.tsx +0 -0
  317. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/env.ts +0 -0
  318. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/live/index.tsx +0 -0
  319. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/queries.ts +0 -0
  320. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/sanity.cli.ts +0 -0
  321. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/sanity.config.ts +0 -0
  322. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/sanity.types.ts +0 -0
  323. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schema.json +0 -0
  324. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/article.ts +0 -0
  325. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/example.ts +0 -0
  326. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/index.ts +0 -0
  327. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/link.ts +0 -0
  328. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/metadata.ts +0 -0
  329. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/navigation.ts +0 -0
  330. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/page.ts +0 -0
  331. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/richText.ts +0 -0
  332. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/structure.ts +0 -0
  333. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/utils/image.ts +0 -0
  334. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/utils/link.ts +0 -0
  335. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/scripts/copy-sanity-mcp.ts +0 -0
  336. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/scripts/generate-page.ts +0 -0
  337. /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/utils/metadata.ts +0 -0
  338. /package/{plugins → packages/create-basement-app/plugins}/README.md +0 -0
  339. /package/{plugins → packages/create-basement-app/plugins}/no-anchor-element.grit +0 -0
  340. /package/{plugins → packages/create-basement-app/plugins}/no-relative-parent-imports.grit +0 -0
  341. /package/{plugins → packages/create-basement-app/plugins}/no-unnecessary-forwardref.grit +0 -0
  342. /package/{template-hooks → packages/create-basement-app/template-hooks}/use-battery.ts +0 -0
  343. /package/{template-hooks → packages/create-basement-app/template-hooks}/use-device-perf.ts +0 -0
  344. /package/{template-hooks → packages/create-basement-app/template-hooks}/use-intersection-observer.ts +0 -0
  345. /package/{template-hooks → packages/create-basement-app/template-hooks}/use-media.ts +0 -0
  346. /package/{layers/webgpu → packages/create-basement-app/templates/default/lib/integrations}/.gitkeep +0 -0
package/package.json CHANGED
@@ -1,44 +1,44 @@
1
1
  {
2
- "name": "bsmnt",
3
- "version": "0.0.2",
4
- "description": "CLI to scaffold basement projects and add integrations",
5
- "type": "module",
6
- "bin": {
7
- "basement": "./bin/index.js"
8
- },
9
- "scripts": {
10
- "build": "bun pm pack --dry-run --ignore-scripts",
11
- "check": "for f in $(rg --files bin src -g '*.js'); do node --check \"$f\"; done",
12
- "lint": "biome check .",
13
- "lint:fix": "biome check --write .",
14
- "test": "echo \"Error: no test specified\" && exit 1",
15
- "changeset": "changeset",
16
- "version-packages": "changeset version",
17
- "release": "changeset publish",
18
- "prepublishOnly": "bun run build"
19
- },
20
- "keywords": [
21
- "webgpu",
22
- "r3f",
23
- "agents",
24
- "claude",
25
- "opencode"
26
- ],
27
- "author": "",
28
- "license": "ISC",
29
- "dependencies": {
30
- "chalk": "^5.6.2",
31
- "dotenv": "^17.2.3",
32
- "fs-extra": "^11.3.3",
33
- "inquirer": "^9.3.8",
34
- "ora": "^9.1.0",
35
- "picocolors": "^1.1.1",
36
- "prompts": "^2.4.2",
37
- "tiged": "^2.12.7"
38
- },
39
- "devDependencies": {
40
- "@biomejs/biome": "2.3.14",
41
- "@changesets/changelog-github": "^0.5.2",
42
- "@changesets/cli": "^2.29.8"
43
- }
2
+ "name": "bsmnt",
3
+ "version": "0.1.1",
4
+ "description": "CLI to scaffold basement projects and add integrations",
5
+ "type": "module",
6
+ "bin": {
7
+ "basement": "./bin/index.js"
8
+ },
9
+ "scripts": {
10
+ "build": "bun pm pack --dry-run --ignore-scripts",
11
+ "check": "for f in $(rg --files bin src -g '*.js'); do node --check \"$f\"; done",
12
+ "lint": "biome check .",
13
+ "lint:fix": "biome check --write .",
14
+ "test": "echo \"Error: no test specified\" && exit 1",
15
+ "changeset": "changeset",
16
+ "version-packages": "changeset version",
17
+ "release": "changeset publish",
18
+ "prepublishOnly": "bun run build"
19
+ },
20
+ "keywords": [
21
+ "webgpu",
22
+ "r3f",
23
+ "agents",
24
+ "claude",
25
+ "opencode"
26
+ ],
27
+ "author": "",
28
+ "license": "ISC",
29
+ "dependencies": {
30
+ "chalk": "^5.6.2",
31
+ "dotenv": "^17.2.3",
32
+ "fs-extra": "^11.3.3",
33
+ "inquirer": "^9.3.8",
34
+ "ora": "^9.1.0",
35
+ "picocolors": "^1.1.1",
36
+ "prompts": "^2.4.2",
37
+ "tiged": "^2.12.7"
38
+ },
39
+ "devDependencies": {
40
+ "@biomejs/biome": "2.3.14",
41
+ "@changesets/changelog-github": "^0.5.2",
42
+ "@changesets/cli": "^2.29.8"
43
+ }
44
44
  }
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import chalk from "chalk";
3
+ import pc from "picocolors";
4
4
  import prompts from "prompts";
5
5
  import { addIntegration } from "../src/commands/add-integration.js";
6
6
  import { createProject } from "../src/commands/create.js";
@@ -66,8 +66,6 @@ function parseArgs(args) {
66
66
  // CMS flags
67
67
  else if (arg === "-sanity" || arg === "--sanity") {
68
68
  options.cms = "sanity";
69
- } else if (arg === "-basehub" || arg === "--basehub") {
70
- options.cms = "basehub";
71
69
  } else if (arg === "-no-cms" || arg === "--no-cms") {
72
70
  options.cms = "none";
73
71
  }
@@ -104,88 +102,87 @@ function parseArgs(args) {
104
102
 
105
103
  function showHelp() {
106
104
  console.log(`
107
- ${chalk.bold("Usage:")} basement [mode] [project-name] [flags]
105
+ ${pc.bold("Usage:")} basement [mode] [project-name] [flags]
108
106
 
109
- ${chalk.bold("Modes:")}
107
+ ${pc.bold("Modes:")}
110
108
  -c, --create Setup a new basement project
111
109
  -a, --add Add integration to current project
112
110
  -w, --worktree Manage git worktrees
113
111
 
114
- ${chalk.bold("Create Flags:")}
115
- ${chalk.cyan("Template:")}
112
+ ${pc.bold("Create Flags:")}
113
+ ${pc.cyan("Template:")}
116
114
  -d, --default Use Default (Next.js) template
117
115
  -webgl Use WebGL template
118
116
  -webgpu Use WebGPU template
119
117
  -exp, -experiment Use Experiment template
120
118
 
121
- ${chalk.cyan("CMS:")}
119
+ ${pc.cyan("CMS:")}
122
120
  -sanity Use Sanity CMS
123
- -basehub Use BaseHub CMS
124
121
  -no-cms No CMS
125
122
 
126
- ${chalk.cyan("Animation:")}
123
+ ${pc.cyan("Animation:")}
127
124
  -gsap Use GSAP
128
125
  -motion Use Framer Motion
129
126
  -no-animation No animation library
130
127
 
131
- ${chalk.cyan("Agent:")}
128
+ ${pc.cyan("Agent:")}
132
129
  -claude Use Claude Code
133
130
  -opencode Use OpenCode
134
131
 
135
- ${chalk.cyan("Other:")}
132
+ ${pc.cyan("Other:")}
136
133
  -no-hooks Skip hooks selection
137
134
  -h, --help Show this help
138
135
 
139
- ${chalk.bold("Add Integration Flags:")}
136
+ ${pc.bold("Add Integration Flags:")}
140
137
  -sanity Add Sanity CMS integration
141
- -basehub Add BaseHub integration
142
138
 
143
- ${chalk.bold("Worktree Flags:")}
144
- ${chalk.cyan("Actions:")}
139
+ ${pc.bold("Worktree Flags:")}
140
+ ${pc.cyan("Actions:")}
145
141
  -wc, --worktree-create Create a new worktree
146
142
  -wl, --worktree-list List all worktrees
147
143
  -ws, --worktree-switch Switch to a worktree
148
144
  -wr, --worktree-remove Remove a worktree
149
145
  -wp, --worktree-prune Clean up stale worktrees
150
146
 
151
- ${chalk.cyan("Options:")}
147
+ ${pc.cyan("Options:")}
152
148
  -b=<name>, --branch=<name> Specify branch name (comma-separated for multiple)
153
149
  -db, --delete-branch Delete branch when removing worktree
154
150
  -f, --force Skip confirmation prompts
155
151
 
156
- ${chalk.bold("Examples:")}
157
- ${chalk.dim("# Interactive mode")}
152
+ ${pc.bold("Examples:")}
153
+ ${pc.dim("# Interactive mode")}
158
154
  basement
159
155
 
160
- ${chalk.dim("# Quick create with all flags")}
156
+ ${pc.dim("# Quick create with all flags")}
161
157
  basement -c my-app -d -sanity -gsap -claude -no-hooks
162
158
 
163
- ${chalk.dim("# Add Sanity to current project")}
159
+ ${pc.dim("# Add Sanity to current project")}
164
160
  basement -a -sanity
165
161
 
166
- ${chalk.dim("# Interactive add integration")}
162
+ ${pc.dim("# Interactive add integration")}
167
163
  basement -a
168
164
 
169
- ${chalk.dim("# Create worktree interactively")}
165
+ ${pc.dim("# Create worktree interactively")}
170
166
  basement -w
171
167
 
172
- ${chalk.dim("# Create worktree with branch name")}
168
+ ${pc.dim("# Create worktree with branch name")}
173
169
  basement -wc -b=feature/auth
174
170
 
175
- ${chalk.dim("# Create multiple worktrees at once")}
171
+ ${pc.dim("# Create multiple worktrees at once")}
176
172
  basement -wc -b=feature/auth,feature/dashboard,fix/bug-123
177
173
 
178
- ${chalk.dim("# List all worktrees")}
174
+ ${pc.dim("# List all worktrees")}
179
175
  basement -wl
180
176
 
181
- ${chalk.dim("# Remove worktree and delete branch")}
177
+ ${pc.dim("# Remove worktree and delete branch")}
182
178
  basement -wr -b=feature/auth -db -f
183
179
  `);
184
180
  }
185
181
 
186
182
  function showBanner() {
183
+ const orange = (text) => `\x1b[1m\x1b[38;2;255;77;0m${text}\x1b[0m`;
187
184
  console.log(
188
- chalk.bold.hex("#FF4D00")(`
185
+ orange(`
189
186
  ██████╗ █████╗ ███████╗███████╗███╗ ███╗███████╗███╗ ██╗████████╗
190
187
  ██╔══██╗██╔══██╗██╔════╝██╔════╝████╗ ████║██╔════╝████╗ ██║╚══██╔══╝
191
188
  ██████╔╝███████║███████╗█████╗ ██╔████╔██║█████╗ ██╔██╗ ██║ ██║
@@ -194,7 +191,7 @@ function showBanner() {
194
191
  ╚═════╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═══╝ ╚═╝
195
192
  `),
196
193
  );
197
- console.log(chalk.bold.hex("#FF4D00")("\n🚀 Welcome to basement-cli\n"));
194
+ console.log(orange("\n Welcome to basement-cli\n"));
198
195
  }
199
196
 
200
197
  async function main() {
@@ -238,7 +235,7 @@ async function main() {
238
235
  });
239
236
 
240
237
  if (!selectedMode) {
241
- console.log(chalk.yellow("\nOperation cancelled.\n"));
238
+ console.log(pc.yellow("\n Operation cancelled.\n"));
242
239
  return;
243
240
  }
244
241
 
@@ -254,7 +251,7 @@ async function main() {
254
251
  await worktreeCommand(options);
255
252
  }
256
253
  } catch (error) {
257
- console.error(chalk.red("\nAn error occurred:"), error.message);
254
+ console.error(pc.red("\n An error occurred:"), error.message);
258
255
  process.exit(1);
259
256
  }
260
257
  }
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "@basementstudio/cli",
3
+ "version": "0.2.2",
4
+ "description": "CLI to scaffold basement projects and add integrations",
5
+ "type": "module",
6
+ "bin": {
7
+ "basement": "./bin/index.js"
8
+ },
9
+ "dependencies": {
10
+ "@basementstudio/create-basement-app": "workspace:*",
11
+ "fs-extra": "^11.3.3",
12
+ "ora": "^9.1.0",
13
+ "picocolors": "^1.1.1",
14
+ "prompts": "^2.4.2"
15
+ }
16
+ }
@@ -4,6 +4,7 @@ import fs from "fs-extra";
4
4
  import ora from "ora";
5
5
  import pc from "picocolors";
6
6
  import prompts from "prompts";
7
+ import { sanityConfig } from "../../../create-basement-app/integrations/sanity/config.js";
7
8
 
8
9
  /**
9
10
  * Validates that the current directory is a valid Next.js project
@@ -56,7 +57,6 @@ async function validateProject(targetDir) {
56
57
  async function checkExistingIntegration(targetDir, integration, usesSrcPrefix) {
57
58
  const integrationPaths = {
58
59
  sanity: "lib/integrations/sanity",
59
- basehub: "lib/integrations/basehub",
60
60
  };
61
61
 
62
62
  const basePath = integrationPaths[integration];
@@ -66,39 +66,35 @@ async function checkExistingIntegration(targetDir, integration, usesSrcPrefix) {
66
66
  }
67
67
 
68
68
  /**
69
- * Add CMS depeπzckage.json
69
+ * Add CMS dependencies to package.json from integration config manifests
70
70
  */
71
71
  async function addDependencies(targetDir, integration) {
72
72
  const pkgPath = path.join(targetDir, "package.json");
73
73
  const pkg = await fs.readJson(pkgPath);
74
74
 
75
- if (integration === "sanity") {
76
- pkg.dependencies = {
77
- ...pkg.dependencies,
78
- "@sanity/asset-utils": "^2.3.0",
79
- "@sanity/image-url": "^2.0.3",
80
- "@sanity/visual-editing": "^5.1.1",
81
- "@sanity/vision": "^5.7.0",
82
- "next-sanity": "^12.0.14",
83
- };
75
+ const cmsConfigs = { sanity: sanityConfig };
76
+ const config = cmsConfigs[integration];
84
77
 
85
- pkg.devDependencies = {
86
- ...pkg.devDependencies,
87
- sanity: "^5.6.0",
88
- };
89
-
90
- pkg.scripts = {
91
- ...pkg.scripts,
92
- "sanity:extract":
93
- "cd lib/integrations/sanity && bun --env-file ../../../.env.local sanity schema extract",
94
- "sanity:typegen":
95
- "cd lib/integrations/sanity && bun --env-file ../../../.env.local sanity typegen generate && bun biome check --write --unsafe",
96
- };
97
- } else if (integration === "basehub") {
78
+ if (config) {
98
79
  pkg.dependencies = {
99
80
  ...pkg.dependencies,
100
- basehub: "^3.0.0",
81
+ ...config.dependencies,
101
82
  };
83
+ if (
84
+ config.devDependencies &&
85
+ Object.keys(config.devDependencies).length > 0
86
+ ) {
87
+ pkg.devDependencies = {
88
+ ...pkg.devDependencies,
89
+ ...config.devDependencies,
90
+ };
91
+ }
92
+ if (config.scripts && Object.keys(config.scripts).length > 0) {
93
+ pkg.scripts = {
94
+ ...pkg.scripts,
95
+ ...config.scripts,
96
+ };
97
+ }
102
98
  }
103
99
 
104
100
  await fs.writeJson(pkgPath, pkg, { spaces: 2 });
@@ -144,11 +140,6 @@ export async function addIntegration(options = {}) {
144
140
  description: "Headless CMS with real-time collaboration",
145
141
  value: "sanity",
146
142
  },
147
- {
148
- title: "BaseHub",
149
- description: "AI-native headless CMS",
150
- value: "basehub",
151
- },
152
143
  ],
153
144
  });
154
145
 
@@ -187,7 +178,7 @@ export async function addIntegration(options = {}) {
187
178
 
188
179
  try {
189
180
  const { injectIntegration, formatMergeResults } = await import(
190
- "../mergers/index.js"
181
+ "../../../create-basement-app/src/mergers/index.js"
191
182
  );
192
183
  const results = await injectIntegration(
193
184
  targetDir,
@@ -313,12 +304,6 @@ export async function addIntegration(options = {}) {
313
304
  console.log(pc.cyan(` 4. Run: bun sanity:typegen`));
314
305
  console.log(pc.cyan(` 5. Access Sanity Studio at: /studio`));
315
306
  }
316
- } else if (integration === "basehub") {
317
- console.log(
318
- pc.cyan(` 2. Create a BaseHub project at https://basehub.com`),
319
- );
320
- console.log(pc.cyan(` 3. Add your BaseHub token to .env.local:`));
321
- console.log(pc.dim(` BASEHUB_TOKEN=your-token`));
322
307
  }
323
308
 
324
309
  console.log();