@sproutsocial/seeds-react-menu 1.17.0 → 1.18.1

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 (59) hide show
  1. package/.turbo/turbo-build.log +14 -22
  2. package/CHANGELOG.md +37 -0
  3. package/dist/esm/index.js +542 -229
  4. package/dist/esm/index.js.map +1 -1
  5. package/dist/esm/v3/index.js +793 -1038
  6. package/dist/esm/v3/index.js.map +1 -1
  7. package/dist/v3/index.d.mts +64 -38
  8. package/dist/v3/index.d.ts +64 -38
  9. package/dist/v3/index.js +813 -1058
  10. package/dist/v3/index.js.map +1 -1
  11. package/dist/v3/menu.css +947 -0
  12. package/package.json +20 -21
  13. package/src/v3/ActionMenuStyles.tsx +169 -149
  14. package/src/v3/Common/ComboboxStyles.tsx +396 -511
  15. package/src/v3/Common/SelectIcons.tsx +17 -8
  16. package/src/v3/Common/SelectItem.tsx +25 -38
  17. package/src/v3/Common/SelectStyles.tsx +146 -144
  18. package/src/v3/Common/cn.ts +38 -0
  19. package/src/v3/MenuButtonStyles.tsx +55 -34
  20. package/src/v3/MultiSearchableSelect.tsx +8 -8
  21. package/src/v3/MultiSelect.tsx +11 -16
  22. package/src/v3/SingleSelect.tsx +13 -13
  23. package/src/v3/menu.css +947 -0
  24. package/tsup.config.ts +0 -1
  25. package/dist/esm/chunk-ROQATIB7.js +0 -357
  26. package/dist/esm/chunk-ROQATIB7.js.map +0 -1
  27. package/dist/esm/v2/index.js +0 -2089
  28. package/dist/esm/v2/index.js.map +0 -1
  29. package/dist/v2/index.d.mts +0 -108
  30. package/dist/v2/index.d.ts +0 -108
  31. package/dist/v2/index.js +0 -2280
  32. package/dist/v2/index.js.map +0 -1
  33. package/src/v2/Autocomplete/Autocomplete.stories.tsx +0 -645
  34. package/src/v2/Autocomplete/MultiAutocomplete.tsx +0 -487
  35. package/src/v2/Autocomplete/SingleAutocomplete.tsx +0 -366
  36. package/src/v2/Autocomplete/index.ts +0 -2
  37. package/src/v2/Common-V2/ComboboxContent.tsx +0 -457
  38. package/src/v2/Common-V2/MenuGroup.tsx +0 -60
  39. package/src/v2/Common-V2/MenuGroupTypes.ts +0 -30
  40. package/src/v2/Common-V2/MenuHeading.tsx +0 -83
  41. package/src/v2/Common-V2/MenuItem.tsx +0 -138
  42. package/src/v2/Common-V2/Popout.tsx +0 -124
  43. package/src/v2/Common-V2/PopoutTypes.tsx +0 -109
  44. package/src/v2/Common-V2/SelectToggleButton.tsx +0 -99
  45. package/src/v2/Common-V2/index.ts +0 -11
  46. package/src/v2/Common-V2/props.ts +0 -84
  47. package/src/v2/Common-V2/styles.tsx +0 -41
  48. package/src/v2/Common-V2/types.ts +0 -16
  49. package/src/v2/Common-V2/useHighlightedIndex.ts +0 -62
  50. package/src/v2/Common-V2/utils.ts +0 -238
  51. package/src/v2/SearchableSelect/AutocompleteContent.tsx +0 -325
  52. package/src/v2/SearchableSelect/SearchableMultiSelect.tsx +0 -527
  53. package/src/v2/SearchableSelect/SearchableSelect.tsx +0 -395
  54. package/src/v2/SearchableSelect/index.ts +0 -12
  55. package/src/v2/Select/MultiSelect.tsx +0 -417
  56. package/src/v2/Select/Select.stories.tsx +0 -593
  57. package/src/v2/Select/SingleSelect.tsx +0 -285
  58. package/src/v2/Select/index.ts +0 -2
  59. package/src/v2/index.ts +0 -2
@@ -1,7 +1,6 @@
1
1
  // src/v3/SingleSelect.tsx
2
- import * as React4 from "react";
2
+ import * as React5 from "react";
3
3
  import { Select as Select3 } from "@base-ui/react/select";
4
- import styled4 from "styled-components";
5
4
 
6
5
  // src/v3/SeedsPortal.tsx
7
6
  import * as React from "react";
@@ -24,49 +23,51 @@ function useSeedsPortalContainer() {
24
23
  }
25
24
 
26
25
  // src/v3/Common/SelectItem.tsx
27
- import "react";
26
+ import * as React2 from "react";
28
27
  import { Select } from "@base-ui/react/select";
29
- import styled from "styled-components";
30
28
  import Radio from "@sproutsocial/seeds-react-radio";
31
29
  import Checkbox from "@sproutsocial/seeds-react-checkbox";
32
30
  import { Icon } from "@sproutsocial/seeds-react-icon";
33
- import { jsx, jsxs } from "react/jsx-runtime";
34
- var StyledItem = styled(Select.Item)`
35
- display: flex;
36
- align-items: center;
37
- gap: 8px;
38
- padding: 6px 8px;
39
- border-radius: ${({ theme }) => theme.radii[500]};
40
- font-size: 14px;
41
- color: ${({ theme }) => theme.colors.text.body};
42
- cursor: default;
43
- outline: none;
44
31
 
45
- &[data-highlighted] {
46
- background: ${({ theme }) => theme.colors.listItem.background.hover};
47
- }
48
-
49
- &[data-selected] {
50
- font-weight: ${({ theme }) => theme.fontWeights.semibold};
32
+ // src/v3/Common/cn.ts
33
+ function cn(...inputs) {
34
+ const classes = [];
35
+ for (const input of inputs) {
36
+ if (!input) continue;
37
+ if (typeof input === "string") {
38
+ classes.push(input);
39
+ } else if (typeof input === "object") {
40
+ for (const [key, value] of Object.entries(input)) {
41
+ if (value) {
42
+ classes.push(key);
43
+ }
44
+ }
45
+ }
51
46
  }
47
+ return classes.join(" ");
48
+ }
52
49
 
53
- &[data-disabled] {
54
- opacity: 0.5;
55
- cursor: not-allowed;
56
- }
57
- `;
58
- var StyledItemIndicator = styled(Select.ItemIndicator)`
59
- display: flex;
60
- align-items: center;
61
- width: 16px;
62
- color: ${({ theme }) => theme.colors.text.body};
63
- visibility: hidden;
64
-
65
- &[data-selected] {
66
- visibility: visible;
67
- }
68
- `;
69
- var StyledItemText = styled(Select.ItemText)``;
50
+ // src/v3/Common/SelectItem.tsx
51
+ import { jsx, jsxs } from "react/jsx-runtime";
52
+ var StyledItem = React2.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx(
53
+ Select.Item,
54
+ {
55
+ ref,
56
+ className: cn("seeds-select-item", className),
57
+ ...rest
58
+ }
59
+ ));
60
+ StyledItem.displayName = "StyledItem";
61
+ var StyledItemIndicator = React2.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx(
62
+ Select.ItemIndicator,
63
+ {
64
+ ref,
65
+ className: cn("seeds-select-item-indicator", className),
66
+ ...rest
67
+ }
68
+ ));
69
+ StyledItemIndicator.displayName = "StyledItemIndicator";
70
+ var StyledItemText = Select.ItemText;
70
71
  function CheckIcon() {
71
72
  return /* @__PURE__ */ jsx(Icon, { name: "check-outline", fixedWidth: true, "aria-hidden": true });
72
73
  }
@@ -137,173 +138,148 @@ function groupItems(data, groupBy) {
137
138
  }
138
139
 
139
140
  // src/v3/Common/SelectStyles.tsx
141
+ import * as React3 from "react";
140
142
  import { Select as Select2 } from "@base-ui/react/select";
141
- import styled3, { css } from "styled-components";
142
- import { focusRing } from "@sproutsocial/seeds-react-mixins";
143
+ import { jsx as jsx2 } from "react/jsx-runtime";
144
+ var Field = React3.forwardRef(
145
+ ({ $fullWidth, className, ...rest }, ref) => /* @__PURE__ */ jsx2(
146
+ "div",
147
+ {
148
+ ref,
149
+ className: cn(
150
+ "seeds-menu-field",
151
+ { "seeds-menu-field--inline": $fullWidth === false },
152
+ className
153
+ ),
154
+ ...rest
155
+ }
156
+ )
157
+ );
158
+ Field.displayName = "Field";
159
+ var SelectLabel = React3.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx2(
160
+ Select2.Label,
161
+ {
162
+ ref,
163
+ className: cn("seeds-menu-label", className),
164
+ ...rest
165
+ }
166
+ ));
167
+ SelectLabel.displayName = "SelectLabel";
168
+ var SelectTrigger = React3.forwardRef(({ $isInvalid, className, ...rest }, ref) => /* @__PURE__ */ jsx2(
169
+ Select2.Trigger,
170
+ {
171
+ ref,
172
+ className: cn(
173
+ "seeds-select-trigger",
174
+ { "seeds-select-trigger--invalid": !!$isInvalid },
175
+ className
176
+ ),
177
+ ...rest
178
+ }
179
+ ));
180
+ SelectTrigger.displayName = "SelectTrigger";
181
+ var SelectValue = React3.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx2(
182
+ Select2.Value,
183
+ {
184
+ ref,
185
+ className: cn("seeds-select-value", className),
186
+ ...rest
187
+ }
188
+ ));
189
+ SelectValue.displayName = "SelectValue";
190
+ var SelectIcon = React3.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx2(
191
+ Select2.Icon,
192
+ {
193
+ ref,
194
+ className: cn("seeds-select-icon", className),
195
+ ...rest
196
+ }
197
+ ));
198
+ SelectIcon.displayName = "SelectIcon";
199
+ var SelectGroup = React3.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx2(
200
+ Select2.Group,
201
+ {
202
+ ref,
203
+ className: cn("seeds-select-group", className),
204
+ ...rest
205
+ }
206
+ ));
207
+ SelectGroup.displayName = "SelectGroup";
208
+ var SelectGroupLabel = React3.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx2(
209
+ Select2.GroupLabel,
210
+ {
211
+ ref,
212
+ className: cn("seeds-select-group-label", className),
213
+ ...rest
214
+ }
215
+ ));
216
+ SelectGroupLabel.displayName = "SelectGroupLabel";
217
+ var SelectSeparator = React3.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx2(
218
+ Select2.Separator,
219
+ {
220
+ ref,
221
+ className: cn("seeds-select-separator", className),
222
+ ...rest
223
+ }
224
+ ));
225
+ SelectSeparator.displayName = "SelectSeparator";
226
+ var SelectPositioner = React3.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx2(
227
+ Select2.Positioner,
228
+ {
229
+ ref,
230
+ className: cn("seeds-select-positioner", className),
231
+ ...rest
232
+ }
233
+ ));
234
+ SelectPositioner.displayName = "SelectPositioner";
235
+ var SelectPopup = React3.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx2(
236
+ Select2.Popup,
237
+ {
238
+ ref,
239
+ className: cn("seeds-select-popup", className),
240
+ ...rest
241
+ }
242
+ ));
243
+ SelectPopup.displayName = "SelectPopup";
143
244
 
144
245
  // src/v3/Common/SelectIcons.tsx
145
- import "react";
146
- import styled2 from "styled-components";
246
+ import * as React4 from "react";
147
247
  import { Icon as Icon2 } from "@sproutsocial/seeds-react-icon";
148
- import { jsx as jsx2 } from "react/jsx-runtime";
149
- var StyledChevron = styled2.div`
150
- display: flex;
151
- align-items: center;
152
- transition: transform 0.15s;
153
- ${({ $isOpen }) => $isOpen && "transform: rotate(-180deg);"}
154
- `;
248
+ import { jsx as jsx3 } from "react/jsx-runtime";
249
+ var StyledChevron = React4.forwardRef(({ $isOpen, className, ...rest }, ref) => /* @__PURE__ */ jsx3(
250
+ "div",
251
+ {
252
+ ref,
253
+ className: cn(
254
+ "seeds-menu-chevron",
255
+ { "seeds-menu-chevron--open": !!$isOpen },
256
+ className
257
+ ),
258
+ ...rest
259
+ }
260
+ ));
261
+ StyledChevron.displayName = "StyledChevron";
155
262
  function ChevronIcon() {
156
- return /* @__PURE__ */ jsx2(Icon2, { name: "chevron-down-outline", fixedWidth: true, "aria-hidden": true });
263
+ return /* @__PURE__ */ jsx3(Icon2, { name: "chevron-down-outline", fixedWidth: true, "aria-hidden": true });
157
264
  }
158
265
  function ClearIcon() {
159
- return /* @__PURE__ */ jsx2(Icon2, { name: "circle-x-outline", fixedWidth: true, "aria-hidden": true, size: "mini" });
266
+ return /* @__PURE__ */ jsx3(Icon2, { name: "circle-x-outline", fixedWidth: true, "aria-hidden": true, size: "mini" });
160
267
  }
161
268
  function CheckIcon2() {
162
- return /* @__PURE__ */ jsx2(Icon2, { name: "check-outline", fixedWidth: true, "aria-hidden": true });
269
+ return /* @__PURE__ */ jsx3(Icon2, { name: "check-outline", fixedWidth: true, "aria-hidden": true });
163
270
  }
164
271
 
165
- // src/v3/Common/SelectStyles.tsx
166
- var invalidStyles = css`
167
- border-color: ${({ theme }) => theme.colors.form.border.error};
168
-
169
- ${StyledChevron} {
170
- color: ${({ theme }) => theme.colors.icon.error};
171
- }
172
- `;
173
- var Field = styled3.div`
174
- display: ${({ $fullWidth }) => $fullWidth === false ? "inline-flex" : "flex"};
175
- flex-direction: column;
176
- gap: ${({ theme }) => theme.space[200]};
177
- ${({ $fullWidth }) => $fullWidth !== false && "width: 100%;"}
178
- `;
179
- var SelectLabel = styled3(Select2.Label)`
180
- font-size: ${({ theme }) => theme.typography[200].fontSize};
181
- font-weight: ${({ theme }) => theme.fontWeights.semibold};
182
- color: ${({ theme }) => theme.colors.text.body};
183
- `;
184
- var SelectTrigger = styled3(Select2.Trigger)`
185
- display: flex;
186
- align-items: center;
187
- justify-content: space-between;
188
- gap: ${({ theme }) => theme.space[300]};
189
- padding: ${({ theme }) => `${theme.space[300]}`};
190
- min-width: 160px;
191
- border-radius: ${({ theme }) => theme.radii[500]};
192
- border: 1px solid ${({ theme }) => theme.colors.form.border.base};
193
- background: ${({ theme }) => theme.colors.form.background.base};
194
- font-size: ${({ theme }) => theme.typography[200].fontSize};
195
- color: ${({ theme }) => theme.colors.text.body};
196
- cursor: default;
197
- outline: none;
198
- transition: border-color ${({ theme }) => theme.duration.fast}
199
- ${({ theme }) => theme.easing.ease_in},
200
- box-shadow ${({ theme }) => theme.duration.fast}
201
- ${({ theme }) => theme.easing.ease_in};
202
-
203
- &:focus-visible {
204
- ${focusRing}
205
- }
206
-
207
- &[data-popup-open] {
208
- ${focusRing}
209
- }
210
-
211
- &[data-popup-open] [data-chevron] {
212
- transform: rotate(-180deg);
213
- }
214
-
215
- &[data-disabled] {
216
- opacity: 0.4;
217
- cursor: not-allowed;
218
- }
219
-
220
- ${({ $isInvalid }) => $isInvalid && invalidStyles}
221
- `;
222
- var SelectValue = styled3(Select2.Value)`
223
- min-width: 0;
224
- overflow: hidden;
225
- `;
226
- var SelectIcon = styled3(Select2.Icon)`
227
- display: flex;
228
- align-items: center;
229
- color: ${({ theme }) => theme.colors.icon.base};
230
- flex-shrink: 0;
231
- `;
232
- var SelectGroup = styled3(Select2.Group)`
233
- display: block;
234
- `;
235
- var SelectGroupLabel = styled3(Select2.GroupLabel)`
236
- padding: ${({ theme }) => `${theme.space[300]} ${theme.space[300]} ${theme.space[200]}`};
237
- font-size: ${({ theme }) => theme.typography[100].fontSize};
238
- font-weight: ${({ theme }) => theme.fontWeights.semibold};
239
- text-transform: uppercase;
240
- letter-spacing: 0.05em;
241
- color: ${({ theme }) => theme.colors.text.subtext};
242
- `;
243
- var SelectSeparator = styled3(Select2.Separator)`
244
- height: 1px;
245
- margin: ${({ theme }) => `${theme.space[200]} ${theme.space[300]}`};
246
- background: ${({ theme }) => theme.colors.container.border.base};
247
- `;
248
- var SelectPositioner = styled3(Select2.Positioner)`
249
- width: var(--anchor-width);
250
- z-index: 7;
251
- `;
252
- var SelectPopup = styled3(Select2.Popup)`
253
- font-family: ${({ theme }) => theme.fontFamily};
254
- background: ${({ theme }) => theme.colors.container.background.base};
255
- border: 1px solid ${({ theme }) => theme.colors.container.border.base};
256
- border-radius: ${({ theme }) => theme.radii[500]};
257
- box-shadow: ${({ theme }) => theme.shadows.low};
258
- outline: none;
259
- max-height: min(var(--available-height, 400px), 400px);
260
- overflow-y: auto;
261
- padding: ${({ theme }) => theme.space[200]};
262
-
263
- &[data-open] {
264
- animation: select-popup-in 120ms ease-out;
265
- }
266
-
267
- &[data-closed] {
268
- animation: select-popup-out 100ms ease-in;
269
- }
270
-
271
- @keyframes select-popup-in {
272
- from {
273
- opacity: 0;
274
- transform: scale(0.95);
275
- }
276
- to {
277
- opacity: 1;
278
- transform: scale(1);
279
- }
280
- }
281
-
282
- @keyframes select-popup-out {
283
- from {
284
- opacity: 1;
285
- transform: scale(1);
286
- }
287
- to {
288
- opacity: 0;
289
- transform: scale(0.95);
290
- }
291
- }
292
- `;
293
-
294
272
  // src/v3/SingleSelect.tsx
