import { cn } from "@/modules/ui/utils/cn"; import type { DropdownMenuCheckboxItemProps, DropdownMenuContentProps, DropdownMenuGroupLabelProps, DropdownMenuItemLabelProps, DropdownMenuItemProps, DropdownMenuRadioItemProps, DropdownMenuRootProps, DropdownMenuSeparatorProps, DropdownMenuSubTriggerProps, } from "@kobalte/core/dropdown-menu"; import { DropdownMenu as DropdownMenuPrimitive } from "@kobalte/core/dropdown-menu"; import type { PolymorphicProps } from "@kobalte/core/polymorphic"; import type { ComponentProps, ParentProps, ValidComponent } from "solid-js"; import { mergeProps, splitProps } from "solid-js"; export const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger; export const DropdownMenuGroup = DropdownMenuPrimitive.Group; export const DropdownMenuSub = DropdownMenuPrimitive.Sub; export const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup; export const DropdownMenu = (props: DropdownMenuRootProps) => { const merge = mergeProps({ gutter: 4 }, props); return ; }; type dropdownMenuContentProps = DropdownMenuContentProps & { class?: string; }; export const DropdownMenuContent = ( props: PolymorphicProps>, ) => { const [local, rest] = splitProps(props as dropdownMenuContentProps, [ "class", ]); return ( ); }; type dropdownMenuItemProps = DropdownMenuItemProps & { class?: string; inset?: boolean; }; export const DropdownMenuItem = ( props: PolymorphicProps>, ) => { const [local, rest] = splitProps(props as dropdownMenuItemProps, [ "class", "inset", ]); return ( ); }; type dropdownMenuGroupLabelProps = DropdownMenuGroupLabelProps & { class?: string; }; export const DropdownMenuGroupLabel = ( props: PolymorphicProps>, ) => { const [local, rest] = splitProps(props as dropdownMenuGroupLabelProps, [ "class", ]); return ( ); }; type dropdownMenuItemLabelProps = DropdownMenuItemLabelProps & { class?: string; }; export const DropdownMenuItemLabel = ( props: PolymorphicProps>, ) => { const [local, rest] = splitProps(props as dropdownMenuItemLabelProps, [ "class", ]); return ( ); }; type dropdownMenuSeparatorProps = DropdownMenuSeparatorProps & { class?: string; }; export const DropdownMenuSeparator = ( props: PolymorphicProps>, ) => { const [local, rest] = splitProps(props as dropdownMenuSeparatorProps, [ "class", ]); return ( ); }; export const DropdownMenuShortcut = (props: ComponentProps<"span">) => { const [local, rest] = splitProps(props, ["class"]); return ( ); }; type dropdownMenuSubTriggerProps = ParentProps< DropdownMenuSubTriggerProps & { class?: string; } >; export const DropdownMenuSubTrigger = ( props: PolymorphicProps>, ) => { const [local, rest] = splitProps(props as dropdownMenuSubTriggerProps, [ "class", "children", ]); return ( {local.children} Arrow ); }; type dropdownMenuSubContentProps = DropdownMenuSubTriggerProps & { class?: string; }; export const DropdownMenuSubContent = ( props: PolymorphicProps>, ) => { const [local, rest] = splitProps(props as dropdownMenuSubContentProps, [ "class", ]); return ( ); }; type dropdownMenuCheckboxItemProps = ParentProps< DropdownMenuCheckboxItemProps & { class?: string; } >; export const DropdownMenuCheckboxItem = ( props: PolymorphicProps>, ) => { const [local, rest] = splitProps(props as dropdownMenuCheckboxItemProps, [ "class", "children", ]); return ( Checkbox {props.children} ); }; type dropdownMenuRadioItemProps = ParentProps< DropdownMenuRadioItemProps & { class?: string; } >; export const DropdownMenuRadioItem = ( props: PolymorphicProps>, ) => { const [local, rest] = splitProps(props as dropdownMenuRadioItemProps, [ "class", "children", ]); return ( Radio {props.children} ); };