sakana-element 2.1.2 → 2.1.4

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 (66) hide show
  1. package/README.md +81 -79
  2. package/dist/es/Alert-C76ZWSVk.js +19 -0
  3. package/dist/es/Badge-BG-vYP8Y.js +13 -0
  4. package/dist/es/Button-fW_ZOLmT.js +24 -0
  5. package/dist/es/Card-BCBnlVi_.js +12 -0
  6. package/dist/es/{Collapse-l_8qKOBG.js → Collapse-B08VhCVq.js} +2 -2
  7. package/dist/es/{ConfigProvider-BPm3h9RG.js → ConfigProvider-DZO1d5Eq.js} +1 -1
  8. package/dist/es/{Dropdown-ZjZ0qSn2.js → Dropdown-49nf6F8P.js} +11 -11
  9. package/dist/es/{Form-pxRZxseS.js → Form-CGiTDSGI.js} +2 -2
  10. package/dist/es/{Icon-UBaqO2nY.js → Icon-DpJyuj7c.js} +1 -1
  11. package/dist/es/Input-DBPpvf0Y.js +42 -0
  12. package/dist/es/{Loading-BJJBJhg3.js → Loading-DlygqGOv.js} +2 -2
  13. package/dist/es/{Message-CqBKW0c8.js → Message-ganFfLeU.js} +14 -14
  14. package/dist/es/{Notification-CVACM2cj.js → Notification-D4RYHV9o.js} +8 -8
  15. package/dist/es/{Overlay-C1k4Jcl7.js → Overlay-BRDSWspM.js} +1 -1
  16. package/dist/es/{Popconfirm-CW8oRycq.js → Popconfirm-Cop44KwQ.js} +4 -4
  17. package/dist/es/Select-TIoGsqKv.js +133 -0
  18. package/dist/es/Switch-CHjcLtHs.js +34 -0
  19. package/dist/es/{Tooltip-D9rQ4LEg.js → Tooltip-HWx_i2FA.js} +23 -23
  20. package/dist/es/{hooks-DNMt3QPi.js → hooks-CYdEHUVd.js} +6 -5
  21. package/dist/es/index.js +59 -55
  22. package/dist/es/utils-bsCscZfS.js +84 -0
  23. package/dist/index.css +1 -1
  24. package/dist/theme/Alert.css +114 -38
  25. package/dist/theme/Badge.css +208 -0
  26. package/dist/theme/Button.css +365 -105
  27. package/dist/theme/Card.css +112 -0
  28. package/dist/theme/Collapse.css +2 -2
  29. package/dist/theme/Dropdown.css +4 -4
  30. package/dist/theme/Input.css +213 -4
  31. package/dist/theme/Select.css +182 -38
  32. package/dist/theme/Switch.css +56 -0
  33. package/dist/theme/Tooltip.css +10 -10
  34. package/dist/theme/fonts/zpix.woff2 +0 -0
  35. package/dist/theme/index.css +21 -3
  36. package/dist/types/components/Alert/types.d.ts +3 -0
  37. package/dist/types/components/Badge/index.d.ts +27 -0
  38. package/dist/types/components/Badge/types.d.ts +10 -0
  39. package/dist/types/components/Button/constants.d.ts +2 -0
  40. package/dist/types/components/Button/types.d.ts +3 -0
  41. package/dist/types/components/Card/index.d.ts +26 -0
  42. package/dist/types/components/Card/types.d.ts +6 -0
  43. package/dist/types/components/Input/constants.d.ts +3 -0
  44. package/dist/types/components/Input/types.d.ts +2 -0
  45. package/dist/types/components/Select/constants.d.ts +3 -0
  46. package/dist/types/components/Select/index.d.ts +7 -5
  47. package/dist/types/components/Select/types.d.ts +4 -1
  48. package/dist/types/components/Select/useKeyMap.d.ts +1 -1
  49. package/dist/types/components/Switch/types.d.ts +6 -0
  50. package/dist/types/components/Tooltip/useEventsToTriggerNode.d.ts +4 -0
  51. package/dist/types/components/index.d.ts +2 -0
  52. package/dist/types/hooks/useSystemTheme.d.ts +1 -1
  53. package/dist/types/utils/color.d.ts +33 -0
  54. package/dist/types/utils/index.d.ts +1 -0
  55. package/dist/umd/index.css +1 -1
  56. package/dist/umd/index.css.gz +0 -0
  57. package/dist/umd/index.umd.cjs +3 -3
  58. package/dist/umd/index.umd.cjs.gz +0 -0
  59. package/package.json +1 -1
  60. package/dist/es/Alert-C5X-XFGJ.js +0 -15
  61. package/dist/es/Button-DTik2ZP6.js +0 -33
  62. package/dist/es/Input-BJoBaFXa.js +0 -38
  63. package/dist/es/Select-C7mwByXa.js +0 -126
  64. package/dist/es/Switch-CgFPFC3j.js +0 -22
  65. package/dist/es/utils-340oIQ8K.js +0 -59
  66. package/dist/types/components/Tooltip/useEventsToTiggerNode.d.ts +0 -4
