"use client"; import * as DropdownMenu from "@radix-ui/react-dropdown-menu"; import { theme } from "tailwind.config"; import { NestedCardThemeProvider } from "./ThemeManager/ThemeProvider"; import { PopoverArrow } from "./Icons/PopoverArrow"; import { CheckboxChecked } from "./Icons/CheckboxChecked"; import { CheckboxEmpty } from "./Icons/CheckboxEmpty"; import { CheckboxIndeterminate } from "./Icons/CheckboxIndeterminate"; import { PopoverOpenContext } from "./Popover/PopoverContext"; import { useState } from "react"; import { useCardBorderHidden } from "components/Pages/useCardBorderHidden"; export const Menu = (props: { open?: boolean; trigger: React.ReactNode; children: React.ReactNode; align?: "start" | "end" | "center" | undefined; alignOffset?: number; side?: "top" | "bottom" | "right" | "left" | undefined; background?: string; border?: string; className?: string; onOpenChange?: (o: boolean) => void; asChild?: boolean; }) => { let [open, setOpen] = useState(props.open || false); let cardBorderHidden = useCardBorderHidden(); return ( { setOpen(o); props.onOpenChange?.(o); }} open={props.open} > {props.trigger} {props.children} ); }; export const RadioMenuGroup = (props: { value: string; onValueChange?: (value: string) => void; children: React.ReactNode; }) => { return ( {props.children} ); }; export const RadioMenuItem = (props: { value: string; children?: React.ReactNode; className?: string; onSelect?: (e: Event) => void; selected?: boolean; }) => { return ( {props.children} ); }; export const CheckboxMenuItem = (props: { children?: React.ReactNode; className?: string; onSelect?: (e: Event) => void; checked?: boolean; // Renders as a Checkbox — a box in the margin and plain type — rather than // the filled pill, for dense multi-select lists like filters. compact?: boolean; // A parent whose children are only partly checked. Selecting it reports // unchecked, so callers select the whole group. indeterminate?: boolean; }) => { let indeterminate = !props.checked && !!props.indeterminate; let marked = props.checked || indeterminate; let iconClassName = `shrink-0 mt-1 ${marked ? "text-accent-contrast" : "text-tertiary"}`; return ( {props.compact && (indeterminate ? ( ) : props.checked ? ( ) : ( ))} {props.children} ); }; export const MenuSeparator = () => { return ( ); }; export const MenuItem = (props: { children?: React.ReactNode; className?: string; onSelect: (e: Event) => void; id?: string; }) => { return ( { props.onSelect(event); }} className={` menuItem ${props.className} `} > {props.children} ); };