sakana-element 2.4.2 → 2.5.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 (137) hide show
  1. package/dist/es/Alert-Bh6HeGRU.js +57 -0
  2. package/dist/es/Avatar-NF4bQN7G.js +5 -0
  3. package/dist/es/Badge-CHgxCwjo.js +7 -0
  4. package/dist/es/Breadcrumb-lEWE4Gu6.js +6 -0
  5. package/dist/es/Button-BM129Q7H.js +28 -0
  6. package/dist/es/Card-DAAF5q-g.js +8 -0
  7. package/dist/es/Carousel-Cc98Eg3m.js +11 -0
  8. package/dist/es/ChatBubble-DvRSjkcV.js +5 -0
  9. package/dist/es/Checkbox-WwH8lZhh.js +228 -0
  10. package/dist/es/Collapse-CR_RWE5e.js +11 -0
  11. package/dist/es/Collapsible-BHg6BxmU.js +12 -0
  12. package/dist/es/Command-DM1kXZ6n.js +45 -0
  13. package/dist/es/ConfigProvider-Bfp86-Oj.js +35 -0
  14. package/dist/es/Diff-Cs62zIBX.js +17 -0
  15. package/dist/es/Divider-Yq-jZAD6.js +5 -0
  16. package/dist/es/Drawer-DTIUkiIQ.js +6 -0
  17. package/dist/es/Dropdown-uSRkAnxr.js +115 -0
  18. package/dist/es/FileInput-rT_BAYOK.js +113 -0
  19. package/dist/es/Filter-pj4lwoJ3.js +13 -0
  20. package/dist/es/Icon-DXRJjblp.js +3 -0
  21. package/dist/es/Indicator-BeFoSuXk.js +5 -0
  22. package/dist/es/Input-DL5clGaQ.js +8 -0
  23. package/dist/es/Kbd-BK_mWOUQ.js +5 -0
  24. package/dist/es/Link-t_r2AmyI.js +5 -0
  25. package/dist/es/Loading-CfMeogGy.js +27 -0
  26. package/dist/es/Message-DVd-37vE.js +51 -0
  27. package/dist/es/Notification-DzFscVIb.js +22 -0
  28. package/dist/es/Pixelate-CnY7ulip.js +12 -0
  29. package/dist/es/Popconfirm-BeIJD0c1.js +8 -0
  30. package/dist/es/Progress-DkjXY0in.js +6 -0
  31. package/dist/es/Radio-BEFq7s6x.js +11 -0
  32. package/dist/es/Resizable-CiWcvscr.js +59 -0
  33. package/dist/es/Select-_AakAT4E.js +31 -0
  34. package/dist/es/Skeleton-HaEvHu7t.js +7 -0
  35. package/dist/es/Switch-DTwoMkmG.js +11 -0
  36. package/dist/es/Table-CtnNz-I3.js +5 -0
  37. package/dist/es/Tooltip-C3XS2Ue8.js +4 -0
  38. package/dist/es/Validator-B_i9IpaG.js +16 -0
  39. package/dist/es/index.js +41 -140
  40. package/dist/index.css +2 -1
  41. package/dist/theme/Alert.css +1 -295
  42. package/dist/theme/Avatar.css +1 -86
  43. package/dist/theme/Badge.css +1 -214
  44. package/dist/theme/Breadcrumb.css +1 -192
  45. package/dist/theme/Button.css +1 -1570
  46. package/dist/theme/Card.css +1 -347
  47. package/dist/theme/Carousel.css +1 -0
  48. package/dist/theme/ChatBubble.css +1 -218
  49. package/dist/theme/Checkbox.css +1 -604
  50. package/dist/theme/Collapse.css +1 -764
  51. package/dist/theme/Collapsible.css +1 -0
  52. package/dist/theme/Command.css +1 -0
  53. package/dist/theme/Diff.css +1 -110
  54. package/dist/theme/Divider.css +1 -150
  55. package/dist/theme/Drawer.css +1 -206
  56. package/dist/theme/Dropdown.css +1 -471
  57. package/dist/theme/FileInput.css +1 -397
  58. package/dist/theme/Filter.css +1 -598
  59. package/dist/theme/Indicator.css +1 -159
  60. package/dist/theme/Input.css +1 -647
  61. package/dist/theme/Kbd.css +1 -104
  62. package/dist/theme/Link.css +1 -69
  63. package/dist/theme/Loading.css +1 -266
  64. package/dist/theme/Message.css +1 -565
  65. package/dist/theme/Notification.css +1 -316
  66. package/dist/theme/Popconfirm.css +1 -46
  67. package/dist/theme/Progress.css +1 -278
  68. package/dist/theme/Radio.css +1 -492
  69. package/dist/theme/Resizable.css +1 -95
  70. package/dist/theme/Select.css +1 -584
  71. package/dist/theme/Skeleton.css +1 -192
  72. package/dist/theme/Switch.css +1 -323
  73. package/dist/theme/Table.css +1 -680
  74. package/dist/theme/Validator.css +1 -25
  75. package/dist/theme/index.css +1 -341
  76. package/dist/types/components/Badge/types.d.ts +2 -0
  77. package/dist/types/components/Carousel/constants.d.ts +6 -0
  78. package/dist/types/components/Carousel/index.d.ts +77 -0
  79. package/dist/types/components/Carousel/types.d.ts +27 -0
  80. package/dist/types/components/Collapsible/constants.d.ts +6 -0
  81. package/dist/types/components/Collapsible/index.d.ts +85 -0
  82. package/dist/types/components/Collapsible/types.d.ts +22 -0
  83. package/dist/types/components/Command/constants.d.ts +4 -0
  84. package/dist/types/components/Command/index.d.ts +216 -0
  85. package/dist/types/components/Command/types.d.ts +59 -0
  86. package/dist/types/components/Validator/index.d.ts +1 -0
  87. package/dist/types/components/index.d.ts +3 -0
  88. package/dist/types/hooks/index.d.ts +1 -1
  89. package/dist/umd/index.css +2 -1
  90. package/dist/umd/index.css.gz +0 -0
  91. package/dist/umd/index.umd.cjs +1255 -5
  92. package/dist/umd/index.umd.cjs.gz +0 -0
  93. package/package.json +1 -2
  94. package/dist/es/Alert-DdAShH-x.js +0 -19
  95. package/dist/es/Avatar-BGTH7x40.js +0 -9
  96. package/dist/es/Badge-CYZ55qNe.js +0 -14
  97. package/dist/es/Breadcrumb-BTWTtzrN.js +0 -15
  98. package/dist/es/Button-GsSCWg5x.js +0 -24
  99. package/dist/es/Card-BhgzwQqo.js +0 -16
  100. package/dist/es/ChatBubble-4F481Agj.js +0 -9
  101. package/dist/es/Checkbox-C7vZGSTh.js +0 -51
  102. package/dist/es/Collapse-CbcSQig5.js +0 -53
  103. package/dist/es/ConfigProvider-K1UzjlRm.js +0 -45
  104. package/dist/es/Diff-B747pgwb.js +0 -64
  105. package/dist/es/Divider-BSu_1-AU.js +0 -9
  106. package/dist/es/Drawer-I2lCgyba.js +0 -40
  107. package/dist/es/Dropdown-B0J_c8Wv.js +0 -104
  108. package/dist/es/FileInput-CFg1wpsH.js +0 -33
  109. package/dist/es/Filter-nA8j-62U.js +0 -40
  110. package/dist/es/Form-C1b8Igns.js +0 -123
  111. package/dist/es/Icon-BulvH9Wm.js +0 -27
  112. package/dist/es/Indicator-BbW4iUkh.js +0 -9
  113. package/dist/es/Input-BUHFulIW.js +0 -42
  114. package/dist/es/Kbd-CeP2wkdE.js +0 -13
  115. package/dist/es/Link-Dks2bXo8.js +0 -11
  116. package/dist/es/Loading-DoBtVGWo.js +0 -92
  117. package/dist/es/Message-Ba_P4Wvy.js +0 -152
  118. package/dist/es/Notification-DzG8dLuk.js +0 -69
  119. package/dist/es/Overlay-DeyTycv0.js +0 -12
  120. package/dist/es/Pixelate-B21HKbSE.js +0 -39
  121. package/dist/es/Popconfirm-BqN3JxJ_.js +0 -23
  122. package/dist/es/Progress--6EJjbbM.js +0 -12
  123. package/dist/es/Radio-CrdrvrFH.js +0 -33
  124. package/dist/es/Resizable-By3ijQf0.js +0 -151
  125. package/dist/es/Select-Cq1Ucs_U.js +0 -133
  126. package/dist/es/Skeleton-ChCVgMSk.js +0 -15
  127. package/dist/es/Switch-DURmSH-T.js +0 -34
  128. package/dist/es/Table-BE2f9u65.js +0 -10
  129. package/dist/es/Tooltip-DR4Mc5Fh.js +0 -74
  130. package/dist/es/Validator-BYn72MYn.js +0 -40
  131. package/dist/es/hooks-dJGu-5DG.js +0 -170
  132. package/dist/es/utils-CnCdZsHG.js +0 -155
  133. package/dist/es/vendor-eombfMkP.js +0 -1351
  134. package/dist/theme/Form.css +0 -83
  135. package/dist/theme/Icon.css +0 -168
  136. package/dist/theme/Overlay.css +0 -12
  137. package/dist/theme/Tooltip.css +0 -235
