@quidgest/ui 0.21.2 → 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 (169) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/json/api.json +398 -86
  3. package/dist/manifest/components.json +1 -0
  4. package/dist/ui.css +2130 -1166
  5. package/dist/ui.esm.js +809 -786
  6. package/dist/ui.js +735 -712
  7. package/dist/ui.min.css +1 -1
  8. package/dist/ui.min.js +735 -712
  9. package/dist/ui.scss +1137 -844
  10. package/esm/components/QBadge/QBadge.d.ts +1 -1
  11. package/esm/components/QBadge/QBadge.d.ts.map +1 -1
  12. package/esm/components/QBadge/QBadge.vue.js +14 -7
  13. package/esm/components/QBadge/index.d.ts +3 -3
  14. package/esm/components/QBadge/types.d.ts +11 -4
  15. package/esm/components/QBadge/types.d.ts.map +1 -1
  16. package/esm/components/QButton/QButton.d.ts +0 -1
  17. package/esm/components/QButton/QButton.d.ts.map +1 -1
  18. package/esm/components/QButton/QButton.vue.js +10 -4
  19. package/esm/components/QButton/index.d.ts +0 -3
  20. package/esm/components/QButton/index.d.ts.map +1 -1
  21. package/esm/components/QButton/types.d.ts +11 -4
  22. package/esm/components/QButton/types.d.ts.map +1 -1
  23. package/esm/components/QButtonGroup/QButtonGroup.d.ts.map +1 -1
  24. package/esm/components/QButtonGroup/QButtonGroup.vue.js +2 -0
  25. package/esm/components/QButtonGroup/types.d.ts +9 -1
  26. package/esm/components/QButtonGroup/types.d.ts.map +1 -1
  27. package/esm/components/QCheckbox/QCheckbox.d.ts +0 -1
  28. package/esm/components/QCheckbox/QCheckbox.d.ts.map +1 -1
  29. package/esm/components/QCheckbox/QCheckbox.vue.js +2 -2
  30. package/esm/components/QCheckbox/index.d.ts +3 -6
  31. package/esm/components/QCheckbox/index.d.ts.map +1 -1
  32. package/esm/components/QCheckbox/types.d.ts +4 -3
  33. package/esm/components/QCheckbox/types.d.ts.map +1 -1
  34. package/esm/components/QCollapsible/types.d.ts +1 -1
  35. package/esm/components/QCollapsible/types.d.ts.map +1 -1
  36. package/esm/components/QCombobox/QCombobox.d.ts +6 -8
  37. package/esm/components/QCombobox/QCombobox.d.ts.map +1 -1
  38. package/esm/components/QCombobox/QCombobox.vue.js +1 -1
  39. package/esm/components/QCombobox/index.d.ts +3 -4
  40. package/esm/components/QCombobox/index.d.ts.map +1 -1
  41. package/esm/components/QDateTimePicker/QDateTimePicker.d.ts +18 -24
  42. package/esm/components/QDateTimePicker/QDateTimePicker.d.ts.map +1 -1
  43. package/esm/components/QDateTimePicker/index.d.ts +9 -12
  44. package/esm/components/QDateTimePicker/index.d.ts.map +1 -1
  45. package/esm/components/QDialog/QDialog.d.ts.map +1 -1
  46. package/esm/components/QDialog/QDialog.vue.js +6 -1
  47. package/esm/components/QDialog/QDialogProvider.d.ts.map +1 -1
  48. package/esm/components/QDialog/QDialogProvider.vue.js +1 -0
  49. package/esm/components/QDialog/index.d.ts +3 -0
  50. package/esm/components/QDialog/index.d.ts.map +1 -1
  51. package/esm/components/QDialog/types.d.ts +14 -0
  52. package/esm/components/QDialog/types.d.ts.map +1 -1
  53. package/esm/components/QDropdownMenu/types.d.ts +1 -1
  54. package/esm/components/QDropdownMenu/types.d.ts.map +1 -1
  55. package/esm/components/QIcon/QIcon.d.ts.map +1 -1
  56. package/esm/components/QIcon/QIcon.vue.js +9 -4
  57. package/esm/components/QList/QListItem.d.ts.map +1 -1
  58. package/esm/components/QList/QListItem.vue.js +1 -0
  59. package/esm/components/QObfuscation/QObfuscation.d.ts.map +1 -1
  60. package/esm/components/QObfuscation/QObfuscation.vue.js +0 -1
  61. package/esm/components/QOverflow/QOverflow.d.ts +21 -1
  62. package/esm/components/QOverflow/QOverflow.d.ts.map +1 -1
  63. package/esm/components/QOverflow/QOverflow.vue.js +109 -96
  64. package/esm/components/QOverflow/index.d.ts +12 -3
  65. package/esm/components/QOverflow/index.d.ts.map +1 -1
  66. package/esm/components/QOverflow/types.d.ts +11 -2
  67. package/esm/components/QOverflow/types.d.ts.map +1 -1
  68. package/esm/components/QOverlay/QOverlay.d.ts +0 -1
  69. package/esm/components/QOverlay/QOverlay.d.ts.map +1 -1
  70. package/esm/components/QOverlay/QOverlay.vue.js +90 -90
  71. package/esm/components/QOverlay/index.d.ts +0 -3
  72. package/esm/components/QOverlay/index.d.ts.map +1 -1
  73. package/esm/components/QOverlay/types.d.ts +5 -3
  74. package/esm/components/QOverlay/types.d.ts.map +1 -1
  75. package/esm/components/QPhoneField/QPhoneField.d.ts +20 -16
  76. package/esm/components/QPhoneField/QPhoneField.d.ts.map +1 -1
  77. package/esm/components/QPhoneField/index.d.ts +10 -8
  78. package/esm/components/QPhoneField/index.d.ts.map +1 -1
  79. package/esm/components/QPopover/types.d.ts +1 -1
  80. package/esm/components/QPopover/types.d.ts.map +1 -1
  81. package/esm/components/QProgress/QProgress.d.ts +21 -0
  82. package/esm/components/QProgress/QProgress.d.ts.map +1 -0
  83. package/esm/components/QProgress/QProgress.vue.js +108 -0
  84. package/esm/components/QProgress/QProgress2.vue.js +5 -0
  85. package/esm/components/QProgress/index.d.ts +45 -0
  86. package/esm/components/QProgress/index.d.ts.map +1 -0
  87. package/esm/components/QProgress/index.js +6 -0
  88. package/esm/components/QProgress/types.d.ts +78 -0
  89. package/esm/components/QProgress/types.d.ts.map +1 -0
  90. package/esm/components/QRadioGroup/QRadioButton.d.ts +0 -1
  91. package/esm/components/QRadioGroup/QRadioButton.d.ts.map +1 -1
  92. package/esm/components/QRadioGroup/QRadioButton.vue.js +2 -2
  93. package/esm/components/QRadioGroup/QRadioGroup.d.ts +1 -1
  94. package/esm/components/QRadioGroup/QRadioGroup.d.ts.map +1 -1
  95. package/esm/components/QRadioGroup/QRadioGroup.vue.js +55 -46
  96. package/esm/components/QRadioGroup/index.d.ts +9 -36
  97. package/esm/components/QRadioGroup/index.d.ts.map +1 -1
  98. package/esm/components/QRadioGroup/types.d.ts +15 -24
  99. package/esm/components/QRadioGroup/types.d.ts.map +1 -1
  100. package/esm/components/QRemoveScrollBar/constants.d.ts +1 -1
  101. package/esm/components/QRemoveScrollBar/constants.d.ts.map +1 -1
  102. package/esm/components/QRemoveScrollBar/constants.js +1 -1
  103. package/esm/components/QSelect/QSelect.d.ts +20 -16
  104. package/esm/components/QSelect/QSelect.d.ts.map +1 -1
  105. package/esm/components/QSelect/QSelect.vue.js +9 -1
  106. package/esm/components/QSelect/index.d.ts +10 -8
  107. package/esm/components/QSelect/index.d.ts.map +1 -1
  108. package/esm/components/QSidebar/QSidebar.d.ts +0 -1
  109. package/esm/components/QSidebar/QSidebar.d.ts.map +1 -1
  110. package/esm/components/QSidebar/QSidebar.vue.js +2 -2
  111. package/esm/components/QSidebar/QSidebarAnchor.d.ts +2 -1
  112. package/esm/components/QSidebar/QSidebarAnchor.d.ts.map +1 -1
  113. package/esm/components/QSidebar/QSidebarAnchor.vue.js +1 -1
  114. package/esm/components/QSidebar/QSidebarItem.d.ts +12 -6
  115. package/esm/components/QSidebar/QSidebarItem.d.ts.map +1 -1
  116. package/esm/components/QSidebar/QSidebarItem.vue.js +1 -1
  117. package/esm/components/QSidebar/index.d.ts +6 -6
  118. package/esm/components/QSidebar/index.d.ts.map +1 -1
  119. package/esm/components/QSidebar/types.d.ts +3 -1
  120. package/esm/components/QSidebar/types.d.ts.map +1 -1
  121. package/esm/components/QSwitch/QSwitch.d.ts +3 -2
  122. package/esm/components/QSwitch/QSwitch.d.ts.map +1 -1
  123. package/esm/components/QSwitch/QSwitch.vue.js +34 -26
  124. package/esm/components/QSwitch/index.d.ts +5 -4
  125. package/esm/components/QSwitch/index.d.ts.map +1 -1
  126. package/esm/components/QSwitch/types.d.ts +4 -2
  127. package/esm/components/QSwitch/types.d.ts.map +1 -1
  128. package/esm/components/QTabs/QTab.d.ts +6 -8
  129. package/esm/components/QTabs/QTab.d.ts.map +1 -1
  130. package/esm/components/QTabs/QTabs.d.ts +177 -2
  131. package/esm/components/QTabs/QTabs.d.ts.map +1 -1
  132. package/esm/components/QTabs/QTabs.vue.js +127 -106
  133. package/esm/components/QTabs/context.d.ts +2 -1
  134. package/esm/components/QTabs/context.d.ts.map +1 -1
  135. package/esm/components/QTabs/index.d.ts +91 -5
  136. package/esm/components/QTabs/index.d.ts.map +1 -1
  137. package/esm/components/QToggle/QToggle.vue.js +2 -1
  138. package/esm/components/QToggle/index.d.ts +6 -3
  139. package/esm/components/QToggle/index.d.ts.map +1 -1
  140. package/esm/components/QToggleGroup/QToggleGroup.vue.js +1 -0
  141. package/esm/components/QToggleGroup/QToggleGroupItem.vue.js +1 -0
  142. package/esm/components/QToggleGroup/index.d.ts +3 -0
  143. package/esm/components/QToggleGroup/index.d.ts.map +1 -1
  144. package/esm/components/QTooltip/types.d.ts +1 -1
  145. package/esm/components/QTooltip/types.d.ts.map +1 -1
  146. package/esm/components/__internal__/QClearButton/QClearButton.vue.js +1 -1
  147. package/esm/components/index.d.ts +1 -0
  148. package/esm/components/index.d.ts.map +1 -1
  149. package/esm/components/index.js +34 -32
  150. package/esm/composables/useSafeTriangle/index.d.ts +1 -1
  151. package/esm/composables/useSafeTriangle/index.d.ts.map +1 -1
  152. package/esm/index.d.ts +1 -0
  153. package/esm/templates/theme.js +11 -11
  154. package/esm/types/component.d.ts +7 -0
  155. package/esm/types/component.d.ts.map +1 -1
  156. package/esm/utils/color/theme-colors.d.ts +5 -5
  157. package/esm/utils/density.d.ts +12 -0
  158. package/esm/utils/density.d.ts.map +1 -0
  159. package/esm/utils/density.js +23 -0
  160. package/esm/utils/index.d.ts +1 -0
  161. package/esm/utils/index.d.ts.map +1 -1
  162. package/esm/utils/index.js +6 -2
  163. package/esm/{composables → utils}/overlay.d.ts +12 -0
  164. package/esm/utils/overlay.d.ts.map +1 -0
  165. package/esm/{composables → utils}/overlay.js +10 -2
  166. package/esm/utils/safeTriangle.d.ts +1 -1
  167. package/esm/utils/safeTriangle.d.ts.map +1 -1
  168. package/package.json +1 -1
  169. package/esm/composables/overlay.d.ts.map +0 -1
