Initial import of 1407 block sources under blocks/
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,185 @@
|
||||
"use client";
|
||||
|
||||
import { Star } from "lucide-react";
|
||||
import Masonry, { ResponsiveMasonry } from "react-responsive-masonry";
|
||||
|
||||
import { Avatar, AvatarImage } from "@/components/ui/avatar";
|
||||
import { Card } from "@/components/ui/card";
|
||||
import { cn } from "@/lib/utils";
|
||||
|
||||
interface DataItem {
|
||||
name: string;
|
||||
avatar: string;
|
||||
content: string;
|
||||
margin?: string;
|
||||
}
|
||||
|
||||
const DATA: DataItem[] = [
|
||||
{
|
||||
name: "امیرحسین قاسمی",
|
||||
avatar:
|
||||
"/block-media/shadcnblocks/block/avatar-5.webp",
|
||||
content:
|
||||
"این ابزار کاملاً گردش کارم را متحول کرد. قابلیتها شهودیاند و همکاری با تیم را بسیار آسانتر کرده.",
|
||||
margin: "mt-6",
|
||||
},
|
||||
{
|
||||
name: "نیلوفر حسینی",
|
||||
avatar:
|
||||
"/block-media/shadcnblocks/block/avatar-3.webp",
|
||||
content:
|
||||
"قالبهای طراحی نجاتبخش بودند. کمک کردند پروژهها را سریعتر تحویل دهم بدون اینکه کیفیت پایین بیاید.",
|
||||
},
|
||||
{
|
||||
name: "پارسا موسوی",
|
||||
avatar:
|
||||
"/block-media/shadcnblocks/block/avatar-6.webp",
|
||||
content:
|
||||
"بهرهوری تیم ما از وقتی از این پلتفرم استفاده میکنیم جهش کرده. برای هر تیم خلاق ضروری است.",
|
||||
margin: "mt-4",
|
||||
},
|
||||
{
|
||||
name: "سارا احمدی",
|
||||
avatar:
|
||||
"/block-media/shadcnblocks/block/avatar-7.webp",
|
||||
content:
|
||||
"داشبورد تحلیل باورنکردنی است. بینشهای لازم برای تصمیمهای مبتنی بر داده را به ما میدهد.",
|
||||
},
|
||||
{
|
||||
name: "مازیار رضایی",
|
||||
avatar:
|
||||
"/block-media/shadcnblocks/block/avatar-5.webp",
|
||||
content:
|
||||
"یکپارچهسازی با ابزارهای موجود بینقص بود. مستندات اتصال هوشمند کامل و قابل فهم است.",
|
||||
},
|
||||
{
|
||||
name: "مهسا نوری",
|
||||
avatar:
|
||||
"/block-media/shadcnblocks/block/avatar-1.webp",
|
||||
content:
|
||||
"پلتفرم مدیریت پروژههای خلاقانه و هماهنگ نگه داشتن تیم را بسیار آسان کرده.",
|
||||
},
|
||||
{
|
||||
name: "فاطمه رستمی",
|
||||
avatar:
|
||||
"/block-media/shadcnblocks/block/avatar-7.webp",
|
||||
content:
|
||||
"ابزارهای برندسازی در سطح بالاییاند. به حفظ یکنواختی در همه کمپینها کمک کردهاند.",
|
||||
},
|
||||
{
|
||||
name: "مهتاب شریفی",
|
||||
avatar:
|
||||
"/block-media/shadcnblocks/block/avatar-3.webp",
|
||||
content:
|
||||
"ابزارهای ویرایش وکتور عالیاند. فرایند خلاقانه من را بسیار روانتر کردهاند.",
|
||||
},
|
||||
{
|
||||
name: "کاوه مرادی",
|
||||
avatar:
|
||||
"/block-media/shadcnblocks/block/avatar-4.webp",
|
||||
content:
|
||||
"قابلیتهای انیمیشن باورنکردنیاند. پروژههایم را به سطح بالاتری بردهاند.",
|
||||
},
|
||||
];
|
||||
|
||||
interface RewardCardProps {
|
||||
icon: string;
|
||||
title: string;
|
||||
subtitle: string;
|
||||
}
|
||||
|
||||
const RewardCard = ({ icon, title, subtitle }: RewardCardProps) => (
|
||||
<div className="flex flex-col gap-2 rounded-xl bg-muted p-2 px-4 shadow-sm">
|
||||
<div className="flex flex-row items-center gap-2">
|
||||
<div className="rounded-full bg-background p-2">
|
||||
<img
|
||||
src={icon}
|
||||
alt={title}
|
||||
width={40}
|
||||
height={40}
|
||||
className="rounded-full"
|
||||
/>
|
||||
</div>
|
||||
<div className="flex flex-col">
|
||||
<span className="text-sm font-medium">{title}</span>
|
||||
<span className="text-sm text-muted-foreground">{subtitle}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
interface Testimonial24Props {
|
||||
className?: string;
|
||||
}
|
||||
|
||||
const Testimonial24 = ({ className }: Testimonial24Props) => {
|
||||
return (
|
||||
<section dir="rtl" lang="fa" className={cn("py-32", className)}>
|
||||
<div className="container">
|
||||
<div className="flex flex-col items-center gap-6 px-4 sm:px-8">
|
||||
<h2 className="mb-2 text-center text-3xl font-semibold lg:text-2xll">
|
||||
ببینید چرا خلاقان <br /> پلتفرم ما را دوست دارند
|
||||
</h2>
|
||||
|
||||
<div className="mt-4 flex flex-col items-center gap-4 sm:flex-row">
|
||||
<RewardCard
|
||||
icon="/block-media/shadcnblocks/block/block-1.svg"
|
||||
title="برترین برای طراحی"
|
||||
subtitle="انتخاب ۱۴۲"
|
||||
/>
|
||||
|
||||
<RewardCard
|
||||
icon="/block-media/shadcnblocks/block/block-2.svg"
|
||||
title="برترین برای خلاقیت"
|
||||
subtitle="انتخاب ۱۴۱"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="relative mt-14 w-full px-4 after:absolute after:inset-x-0 after:-bottom-2 after:h-96 after:bg-linear-to-t after:from-background sm:px-8 md:px-16 lg:px-32">
|
||||
<ResponsiveMasonry
|
||||
columnsCountBreakPoints={{ 350: 1, 768: 2, 1024: 3 }}
|
||||
>
|
||||
<Masonry gutter="20px" columnsCount={3}>
|
||||
{DATA.map((testimonial, idx) => (
|
||||
<Card
|
||||
key={idx}
|
||||
className={cn(
|
||||
"rounded-xl p-5 shadow-sm",
|
||||
idx > 3 && idx <= 5 && "hidden md:block",
|
||||
idx > 5 && "hidden lg:block",
|
||||
testimonial.margin,
|
||||
)}
|
||||
>
|
||||
<div className="mb-4 flex gap-1">
|
||||
{[...Array(5)].map((_, i) => (
|
||||
<Star key={i} className="h-4 w-4 fill-primary" />
|
||||
))}
|
||||
</div>
|
||||
|
||||
<div className="mt-4 text-sm text-foreground">
|
||||
<q>{testimonial.content}</q>
|
||||
</div>
|
||||
|
||||
<div className="mt-4 flex items-center gap-2">
|
||||
<Avatar className="size-9 rounded-full ring-1 ring-muted">
|
||||
<AvatarImage
|
||||
src={testimonial.avatar}
|
||||
alt={testimonial.name}
|
||||
/>
|
||||
</Avatar>
|
||||
<div className="text-sm">
|
||||
<p className="font-medium">{testimonial.name}</p>
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
))}
|
||||
</Masonry>
|
||||
</ResponsiveMasonry>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export { Testimonial24 };
|
||||
Reference in New Issue
Block a user