@salt-ds/core 1.73.0 → 1.75.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/css/salt-core.css +283 -50
  3. package/dist-cjs/dialog/Dialog.css.js +1 -1
  4. package/dist-cjs/drawer/Drawer.css.js +1 -1
  5. package/dist-cjs/drawer/Drawer.js +54 -6
  6. package/dist-cjs/drawer/Drawer.js.map +1 -1
  7. package/dist-cjs/drawer/DrawerContext.js +2 -0
  8. package/dist-cjs/drawer/DrawerContext.js.map +1 -1
  9. package/dist-cjs/drawer/DrawerFooter.css.js +1 -1
  10. package/dist-cjs/drawer/DrawerHeader.css.js +1 -1
  11. package/dist-cjs/drawer/DrawerHeader.js +6 -3
  12. package/dist-cjs/drawer/DrawerHeader.js.map +1 -1
  13. package/dist-cjs/drawer/internal/DrawerResizeGuide.css.js +6 -0
  14. package/dist-cjs/drawer/internal/DrawerResizeGuide.css.js.map +1 -0
  15. package/dist-cjs/drawer/internal/DrawerResizeGuide.js +44 -0
  16. package/dist-cjs/drawer/internal/DrawerResizeGuide.js.map +1 -0
  17. package/dist-cjs/drawer/internal/DrawerResizeHandle.css.js +6 -0
  18. package/dist-cjs/drawer/internal/DrawerResizeHandle.css.js.map +1 -0
  19. package/dist-cjs/drawer/internal/DrawerResizeHandle.js +43 -0
  20. package/dist-cjs/drawer/internal/DrawerResizeHandle.js.map +1 -0
  21. package/dist-cjs/drawer/internal/useDrawerResize.js +519 -0
  22. package/dist-cjs/drawer/internal/useDrawerResize.js.map +1 -0
  23. package/dist-cjs/interactable-card/InteractableCard.js +2 -1
  24. package/dist-cjs/interactable-card/InteractableCard.js.map +1 -1
  25. package/dist-cjs/link-button/LinkButton.css.js +1 -1
  26. package/dist-cjs/mega-menu/useMegaMenuNavigation.js +11 -20
  27. package/dist-cjs/mega-menu/useMegaMenuNavigation.js.map +1 -1
  28. package/dist-cjs/menu/MenuAlignmentContext.js +55 -0
  29. package/dist-cjs/menu/MenuAlignmentContext.js.map +1 -0
  30. package/dist-cjs/menu/MenuBase.js +9 -3
  31. package/dist-cjs/menu/MenuBase.js.map +1 -1
  32. package/dist-cjs/menu/MenuGroup.js +42 -3
  33. package/dist-cjs/menu/MenuGroup.js.map +1 -1
  34. package/dist-cjs/menu/MenuGroupContext.js +27 -0
  35. package/dist-cjs/menu/MenuGroupContext.js.map +1 -0
  36. package/dist-cjs/menu/MenuItem.css.js +1 -1
  37. package/dist-cjs/menu/MenuItem.js +176 -50
  38. package/dist-cjs/menu/MenuItem.js.map +1 -1
  39. package/dist-cjs/menu/MenuPanel.js +12 -3
  40. package/dist-cjs/menu/MenuPanel.js.map +1 -1
  41. package/dist-cjs/menu/MenuPanelContext.js +3 -1
  42. package/dist-cjs/menu/MenuPanelContext.js.map +1 -1
  43. package/dist-cjs/pill-input/PillInput.css.js +1 -1
  44. package/dist-cjs/semantic-icon-provider/SemanticIconProvider.js +2 -2
  45. package/dist-cjs/semantic-icon-provider/SemanticIconProvider.js.map +1 -1
  46. package/dist-cjs/stepper/Step.js +12 -1
  47. package/dist-cjs/stepper/Step.js.map +1 -1
  48. package/dist-cjs/stepper/internal/StepConnector.css.js +1 -1
  49. package/dist-cjs/stepper/internal/StepText.css.js +1 -1
  50. package/dist-cjs/stepper/internal/StepText.js +4 -1
  51. package/dist-cjs/stepper/internal/StepText.js.map +1 -1
  52. package/dist-cjs/stepper/internal/hasActiveStep.js +12 -0
  53. package/dist-cjs/stepper/internal/hasActiveStep.js.map +1 -0
  54. package/dist-cjs/toggle-button/ToggleButton.css.js +1 -1
  55. package/dist-cjs/tree/TreeNodeTrigger.css.js +1 -1
  56. package/dist-cjs/tree/TreeNodeTrigger.js +1 -2
  57. package/dist-cjs/tree/TreeNodeTrigger.js.map +1 -1
  58. package/dist-es/dialog/Dialog.css.js +1 -1
  59. package/dist-es/drawer/Drawer.css.js +1 -1
  60. package/dist-es/drawer/Drawer.js +54 -6
  61. package/dist-es/drawer/Drawer.js.map +1 -1
  62. package/dist-es/drawer/DrawerContext.js +2 -0
  63. package/dist-es/drawer/DrawerContext.js.map +1 -1
  64. package/dist-es/drawer/DrawerFooter.css.js +1 -1
  65. package/dist-es/drawer/DrawerHeader.css.js +1 -1
  66. package/dist-es/drawer/DrawerHeader.js +6 -3
  67. package/dist-es/drawer/DrawerHeader.js.map +1 -1
  68. package/dist-es/drawer/internal/DrawerResizeGuide.css.js +4 -0
  69. package/dist-es/drawer/internal/DrawerResizeGuide.css.js.map +1 -0
  70. package/dist-es/drawer/internal/DrawerResizeGuide.js +42 -0
  71. package/dist-es/drawer/internal/DrawerResizeGuide.js.map +1 -0
  72. package/dist-es/drawer/internal/DrawerResizeHandle.css.js +4 -0
  73. package/dist-es/drawer/internal/DrawerResizeHandle.css.js.map +1 -0
  74. package/dist-es/drawer/internal/DrawerResizeHandle.js +41 -0
  75. package/dist-es/drawer/internal/DrawerResizeHandle.js.map +1 -0
  76. package/dist-es/drawer/internal/useDrawerResize.js +517 -0
  77. package/dist-es/drawer/internal/useDrawerResize.js.map +1 -0
  78. package/dist-es/interactable-card/InteractableCard.js +2 -1
  79. package/dist-es/interactable-card/InteractableCard.js.map +1 -1
  80. package/dist-es/link-button/LinkButton.css.js +1 -1
  81. package/dist-es/mega-menu/useMegaMenuNavigation.js +11 -20
  82. package/dist-es/mega-menu/useMegaMenuNavigation.js.map +1 -1
  83. package/dist-es/menu/MenuAlignmentContext.js +50 -0
  84. package/dist-es/menu/MenuAlignmentContext.js.map +1 -0
  85. package/dist-es/menu/MenuBase.js +9 -3
  86. package/dist-es/menu/MenuBase.js.map +1 -1
  87. package/dist-es/menu/MenuGroup.js +44 -5
  88. package/dist-es/menu/MenuGroup.js.map +1 -1
  89. package/dist-es/menu/MenuGroupContext.js +23 -0
  90. package/dist-es/menu/MenuGroupContext.js.map +1 -0
  91. package/dist-es/menu/MenuItem.css.js +1 -1
  92. package/dist-es/menu/MenuItem.js +177 -51
  93. package/dist-es/menu/MenuItem.js.map +1 -1
  94. package/dist-es/menu/MenuPanel.js +12 -3
  95. package/dist-es/menu/MenuPanel.js.map +1 -1
  96. package/dist-es/menu/MenuPanelContext.js +3 -1
  97. package/dist-es/menu/MenuPanelContext.js.map +1 -1
  98. package/dist-es/pill-input/PillInput.css.js +1 -1
  99. package/dist-es/semantic-icon-provider/SemanticIconProvider.js +3 -3
  100. package/dist-es/semantic-icon-provider/SemanticIconProvider.js.map +1 -1
  101. package/dist-es/stepper/Step.js +12 -1
  102. package/dist-es/stepper/Step.js.map +1 -1
  103. package/dist-es/stepper/internal/StepConnector.css.js +1 -1
  104. package/dist-es/stepper/internal/StepText.css.js +1 -1
  105. package/dist-es/stepper/internal/StepText.js +4 -1
  106. package/dist-es/stepper/internal/StepText.js.map +1 -1
  107. package/dist-es/stepper/internal/hasActiveStep.js +10 -0
  108. package/dist-es/stepper/internal/hasActiveStep.js.map +1 -0
  109. package/dist-es/toggle-button/ToggleButton.css.js +1 -1
  110. package/dist-es/tree/TreeNodeTrigger.css.js +1 -1
  111. package/dist-es/tree/TreeNodeTrigger.js +1 -2
  112. package/dist-es/tree/TreeNodeTrigger.js.map +1 -1
  113. package/dist-types/drawer/Drawer.d.ts +6 -0
  114. package/dist-types/drawer/DrawerContext.d.ts +3 -0
  115. package/dist-types/drawer/DrawerHeader.d.ts +1 -1
  116. package/dist-types/drawer/internal/DrawerResizeGuide.d.ts +7 -0
  117. package/dist-types/drawer/internal/DrawerResizeHandle.d.ts +8 -0
  118. package/dist-types/drawer/internal/index.d.ts +3 -0
  119. package/dist-types/drawer/internal/useDrawerResize.d.ts +34 -0
  120. package/dist-types/menu/MenuAlignmentContext.d.ts +14 -0
  121. package/dist-types/menu/MenuGroup.d.ts +26 -4
  122. package/dist-types/menu/MenuGroupContext.d.ts +10 -0
  123. package/dist-types/menu/MenuItem.d.ts +4 -0
  124. package/dist-types/menu/MenuPanelContext.d.ts +2 -0
  125. package/dist-types/stepper/internal/StepText.d.ts +1 -1
  126. package/dist-types/stepper/internal/hasActiveStep.d.ts +2 -0
  127. package/package.json +2 -2
@@ -6,19 +6,52 @@ var styles = require('@salt-ds/styles');
6
6
  var window$1 = require('@salt-ds/window');
7
7
  var clsx = require('clsx');
8
8
  var React = require('react');
9
+ require('../checkbox/Checkbox.js');
10
+ require('../checkbox/CheckboxGroup.js');
11
+ var CheckboxIcon = require('../checkbox/CheckboxIcon.js');
12
+ require('../radio-button/RadioButton.js');
13
+ require('../radio-button/RadioButtonGroup.js');
14
+ var RadioButtonIcon = require('../radio-button/RadioButtonIcon.js');
9
15
  var SemanticIconProvider = require('../semantic-icon-provider/SemanticIconProvider.js');
10
16
  var makePrefixer = require('../utils/makePrefixer.js');
17
+ var useIsomorphicLayoutEffect = require('../utils/useIsomorphicLayoutEffect.js');
11
18
  require('../utils/useFloatingUI/useFloatingUI.js');
12
19
  var useForkRef = require('../utils/useForkRef.js');
13
20
  require('../utils/useId.js');
14
21
  require('../salt-provider/SaltProvider.js');
15
22
  require('../viewport/ViewportProvider.js');
23
+ var MenuAlignmentContext = require('./MenuAlignmentContext.js');
16
24
  var MenuContext = require('./MenuContext.js');
25
+ var MenuGroupContext = require('./MenuGroupContext.js');
17
26
  var MenuItem$1 = require('./MenuItem.css.js');
18
27
  var MenuPanelContext = require('./MenuPanelContext.js');
19
28
  var MenuTriggerContext = require('./MenuTriggerContext.js');
20
29
 
21
30
  const withBaseName = makePrefixer.makePrefixer("saltMenuItem");
