@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,189 +1,266 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
|
|
3
|
-
import { Button, Card,
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import Link from 'next/link'
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
{
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
<
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
</
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
</
|
|
184
|
-
|
|
185
|
-
</
|
|
186
|
-
</
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import { Button, Card, CardContent } from '@digilogiclabs/saas-factory-ui'
|
|
4
|
+
import { Cpu, Activity, Signal, Bell, Shield, ArrowRight, Wifi, ThermometerSun, Gauge, Sun, Moon, Radio } from 'lucide-react'
|
|
5
|
+
import { useTheme } from 'next-themes'
|
|
6
|
+
import Link from 'next/link'
|
|
7
|
+
import { useEffect, useState } from 'react'
|
|
8
|
+
|
|
9
|
+
const DEVICE_TYPES = [
|
|
10
|
+
{
|
|
11
|
+
name: 'Temperature Sensors',
|
|
12
|
+
count: 24,
|
|
13
|
+
icon: ThermometerSun,
|
|
14
|
+
status: 'online' as const,
|
|
15
|
+
color: 'text-emerald-500',
|
|
16
|
+
bg: 'bg-emerald-500/10',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'Pressure Gauges',
|
|
20
|
+
count: 12,
|
|
21
|
+
icon: Gauge,
|
|
22
|
+
status: 'online' as const,
|
|
23
|
+
color: 'text-cyan-500',
|
|
24
|
+
bg: 'bg-cyan-500/10',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'Network Gateways',
|
|
28
|
+
count: 8,
|
|
29
|
+
icon: Wifi,
|
|
30
|
+
status: 'online' as const,
|
|
31
|
+
color: 'text-violet-500',
|
|
32
|
+
bg: 'bg-violet-500/10',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'Motion Sensors',
|
|
36
|
+
count: 18,
|
|
37
|
+
icon: Radio,
|
|
38
|
+
status: 'partial' as const,
|
|
39
|
+
color: 'text-amber-500',
|
|
40
|
+
bg: 'bg-amber-500/10',
|
|
41
|
+
},
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
const FEATURES = [
|
|
45
|
+
{
|
|
46
|
+
icon: Cpu,
|
|
47
|
+
title: 'Device Management',
|
|
48
|
+
description: 'Register, provision, and manage your entire device fleet from a single pane of glass.',
|
|
49
|
+
color: 'text-emerald-500 group-hover:text-emerald-400',
|
|
50
|
+
bg: 'bg-emerald-500/10 group-hover:bg-emerald-500/20',
|
|
51
|
+
border: 'group-hover:border-emerald-500/30',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
icon: Activity,
|
|
55
|
+
title: 'Real-time Telemetry',
|
|
56
|
+
description: 'Live data streams with historical analysis, trend detection, and customizable dashboards.',
|
|
57
|
+
color: 'text-cyan-500 group-hover:text-cyan-400',
|
|
58
|
+
bg: 'bg-cyan-500/10 group-hover:bg-cyan-500/20',
|
|
59
|
+
border: 'group-hover:border-cyan-500/30',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
icon: Bell,
|
|
63
|
+
title: 'Smart Alerts',
|
|
64
|
+
description: 'Configurable thresholds and anomaly detection with multi-channel notifications.',
|
|
65
|
+
color: 'text-amber-500 group-hover:text-amber-400',
|
|
66
|
+
bg: 'bg-amber-500/10 group-hover:bg-amber-500/20',
|
|
67
|
+
border: 'group-hover:border-amber-500/30',
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
icon: Shield,
|
|
71
|
+
title: 'Secure & Scalable',
|
|
72
|
+
description: 'End-to-end encryption, device authentication, and infrastructure that scales with your fleet.',
|
|
73
|
+
color: 'text-violet-500 group-hover:text-violet-400',
|
|
74
|
+
bg: 'bg-violet-500/10 group-hover:bg-violet-500/20',
|
|
75
|
+
border: 'group-hover:border-violet-500/30',
|
|
76
|
+
},
|
|
77
|
+
]
|
|
78
|
+
|
|
79
|
+
function ThemeToggle() {
|
|
80
|
+
const { theme, setTheme } = useTheme()
|
|
81
|
+
const [mounted, setMounted] = useState(false)
|
|
82
|
+
useEffect(() => setMounted(true), [])
|
|
83
|
+
if (!mounted) return <div className="w-9 h-9" />
|
|
84
|
+
return (
|
|
85
|
+
<button
|
|
86
|
+
onClick={() => setTheme(theme === 'dark' ? 'light' : 'dark')}
|
|
87
|
+
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"
|
|
88
|
+
aria-label="Toggle theme"
|
|
89
|
+
>
|
|
90
|
+
{theme === 'dark' ? <Sun className="w-4 h-4" /> : <Moon className="w-4 h-4" />}
|
|
91
|
+
</button>
|
|
92
|
+
)
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export default function Home() {
|
|
96
|
+
return (
|
|
97
|
+
<main id="main-content" className="min-h-screen bg-background text-foreground">
|
|
98
|
+
{/* Nav */}
|
|
99
|
+
<nav className="sticky top-0 z-50 border-b border-border bg-background/80 backdrop-blur-lg">
|
|
100
|
+
<div className="max-w-6xl mx-auto px-4 sm:px-6 h-16 flex items-center justify-between">
|
|
101
|
+
<Link href="/" className="flex items-center gap-2 hover:opacity-80 active:scale-[0.97] transition-all duration-200">
|
|
102
|
+
<div className="w-8 h-8 rounded-lg bg-gradient-to-br from-brand-from via-brand-via to-brand-to flex items-center justify-center">
|
|
103
|
+
<Cpu className="w-4 h-4 text-white" />
|
|
104
|
+
</div>
|
|
105
|
+
<span className="font-bold text-lg">{`{{titleCaseName}}`}</span>
|
|
106
|
+
</Link>
|
|
107
|
+
<div className="hidden md:flex items-center gap-6">
|
|
108
|
+
<Link href="/dashboard" className="text-sm text-muted-foreground hover:text-foreground transition-colors">
|
|
109
|
+
Devices
|
|
110
|
+
</Link>
|
|
111
|
+
<Link href="/dashboard" className="text-sm text-muted-foreground hover:text-foreground transition-colors">
|
|
112
|
+
Analytics
|
|
113
|
+
</Link>
|
|
114
|
+
<Link href="/dashboard" className="text-sm text-muted-foreground hover:text-foreground transition-colors">
|
|
115
|
+
Alerts
|
|
116
|
+
</Link>
|
|
117
|
+
</div>
|
|
118
|
+
<div className="flex items-center gap-2">
|
|
119
|
+
<ThemeToggle />
|
|
120
|
+
<Link href="/login">
|
|
121
|
+
<Button variant="ghost" size="sm" className="hover:bg-accent active:scale-95 transition-all duration-200 cursor-pointer">Sign In</Button>
|
|
122
|
+
</Link>
|
|
123
|
+
<Link href="/signup">
|
|
124
|
+
<Button size="sm" className="hover:brightness-110 active:scale-95 transition-all duration-200 cursor-pointer shadow-sm hover:shadow-md">Get Started</Button>
|
|
125
|
+
</Link>
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
</nav>
|
|
129
|
+
|
|
130
|
+
{/* Hero */}
|
|
131
|
+
<section className="relative overflow-hidden">
|
|
132
|
+
<div className="absolute inset-0 bg-gradient-to-b from-primary/5 to-transparent" />
|
|
133
|
+
<div className="relative max-w-6xl mx-auto px-4 sm:px-6 pt-16 sm:pt-24 pb-16 text-center">
|
|
134
|
+
<div className="inline-flex items-center gap-2 px-4 py-1.5 rounded-full border border-border bg-muted text-muted-foreground text-sm font-medium mb-8 hover:bg-accent hover:border-primary/20 transition-colors duration-200 cursor-default">
|
|
135
|
+
<Signal className="w-3.5 h-3.5 text-primary" />
|
|
136
|
+
IoT Management Platform
|
|
137
|
+
</div>
|
|
138
|
+
<h1 className="text-4xl sm:text-5xl lg:text-6xl font-extrabold tracking-tight mb-6">
|
|
139
|
+
Monitor Your
|
|
140
|
+
<br />
|
|
141
|
+
<span className="text-primary">Connected Devices</span>
|
|
142
|
+
</h1>
|
|
143
|
+
<p className="text-lg sm:text-xl text-muted-foreground max-w-2xl mx-auto mb-10 leading-relaxed">
|
|
144
|
+
Real-time monitoring, analytics, and control for your IoT infrastructure.
|
|
145
|
+
Built for scale, designed for simplicity.
|
|
146
|
+
</p>
|
|
147
|
+
<div className="flex flex-col sm:flex-row gap-3 justify-center">
|
|
148
|
+
<Link href="/dashboard">
|
|
149
|
+
<Button size="lg" className="w-full sm:w-auto text-base px-8 h-12 hover:brightness-110 active:scale-[0.97] transition-all duration-200 cursor-pointer shadow-md hover:shadow-lg">
|
|
150
|
+
<Activity className="w-4 h-4 mr-2" />
|
|
151
|
+
View Dashboard
|
|
152
|
+
</Button>
|
|
153
|
+
</Link>
|
|
154
|
+
<Link href="/dashboard">
|
|
155
|
+
<Button variant="outline" size="lg" className="w-full sm:w-auto text-base px-8 h-12 hover:bg-accent hover:border-primary/30 active:scale-[0.97] transition-all duration-200 cursor-pointer">
|
|
156
|
+
Manage Devices
|
|
157
|
+
</Button>
|
|
158
|
+
</Link>
|
|
159
|
+
</div>
|
|
160
|
+
</div>
|
|
161
|
+
</section>
|
|
162
|
+
|
|
163
|
+
{/* Device Overview */}
|
|
164
|
+
<section className="max-w-6xl mx-auto px-4 sm:px-6 pb-16 sm:pb-24">
|
|
165
|
+
<div className="grid grid-cols-2 lg:grid-cols-4 gap-4">
|
|
166
|
+
{DEVICE_TYPES.map((device) => (
|
|
167
|
+
<Card key={device.name} className="group cursor-default hover:shadow-lg hover:-translate-y-0.5 transition-all duration-300">
|
|
168
|
+
<CardContent className="p-5 sm:p-6">
|
|
169
|
+
<div className="flex items-center justify-between mb-4">
|
|
170
|
+
<div className={`w-10 h-10 ${device.bg} rounded-xl flex items-center justify-center transition-colors duration-300`}>
|
|
171
|
+
<device.icon className={`w-5 h-5 ${device.color} transition-colors duration-300`} />
|
|
172
|
+
</div>
|
|
173
|
+
<div className="flex items-center gap-1.5">
|
|
174
|
+
<span className={`w-2 h-2 rounded-full ${device.status === 'online' ? 'bg-emerald-500' : 'bg-amber-500'}`} />
|
|
175
|
+
<span className="text-xs text-muted-foreground">
|
|
176
|
+
{device.status === 'online' ? 'All Online' : 'Partial'}
|
|
177
|
+
</span>
|
|
178
|
+
</div>
|
|
179
|
+
</div>
|
|
180
|
+
<h3 className="text-sm font-medium text-muted-foreground mb-1">{device.name}</h3>
|
|
181
|
+
<p className="text-3xl font-bold text-primary">{device.count}</p>
|
|
182
|
+
</CardContent>
|
|
183
|
+
</Card>
|
|
184
|
+
))}
|
|
185
|
+
</div>
|
|
186
|
+
</section>
|
|
187
|
+
|
|
188
|
+
{/* Features */}
|
|
189
|
+
<section className="bg-muted/50">
|
|
190
|
+
<div className="max-w-6xl mx-auto px-4 sm:px-6 py-16 sm:py-24">
|
|
191
|
+
<div className="text-center mb-12 sm:mb-16">
|
|
192
|
+
<h2 className="text-3xl sm:text-4xl font-bold mb-4">Everything You Need</h2>
|
|
193
|
+
<p className="text-muted-foreground text-lg max-w-xl mx-auto">
|
|
194
|
+
A complete toolkit for managing your connected device infrastructure.
|
|
195
|
+
</p>
|
|
196
|
+
</div>
|
|
197
|
+
<div className="grid sm:grid-cols-2 lg:grid-cols-4 gap-6">
|
|
198
|
+
{FEATURES.map((feature) => (
|
|
199
|
+
<Card key={feature.title} className={`group cursor-default hover:shadow-xl hover:-translate-y-1 ${feature.border} transition-all duration-300`}>
|
|
200
|
+
<CardContent className="p-6 sm:p-8">
|
|
201
|
+
<div className={`w-12 h-12 ${feature.bg} rounded-xl flex items-center justify-center mb-5 transition-colors duration-300`}>
|
|
202
|
+
<feature.icon className={`w-6 h-6 ${feature.color} transition-colors duration-300`} />
|
|
203
|
+
</div>
|
|
204
|
+
<h3 className="text-lg font-semibold mb-3 group-hover:text-primary transition-colors duration-200">{feature.title}</h3>
|
|
205
|
+
<p className="text-muted-foreground text-sm leading-relaxed">
|
|
206
|
+
{feature.description}
|
|
207
|
+
</p>
|
|
208
|
+
</CardContent>
|
|
209
|
+
</Card>
|
|
210
|
+
))}
|
|
211
|
+
</div>
|
|
212
|
+
</div>
|
|
213
|
+
</section>
|
|
214
|
+
|
|
215
|
+
{/* CTA */}
|
|
216
|
+
<section className="max-w-6xl mx-auto px-4 sm:px-6 py-16 sm:py-24">
|
|
217
|
+
<div className="overflow-hidden rounded-2xl bg-gradient-to-br from-brand-from via-brand-via to-brand-to text-white p-8 sm:p-12 text-center hover:shadow-2xl hover:shadow-primary/20 transition-shadow duration-500">
|
|
218
|
+
<h2 className="text-3xl sm:text-4xl font-bold mb-4">Ready to Connect?</h2>
|
|
219
|
+
<p className="text-white/80 text-lg mb-8 max-w-lg mx-auto">
|
|
220
|
+
Start monitoring your IoT devices in minutes. Free tier available for up to 10 devices.
|
|
221
|
+
</p>
|
|
222
|
+
<Link href="/signup">
|
|
223
|
+
<Button variant="secondary" size="lg" className="px-8 h-12 text-base font-semibold hover:brightness-110 active:scale-[0.97] transition-all duration-200 cursor-pointer shadow-lg hover:shadow-xl">
|
|
224
|
+
Get Started Free
|
|
225
|
+
<ArrowRight className="w-4 h-4 ml-2" />
|
|
226
|
+
</Button>
|
|
227
|
+
</Link>
|
|
228
|
+
<p className="text-white/60 text-sm mt-4">No credit card required</p>
|
|
229
|
+
</div>
|
|
230
|
+
</section>
|
|
231
|
+
|
|
232
|
+
{/* Footer */}
|
|
233
|
+
<footer className="border-t border-border">
|
|
234
|
+
<div className="max-w-6xl mx-auto px-4 sm:px-6 py-8">
|
|
235
|
+
<div className="flex flex-col sm:flex-row items-center justify-between gap-6">
|
|
236
|
+
<Link href="/" className="flex items-center gap-2 hover:opacity-80 active:scale-[0.97] transition-all duration-200">
|
|
237
|
+
<div className="w-6 h-6 rounded bg-gradient-to-br from-brand-from via-brand-via to-brand-to flex items-center justify-center">
|
|
238
|
+
<Cpu className="w-3 h-3 text-white" />
|
|
239
|
+
</div>
|
|
240
|
+
<span className="text-sm font-medium">{`{{titleCaseName}}`}</span>
|
|
241
|
+
</Link>
|
|
242
|
+
<nav className="flex items-center gap-6">
|
|
243
|
+
<Link href="/dashboard" className="text-sm text-muted-foreground hover:text-foreground transition-colors">
|
|
244
|
+
Devices
|
|
245
|
+
</Link>
|
|
246
|
+
<Link href="/dashboard" className="text-sm text-muted-foreground hover:text-foreground transition-colors">
|
|
247
|
+
Analytics
|
|
248
|
+
</Link>
|
|
249
|
+
<Link href="/dashboard" className="text-sm text-muted-foreground hover:text-foreground transition-colors">
|
|
250
|
+
Alerts
|
|
251
|
+
</Link>
|
|
252
|
+
<Link href="/login" className="text-sm text-muted-foreground hover:text-foreground transition-colors">
|
|
253
|
+
Sign In
|
|
254
|
+
</Link>
|
|
255
|
+
</nav>
|
|
256
|
+
</div>
|
|
257
|
+
<div className="mt-6 pt-6 border-t border-border text-center">
|
|
258
|
+
<p className="text-xs text-muted-foreground">
|
|
259
|
+
Built with DLL Platform. Ship fast, own everything.
|
|
260
|
+
</p>
|
|
261
|
+
</div>
|
|
262
|
+
</div>
|
|
263
|
+
</footer>
|
|
264
|
+
</main>
|
|
265
|
+
)
|
|
266
|
+
}
|
|
@@ -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,14 +1,14 @@
|
|
|
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
|
|
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
|
|
@@ -8,40 +8,33 @@
|
|
|
8
8
|
"build": "next build",
|
|
9
9
|
"start": "next start",
|
|
10
10
|
"lint": "next lint",
|
|
11
|
-
"type-check": "tsc --noEmit"
|
|
12
|
-
"test": "vitest",
|
|
13
|
-
"test:run": "vitest run"
|
|
11
|
+
"type-check": "tsc --noEmit"
|
|
14
12
|
},
|
|
15
13
|
"dependencies": {
|
|
16
|
-
"next": "^15.
|
|
14
|
+
"next": "^15.5.0",
|
|
17
15
|
"react": "^19.0.0",
|
|
18
16
|
"react-dom": "^19.0.0",
|
|
19
|
-
"@digilogiclabs/platform-core": "^1.
|
|
20
|
-
"@digilogiclabs/app-sdk": "^1.
|
|
21
|
-
"@digilogiclabs/saas-factory-ui": "^1.
|
|
22
|
-
"
|
|
23
|
-
"@
|
|
24
|
-
"
|
|
25
|
-
"tailwindcss": "^4.0.0",
|
|
26
|
-
"clsx": "^2.0.0",
|
|
17
|
+
"@digilogiclabs/platform-core": "^1.14.0",
|
|
18
|
+
"@digilogiclabs/app-sdk": "^1.1.0",
|
|
19
|
+
"@digilogiclabs/saas-factory-ui": "^1.8.1",
|
|
20
|
+
"tailwindcss": "^4.1.0",
|
|
21
|
+
"@tailwindcss/postcss": "^4.1.0",
|
|
22
|
+
"clsx": "^2.1.0",
|
|
27
23
|
"class-variance-authority": "^0.7.0",
|
|
28
|
-
"tailwind-merge": "^2.
|
|
24
|
+
"tailwind-merge": "^2.6.0",
|
|
29
25
|
"next-themes": "^0.4.0",
|
|
30
26
|
"lucide-react": "^0.460.0",
|
|
31
27
|
"zod": "^4.1.0",
|
|
32
28
|
"zustand": "^4.5.0"
|
|
33
29
|
},
|
|
34
30
|
"devDependencies": {
|
|
35
|
-
"typescript": "^5.
|
|
31
|
+
"typescript": "^5.8.0",
|
|
36
32
|
"@types/node": "^22.0.0",
|
|
37
33
|
"@types/react": "^19.0.0",
|
|
38
34
|
"@types/react-dom": "^19.0.0",
|
|
39
35
|
"eslint": "^9.0.0",
|
|
40
36
|
"eslint-config-next": "^15.0.0",
|
|
41
|
-
"prettier": "^3.4.0"
|
|
42
|
-
"vitest": "^2.1.0",
|
|
43
|
-
"@testing-library/react": "^16.0.0",
|
|
44
|
-
"@testing-library/jest-dom": "^6.6.0"
|
|
37
|
+
"prettier": "^3.4.0"
|
|
45
38
|
},
|
|
46
39
|
"engines": {
|
|
47
40
|
"node": ">=20.0.0"
|