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

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 (209) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/css/salt-lab.css +352 -402
  3. package/dist-cjs/app-header/AppHeader.css.js +1 -1
  4. package/dist-cjs/button-bar/ButtonBar.css.js +1 -1
  5. package/dist-cjs/cascading-menu/CascadingMenuItem.css.js +1 -1
  6. package/dist-cjs/color-chooser/ColorChooser.css.js +1 -1
  7. package/dist-cjs/color-chooser/ColorPicker.css.js +1 -1
  8. package/dist-cjs/color-chooser/HexInput.css.js +1 -1
  9. package/dist-cjs/color-chooser/RGBAInput.css.js +1 -1
  10. package/dist-cjs/color-chooser/Swatch.css.js +1 -1
  11. package/dist-cjs/color-chooser/Swatches.css.js +1 -1
  12. package/dist-cjs/contact-details/ContactDetails.css.js +1 -1
  13. package/dist-cjs/content-status/ContentStatus.css.js +1 -1
  14. package/dist-cjs/dropdown/DropdownButton.css.js +1 -1
  15. package/dist-cjs/form-field-legacy/FormFieldLegacy.css.js +1 -1
  16. package/dist-cjs/form-field-legacy/FormHelperText.css.js +1 -1
  17. package/dist-cjs/index.js +4 -12
  18. package/dist-cjs/index.js.map +1 -1
  19. package/dist-cjs/input-legacy/InputLegacy.css.js +1 -1
  20. package/dist-cjs/input-legacy/StaticInputAdornment.css.js +1 -1
  21. package/dist-cjs/layer-layout/LayerLayout.css.js +1 -1
  22. package/dist-cjs/link-button/LinkButton.css.js +6 -0
  23. package/dist-cjs/link-button/LinkButton.css.js.map +1 -0
  24. package/dist-cjs/link-button/LinkButton.js +78 -0
  25. package/dist-cjs/link-button/LinkButton.js.map +1 -0
  26. package/dist-cjs/list/List.css.js +1 -1
  27. package/dist-cjs/list/ListItem.css.js +1 -1
  28. package/dist-cjs/list-deprecated/List.css.js +1 -1
  29. package/dist-cjs/list-deprecated/ListItem.css.js +1 -1
  30. package/dist-cjs/list-next/ListItemNext.css.js +1 -1
  31. package/dist-cjs/list-next/ListNext.css.js +1 -1
  32. package/dist-cjs/logo/LogoSeparator.css.js +1 -1
  33. package/dist-cjs/menu-button/MenuButtonTrigger.css.js +1 -1
  34. package/dist-cjs/metric/MetricContent.css.js +1 -1
  35. package/dist-cjs/metric/MetricHeader.css.js +1 -1
  36. package/dist-cjs/on-solid-button/OnSolidButton.css.js +6 -0
  37. package/dist-cjs/on-solid-button/OnSolidButton.css.js.map +1 -0
  38. package/dist-cjs/on-solid-button/OnSolidButton.js +62 -0
  39. package/dist-cjs/on-solid-button/OnSolidButton.js.map +1 -0
  40. package/dist-cjs/query-input/QueryInput.css.js +1 -1
  41. package/dist-cjs/tabs/Tab.css.js +1 -1
  42. package/dist-cjs/tabs/TabActivationIndicator.css.js +1 -1
  43. package/dist-cjs/tabs/Tabstrip.css.js +1 -1
  44. package/dist-cjs/tabs/ThemeTabstrip.css.js +1 -1
  45. package/dist-cjs/tokenized-input/TokenizedInput.css.js +1 -1
  46. package/dist-cjs/tokenized-input-next/TokenizedInputNext.css.js +1 -1
  47. package/dist-cjs/tokenized-input-next/internal/InputPill.css.js +1 -1
  48. package/dist-cjs/toolbar/Toolbar.css.js +1 -1
  49. package/dist-cjs/toolbar/Tooltray.css.js +1 -1
  50. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.css.js +1 -1
  51. package/dist-cjs/toolbar/overflow-panel/OverflowSeparator.css.js +1 -1
  52. package/dist-es/app-header/AppHeader.css.js +1 -1
  53. package/dist-es/button-bar/ButtonBar.css.js +1 -1
  54. package/dist-es/cascading-menu/CascadingMenuItem.css.js +1 -1
  55. package/dist-es/color-chooser/ColorChooser.css.js +1 -1
  56. package/dist-es/color-chooser/ColorPicker.css.js +1 -1
  57. package/dist-es/color-chooser/HexInput.css.js +1 -1
  58. package/dist-es/color-chooser/RGBAInput.css.js +1 -1
  59. package/dist-es/color-chooser/Swatch.css.js +1 -1
  60. package/dist-es/color-chooser/Swatches.css.js +1 -1
  61. package/dist-es/contact-details/ContactDetails.css.js +1 -1
  62. package/dist-es/content-status/ContentStatus.css.js +1 -1
  63. package/dist-es/dropdown/DropdownButton.css.js +1 -1
  64. package/dist-es/form-field-legacy/FormFieldLegacy.css.js +1 -1
  65. package/dist-es/form-field-legacy/FormHelperText.css.js +1 -1
  66. package/dist-es/index.js +2 -6
  67. package/dist-es/index.js.map +1 -1
  68. package/dist-es/input-legacy/InputLegacy.css.js +1 -1
  69. package/dist-es/input-legacy/StaticInputAdornment.css.js +1 -1
  70. package/dist-es/layer-layout/LayerLayout.css.js +1 -1
  71. package/dist-es/link-button/LinkButton.css.js +4 -0
  72. package/dist-es/link-button/LinkButton.css.js.map +1 -0
  73. package/dist-es/link-button/LinkButton.js +76 -0
  74. package/dist-es/link-button/LinkButton.js.map +1 -0
  75. package/dist-es/list/List.css.js +1 -1
  76. package/dist-es/list/ListItem.css.js +1 -1
  77. package/dist-es/list-deprecated/List.css.js +1 -1
  78. package/dist-es/list-deprecated/ListItem.css.js +1 -1
  79. package/dist-es/list-next/ListItemNext.css.js +1 -1
  80. package/dist-es/list-next/ListNext.css.js +1 -1
  81. package/dist-es/logo/LogoSeparator.css.js +1 -1
  82. package/dist-es/menu-button/MenuButtonTrigger.css.js +1 -1
  83. package/dist-es/metric/MetricContent.css.js +1 -1
  84. package/dist-es/metric/MetricHeader.css.js +1 -1
  85. package/dist-es/on-solid-button/OnSolidButton.css.js +4 -0
  86. package/dist-es/on-solid-button/OnSolidButton.css.js.map +1 -0
  87. package/dist-es/on-solid-button/OnSolidButton.js +60 -0
  88. package/dist-es/on-solid-button/OnSolidButton.js.map +1 -0
  89. package/dist-es/query-input/QueryInput.css.js +1 -1
  90. package/dist-es/tabs/Tab.css.js +1 -1
  91. package/dist-es/tabs/TabActivationIndicator.css.js +1 -1
  92. package/dist-es/tabs/Tabstrip.css.js +1 -1
  93. package/dist-es/tabs/ThemeTabstrip.css.js +1 -1
  94. package/dist-es/tokenized-input/TokenizedInput.css.js +1 -1
  95. package/dist-es/tokenized-input-next/TokenizedInputNext.css.js +1 -1
  96. package/dist-es/tokenized-input-next/internal/InputPill.css.js +1 -1
  97. package/dist-es/toolbar/Toolbar.css.js +1 -1
  98. package/dist-es/toolbar/Tooltray.css.js +1 -1
  99. package/dist-es/toolbar/overflow-panel/OverflowPanel.css.js +1 -1
  100. package/dist-es/toolbar/overflow-panel/OverflowSeparator.css.js +1 -1
  101. package/dist-types/button-bar/internal/DescendantContext.d.ts +1 -1
  102. package/dist-types/combo-box-deprecated/internal/MultiSelectComboBox.d.ts +1 -1
  103. package/dist-types/common-hooks/collectionProvider.d.ts +1 -1
  104. package/dist-types/contact-details/MailLinkComponent.d.ts +1 -1
  105. package/dist-types/form-field-legacy/FormActivationIndicator.d.ts +1 -1
  106. package/dist-types/form-field-legacy/FormHelperText.d.ts +1 -1
  107. package/dist-types/form-field-legacy/FormLabel.d.ts +1 -1
  108. package/dist-types/form-field-legacy/NecessityIndicator.d.ts +1 -1
  109. package/dist-types/form-field-legacy/StatusIndicator.d.ts +1 -1
  110. package/dist-types/index.d.ts +2 -2
  111. package/dist-types/link-button/LinkButton.d.ts +26 -0
  112. package/dist-types/link-button/index.d.ts +1 -0
  113. package/dist-types/list-deprecated/internal/DescendantContext.d.ts +1 -1
  114. package/dist-types/list-deprecated/internal/Highlighter.d.ts +1 -1
  115. package/dist-types/on-solid-button/OnSolidButton.d.ts +12 -0
  116. package/dist-types/on-solid-button/index.d.ts +1 -0
  117. package/dist-types/query-input/internal/CategoryList.d.ts +1 -1
  118. package/dist-types/query-input/internal/SearchList.d.ts +1 -1
  119. package/dist-types/query-input/internal/ValueList.d.ts +1 -1
  120. package/dist-types/query-input/internal/ValueSelector.d.ts +1 -1
  121. package/dist-types/responsive/overflowUtils.d.ts +1 -1
  122. package/dist-types/tabs/TabActivationIndicator.d.ts +1 -1
  123. package/dist-types/tokenized-input/internal/InputPill.d.ts +1 -1
  124. package/dist-types/tokenized-input-next/internal/InputPill.d.ts +1 -1
  125. package/dist-types/toolbar/Tooltray.d.ts +1 -1
  126. package/package.json +2 -2
  127. package/dist-cjs/breadcrumbs/Breadcrumb.css.js +0 -6
  128. package/dist-cjs/breadcrumbs/Breadcrumb.css.js.map +0 -1
  129. package/dist-cjs/breadcrumbs/Breadcrumb.js +0 -90
  130. package/dist-cjs/breadcrumbs/Breadcrumb.js.map +0 -1
  131. package/dist-cjs/breadcrumbs/Breadcrumbs.css.js +0 -6
  132. package/dist-cjs/breadcrumbs/Breadcrumbs.css.js.map +0 -1
  133. package/dist-cjs/breadcrumbs/Breadcrumbs.js +0 -140
  134. package/dist-cjs/breadcrumbs/Breadcrumbs.js.map +0 -1
  135. package/dist-cjs/breadcrumbs/internal/BreadcrumbsCollapsed.js +0 -63
  136. package/dist-cjs/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +0 -1
  137. package/dist-cjs/breadcrumbs/internal/BreadcrumbsContext.js +0 -20
  138. package/dist-cjs/breadcrumbs/internal/BreadcrumbsContext.js.map +0 -1
  139. package/dist-cjs/breadcrumbs/internal/BreadcrumbsSeparator.js +0 -9
  140. package/dist-cjs/breadcrumbs/internal/BreadcrumbsSeparator.js.map +0 -1
  141. package/dist-cjs/breadcrumbs/internal/useFocusMenuRemount.js +0 -22
  142. package/dist-cjs/breadcrumbs/internal/useFocusMenuRemount.js.map +0 -1
  143. package/dist-cjs/breadcrumbs-next/BreadcrumbNext.css.js +0 -6
  144. package/dist-cjs/breadcrumbs-next/BreadcrumbNext.css.js.map +0 -1
  145. package/dist-cjs/breadcrumbs-next/BreadcrumbNext.js +0 -99
  146. package/dist-cjs/breadcrumbs-next/BreadcrumbNext.js.map +0 -1
  147. package/dist-cjs/breadcrumbs-next/BreadcrumbNextLabel.js +0 -21
  148. package/dist-cjs/breadcrumbs-next/BreadcrumbNextLabel.js.map +0 -1
  149. package/dist-cjs/breadcrumbs-next/BreadcrumbNextTrigger.js +0 -48
  150. package/dist-cjs/breadcrumbs-next/BreadcrumbNextTrigger.js.map +0 -1
  151. package/dist-cjs/breadcrumbs-next/BreadcrumbsNext.css.js +0 -6
  152. package/dist-cjs/breadcrumbs-next/BreadcrumbsNext.css.js.map +0 -1
  153. package/dist-cjs/breadcrumbs-next/BreadcrumbsNext.js +0 -146
  154. package/dist-cjs/breadcrumbs-next/BreadcrumbsNext.js.map +0 -1
  155. package/dist-cjs/breadcrumbs-next/internal/BreadcrumbNextContext.js +0 -12
  156. package/dist-cjs/breadcrumbs-next/internal/BreadcrumbNextContext.js.map +0 -1
  157. package/dist-cjs/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.js +0 -236
  158. package/dist-cjs/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.js.map +0 -1
  159. package/dist-cjs/breadcrumbs-next/internal/breadcrumbItems.js +0 -21
  160. package/dist-cjs/breadcrumbs-next/internal/breadcrumbItems.js.map +0 -1
  161. package/dist-es/breadcrumbs/Breadcrumb.css.js +0 -4
  162. package/dist-es/breadcrumbs/Breadcrumb.css.js.map +0 -1
  163. package/dist-es/breadcrumbs/Breadcrumb.js +0 -88
  164. package/dist-es/breadcrumbs/Breadcrumb.js.map +0 -1
  165. package/dist-es/breadcrumbs/Breadcrumbs.css.js +0 -4
  166. package/dist-es/breadcrumbs/Breadcrumbs.css.js.map +0 -1
  167. package/dist-es/breadcrumbs/Breadcrumbs.js +0 -138
  168. package/dist-es/breadcrumbs/Breadcrumbs.js.map +0 -1
  169. package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js +0 -61
  170. package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +0 -1
  171. package/dist-es/breadcrumbs/internal/BreadcrumbsContext.js +0 -17
  172. package/dist-es/breadcrumbs/internal/BreadcrumbsContext.js.map +0 -1
  173. package/dist-es/breadcrumbs/internal/BreadcrumbsSeparator.js +0 -7
  174. package/dist-es/breadcrumbs/internal/BreadcrumbsSeparator.js.map +0 -1
  175. package/dist-es/breadcrumbs/internal/useFocusMenuRemount.js +0 -20
  176. package/dist-es/breadcrumbs/internal/useFocusMenuRemount.js.map +0 -1
  177. package/dist-es/breadcrumbs-next/BreadcrumbNext.css.js +0 -4
  178. package/dist-es/breadcrumbs-next/BreadcrumbNext.css.js.map +0 -1
  179. package/dist-es/breadcrumbs-next/BreadcrumbNext.js +0 -97
  180. package/dist-es/breadcrumbs-next/BreadcrumbNext.js.map +0 -1
  181. package/dist-es/breadcrumbs-next/BreadcrumbNextLabel.js +0 -19
  182. package/dist-es/breadcrumbs-next/BreadcrumbNextLabel.js.map +0 -1
  183. package/dist-es/breadcrumbs-next/BreadcrumbNextTrigger.js +0 -46
  184. package/dist-es/breadcrumbs-next/BreadcrumbNextTrigger.js.map +0 -1
  185. package/dist-es/breadcrumbs-next/BreadcrumbsNext.css.js +0 -4
  186. package/dist-es/breadcrumbs-next/BreadcrumbsNext.css.js.map +0 -1
  187. package/dist-es/breadcrumbs-next/BreadcrumbsNext.js +0 -144
  188. package/dist-es/breadcrumbs-next/BreadcrumbsNext.js.map +0 -1
  189. package/dist-es/breadcrumbs-next/internal/BreadcrumbNextContext.js +0 -9
  190. package/dist-es/breadcrumbs-next/internal/BreadcrumbNextContext.js.map +0 -1
  191. package/dist-es/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.js +0 -234
  192. package/dist-es/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.js.map +0 -1
  193. package/dist-es/breadcrumbs-next/internal/breadcrumbItems.js +0 -19
  194. package/dist-es/breadcrumbs-next/internal/breadcrumbItems.js.map +0 -1
  195. package/dist-types/breadcrumbs/Breadcrumb.d.ts +0 -18
  196. package/dist-types/breadcrumbs/Breadcrumbs.d.ts +0 -17
  197. package/dist-types/breadcrumbs/index.d.ts +0 -2
  198. package/dist-types/breadcrumbs/internal/BreadcrumbsCollapsed.d.ts +0 -10
  199. package/dist-types/breadcrumbs/internal/BreadcrumbsContext.d.ts +0 -8
  200. package/dist-types/breadcrumbs/internal/BreadcrumbsSeparator.d.ts +0 -2
  201. package/dist-types/breadcrumbs/internal/useFocusMenuRemount.d.ts +0 -4
  202. package/dist-types/breadcrumbs-next/BreadcrumbNext.d.ts +0 -23
  203. package/dist-types/breadcrumbs-next/BreadcrumbNextLabel.d.ts +0 -4
  204. package/dist-types/breadcrumbs-next/BreadcrumbNextTrigger.d.ts +0 -8
  205. package/dist-types/breadcrumbs-next/BreadcrumbsNext.d.ts +0 -32
  206. package/dist-types/breadcrumbs-next/index.d.ts +0 -4
  207. package/dist-types/breadcrumbs-next/internal/BreadcrumbNextContext.d.ts +0 -14
  208. package/dist-types/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.d.ts +0 -9
  209. package/dist-types/breadcrumbs-next/internal/breadcrumbItems.d.ts +0 -9
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"BreadcrumbNextLabel.js","sources":["../src/breadcrumbs-next/BreadcrumbNextLabel.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithoutRef, forwardRef } from \"react\";\n\nconst withBaseName = makePrefixer(\"saltBreadcrumbNext\");\n\nexport interface BreadcrumbNextLabelProps\n extends ComponentPropsWithoutRef<\"span\"> {}\n\nexport const BreadcrumbNextLabel = forwardRef<\n HTMLSpanElement,\n BreadcrumbNextLabelProps\n>(function BreadcrumbNextLabel({ className, ...rest }, ref) {\n return (\n <span\n ref={ref}\n className={clsx(withBaseName(\"label\"), className)}\n {...rest}\n />\n );\n});\n"],"names":["BreadcrumbNextLabel"],"mappings":";;;;;AAIA,MAAM,YAAA,GAAe,aAAa,oBAAoB,CAAA;AAK/C,MAAM,mBAAA,GAAsB,WAGjC,SAASA,oBAAAA,CAAoB,EAAE,SAAA,EAAW,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AAC1D,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,IAAA,CAAK,YAAA,CAAa,OAAO,GAAG,SAAS,CAAA;AAAA,MAC/C,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;;;;"}
@@ -1,46 +0,0 @@
1
- import { makePrefixer, useForkRef, renderProps } from '@salt-ds/core';
2
- import { clsx } from 'clsx';
3
- import { forwardRef } from 'react';
4
- import { useBreadcrumbNextContext } from './internal/BreadcrumbNextContext.js';
5
-
6
- const withBaseName = makePrefixer("saltBreadcrumbNext");
7
- const withBreadcrumbsBaseName = makePrefixer("saltBreadcrumbsNext");
8
- const BreadcrumbNextTrigger = forwardRef(function BreadcrumbNextTrigger2(props, ref) {
9
- const { children, className, onClick, ...rest } = props;
10
- const context = useBreadcrumbNextContext();
11
- if (!context) {
12
- throw new Error(
13
- "BreadcrumbNextTrigger must be rendered inside BreadcrumbNext"
14
- );
15
- }
16
- const { current, href, onNavigate, placement, render, triggerRef } = context;
17
- const handleRef = useForkRef(ref, triggerRef);
18
- const isDisclosure = placement === "disclosure";
19
- const triggerClassName = clsx(
20
- isDisclosure ? withBreadcrumbsBaseName("disclosureItem") : withBaseName("trigger"),
21
- className
22
- );
23
- const isNavigable = href !== void 0;
24
- const handleClick = (event) => {
25
- onClick == null ? void 0 : onClick(event);
26
- if (isDisclosure || !event.defaultPrevented) {
27
- onNavigate == null ? void 0 : onNavigate();
28
- }
29
- };
30
- return renderProps("a", {
31
- "aria-current": current ? "page" : void 0,
32
- children,
33
- className: clsx(triggerClassName, {
34
- [withBaseName("link")]: !isDisclosure && isNavigable,
35
- [withBaseName("current")]: current
36
- }),
37
- href,
38
- onClick: isNavigable ? handleClick : onClick,
39
- ref: handleRef,
40
- render: isNavigable ? render : void 0,
41
- ...rest
42
- });
43
- });
44
-
45
- export { BreadcrumbNextTrigger };
46
- //# sourceMappingURL=BreadcrumbNextTrigger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BreadcrumbNextTrigger.js","sources":["../src/breadcrumbs-next/BreadcrumbNextTrigger.tsx"],"sourcesContent":["import { makePrefixer, renderProps, useForkRef } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type MouseEventHandler,\n type ReactNode,\n} from \"react\";\nimport { useBreadcrumbNextContext } from \"./internal/BreadcrumbNextContext\";\n\nconst withBaseName = makePrefixer(\"saltBreadcrumbNext\");\nconst withBreadcrumbsBaseName = makePrefixer(\"saltBreadcrumbsNext\");\n\nexport interface BreadcrumbNextTriggerProps\n extends Omit<ComponentPropsWithoutRef<\"a\">, \"children\" | \"color\" | \"href\"> {\n /**\n * Breadcrumb trigger content.\n */\n children?: ReactNode;\n}\n\nexport const BreadcrumbNextTrigger = forwardRef<\n HTMLAnchorElement,\n BreadcrumbNextTriggerProps\n>(function BreadcrumbNextTrigger(props, ref) {\n const { children, className, onClick, ...rest } = props;\n const context = useBreadcrumbNextContext();\n\n if (!context) {\n throw new Error(\n \"BreadcrumbNextTrigger must be rendered inside BreadcrumbNext\",\n );\n }\n\n const { current, href, onNavigate, placement, render, triggerRef } = context;\n const handleRef = useForkRef(ref, triggerRef);\n const isDisclosure = placement === \"disclosure\";\n const triggerClassName = clsx(\n isDisclosure\n ? withBreadcrumbsBaseName(\"disclosureItem\")\n : withBaseName(\"trigger\"),\n className,\n );\n const isNavigable = href !== undefined;\n const handleClick: MouseEventHandler<HTMLAnchorElement> = (event) => {\n onClick?.(event);\n\n if (isDisclosure || !event.defaultPrevented) {\n onNavigate?.();\n }\n };\n\n return renderProps(\"a\", {\n \"aria-current\": current ? \"page\" : undefined,\n children,\n className: clsx(triggerClassName, {\n [withBaseName(\"link\")]: !isDisclosure && isNavigable,\n [withBaseName(\"current\")]: current,\n }),\n href,\n onClick: isNavigable ? handleClick : onClick,\n ref: handleRef,\n render: isNavigable ? render : undefined,\n ...rest,\n });\n});\n"],"names":["BreadcrumbNextTrigger"],"mappings":";;;;;AAUA,MAAM,YAAA,GAAe,aAAa,oBAAoB,CAAA;AACtD,MAAM,uBAAA,GAA0B,aAAa,qBAAqB,CAAA;AAU3D,MAAM,qBAAA,GAAwB,UAAA,CAGnC,SAASA,sBAAAA,CAAsB,OAAO,GAAA,EAAK;AAC3C,EAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,OAAA,EAAS,GAAG,MAAK,GAAI,KAAA;AAClD,EAAA,MAAM,UAAU,wBAAA,EAAyB;AAEzC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,EAAE,OAAA,EAAS,IAAA,EAAM,YAAY,SAAA,EAAW,MAAA,EAAQ,YAAW,GAAI,OAAA;AACrE,EAAA,MAAM,SAAA,GAAY,UAAA,CAAW,GAAA,EAAK,UAAU,CAAA;AAC5C,EAAA,MAAM,eAAe,SAAA,KAAc,YAAA;AACnC,EAAA,MAAM,gBAAA,GAAmB,IAAA;AAAA,IACvB,YAAA,GACI,uBAAA,CAAwB,gBAAgB,CAAA,GACxC,aAAa,SAAS,CAAA;AAAA,IAC1B;AAAA,GACF;AACA,EAAA,MAAM,cAAc,IAAA,KAAS,MAAA;AAC7B,EAAA,MAAM,WAAA,GAAoD,CAAC,KAAA,KAAU;AACnE,IAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAU,KAAA,CAAA;AAEV,IAAA,IAAI,YAAA,IAAgB,CAAC,KAAA,CAAM,gBAAA,EAAkB;AAC3C,MAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,EAAA;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,OAAO,YAAY,GAAA,EAAK;AAAA,IACtB,cAAA,EAAgB,UAAU,MAAA,GAAS,MAAA;AAAA,IACnC,QAAA;AAAA,IACA,SAAA,EAAW,KAAK,gBAAA,EAAkB;AAAA,MAChC,CAAC,YAAA,CAAa,MAAM,CAAC,GAAG,CAAC,YAAA,IAAgB,WAAA;AAAA,MACzC,CAAC,YAAA,CAAa,SAAS,CAAC,GAAG;AAAA,KAC5B,CAAA;AAAA,IACD,IAAA;AAAA,IACA,OAAA,EAAS,cAAc,WAAA,GAAc,OAAA;AAAA,IACrC,GAAA,EAAK,SAAA;AAAA,IACL,MAAA,EAAQ,cAAc,MAAA,GAAS,MAAA;AAAA,IAC/B,GAAG;AAAA,GACJ,CAAA;AACH,CAAC;;;;"}
@@ -1,4 +0,0 @@
1
- var css_248z = ".saltBreadcrumbsNext {\n display: block;\n margin-block: var(--salt-spacing-25);\n}\n\n.saltBreadcrumbsNext-ol {\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n gap: var(--salt-spacing-100);\n justify-content: flex-start;\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.saltBreadcrumbsNext-ol-wrap {\n flex-wrap: wrap;\n}\n\n.saltBreadcrumbsNext-collapseItem {\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.saltBreadcrumbsNext-collapseButton[aria-expanded=\"true\"] {\n --saltButton-background: var(--salt-actionable-subtle-background-active);\n --saltButton-background-hover: var(--salt-actionable-subtle-background-active);\n --saltButton-text-color: var(--salt-actionable-subtle-foreground-active);\n --saltButton-text-color-hover: var(--salt-actionable-subtle-foreground-active);\n --saltButton-borderColor: var(--salt-actionable-subtle-borderColor-active);\n --saltButton-borderColor-hover: var(--salt-actionable-subtle-borderColor-active);\n cursor: var(--salt-cursor-active);\n}\n\n.saltBreadcrumbsNext-disclosure {\n background: var(--salt-container-primary-background);\n border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-selectable-borderColor-selected);\n overflow: hidden;\n overflow-y: auto;\n min-width: 10em;\n position: relative;\n z-index: var(--salt-zIndex-flyover);\n box-shadow: var(--salt-overlayable-shadow-popout);\n box-sizing: border-box;\n border-radius: var(--salt-palette-corner, 0);\n}\n\n.saltBreadcrumbsNext-disclosureList {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.saltBreadcrumbsNext-disclosureListItem {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.saltBreadcrumbsNext-disclosureItem {\n color: var(--salt-content-primary-foreground);\n background: var(--salt-selectable-background);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n font-family: var(--salt-text-fontFamily);\n line-height: var(--salt-text-lineHeight);\n letter-spacing: var(--salt-text-letterSpacing);\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n padding: calc(var(--salt-spacing-100) + var(--salt-spacing-25)) var(--salt-spacing-100);\n display: flex;\n gap: var(--salt-spacing-100);\n position: relative;\n cursor: var(--salt-cursor-hover);\n box-sizing: border-box;\n flex-shrink: 0;\n text-decoration: none;\n width: 100%;\n}\n\n.saltBreadcrumbsNext-disclosureItem:focus-visible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(var(--salt-size-fixed-100) * -2);\n}\n\n.saltBreadcrumbsNext-disclosureItem:hover {\n outline: none;\n}\n\n.saltBreadcrumbsNext-disclosureItem:hover,\n.saltBreadcrumbsNext-disclosureItem:focus-visible {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltBreadcrumbsNext-disclosureItem:active {\n background: var(--salt-selectable-background-selected);\n box-shadow:\n 0 calc(var(--salt-size-fixed-100) * -1) 0 0 var(--salt-selectable-borderColor-selected),\n 0 var(--salt-size-fixed-100) 0 0 var(--salt-selectable-borderColor-selected);\n}\n\n.saltBreadcrumbsNext-disclosureItem[aria-disabled=\"true\"],\n.saltBreadcrumbsNext-disclosureItem[aria-disabled=\"true\"]:active {\n background: var(--salt-selectable-background-disabled);\n color: var(--salt-content-primary-foreground-disabled);\n cursor: var(--salt-cursor-disabled);\n box-shadow: none;\n}\n";
2
-
3
- export { css_248z as default };
4
- //# sourceMappingURL=BreadcrumbsNext.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BreadcrumbsNext.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}