"use client"; import { useState } from "react"; import { useQuery } from "@apollo/client"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Card } from "@/components/ui/card"; import { Sidebar } from "@/components/dashboard/sidebar"; import { useSidebar } from "@/hooks/useSidebar"; import { GET_PENDING_SUPPLIES_COUNT } from "@/graphql/queries"; import { Building2, ShoppingCart } from "lucide-react"; // Импорты компонентов подразделов import { FulfillmentSuppliesTab } from "./fulfillment-supplies/fulfillment-supplies-tab"; import { MarketplaceSuppliesTab } from "./marketplace-supplies/marketplace-supplies-tab"; // Компонент для отображения бейджа с уведомлениями function NotificationBadge({ count }: { count: number }) { if (count === 0) return null; return (
{count > 99 ? "99+" : count}
); } export function FulfillmentSuppliesDashboard() { const { getSidebarMargin } = useSidebar(); const [activeTab, setActiveTab] = useState("fulfillment"); // Загружаем данные о непринятых поставках const { data: pendingData } = useQuery(GET_PENDING_SUPPLIES_COUNT, { pollInterval: 30000, // Обновляем каждые 30 секунд fetchPolicy: "cache-first", errorPolicy: "ignore", }); const pendingCount = pendingData?.pendingSuppliesCount?.total || 0; return (
{/* Основной контент с табами */}
Поставки на фулфилмент Фулфилмент Поставки на маркетплейсы Маркетплейсы
); }