@dataengineeringformachinelearning/viking-ui 4.0.2 → 4.0.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.
@@ -375,7 +375,7 @@ var VIKING_BUTTON_STYLES = `
375
375
  gap: var(--viking-space-1);
376
376
  min-height: var(--viking-control-height);
377
377
  padding: 0 var(--viking-control-padding-x);
378
- border-radius: var(--viking-radius);
378
+ border-radius: var(--viking-radius-lg);
379
379
  border: 1px solid transparent;
380
380
  cursor: pointer;
381
381
  text-decoration: none;
@@ -384,9 +384,29 @@ var VIKING_BUTTON_STYLES = `
384
384
  min-width: var(--viking-btn-min-width, 120px);
385
385
  white-space: nowrap;
386
386
  position: relative;
387
+ background-clip: padding-box;
388
+ isolation: isolate;
387
389
  user-select: none;
388
390
  -webkit-tap-highlight-color: transparent;
389
391
  box-sizing: border-box;
392
+ overflow: hidden;
393
+ box-shadow: var(--viking-shadow-sm);
394
+ }
395
+
396
+ .viking-btn::before {
397
+ content: "";
398
+ position: absolute;
399
+ inset: 1px 1px auto;
400
+ height: 1px;
401
+ background: linear-gradient(
402
+ 90deg,
403
+ transparent,
404
+ color-mix(in srgb, var(--viking-metallic-100) 45%, transparent),
405
+ transparent
406
+ );
407
+ pointer-events: none;
408
+ opacity: 0.82;
409
+ transition: var(--viking-transition-interactive);
390
410
  }
391
411
 
392
412
  .viking-btn:focus-visible {
@@ -403,6 +423,36 @@ var VIKING_BUTTON_STYLES = `
403
423
  box-shadow: none !important;
404
424
  }
405
425
 
426
+ .viking-btn[aria-busy='true']::before,
427
+ .viking-btn[aria-busy='true'] .viking-btn-label {
428
+ opacity: 0.85;
429
+ transform: translateY(1px);
430
+ }
431
+
432
+ .viking-btn[aria-busy='true'] .viking-btn-spinner {
433
+ opacity: 0.85;
434
+ }
435
+
436
+ .viking-btn::after {
437
+ content: "";
438
+ position: absolute;
439
+ inset: auto 0 0 0;
440
+ height: 1px;
441
+ background: linear-gradient(
442
+ 90deg,
443
+ transparent,
444
+ color-mix(
445
+ in srgb,
446
+ var(--viking-metallic-100) 18%,
447
+ transparent
448
+ ),
449
+ transparent
450
+ );
451
+ pointer-events: none;
452
+ opacity: 0.45;
453
+ transition: var(--viking-transition-interactive);
454
+ }
455
+
406
456
  .viking-btn-sm {
407
457
  min-height: var(--viking-control-height-sm);
408
458
  padding: 0 var(--viking-space-2);
@@ -467,6 +517,20 @@ var VIKING_BUTTON_STYLES = `
467
517
  height: var(--viking-icon-size-md, 20px);
468
518
  }
469
519
 
520
+ ::slotted(viking-icon),
521
+ ::slotted(.viking-icon),
522
+ ::slotted([data-viking-icon]) {
523
+ display: inline-flex;
524
+ align-items: center;
525
+ justify-content: center;
526
+ width: var(--viking-icon-size-md);
527
+ height: var(--viking-icon-size-md);
528
+ line-height: 1;
529
+ flex-shrink: 0;
530
+ pointer-events: none;
531
+ flex: 0 0 auto;
532
+ }
533
+
470
534
  .viking-btn-outline {
471
535
  background: var(--viking-surface);
472
536
  color: var(--viking-text);
@@ -481,6 +545,14 @@ var VIKING_BUTTON_STYLES = `
481
545
  transform: translateY(var(--viking-state-hover-lift));
482
546
  }
483
547
 
548
+ .viking-btn-outline:active:not(:disabled):not([aria-busy='true']) {
549
+ transform: translateY(0) scale(var(--viking-state-active-scale));
550
+ box-shadow: inset 0 1px 2px
551
+ color-mix(in srgb, var(--viking-black) 28%, transparent),
552
+ var(--viking-shadow-sm);
553
+ border-color: var(--viking-border-strong);
554
+ }
555
+
484
556
  .viking-btn-primary {
485
557
  background: var(--viking-accent);
486
558
  color: var(--viking-accent-content);
@@ -495,6 +567,14 @@ var VIKING_BUTTON_STYLES = `
495
567
  transform: translateY(var(--viking-state-hover-lift));
496
568
  }
