@nori-ui/core 1.5.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Table.shared-BymRgTnY.d.cts +54 -0
- package/dist/Table.shared-BymRgTnY.d.ts +54 -0
- package/dist/{chunk-ND7MRYW7.js → chunk-2HMQDJ22.js} +4 -4
- package/dist/{chunk-ND7MRYW7.js.map → chunk-2HMQDJ22.js.map} +1 -1
- package/dist/{chunk-KCLWPSV5.js → chunk-2RL6WCFC.js} +4 -4
- package/dist/{chunk-KCLWPSV5.js.map → chunk-2RL6WCFC.js.map} +1 -1
- package/dist/{chunk-FDBQOQMW.js → chunk-3BDDPFCI.js} +3 -3
- package/dist/{chunk-FDBQOQMW.js.map → chunk-3BDDPFCI.js.map} +1 -1
- package/dist/{chunk-WOF67PKT.js → chunk-3CEJ5TB4.js} +3 -3
- package/dist/{chunk-WOF67PKT.js.map → chunk-3CEJ5TB4.js.map} +1 -1
- package/dist/{chunk-BNDUQNG7.js → chunk-3OIWAS2P.js} +3 -3
- package/dist/{chunk-BNDUQNG7.js.map → chunk-3OIWAS2P.js.map} +1 -1
- package/dist/{chunk-6JVUVBZH.js → chunk-4PUPKWEP.js} +5 -5
- package/dist/{chunk-6JVUVBZH.js.map → chunk-4PUPKWEP.js.map} +1 -1
- package/dist/{chunk-6PO2IWB3.js → chunk-4UFAZLSZ.js} +5 -3
- package/dist/chunk-4UFAZLSZ.js.map +1 -0
- package/dist/{chunk-76FZF4GM.js → chunk-5PSC5HT4.js} +8 -125
- package/dist/chunk-5PSC5HT4.js.map +1 -0
- package/dist/{chunk-LWQZ257T.js → chunk-5XEGZFG5.js} +3 -3
- package/dist/{chunk-LWQZ257T.js.map → chunk-5XEGZFG5.js.map} +1 -1
- package/dist/{chunk-WAKKQROH.js → chunk-6AD6KCVB.js} +3 -3
- package/dist/{chunk-WAKKQROH.js.map → chunk-6AD6KCVB.js.map} +1 -1
- package/dist/chunk-73CUV7MW.js +125 -0
- package/dist/chunk-73CUV7MW.js.map +1 -0
- package/dist/{chunk-GRDVE3IR.js → chunk-BZLT6R62.js} +3 -3
- package/dist/{chunk-GRDVE3IR.js.map → chunk-BZLT6R62.js.map} +1 -1
- package/dist/{chunk-Y4ZRSW35.js → chunk-CCUXO2HN.js} +3 -3
- package/dist/{chunk-Y4ZRSW35.js.map → chunk-CCUXO2HN.js.map} +1 -1
- package/dist/{chunk-2UXKXUX2.js → chunk-CPIKN4BX.js} +3 -3
- package/dist/{chunk-2UXKXUX2.js.map → chunk-CPIKN4BX.js.map} +1 -1
- package/dist/{chunk-46OT4PA6.js → chunk-DDGMLLS3.js} +3 -3
- package/dist/{chunk-46OT4PA6.js.map → chunk-DDGMLLS3.js.map} +1 -1
- package/dist/{chunk-XP55RZ3D.js → chunk-FEPTH5RV.js} +3 -3
- package/dist/{chunk-XP55RZ3D.js.map → chunk-FEPTH5RV.js.map} +1 -1
- package/dist/{chunk-MJ4AGXS7.js → chunk-GJMHNEQ3.js} +3 -3
- package/dist/{chunk-MJ4AGXS7.js.map → chunk-GJMHNEQ3.js.map} +1 -1
- package/dist/{chunk-VCJF75T2.js → chunk-JQQ3FBN7.js} +3 -3
- package/dist/{chunk-VCJF75T2.js.map → chunk-JQQ3FBN7.js.map} +1 -1
- package/dist/{chunk-O4NMS3KB.js → chunk-JXLEMBDB.js} +3 -3
- package/dist/{chunk-O4NMS3KB.js.map → chunk-JXLEMBDB.js.map} +1 -1
- package/dist/{chunk-W3HMOOON.js → chunk-JZ774T7U.js} +3 -3
- package/dist/{chunk-W3HMOOON.js.map → chunk-JZ774T7U.js.map} +1 -1
- package/dist/{chunk-SINLREQV.js → chunk-MKSDYRWQ.js} +3 -3
- package/dist/{chunk-SINLREQV.js.map → chunk-MKSDYRWQ.js.map} +1 -1
- package/dist/{chunk-AFQIK6JI.js → chunk-MRJWPRCX.js} +3 -3
- package/dist/{chunk-AFQIK6JI.js.map → chunk-MRJWPRCX.js.map} +1 -1
- package/dist/{chunk-EFK7726V.js → chunk-NF7XG2FG.js} +3 -3
- package/dist/{chunk-EFK7726V.js.map → chunk-NF7XG2FG.js.map} +1 -1
- package/dist/{chunk-WTNDPO2V.js → chunk-NNFJKRXZ.js} +3 -3
- package/dist/{chunk-WTNDPO2V.js.map → chunk-NNFJKRXZ.js.map} +1 -1
- package/dist/{chunk-CGQIVFCN.js → chunk-NRYWNOG5.js} +3 -3
- package/dist/{chunk-CGQIVFCN.js.map → chunk-NRYWNOG5.js.map} +1 -1
- package/dist/{chunk-HTF6FDB6.js → chunk-OMU4R4Y5.js} +3 -3
- package/dist/{chunk-HTF6FDB6.js.map → chunk-OMU4R4Y5.js.map} +1 -1
- package/dist/{chunk-C6TRLHMW.js → chunk-PABG3IJ6.js} +3 -3
- package/dist/{chunk-C6TRLHMW.js.map → chunk-PABG3IJ6.js.map} +1 -1
- package/dist/{chunk-RM5TSXVE.js → chunk-PNP7L4TA.js} +3 -3
- package/dist/{chunk-RM5TSXVE.js.map → chunk-PNP7L4TA.js.map} +1 -1
- package/dist/{chunk-L5X4SYJ4.js → chunk-PZS4A4VQ.js} +3 -3
- package/dist/{chunk-L5X4SYJ4.js.map → chunk-PZS4A4VQ.js.map} +1 -1
- package/dist/{chunk-4I37QSEM.js → chunk-QJVS2VXS.js} +5 -5
- package/dist/{chunk-4I37QSEM.js.map → chunk-QJVS2VXS.js.map} +1 -1
- package/dist/{chunk-H7MFAFV4.js → chunk-RUWD35UI.js} +4 -4
- package/dist/{chunk-H7MFAFV4.js.map → chunk-RUWD35UI.js.map} +1 -1
- package/dist/{chunk-5BM6H2CD.js → chunk-SFNDR6DI.js} +3 -3
- package/dist/{chunk-5BM6H2CD.js.map → chunk-SFNDR6DI.js.map} +1 -1
- package/dist/{chunk-UF5OENHV.js → chunk-TLS54G6Y.js} +3 -3
- package/dist/{chunk-UF5OENHV.js.map → chunk-TLS54G6Y.js.map} +1 -1
- package/dist/{chunk-UUXWRDWW.js → chunk-UJWCEGQY.js} +3 -3
- package/dist/{chunk-UUXWRDWW.js.map → chunk-UJWCEGQY.js.map} +1 -1
- package/dist/{chunk-UJ5KFRDE.js → chunk-UZD77M3J.js} +3 -3
- package/dist/{chunk-UJ5KFRDE.js.map → chunk-UZD77M3J.js.map} +1 -1
- package/dist/chunk-VP7DRJUZ.js +3 -0
- package/dist/chunk-VP7DRJUZ.js.map +1 -0
- package/dist/{chunk-UPVNZPFV.js → chunk-VYRJ7OE5.js} +3 -3
- package/dist/{chunk-UPVNZPFV.js.map → chunk-VYRJ7OE5.js.map} +1 -1
- package/dist/{chunk-IGLMPAWE.js → chunk-WGT345SV.js} +3 -3
- package/dist/{chunk-IGLMPAWE.js.map → chunk-WGT345SV.js.map} +1 -1
- package/dist/{chunk-F7G6R373.js → chunk-WP2Z2ATO.js} +5 -5
- package/dist/{chunk-F7G6R373.js.map → chunk-WP2Z2ATO.js.map} +1 -1
- package/dist/chunk-WYPGQVDV.js +145 -0
- package/dist/chunk-WYPGQVDV.js.map +1 -0
- package/dist/{chunk-GELLSU64.js → chunk-XALU6LOT.js} +3 -3
- package/dist/{chunk-GELLSU64.js.map → chunk-XALU6LOT.js.map} +1 -1
- package/dist/{chunk-VMAGFYHG.js → chunk-Y5TJ7CAX.js} +3 -3
- package/dist/{chunk-VMAGFYHG.js.map → chunk-Y5TJ7CAX.js.map} +1 -1
- package/dist/chunk-YZ27OS2R.js +202 -0
- package/dist/chunk-YZ27OS2R.js.map +1 -0
- package/dist/client.cjs +449 -119
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +3 -0
- package/dist/client.d.ts +3 -0
- package/dist/client.js +50 -46
- package/dist/client.js.map +1 -1
- package/dist/components/Accordion/index.js +2 -2
- package/dist/components/Alert/index.js +2 -2
- package/dist/components/AlertDialog/index.js +2 -2
- package/dist/components/Avatar/index.js +2 -2
- package/dist/components/Badge/index.js +2 -2
- package/dist/components/Box/index.js +4 -4
- package/dist/components/Breadcrumb/index.cjs +3 -1
- package/dist/components/Breadcrumb/index.cjs.map +1 -1
- package/dist/components/Breadcrumb/index.js +5 -5
- package/dist/components/Button/index.js +2 -2
- package/dist/components/Calendar/index.cjs +3 -1
- package/dist/components/Calendar/index.cjs.map +1 -1
- package/dist/components/Calendar/index.js +5 -5
- package/dist/components/Card/index.js +2 -2
- package/dist/components/Checkbox/index.js +2 -2
- package/dist/components/Combobox/index.js +3 -3
- package/dist/components/ContextMenu/index.js +4 -4
- package/dist/components/DataTable/index.cjs +770 -0
- package/dist/components/DataTable/index.cjs.map +1 -0
- package/dist/components/DataTable/index.d.cts +53 -0
- package/dist/components/DataTable/index.d.ts +53 -0
- package/dist/components/DataTable/index.js +8 -0
- package/dist/components/DataTable/index.js.map +1 -0
- package/dist/components/DatePicker/index.cjs +3 -1
- package/dist/components/DatePicker/index.cjs.map +1 -1
- package/dist/components/DatePicker/index.js +7 -7
- package/dist/components/Dialog/index.js +2 -2
- package/dist/components/DropdownMenu/index.js +3 -3
- package/dist/components/Field/index.cjs +3 -1
- package/dist/components/Field/index.cjs.map +1 -1
- package/dist/components/Field/index.d.cts +2 -2
- package/dist/components/Field/index.d.ts +2 -2
- package/dist/components/Field/index.js +3 -3
- package/dist/components/FloatButton/index.cjs +3 -1
- package/dist/components/FloatButton/index.cjs.map +1 -1
- package/dist/components/FloatButton/index.js +5 -5
- package/dist/components/HStack/index.js +4 -4
- package/dist/components/InputGroup/index.js +2 -2
- package/dist/components/Label/index.cjs +3 -1
- package/dist/components/Label/index.cjs.map +1 -1
- package/dist/components/Label/index.js +3 -3
- package/dist/components/Pagination/index.cjs +3 -1
- package/dist/components/Pagination/index.cjs.map +1 -1
- package/dist/components/Pagination/index.js +6 -5
- package/dist/components/Popover/index.js +2 -2
- package/dist/components/Progress/index.js +2 -2
- package/dist/components/Radio/index.js +2 -2
- package/dist/components/SegmentedControl/index.js +2 -2
- package/dist/components/Select/index.js +2 -2
- package/dist/components/Sheet/index.js +2 -2
- package/dist/components/Switch/index.js +2 -2
- package/dist/components/Table/index.cjs +461 -0
- package/dist/components/Table/index.cjs.map +1 -0
- package/dist/components/Table/index.d.cts +16 -0
- package/dist/components/Table/index.d.ts +16 -0
- package/dist/components/Table/index.js +7 -0
- package/dist/components/Table/index.js.map +1 -0
- package/dist/components/Tabs/index.js +2 -2
- package/dist/components/Text/index.js +2 -2
- package/dist/components/TextArea/index.js +3 -3
- package/dist/components/TextInput/index.js +2 -2
- package/dist/components/Toggle/index.js +2 -2
- package/dist/components/Tooltip/index.js +2 -2
- package/dist/components/VStack/index.js +4 -4
- package/dist/i18n/index.cjs +3 -1
- package/dist/i18n/index.cjs.map +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/index.cjs +449 -119
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +47 -43
- package/dist/slot/index.d.cts +2 -2
- package/dist/slot/index.d.ts +2 -2
- package/package.json +1 -1
- package/dist/chunk-6PO2IWB3.js.map +0 -1
- package/dist/chunk-76FZF4GM.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Breadcrumb/Breadcrumb.tsx"],"names":["RNText"],"mappings":"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","file":"chunk-4I37QSEM.js","sourcesContent":["'use client';\n\n// Breadcrumb — cross-platform, agent-friendly, width-aware.\n//\n// Two equivalent APIs:\n//\n// 1. Items-array (terse, agent-friendly, full-feature):\n//\n// <Breadcrumb\n// items={[\n// { label: 'Home', href: '/' },\n// { label: 'Docs', href: '/docs' },\n// { label: 'Breadcrumb', current: true },\n// ]}\n// separator=\"/\"\n// collapseOnOverflow\n// />\n//\n// 2. Compound (full JSX control):\n//\n// <Breadcrumb separator=\"/\">\n// <Breadcrumb.List>\n// <Breadcrumb.Item><Breadcrumb.Link href=\"/\">Home</Breadcrumb.Link></Breadcrumb.Item>\n// <Breadcrumb.Item><Breadcrumb.Link href=\"/docs\">Docs</Breadcrumb.Link></Breadcrumb.Item>\n// <Breadcrumb.Item><Breadcrumb.Page>Breadcrumb</Breadcrumb.Page></Breadcrumb.Item>\n// </Breadcrumb.List>\n// </Breadcrumb>\n//\n// Key design notes:\n// - Width-based collapse works on BOTH platforms via React Native's\n// `onLayout` (which react-native-web shims via ResizeObserver). A\n// hidden measurement copy of the full list reports per-item widths;\n// the visible list renders only the items that fit.\n// - Auto-`aria-current=\"page\"` on the last item or any item flagged\n// `current`.\n// - JSON-LD BreadcrumbList schema emitted on web for SEO + LLM ingest\n// (opt-out via `schemaOrg={false}`). Injected client-side via\n// `document.head`; SSR consumers can use the exported\n// `getBreadcrumbJsonLd()` helper with their framework's metadata API.\n// - Per-item `siblings` opens a sibling menu (the VSCode/file-path\n// pattern). Uses our `Popover` primitive.\n\nimport {\n Children,\n type ComponentType,\n createContext,\n Fragment,\n isValidElement,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { LayoutChangeEvent, ViewStyle } from 'react-native';\nimport { Platform, Pressable, Text as RNText, ScrollView, View } from 'react-native';\nimport { useTranslation } from '../../i18n/use-translation';\nimport { Slot } from '../../slot';\nimport { px } from '../../theme/px';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport { cn } from '../../utils/cn';\nimport { Popover } from '../Popover';\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/** Where the ellipsis sends the user when tapped/clicked. */\nexport type BreadcrumbExpandBehavior =\n /** Replace `…` with all hidden items inline (MUI). Web default. */\n | 'inline'\n /** Open a popover/sheet listing the hidden items (Primer / iOS). Native default. */\n | 'menu'\n /** Don't collapse — fall back to a horizontal scroll container. Useful for IDE-style file paths. */\n | 'scroll'\n /** Render `…` but don't react to interaction. Pure visual hint. */\n | 'none';\n\nexport type BreadcrumbSeparatorContext = {\n /** Index of the item PRECEDING this separator. */\n fromIndex: number;\n /** Total visible items. */\n visibleCount: number;\n /** Reading direction at render time. */\n dir: 'ltr' | 'rtl';\n};\n\nexport type BreadcrumbSeparatorValue = string | ReactNode | ((ctx: BreadcrumbSeparatorContext) => ReactNode);\n\nexport type BreadcrumbIcon = ComponentType<{ size?: number; color?: string }>;\n\nexport type BreadcrumbSibling = {\n /** Visible label. */\n label: ReactNode;\n /** Link target. Omit for an `onSelect`-driven sibling. */\n href?: string;\n /** Optional leading icon. */\n icon?: BreadcrumbIcon;\n /** Click / tap handler. */\n onSelect?: () => void;\n /** Render as inactive in the sibling menu. */\n disabled?: boolean;\n};\n\nexport type BreadcrumbItemData = {\n /** Visible label. Strings are wrapped in `<Text>`; ReactNode passes through. */\n label: ReactNode;\n /** Link target. When omitted and not `current`, the item renders as a button (use with `onSelect`). */\n href?: string;\n /** Leading icon component (lucide, custom, …). Sized to the line height. */\n icon?: BreadcrumbIcon;\n /** Marks this item as the current page. The last item is auto-flagged when no item is explicitly current. */\n current?: boolean;\n /** Sibling list — when provided, the item gets a chevron and opens a popover menu of siblings on tap. */\n siblings?: BreadcrumbSibling[];\n /** Render a skeleton instead of the label — useful while async paths resolve. */\n loading?: boolean;\n /** Click / tap handler when `href` is absent. */\n onSelect?: () => void;\n /** Stable key for React's reconciler. Defaults to the item index. */\n key?: string | number;\n /** Override per-item label truncation in characters. 0 disables truncation. */\n maxLabelLength?: number;\n};\n\nexport type BreadcrumbProps = {\n /** Items-array mode. When provided, `children` is ignored. */\n items?: ReadonlyArray<BreadcrumbItemData>;\n /**\n * Visual separator between items. Strings render as plain text; nodes\n * render as-is; functions receive `(ctx)` and return a node.\n * @defaultValue a chevron glyph (auto-flips for RTL)\n */\n separator?: BreadcrumbSeparatorValue;\n /**\n * Maximum number of visible items. The middle is collapsed into a\n * single ellipsis; the first / last items are kept by default.\n * Pass `0` or `undefined` to disable count-based collapse.\n */\n maxItems?: number;\n /** How many items at the START of the list stay visible when the middle collapses. @defaultValue 1 */\n itemsBeforeCollapse?: number;\n /** How many items at the END of the list stay visible when the middle collapses. @defaultValue 1 */\n itemsAfterCollapse?: number;\n /**\n * Width-based collapse using `onLayout` (works on RN-Web via the\n * built-in ResizeObserver shim and on native via the layout system).\n * The library renders a hidden measurement copy of every item, then\n * shows only the items that fit the container — middle items are\n * folded into the ellipsis. Pass `false` to opt out and let the row\n * grow to its natural width (it will overflow its parent if the\n * parent does not provide its own scroll/clip handling).\n * @defaultValue true\n */\n collapseOnOverflow?: boolean;\n /**\n * What the ellipsis does when tapped/clicked.\n * @defaultValue 'inline' on web, 'menu' on native\n */\n expandBehavior?: BreadcrumbExpandBehavior;\n /** Override the default i18n string for the \"show full path\" SR label. */\n expandLabel?: string;\n /** Override the default i18n string for the ellipsis SR label. */\n ellipsisLabel?: string;\n /**\n * Visually-hidden prefix announced before the current page's label.\n * Helps screen readers convey \"Current page: Settings\" instead of \"Settings\".\n */\n currentPageLabel?: string;\n /** Override the SR label for sibling menus opened from a crumb. */\n siblingMenuLabel?: string;\n /** Visible aria-label on the wrapping `<nav>`. @defaultValue translated \"Breadcrumb\" */\n ariaLabel?: string;\n /**\n * Emit JSON-LD `BreadcrumbList` structured data for SEO + LLM\n * ingest. Web only; ignored on native.\n * @defaultValue true (only when `items` is provided AND on web)\n */\n schemaOrg?: boolean;\n /**\n * Reading direction. RTL flips the default chevron separator and the\n * collapse logic so the start/end stay anchored to the right edge.\n * @defaultValue 'ltr'\n */\n dir?: 'ltr' | 'rtl';\n /**\n * Truncate each item's label after this many characters. Per-item\n * `maxLabelLength` overrides this. @defaultValue 0 (no truncation)\n */\n maxLabelLength?: number;\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\n// =============================================================================\n// Context (compound mode only)\n// =============================================================================\n\ntype BreadcrumbContextValue = {\n separator: BreadcrumbSeparatorValue;\n dir: 'ltr' | 'rtl';\n currentPageLabel: string;\n siblingMenuLabel: string;\n maxLabelLength: number;\n};\n\nconst BreadcrumbContext = createContext<BreadcrumbContextValue | null>(null);\n\nconst useBreadcrumbContext = (label: string): BreadcrumbContextValue => {\n const ctx = useContext(BreadcrumbContext);\n if (!ctx) {\n throw new Error(`<${label}> must be rendered inside a <Breadcrumb>.`);\n }\n return ctx;\n};\n\n// =============================================================================\n// Defaults / markers\n// =============================================================================\n\nconst DEFAULT_ITEMS_BEFORE = 1;\nconst DEFAULT_ITEMS_AFTER = 1;\n\ntype CompoundChildKind = 'item' | 'separator';\nconst COMPOUND_KIND_KEY = '__nori_breadcrumb_kind__';\n\nfunction tagComponent<T>(component: T, kind: CompoundChildKind): T {\n (component as unknown as Record<string, unknown>)[COMPOUND_KIND_KEY] = kind;\n return component;\n}\n\nfunction getCompoundKind(node: ReactNode): CompoundChildKind | undefined {\n if (!isValidElement(node)) {\n return undefined;\n }\n const type = node.type as unknown as { [k: string]: unknown };\n const tagged = type?.[COMPOUND_KIND_KEY];\n return tagged === 'item' || tagged === 'separator' ? tagged : undefined;\n}\n\n// =============================================================================\n// Default chevron separator\n// =============================================================================\n\nconst DefaultChevron = ({ dir }: { dir: 'ltr' | 'rtl' }) => {\n const colors = useThemeColors();\n const flipped = dir === 'rtl';\n if (Platform.OS === 'web') {\n return (\n <svg\n width={14}\n height={14}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke={colors.semantic.text.muted}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n style={{ transform: flipped ? 'scaleX(-1)' : undefined, flexShrink: 0 }}\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n );\n }\n return (\n <RNText\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n style={{\n fontSize: 14,\n lineHeight: 20,\n color: colors.semantic.text.muted,\n transform: flipped ? [{ scaleX: -1 }] : undefined,\n }}\n >\n ›\n </RNText>\n );\n};\n\nconst SeparatorText = ({ children }: { children: ReactNode }) => {\n const colors = useThemeColors();\n return (\n <RNText\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n style={{\n fontSize: px(colors.fontSize.sm),\n lineHeight: px(colors.fontSize.md) * 1.4,\n color: colors.semantic.text.muted,\n fontFamily: colors.fontFamily.body,\n paddingHorizontal: 2,\n }}\n >\n {children}\n </RNText>\n );\n};\n\nfunction renderSeparator(separator: BreadcrumbSeparatorValue | undefined, ctx: BreadcrumbSeparatorContext): ReactNode {\n if (separator === undefined) {\n return <DefaultChevron dir={ctx.dir} />;\n }\n if (typeof separator === 'function') {\n return separator(ctx);\n }\n if (typeof separator === 'string') {\n return <SeparatorText>{separator}</SeparatorText>;\n }\n return separator;\n}\n\n// =============================================================================\n// Width-based overflow fit\n// =============================================================================\n\ntype OverflowFitArgs = {\n enabled: boolean;\n /** Total candidate items (after count-collapse). */\n itemCount: number;\n itemsBeforeCollapse: number;\n itemsAfterCollapse: number;\n};\n\ntype OverflowFitState = {\n visibleIndices: Set<number>;\n ready: boolean;\n onContainerLayout: (event: LayoutChangeEvent) => void;\n onItemLayout: (index: number) => (event: LayoutChangeEvent) => void;\n onEllipsisLayout: (event: LayoutChangeEvent) => void;\n onSeparatorLayout: (event: LayoutChangeEvent) => void;\n};\n\nfunction useOverflowFit({\n enabled,\n itemCount,\n itemsBeforeCollapse,\n itemsAfterCollapse,\n}: OverflowFitArgs): OverflowFitState {\n const [containerWidth, setContainerWidth] = useState<number | null>(null);\n const itemWidthsRef = useRef<Map<number, number>>(new Map());\n const ellipsisWidthRef = useRef<number>(0);\n const separatorWidthRef = useRef<number>(0);\n // The widths above live in refs so we can write to them inside layout\n // callbacks without React's setState quotas. But the fit algorithm\n // depends on them — so any change has to invalidate the visibleIndices\n // memo. Bumping `widthsTick` does both: triggers a re-render AND adds\n // a memo dependency that actually changes between writes.\n const [widthsTick, setWidthsTick] = useState(0);\n\n const onContainerLayout = useCallback((event: LayoutChangeEvent) => {\n const w = event.nativeEvent.layout.width;\n setContainerWidth((prev) => (prev !== null && Math.abs(prev - w) < 0.5 ? prev : w));\n }, []);\n\n const onItemLayout = useCallback(\n (index: number) => (event: LayoutChangeEvent) => {\n const w = event.nativeEvent.layout.width;\n const prev = itemWidthsRef.current.get(index);\n if (prev === undefined || Math.abs(prev - w) >= 0.5) {\n itemWidthsRef.current.set(index, w);\n setWidthsTick((t) => t + 1);\n }\n },\n []\n );\n\n const onEllipsisLayout = useCallback((event: LayoutChangeEvent) => {\n const w = event.nativeEvent.layout.width;\n if (Math.abs(ellipsisWidthRef.current - w) >= 0.5) {\n ellipsisWidthRef.current = w;\n setWidthsTick((t) => t + 1);\n }\n }, []);\n\n const onSeparatorLayout = useCallback((event: LayoutChangeEvent) => {\n const w = event.nativeEvent.layout.width;\n if (Math.abs(separatorWidthRef.current - w) >= 0.5) {\n separatorWidthRef.current = w;\n setWidthsTick((t) => t + 1);\n }\n }, []);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: widthsTick is a manual invalidation signal for ref-stored measurements; the algorithm reads itemWidthsRef/ellipsisWidthRef/separatorWidthRef which biome can't see through\n const visibleIndices = useMemo<Set<number>>(() => {\n const all = new Set<number>();\n for (let i = 0; i < itemCount; i += 1) {\n all.add(i);\n }\n if (!enabled || containerWidth === null || itemCount === 0) {\n return all;\n }\n const widths = itemWidthsRef.current;\n // Wait for every item to report a width — incomplete measurements\n // can collapse a long item that actually fits.\n if (widths.size < itemCount) {\n return all;\n }\n const sep = separatorWidthRef.current;\n const ell = ellipsisWidthRef.current;\n\n // Total of the full list = sum(items) + sep * (count - 1).\n let total = 0;\n for (let i = 0; i < itemCount; i += 1) {\n total += widths.get(i) ?? 0;\n }\n total += sep * Math.max(0, itemCount - 1);\n if (total <= containerWidth) {\n return all;\n }\n\n const before = Math.max(0, Math.min(itemsBeforeCollapse, itemCount));\n const after = Math.max(0, Math.min(itemsAfterCollapse, itemCount - before));\n\n // Anchors are the items the user has guaranteed to keep visible.\n // Start with them, plus the ellipsis cell, then grow inward as\n // long as we have budget.\n const anchorIndices = new Set<number>();\n for (let i = 0; i < before; i += 1) {\n anchorIndices.add(i);\n }\n for (let i = itemCount - after; i < itemCount; i += 1) {\n anchorIndices.add(i);\n }\n let used = 0;\n for (const idx of anchorIndices) {\n used += widths.get(idx) ?? 0;\n }\n // ellipsis takes one cell + separators on each side that has anchors.\n used += ell;\n const sepCount = Math.max(0, anchorIndices.size + 1 - 1);\n used += sep * sepCount;\n\n if (used > containerWidth) {\n // Even the anchors don't fit — drop one anchor at a time\n // from the inner edge until the budget covers what's left\n // (always keeping at least one anchor on each side that had any).\n const beforeIdx: number[] = [];\n for (let i = 0; i < before; i += 1) {\n beforeIdx.push(i);\n }\n const afterIdx: number[] = [];\n for (let i = itemCount - after; i < itemCount; i += 1) {\n afterIdx.push(i);\n }\n const minBefore = before > 0 ? 1 : 0;\n const minAfter = after > 0 ? 1 : 0;\n while (used > containerWidth && (beforeIdx.length > minBefore || afterIdx.length > minAfter)) {\n if (beforeIdx.length > minBefore) {\n const dropped = beforeIdx.pop();\n if (dropped !== undefined) {\n used -= (widths.get(dropped) ?? 0) + sep;\n anchorIndices.delete(dropped);\n }\n }\n if (used <= containerWidth) {\n break;\n }\n if (afterIdx.length > minAfter) {\n const dropped = afterIdx.shift();\n if (dropped !== undefined) {\n used -= (widths.get(dropped) ?? 0) + sep;\n anchorIndices.delete(dropped);\n }\n }\n }\n return anchorIndices;\n }\n\n // Try to grow back: include adjacent items as long as they fit.\n // Alternate left and right so context near both edges is balanced.\n let leftCursor = before;\n let rightCursor = itemCount - after - 1;\n while (leftCursor <= rightCursor) {\n const w = widths.get(leftCursor) ?? 0;\n if (used + w + sep <= containerWidth) {\n anchorIndices.add(leftCursor);\n used += w + sep;\n leftCursor += 1;\n } else {\n break;\n }\n if (leftCursor > rightCursor) {\n break;\n }\n const w2 = widths.get(rightCursor) ?? 0;\n if (used + w2 + sep <= containerWidth) {\n anchorIndices.add(rightCursor);\n used += w2 + sep;\n rightCursor -= 1;\n } else {\n break;\n }\n }\n return anchorIndices;\n }, [containerWidth, itemCount, itemsBeforeCollapse, itemsAfterCollapse, enabled, widthsTick]);\n\n const ready = !enabled || (containerWidth !== null && itemWidthsRef.current.size >= itemCount);\n\n return {\n visibleIndices,\n ready,\n onContainerLayout,\n onItemLayout,\n onEllipsisLayout,\n onSeparatorLayout,\n };\n}\n\n// =============================================================================\n// Count-based collapse helper\n// =============================================================================\n\nfunction applyCountCollapse(\n items: ReadonlyArray<BreadcrumbItemData>,\n maxItems: number | undefined,\n before: number,\n after: number\n): { visible: ReadonlyArray<BreadcrumbItemData>; hidden: ReadonlyArray<BreadcrumbItemData>; collapseAt: number } {\n if (!maxItems || items.length <= maxItems) {\n return { visible: items, hidden: [], collapseAt: -1 };\n }\n const beforeArr = items.slice(0, Math.max(0, Math.min(before, items.length)));\n const afterArr = after > 0 ? items.slice(Math.max(beforeArr.length, items.length - after)) : [];\n const hidden = items.slice(beforeArr.length, items.length - afterArr.length);\n const visible = [...beforeArr, ...afterArr];\n return { visible, hidden, collapseAt: beforeArr.length };\n}\n\n// =============================================================================\n// JSON-LD\n// =============================================================================\n\n/**\n * Build a JSON-LD `BreadcrumbList` document from a list of items. Use it\n * with your framework's metadata API for SSR-time emission:\n *\n * ```tsx\n * // Next.js App Router metadata\n * export async function generateMetadata() {\n * return { other: { 'application/ld+json': getBreadcrumbJsonLd(items) } };\n * }\n * ```\n *\n * The component renders this client-side via `document.head` injection\n * automatically — but framework-driven SSR is preferred for reliable\n * search-engine pickup, hence this exported helper.\n */\nexport function getBreadcrumbJsonLd(items: ReadonlyArray<BreadcrumbItemData>): string {\n const elements = items\n .map((it, idx) => {\n const name = typeof it.label === 'string' ? it.label : undefined;\n if (!name) {\n return null;\n }\n const entry: Record<string, unknown> = {\n '@type': 'ListItem',\n position: idx + 1,\n name,\n };\n if (it.href) {\n entry.item = it.href;\n }\n return entry;\n })\n .filter((x): x is Record<string, unknown> => x !== null);\n return JSON.stringify({\n '@context': 'https://schema.org',\n '@type': 'BreadcrumbList',\n itemListElement: elements,\n });\n}\n\nfunction useBreadcrumbJsonLdInjection(items: ReadonlyArray<BreadcrumbItemData>, enabled: boolean) {\n useEffect(() => {\n if (!enabled || Platform.OS !== 'web' || typeof document === 'undefined') {\n return;\n }\n const json = getBreadcrumbJsonLd(items);\n // Skip emitting an empty BreadcrumbList — no items resolve to a\n // string label means nothing useful for crawlers.\n if (!json.includes('\"itemListElement\":[{')) {\n return;\n }\n const script = document.createElement('script');\n script.type = 'application/ld+json';\n // Use textContent (not innerHTML) — the browser doesn't parse it as\n // HTML, so XSS via label content can't leak out of the script tag.\n script.textContent = json;\n script.setAttribute('data-nori-breadcrumb', 'true');\n document.head.appendChild(script);\n return () => {\n if (script.parentNode === document.head) {\n document.head.removeChild(script);\n }\n };\n }, [items, enabled]);\n}\n\n// =============================================================================\n// Truncated label\n// =============================================================================\n\nfunction truncateString(input: string, max: number): string {\n if (max <= 0 || input.length <= max) {\n return input;\n }\n if (max <= 1) {\n return '…';\n }\n return `${input.slice(0, max - 1)}…`;\n}\n\n// =============================================================================\n// Root\n// =============================================================================\n\nconst BreadcrumbRoot = ({\n items,\n separator,\n maxItems,\n itemsBeforeCollapse = DEFAULT_ITEMS_BEFORE,\n itemsAfterCollapse = DEFAULT_ITEMS_AFTER,\n collapseOnOverflow,\n expandBehavior,\n expandLabel,\n ellipsisLabel,\n currentPageLabel,\n siblingMenuLabel,\n ariaLabel,\n schemaOrg,\n dir = 'ltr',\n maxLabelLength = 0,\n children,\n className,\n testID,\n}: BreadcrumbProps) => {\n const { t } = useTranslation();\n const colors = useThemeColors();\n const resolvedAriaLabel = ariaLabel ?? t('breadcrumb.ariaLabel', { defaultValue: 'Breadcrumb' });\n const resolvedExpandLabel = expandLabel ?? t('breadcrumb.expandLabel', { defaultValue: 'Show full path' });\n const resolvedEllipsisLabel = ellipsisLabel ?? t('breadcrumb.ellipsisLabel', { defaultValue: 'More' });\n const resolvedCurrentPageLabel =\n currentPageLabel ?? t('breadcrumb.currentPageLabel', { defaultValue: 'Current page' });\n const resolvedSiblingMenuLabel =\n siblingMenuLabel ?? t('breadcrumb.siblingMenuLabel', { defaultValue: 'Open sibling pages' });\n\n const resolvedExpandBehavior: BreadcrumbExpandBehavior =\n expandBehavior ?? (Platform.OS === 'web' ? 'inline' : 'menu');\n\n if (items && items.length > 0) {\n return (\n <BreadcrumbItemsRenderer\n items={items}\n separator={separator}\n maxItems={maxItems}\n itemsBeforeCollapse={itemsBeforeCollapse}\n itemsAfterCollapse={itemsAfterCollapse}\n collapseOnOverflow={collapseOnOverflow ?? true}\n expandBehavior={resolvedExpandBehavior}\n expandLabel={resolvedExpandLabel}\n ellipsisLabel={resolvedEllipsisLabel}\n currentPageLabel={resolvedCurrentPageLabel}\n siblingMenuLabel={resolvedSiblingMenuLabel}\n ariaLabel={resolvedAriaLabel}\n schemaOrg={schemaOrg}\n dir={dir}\n maxLabelLength={maxLabelLength}\n {...(className !== undefined ? { className } : {})}\n {...(testID !== undefined ? { testID } : {})}\n />\n );\n }\n\n // Compound mode — context only; the list / items render themselves.\n const ctxValue: BreadcrumbContextValue = {\n separator: separator ?? '',\n dir,\n currentPageLabel: resolvedCurrentPageLabel,\n siblingMenuLabel: resolvedSiblingMenuLabel,\n maxLabelLength,\n };\n\n return (\n <BreadcrumbContext.Provider value={ctxValue}>\n <View\n {...(testID !== undefined ? { testID } : {})}\n role=\"navigation\"\n aria-label={resolvedAriaLabel}\n accessible\n accessibilityLabel={resolvedAriaLabel}\n className={cn('flex-row items-center', className)}\n style={\n {\n flexDirection: 'row',\n alignItems: 'center',\n direction: dir as ViewStyle['direction'],\n fontFamily: colors.fontFamily.body,\n } as ViewStyle\n }\n >\n {children}\n </View>\n </BreadcrumbContext.Provider>\n );\n};\n\n// =============================================================================\n// Items-mode renderer\n// =============================================================================\n\ntype ItemsRendererProps = {\n items: ReadonlyArray<BreadcrumbItemData>;\n separator: BreadcrumbSeparatorValue | undefined;\n maxItems: number | undefined;\n itemsBeforeCollapse: number;\n itemsAfterCollapse: number;\n collapseOnOverflow: boolean;\n expandBehavior: BreadcrumbExpandBehavior;\n expandLabel: string;\n ellipsisLabel: string;\n currentPageLabel: string;\n siblingMenuLabel: string;\n ariaLabel: string;\n schemaOrg: boolean | undefined;\n dir: 'ltr' | 'rtl';\n maxLabelLength: number;\n className?: string;\n testID?: string;\n};\n\nconst BreadcrumbItemsRenderer = ({\n items,\n separator,\n maxItems,\n itemsBeforeCollapse,\n itemsAfterCollapse,\n collapseOnOverflow,\n expandBehavior,\n expandLabel,\n ellipsisLabel,\n currentPageLabel,\n siblingMenuLabel,\n ariaLabel,\n schemaOrg,\n dir,\n maxLabelLength,\n className,\n testID,\n}: ItemsRendererProps) => {\n const [inlineExpanded, setInlineExpanded] = useState(false);\n\n // Auto-flag the last item as current when nobody else claims it.\n const normalizedItems = useMemo<ReadonlyArray<BreadcrumbItemData>>(() => {\n if (items.length === 0) {\n return items;\n }\n const anyCurrent = items.some((it) => it.current);\n if (anyCurrent) {\n return items;\n }\n const last = items[items.length - 1];\n if (!last) {\n return items;\n }\n const out: BreadcrumbItemData[] = [...items];\n out[out.length - 1] = { ...last, current: true };\n return out;\n }, [items]);\n\n useBreadcrumbJsonLdInjection(normalizedItems, schemaOrg !== false);\n\n // -------- COUNT-BASED COLLAPSE --------\n const countCollapse = useMemo(\n () =>\n applyCountCollapse(\n normalizedItems,\n inlineExpanded ? undefined : maxItems,\n itemsBeforeCollapse,\n itemsAfterCollapse\n ),\n [normalizedItems, maxItems, itemsBeforeCollapse, itemsAfterCollapse, inlineExpanded]\n );\n\n // -------- WIDTH-BASED COLLAPSE --------\n // Width-based fit runs on the post-count-collapse list — count is\n // always the ceiling. Width may further shrink the visible set.\n const widthFit = useOverflowFit({\n enabled: collapseOnOverflow && expandBehavior !== 'scroll' && !inlineExpanded,\n itemCount: countCollapse.visible.length,\n itemsBeforeCollapse,\n itemsAfterCollapse,\n });\n\n const widthHiddenItems = useMemo(() => {\n if (!collapseOnOverflow || expandBehavior === 'scroll' || inlineExpanded) {\n return [] as ReadonlyArray<BreadcrumbItemData>;\n }\n return countCollapse.visible.filter((_, idx) => !widthFit.visibleIndices.has(idx));\n }, [collapseOnOverflow, expandBehavior, inlineExpanded, countCollapse.visible, widthFit.visibleIndices]);\n\n const allHiddenItems = useMemo<ReadonlyArray<BreadcrumbItemData>>(() => {\n if (inlineExpanded) {\n return [];\n }\n return [...countCollapse.hidden, ...widthHiddenItems];\n }, [countCollapse.hidden, widthHiddenItems, inlineExpanded]);\n\n const visibleItemsForRender = useMemo<ReadonlyArray<BreadcrumbItemData>>(() => {\n if (inlineExpanded) {\n return normalizedItems;\n }\n return countCollapse.visible.filter((_, idx) =>\n collapseOnOverflow && expandBehavior !== 'scroll' ? widthFit.visibleIndices.has(idx) : true\n );\n }, [\n countCollapse.visible,\n widthFit.visibleIndices,\n collapseOnOverflow,\n expandBehavior,\n inlineExpanded,\n normalizedItems,\n ]);\n\n // Where to insert the ellipsis. Heuristic: after `itemsBeforeCollapse`\n // visible items from the start (clamped to the visible length).\n const ellipsisInsertAt = useMemo(() => {\n if (inlineExpanded || allHiddenItems.length === 0) {\n return -1;\n }\n return Math.min(itemsBeforeCollapse, visibleItemsForRender.length);\n }, [allHiddenItems.length, inlineExpanded, visibleItemsForRender.length, itemsBeforeCollapse]);\n\n const renderedCells: ReactNode[] = [];\n const measurementCells: ReactNode[] = [];\n\n visibleItemsForRender.forEach((item, idx) => {\n if (idx === ellipsisInsertAt && allHiddenItems.length > 0) {\n renderedCells.push(\n <Fragment key=\"__ellipsis__\">\n <BreadcrumbEllipsisInternal\n ellipsisLabel={ellipsisLabel}\n expandLabel={expandLabel}\n expandBehavior={expandBehavior}\n hiddenItems={allHiddenItems}\n onExpandInline={() => setInlineExpanded(true)}\n />\n </Fragment>\n );\n renderedCells.push(\n <Fragment key=\"__sep_ellipsis__\">\n {renderSeparator(separator, {\n fromIndex: idx - 1,\n visibleCount: visibleItemsForRender.length + 1,\n dir,\n })}\n </Fragment>\n );\n }\n\n const itemKey = item.key ?? `item-${normalizedItems.indexOf(item)}`;\n renderedCells.push(\n <Fragment key={itemKey}>\n <BreadcrumbItemRenderer\n item={item}\n currentPageLabel={currentPageLabel}\n siblingMenuLabel={siblingMenuLabel}\n maxLabelLength={maxLabelLength}\n />\n </Fragment>\n );\n const isLast = idx === visibleItemsForRender.length - 1;\n if (!isLast) {\n renderedCells.push(\n <Fragment key={`sep-${itemKey}`}>\n {renderSeparator(separator, {\n fromIndex: idx,\n visibleCount: visibleItemsForRender.length,\n dir,\n })}\n </Fragment>\n );\n }\n });\n\n if (collapseOnOverflow && expandBehavior !== 'scroll') {\n countCollapse.visible.forEach((item, idx) => {\n const itemKey = item.key ?? `m-${idx}`;\n measurementCells.push(\n <View key={itemKey} onLayout={widthFit.onItemLayout(idx)}>\n <BreadcrumbItemRenderer\n item={item}\n currentPageLabel={currentPageLabel}\n siblingMenuLabel={siblingMenuLabel}\n maxLabelLength={maxLabelLength}\n />\n </View>\n );\n });\n measurementCells.push(\n <View key=\"__m_sep__\" onLayout={widthFit.onSeparatorLayout}>\n {renderSeparator(separator, {\n fromIndex: 0,\n visibleCount: countCollapse.visible.length,\n dir,\n })}\n </View>\n );\n measurementCells.push(\n <View key=\"__m_ellipsis__\" onLayout={widthFit.onEllipsisLayout}>\n <BreadcrumbEllipsisInternal\n ellipsisLabel={ellipsisLabel}\n expandLabel={expandLabel}\n expandBehavior=\"none\"\n hiddenItems={[]}\n onExpandInline={() => undefined}\n />\n </View>\n );\n }\n\n const list = (\n <View\n role=\"list\"\n accessibilityRole=\"list\"\n className={cn('flex-row items-center')}\n style={{ flexDirection: 'row', alignItems: 'center', flexShrink: 1, minWidth: 0 }}\n >\n {renderedCells}\n </View>\n );\n\n // When width-based collapse is on, the wrapper MUST measure the\n // available width — not its content's natural width. Without an\n // explicit `width: '100%'` (or `alignSelf: 'stretch'`) the wrapper\n // hugs its row of items on native, so `containerWidth` from\n // `onLayout` equals the items' total — and the algorithm\n // never sees an overflow. With `width: '100%'`, the wrapper fills\n // its parent's cross-axis (which is the row width in a typical\n // column-flex parent), giving us a real budget to compare against.\n const wrapperStyle: ViewStyle = {\n flexDirection: 'row',\n alignItems: 'center',\n direction: dir as ViewStyle['direction'],\n flexShrink: 1,\n minWidth: 0,\n ...(collapseOnOverflow && expandBehavior !== 'scroll' ? { width: '100%' } : null),\n // `overflow: 'hidden'` keeps the visible row from blowing past\n // its container before the first measurement settles. Without\n // it, native renders the natural-width row briefly on the first\n // paint, even though the JS layout reports the correct measured\n // width on the very next tick.\n ...(collapseOnOverflow ? { overflow: 'hidden' as ViewStyle['overflow'] } : null),\n };\n\n return (\n <View\n {...(testID !== undefined ? { testID } : {})}\n role=\"navigation\"\n aria-label={ariaLabel}\n accessible\n accessibilityLabel={ariaLabel}\n className={cn('flex-row items-center', className)}\n style={wrapperStyle}\n onLayout={collapseOnOverflow && expandBehavior !== 'scroll' ? widthFit.onContainerLayout : undefined}\n >\n {expandBehavior === 'scroll' ? (\n <ScrollView\n horizontal\n showsHorizontalScrollIndicator={false}\n contentContainerStyle={{ flexDirection: 'row', alignItems: 'center' }}\n style={{ flexGrow: 1 }}\n >\n {list}\n </ScrollView>\n ) : (\n list\n )}\n\n {/* Hidden measurement copy. Offscreen on both platforms. */}\n {collapseOnOverflow && expandBehavior !== 'scroll' ? (\n <View\n aria-hidden\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n style={{\n position: 'absolute',\n opacity: 0,\n flexDirection: 'row',\n alignItems: 'center',\n left: -99999,\n top: 0,\n // `pointerEvents` lives on the style object now —\n // the prop form is deprecated in RN 0.71+ / RN-Web\n // 0.20+ and emits a runtime warning every render.\n pointerEvents: 'none' as ViewStyle['pointerEvents'],\n }}\n >\n {measurementCells}\n </View>\n ) : null}\n </View>\n );\n};\n\n// =============================================================================\n// Item renderer (items-mode)\n// =============================================================================\n\ntype ItemRendererProps = {\n item: BreadcrumbItemData;\n currentPageLabel: string;\n siblingMenuLabel: string;\n maxLabelLength: number;\n};\n\nconst BreadcrumbItemRenderer = ({ item, currentPageLabel, siblingMenuLabel, maxLabelLength }: ItemRendererProps) => {\n const colors = useThemeColors();\n const Icon = item.icon;\n const isLink = !item.current && (item.href !== undefined || item.onSelect !== undefined);\n\n const effectiveMax = item.maxLabelLength ?? maxLabelLength;\n const renderLabel = (): ReactNode => {\n if (item.loading) {\n return (\n <View\n style={{\n backgroundColor: colors.semantic.background.subtle,\n borderRadius: px(colors.radius.sm),\n height: px(colors.fontSize.sm),\n width: 64,\n }}\n />\n );\n }\n if (typeof item.label === 'string' || typeof item.label === 'number') {\n const text = String(item.label);\n const truncated = effectiveMax > 0 ? truncateString(text, effectiveMax) : text;\n return (\n <RNText\n numberOfLines={1}\n ellipsizeMode=\"tail\"\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: item.current ? colors.semantic.text.default : colors.semantic.text.muted,\n fontWeight: item.current\n ? (colors.fontWeight.semibold as '600')\n : (colors.fontWeight.regular as '400'),\n }}\n >\n {truncated}\n </RNText>\n );\n }\n return item.label;\n };\n\n const inner = (\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n gap: px(colors.spacing['1']),\n }}\n >\n {Icon ? (\n <Icon size={14} color={item.current ? colors.semantic.text.default : colors.semantic.text.muted} />\n ) : null}\n {renderLabel()}\n </View>\n );\n\n if (item.current) {\n return (\n <View\n role=\"listitem\"\n accessibilityRole=\"text\"\n style={{ flexDirection: 'row', alignItems: 'center', paddingHorizontal: 4 }}\n >\n <RNText\n style={{\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n opacity: 0,\n }}\n >\n {currentPageLabel}:{' '}\n </RNText>\n <View aria-current=\"page\">{inner}</View>\n </View>\n );\n }\n\n if (item.siblings && item.siblings.length > 0) {\n return (\n <View role=\"listitem\" style={{ flexDirection: 'row', alignItems: 'center', paddingHorizontal: 4 }}>\n <BreadcrumbInteractive item={item}>{inner}</BreadcrumbInteractive>\n <BreadcrumbSiblingMenu item={item} siblingMenuLabel={siblingMenuLabel} />\n </View>\n );\n }\n\n if (isLink) {\n return (\n <View role=\"listitem\" style={{ flexDirection: 'row', alignItems: 'center', paddingHorizontal: 4 }}>\n <BreadcrumbInteractive item={item}>{inner}</BreadcrumbInteractive>\n </View>\n );\n }\n\n return (\n <View role=\"listitem\" style={{ flexDirection: 'row', alignItems: 'center', paddingHorizontal: 4 }}>\n {inner}\n </View>\n );\n};\n\nconst BreadcrumbInteractive = ({ item, children }: { item: BreadcrumbItemData; children: ReactNode }) => {\n const colors = useThemeColors();\n const handlePress = useCallback(() => {\n item.onSelect?.();\n }, [item]);\n\n if (Platform.OS === 'web' && item.href) {\n // When the consumer passes `onSelect`, treat it as the action and\n // suppress the default `<a>` navigation. This is the standard\n // pattern for \"link-styled button\" use-cases (router Links,\n // analytics-only handlers, demo pseudo-links).\n const handleClick = item.onSelect\n ? (event: { preventDefault: () => void }) => {\n event.preventDefault();\n item.onSelect?.();\n }\n : undefined;\n return (\n <a\n href={item.href}\n onClick={handleClick}\n style={{\n color: colors.semantic.interactive.primary,\n textDecoration: 'none',\n fontFamily: colors.fontFamily.body,\n }}\n >\n {children}\n </a>\n );\n }\n\n return (\n <Pressable onPress={handlePress} accessibilityRole=\"link\" role=\"link\">\n {children}\n </Pressable>\n );\n};\n\nconst BreadcrumbSiblingMenu = ({ item, siblingMenuLabel }: { item: BreadcrumbItemData; siblingMenuLabel: string }) => {\n const colors = useThemeColors();\n const siblings = item.siblings ?? [];\n return (\n <Popover>\n <Popover.Trigger asChild={false}>\n <View\n accessibilityLabel={siblingMenuLabel}\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 2,\n paddingVertical: 4,\n }}\n >\n <RNText\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n style={{ fontSize: 10, color: colors.semantic.text.muted }}\n >\n ▾\n </RNText>\n </View>\n </Popover.Trigger>\n <Popover.Content side=\"bottom\" align=\"start\">\n <View style={{ minWidth: 200, paddingVertical: 4 }}>\n {siblings.map((sib, idx) => (\n <SiblingRow key={sib.href ?? idx} sibling={sib} />\n ))}\n </View>\n </Popover.Content>\n </Popover>\n );\n};\n\nconst SiblingRow = ({ sibling }: { sibling: BreadcrumbSibling }) => {\n const colors = useThemeColors();\n const Icon = sibling.icon;\n const handlePress = useCallback(() => {\n sibling.onSelect?.();\n }, [sibling]);\n\n const inner = (\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n gap: px(colors.spacing['2']),\n paddingVertical: px(colors.spacing['2']),\n paddingHorizontal: px(colors.spacing['3']),\n opacity: sibling.disabled ? 0.5 : 1,\n }}\n >\n {Icon ? <Icon size={14} color={colors.semantic.text.muted} /> : null}\n {typeof sibling.label === 'string' || typeof sibling.label === 'number' ? (\n <RNText\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: colors.semantic.text.default,\n }}\n >\n {String(sibling.label)}\n </RNText>\n ) : (\n sibling.label\n )}\n </View>\n );\n\n if (Platform.OS === 'web' && sibling.href && !sibling.disabled) {\n const handleClick = sibling.onSelect\n ? (event: { preventDefault: () => void }) => {\n event.preventDefault();\n sibling.onSelect?.();\n }\n : undefined;\n return (\n <a href={sibling.href} onClick={handleClick} style={{ textDecoration: 'none', color: 'inherit' }}>\n {inner}\n </a>\n );\n }\n return (\n <Pressable onPress={sibling.disabled ? undefined : handlePress} accessibilityRole=\"menuitem\">\n {inner}\n </Pressable>\n );\n};\n\n// =============================================================================\n// Ellipsis (internal — used by the items-mode renderer)\n// =============================================================================\n\ntype EllipsisProps = {\n ellipsisLabel: string;\n expandLabel: string;\n expandBehavior: BreadcrumbExpandBehavior;\n hiddenItems: ReadonlyArray<BreadcrumbItemData>;\n onExpandInline: () => void;\n};\n\nconst BreadcrumbEllipsisInternal = ({\n ellipsisLabel,\n expandLabel,\n expandBehavior,\n hiddenItems,\n onExpandInline,\n}: EllipsisProps) => {\n const colors = useThemeColors();\n const renderDots = () => (\n <RNText\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: colors.semantic.text.muted,\n paddingHorizontal: 4,\n }}\n >\n …\n </RNText>\n );\n\n if (expandBehavior === 'none' || hiddenItems.length === 0) {\n return (\n <View\n accessibilityLabel={ellipsisLabel}\n aria-label={ellipsisLabel}\n style={{ flexDirection: 'row', alignItems: 'center', paddingHorizontal: 4 }}\n >\n {renderDots()}\n </View>\n );\n }\n\n if (expandBehavior === 'inline') {\n return (\n <Pressable\n onPress={onExpandInline}\n accessibilityRole=\"button\"\n role=\"button\"\n accessibilityLabel={expandLabel}\n aria-label={expandLabel}\n style={{ flexDirection: 'row', alignItems: 'center', paddingHorizontal: 4 }}\n >\n {renderDots()}\n </Pressable>\n );\n }\n\n // Menu mode: ellipsis triggers a popover with the hidden items.\n return (\n <Popover>\n <Popover.Trigger asChild={false}>\n <View\n accessibilityLabel={expandLabel}\n aria-label={expandLabel}\n style={{ flexDirection: 'row', alignItems: 'center', paddingHorizontal: 4 }}\n >\n {renderDots()}\n </View>\n </Popover.Trigger>\n <Popover.Content side=\"bottom\" align=\"start\">\n <View style={{ minWidth: 200, paddingVertical: 4 }}>\n {hiddenItems.map((it, idx) => {\n const sib: BreadcrumbSibling = { label: it.label };\n if (it.href !== undefined) {\n sib.href = it.href;\n }\n if (it.icon !== undefined) {\n sib.icon = it.icon;\n }\n if (it.onSelect !== undefined) {\n sib.onSelect = it.onSelect;\n }\n return (\n <SiblingRow\n key={typeof it.key === 'string' || typeof it.key === 'number' ? it.key : idx}\n sibling={sib}\n />\n );\n })}\n </View>\n </Popover.Content>\n </Popover>\n );\n};\n\n// =============================================================================\n// Compound subcomponents\n// =============================================================================\n\nexport type BreadcrumbListProps = {\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\nexport const BreadcrumbList = ({ children, className, testID }: BreadcrumbListProps) => {\n useBreadcrumbContext('Breadcrumb.List');\n // Auto-insert separators between consecutive `Breadcrumb.Item`s\n // unless the user provided their own. Lets users write the terse form:\n // <List><Item/><Item/><Item/></List>\n const childArray = Children.toArray(children);\n const out: ReactNode[] = [];\n let lastWasItem = false;\n childArray.forEach((child, idx) => {\n const kind = getCompoundKind(child);\n if (kind === 'item') {\n if (lastWasItem) {\n out.push(\n // biome-ignore lint/suspicious/noArrayIndexKey: separator position is deterministic from its preceding item index\n <Fragment key={`__autosep_${idx}`}>\n <BreadcrumbSeparator />\n </Fragment>\n );\n }\n out.push(child);\n lastWasItem = true;\n } else {\n out.push(child);\n lastWasItem = false;\n }\n });\n\n return (\n <View\n {...(testID !== undefined ? { testID } : {})}\n role=\"list\"\n accessibilityRole=\"list\"\n className={cn('flex-row items-center', className)}\n style={{ flexDirection: 'row', alignItems: 'center', flexShrink: 1, minWidth: 0 }}\n >\n {out}\n </View>\n );\n};\n\nexport type BreadcrumbItemProps = {\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\nexport const BreadcrumbItem = ({ children, className, testID }: BreadcrumbItemProps) => {\n useBreadcrumbContext('Breadcrumb.Item');\n return (\n <View\n {...(testID !== undefined ? { testID } : {})}\n role=\"listitem\"\n accessibilityRole=\"text\"\n className={cn('flex-row items-center', className)}\n style={{ flexDirection: 'row', alignItems: 'center', paddingHorizontal: 4 }}\n >\n {children}\n </View>\n );\n};\ntagComponent(BreadcrumbItem, 'item');\n\nexport type BreadcrumbLinkProps = {\n href?: string;\n onPress?: () => void;\n asChild?: boolean;\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\nexport const BreadcrumbLink = ({ href, onPress, asChild, children, className, testID }: BreadcrumbLinkProps) => {\n const colors = useThemeColors();\n\n if (asChild) {\n return (\n <Slot\n {...(testID !== undefined ? { 'data-testid': testID } : {})}\n {...(className !== undefined ? { className } : {})}\n >\n {children}\n </Slot>\n );\n }\n\n if (Platform.OS === 'web' && href) {\n // `onPress` overrides the default `<a>` navigation — same pattern\n // as the items-mode `onSelect`. Lets consumers use `<Link>` from\n // a router or build pseudo-links for demos.\n const handleClick = onPress\n ? (event: { preventDefault: () => void }) => {\n event.preventDefault();\n onPress?.();\n }\n : undefined;\n return (\n <a\n href={href}\n onClick={handleClick}\n {...(testID !== undefined ? { 'data-testid': testID } : {})}\n {...(className !== undefined ? { className } : {})}\n style={{\n color: colors.semantic.interactive.primary,\n textDecoration: 'none',\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n }}\n >\n {typeof children === 'string' || typeof children === 'number' ? (\n <RNText\n style={{\n color: colors.semantic.interactive.primary,\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n }}\n >\n {children}\n </RNText>\n ) : (\n children\n )}\n </a>\n );\n }\n\n return (\n <Pressable onPress={onPress} accessibilityRole=\"link\" role=\"link\" {...(testID !== undefined ? { testID } : {})}>\n {typeof children === 'string' || typeof children === 'number' ? (\n <RNText\n style={{\n color: colors.semantic.interactive.primary,\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n }}\n >\n {children}\n </RNText>\n ) : (\n children\n )}\n </Pressable>\n );\n};\n\nexport type BreadcrumbPageProps = {\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\nexport const BreadcrumbPage = ({ children, className, testID }: BreadcrumbPageProps) => {\n const ctx = useBreadcrumbContext('Breadcrumb.Page');\n const colors = useThemeColors();\n return (\n <View\n {...(testID !== undefined ? { testID } : {})}\n accessibilityRole=\"text\"\n aria-current=\"page\"\n className={cn('flex-row items-center', className)}\n style={{ flexDirection: 'row', alignItems: 'center' }}\n >\n <RNText\n style={{\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n opacity: 0,\n }}\n >\n {ctx.currentPageLabel}:{' '}\n </RNText>\n {typeof children === 'string' || typeof children === 'number' ? (\n <RNText\n numberOfLines={1}\n style={{\n color: colors.semantic.text.default,\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n fontWeight: colors.fontWeight.semibold as '600',\n }}\n >\n {children}\n </RNText>\n ) : (\n children\n )}\n </View>\n );\n};\n\nexport type BreadcrumbSeparatorProps = {\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\nexport const BreadcrumbSeparator = ({ children, className, testID }: BreadcrumbSeparatorProps) => {\n const ctx = useBreadcrumbContext('Breadcrumb.Separator');\n const node = children ?? renderSeparator(ctx.separator, { fromIndex: 0, visibleCount: 0, dir: ctx.dir });\n return (\n <View\n {...(testID !== undefined ? { testID } : {})}\n aria-hidden\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n role=\"presentation\"\n className={cn('flex-row items-center', className)}\n style={{ flexDirection: 'row', alignItems: 'center', paddingHorizontal: 2 }}\n >\n {node}\n </View>\n );\n};\ntagComponent(BreadcrumbSeparator, 'separator');\n\nexport type BreadcrumbEllipsisProps = {\n ellipsisLabel?: string;\n className?: string;\n testID?: string;\n};\n\nexport const BreadcrumbEllipsis = ({ ellipsisLabel, className, testID }: BreadcrumbEllipsisProps) => {\n useBreadcrumbContext('Breadcrumb.Ellipsis');\n const { t } = useTranslation();\n const colors = useThemeColors();\n const label = ellipsisLabel ?? t('breadcrumb.ellipsisLabel', { defaultValue: 'More' });\n return (\n <View\n {...(testID !== undefined ? { testID } : {})}\n accessibilityLabel={label}\n aria-label={label}\n className={cn('flex-row items-center', className)}\n style={{ flexDirection: 'row', alignItems: 'center', paddingHorizontal: 4 }}\n >\n <RNText\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: colors.semantic.text.muted,\n }}\n >\n …\n </RNText>\n </View>\n );\n};\n\n// =============================================================================\n// Public surface\n// =============================================================================\n\nexport const Breadcrumb = Object.assign(BreadcrumbRoot, {\n List: BreadcrumbList,\n Item: BreadcrumbItem,\n Link: BreadcrumbLink,\n Page: BreadcrumbPage,\n Separator: BreadcrumbSeparator,\n Ellipsis: BreadcrumbEllipsis,\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Breadcrumb/Breadcrumb.tsx"],"names":["RNText"],"mappings":"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","file":"chunk-QJVS2VXS.js","sourcesContent":["'use client';\n\n// Breadcrumb — cross-platform, agent-friendly, width-aware.\n//\n// Two equivalent APIs:\n//\n// 1. Items-array (terse, agent-friendly, full-feature):\n//\n// <Breadcrumb\n// items={[\n// { label: 'Home', href: '/' },\n// { label: 'Docs', href: '/docs' },\n// { label: 'Breadcrumb', current: true },\n// ]}\n// separator=\"/\"\n// collapseOnOverflow\n// />\n//\n// 2. Compound (full JSX control):\n//\n// <Breadcrumb separator=\"/\">\n// <Breadcrumb.List>\n// <Breadcrumb.Item><Breadcrumb.Link href=\"/\">Home</Breadcrumb.Link></Breadcrumb.Item>\n// <Breadcrumb.Item><Breadcrumb.Link href=\"/docs\">Docs</Breadcrumb.Link></Breadcrumb.Item>\n// <Breadcrumb.Item><Breadcrumb.Page>Breadcrumb</Breadcrumb.Page></Breadcrumb.Item>\n// </Breadcrumb.List>\n// </Breadcrumb>\n//\n// Key design notes:\n// - Width-based collapse works on BOTH platforms via React Native's\n// `onLayout` (which react-native-web shims via ResizeObserver). A\n// hidden measurement copy of the full list reports per-item widths;\n// the visible list renders only the items that fit.\n// - Auto-`aria-current=\"page\"` on the last item or any item flagged\n// `current`.\n// - JSON-LD BreadcrumbList schema emitted on web for SEO + LLM ingest\n// (opt-out via `schemaOrg={false}`). Injected client-side via\n// `document.head`; SSR consumers can use the exported\n// `getBreadcrumbJsonLd()` helper with their framework's metadata API.\n// - Per-item `siblings` opens a sibling menu (the VSCode/file-path\n// pattern). Uses our `Popover` primitive.\n\nimport {\n Children,\n type ComponentType,\n createContext,\n Fragment,\n isValidElement,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { LayoutChangeEvent, ViewStyle } from 'react-native';\nimport { Platform, Pressable, Text as RNText, ScrollView, View } from 'react-native';\nimport { useTranslation } from '../../i18n/use-translation';\nimport { Slot } from '../../slot';\nimport { px } from '../../theme/px';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport { cn } from '../../utils/cn';\nimport { Popover } from '../Popover';\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/** Where the ellipsis sends the user when tapped/clicked. */\nexport type BreadcrumbExpandBehavior =\n /** Replace `…` with all hidden items inline (MUI). Web default. */\n | 'inline'\n /** Open a popover/sheet listing the hidden items (Primer / iOS). Native default. */\n | 'menu'\n /** Don't collapse — fall back to a horizontal scroll container. Useful for IDE-style file paths. */\n | 'scroll'\n /** Render `…` but don't react to interaction. Pure visual hint. */\n | 'none';\n\nexport type BreadcrumbSeparatorContext = {\n /** Index of the item PRECEDING this separator. */\n fromIndex: number;\n /** Total visible items. */\n visibleCount: number;\n /** Reading direction at render time. */\n dir: 'ltr' | 'rtl';\n};\n\nexport type BreadcrumbSeparatorValue = string | ReactNode | ((ctx: BreadcrumbSeparatorContext) => ReactNode);\n\nexport type BreadcrumbIcon = ComponentType<{ size?: number; color?: string }>;\n\nexport type BreadcrumbSibling = {\n /** Visible label. */\n label: ReactNode;\n /** Link target. Omit for an `onSelect`-driven sibling. */\n href?: string;\n /** Optional leading icon. */\n icon?: BreadcrumbIcon;\n /** Click / tap handler. */\n onSelect?: () => void;\n /** Render as inactive in the sibling menu. */\n disabled?: boolean;\n};\n\nexport type BreadcrumbItemData = {\n /** Visible label. Strings are wrapped in `<Text>`; ReactNode passes through. */\n label: ReactNode;\n /** Link target. When omitted and not `current`, the item renders as a button (use with `onSelect`). */\n href?: string;\n /** Leading icon component (lucide, custom, …). Sized to the line height. */\n icon?: BreadcrumbIcon;\n /** Marks this item as the current page. The last item is auto-flagged when no item is explicitly current. */\n current?: boolean;\n /** Sibling list — when provided, the item gets a chevron and opens a popover menu of siblings on tap. */\n siblings?: BreadcrumbSibling[];\n /** Render a skeleton instead of the label — useful while async paths resolve. */\n loading?: boolean;\n /** Click / tap handler when `href` is absent. */\n onSelect?: () => void;\n /** Stable key for React's reconciler. Defaults to the item index. */\n key?: string | number;\n /** Override per-item label truncation in characters. 0 disables truncation. */\n maxLabelLength?: number;\n};\n\nexport type BreadcrumbProps = {\n /** Items-array mode. When provided, `children` is ignored. */\n items?: ReadonlyArray<BreadcrumbItemData>;\n /**\n * Visual separator between items. Strings render as plain text; nodes\n * render as-is; functions receive `(ctx)` and return a node.\n * @defaultValue a chevron glyph (auto-flips for RTL)\n */\n separator?: BreadcrumbSeparatorValue;\n /**\n * Maximum number of visible items. The middle is collapsed into a\n * single ellipsis; the first / last items are kept by default.\n * Pass `0` or `undefined` to disable count-based collapse.\n */\n maxItems?: number;\n /** How many items at the START of the list stay visible when the middle collapses. @defaultValue 1 */\n itemsBeforeCollapse?: number;\n /** How many items at the END of the list stay visible when the middle collapses. @defaultValue 1 */\n itemsAfterCollapse?: number;\n /**\n * Width-based collapse using `onLayout` (works on RN-Web via the\n * built-in ResizeObserver shim and on native via the layout system).\n * The library renders a hidden measurement copy of every item, then\n * shows only the items that fit the container — middle items are\n * folded into the ellipsis. Pass `false` to opt out and let the row\n * grow to its natural width (it will overflow its parent if the\n * parent does not provide its own scroll/clip handling).\n * @defaultValue true\n */\n collapseOnOverflow?: boolean;\n /**\n * What the ellipsis does when tapped/clicked.\n * @defaultValue 'inline' on web, 'menu' on native\n */\n expandBehavior?: BreadcrumbExpandBehavior;\n /** Override the default i18n string for the \"show full path\" SR label. */\n expandLabel?: string;\n /** Override the default i18n string for the ellipsis SR label. */\n ellipsisLabel?: string;\n /**\n * Visually-hidden prefix announced before the current page's label.\n * Helps screen readers convey \"Current page: Settings\" instead of \"Settings\".\n */\n currentPageLabel?: string;\n /** Override the SR label for sibling menus opened from a crumb. */\n siblingMenuLabel?: string;\n /** Visible aria-label on the wrapping `<nav>`. @defaultValue translated \"Breadcrumb\" */\n ariaLabel?: string;\n /**\n * Emit JSON-LD `BreadcrumbList` structured data for SEO + LLM\n * ingest. Web only; ignored on native.\n * @defaultValue true (only when `items` is provided AND on web)\n */\n schemaOrg?: boolean;\n /**\n * Reading direction. RTL flips the default chevron separator and the\n * collapse logic so the start/end stay anchored to the right edge.\n * @defaultValue 'ltr'\n */\n dir?: 'ltr' | 'rtl';\n /**\n * Truncate each item's label after this many characters. Per-item\n * `maxLabelLength` overrides this. @defaultValue 0 (no truncation)\n */\n maxLabelLength?: number;\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\n// =============================================================================\n// Context (compound mode only)\n// =============================================================================\n\ntype BreadcrumbContextValue = {\n separator: BreadcrumbSeparatorValue;\n dir: 'ltr' | 'rtl';\n currentPageLabel: string;\n siblingMenuLabel: string;\n maxLabelLength: number;\n};\n\nconst BreadcrumbContext = createContext<BreadcrumbContextValue | null>(null);\n\nconst useBreadcrumbContext = (label: string): BreadcrumbContextValue => {\n const ctx = useContext(BreadcrumbContext);\n if (!ctx) {\n throw new Error(`<${label}> must be rendered inside a <Breadcrumb>.`);\n }\n return ctx;\n};\n\n// =============================================================================\n// Defaults / markers\n// =============================================================================\n\nconst DEFAULT_ITEMS_BEFORE = 1;\nconst DEFAULT_ITEMS_AFTER = 1;\n\ntype CompoundChildKind = 'item' | 'separator';\nconst COMPOUND_KIND_KEY = '__nori_breadcrumb_kind__';\n\nfunction tagComponent<T>(component: T, kind: CompoundChildKind): T {\n (component as unknown as Record<string, unknown>)[COMPOUND_KIND_KEY] = kind;\n return component;\n}\n\nfunction getCompoundKind(node: ReactNode): CompoundChildKind | undefined {\n if (!isValidElement(node)) {\n return undefined;\n }\n const type = node.type as unknown as { [k: string]: unknown };\n const tagged = type?.[COMPOUND_KIND_KEY];\n return tagged === 'item' || tagged === 'separator' ? tagged : undefined;\n}\n\n// =============================================================================\n// Default chevron separator\n// =============================================================================\n\nconst DefaultChevron = ({ dir }: { dir: 'ltr' | 'rtl' }) => {\n const colors = useThemeColors();\n const flipped = dir === 'rtl';\n if (Platform.OS === 'web') {\n return (\n <svg\n width={14}\n height={14}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke={colors.semantic.text.muted}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n style={{ transform: flipped ? 'scaleX(-1)' : undefined, flexShrink: 0 }}\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n );\n }\n return (\n <RNText\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n style={{\n fontSize: 14,\n lineHeight: 20,\n color: colors.semantic.text.muted,\n transform: flipped ? [{ scaleX: -1 }] : undefined,\n }}\n >\n ›\n </RNText>\n );\n};\n\nconst SeparatorText = ({ children }: { children: ReactNode }) => {\n const colors = useThemeColors();\n return (\n <RNText\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n style={{\n fontSize: px(colors.fontSize.sm),\n lineHeight: px(colors.fontSize.md) * 1.4,\n color: colors.semantic.text.muted,\n fontFamily: colors.fontFamily.body,\n paddingHorizontal: 2,\n }}\n >\n {children}\n </RNText>\n );\n};\n\nfunction renderSeparator(separator: BreadcrumbSeparatorValue | undefined, ctx: BreadcrumbSeparatorContext): ReactNode {\n if (separator === undefined) {\n return <DefaultChevron dir={ctx.dir} />;\n }\n if (typeof separator === 'function') {\n return separator(ctx);\n }\n if (typeof separator === 'string') {\n return <SeparatorText>{separator}</SeparatorText>;\n }\n return separator;\n}\n\n// =============================================================================\n// Width-based overflow fit\n// =============================================================================\n\ntype OverflowFitArgs = {\n enabled: boolean;\n /** Total candidate items (after count-collapse). */\n itemCount: number;\n itemsBeforeCollapse: number;\n itemsAfterCollapse: number;\n};\n\ntype OverflowFitState = {\n visibleIndices: Set<number>;\n ready: boolean;\n onContainerLayout: (event: LayoutChangeEvent) => void;\n onItemLayout: (index: number) => (event: LayoutChangeEvent) => void;\n onEllipsisLayout: (event: LayoutChangeEvent) => void;\n onSeparatorLayout: (event: LayoutChangeEvent) => void;\n};\n\nfunction useOverflowFit({\n enabled,\n itemCount,\n itemsBeforeCollapse,\n itemsAfterCollapse,\n}: OverflowFitArgs): OverflowFitState {\n const [containerWidth, setContainerWidth] = useState<number | null>(null);\n const itemWidthsRef = useRef<Map<number, number>>(new Map());\n const ellipsisWidthRef = useRef<number>(0);\n const separatorWidthRef = useRef<number>(0);\n // The widths above live in refs so we can write to them inside layout\n // callbacks without React's setState quotas. But the fit algorithm\n // depends on them — so any change has to invalidate the visibleIndices\n // memo. Bumping `widthsTick` does both: triggers a re-render AND adds\n // a memo dependency that actually changes between writes.\n const [widthsTick, setWidthsTick] = useState(0);\n\n const onContainerLayout = useCallback((event: LayoutChangeEvent) => {\n const w = event.nativeEvent.layout.width;\n setContainerWidth((prev) => (prev !== null && Math.abs(prev - w) < 0.5 ? prev : w));\n }, []);\n\n const onItemLayout = useCallback(\n (index: number) => (event: LayoutChangeEvent) => {\n const w = event.nativeEvent.layout.width;\n const prev = itemWidthsRef.current.get(index);\n if (prev === undefined || Math.abs(prev - w) >= 0.5) {\n itemWidthsRef.current.set(index, w);\n setWidthsTick((t) => t + 1);\n }\n },\n []\n );\n\n const onEllipsisLayout = useCallback((event: LayoutChangeEvent) => {\n const w = event.nativeEvent.layout.width;\n if (Math.abs(ellipsisWidthRef.current - w) >= 0.5) {\n ellipsisWidthRef.current = w;\n setWidthsTick((t) => t + 1);\n }\n }, []);\n\n const onSeparatorLayout = useCallback((event: LayoutChangeEvent) => {\n const w = event.nativeEvent.layout.width;\n if (Math.abs(separatorWidthRef.current - w) >= 0.5) {\n separatorWidthRef.current = w;\n setWidthsTick((t) => t + 1);\n }\n }, []);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: widthsTick is a manual invalidation signal for ref-stored measurements; the algorithm reads itemWidthsRef/ellipsisWidthRef/separatorWidthRef which biome can't see through\n const visibleIndices = useMemo<Set<number>>(() => {\n const all = new Set<number>();\n for (let i = 0; i < itemCount; i += 1) {\n all.add(i);\n }\n if (!enabled || containerWidth === null || itemCount === 0) {\n return all;\n }\n const widths = itemWidthsRef.current;\n // Wait for every item to report a width — incomplete measurements\n // can collapse a long item that actually fits.\n if (widths.size < itemCount) {\n return all;\n }\n const sep = separatorWidthRef.current;\n const ell = ellipsisWidthRef.current;\n\n // Total of the full list = sum(items) + sep * (count - 1).\n let total = 0;\n for (let i = 0; i < itemCount; i += 1) {\n total += widths.get(i) ?? 0;\n }\n total += sep * Math.max(0, itemCount - 1);\n if (total <= containerWidth) {\n return all;\n }\n\n const before = Math.max(0, Math.min(itemsBeforeCollapse, itemCount));\n const after = Math.max(0, Math.min(itemsAfterCollapse, itemCount - before));\n\n // Anchors are the items the user has guaranteed to keep visible.\n // Start with them, plus the ellipsis cell, then grow inward as\n // long as we have budget.\n const anchorIndices = new Set<number>();\n for (let i = 0; i < before; i += 1) {\n anchorIndices.add(i);\n }\n for (let i = itemCount - after; i < itemCount; i += 1) {\n anchorIndices.add(i);\n }\n let used = 0;\n for (const idx of anchorIndices) {\n used += widths.get(idx) ?? 0;\n }\n // ellipsis takes one cell + separators on each side that has anchors.\n used += ell;\n const sepCount = Math.max(0, anchorIndices.size + 1 - 1);\n used += sep * sepCount;\n\n if (used > containerWidth) {\n // Even the anchors don't fit — drop one anchor at a time\n // from the inner edge until the budget covers what's left\n // (always keeping at least one anchor on each side that had any).\n const beforeIdx: number[] = [];\n for (let i = 0; i < before; i += 1) {\n beforeIdx.push(i);\n }\n const afterIdx: number[] = [];\n for (let i = itemCount - after; i < itemCount; i += 1) {\n afterIdx.push(i);\n }\n const minBefore = before > 0 ? 1 : 0;\n const minAfter = after > 0 ? 1 : 0;\n while (used > containerWidth && (beforeIdx.length > minBefore || afterIdx.length > minAfter)) {\n if (beforeIdx.length > minBefore) {\n const dropped = beforeIdx.pop();\n if (dropped !== undefined) {\n used -= (widths.get(dropped) ?? 0) + sep;\n anchorIndices.delete(dropped);\n }\n }\n if (used <= containerWidth) {\n break;\n }\n if (afterIdx.length > minAfter) {\n const dropped = afterIdx.shift();\n if (dropped !== undefined) {\n used -= (widths.get(dropped) ?? 0) + sep;\n anchorIndices.delete(dropped);\n }\n }\n }\n return anchorIndices;\n }\n\n // Try to grow back: include adjacent items as long as they fit.\n // Alternate left and right so context near both edges is balanced.\n let leftCursor = before;\n let rightCursor = itemCount - after - 1;\n while (leftCursor <= rightCursor) {\n const w = widths.get(leftCursor) ?? 0;\n if (used + w + sep <= containerWidth) {\n anchorIndices.add(leftCursor);\n used += w + sep;\n leftCursor += 1;\n } else {\n break;\n }\n if (leftCursor > rightCursor) {\n break;\n }\n const w2 = widths.get(rightCursor) ?? 0;\n if (used + w2 + sep <= containerWidth) {\n anchorIndices.add(rightCursor);\n used += w2 + sep;\n rightCursor -= 1;\n } else {\n break;\n }\n }\n return anchorIndices;\n }, [containerWidth, itemCount, itemsBeforeCollapse, itemsAfterCollapse, enabled, widthsTick]);\n\n const ready = !enabled || (containerWidth !== null && itemWidthsRef.current.size >= itemCount);\n\n return {\n visibleIndices,\n ready,\n onContainerLayout,\n onItemLayout,\n onEllipsisLayout,\n onSeparatorLayout,\n };\n}\n\n// =============================================================================\n// Count-based collapse helper\n// =============================================================================\n\nfunction applyCountCollapse(\n items: ReadonlyArray<BreadcrumbItemData>,\n maxItems: number | undefined,\n before: number,\n after: number\n): { visible: ReadonlyArray<BreadcrumbItemData>; hidden: ReadonlyArray<BreadcrumbItemData>; collapseAt: number } {\n if (!maxItems || items.length <= maxItems) {\n return { visible: items, hidden: [], collapseAt: -1 };\n }\n const beforeArr = items.slice(0, Math.max(0, Math.min(before, items.length)));\n const afterArr = after > 0 ? items.slice(Math.max(beforeArr.length, items.length - after)) : [];\n const hidden = items.slice(beforeArr.length, items.length - afterArr.length);\n const visible = [...beforeArr, ...afterArr];\n return { visible, hidden, collapseAt: beforeArr.length };\n}\n\n// =============================================================================\n// JSON-LD\n// =============================================================================\n\n/**\n * Build a JSON-LD `BreadcrumbList` document from a list of items. Use it\n * with your framework's metadata API for SSR-time emission:\n *\n * ```tsx\n * // Next.js App Router metadata\n * export async function generateMetadata() {\n * return { other: { 'application/ld+json': getBreadcrumbJsonLd(items) } };\n * }\n * ```\n *\n * The component renders this client-side via `document.head` injection\n * automatically — but framework-driven SSR is preferred for reliable\n * search-engine pickup, hence this exported helper.\n */\nexport function getBreadcrumbJsonLd(items: ReadonlyArray<BreadcrumbItemData>): string {\n const elements = items\n .map((it, idx) => {\n const name = typeof it.label === 'string' ? it.label : undefined;\n if (!name) {\n return null;\n }\n const entry: Record<string, unknown> = {\n '@type': 'ListItem',\n position: idx + 1,\n name,\n };\n if (it.href) {\n entry.item = it.href;\n }\n return entry;\n })\n .filter((x): x is Record<string, unknown> => x !== null);\n return JSON.stringify({\n '@context': 'https://schema.org',\n '@type': 'BreadcrumbList',\n itemListElement: elements,\n });\n}\n\nfunction useBreadcrumbJsonLdInjection(items: ReadonlyArray<BreadcrumbItemData>, enabled: boolean) {\n useEffect(() => {\n if (!enabled || Platform.OS !== 'web' || typeof document === 'undefined') {\n return;\n }\n const json = getBreadcrumbJsonLd(items);\n // Skip emitting an empty BreadcrumbList — no items resolve to a\n // string label means nothing useful for crawlers.\n if (!json.includes('\"itemListElement\":[{')) {\n return;\n }\n const script = document.createElement('script');\n script.type = 'application/ld+json';\n // Use textContent (not innerHTML) — the browser doesn't parse it as\n // HTML, so XSS via label content can't leak out of the script tag.\n script.textContent = json;\n script.setAttribute('data-nori-breadcrumb', 'true');\n document.head.appendChild(script);\n return () => {\n if (script.parentNode === document.head) {\n document.head.removeChild(script);\n }\n };\n }, [items, enabled]);\n}\n\n// =============================================================================\n// Truncated label\n// =============================================================================\n\nfunction truncateString(input: string, max: number): string {\n if (max <= 0 || input.length <= max) {\n return input;\n }\n if (max <= 1) {\n return '…';\n }\n return `${input.slice(0, max - 1)}…`;\n}\n\n// =============================================================================\n// Root\n// =============================================================================\n\nconst BreadcrumbRoot = ({\n items,\n separator,\n maxItems,\n itemsBeforeCollapse = DEFAULT_ITEMS_BEFORE,\n itemsAfterCollapse = DEFAULT_ITEMS_AFTER,\n collapseOnOverflow,\n expandBehavior,\n expandLabel,\n ellipsisLabel,\n currentPageLabel,\n siblingMenuLabel,\n ariaLabel,\n schemaOrg,\n dir = 'ltr',\n maxLabelLength = 0,\n children,\n className,\n testID,\n}: BreadcrumbProps) => {\n const { t } = useTranslation();\n const colors = useThemeColors();\n const resolvedAriaLabel = ariaLabel ?? t('breadcrumb.ariaLabel', { defaultValue: 'Breadcrumb' });\n const resolvedExpandLabel = expandLabel ?? t('breadcrumb.expandLabel', { defaultValue: 'Show full path' });\n const resolvedEllipsisLabel = ellipsisLabel ?? t('breadcrumb.ellipsisLabel', { defaultValue: 'More' });\n const resolvedCurrentPageLabel =\n currentPageLabel ?? t('breadcrumb.currentPageLabel', { defaultValue: 'Current page' });\n const resolvedSiblingMenuLabel =\n siblingMenuLabel ?? t('breadcrumb.siblingMenuLabel', { defaultValue: 'Open sibling pages' });\n\n const resolvedExpandBehavior: BreadcrumbExpandBehavior =\n expandBehavior ?? (Platform.OS === 'web' ? 'inline' : 'menu');\n\n if (items && items.length > 0) {\n return (\n <BreadcrumbItemsRenderer\n items={items}\n separator={separator}\n maxItems={maxItems}\n itemsBeforeCollapse={itemsBeforeCollapse}\n itemsAfterCollapse={itemsAfterCollapse}\n collapseOnOverflow={collapseOnOverflow ?? true}\n expandBehavior={resolvedExpandBehavior}\n expandLabel={resolvedExpandLabel}\n ellipsisLabel={resolvedEllipsisLabel}\n currentPageLabel={resolvedCurrentPageLabel}\n siblingMenuLabel={resolvedSiblingMenuLabel}\n ariaLabel={resolvedAriaLabel}\n schemaOrg={schemaOrg}\n dir={dir}\n maxLabelLength={maxLabelLength}\n {...(className !== undefined ? { className } : {})}\n {...(testID !== undefined ? { testID } : {})}\n />\n );\n }\n\n // Compound mode — context only; the list / items render themselves.\n const ctxValue: BreadcrumbContextValue = {\n separator: separator ?? '',\n dir,\n currentPageLabel: resolvedCurrentPageLabel,\n siblingMenuLabel: resolvedSiblingMenuLabel,\n maxLabelLength,\n };\n\n return (\n <BreadcrumbContext.Provider value={ctxValue}>\n <View\n {...(testID !== undefined ? { testID } : {})}\n role=\"navigation\"\n aria-label={resolvedAriaLabel}\n accessible\n accessibilityLabel={resolvedAriaLabel}\n className={cn('flex-row items-center', className)}\n style={\n {\n flexDirection: 'row',\n alignItems: 'center',\n direction: dir as ViewStyle['direction'],\n fontFamily: colors.fontFamily.body,\n } as ViewStyle\n }\n >\n {children}\n </View>\n </BreadcrumbContext.Provider>\n );\n};\n\n// =============================================================================\n// Items-mode renderer\n// =============================================================================\n\ntype ItemsRendererProps = {\n items: ReadonlyArray<BreadcrumbItemData>;\n separator: BreadcrumbSeparatorValue | undefined;\n maxItems: number | undefined;\n itemsBeforeCollapse: number;\n itemsAfterCollapse: number;\n collapseOnOverflow: boolean;\n expandBehavior: BreadcrumbExpandBehavior;\n expandLabel: string;\n ellipsisLabel: string;\n currentPageLabel: string;\n siblingMenuLabel: string;\n ariaLabel: string;\n schemaOrg: boolean | undefined;\n dir: 'ltr' | 'rtl';\n maxLabelLength: number;\n className?: string;\n testID?: string;\n};\n\nconst BreadcrumbItemsRenderer = ({\n items,\n separator,\n maxItems,\n itemsBeforeCollapse,\n itemsAfterCollapse,\n collapseOnOverflow,\n expandBehavior,\n expandLabel,\n ellipsisLabel,\n currentPageLabel,\n siblingMenuLabel,\n ariaLabel,\n schemaOrg,\n dir,\n maxLabelLength,\n className,\n testID,\n}: ItemsRendererProps) => {\n const [inlineExpanded, setInlineExpanded] = useState(false);\n\n // Auto-flag the last item as current when nobody else claims it.\n const normalizedItems = useMemo<ReadonlyArray<BreadcrumbItemData>>(() => {\n if (items.length === 0) {\n return items;\n }\n const anyCurrent = items.some((it) => it.current);\n if (anyCurrent) {\n return items;\n }\n const last = items[items.length - 1];\n if (!last) {\n return items;\n }\n const out: BreadcrumbItemData[] = [...items];\n out[out.length - 1] = { ...last, current: true };\n return out;\n }, [items]);\n\n useBreadcrumbJsonLdInjection(normalizedItems, schemaOrg !== false);\n\n // -------- COUNT-BASED COLLAPSE --------\n const countCollapse = useMemo(\n () =>\n applyCountCollapse(\n normalizedItems,\n inlineExpanded ? undefined : maxItems,\n itemsBeforeCollapse,\n itemsAfterCollapse\n ),\n [normalizedItems, maxItems, itemsBeforeCollapse, itemsAfterCollapse, inlineExpanded]\n );\n\n // -------- WIDTH-BASED COLLAPSE --------\n // Width-based fit runs on the post-count-collapse list — count is\n // always the ceiling. Width may further shrink the visible set.\n const widthFit = useOverflowFit({\n enabled: collapseOnOverflow && expandBehavior !== 'scroll' && !inlineExpanded,\n itemCount: countCollapse.visible.length,\n itemsBeforeCollapse,\n itemsAfterCollapse,\n });\n\n const widthHiddenItems = useMemo(() => {\n if (!collapseOnOverflow || expandBehavior === 'scroll' || inlineExpanded) {\n return [] as ReadonlyArray<BreadcrumbItemData>;\n }\n return countCollapse.visible.filter((_, idx) => !widthFit.visibleIndices.has(idx));\n }, [collapseOnOverflow, expandBehavior, inlineExpanded, countCollapse.visible, widthFit.visibleIndices]);\n\n const allHiddenItems = useMemo<ReadonlyArray<BreadcrumbItemData>>(() => {\n if (inlineExpanded) {\n return [];\n }\n return [...countCollapse.hidden, ...widthHiddenItems];\n }, [countCollapse.hidden, widthHiddenItems, inlineExpanded]);\n\n const visibleItemsForRender = useMemo<ReadonlyArray<BreadcrumbItemData>>(() => {\n if (inlineExpanded) {\n return normalizedItems;\n }\n return countCollapse.visible.filter((_, idx) =>\n collapseOnOverflow && expandBehavior !== 'scroll' ? widthFit.visibleIndices.has(idx) : true\n );\n }, [\n countCollapse.visible,\n widthFit.visibleIndices,\n collapseOnOverflow,\n expandBehavior,\n inlineExpanded,\n normalizedItems,\n ]);\n\n // Where to insert the ellipsis. Heuristic: after `itemsBeforeCollapse`\n // visible items from the start (clamped to the visible length).\n const ellipsisInsertAt = useMemo(() => {\n if (inlineExpanded || allHiddenItems.length === 0) {\n return -1;\n }\n return Math.min(itemsBeforeCollapse, visibleItemsForRender.length);\n }, [allHiddenItems.length, inlineExpanded, visibleItemsForRender.length, itemsBeforeCollapse]);\n\n const renderedCells: ReactNode[] = [];\n const measurementCells: ReactNode[] = [];\n\n visibleItemsForRender.forEach((item, idx) => {\n if (idx === ellipsisInsertAt && allHiddenItems.length > 0) {\n renderedCells.push(\n <Fragment key=\"__ellipsis__\">\n <BreadcrumbEllipsisInternal\n ellipsisLabel={ellipsisLabel}\n expandLabel={expandLabel}\n expandBehavior={expandBehavior}\n hiddenItems={allHiddenItems}\n onExpandInline={() => setInlineExpanded(true)}\n />\n </Fragment>\n );\n renderedCells.push(\n <Fragment key=\"__sep_ellipsis__\">\n {renderSeparator(separator, {\n fromIndex: idx - 1,\n visibleCount: visibleItemsForRender.length + 1,\n dir,\n })}\n </Fragment>\n );\n }\n\n const itemKey = item.key ?? `item-${normalizedItems.indexOf(item)}`;\n renderedCells.push(\n <Fragment key={itemKey}>\n <BreadcrumbItemRenderer\n item={item}\n currentPageLabel={currentPageLabel}\n siblingMenuLabel={siblingMenuLabel}\n maxLabelLength={maxLabelLength}\n />\n </Fragment>\n );\n const isLast = idx === visibleItemsForRender.length - 1;\n if (!isLast) {\n renderedCells.push(\n <Fragment key={`sep-${itemKey}`}>\n {renderSeparator(separator, {\n fromIndex: idx,\n visibleCount: visibleItemsForRender.length,\n dir,\n })}\n </Fragment>\n );\n }\n });\n\n if (collapseOnOverflow && expandBehavior !== 'scroll') {\n countCollapse.visible.forEach((item, idx) => {\n const itemKey = item.key ?? `m-${idx}`;\n measurementCells.push(\n <View key={itemKey} onLayout={widthFit.onItemLayout(idx)}>\n <BreadcrumbItemRenderer\n item={item}\n currentPageLabel={currentPageLabel}\n siblingMenuLabel={siblingMenuLabel}\n maxLabelLength={maxLabelLength}\n />\n </View>\n );\n });\n measurementCells.push(\n <View key=\"__m_sep__\" onLayout={widthFit.onSeparatorLayout}>\n {renderSeparator(separator, {\n fromIndex: 0,\n visibleCount: countCollapse.visible.length,\n dir,\n })}\n </View>\n );\n measurementCells.push(\n <View key=\"__m_ellipsis__\" onLayout={widthFit.onEllipsisLayout}>\n <BreadcrumbEllipsisInternal\n ellipsisLabel={ellipsisLabel}\n expandLabel={expandLabel}\n expandBehavior=\"none\"\n hiddenItems={[]}\n onExpandInline={() => undefined}\n />\n </View>\n );\n }\n\n const list = (\n <View\n role=\"list\"\n accessibilityRole=\"list\"\n className={cn('flex-row items-center')}\n style={{ flexDirection: 'row', alignItems: 'center', flexShrink: 1, minWidth: 0 }}\n >\n {renderedCells}\n </View>\n );\n\n // When width-based collapse is on, the wrapper MUST measure the\n // available width — not its content's natural width. Without an\n // explicit `width: '100%'` (or `alignSelf: 'stretch'`) the wrapper\n // hugs its row of items on native, so `containerWidth` from\n // `onLayout` equals the items' total — and the algorithm\n // never sees an overflow. With `width: '100%'`, the wrapper fills\n // its parent's cross-axis (which is the row width in a typical\n // column-flex parent), giving us a real budget to compare against.\n const wrapperStyle: ViewStyle = {\n flexDirection: 'row',\n alignItems: 'center',\n direction: dir as ViewStyle['direction'],\n flexShrink: 1,\n minWidth: 0,\n ...(collapseOnOverflow && expandBehavior !== 'scroll' ? { width: '100%' } : null),\n // `overflow: 'hidden'` keeps the visible row from blowing past\n // its container before the first measurement settles. Without\n // it, native renders the natural-width row briefly on the first\n // paint, even though the JS layout reports the correct measured\n // width on the very next tick.\n ...(collapseOnOverflow ? { overflow: 'hidden' as ViewStyle['overflow'] } : null),\n };\n\n return (\n <View\n {...(testID !== undefined ? { testID } : {})}\n role=\"navigation\"\n aria-label={ariaLabel}\n accessible\n accessibilityLabel={ariaLabel}\n className={cn('flex-row items-center', className)}\n style={wrapperStyle}\n onLayout={collapseOnOverflow && expandBehavior !== 'scroll' ? widthFit.onContainerLayout : undefined}\n >\n {expandBehavior === 'scroll' ? (\n <ScrollView\n horizontal\n showsHorizontalScrollIndicator={false}\n contentContainerStyle={{ flexDirection: 'row', alignItems: 'center' }}\n style={{ flexGrow: 1 }}\n >\n {list}\n </ScrollView>\n ) : (\n list\n )}\n\n {/* Hidden measurement copy. Offscreen on both platforms. */}\n {collapseOnOverflow && expandBehavior !== 'scroll' ? (\n <View\n aria-hidden\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n style={{\n position: 'absolute',\n opacity: 0,\n flexDirection: 'row',\n alignItems: 'center',\n left: -99999,\n top: 0,\n // `pointerEvents` lives on the style object now —\n // the prop form is deprecated in RN 0.71+ / RN-Web\n // 0.20+ and emits a runtime warning every render.\n pointerEvents: 'none' as ViewStyle['pointerEvents'],\n }}\n >\n {measurementCells}\n </View>\n ) : null}\n </View>\n );\n};\n\n// =============================================================================\n// Item renderer (items-mode)\n// =============================================================================\n\ntype ItemRendererProps = {\n item: BreadcrumbItemData;\n currentPageLabel: string;\n siblingMenuLabel: string;\n maxLabelLength: number;\n};\n\nconst BreadcrumbItemRenderer = ({ item, currentPageLabel, siblingMenuLabel, maxLabelLength }: ItemRendererProps) => {\n const colors = useThemeColors();\n const Icon = item.icon;\n const isLink = !item.current && (item.href !== undefined || item.onSelect !== undefined);\n\n const effectiveMax = item.maxLabelLength ?? maxLabelLength;\n const renderLabel = (): ReactNode => {\n if (item.loading) {\n return (\n <View\n style={{\n backgroundColor: colors.semantic.background.subtle,\n borderRadius: px(colors.radius.sm),\n height: px(colors.fontSize.sm),\n width: 64,\n }}\n />\n );\n }\n if (typeof item.label === 'string' || typeof item.label === 'number') {\n const text = String(item.label);\n const truncated = effectiveMax > 0 ? truncateString(text, effectiveMax) : text;\n return (\n <RNText\n numberOfLines={1}\n ellipsizeMode=\"tail\"\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: item.current ? colors.semantic.text.default : colors.semantic.text.muted,\n fontWeight: item.current\n ? (colors.fontWeight.semibold as '600')\n : (colors.fontWeight.regular as '400'),\n }}\n >\n {truncated}\n </RNText>\n );\n }\n return item.label;\n };\n\n const inner = (\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n gap: px(colors.spacing['1']),\n }}\n >\n {Icon ? (\n <Icon size={14} color={item.current ? colors.semantic.text.default : colors.semantic.text.muted} />\n ) : null}\n {renderLabel()}\n </View>\n );\n\n if (item.current) {\n return (\n <View\n role=\"listitem\"\n accessibilityRole=\"text\"\n style={{ flexDirection: 'row', alignItems: 'center', paddingHorizontal: 4 }}\n >\n <RNText\n style={{\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n opacity: 0,\n }}\n >\n {currentPageLabel}:{' '}\n </RNText>\n <View aria-current=\"page\">{inner}</View>\n </View>\n );\n }\n\n if (item.siblings && item.siblings.length > 0) {\n return (\n <View role=\"listitem\" style={{ flexDirection: 'row', alignItems: 'center', paddingHorizontal: 4 }}>\n <BreadcrumbInteractive item={item}>{inner}</BreadcrumbInteractive>\n <BreadcrumbSiblingMenu item={item} siblingMenuLabel={siblingMenuLabel} />\n </View>\n );\n }\n\n if (isLink) {\n return (\n <View role=\"listitem\" style={{ flexDirection: 'row', alignItems: 'center', paddingHorizontal: 4 }}>\n <BreadcrumbInteractive item={item}>{inner}</BreadcrumbInteractive>\n </View>\n );\n }\n\n return (\n <View role=\"listitem\" style={{ flexDirection: 'row', alignItems: 'center', paddingHorizontal: 4 }}>\n {inner}\n </View>\n );\n};\n\nconst BreadcrumbInteractive = ({ item, children }: { item: BreadcrumbItemData; children: ReactNode }) => {\n const colors = useThemeColors();\n const handlePress = useCallback(() => {\n item.onSelect?.();\n }, [item]);\n\n if (Platform.OS === 'web' && item.href) {\n // When the consumer passes `onSelect`, treat it as the action and\n // suppress the default `<a>` navigation. This is the standard\n // pattern for \"link-styled button\" use-cases (router Links,\n // analytics-only handlers, demo pseudo-links).\n const handleClick = item.onSelect\n ? (event: { preventDefault: () => void }) => {\n event.preventDefault();\n item.onSelect?.();\n }\n : undefined;\n return (\n <a\n href={item.href}\n onClick={handleClick}\n style={{\n color: colors.semantic.interactive.primary,\n textDecoration: 'none',\n fontFamily: colors.fontFamily.body,\n }}\n >\n {children}\n </a>\n );\n }\n\n return (\n <Pressable onPress={handlePress} accessibilityRole=\"link\" role=\"link\">\n {children}\n </Pressable>\n );\n};\n\nconst BreadcrumbSiblingMenu = ({ item, siblingMenuLabel }: { item: BreadcrumbItemData; siblingMenuLabel: string }) => {\n const colors = useThemeColors();\n const siblings = item.siblings ?? [];\n return (\n <Popover>\n <Popover.Trigger asChild={false}>\n <View\n accessibilityLabel={siblingMenuLabel}\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 2,\n paddingVertical: 4,\n }}\n >\n <RNText\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n style={{ fontSize: 10, color: colors.semantic.text.muted }}\n >\n ▾\n </RNText>\n </View>\n </Popover.Trigger>\n <Popover.Content side=\"bottom\" align=\"start\">\n <View style={{ minWidth: 200, paddingVertical: 4 }}>\n {siblings.map((sib, idx) => (\n <SiblingRow key={sib.href ?? idx} sibling={sib} />\n ))}\n </View>\n </Popover.Content>\n </Popover>\n );\n};\n\nconst SiblingRow = ({ sibling }: { sibling: BreadcrumbSibling }) => {\n const colors = useThemeColors();\n const Icon = sibling.icon;\n const handlePress = useCallback(() => {\n sibling.onSelect?.();\n }, [sibling]);\n\n const inner = (\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n gap: px(colors.spacing['2']),\n paddingVertical: px(colors.spacing['2']),\n paddingHorizontal: px(colors.spacing['3']),\n opacity: sibling.disabled ? 0.5 : 1,\n }}\n >\n {Icon ? <Icon size={14} color={colors.semantic.text.muted} /> : null}\n {typeof sibling.label === 'string' || typeof sibling.label === 'number' ? (\n <RNText\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: colors.semantic.text.default,\n }}\n >\n {String(sibling.label)}\n </RNText>\n ) : (\n sibling.label\n )}\n </View>\n );\n\n if (Platform.OS === 'web' && sibling.href && !sibling.disabled) {\n const handleClick = sibling.onSelect\n ? (event: { preventDefault: () => void }) => {\n event.preventDefault();\n sibling.onSelect?.();\n }\n : undefined;\n return (\n <a href={sibling.href} onClick={handleClick} style={{ textDecoration: 'none', color: 'inherit' }}>\n {inner}\n </a>\n );\n }\n return (\n <Pressable onPress={sibling.disabled ? undefined : handlePress} accessibilityRole=\"menuitem\">\n {inner}\n </Pressable>\n );\n};\n\n// =============================================================================\n// Ellipsis (internal — used by the items-mode renderer)\n// =============================================================================\n\ntype EllipsisProps = {\n ellipsisLabel: string;\n expandLabel: string;\n expandBehavior: BreadcrumbExpandBehavior;\n hiddenItems: ReadonlyArray<BreadcrumbItemData>;\n onExpandInline: () => void;\n};\n\nconst BreadcrumbEllipsisInternal = ({\n ellipsisLabel,\n expandLabel,\n expandBehavior,\n hiddenItems,\n onExpandInline,\n}: EllipsisProps) => {\n const colors = useThemeColors();\n const renderDots = () => (\n <RNText\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: colors.semantic.text.muted,\n paddingHorizontal: 4,\n }}\n >\n …\n </RNText>\n );\n\n if (expandBehavior === 'none' || hiddenItems.length === 0) {\n return (\n <View\n accessibilityLabel={ellipsisLabel}\n aria-label={ellipsisLabel}\n style={{ flexDirection: 'row', alignItems: 'center', paddingHorizontal: 4 }}\n >\n {renderDots()}\n </View>\n );\n }\n\n if (expandBehavior === 'inline') {\n return (\n <Pressable\n onPress={onExpandInline}\n accessibilityRole=\"button\"\n role=\"button\"\n accessibilityLabel={expandLabel}\n aria-label={expandLabel}\n style={{ flexDirection: 'row', alignItems: 'center', paddingHorizontal: 4 }}\n >\n {renderDots()}\n </Pressable>\n );\n }\n\n // Menu mode: ellipsis triggers a popover with the hidden items.\n return (\n <Popover>\n <Popover.Trigger asChild={false}>\n <View\n accessibilityLabel={expandLabel}\n aria-label={expandLabel}\n style={{ flexDirection: 'row', alignItems: 'center', paddingHorizontal: 4 }}\n >\n {renderDots()}\n </View>\n </Popover.Trigger>\n <Popover.Content side=\"bottom\" align=\"start\">\n <View style={{ minWidth: 200, paddingVertical: 4 }}>\n {hiddenItems.map((it, idx) => {\n const sib: BreadcrumbSibling = { label: it.label };\n if (it.href !== undefined) {\n sib.href = it.href;\n }\n if (it.icon !== undefined) {\n sib.icon = it.icon;\n }\n if (it.onSelect !== undefined) {\n sib.onSelect = it.onSelect;\n }\n return (\n <SiblingRow\n key={typeof it.key === 'string' || typeof it.key === 'number' ? it.key : idx}\n sibling={sib}\n />\n );\n })}\n </View>\n </Popover.Content>\n </Popover>\n );\n};\n\n// =============================================================================\n// Compound subcomponents\n// =============================================================================\n\nexport type BreadcrumbListProps = {\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\nexport const BreadcrumbList = ({ children, className, testID }: BreadcrumbListProps) => {\n useBreadcrumbContext('Breadcrumb.List');\n // Auto-insert separators between consecutive `Breadcrumb.Item`s\n // unless the user provided their own. Lets users write the terse form:\n // <List><Item/><Item/><Item/></List>\n const childArray = Children.toArray(children);\n const out: ReactNode[] = [];\n let lastWasItem = false;\n childArray.forEach((child, idx) => {\n const kind = getCompoundKind(child);\n if (kind === 'item') {\n if (lastWasItem) {\n out.push(\n // biome-ignore lint/suspicious/noArrayIndexKey: separator position is deterministic from its preceding item index\n <Fragment key={`__autosep_${idx}`}>\n <BreadcrumbSeparator />\n </Fragment>\n );\n }\n out.push(child);\n lastWasItem = true;\n } else {\n out.push(child);\n lastWasItem = false;\n }\n });\n\n return (\n <View\n {...(testID !== undefined ? { testID } : {})}\n role=\"list\"\n accessibilityRole=\"list\"\n className={cn('flex-row items-center', className)}\n style={{ flexDirection: 'row', alignItems: 'center', flexShrink: 1, minWidth: 0 }}\n >\n {out}\n </View>\n );\n};\n\nexport type BreadcrumbItemProps = {\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\nexport const BreadcrumbItem = ({ children, className, testID }: BreadcrumbItemProps) => {\n useBreadcrumbContext('Breadcrumb.Item');\n return (\n <View\n {...(testID !== undefined ? { testID } : {})}\n role=\"listitem\"\n accessibilityRole=\"text\"\n className={cn('flex-row items-center', className)}\n style={{ flexDirection: 'row', alignItems: 'center', paddingHorizontal: 4 }}\n >\n {children}\n </View>\n );\n};\ntagComponent(BreadcrumbItem, 'item');\n\nexport type BreadcrumbLinkProps = {\n href?: string;\n onPress?: () => void;\n asChild?: boolean;\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\nexport const BreadcrumbLink = ({ href, onPress, asChild, children, className, testID }: BreadcrumbLinkProps) => {\n const colors = useThemeColors();\n\n if (asChild) {\n return (\n <Slot\n {...(testID !== undefined ? { 'data-testid': testID } : {})}\n {...(className !== undefined ? { className } : {})}\n >\n {children}\n </Slot>\n );\n }\n\n if (Platform.OS === 'web' && href) {\n // `onPress` overrides the default `<a>` navigation — same pattern\n // as the items-mode `onSelect`. Lets consumers use `<Link>` from\n // a router or build pseudo-links for demos.\n const handleClick = onPress\n ? (event: { preventDefault: () => void }) => {\n event.preventDefault();\n onPress?.();\n }\n : undefined;\n return (\n <a\n href={href}\n onClick={handleClick}\n {...(testID !== undefined ? { 'data-testid': testID } : {})}\n {...(className !== undefined ? { className } : {})}\n style={{\n color: colors.semantic.interactive.primary,\n textDecoration: 'none',\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n }}\n >\n {typeof children === 'string' || typeof children === 'number' ? (\n <RNText\n style={{\n color: colors.semantic.interactive.primary,\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n }}\n >\n {children}\n </RNText>\n ) : (\n children\n )}\n </a>\n );\n }\n\n return (\n <Pressable onPress={onPress} accessibilityRole=\"link\" role=\"link\" {...(testID !== undefined ? { testID } : {})}>\n {typeof children === 'string' || typeof children === 'number' ? (\n <RNText\n style={{\n color: colors.semantic.interactive.primary,\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n }}\n >\n {children}\n </RNText>\n ) : (\n children\n )}\n </Pressable>\n );\n};\n\nexport type BreadcrumbPageProps = {\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\nexport const BreadcrumbPage = ({ children, className, testID }: BreadcrumbPageProps) => {\n const ctx = useBreadcrumbContext('Breadcrumb.Page');\n const colors = useThemeColors();\n return (\n <View\n {...(testID !== undefined ? { testID } : {})}\n accessibilityRole=\"text\"\n aria-current=\"page\"\n className={cn('flex-row items-center', className)}\n style={{ flexDirection: 'row', alignItems: 'center' }}\n >\n <RNText\n style={{\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n opacity: 0,\n }}\n >\n {ctx.currentPageLabel}:{' '}\n </RNText>\n {typeof children === 'string' || typeof children === 'number' ? (\n <RNText\n numberOfLines={1}\n style={{\n color: colors.semantic.text.default,\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n fontWeight: colors.fontWeight.semibold as '600',\n }}\n >\n {children}\n </RNText>\n ) : (\n children\n )}\n </View>\n );\n};\n\nexport type BreadcrumbSeparatorProps = {\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\nexport const BreadcrumbSeparator = ({ children, className, testID }: BreadcrumbSeparatorProps) => {\n const ctx = useBreadcrumbContext('Breadcrumb.Separator');\n const node = children ?? renderSeparator(ctx.separator, { fromIndex: 0, visibleCount: 0, dir: ctx.dir });\n return (\n <View\n {...(testID !== undefined ? { testID } : {})}\n aria-hidden\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n role=\"presentation\"\n className={cn('flex-row items-center', className)}\n style={{ flexDirection: 'row', alignItems: 'center', paddingHorizontal: 2 }}\n >\n {node}\n </View>\n );\n};\ntagComponent(BreadcrumbSeparator, 'separator');\n\nexport type BreadcrumbEllipsisProps = {\n ellipsisLabel?: string;\n className?: string;\n testID?: string;\n};\n\nexport const BreadcrumbEllipsis = ({ ellipsisLabel, className, testID }: BreadcrumbEllipsisProps) => {\n useBreadcrumbContext('Breadcrumb.Ellipsis');\n const { t } = useTranslation();\n const colors = useThemeColors();\n const label = ellipsisLabel ?? t('breadcrumb.ellipsisLabel', { defaultValue: 'More' });\n return (\n <View\n {...(testID !== undefined ? { testID } : {})}\n accessibilityLabel={label}\n aria-label={label}\n className={cn('flex-row items-center', className)}\n style={{ flexDirection: 'row', alignItems: 'center', paddingHorizontal: 4 }}\n >\n <RNText\n style={{\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n color: colors.semantic.text.muted,\n }}\n >\n …\n </RNText>\n </View>\n );\n};\n\n// =============================================================================\n// Public surface\n// =============================================================================\n\nexport const Breadcrumb = Object.assign(BreadcrumbRoot, {\n List: BreadcrumbList,\n Item: BreadcrumbItem,\n Link: BreadcrumbLink,\n Page: BreadcrumbPage,\n Separator: BreadcrumbSeparator,\n Ellipsis: BreadcrumbEllipsis,\n});\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Popover, usePopoverContext } from './chunk-
|
|
1
|
+
import { Popover, usePopoverContext } from './chunk-PZS4A4VQ.js';
|
|
2
2
|
import { Slot } from './chunk-ZIBNLXIV.js';
|
|
3
|
-
import { cn } from './chunk-CHXHRJNZ.js';
|
|
4
3
|
import { px } from './chunk-5A2QOOVN.js';
|
|
4
|
+
import { cn } from './chunk-CHXHRJNZ.js';
|
|
5
5
|
import { useThemeColors } from './chunk-R5JMDDCB.js';
|
|
6
6
|
import { __name } from './chunk-WCQVDF3K.js';
|
|
7
7
|
import { createContext, useContext, useRef, useEffect, useCallback, useState, isValidElement } from 'react';
|
|
@@ -299,5 +299,5 @@ var DropdownMenu = Object.assign(DropdownMenuRoot, {
|
|
|
299
299
|
});
|
|
300
300
|
|
|
301
301
|
export { DropdownMenu, MenuContent, MenuContextProvider, MenuItem, MenuLabel, MenuSeparator };
|
|
302
|
-
//# sourceMappingURL=chunk-
|
|
303
|
-
//# sourceMappingURL=chunk-
|
|
302
|
+
//# sourceMappingURL=chunk-RUWD35UI.js.map
|
|
303
|
+
//# sourceMappingURL=chunk-RUWD35UI.js.map
|