import { ChevronDown } from "lucide-react"; import { type ReactNode, useState } from "react"; /** * Выпадающий выбор «как select» в стиле подсказок ников (.suggest-*): * кнопка-триггер с выбранным значением, под ней список опций. Родитель сам * фильтрует options (например, убирает выбранное в других строках) и передаёт * selected, найденный в ПОЛНОМ списке: выбранное значение может отсутствовать * в options (например, фракция занята другой строкой после «Рандом всем»). */ export function PickerSelect({ selected, options, placeholder, renderOption, renderValue, onPick, }: { selected: T | null; options: T[]; placeholder: string; renderOption: (option: T) => ReactNode; /** Отрисовка выбранного в триггере; по умолчанию — как renderOption. */ renderValue?: (option: T) => ReactNode; onPick: (option: T) => void; }) { const [open, setOpen] = useState(false); return (
{open && options.length > 0 && (
{options.map((o) => ( ))}
)}
); }