sakana-element 2.4.2 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/README.md +26 -2
  2. package/dist/es/Alert-Cq5F0XNt.js +57 -0
  3. package/dist/es/Avatar-CbgoH75Q.js +5 -0
  4. package/dist/es/Badge-BVu3hO8V.js +7 -0
  5. package/dist/es/Breadcrumb-Bh5y4LbC.js +6 -0
  6. package/dist/es/Button-B1wRI6I7.js +28 -0
  7. package/dist/es/Card-VMxMFix8.js +8 -0
  8. package/dist/es/Carousel-QnDHp3Ka.js +11 -0
  9. package/dist/es/ChatBubble-DYao4l85.js +5 -0
  10. package/dist/es/Checkbox-BbLzAqK2.js +228 -0
  11. package/dist/es/Collapse-BkKmhGQf.js +11 -0
  12. package/dist/es/Collapsible-B56M9eUW.js +12 -0
  13. package/dist/es/Command-CORaZKsJ.js +45 -0
  14. package/dist/es/ConfigProvider-CGLQ9b8M.js +35 -0
  15. package/dist/es/Diff-gDYKT1cl.js +17 -0
  16. package/dist/es/Divider-bI4lEaol.js +5 -0
  17. package/dist/es/Drawer-AnXxT-V6.js +6 -0
  18. package/dist/es/Dropdown-80RoE7gX.js +115 -0
  19. package/dist/es/FileInput-B6CyElTd.js +113 -0
  20. package/dist/es/Filter-CtIs_iO4.js +13 -0
  21. package/dist/es/Icon-hbRhI1iH.js +3 -0
  22. package/dist/es/Indicator-Bs6f41iJ.js +5 -0
  23. package/dist/es/Input-DJsDXAG1.js +8 -0
  24. package/dist/es/Kbd-DZf70Cdz.js +5 -0
  25. package/dist/es/Link-CLXoAvDl.js +5 -0
  26. package/dist/es/Loading-BHzOi8J-.js +27 -0
  27. package/dist/es/Message-DOxtRo8V.js +51 -0
  28. package/dist/es/Notification-F5UfnGWs.js +22 -0
  29. package/dist/es/Pixelate-DFpR42b2.js +12 -0
  30. package/dist/es/Popconfirm-C1LNG9db.js +8 -0
  31. package/dist/es/Progress-CDHJJUVL.js +6 -0
  32. package/dist/es/Radio-HMaWtyx9.js +11 -0
  33. package/dist/es/Resizable-DSYUZwLE.js +59 -0
  34. package/dist/es/Select-DaBVMoMB.js +31 -0
  35. package/dist/es/Skeleton-4hCbgDOF.js +7 -0
  36. package/dist/es/Switch-BCTrn4hn.js +11 -0
  37. package/dist/es/Table-B5twhEZC.js +5 -0
  38. package/dist/es/Tooltip-CDjXpGHn.js +4 -0
  39. package/dist/es/Validator-DoWa9KfA.js +16 -0
  40. package/dist/es/index.js +41 -140
  41. package/dist/index.css +2 -1
  42. package/dist/theme/Alert.css +1 -295
  43. package/dist/theme/Avatar.css +1 -86
  44. package/dist/theme/Badge.css +1 -214
  45. package/dist/theme/Breadcrumb.css +1 -192
  46. package/dist/theme/Button.css +1 -1570
  47. package/dist/theme/Card.css +1 -347
  48. package/dist/theme/Carousel.css +1 -0
  49. package/dist/theme/ChatBubble.css +1 -218
  50. package/dist/theme/Checkbox.css +1 -604
  51. package/dist/theme/Collapse.css +1 -764
  52. package/dist/theme/Collapsible.css +1 -0
  53. package/dist/theme/Command.css +1 -0
  54. package/dist/theme/Diff.css +1 -110
  55. package/dist/theme/Divider.css +1 -150
  56. package/dist/theme/Drawer.css +1 -206
  57. package/dist/theme/Dropdown.css +1 -471
  58. package/dist/theme/FileInput.css +1 -397
  59. package/dist/theme/Filter.css +1 -598
  60. package/dist/theme/Indicator.css +1 -159
  61. package/dist/theme/Input.css +1 -647
  62. package/dist/theme/Kbd.css +1 -104
  63. package/dist/theme/Link.css +1 -69
  64. package/dist/theme/Loading.css +1 -266
  65. package/dist/theme/Message.css +1 -565
  66. package/dist/theme/Notification.css +1 -316
  67. package/dist/theme/Popconfirm.css +1 -46
  68. package/dist/theme/Progress.css +1 -278
  69. package/dist/theme/Radio.css +1 -492
  70. package/dist/theme/Resizable.css +1 -95
  71. package/dist/theme/Select.css +1 -584
  72. package/dist/theme/Skeleton.css +1 -192
  73. package/dist/theme/Switch.css +1 -323
  74. package/dist/theme/Table.css +1 -680
  75. package/dist/theme/Validator.css +1 -25
  76. package/dist/theme/index.css +1 -341
  77. package/dist/types/components/Badge/types.d.ts +2 -0
  78. package/dist/types/components/Carousel/constants.d.ts +6 -0
  79. package/dist/types/components/Carousel/index.d.ts +77 -0
  80. package/dist/types/components/Carousel/types.d.ts +27 -0
  81. package/dist/types/components/Collapsible/constants.d.ts +6 -0
  82. package/dist/types/components/Collapsible/index.d.ts +85 -0
  83. package/dist/types/components/Collapsible/types.d.ts +22 -0
  84. package/dist/types/components/Command/constants.d.ts +4 -0
  85. package/dist/types/components/Command/index.d.ts +216 -0
  86. package/dist/types/components/Command/types.d.ts +59 -0
  87. package/dist/types/components/Validator/index.d.ts +1 -0
  88. package/dist/types/components/index.d.ts +3 -0
  89. package/dist/types/hooks/index.d.ts +1 -1
  90. package/dist/umd/index.css +2 -1
  91. package/dist/umd/index.css.gz +0 -0
  92. package/dist/umd/index.umd.cjs +1255 -5
  93. package/dist/umd/index.umd.cjs.gz +0 -0
  94. package/package.json +15 -3
  95. package/dist/es/Alert-DdAShH-x.js +0 -19
  96. package/dist/es/Avatar-BGTH7x40.js +0 -9
  97. package/dist/es/Badge-CYZ55qNe.js +0 -14
  98. package/dist/es/Breadcrumb-BTWTtzrN.js +0 -15
  99. package/dist/es/Button-GsSCWg5x.js +0 -24
  100. package/dist/es/Card-BhgzwQqo.js +0 -16
  101. package/dist/es/ChatBubble-4F481Agj.js +0 -9
  102. package/dist/es/Checkbox-C7vZGSTh.js +0 -51
  103. package/dist/es/Collapse-CbcSQig5.js +0 -53
  104. package/dist/es/ConfigProvider-K1UzjlRm.js +0 -45
  105. package/dist/es/Diff-B747pgwb.js +0 -64
  106. package/dist/es/Divider-BSu_1-AU.js +0 -9
  107. package/dist/es/Drawer-I2lCgyba.js +0 -40
  108. package/dist/es/Dropdown-B0J_c8Wv.js +0 -104
  109. package/dist/es/FileInput-CFg1wpsH.js +0 -33
  110. package/dist/es/Filter-nA8j-62U.js +0 -40
  111. package/dist/es/Form-C1b8Igns.js +0 -123
  112. package/dist/es/Icon-BulvH9Wm.js +0 -27
  113. package/dist/es/Indicator-BbW4iUkh.js +0 -9
  114. package/dist/es/Input-BUHFulIW.js +0 -42
  115. package/dist/es/Kbd-CeP2wkdE.js +0 -13
  116. package/dist/es/Link-Dks2bXo8.js +0 -11
  117. package/dist/es/Loading-DoBtVGWo.js +0 -92
  118. package/dist/es/Message-Ba_P4Wvy.js +0 -152
  119. package/dist/es/Notification-DzG8dLuk.js +0 -69
  120. package/dist/es/Overlay-DeyTycv0.js +0 -12
  121. package/dist/es/Pixelate-B21HKbSE.js +0 -39
  122. package/dist/es/Popconfirm-BqN3JxJ_.js +0 -23
  123. package/dist/es/Progress--6EJjbbM.js +0 -12
  124. package/dist/es/Radio-CrdrvrFH.js +0 -33
  125. package/dist/es/Resizable-By3ijQf0.js +0 -151
  126. package/dist/es/Select-Cq1Ucs_U.js +0 -133
  127. package/dist/es/Skeleton-ChCVgMSk.js +0 -15
  128. package/dist/es/Switch-DURmSH-T.js +0 -34
  129. package/dist/es/Table-BE2f9u65.js +0 -10
  130. package/dist/es/Tooltip-DR4Mc5Fh.js +0 -74
  131. package/dist/es/Validator-BYn72MYn.js +0 -40
  132. package/dist/es/hooks-dJGu-5DG.js +0 -170
  133. package/dist/es/utils-CnCdZsHG.js +0 -155
  134. package/dist/es/vendor-eombfMkP.js +0 -1351
  135. package/dist/theme/Form.css +0 -83
  136. package/dist/theme/Icon.css +0 -168
  137. package/dist/theme/Overlay.css +0 -12
  138. package/dist/theme/Tooltip.css +0 -235
