{"version":3,"file":"SideNav.cjs","sources":["../../../src/components/SideNav/SideNav.tsx"],"sourcesContent":["import {\n  type ComponentProps,\n  type ComponentPropsWithoutRef,\n  type FC,\n  type PropsWithChildren,\n  useMemo,\n} from 'react'\nimport { Children, cloneElement } from 'react'\nimport { type VariantProps, tv } from 'tailwind-variants'\n\nimport { SideNavItemButton, type SideNavSizeType } from './SideNavItemButton'\n\nexport type SideNavItemButtonProps = Omit<\n  ComponentProps<typeof SideNavItemButton>,\n  'size' | 'onClick'\n>\n\ntype AbstractProps = PropsWithChildren<{\n  /** 各アイテムのデータの配列\n   * @deprecated SideNavItemButton を使ってください\n   */\n  items?: SideNavItemButtonProps[]\n  /** 各アイテムの大きさ */\n  size?: SideNavSizeType\n  /** アイテムを押下したときに発火するコールバック関数 */\n  onClick?: (\n    e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement, MouseEvent>,\n    id: string,\n  ) => void\n  /** コンポーネントに適用するクラス名 */\n  className?: string\n}> &\n  VariantProps<typeof classNameGenerator>\ntype Props = AbstractProps & Omit<ComponentPropsWithoutRef<'ul'>, keyof AbstractProps>\n\nconst ROUNDED = {\n  t_l: '[&>.smarthr-ui-SideNav-item:first-child]:shr-rounded-tl-l',\n  t_r: '[&>.smarthr-ui-SideNav-item:first-child]:shr-rounded-tr-l',\n  b_l: '[&>.smarthr-ui-SideNav-item:last-child]:shr-rounded-bl-l',\n  b_r: '[&>.smarthr-ui-SideNav-item:last-child]:shr-rounded-br-l',\n}\nconst ROUNDED_ALL = ['shr-rounded-l', ROUNDED.t_l, ROUNDED.t_r, ROUNDED.b_l, ROUNDED.b_r]\n\nconst classNameGenerator = tv({\n  base: ['smarthr-ui-SideNav', 'shr-list-none shr-bg-column'],\n  variants: {\n    rounded: {\n      true: ROUNDED_ALL,\n      all: ROUNDED_ALL,\n      top: ['shr-rounded-t-l', ROUNDED.t_l, ROUNDED.t_r],\n      right: ['shr-rounded-r-l', ROUNDED.t_r, ROUNDED.b_r],\n      bottom: ['shr-rounded-b-l', ROUNDED.b_l, ROUNDED.b_r],\n      left: ['shr-rounded-l-l', ROUNDED.t_l, ROUNDED.b_l],\n    },\n  },\n  defaultVariants: {\n    rounded: false,\n  },\n})\n\nexport const SideNav: FC<Props> = ({\n  items,\n  size = 'M',\n  onClick,\n  className,\n  rounded,\n  children,\n  ...rest\n}) => {\n  const actualOnClick = useMemo(\n    () =>\n      onClick\n        ? (e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement, MouseEvent>) =>\n            onClick(\n              e,\n              ((e as React.MouseEvent<HTMLButtonElement, MouseEvent>).currentTarget.value ||\n                e.currentTarget.getAttribute('data-value')) as string,\n            )\n        : undefined,\n    [onClick],\n  )\n\n  const actualClassName = useMemo(\n    () => classNameGenerator({ rounded, className }),\n    [rounded, className],\n  )\n\n  return (\n    <ul {...rest} className={actualClassName}>\n      {items\n        ? items.map((item) => (\n            <SideNavItemButton\n              key={item.id}\n              id={item.id}\n              title={item.title}\n              prefix={item.prefix}\n              current={item.current}\n              size={size}\n              onClick={actualOnClick}\n            />\n          ))\n        : children &&\n          Children.map(children, (child) => {\n            if (\n              child &&\n              typeof child === 'object' &&\n              'type' in child &&\n              child.type === SideNavItemButton\n            ) {\n              return cloneElement(\n                child as React.ReactElement<ComponentProps<typeof SideNavItemButton>>,\n                {\n                  // 子コンポーネントに対して親コンポーネントから onClick size を一括で適用\n                  size,\n                  onClick: actualOnClick,\n                },\n              )\n            }\n\n            return child\n          })}\n    </ul>\n  )\n}\n"],"names":["tv","useMemo","_jsx","SideNavItemButton","Children","cloneElement"],"mappings":";;;;;;;AAmCA,MAAM,OAAO,GAAG;AACd,IAAA,GAAG,EAAE,2DAA2D;AAChE,IAAA,GAAG,EAAE,2DAA2D;AAChE,IAAA,GAAG,EAAE,0DAA0D;AAC/D,IAAA,GAAG,EAAE,0DAA0D;CAChE;AACD,MAAM,WAAW,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;AAEzF,MAAM,kBAAkB,GAAGA,QAAE,CAAC;AAC5B,IAAA,IAAI,EAAE,CAAC,oBAAoB,EAAE,6BAA6B,CAAC;AAC3D,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,GAAG,EAAE,WAAW;YAChB,GAAG,EAAE,CAAC,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;YAClD,KAAK,EAAE,CAAC,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;YACpD,MAAM,EAAE,CAAC,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;YACrD,IAAI,EAAE,CAAC,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;AACpD,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,KAAK;AACf,KAAA;AACF,CAAA,CAAC;AAEK,MAAM,OAAO,GAAc,CAAC,EACjC,KAAK,EACL,IAAI,GAAG,GAAG,EACV,OAAO,EACP,SAAS,EACT,OAAO,EACP,QAAQ,EACR,GAAG,IAAI,EACR,KAAI;AACH,IAAA,MAAM,aAAa,GAAGC,aAAO,CAC3B,MACE;AACE,UAAE,CAAC,CAAsE,KACrE,OAAO,CACL,CAAC,GACC,CAAqD,CAAC,aAAa,CAAC,KAAK;YACzE,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,YAAY,CAAC;AAElD,UAAE,SAAS,EACf,CAAC,OAAO,CAAC,CACV;IAED,MAAM,eAAe,GAAGA,aAAO,CAC7B,MAAM,kBAAkB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAChD,CAAC,OAAO,EAAE,SAAS,CAAC,CACrB;IAED,QACEC,0BAAQ,IAAI,EAAE,SAAS,EAAE,eAAe,YACrC;cACG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MACbA,eAACC,sDAAiB,EAAA,EAEhB,EAAE,EAAE,IAAI,CAAC,EAAE,EACX,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,aAAa,EAAA,EANjB,IAAI,CAAC,EAAE,CAOZ,CACH;AACH,cAAE,QAAQ;gBACRC,cAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,KAAI;AAC/B,oBAAA,IACE,KAAK;wBACL,OAAO,KAAK,KAAK,QAAQ;AACzB,wBAAA,MAAM,IAAI,KAAK;AACf,wBAAA,KAAK,CAAC,IAAI,KAAKD,sDAAiB,EAChC;wBACA,OAAOE,kBAAY,CACjB,KAAqE,EACrE;;4BAEE,IAAI;AACJ,4BAAA,OAAO,EAAE,aAAa;AACvB,yBAAA,CACF;oBACH;AAEA,oBAAA,OAAO,KAAK;gBACd,CAAC,CAAC,EAAA,CACH;AAET;;;;"}