@@ -1,604 +1 @@
1
- /* Checkbox Variables */
2
- .px-checkbox {
3
- --px-checkbox-size: 18px;
4
- --px-checkbox-checked-color: var(--px-color-primary);
5
- --px-checkbox-checked-border-color: var(--px-color-primary-dark);
6
- --px-checkbox-border-color: var(--px-border-color);
7
- --px-checkbox-bg-color: var(--px-fill-color-blank);
8
- --px-checkbox-shadow-color: var(--px-shadow-color);
9
-
10
- /* 3D bevel — sunken look (unchecked) */
11
- --px-checkbox-inset-highlight: inset -2px -2px 0 0 rgba(255, 255, 255, 0.2);
12
- --px-checkbox-inset-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.1);
13
- }
14
- /* Base Checkbox Styles */
15
- .px-checkbox {
16
- display: inline-flex;
17
- align-items: center;
18
- font-size: var(--px-font-size-base);
19
- font-family: var(--px-font-family);
20
- line-height: 1;
21
- cursor: pointer;
22
- user-select: none;
23
- white-space: nowrap;
24
- }
25
- /* Disabled state */
26
- .px-checkbox.is-disabled {
27
- opacity: 0.5;
28
- cursor: not-allowed;
29
- }
30
- .px-checkbox.is-disabled .px-checkbox__inner {
31
- cursor: not-allowed;
32
- }
33
- /* Checked & Indeterminate shared styles */
34
- .px-checkbox.is-checked .px-checkbox__inner::before, .px-checkbox.is-indeterminate .px-checkbox__inner::before {
35
- background: var(--px-checkbox-checked-border-color);
36
- }
37
- .px-checkbox.is-checked .px-checkbox__inner::after, .px-checkbox.is-indeterminate .px-checkbox__inner::after {
38
- background: var(--px-checkbox-checked-color);
39
- }
40
- .px-checkbox.is-checked .px-checkbox__inner .px-checkbox__tick, .px-checkbox.is-indeterminate .px-checkbox__inner .px-checkbox__tick {
41
- opacity: 1;
42
- }
43
- /* Checked state — raised bevel */
44
- .px-checkbox.is-checked {
45
- --px-checkbox-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.2);
46
- --px-checkbox-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.1);
47
- }
48
- .px-checkbox.is-checked .px-checkbox__input {
49
- filter: drop-shadow(
50
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-checkbox-checked-border-color)
51
- );
52
- }
53
- /* Hover feedback */
54
- .px-checkbox:hover:not(.is-disabled) .px-checkbox__inner::after {
55
- --px-checkbox-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.35);
56
- }
57
- /* Active/pressed feedback */
58
- .px-checkbox:active:not(.is-disabled) .px-checkbox__inner::after {
59
- --px-checkbox-inset-highlight: inset -2px -2px 0 0 rgba(255, 255, 255, 0.2);
60
- --px-checkbox-inset-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.15);
61
- }
62
- /* Indeterminate state */
63
- .px-checkbox.is-indeterminate .px-checkbox__inner .px-checkbox__tick {
64
- /* Override checkmark with a pixel-art horizontal dash */
65
- clip-path: none;
66
- position: absolute;
67
- width: 8px;
68
- height: 2px;
69
- background: var(--px-fill-color-blank);
70
- top: 50%;
71
- left: 50%;
72
- transform: translate(-50%, -50%);
73
- }
74
- .px-checkbox.is-indeterminate .px-checkbox__input {
75
- filter: none;
76
- }
77
- /* Size variants */
78
- .px-checkbox--large {
79
- --px-checkbox-size: 22px;
80
- font-size: var(--px-font-size-base);
81
- }
82
- .px-checkbox--large .px-checkbox__tick {
83
- width: 12px;
84
- height: 12px;
85
- }
86
- .px-checkbox--large.is-indeterminate .px-checkbox__inner .px-checkbox__tick {
87
- width: 10px;
88
- height: 2px;
89
- }
90
- .px-checkbox--small {
91
- --px-checkbox-size: 14px;
92
- font-size: var(--px-font-size-small);
93
- }
94
- .px-checkbox--small .px-checkbox__input {
95
- filter: drop-shadow(2px 2px 0px var(--px-checkbox-shadow-color));
96
- }
97
- .px-checkbox--small .px-checkbox__tick {
98
- width: 8px;
99
- height: 8px;
100
- }
101
- .px-checkbox--small.is-checked .px-checkbox__input {
102
- filter: drop-shadow(2px 2px 0px var(--px-checkbox-checked-border-color));
103
- }
104
- .px-checkbox--small.is-indeterminate .px-checkbox__input {
105
- filter: none;
106
- }
107
- .px-checkbox--small.is-indeterminate .px-checkbox__inner .px-checkbox__tick {
108
- width: 6px;
109
- height: 2px;
110
- }
111
- /* Hidden native input */
112
- .px-checkbox__original {
113
- position: absolute;
114
- width: 0;
115
- height: 0;
116
- opacity: 0;
117
- margin: 0;
118
- outline: none;
119
- }
120
- .px-checkbox__original:focus-visible ~ .px-checkbox__inner {
121
- outline: 2px dashed var(--px-checkbox-checked-color);
122
- outline-offset: 2px;
123
- }
124
- /* Input wrapper */
125
- .px-checkbox__input {
126
- position: relative;
127
- display: inline-flex;
128
- align-items: center;
129
- justify-content: center;
130
- flex-shrink: 0;
131
-
132
- /* Pixel shadow via drop-shadow */
133
- filter: drop-shadow(
134
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-checkbox-shadow-color)
135
- );
136
- }
137
- /* The pixel-art checkbox box */
138
- .px-checkbox__inner {
139
- position: relative;
140
- display: inline-flex;
141
- align-items: center;
142
- justify-content: center;
143
- width: var(--px-checkbox-size);
144
- height: var(--px-checkbox-size);
145
- box-sizing: border-box;
146
- background: transparent;
147
-
148
- --px-checkbox-pixel-corners: polygon(
149
- 0 2px,
150
- 2px 2px,
151
- 2px 0,
152
- calc(100% - 2px) 0,
153
- calc(100% - 2px) 2px,
154
- 100% 2px,
155
- 100% calc(100% - 2px),
156
- calc(100% - 2px) calc(100% - 2px),
157
- calc(100% - 2px) 100%,
158
- 2px 100%,
159
- 2px calc(100% - 2px),
160
- 0 calc(100% - 2px)
161
- );
162
- }
163
- /* Border layer - pixel shape */
164
- .px-checkbox__inner::before {
165
- content: "";
166
- position: absolute;
167
- inset: 0;
168
- background: var(--px-checkbox-border-color);
169
- clip-path: var(--px-checkbox-pixel-corners);
170
- z-index: 0;
171
- }
172
- /* Fill layer - pixel shape with 3D bevel */
173
- .px-checkbox__inner::after {
174
- content: "";
175
- position: absolute;
176
- inset: 2px;
177
- background: var(--px-checkbox-bg-color);
178
- clip-path: var(--px-checkbox-pixel-corners);
179
- box-shadow:
180
- var(--px-checkbox-inset-highlight),
181
- var(--px-checkbox-inset-shadow);
182
- z-index: 0;
183
- }
184
- /* Pixel checkmark */
185
- .px-checkbox__tick {
186
- position: relative;
187
- z-index: 1;
188
- width: 10px;
189
- height: 10px;
190
- opacity: 0;
191
- /* Pixel staircase checkmark (✓) — stepped 2px increments */
192
- clip-path: polygon(
193
- /* Left arm descending */
194
- 10% 40%,
195
- 10% 60%,
196
- 20% 60%,
197
- 20% 70%,
198
- 30% 70%,
199
- 30% 80%,
200
- /* Bottom vertex */
201
- 40% 80%,
202
- 40% 90%,
203
- 50% 90%,
204
- 50% 80%,
205
- /* Right arm ascending */
206
- 60% 80%,
207
- 60% 70%,
208
- 70% 70%,
209
- 70% 60%,
210
- 80% 60%,
211
- 80% 50%,
212
- 90% 50%,
213
- 90% 30%,
214
- /* Top of right arm */
215
- 80% 30%,
216
- 80% 40%,
217
- 70% 40%,
218
- 70% 50%,
219
- 60% 50%,
220
- 60% 60%,
221
- 50% 60%,
222
- 50% 70%,
223
- /* Return along inner edge */
224
- 40% 70%,
225
- 40% 60%,
226
- 30% 60%,
227
- 30% 50%,
228
- 20% 50%,
229
- 20% 40%
230
- );
231
- background: var(--px-fill-color-blank);
232
- }
233
- /* Label */
234
- .px-checkbox__label {
235
- padding-left: 8px;
236
- font-family: var(--px-font-family);
237
- font-size: inherit;
238
- line-height: 1.2;
239
- color: var(--px-text-color-primary);
240
- }
241
- /* Type variants */
242
- .px-checkbox--primary {
243
- --px-checkbox-checked-color: var(--px-color-primary);
244
- --px-checkbox-checked-border-color: var(--px-color-primary-dark);
245
- }
246
- .px-checkbox--primary.is-checked .px-checkbox__input {
247
- filter: drop-shadow(
248
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-primary-dark)
249
- );
250
- }
251
- .px-checkbox--success {
252
- --px-checkbox-checked-color: var(--px-color-success);
253
- --px-checkbox-checked-border-color: var(--px-color-success-dark);
254
- }
255
- .px-checkbox--success.is-checked .px-checkbox__input {
256
- filter: drop-shadow(
257
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-success-dark)
258
- );
259
- }
260
- .px-checkbox--info {
261
- --px-checkbox-checked-color: var(--px-color-info);
262
- --px-checkbox-checked-border-color: var(--px-color-info-dark);
263
- }
264
- .px-checkbox--info.is-checked .px-checkbox__input {
265
- filter: drop-shadow(
266
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-info-dark)
267
- );
268
- }
269
- .px-checkbox--warning {
270
- --px-checkbox-checked-color: var(--px-color-warning);
271
- --px-checkbox-checked-border-color: var(--px-color-warning-dark);
272
- }
273
- .px-checkbox--warning.is-checked .px-checkbox__input {
274
- filter: drop-shadow(
275
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-warning-dark)
276
- );
277
- }
278
- .px-checkbox--danger {
279
- --px-checkbox-checked-color: var(--px-color-danger);
280
- --px-checkbox-checked-border-color: var(--px-color-danger-dark);
281
- }
282
- .px-checkbox--danger.is-checked .px-checkbox__input {
283
- filter: drop-shadow(
284
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-danger-dark)
285
- );
286
- }
287
- /* Dark mode bevel adjustment */
288
- html.dark .px-checkbox {
289
- --px-checkbox-inset-highlight: inset -2px -2px 0 0 rgba(255, 255, 255, 0.08);
290
- --px-checkbox-inset-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.2);
291
- }
292
- html.dark .px-checkbox.is-checked {
293
- --px-checkbox-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.08);
294
- --px-checkbox-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.2);
295
- }
296
- /* Checkbox Group */
297
- .px-checkbox-group {
298
- display: inline-flex;
299
- flex-wrap: wrap;
300
- gap: 16px;
301
- align-items: center;
302
- }
303
- /* Checkbox Variables */
304
- .px-checkbox {
305
- --px-checkbox-size: 18px;
306
- --px-checkbox-checked-color: var(--px-color-primary);
307
- --px-checkbox-checked-border-color: var(--px-color-primary-dark);
308
- --px-checkbox-border-color: var(--px-border-color);
309
- --px-checkbox-bg-color: var(--px-fill-color-blank);
310
- --px-checkbox-shadow-color: var(--px-shadow-color);
311
-
312
- /* 3D bevel — sunken look (unchecked) */
313
- --px-checkbox-inset-highlight: inset -2px -2px 0 0 rgba(255, 255, 255, 0.2);
314
- --px-checkbox-inset-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.1);
315
- }
316
- /* Base Checkbox Styles */
317
- .px-checkbox {
318
- display: inline-flex;
319
- align-items: center;
320
- font-size: var(--px-font-size-base);
321
- font-family: var(--px-font-family);
322
- line-height: 1;
323
- cursor: pointer;
324
- user-select: none;
325
- white-space: nowrap;
326
- }
327
- /* Disabled state */
328
- .px-checkbox.is-disabled {
329
- opacity: 0.5;
330
- cursor: not-allowed;
331
- }
332
- .px-checkbox.is-disabled .px-checkbox__inner {
333
- cursor: not-allowed;
334
- }
335
- /* Checked & Indeterminate shared styles */
336
- .px-checkbox.is-checked .px-checkbox__inner::before, .px-checkbox.is-indeterminate .px-checkbox__inner::before {
337
- background: var(--px-checkbox-checked-border-color);
338
- }
339
- .px-checkbox.is-checked .px-checkbox__inner::after, .px-checkbox.is-indeterminate .px-checkbox__inner::after {
340
- background: var(--px-checkbox-checked-color);
341
- }
342
- .px-checkbox.is-checked .px-checkbox__inner .px-checkbox__tick, .px-checkbox.is-indeterminate .px-checkbox__inner .px-checkbox__tick {
343
- opacity: 1;
344
- }
345
- /* Checked state — raised bevel */
346
- .px-checkbox.is-checked {
347
- --px-checkbox-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.2);
348
- --px-checkbox-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.1);
349
- }
350
- .px-checkbox.is-checked .px-checkbox__input {
351
- filter: drop-shadow(
352
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-checkbox-checked-border-color)
353
- );
354
- }
355
- /* Hover feedback */
356
- .px-checkbox:hover:not(.is-disabled) .px-checkbox__inner::after {
357
- --px-checkbox-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.35);
358
- }
359
- /* Active/pressed feedback */
360
- .px-checkbox:active:not(.is-disabled) .px-checkbox__inner::after {
361
- --px-checkbox-inset-highlight: inset -2px -2px 0 0 rgba(255, 255, 255, 0.2);
362
- --px-checkbox-inset-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.15);
363
- }
364
- /* Indeterminate state */
365
- .px-checkbox.is-indeterminate .px-checkbox__inner .px-checkbox__tick {
366
- /* Override checkmark with a pixel-art horizontal dash */
367
- clip-path: none;
368
- position: absolute;
369
- width: 8px;
370
- height: 2px;
371
- background: var(--px-fill-color-blank);
372
- top: 50%;
373
- left: 50%;
374
- transform: translate(-50%, -50%);
375
- }
376
- .px-checkbox.is-indeterminate .px-checkbox__input {
377
- filter: none;
378
- }
379
- /* Size variants */
380
- .px-checkbox--large {
381
- --px-checkbox-size: 22px;
382
- font-size: var(--px-font-size-base);
383
- }
384
- .px-checkbox--large .px-checkbox__tick {
385
- width: 12px;
386
- height: 12px;
387
- }
388
- .px-checkbox--large.is-indeterminate .px-checkbox__inner .px-checkbox__tick {
389
- width: 10px;
390
- height: 2px;
391
- }
392
- .px-checkbox--small {
393
- --px-checkbox-size: 14px;
394
- font-size: var(--px-font-size-small);
395
- }
396
- .px-checkbox--small .px-checkbox__input {
397
- filter: drop-shadow(2px 2px 0px var(--px-checkbox-shadow-color));
398
- }
399
- .px-checkbox--small .px-checkbox__tick {
400
- width: 8px;
401
- height: 8px;
402
- }
403
- .px-checkbox--small.is-checked .px-checkbox__input {
404
- filter: drop-shadow(2px 2px 0px var(--px-checkbox-checked-border-color));
405
- }
406
- .px-checkbox--small.is-indeterminate .px-checkbox__input {
407
- filter: none;
408
- }
409
- .px-checkbox--small.is-indeterminate .px-checkbox__inner .px-checkbox__tick {
410
- width: 6px;
411
- height: 2px;
412
- }
413
- /* Hidden native input */
414
- .px-checkbox__original {
415
- position: absolute;
416
- width: 0;
417
- height: 0;
418
- opacity: 0;
419
- margin: 0;
420
- outline: none;
421
- }
422
- .px-checkbox__original:focus-visible ~ .px-checkbox__inner {
423
- outline: 2px dashed var(--px-checkbox-checked-color);
424
- outline-offset: 2px;
425
- }
426
- /* Input wrapper */
427
- .px-checkbox__input {
428
- position: relative;
429
- display: inline-flex;
430
- align-items: center;
431
- justify-content: center;
432
- flex-shrink: 0;
433
-
434
- /* Pixel shadow via drop-shadow */
435
- filter: drop-shadow(
436
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-checkbox-shadow-color)
437
- );
438
- }
439
- /* The pixel-art checkbox box */
440
- .px-checkbox__inner {
441
- position: relative;
442
- display: inline-flex;
443
- align-items: center;
444
- justify-content: center;
445
- width: var(--px-checkbox-size);
446
- height: var(--px-checkbox-size);
447
- box-sizing: border-box;
448
- background: transparent;
449
-
450
- --px-checkbox-pixel-corners: polygon(
451
- 0 2px,
452
- 2px 2px,
453
- 2px 0,
454
- calc(100% - 2px) 0,
455
- calc(100% - 2px) 2px,
456
- 100% 2px,
457
- 100% calc(100% - 2px),
458
- calc(100% - 2px) calc(100% - 2px),
459
- calc(100% - 2px) 100%,
460
- 2px 100%,
461
- 2px calc(100% - 2px),
462
- 0 calc(100% - 2px)
463
- );
464
- }
465
- /* Border layer - pixel shape */
466
- .px-checkbox__inner::before {
467
- content: "";
468
- position: absolute;
469
- inset: 0;
470
- background: var(--px-checkbox-border-color);
471
- clip-path: var(--px-checkbox-pixel-corners);
472
- z-index: 0;
473
- }
474
- /* Fill layer - pixel shape with 3D bevel */
475
- .px-checkbox__inner::after {
476
- content: "";
477
- position: absolute;
478
- inset: 2px;
479
- background: var(--px-checkbox-bg-color);
480
- clip-path: var(--px-checkbox-pixel-corners);
481
- box-shadow:
482
- var(--px-checkbox-inset-highlight),
483
- var(--px-checkbox-inset-shadow);
484
- z-index: 0;
485
- }
486
- /* Pixel checkmark */
487
- .px-checkbox__tick {
488
- position: relative;
489
- z-index: 1;
490
- width: 10px;
491
- height: 10px;
492
- opacity: 0;
493
- /* Pixel staircase checkmark (✓) — stepped 2px increments */
494
- clip-path: polygon(
495
- /* Left arm descending */
496
- 10% 40%,
497
- 10% 60%,
498
- 20% 60%,
499
- 20% 70%,
500
- 30% 70%,
501
- 30% 80%,
502
- /* Bottom vertex */
503
- 40% 80%,
504
- 40% 90%,
505
- 50% 90%,
506
- 50% 80%,
507
- /* Right arm ascending */
508
- 60% 80%,
509
- 60% 70%,
510
- 70% 70%,
511
- 70% 60%,
512
- 80% 60%,
513
- 80% 50%,
514
- 90% 50%,
515
- 90% 30%,
516
- /* Top of right arm */
517
- 80% 30%,
518
- 80% 40%,
519
- 70% 40%,
520
- 70% 50%,
521
- 60% 50%,
522
- 60% 60%,
523
- 50% 60%,
524
- 50% 70%,
525
- /* Return along inner edge */
526
- 40% 70%,
527
- 40% 60%,
528
- 30% 60%,
529
- 30% 50%,
530
- 20% 50%,
531
- 20% 40%
532
- );
533
- background: var(--px-fill-color-blank);
534
- }
535
- /* Label */
536
- .px-checkbox__label {
537
- padding-left: 8px;
538
- font-family: var(--px-font-family);
539
- font-size: inherit;
540
- line-height: 1.2;
541
- color: var(--px-text-color-primary);
542
- }
543
- /* Type variants */
544
- .px-checkbox--primary {
545
- --px-checkbox-checked-color: var(--px-color-primary);
546
- --px-checkbox-checked-border-color: var(--px-color-primary-dark);
547
- }
548
- .px-checkbox--primary.is-checked .px-checkbox__input {
549
- filter: drop-shadow(
550
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-primary-dark)
551
- );
552
- }
553
- .px-checkbox--success {
554
- --px-checkbox-checked-color: var(--px-color-success);
555
- --px-checkbox-checked-border-color: var(--px-color-success-dark);
556
- }
557
- .px-checkbox--success.is-checked .px-checkbox__input {
558
- filter: drop-shadow(
559
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-success-dark)
560
- );
561
- }
562
- .px-checkbox--info {
563
- --px-checkbox-checked-color: var(--px-color-info);
564
- --px-checkbox-checked-border-color: var(--px-color-info-dark);
565
- }
566
- .px-checkbox--info.is-checked .px-checkbox__input {
567
- filter: drop-shadow(
568
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-info-dark)
569
- );
570
- }
571
- .px-checkbox--warning {
572
- --px-checkbox-checked-color: var(--px-color-warning);
573
- --px-checkbox-checked-border-color: var(--px-color-warning-dark);
574
- }
575
- .px-checkbox--warning.is-checked .px-checkbox__input {
576
- filter: drop-shadow(
577
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-warning-dark)
578
- );
579
- }
580
- .px-checkbox--danger {
581
- --px-checkbox-checked-color: var(--px-color-danger);
582
- --px-checkbox-checked-border-color: var(--px-color-danger-dark);
583
- }
584
- .px-checkbox--danger.is-checked .px-checkbox__input {
585
- filter: drop-shadow(
586
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-danger-dark)
587
- );
588
- }
589
- /* Dark mode bevel adjustment */
590
- html.dark .px-checkbox {
591
- --px-checkbox-inset-highlight: inset -2px -2px 0 0 rgba(255, 255, 255, 0.08);
592
- --px-checkbox-inset-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.2);
593
- }
594
- html.dark .px-checkbox.is-checked {
595
- --px-checkbox-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.08);
596
- --px-checkbox-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.2);
597
- }
598
- /* Checkbox Group */
599
- .px-checkbox-group {
600
- display: inline-flex;
601
- flex-wrap: wrap;
602
- gap: 16px;
603
- align-items: center;
604
- }
1
+ .px-checkbox{--px-checkbox-size:18px;--px-checkbox-checked-color:var(--px-color-primary);--px-checkbox-checked-border-color:var(--px-color-primary-dark);--px-checkbox-border-color:var(--px-border-color);--px-checkbox-bg-color:var(--px-fill-color-blank);--px-checkbox-shadow-color:var(--px-shadow-color);--px-checkbox-inset-highlight:inset -2px -2px 0 0 #fff3;--px-checkbox-inset-shadow:inset 2px 2px 0 0 #0000001a;font-size:var(--px-font-size-base);font-family:var(--px-font-family);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;align-items:center;line-height:1;display:inline-flex}.px-checkbox{--px-checkbox-size:18px;--px-checkbox-checked-color:var(--px-color-primary);--px-checkbox-checked-border-color:var(--px-color-primary-dark);--px-checkbox-border-color:var(--px-border-color);--px-checkbox-bg-color:var(--px-fill-color-blank);--px-checkbox-shadow-color:var(--px-shadow-color);--px-checkbox-inset-highlight:inset -2px -2px 0 0 #fff3;--px-checkbox-inset-shadow:inset 2px 2px 0 0 #0000001a;font-size:var(--px-font-size-base);font-family:var(--px-font-family);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;align-items:center;line-height:1;display:inline-flex}.px-checkbox.is-disabled{opacity:.5;cursor:not-allowed}.px-checkbox.is-disabled .px-checkbox__inner{cursor:not-allowed}.px-checkbox.is-checked .px-checkbox__inner:before,.px-checkbox.is-indeterminate .px-checkbox__inner:before{background:var(--px-checkbox-checked-border-color)}.px-checkbox.is-checked .px-checkbox__inner:after,.px-checkbox.is-indeterminate .px-checkbox__inner:after{background:var(--px-checkbox-checked-color)}.px-checkbox.is-checked .px-checkbox__inner .px-checkbox__tick,.px-checkbox.is-indeterminate .px-checkbox__inner .px-checkbox__tick{opacity:1}.px-checkbox.is-checked{--px-checkbox-inset-highlight:inset 2px 2px 0 0 #fff3;--px-checkbox-inset-shadow:inset -2px -2px 0 0 #0000001a}.px-checkbox.is-checked .px-checkbox__input{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-checkbox-checked-border-color))}.px-checkbox:hover:not(.is-disabled) .px-checkbox__inner:after{--px-checkbox-inset-highlight:inset 2px 2px 0 0 #ffffff59}.px-checkbox:active:not(.is-disabled) .px-checkbox__inner:after{--px-checkbox-inset-highlight:inset -2px -2px 0 0 #fff3;--px-checkbox-inset-shadow:inset 2px 2px 0 0 #00000026}.px-checkbox.is-indeterminate .px-checkbox__inner .px-checkbox__tick{clip-path:none;background:var(--px-fill-color-blank);width:8px;height:2px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.px-checkbox.is-indeterminate .px-checkbox__input{filter:none}.px-checkbox--large{--px-checkbox-size:22px;font-size:var(--px-font-size-base)}.px-checkbox--large .px-checkbox__tick{width:12px;height:12px}.px-checkbox--large.is-indeterminate .px-checkbox__inner .px-checkbox__tick{width:10px;height:2px}.px-checkbox--small{--px-checkbox-size:14px;font-size:var(--px-font-size-small)}.px-checkbox--small .px-checkbox__input{filter:drop-shadow(2px 2px 0px var(--px-checkbox-shadow-color))}.px-checkbox--small .px-checkbox__tick{width:8px;height:8px}.px-checkbox--small.is-checked .px-checkbox__input{filter:drop-shadow(2px 2px 0px var(--px-checkbox-checked-border-color))}.px-checkbox--small.is-indeterminate .px-checkbox__input{filter:none}.px-checkbox--small.is-indeterminate .px-checkbox__inner .px-checkbox__tick{width:6px;height:2px}.px-checkbox__original{opacity:0;outline:none;width:0;height:0;margin:0;position:absolute}.px-checkbox__original:focus-visible~.px-checkbox__inner{outline:2px dashed var(--px-checkbox-checked-color);outline-offset:2px}.px-checkbox__input{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-checkbox-shadow-color));flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;position:relative}.px-checkbox__inner{width:var(--px-checkbox-size);height:var(--px-checkbox-size);box-sizing:border-box;--px-checkbox-pixel-corners: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));background:0 0;justify-content:center;align-items:center;display:inline-flex;position:relative}.px-checkbox__inner:before{content:"";background:var(--px-checkbox-border-color);clip-path:var(--px-checkbox-pixel-corners);z-index:0;position:absolute;inset:0}.px-checkbox__inner:after{content:"";background:var(--px-checkbox-bg-color);clip-path:var(--px-checkbox-pixel-corners);box-shadow:var(--px-checkbox-inset-highlight), var(--px-checkbox-inset-shadow);z-index:0;position:absolute;inset:2px}.px-checkbox__tick{z-index:1;opacity:0;clip-path:polygon(10% 40%,10% 60%,20% 60%,20% 70%,30% 70%,30% 80%,40% 80%,40% 90%,50% 90%,50% 80%,60% 80%,60% 70%,70% 70%,70% 60%,80% 60%,80% 50%,90% 50%,90% 30%,80% 30%,80% 40%,70% 40%,70% 50%,60% 50%,60% 60%,50% 60%,50% 70%,40% 70%,40% 60%,30% 60%,30% 50%,20% 50%,20% 40%);background:var(--px-fill-color-blank);width:10px;height:10px;position:relative}.px-checkbox__label{font-family:var(--px-font-family);font-size:inherit;color:var(--px-text-color-primary);padding-left:8px;line-height:1.2}.px-checkbox--primary{--px-checkbox-checked-color:var(--px-color-primary);--px-checkbox-checked-border-color:var(--px-color-primary-dark)}.px-checkbox--primary.is-checked .px-checkbox__input{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-primary-dark))}.px-checkbox--success{--px-checkbox-checked-color:var(--px-color-success);--px-checkbox-checked-border-color:var(--px-color-success-dark)}.px-checkbox--success.is-checked .px-checkbox__input{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-success-dark))}.px-checkbox--info{--px-checkbox-checked-color:var(--px-color-info);--px-checkbox-checked-border-color:var(--px-color-info-dark)}.px-checkbox--info.is-checked .px-checkbox__input{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-info-dark))}.px-checkbox--warning{--px-checkbox-checked-color:var(--px-color-warning);--px-checkbox-checked-border-color:var(--px-color-warning-dark)}.px-checkbox--warning.is-checked .px-checkbox__input{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-warning-dark))}.px-checkbox--danger{--px-checkbox-checked-color:var(--px-color-danger);--px-checkbox-checked-border-color:var(--px-color-danger-dark)}.px-checkbox--danger.is-checked .px-checkbox__input{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-danger-dark))}html.dark .px-checkbox{--px-checkbox-inset-highlight:inset -2px -2px 0 0 #ffffff14;--px-checkbox-inset-shadow:inset 2px 2px 0 0 #0003}html.dark .px-checkbox.is-checked{--px-checkbox-inset-highlight:inset 2px 2px 0 0 #ffffff14;--px-checkbox-inset-shadow:inset -2px -2px 0 0 #0003}.px-checkbox-group{flex-wrap:wrap;align-items:center;gap:16px;display:inline-flex}