@eightshift/ui-components 6.0.4 → 6.0.6

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.
@@ -2496,6 +2496,11 @@ input[data-rac]::-webkit-search-cancel-button {
2496
2496
  translate: var(--tw-translate-x) var(--tw-translate-y);
2497
2497
  }
2498
2498
 
2499
+ :is(body, body #wpwrap) .es\:-translate-y-4 {
2500
+ --tw-translate-y: calc(var(--es-spacing) * -4);
2501
+ translate: var(--tw-translate-x) var(--tw-translate-y);
2502
+ }
2503
+
2499
2504
  :is(body, body #wpwrap) .es\:translate-y-0 {
2500
2505
  --tw-translate-y: calc(var(--es-spacing) * 0);
2501
2506
  translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -2766,10 +2771,6 @@ input[data-rac]::-webkit-search-cancel-button {
2766
2771
  cursor: not-allowed;
2767
2772
  }
2768
2773
 
2769
- :is(body, body #wpwrap) .es\:cursor-pointer {
2770
- cursor: pointer;
2771
- }
2772
-
2773
2774
  :is(body, body #wpwrap) .es\:cursor-wait {
2774
2775
  cursor: wait;
2775
2776
  }
@@ -3166,6 +3167,10 @@ input[data-rac]::-webkit-search-cancel-button {
3166
3167
  border-radius: var(--es-radius-18);
3167
3168
  }
3168
3169
 
3170
+ :is(body, body #wpwrap) .es\:rounded-20\! {
3171
+ border-radius: var(--es-radius-20) !important;
3172
+ }
3173
+
3169
3174
  :is(body, body #wpwrap) .es\:rounded-28 {
3170
3175
  border-radius: var(--es-radius-28);
3171
3176
  }
@@ -7864,10 +7869,6 @@ input[data-rac]::-webkit-search-cancel-button {
7864
7869
  border-bottom-left-radius: var(--es-radius-md);
7865
7870
  }
7866
7871
 
7867
- :is(body, body #wpwrap) .es\:not-disabled\:cursor-pointer:not(:is(:disabled, [data-rac][data-disabled])) {
7868
- cursor: pointer;
7869
- }
7870
-
7871
7872
  :is(body, body #wpwrap) .es\:not-has-any-icon\:aspect-5\/3:not(:has(* svg)) {
7872
7873
  aspect-ratio: 5 / 3;
7873
7874
  }
@@ -2464,6 +2464,11 @@ button, input:where([type="button"], [type="reset"], [type="submit"]) {
2464
2464
  translate: var(--tw-translate-x) var(--tw-translate-y);
2465
2465
  }
2466
2466
 
2467
+ :is(body, #wpwrap #editor) .es\:-translate-y-4 {
2468
+ --tw-translate-y: calc(var(--es-spacing) * -4);
2469
+ translate: var(--tw-translate-x) var(--tw-translate-y);
2470
+ }
2471
+
2467
2472
  :is(body, #wpwrap #editor) .es\:translate-y-0 {
2468
2473
  --tw-translate-y: calc(var(--es-spacing) * 0);
2469
2474
  translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -2734,10 +2739,6 @@ button, input:where([type="button"], [type="reset"], [type="submit"]) {
2734
2739
  cursor: not-allowed;
2735
2740
  }
2736
2741
 
2737
- :is(body, #wpwrap #editor) .es\:cursor-pointer {
2738
- cursor: pointer;
2739
- }
2740
-
2741
2742
  :is(body, #wpwrap #editor) .es\:cursor-wait {
2742
2743
  cursor: wait;
2743
2744
  }
@@ -3134,6 +3135,10 @@ button, input:where([type="button"], [type="reset"], [type="submit"]) {
3134
3135
  border-radius: var(--es-radius-18);
3135
3136
  }
3136
3137
 
3138
+ :is(body, #wpwrap #editor) .es\:rounded-20\! {
3139
+ border-radius: var(--es-radius-20) !important;
3140
+ }
3141
+
3137
3142
  :is(body, #wpwrap #editor) .es\:rounded-28 {
3138
3143
  border-radius: var(--es-radius-28);
3139
3144
  }
@@ -7832,10 +7837,6 @@ button, input:where([type="button"], [type="reset"], [type="submit"]) {
7832
7837
  border-bottom-left-radius: var(--es-radius-md);
7833
7838
  }
7834
7839
 
7835
- :is(body, #wpwrap #editor) .es\:not-disabled\:cursor-pointer:not(:is(:disabled, [data-rac][data-disabled])) {
7836
- cursor: pointer;
7837
- }
7838
-
7839
7840
  :is(body, #wpwrap #editor) .es\:not-has-any-icon\:aspect-5\/3:not(:has(* svg)) {
7840
7841
  aspect-ratio: 5 / 3;
7841
7842
  }
@@ -2949,6 +2949,11 @@ input[data-rac]::-webkit-search-cancel-button {
2949
2949
  translate: var(--tw-translate-x) var(--tw-translate-y);
2950
2950
  }
2951
2951
 
2952
+ .es\:-translate-y-4 {
2953
+ --tw-translate-y: calc(var(--es-spacing) * -4);
2954
+ translate: var(--tw-translate-x) var(--tw-translate-y);
2955
+ }
2956
+
2952
2957
  .es\:translate-y-0 {
2953
2958
  --tw-translate-y: calc(var(--es-spacing) * 0);
2954
2959
  translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -3219,10 +3224,6 @@ input[data-rac]::-webkit-search-cancel-button {
3219
3224
  cursor: not-allowed;
3220
3225
  }
3221
3226
 
3222
- .es\:cursor-pointer {
3223
- cursor: pointer;
3224
- }
3225
-
3226
3227
  .es\:cursor-wait {
3227
3228
  cursor: wait;
3228
3229
  }
@@ -3619,6 +3620,10 @@ input[data-rac]::-webkit-search-cancel-button {
3619
3620
  border-radius: var(--es-radius-18);
3620
3621
  }
3621
3622
 
3623
+ .es\:rounded-20\! {
3624
+ border-radius: var(--es-radius-20) !important;
3625
+ }
3626
+
3622
3627
  .es\:rounded-28 {
3623
3628
  border-radius: var(--es-radius-28);
3624
3629
  }
@@ -8317,10 +8322,6 @@ input[data-rac]::-webkit-search-cancel-button {
8317
8322
  border-bottom-left-radius: var(--es-radius-md);
8318
8323
  }
8319
8324
 
8320
- .es\:not-disabled\:cursor-pointer:not(:is(:disabled, [data-rac][data-disabled])) {
8321
- cursor: pointer;
8322
- }
8323
-
8324
8325
  .es\:not-has-any-icon\:aspect-5\/3:not(:has(* svg)) {
8325
8326
  aspect-ratio: 5 / 3;
8326
8327
  }
@@ -247,7 +247,7 @@ const GradientEditor = (props) => {
247
247
  "button",
248
248
  {
249
249
  className: clsx(
250
- "es:shadow-sm, es:mx-auto es:block es:h-40 es:cursor-pointer es:rounded-lg es:border es:border-secondary-300 es:transition-[width] es:duration-300 es:ease-spring-snappy",
250
+ "es:shadow-sm, es:mx-auto es:block es:h-40 es:rounded-lg es:border es:border-secondary-300 es:transition-[width] es:duration-300 es:ease-spring-snappy",
251
251
  "es:mb-2",
252
252
  squarePreview ? "es:w-40" : "es:w-full"
253
253
  ),
@@ -26,7 +26,7 @@ const DraggableHandle = (props) => {
26
26
  "div",
27
27
  {
28
28
  className: clsx(
29
- "es:flex es:h-5 es:w-4 es:cursor-pointer es:items-center es:justify-center es:rounded-sm es:hover:rounded-md es:inset-ring es:inset-ring-surface-400/10 es:bg-surface-50 es:text-surface-500/80 es:transition-plus",
29
+ "es:flex es:h-5 es:w-4 es:items-center es:justify-center es:rounded-sm es:hover:rounded-md es:inset-ring es:inset-ring-surface-400/10 es:bg-surface-50 es:text-surface-500/80 es:transition-plus",
30
30
  "es:shadow-2xs es:shadow-surface-900/2",
31
31
  "es:icon:size-4 es:icon:shrink-0",
32
32
  "es:active:inset-ring-accent-500/30 es:active:bg-surface-100 es:active:text-accent-500 es:active:rounded-xl",
@@ -37,7 +37,7 @@ const DraggableListItem = (props) => {
37
37
  icon,
38
38
  label,
39
39
  subtitle,
40
- className: clsx("es:mr-auto", labelContainerClassName),
40
+ className: clsx("es:mr-auto es:min-h-9", labelContainerClassName),
41
41
  iconClassName,
42
42
  labelClassName,
43
43
  subtitleClassName,
@@ -72,7 +72,7 @@ const DraggableListItemHandle = (props) => {
72
72
  return /* @__PURE__ */ jsx(
73
73
  "button",
74
74
  {
75
- className: className ?? 'es:relative es:h-6 es:w-2 es:cursor-pointer es:items-center es:justify-center es:self-center es:rounded es:border es:border-secondary-300 es:bg-secondary-50 es:transition es:after:absolute es:after:inset-0 es:after:m-auto es:after:h-4 es:after:w-px es:after:bg-secondary-200 es:after:transition es:after:content-[""] es:hover:border-accent-500 es:hover:bg-accent-400 es:hover:after:bg-accent-500',
75
+ className: className ?? 'es:relative es:h-6 es:w-2 es:items-center es:justify-center es:self-center es:rounded es:border es:border-secondary-300 es:bg-secondary-50 es:transition es:after:absolute es:after:inset-0 es:after:m-auto es:after:h-4 es:after:w-px es:after:bg-secondary-200 es:after:transition es:after:content-[""] es:hover:border-accent-500 es:hover:bg-accent-400 es:hover:after:bg-accent-500',
76
76
  ...rest,
77
77
  "data-movable-handle": true,
78
78
  tabIndex: -1,
@@ -81,7 +81,7 @@ const DraggableList = (props) => {
81
81
  console.warn(__("DraggableList: 'items' are not an array or are undefined!", "eightshift-ui-components"));
82
82
  }
83
83
  const items = fixIds(rawItems ?? [], itemIdBase);
84
- if (hidden) {
84
+ if (hidden || !items?.length) {
85
85
  return null;
86
86
  }
87
87
  return /* @__PURE__ */ jsx(
@@ -1678,7 +1678,7 @@ const LinkInput = (props) => {
1678
1678
  {
1679
1679
  className: clsx(
1680
1680
  "es:opacity-0 es:group-hover:opacity-100 es:group-focus-within:opacity-100 es:focus-visible:opacity-100",
1681
- "es:flex es:size-8 es:items-center es:justify-center es:rounded-md es:text-secondary-600 es:backdrop-blur es:transition es:cursor-pointer",
1681
+ "es:flex es:size-8 es:items-center es:justify-center es:rounded-md es:text-secondary-600 es:backdrop-blur es:transition",
1682
1682
  "es:hover:bg-red-600/5 es:hover:text-red-600",
1683
1683
  "es:icon:size-6"
1684
1684
  ),
@@ -99,29 +99,32 @@ const FilePickerShell = (props) => {
99
99
  errorClassName: "es:aspect-3-2 es:rounded-2xl es:bg-linear-to-br es:from-white es:to-secondary-50 es:border es:border-dashed es:border-secondary-200",
100
100
  imageAnalysisSettings: { yFrom: 0.25, yTo: 0.75 },
101
101
  ...rest,
102
- children: ({ image, dominantColors, isDark, hasAnalysed, isTransparent }) => /* @__PURE__ */ jsxs(
102
+ children: ({ image, dominantColors, isDark, hasAnalysed, isTransparent, hasError, errorBadge }) => /* @__PURE__ */ jsxs(
103
103
  "div",
104
104
  {
105
105
  className: clsx(
106
106
  "es:border es:justify-between es:rounded-2xl es:isolate es:relative es:flex-col es:gap-y-2 es:grid es:grid-cols-1 es:overflow-clip es:aspect-3-2 es:transition",
107
- hasAnalysed ? "es:border-secondary-200" : "es:border-secondary-200/0",
108
- hasAnalysed && !isTransparent && "es:group es:grid-rows-1",
109
- hasAnalysed && isTransparent && "es:p-2 es:grid-rows-[minmax(0,1fr)_auto] es:h-fit",
107
+ !hasError && hasAnalysed ? "es:border-secondary-200" : "es:border-secondary-200/0",
108
+ !hasError && hasAnalysed && !isTransparent && "es:group es:grid-rows-1",
109
+ !hasError && hasAnalysed && isTransparent && "es:p-2 es:grid-rows-[minmax(0,1fr)_auto] es:h-fit",
110
110
  !hasAnalysed && "es:shimmer-dark es:bg-secondary-50",
111
+ hasError && "es:flex es:items-center es:justify-center",
111
112
  className
112
113
  ),
113
- style: hasAnalysed && isTransparent ? { backgroundColor: `color-mix(in srgb, ${dominantColors[0]?.color || "#ffffff"} ${dominantColors[0]?.isDark ? 10 : 80}%, #ffffff)` } : {},
114
+ style: !hasError && hasAnalysed && isTransparent ? { backgroundColor: `color-mix(in srgb, ${dominantColors[0]?.color || "#ffffff"} ${dominantColors[0]?.isDark ? 10 : 80}%, #ffffff)` } : {},
114
115
  children: [
115
116
  image,
116
- hasAnalysed && children && /* @__PURE__ */ jsx(
117
+ hasError && errorBadge,
118
+ children && /* @__PURE__ */ jsx(
117
119
  "div",
118
120
  {
119
121
  className: clsx(
120
122
  "es:flex es:items-center-safe es:gap-0.75",
121
123
  "es-button-group-h",
122
- !isTransparent && "es:absolute es:bottom-2 es:left-2 es:right-2 es:translate-y-[125%] es:group-hover:translate-y-0 es:has-aria-expanded:translate-y-0 es:has-focus-visible:translate-y-0 es:transition-transform es:ease-spring-smooth"
124
+ !hasError && !isTransparent && "es:absolute es:bottom-2 es:left-2 es:right-2 es:translate-y-[125%] es:group-hover:translate-y-0 es:has-aria-expanded:translate-y-0 es:has-focus-visible:translate-y-0 es:transition-transform es:ease-spring-smooth",
125
+ hasError && "es:absolute es:bottom-2 es:left-2 es:right-2"
123
126
  ),
124
- children: typeof children === "function" ? children({ dominantColors, isDark, isTransparent }) : children
127
+ children: typeof children === "function" ? children({ dominantColors, isDark, isTransparent, hasError }) : children
125
128
  }
126
129
  )
127
130
  ]
@@ -38,8 +38,7 @@ const FilePlaceholder = (props) => {
38
38
  "es:inset-ring es:inset-ring-surface-300/40",
39
39
  "es:inset-shadow-xs es:inset-shadow-surface-50/50",
40
40
  "es:text-surface-800",
41
- !flat && "es:shadow-xs es:shadow-black/5",
42
- "es:cursor-pointer"
41
+ !flat && "es:shadow-xs es:shadow-black/5"
43
42
  ],
44
43
  !fileName && "es:bg-secondary-100 es:text-secondary-500"
45
44
  ),
@@ -162,7 +162,7 @@ const AsyncMultiSelect = (props) => {
162
162
  return;
163
163
  }
164
164
  const selectedValues = [...selected].map((item) => {
165
- const option = list.items.find((option2) => option2.value === item) || value.find((option2) => option2.value === item);
165
+ const option = list?.items?.find((option2) => option2.value === item) || value.find((option2) => option2.value === item);
166
166
  if (!option) {
167
167
  return null;
168
168
  }
@@ -181,6 +181,19 @@ const AsyncMultiSelect = (props) => {
181
181
  };
182
182
  const ref = useRef();
183
183
  const currentValueKeys = value?.map((item) => item?.value ?? item);
184
+ const buttonClass = cva("es:any-focus:outline-hidden es:text-start es:size-full es:inline-block es:group es:overflow-x-clip", {
185
+ variants: {
186
+ size: {
187
+ small: ["es:min-h-8", "es:px-2.5"],
188
+ medium: ["es:min-h-9", "es:px-3"],
189
+ default: ["es:min-h-10", "es:px-3"],
190
+ large: ["es:min-h-12", "es:px-4"]
191
+ }
192
+ },
193
+ defaultVariants: {
194
+ size: "default"
195
+ }
196
+ });
184
197
  const selectClass = cva(
185
198
  [
186
199
  "es:relative",
@@ -200,12 +213,6 @@ const AsyncMultiSelect = (props) => {
200
213
  ],
201
214
  {
202
215
  variants: {
203
- size: {
204
- small: ["es:min-h-8", "es:px-2.5"],
205
- medium: ["es:min-h-9", "es:px-3"],
206
- default: ["es:min-h-10", "es:px-3"],
207
- large: ["es:min-h-12", "es:px-4"]
208
- },
209
216
  disabled: {
210
217
  false: "es:selection:bg-surface-100 es:selection:text-accent-800",
211
218
  true: "es:selection:bg-secondary-200 es:selection:text-secondary-600"
@@ -252,7 +259,7 @@ const AsyncMultiSelect = (props) => {
252
259
  {
253
260
  selectionMode: "multiple",
254
261
  isDisabled: disabled,
255
- value: currentValueKeys,
262
+ value: currentValueKeys ?? [],
256
263
  onChange: (selected) => handleSelectionChange(selected),
257
264
  placeholder,
258
265
  ...rest,
@@ -274,7 +281,7 @@ const AsyncMultiSelect = (props) => {
274
281
  className: selectClass({ disabled, flat, size }),
275
282
  ref,
276
283
  children: [
277
- /* @__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: [
284
+ /* @__PURE__ */ jsxs($d2b4bc8c273e7be6$export$353f5b6fc5456de1, { className: buttonClass({ size }), children: [
278
285
  /* @__PURE__ */ jsx($82d7e5349645de74$export$e288731fd71264f0, { className: "es:select-none es:pointer-events-none", children: ({ isPlaceholder, selectedItems }) => {
279
286
  const [selectedItem] = selectedItems;
280
287
  if (!currentValueKeys?.length || isPlaceholder) {
@@ -347,14 +354,14 @@ const AsyncMultiSelect = (props) => {
347
354
  slot: null
348
355
  },
349
356
  className: "es:grid es:grid-cols-1 es:grid-rows-[auto_minmax(0,1fr)] es:p-0!",
350
- wrapperClassName: "es:w-72 es:px-1.5 es:h-fit es:from-surface-300/35 es:to-surface-300/35 es:overflow-clip",
351
- hidden: noReorder || disabled || value?.length < 2,
357
+ wrapperClassName: "es:w-72 es:px-1.5 es:h-fit es:from-surface-300/35 es:to-surface-300/35 es:overflow-clip es:rounded-20!",
358
+ hidden: noReorder || disabled || (value ?? [])?.length < 2,
352
359
  children: [
353
- /* @__PURE__ */ jsx("span", { className: 'es:text-lg es:mx-auto es:my-1 es:font-variation-["wdth"_140,"wght"_320] es:text-surface-600', children: __("Item order", "eightshift-ui-components") }),
360
+ /* @__PURE__ */ jsx("span", { className: 'es:text-base es:mx-auto es:my-1 es:font-variation-["wdth"_140,"wght"_320] es:text-surface-600', children: __("Item order", "eightshift-ui-components") }),
354
361
  /* @__PURE__ */ jsx(
355
362
  DraggableList,
356
363
  {
357
- items: value,
364
+ items: value ?? [],
358
365
  onChange: (value2) => {
359
366
  handleSelectionChange(new Set(value2?.map((item) => item?.value ?? item)));
360
367
  },
@@ -376,7 +383,7 @@ const AsyncMultiSelect = (props) => {
376
383
  iconClassName: "es:pointer-events-none es:select-none",
377
384
  labelClassName: "es:line-clamp-1",
378
385
  subtitleClassName: "es:line-clamp-1",
379
- className: clsx("es:min-h-8 es:flex es:items-center es:justify-between", realItem?.icon ? "es:pl-1" : "es:pl-2")
386
+ className: clsx("es:flex es:items-center es:justify-between", realItem?.icon ? "es:pl-1" : "es:pl-2")
380
387
  }
381
388
  );
382
389
  }
@@ -447,7 +454,7 @@ const AsyncMultiSelect = (props) => {
447
454
  "aria-label": __("Clear", "eightshift-ui-components"),
448
455
  className: clsx(
449
456
  "es:absolute es:right-3 es:top-0 es:bottom-0 es:my-auto es:border-none es:bg-transparent",
450
- "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",
457
+ "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",
451
458
  "es:peer-placeholder-shown:opacity-0"
452
459
  ),
453
460
  children: icons.clearAlt
@@ -461,7 +468,7 @@ const AsyncMultiSelect = (props) => {
461
468
  $eed445e0843c11d0$export$41f133550aa26f48,
462
469
  {
463
470
  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"),
464
- items: list.items,
471
+ items: list?.items ?? [],
465
472
  selectedKeys: list.selectedKeys,
466
473
  selectionMode: "multiple",
467
474
  selectionBehavior: "toggle",
@@ -148,6 +148,19 @@ const AsyncSelect = (props) => {
148
148
  if (hidden) {
149
149
  return null;
150
150
  }
151
+ const buttonClass = cva("es:any-focus:outline-hidden es:text-start es:size-full es:inline-block es:group es:overflow-x-clip", {
152
+ variants: {
153
+ size: {
154
+ small: ["es:min-h-8", "es:px-2.5"],
155
+ medium: ["es:min-h-9", "es:px-3"],
156
+ default: ["es:min-h-10", "es:px-3"],
157
+ large: ["es:min-h-12", "es:px-4"]
158
+ }
159
+ },
160
+ defaultVariants: {
161
+ size: "default"
162
+ }
163
+ });
151
164
  const selectClass = cva(
152
165
  [
153
166
  "es:relative",
@@ -167,12 +180,6 @@ const AsyncSelect = (props) => {
167
180
  ],
168
181
  {
169
182
  variants: {
170
- size: {
171
- small: ["es:min-h-8", "es:px-2.5"],
172
- medium: ["es:min-h-9", "es:px-3"],
173
- default: ["es:min-h-10", "es:px-3"],
174
- large: ["es:min-h-12", "es:px-4"]
175
- },
176
183
  disabled: {
177
184
  false: "es:selection:bg-surface-100 es:selection:text-accent-800",
178
185
  true: "es:selection:bg-secondary-200 es:selection:text-secondary-600"
@@ -258,7 +265,7 @@ const AsyncSelect = (props) => {
258
265
  className: selectClass({ disabled, flat, size }),
259
266
  ref,
260
267
  children: [
261
- /* @__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: [
268
+ /* @__PURE__ */ jsxs($d2b4bc8c273e7be6$export$353f5b6fc5456de1, { className: buttonClass({ size }), children: [
262
269
  /* @__PURE__ */ jsx($82d7e5349645de74$export$e288731fd71264f0, { children: ({ isPlaceholder, selectedItems }) => {
263
270
  const [selectedItem] = selectedItems;
264
271
  if (!isPlaceholder && selectedItem && customValueDisplay) {
@@ -369,7 +376,7 @@ const AsyncSelect = (props) => {
369
376
  "aria-label": __("Clear", "eightshift-ui-components"),
370
377
  className: clsx(
371
378
  "es:absolute es:right-3 es:top-0 es:bottom-0 es:my-auto es:border-none es:bg-transparent",
372
- "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",
379
+ "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",
373
380
  "es:peer-placeholder-shown:opacity-0"
374
381
  ),
375
382
  children: icons.clearAlt
@@ -139,6 +139,19 @@ const MultiSelect = (props) => {
139
139
  if (hidden) {
140
140
  return null;
141
141
  }
142
+ const buttonClass = cva("es:any-focus:outline-hidden es:text-start es:size-full es:inline-block es:group es:overflow-x-clip", {
143
+ variants: {
144
+ size: {
145
+ small: ["es:min-h-8", "es:px-2.5"],
146
+ medium: ["es:min-h-9", "es:px-3"],
147
+ default: ["es:min-h-10", "es:px-3"],
148
+ large: ["es:min-h-12", "es:px-4"]
149
+ }
150
+ },
151
+ defaultVariants: {
152
+ size: "default"
153
+ }
154
+ });
142
155
  const selectClass = cva(
143
156
  [
144
157
  "es:relative",
@@ -158,12 +171,6 @@ const MultiSelect = (props) => {
158
171
  ],
159
172
  {
160
173
  variants: {
161
- size: {
162
- small: ["es:min-h-8", "es:px-2.5"],
163
- medium: ["es:min-h-9", "es:px-3"],
164
- default: ["es:min-h-10", "es:px-3"],
165
- large: ["es:min-h-12", "es:px-4"]
166
- },
167
174
  disabled: {
168
175
  false: "es:selection:bg-surface-100 es:selection:text-accent-800",
169
176
  true: "es:selection:bg-secondary-200 es:selection:text-secondary-600"
@@ -229,7 +236,7 @@ const MultiSelect = (props) => {
229
236
  className: selectClass({ disabled, flat, size }),
230
237
  ref,
231
238
  children: [
232
- /* @__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: [
239
+ /* @__PURE__ */ jsxs($d2b4bc8c273e7be6$export$353f5b6fc5456de1, { className: buttonClass({ size }), children: [
233
240
  /* @__PURE__ */ jsx($82d7e5349645de74$export$e288731fd71264f0, { className: "es:select-none es:pointer-events-none", children: ({ isPlaceholder, selectedItems }) => {
234
241
  const [selectedItem] = selectedItems;
235
242
  if (!currentValueKeys?.length || isPlaceholder) {
@@ -301,14 +308,14 @@ const MultiSelect = (props) => {
301
308
  slot: null
302
309
  },
303
310
  className: "es:grid es:grid-cols-1 es:grid-rows-[auto_minmax(0,1fr)] es:p-0!",
304
- wrapperClassName: "es:w-72 es:px-1.5 es:h-fit es:from-surface-300/35 es:to-surface-300/35 es:overflow-clip",
311
+ wrapperClassName: "es:w-72 es:px-1.5 es:h-fit es:from-surface-300/35 es:to-surface-300/35 es:overflow-clip es:rounded-20!",
305
312
  hidden: noReorder || disabled || currentValue?.length < 2,
306
313
  children: [
307
- /* @__PURE__ */ jsx("span", { className: 'es:text-lg es:mx-auto es:my-1 es:font-variation-["wdth"_140,"wght"_320] es:text-surface-600', children: __("Item order", "eightshift-ui-components") }),
314
+ /* @__PURE__ */ jsx("span", { className: 'es:text-base es:mx-auto es:my-1 es:font-variation-["wdth"_140,"wght"_320] es:text-surface-600', children: __("Item order", "eightshift-ui-components") }),
308
315
  /* @__PURE__ */ jsx(
309
316
  DraggableList,
310
317
  {
311
- items: simpleValue ? value.map((item) => options.find((option) => option.value === item)) : value,
318
+ items: simpleValue ? value?.map((item) => options.find((option) => option.value === item)) ?? [] : value ?? [],
312
319
  onChange: (value2) => {
313
320
  handleSelectionChange(new Set(value2?.map((item) => item?.value ?? item)));
314
321
  },
@@ -326,7 +333,7 @@ const MultiSelect = (props) => {
326
333
  iconClassName: "es:pointer-events-none es:select-none",
327
334
  labelClassName: "es:line-clamp-1",
328
335
  subtitleClassName: "es:line-clamp-1",
329
- className: clsx("es:min-h-8 es:flex es:items-center es:justify-between", realItem?.icon ? "es:pl-1" : "es:pl-2")
336
+ className: clsx("es:min-h-9 es:flex es:items-center es:justify-between", realItem?.icon ? "es:pl-1" : "es:pl-2")
330
337
  }
331
338
  );
332
339
  }
@@ -395,7 +402,7 @@ const MultiSelect = (props) => {
395
402
  "aria-label": __("Clear", "eightshift-ui-components"),
396
403
  className: clsx(
397
404
  "es:absolute es:right-3 es:top-0 es:bottom-0 es:my-auto es:border-none es:bg-transparent",
398
- "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",
405
+ "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",
399
406
  "es:peer-placeholder-shown:opacity-0"
400
407
  ),
401
408
  children: icons.clearAlt
@@ -98,6 +98,19 @@ const Select = (props) => {
98
98
  if (hidden) {
99
99
  return null;
100
100
  }
101
+ const buttonClass = cva("es:any-focus:outline-hidden es:text-start es:size-full es:inline-block es:group es:overflow-x-clip", {
102
+ variants: {
103
+ size: {
104
+ small: ["es:min-h-8", "es:px-2.5"],
105
+ medium: ["es:min-h-9", "es:px-3"],
106
+ default: ["es:min-h-10", "es:px-3"],
107
+ large: ["es:min-h-12", "es:px-4"]
108
+ }
109
+ },
110
+ defaultVariants: {
111
+ size: "default"
112
+ }
113
+ });
101
114
  const selectClass = cva(
102
115
  [
103
116
  "es:relative",
@@ -117,12 +130,6 @@ const Select = (props) => {
117
130
  ],
118
131
  {
119
132
  variants: {
120
- size: {
121
- small: ["es:min-h-8", "es:px-2.5"],
122
- medium: ["es:min-h-9", "es:px-3"],
123
- default: ["es:min-h-10", "es:px-3"],
124
- large: ["es:min-h-12", "es:px-4"]
125
- },
126
133
  disabled: {
127
134
  false: "es:selection:bg-surface-100 es:selection:text-accent-800",
128
135
  true: "es:selection:bg-secondary-200 es:selection:text-secondary-600"
@@ -210,8 +217,8 @@ const Select = (props) => {
210
217
  className: selectClass({ disabled, flat, size }),
211
218
  ref,
212
219
  children: [
213
- /* @__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: [
214
- /* @__PURE__ */ jsx($82d7e5349645de74$export$e288731fd71264f0, { children: ({ isPlaceholder, selectedItems }) => {
220
+ /* @__PURE__ */ jsxs($d2b4bc8c273e7be6$export$353f5b6fc5456de1, { className: buttonClass({ size }), children: [
221
+ /* @__PURE__ */ jsx($82d7e5349645de74$export$e288731fd71264f0, { className: "es:pointer-events-none", children: ({ isPlaceholder, selectedItems }) => {
215
222
  const [selectedItem] = selectedItems;
216
223
  if (!isPlaceholder && currentValue && customValueDisplay) {
217
224
  return customValueDisplay(selectedItem);
@@ -316,7 +323,7 @@ const Select = (props) => {
316
323
  "aria-label": __("Clear", "eightshift-ui-components"),
317
324
  className: clsx(
318
325
  "es:absolute es:right-3 es:top-0 es:bottom-0 es:my-auto es:border-none es:bg-transparent",
319
- "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",
326
+ "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",
320
327
  "es:peer-placeholder-shown:opacity-0"
321
328
  ),
322
329
  children: icons.clearAlt
@@ -7,7 +7,7 @@ import { BaseControl } from "../base-control/base-control.js";
7
7
  import { icons } from "../../icons/icons.js";
8
8
  import { getColumnConfigOutputText } from "./utils.js";
9
9
  import { c as clsx } from "../../clsx-DgYk2OaC.js";
10
- import { A as AnimatePresence, m as motion } from "../../proxy-0B6wWuDe.js";
10
+ import { A as AnimatePresence, m as motion } from "../../proxy-DkQpcQgI.js";
11
11
  /**
12
12
  * A two-thumb slider for selecting a range of columns.
13
13
  *
@@ -6,7 +6,7 @@ import { c as clsx } from "../../clsx-DgYk2OaC.js";
6
6
  import { NumberPicker } from "../number-picker/number-picker.js";
7
7
  import { generateMarkers, generateGridTemplate } from "./utils.js";
8
8
  import { HStack } from "../layout/hstack.js";
9
- import { A as AnimatePresence, m as motion } from "../../proxy-0B6wWuDe.js";
9
+ import { A as AnimatePresence, m as motion } from "../../proxy-DkQpcQgI.js";
10
10
  /**
11
11
  * A single/multi-thumb slider component.
12
12
  *
@@ -1,4 +1,4 @@
1
- import { jsx } from "react/jsx-runtime";
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { _ as __ } from "../../default-i18n-CnQeC5Pl.js";
3
3
  import { c as clsx } from "../../clsx-DgYk2OaC.js";
4
4
  import { useState, useRef, useEffect, cloneElement } from "react";
@@ -167,7 +167,33 @@ const SmartImage = (props) => {
167
167
  if (error && renderError) {
168
168
  return renderError(error);
169
169
  } else if (error) {
170
- return /* @__PURE__ */ jsx("div", { className: clsx("es:flex es:flex-col es:gap-2 es:items-center-safe es:justify-center-safe es:p-2 es:motion-preset-fade", errorClassName), children: /* @__PURE__ */ jsx(DecorativeTooltip, { text: __("Error loading image", "eightshift-ui-components"), children: cloneElement(icons.imageError, { className: "es:text-secondary-500 es:size-8" }) }) });
170
+ return /* @__PURE__ */ jsxs(
171
+ "div",
172
+ {
173
+ className: clsx(
174
+ typeof children !== "function" && "es:flex es:flex-col es:gap-2 es:items-center-safe es:justify-center-safe es:p-2",
175
+ "es:motion-preset-fade",
176
+ errorClassName
177
+ ),
178
+ children: [
179
+ typeof children !== "function" && /* @__PURE__ */ jsx(DecorativeTooltip, { text: __("Error loading image", "eightshift-ui-components"), children: cloneElement(icons.imageError, { className: "es:text-secondary-500 es:size-8" }) }),
180
+ typeof children === "function" ? children({
181
+ image: cloneElement(imageElement, { crossOrigin: null }),
182
+ hasAnalysed: true,
183
+ isTransparent: false,
184
+ hasError: true,
185
+ errorBadge: /* @__PURE__ */ jsx(
186
+ DecorativeTooltip,
187
+ {
188
+ wrapperClassName: "es:size-8 es:-translate-y-4 es:m-auto",
189
+ text: __("Error loading image", "eightshift-ui-components"),
190
+ children: cloneElement(icons.imageError, { className: "es:text-secondary-500 es:size-8" })
191
+ }
192
+ )
193
+ }) : cloneElement(imageElement, { crossOrigin: null })
194
+ ]
195
+ }
196
+ );
171
197
  }
172
198
  if (!children) {
173
199
  return imageElement;
@@ -460,6 +460,9 @@ const $5e8ad37a45e1c704$export$3d96ec278d3efce4 = /* @__PURE__ */ $f39a9eba43920
460
460
  * @param {string} [props.className] - Classes to pass to the tabs container.
461
461
  * @param {TabsType} [props.type='underline'] - Design of the tabs.
462
462
  * @param {boolean} [props.flat] - If `true`, component will look more flat. Useful for nested layer of controls.
463
+ * @param {string} [props.defaultSelectedKey] - **(uncontrolled mode)** The initial selected tab ID.
464
+ * @param {string} [props.selectedKey] - **(controlled mode)** The selected tab ID.
465
+ * @param {Function} [props.onSelectionChange] - Handler that is called when the selection changes. `(key: string) => void`.
463
466
  * @param {boolean} [props.hidden] - If `true`, the component is not rendered.
464
467
  *
465
468
  * @returns {JSX.Element} The Tabs component.
@@ -487,6 +490,7 @@ const Tabs2 = (props) => {
487
490
  let tabPanelCounter = 1;
488
491
  let tabCounter = 1;
489
492
  const preparedChildren = Array.isArray(children) ? children : [children];
493
+ let realTabIds = preparedChildren?.[0]?.props?.children?.map((tab, i) => tab?.props?.id ?? `tab-${baseId}-${i + 1}`);
490
494
  const childrenWithIds = preparedChildren.reduce((acc, child, index) => {
491
495
  if (child.type.displayName === "TabList") {
492
496
  const childItems = Array.isArray(child?.props?.children) ? child?.props?.children : [child?.props?.children].filter(Boolean);
@@ -504,7 +508,7 @@ const Tabs2 = (props) => {
504
508
  },
505
509
  childItems?.map(
506
510
  (innerChild, i) => cloneElement(innerChild, {
507
- id: `tab-${baseId}-${i + 1}`,
511
+ id: innerChild?.props?.id ?? realTabIds?.[i] ?? `tab-${baseId}-${i + 1}`,
508
512
  key: i,
509
513
  isParentVertical: vertical,
510
514
  type,
@@ -518,7 +522,7 @@ const Tabs2 = (props) => {
518
522
  return [
519
523
  ...acc,
520
524
  cloneElement(child, {
521
- id: `tab-${baseId}-${tabPanelCounter++}`,
525
+ id: realTabIds?.[tabPanelCounter++ - 1] ?? `tab-${baseId}-${tabPanelCounter++}`,
522
526
  key: index,
523
527
  className: child.props.className,
524
528
  flat,
@@ -678,6 +682,7 @@ TabList2.displayName = "TabList";
678
682
  * @param {boolean} [props.invisible] - If `true`, the tab is disabled and not rendered, but is not unmounted from the DOM.
679
683
  * @param {string} [props.label] - Tab label. **Note**: overrides inner items!
680
684
  * @param {string} [props.subtitle] - Tab subtitle. **Note**: overrides inner items!
685
+ * @param {string} [props.id] - The tab unique identifier.
681
686
  *
682
687
  * @returns {JSX.Element} The Tab component.
683
688
  *
@@ -691,7 +696,7 @@ const Tab = (props) => {
691
696
  [
692
697
  "es:group es:relative es:shrink-0",
693
698
  "es:flex es:items-center es:gap-1.5",
694
- "es:select-none es:not-disabled:cursor-pointer",
699
+ "es:select-none",
695
700
  "es:transition-plus es:text-center es:text-12 es:leading-[1.15] es:text-box-trim",
696
701
  "es:any-focus:outline-hidden",
697
702
  "es:contrast-more:inset-ring es:contrast-more:inset-ring-accent-500/0 es:contrast-more:focus-visible:inset-ring-accent-500",
@@ -125,7 +125,7 @@ const Switch2 = (props) => {
125
125
  default: "es:h-6 es:w-10 es:p-1"
126
126
  },
127
127
  disabled: {
128
- false: [!flat && "es:shadow-xs es:shadow-black/5", "es:cursor-pointer"]
128
+ false: [!flat && "es:shadow-xs es:shadow-black/5"]
129
129
  }
130
130
  },
131
131
  compoundVariants: [
@@ -186,7 +186,6 @@ const ToggleButton2 = (props) => {
186
186
  "es:text-box-trim",
187
187
  "es:leading-none",
188
188
  "es:icon:size-5",
189
- !disabled && "es:cursor-pointer",
190
189
  icon && children ? "es:justify-start" : "es:justify-center-safe",
191
190
  className
192
191
  ],
@@ -3402,8 +3402,10 @@ const icons = {
3402
3402
  /* @__PURE__ */ jsx("rect", { x: "1", y: "7", width: "7", height: "12", rx: "1.5", fill: "currentColor" })
3403
3403
  ] }),
3404
3404
  reorder: /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", width: "20", height: "20", fill: "none", children: [
3405
- /* @__PURE__ */ jsx("path", { stroke: "currentColor", strokeLinecap: "round", d: "M2.5 5.5h15m-15 3h15m-15 3h15m-15 3h15", fill: "none" }),
3406
- /* @__PURE__ */ jsx("path", { d: "M12.148 3H7.852a.5.5 0 0 1-.326-.88L9.675.28a.5.5 0 0 1 .65 0l2.149 1.841a.5.5 0 0 1-.326.88Zm0 14H7.852a.5.5 0 0 0-.326.88l2.149 1.841a.5.5 0 0 0 .65 0l2.149-1.841a.5.5 0 0 0-.326-.88Z", fill: "currentColor" })
3405
+ /* @__PURE__ */ jsx("path", { stroke: "currentColor", strokeLinecap: "round", d: "M2.5 5.5h15", fill: "none" }),
3406
+ /* @__PURE__ */ jsx("path", { d: "M17.5 8a.5.5 0 0 1 0 1h-15a.5.5 0 0 1 0-1h15Zm0 3a.5.5 0 0 1 0 1h-15a.5.5 0 0 1 0-1h15Z", fill: "currentColor" }),
3407
+ /* @__PURE__ */ jsx("path", { stroke: "currentColor", strokeLinecap: "round", d: "M2.5 14.5h15", fill: "none" }),
3408
+ /* @__PURE__ */ jsx("path", { d: "M12.5 3h-5a.5.5 0 0 1-.3-.9L9.7.225a.5.5 0 0 1 .6 0L12.8 2.1a.5.5 0 0 1-.3.9Zm0 14h-5a.5.5 0 0 0-.3.9l2.5 1.875a.5.5 0 0 0 .6 0l2.5-1.875a.5.5 0 0 0-.3-.9Z", fill: "currentColor" })
3407
3409
  ] }),
3408
3410
  loaderAlt: /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", width: "20", height: "20", fill: "none", children: /* @__PURE__ */ jsx("path", { d: "M10 19v-2m-9-7h2m13.367 6.367-1.414-1.414m-11.32 1.414 1.414-1.414M10 3V1m7 9h2M5.047 5.047 3.633 3.633m11.32 1.414 1.414-1.414M10 17v-1.555M3 10h1.555m10.396 4.951-1.1-1.1m-8.803 1.1 1.1-1.1M10 4.556V3m5.444 7H17M6.147 6.147l-1.1-1.1m8.806 1.1 1.1-1.1", stroke: "currentColor", strokeLinecap: "round", fill: "none" }) })
3409
3411
  };
@@ -6184,6 +6184,7 @@ function createProjectionNode({ attachResizeListener, defaultParent, measureScro
6184
6184
  this.treeScale = { x: 1, y: 1 };
6185
6185
  this.eventHandlers = /* @__PURE__ */ new Map();
6186
6186
  this.hasTreeAnimated = false;
6187
+ this.layoutVersion = 0;
6187
6188
  this.updateScheduled = false;
6188
6189
  this.scheduleUpdate = () => this.update();
6189
6190
  this.projectionUpdateScheduled = false;
@@ -6201,6 +6202,7 @@ function createProjectionNode({ attachResizeListener, defaultParent, measureScro
6201
6202
  this.nodes.forEach(cleanDirtyNodes);
6202
6203
  };
6203
6204
  this.resolvedRelativeTargetAt = 0;
6205
+ this.linkedParentVersion = 0;
6204
6206
  this.hasProjected = false;
6205
6207
  this.isVisible = true;
6206
6208
  this.animationProgress = 0;
@@ -6456,6 +6458,7 @@ function createProjectionNode({ attachResizeListener, defaultParent, measureScro
6456
6458
  }
6457
6459
  const prevLayout = this.layout;
6458
6460
  this.layout = this.measure(false);
6461
+ this.layoutVersion++;
6459
6462
  this.layoutCorrected = createBox();
6460
6463
  this.isLayoutDirty = false;
6461
6464
  this.projectionDelta = void 0;
@@ -6623,17 +6626,15 @@ function createProjectionNode({ attachResizeListener, defaultParent, measureScro
6623
6626
  if (!this.layout || !(layout2 || layoutId))
6624
6627
  return;
6625
6628
  this.resolvedRelativeTargetAt = frameData.timestamp;
6629
+ const relativeParent = this.getClosestProjectingParent();
6630
+ if (relativeParent && this.linkedParentVersion !== relativeParent.layoutVersion && !relativeParent.options.layoutRoot) {
6631
+ this.removeRelativeTarget();
6632
+ }
6626
6633
  if (!this.targetDelta && !this.relativeTarget) {
6627
- const relativeParent = this.getClosestProjectingParent();
6628
- if (relativeParent && relativeParent.layout && this.animationProgress !== 1) {
6629
- this.relativeParent = relativeParent;
6630
- this.forceRelativeParentToResolveTarget();
6631
- this.relativeTarget = createBox();
6632
- this.relativeTargetOrigin = createBox();
6633
- calcRelativePosition(this.relativeTargetOrigin, this.layout.layoutBox, relativeParent.layout.layoutBox);
6634
- copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);
6634
+ if (relativeParent && relativeParent.layout) {
6635
+ this.createRelativeTarget(relativeParent, this.layout.layoutBox, relativeParent.layout.layoutBox);
6635
6636
  } else {
6636
- this.relativeParent = this.relativeTarget = void 0;
6637
+ this.removeRelativeTarget();
6637
6638
  }
6638
6639
  }
6639
6640
  if (!this.relativeTarget && !this.targetDelta)
@@ -6657,14 +6658,8 @@ function createProjectionNode({ attachResizeListener, defaultParent, measureScro
6657
6658
  }
6658
6659
  if (this.attemptToResolveRelativeTarget) {
6659
6660
  this.attemptToResolveRelativeTarget = false;
6660
- const relativeParent = this.getClosestProjectingParent();
6661
6661
  if (relativeParent && Boolean(relativeParent.resumingFrom) === Boolean(this.resumingFrom) && !relativeParent.options.layoutScroll && relativeParent.target && this.animationProgress !== 1) {
6662
- this.relativeParent = relativeParent;
6663
- this.forceRelativeParentToResolveTarget();
6664
- this.relativeTarget = createBox();
6665
- this.relativeTargetOrigin = createBox();
6666
- calcRelativePosition(this.relativeTargetOrigin, this.target, relativeParent.target);
6667
- copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);
6662
+ this.createRelativeTarget(relativeParent, this.target, relativeParent.target);
6668
6663
  } else {
6669
6664
  this.relativeParent = this.relativeTarget = void 0;
6670
6665
  }
@@ -6683,6 +6678,18 @@ function createProjectionNode({ attachResizeListener, defaultParent, measureScro
6683
6678
  isProjecting() {
6684
6679
  return Boolean((this.relativeTarget || this.targetDelta || this.options.layoutRoot) && this.layout);
6685
6680
  }
6681
+ createRelativeTarget(relativeParent, layout2, parentLayout) {
6682
+ this.relativeParent = relativeParent;
6683
+ this.linkedParentVersion = relativeParent.layoutVersion;
6684
+ this.forceRelativeParentToResolveTarget();
6685
+ this.relativeTarget = createBox();
6686
+ this.relativeTargetOrigin = createBox();
6687
+ calcRelativePosition(this.relativeTargetOrigin, layout2, parentLayout);
6688
+ copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);
6689
+ }
6690
+ removeRelativeTarget() {
6691
+ this.relativeParent = this.relativeTarget = void 0;
6692
+ }
6686
6693
  calcProjection() {
6687
6694
  const lead = this.getLead();
6688
6695
  const isShared = Boolean(this.resumingFrom) || this !== lead;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eightshift/ui-components",
3
- "version": "6.0.4",
3
+ "version": "6.0.6",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -62,14 +62,14 @@
62
62
  "@react-stately/collections": "^3.12.8",
63
63
  "@stylistic/eslint-plugin-js": "^4.4.1",
64
64
  "@tailwindcss/vite": "^4.1.17",
65
- "@thi.ng/color": "^5.8.3",
66
- "@thi.ng/pixel": "^7.5.17",
67
- "@thi.ng/pixel-analysis": "^2.0.18",
68
- "@thi.ng/pixel-dominant-colors": "^2.0.22",
65
+ "@thi.ng/color": "^5.8.4",
66
+ "@thi.ng/pixel": "^7.5.18",
67
+ "@thi.ng/pixel-analysis": "^2.0.19",
68
+ "@thi.ng/pixel-dominant-colors": "^2.0.23",
69
69
  "@types/react": "^18.3.27",
70
70
  "@types/react-dom": "^18.3.7",
71
71
  "@vitejs/plugin-react-swc": "^4.2.2",
72
- "@wordpress/i18n": "^6.8.0",
72
+ "@wordpress/i18n": "^6.9.0",
73
73
  "autoprefixer": "^10.4.22",
74
74
  "class-variance-authority": "^0.7.1",
75
75
  "clsx": "^2.1.1",
@@ -88,7 +88,7 @@
88
88
  "just-throttle": "^4.2.0",
89
89
  "lightningcss": "^1.30.2",
90
90
  "postcss": "^8.5.6",
91
- "prettier": "^3.6.2",
91
+ "prettier": "^3.7.3",
92
92
  "prettier-plugin-tailwindcss": "^0.7.1",
93
93
  "react": "^18.3.1",
94
94
  "react-aria": "^3.44.0",
@@ -101,12 +101,12 @@
101
101
  "tailwindcss": "^4.1.17",
102
102
  "tailwindcss-motion": "^1.1.1",
103
103
  "tailwindcss-react-aria-components": "^2.0.1",
104
- "vite": "^7.2.4",
104
+ "vite": "^7.2.6",
105
105
  "vite-plugin-lib-inject-css": "^2.2.2"
106
106
  },
107
107
  "dependencies": {
108
108
  "@fontsource-variable/geist-mono": "^5.2.7",
109
109
  "@fontsource-variable/roboto-flex": "^5.2.8",
110
- "motion": "^12.23.24"
110
+ "motion": "^12.23.25"
111
111
  }
112
112
  }