@digilogiclabs/create-saas-app 1.5.3 → 1.6.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/CHANGELOG.md +109 -49
- package/bin/index.js +1 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/templates/mobile/base/template/App.tsx +113 -23
- package/dist/templates/mobile/base/template/package.json +41 -38
- package/dist/templates/web/base/template/package.json +2 -2
- package/dist/templates/web/base/template/src/app/checkout/page.tsx +99 -8
- package/dist/templates/web/base/template/src/app/dashboard/page.tsx +309 -0
- package/dist/templates/web/base/template/src/app/globals.css +97 -0
- package/dist/templates/web/base/template/src/app/login/page.tsx +36 -8
- package/dist/templates/web/base/template/src/app/page.tsx +123 -83
- package/dist/templates/web/base/template/src/app/signup/page.tsx +36 -8
- package/dist/templates/web/base/template/src/components/shared/header.tsx +49 -30
- package/dist/templates/web/ui-auth/template/package.json +3 -3
- package/dist/templates/web/ui-auth/template/src/app/page.tsx +203 -61
- package/dist/templates/web/ui-auth-payments/template/package.json +3 -3
- package/dist/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +253 -87
- package/dist/templates/web/ui-auth-payments/template/src/app/globals.css +129 -0
- package/dist/templates/web/ui-auth-payments/template/src/app/page.tsx +246 -74
- package/dist/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +106 -40
- package/dist/templates/web/ui-auth-payments-audio/template/package.json +3 -3
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +221 -82
- package/dist/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +132 -40
- package/dist/templates/web/ui-auth-payments-video/template/package.json +3 -3
- package/dist/templates/web/ui-auth-payments-video/template/src/app/globals.css +146 -0
- package/dist/templates/web/ui-auth-payments-video/template/src/app/page.tsx +259 -85
- package/dist/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +133 -41
- package/dist/templates/web/ui-only/template/package.json +1 -1
- package/package.json +106 -106
- package/src/templates/mobile/base/template/App.tsx +113 -23
- package/src/templates/mobile/base/template/package.json +41 -38
- package/src/templates/web/base/template/package.json +2 -2
- package/src/templates/web/base/template/src/app/checkout/page.tsx +99 -8
- package/src/templates/web/base/template/src/app/dashboard/page.tsx +309 -0
- package/src/templates/web/base/template/src/app/globals.css +97 -0
- package/src/templates/web/base/template/src/app/login/page.tsx +36 -8
- package/src/templates/web/base/template/src/app/page.tsx +123 -83
- package/src/templates/web/base/template/src/app/signup/page.tsx +36 -8
- package/src/templates/web/base/template/src/components/shared/header.tsx +49 -30
- package/src/templates/web/ui-auth/template/package.json +3 -3
- package/src/templates/web/ui-auth/template/src/app/page.tsx +203 -61
- package/src/templates/web/ui-auth-payments/template/package.json +3 -3
- package/src/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +253 -87
- package/src/templates/web/ui-auth-payments/template/src/app/globals.css +129 -0
- package/src/templates/web/ui-auth-payments/template/src/app/page.tsx +246 -74
- package/src/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +106 -40
- package/src/templates/web/ui-auth-payments-audio/template/package.json +3 -3
- package/src/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +221 -82
- package/src/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +132 -40
- package/src/templates/web/ui-auth-payments-video/template/package.json +3 -3
- package/src/templates/web/ui-auth-payments-video/template/src/app/globals.css +146 -0
- package/src/templates/web/ui-auth-payments-video/template/src/app/page.tsx +259 -85
- package/src/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +133 -41
- package/src/templates/web/ui-only/template/package.json +1 -1
- package/dist/index.js +0 -1173
- package/dist/index.js.map +0 -1
|
@@ -5,97 +5,136 @@ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/com
|
|
|
5
5
|
import { Badge } from '@/components/ui/badge'
|
|
6
6
|
import { ArrowRight, Zap, Shield, Rocket, LogOut } from 'lucide-react'
|
|
7
7
|
import { useAuth } from '@digilogiclabs/saas-factory-auth'
|
|
8
|
+
import {
|
|
9
|
+
MobileHero,
|
|
10
|
+
LazyImage,
|
|
11
|
+
ProgressiveImage,
|
|
12
|
+
NetworkAwareContent,
|
|
13
|
+
PageTransition,
|
|
14
|
+
ResponsiveGrid,
|
|
15
|
+
MobileContainer
|
|
16
|
+
} from '@digilogiclabs/saas-factory-ui'
|
|
8
17
|
import Link from 'next/link'
|
|
9
18
|
|
|
10
19
|
export default function Home() {
|
|
11
20
|
const { user, signOut } = useAuth()
|
|
12
21
|
|
|
13
22
|
return (
|
|
14
|
-
<
|
|
15
|
-
<
|
|
23
|
+
<PageTransition type="fade" duration={300}>
|
|
24
|
+
<main className="min-h-screen bg-gradient-to-br from-blue-50 to-indigo-100 dark:from-gray-900 dark:to-gray-800">
|
|
25
|
+
<MobileContainer className="py-16">
|
|
16
26
|
{/* Hero Section */}
|
|
17
|
-
<
|
|
18
|
-
|
|
19
|
-
Built with Digi Logic Labs
|
|
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
|
-
|
|
27
|
+
<MobileHero
|
|
28
|
+
badge={{
|
|
29
|
+
text: "Built with Digi Logic Labs",
|
|
30
|
+
variant: "secondary"
|
|
31
|
+
}}
|
|
32
|
+
title={{
|
|
33
|
+
text: "Welcome to {{titleCaseName}}",
|
|
34
|
+
highlight: "{{titleCaseName}}",
|
|
35
|
+
size: "xl"
|
|
36
|
+
}}
|
|
37
|
+
description="{{description}}. Get started by editing src/app/page.tsx"
|
|
38
|
+
actions={!user ? [
|
|
39
|
+
{
|
|
40
|
+
label: "Get Started",
|
|
41
|
+
href: "/signup",
|
|
42
|
+
icon: ArrowRight,
|
|
43
|
+
variant: "default",
|
|
44
|
+
size: "lg"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
label: "Learn More",
|
|
48
|
+
href: "/login",
|
|
49
|
+
variant: "outline",
|
|
50
|
+
size: "lg"
|
|
51
|
+
}
|
|
52
|
+
] : [
|
|
53
|
+
{
|
|
54
|
+
label: "Go to Dashboard",
|
|
55
|
+
href: "/dashboard",
|
|
56
|
+
icon: ArrowRight,
|
|
57
|
+
variant: "default",
|
|
58
|
+
size: "lg"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
label: "Sign Out",
|
|
62
|
+
onClick: signOut,
|
|
63
|
+
icon: LogOut,
|
|
64
|
+
variant: "outline",
|
|
65
|
+
size: "lg"
|
|
66
|
+
}
|
|
67
|
+
]}
|
|
68
|
+
className="text-center mb-16"
|
|
69
|
+
/>
|
|
60
70
|
|
|
61
71
|
{/* Features Grid */}
|
|
62
|
-
<
|
|
63
|
-
|
|
64
|
-
<
|
|
65
|
-
<
|
|
66
|
-
<
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
<NetworkAwareContent
|
|
73
|
+
showOnSlow={
|
|
74
|
+
<ResponsiveGrid columns={{ base: 1, md: 2 }} gap="md" className="mb-16">
|
|
75
|
+
<Card className="text-center">
|
|
76
|
+
<CardHeader>
|
|
77
|
+
<div className="mx-auto w-12 h-12 bg-blue-100 dark:bg-blue-900 rounded-lg flex items-center justify-center mb-4">
|
|
78
|
+
<Zap className="h-6 w-6 text-blue-600 dark:text-blue-400" />
|
|
79
|
+
</div>
|
|
80
|
+
<CardTitle>Lightning Fast</CardTitle>
|
|
81
|
+
<CardDescription>
|
|
82
|
+
Built with Next.js 15 and optimized for performance
|
|
83
|
+
</CardDescription>
|
|
84
|
+
</CardHeader>
|
|
85
|
+
</Card>
|
|
86
|
+
<Card className="text-center">
|
|
87
|
+
<CardHeader>
|
|
88
|
+
<div className="mx-auto w-12 h-12 bg-green-100 dark:bg-green-900 rounded-lg flex items-center justify-center mb-4">
|
|
89
|
+
<Shield className="h-6 w-6 text-green-600 dark:text-green-400" />
|
|
90
|
+
</div>
|
|
91
|
+
<CardTitle>Secure by Default</CardTitle>
|
|
92
|
+
<CardDescription>
|
|
93
|
+
{{#auth}}{{#firebase}}Firebase{{/firebase}}{{#supabase}}Supabase{{/supabase}}{{/auth}} authentication and security best practices
|
|
94
|
+
</CardDescription>
|
|
95
|
+
</CardHeader>
|
|
96
|
+
</Card>
|
|
97
|
+
</ResponsiveGrid>
|
|
98
|
+
}
|
|
99
|
+
>
|
|
100
|
+
<ResponsiveGrid columns={{ base: 1, md: 3 }} gap="lg" className="mb-16">
|
|
101
|
+
<Card className="text-center">
|
|
102
|
+
<CardHeader>
|
|
103
|
+
<div className="mx-auto w-12 h-12 bg-blue-100 dark:bg-blue-900 rounded-lg flex items-center justify-center mb-4">
|
|
104
|
+
<Zap className="h-6 w-6 text-blue-600 dark:text-blue-400" />
|
|
105
|
+
</div>
|
|
106
|
+
<CardTitle>Lightning Fast</CardTitle>
|
|
107
|
+
<CardDescription>
|
|
108
|
+
Built with Next.js 15 and optimized for performance
|
|
109
|
+
</CardDescription>
|
|
110
|
+
</CardHeader>
|
|
111
|
+
</Card>
|
|
74
112
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
113
|
+
<Card className="text-center">
|
|
114
|
+
<CardHeader>
|
|
115
|
+
<div className="mx-auto w-12 h-12 bg-green-100 dark:bg-green-900 rounded-lg flex items-center justify-center mb-4">
|
|
116
|
+
<Shield className="h-6 w-6 text-green-600 dark:text-green-400" />
|
|
117
|
+
</div>
|
|
118
|
+
<CardTitle>Secure by Default</CardTitle>
|
|
119
|
+
<CardDescription>
|
|
120
|
+
{{#auth}}{{#firebase}}Firebase{{/firebase}}{{#supabase}}Supabase{{/supabase}}{{/auth}} authentication and security best practices
|
|
121
|
+
</CardDescription>
|
|
122
|
+
</CardHeader>
|
|
123
|
+
</Card>
|
|
86
124
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
125
|
+
<Card className="text-center">
|
|
126
|
+
<CardHeader>
|
|
127
|
+
<div className="mx-auto w-12 h-12 bg-purple-100 dark:bg-purple-900 rounded-lg flex items-center justify-center mb-4">
|
|
128
|
+
<Rocket className="h-6 w-6 text-purple-600 dark:text-purple-400" />
|
|
129
|
+
</div>
|
|
130
|
+
<CardTitle>Ready to Scale</CardTitle>
|
|
131
|
+
<CardDescription>
|
|
132
|
+
Production-ready with TypeScript, Tailwind CSS, and modern tooling
|
|
133
|
+
</CardDescription>
|
|
134
|
+
</CardHeader>
|
|
135
|
+
</Card>
|
|
136
|
+
</ResponsiveGrid>
|
|
137
|
+
</NetworkAwareContent>
|
|
99
138
|
|
|
100
139
|
{/* Tech Stack */}
|
|
101
140
|
<Card className="max-w-4xl mx-auto">
|
|
@@ -108,7 +147,7 @@ export default function Home() {
|
|
|
108
147
|
<CardContent>
|
|
109
148
|
<div className="grid grid-cols-2 md:grid-cols-4 gap-4 text-center">
|
|
110
149
|
<div className="p-4">
|
|
111
|
-
<div className="font-semibold">Next.js
|
|
150
|
+
<div className="font-semibold">Next.js 15</div>
|
|
112
151
|
<div className="text-sm text-gray-600 dark:text-gray-400">React Framework</div>
|
|
113
152
|
</div>
|
|
114
153
|
<div className="p-4">
|
|
@@ -126,7 +165,8 @@ export default function Home() {
|
|
|
126
165
|
</div>
|
|
127
166
|
</CardContent>
|
|
128
167
|
</Card>
|
|
129
|
-
|
|
130
|
-
|
|
168
|
+
</MobileContainer>
|
|
169
|
+
</main>
|
|
170
|
+
</PageTransition>
|
|
131
171
|
)
|
|
132
172
|
}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
SignupForm,
|
|
5
|
+
PageTransition,
|
|
6
|
+
MobileContainer,
|
|
7
|
+
NetworkAwareContent,
|
|
8
|
+
OfflineWrapper
|
|
9
|
+
} from '@digilogiclabs/saas-factory-ui';
|
|
4
10
|
import { AuthProvider } from '@digilogiclabs/saas-factory-auth';
|
|
5
11
|
import { createBrowserClient } from '@supabase/ssr';
|
|
6
12
|
import React from 'react';
|
|
@@ -28,12 +34,34 @@ export default function SignupPage() {
|
|
|
28
34
|
};
|
|
29
35
|
|
|
30
36
|
return (
|
|
31
|
-
<
|
|
32
|
-
<
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
<PageTransition type="slide" direction="horizontal" duration={300}>
|
|
38
|
+
<OfflineWrapper
|
|
39
|
+
cacheStrategy="network-first"
|
|
40
|
+
showOfflineIndicator={true}
|
|
41
|
+
>
|
|
42
|
+
<NetworkAwareContent
|
|
43
|
+
showOnOffline={
|
|
44
|
+
<div className="flex items-center justify-center min-h-screen bg-gray-100">
|
|
45
|
+
<div className="text-center p-6">
|
|
46
|
+
<h2 className="text-xl font-semibold mb-2">You're offline</h2>
|
|
47
|
+
<p className="text-gray-600">Please check your connection to sign up.</p>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
}
|
|
51
|
+
>
|
|
52
|
+
<div className="flex items-center justify-center min-h-screen bg-gray-100">
|
|
53
|
+
<MobileContainer className="w-full max-w-md">
|
|
54
|
+
<SignupForm
|
|
55
|
+
onSubmit={handleSignup}
|
|
56
|
+
onGoogleSignIn={handleGoogleSignup}
|
|
57
|
+
authProvider={AuthProvider.SUPABASE}
|
|
58
|
+
mobileOptimized={true}
|
|
59
|
+
touchFriendly={true}
|
|
60
|
+
/>
|
|
61
|
+
</MobileContainer>
|
|
62
|
+
</div>
|
|
63
|
+
</NetworkAwareContent>
|
|
64
|
+
</OfflineWrapper>
|
|
65
|
+
</PageTransition>
|
|
38
66
|
);
|
|
39
67
|
}
|
|
@@ -5,40 +5,59 @@ import Link from 'next/link';
|
|
|
5
5
|
import { useAuth } from '@digilogiclabs/saas-factory-auth';
|
|
6
6
|
import { Button } from '@/components/ui/button';
|
|
7
7
|
import { ThemeToggle } from '@/components/ui/theme-toggle';
|
|
8
|
-
import {
|
|
8
|
+
import { ResponsiveHeader, MobileNavigation } from '@digilogiclabs/saas-factory-ui';
|
|
9
|
+
import { LogOut, Menu, User, Settings } from 'lucide-react';
|
|
9
10
|
|
|
10
11
|
export function Header() {
|
|
11
12
|
const { user, signOut } = useAuth();
|
|
12
13
|
|
|
14
|
+
const navigationItems = [
|
|
15
|
+
{
|
|
16
|
+
label: 'Dashboard',
|
|
17
|
+
href: '/dashboard',
|
|
18
|
+
icon: User,
|
|
19
|
+
protected: true
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
label: 'Settings',
|
|
23
|
+
href: '/settings',
|
|
24
|
+
icon: Settings,
|
|
25
|
+
protected: true
|
|
26
|
+
}
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
const authActions = user ? [
|
|
30
|
+
{
|
|
31
|
+
label: 'Sign Out',
|
|
32
|
+
icon: LogOut,
|
|
33
|
+
onClick: signOut,
|
|
34
|
+
variant: 'ghost' as const
|
|
35
|
+
}
|
|
36
|
+
] : [
|
|
37
|
+
{
|
|
38
|
+
label: 'Login',
|
|
39
|
+
href: '/login',
|
|
40
|
+
variant: 'ghost' as const
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
label: 'Sign Up',
|
|
44
|
+
href: '/signup',
|
|
45
|
+
variant: 'default' as const
|
|
46
|
+
}
|
|
47
|
+
];
|
|
48
|
+
|
|
13
49
|
return (
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
<Button variant="ghost" size="icon" onClick={signOut}>
|
|
27
|
-
<LogOut className="h-5 w-5" />
|
|
28
|
-
</Button>
|
|
29
|
-
</>
|
|
30
|
-
) : (
|
|
31
|
-
<>
|
|
32
|
-
<Link href="/login" className="text-gray-600 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white">
|
|
33
|
-
Login
|
|
34
|
-
</Link>
|
|
35
|
-
<Button asChild>
|
|
36
|
-
<Link href="/signup">Sign Up</Link>
|
|
37
|
-
</Button>
|
|
38
|
-
</>
|
|
39
|
-
)}
|
|
40
|
-
</nav>
|
|
41
|
-
</div>
|
|
42
|
-
</header>
|
|
50
|
+
<ResponsiveHeader
|
|
51
|
+
logo={{
|
|
52
|
+
text: '{{titleCaseName}}',
|
|
53
|
+
href: '/'
|
|
54
|
+
}}
|
|
55
|
+
navigationItems={navigationItems}
|
|
56
|
+
actions={authActions}
|
|
57
|
+
showThemeToggle={true}
|
|
58
|
+
user={user}
|
|
59
|
+
mobileBreakpoint="md"
|
|
60
|
+
className="bg-white dark:bg-gray-800 shadow-md"
|
|
61
|
+
/>
|
|
43
62
|
);
|
|
44
63
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "{{packageName}}",
|
|
3
3
|
"version": "0.1.0",
|
|
4
|
-
"description": "{{description}} (with UI Package v0.
|
|
4
|
+
"description": "{{description}} (with UI Package v0.13.0 + Auth v1.0.0)",
|
|
5
5
|
"private": true,
|
|
6
6
|
"scripts": {
|
|
7
|
-
"dev": "next dev
|
|
7
|
+
"dev": "next dev",
|
|
8
8
|
"build": "next build",
|
|
9
9
|
"start": "next start",
|
|
10
10
|
"lint": "next lint",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"next": "^15.0.0",
|
|
18
18
|
"react": "^19.0.0",
|
|
19
19
|
"react-dom": "^19.0.0",
|
|
20
|
-
"@digilogiclabs/saas-factory-ui": "^0.
|
|
20
|
+
"@digilogiclabs/saas-factory-ui": "^0.13.0",
|
|
21
21
|
"@digilogiclabs/saas-factory-auth": "^1.0.0",
|
|
22
22
|
"tailwindcss": "^3.3.0",
|
|
23
23
|
"autoprefixer": "^10.4.16",
|