@eightshift/ui-components 5.6.1 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/dist/{Button-CQ5ZZJ2w.js → Button-BXjXzdW_.js} +13 -13
  2. package/dist/{Dialog-BMgMUQuN.js → Dialog-D8bjn-nh.js} +404 -77
  3. package/dist/{FieldError-B8BgFmIQ.js → FieldError-DwBG6m1U.js} +2 -2
  4. package/dist/{FocusScope-B5vxRkHm.js → FocusScope-BMk5oZCk.js} +8 -8
  5. package/dist/{Heading-B5aEynOM.js → Heading-BmRX4BRL.js} +3 -3
  6. package/dist/{Hidden-rE6uR-lr.js → Hidden-Rfj-STx7.js} +4 -4
  7. package/dist/{Input-8yja_IHC.js → Input-CNNksOWg.js} +11 -11
  8. package/dist/{Label-DWVaNd2E.js → Label-D8a3eYb-.js} +4 -4
  9. package/dist/{List-BiAnh5G5.js → List-BGHOoFf0.js} +8 -8
  10. package/dist/{ListBox-DggfiuO_.js → ListBox-Dd37zMvs.js} +40 -41
  11. package/dist/{OverlayArrow-DraDOoRn.js → OverlayArrow-DokC40S3.js} +6 -6
  12. package/dist/{PortalProvider---wyKpMr.js → PortalProvider-CHPnqDSH.js} +2 -2
  13. package/dist/RadioGroup-BVFvITWO.js +371 -0
  14. package/dist/{SearchField-DWGdCvnn.js → SearchField-CHYnN-jt.js} +16 -16
  15. package/dist/{SelectionManager-B6-b5NM2.js → SelectionManager-N8X7T_4D.js} +44 -46
  16. package/dist/{SharedElementTransition-fML-zIv6.js → SharedElementTransition-BDT84GtD.js} +3 -3
  17. package/dist/{Slider-DfU6bRtH.js → Slider-CL5CM9S8.js} +23 -23
  18. package/dist/{Text-AxKZjtFm.js → Text-ztX6G1zR.js} +3 -3
  19. package/dist/{VisuallyHidden-CgnIuZJ2.js → VisuallyHidden-DTUuKFiI.js} +4 -4
  20. package/dist/assets/style-admin.css +12156 -2
  21. package/dist/assets/style-editor.css +12156 -2
  22. package/dist/assets/style.css +12162 -2
  23. package/dist/assets/wp-overrides/allow-full-width-blocks.css +6 -0
  24. package/dist/assets/wp-overrides/fix-label-text-case.css +29 -0
  25. package/dist/assets/wp-overrides/increase-sidebar-width.css +4 -0
  26. package/dist/assets/wp-overrides/make-block-messages-nicer.css +155 -0
  27. package/dist/assets/wp-overrides/replace-fonts.css +8 -0
  28. package/dist/assets/wp-overrides/restyle-tooltips.css +194 -0
  29. package/dist/assets/wp-overrides/round-corners.css +200 -0
  30. package/dist/assets/wp-overrides/unify-button-sizes.css +5 -0
  31. package/dist/clsx-DgYk2OaC.js +16 -0
  32. package/dist/{Color-WxFE7lQB.js → color-swatch-CFIuSPcO.js} +124 -6
  33. package/dist/components/animated-visibility/animated-visibility.js +25 -17
  34. package/dist/components/base-control/base-control.js +8 -5
  35. package/dist/components/base-control/container.js +204 -0
  36. package/dist/components/button/button.js +249 -155
  37. package/dist/components/checkbox/checkbox.js +96 -37
  38. package/dist/components/color-pickers/color-picker.js +16 -7
  39. package/dist/components/color-pickers/color-swatch.js +5 -57
  40. package/dist/components/color-pickers/gradient-editor.js +161 -138
  41. package/dist/components/color-pickers/solid-color-picker.js +308 -206
  42. package/dist/components/component-toggle/component-toggle.js +12 -8
  43. package/dist/components/container-panel/container-panel.js +54 -31
  44. package/dist/components/draggable/draggable-handle.js +8 -7
  45. package/dist/components/draggable/draggable.js +2 -2
  46. package/dist/components/draggable-list/draggable-list-item.js +21 -12
  47. package/dist/components/draggable-list/draggable-list.js +19 -21
  48. package/dist/components/expandable/expandable.js +56 -28
  49. package/dist/components/index.js +7 -21
  50. package/dist/components/input-field/input-field.js +112 -35
  51. package/dist/components/item-collection/item-collection.js +1 -1
  52. package/dist/components/link-input/link-input.js +181 -121
  53. package/dist/components/matrix-align/matrix-align.js +54 -20
  54. package/dist/components/menu/menu.js +26 -34
  55. package/dist/components/modal/modal.js +31 -28
  56. package/dist/components/notice/notice.js +45 -28
  57. package/dist/components/number-picker/number-picker.js +151 -101
  58. package/dist/components/option-select/option-select.js +40 -4
  59. package/dist/components/options-panel/options-panel.js +52 -25
  60. package/dist/components/placeholders/file-picker-shell.js +10 -9
  61. package/dist/components/placeholders/file-placeholder.js +14 -6
  62. package/dist/components/placeholders/image-placeholder.js +14 -4
  63. package/dist/components/placeholders/media-placeholder.js +11 -4
  64. package/dist/components/popover/popover.js +14 -11
  65. package/dist/components/portal-provider/portal-provider.js +1 -1
  66. package/dist/components/radio/radio.js +118 -429
  67. package/dist/components/repeater/repeater-item.js +7 -10
  68. package/dist/components/repeater/repeater.js +9 -15
  69. package/dist/components/responsive/mini-responsive.js +53 -61
  70. package/dist/components/responsive/responsive-legacy.js +1 -1
  71. package/dist/components/responsive/responsive.js +27 -27
  72. package/dist/components/responsive-preview/responsive-preview.js +1 -1
  73. package/dist/components/rich-label/rich-label.js +5 -5
  74. package/dist/components/select/async-multi-select.js +467 -100
  75. package/dist/components/select/{v2/async-select.js → async-select.js} +182 -105
  76. package/dist/components/select/multi-select.js +437 -83
  77. package/dist/components/select/shared.js +14 -42
  78. package/dist/components/select/single-select.js +349 -54
  79. package/dist/components/slider/column-config-slider.js +138 -45
  80. package/dist/components/slider/slider.js +265 -205
  81. package/dist/components/slider/utils.js +32 -1
  82. package/dist/components/smart-image/smart-image.js +25 -4
  83. package/dist/components/smart-image/worker-inline.js +1 -1
  84. package/dist/components/spacer/spacer.js +2 -2
  85. package/dist/components/tabs/tabs.js +370 -101
  86. package/dist/components/toggle/switch.js +174 -39
  87. package/dist/components/toggle/toggle.js +6 -3
  88. package/dist/components/toggle-button/toggle-button.js +140 -56
  89. package/dist/components/tooltip/tooltip.js +27 -26
  90. package/dist/{context-DMOmz986.js → context-BQvmiUqb.js} +3 -3
  91. package/dist/{default-i18n-DBm-GqWM.js → default-i18n-CnQeC5Pl.js} +10 -10
  92. package/dist/{general-Ck8IV7xJ.js → general-B6pOveVp.js} +11 -10
  93. package/dist/icons/icons.js +28 -9
  94. package/dist/icons/jsx-svg.js +1 -1
  95. package/dist/icons/spinner.js +3 -1
  96. package/dist/{index-Dq3gT5pW.js → index-BHpUy2Ix.js} +1 -1
  97. package/dist/{index-D8-Zjpbd.js → index-oFgxU4zs.js} +3 -3
  98. package/dist/index.js +6 -20
  99. package/dist/proxy-0B6wWuDe.js +7409 -0
  100. package/dist/{react-jsx-parser.min-VUl-CuCv.js → react-jsx-parser.min-B_hvYYa1.js} +5 -5
  101. package/dist/{Select-BvggcFOX.js → shared-DwjRce5e.js} +170 -36
  102. package/dist/{textSelection-DbCKqaw8.js → textSelection-CwHUtNVX.js} +1 -1
  103. package/dist/{useButton-v9ngEj50.js → useButton-DdZrS1Kz.js} +3 -3
  104. package/dist/{useEvent-BifIGnVS.js → useEvent-BD7Olibq.js} +1 -1
  105. package/dist/{useFilter-BlkUH1Ma.js → useFilter-bhxeEDg8.js} +1 -1
  106. package/dist/{useFocusRing-Cgm0R4Cf.js → useFocusRing-D3b7Kh4P.js} +1 -1
  107. package/dist/{useFormReset-yV9VVy9R.js → useFormReset-WUv2PdFO.js} +1 -1
  108. package/dist/{useFormValidation-CeNsUGWK.js → useFormValidation-DQeXkyLm.js} +2 -2
  109. package/dist/{useHover-BRDW3y7-.js → useHover-Bycb7BsD.js} +7 -7
  110. package/dist/{useLabel-C8umX0gk.js → useLabel-Bnv4-T24.js} +2 -2
  111. package/dist/{useLabels-Cdxi6JSa.js → useLabels-B49ptFDX.js} +1 -1
  112. package/dist/{useListState-RdLrYsMP.js → useListState-ZKhRO8ML.js} +1 -1
  113. package/dist/{useLocalizedStringFormatter-eaZiN2tE.js → useLocalizedStringFormatter-NETP-8H8.js} +1 -1
  114. package/dist/{useNumberField-D16dDfYF.js → useNumberField-D2fUHql3.js} +10 -10
  115. package/dist/{useNumberFormatter-BCmkV-7c.js → useNumberFormatter-DGvuRCn7.js} +1 -1
  116. package/dist/{usePress-DJskZBH9.js → usePress-B8OteQMu.js} +6 -6
  117. package/dist/{useSingleSelectListState-n0AVMr3Y.js → useSingleSelectListState-BBTu4shO.js} +2 -2
  118. package/dist/{useToggle-DSBDAfdw.js → useToggle-BZhaYwZl.js} +4 -4
  119. package/dist/{useToggleState-CzN79ary.js → useToggleState-VkXJjsru.js} +1 -1
  120. package/dist/utilities/general.js +1 -1
  121. package/dist/utilities/index.js +1 -1
  122. package/dist/{utils-cvK1vxO7.js → utils-DGpXyJOJ.js} +29 -42
  123. package/dist/workers/image-analysis.worker.js +3 -3
  124. package/package.json +26 -22
  125. package/dist/ColorSwatch-xVS3rMYS.js +0 -66
  126. package/dist/Select-ef7c0426.esm-CmTkSxDx.js +0 -2474
  127. package/dist/Separator-B-xeqOkC.js +0 -344
  128. package/dist/assets/wp-font-enhancements.css +0 -2
  129. package/dist/assets/wp-ui-enhancements.css +0 -2
  130. package/dist/components/select/async-single-select.js +0 -138
  131. package/dist/components/select/custom-select-default-components.js +0 -38
  132. package/dist/components/select/multi-select-components.js +0 -8
  133. package/dist/components/select/react-select-component-wrappers.js +0 -90
  134. package/dist/components/select/styles.js +0 -49
  135. package/dist/components/select/v2/async-multi-select.js +0 -432
  136. package/dist/components/select/v2/multi-select.js +0 -403
  137. package/dist/components/select/v2/shared.js +0 -69
  138. package/dist/components/select/v2/single-select.js +0 -358
  139. package/dist/index-641ee5b8.esm-DVp0njHa.js +0 -3139
  140. package/dist/modifiers.esm-BuJQPI1X.js +0 -31
  141. package/dist/multi-select-components-CT_W0Cy9.js +0 -3744
  142. package/dist/react-select-async.esm-Zl1LPaPb.js +0 -107
  143. package/dist/react-select.esm-Bu36HujU.js +0 -15
  144. package/dist/useDragAndDrop-C08ZXv4F.js +0 -3925
  145. package/dist/wp/wp-font-enhancements.js +0 -1
  146. package/dist/wp/wp-ui-enhancements.js +0 -1
