@digilogiclabs/create-saas-app 1.14.0 → 1.17.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/README.md +134 -29
- package/bin/index.js +1 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/cli/prompts/project-setup.d.ts.map +1 -1
- package/dist/cli/prompts/project-setup.js +45 -12
- package/dist/cli/prompts/project-setup.js.map +1 -1
- package/dist/generators/template-generator.d.ts.map +1 -1
- package/dist/generators/template-generator.js +27 -4
- package/dist/generators/template-generator.js.map +1 -1
- package/dist/templates/mobile/ui-auth-payments/template/.env.example +20 -0
- package/dist/templates/mobile/ui-auth-payments/template/README.md +218 -0
- package/dist/templates/mobile/ui-auth-payments/template/app/(tabs)/_layout.tsx +153 -0
- package/dist/templates/mobile/ui-auth-payments/template/app/(tabs)/analytics.tsx +668 -0
- package/dist/templates/mobile/ui-auth-payments/template/app/(tabs)/billing.tsx +743 -0
- package/dist/templates/mobile/ui-auth-payments/template/app/(tabs)/index.tsx +676 -0
- package/dist/templates/mobile/ui-auth-payments/template/app/(tabs)/orders.tsx +402 -0
- package/dist/templates/mobile/ui-auth-payments/template/app/(tabs)/profile.tsx +580 -0
- package/dist/templates/mobile/ui-auth-payments/template/app/_layout.tsx +125 -0
- package/dist/templates/mobile/ui-auth-payments/template/app/auth/login.tsx +246 -0
- package/dist/templates/mobile/ui-auth-payments/template/app/auth/signup.tsx +362 -0
- package/dist/templates/mobile/ui-auth-payments/template/app/onboarding/index.tsx +193 -0
- package/dist/templates/mobile/ui-auth-payments/template/app/tour/index.tsx +272 -0
- package/dist/templates/mobile/ui-auth-payments/template/app.json +93 -0
- package/dist/templates/mobile/ui-auth-payments/template/babel.config.js +23 -0
- package/dist/templates/mobile/ui-auth-payments/template/eas.json +45 -0
- package/dist/templates/mobile/ui-auth-payments/template/expo-env.d.ts +3 -0
- package/dist/templates/mobile/ui-auth-payments/template/jest-setup.ts +74 -0
- package/dist/templates/mobile/ui-auth-payments/template/metro.config.js +11 -0
- package/dist/templates/mobile/ui-auth-payments/template/package.json +106 -0
- package/dist/templates/mobile/ui-auth-payments/template/tsconfig.json +31 -0
- package/dist/templates/web/base/template/src/app/dashboard/page.tsx +62 -20
- package/dist/templates/web/ui-auth/template/package.json +1 -1
- package/dist/templates/web/ui-auth-payments/template/package.json +1 -1
- package/dist/templates/web/ui-auth-payments/template/src/app/dashboard/page.tsx +69 -17
- package/dist/templates/web/ui-auth-payments-ai/template/package.json +1 -1
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/billing/page.tsx +218 -7
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/dashboard/page.tsx +62 -9
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/onboarding/page.tsx +364 -0
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/settings/page.tsx +532 -0
- package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/login-form.tsx +70 -51
- package/dist/templates/web/ui-auth-payments-ai/template/src/components/client/signup-form.tsx +76 -60
- package/dist/templates/web/ui-auth-payments-ai/template/src/components/shared/header.tsx +1 -1
- package/dist/templates/web/ui-auth-payments-audio/template/package.json +1 -1
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/dashboard/page.tsx +71 -17
- package/dist/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +1 -1
- package/dist/templates/web/ui-auth-payments-video/template/package.json +1 -1
- package/package.json +1 -1
- package/src/templates/mobile/ui-auth-payments/template/.env.example +20 -0
- package/src/templates/mobile/ui-auth-payments/template/README.md +218 -0
- package/src/templates/mobile/ui-auth-payments/template/app/(tabs)/_layout.tsx +153 -0
- package/src/templates/mobile/ui-auth-payments/template/app/(tabs)/analytics.tsx +668 -0
- package/src/templates/mobile/ui-auth-payments/template/app/(tabs)/billing.tsx +743 -0
- package/src/templates/mobile/ui-auth-payments/template/app/(tabs)/index.tsx +676 -0
- package/src/templates/mobile/ui-auth-payments/template/app/(tabs)/orders.tsx +402 -0
- package/src/templates/mobile/ui-auth-payments/template/app/(tabs)/profile.tsx +580 -0
- package/src/templates/mobile/ui-auth-payments/template/app/_layout.tsx +125 -0
- package/src/templates/mobile/ui-auth-payments/template/app/auth/login.tsx +246 -0
- package/src/templates/mobile/ui-auth-payments/template/app/auth/signup.tsx +362 -0
- package/src/templates/mobile/ui-auth-payments/template/app/onboarding/index.tsx +193 -0
- package/src/templates/mobile/ui-auth-payments/template/app/tour/index.tsx +272 -0
- package/src/templates/mobile/ui-auth-payments/template/app.json +93 -0
- package/src/templates/mobile/ui-auth-payments/template/babel.config.js +23 -0
- package/src/templates/mobile/ui-auth-payments/template/eas.json +45 -0
- package/src/templates/mobile/ui-auth-payments/template/expo-env.d.ts +3 -0
- package/src/templates/mobile/ui-auth-payments/template/jest-setup.ts +74 -0
- package/src/templates/mobile/ui-auth-payments/template/metro.config.js +11 -0
- package/src/templates/mobile/ui-auth-payments/template/package.json +106 -0
- package/src/templates/mobile/ui-auth-payments/template/tsconfig.json +31 -0
- package/src/templates/web/base/template/src/app/dashboard/page.tsx +62 -20
- package/src/templates/web/ui-auth/template/package.json +1 -1
- package/src/templates/web/ui-auth-payments/template/package.json +1 -1
- package/src/templates/web/ui-auth-payments/template/src/app/dashboard/page.tsx +69 -17
- package/src/templates/web/ui-auth-payments-ai/template/package.json +1 -1
- package/src/templates/web/ui-auth-payments-ai/template/src/app/billing/page.tsx +218 -7
- package/src/templates/web/ui-auth-payments-ai/template/src/app/dashboard/page.tsx +62 -9
- package/src/templates/web/ui-auth-payments-ai/template/src/app/onboarding/page.tsx +364 -0
- package/src/templates/web/ui-auth-payments-ai/template/src/app/settings/page.tsx +532 -0
- package/src/templates/web/ui-auth-payments-ai/template/src/components/client/login-form.tsx +70 -51
- package/src/templates/web/ui-auth-payments-ai/template/src/components/client/signup-form.tsx +76 -60
- package/src/templates/web/ui-auth-payments-ai/template/src/components/shared/header.tsx +1 -1
- package/src/templates/web/ui-auth-payments-audio/template/package.json +1 -1
- package/src/templates/web/ui-auth-payments-audio/template/src/app/dashboard/page.tsx +71 -17
- package/src/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +1 -1
- package/src/templates/web/ui-auth-payments-video/template/package.json +1 -1
|
@@ -1,6 +1,23 @@
|
|
|
1
1
|
import { Suspense } from 'react'
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
Button,
|
|
4
|
+
Card,
|
|
5
|
+
DashboardLayout,
|
|
6
|
+
CommandPalette,
|
|
7
|
+
Tour
|
|
8
|
+
} from '@digilogiclabs/saas-factory-ui'
|
|
9
|
+
import {
|
|
10
|
+
User,
|
|
11
|
+
Settings,
|
|
12
|
+
CreditCard,
|
|
13
|
+
Activity,
|
|
14
|
+
Home,
|
|
15
|
+
Brain,
|
|
16
|
+
Users,
|
|
17
|
+
BarChart,
|
|
18
|
+
Plus,
|
|
19
|
+
Search
|
|
20
|
+
} from 'lucide-react'
|
|
4
21
|
import { requireAuth } from '@/lib/auth-server'
|
|
5
22
|
import Link from 'next/link'
|
|
6
23
|
|
|
@@ -90,11 +107,44 @@ export default async function DashboardPage() {
|
|
|
90
107
|
// Server-side authentication requirement
|
|
91
108
|
const user = await requireAuth()
|
|
92
109
|
|
|
110
|
+
const sidebarNavigation = [
|
|
111
|
+
{ name: 'Overview', href: '/dashboard', icon: Home, current: true },
|
|
112
|
+
{ name: 'Profile', href: '/profile', icon: User },
|
|
113
|
+
{ name: 'Settings', href: '/settings', icon: Settings },
|
|
114
|
+
{ name: 'Billing', href: '/billing', icon: CreditCard },
|
|
115
|
+
{ name: 'Analytics', href: '/analytics', icon: BarChart }
|
|
116
|
+
]
|
|
117
|
+
|
|
118
|
+
const tourSteps = [
|
|
119
|
+
{
|
|
120
|
+
target: '[data-tour="overview"]',
|
|
121
|
+
title: 'Dashboard Overview',
|
|
122
|
+
content: 'Get a quick overview of your account stats and recent activity.'
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
target: '[data-tour="stats"]',
|
|
126
|
+
title: 'Account Statistics',
|
|
127
|
+
content: 'View your key metrics and performance indicators here.'
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
target: '[data-tour="actions"]',
|
|
131
|
+
title: 'Quick Actions',
|
|
132
|
+
content: 'Access your most commonly used features from these cards.'
|
|
133
|
+
}
|
|
134
|
+
]
|
|
135
|
+
|
|
93
136
|
return (
|
|
94
|
-
<
|
|
95
|
-
|
|
137
|
+
<DashboardLayout
|
|
138
|
+
navigation={sidebarNavigation}
|
|
139
|
+
headerActions={[
|
|
140
|
+
<CommandPalette key="command-palette" />,
|
|
141
|
+
<Tour key="tour" steps={tourSteps} />
|
|
142
|
+
]}
|
|
143
|
+
>
|
|
144
|
+
<div className="min-h-screen bg-gray-50 dark:bg-gray-900">
|
|
145
|
+
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
|
96
146
|
{/* Header */}
|
|
97
|
-
<div className="mb-8">
|
|
147
|
+
<div className="mb-8" data-tour="overview">
|
|
98
148
|
<h1 className="text-3xl font-bold text-gray-900 dark:text-white">
|
|
99
149
|
Welcome back, {user.name || user.email}!
|
|
100
150
|
</h1>
|
|
@@ -104,12 +154,14 @@ export default async function DashboardPage() {
|
|
|
104
154
|
</div>
|
|
105
155
|
|
|
106
156
|
{/* Stats - Streaming with Suspense */}
|
|
107
|
-
<
|
|
108
|
-
<
|
|
109
|
-
|
|
157
|
+
<div data-tour="stats">
|
|
158
|
+
<Suspense fallback={<UserStatsSkeleton />}>
|
|
159
|
+
<UserStats userId={user.id} />
|
|
160
|
+
</Suspense>
|
|
161
|
+
</div>
|
|
110
162
|
|
|
111
163
|
{/* Quick Actions */}
|
|
112
|
-
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 mb-8">
|
|
164
|
+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 mb-8" data-tour="actions">
|
|
113
165
|
<Card className="p-6">
|
|
114
166
|
<div className="flex items-center mb-4">
|
|
115
167
|
<User className="h-6 w-6 text-blue-600 dark:text-blue-400 mr-3" />
|
|
@@ -179,5 +231,6 @@ export default async function DashboardPage() {
|
|
|
179
231
|
</Card>
|
|
180
232
|
</div>
|
|
181
233
|
</div>
|
|
234
|
+
</DashboardLayout>
|
|
182
235
|
)
|
|
183
236
|
}
|
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import React from 'react'
|
|
4
|
+
import {
|
|
5
|
+
MultiStepForm,
|
|
6
|
+
FormField,
|
|
7
|
+
FormSection,
|
|
8
|
+
FormProvider,
|
|
9
|
+
Card,
|
|
10
|
+
MobileContainer,
|
|
11
|
+
PageTransition
|
|
12
|
+
} from '@digilogiclabs/saas-factory-ui'
|
|
13
|
+
import { useAuth } from '@digilogiclabs/saas-factory-auth'
|
|
14
|
+
import { useRouter } from 'next/navigation'
|
|
15
|
+
import {
|
|
16
|
+
User,
|
|
17
|
+
Brain,
|
|
18
|
+
Users,
|
|
19
|
+
Target,
|
|
20
|
+
CreditCard,
|
|
21
|
+
CheckCircle,
|
|
22
|
+
ArrowLeft
|
|
23
|
+
} from 'lucide-react'
|
|
24
|
+
import Link from 'next/link'
|
|
25
|
+
|
|
26
|
+
export default function OnboardingPage() {
|
|
27
|
+
const { user } = useAuth()
|
|
28
|
+
const router = useRouter()
|
|
29
|
+
|
|
30
|
+
const handleOnboardingComplete = async (formData: FormData) => {
|
|
31
|
+
console.log('Onboarding completed:', Object.fromEntries(formData))
|
|
32
|
+
// Save onboarding data to user profile
|
|
33
|
+
// Redirect to main app
|
|
34
|
+
router.push('/dashboard')
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (!user) {
|
|
38
|
+
router.push('/login')
|
|
39
|
+
return null
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return (
|
|
43
|
+
<PageTransition type="slide" direction="up" duration={300}>
|
|
44
|
+
<main className="min-h-screen bg-gradient-to-br from-primary/5 via-background to-secondary/5">
|
|
45
|
+
<MobileContainer className="py-8">
|
|
46
|
+
{/* Header */}
|
|
47
|
+
<div className="flex items-center justify-between mb-8">
|
|
48
|
+
<div className="flex items-center gap-4">
|
|
49
|
+
<Link href="/" className="p-2 rounded-xl bg-white/10 backdrop-blur-md border border-white/20 hover:scale-105 transition-transform">
|
|
50
|
+
<ArrowLeft className="w-5 h-5" />
|
|
51
|
+
</Link>
|
|
52
|
+
<div>
|
|
53
|
+
<h1 className="text-2xl font-bold">Welcome to {{projectName}}</h1>
|
|
54
|
+
<p className="text-gray-600 dark:text-gray-300">Let's get you set up</p>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
{/* Multi-Step Onboarding Form */}
|
|
60
|
+
<Card className="max-w-4xl mx-auto p-8">
|
|
61
|
+
<FormProvider>
|
|
62
|
+
<MultiStepForm
|
|
63
|
+
onComplete={handleOnboardingComplete}
|
|
64
|
+
autoSave={true}
|
|
65
|
+
progressTracking={true}
|
|
66
|
+
allowSkip={false}
|
|
67
|
+
steps={[
|
|
68
|
+
{
|
|
69
|
+
id: 'profile',
|
|
70
|
+
title: 'Personal Information',
|
|
71
|
+
description: 'Tell us about yourself',
|
|
72
|
+
icon: User,
|
|
73
|
+
fields: [
|
|
74
|
+
{
|
|
75
|
+
name: 'fullName',
|
|
76
|
+
type: 'text',
|
|
77
|
+
label: 'Full Name',
|
|
78
|
+
placeholder: 'Enter your full name',
|
|
79
|
+
validation: ['required', 'minLength:2'],
|
|
80
|
+
defaultValue: user.user_metadata?.full_name || ''
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: 'company',
|
|
84
|
+
type: 'text',
|
|
85
|
+
label: 'Company',
|
|
86
|
+
placeholder: 'Enter your company name',
|
|
87
|
+
validation: ['required']
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: 'role',
|
|
91
|
+
type: 'select',
|
|
92
|
+
label: 'Role',
|
|
93
|
+
placeholder: 'Select your role',
|
|
94
|
+
options: [
|
|
95
|
+
{ value: 'developer', label: 'Developer' },
|
|
96
|
+
{ value: 'designer', label: 'Designer' },
|
|
97
|
+
{ value: 'product-manager', label: 'Product Manager' },
|
|
98
|
+
{ value: 'entrepreneur', label: 'Entrepreneur' },
|
|
99
|
+
{ value: 'content-creator', label: 'Content Creator' },
|
|
100
|
+
{ value: 'student', label: 'Student' },
|
|
101
|
+
{ value: 'other', label: 'Other' }
|
|
102
|
+
],
|
|
103
|
+
validation: ['required']
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
name: 'industry',
|
|
107
|
+
type: 'select',
|
|
108
|
+
label: 'Industry',
|
|
109
|
+
placeholder: 'Select your industry',
|
|
110
|
+
options: [
|
|
111
|
+
{ value: 'technology', label: 'Technology' },
|
|
112
|
+
{ value: 'healthcare', label: 'Healthcare' },
|
|
113
|
+
{ value: 'finance', label: 'Finance' },
|
|
114
|
+
{ value: 'education', label: 'Education' },
|
|
115
|
+
{ value: 'media', label: 'Media & Entertainment' },
|
|
116
|
+
{ value: 'retail', label: 'Retail' },
|
|
117
|
+
{ value: 'manufacturing', label: 'Manufacturing' },
|
|
118
|
+
{ value: 'other', label: 'Other' }
|
|
119
|
+
],
|
|
120
|
+
validation: ['required']
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
id: 'ai-preferences',
|
|
126
|
+
title: 'AI Preferences',
|
|
127
|
+
description: 'Customize your AI experience',
|
|
128
|
+
icon: Brain,
|
|
129
|
+
component: (
|
|
130
|
+
<div className="space-y-6">
|
|
131
|
+
<FormSection title="AI Usage Goals" className="space-y-4">
|
|
132
|
+
<FormField
|
|
133
|
+
name="usageGoals"
|
|
134
|
+
type="multiSelect"
|
|
135
|
+
label="What do you plan to use AI for?"
|
|
136
|
+
options={[
|
|
137
|
+
{ value: 'content-creation', label: 'Content Creation' },
|
|
138
|
+
{ value: 'code-generation', label: 'Code Generation' },
|
|
139
|
+
{ value: 'data-analysis', label: 'Data Analysis' },
|
|
140
|
+
{ value: 'customer-support', label: 'Customer Support' },
|
|
141
|
+
{ value: 'marketing', label: 'Marketing & SEO' },
|
|
142
|
+
{ value: 'research', label: 'Research & Analysis' },
|
|
143
|
+
{ value: 'automation', label: 'Workflow Automation' },
|
|
144
|
+
{ value: 'creative-projects', label: 'Creative Projects' }
|
|
145
|
+
]}
|
|
146
|
+
validation={['required']}
|
|
147
|
+
helpText="Select all that apply"
|
|
148
|
+
/>
|
|
149
|
+
</FormSection>
|
|
150
|
+
|
|
151
|
+
<FormSection title="Content Preferences" className="space-y-4">
|
|
152
|
+
<FormField
|
|
153
|
+
name="contentTypes"
|
|
154
|
+
type="multiSelect"
|
|
155
|
+
label="What types of content do you create?"
|
|
156
|
+
options={[
|
|
157
|
+
{ value: 'text', label: 'Text & Articles' },
|
|
158
|
+
{ value: 'audio', label: 'Audio & Podcasts' },
|
|
159
|
+
{ value: 'video', label: 'Video Content' },
|
|
160
|
+
{ value: 'images', label: 'Images & Graphics' },
|
|
161
|
+
{ value: 'presentations', label: 'Presentations' },
|
|
162
|
+
{ value: 'social-media', label: 'Social Media Posts' },
|
|
163
|
+
{ value: 'documentation', label: 'Documentation' },
|
|
164
|
+
{ value: 'code', label: 'Code & Technical Content' }
|
|
165
|
+
]}
|
|
166
|
+
validation: ['required']
|
|
167
|
+
/>
|
|
168
|
+
|
|
169
|
+
<FormField
|
|
170
|
+
name: 'creativityLevel'
|
|
171
|
+
type: 'range'
|
|
172
|
+
label: 'Creativity Level'
|
|
173
|
+
min: 0
|
|
174
|
+
max: 100
|
|
175
|
+
defaultValue: 50
|
|
176
|
+
helpText: 'Lower values are more conservative, higher values are more creative'
|
|
177
|
+
showValue: true
|
|
178
|
+
/>
|
|
179
|
+
</FormSection>
|
|
180
|
+
|
|
181
|
+
<FormSection title="AI Model Preferences" className="space-y-4">
|
|
182
|
+
<FormField
|
|
183
|
+
name="preferredModels"
|
|
184
|
+
type="multiSelect"
|
|
185
|
+
label="Preferred AI Models"
|
|
186
|
+
options={[
|
|
187
|
+
{ value: 'gpt-4', label: 'GPT-4 (Text & Chat)' },
|
|
188
|
+
{ value: 'gpt-4-turbo', label: 'GPT-4 Turbo (Faster)' },
|
|
189
|
+
{ value: 'claude-3', label: 'Claude 3 (Analysis)' },
|
|
190
|
+
{ value: 'elevenlabs', label: 'ElevenLabs (Voice)' },
|
|
191
|
+
{ value: 'whisper', label: 'Whisper (Speech-to-Text)' },
|
|
192
|
+
{ value: 'dall-e', label: 'DALL-E (Images)' },
|
|
193
|
+
{ value: 'stable-diffusion', label: 'Stable Diffusion (Images)' }
|
|
194
|
+
]}
|
|
195
|
+
helpText="We'll prioritize these models for your requests"
|
|
196
|
+
/>
|
|
197
|
+
</FormSection>
|
|
198
|
+
</div>
|
|
199
|
+
)
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
id: 'team-setup',
|
|
203
|
+
title: 'Team Setup',
|
|
204
|
+
description: 'Set up your team and collaboration',
|
|
205
|
+
icon: Users,
|
|
206
|
+
fields: [
|
|
207
|
+
{
|
|
208
|
+
name: 'teamSize',
|
|
209
|
+
type: 'select',
|
|
210
|
+
label: 'Team Size',
|
|
211
|
+
placeholder: 'Select your team size',
|
|
212
|
+
options: [
|
|
213
|
+
{ value: 'solo', label: 'Just me' },
|
|
214
|
+
{ value: 'small', label: '2-5 people' },
|
|
215
|
+
{ value: 'medium', label: '6-20 people' },
|
|
216
|
+
{ value: 'large', label: '21-100 people' },
|
|
217
|
+
{ value: 'enterprise', label: '100+ people' }
|
|
218
|
+
],
|
|
219
|
+
validation: ['required']
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
name: 'inviteMembers',
|
|
223
|
+
type: 'textarea',
|
|
224
|
+
label: 'Invite Team Members',
|
|
225
|
+
placeholder: 'Enter email addresses, one per line',
|
|
226
|
+
helpText: 'Invite your team members to collaborate (optional)',
|
|
227
|
+
rows: 4
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
name: 'workspacePreferences',
|
|
231
|
+
type: 'multiSelect',
|
|
232
|
+
label: 'Workspace Features',
|
|
233
|
+
options: [
|
|
234
|
+
{ value: 'shared-projects', label: 'Shared Projects' },
|
|
235
|
+
{ value: 'team-templates', label: 'Team Templates' },
|
|
236
|
+
{ value: 'usage-analytics', label: 'Usage Analytics' },
|
|
237
|
+
{ value: 'approval-workflows', label: 'Approval Workflows' },
|
|
238
|
+
{ value: 'brand-guidelines', label: 'Brand Guidelines' },
|
|
239
|
+
{ value: 'api-access', label: 'API Access' }
|
|
240
|
+
],
|
|
241
|
+
helpText: 'Features you'd like enabled for your team'
|
|
242
|
+
}
|
|
243
|
+
]
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
id: 'subscription',
|
|
247
|
+
title: 'Choose Your Plan',
|
|
248
|
+
description: 'Select a plan that fits your needs',
|
|
249
|
+
icon: CreditCard,
|
|
250
|
+
component: (
|
|
251
|
+
<div className="space-y-6">
|
|
252
|
+
<FormField
|
|
253
|
+
name="selectedPlan"
|
|
254
|
+
type="radio"
|
|
255
|
+
label="Choose Your Plan"
|
|
256
|
+
options={[
|
|
257
|
+
{
|
|
258
|
+
value: 'starter',
|
|
259
|
+
label: 'Starter Plan',
|
|
260
|
+
description: 'Perfect for individuals and small projects',
|
|
261
|
+
price: '$9/month',
|
|
262
|
+
features: [
|
|
263
|
+
'1,000 AI requests/month',
|
|
264
|
+
'Basic AI models',
|
|
265
|
+
'Email support',
|
|
266
|
+
'5GB storage'
|
|
267
|
+
]
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
value: 'pro',
|
|
271
|
+
label: 'Pro Plan',
|
|
272
|
+
description: 'Best for growing teams and businesses',
|
|
273
|
+
price: '$29/month',
|
|
274
|
+
features: [
|
|
275
|
+
'10,000 AI requests/month',
|
|
276
|
+
'Advanced AI models',
|
|
277
|
+
'Priority support',
|
|
278
|
+
'50GB storage',
|
|
279
|
+
'Team collaboration',
|
|
280
|
+
'API access'
|
|
281
|
+
],
|
|
282
|
+
recommended: true
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
value: 'enterprise',
|
|
286
|
+
label: 'Enterprise Plan',
|
|
287
|
+
description: 'For large organizations with custom needs',
|
|
288
|
+
price: 'Custom pricing',
|
|
289
|
+
features: [
|
|
290
|
+
'Unlimited AI requests',
|
|
291
|
+
'All AI models',
|
|
292
|
+
'Dedicated support',
|
|
293
|
+
'Unlimited storage',
|
|
294
|
+
'Advanced security',
|
|
295
|
+
'Custom integrations'
|
|
296
|
+
]
|
|
297
|
+
}
|
|
298
|
+
]}
|
|
299
|
+
validation={['required']}
|
|
300
|
+
/>
|
|
301
|
+
|
|
302
|
+
<FormField
|
|
303
|
+
name="billingInterval"
|
|
304
|
+
type="radio"
|
|
305
|
+
label="Billing Interval"
|
|
306
|
+
options={[
|
|
307
|
+
{ value: 'monthly', label: 'Monthly billing' },
|
|
308
|
+
{ value: 'yearly', label: 'Yearly billing (save 20%)' }
|
|
309
|
+
]}
|
|
310
|
+
defaultValue="monthly"
|
|
311
|
+
validation={['required']}
|
|
312
|
+
/>
|
|
313
|
+
</div>
|
|
314
|
+
)
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
id: 'completion',
|
|
318
|
+
title: 'All Set!',
|
|
319
|
+
description: 'Your account is ready to go',
|
|
320
|
+
icon: CheckCircle,
|
|
321
|
+
component: (
|
|
322
|
+
<div className="text-center space-y-6">
|
|
323
|
+
<div className="w-16 h-16 bg-green-500 rounded-full flex items-center justify-center mx-auto">
|
|
324
|
+
<CheckCircle className="w-8 h-8 text-white" />
|
|
325
|
+
</div>
|
|
326
|
+
<div>
|
|
327
|
+
<h3 className="text-xl font-semibold mb-2">Welcome to {{projectName}}!</h3>
|
|
328
|
+
<p className="text-gray-600 dark:text-gray-300">
|
|
329
|
+
Your account has been set up successfully. You're ready to start using AI to supercharge your productivity.
|
|
330
|
+
</p>
|
|
331
|
+
</div>
|
|
332
|
+
<div className="grid grid-cols-1 md:grid-cols-3 gap-4 text-sm">
|
|
333
|
+
<div className="p-4 rounded-lg bg-blue-50 dark:bg-blue-900/20">
|
|
334
|
+
<Brain className="w-6 h-6 text-blue-500 mx-auto mb-2" />
|
|
335
|
+
<div className="font-medium">AI Tools Ready</div>
|
|
336
|
+
<div className="text-gray-600 dark:text-gray-400">Access all AI capabilities</div>
|
|
337
|
+
</div>
|
|
338
|
+
<div className="p-4 rounded-lg bg-green-50 dark:bg-green-900/20">
|
|
339
|
+
<Users className="w-6 h-6 text-green-500 mx-auto mb-2" />
|
|
340
|
+
<div className="font-medium">Team Configured</div>
|
|
341
|
+
<div className="text-gray-600 dark:text-gray-400">Collaboration features enabled</div>
|
|
342
|
+
</div>
|
|
343
|
+
<div className="p-4 rounded-lg bg-purple-50 dark:bg-purple-900/20">
|
|
344
|
+
<Target className="w-6 h-6 text-purple-500 mx-auto mb-2" />
|
|
345
|
+
<div className="font-medium">Goals Set</div>
|
|
346
|
+
<div className="text-gray-600 dark:text-gray-400">Personalized experience ready</div>
|
|
347
|
+
</div>
|
|
348
|
+
</div>
|
|
349
|
+
</div>
|
|
350
|
+
)
|
|
351
|
+
}
|
|
352
|
+
]}
|
|
353
|
+
submitButtonText="Complete Setup"
|
|
354
|
+
nextButtonText="Continue"
|
|
355
|
+
previousButtonText="Back"
|
|
356
|
+
className="space-y-6"
|
|
357
|
+
/>
|
|
358
|
+
</FormProvider>
|
|
359
|
+
</Card>
|
|
360
|
+
</MobileContainer>
|
|
361
|
+
</main>
|
|
362
|
+
</PageTransition>
|
|
363
|
+
)
|
|
364
|
+
}
|