@quidgest/ui 0.22.0 → 0.23.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.
Files changed (156) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/json/api.json +197 -85
  3. package/dist/ui.css +2054 -1250
  4. package/dist/ui.esm.js +770 -751
  5. package/dist/ui.js +701 -682
  6. package/dist/ui.min.css +1 -1
  7. package/dist/ui.min.js +701 -682
  8. package/dist/ui.scss +1048 -881
  9. package/esm/components/QBadge/QBadge.d.ts +1 -1
  10. package/esm/components/QBadge/QBadge.d.ts.map +1 -1
  11. package/esm/components/QBadge/QBadge.vue.js +14 -7
  12. package/esm/components/QBadge/index.d.ts +3 -3
  13. package/esm/components/QBadge/types.d.ts +11 -4
  14. package/esm/components/QBadge/types.d.ts.map +1 -1
  15. package/esm/components/QButton/QButton.d.ts +0 -1
  16. package/esm/components/QButton/QButton.d.ts.map +1 -1
  17. package/esm/components/QButton/QButton.vue.js +10 -4
  18. package/esm/components/QButton/index.d.ts +0 -3
  19. package/esm/components/QButton/index.d.ts.map +1 -1
  20. package/esm/components/QButton/types.d.ts +11 -4
  21. package/esm/components/QButton/types.d.ts.map +1 -1
  22. package/esm/components/QButtonGroup/QButtonGroup.d.ts.map +1 -1
  23. package/esm/components/QButtonGroup/QButtonGroup.vue.js +2 -0
  24. package/esm/components/QButtonGroup/types.d.ts +9 -1
  25. package/esm/components/QButtonGroup/types.d.ts.map +1 -1
  26. package/esm/components/QCheckbox/QCheckbox.d.ts +0 -1
  27. package/esm/components/QCheckbox/QCheckbox.d.ts.map +1 -1
  28. package/esm/components/QCheckbox/QCheckbox.vue.js +2 -2
  29. package/esm/components/QCheckbox/index.d.ts +3 -6
  30. package/esm/components/QCheckbox/index.d.ts.map +1 -1
  31. package/esm/components/QCheckbox/types.d.ts +4 -3
  32. package/esm/components/QCheckbox/types.d.ts.map +1 -1
  33. package/esm/components/QCollapsible/types.d.ts +1 -1
  34. package/esm/components/QCollapsible/types.d.ts.map +1 -1
  35. package/esm/components/QCombobox/QCombobox.d.ts +6 -8
  36. package/esm/components/QCombobox/QCombobox.d.ts.map +1 -1
  37. package/esm/components/QCombobox/QCombobox.vue.js +1 -1
  38. package/esm/components/QCombobox/index.d.ts +3 -4
  39. package/esm/components/QCombobox/index.d.ts.map +1 -1
  40. package/esm/components/QDateTimePicker/QDateTimePicker.d.ts +18 -24
  41. package/esm/components/QDateTimePicker/QDateTimePicker.d.ts.map +1 -1
  42. package/esm/components/QDateTimePicker/index.d.ts +9 -12
  43. package/esm/components/QDateTimePicker/index.d.ts.map +1 -1
  44. package/esm/components/QDialog/QDialog.d.ts.map +1 -1
  45. package/esm/components/QDialog/QDialog.vue.js +6 -1
  46. package/esm/components/QDialog/QDialogProvider.d.ts.map +1 -1
  47. package/esm/components/QDialog/QDialogProvider.vue.js +1 -0
  48. package/esm/components/QDialog/index.d.ts +3 -0
  49. package/esm/components/QDialog/index.d.ts.map +1 -1
  50. package/esm/components/QDialog/types.d.ts +14 -0
  51. package/esm/components/QDialog/types.d.ts.map +1 -1
  52. package/esm/components/QDropdownMenu/types.d.ts +1 -1
  53. package/esm/components/QDropdownMenu/types.d.ts.map +1 -1
  54. package/esm/components/QIcon/QIcon.d.ts.map +1 -1
  55. package/esm/components/QIcon/QIcon.vue.js +9 -4
  56. package/esm/components/QList/QListItem.d.ts.map +1 -1
  57. package/esm/components/QList/QListItem.vue.js +1 -0
  58. package/esm/components/QObfuscation/QObfuscation.d.ts.map +1 -1
  59. package/esm/components/QObfuscation/QObfuscation.vue.js +0 -1
  60. package/esm/components/QOverflow/QOverflow.d.ts +21 -1
  61. package/esm/components/QOverflow/QOverflow.d.ts.map +1 -1
  62. package/esm/components/QOverflow/QOverflow.vue.js +109 -96
  63. package/esm/components/QOverflow/index.d.ts +12 -3
  64. package/esm/components/QOverflow/index.d.ts.map +1 -1
  65. package/esm/components/QOverflow/types.d.ts +11 -2
  66. package/esm/components/QOverflow/types.d.ts.map +1 -1
  67. package/esm/components/QOverlay/QOverlay.d.ts +0 -1
  68. package/esm/components/QOverlay/QOverlay.d.ts.map +1 -1
  69. package/esm/components/QOverlay/QOverlay.vue.js +90 -90
  70. package/esm/components/QOverlay/index.d.ts +0 -3
  71. package/esm/components/QOverlay/index.d.ts.map +1 -1
  72. package/esm/components/QOverlay/types.d.ts +5 -3
  73. package/esm/components/QOverlay/types.d.ts.map +1 -1
  74. package/esm/components/QPhoneField/QPhoneField.d.ts +20 -16
  75. package/esm/components/QPhoneField/QPhoneField.d.ts.map +1 -1
  76. package/esm/components/QPhoneField/index.d.ts +10 -8
  77. package/esm/components/QPhoneField/index.d.ts.map +1 -1
  78. package/esm/components/QPopover/types.d.ts +1 -1
  79. package/esm/components/QPopover/types.d.ts.map +1 -1
  80. package/esm/components/QProgress/QProgress.vue.js +29 -33
  81. package/esm/components/QRadioGroup/QRadioButton.d.ts +0 -1
  82. package/esm/components/QRadioGroup/QRadioButton.d.ts.map +1 -1
  83. package/esm/components/QRadioGroup/QRadioButton.vue.js +2 -2
  84. package/esm/components/QRadioGroup/QRadioGroup.d.ts +1 -1
  85. package/esm/components/QRadioGroup/QRadioGroup.d.ts.map +1 -1
  86. package/esm/components/QRadioGroup/QRadioGroup.vue.js +55 -46
  87. package/esm/components/QRadioGroup/index.d.ts +9 -36
  88. package/esm/components/QRadioGroup/index.d.ts.map +1 -1
  89. package/esm/components/QRadioGroup/types.d.ts +15 -24
  90. package/esm/components/QRadioGroup/types.d.ts.map +1 -1
  91. package/esm/components/QRemoveScrollBar/constants.d.ts +1 -1
  92. package/esm/components/QRemoveScrollBar/constants.d.ts.map +1 -1
  93. package/esm/components/QRemoveScrollBar/constants.js +1 -1
  94. package/esm/components/QSelect/QSelect.d.ts +20 -16
  95. package/esm/components/QSelect/QSelect.d.ts.map +1 -1
  96. package/esm/components/QSelect/QSelect.vue.js +9 -1
  97. package/esm/components/QSelect/index.d.ts +10 -8
  98. package/esm/components/QSelect/index.d.ts.map +1 -1
  99. package/esm/components/QSidebar/QSidebar.d.ts +0 -1
  100. package/esm/components/QSidebar/QSidebar.d.ts.map +1 -1
  101. package/esm/components/QSidebar/QSidebar.vue.js +2 -2
  102. package/esm/components/QSidebar/QSidebarAnchor.d.ts +2 -1
  103. package/esm/components/QSidebar/QSidebarAnchor.d.ts.map +1 -1
  104. package/esm/components/QSidebar/QSidebarAnchor.vue.js +1 -1
  105. package/esm/components/QSidebar/QSidebarItem.d.ts +12 -6
  106. package/esm/components/QSidebar/QSidebarItem.d.ts.map +1 -1
  107. package/esm/components/QSidebar/QSidebarItem.vue.js +1 -1
  108. package/esm/components/QSidebar/index.d.ts +6 -6
  109. package/esm/components/QSidebar/index.d.ts.map +1 -1
  110. package/esm/components/QSidebar/types.d.ts +3 -1
  111. package/esm/components/QSidebar/types.d.ts.map +1 -1
  112. package/esm/components/QSwitch/QSwitch.d.ts +3 -2
  113. package/esm/components/QSwitch/QSwitch.d.ts.map +1 -1
  114. package/esm/components/QSwitch/QSwitch.vue.js +34 -26
  115. package/esm/components/QSwitch/index.d.ts +5 -4
  116. package/esm/components/QSwitch/index.d.ts.map +1 -1
  117. package/esm/components/QSwitch/types.d.ts +4 -2
  118. package/esm/components/QSwitch/types.d.ts.map +1 -1
  119. package/esm/components/QTabs/QTab.d.ts +6 -8
  120. package/esm/components/QTabs/QTab.d.ts.map +1 -1
  121. package/esm/components/QTabs/QTabs.d.ts +177 -2
  122. package/esm/components/QTabs/QTabs.d.ts.map +1 -1
  123. package/esm/components/QTabs/QTabs.vue.js +127 -106
  124. package/esm/components/QTabs/context.d.ts +2 -1
  125. package/esm/components/QTabs/context.d.ts.map +1 -1
  126. package/esm/components/QTabs/index.d.ts +91 -5
  127. package/esm/components/QTabs/index.d.ts.map +1 -1
  128. package/esm/components/QToggle/QToggle.vue.js +2 -1
  129. package/esm/components/QToggle/index.d.ts +6 -3
  130. package/esm/components/QToggle/index.d.ts.map +1 -1
  131. package/esm/components/QToggleGroup/QToggleGroup.vue.js +1 -0
  132. package/esm/components/QToggleGroup/QToggleGroupItem.vue.js +1 -0
  133. package/esm/components/QToggleGroup/index.d.ts +3 -0
  134. package/esm/components/QToggleGroup/index.d.ts.map +1 -1
  135. package/esm/components/QTooltip/types.d.ts +1 -1
  136. package/esm/components/QTooltip/types.d.ts.map +1 -1
  137. package/esm/components/__internal__/QClearButton/QClearButton.vue.js +1 -1
  138. package/esm/composables/useSafeTriangle/index.d.ts +1 -1
  139. package/esm/composables/useSafeTriangle/index.d.ts.map +1 -1
  140. package/esm/templates/theme.js +11 -11
  141. package/esm/types/component.d.ts +7 -0
  142. package/esm/types/component.d.ts.map +1 -1
  143. package/esm/utils/color/theme-colors.d.ts +5 -5
  144. package/esm/utils/density.d.ts +12 -0
  145. package/esm/utils/density.d.ts.map +1 -0
  146. package/esm/utils/density.js +23 -0
  147. package/esm/utils/index.d.ts +1 -0
  148. package/esm/utils/index.d.ts.map +1 -1
  149. package/esm/utils/index.js +6 -2
  150. package/esm/{composables → utils}/overlay.d.ts +12 -0
  151. package/esm/utils/overlay.d.ts.map +1 -0
  152. package/esm/{composables → utils}/overlay.js +10 -2
  153. package/esm/utils/safeTriangle.d.ts +1 -1
  154. package/esm/utils/safeTriangle.d.ts.map +1 -1
  155. package/package.json +1 -1
  156. package/esm/composables/overlay.d.ts.map +0 -1
package/dist/ui.scss CHANGED
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * Quidgest UI v0.22.0
2
+ * Quidgest UI v0.23.1
3
3
  * (c) 2026 Quidgest - Consultores de Gestão, S.A.
4
4
  * Released under the MIT License.
5
5
  */
6
- @use 'sass:math';
6
+ @use 'sass:math' as math;
7
7
  @use 'sass:map';
8
8
 
9
9
  [class*=' flag:'],[class^='flag:'] {display:inline-block;background-size:cover;height:1em;width:1.5em;--CountryFlagIcon-height:1em;height:var(--CountryFlagIcon-height);width:calc(var(--CountryFlagIcon-height)*3/2);}