31
+ const leadingSlotClassNames = [
32
+ withBaseName("selectionIcon"),
33
+ withBaseName("selectionIconPlaceholder"),
34
+ withBaseName("iconPlaceholder")
35
+ ];
36
+ function hasLeadingIcon(item) {
37
+ var _a;
38
+ for (const node of Array.from((item == null ? void 0 : item.childNodes) ?? [])) {
39
+ if (node.nodeType === node.TEXT_NODE) {
40
+ if ((_a = node.textContent) == null ? void 0 : _a.trim()) {
41
+ return false;
42
+ }
43
+ } else if (node.nodeType === node.ELEMENT_NODE) {
44
+ const { classList } = node;
45
+ if (!leadingSlotClassNames.some(
46
+ (className) => classList.contains(className)
47
+ )) {
48
+ return classList.contains("saltIcon");
49
+ }
50
+ }
51
+ }
52
+ return false;
53
+ }
54
+ let missingValueWarningShown = false;
22
55
  const MenuItem = React.forwardRef(
23
56
  function MenuItem2(props, ref) {
24
57
  const {
@@ -28,12 +61,26 @@ const MenuItem = React.forwardRef(
28
61
  onClick,
29
62
  onFocus,
30
63
  onKeyDown,
64
+ value,
31
65
  ...rest
32
66
  } = props;
33
67
  const { triggersSubmenu, blurActive } = MenuTriggerContext.useIsMenuTrigger();
34
68
  const { setTriggerDisabled } = MenuContext.useMenuContext();
35
69
  const { ExpandGroupIcon } = SemanticIconProvider.useIcon();
36
- const { activeIndex, getItemProps, setFocusInside } = MenuPanelContext.useMenuPanelContext();
70
+ const {
71
+ activeIndex,
72
+ getItemProps,
73
+ setFocusInside,
74
+ hasSelectionIcon,
75
+ registerPanelSelectionIcon
76
+ } = MenuPanelContext.useMenuPanelContext();
77
+ const {
78
+ reserveIconSpace,
79
+ reserveSelectionIconSpace,
80
+ registerIcon,
81
+ registerSelectionIcon
82
+ } = MenuAlignmentContext.useMenuAlignment();
83
+ const { isSelected, select, selectionVariant } = MenuGroupContext.useMenuGroup();
37
84
  const item = react.useListItem();
38
85
  const tree = react.useFloatingTree();
39
86
  const active = item.index === activeIndex;
@@ -43,57 +90,136 @@ const MenuItem = React.forwardRef(
43
90
  css: MenuItem$1,
44
91
  window: targetWindow
45
92
  });
46
- const handleRef = useForkRef.useForkRef(ref, item.ref);
93
+ const itemRef = React.useRef(null);
94
+ const listItemRef = useForkRef.useForkRef(item.ref, itemRef);
95
+ const handleRef = useForkRef.useForkRef(ref, listItemRef);
96
+ const activationKeyRef = React.useRef(null);
97
+ const [hasIcon, setHasIcon] = React.useState(false);
98
+ const insideSelectableGroup = selectionVariant !== void 0 && !triggersSubmenu;
99
+ const selectable = insideSelectableGroup && value !== void 0;
100
+ const selected = selectable && isSelected(value);
101
+ const alignIconWithSelectionIcon = hasSelectionIcon && !selectable && !reserveSelectionIconSpace && (hasIcon || reserveIconSpace);
102
+ useIsomorphicLayoutEffect.useIsomorphicLayoutEffect(() => {
103
+ setHasIcon(hasLeadingIcon(itemRef.current));
104
+ });
105
+ useIsomorphicLayoutEffect.useIsomorphicLayoutEffect(
106
+ () => hasIcon ? registerIcon() : void 0,
107
+ [hasIcon, registerIcon]
108
+ );
109
+ useIsomorphicLayoutEffect.useIsomorphicLayoutEffect(() => {
110
+ if (!selectable) {
111
+ return void 0;
112
+ }
113
+ const unregisterFromGroup = registerSelectionIcon();
114
+ const unregisterFromPanel = registerPanelSelectionIcon();
115
+ return () => {
116
+ unregisterFromGroup();
117
+ unregisterFromPanel();
118
+ };
119
+ }, [selectable, registerSelectionIcon, registerPanelSelectionIcon]);
47
120
  React.useEffect(() => {
48
- setTriggerDisabled(!!disabled);
49
- }, [disabled, setTriggerDisabled]);
50
- return /* @__PURE__ */ jsxRuntime.jsxs(
51
- "div",
52
- {
53
- className: clsx.clsx(
54
- withBaseName(),
55
- {
56
- [withBaseName("blurActive")]: blurActive
57
- },
58
- className
59
- ),
60
- role: "menuitem",
61
- "aria-disabled": disabled || void 0,
62
- ...getItemProps({
63
- tabIndex: disabled ? void 0 : active ? 0 : -1,
64
- onKeyDown(event) {
65
- const element = event.currentTarget;
66
- onKeyDown == null ? void 0 : onKeyDown(event);
67
- if ((event.key === " " || event.key === "Enter") && !triggersSubmenu && !disabled) {
68
- event.preventDefault();
69
- const { view, ...eventInit } = event;
70
- queueMicrotask(() => {
71
- element.dispatchEvent(
72
- new window.MouseEvent("click", eventInit)
73
- );
74
- });
75
- }
76
- },
77
- onClick(event) {
78
- if (!disabled) {
79
- onClick == null ? void 0 : onClick(event);
80
- if (!triggersSubmenu) {
81
- tree == null ? void 0 : tree.events.emit("click");
82
- }
83
- }
84
- },
85
- onFocus(event) {
86
- onFocus == null ? void 0 : onFocus(event);
87
- setFocusInside(true);
88
- },
89
- ...rest
90
- }),
91
- ref: handleRef,
92
- children: [
93
- children,
94
- triggersSubmenu && /* @__PURE__ */ jsxRuntime.jsx(ExpandGroupIcon, { className: withBaseName("expandIcon"), "aria-hidden": true })
95
- ]
121
+ if (triggersSubmenu) {
122
+ setTriggerDisabled(!!disabled);
123
+ }
124
+ }, [disabled, setTriggerDisabled, triggersSubmenu]);
125
+ React.useEffect(() => {
126
+ if (process.env.NODE_ENV !== "production") {
127
+ if (insideSelectableGroup && value === void 0 && !missingValueWarningShown) {
128
+ missingValueWarningShown = true;
129
+ console.warn(
130
+ "Salt: MenuItem requires a `value` to be selectable inside a MenuGroup with `selectionVariant` set. It will behave as a regular menu item."
131
+ );
132
+ }
96
133
  }
134
+ }, [insideSelectableGroup, value]);
135
+ const shouldCloseMenu = () => !selectable || activationKeyRef.current === "Enter";
136
+ let role = "menuitem";
137
+ if (selectable) {
138
+ role = selectionVariant === "single" ? "menuitemradio" : "menuitemcheckbox";
139
+ }
140
+ return (
141
+ // biome-ignore lint/a11y/useAriaPropsSupportedByRole: Biome can't detect the role provided by the role variable. aria-checked is only used when the role is appropriate.
142
+ /* @__PURE__ */ jsxRuntime.jsxs(
143
+ "div",
144
+ {
145
+ className: clsx.clsx(
146
+ withBaseName(),
147
+ {
148
+ [withBaseName("blurActive")]: blurActive,
149
+ [withBaseName("selectionAlignedIcon")]: alignIconWithSelectionIcon
150
+ },
151
+ className
152
+ ),
153
+ role,
154
+ "aria-checked": selectable ? selected : void 0,
155
+ "aria-disabled": disabled || void 0,
156
+ ...getItemProps({
157
+ tabIndex: active ? 0 : -1,
158
+ onKeyDown(event) {
159
+ const element = event.currentTarget;
160
+ const { key } = event;
161
+ onKeyDown == null ? void 0 : onKeyDown(event);
162
+ if ((key === " " || key === "Enter") && !triggersSubmenu) {
163
+ event.preventDefault();
164
+ if (disabled || event.repeat) {
165
+ return;
166
+ }
167
+ const { view, ...eventInit } = event;
168
+ queueMicrotask(() => {
169
+ activationKeyRef.current = key;
170
+ element.dispatchEvent(
171
+ new window.MouseEvent("click", eventInit)
172
+ );
173
+ activationKeyRef.current = null;
174
+ });
175
+ }
176
+ },
177
+ onClick(event) {
178
+ if (!disabled) {
179
+ onClick == null ? void 0 : onClick(event);
180
+ if (selectable) {
181
+ select(event, value);
182
+ }
183
+ if (!triggersSubmenu && shouldCloseMenu()) {
184
+ tree == null ? void 0 : tree.events.emit("click");
185
+ }
186
+ }
187
+ },
188
+ onFocus(event) {
189
+ onFocus == null ? void 0 : onFocus(event);
190
+ setFocusInside(true);
191
+ },
192
+ ...rest
193
+ }),
194
+ ref: handleRef,
195
+ children: [
196
+ selectable && selectionVariant === "single" && /* @__PURE__ */ jsxRuntime.jsx(
197
+ RadioButtonIcon.RadioButtonIcon,
198
+ {
199
+ checked: selected,
200
+ className: withBaseName("selectionIcon")
201
+ }
202
+ ),
203
+ selectable && selectionVariant === "multiple" && /* @__PURE__ */ jsxRuntime.jsx(
204
+ CheckboxIcon.CheckboxIcon,
205
+ {
206
+ checked: selected,
207
+ className: withBaseName("selectionIcon")
208
+ }
209
+ ),
210
+ reserveSelectionIconSpace && !selectable && /* @__PURE__ */ jsxRuntime.jsx(
211
+ "span",
212
+ {
213
+ "aria-hidden": true,
214
+ className: withBaseName("selectionIconPlaceholder")
215
+ }
216
+ ),
217
+ reserveIconSpace && !hasIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, className: withBaseName("iconPlaceholder") }),
218
+ children,
219
+ triggersSubmenu && /* @__PURE__ */ jsxRuntime.jsx(ExpandGroupIcon, { className: withBaseName("expandIcon"), "aria-hidden": true })
220
+ ]
221
+ }
222
+ )
97
223
  );
98
224
  }
99
225
  );
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItem.js","sources":["../src/menu/MenuItem.tsx"],"sourcesContent":["import { useFloatingTree, useListItem } from \"@floating-ui/react\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type FocusEvent,\n forwardRef,\n type KeyboardEvent,\n type MouseEvent,\n useEffect,\n} from \"react\";\nimport { useIcon } from \"../semantic-icon-provider\";\nimport { makePrefixer, useForkRef } from \"../utils\";\nimport { useMenuContext } from \"./MenuContext\";\nimport menuItemCss from \"./MenuItem.css\";\nimport { useMenuPanelContext } from \"./MenuPanelContext\";\nimport { useIsMenuTrigger } from \"./MenuTriggerContext\";\nexport interface MenuItemProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * If `true`, the item will be disabled.\n */\n disabled?: boolean;\n}\n\nconst withBaseName = makePrefixer(\"saltMenuItem\");\n\nexport const MenuItem = forwardRef<HTMLDivElement, MenuItemProps>(\n function MenuItem(props, ref) {\n const {\n children,\n className,\n disabled,\n onClick,\n onFocus,\n onKeyDown,\n ...rest\n } = props;\n\n const { triggersSubmenu, blurActive } = useIsMenuTrigger();\n const { setTriggerDisabled } = useMenuContext();\n const { ExpandGroupIcon } = useIcon();\n const { activeIndex, getItemProps, setFocusInside } = useMenuPanelContext();\n const item = useListItem();\n const tree = useFloatingTree();\n const active = item.index === activeIndex;\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-menu-item\",\n css: menuItemCss,\n window: targetWindow,\n });\n const handleRef = useForkRef<HTMLDivElement>(ref, item.ref);\n\n useEffect(() => {\n setTriggerDisabled(!!disabled);\n }, [disabled, setTriggerDisabled]);\n\n return (\n <div\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"blurActive\")]: blurActive,\n },\n className,\n )}\n role=\"menuitem\"\n aria-disabled={disabled || undefined}\n {...getItemProps({\n tabIndex: disabled ? undefined : active ? 0 : -1,\n onKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n const element = event.currentTarget;\n onKeyDown?.(event);\n if (\n (event.key === \" \" || event.key === \"Enter\") &&\n !triggersSubmenu &&\n !disabled\n ) {\n event.preventDefault();\n const { view, ...eventInit } = event;\n queueMicrotask(() => {\n element.dispatchEvent(\n new window.MouseEvent(\"click\", eventInit),\n );\n });\n }\n },\n onClick(event: MouseEvent<HTMLDivElement>) {\n if (!disabled) {\n onClick?.(event);\n if (!triggersSubmenu) {\n tree?.events.emit(\"click\");\n }\n }\n },\n onFocus(event: FocusEvent<HTMLDivElement>) {\n onFocus?.(event);\n setFocusInside(true);\n },\n ...rest,\n })}\n ref={handleRef}\n >\n {children}\n {triggersSubmenu && (\n <ExpandGroupIcon className={withBaseName(\"expandIcon\")} aria-hidden />\n )}\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MenuItem","useIsMenuTrigger","useMenuContext","useIcon","useMenuPanelContext","useListItem","useFloatingTree","useWindow","useComponentCssInjection","menuItemCss","useForkRef","useEffect","jsxs","clsx"],"mappings":"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"}
1
+ {"version":3,"file":"MenuItem.js","sources":["../src/menu/MenuItem.tsx"],"sourcesContent":["import { useFloatingTree, useListItem } from \"@floating-ui/react\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type FocusEvent,\n forwardRef,\n type KeyboardEvent,\n type MouseEvent,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { CheckboxIcon } from \"../checkbox\";\nimport { RadioButtonIcon } from \"../radio-button\";\nimport { useIcon } from \"../semantic-icon-provider\";\nimport { makePrefixer, useForkRef, useIsomorphicLayoutEffect } from \"../utils\";\nimport { useMenuAlignment } from \"./MenuAlignmentContext\";\nimport { useMenuContext } from \"./MenuContext\";\nimport { useMenuGroup } from \"./MenuGroupContext\";\nimport menuItemCss from \"./MenuItem.css\";\nimport { useMenuPanelContext } from \"./MenuPanelContext\";\nimport { useIsMenuTrigger } from \"./MenuTriggerContext\";\nexport interface MenuItemProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * If `true`, the item will be disabled.\n */\n disabled?: boolean;\n /**\n * The value of the item. Identifies the item inside a `MenuGroup` whose `selectionVariant` is \"single\" or \"multiple\".\n */\n value?: string;\n}\n\nconst withBaseName = makePrefixer(\"saltMenuItem\");\n\nconst leadingSlotClassNames = [\n withBaseName(\"selectionIcon\"),\n withBaseName(\"selectionIconPlaceholder\"),\n withBaseName(\"iconPlaceholder\"),\n];\n\nfunction hasLeadingIcon(item: HTMLElement | null) {\n for (const node of Array.from(item?.childNodes ?? [])) {\n if (node.nodeType === node.TEXT_NODE) {\n if (node.textContent?.trim()) {\n return false;\n }\n } else if (node.nodeType === node.ELEMENT_NODE) {\n const { classList } = node as Element;\n if (\n !leadingSlotClassNames.some((className) =>\n classList.contains(className),\n )\n ) {\n return classList.contains(\"saltIcon\");\n }\n }\n }\n return false;\n}\n\nlet missingValueWarningShown = false;\n\nexport const MenuItem = forwardRef<HTMLDivElement, MenuItemProps>(\n function MenuItem(props, ref) {\n const {\n children,\n className,\n disabled,\n onClick,\n onFocus,\n onKeyDown,\n value,\n ...rest\n } = props;\n\n const { triggersSubmenu, blurActive } = useIsMenuTrigger();\n const { setTriggerDisabled } = useMenuContext();\n const { ExpandGroupIcon } = useIcon();\n const {\n activeIndex,\n getItemProps,\n setFocusInside,\n hasSelectionIcon,\n registerPanelSelectionIcon,\n } = useMenuPanelContext();\n const {\n reserveIconSpace,\n reserveSelectionIconSpace,\n registerIcon,\n registerSelectionIcon,\n } = useMenuAlignment();\n const { isSelected, select, selectionVariant } = useMenuGroup();\n const item = useListItem();\n const tree = useFloatingTree();\n const active = item.index === activeIndex;\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-menu-item\",\n css: menuItemCss,\n window: targetWindow,\n });\n const itemRef = useRef<HTMLDivElement>(null);\n const listItemRef = useForkRef<HTMLDivElement>(item.ref, itemRef);\n const handleRef = useForkRef<HTMLDivElement>(ref, listItemRef);\n const activationKeyRef = useRef<string | null>(null);\n const [hasIcon, setHasIcon] = useState(false);\n\n const insideSelectableGroup =\n selectionVariant !== undefined && !triggersSubmenu;\n const selectable = insideSelectableGroup && value !== undefined;\n const selected = selectable && isSelected(value);\n // When icons lead this item and another group in the panel leads with a radio\n // or checkbox, widen the icon column to match so the labels still line up.\n const alignIconWithSelectionIcon =\n hasSelectionIcon &&\n !selectable &&\n !reserveSelectionIconSpace &&\n (hasIcon || reserveIconSpace);\n\n useIsomorphicLayoutEffect(() => {\n setHasIcon(hasLeadingIcon(itemRef.current));\n });\n\n useIsomorphicLayoutEffect(\n () => (hasIcon ? registerIcon() : undefined),\n [hasIcon, registerIcon],\n );\n\n useIsomorphicLayoutEffect(() => {\n if (!selectable) {\n return undefined;\n }\n const unregisterFromGroup = registerSelectionIcon();\n const unregisterFromPanel = registerPanelSelectionIcon();\n return () => {\n unregisterFromGroup();\n unregisterFromPanel();\n };\n }, [selectable, registerSelectionIcon, registerPanelSelectionIcon]);\n\n useEffect(() => {\n if (triggersSubmenu) {\n setTriggerDisabled(!!disabled);\n }\n }, [disabled, setTriggerDisabled, triggersSubmenu]);\n\n useEffect(() => {\n if (process.env.NODE_ENV !== \"production\") {\n if (\n insideSelectableGroup &&\n value === undefined &&\n !missingValueWarningShown\n ) {\n missingValueWarningShown = true;\n console.warn(\n \"Salt: MenuItem requires a `value` to be selectable inside a MenuGroup with `selectionVariant` set. It will behave as a regular menu item.\",\n );\n }\n }\n }, [insideSelectableGroup, value]);\n\n const shouldCloseMenu = () =>\n !selectable || activationKeyRef.current === \"Enter\";\n\n let role = \"menuitem\";\n if (selectable) {\n role =\n selectionVariant === \"single\" ? \"menuitemradio\" : \"menuitemcheckbox\";\n }\n\n return (\n // biome-ignore lint/a11y/useAriaPropsSupportedByRole: Biome can't detect the role provided by the role variable. aria-checked is only used when the role is appropriate.\n <div\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"blurActive\")]: blurActive,\n [withBaseName(\"selectionAlignedIcon\")]: alignIconWithSelectionIcon,\n },\n className,\n )}\n role={role}\n aria-checked={selectable ? selected : undefined}\n aria-disabled={disabled || undefined}\n {...getItemProps({\n tabIndex: active ? 0 : -1,\n onKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n const element = event.currentTarget;\n const { key } = event;\n onKeyDown?.(event);\n if ((key === \" \" || key === \"Enter\") && !triggersSubmenu) {\n event.preventDefault();\n if (disabled || event.repeat) {\n return;\n }\n const { view, ...eventInit } = event;\n queueMicrotask(() => {\n activationKeyRef.current = key;\n element.dispatchEvent(\n new window.MouseEvent(\"click\", eventInit),\n );\n activationKeyRef.current = null;\n });\n }\n },\n onClick(event: MouseEvent<HTMLDivElement>) {\n if (!disabled) {\n onClick?.(event);\n if (selectable) {\n select(event, value);\n }\n if (!triggersSubmenu && shouldCloseMenu()) {\n tree?.events.emit(\"click\");\n }\n }\n },\n onFocus(event: FocusEvent<HTMLDivElement>) {\n onFocus?.(event);\n setFocusInside(true);\n },\n ...rest,\n })}\n ref={handleRef}\n >\n {selectable && selectionVariant === \"single\" && (\n <RadioButtonIcon\n checked={selected}\n className={withBaseName(\"selectionIcon\")}\n />\n )}\n {selectable && selectionVariant === \"multiple\" && (\n <CheckboxIcon\n checked={selected}\n className={withBaseName(\"selectionIcon\")}\n />\n )}\n {reserveSelectionIconSpace && !selectable && (\n <span\n aria-hidden\n className={withBaseName(\"selectionIconPlaceholder\")}\n />\n )}\n {reserveIconSpace && !hasIcon && (\n <span aria-hidden className={withBaseName(\"iconPlaceholder\")} />\n )}\n {children}\n {triggersSubmenu && (\n <ExpandGroupIcon className={withBaseName(\"expandIcon\")} aria-hidden />\n )}\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MenuItem","useIsMenuTrigger","useMenuContext","useIcon","useMenuPanelContext","useMenuAlignment","useMenuGroup","useListItem","useFloatingTree","useWindow","useComponentCssInjection","menuItemCss","useRef","useForkRef","useState","useIsomorphicLayoutEffect","useEffect","jsxs","clsx","jsx","RadioButtonIcon","CheckboxIcon"],"mappings":"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"}
@@ -10,6 +10,7 @@ var useForkRef = require('../utils/useForkRef.js');
10
10
  require('../utils/useId.js');
