@salt-ds/lab 1.0.0-alpha.101 → 1.0.0-alpha.102

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.
Files changed (125) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/css/salt-lab.css +10 -241
  3. package/dist-cjs/color-chooser/Swatch.css.js +1 -1
  4. package/dist-cjs/index.js +0 -12
  5. package/dist-cjs/index.js.map +1 -1
  6. package/dist-cjs/list/List.css.js +1 -1
  7. package/dist-cjs/list-deprecated/List.css.js +1 -1
  8. package/dist-cjs/list-next/ListNext.css.js +1 -1
  9. package/dist-cjs/query-input/QueryInput.css.js +1 -1
  10. package/dist-cjs/tabs/TabActivationIndicator.css.js +1 -1
  11. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.css.js +1 -1
  12. package/dist-es/color-chooser/Swatch.css.js +1 -1
  13. package/dist-es/index.js +0 -6
  14. package/dist-es/index.js.map +1 -1
  15. package/dist-es/list/List.css.js +1 -1
  16. package/dist-es/list-deprecated/List.css.js +1 -1
  17. package/dist-es/list-next/ListNext.css.js +1 -1
  18. package/dist-es/query-input/QueryInput.css.js +1 -1
  19. package/dist-es/tabs/TabActivationIndicator.css.js +1 -1
  20. package/dist-es/toolbar/overflow-panel/OverflowPanel.css.js +1 -1
  21. package/dist-types/button-bar/internal/DescendantContext.d.ts +1 -1
  22. package/dist-types/combo-box-deprecated/internal/MultiSelectComboBox.d.ts +1 -1
  23. package/dist-types/common-hooks/collectionProvider.d.ts +1 -1
  24. package/dist-types/contact-details/MailLinkComponent.d.ts +1 -1
  25. package/dist-types/form-field-legacy/FormActivationIndicator.d.ts +1 -1
  26. package/dist-types/form-field-legacy/FormHelperText.d.ts +1 -1
  27. package/dist-types/form-field-legacy/FormLabel.d.ts +1 -1
  28. package/dist-types/form-field-legacy/NecessityIndicator.d.ts +1 -1
  29. package/dist-types/form-field-legacy/StatusIndicator.d.ts +1 -1
  30. package/dist-types/index.d.ts +0 -2
  31. package/dist-types/list-deprecated/internal/DescendantContext.d.ts +1 -1
  32. package/dist-types/list-deprecated/internal/Highlighter.d.ts +1 -1
  33. package/dist-types/query-input/internal/CategoryList.d.ts +1 -1
  34. package/dist-types/query-input/internal/SearchList.d.ts +1 -1
  35. package/dist-types/query-input/internal/ValueList.d.ts +1 -1
  36. package/dist-types/query-input/internal/ValueSelector.d.ts +1 -1
  37. package/dist-types/responsive/overflowUtils.d.ts +1 -1
  38. package/dist-types/tabs/TabActivationIndicator.d.ts +1 -1
  39. package/dist-types/tokenized-input/internal/InputPill.d.ts +1 -1
  40. package/dist-types/tokenized-input-next/internal/InputPill.d.ts +1 -1
  41. package/dist-types/toolbar/Tooltray.d.ts +1 -1
  42. package/package.json +2 -2
  43. package/dist-cjs/breadcrumbs/Breadcrumb.css.js +0 -6
  44. package/dist-cjs/breadcrumbs/Breadcrumb.css.js.map +0 -1
  45. package/dist-cjs/breadcrumbs/Breadcrumb.js +0 -90
  46. package/dist-cjs/breadcrumbs/Breadcrumb.js.map +0 -1
  47. package/dist-cjs/breadcrumbs/Breadcrumbs.css.js +0 -6
  48. package/dist-cjs/breadcrumbs/Breadcrumbs.css.js.map +0 -1
  49. package/dist-cjs/breadcrumbs/Breadcrumbs.js +0 -140
  50. package/dist-cjs/breadcrumbs/Breadcrumbs.js.map +0 -1
  51. package/dist-cjs/breadcrumbs/internal/BreadcrumbsCollapsed.js +0 -63
  52. package/dist-cjs/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +0 -1
  53. package/dist-cjs/breadcrumbs/internal/BreadcrumbsContext.js +0 -20
  54. package/dist-cjs/breadcrumbs/internal/BreadcrumbsContext.js.map +0 -1
  55. package/dist-cjs/breadcrumbs/internal/BreadcrumbsSeparator.js +0 -9
  56. package/dist-cjs/breadcrumbs/internal/BreadcrumbsSeparator.js.map +0 -1
  57. package/dist-cjs/breadcrumbs/internal/useFocusMenuRemount.js +0 -22
  58. package/dist-cjs/breadcrumbs/internal/useFocusMenuRemount.js.map +0 -1
  59. package/dist-cjs/breadcrumbs-next/BreadcrumbNext.css.js +0 -6
  60. package/dist-cjs/breadcrumbs-next/BreadcrumbNext.css.js.map +0 -1
  61. package/dist-cjs/breadcrumbs-next/BreadcrumbNext.js +0 -99
  62. package/dist-cjs/breadcrumbs-next/BreadcrumbNext.js.map +0 -1
  63. package/dist-cjs/breadcrumbs-next/BreadcrumbNextLabel.js +0 -21
  64. package/dist-cjs/breadcrumbs-next/BreadcrumbNextLabel.js.map +0 -1
  65. package/dist-cjs/breadcrumbs-next/BreadcrumbNextTrigger.js +0 -48
  66. package/dist-cjs/breadcrumbs-next/BreadcrumbNextTrigger.js.map +0 -1
  67. package/dist-cjs/breadcrumbs-next/BreadcrumbsNext.css.js +0 -6
  68. package/dist-cjs/breadcrumbs-next/BreadcrumbsNext.css.js.map +0 -1
  69. package/dist-cjs/breadcrumbs-next/BreadcrumbsNext.js +0 -146
  70. package/dist-cjs/breadcrumbs-next/BreadcrumbsNext.js.map +0 -1
  71. package/dist-cjs/breadcrumbs-next/internal/BreadcrumbNextContext.js +0 -12
  72. package/dist-cjs/breadcrumbs-next/internal/BreadcrumbNextContext.js.map +0 -1
  73. package/dist-cjs/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.js +0 -236
  74. package/dist-cjs/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.js.map +0 -1
  75. package/dist-cjs/breadcrumbs-next/internal/breadcrumbItems.js +0 -21
  76. package/dist-cjs/breadcrumbs-next/internal/breadcrumbItems.js.map +0 -1
  77. package/dist-es/breadcrumbs/Breadcrumb.css.js +0 -4
  78. package/dist-es/breadcrumbs/Breadcrumb.css.js.map +0 -1
  79. package/dist-es/breadcrumbs/Breadcrumb.js +0 -88
  80. package/dist-es/breadcrumbs/Breadcrumb.js.map +0 -1
  81. package/dist-es/breadcrumbs/Breadcrumbs.css.js +0 -4
  82. package/dist-es/breadcrumbs/Breadcrumbs.css.js.map +0 -1
  83. package/dist-es/breadcrumbs/Breadcrumbs.js +0 -138
  84. package/dist-es/breadcrumbs/Breadcrumbs.js.map +0 -1
  85. package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js +0 -61
  86. package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +0 -1
  87. package/dist-es/breadcrumbs/internal/BreadcrumbsContext.js +0 -17
  88. package/dist-es/breadcrumbs/internal/BreadcrumbsContext.js.map +0 -1
  89. package/dist-es/breadcrumbs/internal/BreadcrumbsSeparator.js +0 -7
  90. package/dist-es/breadcrumbs/internal/BreadcrumbsSeparator.js.map +0 -1
  91. package/dist-es/breadcrumbs/internal/useFocusMenuRemount.js +0 -20
  92. package/dist-es/breadcrumbs/internal/useFocusMenuRemount.js.map +0 -1
  93. package/dist-es/breadcrumbs-next/BreadcrumbNext.css.js +0 -4
  94. package/dist-es/breadcrumbs-next/BreadcrumbNext.css.js.map +0 -1
  95. package/dist-es/breadcrumbs-next/BreadcrumbNext.js +0 -97
  96. package/dist-es/breadcrumbs-next/BreadcrumbNext.js.map +0 -1
  97. package/dist-es/breadcrumbs-next/BreadcrumbNextLabel.js +0 -19
  98. package/dist-es/breadcrumbs-next/BreadcrumbNextLabel.js.map +0 -1
  99. package/dist-es/breadcrumbs-next/BreadcrumbNextTrigger.js +0 -46
  100. package/dist-es/breadcrumbs-next/BreadcrumbNextTrigger.js.map +0 -1
  101. package/dist-es/breadcrumbs-next/BreadcrumbsNext.css.js +0 -4
  102. package/dist-es/breadcrumbs-next/BreadcrumbsNext.css.js.map +0 -1
  103. package/dist-es/breadcrumbs-next/BreadcrumbsNext.js +0 -144
  104. package/dist-es/breadcrumbs-next/BreadcrumbsNext.js.map +0 -1
  105. package/dist-es/breadcrumbs-next/internal/BreadcrumbNextContext.js +0 -9
  106. package/dist-es/breadcrumbs-next/internal/BreadcrumbNextContext.js.map +0 -1
  107. package/dist-es/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.js +0 -234
  108. package/dist-es/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.js.map +0 -1
  109. package/dist-es/breadcrumbs-next/internal/breadcrumbItems.js +0 -19
  110. package/dist-es/breadcrumbs-next/internal/breadcrumbItems.js.map +0 -1
  111. package/dist-types/breadcrumbs/Breadcrumb.d.ts +0 -18
  112. package/dist-types/breadcrumbs/Breadcrumbs.d.ts +0 -17
  113. package/dist-types/breadcrumbs/index.d.ts +0 -2
  114. package/dist-types/breadcrumbs/internal/BreadcrumbsCollapsed.d.ts +0 -10
  115. package/dist-types/breadcrumbs/internal/BreadcrumbsContext.d.ts +0 -8
  116. package/dist-types/breadcrumbs/internal/BreadcrumbsSeparator.d.ts +0 -2
  117. package/dist-types/breadcrumbs/internal/useFocusMenuRemount.d.ts +0 -4
  118. package/dist-types/breadcrumbs-next/BreadcrumbNext.d.ts +0 -23
  119. package/dist-types/breadcrumbs-next/BreadcrumbNextLabel.d.ts +0 -4
  120. package/dist-types/breadcrumbs-next/BreadcrumbNextTrigger.d.ts +0 -8
  121. package/dist-types/breadcrumbs-next/BreadcrumbsNext.d.ts +0 -32
  122. package/dist-types/breadcrumbs-next/index.d.ts +0 -4
  123. package/dist-types/breadcrumbs-next/internal/BreadcrumbNextContext.d.ts +0 -14
  124. package/dist-types/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.d.ts +0 -9
  125. package/dist-types/breadcrumbs-next/internal/breadcrumbItems.d.ts +0 -9
