sakana-element 2.3.0 → 2.4.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 (115) hide show
  1. package/README.md +5 -5
  2. package/dist/es/{Alert-BwTsp4X3.js → Alert-DfLsJvQD.js} +2 -2
  3. package/dist/es/{Avatar-CJu6JYV3.js → Avatar-Ci4OKsv7.js} +1 -1
  4. package/dist/es/{Badge-BmxZXX8k.js → Badge-B4wEToK6.js} +2 -2
  5. package/dist/es/{Breadcrumb-BP8MSklj.js → Breadcrumb-BFzww8jd.js} +2 -2
  6. package/dist/es/{Button-BJHtN7gh.js → Button-DbFviVWb.js} +3 -3
  7. package/dist/es/{Card-DJHkCmsz.js → Card-ClRqKkc_.js} +1 -1
  8. package/dist/es/ChatBubble-DFEV_lVI.js +9 -0
  9. package/dist/es/{Checkbox-DX8L3fyp.js → Checkbox-l86YI3Fr.js} +3 -3
  10. package/dist/es/{Collapse-Ir3V9CuO.js → Collapse-B67v6RSE.js} +4 -4
  11. package/dist/es/{ConfigProvider-CsbSqwwi.js → ConfigProvider-BCoGbcS5.js} +2 -2
  12. package/dist/es/Diff-BLiniLom.js +64 -0
  13. package/dist/es/{Divider-C7PtODSK.js → Divider-DDSOHv8G.js} +1 -1
  14. package/dist/es/{Drawer-C2eVmvUp.js → Drawer-apeXw6EO.js} +2 -2
  15. package/dist/es/{Dropdown-CVg_c2fB.js → Dropdown-By9qIErf.js} +9 -9
  16. package/dist/es/{FileInput-BE26BmXm.js → FileInput-CZ5jTfB_.js} +3 -3
  17. package/dist/es/Filter-B_1zU4Dq.js +40 -0
  18. package/dist/es/{Form-7lZt5ehf.js → Form-B_XDnSjK.js} +62 -61
  19. package/dist/es/{Icon-BLDDdSU-.js → Icon-D6qRB3pq.js} +1 -1
  20. package/dist/es/{Indicator-B-en-MgG.js → Indicator-C6Ip4dpP.js} +1 -1
  21. package/dist/es/{Input-C5HuVehE.js → Input-bThwBbNZ.js} +5 -5
  22. package/dist/es/Kbd-DXNjs7at.js +13 -0
  23. package/dist/es/{Link-Av9RdcFv.js → Link-08Ee61Fv.js} +1 -1
  24. package/dist/es/{Loading-CBNDUWQd.js → Loading-ByI9mjss.js} +3 -3
  25. package/dist/es/{Message-DgnyyuXn.js → Message-CGG-lV5I.js} +14 -14
  26. package/dist/es/{Notification-LYRXnVAf.js → Notification-B4clKY5h.js} +13 -13
  27. package/dist/es/{Overlay-CpvMhnuU.js → Overlay-6iPenJB1.js} +1 -1
  28. package/dist/es/Pixelate-A8J7jxDW.js +39 -0
  29. package/dist/es/{Popconfirm-DvxFdLrw.js → Popconfirm-gcHGcOTz.js} +12 -12
  30. package/dist/es/{Progress-Bc5INMhJ.js → Progress-DFUBJQ4X.js} +1 -1
  31. package/dist/es/{Radio-263_rtRl.js → Radio-CLBa1XIM.js} +3 -3
  32. package/dist/es/Resizable-BWrFr2oj.js +151 -0
  33. package/dist/es/{Select-7ZxUCS8z.js → Select-BtLqds1d.js} +14 -14
  34. package/dist/es/Skeleton-CGUQv3nQ.js +15 -0
  35. package/dist/es/{Switch-DiCsMJT3.js → Switch-CZJ-S77_.js} +3 -3
  36. package/dist/es/{Table-BvA_xzDe.js → Table-lHbxiyGq.js} +1 -1
  37. package/dist/es/{Tooltip-J3ji6weH.js → Tooltip-CdPqNYdn.js} +3 -3
  38. package/dist/es/Validator-7ZT_nXDZ.js +40 -0
  39. package/dist/es/{hooks-BqobYUzS.js → hooks-pU4JmsO3.js} +1 -1
  40. package/dist/es/index.js +98 -81
  41. package/dist/es/utils-BXICIEsD.js +139 -0
  42. package/dist/es/{vendor-DXmGx29U.js → vendor-DrBJKLFW.js} +254 -210
  43. package/dist/index.css +1 -1
  44. package/dist/{es/theme → theme}/Badge.css +151 -151
  45. package/dist/{es/theme → theme}/Button.css +72 -8
  46. package/dist/theme/ChatBubble.css +218 -0
  47. package/dist/{es/theme → theme}/Checkbox.css +138 -18
  48. package/dist/{es/theme → theme}/Collapse.css +96 -96
  49. package/dist/theme/Diff.css +110 -0
  50. package/dist/{es/theme → theme}/Divider.css +42 -3
  51. package/dist/{es/theme → theme}/Dropdown.css +2 -2
  52. package/dist/{es/theme → theme}/FileInput.css +32 -0
  53. package/dist/theme/Filter.css +598 -0
  54. package/dist/{es/theme → theme}/Input.css +414 -407
  55. package/dist/theme/Kbd.css +104 -0
  56. package/dist/{es/theme → theme}/Message.css +1 -1
  57. package/dist/{es/theme → theme}/Notification.css +44 -44
  58. package/dist/{es/theme → theme}/Radio.css +114 -48
  59. package/dist/theme/Resizable.css +95 -0
  60. package/dist/{es/theme → theme}/Select.css +198 -88
  61. package/dist/theme/Skeleton.css +192 -0
  62. package/dist/{es/theme → theme}/Switch.css +22 -3
  63. package/dist/theme/Validator.css +25 -0
  64. package/dist/types/components/ChatBubble/constants.d.ts +2 -0
  65. package/dist/types/components/ChatBubble/index.d.ts +27 -0
  66. package/dist/types/components/ChatBubble/types.d.ts +10 -0
  67. package/dist/types/components/Diff/constants.d.ts +4 -0
  68. package/dist/types/components/Diff/index.d.ts +67 -0
  69. package/dist/types/components/Diff/types.d.ts +29 -0
  70. package/dist/types/components/Dropdown/index.d.ts +3 -3
  71. package/dist/types/components/Filter/constants.d.ts +5 -0
  72. package/dist/types/components/Filter/index.d.ts +59 -0
  73. package/dist/types/components/Filter/types.d.ts +38 -0
  74. package/dist/types/components/Kbd/constants.d.ts +3 -0
  75. package/dist/types/components/Kbd/index.d.ts +24 -0
  76. package/dist/types/components/Kbd/types.d.ts +10 -0
  77. package/dist/types/components/Pixelate/index.d.ts +3 -3
  78. package/dist/types/components/Popconfirm/index.d.ts +3 -3
  79. package/dist/types/components/Resizable/constants.d.ts +3 -0
  80. package/dist/types/components/Resizable/index.d.ts +135 -0
  81. package/dist/types/components/Resizable/types.d.ts +52 -0
  82. package/dist/types/components/Select/index.d.ts +3 -3
  83. package/dist/types/components/Skeleton/index.d.ts +36 -0
  84. package/dist/types/components/Skeleton/types.d.ts +12 -0
  85. package/dist/types/components/Tooltip/index.d.ts +3 -3
  86. package/dist/types/components/Validator/index.d.ts +52 -0
  87. package/dist/types/components/Validator/types.d.ts +13 -0
  88. package/dist/types/components/index.d.ts +8 -1
  89. package/dist/types/utils/index.d.ts +1 -0
  90. package/dist/types/utils/pixelate.d.ts +10 -0
  91. package/dist/types/utils/style.d.ts +1 -0
  92. package/dist/umd/index.css +1 -1
  93. package/dist/umd/index.css.gz +0 -0
  94. package/dist/umd/index.umd.cjs +3 -3
  95. package/dist/umd/index.umd.cjs.gz +0 -0
  96. package/package.json +4 -4
  97. package/dist/es/Pixelate-BPypBgJU.js +0 -67
  98. package/dist/es/utils-BS5vsvlM.js +0 -101
  99. /package/dist/{es/theme → theme}/Alert.css +0 -0
  100. /package/dist/{es/theme → theme}/Avatar.css +0 -0
  101. /package/dist/{es/theme → theme}/Breadcrumb.css +0 -0
  102. /package/dist/{es/theme → theme}/Card.css +0 -0
  103. /package/dist/{es/theme → theme}/Drawer.css +0 -0
  104. /package/dist/{es/theme → theme}/Form.css +0 -0
  105. /package/dist/{es/theme → theme}/Icon.css +0 -0
  106. /package/dist/{es/theme → theme}/Indicator.css +0 -0
  107. /package/dist/{es/theme → theme}/Link.css +0 -0
  108. /package/dist/{es/theme → theme}/Loading.css +0 -0
  109. /package/dist/{es/theme → theme}/Overlay.css +0 -0
  110. /package/dist/{es/theme → theme}/Popconfirm.css +0 -0
  111. /package/dist/{es/theme → theme}/Progress.css +0 -0
  112. /package/dist/{es/theme → theme}/Table.css +0 -0
  113. /package/dist/{es/theme → theme}/Tooltip.css +0 -0
  114. /package/dist/{es/theme → theme}/fonts/zpix.woff2 +0 -0
  115. /package/dist/{es/theme → theme}/index.css +0 -0
