Files
reui-blocks/blocks/resources2.tsx
T

423 lines
16 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"use client";
import { Sparkles } from "lucide-react";
import { useState } from "react";
import { Avatar, AvatarImage } from "@/components/ui/avatar";
import { Badge } from "@/components/ui/badge";
import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
import { cn } from "@/lib/utils";
const CATEGORIES = [
{ value: "all", label: "همه" },
{ value: "data", label: "داده" },
{ value: "ai", label: "هوش مصنوعی" },
{ value: "security", label: "امنیت" },
{ value: "news", label: "اخبار" },
] as const;
type BlogCategory = Exclude<(typeof CATEGORIES)[number]["value"], "all">;
const CATEGORY_LABELS: Record<BlogCategory, string> = {
data: "داده",
ai: "هوش مصنوعی",
security: "امنیت",
news: "اخبار",
};
interface Blog {
title: string;
category: BlogCategory;
date: string;
author: string[];
link: string;
}
const blogs: Blog[] = [
{
title:
"کاوش در عمق تکنیک‌ها و کاربردهای تحلیل داده مدرن",
category: "data",
date: "۱۴ آذر ۱۴۰۳",
author: [
"/block-media/shadcnblocks/block/avatar-1.webp",
"/block-media/shadcnblocks/block/avatar-2.webp",
"/block-media/shadcnblocks/block/avatar-3.webp",
],
link: "#",
},
{
title:
"مسیر در چشم‌انداز پیچیده هوش مصنوعی و یادگیری ماشین پیشرفته",
category: "ai",
date: "۱۳ آذر ۱۴۰۳",
author: [
"/block-media/shadcnblocks/block/avatar-2.webp",
"/block-media/shadcnblocks/block/avatar-3.webp",
],
link: "#",
},
{
title:
"تقویت دفاع دیجیتال: استراتژی‌های پیشرفته امنیت سایبری برای سازمان‌های مدرن",
category: "security",
date: "۱۲ آذر ۱۴۰۳",
author: [
"/block-media/shadcnblocks/block/avatar-1.webp",
"/block-media/shadcnblocks/block/avatar-3.webp",
],
link: "#",
},
{
title:
"درک و کاوش در معماری‌ها و مفاهیم رایانش توزیع‌شده",
category: "data",
date: "۱۱ آذر ۱۴۰۳",
author: ["/block-media/shadcnblocks/block/avatar-2.webp"],
link: "#",
},
{
title:
"پیشرفت‌های علمی اخیر در تحقیقات فناوری کوانتومی پیشرفته",
category: "news",
date: "۱۰ آذر ۱۴۰۳",
author: [
"/block-media/shadcnblocks/block/avatar-1.webp",
"/block-media/shadcnblocks/block/avatar-2.webp",
],
link: "#",
},
{
title:
"به‌کارگیری یادگیری ماشین در سناریوها و موارد واقعی کسب‌وکار",
category: "ai",
date: "۹ آذر ۱۴۰۳",
author: [
"/block-media/shadcnblocks/block/avatar-3.webp",
"/block-media/shadcnblocks/block/avatar-1.webp",
],
link: "#",
},
{
title:
"تدوین استراتژی‌های مؤثر برای تنظیم و بهینه‌سازی کارایی پایگاه داده",
category: "data",
date: "۸ آذر ۱۴۰۳",
author: [
"/block-media/shadcnblocks/block/avatar-2.webp",
"/block-media/shadcnblocks/block/avatar-3.webp",
],
link: "#",
},
{
title:
"پیاده‌سازی اصول امنیت Zero Trust در سراسر سازمان",
category: "security",
date: "۷ آذر ۱۴۰۳",
author: ["/block-media/shadcnblocks/block/avatar-1.webp"],
link: "#",
},
{
title:
"راهنمای جامع معماری‌ها و توسعه رایانش بدون سرور مدرن",
category: "ai",
date: "۶ آذر ۱۴۰۳",
author: [
"/block-media/shadcnblocks/block/avatar-2.webp",
"/block-media/shadcnblocks/block/avatar-3.webp",
],
link: "#",
},
{
title:
"اخبار صنعت: تازه‌ترین به‌روزرسانی‌ها در نوآوری‌های شبکه و فناوری‌های نوظهور",
category: "news",
date: "۵ آذر ۱۴۰۳",
author: [
"/block-media/shadcnblocks/block/avatar-1.webp",
"/block-media/shadcnblocks/block/avatar-2.webp",
"/block-media/shadcnblocks/block/avatar-3.webp",
],
link: "#",
},
{
title:
"تحول تحلیل کلان‌داده: از بینش‌های تاریخی تا مدل‌های پیش‌بینی",
category: "data",
date: "۴ آذر ۱۴۰۳",
author: [
"/block-media/shadcnblocks/block/avatar-1.webp",
"/block-media/shadcnblocks/block/avatar-2.webp",
],
link: "#",
},
{
title: "روندهای نوظهور در پردازش زبان طبیعی و هوش مصنوعی گفتگومحور",
category: "ai",
date: "۳ آذر ۱۴۰۳",
author: ["/block-media/shadcnblocks/block/avatar-3.webp"],
link: "#",
},
{
title: "امنیت بلاک‌چین: حفاظت از دارایی‌های دیجیتال در عصر مدرن",
category: "security",
date: "۲ آذر ۱۴۰۳",
author: [
"/block-media/shadcnblocks/block/avatar-1.webp",
"/block-media/shadcnblocks/block/avatar-2.webp",
],
link: "#",
},
{
title:
"خبر فوری: پیشرفت‌های انقلابی در کاربردهای رایانش کوانتومی",
category: "news",
date: "۱ آذر ۱۴۰۳",
author: [
"/block-media/shadcnblocks/block/avatar-1.webp",
"/block-media/shadcnblocks/block/avatar-2.webp",
"/block-media/shadcnblocks/block/avatar-3.webp",
],
link: "#",
},
{
title: "تحلیل بلادرنگ: پردازش و تجسم داده‌های جریانی",
category: "data",
date: "۳۰ آبان ۱۴۰۳",
author: [
"/block-media/shadcnblocks/block/avatar-2.webp",
"/block-media/shadcnblocks/block/avatar-3.webp",
],
link: "#",
},
{
title: "معماری‌های یادگیری عمیق برای بینایی ماشین",
category: "ai",
date: "۲۹ آبان ۱۴۰۳",
author: ["/block-media/shadcnblocks/block/avatar-1.webp"],
link: "#",
},
{
title: "تشخیص پیشرفته تهدید: استفاده از هوش مصنوعی در دفاع سایبری",
category: "security",
date: "۲۸ آبان ۱۴۰۳",
author: [
"/block-media/shadcnblocks/block/avatar-2.webp",
"/block-media/shadcnblocks/block/avatar-3.webp",
],
link: "#",
},
{
title: "تازه‌ترین تحولات در فناوری‌های پردازش داده ابری‌بومی",
category: "news",
date: "۲۷ آبان ۱۴۰۳",
author: [
"/block-media/shadcnblocks/block/avatar-1.webp",
"/block-media/shadcnblocks/block/avatar-3.webp",
],
link: "#",
},
{
title: "عملیات یادگیری ماشین: ساده‌سازی گردش‌کار توسعه هوش مصنوعی",
category: "ai",
date: "۲۶ آبان ۱۴۰۳",
author: ["/block-media/shadcnblocks/block/avatar-2.webp"],
link: "#",
},
{
title: "مقررات حریم خصوصی داده: تضمین انطباق در عملیات جهانی",
category: "security",
date: "۲۵ آبان ۱۴۰۳",
author: [
"/block-media/shadcnblocks/block/avatar-1.webp",
"/block-media/shadcnblocks/block/avatar-2.webp",
"/block-media/shadcnblocks/block/avatar-3.webp",
],
link: "#",
},
];
interface Resources2Props {
className?: string;
}
const Resources2 = ({ className }: Resources2Props) => {
const [selectedCategory, setSelectedCategory] = useState("all");
const filteredBlogs = blogs.filter(
(blog) =>
selectedCategory === "all" || blog.category === selectedCategory,
);
return (
<section dir="rtl" lang="fa" className={cn("py-32", className)}>
<div className="container">
<h1 className="text-start text-xl font-medium sm:text-2xll md:text-2xll">
منابع و گزارش‌های تخصصی
</h1>
<p className="mt-4 text-start text-lg text-muted-foreground">
دیدگاه‌ها و تحلیل‌های ما درباره موضوعات کلیدی را کشف کنید.
</p>
<div className="mt-10 grid grid-cols-1 gap-4 lg:grid-cols-12">
<a
href="#"
className="group relative isolate overflow-hidden rounded-2xl border border-border transition-transform duration-300 hover:-translate-y-0.5 lg:col-span-7 lg:row-span-2"
>
<img
src="/block-media/shadcnblocks/block/photos/simone-hutsch-ba454dc72896-unsplash.jpg"
alt="شروع کار با پلتفرم‌ها و زیرساخت دیجیتال مدرن"
className="size-full max-h-[550px] object-cover grayscale-100 transition-all duration-300 group-hover:grayscale-50"
/>
<div className="absolute inset-0 bg-gradient-to-t from-primary to-transparent" />
<div className="absolute inset-0 z-10 flex flex-col justify-between p-8 text-start">
<Badge className="border border-background/20 bg-background/15 backdrop-blur-sm">
<Sparkles className="size-4" />
مطلب ویژه
</Badge>
<div className="flex flex-col gap-4">
<h2 className="text-xl font-medium text-background">
شروع کار با پلتفرم‌ها و زیرساخت دیجیتال مدرن
</h2>
<div className="flex items-center gap-2">
<time className="text-sm text-background/80">
۱۴ آذر ۱۴۰۳
</time>
<div className="flex items-center -space-x-2">
<Avatar className="size-6 border border-primary">
<AvatarImage src="/block-media/shadcnblocks/block/avatar-1.webp" />
</Avatar>
<Avatar className="size-6 border border-primary">
<AvatarImage src="/block-media/shadcnblocks/block/avatar-2.webp" />
</Avatar>
<Avatar className="size-6 border border-primary">
<AvatarImage src="/block-media/shadcnblocks/block/avatar-3.webp" />
</Avatar>
<span className="z-10 grid size-6 place-items-center rounded-full border border-primary bg-primary/90 text-xs text-background backdrop-blur-sm">
+۲
</span>
</div>
</div>
</div>
</div>
</a>
<div className="flex flex-col gap-4 lg:col-span-5 lg:row-span-2 lg:flex-col">
<a
href="#"
className="group relative isolate overflow-hidden rounded-2xl border border-border transition-transform duration-300 hover:-translate-y-0.5"
>
<img
src="/block-media/shadcnblocks/block/photos/simone-hutsch-duxeKbu9FDE-unsplash.jpg"
alt="ساده‌سازی عملیات کسب‌وکار با خودکارسازی گردش کار"
className="size-full max-h-[267px] object-cover grayscale-100 transition-all duration-300 group-hover:grayscale-50"
/>
<div className="absolute inset-0 bg-gradient-to-t from-primary to-transparent" />
<div className="absolute inset-0 z-10 flex flex-col justify-between p-8 text-start">
<Badge className="border border-background/20 bg-background/15 backdrop-blur-sm">
جدیدترین
</Badge>
<div className="flex flex-col gap-4">
<h2 className="text-xl font-medium text-background">
ساده‌سازی عملیات کسب‌وکار با خودکارسازی مؤثر گردش کار
</h2>
<div className="flex items-center gap-2">
<time className="text-sm text-background/80">
۲۳ بهمن ۱۴۲
</time>
<Avatar className="size-6 border border-primary">
<AvatarImage src="/block-media/shadcnblocks/block/avatar-1.webp" />
</Avatar>
</div>
</div>
</div>
</a>
<a
href="#"
className="group relative isolate overflow-hidden rounded-2xl border border-border transition-transform duration-300 hover:-translate-y-0.5"
>
<img
src="/block-media/shadcnblocks/block/photos/simone-hutsch-zr8IvMz0OWk-unsplash.jpg"
alt="بهبود چشمگیر کارایی جستجو"
className="size-full max-h-[267px] object-cover grayscale-100 transition-all duration-300 group-hover:grayscale-50"
/>
<div className="absolute inset-0 bg-gradient-to-t from-primary to-transparent" />
<div className="absolute inset-0 z-10 flex flex-col justify-between p-8 text-start">
<Badge className="border border-background/20 bg-background/15 backdrop-blur-sm">
جدیدترین
</Badge>
<div className="flex flex-col gap-4">
<h2 className="text-xl font-medium text-background">
افزایش کارایی کلی: چگونه کارایی جستجو را به‌طور چشمگیر
بهبود دادیم
</h2>
<div className="flex items-center gap-2">
<time className="text-sm text-background/80">
۱۲ فروردین ۱۴۰۴
</time>
<Avatar className="size-6 border border-primary">
<AvatarImage src="/block-media/shadcnblocks/block/avatar-1.webp" />
</Avatar>
</div>
</div>
</div>
</a>
</div>
</div>
<div className="mt-24">
<h2 className="mb-6 text-start text-xl font-medium md:text-3xl">
آخرین به‌روزرسانی‌ها
</h2>
<Tabs
defaultValue="all"
className="border-b border-border"
onValueChange={setSelectedCategory}
>
<TabsList className="flex h-auto gap-2 bg-background p-0">
{CATEGORIES.map((category) => (
<TabsTrigger
key={category.value}
value={category.value}
className="group relative py-2.5 data-[state=active]:!shadow-none"
>
{category.label}
<span className="absolute -bottom-px group-data-[state=active]:h-px group-data-[state=active]:w-full group-data-[state=active]:bg-primary" />
</TabsTrigger>
))}
</TabsList>
</Tabs>
<div className="mt-4">
{filteredBlogs.map((blog, idx) => (
<a
key={idx}
href={blog.link}
className="flex flex-col justify-between gap-4 border-b border-border py-6 text-start md:flex-row"
>
<h3 className="font-medium md:line-clamp-1">{blog.title}</h3>
<div className="flex w-full shrink-0 grid-cols-3 justify-between gap-2 md:grid md:max-w-80">
<p className="text-sm text-muted-foreground">
{CATEGORY_LABELS[blog.category]}
</p>
<time className="text-sm text-muted-foreground">
{blog.date}
</time>
<div className="hidden items-center justify-end -space-x-2 md:flex">
{blog.author.map((author, authorIdx) => (
<Avatar
key={authorIdx}
className="size-6 border border-border"
>
<AvatarImage src={author} />
</Avatar>
))}
</div>
</div>
</a>
))}
</div>
</div>
</div>
</section>
);
};
export { Resources2 };