
A two column section with intro copy on one side and the contact form on the other. Balances a personal message with a clear path to get in touch.
@shadcn-ui-blocks
import { Button } from '@/components/ui/button';
import { Card, CardContent } from '@/components/ui/card';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { Textarea } from '@/components/ui/textarea';
import { Mail, MapPin, Phone } from 'lucide-react';
export default function SplitLayout() {
return (
<section className="container mx-auto px-4 py-12 md:px-6 md:py-24 lg:py-32 2xl:max-w-[1400px]">
<div className="mx-auto max-w-6xl">
<div className="mb-10 text-center lg:mb-14 lg:text-left">
<h2 className="mb-2 text-3xl font-bold tracking-tight sm:text-4xl">
Contact Me
</h2>
<p className="text-muted-foreground mx-auto max-w-2xl lg:mx-0">
Have a project in mind or just want to say hello? I'd love to
hear from you.
</p>
</div>
<div className="grid gap-8 lg:grid-cols-2">
{/* Contact Information Side */}
<div className="order-2 lg:order-1">
<div className="space-y-8">
<div>
<h3 className="text-lg font-medium">Contact Information</h3>
<p className="text-muted-foreground mt-2">
Feel free to reach out through any of these channels.
</p>
</div>
<div className="space-y-6">
<div className="flex items-start">
<div className="flex-shrink-0">
<Mail className="text-primary size-5" />
</div>
<div className="ml-3">
<h4 className="text-sm font-medium">Email</h4>
<a
href="mailto:hello@example.com"
className="hover:text-primary text-muted-foreground mt-1 block text-sm"
>
hello@example.com
</a>
</div>
</div>
<div className="flex items-start">
<div className="flex-shrink-0">
<Phone className="text-primary size-5" />
</div>
<div className="ml-3">
<h4 className="text-sm font-medium">Phone</h4>
<a
href="tel:+1234567890"
className="hover:text-primary text-muted-foreground mt-1 block text-sm"
>
+1 (234) 567-890
</a>
</div>
</div>
<div className="flex items-start">
<div className="flex-shrink-0">
<MapPin className="text-primary size-5" />
</div>
<div className="ml-3">
<h4 className="text-sm font-medium">Location</h4>
<p className="text-muted-foreground mt-1 text-sm">
San Francisco, California, USA
</p>
</div>
</div>
</div>
<div>
<h3 className="mb-4 text-lg font-medium">Connect</h3>
<div className="flex space-x-4">
<a
href="#"
className="hover:text-primary text-muted-foreground"
>
<svg
className="size-5"
fill="currentColor"
viewBox="0 0 24 24"
aria-hidden="true"
>
<path
fillRule="evenodd"
d="M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z"
clipRule="evenodd"
></path>
</svg>
</a>
<a
href="#"
className="hover:text-primary text-muted-foreground"
>
<svg
className="size-5"
fill="currentColor"
viewBox="0 0 24 24"
aria-hidden="true"
>
<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"></path>
</svg>
</a>
<a
href="#"
className="hover:text-primary text-muted-foreground"
>
<svg
className="size-5"
fill="currentColor"
viewBox="0 0 24 24"
aria-hidden="true"
>
<path
fillRule="evenodd"
d="M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.067.06 1.407.06 4.123v.08c0 2.643-.012 2.987-.06 4.043-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.067.048-1.407.06-4.123.06h-.08c-2.643 0-2.987-.012-4.043-.06-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.047-1.024-.06-1.379-.06-3.808v-.63c0-2.43.013-2.784.06-3.808.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772A4.902 4.902 0 015.45 2.525c.636-.247 1.363-.416 2.427-.465C8.901 2.013 9.256 2 11.685 2h.63zm-.081 1.802h-.468c-2.456 0-2.784.011-3.807.058-.975.045-1.504.207-1.857.344-.467.182-.8.398-1.15.748-.35.35-.566.683-.748 1.15-.137.353-.3.882-.344 1.857-.047 1.023-.058 1.351-.058 3.807v.468c0 2.456.011 2.784.058 3.807.045.975.207 1.504.344 1.857.182.466.399.8.748 1.15.35.35.683.566 1.15.748.353.137.882.3 1.857.344 1.054.048 1.37.058 4.041.058h.08c2.597 0 2.917-.01 3.96-.058.976-.045 1.505-.207 1.858-.344.466-.182.8-.398 1.15-.748.35-.35.566-.683.748-1.15.137-.353.3-.882.344-1.857.048-1.055.058-1.37.058-4.041v-.08c0-2.597-.01-2.917-.058-3.96-.045-.976-.207-1.505-.344-1.858a3.097 3.097 0 00-.748-1.15 3.098 3.098 0 00-1.15-.748c-.353-.137-.882-.3-1.857-.344-1.023-.047-1.351-.058-3.807-.058zM12 6.865a5.135 5.135 0 110 10.27 5.135 5.135 0 010-10.27zm0 1.802a3.333 3.333 0 100 6.666 3.333 3.333 0 000-6.666zm5.338-3.205a1.2 1.2 0 110 2.4 1.2 1.2 0 010-2.4z"
clipRule="evenodd"
></path>
</svg>
</a>
<a
href="#"
className="hover:text-primary text-muted-foreground"
>
<svg
className="size-5"
fill="currentColor"
viewBox="0 0 24 24"
aria-hidden="true"
>
<path
fillRule="evenodd"
d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10c5.51 0 10-4.48 10-10S17.51 2 12 2zm6.605 4.61a8.502 8.502 0 011.93 5.314c-.281-.054-3.101-.629-5.943-.271-.065-.141-.12-.293-.184-.445a25.416 25.416 0 00-.564-1.236c3.145-1.28 4.577-3.124 4.761-3.362zM12 3.475c2.17 0 4.154.813 5.662 2.148-.152.216-1.443 1.941-4.48 3.08-1.399-2.57-2.95-4.675-3.189-5A8.687 8.687 0 0112 3.475zm-3.633.803a53.896 53.896 0 013.167 4.935c-3.992 1.063-7.517 1.04-7.896 1.04a8.581 8.581 0 014.729-5.975zM3.453 12.01v-.26c.37.01 4.512.065 8.775-1.215.25.477.477.965.694 1.453-.109.033-.228.065-.336.098-4.404 1.42-6.747 5.303-6.942 5.629a8.522 8.522 0 01-2.19-5.705zM12 20.547a8.482 8.482 0 01-5.239-1.8c.152-.315 1.888-3.656 6.703-5.337.022-.01.033-.01.054-.022a35.318 35.318 0 011.823 6.475 8.4 8.4 0 01-3.341.684zm4.761-1.465c-.086-.52-.542-3.015-1.659-6.084 2.679-.423 5.022.271 5.314.369a8.468 8.468 0 01-3.655 5.715z"
clipRule="evenodd"
></path>
</svg>
</a>
<a
href="#"
className="hover:text-primary text-muted-foreground"
>
<svg
className="size-5"
fill="currentColor"
viewBox="0 0 24 24"
aria-hidden="true"
>
<path 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" />
</svg>
</a>
</div>
</div>
</div>
</div>
{/* Contact Form Side */}
<div className="order-1 lg:order-2">
<Card>
<CardContent>
<form className="space-y-6">
<div className="grid gap-6 sm:grid-cols-2">
<div>
<Label htmlFor="first-name" className="mb-2 block">
First name
</Label>
<Input
id="first-name"
name="first-name"
placeholder="Your first name"
required
/>
</div>
<div>
<Label htmlFor="last-name" className="mb-2 block">
Last name
</Label>
<Input
id="last-name"
name="last-name"
placeholder="Your last name"
required
/>
</div>
</div>
<div>
<Label htmlFor="email" className="mb-2 block">
Email
</Label>
<Input
id="email"
name="email"
type="email"
placeholder="Your email address"
required
/>
</div>
<div>
<Label htmlFor="subject" className="mb-2 block">
Subject
</Label>
<Input
id="subject"
name="subject"
placeholder="What's this regarding?"
required
/>
</div>
<div>
<Label htmlFor="message" className="mb-2 block">
Message
</Label>
<Textarea
id="message"
name="message"
rows={4}
placeholder="Your message"
required
className="resize-none"
/>
</div>
<Button type="submit" className="w-full">
Send Message
</Button>
</form>
</CardContent>
</Card>
</div>
</div>
</div>
</section>
);
}
































