Seed: landing template (12 files)
This commit is contained in:
+8
-8
@@ -63,7 +63,7 @@ export default function LandingPage() {
|
|||||||
<div className="min-h-screen bg-background text-foreground antialiased">
|
<div className="min-h-screen bg-background text-foreground antialiased">
|
||||||
{/* ── HEADER ── */}
|
{/* ── HEADER ── */}
|
||||||
<header
|
<header
|
||||||
className={`fixed top-0 inset-x-0 z-50 transition-all duration-300 \${
|
className={`fixed top-0 inset-x-0 z-50 transition-all duration-300 ${
|
||||||
scrolled
|
scrolled
|
||||||
? "bg-background/95 backdrop-blur-lg border-b shadow-sm"
|
? "bg-background/95 backdrop-blur-lg border-b shadow-sm"
|
||||||
: "bg-transparent"
|
: "bg-transparent"
|
||||||
@@ -148,7 +148,7 @@ export default function LandingPage() {
|
|||||||
<div className="flex -space-x-3">
|
<div className="flex -space-x-3">
|
||||||
{["A", "B", "C", "D"].map((letter, i) => (
|
{["A", "B", "C", "D"].map((letter, i) => (
|
||||||
<Avatar key={i} className="h-9 w-9 border-2 border-violet-900 ring-2 ring-violet-900">
|
<Avatar key={i} className="h-9 w-9 border-2 border-violet-900 ring-2 ring-violet-900">
|
||||||
<AvatarFallback className={`text-xs font-medium text-white \${
|
<AvatarFallback className={`text-xs font-medium text-white ${
|
||||||
["bg-pink-500", "bg-indigo-500", "bg-emerald-500", "bg-amber-500"][i]
|
["bg-pink-500", "bg-indigo-500", "bg-emerald-500", "bg-amber-500"][i]
|
||||||
}`}>{letter}</AvatarFallback>
|
}`}>{letter}</AvatarFallback>
|
||||||
</Avatar>
|
</Avatar>
|
||||||
@@ -202,13 +202,13 @@ export default function LandingPage() {
|
|||||||
].map((feature, i) => (
|
].map((feature, i) => (
|
||||||
<div
|
<div
|
||||||
key={i}
|
key={i}
|
||||||
className={`flex flex-col lg:flex-row gap-12 lg:gap-16 items-center mb-24 last:mb-0 \${
|
className={`flex flex-col lg:flex-row gap-12 lg:gap-16 items-center mb-24 last:mb-0 ${
|
||||||
i % 2 === 1 ? "lg:flex-row-reverse" : ""
|
i % 2 === 1 ? "lg:flex-row-reverse" : ""
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
{/* Image placeholder */}
|
{/* Image placeholder */}
|
||||||
<div className="flex-1 w-full animate-scale-in">
|
<div className="flex-1 w-full animate-scale-in">
|
||||||
<div className={`aspect-video w-full rounded-2xl bg-gradient-to-br \${feature.gradient} opacity-90 shadow-2xl relative overflow-hidden`}>
|
<div className={`aspect-video w-full rounded-2xl bg-gradient-to-br ${feature.gradient} opacity-90 shadow-2xl relative overflow-hidden`}>
|
||||||
<div className="absolute inset-0" style={{ backgroundImage: "radial-gradient(circle at 25% 25%, rgba(255,255,255,0.15) 1px, transparent 1px)", backgroundSize: "20px 20px" }} />
|
<div className="absolute inset-0" style={{ backgroundImage: "radial-gradient(circle at 25% 25%, rgba(255,255,255,0.15) 1px, transparent 1px)", backgroundSize: "20px 20px" }} />
|
||||||
<div className="absolute inset-0 flex items-center justify-center">
|
<div className="absolute inset-0 flex items-center justify-center">
|
||||||
<div className="w-24 h-24 rounded-2xl bg-white/10 backdrop-blur-sm flex items-center justify-center text-white/60 text-4xl font-bold shadow-lg">{i + 1}</div>
|
<div className="w-24 h-24 rounded-2xl bg-white/10 backdrop-blur-sm flex items-center justify-center text-white/60 text-4xl font-bold shadow-lg">{i + 1}</div>
|
||||||
@@ -299,7 +299,7 @@ export default function LandingPage() {
|
|||||||
<button
|
<button
|
||||||
key={i}
|
key={i}
|
||||||
onClick={() => setActiveTestimonial(i)}
|
onClick={() => setActiveTestimonial(i)}
|
||||||
className={`h-2.5 rounded-full transition-all duration-300 \${
|
className={`h-2.5 rounded-full transition-all duration-300 ${
|
||||||
i === activeTestimonial ? "w-8 bg-primary" : "w-2.5 bg-muted-foreground/30 hover:bg-muted-foreground/50"
|
i === activeTestimonial ? "w-8 bg-primary" : "w-2.5 bg-muted-foreground/30 hover:bg-muted-foreground/50"
|
||||||
}`}
|
}`}
|
||||||
/>
|
/>
|
||||||
@@ -353,7 +353,7 @@ export default function LandingPage() {
|
|||||||
cta: "Contact Sales", popular: false,
|
cta: "Contact Sales", popular: false,
|
||||||
},
|
},
|
||||||
].map((plan, i) => (
|
].map((plan, i) => (
|
||||||
<Card key={i} className={`relative border animate-fade-up hover:scale-[1.02] transition-all duration-300 \${plan.popular ? "border-primary shadow-2xl shadow-primary/20 scale-105" : "border-border hover:border-primary/30 hover:shadow-lg hover:-translate-y-1"}`}>
|
<Card key={i} className={`relative border animate-fade-up hover:scale-[1.02] transition-all duration-300 ${plan.popular ? "border-primary shadow-2xl shadow-primary/20 scale-105" : "border-border hover:border-primary/30 hover:shadow-lg hover:-translate-y-1"}`}>
|
||||||
{plan.popular && (
|
{plan.popular && (
|
||||||
<div className="absolute -top-3 left-1/2 -translate-x-1/2">
|
<div className="absolute -top-3 left-1/2 -translate-x-1/2">
|
||||||
<Badge className="bg-primary text-primary-foreground shadow-md">Most Popular</Badge>
|
<Badge className="bg-primary text-primary-foreground shadow-md">Most Popular</Badge>
|
||||||
@@ -380,7 +380,7 @@ export default function LandingPage() {
|
|||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
<Button className={`w-full rounded-full \${plan.popular ? "" : "variant-outline"}`} variant={plan.popular ? "default" : "outline"}>
|
<Button className={`w-full rounded-full ${plan.popular ? "" : "variant-outline"}`} variant={plan.popular ? "default" : "outline"}>
|
||||||
{plan.cta} <ArrowRight className="ml-2 h-4 w-4" />
|
{plan.cta} <ArrowRight className="ml-2 h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
</CardContent>
|
</CardContent>
|
||||||
@@ -408,7 +408,7 @@ export default function LandingPage() {
|
|||||||
{ q: "Do you offer a trial period?", a: "Yes, all paid plans come with a 14-day free trial. You can explore all features before committing." },
|
{ q: "Do you offer a trial period?", a: "Yes, all paid plans come with a 14-day free trial. You can explore all features before committing." },
|
||||||
{ q: "How do I get support?", a: "Free plans get community support. Pro plans include priority email support with 4-hour response times. Enterprise gets dedicated account management and phone support." },
|
{ q: "How do I get support?", a: "Free plans get community support. Pro plans include priority email support with 4-hour response times. Enterprise gets dedicated account management and phone support." },
|
||||||
].map((faq, i) => (
|
].map((faq, i) => (
|
||||||
<AccordionItem key={i} value={`faq-\${i}`}>
|
<AccordionItem key={i} value={`faq-${i}`}>
|
||||||
<AccordionTrigger className="text-left">{faq.q}</AccordionTrigger>
|
<AccordionTrigger className="text-left">{faq.q}</AccordionTrigger>
|
||||||
<AccordionContent className="text-muted-foreground">{faq.a}</AccordionContent>
|
<AccordionContent className="text-muted-foreground">{faq.a}</AccordionContent>
|
||||||
</AccordionItem>
|
</AccordionItem>
|
||||||
|
|||||||
Reference in New Issue
Block a user