@digilogiclabs/create-saas-app 2.11.0 → 2.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (413) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/cli/index.js +1 -1
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/generators/template-generator.d.ts +0 -2
  6. package/dist/generators/template-generator.d.ts.map +1 -1
  7. package/dist/generators/template-generator.js +18 -17
  8. package/dist/generators/template-generator.js.map +1 -1
  9. package/dist/templates/mobile/base/template/App.tsx +7 -4
  10. package/dist/templates/mobile/base/template/app/checkout.tsx +5 -2
  11. package/dist/templates/mobile/ui-auth-payments/template/app/(tabs)/_layout.tsx +6 -2
  12. package/dist/templates/mobile/ui-auth-payments/template/app/(tabs)/billing.tsx +7 -3
  13. package/dist/templates/mobile/ui-auth-payments/template/app/(tabs)/index.tsx +5 -2
  14. package/dist/templates/mobile/ui-auth-payments/template/app/(tabs)/profile.tsx +7 -2
  15. package/dist/templates/mobile/ui-auth-payments/template/app/_layout.tsx +2 -4
  16. package/dist/templates/mobile/ui-auth-payments/template/app/auth/login.tsx +6 -3
  17. package/dist/templates/mobile/ui-auth-payments/template/app/auth/signup.tsx +6 -3
  18. package/dist/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/_layout.tsx +6 -2
  19. package/dist/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/billing.tsx +7 -3
  20. package/dist/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/index.tsx +5 -2
  21. package/dist/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/profile.tsx +7 -2
  22. package/dist/templates/mobile/ui-auth-payments-ai/template/app/_layout.tsx +2 -4
  23. package/dist/templates/mobile/ui-auth-payments-ai/template/app/auth/login.tsx +6 -3
  24. package/dist/templates/mobile/ui-auth-payments-ai/template/app/auth/signup.tsx +6 -3
  25. package/dist/templates/shared/admin/web/src/components/admin-nav.tsx +3 -3
  26. package/dist/templates/shared/auth/supabase/web/src/lib/auth-session.ts +36 -16
  27. package/dist/templates/shared/auth/supabase/web/src/middleware.ts +6 -0
  28. package/dist/templates/shared/config/web/next.config.mjs +0 -1
  29. package/dist/templates/shared/cookie-consent/web/components/cookie-consent.tsx +5 -5
  30. package/dist/templates/shared/design/web/src/components/ui/button.tsx +56 -0
  31. package/dist/templates/shared/email/web/src/lib/email/client.ts +1 -1
  32. package/dist/templates/shared/error-pages/web/src/app/error.tsx +13 -11
  33. package/dist/templates/shared/error-pages/web/src/app/global-error.tsx +2 -0
  34. package/dist/templates/shared/error-pages/web/src/app/not-found.tsx +6 -6
  35. package/dist/templates/shared/legal/web/src/app/(legal)/privacy/page.tsx +4 -4
  36. package/dist/templates/shared/legal/web/src/app/(legal)/terms/page.tsx +4 -4
  37. package/dist/templates/shared/loading/web/components/skeleton.tsx +4 -4
  38. package/dist/templates/shared/mock/web/.env.local +55 -0
  39. package/dist/templates/shared/mock/web/src/components/mock-auth-provider.tsx +72 -0
  40. package/dist/templates/shared/mock/web/src/components/mock-banner.tsx +29 -0
  41. package/dist/templates/shared/mock/web/src/lib/mock.ts +147 -0
  42. package/dist/templates/shared/payments/web/src/app/api/webhooks/stripe/route.ts +10 -4
  43. package/dist/templates/shared/redis/web/src/lib/redis.ts +1 -1
  44. package/dist/templates/web/ai-platform/template/package.json +0 -1
  45. package/dist/templates/web/ai-platform/template/src/app/chat/page.tsx +5 -2
  46. package/dist/templates/web/ai-platform/template/src/app/playground/page.tsx +5 -2
  47. package/dist/templates/web/ai-platform/template/src/components/providers/app-providers.tsx +2 -5
  48. package/dist/templates/web/base/template/eslint.config.mjs +14 -0
  49. package/dist/templates/web/base/template/src/app/auth/callback/route.ts +1 -1
  50. package/dist/templates/web/base/template/src/app/checkout/page.tsx +76 -103
  51. package/dist/templates/web/base/template/src/app/dashboard/page.tsx +145 -329
  52. package/dist/templates/web/base/template/src/app/layout.tsx +40 -38
  53. package/dist/templates/web/base/template/src/app/login/page.tsx +116 -66
  54. package/dist/templates/web/base/template/src/app/page.tsx +97 -193
  55. package/dist/templates/web/base/template/src/app/settings/page.tsx +154 -0
  56. package/dist/templates/web/base/template/src/app/signup/page.tsx +117 -66
  57. package/dist/templates/web/base/template/src/components/providers/app-providers.tsx +8 -3
  58. package/dist/templates/web/base/template/src/components/shared/header.tsx +229 -63
  59. package/dist/templates/web/iot-dashboard/template/package.json +0 -1
  60. package/dist/templates/web/iot-dashboard/template/src/components/providers/app-providers.tsx +2 -5
  61. package/dist/templates/web/marketplace/template/package.json +0 -1
  62. package/dist/templates/web/marketplace/template/src/components/providers/app-providers.tsx +2 -5
  63. package/dist/templates/web/micro-saas/template/package.json +0 -1
  64. package/dist/templates/web/micro-saas/template/src/components/providers/app-providers.tsx +2 -5
  65. package/dist/templates/web/ui-auth/template/eslint.config.mjs +14 -0
  66. package/dist/templates/web/ui-auth/template/src/app/checkout/page.tsx +3 -3
  67. package/dist/templates/web/ui-auth/template/src/app/dev-setup/page.tsx +81 -91
  68. package/dist/templates/web/ui-auth/template/src/app/layout.tsx +38 -36
  69. package/dist/templates/web/ui-auth/template/src/app/login/page.tsx +22 -45
  70. package/dist/templates/web/ui-auth/template/src/app/page.tsx +106 -306
  71. package/dist/templates/web/ui-auth/template/src/app/setup/page.tsx +387 -402
  72. package/dist/templates/web/ui-auth/template/src/app/signup/page.tsx +24 -47
  73. package/dist/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +8 -3
  74. package/dist/templates/web/ui-auth/template/src/components/shared/header.tsx +229 -94
  75. package/dist/templates/web/ui-auth-ai/template/src/app/layout.tsx +38 -45
  76. package/dist/templates/web/ui-auth-ai/template/src/app/login/page.tsx +86 -0
  77. package/dist/templates/web/ui-auth-ai/template/src/app/page.tsx +107 -193
  78. package/dist/templates/web/ui-auth-ai/template/src/app/signup/page.tsx +105 -0
  79. package/dist/templates/web/ui-auth-ai/template/src/components/ai/audio-generator.tsx +144 -140
  80. package/dist/templates/web/ui-auth-ai/template/src/components/ai/video-generator.tsx +156 -157
  81. package/dist/templates/web/ui-auth-ai/template/src/components/auth/login-form.tsx +7 -3
  82. package/dist/templates/web/ui-auth-ai/template/src/components/providers/app-providers.tsx +25 -0
  83. package/dist/templates/web/ui-auth-ai/template/src/components/shared/footer.tsx +36 -0
  84. package/dist/templates/web/ui-auth-ai/template/src/components/shared/header.tsx +228 -0
  85. package/dist/templates/web/ui-auth-ai/template/src/components/ui/button.tsx +5 -5
  86. package/dist/templates/web/ui-auth-ai/template/src/components/ui/input.tsx +1 -1
  87. package/dist/templates/web/ui-auth-ai/template/src/components/ui/select.tsx +1 -1
  88. package/dist/templates/web/ui-auth-ai/template/src/components/ui/textarea.tsx +1 -1
  89. package/dist/templates/web/ui-auth-ai/template/src/components/ui/theme-toggle.tsx +34 -0
  90. package/dist/templates/web/ui-auth-ai/template/src/lib/supabase.ts +6 -4
  91. package/dist/templates/web/ui-auth-ai/template/src/providers/auth-provider.tsx +7 -5
  92. package/dist/templates/web/ui-auth-payments/template/src/app/billing/page.tsx +63 -192
  93. package/dist/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +104 -296
  94. package/dist/templates/web/ui-auth-payments/template/src/app/dashboard/page.tsx +27 -27
  95. package/dist/templates/web/ui-auth-payments/template/src/app/dev-setup/page.tsx +70 -81
  96. package/dist/templates/web/ui-auth-payments/template/src/app/layout.tsx +38 -36
  97. package/dist/templates/web/ui-auth-payments/template/src/app/login/loading.tsx +9 -9
  98. package/dist/templates/web/ui-auth-payments/template/src/app/login/page.tsx +4 -104
  99. package/dist/templates/web/ui-auth-payments/template/src/app/page.tsx +69 -337
  100. package/dist/templates/web/ui-auth-payments/template/src/app/setup/page.tsx +55 -68
  101. package/dist/templates/web/ui-auth-payments/template/src/app/signup/loading.tsx +13 -13
  102. package/dist/templates/web/ui-auth-payments/template/src/app/signup/page.tsx +4 -123
  103. package/dist/templates/web/ui-auth-payments/template/src/components/client/auth-status.tsx +37 -52
  104. package/dist/templates/web/ui-auth-payments/template/src/components/client/login-form.tsx +49 -103
  105. package/dist/templates/web/ui-auth-payments/template/src/components/client/newsletter-signup.tsx +4 -4
  106. package/dist/templates/web/ui-auth-payments/template/src/components/client/signup-form.tsx +60 -140
  107. package/dist/templates/web/ui-auth-payments/template/src/components/providers/app-providers.tsx +25 -28
  108. package/dist/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +229 -230
  109. package/dist/templates/web/ui-auth-payments/template/src/lib/actions/auth.ts +245 -245
  110. package/dist/templates/web/ui-auth-payments/template/src/lib/actions/index.ts +339 -339
  111. package/dist/templates/web/ui-auth-payments-ai/template/src/app/ai/page.tsx +305 -309
  112. package/dist/templates/web/ui-auth-payments-ai/template/src/app/billing/page.tsx +62 -312
  113. package/dist/templates/web/ui-auth-payments-ai/template/src/app/checkout/page.tsx +109 -125
  114. package/dist/templates/web/ui-auth-payments-ai/template/src/app/dashboard/page.tsx +27 -27
  115. package/dist/templates/web/ui-auth-payments-ai/template/src/app/dev-setup/page.tsx +68 -83
  116. package/dist/templates/web/ui-auth-payments-ai/template/src/app/layout.tsx +40 -38
  117. package/dist/templates/web/ui-auth-payments-ai/template/src/app/onboarding/page.tsx +20 -20
  118. package/dist/templates/web/ui-auth-payments-ai/template/src/app/page.tsx +140 -394
  119. package/dist/templates/web/ui-auth-payments-ai/template/src/app/settings/page.tsx +28 -27
  120. package/dist/templates/web/ui-auth-payments-ai/template/src/app/setup/page.tsx +51 -66
  121. package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/auth-status.tsx +37 -52
  122. package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/login-form.tsx +50 -79
  123. package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/signup-form.tsx +58 -111
  124. package/dist/templates/web/ui-auth-payments-ai/template/src/components/providers/app-providers.tsx +8 -3
  125. package/dist/templates/web/ui-auth-payments-ai/template/src/components/shared/header.tsx +229 -252
  126. package/dist/templates/web/ui-auth-payments-ai/template/src/lib/actions/auth.ts +245 -245
  127. package/dist/templates/web/ui-auth-payments-audio/template/src/app/billing/page.tsx +63 -192
  128. package/dist/templates/web/ui-auth-payments-audio/template/src/app/checkout/page.tsx +109 -125
  129. package/dist/templates/web/ui-auth-payments-audio/template/src/app/dashboard/page.tsx +27 -27
  130. package/dist/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +40 -38
  131. package/dist/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +122 -385
  132. package/dist/templates/web/ui-auth-payments-audio/template/src/app/setup/page.tsx +340 -344
  133. package/dist/templates/web/ui-auth-payments-audio/template/src/components/client/auth-status.tsx +37 -52
  134. package/dist/templates/web/ui-auth-payments-audio/template/src/components/client/login-form.tsx +49 -103
  135. package/dist/templates/web/ui-auth-payments-audio/template/src/components/client/signup-form.tsx +60 -140
  136. package/dist/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +8 -3
  137. package/dist/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +229 -252
  138. package/dist/templates/web/ui-auth-payments-audio/template/src/lib/actions/auth.ts +3 -3
  139. package/dist/templates/web/ui-auth-payments-video/template/src/app/billing/page.tsx +63 -192
  140. package/dist/templates/web/ui-auth-payments-video/template/src/app/checkout/page.tsx +109 -125
  141. package/dist/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +38 -36
  142. package/dist/templates/web/ui-auth-payments-video/template/src/app/login/page.tsx +9 -109
  143. package/dist/templates/web/ui-auth-payments-video/template/src/app/page.tsx +132 -392
  144. package/dist/templates/web/ui-auth-payments-video/template/src/app/setup/page.tsx +346 -350
  145. package/dist/templates/web/ui-auth-payments-video/template/src/app/signup/page.tsx +9 -128
  146. package/dist/templates/web/ui-auth-payments-video/template/src/components/client/login-form.tsx +90 -0
  147. package/dist/templates/web/ui-auth-payments-video/template/src/components/client/signup-form.tsx +105 -0
  148. package/dist/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +8 -3
  149. package/dist/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +229 -246
  150. package/dist/templates/web/ui-only/template/eslint.config.mjs +14 -0
  151. package/dist/templates/web/ui-only/template/src/app/checkout/page.tsx +2 -2
  152. package/dist/templates/web/ui-only/template/src/app/login/page.tsx +69 -63
  153. package/dist/templates/web/ui-only/template/src/app/page.tsx +69 -91
  154. package/dist/templates/web/ui-only/template/src/app/signup/page.tsx +94 -79
  155. package/dist/templates/web/ui-only/template/src/components/providers/app-providers.tsx +1 -6
  156. package/dist/templates/web/ui-only/template/src/components/shared/header.tsx +90 -53
  157. package/dist/templates/web/ui-package-test/template/package.json +19 -23
  158. package/dist/templates/web/ui-package-test/template/postcss.config.mjs +8 -0
  159. package/dist/templates/web/ui-package-test/template/src/app/globals.css +88 -0
  160. package/dist/templates/web/ui-package-test/template/src/app/layout.tsx +27 -0
  161. package/dist/templates/web/ui-package-test/template/src/app/page.tsx +46 -106
  162. package/package.json +1 -1
  163. package/src/templates/mobile/base/template/App.tsx +7 -4
  164. package/src/templates/mobile/base/template/app/checkout.tsx +5 -2
  165. package/src/templates/mobile/ui-auth-payments/template/app/(tabs)/_layout.tsx +6 -2
  166. package/src/templates/mobile/ui-auth-payments/template/app/(tabs)/billing.tsx +7 -3
  167. package/src/templates/mobile/ui-auth-payments/template/app/(tabs)/index.tsx +5 -2
  168. package/src/templates/mobile/ui-auth-payments/template/app/(tabs)/profile.tsx +7 -2
  169. package/src/templates/mobile/ui-auth-payments/template/app/_layout.tsx +2 -4
  170. package/src/templates/mobile/ui-auth-payments/template/app/auth/login.tsx +6 -3
  171. package/src/templates/mobile/ui-auth-payments/template/app/auth/signup.tsx +6 -3
  172. package/src/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/_layout.tsx +6 -2
  173. package/src/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/billing.tsx +7 -3
  174. package/src/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/index.tsx +5 -2
  175. package/src/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/profile.tsx +7 -2
  176. package/src/templates/mobile/ui-auth-payments-ai/template/app/_layout.tsx +2 -4
  177. package/src/templates/mobile/ui-auth-payments-ai/template/app/auth/login.tsx +6 -3
  178. package/src/templates/mobile/ui-auth-payments-ai/template/app/auth/signup.tsx +6 -3
  179. package/src/templates/shared/admin/web/src/components/admin-nav.tsx +3 -3
  180. package/src/templates/shared/auth/supabase/web/src/lib/auth-session.ts +36 -16
  181. package/src/templates/shared/auth/supabase/web/src/middleware.ts +6 -0
  182. package/src/templates/shared/config/web/next.config.mjs +0 -1
  183. package/src/templates/shared/cookie-consent/web/components/cookie-consent.tsx +5 -5
  184. package/src/templates/shared/design/web/src/components/ui/button.tsx +56 -0
  185. package/src/templates/shared/email/web/src/lib/email/client.ts +1 -1
  186. package/src/templates/shared/error-pages/web/src/app/error.tsx +13 -11
  187. package/src/templates/shared/error-pages/web/src/app/global-error.tsx +2 -0
  188. package/src/templates/shared/error-pages/web/src/app/not-found.tsx +6 -6
  189. package/src/templates/shared/legal/web/src/app/(legal)/privacy/page.tsx +4 -4
  190. package/src/templates/shared/legal/web/src/app/(legal)/terms/page.tsx +4 -4
  191. package/src/templates/shared/loading/web/components/skeleton.tsx +4 -4
  192. package/src/templates/shared/mock/web/.env.local +55 -0
  193. package/src/templates/shared/mock/web/src/components/mock-auth-provider.tsx +72 -0
  194. package/src/templates/shared/mock/web/src/components/mock-banner.tsx +29 -0
  195. package/src/templates/shared/mock/web/src/lib/mock.ts +147 -0
  196. package/src/templates/shared/payments/web/src/app/api/webhooks/stripe/route.ts +10 -4
  197. package/src/templates/shared/redis/web/src/lib/redis.ts +1 -1
  198. package/src/templates/web/ai-platform/template/package.json +0 -1
  199. package/src/templates/web/ai-platform/template/src/app/chat/page.tsx +5 -2
  200. package/src/templates/web/ai-platform/template/src/app/playground/page.tsx +5 -2
  201. package/src/templates/web/ai-platform/template/src/components/providers/app-providers.tsx +2 -5
  202. package/src/templates/web/base/template/eslint.config.mjs +14 -0
  203. package/src/templates/web/base/template/src/app/auth/callback/route.ts +1 -1
  204. package/src/templates/web/base/template/src/app/checkout/page.tsx +76 -103
  205. package/src/templates/web/base/template/src/app/dashboard/page.tsx +145 -329
  206. package/src/templates/web/base/template/src/app/layout.tsx +40 -38
  207. package/src/templates/web/base/template/src/app/login/page.tsx +116 -66
  208. package/src/templates/web/base/template/src/app/page.tsx +97 -193
  209. package/src/templates/web/base/template/src/app/settings/page.tsx +154 -0
  210. package/src/templates/web/base/template/src/app/signup/page.tsx +117 -66
  211. package/src/templates/web/base/template/src/components/providers/app-providers.tsx +8 -3
  212. package/src/templates/web/base/template/src/components/shared/header.tsx +229 -63
  213. package/src/templates/web/iot-dashboard/template/package.json +0 -1
  214. package/src/templates/web/iot-dashboard/template/src/components/providers/app-providers.tsx +2 -5
  215. package/src/templates/web/marketplace/template/package.json +0 -1
  216. package/src/templates/web/marketplace/template/src/components/providers/app-providers.tsx +2 -5
  217. package/src/templates/web/micro-saas/template/package.json +0 -1
  218. package/src/templates/web/micro-saas/template/src/components/providers/app-providers.tsx +2 -5
  219. package/src/templates/web/ui-auth/template/eslint.config.mjs +14 -0
  220. package/src/templates/web/ui-auth/template/src/app/checkout/page.tsx +3 -3
  221. package/src/templates/web/ui-auth/template/src/app/dev-setup/page.tsx +81 -91
  222. package/src/templates/web/ui-auth/template/src/app/layout.tsx +38 -36
  223. package/src/templates/web/ui-auth/template/src/app/login/page.tsx +22 -45
  224. package/src/templates/web/ui-auth/template/src/app/page.tsx +106 -306
  225. package/src/templates/web/ui-auth/template/src/app/setup/page.tsx +387 -402
  226. package/src/templates/web/ui-auth/template/src/app/signup/page.tsx +24 -47
  227. package/src/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +8 -3
  228. package/src/templates/web/ui-auth/template/src/components/shared/header.tsx +229 -94
  229. package/src/templates/web/ui-auth-ai/template/src/app/layout.tsx +38 -45
  230. package/src/templates/web/ui-auth-ai/template/src/app/login/page.tsx +86 -0
  231. package/src/templates/web/ui-auth-ai/template/src/app/page.tsx +107 -193
  232. package/src/templates/web/ui-auth-ai/template/src/app/signup/page.tsx +105 -0
  233. package/src/templates/web/ui-auth-ai/template/src/components/ai/audio-generator.tsx +144 -140
  234. package/src/templates/web/ui-auth-ai/template/src/components/ai/video-generator.tsx +156 -157
  235. package/src/templates/web/ui-auth-ai/template/src/components/auth/login-form.tsx +7 -3
  236. package/src/templates/web/ui-auth-ai/template/src/components/providers/app-providers.tsx +25 -0
  237. package/src/templates/web/ui-auth-ai/template/src/components/shared/footer.tsx +36 -0
  238. package/src/templates/web/ui-auth-ai/template/src/components/shared/header.tsx +228 -0
  239. package/src/templates/web/ui-auth-ai/template/src/components/ui/button.tsx +5 -5
  240. package/src/templates/web/ui-auth-ai/template/src/components/ui/input.tsx +1 -1
  241. package/src/templates/web/ui-auth-ai/template/src/components/ui/select.tsx +1 -1
  242. package/src/templates/web/ui-auth-ai/template/src/components/ui/textarea.tsx +1 -1
  243. package/src/templates/web/ui-auth-ai/template/src/components/ui/theme-toggle.tsx +34 -0
  244. package/src/templates/web/ui-auth-ai/template/src/lib/supabase.ts +6 -4
  245. package/src/templates/web/ui-auth-ai/template/src/providers/auth-provider.tsx +7 -5
  246. package/src/templates/web/ui-auth-payments/template/src/app/billing/page.tsx +63 -192
  247. package/src/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +104 -296
  248. package/src/templates/web/ui-auth-payments/template/src/app/dashboard/page.tsx +27 -27
  249. package/src/templates/web/ui-auth-payments/template/src/app/dev-setup/page.tsx +70 -81
  250. package/src/templates/web/ui-auth-payments/template/src/app/layout.tsx +38 -36
  251. package/src/templates/web/ui-auth-payments/template/src/app/login/loading.tsx +9 -9
  252. package/src/templates/web/ui-auth-payments/template/src/app/login/page.tsx +4 -104
  253. package/src/templates/web/ui-auth-payments/template/src/app/page.tsx +69 -337
  254. package/src/templates/web/ui-auth-payments/template/src/app/setup/page.tsx +55 -68
  255. package/src/templates/web/ui-auth-payments/template/src/app/signup/loading.tsx +13 -13
  256. package/src/templates/web/ui-auth-payments/template/src/app/signup/page.tsx +4 -123
  257. package/src/templates/web/ui-auth-payments/template/src/components/client/auth-status.tsx +37 -52
  258. package/src/templates/web/ui-auth-payments/template/src/components/client/login-form.tsx +49 -103
  259. package/src/templates/web/ui-auth-payments/template/src/components/client/newsletter-signup.tsx +4 -4
  260. package/src/templates/web/ui-auth-payments/template/src/components/client/signup-form.tsx +60 -140
  261. package/src/templates/web/ui-auth-payments/template/src/components/providers/app-providers.tsx +25 -28
  262. package/src/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +229 -230
  263. package/src/templates/web/ui-auth-payments/template/src/lib/actions/auth.ts +245 -245
  264. package/src/templates/web/ui-auth-payments/template/src/lib/actions/index.ts +339 -339
  265. package/src/templates/web/ui-auth-payments-ai/template/src/app/ai/page.tsx +305 -309
  266. package/src/templates/web/ui-auth-payments-ai/template/src/app/billing/page.tsx +62 -312
  267. package/src/templates/web/ui-auth-payments-ai/template/src/app/checkout/page.tsx +109 -125
  268. package/src/templates/web/ui-auth-payments-ai/template/src/app/dashboard/page.tsx +27 -27
  269. package/src/templates/web/ui-auth-payments-ai/template/src/app/dev-setup/page.tsx +68 -83
  270. package/src/templates/web/ui-auth-payments-ai/template/src/app/layout.tsx +40 -38
  271. package/src/templates/web/ui-auth-payments-ai/template/src/app/onboarding/page.tsx +20 -20
  272. package/src/templates/web/ui-auth-payments-ai/template/src/app/page.tsx +140 -394
  273. package/src/templates/web/ui-auth-payments-ai/template/src/app/settings/page.tsx +28 -27
  274. package/src/templates/web/ui-auth-payments-ai/template/src/app/setup/page.tsx +51 -66
  275. package/src/templates/web/ui-auth-payments-ai/template/src/components/client/auth-status.tsx +37 -52
  276. package/src/templates/web/ui-auth-payments-ai/template/src/components/client/login-form.tsx +50 -79
  277. package/src/templates/web/ui-auth-payments-ai/template/src/components/client/signup-form.tsx +58 -111
  278. package/src/templates/web/ui-auth-payments-ai/template/src/components/providers/app-providers.tsx +8 -3
  279. package/src/templates/web/ui-auth-payments-ai/template/src/components/shared/header.tsx +229 -252
  280. package/src/templates/web/ui-auth-payments-ai/template/src/lib/actions/auth.ts +245 -245
  281. package/src/templates/web/ui-auth-payments-audio/template/src/app/billing/page.tsx +63 -192
  282. package/src/templates/web/ui-auth-payments-audio/template/src/app/checkout/page.tsx +109 -125
  283. package/src/templates/web/ui-auth-payments-audio/template/src/app/dashboard/page.tsx +27 -27
  284. package/src/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +40 -38
  285. package/src/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +122 -385
  286. package/src/templates/web/ui-auth-payments-audio/template/src/app/setup/page.tsx +340 -344
  287. package/src/templates/web/ui-auth-payments-audio/template/src/components/client/auth-status.tsx +37 -52
  288. package/src/templates/web/ui-auth-payments-audio/template/src/components/client/login-form.tsx +49 -103
  289. package/src/templates/web/ui-auth-payments-audio/template/src/components/client/signup-form.tsx +60 -140
  290. package/src/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +8 -3
  291. package/src/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +229 -252
  292. package/src/templates/web/ui-auth-payments-audio/template/src/lib/actions/auth.ts +3 -3
  293. package/src/templates/web/ui-auth-payments-video/template/src/app/billing/page.tsx +63 -192
  294. package/src/templates/web/ui-auth-payments-video/template/src/app/checkout/page.tsx +109 -125
  295. package/src/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +38 -36
  296. package/src/templates/web/ui-auth-payments-video/template/src/app/login/page.tsx +9 -109
  297. package/src/templates/web/ui-auth-payments-video/template/src/app/page.tsx +132 -392
  298. package/src/templates/web/ui-auth-payments-video/template/src/app/setup/page.tsx +346 -350
  299. package/src/templates/web/ui-auth-payments-video/template/src/app/signup/page.tsx +9 -128
  300. package/src/templates/web/ui-auth-payments-video/template/src/components/client/login-form.tsx +90 -0
  301. package/src/templates/web/ui-auth-payments-video/template/src/components/client/signup-form.tsx +105 -0
  302. package/src/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +8 -3
  303. package/src/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +229 -246
  304. package/src/templates/web/ui-only/template/eslint.config.mjs +14 -0
  305. package/src/templates/web/ui-only/template/src/app/checkout/page.tsx +2 -2
  306. package/src/templates/web/ui-only/template/src/app/login/page.tsx +69 -63
  307. package/src/templates/web/ui-only/template/src/app/page.tsx +69 -91
  308. package/src/templates/web/ui-only/template/src/app/signup/page.tsx +94 -79
  309. package/src/templates/web/ui-only/template/src/components/providers/app-providers.tsx +1 -6
  310. package/src/templates/web/ui-only/template/src/components/shared/header.tsx +90 -53
  311. package/src/templates/web/ui-package-test/template/package.json +19 -23
  312. package/src/templates/web/ui-package-test/template/postcss.config.mjs +8 -0
  313. package/src/templates/web/ui-package-test/template/src/app/globals.css +88 -0
  314. package/src/templates/web/ui-package-test/template/src/app/layout.tsx +27 -0
  315. package/src/templates/web/ui-package-test/template/src/app/page.tsx +46 -106
  316. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/README.md +0 -655
  317. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/app/(tabs)/ai.tsx +0 -683
  318. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/app/_layout.tsx +0 -124
  319. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/app.json +0 -74
  320. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/babel.config.js +0 -25
  321. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/docs/MOBILE-SETUP.md +0 -787
  322. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/eas.json +0 -25
  323. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/expo-env.d.ts +0 -3
  324. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -346
  325. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/jest-setup.ts +0 -37
  326. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -180
  327. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/metro.config.js +0 -11
  328. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/package.json +0 -122
  329. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -599
  330. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/tsconfig.json +0 -32
  331. package/dist/templates/web/base/template/.eslintrc.js +0 -8
  332. package/dist/templates/web/base/template/src/components/__tests__/example.test.tsx +0 -49
  333. package/dist/templates/web/base/template/src/test/setup.ts +0 -74
  334. package/dist/templates/web/base/template/vitest.config.ts +0 -17
  335. package/dist/templates/web/ui-auth/template/.eslintrc.js +0 -8
  336. package/dist/templates/web/ui-auth/template/src/components/__tests__/example.test.tsx +0 -49
  337. package/dist/templates/web/ui-auth/template/src/test/setup.ts +0 -74
  338. package/dist/templates/web/ui-auth/template/vitest.config.ts +0 -17
  339. package/dist/templates/web/ui-auth-payments/template/src/components/__tests__/example.test.tsx +0 -49
  340. package/dist/templates/web/ui-auth-payments/template/src/test/setup.ts +0 -74
  341. package/dist/templates/web/ui-auth-payments/template/vitest.config.ts +0 -17
  342. package/dist/templates/web/ui-auth-payments-ai/template/src/components/__tests__/example.test.tsx +0 -49
  343. package/dist/templates/web/ui-auth-payments-ai/template/src/test/setup.ts +0 -74
  344. package/dist/templates/web/ui-auth-payments-ai/template/vitest.config.ts +0 -17
  345. package/dist/templates/web/ui-auth-payments-ai-rag/template/README.md +0 -434
  346. package/dist/templates/web/ui-auth-payments-ai-rag/template/components/rag/KnowledgeManager.tsx +0 -642
  347. package/dist/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGAnalytics.tsx +0 -466
  348. package/dist/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGChatInterface.tsx +0 -393
  349. package/dist/templates/web/ui-auth-payments-ai-rag/template/docs/GETTING-STARTED.md +0 -457
  350. package/dist/templates/web/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -478
  351. package/dist/templates/web/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -250
  352. package/dist/templates/web/ui-auth-payments-ai-rag/template/package.json +0 -73
  353. package/dist/templates/web/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -622
  354. package/dist/templates/web/ui-auth-payments-ai-rag/template/src/app/ai/page.tsx +0 -396
  355. package/dist/templates/web/ui-auth-payments-audio/template/src/components/__tests__/example.test.tsx +0 -49
  356. package/dist/templates/web/ui-auth-payments-audio/template/src/test/setup.ts +0 -74
  357. package/dist/templates/web/ui-auth-payments-audio/template/vitest.config.ts +0 -17
  358. package/dist/templates/web/ui-auth-payments-video/template/src/components/__tests__/example.test.tsx +0 -49
  359. package/dist/templates/web/ui-auth-payments-video/template/src/test/setup.ts +0 -74
  360. package/dist/templates/web/ui-auth-payments-video/template/vitest.config.ts +0 -17
  361. package/dist/templates/web/ui-only/template/.eslintrc.js +0 -8
  362. package/dist/templates/web/ui-only/template/src/components/__tests__/example.test.tsx +0 -49
  363. package/dist/templates/web/ui-only/template/src/test/setup.ts +0 -74
  364. package/dist/templates/web/ui-only/template/vitest.config.ts +0 -17
  365. package/src/templates/mobile/ui-auth-payments-ai-rag/template/README.md +0 -655
  366. package/src/templates/mobile/ui-auth-payments-ai-rag/template/app/(tabs)/ai.tsx +0 -683
  367. package/src/templates/mobile/ui-auth-payments-ai-rag/template/app/_layout.tsx +0 -124
  368. package/src/templates/mobile/ui-auth-payments-ai-rag/template/app.json +0 -74
  369. package/src/templates/mobile/ui-auth-payments-ai-rag/template/babel.config.js +0 -25
  370. package/src/templates/mobile/ui-auth-payments-ai-rag/template/docs/MOBILE-SETUP.md +0 -787
  371. package/src/templates/mobile/ui-auth-payments-ai-rag/template/eas.json +0 -25
  372. package/src/templates/mobile/ui-auth-payments-ai-rag/template/expo-env.d.ts +0 -3
  373. package/src/templates/mobile/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -346
  374. package/src/templates/mobile/ui-auth-payments-ai-rag/template/jest-setup.ts +0 -37
  375. package/src/templates/mobile/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -180
  376. package/src/templates/mobile/ui-auth-payments-ai-rag/template/metro.config.js +0 -11
  377. package/src/templates/mobile/ui-auth-payments-ai-rag/template/package.json +0 -122
  378. package/src/templates/mobile/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -599
  379. package/src/templates/mobile/ui-auth-payments-ai-rag/template/tsconfig.json +0 -32
  380. package/src/templates/web/base/template/.eslintrc.js +0 -8
  381. package/src/templates/web/base/template/src/components/__tests__/example.test.tsx +0 -49
  382. package/src/templates/web/base/template/src/test/setup.ts +0 -74
  383. package/src/templates/web/base/template/vitest.config.ts +0 -17
  384. package/src/templates/web/ui-auth/template/.eslintrc.js +0 -8
  385. package/src/templates/web/ui-auth/template/src/components/__tests__/example.test.tsx +0 -49
  386. package/src/templates/web/ui-auth/template/src/test/setup.ts +0 -74
  387. package/src/templates/web/ui-auth/template/vitest.config.ts +0 -17
  388. package/src/templates/web/ui-auth-payments/template/src/components/__tests__/example.test.tsx +0 -49
  389. package/src/templates/web/ui-auth-payments/template/src/test/setup.ts +0 -74
  390. package/src/templates/web/ui-auth-payments/template/vitest.config.ts +0 -17
  391. package/src/templates/web/ui-auth-payments-ai/template/src/components/__tests__/example.test.tsx +0 -49
  392. package/src/templates/web/ui-auth-payments-ai/template/src/test/setup.ts +0 -74
  393. package/src/templates/web/ui-auth-payments-ai/template/vitest.config.ts +0 -17
  394. package/src/templates/web/ui-auth-payments-ai-rag/template/README.md +0 -434
  395. package/src/templates/web/ui-auth-payments-ai-rag/template/components/rag/KnowledgeManager.tsx +0 -642
  396. package/src/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGAnalytics.tsx +0 -466
  397. package/src/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGChatInterface.tsx +0 -393
  398. package/src/templates/web/ui-auth-payments-ai-rag/template/docs/GETTING-STARTED.md +0 -457
  399. package/src/templates/web/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -478
  400. package/src/templates/web/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -250
  401. package/src/templates/web/ui-auth-payments-ai-rag/template/package.json +0 -73
  402. package/src/templates/web/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -622
  403. package/src/templates/web/ui-auth-payments-ai-rag/template/src/app/ai/page.tsx +0 -396
  404. package/src/templates/web/ui-auth-payments-audio/template/src/components/__tests__/example.test.tsx +0 -49
  405. package/src/templates/web/ui-auth-payments-audio/template/src/test/setup.ts +0 -74
  406. package/src/templates/web/ui-auth-payments-audio/template/vitest.config.ts +0 -17
  407. package/src/templates/web/ui-auth-payments-video/template/src/components/__tests__/example.test.tsx +0 -49
  408. package/src/templates/web/ui-auth-payments-video/template/src/test/setup.ts +0 -74
  409. package/src/templates/web/ui-auth-payments-video/template/vitest.config.ts +0 -17
  410. package/src/templates/web/ui-only/template/.eslintrc.js +0 -8
  411. package/src/templates/web/ui-only/template/src/components/__tests__/example.test.tsx +0 -49
  412. package/src/templates/web/ui-only/template/src/test/setup.ts +0 -74
  413. package/src/templates/web/ui-only/template/vitest.config.ts +0 -17
