sakana-element 2.1.2 → 2.1.3

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 (40) hide show
  1. package/README.md +1 -0
  2. package/dist/es/Alert-A4stKumX.js +19 -0
  3. package/dist/es/Badge-BG-vYP8Y.js +13 -0
  4. package/dist/es/Button-CFGE4_Ng.js +22 -0
  5. package/dist/es/{Collapse-l_8qKOBG.js → Collapse-B08VhCVq.js} +2 -2
  6. package/dist/es/{ConfigProvider-BPm3h9RG.js → ConfigProvider-DZO1d5Eq.js} +1 -1
  7. package/dist/es/{Dropdown-ZjZ0qSn2.js → Dropdown-CA-nv-2j.js} +3 -3
  8. package/dist/es/{Form-pxRZxseS.js → Form-VB1SL_iW.js} +1 -1
  9. package/dist/es/{Icon-UBaqO2nY.js → Icon-DpJyuj7c.js} +1 -1
  10. package/dist/es/{Input-BJoBaFXa.js → Input-C-bIqqo_.js} +3 -3
  11. package/dist/es/{Loading-BJJBJhg3.js → Loading-4MsOvzx9.js} +3 -3
  12. package/dist/es/{Message-CqBKW0c8.js → Message-CxT9rRUp.js} +5 -5
  13. package/dist/es/{Notification-CVACM2cj.js → Notification-D6em5HmO.js} +7 -7
  14. package/dist/es/{Overlay-C1k4Jcl7.js → Overlay-BRDSWspM.js} +1 -1
  15. package/dist/es/{Popconfirm-CW8oRycq.js → Popconfirm-D0ABSr-F.js} +4 -4
  16. package/dist/es/{Select-C7mwByXa.js → Select-BKYDP224.js} +4 -4
  17. package/dist/es/{Switch-CgFPFC3j.js → Switch-C1IdbnUa.js} +1 -1
  18. package/dist/es/{Tooltip-D9rQ4LEg.js → Tooltip-KpwbZdMX.js} +16 -16
  19. package/dist/es/index.js +54 -52
  20. package/dist/es/utils-bsCscZfS.js +84 -0
  21. package/dist/index.css +1 -1
  22. package/dist/theme/Alert.css +114 -38
  23. package/dist/theme/Badge.css +208 -0
  24. package/dist/theme/Button.css +83 -83
  25. package/dist/types/components/Alert/types.d.ts +3 -0
  26. package/dist/types/components/Badge/index.d.ts +27 -0
  27. package/dist/types/components/Badge/types.d.ts +10 -0
  28. package/dist/types/components/Button/constants.d.ts +2 -0
  29. package/dist/types/components/index.d.ts +1 -0
  30. package/dist/types/hooks/useSystemTheme.d.ts +1 -1
  31. package/dist/types/utils/color.d.ts +33 -0
  32. package/dist/types/utils/index.d.ts +1 -0
  33. package/dist/umd/index.css +1 -1
  34. package/dist/umd/index.css.gz +0 -0
  35. package/dist/umd/index.umd.cjs +3 -3
  36. package/dist/umd/index.umd.cjs.gz +0 -0
  37. package/package.json +1 -1
  38. package/dist/es/Alert-C5X-XFGJ.js +0 -15
  39. package/dist/es/Button-DTik2ZP6.js +0 -33
  40. package/dist/es/utils-340oIQ8K.js +0 -59
@@ -1,9 +1,9 @@
1
1
  /* Button Group Variables */