@@ -1 +0,0 @@
1
- {"version":3,"file":"BreadcrumbOverflowDisclosure.js","sources":["../src/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.tsx"],"sourcesContent":["import {\n flip,\n offset,\n shift,\n size,\n useClick,\n useDismiss,\n useInteractions,\n} from \"@floating-ui/react\";\nimport {\n Button,\n makePrefixer,\n type RenderPropsType,\n useFloatingComponent,\n useFloatingUI,\n useForkRef,\n useId,\n} from \"@salt-ds/core\";\nimport { OverflowMenuIcon } from \"@salt-ds/icons\";\nimport { useWindow } from \"@salt-ds/window\";\nimport {\n type FocusEvent,\n type KeyboardEvent,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport { BreadcrumbNextContext } from \"./BreadcrumbNextContext\";\nimport type { NormalizedBreadcrumb } from \"./breadcrumbItems\";\n\nconst withBaseName = makePrefixer(\"saltBreadcrumbsNext\");\n\ninterface BreadcrumbOverflowDisclosureProps {\n currentIndex: number;\n items: NormalizedBreadcrumb[];\n render?: RenderPropsType[\"render\"];\n}\n\nexport function BreadcrumbOverflowDisclosure({\n currentIndex,\n items,\n render,\n}: BreadcrumbOverflowDisclosureProps) {\n const [open, setOpen] = useState(false);\n const targetWindow = useWindow();\n const itemElements = useRef(new Map<number, HTMLAnchorElement>());\n const triggerRef = useRef<HTMLButtonElement>(null);\n const disclosureId = useId();\n const { Component: FloatingComponent } = useFloatingComponent();\n\n const focusTrigger = useCallback(() => {\n targetWindow?.requestAnimationFrame(() => {\n triggerRef.current?.focus({ preventScroll: true });\n });\n }, [targetWindow]);\n\n const getFocusableItems = useCallback(\n () =>\n items\n .map((_, index) => itemElements.current.get(index))\n .filter((item): item is HTMLAnchorElement => item !== undefined),\n [items],\n );\n\n const focusItem = useCallback(\n (position: \"first\" | \"last\") => {\n const focusableItems = getFocusableItems();\n const item =\n position === \"first\"\n ? focusableItems[0]\n : focusableItems[focusableItems.length - 1];\n\n item?.focus({ preventScroll: true });\n return item !== undefined;\n },\n [getFocusableItems],\n );\n\n const focusItemByOffset = useCallback(\n (offset: number) => {\n const focusableItems = getFocusableItems();\n const activeIndex = focusableItems.indexOf(\n targetWindow?.document.activeElement as HTMLAnchorElement,\n );\n\n if (activeIndex === -1) {\n return focusItem(offset > 0 ? \"first\" : \"last\");\n }\n\n const nextIndex = Math.min(\n Math.max(activeIndex + offset, 0),\n focusableItems.length - 1,\n );\n\n focusableItems[nextIndex]?.focus({ preventScroll: true });\n return focusableItems[nextIndex] !== undefined;\n },\n [focusItem, getFocusableItems, targetWindow],\n );\n\n const { context, elements, refs, strategy, x, y } = useFloatingUI({\n open,\n onOpenChange(nextOpen, _event, reason) {\n setOpen(nextOpen);\n\n if (!nextOpen && reason === \"escape-key\") {\n focusTrigger();\n }\n },\n placement: \"bottom-start\",\n middleware: [\n offset(1),\n size({\n apply({ availableHeight, elements }) {\n Object.assign(elements.floating.style, {\n maxHeight: `${availableHeight}px`,\n });\n },\n }),\n flip(),\n shift({\n padding: 8,\n }),\n ],\n });\n\n const { getFloatingProps, getReferenceProps } = useInteractions([\n useClick(context),\n useDismiss(context),\n ]);\n const handleTriggerRef = useForkRef<HTMLButtonElement>(\n triggerRef,\n refs.setReference,\n );\n\n const handleTriggerKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (open && (event.key === \"ArrowDown\" || event.key === \"ArrowRight\")) {\n event.preventDefault();\n focusItem(\"first\");\n return;\n }\n\n if (open && (event.key === \"ArrowUp\" || event.key === \"ArrowLeft\")) {\n event.preventDefault();\n focusItem(\"last\");\n return;\n }\n\n if (event.key === \"Tab\" && open && !event.shiftKey) {\n if (focusItem(\"first\")) {\n event.preventDefault();\n }\n return;\n }\n };\n\n const handleTriggerBlur = (event: FocusEvent<HTMLButtonElement>) => {\n const nextFocusedElement = event.relatedTarget as Node | null;\n\n if (nextFocusedElement && elements.floating?.contains(nextFocusedElement)) {\n return;\n }\n\n setOpen(false);\n };\n\n const handleDisclosureKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"Tab\") {\n const focusableItems = getFocusableItems();\n const activeIndex = focusableItems.indexOf(\n targetWindow?.document.activeElement as HTMLAnchorElement,\n );\n const shouldReturnToTrigger = event.shiftKey\n ? activeIndex === 0\n : activeIndex === focusableItems.length - 1;\n\n if (shouldReturnToTrigger) {\n event.preventDefault();\n setOpen(false);\n focusTrigger();\n }\n\n return;\n }\n\n if (event.key === \"ArrowDown\" || event.key === \"ArrowRight\") {\n event.preventDefault();\n focusItemByOffset(1);\n return;\n }\n\n if (event.key === \"ArrowUp\" || event.key === \"ArrowLeft\") {\n event.preventDefault();\n focusItemByOffset(-1);\n return;\n }\n\n if (event.key === \"Home\") {\n event.preventDefault();\n focusItem(\"first\");\n return;\n }\n\n if (event.key === \"End\") {\n event.preventDefault();\n focusItem(\"last\");\n }\n };\n\n const handleDisclosureBlur = (event: FocusEvent<HTMLDivElement>) => {\n const nextFocusedElement = event.relatedTarget as Node | null;\n\n if (\n nextFocusedElement &&\n (event.currentTarget.contains(nextFocusedElement) ||\n triggerRef.current?.contains(nextFocusedElement))\n ) {\n return;\n }\n\n setOpen(false);\n };\n\n return (\n <>\n <Button\n aria-controls={disclosureId}\n aria-expanded={open}\n aria-label=\"Additional breadcrumbs\"\n appearance=\"transparent\"\n className={withBaseName(\"collapseButton\")}\n ref={handleTriggerRef}\n {...getReferenceProps({\n onBlur: handleTriggerBlur,\n onKeyDown: handleTriggerKeyDown,\n })}\n >\n <OverflowMenuIcon aria-hidden />\n </Button>\n <FloatingComponent\n className={withBaseName(\"disclosure\")}\n focusManagerProps={\n context\n ? {\n closeOnFocusOut: true,\n context,\n initialFocus: -1,\n modal: false,\n returnFocus: false,\n }\n : undefined\n }\n height={elements.floating?.offsetHeight}\n left={x ?? 0}\n open={open}\n position={strategy}\n ref={refs.setFloating}\n top={y ?? 0}\n width={elements.floating?.offsetWidth}\n {...getFloatingProps({\n id: disclosureId,\n onBlur: handleDisclosureBlur,\n onKeyDown: handleDisclosureKeyDown,\n })}\n >\n <ol\n aria-label=\"Hidden breadcrumb levels\"\n className={withBaseName(\"disclosureList\")}\n >\n {items.map((item, index) => (\n <BreadcrumbNextContext.Provider\n key={item.key}\n value={{\n current: item.index === currentIndex,\n onNavigate: () => setOpen(false),\n placement: \"disclosure\",\n render,\n showSeparator: false,\n triggerRef: (element) => {\n // Placeholder anchors (no href) are not focusable, so only\n // navigable items take part in disclosure focus movement.\n if (\n element?.tagName === \"A\" &&\n element.hasAttribute(\"href\")\n ) {\n itemElements.current.set(index, element);\n } else {\n itemElements.current.delete(index);\n }\n },\n }}\n >\n {item.element}\n </BreadcrumbNextContext.Provider>\n ))}\n </ol>\n </FloatingComponent>\n </>\n );\n}\n"],"names":["makePrefixer","useState","useWindow","useRef","useId","useFloatingComponent","useCallback","_a","offset","useFloatingUI","size","elements","flip","shift","useInteractions","useClick","useDismiss","useForkRef","jsxs","Fragment","jsx","Button","OverflowMenuIcon","BreadcrumbNextContext"],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- 'use strict';
2
-
3
- var react = require('react');
4
-
5
- function isFragmentElement(child) {
6
- return react.isValidElement(child) && child.type === react.Fragment;
7
- }
8
- function flattenBreadcrumbItems(children) {
9
- const flattenedChildren = [];
10
- react.Children.forEach(children, (child) => {
11
- if (isFragmentElement(child)) {
12
- flattenedChildren.push(...flattenBreadcrumbItems(child.props.children));
13
- } else if (child !== null && child !== void 0 && typeof child !== "boolean") {
14
- flattenedChildren.push(child);
15
- }
16
- });
17
- return flattenedChildren;
18
- }
19
-
20
- exports.flattenBreadcrumbItems = flattenBreadcrumbItems;
21
- //# sourceMappingURL=breadcrumbItems.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"breadcrumbItems.js","sources":["../src/breadcrumbs-next/internal/breadcrumbItems.ts"],"sourcesContent":["import {\n Children,\n Fragment,\n isValidElement,\n type Key,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport type { BreadcrumbNextProps } from \"../BreadcrumbNext\";\n\nexport interface NormalizedBreadcrumb {\n element: ReactElement<BreadcrumbNextProps>;\n index: number;\n key: Key;\n props: BreadcrumbNextProps;\n}\n\nfunction isFragmentElement(\n child: ReactNode,\n): child is ReactElement<{ children?: ReactNode }> {\n return (\n isValidElement<{ children?: ReactNode }>(child) && child.type === Fragment\n );\n}\n\nexport function flattenBreadcrumbItems(children: ReactNode): ReactNode[] {\n const flattenedChildren: ReactNode[] = [];\n\n Children.forEach(children, (child) => {\n if (isFragmentElement(child)) {\n flattenedChildren.push(...flattenBreadcrumbItems(child.props.children));\n } else if (\n child !== null &&\n child !== undefined &&\n typeof child !== \"boolean\"\n ) {\n flattenedChildren.push(child);\n }\n });\n\n return flattenedChildren;\n}\n"],"names":["isValidElement","Fragment","Children"],"mappings":";;;;AAiBA,SAAS,kBACP,KAAA,EACiD;AACjD,EAAA,OACEA,oBAAA,CAAyC,KAAK,CAAA,IAAK,KAAA,CAAM,IAAA,KAASC,cAAA;AAEtE;AAEO,SAAS,uBAAuB,QAAA,EAAkC;AACvE,EAAA,MAAM,oBAAiC,EAAC;AAExC,EAAAC,cAAA,CAAS,OAAA,CAAQ,QAAA,EAAU,CAAC,KAAA,KAAU;AACpC,IAAA,IAAI,iBAAA,CAAkB,KAAK,CAAA,EAAG;AAC5B,MAAA,iBAAA,CAAkB,KAAK,GAAG,sBAAA,CAAuB,KAAA,CAAM,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAA,IACxE,WACE,KAAA,KAAU,IAAA,IACV,UAAU,MAAA,IACV,OAAO,UAAU,SAAA,EACjB;AACA,MAAA,iBAAA,CAAkB,KAAK,KAAK,CAAA;AAAA,IAC9B;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO,iBAAA;AACT;;;;"}
@@ -1,4 +0,0 @@
1
- var css_248z = ".saltBreadcrumb {\n --breadcrumbs-crumb-color: var(--saltBreadcrumbs-crumb-color, var(--salt-actionable-primary-foreground));\n --breadcrumbs-crumb-color-hover: var(--saltBreadcrumbs-crumb-color-hover, var(--salt-actionable-primary-foreground-hover));\n --breadcrumbs-crumb-color-active: var(--saltBreadcrumbs-crumb-color-active, var(--salt-actionable-primary-foreground-active));\n --breadcrumbs-crumb-icon-color: var(--saltBreadcrumbs-crumb-icon-color, var(--breadcrumbs-crumb-color));\n --breadcrumbs-crumb-marginLeft: 0px;\n}\n\n.saltBreadcrumb {\n padding: 0px;\n}\n\n.saltBreadcrumb-regular {\n display: flex;\n gap: calc(var(--salt-size-unit) / 2);\n align-items: center;\n color: var(--breadcrumbs-crumb-color);\n}\n\n.saltBreadcrumb-regular:visited {\n color: currentColor;\n}\n\n.saltBreadcrumb-regular:visited .saltBreadcrumb-icon {\n color: currentColor;\n}\n\n.saltBreadcrumb-regular:hover {\n color: var(--breadcrumbs-crumb-color-hover);\n}\n\n.saltBreadcrumb-regular:hover .saltBreadcrumb-icon {\n color: var(--breadcrumbs-crumb-color-hover);\n}\n\n.saltBreadcrumb-regular:active {\n color: var(--breadcrumbs-crumb-color-active);\n}\n\n.saltBreadcrumb-regular:active .saltBreadcrumb-icon {\n color: var(--breadcrumbs-crumb-color-active);\n}\n\n.saltBreadcrumb-currentLevel {\n color: var(--breadcrumbs-crumb-color);\n}\n\n.saltBreadcrumb-icon {\n color: var(--breadcrumbs-crumb-icon-color);\n margin-left: var(--saltBreadcrumbs-crumb-marginLeft, var(--breadcrumbs-crumb-marginLeft));\n}\n\n.saltBreadcrumb-justifyContentCenter {\n justify-content: center;\n}\n\n.saltBreadcrumb-text {\n text-decoration: underline;\n}\n";
2
-
3
- export { css_248z as default };
4
- //# sourceMappingURL=Breadcrumb.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Breadcrumb.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,88 +0,0 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { makePrefixer, Text, Link } from '@salt-ds/core';
3
- import { useComponentCssInjection } from '@salt-ds/styles';
4
- import { useWindow } from '@salt-ds/window';
5
- import { clsx } from 'clsx';
6
- import { forwardRef, Children } from 'react';
7
- import css_248z from './Breadcrumb.css.js';
8
- import { useBreadcrumbsContext } from './internal/BreadcrumbsContext.js';
9
-
10
- const withBaseName = makePrefixer("saltBreadcrumb");
11
- const Breadcrumb = forwardRef(
12
- function Breadcrumb2({
13
- children,
14
- ContainerProps = {},
15
- tooltipText,
16
- tooltipProps,
17
- isCurrentLevel,
18
- onItemClick,
19
- overflowLabel,
20
- maxWidth,
21
- Icon,
22
- minWidth,
23
- className,
24
- ...props
25
- }, ref) {
26
- const targetWindow = useWindow();
27
- useComponentCssInjection({
28
- testId: "salt-breadcrumb",
29
- css: css_248z,
30
- window: targetWindow
31
- });
32
- const { itemsMaxWidth, itemsMinWidth, liClass } = useBreadcrumbsContext();
33
- const hasChildren = Children.count(children) !== 0;
34
- const hasOnlyIcon = Icon && !hasChildren;
35
- const getDefaultBreadcrumb = () => isCurrentLevel ? /* @__PURE__ */ jsx(
36
- Text,
37
- {
38
- maxRows: 1,
39
- className: clsx(
40
- withBaseName(),
41
- className,
42
- withBaseName("currentLevel")
43
- ),
44
- styleAs: "label",
45
- children
46
- }
47
- ) : /* @__PURE__ */ jsxs(
48
- "div",
49
- {
50
- className: clsx(
51
- withBaseName(),
52
- className,
53
- {
54
- [withBaseName("justifyContentCenter")]: hasOnlyIcon
55
- },
56
- withBaseName("regular")
57
- ),
58
- children: [
59
- Icon && /* @__PURE__ */ jsx(Icon, { className: withBaseName("icon") }),
60
- hasChildren && /* @__PURE__ */ jsx(Link, { maxRows: 1, styleAs: "label", ...props, children })
61
- ]
62
- }
63
- );
64
- const content = getDefaultBreadcrumb();
65
- const {
66
- style: containerStyle,
67
- className: containerClassName,
68
- ...containerPropsRest
69
- } = ContainerProps;
70
- return /* @__PURE__ */ jsx(
71
- "li",
72
- {
73
- ref,
74
- style: {
75
- ...containerStyle,
76
- minWidth: minWidth ?? itemsMinWidth,
77
- maxWidth: maxWidth ?? itemsMaxWidth
78
- },
79
- className: clsx(liClass, containerClassName),
80
- ...containerPropsRest,
81
- children: content
82
- }
83
- );
84
- }
85
- );
86
-
87
- export { Breadcrumb };
88
- //# sourceMappingURL=Breadcrumb.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Breadcrumb.js","sources":["../src/breadcrumbs/Breadcrumb.tsx"],"sourcesContent":["import { Link, makePrefixer, Text, type TooltipProps } from \"@salt-ds/core\";\nimport type { IconProps } from \"@salt-ds/icons\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n Children,\n type ComponentType,\n forwardRef,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport type { CascadingMenuProps } from \"../cascading-menu/CascadingMenuProps\";\nimport breadcrumbCss from \"./Breadcrumb.css\";\nimport { useBreadcrumbsContext } from \"./internal/BreadcrumbsContext\";\n\nconst withBaseName = makePrefixer(\"saltBreadcrumb\");\n\nexport interface BreadcrumbProps\n extends Pick<CascadingMenuProps, \"onItemClick\"> {\n children?: ReactNode;\n ContainerProps?: HTMLAttributes<HTMLLIElement>;\n tooltipText?: string;\n tooltipProps?: TooltipProps;\n className?: string;\n href?: string;\n isCurrentLevel?: boolean;\n maxWidth?: number;\n minWidth?: number;\n overflowLabel?: string;\n Icon?: ComponentType<IconProps>;\n}\n\nexport const Breadcrumb = forwardRef<HTMLLIElement, BreadcrumbProps>(\n function Breadcrumb(\n {\n children,\n ContainerProps = {},\n tooltipText,\n tooltipProps,\n isCurrentLevel,\n onItemClick,\n overflowLabel,\n maxWidth,\n Icon,\n minWidth,\n className,\n ...props\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-breadcrumb\",\n css: breadcrumbCss,\n window: targetWindow,\n });\n\n const { itemsMaxWidth, itemsMinWidth, liClass } = useBreadcrumbsContext();\n\n const hasChildren = Children.count(children) !== 0;\n const hasOnlyIcon = Icon && !hasChildren;\n\n const getDefaultBreadcrumb = () =>\n isCurrentLevel ? (\n <Text\n maxRows={1}\n className={clsx(\n withBaseName(),\n className,\n withBaseName(\"currentLevel\"),\n )}\n styleAs=\"label\"\n >\n {children}\n </Text>\n ) : (\n <div\n className={clsx(\n withBaseName(),\n className,\n {\n [withBaseName(\"justifyContentCenter\")]: hasOnlyIcon,\n },\n withBaseName(\"regular\"),\n )}\n >\n {Icon && <Icon className={withBaseName(\"icon\")} />}\n {hasChildren && (\n <Link maxRows={1} styleAs=\"label\" {...props}>\n {children}\n </Link>\n )}\n </div>\n );\n\n const content = getDefaultBreadcrumb();\n\n const {\n style: containerStyle,\n className: containerClassName,\n ...containerPropsRest\n } = ContainerProps;\n\n return (\n <li\n ref={ref}\n style={{\n ...containerStyle,\n minWidth: minWidth ?? itemsMinWidth,\n maxWidth: maxWidth ?? itemsMaxWidth,\n }}\n className={clsx(liClass, containerClassName)}\n {...containerPropsRest}\n >\n {content}\n </li>\n );\n },\n);\n"],"names":["Breadcrumb","breadcrumbCss"],"mappings":";;;;;;;;;AAgBA,MAAM,YAAA,GAAe,aAAa,gBAAgB,CAAA;AAiB3C,MAAM,UAAA,GAAa,UAAA;AAAA,EACxB,SAASA,WAAAA,CACP;AAAA,IACE,QAAA;AAAA,IACA,iBAAiB,EAAC;AAAA,IAClB,WAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,eAAe,SAAA,EAAU;AAC/B,IAAA,wBAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,iBAAA;AAAA,MACR,GAAA,EAAKC,QAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,MAAM,EAAE,aAAA,EAAe,aAAA,EAAe,OAAA,KAAY,qBAAA,EAAsB;AAExE,IAAA,MAAM,WAAA,GAAc,QAAA,CAAS,KAAA,CAAM,QAAQ,CAAA,KAAM,CAAA;AACjD,IAAA,MAAM,WAAA,GAAc,QAAQ,CAAC,WAAA;AAE7B,IAAA,MAAM,oBAAA,GAAuB,MAC3B,cAAA,mBACE,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,CAAA;AAAA,QACT,SAAA,EAAW,IAAA;AAAA,UACT,YAAA,EAAa;AAAA,UACb,SAAA;AAAA,UACA,aAAa,cAAc;AAAA,SAC7B;AAAA,QACA,OAAA,EAAQ,OAAA;AAAA,QAEP;AAAA;AAAA,KACH,mBAEA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,IAAA;AAAA,UACT,YAAA,EAAa;AAAA,UACb,SAAA;AAAA,UACA;AAAA,YACE,CAAC,YAAA,CAAa,sBAAsB,CAAC,GAAG;AAAA,WAC1C;AAAA,UACA,aAAa,SAAS;AAAA,SACxB;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,IAAA,oBAAQ,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAW,YAAA,CAAa,MAAM,CAAA,EAAG,CAAA;AAAA,UAC/C,WAAA,wBACE,IAAA,EAAA,EAAK,OAAA,EAAS,GAAG,OAAA,EAAQ,OAAA,EAAS,GAAG,KAAA,EACnC,QAAA,EACH;AAAA;AAAA;AAAA,KAEJ;AAGJ,IAAA,MAAM,UAAU,oBAAA,EAAqB;AAErC,IAAA,MAAM;AAAA,MACJ,KAAA,EAAO,cAAA;AAAA,MACP,SAAA,EAAW,kBAAA;AAAA,MACX,GAAG;AAAA,KACL,GAAI,cAAA;AAEJ,IAAA,uBACE,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,KAAA,EAAO;AAAA,UACL,GAAG,cAAA;AAAA,UACH,UAAU,QAAA,IAAY,aAAA;AAAA,UACtB,UAAU,QAAA,IAAY;AAAA,SACxB;AAAA,QACA,SAAA,EAAW,IAAA,CAAK,OAAA,EAAS,kBAAkB,CAAA;AAAA,QAC1C,GAAG,kBAAA;AAAA,QAEH,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;;;;"}
@@ -1,4 +0,0 @@
1
- var css_248z = ".saltBreadcrumbs-ol {\n --breadcrumbs-ol-gap: var(--salt-size-unit);\n\n display: flex;\n align-items: center;\n justify-content: flex-start;\n padding: 0;\n margin: 0;\n gap: var(--breadcrumbs-ol-gap);\n}\n\n.saltBreadcrumbs-li {\n --breadcrumbs-li-marginRight: 0px;\n --breadcrumbs-li-padding: 0px;\n\n flex: 0 1 auto;\n list-style: none;\n margin-right: var(--breadcrumbs-li-marginRight);\n padding: var(--breadcrumbs-li-padding);\n}\n\n.saltBreadcrumbs-separator {\n --breadcrumbs-separator-marginRight: 0px;\n\n display: flex;\n margin-right: var(--breadcrumbs-separator-marginRight);\n user-select: none;\n}\n\n.saltBreadcrumbs-ol-wrap {\n flex-wrap: wrap;\n}\n\n.saltBreadcrumbs-ol-wrap .saltBreadcrumbs-li,\n.saltBreadcrumbs-ol-wrap .saltBreadcrumbs-separator {\n --breadcrumbs-ol-wrap-li-marginBottom: 0px;\n\n margin-bottom: var(--breadcrumbs-ol-wrap-li-marginBottom);\n}\n";
2
-
3
- export { css_248z as default };
4
- //# sourceMappingURL=Breadcrumbs.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Breadcrumbs.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,138 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { makePrefixer } from '@salt-ds/core';
3
- import { useComponentCssInjection } from '@salt-ds/styles';
4
- import { useWindow } from '@salt-ds/window';
5
- import { clsx } from 'clsx';
6
- import { forwardRef, useMemo, Children, isValidElement, cloneElement } from 'react';
7
- import css_248z from './Breadcrumbs.css.js';
8
- import { BreadcrumbsCollapsed } from './internal/BreadcrumbsCollapsed.js';
9
- import { BreadcrumbsContext } from './internal/BreadcrumbsContext.js';
10
- import { BreadcrumbsSeparator } from './internal/BreadcrumbsSeparator.js';
11
-
12
- const iconWidth = 12;
13
- const withBaseName = makePrefixer("saltBreadcrumbs");
14
- function insertSeparators(items, className, separator, hideCurrentLevel, shouldRenderAllItems, itemsAfterCollapse) {
15
- return items.reduce((acc, current, index) => {
16
- if (index < items.length - 1) {
17
- return acc.concat(
18
- current,
19
- /* @__PURE__ */ jsx(
20
- "li",
21
- {
22
- "aria-hidden": true,
23
- className,
24
- children: separator
25
- },
26
- `separator-${// biome-ignore lint/suspicious/noArrayIndexKey: Using index as key is acceptable here
27
- index}`
28
- )
29
- );
30
- }
31
- const skipLastElement = hideCurrentLevel && shouldRenderAllItems || hideCurrentLevel && !shouldRenderAllItems && itemsAfterCollapse !== 0;
32
- return skipLastElement ? acc : acc.concat(current);
33
- }, []);
34
- }
35
- const Breadcrumbs = forwardRef(
36
- function Breadcrumbs2(props, ref) {
37
- const {
38
- children,
39
- className,
40
- itemsAfterCollapse = 1,
41
- itemsBeforeCollapse = 1,
42
- maxItems = 3,
43
- separator: separatorProp,
44
- hideCurrentLevel,
45
- itemsMinWidth: itemsMinWidthProp,
46
- itemsMaxWidth,
47
- wrap,
48
- Menu: _Menu,
49
- SeparatorProps = {},
50
- ...other
51
- } = props;
52
- const targetWindow = useWindow();
53
- useComponentCssInjection({
54
- testId: "salt-breadcrumbs",
55
- css: css_248z,
56
- window: targetWindow
57
- });
58
- const itemsMinWidth = itemsMinWidthProp != null ? itemsMinWidthProp : iconWidth;
59
- const breadcrumbsContext = useMemo(
60
- () => ({
61
- wrap,
62
- itemsMinWidth,
63
- itemsMaxWidth,
64
- liClass: withBaseName("li")
65
- }),
66
- [wrap, itemsMaxWidth, itemsMinWidth]
67
- );
68
- const separator = separatorProp || /* @__PURE__ */ jsx(BreadcrumbsSeparator, { ...SeparatorProps });
69
- const childrenArray = Children.toArray(children);
70
- const shouldRenderAllItems = wrap || maxItems == null || childrenArray.length <= maxItems;
71
- const allItems = childrenArray.filter(isValidElement).map((child, index) => {
72
- const isLastChild = index === childrenArray.length - 1;
73
- return cloneElement(child, {
74
- isCurrentLevel: isLastChild
75
- });
76
- });
77
- const renderItemsBeforeAndAfter = () => {
78
- if (itemsBeforeCollapse + itemsAfterCollapse >= allItems.length) {
79
- console.warn(
80
- [
81
- "You have provided an invalid combination of properties to the Breadcrumbs.",
82
- `itemsAfterCollapse={${itemsAfterCollapse}} +itemsBeforeCollapse={${itemsBeforeCollapse}} >= maxItems={${maxItems}}`
83
- ].join("\n")
84
- );
85
- return allItems;
86
- }
87
- const hiddenItems = allItems.slice(
88
- itemsBeforeCollapse,
89
- allItems.length - itemsAfterCollapse
90
- );
91
- return [
92
- ...allItems.slice(0, itemsBeforeCollapse),
93
- /* @__PURE__ */ jsx("li", { className: withBaseName("li"), children: /* @__PURE__ */ jsx(
94
- BreadcrumbsCollapsed,
95
- {
96
- accessibleText: `Breadcrumb levels ${itemsBeforeCollapse + 1} to ${allItems.length - itemsAfterCollapse}`,
97
- className: withBaseName("overflowButton"),
98
- children: hiddenItems
99
- }
100
- ) }, "breadcrumbs-collapsed"),
101
- ...allItems.slice(
102
- allItems.length - itemsAfterCollapse,
103
- allItems.length
104
- )
105
- ];
106
- };
107
- const itemsToRender = shouldRenderAllItems ? allItems : renderItemsBeforeAndAfter();
108
- return /* @__PURE__ */ jsx(BreadcrumbsContext.Provider, { value: breadcrumbsContext, children: /* @__PURE__ */ jsx(
109
- "nav",
110
- {
111
- "aria-label": "Breadcrumb",
112
- className: clsx(withBaseName(), className),
113
- "data-testid": "breadcrumbs",
114
- ref,
115
- ...other,
116
- children: /* @__PURE__ */ jsx(
117
- "ol",
118
- {
119
- className: clsx(withBaseName("ol"), {
120
- [withBaseName("ol-wrap")]: wrap
121
- }),
122
- children: insertSeparators(
123
- itemsToRender,
124
- withBaseName("separator"),
125
- separator,
126
- hideCurrentLevel,
127
- shouldRenderAllItems,
128
- itemsAfterCollapse
129
- )
130
- }
131
- )
132
- }
133
- ) });
134
- }
135
- );
136
-
137
- export { Breadcrumbs };
138
- //# sourceMappingURL=Breadcrumbs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Breadcrumbs.js","sources":["../src/breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport type { IconProps } from \"@salt-ds/icons\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n Children,\n type ComponentType,\n cloneElement,\n forwardRef,\n type HTMLAttributes,\n isValidElement,\n type ReactNode,\n useMemo,\n} from \"react\";\nimport type { BreadcrumbProps } from \"./Breadcrumb\";\nimport breadcrumbsCss from \"./Breadcrumbs.css\";\nimport { BreadcrumbsCollapsed } from \"./internal/BreadcrumbsCollapsed\";\nimport { BreadcrumbsContext } from \"./internal/BreadcrumbsContext\";\nimport { BreadcrumbsSeparator } from \"./internal/BreadcrumbsSeparator\";\n\nconst iconWidth = 12;\n\nconst withBaseName = makePrefixer(\"saltBreadcrumbs\");\n\nfunction insertSeparators(\n items: ReactNode[],\n className?: string,\n separator?: ReactNode,\n hideCurrentLevel?: boolean,\n shouldRenderAllItems?: boolean,\n itemsAfterCollapse?: number,\n) {\n return items.reduce((acc: ReactNode[], current: ReactNode, index: number) => {\n if (index < items.length - 1) {\n return acc.concat(\n current,\n <li\n aria-hidden\n className={className}\n key={`separator-${\n // biome-ignore lint/suspicious/noArrayIndexKey: Using index as key is acceptable here\n index\n }`}\n >\n {separator}\n </li>,\n );\n }\n const skipLastElement =\n (hideCurrentLevel && shouldRenderAllItems) ||\n (hideCurrentLevel && !shouldRenderAllItems && itemsAfterCollapse !== 0);\n return skipLastElement ? acc : acc.concat(current);\n }, []);\n}\n\nexport interface BreadcrumbsProps extends HTMLAttributes<HTMLElement> {\n Menu?: ComponentType;\n SeparatorProps?: IconProps;\n hideCurrentLevel?: boolean;\n itemsAfterCollapse?: number;\n itemsBeforeCollapse?: number;\n itemsMaxWidth?: number | string;\n itemsMinWidth?: number | string;\n maxItems?: number;\n separator?: ReactNode;\n wrap?: boolean;\n className?: string;\n children?: ReactNode;\n}\n\nexport const Breadcrumbs = forwardRef<HTMLElement, BreadcrumbsProps>(\n function Breadcrumbs(props, ref) {\n const {\n children,\n className,\n itemsAfterCollapse = 1,\n itemsBeforeCollapse = 1,\n maxItems = 3,\n separator: separatorProp,\n hideCurrentLevel,\n itemsMinWidth: itemsMinWidthProp,\n itemsMaxWidth,\n wrap,\n Menu: _Menu,\n SeparatorProps = {},\n ...other\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-breadcrumbs\",\n css: breadcrumbsCss,\n window: targetWindow,\n });\n\n const itemsMinWidth =\n itemsMinWidthProp != null ? itemsMinWidthProp : iconWidth;\n\n const breadcrumbsContext = useMemo(\n () => ({\n wrap,\n itemsMinWidth,\n itemsMaxWidth,\n liClass: withBaseName(\"li\"),\n }),\n [wrap, itemsMaxWidth, itemsMinWidth],\n );\n\n const separator = separatorProp || (\n <BreadcrumbsSeparator {...SeparatorProps} />\n );\n\n const childrenArray = Children.toArray(children);\n const shouldRenderAllItems =\n wrap || maxItems == null || childrenArray.length <= maxItems;\n\n const allItems = childrenArray\n .filter(isValidElement)\n .map((child, index) => {\n const isLastChild = index === childrenArray.length - 1;\n\n return cloneElement(child, {\n isCurrentLevel: isLastChild,\n } as BreadcrumbProps);\n });\n\n const renderItemsBeforeAndAfter = () => {\n // This defends against someone passing weird input, to ensure that if all\n // items would be shown anyway, we just show all items without the EllipsisItem\n if (itemsBeforeCollapse + itemsAfterCollapse >= allItems.length) {\n console.warn(\n [\n \"You have provided an invalid combination of properties to the Breadcrumbs.\",\n `itemsAfterCollapse={${itemsAfterCollapse}} +itemsBeforeCollapse={${itemsBeforeCollapse}} >= maxItems={${maxItems}}`,\n ].join(\"\\n\"),\n );\n return allItems;\n }\n\n const hiddenItems = allItems.slice(\n itemsBeforeCollapse,\n allItems.length - itemsAfterCollapse,\n );\n return [\n ...allItems.slice(0, itemsBeforeCollapse),\n <li className={withBaseName(\"li\")} key=\"breadcrumbs-collapsed\">\n <BreadcrumbsCollapsed\n accessibleText={`Breadcrumb levels ${itemsBeforeCollapse + 1} to ${\n allItems.length - itemsAfterCollapse\n }`}\n className={withBaseName(\"overflowButton\")}\n >\n {hiddenItems}\n </BreadcrumbsCollapsed>\n </li>,\n ...allItems.slice(\n allItems.length - itemsAfterCollapse,\n allItems.length,\n ),\n ];\n };\n\n const itemsToRender = shouldRenderAllItems\n ? allItems\n : renderItemsBeforeAndAfter();\n return (\n <BreadcrumbsContext.Provider value={breadcrumbsContext}>\n <nav\n aria-label=\"Breadcrumb\"\n className={clsx(withBaseName(), className)}\n data-testid=\"breadcrumbs\"\n ref={ref}\n {...other}\n >\n <ol\n className={clsx(withBaseName(\"ol\"), {\n [withBaseName(\"ol-wrap\")]: wrap,\n })}\n >\n {insertSeparators(\n itemsToRender,\n withBaseName(\"separator\"),\n separator,\n hideCurrentLevel,\n shouldRenderAllItems,\n itemsAfterCollapse,\n )}\n </ol>\n </nav>\n </BreadcrumbsContext.Provider>\n );\n },\n);\n"],"names":["Breadcrumbs","breadcrumbsCss"],"mappings":"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"}
@@ -1,61 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { useIcon } from '@salt-ds/core';
3
- import { Children, isValidElement, useCallback } from 'react';
4
- import { MenuButton } from '../../menu-button/MenuButton.js';
5
- import { useFocusMenuRemount } from './useFocusMenuRemount.js';
6
-
7
- const BreadcrumbsCollapsed = ({
8
- children,
9
- CascadingMenuProps,
10
- accessibleText,
11
- ...rest
12
- }) => {
13
- const keys = Children.map(children, (child) => {
14
- if (isValidElement(child)) {
15
- return child.key;
16
- }
17
- return "";
18
- });
19
- const { OverflowIcon } = useIcon();
20
- const key = keys ? keys.join("") : "";
21
- const { ref, shouldFocusOnMount } = useFocusMenuRemount(key);
22
- const itemToString = useCallback((child) => {
23
- if (!child) {
24
- return "";
25
- }
26
- const { overflowLabel, tooltipText, children: children2 } = child.props;
27
- return overflowLabel || tooltipText || String(children2);
28
- }, []);
29
- const onItemClick = useCallback(() => {
30
- shouldFocusOnMount.current = true;
31
- }, [shouldFocusOnMount]);
32
- const menuItems = [];
33
- Children.forEach(children, (x) => {
34
- if (isValidElement(x)) {
35
- menuItems.push({ props: x.props });
36
- }
37
- });
38
- return /* @__PURE__ */ jsx(
39
- MenuButton,
40
- {
41
- CascadingMenuProps: {
42
- initialSource: {
43
- // Only `props` is required for `itemToString`. Otherwise causing circular JSON conversion in useControlled.js
44
- // This is not reproducible in unit tests, where react / react-dom is partially mocked without circular reference
45
- menuItems
46
- },
47
- itemToString,
48
- onItemClick,
49
- minWidth: 0,
50
- ...CascadingMenuProps
51
- },
52
- hideCaret: true,
53
- ...rest,
54
- ref,
55
- children: /* @__PURE__ */ jsx(OverflowIcon, {})
56
- }
57
- );
58
- };
59
-
60
- export { BreadcrumbsCollapsed };
61
- //# sourceMappingURL=BreadcrumbsCollapsed.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BreadcrumbsCollapsed.js","sources":["../src/breadcrumbs/internal/BreadcrumbsCollapsed.tsx"],"sourcesContent":["import { useIcon } from \"@salt-ds/core\";\nimport {\n Children,\n type Component,\n isValidElement,\n type ReactNode,\n useCallback,\n} from \"react\";\nimport type { CascadingMenuProps, MenuDescriptor } from \"../../cascading-menu\";\nimport { MenuButton, type MenuButtonProps } from \"../../menu-button\";\nimport type { BreadcrumbProps } from \"../Breadcrumb\";\nimport { useFocusMenuRemount } from \"./useFocusMenuRemount\";\n\nexport interface BreadcrumbsCollapsedProps\n extends Omit<MenuButtonProps, \"CascadingMenuProps\"> {\n CascadingMenuProps?: CascadingMenuProps;\n accessibleText?: string;\n children: ReactNode;\n className?: string;\n}\n\nexport const BreadcrumbsCollapsed = ({\n children,\n CascadingMenuProps,\n accessibleText,\n ...rest\n}: BreadcrumbsCollapsedProps) => {\n const keys = Children.map(children, (child) => {\n if (isValidElement(child)) {\n return child.key;\n }\n return \"\";\n });\n\n const { OverflowIcon } = useIcon();\n const key = keys ? keys.join(\"\") : \"\";\n const { ref, shouldFocusOnMount } =\n useFocusMenuRemount<HTMLButtonElement>(key);\n\n const itemToString = useCallback((child: Component<BreadcrumbProps>) => {\n if (!child) {\n return \"\";\n }\n const { overflowLabel, tooltipText, children } = child.props;\n return overflowLabel || tooltipText || String(children);\n }, []) as (item: MenuDescriptor) => string;\n\n const onItemClick = useCallback((): void => {\n shouldFocusOnMount.current = true;\n }, [shouldFocusOnMount]);\n\n const menuItems: MenuDescriptor[] = [];\n Children.forEach(children, (x) => {\n if (isValidElement(x)) {\n menuItems.push({ props: x.props } as MenuDescriptor);\n }\n });\n\n return (\n <MenuButton\n CascadingMenuProps={{\n initialSource: {\n // Only `props` is required for `itemToString`. Otherwise causing circular JSON conversion in useControlled.js\n // This is not reproducible in unit tests, where react / react-dom is partially mocked without circular reference\n menuItems,\n },\n itemToString,\n onItemClick,\n minWidth: 0,\n ...CascadingMenuProps,\n }}\n hideCaret\n {...rest}\n ref={ref}\n >\n <OverflowIcon />\n </MenuButton>\n );\n};\n"],"names":["children"],"mappings":";;;;;;AAqBO,MAAM,uBAAuB,CAAC;AAAA,EACnC,QAAA;AAAA,EACA,kBAAA;AAAA,EACA,cAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAiC;AAC/B,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,GAAA,CAAI,QAAA,EAAU,CAAC,KAAA,KAAU;AAC7C,IAAA,IAAI,cAAA,CAAe,KAAK,CAAA,EAAG;AACzB,MAAA,OAAO,KAAA,CAAM,GAAA;AAAA,IACf;AACA,IAAA,OAAO,EAAA;AAAA,EACT,CAAC,CAAA;AAED,EAAA,MAAM,EAAE,YAAA,EAAa,GAAI,OAAA,EAAQ;AACjC,EAAA,MAAM,GAAA,GAAM,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA,GAAI,EAAA;AACnC,EAAA,MAAM,EAAE,GAAA,EAAK,kBAAA,EAAmB,GAC9B,oBAAuC,GAAG,CAAA;AAE5C,EAAA,MAAM,YAAA,GAAe,WAAA,CAAY,CAAC,KAAA,KAAsC;AACtE,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,EAAA;AAAA,IACT;AACA,IAAA,MAAM,EAAE,aAAA,EAAe,WAAA,EAAa,QAAA,EAAAA,SAAAA,KAAa,KAAA,CAAM,KAAA;AACvD,IAAA,OAAO,aAAA,IAAiB,WAAA,IAAe,MAAA,CAAOA,SAAQ,CAAA;AAAA,EACxD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,WAAA,GAAc,YAAY,MAAY;AAC1C,IAAA,kBAAA,CAAmB,OAAA,GAAU,IAAA;AAAA,EAC/B,CAAA,EAAG,CAAC,kBAAkB,CAAC,CAAA;AAEvB,EAAA,MAAM,YAA8B,EAAC;AACrC,EAAA,QAAA,CAAS,OAAA,CAAQ,QAAA,EAAU,CAAC,CAAA,KAAM;AAChC,IAAA,IAAI,cAAA,CAAe,CAAC,CAAA,EAAG;AACrB,MAAA,SAAA,CAAU,IAAA,CAAK,EAAE,KAAA,EAAO,CAAA,CAAE,OAAyB,CAAA;AAAA,IACrD;AAAA,EACF,CAAC,CAAA;AAED,EAAA,uBACE,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,kBAAA,EAAoB;AAAA,QAClB,aAAA,EAAe;AAAA;AAAA;AAAA,UAGb;AAAA,SACF;AAAA,QACA,YAAA;AAAA,QACA,WAAA;AAAA,QACA,QAAA,EAAU,CAAA;AAAA,QACV,GAAG;AAAA,OACL;AAAA,MACA,SAAA,EAAS,IAAA;AAAA,MACR,GAAG,IAAA;AAAA,MACJ,GAAA;AAAA,MAEA,8BAAC,YAAA,EAAA,EAAa;AAAA;AAAA,GAChB;AAEJ;;;;"}
@@ -1,17 +0,0 @@
1
- import { createContext, useContext } from 'react';
2
-
3
- const BreadcrumbsContext = createContext(
4
- void 0
5
- );
6
- const useBreadcrumbsContext = () => {
7
- const context = useContext(BreadcrumbsContext);
8
- if (!context) {
9
- throw new Error(
10
- "BreadcrumbsItem compound components cannot be rendered outside the Breadcrumbs component"
11
- );
12
- }
13
- return context;
14
- };
15
-
16
- export { BreadcrumbsContext, useBreadcrumbsContext };
17
- //# sourceMappingURL=BreadcrumbsContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BreadcrumbsContext.js","sources":["../src/breadcrumbs/internal/BreadcrumbsContext.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\nexport interface BreadcrumbsContext {\n wrap?: boolean;\n itemsMaxWidth?: number | string;\n itemsMinWidth?: number | string;\n liClass?: string;\n}\n\nexport const BreadcrumbsContext = createContext<BreadcrumbsContext | undefined>(\n undefined,\n);\n\nexport const useBreadcrumbsContext = () => {\n const context = useContext(BreadcrumbsContext);\n if (!context) {\n throw new Error(\n \"BreadcrumbsItem compound components cannot be rendered outside the Breadcrumbs component\",\n );\n }\n return context;\n};\n"],"names":[],"mappings":";;AASO,MAAM,kBAAA,GAAqB,aAAA;AAAA,EAChC;AACF;AAEO,MAAM,wBAAwB,MAAM;AACzC,EAAA,MAAM,OAAA,GAAU,WAAW,kBAAkB,CAAA;AAC7C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;;;;"}
@@ -1,7 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { ChevronRightIcon } from '@salt-ds/icons';
3
-
4
- const BreadcrumbsSeparator = (props) => /* @__PURE__ */ jsx(ChevronRightIcon, { ...props });
5
-
6
- export { BreadcrumbsSeparator };
7
- //# sourceMappingURL=BreadcrumbsSeparator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BreadcrumbsSeparator.js","sources":["../src/breadcrumbs/internal/BreadcrumbsSeparator.tsx"],"sourcesContent":["import { ChevronRightIcon, type IconProps } from \"@salt-ds/icons\";\n\nexport const BreadcrumbsSeparator = (props: IconProps) => (\n <ChevronRightIcon {...props} />\n);\n"],"names":[],"mappings":";;;AAEO,MAAM,uBAAuB,CAAC,KAAA,qBACnC,GAAA,CAAC,gBAAA,EAAA,EAAkB,GAAG,KAAA,EAAO;;;;"}
@@ -1,20 +0,0 @@
1
- import { usePrevious } from '@salt-ds/core';
2
- import { useRef, useEffect } from 'react';
3
-
4
- function useFocusMenuRemount(key) {
5
- const ref = useRef(null);
6
- const shouldFocusOnMount = useRef(false);
7
- const previousKey = usePrevious(key);
8
- useEffect(() => {
9
- if (ref.current && shouldFocusOnMount.current && previousKey !== key) {
10
- ref.current.focus();
11
- shouldFocusOnMount.current = false;
12
- } else {
13
- shouldFocusOnMount.current = false;
14
- }
15
- }, [previousKey, key]);
16
- return { ref, shouldFocusOnMount };
17
- }
18
-
19
- export { useFocusMenuRemount };
20
- //# sourceMappingURL=useFocusMenuRemount.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFocusMenuRemount.js","sources":["../src/breadcrumbs/internal/useFocusMenuRemount.ts"],"sourcesContent":["import { usePrevious } from \"@salt-ds/core\";\nimport { useEffect, useRef } from \"react\";\n\nexport function useFocusMenuRemount<T extends HTMLElement>(key: string) {\n const ref = useRef<T>(null);\n const shouldFocusOnMount = useRef(false);\n const previousKey = usePrevious(key);\n\n useEffect(() => {\n if (ref.current && shouldFocusOnMount.current && previousKey !== key) {\n ref.current.focus();\n shouldFocusOnMount.current = false;\n } else {\n shouldFocusOnMount.current = false;\n }\n }, [previousKey, key]);\n\n return { ref, shouldFocusOnMount };\n}\n"],"names":[],"mappings":";;;AAGO,SAAS,oBAA2C,GAAA,EAAa;AACtE,EAAA,MAAM,GAAA,GAAM,OAAU,IAAI,CAAA;AAC1B,EAAA,MAAM,kBAAA,GAAqB,OAAO,KAAK,CAAA;AACvC,EAAA,MAAM,WAAA,GAAc,YAAY,GAAG,CAAA;AAEnC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,GAAA,CAAI,OAAA,IAAW,kBAAA,CAAmB,OAAA,IAAW,gBAAgB,GAAA,EAAK;AACpE,MAAA,GAAA,CAAI,QAAQ,KAAA,EAAM;AAClB,MAAA,kBAAA,CAAmB,OAAA,GAAU,KAAA;AAAA,IAC/B,CAAA,MAAO;AACL,MAAA,kBAAA,CAAmB,OAAA,GAAU,KAAA;AAAA,IAC/B;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,GAAG,CAAC,CAAA;AAErB,EAAA,OAAO,EAAE,KAAK,kBAAA,EAAmB;AACnC;;;;"}
@@ -1,4 +0,0 @@
1
- var css_248z = ".saltBreadcrumbNext {\n align-items: center;\n display: inline-flex;\n flex: 0 1 auto;\n gap: var(--salt-spacing-100);\n list-style: none;\n min-width: 0;\n}\n\n.saltBreadcrumbNext-current,\n.saltBreadcrumbNext-label,\n.saltBreadcrumbNext-link,\n.saltBreadcrumbNext-trigger {\n min-width: 0;\n}\n\n.saltBreadcrumbNext-trigger {\n align-items: center;\n color: var(--salt-content-primary-foreground);\n display: inline-flex;\n font-family: var(--salt-text-label-fontFamily);\n font-size: var(--salt-text-label-fontSize);\n font-weight: var(--salt-text-fontWeight);\n gap: var(--salt-spacing-50);\n letter-spacing: var(--salt-text-letterSpacing);\n line-height: var(--salt-text-label-lineHeight);\n max-width: 100%;\n text-decoration: var(--salt-typography-textDecoration-none);\n}\n\n.saltBreadcrumbNext-link:not(.saltBreadcrumbNext-current) {\n text-decoration: var(--salt-typography-textDecoration-underline);\n}\n\n.saltBreadcrumbNext-link:not(.saltBreadcrumbNext-current):hover {\n text-decoration: var(--salt-typography-textDecoration-none);\n}\n\n.saltBreadcrumbNext-link:not(.saltBreadcrumbNext-current):active {\n text-decoration: var(--salt-typography-textDecoration-underline);\n}\n\n.saltBreadcrumbNext-trigger:focus {\n outline: var(--salt-focused-outline);\n text-decoration: var(--salt-typography-textDecoration-none);\n}\n\n.saltBreadcrumbNext-current {\n cursor: var(--salt-cursor-text);\n}\n\n.saltBreadcrumbNext-separator {\n --saltIcon-color: var(--salt-content-secondary-foreground);\n --saltIcon-size: var(--salt-size-icon);\n\n flex: 0 0 auto;\n}\n";
2
-
3
- export { css_248z as default };
4
- //# sourceMappingURL=BreadcrumbNext.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BreadcrumbNext.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,97 +0,0 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { makePrefixer, useIcon } from '@salt-ds/core';
3
- import { useComponentCssInjection } from '@salt-ds/styles';
4
- import { useWindow } from '@salt-ds/window';
5
- import { clsx } from 'clsx';
6
- import { forwardRef, Children } from 'react';
7
- import css_248z from './BreadcrumbNext.css.js';
8
- import { BreadcrumbNextLabel } from './BreadcrumbNextLabel.js';
9
- import { BreadcrumbNextTrigger } from './BreadcrumbNextTrigger.js';
10
- import { useBreadcrumbNextContext, BreadcrumbNextContext } from './internal/BreadcrumbNextContext.js';
11
-
12
- const withBaseName = makePrefixer("saltBreadcrumbNext");
13
- const withBreadcrumbsBaseName = makePrefixer("saltBreadcrumbsNext");
14
- function isPrimitiveBreadcrumbLabel(children) {
15
- return typeof children === "string" && children.trim() !== "" || typeof children === "number";
16
- }
17
- function isMissingBreadcrumbContent(children) {
18
- const childArray = Children.toArray(children);
19
- return childArray.length === 0 || childArray.every(
20
- (child) => typeof child === "string" && child.trim() === ""
21
- );
22
- }
23
- let missingBreadcrumbContentWarningShown = false;
24
- function warnIfMissingBreadcrumbContent() {
25
- if (process.env.NODE_ENV === "production" || missingBreadcrumbContentWarningShown) {
26
- return;
27
- }
28
- missingBreadcrumbContentWarningShown = true;
29
- console.warn(
30
- "BreadcrumbNext requires children to render a named breadcrumb item. Use text children for simple items or BreadcrumbNextTrigger with BreadcrumbNextLabel for composed items."
31
- );
32
- }
33
- const BreadcrumbNext = forwardRef(
34
- function BreadcrumbNext2(props, ref) {
35
- const {
36
- children,
37
- className,
38
- current: currentProp,
39
- href,
40
- render,
41
- ...rest
42
- } = props;
43
- const targetWindow = useWindow();
44
- useComponentCssInjection({
45
- testId: "salt-breadcrumb-next",
46
- css: css_248z,
47
- window: targetWindow
48
- });
49
- const parentContext = useBreadcrumbNextContext();
50
- const current = (parentContext == null ? void 0 : parentContext.current) ?? Boolean(currentProp);
51
- const onNavigate = parentContext == null ? void 0 : parentContext.onNavigate;
52
- const placement = (parentContext == null ? void 0 : parentContext.placement) ?? "trail";
53
- const showSeparator = (parentContext == null ? void 0 : parentContext.showSeparator) ?? false;
54
- const triggerRef = parentContext == null ? void 0 : parentContext.triggerRef;
55
- const resolvedRender = render ?? (parentContext == null ? void 0 : parentContext.render);
56
- const { LevelSeparatorIcon } = useIcon();
57
- const missingContent = isMissingBreadcrumbContent(children);
58
- if (missingContent) {
59
- warnIfMissingBreadcrumbContent();
60
- }
61
- const primitiveChildren = isPrimitiveBreadcrumbLabel(children) ? children : void 0;
62
- const content = missingContent ? null : primitiveChildren !== void 0 ? /* @__PURE__ */ jsx(BreadcrumbNextTrigger, { children: /* @__PURE__ */ jsx(BreadcrumbNextLabel, { children: primitiveChildren }) }) : children;
63
- const context = {
64
- current,
65
- href,
66
- onNavigate,
67
- placement,
68
- render: resolvedRender,
69
- showSeparator,
70
- triggerRef
71
- };
72
- return /* @__PURE__ */ jsx(
73
- "li",
74
- {
75
- ref,
76
- className: clsx(
77
- placement === "disclosure" ? withBreadcrumbsBaseName("disclosureListItem") : withBaseName(),
78
- className
79
- ),
80
- ...rest,
81
- children: /* @__PURE__ */ jsxs(BreadcrumbNextContext.Provider, { value: context, children: [
82
- content,
83
- placement === "trail" && showSeparator ? /* @__PURE__ */ jsx(
84
- LevelSeparatorIcon,
85
- {
86
- "aria-hidden": true,
87
- className: withBaseName("separator")
88
- }
89
- ) : null
90
- ] })
91
- }
92
- );
93
- }
94
- );
95
-
96
- export { BreadcrumbNext };
97
- //# sourceMappingURL=BreadcrumbNext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BreadcrumbNext.js","sources":["../src/breadcrumbs-next/BreadcrumbNext.tsx"],"sourcesContent":["import { makePrefixer, type RenderPropsType, useIcon } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n Children,\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport breadcrumbNextCss from \"./BreadcrumbNext.css\";\nimport { BreadcrumbNextLabel } from \"./BreadcrumbNextLabel\";\nimport { BreadcrumbNextTrigger } from \"./BreadcrumbNextTrigger\";\nimport {\n BreadcrumbNextContext,\n useBreadcrumbNextContext,\n} from \"./internal/BreadcrumbNextContext\";\n\nconst withBaseName = makePrefixer(\"saltBreadcrumbNext\");\nconst withBreadcrumbsBaseName = makePrefixer(\"saltBreadcrumbsNext\");\n\nfunction isPrimitiveBreadcrumbLabel(children: ReactNode) {\n return (\n (typeof children === \"string\" && children.trim() !== \"\") ||\n typeof children === \"number\"\n );\n}\n\nfunction isMissingBreadcrumbContent(children: ReactNode) {\n const childArray = Children.toArray(children);\n\n return (\n childArray.length === 0 ||\n childArray.every(\n (child) => typeof child === \"string\" && child.trim() === \"\",\n )\n );\n}\n\nlet missingBreadcrumbContentWarningShown = false;\n\nfunction warnIfMissingBreadcrumbContent() {\n if (\n process.env.NODE_ENV === \"production\" ||\n missingBreadcrumbContentWarningShown\n ) {\n return;\n }\n\n missingBreadcrumbContentWarningShown = true;\n console.warn(\n \"BreadcrumbNext requires children to render a named breadcrumb item. Use text children for simple items or BreadcrumbNextTrigger with BreadcrumbNextLabel for composed items.\",\n );\n}\n\nexport interface BreadcrumbNextProps\n extends Omit<ComponentPropsWithoutRef<\"li\">, \"children\"> {\n /**\n * Custom breadcrumb content. Use this for advanced composition with\n * `BreadcrumbNextTrigger` and `BreadcrumbNextLabel`.\n */\n children?: ReactNode;\n /**\n * If `true`, the breadcrumb represents the current page.\n */\n current?: boolean;\n /**\n * The URL for the breadcrumb. Provide this for the current breadcrumb so it\n * renders as a focusable link with `aria-current=\"page\"`.\n */\n href?: string;\n /**\n * Render prop to enable customization of the underlying link element.\n */\n render?: RenderPropsType[\"render\"];\n}\n\nexport const BreadcrumbNext = forwardRef<HTMLLIElement, BreadcrumbNextProps>(\n function BreadcrumbNext(props, ref) {\n const {\n children,\n className,\n current: currentProp,\n href,\n render,\n ...rest\n } = props;\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-breadcrumb-next\",\n css: breadcrumbNextCss,\n window: targetWindow,\n });\n\n const parentContext = useBreadcrumbNextContext();\n const current = parentContext?.current ?? Boolean(currentProp);\n const onNavigate = parentContext?.onNavigate;\n const placement = parentContext?.placement ?? \"trail\";\n const showSeparator = parentContext?.showSeparator ?? false;\n const triggerRef = parentContext?.triggerRef;\n const resolvedRender = render ?? parentContext?.render;\n const { LevelSeparatorIcon } = useIcon();\n const missingContent = isMissingBreadcrumbContent(children);\n\n if (missingContent) {\n warnIfMissingBreadcrumbContent();\n }\n\n const primitiveChildren = isPrimitiveBreadcrumbLabel(children)\n ? children\n : undefined;\n const content = missingContent ? null : primitiveChildren !== undefined ? (\n <BreadcrumbNextTrigger>\n <BreadcrumbNextLabel>{primitiveChildren}</BreadcrumbNextLabel>\n </BreadcrumbNextTrigger>\n ) : (\n children\n );\n const context = {\n current,\n href,\n onNavigate,\n placement,\n render: resolvedRender,\n showSeparator,\n triggerRef,\n };\n\n return (\n <li\n ref={ref}\n className={clsx(\n placement === \"disclosure\"\n ? withBreadcrumbsBaseName(\"disclosureListItem\")\n : withBaseName(),\n className,\n )}\n {...rest}\n >\n <BreadcrumbNextContext.Provider value={context}>\n {content}\n {placement === \"trail\" && showSeparator ? (\n <LevelSeparatorIcon\n aria-hidden\n className={withBaseName(\"separator\")}\n />\n ) : null}\n </BreadcrumbNextContext.Provider>\n </li>\n );\n },\n);\n"],"names":["BreadcrumbNext","breadcrumbNextCss"],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { makePrefixer } from '@salt-ds/core';
3
- import { clsx } from 'clsx';
4
- import { forwardRef } from 'react';
5
-
6
- const withBaseName = makePrefixer("saltBreadcrumbNext");
7
- const BreadcrumbNextLabel = forwardRef(function BreadcrumbNextLabel2({ className, ...rest }, ref) {
8
- return /* @__PURE__ */ jsx(
9
- "span",
10
- {
11
- ref,
12
- className: clsx(withBaseName("label"), className),
13
- ...rest
14
- }
15
- );
16
- });
17
-
18
- export { BreadcrumbNextLabel };
19
- //# sourceMappingURL=BreadcrumbNextLabel.js.map