/** * Regulations page — loads from /api/regulations. * Разработчик: АО «REFLY» */ 'use client'; import { useState, useEffect, useMemo } from 'react'; import { PageLayout, FilterBar, StatusBadge, EmptyState } from '@/components/ui'; import RegulationViewModal from '@/components/RegulationViewModal'; export default function RegulationsPage() { const [regulations, setRegulations] = useState([]); const [loading, setLoading] = useState(true); const [selected, setSelected] = useState(null); const [sourceFilter, setSourceFilter] = useState(); useEffect(() => { (async () => { try { const r = await fetch('/api/regulations'); const data = await r.json(); setRegulations(Array.isArray(data) ? data : data?.documents || data?.data || []); } catch { setRegulations([]); } finally { setLoading(false); } })(); }, []); const sources = useMemo(() => [...new Set(regulations.map(r => r.source).filter(Boolean))], [regulations]); const filtered = sourceFilter ? regulations.filter(r => r.source === sourceFilter) : regulations; return ( ({ value: s, label: s }))]} /> {loading ?
Загрузка...
: filtered.length > 0 ? (
{filtered.map((reg: any) => (
setSelected(reg)}>
{reg.source || '—'} {reg.number}
{reg.title || reg.name}
{reg.type &&
Тип: {reg.type}
}
))}
) : } setSelected(null)} regulation={selected} />
); }