11
11
  require('../salt-provider/SaltProvider.js');
12
12
  require('../viewport/ViewportProvider.js');
13
+ var MenuAlignmentContext = require('./MenuAlignmentContext.js');
13
14
  var MenuContext = require('./MenuContext.js');
14
15
  var MenuPanelBase = require('./MenuPanelBase.js');
15
16
  var MenuPanelContext = require('./MenuPanelContext.js');
@@ -32,11 +33,19 @@ const MenuPanel = React.forwardRef(
32
33
  isNested
33
34
  } = MenuContext.useMenuContext();
34
35
  const handleRef = useForkRef.useForkRef(ref, refs == null ? void 0 : refs.setFloating);
36
+ const [hasSelectionIcon, registerPanelSelectionIcon] = MenuAlignmentContext.useSlotRegistry();
37
+ const alignment = MenuAlignmentContext.useMenuAlignmentScope();
35
38
  return /* @__PURE__ */ jsxRuntime.jsx(
36
39
  MenuPanelContext.MenuPanelContext.Provider,
37
40
  {
38
- value: { activeIndex, getItemProps, setFocusInside },
39
- children: /* @__PURE__ */ jsxRuntime.jsx(react.FloatingList, { elementsRef, children: /* @__PURE__ */ jsxRuntime.jsx(
41
+ value: {
42
+ activeIndex,
43
+ getItemProps,
44
+ setFocusInside,
45
+ hasSelectionIcon,
46
+ registerPanelSelectionIcon
47
+ },
48
+ children: /* @__PURE__ */ jsxRuntime.jsx(MenuAlignmentContext.MenuAlignmentContext.Provider, { value: alignment, children: /* @__PURE__ */ jsxRuntime.jsx(react.FloatingList, { elementsRef, children: /* @__PURE__ */ jsxRuntime.jsx(
40
49
  FloatingComponent,
41
50
  {
42
51
  open: openState,
@@ -55,7 +64,7 @@ const MenuPanel = React.forwardRef(
55
64
  ...rest,
56
65
  children: /* @__PURE__ */ jsxRuntime.jsx(MenuPanelBase.MenuPanelBase, { children })
57
66
  }
58
- ) })
67
+ ) }) })
59
68
  }
60
69
  );
61
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MenuPanel.js","sources":["../src/menu/MenuPanel.tsx"],"sourcesContent":["import { FloatingList } from \"@floating-ui/react\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport { makePrefixer, useFloatingComponent, useForkRef } from \"../utils\";\nimport { useMenuContext } from \"./MenuContext\";\nimport { MenuPanelBase } from \"./MenuPanelBase\";\nimport { MenuPanelContext } from \"./MenuPanelContext\";\n\nexport interface MenuPanelProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The content of the menu panel.\n */\n children?: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltMenuPanel\");\n\nexport const MenuPanel = forwardRef<HTMLDivElement, MenuPanelProps>(\n function MenuPanel(props, ref) {\n const { children, className, ...rest } = props;\n const { Component: FloatingComponent } = useFloatingComponent();\n\n const {\n getItemProps,\n openState,\n getFloatingProps,\n refs,\n getPanelPosition,\n context,\n elementsRef,\n activeIndex,\n setFocusInside,\n isNested,\n } = useMenuContext();\n\n const handleRef = useForkRef<HTMLDivElement>(ref, refs?.setFloating);\n\n return (\n <MenuPanelContext.Provider\n value={{ activeIndex, getItemProps, setFocusInside }}\n >\n <FloatingList elementsRef={elementsRef}>\n <FloatingComponent\n open={openState}\n role=\"menu\"\n {...getFloatingProps()}\n {...getPanelPosition()}\n className={clsx(withBaseName(), className)}\n focusManagerProps={\n context\n ? {\n context,\n initialFocus: isNested ? -1 : 0,\n returnFocus: !isNested,\n modal: false,\n }\n : undefined\n }\n tabIndex={-1}\n ref={handleRef}\n {...rest}\n >\n <MenuPanelBase>{children}</MenuPanelBase>\n </FloatingComponent>\n </FloatingList>\n </MenuPanelContext.Provider>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MenuPanel","useFloatingComponent","useMenuContext","useForkRef","jsx","MenuPanelContext","FloatingList","clsx","MenuPanelBase"],"mappings":";;;;;;;;;;;;;;;;AAmBA,MAAM,YAAA,GAAeA,0BAAa,eAAe,CAAA;AAE1C,MAAM,SAAA,GAAYC,gBAAA;AAAA,EACvB,SAASC,UAAAA,CAAU,KAAA,EAAO,GAAA,EAAK;AAC7B,IAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AACzC,IAAA,MAAM,EAAE,SAAA,EAAW,iBAAA,EAAkB,GAAIC,kCAAA,EAAqB;AAE9D,IAAA,MAAM;AAAA,MACJ,YAAA;AAAA,MACA,SAAA;AAAA,MACA,gBAAA;AAAA,MACA,IAAA;AAAA,MACA,gBAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,QACEC,0BAAA,EAAe;AAEnB,IAAA,MAAM,SAAA,GAAYC,qBAAA,CAA2B,GAAA,EAAK,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,WAAW,CAAA;AAEnE,IAAA,uBACEC,cAAA;AAAA,MAACC,iCAAA,CAAiB,QAAA;AAAA,MAAjB;AAAA,QACC,KAAA,EAAO,EAAE,WAAA,EAAa,YAAA,EAAc,cAAA,EAAe;AAAA,QAEnD,QAAA,kBAAAD,cAAA,CAACE,sBAAa,WAAA,EACZ,QAAA,kBAAAF,cAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAM,SAAA;AAAA,YACN,IAAA,EAAK,MAAA;AAAA,YACJ,GAAG,gBAAA,EAAiB;AAAA,YACpB,GAAG,gBAAA,EAAiB;AAAA,YACrB,SAAA,EAAWG,SAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA;AAAA,YACzC,mBACE,OAAA,GACI;AAAA,cACE,OAAA;AAAA,cACA,YAAA,EAAc,WAAW,EAAA,GAAK,CAAA;AAAA,cAC9B,aAAa,CAAC,QAAA;AAAA,cACd,KAAA,EAAO;AAAA,aACT,GACA,MAAA;AAAA,YAEN,QAAA,EAAU,EAAA;AAAA,YACV,GAAA,EAAK,SAAA;AAAA,YACJ,GAAG,IAAA;AAAA,YAEJ,QAAA,kBAAAH,cAAA,CAACI,+BAAe,QAAA,EAAS;AAAA;AAAA,SAC3B,EACF;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;;;;"}
1
+ {"version":3,"file":"MenuPanel.js","sources":["../src/menu/MenuPanel.tsx"],"sourcesContent":["import { FloatingList } from \"@floating-ui/react\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport { makePrefixer, useFloatingComponent, useForkRef } from \"../utils\";\nimport {\n MenuAlignmentContext,\n useMenuAlignmentScope,\n useSlotRegistry,\n} from \"./MenuAlignmentContext\";\nimport { useMenuContext } from \"./MenuContext\";\nimport { MenuPanelBase } from \"./MenuPanelBase\";\nimport { MenuPanelContext } from \"./MenuPanelContext\";\n\nexport interface MenuPanelProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The content of the menu panel.\n */\n children?: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltMenuPanel\");\n\nexport const MenuPanel = forwardRef<HTMLDivElement, MenuPanelProps>(\n function MenuPanel(props, ref) {\n const { children, className, ...rest } = props;\n const { Component: FloatingComponent } = useFloatingComponent();\n\n const {\n getItemProps,\n openState,\n getFloatingProps,\n refs,\n getPanelPosition,\n context,\n elementsRef,\n activeIndex,\n setFocusInside,\n isNested,\n } = useMenuContext();\n\n const handleRef = useForkRef<HTMLDivElement>(ref, refs?.setFloating);\n\n const [hasSelectionIcon, registerPanelSelectionIcon] = useSlotRegistry();\n // Items outside a MenuGroup align with each other.\n const alignment = useMenuAlignmentScope();\n\n return (\n <MenuPanelContext.Provider\n value={{\n activeIndex,\n getItemProps,\n setFocusInside,\n hasSelectionIcon,\n registerPanelSelectionIcon,\n }}\n >\n <MenuAlignmentContext.Provider value={alignment}>\n <FloatingList elementsRef={elementsRef}>\n <FloatingComponent\n open={openState}\n role=\"menu\"\n {...getFloatingProps()}\n {...getPanelPosition()}\n className={clsx(withBaseName(), className)}\n focusManagerProps={\n context\n ? {\n context,\n initialFocus: isNested ? -1 : 0,\n returnFocus: !isNested,\n modal: false,\n }\n : undefined\n }\n tabIndex={-1}\n ref={handleRef}\n {...rest}\n >\n <MenuPanelBase>{children}</MenuPanelBase>\n </FloatingComponent>\n </FloatingList>\n </MenuAlignmentContext.Provider>\n </MenuPanelContext.Provider>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MenuPanel","useFloatingComponent","useMenuContext","useForkRef","useSlotRegistry","useMenuAlignmentScope","jsx","MenuPanelContext","MenuAlignmentContext","FloatingList","clsx","MenuPanelBase"],"mappings":";;;;;;;;;;;;;;;;;AAwBA,MAAM,YAAA,GAAeA,0BAAa,eAAe,CAAA;AAE1C,MAAM,SAAA,GAAYC,gBAAA;AAAA,EACvB,SAASC,UAAAA,CAAU,KAAA,EAAO,GAAA,EAAK;AAC7B,IAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AACzC,IAAA,MAAM,EAAE,SAAA,EAAW,iBAAA,EAAkB,GAAIC,kCAAA,EAAqB;AAE9D,IAAA,MAAM;AAAA,MACJ,YAAA;AAAA,MACA,SAAA;AAAA,MACA,gBAAA;AAAA,MACA,IAAA;AAAA,MACA,gBAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,QACEC,0BAAA,EAAe;AAEnB,IAAA,MAAM,SAAA,GAAYC,qBAAA,CAA2B,GAAA,EAAK,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,WAAW,CAAA;AAEnE,IAAA,MAAM,CAAC,gBAAA,EAAkB,0BAA0B,CAAA,GAAIC,oCAAA,EAAgB;AAEvE,IAAA,MAAM,YAAYC,0CAAA,EAAsB;AAExC,IAAA,uBACEC,cAAA;AAAA,MAACC,iCAAA,CAAiB,QAAA;AAAA,MAAjB;AAAA,QACC,KAAA,EAAO;AAAA,UACL,WAAA;AAAA,UACA,YAAA;AAAA,UACA,cAAA;AAAA,UACA,gBAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,kBAAAD,cAAA,CAACE,0CAAqB,QAAA,EAArB,EAA8B,OAAO,SAAA,EACpC,QAAA,kBAAAF,cAAA,CAACG,sBAAa,WAAA,EACZ,QAAA,kBAAAH,cAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAM,SAAA;AAAA,YACN,IAAA,EAAK,MAAA;AAAA,YACJ,GAAG,gBAAA,EAAiB;AAAA,YACpB,GAAG,gBAAA,EAAiB;AAAA,YACrB,SAAA,EAAWI,SAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA;AAAA,YACzC,mBACE,OAAA,GACI;AAAA,cACE,OAAA;AAAA,cACA,YAAA,EAAc,WAAW,EAAA,GAAK,CAAA;AAAA,cAC9B,aAAa,CAAC,QAAA;AAAA,cACd,KAAA,EAAO;AAAA,aACT,GACA,MAAA;AAAA,YAEN,QAAA,EAAU,EAAA;AAAA,YACV,GAAA,EAAK,SAAA;AAAA,YACJ,GAAG,IAAA;AAAA,YAEJ,QAAA,kBAAAJ,cAAA,CAACK,+BAAe,QAAA,EAAS;AAAA;AAAA,WAE7B,CAAA,EACF;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;;;;"}
@@ -14,7 +14,9 @@ const MenuPanelContext = createContext.createContext(
14
14
  {
15
15
  activeIndex: null,
16
16
  getItemProps: () => ({}),
17
- setFocusInside: () => void 0
17
+ setFocusInside: () => void 0,
18
+ hasSelectionIcon: false,
19
+ registerPanelSelectionIcon: () => () => void 0
18
20
  }
19
21
  );
