registry/default/sections/newsletter-1.tsx
"use client";
import { ArrowRight, Mail, Sparkles } from "lucide-react";
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import { Checkbox } from "@/components/ui/checkbox";
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";
export default function Component() {
const handleSubmit = (e: React.FormEvent) => {
e.preventDefault();
// Handle form submission
};
return (
<div className="relative w-full bg-linear-to-b from-white to-gray-50 px-4 py-16 md:py-24 dark:from-background dark:to-neutral-900">
<div className="mx-auto max-w-3xl">
{/* Badge */}
<div className="mb-6 flex justify-center">
<Badge className="flex items-center gap-2 border-none bg-violet-100 px-4 py-1.5 text-violet-700 dark:bg-violet-950 dark:text-violet-300">
<Sparkles className="h-3.5 w-3.5" />
Stay Updated
</Badge>
</div>
{/* Heading */}
<div className="mb-6 text-center">
<h2 className="mb-4 font-semibold text-3xl text-gray-900 leading-tight md:text-4xl lg:text-5xl dark:text-gray-100">
Subscribe to our newsletter
</h2>
<p className="mx-auto max-w-2xl text-gray-600 text-lg leading-relaxed md:text-xl dark:text-gray-400">
Get the latest updates, articles, and resources delivered directly
to your inbox every week.
</p>
</div>
{/* Newsletter Form */}
<form className="mx-auto max-w-xl" onSubmit={handleSubmit}>
<div className="mb-4 flex flex-col gap-3 sm:flex-row sm:gap-2">
<div className="relative flex-1">
<Mail className="absolute top-1/2 left-3 h-5 w-5 -translate-y-1/2 text-gray-400" />
<Input
className="h-12 border-gray-200 py-3 pr-4 pl-11 placeholder:text-gray-400 focus-visible:ring-violet-500 dark:border-neutral-700 dark:bg-neutral-900 dark:text-white dark:placeholder:text-gray-500"
placeholder="Enter your email address"
required
type="email"
/>
</div>
<Button
className="group h-12 bg-violet-600 px-6 font-medium shadow-lg hover:bg-violet-700 dark:bg-violet-600 dark:hover:bg-violet-700"
type="submit"
>
Subscribe
<ArrowRight className="ml-2 h-4 w-4 transition-transform group-hover:translate-x-1" />
</Button>
</div>
{/* Privacy Notice */}
<div className="flex items-start gap-2">
<Checkbox
className="mt-1 border-gray-300 dark:border-neutral-600"
id="privacy"
/>
<Label
className="cursor-pointer text-gray-600 text-sm leading-relaxed dark:text-gray-400"
htmlFor="privacy"
>
I agree to receive marketing emails and accept the{" "}
<a
className="text-violet-600 underline hover:text-violet-700 dark:text-violet-400 dark:hover:text-violet-300"
href="#"
>
privacy policy
</a>
.
</Label>
</div>
</form>
{/* Stats or Social Proof */}
<div className="mt-12 flex flex-col items-center justify-center gap-6 sm:flex-row sm:gap-8">
<div className="text-center">
<p className="font-bold text-2xl text-gray-900 dark:text-gray-100">
50K+
</p>
<p className="text-gray-600 text-sm dark:text-gray-400">
Subscribers
</p>
</div>
<div className="hidden h-12 w-px bg-gray-200 sm:block dark:bg-neutral-700" />
<div className="text-center">
<p className="font-bold text-2xl text-gray-900 dark:text-gray-100">
Weekly
</p>
<p className="text-gray-600 text-sm dark:text-gray-400">Updates</p>
</div>
<div className="hidden h-12 w-px bg-gray-200 sm:block dark:bg-neutral-700" />
<div className="text-center">
<p className="font-bold text-2xl text-gray-900 dark:text-gray-100">
No Spam
</p>
<p className="text-gray-600 text-sm dark:text-gray-400">
Unsubscribe anytime
</p>
</div>
</div>
</div>
{/* Decorative Elements */}
<div className="absolute top-0 left-0 -z-10 h-96 w-96 opacity-30 blur-3xl">
<div className="h-full w-full rounded-full bg-violet-200 dark:bg-violet-950" />
</div>
<div className="absolute right-0 bottom-0 -z-10 h-96 w-96 opacity-30 blur-3xl">
<div className="h-full w-full rounded-full bg-blue-200 dark:bg-blue-950" />
</div>
</div>
);
}