"use client"; import React, { useState } from "react"; import { Button } from "@/components/ui/button"; import { Switch } from "@/components/ui/switch"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { cn } from "@/lib/utils"; interface Integration { id: number; icon: string; title: string; description: string; category: string; categoryDescription: string; connected: boolean; } const INTEGRATIONS: Integration[] = [ { id: 1, icon: "/block-media/shadcnblocks/block/logos/google-icon.svg", title: "Google", description: "ابزارهایی برای جذب سرنخ، بازاریابی ایمیلی و پشتیبانی مشتری ارائه می‌دهد.", category: "ابزارهای فروش و بازاریابی", categoryDescription: "کارایی و اثربخشی فعالیت‌های فروش و بازاریابی شما را افزایش می‌دهد", connected: true, }, { id: 2, icon: "/block-media/shadcnblocks/block/logos/github-icon.svg", title: "GitHub", description: "مدیریت جامع فروش و روابط مشتری را فراهم می‌کند.", category: "ابزارهای فروش و بازاریابی", categoryDescription: "کارایی و اثربخشی فعالیت‌های فروش و بازاریابی شما را افزایش می‌دهد", connected: false, }, { id: 3, icon: "/block-media/shadcnblocks/block/logos/spotify-icon.svg", title: "Spotify", description: "بر مدیریت خط لوله فروش با ابزار بصری تمرکز دارد.", category: "ابزارهای فروش و بازاریابی", categoryDescription: "کارایی و اثربخشی فعالیت‌های فروش و بازاریابی شما را افزایش می‌دهد", connected: false, }, { id: 4, icon: "/block-media/shadcnblocks/block/logos/slack-icon.svg", title: "Slack", description: "همکاری لحظه‌ای و به‌روزرسانی فعالیت‌های سامانه ارتباط با مشتری و فروش را ممکن می‌سازد.", category: "ارتباطات و همکاری", categoryDescription: "کارایی و اثربخشی تعاملات و گردش‌کار تیم را بهبود می‌بخشد", connected: true, }, { id: 5, icon: "/block-media/shadcnblocks/block/logos/google-icon.svg", title: "Google", description: "ارتباطات و زمان‌بندی در سامانه ارتباط با مشتری و فروش را تقویت می‌کند.", category: "ارتباطات و همکاری", categoryDescription: "کارایی و اثربخشی تعاملات و گردش‌کار تیم را بهبود می‌بخشد", connected: true, }, { id: 6, icon: "/block-media/shadcnblocks/block/logos/github-icon.svg", title: "GitHub", description: "یکپارچه‌سازی سامانه ارتباط با مشتری و فروش در Microsoft Teams را پشتیبانی می‌کند.", category: "ارتباطات و همکاری", categoryDescription: "کارایی و اثربخشی تعاملات و گردش‌کار تیم را بهبود می‌بخشد", connected: false, }, { id: 7, icon: "/block-media/shadcnblocks/block/logos/spotify-icon.svg", title: "Spotify", description: "نمای یکپارچه از تعاملات و برنامه‌های مشتری ارائه می‌دهد.", category: "ارتباطات و همکاری", categoryDescription: "کارایی و اثربخشی تعاملات و گردش‌کار تیم را بهبود می‌بخشد", connected: false, }, { id: 8, icon: "/block-media/shadcnblocks/block/logos/github-icon.svg", title: "GitHub", description: "فعالیت‌ها و عملکرد پشتیبانی مشتری را پیگیری و مدیریت می‌کند.", category: "ارتباطات و همکاری", categoryDescription: "کارایی و اثربخشی تعاملات و گردش‌کار تیم را بهبود می‌بخشد", connected: false, }, { id: 9, icon: "/block-media/shadcnblocks/block/logos/figma-icon.svg", title: "Figma", description: "پشتیبانی مشتری و تیکتینگ را در سامانه ارتباط با مشتری و فروش ساده‌تر می‌کند.", category: "ارتباطات و همکاری", categoryDescription: "کارایی و اثربخشی تعاملات و گردش‌کار تیم را بهبود می‌بخشد", connected: false, }, ]; const TABS = [ { label: "همه اپلیکیشن‌ها", value: "all" }, { label: "متصل‌شده", value: "connected" }, { label: "غیرمتصل", value: "disconnected" }, ]; type CategoryGroup = { category: string; categoryDescription: string; integrations: Integration[]; }; function groupByCategory(data: Integration[]): CategoryGroup[] { const map = new Map(); data.forEach((item) => { if (!map.has(item.category)) { map.set(item.category, { category: item.category, categoryDescription: item.categoryDescription, integrations: [], }); } map.get(item.category)!.integrations.push(item); }); return Array.from(map.values()); } interface Integration11Props { className?: string; } const Integration11 = ({ className }: Integration11Props) => { const [tab, setTab] = useState("all"); const [toggles, setToggles] = useState>(() => { const state: Record = {}; INTEGRATIONS.forEach((i) => { state[i.id] = i.connected; }); return state; }); let filtered: Integration[] = INTEGRATIONS; if (tab === "connected") filtered = INTEGRATIONS.filter((i) => toggles[i.id]); if (tab === "disconnected") filtered = INTEGRATIONS.filter((i) => !toggles[i.id]); const grouped = groupByCategory(filtered); return (

یکپارچه‌سازی‌ها

{TABS.map((t) => ( {t.label} ))} {TABS.map((t) => ( {grouped.map((group) => (

{group.category}

{group.categoryDescription}

{group.integrations.map((integration) => (
{integration.title}
{integration.title}
{integration.description}
setToggles((prev) => ({ ...prev, [integration.id]: checked, })) } />
))}
))}
))}
); }; export { Integration11 };