{"version":3,"file":"index.cjs","sources":["../../../../src/components/GenericMenu/GenericMenu.tsx"],"sourcesContent":["import { ComponentPropsWithRef, ElementType, ReactNode, forwardRef } from 'react';\nimport { cn, cva } from '@/lib/cva';\nimport styles from './GenericMenu.module.css';\n\nconst panelVariants = cva(styles['generic-menu-panel'], {\n  variants: {\n    type: {\n      popover: styles['generic-menu-panel_type_popover'],\n      'dropdown-menu': styles['generic-menu-panel_type_dropdown-menu'],\n      'context-menu': styles['generic-menu-panel_type_context-menu'],\n    },\n    showArrow: {\n      true: styles['generic-menu-panel_show-arrow'],\n      false: '',\n    },\n  },\n  defaultVariants: {\n    showArrow: false,\n  },\n});\n\ntype GenericMenuPanelOwnProps = {\n  type: 'popover' | 'dropdown-menu' | 'context-menu';\n  showArrow?: boolean;\n};\n\ntype GenericMenuPanelComponent = <T extends ElementType = 'div'>(\n  props: Omit<ComponentPropsWithRef<T>, keyof GenericMenuPanelOwnProps | 'as'> &\n    GenericMenuPanelOwnProps & { as?: T }\n) => ReactNode;\n\nconst _GenericMenuPanel = <T extends ElementType = 'div'>(\n  {\n    as,\n    type,\n    showArrow,\n    className,\n    ...props\n  }: Omit<ComponentPropsWithRef<T>, keyof GenericMenuPanelOwnProps | 'as'> &\n    GenericMenuPanelOwnProps & { as?: T },\n  ref: ComponentPropsWithRef<T>['ref']\n) => {\n  const Component = as ?? 'div';\n  return (\n    <Component\n      ref={ref}\n      {...props}\n      className={cn(panelVariants({ type, showArrow }), className)}\n    />\n  );\n};\n\nexport const GenericMenuPanel: GenericMenuPanelComponent = forwardRef(_GenericMenuPanel);\n\nconst popoverPanelVariants = cva(styles['generic-popover-menu-panel'], {\n  variants: {\n    type: {\n      popover: styles['generic-popover-menu-panel_type_popover'],\n      'hover-card': styles['generic-popover-menu-panel_type_hover-card'],\n    },\n    showArrow: {\n      true: styles['generic-popover-menu-panel_show-arrow'],\n      false: '',\n    },\n  },\n  defaultVariants: {\n    showArrow: false,\n  },\n});\n\ntype GenericPopoverMenuPanelOwnProps = {\n  type: 'popover' | 'hover-card';\n  showArrow?: boolean;\n};\n\ntype GenericPopoverMenuPanelComponent = <T extends ElementType = 'div'>(\n  props: Omit<ComponentPropsWithRef<T>, keyof GenericPopoverMenuPanelOwnProps | 'as'> &\n    GenericPopoverMenuPanelOwnProps & { as?: T }\n) => ReactNode;\n\nconst _GenericPopoverMenuPanel = <T extends ElementType = 'div'>(\n  {\n    as,\n    type,\n    showArrow,\n    className,\n    ...props\n  }: Omit<ComponentPropsWithRef<T>, keyof GenericPopoverMenuPanelOwnProps | 'as'> &\n    GenericPopoverMenuPanelOwnProps & { as?: T },\n  ref: ComponentPropsWithRef<T>['ref']\n) => {\n  const Component = as ?? 'div';\n  return (\n    <Component\n      ref={ref}\n      {...props}\n      className={cn(popoverPanelVariants({ type, showArrow }), className)}\n    />\n  );\n};\n\nexport const GenericPopoverMenuPanel: GenericPopoverMenuPanelComponent = forwardRef(\n  _GenericPopoverMenuPanel\n);\n\ntype ArrowComponent = <T extends ElementType = 'svg'>(\n  props: Omit<ComponentPropsWithRef<T>, 'as'> & { as?: T }\n) => ReactNode;\n\nconst _Arrow = <T extends ElementType = 'svg'>(\n  { as, className, ...props }: Omit<ComponentPropsWithRef<T>, 'as'> & { as?: T },\n  ref: ComponentPropsWithRef<T>['ref']\n) => {\n  const Component = as ?? 'svg';\n  return (\n    <Component\n      ref={ref}\n      {...props}\n      className={cn(styles.arrow, className)}\n    />\n  );\n};\n\nexport const Arrow: ArrowComponent = forwardRef(_Arrow);\n\nconst itemVariants = cva(styles['generic-menu-item'], {\n  variants: {\n    type: {\n      default: styles['generic-menu-item_type_default'],\n      danger: styles['generic-menu-item_type_danger'],\n    },\n  },\n  defaultVariants: {\n    type: 'default',\n  },\n});\n\ntype GenericMenuItemOwnProps = {\n  type?: 'default' | 'danger';\n};\n\ntype GenericMenuItemComponent = <T extends ElementType = 'div'>(\n  props: Omit<ComponentPropsWithRef<T>, keyof GenericMenuItemOwnProps | 'as'> &\n    GenericMenuItemOwnProps & { as?: T }\n) => ReactNode;\n\nconst _GenericMenuItem = <T extends ElementType = 'div'>(\n  {\n    as,\n    type = 'default',\n    className,\n    ...props\n  }: Omit<ComponentPropsWithRef<T>, keyof GenericMenuItemOwnProps | 'as'> &\n    GenericMenuItemOwnProps & { as?: T },\n  ref: ComponentPropsWithRef<T>['ref']\n) => {\n  const Component = as ?? 'div';\n  return (\n    <Component\n      ref={ref}\n      {...props}\n      className={cn(itemVariants({ type }), className)}\n    />\n  );\n};\n\nexport const GenericMenuItem: GenericMenuItemComponent = forwardRef(_GenericMenuItem);\n"],"names":["cva","styles","jsx","cn","forwardRef"],"mappings":"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"}