feat: implement comprehensive supplies management system

- Create new supplies dashboard with multi-level navigation structure
- Add fulfillment supplies section with goods/materials/returns tabs
- Add marketplace supplies section with Wildberries/Ozon tabs
- Update existing supplies pages to use new dashboard
- Fix height alignment in statistics blocks
- Remove redundant title from materials supplies section
This commit is contained in:
Veronika Smirnova
2025-07-21 13:25:16 +03:00
parent d964b9b6d4
commit ead17fd56c
11 changed files with 1830 additions and 40 deletions

View File

@ -0,0 +1,122 @@
"use client";
import { useState } from "react";
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 {
Package,
Wrench,
Truck,
ArrowLeftRight,
Building,
ShoppingCart,
} from "lucide-react";
// Импорты компонентов
import { MaterialsSuppliesTab } from "./materials-supplies/materials-supplies-tab";
import { FulfillmentSuppliesTab } from "./fulfillment-supplies/fulfillment-supplies-tab";
import { MarketplaceSuppliesTab } from "./marketplace-supplies/marketplace-supplies-tab";
export function SuppliesDashboard() {
const { getSidebarMargin } = useSidebar();
const [mainTab, setMainTab] = useState("goods");
const [goodsSubTab, setGoodsSubTab] = useState("fulfillment");
return (
<div className="h-screen flex overflow-hidden">
<Sidebar />
<main
className={`flex-1 ${getSidebarMargin()} px-4 py-3 overflow-hidden transition-all duration-300`}
>
<div className="h-full w-full flex flex-col">
{/* Заголовок */}
<div className="mb-4">
<h1 className="text-2xl font-bold text-white mb-2">Поставки</h1>
<p className="text-white/60 text-sm">
Управление поставками товаров и расходников
</p>
</div>
{/* Основная навигация */}
<div className="flex-1 overflow-hidden">
<Tabs
value={mainTab}
onValueChange={setMainTab}
className="h-full flex flex-col"
>
<TabsList className="grid w-full grid-cols-2 bg-white/5 backdrop-blur border-white/10 flex-shrink-0 h-12 mb-4">
<TabsTrigger
value="goods"
className="data-[state=active]:bg-white/20 data-[state=active]:text-white text-white/70 flex items-center gap-2 text-sm font-medium"
>
<Package className="h-4 w-4" />
Поставки товаров
</TabsTrigger>
<TabsTrigger
value="materials"
className="data-[state=active]:bg-white/20 data-[state=active]:text-white text-white/70 flex items-center gap-2 text-sm font-medium"
>
<Wrench className="h-4 w-4" />
Поставки расходников
</TabsTrigger>
</TabsList>
{/* Поставки товаров */}
<TabsContent value="goods" className="flex-1 overflow-hidden">
<Tabs
value={goodsSubTab}
onValueChange={setGoodsSubTab}
className="h-full flex flex-col"
>
<TabsList className="grid w-full grid-cols-2 bg-white/10 backdrop-blur border-white/10 flex-shrink-0 h-10 mb-3">
<TabsTrigger
value="fulfillment"
className="data-[state=active]:bg-white/20 data-[state=active]:text-white text-white/70 flex items-center gap-2 text-xs"
>
<Building className="h-3 w-3" />
Наш фулфилмент
</TabsTrigger>
<TabsTrigger
value="marketplaces"
className="data-[state=active]:bg-white/20 data-[state=active]:text-white text-white/70 flex items-center gap-2 text-xs"
>
<ShoppingCart className="h-3 w-3" />
Маркетплейсы
</TabsTrigger>
</TabsList>
<TabsContent
value="fulfillment"
className="flex-1 overflow-hidden"
>
<Card className="glass-card h-full overflow-hidden p-0">
<FulfillmentSuppliesTab />
</Card>
</TabsContent>
<TabsContent
value="marketplaces"
className="flex-1 overflow-hidden"
>
<Card className="glass-card h-full overflow-hidden p-0">
<MarketplaceSuppliesTab />
</Card>
</TabsContent>
</Tabs>
</TabsContent>
{/* Поставки расходников */}
<TabsContent value="materials" className="flex-1 overflow-hidden">
<Card className="glass-card h-full overflow-hidden p-0">
<MaterialsSuppliesTab />
</Card>
</TabsContent>
</Tabs>
</div>
</div>
</main>
</div>
);
}