@digilogiclabs/create-saas-app 2.9.0 → 2.10.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 (343) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/generators/template-generator.d.ts.map +1 -1
  3. package/dist/generators/template-generator.js +6 -3
  4. package/dist/generators/template-generator.js.map +1 -1
  5. package/dist/templates/shared/auth/supabase/web/src/middleware.ts +63 -0
  6. package/dist/templates/shared/database/supabase/web/src/lib/supabase/server.ts +3 -1
  7. package/dist/templates/shared/design/web/src/config/design.config.ts +14 -14
  8. package/dist/templates/shared/landing/web/src/components/LandingPage.tsx +0 -3
  9. package/dist/templates/shared/security/web/src/lib/api-security.ts +2 -2
  10. package/dist/templates/web/ai-platform/template/next.config.js +14 -14
  11. package/dist/templates/web/ai-platform/template/package.json +11 -22
  12. package/dist/templates/web/ai-platform/template/postcss.config.mjs +8 -0
  13. package/dist/templates/web/ai-platform/template/src/app/chat/page.tsx +234 -235
  14. package/dist/templates/web/ai-platform/template/src/app/dashboard/page.tsx +142 -142
  15. package/dist/templates/web/ai-platform/template/src/app/error.tsx +13 -13
  16. package/dist/templates/web/ai-platform/template/src/app/globals.css +97 -34
  17. package/dist/templates/web/ai-platform/template/src/app/layout.tsx +3 -0
  18. package/dist/templates/web/ai-platform/template/src/app/loading.tsx +22 -22
  19. package/dist/templates/web/ai-platform/template/src/app/page.tsx +249 -155
  20. package/dist/templates/web/ai-platform/template/src/components/providers/app-providers.tsx +5 -2
  21. package/dist/templates/web/ai-platform/template/src/lib/auth-server.ts +32 -33
  22. package/dist/templates/web/base/template/next.config.js +14 -15
  23. package/dist/templates/web/base/template/package.json +16 -31
  24. package/dist/templates/web/base/template/postcss.config.mjs +8 -0
  25. package/dist/templates/web/base/template/src/app/error.tsx +97 -97
  26. package/dist/templates/web/base/template/src/app/globals.css +87 -148
  27. package/dist/templates/web/base/template/src/app/layout.tsx +4 -1
  28. package/dist/templates/web/base/template/src/app/loading.tsx +52 -52
  29. package/dist/templates/web/base/template/src/components/providers/app-providers.tsx +5 -2
  30. package/dist/templates/web/base/template/tsconfig.json +27 -33
  31. package/dist/templates/web/iot-dashboard/template/next.config.js +14 -14
  32. package/dist/templates/web/iot-dashboard/template/package.json +12 -16
  33. package/dist/templates/web/iot-dashboard/template/postcss.config.mjs +8 -0
  34. package/dist/templates/web/iot-dashboard/template/src/app/dashboard/page.tsx +224 -224
  35. package/dist/templates/web/iot-dashboard/template/src/app/error.tsx +8 -8
  36. package/dist/templates/web/iot-dashboard/template/src/app/globals.css +97 -20
  37. package/dist/templates/web/iot-dashboard/template/src/app/layout.tsx +3 -0
  38. package/dist/templates/web/iot-dashboard/template/src/app/loading.tsx +5 -5
  39. package/dist/templates/web/iot-dashboard/template/src/app/page.tsx +266 -189
  40. package/dist/templates/web/iot-dashboard/template/src/components/providers/app-providers.tsx +5 -2
  41. package/dist/templates/web/iot-dashboard/template/src/lib/auth-server.ts +32 -33
  42. package/dist/templates/web/marketplace/template/next.config.js +14 -14
  43. package/dist/templates/web/marketplace/template/package.json +11 -18
  44. package/dist/templates/web/marketplace/template/postcss.config.mjs +8 -0
  45. package/dist/templates/web/marketplace/template/src/app/cart/page.tsx +147 -147
  46. package/dist/templates/web/marketplace/template/src/app/dashboard/page.tsx +149 -149
  47. package/dist/templates/web/marketplace/template/src/app/error.tsx +7 -7
  48. package/dist/templates/web/marketplace/template/src/app/globals.css +97 -20
  49. package/dist/templates/web/marketplace/template/src/app/layout.tsx +3 -0
  50. package/dist/templates/web/marketplace/template/src/app/loading.tsx +5 -5
  51. package/dist/templates/web/marketplace/template/src/app/page.tsx +370 -169
  52. package/dist/templates/web/marketplace/template/src/app/products/page.tsx +129 -129
  53. package/dist/templates/web/marketplace/template/src/components/providers/app-providers.tsx +5 -2
  54. package/dist/templates/web/marketplace/template/src/lib/auth-server.ts +32 -33
  55. package/dist/templates/web/micro-saas/template/next.config.js +14 -14
  56. package/dist/templates/web/micro-saas/template/package.json +9 -8
  57. package/dist/templates/web/micro-saas/template/postcss.config.mjs +8 -0
  58. package/dist/templates/web/micro-saas/template/src/app/dashboard/page.tsx +145 -117
  59. package/dist/templates/web/micro-saas/template/src/app/error.tsx +7 -7
  60. package/dist/templates/web/micro-saas/template/src/app/globals.css +97 -20
  61. package/dist/templates/web/micro-saas/template/src/app/layout.tsx +3 -0
  62. package/dist/templates/web/micro-saas/template/src/app/loading.tsx +43 -27
  63. package/dist/templates/web/micro-saas/template/src/app/login/page.tsx +101 -87
  64. package/dist/templates/web/micro-saas/template/src/app/page.tsx +227 -137
  65. package/dist/templates/web/micro-saas/template/src/app/signup/page.tsx +122 -108
  66. package/dist/templates/web/micro-saas/template/src/components/providers/app-providers.tsx +5 -2
  67. package/dist/templates/web/micro-saas/template/src/lib/auth-server.ts +32 -33
  68. package/dist/templates/web/ui-auth/template/next.config.js +14 -12
  69. package/dist/templates/web/ui-auth/template/package.json +16 -26
  70. package/dist/templates/web/ui-auth/template/postcss.config.mjs +8 -0
  71. package/dist/templates/web/ui-auth/template/src/app/error.tsx +67 -67
  72. package/dist/templates/web/ui-auth/template/src/app/globals.css +85 -84
  73. package/dist/templates/web/ui-auth/template/src/app/layout.tsx +4 -1
  74. package/dist/templates/web/ui-auth/template/src/app/loading.tsx +20 -38
  75. package/dist/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +5 -2
  76. package/dist/templates/web/ui-auth/template/tsconfig.json +27 -33
  77. package/dist/templates/web/ui-auth-ai/template/next.config.js +15 -13
  78. package/dist/templates/web/ui-auth-ai/template/package.json +25 -21
  79. package/dist/templates/web/ui-auth-ai/template/postcss.config.mjs +8 -0
  80. package/dist/templates/web/ui-auth-ai/template/src/app/error.tsx +7 -7
  81. package/dist/templates/web/ui-auth-ai/template/src/app/globals.css +87 -25
  82. package/dist/templates/web/ui-auth-ai/template/src/app/layout.tsx +3 -0
  83. package/dist/templates/web/ui-auth-ai/template/src/app/loading.tsx +4 -4
  84. package/dist/templates/web/ui-auth-ai/template/tsconfig.json +27 -28
  85. package/dist/templates/web/ui-auth-payments/template/next.config.js +14 -12
  86. package/dist/templates/web/ui-auth-payments/template/package.json +16 -29
  87. package/dist/templates/web/ui-auth-payments/template/postcss.config.mjs +8 -0
  88. package/dist/templates/web/ui-auth-payments/template/src/app/error.tsx +67 -67
  89. package/dist/templates/web/ui-auth-payments/template/src/app/globals.css +89 -204
  90. package/dist/templates/web/ui-auth-payments/template/src/app/layout.tsx +4 -1
  91. package/dist/templates/web/ui-auth-payments/template/src/app/loading.tsx +20 -20
  92. package/dist/templates/web/ui-auth-payments/template/tsconfig.json +27 -33
  93. package/dist/templates/web/ui-auth-payments-ai/template/next.config.js +14 -12
  94. package/dist/templates/web/ui-auth-payments-ai/template/package.json +17 -33
  95. package/dist/templates/web/ui-auth-payments-ai/template/postcss.config.mjs +8 -0
  96. package/dist/templates/web/ui-auth-payments-ai/template/src/app/error.tsx +67 -67
  97. package/dist/templates/web/ui-auth-payments-ai/template/src/app/globals.css +85 -85
  98. package/dist/templates/web/ui-auth-payments-ai/template/src/app/layout.tsx +4 -1
  99. package/dist/templates/web/ui-auth-payments-ai/template/src/app/loading.tsx +20 -20
  100. package/dist/templates/web/ui-auth-payments-ai/template/src/components/providers/app-providers.tsx +5 -2
  101. package/dist/templates/web/ui-auth-payments-ai/template/tsconfig.json +27 -33
  102. package/dist/templates/web/ui-auth-payments-audio/template/next.config.js +14 -12
  103. package/dist/templates/web/ui-auth-payments-audio/template/package.json +17 -30
  104. package/dist/templates/web/ui-auth-payments-audio/template/postcss.config.mjs +8 -0
  105. package/dist/templates/web/ui-auth-payments-audio/template/src/app/error.tsx +67 -67
  106. package/dist/templates/web/ui-auth-payments-audio/template/src/app/globals.css +85 -85
  107. package/dist/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +4 -1
  108. package/dist/templates/web/ui-auth-payments-audio/template/src/app/loading.tsx +20 -20
  109. package/dist/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +5 -2
  110. package/dist/templates/web/ui-auth-payments-audio/template/tsconfig.json +27 -33
  111. package/dist/templates/web/ui-auth-payments-video/template/next.config.js +14 -12
  112. package/dist/templates/web/ui-auth-payments-video/template/package.json +17 -30
  113. package/dist/templates/web/ui-auth-payments-video/template/postcss.config.mjs +8 -0
  114. package/dist/templates/web/ui-auth-payments-video/template/src/app/error.tsx +67 -67
  115. package/dist/templates/web/ui-auth-payments-video/template/src/app/globals.css +89 -221
  116. package/dist/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +4 -1
  117. package/dist/templates/web/ui-auth-payments-video/template/src/app/loading.tsx +20 -20
  118. package/dist/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +5 -2
  119. package/dist/templates/web/ui-auth-payments-video/template/tsconfig.json +27 -33
  120. package/dist/templates/web/ui-only/template/next.config.js +14 -12
  121. package/dist/templates/web/ui-only/template/package.json +15 -25
  122. package/dist/templates/web/ui-only/template/postcss.config.mjs +8 -0
  123. package/dist/templates/web/ui-only/template/src/app/error.tsx +67 -67
  124. package/dist/templates/web/ui-only/template/src/app/globals.css +85 -31
  125. package/dist/templates/web/ui-only/template/src/app/layout.tsx +4 -1
  126. package/dist/templates/web/ui-only/template/src/app/loading.tsx +20 -20
  127. package/dist/templates/web/ui-only/template/src/components/providers/app-providers.tsx +20 -26
  128. package/dist/templates/web/ui-only/template/tsconfig.json +27 -33
  129. package/package.json +1 -1
  130. package/src/templates/shared/auth/supabase/web/src/middleware.ts +63 -0
  131. package/src/templates/shared/database/supabase/web/src/lib/supabase/server.ts +3 -1
  132. package/src/templates/shared/design/web/src/config/design.config.ts +14 -14
  133. package/src/templates/shared/landing/web/src/components/LandingPage.tsx +0 -3
  134. package/src/templates/shared/security/web/src/lib/api-security.ts +2 -2
  135. package/src/templates/web/ai-platform/template/next.config.js +14 -14
  136. package/src/templates/web/ai-platform/template/package.json +11 -22
  137. package/src/templates/web/ai-platform/template/postcss.config.mjs +8 -0
  138. package/src/templates/web/ai-platform/template/src/app/chat/page.tsx +234 -235
  139. package/src/templates/web/ai-platform/template/src/app/dashboard/page.tsx +142 -142
  140. package/src/templates/web/ai-platform/template/src/app/error.tsx +13 -13
  141. package/src/templates/web/ai-platform/template/src/app/globals.css +97 -34
  142. package/src/templates/web/ai-platform/template/src/app/layout.tsx +3 -0
  143. package/src/templates/web/ai-platform/template/src/app/loading.tsx +22 -22
  144. package/src/templates/web/ai-platform/template/src/app/page.tsx +249 -155
  145. package/src/templates/web/ai-platform/template/src/components/providers/app-providers.tsx +5 -2
  146. package/src/templates/web/ai-platform/template/src/lib/auth-server.ts +32 -33
  147. package/src/templates/web/base/template/next.config.js +14 -15
  148. package/src/templates/web/base/template/package.json +16 -31
  149. package/src/templates/web/base/template/postcss.config.mjs +8 -0
  150. package/src/templates/web/base/template/src/app/error.tsx +97 -97
  151. package/src/templates/web/base/template/src/app/globals.css +87 -148
  152. package/src/templates/web/base/template/src/app/layout.tsx +4 -1
  153. package/src/templates/web/base/template/src/app/loading.tsx +52 -52
  154. package/src/templates/web/base/template/src/components/providers/app-providers.tsx +5 -2
  155. package/src/templates/web/base/template/tsconfig.json +27 -33
  156. package/src/templates/web/iot-dashboard/template/next.config.js +14 -14
  157. package/src/templates/web/iot-dashboard/template/package.json +12 -16
  158. package/src/templates/web/iot-dashboard/template/postcss.config.mjs +8 -0
  159. package/src/templates/web/iot-dashboard/template/src/app/dashboard/page.tsx +224 -224
  160. package/src/templates/web/iot-dashboard/template/src/app/error.tsx +8 -8
  161. package/src/templates/web/iot-dashboard/template/src/app/globals.css +97 -20
  162. package/src/templates/web/iot-dashboard/template/src/app/layout.tsx +3 -0
  163. package/src/templates/web/iot-dashboard/template/src/app/loading.tsx +5 -5
  164. package/src/templates/web/iot-dashboard/template/src/app/page.tsx +266 -189
  165. package/src/templates/web/iot-dashboard/template/src/components/providers/app-providers.tsx +5 -2
  166. package/src/templates/web/iot-dashboard/template/src/lib/auth-server.ts +32 -33
  167. package/src/templates/web/marketplace/template/next.config.js +14 -14
  168. package/src/templates/web/marketplace/template/package.json +11 -18
  169. package/src/templates/web/marketplace/template/postcss.config.mjs +8 -0
  170. package/src/templates/web/marketplace/template/src/app/cart/page.tsx +147 -147
  171. package/src/templates/web/marketplace/template/src/app/dashboard/page.tsx +149 -149
  172. package/src/templates/web/marketplace/template/src/app/error.tsx +7 -7
  173. package/src/templates/web/marketplace/template/src/app/globals.css +97 -20
  174. package/src/templates/web/marketplace/template/src/app/layout.tsx +3 -0
  175. package/src/templates/web/marketplace/template/src/app/loading.tsx +5 -5
  176. package/src/templates/web/marketplace/template/src/app/page.tsx +370 -169
  177. package/src/templates/web/marketplace/template/src/app/products/page.tsx +129 -129
  178. package/src/templates/web/marketplace/template/src/components/providers/app-providers.tsx +5 -2
  179. package/src/templates/web/marketplace/template/src/lib/auth-server.ts +32 -33
  180. package/src/templates/web/micro-saas/template/next.config.js +14 -14
  181. package/src/templates/web/micro-saas/template/package.json +9 -8
  182. package/src/templates/web/micro-saas/template/postcss.config.mjs +8 -0
  183. package/src/templates/web/micro-saas/template/src/app/dashboard/page.tsx +145 -117
  184. package/src/templates/web/micro-saas/template/src/app/error.tsx +7 -7
  185. package/src/templates/web/micro-saas/template/src/app/globals.css +97 -20
  186. package/src/templates/web/micro-saas/template/src/app/layout.tsx +3 -0
  187. package/src/templates/web/micro-saas/template/src/app/loading.tsx +43 -27
  188. package/src/templates/web/micro-saas/template/src/app/login/page.tsx +101 -87
  189. package/src/templates/web/micro-saas/template/src/app/page.tsx +227 -137
  190. package/src/templates/web/micro-saas/template/src/app/signup/page.tsx +122 -108
  191. package/src/templates/web/micro-saas/template/src/components/providers/app-providers.tsx +5 -2
  192. package/src/templates/web/micro-saas/template/src/lib/auth-server.ts +32 -33
  193. package/src/templates/web/ui-auth/template/next.config.js +14 -12
  194. package/src/templates/web/ui-auth/template/package.json +16 -26
  195. package/src/templates/web/ui-auth/template/postcss.config.mjs +8 -0
  196. package/src/templates/web/ui-auth/template/src/app/error.tsx +67 -67
  197. package/src/templates/web/ui-auth/template/src/app/globals.css +85 -84
  198. package/src/templates/web/ui-auth/template/src/app/layout.tsx +4 -1
  199. package/src/templates/web/ui-auth/template/src/app/loading.tsx +20 -38
  200. package/src/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +5 -2
  201. package/src/templates/web/ui-auth/template/tsconfig.json +27 -33
  202. package/src/templates/web/ui-auth-ai/template/next.config.js +15 -13
  203. package/src/templates/web/ui-auth-ai/template/package.json +25 -21
  204. package/src/templates/web/ui-auth-ai/template/postcss.config.mjs +8 -0
  205. package/src/templates/web/ui-auth-ai/template/src/app/error.tsx +7 -7
  206. package/src/templates/web/ui-auth-ai/template/src/app/globals.css +87 -25
  207. package/src/templates/web/ui-auth-ai/template/src/app/layout.tsx +3 -0
  208. package/src/templates/web/ui-auth-ai/template/src/app/loading.tsx +4 -4
  209. package/src/templates/web/ui-auth-ai/template/tsconfig.json +27 -28
  210. package/src/templates/web/ui-auth-payments/template/next.config.js +14 -12
  211. package/src/templates/web/ui-auth-payments/template/package.json +16 -29
  212. package/src/templates/web/ui-auth-payments/template/postcss.config.mjs +8 -0
  213. package/src/templates/web/ui-auth-payments/template/src/app/error.tsx +67 -67
  214. package/src/templates/web/ui-auth-payments/template/src/app/globals.css +89 -204
  215. package/src/templates/web/ui-auth-payments/template/src/app/layout.tsx +4 -1
  216. package/src/templates/web/ui-auth-payments/template/src/app/loading.tsx +20 -20
  217. package/src/templates/web/ui-auth-payments/template/tsconfig.json +27 -33
  218. package/src/templates/web/ui-auth-payments-ai/template/next.config.js +14 -12
  219. package/src/templates/web/ui-auth-payments-ai/template/package.json +17 -33
  220. package/src/templates/web/ui-auth-payments-ai/template/postcss.config.mjs +8 -0
  221. package/src/templates/web/ui-auth-payments-ai/template/src/app/error.tsx +67 -67
  222. package/src/templates/web/ui-auth-payments-ai/template/src/app/globals.css +85 -85
  223. package/src/templates/web/ui-auth-payments-ai/template/src/app/layout.tsx +4 -1
  224. package/src/templates/web/ui-auth-payments-ai/template/src/app/loading.tsx +20 -20
  225. package/src/templates/web/ui-auth-payments-ai/template/src/components/providers/app-providers.tsx +5 -2
  226. package/src/templates/web/ui-auth-payments-ai/template/tsconfig.json +27 -33
  227. package/src/templates/web/ui-auth-payments-audio/template/next.config.js +14 -12
  228. package/src/templates/web/ui-auth-payments-audio/template/package.json +17 -30
  229. package/src/templates/web/ui-auth-payments-audio/template/postcss.config.mjs +8 -0
  230. package/src/templates/web/ui-auth-payments-audio/template/src/app/error.tsx +67 -67
  231. package/src/templates/web/ui-auth-payments-audio/template/src/app/globals.css +85 -85
  232. package/src/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +4 -1
  233. package/src/templates/web/ui-auth-payments-audio/template/src/app/loading.tsx +20 -20
  234. package/src/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +5 -2
  235. package/src/templates/web/ui-auth-payments-audio/template/tsconfig.json +27 -33
  236. package/src/templates/web/ui-auth-payments-video/template/next.config.js +14 -12
  237. package/src/templates/web/ui-auth-payments-video/template/package.json +17 -30
  238. package/src/templates/web/ui-auth-payments-video/template/postcss.config.mjs +8 -0
  239. package/src/templates/web/ui-auth-payments-video/template/src/app/error.tsx +67 -67
  240. package/src/templates/web/ui-auth-payments-video/template/src/app/globals.css +89 -221
  241. package/src/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +4 -1
  242. package/src/templates/web/ui-auth-payments-video/template/src/app/loading.tsx +20 -20
  243. package/src/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +5 -2
  244. package/src/templates/web/ui-auth-payments-video/template/tsconfig.json +27 -33
  245. package/src/templates/web/ui-only/template/next.config.js +14 -12
  246. package/src/templates/web/ui-only/template/package.json +15 -25
  247. package/src/templates/web/ui-only/template/postcss.config.mjs +8 -0
  248. package/src/templates/web/ui-only/template/src/app/error.tsx +67 -67
  249. package/src/templates/web/ui-only/template/src/app/globals.css +85 -31
  250. package/src/templates/web/ui-only/template/src/app/layout.tsx +4 -1
  251. package/src/templates/web/ui-only/template/src/app/loading.tsx +20 -20
  252. package/src/templates/web/ui-only/template/src/components/providers/app-providers.tsx +20 -26
  253. package/src/templates/web/ui-only/template/tsconfig.json +27 -33
  254. package/dist/templates/web/ai-platform/template/middleware.ts +0 -55
  255. package/dist/templates/web/ai-platform/template/src/lib/supabase/client.ts +0 -8
  256. package/dist/templates/web/ai-platform/template/src/lib/supabase/server.ts +0 -27
  257. package/dist/templates/web/base/template/postcss.config.js +0 -7
  258. package/dist/templates/web/base/template/tailwind.config.js +0 -77
  259. package/dist/templates/web/iot-dashboard/template/middleware.ts +0 -56
  260. package/dist/templates/web/iot-dashboard/template/src/lib/supabase/client.ts +0 -8
  261. package/dist/templates/web/iot-dashboard/template/src/lib/supabase/server.ts +0 -27
  262. package/dist/templates/web/marketplace/template/middleware.ts +0 -56
  263. package/dist/templates/web/marketplace/template/src/lib/supabase/client.ts +0 -8
  264. package/dist/templates/web/marketplace/template/src/lib/supabase/server.ts +0 -27
  265. package/dist/templates/web/micro-saas/template/middleware.ts +0 -53
  266. package/dist/templates/web/micro-saas/template/src/lib/supabase/client.ts +0 -8
  267. package/dist/templates/web/micro-saas/template/src/lib/supabase/server.ts +0 -29
  268. package/dist/templates/web/ui-auth/template/.claude +0 -21
  269. package/dist/templates/web/ui-auth/template/context.md +0 -105
  270. package/dist/templates/web/ui-auth/template/postcss.config.js +0 -7
  271. package/dist/templates/web/ui-auth/template/tailwind.config.js +0 -77
  272. package/dist/templates/web/ui-auth-ai/template/postcss.config.js +0 -6
  273. package/dist/templates/web/ui-auth-ai/template/tailwind.config.js +0 -22
  274. package/dist/templates/web/ui-auth-payments/template/middleware.ts +0 -68
  275. package/dist/templates/web/ui-auth-payments/template/package-lock.json +0 -12240
  276. package/dist/templates/web/ui-auth-payments/template/postcss.config.js +0 -7
  277. package/dist/templates/web/ui-auth-payments/template/tailwind.config.js +0 -77
  278. package/dist/templates/web/ui-auth-payments/template/tsconfig.tsbuildinfo +0 -1
  279. package/dist/templates/web/ui-auth-payments-ai/template/.claude +0 -21
  280. package/dist/templates/web/ui-auth-payments-ai/template/context.md +0 -169
  281. package/dist/templates/web/ui-auth-payments-ai/template/middleware.ts +0 -68
  282. package/dist/templates/web/ui-auth-payments-ai/template/package-lock.json +0 -12241
  283. package/dist/templates/web/ui-auth-payments-ai/template/postcss.config.js +0 -7
  284. package/dist/templates/web/ui-auth-payments-ai/template/tailwind.config.js +0 -77
  285. package/dist/templates/web/ui-auth-payments-ai/template/tsconfig.tsbuildinfo +0 -1
  286. package/dist/templates/web/ui-auth-payments-audio/template/middleware.ts +0 -68
  287. package/dist/templates/web/ui-auth-payments-audio/template/package-lock.json +0 -12241
  288. package/dist/templates/web/ui-auth-payments-audio/template/postcss.config.js +0 -7
  289. package/dist/templates/web/ui-auth-payments-audio/template/tailwind.config.js +0 -77
  290. package/dist/templates/web/ui-auth-payments-audio/template/tsconfig.tsbuildinfo +0 -1
  291. package/dist/templates/web/ui-auth-payments-video/template/postcss.config.js +0 -7
  292. package/dist/templates/web/ui-auth-payments-video/template/tailwind.config.js +0 -77
  293. package/dist/templates/web/ui-only/template/postcss.config.js +0 -7
  294. package/dist/templates/web/ui-only/template/tailwind.config.js +0 -77
  295. package/src/templates/web/ai-platform/template/middleware.ts +0 -55
  296. package/src/templates/web/ai-platform/template/src/lib/supabase/client.ts +0 -8
  297. package/src/templates/web/ai-platform/template/src/lib/supabase/server.ts +0 -27
  298. package/src/templates/web/base/template/postcss.config.js +0 -7
  299. package/src/templates/web/base/template/tailwind.config.js +0 -77
  300. package/src/templates/web/iot-dashboard/template/middleware.ts +0 -56
  301. package/src/templates/web/iot-dashboard/template/src/lib/supabase/client.ts +0 -8
  302. package/src/templates/web/iot-dashboard/template/src/lib/supabase/server.ts +0 -27
  303. package/src/templates/web/marketplace/template/middleware.ts +0 -56
  304. package/src/templates/web/marketplace/template/src/lib/supabase/client.ts +0 -8
  305. package/src/templates/web/marketplace/template/src/lib/supabase/server.ts +0 -27
  306. package/src/templates/web/micro-saas/template/middleware.ts +0 -53
  307. package/src/templates/web/micro-saas/template/src/lib/supabase/client.ts +0 -8
  308. package/src/templates/web/micro-saas/template/src/lib/supabase/server.ts +0 -29
  309. package/src/templates/web/ui-auth/template/.claude +0 -21
  310. package/src/templates/web/ui-auth/template/context.md +0 -105
  311. package/src/templates/web/ui-auth/template/postcss.config.js +0 -7
  312. package/src/templates/web/ui-auth/template/tailwind.config.js +0 -77
  313. package/src/templates/web/ui-auth-ai/template/postcss.config.js +0 -6
  314. package/src/templates/web/ui-auth-ai/template/tailwind.config.js +0 -22
  315. package/src/templates/web/ui-auth-payments/template/middleware.ts +0 -68
  316. package/src/templates/web/ui-auth-payments/template/package-lock.json +0 -12240
  317. package/src/templates/web/ui-auth-payments/template/postcss.config.js +0 -7
  318. package/src/templates/web/ui-auth-payments/template/tailwind.config.js +0 -77
  319. package/src/templates/web/ui-auth-payments/template/tsconfig.tsbuildinfo +0 -1
  320. package/src/templates/web/ui-auth-payments-ai/template/.claude +0 -21
  321. package/src/templates/web/ui-auth-payments-ai/template/context.md +0 -169
  322. package/src/templates/web/ui-auth-payments-ai/template/middleware.ts +0 -68
  323. package/src/templates/web/ui-auth-payments-ai/template/package-lock.json +0 -12241
  324. package/src/templates/web/ui-auth-payments-ai/template/postcss.config.js +0 -7
  325. package/src/templates/web/ui-auth-payments-ai/template/tailwind.config.js +0 -77
  326. package/src/templates/web/ui-auth-payments-ai/template/tsconfig.tsbuildinfo +0 -1
  327. package/src/templates/web/ui-auth-payments-audio/template/middleware.ts +0 -68
  328. package/src/templates/web/ui-auth-payments-audio/template/package-lock.json +0 -12241
  329. package/src/templates/web/ui-auth-payments-audio/template/postcss.config.js +0 -7
  330. package/src/templates/web/ui-auth-payments-audio/template/tailwind.config.js +0 -77
  331. package/src/templates/web/ui-auth-payments-audio/template/tsconfig.tsbuildinfo +0 -1
  332. package/src/templates/web/ui-auth-payments-video/template/postcss.config.js +0 -7
  333. package/src/templates/web/ui-auth-payments-video/template/tailwind.config.js +0 -77
  334. package/src/templates/web/ui-only/template/postcss.config.js +0 -7
  335. package/src/templates/web/ui-only/template/tailwind.config.js +0 -77
  336. /package/dist/templates/shared/admin/web/{components → src/components}/admin-nav.tsx +0 -0
  337. /package/dist/templates/shared/auth/keycloak/web/{auth.config.ts → src/auth.config.ts} +0 -0
  338. /package/dist/templates/shared/auth/keycloak/web/{auth.ts → src/auth.ts} +0 -0
  339. /package/dist/templates/shared/middleware/web/{middleware.ts → src/middleware.ts} +0 -0
  340. /package/src/templates/shared/admin/web/{components → src/components}/admin-nav.tsx +0 -0
  341. /package/src/templates/shared/auth/keycloak/web/{auth.config.ts → src/auth.config.ts} +0 -0
  342. /package/src/templates/shared/auth/keycloak/web/{auth.ts → src/auth.ts} +0 -0
  343. /package/src/templates/shared/middleware/web/{middleware.ts → src/middleware.ts} +0 -0