@@ -6,6 +6,10 @@
6
6
  --px-radio-border-color: var(--px-border-color);
7
7
  --px-radio-bg-color: var(--px-fill-color-blank);
8
8
  --px-radio-shadow-color: var(--px-shadow-color);
9
+
10
+ /* 3D bevel — sunken look (unchecked) */
11
+ --px-radio-inset-highlight: inset -2px -2px 0 0 rgba(255, 255, 255, 0.2);
12
+ --px-radio-inset-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.1);
9
13
  }
10
14
  /* Base Radio Styles */
11
15
  .px-radio {
@@ -26,7 +30,11 @@
26
30
  .px-radio.is-disabled .px-radio__inner {
27
31
  cursor: not-allowed;
28
32
  }
29
- /* Checked state */
33
+ /* Checked state — raised bevel */
34
+ .px-radio.is-checked {
35
+ --px-radio-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.2);
36
+ --px-radio-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.1);
37
+ }
30
38
  .px-radio.is-checked .px-radio__inner::before {
31
39
  background: var(--px-radio-checked-border-color);
32
40
  }
@@ -41,6 +49,15 @@
41
49
  var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-radio-checked-border-color)
42
50
  );
43
51
  }
52
+ /* Hover feedback */
53
+ .px-radio:hover:not(.is-disabled) {
54
+ --px-radio-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.35);
55
+ }
56
+ /* Active/pressed feedback */
57
+ .px-radio:active:not(.is-disabled) {
58
+ --px-radio-inset-highlight: inset -2px -2px 0 0 rgba(255, 255, 255, 0.2);
59
+ --px-radio-inset-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.15);
60
+ }
44
61
  /* Size variants */
