@vanduo-oss/framework 1.6.0 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/vanduo.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! Vanduo v1.6.0 | Built: 2026-06-27T15:48:08.659Z | git:9384f14 | development */
1
+ /*! Vanduo v1.7.1 | Built: 2026-07-05T17:48:13.002Z | git:6585256 | development */
2
2
  *, :before, :after {
3
3
  box-sizing: border-box;
4
4
  }
@@ -7061,6 +7061,22 @@ pre code {
7061
7061
  --vd-radius-fib-21: 2.625rem;
7062
7062
  }
7063
7063
 
7064
+ .vd-muted {
7065
+ color: var(--vd-text-muted);
7066
+ }
7067
+
7068
+ .vd-visually-hidden {
7069
+ clip: rect(0, 0, 0, 0);
7070
+ white-space: nowrap;
7071
+ border: 0;
7072
+ width: 1px;
7073
+ height: 1px;
7074
+ margin: -1px;
7075
+ padding: 0;
7076
+ overflow: hidden;
7077
+ position: absolute !important;
7078
+ }
7079
+
7064
7080
  @font-face {
7065
7081
  font-family: Phosphor;
7066
7082
  src: url("./icons/phosphor/regular/Phosphor.woff2") format("woff2"), url("./icons/phosphor/regular/Phosphor.woff") format("woff"), url("./icons/phosphor/regular/Phosphor.ttf") format("truetype"), url("./icons/phosphor/regular/Phosphor.svg#Phosphor") format("svg");
@@ -19951,6 +19967,14 @@ pre code {
19951
19967
  margin-bottom: 1rem;
19952
19968
  }
19953
19969
 
19970
+ .vd-table-caption {
19971
+ padding: var(--vd-table-padding-y) var(--vd-table-padding-x);
19972
+ color: var(--vd-text-muted);
19973
+ font-size: var(--vd-font-size-sm);
19974
+ text-align: left;
19975
+ caption-side: top;
19976
+ }
19977
+
19954
19978
  .vd-table th, .vd-table td, .table th, .table td {
19955
19979
  padding: var(--vd-table-padding-y) var(--vd-table-padding-x);
19956
19980
  vertical-align: middle;
@@ -21348,19 +21372,19 @@ pre code {
21348
21372
  transform: translateY(1px);
21349
21373
  }
21350
21374
 
21351
- .vd-btn-error {
21375
+ .vd-btn-error, .vd-btn-danger {
21352
21376
  background-color: var(--vd-color-error);
21353
21377
  border-color: var(--vd-color-error);
21354
21378
  color: var(--vd-color-white);
21355
21379
  }
21356
21380
 
21357
- .vd-btn-error:hover:not(:disabled):not(.disabled):not(.is-disabled) {
21381
+ .vd-btn-error:hover:not(:disabled):not(.disabled):not(.is-disabled), .vd-btn-danger:hover:not(:disabled):not(.disabled):not(.is-disabled) {
21358
21382
  background-color: var(--vd-color-error-dark);
21359
21383
  border-color: var(--vd-color-error-dark);
21360
21384
  color: var(--vd-color-white);
21361
21385
  }
21362
21386
 
21363
- .vd-btn-error:active:not(:disabled):not(.disabled):not(.is-disabled) {
21387
+ .vd-btn-error:active:not(:disabled):not(.disabled):not(.is-disabled), .vd-btn-danger:active:not(:disabled):not(.disabled):not(.is-disabled) {
21364
21388
  background-color: var(--vd-color-error-dark);
21365
21389
  border-color: var(--vd-color-error-dark);
21366
21390
  transform: translateY(1px);
@@ -21444,13 +21468,13 @@ pre code {
21444
21468
  color: var(--vd-color-black);
21445
21469
  }
21446
21470
 
21447
- .vd-btn-outline-error {
21471
+ .vd-btn-outline-error, .vd-btn-outline-danger {
21448
21472
  border-color: var(--vd-color-error);
21449
21473
  color: var(--vd-color-error);
21450
21474
  background-color: #0000;
21451
21475
  }
21452
21476
 
21453
- .vd-btn-outline-error:hover:not(:disabled):not(.disabled):not(.is-disabled) {
21477
+ .vd-btn-outline-error:hover:not(:disabled):not(.disabled):not(.is-disabled), .vd-btn-outline-danger:hover:not(:disabled):not(.disabled):not(.is-disabled) {
21454
21478
  background-color: var(--vd-color-error);
21455
21479
  border-color: var(--vd-color-error);
21456
21480
  color: var(--vd-color-white);
@@ -21548,18 +21572,18 @@ pre code {
21548
21572
  color: var(--vd-color-warning-active);
21549
21573
  }
21550
21574
 
21551
- .vd-btn-ghost-error {
21575
+ .vd-btn-ghost-error, .vd-btn-ghost-danger {
21552
21576
  color: var(--vd-color-error);
21553
21577
  background-color: #0000;
21554
21578
  border-color: #0000;
21555
21579
  }
21556
21580
 
21557
- .vd-btn-ghost-error:hover:not(:disabled):not(.disabled):not(.is-disabled) {
21581
+ .vd-btn-ghost-error:hover:not(:disabled):not(.disabled):not(.is-disabled), .vd-btn-ghost-danger:hover:not(:disabled):not(.disabled):not(.is-disabled) {
21558
21582
  background-color: var(--vd-color-error-alpha-10);
21559
21583
  color: var(--vd-color-error-dark);
21560
21584
  }
21561
21585
 
21562
- .vd-btn-ghost-error:active:not(:disabled):not(.disabled):not(.is-disabled) {
21586
+ .vd-btn-ghost-error:active:not(:disabled):not(.disabled):not(.is-disabled), .vd-btn-ghost-danger:active:not(:disabled):not(.disabled):not(.is-disabled) {
21563
21587
  background-color: var(--vd-color-error-alpha-20);
21564
21588
  color: var(--vd-color-error-active);
21565
21589
  }
@@ -21668,7 +21692,7 @@ a.vd-btn, a.vd-btn:hover {
21668
21692
  left: 50%;
21669
21693
  }
21670
21694
 
21671
- .vd-btn-primary.is-loading:after, .vd-btn-secondary.is-loading:after, .vd-btn-success.is-loading:after, .vd-btn-error.is-loading:after, .vd-btn-info.is-loading:after {
21695
+ .vd-btn-primary.is-loading:after, .vd-btn-secondary.is-loading:after, .vd-btn-success.is-loading:after, .vd-btn-error.is-loading:after, .vd-btn-danger.is-loading:after, .vd-btn-info.is-loading:after {
21672
21696
  border-color: var(--vd-color-white);
21673
21697
  border-right-color: #0000;
21674
21698
  }
@@ -21684,6 +21708,39 @@ a.vd-btn, a.vd-btn:hover {
21684
21708
  }
21685
21709
  }
21686
21710
 
21711
+ .vd-btn.is-loading:has(.vd-btn-spinner):after {
21712
+ content: none;
21713
+ }
21714
+
21715
+ .vd-btn-spinner {
21716
+ border: 2px solid var(--vd-color-primary);
21717
+ border-right-color: #0000;
21718
+ border-radius: 50%;
21719
+ width: 1em;
21720
+ height: 1em;
21721
+ margin: -.5em 0 0 -.5em;
21722
+ animation: .6s linear infinite btn-spinner;
21723
+ position: absolute;
21724
+ top: 50%;
21725
+ left: 50%;
21726
+ }
21727
+
21728
+ .vd-btn-primary .vd-btn-spinner, .vd-btn-secondary .vd-btn-spinner, .vd-btn-success .vd-btn-spinner, .vd-btn-danger .vd-btn-spinner, .vd-btn-error .vd-btn-spinner, .vd-btn-info .vd-btn-spinner {
21729
+ border-color: var(--vd-color-white);
21730
+ border-right-color: #0000;
21731
+ }
21732
+
21733
+ .vd-btn-warning .vd-btn-spinner {
21734
+ border-color: var(--vd-color-black);
21735
+ border-right-color: #0000;
21736
+ }
21737
+
21738
+ @media (prefers-reduced-motion: reduce) {
21739
+ .vd-btn-spinner {
21740
+ animation-duration: 1.2s;
21741
+ }
21742
+ }
21743
+
21687
21744
  :root {
21688
21745
  --vd-input-padding-x-sm: .5rem;
21689
21746
  --vd-input-padding-y-sm: .3125rem;
@@ -21801,11 +21858,11 @@ a.vd-btn, a.vd-btn:hover {
21801
21858
  border-radius: var(--vd-input-border-radius-lg);
21802
21859
  }
21803
21860
 
21804
- .vd-input-error, input.vd-input-error, .vd-input.is-error, input.is-error, .vd-input-invalid, input.vd-input-invalid {
21861
+ .vd-input-error, input.vd-input-error, .vd-input-danger, input.vd-input-danger, .vd-input.is-error, input.is-error, .vd-input-invalid, input.vd-input-invalid {
21805
21862
  border-color: var(--vd-color-error);
21806
21863
  }
21807
21864
 
21808
- .vd-input-error:focus, input.vd-input-error:focus, .vd-input.is-error:focus, input.is-error:focus, .vd-input-invalid:focus, input.vd-input-invalid:focus {
21865
+ .vd-input-error:focus, input.vd-input-error:focus, .vd-input-danger:focus, input.vd-input-danger:focus, .vd-input.is-error:focus, input.is-error:focus, .vd-input-invalid:focus, input.vd-input-invalid:focus {
21809
21866
  border-color: var(--vd-color-error);
21810
21867
  box-shadow: 0 0 0 3px var(--vd-color-error-alpha-10);
21811
21868
  }
@@ -21837,7 +21894,7 @@ a.vd-btn, a.vd-btn:hover {
21837
21894
  box-shadow: 0 0 0 3px var(--vd-color-success-alpha-10);
21838
21895
  }
21839
21896
 
21840
- .label, label {
21897
+ .label, .vd-form-label, label {
21841
21898
  font-size: var(--vd-font-size-sm);
21842
21899
  font-weight: var(--vd-font-weight-medium);
21843
21900
  color: var(--vd-text-primary);
@@ -21851,6 +21908,11 @@ a.vd-btn, a.vd-btn:hover {
21851
21908
  color: var(--vd-color-error);
21852
21909
  }
21853
21910
 
21911
+ .vd-form-radio-icon {
21912
+ vertical-align: -.125em;
21913
+ margin-right: .375rem;
21914
+ }
21915
+
21854
21916
  .label-sm, label.label-sm {
21855
21917
  font-size: var(--vd-font-size-xs);
21856
21918
  }
@@ -23294,6 +23356,231 @@ a.vd-card:active {
23294
23356
  }
23295
23357
  }
23296
23358
 
23359
+ .vd-card-interactive {
23360
+ cursor: pointer;
23361
+ transition: transform .2s, box-shadow .2s;
23362
+ }
23363
+
23364
+ .vd-card-interactive:hover {
23365
+ box-shadow: var(--vd-shadow-lg);
23366
+ transform: translateY(-2px) translateZ(0);
23367
+ }
23368
+
23369
+ .vd-card-interactive:focus-visible {
23370
+ outline: 2px solid var(--vd-color-primary);
23371
+ outline-offset: 2px;
23372
+ }
23373
+
23374
+ @media (prefers-reduced-motion: reduce) {
23375
+ .vd-card-interactive {
23376
+ transition: none;
23377
+ }
23378
+
23379
+ .vd-card-interactive:hover {
23380
+ transform: none;
23381
+ }
23382
+ }
23383
+
23384
+ :root {
23385
+ --vd-accordion-border-color: var(--vd-border-color);
23386
+ --vd-accordion-header-bg: transparent;
23387
+ --vd-accordion-header-bg-hover: var(--vd-bg-secondary);
23388
+ --vd-accordion-padding-x: 1.3125rem;
23389
+ --vd-accordion-padding-y: .8125rem;
23390
+ }
23391
+
23392
+ .vd-accordion {
23393
+ border: 1px solid var(--vd-accordion-border-color);
23394
+ border-radius: var(--vd-btn-border-radius);
23395
+ margin: 0;
23396
+ padding: 0;
23397
+ list-style: none;
23398
+ overflow: hidden;
23399
+ }
23400
+
23401
+ .vd-accordion-item {
23402
+ border-top: 1px solid var(--vd-accordion-border-color);
23403
+ }
23404
+
23405
+ .vd-accordion-item:first-child {
23406
+ border-top: none;
23407
+ }
23408
+
23409
+ .vd-accordion-header {
23410
+ width: 100%;
23411
+ padding: var(--vd-accordion-padding-y) var(--vd-accordion-padding-x);
23412
+ background: var(--vd-accordion-header-bg);
23413
+ cursor: pointer;
23414
+ font-size: var(--vd-font-size-base);
23415
+ font-weight: var(--vd-font-weight-medium);
23416
+ color: var(--vd-text-primary);
23417
+ text-align: left;
23418
+ border: none;
23419
+ justify-content: space-between;
23420
+ align-items: center;
23421
+ gap: .75rem;
23422
+ transition: background-color .15s;
23423
+ display: flex;
23424
+ }
23425
+
23426
+ .vd-accordion-header:hover {
23427
+ background: var(--vd-accordion-header-bg-hover);
23428
+ }
23429
+
23430
+ .vd-accordion-header:focus-visible {
23431
+ outline: 2px solid var(--vd-color-primary);
23432
+ outline-offset: -2px;
23433
+ }
23434
+
23435
+ .vd-accordion-icon {
23436
+ color: var(--vd-text-secondary);
23437
+ flex-shrink: 0;
23438
+ font-size: 1.25rem;
23439
+ line-height: 1;
23440
+ }
23441
+
23442
+ .vd-accordion-panel {
23443
+ padding: var(--vd-accordion-padding-y) var(--vd-accordion-padding-x);
23444
+ color: var(--vd-text-primary);
23445
+ border-top: 1px solid var(--vd-accordion-border-color);
23446
+ }
23447
+
23448
+ @media (prefers-reduced-motion: reduce) {
23449
+ .vd-accordion-header {
23450
+ transition: none;
23451
+ }
23452
+ }
23453
+
23454
+ :root {
23455
+ --vd-separator-color: var(--vd-border-color);
23456
+ --vd-separator-spacing: 1.3125rem;
23457
+ }
23458
+
23459
+ .vd-separator {
23460
+ width: 100%;
23461
+ height: 0;
23462
+ margin: var(--vd-separator-spacing) 0;
23463
+ border: none;
23464
+ border-top: 1px solid var(--vd-separator-color);
23465
+ }
23466
+
23467
+ .vd-separator-vertical {
23468
+ width: 0;
23469
+ height: auto;
23470
+ min-height: 1em;
23471
+ margin: 0 var(--vd-separator-spacing);
23472
+ border-top: none;
23473
+ border-left: 1px solid var(--vd-separator-color);
23474
+ align-self: stretch;
23475
+ }
23476
+
23477
+ .vd-separator-labeled {
23478
+ width: 100%;
23479
+ margin: var(--vd-separator-spacing) 0;
23480
+ color: var(--vd-text-muted);
23481
+ font-size: var(--vd-font-size-sm);
23482
+ border: none;
23483
+ align-items: center;
23484
+ gap: .75rem;
23485
+ display: flex;
23486
+ }
23487
+
23488
+ .vd-separator-labeled:before, .vd-separator-labeled:after {
23489
+ content: "";
23490
+ border-top: 1px solid var(--vd-separator-color);
23491
+ flex: auto;
23492
+ }
23493
+
23494
+ .vd-separator-label {
23495
+ flex-shrink: 0;
23496
+ }
23497
+
23498
+ :root {
23499
+ --vd-slider-track-height: .375rem;
23500
+ --vd-slider-track-bg: var(--vd-bg-tertiary, #e9ecef);
23501
+ --vd-slider-thumb-size: 1.125rem;
23502
+ --vd-slider-thumb-bg: var(--vd-color-primary);
23503
+ }
23504
+
23505
+ .vd-slider-field {
23506
+ flex-direction: column;
23507
+ gap: .375rem;
23508
+ width: 100%;
23509
+ display: flex;
23510
+ }
23511
+
23512
+ .vd-slider-row {
23513
+ align-items: center;
23514
+ gap: .75rem;
23515
+ display: flex;
23516
+ }
23517
+
23518
+ .vd-slider-value {
23519
+ text-align: right;
23520
+ min-width: 3ch;
23521
+ font-size: var(--vd-font-size-sm);
23522
+ font-variant-numeric: tabular-nums;
23523
+ color: var(--vd-text-secondary);
23524
+ flex-shrink: 0;
23525
+ }
23526
+
23527
+ .vd-slider {
23528
+ -webkit-appearance: none;
23529
+ appearance: none;
23530
+ width: 100%;
23531
+ height: var(--vd-slider-track-height);
23532
+ border-radius: calc(var(--vd-slider-track-height) / 2);
23533
+ background-color: var(--vd-slider-track-bg);
23534
+ cursor: pointer;
23535
+ outline-offset: 4px;
23536
+ }
23537
+
23538
+ .vd-slider:disabled {
23539
+ opacity: .6;
23540
+ cursor: not-allowed;
23541
+ }
23542
+
23543
+ .vd-slider:focus-visible {
23544
+ outline: 2px solid var(--vd-color-primary);
23545
+ }
23546
+
23547
+ .vd-slider::-webkit-slider-thumb {
23548
+ -webkit-appearance: none;
23549
+ appearance: none;
23550
+ width: var(--vd-slider-thumb-size);
23551
+ height: var(--vd-slider-thumb-size);
23552
+ border: 2px solid var(--vd-color-white);
23553
+ background-color: var(--vd-slider-thumb-bg);
23554
+ box-shadow: var(--vd-shadow-sm);
23555
+ border-radius: 50%;
23556
+ transition: transform .1s;
23557
+ }
23558
+
23559
+ .vd-slider::-webkit-slider-thumb:active {
23560
+ transform: scale(1.15);
23561
+ }
23562
+
23563
+ .vd-slider::-moz-range-thumb {
23564
+ width: var(--vd-slider-thumb-size);
23565
+ height: var(--vd-slider-thumb-size);
23566
+ border: 2px solid var(--vd-color-white);
23567
+ background-color: var(--vd-slider-thumb-bg);
23568
+ box-shadow: var(--vd-shadow-sm);
23569
+ border-radius: 50%;
23570
+ }
23571
+
23572
+ .vd-slider::-moz-range-track {
23573
+ height: var(--vd-slider-track-height);
23574
+ border-radius: calc(var(--vd-slider-track-height) / 2);
23575
+ background-color: var(--vd-slider-track-bg);
23576
+ }
23577
+
23578
+ @media (prefers-reduced-motion: reduce) {
23579
+ .vd-slider::-webkit-slider-thumb {
23580
+ transition: none;
23581
+ }
23582
+ }
23583
+
23297
23584
  .vd-expanding-cards {
23298
23585
  flex-direction: row;
23299
23586
  align-items: stretch;
@@ -25534,6 +25821,68 @@ a.vd-card:active {
25534
25821
  overflow: hidden;
25535
25822
  }
25536
25823
 
25824
+ .vd-modal.vd-modal-open {
25825
+ opacity: 1;
25826
+ justify-content: center;
25827
+ align-items: center;
25828
+ display: flex;
25829
+ }
25830
+
25831
+ .vd-modal-open .vd-modal-backdrop {
25832
+ opacity: 1;
25833
+ pointer-events: auto;
25834
+ }
25835
+
25836
+ .vd-modal-panel {
25837
+ width: min(calc(100% - 3.5rem), var(--vd-modal-dialog-max-width));
25838
+ max-width: var(--vd-modal-dialog-max-width);
25839
+ pointer-events: auto;
25840
+ background-color: var(--vd-modal-bg);
25841
+ border: 1px solid var(--vd-modal-border-color);
25842
+ border-radius: var(--vd-btn-border-radius-lg);
25843
+ box-shadow: var(--vd-shadow-2xl);
25844
+ transition: var(--vd-modal-dialog-transition);
25845
+ z-index: 1060;
25846
+ background-clip: padding-box;
25847
+ outline: 0;
25848
+ flex-direction: column;
25849
+ margin: 1.75rem auto;
25850
+ display: flex;
25851
+ position: relative;
25852
+ transform: scale(.95);
25853
+ }
25854
+
25855
+ .vd-modal.vd-modal-open .vd-modal-panel {
25856
+ transform: scale(1);
25857
+ }
25858
+
25859
+ .vd-modal-panel-sm {
25860
+ --vd-modal-dialog-max-width: var(--vd-modal-width-sm);
25861
+ }
25862
+
25863
+ .vd-modal-panel-md {
25864
+ --vd-modal-dialog-max-width: var(--vd-modal-width);
25865
+ }
25866
+
25867
+ .vd-modal-panel-lg {
25868
+ --vd-modal-dialog-max-width: var(--vd-modal-width-lg);
25869
+ }
25870
+
25871
+ .vd-modal-glass .vd-modal-panel {
25872
+ background: var(--vd-glass-bg-light);
25873
+ border-color: var(--vd-glass-border-light);
25874
+ box-shadow: var(--vd-glass-shadow);
25875
+ -webkit-backdrop-filter: blur(var(--vd-glass-blur)) saturate(var(--vd-glass-saturate));
25876
+ }
25877
+
25878
+ @media (width <= 575.98px) {
25879
+ .vd-modal-panel {
25880
+ width: calc(100% - 1rem);
25881
+ max-width: calc(100% - 1rem);
25882
+ margin: .5rem;
25883
+ }
25884
+ }
25885
+
25537
25886
  :root {
25538
25887
  --vd-badge-padding-y: .3em;
25539
25888
  --vd-badge-padding-x: .48em;
@@ -25606,7 +25955,7 @@ a.vd-card:active {
25606
25955
  color: var(--vd-color-gray-900);
25607
25956
  }
25608
25957
 
25609
- .vd-badge-error {
25958
+ .vd-badge-error, .vd-badge-danger {
25610
25959
  background-color: var(--vd-color-error);
25611
25960
  color: var(--vd-color-white);
25612
25961
  }
@@ -25959,6 +26308,21 @@ h1 .vd-badge, h2 .vd-badge, h3 .vd-badge, h4 .vd-badge, h5 .vd-badge, h6 .vd-bad
25959
26308
  }
25960
26309
  }
25961
26310
 
26311
+ .vd-collection-list {
26312
+ flex-direction: column;
26313
+ margin: 0;
26314
+ padding: 0;
26315
+ list-style: none;
26316
+ display: flex;
26317
+ }
26318
+
26319
+ .vd-collection-text-secondary {
26320
+ font-size: var(--vd-font-size-sm);
26321
+ color: var(--vd-text-secondary);
26322
+ margin-top: .125rem;
26323
+ display: block;
26324
+ }
26325
+
25962
26326
  :root {
25963
26327
  --vd-pagination-bg: var(--vd-color-white);
25964
26328
  --vd-pagination-border-color: var(--vd-border-color);
@@ -26517,6 +26881,31 @@ h1 .vd-badge, h2 .vd-badge, h3 .vd-badge, h4 .vd-badge, h5 .vd-badge, h6 .vd-bad
26517
26881
  }
26518
26882
  }
26519
26883
 
26884
+ .vd-preloader:has(.vd-preloader-spinner) {
26885
+ border: none;
26886
+ border-radius: 0;
26887
+ width: auto;
26888
+ height: auto;
26889
+ animation: none;
26890
+ display: inline-flex;
26891
+ }
26892
+
26893
+ .vd-preloader-spinner {
26894
+ width: var(--vd-spinner-size, 2rem);
26895
+ height: var(--vd-spinner-size, 2rem);
26896
+ border: var(--vd-spinner-border-width, 3px) solid var(--vd-border-color, #e9ecef);
26897
+ border-top-color: var(--vd-spinner-color, var(--vd-color-primary));
26898
+ animation: spinner-rotate var(--vd-spinner-speed, .65s) linear infinite;
26899
+ border-radius: 50%;
26900
+ display: inline-block;
26901
+ }
26902
+
26903
+ @media (prefers-reduced-motion: reduce) {
26904
+ .vd-preloader-spinner {
26905
+ animation-duration: 1.5s;
26906
+ }
26907
+ }
26908
+
26520
26909
  :root {
26521
26910
  --vd-alert-padding-x: 1.3125rem;
26522
26911
  --vd-alert-padding-y: .8125rem;
@@ -26597,6 +26986,22 @@ h1 .vd-badge, h2 .vd-badge, h3 .vd-badge, h4 .vd-badge, h5 .vd-badge, h6 .vd-bad
26597
26986
  color: var(--vd-alert-info-text);
26598
26987
  }
26599
26988
 
26989
+ .vd-alert-secondary {
26990
+ background-color: var(--vd-color-secondary-alpha-10);
26991
+ border-color: var(--vd-color-secondary);
26992
+ color: var(--vd-color-secondary-dark);
26993
+ }
26994
+
26995
+ [data-theme="dark"] .vd-alert-secondary {
26996
+ color: var(--vd-color-secondary-light);
26997
+ }
26998
+
26999
+ @media (prefers-color-scheme: dark) {
27000
+ :root:not([data-theme]) .vd-alert-secondary {
27001
+ color: var(--vd-color-secondary-light);
27002
+ }
27003
+ }
27004
+
26600
27005
  .vd-alert-icon {
26601
27006
  align-items: flex-start;
26602
27007
  gap: .75rem;
@@ -26712,6 +27117,48 @@ h1 .vd-badge, h2 .vd-badge, h3 .vd-badge, h4 .vd-badge, h5 .vd-badge, h6 .vd-bad
26712
27117
  }
26713
27118
  }
26714
27119
 
27120
+ .vd-alert:has(.vd-alert-body) {
27121
+ align-items: flex-start;
27122
+ gap: .75rem;
27123
+ display: flex;
27124
+ }
27125
+
27126
+ .vd-alert:has(.vd-alert-body) > .vd-alert-icon {
27127
+ flex-shrink: 0;
27128
+ }
27129
+
27130
+ .vd-alert-body {
27131
+ flex: auto;
27132
+ min-width: 0;
27133
+ }
27134
+
27135
+ .vd-alert-dismiss {
27136
+ cursor: pointer;
27137
+ opacity: .5;
27138
+ color: inherit;
27139
+ background: none;
27140
+ border: none;
27141
+ flex-shrink: 0;
27142
+ padding: 0;
27143
+ line-height: 1;
27144
+ transition: opacity .15s;
27145
+ }
27146
+
27147
+ .vd-alert-dismiss:hover {
27148
+ opacity: 1;
27149
+ }
27150
+
27151
+ .vd-alert-dismiss:focus-visible {
27152
+ outline-offset: 2px;
27153
+ outline: 2px solid;
27154
+ }
27155
+
27156
+ @media (prefers-reduced-motion: reduce) {
27157
+ .vd-alert-dismiss {
27158
+ transition: none;
27159
+ }
27160
+ }
27161
+
26715
27162
  :root {
26716
27163
  --vd-chip-padding-x: .8125rem;
26717
27164
  --vd-chip-padding-y: .3125rem;
@@ -26959,7 +27406,7 @@ h1 .vd-badge, h2 .vd-badge, h3 .vd-badge, h4 .vd-badge, h5 .vd-badge, h6 .vd-bad
26959
27406
  overflow: hidden;
26960
27407
  }
26961
27408
 
26962
- .vd-avatar img {
27409
+ .vd-avatar img, .vd-avatar-img {
26963
27410
  object-fit: cover;
26964
27411
  border-radius: inherit;
26965
27412
  width: 100%;
@@ -27453,6 +27900,52 @@ a.vd-avatar:focus-visible, button.vd-avatar:focus-visible {
27453
27900
  }
27454
27901
  }
27455
27902
 
27903
+ .vd-skeleton-lines {
27904
+ flex-direction: column;
27905
+ gap: .5rem;
27906
+ display: flex;
27907
+ }
27908
+
27909
+ .vd-skeleton-lines .vd-skeleton-text {
27910
+ margin-bottom: 0;
27911
+ }
27912
+
27913
+ .vd-skeleton-text-short {
27914
+ width: 60%;
27915
+ }
27916
+
27917
+ .vd-skeleton-card-header {
27918
+ width: 100%;
27919
+ height: 8rem;
27920
+ margin-bottom: .8125rem;
27921
+ }
27922
+
27923
+ .vd-skeleton-card-body {
27924
+ flex-direction: column;
27925
+ gap: .5rem;
27926
+ display: flex;
27927
+ }
27928
+
27929
+ .vd-skeleton-card-body .vd-skeleton-text {
27930
+ margin-bottom: 0;
27931
+ }
27932
+
27933
+ .vd-skeleton-card-sm .vd-skeleton-card-header {
27934
+ height: 5rem;
27935
+ }
27936
+
27937
+ .vd-skeleton-card-md .vd-skeleton-card-header {
27938
+ height: 8rem;
27939
+ }
27940
+
27941
+ .vd-skeleton-card-lg .vd-skeleton-card-header {
27942
+ height: 12rem;
27943
+ }
27944
+
27945
+ .vd-skeleton-card-xl .vd-skeleton-card-header {
27946
+ height: 16rem;
27947
+ }
27948
+
27456
27949
  :root {
27457
27950
  --vd-tab-padding-x: 1.3125rem;
27458
27951
  --vd-tab-padding-y: .8125rem;
@@ -27743,6 +28236,47 @@ a.vd-avatar:focus-visible, button.vd-avatar:focus-visible {
27743
28236
  }
27744
28237
  }
27745
28238
 
28239
+ .vd-tab {
28240
+ padding: var(--vd-tab-padding-y) var(--vd-tab-padding-x);
28241
+ font-size: var(--vd-font-size-base);
28242
+ font-weight: var(--vd-font-weight-medium);
28243
+ color: var(--vd-tab-text);
28244
+ border: none;
28245
+ border-bottom: var(--vd-tab-border-width) solid transparent;
28246
+ cursor: pointer;
28247
+ white-space: nowrap;
28248
+ background: none;
28249
+ align-items: center;
28250
+ gap: .5rem;
28251
+ transition: color .15s, border-color .15s, background-color .15s;
28252
+ display: inline-flex;
28253
+ }
28254
+
28255
+ .vd-tab:hover {
28256
+ color: var(--vd-tab-text-hover);
28257
+ background-color: var(--vd-tab-bg-hover);
28258
+ }
28259
+
28260
+ .vd-tab:focus-visible {
28261
+ outline: 2px solid var(--vd-color-primary);
28262
+ outline-offset: -2px;
28263
+ }
28264
+
28265
+ .vd-tab.is-active {
28266
+ color: var(--vd-tab-text-active);
28267
+ border-bottom-color: var(--vd-tab-border-active);
28268
+ }
28269
+
28270
+ .vd-tab-panels {
28271
+ padding-top: 1rem;
28272
+ }
28273
+
28274
+ @media (prefers-reduced-motion: reduce) {
28275
+ .vd-tab {
28276
+ transition: none;
28277
+ }
28278
+ }
28279
+
27746
28280
  :root {
27747
28281
  --vd-toast-width: 377px;
27748
28282
  --vd-toast-max-width: 90vw;
@@ -28570,6 +29104,25 @@ a.vd-avatar:focus-visible, button.vd-avatar:focus-visible {
28570
29104
  }
28571
29105
  }
28572
29106
 
29107
+ .vd-code-snippet-pre {
29108
+ padding: var(--vd-code-padding-y) var(--vd-code-padding-x);
29109
+ -webkit-overflow-scrolling: touch;
29110
+ background-color: var(--vd-code-bg);
29111
+ font-family: var(--vd-font-family-mono, "JetBrains Mono", "Fira Code", "Consolas", monospace);
29112
+ font-size: var(--vd-code-font-size);
29113
+ line-height: var(--vd-code-line-height);
29114
+ color: var(--vd-code-text);
29115
+ margin: 0;
29116
+ overflow-x: auto;
29117
+ }
29118
+
29119
+ .vd-code-snippet-pre code {
29120
+ font: inherit;
29121
+ color: inherit;
29122
+ white-space: pre;
29123
+ tab-size: 2;
29124
+ }
29125
+
28573
29126
  :root {
28574
29127
  --vd-progress-height: 8px;
28575
29128
  --vd-progress-bg: var(--vd-bg-tertiary, #e9ecef);
@@ -28685,6 +29238,45 @@ a.vd-avatar:focus-visible, button.vd-avatar:focus-visible {
28685
29238
  }
28686
29239
  }
28687
29240
 
29241
+ .vd-progress:has(.vd-progress-track) {
29242
+ background-color: #0000;
29243
+ height: auto;
29244
+ display: block;
29245
+ overflow: visible;
29246
+ }
29247
+
29248
+ .vd-progress-track {
29249
+ height: var(--vd-progress-height);
29250
+ background-color: var(--vd-progress-bg);
29251
+ border-radius: var(--vd-progress-border-radius);
29252
+ display: flex;
29253
+ overflow: hidden;
29254
+ }
29255
+
29256
+ .vd-progress-fill {
29257
+ background-color: var(--vd-progress-bar-bg);
29258
+ border-radius: var(--vd-progress-border-radius);
29259
+ height: 100%;
29260
+ transition: width .4s;
29261
+ display: block;
29262
+ }
29263
+
29264
+ .vd-progress.is-indeterminate .vd-progress-fill {
29265
+ width: 30%;
29266
+ animation: 1.5s ease-in-out infinite progress-indeterminate;
29267
+ }
29268
+
29269
+ .vd-progress-label {
29270
+ margin-top: .375rem;
29271
+ display: block;
29272
+ }
29273
+
29274
+ @media (prefers-reduced-motion: reduce) {
29275
+ .vd-progress.is-indeterminate .vd-progress-fill {
29276
+ animation: none;
29277
+ }
29278
+ }
29279
+
28688
29280
  :root {
28689
29281
  --vd-spinner-size: 2rem;
28690
29282
  --vd-spinner-border-width: 3px;
@@ -31006,6 +31598,21 @@ input.vd-doc-search-input {
31006
31598
  }
31007
31599
  }
31008
31600
 
31601
+ .vd-flow-controls {
31602
+ justify-content: center;
31603
+ align-items: center;
31604
+ gap: .75rem;
31605
+ margin-top: .8125rem;
31606
+ display: flex;
31607
+ }
31608
+
31609
+ .vd-flow-position {
31610
+ min-width: 4ch;
31611
+ font-size: var(--vd-font-size-sm);
31612
+ color: var(--vd-text-secondary);
31613
+ text-align: center;
31614
+ }
31615
+
31009
31616
  :root {
31010
31617
  --vd-bubble-bg: var(--vd-card-bg, #fff);
31011
31618
  --vd-bubble-text: var(--vd-text-primary, #212529);