feat: add "coming soon" shop page with email signup
Create stylish placeholder page for MycoFi shop with branding and email form. Co-authored-by: Jeff Emmett <46964190+Jeff-Emmett@users.noreply.github.com>
This commit is contained in:
parent
4600517d80
commit
d412dc2d05
|
|
@ -0,0 +1,65 @@
|
||||||
|
import Link from "next/link"
|
||||||
|
import { Button } from "@/components/ui/button"
|
||||||
|
import { Input } from "@/components/ui/input"
|
||||||
|
import { ArrowLeft, ShoppingBag, Sparkles } from "lucide-react"
|
||||||
|
|
||||||
|
export default function ShopPage() {
|
||||||
|
return (
|
||||||
|
<div className="relative min-h-screen bg-background">
|
||||||
|
{/* Background Pattern */}
|
||||||
|
<div className="absolute inset-0 opacity-5">
|
||||||
|
<div className="absolute inset-0 bg-[radial-gradient(circle_at_50%_50%,_hsl(var(--primary))_1px,_transparent_1px)] bg-[size:24px_24px]" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Content */}
|
||||||
|
<div className="relative flex min-h-screen flex-col items-center justify-center px-4 py-16">
|
||||||
|
<Link
|
||||||
|
href="/"
|
||||||
|
className="absolute left-4 top-4 inline-flex items-center gap-2 text-sm text-muted-foreground transition-colors hover:text-foreground md:left-8 md:top-8"
|
||||||
|
>
|
||||||
|
<ArrowLeft className="h-4 w-4" />
|
||||||
|
Back to MycoFi
|
||||||
|
</Link>
|
||||||
|
|
||||||
|
<div className="mx-auto max-w-2xl text-center">
|
||||||
|
{/* Icon */}
|
||||||
|
<div className="mb-8 inline-flex items-center justify-center rounded-full bg-primary/10 p-6">
|
||||||
|
<ShoppingBag className="h-16 w-16 text-primary" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Title */}
|
||||||
|
<h1 className="mb-4 font-serif text-5xl font-bold text-foreground md:text-6xl">MycoFi Swag</h1>
|
||||||
|
|
||||||
|
<div className="mb-6 inline-flex items-center gap-2 rounded-full bg-secondary/20 px-4 py-2 text-sm font-medium text-secondary">
|
||||||
|
<Sparkles className="h-4 w-4" />
|
||||||
|
<span>Coming Soon</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Description */}
|
||||||
|
<p className="mb-12 text-lg leading-relaxed text-muted-foreground">
|
||||||
|
We're cultivating something special. Soon you'll be able to wear the mycelial revolution with exclusive
|
||||||
|
MycoFi merchandise, books, and more.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{/* Email Signup */}
|
||||||
|
<div className="mx-auto max-w-md">
|
||||||
|
<form className="flex flex-col gap-3 sm:flex-row">
|
||||||
|
<Input type="email" placeholder="Enter your email" className="flex-1 bg-card" />
|
||||||
|
<Button type="submit" className="whitespace-nowrap">
|
||||||
|
Notify Me
|
||||||
|
</Button>
|
||||||
|
</form>
|
||||||
|
<p className="mt-3 text-xs text-muted-foreground">Be the first to know when the shop launches</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Decorative Elements */}
|
||||||
|
<div className="mt-16 flex items-center justify-center gap-8 text-muted-foreground/30">
|
||||||
|
<div className="h-px w-16 bg-current" />
|
||||||
|
<span className="text-sm">Growing Soon</span>
|
||||||
|
<div className="h-px w-16 bg-current" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
import * as React from 'react'
|
||||||
|
|
||||||
|
import { cn } from '@/lib/utils'
|
||||||
|
|
||||||
|
function Input({ className, type, ...props }: React.ComponentProps<'input'>) {
|
||||||
|
return (
|
||||||
|
<input
|
||||||
|
type={type}
|
||||||
|
data-slot="input"
|
||||||
|
className={cn(
|
||||||
|
'file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',
|
||||||
|
'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',
|
||||||
|
'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive',
|
||||||
|
className,
|
||||||
|
)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export { Input }
|
||||||
Loading…
Reference in New Issue