@digilogiclabs/create-saas-app 2.11.0 → 2.12.1
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/CHANGELOG.md +12 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/generators/template-generator.d.ts +0 -2
- package/dist/generators/template-generator.d.ts.map +1 -1
- package/dist/generators/template-generator.js +18 -17
- package/dist/generators/template-generator.js.map +1 -1
- package/dist/templates/mobile/base/template/App.tsx +7 -4
- package/dist/templates/mobile/base/template/app/checkout.tsx +5 -2
- package/dist/templates/mobile/ui-auth-payments/template/app/(tabs)/_layout.tsx +6 -2
- package/dist/templates/mobile/ui-auth-payments/template/app/(tabs)/billing.tsx +7 -3
- package/dist/templates/mobile/ui-auth-payments/template/app/(tabs)/index.tsx +5 -2
- package/dist/templates/mobile/ui-auth-payments/template/app/(tabs)/profile.tsx +7 -2
- package/dist/templates/mobile/ui-auth-payments/template/app/_layout.tsx +2 -4
- package/dist/templates/mobile/ui-auth-payments/template/app/auth/login.tsx +6 -3
- package/dist/templates/mobile/ui-auth-payments/template/app/auth/signup.tsx +6 -3
- package/dist/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/_layout.tsx +6 -2
- package/dist/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/billing.tsx +7 -3
- package/dist/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/index.tsx +5 -2
- package/dist/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/profile.tsx +7 -2
- package/dist/templates/mobile/ui-auth-payments-ai/template/app/_layout.tsx +2 -4
- package/dist/templates/mobile/ui-auth-payments-ai/template/app/auth/login.tsx +6 -3
- package/dist/templates/mobile/ui-auth-payments-ai/template/app/auth/signup.tsx +6 -3
- package/dist/templates/shared/admin/web/src/components/admin-nav.tsx +3 -3
- package/dist/templates/shared/auth/supabase/web/src/lib/auth-session.ts +36 -16
- package/dist/templates/shared/auth/supabase/web/src/middleware.ts +6 -0
- package/dist/templates/shared/config/web/next.config.mjs +0 -1
- package/dist/templates/shared/cookie-consent/web/components/cookie-consent.tsx +5 -5
- package/dist/templates/shared/design/web/src/components/ui/button.tsx +56 -0
- package/dist/templates/shared/email/web/src/lib/email/client.ts +1 -1
- package/dist/templates/shared/error-pages/web/src/app/error.tsx +13 -11
- package/dist/templates/shared/error-pages/web/src/app/global-error.tsx +2 -0
- package/dist/templates/shared/error-pages/web/src/app/not-found.tsx +6 -6
- package/dist/templates/shared/legal/web/src/app/(legal)/privacy/page.tsx +4 -4
- package/dist/templates/shared/legal/web/src/app/(legal)/terms/page.tsx +4 -4
- package/dist/templates/shared/loading/web/components/skeleton.tsx +4 -4
- package/dist/templates/shared/mock/web/.env.local +55 -0
- package/dist/templates/shared/mock/web/src/components/mock-auth-provider.tsx +72 -0
- package/dist/templates/shared/mock/web/src/components/mock-banner.tsx +29 -0
- package/dist/templates/shared/mock/web/src/lib/mock.ts +147 -0
- package/dist/templates/shared/payments/web/src/app/api/webhooks/stripe/route.ts +10 -4
- package/dist/templates/shared/redis/web/src/lib/redis.ts +1 -1
- package/dist/templates/web/ai-platform/template/package.json +0 -1
- package/dist/templates/web/ai-platform/template/src/app/chat/page.tsx +5 -2
- package/dist/templates/web/ai-platform/template/src/app/playground/page.tsx +5 -2
- package/dist/templates/web/ai-platform/template/src/components/providers/app-providers.tsx +2 -5
- package/dist/templates/web/base/template/eslint.config.mjs +14 -0
- package/dist/templates/web/base/template/src/app/auth/callback/route.ts +1 -1
- package/dist/templates/web/base/template/src/app/checkout/page.tsx +76 -103
- package/dist/templates/web/base/template/src/app/dashboard/page.tsx +145 -329
- package/dist/templates/web/base/template/src/app/layout.tsx +40 -38
- package/dist/templates/web/base/template/src/app/login/page.tsx +116 -66
- package/dist/templates/web/base/template/src/app/page.tsx +97 -193
- package/dist/templates/web/base/template/src/app/settings/page.tsx +154 -0
- package/dist/templates/web/base/template/src/app/signup/page.tsx +117 -66
- package/dist/templates/web/base/template/src/components/providers/app-providers.tsx +8 -3
- package/dist/templates/web/base/template/src/components/shared/header.tsx +229 -63
- package/dist/templates/web/iot-dashboard/template/package.json +0 -1
- package/dist/templates/web/iot-dashboard/template/src/components/providers/app-providers.tsx +2 -5
- package/dist/templates/web/marketplace/template/package.json +0 -1
- package/dist/templates/web/marketplace/template/src/components/providers/app-providers.tsx +2 -5
- package/dist/templates/web/micro-saas/template/package.json +0 -1
- package/dist/templates/web/micro-saas/template/src/components/providers/app-providers.tsx +2 -5
- package/dist/templates/web/ui-auth/template/eslint.config.mjs +14 -0
- package/dist/templates/web/ui-auth/template/src/app/checkout/page.tsx +3 -3
- package/dist/templates/web/ui-auth/template/src/app/dev-setup/page.tsx +81 -91
- package/dist/templates/web/ui-auth/template/src/app/layout.tsx +38 -36
- package/dist/templates/web/ui-auth/template/src/app/login/page.tsx +22 -45
- package/dist/templates/web/ui-auth/template/src/app/page.tsx +106 -306
- package/dist/templates/web/ui-auth/template/src/app/setup/page.tsx +387 -402
- package/dist/templates/web/ui-auth/template/src/app/signup/page.tsx +24 -47
- package/dist/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +8 -3
- package/dist/templates/web/ui-auth/template/src/components/shared/header.tsx +229 -94
- package/dist/templates/web/ui-auth-ai/template/src/app/layout.tsx +38 -45
- package/dist/templates/web/ui-auth-ai/template/src/app/login/page.tsx +86 -0
- package/dist/templates/web/ui-auth-ai/template/src/app/page.tsx +107 -193
- package/dist/templates/web/ui-auth-ai/template/src/app/signup/page.tsx +105 -0
- package/dist/templates/web/ui-auth-ai/template/src/components/ai/audio-generator.tsx +144 -140
- package/dist/templates/web/ui-auth-ai/template/src/components/ai/video-generator.tsx +156 -157
- package/dist/templates/web/ui-auth-ai/template/src/components/auth/login-form.tsx +7 -3
- package/dist/templates/web/ui-auth-ai/template/src/components/providers/app-providers.tsx +25 -0
- package/dist/templates/web/ui-auth-ai/template/src/components/shared/footer.tsx +36 -0
- package/dist/templates/web/ui-auth-ai/template/src/components/shared/header.tsx +228 -0
- package/dist/templates/web/ui-auth-ai/template/src/components/ui/button.tsx +5 -5
- package/dist/templates/web/ui-auth-ai/template/src/components/ui/input.tsx +1 -1
- package/dist/templates/web/ui-auth-ai/template/src/components/ui/select.tsx +1 -1
- package/dist/templates/web/ui-auth-ai/template/src/components/ui/textarea.tsx +1 -1
- package/dist/templates/web/ui-auth-ai/template/src/components/ui/theme-toggle.tsx +34 -0
- package/dist/templates/web/ui-auth-ai/template/src/lib/supabase.ts +6 -4
- package/dist/templates/web/ui-auth-ai/template/src/providers/auth-provider.tsx +7 -5
- package/dist/templates/web/ui-auth-payments/template/src/app/billing/page.tsx +63 -192
- package/dist/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +104 -296
- package/dist/templates/web/ui-auth-payments/template/src/app/dashboard/page.tsx +27 -27
- package/dist/templates/web/ui-auth-payments/template/src/app/dev-setup/page.tsx +70 -81
- package/dist/templates/web/ui-auth-payments/template/src/app/layout.tsx +38 -36
- package/dist/templates/web/ui-auth-payments/template/src/app/login/loading.tsx +9 -9
- package/dist/templates/web/ui-auth-payments/template/src/app/login/page.tsx +4 -104
- package/dist/templates/web/ui-auth-payments/template/src/app/page.tsx +69 -337
- package/dist/templates/web/ui-auth-payments/template/src/app/setup/page.tsx +55 -68
- package/dist/templates/web/ui-auth-payments/template/src/app/signup/loading.tsx +13 -13
- package/dist/templates/web/ui-auth-payments/template/src/app/signup/page.tsx +4 -123
- package/dist/templates/web/ui-auth-payments/template/src/components/client/auth-status.tsx +37 -52
- package/dist/templates/web/ui-auth-payments/template/src/components/client/login-form.tsx +49 -103
- package/dist/templates/web/ui-auth-payments/template/src/components/client/newsletter-signup.tsx +4 -4
- package/dist/templates/web/ui-auth-payments/template/src/components/client/signup-form.tsx +60 -140
- package/dist/templates/web/ui-auth-payments/template/src/components/providers/app-providers.tsx +25 -28
- package/dist/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +229 -230
- package/dist/templates/web/ui-auth-payments/template/src/lib/actions/auth.ts +245 -245
- package/dist/templates/web/ui-auth-payments/template/src/lib/actions/index.ts +339 -339
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/ai/page.tsx +305 -309
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/billing/page.tsx +62 -312
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/checkout/page.tsx +109 -125
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/dashboard/page.tsx +27 -27
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/dev-setup/page.tsx +68 -83
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/layout.tsx +40 -38
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/onboarding/page.tsx +20 -20
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/page.tsx +140 -394
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/settings/page.tsx +28 -27
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/setup/page.tsx +51 -66
- package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/auth-status.tsx +37 -52
- package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/login-form.tsx +50 -79
- package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/signup-form.tsx +58 -111
- package/dist/templates/web/ui-auth-payments-ai/template/src/components/providers/app-providers.tsx +8 -3
- package/dist/templates/web/ui-auth-payments-ai/template/src/components/shared/header.tsx +229 -252
- package/dist/templates/web/ui-auth-payments-ai/template/src/lib/actions/auth.ts +245 -245
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/billing/page.tsx +63 -192
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/checkout/page.tsx +109 -125
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/dashboard/page.tsx +27 -27
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +40 -38
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +122 -385
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/setup/page.tsx +340 -344
- package/dist/templates/web/ui-auth-payments-audio/template/src/components/client/auth-status.tsx +37 -52
- package/dist/templates/web/ui-auth-payments-audio/template/src/components/client/login-form.tsx +49 -103
- package/dist/templates/web/ui-auth-payments-audio/template/src/components/client/signup-form.tsx +60 -140
- package/dist/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +8 -3
- package/dist/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +229 -252
- package/dist/templates/web/ui-auth-payments-audio/template/src/lib/actions/auth.ts +3 -3
- package/dist/templates/web/ui-auth-payments-video/template/src/app/billing/page.tsx +63 -192
- package/dist/templates/web/ui-auth-payments-video/template/src/app/checkout/page.tsx +109 -125
- package/dist/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +38 -36
- package/dist/templates/web/ui-auth-payments-video/template/src/app/login/page.tsx +9 -109
- package/dist/templates/web/ui-auth-payments-video/template/src/app/page.tsx +132 -392
- package/dist/templates/web/ui-auth-payments-video/template/src/app/setup/page.tsx +346 -350
- package/dist/templates/web/ui-auth-payments-video/template/src/app/signup/page.tsx +9 -128
- package/dist/templates/web/ui-auth-payments-video/template/src/components/client/login-form.tsx +90 -0
- package/dist/templates/web/ui-auth-payments-video/template/src/components/client/signup-form.tsx +105 -0
- package/dist/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +8 -3
- package/dist/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +229 -246
- package/dist/templates/web/ui-only/template/eslint.config.mjs +14 -0
- package/dist/templates/web/ui-only/template/src/app/checkout/page.tsx +2 -2
- package/dist/templates/web/ui-only/template/src/app/login/page.tsx +69 -63
- package/dist/templates/web/ui-only/template/src/app/page.tsx +69 -91
- package/dist/templates/web/ui-only/template/src/app/signup/page.tsx +94 -79
- package/dist/templates/web/ui-only/template/src/components/providers/app-providers.tsx +1 -6
- package/dist/templates/web/ui-only/template/src/components/shared/header.tsx +90 -53
- package/dist/templates/web/ui-package-test/template/package.json +19 -23
- package/dist/templates/web/ui-package-test/template/postcss.config.mjs +8 -0
- package/dist/templates/web/ui-package-test/template/src/app/globals.css +88 -0
- package/dist/templates/web/ui-package-test/template/src/app/layout.tsx +27 -0
- package/dist/templates/web/ui-package-test/template/src/app/page.tsx +46 -106
- package/package.json +1 -1
- package/src/templates/mobile/base/template/App.tsx +7 -4
- package/src/templates/mobile/base/template/app/checkout.tsx +5 -2
- package/src/templates/mobile/ui-auth-payments/template/app/(tabs)/_layout.tsx +6 -2
- package/src/templates/mobile/ui-auth-payments/template/app/(tabs)/billing.tsx +7 -3
- package/src/templates/mobile/ui-auth-payments/template/app/(tabs)/index.tsx +5 -2
- package/src/templates/mobile/ui-auth-payments/template/app/(tabs)/profile.tsx +7 -2
- package/src/templates/mobile/ui-auth-payments/template/app/_layout.tsx +2 -4
- package/src/templates/mobile/ui-auth-payments/template/app/auth/login.tsx +6 -3
- package/src/templates/mobile/ui-auth-payments/template/app/auth/signup.tsx +6 -3
- package/src/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/_layout.tsx +6 -2
- package/src/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/billing.tsx +7 -3
- package/src/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/index.tsx +5 -2
- package/src/templates/mobile/ui-auth-payments-ai/template/app/(tabs)/profile.tsx +7 -2
- package/src/templates/mobile/ui-auth-payments-ai/template/app/_layout.tsx +2 -4
- package/src/templates/mobile/ui-auth-payments-ai/template/app/auth/login.tsx +6 -3
- package/src/templates/mobile/ui-auth-payments-ai/template/app/auth/signup.tsx +6 -3
- package/src/templates/shared/admin/web/src/components/admin-nav.tsx +3 -3
- package/src/templates/shared/auth/supabase/web/src/lib/auth-session.ts +36 -16
- package/src/templates/shared/auth/supabase/web/src/middleware.ts +6 -0
- package/src/templates/shared/config/web/next.config.mjs +0 -1
- package/src/templates/shared/cookie-consent/web/components/cookie-consent.tsx +5 -5
- package/src/templates/shared/design/web/src/components/ui/button.tsx +56 -0
- package/src/templates/shared/email/web/src/lib/email/client.ts +1 -1
- package/src/templates/shared/error-pages/web/src/app/error.tsx +13 -11
- package/src/templates/shared/error-pages/web/src/app/global-error.tsx +2 -0
- package/src/templates/shared/error-pages/web/src/app/not-found.tsx +6 -6
- package/src/templates/shared/legal/web/src/app/(legal)/privacy/page.tsx +4 -4
- package/src/templates/shared/legal/web/src/app/(legal)/terms/page.tsx +4 -4
- package/src/templates/shared/loading/web/components/skeleton.tsx +4 -4
- package/src/templates/shared/mock/web/.env.local +55 -0
- package/src/templates/shared/mock/web/src/components/mock-auth-provider.tsx +72 -0
- package/src/templates/shared/mock/web/src/components/mock-banner.tsx +29 -0
- package/src/templates/shared/mock/web/src/lib/mock.ts +147 -0
- package/src/templates/shared/payments/web/src/app/api/webhooks/stripe/route.ts +10 -4
- package/src/templates/shared/redis/web/src/lib/redis.ts +1 -1
- package/src/templates/web/ai-platform/template/package.json +0 -1
- package/src/templates/web/ai-platform/template/src/app/chat/page.tsx +5 -2
- package/src/templates/web/ai-platform/template/src/app/playground/page.tsx +5 -2
- package/src/templates/web/ai-platform/template/src/components/providers/app-providers.tsx +2 -5
- package/src/templates/web/base/template/eslint.config.mjs +14 -0
- package/src/templates/web/base/template/src/app/auth/callback/route.ts +1 -1
- package/src/templates/web/base/template/src/app/checkout/page.tsx +76 -103
- package/src/templates/web/base/template/src/app/dashboard/page.tsx +145 -329
- package/src/templates/web/base/template/src/app/layout.tsx +40 -38
- package/src/templates/web/base/template/src/app/login/page.tsx +116 -66
- package/src/templates/web/base/template/src/app/page.tsx +97 -193
- package/src/templates/web/base/template/src/app/settings/page.tsx +154 -0
- package/src/templates/web/base/template/src/app/signup/page.tsx +117 -66
- package/src/templates/web/base/template/src/components/providers/app-providers.tsx +8 -3
- package/src/templates/web/base/template/src/components/shared/header.tsx +229 -63
- package/src/templates/web/iot-dashboard/template/package.json +0 -1
- package/src/templates/web/iot-dashboard/template/src/components/providers/app-providers.tsx +2 -5
- package/src/templates/web/marketplace/template/package.json +0 -1
- package/src/templates/web/marketplace/template/src/components/providers/app-providers.tsx +2 -5
- package/src/templates/web/micro-saas/template/package.json +0 -1
- package/src/templates/web/micro-saas/template/src/components/providers/app-providers.tsx +2 -5
- package/src/templates/web/ui-auth/template/eslint.config.mjs +14 -0
- package/src/templates/web/ui-auth/template/src/app/checkout/page.tsx +3 -3
- package/src/templates/web/ui-auth/template/src/app/dev-setup/page.tsx +81 -91
- package/src/templates/web/ui-auth/template/src/app/layout.tsx +38 -36
- package/src/templates/web/ui-auth/template/src/app/login/page.tsx +22 -45
- package/src/templates/web/ui-auth/template/src/app/page.tsx +106 -306
- package/src/templates/web/ui-auth/template/src/app/setup/page.tsx +387 -402
- package/src/templates/web/ui-auth/template/src/app/signup/page.tsx +24 -47
- package/src/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +8 -3
- package/src/templates/web/ui-auth/template/src/components/shared/header.tsx +229 -94
- package/src/templates/web/ui-auth-ai/template/src/app/layout.tsx +38 -45
- package/src/templates/web/ui-auth-ai/template/src/app/login/page.tsx +86 -0
- package/src/templates/web/ui-auth-ai/template/src/app/page.tsx +107 -193
- package/src/templates/web/ui-auth-ai/template/src/app/signup/page.tsx +105 -0
- package/src/templates/web/ui-auth-ai/template/src/components/ai/audio-generator.tsx +144 -140
- package/src/templates/web/ui-auth-ai/template/src/components/ai/video-generator.tsx +156 -157
- package/src/templates/web/ui-auth-ai/template/src/components/auth/login-form.tsx +7 -3
- package/src/templates/web/ui-auth-ai/template/src/components/providers/app-providers.tsx +25 -0
- package/src/templates/web/ui-auth-ai/template/src/components/shared/footer.tsx +36 -0
- package/src/templates/web/ui-auth-ai/template/src/components/shared/header.tsx +228 -0
- package/src/templates/web/ui-auth-ai/template/src/components/ui/button.tsx +5 -5
- package/src/templates/web/ui-auth-ai/template/src/components/ui/input.tsx +1 -1
- package/src/templates/web/ui-auth-ai/template/src/components/ui/select.tsx +1 -1
- package/src/templates/web/ui-auth-ai/template/src/components/ui/textarea.tsx +1 -1
- package/src/templates/web/ui-auth-ai/template/src/components/ui/theme-toggle.tsx +34 -0
- package/src/templates/web/ui-auth-ai/template/src/lib/supabase.ts +6 -4
- package/src/templates/web/ui-auth-ai/template/src/providers/auth-provider.tsx +7 -5
- package/src/templates/web/ui-auth-payments/template/src/app/billing/page.tsx +63 -192
- package/src/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +104 -296
- package/src/templates/web/ui-auth-payments/template/src/app/dashboard/page.tsx +27 -27
- package/src/templates/web/ui-auth-payments/template/src/app/dev-setup/page.tsx +70 -81
- package/src/templates/web/ui-auth-payments/template/src/app/layout.tsx +38 -36
- package/src/templates/web/ui-auth-payments/template/src/app/login/loading.tsx +9 -9
- package/src/templates/web/ui-auth-payments/template/src/app/login/page.tsx +4 -104
- package/src/templates/web/ui-auth-payments/template/src/app/page.tsx +69 -337
- package/src/templates/web/ui-auth-payments/template/src/app/setup/page.tsx +55 -68
- package/src/templates/web/ui-auth-payments/template/src/app/signup/loading.tsx +13 -13
- package/src/templates/web/ui-auth-payments/template/src/app/signup/page.tsx +4 -123
- package/src/templates/web/ui-auth-payments/template/src/components/client/auth-status.tsx +37 -52
- package/src/templates/web/ui-auth-payments/template/src/components/client/login-form.tsx +49 -103
- package/src/templates/web/ui-auth-payments/template/src/components/client/newsletter-signup.tsx +4 -4
- package/src/templates/web/ui-auth-payments/template/src/components/client/signup-form.tsx +60 -140
- package/src/templates/web/ui-auth-payments/template/src/components/providers/app-providers.tsx +25 -28
- package/src/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +229 -230
- package/src/templates/web/ui-auth-payments/template/src/lib/actions/auth.ts +245 -245
- package/src/templates/web/ui-auth-payments/template/src/lib/actions/index.ts +339 -339
- package/src/templates/web/ui-auth-payments-ai/template/src/app/ai/page.tsx +305 -309
- package/src/templates/web/ui-auth-payments-ai/template/src/app/billing/page.tsx +62 -312
- package/src/templates/web/ui-auth-payments-ai/template/src/app/checkout/page.tsx +109 -125
- package/src/templates/web/ui-auth-payments-ai/template/src/app/dashboard/page.tsx +27 -27
- package/src/templates/web/ui-auth-payments-ai/template/src/app/dev-setup/page.tsx +68 -83
- package/src/templates/web/ui-auth-payments-ai/template/src/app/layout.tsx +40 -38
- package/src/templates/web/ui-auth-payments-ai/template/src/app/onboarding/page.tsx +20 -20
- package/src/templates/web/ui-auth-payments-ai/template/src/app/page.tsx +140 -394
- package/src/templates/web/ui-auth-payments-ai/template/src/app/settings/page.tsx +28 -27
- package/src/templates/web/ui-auth-payments-ai/template/src/app/setup/page.tsx +51 -66
- package/src/templates/web/ui-auth-payments-ai/template/src/components/client/auth-status.tsx +37 -52
- package/src/templates/web/ui-auth-payments-ai/template/src/components/client/login-form.tsx +50 -79
- package/src/templates/web/ui-auth-payments-ai/template/src/components/client/signup-form.tsx +58 -111
- package/src/templates/web/ui-auth-payments-ai/template/src/components/providers/app-providers.tsx +8 -3
- package/src/templates/web/ui-auth-payments-ai/template/src/components/shared/header.tsx +229 -252
- package/src/templates/web/ui-auth-payments-ai/template/src/lib/actions/auth.ts +245 -245
- package/src/templates/web/ui-auth-payments-audio/template/src/app/billing/page.tsx +63 -192
- package/src/templates/web/ui-auth-payments-audio/template/src/app/checkout/page.tsx +109 -125
- package/src/templates/web/ui-auth-payments-audio/template/src/app/dashboard/page.tsx +27 -27
- package/src/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +40 -38
- package/src/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +122 -385
- package/src/templates/web/ui-auth-payments-audio/template/src/app/setup/page.tsx +340 -344
- package/src/templates/web/ui-auth-payments-audio/template/src/components/client/auth-status.tsx +37 -52
- package/src/templates/web/ui-auth-payments-audio/template/src/components/client/login-form.tsx +49 -103
- package/src/templates/web/ui-auth-payments-audio/template/src/components/client/signup-form.tsx +60 -140
- package/src/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +8 -3
- package/src/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +229 -252
- package/src/templates/web/ui-auth-payments-audio/template/src/lib/actions/auth.ts +3 -3
- package/src/templates/web/ui-auth-payments-video/template/src/app/billing/page.tsx +63 -192
- package/src/templates/web/ui-auth-payments-video/template/src/app/checkout/page.tsx +109 -125
- package/src/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +38 -36
- package/src/templates/web/ui-auth-payments-video/template/src/app/login/page.tsx +9 -109
- package/src/templates/web/ui-auth-payments-video/template/src/app/page.tsx +132 -392
- package/src/templates/web/ui-auth-payments-video/template/src/app/setup/page.tsx +346 -350
- package/src/templates/web/ui-auth-payments-video/template/src/app/signup/page.tsx +9 -128
- package/src/templates/web/ui-auth-payments-video/template/src/components/client/login-form.tsx +90 -0
- package/src/templates/web/ui-auth-payments-video/template/src/components/client/signup-form.tsx +105 -0
- package/src/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +8 -3
- package/src/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +229 -246
- package/src/templates/web/ui-only/template/eslint.config.mjs +14 -0
- package/src/templates/web/ui-only/template/src/app/checkout/page.tsx +2 -2
- package/src/templates/web/ui-only/template/src/app/login/page.tsx +69 -63
- package/src/templates/web/ui-only/template/src/app/page.tsx +69 -91
- package/src/templates/web/ui-only/template/src/app/signup/page.tsx +94 -79
- package/src/templates/web/ui-only/template/src/components/providers/app-providers.tsx +1 -6
- package/src/templates/web/ui-only/template/src/components/shared/header.tsx +90 -53
- package/src/templates/web/ui-package-test/template/package.json +19 -23
- package/src/templates/web/ui-package-test/template/postcss.config.mjs +8 -0
- package/src/templates/web/ui-package-test/template/src/app/globals.css +88 -0
- package/src/templates/web/ui-package-test/template/src/app/layout.tsx +27 -0
- package/src/templates/web/ui-package-test/template/src/app/page.tsx +46 -106
- package/dist/templates/mobile/ui-auth-payments-ai-rag/template/README.md +0 -655
- package/dist/templates/mobile/ui-auth-payments-ai-rag/template/app/(tabs)/ai.tsx +0 -683
- package/dist/templates/mobile/ui-auth-payments-ai-rag/template/app/_layout.tsx +0 -124
- package/dist/templates/mobile/ui-auth-payments-ai-rag/template/app.json +0 -74
- package/dist/templates/mobile/ui-auth-payments-ai-rag/template/babel.config.js +0 -25
- package/dist/templates/mobile/ui-auth-payments-ai-rag/template/docs/MOBILE-SETUP.md +0 -787
- package/dist/templates/mobile/ui-auth-payments-ai-rag/template/eas.json +0 -25
- package/dist/templates/mobile/ui-auth-payments-ai-rag/template/expo-env.d.ts +0 -3
- package/dist/templates/mobile/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -346
- package/dist/templates/mobile/ui-auth-payments-ai-rag/template/jest-setup.ts +0 -37
- package/dist/templates/mobile/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -180
- package/dist/templates/mobile/ui-auth-payments-ai-rag/template/metro.config.js +0 -11
- package/dist/templates/mobile/ui-auth-payments-ai-rag/template/package.json +0 -122
- package/dist/templates/mobile/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -599
- package/dist/templates/mobile/ui-auth-payments-ai-rag/template/tsconfig.json +0 -32
- package/dist/templates/web/base/template/.eslintrc.js +0 -8
- package/dist/templates/web/base/template/src/components/__tests__/example.test.tsx +0 -49
- package/dist/templates/web/base/template/src/test/setup.ts +0 -74
- package/dist/templates/web/base/template/vitest.config.ts +0 -17
- package/dist/templates/web/ui-auth/template/.eslintrc.js +0 -8
- package/dist/templates/web/ui-auth/template/src/components/__tests__/example.test.tsx +0 -49
- package/dist/templates/web/ui-auth/template/src/test/setup.ts +0 -74
- package/dist/templates/web/ui-auth/template/vitest.config.ts +0 -17
- package/dist/templates/web/ui-auth-payments/template/src/components/__tests__/example.test.tsx +0 -49
- package/dist/templates/web/ui-auth-payments/template/src/test/setup.ts +0 -74
- package/dist/templates/web/ui-auth-payments/template/vitest.config.ts +0 -17
- package/dist/templates/web/ui-auth-payments-ai/template/src/components/__tests__/example.test.tsx +0 -49
- package/dist/templates/web/ui-auth-payments-ai/template/src/test/setup.ts +0 -74
- package/dist/templates/web/ui-auth-payments-ai/template/vitest.config.ts +0 -17
- package/dist/templates/web/ui-auth-payments-ai-rag/template/README.md +0 -434
- package/dist/templates/web/ui-auth-payments-ai-rag/template/components/rag/KnowledgeManager.tsx +0 -642
- package/dist/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGAnalytics.tsx +0 -466
- package/dist/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGChatInterface.tsx +0 -393
- package/dist/templates/web/ui-auth-payments-ai-rag/template/docs/GETTING-STARTED.md +0 -457
- package/dist/templates/web/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -478
- package/dist/templates/web/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -250
- package/dist/templates/web/ui-auth-payments-ai-rag/template/package.json +0 -73
- package/dist/templates/web/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -622
- package/dist/templates/web/ui-auth-payments-ai-rag/template/src/app/ai/page.tsx +0 -396
- package/dist/templates/web/ui-auth-payments-audio/template/src/components/__tests__/example.test.tsx +0 -49
- package/dist/templates/web/ui-auth-payments-audio/template/src/test/setup.ts +0 -74
- package/dist/templates/web/ui-auth-payments-audio/template/vitest.config.ts +0 -17
- package/dist/templates/web/ui-auth-payments-video/template/src/components/__tests__/example.test.tsx +0 -49
- package/dist/templates/web/ui-auth-payments-video/template/src/test/setup.ts +0 -74
- package/dist/templates/web/ui-auth-payments-video/template/vitest.config.ts +0 -17
- package/dist/templates/web/ui-only/template/.eslintrc.js +0 -8
- package/dist/templates/web/ui-only/template/src/components/__tests__/example.test.tsx +0 -49
- package/dist/templates/web/ui-only/template/src/test/setup.ts +0 -74
- package/dist/templates/web/ui-only/template/vitest.config.ts +0 -17
- package/src/templates/mobile/ui-auth-payments-ai-rag/template/README.md +0 -655
- package/src/templates/mobile/ui-auth-payments-ai-rag/template/app/(tabs)/ai.tsx +0 -683
- package/src/templates/mobile/ui-auth-payments-ai-rag/template/app/_layout.tsx +0 -124
- package/src/templates/mobile/ui-auth-payments-ai-rag/template/app.json +0 -74
- package/src/templates/mobile/ui-auth-payments-ai-rag/template/babel.config.js +0 -25
- package/src/templates/mobile/ui-auth-payments-ai-rag/template/docs/MOBILE-SETUP.md +0 -787
- package/src/templates/mobile/ui-auth-payments-ai-rag/template/eas.json +0 -25
- package/src/templates/mobile/ui-auth-payments-ai-rag/template/expo-env.d.ts +0 -3
- package/src/templates/mobile/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -346
- package/src/templates/mobile/ui-auth-payments-ai-rag/template/jest-setup.ts +0 -37
- package/src/templates/mobile/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -180
- package/src/templates/mobile/ui-auth-payments-ai-rag/template/metro.config.js +0 -11
- package/src/templates/mobile/ui-auth-payments-ai-rag/template/package.json +0 -122
- package/src/templates/mobile/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -599
- package/src/templates/mobile/ui-auth-payments-ai-rag/template/tsconfig.json +0 -32
- package/src/templates/web/base/template/.eslintrc.js +0 -8
- package/src/templates/web/base/template/src/components/__tests__/example.test.tsx +0 -49
- package/src/templates/web/base/template/src/test/setup.ts +0 -74
- package/src/templates/web/base/template/vitest.config.ts +0 -17
- package/src/templates/web/ui-auth/template/.eslintrc.js +0 -8
- package/src/templates/web/ui-auth/template/src/components/__tests__/example.test.tsx +0 -49
- package/src/templates/web/ui-auth/template/src/test/setup.ts +0 -74
- package/src/templates/web/ui-auth/template/vitest.config.ts +0 -17
- package/src/templates/web/ui-auth-payments/template/src/components/__tests__/example.test.tsx +0 -49
- package/src/templates/web/ui-auth-payments/template/src/test/setup.ts +0 -74
- package/src/templates/web/ui-auth-payments/template/vitest.config.ts +0 -17
- package/src/templates/web/ui-auth-payments-ai/template/src/components/__tests__/example.test.tsx +0 -49
- package/src/templates/web/ui-auth-payments-ai/template/src/test/setup.ts +0 -74
- package/src/templates/web/ui-auth-payments-ai/template/vitest.config.ts +0 -17
- package/src/templates/web/ui-auth-payments-ai-rag/template/README.md +0 -434
- package/src/templates/web/ui-auth-payments-ai-rag/template/components/rag/KnowledgeManager.tsx +0 -642
- package/src/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGAnalytics.tsx +0 -466
- package/src/templates/web/ui-auth-payments-ai-rag/template/components/rag/RAGChatInterface.tsx +0 -393
- package/src/templates/web/ui-auth-payments-ai-rag/template/docs/GETTING-STARTED.md +0 -457
- package/src/templates/web/ui-auth-payments-ai-rag/template/hooks/useRAGSystem.ts +0 -478
- package/src/templates/web/ui-auth-payments-ai-rag/template/lib/rag/config.ts +0 -250
- package/src/templates/web/ui-auth-payments-ai-rag/template/package.json +0 -73
- package/src/templates/web/ui-auth-payments-ai-rag/template/scripts/setup-rag.js +0 -622
- package/src/templates/web/ui-auth-payments-ai-rag/template/src/app/ai/page.tsx +0 -396
- package/src/templates/web/ui-auth-payments-audio/template/src/components/__tests__/example.test.tsx +0 -49
- package/src/templates/web/ui-auth-payments-audio/template/src/test/setup.ts +0 -74
- package/src/templates/web/ui-auth-payments-audio/template/vitest.config.ts +0 -17
- package/src/templates/web/ui-auth-payments-video/template/src/components/__tests__/example.test.tsx +0 -49
- package/src/templates/web/ui-auth-payments-video/template/src/test/setup.ts +0 -74
- package/src/templates/web/ui-auth-payments-video/template/vitest.config.ts +0 -17
- package/src/templates/web/ui-only/template/.eslintrc.js +0 -8
- package/src/templates/web/ui-only/template/src/components/__tests__/example.test.tsx +0 -49
- package/src/templates/web/ui-only/template/src/test/setup.ts +0 -74
- package/src/templates/web/ui-only/template/vitest.config.ts +0 -17
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
Card,
|
|
5
|
-
Button,
|
|
6
|
-
PageTransition,
|
|
7
|
-
MobileContainer,
|
|
8
|
-
useAnimationTokens,
|
|
9
|
-
useGlassmorphism
|
|
10
|
-
} from '@digilogiclabs/saas-factory-ui'
|
|
3
|
+
import { Card, Button } from '@digilogiclabs/saas-factory-ui'
|
|
11
4
|
import {
|
|
12
5
|
ArrowLeft,
|
|
13
6
|
CheckCircle,
|
|
@@ -46,8 +39,6 @@ interface DeploymentOption {
|
|
|
46
39
|
}
|
|
47
40
|
|
|
48
41
|
export default function DevSetupPage() {
|
|
49
|
-
const animations = useAnimationTokens()
|
|
50
|
-
const glass = useGlassmorphism()
|
|
51
42
|
const [copiedItem, setCopiedItem] = useState<string | null>(null)
|
|
52
43
|
const [activeTab, setActiveTab] = useState<'claude' | 'deployment'>('claude')
|
|
53
44
|
|
|
@@ -55,9 +46,9 @@ export default function DevSetupPage() {
|
|
|
55
46
|
const templateName = "{{ai.enabled ? 'Full-Stack AI Platform' : 'SaaS Platform'}}"
|
|
56
47
|
const hasAuth = true
|
|
57
48
|
const hasPayments = true
|
|
58
|
-
const hasAI = "{{ai.enabled}}" === "true"
|
|
59
|
-
const hasAudio = "{{ai.hasAudio}}" === "true"
|
|
60
|
-
const hasVideo = "{{ai.hasVideo}}" === "true"
|
|
49
|
+
const hasAI = String("{{ai.enabled}}") === "true"
|
|
50
|
+
const hasAudio = String("{{ai.hasAudio}}") === "true"
|
|
51
|
+
const hasVideo = String("{{ai.hasVideo}}") === "true"
|
|
61
52
|
|
|
62
53
|
const copyToClipboard = async (text: string, itemName: string) => {
|
|
63
54
|
await navigator.clipboard.writeText(text)
|
|
@@ -76,7 +67,7 @@ export default function DevSetupPage() {
|
|
|
76
67
|
{
|
|
77
68
|
name: "@digilogiclabs/saas-factory-ui",
|
|
78
69
|
description: "Modern UI components with glassmorphism and responsive design",
|
|
79
|
-
key_exports: ["Button", "Card", "
|
|
70
|
+
key_exports: ["Button", "Card", "CardContent", "CardHeader", "CardTitle", "Input", "Label"],
|
|
80
71
|
docs_link: "https://docs.digilogiclabs.com/packages/ui"
|
|
81
72
|
},
|
|
82
73
|
...(hasPayments ? [{
|
|
@@ -201,7 +192,7 @@ ${hasVideo ? '- **video_content**: Generated video files and metadata' : ''}
|
|
|
201
192
|
|
|
202
193
|
### Authentication Flow
|
|
203
194
|
${hasAuth ? `\`\`\`typescript
|
|
204
|
-
|
|
195
|
+
|
|
205
196
|
|
|
206
197
|
export function ProtectedComponent() {
|
|
207
198
|
const { user, loading } = useAuth()
|
|
@@ -218,26 +209,24 @@ export function ProtectedComponent() {
|
|
|
218
209
|
import {
|
|
219
210
|
Card,
|
|
220
211
|
Button,
|
|
221
|
-
|
|
222
|
-
useGlassmorphism
|
|
212
|
+
|
|
223
213
|
} from '@digilogiclabs/saas-factory-ui'
|
|
224
214
|
|
|
225
215
|
export function ExampleComponent() {
|
|
226
|
-
const glass = useGlassmorphism()
|
|
227
216
|
|
|
228
217
|
return (
|
|
229
|
-
<
|
|
230
|
-
<Card className={
|
|
218
|
+
<div>
|
|
219
|
+
<Card className={\`\rounded-xl bg-card \border border-border\`}>
|
|
231
220
|
<Button variant="default">Action</Button>
|
|
232
221
|
</Card>
|
|
233
|
-
</
|
|
222
|
+
</div>
|
|
234
223
|
)
|
|
235
224
|
}
|
|
236
225
|
\`\`\`
|
|
237
226
|
|
|
238
227
|
${hasPayments ? `### Payment Integration
|
|
239
228
|
\`\`\`typescript
|
|
240
|
-
import { usePayments } from '
|
|
229
|
+
import { usePayments } from '@/hooks/usePayments'
|
|
241
230
|
|
|
242
231
|
export function CheckoutPage() {
|
|
243
232
|
const { createCheckoutSession, loading } = usePayments()
|
|
@@ -439,35 +428,35 @@ CMD ["npm", "start"]`
|
|
|
439
428
|
]
|
|
440
429
|
|
|
441
430
|
return (
|
|
442
|
-
<
|
|
443
|
-
<main className={`min-h-screen
|
|
444
|
-
<div className={`absolute inset-0
|
|
431
|
+
<div>
|
|
432
|
+
<main className={`min-h-screen bg-background relative overflow-hidden`}>
|
|
433
|
+
<div className={`absolute inset-0 bg-muted opacity-30`} />
|
|
445
434
|
<div className="relative z-10">
|
|
446
|
-
<
|
|
435
|
+
<div className="max-w-4xl mx-auto px-4">
|
|
447
436
|
{/* Header */}
|
|
448
437
|
<div className="flex items-center justify-between mb-8">
|
|
449
438
|
<div className="flex items-center gap-4">
|
|
450
|
-
<Link href="/setup" className={
|
|
439
|
+
<Link href="/setup" className={`rounded-xl border border-border bg-card p-2 rounded-xl hover:scale-[1.02] transition-transform`}>
|
|
451
440
|
<ArrowLeft className="w-5 h-5" />
|
|
452
441
|
</Link>
|
|
453
442
|
<div>
|
|
454
443
|
<h1 className="text-2xl font-bold">Development & Deployment</h1>
|
|
455
|
-
<p className="text-
|
|
444
|
+
<p className="text-muted-foreground">Claude AI setup and hosting guides</p>
|
|
456
445
|
</div>
|
|
457
446
|
</div>
|
|
458
|
-
<div className={
|
|
447
|
+
<div className={`rounded-xl border border-border bg-card px-4 py-2 rounded-xl`}>
|
|
459
448
|
<span className="text-sm font-medium">{projectName}</span>
|
|
460
449
|
</div>
|
|
461
450
|
</div>
|
|
462
451
|
|
|
463
452
|
{/* Tab Navigation */}
|
|
464
|
-
<div className={
|
|
453
|
+
<div className={`rounded-xl border border-border bg-card rounded-2xl p-1 mb-8 inline-flex`}>
|
|
465
454
|
<button
|
|
466
455
|
onClick={() => setActiveTab('claude')}
|
|
467
456
|
className={`px-4 py-2 rounded-xl text-sm font-medium transition-all duration-200 ${
|
|
468
457
|
activeTab === 'claude'
|
|
469
458
|
? 'bg-purple-500 text-white shadow-lg'
|
|
470
|
-
: 'text-
|
|
459
|
+
: 'text-muted-foreground hover:bg-white/10'
|
|
471
460
|
}`}
|
|
472
461
|
>
|
|
473
462
|
<Bot className="w-4 h-4 inline mr-2" />
|
|
@@ -477,8 +466,8 @@ CMD ["npm", "start"]`
|
|
|
477
466
|
onClick={() => setActiveTab('deployment')}
|
|
478
467
|
className={`px-4 py-2 rounded-xl text-sm font-medium transition-all duration-200 ${
|
|
479
468
|
activeTab === 'deployment'
|
|
480
|
-
? 'bg-
|
|
481
|
-
: 'text-
|
|
469
|
+
? 'bg-primary text-primary-foreground shadow-lg'
|
|
470
|
+
: 'text-muted-foreground hover:bg-white/10'
|
|
482
471
|
}`}
|
|
483
472
|
>
|
|
484
473
|
<Rocket className="w-4 h-4 inline mr-2" />
|
|
@@ -489,14 +478,14 @@ CMD ["npm", "start"]`
|
|
|
489
478
|
{activeTab === 'claude' && (
|
|
490
479
|
<>
|
|
491
480
|
{/* Claude AI Development Setup */}
|
|
492
|
-
<div className={
|
|
481
|
+
<div className={`rounded-xl border border-border bg-card rounded-2xl p-6 mb-8`}>
|
|
493
482
|
<div className="flex items-center gap-4 mb-6">
|
|
494
483
|
<div className={`w-12 h-12 rounded-xl bg-gradient-to-r from-purple-500 to-blue-500 flex items-center justify-center`}>
|
|
495
484
|
<Bot className="w-6 h-6 text-white" />
|
|
496
485
|
</div>
|
|
497
486
|
<div>
|
|
498
487
|
<h2 className="text-xl font-semibold">Claude AI Development Setup</h2>
|
|
499
|
-
<p className="text-
|
|
488
|
+
<p className="text-muted-foreground">Supercharge your development workflow with AI assistance</p>
|
|
500
489
|
</div>
|
|
501
490
|
</div>
|
|
502
491
|
|
|
@@ -504,17 +493,17 @@ CMD ["npm", "start"]`
|
|
|
504
493
|
<div className="text-center p-4 rounded-xl bg-purple-500/10">
|
|
505
494
|
<Terminal className="w-8 h-8 text-purple-400 mx-auto mb-2" />
|
|
506
495
|
<div className="font-medium">Claude CLI</div>
|
|
507
|
-
<div className="text-sm text-
|
|
496
|
+
<div className="text-sm text-muted-foreground">Command-line AI assistant</div>
|
|
508
497
|
</div>
|
|
509
|
-
<div className="text-center p-4 rounded-xl bg-
|
|
510
|
-
<FileText className="w-8 h-8 text-
|
|
498
|
+
<div className="text-center p-4 rounded-xl bg-primary/10">
|
|
499
|
+
<FileText className="w-8 h-8 text-primary mx-auto mb-2" />
|
|
511
500
|
<div className="font-medium">Smart Context</div>
|
|
512
|
-
<div className="text-sm text-
|
|
501
|
+
<div className="text-sm text-muted-foreground">Project-aware assistance</div>
|
|
513
502
|
</div>
|
|
514
503
|
<div className="text-center p-4 rounded-xl bg-green-500/10">
|
|
515
504
|
<Zap className="w-8 h-8 text-green-400 mx-auto mb-2" />
|
|
516
505
|
<div className="font-medium">Auto-Setup</div>
|
|
517
|
-
<div className="text-sm text-
|
|
506
|
+
<div className="text-sm text-muted-foreground">Generated configuration</div>
|
|
518
507
|
</div>
|
|
519
508
|
</div>
|
|
520
509
|
|
|
@@ -526,14 +515,14 @@ CMD ["npm", "start"]`
|
|
|
526
515
|
</div>
|
|
527
516
|
<div className="flex-1">
|
|
528
517
|
<h3 className="font-semibold mb-2">Install Claude CLI</h3>
|
|
529
|
-
<p className="text-sm text-
|
|
518
|
+
<p className="text-sm text-muted-foreground mb-3">
|
|
530
519
|
Install the Claude CLI to get AI assistance directly in your terminal
|
|
531
520
|
</p>
|
|
532
|
-
<div className="bg-
|
|
521
|
+
<div className="bg-background rounded-xl p-4">
|
|
533
522
|
<pre className="text-green-400 text-sm">npm install -g @anthropic-ai/claude-cli</pre>
|
|
534
523
|
<button
|
|
535
524
|
onClick={() => copyToClipboard('npm install -g @anthropic-ai/claude-cli', 'claude-install')}
|
|
536
|
-
className="mt-2 flex items-center gap-2 text-xs text-
|
|
525
|
+
className="mt-2 flex items-center gap-2 text-xs text-muted-foreground hover:text-foreground transition-colors"
|
|
537
526
|
>
|
|
538
527
|
<Copy className="w-3 h-3" />
|
|
539
528
|
{copiedItem === 'claude-install' ? 'Copied!' : 'Copy command'}
|
|
@@ -549,16 +538,16 @@ CMD ["npm", "start"]`
|
|
|
549
538
|
</div>
|
|
550
539
|
<div className="flex-1">
|
|
551
540
|
<h3 className="font-semibold mb-2">Create .claude Configuration</h3>
|
|
552
|
-
<p className="text-sm text-
|
|
541
|
+
<p className="text-sm text-muted-foreground mb-3">
|
|
553
542
|
Create a .claude file in your project root with this optimized configuration
|
|
554
543
|
</p>
|
|
555
|
-
<div className="bg-
|
|
544
|
+
<div className="bg-background rounded-xl p-4 overflow-x-auto">
|
|
556
545
|
<pre className="text-green-400 text-xs">
|
|
557
546
|
{JSON.stringify(claudeConfig, null, 2)}
|
|
558
547
|
</pre>
|
|
559
548
|
<button
|
|
560
549
|
onClick={() => copyToClipboard(JSON.stringify(claudeConfig, null, 2), 'claude-config')}
|
|
561
|
-
className="mt-2 flex items-center gap-2 text-xs text-
|
|
550
|
+
className="mt-2 flex items-center gap-2 text-xs text-muted-foreground hover:text-foreground transition-colors"
|
|
562
551
|
>
|
|
563
552
|
<Copy className="w-3 h-3" />
|
|
564
553
|
{copiedItem === 'claude-config' ? 'Copied!' : 'Copy .claude configuration'}
|
|
@@ -574,18 +563,18 @@ CMD ["npm", "start"]`
|
|
|
574
563
|
</div>
|
|
575
564
|
<div className="flex-1">
|
|
576
565
|
<h3 className="font-semibold mb-2">Create Context Documentation</h3>
|
|
577
|
-
<p className="text-sm text-
|
|
566
|
+
<p className="text-sm text-muted-foreground mb-3">
|
|
578
567
|
Create a context.md file with comprehensive project documentation
|
|
579
568
|
</p>
|
|
580
569
|
<details className="mb-3">
|
|
581
|
-
<summary className="text-sm text-
|
|
570
|
+
<summary className="text-sm text-primary cursor-pointer hover:text-primary/80">
|
|
582
571
|
Show context.md content
|
|
583
572
|
</summary>
|
|
584
|
-
<div className="bg-
|
|
573
|
+
<div className="bg-background rounded-xl p-4 mt-2 overflow-x-auto max-h-64">
|
|
585
574
|
<pre className="text-green-400 text-xs whitespace-pre-wrap">{contextContent}</pre>
|
|
586
575
|
<button
|
|
587
576
|
onClick={() => copyToClipboard(contextContent, 'context-content')}
|
|
588
|
-
className="mt-2 flex items-center gap-2 text-xs text-
|
|
577
|
+
className="mt-2 flex items-center gap-2 text-xs text-muted-foreground hover:text-foreground transition-colors"
|
|
589
578
|
>
|
|
590
579
|
<Copy className="w-3 h-3" />
|
|
591
580
|
{copiedItem === 'context-content' ? 'Copied!' : 'Copy context.md content'}
|
|
@@ -602,20 +591,20 @@ CMD ["npm", "start"]`
|
|
|
602
591
|
</div>
|
|
603
592
|
<div className="flex-1">
|
|
604
593
|
<h3 className="font-semibold mb-2">Start Using Claude AI</h3>
|
|
605
|
-
<p className="text-sm text-
|
|
594
|
+
<p className="text-sm text-muted-foreground mb-3">
|
|
606
595
|
Common commands to supercharge your development workflow
|
|
607
596
|
</p>
|
|
608
597
|
<div className="space-y-3">
|
|
609
|
-
<div className="bg-
|
|
610
|
-
<div className="text-
|
|
598
|
+
<div className="bg-background rounded-lg p-3">
|
|
599
|
+
<div className="text-primary text-sm mb-1">Generate new component:</div>
|
|
611
600
|
<code className="text-green-400 text-xs">claude "Create a new user profile component with glassmorphism styling"</code>
|
|
612
601
|
</div>
|
|
613
|
-
<div className="bg-
|
|
614
|
-
<div className="text-
|
|
602
|
+
<div className="bg-background rounded-lg p-3">
|
|
603
|
+
<div className="text-primary text-sm mb-1">Debug issues:</div>
|
|
615
604
|
<code className="text-green-400 text-xs">claude "Help me debug this authentication error"</code>
|
|
616
605
|
</div>
|
|
617
|
-
<div className="bg-
|
|
618
|
-
<div className="text-
|
|
606
|
+
<div className="bg-background rounded-lg p-3">
|
|
607
|
+
<div className="text-primary text-sm mb-1">Add features:</div>
|
|
619
608
|
<code className="text-green-400 text-xs">claude "Add a dark mode toggle to the header component"</code>
|
|
620
609
|
</div>
|
|
621
610
|
</div>
|
|
@@ -625,25 +614,25 @@ CMD ["npm", "start"]`
|
|
|
625
614
|
</div>
|
|
626
615
|
|
|
627
616
|
{/* Package Documentation Quick Reference */}
|
|
628
|
-
<div className={
|
|
617
|
+
<div className={`rounded-xl border border-border bg-card rounded-2xl p-6 mb-8`}>
|
|
629
618
|
<h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
|
|
630
|
-
<Book className="w-5 h-5 text-
|
|
619
|
+
<Book className="w-5 h-5 text-primary" />
|
|
631
620
|
Package Documentation Quick Reference
|
|
632
621
|
</h3>
|
|
633
622
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
634
623
|
{packageDocs.map((pkg, index) => (
|
|
635
|
-
<div key={index} className={
|
|
624
|
+
<div key={index} className={`rounded-xl border border-border bg-card rounded-xl p-4`}>
|
|
636
625
|
<h4 className="font-semibold text-sm mb-2">{pkg.name}</h4>
|
|
637
|
-
<p className="text-xs text-
|
|
626
|
+
<p className="text-xs text-muted-foreground mb-3">{pkg.description}</p>
|
|
638
627
|
<div className="text-xs">
|
|
639
|
-
<div className="text-
|
|
640
|
-
<div className="text-
|
|
628
|
+
<div className="text-primary mb-1">Key Exports:</div>
|
|
629
|
+
<div className="text-muted-foreground">{pkg.key_exports.join(', ')}</div>
|
|
641
630
|
</div>
|
|
642
631
|
<a
|
|
643
632
|
href={pkg.docs_link}
|
|
644
633
|
target="_blank"
|
|
645
634
|
rel="noopener noreferrer"
|
|
646
|
-
className="inline-flex items-center gap-1 text-xs text-
|
|
635
|
+
className="inline-flex items-center gap-1 text-xs text-primary hover:text-primary/80 mt-2"
|
|
647
636
|
>
|
|
648
637
|
View Docs <ExternalLink className="w-3 h-3" />
|
|
649
638
|
</a>
|
|
@@ -663,10 +652,10 @@ CMD ["npm", "start"]`
|
|
|
663
652
|
{deploymentOptions.map((option, index) => {
|
|
664
653
|
const OptionIcon = option.icon
|
|
665
654
|
return (
|
|
666
|
-
<div key={index} className={
|
|
655
|
+
<div key={index} className={`rounded-xl border border-border bg-card rounded-2xl p-6`}>
|
|
667
656
|
<div className="flex items-start justify-between mb-4">
|
|
668
657
|
<div className="flex items-center gap-4">
|
|
669
|
-
<div className={`w-12 h-12 rounded-xl bg-
|
|
658
|
+
<div className={`w-12 h-12 rounded-xl bg-card flex items-center justify-center`}>
|
|
670
659
|
<OptionIcon className="w-6 h-6 text-white" />
|
|
671
660
|
</div>
|
|
672
661
|
<div>
|
|
@@ -680,8 +669,8 @@ CMD ["npm", "start"]`
|
|
|
680
669
|
{option.complexity}
|
|
681
670
|
</span>
|
|
682
671
|
</h3>
|
|
683
|
-
<p className="text-sm text-
|
|
684
|
-
<div className="text-xs text-
|
|
672
|
+
<p className="text-sm text-muted-foreground">{option.description}</p>
|
|
673
|
+
<div className="text-xs text-primary mt-1">⏱️ {option.timeEstimate}</div>
|
|
685
674
|
</div>
|
|
686
675
|
</div>
|
|
687
676
|
</div>
|
|
@@ -705,14 +694,14 @@ CMD ["npm", "start"]`
|
|
|
705
694
|
<div className="space-y-3">
|
|
706
695
|
{option.steps.map((step, stepIndex) => (
|
|
707
696
|
<div key={stepIndex} className="flex gap-3">
|
|
708
|
-
<div className="w-6 h-6 rounded-full bg-
|
|
697
|
+
<div className="w-6 h-6 rounded-full bg-primary text-primary-foreground text-xs flex items-center justify-center flex-shrink-0 mt-0.5">
|
|
709
698
|
{stepIndex + 1}
|
|
710
699
|
</div>
|
|
711
700
|
<div className="flex-1">
|
|
712
701
|
<h5 className="font-medium">{step.title}</h5>
|
|
713
|
-
<p className="text-sm text-
|
|
702
|
+
<p className="text-sm text-muted-foreground mb-2">{step.description}</p>
|
|
714
703
|
{step.code && (
|
|
715
|
-
<div className="bg-
|
|
704
|
+
<div className="bg-background rounded-lg p-3 mt-2">
|
|
716
705
|
<pre className="text-green-400 text-xs whitespace-pre-wrap">{step.code}</pre>
|
|
717
706
|
</div>
|
|
718
707
|
)}
|
|
@@ -721,7 +710,7 @@ CMD ["npm", "start"]`
|
|
|
721
710
|
href={step.link}
|
|
722
711
|
target="_blank"
|
|
723
712
|
rel="noopener noreferrer"
|
|
724
|
-
className="inline-flex items-center gap-1 text-sm text-
|
|
713
|
+
className="inline-flex items-center gap-1 text-sm text-primary hover:text-primary/80 mt-2"
|
|
725
714
|
>
|
|
726
715
|
Learn More <ExternalLink className="w-3 h-3" />
|
|
727
716
|
</a>
|
|
@@ -737,7 +726,7 @@ CMD ["npm", "start"]`
|
|
|
737
726
|
</div>
|
|
738
727
|
|
|
739
728
|
{/* Pre-Deployment Checklist */}
|
|
740
|
-
<div className={
|
|
729
|
+
<div className={`rounded-xl border border-border bg-card rounded-2xl p-6 mt-8`}>
|
|
741
730
|
<h3 className="text-lg font-semibold mb-4 flex items-center gap-2">
|
|
742
731
|
<CheckCircle className="w-5 h-5 text-green-400" />
|
|
743
732
|
Pre-Deployment Checklist
|
|
@@ -759,11 +748,11 @@ CMD ["npm", "start"]`
|
|
|
759
748
|
)}
|
|
760
749
|
<div className="flex items-center gap-3">
|
|
761
750
|
<CheckCircle className="w-5 h-5 text-green-400" />
|
|
762
|
-
<span>Build succeeds locally: <code className="px-2 py-1 bg-
|
|
751
|
+
<span>Build succeeds locally: <code className="px-2 py-1 bg-card rounded">npm run build</code></span>
|
|
763
752
|
</div>
|
|
764
753
|
<div className="flex items-center gap-3">
|
|
765
754
|
<CheckCircle className="w-5 h-5 text-green-400" />
|
|
766
|
-
<span>Tests pass: <code className="px-2 py-1 bg-
|
|
755
|
+
<span>Tests pass: <code className="px-2 py-1 bg-card rounded">npm run test</code></span>
|
|
767
756
|
</div>
|
|
768
757
|
<div className="flex items-center gap-3">
|
|
769
758
|
<CheckCircle className="w-5 h-5 text-green-400" />
|
|
@@ -775,27 +764,27 @@ CMD ["npm", "start"]`
|
|
|
775
764
|
)}
|
|
776
765
|
|
|
777
766
|
{/* Support Section */}
|
|
778
|
-
<div className={
|
|
767
|
+
<div className={`rounded-xl border border-border bg-card rounded-2xl p-6 mt-8 text-center`}>
|
|
779
768
|
<h3 className="text-lg font-semibold mb-4">Need Help?</h3>
|
|
780
|
-
<p className="text-
|
|
769
|
+
<p className="text-muted-foreground mb-4">
|
|
781
770
|
Our community and support team are here to help with development and deployment.
|
|
782
771
|
</p>
|
|
783
772
|
<div className="flex justify-center gap-4">
|
|
784
|
-
<Button variant="outline" size="sm"
|
|
773
|
+
<Button variant="outline" size="sm">
|
|
785
774
|
<a href="https://discord.gg/digilogiclabs" target="_blank" rel="noopener noreferrer">
|
|
786
775
|
Join Discord
|
|
787
776
|
</a>
|
|
788
777
|
</Button>
|
|
789
|
-
<Button size="sm"
|
|
778
|
+
<Button size="sm">
|
|
790
779
|
<a href="https://docs.digilogiclabs.com" target="_blank" rel="noopener noreferrer">
|
|
791
780
|
View Docs
|
|
792
781
|
</a>
|
|
793
782
|
</Button>
|
|
794
783
|
</div>
|
|
795
784
|
</div>
|
|
796
|
-
</
|
|
785
|
+
</div>
|
|
797
786
|
</div>
|
|
798
787
|
</main>
|
|
799
|
-
</
|
|
788
|
+
</div>
|
|
800
789
|
)
|
|
801
790
|
}
|
|
@@ -1,36 +1,38 @@
|
|
|
1
|
-
import type { Metadata } from 'next'
|
|
2
|
-
import { Inter } from 'next/font/google'
|
|
3
|
-
import './globals.css'
|
|
4
|
-
import { AppProviders } from '@/components/providers/app-providers'
|
|
5
|
-
import { Header } from '@/components/shared/header'
|
|
6
|
-
import {
|
|
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
|
-
|
|
1
|
+
import type { Metadata } from 'next'
|
|
2
|
+
import { Inter } from 'next/font/google'
|
|
3
|
+
import './globals.css'
|
|
4
|
+
import { AppProviders } from '@/components/providers/app-providers'
|
|
5
|
+
import { Header } from '@/components/shared/header'
|
|
6
|
+
import { MockBanner } from '@/components/mock-banner'
|
|
7
|
+
import { Footer } from '@/components/shared/footer'
|
|
8
|
+
|
|
9
|
+
const inter = Inter({ subsets: ['latin'] })
|
|
10
|
+
|
|
11
|
+
export const metadata: Metadata = {
|
|
12
|
+
title: '{{titleCaseName}}',
|
|
13
|
+
description: '{{description}}',
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export default function RootLayout({
|
|
17
|
+
children,
|
|
18
|
+
}: {
|
|
19
|
+
children: React.ReactNode
|
|
20
|
+
}) {
|
|
21
|
+
return (
|
|
22
|
+
<html lang="en" suppressHydrationWarning>
|
|
23
|
+
<body className={`${inter.className} min-h-screen flex flex-col`}>
|
|
24
|
+
<AppProviders>
|
|
25
|
+
<MockBanner />
|
|
26
|
+
<a href="#main-content" className="sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 focus:z-[90] focus:px-4 focus:py-2 focus:bg-primary focus:text-primary-foreground focus:rounded-lg focus:outline-none">
|
|
27
|
+
Skip to content
|
|
28
|
+
</a>
|
|
29
|
+
<Header />
|
|
30
|
+
<main id="main-content" className="flex-1">
|
|
31
|
+
{children}
|
|
32
|
+
</main>
|
|
33
|
+
<Footer />
|
|
34
|
+
</AppProviders>
|
|
35
|
+
</body>
|
|
36
|
+
</html>
|
|
37
|
+
)
|
|
38
|
+
}
|
|
@@ -2,35 +2,35 @@ import { Card } from '@digilogiclabs/saas-factory-ui'
|
|
|
2
2
|
|
|
3
3
|
export default function LoginLoading() {
|
|
4
4
|
return (
|
|
5
|
-
<div className="flex items-center justify-center min-h-screen bg-
|
|
5
|
+
<div className="flex items-center justify-center min-h-screen bg-muted">
|
|
6
6
|
<Card className="w-full max-w-md p-8">
|
|
7
7
|
<div className="animate-pulse space-y-6">
|
|
8
8
|
{/* Title skeleton */}
|
|
9
|
-
<div className="h-8 bg-
|
|
9
|
+
<div className="h-8 bg-muted rounded-md mx-auto w-32"></div>
|
|
10
10
|
|
|
11
11
|
{/* Form skeleton */}
|
|
12
12
|
<div className="space-y-4">
|
|
13
13
|
{/* Email field */}
|
|
14
14
|
<div>
|
|
15
|
-
<div className="h-4 bg-
|
|
16
|
-
<div className="h-10 bg-
|
|
15
|
+
<div className="h-4 bg-muted rounded w-16 mb-2"></div>
|
|
16
|
+
<div className="h-10 bg-muted rounded"></div>
|
|
17
17
|
</div>
|
|
18
18
|
|
|
19
19
|
{/* Password field */}
|
|
20
20
|
<div>
|
|
21
|
-
<div className="h-4 bg-
|
|
22
|
-
<div className="h-10 bg-
|
|
21
|
+
<div className="h-4 bg-muted rounded w-20 mb-2"></div>
|
|
22
|
+
<div className="h-10 bg-muted rounded"></div>
|
|
23
23
|
</div>
|
|
24
24
|
|
|
25
25
|
{/* Sign in button */}
|
|
26
|
-
<div className="h-10 bg-
|
|
26
|
+
<div className="h-10 bg-primary/50 rounded"></div>
|
|
27
27
|
|
|
28
28
|
{/* OAuth button */}
|
|
29
|
-
<div className="h-10 bg-
|
|
29
|
+
<div className="h-10 bg-muted rounded"></div>
|
|
30
30
|
</div>
|
|
31
31
|
|
|
32
32
|
{/* Sign up link */}
|
|
33
|
-
<div className="h-4 bg-
|
|
33
|
+
<div className="h-4 bg-muted rounded w-48 mx-auto"></div>
|
|
34
34
|
</div>
|
|
35
35
|
</Card>
|
|
36
36
|
</div>
|
|
@@ -1,109 +1,9 @@
|
|
|
1
|
-
'
|
|
2
|
-
|
|
3
|
-
import React, { useState } from 'react';
|
|
4
|
-
import { Button, Card, Input, Label } from '@digilogiclabs/saas-factory-ui';
|
|
5
|
-
import { useAuth } from '@digilogiclabs/app-sdk';
|
|
6
|
-
import { useRouter } from 'next/navigation';
|
|
1
|
+
import { LoginForm } from '@/components/client/login-form'
|
|
7
2
|
|
|
8
3
|
export default function LoginPage() {
|
|
9
|
-
const [email, setEmail] = useState('');
|
|
10
|
-
const [password, setPassword] = useState('');
|
|
11
|
-
const { signIn, signInWithOAuth, loading, error, user } = useAuth();
|
|
12
|
-
const router = useRouter();
|
|
13
|
-
|
|
14
|
-
// Redirect if already logged in
|
|
15
|
-
React.useEffect(() => {
|
|
16
|
-
if (user) {
|
|
17
|
-
router.push('/');
|
|
18
|
-
}
|
|
19
|
-
}, [user, router]);
|
|
20
|
-
|
|
21
|
-
const handleLogin = async (e: React.FormEvent) => {
|
|
22
|
-
e.preventDefault();
|
|
23
|
-
try {
|
|
24
|
-
await signIn(email, password);
|
|
25
|
-
router.push('/');
|
|
26
|
-
} catch (err) {
|
|
27
|
-
console.error('Login error:', err);
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
const handleGoogleLogin = async () => {
|
|
32
|
-
try {
|
|
33
|
-
await signInWithOAuth('google');
|
|
34
|
-
} catch (err) {
|
|
35
|
-
console.error('Google login error:', err);
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
if (loading) {
|
|
40
|
-
return (
|
|
41
|
-
<div className="flex items-center justify-center min-h-screen bg-gray-100">
|
|
42
|
-
<div>Loading...</div>
|
|
43
|
-
</div>
|
|
44
|
-
);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
4
|
return (
|
|
48
|
-
<div className="flex items-center justify-center
|
|
49
|
-
<
|
|
50
|
-
<h1 className="text-2xl font-bold text-center mb-6">Sign In</h1>
|
|
51
|
-
|
|
52
|
-
{error && (
|
|
53
|
-
<div className="mb-4 p-3 bg-red-100 border border-red-400 text-red-700 rounded">
|
|
54
|
-
{error.message}
|
|
55
|
-
</div>
|
|
56
|
-
)}
|
|
57
|
-
|
|
58
|
-
<form onSubmit={handleLogin} className="space-y-4">
|
|
59
|
-
<div>
|
|
60
|
-
<Label htmlFor="email">Email</Label>
|
|
61
|
-
<Input
|
|
62
|
-
id="email"
|
|
63
|
-
type="email"
|
|
64
|
-
value={email}
|
|
65
|
-
onChange={(e) => setEmail(e.target.value)}
|
|
66
|
-
placeholder="Enter your email"
|
|
67
|
-
required
|
|
68
|
-
disabled={loading}
|
|
69
|
-
/>
|
|
70
|
-
</div>
|
|
71
|
-
<div>
|
|
72
|
-
<Label htmlFor="password">Password</Label>
|
|
73
|
-
<Input
|
|
74
|
-
id="password"
|
|
75
|
-
type="password"
|
|
76
|
-
value={password}
|
|
77
|
-
onChange={(e) => setPassword(e.target.value)}
|
|
78
|
-
placeholder="Enter your password"
|
|
79
|
-
required
|
|
80
|
-
disabled={loading}
|
|
81
|
-
/>
|
|
82
|
-
</div>
|
|
83
|
-
<Button type="submit" className="w-full" disabled={loading}>
|
|
84
|
-
{loading ? 'Signing In...' : 'Sign In'}
|
|
85
|
-
</Button>
|
|
86
|
-
<Button
|
|
87
|
-
type="button"
|
|
88
|
-
variant="outline"
|
|
89
|
-
className="w-full"
|
|
90
|
-
onClick={handleGoogleLogin}
|
|
91
|
-
disabled={loading}
|
|
92
|
-
>
|
|
93
|
-
Sign in with Google
|
|
94
|
-
</Button>
|
|
95
|
-
</form>
|
|
96
|
-
|
|
97
|
-
<div className="mt-4 text-center">
|
|
98
|
-
<p className="text-sm text-gray-600">
|
|
99
|
-
Don't have an account?{' '}
|
|
100
|
-
<a href="/signup" className="text-blue-600 hover:underline">
|
|
101
|
-
Sign up
|
|
102
|
-
</a>
|
|
103
|
-
</p>
|
|
104
|
-
</div>
|
|
105
|
-
</Card>
|
|
5
|
+
<div className="flex min-h-screen items-center justify-center bg-background px-4">
|
|
6
|
+
<LoginForm />
|
|
106
7
|
</div>
|
|
107
|
-
)
|
|
8
|
+
)
|
|
108
9
|
}
|
|
109
|
-
|