45
62
  .px-radio--large {
46
63
  --px-radio-size: 22px;
@@ -90,7 +107,7 @@
90
107
  var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-radio-shadow-color)
91
108
  );
92
109
  }
93
- /* The pixel-art radio circle octagonal shape */
110
+ /* The pixel-art radio — diamond shape with 2px stepped edges */
94
111
  .px-radio__inner {
95
112
  position: relative;
96
113
  display: inline-flex;
@@ -101,19 +118,31 @@
101
118
  box-sizing: border-box;
102
119
  background: transparent;
103
120
 
104
- /* Pixel-art octagon clip path */
121
+ /* Pixel diamond clip-path: 2px staircase steps */
105
122
  --px-radio-pixel-shape: polygon(
106
- 30% 0%,
107
- 70% 0%,
108
- 100% 30%,
109
- 100% 70%,
110
- 70% 100%,
111
- 30% 100%,
112
- 0% 70%,
113
- 0% 30%
123
+ /* Top point */
124
+ calc(50% - 2px) 0,
125
+ calc(50% + 2px) 0,
126
+ /* Top-right stepped edge */
127
+ calc(100% - 4px) calc(50% - 4px),
128
+ calc(100% - 2px) calc(50% - 2px),
129
+ 100% calc(50% - 2px),
130
+ 100% calc(50% + 2px),
131
+ calc(100% - 2px) calc(50% + 2px),
132
+ calc(100% - 4px) calc(50% + 4px),
133
+ /* Bottom point */
134
+ calc(50% + 2px) 100%,
135
+ calc(50% - 2px) 100%,
136
+ /* Bottom-left stepped edge */
137
+ 4px calc(50% + 4px),
138
+ 2px calc(50% + 2px),
139
+ 0 calc(50% + 2px),
140
+ 0 calc(50% - 2px),
141
+ 2px calc(50% - 2px),
142
+ 4px calc(50% - 4px)
114
143
  );
115
144
  }
