@digilogiclabs/create-saas-app 2.11.0 → 2.12.0

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 (358) hide show
  1. package/CHANGELOG.md +6 -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.map +1 -1
  6. package/dist/generators/template-generator.js +15 -8
  7. package/dist/generators/template-generator.js.map +1 -1
  8. package/dist/templates/shared/admin/web/src/components/admin-nav.tsx +3 -3
  9. package/dist/templates/shared/auth/supabase/web/src/lib/auth-session.ts +36 -16
  10. package/dist/templates/shared/auth/supabase/web/src/middleware.ts +6 -0
  11. package/dist/templates/shared/cookie-consent/web/components/cookie-consent.tsx +5 -5
  12. package/dist/templates/shared/design/web/src/components/ui/button.tsx +56 -0
  13. package/dist/templates/shared/email/web/src/lib/email/client.ts +1 -1
  14. package/dist/templates/shared/error-pages/web/src/app/error.tsx +13 -11
  15. package/dist/templates/shared/error-pages/web/src/app/global-error.tsx +2 -0
  16. package/dist/templates/shared/error-pages/web/src/app/not-found.tsx +6 -6
  17. package/dist/templates/shared/legal/web/src/app/(legal)/privacy/page.tsx +4 -4
  18. package/dist/templates/shared/legal/web/src/app/(legal)/terms/page.tsx +4 -4
  19. package/dist/templates/shared/loading/web/components/skeleton.tsx +4 -4
  20. package/dist/templates/shared/mock/web/.env.local +55 -0
  21. package/dist/templates/shared/mock/web/src/components/mock-auth-provider.tsx +72 -0
  22. package/dist/templates/shared/mock/web/src/components/mock-banner.tsx +29 -0
  23. package/dist/templates/shared/mock/web/src/lib/mock.ts +147 -0
  24. package/dist/templates/shared/payments/web/src/app/api/webhooks/stripe/route.ts +10 -4
  25. package/dist/templates/shared/redis/web/src/lib/redis.ts +1 -1
  26. package/dist/templates/web/base/template/eslint.config.mjs +14 -0
  27. package/dist/templates/web/base/template/src/app/auth/callback/route.ts +1 -1
  28. package/dist/templates/web/base/template/src/app/checkout/page.tsx +76 -103
  29. package/dist/templates/web/base/template/src/app/dashboard/page.tsx +145 -329
  30. package/dist/templates/web/base/template/src/app/layout.tsx +40 -38
  31. package/dist/templates/web/base/template/src/app/login/page.tsx +116 -66
  32. package/dist/templates/web/base/template/src/app/page.tsx +97 -193
  33. package/dist/templates/web/base/template/src/app/settings/page.tsx +154 -0
  34. package/dist/templates/web/base/template/src/app/signup/page.tsx +117 -66
  35. package/dist/templates/web/base/template/src/components/providers/app-providers.tsx +8 -3
  36. package/dist/templates/web/base/template/src/components/shared/header.tsx +229 -63
  37. package/dist/templates/web/ui-auth/template/eslint.config.mjs +14 -0
  38. package/dist/templates/web/ui-auth/template/src/app/checkout/page.tsx +3 -3
  39. package/dist/templates/web/ui-auth/template/src/app/dev-setup/page.tsx +81 -91
  40. package/dist/templates/web/ui-auth/template/src/app/layout.tsx +38 -36
  41. package/dist/templates/web/ui-auth/template/src/app/login/page.tsx +22 -45
  42. package/dist/templates/web/ui-auth/template/src/app/page.tsx +106 -306
  43. package/dist/templates/web/ui-auth/template/src/app/setup/page.tsx +387 -402
  44. package/dist/templates/web/ui-auth/template/src/app/signup/page.tsx +24 -47
  45. package/dist/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +8 -3
  46. package/dist/templates/web/ui-auth/template/src/components/shared/header.tsx +229 -94
  47. package/dist/templates/web/ui-auth-ai/template/src/app/layout.tsx +38 -45
  48. package/dist/templates/web/ui-auth-ai/template/src/app/login/page.tsx +86 -0
  49. package/dist/templates/web/ui-auth-ai/template/src/app/page.tsx +107 -193
  50. package/dist/templates/web/ui-auth-ai/template/src/app/signup/page.tsx +105 -0
  51. package/dist/templates/web/ui-auth-ai/template/src/components/ai/audio-generator.tsx +144 -140
  52. package/dist/templates/web/ui-auth-ai/template/src/components/ai/video-generator.tsx +156 -157
  53. package/dist/templates/web/ui-auth-ai/template/src/components/auth/login-form.tsx +7 -3
  54. package/dist/templates/web/ui-auth-ai/template/src/components/providers/app-providers.tsx +25 -0
  55. package/dist/templates/web/ui-auth-ai/template/src/components/shared/footer.tsx +36 -0
  56. package/dist/templates/web/ui-auth-ai/template/src/components/shared/header.tsx +228 -0
  57. package/dist/templates/web/ui-auth-ai/template/src/components/ui/button.tsx +5 -5
  58. package/dist/templates/web/ui-auth-ai/template/src/components/ui/input.tsx +1 -1
  59. package/dist/templates/web/ui-auth-ai/template/src/components/ui/select.tsx +1 -1
  60. package/dist/templates/web/ui-auth-ai/template/src/components/ui/textarea.tsx +1 -1
  61. package/dist/templates/web/ui-auth-ai/template/src/components/ui/theme-toggle.tsx +34 -0
  62. package/dist/templates/web/ui-auth-ai/template/src/lib/supabase.ts +6 -4
  63. package/dist/templates/web/ui-auth-ai/template/src/providers/auth-provider.tsx +7 -5
  64. package/dist/templates/web/ui-auth-payments/template/src/app/billing/page.tsx +63 -192
  65. package/dist/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +104 -296
  66. package/dist/templates/web/ui-auth-payments/template/src/app/dashboard/page.tsx +27 -27
  67. package/dist/templates/web/ui-auth-payments/template/src/app/dev-setup/page.tsx +70 -81
  68. package/dist/templates/web/ui-auth-payments/template/src/app/layout.tsx +38 -36
  69. package/dist/templates/web/ui-auth-payments/template/src/app/login/loading.tsx +9 -9
  70. package/dist/templates/web/ui-auth-payments/template/src/app/login/page.tsx +4 -104
  71. package/dist/templates/web/ui-auth-payments/template/src/app/page.tsx +69 -337
  72. package/dist/templates/web/ui-auth-payments/template/src/app/setup/page.tsx +55 -68
  73. package/dist/templates/web/ui-auth-payments/template/src/app/signup/loading.tsx +13 -13
  74. package/dist/templates/web/ui-auth-payments/template/src/app/signup/page.tsx +4 -123
  75. package/dist/templates/web/ui-auth-payments/template/src/components/client/auth-status.tsx +37 -52
  76. package/dist/templates/web/ui-auth-payments/template/src/components/client/login-form.tsx +49 -103
  77. package/dist/templates/web/ui-auth-payments/template/src/components/client/newsletter-signup.tsx +4 -4
  78. package/dist/templates/web/ui-auth-payments/template/src/components/client/signup-form.tsx +60 -140
  79. package/dist/templates/web/ui-auth-payments/template/src/components/providers/app-providers.tsx +25 -28
  80. package/dist/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +229 -230
  81. package/dist/templates/web/ui-auth-payments/template/src/lib/actions/auth.ts +245 -245
  82. package/dist/templates/web/ui-auth-payments/template/src/lib/actions/index.ts +339 -339
  83. package/dist/templates/web/ui-auth-payments-ai/template/src/app/ai/page.tsx +305 -309
  84. package/dist/templates/web/ui-auth-payments-ai/template/src/app/billing/page.tsx +62 -312
  85. package/dist/templates/web/ui-auth-payments-ai/template/src/app/checkout/page.tsx +109 -125
  86. package/dist/templates/web/ui-auth-payments-ai/template/src/app/dashboard/page.tsx +27 -27
  87. package/dist/templates/web/ui-auth-payments-ai/template/src/app/dev-setup/page.tsx +68 -83
  88. package/dist/templates/web/ui-auth-payments-ai/template/src/app/layout.tsx +40 -38
  89. package/dist/templates/web/ui-auth-payments-ai/template/src/app/onboarding/page.tsx +20 -20
  90. package/dist/templates/web/ui-auth-payments-ai/template/src/app/page.tsx +140 -394
  91. package/dist/templates/web/ui-auth-payments-ai/template/src/app/settings/page.tsx +28 -27
  92. package/dist/templates/web/ui-auth-payments-ai/template/src/app/setup/page.tsx +51 -66
  93. package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/auth-status.tsx +37 -52
  94. package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/login-form.tsx +50 -79
  95. package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/signup-form.tsx +58 -111
  96. package/dist/templates/web/ui-auth-payments-ai/template/src/components/providers/app-providers.tsx +8 -3
  97. package/dist/templates/web/ui-auth-payments-ai/template/src/components/shared/header.tsx +229 -252
  98. package/dist/templates/web/ui-auth-payments-ai/template/src/lib/actions/auth.ts +245 -245
  99. package/dist/templates/web/ui-auth-payments-audio/template/src/app/billing/page.tsx +63 -192
  100. package/dist/templates/web/ui-auth-payments-audio/template/src/app/checkout/page.tsx +109 -125
  101. package/dist/templates/web/ui-auth-payments-audio/template/src/app/dashboard/page.tsx +27 -27
  102. package/dist/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +40 -38
  103. package/dist/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +122 -385
  104. package/dist/templates/web/ui-auth-payments-audio/template/src/app/setup/page.tsx +340 -344
  105. package/dist/templates/web/ui-auth-payments-audio/template/src/components/client/auth-status.tsx +37 -52
  106. package/dist/templates/web/ui-auth-payments-audio/template/src/components/client/login-form.tsx +49 -103
  107. package/dist/templates/web/ui-auth-payments-audio/template/src/components/client/signup-form.tsx +60 -140
  108. package/dist/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +8 -3
  109. package/dist/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +229 -252
  110. package/dist/templates/web/ui-auth-payments-audio/template/src/lib/actions/auth.ts +3 -3
  111. package/dist/templates/web/ui-auth-payments-video/template/src/app/billing/page.tsx +63 -192
  112. package/dist/templates/web/ui-auth-payments-video/template/src/app/checkout/page.tsx +109 -125
  113. package/dist/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +38 -36
  114. package/dist/templates/web/ui-auth-payments-video/template/src/app/login/page.tsx +9 -109
  115. package/dist/templates/web/ui-auth-payments-video/template/src/app/page.tsx +132 -392
  116. package/dist/templates/web/ui-auth-payments-video/template/src/app/setup/page.tsx +346 -350
  117. package/dist/templates/web/ui-auth-payments-video/template/src/app/signup/page.tsx +9 -128
  118. package/dist/templates/web/ui-auth-payments-video/template/src/components/client/login-form.tsx +90 -0
  119. package/dist/templates/web/ui-auth-payments-video/template/src/components/client/signup-form.tsx +105 -0
  120. package/dist/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +8 -3
  121. package/dist/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +229 -246
  122. package/dist/templates/web/ui-only/template/eslint.config.mjs +14 -0
  123. package/dist/templates/web/ui-only/template/src/app/checkout/page.tsx +2 -2
  124. package/dist/templates/web/ui-only/template/src/app/login/page.tsx +69 -63
  125. package/dist/templates/web/ui-only/template/src/app/page.tsx +69 -91
  126. package/dist/templates/web/ui-only/template/src/app/signup/page.tsx +94 -79
  127. package/dist/templates/web/ui-only/template/src/components/providers/app-providers.tsx +1 -6
  128. package/dist/templates/web/ui-only/template/src/components/shared/header.tsx +90 -53
  129. package/dist/templates/web/ui-package-test/template/package.json +19 -23
  130. package/dist/templates/web/ui-package-test/template/postcss.config.mjs +8 -0
  131. package/dist/templates/web/ui-package-test/template/src/app/globals.css +88 -0
  132. package/dist/templates/web/ui-package-test/template/src/app/layout.tsx +27 -0
  133. package/dist/templates/web/ui-package-test/template/src/app/page.tsx +46 -106
  134. package/package.json +1 -1
  135. package/src/templates/shared/admin/web/src/components/admin-nav.tsx +3 -3
  136. package/src/templates/shared/auth/supabase/web/src/lib/auth-session.ts +36 -16
  137. package/src/templates/shared/auth/supabase/web/src/middleware.ts +6 -0
  138. package/src/templates/shared/cookie-consent/web/components/cookie-consent.tsx +5 -5
  139. package/src/templates/shared/design/web/src/components/ui/button.tsx +56 -0
  140. package/src/templates/shared/email/web/src/lib/email/client.ts +1 -1
  141. package/src/templates/shared/error-pages/web/src/app/error.tsx +13 -11
  142. package/src/templates/shared/error-pages/web/src/app/global-error.tsx +2 -0
  143. package/src/templates/shared/error-pages/web/src/app/not-found.tsx +6 -6
  144. package/src/templates/shared/legal/web/src/app/(legal)/privacy/page.tsx +4 -4
  145. package/src/templates/shared/legal/web/src/app/(legal)/terms/page.tsx +4 -4
  146. package/src/templates/shared/loading/web/components/skeleton.tsx +4 -4
  147. package/src/templates/shared/mock/web/.env.local +55 -0
  148. package/src/templates/shared/mock/web/src/components/mock-auth-provider.tsx +72 -0
  149. package/src/templates/shared/mock/web/src/components/mock-banner.tsx +29 -0
  150. package/src/templates/shared/mock/web/src/lib/mock.ts +147 -0
  151. package/src/templates/shared/payments/web/src/app/api/webhooks/stripe/route.ts +10 -4
  152. package/src/templates/shared/redis/web/src/lib/redis.ts +1 -1
  153. package/src/templates/web/base/template/eslint.config.mjs +14 -0
  154. package/src/templates/web/base/template/src/app/auth/callback/route.ts +1 -1
  155. package/src/templates/web/base/template/src/app/checkout/page.tsx +76 -103
  156. package/src/templates/web/base/template/src/app/dashboard/page.tsx +145 -329
  157. package/src/templates/web/base/template/src/app/layout.tsx +40 -38
  158. package/src/templates/web/base/template/src/app/login/page.tsx +116 -66
  159. package/src/templates/web/base/template/src/app/page.tsx +97 -193
  160. package/src/templates/web/base/template/src/app/settings/page.tsx +154 -0
  161. package/src/templates/web/base/template/src/app/signup/page.tsx +117 -66
  162. package/src/templates/web/base/template/src/components/providers/app-providers.tsx +8 -3
  163. package/src/templates/web/base/template/src/components/shared/header.tsx +229 -63
  164. package/src/templates/web/ui-auth/template/eslint.config.mjs +14 -0
  165. package/src/templates/web/ui-auth/template/src/app/checkout/page.tsx +3 -3
  166. package/src/templates/web/ui-auth/template/src/app/dev-setup/page.tsx +81 -91
  167. package/src/templates/web/ui-auth/template/src/app/layout.tsx +38 -36
  168. package/src/templates/web/ui-auth/template/src/app/login/page.tsx +22 -45
  169. package/src/templates/web/ui-auth/template/src/app/page.tsx +106 -306
  170. package/src/templates/web/ui-auth/template/src/app/setup/page.tsx +387 -402
  171. package/src/templates/web/ui-auth/template/src/app/signup/page.tsx +24 -47
  172. package/src/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +8 -3
  173. package/src/templates/web/ui-auth/template/src/components/shared/header.tsx +229 -94
  174. package/src/templates/web/ui-auth-ai/template/src/app/layout.tsx +38 -45
  175. package/src/templates/web/ui-auth-ai/template/src/app/login/page.tsx +86 -0
  176. package/src/templates/web/ui-auth-ai/template/src/app/page.tsx +107 -193
  177. package/src/templates/web/ui-auth-ai/template/src/app/signup/page.tsx +105 -0
  178. package/src/templates/web/ui-auth-ai/template/src/components/ai/audio-generator.tsx +144 -140
  179. package/src/templates/web/ui-auth-ai/template/src/components/ai/video-generator.tsx +156 -157
  180. package/src/templates/web/ui-auth-ai/template/src/components/auth/login-form.tsx +7 -3
  181. package/src/templates/web/ui-auth-ai/template/src/components/providers/app-providers.tsx +25 -0
  182. package/src/templates/web/ui-auth-ai/template/src/components/shared/footer.tsx +36 -0
  183. package/src/templates/web/ui-auth-ai/template/src/components/shared/header.tsx +228 -0
  184. package/src/templates/web/ui-auth-ai/template/src/components/ui/button.tsx +5 -5
  185. package/src/templates/web/ui-auth-ai/template/src/components/ui/input.tsx +1 -1
  186. package/src/templates/web/ui-auth-ai/template/src/components/ui/select.tsx +1 -1
  187. package/src/templates/web/ui-auth-ai/template/src/components/ui/textarea.tsx +1 -1
  188. package/src/templates/web/ui-auth-ai/template/src/components/ui/theme-toggle.tsx +34 -0
  189. package/src/templates/web/ui-auth-ai/template/src/lib/supabase.ts +6 -4
  190. package/src/templates/web/ui-auth-ai/template/src/providers/auth-provider.tsx +7 -5
  191. package/src/templates/web/ui-auth-payments/template/src/app/billing/page.tsx +63 -192
  192. package/src/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +104 -296
  193. package/src/templates/web/ui-auth-payments/template/src/app/dashboard/page.tsx +27 -27
  194. package/src/templates/web/ui-auth-payments/template/src/app/dev-setup/page.tsx +70 -81
  195. package/src/templates/web/ui-auth-payments/template/src/app/layout.tsx +38 -36
  196. package/src/templates/web/ui-auth-payments/template/src/app/login/loading.tsx +9 -9
  197. package/src/templates/web/ui-auth-payments/template/src/app/login/page.tsx +4 -104
  198. package/src/templates/web/ui-auth-payments/template/src/app/page.tsx +69 -337
  199. package/src/templates/web/ui-auth-payments/template/src/app/setup/page.tsx +55 -68
  200. package/src/templates/web/ui-auth-payments/template/src/app/signup/loading.tsx +13 -13
  201. package/src/templates/web/ui-auth-payments/template/src/app/signup/page.tsx +4 -123
  202. package/src/templates/web/ui-auth-payments/template/src/components/client/auth-status.tsx +37 -52
  203. package/src/templates/web/ui-auth-payments/template/src/components/client/login-form.tsx +49 -103
  204. package/src/templates/web/ui-auth-payments/template/src/components/client/newsletter-signup.tsx +4 -4
  205. package/src/templates/web/ui-auth-payments/template/src/components/client/signup-form.tsx +60 -140
  206. package/src/templates/web/ui-auth-payments/template/src/components/providers/app-providers.tsx +25 -28
  207. package/src/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +229 -230
  208. package/src/templates/web/ui-auth-payments/template/src/lib/actions/auth.ts +245 -245
  209. package/src/templates/web/ui-auth-payments/template/src/lib/actions/index.ts +339 -339
  210. package/src/templates/web/ui-auth-payments-ai/template/src/app/ai/page.tsx +305 -309
  211. package/src/templates/web/ui-auth-payments-ai/template/src/app/billing/page.tsx +62 -312
  212. package/src/templates/web/ui-auth-payments-ai/template/src/app/checkout/page.tsx +109 -125
  213. package/src/templates/web/ui-auth-payments-ai/template/src/app/dashboard/page.tsx +27 -27
  214. package/src/templates/web/ui-auth-payments-ai/template/src/app/dev-setup/page.tsx +68 -83
  215. package/src/templates/web/ui-auth-payments-ai/template/src/app/layout.tsx +40 -38
  216. package/src/templates/web/ui-auth-payments-ai/template/src/app/onboarding/page.tsx +20 -20
  217. package/src/templates/web/ui-auth-payments-ai/template/src/app/page.tsx +140 -394
  218. package/src/templates/web/ui-auth-payments-ai/template/src/app/settings/page.tsx +28 -27
  219. package/src/templates/web/ui-auth-payments-ai/template/src/app/setup/page.tsx +51 -66
  220. package/src/templates/web/ui-auth-payments-ai/template/src/components/client/auth-status.tsx +37 -52
  221. package/src/templates/web/ui-auth-payments-ai/template/src/components/client/login-form.tsx +50 -79
  222. package/src/templates/web/ui-auth-payments-ai/template/src/components/client/signup-form.tsx +58 -111
  223. package/src/templates/web/ui-auth-payments-ai/template/src/components/providers/app-providers.tsx +8 -3
  224. package/src/templates/web/ui-auth-payments-ai/template/src/components/shared/header.tsx +229 -252
  225. package/src/templates/web/ui-auth-payments-ai/template/src/lib/actions/auth.ts +245 -245
  226. package/src/templates/web/ui-auth-payments-audio/template/src/app/billing/page.tsx +63 -192
  227. package/src/templates/web/ui-auth-payments-audio/template/src/app/checkout/page.tsx +109 -125
  228. package/src/templates/web/ui-auth-payments-audio/template/src/app/dashboard/page.tsx +27 -27
  229. package/src/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +40 -38
  230. package/src/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +122 -385
  231. package/src/templates/web/ui-auth-payments-audio/template/src/app/setup/page.tsx +340 -344
  232. package/src/templates/web/ui-auth-payments-audio/template/src/components/client/auth-status.tsx +37 -52
  233. package/src/templates/web/ui-auth-payments-audio/template/src/components/client/login-form.tsx +49 -103
  234. package/src/templates/web/ui-auth-payments-audio/template/src/components/client/signup-form.tsx +60 -140
  235. package/src/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +8 -3
  236. package/src/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +229 -252
  237. package/src/templates/web/ui-auth-payments-audio/template/src/lib/actions/auth.ts +3 -3
  238. package/src/templates/web/ui-auth-payments-video/template/src/app/billing/page.tsx +63 -192
  239. package/src/templates/web/ui-auth-payments-video/template/src/app/checkout/page.tsx +109 -125
  240. package/src/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +38 -36
  241. package/src/templates/web/ui-auth-payments-video/template/src/app/login/page.tsx +9 -109
  242. package/src/templates/web/ui-auth-payments-video/template/src/app/page.tsx +132 -392
  243. package/src/templates/web/ui-auth-payments-video/template/src/app/setup/page.tsx +346 -350
  244. package/src/templates/web/ui-auth-payments-video/template/src/app/signup/page.tsx +9 -128
  245. package/src/templates/web/ui-auth-payments-video/template/src/components/client/login-form.tsx +90 -0
  246. package/src/templates/web/ui-auth-payments-video/template/src/components/client/signup-form.tsx +105 -0
  247. package/src/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +8 -3
  248. package/src/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +229 -246
  249. package/src/templates/web/ui-only/template/eslint.config.mjs +14 -0
  250. package/src/templates/web/ui-only/template/src/app/checkout/page.tsx +2 -2
  251. package/src/templates/web/ui-only/template/src/app/login/page.tsx +69 -63
  252. package/src/templates/web/ui-only/template/src/app/page.tsx +69 -91
  253. package/src/templates/web/ui-only/template/src/app/signup/page.tsx +94 -79
  254. package/src/templates/web/ui-only/template/src/components/providers/app-providers.tsx +1 -6
  255. package/src/templates/web/ui-only/template/src/components/shared/header.tsx +90 -53
  256. package/src/templates/web/ui-package-test/template/package.json +19 -23
  257. package/src/templates/web/ui-package-test/template/postcss.config.mjs +8 -0
  258. package/src/templates/web/ui-package-test/template/src/app/globals.css +88 -0
  259. package/src/templates/web/ui-package-test/template/src/app/layout.tsx +27 -0
  260. package/src/templates/web/ui-package-test/template/src/app/page.tsx +46 -106
  261. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/README.md +0 -655
  262. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/app/(tabs)/ai.tsx +0 -683
  263. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/app/_layout.tsx +0 -124
  264. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/app.json +0 -74
  265. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/babel.config.js +0 -25
  266. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/docs/MOBILE-SETUP.md +0 -787
  267. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/eas.json +0 -25
  268. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/expo-env.d.ts +0 -3
  269. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -346
  270. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/jest-setup.ts +0 -37
  271. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -180
  272. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/metro.config.js +0 -11
  273. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/package.json +0 -122
  274. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -599
  275. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/tsconfig.json +0 -32
  276. package/dist/templates/web/base/template/.eslintrc.js +0 -8
  277. package/dist/templates/web/base/template/src/components/__tests__/example.test.tsx +0 -49
  278. package/dist/templates/web/base/template/src/test/setup.ts +0 -74
  279. package/dist/templates/web/base/template/vitest.config.ts +0 -17
  280. package/dist/templates/web/ui-auth/template/.eslintrc.js +0 -8
  281. package/dist/templates/web/ui-auth/template/src/components/__tests__/example.test.tsx +0 -49
  282. package/dist/templates/web/ui-auth/template/src/test/setup.ts +0 -74
  283. package/dist/templates/web/ui-auth/template/vitest.config.ts +0 -17
  284. package/dist/templates/web/ui-auth-payments/template/src/components/__tests__/example.test.tsx +0 -49
  285. package/dist/templates/web/ui-auth-payments/template/src/test/setup.ts +0 -74
  286. package/dist/templates/web/ui-auth-payments/template/vitest.config.ts +0 -17
  287. package/dist/templates/web/ui-auth-payments-ai/template/src/components/__tests__/example.test.tsx +0 -49
  288. package/dist/templates/web/ui-auth-payments-ai/template/src/test/setup.ts +0 -74
  289. package/dist/templates/web/ui-auth-payments-ai/template/vitest.config.ts +0 -17
  290. package/dist/templates/web/ui-auth-payments-ai-rag/template/README.md +0 -434
  291. package/dist/templates/web/ui-auth-payments-ai-rag/template/components/rag/KnowledgeManager.tsx +0 -642
  292. package/dist/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGAnalytics.tsx +0 -466
  293. package/dist/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGChatInterface.tsx +0 -393
  294. package/dist/templates/web/ui-auth-payments-ai-rag/template/docs/GETTING-STARTED.md +0 -457
  295. package/dist/templates/web/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -478
  296. package/dist/templates/web/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -250
  297. package/dist/templates/web/ui-auth-payments-ai-rag/template/package.json +0 -73
  298. package/dist/templates/web/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -622
  299. package/dist/templates/web/ui-auth-payments-ai-rag/template/src/app/ai/page.tsx +0 -396
  300. package/dist/templates/web/ui-auth-payments-audio/template/src/components/__tests__/example.test.tsx +0 -49
  301. package/dist/templates/web/ui-auth-payments-audio/template/src/test/setup.ts +0 -74
  302. package/dist/templates/web/ui-auth-payments-audio/template/vitest.config.ts +0 -17
  303. package/dist/templates/web/ui-auth-payments-video/template/src/components/__tests__/example.test.tsx +0 -49
  304. package/dist/templates/web/ui-auth-payments-video/template/src/test/setup.ts +0 -74
  305. package/dist/templates/web/ui-auth-payments-video/template/vitest.config.ts +0 -17
  306. package/dist/templates/web/ui-only/template/.eslintrc.js +0 -8
  307. package/dist/templates/web/ui-only/template/src/components/__tests__/example.test.tsx +0 -49
  308. package/dist/templates/web/ui-only/template/src/test/setup.ts +0 -74
  309. package/dist/templates/web/ui-only/template/vitest.config.ts +0 -17
  310. package/src/templates/mobile/ui-auth-payments-ai-rag/template/README.md +0 -655
  311. package/src/templates/mobile/ui-auth-payments-ai-rag/template/app/(tabs)/ai.tsx +0 -683
  312. package/src/templates/mobile/ui-auth-payments-ai-rag/template/app/_layout.tsx +0 -124
  313. package/src/templates/mobile/ui-auth-payments-ai-rag/template/app.json +0 -74
  314. package/src/templates/mobile/ui-auth-payments-ai-rag/template/babel.config.js +0 -25
  315. package/src/templates/mobile/ui-auth-payments-ai-rag/template/docs/MOBILE-SETUP.md +0 -787
  316. package/src/templates/mobile/ui-auth-payments-ai-rag/template/eas.json +0 -25
  317. package/src/templates/mobile/ui-auth-payments-ai-rag/template/expo-env.d.ts +0 -3
  318. package/src/templates/mobile/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -346
  319. package/src/templates/mobile/ui-auth-payments-ai-rag/template/jest-setup.ts +0 -37
  320. package/src/templates/mobile/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -180
  321. package/src/templates/mobile/ui-auth-payments-ai-rag/template/metro.config.js +0 -11
  322. package/src/templates/mobile/ui-auth-payments-ai-rag/template/package.json +0 -122
  323. package/src/templates/mobile/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -599
  324. package/src/templates/mobile/ui-auth-payments-ai-rag/template/tsconfig.json +0 -32
  325. package/src/templates/web/base/template/.eslintrc.js +0 -8
  326. package/src/templates/web/base/template/src/components/__tests__/example.test.tsx +0 -49
  327. package/src/templates/web/base/template/src/test/setup.ts +0 -74
  328. package/src/templates/web/base/template/vitest.config.ts +0 -17
  329. package/src/templates/web/ui-auth/template/.eslintrc.js +0 -8
  330. package/src/templates/web/ui-auth/template/src/components/__tests__/example.test.tsx +0 -49
  331. package/src/templates/web/ui-auth/template/src/test/setup.ts +0 -74
  332. package/src/templates/web/ui-auth/template/vitest.config.ts +0 -17
  333. package/src/templates/web/ui-auth-payments/template/src/components/__tests__/example.test.tsx +0 -49
  334. package/src/templates/web/ui-auth-payments/template/src/test/setup.ts +0 -74
  335. package/src/templates/web/ui-auth-payments/template/vitest.config.ts +0 -17
  336. package/src/templates/web/ui-auth-payments-ai/template/src/components/__tests__/example.test.tsx +0 -49
  337. package/src/templates/web/ui-auth-payments-ai/template/src/test/setup.ts +0 -74
  338. package/src/templates/web/ui-auth-payments-ai/template/vitest.config.ts +0 -17
  339. package/src/templates/web/ui-auth-payments-ai-rag/template/README.md +0 -434
  340. package/src/templates/web/ui-auth-payments-ai-rag/template/components/rag/KnowledgeManager.tsx +0 -642
  341. package/src/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGAnalytics.tsx +0 -466
  342. package/src/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGChatInterface.tsx +0 -393
  343. package/src/templates/web/ui-auth-payments-ai-rag/template/docs/GETTING-STARTED.md +0 -457
  344. package/src/templates/web/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -478
  345. package/src/templates/web/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -250
  346. package/src/templates/web/ui-auth-payments-ai-rag/template/package.json +0 -73
  347. package/src/templates/web/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -622
  348. package/src/templates/web/ui-auth-payments-ai-rag/template/src/app/ai/page.tsx +0 -396
  349. package/src/templates/web/ui-auth-payments-audio/template/src/components/__tests__/example.test.tsx +0 -49
  350. package/src/templates/web/ui-auth-payments-audio/template/src/test/setup.ts +0 -74
  351. package/src/templates/web/ui-auth-payments-audio/template/vitest.config.ts +0 -17
  352. package/src/templates/web/ui-auth-payments-video/template/src/components/__tests__/example.test.tsx +0 -49
  353. package/src/templates/web/ui-auth-payments-video/template/src/test/setup.ts +0 -74
  354. package/src/templates/web/ui-auth-payments-video/template/vitest.config.ts +0 -17
  355. package/src/templates/web/ui-only/template/.eslintrc.js +0 -8
  356. package/src/templates/web/ui-only/template/src/components/__tests__/example.test.tsx +0 -49
  357. package/src/templates/web/ui-only/template/src/test/setup.ts +0 -74
  358. package/src/templates/web/ui-only/template/vitest.config.ts +0 -17
