{"version":3,"file":"index.cjs","sources":["../../../../src/components/Link/Link.tsx"],"sourcesContent":["import {\n  ComponentProps,\n  ComponentPropsWithRef,\n  ElementType,\n  ReactNode,\n  forwardRef,\n} from 'react';\nimport { Icon } from '@/components/Icon';\nimport { cn, cva } from '@/lib/cva';\n\nimport type { LinkProps } from './Link.types';\n\nimport styles from './Link.module.css';\n\nconst linkVariants = cva(styles.link, {\n  variants: {\n    size: {\n      xs: styles['link_size_xs'],\n      sm: styles['link_size_sm'],\n      md: styles['link_size_md'],\n      lg: styles['link_size_lg'],\n    },\n    weight: {\n      normal: styles['link_weight_normal'],\n      medium: styles['link_weight_medium'],\n      semibold: styles['link_weight_semibold'],\n      bold: styles['link_weight_bold'],\n      mono: styles['link_weight_mono'],\n    },\n  },\n  defaultVariants: {\n    size: 'md',\n    weight: 'normal',\n  },\n});\n\nconst iconVariants = cva(styles['link__icon'], {\n  variants: {\n    size: {\n      xs: styles['link__icon_size_xs'],\n      sm: styles['link__icon_size_sm'],\n      md: styles['link__icon_size_md'],\n      lg: styles['link__icon_size_lg'],\n    },\n  },\n  defaultVariants: {\n    size: 'md',\n  },\n});\n\ntype LinkPolymorphicComponent = <T extends ElementType = 'a'>(\n  props: Omit<ComponentProps<T>, keyof LinkProps<T>> & LinkProps<T>\n) => ReactNode;\n\nconst _Link = <T extends ElementType = 'a'>(\n  {\n    size = 'md',\n    weight = 'normal',\n    onClick,\n    icon,\n    children,\n    component,\n    className,\n    ...props\n  }: Omit<ComponentProps<T>, keyof LinkProps<T>> & LinkProps<T> & { className?: string },\n  ref: ComponentPropsWithRef<T>['ref']\n) => {\n  const Component = component ?? 'a';\n  return (\n    <Component\n      ref={ref}\n      onClick={onClick}\n      {...props}\n      className={cn(linkVariants({ size, weight }), className)}\n    >\n      {children}\n      {icon && (\n        <span>\n          <Icon\n            name={icon}\n            className={cn(iconVariants({ size }))}\n            data-testid={icon}\n          />\n        </span>\n      )}\n    </Component>\n  );\n};\nexport const Link: LinkPolymorphicComponent = forwardRef(_Link);\n"],"names":["cva","styles","jsxs","cn","jsx","Icon","forwardRef"],"mappings":";;;;;;;;;;;AAcA,MAAM,YAAA,GAAeA,0BAAA,CAAIC,mBAAA,CAAO,IAAA,EAAM;AAAA,EACpC,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAIA,oBAAO,cAAc,CAAA;AAAA,MACzB,EAAA,EAAIA,oBAAO,cAAc,CAAA;AAAA,MACzB,EAAA,EAAIA,oBAAO,cAAc,CAAA;AAAA,MACzB,EAAA,EAAIA,oBAAO,cAAc;AAAA,KAC3B;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,MAAA,EAAQA,oBAAO,oBAAoB,CAAA;AAAA,MACnC,MAAA,EAAQA,oBAAO,oBAAoB,CAAA;AAAA,MACnC,QAAA,EAAUA,oBAAO,sBAAsB,CAAA;AAAA,MACvC,IAAA,EAAMA,oBAAO,kBAAkB,CAAA;AAAA,MAC/B,IAAA,EAAMA,oBAAO,kBAAkB;AAAA;AACjC,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,IAAA;AAAA,IACN,MAAA,EAAQ;AAAA;AAEZ,CAAC,CAAA;AAED,MAAM,YAAA,GAAeD,0BAAA,CAAIC,mBAAA,CAAO,YAAY,CAAA,EAAG;AAAA,EAC7C,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAIA,oBAAO,oBAAoB,CAAA;AAAA,MAC/B,EAAA,EAAIA,oBAAO,oBAAoB,CAAA;AAAA,MAC/B,EAAA,EAAIA,oBAAO,oBAAoB,CAAA;AAAA,MAC/B,EAAA,EAAIA,oBAAO,oBAAoB;AAAA;AACjC,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC,CAAA;AAMD,MAAM,QAAQ,CACZ;AAAA,EACE,IAAA,GAAO,IAAA;AAAA,EACP,MAAA,GAAS,QAAA;AAAA,EACT,OAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,KACG;AACH,EAAA,MAAM,YAAY,SAAA,IAAa,GAAA;AAC/B,EAAA,uBACEC,eAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,OAAA;AAAA,MACC,GAAG,KAAA;AAAA,MACJ,SAAA,EAAWC,OAAG,YAAA,CAAa,EAAE,MAAM,MAAA,EAAQ,GAAG,SAAS,CAAA;AAAA,MAEtD,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA,IAAA,mCACE,MAAA,EAAA,EACC,QAAA,kBAAAC,cAAA;AAAA,UAACC,SAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAM,IAAA;AAAA,YACN,WAAWF,MAAA,CAAG,YAAA,CAAa,EAAE,IAAA,EAAM,CAAC,CAAA;AAAA,YACpC,aAAA,EAAa;AAAA;AAAA,SACf,EACF;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAA;AACO,MAAM,IAAA,GAAiCG,iBAAW,KAAK;;"}