sakana-element 2.3.0 → 2.4.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 (119) hide show
  1. package/README.md +5 -5
  2. package/dist/es/{Alert-BwTsp4X3.js → Alert-DRIDwear.js} +2 -2
  3. package/dist/es/{Avatar-CJu6JYV3.js → Avatar-Dkvvhw_D.js} +1 -1
  4. package/dist/es/{Badge-BmxZXX8k.js → Badge-CLNacHVq.js} +2 -2
  5. package/dist/es/{Breadcrumb-BP8MSklj.js → Breadcrumb-CfJA9NZz.js} +2 -2
  6. package/dist/es/{Button-BJHtN7gh.js → Button-Dj1DIvXh.js} +3 -3
  7. package/dist/es/{Card-DJHkCmsz.js → Card-meh7F1e2.js} +1 -1
  8. package/dist/es/ChatBubble-Ccr3wzoK.js +9 -0
  9. package/dist/es/{Checkbox-DX8L3fyp.js → Checkbox-vOcwl1OX.js} +3 -3
  10. package/dist/es/{Collapse-Ir3V9CuO.js → Collapse-BG58s0uJ.js} +4 -4
  11. package/dist/es/{ConfigProvider-CsbSqwwi.js → ConfigProvider-Cr8Hpzf2.js} +2 -2
  12. package/dist/es/Diff-KQ44cDcY.js +64 -0
  13. package/dist/es/{Divider-C7PtODSK.js → Divider-CYYeUqYc.js} +1 -1
  14. package/dist/es/{Drawer-C2eVmvUp.js → Drawer-CDXFDfrf.js} +2 -2
  15. package/dist/es/{Dropdown-CVg_c2fB.js → Dropdown-CPZtzHPx.js} +9 -9
  16. package/dist/es/{FileInput-BE26BmXm.js → FileInput-Ram4-wy2.js} +3 -3
  17. package/dist/es/Filter-CLLkrn-W.js +40 -0
  18. package/dist/es/{Form-7lZt5ehf.js → Form-po3aIrSN.js} +62 -61
  19. package/dist/es/{Icon-BLDDdSU-.js → Icon-XJfGGAMY.js} +1 -1
  20. package/dist/es/{Indicator-B-en-MgG.js → Indicator-vsSp5r5K.js} +1 -1
  21. package/dist/es/{Input-C5HuVehE.js → Input-KrNqNZMe.js} +5 -5
  22. package/dist/es/Kbd-CtCGx7_s.js +13 -0
  23. package/dist/es/{Link-Av9RdcFv.js → Link-Bbwdgs74.js} +1 -1
  24. package/dist/es/{Loading-CBNDUWQd.js → Loading-DiyIiKxO.js} +3 -3
  25. package/dist/es/{Message-DgnyyuXn.js → Message-BoNCtMo7.js} +14 -14
  26. package/dist/es/{Notification-LYRXnVAf.js → Notification-CFY-yvRf.js} +13 -13
  27. package/dist/es/{Overlay-CpvMhnuU.js → Overlay-DoFA2lgP.js} +1 -1
  28. package/dist/es/Pixelate-dqwHc6nX.js +39 -0
  29. package/dist/es/{Popconfirm-DvxFdLrw.js → Popconfirm-DPOujyiA.js} +12 -12
  30. package/dist/es/{Progress-Bc5INMhJ.js → Progress-B0oYE8Z3.js} +1 -1
  31. package/dist/es/{Radio-263_rtRl.js → Radio-C-Ot7pLA.js} +3 -3
  32. package/dist/es/Resizable-G5KVHayx.js +151 -0
  33. package/dist/es/{Select-7ZxUCS8z.js → Select-DqxPeAKK.js} +14 -14
  34. package/dist/es/Skeleton-4SeKRKn9.js +15 -0
  35. package/dist/es/{Switch-DiCsMJT3.js → Switch-C_tBxZtT.js} +3 -3
  36. package/dist/es/{Table-BvA_xzDe.js → Table-Cr6HFL4_.js} +1 -1
  37. package/dist/es/{Tooltip-J3ji6weH.js → Tooltip-rak4BryQ.js} +3 -3
  38. package/dist/es/Validator-DKVfknvI.js +40 -0
  39. package/dist/es/{hooks-BqobYUzS.js → hooks-pTjI-j9o.js} +51 -53
  40. package/dist/es/index.js +119 -90
  41. package/dist/es/utils-DzOow9K9.js +155 -0
  42. package/dist/es/{vendor-DXmGx29U.js → vendor-DrBJKLFW.js} +254 -210
  43. package/dist/index.css +1 -1
  44. package/dist/{es/theme → theme}/Badge.css +151 -151
  45. package/dist/{es/theme → theme}/Button.css +92 -8
  46. package/dist/theme/ChatBubble.css +218 -0
  47. package/dist/{es/theme → theme}/Checkbox.css +138 -18
  48. package/dist/{es/theme → theme}/Collapse.css +96 -96
  49. package/dist/theme/Diff.css +110 -0
  50. package/dist/{es/theme → theme}/Divider.css +42 -3
  51. package/dist/{es/theme → theme}/Dropdown.css +2 -2
  52. package/dist/{es/theme → theme}/FileInput.css +32 -0
  53. package/dist/theme/Filter.css +598 -0
  54. package/dist/{es/theme → theme}/Input.css +414 -407
  55. package/dist/theme/Kbd.css +104 -0
  56. package/dist/{es/theme → theme}/Message.css +1 -1
  57. package/dist/{es/theme → theme}/Notification.css +44 -44
  58. package/dist/{es/theme → theme}/Radio.css +114 -48
  59. package/dist/theme/Resizable.css +95 -0
  60. package/dist/{es/theme → theme}/Select.css +198 -88
  61. package/dist/theme/Skeleton.css +192 -0
  62. package/dist/{es/theme → theme}/Switch.css +22 -3
  63. package/dist/theme/Validator.css +25 -0
  64. package/dist/types/components/ChatBubble/constants.d.ts +2 -0
  65. package/dist/types/components/ChatBubble/index.d.ts +27 -0
  66. package/dist/types/components/ChatBubble/types.d.ts +10 -0
  67. package/dist/types/components/Diff/constants.d.ts +4 -0
  68. package/dist/types/components/Diff/index.d.ts +67 -0
  69. package/dist/types/components/Diff/types.d.ts +29 -0
  70. package/dist/types/components/Dropdown/index.d.ts +3 -3
  71. package/dist/types/components/Filter/constants.d.ts +5 -0
  72. package/dist/types/components/Filter/index.d.ts +59 -0
  73. package/dist/types/components/Filter/types.d.ts +38 -0
  74. package/dist/types/components/Icon/index.d.ts +1 -0
  75. package/dist/types/components/Kbd/constants.d.ts +3 -0
  76. package/dist/types/components/Kbd/index.d.ts +24 -0
  77. package/dist/types/components/Kbd/types.d.ts +10 -0
  78. package/dist/types/components/Pixelate/index.d.ts +3 -3
  79. package/dist/types/components/Popconfirm/index.d.ts +3 -3
  80. package/dist/types/components/Resizable/constants.d.ts +3 -0
  81. package/dist/types/components/Resizable/index.d.ts +135 -0
  82. package/dist/types/components/Resizable/types.d.ts +52 -0
  83. package/dist/types/components/Select/index.d.ts +3 -3
  84. package/dist/types/components/Skeleton/index.d.ts +36 -0
  85. package/dist/types/components/Skeleton/types.d.ts +12 -0
  86. package/dist/types/components/Tooltip/index.d.ts +3 -3
  87. package/dist/types/components/Validator/index.d.ts +52 -0
  88. package/dist/types/components/Validator/types.d.ts +13 -0
  89. package/dist/types/components/index.d.ts +8 -1
  90. package/dist/types/core/index.d.ts +1 -1
  91. package/dist/types/hooks/index.d.ts +2 -0
  92. package/dist/types/hooks/useFocusController.d.ts +1 -1
  93. package/dist/types/utils/index.d.ts +1 -0
  94. package/dist/types/utils/pixelate.d.ts +10 -0
  95. package/dist/types/utils/style.d.ts +1 -0
  96. package/dist/umd/index.css +1 -1
  97. package/dist/umd/index.css.gz +0 -0
  98. package/dist/umd/index.umd.cjs +3 -3
  99. package/dist/umd/index.umd.cjs.gz +0 -0
  100. package/package.json +4 -4
  101. package/dist/es/Pixelate-BPypBgJU.js +0 -67
  102. package/dist/es/utils-BS5vsvlM.js +0 -101
  103. /package/dist/{es/theme → theme}/Alert.css +0 -0
  104. /package/dist/{es/theme → theme}/Avatar.css +0 -0
  105. /package/dist/{es/theme → theme}/Breadcrumb.css +0 -0
  106. /package/dist/{es/theme → theme}/Card.css +0 -0
  107. /package/dist/{es/theme → theme}/Drawer.css +0 -0
  108. /package/dist/{es/theme → theme}/Form.css +0 -0
  109. /package/dist/{es/theme → theme}/Icon.css +0 -0
  110. /package/dist/{es/theme → theme}/Indicator.css +0 -0
  111. /package/dist/{es/theme → theme}/Link.css +0 -0
  112. /package/dist/{es/theme → theme}/Loading.css +0 -0
  113. /package/dist/{es/theme → theme}/Overlay.css +0 -0
  114. /package/dist/{es/theme → theme}/Popconfirm.css +0 -0
  115. /package/dist/{es/theme → theme}/Progress.css +0 -0
  116. /package/dist/{es/theme → theme}/Table.css +0 -0
  117. /package/dist/{es/theme → theme}/Tooltip.css +0 -0
  118. /package/dist/{es/theme → theme}/fonts/zpix.woff2 +0 -0
  119. /package/dist/{es/theme → theme}/index.css +0 -0
