@quidgest/ui 0.17.9 → 0.19.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 (135) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/dist/json/api.json +302 -143
  3. package/dist/manifest/components.json +4 -1
  4. package/dist/ui.css +460 -167
  5. package/dist/ui.esm.js +618 -631
  6. package/dist/ui.js +490 -504
  7. package/dist/ui.min.css +1 -1
  8. package/dist/ui.min.js +490 -504
  9. package/dist/ui.scss +439 -167
  10. package/esm/components/QAccordion/QAccordionItem.vue.js +1 -0
  11. package/esm/components/QCarousel/QCarousel.vue.js +1 -1
  12. package/esm/components/QCheckbox/QCheckbox.d.ts.map +1 -1
  13. package/esm/components/QCheckbox/QCheckbox.vue.js +2 -0
  14. package/esm/components/QCollapsible/QCollapsible.d.ts +2 -1
  15. package/esm/components/QCollapsible/QCollapsible.d.ts.map +1 -1
  16. package/esm/components/QCollapsible/QCollapsible.vue.js +50 -47
  17. package/esm/components/QCollapsible/constants.d.ts +6 -0
  18. package/esm/components/QCollapsible/constants.d.ts.map +1 -1
  19. package/esm/components/QCollapsible/constants.js +3 -2
  20. package/esm/components/QCollapsible/index.d.ts +6 -0
  21. package/esm/components/QCollapsible/index.d.ts.map +1 -1
  22. package/esm/components/QCollapsible/types.d.ts +11 -1
  23. package/esm/components/QCollapsible/types.d.ts.map +1 -1
  24. package/esm/components/QDateTimePicker/QDateTimePicker.d.ts.map +1 -1
  25. package/esm/components/QDateTimePicker/QDateTimePicker.vue.js +505 -597
  26. package/esm/components/QDropdownMenu/QDropdownMenuContent.d.ts +32 -16
  27. package/esm/components/QDropdownMenu/QDropdownMenuContent.d.ts.map +1 -1
  28. package/esm/components/QDropdownMenu/QDropdownMenuContent.vue.js +179 -86
  29. package/esm/components/QDropdownMenu/types.d.ts +6 -0
  30. package/esm/components/QDropdownMenu/types.d.ts.map +1 -1
  31. package/esm/components/QField/types.d.ts +3 -0
  32. package/esm/components/QField/types.d.ts.map +1 -1
  33. package/esm/components/QGrid/QCol.vue.js +1 -1
  34. package/esm/components/QLabel/QLabel.d.ts.map +1 -1
  35. package/esm/components/QLabel/QLabel.vue.js +19 -17
  36. package/esm/components/QLabel/types.d.ts +3 -0
  37. package/esm/components/QLabel/types.d.ts.map +1 -1
  38. package/esm/components/{QGroupBox/QGroupBox.d.ts → QSection/QSection.d.ts} +4 -4
  39. package/esm/components/QSection/QSection.d.ts.map +1 -0
  40. package/esm/components/{QGroupBox/QGroupBox.vue.js → QSection/QSection.vue.js} +8 -8
  41. package/esm/components/QSection/QSection2.vue.js +5 -0
  42. package/esm/components/{QGroupBox → QSection}/index.d.ts +8 -8
  43. package/esm/components/QSection/index.d.ts.map +1 -0
  44. package/esm/components/QSection/index.js +6 -0
  45. package/esm/components/QSection/types.d.ts +32 -0
  46. package/esm/components/QSection/types.d.ts.map +1 -0
  47. package/esm/components/QSidebar/QSidebar.d.ts +53 -6
  48. package/esm/components/QSidebar/QSidebar.d.ts.map +1 -1
  49. package/esm/components/QSidebar/QSidebar.vue.js +76 -106
  50. package/esm/components/QSidebar/QSidebarAnchor.d.ts +24 -210
  51. package/esm/components/QSidebar/QSidebarAnchor.d.ts.map +1 -1
  52. package/esm/components/QSidebar/QSidebarAnchor.vue.js +47 -59
  53. package/esm/components/QSidebar/QSidebarItem.d.ts +213 -0
  54. package/esm/components/QSidebar/QSidebarItem.d.ts.map +1 -0
  55. package/esm/components/QSidebar/QSidebarItem.vue.js +130 -0
  56. package/esm/components/QSidebar/QSidebarItem2.vue.js +5 -0
  57. package/esm/components/QSidebar/QSidebarPanel.d.ts +1 -7
  58. package/esm/components/QSidebar/QSidebarPanel.d.ts.map +1 -1
  59. package/esm/components/QSidebar/QSidebarPanel.vue.js +4 -10
  60. package/esm/components/QSidebar/context.d.ts +108 -0
  61. package/esm/components/QSidebar/context.d.ts.map +1 -0
  62. package/esm/components/QSidebar/context.js +4 -0
  63. package/esm/components/QSidebar/index.d.ts +166 -8
  64. package/esm/components/QSidebar/index.d.ts.map +1 -1
  65. package/esm/components/QSidebar/index.js +3 -2
  66. package/esm/components/QSidebar/types.d.ts +77 -42
  67. package/esm/components/QSidebar/types.d.ts.map +1 -1
  68. package/esm/components/QTabs/QTab.d.ts +173 -0
  69. package/esm/components/QTabs/QTab.d.ts.map +1 -0
  70. package/esm/components/QTabs/QTab.vue.js +123 -0
  71. package/esm/components/QTabs/QTab2.vue.js +5 -0
  72. package/esm/components/QTabs/QTabs.d.ts +37 -0
  73. package/esm/components/QTabs/QTabs.d.ts.map +1 -0
  74. package/esm/components/QTabs/QTabs.vue.js +162 -0
  75. package/esm/components/QTabs/QTabs2.vue.js +5 -0
  76. package/esm/components/QTabs/constants.d.ts +5 -0
  77. package/esm/components/QTabs/constants.d.ts.map +1 -0
  78. package/esm/components/QTabs/context.d.ts +85 -0
  79. package/esm/components/QTabs/context.d.ts.map +1 -0
  80. package/esm/components/QTabs/context.js +4 -0
  81. package/esm/components/QTabs/index.d.ts +166 -0
  82. package/esm/components/QTabs/index.d.ts.map +1 -0
  83. package/esm/components/QTabs/index.js +7 -0
  84. package/esm/components/QTabs/types.d.ts +108 -0
  85. package/esm/components/QTabs/types.d.ts.map +1 -0
  86. package/esm/components/__internal__/QRequiredIndicator/QRequiredIndicator.d.ts +7 -0
  87. package/esm/components/__internal__/QRequiredIndicator/QRequiredIndicator.d.ts.map +1 -0
  88. package/esm/components/__internal__/QRequiredIndicator/QRequiredIndicator.vue.js +24 -0
  89. package/esm/components/__internal__/QRequiredIndicator/QRequiredIndicator2.vue.js +5 -0
  90. package/esm/components/__internal__/QRequiredIndicator/constants.d.ts +7 -0
  91. package/esm/components/__internal__/QRequiredIndicator/constants.d.ts.map +1 -0
  92. package/esm/components/__internal__/QRequiredIndicator/constants.js +4 -0
  93. package/esm/components/__internal__/QRequiredIndicator/index.d.ts +6 -0
  94. package/esm/components/__internal__/QRequiredIndicator/index.d.ts.map +1 -0
  95. package/esm/components/__internal__/QRequiredIndicator/index.js +6 -0
  96. package/esm/components/__internal__/QRequiredIndicator/types.d.ts +18 -0
  97. package/esm/components/__internal__/QRequiredIndicator/types.d.ts.map +1 -0
  98. package/esm/components/__internal__/QSafeTriangle/QSafeTriangle.d.ts +10 -0
  99. package/esm/components/__internal__/QSafeTriangle/QSafeTriangle.d.ts.map +1 -0
  100. package/esm/components/__internal__/QSafeTriangle/QSafeTriangle.vue.js +31 -0
  101. package/esm/components/__internal__/QSafeTriangle/QSafeTriangle2.vue.js +5 -0
  102. package/esm/components/__internal__/QSafeTriangle/index.d.ts +10 -0
  103. package/esm/components/__internal__/QSafeTriangle/index.d.ts.map +1 -0
  104. package/esm/components/__internal__/QSafeTriangle/index.js +6 -0
  105. package/esm/components/__internal__/QSafeTriangle/types.d.ts +33 -0
  106. package/esm/components/__internal__/QSafeTriangle/types.d.ts.map +1 -0
  107. package/esm/components/index.d.ts +2 -1
  108. package/esm/components/index.d.ts.map +1 -1
  109. package/esm/components/index.js +41 -37
  110. package/esm/composables/useSafeTriangle/index.d.ts +31 -0
  111. package/esm/composables/useSafeTriangle/index.d.ts.map +1 -0
  112. package/esm/composables/useSafeTriangle/index.js +87 -0
  113. package/esm/index.d.ts +4 -1
  114. package/esm/utils/date.d.ts +36 -1
  115. package/esm/utils/date.d.ts.map +1 -1
  116. package/esm/utils/date.js +90 -1
  117. package/esm/utils/index.d.ts +1 -0
  118. package/esm/utils/index.d.ts.map +1 -1
  119. package/esm/utils/index.js +30 -24
  120. package/esm/utils/mask.d.ts +17 -0
  121. package/esm/utils/mask.d.ts.map +1 -0
  122. package/esm/utils/mask.js +154 -0
  123. package/esm/utils/safeTriangle.d.ts +68 -0
  124. package/esm/utils/safeTriangle.d.ts.map +1 -0
  125. package/esm/utils/safeTriangle.js +83 -0
  126. package/package.json +7 -6
  127. package/esm/components/QGroupBox/QGroupBox.d.ts.map +0 -1
  128. package/esm/components/QGroupBox/QGroupBox2.vue.js +0 -5
  129. package/esm/components/QGroupBox/index.d.ts.map +0 -1
  130. package/esm/components/QGroupBox/index.js +0 -6
  131. package/esm/components/QGroupBox/types.d.ts +0 -32
  132. package/esm/components/QGroupBox/types.d.ts.map +0 -1
  133. package/esm/composables/useInputMask/index.d.ts +0 -50
  134. package/esm/composables/useInputMask/index.d.ts.map +0 -1
  135. package/esm/composables/useInputMask/index.js +0 -408
