@donotdev/cli 0.0.3

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 (281) hide show
  1. package/LICENSE.md +48 -0
  2. package/README.md +291 -0
  3. package/dependencies-matrix.json +694 -0
  4. package/dist/bin/commands/build.d.ts +11 -0
  5. package/dist/bin/commands/build.d.ts.map +1 -0
  6. package/dist/bin/commands/build.js +8162 -0
  7. package/dist/bin/commands/build.js.map +1 -0
  8. package/dist/bin/commands/bump.d.ts +11 -0
  9. package/dist/bin/commands/bump.d.ts.map +1 -0
  10. package/dist/bin/commands/bump.js +8004 -0
  11. package/dist/bin/commands/bump.js.map +1 -0
  12. package/dist/bin/commands/cacheout.d.ts +11 -0
  13. package/dist/bin/commands/cacheout.d.ts.map +1 -0
  14. package/dist/bin/commands/cacheout.js +7630 -0
  15. package/dist/bin/commands/cacheout.js.map +1 -0
  16. package/dist/bin/commands/create-app.d.ts +11 -0
  17. package/dist/bin/commands/create-app.d.ts.map +1 -0
  18. package/dist/bin/commands/create-app.js +9032 -0
  19. package/dist/bin/commands/create-app.js.map +1 -0
  20. package/dist/bin/commands/create-project.d.ts +11 -0
  21. package/dist/bin/commands/create-project.d.ts.map +1 -0
  22. package/dist/bin/commands/create-project.js +9643 -0
  23. package/dist/bin/commands/create-project.js.map +1 -0
  24. package/dist/bin/commands/deploy.d.ts +11 -0
  25. package/dist/bin/commands/deploy.d.ts.map +1 -0
  26. package/dist/bin/commands/deploy.js +9007 -0
  27. package/dist/bin/commands/deploy.js.map +1 -0
  28. package/dist/bin/commands/dev.d.ts +11 -0
  29. package/dist/bin/commands/dev.d.ts.map +1 -0
  30. package/dist/bin/commands/dev.js +7892 -0
  31. package/dist/bin/commands/dev.js.map +1 -0
  32. package/dist/bin/commands/emu.d.ts +11 -0
  33. package/dist/bin/commands/emu.d.ts.map +1 -0
  34. package/dist/bin/commands/emu.js +8302 -0
  35. package/dist/bin/commands/emu.js.map +1 -0
  36. package/dist/bin/commands/format.d.ts +11 -0
  37. package/dist/bin/commands/format.d.ts.map +1 -0
  38. package/dist/bin/commands/format.js +8009 -0
  39. package/dist/bin/commands/format.js.map +1 -0
  40. package/dist/bin/commands/lint.d.ts +11 -0
  41. package/dist/bin/commands/lint.d.ts.map +1 -0
  42. package/dist/bin/commands/lint.js +7481 -0
  43. package/dist/bin/commands/lint.js.map +1 -0
  44. package/dist/bin/commands/preview.d.ts +11 -0
  45. package/dist/bin/commands/preview.d.ts.map +1 -0
  46. package/dist/bin/commands/preview.js +7909 -0
  47. package/dist/bin/commands/preview.js.map +1 -0
  48. package/dist/bin/commands/sync-secrets.d.ts +11 -0
  49. package/dist/bin/commands/sync-secrets.d.ts.map +1 -0
  50. package/dist/bin/commands/sync-secrets.js +8227 -0
  51. package/dist/bin/commands/sync-secrets.js.map +1 -0
  52. package/dist/bin/dndev.js +222 -0
  53. package/dist/bin/donotdev.js +222 -0
  54. package/dist/index.d.ts +8 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +12820 -0
  57. package/dist/index.js.map +1 -0
  58. package/package.json +71 -0
  59. package/templates/app-demo/index.html.example +20 -0
  60. package/templates/app-demo/public/favicon.ico.example +0 -0
  61. package/templates/app-demo/public/fonts/Roboto-400-cyrillic-ext.woff2.example +0 -0
  62. package/templates/app-demo/public/fonts/Roboto-400-cyrillic.woff2.example +0 -0
  63. package/templates/app-demo/public/fonts/Roboto-400-greek-ext.woff2.example +0 -0
  64. package/templates/app-demo/public/fonts/Roboto-400-greek.woff2.example +0 -0
  65. package/templates/app-demo/public/fonts/Roboto-400-latin-ext.woff2.example +0 -0
  66. package/templates/app-demo/public/fonts/Roboto-400-latin.woff2.example +0 -0
  67. package/templates/app-demo/public/fonts/Roboto-400-vietnamese.woff2.example +0 -0
  68. package/templates/app-demo/public/fonts/Roboto-700-cyrillic-ext.woff2.example +0 -0
  69. package/templates/app-demo/public/fonts/Roboto-700-cyrillic.woff2.example +0 -0
  70. package/templates/app-demo/public/fonts/Roboto-700-greek-ext.woff2.example +0 -0
  71. package/templates/app-demo/public/fonts/Roboto-700-greek.woff2.example +0 -0
  72. package/templates/app-demo/public/fonts/Roboto-700-latin-ext.woff2.example +0 -0
  73. package/templates/app-demo/public/fonts/Roboto-700-latin.woff2.example +0 -0
  74. package/templates/app-demo/public/fonts/Roboto-700-vietnamese.woff2.example +0 -0
  75. package/templates/app-demo/public/fonts/fonts.css.example +144 -0
  76. package/templates/app-demo/public/logo.png.example +0 -0
  77. package/templates/app-demo/public/logo.svg.example +1 -0
  78. package/templates/app-demo/public/manifest.json.example +10 -0
  79. package/templates/app-demo/src/App.tsx.example +17 -0
  80. package/templates/app-demo/src/Routes.tsx.example +20 -0
  81. package/templates/app-demo/src/components/ThemeToggle.tsx.example +48 -0
  82. package/templates/app-demo/src/globals.css.example +4 -0
  83. package/templates/app-demo/src/main.tsx.example +27 -0
  84. package/templates/app-demo/src/pages/DetailPage.tsx.example +103 -0
  85. package/templates/app-demo/src/pages/FullPage.tsx.example +142 -0
  86. package/templates/app-demo/src/pages/HomePage.tsx.example +79 -0
  87. package/templates/app-demo/src/pages/components/ComponentRenderer.tsx.example +511 -0
  88. package/templates/app-demo/src/pages/components/ComponentsData.tsx.example +152 -0
  89. package/templates/app-demo/src/pages/components/DemoLayout.tsx.example +266 -0
  90. package/templates/app-demo/src/pages/components/LayoutRoute.tsx.example +20 -0
  91. package/templates/app-demo/src/pages/components/componentConfig.ts.example +921 -0
  92. package/templates/app-demo/src/themes.css.example +179 -0
  93. package/templates/app-demo/tsconfig.json.example +9 -0
  94. package/templates/app-demo/vite.config.ts.example +53 -0
  95. package/templates/app-next/.env.example +92 -0
  96. package/templates/app-next/next.config.ts.example +8 -0
  97. package/templates/app-next/postcss.config.js.example +58 -0
  98. package/templates/app-next/service-account-key.json.example +2 -0
  99. package/templates/app-next/src/app/ClientLayout.tsx.example +39 -0
  100. package/templates/app-next/src/app/layout.tsx.example +52 -0
  101. package/templates/app-next/src/app/not-found.tsx.example +21 -0
  102. package/templates/app-next/src/config/app.ts.example +75 -0
  103. package/templates/app-next/src/config/legal.ts.example +170 -0
  104. package/templates/app-next/src/globals.css.example +15 -0
  105. package/templates/app-next/src/locales/dndev_en.json.example +516 -0
  106. package/templates/app-next/src/pages/HomePage.tsx.example +20 -0
  107. package/templates/app-next/src/pages/legal/LegalNoticePage.tsx.example +75 -0
  108. package/templates/app-next/src/pages/legal/PrivacyPage.tsx.example +69 -0
  109. package/templates/app-next/src/pages/legal/TermsPage.tsx.example +71 -0
  110. package/templates/app-next/src/themes.css.example +179 -0
  111. package/templates/app-next/tsconfig.json.example +11 -0
  112. package/templates/app-payload/.env.example +28 -0
  113. package/templates/app-payload/README.md.example +233 -0
  114. package/templates/app-payload/collections/Company.ts.example +125 -0
  115. package/templates/app-payload/collections/Hero.ts.example +62 -0
  116. package/templates/app-payload/collections/Media.ts.example +41 -0
  117. package/templates/app-payload/collections/Products.ts.example +115 -0
  118. package/templates/app-payload/collections/Services.ts.example +104 -0
  119. package/templates/app-payload/collections/Testimonials.ts.example +92 -0
  120. package/templates/app-payload/collections/Users.ts.example +35 -0
  121. package/templates/app-payload/src/server.ts.example +79 -0
  122. package/templates/app-payload/tsconfig.json.example +24 -0
  123. package/templates/app-vite/.env.example +77 -0
  124. package/templates/app-vite/index.html.example +127 -0
  125. package/templates/app-vite/service-account-key.json.example +2 -0
  126. package/templates/app-vite/src/App.tsx.example +39 -0
  127. package/templates/app-vite/src/Routes.tsx.example +16 -0
  128. package/templates/app-vite/src/config/app.ts.example +75 -0
  129. package/templates/app-vite/src/config/legal.ts.example +170 -0
  130. package/templates/app-vite/src/globals.css.example +11 -0
  131. package/templates/app-vite/src/locales/dndev_en.json.example +516 -0
  132. package/templates/app-vite/src/main.tsx.example +21 -0
  133. package/templates/app-vite/src/pages/HomePage.tsx.example +22 -0
  134. package/templates/app-vite/src/pages/NotFoundPage.tsx.example +33 -0
  135. package/templates/app-vite/src/pages/legal/LegalNoticePage.tsx.example +75 -0
  136. package/templates/app-vite/src/pages/legal/PrivacyPage.tsx.example +69 -0
  137. package/templates/app-vite/src/pages/legal/TermsPage.tsx.example +71 -0
  138. package/templates/app-vite/src/pages/locales/README.md.example +1 -0
  139. package/templates/app-vite/src/pages/locales/example_en.json.example +5 -0
  140. package/templates/app-vite/src/themes.css.example +179 -0
  141. package/templates/app-vite/tsconfig.json.example +9 -0
  142. package/templates/app-vite/vite.config.ts.example +9 -0
  143. package/templates/functions-firebase/README.md.example +129 -0
  144. package/templates/functions-firebase/build.mjs.example +52 -0
  145. package/templates/functions-firebase/functions-firebase/.env.example.example +45 -0
  146. package/templates/functions-firebase/functions-firebase/README.md.example +123 -0
  147. package/templates/functions-firebase/functions-firebase/build.mjs.example +52 -0
  148. package/templates/functions-firebase/functions-firebase/src/auth/getCustomClaims.ts.example +19 -0
  149. package/templates/functions-firebase/functions-firebase/src/auth/getUserAuthStatus.ts.example +21 -0
  150. package/templates/functions-firebase/functions-firebase/src/auth/index.ts.example +11 -0
  151. package/templates/functions-firebase/functions-firebase/src/auth/removeCustomClaims.ts.example +21 -0
  152. package/templates/functions-firebase/functions-firebase/src/auth/setCustomClaims.ts.example +21 -0
  153. package/templates/functions-firebase/functions-firebase/src/billing/handleStripeWebhook.ts.example +24 -0
  154. package/templates/functions-firebase/functions-firebase/src/billing/index.ts.example +10 -0
  155. package/templates/functions-firebase/functions-firebase/src/billing/processPaymentSuccess.ts.example +14 -0
  156. package/templates/functions-firebase/functions-firebase/src/billing/refreshSubscriptionStatus.ts.example +14 -0
  157. package/templates/functions-firebase/functions-firebase/src/crud/createEntity.ts.example +19 -0
  158. package/templates/functions-firebase/functions-firebase/src/crud/deleteEntity.ts.example +14 -0
  159. package/templates/functions-firebase/functions-firebase/src/crud/getEntity.ts.example +14 -0
  160. package/templates/functions-firebase/functions-firebase/src/crud/index.ts.example +12 -0
  161. package/templates/functions-firebase/functions-firebase/src/crud/listEntities.ts.example +14 -0
  162. package/templates/functions-firebase/functions-firebase/src/crud/updateEntity.ts.example +14 -0
  163. package/templates/functions-firebase/functions-firebase/src/index.ts.example +45 -0
  164. package/templates/functions-firebase/functions-firebase/src/oauth/checkGitHubAccess.ts.example +14 -0
  165. package/templates/functions-firebase/functions-firebase/src/oauth/disconnect.ts.example +14 -0
  166. package/templates/functions-firebase/functions-firebase/src/oauth/exchangeToken.ts.example +14 -0
  167. package/templates/functions-firebase/functions-firebase/src/oauth/getConnections.ts.example +14 -0
  168. package/templates/functions-firebase/functions-firebase/src/oauth/grantGitHubAccess.ts.example +14 -0
  169. package/templates/functions-firebase/functions-firebase/src/oauth/index.ts.example +17 -0
  170. package/templates/functions-firebase/functions-firebase/src/oauth/refreshToken.ts.example +14 -0
  171. package/templates/functions-firebase/functions-firebase/src/oauth/revokeGitHubAccess.ts.example +14 -0
  172. package/templates/functions-firebase/functions-firebase/tsconfig.json.example +21 -0
  173. package/templates/functions-firebase/functions.yaml.example +14 -0
  174. package/templates/functions-firebase/src/auth/getCustomClaims.ts.example +19 -0
  175. package/templates/functions-firebase/src/auth/getUserAuthStatus.ts.example +21 -0
  176. package/templates/functions-firebase/src/auth/index.ts.example +11 -0
  177. package/templates/functions-firebase/src/auth/removeCustomClaims.ts.example +21 -0
  178. package/templates/functions-firebase/src/auth/setCustomClaims.ts.example +21 -0
  179. package/templates/functions-firebase/src/billing/handleStripeWebhook.ts.example +24 -0
  180. package/templates/functions-firebase/src/billing/index.ts.example +10 -0
  181. package/templates/functions-firebase/src/billing/processPaymentSuccess.ts.example +14 -0
  182. package/templates/functions-firebase/src/billing/refreshSubscriptionStatus.ts.example +14 -0
  183. package/templates/functions-firebase/src/crud/createEntity.ts.example +19 -0
  184. package/templates/functions-firebase/src/crud/deleteEntity.ts.example +14 -0
  185. package/templates/functions-firebase/src/crud/getEntity.ts.example +14 -0
  186. package/templates/functions-firebase/src/crud/index.ts.example +12 -0
  187. package/templates/functions-firebase/src/crud/listEntities.ts.example +14 -0
  188. package/templates/functions-firebase/src/crud/updateEntity.ts.example +14 -0
  189. package/templates/functions-firebase/src/index.ts.example +45 -0
  190. package/templates/functions-firebase/src/oauth/checkGitHubAccess.ts.example +14 -0
  191. package/templates/functions-firebase/src/oauth/disconnect.ts.example +14 -0
  192. package/templates/functions-firebase/src/oauth/exchangeToken.ts.example +14 -0
  193. package/templates/functions-firebase/src/oauth/getConnections.ts.example +14 -0
  194. package/templates/functions-firebase/src/oauth/grantGitHubAccess.ts.example +14 -0
  195. package/templates/functions-firebase/src/oauth/index.ts.example +17 -0
  196. package/templates/functions-firebase/src/oauth/refreshToken.ts.example +14 -0
  197. package/templates/functions-firebase/src/oauth/revokeGitHubAccess.ts.example +14 -0
  198. package/templates/functions-firebase/tsconfig.json.example +24 -0
  199. package/templates/functions-vercel/README.md.example +116 -0
  200. package/templates/functions-vercel/build.mjs.example +52 -0
  201. package/templates/functions-vercel/functions-vercel/.env.example.example +37 -0
  202. package/templates/functions-vercel/functions-vercel/README.md.example +116 -0
  203. package/templates/functions-vercel/functions-vercel/build.mjs.example +52 -0
  204. package/templates/functions-vercel/functions-vercel/src/api/auth/getCustomClaims.ts.example +20 -0
  205. package/templates/functions-vercel/functions-vercel/src/api/auth/getUserAuthStatus.ts.example +20 -0
  206. package/templates/functions-vercel/functions-vercel/src/api/auth/removeCustomClaims.ts.example +20 -0
  207. package/templates/functions-vercel/functions-vercel/src/api/auth/setCustomClaims.ts.example +20 -0
  208. package/templates/functions-vercel/functions-vercel/src/api/billing/handleStripeWebhook.ts.example +20 -0
  209. package/templates/functions-vercel/functions-vercel/src/api/billing/processPaymentSuccess.ts.example +20 -0
  210. package/templates/functions-vercel/functions-vercel/src/api/billing/refreshSubscriptionStatus.ts.example +20 -0
  211. package/templates/functions-vercel/functions-vercel/src/api/crud/createEntity.ts.example +20 -0
  212. package/templates/functions-vercel/functions-vercel/src/api/crud/deleteEntity.ts.example +20 -0
  213. package/templates/functions-vercel/functions-vercel/src/api/crud/getEntity.ts.example +20 -0
  214. package/templates/functions-vercel/functions-vercel/src/api/crud/listEntities.ts.example +20 -0
  215. package/templates/functions-vercel/functions-vercel/src/api/crud/updateEntity.ts.example +20 -0
  216. package/templates/functions-vercel/functions-vercel/src/api/oauth/checkGitHubAccess.ts.example +20 -0
  217. package/templates/functions-vercel/functions-vercel/src/api/oauth/disconnect.ts.example +20 -0
  218. package/templates/functions-vercel/functions-vercel/src/api/oauth/exchangeToken.ts.example +20 -0
  219. package/templates/functions-vercel/functions-vercel/src/api/oauth/getConnections.ts.example +20 -0
  220. package/templates/functions-vercel/functions-vercel/src/api/oauth/grantGitHubAccess.ts.example +20 -0
  221. package/templates/functions-vercel/functions-vercel/src/api/oauth/refreshToken.ts.example +20 -0
  222. package/templates/functions-vercel/functions-vercel/src/api/oauth/revokeGitHubAccess.ts.example +20 -0
  223. package/templates/functions-vercel/functions-vercel/tsconfig.json.example +21 -0
  224. package/templates/functions-vercel/functions-vercel/vercel.json.example +14 -0
  225. package/templates/functions-vercel/src/api/auth/getCustomClaims.ts.example +20 -0
  226. package/templates/functions-vercel/src/api/auth/getUserAuthStatus.ts.example +20 -0
  227. package/templates/functions-vercel/src/api/auth/removeCustomClaims.ts.example +20 -0
  228. package/templates/functions-vercel/src/api/auth/setCustomClaims.ts.example +20 -0
  229. package/templates/functions-vercel/src/api/billing/handleStripeWebhook.ts.example +20 -0
  230. package/templates/functions-vercel/src/api/billing/processPaymentSuccess.ts.example +20 -0
  231. package/templates/functions-vercel/src/api/billing/refreshSubscriptionStatus.ts.example +20 -0
  232. package/templates/functions-vercel/src/api/crud/createEntity.ts.example +20 -0
  233. package/templates/functions-vercel/src/api/crud/deleteEntity.ts.example +20 -0
  234. package/templates/functions-vercel/src/api/crud/getEntity.ts.example +20 -0
  235. package/templates/functions-vercel/src/api/crud/listEntities.ts.example +20 -0
  236. package/templates/functions-vercel/src/api/crud/updateEntity.ts.example +20 -0
  237. package/templates/functions-vercel/src/api/oauth/checkGitHubAccess.ts.example +20 -0
  238. package/templates/functions-vercel/src/api/oauth/disconnect.ts.example +20 -0
  239. package/templates/functions-vercel/src/api/oauth/exchangeToken.ts.example +20 -0
  240. package/templates/functions-vercel/src/api/oauth/getConnections.ts.example +20 -0
  241. package/templates/functions-vercel/src/api/oauth/grantGitHubAccess.ts.example +20 -0
  242. package/templates/functions-vercel/src/api/oauth/refreshToken.ts.example +20 -0
  243. package/templates/functions-vercel/src/api/oauth/revokeGitHubAccess.ts.example +20 -0
  244. package/templates/functions-vercel/tsconfig.json.example +24 -0
  245. package/templates/functions-vercel/vercel.json.example +14 -0
  246. package/templates/github/github/workflows/firebase-deploy.yml.example +79 -0
  247. package/templates/github/workflows/firebase-deploy.yml.example +79 -0
  248. package/templates/root-consumer/.env.example +19 -0
  249. package/templates/root-consumer/.gitignore.example +82 -0
  250. package/templates/root-consumer/.prettierrc.cjs.example +12 -0
  251. package/templates/root-consumer/CLAUDE.md.example +73 -0
  252. package/templates/root-consumer/README.md.example +295 -0
  253. package/templates/root-consumer/bunfig.toml.example +68 -0
  254. package/templates/root-consumer/eslint.config.js.example +336 -0
  255. package/templates/root-consumer/firebase.json.example +348 -0
  256. package/templates/root-consumer/guides/AGENT_START_HERE.md.example +98 -0
  257. package/templates/root-consumer/guides/APP_CHECK_SETUP.md.example +111 -0
  258. package/templates/root-consumer/guides/AUTH_SETUP.md.example +92 -0
  259. package/templates/root-consumer/guides/BILLING_SETUP.md.example +120 -0
  260. package/templates/root-consumer/guides/CLI.md.example +293 -0
  261. package/templates/root-consumer/guides/COMPONENTS.md.example +875 -0
  262. package/templates/root-consumer/guides/CONFIG_SETUP.md.example +132 -0
  263. package/templates/root-consumer/guides/EMULATOR_SETUP.md.example +48 -0
  264. package/templates/root-consumer/guides/FEATURES.md.example +286 -0
  265. package/templates/root-consumer/guides/FRAMEWORK_OVERVIEW.md.example +97 -0
  266. package/templates/root-consumer/guides/FUNCTIONS.md.example +177 -0
  267. package/templates/root-consumer/guides/GETTING_STARTED.md.example +451 -0
  268. package/templates/root-consumer/guides/HOW_TO_USE.md.example +296 -0
  269. package/templates/root-consumer/guides/I18N_SETUP.md.example +204 -0
  270. package/templates/root-consumer/guides/IMPORT_PATTERNS.md.example +79 -0
  271. package/templates/root-consumer/guides/INDEX.md.example +50 -0
  272. package/templates/root-consumer/guides/INSTALLATION.md.example +296 -0
  273. package/templates/root-consumer/guides/LAYOUTS.md.example +310 -0
  274. package/templates/root-consumer/guides/PAGES_SETUP.md.example +123 -0
  275. package/templates/root-consumer/guides/STYLING.md.example +273 -0
  276. package/templates/root-consumer/guides/THEMING_SETUP.md.example +119 -0
  277. package/templates/root-consumer/guides/VERSION_CONTROL.md.example +181 -0
  278. package/templates/root-consumer/tsconfig.functions.json.example +15 -0
  279. package/templates/root-consumer/tsconfig.json.example +18 -0
  280. package/templates/root-consumer/turbo.json.example +46 -0
  281. package/templates/root-consumer/vercel.json.example +124 -0
