@digilogiclabs/create-saas-app 2.10.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 (416) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +153 -113
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/cli/commands/create.d.ts.map +1 -1
  5. package/dist/cli/commands/create.js +2 -6
  6. package/dist/cli/commands/create.js.map +1 -1
  7. package/dist/cli/index.js +1 -1
  8. package/dist/cli/index.js.map +1 -1
  9. package/dist/generators/template-generator.d.ts.map +1 -1
  10. package/dist/generators/template-generator.js +15 -8
  11. package/dist/generators/template-generator.js.map +1 -1
  12. package/dist/templates/shared/admin/web/src/components/admin-nav.tsx +3 -3
  13. package/dist/templates/shared/auth/supabase/web/src/lib/auth-session.ts +36 -16
  14. package/dist/templates/shared/auth/supabase/web/src/middleware.ts +6 -0
  15. package/dist/templates/shared/cookie-consent/web/components/cookie-consent.tsx +5 -5
  16. package/dist/templates/shared/design/web/src/components/ui/button.tsx +56 -0
  17. package/dist/templates/shared/email/web/src/lib/email/client.ts +1 -1
  18. package/dist/templates/shared/error-pages/web/src/app/error.tsx +13 -11
  19. package/dist/templates/shared/error-pages/web/src/app/global-error.tsx +2 -0
  20. package/dist/templates/shared/error-pages/web/src/app/not-found.tsx +6 -6
  21. package/dist/templates/shared/legal/web/src/app/(legal)/privacy/page.tsx +4 -4
  22. package/dist/templates/shared/legal/web/src/app/(legal)/terms/page.tsx +4 -4
  23. package/dist/templates/shared/loading/web/components/skeleton.tsx +4 -4
  24. package/dist/templates/shared/mock/web/.env.local +55 -0
  25. package/dist/templates/shared/mock/web/src/components/mock-auth-provider.tsx +72 -0
  26. package/dist/templates/shared/mock/web/src/components/mock-banner.tsx +29 -0
  27. package/dist/templates/shared/mock/web/src/lib/mock.ts +147 -0
  28. package/dist/templates/shared/payments/web/src/app/api/webhooks/stripe/route.ts +10 -4
  29. package/dist/templates/shared/redis/web/src/lib/redis.ts +1 -1
  30. package/dist/templates/web/ai-platform/template/src/app/api/auth/route.ts +57 -0
  31. package/dist/templates/web/ai-platform/template/src/app/login/page.tsx +112 -0
  32. package/dist/templates/web/ai-platform/template/src/app/models/page.tsx +186 -0
  33. package/dist/templates/web/ai-platform/template/src/app/playground/page.tsx +251 -0
  34. package/dist/templates/web/ai-platform/template/src/app/settings/page.tsx +190 -0
  35. package/dist/templates/web/ai-platform/template/src/app/signup/page.tsx +133 -0
  36. package/dist/templates/web/ai-platform/template/src/lib/auth-session.ts +52 -0
  37. package/dist/templates/web/base/template/eslint.config.mjs +14 -0
  38. package/dist/templates/web/base/template/src/app/auth/callback/route.ts +1 -1
  39. package/dist/templates/web/base/template/src/app/checkout/page.tsx +76 -103
  40. package/dist/templates/web/base/template/src/app/dashboard/page.tsx +145 -329
  41. package/dist/templates/web/base/template/src/app/layout.tsx +40 -38
  42. package/dist/templates/web/base/template/src/app/login/page.tsx +116 -66
  43. package/dist/templates/web/base/template/src/app/page.tsx +97 -193
  44. package/dist/templates/web/base/template/src/app/settings/page.tsx +154 -0
  45. package/dist/templates/web/base/template/src/app/signup/page.tsx +117 -66
  46. package/dist/templates/web/base/template/src/components/providers/app-providers.tsx +8 -3
  47. package/dist/templates/web/base/template/src/components/shared/header.tsx +229 -63
  48. package/dist/templates/web/iot-dashboard/template/src/app/alerts/page.tsx +157 -0
  49. package/dist/templates/web/iot-dashboard/template/src/app/api/auth/route.ts +57 -0
  50. package/dist/templates/web/iot-dashboard/template/src/app/devices/[id]/page.tsx +204 -0
  51. package/dist/templates/web/iot-dashboard/template/src/app/devices/new/page.tsx +139 -0
  52. package/dist/templates/web/iot-dashboard/template/src/app/devices/page.tsx +171 -0
  53. package/dist/templates/web/iot-dashboard/template/src/app/login/page.tsx +112 -0
  54. package/dist/templates/web/iot-dashboard/template/src/app/settings/page.tsx +186 -0
  55. package/dist/templates/web/iot-dashboard/template/src/app/signup/page.tsx +133 -0
  56. package/dist/templates/web/iot-dashboard/template/src/lib/auth-session.ts +52 -0
  57. package/dist/templates/web/marketplace/template/src/app/api/auth/route.ts +57 -0
  58. package/dist/templates/web/marketplace/template/src/app/login/page.tsx +112 -0
  59. package/dist/templates/web/marketplace/template/src/app/orders/page.tsx +160 -0
  60. package/dist/templates/web/marketplace/template/src/app/products/[id]/page.tsx +218 -0
  61. package/dist/templates/web/marketplace/template/src/app/settings/page.tsx +150 -0
  62. package/dist/templates/web/marketplace/template/src/app/signup/page.tsx +133 -0
  63. package/dist/templates/web/marketplace/template/src/lib/auth-session.ts +52 -0
  64. package/dist/templates/web/micro-saas/template/src/app/api/auth/route.ts +57 -0
  65. package/dist/templates/web/micro-saas/template/src/app/login/page.tsx +14 -3
  66. package/dist/templates/web/micro-saas/template/src/app/signup/page.tsx +15 -4
  67. package/dist/templates/web/micro-saas/template/src/lib/auth-session.ts +52 -0
  68. package/dist/templates/web/ui-auth/template/eslint.config.mjs +14 -0
  69. package/dist/templates/web/ui-auth/template/src/app/checkout/page.tsx +3 -3
  70. package/dist/templates/web/ui-auth/template/src/app/dev-setup/page.tsx +81 -91
  71. package/dist/templates/web/ui-auth/template/src/app/layout.tsx +38 -36
  72. package/dist/templates/web/ui-auth/template/src/app/login/page.tsx +22 -45
  73. package/dist/templates/web/ui-auth/template/src/app/page.tsx +106 -306
  74. package/dist/templates/web/ui-auth/template/src/app/setup/page.tsx +387 -402
  75. package/dist/templates/web/ui-auth/template/src/app/signup/page.tsx +24 -47
  76. package/dist/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +8 -3
  77. package/dist/templates/web/ui-auth/template/src/components/shared/header.tsx +229 -94
  78. package/dist/templates/web/ui-auth-ai/template/src/app/layout.tsx +38 -45
  79. package/dist/templates/web/ui-auth-ai/template/src/app/login/page.tsx +86 -0
  80. package/dist/templates/web/ui-auth-ai/template/src/app/page.tsx +107 -193
  81. package/dist/templates/web/ui-auth-ai/template/src/app/signup/page.tsx +105 -0
  82. package/dist/templates/web/ui-auth-ai/template/src/components/ai/audio-generator.tsx +144 -140
  83. package/dist/templates/web/ui-auth-ai/template/src/components/ai/video-generator.tsx +156 -157
  84. package/dist/templates/web/ui-auth-ai/template/src/components/auth/login-form.tsx +7 -3
  85. package/dist/templates/web/ui-auth-ai/template/src/components/providers/app-providers.tsx +25 -0
  86. package/dist/templates/web/ui-auth-ai/template/src/components/shared/footer.tsx +36 -0
  87. package/dist/templates/web/ui-auth-ai/template/src/components/shared/header.tsx +228 -0
  88. package/dist/templates/web/ui-auth-ai/template/src/components/ui/button.tsx +5 -5
  89. package/dist/templates/web/ui-auth-ai/template/src/components/ui/input.tsx +1 -1
  90. package/dist/templates/web/ui-auth-ai/template/src/components/ui/select.tsx +1 -1
  91. package/dist/templates/web/ui-auth-ai/template/src/components/ui/textarea.tsx +1 -1
  92. package/dist/templates/web/ui-auth-ai/template/src/components/ui/theme-toggle.tsx +34 -0
  93. package/dist/templates/web/ui-auth-ai/template/src/lib/supabase.ts +6 -4
  94. package/dist/templates/web/ui-auth-ai/template/src/providers/auth-provider.tsx +7 -5
  95. package/dist/templates/web/ui-auth-payments/template/src/app/billing/page.tsx +63 -192
  96. package/dist/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +104 -296
  97. package/dist/templates/web/ui-auth-payments/template/src/app/dashboard/page.tsx +27 -27
  98. package/dist/templates/web/ui-auth-payments/template/src/app/dev-setup/page.tsx +70 -81
  99. package/dist/templates/web/ui-auth-payments/template/src/app/layout.tsx +38 -36
  100. package/dist/templates/web/ui-auth-payments/template/src/app/login/loading.tsx +9 -9
  101. package/dist/templates/web/ui-auth-payments/template/src/app/login/page.tsx +4 -104
  102. package/dist/templates/web/ui-auth-payments/template/src/app/page.tsx +69 -337
  103. package/dist/templates/web/ui-auth-payments/template/src/app/setup/page.tsx +55 -68
  104. package/dist/templates/web/ui-auth-payments/template/src/app/signup/loading.tsx +13 -13
  105. package/dist/templates/web/ui-auth-payments/template/src/app/signup/page.tsx +4 -123
  106. package/dist/templates/web/ui-auth-payments/template/src/components/client/auth-status.tsx +37 -52
  107. package/dist/templates/web/ui-auth-payments/template/src/components/client/login-form.tsx +49 -103
  108. package/dist/templates/web/ui-auth-payments/template/src/components/client/newsletter-signup.tsx +4 -4
  109. package/dist/templates/web/ui-auth-payments/template/src/components/client/signup-form.tsx +60 -140
  110. package/dist/templates/web/ui-auth-payments/template/src/components/providers/app-providers.tsx +25 -28
  111. package/dist/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +229 -230
  112. package/dist/templates/web/ui-auth-payments/template/src/lib/actions/auth.ts +245 -245
  113. package/dist/templates/web/ui-auth-payments/template/src/lib/actions/index.ts +339 -339
  114. package/dist/templates/web/ui-auth-payments-ai/template/src/app/ai/page.tsx +305 -309
  115. package/dist/templates/web/ui-auth-payments-ai/template/src/app/billing/page.tsx +62 -312
  116. package/dist/templates/web/ui-auth-payments-ai/template/src/app/checkout/page.tsx +109 -125
  117. package/dist/templates/web/ui-auth-payments-ai/template/src/app/dashboard/page.tsx +27 -27
  118. package/dist/templates/web/ui-auth-payments-ai/template/src/app/dev-setup/page.tsx +68 -83
  119. package/dist/templates/web/ui-auth-payments-ai/template/src/app/layout.tsx +40 -38
  120. package/dist/templates/web/ui-auth-payments-ai/template/src/app/onboarding/page.tsx +20 -20
  121. package/dist/templates/web/ui-auth-payments-ai/template/src/app/page.tsx +140 -394
  122. package/dist/templates/web/ui-auth-payments-ai/template/src/app/settings/page.tsx +28 -27
  123. package/dist/templates/web/ui-auth-payments-ai/template/src/app/setup/page.tsx +51 -66
  124. package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/auth-status.tsx +37 -52
  125. package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/login-form.tsx +50 -79
  126. package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/signup-form.tsx +58 -111
  127. package/dist/templates/web/ui-auth-payments-ai/template/src/components/providers/app-providers.tsx +8 -3
  128. package/dist/templates/web/ui-auth-payments-ai/template/src/components/shared/header.tsx +229 -252
  129. package/dist/templates/web/ui-auth-payments-ai/template/src/lib/actions/auth.ts +245 -245
  130. package/dist/templates/web/ui-auth-payments-audio/template/src/app/billing/page.tsx +63 -192
  131. package/dist/templates/web/ui-auth-payments-audio/template/src/app/checkout/page.tsx +109 -125
  132. package/dist/templates/web/ui-auth-payments-audio/template/src/app/dashboard/page.tsx +27 -27
  133. package/dist/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +40 -38
  134. package/dist/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +122 -385
  135. package/dist/templates/web/ui-auth-payments-audio/template/src/app/setup/page.tsx +340 -344
  136. package/dist/templates/web/ui-auth-payments-audio/template/src/components/client/auth-status.tsx +37 -52
  137. package/dist/templates/web/ui-auth-payments-audio/template/src/components/client/login-form.tsx +49 -103
  138. package/dist/templates/web/ui-auth-payments-audio/template/src/components/client/signup-form.tsx +60 -140
  139. package/dist/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +8 -3
  140. package/dist/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +229 -252
  141. package/dist/templates/web/ui-auth-payments-audio/template/src/lib/actions/auth.ts +3 -3
  142. package/dist/templates/web/ui-auth-payments-video/template/src/app/billing/page.tsx +63 -192
  143. package/dist/templates/web/ui-auth-payments-video/template/src/app/checkout/page.tsx +109 -125
  144. package/dist/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +38 -36
  145. package/dist/templates/web/ui-auth-payments-video/template/src/app/login/page.tsx +9 -109
  146. package/dist/templates/web/ui-auth-payments-video/template/src/app/page.tsx +132 -392
  147. package/dist/templates/web/ui-auth-payments-video/template/src/app/setup/page.tsx +346 -350
  148. package/dist/templates/web/ui-auth-payments-video/template/src/app/signup/page.tsx +9 -128
  149. package/dist/templates/web/ui-auth-payments-video/template/src/components/client/login-form.tsx +90 -0
  150. package/dist/templates/web/ui-auth-payments-video/template/src/components/client/signup-form.tsx +105 -0
  151. package/dist/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +8 -3
  152. package/dist/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +229 -246
  153. package/dist/templates/web/ui-only/template/eslint.config.mjs +14 -0
  154. package/dist/templates/web/ui-only/template/src/app/checkout/page.tsx +2 -2
  155. package/dist/templates/web/ui-only/template/src/app/login/page.tsx +69 -63
  156. package/dist/templates/web/ui-only/template/src/app/page.tsx +69 -91
  157. package/dist/templates/web/ui-only/template/src/app/signup/page.tsx +94 -79
  158. package/dist/templates/web/ui-only/template/src/components/providers/app-providers.tsx +1 -6
  159. package/dist/templates/web/ui-only/template/src/components/shared/header.tsx +90 -53
  160. package/dist/templates/web/ui-package-test/template/package.json +19 -23
  161. package/dist/templates/web/ui-package-test/template/postcss.config.mjs +8 -0
  162. package/dist/templates/web/ui-package-test/template/src/app/globals.css +88 -0
  163. package/dist/templates/web/ui-package-test/template/src/app/layout.tsx +27 -0
  164. package/dist/templates/web/ui-package-test/template/src/app/page.tsx +46 -106
  165. package/package.json +1 -1
  166. package/src/templates/shared/admin/web/src/components/admin-nav.tsx +3 -3
  167. package/src/templates/shared/auth/supabase/web/src/lib/auth-session.ts +36 -16
  168. package/src/templates/shared/auth/supabase/web/src/middleware.ts +6 -0
  169. package/src/templates/shared/cookie-consent/web/components/cookie-consent.tsx +5 -5
  170. package/src/templates/shared/design/web/src/components/ui/button.tsx +56 -0
  171. package/src/templates/shared/email/web/src/lib/email/client.ts +1 -1
  172. package/src/templates/shared/error-pages/web/src/app/error.tsx +13 -11
  173. package/src/templates/shared/error-pages/web/src/app/global-error.tsx +2 -0
  174. package/src/templates/shared/error-pages/web/src/app/not-found.tsx +6 -6
  175. package/src/templates/shared/legal/web/src/app/(legal)/privacy/page.tsx +4 -4
  176. package/src/templates/shared/legal/web/src/app/(legal)/terms/page.tsx +4 -4
  177. package/src/templates/shared/loading/web/components/skeleton.tsx +4 -4
  178. package/src/templates/shared/mock/web/.env.local +55 -0
  179. package/src/templates/shared/mock/web/src/components/mock-auth-provider.tsx +72 -0
  180. package/src/templates/shared/mock/web/src/components/mock-banner.tsx +29 -0
  181. package/src/templates/shared/mock/web/src/lib/mock.ts +147 -0
  182. package/src/templates/shared/payments/web/src/app/api/webhooks/stripe/route.ts +10 -4
  183. package/src/templates/shared/redis/web/src/lib/redis.ts +1 -1
  184. package/src/templates/web/ai-platform/template/src/app/api/auth/route.ts +57 -0
  185. package/src/templates/web/ai-platform/template/src/app/login/page.tsx +112 -0
  186. package/src/templates/web/ai-platform/template/src/app/models/page.tsx +186 -0
  187. package/src/templates/web/ai-platform/template/src/app/playground/page.tsx +251 -0
  188. package/src/templates/web/ai-platform/template/src/app/settings/page.tsx +190 -0
  189. package/src/templates/web/ai-platform/template/src/app/signup/page.tsx +133 -0
  190. package/src/templates/web/ai-platform/template/src/lib/auth-session.ts +52 -0
  191. package/src/templates/web/base/template/eslint.config.mjs +14 -0
  192. package/src/templates/web/base/template/src/app/auth/callback/route.ts +1 -1
  193. package/src/templates/web/base/template/src/app/checkout/page.tsx +76 -103
  194. package/src/templates/web/base/template/src/app/dashboard/page.tsx +145 -329
  195. package/src/templates/web/base/template/src/app/layout.tsx +40 -38
  196. package/src/templates/web/base/template/src/app/login/page.tsx +116 -66
  197. package/src/templates/web/base/template/src/app/page.tsx +97 -193
  198. package/src/templates/web/base/template/src/app/settings/page.tsx +154 -0
  199. package/src/templates/web/base/template/src/app/signup/page.tsx +117 -66
  200. package/src/templates/web/base/template/src/components/providers/app-providers.tsx +8 -3
  201. package/src/templates/web/base/template/src/components/shared/header.tsx +229 -63
  202. package/src/templates/web/iot-dashboard/template/src/app/alerts/page.tsx +157 -0
  203. package/src/templates/web/iot-dashboard/template/src/app/api/auth/route.ts +57 -0
  204. package/src/templates/web/iot-dashboard/template/src/app/devices/[id]/page.tsx +204 -0
  205. package/src/templates/web/iot-dashboard/template/src/app/devices/new/page.tsx +139 -0
  206. package/src/templates/web/iot-dashboard/template/src/app/devices/page.tsx +171 -0
  207. package/src/templates/web/iot-dashboard/template/src/app/login/page.tsx +112 -0
  208. package/src/templates/web/iot-dashboard/template/src/app/settings/page.tsx +186 -0
  209. package/src/templates/web/iot-dashboard/template/src/app/signup/page.tsx +133 -0
  210. package/src/templates/web/iot-dashboard/template/src/lib/auth-session.ts +52 -0
  211. package/src/templates/web/marketplace/template/src/app/api/auth/route.ts +57 -0
  212. package/src/templates/web/marketplace/template/src/app/login/page.tsx +112 -0
  213. package/src/templates/web/marketplace/template/src/app/orders/page.tsx +160 -0
  214. package/src/templates/web/marketplace/template/src/app/products/[id]/page.tsx +218 -0
  215. package/src/templates/web/marketplace/template/src/app/settings/page.tsx +150 -0
  216. package/src/templates/web/marketplace/template/src/app/signup/page.tsx +133 -0
  217. package/src/templates/web/marketplace/template/src/lib/auth-session.ts +52 -0
  218. package/src/templates/web/micro-saas/template/src/app/api/auth/route.ts +57 -0
  219. package/src/templates/web/micro-saas/template/src/app/login/page.tsx +14 -3
  220. package/src/templates/web/micro-saas/template/src/app/signup/page.tsx +15 -4
  221. package/src/templates/web/micro-saas/template/src/lib/auth-session.ts +52 -0
  222. package/src/templates/web/ui-auth/template/eslint.config.mjs +14 -0
  223. package/src/templates/web/ui-auth/template/src/app/checkout/page.tsx +3 -3
  224. package/src/templates/web/ui-auth/template/src/app/dev-setup/page.tsx +81 -91
  225. package/src/templates/web/ui-auth/template/src/app/layout.tsx +38 -36
  226. package/src/templates/web/ui-auth/template/src/app/login/page.tsx +22 -45
  227. package/src/templates/web/ui-auth/template/src/app/page.tsx +106 -306
  228. package/src/templates/web/ui-auth/template/src/app/setup/page.tsx +387 -402
  229. package/src/templates/web/ui-auth/template/src/app/signup/page.tsx +24 -47
  230. package/src/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +8 -3
  231. package/src/templates/web/ui-auth/template/src/components/shared/header.tsx +229 -94
  232. package/src/templates/web/ui-auth-ai/template/src/app/layout.tsx +38 -45
  233. package/src/templates/web/ui-auth-ai/template/src/app/login/page.tsx +86 -0
  234. package/src/templates/web/ui-auth-ai/template/src/app/page.tsx +107 -193
  235. package/src/templates/web/ui-auth-ai/template/src/app/signup/page.tsx +105 -0
  236. package/src/templates/web/ui-auth-ai/template/src/components/ai/audio-generator.tsx +144 -140
  237. package/src/templates/web/ui-auth-ai/template/src/components/ai/video-generator.tsx +156 -157
  238. package/src/templates/web/ui-auth-ai/template/src/components/auth/login-form.tsx +7 -3
  239. package/src/templates/web/ui-auth-ai/template/src/components/providers/app-providers.tsx +25 -0
  240. package/src/templates/web/ui-auth-ai/template/src/components/shared/footer.tsx +36 -0
  241. package/src/templates/web/ui-auth-ai/template/src/components/shared/header.tsx +228 -0
  242. package/src/templates/web/ui-auth-ai/template/src/components/ui/button.tsx +5 -5
  243. package/src/templates/web/ui-auth-ai/template/src/components/ui/input.tsx +1 -1
  244. package/src/templates/web/ui-auth-ai/template/src/components/ui/select.tsx +1 -1
  245. package/src/templates/web/ui-auth-ai/template/src/components/ui/textarea.tsx +1 -1
  246. package/src/templates/web/ui-auth-ai/template/src/components/ui/theme-toggle.tsx +34 -0
  247. package/src/templates/web/ui-auth-ai/template/src/lib/supabase.ts +6 -4
  248. package/src/templates/web/ui-auth-ai/template/src/providers/auth-provider.tsx +7 -5
  249. package/src/templates/web/ui-auth-payments/template/src/app/billing/page.tsx +63 -192
  250. package/src/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +104 -296
  251. package/src/templates/web/ui-auth-payments/template/src/app/dashboard/page.tsx +27 -27
  252. package/src/templates/web/ui-auth-payments/template/src/app/dev-setup/page.tsx +70 -81
  253. package/src/templates/web/ui-auth-payments/template/src/app/layout.tsx +38 -36
  254. package/src/templates/web/ui-auth-payments/template/src/app/login/loading.tsx +9 -9
  255. package/src/templates/web/ui-auth-payments/template/src/app/login/page.tsx +4 -104
  256. package/src/templates/web/ui-auth-payments/template/src/app/page.tsx +69 -337
  257. package/src/templates/web/ui-auth-payments/template/src/app/setup/page.tsx +55 -68
  258. package/src/templates/web/ui-auth-payments/template/src/app/signup/loading.tsx +13 -13
  259. package/src/templates/web/ui-auth-payments/template/src/app/signup/page.tsx +4 -123
  260. package/src/templates/web/ui-auth-payments/template/src/components/client/auth-status.tsx +37 -52
  261. package/src/templates/web/ui-auth-payments/template/src/components/client/login-form.tsx +49 -103
  262. package/src/templates/web/ui-auth-payments/template/src/components/client/newsletter-signup.tsx +4 -4
  263. package/src/templates/web/ui-auth-payments/template/src/components/client/signup-form.tsx +60 -140
  264. package/src/templates/web/ui-auth-payments/template/src/components/providers/app-providers.tsx +25 -28
  265. package/src/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +229 -230
  266. package/src/templates/web/ui-auth-payments/template/src/lib/actions/auth.ts +245 -245
  267. package/src/templates/web/ui-auth-payments/template/src/lib/actions/index.ts +339 -339
  268. package/src/templates/web/ui-auth-payments-ai/template/src/app/ai/page.tsx +305 -309
  269. package/src/templates/web/ui-auth-payments-ai/template/src/app/billing/page.tsx +62 -312
  270. package/src/templates/web/ui-auth-payments-ai/template/src/app/checkout/page.tsx +109 -125
  271. package/src/templates/web/ui-auth-payments-ai/template/src/app/dashboard/page.tsx +27 -27
  272. package/src/templates/web/ui-auth-payments-ai/template/src/app/dev-setup/page.tsx +68 -83
  273. package/src/templates/web/ui-auth-payments-ai/template/src/app/layout.tsx +40 -38
  274. package/src/templates/web/ui-auth-payments-ai/template/src/app/onboarding/page.tsx +20 -20
  275. package/src/templates/web/ui-auth-payments-ai/template/src/app/page.tsx +140 -394
  276. package/src/templates/web/ui-auth-payments-ai/template/src/app/settings/page.tsx +28 -27
  277. package/src/templates/web/ui-auth-payments-ai/template/src/app/setup/page.tsx +51 -66
  278. package/src/templates/web/ui-auth-payments-ai/template/src/components/client/auth-status.tsx +37 -52
  279. package/src/templates/web/ui-auth-payments-ai/template/src/components/client/login-form.tsx +50 -79
  280. package/src/templates/web/ui-auth-payments-ai/template/src/components/client/signup-form.tsx +58 -111
  281. package/src/templates/web/ui-auth-payments-ai/template/src/components/providers/app-providers.tsx +8 -3
  282. package/src/templates/web/ui-auth-payments-ai/template/src/components/shared/header.tsx +229 -252
  283. package/src/templates/web/ui-auth-payments-ai/template/src/lib/actions/auth.ts +245 -245
  284. package/src/templates/web/ui-auth-payments-audio/template/src/app/billing/page.tsx +63 -192
  285. package/src/templates/web/ui-auth-payments-audio/template/src/app/checkout/page.tsx +109 -125
  286. package/src/templates/web/ui-auth-payments-audio/template/src/app/dashboard/page.tsx +27 -27
  287. package/src/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +40 -38
  288. package/src/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +122 -385
  289. package/src/templates/web/ui-auth-payments-audio/template/src/app/setup/page.tsx +340 -344
  290. package/src/templates/web/ui-auth-payments-audio/template/src/components/client/auth-status.tsx +37 -52
  291. package/src/templates/web/ui-auth-payments-audio/template/src/components/client/login-form.tsx +49 -103
  292. package/src/templates/web/ui-auth-payments-audio/template/src/components/client/signup-form.tsx +60 -140
  293. package/src/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +8 -3
  294. package/src/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +229 -252
  295. package/src/templates/web/ui-auth-payments-audio/template/src/lib/actions/auth.ts +3 -3
  296. package/src/templates/web/ui-auth-payments-video/template/src/app/billing/page.tsx +63 -192
  297. package/src/templates/web/ui-auth-payments-video/template/src/app/checkout/page.tsx +109 -125
  298. package/src/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +38 -36
  299. package/src/templates/web/ui-auth-payments-video/template/src/app/login/page.tsx +9 -109
  300. package/src/templates/web/ui-auth-payments-video/template/src/app/page.tsx +132 -392
  301. package/src/templates/web/ui-auth-payments-video/template/src/app/setup/page.tsx +346 -350
  302. package/src/templates/web/ui-auth-payments-video/template/src/app/signup/page.tsx +9 -128
  303. package/src/templates/web/ui-auth-payments-video/template/src/components/client/login-form.tsx +90 -0
  304. package/src/templates/web/ui-auth-payments-video/template/src/components/client/signup-form.tsx +105 -0
  305. package/src/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +8 -3
  306. package/src/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +229 -246
  307. package/src/templates/web/ui-only/template/eslint.config.mjs +14 -0
  308. package/src/templates/web/ui-only/template/src/app/checkout/page.tsx +2 -2
  309. package/src/templates/web/ui-only/template/src/app/login/page.tsx +69 -63
  310. package/src/templates/web/ui-only/template/src/app/page.tsx +69 -91
  311. package/src/templates/web/ui-only/template/src/app/signup/page.tsx +94 -79
  312. package/src/templates/web/ui-only/template/src/components/providers/app-providers.tsx +1 -6
  313. package/src/templates/web/ui-only/template/src/components/shared/header.tsx +90 -53
  314. package/src/templates/web/ui-package-test/template/package.json +19 -23
  315. package/src/templates/web/ui-package-test/template/postcss.config.mjs +8 -0
  316. package/src/templates/web/ui-package-test/template/src/app/globals.css +88 -0
  317. package/src/templates/web/ui-package-test/template/src/app/layout.tsx +27 -0
  318. package/src/templates/web/ui-package-test/template/src/app/page.tsx +46 -106
  319. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/README.md +0 -655
  320. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/app/(tabs)/ai.tsx +0 -683
  321. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/app/_layout.tsx +0 -124
  322. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/app.json +0 -74
  323. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/babel.config.js +0 -25
  324. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/docs/MOBILE-SETUP.md +0 -787
  325. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/eas.json +0 -25
  326. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/expo-env.d.ts +0 -3
  327. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -346
  328. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/jest-setup.ts +0 -37
  329. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -180
  330. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/metro.config.js +0 -11
  331. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/package.json +0 -122
  332. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -599
  333. package/dist/templates/mobile/ui-auth-payments-ai-rag/template/tsconfig.json +0 -32
  334. package/dist/templates/web/base/template/.eslintrc.js +0 -8
  335. package/dist/templates/web/base/template/src/components/__tests__/example.test.tsx +0 -49
  336. package/dist/templates/web/base/template/src/test/setup.ts +0 -74
  337. package/dist/templates/web/base/template/vitest.config.ts +0 -17
  338. package/dist/templates/web/ui-auth/template/.eslintrc.js +0 -8
  339. package/dist/templates/web/ui-auth/template/src/components/__tests__/example.test.tsx +0 -49
  340. package/dist/templates/web/ui-auth/template/src/test/setup.ts +0 -74
  341. package/dist/templates/web/ui-auth/template/vitest.config.ts +0 -17
  342. package/dist/templates/web/ui-auth-payments/template/src/components/__tests__/example.test.tsx +0 -49
  343. package/dist/templates/web/ui-auth-payments/template/src/test/setup.ts +0 -74
  344. package/dist/templates/web/ui-auth-payments/template/vitest.config.ts +0 -17
  345. package/dist/templates/web/ui-auth-payments-ai/template/src/components/__tests__/example.test.tsx +0 -49
  346. package/dist/templates/web/ui-auth-payments-ai/template/src/test/setup.ts +0 -74
  347. package/dist/templates/web/ui-auth-payments-ai/template/vitest.config.ts +0 -17
  348. package/dist/templates/web/ui-auth-payments-ai-rag/template/README.md +0 -434
  349. package/dist/templates/web/ui-auth-payments-ai-rag/template/components/rag/KnowledgeManager.tsx +0 -642
  350. package/dist/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGAnalytics.tsx +0 -466
  351. package/dist/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGChatInterface.tsx +0 -393
  352. package/dist/templates/web/ui-auth-payments-ai-rag/template/docs/GETTING-STARTED.md +0 -457
  353. package/dist/templates/web/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -478
  354. package/dist/templates/web/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -250
  355. package/dist/templates/web/ui-auth-payments-ai-rag/template/package.json +0 -73
  356. package/dist/templates/web/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -622
  357. package/dist/templates/web/ui-auth-payments-ai-rag/template/src/app/ai/page.tsx +0 -396
  358. package/dist/templates/web/ui-auth-payments-audio/template/src/components/__tests__/example.test.tsx +0 -49
  359. package/dist/templates/web/ui-auth-payments-audio/template/src/test/setup.ts +0 -74
  360. package/dist/templates/web/ui-auth-payments-audio/template/vitest.config.ts +0 -17
  361. package/dist/templates/web/ui-auth-payments-video/template/src/components/__tests__/example.test.tsx +0 -49
  362. package/dist/templates/web/ui-auth-payments-video/template/src/test/setup.ts +0 -74
  363. package/dist/templates/web/ui-auth-payments-video/template/vitest.config.ts +0 -17
  364. package/dist/templates/web/ui-only/template/.eslintrc.js +0 -8
  365. package/dist/templates/web/ui-only/template/src/components/__tests__/example.test.tsx +0 -49
  366. package/dist/templates/web/ui-only/template/src/test/setup.ts +0 -74
  367. package/dist/templates/web/ui-only/template/vitest.config.ts +0 -17
  368. package/src/templates/mobile/ui-auth-payments-ai-rag/template/README.md +0 -655
  369. package/src/templates/mobile/ui-auth-payments-ai-rag/template/app/(tabs)/ai.tsx +0 -683
  370. package/src/templates/mobile/ui-auth-payments-ai-rag/template/app/_layout.tsx +0 -124
  371. package/src/templates/mobile/ui-auth-payments-ai-rag/template/app.json +0 -74
  372. package/src/templates/mobile/ui-auth-payments-ai-rag/template/babel.config.js +0 -25
  373. package/src/templates/mobile/ui-auth-payments-ai-rag/template/docs/MOBILE-SETUP.md +0 -787
  374. package/src/templates/mobile/ui-auth-payments-ai-rag/template/eas.json +0 -25
  375. package/src/templates/mobile/ui-auth-payments-ai-rag/template/expo-env.d.ts +0 -3
  376. package/src/templates/mobile/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -346
  377. package/src/templates/mobile/ui-auth-payments-ai-rag/template/jest-setup.ts +0 -37
  378. package/src/templates/mobile/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -180
  379. package/src/templates/mobile/ui-auth-payments-ai-rag/template/metro.config.js +0 -11
  380. package/src/templates/mobile/ui-auth-payments-ai-rag/template/package.json +0 -122
  381. package/src/templates/mobile/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -599
  382. package/src/templates/mobile/ui-auth-payments-ai-rag/template/tsconfig.json +0 -32
  383. package/src/templates/web/base/template/.eslintrc.js +0 -8
  384. package/src/templates/web/base/template/src/components/__tests__/example.test.tsx +0 -49
  385. package/src/templates/web/base/template/src/test/setup.ts +0 -74
  386. package/src/templates/web/base/template/vitest.config.ts +0 -17
  387. package/src/templates/web/ui-auth/template/.eslintrc.js +0 -8
  388. package/src/templates/web/ui-auth/template/src/components/__tests__/example.test.tsx +0 -49
  389. package/src/templates/web/ui-auth/template/src/test/setup.ts +0 -74
  390. package/src/templates/web/ui-auth/template/vitest.config.ts +0 -17
  391. package/src/templates/web/ui-auth-payments/template/src/components/__tests__/example.test.tsx +0 -49
  392. package/src/templates/web/ui-auth-payments/template/src/test/setup.ts +0 -74
  393. package/src/templates/web/ui-auth-payments/template/vitest.config.ts +0 -17
  394. package/src/templates/web/ui-auth-payments-ai/template/src/components/__tests__/example.test.tsx +0 -49
  395. package/src/templates/web/ui-auth-payments-ai/template/src/test/setup.ts +0 -74
  396. package/src/templates/web/ui-auth-payments-ai/template/vitest.config.ts +0 -17
  397. package/src/templates/web/ui-auth-payments-ai-rag/template/README.md +0 -434
  398. package/src/templates/web/ui-auth-payments-ai-rag/template/components/rag/KnowledgeManager.tsx +0 -642
  399. package/src/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGAnalytics.tsx +0 -466
  400. package/src/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGChatInterface.tsx +0 -393
  401. package/src/templates/web/ui-auth-payments-ai-rag/template/docs/GETTING-STARTED.md +0 -457
  402. package/src/templates/web/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -478
  403. package/src/templates/web/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -250
  404. package/src/templates/web/ui-auth-payments-ai-rag/template/package.json +0 -73
  405. package/src/templates/web/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -622
  406. package/src/templates/web/ui-auth-payments-ai-rag/template/src/app/ai/page.tsx +0 -396
  407. package/src/templates/web/ui-auth-payments-audio/template/src/components/__tests__/example.test.tsx +0 -49
  408. package/src/templates/web/ui-auth-payments-audio/template/src/test/setup.ts +0 -74
  409. package/src/templates/web/ui-auth-payments-audio/template/vitest.config.ts +0 -17
  410. package/src/templates/web/ui-auth-payments-video/template/src/components/__tests__/example.test.tsx +0 -49
  411. package/src/templates/web/ui-auth-payments-video/template/src/test/setup.ts +0 -74
  412. package/src/templates/web/ui-auth-payments-video/template/vitest.config.ts +0 -17
  413. package/src/templates/web/ui-only/template/.eslintrc.js +0 -8
  414. package/src/templates/web/ui-only/template/src/components/__tests__/example.test.tsx +0 -49
  415. package/src/templates/web/ui-only/template/src/test/setup.ts +0 -74
  416. package/src/templates/web/ui-only/template/vitest.config.ts +0 -17