@@ -1,403 +1,388 @@
1
- 'use client'
2
-
3
- import {
4
- Card,
5
- Button,
6
- PageTransition,
7
- MobileContainer,
8
- ResponsiveGrid,
9
- useAnimationTokens,
10
- useGlassmorphism
11
- } from '@digilogiclabs/saas-factory-ui'
12
- import {
13
- ArrowLeft,
14
- CheckCircle,
15
- AlertCircle,
16
- ExternalLink,
17
- Copy,
18
- Database,
19
- Shield,
20
- Key,
21
- Settings,
22
- BookOpen,
23
- Zap,
24
- Code2,
25
- FileText
26
- } from 'lucide-react'
27
- import Link from 'next/link'
28
- import { useState } from 'react'
29
-
30
- interface ServiceConfig {
31
- name: string
32
- status: 'required' | 'optional' | 'configured'
33
- icon: any
34
- description: string
35
- setupSteps: Array<{
36
- title: string
37
- description: string
38
- code?: string
39
- link?: string
40
- }>
41
- envVars: Array<{
42
- name: string
43
- description: string
44
- example: string
45
- required: boolean
46
- }>
47
- }
48
-
49
- export default function SetupPage() {
50
- const animations = useAnimationTokens()
51
- const glass = useGlassmorphism()
52
- const [copiedVar, setCopiedVar] = useState<string | null>(null)
53
-
54
- const projectName = "{{projectName}}"
55
- const templateName = "Authentication Platform"
56
- const templateDescription = "UI + Authentication with Supabase"
57
-
58
- const services: ServiceConfig[] = [
59
- {
60
- name: "Supabase (Database & Auth)",
61
- status: 'required',
62
- icon: Database,
63
- description: "PostgreSQL database with built-in authentication, real-time subscriptions, and edge functions.",
64
- setupSteps: [
65
- {
66
- title: "Create Supabase Project",
67
- description: "Sign up at supabase.com and create a new project",
68
- link: "https://supabase.com/dashboard"
69
- },
70
- {
71
- title: "Get API Keys",
72
- description: "Go to Settings → API to find your project URL and anon key"
73
- },
74
- {
75
- title: "Configure Authentication",
76
- description: "Enable email/password auth in Authentication → Settings"
77
- },
78
- {
79
- title: "Set up Database Tables",
80
- description: "Create tables for user profiles",
81
- code: `-- User profiles table
82
- CREATE TABLE profiles (
83
- id UUID REFERENCES auth.users(id) PRIMARY KEY,
84
- email TEXT,
85
- full_name TEXT,
86
- avatar_url TEXT,
87
- created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
88
- );
89
-
90
- -- Enable RLS
91
- ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;
92
-
93
- -- RLS Policies
94
- CREATE POLICY "Users can view own profile" ON profiles FOR SELECT USING (auth.uid() = id);
95
- CREATE POLICY "Users can update own profile" ON profiles FOR UPDATE USING (auth.uid() = id);`
96
- }
97
- ],
98
- envVars: [
99
- {
100
- name: "NEXT_PUBLIC_SUPABASE_URL",
101
- description: "Your Supabase project URL",
102
- example: "https://your-project.supabase.co",
103
- required: true
104
- },
105
- {
106
- name: "NEXT_PUBLIC_SUPABASE_ANON_KEY",
107
- description: "Your Supabase anonymous key",
108
- example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
109
- required: true
110
- },
111
- {
112
- name: "SUPABASE_SERVICE_ROLE_KEY",
113
- description: "Service role key for server-side operations (optional)",
114
- example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
115
- required: false
116
- }
117
- ]
118
- }
119
- ]
120
-
121
- const allEnvVars = services.flatMap(service => service.envVars)
122
-
123
- const copyToClipboard = async (text: string, varName: string) => {
124
- await navigator.clipboard.writeText(text)
125
- setCopiedVar(varName)
126
- setTimeout(() => setCopiedVar(null), 2000)
127
- }
128
-
129
- const getStatusColor = (status: ServiceConfig['status']) => {
130
- switch (status) {
131
- case 'required': return 'text-red-400'
132
- case 'optional': return 'text-yellow-400'
133
- case 'configured': return 'text-green-400'
134
- default: return 'text-gray-400'
135
- }
136
- }
137
-
138
- const getStatusIcon = (status: ServiceConfig['status']) => {
139
- switch (status) {
140
- case 'required': return AlertCircle
141
- case 'optional': return Settings
142
- case 'configured': return CheckCircle
143
- default: return AlertCircle
144
- }
145
- }
146
-
147
- return (
148
- <PageTransition type="slide" direction="up" duration={300}>
149
- <main className={`min-h-screen ${glass.background.primary} relative overflow-hidden`}>
150
- <div className={`absolute inset-0 ${glass.background.accent} opacity-30`} />
151
- <div className="relative z-10">
152
- <MobileContainer className="py-8">
153
- {/* Header */}
154
- <div className="flex items-center justify-between mb-8">
155
- <div className="flex items-center gap-4">
156
- <Link href="/" className={`${glass.card} ${glass.border} p-2 rounded-xl ${animations.hover.scale}`}>
157
- <ArrowLeft className="w-5 h-5" />
158
- </Link>
159
- <div>
160
- <h1 className="text-2xl font-bold">Setup Guide</h1>
161
- <p className="text-gray-600 dark:text-gray-300">{templateName}</p>
162
- </div>
163
- </div>
164
- <div className={`${glass.card} ${glass.border} px-4 py-2 rounded-xl`}>
165
- <span className="text-sm font-medium">{projectName}</span>
166
- </div>
167
- </div>
168
-
169
- {/* Template Overview */}
170
- <div className={`${glass.card} ${glass.border} rounded-2xl p-6 mb-8`}>
171
- <div className="flex items-center gap-4 mb-4">
172
- <div className={`w-12 h-12 rounded-xl bg-gradient-to-r from-blue-500 to-cyan-500 flex items-center justify-center`}>
173
- <Shield className="w-6 w-6 text-white" />
174
- </div>
175
- <div>
176
- <h2 className="text-xl font-semibold">{templateName}</h2>
177
- <p className="text-gray-600 dark:text-gray-300">{templateDescription}</p>
178
- </div>
179
- </div>
180
- <div className="grid grid-cols-1 md:grid-cols-2 gap-4 mt-6">
181
- <div className="text-center p-4 rounded-xl bg-blue-500/10">
182
- <Shield className="w-8 h-8 text-blue-400 mx-auto mb-2" />
183
- <div className="font-medium">Authentication</div>
184
- <div className="text-sm text-gray-600 dark:text-gray-300">Secure user management</div>
185
- </div>
186
- <div className="text-center p-4 rounded-xl bg-purple-500/10">
187
- <Code2 className="w-8 h-8 text-purple-400 mx-auto mb-2" />
188
- <div className="font-medium">Modern UI</div>
189
- <div className="text-sm text-gray-600 dark:text-gray-300">Beautiful components</div>
190
- </div>
191
- </div>
192
- </div>
193
-
194
- {/* Quick Start */}
195
- <div className={`${glass.card} ${glass.border} rounded-2xl p-6 mb-8`}>
196
- <h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
197
- <Zap className="w-5 h-5 text-yellow-400" />
198
- Quick Start
199
- </h3>
200
- <div className="space-y-3 text-sm">
201
- <div className="flex items-center gap-3">
202
- <CheckCircle className="w-5 h-5 text-green-400" />
203
- <span>1. Set up your environment variables (see below)</span>
204
- </div>
205
- <div className="flex items-center gap-3">
206
- <CheckCircle className="w-5 h-5 text-green-400" />
207
- <span>2. Configure Supabase database and authentication</span>
208
- </div>
209
- <div className="flex items-center gap-3">
210
- <CheckCircle className="w-5 h-5 text-green-400" />
211
- <span>3. Run <code className="px-2 py-1 bg-gray-800 rounded text-green-400">npm run dev</code> to start developing</span>
212
- </div>
213
- </div>
214
- </div>
215
-
216
- {/* Environment Variables */}
217
- <div className={`${glass.card} ${glass.border} rounded-2xl p-6 mb-8`}>
218
- <h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
219
- <Key className="w-5 h-5 text-blue-400" />
220
- Environment Variables
221
- </h3>
222
- <p className="text-sm text-gray-600 dark:text-gray-300 mb-4">
223
- Copy these to your <code className="px-2 py-1 bg-gray-800 rounded">.env.local</code> file:
224
- </p>
225
- <div className="bg-gray-900 rounded-xl p-4 overflow-x-auto">
226
- <pre className="text-sm text-green-400">
227
- {allEnvVars.map(envVar => (
228
- `${envVar.name}=${envVar.example}${envVar.required ? ' # Required' : ' # Optional'}`
229
- )).join('\n')}
230
- </pre>
231
- <button
232
- onClick={() => copyToClipboard(
233
- allEnvVars.map(envVar => `${envVar.name}=${envVar.example}`).join('\n'),
234
- 'all-env-vars'
235
- )}
236
- className="mt-3 flex items-center gap-2 text-xs text-gray-400 hover:text-white transition-colors"
237
- >
238
- <Copy className="w-4 h-4" />
239
- {copiedVar === 'all-env-vars' ? 'Copied!' : 'Copy all environment variables'}
240
- </button>
241
- </div>
242
- </div>
243
-
244
- {/* Services Configuration */}
245
- <div className="space-y-6">
246
- <h3 className="text-lg font-semibold flex items-center gap-2">
247
- <Settings className="w-5 h-5 text-gray-400" />
248
- Service Configuration
249
- </h3>
250
-
251
- {services.map((service, index) => {
252
- const StatusIcon = getStatusIcon(service.status)
253
- const ServiceIcon = service.icon
254
-
255
- return (
256
- <div key={service.name} className={`${glass.card} ${glass.border} rounded-2xl p-6`}>
257
- <div className="flex items-start justify-between mb-4">
258
- <div className="flex items-center gap-3">
259
- <div className={`w-10 h-10 rounded-xl bg-gray-800 flex items-center justify-center`}>
260
- <ServiceIcon className="w-5 h-5 text-white" />
261
- </div>
262
- <div>
263
- <h4 className="text-lg font-semibold flex items-center gap-2">
264
- {service.name}
265
- <StatusIcon className={`w-4 h-4 ${getStatusColor(service.status)}`} />
266
- </h4>
267
- <p className="text-sm text-gray-600 dark:text-gray-300">{service.description}</p>
268
- </div>
269
- </div>
270
- <span className={`px-3 py-1 rounded-full text-xs font-medium ${
271
- service.status === 'required' ? 'bg-red-500/20 text-red-400' :
272
- service.status === 'optional' ? 'bg-yellow-500/20 text-yellow-400' :
273
- 'bg-green-500/20 text-green-400'
274
- }`}>
275
- {service.status}
276
- </span>
277
- </div>
278
-
279
- {/* Setup Steps */}
280
- <div className="mb-6">
281
- <h5 className="font-semibold mb-3">Setup Steps:</h5>
282
- <div className="space-y-3">
283
- {service.setupSteps.map((step, stepIndex) => (
284
- <div key={stepIndex} className="flex gap-3">
285
- <div className="w-6 h-6 rounded-full bg-blue-500 text-white text-xs flex items-center justify-center flex-shrink-0 mt-0.5">
286
- {stepIndex + 1}
287
- </div>
288
- <div className="flex-1">
289
- <h6 className="font-medium">{step.title}</h6>
290
- <p className="text-sm text-gray-600 dark:text-gray-300">{step.description}</p>
291
- {step.link && (
292
- <a
293
- href={step.link}
294
- target="_blank"
295
- rel="noopener noreferrer"
296
- className="inline-flex items-center gap-1 text-sm text-blue-400 hover:text-blue-300 mt-1"
297
- >
298
- Open Dashboard <ExternalLink className="w-3 h-3" />
299
- </a>
300
- )}
301
- {step.code && (
302
- <details className="mt-2">
303
- <summary className="text-sm text-blue-400 cursor-pointer hover:text-blue-300">
304
- Show code example
305
- </summary>
306
- <pre className="bg-gray-900 rounded-lg p-3 mt-2 text-xs overflow-x-auto">
307
- <code className="text-green-400">{step.code}</code>
308
- </pre>
309
- </details>
310
- )}
311
- </div>
312
- </div>
313
- ))}
314
- </div>
315
- </div>
316
-
317
- {/* Environment Variables for this service */}
318
- <div>
319
- <h5 className="font-semibold mb-3">Environment Variables:</h5>
320
- <div className="space-y-2">
321
- {service.envVars.map((envVar, envIndex) => (
322
- <div key={envIndex} className="bg-gray-800/50 rounded-lg p-3">
323
- <div className="flex items-center justify-between mb-1">
324
- <code className="text-blue-400 font-mono text-sm">{envVar.name}</code>
325
- <div className="flex items-center gap-2">
326
- <span className={`px-2 py-1 rounded text-xs ${
327
- envVar.required ? 'bg-red-500/20 text-red-400' : 'bg-gray-500/20 text-gray-400'
328
- }`}>
329
- {envVar.required ? 'Required' : 'Optional'}
330
- </span>
331
- <button
332
- onClick={() => copyToClipboard(`${envVar.name}=${envVar.example}`, envVar.name)}
333
- className="p-1 hover:bg-gray-700 rounded transition-colors"
334
- >
335
- <Copy className="w-3 h-3" />
336
- </button>
337
- </div>
338
- </div>
339
- <p className="text-xs text-gray-400 mb-2">{envVar.description}</p>
340
- <code className="text-xs text-gray-500 font-mono">{envVar.example}</code>
341
- {copiedVar === envVar.name && (
342
- <span className="text-xs text-green-400 ml-2">Copied!</span>
343
- )}
344
- </div>
345
- ))}
346
- </div>
347
- </div>
348
- </div>
349
- )
350
- })}
351
- </div>
352
-
353
- {/* Additional Resources */}
354
- <div className={`${glass.card} ${glass.border} rounded-2xl p-6 mt-8`}>
355
- <h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
356
- <BookOpen className="w-5 h-5 text-green-400" />
357
- Additional Resources
358
- </h3>
359
- <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
360
- <a
361
- href="https://docs.digilogiclabs.com"
362
- className={`${glass.card} ${glass.border} p-4 rounded-xl ${animations.hover.scale} block`}
363
- >
364
- <FileText className="w-8 h-8 text-blue-400 mb-2" />
365
- <h4 className="font-medium">Documentation</h4>
366
- <p className="text-sm text-gray-600 dark:text-gray-300">Complete guides and API reference</p>
367
- </a>
368
- <a
369
- href="https://github.com/digilogiclabs/examples"
370
- className={`${glass.card} ${glass.border} p-4 rounded-xl ${animations.hover.scale} block`}
371
- >
372
- <Code2 className="w-8 h-8 text-purple-400 mb-2" />
373
- <h4 className="font-medium">Examples</h4>
374
- <p className="text-sm text-gray-600 dark:text-gray-300">Sample projects and code snippets</p>
375
- </a>
376
- </div>
377
- </div>
378
-
379
- {/* Support */}
380
- <div className={`${glass.card} ${glass.border} rounded-2xl p-6 mt-8 text-center`}>
381
- <h3 className="text-lg font-semibold mb-4">Need Help?</h3>
382
- <p className="text-gray-600 dark:text-gray-300 mb-4">
383
- Our community and support team are here to help you get started.
384
- </p>
385
- <div className="flex justify-center gap-4">
386
- <Button variant="outline" size="sm" asChild>
387
- <a href="https://discord.gg/digilogiclabs" target="_blank" rel="noopener noreferrer">
388
- Join Discord
389
- </a>
390
- </Button>
391
- <Button size="sm" asChild>
392
- <a href="https://docs.digilogiclabs.com/support" target="_blank" rel="noopener noreferrer">
393
- Get Support
394
- </a>
395
- </Button>
396
- </div>
397
- </div>
398
- </MobileContainer>
399
- </div>
400
- </main>
401
- </PageTransition>
402
- )
1
+ 'use client'
2
+
3
+ import { Button } from '@digilogiclabs/saas-factory-ui'
4
+ import {
5
+ ArrowLeft,
6
+ CheckCircle,
7
+ AlertCircle,
8
+ ExternalLink,
9
+ Copy,
10
+ Database,
11
+ Shield,
12
+ Key,
13
+ Settings,
14
+ BookOpen,
15
+ Zap,
16
+ Code2,
17
+ FileText
18
+ } from 'lucide-react'
19
+ import Link from 'next/link'
20
+ import { useState } from 'react'
21
+
22
+ interface ServiceConfig {
23
+ name: string
24
+ status: 'required' | 'optional' | 'configured'
25
+ icon: any
26
+ description: string
27
+ setupSteps: Array<{
28
+ title: string
29
+ description: string
30
+ code?: string
31
+ link?: string
32
+ }>
33
+ envVars: Array<{
34
+ name: string
35
+ description: string
36
+ example: string
37
+ required: boolean
38
+ }>
39
+ }
40
+
41
+ export default function SetupPage() {
42
+ const [copiedVar, setCopiedVar] = useState<string | null>(null)
43
+
44
+ const projectName = "{{projectName}}"
45
+ const templateName = "Authentication Platform"
46
+ const templateDescription = "UI + Authentication with Supabase"
47
+
48
+ const services: ServiceConfig[] = [
49
+ {
50
+ name: "Supabase (Database & Auth)",
51
+ status: 'required',
52
+ icon: Database,
53
+ description: "PostgreSQL database with built-in authentication, real-time subscriptions, and edge functions.",
54
+ setupSteps: [
55
+ {
56
+ title: "Create Supabase Project",
57
+ description: "Sign up at supabase.com and create a new project",
58
+ link: "https://supabase.com/dashboard"
59
+ },
60
+ {
61
+ title: "Get API Keys",
62
+ description: "Go to Settings → API to find your project URL and anon key"
63
+ },
64
+ {
65
+ title: "Configure Authentication",
66
+ description: "Enable email/password auth in Authentication → Settings"
67
+ },
68
+ {
69
+ title: "Set up Database Tables",
70
+ description: "Create tables for user profiles",
71
+ code: `-- User profiles table
72
+ CREATE TABLE profiles (
73
+ id UUID REFERENCES auth.users(id) PRIMARY KEY,
74
+ email TEXT,
75
+ full_name TEXT,
76
+ avatar_url TEXT,
77
+ created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
78
+ );
79
+
80
+ -- Enable RLS
81
+ ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;
82
+
83
+ -- RLS Policies
84
+ CREATE POLICY "Users can view own profile" ON profiles FOR SELECT USING (auth.uid() = id);
85
+ CREATE POLICY "Users can update own profile" ON profiles FOR UPDATE USING (auth.uid() = id);`
86
+ }
87
+ ],
88
+ envVars: [
89
+ {
90
+ name: "NEXT_PUBLIC_SUPABASE_URL",
91
+ description: "Your Supabase project URL",
92
+ example: "https://your-project.supabase.co",
93
+ required: true
94
+ },
95
+ {
96
+ name: "NEXT_PUBLIC_SUPABASE_ANON_KEY",
97
+ description: "Your Supabase anonymous key",
98
+ example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
99
+ required: true
100
+ },
101
+ {
102
+ name: "SUPABASE_SERVICE_ROLE_KEY",
103
+ description: "Service role key for server-side operations (optional)",
104
+ example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
105
+ required: false
106
+ }
107
+ ]
108
+ }
109
+ ]
110
+
111
+ const allEnvVars = services.flatMap(service => service.envVars)
112
+
113
+ const copyToClipboard = async (text: string, varName: string) => {
114
+ await navigator.clipboard.writeText(text)
115
+ setCopiedVar(varName)
116
+ setTimeout(() => setCopiedVar(null), 2000)
117
+ }
118
+
119
+ const getStatusColor = (status: ServiceConfig['status']) => {
120
+ switch (status) {
121
+ case 'required': return 'text-red-400'
122
+ case 'optional': return 'text-yellow-400'
123
+ case 'configured': return 'text-green-400'
124
+ default: return 'text-muted-foreground'
125
+ }
126
+ }
127
+
128
+ const getStatusIcon = (status: ServiceConfig['status']) => {
129
+ switch (status) {
130
+ case 'required': return AlertCircle
131
+ case 'optional': return Settings
132
+ case 'configured': return CheckCircle
133
+ default: return AlertCircle
134
+ }
135
+ }
136
+
137
+ return (
138
+ <main className="min-h-screen bg-background">
139
+ <div className="mx-auto max-w-4xl px-4 py-8">
140
+ {/* Header */}
141
+ <div className="flex items-center justify-between mb-8">
142
+ <div className="flex items-center gap-4">
143
+ <Link href="/" className={`rounded-xl border border-border bg-card p-2 rounded-xl hover:scale-[1.02] transition-transform`}>
144
+ <ArrowLeft className="w-5 h-5" />
145
+ </Link>
146
+ <div>
147
+ <h1 className="text-2xl font-bold">Setup Guide</h1>
148
+ <p className="text-muted-foreground">{templateName}</p>
149
+ </div>
150
+ </div>
151
+ <div className={`rounded-xl border border-border bg-card px-4 py-2 rounded-xl`}>
152
+ <span className="text-sm font-medium">{projectName}</span>
153
+ </div>
154
+ </div>
155
+
156
+ {/* Template Overview */}
157
+ <div className={`rounded-xl border border-border bg-card rounded-2xl p-6 mb-8`}>
158
+ <div className="flex items-center gap-4 mb-4">
159
+ <div className={`w-12 h-12 rounded-xl bg-gradient-to-r from-blue-500 to-cyan-500 flex items-center justify-center`}>
160
+ <Shield className="w-6 w-6 text-white" />
161
+ </div>
162
+ <div>
163
+ <h2 className="text-xl font-semibold">{templateName}</h2>
164
+ <p className="text-muted-foreground">{templateDescription}</p>
165
+ </div>
166
+ </div>
167
+ <div className="grid grid-cols-1 md:grid-cols-2 gap-4 mt-6">
168
+ <div className="text-center p-4 rounded-xl bg-blue-500/10">
169
+ <Shield className="w-8 h-8 text-blue-400 mx-auto mb-2" />
170
+ <div className="font-medium">Authentication</div>
171
+ <div className="text-sm text-muted-foreground">Secure user management</div>
172
+ </div>
173
+ <div className="text-center p-4 rounded-xl bg-purple-500/10">
174
+ <Code2 className="w-8 h-8 text-purple-400 mx-auto mb-2" />
175
+ <div className="font-medium">Modern UI</div>
176
+ <div className="text-sm text-muted-foreground">Beautiful components</div>
177
+ </div>
178
+ </div>
179
+ </div>
180
+
181
+ {/* Quick Start */}
182
+ <div className={`rounded-xl border border-border bg-card rounded-2xl p-6 mb-8`}>
183
+ <h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
184
+ <Zap className="w-5 h-5 text-yellow-400" />
185
+ Quick Start
186
+ </h3>
187
+ <div className="space-y-3 text-sm">
188
+ <div className="flex items-center gap-3">
189
+ <CheckCircle className="w-5 h-5 text-green-400" />
190
+ <span>1. Set up your environment variables (see below)</span>
191
+ </div>
192
+ <div className="flex items-center gap-3">
193
+ <CheckCircle className="w-5 h-5 text-green-400" />
194
+ <span>2. Configure Supabase database and authentication</span>
195
+ </div>
196
+ <div className="flex items-center gap-3">
197
+ <CheckCircle className="w-5 h-5 text-green-400" />
198
+ <span>3. Run <code className="px-2 py-1 bg-card rounded text-green-400">npm run dev</code> to start developing</span>
199
+ </div>
200
+ </div>
201
+ </div>
202
+
203
+ {/* Environment Variables */}
204
+ <div className={`rounded-xl border border-border bg-card rounded-2xl p-6 mb-8`}>
205
+ <h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
206
+ <Key className="w-5 h-5 text-primary" />
207
+ Environment Variables
208
+ </h3>
209
+ <p className="text-sm text-muted-foreground mb-4">
210
+ Copy these to your <code className="px-2 py-1 bg-card rounded">.env.local</code> file:
211
+ </p>
212
+ <div className="bg-background rounded-xl p-4 overflow-x-auto">
213
+ <pre className="text-sm text-green-400">
214
+ {allEnvVars.map(envVar => (
215
+ `${envVar.name}=${envVar.example}${envVar.required ? ' # Required' : ' # Optional'}`
216
+ )).join('\n')}
217
+ </pre>
218
+ <button
219
+ onClick={() => copyToClipboard(
220
+ allEnvVars.map(envVar => `${envVar.name}=${envVar.example}`).join('\n'),
221
+ 'all-env-vars'
222
+ )}
223
+ className="mt-3 flex items-center gap-2 text-xs text-muted-foreground hover:text-white transition-colors"
224
+ >
225
+ <Copy className="w-4 h-4" />
226
+ {copiedVar === 'all-env-vars' ? 'Copied!' : 'Copy all environment variables'}
227
+ </button>
228
+ </div>
229
+ </div>
230
+
231
+ {/* Services Configuration */}
232
+ <div className="space-y-6">
233
+ <h3 className="text-lg font-semibold flex items-center gap-2">
234
+ <Settings className="w-5 h-5 text-muted-foreground" />
235
+ Service Configuration
236
+ </h3>
237
+
238
+ {services.map((service, index) => {
239
+ const StatusIcon = getStatusIcon(service.status)
240
+ const ServiceIcon = service.icon
241
+
242
+ return (
243
+ <div key={service.name} className={`rounded-xl border border-border bg-card rounded-2xl p-6`}>
244
+ <div className="flex items-start justify-between mb-4">
245
+ <div className="flex items-center gap-3">
246
+ <div className={`w-10 h-10 rounded-xl bg-card flex items-center justify-center`}>
247
+ <ServiceIcon className="w-5 h-5 text-white" />
248
+ </div>
249
+ <div>
250
+ <h4 className="text-lg font-semibold flex items-center gap-2">
251
+ {service.name}
252
+ <StatusIcon className={`w-4 h-4 ${getStatusColor(service.status)}`} />
253
+ </h4>
254
+ <p className="text-sm text-muted-foreground">{service.description}</p>
255
+ </div>
256
+ </div>
257
+ <span className={`px-3 py-1 rounded-full text-xs font-medium ${
258
+ service.status === 'required' ? 'bg-red-500/20 text-red-400' :
259
+ service.status === 'optional' ? 'bg-yellow-500/20 text-yellow-400' :
260
+ 'bg-green-500/20 text-green-400'
261
+ }`}>
262
+ {service.status}
263
+ </span>
264
+ </div>
265
+
266
+ {/* Setup Steps */}
267
+ <div className="mb-6">
268
+ <h5 className="font-semibold mb-3">Setup Steps:</h5>
269
+ <div className="space-y-3">
270
+ {service.setupSteps.map((step, stepIndex) => (
271
+ <div key={stepIndex} className="flex gap-3">
272
+ <div className="w-6 h-6 rounded-full bg-primary text-primary-foreground text-xs flex items-center justify-center flex-shrink-0 mt-0.5">
273
+ {stepIndex + 1}
274
+ </div>
275
+ <div className="flex-1">
276
+ <h6 className="font-medium">{step.title}</h6>
277
+ <p className="text-sm text-muted-foreground">{step.description}</p>
278
+ {step.link && (
279
+ <a
280
+ href={step.link}
281
+ target="_blank"
282
+ rel="noopener noreferrer"
283
+ className="inline-flex items-center gap-1 text-sm text-primary hover:text-primary/80 mt-1"
284
+ >
285
+ Open Dashboard <ExternalLink className="w-3 h-3" />
286
+ </a>
287
+ )}
288
+ {step.code && (
289
+ <details className="mt-2">
290
+ <summary className="text-sm text-primary cursor-pointer hover:text-primary/80">
291
+ Show code example
292
+ </summary>
293
+ <pre className="bg-background rounded-lg p-3 mt-2 text-xs overflow-x-auto">
294
+ <code className="text-green-400">{step.code}</code>
295
+ </pre>
296
+ </details>
297
+ )}
298
+ </div>
299
+ </div>
300
+ ))}
301
+ </div>
302
+ </div>
303
+
304
+ {/* Environment Variables for this service */}
305
+ <div>
306
+ <h5 className="font-semibold mb-3">Environment Variables:</h5>
307
+ <div className="space-y-2">
308
+ {service.envVars.map((envVar, envIndex) => (
309
+ <div key={envIndex} className="bg-card/50 rounded-lg p-3">
310
+ <div className="flex items-center justify-between mb-1">
311
+ <code className="text-primary font-mono text-sm">{envVar.name}</code>
312
+ <div className="flex items-center gap-2">
313
+ <span className={`px-2 py-1 rounded text-xs ${
314
+ envVar.required ? 'bg-red-500/20 text-red-400' : 'bg-muted-foreground/20 text-muted-foreground'
315
+ }`}>
316
+ {envVar.required ? 'Required' : 'Optional'}
317
+ </span>
318
+ <button
319
+ onClick={() => copyToClipboard(`${envVar.name}=${envVar.example}`, envVar.name)}
320
+ className="p-1 hover:bg-muted rounded transition-colors"
321
+ >
322
+ <Copy className="w-3 h-3" />
323
+ </button>
324
+ </div>
325
+ </div>
326
+ <p className="text-xs text-muted-foreground mb-2">{envVar.description}</p>
327
+ <code className="text-xs text-muted-foreground font-mono">{envVar.example}</code>
328
+ {copiedVar === envVar.name && (
329
+ <span className="text-xs text-green-400 ml-2">Copied!</span>
330
+ )}
331
+ </div>
332
+ ))}
333
+ </div>
334
+ </div>
335
+ </div>
336
+ )
337
+ })}
338
+ </div>
339
+
340
+ {/* Additional Resources */}
341
+ <div className={`rounded-xl border border-border bg-card rounded-2xl p-6 mt-8`}>
342
+ <h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
343
+ <BookOpen className="w-5 h-5 text-green-400" />
344
+ Additional Resources
345
+ </h3>
346
+ <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
347
+ <a
348
+ href="https://docs.digilogiclabs.com"
349
+ className={`rounded-xl border border-border bg-card p-4 rounded-xl hover:scale-[1.02] transition-transform block`}
350
+ >
351
+ <FileText className="w-8 h-8 text-primary mb-2" />
352
+ <h4 className="font-medium">Documentation</h4>
353
+ <p className="text-sm text-muted-foreground">Complete guides and API reference</p>
354
+ </a>
355
+ <a
356
+ href="https://github.com/digilogiclabs/examples"
357
+ className={`rounded-xl border border-border bg-card p-4 rounded-xl hover:scale-[1.02] transition-transform block`}
358
+ >
359
+ <Code2 className="w-8 h-8 text-purple-400 mb-2" />
360
+ <h4 className="font-medium">Examples</h4>
361
+ <p className="text-sm text-muted-foreground">Sample projects and code snippets</p>
362
+ </a>
363
+ </div>
364
+ </div>
365
+
366
+ {/* Support */}
367
+ <div className={`rounded-xl border border-border bg-card rounded-2xl p-6 mt-8 text-center`}>
368
+ <h3 className="text-lg font-semibold mb-4">Need Help?</h3>
369
+ <p className="text-muted-foreground mb-4">
370
+ Our community and support team are here to help you get started.
371
+ </p>
372
+ <div className="flex justify-center gap-4">
373
+ <Button variant="outline" size="sm">
374
+ <a href="https://discord.gg/digilogiclabs" target="_blank" rel="noopener noreferrer">
375
+ Join Discord
376
+ </a>
377
+ </Button>
378
+ <Button size="sm">
379
+ <a href="https://docs.digilogiclabs.com/support" target="_blank" rel="noopener noreferrer">
380
+ Get Support
381
+ </a>
382
+ </Button>
383
+ </div>
384
+ </div>
385
+ </div>
386
+ </main>
387
+ )
403
388
  }