@@ -373,182 +373,169 @@ summary {
373
373
  [type='color']::-moz-color-swatch {
374
374
  border: 0;
375
375
  }
376
- $primary: var(--q-theme-primary);
377
- $primary-rgb: var(--q-theme-primary-rgb);
378
- $primary-light: var(--q-theme-primary-light);
379
- $primary-light-rgb: var(--q-theme-primary-light-rgb);
380
- $primary-dark: var(--q-theme-primary-dark);
381
- $primary-dark-rgb: var(--q-theme-primary-dark-rgb);
382
- $on-primary: var(--q-theme-on-primary);
383
- $on-primary-rgb: var(--q-theme-on-primary-rgb);
384
- $secondary: var(--q-theme-secondary);
385
- $secondary-rgb: var(--q-theme-secondary-rgb);
386
- $on-secondary: var(--q-theme-on-secondary);
387
- $on-secondary-rgb: var(--q-theme-on-secondary-rgb);
388
- $highlight: var(--q-theme-highlight);
389
- $highlight-rgb: var(--q-theme-highlight-rgb);
390
- $on-highlight: var(--q-theme-on-highlight);
391
- $on-highlight-rgb: var(--q-theme-on-highlight-rgb);
392
- $background: var(--q-theme-background);
393
- $background-rgb: var(--q-theme-background-rgb);
394
- $on-background: var(--q-theme-on-background);
395
- $on-background-rgb: var(--q-theme-on-background-rgb);
396
- $container: var(--q-theme-container);
397
- $container-rgb: var(--q-theme-container-rgb);
398
- $info: var(--q-theme-info);
399
- $info-rgb: var(--q-theme-info-rgb);
400
- $info-light: var(--q-theme-info-light);
401
- $info-light-rgb: var(--q-theme-info-light-rgb);
402
- $info-dark: var(--q-theme-info-dark);
403
- $info-dark-rgb: var(--q-theme-info-dark-rgb);
404
- $on-info: var(--q-theme-on-info);
405
- $on-info-rgb: var(--q-theme-on-info-rgb);
406
- $success: var(--q-theme-success);
407
- $success-rgb: var(--q-theme-success-rgb);
408
- $success-light: var(--q-theme-success-light);
409
- $success-light-rgb: var(--q-theme-success-light-rgb);
410
- $success-dark: var(--q-theme-success-dark);
411
- $success-dark-rgb: var(--q-theme-success-dark-rgb);
412
- $on-success: var(--q-theme-on-success);
413
- $on-success-rgb: var(--q-theme-on-success-rgb);
414
- $warning: var(--q-theme-warning);
415
- $warning-rgb: var(--q-theme-warning-rgb);
416
- $warning-light: var(--q-theme-warning-light);
417
- $warning-light-rgb: var(--q-theme-warning-light-rgb);
418
- $warning-dark: var(--q-theme-warning-dark);
419
- $warning-dark-rgb: var(--q-theme-warning-dark-rgb);
420
- $on-warning: var(--q-theme-on-warning);
421
- $on-warning-rgb: var(--q-theme-on-warning-rgb);
422
- $danger: var(--q-theme-danger);
423
- $danger-rgb: var(--q-theme-danger-rgb);
424
- $danger-light: var(--q-theme-danger-light);
425
- $danger-light-rgb: var(--q-theme-danger-light-rgb);
426
- $danger-dark: var(--q-theme-danger-dark);
427
- $danger-dark-rgb: var(--q-theme-danger-dark-rgb);
428
- $on-danger: var(--q-theme-on-danger);
429
- $on-danger-rgb: var(--q-theme-on-danger-rgb);
430
- $neutral: var(--q-theme-neutral);
431
- $neutral-rgb: var(--q-theme-neutral-rgb);
432
- $neutral-light: var(--q-theme-neutral-light);
433
- $neutral-light-rgb: var(--q-theme-neutral-light-rgb);
434
- $neutral-dark: var(--q-theme-neutral-dark);
435
- $neutral-dark-rgb: var(--q-theme-neutral-dark-rgb);
436
- $theme-colors: (
437
- 'primary': $primary,
438
- 'secondary': $secondary,
439
- 'highlight': $highlight,
440
- 'info': $info,
441
- 'success': $success,
442
- 'warning': $warning,
443
- 'danger': $danger,
444
- 'neutral': $neutral
445
- );
446
- $border-radius: 0.25rem !default;
447
- $compact: true !default;
448
- $space-base: 0.25rem !default;
449
- $space-x-base: $space-base !default;
450
- $space-y-base: $space-base !default;
451
- $space-none: (
452
- x: 0,
453
- y: 0
454
- ) !default;
455
- $space-xs: (
456
- x: (
457
- $space-x-base * 0.25
458
- ),
459
- y: (
460
- $space-y-base * 0.25
461
- )
462
- ) !default;
463
- $space-sm: (
464
- x: (
465
- $space-x-base * 0.5
466
- ),
467
- y: (
468
- $space-y-base * 0.5
469
- )
470
- ) !default;
471
- $space-md: (
472
- x: $space-x-base,
473
- y: $space-y-base
474
- ) !default;
475
- $space-lg: (
476
- x: (
477
- $space-x-base * 1.5
478
- ),
479
- y: (
480
- $space-y-base * 1.5
481
- )
376
+ $q-control-height-compact-md: 25px !default;
377
+ $q-control-height-regular-md: 32px !default;
378
+ $q-control-height-loose-md: 44px !default;
379
+ $q-density-scale-compact: math.div(
380
+ $q-control-height-compact-md,
381
+ $q-control-height-regular-md
482
382
  ) !default;
483
- $space-xl: (
484
- x: (
485
- $space-x-base * 3
486
- ),
487
- y: (
488
- $space-y-base * 3
489
- )
383
+ $q-density-scale-regular: math.div(
384
+ $q-control-height-regular-md,
385
+ $q-control-height-regular-md
490
386
  ) !default;
491
- $spaces: (
492
- 'none': $space-none,
493
- 'xs': $space-xs,
494
- 'sm': $space-sm,
495
- 'md': $space-md,
496
- 'lg': $space-lg,
497
- 'xl': $space-xl
498
- ) !default;
499
- $shadow-sm: (0 0 #0000, 0 0 #0000, 0 1px 2px 0 rgb(0 0 0 / 5%));
500
- $shadow-md: (
501
- 0 0 #0000,
502
- 0 0 #0000,
503
- 0 4px 6px -1px rgb(0 0 0 / 10%),
504
- 0 2px 4px -2px rgb(0 0 0 / 10%)
505
- );
506
- $overlay-z-index: 1070 !default;
387
+ $q-density-scale-loose: math.div($q-control-height-loose-md, $q-control-height-regular-md) !default;
507
388
  $breakpoint-sm: 576px;
508
389
  $breakpoint-md: 768px;
509
390
  $breakpoint-lg: 992px;
510
391
  $breakpoint-xl: 1200px;
511
392
  $breakpoint-xxl: 1400px;
512
- $font-size-base: 0.9rem !default;
513
- $line-height-base: 1.5 !default;
514
- $icon-size: 1.15em !default;
515
- $icon-size-sm: $icon-size * 0.87 !default;
516
- $selection-control-size: 1.15rem !default;
517
- $font-weight-thin: 100;
518
- $font-weight-light: 300;
519
- $font-weight-regular: 400;
520
- $font-weight-italic: 400;
521
- $font-weight-bold: 700;
522
- $font-weight-black: 900;
523
- $border: var(--q-theme-neutral-light) !default;
524
- $outline-width: 2px !default;
525
- $outline-style: solid !default;
526
- $outline-color: rgb(var(--q-theme-info-rgb) / 50%) !default;
527
- $outline: $outline-width $outline-style $outline-color;
528
- $scrollbar-thumb: var(--q-theme-neutral-light);
529
- $scrollbar-track: rgb(var(--q-theme-neutral-light-rgb) / 25%);
530
- $headings-text-transform: uppercase !default;
531
- $group-border-bottom: 1px solid $border !default;
532
- $input-padding-y: 0.26rem !default;
533
- $input-padding-x: 0.25rem !default;
393
+ @mixin q-sr-only {
394
+ position: absolute;
395
+ width: 1px;
396
+ height: 1px;
397
+ padding: 0;
398
+ margin: -1px;
399
+ overflow: hidden;
400
+ clip-path: inset(50%);
401
+ white-space: nowrap;
402
+ border: 0;
403
+ }
404
+ @mixin q-density-scoped-tokens {
405
+ --q-space-1: calc(4px * var(--q-density-scale));
406
+ --q-space-2: calc(8px * var(--q-density-scale));
407
+ --q-space-3: calc(12px * var(--q-density-scale));
408
+ --q-space-4: calc(16px * var(--q-density-scale));
409
+ --q-space-5: calc(20px * var(--q-density-scale));
410
+ --q-space-6: calc(24px * var(--q-density-scale));
411
+ --q-control-height-sm: calc(28px * var(--q-density-scale));
412
+ --q-control-height-md: calc(#{$q-control-height-regular-md} * var(--q-density-scale));
413
+ --q-control-height-lg: calc(40px * var(--q-density-scale));
414
+ --q-interactive-height: var(--q-control-height-md);
415
+ --q-control-padding-x-sm: calc(8px * var(--q-density-scale));
416
+ --q-control-padding-x-md: calc(10px * var(--q-density-scale));
417
+ --q-control-padding-x-lg: calc(12px * var(--q-density-scale));
418
+ --q-control-padding-y-sm: calc(4px * var(--q-density-scale));
419
+ --q-control-padding-y-md: calc(6px * var(--q-density-scale));
420
+ --q-control-padding-y-lg: calc(8px * var(--q-density-scale));
421
+ --q-font-size-sm: calc(0.75rem * var(--q-density-scale));
422
+ --q-font-size-md: calc(0.875rem * var(--q-density-scale));
423
+ --q-font-size-lg: calc(1rem * var(--q-density-scale));
424
+ --q-line-height-sm: calc(1rem * var(--q-density-scale));
425
+ --q-line-height-md: calc(1.25rem * var(--q-density-scale));
426
+ --q-line-height-lg: calc(1.5rem * var(--q-density-scale));
427
+ --q-letter-spacing-sm: calc(0.0063rem * var(--q-density-scale));
428
+ --q-letter-spacing-md: calc(0.0125rem * var(--q-density-scale));
429
+ --q-letter-spacing-lg: calc(0.0187rem * var(--q-density-scale));
430
+ --q-selection-control-size: calc(var(--q-selection-control-size-base) * var(--q-density-scale));
431
+ --q-field-padding-y: calc(var(--q-field-padding-y-base) * var(--q-density-scale));
432
+ --q-field-padding-x: calc(var(--q-field-padding-x-base) * var(--q-density-scale));
433
+ --q-icon-size-sm: calc(14px * var(--q-density-scale));
434
+ --q-icon-size-md: calc(16px * var(--q-density-scale));
435
+ --q-icon-size-lg: calc(20px * var(--q-density-scale));
436
+ --q-icon-padding: calc(4px * var(--q-density-scale));
437
+ --q-border-radius: calc(4px * var(--q-density-scale));
438
+
439
+ --q-border-width: 1px;
440
+ --q-focus-ring-width: 2px;
441
+ --q-focus-ring-offset: 1px;
442
+ --q-focus-ring-radius: var(--q-border-radius);
443
+ --q-focus-ring-color: rgb(var(--q-theme-info-rgb) / 50%);
444
+ --q-focus-ring: var(--q-focus-ring-width) solid var(--q-focus-ring-color);
445
+
446
+ --q-shadow-sm: 0 calc(1px * var(--q-density-scale)) calc(2px * var(--q-density-scale)) 0
447
+ rgb(0 0 0 / 5%);
448
+
449
+ --q-shadow-md:
450
+ 0 calc(4px * var(--q-density-scale)) calc(6px * var(--q-density-scale))
451
+ calc(-1px * var(--q-density-scale)) rgb(0 0 0 / 10%),
452
+ 0 calc(2px * var(--q-density-scale)) calc(4px * var(--q-density-scale))
453
+ calc(-2px * var(--q-density-scale)) rgb(0 0 0 / 10%);
454
+
455
+ --q-shadow-lg: 0 calc(8px * var(--q-density-scale)) calc(12px * var(--q-density-scale))
456
+ rgb(var(--q-theme-neutral-dark-rgb) / 25%);
457
+ }
458
+ @mixin q-size-modifiers {
459
+ &--small {
460
+ --q-density-scale: calc(var(--q-density-scale-base) * 0.8);
461
+ @include q-density-scoped-tokens;
462
+ }
463
+ &--large {
464
+ --q-density-scale: calc(var(--q-density-scale-base) * 1.2);
465
+ @include q-density-scoped-tokens;
466
+ }
467
+ }
468
+ @mixin q-field-affix-button {
469
+ --q-button-height: calc(var(--q-interactive-height) * 0.6);
470
+ height: var(--q-button-height);
471
+ min-height: var(--q-button-height);
472
+ padding: calc(var(--q-control-padding-y-sm) * 0.25) calc(var(--q-control-padding-x-sm) * 0.25);
473
+ opacity: 0.5;
474
+ svg {
475
+ width: var(--q-icon-size-sm);
476
+ height: var(--q-icon-size-sm);
477
+ }
478
+ &:hover {
479
+ cursor: inherit;
480
+ }
481
+ }
534
482
  :root {
535
- --border-radius: #{$border-radius};
483
+ --q-density: regular;
484
+
485
+ --q-density-scale-base: #{$q-density-scale-regular};
486
+ --q-density-scale: var(--q-density-scale-base);
487
+
488
+ --q-font-size-base: 0.9rem;
489
+ --q-font-weight-regular: 400;
490
+ --q-font-weight-bold: 700;
491
+ --q-font-weight-black: 900;
492
+ --q-overlay-z-index: 1070;
493
+ --q-border-color: var(--q-theme-neutral-light);
494
+ --q-scrollbar-thumb: var(--q-theme-neutral-light);
495
+ --q-scrollbar-track: rgb(var(--q-theme-neutral-light-rgb) / 25%);
496
+ --q-headings-text-transform: uppercase;
497
+ --q-group-border-bottom: var(--q-border-width) solid var(--q-border-color);
498
+ --q-transition-duration: 0.2s;
499
+ --q-transition-timing-function: ease;
500
+
501
+ --q-field-padding-y-base: 0.26rem;
502
+ --q-field-padding-x-base: 0.25rem;
503
+ --q-selection-control-size-base: 1.15rem;
504
+ @include q-density-scoped-tokens;
505
+ }
506
+ [data-q-density='compact'],
507
+ .q-density--compact {
508
+ --q-density: compact;
509
+ --q-density-scale-base: #{$q-density-scale-compact};
510
+ --q-density-scale: var(--q-density-scale-base);
511
+ }
512
+ [data-q-density='regular'],
513
+ .q-density--regular {
514
+ --q-density: regular;
515
+ --q-density-scale-base: #{$q-density-scale-regular};
516
+ --q-density-scale: var(--q-density-scale-base);
517
+ }
518
+ [data-q-density='loose'],
519
+ .q-density--loose {
520
+ --q-density: loose;
521
+ --q-density-scale-base: #{$q-density-scale-loose};
522
+ --q-density-scale: var(--q-density-scale-base);
536
523
  }
537
524
  *,
538
525
  ::after,
539
526
  ::before {
540
- border: 0 solid $border;
541
- outline-offset: 1px;
527
+ border: 0 solid var(--q-border-color);
528
+ outline-offset: var(--q-focus-ring-offset);
542
529
  }
543
530
  body {
544
531
  background-color: var(--q-theme-background);
545
- font-size: $font-size-base;
532
+ font-size: var(--q-font-size-base);
546
533
  color: var(--q-theme-on-background);
547
534
  caret-color: var(--q-theme-on-background);
548
535
 
549
536
  * {
550
537
 
551
- scrollbar-color: $scrollbar-thumb $scrollbar-track;
538
+ scrollbar-color: var(--q-scrollbar-thumb) var(--q-scrollbar-track);
552
539
  scrollbar-width: thin;
553
540
 
554
541
  &::-webkit-scrollbar {
@@ -556,16 +543,15 @@ body {
556
543
  height: 7px;
557
544
  }
558
545
  &::-webkit-scrollbar-thumb {
559
- background-color: $scrollbar-thumb;
560
- border-radius: var(--border-radius);
546
+ background-color: var(--q-scrollbar-thumb);
547
+ border-radius: var(--q-border-radius);
561
548
  }
562
549
  &::-webkit-scrollbar-track {
563
- background-color: $scrollbar-track;
564
- border-radius: var(--border-radius);
550
+ background-color: var(--q-scrollbar-track);
551
+ border-radius: var(--q-border-radius);
565
552
  }
566
553
  }
567
554
  }
568
- $transition-duration: 0.2s !default;
569
555
  .fade-enter-from,
570
556
  .fade-leave-to {
571
557
  opacity: 0;
@@ -576,7 +562,7 @@ $transition-duration: 0.2s !default;
576
562
  }
577
563
  .fade-enter-active,
578
564
  .fade-leave-active {
579
- transition: opacity $transition-duration;
565
+ transition: opacity var(--q-transition-duration);
580
566
  }
581
567
  .scale-enter-from,
582
568
  .scale-leave-to {
@@ -591,8 +577,8 @@ $transition-duration: 0.2s !default;
591
577
  .scale-enter-active,
592
578
  .scale-leave-active {
593
579
  transition:
594
- transform $transition-duration ease,
595
- opacity $transition-duration ease;
580
+ transform var(--q-transition-duration) var(--q-transition-timing-function),
581
+ opacity var(--q-transition-duration) var(--q-transition-timing-function);
596
582
  }
597
583
  .slide-up-enter-from,
598
584
  .slide-up-leave-to {
@@ -607,8 +593,8 @@ $transition-duration: 0.2s !default;
607
593
  .slide-up-enter-active,
608
594
  .slide-up-leave-active {
609
595
  transition:
610
- transform $transition-duration ease,
611
- opacity $transition-duration ease;
596
+ transform var(--q-transition-duration) var(--q-transition-timing-function),
597
+ opacity var(--q-transition-duration) var(--q-transition-timing-function);
612
598
  }
613
599
  .slide-down-enter-from,
614
600
  .slide-down-leave-to {
@@ -623,8 +609,8 @@ $transition-duration: 0.2s !default;
623
609
  .slide-down-enter-active,
624
610
  .slide-down-leave-active {
625
611
  transition:
626
- transform $transition-duration ease,
627
- opacity $transition-duration ease;
612
+ transform var(--q-transition-duration) var(--q-transition-timing-function),
613
+ opacity var(--q-transition-duration) var(--q-transition-timing-function);
628
614
  }
629
615
  .slide-left-enter-from,
630
616
  .slide-left-leave-to {
@@ -639,8 +625,8 @@ $transition-duration: 0.2s !default;
639
625
  .slide-left-enter-active,
640
626
  .slide-left-leave-active {
641
627
  transition:
642
- transform $transition-duration ease,
643
- opacity $transition-duration ease;
628
+ transform var(--q-transition-duration) var(--q-transition-timing-function),
629
+ opacity var(--q-transition-duration) var(--q-transition-timing-function);
644
630
  }
645
631
  .slide-right-enter-from,
646
632
  .slide-right-leave-to {
@@ -655,22 +641,11 @@ $transition-duration: 0.2s !default;
655
641
  .slide-right-enter-active,
656
642
  .slide-right-leave-active {
657
643
  transition:
658
- transform $transition-duration ease,
659
- opacity $transition-duration ease;
660
- }
661
- @mixin sr-only {
662
- position: absolute;
663
- width: 1px;
664
- height: 1px;
665
- padding: 0;
666
- margin: -1px;
667
- overflow: hidden;
668
- clip-path: inset(50%);
669
- white-space: nowrap;
670
- border: 0;
644
+ transform var(--q-transition-duration) var(--q-transition-timing-function),
645
+ opacity var(--q-transition-duration) var(--q-transition-timing-function);
671
646
  }
672
647
  .q-sr-only {
673
- @include sr-only;
648
+ @include q-sr-only;
674
649
  }
675
650
  .q-chevron {
676
651
  transition: all 0.2s;
@@ -682,15 +657,7 @@ $transition-duration: 0.2s !default;
682
657
  }
683
658
  }
684
659
  .q-clear-btn.q-button {
685
- padding: 0.1rem;
686
- opacity: 0.5;
687
- svg {
688
- width: $icon-size-sm;
689
- height: $icon-size-sm;
690
- }
691
- &:hover {
692
- cursor: inherit;
693
- }
660
+ @include q-field-affix-button;
694
661
  &:hover,
695
662
  &:focus {
696
663
  opacity: 1;
@@ -706,7 +673,7 @@ $transition-duration: 0.2s !default;
706
673
  }
707
674
  .q-safe-triangle {
708
675
  position: fixed;
709
- z-index: $overlay-z-index + 1;
676
+ z-index: calc(var(--q-overlay-z-index) + 1);
710
677
  overflow: visible;
711
678
  pointer-events: none;
712
679
  &__path {
@@ -717,17 +684,17 @@ $transition-duration: 0.2s !default;
717
684
  .q-accordion {
718
685
  display: flex;
719
686
  flex-direction: column;
720
- gap: $space-base;
687
+ gap: var(--q-space-1);
721
688
  height: fit-content;
722
689
  }
723
690
  .q-avatar {
724
- --q-avatar-size: 48px;
691
+ --q-avatar-size: calc(48px * var(--q-density-scale));
725
692
  display: flex;
726
693
  align-items: center;
727
694
  justify-content: center;
728
695
  overflow: hidden;
729
696
  box-sizing: border-box;
730
- font-size: 1rem;
697
+ font-size: var(--q-font-size-lg);
731
698
  width: var(--q-avatar-size);
732
699
  height: var(--q-avatar-size);
733
700
  border-radius: 50%;
@@ -747,10 +714,10 @@ $transition-duration: 0.2s !default;
747
714
  }
748
715
 
749
716
  &--small {
750
- --q-avatar-size: 32px;
717
+ --q-avatar-size: calc(32px * var(--q-density-scale));
751
718
  }
752
719
  &--large {
753
- --q-avatar-size: 64px;
720
+ --q-avatar-size: calc(64px * var(--q-density-scale));
754
721
  }
755
722
 
756
723
  &--square {
@@ -760,10 +727,12 @@ $transition-duration: 0.2s !default;
760
727
  .q-badge {
761
728
  $this: &;
762
729
  display: inline-flex;
763
- border-width: 1px;
730
+ align-items: center;
731
+ min-height: var(--q-interactive-height);
732
+ border-width: var(--q-border-width, 1px);
764
733
  border-color: transparent;
765
- border-radius: var(--border-radius);
766
- font-size: 0.75rem;
734
+ border-radius: var(--q-border-radius);
735
+ font-size: var(--q-font-size-sm);
767
736
  line-height: 1;
768
737
  position: relative;
769
738
  transition-property:
@@ -787,12 +756,12 @@ $transition-duration: 0.2s !default;
787
756
  &__content,
788
757
  &__content.q-button {
789
758
  display: inline-flex;
790
- border-width: 1px;
791
- border-radius: var(--border-radius);
759
+ border-width: var(--q-border-width, 1px);
760
+ border-radius: var(--q-border-radius);
792
761
  align-items: center;
793
762
  gap: 0.25em;
794
763
  z-index: 1;
795
- font-size: 0.75rem;
764
+ font-size: var(--q-font-size-sm);
796
765
  }
797
766
  &__content:not(.q-button) {
798
767
  border-color: transparent;
@@ -808,18 +777,22 @@ $transition-duration: 0.2s !default;
808
777
  color: currentcolor;
809
778
  }
810
779
  &__remove.q-button {
811
- padding: 0.25rem;
780
+ padding: var(--q-control-padding-y-sm);
812
781
  min-width: fit-content;
813
782
  }
814
783
  &:not(:has(button.q-badge__content)) {
815
784
 
816
785
  .q-badge__remove.q-button {
786
+
787
+ --q-button-height: calc(var(--q-interactive-height) - (var(--q-border-width, 1px) * 2));
788
+ height: var(--q-button-height);
789
+ min-height: var(--q-button-height);
817
790
  background-color: transparent;
818
791
  border-top-left-radius: 0;
819
792
  border-bottom-left-radius: 0;
820
793
  border-color: transparent;
821
794
  .q-button__content {
822
- padding: 0.08rem;
795
+ padding: calc(0.08rem * var(--q-density-scale));
823
796
  border-radius: 9999px;
824
797
  }
825
798
  &:not(:disabled):hover {
@@ -864,19 +837,7 @@ $transition-duration: 0.2s !default;
864
837
  pointer-events: none;
865
838
  }
866
839
 
867
- &--large {
868
- min-height: 44px;
869
- &:is(span) {
870
- padding: 0 0.5rem;
871
- }
872
- button.q-button {
873
- &.q-badge__content,
874
- &.q-badge__remove {
875
- min-height: 40px;
876
- padding: 0 1rem;
877
- }
878
- }
879
- }
840
+ @include q-size-modifiers;
880
841
  span {
881
842
  display: inline-flex;
882
843
  }
@@ -891,14 +852,21 @@ $transition-duration: 0.2s !default;
891
852
  }
892
853
  .q-badge-indicator {
893
854
  $this: &;
855
+ --q-badge-indicator-size: calc(1.25rem * var(--q-density-scale));
856
+ --q-badge-indicator-padding: calc(0.25rem * var(--q-density-scale));
857
+ --q-badge-indicator-dot-size: calc(8px * var(--q-density-scale));
894
858
  flex-wrap: wrap;
895
859
  place-content: center center;
896
860
  align-items: center;
897
861
  position: absolute;
898
- height: 1.25rem;
899
- min-width: 1.25rem;
900
- padding: 0.25rem;
862
+ height: var(--q-badge-indicator-size);
863
+ min-width: var(--q-badge-indicator-size);
864
+ min-height: var(--q-badge-indicator-size);
865
+ padding: var(--q-badge-indicator-padding);
901
866
  transition: transform 0.15s cubic-bezier(0.4, 0, 0.2, 1) 0;
867
+ &.q-badge {
868
+ min-height: var(--q-badge-indicator-size);
869
+ }
902
870
  &__wrapper {
903
871
  position: relative;
904
872
  display: inline-flex;
@@ -909,11 +877,14 @@ $transition-duration: 0.2s !default;
909
877
  padding: 0;
910
878
  }
911
879
 
912
- &--dot {
913
- border-radius: 4px;
914
- height: 8px;
915
- min-width: 8px;
880
+ &--dot,
881
+ &.q-badge#{&}--dot {
882
+ width: var(--q-badge-indicator-dot-size);
883
+ height: var(--q-badge-indicator-dot-size);
884
+ min-width: var(--q-badge-indicator-dot-size);
885
+ min-height: var(--q-badge-indicator-dot-size);
916
886
  padding: 0;
887
+ border-radius: 50%;
917
888
  }
918
889
  &--top-right {
919
890
  top: 0;
@@ -974,17 +945,25 @@ $transition-duration: 0.2s !default;
974
945
  --q-button-hover-color-rgb: var(--q-theme-primary-dark-rgb);
975
946
  --q-button-on-hover-color: var(--q-theme-on-primary-dark);
976
947
  --q-button-on-hover-color-rgb: var(--q-theme-on-primary-dark-rgb);
948
+ --q-button-height: var(--q-interactive-height);
949
+ --q-button-padding-y: var(--q-control-padding-y-md);
950
+ --q-button-padding-x: var(--q-control-padding-x-md);
951
+ --q-button-labeled-padding-x: var(--q-control-padding-x-lg);
952
+ --q-button-font-size: var(--q-font-size-md);
977
953
  display: inline-flex;
978
954
  user-select: none;
979
955
  align-items: center;
980
956
  justify-content: center;
957
+ height: var(--q-button-height);
958
+ min-height: var(--q-button-height);
981
959
  overflow: hidden;
982
960
  position: relative;
983
- border-width: 1px;
984
- padding: 0.4rem;
961
+ border-width: var(--q-border-width, 1px);
962
+ padding: var(--q-button-padding-y) var(--q-button-padding-x);
985
963
  line-height: 1;
986
- gap: $space-base;
987
- border-radius: var(--border-radius);
964
+ font-size: var(--q-button-font-size);
965
+ gap: var(--q-space-1);
966
+ border-radius: var(--q-border-radius);
988
967
  outline: none;
989
968
  margin: 0;
990
969
  text-decoration: none;
@@ -993,18 +972,18 @@ $transition-duration: 0.2s !default;
993
972
  color, background-color, border-color, box-shadow, text-decoration-color, fill, stroke;
994
973
  transition-duration: 0.15s;
995
974
  &#{$this}--labeled {
996
- padding: 0.4rem 0.8rem;
975
+ padding: var(--q-button-padding-y) var(--q-button-labeled-padding-x);
997
976
 
998
977
 
999
978
  &:where(:has(#{$this}__content > .q-icon)):where(:not(#{$this}--icon-end)):where(
1000
979
  :not(#{$this}--icon-top)
1001
980
  ):where(:not(#{$this}--icon-bottom)) {
1002
- padding-inline-start: 0.6rem;
981
+ padding-inline-start: var(--q-control-padding-x-md);
1003
982
  }
1004
983
 
1005
984
  &:where(#{$this}--icon-end):where(:has(#{$this}__content > .q-icon)),
1006
985
  &:where(:has(#{$this}__append .q-icon)) {
1007
- padding-inline-end: 0.6rem;
986
+ padding-inline-end: var(--q-control-padding-x-md);
1008
987
  }
1009
988
  }
1010
989
  &__content {
@@ -1023,7 +1002,7 @@ $transition-duration: 0.2s !default;
1023
1002
  opacity: 0.6;
1024
1003
  }
1025
1004
  &:focus {
1026
- outline: $outline;
1005
+ outline: var(--q-focus-ring);
1027
1006
  z-index: 3;
1028
1007
  &:not(:focus-visible) {
1029
1008
  outline: 0;
@@ -1131,38 +1110,24 @@ $transition-duration: 0.2s !default;
1131
1110
  }
1132
1111
  }
1133
1112
 
1134
- &--small {
1135
- font-size: 0.8em;
1136
- padding: 0.25rem;
1137
- &#{$this}--labeled {
1138
- padding: 0.25rem 0.5rem;
1139
- &:where(:has(#{$this}__content > .q-icon)):where(:not(#{$this}--icon-end)):where(
1140
- :not(#{$this}--icon-top)
1141
- ):where(:not(#{$this}--icon-bottom)) {
1142
- padding-inline-start: 0.375rem;
1143
- }
1144
- &:where(#{$this}--icon-end):where(:has(#{$this}__content > .q-icon)),
1145
- &:where(:has(#{$this}__append .q-icon)) {
1146
- padding-inline-end: 0.375rem;
1147
- }
1148
- }
1149
- }
1113
+ @include q-size-modifiers;
1150
1114
 
1151
1115
  &--borderless {
1152
1116
  border-color: transparent;
1153
1117
  }
1154
1118
  &--elevated {
1155
- box-shadow:
1156
- 0 3px 1px -2px rgb(var(--q-theme-on-background-rgb) / 20%),
1157
- 0 2px 2px 0 rgb(var(--q-theme-on-background-rgb) / 14%),
1158
- 0 1px 5px 0 rgb(var(--q-theme-on-background-rgb) / 12%);
1119
+ box-shadow: var(--q-shadow-md);
1159
1120
  }
1160
1121
  &--icon-end {
1161
1122
  #{$this}__content {
1162
1123
  flex-direction: row-reverse;
1163
1124
  }
1164
1125
  }
1165
- &--icon-top {
1126
+ &--icon-top,
1127
+ &--icon-bottom {
1128
+ height: auto;
1129
+ min-height: var(--q-button-height);
1130
+ overflow: visible;
1166
1131
  #{$this}__content {
1167
1132
  flex-direction: column;
1168
1133
  }
@@ -1180,12 +1145,9 @@ $transition-duration: 0.2s !default;
1180
1145
  .q-button-group {
1181
1146
  position: relative;
1182
1147
  display: inline-flex;
1183
- border-radius: var(--border-radius);
1148
+ border-radius: var(--q-border-radius);
1184
1149
  &--elevated {
1185
- box-shadow:
1186
- 0 3px 1px -2px rgb(var(--q-theme-on-background-rgb) / 20%),
1187
- 0 2px 2px 0 rgb(var(--q-theme-on-background-rgb) / 14%),
1188
- 0 1px 5px 0 rgb(var(--q-theme-on-background-rgb) / 12%);
1150
+ box-shadow: var(--q-shadow-md);
1189
1151
  }
1190
1152
  > .q-button {
1191
1153
  position: relative;
@@ -1211,26 +1173,31 @@ $transition-duration: 0.2s !default;
1211
1173
  }
1212
1174
  }
1213
1175
  .q-card {
1214
- --card-base-padding: 1rem;
1215
- --card-padding: 1rem;
1216
- --card-border: 1px solid #{$border};
1217
- --card-width: fit-content;
1218
- --card-hover: 0 5px 15px rgb(var(--q-theme-neutral-rgb) / 25%);
1219
- --card-scale: 1;
1220
- --card-shadow: none;
1221
- --card-background: var(--q-theme-container);
1222
- min-width: 7rem;
1223
- min-height: 5rem;
1176
+ --q-card-base-padding: var(--q-space-4);
1177
+ --q-card-padding: var(--q-space-4);
1178
+ --q-card-border: var(--q-border-width) solid var(--q-border-color);
1179
+ --q-card-width: fit-content;
1180
+ --q-card-hover: 0 calc(5px * var(--q-density-scale)) calc(15px * var(--q-density-scale))
1181
+ rgb(var(--q-theme-neutral-rgb) / 25%);
1182
+ --q-card-scale: 1;
1183
+ --q-card-shadow: none;
1184
+ --q-card-background: var(--q-theme-container);
1185
+ --q-card-title-font-size: calc(var(--q-font-size-lg) * 1.05);
1186
+ --q-card-subtitle-font-size: var(--q-font-size-sm);
1187
+ --q-card-min-width: calc(7rem * var(--q-density-scale));
1188
+ --q-card-min-height: calc(5rem * var(--q-density-scale));
1189
+ min-width: var(--q-card-min-width);
1190
+ min-height: var(--q-card-min-height);
1224
1191
  height: 100%;
1225
- border: var(--card-border);
1226
- border-radius: var(--border-radius);
1227
- background-color: var(--card-background);
1228
- width: var(--card-width);
1192
+ border: var(--q-card-border);
1193
+ border-radius: var(--q-border-radius);
1194
+ background-color: var(--q-card-background);
1195
+ width: var(--q-card-width);
1229
1196
  overflow: hidden;
1230
1197
  display: flex;
1231
1198
  flex-direction: column;
1232
- box-shadow: var(--card-shadow);
1233
- transform: scale(var(--card-scale));
1199
+ box-shadow: var(--q-card-shadow);
1200
+ transform: scale(var(--q-card-scale));
1234
1201
  transition:
1235
1202
  box-shadow 0.2s ease-in-out,
1236
1203
  transform 0.2s cubic-bezier(0.155, 1.105, 0.295, 1.12);
@@ -1238,13 +1205,13 @@ $transition-duration: 0.2s !default;
1238
1205
  display: flex;
1239
1206
  flex: 1;
1240
1207
  flex-direction: column;
1241
- padding-bottom: var(--card-base-padding);
1208
+ padding-bottom: var(--q-card-base-padding);
1242
1209
  }
1243
1210
  &__header-content {
1244
1211
  display: flex;
1245
- gap: 0.5rem;
1246
- padding: var(--card-padding);
1247
- padding-top: var(--card-base-padding);
1212
+ gap: var(--q-space-2);
1213
+ padding: var(--q-card-padding);
1214
+ padding-top: var(--q-card-base-padding);
1248
1215
  padding-bottom: 0;
1249
1216
  }
1250
1217
  &__header-text {
@@ -1255,37 +1222,37 @@ $transition-duration: 0.2s !default;
1255
1222
  &__title {
1256
1223
  width: 100%;
1257
1224
  margin: 0;
1258
- font-size: 1.05rem;
1259
- line-height: 1rem;
1260
- letter-spacing: 0.02rem;
1225
+ font-size: var(--q-card-title-font-size);
1226
+ line-height: var(--q-line-height-md);
1227
+ letter-spacing: var(--q-letter-spacing-md);
1261
1228
  font-weight: 600;
1262
1229
  }
1263
1230
  &__subtitle {
1264
1231
  width: 100%;
1265
1232
  margin: 0;
1266
- font-size: 0.75rem;
1233
+ font-size: var(--q-card-subtitle-font-size);
1267
1234
  color: var(--q-theme-neutral);
1268
- padding-top: 0.5rem;
1235
+ padding-top: var(--q-space-2);
1269
1236
  }
1270
1237
  &__content {
1271
1238
  display: flex;
1272
1239
  flex-direction: column;
1273
- padding: var(--card-padding);
1240
+ padding: var(--q-card-padding);
1274
1241
  padding-top: 0;
1275
- padding-bottom: var(--card-base-padding);
1242
+ padding-bottom: var(--q-card-base-padding);
1276
1243
  }
1277
1244
 
1278
1245
  &--elevation-low {
1279
- --card-shadow: 0 4px 6px rgb(var(--q-theme-neutral-dark-rgb) / 15%);
1246
+ --q-card-shadow: var(--q-shadow-sm);
1280
1247
  }
1281
1248
  &--elevation-medium {
1282
- --card-shadow: 0 6px 9px rgb(var(--q-theme-neutral-dark-rgb) / 20%);
1249
+ --q-card-shadow: var(--q-shadow-md);
1283
1250
  }
1284
1251
  &--elevation-high {
1285
- --card-shadow: 0 8px 12px rgb(var(--q-theme-neutral-dark-rgb) / 25%);
1252
+ --q-card-shadow: var(--q-shadow-lg);
1286
1253
  }
1287
1254
  &--background {
1288
- --card-background: rgb(var(--q-theme-primary-light-rgb) / 50%);
1255
+ --q-card-background: rgb(var(--q-theme-primary-light-rgb) / 50%);
1289
1256
  .q-field__control {
1290
1257
  background-color: var(--q-theme-container);
1291
1258
  }
@@ -1293,32 +1260,32 @@ $transition-duration: 0.2s !default;
1293
1260
  &--title-background {
1294
1261
  .q-card__header-content {
1295
1262
  background-color: rgb(var(--q-theme-neutral-light-rgb) / 25%);
1296
- padding-bottom: 0.75rem;
1263
+ padding-bottom: var(--q-space-3);
1297
1264
  }
1298
1265
  .q-card__title {
1299
1266
  color: var(--q-theme-neutral-dark);
1300
- font-size: 1.1rem;
1267
+ font-size: calc(var(--q-font-size-lg) * 1.1);
1301
1268
  letter-spacing: unset;
1302
1269
  text-transform: unset;
1303
- font-weight: $font-weight-bold;
1270
+ font-weight: var(--q-font-weight-bold);
1304
1271
  }
1305
1272
  }
1306
1273
  &--minor {
1307
1274
  .q-card__title {
1308
- font-size: 0.9rem;
1275
+ font-size: var(--q-font-size-md);
1309
1276
  text-transform: unset;
1310
1277
  font-weight: 600;
1311
1278
  color: var(--q-theme-neutral);
1312
1279
  }
1313
1280
  .q-card__subtitle {
1314
- font-size: 0.75rem;
1281
+ font-size: var(--q-font-size-sm);
1315
1282
  color: rgb(var(--q-theme-neutral-rgb) / 80%);
1316
1283
  }
1317
1284
  }
1318
1285
 
1319
1286
  &--borderless {
1320
- --card-border: 1px solid transparent;
1321
- --card-background: transparent;
1287
+ --q-card-border: var(--q-border-width) solid transparent;
1288
+ --q-card-background: transparent;
1322
1289
  }
1323
1290
  &--clickable {
1324
1291
  text-decoration: none;
@@ -1326,21 +1293,21 @@ $transition-duration: 0.2s !default;
1326
1293
  &:not(.q-card--disabled) {
1327
1294
  cursor: pointer;
1328
1295
  &:hover {
1329
- --card-scale: 1.01;
1330
- --card-shadow: var(--card-hover);
1296
+ --q-card-scale: 1.01;
1297
+ --q-card-shadow: var(--q-card-hover);
1331
1298
  }
1332
1299
  }
1333
1300
  }
1334
1301
 
1335
1302
  &--loading {
1336
- padding: 3rem 5rem;
1303
+ padding: calc(3rem * var(--q-density-scale)) calc(5rem * var(--q-density-scale));
1337
1304
  justify-content: center;
1338
1305
  align-items: center;
1339
1306
  }
1340
1307
 
1341
1308
  @mixin card-width($width, $multiplier: 1) {
1342
1309
  &--#{$width} {
1343
- --card-width: calc(#{$multiplier} * 5em + #{$multiplier - 1} * #{$space-base});
1310
+ --q-card-width: calc(#{$multiplier} * 5em + #{$multiplier - 1} * var(--q-space-1));
1344
1311
  }
1345
1312
  }
1346
1313
  @include card-width(medium, 3);
@@ -1348,19 +1315,31 @@ $transition-duration: 0.2s !default;
1348
1315
  @include card-width(xlarge, 6);
1349
1316
  @include card-width(xxlarge, 8);
1350
1317
  &--block {
1351
- --card-width: 100%;
1318
+ --q-card-width: 100%;
1352
1319
  }
1353
1320
  }
1354
1321
  $q-carousel-height: 360px;
1355
1322
  $q-carousel-height-md: 300px;
1356
1323
  .q-carousel {
1357
- --q-carousel-height: #{$q-carousel-height};
1324
+ --q-carousel-height: calc(#{$q-carousel-height} * var(--q-density-scale));
1325
+ --q-carousel-control-size: calc(48px * var(--q-density-scale));
1326
+ --q-carousel-control-icon-size: calc(24px * var(--q-density-scale));
1327
+ --q-carousel-control-inset: calc(1rem * var(--q-density-scale));
1328
+ --q-carousel-caption-bottom: calc(3.5rem * var(--q-density-scale));
1329
+ --q-carousel-indicator-width: calc(30px * var(--q-density-scale));
1330
+ --q-carousel-indicator-height: calc(4px * var(--q-density-scale));
1331
+ --q-carousel-indicator-gap: calc(0.5rem * var(--q-density-scale));
1332
+ --q-carousel-indicators-bottom: calc(1rem * var(--q-density-scale));
1333
+ --q-carousel-title-size: calc(var(--q-font-size-lg) * 2);
1334
+ --q-carousel-subtitle-size: calc(var(--q-font-size-lg) * 1.1);
1335
+ --q-carousel-skeleton-gap: calc(8px * var(--q-density-scale));
1336
+ --q-carousel-skeleton-inset: calc(16px * var(--q-density-scale));
1358
1337
  position: relative;
1359
1338
  overflow: hidden;
1360
1339
  width: 100%;
1361
1340
  height: var(--q-carousel-height);
1362
- border-radius: $border-radius;
1363
- background-color: $neutral-light;
1341
+ border-radius: var(--q-border-radius);
1342
+ background-color: var(--q-theme-neutral-light);
1364
1343
  outline: none;
1365
1344
  }
1366
1345
  .q-carousel__track {
@@ -1385,7 +1364,7 @@ $q-carousel-height-md: 300px;
1385
1364
  }
1386
1365
  .q-carousel__caption-global {
1387
1366
  position: absolute;
1388
- bottom: 3.5rem;
1367
+ bottom: var(--q-carousel-caption-bottom);
1389
1368
  left: 50%;
1390
1369
  transform: translateX(-50%);
1391
1370
  text-align: center;
@@ -1394,24 +1373,24 @@ $q-carousel-height-md: 300px;
1394
1373
  max-width: 80%;
1395
1374
  }
1396
1375
  .q-carousel__title {
1397
- margin: 0 0 0.25rem;
1398
- font-size: 2rem;
1376
+ margin: 0 0 var(--q-space-1);
1377
+ font-size: var(--q-carousel-title-size);
1399
1378
  font-weight: 600;
1400
1379
  text-shadow: 0 2px 4px rgb(0 0 0 / 50%);
1401
1380
  }
1402
1381
  .q-carousel__subtitle {
1403
1382
  margin: 0;
1404
- font-size: 1.1rem;
1383
+ font-size: var(--q-carousel-subtitle-size);
1405
1384
  opacity: 0.9;
1406
1385
  text-shadow: 0 1px 2px rgb(0 0 0 / 50%);
1407
1386
  }
1408
1387
  .q-carousel__indicators {
1409
1388
  position: absolute;
1410
- bottom: 1rem;
1389
+ bottom: var(--q-carousel-indicators-bottom);
1411
1390
  left: 50%;
1412
1391
  transform: translateX(-50%);
1413
1392
  display: flex;
1414
- gap: 0.5rem;
1393
+ gap: var(--q-carousel-indicator-gap);
1415
1394
  margin: 0;
1416
1395
  padding: 0;
1417
1396
  list-style: none;
@@ -1419,9 +1398,9 @@ $q-carousel-height-md: 300px;
1419
1398
  }
1420
1399
  .q-carousel__indicator {
1421
1400
  position: relative;
1422
- width: 30px;
1423
- height: 4px;
1424
- border-radius: 2px;
1401
+ width: var(--q-carousel-indicator-width);
1402
+ height: var(--q-carousel-indicator-height);
1403
+ border-radius: calc(2px * var(--q-density-scale));
1425
1404
  background-color: rgb(255 255 255 / 50%);
1426
1405
  cursor: pointer;
1427
1406
  transition: all 0.3s ease;
@@ -1432,7 +1411,7 @@ $q-carousel-height-md: 300px;
1432
1411
  }
1433
1412
  .q-carousel__indicator--active {
1434
1413
  background-color: white;
1435
- box-shadow: 0 2px 8px rgb(0 0 0 / 30%);
1414
+ box-shadow: var(--q-shadow-md);
1436
1415
  }
1437
1416
  .q-carousel__indicator--active::before {
1438
1417
  content: '';
@@ -1452,8 +1431,8 @@ $q-carousel-height-md: 300px;
1452
1431
  background: rgb(0 0 0 / 50%);
1453
1432
  border: none;
1454
1433
  border-radius: 50%;
1455
- width: 48px;
1456
- height: 48px;
1434
+ width: var(--q-carousel-control-size);
1435
+ height: var(--q-carousel-control-size);
1457
1436
  display: flex;
1458
1437
  align-items: center;
1459
1438
  justify-content: center;
@@ -1466,14 +1445,14 @@ $q-carousel-height-md: 300px;
1466
1445
  background: rgb(0 0 0 / 70%);
1467
1446
  }
1468
1447
  .q-carousel__control--prev {
1469
- left: 1rem;
1448
+ left: var(--q-carousel-control-inset);
1470
1449
  }
1471
1450
  .q-carousel__control--next {
1472
- right: 1rem;
1451
+ right: var(--q-carousel-control-inset);
1473
1452
  }
1474
1453
  .q-carousel__control-icon.q-icon {
1475
- width: 24px;
1476
- height: 24px;
1454
+ width: var(--q-carousel-control-icon-size);
1455
+ height: var(--q-carousel-control-icon-size);
1477
1456
  }
1478
1457
  .q-carousel__skeleton {
1479
1458
  position: relative;
@@ -1488,7 +1467,7 @@ $q-carousel-height-md: 300px;
1488
1467
  display: flex;
1489
1468
  flex-direction: column;
1490
1469
  align-items: center;
1491
- gap: 8px;
1470
+ gap: var(--q-carousel-skeleton-gap);
1492
1471
  width: 100%;
1493
1472
  max-width: 600px;
1494
1473
  }
@@ -1499,7 +1478,7 @@ $q-carousel-height-md: 300px;
1499
1478
  right: 0;
1500
1479
  display: flex;
1501
1480
  justify-content: space-between;
1502
- padding: 0 16px;
1481
+ padding: 0 var(--q-carousel-skeleton-inset);
1503
1482
  transform: translateY(-50%);
1504
1483
  }
1505
1484
  .q-carousel__skeleton-caption,
@@ -1517,55 +1496,48 @@ $q-carousel-height-md: 300px;
1517
1496
  }
1518
1497
  @media (max-width: $breakpoint-md) {
1519
1498
  .q-carousel {
1520
- --q-carousel-height: #{$q-carousel-height-md};
1499
+ --q-carousel-height: calc(#{$q-carousel-height-md} * var(--q-density-scale));
1500
+ --q-carousel-control-size: var(--q-control-height-lg);
1501
+ --q-carousel-control-icon-size: var(--q-icon-size-md);
1502
+ --q-carousel-control-inset: calc(0.5rem * var(--q-density-scale));
1503
+ --q-carousel-caption-bottom: calc(3rem * var(--q-density-scale));
1504
+ --q-carousel-title-size: calc(var(--q-font-size-lg) * 1.5);
1505
+ --q-carousel-subtitle-size: var(--q-font-size-lg);
1521
1506
  }
1522
1507
  .q-carousel__caption-global {
1523
- bottom: 3rem;
1524
1508
  max-width: 90%;
1525
1509
  }
1526
- .q-carousel__title {
1527
- font-size: 1.5rem;
1528
- }
1529
- .q-carousel__subtitle {
1530
- font-size: 1rem;
1531
- }
1532
- .q-carousel__control {
1533
- width: 40px;
1534
- height: 40px;
1535
- }
1536
1510
  .q-carousel__control-icon svg {
1537
- width: 16px;
1538
- height: 16px;
1539
- }
1540
- .q-carousel__control--prev {
1541
- left: 0.5rem;
1542
- }
1543
- .q-carousel__control--next {
1544
- right: 0.5rem;
1511
+ width: var(--q-icon-size-md);
1512
+ height: var(--q-icon-size-md);
1545
1513
  }
1546
1514
  }
1547
1515
  .q-carousel:focus-visible {
1548
- outline: $outline;
1516
+ outline: var(--q-focus-ring);
1549
1517
  }
1550
1518
  .q-carousel__control:focus-visible,
1551
1519
  .q-carousel__indicator:focus-visible {
1552
- outline: $outline;
1520
+ outline: var(--q-focus-ring);
1553
1521
  }
1554
1522
  .q-checkbox {
1555
1523
  $this: &;
1556
- --box-size: #{$selection-control-size};
1557
- --icon-color: var(--q-theme-on-primary);
1558
- --icon-opacity: 0;
1559
- --transition-duration: 0.15s;
1524
+ --q-box-size: var(--q-selection-control-size);
1525
+ --q-icon-color: var(--q-theme-on-primary);
1526
+ --q-icon-opacity: 0;
1527
+ --q-transition-duration: 0.15s;
1560
1528
  display: flex;
1561
- align-items: flex-start;
1562
- gap: 0.5rem;
1529
+ align-items: center;
1530
+ gap: calc(0.5rem * var(--q-density-scale));
1563
1531
  width: fit-content;
1564
- border-radius: var(--border-radius);
1532
+ box-sizing: border-box;
1533
+ min-height: var(--q-interactive-height);
1534
+
1535
+ padding-block: calc((var(--q-interactive-height) - var(--q-box-size)) / 2);
1536
+ border-radius: var(--q-border-radius);
1565
1537
  color: var(--q-theme-neutral-dark);
1566
1538
  cursor: pointer;
1567
1539
  &--focus-style:focus-within {
1568
- outline: $outline;
1540
+ outline: var(--q-focus-ring);
1569
1541
  }
1570
1542
  label {
1571
1543
  cursor: pointer;
@@ -1574,21 +1546,22 @@ $q-carousel-height-md: 300px;
1574
1546
  display: flex;
1575
1547
  align-items: center;
1576
1548
  justify-content: center;
1577
- width: var(--box-size);
1578
- height: var(--box-size);
1579
- font-size: calc(var(--box-size) * 0.75);
1580
- border: 1px solid $border;
1581
- border-radius: var(--border-radius);
1549
+ box-sizing: border-box;
1550
+ width: var(--q-box-size);
1551
+ height: var(--q-box-size);
1552
+ font-size: calc(var(--q-box-size) * 0.75);
1553
+ border: var(--q-border-width) solid var(--q-border-color);
1554
+ border-radius: var(--q-border-radius);
1582
1555
  padding: 0;
1583
1556
  transition:
1584
- background var(--transition-duration),
1585
- border-color var(--transition-duration),
1586
- box-shadow var(--transition-duration);
1557
+ background var(--q-transition-duration),
1558
+ border-color var(--q-transition-duration),
1559
+ box-shadow var(--q-transition-duration);
1587
1560
  background-color: transparent;
1588
1561
  flex-shrink: 0;
1589
1562
  cursor: inherit;
1590
1563
  &:hover:not(:disabled) {
1591
- border-color: var(--active-color);
1564
+ border-color: var(--q-active-color);
1592
1565
  }
1593
1566
  &:focus:not(:disabled) {
1594
1567
  outline: 0;
@@ -1597,16 +1570,16 @@ $q-carousel-height-md: 300px;
1597
1570
  outline: 0;
1598
1571
  }
1599
1572
  &-icon.q-icon {
1600
- color: var(--icon-color);
1573
+ color: var(--q-icon-color);
1601
1574
  pointer-events: none;
1602
1575
  user-select: none;
1603
- transition: transform var(--transition-duration) ease;
1604
- opacity: var(--icon-opacity);
1576
+ transition: transform var(--q-transition-duration) ease;
1577
+ opacity: var(--q-icon-opacity);
1605
1578
  }
1606
1579
  }
1607
1580
  &:hover {
1608
1581
  .q-checkbox__input:not(:disabled) {
1609
- border-color: var(--active-color);
1582
+ border-color: var(--q-active-color);
1610
1583
  }
1611
1584
  }
1612
1585
  &__native-input {
@@ -1618,21 +1591,17 @@ $q-carousel-height-md: 300px;
1618
1591
  }
1619
1592
  &__label.q-label {
1620
1593
  user-select: none;
1621
- line-height: var(--box-size);
1594
+ font-size: var(--q-font-size-md);
1595
+
1596
+ line-height: var(--q-box-size);
1622
1597
  }
1623
1598
 
1624
- &--small {
1625
- --box-size: 0.95rem;
1626
- }
1627
- &--large {
1628
- --box-size: 1.5rem;
1629
- padding: 0.625rem 0.375rem;
1630
- }
1599
+ @include q-size-modifiers;
1631
1600
 
1632
1601
  @mixin color-variant($color) {
1633
1602
  &--#{$color} {
1634
- --active-color: var(--q-theme-#{$color});
1635
- --icon-color: var(--q-theme-on-#{$color});
1603
+ --q-active-color: var(--q-theme-#{$color});
1604
+ --q-icon-color: var(--q-theme-on-#{$color});
1636
1605
  }
1637
1606
  }
1638
1607
  @each $color in (primary, info, success, warning, danger) {
@@ -1641,10 +1610,10 @@ $q-carousel-height-md: 300px;
1641
1610
 
1642
1611
  &--checked,
1643
1612
  &--indeterminate {
1644
- --icon-opacity: 1;
1613
+ --q-icon-opacity: 1;
1645
1614
  #{$this}__input {
1646
- background-color: var(--active-color);
1647
- border-color: var(--active-color);
1615
+ background-color: var(--q-active-color);
1616
+ border-color: var(--q-active-color);
1648
1617
  }
1649
1618
  }
1650
1619
  &--disabled {
@@ -1655,7 +1624,7 @@ $q-carousel-height-md: 300px;
1655
1624
  }
1656
1625
  }
1657
1626
  &--readonly {
1658
- --active-color: var(--q-theme-neutral-light);
1627
+ --q-active-color: var(--q-theme-neutral-light);
1659
1628
  cursor: default;
1660
1629
  &:not(#{$this}--checked):not(#{$this}--indeterminate):not(#{$this}--borderless) {
1661
1630
  #{$this}__input {
@@ -1667,21 +1636,21 @@ $q-carousel-height-md: 300px;
1667
1636
  }
1668
1637
  }
1669
1638
  &--borderless {
1670
- --active-color: transparent;
1639
+ --q-active-color: transparent;
1671
1640
  &:focus-within {
1672
1641
  outline: 0;
1673
1642
  }
1674
1643
  #{$this}__input {
1675
- background-color: var(--active-color);
1676
- border-color: var(--active-color);
1644
+ background-color: var(--q-active-color);
1645
+ border-color: var(--q-active-color);
1677
1646
  &-icon.q-icon {
1678
- --icon-color: var(--q-theme-neutral-dark);
1647
+ --q-icon-color: var(--q-theme-neutral-dark);
1679
1648
  }
1680
1649
  }
1681
1650
  &:not(#{$this}--readonly) {
1682
1651
  #{$this}__input {
1683
1652
  &-icon.q-icon {
1684
- --icon-color: var(--q-theme-primary);
1653
+ --q-icon-color: var(--q-theme-primary);
1685
1654
  }
1686
1655
  }
1687
1656
  }
@@ -1694,15 +1663,15 @@ $q-carousel-height-md: 300px;
1694
1663
  }
1695
1664
  }
1696
1665
  .q-collapsible {
1697
- $btn-padding: 0.2rem;
1698
- $header-padding: 0.75rem - $btn-padding;
1699
1666
  $this: &;
1667
+ --q-collapsible-btn-padding: calc(0.2rem * var(--q-density-scale));
1668
+ --q-collapsible-header-padding: calc((0.75rem - 0.2rem) * var(--q-density-scale));
1700
1669
  display: flex;
1701
1670
  flex-direction: column;
1702
1671
  overflow-wrap: break-word;
1703
1672
  background-color: var(--q-theme-container);
1704
1673
  border-width: 1px;
1705
- border-radius: var(--border-radius);
1674
+ border-radius: var(--q-border-radius);
1706
1675
  position: relative;
1707
1676
  max-width: 100%;
1708
1677
  min-height: 0;
@@ -1725,7 +1694,7 @@ $q-carousel-height-md: 300px;
1725
1694
  position: relative;
1726
1695
  width: 100%;
1727
1696
  margin: 0;
1728
- border-bottom: 1px solid $border;
1697
+ border-bottom: var(--q-border-width) solid var(--q-border-color);
1729
1698
  overflow: hidden;
1730
1699
  gap: 0;
1731
1700
  justify-content: start;
@@ -1735,26 +1704,32 @@ $q-carousel-height-md: 300px;
1735
1704
  }
1736
1705
  &__btn.q-button {
1737
1706
  width: 100%;
1707
+ height: auto;
1708
+ min-height: unset;
1738
1709
  margin: 0;
1710
+ --q-button-height: auto;
1711
+ --q-button-font-size: var(--q-font-size-md);
1739
1712
 
1740
- padding: $header-padding;
1713
+ padding: var(--q-collapsible-header-padding);
1741
1714
  .q-button__content {
1742
1715
  gap: 0;
1743
- padding: $btn-padding;
1716
+ padding: var(--q-collapsible-btn-padding);
1744
1717
  display: flex;
1745
1718
  flex-direction: column;
1746
1719
  align-items: start;
1747
- letter-spacing: 0.02rem;
1720
+ letter-spacing: calc(0.02rem * var(--q-density-scale));
1748
1721
  h4 {
1749
1722
  margin: 0;
1750
- text-transform: $headings-text-transform;
1723
+ font-size: var(--q-font-size-md);
1724
+ line-height: 1;
1725
+ text-transform: var(--q-headings-text-transform);
1751
1726
  }
1752
1727
  }
1753
1728
  }
1754
1729
  &__title {
1755
1730
  display: flex;
1756
1731
  width: 100%;
1757
- gap: 0.2rem;
1732
+ gap: calc(0.2rem * var(--q-density-scale));
1758
1733
  position: relative;
1759
1734
  text-align: start;
1760
1735
  align-items: center;
@@ -1764,19 +1739,19 @@ $q-carousel-height-md: 300px;
1764
1739
  }
1765
1740
  }
1766
1741
  &__subtitle {
1767
- margin-left: 1.25rem;
1742
+ margin-left: calc(1.25rem * var(--q-density-scale));
1768
1743
  text-align: start;
1769
- line-height: 0.75rem;
1770
- font-size: 0.75rem;
1744
+ line-height: var(--q-line-height-sm);
1745
+ font-size: var(--q-font-size-sm);
1771
1746
  text-decoration: none;
1772
1747
  white-space: nowrap;
1773
1748
  color: var(--q-theme-neutral);
1774
1749
  padding: 0;
1775
- padding-top: 0.3rem;
1750
+ padding-top: calc(0.3rem * var(--q-density-scale));
1776
1751
  }
1777
1752
  &__content {
1778
- padding: 1rem;
1779
- padding-top: 0.75rem;
1753
+ padding: var(--q-space-4);
1754
+ padding-top: calc(0.75rem * var(--q-density-scale));
1780
1755
  &-wrapper {
1781
1756
  display: grid;
1782
1757
  grid-template-rows: 0fr;
@@ -1800,7 +1775,7 @@ $q-carousel-height-md: 300px;
1800
1775
  background-color: transparent;
1801
1776
  border-radius: 0;
1802
1777
  border: 0;
1803
- border-bottom: 1px solid $border;
1778
+ border-bottom: var(--q-border-width) solid var(--q-border-color);
1804
1779
  .q-collapsible__header {
1805
1780
  border: 0;
1806
1781
  }
@@ -1817,20 +1792,24 @@ $q-carousel-height-md: 300px;
1817
1792
 
1818
1793
  @mixin header-spacing($spacing, $increment) {
1819
1794
  &--#{$spacing} .q-collapsible__btn.q-button {
1820
- padding: calc(#{$header-padding} + #{$increment});
1795
+ padding: calc(var(--q-collapsible-header-padding) + #{$increment});
1821
1796
  }
1822
1797
  }
1823
- @include header-spacing(loose, $space-base);
1824
- @include header-spacing(compact, -$space-base);
1798
+ @include header-spacing(relaxed, var(--q-space-1));
1799
+ @include header-spacing(tight, calc(-1 * var(--q-space-1)));
1825
1800
  }
1826
1801
  .q-color-picker__swatch {
1827
- width: 1.5em;
1828
- height: 1.5em;
1829
- border-radius: var(--border-radius);
1802
+ --q-color-picker-swatch-padding: calc(var(--q-field-padding-y) * 2);
1803
+ --q-color-picker-swatch-size: calc(
1804
+ var(--q-interactive-height) - var(--q-color-picker-swatch-padding) - var(--q-border-width) * 2
1805
+ );
1806
+ width: var(--q-color-picker-swatch-size);
1807
+ height: var(--q-color-picker-swatch-size);
1808
+ border-radius: var(--q-border-radius);
1830
1809
 
1831
- border-width: 1px;
1810
+ border-width: var(--q-border-width);
1832
1811
  &:focus-visible {
1833
- outline: $outline;
1812
+ outline: var(--q-focus-ring);
1834
1813
  }
1835
1814
  &:not(:disabled) {
1836
1815
  cursor: pointer;
@@ -1849,33 +1828,25 @@ $q-carousel-height-md: 300px;
1849
1828
  }
1850
1829
  }
1851
1830
  .q-combobox__chevron.q-button {
1852
- padding: 0.1rem;
1853
- opacity: 0.5;
1854
- svg {
1855
- width: $icon-size-sm;
1856
- height: $icon-size-sm;
1857
- }
1858
- &:hover {
1859
- cursor: inherit;
1860
- }
1831
+ @include q-field-affix-button;
1861
1832
  }
1862
1833
  .q-date-time-picker__menu {
1863
1834
  --q-date-view-height: 0;
1864
- width: 16rem;
1835
+ width: calc(16rem * var(--q-density-scale));
1865
1836
  display: flex;
1866
1837
  flex-direction: column;
1867
1838
  background-color: var(--q-theme-container);
1868
1839
  color: var(--q-theme-on-background);
1869
- border-radius: $border-radius;
1870
- gap: $space-base;
1871
- padding: 0.5rem;
1840
+ border-radius: var(--q-border-radius);
1841
+ gap: var(--q-space-1);
1842
+ padding: var(--q-space-2);
1872
1843
  }
1873
1844
  .q-date-time-picker__bottom-bar,
1874
1845
  .q-date-time-picker__year,
1875
1846
  .q-date-time-picker__year-change {
1876
1847
  display: flex;
1877
1848
  justify-content: space-between;
1878
- gap: $space-base;
1849
+ gap: var(--q-space-1);
1879
1850
  .q-button {
1880
1851
  flex: 1;
1881
1852
  }
@@ -1883,12 +1854,27 @@ $q-carousel-height-md: 300px;
1883
1854
  .q-date-time-picker__month-grid,
1884
1855
  .q-date-time-picker__year-grid {
1885
1856
  height: auto;
1857
+ gap: var(--q-space-1);
1858
+ .q-button {
1859
+ width: 100%;
1860
+ }
1861
+ }
1862
+ .q-date-time-picker__month-grid {
1863
+ display: grid;
1864
+ grid-template-columns: repeat(3, 1fr);
1865
+ grid-template-rows: repeat(4, 1fr);
1866
+ min-height: var(--q-date-view-height);
1867
+ .q-button {
1868
+ height: 100%;
1869
+ min-height: var(--q-interactive-height);
1870
+ }
1871
+ }
1872
+ .q-date-time-picker__year-grid {
1886
1873
  display: flex;
1887
1874
  flex-flow: row wrap;
1888
1875
  justify-content: space-between;
1889
- gap: $space-base;
1890
1876
  .q-button {
1891
- flex: 0 0 calc((100% - 2 * $space-base) / 3);
1877
+ flex: 0 0 calc((100% - 2 * var(--q-space-1)) / 3);
1892
1878
  }
1893
1879
  }
1894
1880
  .q-date-time-picker__month-grid,
@@ -1903,13 +1889,13 @@ $q-carousel-height-md: 300px;
1903
1889
  display: flex;
1904
1890
  align-items: center;
1905
1891
  justify-content: center;
1906
- padding: calc($space-base * 2);
1892
+ padding: var(--q-space-2);
1907
1893
  }
1908
1894
  .q-date-time-picker__year-grid {
1909
1895
  overflow: auto;
1910
1896
 
1911
- margin: 0 -3px;
1912
- padding: 3px;
1897
+ margin: 0 calc(-3px * var(--q-density-scale));
1898
+ padding: calc(3px * var(--q-density-scale));
1913
1899
  }
1914
1900
  .q-date-time-picker__calendar {
1915
1901
  display: flex;
@@ -1919,10 +1905,10 @@ $q-carousel-height-md: 300px;
1919
1905
  display: flex;
1920
1906
  justify-content: space-between;
1921
1907
  align-items: stretch;
1922
- gap: $space-base;
1908
+ gap: var(--q-space-1);
1923
1909
  .q-button {
1924
1910
  font-weight: 600;
1925
- padding: 0.5rem 0.6rem;
1911
+ padding: var(--q-control-padding-y-lg) calc(var(--q-space-1) * 2.5);
1926
1912
  &--labeled {
1927
1913
  flex: 1;
1928
1914
  }
@@ -1934,16 +1920,16 @@ $q-carousel-height-md: 300px;
1934
1920
  .q-date-time-picker__weekday {
1935
1921
  flex: 1;
1936
1922
  text-align: center;
1937
- font-size: 0.75rem;
1923
+ font-size: var(--q-font-size-sm);
1938
1924
  font-weight: 600;
1939
1925
  opacity: 0.7;
1940
- padding: 0.5rem 0;
1926
+ padding: var(--q-space-2) 0;
1941
1927
  }
1942
1928
  }
1943
1929
  .q-date-time-picker__days {
1944
1930
  display: flex;
1945
1931
  flex-wrap: wrap;
1946
- gap: $space-base 0;
1932
+ gap: var(--q-space-1) 0;
1947
1933
  .q-date-time-picker__day {
1948
1934
  flex: 0 0 calc(100% / 7);
1949
1935
  aspect-ratio: 1;
@@ -1967,12 +1953,12 @@ $q-carousel-height-md: 300px;
1967
1953
  border-radius: 0;
1968
1954
  }
1969
1955
  &.q-date-time-picker__day--range-start {
1970
- border-top-left-radius: $border-radius;
1971
- border-bottom-left-radius: $border-radius;
1956
+ border-top-left-radius: var(--q-border-radius);
1957
+ border-bottom-left-radius: var(--q-border-radius);
1972
1958
  }
1973
1959
  &.q-date-time-picker__day--range-end {
1974
- border-top-right-radius: $border-radius;
1975
- border-bottom-right-radius: $border-radius;
1960
+ border-top-right-radius: var(--q-border-radius);
1961
+ border-bottom-right-radius: var(--q-border-radius);
1976
1962
  }
1977
1963
  }
1978
1964
  }
@@ -1982,7 +1968,7 @@ $q-carousel-height-md: 300px;
1982
1968
  display: flex;
1983
1969
  flex-direction: column;
1984
1970
  justify-content: space-evenly;
1985
- gap: $space-base;
1971
+ gap: var(--q-space-1);
1986
1972
  .q-date-time-picker__time-group,
1987
1973
  .q-date-time-picker__time-period {
1988
1974
  display: flex;
@@ -1993,41 +1979,41 @@ $q-carousel-height-md: 300px;
1993
1979
  display: flex;
1994
1980
  align-items: center;
1995
1981
  justify-content: center;
1996
- gap: 0.5rem;
1982
+ gap: var(--q-space-2);
1997
1983
  .q-date-time-picker__time-separator {
1998
1984
  display: flex;
1999
1985
  flex-direction: column;
2000
- font-size: 1.5rem;
1986
+ font-size: calc(var(--q-font-size-lg) * 1.5);
2001
1987
  font-weight: 600;
2002
- margin-bottom: 0.2rem;
1988
+ margin-bottom: calc(var(--q-space-1) * 0.5);
2003
1989
  }
2004
1990
  .q-date-time-picker__time-input-group {
2005
1991
  display: flex;
2006
1992
  flex-direction: column;
2007
1993
  align-items: center;
2008
- border: $border;
2009
- border-radius: $border-radius;
1994
+ border: var(--q-border-width) solid var(--q-border-color);
1995
+ border-radius: var(--q-border-radius);
2010
1996
  .q-button {
2011
1997
  width: 100%;
2012
1998
  border-radius: 0;
2013
1999
  &:first-child {
2014
- border-top-left-radius: $border-radius;
2015
- border-top-right-radius: $border-radius;
2000
+ border-top-left-radius: var(--q-border-radius);
2001
+ border-top-right-radius: var(--q-border-radius);
2016
2002
  }
2017
2003
  &:last-child {
2018
- border-bottom-left-radius: $border-radius;
2019
- border-bottom-right-radius: $border-radius;
2004
+ border-bottom-left-radius: var(--q-border-radius);
2005
+ border-bottom-right-radius: var(--q-border-radius);
2020
2006
  }
2021
2007
  }
2022
2008
  .q-date-time-picker__time-number {
2023
- width: 3rem;
2009
+ width: calc(3rem * var(--q-density-scale));
2024
2010
  border-radius: 0;
2025
2011
  .q-field__control {
2026
2012
  border: none;
2027
2013
  }
2028
2014
  .q-text-field__input {
2029
2015
  text-align: center;
2030
- font-size: 120%;
2016
+ font-size: var(--q-font-size-lg);
2031
2017
  line-height: normal;
2032
2018
  }
2033
2019
  }
@@ -2035,65 +2021,96 @@ $q-carousel-height-md: 300px;
2035
2021
  }
2036
2022
  }
2037
2023
  .q-dialog {
2024
+ $this: &;
2025
+ --q-dialog-section-border: var(--q-border-width) solid var(--q-border-color);
2038
2026
  display: flex;
2039
2027
  flex-direction: column;
2040
2028
  width: 100%;
2041
- max-height: calc(100vh - 2rem);
2029
+ max-height: calc(100vh - 2 * var(--q-space-4));
2042
2030
  &__header {
2043
- padding: 1rem;
2044
- padding-bottom: 0;
2031
+ padding: var(--q-space-4);
2045
2032
  &-title {
2046
2033
  display: flex;
2047
- font-weight: $font-weight-bold;
2048
- font-size: 1rem;
2034
+ font-weight: var(--q-font-weight-bold);
2035
+ font-size: var(--q-font-size-lg);
2049
2036
  }
2050
2037
  }
2051
2038
  &__body {
2052
- padding: 1rem 0;
2039
+ padding: var(--q-space-4);
2053
2040
  overflow: auto;
2054
2041
  &-icon {
2055
2042
  display: flex;
2056
2043
  justify-content: center;
2057
- padding: $space-base 1rem;
2044
+ padding: var(--q-space-1) 0;
2058
2045
  svg {
2059
- height: 5em;
2060
- width: 5em;
2046
+
2047
+ height: calc(5 * var(--q-font-size-lg));
2048
+ width: calc(5 * var(--q-font-size-lg));
2061
2049
  }
2062
2050
  }
2063
2051
  &-text {
2064
2052
  display: flex;
2065
2053
  justify-content: center;
2066
2054
  text-align: center;
2067
- padding: $space-base 1rem;
2055
+ padding: var(--q-space-1) 0;
2068
2056
  }
2069
2057
  }
2070
2058
  &__footer {
2071
- padding: 1rem;
2072
- padding-top: 0;
2059
+ padding: var(--q-space-4);
2073
2060
  &-buttons {
2074
2061
  display: flex;
2075
2062
  width: 100%;
2076
2063
  justify-content: center;
2077
2064
  flex-wrap: wrap;
2078
- gap: 0.5rem;
2065
+ gap: var(--q-space-2);
2079
2066
  }
2080
2067
  }
2068
+
2069
+ &__header + &__body,
2070
+ &__header + &__footer,
2071
+ &__body + &__footer {
2072
+ border-top: var(--q-dialog-section-border);
2073
+ }
2081
2074
  &__close.q-button {
2082
2075
  position: absolute;
2083
- top: 0.5rem;
2084
- right: 0.5rem;
2076
+ top: var(--q-space-2);
2077
+ right: var(--q-space-2);
2085
2078
  }
2086
2079
  &__underlay {
2087
2080
  background-color: rgb(var(--q-theme-on-background-rgb) / 30%);
2088
2081
  }
2089
2082
  &__input {
2090
- padding: 0.25rem 1rem;
2083
+ padding: var(--q-space-1) 0;
2084
+ }
2085
+
2086
+ &--flush {
2087
+ #{$this}__header {
2088
+ padding-bottom: 0;
2089
+ }
2090
+ #{$this}__body {
2091
+ padding: var(--q-space-4) 0;
2092
+ #{$this}__body-icon,
2093
+ #{$this}__body-text {
2094
+ padding: var(--q-space-1) var(--q-space-4);
2095
+ }
2096
+ }
2097
+ #{$this}__footer {
2098
+ padding-top: 0;
2099
+ }
2100
+ #{$this}__header + #{$this}__body,
2101
+ #{$this}__header + #{$this}__footer,
2102
+ #{$this}__body + #{$this}__footer {
2103
+ border-top: 0;
2104
+ }
2105
+ #{$this}__input {
2106
+ padding: var(--q-space-1) var(--q-space-4);
2107
+ }
2091
2108
  }
2092
2109
  .q-field--invalid {
2093
2110
  .q-field__extras {
2094
2111
  display: flex;
2095
2112
  align-items: center;
2096
- gap: 0.25rem;
2113
+ gap: var(--q-space-1);
2097
2114
  color: var(--q-theme-danger);
2098
2115
  svg {
2099
2116
  fill: var(--q-theme-danger);
@@ -2109,12 +2126,12 @@ $q-carousel-height-md: 300px;
2109
2126
  justify-content: center;
2110
2127
  position: relative;
2111
2128
  color: var(--q-divider-color);
2112
- font-size: 0.875rem;
2129
+ font-size: var(--q-font-size-md);
2113
2130
 
2114
2131
  &--horizontal {
2115
2132
  width: 100%;
2116
2133
  flex-direction: row;
2117
- margin: 8px 0;
2134
+ margin: var(--q-space-2) 0;
2118
2135
  }
2119
2136
  &--horizontal:not(.q-divider--labeled)::before {
2120
2137
  content: '';
@@ -2129,13 +2146,13 @@ $q-carousel-height-md: 300px;
2129
2146
  border-color: var(--q-divider-color);
2130
2147
  }
2131
2148
  &--horizontal.q-divider--labeled .q-divider__label {
2132
- padding: 0 12px;
2149
+ padding: 0 var(--q-space-3);
2133
2150
  white-space: nowrap;
2134
2151
  }
2135
2152
 
2136
2153
  &--horizontal.q-divider--inset {
2137
- max-width: calc(100% - 72px);
2138
- margin-inline-start: 72px;
2154
+ max-width: calc(100% - (72px * var(--q-density-scale)));
2155
+ margin-inline-start: calc(72px * var(--q-density-scale));
2139
2156
  }
2140
2157
 
2141
2158
  &--vertical {
@@ -2144,7 +2161,7 @@ $q-carousel-height-md: 300px;
2144
2161
  align-items: center;
2145
2162
  height: 100%;
2146
2163
  min-height: 100%;
2147
- margin: 0 8px;
2164
+ margin: 0 var(--q-space-2);
2148
2165
  }
2149
2166
  &--vertical:not(.q-divider--labeled)::before {
2150
2167
  content: '';
@@ -2161,21 +2178,21 @@ $q-carousel-height-md: 300px;
2161
2178
  &--vertical.q-divider--labeled .q-divider__label {
2162
2179
  writing-mode: vertical-rl;
2163
2180
  text-orientation: mixed;
2164
- padding: 12px 0;
2181
+ padding: var(--q-space-3) 0;
2165
2182
  white-space: nowrap;
2166
2183
  }
2167
2184
 
2168
2185
  &--vertical.q-divider--inset {
2169
- margin-bottom: 8px;
2170
- margin-top: 8px;
2171
- max-height: calc(100% - 16px);
2186
+ margin-bottom: var(--q-space-2);
2187
+ margin-top: var(--q-space-2);
2188
+ max-height: calc(100% - (16px * var(--q-density-scale)));
2172
2189
  }
2173
2190
  }
2174
2191
  .q-dropdown-menu {
2175
2192
  &__body {
2176
- min-width: 8rem;
2193
+ min-width: calc(8rem * var(--q-density-scale));
2177
2194
  .q-list-item-group {
2178
- padding: $space-base;
2195
+ padding: var(--q-space-1);
2179
2196
  & + .q-list-item-group {
2180
2197
  margin-top: 0;
2181
2198
  }
@@ -2185,35 +2202,43 @@ $q-carousel-height-md: 300px;
2185
2202
  margin-left: auto;
2186
2203
  display: flex;
2187
2204
  color: var(--q-theme-neutral);
2188
- font-size: 0.75rem;
2205
+ font-size: var(--q-font-size-sm);
2189
2206
  }
2190
2207
  }
2191
2208
  .q-field {
2192
2209
  $this: &;
2210
+ --q-field-font-size: var(--q-font-size-md);
2211
+ --q-field-line-height: 1.5;
2193
2212
  display: flex;
2194
2213
  flex-direction: column;
2195
- border-radius: var(--border-radius);
2214
+ border-radius: var(--q-border-radius);
2196
2215
  width: fit-content;
2197
2216
  max-width: 100%;
2217
+ &__label {
2218
+ font-size: var(--q-field-font-size);
2219
+ }
2198
2220
  &__control {
2199
2221
  display: flex;
2200
2222
  align-items: center;
2201
- height: inherit;
2223
+ box-sizing: border-box;
2224
+ height: var(--q-interactive-height);
2225
+ min-height: var(--q-interactive-height);
2202
2226
  width: 100%;
2203
2227
  border-radius: inherit;
2204
2228
  border-width: 1px;
2205
2229
  background-color: transparent;
2206
- padding: $input-padding-y $input-padding-x;
2207
- line-height: 1.5;
2208
- transition: color var(--transition-duration) var(--transition-timing-function);
2230
+ padding: var(--q-field-padding-y) var(--q-field-padding-x);
2231
+ font-size: var(--q-field-font-size);
2232
+ line-height: var(--q-field-line-height);
2233
+ transition: color var(--q-transition-duration) var(--q-transition-timing-function);
2209
2234
  }
2210
2235
  &__extras {
2211
2236
  display: flex;
2212
- gap: $space-base;
2237
+ gap: var(--q-space-1);
2213
2238
  align-items: center;
2214
2239
  color: var(--q-theme-neutral);
2215
- margin-top: $space-base;
2216
- font-size: calc(0.9 * $font-size-base);
2240
+ margin-top: var(--q-space-1);
2241
+ font-size: var(--q-font-size-sm);
2217
2242
  .q-icon {
2218
2243
  color: currentcolor;
2219
2244
  }
@@ -2224,13 +2249,13 @@ $q-carousel-height-md: 300px;
2224
2249
  align-items: center;
2225
2250
  }
2226
2251
  &__prepend {
2227
- padding-right: 0.25rem;
2228
- padding-left: 0.05rem;
2252
+ padding-right: var(--q-space-1);
2253
+ padding-left: calc(2px * var(--q-density-scale));
2229
2254
  }
2230
2255
  &__append {
2231
2256
  margin-left: auto;
2232
- padding-left: 0.25rem;
2233
- padding-right: 0.05rem;
2257
+ padding-left: var(--q-space-1);
2258
+ padding-right: calc(2px * var(--q-density-scale));
2234
2259
  }
2235
2260
 
2236
2261
  &--readonly {
@@ -2255,16 +2280,16 @@ $q-carousel-height-md: 300px;
2255
2280
  }
2256
2281
  &--label-left {
2257
2282
  flex-direction: row;
2258
- gap: $space-base;
2283
+ gap: var(--q-space-1);
2259
2284
  }
2260
2285
  &--label-right {
2261
2286
  flex-direction: row-reverse;
2262
- gap: $space-base;
2287
+ gap: var(--q-space-1);
2263
2288
  }
2264
2289
  &:not(#{$this}--disabled) {
2265
2290
  #{$this}__control {
2266
2291
  &:focus-within {
2267
- outline: $outline;
2292
+ outline: var(--q-focus-ring);
2268
2293
  }
2269
2294
  }
2270
2295
  }
@@ -2272,7 +2297,7 @@ $q-carousel-height-md: 300px;
2272
2297
  @mixin field-size($size, $multiplier: 1) {
2273
2298
  &--#{$size} {
2274
2299
  > #{$this}__control {
2275
- width: calc(#{$multiplier} * 5em + #{$multiplier - 1} * $space-base);
2300
+ width: calc(#{$multiplier} * 5em + #{$multiplier - 1} * var(--q-space-1));
2276
2301
  max-width: 100%;
2277
2302
  }
2278
2303
  }
@@ -2289,8 +2314,13 @@ $q-carousel-height-md: 300px;
2289
2314
  }
2290
2315
  .q-file-input {
2291
2316
  $this: &;
2292
- --q-file-input-preview-side: 3rem;
2293
- --q-file-input-preview-padding: 0.75rem;
2317
+ --q-file-input-preview-side: calc(3rem * var(--q-density-scale));
2318
+ --q-file-input-preview-padding: var(--q-space-3);
2319
+
2320
+ &.q-field__control {
2321
+ height: auto;
2322
+ min-height: auto;
2323
+ }
2294
2324
  justify-content: center;
2295
2325
  flex-direction: column;
2296
2326
  border-width: 2px;
@@ -2301,14 +2331,14 @@ $q-carousel-height-md: 300px;
2301
2331
  background-color 0.2s ease;
2302
2332
  &__drop-area {
2303
2333
  display: flex;
2304
- gap: 0.5rem;
2334
+ gap: var(--q-space-2);
2305
2335
  align-items: center;
2306
2336
  color: var(--q-theme-neutral);
2307
2337
  min-height: var(--q-file-input-preview-side);
2308
2338
  }
2309
2339
  &__file-details {
2310
2340
  display: flex;
2311
- gap: 0.5rem;
2341
+ gap: var(--q-space-2);
2312
2342
  align-items: center;
2313
2343
  width: 100%;
2314
2344
  }
@@ -2329,7 +2359,7 @@ $q-carousel-height-md: 300px;
2329
2359
  flex-shrink: 0;
2330
2360
  }
2331
2361
  &__image-preview {
2332
- border-radius: var(--border-radius);
2362
+ border-radius: var(--q-border-radius);
2333
2363
  overflow: hidden;
2334
2364
  img {
2335
2365
  width: 100%;
@@ -2342,7 +2372,7 @@ $q-carousel-height-md: 300px;
2342
2372
  flex-direction: column;
2343
2373
  justify-content: center;
2344
2374
  line-height: 1;
2345
- gap: $space-base;
2375
+ gap: var(--q-space-1);
2346
2376
  }
2347
2377
  &__file-name {
2348
2378
  overflow-wrap: break-word;
@@ -2356,12 +2386,12 @@ $q-carousel-height-md: 300px;
2356
2386
  }
2357
2387
  &__action-buttons {
2358
2388
  display: flex;
2359
- gap: 0.5rem;
2389
+ gap: var(--q-space-2);
2360
2390
  }
2361
2391
  &__empty-container {
2362
2392
  display: flex;
2363
2393
  align-items: center;
2364
- gap: 0.25rem;
2394
+ gap: var(--q-space-1);
2365
2395
  color: var(--q-theme-neutral);
2366
2396
  min-height: var(--q-file-input-preview-side);
2367
2397
  }
@@ -2391,30 +2421,30 @@ $q-carousel-height-md: 300px;
2391
2421
  .q-gauge {
2392
2422
  display: flex;
2393
2423
  width: 100%;
2394
- min-width: min(14rem, 100%);
2424
+ min-width: min(calc(14rem * var(--q-density-scale)), 100%);
2395
2425
  flex-direction: column;
2396
2426
  align-items: center;
2397
- padding: 1rem 1rem 1.125rem;
2398
- border: 1px solid $border;
2399
- border-radius: $border-radius;
2427
+ padding: var(--q-space-4) var(--q-space-4) calc(1.125rem * var(--q-density-scale));
2428
+ border: var(--q-border-width) solid var(--q-border-color);
2429
+ border-radius: var(--q-border-radius);
2400
2430
  background-color: var(--q-theme-container);
2401
- box-shadow: $shadow-sm;
2431
+ box-shadow: var(--q-shadow-sm);
2402
2432
  color: var(--q-theme-on-background);
2403
2433
  &__label {
2404
2434
  width: 100%;
2405
2435
  overflow: hidden;
2406
2436
  color: var(--q-theme-neutral-dark);
2407
- font-size: 1rem;
2408
- font-weight: $font-weight-bold;
2409
- line-height: 1.25;
2437
+ font-size: var(--q-font-size-lg);
2438
+ font-weight: var(--q-font-weight-bold);
2439
+ line-height: var(--q-line-height-md);
2410
2440
  text-align: center;
2411
2441
  text-overflow: ellipsis;
2412
2442
  white-space: nowrap;
2413
2443
  }
2414
2444
  &__visual {
2415
2445
  width: 100%;
2416
- max-width: 18rem;
2417
- margin-top: 0.25rem;
2446
+ max-width: calc(18rem * var(--q-density-scale));
2447
+ margin-top: var(--q-space-1);
2418
2448
  }
2419
2449
  &__svg {
2420
2450
  display: block;
@@ -2447,8 +2477,8 @@ $q-carousel-height-md: 300px;
2447
2477
  }
2448
2478
  text {
2449
2479
  fill: rgb(var(--q-theme-neutral-dark-rgb) / 78%);
2450
- font-size: 0.75rem;
2451
- font-weight: $font-weight-bold;
2480
+ font-size: var(--q-font-size-sm);
2481
+ font-weight: var(--q-font-weight-bold);
2452
2482
  text-anchor: middle;
2453
2483
  dominant-baseline: middle;
2454
2484
  }
@@ -2477,8 +2507,8 @@ $q-carousel-height-md: 300px;
2477
2507
  }
2478
2508
  &__target-value {
2479
2509
  fill: var(--q-theme-neutral-dark);
2480
- font-size: 0.6875rem;
2481
- font-weight: $font-weight-bold;
2510
+ font-size: var(--q-font-size-sm);
2511
+ font-weight: var(--q-font-weight-bold);
2482
2512
  paint-order: stroke;
2483
2513
  stroke: var(--q-theme-container);
2484
2514
  stroke-linejoin: round;
@@ -2502,7 +2532,10 @@ $q-carousel-height-md: 300px;
2502
2532
  }
2503
2533
  &__hub {
2504
2534
  fill: var(--q-theme-container);
2505
- filter: drop-shadow(0 0.4rem 0.45rem rgb(var(--q-theme-neutral-dark-rgb) / 28%));
2535
+ filter: drop-shadow(
2536
+ 0 calc(0.4rem * var(--q-density-scale)) calc(0.45rem * var(--q-density-scale))
2537
+ rgb(var(--q-theme-neutral-dark-rgb) / 28%)
2538
+ );
2506
2539
  stroke: rgb(var(--q-theme-neutral-light-rgb) / 65%);
2507
2540
  stroke-width: 1;
2508
2541
  }
@@ -2511,27 +2544,27 @@ $q-carousel-height-md: 300px;
2511
2544
  }
2512
2545
  &__value-row {
2513
2546
  display: flex;
2514
- min-height: 1.75rem;
2547
+ min-height: calc(1.75rem * var(--q-density-scale));
2515
2548
  align-items: baseline;
2516
2549
  justify-content: center;
2517
- gap: 0.25rem;
2518
- margin-top: -0.25rem;
2550
+ gap: var(--q-space-1);
2551
+ margin-top: calc(-0.25rem * var(--q-density-scale));
2519
2552
  }
2520
2553
  &__value {
2521
2554
  color: var(--q-theme-neutral-dark);
2522
- font-size: 1.5rem;
2523
- font-weight: $font-weight-bold;
2555
+ font-size: calc(var(--q-font-size-lg) * 1.5);
2556
+ font-weight: var(--q-font-weight-bold);
2524
2557
  line-height: 1;
2525
2558
  }
2526
2559
  &__unit {
2527
2560
  color: var(--q-theme-neutral);
2528
- font-size: 0.75rem;
2561
+ font-size: var(--q-font-size-sm);
2529
2562
  }
2530
2563
  &__secondary {
2531
2564
  color: var(--q-theme-neutral);
2532
- font-size: 0.75rem;
2533
- min-height: 1.125rem;
2534
- margin-top: 0.25rem;
2565
+ font-size: var(--q-font-size-sm);
2566
+ min-height: calc(1.125rem * var(--q-density-scale));
2567
+ margin-top: var(--q-space-1);
2535
2568
  text-align: center;
2536
2569
  }
2537
2570
  &__legend {
@@ -2539,8 +2572,8 @@ $q-carousel-height-md: 300px;
2539
2572
  width: 100%;
2540
2573
  flex-wrap: wrap;
2541
2574
  justify-content: center;
2542
- gap: 0.375rem 0.75rem;
2543
- margin: 0.75rem 0 0;
2575
+ gap: calc(0.375rem * var(--q-density-scale)) calc(0.75rem * var(--q-density-scale));
2576
+ margin: calc(0.75rem * var(--q-density-scale)) 0 0;
2544
2577
  padding: 0;
2545
2578
  list-style: none;
2546
2579
  }
@@ -2548,27 +2581,27 @@ $q-carousel-height-md: 300px;
2548
2581
  display: inline-flex;
2549
2582
  min-width: 0;
2550
2583
  align-items: center;
2551
- gap: 0.3125rem;
2584
+ gap: calc(0.3125rem * var(--q-density-scale));
2552
2585
  color: var(--q-theme-neutral);
2553
- font-size: 0.75rem;
2586
+ font-size: var(--q-font-size-sm);
2554
2587
  line-height: 1.2;
2555
2588
  }
2556
2589
  &__legend-item--active {
2557
2590
  color: var(--q-theme-neutral-dark);
2558
- font-weight: $font-weight-bold;
2591
+ font-weight: var(--q-font-weight-bold);
2559
2592
  }
2560
2593
  &__legend-swatch {
2561
- width: 0.75rem;
2562
- height: 0.75rem;
2563
- flex: 0 0 0.75rem;
2564
- border: 1px solid rgb(var(--q-theme-neutral-dark-rgb) / 12%);
2565
- border-radius: 0.125rem;
2594
+ width: calc(0.75rem * var(--q-density-scale));
2595
+ height: calc(0.75rem * var(--q-density-scale));
2596
+ flex: 0 0 calc(0.75rem * var(--q-density-scale));
2597
+ border: var(--q-border-width) solid rgb(var(--q-theme-neutral-dark-rgb) / 12%);
2598
+ border-radius: calc(0.125rem * var(--q-density-scale));
2566
2599
  }
2567
2600
  &__legend-target {
2568
- width: 1rem;
2601
+ width: calc(1rem * var(--q-density-scale));
2569
2602
  height: 0;
2570
- flex: 0 0 1rem;
2571
- border-top: 0.1875rem solid var(--q-theme-success);
2603
+ flex: 0 0 calc(1rem * var(--q-density-scale));
2604
+ border-top: calc(0.1875rem * var(--q-density-scale)) solid var(--q-theme-success);
2572
2605
  border-radius: 999px;
2573
2606
  }
2574
2607
  &__legend-target--missed {
@@ -2588,8 +2621,8 @@ $q-carousel-height-md: 300px;
2588
2621
  width: 100%;
2589
2622
  margin-left: auto;
2590
2623
  margin-right: auto;
2591
- padding-left: 16px;
2592
- padding-right: 16px;
2624
+ padding-left: calc(16px * var(--q-density-scale));
2625
+ padding-right: calc(16px * var(--q-density-scale));
2593
2626
  }
2594
2627
  .q-container--fluid {
2595
2628
  max-width: 100%;
@@ -2620,7 +2653,7 @@ $q-carousel-height-md: 300px;
2620
2653
  }
2621
2654
  }
2622
2655
  .q-row {
2623
- --q-row-gutter: #{$space-base * 2};
2656
+ --q-row-gutter: var(--q-space-2);
2624
2657
  display: flex;
2625
2658
  flex-wrap: wrap;
2626
2659
  justify-content: flex-start;
@@ -2705,11 +2738,11 @@ $q-carousel-height-md: 300px;
2705
2738
  }
2706
2739
  $q-spacers: (
2707
2740
  0: 0,
2708
- 1: $space-base * 0.25,
2709
- 2: $space-base * 0.5,
2710
- 3: $space-base,
2711
- 4: $space-base * 1.5,
2712
- 5: $space-base * 3
2741
+ 1: calc(var(--q-space-1) * 0.25),
2742
+ 2: calc(var(--q-space-1) * 0.5),
2743
+ 3: var(--q-space-1),
2744
+ 4: calc(var(--q-space-1) * 1.5),
2745
+ 5: var(--q-space-3)
2713
2746
  ) !default;
2714
2747
  $q-breakpoints: (
2715
2748
  sm: $breakpoint-sm,
@@ -2815,30 +2848,30 @@ $q-spacing-sides: (
2815
2848
  }
2816
2849
  &__svg,
2817
2850
  &__img {
2818
- width: $icon-size;
2819
- height: $icon-size;
2851
+ width: var(--q-icon-size-md);
2852
+ height: var(--q-icon-size-md);
2820
2853
  }
2821
2854
  }
2822
2855
  $input-group-addon-color: var(--q-theme-primary);
2823
2856
  $input-group-addon-background: rgb(var(--q-theme-neutral-light-rgb) / 25%);
2824
2857
  .q-input-group {
2825
2858
  &__prepend > :first-child {
2826
- border-top-left-radius: var(--border-radius);
2827
- border-bottom-left-radius: var(--border-radius);
2859
+ border-top-left-radius: var(--q-border-radius);
2860
+ border-bottom-left-radius: var(--q-border-radius);
2828
2861
  }
2829
2862
  &__append > :last-child {
2830
- border-top-right-radius: var(--border-radius);
2831
- border-bottom-right-radius: var(--border-radius);
2863
+ border-top-right-radius: var(--q-border-radius);
2864
+ border-bottom-right-radius: var(--q-border-radius);
2832
2865
  }
2833
2866
 
2834
2867
  > .q-field__control > .q-input-group__append:first-child > :first-child {
2835
- border-top-left-radius: var(--border-radius);
2836
- border-bottom-left-radius: var(--border-radius);
2868
+ border-top-left-radius: var(--q-border-radius);
2869
+ border-bottom-left-radius: var(--q-border-radius);
2837
2870
  }
2838
2871
 
2839
2872
  > .q-field__control > .q-input-group__prepend:last-child > :last-child {
2840
- border-top-right-radius: var(--border-radius);
2841
- border-bottom-right-radius: var(--border-radius);
2873
+ border-top-right-radius: var(--q-border-radius);
2874
+ border-bottom-right-radius: var(--q-border-radius);
2842
2875
  }
2843
2876
  &__prepend,
2844
2877
  &__append {
@@ -2847,7 +2880,7 @@ $input-group-addon-background: rgb(var(--q-theme-neutral-light-rgb) / 25%);
2847
2880
  height: inherit;
2848
2881
  > * {
2849
2882
  border-radius: 0;
2850
- min-width: 40px;
2883
+ min-width: calc(40px * var(--q-density-scale));
2851
2884
  height: 100%;
2852
2885
  justify-content: center;
2853
2886
  }
@@ -2856,12 +2889,12 @@ $input-group-addon-background: rgb(var(--q-theme-neutral-light-rgb) / 25%);
2856
2889
  align-items: center;
2857
2890
  text-align: center;
2858
2891
  line-height: 1.5;
2859
- font-size: $font-size-base;
2892
+ font-size: var(--q-font-size-md);
2860
2893
  border-width: 1px;
2861
2894
  background-color: $input-group-addon-background;
2862
2895
  color: $input-group-addon-color;
2863
2896
  white-space: nowrap;
2864
- padding: 0 0.4rem;
2897
+ padding: 0 calc(0.4rem * var(--q-density-scale));
2865
2898
  }
2866
2899
  > * + * {
2867
2900
  margin-left: -1px;
@@ -2893,20 +2926,21 @@ $input-group-addon-background: rgb(var(--q-theme-neutral-light-rgb) / 25%);
2893
2926
  height: auto;
2894
2927
  }
2895
2928
  > :first-child {
2896
- border-top-left-radius: var(--border-radius);
2897
- border-bottom-left-radius: var(--border-radius);
2929
+ border-top-left-radius: var(--q-border-radius);
2930
+ border-bottom-left-radius: var(--q-border-radius);
2898
2931
  }
2899
2932
  > :last-child {
2900
- border-top-right-radius: var(--border-radius);
2901
- border-bottom-right-radius: var(--border-radius);
2933
+ border-top-right-radius: var(--q-border-radius);
2934
+ border-bottom-right-radius: var(--q-border-radius);
2902
2935
  }
2903
2936
  }
2904
2937
  }
2905
2938
  .q-label {
2906
2939
  display: flex;
2907
- gap: $space-base;
2940
+ gap: var(--q-space-1);
2908
2941
  align-items: center;
2909
2942
  color: var(--q-theme-neutral-dark);
2943
+ font-size: var(--q-font-size-md);
2910
2944
  line-height: 1.5;
2911
2945
  .q-icon {
2912
2946
  color: currentcolor;
@@ -2921,7 +2955,7 @@ $input-group-addon-background: rgb(var(--q-theme-neutral-light-rgb) / 25%);
2921
2955
  $q-line-loader-height: var(--q-line-loader-height);
2922
2956
  $q-line-loader-color: var(--q-line-loader-color);
2923
2957
  .q-line-loader {
2924
- --q-line-loader-height: 4px;
2958
+ --q-line-loader-height: calc(4px * var(--q-density-scale));
2925
2959
  --q-line-loader-color: var(--q-theme-primary-rgb);
2926
2960
  width: 100%;
2927
2961
  height: $q-line-loader-height;
@@ -2953,7 +2987,7 @@ $q-line-loader-color: var(--q-line-loader-color);
2953
2987
  padding: 0;
2954
2988
  -webkit-overflow-scrolling: touch;
2955
2989
  width: 100%;
2956
- border-radius: var(--border-radius);
2990
+ border-radius: var(--q-border-radius);
2957
2991
  }
2958
2992
  .q-list-item-group {
2959
2993
  display: flex;
@@ -2966,32 +3000,34 @@ $q-line-loader-color: var(--q-line-loader-color);
2966
3000
  width: inherit;
2967
3001
  &__title {
2968
3002
  color: var(--q-theme-neutral);
2969
- padding: 5px 6px;
2970
- line-height: 15px;
3003
+ padding: var(--q-control-padding-y-sm) var(--q-control-padding-x-sm);
3004
+ font-size: var(--q-font-size-sm);
3005
+ line-height: var(--q-line-height-sm);
2971
3006
  width: inherit;
2972
3007
  }
2973
3008
  & + & {
2974
- padding-top: $space-base;
2975
- margin-top: $space-base;
3009
+ padding-top: var(--q-space-1);
3010
+ margin-top: var(--q-space-1);
2976
3011
  border-top-width: 1px;
2977
3012
  }
2978
3013
  }
2979
3014
  .q-list-item {
2980
3015
  $this: &;
2981
3016
 
2982
- $control-height: $selection-control-size;
3017
+ $control-height: var(--q-selection-control-size);
2983
3018
  display: flex;
2984
- gap: 0.25rem;
3019
+ gap: var(--q-space-1);
2985
3020
  align-items: center;
2986
- padding: $space-base * 1.5 $space-base * 2;
3021
+ padding: calc(var(--q-space-1) * 1.5) var(--q-space-2);
2987
3022
 
2988
- min-height: calc(#{$control-height} + #{$space-base * 3});
3023
+ min-height: calc(var(--q-selection-control-size) + var(--q-space-3));
2989
3024
  list-style: none;
2990
- line-height: 15px;
3025
+ font-size: var(--q-font-size-md);
3026
+ line-height: var(--q-line-height-md);
2991
3027
  overflow-wrap: break-word;
2992
3028
  -webkit-touch-callout: none;
2993
3029
  width: inherit;
2994
- border-radius: var(--border-radius);
3030
+ border-radius: var(--q-border-radius);
2995
3031
  outline: none;
2996
3032
  cursor: default;
2997
3033
  &--selectable {
@@ -3022,12 +3058,12 @@ $q-line-loader-color: var(--q-line-loader-color);
3022
3058
  display: flex;
3023
3059
  flex-flow: column wrap;
3024
3060
  flex-grow: 1;
3025
- gap: $space-base;
3061
+ gap: var(--q-space-1);
3026
3062
  }
3027
3063
  &__content {
3028
3064
  display: flex;
3029
3065
  flex-grow: 1;
3030
- gap: $space-base * 2;
3066
+ gap: var(--q-space-2);
3031
3067
  cursor: inherit;
3032
3068
  user-select: none;
3033
3069
  }
@@ -3043,13 +3079,18 @@ $q-line-loader-color: var(--q-line-loader-color);
3043
3079
  }
3044
3080
 
3045
3081
  .q-list-item__check {
3046
- width: $icon-size-sm;
3047
- height: $icon-size-sm;
3082
+ width: var(--q-icon-size-sm);
3083
+ height: var(--q-icon-size-sm);
3084
+ }
3085
+ .q-checkbox {
3086
+ min-height: auto;
3087
+ outline: 0;
3088
+ padding: 0;
3048
3089
  }
3049
3090
  }
3050
3091
  &__description {
3051
3092
  display: flex;
3052
- gap: $space-base;
3093
+ gap: var(--q-space-1);
3053
3094
  align-items: flex-start;
3054
3095
  color: var(--q-theme-neutral);
3055
3096
  font-size: 0.75em;
@@ -3067,7 +3108,7 @@ $q-line-loader-color: var(--q-line-loader-color);
3067
3108
  .q-meter {
3068
3109
  display: flex;
3069
3110
  flex-direction: column;
3070
- gap: 0.25rem;
3111
+ gap: var(--q-space-1);
3071
3112
  &__labels {
3072
3113
  display: flex;
3073
3114
  justify-content: space-between;
@@ -3078,9 +3119,9 @@ $q-line-loader-color: var(--q-line-loader-color);
3078
3119
  &__track {
3079
3120
  position: relative;
3080
3121
  width: 100%;
3081
- height: 0.5rem;
3122
+ height: calc(0.5rem * var(--q-density-scale));
3082
3123
  overflow: hidden;
3083
- border-radius: $border-radius;
3124
+ border-radius: var(--q-border-radius);
3084
3125
  background-color: rgb(var(--q-theme-neutral-light-rgb) / 50%);
3085
3126
  }
3086
3127
  &__fill {
@@ -3094,13 +3135,13 @@ $q-line-loader-color: var(--q-line-loader-color);
3094
3135
  &__value {
3095
3136
  display: flex;
3096
3137
  align-items: center;
3097
- gap: $space-base;
3138
+ gap: var(--q-space-1);
3098
3139
  font-size: inherit;
3099
3140
  }
3100
3141
  &__mask {
3101
3142
  display: inline-flex;
3102
3143
  align-items: center;
3103
- gap: $space-base;
3144
+ gap: var(--q-space-1);
3104
3145
  width: 100%;
3105
3146
  color: var(--q-theme-neutral);
3106
3147
  user-select: none;
@@ -3133,28 +3174,39 @@ $q-line-loader-color: var(--q-line-loader-color);
3133
3174
  &__content {
3134
3175
  display: flex;
3135
3176
  align-items: flex-start;
3136
- gap: $space-base;
3177
+ gap: var(--q-space-1);
3137
3178
  min-width: 0;
3138
3179
  }
3180
+
3181
+
3139
3182
  & &__label-action.q-button {
3140
- padding: 0;
3183
+ --q-button-height: 1lh;
3184
+ height: 1lh;
3185
+ min-height: 0;
3141
3186
  min-width: auto;
3142
- min-height: auto;
3187
+ padding: 0;
3188
+ border-width: 0;
3189
+ line-height: inherit;
3190
+ vertical-align: middle;
3143
3191
  &:focus-visible {
3192
+
3144
3193
  outline-offset: 2px;
3145
3194
  }
3146
3195
  &.q-button--text {
3147
3196
  color: var(--q-theme-primary);
3148
3197
  }
3198
+ .q-obfuscation__icon.q-icon {
3199
+ width: 1em;
3200
+ height: 1em;
3201
+ }
3149
3202
  }
3150
3203
  &__icon.q-icon {
3151
3204
  flex-shrink: 0;
3152
3205
  }
3153
3206
  }
3154
3207
  $q-overflow-fade-size: 2.5rem;
3155
- $q-overflow-control-size: 2.25rem;
3156
3208
  .q-overflow {
3157
- --q-overflow-fade-size: #{$q-overflow-fade-size};
3209
+ --q-overflow-fade-size: calc(#{$q-overflow-fade-size} * var(--q-density-scale));
3158
3210
  display: flex;
3159
3211
  align-items: stretch;
3160
3212
  min-width: 0;
@@ -3163,10 +3215,10 @@ $q-overflow-control-size: 2.25rem;
3163
3215
  outline: none;
3164
3216
  }
3165
3217
  .q-overflow__viewport:focus-visible {
3166
- outline: $outline;
3218
+ outline: var(--q-focus-ring);
3167
3219
  }
3168
3220
  .q-overflow__control .q-overflow__button:focus-visible {
3169
- outline: $outline;
3221
+ outline: var(--q-focus-ring);
3170
3222
  }
3171
3223
  .q-overflow__viewport {
3172
3224
  position: relative;
@@ -3191,8 +3243,8 @@ $q-overflow-control-size: 2.25rem;
3191
3243
  justify-content: center;
3192
3244
  }
3193
3245
  .q-overflow__button {
3194
- min-width: $q-overflow-control-size;
3195
- min-height: $q-overflow-control-size;
3246
+ min-width: var(--q-interactive-height);
3247
+ min-height: var(--q-interactive-height);
3196
3248
  }
3197
3249
  .q-overflow--horizontal {
3198
3250
  flex-direction: row;
@@ -3365,23 +3417,25 @@ $q-overflow-control-size: 2.25rem;
3365
3417
  }
3366
3418
  }
3367
3419
  }
3368
- $overlay-border-width: 1px;
3369
- $overlay-arrow-width: 11.31px;
3370
- $overlay-arrow-height: 11.31px;
3371
- $arrow-tip-radius: 0.1rem;
3372
3420
  .q-overlay {
3373
3421
  $this: &;
3422
+
3374
3423
  --q-overlay-bg: var(--q-theme-container);
3375
3424
  --q-overlay-color: var(--q-theme-on-background);
3376
3425
  --q-overlay-border-color: var(--q-theme-neutral-light);
3426
+ --q-overlay-arrow-gap: calc(8px * var(--q-density-scale));
3427
+ --q-overlay-arrow-size: calc(var(--q-overlay-arrow-gap) * 1.4142);
3428
+ --q-overlay-arrow-tip-radius: calc(0.1rem * var(--q-density-scale));
3429
+ --q-overlay-viewport-inset-x: calc(1rem * var(--q-density-scale));
3430
+ --q-overlay-viewport-inset-y: calc(2rem * var(--q-density-scale));
3377
3431
  position: fixed;
3378
- z-index: $overlay-z-index;
3379
- max-width: calc(100vw - 1rem);
3380
- max-height: calc(100vh - 2rem);
3432
+ z-index: var(--q-overlay-z-index);
3433
+ max-width: calc(100vw - var(--q-overlay-viewport-inset-x));
3434
+ max-height: calc(100vh - var(--q-overlay-viewport-inset-y));
3381
3435
  &__underlay {
3382
3436
  position: fixed;
3383
3437
  inset: 0;
3384
- z-index: $overlay-z-index;
3438
+ z-index: var(--q-overlay-z-index);
3385
3439
  &--blur {
3386
3440
  backdrop-filter: blur(2px);
3387
3441
  }
@@ -3392,61 +3446,57 @@ $arrow-tip-radius: 0.1rem;
3392
3446
  width: 100%;
3393
3447
  background-color: var(--q-overlay-bg);
3394
3448
  color: var(--q-overlay-color);
3395
- border: $overlay-border-width solid var(--q-overlay-border-color);
3396
- border-radius: var(--border-radius);
3449
+ border: var(--q-border-width) solid var(--q-overlay-border-color);
3450
+ border-radius: var(--q-border-radius);
3397
3451
  outline: none;
3398
- box-shadow:
3399
- 0 0 #0000,
3400
- 0 0 #0000,
3401
- 0 4px 6px -1px rgb(0 0 0 / 10%),
3402
- 0 2px 4px -2px rgb(0 0 0 / 10%);
3452
+ box-shadow: var(--q-shadow-md);
3403
3453
  }
3404
3454
  &__arrow {
3405
3455
  position: absolute;
3406
3456
  display: block;
3407
- width: $overlay-arrow-width;
3408
- height: $overlay-arrow-height;
3409
- transition: opacity 0.2s ease 0s;
3457
+ width: var(--q-overlay-arrow-size);
3458
+ height: var(--q-overlay-arrow-size);
3459
+ transition: opacity var(--q-transition-duration) var(--q-transition-timing-function);
3410
3460
  transform: rotate(45deg);
3411
3461
  background-color: inherit;
3412
3462
  border: 0 solid var(--q-overlay-border-color);
3413
3463
  }
3414
3464
  &--top {
3415
3465
  #{$this}__arrow {
3416
- bottom: - calc($overlay-arrow-height / 2) - $overlay-border-width;
3417
- border-bottom-right-radius: $arrow-tip-radius;
3418
- border-right-width: $overlay-border-width;
3419
- border-bottom-width: $overlay-border-width;
3466
+ bottom: calc((var(--q-overlay-arrow-size) / -2) - var(--q-border-width));
3467
+ border-bottom-right-radius: var(--q-overlay-arrow-tip-radius);
3468
+ border-right-width: var(--q-border-width);
3469
+ border-bottom-width: var(--q-border-width);
3420
3470
  }
3421
3471
  }
3422
3472
  &--bottom {
3423
3473
  #{$this}__arrow {
3424
- top: - calc($overlay-arrow-height / 2) - $overlay-border-width;
3425
- border-top-left-radius: $arrow-tip-radius;
3426
- border-left-width: $overlay-border-width;
3427
- border-top-width: $overlay-border-width;
3474
+ top: calc((var(--q-overlay-arrow-size) / -2) - var(--q-border-width));
3475
+ border-top-left-radius: var(--q-overlay-arrow-tip-radius);
3476
+ border-left-width: var(--q-border-width);
3477
+ border-top-width: var(--q-border-width);
3428
3478
  }
3429
3479
  }
3430
3480
  &--left {
3431
3481
  #{$this}__arrow {
3432
- right: - calc($overlay-arrow-width / 2) - $overlay-border-width;
3433
- border-top-right-radius: $arrow-tip-radius;
3434
- border-right-width: $overlay-border-width;
3435
- border-top-width: $overlay-border-width;
3482
+ right: calc((var(--q-overlay-arrow-size) / -2) - var(--q-border-width));
3483
+ border-top-right-radius: var(--q-overlay-arrow-tip-radius);
3484
+ border-right-width: var(--q-border-width);
3485
+ border-top-width: var(--q-border-width);
3436
3486
  }
3437
3487
  }
3438
3488
  &--right {
3439
3489
  #{$this}__arrow {
3440
- left: - calc($overlay-arrow-width / 2) - $overlay-border-width;
3441
- border-bottom-left-radius: $arrow-tip-radius;
3442
- border-left-width: $overlay-border-width;
3443
- border-bottom-width: $overlay-border-width;
3490
+ left: calc((var(--q-overlay-arrow-size) / -2) - var(--q-border-width));
3491
+ border-bottom-left-radius: var(--q-overlay-arrow-tip-radius);
3492
+ border-left-width: var(--q-border-width);
3493
+ border-bottom-width: var(--q-border-width);
3444
3494
  }
3445
3495
  }
3446
3496
 
3447
3497
  &--independent {
3448
3498
  inset: 0;
3449
- margin: 1rem auto;
3499
+ margin: var(--q-overlay-viewport-inset-x) auto;
3450
3500
  width: max-content;
3451
3501
  height: max-content;
3452
3502
  }
@@ -3491,12 +3541,12 @@ $arrow-tip-radius: 0.1rem;
3491
3541
  &__meter {
3492
3542
  display: flex;
3493
3543
  flex-direction: column;
3494
- gap: 1rem;
3495
- padding: 1rem;
3544
+ gap: var(--q-space-4);
3545
+ padding: var(--q-space-4);
3496
3546
  &-score {
3497
3547
  display: flex;
3498
3548
  flex-direction: column;
3499
- gap: 0.5rem;
3549
+ gap: var(--q-space-2);
3500
3550
  }
3501
3551
  }
3502
3552
  &__messages {
@@ -3506,11 +3556,11 @@ $arrow-tip-radius: 0.1rem;
3506
3556
  color: var(--q-theme-danger);
3507
3557
  padding: 0;
3508
3558
  margin: 0;
3509
- font-size: 0.75rem;
3510
- gap: 0.25rem;
3559
+ font-size: var(--q-font-size-sm);
3560
+ gap: var(--q-space-1);
3511
3561
  }
3512
3562
  &__inline-messages {
3513
- padding: 0.25rem 0;
3563
+ padding: var(--q-space-1) 0;
3514
3564
  }
3515
3565
  }
3516
3566
  .q-phone-field {
@@ -3523,13 +3573,13 @@ $arrow-tip-radius: 0.1rem;
3523
3573
  width: max-content;
3524
3574
  min-width: max-content;
3525
3575
  padding-block: 0;
3526
- padding-inline: $space-base $space-base * 2;
3576
+ padding-inline: var(--q-space-1) var(--q-space-2);
3527
3577
  }
3528
3578
  .q-field__prepend {
3529
- padding-inline: 0 $space-base;
3579
+ padding-inline: 0 var(--q-space-1);
3530
3580
  }
3531
3581
  .q-field__append {
3532
- padding-inline: $space-base 0;
3582
+ padding-inline: var(--q-space-1) 0;
3533
3583
  }
3534
3584
  }
3535
3585
  &__input {
@@ -3553,7 +3603,7 @@ $arrow-tip-radius: 0.1rem;
3553
3603
  width: 1.5em;
3554
3604
  aspect-ratio: 3 / 2;
3555
3605
  overflow: hidden;
3556
- border-radius: calc(var(--border-radius) / 2);
3606
+ border-radius: calc(var(--q-border-radius) / 2);
3557
3607
  }
3558
3608
  &__flag {
3559
3609
  background-position: center;
@@ -3567,13 +3617,13 @@ $arrow-tip-radius: 0.1rem;
3567
3617
 
3568
3618
  color: var(--CountryFlagIcon-height, var(--q-theme-neutral-dark));
3569
3619
  font-size: 0.65em;
3570
- font-weight: $font-weight-bold;
3620
+ font-weight: var(--q-font-weight-bold);
3571
3621
  }
3572
3622
  &__flag-fallback {
3573
3623
  background-color: rgb(var(--q-theme-neutral-light-rgb) / 25%);
3574
3624
  color: var(--q-theme-neutral-dark);
3575
3625
  font-size: 0.65em;
3576
- font-weight: $font-weight-bold;
3626
+ font-weight: var(--q-font-weight-bold);
3577
3627
  }
3578
3628
  &__validation-message {
3579
3629
  color: var(--q-theme-danger);
@@ -3582,12 +3632,12 @@ $arrow-tip-radius: 0.1rem;
3582
3632
  .q-phone-field__search {
3583
3633
  align-self: stretch;
3584
3634
  width: auto;
3585
- margin-inline: $space-base;
3635
+ margin-inline: var(--q-space-1);
3586
3636
  .q-text-field__input::placeholder {
3587
3637
  color: var(--q-theme-neutral-dark);
3588
3638
  }
3589
3639
  & + .q-select__items {
3590
- --q-phone-field-country-list-max-height: 15rem;
3640
+ --q-phone-field-country-list-max-height: calc(15rem * var(--q-density-scale));
3591
3641
  width: 100%;
3592
3642
  min-width: 0;
3593
3643
  max-height: var(--q-phone-field-country-list-max-height);
@@ -3607,7 +3657,7 @@ $arrow-tip-radius: 0.1rem;
3607
3657
  .q-phone-field__empty {
3608
3658
  width: 100%;
3609
3659
  color: var(--q-theme-neutral-dark);
3610
- padding: $space-base * 4 $space-base * 2;
3660
+ padding: var(--q-space-4) var(--q-space-2);
3611
3661
  text-align: center;
3612
3662
  }
3613
3663
  .q-popover {
@@ -3615,11 +3665,11 @@ $arrow-tip-radius: 0.1rem;
3615
3665
  position: relative;
3616
3666
  display: flex;
3617
3667
  flex-direction: column;
3618
- max-width: 276px;
3619
- gap: $space-base * 2;
3620
- padding: $space-base * 4;
3621
- font-size: calc($font-size-base * 0.9);
3622
- line-height: 1.5;
3668
+ max-width: calc(276px * var(--q-density-scale));
3669
+ gap: var(--q-space-2);
3670
+ padding: var(--q-space-4);
3671
+ font-size: var(--q-font-size-sm);
3672
+ line-height: var(--q-line-height-md);
3623
3673
  word-break: normal;
3624
3674
  word-spacing: normal;
3625
3675
  overflow-wrap: break-word;
@@ -3629,11 +3679,11 @@ $arrow-tip-radius: 0.1rem;
3629
3679
  &__header {
3630
3680
  display: flex;
3631
3681
  align-items: center;
3632
- gap: $space-base;
3682
+ gap: var(--q-space-1);
3633
3683
  }
3634
3684
  &__title {
3635
3685
  margin: 0;
3636
- font-size: $font-size-base;
3686
+ font-size: var(--q-font-size-md);
3637
3687
  }
3638
3688
  }
3639
3689
  $transition-speed: 0.4s !default;
@@ -3642,35 +3692,47 @@ $transition-speed: 0.4s !default;
3642
3692
  background-position: 0 0;
3643
3693
  }
3644
3694
  to {
3645
- background-position: 1rem 0;
3695
+ background-position: var(--q-progress-stripe-size) 0;
3646
3696
  }
3647
3697
  }
3648
- @keyframes q-progress-pulse {
3698
+ @keyframes q-progress-shimmer {
3649
3699
  0% {
3650
- transform: scale(0, 0);
3651
- opacity: 0.4;
3700
+ transform: translateX(-120%);
3701
+ opacity: 0;
3702
+ }
3703
+ 12% {
3704
+ opacity: 1;
3705
+ }
3706
+ 72% {
3707
+ opacity: 1;
3708
+ }
3709
+ 88% {
3710
+ transform: translateX(120%);
3711
+ opacity: 0;
3652
3712
  }
3653
3713
  100% {
3654
- transform: scale(10, 10);
3714
+ transform: translateX(120%);
3655
3715
  opacity: 0;
3656
3716
  }
3657
3717
  }
3658
3718
  .q-progress {
3659
- $this: &;
3660
3719
  --q-progress-main-color: var(--q-theme-primary);
3661
3720
  --q-progress-main-color-rgb: var(--q-theme-primary-rgb);
3662
3721
  --q-progress-on-main-color: var(--q-theme-on-primary);
3663
- --q-progress-on-main-color-rgb: var(--q-theme-on-primary-rgb);
3722
+ --q-progress-bar-height: calc(1.2rem * var(--q-density-scale));
3723
+ --q-progress-bar-height-mini: calc(0.35rem * var(--q-density-scale));
3724
+ --q-progress-stripe-size: calc(1rem * var(--q-density-scale));
3725
+ --q-progress-values-gap: calc(5px * var(--q-density-scale));
3664
3726
  &__bar {
3665
3727
  display: flex;
3666
3728
  overflow: hidden;
3667
- height: 1.2rem;
3729
+ height: var(--q-progress-bar-height);
3668
3730
  line-height: 0;
3669
- font-size: 0.75rem;
3731
+ font-size: var(--q-font-size-sm);
3670
3732
  background-color: var(--q-theme-neutral-light);
3671
- border-radius: $border-radius;
3733
+ border-radius: var(--q-border-radius);
3672
3734
  &--mini {
3673
- height: 0.35rem;
3735
+ height: var(--q-progress-bar-height-mini);
3674
3736
  font-size: 0;
3675
3737
  }
3676
3738
  }
@@ -3687,6 +3749,7 @@ $transition-speed: 0.4s !default;
3687
3749
  transition: width $transition-speed ease;
3688
3750
  &-text {
3689
3751
  position: relative;
3752
+ z-index: 1;
3690
3753
  margin: 0 10%;
3691
3754
  height: 100%;
3692
3755
  text-align: center;
@@ -3707,48 +3770,44 @@ $transition-speed: 0.4s !default;
3707
3770
  transparent 75%,
3708
3771
  transparent
3709
3772
  );
3710
- background-size: 1rem 1rem;
3773
+ background-size: var(--q-progress-stripe-size) var(--q-progress-stripe-size);
3711
3774
  }
3712
3775
  &--animated {
3713
- animation: 1s linear infinite q-progress-move;
3776
+
3714
3777
  &::before {
3715
3778
  content: '';
3716
3779
  position: absolute;
3717
- left: -100%;
3718
- width: 100%;
3719
- height: 100%;
3720
- background-image: radial-gradient(
3721
- circle at 100%,
3722
- var(--q-theme-neutral-dark) 75%,
3723
- transparent 35%
3780
+ top: 0;
3781
+ bottom: 0;
3782
+ left: 0;
3783
+ z-index: 0;
3784
+ width: 50%;
3785
+ pointer-events: none;
3786
+ background-image: linear-gradient(
3787
+ 90deg,
3788
+ transparent 0%,
3789
+ rgb(255 255 255 / 20%) 35%,
3790
+ rgb(255 255 255 / 45%) 50%,
3791
+ rgb(255 255 255 / 20%) 65%,
3792
+ transparent 100%
3724
3793
  );
3725
- animation: 5s linear infinite q-progress-pulse;
3794
+ animation: 1.8s linear infinite q-progress-shimmer;
3795
+ }
3796
+
3797
+ &.q-progress__fill--striped {
3798
+ animation: 1s linear infinite q-progress-move;
3726
3799
  }
3727
3800
  }
3728
3801
  }
3729
3802
  &__values {
3730
3803
  display: flex;
3731
3804
  justify-content: space-between;
3732
- margin-top: 5px;
3805
+ margin-top: var(--q-progress-values-gap);
3733
3806
  &-min,
3734
3807
  &-max {
3735
3808
  position: relative;
3736
3809
  }
3737
3810
  }
3738
-
3739
- @mixin color-variant($color) {
3740
- &--#{$color} {
3741
- --q-progress-main-color: var(--q-theme-#{$color});
3742
- --q-progress-main-color-rgb: var(--q-theme-#{$color}-rgb);
3743
- --q-progress-on-main-color: var(--q-theme-on-#{$color});
3744
- --q-progress-on-main-color-rgb: var(--q-theme-on-#{$color}-rgb);
3745
- --q-progress-on-hover-color: var(--q-theme-on-#{$color});
3746
- --q-progress-on-hover-color-rgb: var(--q-theme-on-#{$color}-rgb);
3747
- }
3748
- }
3749
- @each $color, $value in $theme-colors {
3750
- @include color-variant($color);
3751
- }
3752
3811
  }
3753
3812
  @media (prefers-reduced-motion: reduce) {
3754
3813
  .q-progress__fill {
@@ -3758,34 +3817,39 @@ $transition-speed: 0.4s !default;
3758
3817
  &::before {
3759
3818
  display: none;
3760
3819
  }
3820
+ &.q-progress__fill--striped {
3821
+ animation: none;
3822
+ }
3761
3823
  }
3762
3824
  }
3763
3825
  }
3764
3826
  $table-header-bg: rgb(var(--q-theme-neutral-light-rgb) / 25%);
3765
3827
  $row-hover-bg: rgb(var(--q-theme-primary-light-rgb) / 50%);
3766
3828
  $row-selected-bg: rgb(var(--q-theme-primary-rgb) / 15%);
3767
- $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
3829
+ $base-border: var(--q-border-width) solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
3768
3830
  .q-property-list {
3769
3831
  margin: 0;
3770
- font-size: 0.9rem;
3832
+ font-size: var(--q-font-size-md);
3771
3833
  display: inline-flex;
3772
3834
  width: auto;
3773
3835
  flex-direction: column;
3774
3836
  border: $base-border;
3837
+ border-radius: var(--q-border-radius);
3838
+ overflow: hidden;
3775
3839
  &-panel {
3776
- padding: 0.4rem;
3840
+ padding: calc(0.4rem * var(--q-density-scale));
3777
3841
  display: flex;
3778
3842
  flex-direction: column;
3779
3843
  overflow-y: auto;
3780
- min-height: 50px;
3781
- max-height: 80px;
3782
- gap: 1rem;
3844
+ min-height: calc(50px * var(--q-density-scale));
3845
+ max-height: calc(80px * var(--q-density-scale));
3846
+ gap: var(--q-space-4);
3783
3847
  }
3784
3848
  &--side-panel {
3785
3849
  flex-direction: row;
3786
3850
  .q-property-list-panel {
3787
3851
  border-left: $base-border;
3788
- width: 250px;
3852
+ width: calc(250px * var(--q-density-scale));
3789
3853
  max-height: unset;
3790
3854
  }
3791
3855
  }
@@ -3808,7 +3872,7 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
3808
3872
  }
3809
3873
  &__header {
3810
3874
  background: $table-header-bg;
3811
- height: 25px;
3875
+ height: calc(25px * var(--q-density-scale));
3812
3876
  }
3813
3877
  &__row {
3814
3878
  &:hover {
@@ -3825,10 +3889,10 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
3825
3889
  }
3826
3890
  }
3827
3891
  &__cell {
3828
- padding: 0.25rem 0.5rem;
3892
+ padding: var(--q-space-1) var(--q-space-2);
3829
3893
  &--label {
3830
3894
  width: 20%;
3831
- font-size: 0.85rem;
3895
+ font-size: var(--q-font-size-sm);
3832
3896
  text-wrap: nowrap;
3833
3897
  opacity: 0.8;
3834
3898
  }
@@ -3845,19 +3909,19 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
3845
3909
  &-group {
3846
3910
  cursor: pointer;
3847
3911
  td {
3848
- padding: 0.2rem 0.25rem;
3912
+ padding: calc(0.2rem * var(--q-density-scale)) var(--q-space-1);
3849
3913
  }
3850
3914
  &__content {
3851
3915
  display: flex;
3852
3916
  align-items: center;
3853
3917
  }
3854
3918
  ~ .q-property-list__row .q-property-list__cell-label {
3855
- padding: 0 2rem;
3919
+ padding: 0 calc(2rem * var(--q-density-scale));
3856
3920
  }
3857
3921
  &--no-toggle {
3858
3922
  cursor: default;
3859
3923
  td {
3860
- padding: 0.5rem 1rem;
3924
+ padding: var(--q-space-2) var(--q-space-4);
3861
3925
  }
3862
3926
  }
3863
3927
  }
@@ -3868,18 +3932,19 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
3868
3932
  .q-radio-group {
3869
3933
  $this: &;
3870
3934
  --q-radio-group-columns: 1;
3871
- display: flex;
3872
- flex-direction: column;
3873
- gap: calc($space-base * 2);
3935
+ &.q-field--label-left,
3936
+ &.q-field--label-right {
3937
+ gap: var(--q-space-2);
3938
+ }
3874
3939
  &__group {
3875
3940
  display: flex;
3876
3941
  flex-direction: column;
3877
- gap: calc($space-base * 2);
3878
3942
  }
3879
3943
 
3880
3944
  &--horizontal {
3881
3945
  #{$this}__group {
3882
3946
  flex-direction: row;
3947
+ gap: var(--q-space-2);
3883
3948
  }
3884
3949
  }
3885
3950
 
@@ -3890,25 +3955,38 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
3890
3955
  }
3891
3956
  .q-radio-button {
3892
3957
  $this: &;
3893
- --q-radio-button-circle-size: 1rem;
3958
+ --q-radio-button-circle-size: var(--q-selection-control-size);
3894
3959
  --q-radio-button-checked-color: var(--q-theme-primary);
3895
3960
  display: flex;
3896
3961
  width: fit-content;
3897
3962
  align-items: center;
3898
- gap: calc($space-base * 1.5);
3963
+ box-sizing: border-box;
3964
+ height: var(--q-interactive-height);
3965
+ min-height: var(--q-interactive-height);
3966
+ gap: calc(var(--q-space-1) * 1.5);
3967
+ font-size: var(--q-font-size-md);
3968
+
3969
+ line-height: var(--q-radio-button-circle-size);
3970
+
3971
+ padding-block: calc((var(--q-interactive-height) - var(--q-radio-button-circle-size)) / 2);
3899
3972
  cursor: pointer;
3900
- label {
3901
- line-height: 1;
3973
+ > label {
3974
+ font-size: var(--q-font-size-md);
3975
+ line-height: inherit;
3902
3976
  cursor: pointer;
3903
3977
  }
3904
3978
  &__input {
3905
3979
  position: relative;
3980
+ box-sizing: border-box;
3981
+ flex: 0 0 var(--q-radio-button-circle-size);
3906
3982
  width: var(--q-radio-button-circle-size);
3907
3983
  height: var(--q-radio-button-circle-size);
3984
+ aspect-ratio: 1;
3985
+ margin: 0;
3986
+ padding: 0;
3908
3987
  background-color: transparent;
3909
- flex-shrink: 0;
3910
3988
  appearance: none;
3911
- border-width: 1px;
3989
+ border: var(--q-border-width) solid var(--q-border-color);
3912
3990
  border-radius: 50%;
3913
3991
  font-size: var(--q-radio-button-circle-size);
3914
3992
  cursor: pointer;
@@ -4004,76 +4082,75 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
4004
4082
  }
4005
4083
  }
4006
4084
 
4007
- &--small {
4008
- --q-radio-button-circle-size: 0.875rem;
4009
- }
4010
- &--large {
4011
- --q-radio-button-circle-size: 1.5rem;
4012
- padding: 0.625rem;
4013
- }
4085
+ @include q-size-modifiers;
4014
4086
  }
4015
4087
  .q-radio-group--focus-style .q-radio-button:focus-within {
4016
- outline: $outline;
4088
+ outline: var(--q-focus-ring);
4017
4089
  }
4018
4090
  .q-section {
4019
4091
  $this: &;
4092
+ --q-section-padding-y: var(--q-space-2);
4093
+ --q-section-padding-x: var(--q-space-4);
4094
+ --q-section-padding-bottom: var(--q-space-4);
4095
+ --q-section-title-size: calc(var(--q-font-size-lg) * 1.2);
4096
+ --q-section-minor-title-size: var(--q-font-size-md);
4020
4097
  display: inline-block;
4021
4098
  overflow-wrap: break-word;
4022
4099
  background-color: var(--q-theme-container);
4023
4100
  border-width: 1px;
4024
- border-bottom: $group-border-bottom;
4025
- padding: 0.5rem 1rem 1rem;
4026
- border-radius: var(--border-radius);
4101
+ border-bottom: var(--q-group-border-bottom);
4102
+ padding: var(--q-section-padding-y) var(--q-section-padding-x) var(--q-section-padding-bottom);
4103
+ border-radius: var(--q-border-radius);
4027
4104
  position: relative;
4028
4105
  max-width: 100%;
4029
4106
  &:focus-visible {
4030
- outline: $outline;
4031
- border-radius: var(--border-radius);
4107
+ outline: var(--q-focus-ring);
4108
+ border-radius: var(--q-border-radius);
4032
4109
  }
4033
4110
  &__title {
4034
- font-size: 1.2rem;
4035
- line-height: 1rem;
4036
- letter-spacing: 0.02rem;
4111
+ font-size: var(--q-section-title-size);
4112
+ line-height: var(--q-line-height-md);
4113
+ letter-spacing: var(--q-letter-spacing-md);
4037
4114
  color: var(--q-theme-primary);
4038
- text-transform: $headings-text-transform;
4115
+ text-transform: var(--q-headings-text-transform);
4039
4116
  margin: 0;
4040
- margin-top: 0.25rem;
4117
+ margin-top: var(--q-space-1);
4041
4118
  display: flex;
4042
4119
  align-items: flex-start;
4043
4120
  width: fit-content;
4044
- gap: 0.25rem;
4045
- margin-bottom: 0.5rem;
4121
+ gap: var(--q-space-1);
4122
+ margin-bottom: var(--q-space-2);
4046
4123
  }
4047
4124
 
4048
4125
  &--background {
4049
4126
  background-color: rgb(var(--q-theme-primary-light-rgb) / 50%);
4050
- padding: 0.5rem 1rem 1rem;
4127
+ padding: var(--q-section-padding-y) var(--q-section-padding-x) var(--q-section-padding-bottom);
4051
4128
  }
4052
4129
  &--minor {
4053
4130
  background-color: transparent;
4054
4131
  border: none;
4055
4132
  border-radius: 0;
4056
- padding: 0.5rem 0 0;
4133
+ padding: var(--q-space-2) 0 0;
4057
4134
  }
4058
4135
  &--minor-border-top {
4059
4136
  background-color: transparent;
4060
4137
  border: none;
4061
- border-top: 1px solid var(--q-theme-neutral-light);
4138
+ border-top: var(--q-border-width) solid var(--q-theme-neutral-light);
4062
4139
  border-radius: 0;
4063
- margin-top: 0.5rem;
4064
- padding: 0.25rem 0;
4140
+ margin-top: var(--q-space-2);
4141
+ padding: var(--q-space-1) 0;
4065
4142
  }
4066
4143
  &--minor,
4067
4144
  &--minor-border-top {
4068
4145
  #{$this}__title {
4069
- font-size: 0.9rem;
4070
- line-height: 1;
4146
+ font-size: var(--q-section-minor-title-size);
4147
+ line-height: var(--q-line-height-md);
4071
4148
  letter-spacing: initial;
4072
4149
  color: var(--q-theme-neutral-dark);
4073
4150
  text-transform: none;
4074
4151
  font-weight: 600;
4075
- margin-bottom: 0.25rem;
4076
- margin-top: 0.25rem;
4152
+ margin-bottom: var(--q-space-1);
4153
+ margin-top: var(--q-space-1);
4077
4154
  }
4078
4155
  }
4079
4156
  &--title-background {
@@ -4082,41 +4159,41 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
4082
4159
  position: absolute;
4083
4160
  top: 0;
4084
4161
  left: 0;
4085
- height: 30px;
4162
+ height: calc(30px * var(--q-density-scale));
4086
4163
  width: 100%;
4087
4164
  content: '';
4088
4165
  background-color: rgb(var(--q-theme-neutral-light-rgb) / 25%);
4089
- border-radius: var(--border-radius) var(--border-radius) 0 0;
4166
+ border-radius: var(--q-border-radius) var(--q-border-radius) 0 0;
4090
4167
  }
4091
4168
  #{$this}__title {
4092
- padding: 0.5rem 1rem;
4169
+ padding: var(--q-space-2) var(--q-space-4);
4093
4170
  margin: 0;
4094
- font-size: 0.9rem;
4171
+ font-size: var(--q-font-size-md);
4095
4172
  font-weight: 700;
4096
- line-height: 1;
4097
- letter-spacing: 0.01rem;
4173
+ line-height: var(--q-line-height-md);
4174
+ letter-spacing: var(--q-letter-spacing-sm);
4098
4175
  color: var(--q-theme-on-background);
4099
4176
  text-transform: none;
4100
4177
  z-index: 10;
4101
4178
  position: relative;
4102
4179
  }
4103
4180
  > #{$this}__content {
4104
- padding: 0.2rem 1rem 1rem;
4181
+ padding: calc(0.2rem * var(--q-density-scale)) var(--q-space-4) var(--q-space-4);
4105
4182
  }
4106
4183
  }
4107
4184
  &--subsection {
4108
4185
  border: none;
4109
- margin-left: 0.625rem;
4110
- margin-bottom: 0.625rem;
4186
+ margin-left: calc(0.625rem * var(--q-density-scale));
4187
+ margin-bottom: calc(0.625rem * var(--q-density-scale));
4111
4188
  #{$this}__title {
4112
- font-size: 0.9rem;
4113
- line-height: 1;
4189
+ font-size: var(--q-section-minor-title-size);
4190
+ line-height: var(--q-line-height-md);
4114
4191
  letter-spacing: initial;
4115
4192
  background-color: transparent;
4116
4193
  color: var(--q-theme-neutral-dark);
4117
4194
  text-transform: none;
4118
4195
  font-weight: 600;
4119
- margin-bottom: 0.25rem;
4196
+ margin-bottom: var(--q-space-1);
4120
4197
  }
4121
4198
  }
4122
4199
 
@@ -4147,7 +4224,7 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
4147
4224
  &--disabled {
4148
4225
  .q-badge--disabled {
4149
4226
  opacity: 1;
4150
- font-weight: $font-weight-black;
4227
+ font-weight: var(--q-font-weight-black);
4151
4228
  color: var(--q-theme-neutral-dark);
4152
4229
  }
4153
4230
  }
@@ -4177,13 +4254,14 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
4177
4254
  }
4178
4255
  &__value-container {
4179
4256
  display: flex;
4180
- gap: 0.1rem;
4257
+ align-items: center;
4258
+ gap: var(--q-space-1);
4181
4259
  overflow: hidden;
4182
4260
  width: 100%;
4183
- height: 1.35rem;
4261
+ min-height: var(--q-control-height-sm);
4184
4262
  #{$this}__badge {
4185
4263
  &-count {
4186
- font-weight: $font-weight-black;
4264
+ font-weight: var(--q-font-weight-black);
4187
4265
  &--clickable {
4188
4266
  cursor: pointer;
4189
4267
  }
@@ -4206,33 +4284,25 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
4206
4284
  cursor: inherit;
4207
4285
  }
4208
4286
  &__chevron.q-button {
4209
- padding: 0.1rem;
4210
- opacity: 0.5;
4211
- svg {
4212
- width: $icon-size-sm;
4213
- height: $icon-size-sm;
4214
- }
4215
- &:hover {
4216
- cursor: inherit;
4217
- }
4287
+ @include q-field-affix-button;
4218
4288
  }
4219
4289
  &__body {
4220
4290
  display: flex;
4221
4291
  flex-direction: column;
4222
4292
  align-items: flex-start;
4223
- gap: $space-base;
4293
+ gap: var(--q-space-1);
4224
4294
  width: 100%;
4225
- padding: $space-base 0;
4295
+ padding: var(--q-space-1) 0;
4226
4296
  outline: none;
4227
4297
  .q-list-item {
4228
- width: calc(100% - 2 * $space-base);
4229
- margin-inline: $space-base;
4298
+ width: calc(100% - 2 * var(--q-space-1));
4299
+ margin-inline: var(--q-space-1);
4230
4300
  }
4231
4301
  }
4232
4302
  &__items {
4233
4303
  min-width: fit-content;
4234
4304
  width: 100%;
4235
- max-height: 240px;
4305
+ max-height: calc(240px * var(--q-density-scale));
4236
4306
  align-items: start;
4237
4307
  }
4238
4308
  &__loader {
@@ -4242,11 +4312,11 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
4242
4312
  }
4243
4313
  &__loader,
4244
4314
  &__empty {
4245
- margin: calc(4 * $space-base) 0;
4315
+ margin: var(--q-space-4) 0;
4246
4316
  }
4247
4317
 
4248
4318
  .q-field__prepend {
4249
- padding-inline: $space-base * 2;
4319
+ padding-inline: var(--q-space-2);
4250
4320
  }
4251
4321
  }
4252
4322
  $sidebar-size-small: 19rem;
@@ -4295,6 +4365,7 @@ $sidebar-sizes: (
4295
4365
  display: flex;
4296
4366
  flex-direction: column;
4297
4367
  flex-shrink: 0;
4368
+ width: calc(50px * var(--q-density-scale));
4298
4369
  background-color: var(--q-theme-container);
4299
4370
  z-index: 10;
4300
4371
  }
@@ -4311,9 +4382,9 @@ $sidebar-sizes: (
4311
4382
  border-width: 0;
4312
4383
  border-bottom-width: 1px;
4313
4384
  border-bottom-color: $sidebar-border-color !important;
4314
- font-size: 0.6rem;
4385
+ font-size: calc(var(--q-font-size-sm) * 0.8);
4315
4386
  .q-icon {
4316
- font-size: 20px;
4387
+ font-size: var(--q-icon-size-lg);
4317
4388
  }
4318
4389
  }
4319
4390
  .q-sidebar__indicator {
@@ -4339,8 +4410,8 @@ $sidebar-sizes: (
4339
4410
  .q-sidebar-panel__footer {
4340
4411
  display: flex;
4341
4412
  align-items: center;
4342
- gap: 0.5rem;
4343
- margin: 1rem;
4413
+ gap: var(--q-space-2);
4414
+ margin: var(--q-space-4);
4344
4415
  }
4345
4416
  .q-sidebar-panel__header {
4346
4417
  margin-bottom: 0;
@@ -4354,12 +4425,12 @@ $sidebar-sizes: (
4354
4425
  .q-sidebar-panel__content {
4355
4426
  flex: 1 1 0%;
4356
4427
  overflow: auto;
4357
- margin: 1rem;
4428
+ margin: var(--q-space-4);
4358
4429
  }
4359
4430
  .q-sidebar-panel__handle {
4360
4431
  position: absolute;
4361
4432
  top: 0;
4362
- width: 10px;
4433
+ width: calc(10px * var(--q-density-scale));
4363
4434
  height: 100%;
4364
4435
  cursor: ew-resize;
4365
4436
  display: flex;
@@ -4373,10 +4444,10 @@ $sidebar-sizes: (
4373
4444
  right: 0;
4374
4445
  }
4375
4446
  .q-sidebar-panel__grip {
4376
- width: 4px;
4377
- height: 24px;
4447
+ width: var(--q-space-1);
4448
+ height: var(--q-space-6);
4378
4449
  background-color: var(--q-theme-neutral);
4379
- border-radius: 2px;
4450
+ border-radius: calc(2px * var(--q-density-scale));
4380
4451
  }
4381
4452
  @include sidebar-size-modifiers('', width);
4382
4453
  @include sidebar-size-modifiers('min', min-width);
@@ -4416,7 +4487,7 @@ $sidebar-sizes: (
4416
4487
  overflow: hidden;
4417
4488
  background-color: var(--q-theme-neutral-light);
4418
4489
  animation: fade-in 1s;
4419
- border-radius: var(--border-radius);
4490
+ border-radius: var(--q-border-radius);
4420
4491
  &::after {
4421
4492
  position: absolute;
4422
4493
  inset: 0;
@@ -4438,8 +4509,8 @@ $sidebar-sizes: (
4438
4509
  height: 1em;
4439
4510
  }
4440
4511
  &--icon {
4441
- width: 20px;
4442
- height: 20px;
4512
+ width: var(--q-icon-size-lg);
4513
+ height: var(--q-icon-size-lg);
4443
4514
  #{$this}__bone {
4444
4515
  border-radius: 50%;
4445
4516
  }
@@ -4460,7 +4531,7 @@ $sidebar-sizes: (
4460
4531
  }
4461
4532
  $spinner-color: var(--q-theme-primary);
4462
4533
  .q-spinner-loader {
4463
- font-size: 48px;
4534
+ font-size: calc(48px * var(--q-density-scale));
4464
4535
  width: 1em;
4465
4536
  padding: 0.15em;
4466
4537
  aspect-ratio: 1;
@@ -4483,26 +4554,37 @@ $spinner-color: var(--q-theme-primary);
4483
4554
 
4484
4555
 
4485
4556
 
4486
- --q-switch-inner-padding: 2px;
4557
+ --q-switch-inner-padding: calc(2px * var(--q-density-scale));
4487
4558
  --q-switch-border-radius: 9999px;
4488
4559
  --q-switch-transition-duration: 0.15s;
4489
4560
  --q-switch-transition-easing: ease-out;
4490
4561
 
4491
- --q-switch-label-padding-v: 10px;
4492
- --q-switch-label-padding-h: 15px;
4493
- --q-switch-font-size: 0.75rem;
4562
+ --q-switch-label-padding-v: calc(10px * var(--q-density-scale));
4563
+ --q-switch-label-padding-h: calc(15px * var(--q-density-scale));
4564
+ --q-switch-font-size: var(--q-font-size-sm);
4565
+
4566
+ --q-switch-label-block-size: calc(
4567
+ var(--q-switch-label-padding-v) * 2 + var(--q-switch-font-size)
4568
+ );
4569
+ --q-switch-drawn-height: calc(
4570
+ var(--q-switch-inner-padding) * 2 + var(--q-switch-label-block-size)
4571
+ );
4572
+ --q-switch-hit-padding-block: max(
4573
+ 0px,
4574
+ calc((var(--q-interactive-height) - var(--q-switch-drawn-height)) / 2)
4575
+ );
4494
4576
 
4495
4577
  --q-switch-shadow-color-primary: rgb(var(--q-theme-on-background-rgb) / 20%);
4496
4578
  --q-switch-shadow-color-secondary: rgb(var(--q-theme-on-background-rgb) / 10%);
4497
- --q-switch-shadow-blur-base: 3px;
4498
- --q-switch-shadow-offset-y: 1px;
4499
- --q-switch-shadow-spread: 2px;
4579
+ --q-switch-shadow-blur-base: calc(3px * var(--q-density-scale));
4580
+ --q-switch-shadow-offset-y: calc(1px * var(--q-density-scale));
4581
+ --q-switch-shadow-spread: calc(2px * var(--q-density-scale));
4500
4582
 
4501
4583
  --q-switch-shadow-color-primary-hover: rgb(var(--q-theme-on-background-rgb) / 30%);
4502
4584
  --q-switch-shadow-color-secondary-hover: rgb(var(--q-theme-on-background-rgb) / 15%);
4503
- --q-switch-shadow-blur-hover: 6px;
4504
- --q-switch-shadow-offset-y-hover: 2px;
4505
- --q-switch-shadow-spread-hover: 4px;
4585
+ --q-switch-shadow-blur-hover: calc(6px * var(--q-density-scale));
4586
+ --q-switch-shadow-offset-y-hover: calc(2px * var(--q-density-scale));
4587
+ --q-switch-shadow-spread-hover: calc(4px * var(--q-density-scale));
4506
4588
 
4507
4589
  --q-switch-disabled-opacity: 0.5;
4508
4590
  --q-switch-hover-background-opacity: 0.5;
@@ -4518,25 +4600,18 @@ $spinner-color: var(--q-theme-primary);
4518
4600
  align-items: center;
4519
4601
  position: relative;
4520
4602
  white-space: nowrap;
4521
- background: var(--q-switch-unchecked-background);
4603
+ box-sizing: border-box;
4604
+ height: var(--q-interactive-height);
4605
+ min-height: var(--q-interactive-height);
4606
+
4607
+ padding: var(--q-switch-hit-padding-block) 0;
4608
+ background: transparent;
4522
4609
  border-radius: var(--q-switch-border-radius);
4523
- padding: var(--q-switch-inner-padding);
4524
- transition: background var(--q-switch-transition-duration) var(--q-switch-transition-easing);
4610
+ cursor: pointer;
4525
4611
 
4526
4612
 
4527
4613
 
4528
- &--small {
4529
- --q-switch-inner-padding: 1px;
4530
- --q-switch-label-padding-v: 8px;
4531
- --q-switch-label-padding-h: 12px;
4532
- --q-switch-font-size: 0.6875rem;
4533
- }
4534
- &--large {
4535
- --q-switch-inner-padding: 3px;
4536
- --q-switch-label-padding-v: 12px;
4537
- --q-switch-label-padding-h: 18px;
4538
- --q-switch-font-size: 0.875rem;
4539
- }
4614
+ @include q-size-modifiers;
4540
4615
 
4541
4616
 
4542
4617
 
@@ -4558,9 +4633,10 @@ $spinner-color: var(--q-theme-primary);
4558
4633
  }
4559
4634
  .q-switch__input {
4560
4635
  position: absolute;
4561
- inset: 0;
4562
- width: 100%;
4563
- height: 100%;
4636
+ inset: var(--q-switch-hit-padding-block) 0 var(--q-switch-hit-padding-block) 0;
4637
+
4638
+ width: auto;
4639
+ height: auto;
4564
4640
  margin: 0;
4565
4641
  padding: 0;
4566
4642
  appearance: none;
@@ -4571,7 +4647,7 @@ $spinner-color: var(--q-theme-primary);
4571
4647
  z-index: 2;
4572
4648
 
4573
4649
  &:focus-visible {
4574
- outline: $outline;
4650
+ outline: var(--q-focus-ring);
4575
4651
  }
4576
4652
 
4577
4653
  &:disabled {
@@ -4586,6 +4662,11 @@ $spinner-color: var(--q-theme-primary);
4586
4662
  align-items: center;
4587
4663
  width: 100%;
4588
4664
  position: relative;
4665
+ box-sizing: border-box;
4666
+ padding: var(--q-switch-inner-padding);
4667
+ background: var(--q-switch-unchecked-background);
4668
+ border-radius: var(--q-switch-border-radius);
4669
+ transition: background var(--q-switch-transition-duration) var(--q-switch-transition-easing);
4589
4670
  }
4590
4671
  .q-switch__label {
4591
4672
  display: inline-flex;
@@ -4615,13 +4696,17 @@ $spinner-color: var(--q-theme-primary);
4615
4696
  padding-left: var(--q-switch-label-padding-v);
4616
4697
  }
4617
4698
  .q-switch--with-labels {
4618
- --q-switch-label-padding-v: 4px;
4699
+ --q-switch-label-padding-v: calc(
4700
+ 4px * var(--q-density-scale)
4701
+ );
4619
4702
  .q-switch__label {
4620
4703
  padding: var(--q-switch-label-padding-v) var(--q-switch-label-padding-h);
4621
4704
  }
4622
4705
  }
4623
4706
  .q-switch--checked:not(.q-switch--readonly) {
4624
- background: var(--q-switch-checked-background);
4707
+ .q-switch__labels {
4708
+ background: var(--q-switch-checked-background);
4709
+ }
4625
4710
  .q-switch__label--off {
4626
4711
  color: var(--q-switch-on-checked-background);
4627
4712
  }
@@ -4672,57 +4757,96 @@ $spinner-color: var(--q-theme-primary);
4672
4757
  }
4673
4758
  }
4674
4759
  .q-tabs {
4760
+ --q-tabs-indicator-thickness: calc(4px * var(--q-density-scale));
4675
4761
  display: flex;
4676
4762
  gap: 0;
4677
4763
  &--horizontal {
4678
4764
  flex-direction: column;
4679
4765
  .q-tabs__list {
4680
4766
  width: 100%;
4681
- border-bottom: 1px solid $border;
4767
+
4768
+
4769
+
4770
+ &::after {
4771
+ content: '';
4772
+ position: absolute;
4773
+ inset-inline: 0;
4774
+ bottom: 0;
4775
+ z-index: 0;
4776
+ height: 1px;
4777
+ pointer-events: none;
4778
+ background-color: var(--q-border-color);
4779
+ }
4780
+ }
4781
+ .q-tabs__overflow {
4782
+ position: relative;
4783
+ z-index: 1;
4682
4784
  }
4683
4785
  .q-tabs__tablist {
4684
4786
  flex-direction: row;
4685
- width: 100%;
4686
- }
4687
- .q-tab {
4688
- margin-bottom: -1px;
4787
+
4788
+
4789
+ width: max-content;
4790
+ min-width: 100%;
4689
4791
  }
4690
4792
  .q-tabs__panels {
4691
- border: 1px solid $border;
4793
+ border: var(--q-border-width) solid var(--q-border-color);
4692
4794
  border-top: 0;
4693
4795
  border-start-start-radius: 0;
4694
4796
  border-start-end-radius: 0;
4695
- border-end-start-radius: $border-radius;
4696
- border-end-end-radius: $border-radius;
4697
- padding-inline: calc($space-base * 2);
4797
+ border-end-start-radius: var(--q-border-radius);
4798
+ border-end-end-radius: var(--q-border-radius);
4799
+ padding-inline: var(--q-space-2);
4698
4800
  }
4699
4801
  }
4700
4802
  &--vertical {
4701
4803
  flex-direction: row;
4702
4804
  align-items: stretch;
4703
4805
  .q-tabs__list {
4806
+ display: flex;
4704
4807
  flex: 0 0 auto;
4808
+ flex-direction: column;
4809
+ align-self: stretch;
4705
4810
  width: max-content;
4706
4811
  max-width: 100%;
4707
- border-inline-end: 1px solid $border;
4812
+ min-height: 0;
4813
+ &::after {
4814
+ content: '';
4815
+ position: absolute;
4816
+ inset-block: 0;
4817
+ inset-inline-end: 0;
4818
+ z-index: 0;
4819
+ width: 1px;
4820
+ pointer-events: none;
4821
+ background-color: var(--q-border-color);
4822
+ }
4823
+ }
4824
+ .q-tabs__overflow {
4825
+ position: relative;
4826
+ z-index: 1;
4827
+ flex: 1 1 auto;
4828
+ width: auto;
4829
+ height: 100%;
4830
+ min-height: 0;
4708
4831
  }
4709
4832
  .q-tabs__tablist {
4710
4833
  flex-direction: column;
4834
+ height: max-content;
4835
+ min-height: 100%;
4711
4836
  }
4712
4837
  .q-tab {
4713
4838
  justify-content: flex-start;
4714
- margin-inline-end: -1px;
4715
4839
  }
4716
4840
  .q-tabs__panels {
4717
4841
  flex: 1;
4718
4842
  min-width: 0;
4719
- border: 1px solid $border;
4843
+ border: var(--q-border-width) solid var(--q-border-color);
4720
4844
  border-inline-start: 0;
4721
4845
  border-start-start-radius: 0;
4722
4846
  border-end-start-radius: 0;
4723
- border-start-end-radius: $border-radius;
4724
- border-end-end-radius: $border-radius;
4725
- padding-inline: calc($space-base * 2);
4847
+ border-start-end-radius: var(--q-border-radius);
4848
+ border-end-end-radius: var(--q-border-radius);
4849
+ padding-inline: var(--q-space-2);
4726
4850
  }
4727
4851
  }
4728
4852
 
@@ -4730,7 +4854,7 @@ $spinner-color: var(--q-theme-primary);
4730
4854
  &--line {
4731
4855
  .q-tabs__indicator {
4732
4856
  position: absolute;
4733
- background-color: $primary;
4857
+ background-color: var(--q-theme-primary);
4734
4858
  opacity: 0;
4735
4859
  pointer-events: none;
4736
4860
  z-index: 1;
@@ -4745,15 +4869,15 @@ $spinner-color: var(--q-theme-primary);
4745
4869
  &.q-tabs--horizontal .q-tabs__indicator {
4746
4870
 
4747
4871
 
4748
- bottom: -1px;
4872
+ bottom: 0;
4749
4873
  left: 0;
4750
4874
  }
4751
4875
  &.q-tabs--horizontal .q-tab {
4752
- border-bottom: 4px solid transparent;
4876
+ border-bottom: var(--q-tabs-indicator-thickness) solid transparent;
4753
4877
  border-end-start-radius: 0;
4754
4878
  border-end-end-radius: 0;
4755
4879
  &--active {
4756
- border-bottom-color: $primary;
4880
+ border-bottom-color: var(--q-theme-primary);
4757
4881
  }
4758
4882
  @media (hover: hover) {
4759
4883
  &:hover:not(:disabled, .q-tab--active) {
@@ -4767,14 +4891,14 @@ $spinner-color: var(--q-theme-primary);
4767
4891
  &.q-tabs--vertical .q-tabs__indicator {
4768
4892
 
4769
4893
  top: 0;
4770
- inset-inline-end: -1px;
4894
+ inset-inline-end: 0;
4771
4895
  }
4772
4896
  &.q-tabs--vertical .q-tab {
4773
- border-inline-end: 4px solid transparent;
4897
+ border-inline-end: var(--q-tabs-indicator-thickness) solid transparent;
4774
4898
  border-start-end-radius: 0;
4775
4899
  border-end-end-radius: 0;
4776
4900
  &--active {
4777
- border-inline-end-color: $primary;
4901
+ border-inline-end-color: var(--q-theme-primary);
4778
4902
  }
4779
4903
  @media (hover: hover) {
4780
4904
  &:hover:not(:disabled, .q-tab--active) {
@@ -4792,45 +4916,45 @@ $spinner-color: var(--q-theme-primary);
4792
4916
  gap: 0;
4793
4917
  }
4794
4918
  .q-tab {
4795
- border: 1px solid $border;
4919
+ border: var(--q-border-width) solid var(--q-border-color);
4796
4920
  background-color: rgb(var(--q-theme-neutral-light-rgb) / 25%);
4797
4921
  &--active {
4798
- background-color: $container;
4922
+ background-color: var(--q-theme-container);
4799
4923
  z-index: 1;
4800
4924
  }
4801
4925
  @media (hover: hover) {
4802
4926
  &:hover:not(:disabled) {
4803
- border-color: $border;
4927
+ border-color: var(--q-border-color);
4804
4928
  }
4805
4929
  }
4806
4930
  }
4807
4931
  &.q-tabs--horizontal .q-tab {
4808
- border-start-start-radius: $border-radius;
4809
- border-start-end-radius: $border-radius;
4932
+ border-start-start-radius: var(--q-border-radius);
4933
+ border-start-end-radius: var(--q-border-radius);
4810
4934
  border-end-start-radius: 0;
4811
4935
  border-end-end-radius: 0;
4812
4936
  &--active {
4813
- border-bottom-color: $container;
4814
- color: $primary;
4937
+ border-bottom-color: var(--q-theme-container);
4938
+ color: var(--q-theme-primary);
4815
4939
  }
4816
4940
  }
4817
4941
  &.q-tabs--horizontal .q-tab--active:hover:not(:disabled) {
4818
4942
  @media (hover: hover) {
4819
- border-bottom-color: $container;
4943
+ border-bottom-color: var(--q-theme-container);
4820
4944
  }
4821
4945
  }
4822
4946
  &.q-tabs--vertical .q-tab {
4823
- border-start-start-radius: $border-radius;
4824
- border-end-start-radius: $border-radius;
4947
+ border-start-start-radius: var(--q-border-radius);
4948
+ border-end-start-radius: var(--q-border-radius);
4825
4949
  border-start-end-radius: 0;
4826
4950
  border-end-end-radius: 0;
4827
4951
  &--active {
4828
- border-inline-end-color: $container;
4952
+ border-inline-end-color: var(--q-theme-container);
4829
4953
  }
4830
4954
  }
4831
4955
  &.q-tabs--vertical .q-tab--active:hover:not(:disabled) {
4832
4956
  @media (hover: hover) {
4833
- border-inline-end-color: $container;
4957
+ border-inline-end-color: var(--q-theme-container);
4834
4958
  }
4835
4959
  }
4836
4960
  }
@@ -4851,17 +4975,42 @@ $spinner-color: var(--q-theme-primary);
4851
4975
  }
4852
4976
  &__list {
4853
4977
  position: relative;
4978
+ min-width: 0;
4979
+ }
4980
+ &__overflow {
4981
+ min-width: 0;
4982
+
4983
+
4984
+ &.q-overflow--horizontal {
4985
+ align-items: flex-end;
4986
+ &.q-overflow--arrows-outside {
4987
+ .q-overflow__control {
4988
+ align-self: flex-end;
4989
+ }
4990
+
4991
+ .q-overflow__control > *,
4992
+ .q-overflow__button {
4993
+ height: auto;
4994
+ align-self: auto;
4995
+ }
4996
+ }
4997
+ }
4854
4998
  }
4855
4999
  &__tablist {
4856
5000
  display: flex;
4857
- gap: $space-base;
5001
+ gap: var(--q-space-1);
5002
+
5003
+
5004
+ .q-tab:focus-visible {
5005
+ outline-offset: calc(-1 * (var(--q-focus-ring-width) + var(--q-focus-ring-offset)));
5006
+ }
4858
5007
  }
4859
5008
  &__panels {
4860
- padding-block: calc($space-base * 2);
5009
+ padding-block: var(--q-space-2);
4861
5010
  }
4862
5011
  &__panel {
4863
5012
  &:focus {
4864
- outline: $outline;
5013
+ outline: var(--q-focus-ring);
4865
5014
  &:not(:focus-visible) {
4866
5015
  outline: 0;
4867
5016
  }
@@ -4871,22 +5020,22 @@ $spinner-color: var(--q-theme-primary);
4871
5020
  .q-tab {
4872
5021
  background: transparent;
4873
5022
  border: 0;
4874
- padding: 0.5rem 0.75rem;
5023
+ padding: var(--q-control-padding-y-lg) var(--q-control-padding-x-lg);
4875
5024
  &.q-button.q-button--text {
4876
- color: $on-background;
5025
+ color: var(--q-theme-on-background);
4877
5026
  }
4878
5027
  &--active.q-button.q-button--text {
4879
- color: $primary;
5028
+ color: var(--q-theme-primary);
4880
5029
  cursor: default;
4881
5030
  &:hover:not(:disabled) {
4882
- color: $primary;
5031
+ color: var(--q-theme-primary);
4883
5032
  cursor: default;
4884
5033
  }
4885
5034
  }
4886
5035
  &__title {
4887
5036
  display: inline-flex;
4888
5037
  align-items: center;
4889
- gap: calc($space-base * 0.5);
5038
+ gap: calc(var(--q-space-1) * 0.5);
4890
5039
  }
4891
5040
  &__title-text {
4892
5041
  font-weight: 600;
@@ -4907,6 +5056,12 @@ $spinner-color: var(--q-theme-primary);
4907
5056
 
4908
5057
  display: flex;
4909
5058
  flex-direction: column;
5059
+
5060
+ > .q-field__control {
5061
+ height: auto;
5062
+ min-height: var(--q-interactive-height);
5063
+ align-items: flex-start;
5064
+ }
4910
5065
  &__input {
4911
5066
  width: 100%;
4912
5067
  line-height: inherit;
@@ -4914,7 +5069,7 @@ $spinner-color: var(--q-theme-primary);
4914
5069
  color: inherit;
4915
5070
  background-color: transparent;
4916
5071
  padding: 0;
4917
- min-height: 2.5rem;
5072
+ min-height: calc(2.5rem * var(--q-density-scale));
4918
5073
  resize: vertical;
4919
5074
  font-family: inherit;
4920
5075
  font-size: inherit;
@@ -4982,20 +5137,28 @@ $spinner-color: var(--q-theme-primary);
4982
5137
  color: var(--q-theme-on-background);
4983
5138
  caret-color: var(--q-theme-on-background);
4984
5139
  }
4985
- $q-toast-width: calc(8 * 5em + 7 * #{$space-base}) !default;
5140
+ $q-toast-width: calc(8 * 5em + 7 * var(--q-space-1)) !default;
4986
5141
  $q-toast-duration: 0.3s !default;
4987
5142
  $q-toast-duration-leave: 0.24s !default;
4988
- $q-toast-spacing-buffer: clamp(1rem, 4vw, 2.5rem) !default;
4989
- $q-toast-slide-distance: clamp(1rem, 3vw, 1.5rem) !default;
5143
+ $q-toast-spacing-buffer: clamp(
5144
+ calc(1rem * var(--q-density-scale)),
5145
+ 4vw,
5146
+ calc(2.5rem * var(--q-density-scale))
5147
+ ) !default;
5148
+ $q-toast-slide-distance: clamp(
5149
+ calc(1rem * var(--q-density-scale)),
5150
+ 3vw,
5151
+ calc(1.5rem * var(--q-density-scale))
5152
+ ) !default;
4990
5153
  .q-toaster {
4991
5154
  position: fixed;
4992
5155
  z-index: 9999;
4993
5156
  inset: 0;
4994
5157
  display: flex;
4995
5158
  flex-direction: column;
4996
- gap: $space-base * 2;
5159
+ gap: var(--q-space-2);
4997
5160
  pointer-events: none;
4998
- padding: $space-base * 2;
5161
+ padding: var(--q-space-2);
4999
5162
  overflow: hidden;
5000
5163
 
5001
5164
  &[data-placement*='left'] {
@@ -5022,8 +5185,8 @@ $q-toast-slide-distance: clamp(1rem, 3vw, 1.5rem) !default;
5022
5185
  --q-toast-tonal-color: var(--q-theme-info-light);
5023
5186
  max-width: #{$q-toast-width};
5024
5187
  &.q-card {
5025
- --card-base-padding: 0;
5026
- --card-padding: 0;
5188
+ --q-card-base-padding: 0;
5189
+ --q-card-padding: 0;
5027
5190
 
5028
5191
  min-height: unset;
5029
5192
  }
@@ -5032,7 +5195,7 @@ $q-toast-slide-distance: clamp(1rem, 3vw, 1.5rem) !default;
5032
5195
  }
5033
5196
  &__title {
5034
5197
  display: flex;
5035
- gap: $space-base;
5198
+ gap: var(--q-space-1);
5036
5199
  h4 {
5037
5200
  margin-block: 0;
5038
5201
  }
@@ -5040,14 +5203,18 @@ $q-toast-slide-distance: clamp(1rem, 3vw, 1.5rem) !default;
5040
5203
  &__body {
5041
5204
  text-wrap: wrap;
5042
5205
  }
5206
+ .q-col:has(.q-toast__dismiss.q-button) {
5207
+ padding-left: 0;
5208
+ padding-right: 0;
5209
+ }
5043
5210
 
5044
5211
  &--block {
5045
5212
  max-width: unset;
5046
5213
  }
5047
5214
 
5048
5215
  &--vertical {
5049
- padding-bottom: $space-base * 4;
5050
- padding-top: $space-base;
5216
+ padding-bottom: var(--q-space-4);
5217
+ padding-top: var(--q-space-1);
5051
5218
  }
5052
5219
  &--bold {
5053
5220
  background-color: var(--q-toast-main-color);
@@ -5141,22 +5308,22 @@ $q-toast-slide-distance: clamp(1rem, 3vw, 1.5rem) !default;
5141
5308
  &__content {
5142
5309
  display: flex;
5143
5310
  flex-direction: column;
5144
- gap: $space-base;
5311
+ gap: var(--q-space-1);
5145
5312
  align-items: center;
5146
- padding: 0.5rem;
5313
+ padding: var(--q-space-2);
5147
5314
  font-style: normal;
5148
- font-size: calc($font-size-base * 0.9);
5149
- font-weight: $font-weight-regular;
5315
+ font-size: var(--q-font-size-sm);
5316
+ font-weight: var(--q-font-weight-regular);
5150
5317
  text-decoration: none;
5151
5318
  text-shadow: none;
5152
5319
  text-transform: none;
5153
- line-height: 1.5;
5320
+ line-height: var(--q-line-height-md);
5154
5321
  line-break: auto;
5155
5322
  overflow-wrap: break-word;
5156
5323
  word-break: normal;
5157
5324
  word-spacing: normal;
5158
5325
  white-space: normal;
5159
5326
  letter-spacing: normal;
5160
- max-width: 200px;
5327
+ max-width: calc(200px * var(--q-density-scale));
5161
5328
  }
5162
5329
  }