{"version":3,"file":"SideMenuItem.cjs","sources":["../../../src/components/SideMenu/SideMenuItem.tsx"],"sourcesContent":["import {\n  type ComponentPropsWithoutRef,\n  type ElementType,\n  type PropsWithChildren,\n  type ReactNode,\n  useMemo,\n} from 'react'\nimport { tv } from 'tailwind-variants'\n\nimport { Text } from '../Text'\n\ntype AbstractProps<AsElement extends ElementType> = PropsWithChildren<{\n  elementAs?: AsElement\n  current?: boolean\n  prefix?: ReactNode\n  suffix?: ReactNode\n}>\n\ntype Props<AsElement extends ElementType = 'a'> = AbstractProps<AsElement> &\n  Omit<ComponentPropsWithoutRef<AsElement>, keyof AbstractProps<AsElement>>\n\nconst classNameGenerator = tv({\n  slots: {\n    wrapper: [\n      'smarthr-ui-SideMenu-item',\n      '[&>a]:shr-block [&>a]:shr-no-underline',\n      '[&>a:focus-visible]:shr-focus-indicator [&>button:focus-visible]:shr-focus-indicator',\n    ],\n    content: [\n      'shr-flex shr-items-baseline shr-gap-0.5 shr-p-0.75',\n      'aria-current-page:shr-bg-grey-9 aria-current-page:shr-font-bold',\n      'hover:shr-bg-head-darken',\n    ],\n    // 視覚調整のためのtranslate 参考: https://github.com/kufu/smarthr-ui/blob/01d127a4888f5698b2bf17be855ce1e985b575ea/packages/smarthr-ui/src/components/Icon/generateIcon.tsx#L73C81-L73C106\n    iconWrapper: ['shr-translate-y-[0.125em] shr-text-grey'],\n  },\n  variants: {\n    current: {\n      true: {\n        content:\n          'shr-border-0 shr-border-s-4 shr-border-solid shr-border-[theme(colors.main)] shr-bg-over-background shr-ps-1.25',\n      },\n      false: {\n        content: 'shr-ps-1.5',\n      },\n    },\n  },\n})\n\nexport const SideMenuItem = <AsElement extends ElementType = 'a'>({\n  elementAs,\n  current,\n  prefix,\n  suffix,\n  href,\n  children,\n  className,\n  ...rest\n}: Props<AsElement>) => {\n  const Component = elementAs ?? 'a'\n  const ariaCurrent = useMemo(() => {\n    if (!current || !href) {\n      return undefined\n    }\n\n    return href[0] === '#' ? true : 'page'\n  }, [current, href])\n\n  const classNames = useMemo(() => {\n    const { wrapper, content, iconWrapper } = classNameGenerator()\n\n    return {\n      wrapper: wrapper({ current, className }),\n      content: content({ current }),\n      iconWrapper: iconWrapper(),\n    }\n  }, [current, className])\n\n  return (\n    <li className={classNames.wrapper}>\n      <Component {...rest} href={href} aria-current={ariaCurrent}>\n        <Text size=\"M\" leading=\"TIGHT\" className={classNames.content}>\n          {prefix && <span className={classNames.iconWrapper}>{prefix}</span>}\n          <Text weight={current ? 'bold' : undefined}>{children}</Text>\n          {suffix && <span className={classNames.iconWrapper}>{suffix}</span>}\n        </Text>\n      </Component>\n    </li>\n  )\n}\n"],"names":["tv","useMemo","_jsx","_jsxs","Text"],"mappings":";;;;;;;AAqBA,MAAM,kBAAkB,GAAGA,QAAE,CAAC;AAC5B,IAAA,KAAK,EAAE;AACL,QAAA,OAAO,EAAE;YACP,0BAA0B;YAC1B,wCAAwC;YACxC,sFAAsF;AACvF,SAAA;AACD,QAAA,OAAO,EAAE;YACP,oDAAoD;YACpD,iEAAiE;YACjE,0BAA0B;AAC3B,SAAA;;QAED,WAAW,EAAE,CAAC,yCAAyC,CAAC;AACzD,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE;AACJ,gBAAA,OAAO,EACL,iHAAiH;AACpH,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,OAAO,EAAE,YAAY;AACtB,aAAA;AACF,SAAA;AACF,KAAA;AACF,CAAA,CAAC;AAEK,MAAM,YAAY,GAAG,CAAsC,EAChE,SAAS,EACT,OAAO,EACP,MAAM,EACN,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACU,KAAI;AACrB,IAAA,MAAM,SAAS,GAAG,SAAS,IAAI,GAAG;AAClC,IAAA,MAAM,WAAW,GAAGC,aAAO,CAAC,MAAK;AAC/B,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE;AACrB,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,IAAI,GAAG,MAAM;AACxC,IAAA,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAEnB,IAAA,MAAM,UAAU,GAAGA,aAAO,CAAC,MAAK;QAC9B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,kBAAkB,EAAE;QAE9D,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AACxC,YAAA,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;YAC7B,WAAW,EAAE,WAAW,EAAE;SAC3B;AACH,IAAA,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAExB,IAAA,QACEC,cAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAE,UAAU,CAAC,OAAO,EAAA,QAAA,EAC/BA,cAAA,CAAC,SAAS,OAAK,IAAI,EAAE,IAAI,EAAE,IAAI,kBAAgB,WAAW,EAAA,QAAA,EACxDC,eAAA,CAACC,yBAAI,IAAC,IAAI,EAAC,GAAG,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAE,UAAU,CAAC,OAAO,EAAA,QAAA,EAAA,CACzD,MAAM,IAAIF,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,UAAU,CAAC,WAAW,EAAA,QAAA,EAAG,MAAM,EAAA,CAAQ,EACnEA,cAAA,CAACE,yBAAI,EAAA,EAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAQ,EAC5D,MAAM,IAAIF,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,UAAU,CAAC,WAAW,YAAG,MAAM,EAAA,CAAQ,IAC9D,EAAA,CACG,EAAA,CACT;AAET;;;;"}