20
22
  function useMenuPanelContext() {
@@ -1 +1 @@
1
- {"version":3,"file":"MenuPanelContext.js","sources":["../src/menu/MenuPanelContext.ts"],"sourcesContent":["import { useContext } from \"react\";\nimport { createContext } from \"../utils\";\nimport type { MenuContextValue } from \"./MenuContext\";\n\nexport interface MenuPanelContextValue\n extends Pick<\n MenuContextValue,\n \"getItemProps\" | \"activeIndex\" | \"setFocusInside\"\n > {}\n\nexport const MenuPanelContext = createContext<MenuPanelContextValue>(\n \"MenuPanelContext\",\n {\n activeIndex: null,\n getItemProps: () => ({}),\n setFocusInside: () => undefined,\n },\n);\n\nexport function useMenuPanelContext() {\n return useContext(MenuPanelContext);\n}\n"],"names":["createContext","useContext"],"mappings":";;;;;;;;;;;AAUO,MAAM,gBAAA,GAAmBA,2BAAA;AAAA,EAC9B,kBAAA;AAAA,EACA;AAAA,IACE,WAAA,EAAa,IAAA;AAAA,IACb,YAAA,EAAc,OAAO,EAAC,CAAA;AAAA,IACtB,gBAAgB,MAAM;AAAA;AAE1B;AAEO,SAAS,mBAAA,GAAsB;AACpC,EAAA,OAAOC,iBAAW,gBAAgB,CAAA;AACpC;;;;;"}
1
+ {"version":3,"file":"MenuPanelContext.js","sources":["../src/menu/MenuPanelContext.ts"],"sourcesContent":["import { useContext } from \"react\";\nimport { createContext } from \"../utils\";\nimport type { MenuContextValue } from \"./MenuContext\";\n\nexport interface MenuPanelContextValue\n extends Pick<\n MenuContextValue,\n \"getItemProps\" | \"activeIndex\" | \"setFocusInside\"\n > {\n hasSelectionIcon: boolean;\n registerPanelSelectionIcon: () => () => void;\n}\n\nexport const MenuPanelContext = createContext<MenuPanelContextValue>(\n \"MenuPanelContext\",\n {\n activeIndex: null,\n getItemProps: () => ({}),\n setFocusInside: () => undefined,\n hasSelectionIcon: false,\n registerPanelSelectionIcon: () => () => undefined,\n },\n);\n\nexport function useMenuPanelContext() {\n return useContext(MenuPanelContext);\n}\n"],"names":["createContext","useContext"],"mappings":";;;;;;;;;;;AAaO,MAAM,gBAAA,GAAmBA,2BAAA;AAAA,EAC9B,kBAAA;AAAA,EACA;AAAA,IACE,WAAA,EAAa,IAAA;AAAA,IACb,YAAA,EAAc,OAAO,EAAC,CAAA;AAAA,IACtB,gBAAgB,MAAM,MAAA;AAAA,IACtB,gBAAA,EAAkB,KAAA;AAAA,IAClB,0BAAA,EAA4B,MAAM,MAAM;AAAA;AAE5C;AAEO,SAAS,mBAAA,GAAsB;AACpC,EAAA,OAAOC,iBAAW,gBAAgB,CAAA;AACpC;;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = "/* Style applied to the root element */\n.saltPillInput {\n align-items: center;\n background: var(--saltPillInput-background, var(--pillInput-background));\n border-radius: var(--salt-palette-corner-weak, 0);\n color: var(--saltPillInput-color, var(--salt-content-primary-foreground));\n display: inline-flex;\n font-family: var(--salt-text-fontFamily);\n font-size: var(--saltPillInput-fontSize, var(--salt-text-fontSize));\n line-height: var(--saltPillInput-lineHeight, var(--salt-text-lineHeight));\n letter-spacing: var(--salt-text-letterSpacing);\n min-height: var(--saltPillInput-minHeight, var(--salt-size-base));\n min-width: var(--saltPillInput-minWidth, 4em);\n padding-left: var(--saltPillInput-paddingLeft, var(--salt-spacing-100));\n padding-right: var(--saltPillInput-paddingRight, var(--salt-spacing-100));\n position: relative;\n width: 100%;\n box-sizing: border-box;\n overflow: hidden;\n}\n\n.saltPillInput-truncate {\n height: var(--salt-size-base);\n}\n\n.saltPillInput-truncate .saltPillInput-inputWrapper {\n flex-wrap: nowrap;\n}\n\n.saltPillInput:hover {\n cursor: var(--salt-cursor-text);\n}\n\n/* Style applied if `bordered={true}` */\n.saltPillInput-bordered.saltPillInput {\n --pillInput-borderWidth: var(--salt-size-fixed-100);\n border: var(--pillInput-borderWidth) var(--salt-borderStyle-solid) var(--pillInput-borderColor);\n}\n\n.saltPillInput-bordered.saltPillInput:hover {\n border-style: var(--salt-borderStyle-solid);\n border-color: var(--pillInput-borderColor-hover);\n}\n\n/* Style applied if focused or active when `bordered={true}` */\n.saltPillInput-bordered.saltPillInput-focused,\n.saltPillInput-bordered.saltPillInput-focused:hover {\n border-style: var(--salt-borderStyle-solid);\n border-color: var(--pillInput-borderColor-active);\n}\n\n.saltPillInput-bordered.saltPillInput-readOnly,\n.saltPillInput-bordered.saltPillInput-readOnly:hover {\n border-style: var(--salt-borderStyle-solid);\n border-color: var(--salt-editable-borderColor-readonly);\n}\n\n.saltPillInput-bordered.saltPillInput-disabled,\n.saltPillInput-bordered.saltPillInput-disabled:hover {\n border-style: var(--salt-borderStyle-solid);\n border-color: var(--salt-editable-borderColor-disabled);\n}\n\n.saltPillInput-activationIndicator {\n left: 0;\n bottom: 0;\n width: 100%;\n position: absolute;\n border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--pillInput-borderColor);\n}\n\n.saltPillInput:hover .saltPillInput-activationIndicator {\n border-bottom-style: var(--salt-borderStyle-solid);\n border-bottom-color: var(--pillInput-borderColor-hover);\n}\n\n.saltPillInput-focused .saltPillInput-activationIndicator,\n.saltPillInput-focused:hover .saltPillInput-activationIndicator {\n border-bottom: var(--salt-size-fixed-200) var(--salt-borderStyle-solid) var(--pillInput-borderColor-active);\n}\n\n.saltPillInput-readOnly .saltPillInput-activationIndicator,\n.saltPillInput-readOnly:hover .saltPillInput-activationIndicator {\n border-bottom-style: var(--salt-borderStyle-solid);\n border-bottom-color: var(--salt-editable-borderColor-readonly);\n}\n\n.saltPillInput-disabled .saltPillInput-activationIndicator,\n.saltPillInput-disabled:hover .saltPillInput-activationIndicator {\n border-bottom-style: var(--salt-borderStyle-solid);\n border-bottom-color: var(--salt-editable-borderColor-disabled);\n}\n\n.saltPillInput-bordered .saltPillInput-activationIndicator,\n.saltPillInput-bordered.saltPillInput-readOnly .saltPillInput-activationIndicator,\n.saltPillInput-bordered.saltPillInput-disabled:hover .saltPillInput-activationIndicator {\n border-bottom-width: 0;\n}\n\n.saltPillInput-bordered.saltPillInput-focused .saltPillInput-activationIndicator {\n border-bottom-width: calc(var(--salt-size-fixed-200) - var(--pillInput-borderWidth));\n}\n\n/* Class applied if `variant=\"primary\"` */\n.saltPillInput-primary {\n --pillInput-background: var(--salt-editable-primary-background);\n --pillInput-background-disabled: var(--salt-editable-primary-background-disabled);\n --pillInput-background-readonly: var(--salt-editable-background-readonly);\n --pillInput-borderColor: var(--salt-editable-borderColor);\n --pillInput-borderColor-active: var(--salt-editable-borderColor-active);\n --pillInput-borderColor-hover: var(--salt-editable-borderColor-hover);\n --pillInput-outlineColor: var(--salt-focused-outlineColor);\n}\n\n/* Class applied if `variant=\"secondary\"` */\n.saltPillInput-secondary {\n --pillInput-background: var(--salt-editable-secondary-background);\n --pillInput-background-disabled: var(--salt-editable-secondary-background-disabled);\n --pillInput-background-readonly: var(--salt-editable-background-readonly);\n --pillInput-borderColor: var(--salt-editable-borderColor);\n --pillInput-borderColor-active: var(--salt-editable-borderColor-active);\n --pillInput-borderColor-hover: var(--salt-editable-borderColor-hover);\n --pillInput-outlineColor: var(--salt-focused-outlineColor);\n}\n\n/* Class applied if `variant=\"tertiary\"` */\n.saltPillInput-tertiary {\n --pillInput-background: var(--salt-editable-tertiary-background);\n --pillInput-background-readonly: var(--salt-editable-background-readonly);\n --pillInput-borderColor: var(--salt-editable-borderColor);\n --pillInput-borderColor-active: var(--salt-editable-borderColor-active);\n --pillInput-borderColor-hover: var(--salt-editable-borderColor-hover);\n --pillInput-outlineColor: var(--salt-focused-outlineColor);\n}\n\n/* Style applied to input if `validationState=\"error\"` */\n.saltPillInput-error {\n --pillInput-background: var(--salt-status-error-background);\n --pillInput-background-readonly: var(--salt-status-error-background);\n --pillInput-borderColor: var(--salt-status-error-borderColor);\n --pillInput-borderColor-active: var(--salt-status-error-borderColor);\n --pillInput-borderColor-hover: var(--salt-status-error-borderColor);\n --pillInput-outlineColor: var(--salt-status-error-borderColor);\n}\n\n/* Style applied to input if `validationState=\"warning\"` */\n.saltPillInput-warning {\n --pillInput-background: var(--salt-status-warning-background);\n --pillInput-background-readonly: var(--salt-status-warning-background);\n --pillInput-borderColor: var(--salt-status-warning-borderColor);\n --pillInput-borderColor-active: var(--salt-status-warning-borderColor);\n --pillInput-borderColor-hover: var(--salt-status-warning-borderColor);\n --pillInput-outlineColor: var(--salt-status-warning-borderColor);\n}\n\n/* Style applied to input if `validationState=\"success\"` */\n.saltPillInput-success {\n --pillInput-background: var(--salt-status-success-background);\n --pillInput-background-readonly: var(--salt-status-success-background);\n --pillInput-borderColor: var(--salt-status-success-borderColor);\n --pillInput-borderColor-active: var(--salt-status-success-borderColor);\n --pillInput-borderColor-hover: var(--salt-status-success-borderColor);\n --pillInput-outlineColor: var(--salt-status-success-borderColor);\n}\n\n/* Styling when focused */\n.saltPillInput-focused,\n.saltPillInput-focused:hover {\n cursor: var(--salt-cursor-text);\n outline: var(--saltPillInput-outline, var(--salt-focused-outlineWidth) var(--salt-focused-outlineStyle) var(--pillInput-outlineColor));\n}\n\n/* Style applied if `readOnly={true}` */\n.saltPillInput.saltPillInput-readOnly {\n background: var(--pillInput-background-readonly);\n cursor: var(--salt-cursor-readonly);\n}\n\n/* Styling when focused if `disabled={true}` */\n.saltPillInput-disabled,\n.saltPillInput-disabled:hover {\n background: var(--pillInput-background-disabled);\n cursor: var(--salt-cursor-disabled);\n color: var(--saltPillInput-color-disabled, var(--salt-content-primary-foreground-disabled));\n}\n\n/* Style applied to start adornments */\n.saltPillInput-startAdornmentContainer {\n align-items: center;\n display: inline-flex;\n padding-right: var(--salt-spacing-100);\n column-gap: var(--salt-spacing-100);\n}\n\n/* Style applied to end adornments */\n.saltPillInput-endAdornmentContainer {\n align-items: center;\n display: inline-flex;\n padding-left: var(--salt-spacing-50);\n padding-top: var(--salt-spacing-50);\n column-gap: var(--salt-spacing-100);\n align-self: flex-start;\n}\n\n.saltPillInput-statusAdornmentContainer {\n align-self: flex-start;\n display: inline-flex;\n align-items: center;\n height: var(--salt-size-base);\n}\n\n.saltPillInput-readOnly .saltPillInput-startAdornmentContainer {\n margin-left: var(--salt-spacing-50);\n}\n\n.saltPillInput-startAdornmentContainer .saltButton ~ .saltButton {\n margin-left: calc(-1 * var(--salt-spacing-50));\n}\n\n.saltPillInput-endAdornmentContainer .saltButton ~ .saltButton {\n margin-left: calc(-1 * var(--salt-spacing-50));\n}\n\n.saltPillInput-startAdornmentContainer .saltButton:first-child {\n margin-left: calc(var(--salt-spacing-50) * -1);\n}\n\n.saltPillInput-endAdornmentContainer .saltButton:last-child {\n margin-right: calc(var(--salt-spacing-50) * -1);\n}\n\n.saltPillInput-startAdornmentContainer > .saltButton,\n.saltPillInput-endAdornmentContainer > .saltButton {\n --saltButton-padding: calc(var(--salt-spacing-50) - var(--button-borderWidth));\n --saltButton-height: calc(var(--salt-size-base) - var(--salt-spacing-100));\n --saltButton-borderRadius: var(--salt-palette-corner-weaker);\n}\n\n.saltPillInput-inputWrapper {\n display: flex;\n gap: var(--salt-spacing-50);\n align-items: center;\n flex: 1;\n padding: var(--salt-spacing-50) 0;\n flex-wrap: wrap;\n max-height: inherit;\n height: inherit;\n overflow-y: auto;\n box-sizing: border-box;\n}\n\n.saltPillInput-bordered > .saltPillInput-endAdornmentContainer {\n padding-top: calc(var(--salt-spacing-50) - var(--pillInput-borderWidth));\n}\n\n.saltPillInput-bordered > .saltPillInput-inputWrapper {\n padding: calc(var(--salt-spacing-50) - var(--pillInput-borderWidth)) 0;\n}\n\n.saltPillInput-pillList {\n display: contents;\n}\n\n.saltPillInput-pillList div[role=\"listitem\"] {\n display: inline;\n}\n\n.saltPillInput-overflowIndicator {\n width: calc(var(--salt-size-base) - var(--salt-spacing-100));\n height: calc(var(--salt-size-base) - var(--salt-spacing-100));\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Style applied to inner input component */\n.saltPillInput-input {\n background: none;\n border: none;\n box-sizing: content-box;\n color: inherit;\n cursor: inherit;\n display: block;\n flex: 1;\n font: inherit;\n height: 100%;\n letter-spacing: var(--saltPillInput-letterSpacing, var(--salt-text-letterSpacing));\n margin: 0;\n min-width: 0;\n overflow: hidden;\n padding: 0;\n text-align: var(--pillInput-textAlign, left);\n width: 100%;\n}\n\n/* Reset in the class */\n.saltPillInput-input:focus {\n outline: none;\n}\n\n/* Style applied to selected input if `disabled={true}` */\n.saltPillInput-disabled .saltPillInput-input::selection {\n background: none;\n}\n\n/* Style applied to placeholder text */\n.saltPillInput-input::placeholder {\n color: var(--salt-content-secondary-foreground);\n font-weight: var(--salt-text-fontWeight-lighter);\n}\n";
3
+ var css_248z = "/* Style applied to the root element */\n.saltPillInput {\n align-items: center;\n background: var(--saltPillInput-background, var(--pillInput-background));\n border-radius: var(--salt-palette-corner-weak, 0);\n color: var(--saltPillInput-color, var(--salt-content-primary-foreground));\n display: inline-flex;\n font-family: var(--salt-text-fontFamily);\n font-size: var(--saltPillInput-fontSize, var(--salt-text-fontSize));\n line-height: var(--saltPillInput-lineHeight, var(--salt-text-lineHeight));\n letter-spacing: var(--salt-text-letterSpacing);\n min-height: var(--saltPillInput-minHeight, var(--salt-size-base));\n min-width: var(--saltPillInput-minWidth, 4em);\n padding-left: var(--saltPillInput-paddingLeft, var(--salt-spacing-100));\n padding-right: var(--saltPillInput-paddingRight, var(--salt-spacing-100));\n position: relative;\n width: 100%;\n box-sizing: border-box;\n overflow: hidden;\n}\n\n.saltPillInput-truncate {\n height: var(--salt-size-base);\n}\n\n.saltPillInput-truncate .saltPillInput-inputWrapper {\n flex-wrap: nowrap;\n}\n\n.saltPillInput:hover {\n cursor: var(--salt-cursor-text);\n}\n\n/* Style applied if `bordered={true}` */\n.saltPillInput-bordered.saltPillInput {\n --pillInput-borderWidth: var(--salt-size-fixed-100);\n border: var(--pillInput-borderWidth) var(--salt-borderStyle-solid) var(--pillInput-borderColor);\n}\n\n.saltPillInput-bordered.saltPillInput:hover {\n border-style: var(--salt-borderStyle-solid);\n border-color: var(--pillInput-borderColor-hover);\n}\n\n/* Style applied if focused or active when `bordered={true}` */\n.saltPillInput-bordered.saltPillInput-focused,\n.saltPillInput-bordered.saltPillInput-focused:hover {\n border-style: var(--salt-borderStyle-solid);\n border-color: var(--pillInput-borderColor-active);\n}\n\n.saltPillInput-bordered.saltPillInput-readOnly,\n.saltPillInput-bordered.saltPillInput-readOnly:hover {\n border-style: var(--salt-borderStyle-solid);\n border-color: var(--salt-editable-borderColor-readonly);\n}\n\n.saltPillInput-bordered.saltPillInput-disabled,\n.saltPillInput-bordered.saltPillInput-disabled:hover {\n border-style: var(--salt-borderStyle-solid);\n border-color: var(--salt-editable-borderColor-disabled);\n}\n\n.saltPillInput-activationIndicator {\n left: 0;\n bottom: 0;\n width: 100%;\n position: absolute;\n border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--pillInput-borderColor);\n}\n\n.saltPillInput:hover .saltPillInput-activationIndicator {\n border-bottom-style: var(--salt-borderStyle-solid);\n border-bottom-color: var(--pillInput-borderColor-hover);\n}\n\n.saltPillInput-focused .saltPillInput-activationIndicator,\n.saltPillInput-focused:hover .saltPillInput-activationIndicator {\n border-bottom: var(--salt-size-fixed-200) var(--salt-borderStyle-solid) var(--pillInput-borderColor-active);\n}\n\n.saltPillInput-readOnly .saltPillInput-activationIndicator,\n.saltPillInput-readOnly:hover .saltPillInput-activationIndicator {\n border-bottom-style: var(--salt-borderStyle-solid);\n border-bottom-color: var(--salt-editable-borderColor-readonly);\n}\n\n.saltPillInput-disabled .saltPillInput-activationIndicator,\n.saltPillInput-disabled:hover .saltPillInput-activationIndicator {\n border-bottom-style: var(--salt-borderStyle-solid);\n border-bottom-color: var(--salt-editable-borderColor-disabled);\n}\n\n.saltPillInput-bordered .saltPillInput-activationIndicator,\n.saltPillInput-bordered.saltPillInput-readOnly .saltPillInput-activationIndicator,\n.saltPillInput-bordered.saltPillInput-disabled:hover .saltPillInput-activationIndicator {\n border-bottom-width: 0;\n}\n\n.saltPillInput-bordered.saltPillInput-focused .saltPillInput-activationIndicator {\n border-bottom-width: calc(var(--salt-size-fixed-200) - var(--pillInput-borderWidth));\n}\n\n/* Class applied if `variant=\"primary\"` */\n.saltPillInput-primary {\n --pillInput-background: var(--salt-editable-primary-background);\n --pillInput-background-disabled: var(--salt-editable-primary-background-disabled);\n --pillInput-background-readonly: var(--salt-editable-background-readonly);\n --pillInput-borderColor: var(--salt-editable-borderColor);\n --pillInput-borderColor-active: var(--salt-editable-borderColor-active);\n --pillInput-borderColor-hover: var(--salt-editable-borderColor-hover);\n --pillInput-outlineColor: var(--salt-focused-outlineColor);\n}\n\n/* Class applied if `variant=\"secondary\"` */\n.saltPillInput-secondary {\n --pillInput-background: var(--salt-editable-secondary-background);\n --pillInput-background-disabled: var(--salt-editable-secondary-background-disabled);\n --pillInput-background-readonly: var(--salt-editable-background-readonly);\n --pillInput-borderColor: var(--salt-editable-borderColor);\n --pillInput-borderColor-active: var(--salt-editable-borderColor-active);\n --pillInput-borderColor-hover: var(--salt-editable-borderColor-hover);\n --pillInput-outlineColor: var(--salt-focused-outlineColor);\n}\n\n/* Class applied if `variant=\"tertiary\"` */\n.saltPillInput-tertiary {\n --pillInput-background: var(--salt-editable-tertiary-background);\n --pillInput-background-disabled: var(--salt-editable-tertiary-background-disabled);\n --pillInput-background-readonly: var(--salt-editable-background-readonly);\n --pillInput-borderColor: var(--salt-editable-borderColor);\n --pillInput-borderColor-active: var(--salt-editable-borderColor-active);\n --pillInput-borderColor-hover: var(--salt-editable-borderColor-hover);\n --pillInput-outlineColor: var(--salt-focused-outlineColor);\n}\n\n/* Style applied to input if `validationState=\"error\"` */\n.saltPillInput-error {\n --pillInput-background: var(--salt-status-error-background);\n --pillInput-background-readonly: var(--salt-status-error-background);\n --pillInput-borderColor: var(--salt-status-error-borderColor);\n --pillInput-borderColor-active: var(--salt-status-error-borderColor);\n --pillInput-borderColor-hover: var(--salt-status-error-borderColor);\n --pillInput-outlineColor: var(--salt-status-error-borderColor);\n}\n\n/* Style applied to input if `validationState=\"warning\"` */\n.saltPillInput-warning {\n --pillInput-background: var(--salt-status-warning-background);\n --pillInput-background-readonly: var(--salt-status-warning-background);\n --pillInput-borderColor: var(--salt-status-warning-borderColor);\n --pillInput-borderColor-active: var(--salt-status-warning-borderColor);\n --pillInput-borderColor-hover: var(--salt-status-warning-borderColor);\n --pillInput-outlineColor: var(--salt-status-warning-borderColor);\n}\n\n/* Style applied to input if `validationState=\"success\"` */\n.saltPillInput-success {\n --pillInput-background: var(--salt-status-success-background);\n --pillInput-background-readonly: var(--salt-status-success-background);\n --pillInput-borderColor: var(--salt-status-success-borderColor);\n --pillInput-borderColor-active: var(--salt-status-success-borderColor);\n --pillInput-borderColor-hover: var(--salt-status-success-borderColor);\n --pillInput-outlineColor: var(--salt-status-success-borderColor);\n}\n\n/* Styling when focused */\n.saltPillInput-focused,\n.saltPillInput-focused:hover {\n cursor: var(--salt-cursor-text);\n outline: var(--saltPillInput-outline, var(--salt-focused-outlineWidth) var(--salt-focused-outlineStyle) var(--pillInput-outlineColor));\n}\n\n/* Style applied if `readOnly={true}` */\n.saltPillInput.saltPillInput-readOnly {\n background: var(--pillInput-background-readonly);\n cursor: var(--salt-cursor-readonly);\n}\n\n/* Styling when focused if `disabled={true}` */\n.saltPillInput-disabled,\n.saltPillInput-disabled:hover {\n background: var(--pillInput-background-disabled);\n cursor: var(--salt-cursor-disabled);\n color: var(--saltPillInput-color-disabled, var(--salt-content-primary-foreground-disabled));\n}\n\n/* Style applied to start adornments */\n.saltPillInput-startAdornmentContainer {\n align-items: center;\n display: inline-flex;\n padding-right: var(--salt-spacing-100);\n column-gap: var(--salt-spacing-100);\n}\n\n/* Style applied to end adornments */\n.saltPillInput-endAdornmentContainer {\n align-items: center;\n display: inline-flex;\n padding-left: var(--salt-spacing-50);\n padding-top: var(--salt-spacing-50);\n column-gap: var(--salt-spacing-100);\n align-self: flex-start;\n}\n\n.saltPillInput-statusAdornmentContainer {\n align-self: flex-start;\n display: inline-flex;\n align-items: center;\n height: var(--salt-size-base);\n}\n\n.saltPillInput-readOnly .saltPillInput-startAdornmentContainer {\n margin-left: var(--salt-spacing-50);\n}\n\n.saltPillInput-startAdornmentContainer .saltButton ~ .saltButton {\n margin-left: calc(-1 * var(--salt-spacing-50));\n}\n\n.saltPillInput-endAdornmentContainer .saltButton ~ .saltButton {\n margin-left: calc(-1 * var(--salt-spacing-50));\n}\n\n.saltPillInput-startAdornmentContainer .saltButton:first-child {\n margin-left: calc(var(--salt-spacing-50) * -1);\n}\n\n.saltPillInput-endAdornmentContainer .saltButton:last-child {\n margin-right: calc(var(--salt-spacing-50) * -1);\n}\n\n.saltPillInput-startAdornmentContainer > .saltButton,\n.saltPillInput-endAdornmentContainer > .saltButton {\n --saltButton-padding: calc(var(--salt-spacing-50) - var(--button-borderWidth));\n --saltButton-height: calc(var(--salt-size-base) - var(--salt-spacing-100));\n --saltButton-borderRadius: var(--salt-palette-corner-weaker);\n}\n\n.saltPillInput-inputWrapper {\n display: flex;\n gap: var(--salt-spacing-50);\n align-items: center;\n flex: 1;\n padding: var(--salt-spacing-50) 0;\n flex-wrap: wrap;\n max-height: inherit;\n height: inherit;\n overflow-y: auto;\n box-sizing: border-box;\n}\n\n.saltPillInput-bordered > .saltPillInput-endAdornmentContainer {\n padding-top: calc(var(--salt-spacing-50) - var(--pillInput-borderWidth));\n}\n\n.saltPillInput-bordered > .saltPillInput-inputWrapper {\n padding: calc(var(--salt-spacing-50) - var(--pillInput-borderWidth)) 0;\n}\n\n.saltPillInput-pillList {\n display: contents;\n}\n\n.saltPillInput-pillList div[role=\"listitem\"] {\n display: inline;\n}\n\n.saltPillInput-overflowIndicator {\n width: calc(var(--salt-size-base) - var(--salt-spacing-100));\n height: calc(var(--salt-size-base) - var(--salt-spacing-100));\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Style applied to inner input component */\n.saltPillInput-input {\n background: none;\n border: none;\n box-sizing: content-box;\n color: inherit;\n cursor: inherit;\n display: block;\n flex: 1;\n font: inherit;\n height: 100%;\n letter-spacing: var(--saltPillInput-letterSpacing, var(--salt-text-letterSpacing));\n margin: 0;\n min-width: 0;\n overflow: hidden;\n padding: 0;\n text-align: var(--pillInput-textAlign, left);\n width: 100%;\n}\n\n/* Reset in the class */\n.saltPillInput-input:focus {\n outline: none;\n}\n\n/* Style applied to selected input if `disabled={true}` */\n.saltPillInput-disabled .saltPillInput-input::selection {\n background: none;\n}\n\n/* Style applied to placeholder text */\n.saltPillInput-input::placeholder {\n color: var(--salt-content-secondary-foreground);\n font-weight: var(--salt-text-fontWeight-lighter);\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=PillInput.css.js.map
@@ -8,7 +8,7 @@ var SuccessAdornment = require('../status-adornment/SuccessAdornment.js');
8
8
  var WarningAdornment = require('../status-adornment/WarningAdornment.js');
9
9
 
10
10
  const defaultIconMap = {
11
- ActiveIcon: icons.StepActiveIcon,
11
+ ActiveIcon: icons.ProgressActiveIcon,
12
12
  CalendarIcon: icons.CalendarIcon,
13
13
  CloseIcon: icons.CloseIcon,
14
14
  CollapseGroupIcon: icons.ChevronDownIcon,
@@ -30,7 +30,7 @@ const defaultIconMap = {
30
30
  LevelSeparatorIcon: icons.ChevronRightIcon,
31
31
  NextIcon: icons.ChevronRightIcon,
32
32
  OverflowIcon: icons.OverflowMenuIcon,
33
- PendingIcon: icons.StepDefaultIcon,
33
+ PendingIcon: icons.ProgressDraftIcon,
34
34
  PreviousIcon: icons.ChevronLeftIcon,
35
35
  RatingIcon: icons.FavoriteIcon,
36
36
  RatingSelectedIcon: icons.FavoriteSolidIcon,
@@ -1 +1 @@
1
- {"version":3,"file":"SemanticIconProvider.js","sources":["../src/semantic-icon-provider/SemanticIconProvider.tsx"],"sourcesContent":["import {\n BankIcon,\n CalendarIcon,\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronUpIcon,\n CloseIcon,\n DoubleChevronLeftIcon,\n DoubleChevronRightIcon,\n ErrorSolidIcon,\n FavoriteIcon,\n FavoriteSolidIcon,\n FavoriteStrongIcon,\n InfoSolidIcon,\n LockedIcon,\n OverflowMenuIcon,\n ProgressInprogressIcon,\n StepActiveIcon,\n StepDefaultIcon,\n SuccessCircleSolidIcon,\n TearOutIcon,\n TriangleDownIcon,\n TriangleUpIcon,\n UploadIcon,\n UserIcon,\n WarningSolidIcon,\n} from \"@salt-ds/icons\";\nimport {\n createContext,\n type ElementType,\n type ReactNode,\n useContext,\n} from \"react\";\nimport { ErrorAdornmentIcon } from \"../status-adornment/ErrorAdornment\";\nimport { SuccessAdornmentIcon } from \"../status-adornment/SuccessAdornment\";\nimport { WarningAdornmentIcon } from \"../status-adornment/WarningAdornment\";\n\nexport interface SemanticIconMap {\n ActiveIcon: ElementType;\n CalendarIcon: ElementType;\n CloseIcon: ElementType;\n CollapseGroupIcon: ElementType;\n CollapseIcon: ElementType;\n CollapseLeftIcon: ElementType;\n CollapseRightIcon: ElementType;\n CompletedIcon: ElementType;\n DecreaseIcon: ElementType;\n EntityIcon: ElementType;\n ErrorIcon: ElementType;\n ErrorStatusAdornment: ElementType;\n ExpandGroupIcon: ElementType;\n ExpandIcon: ElementType;\n ExternalIcon: ElementType;\n IncreaseIcon: ElementType;\n InfoIcon: ElementType;\n InProgressIcon: ElementType;\n LockedIcon: ElementType;\n LevelSeparatorIcon: ElementType;\n NextIcon: ElementType;\n OverflowIcon: ElementType;\n PendingIcon: ElementType;\n PreviousIcon: ElementType;\n RatingIcon: ElementType;\n RatingSelectedIcon: ElementType;\n RatingUnselectingIcon: ElementType;\n SuccessIcon: ElementType;\n SuccessStatusAdornment: ElementType;\n UploadIcon: ElementType;\n UserIcon: ElementType;\n WarningIcon: ElementType;\n WarningStatusAdornment: ElementType;\n}\n\nexport interface SemanticIconProviderProps {\n /**\n * Custom mapping of icon names to components. Overrides default icons if provided.\n */\n iconMap?: Partial<SemanticIconMap>;\n\n /**\n * Child elements that will use the provided icons.\n */\n children: ReactNode;\n}\n\nconst defaultIconMap: SemanticIconMap = {\n ActiveIcon: StepActiveIcon,\n CalendarIcon: CalendarIcon,\n CloseIcon: CloseIcon,\n CollapseGroupIcon: ChevronDownIcon,\n CollapseIcon: ChevronUpIcon,\n CollapseLeftIcon: DoubleChevronLeftIcon,\n CollapseRightIcon: DoubleChevronRightIcon,\n CompletedIcon: SuccessCircleSolidIcon,\n DecreaseIcon: TriangleDownIcon,\n EntityIcon: BankIcon,\n ErrorIcon: ErrorSolidIcon,\n ErrorStatusAdornment: ErrorAdornmentIcon,\n ExpandGroupIcon: ChevronRightIcon,\n ExpandIcon: ChevronDownIcon,\n ExternalIcon: TearOutIcon,\n IncreaseIcon: TriangleUpIcon,\n InfoIcon: InfoSolidIcon,\n InProgressIcon: ProgressInprogressIcon,\n LockedIcon: LockedIcon,\n LevelSeparatorIcon: ChevronRightIcon,\n NextIcon: ChevronRightIcon,\n OverflowIcon: OverflowMenuIcon,\n PendingIcon: StepDefaultIcon,\n PreviousIcon: ChevronLeftIcon,\n RatingIcon: FavoriteIcon,\n RatingSelectedIcon: FavoriteSolidIcon,\n RatingUnselectingIcon: FavoriteStrongIcon,\n SuccessIcon: SuccessCircleSolidIcon,\n SuccessStatusAdornment: SuccessAdornmentIcon,\n UploadIcon,\n UserIcon: UserIcon,\n WarningIcon: WarningSolidIcon,\n WarningStatusAdornment: WarningAdornmentIcon,\n};\n\nconst SemanticIconContext = createContext<SemanticIconMap>(defaultIconMap);\n\nexport const SemanticIconProvider = ({\n iconMap = {},\n children,\n}: SemanticIconProviderProps) => (\n <SemanticIconContext.Provider value={{ ...defaultIconMap, ...iconMap }}>\n {children}\n </SemanticIconContext.Provider>\n);\n\nexport const useIcon = () => {\n const context = useContext(SemanticIconContext);\n return context || defaultIconMap;\n};\n"],"names":["StepActiveIcon","CalendarIcon","CloseIcon","ChevronDownIcon","ChevronUpIcon","DoubleChevronLeftIcon","DoubleChevronRightIcon","SuccessCircleSolidIcon","TriangleDownIcon","BankIcon","ErrorSolidIcon","ErrorAdornmentIcon","ChevronRightIcon","TearOutIcon","TriangleUpIcon","InfoSolidIcon","ProgressInprogressIcon","LockedIcon","OverflowMenuIcon","StepDefaultIcon","ChevronLeftIcon","FavoriteIcon","FavoriteSolidIcon","FavoriteStrongIcon","SuccessAdornmentIcon","UploadIcon","UserIcon","WarningSolidIcon","WarningAdornmentIcon","createContext","jsx","useContext"],"mappings":";;;;;;;;;AAsFA,MAAM,cAAA,GAAkC;AAAA,EACtC,UAAA,EAAYA,oBAAA;AAAA,gBACZC,kBAAA;AAAA,aACAC,eAAA;AAAA,EACA,iBAAA,EAAmBC,qBAAA;AAAA,EACnB,YAAA,EAAcC,mBAAA;AAAA,EACd,gBAAA,EAAkBC,2BAAA;AAAA,EAClB,iBAAA,EAAmBC,4BAAA;AAAA,EACnB,aAAA,EAAeC,4BAAA;AAAA,EACf,YAAA,EAAcC,sBAAA;AAAA,EACd,UAAA,EAAYC,cAAA;AAAA,EACZ,SAAA,EAAWC,oBAAA;AAAA,EACX,oBAAA,EAAsBC,iCAAA;AAAA,EACtB,eAAA,EAAiBC,sBAAA;AAAA,EACjB,UAAA,EAAYT,qBAAA;AAAA,EACZ,YAAA,EAAcU,iBAAA;AAAA,EACd,YAAA,EAAcC,oBAAA;AAAA,EACd,QAAA,EAAUC,mBAAA;AAAA,EACV,cAAA,EAAgBC,4BAAA;AAAA,cAChBC,gBAAA;AAAA,EACA,kBAAA,EAAoBL,sBAAA;AAAA,EACpB,QAAA,EAAUA,sBAAA;AAAA,EACV,YAAA,EAAcM,sBAAA;AAAA,EACd,WAAA,EAAaC,qBAAA;AAAA,EACb,YAAA,EAAcC,qBAAA;AAAA,EACd,UAAA,EAAYC,kBAAA;AAAA,EACZ,kBAAA,EAAoBC,uBAAA;AAAA,EACpB,qBAAA,EAAuBC,wBAAA;AAAA,EACvB,WAAA,EAAahB,4BAAA;AAAA,EACb,sBAAA,EAAwBiB,qCAAA;AAAA,cACxBC,gBAAA;AAAA,YACAC,cAAA;AAAA,EACA,WAAA,EAAaC,sBAAA;AAAA,EACb,sBAAA,EAAwBC;AAC1B,CAAA;AAEA,MAAM,mBAAA,GAAsBC,oBAA+B,cAAc,CAAA;AAElE,MAAM,uBAAuB,CAAC;AAAA,EACnC,UAAU,EAAC;AAAA,EACX;AACF,CAAA,qBACEC,cAAA,CAAC,mBAAA,CAAoB,QAAA,EAApB,EAA6B,KAAA,EAAO,EAAE,GAAG,cAAA,EAAgB,GAAG,OAAA,EAAQ,EAClE,QAAA,EACH;AAGK,MAAM,UAAU,MAAM;AAC3B,EAAA,MAAM,OAAA,GAAUC,iBAAW,mBAAmB,CAAA;AAC9C,EAAA,OAAO,OAAA,IAAW,cAAA;AACpB;;;;;"}
1
+ {"version":3,"file":"SemanticIconProvider.js","sources":["../src/semantic-icon-provider/SemanticIconProvider.tsx"],"sourcesContent":["import {\n BankIcon,\n CalendarIcon,\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronUpIcon,\n CloseIcon,\n DoubleChevronLeftIcon,\n DoubleChevronRightIcon,\n ErrorSolidIcon,\n FavoriteIcon,\n FavoriteSolidIcon,\n FavoriteStrongIcon,\n InfoSolidIcon,\n LockedIcon,\n OverflowMenuIcon,\n ProgressActiveIcon,\n ProgressDraftIcon,\n ProgressInprogressIcon,\n SuccessCircleSolidIcon,\n TearOutIcon,\n TriangleDownIcon,\n TriangleUpIcon,\n UploadIcon,\n UserIcon,\n WarningSolidIcon,\n} from \"@salt-ds/icons\";\nimport {\n createContext,\n type ElementType,\n type ReactNode,\n useContext,\n} from \"react\";\nimport { ErrorAdornmentIcon } from \"../status-adornment/ErrorAdornment\";\nimport { SuccessAdornmentIcon } from \"../status-adornment/SuccessAdornment\";\nimport { WarningAdornmentIcon } from \"../status-adornment/WarningAdornment\";\n\nexport interface SemanticIconMap {\n ActiveIcon: ElementType;\n CalendarIcon: ElementType;\n CloseIcon: ElementType;\n CollapseGroupIcon: ElementType;\n CollapseIcon: ElementType;\n CollapseLeftIcon: ElementType;\n CollapseRightIcon: ElementType;\n CompletedIcon: ElementType;\n DecreaseIcon: ElementType;\n EntityIcon: ElementType;\n ErrorIcon: ElementType;\n ErrorStatusAdornment: ElementType;\n ExpandGroupIcon: ElementType;\n ExpandIcon: ElementType;\n ExternalIcon: ElementType;\n IncreaseIcon: ElementType;\n InfoIcon: ElementType;\n InProgressIcon: ElementType;\n LockedIcon: ElementType;\n LevelSeparatorIcon: ElementType;\n NextIcon: ElementType;\n OverflowIcon: ElementType;\n PendingIcon: ElementType;\n PreviousIcon: ElementType;\n RatingIcon: ElementType;\n RatingSelectedIcon: ElementType;\n RatingUnselectingIcon: ElementType;\n SuccessIcon: ElementType;\n SuccessStatusAdornment: ElementType;\n UploadIcon: ElementType;\n UserIcon: ElementType;\n WarningIcon: ElementType;\n WarningStatusAdornment: ElementType;\n}\n\nexport interface SemanticIconProviderProps {\n /**\n * Custom mapping of icon names to components. Overrides default icons if provided.\n */\n iconMap?: Partial<SemanticIconMap>;\n\n /**\n * Child elements that will use the provided icons.\n */\n children: ReactNode;\n}\n\nconst defaultIconMap: SemanticIconMap = {\n ActiveIcon: ProgressActiveIcon,\n CalendarIcon: CalendarIcon,\n CloseIcon: CloseIcon,\n CollapseGroupIcon: ChevronDownIcon,\n CollapseIcon: ChevronUpIcon,\n CollapseLeftIcon: DoubleChevronLeftIcon,\n CollapseRightIcon: DoubleChevronRightIcon,\n CompletedIcon: SuccessCircleSolidIcon,\n DecreaseIcon: TriangleDownIcon,\n EntityIcon: BankIcon,\n ErrorIcon: ErrorSolidIcon,\n ErrorStatusAdornment: ErrorAdornmentIcon,\n ExpandGroupIcon: ChevronRightIcon,\n ExpandIcon: ChevronDownIcon,\n ExternalIcon: TearOutIcon,\n IncreaseIcon: TriangleUpIcon,\n InfoIcon: InfoSolidIcon,\n InProgressIcon: ProgressInprogressIcon,\n LockedIcon: LockedIcon,\n LevelSeparatorIcon: ChevronRightIcon,\n NextIcon: ChevronRightIcon,\n OverflowIcon: OverflowMenuIcon,\n PendingIcon: ProgressDraftIcon,\n PreviousIcon: ChevronLeftIcon,\n RatingIcon: FavoriteIcon,\n RatingSelectedIcon: FavoriteSolidIcon,\n RatingUnselectingIcon: FavoriteStrongIcon,\n SuccessIcon: SuccessCircleSolidIcon,\n SuccessStatusAdornment: SuccessAdornmentIcon,\n UploadIcon,\n UserIcon: UserIcon,\n WarningIcon: WarningSolidIcon,\n WarningStatusAdornment: WarningAdornmentIcon,\n};\n\nconst SemanticIconContext = createContext<SemanticIconMap>(defaultIconMap);\n\nexport const SemanticIconProvider = ({\n iconMap = {},\n children,\n}: SemanticIconProviderProps) => (\n <SemanticIconContext.Provider value={{ ...defaultIconMap, ...iconMap }}>\n {children}\n </SemanticIconContext.Provider>\n);\n\nexport const useIcon = () => {\n const context = useContext(SemanticIconContext);\n return context || defaultIconMap;\n};\n"],"names":["ProgressActiveIcon","CalendarIcon","CloseIcon","ChevronDownIcon","ChevronUpIcon","DoubleChevronLeftIcon","DoubleChevronRightIcon","SuccessCircleSolidIcon","TriangleDownIcon","BankIcon","ErrorSolidIcon","ErrorAdornmentIcon","ChevronRightIcon","TearOutIcon","TriangleUpIcon","InfoSolidIcon","ProgressInprogressIcon","LockedIcon","OverflowMenuIcon","ProgressDraftIcon","ChevronLeftIcon","FavoriteIcon","FavoriteSolidIcon","FavoriteStrongIcon","SuccessAdornmentIcon","UploadIcon","UserIcon","WarningSolidIcon","WarningAdornmentIcon","createContext","jsx","useContext"],"mappings":";;;;;;;;;AAsFA,MAAM,cAAA,GAAkC;AAAA,EACtC,UAAA,EAAYA,wBAAA;AAAA,gBACZC,kBAAA;AAAA,aACAC,eAAA;AAAA,EACA,iBAAA,EAAmBC,qBAAA;AAAA,EACnB,YAAA,EAAcC,mBAAA;AAAA,EACd,gBAAA,EAAkBC,2BAAA;AAAA,EAClB,iBAAA,EAAmBC,4BAAA;AAAA,EACnB,aAAA,EAAeC,4BAAA;AAAA,EACf,YAAA,EAAcC,sBAAA;AAAA,EACd,UAAA,EAAYC,cAAA;AAAA,EACZ,SAAA,EAAWC,oBAAA;AAAA,EACX,oBAAA,EAAsBC,iCAAA;AAAA,EACtB,eAAA,EAAiBC,sBAAA;AAAA,EACjB,UAAA,EAAYT,qBAAA;AAAA,EACZ,YAAA,EAAcU,iBAAA;AAAA,EACd,YAAA,EAAcC,oBAAA;AAAA,EACd,QAAA,EAAUC,mBAAA;AAAA,EACV,cAAA,EAAgBC,4BAAA;AAAA,cAChBC,gBAAA;AAAA,EACA,kBAAA,EAAoBL,sBAAA;AAAA,EACpB,QAAA,EAAUA,sBAAA;AAAA,EACV,YAAA,EAAcM,sBAAA;AAAA,EACd,WAAA,EAAaC,uBAAA;AAAA,EACb,YAAA,EAAcC,qBAAA;AAAA,EACd,UAAA,EAAYC,kBAAA;AAAA,EACZ,kBAAA,EAAoBC,uBAAA;AAAA,EACpB,qBAAA,EAAuBC,wBAAA;AAAA,EACvB,WAAA,EAAahB,4BAAA;AAAA,EACb,sBAAA,EAAwBiB,qCAAA;AAAA,cACxBC,gBAAA;AAAA,YACAC,cAAA;AAAA,EACA,WAAA,EAAaC,sBAAA;AAAA,EACb,sBAAA,EAAwBC;AAC1B,CAAA;AAEA,MAAM,mBAAA,GAAsBC,oBAA+B,cAAc,CAAA;AAElE,MAAM,uBAAuB,CAAC;AAAA,EACnC,UAAU,EAAC;AAAA,EACX;AACF,CAAA,qBACEC,cAAA,CAAC,mBAAA,CAAoB,QAAA,EAApB,EAA6B,KAAA,EAAO,EAAE,GAAG,cAAA,EAAgB,GAAG,OAAA,EAAQ,EAClE,QAAA,EACH;AAGK,MAAM,UAAU,MAAM;AAC3B,EAAA,MAAM,OAAA,GAAUC,iBAAW,mBAAmB,CAAA;AAC9C,EAAA,OAAO,OAAA,IAAW,cAAA;AACpB;;;;;"}
@@ -11,6 +11,7 @@ require('../utils/useFloatingUI/useFloatingUI.js');
11
11
  var useId = require('../utils/useId.js');
12
12
  require('../salt-provider/SaltProvider.js');
13
13
  require('../viewport/ViewportProvider.js');
14
+ var hasActiveStep = require('./internal/hasActiveStep.js');
14
15
  var StepConnector = require('./internal/StepConnector.js');
15
16
  var StepExpandTrigger = require('./internal/StepExpandTrigger.js');
16
17
  var StepIcon = require('./internal/StepIcon.js');
@@ -93,6 +94,7 @@ const Step = React.forwardRef(function Step2({
93
94
  withBaseName(`depth-${depth}`),
94
95
  status && withBaseName(`status-${status}`),
95
96
  !hasNestedSteps && withBaseName("terminal"),
97
+ hasNestedSteps && hasActiveStep.hasActiveStep(children) && withBaseName("hasActiveStep"),
96
98
  hasNestedSteps && expanded && withBaseName("expanded"),
97
99
  hasNestedSteps && !expanded && withBaseName("collapsed"),
98
100
  className
@@ -128,7 +130,16 @@ const Step = React.forwardRef(function Step2({
128
130
  }
129
131
  ),
130
132
  label && /* @__PURE__ */ jsxRuntime.jsx(StepText.StepText, { id: labelId, purpose: "label", "aria-hidden": true, children: label }),
131
- description && /* @__PURE__ */ jsxRuntime.jsx(StepText.StepText, { id: descriptionId, purpose: "description", "aria-hidden": true, children: description }),
133
+ description && /* @__PURE__ */ jsxRuntime.jsx(
134
+ StepText.StepText,
135
+ {
136
+ id: descriptionId,
137
+ purpose: "description",
138
+ color: status,
139
+ "aria-hidden": true,
140
+ children: description
141
+ }
142
+ ),
132
143
  hasNestedSteps && orientation === "vertical" && /* @__PURE__ */ jsxRuntime.jsx(
133
144
  StepExpandTrigger.StepExpandTrigger,
134
145
  {
@@ -1 +1 @@
1
- {"version":3,"file":"Step.js","sources":["../src/stepper/Step.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type CSSProperties,\n forwardRef,\n type ReactNode,\n useContext,\n useEffect,\n} from \"react\";\nimport type { ButtonProps } from \"../button\";\nimport { makePrefixer, useControlled, useId } from \"../utils\";\nimport { StepConnector } from \"./internal/StepConnector\";\nimport { StepExpandTrigger } from \"./internal/StepExpandTrigger\";\nimport { StepIcon } from \"./internal/StepIcon\";\nimport {\n StepDepthContext,\n StepperOrientationContext,\n} from \"./internal/StepperProvider\";\nimport { StepScreenReaderOnly } from \"./internal/StepScreenReaderOnly\";\nimport { StepText } from \"./internal/StepText\";\nimport stepCSS from \"./Step.css\";\nimport { Stepper } from \"./Stepper\";\n\nexport interface StepProps\n extends Omit<ComponentPropsWithoutRef<\"li\">, \"onToggle\"> {\n /**\n * The label of the step\n */\n label?: ReactNode;\n /**\n * Description text is displayed just below the label\n **/\n description?: ReactNode;\n /**\n * Optional string to determine the status of the step.\n */\n status?: StepStatus;\n /**\n * The stage of the step\n */\n stage?: StepStage;\n /**\n * Whether the step item is expanded.\n */\n expanded?: boolean;\n /**\n * Initial expanded state of the step.\n */\n defaultExpanded?: boolean;\n /**\n * Callback fired when the step is toggled.\n */\n onToggle?: ButtonProps[\"onClick\"];\n}\n\nexport type StepId = string;\n\nexport type StepStatus = \"warning\" | \"error\";\n\nexport type StepStage =\n | \"pending\"\n | \"locked\"\n | \"completed\"\n | \"inprogress\"\n | \"active\";\n\nexport type StepDepth = number;\n\nexport interface StepProps\n extends Omit<ComponentPropsWithoutRef<\"li\">, \"onToggle\"> {\n label?: ReactNode;\n description?: ReactNode;\n status?: StepStatus;\n stage?: StepStage;\n expanded?: boolean;\n defaultExpanded?: boolean;\n onToggle?: ButtonProps[\"onClick\"];\n}\n\nconst withBaseName = makePrefixer(\"saltStep\");\n\nexport const Step = forwardRef<HTMLLIElement, StepProps>(function Step(\n {\n id: idProp,\n label,\n description,\n status,\n stage = \"pending\",\n expanded: expandedProp,\n defaultExpanded,\n onToggle,\n className,\n style,\n children,\n ...rest\n },\n ref,\n) {\n const id = useId(idProp);\n const targetWindow = useWindow();\n const depth = useContext(StepDepthContext);\n const orientation = useContext(StepperOrientationContext);\n\n const hasNestedSteps = !!children;\n\n const [expanded, setExpanded] = useControlled({\n name: \"Step\",\n state: \"expanded\",\n controlled: expandedProp,\n default: Boolean(defaultExpanded),\n });\n\n useComponentCssInjection({\n testId: \"salt-step\",\n css: stepCSS,\n window: targetWindow,\n });\n\n useEffect(() => {\n if (process.env.NODE_ENV !== \"production\") {\n if (depth === -1) {\n console.warn(\"<Step /> should be used within a <Stepper /> component!\");\n }\n if (depth > 2) {\n console.warn(\"<Step /> should not be nested more than 2 levels deep!\");\n }\n if (orientation === \"horizontal\" && hasNestedSteps) {\n console.warn(\n \"<Stepper /> does not support nested steps in horizontal orientation!\",\n );\n }\n }\n }, [depth, orientation, hasNestedSteps]);\n\n const ariaCurrent = stage === \"active\" ? \"step\" : undefined;\n const iconSizeMultiplier = depth === 0 ? 1.5 : 1;\n const stageText = stage === \"inprogress\" ? \"in progress\" : stage;\n const state = status || stageText;\n\n const labelId = `${id}-label`;\n const descriptionId = `${id}-description`;\n const expandTriggerId = `${id}-expand-trigger`;\n const nestedStepperId = `${id}-nested-stepper`;\n\n const screenReaderOnly = {\n stateId: `${id}-sr-only-state`,\n stateText: state !== \"active\" ? state : \"\",\n substepsId: `${id}-sr-only-substeps`,\n substepsText: \"substeps\",\n toggleSubstepsId: `${id}-sr-only-toggle-substeps`,\n toggleSubstepsText: \"toggle substeps\",\n };\n\n return (\n <li\n id={id}\n aria-current={ariaCurrent}\n className={clsx(\n withBaseName(),\n withBaseName(`stage-${stage}`),\n withBaseName(`depth-${depth}`),\n status && withBaseName(`status-${status}`),\n !hasNestedSteps && withBaseName(\"terminal\"),\n hasNestedSteps && expanded && withBaseName(\"expanded\"),\n hasNestedSteps && !expanded && withBaseName(\"collapsed\"),\n className,\n )}\n style={\n {\n \"--saltStep-depth\": depth,\n ...style,\n } as CSSProperties\n }\n {...rest}\n ref={ref}\n >\n <StepScreenReaderOnly>\n {`${label} ${description !== undefined ? description : \"\"} ${screenReaderOnly.stateText}`}\n </StepScreenReaderOnly>\n {hasNestedSteps && (\n <>\n <StepScreenReaderOnly\n id={screenReaderOnly.toggleSubstepsId}\n aria-hidden\n >\n {screenReaderOnly.toggleSubstepsText}\n </StepScreenReaderOnly>\n <StepScreenReaderOnly id={screenReaderOnly.substepsId} aria-hidden>\n {screenReaderOnly.substepsText}\n </StepScreenReaderOnly>\n <StepScreenReaderOnly id={screenReaderOnly.stateId} aria-hidden>\n {screenReaderOnly.stateText}\n </StepScreenReaderOnly>\n </>\n )}\n <StepConnector />\n <StepIcon\n stage={stage}\n status={status}\n sizeMultiplier={iconSizeMultiplier}\n aria-hidden\n />\n {label && (\n <StepText id={labelId} purpose=\"label\" aria-hidden>\n {label}\n </StepText>\n )}\n {description && (\n <StepText id={descriptionId} purpose=\"description\" aria-hidden>\n {description}\n </StepText>\n )}\n {hasNestedSteps && orientation === \"vertical\" && (\n <StepExpandTrigger\n id={expandTriggerId}\n aria-expanded={expanded}\n aria-controls={nestedStepperId}\n aria-labelledby={[\n labelId,\n descriptionId,\n screenReaderOnly.stateId,\n screenReaderOnly.toggleSubstepsId,\n ].join(\" \")}\n expanded={expanded}\n onClick={(event) => {\n onToggle?.(event);\n setExpanded(!expanded);\n }}\n />\n )}\n {hasNestedSteps && orientation === \"vertical\" && (\n <Stepper\n id={nestedStepperId}\n aria-labelledby={[labelId, screenReaderOnly.substepsId].join(\" \")}\n aria-hidden={!expanded}\n hidden={!expanded}\n >\n {children}\n </Stepper>\n )}\n </li>\n );\n});\n"],"names":["makePrefixer","forwardRef","Step","useId","useWindow","useContext","StepDepthContext","StepperOrientationContext","useControlled","useComponentCssInjection","stepCSS","useEffect","jsxs","clsx","jsx","StepScreenReaderOnly","Fragment","StepConnector","StepIcon","StepText","StepExpandTrigger","Stepper"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAiFA,MAAM,YAAA,GAAeA,0BAAa,UAAU,CAAA;AAErC,MAAM,IAAA,GAAOC,gBAAA,CAAqC,SAASC,KAAAA,CAChE;AAAA,EACE,EAAA,EAAI,MAAA;AAAA,EACJ,KAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA,GAAQ,SAAA;AAAA,EACR,QAAA,EAAU,YAAA;AAAA,EACV,eAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,EAAA,GAAKC,YAAM,MAAM,CAAA;AACvB,EAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,EAAA,MAAM,KAAA,GAAQC,iBAAWC,gCAAgB,CAAA;AACzC,EAAA,MAAM,WAAA,GAAcD,iBAAWE,yCAAyB,CAAA;AAExD,EAAA,MAAM,cAAA,GAAiB,CAAC,CAAC,QAAA;AAEzB,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIC,2BAAA,CAAc;AAAA,IAC5C,IAAA,EAAM,MAAA;AAAA,IACN,KAAA,EAAO,UAAA;AAAA,IACP,UAAA,EAAY,YAAA;AAAA,IACZ,OAAA,EAAS,QAAQ,eAAe;AAAA,GACjC,CAAA;AAED,EAAAC,+BAAA,CAAyB;AAAA,IACvB,MAAA,EAAQ,WAAA;AAAA,IACR,GAAA,EAAKC,MAAA;AAAA,IACL,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,EAAc;AACzC,MAAA,IAAI,UAAU,EAAA,EAAI;AAChB,QAAA,OAAA,CAAQ,KAAK,yDAAyD,CAAA;AAAA,MACxE;AACA,MAAA,IAAI,QAAQ,CAAA,EAAG;AACb,QAAA,OAAA,CAAQ,KAAK,wDAAwD,CAAA;AAAA,MACvE;AACA,MAAA,IAAI,WAAA,KAAgB,gBAAgB,cAAA,EAAgB;AAClD,QAAA,OAAA,CAAQ,IAAA;AAAA,UACN;AAAA,SACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,EAAO,WAAA,EAAa,cAAc,CAAC,CAAA;AAEvC,EAAA,MAAM,WAAA,GAAc,KAAA,KAAU,QAAA,GAAW,MAAA,GAAS,MAAA;AAClD,EAAA,MAAM,kBAAA,GAAqB,KAAA,KAAU,CAAA,GAAI,GAAA,GAAM,CAAA;AAC/C,EAAA,MAAM,SAAA,GAAY,KAAA,KAAU,YAAA,GAAe,aAAA,GAAgB,KAAA;AAC3D,EAAA,MAAM,QAAQ,MAAA,IAAU,SAAA;AAExB,EAAA,MAAM,OAAA,GAAU,GAAG,EAAE,CAAA,MAAA,CAAA;AACrB,EAAA,MAAM,aAAA,GAAgB,GAAG,EAAE,CAAA,YAAA,CAAA;AAC3B,EAAA,MAAM,eAAA,GAAkB,GAAG,EAAE,CAAA,eAAA,CAAA;AAC7B,EAAA,MAAM,eAAA,GAAkB,GAAG,EAAE,CAAA,eAAA,CAAA;AAE7B,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,OAAA,EAAS,GAAG,EAAE,CAAA,cAAA,CAAA;AAAA,IACd,SAAA,EAAW,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,EAAA;AAAA,IACxC,UAAA,EAAY,GAAG,EAAE,CAAA,iBAAA,CAAA;AAAA,IACjB,YAAA,EAAc,UAAA;AAAA,IACd,gBAAA,EAAkB,GAAG,EAAE,CAAA,wBAAA,CAAA;AAAA,IACvB,kBAAA,EAAoB;AAAA,GACtB;AAEA,EAAA,uBACEC,eAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,cAAA,EAAc,WAAA;AAAA,MACd,SAAA,EAAWC,SAAA;AAAA,QACT,YAAA,EAAa;AAAA,QACb,YAAA,CAAa,CAAA,MAAA,EAAS,KAAK,CAAA,CAAE,CAAA;AAAA,QAC7B,YAAA,CAAa,CAAA,MAAA,EAAS,KAAK,CAAA,CAAE,CAAA;AAAA,QAC7B,MAAA,IAAU,YAAA,CAAa,CAAA,OAAA,EAAU,MAAM,CAAA,CAAE,CAAA;AAAA,QACzC,CAAC,cAAA,IAAkB,YAAA,CAAa,UAAU,CAAA;AAAA,QAC1C,cAAA,IAAkB,QAAA,IAAY,YAAA,CAAa,UAAU,CAAA;AAAA,QACrD,cAAA,IAAkB,CAAC,QAAA,IAAY,YAAA,CAAa,WAAW,CAAA;AAAA,QACvD;AAAA,OACF;AAAA,MACA,KAAA,EACE;AAAA,QACE,kBAAA,EAAoB,KAAA;AAAA,QACpB,GAAG;AAAA,OACL;AAAA,MAED,GAAG,IAAA;AAAA,MACJ,GAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAC,cAAA,CAACC,yCAAA,EAAA,EACE,QAAA,EAAA,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,WAAA,KAAgB,MAAA,GAAY,WAAA,GAAc,EAAE,CAAA,CAAA,EAAI,gBAAA,CAAiB,SAAS,CAAA,CAAA,EACzF,CAAA;AAAA,QACC,kCACCH,eAAA,CAAAI,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAAF,cAAA;AAAA,YAACC,yCAAA;AAAA,YAAA;AAAA,cACC,IAAI,gBAAA,CAAiB,gBAAA;AAAA,cACrB,aAAA,EAAW,IAAA;AAAA,cAEV,QAAA,EAAA,gBAAA,CAAiB;AAAA;AAAA,WACpB;AAAA,0BACAD,cAAA,CAACC,6CAAqB,EAAA,EAAI,gBAAA,CAAiB,YAAY,aAAA,EAAW,IAAA,EAC/D,2BAAiB,YAAA,EACpB,CAAA;AAAA,0BACAD,cAAA,CAACC,6CAAqB,EAAA,EAAI,gBAAA,CAAiB,SAAS,aAAA,EAAW,IAAA,EAC5D,2BAAiB,SAAA,EACpB;AAAA,SAAA,EACF,CAAA;AAAA,uCAEDE,2BAAA,EAAA,EAAc,CAAA;AAAA,wBACfH,cAAA;AAAA,UAACI,iBAAA;AAAA,UAAA;AAAA,YACC,KAAA;AAAA,YACA,MAAA;AAAA,YACA,cAAA,EAAgB,kBAAA;AAAA,YAChB,aAAA,EAAW;AAAA;AAAA,SACb;AAAA,QACC,KAAA,mCACEC,iBAAA,EAAA,EAAS,EAAA,EAAI,SAAS,OAAA,EAAQ,OAAA,EAAQ,aAAA,EAAW,IAAA,EAC/C,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,QAED,WAAA,mCACEA,iBAAA,EAAA,EAAS,EAAA,EAAI,eAAe,OAAA,EAAQ,aAAA,EAAc,aAAA,EAAW,IAAA,EAC3D,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,QAED,cAAA,IAAkB,gBAAgB,UAAA,oBACjCL,cAAA;AAAA,UAACM,mCAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,eAAA;AAAA,YACJ,eAAA,EAAe,QAAA;AAAA,YACf,eAAA,EAAe,eAAA;AAAA,YACf,iBAAA,EAAiB;AAAA,cACf,OAAA;AAAA,cACA,aAAA;AAAA,cACA,gBAAA,CAAiB,OAAA;AAAA,cACjB,gBAAA,CAAiB;AAAA,aACnB,CAAE,KAAK,GAAG,CAAA;AAAA,YACV,QAAA;AAAA,YACA,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,cAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAW,KAAA,CAAA;AACX,cAAA,WAAA,CAAY,CAAC,QAAQ,CAAA;AAAA,YACvB;AAAA;AAAA,SACF;AAAA,QAED,cAAA,IAAkB,gBAAgB,UAAA,oBACjCN,cAAA;AAAA,UAACO,eAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,eAAA;AAAA,YACJ,mBAAiB,CAAC,OAAA,EAAS,iBAAiB,UAAU,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,YAChE,eAAa,CAAC,QAAA;AAAA,YACd,QAAQ,CAAC,QAAA;AAAA,YAER;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"Step.js","sources":["../src/stepper/Step.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type CSSProperties,\n forwardRef,\n type ReactNode,\n useContext,\n useEffect,\n} from \"react\";\nimport type { ButtonProps } from \"../button\";\nimport { makePrefixer, useControlled, useId } from \"../utils\";\nimport { hasActiveStep } from \"./internal/hasActiveStep\";\nimport { StepConnector } from \"./internal/StepConnector\";\nimport { StepExpandTrigger } from \"./internal/StepExpandTrigger\";\nimport { StepIcon } from \"./internal/StepIcon\";\nimport {\n StepDepthContext,\n StepperOrientationContext,\n} from \"./internal/StepperProvider\";\nimport { StepScreenReaderOnly } from \"./internal/StepScreenReaderOnly\";\nimport { StepText } from \"./internal/StepText\";\nimport stepCSS from \"./Step.css\";\nimport { Stepper } from \"./Stepper\";\n\nexport interface StepProps\n extends Omit<ComponentPropsWithoutRef<\"li\">, \"onToggle\"> {\n /**\n * The label of the step\n */\n label?: ReactNode;\n /**\n * Description text is displayed just below the label\n **/\n description?: ReactNode;\n /**\n * Optional string to determine the status of the step.\n */\n status?: StepStatus;\n /**\n * The stage of the step\n */\n stage?: StepStage;\n /**\n * Whether the step item is expanded.\n */\n expanded?: boolean;\n /**\n * Initial expanded state of the step.\n */\n defaultExpanded?: boolean;\n /**\n * Callback fired when the step is toggled.\n */\n onToggle?: ButtonProps[\"onClick\"];\n}\n\nexport type StepId = string;\n\nexport type StepStatus = \"warning\" | \"error\";\n\nexport type StepStage =\n | \"pending\"\n | \"locked\"\n | \"completed\"\n | \"inprogress\"\n | \"active\";\n\nexport type StepDepth = number;\n\nexport interface StepProps\n extends Omit<ComponentPropsWithoutRef<\"li\">, \"onToggle\"> {\n label?: ReactNode;\n description?: ReactNode;\n status?: StepStatus;\n stage?: StepStage;\n expanded?: boolean;\n defaultExpanded?: boolean;\n onToggle?: ButtonProps[\"onClick\"];\n}\n\nconst withBaseName = makePrefixer(\"saltStep\");\n\nexport const Step = forwardRef<HTMLLIElement, StepProps>(function Step(\n {\n id: idProp,\n label,\n description,\n status,\n stage = \"pending\",\n expanded: expandedProp,\n defaultExpanded,\n onToggle,\n className,\n style,\n children,\n ...rest\n },\n ref,\n) {\n const id = useId(idProp);\n const targetWindow = useWindow();\n const depth = useContext(StepDepthContext);\n const orientation = useContext(StepperOrientationContext);\n\n const hasNestedSteps = !!children;\n\n const [expanded, setExpanded] = useControlled({\n name: \"Step\",\n state: \"expanded\",\n controlled: expandedProp,\n default: Boolean(defaultExpanded),\n });\n\n useComponentCssInjection({\n testId: \"salt-step\",\n css: stepCSS,\n window: targetWindow,\n });\n\n useEffect(() => {\n if (process.env.NODE_ENV !== \"production\") {\n if (depth === -1) {\n console.warn(\"<Step /> should be used within a <Stepper /> component!\");\n }\n if (depth > 2) {\n console.warn(\"<Step /> should not be nested more than 2 levels deep!\");\n }\n if (orientation === \"horizontal\" && hasNestedSteps) {\n console.warn(\n \"<Stepper /> does not support nested steps in horizontal orientation!\",\n );\n }\n }\n }, [depth, orientation, hasNestedSteps]);\n\n const ariaCurrent = stage === \"active\" ? \"step\" : undefined;\n const iconSizeMultiplier = depth === 0 ? 1.5 : 1;\n const stageText = stage === \"inprogress\" ? \"in progress\" : stage;\n const state = status || stageText;\n\n const labelId = `${id}-label`;\n const descriptionId = `${id}-description`;\n const expandTriggerId = `${id}-expand-trigger`;\n const nestedStepperId = `${id}-nested-stepper`;\n\n const screenReaderOnly = {\n stateId: `${id}-sr-only-state`,\n stateText: state !== \"active\" ? state : \"\",\n substepsId: `${id}-sr-only-substeps`,\n substepsText: \"substeps\",\n toggleSubstepsId: `${id}-sr-only-toggle-substeps`,\n toggleSubstepsText: \"toggle substeps\",\n };\n\n return (\n <li\n id={id}\n aria-current={ariaCurrent}\n className={clsx(\n withBaseName(),\n withBaseName(`stage-${stage}`),\n withBaseName(`depth-${depth}`),\n status && withBaseName(`status-${status}`),\n !hasNestedSteps && withBaseName(\"terminal\"),\n hasNestedSteps &&\n hasActiveStep(children) &&\n withBaseName(\"hasActiveStep\"),\n hasNestedSteps && expanded && withBaseName(\"expanded\"),\n hasNestedSteps && !expanded && withBaseName(\"collapsed\"),\n className,\n )}\n style={\n {\n \"--saltStep-depth\": depth,\n ...style,\n } as CSSProperties\n }\n {...rest}\n ref={ref}\n >\n <StepScreenReaderOnly>\n {`${label} ${description !== undefined ? description : \"\"} ${screenReaderOnly.stateText}`}\n </StepScreenReaderOnly>\n {hasNestedSteps && (\n <>\n <StepScreenReaderOnly\n id={screenReaderOnly.toggleSubstepsId}\n aria-hidden\n >\n {screenReaderOnly.toggleSubstepsText}\n </StepScreenReaderOnly>\n <StepScreenReaderOnly id={screenReaderOnly.substepsId} aria-hidden>\n {screenReaderOnly.substepsText}\n </StepScreenReaderOnly>\n <StepScreenReaderOnly id={screenReaderOnly.stateId} aria-hidden>\n {screenReaderOnly.stateText}\n </StepScreenReaderOnly>\n </>\n )}\n <StepConnector />\n <StepIcon\n stage={stage}\n status={status}\n sizeMultiplier={iconSizeMultiplier}\n aria-hidden\n />\n {label && (\n <StepText id={labelId} purpose=\"label\" aria-hidden>\n {label}\n </StepText>\n )}\n {description && (\n <StepText\n id={descriptionId}\n purpose=\"description\"\n color={status}\n aria-hidden\n >\n {description}\n </StepText>\n )}\n {hasNestedSteps && orientation === \"vertical\" && (\n <StepExpandTrigger\n id={expandTriggerId}\n aria-expanded={expanded}\n aria-controls={nestedStepperId}\n aria-labelledby={[\n labelId,\n descriptionId,\n screenReaderOnly.stateId,\n screenReaderOnly.toggleSubstepsId,\n ].join(\" \")}\n expanded={expanded}\n onClick={(event) => {\n onToggle?.(event);\n setExpanded(!expanded);\n }}\n />\n )}\n {hasNestedSteps && orientation === \"vertical\" && (\n <Stepper\n id={nestedStepperId}\n aria-labelledby={[labelId, screenReaderOnly.substepsId].join(\" \")}\n aria-hidden={!expanded}\n hidden={!expanded}\n >\n {children}\n </Stepper>\n )}\n </li>\n );\n});\n"],"names":["makePrefixer","forwardRef","Step","useId","useWindow","useContext","StepDepthContext","StepperOrientationContext","useControlled","useComponentCssInjection","stepCSS","useEffect","jsxs","clsx","hasActiveStep","jsx","StepScreenReaderOnly","Fragment","StepConnector","StepIcon","StepText","StepExpandTrigger","Stepper"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltStepConnector {\n grid-area: connector;\n\n transition-duration: inherit;\n transition-timing-function: inherit;\n transition-property: opacity, min-height;\n}\n\n.saltStepper-horizontal .saltStepConnector {\n position: absolute;\n transform: translateY(-100%);\n top: calc(var(--step-icon-size) / 2);\n left: calc(50% + calc(var(--step-icon-size) / 2 + var(--salt-spacing-100)));\n right: calc(-50% + calc(var(--step-icon-size) / 2 + var(--salt-spacing-100)));\n\n border-top-width: var(--salt-size-fixed-200);\n border-top-style: var(--salt-borderStyle-dotted);\n border-top-color: var(--salt-sentiment-neutral-track);\n}\n\n.saltStepper-horizontal .saltStep-stage-completed > .saltStepConnector,\n.saltStepper-horizontal .saltStep-stage-inprogress > .saltStepConnector {\n border-top-style: var(--salt-borderStyle-solid);\n}\n\n.saltStepper-vertical .saltStepConnector {\n min-height: var(--salt-size-base);\n align-self: stretch;\n justify-self: center;\n\n border-left-width: var(--salt-size-fixed-200);\n border-left-style: var(--salt-borderStyle-dotted);\n border-left-color: var(--salt-sentiment-neutral-track);\n}\n\n.saltStepper-vertical .saltStep-stage-completed > .saltStepConnector,\n.saltStepper-vertical .saltStep-stage-inprogress > .saltStepConnector {\n border-left-style: var(--salt-borderStyle-solid);\n}\n\n.saltStep-depth-0.saltStep:not(.saltStep-expanded):last-child > .saltStepConnector {\n opacity: 0;\n min-height: 0;\n}\n\n.saltStep-depth-0.saltStep-expanded:last-child .saltStep:not(.saltStep-expanded):last-child .saltStepConnector {\n opacity: 0;\n min-height: 0;\n}\n";
3
+ var css_248z = ".saltStepConnector {\n grid-area: connector;\n\n transition-duration: inherit;\n transition-timing-function: inherit;\n transition-property: opacity, min-height;\n}\n\n.saltStepper-horizontal .saltStepConnector {\n position: absolute;\n transform: translateY(-100%);\n top: calc(var(--step-icon-size) / 2);\n left: calc(50% + calc(var(--step-icon-size) / 2 + var(--salt-spacing-100)));\n right: calc(-50% + calc(var(--step-icon-size) / 2 + var(--salt-spacing-100)));\n\n border-top-width: var(--salt-size-fixed-200);\n border-top-style: var(--salt-borderStyle-dotted);\n border-top-color: var(--salt-sentiment-neutral-track);\n}\n\n.saltStepper-horizontal .saltStep-stage-completed > .saltStepConnector,\n.saltStepper-horizontal .saltStep-stage-inprogress > .saltStepConnector {\n border-top-style: var(--salt-borderStyle-solid);\n border-top-color: var(--salt-sentiment-accent-background);\n}\n\n.saltStepper-vertical .saltStepConnector {\n min-height: var(--salt-spacing-300);\n align-self: stretch;\n justify-self: center;\n\n border-left-width: var(--salt-size-fixed-200);\n border-left-style: var(--salt-borderStyle-dotted);\n border-left-color: var(--salt-sentiment-neutral-track);\n}\n\n.saltStepper-vertical .saltStep-stage-completed > .saltStepConnector,\n.saltStepper-vertical .saltStep-stage-inprogress > .saltStepConnector {\n border-left-style: var(--salt-borderStyle-solid);\n border-left-color: var(--salt-sentiment-accent-background);\n}\n\n.saltStep-depth-0.saltStep:not(.saltStep-expanded):last-child > .saltStepConnector {\n opacity: 0;\n min-height: 0;\n}\n\n.saltStep-depth-0.saltStep-expanded:last-child .saltStep:not(.saltStep-expanded):last-child .saltStepConnector {\n opacity: 0;\n min-height: 0;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=StepConnector.css.js.map