@@ -1,21 +1,22 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { _ as __ } from "../../../default-i18n-DBm-GqWM.js";
3
- import { BaseControl } from "../../base-control/base-control.js";
4
- import { $ as $d2f53cda644affe3$export$2f2b9559550c7bbc, a as $440f4836bcb56932$export$b94867ecbd698f21 } from "../../../SearchField-DWGdCvnn.js";
5
- import { $ as $d2b4bc8c273e7be6$export$353f5b6fc5456de1 } from "../../../Button-CQ5ZZJ2w.js";
6
- import { $ as $3985021b0ad6602f$export$f5b8910cec6cf069 } from "../../../Input-8yja_IHC.js";
7
- import { $ as $01b77f81d0f07f68$export$b04be29aa201d4f5 } from "../../../Label-DWVaNd2E.js";
8
- import { $ as $eed445e0843c11d0$export$41f133550aa26f48 } from "../../../ListBox-DggfiuO_.js";
9
- import { e as $07b14b47974efb58$export$5b6b19405a83ff9d } from "../../../Dialog-BMgMUQuN.js";
10
- import { $ as $82d7e5349645de74$export$ef9b1a59e592288f, a as $82d7e5349645de74$export$e288731fd71264f0, b as $82d7e5349645de74$export$ef445b55be0601bd } from "../../../Select-BvggcFOX.js";
11
- import { useRef, useEffect, cloneElement, useContext } from "react";
12
- import { icons } from "../../../icons/icons.js";
13
- import "../../../react-jsx-parser.min-VUl-CuCv.js";
14
- import { OptionItemBase } from "./shared.js";
15
- import { RichLabel } from "../../rich-label/rich-label.js";
16
- import { unescapeHTML } from "../../../utilities/text-helpers.js";
17
- import { c as clsx } from "../../../utils-cvK1vxO7.js";
18
- import { $ as $f86e6c1ec7da6ebb$export$bc3384a35de93d66 } from "../../../useAsyncList-D52mQcrH.js";
2
+ import { _ as __ } from "../../default-i18n-CnQeC5Pl.js";
3
+ import { BaseControl } from "../base-control/base-control.js";
4
+ import { $ as $d2f53cda644affe3$export$2f2b9559550c7bbc, a as $440f4836bcb56932$export$b94867ecbd698f21 } from "../../SearchField-CHYnN-jt.js";
5
+ import { $ as $d2b4bc8c273e7be6$export$353f5b6fc5456de1 } from "../../Button-BXjXzdW_.js";
6
+ import { $ as $3985021b0ad6602f$export$f5b8910cec6cf069 } from "../../Input-CNNksOWg.js";
7
+ import { $ as $01b77f81d0f07f68$export$b04be29aa201d4f5 } from "../../Label-D8a3eYb-.js";
8
+ import { $ as $eed445e0843c11d0$export$41f133550aa26f48 } from "../../ListBox-Dd37zMvs.js";
9
+ import { $ as $07b14b47974efb58$export$5b6b19405a83ff9d } from "../../Dialog-D8bjn-nh.js";
10
+ import { $ as $82d7e5349645de74$export$ef9b1a59e592288f, a as $82d7e5349645de74$export$e288731fd71264f0, S as SelectClearButton, O as OptionItemBase } from "../../shared-DwjRce5e.js";
11
+ import { useRef, cloneElement } from "react";
12
+ import { icons } from "../../icons/icons.js";
13
+ import "../../react-jsx-parser.min-B_hvYYa1.js";
14
+ import { Spinner } from "../../icons/spinner.js";
15
+ import { RichLabel } from "../rich-label/rich-label.js";
16
+ import { unescapeHTML } from "../../utilities/text-helpers.js";
17
+ import { c as cva } from "../../index-BHpUy2Ix.js";
18
+ import { c as clsx } from "../../clsx-DgYk2OaC.js";
19
+ import { $ as $f86e6c1ec7da6ebb$export$bc3384a35de93d66 } from "../../useAsyncList-D52mQcrH.js";
19
20
  /**
20
21
  * Select menu with async loading.
21
22
  *
@@ -46,9 +47,14 @@ import { $ as $f86e6c1ec7da6ebb$export$bc3384a35de93d66 } from "../../../useAsyn
46
47
  * @param {JSX.Element} [props.customValueDisplay] - If provided, replaces the default current value display of each selected item. `({ value: string, label: string, subtitle: string, metadata: any }) => JSX.Element`
47
48
  * @param {JSX.Element} [props.customDropdownArrow] - If provided, replaces the default dropdown arrow indicator.
48
49
  * @param {string} props.className - Classes to pass to the select menu.
50
+ * @param {boolean} [props.flat] - If `true`, component will look more flat. Useful for nested layer of controls.
51
+ * @param {SelectSize} [props.size='default'] - Sets the size of the input field.
49
52
  * @param {boolean} [props.noMinWidth=false] - If `true`, the select menu will not have a minimum width.
53
+ * @param {string[]} [props.extraItemProps] - List of props to include to the option items.
50
54
  * @param {boolean} [props.hidden] - If `true`, the component is not rendered.
51
55
  *
56
+ * @typedef {'small' | 'medium' | 'default' | 'large'} SelectSize
57
+ *
52
58
  * @returns {JSX.Element} The AsyncSelectNext component.
53
59
  *
54
60
  * @example
@@ -65,7 +71,7 @@ import { $ as $f86e6c1ec7da6ebb$export$bc3384a35de93d66 } from "../../../useAsyn
65
71
  *
66
72
  * @preserve
67
73
  */
