{"version":3,"file":"Icon.cjs","sources":["../../../../src/components/foundation/icon/Icon.tsx"],"sourcesContent":["import { Box } from '@components/layout/box'\r\nimport { ICON_STYLES } from '@components/foundation/icon/styles/Icon.css.ts'\r\nimport type { IconProps } from '@components/foundation/icon/types/Icon.props.ts'\r\nimport { cn } from '@utils/cn.ts'\r\nimport { memo, type CSSProperties, type FC } from 'react'\r\n\r\n/**\r\n * SVG icon wrapper. Decorative by default (`aria-hidden`). Pass\r\n * `aria-label` to emit `role=\"img\"` for informative icons. An icon inside\r\n * a named control should remain decorative — the control owns the name.\r\n */\r\nconst Icon: FC<IconProps> = memo(({\r\n    icon: IconComponent,\r\n    size,\r\n    spin,\r\n    color,\r\n    padding,\r\n    borderColor,\r\n    backgroundColor,\r\n    borderWidth,\r\n    borderStyle,\r\n    borderRadius,\r\n    'aria-label': ariaLabel,\r\n    className,\r\n    style,\r\n    ...props\r\n}) => {\r\n    const isDecorative = ariaLabel === undefined\r\n\r\n    const recipeClassName = ICON_STYLES.recipe({\r\n        size,\r\n        spin,\r\n        color,\r\n    })\r\n\r\n    const computedStyle: CSSProperties = {\r\n        ...style,\r\n    }\r\n\r\n    return (\r\n        <Box\r\n            as={'span'}\r\n            display={'inline-flex'}\r\n            padding={padding}\r\n            borderColor={borderColor}\r\n            backgroundColor={backgroundColor}\r\n            borderWidth={borderWidth}\r\n            borderStyle={borderStyle}\r\n            borderRadius={borderRadius}\r\n        >\r\n            <IconComponent\r\n                width={undefined}\r\n                height={undefined}\r\n                aria-hidden={isDecorative}\r\n                aria-label={ariaLabel}\r\n                role={isDecorative ? undefined : 'img'}\r\n                className={cn(recipeClassName, className)}\r\n                style={computedStyle}\r\n                {...props}\r\n            />\r\n        </Box>\r\n    )\r\n})\r\n\r\nIcon.displayName = 'Icon'\r\n\r\nexport default Icon\r\n"],"names":["Icon","memo","IconComponent","size","spin","color","padding","borderColor","backgroundColor","borderWidth","borderStyle","borderRadius","ariaLabel","className","style","props","isDecorative","recipeClassName","ICON_STYLES","computedStyle","jsx","Box","cn"],"mappings":"sOAWMA,EAAsBC,EAAAA,KAAK,CAAC,CAC9B,KAAMC,EACN,KAAAC,EACA,KAAAC,EACA,MAAAC,EACA,QAAAC,EACA,YAAAC,EACA,gBAAAC,EACA,YAAAC,EACA,YAAAC,EACA,aAAAC,EACA,aAAcC,EACd,UAAAC,EACA,MAAAC,EACA,GAAGC,CACP,IAAM,CACF,MAAMC,EAAeJ,IAAc,OAE7BK,EAAkBC,EAAAA,YAAY,OAAO,CACvC,KAAAf,EACA,KAAAC,EACA,MAAAC,CAAA,CACH,EAEKc,EAA+B,CACjC,GAAGL,CAAA,EAGP,OACIM,EAAAA,IAACC,EAAA,CACG,GAAI,OACJ,QAAS,cACT,QAAAf,EACA,YAAAC,EACA,gBAAAC,EACA,YAAAC,EACA,YAAAC,EACA,aAAAC,EAEA,SAAAS,EAAAA,IAAClB,EAAA,CACG,MAAO,OACP,OAAQ,OACR,cAAac,EACb,aAAYJ,EACZ,KAAMI,EAAe,OAAY,MACjC,UAAWM,EAAAA,GAAGL,EAAiBJ,CAAS,EACxC,MAAOM,EACN,GAAGJ,CAAA,CAAA,CACR,CAAA,CAGZ,CAAC,EAEDf,EAAK,YAAc"}