497
569
 
570
+ .viking-btn-primary:active:not(:disabled):not([aria-busy='true']) {
571
+ transform: translateY(0) scale(var(--viking-state-active-scale));
572
+ box-shadow: inset 0 1px 2px
573
+ color-mix(in srgb, var(--viking-black) 28%, transparent),
574
+ var(--viking-shadow-sm);
575
+ border-color: color-mix(in srgb, var(--viking-accent) 82%, var(--viking-black));
576
+ }
577
+
498
578
  .viking-btn-secondary {
499
579
  background: var(--viking-accent-secondary);
500
580
  color: var(--viking-accent-secondary-content);
@@ -509,6 +589,14 @@ var VIKING_BUTTON_STYLES = `
509
589
  transform: translateY(var(--viking-state-hover-lift));
510
590
  }
511
591
 
592
+ .viking-btn-secondary:active:not(:disabled):not([aria-busy='true']) {
593
+ transform: translateY(0) scale(var(--viking-state-active-scale));
594
+ box-shadow: inset 0 1px 2px
595
+ color-mix(in srgb, var(--viking-black) 28%, transparent),
596
+ var(--viking-shadow-sm);
597
+ border-color: color-mix(in srgb, var(--viking-accent-secondary) 82%, var(--viking-black));
598
+ }
599
+
512
600
  .viking-btn-filled {
513
601
  background: var(--viking-surface-alt);
514
602
  color: var(--viking-text);
@@ -523,6 +611,13 @@ var VIKING_BUTTON_STYLES = `
523
611
  transform: translateY(var(--viking-state-hover-lift));
524
612
  }
525
613
 
614
+ .viking-btn-filled:active:not(:disabled):not([aria-busy='true']) {
615
+ transform: translateY(0) scale(var(--viking-state-active-scale));
616
+ box-shadow: var(--viking-shadow-sm);
617
+ border-color: color-mix(in srgb, var(--viking-accent) 20%, var(--viking-border));
618
+ background: color-mix(in srgb, var(--viking-surface-alt) 84%, var(--viking-accent));
619
+ }
620
+
526
621
  .viking-btn-danger {
527
622
  background: var(--viking-danger);
528
623
  color: var(--viking-on-danger);
@@ -532,10 +627,20 @@ var VIKING_BUTTON_STYLES = `
532
627
 
533
628
  .viking-btn-danger:hover:not(:disabled):not([aria-busy='true']) {
534
629
  background: color-mix(in srgb, var(--viking-danger) 88%, var(--viking-white));
630
+ border-color: color-mix(in srgb, var(--viking-danger) 92%, var(--viking-white));
535
631
  box-shadow: var(--viking-shadow-hover);
536
632
  transform: translateY(var(--viking-state-hover-lift));
537
633
  }
538
634
 
635
+ .viking-btn-danger:active:not(:disabled):not([aria-busy='true']) {
636
+ transform: translateY(0) scale(var(--viking-state-active-scale));
637
+ border-color: color-mix(in srgb, var(--viking-danger) 72%, var(--viking-black));
638
+ background: color-mix(in srgb, var(--viking-danger) 84%, var(--viking-black));
639
+ box-shadow: inset 0 1px 2px
640
+ color-mix(in srgb, var(--viking-black) 28%, transparent),
641
+ var(--viking-shadow-sm);
642
+ }
643
+
539
644
  .viking-btn-ghost {
540
645
  background: transparent;
541
646
  color: var(--viking-text);
@@ -549,6 +654,12 @@ var VIKING_BUTTON_STYLES = `
549
654
  color: var(--viking-accent-strong);
550
655
  }
