Files
reui-blocks/blocks/hero227.tsx
T

125 lines
5.7 KiB
TypeScript

"use client";
import { motion } from "framer-motion";
import { Copy, Globe, ShieldCheck } from "lucide-react";
import React from "react";
import { Button } from "@/components/ui/button";
import { useGoogleFont } from "@/hooks/use-google-font";
import { cn } from "@/lib/utils";
interface Hero227Props {
className?: string;
}
const Hero227 = ({ className }: Hero227Props) => {
useGoogleFont("Antonio");
return (
<section
className={cn("bg-background py-32", className)}
style={
{
"--font-antonio": "Antonio",
} as React.CSSProperties
}
>
<div className="border-b border-muted-foreground/40">
<div className="container flex flex-col items-center justify-center gap-4 text-center">
<div className="flex flex-wrap items-center justify-center gap-6">
<div className="flex items-center justify-center gap-2 text-xs font-medium tracking-tight text-primary/40 md:text-lg">
<Copy className="size-4" />
کامپوننت‌های آماده استفاده
</div>
<div className="flex items-center justify-center gap-2 text-xs font-medium tracking-tight text-primary/40 md:text-lg">
<ShieldCheck className="size-4" />
طراحی‌شده براساس استانداردهای روز
</div>
<div className="flex items-center justify-center gap-2 text-xs font-medium tracking-tight text-primary/40 md:text-lg">
<Globe className="size-4 animate-spin" />
سازگار با انواع پروژه‌ها
</div>
</div>
<div className="relative">
<h1 className="font-antonio text-2xll font-extrabold tracking-tight text-foreground uppercase md:text-9xl">
{/* <VerticalCutReveal>New ری یو آی</VerticalCutReveal> */}
</h1>
<Asterisk className="absolute -top-2 -right-6 size-5 md:size-10 lg:-right-14" />
</div>
<p className="max-w-xl text-muted-foreground/80">
صدها بلاک و کامپوننت آماده مبتنی بر رابط کاربری، استایل‌دهی مدرن و ری یو آی که مستقیماً در پروژه‌های شما قابل استفاده هستند.
</p>
<div className="flex rounded-3xl bg-muted-foreground/10 p-1.5">
<Button className="text-md flex h-full items-center justify-center rounded-2xl font-medium">
شروع رایگان
</Button>
<Button
variant="ghost"
className="text-md flex h-full items-center justify-center rounded-2xl font-medium opacity-40"
>
بدون نیاز به کارت بانکی
</Button>
</div>
{/* Iphone mockup with content */}
<div className="relative h-[500px] w-full overflow-hidden">
<motion.div
initial={{ opacity: 0, y: 200, scale: 0.8 }}
animate={{ opacity: 100, y: 0, scale: 1 }}
transition={{ ease: [0, 0.71, 0.2, 1.01], duration: 0.8 }}
className="relative mx-auto mt-6 flex h-[850px] w-[400px] items-center justify-center rounded-[75px] bg-black md:mt-12 md:h-[920px] md:w-[450px]"
>
<img
className="absolute z-2 scale-105 object-cover"
alt="تصویر نمونه"
src="/block-media/shadcnblocks/block/mockups/phone-5.png"
/>
<div className="h-full w-full">
<div className="mt-20 flex justify-between px-0">
<h1 className="flex items-end gap-2 px-12 text-2xll font-semibold tracking-tight text-background md:text-2xll">
کامپوننت‌های رابط کاربری
<div className="mb-2 size-3 rounded-full bg-red-500 md:size-5" />
</h1>
<div className="mt-2 me-8 flex flex-col items-end">
<p className="text-lg tracking-tight text-muted-foreground md:text-xl">
آخرین به‌روزرسانی
</p>
<p className="-mt-1 text-xl font-semibold tracking-tighter text-muted-foreground/50 md:text-xl">
2025
</p>
</div>
</div>
<img
className="z-2 mx-auto mt-20 size-40 object-cover"
alt="تصویر نمونه"
src="/block-media/shadcnblocks/block/block-white-1.svg"
/>
</div>
</motion.div>
</div>
</div>
</div>
</section>
);
};
export { Hero227 };
const Asterisk = (props: React.ComponentProps<typeof motion.svg>) => {
return (
<motion.svg
initial={{ opacity: 0, rotate: -45, scale: 0.5 }}
animate={{ opacity: 1, rotate: 0, scale: 1 }}
transition={{ duration: 0.5, bounce: 0.4, type: "spring", delay: 0.6 }}
{...props}
viewBox="0 0 45 45"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M16.6294 44.8574L18.9282 29.0791L6.44141 38.9536L0.380859 28.5044L14.6963 22.3916L0.380859 16.6968L6.44141 6.24756L18.876 15.5996L16.6294 0.34375H28.7505L26.9219 15.2861L38.9385 6.24756L44.999 16.6968L30.6313 22.3916L44.999 28.5044L38.9385 38.9536L26.8696 29.4448L28.7505 44.8574H16.6294Z"
fill="#FF0000"
/>
</motion.svg>
);
};