package/dist/ui.scss CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quidgest UI v0.17.9
2
+ * Quidgest UI v0.19.0
3
3
  * (c) 2026 Quidgest - Consultores de Gestão, S.A.
4
4
  * Released under the MIT License.
5
5
  */
@@ -237,6 +237,7 @@ $shadow-md: (
237
237
  0 4px 6px -1px rgb(0 0 0 / 10%),
238
238
  0 2px 4px -2px rgb(0 0 0 / 10%)
239
239
  );
240
+ $overlay-z-index: 1070 !default;
240
241
  $breakpoint-sm: 576px;
241
242
  $breakpoint-md: 768px;
242
243
  $breakpoint-lg: 992px;
@@ -400,6 +401,20 @@ $transition-duration: 0.2s !default;
400
401
  --#{$prefix}-on-hover-color-rgb: var(--q-theme-on-#{$color}-rgb);
401
402
  }
402
403
  }
404
+ @mixin sr-only {
405
+ position: absolute;
406
+ width: 1px;
407
+ height: 1px;
408
+ padding: 0;
409
+ margin: -1px;
410
+ overflow: hidden;
411
+ clip-path: inset(50%);
412
+ white-space: nowrap;
413
+ border: 0;
414
+ }
415
+ .q-sr-only {
416
+ @include sr-only;
417
+ }
403
418
  .q-chevron {
404
419
  transition: all 0.2s;
405
420
  &--expanded {
@@ -420,6 +435,24 @@ $transition-duration: 0.2s !default;
420
435
  opacity: 1;
421
436
  }
422
437
  }
