"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: "فضای ابری",
description: "فایلها را بهصورت خودکار همگامسازی و پشتیبانگیری کنید.",
isConnected: true,
category: "ذخیرهسازی",
},
{
image:
"/block-media/shadcnblocks/block/logos/dropbox-icon.svg",
title: "Dropbox",
description: "به فایلهای Dropbox خود بدون وقفه دسترسی داشته باشید.",
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: "با GitLab برای یکپارچهسازی استقرار خودکار متصل شوید.",
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 };