2026-07-11 21:21:29 +03:30
|
|
|
|
import { ExternalLink, Settings2, Trash2 } from "lucide-react";
|
|
|
|
|
|
|
|
|
|
|
|
import { Badge } from "@/components/ui/badge";
|
|
|
|
|
|
import { Button } from "@/components/ui/button";
|
|
|
|
|
|
import {
|
|
|
|
|
|
Table,
|
|
|
|
|
|
TableBody,
|
|
|
|
|
|
TableCell,
|
|
|
|
|
|
TableHead,
|
|
|
|
|
|
TableHeader,
|
|
|
|
|
|
TableRow,
|
|
|
|
|
|
} from "@/components/ui/table";
|
|
|
|
|
|
import {
|
|
|
|
|
|
Tooltip,
|
|
|
|
|
|
TooltipContent,
|
|
|
|
|
|
TooltipProvider,
|
|
|
|
|
|
TooltipTrigger,
|
|
|
|
|
|
} from "@/components/ui/tooltip";
|
|
|
|
|
|
import { cn } from "@/lib/utils";
|
|
|
|
|
|
|
|
|
|
|
|
interface IntegrationItem {
|
|
|
|
|
|
image: string;
|
|
|
|
|
|
title: string;
|
|
|
|
|
|
status: "active" | "inactive" | "error";
|
|
|
|
|
|
lastSync?: string;
|
|
|
|
|
|
className?: string;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
interface SettingsIntegrations6Props {
|
|
|
|
|
|
className?: string;
|
|
|
|
|
|
heading?: string;
|
|
|
|
|
|
subHeading?: string;
|
|
|
|
|
|
integrations?: IntegrationItem[];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const SettingsIntegrations6 = ({
|
|
|
|
|
|
className,
|
|
|
|
|
|
heading = "یکپارچهسازیها",
|
2026-07-21 19:25:31 +03:30
|
|
|
|
subHeading = "وضعیت همگامسازی سرویسهای متصل به سامانه مدیریت ارتباط با مشتری را کنترل کنید.",
|
2026-07-11 21:21:29 +03:30
|
|
|
|
integrations = [
|
|
|
|
|
|
{
|
|
|
|
|
|
image:
|
|
|
|
|
|
"/block-media/shadcnblocks/block/logos/slack-icon.svg",
|
|
|
|
|
|
title: "Slack",
|
|
|
|
|
|
status: "active",
|
|
|
|
|
|
lastSync: "۲ دقیقه پیش",
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
image:
|
|
|
|
|
|
"/block-media/shadcnblocks/block/logos/google-icon.svg",
|
2026-07-15 20:22:14 +02:00
|
|
|
|
title: "Google Drive",
|
2026-07-11 21:21:29 +03:30
|
|
|
|
status: "active",
|
|
|
|
|
|
lastSync: "۵ دقیقه پیش",
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
image:
|
|
|
|
|
|
"/block-media/shadcnblocks/block/logos/notion-icon.svg",
|
|
|
|
|
|
title: "Notion",
|
|
|
|
|
|
status: "error",
|
2026-07-15 20:22:14 +02:00
|
|
|
|
lastSync: "ناموفق · ۱ ساعت پیش",
|
2026-07-11 21:21:29 +03:30
|
|
|
|
className: "dark:invert",
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
image:
|
|
|
|
|
|
"/block-media/shadcnblocks/block/logos/github-icon.svg",
|
|
|
|
|
|
title: "GitHub",
|
|
|
|
|
|
status: "active",
|
|
|
|
|
|
lastSync: "همین الان",
|
|
|
|
|
|
className: "dark:invert",
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
image:
|
|
|
|
|
|
"/block-media/shadcnblocks/block/logos/figma-icon.svg",
|
|
|
|
|
|
title: "Figma",
|
|
|
|
|
|
status: "inactive",
|
2026-07-15 20:22:14 +02:00
|
|
|
|
lastSync: "هنوز همگام نشده",
|
2026-07-11 21:21:29 +03:30
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
image:
|
|
|
|
|
|
"/block-media/shadcnblocks/block/logos/jira-icon.svg",
|
|
|
|
|
|
title: "Jira",
|
|
|
|
|
|
status: "active",
|
|
|
|
|
|
lastSync: "۱۰ دقیقه پیش",
|
|
|
|
|
|
},
|
|
|
|
|
|
],
|
|
|
|
|
|
}: SettingsIntegrations6Props) => {
|
|
|
|
|
|
const getStatusBadge = (status: IntegrationItem["status"]) => {
|
|
|
|
|
|
switch (status) {
|
|
|
|
|
|
case "active":
|
|
|
|
|
|
return (
|
|
|
|
|
|
<Badge variant="secondary" className="bg-green-100 text-green-800">
|
|
|
|
|
|
فعال
|
|
|
|
|
|
</Badge>
|
|
|
|
|
|
);
|
|
|
|
|
|
case "inactive":
|
|
|
|
|
|
return <Badge variant="secondary">غیرفعال</Badge>;
|
|
|
|
|
|
case "error":
|
|
|
|
|
|
return (
|
|
|
|
|
|
<Badge variant="secondary" className="bg-red-100 text-red-800">
|
|
|
|
|
|
خطا
|
|
|
|
|
|
</Badge>
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
|
<section className={cn("py-32", className)}>
|
|
|
|
|
|
<div className="container max-w-4xl">
|
|
|
|
|
|
<div className="space-y-2 border-b pb-6">
|
|
|
|
|
|
<h2 className="text-xl font-semibold tracking-tight">{heading}</h2>
|
|
|
|
|
|
<p className="text-sm text-muted-foreground">{subHeading}</p>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div className="mt-6">
|
|
|
|
|
|
<TooltipProvider>
|
|
|
|
|
|
<Table>
|
|
|
|
|
|
<TableHeader>
|
|
|
|
|
|
<TableRow>
|
|
|
|
|
|
<TableHead>سرویس</TableHead>
|
|
|
|
|
|
<TableHead>وضعیت</TableHead>
|
|
|
|
|
|
<TableHead>آخرین همگامسازی</TableHead>
|
2026-07-15 20:22:14 +02:00
|
|
|
|
<TableHead className="text-end">اقدامات</TableHead>
|
2026-07-11 21:21:29 +03:30
|
|
|
|
</TableRow>
|
|
|
|
|
|
</TableHeader>
|
|
|
|
|
|
<TableBody>
|
|
|
|
|
|
{integrations.map((integration) => (
|
|
|
|
|
|
<TableRow key={integration.title}>
|
|
|
|
|
|
<TableCell>
|
|
|
|
|
|
<div className="flex items-center gap-3">
|
|
|
|
|
|
<img
|
|
|
|
|
|
src={integration.image}
|
2026-07-15 20:22:14 +02:00
|
|
|
|
alt={`آیکون ${integration.title}`}
|
2026-07-11 21:21:29 +03:30
|
|
|
|
className={cn("size-6", integration.className)}
|
|
|
|
|
|
/>
|
|
|
|
|
|
<span className="font-medium">{integration.title}</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</TableCell>
|
|
|
|
|
|
<TableCell>{getStatusBadge(integration.status)}</TableCell>
|
|
|
|
|
|
<TableCell className="text-muted-foreground">
|
|
|
|
|
|
{integration.lastSync}
|
|
|
|
|
|
</TableCell>
|
|
|
|
|
|
<TableCell className="text-end">
|
|
|
|
|
|
<div className="flex items-center justify-end gap-1">
|
|
|
|
|
|
<Tooltip>
|
|
|
|
|
|
<TooltipTrigger asChild>
|
|
|
|
|
|
<Button variant="ghost" size="icon">
|
|
|
|
|
|
<ExternalLink className="size-4" />
|
|
|
|
|
|
</Button>
|
|
|
|
|
|
</TooltipTrigger>
|
2026-07-15 20:22:14 +02:00
|
|
|
|
<TooltipContent>باز کردن سرویس</TooltipContent>
|
2026-07-11 21:21:29 +03:30
|
|
|
|
</Tooltip>
|
|
|
|
|
|
<Tooltip>
|
|
|
|
|
|
<TooltipTrigger asChild>
|
|
|
|
|
|
<Button variant="ghost" size="icon">
|
|
|
|
|
|
<Settings2 className="size-4" />
|
|
|
|
|
|
</Button>
|
|
|
|
|
|
</TooltipTrigger>
|
2026-07-15 20:22:14 +02:00
|
|
|
|
<TooltipContent>پیکربندی</TooltipContent>
|
2026-07-11 21:21:29 +03:30
|
|
|
|
</Tooltip>
|
|
|
|
|
|
<Tooltip>
|
|
|
|
|
|
<TooltipTrigger asChild>
|
|
|
|
|
|
<Button
|
|
|
|
|
|
variant="ghost"
|
|
|
|
|
|
size="icon"
|
|
|
|
|
|
className="text-destructive hover:text-destructive"
|
|
|
|
|
|
>
|
|
|
|
|
|
<Trash2 className="size-4" />
|
|
|
|
|
|
</Button>
|
|
|
|
|
|
</TooltipTrigger>
|
2026-07-15 20:22:14 +02:00
|
|
|
|
<TooltipContent>حذف اتصال</TooltipContent>
|
2026-07-11 21:21:29 +03:30
|
|
|
|
</Tooltip>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</TableCell>
|
|
|
|
|
|
</TableRow>
|
|
|
|
|
|
))}
|
|
|
|
|
|
</TableBody>
|
|
|
|
|
|
</Table>
|
|
|
|
|
|
</TooltipProvider>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</section>
|
|
|
|
|
|
);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
export { SettingsIntegrations6 };
|