438
+ .q-required-indicator {
439
+ display: contents;
440
+ &__mark {
441
+ margin-inline-start: 0.25em;
442
+ font-weight: 700;
443
+ color: var(--q-theme-danger);
444
+ }
445
+ }
446
+ .q-safe-triangle {
447
+ position: fixed;
448
+ z-index: $overlay-z-index + 1;
449
+ overflow: visible;
450
+ pointer-events: none;
451
+ &__path {
452
+ pointer-events: auto;
453
+ fill: transparent;
454
+ }
455
+ }
423
456
  .q-accordion {
424
457
  display: flex;
425
458
  flex-direction: column;
@@ -560,7 +593,8 @@ $transition-duration: 0.2s !default;
560
593
  }
561
594
  &--pill {
562
595
  border-radius: 9999px;
563
- .q-button {
596
+ #{$this}__content.q-button,
597
+ #{$this}__remove.q-button {
564
598
  border-radius: 9999px;
565
599
  }
566
600
  }
@@ -614,7 +648,7 @@ $transition-duration: 0.2s !default;
614
648
  vertical-align: middle;
615
649
  flex-shrink: 0;
616
650
  }
617
- .q-badge__content {
651
+ &.q-badge .q-badge__content {
618
652
  padding: 0;
619
653
  }
620
654
 
@@ -1201,17 +1235,6 @@ $q-carousel-height-md: 300px;
1201
1235
  width: 100%;
1202
1236
  height: 100%;
1203
1237
  }
1204
- .q-carousel__sr-only {
1205
- position: absolute;
1206
- width: 1px;
1207
- height: 1px;
1208
- padding: 0;
1209
- margin: -1px;
1210
- overflow: hidden;
1211
- clip-path: inset(50%);
1212
- white-space: nowrap;
1213
- border: 0;
1214
- }
1215
1238
  @media (max-width: $breakpoint-md) {
1216
1239
  .q-carousel {
1217
1240
  --q-carousel-height: #{$q-carousel-height-md};
@@ -1409,11 +1432,13 @@ $q-carousel-height-md: 300px;
1409
1432
  right: 0;
1410
1433
  }
1411
1434
  }
