bsmnt 0.1.3 → 0.2.4

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 (407) hide show
  1. package/README.md +18 -18
  2. package/dist/configs/animations.d.ts +25 -0
  3. package/dist/configs/animations.d.ts.map +1 -0
  4. package/dist/configs/animations.js +29 -0
  5. package/dist/configs/animations.js.map +1 -0
  6. package/dist/helpers/add/hooks-config.d.ts +22 -0
  7. package/dist/helpers/add/hooks-config.d.ts.map +1 -0
  8. package/dist/helpers/add/hooks-config.js +37 -0
  9. package/dist/helpers/add/hooks-config.js.map +1 -0
  10. package/dist/helpers/add/index.d.ts +18 -0
  11. package/dist/helpers/add/index.d.ts.map +1 -0
  12. package/dist/helpers/add/index.js +152 -0
  13. package/dist/helpers/add/index.js.map +1 -0
  14. package/dist/helpers/create/copy-template.d.ts +11 -0
  15. package/dist/helpers/create/copy-template.d.ts.map +1 -0
  16. package/dist/helpers/create/copy-template.js +19 -0
  17. package/dist/helpers/create/copy-template.js.map +1 -0
  18. package/dist/helpers/create/index.d.ts +22 -0
  19. package/dist/helpers/create/index.d.ts.map +1 -0
  20. package/dist/helpers/create/index.js +81 -0
  21. package/dist/helpers/create/index.js.map +1 -0
  22. package/dist/helpers/create/install.d.ts +8 -0
  23. package/dist/helpers/create/install.d.ts.map +1 -0
  24. package/dist/helpers/create/install.js +20 -0
  25. package/dist/helpers/create/install.js.map +1 -0
  26. package/dist/helpers/create/rename-files.d.ts +10 -0
  27. package/dist/helpers/create/rename-files.d.ts.map +1 -0
  28. package/dist/helpers/create/rename-files.js +17 -0
  29. package/dist/helpers/create/rename-files.js.map +1 -0
  30. package/dist/helpers/create/setup-agent.d.ts +21 -0
  31. package/dist/helpers/create/setup-agent.d.ts.map +1 -0
  32. package/dist/helpers/create/setup-agent.js +65 -0
  33. package/dist/helpers/create/setup-agent.js.map +1 -0
  34. package/dist/helpers/create/setup-sanity.d.ts +23 -0
  35. package/dist/helpers/create/setup-sanity.d.ts.map +1 -0
  36. package/dist/helpers/create/setup-sanity.js +354 -0
  37. package/dist/helpers/create/setup-sanity.js.map +1 -0
  38. package/dist/helpers/create/update-package.d.ts +20 -0
  39. package/dist/helpers/create/update-package.d.ts.map +1 -0
  40. package/dist/helpers/create/update-package.js +87 -0
  41. package/dist/helpers/create/update-package.js.map +1 -0
  42. package/dist/helpers/integrate/index.d.ts +13 -0
  43. package/dist/helpers/integrate/index.d.ts.map +1 -0
  44. package/dist/helpers/integrate/index.js +204 -0
  45. package/dist/helpers/integrate/index.js.map +1 -0
  46. package/dist/helpers/integrate/merge-config.d.ts +21 -0
  47. package/dist/helpers/integrate/merge-config.d.ts.map +1 -0
  48. package/dist/helpers/integrate/merge-config.js +38 -0
  49. package/dist/helpers/integrate/merge-config.js.map +1 -0
  50. package/dist/helpers/integrate/merge-orchestrator.d.ts +10 -0
  51. package/dist/helpers/integrate/merge-orchestrator.d.ts.map +1 -0
  52. package/dist/helpers/integrate/merge-orchestrator.js +188 -0
  53. package/dist/helpers/integrate/merge-orchestrator.js.map +1 -0
  54. package/dist/helpers/integrate/sanity/config.d.ts +14 -0
  55. package/dist/helpers/integrate/sanity/config.d.ts.map +1 -0
  56. package/dist/helpers/integrate/sanity/config.js +38 -0
  57. package/dist/helpers/integrate/sanity/config.js.map +1 -0
  58. package/dist/helpers/integrate/sanity/mergers/check-integration-merger.d.ts +13 -0
  59. package/dist/helpers/integrate/sanity/mergers/check-integration-merger.d.ts.map +1 -0
  60. package/dist/helpers/integrate/sanity/mergers/check-integration-merger.js +84 -0
  61. package/dist/helpers/integrate/sanity/mergers/check-integration-merger.js.map +1 -0
  62. package/dist/helpers/integrate/sanity/mergers/layout-merger.d.ts +23 -0
  63. package/dist/helpers/integrate/sanity/mergers/layout-merger.d.ts.map +1 -0
  64. package/dist/helpers/integrate/sanity/mergers/layout-merger.js +161 -0
  65. package/dist/helpers/integrate/sanity/mergers/layout-merger.js.map +1 -0
  66. package/dist/helpers/integrate/sanity/mergers/sitemap-merger.d.ts +13 -0
  67. package/dist/helpers/integrate/sanity/mergers/sitemap-merger.d.ts.map +1 -0
  68. package/{packages/create-basement-app/src → dist/helpers/integrate/sanity}/mergers/sitemap-merger.js +33 -45
  69. package/dist/helpers/integrate/sanity/mergers/sitemap-merger.js.map +1 -0
  70. package/dist/index.d.ts +3 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +337 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/paths.d.ts +14 -0
  75. package/dist/paths.d.ts.map +1 -0
  76. package/dist/paths.js +24 -0
  77. package/dist/paths.js.map +1 -0
  78. package/dist/utils/detect-project.d.ts +40 -0
  79. package/dist/utils/detect-project.d.ts.map +1 -0
  80. package/dist/utils/detect-project.js +69 -0
  81. package/dist/utils/detect-project.js.map +1 -0
  82. package/dist/utils/format-results.d.ts +24 -0
  83. package/dist/utils/format-results.d.ts.map +1 -0
  84. package/dist/utils/format-results.js +27 -0
  85. package/dist/utils/format-results.js.map +1 -0
  86. package/index.js +25 -0
  87. package/package.json +40 -15
  88. package/{packages/create-basement-app/templates/experiment → src/templates/next-default}/app/layout.tsx +18 -18
  89. package/src/templates/next-default/app/page.tsx +11 -0
  90. package/{packages/create-basement-app/templates/experiment → src/templates/next-default}/app/robots.ts +3 -3
  91. package/{packages/create-basement-app/templates/webgl → src/templates/next-default}/app/sitemap.ts +4 -4
  92. package/{packages/create-basement-app/templates/default → src/templates/next-default}/biome.json +2 -2
  93. package/{packages/create-basement-app/templates/webgl → src/templates/next-default}/components/layout/footer/index.tsx +5 -1
  94. package/{packages/create-basement-app/templates/webgl → src/templates/next-default}/components/layout/header/index.tsx +1 -3
  95. package/{packages/create-basement-app/templates/default → src/templates/next-default}/components/layout/theme/index.tsx +1 -1
  96. package/{packages/create-basement-app/templates/default → src/templates/next-default}/components/layout/wrapper/index.tsx +0 -2
  97. package/{packages/create-basement-app/templates/webgl → src/templates/next-default}/components/ui/image/index.tsx +6 -11
  98. package/{packages/create-basement-app/templates/experiment → src/templates/next-default}/components/ui/link/index.tsx +39 -33
  99. package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/metadata.ts +26 -26
  100. package/{packages/create-basement-app/templates/default → src/templates/next-default}/package.json +4 -4
  101. package/{packages/create-basement-app/templates/webgl → src/templates/next-experiments}/app/layout.tsx +18 -18
  102. package/{packages/create-basement-app/templates/webgl → src/templates/next-experiments}/app/robots.ts +3 -3
  103. package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/sitemap.ts +4 -4
  104. package/{packages/create-basement-app/templates/webgl → src/templates/next-experiments}/biome.json +2 -2
  105. package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/layout/theme/index.tsx +1 -1
  106. package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/layout/wrapper/index.tsx +7 -9
  107. package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/ui/image/index.tsx +39 -46
  108. package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/ui/link/index.tsx +6 -0
  109. package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/metadata.ts +26 -26
  110. package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/package.json +4 -4
  111. package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/app/layout.tsx +18 -18
  112. package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/app/robots.ts +3 -3
  113. package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/app/sitemap.ts +4 -4
  114. package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/biome.json +2 -2
  115. package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/layout/theme/index.tsx +1 -1
  116. package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/layout/wrapper/index.tsx +0 -2
  117. package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/components/ui/image/index.tsx +6 -11
  118. package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/ui/link/index.tsx +9 -2
  119. package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/webgl/components/scene/index.tsx +1 -0
  120. package/src/templates/next-webgl/lib/renderer.ts +7 -0
  121. package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/metadata.ts +26 -26
  122. package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/package.json +4 -4
  123. package/packages/cli/bin/index.js +0 -259
  124. package/packages/cli/src/commands/add-integration.js +0 -310
  125. package/packages/cli/src/commands/create.js +0 -409
  126. package/packages/cli/src/commands/setup-sanity.js +0 -426
  127. package/packages/cli/src/commands/worktree.js +0 -805
  128. package/packages/create-basement-app/integrations/sanity/config.js +0 -46
  129. package/packages/create-basement-app/integrations/sanity/files/app/api/draft-mode/disable/route.ts +0 -7
  130. package/packages/create-basement-app/integrations/sanity/files/app/api/draft-mode/enable/route.ts +0 -21
  131. package/packages/create-basement-app/integrations/sanity/files/app/api/revalidate/route.ts +0 -37
  132. package/packages/create-basement-app/integrations/sanity/files/app/layout.tsx +0 -111
  133. package/packages/create-basement-app/integrations/sanity/files/app/sitemap.ts +0 -80
  134. package/packages/create-basement-app/integrations/sanity/files/app/studio/[[...tool]]/page.tsx +0 -8
  135. package/packages/create-basement-app/integrations/sanity/files/app/studio/layout.tsx +0 -7
  136. package/packages/create-basement-app/integrations/sanity/files/components/ui/sanity-image/index.tsx +0 -37
  137. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/README.md +0 -58
  138. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/check-integration.ts +0 -62
  139. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/README.md +0 -144
  140. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/client.ts +0 -30
  141. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/components/disable-draft-mode.tsx +0 -29
  142. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/components/rich-text.tsx +0 -73
  143. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/env.ts +0 -38
  144. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/live/index.tsx +0 -34
  145. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/queries.ts +0 -99
  146. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/sanity.cli.ts +0 -20
  147. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/sanity.config.ts +0 -94
  148. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/sanity.types.ts +0 -337
  149. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schema.json +0 -1850
  150. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/article.ts +0 -132
  151. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/example.ts +0 -203
  152. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/index.ts +0 -37
  153. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/link.ts +0 -127
  154. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/metadata.ts +0 -68
  155. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/navigation.ts +0 -39
  156. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/page.ts +0 -77
  157. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/richText.ts +0 -59
  158. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/structure.ts +0 -5
  159. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/utils/image.ts +0 -11
  160. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/utils/link.ts +0 -61
  161. package/packages/create-basement-app/integrations/sanity/files/lib/scripts/copy-sanity-mcp.ts +0 -23
  162. package/packages/create-basement-app/integrations/sanity/files/lib/scripts/generate-page.ts +0 -310
  163. package/packages/create-basement-app/integrations/sanity/files/lib/utils/metadata.ts +0 -190
  164. package/packages/create-basement-app/integrations/sanity/mergers/check-integration-merger.js +0 -105
  165. package/packages/create-basement-app/integrations/sanity/mergers/layout-merger.js +0 -223
  166. package/packages/create-basement-app/integrations/sanity/mergers/sitemap-merger.js +0 -121
  167. package/packages/create-basement-app/package.json +0 -10
  168. package/packages/create-basement-app/src/configs/animations.js +0 -28
  169. package/packages/create-basement-app/src/index.js +0 -15
  170. package/packages/create-basement-app/src/mergers/check-integration-merger.js +0 -105
  171. package/packages/create-basement-app/src/mergers/config.js +0 -109
  172. package/packages/create-basement-app/src/mergers/index.js +0 -346
  173. package/packages/create-basement-app/src/mergers/layout-merger.js +0 -223
  174. package/packages/create-basement-app/templates/default/.cursor/rules/README.md +0 -184
  175. package/packages/create-basement-app/templates/default/.cursor/rules/architecture.mdc +0 -437
  176. package/packages/create-basement-app/templates/default/.cursor/rules/components.mdc +0 -436
  177. package/packages/create-basement-app/templates/default/.cursor/rules/integrations.mdc +0 -447
  178. package/packages/create-basement-app/templates/default/.cursor/rules/main.mdc +0 -278
  179. package/packages/create-basement-app/templates/default/.cursor/rules/styling.mdc +0 -433
  180. package/packages/create-basement-app/templates/default/.github/workflows/lighthouse-to-slack.yml +0 -136
  181. package/packages/create-basement-app/templates/experiment/.cursor/rules/README.md +0 -184
  182. package/packages/create-basement-app/templates/experiment/.cursor/rules/architecture.mdc +0 -437
  183. package/packages/create-basement-app/templates/experiment/.cursor/rules/components.mdc +0 -436
  184. package/packages/create-basement-app/templates/experiment/.cursor/rules/integrations.mdc +0 -447
  185. package/packages/create-basement-app/templates/experiment/.cursor/rules/main.mdc +0 -278
  186. package/packages/create-basement-app/templates/experiment/.cursor/rules/styling.mdc +0 -433
  187. package/packages/create-basement-app/templates/experiment/.github/workflows/lighthouse-to-slack.yml +0 -136
  188. package/packages/create-basement-app/templates/experiment/app/page.tsx +0 -275
  189. package/packages/create-basement-app/templates/webgl/.biome/plugins/README.md +0 -21
  190. package/packages/create-basement-app/templates/webgl/.cursor/rules/README.md +0 -184
  191. package/packages/create-basement-app/templates/webgl/.cursor/rules/architecture.mdc +0 -437
  192. package/packages/create-basement-app/templates/webgl/.cursor/rules/components.mdc +0 -436
  193. package/packages/create-basement-app/templates/webgl/.cursor/rules/integrations.mdc +0 -447
  194. package/packages/create-basement-app/templates/webgl/.cursor/rules/main.mdc +0 -278
  195. package/packages/create-basement-app/templates/webgl/.cursor/rules/styling.mdc +0 -433
  196. package/packages/create-basement-app/templates/webgl/.github/workflows/lighthouse-to-slack.yml +0 -136
  197. /package/{packages/create-basement-app/plugins → plugins}/no-anchor-element.grit +0 -0
  198. /package/{packages/create-basement-app/plugins → plugins}/no-relative-parent-imports.grit +0 -0
  199. /package/{packages/create-basement-app/plugins → plugins}/no-unnecessary-forwardref.grit +0 -0
  200. /package/{packages/create-basement-app → src}/template-hooks/config.js +0 -0
  201. /package/{packages/create-basement-app → src}/template-hooks/use-battery.ts +0 -0
  202. /package/{packages/create-basement-app → src}/template-hooks/use-device-perf.ts +0 -0
  203. /package/{packages/create-basement-app → src}/template-hooks/use-intersection-observer.ts +0 -0
  204. /package/{packages/create-basement-app → src}/template-hooks/use-media.ts +0 -0
  205. /package/{packages/create-basement-app → src/templates/next-default/.biome}/plugins/README.md +0 -0
  206. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.biome/plugins/no-anchor-element.grit +0 -0
  207. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.biome/plugins/no-relative-parent-imports.grit +0 -0
  208. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.biome/plugins/no-unnecessary-forwardref.grit +0 -0
  209. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.editorconfig +0 -0
  210. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.env.example +0 -0
  211. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.gitattributes +0 -0
  212. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  213. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.vscode/extensions.json +0 -0
  214. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.vscode/settings.json +0 -0
  215. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/README.md +0 -0
  216. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/_gitignore +0 -0
  217. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/app/favicon.ico +0 -0
  218. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/components/basement.svg +0 -0
  219. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/components/ui/README.md +0 -0
  220. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/components/ui/image/README.md +0 -0
  221. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/README.md +0 -0
  222. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/index.ts +0 -0
  223. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/use-device-detection.ts +0 -0
  224. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/use-media-breakpoint.ts +0 -0
  225. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/use-prefetch.ts +0 -0
  226. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/integrations/.gitkeep +0 -0
  227. /package/{packages/create-basement-app/templates/webgl → src/templates/next-default}/lib/renderer.ts +0 -0
  228. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/dev.ts +0 -0
  229. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/generate-component.ts +0 -0
  230. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/generate-page.ts +0 -0
  231. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/generate.ts +0 -0
  232. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/utils.ts +0 -0
  233. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/store/app.ts +0 -0
  234. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/store/index.ts +0 -0
  235. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/README.md +0 -0
  236. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/cn.ts +0 -0
  237. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/colors.ts +0 -0
  238. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/config.ts +0 -0
  239. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/global.css +0 -0
  240. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/index.css +0 -0
  241. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/reset.css +0 -0
  242. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/root.css +0 -0
  243. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/tailwind.css +0 -0
  244. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/easings.ts +0 -0
  245. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/fonts.ts +0 -0
  246. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/index.ts +0 -0
  247. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/layout.mjs +0 -0
  248. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/README.md +0 -0
  249. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/generate-root.ts +0 -0
  250. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/generate-tailwind.ts +0 -0
  251. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/postcss-functions.mjs +0 -0
  252. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/setup-styles.ts +0 -0
  253. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/utils.ts +0 -0
  254. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/typography.ts +0 -0
  255. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/README.md +0 -0
  256. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/css.d.ts +0 -0
  257. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/easings.ts +0 -0
  258. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/fetch.ts +0 -0
  259. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/math.test.ts +0 -0
  260. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/math.ts +0 -0
  261. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/strings.test.ts +0 -0
  262. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/strings.ts +0 -0
  263. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/types.d.ts +0 -0
  264. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/viewport.test.ts +0 -0
  265. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/viewport.ts +0 -0
  266. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/next.config.ts +0 -0
  267. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/postcss.config.mjs +0 -0
  268. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/public/fonts/geist/Geist-Mono.woff2 +0 -0
  269. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/tsconfig.json +0 -0
  270. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.biome/plugins/README.md +0 -0
  271. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.biome/plugins/no-anchor-element.grit +0 -0
  272. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.biome/plugins/no-relative-parent-imports.grit +0 -0
  273. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.biome/plugins/no-unnecessary-forwardref.grit +0 -0
  274. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.editorconfig +0 -0
  275. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.env.example +0 -0
  276. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.gitattributes +0 -0
  277. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  278. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.vscode/extensions.json +0 -0
  279. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.vscode/settings.json +0 -0
  280. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/README.md +0 -0
  281. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/_gitignore +0 -0
  282. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/app/favicon.ico +0 -0
  283. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/page.tsx +0 -0
  284. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/basement.svg +0 -0
  285. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/layout/footer/index.tsx +0 -0
  286. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/layout/header/index.tsx +0 -0
  287. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/layout/navigation-menu.tsx +0 -0
  288. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/ui/README.md +0 -0
  289. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/ui/image/README.md +0 -0
  290. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/README.md +0 -0
  291. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/constants.ts +0 -0
  292. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/index.ts +0 -0
  293. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/use-device-detection.ts +0 -0
  294. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/use-media-breakpoint.ts +0 -0
  295. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/use-prefetch.ts +0 -0
  296. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/integrations/.gitkeep +0 -0
  297. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/dev.ts +0 -0
  298. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/generate-component.ts +0 -0
  299. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/generate-page.ts +0 -0
  300. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/generate.ts +0 -0
  301. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/utils.ts +0 -0
  302. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/store/app.ts +0 -0
  303. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/store/index.ts +0 -0
  304. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/README.md +0 -0
  305. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/cn.ts +0 -0
  306. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/colors.ts +0 -0
  307. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/config.ts +0 -0
  308. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/global.css +0 -0
  309. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/index.css +0 -0
  310. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/reset.css +0 -0
  311. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/root.css +0 -0
  312. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/tailwind.css +0 -0
  313. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/easings.ts +0 -0
  314. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/fonts.ts +0 -0
  315. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/index.ts +0 -0
  316. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/layout.mjs +0 -0
  317. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/README.md +0 -0
  318. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/generate-root.ts +0 -0
  319. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/generate-tailwind.ts +0 -0
  320. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/postcss-functions.mjs +0 -0
  321. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/setup-styles.ts +0 -0
  322. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/utils.ts +0 -0
  323. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/typography.ts +0 -0
  324. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/README.md +0 -0
  325. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/css.d.ts +0 -0
  326. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/easings.ts +0 -0
  327. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/fetch.ts +0 -0
  328. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/math.test.ts +0 -0
  329. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/math.ts +0 -0
  330. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/strings.test.ts +0 -0
  331. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/strings.ts +0 -0
  332. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/types.d.ts +0 -0
  333. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/viewport.test.ts +0 -0
  334. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/viewport.ts +0 -0
  335. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/next.config.ts +0 -0
  336. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/postcss.config.mjs +0 -0
  337. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/public/fonts/geist/Geist-Mono.woff2 +0 -0
  338. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/tsconfig.json +0 -0
  339. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.biome/plugins/README.md +0 -0
  340. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.biome/plugins/no-anchor-element.grit +0 -0
  341. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.biome/plugins/no-relative-parent-imports.grit +0 -0
  342. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.biome/plugins/no-unnecessary-forwardref.grit +0 -0
  343. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.editorconfig +0 -0
  344. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.env.example +0 -0
  345. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.gitattributes +0 -0
  346. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  347. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.vscode/extensions.json +0 -0
  348. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.vscode/settings.json +0 -0
  349. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/README.md +0 -0
  350. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/_gitignore +0 -0
  351. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/app/favicon.ico +0 -0
  352. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/app/page.tsx +0 -0
  353. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/basement.svg +0 -0
  354. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/layout/footer/index.tsx +0 -0
  355. /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/components/layout/header/index.tsx +0 -0
  356. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/ui/README.md +0 -0
  357. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/ui/image/README.md +0 -0
  358. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/webgl/canvas/dynamic.tsx +0 -0
  359. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/webgl/canvas/index.tsx +0 -0
  360. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/README.md +0 -0
  361. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/index.ts +0 -0
  362. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/use-device-detection.ts +0 -0
  363. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/use-media-breakpoint.ts +0 -0
  364. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/use-prefetch.ts +0 -0
  365. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/integrations/.gitkeep +0 -0
  366. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/dev.ts +0 -0
  367. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/generate-component.ts +0 -0
  368. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/generate-page.ts +0 -0
  369. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/generate.ts +0 -0
  370. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/utils.ts +0 -0
  371. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/store/app.ts +0 -0
  372. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/store/index.ts +0 -0
  373. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/README.md +0 -0
  374. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/cn.ts +0 -0
  375. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/colors.ts +0 -0
  376. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/config.ts +0 -0
  377. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/global.css +0 -0
  378. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/index.css +0 -0
  379. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/reset.css +0 -0
  380. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/root.css +0 -0
  381. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/tailwind.css +0 -0
  382. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/easings.ts +0 -0
  383. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/fonts.ts +0 -0
  384. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/index.ts +0 -0
  385. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/layout.mjs +0 -0
  386. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/README.md +0 -0
  387. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/generate-root.ts +0 -0
  388. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/generate-tailwind.ts +0 -0
  389. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/postcss-functions.mjs +0 -0
  390. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/setup-styles.ts +0 -0
  391. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/utils.ts +0 -0
  392. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/typography.ts +0 -0
  393. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/README.md +0 -0
  394. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/css.d.ts +0 -0
  395. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/easings.ts +0 -0
  396. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/fetch.ts +0 -0
  397. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/math.test.ts +0 -0
  398. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/math.ts +0 -0
  399. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/strings.test.ts +0 -0
  400. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/strings.ts +0 -0
  401. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/types.d.ts +0 -0
  402. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/viewport.test.ts +0 -0
  403. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/viewport.ts +0 -0
  404. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/next.config.ts +0 -0
  405. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/postcss.config.mjs +0 -0
  406. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/public/fonts/geist/Geist-Mono.woff2 +0 -0
  407. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/tsconfig.json +0 -0