@@ -1,466 +0,0 @@
1
- 'use client'
2
-
3
- import { useState, useEffect } from 'react'
4
- import { Card } from '@digilogiclabs/saas-factory-ui'
5
- import {
6
- TrendingUp,
7
- TrendingDown,
8
- Activity,
9
- Users,
10
- Clock,
11
- Database,
12
- MessageSquare,
13
- BarChart3,
14
- PieChart,
15
- Calendar,
16
- RefreshCw,
17
- Download
18
- } from 'lucide-react'
19
- import {
20
- LineChart,
21
- Line,
22
- AreaChart,
23
- Area,
24
- XAxis,
25
- YAxis,
26
- CartesianGrid,
27
- Tooltip,
28
- ResponsiveContainer,
29
- BarChart,
30
- Bar,
31
- PieChart as RechartsPieChart,
32
- Cell
33
- } from 'recharts'
34
- import type { UseRAGSystemReturn } from '../../hooks/useRAGSystem'
35
-
36
- interface RAGAnalyticsProps {
37
- ragSystem: UseRAGSystemReturn<any>
38
- timeRange?: '1d' | '7d' | '30d' | '90d'
39
- showDetailedMetrics?: boolean
40
- className?: string
41
- }
42
-
43
- interface AnalyticsData {
44
- usage: {
45
- totalQueries: number
46
- successfulQueries: number
47
- failedQueries: number
48
- averageResponseTime: number
49
- queriesPerDay: Array<{ date: string; queries: number }>
50
- }
51
- knowledge: {
52
- totalDocuments: number
53
- documentsAdded: number
54
- documentsUpdated: number
55
- documentsDeleted: number
56
- categoriesDistribution: Array<{ category: string; count: number }>
57
- }
58
- performance: {
59
- averageConfidence: number
60
- responseTimeDistribution: Array<{ range: string; count: number }>
61
- popularQueries: Array<{ query: string; count: number; averageConfidence: number }>
62
- }
63
- users: {
64
- activeUsers: number
65
- newUsers: number
66
- userSatisfaction: number
67
- feedbackDistribution: Array<{ type: string; count: number }>
68
- }
69
- }
70
-
71
- const COLORS = ['#3b82f6', '#10b981', '#f59e0b', '#ef4444', '#8b5cf6', '#06b6d4']
72
-
73
- export function RAGAnalytics({
74
- ragSystem,
75
- timeRange = '7d',
76
- showDetailedMetrics = true,
77
- className = ''
78
- }: RAGAnalyticsProps) {
79
- const [analyticsData, setAnalyticsData] = useState<AnalyticsData | null>(null)
80
- const [selectedTimeRange, setSelectedTimeRange] = useState(timeRange)
81
- const [isLoading, setIsLoading] = useState(false)
82
-
83
- useEffect(() => {
84
- loadAnalyticsData()
85
- }, [selectedTimeRange, ragSystem])
86
-
87
- const loadAnalyticsData = async () => {
88
- if (!ragSystem.ragSystem) return
89
-
90
- setIsLoading(true)
91
- try {
92
- const data = await ragSystem.getAnalytics(selectedTimeRange)
93
- if (data) {
94
- setAnalyticsData(data)
95
- } else {
96
- // Generate mock data for demonstration
97
- setAnalyticsData(generateMockData())
98
- }
99
- } catch (error) {
100
- console.error('Failed to load analytics:', error)
101
- setAnalyticsData(generateMockData()) // Fallback to mock data
102
- } finally {
103
- setIsLoading(false)
104
- }
105
- }
106
-
107
- const generateMockData = (): AnalyticsData => {
108
- const days = parseInt(selectedTimeRange.replace('d', ''))
109
- const queriesPerDay = Array.from({ length: days }, (_, i) => ({
110
- date: new Date(Date.now() - (days - 1 - i) * 24 * 60 * 60 * 1000).toLocaleDateString(),
111
- queries: Math.floor(Math.random() * 50) + 10
112
- }))
113
-
114
- return {
115
- usage: {
116
- totalQueries: ragSystem.totalQueries || Math.floor(Math.random() * 1000) + 500,
117
- successfulQueries: Math.floor(Math.random() * 900) + 450,
118
- failedQueries: Math.floor(Math.random() * 50) + 10,
119
- averageResponseTime: Math.floor(Math.random() * 2000) + 500,
120
- queriesPerDay
121
- },
122
- knowledge: {
123
- totalDocuments: ragSystem.totalDocuments || Math.floor(Math.random() * 500) + 100,
124
- documentsAdded: Math.floor(Math.random() * 50) + 10,
125
- documentsUpdated: Math.floor(Math.random() * 30) + 5,
126
- documentsDeleted: Math.floor(Math.random() * 10) + 1,
127
- categoriesDistribution: [
128
- { category: 'general', count: 45 },
129
- { category: 'faq', count: 32 },
130
- { category: 'guides', count: 28 },
131
- { category: 'reference', count: 15 },
132
- { category: 'manual', count: 12 }
133
- ]
134
- },
135
- performance: {
136
- averageConfidence: 0.78,
137
- responseTimeDistribution: [
138
- { range: '0-500ms', count: 45 },
139
- { range: '500-1000ms', count: 35 },
140
- { range: '1000-2000ms', count: 15 },
141
- { range: '2000ms+', count: 5 }
142
- ],
143
- popularQueries: [
144
- { query: 'How to get started?', count: 45, averageConfidence: 0.89 },
145
- { query: 'What are the features?', count: 38, averageConfidence: 0.85 },
146
- { query: 'Pricing information', count: 32, averageConfidence: 0.82 },
147
- { query: 'Technical support', count: 28, averageConfidence: 0.75 },
148
- { query: 'API documentation', count: 24, averageConfidence: 0.88 }
149
- ]
150
- },
151
- users: {
152
- activeUsers: Math.floor(Math.random() * 100) + 50,
153
- newUsers: Math.floor(Math.random() * 20) + 5,
154
- userSatisfaction: 4.2,
155
- feedbackDistribution: [
156
- { type: 'positive', count: 78 },
157
- { type: 'neutral', count: 15 },
158
- { type: 'negative', count: 7 }
159
- ]
160
- }
161
- }
162
- }
163
-
164
- const exportAnalytics = () => {
165
- if (!analyticsData) return
166
-
167
- const exportData = {
168
- timeRange: selectedTimeRange,
169
- exportedAt: new Date().toISOString(),
170
- data: analyticsData
171
- }
172
-
173
- const blob = new Blob([JSON.stringify(exportData, null, 2)], {
174
- type: 'application/json'
175
- })
176
- const url = URL.createObjectURL(blob)
177
- const a = document.createElement('a')
178
- a.href = url
179
- a.download = `rag-analytics-${selectedTimeRange}-${new Date().toISOString().split('T')[0]}.json`
180
- a.click()
181
- URL.revokeObjectURL(url)
182
- }
183
-
184
- if (!analyticsData) {
185
- return (
186
- <div className={`space-y-6 ${className}`}>
187
- <div className="flex items-center justify-center h-64">
188
- <div className="text-center">
189
- <div className="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-500 mx-auto mb-4"></div>
190
- <p>Loading analytics data...</p>
191
- </div>
192
- </div>
193
- </div>
194
- )
195
- }
196
-
197
- return (
198
- <div className={`space-y-6 ${className}`}>
199
- {/* Header */}
200
- <div className="flex items-center justify-between">
201
- <div>
202
- <h2 className="text-2xl font-bold">RAG Analytics</h2>
203
- <p className="text-gray-600 dark:text-gray-300">
204
- Performance insights for your AI knowledge system
205
- </p>
206
- </div>
207
-
208
- <div className="flex items-center gap-3">
209
- <select
210
- value={selectedTimeRange}
211
- onChange={(e) => setSelectedTimeRange(e.target.value as any)}
212
- className="px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
213
- >
214
- <option value="1d">Last 24 hours</option>
215
- <option value="7d">Last 7 days</option>
216
- <option value="30d">Last 30 days</option>
217
- <option value="90d">Last 90 days</option>
218
- </select>
219
-
220
- <button
221
- onClick={loadAnalyticsData}
222
- disabled={isLoading}
223
- className="p-2 border border-gray-200 dark:border-gray-700 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-800 disabled:opacity-50"
224
- >
225
- <RefreshCw className={`w-4 h-4 ${isLoading ? 'animate-spin' : ''}`} />
226
- </button>
227
-
228
- <button
229
- onClick={exportAnalytics}
230
- className="flex items-center gap-2 px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-800"
231
- >
232
- <Download className="w-4 h-4" />
233
- Export
234
- </button>
235
- </div>
236
- </div>
237
-
238
- {/* Key Metrics */}
239
- <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
240
- <Card className="p-6">
241
- <div className="flex items-center gap-3">
242
- <div className="p-2 bg-blue-100 dark:bg-blue-900/30 rounded-lg">
243
- <MessageSquare className="w-6 h-6 text-blue-600" />
244
- </div>
245
- <div>
246
- <p className="text-2xl font-bold">{analyticsData.usage.totalQueries.toLocaleString()}</p>
247
- <p className="text-sm text-gray-600 dark:text-gray-300">Total Queries</p>
248
- </div>
249
- </div>
250
- <div className="mt-2 flex items-center gap-1 text-sm">
251
- <TrendingUp className="w-4 h-4 text-green-500" />
252
- <span className="text-green-500">+12%</span>
253
- <span className="text-gray-500">vs last period</span>
254
- </div>
255
- </Card>
256
-
257
- <Card className="p-6">
258
- <div className="flex items-center gap-3">
259
- <div className="p-2 bg-green-100 dark:bg-green-900/30 rounded-lg">
260
- <Database className="w-6 h-6 text-green-600" />
261
- </div>
262
- <div>
263
- <p className="text-2xl font-bold">{analyticsData.knowledge.totalDocuments.toLocaleString()}</p>
264
- <p className="text-sm text-gray-600 dark:text-gray-300">Knowledge Docs</p>
265
- </div>
266
- </div>
267
- <div className="mt-2 flex items-center gap-1 text-sm">
268
- <TrendingUp className="w-4 h-4 text-green-500" />
269
- <span className="text-green-500">+{analyticsData.knowledge.documentsAdded}</span>
270
- <span className="text-gray-500">this period</span>
271
- </div>
272
- </Card>
273
-
274
- <Card className="p-6">
275
- <div className="flex items-center gap-3">
276
- <div className="p-2 bg-purple-100 dark:bg-purple-900/30 rounded-lg">
277
- <Clock className="w-6 h-6 text-purple-600" />
278
- </div>
279
- <div>
280
- <p className="text-2xl font-bold">{analyticsData.usage.averageResponseTime}ms</p>
281
- <p className="text-sm text-gray-600 dark:text-gray-300">Avg Response Time</p>
282
- </div>
283
- </div>
284
- <div className="mt-2 flex items-center gap-1 text-sm">
285
- <TrendingDown className="w-4 h-4 text-green-500" />
286
- <span className="text-green-500">-5%</span>
287
- <span className="text-gray-500">faster</span>
288
- </div>
289
- </Card>
290
-
291
- <Card className="p-6">
292
- <div className="flex items-center gap-3">
293
- <div className="p-2 bg-orange-100 dark:bg-orange-900/30 rounded-lg">
294
- <TrendingUp className="w-6 h-6 text-orange-600" />
295
- </div>
296
- <div>
297
- <p className="text-2xl font-bold">
298
- {Math.round(analyticsData.performance.averageConfidence * 100)}%
299
- </p>
300
- <p className="text-sm text-gray-600 dark:text-gray-300">Avg Confidence</p>
301
- </div>
302
- </div>
303
- <div className="mt-2 flex items-center gap-1 text-sm">
304
- <TrendingUp className="w-4 h-4 text-green-500" />
305
- <span className="text-green-500">+3%</span>
306
- <span className="text-gray-500">improvement</span>
307
- </div>
308
- </Card>
309
- </div>
310
-
311
- {/* Charts */}
312
- <div className="grid grid-cols-1 lg:grid-cols-2 gap-6">
313
- {/* Query Volume Chart */}
314
- <Card className="p-6">
315
- <h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
316
- <BarChart3 className="w-5 h-5" />
317
- Query Volume
318
- </h3>
319
- <ResponsiveContainer width="100%" height={300}>
320
- <AreaChart data={analyticsData.usage.queriesPerDay}>
321
- <CartesianGrid strokeDasharray="3 3" />
322
- <XAxis dataKey="date" />
323
- <YAxis />
324
- <Tooltip />
325
- <Area
326
- type="monotone"
327
- dataKey="queries"
328
- stroke="#3b82f6"
329
- fill="#3b82f6"
330
- fillOpacity={0.3}
331
- />
332
- </AreaChart>
333
- </ResponsiveContainer>
334
- </Card>
335
-
336
- {/* Response Time Distribution */}
337
- <Card className="p-6">
338
- <h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
339
- <Clock className="w-5 h-5" />
340
- Response Time Distribution
341
- </h3>
342
- <ResponsiveContainer width="100%" height={300}>
343
- <BarChart data={analyticsData.performance.responseTimeDistribution}>
344
- <CartesianGrid strokeDasharray="3 3" />
345
- <XAxis dataKey="range" />
346
- <YAxis />
347
- <Tooltip />
348
- <Bar dataKey="count" fill="#10b981" />
349
- </BarChart>
350
- </ResponsiveContainer>
351
- </Card>
352
-
353
- {/* Categories Distribution */}
354
- <Card className="p-6">
355
- <h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
356
- <PieChart className="w-5 h-5" />
357
- Knowledge Categories
358
- </h3>
359
- <ResponsiveContainer width="100%" height={300}>
360
- <RechartsPieChart>
361
- <Pie
362
- data={analyticsData.knowledge.categoriesDistribution}
363
- cx="50%"
364
- cy="50%"
365
- outerRadius={80}
366
- dataKey="count"
367
- label={({ category, count }) => `${category}: ${count}`}
368
- >
369
- {analyticsData.knowledge.categoriesDistribution.map((entry, index) => (
370
- <Cell key={`cell-${index}`} fill={COLORS[index % COLORS.length]} />
371
- ))}
372
- </Pie>
373
- <Tooltip />
374
- </RechartsPieChart>
375
- </ResponsiveContainer>
376
- </Card>
377
-
378
- {/* User Feedback */}
379
- <Card className="p-6">
380
- <h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
381
- <Users className="w-5 h-5" />
382
- User Feedback
383
- </h3>
384
- <div className="space-y-4">
385
- <div className="flex items-center justify-between">
386
- <span className="text-sm font-medium">Overall Satisfaction</span>
387
- <span className="text-2xl font-bold text-green-500">
388
- {analyticsData.users.userSatisfaction}/5.0
389
- </span>
390
- </div>
391
-
392
- {analyticsData.users.feedbackDistribution.map((feedback, index) => (
393
- <div key={feedback.type} className="space-y-2">
394
- <div className="flex justify-between text-sm">
395
- <span className="capitalize">{feedback.type}</span>
396
- <span>{feedback.count}</span>
397
- </div>
398
- <div className="w-full bg-gray-200 dark:bg-gray-700 rounded-full h-2">
399
- <div
400
- className="h-2 rounded-full"
401
- style={{
402
- width: `${(feedback.count / analyticsData.users.feedbackDistribution.reduce((sum, f) => sum + f.count, 0)) * 100}%`,
403
- backgroundColor: COLORS[index % COLORS.length]
404
- }}
405
- />
406
- </div>
407
- </div>
408
- ))}
409
- </div>
410
- </Card>
411
- </div>
412
-
413
- {/* Popular Queries */}
414
- {showDetailedMetrics && (
415
- <Card className="p-6">
416
- <h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
417
- <Activity className="w-5 h-5" />
418
- Popular Queries
419
- </h3>
420
- <div className="space-y-3">
421
- {analyticsData.performance.popularQueries.map((query, index) => (
422
- <div key={index} className="flex items-center justify-between p-3 bg-gray-50 dark:bg-gray-800/50 rounded-lg">
423
- <div className="flex-1">
424
- <p className="font-medium">{query.query}</p>
425
- <p className="text-sm text-gray-600 dark:text-gray-300">
426
- {query.count} queries • {Math.round(query.averageConfidence * 100)}% avg confidence
427
- </p>
428
- </div>
429
- <div className="text-right">
430
- <div className="text-2xl font-bold text-blue-500">#{index + 1}</div>
431
- </div>
432
- </div>
433
- ))}
434
- </div>
435
- </Card>
436
- )}
437
-
438
- {/* System Health Summary */}
439
- <Card className="p-6">
440
- <h3 className="text-lg font-semibold mb-4">System Health Summary</h3>
441
- <div className="grid grid-cols-1 md:grid-cols-3 gap-6">
442
- <div className="text-center">
443
- <div className="text-3xl font-bold text-green-500 mb-2">
444
- {Math.round((analyticsData.usage.successfulQueries / analyticsData.usage.totalQueries) * 100)}%
445
- </div>
446
- <p className="text-sm text-gray-600 dark:text-gray-300">Success Rate</p>
447
- </div>
448
-
449
- <div className="text-center">
450
- <div className="text-3xl font-bold text-blue-500 mb-2">
451
- {analyticsData.users.activeUsers}
452
- </div>
453
- <p className="text-sm text-gray-600 dark:text-gray-300">Active Users</p>
454
- </div>
455
-
456
- <div className="text-center">
457
- <div className="text-3xl font-bold text-purple-500 mb-2">
458
- {Math.round((analyticsData.knowledge.documentsAdded / analyticsData.knowledge.totalDocuments) * 100)}%
459
- </div>
460
- <p className="text-sm text-gray-600 dark:text-gray-300">Growth Rate</p>
461
- </div>
462
- </div>
463
- </Card>
464
- </div>
465
- )
466
- }