@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.
@@ -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
  :root {
7065
7081
  --vd-shadow-sm: 0 1px 2px 0 #0000000d;
7066
7082
  --vd-shadow: 0 2px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;
@@ -7799,6 +7815,14 @@ pre code {
7799
7815
  margin-bottom: 1rem;
7800
7816
  }
7801
7817
 
7818
+ .vd-table-caption {
7819
+ padding: var(--vd-table-padding-y) var(--vd-table-padding-x);
7820
+ color: var(--vd-text-muted);
7821
+ font-size: var(--vd-font-size-sm);
7822
+ text-align: left;
7823
+ caption-side: top;
7824
+ }
7825
+
7802
7826
  .vd-table th, .vd-table td, .table th, .table td {
7803
7827
  padding: var(--vd-table-padding-y) var(--vd-table-padding-x);
7804
7828
  vertical-align: middle;
@@ -9196,19 +9220,19 @@ pre code {
9196
9220
  transform: translateY(1px);
9197
9221
  }
9198
9222
 
9199
- .vd-btn-error {
9223
+ .vd-btn-error, .vd-btn-danger {
9200
9224
  background-color: var(--vd-color-error);
9201
9225
  border-color: var(--vd-color-error);
9202
9226
  color: var(--vd-color-white);
9203
9227
  }
9204
9228
 
9205
- .vd-btn-error:hover:not(:disabled):not(.disabled):not(.is-disabled) {
9229
+ .vd-btn-error:hover:not(:disabled):not(.disabled):not(.is-disabled), .vd-btn-danger:hover:not(:disabled):not(.disabled):not(.is-disabled) {
9206
9230
  background-color: var(--vd-color-error-dark);
9207
9231
  border-color: var(--vd-color-error-dark);
9208
9232
  color: var(--vd-color-white);
9209
9233
  }
9210
9234
 
9211
- .vd-btn-error:active:not(:disabled):not(.disabled):not(.is-disabled) {
9235
+ .vd-btn-error:active:not(:disabled):not(.disabled):not(.is-disabled), .vd-btn-danger:active:not(:disabled):not(.disabled):not(.is-disabled) {
9212
9236
  background-color: var(--vd-color-error-dark);
9213
9237
  border-color: var(--vd-color-error-dark);
9214
9238
  transform: translateY(1px);
@@ -9292,13 +9316,13 @@ pre code {
9292
9316
  color: var(--vd-color-black);
9293
9317
  }
9294
9318
 
9295
- .vd-btn-outline-error {
9319
+ .vd-btn-outline-error, .vd-btn-outline-danger {
9296
9320
  border-color: var(--vd-color-error);
9297
9321
  color: var(--vd-color-error);
9298
9322
  background-color: #0000;
9299
9323
  }
9300
9324
 
9301
- .vd-btn-outline-error:hover:not(:disabled):not(.disabled):not(.is-disabled) {
9325
+ .vd-btn-outline-error:hover:not(:disabled):not(.disabled):not(.is-disabled), .vd-btn-outline-danger:hover:not(:disabled):not(.disabled):not(.is-disabled) {
9302
9326
  background-color: var(--vd-color-error);
9303
9327
  border-color: var(--vd-color-error);
9304
9328
  color: var(--vd-color-white);
@@ -9396,18 +9420,18 @@ pre code {
9396
9420
  color: var(--vd-color-warning-active);
9397
9421
  }
9398
9422
 
9399
- .vd-btn-ghost-error {
9423
+ .vd-btn-ghost-error, .vd-btn-ghost-danger {
9400
9424
  color: var(--vd-color-error);
9401
9425
  background-color: #0000;
9402
9426
  border-color: #0000;
9403
9427
  }
9404
9428
 
9405
- .vd-btn-ghost-error:hover:not(:disabled):not(.disabled):not(.is-disabled) {
9429
+ .vd-btn-ghost-error:hover:not(:disabled):not(.disabled):not(.is-disabled), .vd-btn-ghost-danger:hover:not(:disabled):not(.disabled):not(.is-disabled) {
9406
9430
  background-color: var(--vd-color-error-alpha-10);
9407
9431
  color: var(--vd-color-error-dark);
9408
9432
  }
9409
9433
 
9410
- .vd-btn-ghost-error:active:not(:disabled):not(.disabled):not(.is-disabled) {
9434
+ .vd-btn-ghost-error:active:not(:disabled):not(.disabled):not(.is-disabled), .vd-btn-ghost-danger:active:not(:disabled):not(.disabled):not(.is-disabled) {
9411
9435
  background-color: var(--vd-color-error-alpha-20);
9412
9436
  color: var(--vd-color-error-active);
9413
9437
  }
@@ -9516,7 +9540,7 @@ a.vd-btn, a.vd-btn:hover {
9516
9540
  left: 50%;
9517
9541
  }
9518
9542
 
9519
- .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 {
9543
+ .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 {
9520
9544
  border-color: var(--vd-color-white);
9521
9545
  border-right-color: #0000;
9522
9546
  }
@@ -9532,6 +9556,39 @@ a.vd-btn, a.vd-btn:hover {
9532
9556
  }
9533
9557
  }
9534
9558
 
9559
+ .vd-btn.is-loading:has(.vd-btn-spinner):after {
9560
+ content: none;
9561
+ }
9562
+
9563
+ .vd-btn-spinner {
9564
+ border: 2px solid var(--vd-color-primary);
9565
+ border-right-color: #0000;
9566
+ border-radius: 50%;
9567
+ width: 1em;
9568
+ height: 1em;
9569
+ margin: -.5em 0 0 -.5em;
9570
+ animation: .6s linear infinite btn-spinner;
9571
+ position: absolute;
9572
+ top: 50%;
9573
+ left: 50%;
9574
+ }
9575
+
9576
+ .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 {
9577
+ border-color: var(--vd-color-white);
9578
+ border-right-color: #0000;
9579
+ }
9580
+
9581
+ .vd-btn-warning .vd-btn-spinner {
9582
+ border-color: var(--vd-color-black);
9583
+ border-right-color: #0000;
9584
+ }
9585
+
9586
+ @media (prefers-reduced-motion: reduce) {
9587
+ .vd-btn-spinner {
9588
+ animation-duration: 1.2s;
9589
+ }
9590
+ }
9591
+
9535
9592
  :root {
9536
9593
  --vd-input-padding-x-sm: .5rem;
9537
9594
  --vd-input-padding-y-sm: .3125rem;
@@ -9649,11 +9706,11 @@ a.vd-btn, a.vd-btn:hover {
9649
9706
  border-radius: var(--vd-input-border-radius-lg);
9650
9707
  }
9651
9708
 
9652
- .vd-input-error, input.vd-input-error, .vd-input.is-error, input.is-error, .vd-input-invalid, input.vd-input-invalid {
9709
+ .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 {
9653
9710
  border-color: var(--vd-color-error);
9654
9711
  }
9655
9712
 
9656
- .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 {
9713
+ .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 {
9657
9714
  border-color: var(--vd-color-error);
9658
9715
  box-shadow: 0 0 0 3px var(--vd-color-error-alpha-10);
9659
9716
  }
@@ -9685,7 +9742,7 @@ a.vd-btn, a.vd-btn:hover {
9685
9742
  box-shadow: 0 0 0 3px var(--vd-color-success-alpha-10);
9686
9743
  }
9687
9744
 
9688
- .label, label {
9745
+ .label, .vd-form-label, label {
9689
9746
  font-size: var(--vd-font-size-sm);
9690
9747
  font-weight: var(--vd-font-weight-medium);
9691
9748
  color: var(--vd-text-primary);
@@ -9699,6 +9756,11 @@ a.vd-btn, a.vd-btn:hover {
9699
9756
  color: var(--vd-color-error);
9700
9757
  }
9701
9758
 
9759
+ .vd-form-radio-icon {
9760
+ vertical-align: -.125em;
9761
+ margin-right: .375rem;
9762
+ }
9763
+
9702
9764
  .label-sm, label.label-sm {
9703
9765
  font-size: var(--vd-font-size-xs);
9704
9766
  }
@@ -11142,6 +11204,231 @@ a.vd-card:active {
11142
11204
  }
11143
11205
  }
11144
11206
 
11207
+ .vd-card-interactive {
11208
+ cursor: pointer;
11209
+ transition: transform .2s, box-shadow .2s;
11210
+ }
11211
+
11212
+ .vd-card-interactive:hover {
11213
+ box-shadow: var(--vd-shadow-lg);
11214
+ transform: translateY(-2px) translateZ(0);
11215
+ }
11216
+
11217
+ .vd-card-interactive:focus-visible {
11218
+ outline: 2px solid var(--vd-color-primary);
11219
+ outline-offset: 2px;
11220
+ }
11221
+
11222
+ @media (prefers-reduced-motion: reduce) {
11223
+ .vd-card-interactive {
11224
+ transition: none;
11225
+ }
11226
+
11227
+ .vd-card-interactive:hover {
11228
+ transform: none;
11229
+ }
11230
+ }
11231
+
11232
+ :root {
11233
+ --vd-accordion-border-color: var(--vd-border-color);
11234
+ --vd-accordion-header-bg: transparent;
11235
+ --vd-accordion-header-bg-hover: var(--vd-bg-secondary);
11236
+ --vd-accordion-padding-x: 1.3125rem;
11237
+ --vd-accordion-padding-y: .8125rem;
11238
+ }
11239
+
11240
+ .vd-accordion {
11241
+ border: 1px solid var(--vd-accordion-border-color);
11242
+ border-radius: var(--vd-btn-border-radius);
11243
+ margin: 0;
11244
+ padding: 0;
11245
+ list-style: none;
11246
+ overflow: hidden;
11247
+ }
11248
+
11249
+ .vd-accordion-item {
11250
+ border-top: 1px solid var(--vd-accordion-border-color);
11251
+ }
11252
+
11253
+ .vd-accordion-item:first-child {
11254
+ border-top: none;
11255
+ }
11256
+
11257
+ .vd-accordion-header {
11258
+ width: 100%;
11259
+ padding: var(--vd-accordion-padding-y) var(--vd-accordion-padding-x);
11260
+ background: var(--vd-accordion-header-bg);
11261
+ cursor: pointer;
11262
+ font-size: var(--vd-font-size-base);
11263
+ font-weight: var(--vd-font-weight-medium);
11264
+ color: var(--vd-text-primary);
11265
+ text-align: left;
11266
+ border: none;
11267
+ justify-content: space-between;
11268
+ align-items: center;
11269
+ gap: .75rem;
11270
+ transition: background-color .15s;
11271
+ display: flex;
11272
+ }
11273
+
11274
+ .vd-accordion-header:hover {
11275
+ background: var(--vd-accordion-header-bg-hover);
11276
+ }
11277
+
11278
+ .vd-accordion-header:focus-visible {
11279
+ outline: 2px solid var(--vd-color-primary);
11280
+ outline-offset: -2px;
11281
+ }
11282
+
11283
+ .vd-accordion-icon {
11284
+ color: var(--vd-text-secondary);
11285
+ flex-shrink: 0;
11286
+ font-size: 1.25rem;
11287
+ line-height: 1;
11288
+ }
11289
+
11290
+ .vd-accordion-panel {
11291
+ padding: var(--vd-accordion-padding-y) var(--vd-accordion-padding-x);
11292
+ color: var(--vd-text-primary);
11293
+ border-top: 1px solid var(--vd-accordion-border-color);
11294
+ }
11295
+
11296
+ @media (prefers-reduced-motion: reduce) {
11297
+ .vd-accordion-header {
11298
+ transition: none;
11299
+ }
11300
+ }
11301
+
11302
+ :root {
11303
+ --vd-separator-color: var(--vd-border-color);
11304
+ --vd-separator-spacing: 1.3125rem;
11305
+ }
11306
+
11307
+ .vd-separator {
11308
+ width: 100%;
11309
+ height: 0;
11310
+ margin: var(--vd-separator-spacing) 0;
11311
+ border: none;
11312
+ border-top: 1px solid var(--vd-separator-color);
11313
+ }
11314
+
11315
+ .vd-separator-vertical {
11316
+ width: 0;
11317
+ height: auto;
11318
+ min-height: 1em;
11319
+ margin: 0 var(--vd-separator-spacing);
11320
+ border-top: none;
11321
+ border-left: 1px solid var(--vd-separator-color);
11322
+ align-self: stretch;
11323
+ }
11324
+
11325
+ .vd-separator-labeled {
11326
+ width: 100%;
11327
+ margin: var(--vd-separator-spacing) 0;
11328
+ color: var(--vd-text-muted);
11329
+ font-size: var(--vd-font-size-sm);
11330
+ border: none;
11331
+ align-items: center;
11332
+ gap: .75rem;
11333
+ display: flex;
11334
+ }
11335
+
11336
+ .vd-separator-labeled:before, .vd-separator-labeled:after {
11337
+ content: "";
11338
+ border-top: 1px solid var(--vd-separator-color);
11339
+ flex: auto;
11340
+ }
11341
+
11342
+ .vd-separator-label {
11343
+ flex-shrink: 0;
11344
+ }
11345
+
11346
+ :root {
11347
+ --vd-slider-track-height: .375rem;
11348
+ --vd-slider-track-bg: var(--vd-bg-tertiary, #e9ecef);
11349
+ --vd-slider-thumb-size: 1.125rem;
11350
+ --vd-slider-thumb-bg: var(--vd-color-primary);
11351
+ }
11352
+
11353
+ .vd-slider-field {
11354
+ flex-direction: column;
11355
+ gap: .375rem;
11356
+ width: 100%;
11357
+ display: flex;
11358
+ }
11359
+
11360
+ .vd-slider-row {
11361
+ align-items: center;
11362
+ gap: .75rem;
11363
+ display: flex;
11364
+ }
11365
+
11366
+ .vd-slider-value {
11367
+ text-align: right;
11368
+ min-width: 3ch;
11369
+ font-size: var(--vd-font-size-sm);
11370
+ font-variant-numeric: tabular-nums;
11371
+ color: var(--vd-text-secondary);
11372
+ flex-shrink: 0;
11373
+ }
11374
+
11375
+ .vd-slider {
11376
+ -webkit-appearance: none;
11377
+ appearance: none;
11378
+ width: 100%;
11379
+ height: var(--vd-slider-track-height);
11380
+ border-radius: calc(var(--vd-slider-track-height) / 2);
11381
+ background-color: var(--vd-slider-track-bg);
11382
+ cursor: pointer;
11383
+ outline-offset: 4px;
11384
+ }
11385
+
11386
+ .vd-slider:disabled {
11387
+ opacity: .6;
11388
+ cursor: not-allowed;
11389
+ }
11390
+
11391
+ .vd-slider:focus-visible {
11392
+ outline: 2px solid var(--vd-color-primary);
11393
+ }
11394
+
11395
+ .vd-slider::-webkit-slider-thumb {
11396
+ -webkit-appearance: none;
11397
+ appearance: none;
11398
+ width: var(--vd-slider-thumb-size);
11399
+ height: var(--vd-slider-thumb-size);
11400
+ border: 2px solid var(--vd-color-white);
11401
+ background-color: var(--vd-slider-thumb-bg);
11402
+ box-shadow: var(--vd-shadow-sm);
11403
+ border-radius: 50%;
11404
+ transition: transform .1s;
11405
+ }
11406
+
11407
+ .vd-slider::-webkit-slider-thumb:active {
11408
+ transform: scale(1.15);
11409
+ }
11410
+
11411
+ .vd-slider::-moz-range-thumb {
11412
+ width: var(--vd-slider-thumb-size);
11413
+ height: var(--vd-slider-thumb-size);
11414
+ border: 2px solid var(--vd-color-white);
11415
+ background-color: var(--vd-slider-thumb-bg);
11416
+ box-shadow: var(--vd-shadow-sm);
11417
+ border-radius: 50%;
11418
+ }
11419
+
11420
+ .vd-slider::-moz-range-track {
11421
+ height: var(--vd-slider-track-height);
11422
+ border-radius: calc(var(--vd-slider-track-height) / 2);
11423
+ background-color: var(--vd-slider-track-bg);
11424
+ }
11425
+
11426
+ @media (prefers-reduced-motion: reduce) {
11427
+ .vd-slider::-webkit-slider-thumb {
11428
+ transition: none;
11429
+ }
11430
+ }
11431
+
11145
11432
  .vd-expanding-cards {
11146
11433
  flex-direction: row;
11147
11434
  align-items: stretch;
@@ -13382,6 +13669,68 @@ a.vd-card:active {
13382
13669
  overflow: hidden;
13383
13670
  }
13384
13671
 
13672
+ .vd-modal.vd-modal-open {
13673
+ opacity: 1;
13674
+ justify-content: center;
13675
+ align-items: center;
13676
+ display: flex;
13677
+ }
13678
+
13679
+ .vd-modal-open .vd-modal-backdrop {
13680
+ opacity: 1;
13681
+ pointer-events: auto;
13682
+ }
13683
+
13684
+ .vd-modal-panel {
13685
+ width: min(calc(100% - 3.5rem), var(--vd-modal-dialog-max-width));
13686
+ max-width: var(--vd-modal-dialog-max-width);
13687
+ pointer-events: auto;
13688
+ background-color: var(--vd-modal-bg);
13689
+ border: 1px solid var(--vd-modal-border-color);
13690
+ border-radius: var(--vd-btn-border-radius-lg);
13691
+ box-shadow: var(--vd-shadow-2xl);
13692
+ transition: var(--vd-modal-dialog-transition);
13693
+ z-index: 1060;
13694
+ background-clip: padding-box;
13695
+ outline: 0;
13696
+ flex-direction: column;
13697
+ margin: 1.75rem auto;
13698
+ display: flex;
13699
+ position: relative;
13700
+ transform: scale(.95);
13701
+ }
13702
+
13703
+ .vd-modal.vd-modal-open .vd-modal-panel {
13704
+ transform: scale(1);
13705
+ }
13706
+
13707
+ .vd-modal-panel-sm {
13708
+ --vd-modal-dialog-max-width: var(--vd-modal-width-sm);
13709
+ }
13710
+
13711
+ .vd-modal-panel-md {
13712
+ --vd-modal-dialog-max-width: var(--vd-modal-width);
13713
+ }
13714
+
13715
+ .vd-modal-panel-lg {
13716
+ --vd-modal-dialog-max-width: var(--vd-modal-width-lg);
13717
+ }
13718
+
13719
+ .vd-modal-glass .vd-modal-panel {
13720
+ background: var(--vd-glass-bg-light);
13721
+ border-color: var(--vd-glass-border-light);
13722
+ box-shadow: var(--vd-glass-shadow);
13723
+ -webkit-backdrop-filter: blur(var(--vd-glass-blur)) saturate(var(--vd-glass-saturate));
13724
+ }
13725
+
13726
+ @media (width <= 575.98px) {
13727
+ .vd-modal-panel {
13728
+ width: calc(100% - 1rem);
13729
+ max-width: calc(100% - 1rem);
13730
+ margin: .5rem;
13731
+ }
13732
+ }
13733
+
13385
13734
  :root {
13386
13735
  --vd-badge-padding-y: .3em;
13387
13736
  --vd-badge-padding-x: .48em;
@@ -13454,7 +13803,7 @@ a.vd-card:active {
13454
13803
  color: var(--vd-color-gray-900);
13455
13804
  }
13456
13805
 
13457
- .vd-badge-error {
13806
+ .vd-badge-error, .vd-badge-danger {
13458
13807
  background-color: var(--vd-color-error);
13459
13808
  color: var(--vd-color-white);
13460
13809
  }
@@ -13807,6 +14156,21 @@ h1 .vd-badge, h2 .vd-badge, h3 .vd-badge, h4 .vd-badge, h5 .vd-badge, h6 .vd-bad
13807
14156
  }
13808
14157
  }
13809
14158
 
14159
+ .vd-collection-list {
14160
+ flex-direction: column;
14161
+ margin: 0;
14162
+ padding: 0;
14163
+ list-style: none;
14164
+ display: flex;
14165
+ }
14166
+
14167
+ .vd-collection-text-secondary {
14168
+ font-size: var(--vd-font-size-sm);
14169
+ color: var(--vd-text-secondary);
14170
+ margin-top: .125rem;
14171
+ display: block;
14172
+ }
14173
+
13810
14174
  :root {
13811
14175
  --vd-pagination-bg: var(--vd-color-white);
13812
14176
  --vd-pagination-border-color: var(--vd-border-color);
@@ -14365,6 +14729,31 @@ h1 .vd-badge, h2 .vd-badge, h3 .vd-badge, h4 .vd-badge, h5 .vd-badge, h6 .vd-bad
14365
14729
  }
14366
14730
  }
14367
14731
 
14732
+ .vd-preloader:has(.vd-preloader-spinner) {
14733
+ border: none;
14734
+ border-radius: 0;
14735
+ width: auto;
14736
+ height: auto;
14737
+ animation: none;
14738
+ display: inline-flex;
14739
+ }
14740
+
14741
+ .vd-preloader-spinner {
14742
+ width: var(--vd-spinner-size, 2rem);
14743
+ height: var(--vd-spinner-size, 2rem);
14744
+ border: var(--vd-spinner-border-width, 3px) solid var(--vd-border-color, #e9ecef);
14745
+ border-top-color: var(--vd-spinner-color, var(--vd-color-primary));
14746
+ animation: spinner-rotate var(--vd-spinner-speed, .65s) linear infinite;
14747
+ border-radius: 50%;
14748
+ display: inline-block;
14749
+ }
14750
+
14751
+ @media (prefers-reduced-motion: reduce) {
14752
+ .vd-preloader-spinner {
14753
+ animation-duration: 1.5s;
14754
+ }
14755
+ }
14756
+
14368
14757
  :root {
14369
14758
  --vd-alert-padding-x: 1.3125rem;
14370
14759
  --vd-alert-padding-y: .8125rem;
@@ -14445,6 +14834,22 @@ h1 .vd-badge, h2 .vd-badge, h3 .vd-badge, h4 .vd-badge, h5 .vd-badge, h6 .vd-bad
14445
14834
  color: var(--vd-alert-info-text);
14446
14835
  }
14447
14836
 
14837
+ .vd-alert-secondary {
14838
+ background-color: var(--vd-color-secondary-alpha-10);
14839
+ border-color: var(--vd-color-secondary);
14840
+ color: var(--vd-color-secondary-dark);
14841
+ }
14842
+
14843
+ [data-theme="dark"] .vd-alert-secondary {
14844
+ color: var(--vd-color-secondary-light);
14845
+ }
14846
+
14847
+ @media (prefers-color-scheme: dark) {
14848
+ :root:not([data-theme]) .vd-alert-secondary {
14849
+ color: var(--vd-color-secondary-light);
14850
+ }
14851
+ }
14852
+
14448
14853
  .vd-alert-icon {
14449
14854
  align-items: flex-start;
14450
14855
  gap: .75rem;
@@ -14560,6 +14965,48 @@ h1 .vd-badge, h2 .vd-badge, h3 .vd-badge, h4 .vd-badge, h5 .vd-badge, h6 .vd-bad
14560
14965
  }
14561
14966
  }
14562
14967
 
14968
+ .vd-alert:has(.vd-alert-body) {
14969
+ align-items: flex-start;
14970
+ gap: .75rem;
14971
+ display: flex;
14972
+ }
14973
+
14974
+ .vd-alert:has(.vd-alert-body) > .vd-alert-icon {
14975
+ flex-shrink: 0;
14976
+ }
14977
+
14978
+ .vd-alert-body {
14979
+ flex: auto;
14980
+ min-width: 0;
14981
+ }
14982
+
14983
+ .vd-alert-dismiss {
14984
+ cursor: pointer;
14985
+ opacity: .5;
14986
+ color: inherit;
14987
+ background: none;
14988
+ border: none;
14989
+ flex-shrink: 0;
14990
+ padding: 0;
14991
+ line-height: 1;
14992
+ transition: opacity .15s;
14993
+ }
14994
+
14995
+ .vd-alert-dismiss:hover {
14996
+ opacity: 1;
14997
+ }
14998
+
14999
+ .vd-alert-dismiss:focus-visible {
15000
+ outline-offset: 2px;
15001
+ outline: 2px solid;
15002
+ }
15003
+
15004
+ @media (prefers-reduced-motion: reduce) {
15005
+ .vd-alert-dismiss {
15006
+ transition: none;
15007
+ }
15008
+ }
15009
+
14563
15010
  :root {
14564
15011
  --vd-chip-padding-x: .8125rem;
14565
15012
  --vd-chip-padding-y: .3125rem;
@@ -14807,7 +15254,7 @@ h1 .vd-badge, h2 .vd-badge, h3 .vd-badge, h4 .vd-badge, h5 .vd-badge, h6 .vd-bad
14807
15254
  overflow: hidden;
14808
15255
  }
14809
15256
 
14810
- .vd-avatar img {
15257
+ .vd-avatar img, .vd-avatar-img {
14811
15258
  object-fit: cover;
14812
15259
  border-radius: inherit;
14813
15260
  width: 100%;
@@ -15301,6 +15748,52 @@ a.vd-avatar:focus-visible, button.vd-avatar:focus-visible {
15301
15748
  }
15302
15749
  }
15303
15750
 
15751
+ .vd-skeleton-lines {
15752
+ flex-direction: column;
15753
+ gap: .5rem;
15754
+ display: flex;
15755
+ }
15756
+
15757
+ .vd-skeleton-lines .vd-skeleton-text {
15758
+ margin-bottom: 0;
15759
+ }
15760
+
15761
+ .vd-skeleton-text-short {
15762
+ width: 60%;
15763
+ }
15764
+
15765
+ .vd-skeleton-card-header {
15766
+ width: 100%;
15767
+ height: 8rem;
15768
+ margin-bottom: .8125rem;
15769
+ }
15770
+
15771
+ .vd-skeleton-card-body {
15772
+ flex-direction: column;
15773
+ gap: .5rem;
15774
+ display: flex;
15775
+ }
15776
+
15777
+ .vd-skeleton-card-body .vd-skeleton-text {
15778
+ margin-bottom: 0;
15779
+ }
15780
+
15781
+ .vd-skeleton-card-sm .vd-skeleton-card-header {
15782
+ height: 5rem;
15783
+ }
15784
+
15785
+ .vd-skeleton-card-md .vd-skeleton-card-header {
15786
+ height: 8rem;
15787
+ }
15788
+
15789
+ .vd-skeleton-card-lg .vd-skeleton-card-header {
15790
+ height: 12rem;
15791
+ }
15792
+
15793
+ .vd-skeleton-card-xl .vd-skeleton-card-header {
15794
+ height: 16rem;
15795
+ }
15796
+
15304
15797
  :root {
15305
15798
  --vd-tab-padding-x: 1.3125rem;
15306
15799
  --vd-tab-padding-y: .8125rem;
@@ -15591,6 +16084,47 @@ a.vd-avatar:focus-visible, button.vd-avatar:focus-visible {
15591
16084
  }
15592
16085
  }
15593
16086
 
16087
+ .vd-tab {
16088
+ padding: var(--vd-tab-padding-y) var(--vd-tab-padding-x);
16089
+ font-size: var(--vd-font-size-base);
16090
+ font-weight: var(--vd-font-weight-medium);
16091
+ color: var(--vd-tab-text);
16092
+ border: none;
16093
+ border-bottom: var(--vd-tab-border-width) solid transparent;
16094
+ cursor: pointer;
16095
+ white-space: nowrap;
16096
+ background: none;
16097
+ align-items: center;
16098
+ gap: .5rem;
16099
+ transition: color .15s, border-color .15s, background-color .15s;
16100
+ display: inline-flex;
16101
+ }
16102
+
16103
+ .vd-tab:hover {
16104
+ color: var(--vd-tab-text-hover);
16105
+ background-color: var(--vd-tab-bg-hover);
16106
+ }
16107
+
16108
+ .vd-tab:focus-visible {
16109
+ outline: 2px solid var(--vd-color-primary);
16110
+ outline-offset: -2px;
16111
+ }
16112
+
16113
+ .vd-tab.is-active {
16114
+ color: var(--vd-tab-text-active);
16115
+ border-bottom-color: var(--vd-tab-border-active);
16116
+ }
16117
+
16118
+ .vd-tab-panels {
16119
+ padding-top: 1rem;
16120
+ }
16121
+
16122
+ @media (prefers-reduced-motion: reduce) {
16123
+ .vd-tab {
16124
+ transition: none;
16125
+ }
16126
+ }
16127
+
15594
16128
  :root {
15595
16129
  --vd-toast-width: 377px;
15596
16130
  --vd-toast-max-width: 90vw;
@@ -16418,6 +16952,25 @@ a.vd-avatar:focus-visible, button.vd-avatar:focus-visible {
16418
16952
  }
16419
16953
  }
16420
16954
 
16955
+ .vd-code-snippet-pre {
16956
+ padding: var(--vd-code-padding-y) var(--vd-code-padding-x);
16957
+ -webkit-overflow-scrolling: touch;
16958
+ background-color: var(--vd-code-bg);
16959
+ font-family: var(--vd-font-family-mono, "JetBrains Mono", "Fira Code", "Consolas", monospace);
16960
+ font-size: var(--vd-code-font-size);
16961
+ line-height: var(--vd-code-line-height);
16962
+ color: var(--vd-code-text);
16963
+ margin: 0;
16964
+ overflow-x: auto;
16965
+ }
16966
+
16967
+ .vd-code-snippet-pre code {
16968
+ font: inherit;
16969
+ color: inherit;
16970
+ white-space: pre;
16971
+ tab-size: 2;
16972
+ }
16973
+
16421
16974
  :root {
16422
16975
  --vd-progress-height: 8px;
16423
16976
  --vd-progress-bg: var(--vd-bg-tertiary, #e9ecef);
@@ -16533,6 +17086,45 @@ a.vd-avatar:focus-visible, button.vd-avatar:focus-visible {
16533
17086
  }
16534
17087
  }
16535
17088
 
17089
+ .vd-progress:has(.vd-progress-track) {
17090
+ background-color: #0000;
17091
+ height: auto;
17092
+ display: block;
17093
+ overflow: visible;
17094
+ }
17095
+
17096
+ .vd-progress-track {
17097
+ height: var(--vd-progress-height);
17098
+ background-color: var(--vd-progress-bg);
17099
+ border-radius: var(--vd-progress-border-radius);
17100
+ display: flex;
17101
+ overflow: hidden;
17102
+ }
17103
+
17104
+ .vd-progress-fill {
17105
+ background-color: var(--vd-progress-bar-bg);
17106
+ border-radius: var(--vd-progress-border-radius);
17107
+ height: 100%;
17108
+ transition: width .4s;
17109
+ display: block;
17110
+ }
17111
+
17112
+ .vd-progress.is-indeterminate .vd-progress-fill {
17113
+ width: 30%;
17114
+ animation: 1.5s ease-in-out infinite progress-indeterminate;
17115
+ }
17116
+
17117
+ .vd-progress-label {
17118
+ margin-top: .375rem;
17119
+ display: block;
17120
+ }
17121
+
17122
+ @media (prefers-reduced-motion: reduce) {
17123
+ .vd-progress.is-indeterminate .vd-progress-fill {
17124
+ animation: none;
17125
+ }
17126
+ }
17127
+
16536
17128
  :root {
16537
17129
  --vd-spinner-size: 2rem;
16538
17130
  --vd-spinner-border-width: 3px;
@@ -18854,6 +19446,21 @@ input.vd-doc-search-input {
18854
19446
  }
18855
19447
  }
18856
19448
 
19449
+ .vd-flow-controls {
19450
+ justify-content: center;
19451
+ align-items: center;
19452
+ gap: .75rem;
19453
+ margin-top: .8125rem;
19454
+ display: flex;
19455
+ }
19456
+
19457
+ .vd-flow-position {
19458
+ min-width: 4ch;
19459
+ font-size: var(--vd-font-size-sm);
19460
+ color: var(--vd-text-secondary);
19461
+ text-align: center;
19462
+ }
19463
+
18857
19464
  :root {
18858
19465
  --vd-bubble-bg: var(--vd-card-bg, #fff);
18859
19466
  --vd-bubble-text: var(--vd-text-primary, #212529);