import type React from "react"; import type { ComboboxContent } from "src/primitives/Combobox"; import type { DropdownPassthroughProps } from "./dropdown.types"; export type { DropdownPassthroughProps }; export interface SelectComboboxProps { /** Name attribute forwarded to the underlying input. */ name?: string; /** ID for the combobox input, forwarded from the field wrapper. */ id: string; /** Base-UI items array for filtering (derived from options). */ effectiveItems?: string[] | { label: string; items: string[]; }[]; /** Returns the display label for a given value string. */ labelForValue: (val: string) => string; /** Returns the ReactNode for rendering a value (dropdown rows). */ renderOption: (val: string) => React.ReactNode; /** Returns the ReactNode for rendering the selected value in the trigger. */ renderTrigger: (val: string) => React.ReactNode; /** Whether the search input is visible. */ isSearchable: boolean; /** Whether options are loaded asynchronously. */ isAsync: boolean; /** Whether new options can be created by typing. */ isCreatable: boolean; /** Custom filter function used when isCreatable=true. */ creatableFilter: (v: string, q: string, fn?: (v: string) => string) => boolean; /** Whether the component is in controlled mode. */ isControlled: boolean; /** Controlled value (only when isControlled=true). */ valueProp?: string; /** Default value for uncontrolled mode. */ defaultValue?: string; /** The currently selected value string. */ currentValue: string; /** Called by the combobox when the selected value changes. */ handleValueChange: (next: string | null) => void; /** Called when the search input value changes (async/creatable). */ handleInputValueChange: (value: string) => void; /** Called when the clear button is clicked. */ handleClear: () => void; /** Callback when the dropdown opens or closes. */ onOpenChange?: (open: boolean) => void; /** Whether the component is disabled. */ isDisabled: boolean; /** Whether the first matching item is highlighted automatically. */ autoHighlight: boolean; /** Whether the field is required. */ required: boolean; /** Whether to show a clear button when a value is selected. */ isClearable: boolean; /** Whether the clear button is currently visible. */ showClearButton: boolean; /** Tailwind size classes for the trigger container. */ sizeConfig: { chips: string; input: string; chip: string; icon: string; }; /** Error string (non-empty triggers error styling). */ error: string; /** Placeholder text for the input. */ placeholder: string; /** aria-describedby value for the input. */ ariaDescribedBy?: string; /** data-testid prefix for the component tree. */ testIdPrefix?: string; /** Additional CSS class names for the input/trigger. */ inputClassName?: string; /** Props forwarded to ComboboxContent. */ contentProps?: Omit, "anchor" | "children">; /** Dropdown state props passed through to MultiSelectDropdown. */ dropdownProps: DropdownPassthroughProps; /** Children rendered inside the dropdown (overrides options). */ children?: React.ReactNode; }