@@ -0,0 +1,192 @@
1
+ /* ─── Skeleton Variables ─── */
2
+ .px-skeleton {
3
+ --px-skeleton-bg-color: var(--px-fill-color-darker, #e0e0e0);
4
+ --px-skeleton-shimmer-color: var(--px-fill-color-light, #f5f5f5);
5
+ --px-skeleton-border-color: var(--px-border-color, #c0c0c0);
6
+ --px-skeleton-shadow-color: var(--px-shadow-color, rgba(0, 0, 0, 0.15));
7
+
8
+ /* Inset bevels (sunken look — opposite of Button's raised look) */
9
+ --px-skeleton-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.3);
10
+ --px-skeleton-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.12);
11
+
12
+ /* Dither overlay color */
13
+ --px-skeleton-dither-color: rgba(255, 255, 255, 0.15);
14
+ }
15
+ /* ─── Base bone / row — positioned container ─── */
16
+ .px-skeleton__bone,
17
+ .px-skeleton__row {
18
+ display: block;
19
+ position: relative;
20
+ background: transparent;
21
+
22
+ /* Pixel drop-shadow traces the pseudo-element shapes */
23
+ filter: drop-shadow(2px 2px 0 var(--px-skeleton-shadow-color));
24
+ }
25
+ /* Border layer */
26
+ .px-skeleton__bone::before, .px-skeleton__row::before {
27
+ content: '';
28
+ position: absolute;
29
+ inset: 0;
30
+ background: var(--px-skeleton-border-color);
31
+ z-index: -1;
32
+ }
33
+ /* Fill layer — inset by border width */
34
+ .px-skeleton__bone::after, .px-skeleton__row::after {
35
+ content: '';
36
+ position: absolute;
37
+ inset: 2px;
38
+ background: var(--px-skeleton-bg-color);
39
+ box-shadow:
40
+ var(--px-skeleton-inset-highlight),
41
+ var(--px-skeleton-inset-shadow);
42
+ z-index: -1;
43
+ }
44
+ .px-skeleton__bone {
45
+ width: 100%;
46
+ height: 16px;
47
+ }
48
+ /* ─── Clip-paths per variant ─── */
49
+ /* Rectangular / Text — 2px chamfered pixel corners */
50
+ .px-skeleton--rectangular .px-skeleton__bone::before,
51
+ .px-skeleton--rectangular .px-skeleton__bone::after,
52
+ .px-skeleton--rectangular .px-skeleton__row::before,
53
+ .px-skeleton--rectangular .px-skeleton__row::after,
54
+ .px-skeleton--text .px-skeleton__bone::before,
55
+ .px-skeleton--text .px-skeleton__bone::after,
56
+ .px-skeleton--text .px-skeleton__row::before,
57
+ .px-skeleton--text .px-skeleton__row::after {
58
+ clip-path: polygon(
59
+ 0 2px, 2px 2px, 2px 0,
60
+ calc(100% - 2px) 0, calc(100% - 2px) 2px, 100% 2px,
61
+ 100% calc(100% - 2px), calc(100% - 2px) calc(100% - 2px), calc(100% - 2px) 100%,
62
+ 2px 100%, 2px calc(100% - 2px), 0 calc(100% - 2px)
63
+ );
64
+ }
65
+ /* Rounded — 4px staircase corners */
66
+ .px-skeleton--rounded .px-skeleton__bone::before,
67
+ .px-skeleton--rounded .px-skeleton__bone::after {
68
+ clip-path: polygon(
69
+ 0 4px, 2px 4px, 2px 2px, 4px 2px, 4px 0,
70
+ calc(100% - 4px) 0, calc(100% - 4px) 2px, calc(100% - 2px) 2px, calc(100% - 2px) 4px, 100% 4px,
71
+ 100% calc(100% - 4px), calc(100% - 2px) calc(100% - 4px), calc(100% - 2px) calc(100% - 2px), calc(100% - 4px) calc(100% - 2px), calc(100% - 4px) 100%,
72
+ 4px 100%, 4px calc(100% - 2px), 2px calc(100% - 2px), 2px calc(100% - 4px), 0 calc(100% - 4px)
73
+ );
74
+ }
75
+ /* Circular — 4-step staircase pixel circle (matching Avatar/Button) */
76
+ .px-skeleton--circular .px-skeleton__bone::before,
77
+ .px-skeleton--circular .px-skeleton__bone::after {
78
+ clip-path: polygon(
79
+ 0 10px, 2px 10px, 2px 6px, 4px 6px, 4px 4px, 6px 4px, 6px 2px, 10px 2px, 10px 0,
80
+ calc(100% - 10px) 0, calc(100% - 10px) 2px, calc(100% - 6px) 2px, calc(100% - 6px) 4px, calc(100% - 4px) 4px, calc(100% - 4px) 6px, calc(100% - 2px) 6px, calc(100% - 2px) 10px, 100% 10px,
81
+ 100% calc(100% - 10px), calc(100% - 2px) calc(100% - 10px), calc(100% - 2px) calc(100% - 6px), calc(100% - 4px) calc(100% - 6px), calc(100% - 4px) calc(100% - 4px), calc(100% - 6px) calc(100% - 4px), calc(100% - 6px) calc(100% - 2px), calc(100% - 10px) calc(100% - 2px), calc(100% - 10px) 100%,
82
+ 10px 100%, 10px calc(100% - 2px), 6px calc(100% - 2px), 6px calc(100% - 4px), 4px calc(100% - 4px), 4px calc(100% - 6px), 2px calc(100% - 6px), 2px calc(100% - 10px), 0 calc(100% - 10px)
83
+ );
84
+ }
85
+ /* ─── Animation: Shimmer — Scanline sweep ─── */
86
+ @keyframes px-skeleton-shimmer {
87
+ 0% { background-position: -30% 0, 0 0;
88
+ }
89
+ 100% { background-position: 130% 0, 0 0;
90
+ }
91
+ }
92
+ .px-skeleton.is-animated.is-animation-shimmer .px-skeleton__bone::after,
93
+ .px-skeleton.is-animated.is-animation-shimmer .px-skeleton__row::after {
94
+ background:
95
+ /* Narrow hard-edged highlight band — scanline-like */
96
+ linear-gradient(
97
+ 90deg,
98
+ transparent 0%,
99
+ transparent 40%,
100
+ var(--px-skeleton-shimmer-color) 45%,
101
+ var(--px-skeleton-shimmer-color) 55%,
102
+ transparent 60%,
103
+ transparent 100%
104
+ ),
105
+ var(--px-skeleton-bg-color);
106
+ background-size: 200% 100%, 100% 100%;
107
+ animation: px-skeleton-shimmer 1.5s steps(12, jump-none) infinite;
108
+ }
109
+ /* ─── Animation: Pulse — Two-frame blink ─── */
110
+ @keyframes px-skeleton-pulse {
111
+ 0%, 100% { opacity: 1;
112
+ }
113
+ 50% { opacity: 0.5;
114
+ }
115
+ }
116
+ .px-skeleton.is-animated.is-animation-pulse .px-skeleton__bone::after,
117
+ .px-skeleton.is-animated.is-animation-pulse .px-skeleton__row::after {
118
+ animation: px-skeleton-pulse 1.2s steps(2, jump-none) infinite;
119
+ }
120
+ /* ─── Animation: Dither — Checkerboard dissolve ─── */
121
+ @keyframes px-skeleton-dither {
122
+ 0% { background-position: 0 0, 0 0;
123
+ }
124
+ 25% { background-position: 2px 0, 0 0;
125
+ }
126
+ 50% { background-position: 2px 2px, 0 0;
127
+ }
128
+ 75% { background-position: 0 2px, 0 0;
129
+ }
130
+ 100% { background-position: 0 0, 0 0;
131
+ }
132
+ }
133
+ .px-skeleton.is-animated.is-animation-dither .px-skeleton__bone::after,
134
+ .px-skeleton.is-animated.is-animation-dither .px-skeleton__row::after {
135
+ background:
136
+ /* 2×2 pixel checkerboard dither pattern */
137
+ repeating-conic-gradient(
138
+ var(--px-skeleton-dither-color) 0% 25%,
139
+ transparent 0% 50%
140
+ ) 0 0 / 4px 4px,
141
+ var(--px-skeleton-bg-color);
142
+ animation: px-skeleton-dither 1.6s steps(4, jump-none) infinite;
143
+ }
144
+ /* ─── Text variant — thin horizontal bars ─── */
145
+ .px-skeleton--text .px-skeleton__bone {
146
+ height: 12px;
147
+ }
148
+ .px-skeleton--text .px-skeleton__row {
149
+ height: 12px;
150
+ margin-bottom: 8px;
151
+ }
152
+ .px-skeleton--text .px-skeleton__row:last-child {
153
+ margin-bottom: 0;
154
+ }
155
+ /* ─── Circular variant ─── */
156
+ .px-skeleton--circular .px-skeleton__bone {
157
+ width: 40px;
158
+ height: 40px;
159
+ }
160
+ /* ─── Size: Large ─── */
161
+ .px-skeleton--large .px-skeleton__bone {
162
+ height: 24px;
163
+ }
164
+ .px-skeleton--large .px-skeleton__row {
165
+ height: 18px;
166
+ }
167
+ .px-skeleton--large.px-skeleton--circular .px-skeleton__bone {
168
+ width: 56px;
169
+ height: 56px;
170
+ }
171
+ /* ─── Size: Small ─── */
172
+ .px-skeleton--small .px-skeleton__bone {
173
+ height: 12px;
174
+ }
175
+ .px-skeleton--small .px-skeleton__row {
176
+ height: 10px;
177
+ margin-bottom: 6px;
178
+ }
179
+ .px-skeleton--small.px-skeleton--circular .px-skeleton__bone {
180
+ width: 28px;
181
+ height: 28px;
182
+ }
183
+ /* ─── Dark mode ─── */
184
+ .px-dark .px-skeleton {
185
+ --px-skeleton-bg-color: var(--px-fill-color-darker, #3a3a3a);
186
+ --px-skeleton-shimmer-color: var(--px-fill-color, #4a4a4a);
187
+ --px-skeleton-border-color: var(--px-border-color, #555);
188
+ --px-skeleton-shadow-color: rgba(0, 0, 0, 0.3);
189
+ --px-skeleton-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.08);
190
+ --px-skeleton-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.2);
191
+ --px-skeleton-dither-color: rgba(255, 255, 255, 0.08);
192
+ }
@@ -6,6 +6,14 @@
6
6
  --px-switch-off-border-color: var(--px-border-color);
7
7
  --px-switch-shadow-color: var(--px-shadow-color);
8
8
  --px-switch-handle-color: var(--px-color-white);
9
+
10
+ /* Track groove (sunken bevel) */
11
+ --px-switch-inset-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.12);
12
+ --px-switch-inset-highlight: inset -2px -2px 0 0 rgba(255, 255, 255, 0.1);
13
+
14
+ /* Handle (raised bevel) */
15
+ --px-switch-handle-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.3);
16
+ --px-switch-handle-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.12);
9
17
  }
