{"version":3,"file":"Link.cjs","sources":["../../../../src/components/navigation/link/Link.tsx"],"sourcesContent":["import { memo, useCallback } from 'react'\r\nimport type * as React from 'react'\r\n\r\nimport { BOX_STYLES } from '@components/layout/box/styles/Box.css.ts'\r\nimport { LINK_STYLES } from '@components/navigation/link/styles/Link.css.ts'\r\nimport type { LinkProps } from '@components/navigation/link/types/Link.props.ts'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { Typography } from '@components/foundation/typography'\r\nimport { cn } from '@utils/cn.ts'\r\n\r\n/**\r\n * Styled `<a>` element with optional start/end icons and typography tokens.\r\n * Prevents default navigation when `onClick` is provided, enabling SPA\r\n * routing adapters. Requires a visible `label` or icon-accessible content.\r\n */\r\nconst Link: React.FC<LinkProps> = memo(({\r\n    href = '#',\r\n    className,\r\n    onClick,\r\n    ref,\r\n    label,\r\n    color,\r\n    startIcon,\r\n    endIcon,\r\n    fontSize = 'md',\r\n    fontWeight = 'normal',\r\n    iconSize = 'md',\r\n    margin,\r\n    marginTop,\r\n    marginRight,\r\n    marginBottom,\r\n    marginLeft,\r\n    padding,\r\n    width,\r\n    alignSelf,\r\n    style,\r\n    ...props\r\n}) => {\r\n    const layoutClassName = (\r\n        margin !== undefined ||\r\n        marginTop !== undefined ||\r\n        marginRight !== undefined ||\r\n        marginBottom !== undefined ||\r\n        marginLeft !== undefined ||\r\n        padding !== undefined\r\n    )\r\n        ? BOX_STYLES.recipe({ margin, marginTop, marginRight, marginBottom, marginLeft, padding })\r\n        : undefined\r\n\r\n    const handleClick = useCallback(\r\n        (event: React.MouseEvent<HTMLAnchorElement>) => {\r\n            if (onClick) {\r\n                event.preventDefault()\r\n                onClick(event)\r\n            }\r\n        },\r\n        [onClick],\r\n    )\r\n\r\n    return (\r\n        <a\r\n            ref={ref}\r\n            href={href}\r\n            className={cn(\r\n                LINK_STYLES.base,\r\n                LINK_STYLES.color({ color }),\r\n                layoutClassName,\r\n                className,\r\n            )}\r\n            style={{ width, alignSelf, ...style }}\r\n            onClick={handleClick}\r\n            {...props}\r\n        >\r\n            {startIcon && (\r\n                <Icon\r\n                    icon={startIcon}\r\n                    size={iconSize}\r\n                />\r\n            )}\r\n            {label && (\r\n                <Typography\r\n                    as={'span'}\r\n                    variant={'span'}\r\n                    fontSize={fontSize}\r\n                    fontWeight={fontWeight}\r\n                >\r\n                    {label}\r\n                </Typography>\r\n            )}\r\n            {endIcon && (\r\n                <Icon\r\n                    icon={endIcon}\r\n                    size={iconSize}\r\n                />\r\n            )}\r\n        </a>\r\n    )\r\n})\r\n\r\nLink.displayName = 'Link'\r\n\r\nexport default Link\r\n"],"names":["Link","memo","href","className","onClick","ref","label","color","startIcon","endIcon","fontSize","fontWeight","iconSize","margin","marginTop","marginRight","marginBottom","marginLeft","padding","width","alignSelf","style","props","layoutClassName","BOX_STYLES","handleClick","useCallback","event","jsxs","cn","LINK_STYLES","jsx","Icon","Typography"],"mappings":"kaAeMA,EAA4BC,EAAAA,KAAK,CAAC,CACpC,KAAAC,EAAO,IACP,UAAAC,EACA,QAAAC,EACA,IAAAC,EACA,MAAAC,EACA,MAAAC,EACA,UAAAC,EACA,QAAAC,EACA,SAAAC,EAAW,KACX,WAAAC,EAAa,SACb,SAAAC,EAAW,KACX,OAAAC,EACA,UAAAC,EACA,YAAAC,EACA,aAAAC,EACA,WAAAC,EACA,QAAAC,EACA,MAAAC,EACA,UAAAC,EACA,MAAAC,EACA,GAAGC,CACP,IAAM,CACF,MAAMC,EACFV,IAAW,QACXC,IAAc,QACdC,IAAgB,QAChBC,IAAiB,QACjBC,IAAe,QACfC,IAAY,OAEVM,EAAAA,WAAW,OAAO,CAAE,OAAAX,EAAQ,UAAAC,EAAW,YAAAC,EAAa,aAAAC,EAAc,WAAAC,EAAY,QAAAC,CAAA,CAAS,EACvF,OAEAO,EAAcC,EAAAA,YACfC,GAA+C,CACxCvB,IACAuB,EAAM,eAAA,EACNvB,EAAQuB,CAAK,EAErB,EACA,CAACvB,CAAO,CAAA,EAGZ,OACIwB,EAAAA,KAAC,IAAA,CACG,IAAAvB,EACA,KAAAH,EACA,UAAW2B,EAAAA,GACPC,EAAAA,YAAY,KACZA,cAAY,MAAM,CAAE,MAAAvB,EAAO,EAC3BgB,EACApB,CAAA,EAEJ,MAAO,CAAE,MAAAgB,EAAO,UAAAC,EAAW,GAAGC,CAAA,EAC9B,QAASI,EACR,GAAGH,EAEH,SAAA,CAAAd,GACGuB,EAAAA,IAACC,EAAA,CACG,KAAMxB,EACN,KAAMI,CAAA,CAAA,EAGbN,GACGyB,EAAAA,IAACE,EAAA,CACG,GAAI,OACJ,QAAS,OACT,SAAAvB,EACA,WAAAC,EAEC,SAAAL,CAAA,CAAA,EAGRG,GACGsB,EAAAA,IAACC,EAAA,CACG,KAAMvB,EACN,KAAMG,CAAA,CAAA,CACV,CAAA,CAAA,CAIhB,CAAC,EAEDZ,EAAK,YAAc"}