@@ -1,207 +1,301 @@
1
1
  'use client'
2
2
 
3
- import { Button, Card, PremiumCard, PremiumCardContent, GradientBorderCard } from '@digilogiclabs/saas-factory-ui'
4
- import { useAuth } from '@digilogiclabs/app-sdk'
5
- import { Bot, Sparkles, Zap, MessageSquare, Code, Brain, ArrowRight, User, LogOut } from 'lucide-react'
3
+ import { useState, useEffect } from 'react'
4
+ import { Button, Card, CardContent } from '@digilogiclabs/saas-factory-ui'
5
+ import { Bot, Sparkles, MessageSquare, Code, Brain, Zap, ArrowRight, Sun, Moon } from 'lucide-react'
6
+ import { useTheme } from 'next-themes'
6
7
  import Link from 'next/link'
7
8
 
9
+ function ThemeToggle() {
10
+ const { theme, setTheme } = useTheme()
11
+ const [mounted, setMounted] = useState(false)
12
+ useEffect(() => setMounted(true), [])
13
+ if (!mounted) return <div className="w-9 h-9" />
14
+ return (
15
+ <button
16
+ onClick={() => setTheme(theme === 'dark' ? 'light' : 'dark')}
17
+ className="inline-flex items-center justify-center w-9 h-9 rounded-md border border-border bg-background hover:bg-accent hover:text-accent-foreground active:scale-95 transition-all duration-200 cursor-pointer"
18
+ aria-label="Toggle theme"
19
+ >
20
+ {theme === 'dark' ? <Sun className="w-4 h-4" /> : <Moon className="w-4 h-4" />}
21
+ </button>
22
+ )
23
+ }
24
+
8
25
  const FEATURES = [
9
26
  {
10
27
  icon: MessageSquare,
11
28
  title: 'AI Chat',
12
- description: 'Conversational AI with multiple model support',
13
- color: 'blue',
29
+ description: 'Conversational AI powered by multiple frontier models with streaming responses.',
30
+ iconColor: 'text-violet-500',
31
+ iconBg: 'bg-violet-500/10',
14
32
  },
15
33
  {
16
34
  icon: Code,
17
35
  title: 'Code Generation',
18
- description: 'Generate and refactor code with AI assistance',
19
- color: 'green',
36
+ description: 'Generate, refactor, and explain code with context-aware AI assistance.',
37
+ iconColor: 'text-cyan-500',
38
+ iconBg: 'bg-cyan-500/10',
20
39
  },
21
40
  {
22
- icon: <Brain className="w-4 h-4" />,
41
+ icon: Brain,
23
42
  title: 'Custom Models',
24
- description: 'Fine-tune and deploy your own AI models',
25
- color: 'purple',
43
+ description: 'Fine-tune and deploy your own models with managed infrastructure.',
44
+ iconColor: 'text-amber-500',
45
+ iconBg: 'bg-amber-500/10',
26
46
  },
27
47
  {
28
48
  icon: Zap,
29
49
  title: 'API Access',
30
- description: 'Integrate AI capabilities into your applications',
31
- color: 'orange',
50
+ description: 'Integrate AI capabilities into your apps with a unified REST API.',
51
+ iconColor: 'text-emerald-500',
52
+ iconBg: 'bg-emerald-500/10',
32
53
  },
33
54
  ]