116
- /* Border layer – pixel octagon */
145
+ /* Border layer – pixel diamond */
117
146
  .px-radio__inner::before {
118
147
  content: "";
119
148
  position: absolute;
@@ -122,16 +151,19 @@
122
151
  clip-path: var(--px-radio-pixel-shape);
123
152
  z-index: 0;
124
153
  }
125
- /* Fill layer – pixel octagon */
154
+ /* Fill layer – pixel diamond with 3D bevel */
126
155
  .px-radio__inner::after {
127
156
  content: "";
128
157
  position: absolute;
129
158
  inset: 2px;
130
159
  background: var(--px-radio-bg-color);
131
160
  clip-path: var(--px-radio-pixel-shape);
161
+ box-shadow:
162
+ var(--px-radio-inset-highlight),
163
+ var(--px-radio-inset-shadow);
132
164
  z-index: 0;
133
165
  }
134
- /* Pixel dot indicator */
166
+ /* Pixel dot indicator — small diamond */
135
167
  .px-radio__dot {
136
168
  position: relative;
137
169
  z-index: 1;
@@ -139,16 +171,8 @@
139
171
  height: 6px;
140
172
  opacity: 0;
141
173
  background: var(--px-fill-color-blank);
142
- clip-path: polygon(
143
- 30% 0%,
144
- 70% 0%,
145
- 100% 30%,
146
- 100% 70%,
147
- 70% 100%,
148
- 30% 100%,
149
- 0% 70%,
150
- 0% 30%
151
- );
174
+ /* Simple 4-point diamond at small size */
175
+ clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%);
152
176
  }
153
177
  /* Label */
154
178
  .px-radio__label {
@@ -204,6 +228,15 @@
204
228
  var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-danger-dark)
205
229
  );
206
230
  }
231
+ /* Dark mode bevel adjustment */
232
+ html.dark .px-radio {
233
+ --px-radio-inset-highlight: inset -2px -2px 0 0 rgba(255, 255, 255, 0.08);
234
+ --px-radio-inset-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.2);
235
+ }
236
+ html.dark .px-radio.is-checked {
237
+ --px-radio-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.08);
238
+ --px-radio-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.2);
239
+ }
207
240
  /* Radio Group */
208
241
  .px-radio-group {
209
242
  display: inline-flex;
@@ -219,6 +252,10 @@
219
252
  --px-radio-border-color: var(--px-border-color);
220
253
  --px-radio-bg-color: var(--px-fill-color-blank);
221
254
  --px-radio-shadow-color: var(--px-shadow-color);
255
+
256
+ /* 3D bevel — sunken look (unchecked) */
257
+ --px-radio-inset-highlight: inset -2px -2px 0 0 rgba(255, 255, 255, 0.2);
258
+ --px-radio-inset-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.1);
222
259
  }
223
260
  /* Base Radio Styles */
224
261
  .px-radio {
@@ -239,7 +276,11 @@
239
276
  .px-radio.is-disabled .px-radio__inner {
240
277
  cursor: not-allowed;
241
278
  }
242
- /* Checked state */
279
+ /* Checked state — raised bevel */
280
+ .px-radio.is-checked {
281
+ --px-radio-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.2);
282
+ --px-radio-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.1);
283
+ }
243
284
  .px-radio.is-checked .px-radio__inner::before {
244
285
  background: var(--px-radio-checked-border-color);
245
286
  }
