@quidgest/ui 0.22.0 → 0.23.0

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