Files
reui-blocks/blocks/hero235.tsx
T

95 lines
3.8 KiB
TypeScript

import { ArrowDown, BookOpen, LayoutGrid, Sparkles } from "lucide-react";
import { Button } from "@/components/ui/button";
import { cn } from "@/lib/utils";
interface Hero235Props {
className?: string;
}
const SERVICES = [
{
icon: Sparkles,
title: "هویت بصری",
description:
"هویت بصری منسجمی طراحی می‌کنیم که به ماندگاری برند و ایجاد ارتباط مؤثر با مخاطبان کمک می‌کند.",
},
{
icon: LayoutGrid,
title: "تجربه‌های تعاملی",
description:
"با ترکیب طراحی، فناوری و تعامل، تجربه‌هایی ماندگار برای کاربران خلق می‌کنیم.",
},
{
icon: BookOpen,
title: "کارگاه‌ها",
description:
"کارگاه‌های آموزشی و مشاوره‌ای متناسب با نیاز تیم شما برگزار می‌کنیم.",
},
];
const Hero235 = ({ className }: Hero235Props) => {
return (
<section
className={cn(
"relative flex h-dvh items-center justify-center overflow-hidden bg-background py-32",
className,
)}
>
<div aria-hidden={true}>
<div className="absolute -right-0 -bottom-[30rem] size-[35rem] rounded-full bg-rose-400 opacity-40 blur-[5rem] md:-right-[2rem] md:-bottom-[50rem] md:size-[55rem] dark:opacity-20" />
<div className="absolute -right-[20rem] -bottom-[20rem] size-[35rem] rounded-full bg-sky-500 opacity-40 blur-[5rem] md:-right-[32rem] md:-bottom-[36rem] md:size-[55rem] dark:opacity-20" />
<div
className="pointer-events-none absolute inset-0 z-0 opacity-40"
style={{
backgroundImage:
"url(/block-media/shadcnblocks/block/noise.png)",
backgroundRepeat: "repeat",
}}
/>
</div>
<div className="relative container flex h-full flex-col justify-between">
<div className="flex flex-1 items-center justify-center">
<div className="mx-auto flex max-w-2xl flex-col items-center text-center">
<h1 className="text-xl font-semibold tracking-tight text-balance text-foreground md:text-2xll lg:text-2xll">
استودیوی طراحی و توسعه محصولات دیجیتال
</h1>
<p className="mt-8 max-w-xl text-pretty text-muted-foreground md:text-lg">
رابط‌های کاربری و تجربه‌های دیجیتالی طراحی می‌کنیم که علاوه بر زیبایی، عملکردی سریع، مقیاس‌پذیر و کاربرپسند داشته باشند.
</p>
<Button size="lg" className="mt-10">
مشاهده مطالعات موردی
<ArrowDown className="shrink-0" aria-hidden />
</Button>
</div>
</div>
<div className="pt-16">
<div className="grid gap-12 lg:grid-cols-3 lg:gap-0">
{SERVICES.map((service) => {
const Icon = service.icon;
return (
<div
key={service.title}
className={cn(
"flex flex-col border-l border-primary px-6 md:px-8",
)}
>
<Icon className="mb-4 size-6" aria-hidden />
<h2 className="font-semibold text-foreground">
{service.title}
</h2>
<p className="mt-2 text-sm text-muted-foreground">
{service.description}
</p>
</div>
);
})}
</div>
</div>
</div>
</section>
);
};
export { Hero235 };