3 Timeline blocks built with Shadcn UI, Tailwind & React.
import { Button } from "@/components/ui/button";interface Feature {image: string;title: string;description: string;}interface Timeline3Props {heading: string;description: string;buttons: {primary: {text: string;url: string;};secondary: {text: string;url: string;};};features?: Feature[];}const Timeline3 = ({heading = "Experience the difference with us",description = "We believe in creating lasting partnerships with our clients, focusing on long-term success through collaborative innovation and dedicated support.",buttons = {primary: {text: "Start Now",url: "#",},secondary: {text: "Book a demo",url: "#",},},features = [{image: "https://shadcnblocks.com/images/block/placeholder-4.svg",title: "Dedicated Support",description:"Expanded operations to 5 new countries, reaching millions of new users.",},{image: "https://shadcnblocks.com/images/block/placeholder-5.svg",title: "Series B Funding",description:"Secured $50M in Series B funding to accelerate product development.",},{image: "https://shadcnblocks.com/images/block/placeholder-5.svg",title: "Product Launch",description: "Successfully launched our flagship product to market.",},{image: "https://shadcnblocks.com/images/block/placeholder-5.svg",title: "Company Founded",description: "Started with a vision to revolutionize the industry.",},],}: Timeline3Props) => {return (<section className="py-32"><div className="container max-w-6xl"><div className="relative grid gap-16 md:grid-cols-2"><div className="top-40 h-fit md:sticky"><h2 className="mb-6 mt-4 text-4xl font-semibold md:text-5xl">{heading}</h2><p className="font-medium text-muted-foreground md:text-xl">{description}</p><div className="mt-8 flex flex-col gap-4 lg:flex-row"><Button className="gap-2" size="lg" asChild><a href={buttons.primary.url}>{buttons.primary.text}</a></Button><Button variant="outline" size="lg" className="gap-2" asChild><a href={buttons.secondary.url}>{buttons.secondary.text}</a></Button></div></div><div className="flex flex-col gap-12 md:gap-20">{features.map((feature, index) => (<div key={index} className="rounded-xl border p-2"><imgsrc={feature.image}alt={feature.title}className="aspect-video w-full rounded-xl border border-dashed object-cover"/><div className="p-6"><h3 className="mb-1 text-2xl font-semibold">{feature.title}</h3><p className="text-muted-foreground">{feature.description}</p></div></div>))}</div></div></div></section>);};export { Timeline3 };