551
656
 
657
+ .viking-btn-ghost:active:not(:disabled):not([aria-busy='true']) {
658
+ transform: translateY(0) scale(var(--viking-state-active-scale));
659
+ background: var(--viking-accent-soft);
660
+ color: var(--viking-accent-strong);
661
+ }
662
+
552
663
  .viking-btn-subtle {
553
664
  background: transparent;
554
665
  color: var(--viking-text-muted);
@@ -563,6 +674,13 @@ var VIKING_BUTTON_STYLES = `
563
674
  border-color: var(--viking-border-strong);
564
675
  }
565
676
 
677
+ .viking-btn-subtle:active:not(:disabled):not([aria-busy='true']) {
678
+ transform: translateY(0) scale(var(--viking-state-active-scale));
679
+ border-color: var(--viking-border);
680
+ background: color-mix(in srgb, var(--viking-accent-soft) 70%, var(--viking-surface));
681
+ box-shadow: inset 0 1px 2px color-mix(in srgb, var(--viking-black) 24%, transparent);
682
+ }
683
+
566
684
  .viking-btn:active:not(:disabled):not([aria-busy='true']) {
567
685
  transform: translateY(0) scale(var(--viking-state-active-scale));
568
686
  }
@@ -570,7 +688,12 @@ var VIKING_BUTTON_STYLES = `
570
688
  .viking-btn-label {
571
689
  display: inline-flex;
572
690
  align-items: center;
573
- line-height: inherit;
691
+ gap: var(--viking-space-1);
692
+ line-height: 1.2;
693
+ min-width: 0;
694
+ justify-content: center;
695
+ text-align: center;
696
+ white-space: nowrap;
574
697
  }
575
698
 
576
699
  .viking-btn-spinner {
@@ -1737,7 +1860,7 @@ var VikingCardWc = class extends HTMLElementBase {
1737
1860
  static tag = "viking-card";
1738
1861
  static legacyTag = "viking-card-wc";
1739
1862
  static get observedAttributes() {
1740
- return ["compact", "interactive", "title"];
1863
+ return ["compact", "interactive", "title", "loading"];
1741
1864
  }
1742
1865
  connectedCallback() {
1743
1866
  this.syncClasses();
@@ -1754,6 +1877,10 @@ var VikingCardWc = class extends HTMLElementBase {
1754
1877
  "viking-card-interactive",
1755
1878
  this.hasAttribute("interactive")
1756
1879
  );
1880
+ this.classList.toggle(
1881
+ "viking-card-loading",
1882
+ this.hasAttribute("loading")
1883
+ );
1757
1884
  const title = this.getAttribute("title");
1758
1885
  if (title) {
1759
1886
  this.setAttribute("role", "region");
@@ -3402,6 +3529,17 @@ var VIKING_SUITE_HEADER_STYLES = `
3402
3529
  text-transform: uppercase;
3403
3530
  }
3404
3531
 
3532
+ .suite-header__auth-icon,
3533
+ .suite-header__menu-icon,
3534
+ .suite-header__action-icon,
3535
+ .suite-header__avatar-icon,
3536
+ .suite-header__chevron {
3537
+ display: inline-flex;
3538
+ align-items: center;
3539
+ justify-content: center;
3540
+ flex-shrink: 0;
3541
+ }
3542
+
3405
3543
  .suite-header__auth-link:hover {
3406
3544
  background: var(--viking-accent-hover);
3407
3545
  color: var(--viking-accent-content);
@@ -3554,6 +3692,10 @@ viking-suite-command-palette {
3554
3692
  .suite-header__menu-button {
3555
3693
  display: none;
3556
3694
  }
3695
+
3696
+ .suite-header[data-menu-open='true'] .suite-header__mobile {
3697
+ display: none;
3698
+ }
3557
3699
  }
3558
3700
  `;
3559
3701
  var detectContext2 = () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dataengineeringformachinelearning/viking-ui",
3
- "version": "4.0.2",
3
+ "version": "4.0.3",
4
4
  "description": "Universal Viking-UI design system for Astro, Angular, and Django.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -24,7 +24,13 @@
24
24
  "import": "./dist/fesm2022/dataengineeringformachinelearning-viking-ui.mjs",
25
25
  "default": "./dist/fesm2022/dataengineeringformachinelearning-viking-ui.mjs"
26
26
  },
27
+ "./angular": {
28
+ "types": "./dist/types/dataengineeringformachinelearning-viking-ui.d.ts",
29
+ "import": "./dist/fesm2022/dataengineeringformachinelearning-viking-ui.mjs",
30
+ "default": "./dist/fesm2022/dataengineeringformachinelearning-viking-ui.mjs"
31
+ },
27
32
  "./dist/index.js": "./dist/fesm2022/dataengineeringformachinelearning-viking-ui.mjs",
33
+ "./dist/index.d.ts": "./dist/types/dataengineeringformachinelearning-viking-ui.d.ts",
28
34
  "./dist/viking-ui.css": "./dist/viking-ui.css",
29
35
  "./dist/viking-ui-elements.js": "./dist/viking-ui-elements.js",
30
36
  "./dist/web-components.js": "./dist/web-components.js",
package/src/index.ts CHANGED
@@ -1 +1 @@
1
- export * from "./web/index";
1
+ export * from "./public-api";
@@ -2,6 +2,7 @@
2
2
 
3
3
  :host {
4
4
  display: inline-flex;
5
+ align-items: center;
5
6
  }
6
7
 
7
8
  :host(.viking-full) {
@@ -18,6 +19,20 @@
18
19
 
19
20
  .viking-btn {
20
21
  @include btn.viking-btn-base;
22
+ line-height: 1;
23
+ }
24
+
25
+ .viking-btn viking-icon,
26
+ .viking-btn .viking-icon,
27
+ .viking-btn [data-viking-icon] {
28
+ flex-shrink: 0;
29
+ display: inline-flex;
30
+ align-items: center;
31
+ justify-content: center;
32
+ width: var(--viking-icon-size-md);
33
+ height: var(--viking-icon-size-md);
34
+ line-height: 1;
35
+ pointer-events: none;
21
36
  }
22
37
 
23
38
  .viking-sm {
@@ -79,7 +94,15 @@
79
94
  .viking-btn-label {
80
95
  display: inline-flex;
81
96
  align-items: center;
97
+ gap: var(--viking-space-1);
82
98
  line-height: inherit;
99
+ min-width: 0;
100
+ justify-content: center;
101
+ white-space: nowrap;
102
+ }
103
+
104
+ .viking-btn kbd {
105
+ margin-top: 0;
83
106
  }
84
107
 
85
108
  .viking-btn-kbd {
@@ -42,13 +42,19 @@ import { VikingSkeleton } from "../skeleton/skeleton";
42
42
  background: var(--viking-surface-recipe, var(--viking-surface));
43
43
  border: 1px solid var(--viking-border);
44
44
  border-radius: var(--viking-radius-lg);
45
- box-shadow: var(--viking-shadow-sm);
45
+ box-shadow: var(--viking-shadow-sm), inset 0 1px 0 color-mix(
46
+ in srgb,
47
+ var(--viking-white-pure) 6%,
48
+ transparent
49
+ );
46
50
  padding: var(--viking-card-padding, var(--viking-space-3));
47
51
  color: var(--viking-text);
48
52
  transition: var(--viking-transition-interactive);
49
53
  position: relative;
54
+ isolation: isolate;
50
55
  overflow: hidden;
51
56
  min-width: 0;
57
+ background-clip: padding-box;
52
58
  }
53
59
  :host(.viking-card-headerless) .viking-card-header,
54
60
  :host(.viking-card-headerless) viking-card-header {
@@ -72,17 +78,41 @@ import { VikingSkeleton } from "../skeleton/skeleton";
72
78
  );
73
79
  pointer-events: none;
74
80
  }
81
+
82
+ :host::after {
83
+ content: "";
84
+ position: absolute;
85
+ inset: 0 auto auto 0;
86
+ right: 0;
87
+ width: 1px;
88
+ height: 28px;
89
+ background: linear-gradient(
90
+ 180deg,
91
+ color-mix(in srgb, var(--viking-metallic-100) 22%, transparent),
92
+ transparent
93
+ );
94
+ pointer-events: none;
95
+ }
96
+
75
97
  :host(.viking-card-interactive) {
76
98
  cursor: pointer;
77
99
  }
100
+
101
+ :host(.viking-card-interactive):focus-visible {
102
+ outline: var(--viking-ring-width) solid var(--viking-ring);
103
+ outline-offset: var(--viking-ring-offset);
104
+ }
78
105
  :host(.viking-card-interactive):hover {
79
106
  border-color: var(--viking-accent-strong);
80
- box-shadow: var(--viking-shadow-hover);
107
+ box-shadow: var(--viking-shadow-hover),
108
+ inset 0 1px 0 color-mix(in srgb, var(--viking-white-pure) 6%, transparent);
81
109
  transform: translateY(var(--viking-state-hover-lift));
82
110
  }
83
111
  :host(.viking-card-interactive):active {
84
112
  transform: translateY(0) scale(var(--viking-state-active-scale));
85
- box-shadow: var(--viking-shadow-md);
113
+ box-shadow: inset 0 1px 2px
114
+ color-mix(in srgb, var(--viking-black) 24%, transparent),
115
+ var(--viking-shadow-sm);
86
116
  }
87
117
  :host(.viking-card-interactive):focus-visible {
88
118
  outline: var(--viking-ring-width) solid var(--viking-ring);
@@ -132,7 +162,6 @@ export class VikingCard {
132
162
  gap: var(--viking-space-2);
133
163
  padding-bottom: var(--viking-space-2);
134
164
  margin-bottom: var(--viking-space-2);
135
- border-bottom: 1px solid var(--viking-border-subtle);
136
165
  }
137
166
  /* Support slotted left meta + right actions uniformly */
138
167
  :host ::ng-deep > * {
@@ -162,7 +191,6 @@ export class VikingCardHeader {}
162
191
  gap: var(--viking-space-2);
163
192
  padding-top: var(--viking-space-2);
164
193
  margin-top: var(--viking-space-2);
165
- border-top: 1px solid var(--viking-border-subtle);
166
194
  }
167
195
  `,
168
196
  ],
@@ -114,6 +114,8 @@ import {
114
114
  <viking-button
115
115
  variant="primary"
116
116
  icon="arrow-right"
117
+ class="auth-btn"
118
+ [loading]="isBusy()"
117
119
  (pressed)="login.emit()"
118
120
  >
119
121
  Sign In
@@ -122,11 +124,16 @@ import {
122
124
  <viking-button
123
125
  variant="primary"
124
126
  icon="home"
127
+ class="auth-btn"
125
128
  [href]="urls().app + '/dashboard'"
126
129
  >
127
130
  Dashboard
128
131
  </viking-button>
129
- <viking-button variant="ghost" (pressed)="logout.emit()"
132
+ <viking-button
133
+ variant="ghost"
134
+ class="auth-btn auth-signout-btn"
135
+ [loading]="isBusy()"
136
+ (pressed)="logout.emit()"
130
137
  >Sign Out</viking-button
131
138
  >
132
139
  }
@@ -187,7 +194,8 @@ import {
187
194
  <viking-button
188
195
  variant="primary"
189
196
  icon="arrow-right"
190
- class="mobile-auth-btn"
197
+ class="mobile-auth-btn auth-btn"
198
+ [loading]="isBusy()"
191
199
  [fullWidth]="true"
192
200
  (pressed)="login.emit(); closeMobileMenu()"
193
201
  >
@@ -197,7 +205,7 @@ import {
197
205
  <viking-button
198
206
  variant="primary"
199
207
  icon="home"
200
- class="mobile-auth-btn"
208
+ class="mobile-auth-btn auth-btn"
201
209
  [fullWidth]="true"
202
210
  [href]="urls().app + '/dashboard'"
203
211
  (pressed)="closeMobileMenu()"
@@ -206,7 +214,8 @@ import {
206
214
  </viking-button>
207
215
  <viking-button
208
216
  variant="ghost"
209
- class="mobile-auth-btn"
217
+ class="mobile-auth-btn auth-btn auth-signout-btn"
218
+ [loading]="isBusy()"
210
219
  [fullWidth]="true"
211
220
  (pressed)="logout.emit(); closeMobileMenu()"
212
221
  >
@@ -221,6 +230,7 @@ export class VikingSiteNavbar {
221
230
  readonly context = input<SiteDrakkarContext>("app");
222
231
  readonly urls = input<SiteUrls>(DEFAULT_SITE_URLS);
223
232
  readonly isAuthenticated = input<boolean>(false);
233
+ readonly isBusy = input<boolean>(false);
224
234
  readonly theme = input<"light" | "dark">("dark");
225
235
  readonly showSearch = input<boolean>(false);
226
236
 
@@ -15,7 +15,7 @@
15
15
  gap: var(--viking-space-1);
16
16
  min-height: var(--viking-control-height);
17
17
  padding: 0 var(--viking-control-padding-x);
18
- border-radius: var(--viking-radius);
18
+ border-radius: var(--viking-radius-lg);
19
19
  border: 1px solid transparent;
20
20
  cursor: pointer;
21
21
  text-decoration: none;
@@ -24,8 +24,12 @@
24
24
  min-width: var(--viking-btn-min-width, 120px);
25
25
  white-space: nowrap;
26
26
  position: relative;
27
+ background-clip: padding-box;
28
+ isolation: isolate;
27
29
  user-select: none;
28
30
  -webkit-tap-highlight-color: transparent;
31
+ overflow: hidden;
32
+ box-shadow: var(--viking-shadow-sm);
29
33
 
30
34
  &:focus-visible {
31
35
  outline: var(--viking-ring-width) solid var(--viking-ring);
@@ -33,6 +37,46 @@
33
37
  z-index: 1;
34
38
  }
35
39
 
40
+ &::before {
41
+ content: "";
42
+ position: absolute;
43
+ inset: 1px 1px auto 1px;
44
+ height: 1px;
45
+ background: linear-gradient(
46
+ 90deg,
47
+ transparent,
48
+ color-mix(
49
+ in srgb,
50
+ var(--viking-metallic-100) 45%,
51
+ transparent
52
+ ),
53
+ transparent
54
+ );
55
+ pointer-events: none;
56
+ opacity: 0.82;
57
+ transition: var(--viking-transition-interactive);
58
+ }
59
+
60
+ &::after {
61
+ content: "";
62
+ position: absolute;
63
+ inset: auto 0 0 0;
64
+ height: 1px;
65
+ background: linear-gradient(
66
+ 90deg,
67
+ transparent,
68
+ color-mix(
69
+ in srgb,
70
+ var(--viking-metallic-100) 18%,
71
+ transparent
72
+ ),
73
+ transparent
74
+ );
75
+ pointer-events: none;
76
+ opacity: 0.45;
77
+ transition: var(--viking-transition-interactive);
78
+ }
79
+
36
80
  &:disabled,
37
81
  &[aria-busy='true'] {
38
82
  opacity: var(--viking-state-disabled-opacity);
@@ -41,14 +85,35 @@
41
85
  box-shadow: none !important;
42
86
  }
43
87
 
88
+ &[aria-busy='true']::before,
44
89
  &[aria-busy='true'] .viking-btn-label {
45
90
  opacity: 0.85;
91
+ transform: translateY(1px);
46
92
  }
47
93
 
48
94
  viking-icon,
49
- .viking-icon {
95
+ .viking-icon,
96
+ [data-viking-icon] {
50
97
  flex-shrink: 0;
98
+ display: inline-flex;
99
+ align-items: center;
100
+ justify-content: center;
101
+ width: var(--viking-icon-size-md);
102
+ height: var(--viking-icon-size-md);
103
+ line-height: 1;
51
104
  pointer-events: none;
105
+ flex: 0 0 auto;
106
+ }
107
+
108
+ .viking-btn-label {
109
+ display: inline-flex;
110
+ align-items: center;
111
+ gap: var(--viking-space-1);
112
+ line-height: 1.2;
113
+ min-width: 0;
114
+ justify-content: center;
115
+ text-align: center;
116
+ white-space: nowrap;
52
117
  }
53
118
  }
54
119
 
@@ -68,7 +133,10 @@
68
133
 
69
134
  &:active:not(:disabled):not([aria-busy='true']) {
70
135
  transform: translateY(0) scale(var(--viking-state-active-scale));
71
- box-shadow: var(--viking-shadow-sm);
136
+ border-color: var(--viking-border-strong);
137
+ box-shadow: inset 0 1px 2px
138
+ color-mix(in srgb, var(--viking-black) 28%, transparent),
139
+ var(--viking-shadow-sm);
72
140
  }
73
141
  }
74
142
 
@@ -88,7 +156,10 @@
88
156
 
89
157
  &:active:not(:disabled):not([aria-busy='true']) {
90
158
  transform: translateY(0) scale(var(--viking-state-active-scale));
91
- box-shadow: var(--viking-shadow-sm);
159
+ border-color: color-mix(in srgb, var(--viking-accent) 82%, var(--viking-black));
160
+ box-shadow: inset 0 1px 2px
161
+ color-mix(in srgb, var(--viking-black) 28%, transparent),
162
+ var(--viking-shadow-sm);
92
163
  }
93
164
  }
94
165
 
@@ -108,7 +179,10 @@
108
179
 
109
180
  &:active:not(:disabled):not([aria-busy='true']) {
110
181
  transform: translateY(0) scale(var(--viking-state-active-scale));
111
- box-shadow: var(--viking-shadow-sm);
182
+ border-color: color-mix(in srgb, var(--viking-accent-secondary) 82%, var(--viking-black));
183
+ box-shadow: inset 0 1px 2px
184
+ color-mix(in srgb, var(--viking-black) 28%, transparent),
185
+ var(--viking-shadow-sm);
112
186
  }
113
187
  }
114
188
 
@@ -127,6 +201,9 @@
127
201
 
128
202
  &:active:not(:disabled):not([aria-busy='true']) {
129
203
  transform: translateY(0) scale(var(--viking-state-active-scale));
204
+ box-shadow: var(--viking-shadow-sm);
205
+ border-color: color-mix(in srgb, var(--viking-accent) 20%, var(--viking-border));
206
+ background: color-mix(in srgb, var(--viking-surface-alt) 84%, var(--viking-accent));
130
207
  }
131
208
  }
132
209
 
@@ -146,6 +223,8 @@
146
223
 
147
224
  &:active:not(:disabled):not([aria-busy='true']) {
148
225
  transform: translateY(0) scale(var(--viking-state-active-scale));
226
+ border-color: color-mix(in srgb, var(--viking-danger) 72%, var(--viking-black));
227
+ background: color-mix(in srgb, var(--viking-danger) 84%, var(--viking-black));
149
228
  box-shadow: var(--viking-shadow-sm);
150
229
  }
151
230
  }
@@ -163,7 +242,9 @@
163
242
  }
164
243
 
165
244
  &:active:not(:disabled):not([aria-busy='true']) {
166
- transform: scale(var(--viking-state-active-scale));
245
+ transform: translateY(0) scale(var(--viking-state-active-scale));
246
+ background: var(--viking-accent-soft);
247
+ color: var(--viking-accent-strong);
167
248
  }
168
249
  }
169
250
 
@@ -181,7 +262,11 @@
181
262
  }
182
263
 
183
264
  &:active:not(:disabled):not([aria-busy='true']) {
184
- transform: scale(var(--viking-state-active-scale));
265
+ transform: translateY(0) scale(var(--viking-state-active-scale));
266
+ border-color: var(--viking-border);
267
+ background: color-mix(in srgb, var(--viking-accent-soft) 70%, var(--viking-surface));
268
+ box-shadow: inset 0 1px 2px
269
+ color-mix(in srgb, var(--viking-black) 24%, transparent);
185
270
  }
186
271
  }
187
272