@dailyautomations/ui 1.0.1 → 1.2.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 +100 -0
- package/INSTALLATION.md +238 -0
- package/MIGRATION.md +207 -0
- package/PAGE_STRUCTURES.md +718 -0
- package/README.md +125 -65
- package/dist/tokens/tailwind.preset.d.ts.map +1 -1
- package/dist/tokens/tailwind.preset.js.map +1 -1
- package/examples/README.md +150 -0
- package/examples/home-page.tsx +321 -0
- package/examples/index.html +12 -0
- package/examples/main.tsx +90 -0
- package/examples/pages/AboutPage.tsx +343 -0
- package/examples/pages/BlogPage.tsx +294 -0
- package/examples/pages/ContactPage.tsx +328 -0
- package/examples/pages/DashboardPage.tsx +355 -0
- package/examples/pages/ListPage.tsx +310 -0
- package/examples/pages/LoginPage.tsx +166 -0
- package/examples/pages/OnboardingPage.tsx +385 -0
- package/examples/pages/PricingPage.tsx +402 -0
- package/examples/pages/SettingsPage.tsx +417 -0
- package/examples/pages/SignupPage.tsx +194 -0
- package/examples/pages/index.ts +13 -0
- package/examples/styles.css +166 -0
- package/package.json +7 -1
- package/src/styles/globals.css +161 -7
- package/src/styles/theme.css +89 -0
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Button } from '../src/components/common/button';
|
|
3
|
+
import { Card, CardHeader, CardTitle, CardDescription, CardContent } from '../src/components/common/card';
|
|
4
|
+
import { Input } from '../src/components/common/input';
|
|
5
|
+
import { Badge } from '../src/components/common/badge';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Daily X Homepage Template
|
|
9
|
+
* Dark theme with purple (#8B5CF6) and orange (#F97316) accents
|
|
10
|
+
* Per handoff document specifications
|
|
11
|
+
*/
|
|
12
|
+
export default function HomePage() {
|
|
13
|
+
return (
|
|
14
|
+
<div className="min-h-screen bg-[#0F0F14] text-white font-['Inter',sans-serif]">
|
|
15
|
+
{/* Navigation */}
|
|
16
|
+
<nav className="border-b border-zinc-800 bg-[#0F0F14]/90 backdrop-blur-md sticky top-0 z-50">
|
|
17
|
+
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
18
|
+
<div className="flex justify-between items-center h-16">
|
|
19
|
+
<div className="flex items-center gap-3">
|
|
20
|
+
<div className="w-9 h-9 bg-gradient-to-br from-purple-500 to-orange-500 rounded-lg flex items-center justify-center">
|
|
21
|
+
<span className="text-white font-extrabold text-sm">dX</span>
|
|
22
|
+
</div>
|
|
23
|
+
<span className="font-bold text-white text-lg tracking-tight">daily x</span>
|
|
24
|
+
</div>
|
|
25
|
+
<div className="hidden md:flex items-center gap-8">
|
|
26
|
+
<a href="#products" className="text-sm text-zinc-400 hover:text-white transition-colors">Products</a>
|
|
27
|
+
<a href="#features" className="text-sm text-zinc-400 hover:text-white transition-colors">Features</a>
|
|
28
|
+
<a href="#pricing" className="text-sm text-zinc-400 hover:text-white transition-colors">Pricing</a>
|
|
29
|
+
<Button variant="ghost" size="sm">Sign In</Button>
|
|
30
|
+
<Button size="sm">Get Started</Button>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
</nav>
|
|
35
|
+
|
|
36
|
+
{/* Hero Section */}
|
|
37
|
+
<section className="pt-24 pb-32 px-4 sm:px-6 lg:px-8 relative overflow-hidden">
|
|
38
|
+
{/* Background gradient orbs */}
|
|
39
|
+
<div className="absolute top-0 left-1/4 w-96 h-96 bg-purple-500/20 rounded-full blur-3xl" />
|
|
40
|
+
<div className="absolute bottom-0 right-1/4 w-96 h-96 bg-orange-500/10 rounded-full blur-3xl" />
|
|
41
|
+
|
|
42
|
+
<div className="max-w-7xl mx-auto relative">
|
|
43
|
+
<div className="text-center max-w-4xl mx-auto">
|
|
44
|
+
<Badge className="mb-8 bg-purple-500/10 text-purple-400 border-purple-500/30 hover:bg-purple-500/20">
|
|
45
|
+
AI-Powered Automation Suite
|
|
46
|
+
</Badge>
|
|
47
|
+
<h1 className="text-5xl md:text-6xl lg:text-7xl font-extrabold tracking-tight mb-8 leading-[1.1]">
|
|
48
|
+
Automate Your
|
|
49
|
+
<span className="block bg-gradient-to-r from-purple-400 via-purple-500 to-orange-500 bg-clip-text text-transparent">
|
|
50
|
+
Daily Workflows
|
|
51
|
+
</span>
|
|
52
|
+
</h1>
|
|
53
|
+
<p className="text-xl md:text-2xl text-zinc-400 mb-12 leading-relaxed max-w-2xl mx-auto">
|
|
54
|
+
Five intelligent tools that transform how teams work. From LinkedIn coordination to SEO automation—powered by AI that learns your patterns.
|
|
55
|
+
</p>
|
|
56
|
+
<div className="flex flex-col sm:flex-row gap-4 justify-center">
|
|
57
|
+
<Button size="lg" className="text-base">
|
|
58
|
+
Start Free Trial
|
|
59
|
+
</Button>
|
|
60
|
+
<Button size="lg" variant="outline" className="text-base">
|
|
61
|
+
Watch Demo
|
|
62
|
+
</Button>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
|
|
66
|
+
{/* Product Pills */}
|
|
67
|
+
<div className="mt-20 flex flex-wrap justify-center gap-3">
|
|
68
|
+
{[
|
|
69
|
+
{ name: 'dailyreach.ai', desc: 'LinkedIn Coordination' },
|
|
70
|
+
{ name: 'dailyseo.ai', desc: 'SEO Automation' },
|
|
71
|
+
{ name: 'dailydashboards.ai', desc: 'Business Intelligence' },
|
|
72
|
+
{ name: 'dailyscrape.ai', desc: 'Data Extraction' },
|
|
73
|
+
{ name: 'dailycoverage.ai', desc: 'Content Generation' },
|
|
74
|
+
].map((product) => (
|
|
75
|
+
<div
|
|
76
|
+
key={product.name}
|
|
77
|
+
className="px-4 py-2 bg-zinc-900 border border-zinc-800 rounded-full text-sm hover:border-purple-500/50 hover:bg-zinc-800 transition-all cursor-pointer group"
|
|
78
|
+
>
|
|
79
|
+
<span className="text-purple-400 font-semibold group-hover:text-purple-300">{product.name}</span>
|
|
80
|
+
<span className="text-zinc-500 ml-2">{product.desc}</span>
|
|
81
|
+
</div>
|
|
82
|
+
))}
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
</section>
|
|
86
|
+
|
|
87
|
+
{/* Features Grid */}
|
|
88
|
+
<section id="features" className="py-24 px-4 sm:px-6 lg:px-8 bg-zinc-900/50">
|
|
89
|
+
<div className="max-w-7xl mx-auto">
|
|
90
|
+
<div className="text-center mb-16">
|
|
91
|
+
<h2 className="text-3xl md:text-4xl font-extrabold mb-4">
|
|
92
|
+
Built for Modern Teams
|
|
93
|
+
</h2>
|
|
94
|
+
<p className="text-lg text-zinc-400 max-w-2xl mx-auto">
|
|
95
|
+
AI-driven tools designed to eliminate repetitive work and amplify your impact
|
|
96
|
+
</p>
|
|
97
|
+
</div>
|
|
98
|
+
|
|
99
|
+
<div className="grid md:grid-cols-3 gap-6">
|
|
100
|
+
<Card className="bg-zinc-900 border-zinc-800 hover:border-purple-500/30 transition-colors group">
|
|
101
|
+
<CardHeader>
|
|
102
|
+
<div className="w-12 h-12 bg-purple-500/10 rounded-xl flex items-center justify-center mb-4 group-hover:bg-purple-500/20 transition-colors">
|
|
103
|
+
<svg className="w-6 h-6 text-purple-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
|
104
|
+
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z" />
|
|
105
|
+
</svg>
|
|
106
|
+
</div>
|
|
107
|
+
<CardTitle className="text-xl text-white">Intelligent Memory</CardTitle>
|
|
108
|
+
<CardDescription className="text-base text-zinc-400">
|
|
109
|
+
AI that learns from your work patterns and surfaces the right information exactly when you need it.
|
|
110
|
+
</CardDescription>
|
|
111
|
+
</CardHeader>
|
|
112
|
+
</Card>
|
|
113
|
+
|
|
114
|
+
<Card className="bg-zinc-900 border-zinc-800 hover:border-orange-500/30 transition-colors group">
|
|
115
|
+
<CardHeader>
|
|
116
|
+
<div className="w-12 h-12 bg-orange-500/10 rounded-xl flex items-center justify-center mb-4 group-hover:bg-orange-500/20 transition-colors">
|
|
117
|
+
<svg className="w-6 h-6 text-orange-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
|
118
|
+
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" />
|
|
119
|
+
</svg>
|
|
120
|
+
</div>
|
|
121
|
+
<CardTitle className="text-xl text-white">Lightning Fast</CardTitle>
|
|
122
|
+
<CardDescription className="text-base text-zinc-400">
|
|
123
|
+
Sub-2-second load times. Lighthouse scores above 90. Optimized for speed at every layer.
|
|
124
|
+
</CardDescription>
|
|
125
|
+
</CardHeader>
|
|
126
|
+
</Card>
|
|
127
|
+
|
|
128
|
+
<Card className="bg-zinc-900 border-zinc-800 hover:border-purple-500/30 transition-colors group">
|
|
129
|
+
<CardHeader>
|
|
130
|
+
<div className="w-12 h-12 bg-purple-500/10 rounded-xl flex items-center justify-center mb-4 group-hover:bg-purple-500/20 transition-colors">
|
|
131
|
+
<svg className="w-6 h-6 text-purple-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
|
132
|
+
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15" />
|
|
133
|
+
</svg>
|
|
134
|
+
</div>
|
|
135
|
+
<CardTitle className="text-xl text-white">Real-time Sync</CardTitle>
|
|
136
|
+
<CardDescription className="text-base text-zinc-400">
|
|
137
|
+
Changes propagate instantly across all devices. Conflict-free collaboration built in.
|
|
138
|
+
</CardDescription>
|
|
139
|
+
</CardHeader>
|
|
140
|
+
</Card>
|
|
141
|
+
</div>
|
|
142
|
+
</div>
|
|
143
|
+
</section>
|
|
144
|
+
|
|
145
|
+
{/* Product Showcase */}
|
|
146
|
+
<section id="products" className="py-24 px-4 sm:px-6 lg:px-8">
|
|
147
|
+
<div className="max-w-7xl mx-auto">
|
|
148
|
+
<div className="grid lg:grid-cols-2 gap-12 items-center">
|
|
149
|
+
<div>
|
|
150
|
+
<Badge className="mb-6 bg-orange-500/10 text-orange-400 border-orange-500/30">
|
|
151
|
+
Featured Product
|
|
152
|
+
</Badge>
|
|
153
|
+
<h2 className="text-4xl md:text-5xl font-extrabold mb-6">
|
|
154
|
+
dailyreach.ai
|
|
155
|
+
</h2>
|
|
156
|
+
<p className="text-xl text-zinc-400 mb-8 leading-relaxed">
|
|
157
|
+
Coordinate your team's LinkedIn presence with AI-powered content recommendations, optimal posting times, and engagement analytics.
|
|
158
|
+
</p>
|
|
159
|
+
<ul className="space-y-4 mb-8">
|
|
160
|
+
{[
|
|
161
|
+
'AI-powered content recommendations',
|
|
162
|
+
'Team coordination dashboard',
|
|
163
|
+
'Automated scheduling',
|
|
164
|
+
'Engagement analytics',
|
|
165
|
+
].map((feature) => (
|
|
166
|
+
<li key={feature} className="flex items-center gap-3 text-zinc-300">
|
|
167
|
+
<div className="w-5 h-5 bg-purple-500/20 rounded-full flex items-center justify-center">
|
|
168
|
+
<svg className="w-3 h-3 text-purple-400" fill="currentColor" viewBox="0 0 20 20">
|
|
169
|
+
<path fillRule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clipRule="evenodd" />
|
|
170
|
+
</svg>
|
|
171
|
+
</div>
|
|
172
|
+
{feature}
|
|
173
|
+
</li>
|
|
174
|
+
))}
|
|
175
|
+
</ul>
|
|
176
|
+
<Button size="lg">
|
|
177
|
+
Try dailyreach.ai Free
|
|
178
|
+
</Button>
|
|
179
|
+
</div>
|
|
180
|
+
<div className="relative">
|
|
181
|
+
<div className="rounded-2xl border border-zinc-800 bg-zinc-900 overflow-hidden shadow-2xl">
|
|
182
|
+
<div className="aspect-[4/3] bg-gradient-to-br from-purple-500/5 to-orange-500/5 flex items-center justify-center">
|
|
183
|
+
<div className="text-center">
|
|
184
|
+
<div className="w-20 h-20 bg-gradient-to-br from-purple-500/20 to-orange-500/20 rounded-2xl mx-auto mb-4 flex items-center justify-center">
|
|
185
|
+
<svg className="w-10 h-10 text-purple-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
|
186
|
+
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" />
|
|
187
|
+
</svg>
|
|
188
|
+
</div>
|
|
189
|
+
<p className="text-zinc-500 text-sm">Product Screenshot</p>
|
|
190
|
+
</div>
|
|
191
|
+
</div>
|
|
192
|
+
</div>
|
|
193
|
+
{/* Floating accent */}
|
|
194
|
+
<div className="absolute -bottom-6 -right-6 w-32 h-32 bg-orange-500/10 rounded-full blur-2xl" />
|
|
195
|
+
</div>
|
|
196
|
+
</div>
|
|
197
|
+
</div>
|
|
198
|
+
</section>
|
|
199
|
+
|
|
200
|
+
{/* Social Proof */}
|
|
201
|
+
<section className="py-24 px-4 sm:px-6 lg:px-8 bg-zinc-900/50">
|
|
202
|
+
<div className="max-w-4xl mx-auto text-center">
|
|
203
|
+
<div className="inline-flex items-center gap-1 mb-8">
|
|
204
|
+
{[...Array(5)].map((_, i) => (
|
|
205
|
+
<svg key={i} className="w-5 h-5 text-orange-400" fill="currentColor" viewBox="0 0 20 20">
|
|
206
|
+
<path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" />
|
|
207
|
+
</svg>
|
|
208
|
+
))}
|
|
209
|
+
</div>
|
|
210
|
+
<blockquote className="text-2xl md:text-3xl font-medium mb-8 leading-relaxed">
|
|
211
|
+
"Daily X cut our context switching by 60%. It's like having a second brain for the entire team."
|
|
212
|
+
</blockquote>
|
|
213
|
+
<div className="flex items-center justify-center gap-4">
|
|
214
|
+
<div className="w-12 h-12 bg-gradient-to-br from-purple-500 to-orange-500 rounded-full flex items-center justify-center">
|
|
215
|
+
<span className="text-white font-semibold">SJ</span>
|
|
216
|
+
</div>
|
|
217
|
+
<div className="text-left">
|
|
218
|
+
<p className="font-semibold text-white">Sarah Johnson</p>
|
|
219
|
+
<p className="text-sm text-zinc-500">Head of Engineering, TechCorp</p>
|
|
220
|
+
</div>
|
|
221
|
+
</div>
|
|
222
|
+
</div>
|
|
223
|
+
</section>
|
|
224
|
+
|
|
225
|
+
{/* CTA Section */}
|
|
226
|
+
<section className="py-24 px-4 sm:px-6 lg:px-8 relative overflow-hidden">
|
|
227
|
+
<div className="absolute inset-0 bg-gradient-to-r from-purple-500/10 via-transparent to-orange-500/10" />
|
|
228
|
+
<div className="max-w-4xl mx-auto text-center relative">
|
|
229
|
+
<h2 className="text-3xl md:text-4xl lg:text-5xl font-extrabold mb-6">
|
|
230
|
+
Ready to transform your workflow?
|
|
231
|
+
</h2>
|
|
232
|
+
<p className="text-xl text-zinc-400 mb-10">
|
|
233
|
+
Join teams who've automated their daily work with AI.
|
|
234
|
+
</p>
|
|
235
|
+
<div className="flex flex-col sm:flex-row gap-3 max-w-md mx-auto">
|
|
236
|
+
<Input
|
|
237
|
+
type="email"
|
|
238
|
+
placeholder="Enter your email"
|
|
239
|
+
className="bg-zinc-900 border-zinc-700 text-white placeholder:text-zinc-500 h-12"
|
|
240
|
+
/>
|
|
241
|
+
<Button size="lg" className="whitespace-nowrap h-12">
|
|
242
|
+
Get Started
|
|
243
|
+
</Button>
|
|
244
|
+
</div>
|
|
245
|
+
<p className="text-sm text-zinc-500 mt-4">
|
|
246
|
+
No credit card required • 14-day free trial
|
|
247
|
+
</p>
|
|
248
|
+
</div>
|
|
249
|
+
</section>
|
|
250
|
+
|
|
251
|
+
{/* Footer */}
|
|
252
|
+
<footer className="bg-zinc-950 border-t border-zinc-800 py-12 px-4 sm:px-6 lg:px-8">
|
|
253
|
+
<div className="max-w-7xl mx-auto">
|
|
254
|
+
<div className="grid md:grid-cols-5 gap-8 mb-12">
|
|
255
|
+
<div className="md:col-span-2">
|
|
256
|
+
<div className="flex items-center gap-3 mb-4">
|
|
257
|
+
<div className="w-8 h-8 bg-gradient-to-br from-purple-500 to-orange-500 rounded-lg flex items-center justify-center">
|
|
258
|
+
<span className="text-white font-extrabold text-xs">dX</span>
|
|
259
|
+
</div>
|
|
260
|
+
<span className="font-bold text-white">daily x</span>
|
|
261
|
+
</div>
|
|
262
|
+
<p className="text-sm text-zinc-500 max-w-xs">
|
|
263
|
+
AI-powered automation suite for modern teams. Transform how you work, one daily task at a time.
|
|
264
|
+
</p>
|
|
265
|
+
</div>
|
|
266
|
+
<div>
|
|
267
|
+
<h3 className="font-semibold text-white mb-4">Products</h3>
|
|
268
|
+
<ul className="space-y-2 text-sm text-zinc-500">
|
|
269
|
+
<li><a href="#" className="hover:text-purple-400 transition-colors">dailyreach.ai</a></li>
|
|
270
|
+
<li><a href="#" className="hover:text-purple-400 transition-colors">dailyseo.ai</a></li>
|
|
271
|
+
<li><a href="#" className="hover:text-purple-400 transition-colors">dailydashboards.ai</a></li>
|
|
272
|
+
<li><a href="#" className="hover:text-purple-400 transition-colors">dailyscrape.ai</a></li>
|
|
273
|
+
<li><a href="#" className="hover:text-purple-400 transition-colors">dailycoverage.ai</a></li>
|
|
274
|
+
</ul>
|
|
275
|
+
</div>
|
|
276
|
+
<div>
|
|
277
|
+
<h3 className="font-semibold text-white mb-4">Company</h3>
|
|
278
|
+
<ul className="space-y-2 text-sm text-zinc-500">
|
|
279
|
+
<li><a href="#" className="hover:text-purple-400 transition-colors">About</a></li>
|
|
280
|
+
<li><a href="#" className="hover:text-purple-400 transition-colors">Blog</a></li>
|
|
281
|
+
<li><a href="#" className="hover:text-purple-400 transition-colors">Careers</a></li>
|
|
282
|
+
<li><a href="#" className="hover:text-purple-400 transition-colors">Contact</a></li>
|
|
283
|
+
</ul>
|
|
284
|
+
</div>
|
|
285
|
+
<div>
|
|
286
|
+
<h3 className="font-semibold text-white mb-4">Legal</h3>
|
|
287
|
+
<ul className="space-y-2 text-sm text-zinc-500">
|
|
288
|
+
<li><a href="#" className="hover:text-purple-400 transition-colors">Privacy</a></li>
|
|
289
|
+
<li><a href="#" className="hover:text-purple-400 transition-colors">Terms</a></li>
|
|
290
|
+
<li><a href="#" className="hover:text-purple-400 transition-colors">Security</a></li>
|
|
291
|
+
</ul>
|
|
292
|
+
</div>
|
|
293
|
+
</div>
|
|
294
|
+
<div className="border-t border-zinc-800 pt-8 flex flex-col md:flex-row justify-between items-center gap-4">
|
|
295
|
+
<p className="text-sm text-zinc-600">© 2026 Daily X. All rights reserved.</p>
|
|
296
|
+
<div className="flex gap-6">
|
|
297
|
+
<a href="#" className="text-zinc-600 hover:text-purple-400 transition-colors">
|
|
298
|
+
<span className="sr-only">Twitter</span>
|
|
299
|
+
<svg className="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
|
|
300
|
+
<path d="M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84" />
|
|
301
|
+
</svg>
|
|
302
|
+
</a>
|
|
303
|
+
<a href="#" className="text-zinc-600 hover:text-purple-400 transition-colors">
|
|
304
|
+
<span className="sr-only">GitHub</span>
|
|
305
|
+
<svg className="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
|
|
306
|
+
<path fillRule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clipRule="evenodd" />
|
|
307
|
+
</svg>
|
|
308
|
+
</a>
|
|
309
|
+
<a href="#" className="text-zinc-600 hover:text-purple-400 transition-colors">
|
|
310
|
+
<span className="sr-only">LinkedIn</span>
|
|
311
|
+
<svg className="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
|
|
312
|
+
<path fillRule="evenodd" d="M19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z" clipRule="evenodd" />
|
|
313
|
+
</svg>
|
|
314
|
+
</a>
|
|
315
|
+
</div>
|
|
316
|
+
</div>
|
|
317
|
+
</div>
|
|
318
|
+
</footer>
|
|
319
|
+
</div>
|
|
320
|
+
);
|
|
321
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Daily Platform - Home Page Example</title>
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<div id="root"></div>
|
|
10
|
+
<script type="module" src="/main.tsx"></script>
|
|
11
|
+
</body>
|
|
12
|
+
</html>
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import React, { useState } from 'react'
|
|
2
|
+
import ReactDOM from 'react-dom/client'
|
|
3
|
+
import './styles.css'
|
|
4
|
+
|
|
5
|
+
// Import example pages
|
|
6
|
+
import { DashboardPage } from './pages/DashboardPage'
|
|
7
|
+
import { ListPage, ListPageEmpty } from './pages/ListPage'
|
|
8
|
+
import { LoginPage } from './pages/LoginPage'
|
|
9
|
+
import { SignupPage } from './pages/SignupPage'
|
|
10
|
+
import { SettingsPage } from './pages/SettingsPage'
|
|
11
|
+
import { OnboardingPage } from './pages/OnboardingPage'
|
|
12
|
+
import { BlogPage } from './pages/BlogPage'
|
|
13
|
+
import { ContactPage } from './pages/ContactPage'
|
|
14
|
+
import { AboutPage } from './pages/AboutPage'
|
|
15
|
+
import { PricingPage } from './pages/PricingPage'
|
|
16
|
+
import HomePage from './home-page'
|
|
17
|
+
|
|
18
|
+
type PageKey = 'home' | 'about' | 'pricing' | 'blog' | 'contact' | 'dashboard' | 'list' | 'list-empty' | 'login' | 'signup' | 'settings' | 'onboarding'
|
|
19
|
+
|
|
20
|
+
const pages: Record<PageKey, { label: string; component: React.ComponentType }> = {
|
|
21
|
+
home: { label: 'Home (Marketing)', component: HomePage },
|
|
22
|
+
about: { label: 'About Us', component: AboutPage },
|
|
23
|
+
pricing: { label: 'Pricing', component: PricingPage },
|
|
24
|
+
blog: { label: 'Blog', component: BlogPage },
|
|
25
|
+
contact: { label: 'Contact', component: ContactPage },
|
|
26
|
+
dashboard: { label: 'Dashboard', component: DashboardPage },
|
|
27
|
+
list: { label: 'List Page', component: ListPage },
|
|
28
|
+
'list-empty': { label: 'List (Empty State)', component: ListPageEmpty },
|
|
29
|
+
login: { label: 'Login', component: LoginPage },
|
|
30
|
+
signup: { label: 'Sign Up', component: SignupPage },
|
|
31
|
+
settings: { label: 'Settings', component: SettingsPage },
|
|
32
|
+
onboarding: { label: 'Onboarding', component: OnboardingPage },
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function App() {
|
|
36
|
+
const [currentPage, setCurrentPage] = useState<PageKey>('home')
|
|
37
|
+
const [navOpen, setNavOpen] = useState(true)
|
|
38
|
+
|
|
39
|
+
const CurrentComponent = pages[currentPage].component
|
|
40
|
+
|
|
41
|
+
return (
|
|
42
|
+
<div className="min-h-screen bg-[#0F0F14]">
|
|
43
|
+
{/* Floating Nav */}
|
|
44
|
+
<div className={`fixed top-4 left-4 z-50 transition-all ${navOpen ? 'w-56' : 'w-auto'}`}>
|
|
45
|
+
<div className="bg-zinc-900 border border-zinc-800 rounded-lg shadow-xl overflow-hidden">
|
|
46
|
+
<button
|
|
47
|
+
onClick={() => setNavOpen(!navOpen)}
|
|
48
|
+
className="w-full px-4 py-3 flex items-center justify-between text-white hover:bg-zinc-800 transition-colors"
|
|
49
|
+
>
|
|
50
|
+
<span className="font-semibold text-sm">
|
|
51
|
+
{navOpen ? 'Page Examples' : '☰'}
|
|
52
|
+
</span>
|
|
53
|
+
{navOpen && (
|
|
54
|
+
<svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
55
|
+
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M6 18L18 6M6 6l12 12" />
|
|
56
|
+
</svg>
|
|
57
|
+
)}
|
|
58
|
+
</button>
|
|
59
|
+
|
|
60
|
+
{navOpen && (
|
|
61
|
+
<nav className="border-t border-zinc-800">
|
|
62
|
+
{(Object.keys(pages) as PageKey[]).map((key) => (
|
|
63
|
+
<button
|
|
64
|
+
key={key}
|
|
65
|
+
onClick={() => setCurrentPage(key)}
|
|
66
|
+
className={`w-full px-4 py-2.5 text-left text-sm transition-colors ${
|
|
67
|
+
currentPage === key
|
|
68
|
+
? 'bg-purple-500/20 text-purple-400 border-l-2 border-purple-500'
|
|
69
|
+
: 'text-zinc-400 hover:bg-zinc-800 hover:text-white border-l-2 border-transparent'
|
|
70
|
+
}`}
|
|
71
|
+
>
|
|
72
|
+
{pages[key].label}
|
|
73
|
+
</button>
|
|
74
|
+
))}
|
|
75
|
+
</nav>
|
|
76
|
+
)}
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
|
|
80
|
+
{/* Page Content */}
|
|
81
|
+
<CurrentComponent />
|
|
82
|
+
</div>
|
|
83
|
+
)
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
ReactDOM.createRoot(document.getElementById('root')!).render(
|
|
87
|
+
<React.StrictMode>
|
|
88
|
+
<App />
|
|
89
|
+
</React.StrictMode>,
|
|
90
|
+
)
|