@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,169 +1,370 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
|
|
3
|
-
import { Button, Card,
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import Link from 'next/link'
|
|
7
|
-
import { useState } from 'react'
|
|
8
|
-
|
|
9
|
-
const
|
|
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
|
-
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import { Button, Card, CardContent } from '@digilogiclabs/saas-factory-ui'
|
|
4
|
+
import { ArrowRight, Search, Star, Store, ShoppingCart, Code, FileText, Wrench, GraduationCap, Sun, Moon, ShoppingBag } from 'lucide-react'
|
|
5
|
+
import { useTheme } from 'next-themes'
|
|
6
|
+
import Link from 'next/link'
|
|
7
|
+
import { useEffect, useState } from 'react'
|
|
8
|
+
|
|
9
|
+
const CATEGORIES = [
|
|
10
|
+
{
|
|
11
|
+
name: 'Software',
|
|
12
|
+
description: 'Apps, plugins & tools',
|
|
13
|
+
count: 234,
|
|
14
|
+
icon: Code,
|
|
15
|
+
color: 'text-blue-500 group-hover:text-blue-400',
|
|
16
|
+
bg: 'bg-blue-500/10 group-hover:bg-blue-500/20',
|
|
17
|
+
border: 'group-hover:border-blue-500/30',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: 'Templates',
|
|
21
|
+
description: 'Themes, kits & starters',
|
|
22
|
+
count: 156,
|
|
23
|
+
icon: FileText,
|
|
24
|
+
color: 'text-violet-500 group-hover:text-violet-400',
|
|
25
|
+
bg: 'bg-violet-500/10 group-hover:bg-violet-500/20',
|
|
26
|
+
border: 'group-hover:border-violet-500/30',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'Services',
|
|
30
|
+
description: 'Freelance & consulting',
|
|
31
|
+
count: 89,
|
|
32
|
+
icon: Wrench,
|
|
33
|
+
color: 'text-amber-500 group-hover:text-amber-400',
|
|
34
|
+
bg: 'bg-amber-500/10 group-hover:bg-amber-500/20',
|
|
35
|
+
border: 'group-hover:border-amber-500/30',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Courses',
|
|
39
|
+
description: 'Learn new skills',
|
|
40
|
+
count: 67,
|
|
41
|
+
icon: GraduationCap,
|
|
42
|
+
color: 'text-emerald-500 group-hover:text-emerald-400',
|
|
43
|
+
bg: 'bg-emerald-500/10 group-hover:bg-emerald-500/20',
|
|
44
|
+
border: 'group-hover:border-emerald-500/30',
|
|
45
|
+
},
|
|
46
|
+
]
|
|
47
|
+
|
|
48
|
+
const FEATURED_PRODUCTS = [
|
|
49
|
+
{
|
|
50
|
+
id: 1,
|
|
51
|
+
name: 'Premium UI Kit',
|
|
52
|
+
price: 49.99,
|
|
53
|
+
vendor: 'DesignCraft',
|
|
54
|
+
rating: 4.8,
|
|
55
|
+
reviews: 124,
|
|
56
|
+
tag: 'Best Seller',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
id: 2,
|
|
60
|
+
name: 'DevOps Toolkit Pro',
|
|
61
|
+
price: 129.99,
|
|
62
|
+
vendor: 'CloudForge',
|
|
63
|
+
rating: 4.9,
|
|
64
|
+
reviews: 87,
|
|
65
|
+
tag: 'New',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: 3,
|
|
69
|
+
name: 'Icon Library Plus',
|
|
70
|
+
price: 29.99,
|
|
71
|
+
vendor: 'PixelWorks',
|
|
72
|
+
rating: 4.7,
|
|
73
|
+
reviews: 203,
|
|
74
|
+
tag: 'Popular',
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
id: 4,
|
|
78
|
+
name: 'Analytics Dashboard',
|
|
79
|
+
price: 199.99,
|
|
80
|
+
vendor: 'DataViz Co',
|
|
81
|
+
rating: 4.6,
|
|
82
|
+
reviews: 56,
|
|
83
|
+
tag: 'Featured',
|
|
84
|
+
},
|
|
85
|
+
]
|
|
86
|
+
|
|
87
|
+
function ThemeToggle() {
|
|
88
|
+
const { theme, setTheme } = useTheme()
|
|
89
|
+
const [mounted, setMounted] = useState(false)
|
|
90
|
+
useEffect(() => setMounted(true), [])
|
|
91
|
+
if (!mounted) return <div className="w-9 h-9" />
|
|
92
|
+
return (
|
|
93
|
+
<button
|
|
94
|
+
onClick={() => setTheme(theme === 'dark' ? 'light' : 'dark')}
|
|
95
|
+
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"
|
|
96
|
+
aria-label="Toggle theme"
|
|
97
|
+
>
|
|
98
|
+
{theme === 'dark' ? <Sun className="w-4 h-4" /> : <Moon className="w-4 h-4" />}
|
|
99
|
+
</button>
|
|
100
|
+
)
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function StarRating({ rating, reviews }: { rating: number; reviews: number }) {
|
|
104
|
+
return (
|
|
105
|
+
<div className="flex items-center gap-1.5">
|
|
106
|
+
<div className="flex items-center">
|
|
107
|
+
{[...Array(5)].map((_, i) => (
|
|
108
|
+
<Star
|
|
109
|
+
key={i}
|
|
110
|
+
className={`w-3.5 h-3.5 ${
|
|
111
|
+
i < Math.floor(rating)
|
|
112
|
+
? 'text-amber-500 fill-amber-500'
|
|
113
|
+
: i < rating
|
|
114
|
+
? 'text-amber-500 fill-amber-500/50'
|
|
115
|
+
: 'text-muted-foreground/30'
|
|
116
|
+
}`}
|
|
117
|
+
/>
|
|
118
|
+
))}
|
|
119
|
+
</div>
|
|
120
|
+
<span className="text-xs text-muted-foreground">({reviews})</span>
|
|
121
|
+
</div>
|
|
122
|
+
)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export default function Home() {
|
|
126
|
+
const [searchQuery, setSearchQuery] = useState('')
|
|
127
|
+
|
|
128
|
+
return (
|
|
129
|
+
<main id="main-content" className="min-h-screen bg-background text-foreground">
|
|
130
|
+
{/* Nav */}
|
|
131
|
+
<nav className="sticky top-0 z-50 border-b border-border bg-background/80 backdrop-blur-lg">
|
|
132
|
+
<div className="max-w-6xl mx-auto px-4 sm:px-6 h-16 flex items-center justify-between gap-4">
|
|
133
|
+
<Link href="/" className="flex items-center gap-2 hover:opacity-80 active:scale-[0.97] transition-all duration-200 flex-shrink-0">
|
|
134
|
+
<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">
|
|
135
|
+
<Store className="w-4 h-4 text-white" />
|
|
136
|
+
</div>
|
|
137
|
+
<span className="font-bold text-lg hidden sm:inline">{'{{titleCaseName}}'}</span>
|
|
138
|
+
</Link>
|
|
139
|
+
|
|
140
|
+
{/* Search */}
|
|
141
|
+
<div className="flex-1 max-w-md mx-2 sm:mx-4">
|
|
142
|
+
<div className="relative">
|
|
143
|
+
<Search className="absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground" />
|
|
144
|
+
<input
|
|
145
|
+
type="text"
|
|
146
|
+
placeholder="Search products..."
|
|
147
|
+
value={searchQuery}
|
|
148
|
+
onChange={(e) => setSearchQuery(e.target.value)}
|
|
149
|
+
className="w-full pl-9 pr-4 py-2 text-sm rounded-lg border border-border bg-muted/50 text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary/30 focus:border-primary/50 transition-all duration-200"
|
|
150
|
+
/>
|
|
151
|
+
</div>
|
|
152
|
+
</div>
|
|
153
|
+
|
|
154
|
+
<div className="flex items-center gap-2 flex-shrink-0">
|
|
155
|
+
<ThemeToggle />
|
|
156
|
+
<Link href="/login">
|
|
157
|
+
<Button variant="ghost" size="sm" className="hover:bg-accent active:scale-95 transition-all duration-200 cursor-pointer">Sign In</Button>
|
|
158
|
+
</Link>
|
|
159
|
+
<Link href="/signup">
|
|
160
|
+
<Button size="sm" className="bg-gradient-to-r from-brand-from to-brand-to text-white hover:brightness-110 active:scale-95 transition-all duration-200 cursor-pointer shadow-sm hover:shadow-md">Get Started</Button>
|
|
161
|
+
</Link>
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
164
|
+
</nav>
|
|
165
|
+
|
|
166
|
+
{/* Hero */}
|
|
167
|
+
<section className="relative overflow-hidden">
|
|
168
|
+
<div className="absolute inset-0 bg-gradient-to-b from-primary/5 to-transparent" />
|
|
169
|
+
<div className="relative max-w-6xl mx-auto px-4 sm:px-6 pt-16 sm:pt-24 pb-16 text-center">
|
|
170
|
+
<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">
|
|
171
|
+
<ShoppingBag className="w-3.5 h-3.5 text-primary" />
|
|
172
|
+
Multi-Vendor Digital Marketplace
|
|
173
|
+
</div>
|
|
174
|
+
<h1 className="text-4xl sm:text-5xl lg:text-6xl font-extrabold tracking-tight mb-6">
|
|
175
|
+
Discover, Buy & Sell
|
|
176
|
+
<br />
|
|
177
|
+
<span className="text-primary">
|
|
178
|
+
Digital Products
|
|
179
|
+
</span>
|
|
180
|
+
</h1>
|
|
181
|
+
<p className="text-lg sm:text-xl text-muted-foreground max-w-2xl mx-auto mb-10 leading-relaxed">
|
|
182
|
+
A curated marketplace connecting creators with customers.
|
|
183
|
+
Find premium software, templates, services, and courses from verified vendors.
|
|
184
|
+
</p>
|
|
185
|
+
<div className="flex flex-col sm:flex-row gap-3 justify-center">
|
|
186
|
+
<Link href="/signup">
|
|
187
|
+
<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">
|
|
188
|
+
Start Shopping
|
|
189
|
+
<ArrowRight className="w-4 h-4 ml-2" />
|
|
190
|
+
</Button>
|
|
191
|
+
</Link>
|
|
192
|
+
<Link href="/vendors/apply">
|
|
193
|
+
<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">
|
|
194
|
+
Become a Vendor
|
|
195
|
+
</Button>
|
|
196
|
+
</Link>
|
|
197
|
+
</div>
|
|
198
|
+
</div>
|
|
199
|
+
</section>
|
|
200
|
+
|
|
201
|
+
{/* Categories */}
|
|
202
|
+
<section className="max-w-6xl mx-auto px-4 sm:px-6 py-16 sm:py-24">
|
|
203
|
+
<div className="text-center mb-12 sm:mb-16">
|
|
204
|
+
<h2 className="text-3xl sm:text-4xl font-bold mb-4">Browse by Category</h2>
|
|
205
|
+
<p className="text-muted-foreground text-lg max-w-xl mx-auto">
|
|
206
|
+
Explore thousands of digital products across popular categories.
|
|
207
|
+
</p>
|
|
208
|
+
</div>
|
|
209
|
+
<div className="grid grid-cols-2 lg:grid-cols-4 gap-4 sm:gap-6">
|
|
210
|
+
{CATEGORIES.map((category) => (
|
|
211
|
+
<Card key={category.name} className={`group cursor-default hover:shadow-xl hover:-translate-y-1 ${category.border} transition-all duration-300`}>
|
|
212
|
+
<CardContent className="p-6 sm:p-8 text-center">
|
|
213
|
+
<div className={`w-14 h-14 ${category.bg} rounded-xl flex items-center justify-center mx-auto mb-4 transition-colors duration-300`}>
|
|
214
|
+
<category.icon className={`w-7 h-7 ${category.color} transition-colors duration-300`} />
|
|
215
|
+
</div>
|
|
216
|
+
<h3 className="text-lg font-semibold mb-1 group-hover:text-primary transition-colors duration-200">{category.name}</h3>
|
|
217
|
+
<p className="text-sm text-muted-foreground mb-2">{category.description}</p>
|
|
218
|
+
<span className="text-xs font-medium text-primary">{category.count} products</span>
|
|
219
|
+
</CardContent>
|
|
220
|
+
</Card>
|
|
221
|
+
))}
|
|
222
|
+
</div>
|
|
223
|
+
</section>
|
|
224
|
+
|
|
225
|
+
{/* Featured Products */}
|
|
226
|
+
<section className="bg-muted/50">
|
|
227
|
+
<div className="max-w-6xl mx-auto px-4 sm:px-6 py-16 sm:py-24">
|
|
228
|
+
<div className="flex items-center justify-between mb-12">
|
|
229
|
+
<div>
|
|
230
|
+
<h2 className="text-3xl sm:text-4xl font-bold mb-2">Featured Products</h2>
|
|
231
|
+
<p className="text-muted-foreground text-lg">Hand-picked by our team, loved by our community.</p>
|
|
232
|
+
</div>
|
|
233
|
+
<Link href="/products" className="hidden sm:inline-flex">
|
|
234
|
+
<Button variant="ghost" className="hover:bg-accent active:scale-[0.97] transition-all duration-200 cursor-pointer">
|
|
235
|
+
View All
|
|
236
|
+
<ArrowRight className="w-4 h-4 ml-2" />
|
|
237
|
+
</Button>
|
|
238
|
+
</Link>
|
|
239
|
+
</div>
|
|
240
|
+
|
|
241
|
+
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6">
|
|
242
|
+
{FEATURED_PRODUCTS.map((product) => (
|
|
243
|
+
<Card key={product.id} className="group cursor-default hover:shadow-xl hover:-translate-y-1 transition-all duration-300 overflow-hidden">
|
|
244
|
+
<CardContent className="p-0">
|
|
245
|
+
{/* Image placeholder */}
|
|
246
|
+
<div className="relative aspect-[4/3] bg-gradient-to-br from-primary/10 via-muted to-accent overflow-hidden">
|
|
247
|
+
<div className="absolute inset-0 flex items-center justify-center">
|
|
248
|
+
<div className="w-16 h-16 rounded-2xl bg-background/60 backdrop-blur-sm flex items-center justify-center border border-border/50 group-hover:scale-110 transition-transform duration-300">
|
|
249
|
+
<ShoppingBag className="w-8 h-8 text-primary/40" />
|
|
250
|
+
</div>
|
|
251
|
+
</div>
|
|
252
|
+
<div className="absolute top-3 left-3">
|
|
253
|
+
<span className="px-2.5 py-1 rounded-full bg-primary text-primary-foreground text-xs font-semibold shadow-sm">
|
|
254
|
+
{product.tag}
|
|
255
|
+
</span>
|
|
256
|
+
</div>
|
|
257
|
+
</div>
|
|
258
|
+
|
|
259
|
+
<div className="p-5">
|
|
260
|
+
<div className="flex items-start justify-between gap-2 mb-2">
|
|
261
|
+
<div>
|
|
262
|
+
<h3 className="font-semibold group-hover:text-primary transition-colors duration-200">
|
|
263
|
+
{product.name}
|
|
264
|
+
</h3>
|
|
265
|
+
<p className="text-sm text-muted-foreground">by {product.vendor}</p>
|
|
266
|
+
</div>
|
|
267
|
+
</div>
|
|
268
|
+
|
|
269
|
+
<StarRating rating={product.rating} reviews={product.reviews} />
|
|
270
|
+
|
|
271
|
+
<div className="flex items-center justify-between mt-4 pt-4 border-t border-border">
|
|
272
|
+
<span className="text-xl font-bold text-primary">${product.price}</span>
|
|
273
|
+
<Button size="sm" className="bg-gradient-to-r from-brand-from to-brand-to text-white hover:brightness-110 active:scale-95 transition-all duration-200 cursor-pointer shadow-sm hover:shadow-md">
|
|
274
|
+
<ShoppingCart className="w-3.5 h-3.5 mr-1.5" />
|
|
275
|
+
Add to Cart
|
|
276
|
+
</Button>
|
|
277
|
+
</div>
|
|
278
|
+
</div>
|
|
279
|
+
</CardContent>
|
|
280
|
+
</Card>
|
|
281
|
+
))}
|
|
282
|
+
</div>
|
|
283
|
+
|
|
284
|
+
<div className="mt-8 text-center sm:hidden">
|
|
285
|
+
<Link href="/products">
|
|
286
|
+
<Button variant="outline" className="hover:bg-accent active:scale-[0.97] transition-all duration-200 cursor-pointer">
|
|
287
|
+
View All Products
|
|
288
|
+
<ArrowRight className="w-4 h-4 ml-2" />
|
|
289
|
+
</Button>
|
|
290
|
+
</Link>
|
|
291
|
+
</div>
|
|
292
|
+
</div>
|
|
293
|
+
</section>
|
|
294
|
+
|
|
295
|
+
{/* Vendor CTA */}
|
|
296
|
+
<section className="max-w-6xl mx-auto px-4 sm:px-6 py-16 sm:py-24">
|
|
297
|
+
<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 hover:shadow-2xl hover:shadow-primary/20 transition-shadow duration-500">
|
|
298
|
+
<div className="grid lg:grid-cols-2 gap-8 items-center">
|
|
299
|
+
<div>
|
|
300
|
+
<h2 className="text-3xl sm:text-4xl font-bold mb-4">Start Selling Today</h2>
|
|
301
|
+
<p className="text-white/80 text-lg mb-6 leading-relaxed">
|
|
302
|
+
Join thousands of vendors earning revenue on our platform.
|
|
303
|
+
Low fees, powerful analytics, and a growing customer base ready to discover your products.
|
|
304
|
+
</p>
|
|
305
|
+
<div className="flex flex-col sm:flex-row gap-3">
|
|
306
|
+
<Link href="/vendors/apply">
|
|
307
|
+
<Button variant="secondary" size="lg" className="w-full sm:w-auto 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">
|
|
308
|
+
Apply as Vendor
|
|
309
|
+
<ArrowRight className="w-4 h-4 ml-2" />
|
|
310
|
+
</Button>
|
|
311
|
+
</Link>
|
|
312
|
+
<Link href="/vendors/learn-more">
|
|
313
|
+
<Button variant="ghost" size="lg" className="w-full sm:w-auto px-8 h-12 text-base text-white hover:bg-white/10 active:scale-[0.97] transition-all duration-200 cursor-pointer">
|
|
314
|
+
Learn More
|
|
315
|
+
</Button>
|
|
316
|
+
</Link>
|
|
317
|
+
</div>
|
|
318
|
+
</div>
|
|
319
|
+
<div className="grid grid-cols-2 gap-4">
|
|
320
|
+
{[
|
|
321
|
+
{ label: 'Active Vendors', value: '2,400+' },
|
|
322
|
+
{ label: 'Products Listed', value: '12,000+' },
|
|
323
|
+
{ label: 'Happy Customers', value: '85,000+' },
|
|
324
|
+
{ label: 'Avg. Vendor Revenue', value: '$3.2k/mo' },
|
|
325
|
+
].map((stat) => (
|
|
326
|
+
<div key={stat.label} className="rounded-xl bg-white/10 backdrop-blur-sm p-4 text-center hover:bg-white/15 transition-colors duration-200">
|
|
327
|
+
<div className="text-2xl sm:text-3xl font-bold mb-1">{stat.value}</div>
|
|
328
|
+
<div className="text-sm text-white/70">{stat.label}</div>
|
|
329
|
+
</div>
|
|
330
|
+
))}
|
|
331
|
+
</div>
|
|
332
|
+
</div>
|
|
333
|
+
</div>
|
|
334
|
+
</section>
|
|
335
|
+
|
|
336
|
+
{/* Footer */}
|
|
337
|
+
<footer className="border-t border-border">
|
|
338
|
+
<div className="max-w-6xl mx-auto px-4 sm:px-6 py-8">
|
|
339
|
+
<div className="flex flex-col sm:flex-row items-center justify-between gap-6">
|
|
340
|
+
<Link href="/" className="flex items-center gap-2 hover:opacity-80 active:scale-[0.97] transition-all duration-200">
|
|
341
|
+
<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">
|
|
342
|
+
<Store className="w-3 h-3 text-white" />
|
|
343
|
+
</div>
|
|
344
|
+
<span className="text-sm font-medium">{'{{titleCaseName}}'}</span>
|
|
345
|
+
</Link>
|
|
346
|
+
<nav className="flex items-center gap-6">
|
|
347
|
+
<Link href="/products" className="text-sm text-muted-foreground hover:text-foreground transition-colors">
|
|
348
|
+
Products
|
|
349
|
+
</Link>
|
|
350
|
+
<Link href="/vendors" className="text-sm text-muted-foreground hover:text-foreground transition-colors">
|
|
351
|
+
Vendors
|
|
352
|
+
</Link>
|
|
353
|
+
<Link href="/contact" className="text-sm text-muted-foreground hover:text-foreground transition-colors">
|
|
354
|
+
Contact
|
|
355
|
+
</Link>
|
|
356
|
+
<Link href="/login" className="text-sm text-muted-foreground hover:text-foreground transition-colors">
|
|
357
|
+
Sign In
|
|
358
|
+
</Link>
|
|
359
|
+
</nav>
|
|
360
|
+
</div>
|
|
361
|
+
<div className="mt-6 pt-6 border-t border-border text-center">
|
|
362
|
+
<p className="text-xs text-muted-foreground">
|
|
363
|
+
Built with DLL Platform. Ship fast, own everything.
|
|
364
|
+
</p>
|
|
365
|
+
</div>
|
|
366
|
+
</div>
|
|
367
|
+
</footer>
|
|
368
|
+
</main>
|
|
369
|
+
)
|
|
370
|
+
}
|