rapid-test/app/header.tsx

157 lines
6.9 KiB
TypeScript

"use client";
import { Sheet, SheetClose, SheetContent, SheetTrigger } from "~/sheet";
import { List, X } from "~/icons";
export type HeaderProps = {
navigation: { name: string; href: string }[];
};
export function Header({ navigation }: HeaderProps) {
return (
<Sheet>
<div className="bg-gray-900 pt-6">
<nav
className="relative mx-auto flex max-w-7xl items-center justify-between px-6"
aria-label="Global"
>
<div className="flex flex-1 items-center">
<div className="flex w-full items-center justify-between md:w-auto">
<a href="#">
<span className="sr-only">Your Company</span>
<svg
className="h-8 w-auto sm:h-10"
viewBox="0 0 47 40"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fill="url(#potato)"
d="M23.5 6.5C17.5 6.5 13.75 9.5 12.25 15.5C14.5 12.5 17.125 11.375 20.125 12.125C21.8367 12.5529 23.0601 13.7947 24.4142 15.1692C26.6202 17.4084 29.1734 20 34.75 20C40.75 20 44.5 17 46 11C43.75 14 41.125 15.125 38.125 14.375C36.4133 13.9471 35.1899 12.7053 33.8357 11.3308C31.6297 9.09158 29.0766 6.5 23.5 6.5ZM12.25 20C6.25 20 2.5 23 1 29C3.25 26 5.875 24.875 8.875 25.625C10.5867 26.0529 11.8101 27.2947 13.1642 28.6693C15.3702 30.9084 17.9234 33.5 23.5 33.5C29.5 33.5 33.25 30.5 34.75 24.5C32.5 27.5 29.875 28.625 26.875 27.875C25.1633 27.4471 23.9399 26.2053 22.5858 24.8307C20.3798 22.5916 17.8266 20 12.25 20Z"
/>
<defs>
<linearGradient
id="potato"
x1="33.999"
x2="1"
y1="16.181"
y2="16.181"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="#22d3ee" />
<stop offset="1" stopColor="#99f6e4" />
</linearGradient>
</defs>
</svg>
</a>
<div className="-mr-2 flex items-center md:hidden">
<SheetTrigger className="focus-ring-inset relative inline-flex items-center justify-center rounded-md bg-gray-900 p-2 text-gray-400 hover:bg-gray-800 focus:outline-none focus:ring-2 focus:ring-white">
<span className="absolute -inset-0.5" />
<span className="sr-only">Open main menu</span>
<List className="h-6 w-6" aria-hidden="true" />
</SheetTrigger>
</div>
</div>
<div className="hidden space-x-8 md:ml-10 md:flex">
{navigation.map((item) => (
<a
key={item.name}
href={item.href}
className="text-base font-medium text-white hover:text-gray-300"
>
{item.name}
</a>
))}
</div>
</div>
<div className="hidden md:flex md:items-center md:space-x-6">
<a
href="#"
className="text-base font-medium text-white hover:text-gray-300"
>
Log in
</a>
<a
href="#"
className="inline-flex items-center rounded-md border border-transparent bg-gray-600 px-4 py-2 text-base font-medium text-white hover:bg-gray-700"
>
Start free trial
</a>
</div>
</nav>
</div>
<SheetContent
position="top"
className="absolute inset-x-0 top-0 origin-top transform p-2 transition md:hidden"
>
<div className="overflow-hidden rounded-lg bg-white shadow-md ring-1 ring-black ring-opacity-5">
<div className="flex items-center justify-between px-5 pt-4">
<div>
<svg
viewBox="0 0 47 40"
className="h-8 w-auto"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fill="url(#potato)"
d="M23.5 6.5C17.5 6.5 13.75 9.5 12.25 15.5C14.5 12.5 17.125 11.375 20.125 12.125C21.8367 12.5529 23.0601 13.7947 24.4142 15.1692C26.6202 17.4084 29.1734 20 34.75 20C40.75 20 44.5 17 46 11C43.75 14 41.125 15.125 38.125 14.375C36.4133 13.9471 35.1899 12.7053 33.8357 11.3308C31.6297 9.09158 29.0766 6.5 23.5 6.5ZM12.25 20C6.25 20 2.5 23 1 29C3.25 26 5.875 24.875 8.875 25.625C10.5867 26.0529 11.8101 27.2947 13.1642 28.6693C15.3702 30.9084 17.9234 33.5 23.5 33.5C29.5 33.5 33.25 30.5 34.75 24.5C32.5 27.5 29.875 28.625 26.875 27.875C25.1633 27.4471 23.9399 26.2053 22.5858 24.8307C20.3798 22.5916 17.8266 20 12.25 20Z"
/>
<defs>
<linearGradient
id="potato"
x1="33.999"
x2="1"
y1="16.181"
y2="16.181"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="#0891b2" />
<stop offset="1" stopColor="#14b8a6" />
</linearGradient>
</defs>
</svg>
</div>
<div className="-mr-2">
<SheetClose className="relative inline-flex items-center justify-center rounded-md bg-white p-2 text-gray-400 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-cyan-600">
<span className="absolute -inset-0.5" />
<span className="sr-only">Close menu</span>
<X className="h-6 w-6" aria-hidden="true" />
</SheetClose>
</div>
</div>
<div className="pb-6 pt-5">
<div className="space-y-1 px-2">
{navigation.map((item) => (
<a
key={item.name}
href={item.href}
className="block rounded-md px-3 py-2 text-base font-medium text-gray-900 hover:bg-gray-50"
>
{item.name}
</a>
))}
</div>
<div className="mt-6 px-5">
<a
href="#"
className="block w-full rounded-md bg-gradient-to-r from-teal-500 to-cyan-600 px-4 py-3 text-center font-medium text-white shadow hover:from-teal-600 hover:to-cyan-700"
>
Start free trial
</a>
</div>
<div className="mt-6 px-5">
<p className="text-center text-base font-medium text-gray-500">
Existing customer?{" "}
<a href="#" className="text-gray-900 hover:underline">
Login
</a>
</p>
</div>
</div>
</div>
</SheetContent>
</Sheet>
);
}