"use client";
import { useState } from "react";
import { ScrollableTabsList } from "@/components/shadcnblocks/scrollable-tabslist";
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import { cn } from "@/lib/utils";
interface IntegrationItem {
image: string;
title: string;
description: string;
isConnected?: boolean;
category: string;
className?: string;
}
interface IntegrationCardProps {
integration: IntegrationItem;
onToggle?: (title: string) => void;
}
const IntegrationCard = ({ integration, onToggle }: IntegrationCardProps) => {
return (
{integration.title}
{integration.description}
{integration.isConnected && (
متصل
)}
);
};
interface SettingsIntegrations4Props {
className?: string;
heading?: string;
subHeading?: string;
integrations?: IntegrationItem[];
}
const SettingsIntegrations4 = ({
className,
heading = "یکپارچهسازیها",
subHeading = "کانالهای فروش، فایلها و پرداخت را به فضای کاری سامانه مدیریت ارتباط با مشتری وصل کنید.",
integrations: initialIntegrations = [
{
image:
"/block-media/shadcnblocks/block/logos/slack-icon.svg",
title: "Slack",
description: "هشدار لید و تیکت را لحظهای به کانال تیم بفرستید.",
isConnected: true,
category: "communication",
},
{
image:
"/block-media/shadcnblocks/block/logos/discord-icon.svg",
title: "Discord",
description: "هشدارهای پایپلاین را به سرور تیم بفرستید.",
category: "communication",
},
{
image:
"/block-media/shadcnblocks/block/logos/microsoft-teams-icon.svg",
title: "Microsoft Teams",
description: "گفتگوهای فروش را در Teams ادامه دهید.",
category: "communication",
},
{
image:
"/block-media/shadcnblocks/block/logos/google-icon.svg",
title: "Google Drive",
description: "اسناد معامله را با رکوردهای سامانه مدیریت ارتباط با مشتری همگام کنید.",
isConnected: true,
category: "storage",
},
{
image:
"/block-media/shadcnblocks/block/logos/dropbox-icon.svg",
title: "Dropbox",
description: "اسناد قرارداد را امن ذخیره و اشتراک بگذارید.",
category: "storage",
},
{
image:
"/block-media/shadcnblocks/block/logos/microsoft-onedrive-icon.svg",
title: "OneDrive",
description: "فایلهای مشتری را از OneDrive به سامانه مدیریت ارتباط با مشتری بیاورید.",
category: "storage",
},
{
image:
"/block-media/shadcnblocks/block/logos/github-icon.svg",
title: "GitHub",
description: "وبهوک مخزن را به گردشکار محصول وصل کنید.",
isConnected: true,
category: "development",
className: "dark:invert",
},
{
image:
"/block-media/shadcnblocks/block/logos/gitlab-icon.svg",
title: "GitLab",
description: "خط لوله استقرار را با رویدادهای محصول همگام کنید.",
category: "development",
},
{
image:
"/block-media/shadcnblocks/block/logos/vercel-icon.svg",
title: "Vercel",
description: "لندینگ و پورتال مشتری را مستقر و پیشنمایش کنید.",
category: "development",
className: "dark:invert",
},
{
image:
"/block-media/shadcnblocks/block/logos/stripe-icon.svg",
title: "Stripe",
description: "پرداخت و اشتراک مشتری را از سامانه مدیریت ارتباط با مشتری پیگیری کنید.",
isConnected: true,
category: "payments",
},
{
image:
"/block-media/shadcnblocks/block/logos/paypal-icon.svg",
title: "PayPal",
description: "پرداخت آنلاین مشتریان را بپذیرید و ثبت کنید.",
category: "payments",
},
],
}: SettingsIntegrations4Props) => {
const [integrations, setIntegrations] = useState(initialIntegrations);
const categories = [...new Set(integrations.map((i) => i.category))];
const handleToggle = (title: string) => {
setIntegrations((prev) =>
prev.map((i) =>
i.title === title ? { ...i, isConnected: !i.isConnected } : i,
),
);
};
const getCategoryLabel = (category: string) => {
const labels: Record = {
communication: "ارتباطات تیمی",
storage: "فایل و اسناد",
development: "مهندسی",
payments: "پرداخت و صورتحساب",
};
return labels[category] ?? category;
};
return (
{categories.map((category) => (
{getCategoryLabel(category)}
))}
{categories.map((category) => (
{integrations
.filter((i) => i.category === category)
.map((integration) => (
))}
))}
);
};
export { SettingsIntegrations4 };