@@ -1,683 +0,0 @@
1
- import React, { useState, useRef } from 'react';
2
- import { View, Text, ScrollView, StyleSheet, Dimensions, Alert } from 'react-native';
3
- import { SafeAreaView } from 'react-native-safe-area-context';
4
- import * as Haptics from 'expo-haptics';
5
-
6
- // UI Components with RAG support
7
- import {
8
- // AI Components with RAG
9
- AIProvider,
10
- RAGChatPanel,
11
- KnowledgeSearchPanel,
12
- RAGAnalytics,
13
- KnowledgeManagementPanel,
14
- AISetupStatus,
15
-
16
- // Standard AI Components
17
- AIChat,
18
- AITextGenerator,
19
- AIAudioGenerator,
20
- AIVideoGenerator,
21
-
22
- // Native UI Components
23
- Card,
24
- Button,
25
- Badge,
26
- PageTransition,
27
- TabbedInterface,
28
- LazyImage,
29
- ProgressiveImage,
30
- NativeFeatureHighlight,
31
- VirtualScrollList,
32
- SwipeableCard,
33
- useTheme,
34
-
35
- // Layout Components
36
- Container,
37
- Grid,
38
-
39
- // Icons
40
- Sparkles,
41
- Mic,
42
- Video,
43
- MessageSquare,
44
- Zap,
45
- Brain,
46
- Database,
47
- Search,
48
- BarChart3,
49
- Settings,
50
- BookOpen,
51
- Lightbulb,
52
- } from '@digilogiclabs/saas-factory-ui/native';
53
-
54
- import { useRAGSystem } from '../../hooks/useRAGSystem';
55
- import type { GenericRAGDocumentSchema } from '@digilogiclabs/saas-factory-ai-types';
56
-
57
- const { width } = Dimensions.get('window');
58
-
59
- export default function AIScreen() {
60
- const [activeTab, setActiveTab] = useState('dashboard');
61
- const [aiStats, setAiStats] = useState({
62
- textGenerations: 42,
63
- audioGenerations: 18,
64
- videoGenerations: 7,
65
- totalTokens: 125300,
66
- knowledgeDocuments: 156,
67
- ragQueries: 89,
68
- });
69
-
70
- const { theme, isDark } = useTheme();
71
-
72
- // Initialize RAG system - domain can be configured based on app type
73
- const ragSystem = useRAGSystem<GenericRAGDocumentSchema>({
74
- domain: 'generic', // Can be: 'plants', 'ecommerce', 'education', etc.
75
- enableOffline: true,
76
- autoSync: true,
77
- cacheResults: true
78
- });
79
-
80
- // AI Configuration with RAG integration
81
- const aiConfig = {
82
- providers: {
83
- openai: {
84
- apiKey: process.env.EXPO_PUBLIC_OPENAI_API_KEY || '',
85
- models: {
86
- text: 'gpt-4',
87
- audio: 'tts-1',
88
- embedding: 'text-embedding-ada-002'
89
- }
90
- },
91
- elevenlabs: {
92
- apiKey: process.env.EXPO_PUBLIC_ELEVENLABS_API_KEY || '',
93
- },
94
- replicate: {
95
- apiKey: process.env.EXPO_PUBLIC_REPLICATE_API_TOKEN || '',
96
- }
97
- },
98
- rag: {
99
- enabled: true,
100
- system: ragSystem.ragSystem,
101
- options: {
102
- enhanceWithKnowledge: true,
103
- showSources: true,
104
- confidenceThreshold: 0.7
105
- }
106
- }
107
- };
108
-
109
- const handleTabChange = (tabId: string) => {
110
- setActiveTab(tabId);
111
- Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light);
112
- };
113
-
114
- const handleAIGeneration = async (type: string, result: any) => {
115
- try {
116
- // Update local stats
117
- setAiStats(prev => ({
118
- ...prev,
119
- [`${type}Generations`]: prev[`${type}Generations` as keyof typeof prev] + 1,
120
- totalTokens: prev.totalTokens + (result.tokens || 100)
121
- }));
122
-
123
- Haptics.notificationAsync(Haptics.NotificationFeedbackType.Success);
124
- Alert.alert('Success', `${type} generation completed successfully!`);
125
- } catch (error) {
126
- Haptics.notificationAsync(Haptics.NotificationFeedbackType.Error);
127
- Alert.alert('Error', `${type} generation failed. Please try again.`);
128
- }
129
- };
130
-
131
- const handleRAGQuery = async (query: string) => {
132
- try {
133
- const response = await ragSystem.query(query);
134
- setAiStats(prev => ({
135
- ...prev,
136
- ragQueries: prev.ragQueries + 1
137
- }));
138
- return response;
139
- } catch (error) {
140
- console.error('RAG query error:', error);
141
- throw error;
142
- }
143
- };
144
-
145
- const aiTabs = [
146
- {
147
- id: 'dashboard',
148
- label: 'Dashboard',
149
- icon: <Brain width={20} height={20} color={activeTab === 'dashboard' ? '#3b82f6' : '#64748b'} />,
150
- component: renderDashboard(),
151
- },
152
- {
153
- id: 'rag-chat',
154
- label: 'AI Chat',
155
- icon: <MessageSquare width={20} height={20} color={activeTab === 'rag-chat' ? '#3b82f6' : '#64748b'} />,
156
- component: renderRAGChat(),
157
- },
158
- {
159
- id: 'knowledge',
160
- label: 'Knowledge',
161
- icon: <BookOpen width={20} height={20} color={activeTab === 'knowledge' ? '#3b82f6' : '#64748b'} />,
162
- component: renderKnowledgeBase(),
163
- },
164
- {
165
- id: 'text',
166
- label: 'Text AI',
167
- icon: <Lightbulb width={20} height={20} color={activeTab === 'text' ? '#3b82f6' : '#64748b'} />,
168
- component: renderTextGenerator(),
169
- },
170
- {
171
- id: 'audio',
172
- label: 'Audio AI',
173
- icon: <Mic width={20} height={20} color={activeTab === 'audio' ? '#3b82f6' : '#64748b'} />,
174
- component: renderAudioGenerator(),
175
- },
176
- {
177
- id: 'video',
178
- label: 'Video AI',
179
- icon: <Video width={20} height={20} color={activeTab === 'video' ? '#3b82f6' : '#64748b'} />,
180
- component: renderVideoGenerator(),
181
- },
182
- {
183
- id: 'analytics',
184
- label: 'Analytics',
185
- icon: <BarChart3 width={20} height={20} color={activeTab === 'analytics' ? '#3b82f6' : '#64748b'} />,
186
- component: renderAnalytics(),
187
- },
188
- ];
189
-
190
- function renderDashboard() {
191
- return (
192
- <ScrollView style={styles.tabContent} showsVerticalScrollIndicator={false}>
193
- <Container padding={16}>
194
- {/* RAG System Status */}
195
- <Card style={styles.card}>
196
- <Text style={[styles.cardTitle, { color: theme.colors.text }]}>
197
- AI & Knowledge System Status
198
- </Text>
199
- <View style={styles.statusGrid}>
200
- <View style={styles.statusItem}>
201
- <View style={[styles.statusDot, { backgroundColor: ragSystem.isReady ? '#10b981' : '#f59e0b' }]} />
202
- <Text style={[styles.statusText, { color: theme.colors.text }]}>
203
- {ragSystem.isReady ? 'Ready' : 'Loading...'}
204
- </Text>
205
- </View>
206
- <View style={styles.statusItem}>
207
- <View style={[styles.statusDot, { backgroundColor: ragSystem.isOnline ? '#10b981' : '#ef4444' }]} />
208
- <Text style={[styles.statusText, { color: theme.colors.text }]}>
209
- {ragSystem.isOnline ? 'Online' : 'Offline'}
210
- </Text>
211
- </View>
212
- {ragSystem.offlineQueueSize > 0 && (
213
- <View style={styles.statusItem}>
214
- <View style={[styles.statusDot, { backgroundColor: '#f59e0b' }]} />
215
- <Text style={[styles.statusText, { color: theme.colors.text }]}>
216
- {ragSystem.offlineQueueSize} queued
217
- </Text>
218
- </View>
219
- )}
220
- </View>
221
- </Card>
222
-
223
- {/* Enhanced AI Stats with RAG */}
224
- <Card style={[styles.card, styles.statsCard]}>
225
- <Text style={[styles.cardTitle, { color: theme.colors.text }]}>
226
- AI Usage Statistics
227
- </Text>
228
- <Grid columns={2} gap={12} style={styles.statsGrid}>
229
- <View style={styles.statItem}>
230
- <Text style={[styles.statNumber, { color: '#3b82f6' }]}>
231
- {aiStats.ragQueries}
232
- </Text>
233
- <Text style={[styles.statLabel, { color: theme.colors.textMuted }]}>
234
- RAG Queries
235
- </Text>
236
- </View>
237
- <View style={styles.statItem}>
238
- <Text style={[styles.statNumber, { color: '#8b5cf6' }]}>
239
- {aiStats.knowledgeDocuments}
240
- </Text>
241
- <Text style={[styles.statLabel, { color: theme.colors.textMuted }]}>
242
- Knowledge Docs
243
- </Text>
244
- </View>
245
- <View style={styles.statItem}>
246
- <Text style={[styles.statNumber, { color: '#10b981' }]}>
247
- {aiStats.textGenerations}
248
- </Text>
249
- <Text style={[styles.statLabel, { color: theme.colors.textMuted }]}>
250
- Text Generated
251
- </Text>
252
- </View>
253
- <View style={styles.statItem}>
254
- <Text style={[styles.statNumber, { color: '#f59e0b' }]}>
255
- {(aiStats.totalTokens / 1000).toFixed(1)}K
256
- </Text>
257
- <Text style={[styles.statLabel, { color: theme.colors.textMuted }]}>
258
- Total Tokens
259
- </Text>
260
- </View>
261
- </Grid>
262
- </Card>
263
-
264
- {/* Quick Actions with RAG */}
265
- <Card style={styles.card}>
266
- <Text style={[styles.cardTitle, { color: theme.colors.text }]}>
267
- Quick Actions
268
- </Text>
269
- <Grid columns={2} gap={12} style={styles.quickActions}>
270
- <Button
271
- variant="outline"
272
- size="lg"
273
- onPress={() => setActiveTab('rag-chat')}
274
- style={styles.quickActionButton}
275
- disabled={!ragSystem.canQuery}
276
- >
277
- <MessageSquare width={20} height={20} color="#3b82f6" />
278
- <Text style={styles.quickActionText}>RAG Chat</Text>
279
- </Button>
280
- <Button
281
- variant="outline"
282
- size="lg"
283
- onPress={() => setActiveTab('knowledge')}
284
- style={styles.quickActionButton}
285
- >
286
- <Database width={20} height={20} color="#8b5cf6" />
287
- <Text style={styles.quickActionText}>Knowledge Base</Text>
288
- </Button>
289
- <Button
290
- variant="outline"
291
- size="lg"
292
- onPress={() => setActiveTab('text')}
293
- style={styles.quickActionButton}
294
- >
295
- <Lightbulb width={20} height={20} color="#10b981" />
296
- <Text style={styles.quickActionText}>Generate Text</Text>
297
- </Button>
298
- <Button
299
- variant="outline"
300
- size="lg"
301
- onPress={() => setActiveTab('analytics')}
302
- style={styles.quickActionButton}
303
- >
304
- <BarChart3 width={20} height={20} color="#f59e0b" />
305
- <Text style={styles.quickActionText}>Analytics</Text>
306
- </Button>
307
- </Grid>
308
- </Card>
309
-
310
- {/* Recent RAG Queries */}
311
- <Card style={styles.card}>
312
- <Text style={[styles.cardTitle, { color: theme.colors.text }]}>
313
- Recent RAG Queries
314
- </Text>
315
- <VirtualScrollList
316
- data={ragSystem.recentQueries.slice(0, 5).map((query, index) => ({
317
- id: index.toString(),
318
- query: query.query,
319
- category: query.category || 'General',
320
- time: new Date(query.timestamp).toLocaleTimeString(),
321
- }))}
322
- renderItem={({ item }) => (
323
- <SwipeableCard
324
- rightActions={[
325
- { label: 'Repeat', color: '#3b82f6', onPress: () => handleRAGQuery(item.query) },
326
- ]}
327
- style={styles.recentItem}
328
- >
329
- <View style={styles.recentItemContent}>
330
- <View style={styles.recentItemIcon}>
331
- <Database width={16} height={16} color="#8b5cf6" />
332
- </View>
333
- <View style={styles.recentItemText}>
334
- <Text style={[styles.recentItemTitle, { color: theme.colors.text }]}>
335
- {item.query}
336
- </Text>
337
- <Text style={[styles.recentItemTime, { color: theme.colors.textMuted }]}>
338
- {item.category} • {item.time}
339
- </Text>
340
- </View>
341
- </View>
342
- </SwipeableCard>
343
- )}
344
- estimatedItemSize={80}
345
- style={styles.recentList}
346
- />
347
- </Card>
348
- </Container>
349
- </ScrollView>
350
- );
351
- }
352
-
353
- function renderRAGChat() {
354
- return (
355
- <Container padding={16} style={styles.chatContainer}>
356
- <RAGChatPanel
357
- ragSystem={ragSystem.ragSystem}
358
- placeholder="Ask me anything about our knowledge base..."
359
- showTypingIndicator={true}
360
- showSources={true}
361
- showConfidenceScore={false} // Hidden on mobile for cleaner UI
362
- enableVoiceInput={true}
363
- enableOfflineMode={true}
364
- onQuery={handleRAGQuery}
365
- style={styles.ragChat}
366
- mobileOptimized={true}
367
- />
368
- </Container>
369
- );
370
- }
371
-
372
- function renderKnowledgeBase() {
373
- return (
374
- <ScrollView style={styles.tabContent} showsVerticalScrollIndicator={false}>
375
- <Container padding={16}>
376
- <Card style={styles.card}>
377
- <KnowledgeSearchPanel
378
- ragSystem={ragSystem.ragSystem}
379
- placeholder="Search knowledge base..."
380
- showCategories={true}
381
- showFilters={false} // Simplified for mobile
382
- onSearch={ragSystem.searchKnowledge}
383
- style={styles.knowledgeSearch}
384
- />
385
- </Card>
386
-
387
- <Card style={styles.card}>
388
- <KnowledgeManagementPanel
389
- ragSystem={ragSystem.ragSystem}
390
- allowAdd={true}
391
- allowEdit={true}
392
- allowDelete={true}
393
- showBulkActions={false} // Simplified for mobile
394
- onAdd={ragSystem.addKnowledge}
395
- onUpdate={ragSystem.updateKnowledge}
396
- style={styles.knowledgeManagement}
397
- />
398
- </Card>
399
- </Container>
400
- </ScrollView>
401
- );
402
- }
403
-
404
- function renderTextGenerator() {
405
- return (
406
- <ScrollView style={styles.tabContent} showsVerticalScrollIndicator={false}>
407
- <Container padding={16}>
408
- <Card style={styles.card}>
409
- <AITextGenerator
410
- placeholder="Describe what you want to generate..."
411
- templates={[
412
- 'Blog post',
413
- 'Email marketing',
414
- 'Social media content',
415
- 'Product description',
416
- 'Code documentation',
417
- 'Creative writing'
418
- ]}
419
- enhanceWithRAG={true}
420
- ragSystem={ragSystem.ragSystem}
421
- showWordCount={true}
422
- maxLength={2000}
423
- onGenerate={(result) => handleAIGeneration('text', result)}
424
- style={styles.aiGenerator}
425
- />
426
- </Card>
427
- </Container>
428
- </ScrollView>
429
- );
430
- }
431
-
432
- function renderAudioGenerator() {
433
- return (
434
- <ScrollView style={styles.tabContent} showsVerticalScrollIndicator={false}>
435
- <Container padding={16}>
436
- <Card style={styles.card}>
437
- <AIAudioGenerator
438
- placeholder="Describe the audio you want to generate..."
439
- supportedFormats={['mp3', 'wav', 'ogg']}
440
- showWaveform={true}
441
- maxDuration={300}
442
- voices={[
443
- { id: 'alloy', name: 'Alloy', language: 'en-US' },
444
- { id: 'echo', name: 'Echo', language: 'en-US' },
445
- { id: 'fable', name: 'Fable', language: 'en-US' },
446
- { id: 'onyx', name: 'Onyx', language: 'en-US' },
447
- { id: 'nova', name: 'Nova', language: 'en-US' },
448
- { id: 'shimmer', name: 'Shimmer', language: 'en-US' },
449
- ]}
450
- onGenerate={(result) => handleAIGeneration('audio', result)}
451
- style={styles.aiGenerator}
452
- />
453
- </Card>
454
- </Container>
455
- </ScrollView>
456
- );
457
- }
458
-
459
- function renderVideoGenerator() {
460
- return (
461
- <ScrollView style={styles.tabContent} showsVerticalScrollIndicator={false}>
462
- <Container padding={16}>
463
- <Card style={styles.card}>
464
- <AIVideoGenerator
465
- placeholder="Describe the video you want to generate..."
466
- supportedFormats={['mp4', 'webm']}
467
- resolution="1080p"
468
- showPreview={true}
469
- maxDuration={60}
470
- styles={[
471
- 'Photorealistic',
472
- 'Cartoon',
473
- 'Anime',
474
- 'Watercolor',
475
- 'Oil painting',
476
- 'Digital art'
477
- ]}
478
- onGenerate={(result) => handleAIGeneration('video', result)}
479
- style={styles.aiGenerator}
480
- />
481
- </Card>
482
- </Container>
483
- </ScrollView>
484
- );
485
- }
486
-
487
- function renderAnalytics() {
488
- return (
489
- <ScrollView style={styles.tabContent} showsVerticalScrollIndicator={false}>
490
- <Container padding={16}>
491
- <Card style={styles.card}>
492
- <RAGAnalytics
493
- ragSystem={ragSystem.ragSystem}
494
- showUsageStats={true}
495
- showPerformanceMetrics={true}
496
- showPopularQueries={true}
497
- showKnowledgeGaps={true}
498
- timeRange="7d"
499
- style={styles.analytics}
500
- />
501
- </Card>
502
- </Container>
503
- </ScrollView>
504
- );
505
- }
506
-
507
- return (
508
- <AIProvider config={aiConfig}>
509
- <PageTransition type="slide" duration={300}>
510
- <SafeAreaView style={[styles.container, { backgroundColor: theme.colors.background }]}>
511
- <View style={styles.header}>
512
- <Text style={[styles.title, { color: theme.colors.text }]}>
513
- AI Studio
514
- </Text>
515
- <View style={styles.headerActions}>
516
- <Badge
517
- variant={ragSystem.isReady ? "success" : "warning"}
518
- size="sm"
519
- >
520
- RAG {ragSystem.isReady ? 'Ready' : 'Loading'}
521
- </Badge>
522
- <Badge variant="primary" size="sm">
523
- v4.0.0
524
- </Badge>
525
- </View>
526
- </View>
527
-
528
- <TabbedInterface
529
- tabs={aiTabs}
530
- activeTabId={activeTab}
531
- onTabChange={handleTabChange}
532
- variant="pills"
533
- showLabels={true}
534
- scrollable={true}
535
- hapticFeedback={true}
536
- style={styles.tabbedInterface}
537
- />
538
- </SafeAreaView>
539
- </PageTransition>
540
- </AIProvider>
541
- );
542
- }
543
-
544
- const styles = StyleSheet.create({
545
- container: {
546
- flex: 1,
547
- },
548
- header: {
549
- flexDirection: 'row',
550
- justifyContent: 'space-between',
551
- alignItems: 'center',
552
- paddingHorizontal: 16,
553
- paddingVertical: 12,
554
- borderBottomWidth: 1,
555
- borderBottomColor: 'rgba(0, 0, 0, 0.1)',
556
- },
557
- title: {
558
- fontSize: 28,
559
- fontWeight: '700',
560
- },
561
- headerActions: {
562
- flexDirection: 'row',
563
- alignItems: 'center',
564
- gap: 8,
565
- },
566
- tabbedInterface: {
567
- flex: 1,
568
- },
569
- tabContent: {
570
- flex: 1,
571
- },
572
- card: {
573
- marginBottom: 16,
574
- padding: 16,
575
- },
576
- cardTitle: {
577
- fontSize: 18,
578
- fontWeight: '600',
579
- marginBottom: 16,
580
- },
581
- statusGrid: {
582
- flexDirection: 'row',
583
- gap: 16,
584
- flexWrap: 'wrap',
585
- },
586
- statusItem: {
587
- flexDirection: 'row',
588
- alignItems: 'center',
589
- gap: 8,
590
- },
591
- statusDot: {
592
- width: 8,
593
- height: 8,
594
- borderRadius: 4,
595
- },
596
- statusText: {
597
- fontSize: 14,
598
- fontWeight: '500',
599
- },
600
- statsCard: {
601
- backgroundColor: 'rgba(59, 130, 246, 0.05)',
602
- },
603
- statsGrid: {
604
- marginTop: 8,
605
- },
606
- statItem: {
607
- alignItems: 'center',
608
- padding: 12,
609
- },
610
- statNumber: {
611
- fontSize: 24,
612
- fontWeight: '700',
613
- marginBottom: 4,
614
- },
615
- statLabel: {
616
- fontSize: 12,
617
- textAlign: 'center',
618
- },
619
- quickActions: {
620
- marginTop: 8,
621
- },
622
- quickActionButton: {
623
- flexDirection: 'column',
624
- alignItems: 'center',
625
- justifyContent: 'center',
626
- height: 80,
627
- gap: 8,
628
- },
629
- quickActionText: {
630
- fontSize: 12,
631
- fontWeight: '500',
632
- color: '#64748b',
633
- },
634
- recentList: {
635
- maxHeight: 300,
636
- },
637
- recentItem: {
638
- marginBottom: 8,
639
- },
640
- recentItemContent: {
641
- flexDirection: 'row',
642
- alignItems: 'center',
643
- padding: 12,
644
- gap: 12,
645
- },
646
- recentItemIcon: {
647
- width: 32,
648
- height: 32,
649
- borderRadius: 16,
650
- backgroundColor: 'rgba(139, 92, 246, 0.1)',
651
- alignItems: 'center',
652
- justifyContent: 'center',
653
- },
654
- recentItemText: {
655
- flex: 1,
656
- },
657
- recentItemTitle: {
658
- fontSize: 14,
659
- fontWeight: '500',
660
- marginBottom: 2,
661
- },
662
- recentItemTime: {
663
- fontSize: 12,
664
- },
665
- aiGenerator: {
666
- minHeight: 400,
667
- },
668
- chatContainer: {
669
- flex: 1,
670
- },
671
- ragChat: {
672
- flex: 1,
673
- },
674
- knowledgeSearch: {
675
- minHeight: 200,
676
- },
677
- knowledgeManagement: {
678
- minHeight: 400,
679
- },
680
- analytics: {
681
- minHeight: 500,
682
- },
683
- });