@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.
- package/CHANGELOG.md +40 -0
- package/css/salt-lab.css +352 -402
- package/dist-cjs/app-header/AppHeader.css.js +1 -1
- package/dist-cjs/button-bar/ButtonBar.css.js +1 -1
- package/dist-cjs/cascading-menu/CascadingMenuItem.css.js +1 -1
- package/dist-cjs/color-chooser/ColorChooser.css.js +1 -1
- package/dist-cjs/color-chooser/ColorPicker.css.js +1 -1
- package/dist-cjs/color-chooser/HexInput.css.js +1 -1
- package/dist-cjs/color-chooser/RGBAInput.css.js +1 -1
- package/dist-cjs/color-chooser/Swatch.css.js +1 -1
- package/dist-cjs/color-chooser/Swatches.css.js +1 -1
- package/dist-cjs/contact-details/ContactDetails.css.js +1 -1
- package/dist-cjs/content-status/ContentStatus.css.js +1 -1
- package/dist-cjs/dropdown/DropdownButton.css.js +1 -1
- package/dist-cjs/form-field-legacy/FormFieldLegacy.css.js +1 -1
- package/dist-cjs/form-field-legacy/FormHelperText.css.js +1 -1
- package/dist-cjs/index.js +4 -12
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/input-legacy/InputLegacy.css.js +1 -1
- package/dist-cjs/input-legacy/StaticInputAdornment.css.js +1 -1
- package/dist-cjs/layer-layout/LayerLayout.css.js +1 -1
- package/dist-cjs/link-button/LinkButton.css.js +6 -0
- package/dist-cjs/link-button/LinkButton.css.js.map +1 -0
- package/dist-cjs/link-button/LinkButton.js +78 -0
- package/dist-cjs/link-button/LinkButton.js.map +1 -0
- package/dist-cjs/list/List.css.js +1 -1
- package/dist-cjs/list/ListItem.css.js +1 -1
- package/dist-cjs/list-deprecated/List.css.js +1 -1
- package/dist-cjs/list-deprecated/ListItem.css.js +1 -1
- package/dist-cjs/list-next/ListItemNext.css.js +1 -1
- package/dist-cjs/list-next/ListNext.css.js +1 -1
- package/dist-cjs/logo/LogoSeparator.css.js +1 -1
- package/dist-cjs/menu-button/MenuButtonTrigger.css.js +1 -1
- package/dist-cjs/metric/MetricContent.css.js +1 -1
- package/dist-cjs/metric/MetricHeader.css.js +1 -1
- package/dist-cjs/on-solid-button/OnSolidButton.css.js +6 -0
- package/dist-cjs/on-solid-button/OnSolidButton.css.js.map +1 -0
- package/dist-cjs/on-solid-button/OnSolidButton.js +62 -0
- package/dist-cjs/on-solid-button/OnSolidButton.js.map +1 -0
- package/dist-cjs/query-input/QueryInput.css.js +1 -1
- package/dist-cjs/tabs/Tab.css.js +1 -1
- package/dist-cjs/tabs/TabActivationIndicator.css.js +1 -1
- package/dist-cjs/tabs/Tabstrip.css.js +1 -1
- package/dist-cjs/tabs/ThemeTabstrip.css.js +1 -1
- package/dist-cjs/tokenized-input/TokenizedInput.css.js +1 -1
- package/dist-cjs/tokenized-input-next/TokenizedInputNext.css.js +1 -1
- package/dist-cjs/tokenized-input-next/internal/InputPill.css.js +1 -1
- package/dist-cjs/toolbar/Toolbar.css.js +1 -1
- package/dist-cjs/toolbar/Tooltray.css.js +1 -1
- package/dist-cjs/toolbar/overflow-panel/OverflowPanel.css.js +1 -1
- package/dist-cjs/toolbar/overflow-panel/OverflowSeparator.css.js +1 -1
- package/dist-es/app-header/AppHeader.css.js +1 -1
- package/dist-es/button-bar/ButtonBar.css.js +1 -1
- package/dist-es/cascading-menu/CascadingMenuItem.css.js +1 -1
- package/dist-es/color-chooser/ColorChooser.css.js +1 -1
- package/dist-es/color-chooser/ColorPicker.css.js +1 -1
- package/dist-es/color-chooser/HexInput.css.js +1 -1
- package/dist-es/color-chooser/RGBAInput.css.js +1 -1
- package/dist-es/color-chooser/Swatch.css.js +1 -1
- package/dist-es/color-chooser/Swatches.css.js +1 -1
- package/dist-es/contact-details/ContactDetails.css.js +1 -1
- package/dist-es/content-status/ContentStatus.css.js +1 -1
- package/dist-es/dropdown/DropdownButton.css.js +1 -1
- package/dist-es/form-field-legacy/FormFieldLegacy.css.js +1 -1
- package/dist-es/form-field-legacy/FormHelperText.css.js +1 -1
- package/dist-es/index.js +2 -6
- package/dist-es/index.js.map +1 -1
- package/dist-es/input-legacy/InputLegacy.css.js +1 -1
- package/dist-es/input-legacy/StaticInputAdornment.css.js +1 -1
- package/dist-es/layer-layout/LayerLayout.css.js +1 -1
- package/dist-es/link-button/LinkButton.css.js +4 -0
- package/dist-es/link-button/LinkButton.css.js.map +1 -0
- package/dist-es/link-button/LinkButton.js +76 -0
- package/dist-es/link-button/LinkButton.js.map +1 -0
- package/dist-es/list/List.css.js +1 -1
- package/dist-es/list/ListItem.css.js +1 -1
- package/dist-es/list-deprecated/List.css.js +1 -1
- package/dist-es/list-deprecated/ListItem.css.js +1 -1
- package/dist-es/list-next/ListItemNext.css.js +1 -1
- package/dist-es/list-next/ListNext.css.js +1 -1
- package/dist-es/logo/LogoSeparator.css.js +1 -1
- package/dist-es/menu-button/MenuButtonTrigger.css.js +1 -1
- package/dist-es/metric/MetricContent.css.js +1 -1
- package/dist-es/metric/MetricHeader.css.js +1 -1
- package/dist-es/on-solid-button/OnSolidButton.css.js +4 -0
- package/dist-es/on-solid-button/OnSolidButton.css.js.map +1 -0
- package/dist-es/on-solid-button/OnSolidButton.js +60 -0
- package/dist-es/on-solid-button/OnSolidButton.js.map +1 -0
- package/dist-es/query-input/QueryInput.css.js +1 -1
- package/dist-es/tabs/Tab.css.js +1 -1
- package/dist-es/tabs/TabActivationIndicator.css.js +1 -1
- package/dist-es/tabs/Tabstrip.css.js +1 -1
- package/dist-es/tabs/ThemeTabstrip.css.js +1 -1
- package/dist-es/tokenized-input/TokenizedInput.css.js +1 -1
- package/dist-es/tokenized-input-next/TokenizedInputNext.css.js +1 -1
- package/dist-es/tokenized-input-next/internal/InputPill.css.js +1 -1
- package/dist-es/toolbar/Toolbar.css.js +1 -1
- package/dist-es/toolbar/Tooltray.css.js +1 -1
- package/dist-es/toolbar/overflow-panel/OverflowPanel.css.js +1 -1
- package/dist-es/toolbar/overflow-panel/OverflowSeparator.css.js +1 -1
- package/dist-types/button-bar/internal/DescendantContext.d.ts +1 -1
- package/dist-types/combo-box-deprecated/internal/MultiSelectComboBox.d.ts +1 -1
- package/dist-types/common-hooks/collectionProvider.d.ts +1 -1
- package/dist-types/contact-details/MailLinkComponent.d.ts +1 -1
- package/dist-types/form-field-legacy/FormActivationIndicator.d.ts +1 -1
- package/dist-types/form-field-legacy/FormHelperText.d.ts +1 -1
- package/dist-types/form-field-legacy/FormLabel.d.ts +1 -1
- package/dist-types/form-field-legacy/NecessityIndicator.d.ts +1 -1
- package/dist-types/form-field-legacy/StatusIndicator.d.ts +1 -1
- package/dist-types/index.d.ts +2 -2
- package/dist-types/link-button/LinkButton.d.ts +26 -0
- package/dist-types/link-button/index.d.ts +1 -0
- package/dist-types/list-deprecated/internal/DescendantContext.d.ts +1 -1
- package/dist-types/list-deprecated/internal/Highlighter.d.ts +1 -1
- package/dist-types/on-solid-button/OnSolidButton.d.ts +12 -0
- package/dist-types/on-solid-button/index.d.ts +1 -0
- package/dist-types/query-input/internal/CategoryList.d.ts +1 -1
- package/dist-types/query-input/internal/SearchList.d.ts +1 -1
- package/dist-types/query-input/internal/ValueList.d.ts +1 -1
- package/dist-types/query-input/internal/ValueSelector.d.ts +1 -1
- package/dist-types/responsive/overflowUtils.d.ts +1 -1
- package/dist-types/tabs/TabActivationIndicator.d.ts +1 -1
- package/dist-types/tokenized-input/internal/InputPill.d.ts +1 -1
- package/dist-types/tokenized-input-next/internal/InputPill.d.ts +1 -1
- package/dist-types/toolbar/Tooltray.d.ts +1 -1
- package/package.json +2 -2
- package/dist-cjs/breadcrumbs/Breadcrumb.css.js +0 -6
- package/dist-cjs/breadcrumbs/Breadcrumb.css.js.map +0 -1
- package/dist-cjs/breadcrumbs/Breadcrumb.js +0 -90
- package/dist-cjs/breadcrumbs/Breadcrumb.js.map +0 -1
- package/dist-cjs/breadcrumbs/Breadcrumbs.css.js +0 -6
- package/dist-cjs/breadcrumbs/Breadcrumbs.css.js.map +0 -1
- package/dist-cjs/breadcrumbs/Breadcrumbs.js +0 -140
- package/dist-cjs/breadcrumbs/Breadcrumbs.js.map +0 -1
- package/dist-cjs/breadcrumbs/internal/BreadcrumbsCollapsed.js +0 -63
- package/dist-cjs/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +0 -1
- package/dist-cjs/breadcrumbs/internal/BreadcrumbsContext.js +0 -20
- package/dist-cjs/breadcrumbs/internal/BreadcrumbsContext.js.map +0 -1
- package/dist-cjs/breadcrumbs/internal/BreadcrumbsSeparator.js +0 -9
- package/dist-cjs/breadcrumbs/internal/BreadcrumbsSeparator.js.map +0 -1
- package/dist-cjs/breadcrumbs/internal/useFocusMenuRemount.js +0 -22
- package/dist-cjs/breadcrumbs/internal/useFocusMenuRemount.js.map +0 -1
- package/dist-cjs/breadcrumbs-next/BreadcrumbNext.css.js +0 -6
- package/dist-cjs/breadcrumbs-next/BreadcrumbNext.css.js.map +0 -1
- package/dist-cjs/breadcrumbs-next/BreadcrumbNext.js +0 -99
- package/dist-cjs/breadcrumbs-next/BreadcrumbNext.js.map +0 -1
- package/dist-cjs/breadcrumbs-next/BreadcrumbNextLabel.js +0 -21
- package/dist-cjs/breadcrumbs-next/BreadcrumbNextLabel.js.map +0 -1
- package/dist-cjs/breadcrumbs-next/BreadcrumbNextTrigger.js +0 -48
- package/dist-cjs/breadcrumbs-next/BreadcrumbNextTrigger.js.map +0 -1
- package/dist-cjs/breadcrumbs-next/BreadcrumbsNext.css.js +0 -6
- package/dist-cjs/breadcrumbs-next/BreadcrumbsNext.css.js.map +0 -1
- package/dist-cjs/breadcrumbs-next/BreadcrumbsNext.js +0 -146
- package/dist-cjs/breadcrumbs-next/BreadcrumbsNext.js.map +0 -1
- package/dist-cjs/breadcrumbs-next/internal/BreadcrumbNextContext.js +0 -12
- package/dist-cjs/breadcrumbs-next/internal/BreadcrumbNextContext.js.map +0 -1
- package/dist-cjs/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.js +0 -236
- package/dist-cjs/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.js.map +0 -1
- package/dist-cjs/breadcrumbs-next/internal/breadcrumbItems.js +0 -21
- package/dist-cjs/breadcrumbs-next/internal/breadcrumbItems.js.map +0 -1
- package/dist-es/breadcrumbs/Breadcrumb.css.js +0 -4
- package/dist-es/breadcrumbs/Breadcrumb.css.js.map +0 -1
- package/dist-es/breadcrumbs/Breadcrumb.js +0 -88
- package/dist-es/breadcrumbs/Breadcrumb.js.map +0 -1
- package/dist-es/breadcrumbs/Breadcrumbs.css.js +0 -4
- package/dist-es/breadcrumbs/Breadcrumbs.css.js.map +0 -1
- package/dist-es/breadcrumbs/Breadcrumbs.js +0 -138
- package/dist-es/breadcrumbs/Breadcrumbs.js.map +0 -1
- package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js +0 -61
- package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +0 -1
- package/dist-es/breadcrumbs/internal/BreadcrumbsContext.js +0 -17
- package/dist-es/breadcrumbs/internal/BreadcrumbsContext.js.map +0 -1
- package/dist-es/breadcrumbs/internal/BreadcrumbsSeparator.js +0 -7
- package/dist-es/breadcrumbs/internal/BreadcrumbsSeparator.js.map +0 -1
- package/dist-es/breadcrumbs/internal/useFocusMenuRemount.js +0 -20
- package/dist-es/breadcrumbs/internal/useFocusMenuRemount.js.map +0 -1
- package/dist-es/breadcrumbs-next/BreadcrumbNext.css.js +0 -4
- package/dist-es/breadcrumbs-next/BreadcrumbNext.css.js.map +0 -1
- package/dist-es/breadcrumbs-next/BreadcrumbNext.js +0 -97
- package/dist-es/breadcrumbs-next/BreadcrumbNext.js.map +0 -1
- package/dist-es/breadcrumbs-next/BreadcrumbNextLabel.js +0 -19
- package/dist-es/breadcrumbs-next/BreadcrumbNextLabel.js.map +0 -1
- package/dist-es/breadcrumbs-next/BreadcrumbNextTrigger.js +0 -46
- package/dist-es/breadcrumbs-next/BreadcrumbNextTrigger.js.map +0 -1
- package/dist-es/breadcrumbs-next/BreadcrumbsNext.css.js +0 -4
- package/dist-es/breadcrumbs-next/BreadcrumbsNext.css.js.map +0 -1
- package/dist-es/breadcrumbs-next/BreadcrumbsNext.js +0 -144
- package/dist-es/breadcrumbs-next/BreadcrumbsNext.js.map +0 -1
- package/dist-es/breadcrumbs-next/internal/BreadcrumbNextContext.js +0 -9
- package/dist-es/breadcrumbs-next/internal/BreadcrumbNextContext.js.map +0 -1
- package/dist-es/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.js +0 -234
- package/dist-es/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.js.map +0 -1
- package/dist-es/breadcrumbs-next/internal/breadcrumbItems.js +0 -19
- package/dist-es/breadcrumbs-next/internal/breadcrumbItems.js.map +0 -1
- package/dist-types/breadcrumbs/Breadcrumb.d.ts +0 -18
- package/dist-types/breadcrumbs/Breadcrumbs.d.ts +0 -17
- package/dist-types/breadcrumbs/index.d.ts +0 -2
- package/dist-types/breadcrumbs/internal/BreadcrumbsCollapsed.d.ts +0 -10
- package/dist-types/breadcrumbs/internal/BreadcrumbsContext.d.ts +0 -8
- package/dist-types/breadcrumbs/internal/BreadcrumbsSeparator.d.ts +0 -2
- package/dist-types/breadcrumbs/internal/useFocusMenuRemount.d.ts +0 -4
- package/dist-types/breadcrumbs-next/BreadcrumbNext.d.ts +0 -23
- package/dist-types/breadcrumbs-next/BreadcrumbNextLabel.d.ts +0 -4
- package/dist-types/breadcrumbs-next/BreadcrumbNextTrigger.d.ts +0 -8
- package/dist-types/breadcrumbs-next/BreadcrumbsNext.d.ts +0 -32
- package/dist-types/breadcrumbs-next/index.d.ts +0 -4
- package/dist-types/breadcrumbs-next/internal/BreadcrumbNextContext.d.ts +0 -14
- package/dist-types/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.d.ts +0 -9
- 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":";;;;"}
|