@digilogiclabs/create-saas-app 1.6.3 → 1.6.5
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/templates/web/base/template/src/app/page.tsx +19 -10
- package/dist/templates/web/ui-auth/template/src/app/page.tsx +20 -11
- package/dist/templates/web/ui-auth-payments/template/src/app/page.tsx +20 -11
- package/dist/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +17 -10
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +17 -11
- package/dist/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +20 -15
- package/dist/templates/web/ui-auth-payments-video/template/src/app/page.tsx +20 -11
- package/dist/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +22 -15
- package/package.json +1 -1
- package/src/templates/web/base/template/src/app/page.tsx +19 -10
- package/src/templates/web/ui-auth/template/src/app/page.tsx +20 -11
- package/src/templates/web/ui-auth-payments/template/src/app/page.tsx +20 -11
- package/src/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +17 -10
- package/src/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +17 -11
- package/src/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +20 -15
- package/src/templates/web/ui-auth-payments-video/template/src/app/page.tsx +20 -11
- package/src/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +22 -15
|
@@ -22,6 +22,23 @@ export default function Home() {
|
|
|
22
22
|
const networkInfo = useNetworkInfo()
|
|
23
23
|
const isOnline = useOfflineState()
|
|
24
24
|
|
|
25
|
+
const projectName = "{{titleCaseName}}"
|
|
26
|
+
const projectDescription = "{{description}}"
|
|
27
|
+
|
|
28
|
+
const heroConfig = {
|
|
29
|
+
badge: {
|
|
30
|
+
text: "UI Package v0.13.0 + Auth v1.0.0 - Cross-Device Ready",
|
|
31
|
+
variant: "secondary" as const,
|
|
32
|
+
icon: CheckCircle
|
|
33
|
+
},
|
|
34
|
+
title: {
|
|
35
|
+
text: `Welcome to ${projectName}`,
|
|
36
|
+
highlight: projectName,
|
|
37
|
+
size: "xl" as const
|
|
38
|
+
},
|
|
39
|
+
description: `${projectDescription}. This mobile-optimized template uses SaaS Factory UI package v0.13.0 with cross-device authentication v1.0.0.`
|
|
40
|
+
}
|
|
41
|
+
|
|
25
42
|
const handleSignOut = async () => {
|
|
26
43
|
try {
|
|
27
44
|
await signOut()
|
|
@@ -87,17 +104,9 @@ export default function Home() {
|
|
|
87
104
|
|
|
88
105
|
{/* Hero Section */}
|
|
89
106
|
<MobileHero
|
|
90
|
-
badge={
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
icon: CheckCircle
|
|
94
|
-
}}
|
|
95
|
-
title={{
|
|
96
|
-
text: "Welcome to {{titleCaseName}}",
|
|
97
|
-
highlight: "{{titleCaseName}}",
|
|
98
|
-
size: "xl"
|
|
99
|
-
}}
|
|
100
|
-
description="{{description}}. This mobile-optimized template uses SaaS Factory UI package v0.13.0 with cross-device authentication v1.0.0."
|
|
107
|
+
badge={heroConfig.badge}
|
|
108
|
+
title={heroConfig.title}
|
|
109
|
+
description={heroConfig.description}
|
|
101
110
|
actions={[
|
|
102
111
|
{
|
|
103
112
|
label: "Get Started",
|
|
@@ -25,6 +25,23 @@ export default function Home() {
|
|
|
25
25
|
const networkInfo = useNetworkInfo()
|
|
26
26
|
const isOnline = useOfflineState()
|
|
27
27
|
const [isRefreshing, setIsRefreshing] = useState(false)
|
|
28
|
+
|
|
29
|
+
const projectName = "{{titleCaseName}}"
|
|
30
|
+
const projectDescription = "{{description}}"
|
|
31
|
+
|
|
32
|
+
const heroConfig = {
|
|
33
|
+
badge: {
|
|
34
|
+
text: "UI Package v0.13.0 + Auth v1.0.0 + Payments - Mobile-First Ready",
|
|
35
|
+
variant: "secondary" as const,
|
|
36
|
+
icon: CheckCircle
|
|
37
|
+
},
|
|
38
|
+
title: {
|
|
39
|
+
text: `Welcome to ${projectName}`,
|
|
40
|
+
highlight: projectName,
|
|
41
|
+
size: "xl" as const
|
|
42
|
+
},
|
|
43
|
+
description: `${projectDescription}. This mobile-optimized template uses SaaS Factory UI package v0.13.0 with cross-device authentication v1.0.0 and touch-friendly payments integration.`
|
|
44
|
+
}
|
|
28
45
|
|
|
29
46
|
const handleSignOut = async () => {
|
|
30
47
|
try {
|
|
@@ -105,17 +122,9 @@ export default function Home() {
|
|
|
105
122
|
|
|
106
123
|
{/* Hero Section */}
|
|
107
124
|
<MobileHero
|
|
108
|
-
badge={
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
icon: CheckCircle
|
|
112
|
-
}}
|
|
113
|
-
title={{
|
|
114
|
-
text: "Welcome to {{titleCaseName}}",
|
|
115
|
-
highlight: "{{titleCaseName}}",
|
|
116
|
-
size: "xl"
|
|
117
|
-
}}
|
|
118
|
-
description="{{description}}. This mobile-optimized template uses SaaS Factory UI package v0.13.0 with cross-device authentication v1.0.0 and touch-friendly payments integration."
|
|
125
|
+
badge={heroConfig.badge}
|
|
126
|
+
title={heroConfig.title}
|
|
127
|
+
description={heroConfig.description}
|
|
119
128
|
actions={[
|
|
120
129
|
{
|
|
121
130
|
label: "View Pricing",
|
|
@@ -18,6 +18,21 @@ export function Header() {
|
|
|
18
18
|
const networkInfo = useNetworkInfo();
|
|
19
19
|
const isOnline = useOfflineState();
|
|
20
20
|
|
|
21
|
+
const projectName = "{{titleCaseName}}";
|
|
22
|
+
|
|
23
|
+
const headerConfig = {
|
|
24
|
+
logo: {
|
|
25
|
+
text: projectName,
|
|
26
|
+
href: '/',
|
|
27
|
+
className: 'text-2xl font-bold'
|
|
28
|
+
},
|
|
29
|
+
networkStatus: {
|
|
30
|
+
isOnline,
|
|
31
|
+
connectionType: networkInfo?.effectiveType,
|
|
32
|
+
showIndicator: true
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
|
|
21
36
|
const handleSignOut = async () => {
|
|
22
37
|
try {
|
|
23
38
|
await signOut();
|
|
@@ -98,11 +113,7 @@ export function Header() {
|
|
|
98
113
|
)}
|
|
99
114
|
|
|
100
115
|
<ResponsiveHeader
|
|
101
|
-
logo={
|
|
102
|
-
text: '{{titleCaseName}}',
|
|
103
|
-
href: '/',
|
|
104
|
-
className: 'text-2xl font-bold'
|
|
105
|
-
}}
|
|
116
|
+
logo={headerConfig.logo}
|
|
106
117
|
navigationItems={navigationItems}
|
|
107
118
|
actions={authActions}
|
|
108
119
|
showThemeToggle={true}
|
|
@@ -116,11 +127,7 @@ export function Header() {
|
|
|
116
127
|
hapticFeedback={true}
|
|
117
128
|
/>
|
|
118
129
|
}
|
|
119
|
-
networkStatus={
|
|
120
|
-
isOnline,
|
|
121
|
-
connectionType: networkInfo?.effectiveType,
|
|
122
|
-
showIndicator: true
|
|
123
|
-
}}
|
|
130
|
+
networkStatus={headerConfig.networkStatus}
|
|
124
131
|
/>
|
|
125
132
|
</>
|
|
126
133
|
);
|
|
@@ -28,6 +28,20 @@ export default function Home() {
|
|
|
28
28
|
|
|
29
29
|
const projectName = "{{titleCaseName}}"
|
|
30
30
|
const projectDescription = "{{description}}"
|
|
31
|
+
|
|
32
|
+
const heroConfig = {
|
|
33
|
+
badge: {
|
|
34
|
+
text: "Audio Player App - UI Package v0.13.0 + Auth v1.0.0 + Payments Integrated Successfully",
|
|
35
|
+
variant: "secondary" as const,
|
|
36
|
+
icon: CheckCircle
|
|
37
|
+
},
|
|
38
|
+
title: {
|
|
39
|
+
text: `Welcome to ${projectName}`,
|
|
40
|
+
highlight: projectName,
|
|
41
|
+
size: "xl" as const
|
|
42
|
+
},
|
|
43
|
+
description: `${projectDescription}. This mobile-optimized audio streaming app template uses SaaS Factory UI package v0.13.0 with touch-friendly audio player components, authentication v1.0.0 and payments integration.`
|
|
44
|
+
}
|
|
31
45
|
|
|
32
46
|
const handleSignOut = async () => {
|
|
33
47
|
try {
|
|
@@ -108,17 +122,9 @@ export default function Home() {
|
|
|
108
122
|
|
|
109
123
|
{/* Hero Section */}
|
|
110
124
|
<MobileHero
|
|
111
|
-
badge={
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
icon: CheckCircle
|
|
115
|
-
}}
|
|
116
|
-
title={{
|
|
117
|
-
text: `Welcome to ${projectName}`,
|
|
118
|
-
highlight: projectName,
|
|
119
|
-
size: "xl"
|
|
120
|
-
}}
|
|
121
|
-
description={`${projectDescription}. This mobile-optimized audio streaming app template uses SaaS Factory UI package v0.13.0 with touch-friendly audio player components, authentication v1.0.0 and payments integration.`}
|
|
125
|
+
badge={heroConfig.badge}
|
|
126
|
+
title={heroConfig.title}
|
|
127
|
+
description={heroConfig.description}
|
|
122
128
|
actions={[
|
|
123
129
|
{
|
|
124
130
|
label: "View Pricing",
|
|
@@ -20,6 +20,24 @@ export function Header() {
|
|
|
20
20
|
|
|
21
21
|
const projectName = "{{titleCaseName}}";
|
|
22
22
|
|
|
23
|
+
const headerConfig = {
|
|
24
|
+
logo: {
|
|
25
|
+
text: projectName,
|
|
26
|
+
href: '/',
|
|
27
|
+
className: 'text-2xl font-bold flex items-center gap-2',
|
|
28
|
+
icon: <Music className="w-6 h-6" />
|
|
29
|
+
},
|
|
30
|
+
networkStatus: {
|
|
31
|
+
isOnline,
|
|
32
|
+
connectionType: networkInfo?.effectiveType,
|
|
33
|
+
showIndicator: true,
|
|
34
|
+
customLabels: {
|
|
35
|
+
online: 'Streaming Ready',
|
|
36
|
+
offline: 'Offline Mode'
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
23
41
|
const handleSignOut = async () => {
|
|
24
42
|
try {
|
|
25
43
|
await signOut();
|
|
@@ -121,12 +139,7 @@ export function Header() {
|
|
|
121
139
|
)}
|
|
122
140
|
|
|
123
141
|
<ResponsiveHeader
|
|
124
|
-
logo={
|
|
125
|
-
text: projectName,
|
|
126
|
-
href: '/',
|
|
127
|
-
className: 'text-2xl font-bold flex items-center gap-2',
|
|
128
|
-
icon: <Music className="w-6 h-6" />
|
|
129
|
-
}}
|
|
142
|
+
logo={headerConfig.logo}
|
|
130
143
|
navigationItems={navigationItems}
|
|
131
144
|
actions={authActions}
|
|
132
145
|
showThemeToggle={true}
|
|
@@ -140,15 +153,7 @@ export function Header() {
|
|
|
140
153
|
hapticFeedback={true}
|
|
141
154
|
/>
|
|
142
155
|
}
|
|
143
|
-
networkStatus={
|
|
144
|
-
isOnline,
|
|
145
|
-
connectionType: networkInfo?.effectiveType,
|
|
146
|
-
showIndicator: true,
|
|
147
|
-
customLabels: {
|
|
148
|
-
online: 'Streaming Ready',
|
|
149
|
-
offline: 'Offline Mode'
|
|
150
|
-
}
|
|
151
|
-
}}
|
|
156
|
+
networkStatus={headerConfig.networkStatus}
|
|
152
157
|
/>
|
|
153
158
|
</>
|
|
154
159
|
);
|
|
@@ -26,6 +26,23 @@ export default function Home() {
|
|
|
26
26
|
const networkInfo = useNetworkInfo()
|
|
27
27
|
const isOnline = useOfflineState()
|
|
28
28
|
const [isRefreshing, setIsRefreshing] = useState(false)
|
|
29
|
+
|
|
30
|
+
const projectName = "{{titleCaseName}}"
|
|
31
|
+
const projectDescription = "{{description}}"
|
|
32
|
+
|
|
33
|
+
const heroConfig = {
|
|
34
|
+
badge: {
|
|
35
|
+
text: "Video Player App - UI Package v0.13.0 + Auth v1.0.0 + Payments Integrated Successfully",
|
|
36
|
+
variant: "secondary" as const,
|
|
37
|
+
icon: CheckCircle
|
|
38
|
+
},
|
|
39
|
+
title: {
|
|
40
|
+
text: `Welcome to ${projectName}`,
|
|
41
|
+
highlight: projectName,
|
|
42
|
+
size: "xl" as const
|
|
43
|
+
},
|
|
44
|
+
description: `${projectDescription}. This mobile-optimized video streaming app template uses SaaS Factory UI package v0.13.0 with video player components, authentication v1.0.0 and payments integration.`
|
|
45
|
+
}
|
|
29
46
|
|
|
30
47
|
const handleSignOut = async () => {
|
|
31
48
|
try {
|
|
@@ -108,17 +125,9 @@ export default function Home() {
|
|
|
108
125
|
</div>
|
|
109
126
|
|
|
110
127
|
<MobileHero
|
|
111
|
-
badge={
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
icon: CheckCircle
|
|
115
|
-
}}
|
|
116
|
-
title={{
|
|
117
|
-
text: "Welcome to {{titleCaseName}}",
|
|
118
|
-
highlight: "{{titleCaseName}}",
|
|
119
|
-
size: "xl"
|
|
120
|
-
}}
|
|
121
|
-
description="{{description}}. This mobile-first video streaming app template uses SaaS Factory UI package v0.13.0 with touch-optimized video player components, authentication v1.0.0 and payments integration."
|
|
128
|
+
badge={heroConfig.badge}
|
|
129
|
+
title={heroConfig.title}
|
|
130
|
+
description={heroConfig.description}
|
|
122
131
|
actions={[
|
|
123
132
|
{
|
|
124
133
|
label: "Start Watching",
|
|
@@ -18,6 +18,26 @@ export function Header() {
|
|
|
18
18
|
const networkInfo = useNetworkInfo();
|
|
19
19
|
const isOnline = useOfflineState();
|
|
20
20
|
|
|
21
|
+
const projectName = "{{titleCaseName}}";
|
|
22
|
+
|
|
23
|
+
const headerConfig = {
|
|
24
|
+
logo: {
|
|
25
|
+
text: projectName,
|
|
26
|
+
href: '/',
|
|
27
|
+
className: 'text-2xl font-bold flex items-center gap-2',
|
|
28
|
+
icon: <Play className="w-6 h-6" />
|
|
29
|
+
},
|
|
30
|
+
networkStatus: {
|
|
31
|
+
isOnline,
|
|
32
|
+
connectionType: networkInfo?.effectiveType,
|
|
33
|
+
showIndicator: true,
|
|
34
|
+
customLabels: {
|
|
35
|
+
online: 'Streaming Ready',
|
|
36
|
+
offline: 'Offline Mode'
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
21
41
|
const handleSignOut = async () => {
|
|
22
42
|
try {
|
|
23
43
|
await signOut();
|
|
@@ -119,12 +139,7 @@ export function Header() {
|
|
|
119
139
|
)}
|
|
120
140
|
|
|
121
141
|
<ResponsiveHeader
|
|
122
|
-
logo={
|
|
123
|
-
text: '{{titleCaseName}}',
|
|
124
|
-
href: '/',
|
|
125
|
-
className: 'text-2xl font-bold flex items-center gap-2',
|
|
126
|
-
icon: <Play className="w-6 h-6" />
|
|
127
|
-
}}
|
|
142
|
+
logo={headerConfig.logo}
|
|
128
143
|
navigationItems={navigationItems}
|
|
129
144
|
actions={authActions}
|
|
130
145
|
showThemeToggle={true}
|
|
@@ -138,15 +153,7 @@ export function Header() {
|
|
|
138
153
|
hapticFeedback={true}
|
|
139
154
|
/>
|
|
140
155
|
}
|
|
141
|
-
networkStatus={
|
|
142
|
-
isOnline,
|
|
143
|
-
connectionType: networkInfo?.effectiveType,
|
|
144
|
-
showIndicator: true,
|
|
145
|
-
customLabels: {
|
|
146
|
-
online: 'Streaming Ready',
|
|
147
|
-
offline: 'Offline Mode'
|
|
148
|
-
}
|
|
149
|
-
}}
|
|
156
|
+
networkStatus={headerConfig.networkStatus}
|
|
150
157
|
/>
|
|
151
158
|
</>
|
|
152
159
|
);
|
package/package.json
CHANGED
|
@@ -18,6 +18,22 @@ import Link from 'next/link'
|
|
|
18
18
|
|
|
19
19
|
export default function Home() {
|
|
20
20
|
const { user, signOut } = useAuth()
|
|
21
|
+
|
|
22
|
+
const projectName = "{{titleCaseName}}"
|
|
23
|
+
const projectDescription = "{{description}}"
|
|
24
|
+
|
|
25
|
+
const heroConfig = {
|
|
26
|
+
badge: {
|
|
27
|
+
text: "Built with Digi Logic Labs",
|
|
28
|
+
variant: "secondary" as const
|
|
29
|
+
},
|
|
30
|
+
title: {
|
|
31
|
+
text: `Welcome to ${projectName}`,
|
|
32
|
+
highlight: projectName,
|
|
33
|
+
size: "xl" as const
|
|
34
|
+
},
|
|
35
|
+
description: `${projectDescription}. Get started by editing src/app/page.tsx`
|
|
36
|
+
}
|
|
21
37
|
|
|
22
38
|
return (
|
|
23
39
|
<PageTransition type="fade" duration={300}>
|
|
@@ -25,16 +41,9 @@ export default function Home() {
|
|
|
25
41
|
<MobileContainer className="py-16">
|
|
26
42
|
{/* Hero Section */}
|
|
27
43
|
<MobileHero
|
|
28
|
-
badge={
|
|
29
|
-
|
|
30
|
-
|
|
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"
|
|
44
|
+
badge={heroConfig.badge}
|
|
45
|
+
title={heroConfig.title}
|
|
46
|
+
description={heroConfig.description}
|
|
38
47
|
actions={!user ? [
|
|
39
48
|
{
|
|
40
49
|
label: "Get Started",
|
|
@@ -22,6 +22,23 @@ export default function Home() {
|
|
|
22
22
|
const networkInfo = useNetworkInfo()
|
|
23
23
|
const isOnline = useOfflineState()
|
|
24
24
|
|
|
25
|
+
const projectName = "{{titleCaseName}}"
|
|
26
|
+
const projectDescription = "{{description}}"
|
|
27
|
+
|
|
28
|
+
const heroConfig = {
|
|
29
|
+
badge: {
|
|
30
|
+
text: "UI Package v0.13.0 + Auth v1.0.0 - Cross-Device Ready",
|
|
31
|
+
variant: "secondary" as const,
|
|
32
|
+
icon: CheckCircle
|
|
33
|
+
},
|
|
34
|
+
title: {
|
|
35
|
+
text: `Welcome to ${projectName}`,
|
|
36
|
+
highlight: projectName,
|
|
37
|
+
size: "xl" as const
|
|
38
|
+
},
|
|
39
|
+
description: `${projectDescription}. This mobile-optimized template uses SaaS Factory UI package v0.13.0 with cross-device authentication v1.0.0.`
|
|
40
|
+
}
|
|
41
|
+
|
|
25
42
|
const handleSignOut = async () => {
|
|
26
43
|
try {
|
|
27
44
|
await signOut()
|
|
@@ -87,17 +104,9 @@ export default function Home() {
|
|
|
87
104
|
|
|
88
105
|
{/* Hero Section */}
|
|
89
106
|
<MobileHero
|
|
90
|
-
badge={
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
icon: CheckCircle
|
|
94
|
-
}}
|
|
95
|
-
title={{
|
|
96
|
-
text: "Welcome to {{titleCaseName}}",
|
|
97
|
-
highlight: "{{titleCaseName}}",
|
|
98
|
-
size: "xl"
|
|
99
|
-
}}
|
|
100
|
-
description="{{description}}. This mobile-optimized template uses SaaS Factory UI package v0.13.0 with cross-device authentication v1.0.0."
|
|
107
|
+
badge={heroConfig.badge}
|
|
108
|
+
title={heroConfig.title}
|
|
109
|
+
description={heroConfig.description}
|
|
101
110
|
actions={[
|
|
102
111
|
{
|
|
103
112
|
label: "Get Started",
|
|
@@ -25,6 +25,23 @@ export default function Home() {
|
|
|
25
25
|
const networkInfo = useNetworkInfo()
|
|
26
26
|
const isOnline = useOfflineState()
|
|
27
27
|
const [isRefreshing, setIsRefreshing] = useState(false)
|
|
28
|
+
|
|
29
|
+
const projectName = "{{titleCaseName}}"
|
|
30
|
+
const projectDescription = "{{description}}"
|
|
31
|
+
|
|
32
|
+
const heroConfig = {
|
|
33
|
+
badge: {
|
|
34
|
+
text: "UI Package v0.13.0 + Auth v1.0.0 + Payments - Mobile-First Ready",
|
|
35
|
+
variant: "secondary" as const,
|
|
36
|
+
icon: CheckCircle
|
|
37
|
+
},
|
|
38
|
+
title: {
|
|
39
|
+
text: `Welcome to ${projectName}`,
|
|
40
|
+
highlight: projectName,
|
|
41
|
+
size: "xl" as const
|
|
42
|
+
},
|
|
43
|
+
description: `${projectDescription}. This mobile-optimized template uses SaaS Factory UI package v0.13.0 with cross-device authentication v1.0.0 and touch-friendly payments integration.`
|
|
44
|
+
}
|
|
28
45
|
|
|
29
46
|
const handleSignOut = async () => {
|
|
30
47
|
try {
|
|
@@ -105,17 +122,9 @@ export default function Home() {
|
|
|
105
122
|
|
|
106
123
|
{/* Hero Section */}
|
|
107
124
|
<MobileHero
|
|
108
|
-
badge={
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
icon: CheckCircle
|
|
112
|
-
}}
|
|
113
|
-
title={{
|
|
114
|
-
text: "Welcome to {{titleCaseName}}",
|
|
115
|
-
highlight: "{{titleCaseName}}",
|
|
116
|
-
size: "xl"
|
|
117
|
-
}}
|
|
118
|
-
description="{{description}}. This mobile-optimized template uses SaaS Factory UI package v0.13.0 with cross-device authentication v1.0.0 and touch-friendly payments integration."
|
|
125
|
+
badge={heroConfig.badge}
|
|
126
|
+
title={heroConfig.title}
|
|
127
|
+
description={heroConfig.description}
|
|
119
128
|
actions={[
|
|
120
129
|
{
|
|
121
130
|
label: "View Pricing",
|
|
@@ -18,6 +18,21 @@ export function Header() {
|
|
|
18
18
|
const networkInfo = useNetworkInfo();
|
|
19
19
|
const isOnline = useOfflineState();
|
|
20
20
|
|
|
21
|
+
const projectName = "{{titleCaseName}}";
|
|
22
|
+
|
|
23
|
+
const headerConfig = {
|
|
24
|
+
logo: {
|
|
25
|
+
text: projectName,
|
|
26
|
+
href: '/',
|
|
27
|
+
className: 'text-2xl font-bold'
|
|
28
|
+
},
|
|
29
|
+
networkStatus: {
|
|
30
|
+
isOnline,
|
|
31
|
+
connectionType: networkInfo?.effectiveType,
|
|
32
|
+
showIndicator: true
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
|
|
21
36
|
const handleSignOut = async () => {
|
|
22
37
|
try {
|
|
23
38
|
await signOut();
|
|
@@ -98,11 +113,7 @@ export function Header() {
|
|
|
98
113
|
)}
|
|
99
114
|
|
|
100
115
|
<ResponsiveHeader
|
|
101
|
-
logo={
|
|
102
|
-
text: '{{titleCaseName}}',
|
|
103
|
-
href: '/',
|
|
104
|
-
className: 'text-2xl font-bold'
|
|
105
|
-
}}
|
|
116
|
+
logo={headerConfig.logo}
|
|
106
117
|
navigationItems={navigationItems}
|
|
107
118
|
actions={authActions}
|
|
108
119
|
showThemeToggle={true}
|
|
@@ -116,11 +127,7 @@ export function Header() {
|
|
|
116
127
|
hapticFeedback={true}
|
|
117
128
|
/>
|
|
118
129
|
}
|
|
119
|
-
networkStatus={
|
|
120
|
-
isOnline,
|
|
121
|
-
connectionType: networkInfo?.effectiveType,
|
|
122
|
-
showIndicator: true
|
|
123
|
-
}}
|
|
130
|
+
networkStatus={headerConfig.networkStatus}
|
|
124
131
|
/>
|
|
125
132
|
</>
|
|
126
133
|
);
|
|
@@ -28,6 +28,20 @@ export default function Home() {
|
|
|
28
28
|
|
|
29
29
|
const projectName = "{{titleCaseName}}"
|
|
30
30
|
const projectDescription = "{{description}}"
|
|
31
|
+
|
|
32
|
+
const heroConfig = {
|
|
33
|
+
badge: {
|
|
34
|
+
text: "Audio Player App - UI Package v0.13.0 + Auth v1.0.0 + Payments Integrated Successfully",
|
|
35
|
+
variant: "secondary" as const,
|
|
36
|
+
icon: CheckCircle
|
|
37
|
+
},
|
|
38
|
+
title: {
|
|
39
|
+
text: `Welcome to ${projectName}`,
|
|
40
|
+
highlight: projectName,
|
|
41
|
+
size: "xl" as const
|
|
42
|
+
},
|
|
43
|
+
description: `${projectDescription}. This mobile-optimized audio streaming app template uses SaaS Factory UI package v0.13.0 with touch-friendly audio player components, authentication v1.0.0 and payments integration.`
|
|
44
|
+
}
|
|
31
45
|
|
|
32
46
|
const handleSignOut = async () => {
|
|
33
47
|
try {
|
|
@@ -108,17 +122,9 @@ export default function Home() {
|
|
|
108
122
|
|
|
109
123
|
{/* Hero Section */}
|
|
110
124
|
<MobileHero
|
|
111
|
-
badge={
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
icon: CheckCircle
|
|
115
|
-
}}
|
|
116
|
-
title={{
|
|
117
|
-
text: `Welcome to ${projectName}`,
|
|
118
|
-
highlight: projectName,
|
|
119
|
-
size: "xl"
|
|
120
|
-
}}
|
|
121
|
-
description={`${projectDescription}. This mobile-optimized audio streaming app template uses SaaS Factory UI package v0.13.0 with touch-friendly audio player components, authentication v1.0.0 and payments integration.`}
|
|
125
|
+
badge={heroConfig.badge}
|
|
126
|
+
title={heroConfig.title}
|
|
127
|
+
description={heroConfig.description}
|
|
122
128
|
actions={[
|
|
123
129
|
{
|
|
124
130
|
label: "View Pricing",
|
|
@@ -20,6 +20,24 @@ export function Header() {
|
|
|
20
20
|
|
|
21
21
|
const projectName = "{{titleCaseName}}";
|
|
22
22
|
|
|
23
|
+
const headerConfig = {
|
|
24
|
+
logo: {
|
|
25
|
+
text: projectName,
|
|
26
|
+
href: '/',
|
|
27
|
+
className: 'text-2xl font-bold flex items-center gap-2',
|
|
28
|
+
icon: <Music className="w-6 h-6" />
|
|
29
|
+
},
|
|
30
|
+
networkStatus: {
|
|
31
|
+
isOnline,
|
|
32
|
+
connectionType: networkInfo?.effectiveType,
|
|
33
|
+
showIndicator: true,
|
|
34
|
+
customLabels: {
|
|
35
|
+
online: 'Streaming Ready',
|
|
36
|
+
offline: 'Offline Mode'
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
23
41
|
const handleSignOut = async () => {
|
|
24
42
|
try {
|
|
25
43
|
await signOut();
|
|
@@ -121,12 +139,7 @@ export function Header() {
|
|
|
121
139
|
)}
|
|
122
140
|
|
|
123
141
|
<ResponsiveHeader
|
|
124
|
-
logo={
|
|
125
|
-
text: projectName,
|
|
126
|
-
href: '/',
|
|
127
|
-
className: 'text-2xl font-bold flex items-center gap-2',
|
|
128
|
-
icon: <Music className="w-6 h-6" />
|
|
129
|
-
}}
|
|
142
|
+
logo={headerConfig.logo}
|
|
130
143
|
navigationItems={navigationItems}
|
|
131
144
|
actions={authActions}
|
|
132
145
|
showThemeToggle={true}
|
|
@@ -140,15 +153,7 @@ export function Header() {
|
|
|
140
153
|
hapticFeedback={true}
|
|
141
154
|
/>
|
|
142
155
|
}
|
|
143
|
-
networkStatus={
|
|
144
|
-
isOnline,
|
|
145
|
-
connectionType: networkInfo?.effectiveType,
|
|
146
|
-
showIndicator: true,
|
|
147
|
-
customLabels: {
|
|
148
|
-
online: 'Streaming Ready',
|
|
149
|
-
offline: 'Offline Mode'
|
|
150
|
-
}
|
|
151
|
-
}}
|
|
156
|
+
networkStatus={headerConfig.networkStatus}
|
|
152
157
|
/>
|
|
153
158
|
</>
|
|
154
159
|
);
|
|
@@ -26,6 +26,23 @@ export default function Home() {
|
|
|
26
26
|
const networkInfo = useNetworkInfo()
|
|
27
27
|
const isOnline = useOfflineState()
|
|
28
28
|
const [isRefreshing, setIsRefreshing] = useState(false)
|
|
29
|
+
|
|
30
|
+
const projectName = "{{titleCaseName}}"
|
|
31
|
+
const projectDescription = "{{description}}"
|
|
32
|
+
|
|
33
|
+
const heroConfig = {
|
|
34
|
+
badge: {
|
|
35
|
+
text: "Video Player App - UI Package v0.13.0 + Auth v1.0.0 + Payments Integrated Successfully",
|
|
36
|
+
variant: "secondary" as const,
|
|
37
|
+
icon: CheckCircle
|
|
38
|
+
},
|
|
39
|
+
title: {
|
|
40
|
+
text: `Welcome to ${projectName}`,
|
|
41
|
+
highlight: projectName,
|
|
42
|
+
size: "xl" as const
|
|
43
|
+
},
|
|
44
|
+
description: `${projectDescription}. This mobile-optimized video streaming app template uses SaaS Factory UI package v0.13.0 with video player components, authentication v1.0.0 and payments integration.`
|
|
45
|
+
}
|
|
29
46
|
|
|
30
47
|
const handleSignOut = async () => {
|
|
31
48
|
try {
|
|
@@ -108,17 +125,9 @@ export default function Home() {
|
|
|
108
125
|
</div>
|
|
109
126
|
|
|
110
127
|
<MobileHero
|
|
111
|
-
badge={
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
icon: CheckCircle
|
|
115
|
-
}}
|
|
116
|
-
title={{
|
|
117
|
-
text: "Welcome to {{titleCaseName}}",
|
|
118
|
-
highlight: "{{titleCaseName}}",
|
|
119
|
-
size: "xl"
|
|
120
|
-
}}
|
|
121
|
-
description="{{description}}. This mobile-first video streaming app template uses SaaS Factory UI package v0.13.0 with touch-optimized video player components, authentication v1.0.0 and payments integration."
|
|
128
|
+
badge={heroConfig.badge}
|
|
129
|
+
title={heroConfig.title}
|
|
130
|
+
description={heroConfig.description}
|
|
122
131
|
actions={[
|
|
123
132
|
{
|
|
124
133
|
label: "Start Watching",
|