1412
- .q-card__content {
1413
- padding: 0;
1414
- }
1415
- .q-card__header {
1416
- padding-bottom: 0;
1435
+ &.q-card {
1436
+ .q-card__content {
1437
+ padding: 0;
1438
+ }
1439
+ .q-card__header {
1440
+ padding-bottom: 0;
1441
+ }
1417
1442
  }
1418
1443
  &__header {
1419
1444
  display: flex;
@@ -1426,12 +1451,13 @@ $q-carousel-height-md: 300px;
1426
1451
  justify-content: start;
1427
1452
  align-items: flex-start;
1428
1453
  flex-direction: column;
1429
- padding: $header-padding;
1454
+ padding: 0;
1430
1455
  }
1431
- &__btn {
1456
+ &__btn.q-button {
1432
1457
  width: 100%;
1433
1458
  margin: 0;
1434
- padding: 0;
1459
+
1460
+ padding: $header-padding;
1435
1461
  .q-button__content {
1436
1462
  gap: 0;
1437
1463
  padding: $btn-padding;
@@ -1500,10 +1526,6 @@ $q-carousel-height-md: 300px;
1500
1526
  }
1501
1527
  }
1502
1528
 
1503
- &--required {
1504
- font-weight: 700;
1505
- color: var(--q-theme-danger);
1506
- }
1507
1529
  &--icon-right {
1508
1530
  &:not(.q-collapsible--borderless) .q-collapsible__title .q-icon {
1509
1531
  margin: 0 0 0 auto;
@@ -1514,7 +1536,7 @@ $q-carousel-height-md: 300px;
1514
1536
  }
1515
1537
 
1516
1538
  @mixin header-spacing($spacing, $increment) {
1517
- &--#{$spacing} .q-collapsible__header {
1539
+ &--#{$spacing} .q-collapsible__btn.q-button {
1518
1540
  padding: calc(#{$header-padding} + #{$increment});
1519
1541
  }
1520
1542
  }
@@ -1537,7 +1559,7 @@ $q-carousel-height-md: 300px;
1537
1559
  .q-combobox {
1538
1560
  $this: &;
1539
1561
  &:not(#{$this}--disabled) {
1540
- #{$this}__chevron {
1562
+ #{$this}__chevron.q-button {
1541
1563
  &:hover,
1542
1564
  &:focus {
1543
1565
  cursor: pointer;
@@ -1546,7 +1568,7 @@ $q-carousel-height-md: 300px;
1546
1568
  }
1547
1569
  }
1548
1570
  }
1549
- .q-combobox__chevron {
1571
+ .q-combobox__chevron.q-button {
1550
1572
  padding: 0.1rem;
1551
1573
  opacity: 0.5;
1552
1574
  &:hover {
@@ -1772,7 +1794,7 @@ $q-carousel-height-md: 300px;
1772
1794
  gap: 0.5rem;
1773
1795
  }
1774
1796
  }
1775
- &__close {
1797
+ &__close.q-button {
1776
1798
  position: absolute;
1777
1799
  top: 0.5rem;
1778
1800
  right: 0.5rem;
@@ -2305,121 +2327,6 @@ $q-spacing-sides: (
2305
2327
  @include q-generate-responsive-spacing(margin, m);
2306
2328
  @include q-generate-responsive-spacing(padding, p);
2307
2329
  @include q-generate-margin-auto;
2308
- .q-group-box {
2309
- $this: &;
2310
- display: inline-block;
2311
- overflow-wrap: break-word;
2312
- background-color: var(--q-theme-container);
2313
- border-width: 1px;
2314
- border-bottom: $group-border-bottom;
2315
- padding: 0.5rem 1rem 1rem;
2316
- border-radius: var(--border-radius);
2317
- position: relative;
2318
- max-width: 100%;
2319
- &:focus-visible {
2320
- outline: $outline;
2321
- border-radius: var(--border-radius);
2322
- }
2323
- &__title {
2324
- font-size: 1.2rem;
2325
- line-height: 1rem;
2326
- letter-spacing: 0.02rem;
2327
- color: var(--q-theme-primary);
2328
- text-transform: $headings-text-transform;
2329
- margin: 0;
2330
- margin-top: 0.25rem;
2331
- display: flex;
2332
- align-items: flex-start;
2333
- width: fit-content;
2334
- gap: 0.25rem;
2335
- margin-bottom: 0.5rem;
2336
- }
2337
-
2338
- &--background {
2339
- background-color: rgb(var(--q-theme-primary-light-rgb) / 50%);
2340
- padding: 0.5rem 1rem 1rem;
2341
- }
2342
- &--minor {
2343
- background-color: transparent;
2344
- border: none;
2345
- border-radius: 0;
2346
- padding: 0.5rem 0 0;
2347
- }
2348
- &--minor-border-top {
2349
- background-color: transparent;
2350
- border: none;
2351
- border-top: 1px solid var(--q-theme-neutral-light);
2352
- border-radius: 0;
2353
- margin-top: 0.5rem;
2354
- padding: 0.25rem 0;
2355
- }
2356
- &--minor,
2357
- &--minor-border-top {
2358
- #{$this}__title {
2359
- font-size: 0.9rem;
2360
- line-height: 1;
2361
- letter-spacing: initial;
2362
- color: var(--q-theme-neutral-dark);
2363
- text-transform: none;
2364
- font-weight: 600;
2365
- margin-bottom: 0.25rem;
2366
- margin-top: 0.25rem;
2367
- }
2368
- }
2369
- &--title-background {
2370
- padding: 0 !important;
2371
- &::before {
2372
- position: absolute;
2373
- top: 0;
2374
- left: 0;
2375
- height: 30px;
2376
- width: 100%;
2377
- content: '';
2378
- background-color: rgb(var(--q-theme-neutral-light-rgb) / 25%);
2379
- border-radius: var(--border-radius) var(--border-radius) 0 0;
2380
- }
2381
- #{$this}__title {
2382
- padding: 0.5rem 1rem;
2383
- margin: 0;
2384
- font-size: 0.9rem;
2385
- font-weight: 700;
2386
- line-height: 1;
2387
- letter-spacing: 0.01rem;
2388
- color: var(--q-theme-on-background);
2389
- text-transform: none;
2390
- z-index: 10;
2391
- position: relative;
2392
- }
2393
- > #{$this}__content {
2394
- padding: 0.2rem 1rem 1rem;
2395
- }
2396
- }
2397
- &--subsection {
2398
- border: none;
2399
- margin-left: 0.625rem;
2400
- margin-bottom: 0.625rem;
2401
- #{$this}__title {
2402
- font-size: 0.9rem;
2403
- line-height: 1;
2404
- letter-spacing: initial;
2405
- background-color: transparent;
2406
- color: var(--q-theme-neutral-dark);
2407
- text-transform: none;
2408
- font-weight: 600;
2409
- margin-bottom: 0.25rem;
2410
- }
2411
- }
2412
-
2413
- &--borderless {
2414
- border-color: transparent;
2415
- margin: 0;
2416
- padding: 0;
2417
- background-color: transparent;
2418
- }
2419
- &--block {
2420
- width: 100%;
2421
- }
2422
- }
2423
2330
  .q-icon {
2424
2331
  display: inline-block;
2425
2332
  color: var(--q-theme-primary);
@@ -2505,13 +2412,6 @@ $input-group-addon-background: rgb(var(--q-theme-neutral-light-rgb) / 25%);
2505
2412
  .q-icon {
2506
2413
  color: currentcolor;
2507
2414
  }
2508
- &--required {
2509
- &::after {
2510
- content: ' *';
2511
- font-weight: 700;
2512
- color: var(--q-theme-danger);
2513
- }
2514
- }
2515
2415
  &--topright {
2516
2416
  align-self: flex-end;
2517
2417
  }
@@ -2691,11 +2591,11 @@ $q-line-loader-color: var(--q-line-loader-color);
2691
2591
  width: 100%;
2692
2592
  color: var(--q-theme-neutral);
2693
2593
  user-select: none;
2694
- .q-icon {
2594
+ .q-obfuscation__icon.q-icon {
2695
2595
  color: inherit;
2696
2596
  }
2697
2597
  }
2698
- &__action {
2598
+ &__action.q-button {
2699
2599
  justify-content: flex-start;
2700
2600
  margin: 0;
2701
2601
  padding: 0;
@@ -2703,7 +2603,6 @@ $q-line-loader-color: var(--q-line-loader-color);
2703
2603
  width: 100%;
2704
2604
  min-height: 1.5em;
2705
2605
  line-height: inherit;
2706
- color: var(--q-theme-primary);
2707
2606
  &:hover,
2708
2607
  &:focus-visible {
2709
2608
  outline-offset: 0;
@@ -2714,6 +2613,9 @@ $q-line-loader-color: var(--q-line-loader-color);
2714
2613
  &.q-button--labeled {
2715
2614
  padding: 0;
2716
2615
  }
2616
+ &.q-button--text {
2617
+ color: var(--q-theme-primary);
2618
+ }
2717
2619
  }
2718
2620
  &__content {
2719
2621
  display: flex;
@@ -2721,22 +2623,24 @@ $q-line-loader-color: var(--q-line-loader-color);
2721
2623
  gap: $space-base;
2722
2624
  min-width: 0;
2723
2625
  }
2724
- &__label-action {
2725
- color: var(--q-theme-primary);
2626
+ & &__label-action.q-button {
2627
+ padding: 0;
2726
2628
  min-width: auto;
2727
2629
  min-height: auto;
2728
2630
  &:focus-visible {
2729
2631
  outline-offset: 2px;
2730
2632
  }
2633
+ &.q-button--text {
2634
+ color: var(--q-theme-primary);
2635
+ }
2731
2636
  }
2732
- &__icon {
2637
+ &__icon.q-icon {
2733
2638
  flex-shrink: 0;
2734
2639
  }
2735
2640
  }
2736
2641
  $overlay-border-width: 1px;
2737
2642
  $overlay-arrow-width: 11.31px;
2738
2643
  $overlay-arrow-height: 11.31px;
2739
- $overlay-z-index: 1070;
2740
2644
  $arrow-tip-radius: 0.1rem;
2741
2645
  .q-overlay {
2742
2646
  $this: &;
@@ -3162,13 +3066,128 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
3162
3066
  .q-radio-group--focus-style .q-radio-button:focus-within {
3163
3067
  outline: $outline;
3164
3068
  }
3069
+ .q-section {
3070
+ $this: &;
3071
+ display: inline-block;
3072
+ overflow-wrap: break-word;
3073
+ background-color: var(--q-theme-container);
3074
+ border-width: 1px;
3075
+ border-bottom: $group-border-bottom;
3076
+ padding: 0.5rem 1rem 1rem;
3077
+ border-radius: var(--border-radius);
3078
+ position: relative;
3079
+ max-width: 100%;
3080
+ &:focus-visible {
3081
+ outline: $outline;
3082
+ border-radius: var(--border-radius);
3083
+ }
3084
+ &__title {
3085
+ font-size: 1.2rem;
3086
+ line-height: 1rem;
3087
+ letter-spacing: 0.02rem;
3088
+ color: var(--q-theme-primary);
3089
+ text-transform: $headings-text-transform;
3090
+ margin: 0;
3091
+ margin-top: 0.25rem;
3092
+ display: flex;
3093
+ align-items: flex-start;
3094
+ width: fit-content;
3095
+ gap: 0.25rem;
3096
+ margin-bottom: 0.5rem;
3097
+ }
3098
+
3099
+ &--background {
3100
+ background-color: rgb(var(--q-theme-primary-light-rgb) / 50%);
3101
+ padding: 0.5rem 1rem 1rem;
3102
+ }
3103
+ &--minor {
3104
+ background-color: transparent;
3105
+ border: none;
3106
+ border-radius: 0;
3107
+ padding: 0.5rem 0 0;
3108
+ }
3109
+ &--minor-border-top {
3110
+ background-color: transparent;
3111
+ border: none;
3112
+ border-top: 1px solid var(--q-theme-neutral-light);
3113
+ border-radius: 0;
3114
+ margin-top: 0.5rem;
3115
+ padding: 0.25rem 0;
3116
+ }
3117
+ &--minor,
3118
+ &--minor-border-top {
3119
+ #{$this}__title {
3120
+ font-size: 0.9rem;
3121
+ line-height: 1;
3122
+ letter-spacing: initial;
3123
+ color: var(--q-theme-neutral-dark);
3124
+ text-transform: none;
3125
+ font-weight: 600;
3126
+ margin-bottom: 0.25rem;
3127
+ margin-top: 0.25rem;
3128
+ }
3129
+ }
3130
+ &--title-background {
3131
+ padding: 0 !important;
3132
+ &::before {
3133
+ position: absolute;
3134
+ top: 0;
3135
+ left: 0;
3136
+ height: 30px;
3137
+ width: 100%;
3138
+ content: '';
3139
+ background-color: rgb(var(--q-theme-neutral-light-rgb) / 25%);
3140
+ border-radius: var(--border-radius) var(--border-radius) 0 0;
3141
+ }
3142
+ #{$this}__title {
3143
+ padding: 0.5rem 1rem;
3144
+ margin: 0;
3145
+ font-size: 0.9rem;
3146
+ font-weight: 700;
3147
+ line-height: 1;
3148
+ letter-spacing: 0.01rem;
3149
+ color: var(--q-theme-on-background);
3150
+ text-transform: none;
3151
+ z-index: 10;
3152
+ position: relative;
3153
+ }
3154
+ > #{$this}__content {
3155
+ padding: 0.2rem 1rem 1rem;
3156
+ }
3157
+ }
3158
+ &--subsection {
3159
+ border: none;
3160
+ margin-left: 0.625rem;
3161
+ margin-bottom: 0.625rem;
3162
+ #{$this}__title {
3163
+ font-size: 0.9rem;
3164
+ line-height: 1;
3165
+ letter-spacing: initial;
3166
+ background-color: transparent;
3167
+ color: var(--q-theme-neutral-dark);
3168
+ text-transform: none;
3169
+ font-weight: 600;
3170
+ margin-bottom: 0.25rem;
3171
+ }
3172
+ }
3173
+
3174
+ &--borderless {
3175
+ border-color: transparent;
3176
+ margin: 0;
3177
+ padding: 0;
3178
+ background-color: transparent;
3179
+ }
3180
+ &--block {
3181
+ width: 100%;
3182
+ }
3183
+ }
3165
3184
  .q-select {
3166
3185
  $this: &;
3167
3186
  &:not(#{$this}--readonly):not(#{$this}--disabled) {
3168
3187
  cursor: pointer;
3169
3188
  }
3170
3189
  &:not(#{$this}--disabled) {
3171
- #{$this}__chevron {
3190
+ #{$this}__chevron.q-button {
3172
3191
  &:hover,
3173
3192
  &:focus {
3174
3193
  opacity: 1;
@@ -3224,7 +3243,7 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
3224
3243
  visibility: hidden;
3225
3244
  }
3226
3245
  }
3227
- .q-badge__content {
3246
+ .q-badge .q-badge__content {
3228
3247
  white-space: nowrap;
3229
3248
  }
3230
3249
  }
@@ -3237,7 +3256,7 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
3237
3256
  opacity: 0;
3238
3257
  cursor: inherit;
3239
3258
  }
3240
- &__chevron {
3259
+ &__chevron.q-button {
3241
3260
  padding: 0.1rem;
3242
3261
  opacity: 0.5;
3243
3262
  &:hover {
@@ -3282,11 +3301,15 @@ $base-border: 1px solid rgb(var(--q-theme-neutral-light-rgb) / 50%);
3282
3301
  $sidebar-size-small: 19rem;
3283
3302
  $sidebar-size-medium: 27rem;
3284
3303
  $sidebar-size-large: 35rem;
3304
+ $sidebar-size-xlarge: 50%;
3305
+ $sidebar-size-block: 100%;
3285
3306
  $sidebar-border-color: rgb(var(--q-theme-neutral-rgb) / 25%);
3286
3307
  $sidebar-sizes: (
3287
3308
  small: $sidebar-size-small,
3288
3309
  medium: $sidebar-size-medium,
3289
- large: $sidebar-size-large
3310
+ large: $sidebar-size-large,
3311
+ xlarge: $sidebar-size-xlarge,
3312
+ block: $sidebar-size-block
3290
3313
  );
3291
3314
  @mixin sidebar-size-modifiers($prefix, $property) {
3292
3315
  @each $size, $value in $sidebar-sizes {
@@ -3303,10 +3326,20 @@ $sidebar-sizes: (
3303
3326
  flex-direction: row;
3304
3327
  width: min-content;
3305
3328
  }
3306
- .q-sidebar--expanded {
3329
+ .q-sidebar--expanded:not(.q-sidebar--xlarge, .q-sidebar--block) {
3307
3330
  min-width: $sidebar-size-small;
3308
3331
  max-width: $sidebar-size-large;
3309
3332
  }
3333
+ .q-sidebar__panels {
3334
+ position: relative;
3335
+ flex: 1 1 auto;
3336
+ min-width: 0;
3337
+ overflow: hidden;
3338
+ > .q-sidebar-panel {
3339
+ width: 100%;
3340
+ height: 100%;
3341
+ }
3342
+ }
3310
3343
  .q-sidebar-anchor {
3311
3344
  display: flex;
3312
3345
  flex-direction: column;
@@ -3319,7 +3352,7 @@ $sidebar-sizes: (
3319
3352
  flex-direction: column;
3320
3353
  position: relative;
3321
3354
  }
3322
- .q-sidebar__item {
3355
+ .q-sidebar__item.q-button {
3323
3356
  width: 100%;
3324
3357
  height: 100%;
3325
3358
  aspect-ratio: 1;
@@ -3356,7 +3389,13 @@ $sidebar-sizes: (
3356
3389
  display: flex;
3357
3390
  align-items: center;
3358
3391
  gap: 0.5rem;
3359
- padding: 1rem;
3392
+ margin: 1rem;
3393
+ }
3394
+ .q-sidebar-panel__header {
3395
+ margin-bottom: 0;
3396
+ }
3397
+ .q-sidebar-panel__footer {
3398
+ margin-top: 0;
3360
3399
  }
3361
3400
  .q-sidebar-panel__title {
3362
3401
  margin: 0;
@@ -3364,6 +3403,7 @@ $sidebar-sizes: (
3364
3403
  .q-sidebar-panel__content {
3365
3404
  flex: 1 1 0%;
3366
3405
  overflow: auto;
3406
+ margin: 1rem;
3367
3407
  }
3368
3408
  .q-sidebar-panel__handle {
3369
3409
  position: absolute;
@@ -3680,6 +3720,238 @@ $spinner-color: var(--q-theme-primary);
3680
3720
  transition: none;
3681
3721
  }
3682
3722
  }
3723
+ .q-tabs {
3724
+ display: flex;
3725
+ gap: 0;
3726
+ &--horizontal {
3727
+ flex-direction: column;
3728
+ .q-tabs__list {
3729
+ width: 100%;
3730
+ border-bottom: 1px solid $border;
3731
+ }
3732
+ .q-tabs__tablist {
3733
+ flex-direction: row;
3734
+ width: 100%;
3735
+ }
3736
+ .q-tab {
3737
+ margin-bottom: -1px;
3738
+ }
3739
+ .q-tabs__panels {
3740
+ border: 1px solid $border;
3741
+ border-top: 0;
3742
+ border-start-start-radius: 0;
3743
+ border-start-end-radius: 0;
3744
+ border-end-start-radius: $border-radius;
3745
+ border-end-end-radius: $border-radius;
3746
+ padding-inline: calc($space-base * 2);
3747
+ }
3748
+ }
3749
+ &--vertical {
3750
+ flex-direction: row;
3751
+ align-items: stretch;
3752
+ .q-tabs__list {
3753
+ flex: 0 0 auto;
3754
+ width: max-content;
3755
+ max-width: 100%;
3756
+ border-inline-end: 1px solid $border;
3757
+ }
3758
+ .q-tabs__tablist {
3759
+ flex-direction: column;
3760
+ }
3761
+ .q-tab {
3762
+ justify-content: flex-start;
3763
+ margin-inline-end: -1px;
3764
+ }
3765
+ .q-tabs__panels {
3766
+ flex: 1;
3767
+ min-width: 0;
3768
+ border: 1px solid $border;
3769
+ border-inline-start: 0;
3770
+ border-start-start-radius: 0;
3771
+ border-end-start-radius: 0;
3772
+ border-start-end-radius: $border-radius;
3773
+ border-end-end-radius: $border-radius;
3774
+ padding-inline: calc($space-base * 2);
3775
+ }
3776
+ }
3777
+
3778
+
3779
+ &--line {
3780
+ .q-tabs__indicator {
3781
+ position: absolute;
3782
+ background-color: $primary;
3783
+ opacity: 0;
3784
+ pointer-events: none;
3785
+ z-index: 1;
3786
+ }
3787
+ &.q-tabs--indicator-ready .q-tabs__indicator {
3788
+ transition:
3789
+ transform 0.3s ease-in-out,
3790
+ width 0.3s ease-in-out,
3791
+ height 0.3s ease-in-out,
3792
+ opacity 0.2s ease-in-out;
3793
+ }
3794
+ &.q-tabs--horizontal .q-tabs__indicator {
3795
+
3796
+
3797
+ bottom: -1px;
3798
+ left: 0;
3799
+ }
3800
+ &.q-tabs--horizontal .q-tab {
3801
+ border-bottom: 4px solid transparent;
3802
+ border-end-start-radius: 0;
3803
+ border-end-end-radius: 0;
3804
+ &--active {
3805
+ border-bottom-color: $primary;
3806
+ }
3807
+ @media (hover: hover) {
3808
+ &:hover:not(:disabled, .q-tab--active) {
3809
+ border-bottom-color: currentcolor;
3810
+ }
3811
+ }
3812
+ }
3813
+ &.q-tabs--indicator-ready.q-tabs--horizontal .q-tab--active {
3814
+ border-bottom-color: transparent;
3815
+ }
3816
+ &.q-tabs--vertical .q-tabs__indicator {
3817
+
3818
+ top: 0;
3819
+ inset-inline-end: -1px;
3820
+ }
3821
+ &.q-tabs--vertical .q-tab {
3822
+ border-inline-end: 4px solid transparent;
3823
+ border-start-end-radius: 0;
3824
+ border-end-end-radius: 0;
3825
+ &--active {
3826
+ border-inline-end-color: $primary;
3827
+ }
3828
+ @media (hover: hover) {
3829
+ &:hover:not(:disabled, .q-tab--active) {
3830
+ border-inline-end-color: currentcolor;
3831
+ }
3832
+ }
3833
+ }
3834
+ &.q-tabs--indicator-ready.q-tabs--vertical .q-tab--active {
3835
+ border-inline-end-color: transparent;
3836
+ }
3837
+ }
3838
+
3839
+ &--card {
3840
+ .q-tabs__tablist {
3841
+ gap: 0;
3842
+ }
3843
+ .q-tab {
3844
+ border: 1px solid $border;
3845
+ background-color: rgb(var(--q-theme-neutral-light-rgb) / 25%);
3846
+ &--active {
3847
+ background-color: $container;
3848
+ z-index: 1;
3849
+ }
3850
+ @media (hover: hover) {
3851
+ &:hover:not(:disabled) {
3852
+ border-color: $border;
3853
+ }
3854
+ }
3855
+ }
3856
+ &.q-tabs--horizontal .q-tab {
3857
+ border-start-start-radius: $border-radius;
3858
+ border-start-end-radius: $border-radius;
3859
+ border-end-start-radius: 0;
3860
+ border-end-end-radius: 0;
3861
+ &--active {
3862
+ border-bottom-color: $container;
3863
+ color: $primary;
3864
+ }
3865
+ }
3866
+ &.q-tabs--horizontal .q-tab--active:hover:not(:disabled) {
3867
+ @media (hover: hover) {
3868
+ border-bottom-color: $container;
3869
+ }
3870
+ }
3871
+ &.q-tabs--vertical .q-tab {
3872
+ border-start-start-radius: $border-radius;
3873
+ border-end-start-radius: $border-radius;
3874
+ border-start-end-radius: 0;
3875
+ border-end-end-radius: 0;
3876
+ &--active {
3877
+ border-inline-end-color: $container;
3878
+ }
3879
+ }
3880
+ &.q-tabs--vertical .q-tab--active:hover:not(:disabled) {
3881
+ @media (hover: hover) {
3882
+ border-inline-end-color: $container;
3883
+ }
3884
+ }
3885
+ }
3886
+ &--align-start .q-tabs__tablist {
3887
+ justify-content: flex-start;
3888
+ }
3889
+ &--align-end .q-tabs__tablist {
3890
+ justify-content: flex-end;
3891
+ }
3892
+ &--align-center .q-tabs__tablist {
3893
+ justify-content: center;
3894
+ }
3895
+ &--align-justify .q-tabs__tablist {
3896
+ justify-content: space-between;
3897
+ .q-tab {
3898
+ flex: 1;
3899
+ }
3900
+ }
3901
+ &__list {
3902
+ position: relative;
3903
+ }
3904
+ &__tablist {
3905
+ display: flex;
3906
+ gap: $space-base;
3907
+ }
3908
+ &__panels {
3909
+ padding-block: calc($space-base * 2);
3910
+ }
3911
+ &__panel {
3912
+ &:focus {
3913
+ outline: $outline;
3914
+ &:not(:focus-visible) {
3915
+ outline: 0;
3916
+ }
3917
+ }
3918
+ }
3919
+ }
3920
+ .q-tab {
3921
+ background: transparent;
3922
+ border: 0;
3923
+ padding: 0.5rem 0.75rem;
3924
+ &.q-button.q-button--text {
3925
+ color: $on-background;
3926
+ }
3927
+ &--active.q-button.q-button--text {
3928
+ color: $primary;
3929
+ cursor: default;
3930
+ &:hover:not(:disabled) {
3931
+ color: $primary;
3932
+ cursor: default;
3933
+ }
3934
+ }
3935
+ &__title {
3936
+ display: inline-flex;
3937
+ align-items: center;
3938
+ gap: calc($space-base * 0.5);
3939
+ }
3940
+ &__title-text {
3941
+ font-weight: 600;
3942
+ }
3943
+ &--disabled {
3944
+ cursor: not-allowed;
3945
+ &:hover {
3946
+ cursor: not-allowed;
3947
+ }
3948
+ }
3949
+ }
3950
+ @media (prefers-reduced-motion: reduce) {
3951
+ .q-tabs--line.q-tabs--indicator-ready .q-tabs__indicator {
3952
+ transition: opacity 0.2s ease-in-out;
3953
+ }
3954
+ }
3683
3955
  .q-text-area {
3684
3956
 
3685
3957
  display: flex;
@@ -3912,7 +4184,7 @@ $q-toast-slide-distance: clamp(1rem, 3vw, 1.5rem) !default;
3912
4184
  will-change: auto;
3913
4185
  }
3914
4186
  .q-toggle {
3915
- &--active {
4187
+ &.q-button.q-toggle--active {
3916
4188
  z-index: 2;
3917
4189
  color: var(--q-theme-primary-dark);
3918
4190
  background-color: rgb(var(--q-theme-primary-light-rgb) / 50%);