'use client'; import React from 'react'; import { createPortal } from 'react-dom'; import { IconCheck, IconChevronDown } from './Icons'; /** * A single choice in a {@link Listbox}. * * `label` stays plain text so the same option table can feed a `title` * attribute or an aria-label; `icon` is the themed glyph shown beside it. */ export interface ListboxOption { value: T; label: string; icon?: React.ReactNode; } export interface ListboxProps { value: T; options: readonly ListboxOption[]; onChange: (value: T) => void; /** Accessible name. Prefer `labelledBy` when a visible