@@ -0,0 +1,179 @@
1
+ /* apps/demo/src/themes.css */
2
+
3
+ /* ===========================
4
+ APP-WIDE SETTINGS
5
+ These apply to all themes - spacing, radius, shadows, routing animations
6
+ =========================== */
7
+ :root {
8
+ /* ===========================
9
+ ROUTING ANIMATIONS
10
+ Customize page transition animations
11
+ Pure CSS - zero JS overhead. Respects prefers-reduced-motion.
12
+ Override in themes.css: --routing-animation: slide; to change animation type
13
+ =========================== */
14
+ /* Single animation type (fade, slide, or none to disable) - app-wide */
15
+ /* --routing-animation: fade; */ /* fade | slide | none */
16
+ /* --routing-default-duration: var(--dur-normal); */ /* Animation duration */
17
+
18
+ /* Breakpoint-specific durations (all inherit from --routing-default-duration) */
19
+ /* --routing-mobile-duration: var(--routing-default-duration); */
20
+ /* --routing-tablet-duration: var(--routing-default-duration); */
21
+ /* --routing-desktop-duration: var(--routing-default-duration); */
22
+ /* --routing-wide-duration: var(--routing-default-duration); */
23
+
24
+ /* Examples: */
25
+ /* --routing-animation: slide; */ /* Use slide animation */
26
+ /* --routing-animation: none; */ /* Disable animations */
27
+ /* --routing-default-duration: 200ms; */ /* Faster animations */
28
+
29
+ /* ===========================
30
+ SPACING OVERRIDES
31
+ Customize spacing scale
32
+ =========================== */
33
+ /* --gap-sm: 0.5rem; */ /* 8px - tight spacing */
34
+ /* --gap-md: 1rem; */ /* 16px - medium spacing (default) */
35
+ /* --gap-lg: 2rem; */ /* 32px - large spacing */
36
+
37
+ /* ===========================
38
+ BORDER RADIUS OVERRIDES
39
+ Customize component corners
40
+ =========================== */
41
+ /* --radius-interactive: var(--radius-none); */ /* Buttons, links (default: square) */
42
+ /* --radius-surface: var(--radius-md); */ /* Cards, dialogs (default: 8px round) */
43
+ /* --radius-floating: var(--radius-none); */ /* Dropdowns, popovers (default: square) */
44
+
45
+ /* ===========================
46
+ SHADOW OVERRIDES
47
+ Customize elevation
48
+ =========================== */
49
+ /* --shadow-sm: ...; */ /* Small shadows */
50
+ /* --shadow-md: ...; */ /* Medium shadows (default) */
51
+ /* --shadow-xl: ...; */ /* Large shadows */
52
+ }
53
+
54
+ /* ===========================
55
+ LIGHT THEME (High Contrast Light)
56
+ Background: White
57
+ Foreground: Black
58
+ =========================== */
59
+ :root.light {
60
+ --theme-icon: 'Sun';
61
+ --theme-label: 'Light';
62
+ --theme-is-dark: 0;
63
+
64
+ /* ===========================
65
+ 1. USER SETS - 5 BRAND COLORS
66
+ =========================== */
67
+ --foreground: #000000;
68
+ --background: #ffffff;
69
+ --primary: #00bcd4; /* Cyan */
70
+ --secondary: #10b981; /* Green */
71
+ --accent: #ff9800; /* Orange */
72
+
73
+ /* ===========================
74
+ 2. FRAMEWORK DEFAULTS - STATUS COLORS
75
+ (Override if needed)
76
+ =========================== */
77
+ --success: #10b981;
78
+ --warning: #f59e0b;
79
+ --destructive: #dc2626;
80
+
81
+ /* ===========================
82
+ 3. AUTO-COMPUTED - SURFACES
83
+ (Plain sight computation for easy overriding)
84
+ =========================== */
85
+ --muted: color-mix(in oklab, var(--foreground) 5%, var(--background));
86
+ --muted-foreground: color-mix(in oklab, var(--foreground) 75%, transparent);
87
+ --border: color-mix(in oklab, var(--foreground) 15%, var(--background));
88
+ --input: var(--muted);
89
+ --ring: var(--primary);
90
+
91
+ --card: var(--background);
92
+ --card-foreground: var(--foreground);
93
+ --popover: var(--card);
94
+ --popover-foreground: var(--card-foreground);
95
+ --surface-1: var(--card);
96
+
97
+ /* ===========================
98
+ 4. AUTO-COMPUTED - TEXT ON BRAND COLORS
99
+ (Mapped to foreground/background for consistency)
100
+ =========================== */
101
+ --primary-foreground: var(--foreground);
102
+ --secondary-foreground: var(--background);
103
+ --accent-foreground: var(--foreground);
104
+
105
+ --success-foreground: var(--background);
106
+ --warning-foreground: var(--foreground);
107
+ --destructive-foreground: var(--background);
108
+ }
109
+
110
+ /* ===========================
111
+ DARK THEME (High Contrast Dark)
112
+ Background: Black
113
+ Foreground: White
114
+ =========================== */
115
+ :root.dark {
116
+ --theme-icon: 'Moon';
117
+ --theme-label: 'Dark';
118
+ --theme-is-dark: 1;
119
+
120
+ /* ===========================
121
+ 1. USER SETS - 5 BRAND COLORS
122
+ =========================== */
123
+ --foreground: #ffffff;
124
+ --background: #000000;
125
+ --primary: #00bcd4; /* Cyan */
126
+ --secondary: #10b981; /* Green */
127
+ --accent: #ff9800; /* Orange */
128
+
129
+ /* ===========================
130
+ 2. FRAMEWORK DEFAULTS - STATUS COLORS
131
+ =========================== */
132
+ --success: #10b981;
133
+ --warning: #f59e0b;
134
+ --destructive: #ef4444;
135
+
136
+ /* ===========================
137
+ 3. AUTO-COMPUTED - SURFACES
138
+ =========================== */
139
+ --muted: color-mix(in oklab, var(--foreground) 10%, var(--background));
140
+ --muted-foreground: color-mix(in oklab, var(--foreground) 75%, transparent);
141
+ --border: color-mix(in oklab, var(--foreground) 15%, var(--background));
142
+ --input: var(--muted);
143
+ --ring: var(--primary);
144
+
145
+ --card: var(--background);
146
+ --card-foreground: var(--foreground);
147
+ --popover: var(--card);
148
+ --popover-foreground: var(--card-foreground);
149
+ --surface-1: var(--card);
150
+
151
+ /* ===========================
152
+ 4. AUTO-COMPUTED - TEXT ON BRAND COLORS
153
+ =========================== */
154
+ --primary-foreground: var(--background);
155
+ --secondary-foreground: var(--foreground);
156
+ --accent-foreground: var(--background);
157
+
158
+ --success-foreground: var(--foreground);
159
+ --warning-foreground: var(--background);
160
+ --destructive-foreground: var(--foreground);
161
+ }
162
+
163
+ /* ===========================
164
+ CUSTOM THEMES
165
+ =========================== */
166
+
167
+ /* Add your custom themes here */
168
+ /* Example:
169
+ .brand {
170
+ --theme-icon: 'Zap';
171
+ --theme-label: 'Brand';
172
+ --background: #your-brand-background;
173
+ --foreground: #your-brand-foreground;
174
+ --primary: #your-brand-primary;
175
+ --secondary: #your-brand-secondary;
176
+ --accent: #your-brand-accent;
177
+ ... other variables ...
178
+ }
179
+ */
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "baseUrl": ".",
5
+ "types": ["node", "vite/client"]
6
+ },
7
+ "include": ["src/**/*", "vite.config.ts"],
8
+ "exclude": ["node_modules", "dist"]
9
+ }
@@ -0,0 +1,53 @@
1
+ // apps/demo/vite.config.ts
2
+ import react from '@vitejs/plugin-react';
3
+ import { defineConfig } from 'vite';
4
+ import tsconfigPaths from 'vite-tsconfig-paths';
5
+ import autoprefixer from 'autoprefixer';
6
+ // @ts-expect-error - postcss-import doesn't have type definitions
7
+ import postcssImport from 'postcss-import';
8
+ import postcssNesting from 'postcss-nesting';
9
+ import { resolve as pathResolve } from 'node:path';
10
+ import { createRequire } from 'node:module';
11
+
12
+ const require = createRequire(import.meta.url);
13
+
14
+ export default defineConfig({
15
+ plugins: [
16
+ react({
17
+ jsxRuntime: 'automatic',
18
+ }),
19
+ tsconfigPaths({
20
+ ignoreConfigErrors: true,
21
+ }),
22
+ ],
23
+ css: {
24
+ postcss: {
25
+ plugins: [
26
+ postcssImport({
27
+ resolve: (id: string, basedir: string) => {
28
+ // Handle package imports like '@donotdev/components/styles'
29
+ if (!id.startsWith('.')) {
30
+ try {
31
+ return require.resolve(id, { paths: [basedir] });
32
+ } catch {
33
+ // Fallback to relative resolution
34
+ return pathResolve(basedir, id);
35
+ }
36
+ }
37
+ // Relative imports
38
+ return pathResolve(basedir, id);
39
+ },
40
+ }),
41
+ postcssNesting,
42
+ autoprefixer,
43
+ ],
44
+ },
45
+ },
46
+ optimizeDeps: {
47
+ include: ['react', 'react-dom', 'react/jsx-runtime'],
48
+ },
49
+ resolve: {
50
+ dedupe: ['react', 'react-dom'],
51
+ preserveSymlinks: false,
52
+ },
53
+ });
@@ -0,0 +1,92 @@
1
+ # Next.js Environment Variables (NEXT_PUBLIC_ prefix required for client-side)
2
+ #
3
+ # =============================================================================
4
+ # ENVIRONMENT FILE STRUCTURE
5
+ # =============================================================================
6
+ # Next.js loads .env files in this priority order (higher overrides lower):
7
+ # 1. .env.production.local (highest priority, gitignored, production only)
8
+ # 2. .env.production (mode-specific, production only)
9
+ # 3. .env.local (always loaded, gitignored, local overrides)
10
+ # 4. .env (base file, lowest priority, committed to git)
11
+ #
12
+ # RECOMMENDED SETUP:
13
+ # - .env (this file) → Base/default values (committed to git)
14
+ # - .env.local → Local development overrides (gitignored)
15
+ # - .env.production.local → Production overrides (gitignored)
16
+ #
17
+ # Copy this file to .env and update with your values
18
+ # For local dev: copy to .env.local and override as needed
19
+ # For production: copy to .env.production.local with production values
20
+
21
+ # =============================================================================
22
+ # App Configuration
23
+ # =============================================================================
24
+ NEXT_PUBLIC_APP_URL=http://localhost:3000
25
+
26
+ # =============================================================================
27
+ # DoNotDev License Key
28
+ # =============================================================================
29
+ # Get your license key from: https://donotdev.com/pricing
30
+ # Removes watermark and enables all features
31
+ # Can be the same key as in root .env if sharing across apps
32
+ NEXT_PUBLIC_DONOTDEV_LICENSE_KEY=dndev_your_key_here
33
+
34
+ # =============================================================================
35
+ # Authentication & OAuth Providers
36
+ # =============================================================================
37
+ # Comma-separated list of enabled auth providers
38
+ # Available: github (required for framework), google, facebook, discord, twitter, microsoft, spotify, linkedin, reddit, twitch, yahoo, apple
39
+ # Uncomment when Firebase is configured (requires NEXT_PUBLIC_FIREBASE_API_KEY and NEXT_PUBLIC_FIREBASE_PROJECT_ID)
40
+ # NEXT_PUBLIC_AUTH_PARTNERS=google,github
41
+
42
+ # Comma-separated list of enabled OAuth partners for API access
43
+ # Available: google, github, facebook, discord, twitter, microsoft, spotify, linkedin, reddit, twitch, yahoo, apple
44
+ # NEXT_PUBLIC_OAUTH_PARTNERS=google,spotify
45
+
46
+ # Individual OAuth client IDs (only needed for OAuth partners)
47
+ # NEXT_PUBLIC_GOOGLE_CLIENT_ID=your_google_client_id
48
+ # NEXT_PUBLIC_GITHUB_CLIENT_ID=your_github_client_id
49
+ # NEXT_PUBLIC_SPOTIFY_CLIENT_ID=your_spotify_client_id
50
+
51
+ # =============================================================================
52
+ # Firebase Configuration
53
+ # =============================================================================
54
+ # Get these values from your Firebase project settings
55
+ NEXT_PUBLIC_FIREBASE_API_KEY=
56
+ NEXT_PUBLIC_FIREBASE_PROJECT_ID=
57
+ NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=
58
+ NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=
59
+ NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=
60
+ NEXT_PUBLIC_FIREBASE_APP_ID=
61
+ NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=
62
+ NEXT_PUBLIC_FIREBASE_FUNCTIONS_REGION=
63
+
64
+ # =============================================================================
65
+ # Firebase Emulator (Development only)
66
+ # =============================================================================
67
+ # Set to true to use Firebase emulators instead of production services
68
+ NEXT_PUBLIC_USE_FIREBASE_EMULATOR=false
69
+ NEXT_PUBLIC_FIREBASE_EMULATOR_HOST=localhost
70
+ NEXT_PUBLIC_FIREBASE_EMULATOR_PORT=9099
71
+ NEXT_PUBLIC_FIREBASE_AUTH_EMULATOR_HOST=http://localhost:9099
72
+ NEXT_PUBLIC_FIREBASE_FIRESTORE_EMULATOR_HOST=localhost:8080
73
+ NEXT_PUBLIC_FIREBASE_FUNCTIONS_EMULATOR_PORT=5001
74
+
75
+ # =============================================================================
76
+ # Firebase App Check (Abuse Protection)
77
+ # =============================================================================
78
+ # reCAPTCHA v3 site key for App Check
79
+ # NEXT_PUBLIC_RECAPTCHA_SITE_KEY=6LcXXXX...
80
+ # Optional: Debug token for localhost testing
81
+ # NEXT_PUBLIC_APPCHECK_DEBUG_TOKEN=XXXX-XXXX-XXXX
82
+
83
+ # =============================================================================
84
+ # Stripe Configuration (if using billing)
85
+ # =============================================================================
86
+ NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=
87
+
88
+ # =============================================================================
89
+ # Sentry (optional - auto-enabled if SENTRY_DSN is set)
90
+ # =============================================================================
91
+ # Framework automatically initializes Sentry if this variable is set
92
+ NEXT_PUBLIC_SENTRY_DSN=
@@ -0,0 +1,8 @@
1
+ import { defineNextConfig } from '@donotdev/core/next';
2
+ import { appConfig } from './src/config/app';
3
+
4
+ export default defineNextConfig({
5
+ appConfig,
6
+ output: 'export',
7
+ distDir: 'dist',
8
+ });
@@ -0,0 +1,58 @@
1
+ /**
2
+ * PostCSS config for Next.js
3
+ * Uses custom resolver for workspace package resolution (matches framework pattern)
4
+ */
5
+
6
+ import postcssImport from 'postcss-import';
7
+ import postcssNesting from 'postcss-nesting';
8
+ import autoprefixer from 'autoprefixer';
9
+ import { createRequire } from 'node:module';
10
+ import { resolve, join, dirname } from 'node:path';
11
+ import { existsSync } from 'node:fs';
12
+
13
+ const findPackageRoot = (startDir) => {
14
+ let current = resolve(startDir);
15
+ const root = resolve('/');
16
+
17
+ while (current !== root) {
18
+ const pkgPath = join(current, 'package.json');
19
+ if (existsSync(pkgPath)) {
20
+ return current;
21
+ }
22
+ const parent = dirname(current);
23
+ if (parent === current) break;
24
+ current = parent;
25
+ }
26
+
27
+ return startDir;
28
+ };
29
+
30
+ const customResolve = (id, basedir) => {
31
+ try {
32
+ const packageRoot = findPackageRoot(basedir);
33
+ const require = createRequire(join(packageRoot, 'package.json'));
34
+ return require.resolve(id);
35
+ } catch (error) {
36
+ return resolve(basedir, id);
37
+ }
38
+ };
39
+
40
+ /** @type {import('postcss-load-config').Config} */
41
+ const config = {
42
+ plugins: [
43
+ postcssImport({ resolve: customResolve }),
44
+ postcssNesting,
45
+ autoprefixer({
46
+ overrideBrowserslist: [
47
+ '> 1%',
48
+ 'last 2 versions',
49
+ 'Firefox ESR',
50
+ 'not dead',
51
+ 'not op_mini all',
52
+ ],
53
+ grid: 'autoplace',
54
+ }),
55
+ ],
56
+ };
57
+
58
+ export default config;
@@ -0,0 +1,39 @@
1
+ 'use client';
2
+ // src/app/ClientLayout.tsx
3
+
4
+ import { NextJsAppProviders } from '@donotdev/ui/next';
5
+ import { appConfig } from '../config/app';
6
+
7
+ interface ClientLayoutProps {
8
+ children: React.ReactNode;
9
+ serverCookies?: string;
10
+ }
11
+
12
+ /**
13
+ * Client-side layout wrapper for Next.js App Router
14
+ *
15
+ * Configuration-driven architecture with smart defaults.
16
+ * Layout preset comes from appConfig.preset (configured in config/app.ts).
17
+ * Layout prop is for breadcrumbs and slot customizations only.
18
+ * CSS variable overrides should be done in themes.css.
19
+ * Override only what you need - everything else has sensible defaults.
20
+ */
21
+ export function ClientLayout({ children, serverCookies }: ClientLayoutProps) {
22
+ return (
23
+ <div id="root">
24
+ <NextJsAppProviders
25
+ config={appConfig}
26
+ serverCookies={serverCookies}
27
+ layout={{
28
+ breadcrumbs: 'smart', // 'smart' | 'always' | 'never' | false
29
+ header: {
30
+ // end: () => <YourHeaderActions />,
31
+ },
32
+ // footer: () => <CustomFooter />,
33
+ }}
34
+ >
35
+ {children}
36
+ </NextJsAppProviders>
37
+ </div>
38
+ );
39
+ }
@@ -0,0 +1,52 @@
1
+ import type { Metadata } from 'next';
2
+ import { cookies } from 'next/headers';
3
+ import '../globals.css';
4
+ import { ClientLayout } from './ClientLayout';
5
+
6
+ /**
7
+ * Framework fonts are loaded via CSS @font-face rules in dndev.css
8
+ *
9
+ * The framework CSS includes optimized @font-face declarations for Roboto
10
+ * with proper unicode-range subsetting for performance.
11
+ * Fonts are copied from framework to public/fonts/ by AssetDiscovery during build.
12
+ */
13
+
14
+ export const metadata: Metadata = {
15
+ title: 'DoNotDev Demo',
16
+ description: 'Next.js site using DNDev framework',
17
+ };
18
+
19
+ export default async function RootLayout({
20
+ children,
21
+ }: {
22
+ children: React.ReactNode;
23
+ }) {
24
+ /**
25
+ * SSR: Read theme from cookies to apply correct theme class to HTML
26
+ *
27
+ * This ensures the server-rendered HTML has the correct theme class,
28
+ * preventing FOUC (Flash of Unstyled Content) when client hydrates.
29
+ *
30
+ * Flow:
31
+ * 1. Server reads cookie → applies theme class to <html>/<body>
32
+ * 2. NextJsStoresInitializer hydrates store from cookie
33
+ * 3. Client hydrates → Zustand persist matches server state
34
+ * 4. setAvailableThemes() ensures DOM matches persisted theme
35
+ */
36
+ const cookieStore = await cookies();
37
+ const themeCookie = cookieStore.get('dndev-theme');
38
+ const themeClass = themeCookie?.value || 'light';
39
+
40
+ return (
41
+ <html lang="en" className={`dndev-design-tokens ${themeClass}`}>
42
+ <head>
43
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
44
+ </head>
45
+ <body className={themeClass}>
46
+ <ClientLayout serverCookies={cookieStore.toString()}>
47
+ {children}
48
+ </ClientLayout>
49
+ </body>
50
+ </html>
51
+ );
52
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @fileoverview Not found page for Next.js App Router
3
+ * @description 404 error page using framework's NotFoundPage component
4
+ * Next.js automatically uses this file for unmatched routes
5
+ * @version 0.0.1
6
+ * @since 0.0.1
7
+ * @author AMBROISE PARK Consulting
8
+ */
9
+
10
+ import { NotFoundPage } from '@donotdev/ui';
11
+
12
+ /**
13
+ * Next.js App Router automatically uses not-found.tsx for 404 errors
14
+ * This file exports the framework's NotFoundPage component which provides:
15
+ * - Professional full-viewport centered design
16
+ * - i18n translation support
17
+ * - Dynamic route suggestions
18
+ * - Accessible navigation buttons
19
+ */
20
+ export default NotFoundPage;
21
+
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @fileoverview Application configuration
3
+ * @description Defines application metadata and feature flags
4
+ * @version 0.0.1
5
+ * @since 0.0.1
6
+ * @author AMBROISE PARK Consulting
7
+ */
8
+
9
+ import type { AppConfig } from '@donotdev/core';
10
+
11
+ /**
12
+ * Application name constant
13
+ *
14
+ * @version 0.0.1
15
+ * @since 0.0.1
16
+ * @author AMBROISE PARK Consulting
17
+ */
18
+ export const APP_NAME = '{{appName}}';
19
+
20
+ /**
21
+ * Application short name constant
22
+ *
23
+ * @version 0.0.1
24
+ * @since 0.0.1
25
+ * @author AMBROISE PARK Consulting
26
+ */
27
+ export const APP_SHORT_NAME = '{{appShortName}}';
28
+
29
+ /**
30
+ * Application description constant
31
+ *
32
+ * @version 0.0.1
33
+ * @since 0.0.1
34
+ * @author AMBROISE PARK Consulting
35
+ */
36
+ export const APP_DESCRIPTION = 'Built with DoNotDev Framework';
37
+
38
+ /**
39
+ * Application configuration object
40
+ *
41
+ * @version 0.0.1
42
+ * @since 0.0.1
43
+ * @author AMBROISE PARK Consulting
44
+ */
45
+ export const appConfig: AppConfig = {
46
+ app: {
47
+ name: APP_NAME,
48
+ shortName: APP_SHORT_NAME,
49
+ description: APP_DESCRIPTION,
50
+ // Optional: Configure footer legal links
51
+ // Remove any links you don't need
52
+ footer: {
53
+ legalLinks: [
54
+ { path: '#cookie-settings', label: 'footer.legal.cookieSettings' },
55
+ { path: '/legal/privacy', label: 'footer.legal.privacyPolicy' },
56
+ { path: '/legal/terms', label: 'footer.legal.termsOfService' },
57
+ // Add more links as needed:
58
+ // { path: '/legal/legal-notice', label: 'footer.legal.legalNotice' },
59
+ // { path: '/license', label: 'License' },
60
+ ],
61
+ },
62
+ },
63
+ preset: 'docs', // 'landing' | 'admin' | 'moolti' | 'docs' | 'blog' | 'game' | 'plain'
64
+ features: {
65
+ // Optional: Enable debug tools in development
66
+ // debug: true,
67
+ },
68
+ // Optional: Override auth routes
69
+ // auth: {
70
+ // authRoute: '/signin',
71
+ // roleRoute: '/403',
72
+ // tierRoute: '/pricing',
73
+ // },
74
+ };
75
+