34
55
 
35
56
  const MODELS = [
36
- { name: 'GPT-4o', provider: 'OpenAI', status: 'available' },
37
- { name: 'Claude 3.5', provider: 'Anthropic', status: 'available' },
38
- { name: 'Gemini Pro', provider: 'Google', status: 'coming_soon' },
39
- { name: 'Llama 3', provider: 'Meta', status: 'available' },
57
+ { name: 'GPT-4o', provider: 'OpenAI', status: 'available' as const },
58
+ { name: 'Claude 3.5', provider: 'Anthropic', status: 'available' as const },
59
+ { name: 'Gemini Pro', provider: 'Google', status: 'coming_soon' as const },
60
+ { name: 'Llama 3', provider: 'Meta', status: 'available' as const },
40
61
  ]
41
62
 
42
63
  export default function Home() {
43
- const { user, signOut, loading } = useAuth()
44
-
45
- const projectName = "{{titleCaseName}}"
46
-
47
- const handleSignOut = async () => {
48
- try {
49
- await signOut()
50
- } catch (err) {
51
- console.error('Sign out error:', err)
52
- }
53
- }
64
+ const projectName = '{{titleCaseName}}'
54
65
 
55
66
  return (
56
- <main className="min-h-screen bg-gradient-to-br from-slate-900 via-purple-900 to-slate-900">
57
- {/* Header */}
58
- <header className="border-b border-white/10 bg-black/20 backdrop-blur-sm sticky top-0 z-50">
59
- <div className="max-w-7xl mx-auto px-4 py-4">
60
- <div className="flex items-center justify-between">
61
- <Link href="/" className="flex items-center gap-2">
62
- <Bot className="w-8 h-8 text-purple-400" />
63
- <span className="text-2xl font-bold text-white">{projectName}</span>
67
+ <div className="min-h-screen bg-background text-foreground">
68
+ {/* Nav */}
69
+ <header className="sticky top-0 z-50 border-b border-border bg-background/80 backdrop-blur-md">
70
+ <div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
71
+ <div className="flex h-16 items-center justify-between">
72
+ <Link href="/" className="flex items-center gap-2.5">
73
+ <div className="flex h-9 w-9 items-center justify-center rounded-lg bg-gradient-to-br from-brand-from via-brand-via to-brand-to">
74
+ <Bot className="h-5 w-5 text-white" />
75
+ </div>
76
+ <span className="text-lg font-bold tracking-tight">{projectName}</span>
64
77
  </Link>
65
78
 
66
- <nav className="hidden md:flex items-center gap-6">
67
- <Link href="/models" className="text-gray-300 hover:text-white transition">
68
- Models
69
- </Link>
70
- <Link href="/playground" className="text-gray-300 hover:text-white transition">
71
- Playground
72
- </Link>
73
- <Link href="/docs" className="text-gray-300 hover:text-white transition">
74
- Docs
75
- </Link>
79
+ <nav className="hidden items-center gap-1 md:flex">
80
+ {['Models', 'Playground', 'Docs'].map((item) => (
81
+ <Link
82
+ key={item}
83
+ href={`/${item.toLowerCase()}`}
84
+ className="rounded-md px-3 py-2 text-sm font-medium text-muted-foreground hover:bg-accent hover:text-accent-foreground transition-colors duration-200"
85
+ >
86
+ {item}
87
+ </Link>
88
+ ))}
76
89
  </nav>
77
90
 
78
- <div className="flex items-center gap-4">
79
- {loading ? (
80
- <div className="text-sm text-gray-400">Loading...</div>
81
- ) : user ? (
82
- <div className="flex items-center gap-2">
83
- <Link href="/dashboard">
84
- <Button variant="outline" size="sm" className="border-white/20 text-white hover:bg-white/10">
85
- <User className="w-4 h-4 mr-2" />
86
- Dashboard
87
- </Button>
88
- </Link>
89
- <Button variant="ghost" size="sm" onClick={handleSignOut} className="text-gray-400 hover:text-white">
90
- <LogOut className="w-4 h-4" />
91
- </Button>
92
- </div>
93
- ) : (
94
- <div className="flex gap-2">
95
- <Link href="/login">
96
- <Button variant="outline" size="sm" className="border-white/20 text-white hover:bg-white/10">
97
- Sign In
98
- </Button>
99
- </Link>
100
- <Link href="/signup">
101
- <Button size="sm" className="bg-purple-600 hover:bg-purple-700">
102
- Get Started
103
- </Button>
104
- </Link>
105
- </div>
106
- )}
91
+ <div className="flex items-center gap-3">
92
+ <ThemeToggle />
93
+ <Link href="/login">
94
+ <Button
95
+ variant="ghost"
96
+ size="sm"
97
+ className="text-muted-foreground hover:text-foreground active:scale-95 transition-all duration-200 cursor-pointer"
98
+ >
99
+ Sign In
100
+ </Button>
101
+ </Link>
102
+ <Link href="/signup">
103
+ <Button
104
+ size="sm"
105
+ className="bg-gradient-to-r from-brand-from via-brand-via to-brand-to text-white hover:brightness-110 shadow-sm hover:shadow-md active:scale-95 transition-all duration-200 cursor-pointer"
106
+ >
107
+ Get Started
108
+ </Button>
109
+ </Link>
107
110
  </div>
108
111
  </div>
109
112
  </div>
110
113
  </header>
111
114
 
112
- <div className="max-w-7xl mx-auto px-4 py-16">
115
+ <main id="main-content">
113
116
  {/* Hero */}
114
- <div className="text-center mb-20">
115
- <div className="inline-flex items-center px-4 py-2 rounded-full bg-purple-500/20 text-purple-300 text-sm mb-6">
116
- <Sparkles className="w-4 h-4 mr-2" />
117
- AI-Powered Platform
118
- </div>
119
- <h1 className="text-5xl md:text-7xl font-bold text-white mb-6">
120
- Build with <span className="text-transparent bg-clip-text bg-gradient-to-r from-purple-400 to-pink-400">AI</span>
121
- </h1>
122
- <p className="text-xl text-gray-300 max-w-2xl mx-auto mb-8">
123
- Access powerful AI models, build intelligent applications, and scale effortlessly.
124
- </p>
125
- <div className="flex gap-4 justify-center">
126
- <Link href="/chat">
127
- <Button size="lg" className="bg-purple-600 hover:bg-purple-700">
128
- <MessageSquare className="w-5 h-5 mr-2" />
129
- Try AI Chat
130
- </Button>
131
- </Link>
132
- <Link href="/playground">
133
- <Button size="lg" variant="outline" className="border-white/20 text-white hover:bg-white/10">
134
- Open Playground
135
- </Button>
136
- </Link>
117
+ <section className="relative overflow-hidden px-4 pt-24 pb-20 sm:px-6 lg:px-8">
118
+ <div className="pointer-events-none absolute inset-0 bg-gradient-to-b from-brand-from/5 via-transparent to-transparent" />
119
+ <div className="relative mx-auto max-w-4xl text-center">
120
+ <div className="mb-6 inline-flex items-center gap-2 rounded-full border border-border bg-muted/50 px-4 py-1.5 text-sm font-medium text-muted-foreground">
121
+ <Sparkles className="h-4 w-4 text-primary" />
122
+ AI-Powered Platform
123
+ </div>
124
+
125
+ <h1 className="mb-6 text-5xl font-bold tracking-tight sm:text-6xl lg:text-7xl">
126
+ Build with{' '}
127
+ <span className="bg-gradient-to-r from-brand-from via-brand-via to-brand-to bg-clip-text text-transparent">
128
+ AI
129
+ </span>
130
+ </h1>
131
+
132
+ <p className="mx-auto mb-10 max-w-2xl text-lg text-muted-foreground sm:text-xl">
133
+ Access powerful AI models from leading providers. Build intelligent applications
134
+ and scale effortlessly with a unified platform.
135
+ </p>
136
+
137
+ <div className="flex flex-col items-center justify-center gap-4 sm:flex-row">
138
+ <Link href="/chat">
139
+ <Button
140
+ size="lg"
141
+ className="bg-gradient-to-r from-brand-from via-brand-via to-brand-to text-white hover:brightness-110 shadow-sm hover:shadow-md active:scale-[0.97] transition-all duration-200 cursor-pointer"
142
+ >
143
+ <MessageSquare className="mr-2 h-5 w-5" />
144
+ Try AI Chat
145
+ </Button>
146
+ </Link>
147
+ <Link href="/playground">
148
+ <Button
149
+ size="lg"
150
+ variant="outline"
151
+ className="border-border hover:bg-accent hover:text-accent-foreground active:scale-[0.97] transition-all duration-200 cursor-pointer"
152
+ >
153
+ Open Playground
154
+ <ArrowRight className="ml-2 h-4 w-4" />
155
+ </Button>
156
+ </Link>
157
+ </div>
137
158
  </div>
138
- </div>
159
+ </section>
139
160
 
140
161
  {/* Features */}
141
- <div className="grid md:grid-cols-2 lg:grid-cols-4 gap-6 mb-20">
142
- {FEATURES.map((feature) => (
143
- <PremiumCard key={feature.title} variant="glass" className="bg-white/5 border-white/10 backdrop-blur-sm">
144
- <PremiumCardContent className="p-6">
145
- <div className={`w-12 h-12 rounded-lg flex items-center justify-center mb-4 bg-${feature.color}-500/20`}>
146
- <feature.icon className={`w-6 h-6 text-${feature.color}-400`} />
147
- </div>
148
- <h3 className="text-lg font-semibold text-white mb-2">{feature.title}</h3>
149
- <p className="text-gray-400 text-sm">{feature.description}</p>
150
- </PremiumCardContent>
151
- </PremiumCard>
152
- ))}
153
- </div>
162
+ <section className="px-4 py-20 sm:px-6 lg:px-8">
163
+ <div className="mx-auto max-w-7xl">
164
+ <div className="mb-12 text-center">
165
+ <h2 className="mb-3 text-3xl font-bold tracking-tight sm:text-4xl">
166
+ Everything you need to build with AI
167
+ </h2>
168
+ <p className="mx-auto max-w-2xl text-muted-foreground">
169
+ From chat interfaces to custom model deployment, our platform provides the tools
170
+ to integrate AI into any workflow.
171
+ </p>
172
+ </div>
154
173
 
155
- {/* Available Models */}
156
- <div className="mb-20">
157
- <div className="flex items-center justify-between mb-8">
158
- <div>
159
- <h2 className="text-3xl font-bold text-white mb-2">Available Models</h2>
160
- <p className="text-gray-400">Access leading AI models from top providers</p>
174
+ <div className="grid gap-6 sm:grid-cols-2 lg:grid-cols-4">
175
+ {FEATURES.map((feature) => (
176
+ <Card
177
+ key={feature.title}
178
+ className="group cursor-default border-border bg-background hover:shadow-xl hover:-translate-y-1 transition-all duration-300"
179
+ >
180
+ <CardContent className="p-6">
181
+ <div className={`mb-4 flex h-12 w-12 items-center justify-center rounded-lg ${feature.iconBg}`}>
182
+ <feature.icon className={`h-6 w-6 ${feature.iconColor}`} />
183
+ </div>
184
+ <h3 className="mb-2 text-lg font-semibold">{feature.title}</h3>
185
+ <p className="text-sm leading-relaxed text-muted-foreground">
186
+ {feature.description}
187
+ </p>
188
+ </CardContent>
189
+ </Card>
190
+ ))}
161
191
  </div>
162
- <Link href="/models">
163
- <Button variant="ghost" className="text-purple-400 hover:text-purple-300">
164
- View All
165
- <ArrowRight className="w-4 h-4 ml-2" />
166
- </Button>
167
- </Link>
168
192
  </div>
193
+ </section>
169
194
 
170
- <div className="grid md:grid-cols-2 lg:grid-cols-4 gap-4">
171
- {MODELS.map((model) => (
172
- <Card key={model.name} className="p-4 bg-white/5 border-white/10">
173
- <div className="flex items-center justify-between mb-2">
174
- <h3 className="font-semibold text-white">{model.name}</h3>
175
- <span className={`text-xs px-2 py-1 rounded ${
176
- model.status === 'available'
177
- ? 'bg-green-500/20 text-green-400'
178
- : 'bg-yellow-500/20 text-yellow-400'
179
- }`}>
180
- {model.status === 'available' ? 'Available' : 'Coming Soon'}
181
- </span>
182
- </div>
183
- <p className="text-sm text-gray-400">{model.provider}</p>
184
- </Card>
185
- ))}
195
+ {/* Available Models */}
196
+ <section className="px-4 py-20 sm:px-6 lg:px-8">
197
+ <div className="mx-auto max-w-7xl">
198
+ <div className="mb-10 flex flex-col items-start justify-between gap-4 sm:flex-row sm:items-end">
199
+ <div>
200
+ <h2 className="mb-2 text-3xl font-bold tracking-tight sm:text-4xl">
201
+ Available Models
202
+ </h2>
203
+ <p className="text-muted-foreground">
204
+ Access leading AI models from top providers through a single API.
205
+ </p>
206
+ </div>
207
+ <Link href="/models">
208
+ <Button
209
+ variant="ghost"
210
+ className="text-primary hover:text-primary hover:bg-accent active:scale-95 transition-all duration-200 cursor-pointer"
211
+ >
212
+ View All Models
213
+ <ArrowRight className="ml-2 h-4 w-4" />
214
+ </Button>
215
+ </Link>
216
+ </div>
217
+
218
+ <div className="grid gap-4 sm:grid-cols-2 lg:grid-cols-4">
219
+ {MODELS.map((model) => (
220
+ <Card
221
+ key={model.name}
222
+ className="group cursor-default border-border bg-background hover:shadow-xl hover:-translate-y-1 transition-all duration-300"
223
+ >
224
+ <CardContent className="p-5">
225
+ <div className="mb-3 flex items-center justify-between">
226
+ <h3 className="text-base font-semibold">{model.name}</h3>
227
+ <span
228
+ className={`inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium ${
229
+ model.status === 'available'
230
+ ? 'bg-emerald-500/10 text-emerald-500'
231
+ : 'bg-amber-500/10 text-amber-500'
232
+ }`}
233
+ >
234
+ {model.status === 'available' ? 'Available' : 'Coming Soon'}
235
+ </span>
236
+ </div>
237
+ <p className="text-sm text-muted-foreground">{model.provider}</p>
238
+ </CardContent>
239
+ </Card>
240
+ ))}
241
+ </div>
186
242
  </div>
187
- </div>
243
+ </section>
188
244
 
189
245
  {/* CTA */}
190
- <GradientBorderCard gradientColors="from-purple-500 via-pink-500 to-purple-500" borderWidth={2}>
191
- <div className="text-center py-6">
192
- <h2 className="text-3xl font-bold text-white mb-4">Ready to Build?</h2>
193
- <p className="text-gray-400 mb-8 max-w-md mx-auto">
194
- Start building AI-powered applications today. Free tier available.
246
+ <section className="px-4 py-20 sm:px-6 lg:px-8">
247
+ <div className="mx-auto max-w-7xl">
248
+ <div className="overflow-hidden rounded-2xl bg-gradient-to-r from-brand-from via-brand-via to-brand-to px-6 py-16 text-center shadow-xl sm:px-16">
249
+ <h2 className="mb-4 text-3xl font-bold text-white sm:text-4xl">
250
+ Ready to Build with AI?
251
+ </h2>
252
+ <p className="mx-auto mb-8 max-w-xl text-lg text-white/80">
253
+ Start building AI-powered applications today. Free tier available with generous
254
+ usage limits.
255
+ </p>
256
+ <Link href="/signup">
257
+ <Button
258
+ size="lg"
259
+ className="bg-white text-foreground hover:bg-white/90 shadow-md hover:shadow-lg active:scale-[0.97] transition-all duration-200 cursor-pointer"
260
+ >
261
+ Get Started Free
262
+ <ArrowRight className="ml-2 h-5 w-5" />
263
+ </Button>
264
+ </Link>
265
+ </div>
266
+ </div>
267
+ </section>
268
+ </main>
269
+
270
+ {/* Footer */}
271
+ <footer className="border-t border-border">
272
+ <div className="mx-auto max-w-7xl px-4 py-10 sm:px-6 lg:px-8">
273
+ <div className="flex flex-col items-center justify-between gap-6 sm:flex-row">
274
+ <div className="flex items-center gap-2.5">
275
+ <div className="flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-brand-from via-brand-via to-brand-to">
276
+ <Bot className="h-4 w-4 text-white" />
277
+ </div>
278
+ <span className="text-sm font-semibold">{projectName}</span>
279
+ </div>
280
+
281
+ <nav className="flex items-center gap-6">
282
+ {['Models', 'Playground', 'Docs', 'Pricing'].map((item) => (
283
+ <Link
284
+ key={item}
285
+ href={`/${item.toLowerCase()}`}
286
+ className="text-sm text-muted-foreground hover:text-foreground transition-colors duration-200"
287
+ >
288
+ {item}
289
+ </Link>
290
+ ))}
291
+ </nav>
292
+
293
+ <p className="text-sm text-muted-foreground">
294
+ &copy; {new Date().getFullYear()} {projectName}. All rights reserved.
195
295
  </p>
196
- <Link href="/signup">
197
- <Button size="lg" className="bg-purple-600 hover:bg-purple-700">
198
- Get Started Free
199
- <ArrowRight className="w-5 h-5 ml-2" />
200
- </Button>
201
- </Link>
202
296
  </div>
203
- </GradientBorderCard>
204
- </div>
205
- </main>
297
+ </div>
298
+ </footer>
299
+ </div>
206
300
  )
207
301
  }
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { ThemeProvider } from 'next-themes'
4
4
  import { Toaster } from '@digilogiclabs/saas-factory-ui'
