bsmnt 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (447) 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 +25 -12
  88. package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/package.json +1 -1
  89. package/src/templates/next-webgl/lib/renderer.ts +7 -0
  90. package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/package.json +1 -1
  91. package/.changeset/README.md +0 -10
  92. package/.changeset/config.json +0 -16
  93. package/.github/workflows/ci.yml +0 -37
  94. package/.github/workflows/release.yml +0 -56
  95. package/.tldr/cache/call_graph.json +0 -7
  96. package/.tldr/languages.json +0 -6
  97. package/.tldr/status +0 -1
  98. package/.tldrignore +0 -84
  99. package/.vscode/settings.json +0 -98
  100. package/CHANGELOG.md +0 -68
  101. package/CLAUDE.md +0 -156
  102. package/biome.json +0 -45
  103. package/bun.lock +0 -496
  104. package/changelog/04-02-26.md +0 -86
  105. package/changelog/05-02-26.md +0 -101
  106. package/changelog/09-02-26.md +0 -83
  107. package/docs/architecture.drawio +0 -250
  108. package/docs/architecture.mermaid +0 -85
  109. package/docs/fix-studio-hydration.md +0 -46
  110. package/docs/plans/2026-01-29-sanity-smart-merge-design.md +0 -196
  111. package/docs/plans/2026-01-29-sanity-smart-merge-implementation.md +0 -695
  112. package/docs/sanity-setup-steps.md +0 -199
  113. package/packages/cli/bin/index.js +0 -259
  114. package/packages/cli/package.json +0 -16
  115. package/packages/cli/src/commands/add-integration.js +0 -310
  116. package/packages/cli/src/commands/create.js +0 -409
  117. package/packages/cli/src/commands/setup-sanity.js +0 -426
  118. package/packages/cli/src/commands/worktree.js +0 -805
  119. package/packages/create-basement-app/integrations/sanity/config.js +0 -46
  120. package/packages/create-basement-app/integrations/sanity/files/app/api/draft-mode/disable/route.ts +0 -7
  121. package/packages/create-basement-app/integrations/sanity/files/app/api/draft-mode/enable/route.ts +0 -21
  122. package/packages/create-basement-app/integrations/sanity/files/app/api/revalidate/route.ts +0 -37
  123. package/packages/create-basement-app/integrations/sanity/files/app/layout.tsx +0 -111
  124. package/packages/create-basement-app/integrations/sanity/files/app/sitemap.ts +0 -80
  125. package/packages/create-basement-app/integrations/sanity/files/app/studio/[[...tool]]/page.tsx +0 -8
  126. package/packages/create-basement-app/integrations/sanity/files/app/studio/layout.tsx +0 -7
  127. package/packages/create-basement-app/integrations/sanity/files/components/ui/sanity-image/index.tsx +0 -37
  128. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/README.md +0 -58
  129. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/check-integration.ts +0 -62
  130. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/README.md +0 -144
  131. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/client.ts +0 -30
  132. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/components/disable-draft-mode.tsx +0 -29
  133. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/components/rich-text.tsx +0 -73
  134. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/env.ts +0 -38
  135. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/live/index.tsx +0 -34
  136. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/queries.ts +0 -99
  137. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/sanity.cli.ts +0 -20
  138. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/sanity.config.ts +0 -94
  139. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/sanity.types.ts +0 -337
  140. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schema.json +0 -1850
  141. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/article.ts +0 -132
  142. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/example.ts +0 -203
  143. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/index.ts +0 -37
  144. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/link.ts +0 -127
  145. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/metadata.ts +0 -68
  146. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/navigation.ts +0 -39
  147. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/page.ts +0 -77
  148. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/richText.ts +0 -59
  149. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/structure.ts +0 -5
  150. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/utils/image.ts +0 -11
  151. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/utils/link.ts +0 -61
  152. package/packages/create-basement-app/integrations/sanity/files/lib/scripts/copy-sanity-mcp.ts +0 -23
  153. package/packages/create-basement-app/integrations/sanity/files/lib/scripts/generate-page.ts +0 -310
  154. package/packages/create-basement-app/integrations/sanity/files/lib/utils/metadata.ts +0 -190
  155. package/packages/create-basement-app/integrations/sanity/mergers/check-integration-merger.js +0 -105
  156. package/packages/create-basement-app/integrations/sanity/mergers/layout-merger.js +0 -223
  157. package/packages/create-basement-app/integrations/sanity/mergers/sitemap-merger.js +0 -121
  158. package/packages/create-basement-app/package.json +0 -10
  159. package/packages/create-basement-app/src/configs/animations.js +0 -28
  160. package/packages/create-basement-app/src/index.js +0 -15
  161. package/packages/create-basement-app/src/mergers/check-integration-merger.js +0 -105
  162. package/packages/create-basement-app/src/mergers/config.js +0 -109
  163. package/packages/create-basement-app/src/mergers/index.js +0 -346
  164. package/packages/create-basement-app/src/mergers/layout-merger.js +0 -223
  165. package/packages/create-basement-app/templates/experiment/.cursor/rules/README.md +0 -184
  166. package/packages/create-basement-app/templates/experiment/.cursor/rules/architecture.mdc +0 -437
  167. package/packages/create-basement-app/templates/experiment/.cursor/rules/components.mdc +0 -436
  168. package/packages/create-basement-app/templates/experiment/.cursor/rules/integrations.mdc +0 -447
  169. package/packages/create-basement-app/templates/experiment/.cursor/rules/main.mdc +0 -278
  170. package/packages/create-basement-app/templates/experiment/.cursor/rules/styling.mdc +0 -433
  171. package/packages/create-basement-app/templates/experiment/.github/PULL_REQUEST_TEMPLATE.md +0 -14
  172. package/packages/create-basement-app/templates/experiment/.vscode/extensions.json +0 -20
  173. package/packages/create-basement-app/templates/experiment/app/page.tsx +0 -275
  174. package/packages/create-basement-app/templates/webgl/.biome/plugins/README.md +0 -21
  175. package/packages/create-basement-app/templates/webgl/.biome/plugins/no-anchor-element.grit +0 -12
  176. package/packages/create-basement-app/templates/webgl/.biome/plugins/no-relative-parent-imports.grit +0 -10
  177. package/packages/create-basement-app/templates/webgl/.biome/plugins/no-unnecessary-forwardref.grit +0 -9
  178. package/packages/create-basement-app/templates/webgl/.cursor/rules/README.md +0 -184
  179. package/packages/create-basement-app/templates/webgl/.cursor/rules/architecture.mdc +0 -437
  180. package/packages/create-basement-app/templates/webgl/.cursor/rules/components.mdc +0 -436
  181. package/packages/create-basement-app/templates/webgl/.cursor/rules/integrations.mdc +0 -447
  182. package/packages/create-basement-app/templates/webgl/.cursor/rules/main.mdc +0 -278
  183. package/packages/create-basement-app/templates/webgl/.cursor/rules/styling.mdc +0 -433
  184. package/packages/create-basement-app/templates/webgl/.github/PULL_REQUEST_TEMPLATE.md +0 -14
  185. package/packages/create-basement-app/templates/webgl/.github/workflows/lighthouse-to-slack.yml +0 -136
  186. package/packages/create-basement-app/templates/webgl/.vscode/extensions.json +0 -20
  187. package/packages/create-basement-app/templates/webgl/.vscode/settings.json +0 -105
  188. package/packages/create-basement-app/templates/webgl/app/favicon.ico +0 -0
  189. package/packages/create-basement-app/templates/webgl/app/layout.tsx +0 -104
  190. package/packages/create-basement-app/templates/webgl/app/robots.ts +0 -15
  191. package/packages/create-basement-app/templates/webgl/app/sitemap.ts +0 -16
  192. package/packages/create-basement-app/templates/webgl/components/layout/footer/index.tsx +0 -27
  193. package/packages/create-basement-app/templates/webgl/components/layout/header/index.tsx +0 -11
  194. package/packages/create-basement-app/templates/webgl/components/layout/theme/index.tsx +0 -66
  195. package/packages/create-basement-app/templates/webgl/components/layout/wrapper/index.tsx +0 -65
  196. package/packages/create-basement-app/templates/webgl/components/ui/README.md +0 -77
  197. package/packages/create-basement-app/templates/webgl/components/ui/image/README.md +0 -37
  198. package/packages/create-basement-app/templates/webgl/components/ui/image/index.tsx +0 -224
  199. package/packages/create-basement-app/templates/webgl/components/ui/link/index.tsx +0 -146
  200. package/packages/create-basement-app/templates/webgl/lib/integrations/.gitkeep +0 -0
  201. package/packages/create-basement-app/templates/webgl/public/fonts/geist/Geist-Mono.woff2 +0 -0
  202. package/tasks/.last-branch +0 -1
  203. package/tasks/CLAUDE.md +0 -104
  204. package/tasks/archive/2026-02-09-next-starter-dynamic-layers/prd.json +0 -153
  205. package/tasks/archive/2026-02-09-next-starter-dynamic-layers/progress.txt +0 -115
  206. package/tasks/prd-next-starter-dynamic-layers.md +0 -184
  207. package/tasks/prd-project-restructure.md +0 -375
  208. package/tasks/prd.json +0 -289
  209. package/tasks/progress.txt +0 -309
  210. package/tasks/ralph.sh +0 -113
  211. /package/{packages/create-basement-app/plugins → plugins}/no-anchor-element.grit +0 -0
  212. /package/{packages/create-basement-app/plugins → plugins}/no-relative-parent-imports.grit +0 -0
  213. /package/{packages/create-basement-app/plugins → plugins}/no-unnecessary-forwardref.grit +0 -0
  214. /package/{packages/create-basement-app → src}/template-hooks/config.js +0 -0
  215. /package/{packages/create-basement-app → src}/template-hooks/use-battery.ts +0 -0
  216. /package/{packages/create-basement-app → src}/template-hooks/use-device-perf.ts +0 -0
  217. /package/{packages/create-basement-app → src}/template-hooks/use-intersection-observer.ts +0 -0
  218. /package/{packages/create-basement-app → src}/template-hooks/use-media.ts +0 -0
  219. /package/{packages/create-basement-app → src/templates/next-default/.biome}/plugins/README.md +0 -0
  220. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.editorconfig +0 -0
  221. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.env.example +0 -0
  222. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.gitattributes +0 -0
  223. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/README.md +0 -0
  224. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/_gitignore +0 -0
  225. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/biome.json +0 -0
  226. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/components/basement.svg +0 -0
  227. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/README.md +0 -0
  228. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/index.ts +0 -0
  229. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/use-device-detection.ts +0 -0
  230. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/use-media-breakpoint.ts +0 -0
  231. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/use-prefetch.ts +0 -0
  232. /package/{.github/workflows → src/templates/next-default/lib/integrations}/.gitkeep +0 -0
  233. /package/{packages/create-basement-app/templates/webgl → src/templates/next-default}/lib/renderer.ts +0 -0
  234. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/dev.ts +0 -0
  235. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/generate-component.ts +0 -0
  236. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/generate-page.ts +0 -0
  237. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/generate.ts +0 -0
  238. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/utils.ts +0 -0
  239. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/store/app.ts +0 -0
  240. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/store/index.ts +0 -0
  241. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/README.md +0 -0
  242. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/cn.ts +0 -0
  243. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/colors.ts +0 -0
  244. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/config.ts +0 -0
  245. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/global.css +0 -0
  246. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/index.css +0 -0
  247. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/reset.css +0 -0
  248. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/root.css +0 -0
  249. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/tailwind.css +0 -0
  250. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/easings.ts +0 -0
  251. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/fonts.ts +0 -0
  252. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/index.ts +0 -0
  253. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/layout.mjs +0 -0
  254. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/README.md +0 -0
  255. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/generate-root.ts +0 -0
  256. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/generate-tailwind.ts +0 -0
  257. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/postcss-functions.mjs +0 -0
  258. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/setup-styles.ts +0 -0
  259. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/utils.ts +0 -0
  260. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/typography.ts +0 -0
  261. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/README.md +0 -0
  262. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/css.d.ts +0 -0
  263. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/easings.ts +0 -0
  264. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/fetch.ts +0 -0
  265. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/math.test.ts +0 -0
  266. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/math.ts +0 -0
  267. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/metadata.ts +0 -0
  268. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/strings.test.ts +0 -0
  269. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/strings.ts +0 -0
  270. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/types.d.ts +0 -0
  271. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/viewport.test.ts +0 -0
  272. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/viewport.ts +0 -0
  273. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/next.config.ts +0 -0
  274. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/package.json +0 -0
  275. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/postcss.config.mjs +0 -0
  276. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/tsconfig.json +0 -0
  277. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.biome/plugins/README.md +0 -0
  278. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.biome/plugins/no-anchor-element.grit +0 -0
  279. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.biome/plugins/no-relative-parent-imports.grit +0 -0
  280. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.biome/plugins/no-unnecessary-forwardref.grit +0 -0
  281. /package/{.cursor → src/templates/next-experiments/.cursor}/rules/README.md +0 -0
  282. /package/{.cursor → src/templates/next-experiments/.cursor}/rules/architecture.mdc +0 -0
  283. /package/{.cursor → src/templates/next-experiments/.cursor}/rules/components.mdc +0 -0
  284. /package/{.cursor → src/templates/next-experiments/.cursor}/rules/integrations.mdc +0 -0
  285. /package/{.cursor → src/templates/next-experiments/.cursor}/rules/main.mdc +0 -0
  286. /package/{.cursor → src/templates/next-experiments/.cursor}/rules/styling.mdc +0 -0
  287. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.editorconfig +0 -0
  288. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.env.example +0 -0
  289. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.gitattributes +0 -0
  290. /package/{.github → src/templates/next-experiments/.github}/PULL_REQUEST_TEMPLATE.md +0 -0
  291. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.github/workflows/lighthouse-to-slack.yml +0 -0
  292. /package/{.vscode → src/templates/next-experiments/.vscode}/extensions.json +0 -0
  293. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.vscode/settings.json +0 -0
  294. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/README.md +0 -0
  295. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/_gitignore +0 -0
  296. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/favicon.ico +0 -0
  297. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/layout.tsx +0 -0
  298. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/page.tsx +0 -0
  299. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/robots.ts +0 -0
  300. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/sitemap.ts +0 -0
  301. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/biome.json +0 -0
  302. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/basement.svg +0 -0
  303. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/layout/footer/index.tsx +0 -0
  304. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/layout/header/index.tsx +0 -0
  305. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/layout/navigation-menu.tsx +0 -0
  306. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/layout/theme/index.tsx +0 -0
  307. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/layout/wrapper/index.tsx +0 -0
  308. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/ui/README.md +0 -0
  309. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/ui/image/README.md +0 -0
  310. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/ui/image/index.tsx +0 -0
  311. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/ui/link/index.tsx +0 -0
  312. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/README.md +0 -0
  313. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/constants.ts +0 -0
  314. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/index.ts +0 -0
  315. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/use-device-detection.ts +0 -0
  316. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/use-media-breakpoint.ts +0 -0
  317. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/use-prefetch.ts +0 -0
  318. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/lib/integrations/.gitkeep +0 -0
  319. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/dev.ts +0 -0
  320. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/generate-component.ts +0 -0
  321. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/generate-page.ts +0 -0
  322. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/generate.ts +0 -0
  323. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/utils.ts +0 -0
  324. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/store/app.ts +0 -0
  325. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/store/index.ts +0 -0
  326. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/README.md +0 -0
  327. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/cn.ts +0 -0
  328. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/colors.ts +0 -0
  329. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/config.ts +0 -0
  330. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/global.css +0 -0
  331. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/index.css +0 -0
  332. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/reset.css +0 -0
  333. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/root.css +0 -0
  334. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/tailwind.css +0 -0
  335. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/easings.ts +0 -0
  336. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/fonts.ts +0 -0
  337. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/index.ts +0 -0
  338. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/layout.mjs +0 -0
  339. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/README.md +0 -0
  340. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/generate-root.ts +0 -0
  341. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/generate-tailwind.ts +0 -0
  342. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/postcss-functions.mjs +0 -0
  343. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/setup-styles.ts +0 -0
  344. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/utils.ts +0 -0
  345. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/typography.ts +0 -0
  346. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/README.md +0 -0
  347. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/css.d.ts +0 -0
  348. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/easings.ts +0 -0
  349. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/fetch.ts +0 -0
  350. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/math.test.ts +0 -0
  351. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/math.ts +0 -0
  352. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/metadata.ts +0 -0
  353. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/strings.test.ts +0 -0
  354. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/strings.ts +0 -0
  355. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/types.d.ts +0 -0
  356. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/viewport.test.ts +0 -0
  357. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/viewport.ts +0 -0
  358. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/next.config.ts +0 -0
  359. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/postcss.config.mjs +0 -0
  360. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/public/fonts/geist/Geist-Mono.woff2 +0 -0
  361. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/tsconfig.json +0 -0
  362. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.biome/plugins/README.md +0 -0
  363. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.biome/plugins/no-anchor-element.grit +0 -0
  364. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.biome/plugins/no-relative-parent-imports.grit +0 -0
  365. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.biome/plugins/no-unnecessary-forwardref.grit +0 -0
  366. /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.cursor/rules/README.md +0 -0
  367. /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.cursor/rules/architecture.mdc +0 -0
  368. /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.cursor/rules/components.mdc +0 -0
  369. /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.cursor/rules/integrations.mdc +0 -0
  370. /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.cursor/rules/main.mdc +0 -0
  371. /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.cursor/rules/styling.mdc +0 -0
  372. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.editorconfig +0 -0
  373. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.env.example +0 -0
  374. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.gitattributes +0 -0
  375. /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  376. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.github/workflows/lighthouse-to-slack.yml +0 -0
  377. /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.vscode/extensions.json +0 -0
  378. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.vscode/settings.json +0 -0
  379. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/README.md +0 -0
  380. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/_gitignore +0 -0
  381. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/app/favicon.ico +0 -0
  382. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/app/layout.tsx +0 -0
  383. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/app/page.tsx +0 -0
  384. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/app/robots.ts +0 -0
  385. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/app/sitemap.ts +0 -0
  386. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/biome.json +0 -0
  387. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/basement.svg +0 -0
  388. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/layout/footer/index.tsx +0 -0
  389. /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/components/layout/header/index.tsx +0 -0
  390. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/layout/theme/index.tsx +0 -0
  391. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/layout/wrapper/index.tsx +0 -0
  392. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/ui/README.md +0 -0
  393. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/ui/image/README.md +0 -0
  394. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/ui/image/index.tsx +0 -0
  395. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/ui/link/index.tsx +0 -0
  396. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/webgl/canvas/dynamic.tsx +0 -0
  397. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/webgl/canvas/index.tsx +0 -0
  398. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/webgl/components/scene/index.tsx +0 -0
  399. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/README.md +0 -0
  400. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/index.ts +0 -0
  401. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/use-device-detection.ts +0 -0
  402. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/use-media-breakpoint.ts +0 -0
  403. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/use-prefetch.ts +0 -0
  404. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/lib/integrations/.gitkeep +0 -0
  405. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/dev.ts +0 -0
  406. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/generate-component.ts +0 -0
  407. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/generate-page.ts +0 -0
  408. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/generate.ts +0 -0
  409. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/utils.ts +0 -0
  410. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/store/app.ts +0 -0
  411. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/store/index.ts +0 -0
  412. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/README.md +0 -0
  413. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/cn.ts +0 -0
  414. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/colors.ts +0 -0
  415. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/config.ts +0 -0
  416. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/global.css +0 -0
  417. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/index.css +0 -0
  418. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/reset.css +0 -0
  419. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/root.css +0 -0
  420. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/tailwind.css +0 -0
  421. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/easings.ts +0 -0
  422. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/fonts.ts +0 -0
  423. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/index.ts +0 -0
  424. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/layout.mjs +0 -0
  425. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/README.md +0 -0
  426. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/generate-root.ts +0 -0
  427. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/generate-tailwind.ts +0 -0
  428. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/postcss-functions.mjs +0 -0
  429. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/setup-styles.ts +0 -0
  430. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/utils.ts +0 -0
  431. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/typography.ts +0 -0
  432. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/README.md +0 -0
  433. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/css.d.ts +0 -0
  434. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/easings.ts +0 -0
  435. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/fetch.ts +0 -0
  436. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/math.test.ts +0 -0
  437. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/math.ts +0 -0
  438. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/metadata.ts +0 -0
  439. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/strings.test.ts +0 -0
  440. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/strings.ts +0 -0
  441. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/types.d.ts +0 -0
  442. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/viewport.test.ts +0 -0
  443. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/viewport.ts +0 -0
  444. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/next.config.ts +0 -0
  445. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/postcss.config.mjs +0 -0
  446. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/public/fonts/geist/Geist-Mono.woff2 +0 -0
  447. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/tsconfig.json +0 -0
