import React, { useMemo } from 'react'; import { Listbox } from '@headlessui/react'; import { forwardRef } from '../utils/react'; import { SelectButton as BaseSelectButton, SelectButtonProps as BaseSelectButtonProps, } from '../select-button'; /*-- Types --*/ type ListboxButtonContext = { open: boolean; disabled: boolean; }; type ListboxButtonProps = { children?: | React.ReactNode | ((context: ListboxButtonContext) => React.ReactElement); className?: string | ((context: ListboxButtonContext) => string); }; export interface SelectButtonProps extends ListboxButtonProps, BaseSelectButtonProps {} /*-- Main --*/ export const SelectButton = forwardRef< typeof BaseSelectButton, SelectButtonProps >(function SelectButton({ as, ...rest }, ref) { const WrappedBaseSelectButton = useMemo( () => React.forwardRef(function WrappedBaseSelectButton(props: any, ref) { return ; }), [as], ); return ; });