@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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/generators/template-generator.d.ts.map +1 -1
- package/dist/generators/template-generator.js +6 -3
- package/dist/generators/template-generator.js.map +1 -1
- package/dist/templates/shared/auth/supabase/web/src/middleware.ts +63 -0
- package/dist/templates/shared/database/supabase/web/src/lib/supabase/server.ts +3 -1
- package/dist/templates/shared/design/web/src/config/design.config.ts +14 -14
- package/dist/templates/shared/landing/web/src/components/LandingPage.tsx +0 -3
- package/dist/templates/shared/security/web/src/lib/api-security.ts +2 -2
- package/dist/templates/web/ai-platform/template/next.config.js +14 -14
- package/dist/templates/web/ai-platform/template/package.json +11 -22
- package/dist/templates/web/ai-platform/template/postcss.config.mjs +8 -0
- package/dist/templates/web/ai-platform/template/src/app/chat/page.tsx +234 -235
- package/dist/templates/web/ai-platform/template/src/app/dashboard/page.tsx +142 -142
- package/dist/templates/web/ai-platform/template/src/app/error.tsx +13 -13
- package/dist/templates/web/ai-platform/template/src/app/globals.css +97 -34
- package/dist/templates/web/ai-platform/template/src/app/layout.tsx +3 -0
- package/dist/templates/web/ai-platform/template/src/app/loading.tsx +22 -22
- package/dist/templates/web/ai-platform/template/src/app/page.tsx +249 -155
- package/dist/templates/web/ai-platform/template/src/components/providers/app-providers.tsx +5 -2
- package/dist/templates/web/ai-platform/template/src/lib/auth-server.ts +32 -33
- package/dist/templates/web/base/template/next.config.js +14 -15
- package/dist/templates/web/base/template/package.json +16 -31
- package/dist/templates/web/base/template/postcss.config.mjs +8 -0
- package/dist/templates/web/base/template/src/app/error.tsx +97 -97
- package/dist/templates/web/base/template/src/app/globals.css +87 -148
- package/dist/templates/web/base/template/src/app/layout.tsx +4 -1
- package/dist/templates/web/base/template/src/app/loading.tsx +52 -52
- package/dist/templates/web/base/template/src/components/providers/app-providers.tsx +5 -2
- package/dist/templates/web/base/template/tsconfig.json +27 -33
- package/dist/templates/web/iot-dashboard/template/next.config.js +14 -14
- package/dist/templates/web/iot-dashboard/template/package.json +12 -16
- package/dist/templates/web/iot-dashboard/template/postcss.config.mjs +8 -0
- package/dist/templates/web/iot-dashboard/template/src/app/dashboard/page.tsx +224 -224
- package/dist/templates/web/iot-dashboard/template/src/app/error.tsx +8 -8
- package/dist/templates/web/iot-dashboard/template/src/app/globals.css +97 -20
- package/dist/templates/web/iot-dashboard/template/src/app/layout.tsx +3 -0
- package/dist/templates/web/iot-dashboard/template/src/app/loading.tsx +5 -5
- package/dist/templates/web/iot-dashboard/template/src/app/page.tsx +266 -189
- package/dist/templates/web/iot-dashboard/template/src/components/providers/app-providers.tsx +5 -2
- package/dist/templates/web/iot-dashboard/template/src/lib/auth-server.ts +32 -33
- package/dist/templates/web/marketplace/template/next.config.js +14 -14
- package/dist/templates/web/marketplace/template/package.json +11 -18
- package/dist/templates/web/marketplace/template/postcss.config.mjs +8 -0
- package/dist/templates/web/marketplace/template/src/app/cart/page.tsx +147 -147
- package/dist/templates/web/marketplace/template/src/app/dashboard/page.tsx +149 -149
- package/dist/templates/web/marketplace/template/src/app/error.tsx +7 -7
- package/dist/templates/web/marketplace/template/src/app/globals.css +97 -20
- package/dist/templates/web/marketplace/template/src/app/layout.tsx +3 -0
- package/dist/templates/web/marketplace/template/src/app/loading.tsx +5 -5
- package/dist/templates/web/marketplace/template/src/app/page.tsx +370 -169
- package/dist/templates/web/marketplace/template/src/app/products/page.tsx +129 -129
- package/dist/templates/web/marketplace/template/src/components/providers/app-providers.tsx +5 -2
- package/dist/templates/web/marketplace/template/src/lib/auth-server.ts +32 -33
- package/dist/templates/web/micro-saas/template/next.config.js +14 -14
- package/dist/templates/web/micro-saas/template/package.json +9 -8
- package/dist/templates/web/micro-saas/template/postcss.config.mjs +8 -0
- package/dist/templates/web/micro-saas/template/src/app/dashboard/page.tsx +145 -117
- package/dist/templates/web/micro-saas/template/src/app/error.tsx +7 -7
- package/dist/templates/web/micro-saas/template/src/app/globals.css +97 -20
- package/dist/templates/web/micro-saas/template/src/app/layout.tsx +3 -0
- package/dist/templates/web/micro-saas/template/src/app/loading.tsx +43 -27
- package/dist/templates/web/micro-saas/template/src/app/login/page.tsx +101 -87
- package/dist/templates/web/micro-saas/template/src/app/page.tsx +227 -137
- package/dist/templates/web/micro-saas/template/src/app/signup/page.tsx +122 -108
- package/dist/templates/web/micro-saas/template/src/components/providers/app-providers.tsx +5 -2
- package/dist/templates/web/micro-saas/template/src/lib/auth-server.ts +32 -33
- package/dist/templates/web/ui-auth/template/next.config.js +14 -12
- package/dist/templates/web/ui-auth/template/package.json +16 -26
- package/dist/templates/web/ui-auth/template/postcss.config.mjs +8 -0
- package/dist/templates/web/ui-auth/template/src/app/error.tsx +67 -67
- package/dist/templates/web/ui-auth/template/src/app/globals.css +85 -84
- package/dist/templates/web/ui-auth/template/src/app/layout.tsx +4 -1
- package/dist/templates/web/ui-auth/template/src/app/loading.tsx +20 -38
- package/dist/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +5 -2
- package/dist/templates/web/ui-auth/template/tsconfig.json +27 -33
- package/dist/templates/web/ui-auth-ai/template/next.config.js +15 -13
- package/dist/templates/web/ui-auth-ai/template/package.json +25 -21
- package/dist/templates/web/ui-auth-ai/template/postcss.config.mjs +8 -0
- package/dist/templates/web/ui-auth-ai/template/src/app/error.tsx +7 -7
- package/dist/templates/web/ui-auth-ai/template/src/app/globals.css +87 -25
- package/dist/templates/web/ui-auth-ai/template/src/app/layout.tsx +3 -0
- package/dist/templates/web/ui-auth-ai/template/src/app/loading.tsx +4 -4
- package/dist/templates/web/ui-auth-ai/template/tsconfig.json +27 -28
- package/dist/templates/web/ui-auth-payments/template/next.config.js +14 -12
- package/dist/templates/web/ui-auth-payments/template/package.json +16 -29
- package/dist/templates/web/ui-auth-payments/template/postcss.config.mjs +8 -0
- package/dist/templates/web/ui-auth-payments/template/src/app/error.tsx +67 -67
- package/dist/templates/web/ui-auth-payments/template/src/app/globals.css +89 -204
- package/dist/templates/web/ui-auth-payments/template/src/app/layout.tsx +4 -1
- package/dist/templates/web/ui-auth-payments/template/src/app/loading.tsx +20 -20
- package/dist/templates/web/ui-auth-payments/template/tsconfig.json +27 -33
- package/dist/templates/web/ui-auth-payments-ai/template/next.config.js +14 -12
- package/dist/templates/web/ui-auth-payments-ai/template/package.json +17 -33
- package/dist/templates/web/ui-auth-payments-ai/template/postcss.config.mjs +8 -0
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/error.tsx +67 -67
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/globals.css +85 -85
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/layout.tsx +4 -1
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/loading.tsx +20 -20
- package/dist/templates/web/ui-auth-payments-ai/template/src/components/providers/app-providers.tsx +5 -2
- package/dist/templates/web/ui-auth-payments-ai/template/tsconfig.json +27 -33
- package/dist/templates/web/ui-auth-payments-audio/template/next.config.js +14 -12
- package/dist/templates/web/ui-auth-payments-audio/template/package.json +17 -30
- package/dist/templates/web/ui-auth-payments-audio/template/postcss.config.mjs +8 -0
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/error.tsx +67 -67
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/globals.css +85 -85
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +4 -1
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/loading.tsx +20 -20
- package/dist/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +5 -2
- package/dist/templates/web/ui-auth-payments-audio/template/tsconfig.json +27 -33
- package/dist/templates/web/ui-auth-payments-video/template/next.config.js +14 -12
- package/dist/templates/web/ui-auth-payments-video/template/package.json +17 -30
- package/dist/templates/web/ui-auth-payments-video/template/postcss.config.mjs +8 -0
- package/dist/templates/web/ui-auth-payments-video/template/src/app/error.tsx +67 -67
- package/dist/templates/web/ui-auth-payments-video/template/src/app/globals.css +89 -221
- package/dist/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +4 -1
- package/dist/templates/web/ui-auth-payments-video/template/src/app/loading.tsx +20 -20
- package/dist/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +5 -2
- package/dist/templates/web/ui-auth-payments-video/template/tsconfig.json +27 -33
- package/dist/templates/web/ui-only/template/next.config.js +14 -12
- package/dist/templates/web/ui-only/template/package.json +15 -25
- package/dist/templates/web/ui-only/template/postcss.config.mjs +8 -0
- package/dist/templates/web/ui-only/template/src/app/error.tsx +67 -67
- package/dist/templates/web/ui-only/template/src/app/globals.css +85 -31
- package/dist/templates/web/ui-only/template/src/app/layout.tsx +4 -1
- package/dist/templates/web/ui-only/template/src/app/loading.tsx +20 -20
- package/dist/templates/web/ui-only/template/src/components/providers/app-providers.tsx +20 -26
- package/dist/templates/web/ui-only/template/tsconfig.json +27 -33
- package/package.json +1 -1
- package/src/templates/shared/auth/supabase/web/src/middleware.ts +63 -0
- package/src/templates/shared/database/supabase/web/src/lib/supabase/server.ts +3 -1
- package/src/templates/shared/design/web/src/config/design.config.ts +14 -14
- package/src/templates/shared/landing/web/src/components/LandingPage.tsx +0 -3
- package/src/templates/shared/security/web/src/lib/api-security.ts +2 -2
- package/src/templates/web/ai-platform/template/next.config.js +14 -14
- package/src/templates/web/ai-platform/template/package.json +11 -22
- package/src/templates/web/ai-platform/template/postcss.config.mjs +8 -0
- package/src/templates/web/ai-platform/template/src/app/chat/page.tsx +234 -235
- package/src/templates/web/ai-platform/template/src/app/dashboard/page.tsx +142 -142
- package/src/templates/web/ai-platform/template/src/app/error.tsx +13 -13
- package/src/templates/web/ai-platform/template/src/app/globals.css +97 -34
- package/src/templates/web/ai-platform/template/src/app/layout.tsx +3 -0
- package/src/templates/web/ai-platform/template/src/app/loading.tsx +22 -22
- package/src/templates/web/ai-platform/template/src/app/page.tsx +249 -155
- package/src/templates/web/ai-platform/template/src/components/providers/app-providers.tsx +5 -2
- package/src/templates/web/ai-platform/template/src/lib/auth-server.ts +32 -33
- package/src/templates/web/base/template/next.config.js +14 -15
- package/src/templates/web/base/template/package.json +16 -31
- package/src/templates/web/base/template/postcss.config.mjs +8 -0
- package/src/templates/web/base/template/src/app/error.tsx +97 -97
- package/src/templates/web/base/template/src/app/globals.css +87 -148
- package/src/templates/web/base/template/src/app/layout.tsx +4 -1
- package/src/templates/web/base/template/src/app/loading.tsx +52 -52
- package/src/templates/web/base/template/src/components/providers/app-providers.tsx +5 -2
- package/src/templates/web/base/template/tsconfig.json +27 -33
- package/src/templates/web/iot-dashboard/template/next.config.js +14 -14
- package/src/templates/web/iot-dashboard/template/package.json +12 -16
- package/src/templates/web/iot-dashboard/template/postcss.config.mjs +8 -0
- package/src/templates/web/iot-dashboard/template/src/app/dashboard/page.tsx +224 -224
- package/src/templates/web/iot-dashboard/template/src/app/error.tsx +8 -8
- package/src/templates/web/iot-dashboard/template/src/app/globals.css +97 -20
- package/src/templates/web/iot-dashboard/template/src/app/layout.tsx +3 -0
- package/src/templates/web/iot-dashboard/template/src/app/loading.tsx +5 -5
- package/src/templates/web/iot-dashboard/template/src/app/page.tsx +266 -189
- package/src/templates/web/iot-dashboard/template/src/components/providers/app-providers.tsx +5 -2
- package/src/templates/web/iot-dashboard/template/src/lib/auth-server.ts +32 -33
- package/src/templates/web/marketplace/template/next.config.js +14 -14
- package/src/templates/web/marketplace/template/package.json +11 -18
- package/src/templates/web/marketplace/template/postcss.config.mjs +8 -0
- package/src/templates/web/marketplace/template/src/app/cart/page.tsx +147 -147
- package/src/templates/web/marketplace/template/src/app/dashboard/page.tsx +149 -149
- package/src/templates/web/marketplace/template/src/app/error.tsx +7 -7
- package/src/templates/web/marketplace/template/src/app/globals.css +97 -20
- package/src/templates/web/marketplace/template/src/app/layout.tsx +3 -0
- package/src/templates/web/marketplace/template/src/app/loading.tsx +5 -5
- package/src/templates/web/marketplace/template/src/app/page.tsx +370 -169
- package/src/templates/web/marketplace/template/src/app/products/page.tsx +129 -129
- package/src/templates/web/marketplace/template/src/components/providers/app-providers.tsx +5 -2
- package/src/templates/web/marketplace/template/src/lib/auth-server.ts +32 -33
- package/src/templates/web/micro-saas/template/next.config.js +14 -14
- package/src/templates/web/micro-saas/template/package.json +9 -8
- package/src/templates/web/micro-saas/template/postcss.config.mjs +8 -0
- package/src/templates/web/micro-saas/template/src/app/dashboard/page.tsx +145 -117
- package/src/templates/web/micro-saas/template/src/app/error.tsx +7 -7
- package/src/templates/web/micro-saas/template/src/app/globals.css +97 -20
- package/src/templates/web/micro-saas/template/src/app/layout.tsx +3 -0
- package/src/templates/web/micro-saas/template/src/app/loading.tsx +43 -27
- package/src/templates/web/micro-saas/template/src/app/login/page.tsx +101 -87
- package/src/templates/web/micro-saas/template/src/app/page.tsx +227 -137
- package/src/templates/web/micro-saas/template/src/app/signup/page.tsx +122 -108
- package/src/templates/web/micro-saas/template/src/components/providers/app-providers.tsx +5 -2
- package/src/templates/web/micro-saas/template/src/lib/auth-server.ts +32 -33
- package/src/templates/web/ui-auth/template/next.config.js +14 -12
- package/src/templates/web/ui-auth/template/package.json +16 -26
- package/src/templates/web/ui-auth/template/postcss.config.mjs +8 -0
- package/src/templates/web/ui-auth/template/src/app/error.tsx +67 -67
- package/src/templates/web/ui-auth/template/src/app/globals.css +85 -84
- package/src/templates/web/ui-auth/template/src/app/layout.tsx +4 -1
- package/src/templates/web/ui-auth/template/src/app/loading.tsx +20 -38
- package/src/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +5 -2
- package/src/templates/web/ui-auth/template/tsconfig.json +27 -33
- package/src/templates/web/ui-auth-ai/template/next.config.js +15 -13
- package/src/templates/web/ui-auth-ai/template/package.json +25 -21
- package/src/templates/web/ui-auth-ai/template/postcss.config.mjs +8 -0
- package/src/templates/web/ui-auth-ai/template/src/app/error.tsx +7 -7
- package/src/templates/web/ui-auth-ai/template/src/app/globals.css +87 -25
- package/src/templates/web/ui-auth-ai/template/src/app/layout.tsx +3 -0
- package/src/templates/web/ui-auth-ai/template/src/app/loading.tsx +4 -4
- package/src/templates/web/ui-auth-ai/template/tsconfig.json +27 -28
- package/src/templates/web/ui-auth-payments/template/next.config.js +14 -12
- package/src/templates/web/ui-auth-payments/template/package.json +16 -29
- package/src/templates/web/ui-auth-payments/template/postcss.config.mjs +8 -0
- package/src/templates/web/ui-auth-payments/template/src/app/error.tsx +67 -67
- package/src/templates/web/ui-auth-payments/template/src/app/globals.css +89 -204
- package/src/templates/web/ui-auth-payments/template/src/app/layout.tsx +4 -1
- package/src/templates/web/ui-auth-payments/template/src/app/loading.tsx +20 -20
- package/src/templates/web/ui-auth-payments/template/tsconfig.json +27 -33
- package/src/templates/web/ui-auth-payments-ai/template/next.config.js +14 -12
- package/src/templates/web/ui-auth-payments-ai/template/package.json +17 -33
- package/src/templates/web/ui-auth-payments-ai/template/postcss.config.mjs +8 -0
- package/src/templates/web/ui-auth-payments-ai/template/src/app/error.tsx +67 -67
- package/src/templates/web/ui-auth-payments-ai/template/src/app/globals.css +85 -85
- package/src/templates/web/ui-auth-payments-ai/template/src/app/layout.tsx +4 -1
- package/src/templates/web/ui-auth-payments-ai/template/src/app/loading.tsx +20 -20
- package/src/templates/web/ui-auth-payments-ai/template/src/components/providers/app-providers.tsx +5 -2
- package/src/templates/web/ui-auth-payments-ai/template/tsconfig.json +27 -33
- package/src/templates/web/ui-auth-payments-audio/template/next.config.js +14 -12
- package/src/templates/web/ui-auth-payments-audio/template/package.json +17 -30
- package/src/templates/web/ui-auth-payments-audio/template/postcss.config.mjs +8 -0
- package/src/templates/web/ui-auth-payments-audio/template/src/app/error.tsx +67 -67
- package/src/templates/web/ui-auth-payments-audio/template/src/app/globals.css +85 -85
- package/src/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +4 -1
- package/src/templates/web/ui-auth-payments-audio/template/src/app/loading.tsx +20 -20
- package/src/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +5 -2
- package/src/templates/web/ui-auth-payments-audio/template/tsconfig.json +27 -33
- package/src/templates/web/ui-auth-payments-video/template/next.config.js +14 -12
- package/src/templates/web/ui-auth-payments-video/template/package.json +17 -30
- package/src/templates/web/ui-auth-payments-video/template/postcss.config.mjs +8 -0
- package/src/templates/web/ui-auth-payments-video/template/src/app/error.tsx +67 -67
- package/src/templates/web/ui-auth-payments-video/template/src/app/globals.css +89 -221
- package/src/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +4 -1
- package/src/templates/web/ui-auth-payments-video/template/src/app/loading.tsx +20 -20
- package/src/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +5 -2
- package/src/templates/web/ui-auth-payments-video/template/tsconfig.json +27 -33
- package/src/templates/web/ui-only/template/next.config.js +14 -12
- package/src/templates/web/ui-only/template/package.json +15 -25
- package/src/templates/web/ui-only/template/postcss.config.mjs +8 -0
- package/src/templates/web/ui-only/template/src/app/error.tsx +67 -67
- package/src/templates/web/ui-only/template/src/app/globals.css +85 -31
- package/src/templates/web/ui-only/template/src/app/layout.tsx +4 -1
- package/src/templates/web/ui-only/template/src/app/loading.tsx +20 -20
- package/src/templates/web/ui-only/template/src/components/providers/app-providers.tsx +20 -26
- package/src/templates/web/ui-only/template/tsconfig.json +27 -33
- package/dist/templates/web/ai-platform/template/middleware.ts +0 -55
- package/dist/templates/web/ai-platform/template/src/lib/supabase/client.ts +0 -8
- package/dist/templates/web/ai-platform/template/src/lib/supabase/server.ts +0 -27
- package/dist/templates/web/base/template/postcss.config.js +0 -7
- package/dist/templates/web/base/template/tailwind.config.js +0 -77
- package/dist/templates/web/iot-dashboard/template/middleware.ts +0 -56
- package/dist/templates/web/iot-dashboard/template/src/lib/supabase/client.ts +0 -8
- package/dist/templates/web/iot-dashboard/template/src/lib/supabase/server.ts +0 -27
- package/dist/templates/web/marketplace/template/middleware.ts +0 -56
- package/dist/templates/web/marketplace/template/src/lib/supabase/client.ts +0 -8
- package/dist/templates/web/marketplace/template/src/lib/supabase/server.ts +0 -27
- package/dist/templates/web/micro-saas/template/middleware.ts +0 -53
- package/dist/templates/web/micro-saas/template/src/lib/supabase/client.ts +0 -8
- package/dist/templates/web/micro-saas/template/src/lib/supabase/server.ts +0 -29
- package/dist/templates/web/ui-auth/template/.claude +0 -21
- package/dist/templates/web/ui-auth/template/context.md +0 -105
- package/dist/templates/web/ui-auth/template/postcss.config.js +0 -7
- package/dist/templates/web/ui-auth/template/tailwind.config.js +0 -77
- package/dist/templates/web/ui-auth-ai/template/postcss.config.js +0 -6
- package/dist/templates/web/ui-auth-ai/template/tailwind.config.js +0 -22
- package/dist/templates/web/ui-auth-payments/template/middleware.ts +0 -68
- package/dist/templates/web/ui-auth-payments/template/package-lock.json +0 -12240
- package/dist/templates/web/ui-auth-payments/template/postcss.config.js +0 -7
- package/dist/templates/web/ui-auth-payments/template/tailwind.config.js +0 -77
- package/dist/templates/web/ui-auth-payments/template/tsconfig.tsbuildinfo +0 -1
- package/dist/templates/web/ui-auth-payments-ai/template/.claude +0 -21
- package/dist/templates/web/ui-auth-payments-ai/template/context.md +0 -169
- package/dist/templates/web/ui-auth-payments-ai/template/middleware.ts +0 -68
- package/dist/templates/web/ui-auth-payments-ai/template/package-lock.json +0 -12241
- package/dist/templates/web/ui-auth-payments-ai/template/postcss.config.js +0 -7
- package/dist/templates/web/ui-auth-payments-ai/template/tailwind.config.js +0 -77
- package/dist/templates/web/ui-auth-payments-ai/template/tsconfig.tsbuildinfo +0 -1
- package/dist/templates/web/ui-auth-payments-audio/template/middleware.ts +0 -68
- package/dist/templates/web/ui-auth-payments-audio/template/package-lock.json +0 -12241
- package/dist/templates/web/ui-auth-payments-audio/template/postcss.config.js +0 -7
- package/dist/templates/web/ui-auth-payments-audio/template/tailwind.config.js +0 -77
- package/dist/templates/web/ui-auth-payments-audio/template/tsconfig.tsbuildinfo +0 -1
- package/dist/templates/web/ui-auth-payments-video/template/postcss.config.js +0 -7
- package/dist/templates/web/ui-auth-payments-video/template/tailwind.config.js +0 -77
- package/dist/templates/web/ui-only/template/postcss.config.js +0 -7
- package/dist/templates/web/ui-only/template/tailwind.config.js +0 -77
- package/src/templates/web/ai-platform/template/middleware.ts +0 -55
- package/src/templates/web/ai-platform/template/src/lib/supabase/client.ts +0 -8
- package/src/templates/web/ai-platform/template/src/lib/supabase/server.ts +0 -27
- package/src/templates/web/base/template/postcss.config.js +0 -7
- package/src/templates/web/base/template/tailwind.config.js +0 -77
- package/src/templates/web/iot-dashboard/template/middleware.ts +0 -56
- package/src/templates/web/iot-dashboard/template/src/lib/supabase/client.ts +0 -8
- package/src/templates/web/iot-dashboard/template/src/lib/supabase/server.ts +0 -27
- package/src/templates/web/marketplace/template/middleware.ts +0 -56
- package/src/templates/web/marketplace/template/src/lib/supabase/client.ts +0 -8
- package/src/templates/web/marketplace/template/src/lib/supabase/server.ts +0 -27
- package/src/templates/web/micro-saas/template/middleware.ts +0 -53
- package/src/templates/web/micro-saas/template/src/lib/supabase/client.ts +0 -8
- package/src/templates/web/micro-saas/template/src/lib/supabase/server.ts +0 -29
- package/src/templates/web/ui-auth/template/.claude +0 -21
- package/src/templates/web/ui-auth/template/context.md +0 -105
- package/src/templates/web/ui-auth/template/postcss.config.js +0 -7
- package/src/templates/web/ui-auth/template/tailwind.config.js +0 -77
- package/src/templates/web/ui-auth-ai/template/postcss.config.js +0 -6
- package/src/templates/web/ui-auth-ai/template/tailwind.config.js +0 -22
- package/src/templates/web/ui-auth-payments/template/middleware.ts +0 -68
- package/src/templates/web/ui-auth-payments/template/package-lock.json +0 -12240
- package/src/templates/web/ui-auth-payments/template/postcss.config.js +0 -7
- package/src/templates/web/ui-auth-payments/template/tailwind.config.js +0 -77
- package/src/templates/web/ui-auth-payments/template/tsconfig.tsbuildinfo +0 -1
- package/src/templates/web/ui-auth-payments-ai/template/.claude +0 -21
- package/src/templates/web/ui-auth-payments-ai/template/context.md +0 -169
- package/src/templates/web/ui-auth-payments-ai/template/middleware.ts +0 -68
- package/src/templates/web/ui-auth-payments-ai/template/package-lock.json +0 -12241
- package/src/templates/web/ui-auth-payments-ai/template/postcss.config.js +0 -7
- package/src/templates/web/ui-auth-payments-ai/template/tailwind.config.js +0 -77
- package/src/templates/web/ui-auth-payments-ai/template/tsconfig.tsbuildinfo +0 -1
- package/src/templates/web/ui-auth-payments-audio/template/middleware.ts +0 -68
- package/src/templates/web/ui-auth-payments-audio/template/package-lock.json +0 -12241
- package/src/templates/web/ui-auth-payments-audio/template/postcss.config.js +0 -7
- package/src/templates/web/ui-auth-payments-audio/template/tailwind.config.js +0 -77
- package/src/templates/web/ui-auth-payments-audio/template/tsconfig.tsbuildinfo +0 -1
- package/src/templates/web/ui-auth-payments-video/template/postcss.config.js +0 -7
- package/src/templates/web/ui-auth-payments-video/template/tailwind.config.js +0 -77
- package/src/templates/web/ui-only/template/postcss.config.js +0 -7
- package/src/templates/web/ui-only/template/tailwind.config.js +0 -77
- /package/dist/templates/shared/admin/web/{components → src/components}/admin-nav.tsx +0 -0
- /package/dist/templates/shared/auth/keycloak/web/{auth.config.ts → src/auth.config.ts} +0 -0
- /package/dist/templates/shared/auth/keycloak/web/{auth.ts → src/auth.ts} +0 -0
- /package/dist/templates/shared/middleware/web/{middleware.ts → src/middleware.ts} +0 -0
- /package/src/templates/shared/admin/web/{components → src/components}/admin-nav.tsx +0 -0
- /package/src/templates/shared/auth/keycloak/web/{auth.config.ts → src/auth.config.ts} +0 -0
- /package/src/templates/shared/auth/keycloak/web/{auth.ts → src/auth.ts} +0 -0
- /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 {
|
|
4
|
-
import {
|
|
5
|
-
import { Bot, Sparkles,
|
|
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
|
|
13
|
-
|
|
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
|
|
19
|
-
|
|
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:
|
|
41
|
+
icon: Brain,
|
|
23
42
|
title: 'Custom Models',
|
|
24
|
-
description: 'Fine-tune and deploy your own
|
|
25
|
-
|
|
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
|
|
31
|
-
|
|
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
|
|
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
|
-
<
|
|
57
|
-
{/*
|
|
58
|
-
<header className="border-b border-
|
|
59
|
-
<div className="max-w-7xl
|
|
60
|
-
<div className="flex items-center justify-between">
|
|
61
|
-
<Link href="/" className="flex items-center gap-2">
|
|
62
|
-
<
|
|
63
|
-
|
|
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
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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
|
-
<
|
|
115
|
+
<main id="main-content">
|
|
113
116
|
{/* Hero */}
|
|
114
|
-
<
|
|
115
|
-
<div className="
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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
|
-
</
|
|
159
|
+
</section>
|
|
139
160
|
|
|
140
161
|
{/* Features */}
|
|
141
|
-
<
|
|
142
|
-
|
|
143
|
-
<
|
|
144
|
-
<
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
</
|
|
151
|
-
</
|
|
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
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
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
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
<
|
|
184
|
-
|
|
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
|
-
</
|
|
243
|
+
</section>
|
|
188
244
|
|
|
189
245
|
{/* CTA */}
|
|
190
|
-
<
|
|
191
|
-
<div className="
|
|
192
|
-
<
|
|
193
|
-
|
|
194
|
-
|
|
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
|
+
© {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
|
-
</
|
|
204
|
-
</
|
|
205
|
-
</
|
|
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
|
-
|
|
14
|
-
|
|
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 {
|
|
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
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|