@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,345 +1,341 @@
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
- CreditCard,
20
- Shield,
21
- Headphones,
22
- Key,
23
- Settings,
24
- BookOpen,
25
- Zap,
26
- Code2,
27
- FileText,
28
- Music
29
- } from 'lucide-react'
30
- import Link from 'next/link'
31
- import { useState } from 'react'
32
-
33
- export default function SetupPage() {
34
- const animations = useAnimationTokens()
35
- const glass = useGlassmorphism()
36
- const [copiedVar, setCopiedVar] = useState<string | null>(null)
37
-
38
- const projectName = "{{projectName}}"
39
- const templateName = "Audio Platform with Payments"
40
- const templateDescription = "UI + Authentication + Payments + Audio Features"
41
-
42
- const envVars = [
43
- { name: "NEXT_PUBLIC_SUPABASE_URL", example: "https://your-project.supabase.co", required: true },
44
- { name: "NEXT_PUBLIC_SUPABASE_ANON_KEY", example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", required: true },
45
- { name: "SUPABASE_SERVICE_ROLE_KEY", example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", required: false },
46
- { name: "NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY", example: "pk_test_51234567890abcdef...", required: true },
47
- { name: "STRIPE_SECRET_KEY", example: "sk_test_51234567890abcdef...", required: true },
48
- { name: "STRIPE_WEBHOOK_SECRET", example: "whsec_1234567890abcdef...", required: true },
49
- { name: "ELEVENLABS_API_KEY", example: "sk-1234567890abcdef...", required: false },
50
- { name: "OPENAI_API_KEY", example: "sk-1234567890abcdef...", required: false }
51
- ]
52
-
53
- const copyToClipboard = async (text: string, varName: string) => {
54
- await navigator.clipboard.writeText(text)
55
- setCopiedVar(varName)
56
- setTimeout(() => setCopiedVar(null), 2000)
57
- }
58
-
59
- return (
60
- <PageTransition type="slide" direction="up" duration={300}>
61
- <main className={`min-h-screen ${glass.background.primary} relative overflow-hidden`}>
62
- <div className={`absolute inset-0 ${glass.background.accent} opacity-30`} />
63
- <div className="relative z-10">
64
- <MobileContainer className="py-8">
65
- {/* Header */}
66
- <div className="flex items-center justify-between mb-8">
67
- <div className="flex items-center gap-4">
68
- <Link href="/" className={`${glass.card} ${glass.border} p-2 rounded-xl ${animations.hover.scale}`}>
69
- <ArrowLeft className="w-5 h-5" />
70
- </Link>
71
- <div>
72
- <h1 className="text-2xl font-bold">Setup Guide</h1>
73
- <p className="text-gray-600 dark:text-gray-300">{templateName}</p>
74
- </div>
75
- </div>
76
- <div className={`${glass.card} ${glass.border} px-4 py-2 rounded-xl`}>
77
- <span className="text-sm font-medium">{projectName}</span>
78
- </div>
79
- </div>
80
-
81
- {/* Template Overview */}
82
- <div className={`${glass.card} ${glass.border} rounded-2xl p-6 mb-8`}>
83
- <div className="flex items-center gap-4 mb-4">
84
- <div className={`w-12 h-12 rounded-xl bg-gradient-to-r from-purple-500 to-green-500 flex items-center justify-center`}>
85
- <Headphones className="w-6 h-6 text-white" />
86
- </div>
87
- <div>
88
- <h2 className="text-xl font-semibold">{templateName}</h2>
89
- <p className="text-gray-600 dark:text-gray-300">{templateDescription}</p>
90
- </div>
91
- </div>
92
- <div className="grid grid-cols-2 md:grid-cols-4 gap-4 mt-6">
93
- <div className="text-center p-3 rounded-xl bg-blue-500/10">
94
- <Shield className="w-6 h-6 text-blue-400 mx-auto mb-2" />
95
- <div className="text-sm font-medium">Authentication</div>
96
- </div>
97
- <div className="text-center p-3 rounded-xl bg-green-500/10">
98
- <CreditCard className="w-6 h-6 text-green-400 mx-auto mb-2" />
99
- <div className="text-sm font-medium">Payments</div>
100
- </div>
101
- <div className="text-center p-3 rounded-xl bg-purple-500/10">
102
- <Music className="w-6 h-6 text-purple-400 mx-auto mb-2" />
103
- <div className="text-sm font-medium">Audio Platform</div>
104
- </div>
105
- <div className="text-center p-3 rounded-xl bg-orange-500/10">
106
- <Code2 className="w-6 h-6 text-orange-400 mx-auto mb-2" />
107
- <div className="text-sm font-medium">Modern UI</div>
108
- </div>
109
- </div>
110
- </div>
111
-
112
- {/* Quick Start */}
113
- <div className={`${glass.card} ${glass.border} rounded-2xl p-6 mb-8`}>
114
- <h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
115
- <Zap className="w-5 h-5 text-yellow-400" />
116
- Quick Start
117
- </h3>
118
- <div className="space-y-3 text-sm">
119
- <div className="flex items-center gap-3">
120
- <CheckCircle className="w-5 h-5 text-green-400" />
121
- <span>1. Set up Supabase for database and authentication</span>
122
- </div>
123
- <div className="flex items-center gap-3">
124
- <CheckCircle className="w-5 h-5 text-green-400" />
125
- <span>2. Configure Stripe for payment processing</span>
126
- </div>
127
- <div className="flex items-center gap-3">
128
- <CheckCircle className="w-5 h-5 text-green-400" />
129
- <span>3. (Optional) Add audio AI providers like ElevenLabs</span>
130
- </div>
131
- <div className="flex items-center gap-3">
132
- <CheckCircle className="w-5 h-5 text-green-400" />
133
- <span>4. Configure environment variables below</span>
134
- </div>
135
- <div className="flex items-center gap-3">
136
- <CheckCircle className="w-5 h-5 text-green-400" />
137
- <span>5. Run <code className="px-2 py-1 bg-gray-800 rounded text-green-400">npm run dev</code></span>
138
- </div>
139
- </div>
140
- </div>
141
-
142
- {/* Environment Variables */}
143
- <div className={`${glass.card} ${glass.border} rounded-2xl p-6 mb-8`}>
144
- <h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
145
- <Key className="w-5 h-5 text-blue-400" />
146
- Environment Variables
147
- </h3>
148
- <p className="text-sm text-gray-600 dark:text-gray-300 mb-4">
149
- Copy these to your <code className="px-2 py-1 bg-gray-800 rounded">.env.local</code> file:
150
- </p>
151
- <div className="bg-gray-900 rounded-xl p-4 overflow-x-auto">
152
- <pre className="text-sm text-green-400">
153
- {envVars.map(envVar => (
154
- `${envVar.name}=${envVar.example}${envVar.required ? ' # Required' : ' # Optional'}`
155
- )).join('\n')}
156
- </pre>
157
- <button
158
- onClick={() => copyToClipboard(
159
- envVars.map(envVar => `${envVar.name}=${envVar.example}`).join('\n'),
160
- 'all-env-vars'
161
- )}
162
- className="mt-3 flex items-center gap-2 text-xs text-gray-400 hover:text-white transition-colors"
163
- >
164
- <Copy className="w-4 h-4" />
165
- {copiedVar === 'all-env-vars' ? 'Copied!' : 'Copy all environment variables'}
166
- </button>
167
- </div>
168
- </div>
169
-
170
- {/* Services Overview */}
171
- <div className={`${glass.card} ${glass.border} rounded-2xl p-6 mb-8`}>
172
- <h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
173
- <Settings className="w-5 h-5 text-gray-400" />
174
- Required Services
175
- </h3>
176
- <div className="space-y-4">
177
- {/* Supabase */}
178
- <div className="flex items-center gap-4 p-4 bg-blue-500/10 rounded-xl">
179
- <Database className="w-8 h-8 text-blue-400" />
180
- <div className="flex-1">
181
- <h4 className="font-semibold">Supabase</h4>
182
- <p className="text-sm text-gray-600 dark:text-gray-300">Database and authentication</p>
183
- </div>
184
- <span className="px-3 py-1 bg-red-500/20 text-red-400 rounded-full text-xs">Required</span>
185
- <a href="https://supabase.com/dashboard" className="text-blue-400 hover:text-blue-300">
186
- <ExternalLink className="w-4 h-4" />
187
- </a>
188
- </div>
189
-
190
- {/* Stripe */}
191
- <div className="flex items-center gap-4 p-4 bg-green-500/10 rounded-xl">
192
- <CreditCard className="w-8 h-8 text-green-400" />
193
- <div className="flex-1">
194
- <h4 className="font-semibold">Stripe</h4>
195
- <p className="text-sm text-gray-600 dark:text-gray-300">Payment processing</p>
196
- </div>
197
- <span className="px-3 py-1 bg-red-500/20 text-red-400 rounded-full text-xs">Required</span>
198
- <a href="https://dashboard.stripe.com" className="text-green-400 hover:text-green-300">
199
- <ExternalLink className="w-4 h-4" />
200
- </a>
201
- </div>
202
-
203
- {/* Audio Services */}
204
- <div className="flex items-center gap-4 p-4 bg-purple-500/10 rounded-xl">
205
- <Headphones className="w-8 h-8 text-purple-400" />
206
- <div className="flex-1">
207
- <h4 className="font-semibold">Audio Services</h4>
208
- <p className="text-sm text-gray-600 dark:text-gray-300">ElevenLabs, OpenAI for audio generation</p>
209
- </div>
210
- <span className="px-3 py-1 bg-yellow-500/20 text-yellow-400 rounded-full text-xs">Optional</span>
211
- </div>
212
- </div>
213
- </div>
214
-
215
- {/* Database Setup */}
216
- <div className={`${glass.card} ${glass.border} rounded-2xl p-6 mb-8`}>
217
- <h3 className="text-lg font-semibold mb-4">Database Setup</h3>
218
- <p className="text-sm text-gray-600 dark:text-gray-300 mb-4">
219
- Run this SQL in your Supabase SQL editor to set up the required tables:
220
- </p>
221
- <div className="bg-gray-900 rounded-xl p-4 overflow-x-auto">
222
- <pre className="text-xs text-green-400">
223
- {`-- User profiles table
224
- CREATE TABLE profiles (
225
- id UUID REFERENCES auth.users(id) PRIMARY KEY,
226
- email TEXT,
227
- full_name TEXT,
228
- avatar_url TEXT,
229
- stripe_customer_id TEXT,
230
- subscription_status TEXT DEFAULT 'inactive',
231
- created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
232
- );
233
-
234
- -- Audio content table
235
- CREATE TABLE audio_content (
236
- id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
237
- user_id UUID REFERENCES profiles(id),
238
- title TEXT NOT NULL,
239
- description TEXT,
240
- audio_url TEXT,
241
- duration INTEGER,
242
- file_size BIGINT,
243
- created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
244
- );
245
-
246
- -- Enable RLS
247
- ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;
248
- ALTER TABLE audio_content ENABLE ROW LEVEL SECURITY;
249
-
250
- -- RLS Policies
251
- CREATE POLICY "Users can view own profile" ON profiles FOR SELECT USING (auth.uid() = id);
252
- CREATE POLICY "Users can update own profile" ON profiles FOR UPDATE USING (auth.uid() = id);
253
- CREATE POLICY "Users can manage own audio content" ON audio_content FOR ALL USING (auth.uid() = user_id);`}
254
- </pre>
255
- <button
256
- onClick={() => copyToClipboard(`-- User profiles table
257
- CREATE TABLE profiles (
258
- id UUID REFERENCES auth.users(id) PRIMARY KEY,
259
- email TEXT,
260
- full_name TEXT,
261
- avatar_url TEXT,
262
- stripe_customer_id TEXT,
263
- subscription_status TEXT DEFAULT 'inactive',
264
- created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
265
- );
266
-
267
- -- Audio content table
268
- CREATE TABLE audio_content (
269
- id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
270
- user_id UUID REFERENCES profiles(id),
271
- title TEXT NOT NULL,
272
- description TEXT,
273
- audio_url TEXT,
274
- duration INTEGER,
275
- file_size BIGINT,
276
- created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
277
- );
278
-
279
- -- Enable RLS
280
- ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;
281
- ALTER TABLE audio_content ENABLE ROW LEVEL SECURITY;
282
-
283
- -- RLS Policies
284
- CREATE POLICY "Users can view own profile" ON profiles FOR SELECT USING (auth.uid() = id);
285
- CREATE POLICY "Users can update own profile" ON profiles FOR UPDATE USING (auth.uid() = id);
286
- CREATE POLICY "Users can manage own audio content" ON audio_content FOR ALL USING (auth.uid() = user_id);`, 'sql-setup')}
287
- className="mt-3 flex items-center gap-2 text-xs text-gray-400 hover:text-white transition-colors"
288
- >
289
- <Copy className="w-4 h-4" />
290
- {copiedVar === 'sql-setup' ? 'Copied!' : 'Copy SQL setup'}
291
- </button>
292
- </div>
293
- </div>
294
-
295
- {/* Additional Resources */}
296
- <div className={`${glass.card} ${glass.border} rounded-2xl p-6 mt-8`}>
297
- <h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
298
- <BookOpen className="w-5 h-5 text-green-400" />
299
- Additional Resources
300
- </h3>
301
- <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
302
- <a
303
- href="https://docs.digilogiclabs.com"
304
- className={`${glass.card} ${glass.border} p-4 rounded-xl ${animations.hover.scale} block`}
305
- >
306
- <FileText className="w-8 h-8 text-blue-400 mb-2" />
307
- <h4 className="font-medium">Documentation</h4>
308
- <p className="text-sm text-gray-600 dark:text-gray-300">Complete guides and API reference</p>
309
- </a>
310
- <a
311
- href="https://github.com/digilogiclabs/examples"
312
- className={`${glass.card} ${glass.border} p-4 rounded-xl ${animations.hover.scale} block`}
313
- >
314
- <Code2 className="w-8 h-8 text-purple-400 mb-2" />
315
- <h4 className="font-medium">Examples</h4>
316
- <p className="text-sm text-gray-600 dark:text-gray-300">Sample projects and code snippets</p>
317
- </a>
318
- </div>
319
- </div>
320
-
321
- {/* Support */}
322
- <div className={`${glass.card} ${glass.border} rounded-2xl p-6 mt-8 text-center`}>
323
- <h3 className="text-lg font-semibold mb-4">Need Help?</h3>
324
- <p className="text-gray-600 dark:text-gray-300 mb-4">
325
- Our community and support team are here to help you get started.
326
- </p>
327
- <div className="flex justify-center gap-4">
328
- <Button variant="outline" size="sm" asChild>
329
- <a href="https://discord.gg/digilogiclabs" target="_blank" rel="noopener noreferrer">
330
- Join Discord
331
- </a>
332
- </Button>
333
- <Button size="sm" asChild>
334
- <a href="https://docs.digilogiclabs.com/support" target="_blank" rel="noopener noreferrer">
335
- Get Support
336
- </a>
337
- </Button>
338
- </div>
339
- </div>
340
- </MobileContainer>
341
- </div>
342
- </main>
343
- </PageTransition>
344
- )
1
+ 'use client'
2
+
3
+ import {
4
+ Card,
5
+ Button,
6
+
7
+
8
+
9
+ } from '@digilogiclabs/saas-factory-ui'
10
+ import {
11
+ ArrowLeft,
12
+ CheckCircle,
13
+ AlertCircle,
14
+ ExternalLink,
15
+ Copy,
16
+ Database,
17
+ CreditCard,
18
+ Shield,
19
+ Headphones,
20
+ Key,
21
+ Settings,
22
+ BookOpen,
23
+ Zap,
24
+ Code2,
25
+ FileText,
26
+ Music
27
+ } from 'lucide-react'
28
+ import Link from 'next/link'
29
+ import { useState } from 'react'
30
+
31
+ export default function SetupPage() {
32
+ const [copiedVar, setCopiedVar] = useState<string | null>(null)
33
+
34
+ const projectName = "{{projectName}}"
35
+ const templateName = "Audio Platform with Payments"
36
+ const templateDescription = "UI + Authentication + Payments + Audio Features"
37
+
38
+ const envVars = [
39
+ { name: "NEXT_PUBLIC_SUPABASE_URL", example: "https://your-project.supabase.co", required: true },
40
+ { name: "NEXT_PUBLIC_SUPABASE_ANON_KEY", example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", required: true },
41
+ { name: "SUPABASE_SERVICE_ROLE_KEY", example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", required: false },
42
+ { name: "NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY", example: "pk_test_51234567890abcdef...", required: true },
43
+ { name: "STRIPE_SECRET_KEY", example: "sk_test_51234567890abcdef...", required: true },
44
+ { name: "STRIPE_WEBHOOK_SECRET", example: "whsec_1234567890abcdef...", required: true },
45
+ { name: "ELEVENLABS_API_KEY", example: "sk-1234567890abcdef...", required: false },
46
+ { name: "OPENAI_API_KEY", example: "sk-1234567890abcdef...", required: false }
47
+ ]
48
+
49
+ const copyToClipboard = async (text: string, varName: string) => {
50
+ await navigator.clipboard.writeText(text)
51
+ setCopiedVar(varName)
52
+ setTimeout(() => setCopiedVar(null), 2000)
53
+ }
54
+
55
+ return (
56
+ <div>
57
+ <main className={`min-h-screen bg-background relative overflow-hidden`}>
58
+ <div className={`absolute inset-0 bg-muted opacity-30`} />
59
+ <div className="relative z-10">
60
+ <div className="max-w-4xl mx-auto px-4">
61
+ {/* Header */}
62
+ <div className="flex items-center justify-between mb-8">
63
+ <div className="flex items-center gap-4">
64
+ <Link href="/" className={`rounded-xl border border-border bg-card p-2 rounded-xl hover:scale-[1.02] transition-transform`}>
65
+ <ArrowLeft className="w-5 h-5" />
66
+ </Link>
67
+ <div>
68
+ <h1 className="text-2xl font-bold">Setup Guide</h1>
69
+ <p className="text-muted-foreground">{templateName}</p>
70
+ </div>
71
+ </div>
72
+ <div className={`rounded-xl border border-border bg-card px-4 py-2 rounded-xl`}>
73
+ <span className="text-sm font-medium">{projectName}</span>
74
+ </div>
75
+ </div>
76
+
77
+ {/* Template Overview */}
78
+ <div className={`rounded-xl border border-border bg-card rounded-2xl p-6 mb-8`}>
79
+ <div className="flex items-center gap-4 mb-4">
80
+ <div className={`w-12 h-12 rounded-xl bg-gradient-to-r from-purple-500 to-green-500 flex items-center justify-center`}>
81
+ <Headphones className="w-6 h-6 text-white" />
82
+ </div>
83
+ <div>
84
+ <h2 className="text-xl font-semibold">{templateName}</h2>
85
+ <p className="text-muted-foreground">{templateDescription}</p>
86
+ </div>
87
+ </div>
88
+ <div className="grid grid-cols-2 md:grid-cols-4 gap-4 mt-6">
89
+ <div className="text-center p-3 rounded-xl bg-blue-500/10">
90
+ <Shield className="w-6 h-6 text-blue-400 mx-auto mb-2" />
91
+ <div className="text-sm font-medium">Authentication</div>
92
+ </div>
93
+ <div className="text-center p-3 rounded-xl bg-green-500/10">
94
+ <CreditCard className="w-6 h-6 text-green-400 mx-auto mb-2" />
95
+ <div className="text-sm font-medium">Payments</div>
96
+ </div>
97
+ <div className="text-center p-3 rounded-xl bg-purple-500/10">
98
+ <Music className="w-6 h-6 text-purple-400 mx-auto mb-2" />
99
+ <div className="text-sm font-medium">Audio Platform</div>
100
+ </div>
101
+ <div className="text-center p-3 rounded-xl bg-orange-500/10">
102
+ <Code2 className="w-6 h-6 text-orange-400 mx-auto mb-2" />
103
+ <div className="text-sm font-medium">Modern UI</div>
104
+ </div>
105
+ </div>
106
+ </div>
107
+
108
+ {/* Quick Start */}
109
+ <div className={`rounded-xl border border-border bg-card rounded-2xl p-6 mb-8`}>
110
+ <h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
111
+ <Zap className="w-5 h-5 text-yellow-400" />
112
+ Quick Start
113
+ </h3>
114
+ <div className="space-y-3 text-sm">
115
+ <div className="flex items-center gap-3">
116
+ <CheckCircle className="w-5 h-5 text-green-400" />
117
+ <span>1. Set up Supabase for database and authentication</span>
118
+ </div>
119
+ <div className="flex items-center gap-3">
120
+ <CheckCircle className="w-5 h-5 text-green-400" />
121
+ <span>2. Configure Stripe for payment processing</span>
122
+ </div>
123
+ <div className="flex items-center gap-3">
124
+ <CheckCircle className="w-5 h-5 text-green-400" />
125
+ <span>3. (Optional) Add audio AI providers like ElevenLabs</span>
126
+ </div>
127
+ <div className="flex items-center gap-3">
128
+ <CheckCircle className="w-5 h-5 text-green-400" />
129
+ <span>4. Configure environment variables below</span>
130
+ </div>
131
+ <div className="flex items-center gap-3">
132
+ <CheckCircle className="w-5 h-5 text-green-400" />
133
+ <span>5. Run <code className="px-2 py-1 bg-card rounded text-green-400">npm run dev</code></span>
134
+ </div>
135
+ </div>
136
+ </div>
137
+
138
+ {/* Environment Variables */}
139
+ <div className={`rounded-xl border border-border bg-card rounded-2xl p-6 mb-8`}>
140
+ <h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
141
+ <Key className="w-5 h-5 text-primary" />
142
+ Environment Variables
143
+ </h3>
144
+ <p className="text-sm text-muted-foreground mb-4">
145
+ Copy these to your <code className="px-2 py-1 bg-card rounded">.env.local</code> file:
146
+ </p>
147
+ <div className="bg-background rounded-xl p-4 overflow-x-auto">
148
+ <pre className="text-sm text-green-400">
149
+ {envVars.map(envVar => (
150
+ `${envVar.name}=${envVar.example}${envVar.required ? ' # Required' : ' # Optional'}`
151
+ )).join('\n')}
152
+ </pre>
153
+ <button
154
+ onClick={() => copyToClipboard(
155
+ envVars.map(envVar => `${envVar.name}=${envVar.example}`).join('\n'),
156
+ 'all-env-vars'
157
+ )}
158
+ className="mt-3 flex items-center gap-2 text-xs text-muted-foreground hover:text-white transition-colors"
159
+ >
160
+ <Copy className="w-4 h-4" />
161
+ {copiedVar === 'all-env-vars' ? 'Copied!' : 'Copy all environment variables'}
162
+ </button>
163
+ </div>
164
+ </div>
165
+
166
+ {/* Services Overview */}
167
+ <div className={`rounded-xl border border-border bg-card rounded-2xl p-6 mb-8`}>
168
+ <h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
169
+ <Settings className="w-5 h-5 text-muted-foreground" />
170
+ Required Services
171
+ </h3>
172
+ <div className="space-y-4">
173
+ {/* Supabase */}
174
+ <div className="flex items-center gap-4 p-4 bg-primary/10 rounded-xl">
175
+ <Database className="w-8 h-8 text-primary" />
176
+ <div className="flex-1">
177
+ <h4 className="font-semibold">Supabase</h4>
178
+ <p className="text-sm text-muted-foreground">Database and authentication</p>
179
+ </div>
180
+ <span className="px-3 py-1 bg-red-500/20 text-red-400 rounded-full text-xs">Required</span>
181
+ <a href="https://supabase.com/dashboard" className="text-primary hover:text-primary/80">
182
+ <ExternalLink className="w-4 h-4" />
183
+ </a>
184
+ </div>
185
+
186
+ {/* Stripe */}
187
+ <div className="flex items-center gap-4 p-4 bg-green-500/10 rounded-xl">
188
+ <CreditCard className="w-8 h-8 text-green-400" />
189
+ <div className="flex-1">
190
+ <h4 className="font-semibold">Stripe</h4>
191
+ <p className="text-sm text-muted-foreground">Payment processing</p>
192
+ </div>
193
+ <span className="px-3 py-1 bg-red-500/20 text-red-400 rounded-full text-xs">Required</span>
194
+ <a href="https://dashboard.stripe.com" className="text-green-400 hover:text-green-300">
195
+ <ExternalLink className="w-4 h-4" />
196
+ </a>
197
+ </div>
198
+
199
+ {/* Audio Services */}
200
+ <div className="flex items-center gap-4 p-4 bg-purple-500/10 rounded-xl">
201
+ <Headphones className="w-8 h-8 text-purple-400" />
202
+ <div className="flex-1">
203
+ <h4 className="font-semibold">Audio Services</h4>
204
+ <p className="text-sm text-muted-foreground">ElevenLabs, OpenAI for audio generation</p>
205
+ </div>
206
+ <span className="px-3 py-1 bg-yellow-500/20 text-yellow-400 rounded-full text-xs">Optional</span>
207
+ </div>
208
+ </div>
209
+ </div>
210
+
211
+ {/* Database Setup */}
212
+ <div className={`rounded-xl border border-border bg-card rounded-2xl p-6 mb-8`}>
213
+ <h3 className="text-lg font-semibold mb-4">Database Setup</h3>
214
+ <p className="text-sm text-muted-foreground mb-4">
215
+ Run this SQL in your Supabase SQL editor to set up the required tables:
216
+ </p>
217
+ <div className="bg-background rounded-xl p-4 overflow-x-auto">
218
+ <pre className="text-xs text-green-400">
219
+ {`-- User profiles table
220
+ CREATE TABLE profiles (
221
+ id UUID REFERENCES auth.users(id) PRIMARY KEY,
222
+ email TEXT,
223
+ full_name TEXT,
224
+ avatar_url TEXT,
225
+ stripe_customer_id TEXT,
226
+ subscription_status TEXT DEFAULT 'inactive',
227
+ created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
228
+ );
229
+
230
+ -- Audio content table
231
+ CREATE TABLE audio_content (
232
+ id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
233
+ user_id UUID REFERENCES profiles(id),
234
+ title TEXT NOT NULL,
235
+ description TEXT,
236
+ audio_url TEXT,
237
+ duration INTEGER,
238
+ file_size BIGINT,
239
+ created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
240
+ );
241
+
242
+ -- Enable RLS
243
+ ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;
244
+ ALTER TABLE audio_content ENABLE ROW LEVEL SECURITY;
245
+
246
+ -- RLS Policies
247
+ CREATE POLICY "Users can view own profile" ON profiles FOR SELECT USING (auth.uid() = id);
248
+ CREATE POLICY "Users can update own profile" ON profiles FOR UPDATE USING (auth.uid() = id);
249
+ CREATE POLICY "Users can manage own audio content" ON audio_content FOR ALL USING (auth.uid() = user_id);`}
250
+ </pre>
251
+ <button
252
+ onClick={() => copyToClipboard(`-- User profiles table
253
+ CREATE TABLE profiles (
254
+ id UUID REFERENCES auth.users(id) PRIMARY KEY,
255
+ email TEXT,
256
+ full_name TEXT,
257
+ avatar_url TEXT,
258
+ stripe_customer_id TEXT,
259
+ subscription_status TEXT DEFAULT 'inactive',
260
+ created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
261
+ );
262
+
263
+ -- Audio content table
264
+ CREATE TABLE audio_content (
265
+ id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
266
+ user_id UUID REFERENCES profiles(id),
267
+ title TEXT NOT NULL,
268
+ description TEXT,
269
+ audio_url TEXT,
270
+ duration INTEGER,
271
+ file_size BIGINT,
272
+ created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
273
+ );
274
+
275
+ -- Enable RLS
276
+ ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;
277
+ ALTER TABLE audio_content ENABLE ROW LEVEL SECURITY;
278
+
279
+ -- RLS Policies
280
+ CREATE POLICY "Users can view own profile" ON profiles FOR SELECT USING (auth.uid() = id);
281
+ CREATE POLICY "Users can update own profile" ON profiles FOR UPDATE USING (auth.uid() = id);
282
+ CREATE POLICY "Users can manage own audio content" ON audio_content FOR ALL USING (auth.uid() = user_id);`, 'sql-setup')}
283
+ className="mt-3 flex items-center gap-2 text-xs text-muted-foreground hover:text-white transition-colors"
284
+ >
285
+ <Copy className="w-4 h-4" />
286
+ {copiedVar === 'sql-setup' ? 'Copied!' : 'Copy SQL setup'}
287
+ </button>
288
+ </div>
289
+ </div>
290
+
291
+ {/* Additional Resources */}
292
+ <div className={`rounded-xl border border-border bg-card rounded-2xl p-6 mt-8`}>
293
+ <h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
294
+ <BookOpen className="w-5 h-5 text-green-400" />
295
+ Additional Resources
296
+ </h3>
297
+ <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
298
+ <a
299
+ href="https://docs.digilogiclabs.com"
300
+ className={`rounded-xl border border-border bg-card p-4 rounded-xl hover:scale-[1.02] transition-transform block`}
301
+ >
302
+ <FileText className="w-8 h-8 text-primary mb-2" />
303
+ <h4 className="font-medium">Documentation</h4>
304
+ <p className="text-sm text-muted-foreground">Complete guides and API reference</p>
305
+ </a>
306
+ <a
307
+ href="https://github.com/digilogiclabs/examples"
308
+ className={`rounded-xl border border-border bg-card p-4 rounded-xl hover:scale-[1.02] transition-transform block`}
309
+ >
310
+ <Code2 className="w-8 h-8 text-purple-400 mb-2" />
311
+ <h4 className="font-medium">Examples</h4>
312
+ <p className="text-sm text-muted-foreground">Sample projects and code snippets</p>
313
+ </a>
314
+ </div>
315
+ </div>
316
+
317
+ {/* Support */}
318
+ <div className={`rounded-xl border border-border bg-card rounded-2xl p-6 mt-8 text-center`}>
319
+ <h3 className="text-lg font-semibold mb-4">Need Help?</h3>
320
+ <p className="text-muted-foreground mb-4">
321
+ Our community and support team are here to help you get started.
322
+ </p>
323
+ <div className="flex justify-center gap-4">
324
+ <Button variant="outline" size="sm">
325
+ <a href="https://discord.gg/digilogiclabs" target="_blank" rel="noopener noreferrer">
326
+ Join Discord
327
+ </a>
328
+ </Button>
329
+ <Button size="sm">
330
+ <a href="https://docs.digilogiclabs.com/support" target="_blank" rel="noopener noreferrer">
331
+ Get Support
332
+ </a>
333
+ </Button>
334
+ </div>
335
+ </div>
336
+ </div>
337
+ </div>
338
+ </main>
339
+ </div>
340
+ )
345
341
  }