{"version":3,"file":"index.cjs","sources":["../../../../src/components/SidebarNavigationItem/SidebarNavigationItem.tsx"],"sourcesContent":["import {\n  ComponentProps,\n  ComponentPropsWithRef,\n  ElementType,\n  ReactNode,\n  forwardRef,\n} from 'react';\nimport { cn, cva } from '@/lib/cva';\nimport { IconWrapper } from '@/components/Collapsible/IconWrapper';\nimport { SidebarNavigationItemProps } from './SidebarNavigationItem.types';\nimport styles from './SidebarNavigationItem.module.css';\n\nconst wrapperVariants = cva(styles.wrapper, {\n  variants: {\n    itemType: {\n      item: styles.wrapper_itemtype_item,\n      subItem: styles['wrapper_itemtype_sub-item'],\n    },\n    // The colour set depends on BOTH the sidebar type and the item depth, so\n    // it is applied through the compoundVariants below rather than here.\n    type: { main: '', sqlSidebar: '' },\n    collapsible: { true: styles.wrapper_collapsible_true, false: '' },\n  },\n  compoundVariants: [\n    { type: 'main', itemType: 'item', class: styles['wrapper_color_main-item'] },\n    { type: 'main', itemType: 'subItem', class: styles['wrapper_color_main-sub-item'] },\n    {\n      type: 'sqlSidebar',\n      itemType: 'item',\n      class: styles['wrapper_color_sql-sidebar-item'],\n    },\n    {\n      type: 'sqlSidebar',\n      itemType: 'subItem',\n      class: styles['wrapper_color_sql-sidebar-sub-item'],\n    },\n  ],\n  defaultVariants: { itemType: 'item', type: 'main', collapsible: false },\n});\n\n// Polymorphic wrapper: SidebarCollapsibleItem renders it `as={Collapsible.Header}`.\n// Same shape as the Container polymorphic component (src/components/Container).\nexport interface SidebarItemWrapperProps<T extends ElementType = 'div'> {\n  as?: T;\n  $collapsible?: boolean;\n  $level?: number;\n  $type?: 'main' | 'sqlSidebar';\n}\n\ntype SidebarItemWrapperComponent = <T extends ElementType = 'div'>(\n  props: Omit<ComponentProps<T>, keyof SidebarItemWrapperProps<T>> &\n    SidebarItemWrapperProps<T>\n) => ReactNode;\n\nconst _SidebarItemWrapper = <T extends ElementType = 'div'>(\n  {\n    as,\n    $collapsible = false,\n    $level = 0,\n    $type = 'main',\n    className,\n    ...props\n  }: Omit<ComponentProps<T>, keyof SidebarItemWrapperProps<T>> &\n    SidebarItemWrapperProps<T>,\n  ref: ComponentPropsWithRef<T>['ref']\n) => {\n  const Component = as ?? 'div';\n  return (\n    <Component\n      ref={ref}\n      {...props}\n      className={cn(\n        wrapperVariants({\n          itemType: $level === 0 ? 'item' : 'subItem',\n          type: $type,\n          collapsible: $collapsible,\n        }),\n        className\n      )}\n    />\n  );\n};\n\nexport const SidebarItemWrapper: SidebarItemWrapperComponent =\n  forwardRef(_SidebarItemWrapper);\n\nconst SidebarNavigationItem = forwardRef<HTMLDivElement, SidebarNavigationItemProps>(\n  (\n    { label, level = 0, icon, selected, iconDir, disabled, type = 'main', ...props },\n    ref\n  ) => {\n    return (\n      <SidebarItemWrapper\n        $level={level}\n        data-selected={selected}\n        $type={type}\n        ref={ref}\n        aria-disabled={disabled}\n        {...props}\n      >\n        <IconWrapper\n          icon={icon}\n          iconDir={iconDir}\n        >\n          {label}\n        </IconWrapper>\n      </SidebarItemWrapper>\n    );\n  }\n);\n\nexport { SidebarNavigationItem };\n"],"names":["cva","styles","jsx","cn","forwardRef","IconWrapper"],"mappings":";;;;;;;;;;;AAYA,MAAM,eAAA,GAAkBA,0BAAA,CAAIC,oCAAA,CAAO,OAAA,EAAS;AAAA,EAC1C,QAAA,EAAU;AAAA,IACR,QAAA,EAAU;AAAA,MACR,MAAMA,oCAAA,CAAO,qBAAA;AAAA,MACb,OAAA,EAASA,qCAAO,2BAA2B;AAAA,KAC7C;AAAA;AAAA;AAAA,IAGA,IAAA,EAAM,EAAE,IAAA,EAAM,EAAA,EAAI,YAAY,EAAA,EAAG;AAAA,IACjC,aAAa,EAAE,IAAA,EAAMA,oCAAA,CAAO,wBAAA,EAA0B,OAAO,EAAA;AAAG,GAClE;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,EAAE,MAAM,MAAA,EAAQ,QAAA,EAAU,QAAQ,KAAA,EAAOA,oCAAA,CAAO,yBAAyB,CAAA,EAAE;AAAA,IAC3E,EAAE,MAAM,MAAA,EAAQ,QAAA,EAAU,WAAW,KAAA,EAAOA,oCAAA,CAAO,6BAA6B,CAAA,EAAE;AAAA,IAClF;AAAA,MACE,IAAA,EAAM,YAAA;AAAA,MACN,QAAA,EAAU,MAAA;AAAA,MACV,KAAA,EAAOA,qCAAO,gCAAgC;AAAA,KAChD;AAAA,IACA;AAAA,MACE,IAAA,EAAM,YAAA;AAAA,MACN,QAAA,EAAU,SAAA;AAAA,MACV,KAAA,EAAOA,qCAAO,oCAAoC;AAAA;AACpD,GACF;AAAA,EACA,iBAAiB,EAAE,QAAA,EAAU,QAAQ,IAAA,EAAM,MAAA,EAAQ,aAAa,KAAA;AAClE,CAAC,CAAA;AAgBD,MAAM,sBAAsB,CAC1B;AAAA,EACE,EAAA;AAAA,EACA,YAAA,GAAe,KAAA;AAAA,EACf,MAAA,GAAS,CAAA;AAAA,EACT,KAAA,GAAQ,MAAA;AAAA,EACR,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAEA,GAAA,KACG;AACH,EAAA,MAAM,YAAY,EAAA,IAAM,KAAA;AACxB,EAAA,uBACEC,cAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACC,GAAG,KAAA;AAAA,MACJ,SAAA,EAAWC,MAAA;AAAA,QACT,eAAA,CAAgB;AAAA,UACd,QAAA,EAAU,MAAA,KAAW,CAAA,GAAI,MAAA,GAAS,SAAA;AAAA,UAClC,IAAA,EAAM,KAAA;AAAA,UACN,WAAA,EAAa;AAAA,SACd,CAAA;AAAA,QACD;AAAA;AACF;AAAA,GACF;AAEJ,CAAA;AAEO,MAAM,kBAAA,GACXC,iBAAW,mBAAmB;AAEhC,MAAM,qBAAA,GAAwBA,gBAAA;AAAA,EAC5B,CACE,EAAE,KAAA,EAAO,KAAA,GAAQ,GAAG,IAAA,EAAM,QAAA,EAAU,OAAA,EAAS,QAAA,EAAU,IAAA,GAAO,MAAA,EAAQ,GAAG,KAAA,IACzE,GAAA,KACG;AACH,IAAA,uBACEF,cAAA;AAAA,MAAC,kBAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,KAAA;AAAA,QACR,eAAA,EAAe,QAAA;AAAA,QACf,KAAA,EAAO,IAAA;AAAA,QACP,GAAA;AAAA,QACA,eAAA,EAAe,QAAA;AAAA,QACd,GAAG,KAAA;AAAA,QAEJ,QAAA,kBAAAA,cAAA;AAAA,UAACG,uBAAA;AAAA,UAAA;AAAA,YACC,IAAA;AAAA,YACA,OAAA;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,KACF;AAAA,EAEJ;AACF;;;"}