UNPKG

mt-flowbite-react

Version:

Official React components built for Flowbite and Tailwind CSS

50 lines (49 loc) 2.54 kB
import type { ExtendedRefs, useInteractions } from '@floating-ui/react'; import type { Dispatch, FC, HTMLProps, PropsWithChildren, ReactElement, ReactNode, SetStateAction } from 'react'; import type { ButtonProps, DeepPartial } from '../../'; import type { FloatingProps, FlowbiteFloatingTheme } from '../../components/Floating'; import type { FlowbiteDropdownDividerTheme } from './DropdownDivider'; import type { FlowbiteDropdownHeaderTheme } from './DropdownHeader'; import type { FlowbiteDropdownItemTheme } from './DropdownItem'; export interface FlowbiteDropdownFloatingTheme extends FlowbiteFloatingTheme, FlowbiteDropdownDividerTheme, FlowbiteDropdownHeaderTheme { item: FlowbiteDropdownItemTheme; } export interface FlowbiteDropdownTheme { floating: FlowbiteDropdownFloatingTheme; content: string; inlineWrapper: string; arrowIcon: string; } export interface DropdownProps extends PropsWithChildren, Pick<FloatingProps, 'placement' | 'trigger'>, Omit<ButtonProps, 'theme'> { arrowIcon?: boolean; dismissOnClick?: boolean; floatingArrow?: boolean; inline?: boolean; label: ReactNode; theme?: DeepPartial<FlowbiteDropdownTheme>; renderTrigger?: (theme: FlowbiteDropdownTheme) => ReactElement; 'data-testid'?: string; } export interface TriggerProps extends Omit<ButtonProps, 'theme'> { refs: ExtendedRefs<HTMLElement>; inline?: boolean; theme: FlowbiteDropdownTheme; setButtonWidth?: Dispatch<SetStateAction<number | undefined>>; getReferenceProps: (userProps?: HTMLProps<Element> | undefined) => Record<string, unknown>; renderTrigger?: (theme: FlowbiteDropdownTheme) => ReactElement; } interface DropdownContextValue { activeIndex: number | null; dismissOnClick?: boolean; getItemProps: ReturnType<typeof useInteractions>['getItemProps']; handleSelect: (index: number | null) => void; } export declare const DropdownContext: import("react").Context<DropdownContextValue>; export declare const Dropdown: FC<DropdownProps> & { Item: <T extends import("react").ElementType = "button">({ children, className, icon: Icon, onClick, theme: customTheme, ...props }: import("./DropdownItem").DropdownItemProps<T>) => import("react/jsx-runtime").JSX.Element; Header: FC<{ children?: ReactNode; } & import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement>>; Divider: FC<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>>; }; export {};