@digilogiclabs/create-saas-app 1.5.0 → 1.5.2

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 (302) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/cli/commands/add.d.ts +6 -0
  3. package/dist/cli/commands/add.d.ts.map +1 -0
  4. package/dist/cli/commands/add.js +39 -0
  5. package/dist/cli/commands/add.js.map +1 -0
  6. package/dist/cli/commands/create.d.ts +28 -0
  7. package/dist/cli/commands/create.d.ts.map +1 -0
  8. package/dist/cli/commands/create.js +130 -0
  9. package/dist/cli/commands/create.js.map +1 -0
  10. package/dist/cli/commands/index.d.ts +4 -0
  11. package/dist/cli/commands/index.d.ts.map +1 -0
  12. package/dist/cli/commands/index.js +20 -0
  13. package/dist/cli/commands/index.js.map +1 -0
  14. package/dist/cli/commands/update.d.ts +6 -0
  15. package/dist/cli/commands/update.d.ts.map +1 -0
  16. package/dist/cli/commands/update.js +68 -0
  17. package/dist/cli/commands/update.js.map +1 -0
  18. package/dist/{index.d.ts → cli/index.d.ts} +2 -3
  19. package/dist/cli/index.d.ts.map +1 -0
  20. package/dist/cli/index.js +59 -0
  21. package/dist/cli/index.js.map +1 -0
  22. package/dist/cli/prompts/index.d.ts +2 -0
  23. package/dist/cli/prompts/index.d.ts.map +1 -0
  24. package/dist/cli/prompts/index.js +18 -0
  25. package/dist/cli/prompts/index.js.map +1 -0
  26. package/dist/cli/prompts/project-setup.d.ts +5 -0
  27. package/dist/cli/prompts/project-setup.d.ts.map +1 -0
  28. package/dist/cli/prompts/project-setup.js +251 -0
  29. package/dist/cli/prompts/project-setup.js.map +1 -0
  30. package/dist/cli/utils/git.d.ts +9 -0
  31. package/dist/cli/utils/git.d.ts.map +1 -0
  32. package/dist/cli/utils/git.js +77 -0
  33. package/dist/cli/utils/git.js.map +1 -0
  34. package/dist/cli/utils/index.d.ts +5 -0
  35. package/dist/cli/utils/index.d.ts.map +1 -0
  36. package/dist/cli/utils/index.js +21 -0
  37. package/dist/cli/utils/index.js.map +1 -0
  38. package/dist/cli/utils/logger.d.ts +16 -0
  39. package/dist/cli/utils/logger.d.ts.map +1 -0
  40. package/dist/cli/utils/logger.js +55 -0
  41. package/dist/cli/utils/logger.js.map +1 -0
  42. package/dist/cli/utils/package-manager.d.ts +8 -0
  43. package/dist/cli/utils/package-manager.d.ts.map +1 -0
  44. package/dist/cli/utils/package-manager.js +92 -0
  45. package/dist/cli/utils/package-manager.js.map +1 -0
  46. package/dist/cli/utils/spinner.d.ts +7 -0
  47. package/dist/cli/utils/spinner.d.ts.map +1 -0
  48. package/dist/cli/utils/spinner.js +48 -0
  49. package/dist/cli/utils/spinner.js.map +1 -0
  50. package/dist/cli/validators/dependencies.d.ts +15 -0
  51. package/dist/cli/validators/dependencies.d.ts.map +1 -0
  52. package/dist/cli/validators/dependencies.js +108 -0
  53. package/dist/cli/validators/dependencies.js.map +1 -0
  54. package/dist/cli/validators/index.d.ts +3 -0
  55. package/dist/cli/validators/index.d.ts.map +1 -0
  56. package/dist/cli/validators/index.js +19 -0
  57. package/dist/cli/validators/index.js.map +1 -0
  58. package/dist/cli/validators/project-name.d.ts +5 -0
  59. package/dist/cli/validators/project-name.d.ts.map +1 -0
  60. package/dist/cli/validators/project-name.js +151 -0
  61. package/dist/cli/validators/project-name.js.map +1 -0
  62. package/dist/generators/file-processor.d.ts +28 -0
  63. package/dist/generators/file-processor.d.ts.map +1 -0
  64. package/dist/generators/file-processor.js +203 -0
  65. package/dist/generators/file-processor.js.map +1 -0
  66. package/dist/generators/index.d.ts +4 -0
  67. package/dist/generators/index.d.ts.map +1 -0
  68. package/dist/generators/index.js +20 -0
  69. package/dist/generators/index.js.map +1 -0
  70. package/dist/generators/package-installer.d.ts +29 -0
  71. package/dist/generators/package-installer.d.ts.map +1 -0
  72. package/dist/generators/package-installer.js +167 -0
  73. package/dist/generators/package-installer.js.map +1 -0
  74. package/dist/generators/template-generator.d.ts +48 -0
  75. package/dist/generators/template-generator.d.ts.map +1 -0
  76. package/dist/generators/template-generator.js +276 -0
  77. package/dist/generators/template-generator.js.map +1 -0
  78. package/dist/index.js +3 -3
  79. package/dist/index.js.map +1 -1
  80. package/package.json +3 -3
  81. package/src/templates/web/base/template/package.json +58 -58
  82. package/src/templates/web/base/template/src/test/setup.ts +78 -78
  83. package/src/templates/web/ui-auth/template/package.json +50 -50
  84. package/src/templates/web/ui-auth/template/src/test/setup.ts +78 -78
  85. package/src/templates/web/ui-auth-payments/template/package-lock.json +12240 -0
  86. package/src/templates/web/ui-auth-payments/template/package.json +52 -52
  87. package/src/templates/web/ui-auth-payments/template/src/components/client/login-form.tsx +1 -1
  88. package/src/templates/web/ui-auth-payments/template/src/components/client/signup-form.tsx +3 -3
  89. package/src/templates/web/ui-auth-payments/template/src/test/setup.ts +78 -78
  90. package/src/templates/web/ui-auth-payments/template/tsconfig.tsbuildinfo +1 -0
  91. package/src/templates/web/ui-auth-payments-audio/template/package-lock.json +12241 -0
  92. package/src/templates/web/ui-auth-payments-audio/template/package.json +53 -52
  93. package/src/templates/web/ui-auth-payments-audio/template/src/app/login/page.tsx +2 -105
  94. package/src/templates/web/ui-auth-payments-audio/template/src/app/signup/page.tsx +2 -124
  95. package/{dist/templates/web/ui-auth-payments → src/templates/web/ui-auth-payments-audio}/template/src/components/client/login-form.tsx +1 -1
  96. package/{dist/templates/web/ui-auth-payments → src/templates/web/ui-auth-payments-audio}/template/src/components/client/signup-form.tsx +3 -3
  97. package/src/templates/web/ui-auth-payments-audio/template/src/lib/actions/index.ts +14 -0
  98. package/src/templates/web/ui-auth-payments-audio/template/src/test/setup.ts +78 -78
  99. package/src/templates/web/ui-auth-payments-audio/template/tsconfig.tsbuildinfo +1 -0
  100. package/src/templates/web/ui-auth-payments-video/template/package.json +53 -52
  101. package/src/templates/web/ui-auth-payments-video/template/src/test/setup.ts +78 -78
  102. package/src/templates/web/ui-only/template/package.json +49 -49
  103. package/src/templates/web/ui-only/template/src/test/setup.ts +78 -78
  104. package/src/templates/web/ui-package-test/template/package.json +42 -42
  105. package/dist/templates/mobile/base/template/.env.example +0 -15
  106. package/dist/templates/mobile/base/template/App.tsx +0 -88
  107. package/dist/templates/mobile/base/template/app/(auth)/login.tsx +0 -44
  108. package/dist/templates/mobile/base/template/app/(auth)/signup.tsx +0 -43
  109. package/dist/templates/mobile/base/template/app/checkout.tsx +0 -20
  110. package/dist/templates/mobile/base/template/package.json +0 -38
  111. package/dist/templates/shared/auth/firebase/web/config.ts +0 -23
  112. package/dist/templates/shared/auth/supabase/web/config.ts +0 -8
  113. package/dist/templates/web/base/template/.env.example +0 -15
  114. package/dist/templates/web/base/template/.eslintrc.js +0 -8
  115. package/dist/templates/web/base/template/README.md +0 -68
  116. package/dist/templates/web/base/template/next.config.js +0 -15
  117. package/dist/templates/web/base/template/package.json +0 -58
  118. package/dist/templates/web/base/template/postcss.config.js +0 -7
  119. package/dist/templates/web/base/template/src/app/auth/callback/route.ts +0 -18
  120. package/dist/templates/web/base/template/src/app/checkout/page.tsx +0 -28
  121. package/dist/templates/web/base/template/src/app/error.tsx +0 -97
  122. package/dist/templates/web/base/template/src/app/globals.css +0 -60
  123. package/dist/templates/web/base/template/src/app/layout.tsx +0 -35
  124. package/dist/templates/web/base/template/src/app/loading.tsx +0 -34
  125. package/dist/templates/web/base/template/src/app/login/page.tsx +0 -39
  126. package/dist/templates/web/base/template/src/app/page.tsx +0 -132
  127. package/dist/templates/web/base/template/src/app/signup/page.tsx +0 -39
  128. package/dist/templates/web/base/template/src/components/__tests__/example.test.tsx +0 -49
  129. package/dist/templates/web/base/template/src/components/providers/app-providers.tsx +0 -33
  130. package/dist/templates/web/base/template/src/components/providers/theme-provider.tsx +0 -94
  131. package/dist/templates/web/base/template/src/components/shared/footer.tsx +0 -36
  132. package/dist/templates/web/base/template/src/components/shared/header.tsx +0 -44
  133. package/dist/templates/web/base/template/src/components/ui/badge.tsx +0 -36
  134. package/dist/templates/web/base/template/src/components/ui/button.tsx +0 -56
  135. package/dist/templates/web/base/template/src/components/ui/card.tsx +0 -71
  136. package/dist/templates/web/base/template/src/components/ui/theme-toggle.tsx +0 -34
  137. package/dist/templates/web/base/template/src/lib/env.ts +0 -46
  138. package/dist/templates/web/base/template/src/lib/utils.ts +0 -140
  139. package/dist/templates/web/base/template/src/test/setup.ts +0 -79
  140. package/dist/templates/web/base/template/tailwind.config.js +0 -77
  141. package/dist/templates/web/base/template/tsconfig.json +0 -33
  142. package/dist/templates/web/base/template/vitest.config.ts +0 -17
  143. package/dist/templates/web/base/template.backup/.env.example +0 -15
  144. package/dist/templates/web/base/template.backup.20250817/.env.example +0 -15
  145. package/dist/templates/web/ui-auth/template/.env.example +0 -15
  146. package/dist/templates/web/ui-auth/template/.eslintrc.js +0 -8
  147. package/dist/templates/web/ui-auth/template/README.md +0 -68
  148. package/dist/templates/web/ui-auth/template/next.config.js +0 -12
  149. package/dist/templates/web/ui-auth/template/package.json +0 -50
  150. package/dist/templates/web/ui-auth/template/postcss.config.js +0 -7
  151. package/dist/templates/web/ui-auth/template/src/app/auth/callback/route.ts +0 -12
  152. package/dist/templates/web/ui-auth/template/src/app/checkout/page.tsx +0 -25
  153. package/dist/templates/web/ui-auth/template/src/app/error.tsx +0 -67
  154. package/dist/templates/web/ui-auth/template/src/app/globals.css +0 -42
  155. package/dist/templates/web/ui-auth/template/src/app/layout.tsx +0 -33
  156. package/dist/templates/web/ui-auth/template/src/app/loading.tsx +0 -20
  157. package/dist/templates/web/ui-auth/template/src/app/login/page.tsx +0 -109
  158. package/dist/templates/web/ui-auth/template/src/app/page.tsx +0 -129
  159. package/dist/templates/web/ui-auth/template/src/app/signup/page.tsx +0 -128
  160. package/dist/templates/web/ui-auth/template/src/components/__tests__/example.test.tsx +0 -49
  161. package/dist/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +0 -29
  162. package/dist/templates/web/ui-auth/template/src/components/providers/theme-provider.tsx +0 -94
  163. package/dist/templates/web/ui-auth/template/src/components/shared/footer.tsx +0 -36
  164. package/dist/templates/web/ui-auth/template/src/components/shared/header.tsx +0 -53
  165. package/dist/templates/web/ui-auth/template/src/components/ui/badge.tsx +0 -36
  166. package/dist/templates/web/ui-auth/template/src/components/ui/theme-toggle.tsx +0 -34
  167. package/dist/templates/web/ui-auth/template/src/lib/env.ts +0 -49
  168. package/dist/templates/web/ui-auth/template/src/lib/utils.ts +0 -140
  169. package/dist/templates/web/ui-auth/template/src/test/setup.ts +0 -79
  170. package/dist/templates/web/ui-auth/template/tailwind.config.js +0 -77
  171. package/dist/templates/web/ui-auth/template/tsconfig.json +0 -33
  172. package/dist/templates/web/ui-auth/template/vitest.config.ts +0 -17
  173. package/dist/templates/web/ui-auth/template.backup/.env.example +0 -15
  174. package/dist/templates/web/ui-auth/template.backup.20250817/.env.example +0 -15
  175. package/dist/templates/web/ui-auth-payments/template/.env.example +0 -15
  176. package/dist/templates/web/ui-auth-payments/template/README.md +0 -165
  177. package/dist/templates/web/ui-auth-payments/template/next.config.js +0 -12
  178. package/dist/templates/web/ui-auth-payments/template/package.json +0 -52
  179. package/dist/templates/web/ui-auth-payments/template/postcss.config.js +0 -7
  180. package/dist/templates/web/ui-auth-payments/template/src/app/auth/callback/route.ts +0 -12
  181. package/dist/templates/web/ui-auth-payments/template/src/app/billing/page.tsx +0 -211
  182. package/dist/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +0 -142
  183. package/dist/templates/web/ui-auth-payments/template/src/app/error.tsx +0 -67
  184. package/dist/templates/web/ui-auth-payments/template/src/app/globals.css +0 -42
  185. package/dist/templates/web/ui-auth-payments/template/src/app/layout.tsx +0 -33
  186. package/dist/templates/web/ui-auth-payments/template/src/app/loading.tsx +0 -20
  187. package/dist/templates/web/ui-auth-payments/template/src/app/login/loading.tsx +0 -38
  188. package/dist/templates/web/ui-auth-payments/template/src/app/login/page.tsx +0 -109
  189. package/dist/templates/web/ui-auth-payments/template/src/app/page.tsx +0 -143
  190. package/dist/templates/web/ui-auth-payments/template/src/app/signup/loading.tsx +0 -50
  191. package/dist/templates/web/ui-auth-payments/template/src/app/signup/page.tsx +0 -128
  192. package/dist/templates/web/ui-auth-payments/template/src/components/__tests__/example.test.tsx +0 -49
  193. package/dist/templates/web/ui-auth-payments/template/src/components/client/newsletter-signup.tsx +0 -68
  194. package/dist/templates/web/ui-auth-payments/template/src/components/providers/app-providers.tsx +0 -32
  195. package/dist/templates/web/ui-auth-payments/template/src/components/providers/theme-provider.tsx +0 -94
  196. package/dist/templates/web/ui-auth-payments/template/src/components/shared/footer.tsx +0 -36
  197. package/dist/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +0 -62
  198. package/dist/templates/web/ui-auth-payments/template/src/components/ui/badge.tsx +0 -36
  199. package/dist/templates/web/ui-auth-payments/template/src/components/ui/theme-toggle.tsx +0 -34
  200. package/dist/templates/web/ui-auth-payments/template/src/lib/actions/index.ts +0 -340
  201. package/dist/templates/web/ui-auth-payments/template/src/lib/auth-server.ts +0 -177
  202. package/dist/templates/web/ui-auth-payments/template/src/lib/env.ts +0 -49
  203. package/dist/templates/web/ui-auth-payments/template/src/lib/utils.ts +0 -140
  204. package/dist/templates/web/ui-auth-payments/template/src/test/setup.ts +0 -79
  205. package/dist/templates/web/ui-auth-payments/template/tailwind.config.js +0 -77
  206. package/dist/templates/web/ui-auth-payments/template/tsconfig.json +0 -33
  207. package/dist/templates/web/ui-auth-payments/template/vitest.config.ts +0 -17
  208. package/dist/templates/web/ui-auth-payments-audio/template/.env.example +0 -15
  209. package/dist/templates/web/ui-auth-payments-audio/template/README.md +0 -187
  210. package/dist/templates/web/ui-auth-payments-audio/template/next.config.js +0 -12
  211. package/dist/templates/web/ui-auth-payments-audio/template/package.json +0 -52
  212. package/dist/templates/web/ui-auth-payments-audio/template/postcss.config.js +0 -7
  213. package/dist/templates/web/ui-auth-payments-audio/template/src/app/auth/callback/route.ts +0 -12
  214. package/dist/templates/web/ui-auth-payments-audio/template/src/app/billing/page.tsx +0 -211
  215. package/dist/templates/web/ui-auth-payments-audio/template/src/app/checkout/page.tsx +0 -142
  216. package/dist/templates/web/ui-auth-payments-audio/template/src/app/error.tsx +0 -67
  217. package/dist/templates/web/ui-auth-payments-audio/template/src/app/globals.css +0 -42
  218. package/dist/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +0 -35
  219. package/dist/templates/web/ui-auth-payments-audio/template/src/app/loading.tsx +0 -20
  220. package/dist/templates/web/ui-auth-payments-audio/template/src/app/login/page.tsx +0 -109
  221. package/dist/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +0 -181
  222. package/dist/templates/web/ui-auth-payments-audio/template/src/app/signup/page.tsx +0 -128
  223. package/dist/templates/web/ui-auth-payments-audio/template/src/components/__tests__/example.test.tsx +0 -49
  224. package/dist/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +0 -32
  225. package/dist/templates/web/ui-auth-payments-audio/template/src/components/providers/theme-provider.tsx +0 -94
  226. package/dist/templates/web/ui-auth-payments-audio/template/src/components/shared/footer.tsx +0 -36
  227. package/dist/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +0 -62
  228. package/dist/templates/web/ui-auth-payments-audio/template/src/components/ui/badge.tsx +0 -36
  229. package/dist/templates/web/ui-auth-payments-audio/template/src/components/ui/theme-toggle.tsx +0 -34
  230. package/dist/templates/web/ui-auth-payments-audio/template/src/lib/env.ts +0 -49
  231. package/dist/templates/web/ui-auth-payments-audio/template/src/lib/utils.ts +0 -140
  232. package/dist/templates/web/ui-auth-payments-audio/template/src/test/setup.ts +0 -79
  233. package/dist/templates/web/ui-auth-payments-audio/template/tailwind.config.js +0 -77
  234. package/dist/templates/web/ui-auth-payments-audio/template/tsconfig.json +0 -33
  235. package/dist/templates/web/ui-auth-payments-audio/template/vitest.config.ts +0 -17
  236. package/dist/templates/web/ui-auth-payments-video/template/.env.example +0 -15
  237. package/dist/templates/web/ui-auth-payments-video/template/README.md +0 -190
  238. package/dist/templates/web/ui-auth-payments-video/template/next.config.js +0 -12
  239. package/dist/templates/web/ui-auth-payments-video/template/package.json +0 -52
  240. package/dist/templates/web/ui-auth-payments-video/template/postcss.config.js +0 -7
  241. package/dist/templates/web/ui-auth-payments-video/template/src/app/auth/callback/route.ts +0 -12
  242. package/dist/templates/web/ui-auth-payments-video/template/src/app/billing/page.tsx +0 -211
  243. package/dist/templates/web/ui-auth-payments-video/template/src/app/checkout/page.tsx +0 -142
  244. package/dist/templates/web/ui-auth-payments-video/template/src/app/error.tsx +0 -67
  245. package/dist/templates/web/ui-auth-payments-video/template/src/app/globals.css +0 -42
  246. package/dist/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +0 -33
  247. package/dist/templates/web/ui-auth-payments-video/template/src/app/loading.tsx +0 -20
  248. package/dist/templates/web/ui-auth-payments-video/template/src/app/login/page.tsx +0 -109
  249. package/dist/templates/web/ui-auth-payments-video/template/src/app/page.tsx +0 -187
  250. package/dist/templates/web/ui-auth-payments-video/template/src/app/signup/page.tsx +0 -128
  251. package/dist/templates/web/ui-auth-payments-video/template/src/components/__tests__/example.test.tsx +0 -49
  252. package/dist/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +0 -32
  253. package/dist/templates/web/ui-auth-payments-video/template/src/components/providers/theme-provider.tsx +0 -94
  254. package/dist/templates/web/ui-auth-payments-video/template/src/components/shared/footer.tsx +0 -36
  255. package/dist/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +0 -62
  256. package/dist/templates/web/ui-auth-payments-video/template/src/components/ui/badge.tsx +0 -36
  257. package/dist/templates/web/ui-auth-payments-video/template/src/components/ui/theme-toggle.tsx +0 -34
  258. package/dist/templates/web/ui-auth-payments-video/template/src/lib/env.ts +0 -49
  259. package/dist/templates/web/ui-auth-payments-video/template/src/lib/utils.ts +0 -140
  260. package/dist/templates/web/ui-auth-payments-video/template/src/test/setup.ts +0 -79
  261. package/dist/templates/web/ui-auth-payments-video/template/tailwind.config.js +0 -77
  262. package/dist/templates/web/ui-auth-payments-video/template/tsconfig.json +0 -33
  263. package/dist/templates/web/ui-auth-payments-video/template/vitest.config.ts +0 -17
  264. package/dist/templates/web/ui-only/template/.env.example +0 -15
  265. package/dist/templates/web/ui-only/template/.eslintrc.js +0 -8
  266. package/dist/templates/web/ui-only/template/README.md +0 -68
  267. package/dist/templates/web/ui-only/template/next.config.js +0 -12
  268. package/dist/templates/web/ui-only/template/package.json +0 -49
  269. package/dist/templates/web/ui-only/template/postcss.config.js +0 -7
  270. package/dist/templates/web/ui-only/template/src/app/auth/callback/route.ts +0 -12
  271. package/dist/templates/web/ui-only/template/src/app/checkout/page.tsx +0 -25
  272. package/dist/templates/web/ui-only/template/src/app/error.tsx +0 -67
  273. package/dist/templates/web/ui-only/template/src/app/globals.css +0 -42
  274. package/dist/templates/web/ui-only/template/src/app/layout.tsx +0 -33
  275. package/dist/templates/web/ui-only/template/src/app/loading.tsx +0 -20
  276. package/dist/templates/web/ui-only/template/src/app/login/page.tsx +0 -63
  277. package/dist/templates/web/ui-only/template/src/app/page.tsx +0 -91
  278. package/dist/templates/web/ui-only/template/src/app/signup/page.tsx +0 -79
  279. package/dist/templates/web/ui-only/template/src/components/__tests__/example.test.tsx +0 -49
  280. package/dist/templates/web/ui-only/template/src/components/providers/app-providers.tsx +0 -26
  281. package/dist/templates/web/ui-only/template/src/components/providers/theme-provider.tsx +0 -94
  282. package/dist/templates/web/ui-only/template/src/components/shared/footer.tsx +0 -36
  283. package/dist/templates/web/ui-only/template/src/components/shared/header.tsx +0 -53
  284. package/dist/templates/web/ui-only/template/src/components/ui/badge.tsx +0 -36
  285. package/dist/templates/web/ui-only/template/src/components/ui/theme-toggle.tsx +0 -34
  286. package/dist/templates/web/ui-only/template/src/lib/env.ts +0 -49
  287. package/dist/templates/web/ui-only/template/src/lib/utils.ts +0 -140
  288. package/dist/templates/web/ui-only/template/src/test/setup.ts +0 -79
  289. package/dist/templates/web/ui-only/template/tailwind.config.js +0 -77
  290. package/dist/templates/web/ui-only/template/tsconfig.json +0 -33
  291. package/dist/templates/web/ui-only/template/vitest.config.ts +0 -17
  292. package/dist/templates/web/ui-only/template.backup/.env.example +0 -15
  293. package/dist/templates/web/ui-only/template.backup.20250817/.env.example +0 -15
  294. package/dist/templates/web/ui-package-test/template/package.json +0 -42
  295. package/dist/templates/web/ui-package-test/template/src/app/page.tsx +0 -106
  296. package/dist/templates/web/ui-package-test/template/tsconfig.json +0 -41
  297. /package/{dist/templates/web/ui-auth-payments → src/templates/web/ui-auth-payments-audio}/template/middleware.ts +0 -0
  298. /package/{dist/templates/web/ui-auth-payments → src/templates/web/ui-auth-payments-audio}/template/src/app/dashboard/layout.tsx +0 -0
  299. /package/{dist/templates/web/ui-auth-payments → src/templates/web/ui-auth-payments-audio}/template/src/app/dashboard/page.tsx +0 -0
  300. /package/{dist/templates/web/ui-auth-payments → src/templates/web/ui-auth-payments-audio}/template/src/components/client/auth-status.tsx +0 -0
  301. /package/{dist/templates/web/ui-auth-payments → src/templates/web/ui-auth-payments-audio}/template/src/lib/actions/auth.ts +0 -0
  302. /package/{dist/templates/web/base → src/templates/web/ui-auth-payments-audio}/template/src/lib/auth-server.ts +0 -0
