"use client" import { useMemo, useState } from "react" import { Input } from "@/components/ui/input" import { cn } from "@/lib/utils" import { CheckIcon } from "lucide-react" export interface GatewayOption { id: string; name: string; ip: string; status: "active" | "inactive" | "unknown" } export function RecursiveGatewayChoices({ gateways, selectedValue, endpointNumber, onChange }: { gateways: GatewayOption[]; selectedValue: string; endpointNumber: number; onChange: (value: string) => void }) { const [search, setSearch] = useState("") const matches = useMemo(() => gateways.filter(g => (g.ip + "%" + g.name).toLowerCase().includes(search.toLowerCase())), [gateways, search]) const selected = matches.find(g => g.ip + "%" + g.name === selectedValue) const visible = (selected ? [selected, ...matches.filter(g => g.id !== selected.id)] : matches).slice(0, 5) return
Показано {visible.length} из {matches.length} шлюзов. Поиск охватывает весь список.
} {search && matches.length === 0 &&Шлюзы не найдены. Измените поиск или введите адрес вручную.
} {visible.map((g) => { const value = `${g.ip}%${g.name}` const selected = selectedValue === value return ( ) })}