@@ -254,6 +295,15 @@
254
295
  var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-radio-checked-border-color)
255
296
  );
256
297
  }
298
+ /* Hover feedback */
299
+ .px-radio:hover:not(.is-disabled) {
300
+ --px-radio-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.35);
301
+ }
302
+ /* Active/pressed feedback */
303
+ .px-radio:active:not(.is-disabled) {
304
+ --px-radio-inset-highlight: inset -2px -2px 0 0 rgba(255, 255, 255, 0.2);
305
+ --px-radio-inset-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.15);
306
+ }
257
307
  /* Size variants */
258
308
  .px-radio--large {
259
309
  --px-radio-size: 22px;
@@ -303,7 +353,7 @@
303
353
  var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-radio-shadow-color)
304
354
  );
305
355
  }
306
- /* The pixel-art radio circle octagonal shape */
356
+ /* The pixel-art radio — diamond shape with 2px stepped edges */
307
357
  .px-radio__inner {
308
358
  position: relative;
309
359
  display: inline-flex;
@@ -314,19 +364,31 @@
314
364
  box-sizing: border-box;
315
365
  background: transparent;
316
366
 
317
- /* Pixel-art octagon clip path */
367
+ /* Pixel diamond clip-path: 2px staircase steps */
318
368
  --px-radio-pixel-shape: polygon(
319
- 30% 0%,
320
- 70% 0%,
321
- 100% 30%,
322
- 100% 70%,
323
- 70% 100%,
324
- 30% 100%,
325
- 0% 70%,
326
- 0% 30%
369
+ /* Top point */
370
+ calc(50% - 2px) 0,
371
+ calc(50% + 2px) 0,
372
+ /* Top-right stepped edge */
373
+ calc(100% - 4px) calc(50% - 4px),
374
+ calc(100% - 2px) calc(50% - 2px),
375
+ 100% calc(50% - 2px),
376
+ 100% calc(50% + 2px),
377
+ calc(100% - 2px) calc(50% + 2px),
378
+ calc(100% - 4px) calc(50% + 4px),
379
+ /* Bottom point */
380
+ calc(50% + 2px) 100%,
381
+ calc(50% - 2px) 100%,
382
+ /* Bottom-left stepped edge */
383
+ 4px calc(50% + 4px),
384
+ 2px calc(50% + 2px),
385
+ 0 calc(50% + 2px),
386
+ 0 calc(50% - 2px),
387
+ 2px calc(50% - 2px),
388
+ 4px calc(50% - 4px)
327
389
  );
328
390
  }
329
- /* Border layer – pixel octagon */
391
+ /* Border layer – pixel diamond */
330
392
  .px-radio__inner::before {
331
393
  content: "";
332
394
  position: absolute;
@@ -335,16 +397,19 @@
335
397
  clip-path: var(--px-radio-pixel-shape);
336
398
  z-index: 0;
337
399
  }
338
- /* Fill layer – pixel octagon */
400
+ /* Fill layer – pixel diamond with 3D bevel */
339
401
  .px-radio__inner::after {
340
402
  content: "";
341
403
  position: absolute;
342
404
  inset: 2px;
343
405
  background: var(--px-radio-bg-color);
344
406
  clip-path: var(--px-radio-pixel-shape);
407
+ box-shadow:
408
+ var(--px-radio-inset-highlight),
409
+ var(--px-radio-inset-shadow);
345
410
  z-index: 0;
346
411
  }
347
- /* Pixel dot indicator */
412
+ /* Pixel dot indicator — small diamond */
348
413
  .px-radio__dot {
349
414
  position: relative;
350
415
  z-index: 1;
@@ -352,16 +417,8 @@
352
417
  height: 6px;
353
418
  opacity: 0;
354
419
  background: var(--px-fill-color-blank);
355
- clip-path: polygon(
356
- 30% 0%,
357
- 70% 0%,
358
- 100% 30%,
359
- 100% 70%,
360
- 70% 100%,
361
- 30% 100%,
362
- 0% 70%,
363
- 0% 30%
364
- );
420
+ /* Simple 4-point diamond at small size */
421
+ clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%);
365
422
  }