10
18
  /* Base Switch Styles - Pixel Toggle */
11
19
  .px-switch {
@@ -40,6 +48,8 @@
40
48
  }
41
49
  .px-switch.is-checked .px-switch__core::after {
42
50
  background: var(--px-switch-on-color);
51
+ box-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.06),
52
+ inset -2px -2px 0 0 rgba(255, 255, 255, 0.15);
43
53
  }
44
54
  .px-switch.is-checked .px-switch__core {
45
55
 
@@ -141,7 +151,7 @@
141
151
  );
142
152
  z-index: 0;
143
153
  }
144
- /* Fill layer — pixel shape */
154
+ /* Fill layer — pixel shape with sunken groove bevel */
145
155
  .px-switch__core::after {
146
156
  content: "";
147
157
  position: absolute;
@@ -169,6 +179,7 @@
169
179
  2px calc(100% - 4px),
170
180
  0 calc(100% - 4px)
171
181
  );
182
+ box-shadow: var(--px-switch-inset-shadow), var(--px-switch-inset-highlight);
172
183
  z-index: 0;
173
184
  }
174
185
  /* The toggle handle - pixel square */
@@ -178,7 +189,7 @@
178
189
  width: 18px;
179
190
  height: 18px;
180
191
  background: transparent;
181
- transition: none;
192
+ transition: left 0.15s steps(3);
182
193
  z-index: 2;