295
- import { Fragment as Fragment2, jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
296
- var StyledValue = styled4(Select3.Value)`
297
- flex: 1;
298
- text-align: left;
299
- overflow: hidden;
300
- text-overflow: ellipsis;
301
- white-space: nowrap;
302
-
303
- &[data-placeholder] {
304
- color: ${({ theme }) => theme.colors.text.subtext};
305
- }
306
- `;
273
+ import { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
274
+ var StyledValue = React5.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx4(
275
+ Select3.Value,
276
+ {
277
+ ref,
278
+ className: cn("seeds-select-value-text", className),
279
+ ...rest
280
+ }
281
+ ));
282
+ StyledValue.displayName = "StyledValue";
307
283
  function SingleSelect(props) {
308
284
  const { id, placeholder, includePlaceholderItem, fullWidth = true } = props;
309
285
  const ariaDescribedBy = props["aria-describedby"];
@@ -323,7 +299,7 @@ function SingleSelect(props) {
323
299
  const renderGroupHeading = isChildrenMode ? void 0 : props.renderGroupHeading;
324
300
  const children = isChildrenMode ? props.children : void 0;
325
301
  const { containerRef, portalContainer } = useSeedsPortalContainer();
326
- const items = React4.useMemo(() => {
302
+ const items = React5.useMemo(() => {
327
303
  const dataItems = data.map((item) => ({
328
304
  value: String(item.id),
329
305
  label: itemToString(item)
@@ -335,11 +311,11 @@ function SingleSelect(props) {
335
311
  }, [data, itemToString, includePlaceholderItem, placeholder]);
336
312
  const dataWithPlaceholder = includePlaceholderItem ? [{ id: null, value: null, label: placeholder ?? "" }, ...data] : data;
337
313
  const isControlled = selectedItemId !== void 0;
338
- const [internalValue, setInternalValue] = React4.useState(
314
+ const [internalValue, setInternalValue] = React5.useState(
339
315
  defaultSelectedItemId != null ? String(defaultSelectedItemId) : null
340
316
  );
341
317
  const value = isControlled ? selectedItemId != null ? String(selectedItemId) : null : internalValue;
342
- const selectedItem = React4.useMemo(
318
+ const selectedItem = React5.useMemo(
343
319
  () => value != null ? data.find((d) => String(d.id) === value) ?? null : null,
344
320
  [data, value]
345
321
  );
@@ -357,7 +333,7 @@ function SingleSelect(props) {
357
333
  }
358
334
  }
359
335
  return /* @__PURE__ */ jsxs2(Field, { $fullWidth: fullWidth, children: [
360
- /* @__PURE__ */ jsx3("div", { ref: containerRef, style: { position: "relative" } }),
336
+ /* @__PURE__ */ jsx4("div", { ref: containerRef, style: { position: "relative" } }),
361
337
  /* @__PURE__ */ jsxs2(
362
338
  Select3.Root,
363
339
  {
@@ -375,22 +351,22 @@ function SingleSelect(props) {
375
351
  "aria-required": props.required || void 0,
376
352
  $isInvalid: isInvalid,
377
353
  children: [
378
- /* @__PURE__ */ jsx3(StyledValue, { placeholder, children: renderSelection && selectedItem ? renderSelection(selectedItem) : void 0 }),
379
- /* @__PURE__ */ jsx3(SelectIcon, { children: /* @__PURE__ */ jsx3(StyledChevron, { "data-chevron": true, children: /* @__PURE__ */ jsx3(ChevronIcon, {}) }) })
354
+ /* @__PURE__ */ jsx4(StyledValue, { placeholder, children: renderSelection && selectedItem ? renderSelection(selectedItem) : void 0 }),
355
+ /* @__PURE__ */ jsx4(SelectIcon, { children: /* @__PURE__ */ jsx4(StyledChevron, { "data-chevron": true, children: /* @__PURE__ */ jsx4(ChevronIcon, {}) }) })
380
356
  ]
381
357
  }
382
358
  ),
383
- /* @__PURE__ */ jsx3(Select3.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx3(SelectPositioner, { sideOffset: 8, alignItemWithTrigger: false, children: /* @__PURE__ */ jsxs2(SelectPopup, { children: [
384
- /* @__PURE__ */ jsx3(Select3.ScrollUpArrow, {}),
385
- /* @__PURE__ */ jsx3(
359
+ /* @__PURE__ */ jsx4(Select3.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx4(SelectPositioner, { sideOffset: 8, alignItemWithTrigger: false, children: /* @__PURE__ */ jsxs2(SelectPopup, { children: [
360
+ /* @__PURE__ */ jsx4(Select3.ScrollUpArrow, {}),
361
+ /* @__PURE__ */ jsx4(
386
362
  Select3.List,
387
363
  {
388
364
  "aria-label": ariaLabel,
389
365
  "aria-labelledby": ariaLabelledBy,
390
- children: children ? children : groupBy ? groupItems(data, groupBy).map((group, index, arr) => /* @__PURE__ */ jsxs2(React4.Fragment, { children: [
366
+ children: children ? children : groupBy ? groupItems(data, groupBy).map((group, index, arr) => /* @__PURE__ */ jsxs2(React5.Fragment, { children: [
391
367
  /* @__PURE__ */ jsxs2(SelectGroup, { children: [
392
- /* @__PURE__ */ jsx3(SelectGroupLabel, { children: renderGroupHeading ? renderGroupHeading(group.value) : group.value }),
393
- group.items.map((item) => /* @__PURE__ */ jsx3(
368
+ /* @__PURE__ */ jsx4(SelectGroupLabel, { children: renderGroupHeading ? renderGroupHeading(group.value) : group.value }),
369
+ group.items.map((item) => /* @__PURE__ */ jsx4(
394
370
  SelectItem,
395
371
  {
396
372
  value: String(item.id),
@@ -402,9 +378,9 @@ function SingleSelect(props) {
402
378
  item.id
403
379
  ))
404
380
  ] }),
405
- index < arr.length - 1 && /* @__PURE__ */ jsx3(SelectSeparator, {})
381
+ index < arr.length - 1 && /* @__PURE__ */ jsx4(SelectSeparator, {})
406
382
  ] }, group.value)) : /* @__PURE__ */ jsxs2(Fragment2, { children: [
407
- includePlaceholderItem && /* @__PURE__ */ jsx3(
383
+ includePlaceholderItem && /* @__PURE__ */ jsx4(
408
384
  SelectItem,
409
385
  {
410
386
  value: null,
@@ -412,7 +388,7 @@ function SingleSelect(props) {
412
388
  },
413
389
  "placeholder"
414
390
  ),
415
- data.map((item) => /* @__PURE__ */ jsx3(
391
+ data.map((item) => /* @__PURE__ */ jsx4(
416
392
  SelectItem,
417
393
  {
418
394
  value: String(item.id),
@@ -426,7 +402,7 @@ function SingleSelect(props) {
426
402
  ] })
427
403
  }
428
404
  ),
429
- /* @__PURE__ */ jsx3(Select3.ScrollDownArrow, {})
405
+ /* @__PURE__ */ jsx4(Select3.ScrollDownArrow, {})
430
406
  ] }) }) })
431
407
  ]
432
408
  }
@@ -435,24 +411,14 @@ function SingleSelect(props) {
435
411
  }
436
412
 
437
413
  // src/v3/MultiSelect.tsx
438
- import * as React5 from "react";
414
+ import * as React6 from "react";
439
415
  import { Select as Select4 } from "@base-ui/react/select";
440
- import styled5 from "styled-components";
441
- import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
442
- var SelectionText = styled5.span`
443
- flex: 1;
444
- overflow: hidden;
445
- text-overflow: ellipsis;
446
- white-space: nowrap;
447
- `;
448
- var Placeholder = styled5.div`
449
- color: ${({ theme }) => theme.colors.text.subtext};
450
- font-size: ${({ theme }) => theme.typography[200].fontSize};
451
- line-height: 16px;
452
- padding-top: 2px;
453
- padding-bottom: 2px;
454
- margin: 2px 8px 0px 0px;
455
- `;
416
+ import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
417
+ var SelectionText = ({
418
+ className,
419
+ ...rest
420
+ }) => /* @__PURE__ */ jsx5("span", { className: cn("seeds-select-selection-text", className), ...rest });
421
+ var Placeholder = ({ className, ...rest }) => /* @__PURE__ */ jsx5("div", { className: cn("seeds-select-placeholder", className), ...rest });
456
422
  function MultiSelect(props) {
457
423
  const { id, placeholder = "Select...", fullWidth = true } = props;
458
424
  const ariaDescribedBy = props["aria-describedby"];
@@ -476,18 +442,18 @@ function MultiSelect(props) {
476
442
  const children = isChildrenMode ? props.children : void 0;
477
443
  const { containerRef, portalContainer } = useSeedsPortalContainer();
478
444
  const isControlled = selectedItemIds !== void 0;
479
- const [internalValue, setInternalValue] = React5.useState(
445
+ const [internalValue, setInternalValue] = React6.useState(
480
446
  () => defaultSelectedItemIds?.map(String) ?? []
481
447
  );
482
448
  const value = isControlled ? selectedItemIds.map(String) : internalValue;
483
- const items = React5.useMemo(
449
+ const items = React6.useMemo(
484
450
  () => data.map((item) => ({
485
451
  value: String(item.id),
486
452
  label: itemToString(item)
487
453
  })),
488
454
  [data, itemToString]
489
455
  );
490
- const selectedItems = React5.useMemo(
456
+ const selectedItems = React6.useMemo(
491
457
  () => value.map((v) => data.find((d) => String(d.id) === v)).filter((d) => d != null),
492
458
  [data, value]
493
459
  );
@@ -504,7 +470,7 @@ function MultiSelect(props) {
504
470
  }
505
471
  }
506
472
  return /* @__PURE__ */ jsxs3(Field, { $fullWidth: fullWidth, children: [
507
- /* @__PURE__ */ jsx4("div", { ref: containerRef, style: { position: "relative" } }),
473
+ /* @__PURE__ */ jsx5("div", { ref: containerRef, style: { position: "relative" } }),
508
474
  /* @__PURE__ */ jsxs3(
509
475
  Select4.Root,
510
476
  {
@@ -523,10 +489,10 @@ function MultiSelect(props) {
523
489
  "aria-required": props.required || void 0,
524
490
  $isInvalid: isInvalid,
525
491
  children: [
526
- /* @__PURE__ */ jsx4(SelectValue, { children: () => {
492
+ /* @__PURE__ */ jsx5(SelectValue, { children: () => {
527
493
  if (renderSelection) return renderSelection(selectedItems);
528
494
  if (selectedItems.length === 0)
529
- return /* @__PURE__ */ jsx4(Placeholder, { children: placeholder });
495
+ return /* @__PURE__ */ jsx5(Placeholder, { children: placeholder });
530
496
  const visibleItems = maxSelections != null ? selectedItems.slice(0, maxSelections) : selectedItems;
531
497
  const overflowCount = maxSelections != null && selectedItems.length > maxSelections ? selectedItems.length - maxSelections : 0;
532
498
  const text = visibleItems.map(
@@ -537,21 +503,21 @@ function MultiSelect(props) {
537
503
  overflowCount > 0 ? `, +${overflowCount}` : ""
538
504
  ] });
539
505
  } }),
540
- /* @__PURE__ */ jsx4(SelectIcon, { children: /* @__PURE__ */ jsx4(StyledChevron, { "data-chevron": true, children: /* @__PURE__ */ jsx4(ChevronIcon, {}) }) })
506
+ /* @__PURE__ */ jsx5(SelectIcon, { children: /* @__PURE__ */ jsx5(StyledChevron, { "data-chevron": true, children: /* @__PURE__ */ jsx5(ChevronIcon, {}) }) })
541
507
  ]
542
508
  }
543
509
  ),
544
- /* @__PURE__ */ jsx4(Select4.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx4(SelectPositioner, { sideOffset: 8, alignItemWithTrigger: false, children: /* @__PURE__ */ jsxs3(SelectPopup, { children: [
545
- /* @__PURE__ */ jsx4(Select4.ScrollUpArrow, {}),
546
- /* @__PURE__ */ jsx4(
510
+ /* @__PURE__ */ jsx5(Select4.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx5(SelectPositioner, { sideOffset: 8, alignItemWithTrigger: false, children: /* @__PURE__ */ jsxs3(SelectPopup, { children: [
511
+ /* @__PURE__ */ jsx5(Select4.ScrollUpArrow, {}),
512
+ /* @__PURE__ */ jsx5(
547
513
  Select4.List,
548
514
  {
549
515
  "aria-label": ariaLabel,
550
516
  "aria-labelledby": ariaLabelledBy,
551
- children: children ? children : groupBy ? groupItems(data, groupBy).map((group, index, arr) => /* @__PURE__ */ jsxs3(React5.Fragment, { children: [
517
+ children: children ? children : groupBy ? groupItems(data, groupBy).map((group, index, arr) => /* @__PURE__ */ jsxs3(React6.Fragment, { children: [
552
518
  /* @__PURE__ */ jsxs3(SelectGroup, { children: [
553
- /* @__PURE__ */ jsx4(SelectGroupLabel, { children: renderGroupHeading ? renderGroupHeading(group.value) : group.value }),
554
- group.items.map((item) => /* @__PURE__ */ jsx4(
519
+ /* @__PURE__ */ jsx5(SelectGroupLabel, { children: renderGroupHeading ? renderGroupHeading(group.value) : group.value }),
520
+ group.items.map((item) => /* @__PURE__ */ jsx5(
555
521
  SelectItem,
556
522
  {
557
523
  value: String(item.id),
@@ -564,8 +530,8 @@ function MultiSelect(props) {
564
530
  item.id
565
531
  ))
566
532
  ] }),
567
- index < arr.length - 1 && /* @__PURE__ */ jsx4(SelectSeparator, {})
568
- ] }, group.value)) : data.map((item) => /* @__PURE__ */ jsx4(
533
+ index < arr.length - 1 && /* @__PURE__ */ jsx5(SelectSeparator, {})
534
+ ] }, group.value)) : data.map((item) => /* @__PURE__ */ jsx5(
569
535
  SelectItem,
570
536
  {
571
537
  value: String(item.id),
@@ -579,7 +545,7 @@ function MultiSelect(props) {
579
545
  ))
580
546
  }
581
547
  ),
582
- /* @__PURE__ */ jsx4(Select4.ScrollDownArrow, {})
548
+ /* @__PURE__ */ jsx5(Select4.ScrollDownArrow, {})
583
549
  ] }) }) })
584
550
  ]
585
551
  }
@@ -588,14 +554,14 @@ function MultiSelect(props) {
588
554
  }
589
555
 
590
556
  // src/v3/SingleCombobox.tsx
591
- import * as React9 from "react";
557
+ import * as React11 from "react";
592
558
  import { Combobox as Combobox3 } from "@base-ui/react/combobox";
593
559
  import "@tanstack/react-virtual";
594
560
 
595
561
  // src/v3/Common/useSuppressEscapeClear.ts
596
- import * as React6 from "react";
562
+ import * as React7 from "react";
597
563
  function useSuppressEscapeClear(open) {
598
- return React6.useCallback(
564
+ return React7.useCallback(
599
565
  (event) => {
600
566
  if (event.key === "Escape" && !open) {
601
567
  event.stopPropagation();
@@ -606,309 +572,189 @@ function useSuppressEscapeClear(open) {
606
572
  }
607
573
 
608
574
  // src/v3/Common/ComboboxItem.tsx
609
- import * as React7 from "react";
575
+ import * as React9 from "react";
610
576
  import Radio2 from "@sproutsocial/seeds-react-radio";
611
577
  import Checkbox3 from "@sproutsocial/seeds-react-checkbox";
612
578
 
613
579
  // src/v3/Common/ComboboxStyles.tsx
580
+ import * as React8 from "react";
614
581
  import { Combobox } from "@base-ui/react/combobox";
615
- import styled6, { css as css2 } from "styled-components";
616
- import { focusRing as focusRing2 } from "@sproutsocial/seeds-react-mixins";
617
582
  import Checkbox2 from "@sproutsocial/seeds-react-checkbox";
618
- import { jsx as jsx5 } from "react/jsx-runtime";
619
- var invalidStyles2 = css2`
620
- border-color: ${({ theme }) => theme.colors.form.border.error};
621
-
622
- ${StyledChevron} {
623
- color: ${({ theme }) => theme.colors.icon.error};
624
- }
625
- `;
626
- var ComboboxLabel = styled6.label`
627
- font-size: ${({ theme }) => theme.typography[200].fontSize};
628
- font-weight: ${({ theme }) => theme.fontWeights.semibold};
629
- color: ${({ theme }) => theme.colors.text.body};
630
- `;
631
- var ComboboxInputGroup = styled6(Combobox.InputGroup)`
632
- display: flex;
633
- align-items: center;
634
- min-width: 160px;
635
- border-radius: ${({ theme }) => theme.radii[500]};
636
- border: 1px solid ${({ theme }) => theme.colors.form.border.base};
637
- background: ${({ theme }) => theme.colors.form.background.base};
638
- color: ${({ theme }) => theme.colors.text.body};
639
- transition: border-color ${({ theme }) => theme.duration.fast}
640
- ${({ theme }) => theme.easing.ease_in},
641
- box-shadow ${({ theme }) => theme.duration.fast}
642
- ${({ theme }) => theme.easing.ease_in};
643
-
644
- &:focus-within {
645
- ${focusRing2}
646
- }
647
-
648
- &[data-disabled] {
649
- opacity: 0.4;
650
- cursor: not-allowed;
651
- }
652
-
653
- ${({ $isInvalid }) => $isInvalid && invalidStyles2}
654
- `;
655
- var ComboboxInput = styled6(Combobox.Input)`
656
- flex: 1;
657
- min-width: 30px;
658
- padding: ${({ theme }) => theme.space[300]};
659
- border: none !important;
660
- background: transparent;
661
- font-size: ${({ theme }) => theme.typography[200].fontSize};
662
- line-height: ${({ theme }) => theme.typography[200].lineHeight};
663
- color: ${({ theme }) => theme.colors.text.body};
664
- outline: none;
665
-
666
- &::placeholder {
667
- color: ${({ theme }) => theme.colors.text.subtext};
668
- }
669
-
670
- &:disabled {
671
- cursor: not-allowed;
672
- }
673
- `;
674
- var ComboboxTokenInput = styled6(Combobox.Input)`
675
- flex: 1;
676
- min-width: 60px;
677
- padding: ${({ theme }) => theme.space[200]} ${({ theme }) => theme.space[300]}
678
- ${({ theme }) => theme.space[200]} ${({ theme }) => theme.space[350]};
679
- border: none !important;
680
- background: transparent;
681
- font-size: ${({ theme }) => theme.typography[200].fontSize};
682
- line-height: ${({ theme }) => theme.typography[200].lineHeight};
683
- color: ${({ theme }) => theme.colors.text.body};
684
- outline: none;
685
-
686
- &::placeholder {
687
- color: ${({ theme }) => theme.colors.text.subtext};
688
- }
689
-
690
- &:disabled {
691
- cursor: not-allowed;
692
- }
693
- `;
694
- var ComboboxActionButtons = styled6.div`
695
- display: flex;
696
- align-items: center;
697
- flex-shrink: 0;
698
- margin-left: auto;
699
- gap: ${({ theme }) => theme.space[100]};
700
- `;
701
- var ComboboxClear = styled6(Combobox.Clear).attrs({ tabIndex: 0 })`
702
- display: flex;
703
- align-items: center;
704
- justify-content: center;
705
- width: 20px;
706
- height: 20px;
707
- border: none;
708
- background: transparent;
709
- color: ${({ theme }) => theme.colors.icon.base};
710
- cursor: pointer;
711
- border-radius: ${({ theme }) => theme.radii[300]};
712
- padding: 0;
713
-
714
- &:hover {
715
- color: ${({ theme }) => theme.colors.text.body};
716
- }
717
-
718
- &:focus-visible {
719
- ${focusRing2}
720
- }
721
-
722
- &[data-empty] {
723
- display: none;
724
- }
725
- `;
726
- var ComboboxTrigger = styled6(Combobox.Trigger)`
727
- display: flex;
728
- align-items: center;
729
- justify-content: center;
730
- width: 20px;
731
- height: 20px;
732
- border: none;
733
- background: transparent;
734
- color: ${({ theme }) => theme.colors.icon.base};
735
- cursor: default;
736
- padding: 0;
737
-
738
- &:hover {
739
- color: ${({ theme }) => theme.colors.text.body};
740
- }
741
- `;
742
- var ComboboxPositioner = styled6(Combobox.Positioner)`
743
- width: var(--anchor-width);
744
- z-index: 7;
745
- `;
746
- var ComboboxPopup = styled6(Combobox.Popup)`
747
- font-family: ${({ theme }) => theme.fontFamily};
748
- background: ${({ theme }) => theme.colors.container.background.base};
749
- border: 1px solid ${({ theme }) => theme.colors.container.border.base};
750
- border-radius: ${({ theme }) => theme.radii[500]};
751
- box-shadow: ${({ theme }) => theme.shadows.medium};
752
- outline: none;
753
- width: 100%;
754
- max-height: min(var(--available-height, 400px), 400px);
755
- overflow-y: auto;
756
- padding: 0;
757
-
758
- &[data-open] {
759
- animation: combobox-popup-in 120ms ease-out;
760
- }
761
-
762
- &[data-closed] {
763
- animation: combobox-popup-out 100ms ease-in;
764
- }
765
-
766
- @keyframes combobox-popup-in {
767
- from {
768
- opacity: 0;
769
- transform: scale(0.95);
770
- }
771
- to {
772
- opacity: 1;
773
- transform: scale(1);
774
- }
775
- }
776
-
777
- @keyframes combobox-popup-out {
778
- from {
779
- opacity: 1;
780
- transform: scale(1);
781
- }
782
- to {
783
- opacity: 0;
784
- transform: scale(0.95);
785
- }
786
- }
787
- `;
788
- var ComboboxList = styled6(Combobox.List)`
789
- padding: ${({ theme }) => theme.space[200]};
790
-
791
- &:empty {
792
- padding: 0;
793
- }
794
- `;
795
- var ComboboxStatus = styled6(Combobox.Status)`
796
- padding: ${({ theme }) => `${theme.space[300]} ${theme.space[350]}`};
797
- font-size: ${({ theme }) => theme.typography[200].fontSize};
798
- color: ${({ theme }) => theme.colors.text.subtext};
799
-
800
- &:empty {
801
- padding: 0;
802
- }
803
- `;
804
- var ComboboxEmpty = styled6(Combobox.Empty)`
805
- padding: ${({ theme }) => `${theme.space[300]} ${theme.space[350]}`};
806
- font-size: ${({ theme }) => theme.typography[200].fontSize};
807
- color: ${({ theme }) => theme.colors.text.subtext};
808
-
809
- &:empty {
810
- padding: 0;
811
- }
812
- `;
813
- var ComboboxItem = styled6(Combobox.Item)`
814
- display: flex;
815
- align-items: center;
816
- gap: ${({ theme }) => theme.space[300]};
817
- padding: ${({ theme }) => `${theme.space[300]} ${theme.space[300]}`};
818
- border-radius: ${({ theme }) => theme.radii[500]};
819
- font-size: ${({ theme }) => theme.typography[200].fontSize};
820
- color: ${({ theme }) => theme.colors.text.body};
821
- cursor: default;
822
- outline: none;
823
-
824
- &[data-highlighted] {
825
- background: ${({ theme }) => theme.colors.listItem.background.hover};
826
- }
827
-
828
- &[data-selected] {
829
- font-weight: ${({ theme }) => theme.fontWeights.semibold};
830
- }
831
-
832
- &[data-disabled] {
833
- opacity: 0.5;
834
- cursor: not-allowed;
835
- }
836
- `;
837
- var ComboboxItemIndicator = styled6(Combobox.ItemIndicator)`
838
- display: flex;
839
- align-items: center;
840
- width: ${({ theme }) => theme.space[400]};
841
- color: ${({ theme }) => theme.colors.text.body};
842
- visibility: hidden;
843
-
844
- &[data-selected] {
845
- visibility: visible;
846
- }
847
- `;
848
- var ComboboxGroup = styled6(Combobox.Group)`
849
- display: block;
850
- `;
851
- var ComboboxGroupLabel = styled6(Combobox.GroupLabel)`
852
- padding: ${({ theme }) => `${theme.space[300]} ${theme.space[300]} ${theme.space[200]}`};
853
- font-size: ${({ theme }) => theme.typography[100].fontSize};
854
- font-weight: ${({ theme }) => theme.fontWeights.semibold};
855
- text-transform: uppercase;
856
- letter-spacing: 0.05em;
857
- color: ${({ theme }) => theme.colors.text.subtext};
858
- `;
859
- var ComboboxSeparator = styled6.div`
860
- height: 1px;
861
- margin: ${({ theme }) => `${theme.space[200]} ${theme.space[300]}`};
862
- background: ${({ theme }) => theme.colors.container.border.base};
863
- `;
864
- var ComboboxGroupHeaderItem = styled6(Combobox.Item)`
865
- display: flex;
866
- align-items: center;
867
- gap: ${({ theme }) => theme.space[300]};
868
- padding: ${({ theme }) => `${theme.space[300]} ${theme.space[300]}`};
869
- border-radius: ${({ theme }) => theme.radii[500]};
870
- font-size: ${({ theme }) => theme.typography[100].fontSize};
871
- font-weight: ${({ theme }) => theme.fontWeights.semibold};
872
- text-transform: uppercase;
873
- letter-spacing: 0.05em;
874
- color: ${({ theme }) => theme.colors.text.subtext};
875
- cursor: default;
876
- outline: none;
877
-
878
- &[data-highlighted] {
879
- background: ${({ theme }) => theme.colors.listItem.background.hover};
880
- color: ${({ theme }) => theme.colors.text.body};
881
- }
882
-
883
- &[data-disabled] {
884
- opacity: 0.4;
885
- cursor: not-allowed;
886
- pointer-events: none;
887
- }
888
- `;
889
- var ComboboxSelectAllItem = styled6(Combobox.Item)`
890
- display: flex;
891
- align-items: center;
892
- gap: ${({ theme }) => theme.space[300]};
893
- padding: ${({ theme }) => `${theme.space[300]} ${theme.space[300]}`};
894
- border-radius: ${({ theme }) => theme.radii[500]};
895
- font-size: ${({ theme }) => theme.typography[200].fontSize};
896
- font-weight: ${({ theme }) => theme.fontWeights.semibold};
897
- color: ${({ theme }) => theme.colors.text.body};
898
- cursor: default;
899
- outline: none;
900
- border-bottom: 1px solid ${({ theme }) => theme.colors.container.border.base};
901
- margin-bottom: ${({ theme }) => theme.space[200]};
902
-
903
- &[data-highlighted] {
904
- background: ${({ theme }) => theme.colors.listItem.background.hover};
905
- }
906
- `;
583
+ import { jsx as jsx6 } from "react/jsx-runtime";
584
+ var ComboboxLabel = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6("label", { ref, className: cn("seeds-menu-label", className), ...rest }));
585
+ ComboboxLabel.displayName = "ComboboxLabel";
586
+ var ComboboxInputGroup = React8.forwardRef(({ $isInvalid, className, ...rest }, ref) => /* @__PURE__ */ jsx6(
587
+ Combobox.InputGroup,
588
+ {
589
+ ref,
590
+ className: cn(
591
+ "seeds-combobox-input-group",
592
+ { "seeds-combobox-input-group--invalid": !!$isInvalid },
593
+ className
594
+ ),
595
+ ...rest
596
+ }
597
+ ));
598
+ ComboboxInputGroup.displayName = "ComboboxInputGroup";
599
+ var ComboboxInput = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
600
+ Combobox.Input,
601
+ {
602
+ ref,
603
+ className: cn("seeds-combobox-input", className),
604
+ ...rest
605
+ }
606
+ ));
607
+ ComboboxInput.displayName = "ComboboxInput";
608
+ var ComboboxTokenInput = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
609
+ Combobox.Input,
610
+ {
611
+ ref,
612
+ className: cn("seeds-combobox-token-input", className),
613
+ ...rest
614
+ }
615
+ ));
616
+ ComboboxTokenInput.displayName = "ComboboxTokenInput";
617
+ var ComboboxActionButtons = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
618
+ "div",
619
+ {
620
+ ref,
621
+ className: cn("seeds-combobox-action-buttons", className),
622
+ ...rest
623
+ }
624
+ ));
625
+ ComboboxActionButtons.displayName = "ComboboxActionButtons";
626
+ var ComboboxClear = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
627
+ Combobox.Clear,
628
+ {
629
+ ref,
630
+ tabIndex: 0,
631
+ className: cn("seeds-combobox-clear", className),
632
+ ...rest
633
+ }
634
+ ));
635
+ ComboboxClear.displayName = "ComboboxClear";
636
+ var ComboboxTrigger = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
637
+ Combobox.Trigger,
638
+ {
639
+ ref,
640
+ className: cn("seeds-combobox-trigger", className),
641
+ ...rest
642
+ }
643
+ ));
644
+ ComboboxTrigger.displayName = "ComboboxTrigger";
645
+ var ComboboxPositioner = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
646
+ Combobox.Positioner,
647
+ {
648
+ ref,
649
+ className: cn("seeds-combobox-positioner", className),
650
+ ...rest
651
+ }
652
+ ));
653
+ ComboboxPositioner.displayName = "ComboboxPositioner";
654
+ var ComboboxPopup = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
655
+ Combobox.Popup,
656
+ {
657
+ ref,
658
+ className: cn("seeds-combobox-popup", className),
659
+ ...rest
660
+ }
661
+ ));
662
+ ComboboxPopup.displayName = "ComboboxPopup";
663
+ var ComboboxList = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
664
+ Combobox.List,
665
+ {
666
+ ref,
667
+ className: cn("seeds-combobox-list", className),
668
+ ...rest
669
+ }
670
+ ));
671
+ ComboboxList.displayName = "ComboboxList";
672
+ var ComboboxStatus = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
673
+ Combobox.Status,
674
+ {
675
+ ref,
676
+ className: cn("seeds-combobox-status", className),
677
+ ...rest
678
+ }
679
+ ));
680
+ ComboboxStatus.displayName = "ComboboxStatus";
681
+ var ComboboxEmpty = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
682
+ Combobox.Empty,
683
+ {
684
+ ref,
685
+ className: cn("seeds-combobox-empty", className),
686
+ ...rest
687
+ }
688
+ ));
689
+ ComboboxEmpty.displayName = "ComboboxEmpty";
690
+ var ComboboxItem = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
691
+ Combobox.Item,
692
+ {
693
+ ref,
694
+ className: cn("seeds-combobox-item", className),
695
+ ...rest
696
+ }
697
+ ));
698
+ ComboboxItem.displayName = "ComboboxItem";
699
+ var ComboboxItemIndicator = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
700
+ Combobox.ItemIndicator,
701
+ {
702
+ ref,
703
+ className: cn("seeds-combobox-item-indicator", className),
704
+ ...rest
705
+ }
706
+ ));
707
+ ComboboxItemIndicator.displayName = "ComboboxItemIndicator";
708
+ var ComboboxGroup = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
709
+ Combobox.Group,
710
+ {
711
+ ref,
712
+ className: cn("seeds-combobox-group", className),
713
+ ...rest
714
+ }
715
+ ));
716
+ ComboboxGroup.displayName = "ComboboxGroup";
717
+ var ComboboxGroupLabel = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
718
+ Combobox.GroupLabel,
719
+ {
720
+ ref,
721
+ className: cn("seeds-combobox-group-label", className),
722
+ ...rest
723
+ }
724
+ ));
725
+ ComboboxGroupLabel.displayName = "ComboboxGroupLabel";
726
+ var ComboboxSeparator = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
727
+ "div",
728
+ {
729
+ ref,
730
+ className: cn("seeds-combobox-separator", className),
731
+ ...rest
732
+ }
733
+ ));
734
+ ComboboxSeparator.displayName = "ComboboxSeparator";
735
+ var ComboboxGroupHeaderItem = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
736
+ Combobox.Item,
737
+ {
738
+ ref,
739
+ className: cn("seeds-combobox-group-header-item", className),
740
+ ...rest
741
+ }
742
+ ));
743
+ ComboboxGroupHeaderItem.displayName = "ComboboxGroupHeaderItem";
744
+ var ComboboxSelectAllItem = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
745
+ Combobox.Item,
746
+ {
747
+ ref,
748
+ className: cn("seeds-combobox-select-all-item", className),
749
+ ...rest
750
+ }
751
+ ));
752
+ ComboboxSelectAllItem.displayName = "ComboboxSelectAllItem";
907
753
  function ComboboxGroupHeaderCheckbox({
908
754
  $state,
909
755
  id
910
756
  }) {
911
- return /* @__PURE__ */ jsx5(
757
+ return /* @__PURE__ */ jsx6(
912
758
  Checkbox2,
913
759
  {
914
760
  id,
@@ -920,196 +766,114 @@ function ComboboxGroupHeaderCheckbox({
920
766
  }
921
767
  );
922
768
  }
923
- var ComboboxToken = styled6(Combobox.Chips)`
924
- display: flex;
925
- width: 100%;
926
- flex-wrap: wrap;
927
- gap: ${({ theme }) => theme.space[200]};
928
- `;
929
- var ComboboxTokenInputGroup = styled6(Combobox.InputGroup)`
930
- display: flex;
931
- align-items: center;
932
- flex-wrap: wrap;
933
- border-radius: ${({ theme }) => theme.radii[500]};
934
- border: 1px solid ${({ theme }) => theme.colors.form.border.base};
935
- background: ${({ theme }) => theme.colors.form.background.base};
936
- color: ${({ theme }) => theme.colors.text.body};
937
- padding: ${({ theme }) => `${theme.space[200]} ${theme.space[300]} ${theme.space[200]} ${theme.space[200]}`};
938
- gap: ${({ theme }) => theme.space[200]};
939
- transition: border-color ${({ theme }) => theme.duration.fast}
940
- ${({ theme }) => theme.easing.ease_in},
941
- box-shadow ${({ theme }) => theme.duration.fast}
942
- ${({ theme }) => theme.easing.ease_in};
943
-
944
- &:focus-within {
945
- ${focusRing2}
946
- }
947
-
948
- &[data-disabled] {
949
- opacity: 0.4;
950
- cursor: not-allowed;
951
- }
952
-
953
- ${({ $isInvalid }) => $isInvalid && invalidStyles2}
954
- `;
955
- var Token = styled6.span`
956
- display: inline-flex;
957
- align-items: center;
958
- gap: ${({ theme }) => theme.space[200]};
959
- padding: ${({ theme }) => `${theme.space[200]} ${theme.space[300]}`};
960
- border-radius: ${({ theme }) => theme.radii[500]};
961
- border: 1px solid ${({ theme }) => theme.colors.container.border.base};
962
- background: ${({ theme }) => theme.colors.container.background.base};
963
- color: ${({ theme }) => theme.colors.text.body};
964
- font-size: ${({ theme }) => theme.typography[200].fontSize};
965
- font-weight: ${({ theme }) => theme.fontWeights.normal};
966
- line-height: 1;
967
- white-space: nowrap;
968
- transition: all ${({ theme }) => theme.duration.fast}
969
- ${({ theme }) => theme.easing.ease_inout};
970
-
971
- &:hover {
972
- box-shadow: ${({ theme }) => theme.shadows.low};
973
- border-color: ${({ theme }) => theme.colors.container.border.base};
974
- }
975
- `;
976
- var TokenRemove = styled6.button`
977
- display: flex;
978
- align-items: center;
979
- justify-content: center;
980
- border: none;
981
- background: transparent;
982
- color: inherit;
983
- cursor: pointer;
984
- padding: 0;
985
- line-height: 1;
986
-
987
- &:focus-visible {
988
- ${focusRing2}
989
- }
990
- `;
991
- var SearchableSelectTrigger = styled6(Combobox.Trigger)`
992
- display: flex;
993
- align-items: center;
994
- justify-content: space-between;
995
- gap: ${({ theme }) => theme.space[300]};
996
- padding: ${({ theme }) => theme.space[200]} ${({ theme }) => theme.space[350]};
997
- min-width: 160px;
998
- border-radius: ${({ theme }) => theme.radii[500]};
999
- border: 1px solid ${({ theme }) => theme.colors.form.border.base};
1000
- background: ${({ theme }) => theme.colors.form.background.base};
1001
- font-size: ${({ theme }) => theme.typography[200].fontSize};
1002
- color: ${({ theme }) => theme.colors.text.body};
1003
- cursor: default;
1004
- outline: none;
1005
- user-select: none;
1006
- transition: border-color ${({ theme }) => theme.duration.fast}
1007
- ${({ theme }) => theme.easing.ease_in},
1008
- box-shadow ${({ theme }) => theme.duration.fast}
1009
- ${({ theme }) => theme.easing.ease_in};
1010
-
1011
- &:focus-visible {
1012
- ${focusRing2}
1013
- }
1014
-
1015
- &[data-popup-open] [data-chevron] {
1016
- transform: rotate(-180deg);
1017
- }
1018
-
1019
- &[data-disabled] {
1020
- opacity: 0.4;
1021
- cursor: not-allowed;
1022
- }
1023
-
1024
- ${({ $isInvalid }) => $isInvalid && invalidStyles2}
1025
- `;
1026
- var SearchableSelectTriggerIcon = styled6(Combobox.Icon)`
1027
- display: flex;
1028
- align-items: center;
1029
- color: ${({ theme }) => theme.colors.icon.base};
1030
- flex-shrink: 0;
1031
- `;
1032
- var SearchableSelectPlaceholder = styled6.span`
1033
- color: ${({ theme }) => theme.colors.text.subtext};
1034
- padding: ${({ theme }) => theme.space[200]} 0;
1035
- `;
769
+ var ComboboxToken = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
770
+ Combobox.Chips,
771
+ {
772
+ ref,
773
+ className: cn("seeds-combobox-tokens", className),
774
+ ...rest
775
+ }
776
+ ));
777
+ ComboboxToken.displayName = "ComboboxToken";
778
+ var ComboboxTokenInputGroup = React8.forwardRef(({ $isInvalid, className, ...rest }, ref) => /* @__PURE__ */ jsx6(
779
+ Combobox.InputGroup,
780
+ {
781
+ ref,
782
+ className: cn(
783
+ "seeds-combobox-token-input-group",
784
+ { "seeds-combobox-token-input-group--invalid": !!$isInvalid },
785
+ className
786
+ ),
787
+ ...rest
788
+ }
789
+ ));
790
+ ComboboxTokenInputGroup.displayName = "ComboboxTokenInputGroup";
791
+ var Token = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6("span", { ref, className: cn("seeds-combobox-token", className), ...rest }));
792
+ Token.displayName = "Token";
793
+ var TokenRemove = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
794
+ "button",
795
+ {
796
+ ref,
797
+ className: cn("seeds-combobox-token-remove", className),
798
+ ...rest
799
+ }
800
+ ));
801
+ TokenRemove.displayName = "TokenRemove";
802
+ var SearchableSelectTrigger = React8.forwardRef(({ $isInvalid, className, ...rest }, ref) => /* @__PURE__ */ jsx6(
803
+ Combobox.Trigger,
804
+ {
805
+ ref,
806
+ className: cn(
807
+ "seeds-searchable-select-trigger",
808
+ { "seeds-searchable-select-trigger--invalid": !!$isInvalid },
809
+ className
810
+ ),
811
+ ...rest
812
+ }
813
+ ));
814
+ SearchableSelectTrigger.displayName = "SearchableSelectTrigger";
815
+ var SearchableSelectTriggerIcon = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
816
+ Combobox.Icon,
817
+ {
818
+ ref,
819
+ className: cn("seeds-searchable-select-trigger-icon", className),
820
+ ...rest
821
+ }
822
+ ));
823
+ SearchableSelectTriggerIcon.displayName = "SearchableSelectTriggerIcon";
824
+ var SearchableSelectPlaceholder = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
825
+ "span",
826
+ {
827
+ ref,
828
+ className: cn("seeds-searchable-select-placeholder", className),
829
+ ...rest
830
+ }
831
+ ));
832
+ SearchableSelectPlaceholder.displayName = "SearchableSelectPlaceholder";
1036
833
  var SearchableSelectPopup = ComboboxPopup;
1037
- var SearchableSelectSearchContainer = styled6.div`
1038
- padding: ${({ theme }) => theme.space[300]};
1039
- border-bottom: 1px solid ${({ theme }) => theme.colors.container.border.base};
1040
- flex-shrink: 0;
1041
- `;
1042
- var SearchableSelectInput = styled6(Combobox.Input)`
1043
- width: 100%;
1044
- height: ${({ theme }) => theme.space[500]};
1045
- padding: 0 ${({ theme }) => theme.space[300]};
1046
- border-radius: ${({ theme }) => theme.radii[500]};
1047
- border: 1px solid ${({ theme }) => theme.colors.container.border.base};
1048
- background: ${({ theme }) => theme.colors.container.background.base};
1049
- font-size: ${({ theme }) => theme.typography[200].fontSize};
1050
- color: ${({ theme }) => theme.colors.text.body};
1051
- outline: none;
1052
- box-sizing: border-box;
1053
-
1054
- &:focus {
1055
- ${focusRing2}
1056
- }
1057
-
1058
- &::placeholder {
1059
- color: ${({ theme }) => theme.colors.text.subtext};
1060
- }
1061
- `;
1062
- var SearchableSelectList = styled6(Combobox.List)`
1063
- overflow-y: auto;
1064
- padding: ${({ theme }) => theme.space[200]};
1065
- flex: 1;
1066
- min-height: 0;
1067
- &:empty {
1068
- padding: 0;
1069
- }
1070
- `;
1071
- var SearchableSelectTokenTrigger = styled6(Combobox.Trigger)`
1072
- display: flex;
1073
- align-items: center;
1074
- flex-wrap: wrap;
1075
- min-width: 160px;
1076
- border-radius: ${({ theme }) => theme.radii[500]};
1077
- border: 1px solid ${({ theme }) => theme.colors.form.border.base};
1078
- background: ${({ theme }) => theme.colors.form.background.base};
1079
- color: ${({ theme }) => theme.colors.text.body};
1080
- padding: ${({ theme }) => theme.space[200]} ${({ theme }) => theme.space[300]};
1081
- gap: ${({ theme }) => theme.space[200]};
1082
- cursor: default;
1083
- text-align: left;
1084
- outline: none;
1085
- user-select: none;
1086
- transition: border-color ${({ theme }) => theme.duration.fast}
1087
- ${({ theme }) => theme.easing.ease_in},
1088
- box-shadow ${({ theme }) => theme.duration.fast}
1089
- ${({ theme }) => theme.easing.ease_in};
1090
-
1091
- &:focus-visible {
1092
- ${focusRing2}
1093
- }
1094
-
1095
- &[data-popup-open] {
1096
- border-color: ${({ theme }) => theme.colors.blue[600]};
1097
- }
1098
-
1099
- &[data-popup-open] [data-chevron] {
1100
- transform: rotate(-180deg);
1101
- }
1102
-
1103
- &[data-disabled] {
1104
- opacity: 0.4;
1105
- cursor: not-allowed;
834
+ var SearchableSelectSearchContainer = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
835
+ "div",
836
+ {
837
+ ref,
838
+ className: cn("seeds-searchable-select-search-container", className),
839
+ ...rest
840
+ }
841
+ ));
842
+ SearchableSelectSearchContainer.displayName = "SearchableSelectSearchContainer";
843
+ var SearchableSelectInput = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
844
+ Combobox.Input,
845
+ {
846
+ ref,
847
+ className: cn("seeds-searchable-select-input", className),
848
+ ...rest
849
+ }
850
+ ));
851
+ SearchableSelectInput.displayName = "SearchableSelectInput";
852
+ var SearchableSelectList = React8.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx6(
853
+ Combobox.List,
854
+ {
855
+ ref,
856
+ className: cn("seeds-searchable-select-list", className),
857
+ ...rest
858
+ }
859
+ ));
860
+ SearchableSelectList.displayName = "SearchableSelectList";
861
+ var SearchableSelectTokenTrigger = React8.forwardRef(({ $isInvalid, className, ...rest }, ref) => /* @__PURE__ */ jsx6(
862
+ Combobox.Trigger,
863
+ {
864
+ ref,
865
+ className: cn(
866
+ "seeds-searchable-select-token-trigger",
867
+ { "seeds-searchable-select-token-trigger--invalid": !!$isInvalid },
868
+ className
869
+ ),
870
+ ...rest
1106
871
  }
1107
-
1108
- ${({ $isInvalid }) => $isInvalid && invalidStyles2}
1109
- `;
872
+ ));
873
+ SearchableSelectTokenTrigger.displayName = "SearchableSelectTokenTrigger";
1110
874
 
1111
875
  // src/v3/Common/ComboboxItem.tsx
1112
- import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
876
+ import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
1113
877
  function ComboboxItemInner({
1114
878
  value,
1115
879
  itemId,
@@ -1132,11 +896,11 @@ function ComboboxItemInner({
1132
896
  disabled,
1133
897
  "data-qa-menu-item": label,
1134
898
  children: [
1135
- inputType === "radio" ? /* @__PURE__ */ jsx6(
899
+ inputType === "radio" ? /* @__PURE__ */ jsx7(
1136
900
  ComboboxItemIndicator,
1137
901
  {
1138
902
  keepMounted: true,
1139
- render: (_props, state) => /* @__PURE__ */ jsx6(
903
+ render: (_props, state) => /* @__PURE__ */ jsx7(
1140
904
  Radio2,
1141
905
  {
1142
906
  checked: state.selected,
@@ -1148,11 +912,11 @@ function ComboboxItemInner({
1148
912
  }
1149
913
  )
1150
914
  }
1151
- ) : inputType === "checkbox" ? /* @__PURE__ */ jsx6(
915
+ ) : inputType === "checkbox" ? /* @__PURE__ */ jsx7(
1152
916
  ComboboxItemIndicator,
1153
917
  {
1154
918
  keepMounted: true,
1155
- render: (_props, state) => /* @__PURE__ */ jsx6(
919
+ render: (_props, state) => /* @__PURE__ */ jsx7(
1156
920
  Checkbox3,
1157
921
  {
1158
922
  checked: state.selected,
@@ -1164,17 +928,17 @@ function ComboboxItemInner({
1164
928
  }
1165
929
  )
1166
930
  }
1167
- ) : inputType === "icon" ? /* @__PURE__ */ jsx6(ComboboxItemIndicator, { keepMounted: true, children: /* @__PURE__ */ jsx6(CheckIcon2, {}) }) : null,
1168
- /* @__PURE__ */ jsx6("span", { children: renderItem ? renderItem() : label })
931
+ ) : inputType === "icon" ? /* @__PURE__ */ jsx7(ComboboxItemIndicator, { keepMounted: true, children: /* @__PURE__ */ jsx7(CheckIcon2, {}) }) : null,
932
+ /* @__PURE__ */ jsx7("span", { children: renderItem ? renderItem() : label })
1169
933
  ]
1170
934
  }
1171
935
  );
1172
936
  }
1173
- var ComboboxItem2 = React7.forwardRef(ComboboxItemInner);
937
+ var ComboboxItem2 = React9.forwardRef(ComboboxItemInner);
1174
938
  var ComboboxItem_default = ComboboxItem2;
1175
939
 
1176
940
  // src/v3/Common/VirtualizedComboboxList.tsx
1177
- import * as React8 from "react";
941
+ import * as React10 from "react";
1178
942
  import { Combobox as Combobox2 } from "@base-ui/react/combobox";
1179
943
  import { useVirtualizer } from "@tanstack/react-virtual";
1180
944
 
@@ -1193,7 +957,7 @@ function isCreatableSentinel(v) {
1193
957
  }
1194
958
 
1195
959
  // src/v3/Common/VirtualizedComboboxList.tsx
1196
- import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
960
+ import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
1197
961
  var ITEM_HEIGHT = 32;
1198
962
  function isGroupHeaderSentinel(v) {
1199
963
  return typeof v === "object" && v !== null && "__groupHeader" in v;
@@ -1215,7 +979,7 @@ function VirtualizedComboboxList({
1215
979
  renderCreatableItem
1216
980
  }) {
1217
981
  const filteredItems = Combobox2.useFilteredItems();
1218
- const scrollElementRef = React8.useRef(null);
982
+ const scrollElementRef = React10.useRef(null);
1219
983
  const virtualizer = useVirtualizer({
1220
984
  enabled: open,
1221
985
  count: filteredItems.length,
@@ -1227,8 +991,8 @@ function VirtualizedComboboxList({
1227
991
  scrollPaddingStart: 4,
1228
992
  scrollPaddingEnd: 4
1229
993
  });
1230
- React8.useImperativeHandle(virtualizerRef, () => virtualizer);
1231
- const handleScrollRef = React8.useCallback(
994
+ React10.useImperativeHandle(virtualizerRef, () => virtualizer);
995
+ const handleScrollRef = React10.useCallback(
1232
996
  (el) => {
1233
997
  scrollElementRef.current = el;
1234
998
  if (el) requestAnimationFrame(() => virtualizer.measure());
@@ -1238,7 +1002,7 @@ function VirtualizedComboboxList({
1238
1002
  if (!filteredItems.length) return null;
1239
1003
  const selectedArray = Array.isArray(value) ? value : value != null ? [value] : [];
1240
1004
  const totalSize = virtualizer.getTotalSize();
1241
- return /* @__PURE__ */ jsx7(
1005
+ return /* @__PURE__ */ jsx8(
1242
1006
  "div",
1243
1007
  {
1244
1008
  role: "presentation",
@@ -1249,7 +1013,7 @@ function VirtualizedComboboxList({
1249
1013
  overflowY: "auto",
1250
1014
  overscrollBehavior: "contain"
1251
1015
  },
1252
- children: /* @__PURE__ */ jsx7(
1016
+ children: /* @__PURE__ */ jsx8(
1253
1017
  "div",
1254
1018
  {
1255
1019
  role: "presentation",
@@ -1266,7 +1030,7 @@ function VirtualizedComboboxList({
1266
1030
  boxSizing: "border-box"
1267
1031
  };
1268
1032
  if (isPlaceholderSentinel(row)) {
1269
- return /* @__PURE__ */ jsx7(
1033
+ return /* @__PURE__ */ jsx8(
1270
1034
  ComboboxItem_default,
1271
1035
  {
1272
1036
  index: virtualItem.index,
@@ -1294,7 +1058,7 @@ function VirtualizedComboboxList({
1294
1058
  style: baseStyle,
1295
1059
  ref: virtualizer.measureElement,
1296
1060
  children: [
1297
- /* @__PURE__ */ jsx7(ComboboxGroupHeaderCheckbox, { $state: state, id: "__selectAll" }),
1061
+ /* @__PURE__ */ jsx8(ComboboxGroupHeaderCheckbox, { $state: state, id: "__selectAll" }),
1298
1062
  "Select all"
1299
1063
  ]
1300
1064
  },
@@ -1318,7 +1082,7 @@ function VirtualizedComboboxList({
1318
1082
  style: baseStyle,
1319
1083
  ref: virtualizer.measureElement,
1320
1084
  children: [
1321
- /* @__PURE__ */ jsx7(
1085
+ /* @__PURE__ */ jsx8(
1322
1086
  ComboboxGroupHeaderCheckbox,
1323
1087
  {
1324
1088
  $state: state,
@@ -1343,7 +1107,7 @@ function VirtualizedComboboxList({
1343
1107
  return null;
1344
1108
  }
1345
1109
  const item = row;
1346
- return /* @__PURE__ */ jsx7(
1110
+ return /* @__PURE__ */ jsx8(
1347
1111
  ComboboxItem_default,
1348
1112
  {
1349
1113
  index: virtualItem.index,
@@ -1367,7 +1131,7 @@ function VirtualizedComboboxList({
1367
1131
  }
1368
1132
 
1369
1133
  // src/v3/SingleCombobox.tsx
1370
- import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
1134
+ import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
1371
1135
  function SingleCombobox(props) {
1372
1136
  const {
1373
1137
  id,
@@ -1393,18 +1157,18 @@ function SingleCombobox(props) {
1393
1157
  const defaultSelectedItemId = props.defaultSelectedItemId;
1394
1158
  const onSelectedItemIdChange = props.onSelectedItemIdChange;
1395
1159
  const { containerRef, portalContainer } = useSeedsPortalContainer();
1396
- const [open, setOpen] = React9.useState(false);
1397
- const virtualizerRef = React9.useRef(null);
1160
+ const [open, setOpen] = React11.useState(false);
1161
+ const virtualizerRef = React11.useRef(null);
1398
1162
  const onInputKeyDownCapture = useSuppressEscapeClear(open);
1399
1163
  const isControlled = selectedItemId !== void 0;
1400
- const idToItem = React9.useCallback(
1164
+ const idToItem = React11.useCallback(
1401
1165
  (id2) => {
1402
1166
  if (id2 == null) return null;
1403
1167
  return data.find((d) => String(d.id) === String(id2)) ?? null;
1404
1168
  },
1405
1169
  [data]
1406
1170
  );
1407
- const [internalValue, setInternalValue] = React9.useState(
1171
+ const [internalValue, setInternalValue] = React11.useState(
1408
1172
  () => idToItem(defaultSelectedItemId)
1409
1173
  );
1410
1174
  const value = isControlled ? idToItem(selectedItemId) : internalValue;
@@ -1416,12 +1180,12 @@ function SingleCombobox(props) {
1416
1180
  onSelectedItemIdChange(newItem ? newItem.id : null);
1417
1181
  }
1418
1182
  }
1419
- const groups = React9.useMemo(
1183
+ const groups = React11.useMemo(
1420
1184
  () => groupBy ? groupItems(data, groupBy) : null,
1421
1185
  [data, groupBy]
1422
1186
  );
1423
1187
  return /* @__PURE__ */ jsxs6(Field, { $fullWidth: fullWidth, children: [
1424
- /* @__PURE__ */ jsx8("div", { ref: containerRef, style: { position: "relative" } }),
1188
+ /* @__PURE__ */ jsx9("div", { ref: containerRef, style: { position: "relative" } }),
1425
1189
  /* @__PURE__ */ jsxs6(
1426
1190
  Combobox3.Root,
1427
1191
  {
@@ -1456,7 +1220,7 @@ function SingleCombobox(props) {
1456
1220
  $isInvalid: isInvalid,
1457
1221
  onKeyDownCapture: onInputKeyDownCapture,
1458
1222
  children: [
1459
- /* @__PURE__ */ jsx8(
1223
+ /* @__PURE__ */ jsx9(
1460
1224
  ComboboxInput,
1461
1225
  {
1462
1226
  placeholder,
@@ -1467,19 +1231,19 @@ function SingleCombobox(props) {
1467
1231
  }
1468
1232
  ),
1469
1233
  /* @__PURE__ */ jsxs6(ComboboxActionButtons, { children: [
1470
- /* @__PURE__ */ jsx8(ComboboxClear, { "aria-label": "Clear selection", children: /* @__PURE__ */ jsx8(ClearIcon, {}) }),
1471
- /* @__PURE__ */ jsx8(ComboboxTrigger, { "aria-label": "Open popup", children: /* @__PURE__ */ jsx8(StyledChevron, { $isOpen: open, children: /* @__PURE__ */ jsx8(ChevronIcon, {}) }) })
1234
+ /* @__PURE__ */ jsx9(ComboboxClear, { "aria-label": "Clear selection", children: /* @__PURE__ */ jsx9(ClearIcon, {}) }),
1235
+ /* @__PURE__ */ jsx9(ComboboxTrigger, { "aria-label": "Open popup", children: /* @__PURE__ */ jsx9(StyledChevron, { $isOpen: open, children: /* @__PURE__ */ jsx9(ChevronIcon, {}) }) })
1472
1236
  ] })
1473
1237
  ]
1474
1238
  }
1475
1239
  ),
1476
- /* @__PURE__ */ jsx8(Combobox3.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx8(ComboboxPositioner, { sideOffset: 4, children: /* @__PURE__ */ jsxs6(
1240
+ /* @__PURE__ */ jsx9(Combobox3.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx9(ComboboxPositioner, { sideOffset: 4, children: /* @__PURE__ */ jsxs6(
1477
1241
  ComboboxPopup,
1478
1242
  {
1479
1243
  style: isVirtualized ? { display: "flex", flexDirection: "column" } : void 0,
1480
1244
  children: [
1481
- /* @__PURE__ */ jsx8(ComboboxEmpty, { children: emptyText }),
1482
- /* @__PURE__ */ jsx8(
1245
+ /* @__PURE__ */ jsx9(ComboboxEmpty, { children: emptyText }),
1246
+ /* @__PURE__ */ jsx9(
1483
1247
  ComboboxList,
1484
1248
  {
1485
1249
  "aria-label": ariaLabel,
@@ -1491,7 +1255,7 @@ function SingleCombobox(props) {
1491
1255
  display: "flex",
1492
1256
  flexDirection: "column"
1493
1257
  } : void 0,
1494
- children: isVirtualized ? /* @__PURE__ */ jsx8(
1258
+ children: isVirtualized ? /* @__PURE__ */ jsx9(
1495
1259
  VirtualizedComboboxList,
1496
1260
  {
1497
1261
  open,
@@ -1504,10 +1268,10 @@ function SingleCombobox(props) {
1504
1268
  renderItem,
1505
1269
  renderGroupHeading
1506
1270
  }
1507
- ) : children ? children : groups ? ((group, index) => /* @__PURE__ */ jsxs6(React9.Fragment, { children: [
1271
+ ) : children ? children : groups ? ((group, index) => /* @__PURE__ */ jsxs6(React11.Fragment, { children: [
1508
1272
  /* @__PURE__ */ jsxs6(ComboboxGroup, { items: group.items, children: [
1509
- /* @__PURE__ */ jsx8(ComboboxGroupLabel, { children: renderGroupHeading ? renderGroupHeading(group.value) : group.value }),
1510
- /* @__PURE__ */ jsx8(Combobox3.Collection, { children: (item) => /* @__PURE__ */ jsx8(
1273
+ /* @__PURE__ */ jsx9(ComboboxGroupLabel, { children: renderGroupHeading ? renderGroupHeading(group.value) : group.value }),
1274
+ /* @__PURE__ */ jsx9(Combobox3.Collection, { children: (item) => /* @__PURE__ */ jsx9(
1511
1275
  ComboboxItem_default,
1512
1276
  {
1513
1277
  value: item,
@@ -1520,8 +1284,8 @@ function SingleCombobox(props) {
1520
1284
  item.id
1521
1285
  ) })
1522
1286
  ] }),
1523
- index < groups.length - 1 && /* @__PURE__ */ jsx8(ComboboxSeparator, {})
1524
- ] }, group.value)) : ((item) => /* @__PURE__ */ jsx8(
1287
+ index < groups.length - 1 && /* @__PURE__ */ jsx9(ComboboxSeparator, {})
1288
+ ] }, group.value)) : ((item) => /* @__PURE__ */ jsx9(
1525
1289
  ComboboxItem_default,
1526
1290
  {
1527
1291
  value: item,
@@ -1545,11 +1309,11 @@ function SingleCombobox(props) {
1545
1309
  }
1546
1310
 
1547
1311
  // src/v3/MultiCombobox.tsx
1548
- import * as React10 from "react";
1312
+ import * as React12 from "react";
1549
1313
  import { Combobox as Combobox4 } from "@base-ui/react/combobox";
1550
1314
  import "@tanstack/react-virtual";
1551
1315
  import Icon3 from "@sproutsocial/seeds-react-icon";
1552
- import { Fragment as Fragment6, jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
1316
+ import { Fragment as Fragment6, jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
1553
1317
  function makeGroupHeaderSentinel(groupName) {
1554
1318
  return { __groupHeader: true, groupName };
1555
1319
  }
@@ -1600,31 +1364,31 @@ function MultiCombobox(props) {
1600
1364
  const defaultSelectedItemIds = props.defaultSelectedItemIds;
1601
1365
  const onSelectedItemIdsChange = props.onSelectedItemIdsChange;
1602
1366
  const { containerRef, portalContainer } = useSeedsPortalContainer();
1603
- const [open, setOpen] = React10.useState(false);
1604
- const [internalInputValue, setInternalInputValue] = React10.useState("");
1605
- const skipNextInputChangeRef = React10.useRef(false);
1606
- const virtualizerRef = React10.useRef(null);
1607
- const inputRef = React10.useRef(null);
1367
+ const [open, setOpen] = React12.useState(false);
1368
+ const [internalInputValue, setInternalInputValue] = React12.useState("");
1369
+ const skipNextInputChangeRef = React12.useRef(false);
1370
+ const virtualizerRef = React12.useRef(null);
1371
+ const inputRef = React12.useRef(null);
1608
1372
  const onInputKeyDownCapture = useSuppressEscapeClear(open);
1609
1373
  const isControlled = selectedItemIds !== void 0;
1610
- const idsToItems = React10.useCallback(
1374
+ const idsToItems = React12.useCallback(
1611
1375
  (ids) => ids.map((id2) => data.find((d) => d.id === id2)).filter((d) => d != null),
1612
1376
  [data]
1613
1377
  );
1614
- const [internalValue, setInternalValue] = React10.useState(
1378
+ const [internalValue, setInternalValue] = React12.useState(
1615
1379
  () => defaultSelectedItemIds ? idsToItems(defaultSelectedItemIds) : []
1616
1380
  );
1617
1381
  const value = isControlled ? idsToItems(selectedItemIds) : internalValue;
1618
- const visibleData = React10.useMemo(
1382
+ const visibleData = React12.useMemo(
1619
1383
  () => removeSelectedItems ? data.filter((item) => !value.some((v) => v.id === item.id)) : data,
1620
1384
  [data, value, removeSelectedItems]
1621
1385
  );
1622
- const groups = React10.useMemo(
1386
+ const groups = React12.useMemo(
1623
1387
  () => groupBy ? groupItems(visibleData, groupBy) : null,
1624
1388
  [visibleData, groupBy]
1625
1389
  );
1626
1390
  const currentInputValue = inputValue ?? internalInputValue;
1627
- const creatableSentinel = React10.useMemo(() => {
1391
+ const creatableSentinel = React12.useMemo(() => {
1628
1392
  if (!creatableProp) return null;
1629
1393
  const trimmed = currentInputValue.trim();
1630
1394
  if (!trimmed) return null;
@@ -1635,7 +1399,7 @@ function MultiCombobox(props) {
1635
1399
  if (exactExists) return null;
1636
1400
  return makeCreatableSentinel(trimmed);
1637
1401
  }, [creatableProp, currentInputValue, data, itemToString]);
1638
- const flatItems = React10.useMemo(() => {
1402
+ const flatItems = React12.useMemo(() => {
1639
1403
  if (!selectHeadings && !selectAll) return null;
1640
1404
  if (!groups && !selectAll) return null;
1641
1405
  const rows = [];
@@ -1730,7 +1494,7 @@ function MultiCombobox(props) {
1730
1494
  const selectedCount = value.length;
1731
1495
  const state = selectedCount === 0 ? "none" : selectedCount === totalCount ? "all" : "partial";
1732
1496
  return /* @__PURE__ */ jsxs7(ComboboxSelectAllItem, { value: row, children: [
1733
- /* @__PURE__ */ jsx9(ComboboxGroupHeaderCheckbox, { $state: state, id: "__selectAll" }),
1497
+ /* @__PURE__ */ jsx10(ComboboxGroupHeaderCheckbox, { $state: state, id: "__selectAll" }),
1734
1498
  selectAllLabel
1735
1499
  ] }, "__selectAll");
1736
1500
  }
@@ -1747,7 +1511,7 @@ function MultiCombobox(props) {
1747
1511
  value: row,
1748
1512
  disabled: isGroupHeaderDisabled?.(row.groupName),
1749
1513
  children: [
1750
- /* @__PURE__ */ jsx9(
1514
+ /* @__PURE__ */ jsx10(
1751
1515
  ComboboxGroupHeaderCheckbox,
1752
1516
  {
1753
1517
  $state: state,
@@ -1764,7 +1528,7 @@ function MultiCombobox(props) {
1764
1528
  return renderCreatableItem(row);
1765
1529
  }
1766
1530
  const item = row;
1767
- return /* @__PURE__ */ jsx9(
1531
+ return /* @__PURE__ */ jsx10(
1768
1532
  ComboboxItem_default,
1769
1533
  {
1770
1534
  value: item,
@@ -1778,7 +1542,7 @@ function MultiCombobox(props) {
1778
1542
  );
1779
1543
  }
1780
1544
  function renderCreatableItem(sentinel, style, index, measureRef) {
1781
- return /* @__PURE__ */ jsx9(
1545
+ return /* @__PURE__ */ jsx10(
1782
1546
  ComboboxItem_default,
1783
1547
  {
1784
1548
  value: sentinel,
@@ -1786,7 +1550,7 @@ function MultiCombobox(props) {
1786
1550
  label: `Create "${sentinel.label}"`,
1787
1551
  inputType: "none",
1788
1552
  renderItem: () => /* @__PURE__ */ jsxs7(Fragment6, { children: [
1789
- /* @__PURE__ */ jsx9(Icon3, { name: "plus-outline", size: "mini" }),
1553
+ /* @__PURE__ */ jsx10(Icon3, { name: "plus-outline", size: "mini" }),
1790
1554
  `Create "${sentinel.label}"`
1791
1555
  ] }),
1792
1556
  style,
@@ -1802,7 +1566,7 @@ function MultiCombobox(props) {
1802
1566
  const hasSentinels = selectAll || selectHeadings;
1803
1567
  const rootValue = hasSentinels ? [...value] : value;
1804
1568
  return /* @__PURE__ */ jsxs7(Field, { $fullWidth: fullWidth, children: [
1805
- /* @__PURE__ */ jsx9("div", { ref: containerRef, style: { position: "relative" } }),
1569
+ /* @__PURE__ */ jsx10("div", { ref: containerRef, style: { position: "relative" } }),
1806
1570
  /* @__PURE__ */ jsxs7(
1807
1571
  Combobox4.Root,
1808
1572
  {
@@ -1878,7 +1642,7 @@ function MultiCombobox(props) {
1878
1642
  },
1879
1643
  items: rootItems,
1880
1644
  children: [
1881
- /* @__PURE__ */ jsx9(
1645
+ /* @__PURE__ */ jsx10(
1882
1646
  ComboboxTokenInputGroup,
1883
1647
  {
1884
1648
  $isInvalid: isInvalid,
@@ -1890,13 +1654,13 @@ function MultiCombobox(props) {
1890
1654
  return /* @__PURE__ */ jsxs7(Fragment6, { children: [
1891
1655
  visibleTokens.map((item) => /* @__PURE__ */ jsxs7(Token, { children: [
1892
1656
  renderToken ? renderToken(item) : itemToString(item),
1893
- /* @__PURE__ */ jsx9(
1657
+ /* @__PURE__ */ jsx10(
1894
1658
  TokenRemove,
1895
1659
  {
1896
1660
  "aria-label": `Remove ${itemToString(item)}`,
1897
1661
  onPointerDown: (e) => e.preventDefault(),
1898
1662
  onClick: (e) => removeItem(item, e),
1899
- children: /* @__PURE__ */ jsx9(Icon3, { name: "x-outline", size: "mini" })
1663
+ children: /* @__PURE__ */ jsx10(Icon3, { name: "x-outline", size: "mini" })
1900
1664
  }
1901
1665
  )
1902
1666
  ] }, item.id)),
@@ -1906,7 +1670,7 @@ function MultiCombobox(props) {
1906
1670
  ] }, "__overflow")
1907
1671
  ] });
1908
1672
  })(),
1909
- /* @__PURE__ */ jsx9(
1673
+ /* @__PURE__ */ jsx10(
1910
1674
  ComboboxTokenInput,
1911
1675
  {
1912
1676
  ref: inputRef,
@@ -1918,21 +1682,21 @@ function MultiCombobox(props) {
1918
1682
  }
1919
1683
  ),
1920
1684
  /* @__PURE__ */ jsxs7(ComboboxActionButtons, { children: [
1921
- /* @__PURE__ */ jsx9(ComboboxClear, { "aria-label": "Clear all", children: /* @__PURE__ */ jsx9(ClearIcon, {}) }),
1922
- /* @__PURE__ */ jsx9(ComboboxTrigger, { "aria-label": "Open popup", children: /* @__PURE__ */ jsx9(StyledChevron, { $isOpen: open, children: /* @__PURE__ */ jsx9(ChevronIcon, {}) }) })
1685
+ /* @__PURE__ */ jsx10(ComboboxClear, { "aria-label": "Clear all", children: /* @__PURE__ */ jsx10(ClearIcon, {}) }),
1686
+ /* @__PURE__ */ jsx10(ComboboxTrigger, { "aria-label": "Open popup", children: /* @__PURE__ */ jsx10(StyledChevron, { $isOpen: open, children: /* @__PURE__ */ jsx10(ChevronIcon, {}) }) })
1923
1687
  ] })
1924
1688
  ] })
1925
1689
  }
1926
1690
  ),
1927
- /* @__PURE__ */ jsx9(Combobox4.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx9(ComboboxPositioner, { sideOffset: 4, children: /* @__PURE__ */ jsxs7(
1691
+ /* @__PURE__ */ jsx10(Combobox4.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx10(ComboboxPositioner, { sideOffset: 4, children: /* @__PURE__ */ jsxs7(
1928
1692
  ComboboxPopup,
1929
1693
  {
1930
1694
  "aria-busy": isLoading || void 0,
1931
1695
  style: isVirtualized ? { display: "flex", flexDirection: "column" } : void 0,
1932
1696
  children: [
1933
- /* @__PURE__ */ jsx9(ComboboxStatus, { children: isLoading ? loadingText : null }),
1934
- /* @__PURE__ */ jsx9(ComboboxEmpty, { children: isLoading ? null : emptyText }),
1935
- /* @__PURE__ */ jsx9(
1697
+ /* @__PURE__ */ jsx10(ComboboxStatus, { children: isLoading ? loadingText : null }),
1698
+ /* @__PURE__ */ jsx10(ComboboxEmpty, { children: isLoading ? null : emptyText }),
1699
+ /* @__PURE__ */ jsx10(
1936
1700
  ComboboxList,
1937
1701
  {
1938
1702
  "aria-label": ariaLabel,
@@ -1944,7 +1708,7 @@ function MultiCombobox(props) {
1944
1708
  display: "flex",
1945
1709
  flexDirection: "column"
1946
1710
  } : void 0,
1947
- children: isVirtualized ? /* @__PURE__ */ jsx9(
1711
+ children: isVirtualized ? /* @__PURE__ */ jsx10(
1948
1712
  VirtualizedComboboxList,
1949
1713
  {
1950
1714
  open,
@@ -1969,10 +1733,10 @@ function MultiCombobox(props) {
1969
1733
  return renderCreatableItem(group);
1970
1734
  }
1971
1735
  const g = group;
1972
- return /* @__PURE__ */ jsxs7(React10.Fragment, { children: [
1736
+ return /* @__PURE__ */ jsxs7(React12.Fragment, { children: [
1973
1737
  /* @__PURE__ */ jsxs7(ComboboxGroup, { items: g.items, children: [
1974
- /* @__PURE__ */ jsx9(ComboboxGroupLabel, { children: renderGroupHeading ? renderGroupHeading(g.value) : g.value }),
1975
- /* @__PURE__ */ jsx9(Combobox4.Collection, { children: (item) => /* @__PURE__ */ jsx9(
1738
+ /* @__PURE__ */ jsx10(ComboboxGroupLabel, { children: renderGroupHeading ? renderGroupHeading(g.value) : g.value }),
1739
+ /* @__PURE__ */ jsx10(Combobox4.Collection, { children: (item) => /* @__PURE__ */ jsx10(
1976
1740
  ComboboxItem_default,
1977
1741
  {
1978
1742
  value: item,
@@ -1985,14 +1749,14 @@ function MultiCombobox(props) {
1985
1749
  item.id
1986
1750
  ) })
1987
1751
  ] }),
1988
- index < groups.length - 1 && /* @__PURE__ */ jsx9(ComboboxSeparator, {})
1752
+ index < groups.length - 1 && /* @__PURE__ */ jsx10(ComboboxSeparator, {})
1989
1753
  ] }, g.value);
1990
1754
  }) : ((item) => {
1991
1755
  if (isCreatableSentinel(item)) {
1992
1756
  return renderCreatableItem(item);
1993
1757
  }
1994
1758
  const dataItem = item;
1995
- return /* @__PURE__ */ jsx9(
1759
+ return /* @__PURE__ */ jsx10(
1996
1760
  ComboboxItem_default,
1997
1761
  {
1998
1762
  value: dataItem,
@@ -2017,10 +1781,10 @@ function MultiCombobox(props) {
2017
1781
  }
2018
1782
 
2019
1783
  // src/v3/SingleSearchableSelect.tsx
2020
- import * as React11 from "react";
1784
+ import * as React13 from "react";
2021
1785
  import { Combobox as Combobox5 } from "@base-ui/react/combobox";
2022
1786
  import "@tanstack/react-virtual";
2023
- import { Fragment as Fragment8, jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
1787
+ import { Fragment as Fragment8, jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
2024
1788
  function SingleSearchableSelect(props) {
2025
1789
  const {
2026
1790
  id,
@@ -2051,17 +1815,17 @@ function SingleSearchableSelect(props) {
2051
1815
  const defaultSelectedItemId = props.defaultSelectedItemId;
2052
1816
  const onSelectedItemIdChange = props.onSelectedItemIdChange;
2053
1817
  const { containerRef, portalContainer } = useSeedsPortalContainer();
2054
- const [open, setOpen] = React11.useState(false);
2055
- const virtualizerRef = React11.useRef(null);
1818
+ const [open, setOpen] = React13.useState(false);
1819
+ const virtualizerRef = React13.useRef(null);
2056
1820
  const isControlled = selectedItemId !== void 0;
2057
- const idToItem = React11.useCallback(
1821
+ const idToItem = React13.useCallback(
2058
1822
  (id2) => {
2059
1823
  if (id2 == null) return null;
2060
1824
  return data.find((d) => String(d.id) === String(id2)) ?? null;
2061
1825
  },
2062
1826
  [data]
2063
1827
  );
2064
- const [internalValue, setInternalValue] = React11.useState(
1828
+ const [internalValue, setInternalValue] = React13.useState(
2065
1829
  () => idToItem(defaultSelectedItemId)
2066
1830
  );
2067
1831
  const value = isControlled ? idToItem(selectedItemId) : internalValue;
@@ -2072,12 +1836,12 @@ function SingleSearchableSelect(props) {
2072
1836
  onSelectedItemIdChange(realItem ? realItem.id : null);
2073
1837
  }
2074
1838
  }
2075
- const groups = React11.useMemo(
1839
+ const groups = React13.useMemo(
2076
1840
  () => groupBy ? groupItems(data, groupBy) : null,
2077
1841
  [data, groupBy]
2078
1842
  );
2079
1843
  return /* @__PURE__ */ jsxs8(Field, { $fullWidth: fullWidth, children: [
2080
- /* @__PURE__ */ jsx10("div", { ref: containerRef, style: { position: "relative" } }),
1844
+ /* @__PURE__ */ jsx11("div", { ref: containerRef, style: { position: "relative" } }),
2081
1845
  /* @__PURE__ */ jsxs8(
2082
1846
  Combobox5.Root,
2083
1847
  {
@@ -2120,27 +1884,27 @@ function SingleSearchableSelect(props) {
2120
1884
  "aria-required": props.required || void 0,
2121
1885
  $isInvalid: isInvalid,
2122
1886
  children: [
2123
- /* @__PURE__ */ jsx10(SearchableSelectPlaceholder, { children: /* @__PURE__ */ jsx10(Combobox5.Value, { placeholder, children: value ? renderSelection ? renderSelection(value) : itemToString(value) : placeholder }) }),
2124
- /* @__PURE__ */ jsx10(SearchableSelectTriggerIcon, { children: /* @__PURE__ */ jsx10(StyledChevron, { "data-chevron": true, children: /* @__PURE__ */ jsx10(ChevronIcon, {}) }) })
1887
+ /* @__PURE__ */ jsx11(SearchableSelectPlaceholder, { children: /* @__PURE__ */ jsx11(Combobox5.Value, { placeholder, children: value ? renderSelection ? renderSelection(value) : itemToString(value) : placeholder }) }),
1888
+ /* @__PURE__ */ jsx11(SearchableSelectTriggerIcon, { children: /* @__PURE__ */ jsx11(StyledChevron, { "data-chevron": true, children: /* @__PURE__ */ jsx11(ChevronIcon, {}) }) })
2125
1889
  ]
2126
1890
  }
2127
1891
  ),
2128
- /* @__PURE__ */ jsx10(Combobox5.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx10(ComboboxPositioner, { sideOffset: 4, children: /* @__PURE__ */ jsxs8(
1892
+ /* @__PURE__ */ jsx11(Combobox5.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx11(ComboboxPositioner, { sideOffset: 4, children: /* @__PURE__ */ jsxs8(
2129
1893
  SearchableSelectPopup,
2130
1894
  {
2131
1895
  "aria-busy": isLoading || void 0,
2132
1896
  style: { display: "flex", flexDirection: "column" },
2133
1897
  children: [
2134
- /* @__PURE__ */ jsx10(SearchableSelectSearchContainer, { children: /* @__PURE__ */ jsx10(
1898
+ /* @__PURE__ */ jsx11(SearchableSelectSearchContainer, { children: /* @__PURE__ */ jsx11(
2135
1899
  SearchableSelectInput,
2136
1900
  {
2137
1901
  placeholder: searchPlaceholder,
2138
1902
  autoFocus: true
2139
1903
  }
2140
1904
  ) }),
2141
- /* @__PURE__ */ jsx10(ComboboxStatus, { children: isLoading ? loadingText : null }),
2142
- /* @__PURE__ */ jsx10(ComboboxEmpty, { children: isLoading ? null : emptyText }),
2143
- /* @__PURE__ */ jsx10(
1905
+ /* @__PURE__ */ jsx11(ComboboxStatus, { children: isLoading ? loadingText : null }),
1906
+ /* @__PURE__ */ jsx11(ComboboxEmpty, { children: isLoading ? null : emptyText }),
1907
+ /* @__PURE__ */ jsx11(
2144
1908
  SearchableSelectList,
2145
1909
  {
2146
1910
  "aria-label": ariaLabel,
@@ -2152,7 +1916,7 @@ function SingleSearchableSelect(props) {
2152
1916
  display: "flex",
2153
1917
  flexDirection: "column"
2154
1918
  } : void 0,
2155
- children: isVirtualized ? /* @__PURE__ */ jsx10(
1919
+ children: isVirtualized ? /* @__PURE__ */ jsx11(
2156
1920
  VirtualizedComboboxList,
2157
1921
  {
2158
1922
  open,
@@ -2164,10 +1928,10 @@ function SingleSearchableSelect(props) {
2164
1928
  inputType,
2165
1929
  renderItem
2166
1930
  }
2167
- ) : children ? children : groups ? ((group, index) => /* @__PURE__ */ jsxs8(React11.Fragment, { children: [
1931
+ ) : children ? children : groups ? ((group, index) => /* @__PURE__ */ jsxs8(React13.Fragment, { children: [
2168
1932
  /* @__PURE__ */ jsxs8(ComboboxGroup, { items: group.items, children: [
2169
- /* @__PURE__ */ jsx10(ComboboxGroupLabel, { children: renderGroupHeading ? renderGroupHeading(group.value) : group.value }),
2170
- /* @__PURE__ */ jsx10(Combobox5.Collection, { children: (item) => /* @__PURE__ */ jsx10(
1933
+ /* @__PURE__ */ jsx11(ComboboxGroupLabel, { children: renderGroupHeading ? renderGroupHeading(group.value) : group.value }),
1934
+ /* @__PURE__ */ jsx11(Combobox5.Collection, { children: (item) => /* @__PURE__ */ jsx11(
2171
1935
  ComboboxItem_default,
2172
1936
  {
2173
1937
  value: item,
@@ -2180,9 +1944,9 @@ function SingleSearchableSelect(props) {
2180
1944
  item.id
2181
1945
  ) })
2182
1946
  ] }),
2183
- index < groups.length - 1 && /* @__PURE__ */ jsx10(ComboboxSeparator, {})
1947
+ index < groups.length - 1 && /* @__PURE__ */ jsx11(ComboboxSeparator, {})
2184
1948
  ] }, group.value)) : /* @__PURE__ */ jsxs8(Fragment8, { children: [
2185
- includePlaceholderItem && /* @__PURE__ */ jsx10(
1949
+ includePlaceholderItem && /* @__PURE__ */ jsx11(
2186
1950
  ComboboxItem_default,
2187
1951
  {
2188
1952
  value: makePlaceholderSentinel(placeholder),
@@ -2192,7 +1956,7 @@ function SingleSearchableSelect(props) {
2192
1956
  },
2193
1957
  "placeholder"
2194
1958
  ),
2195
- /* @__PURE__ */ jsx10(Combobox5.Collection, { children: (item) => /* @__PURE__ */ jsx10(
1959
+ /* @__PURE__ */ jsx11(Combobox5.Collection, { children: (item) => /* @__PURE__ */ jsx11(
2196
1960
  ComboboxItem_default,
2197
1961
  {
2198
1962
  value: item,
@@ -2217,18 +1981,15 @@ function SingleSearchableSelect(props) {
2217
1981
  }
2218
1982
 
2219
1983
  // src/v3/MultiSearchableSelect.tsx
2220
- import * as React12 from "react";
1984
+ import * as React14 from "react";
2221
1985
  import { Combobox as Combobox6 } from "@base-ui/react/combobox";
2222
1986
  import "@tanstack/react-virtual";
2223
1987
  import Icon4 from "@sproutsocial/seeds-react-icon";
2224
- import styled7 from "styled-components";
2225
- import { Fragment as Fragment10, jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
2226
- var SelectionText2 = styled7.span`
2227
- flex: 1;
2228
- overflow: hidden;
2229
- text-overflow: ellipsis;
2230
- white-space: nowrap;
2231
- `;
1988
+ import { Fragment as Fragment10, jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
1989
+ var SelectionText2 = ({
1990
+ className,
1991
+ ...rest
1992
+ }) => /* @__PURE__ */ jsx12("span", { className: cn("seeds-select-selection-text", className), ...rest });
2232
1993
  function makeGroupHeaderSentinel2(groupName) {
2233
1994
  return { __groupHeader: true, groupName };
2234
1995
  }
@@ -2275,29 +2036,29 @@ function MultiSearchableSelect(props) {
2275
2036
  const defaultSelectedItemIds = props.defaultSelectedItemIds;
2276
2037
  const onSelectedItemIdsChange = props.onSelectedItemIdsChange;
2277
2038
  const { containerRef, portalContainer } = useSeedsPortalContainer();
2278
- const [open, setOpen] = React12.useState(false);
2279
- const [internalInputValue, setInternalInputValue] = React12.useState("");
2280
- const skipNextInputChangeRef = React12.useRef(false);
2281
- const virtualizerRef = React12.useRef(null);
2039
+ const [open, setOpen] = React14.useState(false);
2040
+ const [internalInputValue, setInternalInputValue] = React14.useState("");
2041
+ const skipNextInputChangeRef = React14.useRef(false);
2042
+ const virtualizerRef = React14.useRef(null);
2282
2043
  const isControlled = selectedItemIds !== void 0;
2283
- const idsToItems = React12.useCallback(
2044
+ const idsToItems = React14.useCallback(
2284
2045
  (ids) => ids.map((id2) => data.find((d) => d.id === id2)).filter((d) => d != null),
2285
2046
  [data]
2286
2047
  );
2287
- const [internalValue, setInternalValue] = React12.useState(
2048
+ const [internalValue, setInternalValue] = React14.useState(
2288
2049
  () => defaultSelectedItemIds ? idsToItems(defaultSelectedItemIds) : []
2289
2050
  );
2290
2051
  const value = isControlled ? idsToItems(selectedItemIds) : internalValue;
2291
- const visibleData = React12.useMemo(
2052
+ const visibleData = React14.useMemo(
2292
2053
  () => removeSelectedItems ? data.filter((item) => !value.some((v) => v.id === item.id)) : data,
2293
2054
  [data, value, removeSelectedItems]
2294
2055
  );
2295
- const groups = React12.useMemo(
2056
+ const groups = React14.useMemo(
2296
2057
  () => groupBy ? groupItems(visibleData, groupBy) : null,
2297
2058
  [visibleData, groupBy]
2298
2059
  );
2299
2060
  const currentInputValue = internalInputValue;
2300
- const creatableSentinel = React12.useMemo(() => {
2061
+ const creatableSentinel = React14.useMemo(() => {
2301
2062
  if (!creatableProp) return null;
2302
2063
  const trimmed = currentInputValue.trim();
2303
2064
  if (!trimmed) return null;
@@ -2308,7 +2069,7 @@ function MultiSearchableSelect(props) {
2308
2069
  if (exactExists) return null;
2309
2070
  return makeCreatableSentinel(trimmed);
2310
2071
  }, [creatableProp, currentInputValue, data, itemToString]);
2311
- const flatItems = React12.useMemo(() => {
2072
+ const flatItems = React14.useMemo(() => {
2312
2073
  if (!groups || !selectHeadings && !selectAll) return null;
2313
2074
  const rows = [];
2314
2075
  if (selectAll) rows.push(SELECT_ALL_SENTINEL2);
@@ -2389,7 +2150,7 @@ function MultiSearchableSelect(props) {
2389
2150
  const selectedCount = value.length;
2390
2151
  const state = selectedCount === 0 ? "none" : selectedCount === totalCount ? "all" : "partial";
2391
2152
  return /* @__PURE__ */ jsxs9(ComboboxSelectAllItem, { value: row, children: [
2392
- /* @__PURE__ */ jsx11(ComboboxGroupHeaderCheckbox, { $state: state, id: "__selectAll" }),
2153
+ /* @__PURE__ */ jsx12(ComboboxGroupHeaderCheckbox, { $state: state, id: "__selectAll" }),
2393
2154
  "Select all"
2394
2155
  ] }, "__selectAll");
2395
2156
  }
@@ -2401,7 +2162,7 @@ function MultiSearchableSelect(props) {
2401
2162
  ).length;
2402
2163
  const state = selectedCount === 0 ? "none" : selectedCount === groupItemsList.length ? "all" : "partial";
2403
2164
  return /* @__PURE__ */ jsxs9(ComboboxGroupHeaderItem, { value: row, children: [
2404
- /* @__PURE__ */ jsx11(
2165
+ /* @__PURE__ */ jsx12(
2405
2166
  ComboboxGroupHeaderCheckbox,
2406
2167
  {
2407
2168
  $state: state,
@@ -2415,7 +2176,7 @@ function MultiSearchableSelect(props) {
2415
2176
  return renderCreatableItem(row);
2416
2177
  }
2417
2178
  const item = row;
2418
- return /* @__PURE__ */ jsx11(
2179
+ return /* @__PURE__ */ jsx12(
2419
2180
  ComboboxItem_default,
2420
2181
  {
2421
2182
  value: item,
@@ -2429,7 +2190,7 @@ function MultiSearchableSelect(props) {
2429
2190
  );
2430
2191
  }
2431
2192
  function renderCreatableItem(sentinel, style, index, measureRef) {
2432
- return /* @__PURE__ */ jsx11(
2193
+ return /* @__PURE__ */ jsx12(
2433
2194
  ComboboxItem_default,
2434
2195
  {
2435
2196
  value: sentinel,
@@ -2437,7 +2198,7 @@ function MultiSearchableSelect(props) {
2437
2198
  label: `Create "${sentinel.label}"`,
2438
2199
  inputType: "none",
2439
2200
  renderItem: () => /* @__PURE__ */ jsxs9(Fragment10, { children: [
2440
- /* @__PURE__ */ jsx11(Icon4, { name: "plus-outline", size: "mini" }),
2201
+ /* @__PURE__ */ jsx12(Icon4, { name: "plus-outline", size: "mini" }),
2441
2202
  `Create "${sentinel.label}"`
2442
2203
  ] }),
2443
2204
  style,
@@ -2453,7 +2214,7 @@ function MultiSearchableSelect(props) {
2453
2214
  const hasSentinels = selectAll || selectHeadings;
2454
2215
  const rootValue = hasSentinels ? [...value] : value;
2455
2216
  return /* @__PURE__ */ jsxs9(Field, { $fullWidth: fullWidth, children: [
2456
- /* @__PURE__ */ jsx11("div", { ref: containerRef, style: { position: "relative" } }),
2217
+ /* @__PURE__ */ jsx12("div", { ref: containerRef, style: { position: "relative" } }),
2457
2218
  /* @__PURE__ */ jsxs9(
2458
2219
  Combobox6.Root,
2459
2220
  {
@@ -2534,27 +2295,27 @@ function MultiSearchableSelect(props) {
2534
2295
  text,
2535
2296
  overflowCount > 0 ? `, +${overflowCount}` : ""
2536
2297
  ] });
2537
- })() : /* @__PURE__ */ jsx11(SearchableSelectPlaceholder, { children: placeholder }),
2538
- /* @__PURE__ */ jsx11(SearchableSelectTriggerIcon, { style: { marginLeft: "auto" }, children: /* @__PURE__ */ jsx11(StyledChevron, { "data-chevron": true, children: /* @__PURE__ */ jsx11(ChevronIcon, {}) }) })
2298
+ })() : /* @__PURE__ */ jsx12(SearchableSelectPlaceholder, { children: placeholder }),
2299
+ /* @__PURE__ */ jsx12(SearchableSelectTriggerIcon, { style: { marginLeft: "auto" }, children: /* @__PURE__ */ jsx12(StyledChevron, { "data-chevron": true, children: /* @__PURE__ */ jsx12(ChevronIcon, {}) }) })
2539
2300
  ]
2540
2301
  }
2541
2302
  ),
2542
- /* @__PURE__ */ jsx11(Combobox6.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx11(ComboboxPositioner, { sideOffset: 4, children: /* @__PURE__ */ jsxs9(
2303
+ /* @__PURE__ */ jsx12(Combobox6.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx12(ComboboxPositioner, { sideOffset: 4, children: /* @__PURE__ */ jsxs9(
2543
2304
  SearchableSelectPopup,
2544
2305
  {
2545
2306
  "aria-busy": isLoading || void 0,
2546
2307
  style: { display: "flex", flexDirection: "column" },
2547
2308
  children: [
2548
- /* @__PURE__ */ jsx11(SearchableSelectSearchContainer, { children: /* @__PURE__ */ jsx11(
2309
+ /* @__PURE__ */ jsx12(SearchableSelectSearchContainer, { children: /* @__PURE__ */ jsx12(
2549
2310
  SearchableSelectInput,
2550
2311
  {
2551
2312
  placeholder: searchPlaceholder,
2552
2313
  autoFocus: true
2553
2314
  }
2554
2315
  ) }),
2555
- /* @__PURE__ */ jsx11(ComboboxStatus, { children: isLoading ? loadingText : null }),
2556
- /* @__PURE__ */ jsx11(ComboboxEmpty, { children: isLoading ? null : emptyText }),
2557
- /* @__PURE__ */ jsx11(
2316
+ /* @__PURE__ */ jsx12(ComboboxStatus, { children: isLoading ? loadingText : null }),
2317
+ /* @__PURE__ */ jsx12(ComboboxEmpty, { children: isLoading ? null : emptyText }),
2318
+ /* @__PURE__ */ jsx12(
2558
2319
  SearchableSelectList,
2559
2320
  {
2560
2321
  "aria-label": ariaLabel,
@@ -2566,7 +2327,7 @@ function MultiSearchableSelect(props) {
2566
2327
  display: "flex",
2567
2328
  flexDirection: "column"
2568
2329
  } : void 0,
2569
- children: isVirtualized ? /* @__PURE__ */ jsx11(
2330
+ children: isVirtualized ? /* @__PURE__ */ jsx12(
2570
2331
  VirtualizedComboboxList,
2571
2332
  {
2572
2333
  open,
@@ -2590,10 +2351,10 @@ function MultiSearchableSelect(props) {
2590
2351
  return renderCreatableItem(group);
2591
2352
  }
2592
2353
  const g = group;
2593
- return /* @__PURE__ */ jsxs9(React12.Fragment, { children: [
2354
+ return /* @__PURE__ */ jsxs9(React14.Fragment, { children: [
2594
2355
  /* @__PURE__ */ jsxs9(ComboboxGroup, { items: g.items, children: [
2595
- /* @__PURE__ */ jsx11(ComboboxGroupLabel, { children: renderGroupHeading ? renderGroupHeading(g.value) : g.value }),
2596
- /* @__PURE__ */ jsx11(Combobox6.Collection, { children: (item) => /* @__PURE__ */ jsx11(
2356
+ /* @__PURE__ */ jsx12(ComboboxGroupLabel, { children: renderGroupHeading ? renderGroupHeading(g.value) : g.value }),
2357
+ /* @__PURE__ */ jsx12(Combobox6.Collection, { children: (item) => /* @__PURE__ */ jsx12(
2597
2358
  ComboboxItem_default,
2598
2359
  {
2599
2360
  value: item,
@@ -2606,14 +2367,14 @@ function MultiSearchableSelect(props) {
2606
2367
  item.id
2607
2368
  ) })
2608
2369
  ] }),
2609
- index < groups.length - 1 && /* @__PURE__ */ jsx11(ComboboxSeparator, {})
2370
+ index < groups.length - 1 && /* @__PURE__ */ jsx12(ComboboxSeparator, {})
2610
2371
  ] }, g.value);
2611
2372
  }) : ((item) => {
2612
2373
  if (isCreatableSentinel(item)) {
2613
2374
  return renderCreatableItem(item);
2614
2375
  }
2615
2376
  const dataItem = item;
2616
- return /* @__PURE__ */ jsx11(
2377
+ return /* @__PURE__ */ jsx12(
2617
2378
  ComboboxItem_default,
2618
2379
  {
2619
2380
  value: dataItem,
@@ -2638,153 +2399,141 @@ function MultiSearchableSelect(props) {
2638
2399
  }
2639
2400
 
2640
2401
  // src/v3/ActionMenu.tsx
2641
- import * as React13 from "react";
2402
+ import * as React16 from "react";
2642
2403
  import { Menu as Menu2 } from "@base-ui/react/menu";
2643
2404
  import Radio3 from "@sproutsocial/seeds-react-radio";
2644
2405
  import Checkbox4 from "@sproutsocial/seeds-react-checkbox";
2645
2406
  import { Icon as Icon5 } from "@sproutsocial/seeds-react-icon";
2646
2407
 
2647
2408
  // src/v3/ActionMenuStyles.tsx
2409
+ import * as React15 from "react";
2648
2410
  import { Menu } from "@base-ui/react/menu";
2649
- import styled8, { css as css3 } from "styled-components";
2650
- import "@sproutsocial/seeds-react-mixins";
2651
- var ActionMenuTrigger = styled8(Menu.Trigger)``;
2652
- var ActionMenuPositioner = styled8(Menu.Positioner)`
2653
- min-width: var(--anchor-width);
2654
- z-index: 7;
2655
- `;
2656
- var ActionMenuPopup = styled8(Menu.Popup).attrs({
2657
- "data-base-ui-swipe-ignore": ""
2658
- })`
2659
- font-family: ${({ theme }) => theme.fontFamily};
2660
- background: ${({ theme }) => theme.colors.container.background.base};
2661
- border: 1px solid ${({ theme }) => theme.colors.container.border.base};
2662
- border-radius: ${({ theme }) => theme.radii[500]};
2663
- box-shadow: ${({ theme }) => theme.shadows.low};
2664
- outline: none;
2665
- max-height: min(var(--available-height, 400px), 400px);
2666
- overflow-y: auto;
2667
- padding: ${({ theme }) => theme.space[300]};
2668
-
2669
- &[data-open] {
2670
- animation: action-menu-popup-in 120ms ease-out;
2671
- }
2672
-
2673
- &[data-closed] {
2674
- animation: action-menu-popup-out 100ms ease-in;
2675
- }
2676
-
2677
- @keyframes action-menu-popup-in {
2678
- from {
2679
- opacity: 0;
2680
- transform: scale(0.95);
2681
- }
2682
- to {
2683
- opacity: 1;
2684
- transform: scale(1);
2685
- }
2686
- }
2687
-
2688
- @keyframes action-menu-popup-out {
2689
- from {
2690
- opacity: 1;
2691
- transform: scale(1);
2692
- }
2693
- to {
2694
- opacity: 0;
2695
- transform: scale(0.95);
2696
- }
2411
+ import { jsx as jsx13 } from "react/jsx-runtime";
2412
+ var ActionMenuTrigger = Menu.Trigger;
2413
+ var ActionMenuPositioner = React15.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx13(
2414
+ Menu.Positioner,
2415
+ {
2416
+ ref,
2417
+ className: cn("seeds-action-menu-positioner", className),
2418
+ ...rest
2419
+ }
2420
+ ));
2421
+ ActionMenuPositioner.displayName = "ActionMenuPositioner";
2422
+ var ActionMenuPopup = React15.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx13(
2423
+ Menu.Popup,
2424
+ {
2425
+ ref,
2426
+ "data-base-ui-swipe-ignore": "",
2427
+ className: cn("seeds-action-menu-popup", className),
2428
+ ...rest
2429
+ }
2430
+ ));
2431
+ ActionMenuPopup.displayName = "ActionMenuPopup";
2432
+ var ActionMenuGroup = React15.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx13(
2433
+ Menu.Group,
2434
+ {
2435
+ ref,
2436
+ className: cn("seeds-action-menu-group", className),
2437
+ ...rest
2438
+ }
2439
+ ));
2440
+ ActionMenuGroup.displayName = "ActionMenuGroup";
2441
+ var ActionMenuGroupLabel = React15.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx13(
2442
+ Menu.GroupLabel,
2443
+ {
2444
+ ref,
2445
+ className: cn("seeds-action-menu-group-label", className),
2446
+ ...rest
2447
+ }
2448
+ ));
2449
+ ActionMenuGroupLabel.displayName = "ActionMenuGroupLabel";
2450
+ var ActionMenuSeparator = React15.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx13(
2451
+ Menu.Separator,
2452
+ {
2453
+ ref,
2454
+ className: cn("seeds-action-menu-separator", className),
2455
+ ...rest
2456
+ }
2457
+ ));
2458
+ ActionMenuSeparator.displayName = "ActionMenuSeparator";
2459
+ var StyledMenuItem = React15.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx13(
2460
+ Menu.Item,
2461
+ {
2462
+ ref,
2463
+ className: cn("seeds-action-menu-item", className),
2464
+ ...rest
2465
+ }
2466
+ ));
2467
+ StyledMenuItem.displayName = "StyledMenuItem";
2468
+ var StyledCheckboxItem = React15.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx13(
2469
+ Menu.CheckboxItem,
2470
+ {
2471
+ ref,
2472
+ className: cn(
2473
+ "seeds-action-menu-item",
2474
+ "seeds-action-menu-item--flex",
2475
+ className
2476
+ ),
2477
+ ...rest
2478
+ }
2479
+ ));
2480
+ StyledCheckboxItem.displayName = "StyledCheckboxItem";
2481
+ var StyledRadioItem = React15.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx13(
2482
+ Menu.RadioItem,
2483
+ {
2484
+ ref,
2485
+ className: cn(
2486
+ "seeds-action-menu-item",
2487
+ "seeds-action-menu-item--flex",
2488
+ className
2489
+ ),
2490
+ ...rest
2491
+ }
2492
+ ));
2493
+ StyledRadioItem.displayName = "StyledRadioItem";
2494
+ var StyledCheckboxItemIndicator = React15.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx13(
2495
+ Menu.CheckboxItemIndicator,
2496
+ {
2497
+ ref,
2498
+ className: cn("seeds-action-menu-item-indicator", className),
2499
+ ...rest
2500
+ }
2501
+ ));
2502
+ StyledCheckboxItemIndicator.displayName = "StyledCheckboxItemIndicator";
2503
+ var StyledRadioItemIndicator = React15.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx13(
2504
+ Menu.RadioItemIndicator,
2505
+ {
2506
+ ref,
2507
+ className: cn("seeds-action-menu-item-indicator", className),
2508
+ ...rest
2509
+ }
2510
+ ));
2511
+ StyledRadioItemIndicator.displayName = "StyledRadioItemIndicator";
2512
+ var StyledSubmenuTrigger = React15.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx13(
2513
+ Menu.SubmenuTrigger,
2514
+ {
2515
+ ref,
2516
+ className: cn(
2517
+ "seeds-action-menu-item",
2518
+ "seeds-action-menu-submenu-trigger",
2519
+ className
2520
+ ),
2521
+ ...rest
2697
2522
  }
2698
- `;
2699
- var ActionMenuGroup = styled8(Menu.Group)`
2700
- display: block;
2701
- `;
2702
- var ActionMenuGroupLabel = styled8(Menu.GroupLabel)`
2703
- padding: ${({ theme }) => `${theme.space[300]}`};
2704
- font-size: ${({ theme }) => theme.typography[100].fontSize};
2705
- color: ${({ theme }) => theme.colors.text.body};
2706
- `;
2707
- var ActionMenuSeparator = styled8(Menu.Separator)`
2708
- height: 1px;
2709
- margin: ${({ theme }) => `${theme.space[300]} -${theme.space[300]}`};
2710
- background: ${({ theme }) => theme.colors.container.border.base};
2711
- `;
2712
- var menuItemStyles = css3`
2713
- box-sizing: border-box;
2714
- display: block;
2715
- width: 100%;
2716
- border-radius: ${({ theme }) => theme.radii[500]};
2717
- background-color: ${({ theme }) => theme.colors.listItem.background.base};
2718
- border: 1px solid ${({ theme }) => theme.colors.listItem.background.base};
2719
- color: ${({ theme }) => theme.colors.text.body};
2720
- font-family: ${({ theme }) => theme.fontFamily};
2721
- font-weight: ${({ theme }) => theme.fontWeights.normal};
2722
- text-align: left;
2723
- text-decoration: none;
2724
- padding: ${({ theme }) => theme.space[300]};
2725
- outline: 0;
2726
- ${({ theme }) => theme.typography[200]};
2727
- transition: all ${({ theme }) => theme.duration.fast};
2728
- cursor: pointer;
2729
- user-select: none;
2730
-
2731
- &[data-highlighted] {
2732
- border-color: ${({ theme }) => theme.colors.listItem.border.base};
2733
- background-color: ${({ theme }) => theme.colors.listItem.background.hover};
2734
- color: ${({ theme }) => theme.colors.text.body};
2735
- text-decoration: none;
2523
+ ));
2524
+ StyledSubmenuTrigger.displayName = "StyledSubmenuTrigger";
2525
+ var StyledLinkItem = React15.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx13(
2526
+ Menu.LinkItem,
2527
+ {
2528
+ ref,
2529
+ className: cn("seeds-action-menu-item", className),
2530
+ ...rest
2736
2531
  }
2737
-
2738
- &[data-disabled] {
2739
- cursor: not-allowed;
2740
- opacity: 0.4;
2741
- }
2742
- `;
2743
- var StyledMenuItem = styled8(Menu.Item)`
2744
- ${menuItemStyles}
2745
- `;
2746
- var StyledCheckboxItem = styled8(Menu.CheckboxItem)`
2747
- ${menuItemStyles}
2748
- display: flex;
2749
- align-items: center;
2750
- gap: ${({ theme }) => theme.space[300]};
2751
- `;
2752
- var StyledRadioItem = styled8(Menu.RadioItem)`
2753
- ${menuItemStyles}
2754
- display: flex;
2755
- align-items: center;
2756
- gap: ${({ theme }) => theme.space[300]};
2757
- `;
2758
- var StyledCheckboxItemIndicator = styled8(Menu.CheckboxItemIndicator)`
2759
- display: flex;
2760
- align-items: center;
2761
- width: 16px;
2762
- color: ${({ theme }) => theme.colors.text.body};
2763
- `;
2764
- var StyledRadioItemIndicator = styled8(Menu.RadioItemIndicator)`
2765
- display: flex;
2766
- align-items: center;
2767
- width: 16px;
2768
- color: ${({ theme }) => theme.colors.text.body};
2769
- `;
2770
- var StyledSubmenuTrigger = styled8(Menu.SubmenuTrigger)`
2771
- ${menuItemStyles}
2772
- display: flex;
2773
- align-items: center;
2774
- gap: ${({ theme }) => theme.space[300]};
2775
- justify-content: space-between;
2776
-
2777
- &[data-popup-open] {
2778
- border-color: ${({ theme }) => theme.colors.listItem.border.base};
2779
- background-color: ${({ theme }) => theme.colors.listItem.background.hover};
2780
- }
2781
- `;
2782
- var StyledLinkItem = styled8(Menu.LinkItem)`
2783
- ${menuItemStyles}
2784
- `;
2532
+ ));
2533
+ StyledLinkItem.displayName = "StyledLinkItem";
2785
2534
 
2786
2535
  // src/v3/ActionMenu.tsx
2787
- import { Fragment as Fragment11, jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
2536
+ import { Fragment as Fragment11, jsx as jsx14, jsxs as jsxs10 } from "react/jsx-runtime";
2788
2537
  function ActionMenu({
2789
2538
  trigger,
2790
2539
  children,
@@ -2801,9 +2550,9 @@ function ActionMenu({
2801
2550
  defaultOpen,
2802
2551
  onOpenChange,
2803
2552
  children: [
2804
- /* @__PURE__ */ jsx12("div", { ref: containerRef, style: { position: "relative" } }),
2805
- /* @__PURE__ */ jsx12(ActionMenuTrigger, { render: trigger, disabled }),
2806
- /* @__PURE__ */ jsx12(Menu2.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx12(ActionMenuPositioner, { sideOffset: 8, children: /* @__PURE__ */ jsx12(ActionMenuPopup, { children }) }) })
2553
+ /* @__PURE__ */ jsx14("div", { ref: containerRef, style: { position: "relative" } }),
2554
+ /* @__PURE__ */ jsx14(ActionMenuTrigger, { render: trigger, disabled }),
2555
+ /* @__PURE__ */ jsx14(Menu2.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx14(ActionMenuPositioner, { sideOffset: 8, children: /* @__PURE__ */ jsx14(ActionMenuPopup, { children }) }) })
2807
2556
  ]
2808
2557
  }
2809
2558
  );
@@ -2815,10 +2564,10 @@ function MenuGroup({
2815
2564
  }) {
2816
2565
  return /* @__PURE__ */ jsxs10(Fragment11, { children: [
2817
2566
  /* @__PURE__ */ jsxs10(ActionMenuGroup, { children: [
2818
- label && /* @__PURE__ */ jsx12(ActionMenuGroupLabel, { children: label }),
2567
+ label && /* @__PURE__ */ jsx14(ActionMenuGroupLabel, { children: label }),
2819
2568
  children
2820
2569
  ] }),
2821
- showSeparator && /* @__PURE__ */ jsx12(ActionMenuSeparator, {})
2570
+ showSeparator && /* @__PURE__ */ jsx14(ActionMenuSeparator, {})
2822
2571
  ] });
2823
2572
  }
2824
2573
  function MenuRadioGroup({
@@ -2827,7 +2576,7 @@ function MenuRadioGroup({
2827
2576
  defaultValue,
2828
2577
  onValueChange
2829
2578
  }) {
2830
- return /* @__PURE__ */ jsx12(
2579
+ return /* @__PURE__ */ jsx14(
2831
2580
  Menu2.RadioGroup,
2832
2581
  {
2833
2582
  value,
@@ -2838,7 +2587,7 @@ function MenuRadioGroup({
2838
2587
  );
2839
2588
  }
2840
2589
  function MenuItem(props) {
2841
- const generatedId = React13.useId();
2590
+ const generatedId = React16.useId();
2842
2591
  if (props.type === "checkbox") {
2843
2592
  const {
2844
2593
  children: children2,
@@ -2859,11 +2608,11 @@ function MenuItem(props) {
2859
2608
  disabled: disabled2,
2860
2609
  closeOnClick: closeOnClick2,
2861
2610
  children: [
2862
- /* @__PURE__ */ jsx12(
2611
+ /* @__PURE__ */ jsx14(
2863
2612
  StyledCheckboxItemIndicator,
2864
2613
  {
2865
2614
  keepMounted: true,
2866
- render: (_indicatorProps, state) => /* @__PURE__ */ jsx12(
2615
+ render: (_indicatorProps, state) => /* @__PURE__ */ jsx14(
2867
2616
  Checkbox4,
2868
2617
  {
2869
2618
  checked: state.checked,
@@ -2890,11 +2639,11 @@ function MenuItem(props) {
2890
2639
  disabled: disabled2,
2891
2640
  closeOnClick: closeOnClick2,
2892
2641
  children: [
2893
- /* @__PURE__ */ jsx12(
2642
+ /* @__PURE__ */ jsx14(
2894
2643
  StyledRadioItemIndicator,
2895
2644
  {
2896
2645
  keepMounted: true,
2897
- render: (_indicatorProps, state) => /* @__PURE__ */ jsx12(
2646
+ render: (_indicatorProps, state) => /* @__PURE__ */ jsx14(
2898
2647
  Radio3,
2899
2648
  {
2900
2649
  checked: state.checked,
@@ -2921,9 +2670,9 @@ function MenuItem(props) {
2921
2670
  target
2922
2671
  } = props;
2923
2672
  if (href) {
2924
- return /* @__PURE__ */ jsx12(StyledLinkItem, { href, target, closeOnClick, children });
2673
+ return /* @__PURE__ */ jsx14(StyledLinkItem, { href, target, closeOnClick, children });
2925
2674
  }
2926
- return /* @__PURE__ */ jsx12(
2675
+ return /* @__PURE__ */ jsx14(
2927
2676
  StyledMenuItem,
2928
2677
  {
2929
2678
  onClick,
@@ -2950,9 +2699,9 @@ function MenuSub({
2950
2699
  onOpenChange,
2951
2700
  closeParentOnEsc,
2952
2701
  children: [
2953
- /* @__PURE__ */ jsx12("div", { ref: containerRef, style: { position: "relative" } }),
2702
+ /* @__PURE__ */ jsx14("div", { ref: containerRef, style: { position: "relative" } }),
2954
2703
  trigger,
2955
- /* @__PURE__ */ jsx12(Menu2.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx12(ActionMenuPositioner, { sideOffset: getOffset, alignOffset: getOffset, children: /* @__PURE__ */ jsx12(ActionMenuPopup, { children }) }) })
2704
+ /* @__PURE__ */ jsx14(Menu2.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx14(ActionMenuPositioner, { sideOffset: getOffset, alignOffset: getOffset, children: /* @__PURE__ */ jsx14(ActionMenuPopup, { children }) }) })
2956
2705
  ]
2957
2706
  }
2958
2707
  );
@@ -2974,7 +2723,7 @@ function MenuSubTrigger({
2974
2723
  openOnHover,
2975
2724
  children: [
2976
2725
  children,
2977
- /* @__PURE__ */ jsx12(Icon5, { name: "chevron-right-outline", fixedWidth: true, "aria-hidden": true })
2726
+ /* @__PURE__ */ jsx14(Icon5, { name: "chevron-right-outline", fixedWidth: true, "aria-hidden": true })
2978
2727
  ]
2979
2728
  }
2980
2729
  );
@@ -2986,35 +2735,41 @@ import "@sproutsocial/seeds-react-button";
2986
2735
  import { Icon as Icon6 } from "@sproutsocial/seeds-react-icon";
2987
2736
 
2988
2737
  // src/v3/MenuButtonStyles.tsx
2989
- import styled9 from "styled-components";
2738
+ import * as React17 from "react";
2990
2739
  import { Button } from "@sproutsocial/seeds-react-button";
2991
- var MenuButtonContainer = styled9.div`
2992
- display: inline-flex;
2993
- gap: 1px;
2994
- `;
2995
- var MainButton = styled9(Button)`
2996
- && {
2997
- border-top-right-radius: 0;
2998
- border-bottom-right-radius: 0;
2999
- }
3000
- `;
3001
- var TriggerButton = styled9(Button)`
3002
- && {
3003
- border-top-left-radius: 0;
3004
- border-bottom-left-radius: 0;
3005
- }
3006
-
3007
- .Icon-svg {
3008
- transition: transform ${({ theme }) => theme.duration.fast} ease;
3009
- }
3010
-
3011
- &[data-popup-open] .Icon-svg {
3012
- transform: rotate(180deg);
3013
- }
3014
- `;
2740
+ import { jsx as jsx15 } from "react/jsx-runtime";
2741
+ var MenuButtonContainer = React17.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx15(
2742
+ "div",
2743
+ {
2744
+ ref,
2745
+ className: cn("seeds-menu-button-container", className),
2746
+ ...rest
2747
+ }
2748
+ ));
2749
+ MenuButtonContainer.displayName = "MenuButtonContainer";
2750
+ var MainButton = React17.forwardRef(
2751
+ ({ className, ...rest }, ref) => /* @__PURE__ */ jsx15(
2752
+ Button,
2753
+ {
2754
+ ref,
2755
+ className: cn("seeds-menu-button-main", className),
2756
+ ...rest
2757
+ }
2758
+ )
2759
+ );
2760
+ MainButton.displayName = "MainButton";
2761
+ var TriggerButton = React17.forwardRef(({ className, ...rest }, ref) => /* @__PURE__ */ jsx15(
2762
+ Button,
2763
+ {
2764
+ ref,
2765
+ className: cn("seeds-menu-button-trigger", className),
2766
+ ...rest
2767
+ }
2768
+ ));
2769
+ TriggerButton.displayName = "TriggerButton";
3015
2770
 
3016
2771
  // src/v3/MenuButton.tsx
3017
- import { jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
2772
+ import { jsx as jsx16, jsxs as jsxs11 } from "react/jsx-runtime";
3018
2773
  function MenuButton({
3019
2774
  actionMenu,
3020
2775
  appearance = "primary",
@@ -3025,7 +2780,7 @@ function MenuButton({
3025
2780
  ...rest
3026
2781
  }) {
3027
2782
  return /* @__PURE__ */ jsxs11(MenuButtonContainer, { children: [
3028
- /* @__PURE__ */ jsx13(
2783
+ /* @__PURE__ */ jsx16(
3029
2784
  MainButton,
3030
2785
  {
3031
2786
  appearance,
@@ -3035,18 +2790,18 @@ function MenuButton({
3035
2790
  children
3036
2791
  }
3037
2792
  ),
3038
- /* @__PURE__ */ jsx13(
2793
+ /* @__PURE__ */ jsx16(
3039
2794
  ActionMenu,
3040
2795
  {
3041
2796
  disabled,
3042
- trigger: /* @__PURE__ */ jsx13(
2797
+ trigger: /* @__PURE__ */ jsx16(
3043
2798
  TriggerButton,
3044
2799
  {
3045
2800
  appearance,
3046
2801
  size,
3047
2802
  disabled,
3048
2803
  ariaLabel: menuButtonAriaLabel,
3049
- children: /* @__PURE__ */ jsx13(Icon6, { name: "chevron-down-outline", fixedWidth: true, "aria-hidden": true })
2804
+ children: /* @__PURE__ */ jsx16(Icon6, { name: "chevron-down-outline", fixedWidth: true, "aria-hidden": true })
3050
2805
  }
3051
2806
  ),
3052
2807
  children: actionMenu