@globalbrain/sefirot 2.10.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
1
1
  <script setup lang="ts">
2
2
  import { computed } from 'vue'
3
3
  import SIcon from './SIcon.vue'
4
+ import SLink from './SLink.vue'
4
5
  import SSpinner from './SSpinner.vue'
5
6
 
6
7
  export type Size = 'mini' | 'small' | 'medium' | 'large' | 'jumbo'
@@ -9,13 +10,13 @@ export type Type = 'fill' | 'outline' | 'text'
9
10
 
10
11
  export type Mode =
11
12
  | 'neutral'
13
+ | 'mute'
12
14
  | 'white'
13
15
  | 'black'
14
16
  | 'info'
15
17
  | 'success'
16
18
  | 'warning'
17
19
  | 'danger'
18
- | 'mute'
19
20
 
20
21
  const props = defineProps<{
21
22
  tag?: string
@@ -25,9 +26,9 @@ const props = defineProps<{
25
26
  icon?: any
26
27
  label?: string
27
28
  href?: string
28
- loading?: boolean
29
29
  rounded?: boolean
30
30
  block?: boolean
31
+ loading?: boolean
31
32
  disabled?: boolean
32
33
  }>()
33
34
 
@@ -47,6 +48,12 @@ const classes = computed(() => [
47
48
  { disabled: props.disabled }
48
49
  ])
49
50
 
51
+ const computedTag = computed(() => {
52
+ return props.tag
53
+ ? props.tag
54
+ : props.href ? SLink : 'button'
55
+ })
56
+
50
57
  function handleClick(): void {
51
58
  !props.disabled && !props.loading && emit('click')
52
59
  }
@@ -54,7 +61,7 @@ function handleClick(): void {
54
61
 
55
62
  <template>
56
63
  <component
57
- :is="tag ?? 'button'"
64
+ :is="computedTag"
58
65
  class="SButton"
59
66
  :class="classes"
60
67
  :href="href"
@@ -81,419 +88,504 @@ function handleClick(): void {
81
88
  text-align: center;
82
89
  border: 1px solid transparent;
83
90
  border-radius: 6px;
84
- font-size: 14px;
85
- font-weight: 500;
86
91
  overflow: hidden;
87
92
  white-space: nowrap;
88
93
  transition: color 0.25s, border-color 0.25s, background-color 0.25s;
89
94
  }
90
95
 
96
+ .SButton.mini {
97
+ min-width: 28px;
98
+ min-height: 28px;
99
+ font-size: var(--button-font-size, var(--button-mini-font-size));
100
+
101
+ &.rounded { border-radius: 16px; }
102
+ &.has-label { padding: var(--button-padding, 0 12px); }
103
+ &.has-label.has-icon { padding: var(--button-padding, 0 10px 0 8px); }
104
+ .content { gap: 4px; }
105
+ .icon-svg { width: 16px; height: 16px; }
106
+ }
107
+
108
+ .SButton.small {
109
+ min-width: 32px;
110
+ min-height: 32px;
111
+ font-size: var(--button-font-size, var(--button-small-font-size));
112
+
113
+ &.rounded { border-radius: 16px; }
114
+ &.has-label { padding: var(--button-padding, 0 12px); }
115
+ &.has-label.has-icon { padding: var(--button-padding, 0 10px 0 8px); }
116
+ .content { gap: 6px; }
117
+ .icon-svg { width: 16px; height: 16px; }
118
+ }
119
+
120
+ .SButton.medium {
121
+ min-width: 40px;
122
+ min-height: 40px;
123
+ font-size: var(--button-font-size, var(--button-medium-font-size));
124
+
125
+ &.rounded { border-radius: 20px; }
126
+ &.has-label { padding: var(--button-padding, 0 16px); }
127
+ &.has-label.has-icon { padding: var(--button-padding, 0 12px 0 10px); }
128
+ .content { gap: 6px; }
129
+ .icon-svg { width: 18px; height: 18px; }
130
+ }
131
+
132
+ .SButton.large {
133
+ min-width: 48px;
134
+ min-height: 48px;
135
+ font-size: var(--button-font-size, var(--button-large-font-size));
136
+
137
+ &.rounded { border-radius: 24px; }
138
+ &.has-label { padding: var(--button-padding, 0 20px); }
139
+ &.has-label.has-icon { padding: var(--button-padding, 0 14px 0 12px); }
140
+ .content { gap: 6px; }
141
+ .icon-svg { width: 18px; height: 18px; }
142
+ }
143
+
144
+ .SButton.jumbo {
145
+ min-width: 64px;
146
+ min-height: 64px;
147
+ font-size: var(--button-font-size, var(--button-jumbo-font-size));
148
+
149
+ &.rounded { border-radius: 32px; }
150
+ &.has-label { padding: var(--button-padding, 0 24px); }
151
+ &.has-label.has-icon { padding: var(--button-padding, 0 20px 0 18px); }
152
+ .content { gap: 8px; }
153
+ .icon-svg { width: 20px; height: 20px; }
154
+ }
155
+
91
156
  .SButton.fill {
157
+ font-weight: 600;
158
+
92
159
  &.neutral {
93
- color: var(--button-fill-text);
94
- background-color: var(--button-fill-bg);
160
+ border-color: var(--button-fill-neutral-border-color);
161
+ color: var(--button-fill-neutral-text-color);
162
+ background-color: var(--button-fill-neutral-bg-color);
95
163
 
96
- &:hover { background-color: var(--button-fill-bg-hover); }
97
- &:active { background-color: var(--button-fill-bg-focus); }
164
+ &:hover { background-color: var(--button-fill-neutral-hover-bg-color); }
165
+ &:active { background-color: var(--button-fill-neutral-active-bg-color); }
98
166
 
99
- & .loader-icon { color: var(--c-text-inverse-1); }
167
+ & .loader-icon { color: var(--button-fill-neutral-loader-color); }
168
+ }
169
+
170
+ &.mute {
171
+ border-color: var(--button-fill-mute-border-color);
172
+ color: var(--button-fill-mute-text-color);
173
+ background-color: var(--button-fill-mute-bg-color);
174
+
175
+ &:hover { background-color: var(--button-fill-mute-hover-bg-color); }
176
+ &:active { background-color: var(--button-fill-mute-active-bg-color); }
177
+
178
+ & .loader-icon { color: var(--button-fill-mute-loader-color); }
100
179
  }
101
180
 
102
181
  &.white {
103
- color: var(--c-text-light-1);
104
- background-color: var(--c-white);
182
+ border-color: var(--button-fill-white-border-color);
183
+ color: var(--button-fill-white-text-color);
184
+ background-color: var(--button-fill-white-bg-color);
105
185
 
106
- &:hover { background-color: var(--c-gray-light-3); }
107
- &:active { background-color: var(--c-gray-light-1); }
186
+ &:hover { background-color: var(--button-fill-white-hover-bg-color); }
187
+ &:active { background-color: var(--button-fill-white-active-bg-color); }
108
188
 
109
- & .loader-icon { color: var(--c-white); }
189
+ & .loader-icon { color: var(--button-fill-white-loader-color); }
110
190
  }
111
191
 
112
192
  &.black {
113
- color: var(--c-text-dark-1);
114
- background-color: var(--c-black);
193
+ border-color: var(--button-fill-black-border-color);
194
+ color: var(--button-fill-black-text-color);
195
+ background-color: var(--button-fill-black-bg-color);
115
196
 
116
- &:hover { background-color: var(--c-gray-dark-4); }
117
- &:active { background-color: var(--c-gray-dark-3); }
197
+ &:hover { background-color: var(--button-fill-black-hover-bg-color); }
198
+ &:active { background-color: var(--button-fill-black-active-bg-color); }
118
199
 
119
- & .loader-icon { color: var(--c-white); }
200
+ & .loader-icon { color: var(--button-fill-black-loader-color); }
120
201
  }
121
202
 
122
203
  &.info {
123
- color: var(--c-text-dark-1);
124
- background-color: var(--c-info);
204
+ border-color: var(--button-fill-info-border-color);
205
+ color: var(--button-fill-info-text-color);
206
+ background-color: var(--button-fill-info-bg-color);
125
207
 
126
- &:hover { background-color: var(--c-info-dark); }
127
- &:active { background-color: var(--c-info-darker); }
208
+ &:hover { background-color: var(--button-fill-info-hover-bg-color); }
209
+ &:active { background-color: var(--button-fill-info-active-bg-color); }
128
210
 
129
- & .loader-icon { color: var(--c-white); }
211
+ & .loader-icon { color: var(--button-fill-info-loader-color); }
130
212
  }
131
213
 
132
214
  &.success {
133
- color: var(--c-text-dark-1);
134
- background-color: var(--c-success);
215
+ border-color: var(--button-fill-success-border-color);
216
+ color: var(--button-fill-success-text-color);
217
+ background-color: var(--button-fill-success-bg-color);
135
218
 
136
- &:hover { background-color: var(--c-success-dark); }
137
- &:active { background-color: var(--c-success-darker); }
219
+ &:hover { background-color: var(--button-fill-success-hover-bg-color); }
220
+ &:active { background-color: var(--button-fill-success-active-bg-color); }
138
221
 
139
- & .loader-icon { color: var(--c-white); }
222
+ & .loader-icon { color: var(--button-fill-success-loader-color); }
140
223
  }
141
224
 
142
225
  &.warning {
143
- color: var(--c-text-dark-1);
144
- background-color: var(--c-warning);
226
+ border-color: var(--button-fill-warning-border-color);
227
+ color: var(--button-fill-warning-text-color);
228
+ background-color: var(--button-fill-warning-bg-color);
145
229
 
146
- &:hover { background-color: var(--c-warning-dark); }
147
- &:active { background-color: var(--c-warning-darker); }
230
+ &:hover { background-color: var(--button-fill-warning-hover-bg-color); }
231
+ &:active { background-color: var(--button-fill-warning-active-bg-color); }
148
232
 
149
- & .loader-icon { color: var(--c-white); }
233
+ & .loader-icon { color: var(--button-fill-warning-loader-color); }
150
234
  }
151
235
 
152
236
  &.danger {
153
- color: var(--c-text-dark-1);
154
- background-color: var(--c-danger);
237
+ border-color: var(--button-fill-danger-border-color);
238
+ color: var(--button-fill-danger-text-color);
239
+ background-color: var(--button-fill-danger-bg-color);
155
240
 
156
- &:hover { background-color: var(--c-danger-dark); }
157
- &:active { background-color: var(--c-danger-darker); }
241
+ &:hover { background-color: var(--button-fill-danger-hover-bg-color); }
242
+ &:active { background-color: var(--button-fill-danger-active-bg-color); }
158
243
 
159
- & .loader-icon { color: var(--c-white); }
244
+ & .loader-icon { color: var(--button-fill-danger-loader-color); }
160
245
  }
246
+ }
161
247
 
162
- &.mute {
163
- border-color: var(--c-divider-light);
164
- color: var(--c-text-1);
165
- background-color: var(--c-bg-mute);
248
+ .SButton.fill.disabled {
249
+ &.neutral {
250
+ border-color: var(--button-fill-neutral-disabled-border-color);
251
+ color: var(--button-fill-neutral-disabled-text-color);
252
+ background-color: var(--button-fill-neutral-disabled-bg-color);
166
253
 
167
- &:hover { border-color: var(--c-divider); background-color: var(--c-gray-light-4); }
168
- &:active { background-color: var(--c-bg-soft); }
254
+ &:hover { background-color: var(--button-fill-neutral-disabled-bg-color); }
255
+ &:active { background-color: var(--button-fill-neutral-disabled-bg-color); }
256
+ }
169
257
 
170
- & .loader-icon { color: var(--c-black); }
258
+ &.white {
259
+ border-color: var(--button-fill-white-disabled-border-color);
260
+ color: var(--button-fill-white-disabled-text-color);
261
+ background-color: var(--button-fill-white-disabled-bg-color);
171
262
 
172
- .dark & {
173
- border-color: var(--c-divider-light);
174
- background-color: var(--c-gray-dark-4);
263
+ &:hover { background-color: var(--button-fill-white-disabled-bg-color); }
264
+ &:active { background-color: var(--button-fill-white-disabled-bg-color); }
265
+ }
175
266
 
176
- &:hover { border-color: var(--c-divider); background-color: var(--c-gray-dark-5); }
177
- &:active { background-color: var(--c-bg-soft); }
267
+ &.black {
268
+ border-color: var(--button-fill-black-disabled-border-color);
269
+ color: var(--button-fill-black-disabled-text-color);
270
+ background-color: var(--button-fill-black-disabled-bg-color);
178
271
 
179
- & .loader-icon { color: var(--c-white); }
180
- }
272
+ &:hover { background-color: var(--button-fill-black-disabled-bg-color); }
273
+ &:active { background-color: var(--button-fill-black-disabled-bg-color); }
181
274
  }
182
275
 
183
- &.disabled {
184
- opacity: 0.75;
185
- cursor: not-allowed;
276
+ &.mute {
277
+ border-color: var(--button-fill-mute-disabled-border-color);
278
+ color: var(--button-fill-mute-disabled-text-color);
279
+ background-color: var(--button-fill-mute-disabled-bg-color);
186
280
 
187
- &.neutral {
188
- &:hover { background-color: var(--button-fill-bg); }
189
- &:active { background-color: var(--button-fill-bg); }
190
- }
281
+ &:hover { background-color: var(--button-fill-mute-disabled-bg-color); }
282
+ &:active { background-color: var(--button-fill-mute-disabled-bg-color); }
283
+ }
191
284
 
192
- &.white {
193
- &:hover { background-color: var(--c-gray-dark-4); }
194
- &:active { background-color: var(--c-gray-dark-3); }
195
- }
285
+ &.info {
286
+ border-color: var(--button-fill-info-disabled-border-color);
287
+ color: var(--button-fill-info-disabled-text-color);
288
+ background-color: var(--button-fill-info-disabled-bg-color);
196
289
 
197
- &.black {
198
- color: var(--c-text-dark-1);
199
- background-color: var(--c-white);
290
+ &:hover { background-color: var(--button-fill-info-disabled-bg-color); }
291
+ &:active { background-color: var(--button-fill-info-disabled-bg-color); }
292
+ }
200
293
 
201
- &:hover { background-color: var(--c-gray-light-3); }
202
- &:active { background-color: var(--c-gray-light-1); }
203
- }
294
+ &.success {
295
+ border-color: var(--button-fill-success-disabled-border-color);
296
+ color: var(--button-fill-success-disabled-text-color);
297
+ background-color: var(--button-fill-success-disabled-bg-color);
204
298
 
205
- &.info {
206
- &:hover { background-color: var(--c-info); }
207
- &:active { background-color: var(--c-info); }
208
- }
299
+ &:hover { background-color: var(--button-fill-success-disabled-bg-color); }
300
+ &:active { background-color: var(--button-fill-success-disabled-bg-color); }
301
+ }
209
302
 
210
- &.success {
211
- &:hover { background-color: var(--c-success); }
212
- &:active { background-color: var(--c-success); }
213
- }
303
+ &.warning {
304
+ border-color: var(--button-fill-warning-disabled-border-color);
305
+ color: var(--button-fill-warning-disabled-text-color);
306
+ background-color: var(--button-fill-warning-disabled-bg-color);
214
307
 
215
- &.warning {
216
- &:hover { background-color: var(--c-warning); }
217
- &:active { background-color: var(--c-warning); }
218
- }
308
+ &:hover { background-color: var(--button-fill-warning-disabled-bg-color); }
309
+ &:active { background-color: var(--button-fill-warning-disabled-bg-color); }
310
+ }
219
311
 
220
- &.danger {
221
- &:hover { background-color: var(--c-danger); }
222
- &:active { background-color: var(--c-danger); }
223
- }
312
+ &.danger {
313
+ border-color: var(--button-fill-danger-disabled-border-color);
314
+ color: var(--button-fill-danger-disabled-text-color);
315
+ background-color: var(--button-fill-danger-disabled-bg-color);
316
+
317
+ &:hover { background-color: var(--button-fill-danger-disabled-bg-color); }
318
+ &:active { background-color: var(--button-fill-danger-disabled-bg-color); }
224
319
  }
225
320
  }
226
321
 
227
322
  .SButton.outline {
323
+ font-weight: 500;
324
+
228
325
  &.neutral {
229
- border-color: var(--button-outline-border);
230
- color: var(--button-outline-text);
326
+ border-color: var(--button-outline-neutral-border-color);
327
+ color: var(--button-outline-neutral-text-color);
328
+
329
+ &:hover { background-color: var(--button-outline-neutral-hover-bg-color); }
330
+ &:active { background-color: var(--button-outline-neutral-active-bg-color); }
231
331
 
232
- &:hover { background-color: var(--button-outline-bg-hover); }
233
- &:active { background-color: var(--button-outline-bg-focus); }
332
+ & .loader-icon { color: var(--button-outline-neutral-loader-color); }
234
333
  }
235
334
 
236
335
  &.white {
237
- border-color: var(--c-white);
238
- color: var(--c-text-dark-1);
336
+ border-color: var(--button-outline-white-border-color);
337
+ color: var(--button-outline-white-text-color);
239
338
 
240
- &:hover { background-color: var(--c-white-mute); }
241
- &:active { background-color: var(--c-gray-light-4); }
339
+ &:hover { background-color: var(--button-outline-white-hover-bg-color); }
340
+ &:active { background-color: var(--button-outline-white-active-bg-color); }
341
+
342
+ & .loader-icon { color: var(--button-outline-white-loader-color); }
242
343
  }
243
344
 
244
345
  &.black {
245
- border-color: var(--c-black);
246
- color: var(--c-text-light-1);
346
+ border-color: var(--button-outline-black-border-color);
347
+ color: var(--button-outline-black-text-color);
348
+
349
+ &:hover { background-color: var(--button-outline-black-hover-bg-color); }
350
+ &:active { background-color: var(--button-outline-black-active-bg-color); }
247
351
 
248
- &:hover { background-color: var(--c-black-mute); }
249
- &:active { background-color: var(--c-gray-dark-3); }
352
+ & .loader-icon { color: var(--button-outline-black-loader-color); }
353
+ }
354
+
355
+ &.mute {
356
+ border-color: var(--button-outline-mute-border-color);
357
+ color: var(--button-outline-mute-text-color);
358
+
359
+ &:hover { background-color: var(--button-outline-mute-hover-bg-color); }
360
+ &:active { background-color: var(--button-outline-mute-active-bg-color); }
361
+
362
+ & .loader-icon { color: var(--button-outline-mute-loader-color); }
250
363
  }
251
364
 
252
365
  &.info {
253
- border-color: var(--c-info);
254
- color: var(--c-info);
366
+ border-color: var(--button-outline-info-border-color);
367
+ color: var(--button-outline-info-text-color);
368
+
369
+ &:hover { background-color: var(--button-outline-info-hover-bg-color); }
370
+ &:active { background-color: var(--button-outline-info-active-bg-color); }
255
371
 
256
- &:hover { border-color: var(--c-info-dark); }
257
- &:active { border-color: var(--c-info-darker); }
372
+ & .loader-icon { color: var(--button-outline-info-loader-color); }
258
373
  }
259
374
 
260
375
  &.success {
261
- border-color: var(--c-success);
262
- color: var(--c-success);
376
+ border-color: var(--button-outline-success-border-color);
377
+ color: var(--button-outline-success-text-color);
263
378
 
264
- &:hover { border-color: var(--c-success-dark); }
265
- &:active { border-color: var(--c-success-darker); }
379
+ &:hover { background-color: var(--button-outline-success-hover-bg-color); }
380
+ &:active { background-color: var(--button-outline-success-active-bg-color); }
381
+
382
+ & .loader-icon { color: var(--button-outline-success-loader-color); }
266
383
  }
267
384
 
268
385
  &.warning {
269
- border-color: var(--c-warning);
270
- color: var(--c-warning);
386
+ border-color: var(--button-outline-warning-border-color);
387
+ color: var(--button-outline-warning-text-color);
388
+
389
+ &:hover { background-color: var(--button-outline-warning-hover-bg-color); }
390
+ &:active { background-color: var(--button-outline-warning-active-bg-color); }
271
391
 
272
- &:hover { border-color: var(--c-warning-dark); }
273
- &:active { border-color: var(--c-warning-darker); }
392
+ & .loader-icon { color: var(--button-outline-warning-loader-color); }
274
393
  }
275
394
 
276
395
  &.danger {
277
- border-color: var(--c-danger);
278
- color: var(--c-danger);
396
+ border-color: var(--button-outline-danger-border-color);
397
+ color: var(--button-outline-danger-text-color);
279
398
 
280
- &:hover { border-color: var(--c-danger-dark); }
281
- &:active { border-color: var(--c-danger-darker); }
282
- }
283
-
284
- &.disabled {
285
- opacity: .75;
286
- cursor: not-allowed;
399
+ &:hover { background-color: var(--button-outline-danger-hover-bg-color); }
400
+ &:active { background-color: var(--button-outline-danger-active-bg-color); }
287
401
 
288
- &:hover { background-color: var(--button-secondary-bg); }
289
- &:active { background-color: var(--button-secondary-bg); }
402
+ & .loader-icon { color: var(--button-outline-danger-loader-color); }
403
+ }
404
+ }
290
405
 
291
- &.info {
292
- &:hover { border-color: var(--c-info); }
293
- &:active { border-color: var(--c-info); }
294
- }
406
+ .SButton.outline.disabled {
407
+ &.neutral {
408
+ border-color: var(--button-outline-neutral-disabled-border-color);
409
+ color: var(--button-outline-neutral-disabled-text-color);
295
410
 
296
- &.success {
297
- &:hover { border-color: var(--c-success); }
298
- &:active { border-color: var(--c-success); }
299
- }
411
+ &:hover { background-color: transparent; }
412
+ &:active { background-color: transparent; }
413
+ }
300
414
 
301
- &.warning {
302
- &:hover { border-color: var(--c-warning); }
303
- &:active { border-color: var(--c-warning); }
304
- }
415
+ &.white {
416
+ border-color: var(--button-outline-white-disabled-border-color);
417
+ color: var(--button-outline-white-disabled-text-color);
305
418
 
306
- &.danger {
307
- &:hover { border-color: var(--c-danger); }
308
- &:active { border-color: var(--c-danger); }
309
- }
419
+ &:hover { background-color: transparent; }
420
+ &:active { background-color: transparent; }
310
421
  }
311
422
 
312
- &.inverse {
313
- border-color: var(--button-secondary-inverse-border);
314
- color: var(--button-secondary-inverse-text);
423
+ &.black {
424
+ border-color: var(--button-outline-black-disabled-border-color);
425
+ color: var(--button-outline-black-disabled-text-color);
315
426
 
316
- &:hover { background-color: var(--button-secondary-inverse-bg-hover); }
317
- &:active { background-color: var(--button-secondary-inverse-bg-focus); }
427
+ &:hover { background-color: transparent; }
428
+ &:active { background-color: transparent; }
318
429
  }
319
- }
320
430
 
321
- .SButton.text {
322
- &.neutral {
323
- color: var(--button-text-text);
431
+ &.mute {
432
+ border-color: var(--button-outline-mute-disabled-border-color);
433
+ color: var(--button-outline-mute-disabled-text-color);
324
434
 
325
- &:hover { background-color: var(--button-text-bg-hover); }
326
- &:active { background-color: var(--button-text-bg-focus); }
435
+ &:hover { background-color: transparent; }
436
+ &:active { background-color: transparent; }
327
437
  }
328
438
 
329
- &.info { color: var(--c-info); }
330
- &.success { color: var(--c-success); }
331
- &.warning { color: var(--c-warning); }
332
- &.danger { color: var(--c-danger); }
333
-
334
- &.disabled {
335
- opacity: .75;
336
- cursor: not-allowed;
439
+ &.info {
440
+ border-color: var(--button-outline-info-disabled-border-color);
441
+ color: var(--button-outline-info-disabled-text-color);
337
442
 
338
- &.neutral {
339
- &:hover { background-color: var(--button-text-bg); }
340
- &:active { background-color: var(--button-text-bg); }
341
- }
443
+ &:hover { background-color: transparent; }
444
+ &:active { background-color: transparent; }
342
445
  }
343
- }
344
446
 
345
- .SButton.mini {
346
- width: 28px;
347
- height: 28px;
348
- font-size: 12px;
447
+ &.success {
448
+ border-color: var(--button-outline-success-disabled-border-color);
449
+ color: var(--button-outline-success-disabled-text-color);
349
450
 
350
- .icon-svg {
351
- width: 16px;
352
- height: 16px;
451
+ &:hover { background-color: transparent; }
452
+ &:active { background-color: transparent; }
353
453
  }
354
454
 
355
- &.mini.rounded {
356
- border-radius: 14px;
357
- }
455
+ &.warning {
456
+ border-color: var(--button-outline-warning-disabled-border-color);
457
+ color: var(--button-outline-warning-disabled-text-color);
358
458
 
359
- &.mini.has-label {
360
- padding: 0 8px;
361
- width: auto;
459
+ &:hover { background-color: transparent; }
460
+ &:active { background-color: transparent; }
362
461
  }
363
462
 
364
- &.mini.has-label.block {
365
- width: 100%;
366
- }
463
+ &.danger {
464
+ border-color: var(--button-outline-danger-disabled-border-color);
465
+ color: var(--button-outline-danger-disabled-text-color);
367
466
 
368
- &.mini.has-icon {
369
- .label {
370
- padding-right: 1px;
371
- padding-left: 6px;
372
- }
467
+ &:hover { background-color: transparent; }
468
+ &:active { background-color: transparent; }
373
469
  }
374
470
  }
375
471
 
376
- .SButton.small {
377
- width: 32px;
378
- height: 32px;
379
- font-size: 12px;
472
+ .SButton.text {
473
+ font-weight: 500;
380
474
 
381
- .icon-svg {
382
- width: 18px;
383
- height: 18px;
384
- }
475
+ & .loader-icon { color: var(--c-neutral); }
385
476
 
386
- &.small.rounded {
387
- border-radius: 16px;
388
- }
477
+ &.neutral {
478
+ color: var(--button-text-neutral-text-color);
389
479
 
390
- &.small.has-label {
391
- padding: 0 10px;
392
- width: auto;
480
+ &:hover { background-color: var(--button-text-neutral-hover-bg-color); }
481
+ &:active { background-color: var(--button-text-neutral-active-bg-color); }
393
482
  }
394
483
 
395
- &.small.has-label.block {
396
- width: 100%;
484
+ &.white {
485
+ color: var(--button-text-white-text-color);
486
+
487
+ &:hover { background-color: var(--button-text-white-hover-bg-color); }
488
+ &:active { background-color: var(--button-text-white-active-bg-color); }
397
489
  }
398
490
 
399
- &.small.has-icon {
400
- .label {
401
- padding-right: 1px;
402
- padding-left: 8px;
403
- }
491
+ &.black {
492
+ color: var(--button-text-black-text-color);
493
+
494
+ &:hover { background-color: var(--button-text-black-hover-bg-color); }
495
+ &:active { background-color: var(--button-text-black-active-bg-color); }
404
496
  }
405
- }
406
497
 
407
- .SButton.medium {
408
- width: 40px;
409
- height: 40px;
410
- font-size: 14px;
498
+ &.mute {
499
+ color: var(--button-text-mute-text-color);
411
500
 
412
- .icon-svg {
413
- width: 20px;
414
- height: 20px;
501
+ &:hover { background-color: var(--button-text-mute-hover-bg-color); }
502
+ &:active { background-color: var(--button-text-mute-active-bg-color); }
415
503
  }
416
504
 
417
- &.medium.rounded {
418
- border-radius: 20px;
505
+ &.info {
506
+ color: var(--button-text-info-text-color);
507
+
508
+ &:hover { background-color: var(--button-text-info-hover-bg-color); }
509
+ &:active { background-color: var(--button-text-info-active-bg-color); }
419
510
  }
420
511
 
421
- &.medium.has-label {
422
- padding: 0 12px;
423
- width: auto;
512
+ &.success {
513
+ color: var(--button-text-success-text-color);
514
+
515
+ &:hover { background-color: var(--button-text-success-hover-bg-color); }
516
+ &:active { background-color: var(--button-text-success-active-bg-color); }
424
517
  }
425
518
 
426
- &.medium.has-label.block {
427
- width: 100%;
519
+ &.warning {
520
+ color: var(--button-text-warning-text-color);
521
+
522
+ &:hover { background-color: var(--button-text-warning-hover-bg-color); }
523
+ &:active { background-color: var(--button-text-warning-active-bg-color); }
428
524
  }
429
525
 
430
- &.medium.has-icon {
431
- .label {
432
- padding-right: 1px;
433
- padding-left: 8px;
434
- }
526
+ &.danger {
527
+ color: var(--button-text-danger-text-color);
528
+
529
+ &:hover { background-color: var(--button-text-danger-hover-bg-color); }
530
+ &:active { background-color: var(--button-text-danger-active-bg-color); }
435
531
  }
436
532
  }
437
533
 
438
- .SButton.large {
439
- width: 48px;
440
- height: 48px;
441
- font-size: 14px;
534
+ .SButton.text.disabled {
535
+ &.neutral {
536
+ color: var(--button-text-neutral-disabled-text-color);
442
537
 
443
- .icon-svg {
444
- width: 20px;
445
- height: 20px;
538
+ &:hover { background-color: transparent; }
539
+ &:active { background-color: transparent; }
446
540
  }
447
541
 
448
- &.large.rounded {
449
- border-radius: 24px;
450
- }
542
+ &.white {
543
+ color: var(--button-text-white-disabled-text-color);
451
544
 
452
- &.large.has-label {
453
- padding: 0 14px;
454
- width: auto;
545
+ &:hover { background-color: transparent; }
546
+ &:active { background-color: transparent; }
455
547
  }
456
548
 
457
- &.large.has-label.block {
458
- width: 100%;
459
- }
549
+ &.black {
550
+ color: var(--button-text-black-disabled-text-color);
460
551
 
461
- &.large.has-icon {
462
- .label {
463
- padding-right: 2px;
464
- padding-left: 10px;
465
- }
552
+ &:hover { background-color: transparent; }
553
+ &:active { background-color: transparent; }
466
554
  }
467
- }
468
555
 
469
- .SButton.jumbo {
470
- width: 64px;
471
- height: 64px;
472
- font-size: 14px;
556
+ &.mute {
557
+ color: var(--button-text-mute-disabled-text-color);
473
558
 
474
- .icon-svg {
475
- width: 18px;
476
- height: 18px;
559
+ &:hover { background-color: transparent; }
560
+ &:active { background-color: transparent; }
477
561
  }
478
562
 
479
- &.jumbo.rounded {
480
- border-radius: 32px;
563
+ &.info {
564
+ color: var(--button-text-info-disabled-text-color);
565
+
566
+ &:hover { background-color: transparent; }
567
+ &:active { background-color: transparent; }
481
568
  }
482
569
 
483
- &.jumbo.has-label {
484
- padding: 0 24px;
485
- width: auto;
570
+ &.success {
571
+ color: var(--button-text-success-disabled-text-color);
572
+
573
+ &:hover { background-color: transparent; }
574
+ &:active { background-color: transparent; }
486
575
  }
487
576
 
488
- &.jumbo.has-label.block {
489
- width: 100%;
577
+ &.warning {
578
+ color: var(--button-text-warning-disabled-text-color);
579
+
580
+ &:hover { background-color: transparent; }
581
+ &:active { background-color: transparent; }
490
582
  }
491
583
 
492
- &.jumbo.has-icon {
493
- .label {
494
- padding-right: 2px;
495
- padding-left: 10px;
496
- }
584
+ &.danger {
585
+ color: var(--button-text-danger-disabled-text-color);
586
+
587
+ &:hover { background-color: transparent; }
588
+ &:active { background-color: transparent; }
497
589
  }
498
590
  }
499
591
 
@@ -503,101 +595,16 @@ function handleClick(): void {
503
595
  }
504
596
 
505
597
  .SButton.loading {
506
- &.fill {
507
- &.neutral {
508
- color: var(--c-text-1);
509
-
510
- &:hover { background-color: var(--button-fill-bg); }
511
- &:active { background-color: var(--button-fill-bg); }
512
- }
513
-
514
- &.white {
515
- &:hover { background-color: var(--c-white); }
516
- &:active { background-color: var(--c-white); }
517
- }
518
-
519
- &.black {
520
- &:hover { background-color: var(--c-black); }
521
- &:active { background-color: var(--c-black); }
522
- }
523
-
524
- &.info {
525
- &:hover { background-color: var(--c-info); }
526
- &:active { background-color: var(--c-info); }
527
- }
528
-
529
- &.success {
530
- &:hover { background-color: var(--c-success); }
531
- &:active { background-color: var(--c-success); }
532
- }
533
-
534
- &.warning {
535
- &:hover { background-color: var(--c-warning); }
536
- &:active { background-color: var(--c-warning); }
537
- }
538
-
539
- &.danger {
540
- color: var(--c-text-1);
541
-
542
- &:hover { background-color: var(--c-danger); }
543
- &:active { background-color: var(--c-danger); }
544
- }
545
-
546
- &.mute {
547
- &:hover { border-color: var(--c-divider-light); background-color: var(--c-bg-mute); }
548
- &:active { background-color: var(--c-bg-mute); }
549
-
550
- .dark & {
551
- &:hover { border-color: var(--c-divider-light); background-color: var(--c-gray-dark-4); }
552
- &:active { background-color: var(--c-gray-dark-4); }
553
- }
554
- }
555
- }
556
-
557
- /* Deprecated */
558
- &.primary {
559
- &:hover { background-color: var(--button-primary-bg); }
560
- &:active { background-color: var(--button-primary-bg); }
561
-
562
- &.info {
563
- &:hover { background-color: var(--c-info-light); }
564
- &:active { background-color: var(--c-info-light); }
565
- }
566
-
567
- &.success {
568
- &:hover { background-color: var(--c-success); }
569
- &:active { background-color: var(--c-success); }
570
- }
571
-
572
- &.warning {
573
- &:hover { background-color: var(--c-warning); }
574
- &:active { background-color: var(--c-warning); }
575
- }
576
-
577
- &.danger {
578
- &:hover { background-color: var(--c-danger); }
579
- &:active { background-color: var(--c-danger); }
580
- }
581
-
582
- &.inverse {
583
- &:hover { background-color: var(--c-white); }
584
- &:active { background-color: var(--c-white); }
585
- }
586
- }
587
-
588
- &.secondary,
589
- &.text,
590
- &.mute {
591
- &:hover { background-color: transparent; }
592
- &:active { background-color: transparent; }
593
- }
594
-
595
598
  .content {
596
599
  opacity: 0;
597
600
  transform: scale(.9);
598
601
  }
599
602
  }
600
603
 
604
+ .SButton.disabled {
605
+ cursor: not-allowed;
606
+ }
607
+
601
608
  .content {
602
609
  display: flex;
603
610
  justify-content: center;
@@ -606,16 +613,11 @@ function handleClick(): void {
606
613
  transition: opacity 0.25s, transform 0.25s;
607
614
  }
608
615
 
609
- .icon-svg {
610
- fill: currentColor;
611
- transition-property: color, fill;
612
- transition-duration: 0.25s;
613
- }
614
-
615
616
  .loader {
616
617
  position: absolute;
617
618
  top: 50%;
618
619
  left: 50%;
620
+ z-index: 10;
619
621
  width: 32px;
620
622
  height: 32px;
621
623
  color: var(--c-text-1);
@@ -623,7 +625,7 @@ function handleClick(): void {
623
625
  transition: opacity 0.25s, transform 0.25s;
624
626
  }
625
627
 
626
- .loader.fade-enter,
628
+ .loader.fade-enter-from,
627
629
  .loader.fade-leave-to {
628
630
  opacity: 0;
629
631
  transform: translate(-50%, -50%) scale(1.5);
@@ -633,219 +635,4 @@ function handleClick(): void {
633
635
  width: 32px;
634
636
  height: 32px;
635
637
  }
636
-
637
- /* Deprecated */
638
- .SButton.primary {
639
- color: var(--button-primary-text);
640
- background-color: var(--button-primary-bg);
641
-
642
- &:hover { background-color: var(--button-primary-bg-hover); }
643
- &:active { background-color: var(--button-primary-bg-focus); }
644
-
645
- &.info {
646
- color: var(--c-text-dark-1);
647
- background-color: var(--c-info);
648
-
649
- &:hover { background-color: var(--c-info-dark); }
650
- &:active { background-color: var(--c-info-darker); }
651
- }
652
-
653
- &.success {
654
- color: var(--c-text-dark-1);
655
- background-color: var(--c-success);
656
-
657
- &:hover { background-color: var(--c-success-dark); }
658
- &:active { background-color: var(--c-success-darker); }
659
- }
660
-
661
- &.warning {
662
- color: var(--c-text-dark-1);
663
- background-color: var(--c-warning);
664
-
665
- &:hover { background-color: var(--c-warning-dark); }
666
- &:active { background-color: var(--c-warning-darker); }
667
- }
668
-
669
- &.danger {
670
- color: var(--c-text-dark-1);
671
- background-color: var(--c-danger);
672
-
673
- &:hover { background-color: var(--c-danger-dark); }
674
- &:active { background-color: var(--c-danger-darker); }
675
- }
676
-
677
- &.disabled {
678
- opacity: .75;
679
- cursor: not-allowed;
680
-
681
- &:hover { background-color: var(--button-primary-bg); }
682
- &:active { background-color: var(--button-primary-bg); }
683
-
684
- &.info {
685
- &:hover { background-color: var(--c-info); }
686
- &:active { background-color: var(--c-info); }
687
- }
688
-
689
- &.success {
690
- &:hover { background-color: var(--c-success); }
691
- &:active { background-color: var(--c-success); }
692
- }
693
-
694
- &.warning {
695
- &:hover { background-color: var(--c-warning); }
696
- &:active { background-color: var(--c-warning); }
697
- }
698
-
699
- &.danger {
700
- &:hover { background-color: var(--c-danger); }
701
- &:active { background-color: var(--c-danger); }
702
- }
703
- }
704
-
705
- & .loader-icon { color: var(--c-text-inverse-1); }
706
- }
707
-
708
- .SButton.secondary {
709
- border-color: var(--button-secondary-border);
710
- color: var(--button-secondary-text);
711
-
712
- &:hover { background-color: var(--button-secondary-bg-hover); }
713
- &:active { background-color: var(--button-secondary-bg-focus); }
714
-
715
- &.info {
716
- border-color: var(--c-info);
717
- color: var(--c-info);
718
-
719
- &:hover { border-color: var(--c-info-dark); }
720
- &:active { border-color: var(--c-info-darker); }
721
- }
722
-
723
- &.success {
724
- border-color: var(--c-success);
725
- color: var(--c-success);
726
-
727
- &:hover { border-color: var(--c-success-dark); }
728
- &:active { border-color: var(--c-success-darker); }
729
- }
730
-
731
- &.warning {
732
- border-color: var(--c-warning);
733
- color: var(--c-warning);
734
-
735
- &:hover { border-color: var(--c-warning-dark); }
736
- &:active { border-color: var(--c-warning-darker); }
737
- }
738
-
739
- &.danger {
740
- border-color: var(--c-danger);
741
- color: var(--c-danger);
742
-
743
- &:hover { border-color: var(--c-danger-dark); }
744
- &:active { border-color: var(--c-danger-darker); }
745
- }
746
-
747
- &.disabled {
748
- opacity: .75;
749
- cursor: not-allowed;
750
-
751
- &:hover { background-color: var(--button-secondary-bg); }
752
- &:active { background-color: var(--button-secondary-bg); }
753
-
754
- &.info {
755
- &:hover { border-color: var(--c-info); }
756
- &:active { border-color: var(--c-info); }
757
- }
758
-
759
- &.success {
760
- &:hover { border-color: var(--c-success); }
761
- &:active { border-color: var(--c-success); }
762
- }
763
-
764
- &.warning {
765
- &:hover { border-color: var(--c-warning); }
766
- &:active { border-color: var(--c-warning); }
767
- }
768
-
769
- &.danger {
770
- &:hover { border-color: var(--c-danger); }
771
- &:active { border-color: var(--c-danger); }
772
- }
773
- }
774
-
775
- &.inverse {
776
- border-color: var(--button-secondary-inverse-border);
777
- color: var(--button-secondary-inverse-text);
778
-
779
- &:hover { background-color: var(--button-secondary-inverse-bg-hover); }
780
- &:active { background-color: var(--button-secondary-inverse-bg-focus); }
781
- }
782
- }
783
-
784
- .SButton.tertiary {
785
- border-color: transparent;
786
- color: var(--button-tertiary-text);
787
- background-color: var(--button-tertiary-bg);
788
-
789
- &:hover { background-color: var(--button-tertiary-bg-hover); }
790
- &:active { background-color: var(--button-tertiary-bg-focus); }
791
-
792
- &.disabled {
793
- opacity: .75;
794
- cursor: not-allowed;
795
-
796
- &:hover { background-color: var(--button-tertiary-bg); }
797
- &:active { background-color: var(--button-tertiary-bg); }
798
- }
799
-
800
- &.inverse {
801
- border-color: transparent;
802
- color: var(--button-tertiary-inverse-text);
803
- background-color: var(--button-tertiary-inverse-bg);
804
-
805
- &:hover { background-color: var(--button-tertiary-inverse-bg-hover); }
806
- &:active { background-color: var(--button-tertiary-inverse-bg-focus); }
807
- }
808
- }
809
-
810
- .SButton.mute {
811
- color: var(--button-mute-text);
812
-
813
- &:hover {
814
- color: var(--button-mute-text-hover);
815
- background-color: var(--button-mute-bg-hover);
816
- }
817
-
818
- &:active {
819
- color: var(--button-mute-text-hover);
820
- background-color: var(--button-mute-bg-focus);
821
- }
822
-
823
- &.disabled {
824
- cursor: not-allowed;
825
-
826
- &:hover {
827
- color: var(--button-mute-text);
828
- background-color: transparent;
829
- }
830
-
831
- &:active {
832
- color: var(--button-mute-text);
833
- background-color: transparent;
834
- }
835
- }
836
-
837
- &.inverse {
838
- color: var(--button-mute-inverse-text);
839
-
840
- &:hover {
841
- color: var(--button-mute-inverse-text-hover);
842
- background-color: var(--button-mute-inverse-bg-hover);
843
- }
844
-
845
- &:active {
846
- color: var(--button-mute-inverse-text);
847
- background-color: var(--button-mute-inverse-bg-focus);
848
- }
849
- }
850
- }
851
638
  </style>