package/dist/ui.scss CHANGED
@@ -1,8 +1,9 @@
1
1
  /*!
2
- * Quidgest UI v0.21.2
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,38 +3680,177 @@ $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);
3688
+ }
3689
+ }
3690
+ $transition-speed: 0.4s !default;
3691
+ @keyframes q-progress-move {
3692
+ from {
3693
+ background-position: 0 0;
3694
+ }
3695
+ to {
3696
+ background-position: var(--q-progress-stripe-size) 0;
3697
+ }
3698
+ }
3699
+ @keyframes q-progress-shimmer {
3700
+ 0% {
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;
3713
+ }
3714
+ 100% {
3715
+ transform: translateX(120%);
3716
+ opacity: 0;
3717
+ }
3718
+ }
3719
+ .q-progress {
3720
+ --q-progress-main-color: var(--q-theme-primary);
3721
+ --q-progress-main-color-rgb: var(--q-theme-primary-rgb);
3722
+ --q-progress-on-main-color: var(--q-theme-on-primary);
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));
3727
+ &__bar {
3728
+ display: flex;
3729
+ overflow: hidden;
3730
+ height: var(--q-progress-bar-height);
3731
+ line-height: 0;
3732
+ font-size: var(--q-font-size-sm);
3733
+ background-color: var(--q-theme-neutral-light);
3734
+ border-radius: var(--q-border-radius);
3735
+ &--mini {
3736
+ height: var(--q-progress-bar-height-mini);
3737
+ font-size: 0;
3738
+ }
3739
+ }
3740
+ &__fill {
3741
+ display: flex;
3742
+ flex-direction: column;
3743
+ justify-content: center;
3744
+ overflow: hidden;
3745
+ position: relative;
3746
+ color: var(--q-progress-on-main-color);
3747
+ text-align: center;
3748
+ white-space: nowrap;
3749
+ background-color: var(--q-progress-main-color);
3750
+ transition: width $transition-speed ease;
3751
+ &-text {
3752
+ position: relative;
3753
+ z-index: 1;
3754
+ margin: 0 10%;
3755
+ height: 100%;
3756
+ text-align: center;
3757
+ align-content: center;
3758
+ overflow: hidden;
3759
+ white-space: nowrap;
3760
+ text-overflow: ellipsis;
3761
+ line-height: initial;
3762
+ }
3763
+ &--striped {
3764
+ background-image: linear-gradient(
3765
+ 45deg,
3766
+ rgb(255 255 255 / 15%) 25%,
3767
+ transparent 25%,
3768
+ transparent 50%,
3769
+ rgb(255 255 255 / 15%) 50%,
3770
+ rgb(255 255 255 / 15%) 75%,
3771
+ transparent 75%,
3772
+ transparent
3773
+ );
3774
+ background-size: var(--q-progress-stripe-size) var(--q-progress-stripe-size);
3775
+ }
3776
+ &--animated {
3777
+
3778
+ &::before {
3779
+ content: '';
3780
+ position: absolute;
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%
3794
+ );
3795
+ animation: 1.8s linear infinite q-progress-shimmer;
3796
+ }
3797
+
3798
+ &.q-progress__fill--striped {
3799
+ animation: 1s linear infinite q-progress-move;
3800
+ }
3801
+ }
3802
+ }
3803
+ &__values {
3804
+ display: flex;
3805
+ justify-content: space-between;
3806
+ margin-top: var(--q-progress-values-gap);
3807
+ &-min,
3808
+ &-max {
3809
+ position: relative;
3810
+ }
3811
+ }
3812
+ }
3813
+ @media (prefers-reduced-motion: reduce) {
3814
+ .q-progress__fill {
3815
+ transition: none;
3816
+ &--animated {
3817
+ animation: none;
3818
+ &::before {
3819
+ display: none;
3820
+ }
3821
+ &.q-progress__fill--striped {
3822
+ animation: none;
3823
+ }
3824
+ }
3637
3825
  }
3638
3826
  }
3639
3827
  $table-header-bg: rgb(var(--q-theme-neutral-light-rgb) / 25%);
3640
3828
  $row-hover-bg: rgb(var(--q-theme-primary-light-rgb) / 50%);
3641
3829
  $row-selected-bg: rgb(var(--q-theme-primary-rgb) / 15%);
3642
- $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%);
3643
3831
  .q-property-list {
3644
3832
  margin: 0;
3645
- font-size: 0.9rem;
3833
+ font-size: var(--q-font-size-md);
3646
3834
  display: inline-flex;
3647
3835
  width: auto;
3648
3836
  flex-direction: column;
3649
3837
  border: $base-border;
3838
+ border-radius: var(--q-border-radius);
3839
+ overflow: hidden;
3650
3840
  &-panel {
3651
- padding: 0.4rem;
3841
+ padding: calc(0.4rem * var(--q-density-scale));
3652
3842
  display: flex;
3653
3843
  flex-direction: column;
3654
3844
  overflow-y: auto;
3655
- min-height: 50px;
3656
- max-height: 80px;
3657
- 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);
3658
3848
  }
3659
3849
  &--side-panel {
3660
3850
  flex-direction: row;
3661
3851
  .q-property-list-panel {
3662
3852
  border-left: $base-border;
3663
- width: 250px;
3853
+ width: calc(250px * var(--q-density-scale));
3664
3854
  max-height: unset;
3665
3855
  }
3666
3856
  }
@@ -3683,7 +3873,7 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
3683
3873
  }
3684
3874
  &__header {
3685
3875
  background: $table-header-bg;
3686
- height: 25px;
3876
+ height: calc(25px * var(--q-density-scale));
3687
3877
  }
3688
3878
  &__row {
3689
3879
  &:hover {
@@ -3700,10 +3890,10 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
3700
3890
  }
3701
3891
  }
3702
3892
  &__cell {
3703
- padding: 0.25rem 0.5rem;
3893
+ padding: var(--q-space-1) var(--q-space-2);
3704
3894
  &--label {
3705
3895
  width: 20%;
3706
- font-size: 0.85rem;
3896
+ font-size: var(--q-font-size-sm);
3707
3897
  text-wrap: nowrap;
3708
3898
  opacity: 0.8;
3709
3899
  }
@@ -3720,19 +3910,19 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
3720
3910
  &-group {
3721
3911
  cursor: pointer;
3722
3912
  td {
3723
- padding: 0.2rem 0.25rem;
3913
+ padding: calc(0.2rem * var(--q-density-scale)) var(--q-space-1);
3724
3914
  }
3725
3915
  &__content {
3726
3916
  display: flex;
3727
3917
  align-items: center;
3728
3918
  }
3729
3919
  ~ .q-property-list__row .q-property-list__cell-label {
3730
- padding: 0 2rem;
3920
+ padding: 0 calc(2rem * var(--q-density-scale));
3731
3921
  }
3732
3922
  &--no-toggle {
3733
3923
  cursor: default;
3734
3924
  td {
3735
- padding: 0.5rem 1rem;
3925
+ padding: var(--q-space-2) var(--q-space-4);
3736
3926
  }
3737
3927
  }
3738
3928
  }
@@ -3743,18 +3933,19 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
3743
3933
  .q-radio-group {
3744
3934
  $this: &;
3745
3935
  --q-radio-group-columns: 1;
3746
- display: flex;
3747
- flex-direction: column;
3748
- gap: calc($space-base * 2);
3936
+ &.q-field--label-left,
3937
+ &.q-field--label-right {
3938
+ gap: var(--q-space-2);
3939
+ }
3749
3940
  &__group {
3750
3941
  display: flex;
3751
3942
  flex-direction: column;
3752
- gap: calc($space-base * 2);
3753
3943
  }
3754
3944
 
3755
3945
  &--horizontal {
3756
3946
  #{$this}__group {
3757
3947
  flex-direction: row;
3948
+ gap: var(--q-space-2);
3758
3949
  }
3759
3950
  }
3760
3951
 
@@ -3765,25 +3956,38 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
3765
3956
  }
3766
3957
  .q-radio-button {
3767
3958
  $this: &;
3768
- --q-radio-button-circle-size: 1rem;
3959
+ --q-radio-button-circle-size: var(--q-selection-control-size);
3769
3960
  --q-radio-button-checked-color: var(--q-theme-primary);
3770
3961
  display: flex;
3771
3962
  width: fit-content;
3772
3963
  align-items: center;
3773
- 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);
3774
3973
  cursor: pointer;
3775
- label {
3776
- line-height: 1;
3974
+ > label {
3975
+ font-size: var(--q-font-size-md);
3976
+ line-height: inherit;
3777
3977
  cursor: pointer;
3778
3978
  }
3779
3979
  &__input {
3780
3980
  position: relative;
3981
+ box-sizing: border-box;
3982
+ flex: 0 0 var(--q-radio-button-circle-size);
3781
3983
  width: var(--q-radio-button-circle-size);
3782
3984
  height: var(--q-radio-button-circle-size);
3985
+ aspect-ratio: 1;
3986
+ margin: 0;
3987
+ padding: 0;
3783
3988
  background-color: transparent;
3784
- flex-shrink: 0;
3785
3989
  appearance: none;
3786
- border-width: 1px;
3990
+ border: var(--q-border-width) solid var(--q-border-color);
3787
3991
  border-radius: 50%;
3788
3992
  font-size: var(--q-radio-button-circle-size);
3789
3993
  cursor: pointer;
@@ -3879,76 +4083,75 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
3879
4083
  }
3880
4084
  }
3881
4085
 
3882
- &--small {
3883
- --q-radio-button-circle-size: 0.875rem;
3884
- }
3885
- &--large {
3886
- --q-radio-button-circle-size: 1.5rem;
3887
- padding: 0.625rem;
3888
- }
4086
+ @include q-size-modifiers;
3889
4087
  }
3890
4088
  .q-radio-group--focus-style .q-radio-button:focus-within {
3891
- outline: $outline;
4089
+ outline: var(--q-focus-ring);
3892
4090
  }
3893
4091
  .q-section {
3894
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);
3895
4098
  display: inline-block;
3896
4099
  overflow-wrap: break-word;
3897
4100
  background-color: var(--q-theme-container);
3898
4101
  border-width: 1px;
3899
- border-bottom: $group-border-bottom;
3900
- padding: 0.5rem 1rem 1rem;
3901
- 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);
3902
4105
  position: relative;
3903
4106
  max-width: 100%;
3904
4107
  &:focus-visible {
3905
- outline: $outline;
3906
- border-radius: var(--border-radius);
4108
+ outline: var(--q-focus-ring);
4109
+ border-radius: var(--q-border-radius);
3907
4110
  }
3908
4111
  &__title {
3909
- font-size: 1.2rem;
3910
- line-height: 1rem;
3911
- 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);
3912
4115
  color: var(--q-theme-primary);
3913
- text-transform: $headings-text-transform;
4116
+ text-transform: var(--q-headings-text-transform);
3914
4117
  margin: 0;
3915
- margin-top: 0.25rem;
4118
+ margin-top: var(--q-space-1);
3916
4119
  display: flex;
3917
4120
  align-items: flex-start;
3918
4121
  width: fit-content;
3919
- gap: 0.25rem;
3920
- margin-bottom: 0.5rem;
4122
+ gap: var(--q-space-1);
4123
+ margin-bottom: var(--q-space-2);
3921
4124
  }
3922
4125
 
3923
4126
  &--background {
3924
4127
  background-color: rgb(var(--q-theme-primary-light-rgb) / 50%);
3925
- padding: 0.5rem 1rem 1rem;
4128
+ padding: var(--q-section-padding-y) var(--q-section-padding-x) var(--q-section-padding-bottom);
3926
4129
  }
3927
4130
  &--minor {
3928
4131
  background-color: transparent;
3929
4132
  border: none;
3930
4133
  border-radius: 0;
3931
- padding: 0.5rem 0 0;
4134
+ padding: var(--q-space-2) 0 0;
3932
4135
  }
3933
4136
  &--minor-border-top {
3934
4137
  background-color: transparent;
3935
4138
  border: none;
3936
- border-top: 1px solid var(--q-theme-neutral-light);
4139
+ border-top: var(--q-border-width) solid var(--q-theme-neutral-light);
3937
4140
  border-radius: 0;
3938
- margin-top: 0.5rem;
3939
- padding: 0.25rem 0;
4141
+ margin-top: var(--q-space-2);
4142
+ padding: var(--q-space-1) 0;
3940
4143
  }
3941
4144
  &--minor,
3942
4145
  &--minor-border-top {
3943
4146
  #{$this}__title {
3944
- font-size: 0.9rem;
3945
- line-height: 1;
4147
+ font-size: var(--q-section-minor-title-size);
4148
+ line-height: var(--q-line-height-md);
3946
4149
  letter-spacing: initial;
3947
4150
  color: var(--q-theme-neutral-dark);
3948
4151
  text-transform: none;
3949
4152
  font-weight: 600;
3950
- margin-bottom: 0.25rem;
3951
- margin-top: 0.25rem;
4153
+ margin-bottom: var(--q-space-1);
4154
+ margin-top: var(--q-space-1);
3952
4155
  }
3953
4156
  }
3954
4157
  &--title-background {
@@ -3957,41 +4160,41 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
3957
4160
  position: absolute;
3958
4161
  top: 0;
3959
4162
  left: 0;
3960
- height: 30px;
4163
+ height: calc(30px * var(--q-density-scale));
3961
4164
  width: 100%;
3962
4165
  content: '';
3963
4166
  background-color: rgb(var(--q-theme-neutral-light-rgb) / 25%);
3964
- border-radius: var(--border-radius) var(--border-radius) 0 0;
4167
+ border-radius: var(--q-border-radius) var(--q-border-radius) 0 0;
3965
4168
  }
3966
4169
  #{$this}__title {
3967
- padding: 0.5rem 1rem;
4170
+ padding: var(--q-space-2) var(--q-space-4);
3968
4171
  margin: 0;
3969
- font-size: 0.9rem;
4172
+ font-size: var(--q-font-size-md);
3970
4173
  font-weight: 700;
3971
- line-height: 1;
3972
- letter-spacing: 0.01rem;
4174
+ line-height: var(--q-line-height-md);
4175
+ letter-spacing: var(--q-letter-spacing-sm);
3973
4176
  color: var(--q-theme-on-background);
3974
4177
  text-transform: none;
3975
4178
  z-index: 10;
3976
4179
  position: relative;
3977
4180
  }
3978
4181
  > #{$this}__content {
3979
- padding: 0.2rem 1rem 1rem;
4182
+ padding: calc(0.2rem * var(--q-density-scale)) var(--q-space-4) var(--q-space-4);
3980
4183
  }
3981
4184
  }
3982
4185
  &--subsection {
3983
4186
  border: none;
3984
- margin-left: 0.625rem;
3985
- margin-bottom: 0.625rem;
4187
+ margin-left: calc(0.625rem * var(--q-density-scale));
4188
+ margin-bottom: calc(0.625rem * var(--q-density-scale));
3986
4189
  #{$this}__title {
3987
- font-size: 0.9rem;
3988
- line-height: 1;
4190
+ font-size: var(--q-section-minor-title-size);
4191
+ line-height: var(--q-line-height-md);
3989
4192
  letter-spacing: initial;
3990
4193
  background-color: transparent;
3991
4194
  color: var(--q-theme-neutral-dark);
3992
4195
  text-transform: none;
3993
4196
  font-weight: 600;
3994
- margin-bottom: 0.25rem;
4197
+ margin-bottom: var(--q-space-1);
3995
4198
  }
3996
4199
  }
3997
4200
 
@@ -4022,7 +4225,7 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
4022
4225
  &--disabled {
4023
4226
  .q-badge--disabled {
4024
4227
  opacity: 1;
4025
- font-weight: $font-weight-black;
4228
+ font-weight: var(--q-font-weight-black);
4026
4229
  color: var(--q-theme-neutral-dark);
4027
4230
  }
4028
4231
  }
@@ -4052,13 +4255,14 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
4052
4255
  }
4053
4256
  &__value-container {
4054
4257
  display: flex;
4055
- gap: 0.1rem;
4258
+ align-items: center;
4259
+ gap: var(--q-space-1);
4056
4260
  overflow: hidden;
4057
4261
  width: 100%;
4058
- height: 1.35rem;
4262
+ min-height: var(--q-control-height-sm);
4059
4263
  #{$this}__badge {
4060
4264
  &-count {
4061
- font-weight: $font-weight-black;
4265
+ font-weight: var(--q-font-weight-black);
4062
4266
  &--clickable {
4063
4267
  cursor: pointer;
4064
4268
  }
@@ -4081,33 +4285,25 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
4081
4285
  cursor: inherit;
4082
4286
  }
4083
4287
  &__chevron.q-button {
4084
- padding: 0.1rem;
4085
- opacity: 0.5;
4086
- svg {
4087
- width: $icon-size-sm;
4088
- height: $icon-size-sm;
4089
- }
4090
- &:hover {
4091
- cursor: inherit;
4092
- }
4288
+ @include q-field-affix-button;
4093
4289
  }
4094
4290
  &__body {
4095
4291
  display: flex;
4096
4292
  flex-direction: column;
4097
4293
  align-items: flex-start;
4098
- gap: $space-base;
4294
+ gap: var(--q-space-1);
4099
4295
  width: 100%;
4100
- padding: $space-base 0;
4296
+ padding: var(--q-space-1) 0;
4101
4297
  outline: none;
4102
4298
  .q-list-item {
4103
- width: calc(100% - 2 * $space-base);
4104
- margin-inline: $space-base;
4299
+ width: calc(100% - 2 * var(--q-space-1));
4300
+ margin-inline: var(--q-space-1);
4105
4301
  }
4106
4302
  }
4107
4303
  &__items {
4108
4304
  min-width: fit-content;
4109
4305
  width: 100%;
4110
- max-height: 240px;
4306
+ max-height: calc(240px * var(--q-density-scale));
4111
4307
  align-items: start;
4112
4308
  }
4113
4309
  &__loader {
@@ -4117,11 +4313,11 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
4117
4313
  }
4118
4314
  &__loader,
4119
4315
  &__empty {
4120
- margin: calc(4 * $space-base) 0;
4316
+ margin: var(--q-space-4) 0;
4121
4317
  }
4122
4318
 
4123
4319
  .q-field__prepend {
4124
- padding-inline: $space-base * 2;
4320
+ padding-inline: var(--q-space-2);
4125
4321
  }
4126
4322
  }
4127
4323
  $sidebar-size-small: 19rem;
@@ -4170,6 +4366,7 @@ $sidebar-sizes: (
4170
4366
  display: flex;
4171
4367
  flex-direction: column;
4172
4368
  flex-shrink: 0;
4369
+ width: calc(50px * var(--q-density-scale));
4173
4370
  background-color: var(--q-theme-container);
4174
4371
  z-index: 10;
4175
4372
  }
@@ -4186,9 +4383,9 @@ $sidebar-sizes: (
4186
4383
  border-width: 0;
4187
4384
  border-bottom-width: 1px;
4188
4385
  border-bottom-color: $sidebar-border-color !important;
4189
- font-size: 0.6rem;
4386
+ font-size: calc(var(--q-font-size-sm) * 0.8);
4190
4387
  .q-icon {
4191
- font-size: 20px;
4388
+ font-size: var(--q-icon-size-lg);
4192
4389
  }
4193
4390
  }
4194
4391
  .q-sidebar__indicator {
@@ -4214,8 +4411,8 @@ $sidebar-sizes: (
4214
4411
  .q-sidebar-panel__footer {
4215
4412
  display: flex;
4216
4413
  align-items: center;
4217
- gap: 0.5rem;
4218
- margin: 1rem;
4414
+ gap: var(--q-space-2);
4415
+ margin: var(--q-space-4);
4219
4416
  }
4220
4417
  .q-sidebar-panel__header {
4221
4418
  margin-bottom: 0;
@@ -4229,12 +4426,12 @@ $sidebar-sizes: (
4229
4426
  .q-sidebar-panel__content {
4230
4427
  flex: 1 1 0%;
4231
4428
  overflow: auto;
4232
- margin: 1rem;
4429
+ margin: var(--q-space-4);
4233
4430
  }
4234
4431
  .q-sidebar-panel__handle {
4235
4432
  position: absolute;
4236
4433
  top: 0;
4237
- width: 10px;
4434
+ width: calc(10px * var(--q-density-scale));
4238
4435
  height: 100%;
4239
4436
  cursor: ew-resize;
4240
4437
  display: flex;
@@ -4248,10 +4445,10 @@ $sidebar-sizes: (
4248
4445
  right: 0;
4249
4446
  }
4250
4447
  .q-sidebar-panel__grip {
4251
- width: 4px;
4252
- height: 24px;
4448
+ width: var(--q-space-1);
4449
+ height: var(--q-space-6);
4253
4450
  background-color: var(--q-theme-neutral);
4254
- border-radius: 2px;
4451
+ border-radius: calc(2px * var(--q-density-scale));
4255
4452
  }
4256
4453
  @include sidebar-size-modifiers('', width);
4257
4454
  @include sidebar-size-modifiers('min', min-width);
@@ -4291,7 +4488,7 @@ $sidebar-sizes: (
4291
4488
  overflow: hidden;
4292
4489
  background-color: var(--q-theme-neutral-light);
4293
4490
  animation: fade-in 1s;
4294
- border-radius: var(--border-radius);
4491
+ border-radius: var(--q-border-radius);
4295
4492
  &::after {
4296
4493
  position: absolute;
4297
4494
  inset: 0;
@@ -4313,8 +4510,8 @@ $sidebar-sizes: (
4313
4510
  height: 1em;
4314
4511
  }
4315
4512
  &--icon {
4316
- width: 20px;
4317
- height: 20px;
4513
+ width: var(--q-icon-size-lg);
4514
+ height: var(--q-icon-size-lg);
4318
4515
  #{$this}__bone {
4319
4516
  border-radius: 50%;
4320
4517
  }
@@ -4335,7 +4532,7 @@ $sidebar-sizes: (
4335
4532
  }
4336
4533
  $spinner-color: var(--q-theme-primary);
4337
4534
  .q-spinner-loader {
4338
- font-size: 48px;
4535
+ font-size: calc(48px * var(--q-density-scale));
4339
4536
  width: 1em;
4340
4537
  padding: 0.15em;
4341
4538
  aspect-ratio: 1;
@@ -4358,26 +4555,37 @@ $spinner-color: var(--q-theme-primary);
4358
4555
 
4359
4556
 
4360
4557
 
4361
- --q-switch-inner-padding: 2px;
4558
+ --q-switch-inner-padding: calc(2px * var(--q-density-scale));
4362
4559
  --q-switch-border-radius: 9999px;
4363
4560
  --q-switch-transition-duration: 0.15s;
4364
4561
  --q-switch-transition-easing: ease-out;
4365
4562
 
4366
- --q-switch-label-padding-v: 10px;
4367
- --q-switch-label-padding-h: 15px;
4368
- --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
+ );
4369
4577
 
4370
4578
  --q-switch-shadow-color-primary: rgb(var(--q-theme-on-background-rgb) / 20%);
4371
4579
  --q-switch-shadow-color-secondary: rgb(var(--q-theme-on-background-rgb) / 10%);
4372
- --q-switch-shadow-blur-base: 3px;
4373
- --q-switch-shadow-offset-y: 1px;
4374
- --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));
4375
4583
 
4376
4584
  --q-switch-shadow-color-primary-hover: rgb(var(--q-theme-on-background-rgb) / 30%);
4377
4585
  --q-switch-shadow-color-secondary-hover: rgb(var(--q-theme-on-background-rgb) / 15%);
4378
- --q-switch-shadow-blur-hover: 6px;
4379
- --q-switch-shadow-offset-y-hover: 2px;
4380
- --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));
4381
4589
 
4382
4590
  --q-switch-disabled-opacity: 0.5;
4383
4591
  --q-switch-hover-background-opacity: 0.5;
@@ -4393,25 +4601,18 @@ $spinner-color: var(--q-theme-primary);
4393
4601
  align-items: center;
4394
4602
  position: relative;
4395
4603
  white-space: nowrap;
4396
- 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;
4397
4610
  border-radius: var(--q-switch-border-radius);
4398
- padding: var(--q-switch-inner-padding);
4399
- transition: background var(--q-switch-transition-duration) var(--q-switch-transition-easing);
4611
+ cursor: pointer;
4400
4612
 
4401
4613
 
4402
4614
 
4403
- &--small {
4404
- --q-switch-inner-padding: 1px;
4405
- --q-switch-label-padding-v: 8px;
4406
- --q-switch-label-padding-h: 12px;
4407
- --q-switch-font-size: 0.6875rem;
4408
- }
4409
- &--large {
4410
- --q-switch-inner-padding: 3px;
4411
- --q-switch-label-padding-v: 12px;
4412
- --q-switch-label-padding-h: 18px;
4413
- --q-switch-font-size: 0.875rem;
4414
- }
4615
+ @include q-size-modifiers;
4415
4616
 
4416
4617
 
4417
4618
 
@@ -4433,9 +4634,10 @@ $spinner-color: var(--q-theme-primary);
4433
4634
  }
4434
4635
  .q-switch__input {
4435
4636
  position: absolute;
4436
- inset: 0;
4437
- width: 100%;
4438
- 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;
4439
4641
  margin: 0;
4440
4642
  padding: 0;
4441
4643
  appearance: none;
@@ -4446,7 +4648,7 @@ $spinner-color: var(--q-theme-primary);
4446
4648
  z-index: 2;
4447
4649
 
4448
4650
  &:focus-visible {
4449
- outline: $outline;
4651
+ outline: var(--q-focus-ring);
4450
4652
  }
4451
4653
 
4452
4654
  &:disabled {
@@ -4461,6 +4663,11 @@ $spinner-color: var(--q-theme-primary);
4461
4663
  align-items: center;
4462
4664
  width: 100%;
4463
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);
4464
4671
  }
4465
4672
  .q-switch__label {
4466
4673
  display: inline-flex;
@@ -4490,13 +4697,17 @@ $spinner-color: var(--q-theme-primary);
4490
4697
  padding-left: var(--q-switch-label-padding-v);
4491
4698
  }
4492
4699
  .q-switch--with-labels {
4493
- --q-switch-label-padding-v: 4px;
4700
+ --q-switch-label-padding-v: calc(
4701
+ 4px * var(--q-density-scale)
4702
+ );
4494
4703
  .q-switch__label {
4495
4704
  padding: var(--q-switch-label-padding-v) var(--q-switch-label-padding-h);
4496
4705
  }
4497
4706
  }
4498
4707
  .q-switch--checked:not(.q-switch--readonly) {
4499
- background: var(--q-switch-checked-background);
4708
+ .q-switch__labels {
4709
+ background: var(--q-switch-checked-background);
4710
+ }
4500
4711
  .q-switch__label--off {
4501
4712
  color: var(--q-switch-on-checked-background);
4502
4713
  }
@@ -4547,57 +4758,96 @@ $spinner-color: var(--q-theme-primary);
4547
4758
  }
4548
4759
  }
4549
4760
  .q-tabs {
4761
+ --q-tabs-indicator-thickness: calc(4px * var(--q-density-scale));
4550
4762
  display: flex;
4551
4763
  gap: 0;
4552
4764
  &--horizontal {
4553
4765
  flex-direction: column;
4554
4766
  .q-tabs__list {
4555
4767
  width: 100%;
4556
- 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;
4557
4785
  }
4558
4786
  .q-tabs__tablist {
4559
4787
  flex-direction: row;
4560
- width: 100%;
4561
- }
4562
- .q-tab {
4563
- margin-bottom: -1px;
4788
+
4789
+
4790
+ width: max-content;
4791
+ min-width: 100%;
4564
4792
  }
4565
4793
  .q-tabs__panels {
4566
- border: 1px solid $border;
4794
+ border: var(--q-border-width) solid var(--q-border-color);
4567
4795
  border-top: 0;
4568
4796
  border-start-start-radius: 0;
4569
4797
  border-start-end-radius: 0;
4570
- border-end-start-radius: $border-radius;
4571
- border-end-end-radius: $border-radius;
4572
- 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);
4573
4801
  }
4574
4802
  }
4575
4803
  &--vertical {
4576
4804
  flex-direction: row;
4577
4805
  align-items: stretch;
4578
4806
  .q-tabs__list {
4807
+ display: flex;
4579
4808
  flex: 0 0 auto;
4809
+ flex-direction: column;
4810
+ align-self: stretch;
4580
4811
  width: max-content;
4581
4812
  max-width: 100%;
4582
- 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;
4583
4832
  }
4584
4833
  .q-tabs__tablist {
4585
4834
  flex-direction: column;
4835
+ height: max-content;
4836
+ min-height: 100%;
4586
4837
  }
4587
4838
  .q-tab {
4588
4839
  justify-content: flex-start;
4589
- margin-inline-end: -1px;
4590
4840
  }
4591
4841
  .q-tabs__panels {
4592
4842
  flex: 1;
4593
4843
  min-width: 0;
4594
- border: 1px solid $border;
4844
+ border: var(--q-border-width) solid var(--q-border-color);
4595
4845
  border-inline-start: 0;
4596
4846
  border-start-start-radius: 0;
4597
4847
  border-end-start-radius: 0;
4598
- border-start-end-radius: $border-radius;
4599
- border-end-end-radius: $border-radius;
4600
- 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);
4601
4851
  }
4602
4852
  }
4603
4853
 
@@ -4605,7 +4855,7 @@ $spinner-color: var(--q-theme-primary);
4605
4855
  &--line {
4606
4856
  .q-tabs__indicator {
4607
4857
  position: absolute;
4608
- background-color: $primary;
4858
+ background-color: var(--q-theme-primary);
4609
4859
  opacity: 0;
4610
4860
  pointer-events: none;
4611
4861
  z-index: 1;
@@ -4620,15 +4870,15 @@ $spinner-color: var(--q-theme-primary);
4620
4870
  &.q-tabs--horizontal .q-tabs__indicator {
4621
4871
 
4622
4872
 
4623
- bottom: -1px;
4873
+ bottom: 0;
4624
4874
  left: 0;
4625
4875
  }
4626
4876
  &.q-tabs--horizontal .q-tab {
4627
- border-bottom: 4px solid transparent;
4877
+ border-bottom: var(--q-tabs-indicator-thickness) solid transparent;
4628
4878
  border-end-start-radius: 0;
4629
4879
  border-end-end-radius: 0;
4630
4880
  &--active {
4631
- border-bottom-color: $primary;
4881
+ border-bottom-color: var(--q-theme-primary);
4632
4882
  }
4633
4883
  @media (hover: hover) {
4634
4884
  &:hover:not(:disabled, .q-tab--active) {
@@ -4642,14 +4892,14 @@ $spinner-color: var(--q-theme-primary);
4642
4892
  &.q-tabs--vertical .q-tabs__indicator {
4643
4893
 
4644
4894
  top: 0;
4645
- inset-inline-end: -1px;
4895
+ inset-inline-end: 0;
4646
4896
  }
4647
4897
  &.q-tabs--vertical .q-tab {
4648
- border-inline-end: 4px solid transparent;
4898
+ border-inline-end: var(--q-tabs-indicator-thickness) solid transparent;
4649
4899
  border-start-end-radius: 0;
4650
4900
  border-end-end-radius: 0;
4651
4901
  &--active {
4652
- border-inline-end-color: $primary;
4902
+ border-inline-end-color: var(--q-theme-primary);
4653
4903
  }
4654
4904
  @media (hover: hover) {
4655
4905
  &:hover:not(:disabled, .q-tab--active) {
@@ -4667,45 +4917,45 @@ $spinner-color: var(--q-theme-primary);
4667
4917
  gap: 0;
4668
4918
  }
4669
4919
  .q-tab {
4670
- border: 1px solid $border;
4920
+ border: var(--q-border-width) solid var(--q-border-color);
4671
4921
  background-color: rgb(var(--q-theme-neutral-light-rgb) / 25%);
4672
4922
  &--active {
4673
- background-color: $container;
4923
+ background-color: var(--q-theme-container);
4674
4924
  z-index: 1;
4675
4925
  }
4676
4926
  @media (hover: hover) {
4677
4927
  &:hover:not(:disabled) {
4678
- border-color: $border;
4928
+ border-color: var(--q-border-color);
4679
4929
  }
4680
4930
  }
4681
4931
  }
4682
4932
  &.q-tabs--horizontal .q-tab {
4683
- border-start-start-radius: $border-radius;
4684
- border-start-end-radius: $border-radius;
4933
+ border-start-start-radius: var(--q-border-radius);
4934
+ border-start-end-radius: var(--q-border-radius);
4685
4935
  border-end-start-radius: 0;
4686
4936
  border-end-end-radius: 0;
4687
4937
  &--active {
4688
- border-bottom-color: $container;
4689
- color: $primary;
4938
+ border-bottom-color: var(--q-theme-container);
4939
+ color: var(--q-theme-primary);
4690
4940
  }
4691
4941
  }
4692
4942
  &.q-tabs--horizontal .q-tab--active:hover:not(:disabled) {
4693
4943
  @media (hover: hover) {
4694
- border-bottom-color: $container;
4944
+ border-bottom-color: var(--q-theme-container);
4695
4945
  }
4696
4946
  }
4697
4947
  &.q-tabs--vertical .q-tab {
4698
- border-start-start-radius: $border-radius;
4699
- border-end-start-radius: $border-radius;
4948
+ border-start-start-radius: var(--q-border-radius);
4949
+ border-end-start-radius: var(--q-border-radius);
4700
4950
  border-start-end-radius: 0;
4701
4951
  border-end-end-radius: 0;
4702
4952
  &--active {
4703
- border-inline-end-color: $container;
4953
+ border-inline-end-color: var(--q-theme-container);
4704
4954
  }
4705
4955
  }
4706
4956
  &.q-tabs--vertical .q-tab--active:hover:not(:disabled) {
4707
4957
  @media (hover: hover) {
4708
- border-inline-end-color: $container;
4958
+ border-inline-end-color: var(--q-theme-container);
4709
4959
  }
4710
4960
  }
4711
4961
  }
@@ -4726,17 +4976,42 @@ $spinner-color: var(--q-theme-primary);
4726
4976
  }
4727
4977
  &__list {
4728
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
+ }
4729
4999
  }
4730
5000
  &__tablist {
4731
5001
  display: flex;
4732
- 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
+ }
4733
5008
  }
4734
5009
  &__panels {
4735
- padding-block: calc($space-base * 2);
5010
+ padding-block: var(--q-space-2);
4736
5011
  }
4737
5012
  &__panel {
4738
5013
  &:focus {
4739
- outline: $outline;
5014
+ outline: var(--q-focus-ring);
4740
5015
  &:not(:focus-visible) {
4741
5016
  outline: 0;
4742
5017
  }
@@ -4746,22 +5021,22 @@ $spinner-color: var(--q-theme-primary);
4746
5021
  .q-tab {
4747
5022
  background: transparent;
4748
5023
  border: 0;
4749
- padding: 0.5rem 0.75rem;
5024
+ padding: var(--q-control-padding-y-lg) var(--q-control-padding-x-lg);
4750
5025
  &.q-button.q-button--text {
4751
- color: $on-background;
5026
+ color: var(--q-theme-on-background);
4752
5027
  }
4753
5028
  &--active.q-button.q-button--text {
4754
- color: $primary;
5029
+ color: var(--q-theme-primary);
4755
5030
  cursor: default;
4756
5031
  &:hover:not(:disabled) {
4757
- color: $primary;
5032
+ color: var(--q-theme-primary);
4758
5033
  cursor: default;
4759
5034
  }
4760
5035
  }
4761
5036
  &__title {
4762
5037
  display: inline-flex;
4763
5038
  align-items: center;
4764
- gap: calc($space-base * 0.5);
5039
+ gap: calc(var(--q-space-1) * 0.5);
4765
5040
  }
4766
5041
  &__title-text {
4767
5042
  font-weight: 600;
@@ -4782,6 +5057,12 @@ $spinner-color: var(--q-theme-primary);
4782
5057
 
4783
5058
  display: flex;
4784
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
+ }
4785
5066
  &__input {
4786
5067
  width: 100%;
4787
5068
  line-height: inherit;
@@ -4789,7 +5070,7 @@ $spinner-color: var(--q-theme-primary);
4789
5070
  color: inherit;
4790
5071
  background-color: transparent;
4791
5072
  padding: 0;
4792
- min-height: 2.5rem;
5073
+ min-height: calc(2.5rem * var(--q-density-scale));
4793
5074
  resize: vertical;
4794
5075
  font-family: inherit;
4795
5076
  font-size: inherit;
@@ -4857,20 +5138,28 @@ $spinner-color: var(--q-theme-primary);
4857
5138
  color: var(--q-theme-on-background);
4858
5139
  caret-color: var(--q-theme-on-background);
4859
5140
  }
4860
- $q-toast-width: calc(8 * 5em + 7 * #{$space-base}) !default;
5141
+ $q-toast-width: calc(8 * 5em + 7 * var(--q-space-1)) !default;
4861
5142
  $q-toast-duration: 0.3s !default;
4862
5143
  $q-toast-duration-leave: 0.24s !default;
4863
- $q-toast-spacing-buffer: clamp(1rem, 4vw, 2.5rem) !default;
4864
- $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;
4865
5154
  .q-toaster {
4866
5155
  position: fixed;
4867
5156
  z-index: 9999;
4868
5157
  inset: 0;
4869
5158
  display: flex;
4870
5159
  flex-direction: column;
4871
- gap: $space-base * 2;
5160
+ gap: var(--q-space-2);
4872
5161
  pointer-events: none;
4873
- padding: $space-base * 2;
5162
+ padding: var(--q-space-2);
4874
5163
  overflow: hidden;
4875
5164
 
4876
5165
  &[data-placement*='left'] {
@@ -4897,8 +5186,8 @@ $q-toast-slide-distance: clamp(1rem, 3vw, 1.5rem) !default;
4897
5186
  --q-toast-tonal-color: var(--q-theme-info-light);
4898
5187
  max-width: #{$q-toast-width};
4899
5188
  &.q-card {
4900
- --card-base-padding: 0;
4901
- --card-padding: 0;
5189
+ --q-card-base-padding: 0;
5190
+ --q-card-padding: 0;
4902
5191
 
4903
5192
  min-height: unset;
4904
5193
  }
@@ -4907,7 +5196,7 @@ $q-toast-slide-distance: clamp(1rem, 3vw, 1.5rem) !default;
4907
5196
  }
4908
5197
  &__title {
4909
5198
  display: flex;
4910
- gap: $space-base;
5199
+ gap: var(--q-space-1);
4911
5200
  h4 {
4912
5201
  margin-block: 0;
4913
5202
  }
@@ -4915,14 +5204,18 @@ $q-toast-slide-distance: clamp(1rem, 3vw, 1.5rem) !default;
4915
5204
  &__body {
4916
5205
  text-wrap: wrap;
4917
5206
  }
5207
+ .q-col:has(.q-toast__dismiss.q-button) {
5208
+ padding-left: 0;
5209
+ padding-right: 0;
5210
+ }
4918
5211
 
4919
5212
  &--block {
4920
5213
  max-width: unset;
4921
5214
  }
4922
5215
 
4923
5216
  &--vertical {
4924
- padding-bottom: $space-base * 4;
4925
- padding-top: $space-base;
5217
+ padding-bottom: var(--q-space-4);
5218
+ padding-top: var(--q-space-1);
4926
5219
  }
4927
5220
  &--bold {
4928
5221
  background-color: var(--q-toast-main-color);
@@ -5016,22 +5309,22 @@ $q-toast-slide-distance: clamp(1rem, 3vw, 1.5rem) !default;
5016
5309
  &__content {
5017
5310
  display: flex;
5018
5311
  flex-direction: column;
5019
- gap: $space-base;
5312
+ gap: var(--q-space-1);
5020
5313
  align-items: center;
5021
- padding: 0.5rem;
5314
+ padding: var(--q-space-2);
5022
5315
  font-style: normal;
5023
- font-size: calc($font-size-base * 0.9);
5024
- font-weight: $font-weight-regular;
5316
+ font-size: var(--q-font-size-sm);
5317
+ font-weight: var(--q-font-weight-regular);
5025
5318
  text-decoration: none;
5026
5319
  text-shadow: none;
5027
5320
  text-transform: none;
5028
- line-height: 1.5;
5321
+ line-height: var(--q-line-height-md);
5029
5322
  line-break: auto;
5030
5323
  overflow-wrap: break-word;
5031
5324
  word-break: normal;
5032
5325
  word-spacing: normal;
5033
5326
  white-space: normal;
5034
5327
  letter-spacing: normal;
5035
- max-width: 200px;
5328
+ max-width: calc(200px * var(--q-density-scale));
5036
5329
  }
5037
5330
  }