import React, { useState } from 'react'; import { Building2, Search, ChevronRight, } from 'lucide-react'; import { useKccStore } from '../store/kccStore'; import { StatusBadge } from '../components/StatusBadge'; import { MoneyDisplay } from '../components/MoneyDisplay'; import { PlatformStatus } from '../contracts'; export const OrganizationsPage: React.FC = () => { const organizations = useKccStore((state) => state.organizations); const openInspector = useKccStore((state) => state.openInspector); const [search, setSearch] = useState(''); const [statusFilter, setStatusFilter] = useState<'all' | PlatformStatus>('all'); const filtered = organizations.filter((org) => { const matchSearch = !search || org.displayName.toLowerCase().includes(search.toLowerCase()) || org.inn.includes(search) || org.domain.toLowerCase().includes(search.toLowerCase()); const matchStatus = statusFilter === 'all' || org.platformStatus === statusFilter; return matchSearch && matchStatus; }); return (
{/* Header */}

Организации платформы (Tenants)

Реестр клиентских организаций, управление статусами, тарифами и 360-анализ тенантов

Всего организаций: {organizations.length} (найдено:{' '} {filtered.length})
{/* Filter and Search Bar */}
{/* Search */}
setSearch(e.target.value)} placeholder="Поиск по названию, ИНН или домену..." className="w-full bg-[#0b1d16] border border-zinc-800 rounded-lg pl-9 pr-3 py-2 text-xs text-zinc-100 placeholder-zinc-500 focus:outline-hidden focus:border-amber-500 transition-colors" />
{/* Status Filters */}
{[ { id: 'all', label: 'Все' }, { id: 'active', label: 'Active' }, { id: 'trial', label: 'Trial' }, { id: 'grace', label: 'Grace' }, { id: 'suspended', label: 'Suspended' }, ].map((tab) => ( ))}
{/* Organizations Table */}
{filtered.map((org) => ( openInspector('organization', org.tenantId)} className="hover:bg-zinc-800/40 cursor-pointer transition-colors group" > ))} {filtered.length === 0 && ( )}
Организация / ИНН Статус Тарифный план Польз. / Точки Модули MRR Доход Задолженность Активность Действие
{org.displayName}
ИНН {org.inn} • {org.domain}
{org.tariffPlan} {org.userCount} / {org.branchCount} {org.installedModulesCount} 0 ? 'text-rose-400 font-bold' : 'text-zinc-400'} /> {new Date(org.lastActiveAt).toLocaleString('ru-RU', { day: '2-digit', month: '2-digit', hour: '2-digit', minute: '2-digit', })}
Организации не найдены по заданным критериям фильтрации
); };