import type * as DropdownMenu from "@radix-ui/react-dropdown-menu"
import type { ComponentProps, ReactNode } from "react"

export interface IDropdownProps extends ComponentProps<
	typeof DropdownMenu.Root
> {
	children?: ReactNode
}

export interface IDropdownTriggerProps extends ComponentProps<
	typeof DropdownMenu.Trigger
> {
	children?: ReactNode
	asChild?: boolean
}

export interface IDropdownContentProps extends ComponentProps<
	typeof DropdownMenu.Content
> {
	children?: ReactNode
	sideOffset?: number
	align?: "start" | "center" | "end"
}

export interface IDropdownItemProps extends ComponentProps<
	typeof DropdownMenu.Item
> {
	children?: ReactNode
	disabled?: boolean
}

export interface IDropdownCheckboxItemProps extends ComponentProps<
	typeof DropdownMenu.CheckboxItem
> {
	children?: ReactNode
	checked?: boolean
	onCheckedChange?: (checked: boolean) => void
}

export interface IDropdownRadioGroupProps extends ComponentProps<
	typeof DropdownMenu.RadioGroup
> {
	children?: ReactNode
	value?: string
	onValueChange?: (value: string) => void
}

export interface IDropdownRadioItemProps extends ComponentProps<
	typeof DropdownMenu.RadioItem
> {
	children?: ReactNode
	value: string
}

export interface IDropdownLabelProps extends ComponentProps<
	typeof DropdownMenu.Label
> {
	children?: ReactNode
}

export interface IDropdownSeparatorProps extends ComponentProps<
	typeof DropdownMenu.Separator
> {}

export interface IDropdownSubProps extends ComponentProps<
	typeof DropdownMenu.Sub
> {
	children?: ReactNode
}

export interface IDropdownSubTriggerProps extends ComponentProps<
	typeof DropdownMenu.SubTrigger
> {
	children?: ReactNode
}

export interface IDropdownSubContentProps extends ComponentProps<
	typeof DropdownMenu.SubContent
> {
	children?: ReactNode
	sideOffset?: number
}