183
194
  display: flex;
184
195
  align-items: center;
@@ -205,7 +216,7 @@
205
216
  0 calc(100% - 2px)
206
217
  );
207
218
  }
208
- /* Handle fill layer */
219
+ /* Handle fill layer — raised bevel like a game D-pad button */
209
220
  .px-switch__core .px-switch__core-action::after {
210
221
  content: "";
211
222
  position: absolute;
@@ -225,6 +236,7 @@
225
236
  2px calc(100% - 2px),
226
237
  0 calc(100% - 2px)
227
238
  );
239
+ box-shadow: var(--px-switch-handle-highlight), var(--px-switch-handle-shadow);
228
240
  }
229
241
  /* Icon inside thumb */
230
242
  .px-switch__core .px-switch__core-action .px-switch__icon {
@@ -302,3 +314,10 @@
302
314
  var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-danger-dark)
303
315
  );
304
316
  }
317
+ /* Dark mode bevel adjustments */
318
+ html.dark .px-switch {
319
+ --px-switch-inset-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.25);
320
+ --px-switch-inset-highlight: inset -2px -2px 0 0 rgba(255, 255, 255, 0.05);
321
+ --px-switch-handle-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.15);
322
+ --px-switch-handle-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.2);
323
+ }
@@ -0,0 +1,25 @@
1
+ .px-validator[data-v-9c099378] {
2
+ display: inline-flex;
3
+ flex-direction: column;
4
+ font-family: var(--px-font-family);
5
+ }
6
+ .px-validator__content[data-v-9c099378] {
7
+ display: contents;
8
+ }
9
+ .px-validator__hint[data-v-9c099378] {
10
+ min-height: 1.4em;
11
+ padding-top: 4px;
12
+ font-size: var(--px-font-size-small);
13
+ color: var(--px-color-danger);
14
+ line-height: 1.4;
15
+ transition: opacity 0.15s ease;
16
+ }
17
+ .px-validator__hint.is-hidden[data-v-9c099378] {
18
+ opacity: 0;
19
+ pointer-events: none;
20
+ }
21
+ .px-validator__hint-text[data-v-9c099378] {
22
+ display: inline-flex;
23
+ align-items: center;
24
+ gap: 4px;
25
+ }
@@ -0,0 +1,2 @@
1
+ import { ColorTemplate } from '@sakana-element/utils';
2
+ export declare const CHAT_COLOR_TEMPLATES: Record<string, ColorTemplate>;
@@ -0,0 +1,27 @@
1
+ export declare const PxChatBubble: {
2
+ new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('packages/core').ChatBubbleProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {
3
+ placement: import('packages/core').ChatBubblePlacement;
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').ChatBubbleProps> & Readonly<{}>, {}, {}, {}, {}, {
12
+ placement: import('packages/core').ChatBubblePlacement;
13
+ }>;
14
+ __isFragment?: never;
15
+ __isTeleport?: never;
16
+ __isSuspense?: never;
17
+ } & import('vue').ComponentOptionsBase<Readonly<import('packages/core').ChatBubbleProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {
18
+ placement: import('packages/core').ChatBubblePlacement;
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
+ avatar?(_: {}): any;
22
+ header?(_: {}): any;
23
+ default?(_: {}): any;
24
+ footer?(_: {}): any;
25
+ };
26
+ }) & import('vue').Plugin;
27
+ export * from './types';
@@ -0,0 +1,10 @@
1
+ export type ChatBubbleType = 'primary' | 'success' | 'info' | 'warning' | 'danger';
2
+ export type ChatBubblePlacement = 'start' | 'end';
3
+ export interface ChatBubbleProps {
4
+ placement?: ChatBubblePlacement;
5
+ type?: ChatBubbleType;
6
+ color?: string;
7
+ name?: string;
8
+ time?: string;
9
+ status?: string;
10
+ }
@@ -0,0 +1,4 @@
1
+ export declare const DEFAULT_POSITION = 50;
2
+ export declare const DEFAULT_DIFF_PIXEL_SIZE = 8;
3
+ export declare const DEFAULT_DIFF_BACKGROUND = "#FFFFFF";
4
+ export declare const PRESET_DIFF_COLORS: Set<string>;
@@ -0,0 +1,67 @@
1
+ export declare const PxDiff: {
2
+ new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('packages/core').DiffProps> & Readonly<{
3
+ onError?: ((event: Event) => any) | undefined;
4
+ onChange?: ((position: number) => any) | undefined;
5
+ onRendered?: (() => any) | undefined;
6
+ }>, {
7
+ setPosition: (pos: number) => void;
8
+ getPosition: () => number;
9
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
10
+ error: (event: Event) => any;
11
+ change: (position: number) => any;
12
+ rendered: () => any;
13
+ }, import('vue').PublicProps, {
14
+ pixelSize: number;
15
+ grayscale: boolean;
16
+ background: string;
17
+ initialPosition: number;
18
+ }, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {
19
+ containerRef: HTMLDivElement;
20
+ canvasRef: HTMLCanvasElement;
21
+ originRef: HTMLImageElement;
22
+ }, HTMLDivElement, import('vue').ComponentProvideOptions, {
23
+ P: {};
24
+ B: {};
25
+ D: {};
26
+ C: {};
27
+ M: {};
28
+ Defaults: {};
29
+ }, Readonly<import('packages/core').DiffProps> & Readonly<{
30
+ onError?: ((event: Event) => any) | undefined;
31
+ onChange?: ((position: number) => any) | undefined;
32
+ onRendered?: (() => any) | undefined;
33
+ }>, {
34
+ setPosition: (pos: number) => void;
35
+ getPosition: () => number;
36
+ }, {}, {}, {}, {
37
+ pixelSize: number;
38
+ grayscale: boolean;
39
+ background: string;
40
+ initialPosition: number;
41
+ }>;
42
+ __isFragment?: never;
43
+ __isTeleport?: never;
44
+ __isSuspense?: never;
45
+ } & import('vue').ComponentOptionsBase<Readonly<import('packages/core').DiffProps> & Readonly<{
46
+ onError?: ((event: Event) => any) | undefined;
47
+ onChange?: ((position: number) => any) | undefined;
48
+ onRendered?: (() => any) | undefined;
49
+ }>, {
50
+ setPosition: (pos: number) => void;
51
+ getPosition: () => number;
52
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
53
+ error: (event: Event) => any;
54
+ change: (position: number) => any;
55
+ rendered: () => any;
56
+ }, string, {
57
+ pixelSize: number;
58
+ grayscale: boolean;
59
+ background: string;
60
+ initialPosition: number;
61
+ }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & (new () => {
62
+ $slots: {
63
+ before?(_: {}): any;
64
+ after?(_: {}): any;
65
+ };
66
+ }) & import('vue').Plugin;
67
+ export * from './types';
@@ -0,0 +1,29 @@
1
+ export interface DiffProps {
2
+ /** Single image source — "after" side auto-pixelates this image */
3
+ src?: string;
4
+ /** Pixel block size for pixelation (default: 8) */
5
+ pixelSize?: number;
6
+ /** Apply grayscale transform to the pixelated side */
7
+ grayscale?: boolean;
8
+ /** Constrain colors to a custom palette (hex strings or RGB tuples) */
9
+ palette?: string[] | number[][];
10
+ /** Background color for transparent areas (default: '#FFFFFF') */
11
+ background?: string;
12
+ /** Initial slider position 0-100 (default: 50) */
13
+ initialPosition?: number;
14
+ /** Container width */
15
+ width?: number | string;
16
+ /** Container height */
17
+ height?: number | string;
18
+ /** Handle accent color (preset name or hex) */
19
+ color?: string;
20
+ }
21
+ export interface DiffEmits {
22
+ (e: 'change', position: number): void;
23
+ (e: 'rendered'): void;
24
+ (e: 'error', event: Event): void;
25
+ }
26
+ export interface DiffInstance {
27
+ setPosition(position: number): void;
28
+ getPosition(): number;
29
+ }
@@ -69,8 +69,8 @@ export declare const PxDropdown: {
69
69
  }, string, {
70
70
  effect: import('packages/core').TooltipEffect;
71
71
  transition: string;
72
- trigger: "hover" | "click" | "contextmenu";
73
72
  placement: import('@popperjs/core').Placement;
73
+ trigger: "hover" | "click" | "contextmenu";
74
74
  showTimeout: number;
75
75
  hideTimeout: number;
76
76
  enterable: boolean;
@@ -97,15 +97,15 @@ export declare const PxDropdown: {
97
97
  } & Readonly<{
98
98
  effect: import('packages/core').TooltipEffect;
99
99
  transition: string;
100
- trigger: "hover" | "click" | "contextmenu";
101
100
  placement: import('@popperjs/core').Placement;
101
+ trigger: "hover" | "click" | "contextmenu";
102
102
  showTimeout: number;
103
103
  hideTimeout: number;
104
104
  enterable: boolean;
105
105
  }> & Omit<Readonly<import('packages/core').TooltipProps> & Readonly<{
106
106
  "onVisible-change"?: ((value: boolean) => any) | undefined;
107
107
  "onClick-outside"?: (() => any) | undefined;
108
- }>, "toggle" | "show" | "hide" | ("effect" | "transition" | "trigger" | "placement" | "showTimeout" | "hideTimeout" | "enterable")> & import('vue').ShallowUnwrapRef<{
108
+ }>, "toggle" | "show" | "hide" | ("effect" | "transition" | "placement" | "trigger" | "showTimeout" | "hideTimeout" | "enterable")> & import('vue').ShallowUnwrapRef<{
109
109
  show(): void;
110
110
  hide(): void;
111
111
  toggle(): void;
@@ -0,0 +1,5 @@
1
+ import { ColorTemplate } from '@sakana-element/utils';
2
+ import { InjectionKey } from 'vue';
3
+ import { FilterContext } from './types';
4
+ export declare const FILTER_CTX_KEY: InjectionKey<FilterContext>;
5
+ export declare const FILTER_COLOR_TEMPLATES: Record<string, ColorTemplate>;
@@ -0,0 +1,59 @@
1
+ export declare const PxFilter: {
2
+ new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('packages/core').FilterProps> & Readonly<{
3
+ onChange?: ((value: import('packages/core').FilterValueType | import('packages/core').FilterValueType[] | undefined) => any) | undefined;
4
+ "onUpdate:modelValue"?: ((value: import('packages/core').FilterValueType | import('packages/core').FilterValueType[] | undefined) => any) | undefined;
5
+ }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
6
+ change: (value: import('packages/core').FilterValueType | import('packages/core').FilterValueType[] | undefined) => any;
7
+ "update:modelValue": (value: import('packages/core').FilterValueType | import('packages/core').FilterValueType[] | undefined) => any;
8
+ }, import('vue').PublicProps, {
9
+ disabled: boolean;
10
+ multiple: boolean;
11
+ }, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, HTMLDivElement, import('vue').ComponentProvideOptions, {
12
+ P: {};
13
+ B: {};
14
+ D: {};
15
+ C: {};
16
+ M: {};
17
+ Defaults: {};
18
+ }, Readonly<import('packages/core').FilterProps> & Readonly<{
19
+ onChange?: ((value: import('packages/core').FilterValueType | import('packages/core').FilterValueType[] | undefined) => any) | undefined;
20
+ "onUpdate:modelValue"?: ((value: import('packages/core').FilterValueType | import('packages/core').FilterValueType[] | undefined) => any) | undefined;
21
+ }>, {}, {}, {}, {}, {
22
+ disabled: boolean;
23
+ multiple: boolean;
24
+ }>;
25
+ __isFragment?: never;
26
+ __isTeleport?: never;
27
+ __isSuspense?: never;
28
+ } & import('vue').ComponentOptionsBase<Readonly<import('packages/core').FilterProps> & Readonly<{
29
+ onChange?: ((value: import('packages/core').FilterValueType | import('packages/core').FilterValueType[] | undefined) => any) | undefined;
30
+ "onUpdate:modelValue"?: ((value: import('packages/core').FilterValueType | import('packages/core').FilterValueType[] | undefined) => any) | undefined;
31
+ }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
32
+ change: (value: import('packages/core').FilterValueType | import('packages/core').FilterValueType[] | undefined) => any;
33
+ "update:modelValue": (value: import('packages/core').FilterValueType | import('packages/core').FilterValueType[] | undefined) => any;
34
+ }, string, {
35
+ disabled: boolean;
36
+ multiple: boolean;
37
+ }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & (new () => {
38
+ $slots: {
39
+ default?(_: {}): any;
40
+ };
41
+ }) & import('vue').Plugin;
42
+ export declare const PxFilterItem: {
43
+ new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('packages/core').FilterItemProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {}, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
44
+ P: {};
45
+ B: {};
46
+ D: {};
47
+ C: {};
48
+ M: {};
49
+ Defaults: {};
50
+ }, Readonly<import('packages/core').FilterItemProps> & Readonly<{}>, {}, {}, {}, {}, {}>;
51
+ __isFragment?: never;
52
+ __isTeleport?: never;
53
+ __isSuspense?: never;
54
+ } & import('vue').ComponentOptionsBase<Readonly<import('packages/core').FilterItemProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & (new () => {
55
+ $slots: {
56
+ default?(_: {}): any;
57
+ };
58
+ }) & import('vue').Plugin;
59
+ export * from './types';
@@ -0,0 +1,38 @@
1
+ import { ComputedRef } from 'vue';
2
+ export type FilterValueType = string | number;
3
+ export type FilterType = 'primary' | 'success' | 'warning' | 'danger' | 'info';
4
+ export interface FilterOptionProps {
5
+ value: FilterValueType;
6
+ label: string;
7
+ disabled?: boolean;
8
+ }
9
+ export interface FilterProps {
10
+ modelValue?: FilterValueType | FilterValueType[];
11
+ options?: FilterOptionProps[];
12
+ name?: string;
13
+ disabled?: boolean;
14
+ size?: 'small' | 'large';
15
+ type?: FilterType;
16
+ color?: string;
17
+ multiple?: boolean;
18
+ }
19
+ export interface FilterEmits {
20
+ (e: 'update:modelValue', value: FilterValueType | FilterValueType[] | undefined): void;
21
+ (e: 'change', value: FilterValueType | FilterValueType[] | undefined): void;
22
+ }
23
+ export interface FilterItemProps {
24
+ value: FilterValueType;
25
+ label?: string;
26
+ disabled?: boolean;
27
+ }
28
+ export interface FilterContext {
29
+ modelValue: ComputedRef<FilterValueType | FilterValueType[] | undefined>;
30
+ disabled: ComputedRef<boolean>;
31
+ size: ComputedRef<'small' | 'large' | undefined>;
32
+ type: ComputedRef<FilterType | undefined>;
33
+ color: ComputedRef<string | undefined>;
34
+ name: ComputedRef<string | undefined>;
35
+ multiple: ComputedRef<boolean>;
36
+ hasSelection: ComputedRef<boolean>;
37
+ changeEvent(value: FilterValueType | undefined): void;
38
+ }
@@ -24,3 +24,4 @@ export * from './types';
24
24
  */
