{"version":3,"sources":["../../../../src/lib/elements/dropdown-menu.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n  Content as RadixContent,\n  Item as RadixItem,\n  CheckboxItem as RadixCheckboxItem,\n  RadioItem as RadixRadioItem,\n  type ContentProps as RadixContentProps,\n  type ItemProps as RadixItemProps,\n  type CheckboxItemProps as RadixCheckboxItemProps,\n  type RadioItemProps as RadixRadioItemProps,\n} from \"@radix-ui/themes/components/dropdown-menu\";\nimport cx from \"clsx\";\nimport { useElement } from \"../widgets-context.js\";\nimport { getDomProps, namespaceClassNames } from \"../utils.js\";\n\ninterface ContentProps extends Omit<RadixContentProps, \"variant\"> {}\n\nconst DropdownMenuContent = React.forwardRef<HTMLDivElement, ContentProps>(\n  function DropdownMenuContent({ className, ...props }, ref) {\n    const element = useElement(\"dropdown\");\n    return (\n      <RadixContent\n        ref={ref}\n        className={cx(namespaceClassNames(\"dropdown\"), className)}\n        {...props}\n        {...element}\n      />\n    );\n  },\n);\n\ninterface ItemProps extends Omit<RadixItemProps, \"variant\" | \"color\"> {\n  variant?: \"primary\" | \"destructive\";\n}\n\nconst MenuItem = React.forwardRef<HTMLDivElement, ItemProps>(function MenuItem(\n  { className, variant = \"primary\", ...props },\n  ref,\n) {\n  const element = useElement(`${variant}MenuItem`);\n  return (\n    <RadixItem\n      ref={ref}\n      {...getDomProps({\n        elementId: `${variant}MenuItem`,\n        className: cx(\n          className,\n          // TODO: Remove BEM-style selector once conventions are standardized\n          variant !== \"primary\" && `menu-item--${variant}`,\n        ),\n      })}\n      {...getItemRadixProps(variant)}\n      {...props}\n      {...element}\n    />\n  );\n});\n\ninterface CheckboxItemProps extends Omit<RadixCheckboxItemProps, \"variant\"> {\n  variant?: \"primary\";\n}\n\nconst CheckboxMenuItem = React.forwardRef<HTMLDivElement, CheckboxItemProps>(\n  function CheckboxMenuItem({ className, variant = \"primary\", ...props }, ref) {\n    const element = useElement(`${variant}MenuItem`);\n    return (\n      <RadixCheckboxItem\n        ref={ref}\n        className={cx(\n          className,\n          namespaceClassNames(\n            \"menu-item\",\n            // TODO: Remove BEM-style selector once conventions are standardized\n            variant !== \"primary\" && `menu-item--${variant}`,\n          ),\n        )}\n        {...getItemRadixProps(variant)}\n        {...props}\n        {...element}\n      />\n    );\n  },\n);\n\ninterface RadioItemProps extends Omit<RadixRadioItemProps, \"variant\"> {\n  variant?: \"primary\";\n}\n\nconst RadioMenuItem = React.forwardRef<HTMLDivElement, RadioItemProps>(\n  function RadioMenuItem({ className, variant = \"primary\", ...props }, ref) {\n    const element = useElement(`${variant}MenuItem`);\n    return (\n      <RadixRadioItem\n        ref={ref}\n        className={cx(\n          className,\n          namespaceClassNames(\n            \"menu-item\",\n            // TODO: Remove BEM-style selector once conventions are standardized\n            variant !== \"primary\" && `menu-item--${variant}`,\n          ),\n        )}\n        {...getItemRadixProps(variant)}\n        {...props}\n        {...element}\n      />\n    );\n  },\n);\n\nfunction getItemRadixProps(\n  variant: Exclude<ItemProps[\"variant\"], undefined>,\n): Pick<RadixItemProps, \"color\"> {\n  if (variant === \"primary\") {\n    return {};\n  }\n  if (variant === \"destructive\") {\n    return {\n      color: \"red\",\n    };\n  }\n  variant satisfies never;\n  return {};\n}\n\nexport {\n  DropdownMenuContent as Content,\n  MenuItem as Item,\n  CheckboxMenuItem as CheckboxItem,\n  RadioMenuItem as RadioItem,\n};\n\nexport type { ContentProps, ItemProps, CheckboxItemProps, RadioItemProps };\n\nexport {\n  Group,\n  Label,\n  RadioGroup,\n  Root,\n  Separator,\n  Sub,\n  SubContent,\n  SubTrigger,\n  Trigger,\n  TriggerIcon,\n} from \"@radix-ui/themes/components/dropdown-menu\";\nexport type {\n  GroupProps,\n  LabelProps,\n  RadioGroupProps,\n  RootProps,\n  SeparatorProps,\n  SubContentProps,\n  SubProps,\n  SubTriggerProps,\n  TriggerIconProps,\n  TriggerProps,\n} from \"@radix-ui/themes/components/dropdown-menu\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuBM;AArBN,YAAuB;AACvB,2BASO;AACP,kBAAe;AACf,6BAA2B;AAC3B,mBAAiD;AAyHjD,IAAAA,wBAWO;AAhIP,MAAM,sBAAsB,MAAM;AAAA,EAChC,SAASC,qBAAoB,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AACzD,UAAM,cAAU,mCAAW,UAAU;AACrC,WACE;AAAA,MAAC,qBAAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAW,YAAAC,aAAG,kCAAoB,UAAU,GAAG,SAAS;AAAA,QACvD,GAAG;AAAA,QACH,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAMA,MAAM,WAAW,MAAM,WAAsC,SAASC,UACpE,EAAE,WAAW,UAAU,WAAW,GAAG,MAAM,GAC3C,KACA;AACA,QAAM,cAAU,mCAAW,GAAG,OAAO,UAAU;AAC/C,SACE;AAAA,IAAC,qBAAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACC,OAAG,0BAAY;AAAA,QACd,WAAW,GAAG,OAAO;AAAA,QACrB,eAAW,YAAAF;AAAA,UACT;AAAA;AAAA,UAEA,YAAY,aAAa,cAAc,OAAO;AAAA,QAChD;AAAA,MACF,CAAC;AAAA,MACA,GAAG,kBAAkB,OAAO;AAAA,MAC5B,GAAG;AAAA,MACH,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAMD,MAAM,mBAAmB,MAAM;AAAA,EAC7B,SAASG,kBAAiB,EAAE,WAAW,UAAU,WAAW,GAAG,MAAM,GAAG,KAAK;AAC3E,UAAM,cAAU,mCAAW,GAAG,OAAO,UAAU;AAC/C,WACE;AAAA,MAAC,qBAAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAW,YAAAJ;AAAA,UACT;AAAA,cACA;AAAA,YACE;AAAA;AAAA,YAEA,YAAY,aAAa,cAAc,OAAO;AAAA,UAChD;AAAA,QACF;AAAA,QACC,GAAG,kBAAkB,OAAO;AAAA,QAC5B,GAAG;AAAA,QACH,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAMA,MAAM,gBAAgB,MAAM;AAAA,EAC1B,SAASK,eAAc,EAAE,WAAW,UAAU,WAAW,GAAG,MAAM,GAAG,KAAK;AACxE,UAAM,cAAU,mCAAW,GAAG,OAAO,UAAU;AAC/C,WACE;AAAA,MAAC,qBAAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,eAAW,YAAAN;AAAA,UACT;AAAA,cACA;AAAA,YACE;AAAA;AAAA,YAEA,YAAY,aAAa,cAAc,OAAO;AAAA,UAChD;AAAA,QACF;AAAA,QACC,GAAG,kBAAkB,OAAO;AAAA,QAC5B,GAAG;AAAA,QACH,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAEA,SAAS,kBACP,SAC+B;AAC/B,MAAI,YAAY,WAAW;AACzB,WAAO,CAAC;AAAA,EACV;AACA,MAAI,YAAY,eAAe;AAC7B,WAAO;AAAA,MACL,OAAO;AAAA,IACT;AAAA,EACF;AACA;AACA,SAAO,CAAC;AACV;","names":["import_dropdown_menu","DropdownMenuContent","RadixContent","cx","MenuItem","RadixItem","CheckboxMenuItem","RadixCheckboxItem","RadioMenuItem","RadixRadioItem"]}