"use client"
import { useState, useEffect } from 'react'
import { Card } from '@/components/ui/card'
import { Button } from '@/components/ui/button'
import { Badge } from '@/components/ui/badge'
import { Sidebar } from '@/components/dashboard/sidebar'
import { useSidebar } from '@/hooks/useSidebar'
import { StatsCard } from '@/components/supplies/ui/stats-card'
import { StatsGrid } from '@/components/supplies/ui/stats-grid'
import {
Package,
TrendingUp,
AlertTriangle,
RotateCcw,
Wrench,
Users,
ShoppingBag,
ChevronDown,
ChevronUp,
Box,
Zap,
Target,
Activity,
BarChart3,
Eye,
EyeOff,
Warehouse
} from 'lucide-react'
export function FulfillmentWarehouseDashboard() {
const { getSidebarMargin } = useSidebar()
// Состояния для свёртывания блоков
const [expandedSections, setExpandedSections] = useState({
warehouse: true
})
// Состояние для живых изменений продуктов
const [liveChange, setLiveChange] = useState({
value: 12,
isPositive: true,
timestamp: Date.now()
})
// Состояние для модуля товары с дополнительными значениями
const [goodsData, setGoodsData] = useState({
processing: 245, // В обработке (положительное)
rejected: 18, // Отклонено (отрицательное)
efficiency: 87, // Эффективность обработки
isActive: true, // Активность процесса
pulse: 0 // Для анимации пульса
})
// Симуляция живых изменений для продуктов
useEffect(() => {
const interval = setInterval(() => {
const change = Math.floor(Math.random() * 20) - 10 // от -10 до +10
setLiveChange({
value: Math.abs(change),
isPositive: change >= 0,
timestamp: Date.now()
})
}, 3000) // каждые 3 секунды
return () => clearInterval(interval)
}, [])
// Симуляция изменений для товаров
useEffect(() => {
const interval = setInterval(() => {
setGoodsData(prev => ({
...prev,
processing: prev.processing + Math.floor(Math.random() * 10) - 5,
rejected: Math.max(0, prev.rejected + Math.floor(Math.random() * 6) - 3),
efficiency: Math.min(100, Math.max(70, prev.efficiency + Math.floor(Math.random() * 6) - 3)),
pulse: prev.pulse + 1
}))
}, 2500) // каждые 2.5 секунды
return () => clearInterval(interval)
}, [])
// Мок данные для статистики склада фулфилмента
const warehouseStats = {
// Текущие данные
currentProducts: 856, // Готовые продукты
currentGoods: 391, // Товары в процессе
currentDefects: 23,
currentReturns: 156,
currentFulfillmentSupplies: 89,
currentSellerSupplies: 234,
// Тренды (в процентах)
productsTrend: 12,
goodsTrend: 8,
defectsTrend: -5,
returnsTrend: 8,
suppliesTrend: 15,
// Дополнительная аналитика
efficiency: 94.5,
turnover: 2.3,
utilizationRate: 87
}
const formatNumber = (num: number) => {
return num.toLocaleString('ru-RU')
}
const toggleSection = (section: keyof typeof expandedSections) => {
setExpandedSections(prev => ({
...prev,
[section]: !prev[section]
}))
}
// Компонент заголовка секции с кнопкой свёртывания
const SectionHeader = ({ title, section, badge, color = "text-white" }: {
title: string
section: keyof typeof expandedSections
badge?: number
color?: string
}) => (
{title}
{badge && (
{badge}
)}
)
return (
{/* Объединенный блок склада - ПЕРВЫЙ СВЕРХУ */}
{expandedSections.warehouse && (
{/* Уникальный модуль "Продукты" */}
{/* Живой индикатор изменений */}
{liveChange.isPositive ? '+' : '-'}{liveChange.value}
{/* Заголовок с иконкой */}
{/* Мини-график тренда */}
{/* Основное значение */}
{formatNumber(warehouseStats.currentProducts)}
{/* Подпись */}
Готовые к отправке
{/* Прогресс-бар */}
{/* Живое изменение значения */}
LIVE {liveChange.isPositive ? '+' : '-'}{liveChange.value}
{/* Декоративные элементы */}
{/* Уникальный модуль "Товары" */}
{/* Анимированный фон */}
{/* Статус активности */}
{/* Заголовок с двойной иконкой */}
{/* Мини-индикатор обработки */}
ТОВАРЫ
{/* Круговой прогресс эффективности */}
{/* Основное значение */}
{formatNumber(warehouseStats.currentGoods)}
{/* Дополнительные значения */}
{/* Положительное значение */}
+{formatNumber(goodsData.processing)}
{/* Отрицательное значение */}
-{formatNumber(goodsData.rejected)}
{/* Подпись */}
В обработке
{/* Волновой прогресс */}
{/* Волновая анимация */}
{/* Hover эффект с детальной информацией */}
ДЕТАЛИ
+{goodsData.processing}
Активных
-{goodsData.rejected}
Проблем
{goodsData.efficiency}%
Успех
{/* Декоративные частицы */}
)}
{/* Компактный заголовок с ключевыми метриками */}
Эффективность
{warehouseStats.efficiency}%
Оборачиваемость
{warehouseStats.turnover}x
Загрузка склада
{warehouseStats.utilizationRate}%
{/* Нестандартные решения */}
{/* Интеллектуальные инсайты */}
Оптимизация
Рекомендуется увеличить запас расходников на 15% для покрытия пикового спроса
Ожидается рост возвратов на 12% в следующем месяце. Подготовьте дополнительные места
Тренд
Эффективность обработки товаров выросла на 8% за последний месяц
{/* Быстрые действия */}
Основная функциональность склада будет добавлена на следующем этапе
)
}