import { ListboxButton } from '@headlessui/react'; import mergeProps from 'merge-props'; import { useContext } from 'react'; import { PolymorphicWithOverrides } from '../../../common/polymorphicWithOverrides/PolymorphicWithOverrides'; import { Merge } from '../../../utils'; import { SelectInputTriggerButtonPropsContext } from '../SelectInput.contexts'; export type SelectInputTriggerButtonElementType = 'button' | React.ComponentType; export type SelectInputTriggerButtonProps< T extends SelectInputTriggerButtonElementType = 'button', > = Merge, { as?: T }>; /** * The trigger button component for SelectInput. * Uses Headless UI's ListboxButton with polymorphic support to allow * rendering as different element types. */ export function SelectInputTriggerButton({ as = 'button' as T, ...restProps }: SelectInputTriggerButtonProps) { const { ref, onClick, onKeyDown, size, ...interactionProps } = useContext( SelectInputTriggerButtonPropsContext, ); return ( } {...mergeProps({ onClick, onKeyDown }, restProps)} /> ); }