@@ -1,136 +0,0 @@
1
- # Lighthouse Performance Reports
2
- #
3
- # Runs Lighthouse on Vercel deployments and posts results as commit comments.
4
- # Our GitHub → Slack integration forwards these to Slack automatically.
5
- #
6
- # Required GitHub Secrets:
7
- # VERCEL_TOKEN - Vercel API token (Settings → Tokens)
8
-
9
- name: Lighthouse
10
-
11
- on:
12
- push:
13
- branches: [main]
14
- pull_request:
15
- types: [opened, synchronize]
16
- branches: [main]
17
- paths:
18
- # Only runs when relevant files change
19
- - 'app/**'
20
- - 'components/**'
21
- - 'lib/**'
22
- - 'public/**'
23
- - 'package.json'
24
- - 'package-lock.json'
25
- - 'next.config.**'
26
-
27
- permissions:
28
- contents: write
29
- pull-requests: write
30
- actions: read
31
-
32
- jobs:
33
- lighthouse:
34
- runs-on: ubuntu-latest
35
- timeout-minutes: 10
36
-
37
- steps:
38
- - name: Discover Vercel Project
39
- id: vercel_info
40
- env:
41
- VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
42
- run: |
43
- project_name="${GITHUB_REPOSITORY##*/}"
44
- echo "Looking for Vercel project: $project_name"
45
-
46
- # Get team ID for basement.studio
47
- teams=$(curl -s -H "Authorization: Bearer $VERCEL_TOKEN" "https://api.vercel.com/v2/teams")
48
- team_id=$(echo "$teams" | jq -r '.teams[] | select(.slug=="basement") | .id')
49
- echo "Team ID: $team_id"
50
-
51
- # Get project ID by matching repo name
52
- projects=$(curl -s -H "Authorization: Bearer $VERCEL_TOKEN" "https://api.vercel.com/v9/projects?teamId=$team_id")
53
- project_id=$(echo "$projects" | jq -r ".projects[] | select(.name==\"$project_name\") | .id")
54
- echo "Project ID: $project_id"
55
-
56
- echo "team_id=$team_id" >> $GITHUB_OUTPUT
57
- echo "project_id=$project_id" >> $GITHUB_OUTPUT
58
-
59
- - name: Get Vercel Preview URL
60
- id: vercel_url
61
- uses: zentered/vercel-preview-url@v1.4.0
62
- env:
63
- VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
64
- with:
65
- vercel_team_id: ${{ steps.vercel_info.outputs.team_id }}
66
- vercel_project_id: ${{ steps.vercel_info.outputs.project_id }}
67
-
68
- - name: Wait for Deployment
69
- id: await
70
- uses: UnlyEd/github-action-await-vercel@v2.0.0
71
- env:
72
- VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
73
- with:
74
- deployment-url: ${{ steps.vercel_url.outputs.preview_url }}
75
- timeout: 300
76
- poll-interval: 10
77
- continue-on-error: true
78
-
79
- - name: Run Lighthouse
80
- if: steps.await.outcome == 'success'
81
- id: lighthouse
82
- uses: treosh/lighthouse-ci-action@v12
83
- env:
84
- LHCI_BUILD_CONTEXT__CURRENT_HASH: ${{ github.sha }}
85
- with:
86
- urls: https://${{ steps.vercel_url.outputs.preview_url }}
87
- uploadArtifacts: true
88
- temporaryPublicStorage: true
89
-
90
- - name: Format Results
91
- id: format
92
- uses: actions/github-script@v8
93
- env:
94
- DEPLOYMENT_FAILED: ${{ steps.await.outcome != 'success' }}
95
- PREVIEW_URL: ${{ steps.vercel_url.outputs.preview_url }}
96
- MANIFEST: ${{ steps.lighthouse.outputs.manifest }}
97
- LINKS: ${{ steps.lighthouse.outputs.links }}
98
- with:
99
- script: |
100
- if (process.env.DEPLOYMENT_FAILED === 'true') {
101
- core.setOutput('comment', '⚠️ Vercel deployment failed or timed out. Lighthouse audit skipped.');
102
- return;
103
- }
104
-
105
- try {
106
- const manifest = JSON.parse(process.env.MANIFEST);
107
- const links = JSON.parse(process.env.LINKS);
108
- const previewUrl = process.env.PREVIEW_URL;
109
-
110
- const scores = manifest[0].summary;
111
- const reportUrl = Object.values(links)[0];
112
-
113
- const emoji = (score) => score >= 0.9 ? '🟢' : score >= 0.5 ? '🟠' : '🔴';
114
- const format = (score) => Math.round(score * 100);
115
-
116
- const comment = [
117
- `⚡️ [Lighthouse report](${reportUrl}) for this commit:`,
118
- '',
119
- `${emoji(scores.performance)} Performance: ${format(scores.performance)}`,
120
- `${emoji(scores.accessibility)} Accessibility: ${format(scores.accessibility)}`,
121
- `${emoji(scores['best-practices'])} Best Practices: ${format(scores['best-practices'])}`,
122
- `${emoji(scores.seo)} SEO: ${format(scores.seo)}`,
123
- '',
124
- `*Tested on [${previewUrl}](https://${previewUrl})*`
125
- ].join('\n');
126
-
127
- core.setOutput('comment', comment);
128
- } catch (error) {
129
- console.error('Error:', error);
130
- core.setOutput('comment', '⚠️ Failed to generate Lighthouse report. Check workflow logs.');
131
- }
132
-
133
- - name: Post Commit Comment
134
- uses: peter-evans/commit-comment@v4
135
- with:
136
- body: ${{ steps.format.outputs.comment }}
@@ -1,275 +0,0 @@
1
- import { Wrapper } from "@/components/layout/wrapper"
2
- import { Link } from "@/components/ui/link"
3
- import { colors } from "@/lib/styles/colors"
4
- import { breakpoints, layout } from "@/lib/styles/layout.mjs"
5
-
6
- const TECH_STACK = [
7
- { description: "App Router, Turbopack", name: "Next.js", version: "16.1" },
8
- { description: "React Compiler enabled", name: "React", version: "19" },
9
- { description: "Strict mode", name: "TypeScript", version: "5.9" },
10
- { description: "CSS-first config", name: "Tailwind CSS", version: "4" },
11
- { description: "Lint + Format", name: "Biome", version: "2.3" },
12
- { description: "Package manager", name: "Bun", version: "1.3" },
13
- ]
14
-
15
- const FEATURES = [
16
- {
17
- description:
18
- "Pre-configured colors, breakpoints, typography, and 30+ easing functions ready to use.",
19
- title: "Design System",
20
- },
21
- {
22
- description:
23
- "Enhanced Image and Link components with blur placeholders, connection-aware prefetching.",
24
- title: "Smart Components",
25
- },
26
- {
27
- description:
28
- "Light/dark theme with CSS custom properties and React context.",
29
- title: "Theme Support",
30
- },
31
- {
32
- description:
33
- "Custom scripts for component scaffolding, style generation, and HTTPS dev server.",
34
- title: "Developer Experience",
35
- },
36
- {
37
- description:
38
- "Bundle analyzer, optimized imports, security headers, and image optimization.",
39
- title: "Performance Optimized",
40
- },
41
- ]
42
-
43
- const SCRIPTS = [
44
- { cmd: "bun dev", desc: "Start development server" },
45
- { cmd: "bun dev:https", desc: "Start with HTTPS" },
46
- { cmd: "bun build", desc: "Build for production" },
47
- { cmd: "bun generate", desc: "Scaffold components" },
48
- { cmd: "bun lint:fix", desc: "Fix lint issues" },
49
- { cmd: "bun typecheck", desc: "Type check with tsgo" },
50
- ]
51
-
52
- const VERSION = "1.0.0"
53
-
54
- export default function Home() {
55
- return (
56
- <Wrapper theme="dark">
57
- {/* Hero */}
58
- <section className="flex min-h-[80vh] flex-col justify-center px-safe pt-header-height">
59
- <div className="max-w-3xl">
60
- <p className="font-mono text-contrast text-sm uppercase tracking-wider">
61
- Next.js Starter Template v{VERSION}
62
- </p>
63
- <h1 className="mt-4 font-semibold text-4xl leading-tight tracking-tight md:text-6xl">
64
- Basement Next Starter
65
- </h1>
66
- <p className="mt-6 max-w-xl text-lg text-secondary/70">
67
- A production-ready Next.js starter with React 19, Tailwind CSS v4,
68
- TypeScript strict mode, and everything you need to build modern web
69
- applications.
70
- </p>
71
- <div className="mt-8 flex flex-wrap gap-4 font-mono text-sm uppercase">
72
- <Link
73
- href="https://github.com/basementstudio/next-starter/generate"
74
- className="bg-secondary px-6 py-3 text-primary transition-opacity hover:opacity-80"
75
- >
76
- Use this template
77
- </Link>
78
- <Link
79
- href="https://github.com/basementstudio/next-starter"
80
- className="border border-secondary/30 px-6 py-3 transition-colors hover:border-secondary"
81
- >
82
- View on GitHub
83
- </Link>
84
- </div>
85
- </div>
86
- </section>
87
-
88
- {/* Tech Stack */}
89
- <section className="px-safe py-24">
90
- <h2 className="font-mono text-contrast text-sm uppercase tracking-wider">
91
- Tech Stack
92
- </h2>
93
- <div className="mt-8 grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
94
- {TECH_STACK.map((tech) => (
95
- <div
96
- key={tech.name}
97
- className="border border-secondary/10 p-6 transition-colors hover:border-secondary/30"
98
- >
99
- <div className="flex items-baseline justify-between">
100
- <span className="font-semibold text-lg">{tech.name}</span>
101
- <span className="font-mono text-contrast text-sm">
102
- v{tech.version}
103
- </span>
104
- </div>
105
- <p className="mt-2 text-secondary/60 text-sm">
106
- {tech.description}
107
- </p>
108
- </div>
109
- ))}
110
- </div>
111
- </section>
112
-
113
- {/* Features */}
114
- <section className="px-safe py-24">
115
- <h2 className="font-mono text-contrast text-sm uppercase tracking-wider">
116
- Features
117
- </h2>
118
- <div className="mt-8 grid gap-8 sm:grid-cols-2 lg:grid-cols-3">
119
- {FEATURES.map((feature) => (
120
- <div key={feature.title}>
121
- <h3 className="font-semibold text-lg">{feature.title}</h3>
122
- <p className="mt-2 text-secondary/60">{feature.description}</p>
123
- </div>
124
- ))}
125
- </div>
126
- </section>
127
-
128
- {/* Design System */}
129
- <section className="px-safe py-24">
130
- <h2 className="font-mono text-contrast text-sm uppercase tracking-wider">
131
- Design System
132
- </h2>
133
-
134
- {/* Colors */}
135
- <div className="mt-8">
136
- <h3 className="font-mono text-secondary/60 text-xs uppercase">
137
- Colors
138
- </h3>
139
- <div className="mt-4 flex flex-wrap gap-3">
140
- {Object.entries(colors).map(([name, value]) => (
141
- <div key={name} className="flex items-center gap-2">
142
- <div
143
- className="size-8 rounded border border-secondary/20"
144
- style={{ backgroundColor: value }}
145
- />
146
- <div className="font-mono text-xs">
147
- <div className="text-secondary">{name}</div>
148
- <div className="text-secondary/40">{value}</div>
149
- </div>
150
- </div>
151
- ))}
152
- </div>
153
- </div>
154
-
155
- {/* Breakpoints */}
156
- <div className="mt-12">
157
- <h3 className="font-mono text-secondary/60 text-xs uppercase">
158
- Breakpoints
159
- </h3>
160
- <div className="mt-4 flex flex-wrap gap-4">
161
- {Object.entries(breakpoints).map(([name, value]) => (
162
- <div
163
- key={name}
164
- className="border border-secondary/10 px-4 py-2 font-mono text-sm"
165
- >
166
- <span className="text-secondary">{name}</span>
167
- <span className="ml-2 text-secondary/40">{value}px</span>
168
- </div>
169
- ))}
170
- </div>
171
- </div>
172
-
173
- {/* Grid */}
174
- <div className="mt-12">
175
- <h3 className="font-mono text-secondary/60 text-xs uppercase">
176
- Grid System
177
- </h3>
178
- <div className="mt-4 flex gap-8 font-mono text-sm">
179
- <div>
180
- <span className="text-secondary/40">Mobile:</span>{" "}
181
- <span className="text-secondary">
182
- {layout.columns.mobile} columns
183
- </span>
184
- </div>
185
- <div>
186
- <span className="text-secondary/40">Desktop:</span>{" "}
187
- <span className="text-secondary">
188
- {layout.columns.desktop} columns
189
- </span>
190
- </div>
191
- <div>
192
- <span className="text-secondary/40">Gap:</span>{" "}
193
- <span className="text-secondary">{layout.gap.desktop}px</span>
194
- </div>
195
- </div>
196
- </div>
197
- </section>
198
-
199
- {/* Quick Start */}
200
- <section className="px-safe py-24">
201
- <h2 className="font-mono text-contrast text-sm uppercase tracking-wider">
202
- Quick Start
203
- </h2>
204
-
205
- <div className="mt-8 max-w-2xl">
206
- <div className="border border-secondary/10 bg-secondary/5 p-6 font-mono text-sm">
207
- <div className="text-secondary/40"># Clone the template</div>
208
- <div className="mt-1 text-secondary">
209
- bunx degit basementstudio/next-starter my-project
210
- </div>
211
- <div className="mt-4 text-secondary/40"># Install dependencies</div>
212
- <div className="mt-1 text-secondary">
213
- cd my-project && bun install
214
- </div>
215
- <div className="mt-4 text-secondary/40"># Start development</div>
216
- <div className="mt-1 text-secondary">bun dev</div>
217
- </div>
218
- </div>
219
-
220
- <div className="mt-12">
221
- <h3 className="font-mono text-secondary/60 text-xs uppercase">
222
- Available Scripts
223
- </h3>
224
- <div className="mt-4 grid gap-2 sm:grid-cols-2 lg:grid-cols-3">
225
- {SCRIPTS.map((script) => (
226
- <div
227
- key={script.cmd}
228
- className="flex items-center justify-between border border-secondary/10 px-4 py-3 font-mono text-sm"
229
- >
230
- <code className="text-secondary">{script.cmd}</code>
231
- <span className="text-secondary/40">{script.desc}</span>
232
- </div>
233
- ))}
234
- </div>
235
- </div>
236
- </section>
237
-
238
- {/* Project Structure */}
239
- <section className="px-safe py-24">
240
- <h2 className="font-mono text-contrast text-sm uppercase tracking-wider">
241
- Project Structure
242
- </h2>
243
- <div className="mt-8 max-w-2xl border border-secondary/10 bg-secondary/5 p-6 font-mono text-sm leading-relaxed">
244
- <pre className="text-secondary/80">
245
- {`app/ # Next.js pages and routes
246
- components/
247
- ├── layout/ # Header, Footer, Wrapper, Theme
248
- └── ui/ # Image, Link, SanityImage
249
- lib/
250
- ├── hooks/ # useDeviceDetection, useMediaBreakpoint
251
- ├── scripts/ # Dev tools, generators
252
- ├── store/ # Zustand global state
253
- ├── styles/ # Design tokens, CSS config
254
- └── utils/ # Easings, math, strings, fetch`}
255
- </pre>
256
- </div>
257
- </section>
258
-
259
- {/* CTA */}
260
- <section className="px-safe py-24 text-center">
261
- <p className="font-mono text-secondary/60 text-sm uppercase">
262
- Ready to build something great?
263
- </p>
264
- <div className="mt-6 flex justify-center gap-4 font-mono text-sm uppercase">
265
- <Link
266
- href="https://github.com/basementstudio/next-starter/generate"
267
- className="bg-contrast px-8 py-4 text-primary transition-opacity hover:opacity-80"
268
- >
269
- Get Started
270
- </Link>
271
- </div>
272
- </section>
273
- </Wrapper>
274
- )
275
- }
@@ -1,21 +0,0 @@
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
- ```
@@ -1,184 +0,0 @@
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
-