2
- .px-button-group[data-v-7044e22a] {
2
+ .px-button-group[data-v-6be339e2] {
3
3
  --px-button-group-border-color: var(--px-border-color-lighter);
4
4
  }
5
5
  /* Button Base Variables */
6
- .px-button[data-v-7044e22a] {
6
+ .px-button[data-v-6be339e2] {
7
7
  --px-button-font-weight: var(--px-font-weight-primary);
8
8
  --px-button-border-color: var(--px-border-color);
9
9
  --px-button-bg-color: var(--px-fill-color-blank);
@@ -21,7 +21,7 @@
21
21
  --px-button-shadow-color: var(--px-shadow-color);
22
22
  }
23
23
  /* Base Button Styles - Pixel Game Aesthetic */
24
- .px-button[data-v-7044e22a] {
24
+ .px-button[data-v-6be339e2] {
25
25
  display: inline-flex;
26
26
  justify-content: center;
27
27
  align-items: center;
@@ -53,7 +53,7 @@
53
53
  transition: none;
54
54
  }
55
55
  /* Border layer — filled with border color, clipped to pixel shape */
56
- .px-button[data-v-7044e22a]::before {
56
+ .px-button[data-v-6be339e2]::before {
57
57
  content: '';
58
58
  position: absolute;
59
59
  inset: 0;
@@ -67,7 +67,7 @@
67
67
  z-index: -1;
68
68
  }
69
69
  /* Fill layer — inset by border width, filled with bg color */
70
- .px-button[data-v-7044e22a]::after {
70
+ .px-button[data-v-6be339e2]::after {
71
71
  content: '';
72
72
  position: absolute;
73
73
  inset: 2px;
@@ -80,110 +80,110 @@
80
80
  );
81
81
  z-index: -1;
82
82
  }
83
- .px-button + .px-button[data-v-7044e22a] {
83
+ .px-button + .px-button[data-v-6be339e2] {
84
84
  margin-left: 12px;
85
85
  }
86
86
  /* Hover - Lift effect */
87
- .px-button[data-v-7044e22a]:hover:not(.is-disabled):not(.is-loading) {
87
+ .px-button[data-v-6be339e2]:hover:not(.is-disabled):not(.is-loading) {
88
88
  color: var(--px-button-hover-text-color);
89
89
  transform: translate(-1px, -1px);
90
90
  filter: drop-shadow(4px 4px 0px var(--px-button-shadow-color));
91
91
  }
92
- .px-button[data-v-7044e22a]:hover:not(.is-disabled):not(.is-loading)::before {
92
+ .px-button[data-v-6be339e2]:hover:not(.is-disabled):not(.is-loading)::before {
93
93
  background: var(--px-button-hover-border-color);
94
94
  }
95
- .px-button[data-v-7044e22a]:hover:not(.is-disabled):not(.is-loading)::after {
95
+ .px-button[data-v-6be339e2]:hover:not(.is-disabled):not(.is-loading)::after {
96
96
  background: var(--px-button-hover-bg-color);
97
97
  }
98
98
  /* Active - Press down effect */
99
- .px-button[data-v-7044e22a]:active:not(.is-disabled):not(.is-loading) {
99
+ .px-button[data-v-6be339e2]:active:not(.is-disabled):not(.is-loading) {
100
100
  color: var(--px-button-active-text-color);
101
101
  transform: translate(1px, 1px);
102
102
  filter: drop-shadow(1px 1px 0px var(--px-button-shadow-color));
103
103
  }
104
- .px-button[data-v-7044e22a]:active:not(.is-disabled):not(.is-loading)::before {
104
+ .px-button[data-v-6be339e2]:active:not(.is-disabled):not(.is-loading)::before {
105
105
  background: var(--px-button-active-border-color);
106
106
  }
107
- .px-button[data-v-7044e22a]:active:not(.is-disabled):not(.is-loading)::after {
107
+ .px-button[data-v-6be339e2]:active:not(.is-disabled):not(.is-loading)::after {
108
108
  background: var(--px-button-active-bg-color);
109
109
  }
110
110
  /* Focus outline */
111
- .px-button[data-v-7044e22a]:focus-visible {
111
+ .px-button[data-v-6be339e2]:focus-visible {
112
112
  outline: 2px dashed var(--px-color-primary);
113
113
  outline-offset: 2px;
114
114
  }
115
115
  /* Plain variant */
116
- .px-button.is-plain[data-v-7044e22a] {
116
+ .px-button.is-plain[data-v-6be339e2] {
117
117
  --px-button-bg-color: var(--px-fill-color-blank);
118
118
  --px-button-hover-bg-color: var(--px-fill-color-light);
119
119
  --px-button-hover-border-color: var(--px-color-primary);
120
120
  }
121
121
  /* Dash variant - Dashed border on the button itself, no pixel shadow */
122
- .px-button.is-dash[data-v-7044e22a] {
122
+ .px-button.is-dash[data-v-6be339e2] {
123
123
  border: 2px dashed var(--px-button-border-color);
124
124
  filter: none;
125
125
  }
126
- .px-button.is-dash[data-v-7044e22a]::before {
126
+ .px-button.is-dash[data-v-6be339e2]::before {
127
127
  display: none;
128
128
  }
129
- .px-button.is-dash[data-v-7044e22a]::after {
129
+ .px-button.is-dash[data-v-6be339e2]::after {
130
130
  clip-path: none;
131
131
  inset: 0;
132
132
  background: var(--px-button-bg-color);
133
133
  }
134
- .px-button.is-dash[data-v-7044e22a]:hover:not(.is-disabled):not(.is-loading) {
134
+ .px-button.is-dash[data-v-6be339e2]:hover:not(.is-disabled):not(.is-loading) {
135
135
  transform: none;
136
136
  filter: none;
137
137
  border-color: var(--px-button-hover-border-color);
138
138
  }
139
- .px-button.is-dash[data-v-7044e22a]:hover:not(.is-disabled):not(.is-loading)::after {
139
+ .px-button.is-dash[data-v-6be339e2]:hover:not(.is-disabled):not(.is-loading)::after {
140
140
  background: var(--px-button-hover-bg-color);
141
141
  }
142
- .px-button.is-dash[data-v-7044e22a]:active:not(.is-disabled):not(.is-loading) {
142
+ .px-button.is-dash[data-v-6be339e2]:active:not(.is-disabled):not(.is-loading) {
143
143
  transform: none;
144
144
  filter: none;
145
145
  border-color: var(--px-button-active-border-color);
146
146
  }
147
- .px-button.is-dash[data-v-7044e22a]:active:not(.is-disabled):not(.is-loading)::after {
147
+ .px-button.is-dash[data-v-6be339e2]:active:not(.is-disabled):not(.is-loading)::after {
148
148
  background: var(--px-button-active-bg-color);
149
149
  }
150
150
  /* Ghost variant - No border/background, subtle hover fill */
151
- .px-button.is-ghost[data-v-7044e22a] {
151
+ .px-button.is-ghost[data-v-6be339e2] {
152
152
  filter: none;
153
153
  --px-button-shadow-color: transparent;
154
154
  }
155
- .px-button.is-ghost[data-v-7044e22a]::before {
155
+ .px-button.is-ghost[data-v-6be339e2]::before {
156
156
  display: none;
157
157
  }
158
- .px-button.is-ghost[data-v-7044e22a]::after {
158
+ .px-button.is-ghost[data-v-6be339e2]::after {
159
159
  clip-path: none;
160
160
  inset: 0;
161
161
  background: transparent;
162
162
  }
163
- .px-button.is-ghost[data-v-7044e22a]:hover:not(.is-disabled):not(.is-loading) {
163
+ .px-button.is-ghost[data-v-6be339e2]:hover:not(.is-disabled):not(.is-loading) {
164
164
  transform: none;
165
165
  filter: none;
166
166
  color: var(--px-button-hover-text-color);
167
167
  }
168
- .px-button.is-ghost[data-v-7044e22a]:hover:not(.is-disabled):not(.is-loading)::after {
168
+ .px-button.is-ghost[data-v-6be339e2]:hover:not(.is-disabled):not(.is-loading)::after {
169
169
  background: var(--px-button-hover-bg-color, var(--px-fill-color-light));
170
170
  }
171
- .px-button.is-ghost[data-v-7044e22a]:active:not(.is-disabled):not(.is-loading) {
171
+ .px-button.is-ghost[data-v-6be339e2]:active:not(.is-disabled):not(.is-loading) {
172
172
  transform: none;
173
173
  filter: none;
174
174
  color: var(--px-button-active-text-color);
175
175
  }
176
- .px-button.is-ghost[data-v-7044e22a]:active:not(.is-disabled):not(.is-loading)::after {
176
+ .px-button.is-ghost[data-v-6be339e2]:active:not(.is-disabled):not(.is-loading)::after {
177
177
  background: var(--px-button-active-bg-color, var(--px-fill-color));
178
178
  }
179
- .px-button.is-ghost.is-loading[data-v-7044e22a]::after, .px-button.is-ghost.is-disabled[data-v-7044e22a]::after, .px-button.is-ghost.is-disabled[data-v-7044e22a]:hover::after, .px-button.is-ghost.is-disabled[data-v-7044e22a]:focus::after, .px-button.is-ghost[disabled][data-v-7044e22a]::after, .px-button.is-ghost[disabled][data-v-7044e22a]:hover::after, .px-button.is-ghost[disabled][data-v-7044e22a]:focus::after {
179
+ .px-button.is-ghost.is-loading[data-v-6be339e2]::after, .px-button.is-ghost.is-disabled[data-v-6be339e2]::after, .px-button.is-ghost.is-disabled[data-v-6be339e2]:hover::after, .px-button.is-ghost.is-disabled[data-v-6be339e2]:focus::after, .px-button.is-ghost[disabled][data-v-6be339e2]::after, .px-button.is-ghost[disabled][data-v-6be339e2]:hover::after, .px-button.is-ghost[disabled][data-v-6be339e2]:focus::after {
180
180
  background: transparent;
181
181
  }
182
182
  /* Round - Pixel-style rounded with 3-step staircase corners */
183
- .px-button.is-round[data-v-7044e22a] {
183
+ .px-button.is-round[data-v-6be339e2] {
184
184
  padding: 8px 20px;
185
185
  }
186
- .px-button.is-round[data-v-7044e22a]::before, .px-button.is-round[data-v-7044e22a]::after {
186
+ .px-button.is-round[data-v-6be339e2]::before, .px-button.is-round[data-v-6be339e2]::after {
187
187
  clip-path: polygon(
188
188
  0 8px, 2px 8px, 2px 4px, 4px 4px, 4px 2px, 8px 2px, 8px 0,
189
189
  calc(100% - 8px) 0, calc(100% - 8px) 2px, calc(100% - 4px) 2px, calc(100% - 4px) 4px, calc(100% - 2px) 4px, calc(100% - 2px) 8px, 100% 8px,
@@ -192,12 +192,12 @@
192
192
  );
193
193
  }
194
194
  /* Circle - Pixel circle approximation with 4-step staircase */
195
- .px-button.is-circle[data-v-7044e22a] {
195
+ .px-button.is-circle[data-v-6be339e2] {
196
196
  padding: 8px;
197
197
  width: 36px;
198
198
  height: 36px;
199
199
  }
200
- .px-button.is-circle[data-v-7044e22a]::before, .px-button.is-circle[data-v-7044e22a]::after {
200
+ .px-button.is-circle[data-v-6be339e2]::before, .px-button.is-circle[data-v-6be339e2]::after {
201
201
  clip-path: polygon(
202
202
  0 10px, 2px 10px, 2px 6px, 4px 6px, 4px 4px, 6px 4px, 6px 2px, 10px 2px, 10px 0,
203
203
  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,
@@ -206,32 +206,32 @@
206
206
  );
207
207
  }
208
208
  /* Disabled state */
209
- .px-button.is-loading[data-v-7044e22a],
210
- .px-button.is-disabled[data-v-7044e22a],
211
- .px-button.is-disabled[data-v-7044e22a]:hover,
212
- .px-button.is-disabled[data-v-7044e22a]:focus,
213
- .px-button[disabled][data-v-7044e22a],
214
- .px-button[disabled][data-v-7044e22a]:hover,
215
- .px-button[disabled][data-v-7044e22a]:focus {
209
+ .px-button.is-loading[data-v-6be339e2],
210
+ .px-button.is-disabled[data-v-6be339e2],
211
+ .px-button.is-disabled[data-v-6be339e2]:hover,
212
+ .px-button.is-disabled[data-v-6be339e2]:focus,
213
+ .px-button[disabled][data-v-6be339e2],
214
+ .px-button[disabled][data-v-6be339e2]:hover,
215
+ .px-button[disabled][data-v-6be339e2]:focus {
216
216
  color: var(--px-button-disabled-text-color);
217
217
  cursor: not-allowed;
218
218
  filter: drop-shadow(1px 1px 0px rgba(0, 0, 0, 0.1));
219
219
  transform: none;
220
220
  opacity: 0.6;
221
221
  }
222
- .px-button.is-loading[data-v-7044e22a]::before, .px-button.is-disabled[data-v-7044e22a]::before, .px-button.is-disabled[data-v-7044e22a]:hover::before, .px-button.is-disabled[data-v-7044e22a]:focus::before, .px-button[disabled][data-v-7044e22a]::before, .px-button[disabled][data-v-7044e22a]:hover::before, .px-button[disabled][data-v-7044e22a]:focus::before {
222
+ .px-button.is-loading[data-v-6be339e2]::before, .px-button.is-disabled[data-v-6be339e2]::before, .px-button.is-disabled[data-v-6be339e2]:hover::before, .px-button.is-disabled[data-v-6be339e2]:focus::before, .px-button[disabled][data-v-6be339e2]::before, .px-button[disabled][data-v-6be339e2]:hover::before, .px-button[disabled][data-v-6be339e2]:focus::before {
223
223
  background: var(--px-button-disabled-border-color);
224
224
  }
225
- .px-button.is-loading[data-v-7044e22a]::after, .px-button.is-disabled[data-v-7044e22a]::after, .px-button.is-disabled[data-v-7044e22a]:hover::after, .px-button.is-disabled[data-v-7044e22a]:focus::after, .px-button[disabled][data-v-7044e22a]::after, .px-button[disabled][data-v-7044e22a]:hover::after, .px-button[disabled][data-v-7044e22a]:focus::after {
225
+ .px-button.is-loading[data-v-6be339e2]::after, .px-button.is-disabled[data-v-6be339e2]::after, .px-button.is-disabled[data-v-6be339e2]:hover::after, .px-button.is-disabled[data-v-6be339e2]:focus::after, .px-button[disabled][data-v-6be339e2]::after, .px-button[disabled][data-v-6be339e2]:hover::after, .px-button[disabled][data-v-6be339e2]:focus::after {
226
226
  background: var(--px-button-disabled-bg-color);
227
227
  }
228
228
  /* Icon sizing */
229
- .px-button [class*='px-icon'][data-v-7044e22a] {
229
+ .px-button [class*='px-icon'][data-v-6be339e2] {
230
230
  width: 1em;
231
231
  height: 1em;
232
232
  }
233
233
  /* Type variants - Colored buttons */
234
- .px-button--primary[data-v-7044e22a] {
234
+ .px-button--primary[data-v-6be339e2] {
235
235
  --px-button-text-color: var(--px-color-white);
236
236
  --px-button-bg-color: var(--px-color-primary);
237
237
  --px-button-border-color: var(--px-color-primary-dark);
@@ -247,7 +247,7 @@
247
247
  --px-button-disabled-border-color: var(--px-color-primary-light-5);
248
248
  }
249
249
  /* Dash variant for type buttons */
250
- .px-button--primary.is-dash[data-v-7044e22a] {
250
+ .px-button--primary.is-dash[data-v-6be339e2] {
251
251
  --px-button-text-color: var(--px-color-primary);
252
252
  --px-button-bg-color: var(--px-color-primary-light-9);
253
253
  --px-button-border-color: var(--px-color-primary);
@@ -263,7 +263,7 @@
263
263
  --px-button-disabled-border-color: var(--px-color-primary-light-5);
264
264
  }
265
265
  /* Ghost variant for type buttons */
266
- .px-button--primary.is-ghost[data-v-7044e22a] {
266
+ .px-button--primary.is-ghost[data-v-6be339e2] {
267
267
  --px-button-text-color: var(--px-color-primary);
268
268
  --px-button-shadow-color: transparent;
269
269
  --px-button-hover-text-color: var(--px-color-primary-dark);
@@ -274,7 +274,7 @@
274
274
  --px-button-disabled-bg-color: transparent;
275
275
  }
276
276
  /* Plain variant for type buttons */
277
- .px-button--primary.is-plain[data-v-7044e22a] {
277
+ .px-button--primary.is-plain[data-v-6be339e2] {
278
278
  --px-button-text-color: var(--px-color-primary);
279
279
  --px-button-bg-color: var(--px-color-primary-light-9);
280
280
  --px-button-border-color: var(--px-color-primary);
@@ -288,10 +288,10 @@
288
288
  --px-button-disabled-bg-color: var(--px-color-primary-light-9);
289
289
  --px-button-disabled-border-color: var(--px-color-primary-light-7);
290
290
  }
291
- .px-button--primary.is-plain[data-v-7044e22a]:hover:not(.is-disabled):not(.is-loading) {
291
+ .px-button--primary.is-plain[data-v-6be339e2]:hover:not(.is-disabled):not(.is-loading) {
292
292
  --px-button-shadow-color: var(--px-color-primary-dark);
293
293
  }
294
- .px-button--success[data-v-7044e22a] {
294
+ .px-button--success[data-v-6be339e2] {
295
295
  --px-button-text-color: var(--px-color-white);
296
296
  --px-button-bg-color: var(--px-color-success);
297
297
  --px-button-border-color: var(--px-color-success-dark);
@@ -307,7 +307,7 @@
307
307
  --px-button-disabled-border-color: var(--px-color-success-light-5);
308
308
  }
309
309
  /* Dash variant for type buttons */
310
- .px-button--success.is-dash[data-v-7044e22a] {
310
+ .px-button--success.is-dash[data-v-6be339e2] {
311
311
  --px-button-text-color: var(--px-color-success);
312
312
  --px-button-bg-color: var(--px-color-success-light-9);
313
313
  --px-button-border-color: var(--px-color-success);
@@ -323,7 +323,7 @@
323
323
  --px-button-disabled-border-color: var(--px-color-success-light-5);
324
324
  }
325
325
  /* Ghost variant for type buttons */
326
- .px-button--success.is-ghost[data-v-7044e22a] {
326
+ .px-button--success.is-ghost[data-v-6be339e2] {
327
327
  --px-button-text-color: var(--px-color-success);
328
328
  --px-button-shadow-color: transparent;
329
329
  --px-button-hover-text-color: var(--px-color-success-dark);
@@ -334,7 +334,7 @@
334
334
  --px-button-disabled-bg-color: transparent;
335
335
  }
336
336
  /* Plain variant for type buttons */
337
- .px-button--success.is-plain[data-v-7044e22a] {
337
+ .px-button--success.is-plain[data-v-6be339e2] {
338
338
  --px-button-text-color: var(--px-color-success);
339
339
  --px-button-bg-color: var(--px-color-success-light-9);
340
340
  --px-button-border-color: var(--px-color-success);
@@ -348,10 +348,10 @@
348
348
  --px-button-disabled-bg-color: var(--px-color-success-light-9);
349
349
  --px-button-disabled-border-color: var(--px-color-success-light-7);
350
350
  }
351
- .px-button--success.is-plain[data-v-7044e22a]:hover:not(.is-disabled):not(.is-loading) {
351
+ .px-button--success.is-plain[data-v-6be339e2]:hover:not(.is-disabled):not(.is-loading) {
352
352
  --px-button-shadow-color: var(--px-color-success-dark);
353
353
  }
354
- .px-button--warning[data-v-7044e22a] {
354
+ .px-button--warning[data-v-6be339e2] {
355
355
  --px-button-text-color: var(--px-color-white);
356
356
  --px-button-bg-color: var(--px-color-warning);
357
357
  --px-button-border-color: var(--px-color-warning-dark);
@@ -367,7 +367,7 @@
367
367
  --px-button-disabled-border-color: var(--px-color-warning-light-5);
368
368
  }
369
369
  /* Dash variant for type buttons */
370
- .px-button--warning.is-dash[data-v-7044e22a] {
370
+ .px-button--warning.is-dash[data-v-6be339e2] {
371
371
  --px-button-text-color: var(--px-color-warning);
372
372
  --px-button-bg-color: var(--px-color-warning-light-9);
373
373
  --px-button-border-color: var(--px-color-warning);
@@ -383,7 +383,7 @@
383
383
  --px-button-disabled-border-color: var(--px-color-warning-light-5);
384
384
  }
385
385
  /* Ghost variant for type buttons */
386
- .px-button--warning.is-ghost[data-v-7044e22a] {
386
+ .px-button--warning.is-ghost[data-v-6be339e2] {
387
387
  --px-button-text-color: var(--px-color-warning);
388
388
  --px-button-shadow-color: transparent;
389
389
  --px-button-hover-text-color: var(--px-color-warning-dark);
@@ -394,7 +394,7 @@
394
394
  --px-button-disabled-bg-color: transparent;
395
395
  }
396
396
  /* Plain variant for type buttons */
397
- .px-button--warning.is-plain[data-v-7044e22a] {
397
+ .px-button--warning.is-plain[data-v-6be339e2] {
398
398
  --px-button-text-color: var(--px-color-warning);
399
399
  --px-button-bg-color: var(--px-color-warning-light-9);
400
400
  --px-button-border-color: var(--px-color-warning);
@@ -408,10 +408,10 @@
408
408
  --px-button-disabled-bg-color: var(--px-color-warning-light-9);
409
409
  --px-button-disabled-border-color: var(--px-color-warning-light-7);
410
410
  }
411
- .px-button--warning.is-plain[data-v-7044e22a]:hover:not(.is-disabled):not(.is-loading) {
411
+ .px-button--warning.is-plain[data-v-6be339e2]:hover:not(.is-disabled):not(.is-loading) {
412
412
  --px-button-shadow-color: var(--px-color-warning-dark);
413
413
  }
414
- .px-button--info[data-v-7044e22a] {
414
+ .px-button--info[data-v-6be339e2] {
415
415
  --px-button-text-color: var(--px-color-white);
416
416
  --px-button-bg-color: var(--px-color-info);
417
417
  --px-button-border-color: var(--px-color-info-dark);
@@ -427,7 +427,7 @@
427
427
  --px-button-disabled-border-color: var(--px-color-info-light-5);
428
428
  }
429
429
  /* Dash variant for type buttons */
430
- .px-button--info.is-dash[data-v-7044e22a] {
430
+ .px-button--info.is-dash[data-v-6be339e2] {
431
431
  --px-button-text-color: var(--px-color-info);
432
432
  --px-button-bg-color: var(--px-color-info-light-9);
433
433
  --px-button-border-color: var(--px-color-info);
@@ -443,7 +443,7 @@
443
443
  --px-button-disabled-border-color: var(--px-color-info-light-5);
444
444
  }
445
445
  /* Ghost variant for type buttons */
446
- .px-button--info.is-ghost[data-v-7044e22a] {
446
+ .px-button--info.is-ghost[data-v-6be339e2] {
447
447
  --px-button-text-color: var(--px-color-info);
448
448
  --px-button-shadow-color: transparent;
449
449
  --px-button-hover-text-color: var(--px-color-info-dark);
@@ -454,7 +454,7 @@
454
454
  --px-button-disabled-bg-color: transparent;
455
455
  }
456
456
  /* Plain variant for type buttons */
457
- .px-button--info.is-plain[data-v-7044e22a] {
457
+ .px-button--info.is-plain[data-v-6be339e2] {
458
458
  --px-button-text-color: var(--px-color-info);
459
459
  --px-button-bg-color: var(--px-color-info-light-9);
460
460
  --px-button-border-color: var(--px-color-info);
@@ -468,10 +468,10 @@
468
468
  --px-button-disabled-bg-color: var(--px-color-info-light-9);
469
469
  --px-button-disabled-border-color: var(--px-color-info-light-7);
470
470
  }
471
- .px-button--info.is-plain[data-v-7044e22a]:hover:not(.is-disabled):not(.is-loading) {
471
+ .px-button--info.is-plain[data-v-6be339e2]:hover:not(.is-disabled):not(.is-loading) {
472
472
  --px-button-shadow-color: var(--px-color-info-dark);
473
473
  }
474
- .px-button--danger[data-v-7044e22a] {
474
+ .px-button--danger[data-v-6be339e2] {
475
475
  --px-button-text-color: var(--px-color-white);
476
476
  --px-button-bg-color: var(--px-color-danger);
477
477
  --px-button-border-color: var(--px-color-danger-dark);
@@ -487,7 +487,7 @@
487
487
  --px-button-disabled-border-color: var(--px-color-danger-light-5);
488
488
  }
489
489
  /* Dash variant for type buttons */
490
- .px-button--danger.is-dash[data-v-7044e22a] {
490
+ .px-button--danger.is-dash[data-v-6be339e2] {
491
491
  --px-button-text-color: var(--px-color-danger);
492
492
  --px-button-bg-color: var(--px-color-danger-light-9);
493
493
  --px-button-border-color: var(--px-color-danger);
@@ -503,7 +503,7 @@
503
503
  --px-button-disabled-border-color: var(--px-color-danger-light-5);
504
504
  }
505
505
  /* Ghost variant for type buttons */
506
- .px-button--danger.is-ghost[data-v-7044e22a] {
506
+ .px-button--danger.is-ghost[data-v-6be339e2] {
507
507
  --px-button-text-color: var(--px-color-danger);
508
508
  --px-button-shadow-color: transparent;
509
509
  --px-button-hover-text-color: var(--px-color-danger-dark);
@@ -514,7 +514,7 @@
514
514
  --px-button-disabled-bg-color: transparent;
515
515
  }
516
516
  /* Plain variant for type buttons */
517
- .px-button--danger.is-plain[data-v-7044e22a] {
517
+ .px-button--danger.is-plain[data-v-6be339e2] {
518
518
  --px-button-text-color: var(--px-color-danger);
519
519
  --px-button-bg-color: var(--px-color-danger-light-9);
520
520
  --px-button-border-color: var(--px-color-danger);
@@ -528,69 +528,69 @@
528
528
  --px-button-disabled-bg-color: var(--px-color-danger-light-9);
529
529
  --px-button-disabled-border-color: var(--px-color-danger-light-7);
530
530
  }
531
- .px-button--danger.is-plain[data-v-7044e22a]:hover:not(.is-disabled):not(.is-loading) {
531
+ .px-button--danger.is-plain[data-v-6be339e2]:hover:not(.is-disabled):not(.is-loading) {
532
532
  --px-button-shadow-color: var(--px-color-danger-dark);
533
533
  }
534
534
  /* Size variants */
535
- .px-button--large[data-v-7044e22a] {
535
+ .px-button--large[data-v-6be339e2] {
536
536
  --px-button-size: 44px;
537
537
  height: var(--px-button-size);
538
538
  padding: 12px 24px;
539
539
  font-size: var(--px-font-size-large);
540
540
  }
541
- .px-button--large.is-circle[data-v-7044e22a] {
541
+ .px-button--large.is-circle[data-v-6be339e2] {
542
542
  padding: 12px;
543
543
  width: 44px;
544
544
  }
545
- .px-button--small[data-v-7044e22a] {
545
+ .px-button--small[data-v-6be339e2] {
546
546
  --px-button-size: 28px;
547
547
  height: var(--px-button-size);
548
548
  padding: 4px 12px;
549
549
  font-size: var(--px-font-size-small);
550
550
  filter: drop-shadow(2px 2px 0px var(--px-button-shadow-color));
551
551
  }
552
- .px-button--small[data-v-7044e22a]:hover:not(.is-disabled):not(.is-loading) {
552
+ .px-button--small[data-v-6be339e2]:hover:not(.is-disabled):not(.is-loading) {
553
553
  transform: translate(-1px, -1px);
554
554
  filter: drop-shadow(3px 3px 0px var(--px-button-shadow-color));
555
555
  }
556
- .px-button--small[data-v-7044e22a]:active:not(.is-disabled):not(.is-loading) {
556
+ .px-button--small[data-v-6be339e2]:active:not(.is-disabled):not(.is-loading) {
557
557
  transform: translate(1px, 1px);
558
558
  filter: drop-shadow(1px 1px 0px var(--px-button-shadow-color));
559
559
  }
560
- .px-button--small.is-circle[data-v-7044e22a] {
560
+ .px-button--small.is-circle[data-v-6be339e2] {
561
561
  padding: 4px;
562
562
  width: 28px;
563
563
  }
564
- .px-button--small [class*='px-icon'][data-v-7044e22a] {
564
+ .px-button--small [class*='px-icon'][data-v-6be339e2] {
565
565
  width: 12px;
566
566
  height: 12px;
567
567
  }
568
568
  /* Button Group */
569
- .px-button-group[data-v-7044e22a] {
569
+ .px-button-group[data-v-6be339e2] {
570
570
  display: inline-flex;
571
571
  vertical-align: middle;
572
572
  /* Unified shadow for the whole group — traces all buttons' pixel shapes */
573
573
  filter: drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-shadow-color));
574
574
  }
575
575
  /* Buttons keep their pseudo-element borders, group provides unified shadow */
576
- .px-button-group[data-v-7044e22a] > .px-button {
576
+ .px-button-group[data-v-6be339e2] > .px-button {
577
577
  filter: none;
578
578
  margin-left: 0;
579
579
  }
580
- .px-button-group[data-v-7044e22a] > .px-button:not(:first-child) {
580
+ .px-button-group[data-v-6be339e2] > .px-button:not(:first-child) {
581
581
  margin-left: -2px;
582
582
  }
583
- .px-button-group[data-v-7044e22a] > .px-button:hover:not(.is-disabled):not(.is-loading) {
583
+ .px-button-group[data-v-6be339e2] > .px-button:hover:not(.is-disabled):not(.is-loading) {
584
584
  transform: none;
585
585
  filter: none;
586
586
  z-index: 1;
587
587
  }
588
- .px-button-group[data-v-7044e22a] > .px-button:active:not(.is-disabled):not(.is-loading) {
588
+ .px-button-group[data-v-6be339e2] > .px-button:active:not(.is-disabled):not(.is-loading) {
589
589
  transform: none;
590
590
  filter: none;
591
591
  }
592
592
  /* First button (multi): notched left, straight right */
593
- .px-button-group[data-v-7044e22a] > .px-button:first-child:not(:last-child)::before, .px-button-group[data-v-7044e22a] > .px-button:first-child:not(:last-child)::after {
593
+ .px-button-group[data-v-6be339e2] > .px-button:first-child:not(:last-child)::before, .px-button-group[data-v-6be339e2] > .px-button:first-child:not(:last-child)::after {
594
594
  clip-path: polygon(
595
595
  0 4px, 2px 4px, 2px 2px, 4px 2px, 4px 0,
596
596
  100% 0,
@@ -599,7 +599,7 @@
599
599
  );
600
600
  }
601
601
  /* Last button (multi): straight left, notched right */
602
- .px-button-group[data-v-7044e22a] > .px-button:last-child:not(:first-child)::before, .px-button-group[data-v-7044e22a] > .px-button:last-child:not(:first-child)::after {
602
+ .px-button-group[data-v-6be339e2] > .px-button:last-child:not(:first-child)::before, .px-button-group[data-v-6be339e2] > .px-button:last-child:not(:first-child)::after {
603
603
  clip-path: polygon(
604
604
  0 0,
605
605
  calc(100% - 4px) 0, calc(100% - 4px) 2px, calc(100% - 2px) 2px, calc(100% - 2px) 4px, 100% 4px,
@@ -608,7 +608,7 @@
608
608
  );
609
609
  }
610
610
  /* Middle buttons: straight rectangle, no notches */
611
- .px-button-group[data-v-7044e22a] > .px-button:not(:first-child):not(:last-child)::before, .px-button-group[data-v-7044e22a] > .px-button:not(:first-child):not(:last-child)::after {
611
+ .px-button-group[data-v-6be339e2] > .px-button:not(:first-child):not(:last-child)::before, .px-button-group[data-v-6be339e2] > .px-button:not(:first-child):not(:last-child)::after {
612
612
  clip-path: none;
613
613
  }
614
614
  /* Button Group Variables */
@@ -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>;
@@ -1,4 +1,5 @@
1
1
  export * from './Alert';
2
+ export * from './Badge';
2
3
  export * from './Button';
3
4
  export * from './Collapse';
4
5
  export * from './ConfigProvider';
@@ -21,5 +21,5 @@ export declare function useSystemTheme(): {
21
21
  /** Whether system prefers dark mode */
22
22
  prefersDark: Ref<boolean, boolean>;
23
23
  /** System color scheme preference */
24
- prefers: Ref<"light" | "dark", "light" | "dark">;
24
+ prefers: Ref<"dark" | "light", "dark" | "light">;
25
25
  };
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Darken a hex color by a percentage (0-100)
3
+ */
4
+ export declare function darken(hex: string, amount: number): string;
5
+ /**
6
+ * Lighten a hex color by a percentage (0-100)
7
+ */
8
+ export declare function lighten(hex: string, amount: number): string;
9
+ /**
10
+ * Determine if text should be white or dark based on background luminance
11
+ */
12
+ export declare function getTextColor(hex: string): string;
13
+ /** Mapping from CSS variable suffix → palette key */
14
+ export type ColorTemplate = Record<string, string>;
15
+ /**
16
+ * Build a standard color palette from a hex color.
17
+ * Components can extend this with additional derived colors.
18
+ */
19
+ export declare function createColorPalette(hex: string): Record<string, string>;
20
+ /**
21
+ * Resolve a color template into CSS custom properties.
22
+ *
23
+ * @param palette - Pre-computed color values (e.g. from createColorPalette)
24
+ * @param prefix - CSS variable prefix (e.g. 'px-alert', 'px-badge')
25
+ * @param template - Maps CSS variable suffix → palette key
26
+ * @returns Record to bind via :style
27
+ */
28
+ export declare function resolveColorVars(palette: Record<string, string>, prefix: string, template: ColorTemplate): Record<string, string>;
29
+ /**
30
+ * Shared variant templates for simple components (Alert, Badge).
31
+ * Each key maps a CSS variable suffix to a palette color key.
32
+ */
33
+ export declare const SIMPLE_COLOR_TEMPLATES: Record<string, ColorTemplate>;
@@ -10,6 +10,7 @@ export declare const RenderVnode: import('vue').DefineComponent<import('vue').Ex
10
10
  required: true;
11
11
  };
12
12
  }>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
13
+ export * from './color';
13
14
  export * from './error';
14
15
  export * from './icon-map';
15
16
  export * from './icon-registry';