@@ -1,15 +0,0 @@
1
- # Auth Configuration
2
- NEXT_PUBLIC_AUTH_PROVIDER=supabase|firebase
3
-
4
- # Supabase
5
- NEXT_PUBLIC_SUPABASE_URL=
6
- NEXT_PUBLIC_SUPABASE_ANON_KEY=
7
-
8
- # Firebase
9
- NEXT_PUBLIC_FIREBASE_API_KEY=
10
- NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=
11
- NEXT_PUBLIC_FIREBASE_PROJECT_ID=
12
-
13
- # Payments
14
- NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=
15
- STRIPE_SECRET_KEY=
@@ -1,165 +0,0 @@
1
- # {{titleCaseName}}
2
-
3
- {{description}}
4
-
5
- This is a Next.js 15 project created with the **UI + Auth + Payments** template from `@digilogiclabs/create-saas-app`. It includes:
6
-
7
- - 🎨 **UI Components** - @digilogiclabs/saas-factory-ui v0.7.3
8
- - 🔐 **Authentication** - @digilogiclabs/saas-factory-auth v0.4.4
9
- - 💳 **Payments** - @digilogiclabs/saas-factory-payments v0.3.0
10
- - ⚡ **Next.js 15** - Latest React framework
11
- - 🎯 **TypeScript** - Full type safety
12
- - 🎨 **Tailwind CSS** - Utility-first styling
13
- - 🌙 **Dark Mode** - Built-in theme support
14
-
15
- ## Features
16
-
17
- ### Authentication
18
- - User registration and login
19
- - Protected routes
20
- - Session management
21
- - Sign out functionality
22
-
23
- ### Payments Integration
24
- - Subscription plans display
25
- - Payment form with Stripe integration
26
- - Billing history
27
- - Payment method management
28
- - Subscription management
29
-
30
- ### UI Components
31
- - Modern, accessible components
32
- - Dark/light theme support
33
- - Responsive design
34
- - TypeScript definitions
35
-
36
- ## Getting Started
37
-
38
- ### Prerequisites
39
- - Node.js 18+
40
- - npm, yarn, or pnpm
41
-
42
- ### Installation
43
-
44
- 1. Install dependencies:
45
- ```bash
46
- npm install
47
- # or
48
- yarn install
49
- # or
50
- pnpm install
51
- ```
52
-
53
- 2. Set up environment variables:
54
- ```bash
55
- cp .env.example .env.local
56
- ```
57
-
58
- Edit `.env.local` with your configuration:
59
- ```env
60
- # Authentication (choose one)
61
- NEXT_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key
62
- NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
63
- NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
64
-
65
- # OR
66
-
67
- NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
68
- NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
69
-
70
- # Payments
71
- NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_key
72
- STRIPE_SECRET_KEY=your_stripe_secret_key
73
- ```
74
-
75
- 3. Run the development server:
76
- ```bash
77
- npm run dev
78
- # or
79
- yarn dev
80
- # or
81
- pnpm dev
82
- ```
83
-
84
- Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
85
-
86
- ## Available Pages
87
-
88
- - `/` - Home page with feature showcase
89
- - `/login` - User authentication
90
- - `/signup` - User registration
91
- - `/checkout` - Subscription plans and payment
92
- - `/billing` - Subscription and billing management
93
-
94
- ## Package Integration
95
-
96
- ### UI Package (@digilogiclabs/saas-factory-ui)
97
- ```tsx
98
- import { Button, Card } from '@digilogiclabs/saas-factory-ui'
99
-
100
- <Button variant="primary">Click me</Button>
101
- <Card>Content here</Card>
102
- ```
103
-
104
- ### Auth Package (@digilogiclabs/saas-factory-auth)
105
- ```tsx
106
- import { useAuth } from '@digilogiclabs/saas-factory-auth'
107
-
108
- const { user, signIn, signOut, loading } = useAuth()
109
- ```
110
-
111
- ### Payments Package (@digilogiclabs/saas-factory-payments)
112
- ```tsx
113
- import {
114
- PaymentForm,
115
- SubscriptionPlans,
116
- SubscriptionManager
117
- } from '@digilogiclabs/saas-factory-payments'
118
-
119
- <SubscriptionPlans onPlanSelect={handlePlanSelect} />
120
- <PaymentForm onSuccess={handleSuccess} onError={handleError} />
121
- <SubscriptionManager onSubscriptionChange={handleChange} />
122
- ```
123
-
124
- ## Project Structure
125
-
126
- ```
127
- src/
128
- ├── app/ # Next.js 15 app directory
129
- │ ├── billing/ # Billing and subscription management
130
- │ ├── checkout/ # Payment and subscription selection
131
- │ ├── login/ # Authentication pages
132
- │ ├── signup/
133
- │ └── layout.tsx # Root layout with providers
134
- ├── components/
135
- │ ├── providers/ # App-wide providers (Auth, Payments, Theme)
136
- │ ├── shared/ # Shared components (Header, etc.)
137
- │ └── ui/ # UI components
138
- └── lib/ # Utilities and configurations
139
- ```
140
-
141
- ## Deployment
142
-
143
- ### Vercel (Recommended)
144
- 1. Push your code to GitHub
145
- 2. Connect your repository to Vercel
146
- 3. Add environment variables in Vercel dashboard
147
- 4. Deploy
148
-
149
- ### Other Platforms
150
- This is a standard Next.js application and can be deployed to any platform that supports Node.js.
151
-
152
- ## Learn More
153
-
154
- - [Next.js Documentation](https://nextjs.org/docs)
155
- - [Digi Logic Labs Documentation](https://docs.digilogiclabs.com)
156
- - [SaaS Factory UI Components](https://ui.digilogiclabs.com)
157
- - [SaaS Factory Auth Guide](https://auth.digilogiclabs.com)
158
- - [SaaS Factory Payments Guide](https://payments.digilogiclabs.com)
159
-
160
- ## Support
161
-
162
- - 📚 [Documentation](https://docs.digilogiclabs.com)
163
- - 💬 [Discord Community](https://discord.gg/digilogiclabs)
164
- - 🐛 [Report Issues](https://github.com/DigiLogicLabs/create-saas-app/issues)
165
-
@@ -1,12 +0,0 @@
1
- /** @type {import('next').NextConfig} */
2
- const nextConfig = {
3
- images: {
4
- domains: ['localhost'],
5
- },
6
- env: {
7
- CUSTOM_KEY: process.env.CUSTOM_KEY,
8
- },
9
- }
10
-
11
- module.exports = nextConfig
12
-
@@ -1,52 +0,0 @@
1
- {
2
- "name": "{{packageName}}",
3
- "version": "0.1.0",
4
- "description": "{{description}} (with UI Package v0.11.1 + Auth v1.0.0 + Payments)",
5
- "private": true,
6
- "scripts": {
7
- "dev": "next dev --turbo",
8
- "build": "next build",
9
- "start": "next start",
10
- "lint": "next lint",
11
- "type-check": "tsc --noEmit",
12
- "test": "vitest",
13
- "test:ui": "vitest --ui",
14
- "test:run": "vitest run"
15
- },
16
- "dependencies": {
17
- "next": "^15.0.0",
18
- "react": "^19.0.0",
19
- "react-dom": "^19.0.0",
20
- "@digilogiclabs/saas-factory-ui": "^0.11.1",
21
- "@digilogiclabs/saas-factory-auth": "^1.0.0",
22
- "@digilogiclabs/saas-factory-payments": "^1.0.0",
23
- "stripe": "^14.0.0",
24
- "tailwindcss": "^3.3.0",
25
- "autoprefixer": "^10.4.16",
26
- "postcss": "^8.4.31",
27
- "clsx": "^2.0.0",
28
- "class-variance-authority": "^0.7.0",
29
- "tailwind-merge": "^2.0.0",
30
- "next-themes": "^0.2.1",
31
- "lucide-react": "^0.542.0",
32
- "zod": "^3.22.4"
33
- },
34
- "devDependencies": {
35
- "typescript": "^5.0.0",
36
- "@types/node": "^20.0.0",
37
- "@types/react": "^19.0.0",
38
- "@types/react-dom": "^19.0.0",
39
- "eslint": "^8.0.0",
40
- "eslint-config-next": "^15.0.0",
41
- "prettier": "^3.0.0",
42
- "vitest": "^1.0.0",
43
- "@vitejs/plugin-react": "^4.0.0",
44
- "@testing-library/react": "^14.0.0",
45
- "@testing-library/jest-dom": "^6.0.0",
46
- "@testing-library/user-event": "^14.0.0",
47
- "jsdom": "^24.0.0"
48
- },
49
- "engines": {
50
- "node": ">=18.0.0"
51
- }
52
- }
@@ -1,7 +0,0 @@
1
- module.exports = {
2
- plugins: {
3
- tailwindcss: {},
4
- autoprefixer: {},
5
- },
6
- }
7
-
@@ -1,12 +0,0 @@
1
- import { NextResponse } from 'next/server';
2
- import type { NextRequest } from 'next/server';
3
-
4
- export async function GET(request: NextRequest) {
5
- const requestUrl = new URL(request.url);
6
-
7
- // Placeholder auth callback - requires @digilogiclabs/saas-factory-auth package
8
- console.log('Auth callback triggered - requires auth package for full functionality');
9
-
10
- // URL to redirect to after sign in process completes
11
- return NextResponse.redirect(requestUrl.origin);
12
- }
@@ -1,211 +0,0 @@
1
- 'use client';
2
-
3
- import React from 'react';
4
- import { usePayments, formatCurrency, formatDate } from '@digilogiclabs/saas-factory-payments';
5
- import { Button, Card } from '@digilogiclabs/saas-factory-ui';
6
-
7
- export default function BillingPage() {
8
- const { loading } = usePayments();
9
-
10
- const handleSubscriptionChange = () => {
11
- console.log('Subscription change requested');
12
- // Handle subscription changes (upgrade, downgrade, cancel, resume)
13
- };
14
-
15
- const handlePaymentMethodUpdate = () => {
16
- console.log('Payment method update requested');
17
- // Handle payment method updates (add, edit, delete, set default)
18
- };
19
-
20
- const handleInvoiceDownload = (invoiceId: string) => {
21
- console.log('Download invoice:', invoiceId);
22
- // Handle invoice download
23
- };
24
-
25
- // Mock current subscription data - in real app this would come from your backend
26
- const currentSubscription = {
27
- plan: 'Pro Plan',
28
- price: 1999,
29
- interval: 'month',
30
- status: 'active',
31
- nextBilling: new Date(Date.now() + 15 * 24 * 60 * 60 * 1000)
32
- };
33
-
34
- // Mock payment methods - in real app this would come from your backend
35
- const paymentMethods = [
36
- {
37
- id: 'pm_123',
38
- type: 'card',
39
- last4: '4242',
40
- brand: 'visa',
41
- expiryMonth: 12,
42
- expiryYear: 2025,
43
- isDefault: true
44
- },
45
- {
46
- id: 'pm_456',
47
- type: 'card',
48
- last4: '0005',
49
- brand: 'mastercard',
50
- expiryMonth: 8,
51
- expiryYear: 2026,
52
- isDefault: false
53
- }
54
- ];
55
-
56
- // Mock billing history - in real app this would come from your backend
57
- const invoices = [
58
- {
59
- id: 'inv_123',
60
- amount: 1999,
61
- currency: 'usd',
62
- status: 'paid',
63
- date: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000),
64
- description: 'Pro Plan - Monthly'
65
- },
66
- {
67
- id: 'inv_456',
68
- amount: 1999,
69
- currency: 'usd',
70
- status: 'paid',
71
- date: new Date(Date.now() - 60 * 24 * 60 * 60 * 1000),
72
- description: 'Pro Plan - Monthly'
73
- },
74
- {
75
- id: 'inv_789',
76
- amount: 999,
77
- currency: 'usd',
78
- status: 'paid',
79
- date: new Date(Date.now() - 90 * 24 * 60 * 60 * 1000),
80
- description: 'Basic Plan - Monthly'
81
- }
82
- ];
83
-
84
- return (
85
- <div className="min-h-screen bg-gray-100 py-8">
86
- <div className="max-w-7xl mx-auto px-4">
87
- <div className="mb-8">
88
- <h1 className="text-4xl font-bold text-gray-900 mb-2">Billing & Subscription</h1>
89
- <p className="text-xl text-gray-600">Manage your subscription and billing information</p>
90
- </div>
91
-
92
- <div className="grid grid-cols-1 lg:grid-cols-2 gap-8 mb-8">
93
- {/* Current Subscription */}
94
- <Card className="p-6">
95
- <h2 className="text-2xl font-bold mb-6">Current Subscription</h2>
96
- <div className="space-y-4">
97
- <div>
98
- <h3 className="font-semibold">{currentSubscription.plan}</h3>
99
- <p className="text-2xl font-bold">
100
- {formatCurrency(currentSubscription.price)}
101
- <span className="text-sm font-normal">/{currentSubscription.interval}</span>
102
- </p>
103
- </div>
104
- <div>
105
- <p className="text-sm text-gray-600">Status</p>
106
- <span className="inline-block px-2 py-1 bg-green-100 text-green-800 rounded text-sm">
107
- {currentSubscription.status}
108
- </span>
109
- </div>
110
- <div>
111
- <p className="text-sm text-gray-600">Next billing date</p>
112
- <p>{formatDate(currentSubscription.nextBilling)}</p>
113
- </div>
114
- <Button
115
- onClick={handleSubscriptionChange}
116
- disabled={loading}
117
- variant="outline"
118
- className="w-full"
119
- >
120
- Change Plan
121
- </Button>
122
- </div>
123
- </Card>
124
-
125
- {/* Payment Methods */}
126
- <Card className="p-6">
127
- <h2 className="text-2xl font-bold mb-6">Payment Methods</h2>
128
- <div className="space-y-4">
129
- {paymentMethods.map((method) => (
130
- <div key={method.id} className="flex items-center justify-between p-3 border rounded-lg">
131
- <div className="flex items-center">
132
- <div className="w-8 h-8 bg-blue-100 rounded flex items-center justify-center mr-3">
133
- 💳
134
- </div>
135
- <div>
136
- <p className="font-medium">
137
- {method.brand.toUpperCase()} •••• {method.last4}
138
- </p>
139
- <p className="text-sm text-gray-600">
140
- Expires {method.expiryMonth}/{method.expiryYear}
141
- {method.isDefault && <span className="ml-2 text-blue-600">(Default)</span>}
142
- </p>
143
- </div>
144
- </div>
145
- <Button
146
- onClick={handlePaymentMethodUpdate}
147
- disabled={loading}
148
- variant="outline"
149
- size="sm"
150
- >
151
- Edit
152
- </Button>
153
- </div>
154
- ))}
155
- <Button
156
- onClick={handlePaymentMethodUpdate}
157
- disabled={loading}
158
- variant="outline"
159
- className="w-full"
160
- >
161
- Add Payment Method
162
- </Button>
163
- </div>
164
- </Card>
165
- </div>
166
-
167
- {/* Billing History */}
168
- <Card className="p-6">
169
- <h2 className="text-2xl font-bold mb-6">Billing History</h2>
170
- <div className="overflow-x-auto">
171
- <table className="w-full">
172
- <thead>
173
- <tr className="border-b">
174
- <th className="text-left py-2">Date</th>
175
- <th className="text-left py-2">Description</th>
176
- <th className="text-left py-2">Amount</th>
177
- <th className="text-left py-2">Status</th>
178
- <th className="text-left py-2">Actions</th>
179
- </tr>
180
- </thead>
181
- <tbody>
182
- {invoices.map((invoice) => (
183
- <tr key={invoice.id} className="border-b">
184
- <td className="py-3">{formatDate(invoice.date)}</td>
185
- <td className="py-3">{invoice.description}</td>
186
- <td className="py-3">{formatCurrency(invoice.amount)}</td>
187
- <td className="py-3">
188
- <span className="inline-block px-2 py-1 bg-green-100 text-green-800 rounded text-sm">
189
- {invoice.status}
190
- </span>
191
- </td>
192
- <td className="py-3">
193
- <Button
194
- onClick={() => handleInvoiceDownload(invoice.id)}
195
- variant="outline"
196
- size="sm"
197
- >
198
- Download
199
- </Button>
200
- </td>
201
- </tr>
202
- ))}
203
- </tbody>
204
- </table>
205
- </div>
206
- </Card>
207
- </div>
208
- </div>
209
- );
210
- }
211
-
@@ -1,142 +0,0 @@
1
- 'use client';
2
-
3
- import React from 'react';
4
- import { usePayments, formatCurrency } from '@digilogiclabs/saas-factory-payments';
5
- import { Button, Card } from '@digilogiclabs/saas-factory-ui';
6
-
7
- export default function CheckoutPage() {
8
- const { loading } = usePayments();
9
-
10
- const handlePlanSelect = (planId: string) => {
11
- console.log('Plan selected:', planId);
12
- // Handle plan selection - redirect to payment processing
13
- };
14
-
15
- const handlePayment = () => {
16
- console.log('Processing payment...');
17
- // Handle payment processing
18
- };
19
-
20
- // Example pricing plans - in real app these would come from your backend/Stripe
21
- const plans = [
22
- {
23
- id: 'basic',
24
- name: 'Basic Plan',
25
- price: 999, // in cents
26
- interval: 'month',
27
- features: ['Feature 1', 'Feature 2', 'Feature 3'],
28
- stripePriceId: 'price_basic_monthly'
29
- },
30
- {
31
- id: 'pro',
32
- name: 'Pro Plan',
33
- price: 1999, // in cents
34
- interval: 'month',
35
- features: ['All Basic features', 'Feature 4', 'Feature 5', 'Priority support'],
36
- popular: true,
37
- stripePriceId: 'price_pro_monthly'
38
- },
39
- {
40
- id: 'enterprise',
41
- name: 'Enterprise Plan',
42
- price: 4999, // in cents
43
- interval: 'month',
44
- features: ['All Pro features', 'Custom integrations', 'Dedicated support', 'SLA guarantee'],
45
- stripePriceId: 'price_enterprise_monthly'
46
- }
47
- ];
48
-
49
- return (
50
- <div className="min-h-screen bg-gray-100 py-8">
51
- <div className="max-w-6xl mx-auto px-4">
52
- <div className="text-center mb-12">
53
- <h1 className="text-4xl font-bold text-gray-900 mb-4">Choose Your Plan</h1>
54
- <p className="text-xl text-gray-600">Select the perfect plan for your needs</p>
55
- </div>
56
-
57
- {/* Subscription Plans */}
58
- <div className="grid md:grid-cols-3 gap-6 mb-8">
59
- {plans.map((plan) => (
60
- <Card key={plan.id} className={`p-6 relative ${plan.popular ? 'ring-2 ring-blue-500' : ''}`}>
61
- {plan.popular && (
62
- <div className="absolute -top-3 left-1/2 transform -translate-x-1/2">
63
- <span className="bg-blue-500 text-white px-3 py-1 rounded-full text-sm font-medium">
64
- Most Popular
65
- </span>
66
- </div>
67
- )}
68
- <h3 className="text-xl font-bold mb-2">{plan.name}</h3>
69
- <div className="text-3xl font-bold mb-4">
70
- {formatCurrency(plan.price)}
71
- <span className="text-sm font-normal">/{plan.interval}</span>
72
- </div>
73
- <ul className="mb-6 space-y-2">
74
- {plan.features.map((feature, index) => (
75
- <li key={index} className="flex items-center">
76
- <span className="text-green-500 mr-2">✓</span>
77
- {feature}
78
- </li>
79
- ))}
80
- </ul>
81
- <Button
82
- onClick={() => handlePlanSelect(plan.id)}
83
- disabled={loading}
84
- className="w-full"
85
- variant={plan.popular ? "default" : "outline"}
86
- >
87
- {loading ? 'Processing...' : 'Select Plan'}
88
- </Button>
89
- </Card>
90
- ))}
91
- </div>
92
-
93
- {/* Payment Form */}
94
- <Card className="p-6 max-w-md mx-auto">
95
- <h2 className="text-2xl font-bold mb-6">Payment Details</h2>
96
- <div className="space-y-4">
97
- <div>
98
- <label className="block text-sm font-medium mb-2">Card Number</label>
99
- <input
100
- type="text"
101
- placeholder="1234 5678 9012 3456"
102
- className="w-full p-3 border rounded-lg"
103
- disabled
104
- />
105
- </div>
106
- <div className="grid grid-cols-2 gap-4">
107
- <div>
108
- <label className="block text-sm font-medium mb-2">Expiry Date</label>
109
- <input
110
- type="text"
111
- placeholder="MM/YY"
112
- className="w-full p-3 border rounded-lg"
113
- disabled
114
- />
115
- </div>
116
- <div>
117
- <label className="block text-sm font-medium mb-2">CVC</label>
118
- <input
119
- type="text"
120
- placeholder="123"
121
- className="w-full p-3 border rounded-lg"
122
- disabled
123
- />
124
- </div>
125
- </div>
126
- <Button
127
- onClick={handlePayment}
128
- disabled={loading}
129
- className="w-full"
130
- >
131
- {loading ? 'Processing...' : 'Complete Payment'}
132
- </Button>
133
- <p className="text-sm text-gray-600 text-center">
134
- This is a demo. Payment processing requires Stripe integration.
135
- </p>
136
- </div>
137
- </Card>
138
- </div>
139
- </div>
140
- );
141
- }
142
-
@@ -1,67 +0,0 @@
1
- 'use client'
2
-
3
- import { useEffect } from 'react'
4
- import { Button, Card } from '@digilogiclabs/saas-factory-ui'
5
- import { RefreshCw, Home, AlertCircle } from 'lucide-react'
6
-
7
- interface ErrorProps {
8
- error: Error & { digest?: string }
9
- reset: () => void
10
- }
11
-
12
- export default function Error({ error, reset }: ErrorProps) {
13
- useEffect(() => {
14
- // Log the error to an error reporting service
15
- console.error('Application error:', error)
16
- }, [error])
17
-
18
- return (
19
- <div className="min-h-screen bg-gray-50 dark:bg-gray-900 flex items-center justify-center p-4">
20
- <Card className="w-full max-w-md p-8 text-center">
21
- <div className="mb-6">
22
- <div className="mx-auto w-16 h-16 bg-red-100 dark:bg-red-900 rounded-full flex items-center justify-center mb-4">
23
- <AlertCircle className="h-8 w-8 text-red-600 dark:text-red-400" />
24
- </div>
25
- <h1 className="text-2xl font-bold text-gray-900 dark:text-white mb-2">
26
- Something went wrong
27
- </h1>
28
- <p className="text-gray-600 dark:text-gray-300 mb-6">
29
- We apologize for the inconvenience. Please try again or return to the home page.
30
- </p>
31
- </div>
32
-
33
- <div className="space-y-3">
34
- <Button
35
- onClick={reset}
36
- className="w-full"
37
- variant="default"
38
- >
39
- <RefreshCw className="w-4 h-4 mr-2" />
40
- Try Again
41
- </Button>
42
-
43
- <Button
44
- onClick={() => window.location.href = '/'}
45
- variant="outline"
46
- className="w-full"
47
- >
48
- <Home className="w-4 h-4 mr-2" />
49
- Go Home
50
- </Button>
51
- </div>
52
-
53
- {process.env.NODE_ENV === 'development' && (
54
- <details className="mt-6 text-left">
55
- <summary className="text-sm font-medium text-gray-500 cursor-pointer hover:text-gray-700 dark:hover:text-gray-300">
56
- Error Details (Development)
57
- </summary>
58
- <pre className="mt-2 text-xs bg-gray-100 dark:bg-gray-800 p-3 rounded-md overflow-auto">
59
- {error.message}
60
- {error.stack}
61
- </pre>
62
- </details>
63
- )}
64
- </Card>
65
- </div>
66
- )
67
- }