68
- const AsyncSelectNext = (props) => {
74
+ const AsyncSelect = (props) => {
69
75
  const {
70
76
  label,
71
77
  help,
@@ -92,12 +98,16 @@ const AsyncSelectNext = (props) => {
92
98
  getIcon,
93
99
  getSubtitle,
94
100
  getData = (data) => data,
101
+ extraItemProps,
95
102
  hidden,
103
+ flat,
104
+ size = "default",
96
105
  noMinWidth = false,
97
106
  ...rest
98
107
  } = props;
99
108
  const list = $f86e6c1ec7da6ebb$export$bc3384a35de93d66({
100
- getKey: (item) => item.value,
109
+ initialSelectedKeys: value?.value ? [value?.value] : [],
110
+ getKey: (item) => item?.value,
101
111
  async load({ signal, filterText }) {
102
112
  let json = [];
103
113
  if (fetchFunction) {
@@ -109,7 +119,7 @@ const AsyncSelectNext = (props) => {
109
119
  }
110
120
  const output = json?.map((item, index) => {
111
121
  const id = getValue?.(item) ?? index;
112
- const entry = { label: unescapeHTML(getLabel?.(item) ?? ""), value: id };
122
+ const entry = { ...item, label: unescapeHTML(getLabel?.(item) ?? ""), value: id };
113
123
  if (getMeta) {
114
124
  entry.meta = getMeta(item);
115
125
  }
@@ -118,51 +128,118 @@ const AsyncSelectNext = (props) => {
118
128
  }
119
129
  return entry;
120
130
  });
121
- if (value && value?.value && (filterText ?? "").length < 1 && output.length > 0 && !output?.find((item) => item.value === value?.value)) {
131
+ if (filterText.length > 0) {
122
132
  return {
123
- items: [value, ...output.slice(0, -1)],
124
- selectedKeys: [value?.value]
133
+ items: output
125
134
  };
126
135
  }
136
+ let extra = [];
137
+ if (value && !output?.find((item) => item.value === value?.value)) {
138
+ extra = [value];
139
+ output.pop();
140
+ }
127
141
  return {
128
- items: output
142
+ items: [...extra, ...output]
129
143
  };
130
144
  }
131
145
  });
132
146
  const ref = useRef();
133
- useEffect(() => {
134
- if (value?.value && !list.getItem(value?.value)) {
135
- list.items[0] = value;
136
- }
137
- list.setSelectedKeys(value?.value ? [value.value] : []);
138
- list.setFilterText("");
139
- }, [value?.value]);
140
147
  if (hidden) {
141
148
  return null;
142
149
  }
150
+ const selectClass = cva(
151
+ [
152
+ "es:relative",
153
+ "es:flex es:items-center es:gap-px",
154
+ "es:leading-none",
155
+ "es:rounded-lg es:hover:rounded-xl es:has-focus-visible:rounded-2xl es:group-open:rounded-2xl",
156
+ "es:transition-plus",
157
+ "es:any-focus:outline-hidden",
158
+ "es:inset-ring",
159
+ "es:has-focus-visible:ring-2 es:has-focus-visible:ring-accent-500/30",
160
+ "es:has-focus-visible:text-accent-950 es:has-focus-visible:inset-ring-accent-500",
161
+ clearable && "es:pr-8",
162
+ "es:focus:placeholder:text-surface-400",
163
+ !noMinWidth && "es:min-w-48",
164
+ !inline && "es:w-fill",
165
+ className
166
+ ],
167
+ {
168
+ variants: {
169
+ size: {
170
+ small: ["es:min-h-8", "es:px-2.5"],
171
+ medium: ["es:min-h-9", "es:px-3"],
172
+ default: ["es:min-h-10", "es:px-3"],
173
+ large: ["es:min-h-12", "es:px-4"]
174
+ },
175
+ disabled: {
176
+ false: "es:selection:bg-surface-100 es:selection:text-accent-800",
177
+ true: "es:selection:bg-secondary-200 es:selection:text-secondary-600"
178
+ }
179
+ },
180
+ compoundVariants: [
181
+ {
182
+ flat: false,
183
+ disabled: false,
184
+ class: [
185
+ "es:bg-white",
186
+ "es:bg-linear-to-b es:from-secondary-100/0 es:to-secondary-100/50 es:from-25%",
187
+ "es:hover:from-surface-100/0 es:hover:to-surface-100/50",
188
+ "es:inset-ring-secondary-400/50 es:hover:inset-ring-surface-300 es:focus:inset-ring-surface-400",
189
+ "es:inset-shadow-sm es:inset-shadow-secondary-100/50",
190
+ "es:hover:placeholder:text-surface-400",
191
+ "es:placeholder:text-secondary-400",
192
+ "es:shadow-xs es:shadow-black/5"
193
+ ]
194
+ },
195
+ {
196
+ flat: true,
197
+ disabled: false,
198
+ class: [
199
+ "es:inset-ring-secondary-100",
200
+ "es:focus:text-accent-950",
201
+ "es:placeholder:text-secondary-500/80",
202
+ "es:bg-secondary-100 es:focus:bg-surface-50",
203
+ "es:inset-ring-secondary-200/15 es:hover:inset-ring-secondary-200/65 es:focus:inset-ring-surface-200"
204
+ ]
205
+ },
206
+ { disabled: true, class: ["es:bg-secondary-50 es:inset-ring-secondary-200 es:text-secondary-400"] },
207
+ { readOnly: true, flat: false, class: ["es:bg-secondary-50 es:inset-ring-secondary-300 es:text-secondary-400"] },
208
+ { readOnly: true, flat: true, class: ["es:bg-secondary-50 es:inset-ring-secondary-300/60 es:text-secondary-400"] }
209
+ ],
210
+ defaultVariants: { disabled: false, flat: false, size: "default" }
211
+ }
212
+ );
213
+ const handleSelectionChange = (selected) => {
214
+ list.filterText = "";
215
+ if (selected === null || selected === void 0) {
216
+ onChange(null);
217
+ return;
218
+ }
219
+ const item = list.items.find((item2) => item2.value === selected);
220
+ if (!item) {
221
+ onChange(null);
222
+ return;
223
+ }
224
+ if (item && "id" in item) {
225
+ delete item.id;
226
+ }
227
+ onChange({
228
+ label: item?.label,
229
+ value: item?.value,
230
+ subtitle: item?.subtitle,
231
+ meta: item?.meta
232
+ });
233
+ };
143
234
  return /* @__PURE__ */ jsx(
144
235
  $82d7e5349645de74$export$ef9b1a59e592288f,
145
236
  {
146
237
  isDisabled: disabled,
147
- selectedKey: value?.value ?? null,
148
- onSelectionChange: (selected) => {
149
- list.filterText = "";
150
- if (selected === null || selected === void 0) {
151
- onChange(null);
152
- return;
153
- }
154
- const item = list.items.find((item2) => item2.value === selected);
155
- if (!item) {
156
- onChange(null);
157
- return;
158
- }
159
- if (item && "id" in item) {
160
- delete item.id;
161
- }
162
- onChange(item);
163
- },
238
+ value: value?.value ?? null,
239
+ onChange: (selected) => handleSelectionChange(selected),
164
240
  placeholder,
165
241
  ...rest,
242
+ className: clsx("es:group es:w-fill", rest?.className),
166
243
  children: /* @__PURE__ */ jsxs(
167
244
  BaseControl,
168
245
  {
@@ -177,27 +254,18 @@ const AsyncSelectNext = (props) => {
177
254
  /* @__PURE__ */ jsxs(
178
255
  "div",
179
256
  {
180
- className: clsx(
181
- "es:relative es:flex es:items-center es:gap-1 es:px-1.5 es:focus-visible:outline-hidden es:focus-visible:ring-2 es:focus-visible:ring-accent-500/50",
182
- "es:h-9 es:rounded-10 es:border es:border-secondary-300 es:bg-white es:text-sm es:shadow-sm es:transition",
183
- "es:inset-ring es:inset-ring-secondary-100",
184
- "es:any-focus:outline-hidden",
185
- !noMinWidth && "es:min-w-48",
186
- !inline && "es:w-full",
187
- disabled && "es:select-none es:shadow-none!",
188
- "es:has-[[aria-haspopup=listbox][data-focus-visible=true],[aria-autocomplete=list][data-focus-visible=true]]:border-accent-500 es:has-[[aria-haspopup=listbox][data-focus-visible=true],[aria-autocomplete=list][data-focus-visible=true]]:ring-2 es:has-[[aria-haspopup=listbox][data-focus-visible=true],[aria-autocomplete=list][data-focus-visible=true]]:ring-accent-500/50",
189
- className
190
- ),
257
+ className: selectClass({ disabled, flat, size }),
191
258
  ref,
192
259
  children: [
193
260
  /* @__PURE__ */ jsxs($d2b4bc8c273e7be6$export$353f5b6fc5456de1, { className: "es:any-focus:outline-hidden es:text-start es:size-full es:inline-block es:group es:overflow-x-clip", children: [
194
- /* @__PURE__ */ jsx($82d7e5349645de74$export$e288731fd71264f0, { children: ({ selectedItem }) => {
195
- if (!value?.value) {
196
- return /* @__PURE__ */ jsx("span", { className: "es:pointer-events-none es:pr-6 es:text-sm es:text-secondary-500", children: placeholder });
197
- }
198
- if (customValueDisplay) {
261
+ /* @__PURE__ */ jsx($82d7e5349645de74$export$e288731fd71264f0, { children: ({ isPlaceholder, selectedItems }) => {
262
+ const [selectedItem] = selectedItems;
263
+ if (!isPlaceholder && selectedItem && customValueDisplay) {
199
264
  return customValueDisplay(selectedItem);
200
265
  }
266
+ if (!selectedItem) {
267
+ return /* @__PURE__ */ jsx("span", { className: "es:select-none es:pointer-events-none es:text-sm es:text-surface-500", children: placeholder });
268
+ }
201
269
  let icon2 = getIcon ? getIcon(selectedItem) : selectedItem?.icon ?? null;
202
270
  if (typeof selectedItem?.icon === "string") {
203
271
  icon2 = icons?.[selectedItem.icon] ?? null;
@@ -206,21 +274,23 @@ const AsyncSelectNext = (props) => {
206
274
  RichLabel,
207
275
  {
208
276
  icon: icon2,
209
- label: /* @__PURE__ */ jsx("span", { className: "es:line-clamp-1", children: selectedItem?.label }),
210
- subtitle: /* @__PURE__ */ jsx("span", { className: "es:line-clamp-1", children: selectedItem?.subtitle }),
211
- className: clsx("es:pr-6 es:grow es:w-full", disabled && "es:grayscale es:pointer-events-none"),
212
- iconClassName: "es:pointer-events-none es:select-none"
277
+ label: selectedItem?.label,
278
+ subtitle: selectedItem?.subtitle,
279
+ className: clsx("es:grow es:w-full", disabled && "es:grayscale es:pointer-events-none"),
280
+ iconClassName: "es:pointer-events-none es:select-none",
281
+ labelClassName: "es:line-clamp-1",
282
+ subtitleClassName: "es:line-clamp-1"
213
283
  }
214
284
  );
215
285
  } }),
216
286
  /* @__PURE__ */ jsxs(
217
287
  "div",
218
288
  {
219
- className: clsx("es:absolute es:bottom-0 es:right-1 es:top-0 es:my-auto es:flex es:items-center", disabled ? "es:text-secondary-300" : "es:text-secondary-500"),
289
+ className: clsx("es:absolute es:bottom-0 es:right-3 es:top-0 es:my-auto es:flex es:items-center", disabled ? "es:text-secondary-300" : "es:text-secondary-500"),
220
290
  "aria-hidden": "true",
221
291
  children: [
222
- !customDropdownArrow && cloneElement(icons.dropdownCaretAlt, {
223
- className: "es:w-4 es:group-aria-expanded:-scale-y-100 es:transition-transform es:duration-200"
292
+ !customDropdownArrow && cloneElement(icons.dropdownCaret, {
293
+ className: "es:w-4 es:stroke-[1.2] es:group-aria-expanded:-scale-y-100 es:transition-transform es:duration-200"
224
294
  }),
225
295
  customDropdownArrow && /* @__PURE__ */ jsx(
226
296
  "div",
@@ -242,15 +312,27 @@ const AsyncSelectNext = (props) => {
242
312
  $07b14b47974efb58$export$5b6b19405a83ff9d,
243
313
  {
244
314
  className: ({ isEntering, isExiting }) => clsx(
245
- "es:flex es:w-76 es:min-w-9 es:max-w-76 es:flex-col es:overflow-hidden es:rounded-2xl es:border es:border-secondary-200 es:bg-white es:text-sm es:shadow-xl es:inset-ring es:inset-ring-secondary-100",
246
- "es:any-focus:outline-hidden",
247
- "es:motion-safe:motion-duration-200 es:motion-safe:motion-ease-spring-bouncy",
315
+ "es:w-(--trigger-width) es:min-w-72",
316
+ "es:outline-hidden",
317
+ "es:rounded-t-3xl",
318
+ "es:overflow-clip es:grid es:grid-cols-1",
319
+ "es:grid-rows-[auto_minmax(0,1fr)]",
320
+ "es:has-last-selected:rounded-b-20!",
321
+ "es:inset-ring es:inset-ring-surface-500/10",
322
+ "es:inset-shadow-sm es:inset-shadow-white/30",
323
+ !list?.items?.length ? "es:bg-surface-50/50" : "es:bg-surface-300/50",
324
+ !list?.items?.length ? "es:backdrop-blur-sm" : "es:backdrop-blur-md",
325
+ !list?.items?.length ? "es:backdrop-brightness-105" : "es:backdrop-brightness-110",
326
+ list.isLoading || !list?.items?.length ? "es:rounded-b-3xl" : "es:rounded-b-xl",
327
+ "es:backdrop-saturate-125",
328
+ "es:shadow-lg es:shadow-black/10",
329
+ "es:transition-plus",
330
+ "es:motion-duration-300 es:motion-ease-spring-bouncy",
248
331
  "es:placement-bottom:origin-top-left es:placement-top:origin-bottom-left",
249
- "es:placement-left:origin-right es:placement-right:origin-left",
250
- isEntering && "es:motion-safe:motion-scale-in-95 es:motion-opacity-in-0",
251
- isEntering && "es:motion-safe:placement-top:motion-translate-y-in-[5%] es:motion-safe:placement-bottom:motion-translate-y-in-[-5%] es:motion-safe:placement-left:motion-translate-x-in-[5%] es:motion-safe:placement-right:motion-translate-x-in-[-5%]",
252
- isExiting && "es:motion-safe:motion-scale-out-95 es:motion-opacity-out-0",
253
- isExiting && "es:motion-safe:placement-top:motion-translate-y-out-[5%] es:motion-safe:placement-bottom:motion-translate-y-out-[-5%] es:motion-safe:placement-left:motion-translate-x-out-[5%] es:motion-safe:placement-right:motion-translate-x-out-[-5%]"
332
+ isEntering && "es:motion-scale-x-in-95 es:motion-scale-y-in-85 es:motion-opacity-in-0 es:motion-blur-in-[2px]",
333
+ isEntering && "es:placement-top:motion-translate-y-in-[0.5rem] es:placement-bottom:motion-translate-y-in-[-0.5rem]",
334
+ isExiting && "es:motion-scale-x-out-95 es:motion-scale-y-out-85 es:motion-opacity-out-0 es:motion-blur-out-xs",
335
+ isExiting && "es:placement-top:motion-translate-y-out-[0.5rem] es:placement-bottom:motion-translate-y-out-[-0.5rem]"
254
336
  ),
255
337
  placement: "bottom left",
256
338
  maxHeight: 300,
@@ -265,14 +347,19 @@ const AsyncSelectNext = (props) => {
265
347
  $440f4836bcb56932$export$b94867ecbd698f21,
266
348
  {
267
349
  "aria-label": __("Search", "eightshift-ui-components"),
268
- className: "es:flex es:items-center es:bg-secondary-100 es:m-2 es:rounded-lg es:relative es:placeholder:text-secondary-500",
269
- autoFocus: true,
350
+ className: "es:flex es:items-center es:relative",
270
351
  children: [
271
352
  /* @__PURE__ */ jsx(
272
353
  $3985021b0ad6602f$export$f5b8910cec6cf069,
273
354
  {
274
355
  placeholder: __("Search...", "eightshift-ui-components"),
275
- className: "es:peer es:size-full es:h-9 es:outline-hidden es:shadow-none es:px-2.5 es:text-sm es:py-0 es:[&::-webkit-search-cancel-button]:hidden"
356
+ className: clsx(
357
+ "es:peer es:size-full es:h-9.5 es:outline-hidden es:pl-3.5 es:pr-9 es:shadow-none es:text-13 es:placeholder:text-surface-500 es:[&::-webkit-search-cancel-button]:hidden",
358
+ "es:bg-accent-900/8 es:m-1.5 es:rounded-3xl es:border-none",
359
+ "es:inset-ring es:inset-ring-accent-950/7 es:focus:inset-ring-accent-950/20",
360
+ "es:text-accent-950 es:placeholder:text-accent-700/50",
361
+ "es:transition"
362
+ )
276
363
  }
277
364
  ),
278
365
  /* @__PURE__ */ jsx(
@@ -280,8 +367,8 @@ const AsyncSelectNext = (props) => {
280
367
  {
281
368
  "aria-label": __("Clear", "eightshift-ui-components"),
282
369
  className: clsx(
283
- "es:absolute es:right-2 es:top-0 es:bottom-0 es:my-auto",
284
- "es:flex es:size-6 es:items-center es:justify-center es:rounded es:text-sm es:text-secondary-600 es:transition es:hover:bg-red-50 es:hover:text-red-900 es:any-focus:outline-hidden es:focus:ring-2 es:focus:ring-accent-500/50 es:disabled:text-secondary-300 es:cursor-pointer",
370
+ "es:absolute es:right-3 es:top-0 es:bottom-0 es:my-auto es:border-none es:bg-transparent",
371
+ "es:flex es:size-7 es:items-center es:justify-center es:rounded-3xl es:text-sm es:text-surface-700 es:transition es:hover:bg-accent-50 es:hover:text-accent-800 es:any-focus:outline-hidden es:focus:ring-2 es:focus:ring-accent-500/50 es:disabled:text-secondary-300 es:cursor-pointer",
285
372
  "es:peer-placeholder-shown:opacity-0"
286
373
  ),
287
374
  children: icons.clearAlt
@@ -290,13 +377,17 @@ const AsyncSelectNext = (props) => {
290
377
  ]
291
378
  }
292
379
  ),
293
- /* @__PURE__ */ jsx("div", { className: "es:w-full es:h-px es:bg-secondary-200 es:shrink-0" }),
294
- list.isLoading && /* @__PURE__ */ jsx("div", { className: "es:p-3 es:min-h-16 es:flex es:items-center es:justify-center", children: cloneElement(icons.loader, { className: "es:text-accent-600! es:size-5 es:motion-preset-spin es:motion-duration-1500" }) }),
380
+ list.isLoading && /* @__PURE__ */ jsx("div", { className: "es:p-3 es:min-h-16 es:flex es:items-center es:justify-center", children: /* @__PURE__ */ jsx(Spinner, {}) }),
295
381
  /* @__PURE__ */ jsx(
296
382
  $eed445e0843c11d0$export$41f133550aa26f48,
297
383
  {
298
- className: clsx("es:space-y-0.5 es:p-1 es:any-focus:outline-hidden es:min-h-16", list.isLoading && "es:hidden", list?.items?.length > 0 && "es:overflow-y-auto"),
384
+ className: clsx("es:space-y-0.75 es:p-1.5 es:pt-0 es:any-focus:outline-hidden es:h-full es:overflow-y-auto es:rounded-t-xl", list?.isLoading && "es:hidden"),
299
385
  items: list.items,
386
+ selectedKeys: list.selectedKeys,
387
+ onSelectionChange: (selected) => {
388
+ list.setSelectedKeys(selected);
389
+ handleSelectionChange(selected);
390
+ },
300
391
  renderEmptyState: () => /* @__PURE__ */ jsx(
301
392
  RichLabel,
302
393
  {
@@ -318,6 +409,7 @@ const AsyncSelectNext = (props) => {
318
409
  {
319
410
  id: item?.value,
320
411
  className: item?.className,
412
+ selectIndicator: true,
321
413
  children: [
322
414
  customMenuOption && customMenuOption(item),
323
415
  !customMenuOption && /* @__PURE__ */ jsx(
@@ -326,6 +418,8 @@ const AsyncSelectNext = (props) => {
326
418
  icon: icon2,
327
419
  label: item?.label,
328
420
  subtitle: item?.subtitle,
421
+ labelClassName: "es:line-clamp-1",
422
+ subtitleClassName: "es:line-clamp-1",
329
423
  noColor: true
330
424
  }
331
425
  )
@@ -346,23 +440,6 @@ const AsyncSelectNext = (props) => {
346
440
  }
347
441
  );
348
442
  };
349
- const SelectClearButton = () => {
350
- const state = useContext($82d7e5349645de74$export$ef445b55be0601bd);
351
- const isEmpty = state?.selectedKey === null;
352
- return /* @__PURE__ */ jsx(
353
- $d2b4bc8c273e7be6$export$353f5b6fc5456de1,
354
- {
355
- "aria-label": __("Clear value", "eightshift-ui-components"),
356
- className: clsx(
357
- "es:mr-6 es:flex es:h-6 es:w-8 es:items-center es:justify-center es:rounded es:text-sm es:text-secondary-600 es:transition es:hover:bg-red-50 es:hover:text-red-900 es:any-focus:outline-hidden es:focus:ring-2 es:focus:ring-accent-500/50 es:disabled:text-secondary-300 es:cursor-pointer",
358
- isEmpty ? "es:hidden" : "es:flex"
359
- ),
360
- onPress: () => state?.setSelectedKey(null),
361
- slot: null,
362
- children: icons.clearAlt
363
- }
364
- );
365
- };
366
443
  export {
367
- AsyncSelectNext
444
+ AsyncSelect
368
445
  };