"use client";
import { Check, Plus, Search } from "lucide-react";
import { useMemo, useState } from "react";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
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.category}
);
};
interface SettingsIntegrations7Props {
className?: string;
heading?: string;
subHeading?: string;
integrations?: IntegrationItem[];
}
const SettingsIntegrations7 = ({
className,
heading = "بازارچه یکپارچهسازی",
subHeading = "ابزارهای فروش و پشتیبانی را وصل کنید تا دادهها در سامانه مدیریت ارتباط با مشتری جاری بمانند.",
integrations: initialIntegrations = [
{
image:
"/block-media/shadcnblocks/block/logos/slack-icon.svg",
title: "Slack",
description: "هشدار لید و تیکت را لحظهای در کانال تیم بگیرید.",
isConnected: true,
category: "ارتباطات تیمی",
},
{
image:
"/block-media/shadcnblocks/block/logos/discord-icon.svg",
title: "Discord",
description: "وضعیت پایپلاین را به سرور تیم بفرستید.",
category: "ارتباطات تیمی",
},
{
image:
"/block-media/shadcnblocks/block/logos/google-icon.svg",
title: "Google Drive",
description: "اسناد معامله را خودکار همگام و پشتیبان کنید.",
isConnected: true,
category: "فایل و اسناد",
},
{
image:
"/block-media/shadcnblocks/block/logos/dropbox-icon.svg",
title: "Dropbox",
description: "اسناد مشتری را بدون خروج از سامانه مدیریت ارتباط با مشتری باز کنید.",
category: "فایل و اسناد",
},
{
image:
"/block-media/shadcnblocks/block/logos/github-icon.svg",
title: "GitHub",
description: "وضعیت مخزن و دیپلوی را پیگیری کنید.",
isConnected: true,
category: "مهندسی",
className: "dark:invert",
},
{
image:
"/block-media/shadcnblocks/block/logos/gitlab-icon.svg",
title: "GitLab",
description: "استقرار خودکار را با رویدادهای محصول همگام کنید.",
category: "مهندسی",
},
{
image:
"/block-media/shadcnblocks/block/logos/notion-icon.svg",
title: "Notion",
description: "صفحات دانش فروش را دوطرفه همگام کنید.",
category: "عملیات فروش",
className: "dark:invert",
},
{
image:
"/block-media/shadcnblocks/block/logos/linear-icon.svg",
title: "Linear",
description: "کارهای محصول را همینجا بسازید و پیگیری کنید.",
isConnected: true,
category: "عملیات فروش",
className: "dark:invert",
},
{
image:
"/block-media/shadcnblocks/block/logos/stripe-icon.svg",
title: "Stripe",
description: "پرداخت و تمدید اشتراک را پردازش کنید.",
isConnected: true,
category: "پرداخت و صورتحساب",
},
],
}: SettingsIntegrations7Props) => {
const [integrations, setIntegrations] = useState(initialIntegrations);
const [searchValue, setSearchValue] = useState("");
const filteredIntegrations = useMemo(() => {
if (!searchValue) return integrations;
return integrations.filter(
(i) =>
i.title.toLowerCase().includes(searchValue.toLowerCase()) ||
i.category.toLowerCase().includes(searchValue.toLowerCase()),
);
}, [integrations, searchValue]);
const handleToggle = (title: string) => {
setIntegrations((prev) =>
prev.map((i) =>
i.title === title ? { ...i, isConnected: !i.isConnected } : i,
),
);
};
const connectedCount = integrations.filter((i) => i.isConnected).length;
return (
{heading}
{subHeading}
{connectedCount.toLocaleString("fa-IR")} از{" "}
{integrations.length.toLocaleString("fa-IR")} سرویس متصل است
setSearchValue(e.target.value)}
/>
{filteredIntegrations.map((integration) => (
))}
{filteredIntegrations.length === 0 && (
نتیجهای برای «{searchValue}» پیدا نشد
)}
);
};
export { SettingsIntegrations7 };