@@ -6,10 +6,12 @@
6
6
  --px-select-item-selected-font-color: var(--px-color-primary);
7
7
  --px-select-item-selected-bg-color: var(--px-color-primary-light-9);
8
8
  --px-select-item-disabled-font-color: var(--px-text-color-disabled);
9
- --px-select-input-focus-border-color: var(--px-color-primary);
9
+ --px-select-input-focus-border-color: var(--px-hover-border-color);
10
10
  --px-select-border-color: var(--px-border-color);
11
11
  --px-select-shadow-color: var(--px-shadow-color);
12
- --px-select-dropdown-bg-color: var(--px-fill-color-blank);
12
+ --px-select-dropdown-bg-color: var(--px-fill-color-blank);
13
+ --px-select-item-indicator-color: var(--px-color-primary);
14
+ --px-select-item-highlighted-border-color: var(--px-color-primary);
13
15
  }
14
16
  /* Base Select Styles - Pixel Dropdown */
15
17
  .px-select[data-v-c5f1823d] {
@@ -95,7 +97,7 @@
95
97
  background-color: var(--px-select-item-hover-bg-color);
96
98
  }
97
99
  .px-select .px-select__menu-item[data-v-c5f1823d]:hover::before {
98
- border-color: var(--px-color-primary);
100
+ border-color: var(--px-hover-border-color);
99
101
  }
100
102
  /* Selected state with pixel indicator */
101
103
  .px-select .px-select__menu-item.is-selected[data-v-c5f1823d] {
@@ -106,15 +108,15 @@
106
108
  background-color: var(--px-select-item-selected-bg-color);
107
109
  }
108
110
  .px-select .px-select__menu-item.is-selected[data-v-c5f1823d]::before {
109
- background: var(--px-color-primary);
110
- border-color: var(--px-color-primary);
111
+ background: var(--px-select-item-indicator-color);
112
+ border-color: var(--px-select-item-indicator-color);
111
113
  }
112
114
  /* Highlighted (keyboard navigation) */
113
115
  .px-select .px-select__menu-item.is-highlighted[data-v-c5f1823d]::after {
114
116
  background-color: var(--px-select-item-hover-bg-color);
115
117
  }
116
118
  .px-select .px-select__menu-item.is-highlighted[data-v-c5f1823d]::before {
117
- border-color: var(--px-color-primary);
119
+ border-color: var(--px-select-item-highlighted-border-color);
118
120
  }
119
121
  /* Disabled state */
