{"version":3,"file":"Breadcrumbs.cjs","sources":["../../../../src/components/navigation/breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import {\r\n    Children,\r\n    isValidElement,\r\n    memo,\r\n    type ReactElement,\r\n} from 'react'\r\n\r\nimport { Icon } from '@components/foundation/icon'\r\nimport ChevronRightIcon from '@resources/asset/ChevronRightIcon.svg?react'\r\nimport { Typography } from '@components/foundation/typography'\r\nimport BreadcrumbsItem from '@components/navigation/breadcrumbs/components/breadcrumbs-item/BreadcrumbsItem.tsx'\r\nimport type { BreadcrumbsItemProps } from '@components/navigation/breadcrumbs/components/breadcrumbs-item/types/BreadcrumbsItem.props.ts'\r\nimport {\r\n    BREADCRUMBS_SEPARATOR_SYMBOLS,\r\n    BREADCRUMBS_SEPARATORS,\r\n} from '@components/navigation/breadcrumbs/constants'\r\nimport { BREADCRUMBS_STYLES } from '@components/navigation/breadcrumbs/styles/Breadcrumbs.css.ts'\r\nimport type { BreadcrumbsCompound } from '@components/navigation/breadcrumbs/types/BreadcrumbsCompound.ts'\r\nimport type { BreadcrumbsProps } from '@components/navigation/breadcrumbs/types/Breadcrumbs.props.ts'\r\n\r\n/**\r\n * Breadcrumb trail rendered as a `<nav>` with an ordered list. Each child\r\n * `BreadcrumbsItem` is separated by the configured `separator` (chevron icon\r\n * or a text symbol). The last item (or the one with `current`) receives\r\n * `aria-current=\"page\"`.\r\n *\r\n * Compound slot: `Breadcrumbs.Item`.\r\n */\r\nconst Breadcrumbs = memo(({\r\n    'aria-label': ariaLabel,\r\n    children,\r\n    color,\r\n    separator = BREADCRUMBS_SEPARATORS.chevron,\r\n    className,\r\n    ref,\r\n    ...props\r\n}: BreadcrumbsProps) => {\r\n    const items = Children.toArray(children).filter(\r\n        (child): child is ReactElement<BreadcrumbsItemProps> =>\r\n            isValidElement<BreadcrumbsItemProps>(child),\r\n    )\r\n    const hasExplicitCurrent = items.some(({ props: item }) => item.current)\r\n\r\n    return (\r\n        <nav\r\n            ref={ref}\r\n            aria-label={ariaLabel}\r\n            className={className}\r\n            {...props}\r\n        >\r\n            <ol className={BREADCRUMBS_STYLES.list}>\r\n                {items.map((item, index) => {\r\n                    const isCurrent = hasExplicitCurrent\r\n                        ? item.props.current === true\r\n                        : index === items.length - 1\r\n\r\n                    return (\r\n                        <li\r\n                            key={item.key}\r\n                            className={BREADCRUMBS_STYLES.item}\r\n                        >\r\n                            {index > 0 &&\r\n                                (separator === BREADCRUMBS_SEPARATORS.chevron ? (\r\n                                    <Icon\r\n                                        icon={ChevronRightIcon}\r\n                                        size={'sm'}\r\n                                        className={BREADCRUMBS_STYLES.separator}\r\n                                    />\r\n                                ) : (\r\n                                    <Typography\r\n                                        as={'span'}\r\n                                        variant={'span'}\r\n                                        className={BREADCRUMBS_STYLES.separatorText}\r\n                                        aria-hidden={'true'}\r\n                                    >\r\n                                        {BREADCRUMBS_SEPARATOR_SYMBOLS[separator]}\r\n                                    </Typography>\r\n                                ))}\r\n                            <BreadcrumbsItem\r\n                                {...item.props}\r\n                                current={isCurrent}\r\n                                color={item.props.color ?? color}\r\n                            />\r\n                        </li>\r\n                    )\r\n                })}\r\n            </ol>\r\n        </nav>\r\n    )\r\n}) as unknown as BreadcrumbsCompound\r\n\r\nBreadcrumbs.displayName = 'Breadcrumbs'\r\nBreadcrumbs.Item = BreadcrumbsItem\r\n\r\nexport default Breadcrumbs\r\n"],"names":["Breadcrumbs","memo","ariaLabel","children","color","separator","BREADCRUMBS_SEPARATORS","className","ref","props","items","Children","child","isValidElement","hasExplicitCurrent","item","jsx","BREADCRUMBS_STYLES","index","isCurrent","jsxs","Icon","ChevronRightIcon","Typography","BreadcrumbsItem"],"mappings":"4gBA4BMA,EAAcC,EAAAA,KAAK,CAAC,CACtB,aAAcC,EACd,SAAAC,EACA,MAAAC,EACA,UAAAC,EAAYC,EAAAA,uBAAuB,QACnC,UAAAC,EACA,IAAAC,EACA,GAAGC,CACP,IAAwB,CACpB,MAAMC,EAAQC,EAAAA,SAAS,QAAQR,CAAQ,EAAE,OACpCS,GACGC,EAAAA,eAAqCD,CAAK,CAAA,EAE5CE,EAAqBJ,EAAM,KAAK,CAAC,CAAE,MAAOK,CAAA,IAAWA,EAAK,OAAO,EAEvE,OACIC,EAAAA,IAAC,MAAA,CACG,IAAAR,EACA,aAAYN,EACZ,UAAAK,EACC,GAAGE,EAEJ,SAAAO,EAAAA,IAAC,MAAG,UAAWC,EAAAA,mBAAmB,KAC7B,SAAAP,EAAM,IAAI,CAACK,EAAMG,IAAU,CACxB,MAAMC,EAAYL,EACZC,EAAK,MAAM,UAAY,GACvBG,IAAUR,EAAM,OAAS,EAE/B,OACIU,EAAAA,KAAC,KAAA,CAEG,UAAWH,EAAAA,mBAAmB,KAE7B,SAAA,CAAAC,EAAQ,IACJb,IAAcC,EAAAA,uBAAuB,QAClCU,EAAAA,IAACK,EAAA,CACG,KAAMC,EACN,KAAM,KACN,UAAWL,EAAAA,mBAAmB,SAAA,CAAA,EAGlCD,EAAAA,IAACO,EAAA,CACG,GAAI,OACJ,QAAS,OACT,UAAWN,EAAAA,mBAAmB,cAC9B,cAAa,OAEZ,yCAA8BZ,CAAS,CAAA,CAAA,GAGpDW,EAAAA,IAACQ,EAAA,CACI,GAAGT,EAAK,MACT,QAASI,EACT,MAAOJ,EAAK,MAAM,OAASX,CAAA,CAAA,CAC/B,CAAA,EAxBKW,EAAK,GAAA,CA2BtB,CAAC,CAAA,CACL,CAAA,CAAA,CAGZ,CAAC,EAEDf,EAAY,YAAc,cAC1BA,EAAY,KAAOwB"}