@@ -1,132 +0,0 @@
1
- import { defineField, defineType } from "sanity";
2
-
3
- const articleFields = [
4
- defineField({
5
- name: "title",
6
- title: "Title",
7
- type: "string",
8
- description: "The title of the article",
9
- validation: (Rule) => Rule.required(),
10
- }),
11
- defineField({
12
- name: "excerpt",
13
- title: "Excerpt",
14
- type: "text",
15
- rows: 3,
16
- description: "A brief summary of the article",
17
- validation: (Rule) => Rule.max(200),
18
- }),
19
- defineField({
20
- name: "featuredImage",
21
- title: "Featured Image",
22
- type: "image",
23
- description: "Main image for the article",
24
- options: {
25
- hotspot: true,
26
- },
27
- fields: [
28
- {
29
- name: "alt",
30
- title: "Alt Text",
31
- type: "string",
32
- description: "Alternative text for screen readers",
33
- },
34
- ],
35
- }),
36
- defineField({
37
- name: "content",
38
- title: "Content",
39
- type: "richText",
40
- description: "The main content of the article",
41
- }),
42
- defineField({
43
- name: "categories",
44
- title: "Categories",
45
- type: "array",
46
- of: [{ type: "string" }],
47
- description: "Categories for this article",
48
- options: {
49
- layout: "tags",
50
- },
51
- }),
52
- defineField({
53
- name: "tags",
54
- title: "Tags",
55
- type: "array",
56
- of: [{ type: "string" }],
57
- description: "Tags for this article",
58
- options: {
59
- layout: "tags",
60
- },
61
- }),
62
- ];
63
-
64
- export const article = defineType({
65
- name: "article",
66
- title: "Article",
67
- type: "document",
68
- fields: [
69
- defineField({
70
- name: "slug",
71
- title: "Slug",
72
- type: "slug",
73
- description: "The URL path for this article",
74
- options: {
75
- source: "title",
76
- maxLength: 96,
77
- },
78
- validation: (Rule) => Rule.required(),
79
- }),
80
- defineField({
81
- name: "author",
82
- title: "Author",
83
- type: "string",
84
- description: "The author of this article",
85
- }),
86
- defineField({
87
- name: "publishedAt",
88
- title: "Published At",
89
- type: "datetime",
90
- description: "When this article was published",
91
- initialValue: () => new Date().toISOString(),
92
- }),
93
- defineField({
94
- name: "metadata",
95
- title: "SEO & Metadata",
96
- type: "metadata",
97
- description: "SEO settings for this article",
98
- }),
99
- ...articleFields,
100
- ],
101
- preview: {
102
- select: {
103
- title: "title",
104
- slug: "slug.current",
105
- media: "featuredImage",
106
- },
107
- prepare({ title, slug, media }) {
108
- return {
109
- title: title || "Untitled",
110
- subtitle: slug ? `/blog/${slug}` : "No slug",
111
- media,
112
- };
113
- },
114
- },
115
- orderings: [
116
- {
117
- title: "Published Date, New",
118
- name: "publishedAtDesc",
119
- by: [{ field: "publishedAt", direction: "desc" }],
120
- },
121
- {
122
- title: "Published Date, Old",
123
- name: "publishedAtAsc",
124
- by: [{ field: "publishedAt", direction: "asc" }],
125
- },
126
- {
127
- title: "Title A-Z",
128
- name: "titleAsc",
129
- by: [{ field: "title", direction: "asc" }],
130
- },
131
- ],
132
- });
@@ -1,203 +0,0 @@
1
- import { defineField, defineType } from "sanity";
2
-
3
- /**
4
- * Example schema demonstrating common patterns and best practices
5
- * This can be used as a reference for creating new content types
6
- */
7
- export const example = defineType({
8
- name: "example",
9
- title: "Example Page",
10
- type: "document",
11
- fields: [
12
- // Basic required fields
13
- defineField({
14
- name: "title",
15
- title: "Title",
16
- type: "string",
17
- description: "The main title of the page",
18
- validation: (Rule) => Rule.required().max(60),
19
- }),
20
- defineField({
21
- name: "slug",
22
- title: "Slug",
23
- type: "slug",
24
- description: "URL path for this page",
25
- options: {
26
- source: "title",
27
- maxLength: 96,
28
- },
29
- validation: (Rule) => Rule.required(),
30
- }),
31
-
32
- // Hero section object
33
- defineField({
34
- name: "hero",
35
- title: "Hero Section",
36
- type: "object",
37
- fields: [
38
- {
39
- name: "headline",
40
- title: "Headline",
41
- type: "string",
42
- validation: (Rule) => Rule.max(100),
43
- },
44
- {
45
- name: "subheadline",
46
- title: "Subheadline",
47
- type: "text",
48
- rows: 3,
49
- },
50
- {
51
- name: "image",
52
- title: "Hero Image",
53
- type: "image",
54
- options: {
55
- hotspot: true,
56
- },
57
- fields: [
58
- {
59
- name: "alt",
60
- title: "Alt Text",
61
- type: "string",
62
- description: "Alternative text for screen readers",
63
- },
64
- ],
65
- },
66
- {
67
- name: "showCTA",
68
- title: "Show Call to Action",
69
- type: "boolean",
70
- initialValue: false,
71
- },
72
- {
73
- name: "ctaText",
74
- title: "CTA Text",
75
- type: "string",
76
- hidden: ({ parent }) => !parent?.showCTA,
77
- },
78
- {
79
- name: "ctaLink",
80
- title: "CTA Link",
81
- type: "url",
82
- hidden: ({ parent }) => !parent?.showCTA,
83
- },
84
- ],
85
- }),
86
-
87
- // Rich text content
88
- defineField({
89
- name: "content",
90
- title: "Content",
91
- type: "richText",
92
- description: "The main content of the page",
93
- }),
94
-
95
- // Features array
96
- defineField({
97
- name: "features",
98
- title: "Features",
99
- type: "array",
100
- of: [
101
- {
102
- type: "object",
103
- fields: [
104
- {
105
- name: "title",
106
- title: "Feature Title",
107
- type: "string",
108
- },
109
- {
110
- name: "description",
111
- title: "Description",
112
- type: "text",
113
- rows: 3,
114
- },
115
- {
116
- name: "icon",
117
- title: "Icon",
118
- type: "image",
119
- options: {
120
- hotspot: true,
121
- },
122
- },
123
- ],
124
- },
125
- ],
126
- }),
127
-
128
- // Tags array
129
- defineField({
130
- name: "tags",
131
- title: "Tags",
132
- type: "array",
133
- of: [{ type: "string" }],
134
- options: {
135
- layout: "tags",
136
- },
137
- }),
138
-
139
- // SEO metadata
140
- defineField({
141
- name: "metadata",
142
- title: "SEO & Metadata",
143
- type: "metadata",
144
- description: "SEO settings for this page",
145
- }),
146
-
147
- // Publishing info
148
- defineField({
149
- name: "publishedAt",
150
- title: "Published At",
151
- type: "datetime",
152
- description: "When this page was published",
153
- initialValue: () => new Date().toISOString(),
154
- }),
155
-
156
- // Conditional field example
157
- defineField({
158
- name: "showInNavigation",
159
- title: "Show in Navigation",
160
- type: "boolean",
161
- initialValue: false,
162
- }),
163
-
164
- // Custom validation example
165
- defineField({
166
- name: "contactEmail",
167
- title: "Contact Email",
168
- type: "string",
169
- validation: (Rule) =>
170
- Rule.email().error("Please enter a valid email address"),
171
- }),
172
- ],
173
-
174
- // Custom preview
175
- preview: {
176
- select: {
177
- title: "title",
178
- slug: "slug.current",
179
- media: "hero.image",
180
- },
181
- prepare({ title, slug, media }) {
182
- return {
183
- title: title || "Untitled Example",
184
- subtitle: slug ? `/${slug}` : "No slug",
185
- media,
186
- };
187
- },
188
- },
189
-
190
- // Ordering options
191
- orderings: [
192
- {
193
- title: "Published Date, New",
194
- name: "publishedAtDesc",
195
- by: [{ field: "publishedAt", direction: "desc" }],
196
- },
197
- {
198
- title: "Title A-Z",
199
- name: "titleAsc",
200
- by: [{ field: "title", direction: "asc" }],
201
- },
202
- ],
203
- });
@@ -1,37 +0,0 @@
1
- /**
2
- * Sanity Schema Types
3
- *
4
- * All schema definitions for Sanity CMS, organized in a flat structure.
5
- * This replaces the previous documents/objects/singletons directory structure.
6
- */
7
-
8
- import type { SchemaTypeDefinition } from "sanity";
9
- import { article } from "./article";
10
- import { example } from "./example";
11
- // Import all schema definitions
12
- import { link } from "./link";
13
- import { metadata } from "./metadata";
14
- import { navigation } from "./navigation";
15
- import { page } from "./page";
16
- import { richText } from "./richText";
17
-
18
- // Re-export all schemas for convenience
19
- export { link, metadata, richText, article, example, page, navigation };
20
-
21
- // Schema collection for Sanity configuration
22
- export const schema: { types: SchemaTypeDefinition[] } = {
23
- types: [
24
- // Object types (reusable components)
25
- link,
26
- metadata,
27
- richText,
28
-
29
- // Document types (content pages)
30
- page,
31
- article,
32
- example,
33
-
34
- // Singleton types (one-off content)
35
- navigation,
36
- ],
37
- };
@@ -1,127 +0,0 @@
1
- import { defineField, defineType } from "sanity";
2
-
3
- // Native Sanity link object type
4
- export const link = defineType({
5
- name: "link",
6
- title: "Link",
7
- type: "object",
8
- fields: [
9
- defineField({
10
- name: "linkType",
11
- title: "Link Type",
12
- type: "string",
13
- options: {
14
- list: [
15
- { title: "Internal", value: "internal" },
16
- { title: "External", value: "external" },
17
- ],
18
- layout: "radio",
19
- },
20
- initialValue: "internal",
21
- validation: (Rule) => Rule.required(),
22
- }),
23
- defineField({
24
- name: "internalLink",
25
- title: "Internal Link",
26
- type: "reference",
27
- to: [{ type: "page" }, { type: "article" }],
28
- hidden: ({ parent }) => parent?.linkType !== "internal",
29
- validation: (Rule) =>
30
- Rule.custom((value, context) => {
31
- const parent = context.parent as { linkType?: string };
32
- if (parent?.linkType === "internal" && !value) {
33
- return "Internal link is required";
34
- }
35
- return true;
36
- }),
37
- }),
38
- defineField({
39
- name: "externalUrl",
40
- title: "External URL",
41
- type: "url",
42
- hidden: ({ parent }) => parent?.linkType !== "external",
43
- validation: (Rule) =>
44
- Rule.custom((value, context) => {
45
- const parent = context.parent as { linkType?: string };
46
- if (parent?.linkType === "external" && !value) {
47
- return "External URL is required";
48
- }
49
- return true;
50
- }).uri({
51
- scheme: ["http", "https", "mailto", "tel"],
52
- }),
53
- }),
54
- defineField({
55
- name: "text",
56
- title: "Link Text",
57
- type: "string",
58
- description: "Optional custom text for the link",
59
- }),
60
- defineField({
61
- name: "openInNewTab",
62
- title: "Open in New Tab",
63
- type: "boolean",
64
- initialValue: false,
65
- hidden: ({ parent }) => parent?.linkType !== "external",
66
- }),
67
- ],
68
- preview: {
69
- select: {
70
- linkType: "linkType",
71
- text: "text",
72
- internalTitle: "internalLink.title",
73
- externalUrl: "externalUrl",
74
- },
75
- prepare({ linkType, text, internalTitle, externalUrl }) {
76
- const title = text || internalTitle || externalUrl || "Untitled Link";
77
- const subtitle =
78
- linkType === "internal"
79
- ? `Internal: ${internalTitle || "No page selected"}`
80
- : `External: ${externalUrl || "No URL"}`;
81
-
82
- return {
83
- title,
84
- subtitle,
85
- };
86
- },
87
- },
88
- });
89
-
90
- // Helper field exports for easy reuse
91
- export const linkField = defineField({
92
- name: "link",
93
- title: "Link",
94
- type: "link",
95
- });
96
-
97
- export const linkFieldWithLabel = defineField({
98
- name: "link",
99
- title: "Link",
100
- type: "link",
101
- });
102
-
103
- export const linkFieldWithLabelAndRequired = defineField({
104
- name: "link",
105
- title: "Link",
106
- type: "link",
107
- validation: (Rule) => Rule.required(),
108
- });
109
-
110
- type LinkFieldOptions = {
111
- name?: string;
112
- title?: string;
113
- required?: boolean;
114
- };
115
-
116
- export function extendedLinkField({
117
- name = "link",
118
- title = "Link",
119
- required = false,
120
- }: LinkFieldOptions = {}) {
121
- return defineField({
122
- name,
123
- title,
124
- type: "link",
125
- validation: required ? (Rule) => Rule.required() : undefined,
126
- });
127
- }
@@ -1,68 +0,0 @@
1
- import { defineField, defineType } from "sanity";
2
-
3
- export const metadata = defineType({
4
- name: "metadata",
5
- title: "SEO & Metadata",
6
- type: "object",
7
- options: {
8
- collapsible: true,
9
- collapsed: true,
10
- },
11
- fields: [
12
- defineField({
13
- name: "title",
14
- title: "Meta Title",
15
- type: "string",
16
- description: "Title for search engines and social media",
17
- validation: (Rule) =>
18
- Rule.max(60).warning(
19
- "Title should be under 60 characters for optimal SEO",
20
- ),
21
- }),
22
- defineField({
23
- name: "description",
24
- title: "Meta Description",
25
- type: "text",
26
- rows: 3,
27
- description: "Description for search engines and social media",
28
- validation: (Rule) =>
29
- Rule.max(160).warning(
30
- "Description should be under 160 characters for optimal SEO",
31
- ),
32
- }),
33
- defineField({
34
- name: "keywords",
35
- title: "Keywords",
36
- type: "array",
37
- of: [{ type: "string" }],
38
- description: "Keywords for search engines",
39
- options: {
40
- layout: "tags",
41
- },
42
- }),
43
- defineField({
44
- name: "image",
45
- title: "Social Media Image",
46
- type: "image",
47
- description: "Image for social media sharing (1200x630px recommended)",
48
- options: {
49
- hotspot: true,
50
- },
51
- fields: [
52
- {
53
- name: "alt",
54
- title: "Alt Text",
55
- type: "string",
56
- description: "Alternative text for screen readers",
57
- },
58
- ],
59
- }),
60
- defineField({
61
- name: "noIndex",
62
- title: "No Index",
63
- type: "boolean",
64
- description: "Prevent search engines from indexing this page",
65
- initialValue: false,
66
- }),
67
- ],
68
- });
@@ -1,39 +0,0 @@
1
- import { defineField, defineType } from "sanity";
2
-
3
- export const navigation = defineType({
4
- name: "navigation",
5
- title: "Navigation",
6
- type: "document",
7
- fields: [
8
- defineField({
9
- name: "title",
10
- type: "string",
11
- title: "Title",
12
- description: "Title of the navigation",
13
- }),
14
- defineField({
15
- type: "array",
16
- name: "socials",
17
- title: "Socials",
18
- of: [
19
- {
20
- name: "socialLink",
21
- type: "object",
22
- title: "Social Link",
23
- fields: [
24
- defineField({
25
- name: "logo",
26
- type: "image",
27
- title: "Logo",
28
- }),
29
- defineField({
30
- name: "socialMedia",
31
- title: "Social Media",
32
- type: "link",
33
- }),
34
- ],
35
- },
36
- ],
37
- }),
38
- ],
39
- });
@@ -1,77 +0,0 @@
1
- import { defineField, defineType } from "sanity";
2
- import { linkFieldWithLabelAndRequired } from "./link";
3
-
4
- const pageFields = [
5
- defineField({
6
- name: "title",
7
- title: "Title",
8
- type: "string",
9
- description: "The title of the page",
10
- validation: (Rule) => Rule.required(),
11
- }),
12
- defineField({
13
- name: "content",
14
- title: "Content",
15
- type: "richText",
16
- description: "The main content of the page",
17
- }),
18
- linkFieldWithLabelAndRequired,
19
- ];
20
-
21
- export const page = defineType({
22
- name: "page",
23
- title: "Page",
24
- type: "document",
25
- fields: [
26
- defineField({
27
- name: "slug",
28
- title: "Slug",
29
- type: "slug",
30
- description: "The URL path for this page",
31
- options: {
32
- source: "title",
33
- maxLength: 96,
34
- },
35
- validation: (Rule) => Rule.required(),
36
- }),
37
- defineField({
38
- name: "publishedAt",
39
- title: "Published At",
40
- type: "datetime",
41
- description: "When this page was published",
42
- initialValue: () => new Date().toISOString(),
43
- }),
44
-
45
- defineField({
46
- name: "metadata",
47
- title: "SEO & Metadata",
48
- type: "metadata",
49
- description: "SEO settings for this page",
50
- }),
51
- ...pageFields,
52
- ],
53
- preview: {
54
- select: {
55
- title: "title",
56
- slug: "slug.current",
57
- },
58
- prepare({ title, slug }) {
59
- return {
60
- title: title || "Untitled",
61
- subtitle: slug ? `/${slug}` : "No slug",
62
- };
63
- },
64
- },
65
- orderings: [
66
- {
67
- title: "Published Date, New",
68
- name: "publishedAtDesc",
69
- by: [{ field: "publishedAt", direction: "desc" }],
70
- },
71
- {
72
- title: "Published Date, Old",
73
- name: "publishedAtAsc",
74
- by: [{ field: "publishedAt", direction: "asc" }],
75
- },
76
- ],
77
- });