Header 97
cardText Align Center1 ColumnCardsText OnlyFormHeader Section

Code
relume-header97.tsx
"use client";
import { useState } from "react";
import { Button, type ButtonProps } from "@/components/ui/button";
import { Card } from "@/components/ui/card";
import { Input } from "@/components/ui/input";
type Props = {
heading: string;
description: string;
inputPlaceholder?: string;
button: ButtonProps;
termsAndConditions: string;
};
export type Header97Props = React.ComponentPropsWithoutRef<"section"> & Partial<Props>;
export const Header97 = (props: Header97Props) => {
const { heading, description, inputPlaceholder, button, termsAndConditions } = {
...Header97Defaults,
...props,
};
const [emailInput, setEmailInput] = useState<string>("");
const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {
event.preventDefault();
console.log({
emailInput,
});
};
return (
<section className="px-[5%] py-12 md:py-16 lg:py-20">
<div className="container">
<Card className="relative flex min-h-[32rem] flex-col items-center justify-center p-8 md:min-h-[40rem] md:p-16">
<div className="w-full max-w-lg text-center">
<h1 className="mb-5 text-h1 font-bold md:mb-6">{heading}</h1>
<p className="text-medium">{description}</p>
</div>
<div className="mx-auto mt-6 max-w-sm md:mt-8">
<form
className="mb-4 grid max-w-sm grid-cols-1 gap-y-3 sm:grid-cols-[1fr_max-content] sm:gap-4"
onSubmit={handleSubmit}
>
<Input
id="email"
type="email"
placeholder={inputPlaceholder}
value={emailInput}
onChange={(e) => setEmailInput(e.target.value)}
/>
<Button {...button}>{button.title}</Button>
</form>
<div dangerouslySetInnerHTML={{ __html: termsAndConditions }} />
</div>
</Card>
</div>
</section>
);
};
export const Header97Defaults: Props = {
heading: "Medium length hero heading goes here",
description:
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat.",
inputPlaceholder: "Enter your email",
button: {
title: "Sign up",
},
termsAndConditions: `
<p class='text-tiny'>
By clicking Sign Up you're confirming that you agree with our
<a href='#' class='underline'>Terms and Conditions</a>.
</p>
`,
};npm i @radix-ui/react-dialog @radix-ui/react-slot @radix-ui/react-tabs class-variance-authority@0.7.1 clsx@^2.1.1 embla-carousel-autoplay embla-carousel-react@^8.5.2 motion@^12.15.0 relume-icons@1.3.0 tailwind-merge@^2.2.2


