elements-kit 0.27.5 → 0.27.7

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 (102) hide show
  1. package/dist/attributes.d.mts +1 -1
  2. package/dist/await.d.mts +1 -1
  3. package/dist/await.mjs +1 -1
  4. package/dist/{children-_cMdyX7Q.d.mts → children-CjlmAzxx.d.mts} +3 -3
  5. package/dist/chunk-CfYAbeIz.mjs +13 -0
  6. package/dist/{custom-elements-C7oiqw-y.d.mts → custom-elements-CTqSkWI7.d.mts} +1 -1
  7. package/dist/custom-elements.d.mts +1 -1
  8. package/dist/direction-EwIAAn1f.d.mts +29 -0
  9. package/dist/{element-DgQvp-49.mjs → element-bMvwF1ue.mjs} +2 -2
  10. package/dist/for.d.mts +1 -1
  11. package/dist/for.mjs +2 -2
  12. package/dist/{fragment-BJfcQdsL.mjs → fragment-DV0hrE_A.mjs} +2 -2
  13. package/dist/{hot-eP6QROpU.mjs → hot-kRKLQS6B.mjs} +2 -2
  14. package/dist/hydrate/index.mjs +1 -1
  15. package/dist/{hydrate-ICXw1FIY.mjs → hydrate-Vx_iBMqJ.mjs} +3 -3
  16. package/dist/integrations/astro-client.mjs +3 -3
  17. package/dist/integrations/astro-server.mjs +3 -3
  18. package/dist/integrations/astro-slots.mjs +2 -2
  19. package/dist/integrations/hmr-runtime.mjs +2 -2
  20. package/dist/integrations/react.d.mts +1 -1
  21. package/dist/integrations/react.mjs +2 -2
  22. package/dist/jsx-runtime/dev.d.mts +2 -2
  23. package/dist/jsx-runtime/dev.mjs +2 -2
  24. package/dist/jsx-runtime/index.d.mts +2 -2
  25. package/dist/jsx-runtime/index.mjs +2 -2
  26. package/dist/render.mjs +1 -1
  27. package/dist/{scope-C1vELXqP.mjs → scope-B1kDu4YX.mjs} +1 -1
  28. package/dist/server/index.mjs +1 -1
  29. package/dist/{server-CoEm-C0I.mjs → server-DxiXDjQU.mjs} +3 -3
  30. package/dist/signals/index.d.mts +1 -1
  31. package/dist/signals/index.mjs +2 -2
  32. package/dist/slot.mjs +1 -1
  33. package/dist/ui/otp-input/index.d.mts +2 -2
  34. package/dist/ui/otp-input/index.mjs +1 -1
  35. package/dist/ui/overlay/handle.css +134 -0
  36. package/dist/ui/overlay/index.css +13 -88
  37. package/dist/ui/overlay/index.d.mts +228 -347
  38. package/dist/ui/overlay/index.mjs +679 -1550
  39. package/dist/ui/overlay/overlay.css +74 -135
  40. package/dist/utilities/_observe.mjs +1 -1
  41. package/dist/utilities/active-element.d.mts +1 -1
  42. package/dist/utilities/active-element.mjs +1 -1
  43. package/dist/utilities/async.d.mts +1 -1
  44. package/dist/utilities/async.mjs +1 -1
  45. package/dist/utilities/context.mjs +1 -1
  46. package/dist/utilities/debounced.d.mts +1 -1
  47. package/dist/utilities/debounced.mjs +1 -1
  48. package/dist/utilities/direction.d.mts +2 -0
  49. package/dist/utilities/direction.mjs +42 -0
  50. package/dist/utilities/dom-lifecycle.bench.mjs +2 -2
  51. package/dist/utilities/dom-lifecycle.d.mts +1 -1
  52. package/dist/utilities/dom-lifecycle.mjs +1 -1
  53. package/dist/utilities/element-rect.d.mts +1 -1
  54. package/dist/utilities/element-rect.mjs +1 -1
  55. package/dist/utilities/element-scroll.d.mts +1 -1
  56. package/dist/utilities/environment.d.mts +1 -1
  57. package/dist/utilities/event-driven.d.mts +1 -1
  58. package/dist/utilities/event-driven.mjs +1 -1
  59. package/dist/utilities/event-listener.d.mts +1 -1
  60. package/dist/utilities/event-listener.mjs +1 -1
  61. package/dist/utilities/focus-within.d.mts +1 -1
  62. package/dist/utilities/focus-within.mjs +1 -1
  63. package/dist/utilities/hover.d.mts +1 -1
  64. package/dist/utilities/hover.mjs +1 -1
  65. package/dist/utilities/interval.d.mts +1 -1
  66. package/dist/utilities/interval.mjs +1 -1
  67. package/dist/utilities/location.d.mts +1 -1
  68. package/dist/utilities/location.mjs +1 -1
  69. package/dist/utilities/media-devices.d.mts +1 -1
  70. package/dist/utilities/media-devices.mjs +1 -1
  71. package/dist/utilities/media-player.d.mts +1 -1
  72. package/dist/utilities/media-query.d.mts +1 -1
  73. package/dist/utilities/media-query.mjs +1 -1
  74. package/dist/utilities/network.d.mts +1 -1
  75. package/dist/utilities/network.mjs +1 -1
  76. package/dist/utilities/orientation.d.mts +1 -1
  77. package/dist/utilities/orientation.mjs +1 -1
  78. package/dist/utilities/previous.d.mts +1 -1
  79. package/dist/utilities/previous.mjs +1 -1
  80. package/dist/utilities/promise.d.mts +1 -1
  81. package/dist/utilities/promise.mjs +1 -1
  82. package/dist/utilities/retry.mjs +1 -1
  83. package/dist/utilities/routing.d.mts +1 -1
  84. package/dist/utilities/routing.mjs +1 -1
  85. package/dist/utilities/search-params.d.mts +1 -1
  86. package/dist/utilities/storage.d.mts +1 -1
  87. package/dist/utilities/storage.mjs +1 -1
  88. package/dist/utilities/throttled.d.mts +1 -1
  89. package/dist/utilities/throttled.mjs +1 -1
  90. package/dist/utilities/timeout.d.mts +1 -1
  91. package/dist/utilities/timeout.mjs +1 -1
  92. package/dist/utilities/window-focus.d.mts +1 -1
  93. package/dist/utilities/window-focus.mjs +1 -1
  94. package/dist/utilities/window-size.d.mts +1 -1
  95. package/dist/utilities/window-size.mjs +1 -1
  96. package/package.json +7 -3
  97. /package/dist/{attributes-3r7Diua4.d.mts → attributes-YQZNO15D.d.mts} +0 -0
  98. /package/dist/{environment-c2ftMYT0.d.mts → environment-EQugnOcg.d.mts} +0 -0
  99. /package/dist/{index-BrVMftR8.d.mts → index-BSAqa0-0.d.mts} +0 -0
  100. /package/dist/{lib-DYypKhxk.mjs → lib-Dw0g-vex.mjs} +0 -0
  101. /package/dist/{polyfill-CdZVCxdo.mjs → polyfill-B1lNNcum.mjs} +0 -0
  102. /package/dist/{polyfill-BVNd6ogU.d.mts → polyfill-_7qvybvt.d.mts} +0 -0