5
+ import { DLLProvider } from '@digilogiclabs/app-sdk'
5
6
 
6
7
  interface AppProvidersProps {
7
8
  children: React.ReactNode
@@ -10,8 +11,10 @@ interface AppProvidersProps {
10
11
  export function AppProviders({ children }: AppProvidersProps) {
11
12
  return (
12
13
  <ThemeProvider attribute="class" defaultTheme="system" enableSystem disableTransitionOnChange>
13
- {children}
14
- <Toaster />
14
+ <DLLProvider>
15
+ {children}
16
+ <Toaster />
17
+ </DLLProvider>
15
18
  </ThemeProvider>
16
19
  )
17
20
  }
@@ -1,33 +1,32 @@
1
- import { redirect } from 'next/navigation'
2
- import { createClient } from './supabase/server'
3
-
4
- export interface AuthUser {
5
- id: string
6
- email: string | null
7
- name?: string | null
8
- }
9
-
10
- export async function getUser(): Promise<AuthUser | null> {
11
- const supabase = await createClient()
12
- const { data: { user }, error } = await supabase.auth.getUser()
13
-
14
- if (error || !user) {
15
- return null
16
- }
17
-
18
- return {
19
- id: user.id,
20
- email: user.email ?? null,
21
- name: user.user_metadata?.name ?? user.user_metadata?.full_name ?? null,
22
- }
23
- }
24
-
25
- export async function requireAuth(): Promise<AuthUser> {
26
- const user = await getUser()
27
-
28
- if (!user) {
29
- redirect('/login')
30
- }
31
-
32
- return user
33
- }
1
+ import { redirect } from 'next/navigation'
2
+ import { getSession, getUser as getSessionUser } from './auth-session'
3
+
4
+ export interface AuthUser {
5
+ id: string
6
+ email: string | null
7
+ name?: string | null
8
+ }
9
+
10
+ export async function getUser(): Promise<AuthUser | null> {
11
+ const user = await getSessionUser()
12
+
13
+ if (!user || !user.id) {
14
+ return null
15
+ }
16
+
17
+ return {
18
+ id: user.id,
19
+ email: user.email ?? null,
20
+ name: user.name ?? null,
21
+ }
22
+ }
23
+
24
+ export async function requireAuth(): Promise<AuthUser> {
25
+ const user = await getUser()
26
+
27
+ if (!user) {
28
+ redirect('/login')
29
+ }
30
+
31
+ return user
32
+ }
@@ -1,15 +1,14 @@
1
- /** @type {import('next').NextConfig} */
2
- const nextConfig = {
3
- experimental: {
4
- appDir: true,
5
- },
6
- images: {
7
- domains: ['localhost'],
8
- },
9
- env: {
10
- CUSTOM_KEY: process.env.CUSTOM_KEY,
11
- },
12
- }
13
-
14
- module.exports = nextConfig
15
-
1
+ /** @type {import('next').NextConfig} */
2
+ const nextConfig = {
3
+ reactStrictMode: true,
4
+ images: {
5
+ remotePatterns: [
6
+ {
7
+ protocol: 'https',
8
+ hostname: '**',
9
+ },
10
+ ],
11
+ },
12
+ }
13
+
14
+ module.exports = nextConfig