/**
* БЛОК ВЫБОРА ПОСТАВЩИКОВ
*
* Выделен из create-suppliers-supply-page.tsx
* Горизонтальный скролл поставщиков с поиском
*/
'use client'
import { Search } from 'lucide-react'
import React from 'react'
import { OrganizationAvatar } from '@/components/market/organization-avatar'
import { Input } from '@/components/ui/input'
import type { SuppliersBlockProps } from '../types/supply-creation.types'
export const SuppliersBlock = React.memo(function SuppliersBlock({
suppliers,
selectedSupplier,
searchQuery,
loading,
onSupplierSelect,
onSearchChange,
}: SuppliersBlockProps) {
if (loading) {
return (
)
}
return (
{/* Заголовок и поиск */}
{suppliers.length === 0 ? (
{searchQuery ? 'Поставщики не найдены' : 'Нет доступных поставщиков'}
{searchQuery && (
onSearchChange('')}
className="text-purple-400 text-xs hover:text-purple-300 transition-colors"
>
Очистить поиск
)}
) : (
{suppliers.map((supplier) => (
onSupplierSelect(supplier)}
className={`flex-shrink-0 p-3 rounded-lg cursor-pointer group transition-all duration-200
w-[184px] md:w-[200px] lg:w-[216px] h-[92px]
${
selectedSupplier?.id === supplier.id
? 'bg-green-500/20 border border-green-400/60 shadow-lg ring-1 ring-green-400/30'
: 'bg-white/5 border border-white/10 hover:border-white/20 hover:bg-white/10 hover:shadow-md'
}`}
>
{supplier.name || supplier.fullName}
ИНН: {supplier.inn}
{/* Дополнительная информация */}
{supplier.rating && ★ {supplier.rating} }
{supplier.market && (
{getMarketLabel(supplier.market)}
)}
))}
)}
{/* Информация о выбранном поставщике */}
{selectedSupplier && (
Выбран: {selectedSupplier.name || selectedSupplier.fullName}
{selectedSupplier.address && (
• {selectedSupplier.address}
)}
)}
)
})
// Утилитарная функция для меток рынков (временно, потом перенести в хук)
function getMarketLabel(market?: string) {
switch (market) {
case 'wildberries':
return 'WB'
case 'ozon':
return 'OZON'
case 'yandexmarket':
return 'YM'
default:
return 'Универсальный'
}
}