@@ -1,45 +1,22 @@
1
- .x-overlay {
2
- color: var(--neutral-12);
3
- }
4
-
5
- .x-overlay:where([open])::backdrop {
6
- background: var(--overlay-backdrop, var(--color-overlay));
7
- }
8
-
9
- .x-overlay > .x-card {
10
- contain: none;
11
- touch-action: pan-y;
12
- position: static;
13
- overflow-y: auto;
14
- }
15
-
16
- :where(.x-overlay:not([data-material-background], [data-material-background] .x-overlay)) {
17
- --color-material: var(--color-material-solid);
18
- --backdrop-filter-material: none;
19
- }
20
-
21
- .x-overlay:where([data-resize], [data-draggable]):before, .x-overlay:where([data-resize], [data-draggable]):after {
22
- content: "";
1
+ .x-handle {
2
+ box-sizing: border-box;
23
3
  z-index: 1;
24
- pointer-events: none;
4
+ pointer-events: auto;
5
+ touch-action: none;
25
6
  position: absolute;
26
7
  }
27
8
 
28
- .x-overlay:where([data-draggable]:not([data-resize^="end-"])):after {
29
- width: var(--space-3);
30
- height: var(--space-3);
31
- border-radius: var(--overlay-grip-radius, var(--radius-5));
32
- background-color: var(--neutral-a8);
33
- inset-block-start: var(--space-2);
34
- inset-inline-start: var(--space-2);
35
- }
36
-
37
- .x-overlay:where([data-draggable][data-resize="start-start"]):after {
38
- inset-inline-start: auto;
39
- inset-inline-end: var(--space-2);
9
+ .x-handle:before {
10
+ content: "";
11
+ width: max(100%, var(--space-6));
12
+ height: max(100%, var(--space-6));
13
+ position: absolute;
14
+ top: 50%;
15
+ left: 50%;
16
+ translate: -50% -50%;
40
17
  }
41
18
 
42
- .x-overlay:where([data-draggable][data-resize^="end-"]):after {
19
+ .x-handle:where([data-placement="move"]) {
43
20
  top: var(--space-2);
44
21
  width: var(--space-8);
45
22
  height: var(--space-1);
@@ -49,7 +26,7 @@
49
26
  inset-inline: 0;
50
27
  }
51
28
 
52
- .x-overlay:where([data-resize^="block-"]):before {
29
+ .x-handle:where([data-placement^="block-"]) {
53
30
  width: var(--space-8);
54
31
  height: var(--space-1);
55
32
  border-radius: max(var(--radius-1), var(--radius-pill));
@@ -58,15 +35,15 @@
58
35
  inset-inline: 0;
59
36
  }
60
37
 
61
- .x-overlay:where([data-resize="block-start"]):before {
38
+ .x-handle:where([data-placement="block-start"]) {
62
39
  top: var(--space-2);
63
40
  }
64
41
 
65
- .x-overlay:where([data-resize="block-end"]):before {
42
+ .x-handle:where([data-placement="block-end"]) {
66
43
  bottom: var(--space-2);
67
44
  }
68
45
 
69
- .x-overlay:where([data-resize^="inline-"]):before {
46
+ .x-handle:where([data-placement^="inline-"]) {
70
47
  width: var(--space-1);
71
48
  height: var(--space-8);
72
49
  border-radius: max(var(--radius-1), var(--radius-pill));
@@ -75,23 +52,20 @@
75
52
  inset-block: 0;
76
53
  }
77
54
 
78
- .x-overlay:where([data-resize="inline-start"]):before {
55
+ .x-handle:where([data-placement="inline-start"]) {
79
56
  inset-inline-start: var(--space-2);
80
57
  }
81
58
 
82
- .x-overlay:where([data-resize="inline-end"]):before {
59
+ .x-handle:where([data-placement="inline-end"]) {
83
60
  inset-inline-end: var(--space-2);
84
61
  }
85
62
 
86
- .x-overlay:where([data-resize^="start-"], [data-resize^="end-"]):before {
63
+ .x-handle:where([data-placement^="start-"], [data-placement^="end-"]) {
87
64
  --_grip-r: max(calc(var(--overlay-grip-radius, var(--radius-5)) - var(--space-1)),
88
65
  0px);
89
66
  --_cap: min(var(--space-1), calc(var(--_grip-r) * 9999));
90
67
  --_gx: 1;
91
68
  --_gy: 1;
92
- content: "";
93
- z-index: 1;
94
- pointer-events: none;
95
69
  width: max(calc(var(--_grip-r) + var(--space-1)), calc(var(--space-1) * 3));
96
70
  height: max(calc(var(--_grip-r) + var(--space-1)), calc(var(--space-1) * 3));
97
71
  border: var(--space-1) solid var(--neutral-a8);
@@ -106,13 +80,9 @@
106
80
  linear-gradient(#000, #000) 100% 100% / var(--_grip-r) var(--_grip-r)
107
81
  no-repeat,
108
82
  /* round caps, centered on the flat cuts over solid border ink */
109
- radial-gradient(circle closest-side,
110
- #000 calc(100% - .5px),
111
- transparent)
83
+ radial-gradient(circle closest-side, #000 calc(100% - .5px), transparent)
112
84
  right 0 top 0 / var(--_cap) var(--_cap) no-repeat,
113
- radial-gradient(circle closest-side,
114
- #000 calc(100% - .5px),
115
- transparent)
85
+ radial-gradient(circle closest-side, #000 calc(100% - .5px), transparent)
116
86
  left 0 bottom 0 / var(--_cap) var(--_cap) no-repeat;
117
87
  mask: /* tails, cut flat at the cap centers (full length when capless) */
118
88
  linear-gradient(#000, #000) right 0 top calc(var(--_cap) / 2) /
@@ -123,105 +93,85 @@
123
93
  linear-gradient(#000, #000) 100% 100% / var(--_grip-r) var(--_grip-r)
124
94
  no-repeat,
125
95
  /* round caps, centered on the flat cuts over solid border ink */
126
- radial-gradient(circle closest-side,
127
- #000 calc(100% - .5px),
128
- transparent)
96
+ radial-gradient(circle closest-side, #000 calc(100% - .5px), transparent)
129
97
  right 0 top 0 / var(--_cap) var(--_cap) no-repeat,
130
- radial-gradient(circle closest-side,
131
- #000 calc(100% - .5px),
132
- transparent)
98
+ radial-gradient(circle closest-side, #000 calc(100% - .5px), transparent)
133
99
  left 0 bottom 0 / var(--_cap) var(--_cap) no-repeat;
134
- position: absolute;
100
+ background: none;
135
101
  }
136
102
 
137
- .x-overlay:where([data-resize="start-end"], [data-resize="end-end"]):before {
103
+ .x-handle:where([data-placement="start-end"], [data-placement="end-end"]) {
138
104
  inset-inline-end: var(--space-1);
139
105
  }
140
106
 
141
- .x-overlay:where([data-resize="start-start"], [data-resize="end-start"]):before {
107
+ .x-handle:where([data-placement="start-start"], [data-placement="end-start"]) {
142
108
  --_gx: -1;
143
109
  inset-inline-start: var(--space-1);
144
110
  }
145
111
 
146
- .x-overlay:where([data-resize^="end-"]):before {
112
+ .x-handle:where([data-placement^="end-"]) {
147
113
  bottom: var(--space-1);
148
114
  }
149
115
 
150
- .x-overlay:where([data-resize^="start-"]):before {
116
+ .x-handle:where([data-placement^="start-"]) {
151
117
  top: var(--space-1);
152
118
  --_gy: -1;
153
119
  }
154
120
 
155
- .x-overlay:where([data-resize="start-end"], [data-resize="end-end"]):where(:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))):before {
121
+ .x-handle:where([data-placement="start-end"], [data-placement="end-end"]):where(:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))) {
156
122
  --_gx: -1;
157
123
  }
158
124
 
159
- .x-overlay:where([data-resize="start-start"], [data-resize="end-start"]):where(:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))):before {
125
+ .x-handle:where([data-placement="start-start"], [data-placement="end-start"]):where(:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))) {
160
126
  --_gx: 1;
161
127
  }
162
128
 
163
- .x-overlay > .x-overlay-arrow {
164
- display: none;
165
- }
166
-
167
- .x-overlay:where([data-placed]) > .x-overlay-arrow {
168
- --_as: var(--overlay-arrow-size, 10px);
169
- z-index: -1;
170
- width: var(--_as);
171
- height: var(--_as);
172
- background-color: var(--color-material, var(--color-surface));
173
- box-shadow: 0 0 0 .5px var(--neutral-a3);
174
- transition: top var(--overlay-duration, .3s)
175
- var(--overlay-easing, cubic-bezier(.32, .72, 0, 1)),
176
- left var(--overlay-duration, .3s)
177
- var(--overlay-easing, cubic-bezier(.32, .72, 0, 1));
178
- display: block;
179
- position: absolute;
180
- rotate: 45deg;
129
+ @media (forced-colors: active) {
130
+ .x-handle:where([data-placement]) {
131
+ background-color: buttontext;
132
+ border-color: buttontext;
133
+ }
181
134
  }
182
135
 
183
- .x-overlay:where([data-placed="bottom"]) > .x-overlay-arrow {
184
- top: calc(var(--_as) / -2);
185
- left: var(--overlay-arrow-x, calc(50% - var(--_as) / 2));
136
+ .x-overlay {
137
+ color: var(--neutral-12);
186
138
  }
187
139
 
188
- .x-overlay:where([data-placed="top"]) > .x-overlay-arrow {
189
- bottom: calc(var(--_as) / -2);
190
- left: var(--overlay-arrow-x, calc(50% - var(--_as) / 2));
140
+ .x-overlay:where([open])::backdrop {
141
+ background: var(--overlay-backdrop, var(--color-overlay));
191
142
  }
192
143
 
193
- .x-overlay:where([data-placed="right"]) > .x-overlay-arrow {
194
- left: calc(var(--_as) / -2);
195
- top: var(--overlay-arrow-y, calc(50% - var(--_as) / 2));
144
+ .x-overlay > .x-card {
145
+ contain: none;
146
+ touch-action: pan-y;
147
+ position: static;
148
+ overflow-y: auto;
196
149
  }
197
150
 
198
- .x-overlay:where([data-placed="left"]) > .x-overlay-arrow {
199
- right: calc(var(--_as) / -2);
200
- top: var(--overlay-arrow-y, calc(50% - var(--_as) / 2));
151
+ :where(.x-overlay:not([data-material-background], [data-material-background] .x-overlay)) {
152
+ --color-material: var(--color-material-solid);
153
+ --backdrop-filter-material: none;
201
154
  }
202
155
 
203
156
  @supports (transition-behavior: allow-discrete) {
204
157
  .x-overlay {
205
- transition-property: top, left, translate, transform, width, height, opacity, scale, display;
158
+ transition-property: translate, width, height, scale, display;
206
159
  transition-duration: var(--overlay-duration);
207
160
  transition-timing-function: var(--overlay-easing);
208
161
  transition-behavior: allow-discrete;
209
162
  }
210
163
 
211
- .x-overlay:where(:not([data-resize]), [data-resize^="start-"], [data-resize^="end-"]) {
212
- opacity: 0;
213
- scale: .97;
164
+ .x-overlay:where(:not(:has( > .x-handle[data-placement^="block-"], > .x-handle[data-placement^="inline-"]))) {
165
+ scale: .94;
214
166
  }
215
167
 
216
- .x-overlay:where(:not([data-resize]), [data-resize^="start-"], [data-resize^="end-"]):where([open], :popover-open) {
217
- opacity: 1;
168
+ .x-overlay:where(:not(:has( > .x-handle[data-placement^="block-"], > .x-handle[data-placement^="inline-"]))):where([open], :popover-open) {
218
169
  scale: 1;
219
170
  }
220
171
 
221
172
  @starting-style {
222
- .x-overlay:where(:not([data-resize]), [data-resize^="start-"], [data-resize^="end-"]):where([open], :popover-open) {
223
- opacity: 0;
224
- scale: .97;
173
+ .x-overlay:where(:not(:has( > .x-handle[data-placement^="block-"], > .x-handle[data-placement^="inline-"]))):where([open], :popover-open) {
174
+ scale: .94;
225
175
  }
226
176
  }
227
177
 
@@ -241,86 +191,86 @@
241
191
  transform-origin: 100%;
242
192
  }
243
193
 
244
- .x-overlay:where([data-resize="block-start"]) {
194
+ .x-overlay:where(:has( > .x-handle[data-placement="block-start"])) {
245
195
  --_ey: 100%;
246
196
  }
247
197
 
248
- .x-overlay:where([data-resize="block-start"]):where([open], :popover-open) {
198
+ .x-overlay:where(:has( > .x-handle[data-placement="block-start"])):where([open], :popover-open) {
249
199
  --_ey: 0%;
250
200
  }
251
201
 
252
202
  @starting-style {
253
- .x-overlay:where([data-resize="block-start"]):where([open], :popover-open) {
203
+ .x-overlay:where(:has( > .x-handle[data-placement="block-start"])):where([open], :popover-open) {
254
204
  --_ey: 100%;
255
205
  }
256
206
  }
257
207
 
258
- .x-overlay:where([data-resize="block-end"]) {
208
+ .x-overlay:where(:has( > .x-handle[data-placement="block-end"])) {
259
209
  --_ey: -100%;
260
210
  }
261
211
 
262
- .x-overlay:where([data-resize="block-end"]):where([open], :popover-open) {
212
+ .x-overlay:where(:has( > .x-handle[data-placement="block-end"])):where([open], :popover-open) {
263
213
  --_ey: 0%;
264
214
  }
265
215
 
266
216
  @starting-style {
267
- .x-overlay:where([data-resize="block-end"]):where([open], :popover-open) {
217
+ .x-overlay:where(:has( > .x-handle[data-placement="block-end"])):where([open], :popover-open) {
268
218
  --_ey: -100%;
269
219
  }
270
220
  }
271
221
 
272
- .x-overlay:where([data-resize="inline-start"]) {
222
+ .x-overlay:where(:has( > .x-handle[data-placement="inline-start"])) {
273
223
  --_ex: 100%;
274
224
  }
275
225
 
276
- .x-overlay:where([data-resize="inline-start"]):where([open], :popover-open) {
226
+ .x-overlay:where(:has( > .x-handle[data-placement="inline-start"])):where([open], :popover-open) {
277
227
  --_ex: 0%;
278
228
  }
279
229
 
280
230
  @starting-style {
281
- .x-overlay:where([data-resize="inline-start"]):where([open], :popover-open) {
231
+ .x-overlay:where(:has( > .x-handle[data-placement="inline-start"])):where([open], :popover-open) {
282
232
  --_ex: 100%;
283
233
  }
284
234
  }
285
235
 
286
- .x-overlay:where([data-resize="inline-start"]):where(:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))) {
236
+ .x-overlay:where(:has( > .x-handle[data-placement="inline-start"])):where(:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))) {
287
237
  --_ex: -100%;
288
238
  }
289
239
 
290
- .x-overlay:where([data-resize="inline-start"]):where(:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))):where([open], :popover-open) {
240
+ .x-overlay:where(:has( > .x-handle[data-placement="inline-start"])):where(:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))):where([open], :popover-open) {
291
241
  --_ex: 0%;
292
242
  }
293
243
 
294
244
  @starting-style {
295
- .x-overlay:where([data-resize="inline-start"]):where(:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))):where([open], :popover-open) {
245
+ .x-overlay:where(:has( > .x-handle[data-placement="inline-start"])):where(:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))):where([open], :popover-open) {
296
246
  --_ex: -100%;
297
247
  }
298
248
  }
299
249
 
300
- .x-overlay:where([data-resize="inline-end"]) {
250
+ .x-overlay:where(:has( > .x-handle[data-placement="inline-end"])) {
301
251
  --_ex: -100%;
302
252
  }
303
253
 
304
- .x-overlay:where([data-resize="inline-end"]):where([open], :popover-open) {
254
+ .x-overlay:where(:has( > .x-handle[data-placement="inline-end"])):where([open], :popover-open) {
305
255
  --_ex: 0%;
306
256
  }
307
257
 
308
258
  @starting-style {
309
- .x-overlay:where([data-resize="inline-end"]):where([open], :popover-open) {
259
+ .x-overlay:where(:has( > .x-handle[data-placement="inline-end"])):where([open], :popover-open) {
310
260
  --_ex: -100%;
311
261
  }
312
262
  }
313
263
 
314
- .x-overlay:where([data-resize="inline-end"]):where(:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))) {
264
+ .x-overlay:where(:has( > .x-handle[data-placement="inline-end"])):where(:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))) {
315
265
  --_ex: 100%;
316
266
  }
317
267
 
318
- .x-overlay:where([data-resize="inline-end"]):where(:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))):where([open], :popover-open) {
268
+ .x-overlay:where(:has( > .x-handle[data-placement="inline-end"])):where(:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))):where([open], :popover-open) {
319
269
  --_ex: 0%;
320
270
  }
321
271
 
322
272
  @starting-style {
323
- .x-overlay:where([data-resize="inline-end"]):where(:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))):where([open], :popover-open) {
273
+ .x-overlay:where(:has( > .x-handle[data-placement="inline-end"])):where(:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))):where([open], :popover-open) {
324
274
  --_ex: 100%;
325
275
  }
326
276
  }
@@ -345,7 +295,7 @@
345
295
 
346
296
  @supports (overlay: auto) {
347
297
  .x-overlay {
348
- transition-property: top, left, translate, transform, width, height, opacity, scale, display, overlay;
298
+ transition-property: translate, width, height, scale, display, overlay;
349
299
  }
350
300
 
351
301
  .x-overlay::backdrop {
@@ -362,7 +312,7 @@
362
312
  transition-timing-function: var(--overlay-easing, cubic-bezier(.32, .72, 0, 1));
363
313
  }
364
314
 
365
- :root:has(.x-overlay[data-resize="block-start"][open]) [data-overlay-deck] {
315
+ :root:has(.x-overlay[open]:has( > .x-handle[data-placement="block-start"])) [data-overlay-deck] {
366
316
  scale: .96;
367
317
  translate: 0 var(--space-2);
368
318
  border-radius: var(--radius-4);
@@ -375,14 +325,3 @@
375
325
  transition: none;
376
326
  }
377
327
  }
378
-
379
- @media (forced-colors: active) {
380
- .x-overlay:where([data-resize]):before {
381
- background-color: buttontext;
382
- border-color: buttontext;
383
- }
384
-
385
- .x-overlay:where([data-draggable]):after {
386
- background-color: buttontext;
387
- }
388
- }
@@ -1,4 +1,4 @@
1
- import { _ as onCleanup } from "../lib-DYypKhxk.mjs";
1
+ import { _ as onCleanup } from "../lib-Dw0g-vex.mjs";
2
2
  import "../signals/index.mjs";
3
3
  //#region src/utilities/_observe.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { t as Computed } from "../index-BrVMftR8.mjs";
1
+ import { t as Computed } from "../index-BSAqa0-0.mjs";
2
2
 
3
3
  //#region src/utilities/active-element.d.ts
4
4
  declare const activeElement: Computed<Element | null>;
@@ -1,4 +1,4 @@
1
- import { l as computed } from "../lib-DYypKhxk.mjs";
1
+ import { l as computed } from "../lib-Dw0g-vex.mjs";
2
2
  import "../signals/index.mjs";
3
3
  import { fromEvent, sync } from "./event-driven.mjs";
4
4
  import { isBrowser } from "./environment.mjs";
@@ -1,4 +1,4 @@
1
- import { m as SEED, r as MaybeReactive, u as CLAIM } from "../index-BrVMftR8.mjs";
1
+ import { m as SEED, r as MaybeReactive, u as CLAIM } from "../index-BSAqa0-0.mjs";
2
2
  import { ComputedPromise } from "./promise.mjs";
3
3
 
4
4
  //#region src/utilities/async.d.ts
@@ -1,4 +1,4 @@
1
- import { C as untracked, b as shouldDeferAsyncRuns, f as effectsInert, n as CLAIM, o as SEED, u as effect, x as signal } from "../lib-DYypKhxk.mjs";
1
+ import { C as untracked, b as shouldDeferAsyncRuns, f as effectsInert, n as CLAIM, o as SEED, u as effect, x as signal } from "../lib-Dw0g-vex.mjs";
2
2
  import { resolve } from "../signals/index.mjs";
3
3
  import { promise } from "./promise.mjs";
4
4
  //#region src/utilities/async.ts
@@ -1,4 +1,4 @@
1
- import { _ as onCleanup, x as signal } from "../lib-DYypKhxk.mjs";
1
+ import { _ as onCleanup, x as signal } from "../lib-Dw0g-vex.mjs";
2
2
  import "../signals/index.mjs";
3
3
  //#region src/utilities/context.ts
4
4
  const registry = /* @__PURE__ */ new WeakMap();
@@ -1,4 +1,4 @@
1
- import { t as Computed } from "../index-BrVMftR8.mjs";
1
+ import { t as Computed } from "../index-BSAqa0-0.mjs";
2
2
 
3
3
  //#region src/utilities/debounced.d.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { u as effect, x as signal } from "../lib-DYypKhxk.mjs";
1
+ import { u as effect, x as signal } from "../lib-Dw0g-vex.mjs";
2
2
  import "../signals/index.mjs";
3
3
  import { createTimeout } from "./timeout.mjs";
4
4
  //#region src/utilities/debounced.ts
@@ -0,0 +1,2 @@
1
+ import { n as createDirection, r as direction, t as Direction } from "../direction-EwIAAn1f.mjs";
2
+ export { Direction, createDirection, direction };
@@ -0,0 +1,42 @@
1
+ import { _ as onCleanup, l as computed, x as signal } from "../lib-Dw0g-vex.mjs";
2
+ import "../signals/index.mjs";
3
+ import { isBrowser } from "./environment.mjs";
4
+ import { createMutationObserver } from "./mutation-observer.mjs";
5
+ //#region src/utilities/direction.ts
6
+ /**
7
+ * The page's direction — the document root's resolved `direction`
8
+ * (`"ltr"` / `"rtl"`), reactive. `direction` below is the
9
+ * pre-instantiated page singleton, like `windowSize` / `online`.
10
+ *
11
+ * Resyncs on `dir` attribute changes anywhere in the document (the
12
+ * mechanism locale switches use; `direction` inherits, so ancestor
13
+ * flips count). A stylesheet-driven `direction` change has no
14
+ * observable primitive — it's picked up on the next `dir` mutation.
15
+ * Outside a browser: a constant `"ltr"`.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * import { direction } from "elements-kit/utilities/direction";
20
+ *
21
+ * effect(() => {
22
+ * panel.dataset.dir = direction(); // re-runs on <html dir> changes
23
+ * });
24
+ * ```
25
+ */
26
+ function createDirection(element) {
27
+ if (!isBrowser) return Object.assign(computed(() => "ltr"), { [Symbol.dispose]() {} });
28
+ const target = element ?? document.documentElement;
29
+ const read = () => getComputedStyle(target).direction === "rtl" ? "rtl" : "ltr";
30
+ const current = signal(read());
31
+ const observer = createMutationObserver(document.documentElement, {
32
+ attributes: true,
33
+ attributeFilter: ["dir"],
34
+ subtree: true
35
+ }, () => current(read()));
36
+ onCleanup(() => observer[Symbol.dispose]());
37
+ return Object.assign(computed(() => current()), { [Symbol.dispose]: () => observer[Symbol.dispose]() });
38
+ }
39
+ /** The page's direction — the document root's, reactive. */
40
+ const direction = createDirection();
41
+ //#endregion
42
+ export { createDirection, direction };
@@ -3218,7 +3218,7 @@ function manageArtifactAttachment(attachment) {
3218
3218
  if (attachment.body != null) attachment.bodyEncoding ??= "base64";
3219
3219
  }
3220
3220
  //#endregion
3221
- //#region node_modules/.pnpm/vitest@4.1.3_@types+node@25.5.2_happy-dom@20.8.9_jsdom@30.0.1_vite@8.0.8_@types+node@25.5.2_esbuild@0.28.1_yaml@2.9.0_/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js
3221
+ //#region node_modules/.pnpm/vitest@4.1.3_@types+node@25.5.2_@vitest+browser-playwright@4.1.9_happy-dom@20.8.9_jsdom_4a7f3a3b1442d8fc34c9440d05942918/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js
3222
3222
  const NAME_WORKER_STATE = "__vitest_worker__";
3223
3223
  function getWorkerState() {
3224
3224
  const workerState = globalThis[NAME_WORKER_STATE];
@@ -3226,7 +3226,7 @@ function getWorkerState() {
3226
3226
  return workerState;
3227
3227
  }
3228
3228
  //#endregion
3229
- //#region node_modules/.pnpm/vitest@4.1.3_@types+node@25.5.2_happy-dom@20.8.9_jsdom@30.0.1_vite@8.0.8_@types+node@25.5.2_esbuild@0.28.1_yaml@2.9.0_/node_modules/vitest/dist/chunks/benchmark.CX_oY03V.js
3229
+ //#region node_modules/.pnpm/vitest@4.1.3_@types+node@25.5.2_@vitest+browser-playwright@4.1.9_happy-dom@20.8.9_jsdom_4a7f3a3b1442d8fc34c9440d05942918/node_modules/vitest/dist/chunks/benchmark.CX_oY03V.js
3230
3230
  const benchFns = /* @__PURE__ */ new WeakMap();
3231
3231
  const benchOptsMap = /* @__PURE__ */ new WeakMap();
3232
3232
  const bench = createBenchmark(function(name, fn = noop, options = {}) {
@@ -1,4 +1,4 @@
1
- import { t as HTMLElementBase } from "../environment-c2ftMYT0.mjs";
1
+ import { t as HTMLElementBase } from "../environment-EQugnOcg.mjs";
2
2
 
3
3
  //#region src/utilities/dom-lifecycle.d.ts
4
4
  type LifecycleCallback = (self: DomLifecycleElement) => void;
@@ -1,4 +1,4 @@
1
- import { d as effectScope } from "../lib-DYypKhxk.mjs";
1
+ import { d as effectScope } from "../lib-Dw0g-vex.mjs";
2
2
  import "../signals/index.mjs";
3
3
  import { HTMLElementBase, isBrowser } from "./environment.mjs";
4
4
  //#region src/utilities/dom-lifecycle.ts
@@ -1,4 +1,4 @@
1
- import { r as MaybeReactive, t as Computed } from "../index-BrVMftR8.mjs";
1
+ import { r as MaybeReactive, t as Computed } from "../index-BSAqa0-0.mjs";
2
2
 
3
3
  //#region src/utilities/element-rect.d.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { _ as onCleanup, d as effectScope, l as computed, u as effect, x as signal } from "../lib-DYypKhxk.mjs";
1
+ import { _ as onCleanup, d as effectScope, l as computed, u as effect, x as signal } from "../lib-Dw0g-vex.mjs";
2
2
  import { resolve } from "../signals/index.mjs";
3
3
  import { createResizeObserver } from "./resize-observer.mjs";
4
4
  //#region src/utilities/element-rect.ts
@@ -1,4 +1,4 @@
1
- import { i as Signal } from "../index-BrVMftR8.mjs";
1
+ import { i as Signal } from "../index-BSAqa0-0.mjs";
2
2
 
3
3
  //#region src/utilities/element-scroll.d.ts
4
4
  type ElementScrollResult = {
@@ -1,2 +1,2 @@
1
- import { n as isBrowser, r as noopDisposable, t as HTMLElementBase } from "../environment-c2ftMYT0.mjs";
1
+ import { n as isBrowser, r as noopDisposable, t as HTMLElementBase } from "../environment-EQugnOcg.mjs";
2
2
  export { HTMLElementBase, isBrowser, noopDisposable };
@@ -1,4 +1,4 @@
1
- import { i as Signal, t as Computed } from "../index-BrVMftR8.mjs";
1
+ import { i as Signal, t as Computed } from "../index-BSAqa0-0.mjs";
2
2
 
3
3
  //#region src/utilities/event-driven.d.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { S as trigger, _ as onCleanup, l as computed, s as SIGNAL, x as signal } from "../lib-DYypKhxk.mjs";
1
+ import { S as trigger, _ as onCleanup, l as computed, s as SIGNAL, x as signal } from "../lib-Dw0g-vex.mjs";
2
2
  import "../signals/index.mjs";
3
3
  //#region src/utilities/event-driven.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { t as Computed } from "../index-BrVMftR8.mjs";
1
+ import { t as Computed } from "../index-BSAqa0-0.mjs";
2
2
 
3
3
  //#region src/utilities/event-listener.d.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { _ as onCleanup, u as effect } from "../lib-DYypKhxk.mjs";
1
+ import { _ as onCleanup, u as effect } from "../lib-Dw0g-vex.mjs";
2
2
  import "../signals/index.mjs";
3
3
  //#region src/utilities/event-listener.ts
4
4
  function on(target, type, handler, options) {
@@ -1,4 +1,4 @@
1
- import { t as Computed } from "../index-BrVMftR8.mjs";
1
+ import { t as Computed } from "../index-BSAqa0-0.mjs";
2
2
 
3
3
  //#region src/utilities/focus-within.d.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { x as signal } from "../lib-DYypKhxk.mjs";
1
+ import { x as signal } from "../lib-Dw0g-vex.mjs";
2
2
  import "../signals/index.mjs";
3
3
  import { on } from "./event-listener.mjs";
4
4
  //#region src/utilities/focus-within.ts
@@ -1,4 +1,4 @@
1
- import { t as Computed } from "../index-BrVMftR8.mjs";
1
+ import { t as Computed } from "../index-BSAqa0-0.mjs";
2
2
 
3
3
  //#region src/utilities/hover.d.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { x as signal } from "../lib-DYypKhxk.mjs";
1
+ import { x as signal } from "../lib-Dw0g-vex.mjs";
2
2
  import "../signals/index.mjs";
3
3
  import { on } from "./event-listener.mjs";
4
4
  //#region src/utilities/hover.ts
@@ -1,4 +1,4 @@
1
- import { t as Computed } from "../index-BrVMftR8.mjs";
1
+ import { t as Computed } from "../index-BSAqa0-0.mjs";
2
2
 
3
3
  //#region src/utilities/interval.d.ts
4
4
  type IntervalResult = {
@@ -1,4 +1,4 @@
1
- import { _ as onCleanup, x as signal } from "../lib-DYypKhxk.mjs";
1
+ import { _ as onCleanup, x as signal } from "../lib-Dw0g-vex.mjs";
2
2
  import "../signals/index.mjs";
3
3
  //#region src/utilities/interval.ts
4
4
  function createInterval(arg1, arg2) {