@@ -1,598 +1 @@
1
- /* Filter Container */
2
- .px-filter {
3
- display: inline-flex;
4
- flex-wrap: wrap;
5
- gap: 8px;
6
- align-items: center;
7
-
8
- /* Shared pixel corner clip-path — 2px staircase */
9
- --px-filter-clip: polygon(
10
- 0 2px,
11
- 2px 2px,
12
- 2px 0,
13
- calc(100% - 2px) 0,
14
- calc(100% - 2px) 2px,
15
- 100% 2px,
16
- 100% calc(100% - 2px),
17
- calc(100% - 2px) calc(100% - 2px),
18
- calc(100% - 2px) 100%,
19
- 2px 100%,
20
- 2px calc(100% - 2px),
21
- 0 calc(100% - 2px)
22
- );
23
- }
24
- /* Reset Button — pixel chip with close icon */
25
- .px-filter__reset {
26
- display: inline-flex;
27
- align-items: center;
28
- justify-content: center;
29
- width: 30px;
30
- height: 30px;
31
- font-size: 14px;
32
- color: var(--px-text-color-primary);
33
- background: transparent;
34
- cursor: pointer;
35
- user-select: none;
36
- position: relative;
37
- transition: transform 0.1s;
38
- }
39
- /* Border layer */
40
- .px-filter__reset::before {
41
- content: "";
42
- position: absolute;
43
- inset: 0;
44
- background: var(--px-border-color);
45
- clip-path: var(--px-filter-clip);
46
- z-index: 0;
47
- }
48
- /* Fill layer with 3D bevel */
49
- .px-filter__reset::after {
50
- content: "";
51
- position: absolute;
52
- inset: 2px;
53
- background: var(--px-fill-color-blank);
54
- clip-path: var(--px-filter-clip);
55
- box-shadow:
56
- inset 2px 2px 0 0 rgba(255, 255, 255, 0.2),
57
- inset -2px -2px 0 0 rgba(0, 0, 0, 0.1);
58
- z-index: 0;
59
- }
60
- .px-filter__reset {
61
-
62
- filter: drop-shadow(
63
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-shadow-color)
64
- );
65
- }
66
- /* Icon sits above pseudo-elements */
67
- .px-filter__reset > * {
68
- position: relative;
69
- z-index: 1;
70
- }
71
- .px-filter__reset:hover {
72
- transform: translateY(-1px);
73
- }
74
- .px-filter__reset:hover::after {
75
- box-shadow:
76
- inset 2px 2px 0 0 rgba(255, 255, 255, 0.35),
77
- inset -2px -2px 0 0 rgba(0, 0, 0, 0.1);
78
- }
79
- .px-filter__reset:active {
80
- transform: translateY(1px);
81
- filter: drop-shadow(2px 2px 0px var(--px-shadow-color));
82
- }
83
- .px-filter__reset:active::after {
84
- box-shadow:
85
- inset -2px -2px 0 0 rgba(255, 255, 255, 0.2),
86
- inset 2px 2px 0 0 rgba(0, 0, 0, 0.1);
87
- }
88
- /* Filter Item Variables */
89
- .px-filter-item {
90
- --px-filter-item-height: 30px;
91
- --px-filter-item-color: var(--px-text-color-primary);
92
- --px-filter-item-bg-color: var(--px-fill-color-blank);
93
- --px-filter-item-border-color: var(--px-border-color);
94
- --px-filter-item-shadow-color: var(--px-shadow-color);
95
- --px-filter-item-active-color: var(--px-color-primary);
96
- --px-filter-item-active-border-color: var(--px-color-primary-dark);
97
- --px-filter-item-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.2);
98
- --px-filter-item-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.1);
99
- }
100
- /* Base Filter Item Styles — Pixel Chip */
101
- .px-filter-item {
102
- display: inline-flex;
103
- align-items: center;
104
- justify-content: center;
105
- height: var(--px-filter-item-height);
106
- padding: 0 12px;
107
- font-family: var(--px-font-family);
108
- font-size: var(--px-font-size-base);
109
- line-height: 1;
110
- color: var(--px-filter-item-color);
111
- background: transparent;
112
- cursor: pointer;
113
- user-select: none;
114
- position: relative;
115
- transition: transform 0.1s, width 0.2s, padding 0.2s, opacity 0.15s;
116
- }
117
- /* Border layer */
118
- .px-filter-item::before {
119
- content: "";
120
- position: absolute;
121
- inset: 0;
122
- background: var(--px-filter-item-border-color);
123
- clip-path: var(--px-filter-clip);
124
- z-index: 0;
125
- }
126
- /* Fill layer with 3D bevel */
127
- .px-filter-item::after {
128
- content: "";
129
- position: absolute;
130
- inset: 2px;
131
- background: var(--px-filter-item-bg-color);
132
- clip-path: var(--px-filter-clip);
133
- box-shadow:
134
- var(--px-filter-item-inset-highlight),
135
- var(--px-filter-item-inset-shadow);
136
- z-index: 0;
137
- }
138
- .px-filter-item {
139
- filter: drop-shadow(
140
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-filter-item-shadow-color)
141
- );
142
- }
143
- /* Pixel shadow via filter */
144
- /* Hover: lift */
145
- .px-filter-item:hover:not(.is-disabled):not(.is-hidden) {
146
- transform: translateY(-1px);
147
- }
148
- .px-filter-item:hover:not(.is-disabled):not(.is-hidden)::after {
149
- --px-filter-item-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.35);
150
- }
151
- /* Active/pressed: push down */
152
- .px-filter-item:active:not(.is-disabled):not(.is-hidden) {
153
- transform: translateY(1px);
154
- filter: drop-shadow(2px 2px 0px var(--px-filter-item-shadow-color));
155
- }
156
- .px-filter-item:active:not(.is-disabled):not(.is-hidden)::after {
157
- --px-filter-item-inset-highlight: inset -2px -2px 0 0 rgba(255, 255, 255, 0.2);
158
- --px-filter-item-inset-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.1);
159
- }
160
- /* Selected / Active state */
161
- .px-filter-item.is-active {
162
- --px-filter-item-color: var(--px-fill-color-blank);
163
- }
164
- .px-filter-item.is-active::before {
165
- background: var(--px-filter-item-active-border-color);
166
- }
167
- .px-filter-item.is-active::after {
168
- background: var(--px-filter-item-active-color);
169
- }
170
- .px-filter-item.is-active {
171
-
172
- filter: drop-shadow(
173
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-filter-item-active-border-color)
174
- );
175
- }
176
- /* Disabled state */
177
- .px-filter-item.is-disabled {
178
- opacity: 0.5;
179
- cursor: not-allowed;
180
- }
181
- /* Hidden / collapsed state (single-select with active selection) */
182
- .px-filter-item.is-hidden {
183
- width: 0;
184
- height: 0;
185
- padding: 0;
186
- overflow: hidden;
187
- opacity: 0;
188
- pointer-events: none;
189
- filter: none;
190
- margin: 0;
191
- border: 0;
192
- }
193
- .px-filter-item.is-hidden::before,
194
- .px-filter-item.is-hidden::after {
195
- display: none;
196
- }
197
- /* Hidden native input */
198
- .px-filter-item__original {
199
- position: absolute;
200
- width: 0;
201
- height: 0;
202
- opacity: 0;
203
- margin: 0;
204
- outline: none;
205
- }
206
- .px-filter-item__original:focus-visible ~ .px-filter-item__label {
207
- outline: 2px dashed var(--px-filter-item-active-color);
208
- outline-offset: 2px;
209
- }
210
- /* Label */
211
- .px-filter-item__label {
212
- position: relative;
213
- z-index: 1;
214
- font-family: var(--px-font-family);
215
- font-size: inherit;
216
- line-height: 1;
217
- color: inherit;
218
- pointer-events: none;
219
- }
220
- /* Size variants */
221
- .px-filter-item--large {
222
- --px-filter-item-height: 36px;
223
- padding: 0 16px;
224
- font-size: var(--px-font-size-base);
225
- }
226
- .px-filter-item--small {
227
- --px-filter-item-height: 24px;
228
- padding: 0 8px;
229
- font-size: var(--px-font-size-small);
230
-
231
- filter: drop-shadow(2px 2px 0px var(--px-filter-item-shadow-color));
232
- }
233
- .px-filter-item--small.is-active {
234
- filter: drop-shadow(2px 2px 0px var(--px-filter-item-active-border-color));
235
- }
236
- /* Reset button size matching */
237
- .px-filter-item--large ~ .px-filter__reset,
238
- .px-filter__reset:has(~ .px-filter-item--large) {
239
- width: 36px;
240
- height: 36px;
241
- font-size: 16px;
242
- }
243
- .px-filter-item--small ~ .px-filter__reset,
244
- .px-filter__reset:has(~ .px-filter-item--small) {
245
- width: 24px;
246
- height: 24px;
247
- font-size: 12px;
248
- }
249
- /* Type variants */
250
- .px-filter-item--primary {
251
- --px-filter-item-active-color: var(--px-color-primary);
252
- --px-filter-item-active-border-color: var(--px-color-primary-dark);
253
- }
254
- .px-filter-item--primary.is-active {
255
- filter: drop-shadow(
256
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-primary-dark)
257
- );
258
- }
259
- .px-filter-item--success {
260
- --px-filter-item-active-color: var(--px-color-success);
261
- --px-filter-item-active-border-color: var(--px-color-success-dark);
262
- }
263
- .px-filter-item--success.is-active {
264
- filter: drop-shadow(
265
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-success-dark)
266
- );
267
- }
268
- .px-filter-item--info {
269
- --px-filter-item-active-color: var(--px-color-info);
270
- --px-filter-item-active-border-color: var(--px-color-info-dark);
271
- }
272
- .px-filter-item--info.is-active {
273
- filter: drop-shadow(
274
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-info-dark)
275
- );
276
- }
277
- .px-filter-item--warning {
278
- --px-filter-item-active-color: var(--px-color-warning);
279
- --px-filter-item-active-border-color: var(--px-color-warning-dark);
280
- }
281
- .px-filter-item--warning.is-active {
282
- filter: drop-shadow(
283
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-warning-dark)
284
- );
285
- }
286
- .px-filter-item--danger {
287
- --px-filter-item-active-color: var(--px-color-danger);
288
- --px-filter-item-active-border-color: var(--px-color-danger-dark);
289
- }
290
- .px-filter-item--danger.is-active {
291
- filter: drop-shadow(
292
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-danger-dark)
293
- );
294
- }
295
- /* Dark mode bevel adjustment */
296
- html.dark .px-filter-item {
297
- --px-filter-item-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.08);
298
- --px-filter-item-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.2);
299
- }
300
- /* Filter Container */
301
- .px-filter {
302
- display: inline-flex;
303
- flex-wrap: wrap;
304
- gap: 8px;
305
- align-items: center;
306
-
307
- /* Shared pixel corner clip-path — 2px staircase */
308
- --px-filter-clip: polygon(
309
- 0 2px,
310
- 2px 2px,
311
- 2px 0,
312
- calc(100% - 2px) 0,
313
- calc(100% - 2px) 2px,
314
- 100% 2px,
315
- 100% calc(100% - 2px),
316
- calc(100% - 2px) calc(100% - 2px),
317
- calc(100% - 2px) 100%,
318
- 2px 100%,
319
- 2px calc(100% - 2px),
320
- 0 calc(100% - 2px)
321
- );
322
- }
323
- /* Reset Button — pixel chip with close icon */
324
- .px-filter__reset {
325
- display: inline-flex;
326
- align-items: center;
327
- justify-content: center;
328
- width: 30px;
329
- height: 30px;
330
- font-size: 14px;
331
- color: var(--px-text-color-primary);
332
- background: transparent;
333
- cursor: pointer;
334
- user-select: none;
335
- position: relative;
336
- transition: transform 0.1s;
337
- }
338
- /* Border layer */
339
- .px-filter__reset::before {
340
- content: "";
341
- position: absolute;
342
- inset: 0;
343
- background: var(--px-border-color);
344
- clip-path: var(--px-filter-clip);
345
- z-index: 0;
346
- }
347
- /* Fill layer with 3D bevel */
348
- .px-filter__reset::after {
349
- content: "";
350
- position: absolute;
351
- inset: 2px;
352
- background: var(--px-fill-color-blank);
353
- clip-path: var(--px-filter-clip);
354
- box-shadow:
355
- inset 2px 2px 0 0 rgba(255, 255, 255, 0.2),
356
- inset -2px -2px 0 0 rgba(0, 0, 0, 0.1);
357
- z-index: 0;
358
- }
359
- .px-filter__reset {
360
-
361
- filter: drop-shadow(
362
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-shadow-color)
363
- );
364
- }
365
- /* Icon sits above pseudo-elements */
366
- .px-filter__reset > * {
367
- position: relative;
368
- z-index: 1;
369
- }
370
- .px-filter__reset:hover {
371
- transform: translateY(-1px);
372
- }
373
- .px-filter__reset:hover::after {
374
- box-shadow:
375
- inset 2px 2px 0 0 rgba(255, 255, 255, 0.35),
376
- inset -2px -2px 0 0 rgba(0, 0, 0, 0.1);
377
- }
378
- .px-filter__reset:active {
379
- transform: translateY(1px);
380
- filter: drop-shadow(2px 2px 0px var(--px-shadow-color));
381
- }
382
- .px-filter__reset:active::after {
383
- box-shadow:
384
- inset -2px -2px 0 0 rgba(255, 255, 255, 0.2),
385
- inset 2px 2px 0 0 rgba(0, 0, 0, 0.1);
386
- }
387
- /* Filter Item Variables */
388
- .px-filter-item {
389
- --px-filter-item-height: 30px;
390
- --px-filter-item-color: var(--px-text-color-primary);
391
- --px-filter-item-bg-color: var(--px-fill-color-blank);
392
- --px-filter-item-border-color: var(--px-border-color);
393
- --px-filter-item-shadow-color: var(--px-shadow-color);
394
- --px-filter-item-active-color: var(--px-color-primary);
395
- --px-filter-item-active-border-color: var(--px-color-primary-dark);
396
- --px-filter-item-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.2);
397
- --px-filter-item-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.1);
398
- }
399
- /* Base Filter Item Styles — Pixel Chip */
400
- .px-filter-item {
401
- display: inline-flex;
402
- align-items: center;
403
- justify-content: center;
404
- height: var(--px-filter-item-height);
405
- padding: 0 12px;
406
- font-family: var(--px-font-family);
407
- font-size: var(--px-font-size-base);
408
- line-height: 1;
409
- color: var(--px-filter-item-color);
410
- background: transparent;
411
- cursor: pointer;
412
- user-select: none;
413
- position: relative;
414
- transition: transform 0.1s, width 0.2s, padding 0.2s, opacity 0.15s;
415
- }
416
- /* Border layer */
417
- .px-filter-item::before {
418
- content: "";
419
- position: absolute;
420
- inset: 0;
421
- background: var(--px-filter-item-border-color);
422
- clip-path: var(--px-filter-clip);
423
- z-index: 0;
424
- }
425
- /* Fill layer with 3D bevel */
426
- .px-filter-item::after {
427
- content: "";
428
- position: absolute;
429
- inset: 2px;
430
- background: var(--px-filter-item-bg-color);
431
- clip-path: var(--px-filter-clip);
432
- box-shadow:
433
- var(--px-filter-item-inset-highlight),
434
- var(--px-filter-item-inset-shadow);
435
- z-index: 0;
436
- }
437
- .px-filter-item {
438
- filter: drop-shadow(
439
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-filter-item-shadow-color)
440
- );
441
- }
442
- /* Pixel shadow via filter */
443
- /* Hover: lift */
444
- .px-filter-item:hover:not(.is-disabled):not(.is-hidden) {
445
- transform: translateY(-1px);
446
- }
447
- .px-filter-item:hover:not(.is-disabled):not(.is-hidden)::after {
448
- --px-filter-item-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.35);
449
- }
450
- /* Active/pressed: push down */
451
- .px-filter-item:active:not(.is-disabled):not(.is-hidden) {
452
- transform: translateY(1px);
453
- filter: drop-shadow(2px 2px 0px var(--px-filter-item-shadow-color));
454
- }
455
- .px-filter-item:active:not(.is-disabled):not(.is-hidden)::after {
456
- --px-filter-item-inset-highlight: inset -2px -2px 0 0 rgba(255, 255, 255, 0.2);
457
- --px-filter-item-inset-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.1);
458
- }
459
- /* Selected / Active state */
460
- .px-filter-item.is-active {
461
- --px-filter-item-color: var(--px-fill-color-blank);
462
- }
463
- .px-filter-item.is-active::before {
464
- background: var(--px-filter-item-active-border-color);
465
- }
466
- .px-filter-item.is-active::after {
467
- background: var(--px-filter-item-active-color);
468
- }
469
- .px-filter-item.is-active {
470
-
471
- filter: drop-shadow(
472
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-filter-item-active-border-color)
473
- );
474
- }
475
- /* Disabled state */
476
- .px-filter-item.is-disabled {
477
- opacity: 0.5;
478
- cursor: not-allowed;
479
- }
480
- /* Hidden / collapsed state (single-select with active selection) */
481
- .px-filter-item.is-hidden {
482
- width: 0;
483
- height: 0;
484
- padding: 0;
485
- overflow: hidden;
486
- opacity: 0;
487
- pointer-events: none;
488
- filter: none;
489
- margin: 0;
490
- border: 0;
491
- }
492
- .px-filter-item.is-hidden::before,
493
- .px-filter-item.is-hidden::after {
494
- display: none;
495
- }
496
- /* Hidden native input */
497
- .px-filter-item__original {
498
- position: absolute;
499
- width: 0;
500
- height: 0;
501
- opacity: 0;
502
- margin: 0;
503
- outline: none;
504
- }
505
- .px-filter-item__original:focus-visible ~ .px-filter-item__label {
506
- outline: 2px dashed var(--px-filter-item-active-color);
507
- outline-offset: 2px;
508
- }
509
- /* Label */
510
- .px-filter-item__label {
511
- position: relative;
512
- z-index: 1;
513
- font-family: var(--px-font-family);
514
- font-size: inherit;
515
- line-height: 1;
516
- color: inherit;
517
- pointer-events: none;
518
- }
519
- /* Size variants */
520
- .px-filter-item--large {
521
- --px-filter-item-height: 36px;
522
- padding: 0 16px;
523
- font-size: var(--px-font-size-base);
524
- }
525
- .px-filter-item--small {
526
- --px-filter-item-height: 24px;
527
- padding: 0 8px;
528
- font-size: var(--px-font-size-small);
529
-
530
- filter: drop-shadow(2px 2px 0px var(--px-filter-item-shadow-color));
531
- }
532
- .px-filter-item--small.is-active {
533
- filter: drop-shadow(2px 2px 0px var(--px-filter-item-active-border-color));
534
- }
535
- /* Reset button size matching */
536
- .px-filter-item--large ~ .px-filter__reset,
537
- .px-filter__reset:has(~ .px-filter-item--large) {
538
- width: 36px;
539
- height: 36px;
540
- font-size: 16px;
541
- }
542
- .px-filter-item--small ~ .px-filter__reset,
543
- .px-filter__reset:has(~ .px-filter-item--small) {
544
- width: 24px;
545
- height: 24px;
546
- font-size: 12px;
547
- }
548
- /* Type variants */
549
- .px-filter-item--primary {
550
- --px-filter-item-active-color: var(--px-color-primary);
551
- --px-filter-item-active-border-color: var(--px-color-primary-dark);
552
- }
553
- .px-filter-item--primary.is-active {
554
- filter: drop-shadow(
555
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-primary-dark)
556
- );
557
- }
558
- .px-filter-item--success {
559
- --px-filter-item-active-color: var(--px-color-success);
560
- --px-filter-item-active-border-color: var(--px-color-success-dark);
561
- }
562
- .px-filter-item--success.is-active {
563
- filter: drop-shadow(
564
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-success-dark)
565
- );
566
- }
567
- .px-filter-item--info {
568
- --px-filter-item-active-color: var(--px-color-info);
569
- --px-filter-item-active-border-color: var(--px-color-info-dark);
570
- }
571
- .px-filter-item--info.is-active {
572
- filter: drop-shadow(
573
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-info-dark)
574
- );
575
- }
576
- .px-filter-item--warning {
577
- --px-filter-item-active-color: var(--px-color-warning);
578
- --px-filter-item-active-border-color: var(--px-color-warning-dark);
579
- }
580
- .px-filter-item--warning.is-active {
581
- filter: drop-shadow(
582
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-warning-dark)
583
- );
584
- }
585
- .px-filter-item--danger {
586
- --px-filter-item-active-color: var(--px-color-danger);
587
- --px-filter-item-active-border-color: var(--px-color-danger-dark);
588
- }
589
- .px-filter-item--danger.is-active {
590
- filter: drop-shadow(
591
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-danger-dark)
592
- );
593
- }
594
- /* Dark mode bevel adjustment */
595
- html.dark .px-filter-item {
596
- --px-filter-item-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.08);
597
- --px-filter-item-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.2);
598
- }
1
+ .px-filter-item{--px-filter-item-height:30px;--px-filter-item-color:var(--px-text-color-primary);--px-filter-item-bg-color:var(--px-fill-color-blank);--px-filter-item-border-color:var(--px-border-color);--px-filter-item-shadow-color:var(--px-shadow-color);--px-filter-item-active-color:var(--px-color-primary);--px-filter-item-active-border-color:var(--px-color-primary-dark);--px-filter-item-inset-highlight:inset 2px 2px 0 0 #fff3;--px-filter-item-inset-shadow:inset -2px -2px 0 0 #0000001a;height:var(--px-filter-item-height);font-family:var(--px-font-family);font-size:var(--px-font-size-base);color:var(--px-filter-item-color);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;justify-content:center;align-items:center;padding:0 12px;line-height:1;transition:transform .1s,width .2s,padding .2s,opacity .15s;display:inline-flex;position:relative}.px-filter__reset:has(~.px-filter-item--large){width:36px;height:36px;font-size:16px}.px-filter__reset:has(~.px-filter-item--small){width:24px;height:24px;font-size:12px}.px-filter{--px-filter-clip:polygon(0 2px, 2px 2px, 2px 0, calc(100% - 2px) 0, calc(100% - 2px) 2px, 100% 2px, 100% calc(100% - 2px), calc(100% - 2px) calc(100% - 2px), calc(100% - 2px) 100%, 2px 100%, 2px calc(100% - 2px), 0 calc(100% - 2px));flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.px-filter__reset{width:30px;height:30px;color:var(--px-text-color-primary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;justify-content:center;align-items:center;font-size:14px;transition:transform .1s;display:inline-flex;position:relative}.px-filter__reset:before{content:"";background:var(--px-border-color);clip-path:var(--px-filter-clip);z-index:0;position:absolute;inset:0}.px-filter__reset:after{content:"";background:var(--px-fill-color-blank);clip-path:var(--px-filter-clip);z-index:0;position:absolute;inset:2px;box-shadow:inset 2px 2px #fff3,inset -2px -2px #0000001a}.px-filter__reset{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-shadow-color))}.px-filter__reset>*{z-index:1;position:relative}.px-filter__reset:hover{transform:translateY(-1px)}.px-filter__reset:hover:after{box-shadow:inset 2px 2px #ffffff59,inset -2px -2px #0000001a}.px-filter__reset:active{filter:drop-shadow(2px 2px 0px var(--px-shadow-color));transform:translateY(1px)}.px-filter__reset:active:after{box-shadow:inset -2px -2px #fff3,inset 2px 2px #0000001a}.px-filter-item{--px-filter-item-height:30px;--px-filter-item-color:var(--px-text-color-primary);--px-filter-item-bg-color:var(--px-fill-color-blank);--px-filter-item-border-color:var(--px-border-color);--px-filter-item-shadow-color:var(--px-shadow-color);--px-filter-item-active-color:var(--px-color-primary);--px-filter-item-active-border-color:var(--px-color-primary-dark);--px-filter-item-inset-highlight:inset 2px 2px 0 0 #fff3;--px-filter-item-inset-shadow:inset -2px -2px 0 0 #0000001a;height:var(--px-filter-item-height);font-family:var(--px-font-family);font-size:var(--px-font-size-base);color:var(--px-filter-item-color);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;justify-content:center;align-items:center;padding:0 12px;line-height:1;transition:transform .1s,width .2s,padding .2s,opacity .15s;display:inline-flex;position:relative}.px-filter-item:before{content:"";background:var(--px-filter-item-border-color);clip-path:var(--px-filter-clip);z-index:0;position:absolute;inset:0}.px-filter-item:after{content:"";background:var(--px-filter-item-bg-color);clip-path:var(--px-filter-clip);box-shadow:var(--px-filter-item-inset-highlight), var(--px-filter-item-inset-shadow);z-index:0;position:absolute;inset:2px}.px-filter-item{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-filter-item-shadow-color))}.px-filter-item:hover:not(.is-disabled):not(.is-hidden){transform:translateY(-1px)}.px-filter-item:hover:not(.is-disabled):not(.is-hidden):after{--px-filter-item-inset-highlight:inset 2px 2px 0 0 #ffffff59}.px-filter-item:active:not(.is-disabled):not(.is-hidden){filter:drop-shadow(2px 2px 0px var(--px-filter-item-shadow-color));transform:translateY(1px)}.px-filter-item:active:not(.is-disabled):not(.is-hidden):after{--px-filter-item-inset-highlight:inset -2px -2px 0 0 #fff3;--px-filter-item-inset-shadow:inset 2px 2px 0 0 #0000001a}.px-filter-item.is-active{--px-filter-item-color:var(--px-fill-color-blank)}.px-filter-item.is-active:before{background:var(--px-filter-item-active-border-color)}.px-filter-item.is-active:after{background:var(--px-filter-item-active-color)}.px-filter-item.is-active{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-filter-item-active-border-color))}.px-filter-item.is-disabled{opacity:.5;cursor:not-allowed}.px-filter-item.is-hidden{opacity:0;pointer-events:none;filter:none;border:0;width:0;height:0;margin:0;padding:0;overflow:hidden}.px-filter-item.is-hidden:before,.px-filter-item.is-hidden:after{display:none}.px-filter-item__original{opacity:0;outline:none;width:0;height:0;margin:0;position:absolute}.px-filter-item__original:focus-visible~.px-filter-item__label{outline:2px dashed var(--px-filter-item-active-color);outline-offset:2px}.px-filter-item__label{z-index:1;font-family:var(--px-font-family);font-size:inherit;color:inherit;pointer-events:none;line-height:1;position:relative}.px-filter-item--large{--px-filter-item-height:36px;font-size:var(--px-font-size-base);padding:0 16px}.px-filter-item--small{--px-filter-item-height:24px;font-size:var(--px-font-size-small);filter:drop-shadow(2px 2px 0px var(--px-filter-item-shadow-color));padding:0 8px}.px-filter-item--small.is-active{filter:drop-shadow(2px 2px 0px var(--px-filter-item-active-border-color))}.px-filter-item--large~.px-filter__reset{width:36px;height:36px;font-size:16px}.px-filter__reset:has(~.px-filter-item--large){width:36px;height:36px;font-size:16px}.px-filter-item--small~.px-filter__reset{width:24px;height:24px;font-size:12px}.px-filter__reset:has(~.px-filter-item--small){width:24px;height:24px;font-size:12px}.px-filter-item--primary{--px-filter-item-active-color:var(--px-color-primary);--px-filter-item-active-border-color:var(--px-color-primary-dark)}.px-filter-item--primary.is-active{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-primary-dark))}.px-filter-item--success{--px-filter-item-active-color:var(--px-color-success);--px-filter-item-active-border-color:var(--px-color-success-dark)}.px-filter-item--success.is-active{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-success-dark))}.px-filter-item--info{--px-filter-item-active-color:var(--px-color-info);--px-filter-item-active-border-color:var(--px-color-info-dark)}.px-filter-item--info.is-active{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-info-dark))}.px-filter-item--warning{--px-filter-item-active-color:var(--px-color-warning);--px-filter-item-active-border-color:var(--px-color-warning-dark)}.px-filter-item--warning.is-active{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-warning-dark))}.px-filter-item--danger{--px-filter-item-active-color:var(--px-color-danger);--px-filter-item-active-border-color:var(--px-color-danger-dark)}.px-filter-item--danger.is-active{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-danger-dark))}html.dark .px-filter-item{--px-filter-item-inset-highlight:inset 2px 2px 0 0 #ffffff14;--px-filter-item-inset-shadow:inset -2px -2px 0 0 #0003}