"use client" import { useMemo, useState } from "react" import { PageHeader } from "@/components/page-header" import { DataPageCard } from "@/components/data-page-card" import { DataPageToolbar } from "@/components/data-page-toolbar" import { DomainsDataGrid } from "@/components/data-grids/domains-data-grid" import { FileImportDialog } from "@/components/file-import-dialog" import { domains as mockDomains } from "@/lib/data" import { Button } from "@/components/ui/button" import { UploadIcon, DownloadIcon, PlusIcon } from "lucide-react" import { useEvoCatalogView, EvoBgpCatalogStatus, EvoBgpCatalogUnavailable } from "@/components/settings/evobgp-catalog-status" import { toast } from "sonner" export default function DomainsPage() { const { mode, snapshot, loading, known } = useEvoCatalogView() const [importOpen, setImportOpen] = useState(false) const [search, setSearch] = useState("") const useEvoCatalog = mode === "live" const rows = useMemo(() => { if (mode === "mock") return mockDomains if (loading && !snapshot) return [] return snapshot?.domains ?? [] }, [mode, loading, snapshot]) const filtered = useMemo(() => { if (!search) return rows const q = search.toLowerCase() return rows.filter( (r) => r.domain.toLowerCase().includes(q) || r.asn.toLowerCase().includes(q) || r.filter.toLowerCase().includes(q), ) }, [rows, search]) return (
} />

Домены

Домены из каталога для BGP-фильтрации

{known || loading ? : }
{ toast.info(`Выбран файл: ${files[0]?.name ?? "—"}`) }} />
) }