120
122
  .px-select .px-select__menu-item.is-disabled[data-v-c5f1823d] {
@@ -162,45 +164,117 @@
162
164
  /* Input pointer cursor */
163
165
  .px-select[data-v-c5f1823d] .px-input__inner {
164
166
  cursor: pointer;
167
+ }
168
+ /* Disabled state */
169
+ .px-select.is-disabled[data-v-c5f1823d] {
170
+ opacity: 0.6;
171
+ cursor: not-allowed;
172
+ }
173
+ /* Ghost style - transparent at rest, Input handles border/shadow via prop */
174
+ .px-select.is-ghost[data-v-c5f1823d] .px-tooltip__popper::after {
175
+ background: var(--px-select-dropdown-bg-color);
176
+ }
177
+ /* Size: Large */
178
+ .px-select.px-select--large[data-v-c5f1823d] {
179
+ line-height: 44px;
180
+ }
181
+ .px-select.px-select--large .px-select__menu-item[data-v-c5f1823d] {
182
+ height: 44px;
183
+ line-height: 44px;
184
+ font-size: var(--px-font-size-large);
185
+ padding: 0 20px 0 28px;
186
+ }
187
+ .px-select.px-select--large .px-select__menu-item[data-v-c5f1823d]::before {
188
+ left: 12px;
189
+ width: 8px;
190
+ height: 8px;
191
+ }
192
+ /* Size: Small */
193
+ .px-select.px-select--small[data-v-c5f1823d] {
194
+ line-height: 28px;
195
+ }
196
+ .px-select.px-select--small .px-select__menu-item[data-v-c5f1823d] {
197
+ height: 28px;
198
+ line-height: 28px;
199
+ font-size: var(--px-font-size-small);
200
+ padding: 0 12px 0 20px;
201
+ }
202
+ .px-select.px-select--small .px-select__menu-item[data-v-c5f1823d]::before {
203
+ left: 8px;
204
+ width: 4px;
205
+ height: 4px;
206
+ }
207
+ /* Color variants */
208
+ .px-select.px-select--primary[data-v-c5f1823d] {
209
+ --px-select-item-selected-font-color: var(--px-color-primary);
210
+ --px-select-item-selected-bg-color: var(--px-color-primary-light-9);
211
+ --px-select-item-indicator-color: var(--px-color-primary);
212
+ --px-select-item-highlighted-border-color: var(--px-color-primary);
213
+ }
214
+ .px-select.px-select--success[data-v-c5f1823d] {
215
+ --px-select-item-selected-font-color: var(--px-color-success);
216
+ --px-select-item-selected-bg-color: var(--px-color-success-light-9);
217
+ --px-select-item-indicator-color: var(--px-color-success);
218
+ --px-select-item-highlighted-border-color: var(--px-color-success);
219
+ }
220
+ .px-select.px-select--warning[data-v-c5f1823d] {
221
+ --px-select-item-selected-font-color: var(--px-color-warning);
222
+ --px-select-item-selected-bg-color: var(--px-color-warning-light-9);
223
+ --px-select-item-indicator-color: var(--px-color-warning);
224
+ --px-select-item-highlighted-border-color: var(--px-color-warning);
225
+ }
226
+ .px-select.px-select--info[data-v-c5f1823d] {
227
+ --px-select-item-selected-font-color: var(--px-color-info);
228
+ --px-select-item-selected-bg-color: var(--px-color-info-light-9);
229
+ --px-select-item-indicator-color: var(--px-color-info);
230
+ --px-select-item-highlighted-border-color: var(--px-color-info);
231
+ }
232
+ .px-select.px-select--danger[data-v-c5f1823d] {
233
+ --px-select-item-selected-font-color: var(--px-color-danger);
234
+ --px-select-item-selected-bg-color: var(--px-color-danger-light-9);
235
+ --px-select-item-indicator-color: var(--px-color-danger);
236
+ --px-select-item-highlighted-border-color: var(--px-color-danger);
165
237
  }
166
238
  /* Select Variables */
167
- .px-select[data-v-cf32c555] {
239
+ .px-select[data-v-ec41a99d] {
168
240
  --px-select-item-hover-bg-color: var(--px-fill-color-light);
169
241
  --px-select-item-font-size: var(--px-font-size-base);
170
242
  --px-select-item-font-color: var(--px-text-color-primary);
171
243
  --px-select-item-selected-font-color: var(--px-color-primary);
172
244
  --px-select-item-selected-bg-color: var(--px-color-primary-light-9);
173
245
  --px-select-item-disabled-font-color: var(--px-text-color-disabled);
174
- --px-select-input-focus-border-color: var(--px-color-primary);
246
+ --px-select-input-focus-border-color: var(--px-hover-border-color);
175
247
  --px-select-border-color: var(--px-border-color);
176
248
  --px-select-shadow-color: var(--px-shadow-color);
177
- --px-select-dropdown-bg-color: var(--px-fill-color-blank);
249
+ --px-select-dropdown-bg-color: var(--px-fill-color-blank);
250
+ --px-select-item-indicator-color: var(--px-color-primary);
251
+ --px-select-item-highlighted-border-color: var(--px-color-primary);
178
252
  }
179
253
  /* Base Select Styles - Pixel Dropdown */
180
- .px-select[data-v-cf32c555] {
254
+ .px-select[data-v-ec41a99d] {
181
255
  display: inline-block;
182
256
  vertical-align: middle;
183
257
  line-height: 32px;
184
258
  font-family: var(--px-font-family);
185
259
  }
186
260
  /* Tooltip popper styling - pixel style inherited from Tooltip */
187
- .px-select[data-v-cf32c555] .px-tooltip__popper {
261
+ .px-select[data-v-ec41a99d] .px-tooltip__popper {
188
262
  padding: 0;
189
263
  }
190
264
  /* Override tooltip background to match select dropdown */
191
- .px-select[data-v-cf32c555] .px-tooltip__popper::after {
265
+ .px-select[data-v-ec41a99d] .px-tooltip__popper::after {
192
266
  background: var(--px-select-dropdown-bg-color);
193
267
  }
194
268
  /* Input with dropdown arrow */
195
- .px-select[data-v-cf32c555] .px-input .header-angle {
269
+ .px-select[data-v-ec41a99d] .px-input .header-angle {
196
270
  transition: none;
197
271
  }
198
- .px-select[data-v-cf32c555] .px-input .header-angle.is-active {
272
+ .px-select[data-v-ec41a99d] .px-input .header-angle.is-active {
199
273
  transform: rotate(180deg);
200
274
  }
201
275
  /* No data / Loading states */
202
- .px-select .px-select__nodata[data-v-cf32c555],
203
- .px-select .px-select__loading[data-v-cf32c555] {
276
+ .px-select .px-select__nodata[data-v-ec41a99d],
277
+ .px-select .px-select__loading[data-v-ec41a99d] {
204
278
  padding: 12px 16px;
205
279
  margin: 0;
206
280
  text-align: center;
@@ -209,14 +283,14 @@
209
283
  font-family: var(--px-font-family);
210
284
  }
211
285
  /* Menu container */
212
- .px-select .px-select__menu[data-v-cf32c555] {
286
+ .px-select .px-select__menu[data-v-ec41a99d] {
213
287
  list-style: none;
214
288
  margin: 0;
215
289
  padding: 4px 0;
216
290
  box-sizing: border-box;
217
291
  }
218
292
  /* Menu items - Pixel list style */
219
- .px-select .px-select__menu-item[data-v-cf32c555] {
293
+ .px-select .px-select__menu-item[data-v-ec41a99d] {
220
294
  margin: 0;
221
295
  font-size: var(--px-select-item-font-size);
222
296
  font-family: var(--px-font-family);
@@ -233,7 +307,7 @@
233
307
  transition: none;
234
308
  }
235
309
  /* Pixel selector indicator - small square */
236
- .px-select .px-select__menu-item[data-v-cf32c555]::before {
310
+ .px-select .px-select__menu-item[data-v-ec41a99d]::before {
237
311
  content: '';
238
312
  position: absolute;
239
313
  left: 10px;
@@ -246,7 +320,7 @@
246
320
  z-index: 2;
247
321
  }
248
322
  /* Background layer for hover/selected states */
249
- .px-select .px-select__menu-item[data-v-cf32c555]::after {
323
+ .px-select .px-select__menu-item[data-v-ec41a99d]::after {
250
324
  content: '';
251
325
  position: absolute;
252
326
  inset: 0;
@@ -256,45 +330,45 @@
256
330
  z-index: -1;
257
331
  }
258
332
  /* Hover effect */
259
- .px-select .px-select__menu-item[data-v-cf32c555]:hover::after {
333
+ .px-select .px-select__menu-item[data-v-ec41a99d]:hover::after {
260
334
  background-color: var(--px-select-item-hover-bg-color);
261
335
  }
262
- .px-select .px-select__menu-item[data-v-cf32c555]:hover::before {
263
- border-color: var(--px-color-primary);
336
+ .px-select .px-select__menu-item[data-v-ec41a99d]:hover::before {
337
+ border-color: var(--px-hover-border-color);
264
338
  }
265
339
  /* Selected state with pixel indicator */
266
- .px-select .px-select__menu-item.is-selected[data-v-cf32c555] {
340
+ .px-select .px-select__menu-item.is-selected[data-v-ec41a99d] {
267
341
  color: var(--px-select-item-selected-font-color);
268
342
  font-weight: 500;
269
343
  }
270
- .px-select .px-select__menu-item.is-selected[data-v-cf32c555]::after {
344
+ .px-select .px-select__menu-item.is-selected[data-v-ec41a99d]::after {
271
345
  background-color: var(--px-select-item-selected-bg-color);
272
346
  }
273
- .px-select .px-select__menu-item.is-selected[data-v-cf32c555]::before {
274
- background: var(--px-color-primary);
275
- border-color: var(--px-color-primary);
347
+ .px-select .px-select__menu-item.is-selected[data-v-ec41a99d]::before {
348
+ background: var(--px-select-item-indicator-color);
349
+ border-color: var(--px-select-item-indicator-color);
276
350
  }
277
351
  /* Highlighted (keyboard navigation) */
278
- .px-select .px-select__menu-item.is-highlighted[data-v-cf32c555]::after {
352
+ .px-select .px-select__menu-item.is-highlighted[data-v-ec41a99d]::after {
279
353
  background-color: var(--px-select-item-hover-bg-color);
280
354
  }
281
- .px-select .px-select__menu-item.is-highlighted[data-v-cf32c555]::before {
282
- border-color: var(--px-color-primary);
355
+ .px-select .px-select__menu-item.is-highlighted[data-v-ec41a99d]::before {
356
+ border-color: var(--px-select-item-highlighted-border-color);
283
357
  }
284
358
  /* Disabled state */
285
- .px-select .px-select__menu-item.is-disabled[data-v-cf32c555] {
359
+ .px-select .px-select__menu-item.is-disabled[data-v-ec41a99d] {
286
360
  color: var(--px-select-item-disabled-font-color);
287
361
  cursor: not-allowed;
288
362
  }
289
- .px-select .px-select__menu-item.is-disabled[data-v-cf32c555]:hover::after {
363
+ .px-select .px-select__menu-item.is-disabled[data-v-ec41a99d]:hover::after {
290
364
  background-color: transparent;
291
365
  }
292
- .px-select .px-select__menu-item.is-disabled[data-v-cf32c555]:hover::before {
366
+ .px-select .px-select__menu-item.is-disabled[data-v-ec41a99d]:hover::before {
293
367
  border-color: transparent;
294
368
  background: transparent;
295
369
  }
296
370
  /* First item needs pixel corners on top */
297
- .px-select .px-select__menu-item[data-v-cf32c555]:first-child::after {
371
+ .px-select .px-select__menu-item[data-v-ec41a99d]:first-child::after {
298
372
  top: 2px;
299
373
  clip-path: polygon(
300
374
  0 2px, 2px 2px, 2px 0, 4px 0,
@@ -304,7 +378,7 @@
304
378
  );
305
379
  }
306
380
  /* Last item needs pixel corners on bottom */
307
- .px-select .px-select__menu-item[data-v-cf32c555]:last-child::after {
381
+ .px-select .px-select__menu-item[data-v-ec41a99d]:last-child::after {
308
382
  bottom: 2px;
309
383
  clip-path: polygon(
310
384
  0 0,
@@ -314,7 +388,7 @@
314
388
  );
315
389
  }
316
390
  /* If only one item, needs both top and bottom pixel corners */
317
- .px-select .px-select__menu-item[data-v-cf32c555]:first-child:last-child::after {
391
+ .px-select .px-select__menu-item[data-v-ec41a99d]:first-child:last-child::after {
318
392
  top: 2px;
319
393
  bottom: 2px;
320
394
  clip-path: polygon(
@@ -325,6 +399,76 @@
325
399
  );
326
400
  }
327
401
  /* Input pointer cursor */
328
- .px-select[data-v-cf32c555] .px-input__inner {
402
+ .px-select[data-v-ec41a99d] .px-input__inner {
329
403
  cursor: pointer;
404
+ }
405
+ /* Disabled state */
406
+ .px-select.is-disabled[data-v-ec41a99d] {
407
+ opacity: 0.6;
408
+ cursor: not-allowed;
409
+ }
410
+ /* Ghost style - transparent at rest, Input handles border/shadow via prop */
411
+ .px-select.is-ghost[data-v-ec41a99d] .px-tooltip__popper::after {
412
+ background: var(--px-select-dropdown-bg-color);
413
+ }
414
+ /* Size: Large */
415
+ .px-select.px-select--large[data-v-ec41a99d] {
416
+ line-height: 44px;
417
+ }
418
+ .px-select.px-select--large .px-select__menu-item[data-v-ec41a99d] {
419
+ height: 44px;
420
+ line-height: 44px;
421
+ font-size: var(--px-font-size-large);
422
+ padding: 0 20px 0 28px;
423
+ }
424
+ .px-select.px-select--large .px-select__menu-item[data-v-ec41a99d]::before {
425
+ left: 12px;
426
+ width: 8px;
427
+ height: 8px;
428
+ }
429
+ /* Size: Small */
430
+ .px-select.px-select--small[data-v-ec41a99d] {
431
+ line-height: 28px;
432
+ }
433
+ .px-select.px-select--small .px-select__menu-item[data-v-ec41a99d] {
434
+ height: 28px;
435
+ line-height: 28px;
436
+ font-size: var(--px-font-size-small);
437
+ padding: 0 12px 0 20px;
438
+ }
439
+ .px-select.px-select--small .px-select__menu-item[data-v-ec41a99d]::before {
440
+ left: 8px;
441
+ width: 4px;
442
+ height: 4px;
443
+ }
444
+ /* Color variants */
445
+ .px-select.px-select--primary[data-v-ec41a99d] {
446
+ --px-select-item-selected-font-color: var(--px-color-primary);
447
+ --px-select-item-selected-bg-color: var(--px-color-primary-light-9);
448
+ --px-select-item-indicator-color: var(--px-color-primary);
449
+ --px-select-item-highlighted-border-color: var(--px-color-primary);
450
+ }
451
+ .px-select.px-select--success[data-v-ec41a99d] {
452
+ --px-select-item-selected-font-color: var(--px-color-success);
453
+ --px-select-item-selected-bg-color: var(--px-color-success-light-9);
454
+ --px-select-item-indicator-color: var(--px-color-success);
455
+ --px-select-item-highlighted-border-color: var(--px-color-success);
456
+ }
457
+ .px-select.px-select--warning[data-v-ec41a99d] {
458
+ --px-select-item-selected-font-color: var(--px-color-warning);
459
+ --px-select-item-selected-bg-color: var(--px-color-warning-light-9);
460
+ --px-select-item-indicator-color: var(--px-color-warning);
461
+ --px-select-item-highlighted-border-color: var(--px-color-warning);
462
+ }
463
+ .px-select.px-select--info[data-v-ec41a99d] {
464
+ --px-select-item-selected-font-color: var(--px-color-info);
465
+ --px-select-item-selected-bg-color: var(--px-color-info-light-9);
466
+ --px-select-item-indicator-color: var(--px-color-info);
467
+ --px-select-item-highlighted-border-color: var(--px-color-info);
468
+ }
469
+ .px-select.px-select--danger[data-v-ec41a99d] {
470
+ --px-select-item-selected-font-color: var(--px-color-danger);
471
+ --px-select-item-selected-bg-color: var(--px-color-danger-light-9);
472
+ --px-select-item-indicator-color: var(--px-color-danger);
473
+ --px-select-item-highlighted-border-color: var(--px-color-danger);
330
474
  }
@@ -180,6 +180,9 @@
180
180
  background: transparent;
181
181
  transition: none;
182
182
  z-index: 2;
183
+ display: flex;
184
+ align-items: center;
185
+ justify-content: center;
183
186
  }
184
187
  /* Handle border layer */
185
188
  .px-switch__core .px-switch__core-action::before {
@@ -223,6 +226,13 @@
223
226
  0 calc(100% - 2px)
224
227
  );
225
228
  }
229
+ /* Icon inside thumb */
230
+ .px-switch__core .px-switch__core-action .px-switch__icon {
231
+ position: relative;
232
+ z-index: 3;
233
+ width: 12px !important;
234
+ height: 12px !important;
235
+ }
226
236
  /* Inner text container */
227
237
  .px-switch__core .px-switch__core-inner {
228
238
  width: 100%;
@@ -246,3 +256,49 @@
246
256
  text-transform: uppercase;
247
257
  letter-spacing: 1px;
248
258
  }
259
+ /* Type variants */
260
+ .px-switch--primary {
261
+ --px-switch-on-color: var(--px-color-primary);
262
+ --px-switch-on-border-color: var(--px-color-primary-dark);
263
+ }
264
+ .px-switch--primary.is-checked .px-switch__core {
265
+ filter: drop-shadow(
266
+ var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-primary-dark)
267
+ );
268
+ }
269
+ .px-switch--success {
270
+ --px-switch-on-color: var(--px-color-success);
271
+ --px-switch-on-border-color: var(--px-color-success-dark);
272
+ }
273
+ .px-switch--success.is-checked .px-switch__core {
274
+ filter: drop-shadow(
275
+ var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-success-dark)
276
+ );
277
+ }
278
+ .px-switch--info {
279
+ --px-switch-on-color: var(--px-color-info);
280
+ --px-switch-on-border-color: var(--px-color-info-dark);
281
+ }
282
+ .px-switch--info.is-checked .px-switch__core {
283
+ filter: drop-shadow(
284
+ var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-info-dark)
285
+ );
286
+ }
287
+ .px-switch--warning {
288
+ --px-switch-on-color: var(--px-color-warning);
289
+ --px-switch-on-border-color: var(--px-color-warning-dark);
290
+ }
291
+ .px-switch--warning.is-checked .px-switch__core {
292
+ filter: drop-shadow(
293
+ var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-warning-dark)
294
+ );
295
+ }
296
+ .px-switch--danger {
297
+ --px-switch-on-color: var(--px-color-danger);
298
+ --px-switch-on-border-color: var(--px-color-danger-dark);
299
+ }
300
+ .px-switch--danger.is-checked .px-switch__core {
301
+ filter: drop-shadow(
302
+ var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-danger-dark)
303
+ );
304
+ }
@@ -1,5 +1,5 @@
1
1
  /* Tooltip Variables */
2
- .px-tooltip[data-v-77c52c17] {
2
+ .px-tooltip[data-v-4e2bfb45] {
3
3
  --px-popover-bg-color: var(--px-bg-color);
4
4
  --px-popover-font-size: var(--px-font-size-base);
5
5
  --px-popover-border-color: var(--px-border-color-dark);
@@ -9,16 +9,16 @@
9
9
  }
10
10
  /* Base Tooltip Styles - Pixel Game Style */
11
11
  /* No smooth transitions for pixel feel */
12
- .px-tooltip .fade-enter-active[data-v-77c52c17],
13
- .px-tooltip .fade-leave-active[data-v-77c52c17] {
12
+ .px-tooltip .fade-enter-active[data-v-4e2bfb45],
13
+ .px-tooltip .fade-leave-active[data-v-4e2bfb45] {
14
14
  transition: none;
15
15
  }
16
- .px-tooltip .fade-enter-from[data-v-77c52c17],
17
- .px-tooltip .fade-leave-to[data-v-77c52c17] {
16
+ .px-tooltip .fade-enter-from[data-v-4e2bfb45],
17
+ .px-tooltip .fade-leave-to[data-v-4e2bfb45] {
18
18
  opacity: 0;
19
19
  }
20
20
  /* Popper container - Pixel style box */
21
- .px-tooltip .px-tooltip__popper[data-v-77c52c17] {
21
+ .px-tooltip .px-tooltip__popper[data-v-4e2bfb45] {
22
22
  background: transparent;
23
23
  padding: var(--px-popover-padding);
24
24
  color: var(--px-text-color-primary);
@@ -39,7 +39,7 @@
39
39
  );
40
40
  }
41
41
  /* Border layer — filled with border color, clipped to pixel shape */
42
- .px-tooltip .px-tooltip__popper[data-v-77c52c17]::before {
42
+ .px-tooltip .px-tooltip__popper[data-v-4e2bfb45]::before {
43
43
  content: "";
44
44
  position: absolute;
45
45
  inset: 0;
@@ -69,7 +69,7 @@
69
69
  z-index: -1;
70
70
  }
71
71
  /* Fill layer — inset by border width, filled with bg color */
72
- .px-tooltip .px-tooltip__popper[data-v-77c52c17]::after {
72
+ .px-tooltip .px-tooltip__popper[data-v-4e2bfb45]::after {
73
73
  content: "";
74
74
  position: absolute;
75
75
  inset: 2px;
@@ -99,11 +99,11 @@
99
99
  z-index: -1;
100
100
  }
101
101
  /* Hide arrow for pixel style - pixel boxes don't need arrows */
102
- .px-tooltip .px-tooltip__popper #arrow[data-v-77c52c17] {
102
+ .px-tooltip .px-tooltip__popper #arrow[data-v-4e2bfb45] {
103
103
  display: none;
104
104
  }
105
105
  /* Dark tooltip variant */
106
- .px-tooltip--dark .px-tooltip__popper[data-v-77c52c17] {
106
+ .px-tooltip--dark .px-tooltip__popper[data-v-4e2bfb45] {
107
107
  --px-popover-bg-color: var(--px-text-color-primary);
108
108
  --px-popover-border-color: var(--px-text-color-primary);
109
109
  --px-popover-shadow-color: rgba(0, 0, 0, 0.4);
Binary file
@@ -80,7 +80,9 @@ hr {
80
80
  */
81
81
  @font-face {
82
82
  font-family: "zpix";
83
- src: url("../theme/fonts/zpix.ttf") format("truetype");
83
+ src:
84
+ url("../theme/fonts/zpix.woff2") format("woff2"),
85
+ url("../theme/fonts/zpix.ttf") format("truetype");
84
86
  font-weight: normal;
85
87
  font-style: normal;
86
88
  font-display: swap;
@@ -215,6 +217,14 @@ hr {
215
217
  --px-component-size: 36px;
216
218
  --px-component-size-small: 28px;
217
219
 
220
+ /* === HOVER INVERSION (default / untyped components) === */
221
+ --px-hover-text-color: var(--px-color-white);
222
+ --px-hover-bg-color: var(--px-color-black);
223
+ --px-hover-border-color: var(--px-color-black);
224
+ --px-active-text-color: var(--px-color-white);
225
+ --px-active-bg-color: var(--px-border-color-dark);
226
+ --px-active-border-color: var(--px-border-color-dark);
227
+
218
228
  /* === DISABLED STATES === */
219
229
  --px-disabled-bg-color: var(--px-fill-color-light);
220
230
  --px-disabled-text-color: var(--px-text-color-placeholder);
@@ -256,8 +266,16 @@ hr {
256
266
  --px-border-color-darker: #ffffff;
257
267
 
258
268
  /* Dark shadows */
259
- --px-shadow-color: #11111b;
260
- --px-shadow-color-dark: #000000;
269
+ --px-shadow-color: #585b70;
270
+ --px-shadow-color-dark: #45475a;
271
+
272
+ /* Dark hover inversion */
273
+ --px-hover-text-color: var(--px-color-black);
274
+ --px-hover-bg-color: var(--px-text-color-primary);
275
+ --px-hover-border-color: var(--px-text-color-primary);
276
+ --px-active-text-color: var(--px-color-black);
277
+ --px-active-bg-color: var(--px-border-color-light);
278
+ --px-active-border-color: var(--px-border-color-light);
261
279
 
262
280
  /* Dark disabled */
263
281
  --px-disabled-bg-color: var(--px-fill-color-light);
@@ -7,6 +7,9 @@ export interface AlertProps {
7
7
  closable?: boolean;
8
8
  center?: boolean;
9
9
  showIcon?: boolean;
10
+ outline?: boolean;
11
+ dash?: boolean;
12
+ color?: string;
10
13
  }
11
14
  export type AlertEmits = (e: 'close') => void;
12
15
  export interface AlertInstance {
@@ -0,0 +1,27 @@
1
+ export declare const PxBadge: {
2
+ new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('packages/core').BadgeProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {
3
+ size: import('packages/core').BadgeSize;
4
+ type: import('packages/core').BadgeType;
5
+ }, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, HTMLSpanElement, import('vue').ComponentProvideOptions, {
6
+ P: {};
7
+ B: {};
8
+ D: {};
9
+ C: {};
10
+ M: {};
11
+ Defaults: {};
12
+ }, Readonly<import('packages/core').BadgeProps> & Readonly<{}>, {}, {}, {}, {}, {
13
+ size: import('packages/core').BadgeSize;
14
+ type: import('packages/core').BadgeType;
15
+ }>;
16
+ __isFragment?: never;
17
+ __isTeleport?: never;
18
+ __isSuspense?: never;
19
+ } & import('vue').ComponentOptionsBase<Readonly<import('packages/core').BadgeProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {
20
+ size: import('packages/core').BadgeSize;
21
+ type: import('packages/core').BadgeType;
22
+ }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & (new () => {
23
+ $slots: {
24
+ default?(_: {}): any;
25
+ };
26
+ }) & import('vue').Plugin;
27
+ export * from './types';
@@ -0,0 +1,10 @@
1
+ export type BadgeType = 'primary' | 'success' | 'info' | 'warning' | 'danger';
2
+ export type BadgeSize = 'large' | 'default' | 'small';
3
+ export interface BadgeProps {
4
+ type?: BadgeType;
5
+ size?: BadgeSize;
6
+ outline?: boolean;
7
+ dash?: boolean;
8
+ color?: string;
9
+ round?: boolean;
10
+ }
@@ -1,3 +1,5 @@
1
+ import { ColorTemplate } from '@sakana-element/utils';
1
2
  import { InjectionKey } from 'vue';
2
3
  import { ButtonGroupContext } from './types';
3
4
  export declare const BUTTON_GROUP_CTX_KEY: InjectionKey<ButtonGroupContext>;
5
+ export declare const BUTTON_COLOR_TEMPLATES: Record<string, ColorTemplate>;
@@ -15,6 +15,9 @@ export interface ButtonProps {
15
15
  round?: boolean;
16
16
  dash?: boolean;
17
17
  ghost?: boolean;
18
+ link?: boolean;
19
+ block?: boolean;
20
+ responsive?: boolean;
18
21
  color?: string;
19
22
  loadingIcon?: string;
20
23
  ariaLabel?: string;
@@ -0,0 +1,26 @@
1
+ export declare const PxCard: {
2
+ new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('packages/core').CardProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {
3
+ shadow: boolean | import('packages/core').CardShadow;
4
+ }, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, HTMLDivElement, import('vue').ComponentProvideOptions, {
5
+ P: {};
6
+ B: {};
7
+ D: {};
8
+ C: {};
9
+ M: {};
10
+ Defaults: {};
11
+ }, Readonly<import('packages/core').CardProps> & Readonly<{}>, {}, {}, {}, {}, {
12
+ shadow: boolean | import('packages/core').CardShadow;
13
+ }>;
14
+ __isFragment?: never;
15
+ __isTeleport?: never;
16
+ __isSuspense?: never;
17
+ } & import('vue').ComponentOptionsBase<Readonly<import('packages/core').CardProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {
18
+ shadow: boolean | import('packages/core').CardShadow;
19
+ }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & (new () => {
20
+ $slots: {
21
+ header?(_: {}): any;
22
+ default?(_: {}): any;
23
+ footer?(_: {}): any;
24
+ };
25
+ }) & import('vue').Plugin;
26
+ export * from './types';
@@ -0,0 +1,6 @@
1
+ export type CardShadow = 'always' | 'hover' | 'never';
2
+ export interface CardProps {
3
+ hoverable?: boolean;
4
+ shadow?: boolean | CardShadow;
5
+ size?: 'small' | 'large';
6
+ }
@@ -0,0 +1,3 @@
1
+ import { ColorTemplate } from '@sakana-element/utils';
2
+ export declare const PRESET_INPUT_COLORS: Set<string>;
3
+ export declare const INPUT_COLOR_TEMPLATES: Record<string, ColorTemplate>;
@@ -4,6 +4,8 @@ export interface InputProps {
4
4
  modelValue: string;
5
5
  type?: string;
6
6
  size?: 'large' | 'small';
7
+ color?: string;
8
+ ghost?: boolean;
7
9
  disabled?: boolean;
8
10
  clearable?: boolean;
9
11
  showPassword?: boolean;
@@ -1,4 +1,7 @@
1
+ import { ColorTemplate } from '@sakana-element/utils';
1
2
  import { InjectionKey } from 'vue';
2
3
  import { SelectContext } from './types';
3
4
  export declare const SELECT_CTX_KEY: InjectionKey<SelectContext>;
4
5
  export declare const POPPER_OPTIONS: any;
6
+ export declare const PRESET_SELECT_COLORS: Set<string>;
7
+ export declare const SELECT_COLOR_TEMPLATES: Record<string, ColorTemplate>;