@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,396 +0,0 @@
1
- 'use client'
2
-
3
- import { useState } from 'react'
4
- import {
5
- Card,
6
- PageTransition,
7
- MobileContainer,
8
- ResponsiveGrid,
9
- useAnimationTokens,
10
- useGlassmorphism
11
- } from '@digilogiclabs/saas-factory-ui'
12
- import {
13
- ArrowLeft,
14
- MessageSquare,
15
- Database,
16
- BookOpen,
17
- BarChart3,
18
- Settings,
19
- Search,
20
- Plus,
21
- Zap,
22
- Brain,
23
- Activity,
24
- FileText,
25
- Lightbulb,
26
- Sparkles,
27
- Clock,
28
- TrendingUp,
29
- Users,
30
- Download,
31
- Share2,
32
- RefreshCw,
33
- AlertCircle,
34
- CheckCircle,
35
- Loader2
36
- } from 'lucide-react'
37
- import { useAuth } from '@digilogiclabs/app-sdk'
38
- import Link from 'next/link'
39
- import { useRAGSystem } from '../../../hooks/useRAGSystem'
40
- import { RAGChatInterface } from '../../../components/rag/RAGChatInterface'
41
- import { KnowledgeManager } from '../../../components/rag/KnowledgeManager'
42
- import { RAGAnalytics } from '../../../components/rag/RAGAnalytics'
43
- import type { GenericRAGDocumentSchema } from '@digilogiclabs/saas-factory-ai-types'
44
- import { toast } from 'sonner'
45
-
46
- export default function AIPage() {
47
- const { user, loading } = useAuth()
48
- const [activeTab, setActiveTab] = useState<'dashboard' | 'chat' | 'knowledge' | 'analytics' | 'settings'>('dashboard')
49
-
50
- const animations = useAnimationTokens()
51
- const glass = useGlassmorphism()
52
-
53
- // Initialize RAG system
54
- const ragSystem = useRAGSystem<GenericRAGDocumentSchema>({
55
- domain: 'generic', // Can be configured: 'plants', 'ecommerce', 'education'
56
- enableStreaming: true,
57
- enableCache: true,
58
- autoInitialize: true
59
- })
60
-
61
- const handleSync = async () => {
62
- try {
63
- await ragSystem.syncKnowledgeBase()
64
- } catch (error) {
65
- console.error('Sync failed:', error)
66
- }
67
- }
68
-
69
- const getHealthColor = (health: string) => {
70
- switch (health) {
71
- case 'healthy': return 'text-green-500'
72
- case 'degraded': return 'text-yellow-500'
73
- case 'down': return 'text-red-500'
74
- default: return 'text-gray-500'
75
- }
76
- }
77
-
78
- const getHealthIcon = (health: string) => {
79
- switch (health) {
80
- case 'healthy': return CheckCircle
81
- case 'degraded': return AlertCircle
82
- case 'down': return AlertCircle
83
- default: return Loader2
84
- }
85
- }
86
-
87
- if (loading) {
88
- return (
89
- <div className="min-h-screen flex items-center justify-center">
90
- <div className="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-500"></div>
91
- </div>
92
- )
93
- }
94
-
95
- if (!user) {
96
- return (
97
- <div className="min-h-screen flex items-center justify-center">
98
- <div className="text-center">
99
- <h2 className="text-2xl font-bold mb-4">Access Denied</h2>
100
- <p className="mb-4">You need to sign in to access the AI dashboard.</p>
101
- <Link href="/login" className="text-blue-500 hover:underline">
102
- Sign In
103
- </Link>
104
- </div>
105
- </div>
106
- )
107
- }
108
-
109
- const renderDashboard = () => {
110
- const HealthIcon = getHealthIcon(ragSystem.health)
111
-
112
- return (
113
- <div className="space-y-6">
114
- {/* System Status */}
115
- <Card className={`${glass.card} ${glass.border} p-6`}>
116
- <div className="flex items-center justify-between mb-4">
117
- <h3 className="text-xl font-semibold">System Status</h3>
118
- <button
119
- onClick={handleSync}
120
- disabled={ragSystem.isLoading}
121
- className={`p-2 rounded-xl ${glass.card} ${glass.border} ${animations.hover.scale} disabled:opacity-50`}
122
- >
123
- {ragSystem.isLoading ? (
124
- <Loader2 className="w-4 h-4 animate-spin" />
125
- ) : (
126
- <RefreshCw className="w-4 h-4" />
127
- )}
128
- </button>
129
- </div>
130
-
131
- <div className="grid grid-cols-1 md:grid-cols-3 gap-4">
132
- <div className="flex items-center gap-3">
133
- <HealthIcon className={`w-5 h-5 ${getHealthColor(ragSystem.health)}`} />
134
- <div>
135
- <p className="font-medium">System Health</p>
136
- <p className="text-sm text-gray-600 dark:text-gray-300 capitalize">
137
- {ragSystem.health}
138
- </p>
139
- </div>
140
- </div>
141
-
142
- <div className="flex items-center gap-3">
143
- <Activity className="w-5 h-5 text-blue-500" />
144
- <div>
145
- <p className="font-medium">Status</p>
146
- <p className="text-sm text-gray-600 dark:text-gray-300">
147
- {ragSystem.isReady ? 'Ready' : 'Initializing...'}
148
- </p>
149
- </div>
150
- </div>
151
-
152
- <div className="flex items-center gap-3">
153
- <Clock className="w-5 h-5 text-purple-500" />
154
- <div>
155
- <p className="font-medium">Last Sync</p>
156
- <p className="text-sm text-gray-600 dark:text-gray-300">
157
- {ragSystem.lastSyncAt
158
- ? ragSystem.lastSyncAt.toLocaleString()
159
- : 'Never'
160
- }
161
- </p>
162
- </div>
163
- </div>
164
- </div>
165
- </Card>
166
-
167
- {/* Statistics Overview */}
168
- <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
169
- <Card className={`${glass.card} ${glass.border} p-6 text-center ${animations.hover.lift}`}>
170
- <div className="text-3xl font-bold text-blue-500 mb-2">
171
- {ragSystem.totalQueries}
172
- </div>
173
- <div className="text-sm text-gray-600 dark:text-gray-300">Total Queries</div>
174
- </Card>
175
-
176
- <Card className={`${glass.card} ${glass.border} p-6 text-center ${animations.hover.lift}`}>
177
- <div className="text-3xl font-bold text-green-500 mb-2">
178
- {ragSystem.totalDocuments}
179
- </div>
180
- <div className="text-sm text-gray-600 dark:text-gray-300">Knowledge Docs</div>
181
- </Card>
182
-
183
- <Card className={`${glass.card} ${glass.border} p-6 text-center ${animations.hover.lift}`}>
184
- <div className="text-3xl font-bold text-purple-500 mb-2">
185
- {ragSystem.cacheSize}
186
- </div>
187
- <div className="text-sm text-gray-600 dark:text-gray-300">Cached Responses</div>
188
- </Card>
189
-
190
- <Card className={`${glass.card} ${glass.border} p-6 text-center ${animations.hover.lift}`}>
191
- <div className="text-3xl font-bold text-orange-500 mb-2">
192
- {ragSystem.queryHistory.length}
193
- </div>
194
- <div className="text-sm text-gray-600 dark:text-gray-300">Recent Queries</div>
195
- </Card>
196
- </div>
197
-
198
- {/* Quick Actions */}
199
- <Card className={`${glass.card} ${glass.border} p-6`}>
200
- <h3 className="text-xl font-semibold mb-4">Quick Actions</h3>
201
-
202
- <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4">
203
- <button
204
- onClick={() => setActiveTab('chat')}
205
- disabled={!ragSystem.canQuery}
206
- className={`p-4 rounded-xl ${glass.card} ${glass.border} ${animations.hover.lift} ${animations.transition.smooth} disabled:opacity-50 text-left`}
207
- >
208
- <MessageSquare className="w-8 h-8 text-blue-500 mb-3" />
209
- <h4 className="font-semibold mb-1">AI Chat</h4>
210
- <p className="text-sm text-gray-600 dark:text-gray-300">
211
- Chat with your knowledge base
212
- </p>
213
- </button>
214
-
215
- <button
216
- onClick={() => setActiveTab('knowledge')}
217
- className={`p-4 rounded-xl ${glass.card} ${glass.border} ${animations.hover.lift} ${animations.transition.smooth} text-left`}
218
- >
219
- <Database className="w-8 h-8 text-green-500 mb-3" />
220
- <h4 className="font-semibold mb-1">Knowledge Base</h4>
221
- <p className="text-sm text-gray-600 dark:text-gray-300">
222
- Manage your documents
223
- </p>
224
- </button>
225
-
226
- <button
227
- onClick={() => setActiveTab('analytics')}
228
- className={`p-4 rounded-xl ${glass.card} ${glass.border} ${animations.hover.lift} ${animations.transition.smooth} text-left`}
229
- >
230
- <BarChart3 className="w-8 h-8 text-purple-500 mb-3" />
231
- <h4 className="font-semibold mb-1">Analytics</h4>
232
- <p className="text-sm text-gray-600 dark:text-gray-300">
233
- View usage insights
234
- </p>
235
- </button>
236
-
237
- <button
238
- onClick={() => ragSystem.clearCache()}
239
- className={`p-4 rounded-xl ${glass.card} ${glass.border} ${animations.hover.lift} ${animations.transition.smooth} text-left`}
240
- >
241
- <RefreshCw className="w-8 h-8 text-orange-500 mb-3" />
242
- <h4 className="font-semibold mb-1">Clear Cache</h4>
243
- <p className="text-sm text-gray-600 dark:text-gray-300">
244
- Reset cached responses
245
- </p>
246
- </button>
247
- </div>
248
- </Card>
249
-
250
- {/* Recent Query History */}
251
- {ragSystem.queryHistory.length > 0 && (
252
- <Card className={`${glass.card} ${glass.border} p-6`}>
253
- <h3 className="text-xl font-semibold mb-4">Recent Queries</h3>
254
-
255
- <div className="space-y-3">
256
- {ragSystem.queryHistory.slice(0, 5).map((query, index) => (
257
- <div
258
- key={index}
259
- className={`p-3 rounded-lg bg-gray-50 dark:bg-gray-800/50 ${animations.hover.lift}`}
260
- >
261
- <div className="flex items-start justify-between">
262
- <div className="flex-1">
263
- <p className="font-medium line-clamp-1">{query.query}</p>
264
- <div className="flex items-center gap-2 mt-1 text-sm text-gray-600 dark:text-gray-300">
265
- <Clock className="w-3 h-3" />
266
- {new Date(query.timestamp).toLocaleTimeString()}
267
- {query.category && (
268
- <>
269
- <span>•</span>
270
- <span className="capitalize">{query.category}</span>
271
- </>
272
- )}
273
- </div>
274
- </div>
275
- <button
276
- onClick={() => {
277
- setActiveTab('chat')
278
- // Would trigger a new query with this text
279
- }}
280
- className={`p-1 rounded ${animations.hover.scale}`}
281
- >
282
- <RefreshCw className="w-4 h-4" />
283
- </button>
284
- </div>
285
- </div>
286
- ))}
287
- </div>
288
- </Card>
289
- )}
290
- </div>
291
- )
292
- }
293
-
294
- const renderChat = () => (
295
- <Card className={`${glass.card} ${glass.border} p-6 h-[calc(100vh-200px)]`}>
296
- <RAGChatInterface
297
- ragSystem={ragSystem}
298
- enableStreaming={true}
299
- showSources={true}
300
- showConfidence={true}
301
- onError={(error) => toast.error(error.message)}
302
- />
303
- </Card>
304
- )
305
-
306
- const renderKnowledge = () => (
307
- <Card className={`${glass.card} ${glass.border} p-6`}>
308
- <KnowledgeManager
309
- ragSystem={ragSystem}
310
- enableBulkOperations={true}
311
- enableExport={true}
312
- onSuccess={(message) => toast.success(message)}
313
- onError={(error) => toast.error(error)}
314
- />
315
- </Card>
316
- )
317
-
318
- const renderAnalytics = () => (
319
- <Card className={`${glass.card} ${glass.border} p-6`}>
320
- <RAGAnalytics
321
- ragSystem={ragSystem}
322
- timeRange="7d"
323
- showDetailedMetrics={true}
324
- />
325
- </Card>
326
- )
327
-
328
- const tabs = [
329
- { id: 'dashboard', label: 'Dashboard', icon: Brain },
330
- { id: 'chat', label: 'AI Chat', icon: MessageSquare },
331
- { id: 'knowledge', label: 'Knowledge', icon: BookOpen },
332
- { id: 'analytics', label: 'Analytics', icon: BarChart3 },
333
- ]
334
-
335
- return (
336
- <PageTransition type="slide" direction="up" duration={300}>
337
- <main className={`min-h-screen ${glass.background.primary} relative overflow-hidden`}>
338
- <div className={`absolute inset-0 ${glass.background.accent} opacity-30`} />
339
- <div className="relative z-10">
340
- <MobileContainer className="py-8">
341
- {/* Header */}
342
- <div className="flex items-center justify-between mb-8">
343
- <div className="flex items-center gap-4">
344
- <Link href="/" className={`${glass.card} ${glass.border} p-2 rounded-xl ${animations.hover.scale}`}>
345
- <ArrowLeft className="w-5 h-5" />
346
- </Link>
347
- <div>
348
- <h1 className="text-2xl font-bold">AI Knowledge Assistant</h1>
349
- <p className="text-gray-600 dark:text-gray-300">
350
- Powered by RAG v4.0.0
351
- </p>
352
- </div>
353
- </div>
354
-
355
- {ragSystem.hasError && (
356
- <div className="flex items-center gap-2 text-red-500">
357
- <AlertCircle className="w-5 h-5" />
358
- <span className="text-sm">System Error</span>
359
- </div>
360
- )}
361
- </div>
362
-
363
- {/* Tab Navigation */}
364
- <div className={`${glass.card} ${glass.border} rounded-2xl p-1 mb-8 inline-flex`}>
365
- {tabs.map((tab) => {
366
- const Icon = tab.icon
367
- return (
368
- <button
369
- key={tab.id}
370
- onClick={() => setActiveTab(tab.id as any)}
371
- className={`flex items-center gap-2 px-4 py-2 rounded-xl text-sm font-medium transition-all duration-200 ${
372
- activeTab === tab.id
373
- ? 'bg-blue-500 text-white shadow-lg'
374
- : 'text-gray-600 dark:text-gray-300 hover:bg-white/10'
375
- }`}
376
- >
377
- <Icon className="w-4 h-4" />
378
- {tab.label}
379
- </button>
380
- )
381
- })}
382
- </div>
383
-
384
- {/* Tab Content */}
385
- <div className="space-y-6">
386
- {activeTab === 'dashboard' && renderDashboard()}
387
- {activeTab === 'chat' && renderChat()}
388
- {activeTab === 'knowledge' && renderKnowledge()}
389
- {activeTab === 'analytics' && renderAnalytics()}
390
- </div>
391
- </MobileContainer>
392
- </div>
393
- </main>
394
- </PageTransition>
395
- )
396
- }
@@ -1,49 +0,0 @@
1
- /**
2
- * Example test file demonstrating testing patterns for SaaS Factory components
3
- *
4
- * This is optional and serves as a reference for testing your components.
5
- * You can delete this file if you don't need example tests.
6
- */
7
-
8
- import { render, screen } from '@testing-library/react'
9
- import { Button } from '@digilogiclabs/saas-factory-ui'
10
-
11
- // Example: Testing UI components
12
- describe('UI Components', () => {
13
- it('renders button with correct text', () => {
14
- render(<Button>Click me</Button>)
15
- expect(screen.getByRole('button', { name: /click me/i })).toBeInTheDocument()
16
- })
17
-
18
- it('button can be disabled', () => {
19
- render(<Button disabled>Disabled button</Button>)
20
- expect(screen.getByRole('button')).toBeDisabled()
21
- })
22
- })
23
-
24
- // Example: Testing custom components
25
- function MockComponent({ title }: { title: string }) {
26
- return <h1>{title}</h1>
27
- }
28
-
29
- describe('Custom Components', () => {
30
- it('renders with correct title', () => {
31
- render(<MockComponent title="Test Title" />)
32
- expect(screen.getByRole('heading', { level: 1 })).toHaveTextContent('Test Title')
33
- })
34
- })
35
-
36
- // Example: Testing utilities
37
- function formatCurrency(amount: number): string {
38
- return new Intl.NumberFormat('en-US', {
39
- style: 'currency',
40
- currency: 'USD',
41
- }).format(amount)
42
- }
43
-
44
- describe('Utilities', () => {
45
- it('formats currency correctly', () => {
46
- expect(formatCurrency(1000)).toBe('$1,000.00')
47
- expect(formatCurrency(0)).toBe('$0.00')
48
- })
49
- })
@@ -1,74 +0,0 @@
1
- import '@testing-library/jest-dom'
2
- import { vi, beforeEach, afterAll } from 'vitest'
3
-
4
- // Mock Next.js router
5
- vi.mock('next/navigation', () => ({
6
- useRouter: () => ({
7
- push: vi.fn(),
8
- back: vi.fn(),
9
- forward: vi.fn(),
10
- refresh: vi.fn(),
11
- replace: vi.fn(),
12
- prefetch: vi.fn(),
13
- }),
14
- useSearchParams: () => new URLSearchParams(),
15
- usePathname: () => '/',
16
- }))
17
-
18
- // Mock App SDK (optional - only if testing auth/payment components)
19
- vi.mock('@digilogiclabs/app-sdk', () => ({
20
- useAuth: () => ({
21
- user: null,
22
- loading: false,
23
- error: null,
24
- signIn: vi.fn(),
25
- signUp: vi.fn(),
26
- signOut: vi.fn(),
27
- signInWithOAuth: vi.fn(),
28
- }),
29
- usePayments: () => ({
30
- createCheckoutSession: vi.fn(),
31
- createPortalSession: vi.fn(),
32
- subscription: null,
33
- loading: false,
34
- }),
35
- DLLProvider: ({ children }: { children: React.ReactNode }) => children,
36
- }))
37
-
38
- // Global test utilities
39
- global.ResizeObserver = vi.fn().mockImplementation(() => ({
40
- observe: vi.fn(),
41
- unobserve: vi.fn(),
42
- disconnect: vi.fn(),
43
- }))
44
-
45
- // Suppress console warnings in tests unless needed
46
- const originalConsoleError = console.error
47
- const originalConsoleWarn = console.warn
48
-
49
- beforeEach(() => {
50
- console.error = (...args: any[]) => {
51
- if (
52
- typeof args[0] === 'string' &&
53
- args[0].includes('Warning: ReactDOM.render is no longer supported')
54
- ) {
55
- return
56
- }
57
- originalConsoleError.call(console, ...args)
58
- }
59
-
60
- console.warn = (...args: any[]) => {
61
- if (
62
- typeof args[0] === 'string' &&
63
- args[0].includes('useLayoutEffect does nothing on the server')
64
- ) {
65
- return
66
- }
67
- originalConsoleWarn.call(console, ...args)
68
- }
69
- })
70
-
71
- afterAll(() => {
72
- console.error = originalConsoleError
73
- console.warn = originalConsoleWarn
74
- })
@@ -1,17 +0,0 @@
1
- import { defineConfig } from 'vitest/config'
2
- import react from '@vitejs/plugin-react'
3
- import path from 'path'
4
-
5
- export default defineConfig({
6
- plugins: [react()],
7
- test: {
8
- environment: 'jsdom',
9
- setupFiles: ['./src/test/setup.ts'],
10
- globals: true,
11
- },
12
- resolve: {
13
- alias: {
14
- '@': path.resolve(__dirname, './src'),
15
- },
16
- },
17
- })
@@ -1,49 +0,0 @@
1
- /**
2
- * Example test file demonstrating testing patterns for SaaS Factory components
3
- *
4
- * This is optional and serves as a reference for testing your components.
5
- * You can delete this file if you don't need example tests.
6
- */
7
-
8
- import { render, screen } from '@testing-library/react'
9
- import { Button } from '@digilogiclabs/saas-factory-ui'
10
-
11
- // Example: Testing UI components
12
- describe('UI Components', () => {
13
- it('renders button with correct text', () => {
14
- render(<Button>Click me</Button>)
15
- expect(screen.getByRole('button', { name: /click me/i })).toBeInTheDocument()
16
- })
17
-
18
- it('button can be disabled', () => {
19
- render(<Button disabled>Disabled button</Button>)
20
- expect(screen.getByRole('button')).toBeDisabled()
21
- })
22
- })
23
-
24
- // Example: Testing custom components
25
- function MockComponent({ title }: { title: string }) {
26
- return <h1>{title}</h1>
27
- }
28
-
29
- describe('Custom Components', () => {
30
- it('renders with correct title', () => {
31
- render(<MockComponent title="Test Title" />)
32
- expect(screen.getByRole('heading', { level: 1 })).toHaveTextContent('Test Title')
33
- })
34
- })
35
-
36
- // Example: Testing utilities
37
- function formatCurrency(amount: number): string {
38
- return new Intl.NumberFormat('en-US', {
39
- style: 'currency',
40
- currency: 'USD',
41
- }).format(amount)
42
- }
43
-
44
- describe('Utilities', () => {
45
- it('formats currency correctly', () => {
46
- expect(formatCurrency(1000)).toBe('$1,000.00')
47
- expect(formatCurrency(0)).toBe('$0.00')
48
- })
49
- })
@@ -1,74 +0,0 @@
1
- import '@testing-library/jest-dom'
2
- import { vi, beforeEach, afterAll } from 'vitest'
3
-
4
- // Mock Next.js router
5
- vi.mock('next/navigation', () => ({
6
- useRouter: () => ({
7
- push: vi.fn(),
8
- back: vi.fn(),
9
- forward: vi.fn(),
10
- refresh: vi.fn(),
11
- replace: vi.fn(),
12
- prefetch: vi.fn(),
13
- }),
14
- useSearchParams: () => new URLSearchParams(),
15
- usePathname: () => '/',
16
- }))
17
-
18
- // Mock App SDK (optional - only if testing auth/payment components)
19
- vi.mock('@digilogiclabs/app-sdk', () => ({
20
- useAuth: () => ({
21
- user: null,
22
- loading: false,
23
- error: null,
24
- signIn: vi.fn(),
25
- signUp: vi.fn(),
26
- signOut: vi.fn(),
27
- signInWithOAuth: vi.fn(),
28
- }),
29
- usePayments: () => ({
30
- createCheckoutSession: vi.fn(),
31
- createPortalSession: vi.fn(),
32
- subscription: null,
33
- loading: false,
34
- }),
35
- DLLProvider: ({ children }: { children: React.ReactNode }) => children,
36
- }))
37
-
38
- // Global test utilities
39
- global.ResizeObserver = vi.fn().mockImplementation(() => ({
40
- observe: vi.fn(),
41
- unobserve: vi.fn(),
42
- disconnect: vi.fn(),
43
- }))
44
-
45
- // Suppress console warnings in tests unless needed
46
- const originalConsoleError = console.error
47
- const originalConsoleWarn = console.warn
48
-
49
- beforeEach(() => {
50
- console.error = (...args: any[]) => {
51
- if (
52
- typeof args[0] === 'string' &&
53
- args[0].includes('Warning: ReactDOM.render is no longer supported')
54
- ) {
55
- return
56
- }
57
- originalConsoleError.call(console, ...args)
58
- }
59
-
60
- console.warn = (...args: any[]) => {
61
- if (
62
- typeof args[0] === 'string' &&
63
- args[0].includes('useLayoutEffect does nothing on the server')
64
- ) {
65
- return
66
- }
67
- originalConsoleWarn.call(console, ...args)
68
- }
69
- })
70
-
71
- afterAll(() => {
72
- console.error = originalConsoleError
73
- console.warn = originalConsoleWarn
74
- })
@@ -1,17 +0,0 @@
1
- import { defineConfig } from 'vitest/config'
2
- import react from '@vitejs/plugin-react'
3
- import path from 'path'
4
-
5
- export default defineConfig({
6
- plugins: [react()],
7
- test: {
8
- environment: 'jsdom',
9
- setupFiles: ['./src/test/setup.ts'],
10
- globals: true,
11
- },
12
- resolve: {
13
- alias: {
14
- '@': path.resolve(__dirname, './src'),
15
- },
16
- },
17
- })
@@ -1,8 +0,0 @@
1
- /** @type {import('eslint').Linter.Config} */
2
- module.exports = {
3
- extends: ['next/core-web-vitals'],
4
- rules: {
5
- // Add any custom rules here
6
- },
7
- }
8
-