25
25
  export declare function registerDefaultPixelIcons(): void;
26
26
  export { defaultPixelIcons } from './icons';
27
+ export { registerPixelIcon, registerPixelIcons, hasPixelIcon, getRegisteredIconNames, getPixelIcon, resolveIconName, getIconNameMap, } from '@sakana-element/utils';
@@ -0,0 +1,3 @@
1
+ import { KbdKey, KbdKeyInfo } from './types';
2
+ export declare const KBD_KEY_MAP: Record<KbdKey, KbdKeyInfo>;
3
+ export declare const ARROW_KEYS: Set<KbdKey>;
@@ -0,0 +1,24 @@
1
+ export declare const PxKbd: {
2
+ new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('packages/core').KbdProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {
3
+ size: import('packages/core').KbdSize;
4
+ }, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, HTMLSpanElement, import('vue').ComponentProvideOptions, {
5
+ P: {};
6
+ B: {};
7
+ D: {};
8
+ C: {};
9
+ M: {};
10
+ Defaults: {};
11
+ }, Readonly<import('packages/core').KbdProps> & Readonly<{}>, {}, {}, {}, {}, {
12
+ size: import('packages/core').KbdSize;
13
+ }>;
14
+ __isFragment?: never;
15
+ __isTeleport?: never;
16
+ __isSuspense?: never;
17
+ } & import('vue').ComponentOptionsBase<Readonly<import('packages/core').KbdProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {
18
+ size: import('packages/core').KbdSize;
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
+ default?(_: {}): any;
22
+ };
23
+ }) & import('vue').Plugin;
24
+ export * from './types';
@@ -0,0 +1,10 @@
1
+ export type KbdSize = 'small' | 'default' | 'large';
2
+ export type KbdKey = 'command' | 'shift' | 'ctrl' | 'alt' | 'option' | 'enter' | 'delete' | 'escape' | 'tab' | 'capslock' | 'up' | 'down' | 'left' | 'right' | 'space' | 'win' | 'fn' | 'home' | 'end' | 'pageup' | 'pagedown';
3
+ export interface KbdKeyInfo {
4
+ label: string;
5
+ icon?: string;
6
+ }
7
+ export interface KbdProps {
8
+ size?: KbdSize;
9
+ keys?: KbdKey[];
10
+ }
@@ -15,9 +15,9 @@ export declare const PxPixelate: {
15
15
  error: (event: Event) => any;
16
16
  rendered: () => any;
17
17
  }, import('vue').PublicProps, {
18
- background: string;
19
18
  pixelSize: number;
20
19
  grayscale: boolean;
20
+ background: string;
21
21
  }, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {
22
22
  canvasRef: HTMLCanvasElement;
23
23
  originRef: HTMLImageElement;
@@ -41,9 +41,9 @@ export declare const PxPixelate: {
41
41
  };
42
42
  getImageData: () => ImageData | null;
43
43
  }, {}, {}, {}, {
44
- background: string;
45
44
  pixelSize: number;
46
45
  grayscale: boolean;
46
+ background: string;
47
47
  }>;
48
48
  __isFragment?: never;
49
49
  __isTeleport?: never;
@@ -64,8 +64,8 @@ export declare const PxPixelate: {
64
64
  error: (event: Event) => any;
65
65
  rendered: () => any;
66
66
  }, string, {
67
- background: string;
68
67
  pixelSize: number;
69
68
  grayscale: boolean;
69
+ background: string;
70
70
  }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & import('vue').Plugin;
71
71
  export * from './types';