366
423
  /* Label */
367
424
  .px-radio__label {
@@ -417,6 +474,15 @@
417
474
  var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-danger-dark)
418
475
  );
419
476
  }
477
+ /* Dark mode bevel adjustment */
478
+ html.dark .px-radio {
479
+ --px-radio-inset-highlight: inset -2px -2px 0 0 rgba(255, 255, 255, 0.08);
480
+ --px-radio-inset-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.2);
481
+ }
482
+ html.dark .px-radio.is-checked {
483
+ --px-radio-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.08);
484
+ --px-radio-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.2);
485
+ }
420
486
  /* Radio Group */
421
487
  .px-radio-group {
422
488
  display: inline-flex;
@@ -0,0 +1,95 @@
1
+ /* Resizable Group */
2
+ .px-resizable-group {
3
+ display: flex;
4
+ width: 100%;
5
+ height: 100%;
6
+ overflow: hidden;
7
+ box-sizing: border-box;
8
+ }
9
+ .px-resizable-group.is-horizontal {
10
+ flex-direction: row;
11
+ }
12
+ .px-resizable-group.is-vertical {
13
+ flex-direction: column;
14
+ }
15
+ /* Resizable Panel */
16
+ .px-resizable-panel {
17
+ overflow: auto;
18
+ position: relative;
19
+ box-sizing: border-box;
20
+ }
21
+ .px-resizable-panel.is-collapsed {
22
+ overflow: hidden;
23
+ }
24
+ /* Resizable Handle */
25
+ .px-resizable-handle {
26
+ flex: 0 0 8px;
27
+ position: relative;
28
+ display: flex;
29
+ align-items: center;
30
+ justify-content: center;
31
+ user-select: none;
32
+ z-index: 1;
33
+ cursor: col-resize;
34
+ transition: none;
35
+ background: var(--px-border-color);
36
+ box-sizing: border-box;
37
+
38
+ /* Pixel border effect via clip-path */
39
+ clip-path: polygon(
40
+ 0 2px,
41
+ 2px 2px,
42
+ 2px 0,
43
+ calc(100% - 2px) 0,
44
+ calc(100% - 2px) 2px,
45
+ 100% 2px,
46
+ 100% calc(100% - 2px),
47
+ calc(100% - 2px) calc(100% - 2px),
48
+ calc(100% - 2px) 100%,
49
+ 2px 100%,
50
+ 2px calc(100% - 2px),
51
+ 0 calc(100% - 2px)
52
+ );
53
+ }
54
+ .px-resizable-handle:hover {
55
+ background: var(--px-hover-border-color);
56
+ }
57
+ .px-resizable-handle:focus-visible {
58
+ outline: 2px solid var(--px-color-primary);
59
+ outline-offset: -2px;
60
+ }
61
+ /* Expanded hit area via ::before pseudo-element (not clipped by clip-path) */
62
+ .px-resizable-handle.has-hit-area::before {
63
+ content: '';
64
+ position: absolute;
65
+ inset: calc(-1 * var(--px-handle-hit-area, 0px));
66
+ z-index: -1;
67
+ }
68
+ /* Vertical handle */
69
+ .px-resizable-handle.is-vertical {
70
+ flex: 0 0 8px;
71
+ cursor: row-resize;
72
+ clip-path: polygon(
73
+ 2px 0,
74
+ calc(100% - 2px) 0,
75
+ calc(100% - 2px) 2px,
76
+ 100% 2px,
77
+ 100% calc(100% - 2px),
78
+ calc(100% - 2px) calc(100% - 2px),
79
+ calc(100% - 2px) 100%,
80
+ 2px 100%,
81
+ 2px calc(100% - 2px),
82
+ 0 calc(100% - 2px),
83
+ 0 2px,
84
+ 2px 2px
85
+ );
86
+ }
87
+ /* Dragging state */
88
+ .px-resizable-handle.is-dragging {
89
+ background: var(--px-color-primary);
90
+ }
91
+ /* Disabled state */
92
+ .px-resizable-handle.is-disabled {
93
+ cursor: not-allowed;
94
+ opacity: 0.5;
95
+ }