@quidgest/ui 0.21.0 → 0.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/json/api.json +184 -3
  3. package/dist/manifest/components.json +1 -0
  4. package/dist/ui.css +194 -7
  5. package/dist/ui.esm.js +1242 -1180
  6. package/dist/ui.js +505 -443
  7. package/dist/ui.min.css +1 -1
  8. package/dist/ui.min.js +505 -443
  9. package/dist/ui.scss +226 -9
  10. package/esm/components/QObfuscation/QObfuscation.d.ts +1 -1
  11. package/esm/components/QObfuscation/QObfuscation.d.ts.map +1 -1
  12. package/esm/components/QObfuscation/QObfuscation.vue.js +52 -55
  13. package/esm/components/QObfuscation/index.d.ts +6 -6
  14. package/esm/components/QObfuscation/types.d.ts +1 -1
  15. package/esm/components/QObfuscation/types.d.ts.map +1 -1
  16. package/esm/components/QOverflow/QOverflow.d.ts +43 -0
  17. package/esm/components/QOverflow/QOverflow.d.ts.map +1 -0
  18. package/esm/components/QOverflow/QOverflow.vue.js +281 -0
  19. package/esm/components/QOverflow/QOverflow2.vue.js +5 -0
  20. package/esm/components/QOverflow/constants.d.ts +30 -0
  21. package/esm/components/QOverflow/constants.d.ts.map +1 -0
  22. package/esm/components/QOverflow/constants.js +12 -0
  23. package/esm/components/QOverflow/index.d.ts +58 -0
  24. package/esm/components/QOverflow/index.d.ts.map +1 -0
  25. package/esm/components/QOverflow/index.js +6 -0
  26. package/esm/components/QOverflow/types.d.ts +119 -0
  27. package/esm/components/QOverflow/types.d.ts.map +1 -0
  28. package/esm/components/index.d.ts +1 -0
  29. package/esm/components/index.d.ts.map +1 -1
  30. package/esm/components/index.js +58 -56
  31. package/esm/index.d.ts +1 -0
  32. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -9,6 +9,17 @@ On `0.x`, breaking changes typically ship as a **minor** bump. The `/release` wo
9
9
 
10
10
  Entries below start at **0.16.0**. Earlier history is in git / GitLab MRs. Patch releases within a minor line may be summarized under that minor unless a break shipped in between.
11
11
 
12
+ ## [0.21.1] - 2026-09-11
13
+
14
+ ### Added
15
+
16
+ - `QOverflow` — overflow scroll container
17
+
18
+ ### Fixed
19
+
20
+ - `QObfuscation` — drop partial texts merge
21
+ - `QButton` — tighten padding for append icons
22
+
12
23
  ## [0.21.0] - 2026-09-10
13
24
 
14
25
  ### Changed
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.21.0",
2
+ "version": "0.21.1",
3
3
  "components": [
4
4
  {
5
5
  "name": "QAccordion",
@@ -712,6 +712,11 @@
712
712
  "description": "Displays an icon alongside the button label.",
713
713
  "code": "<div style=\"display: flex; align-items: center; gap: 0.25rem; flex-direction: column; width: fit-content\">\n\t\t\t <div style=\"display: flex; gap: 0.25rem\">\n\t\t\t \t<q-button icon-pos=\"start\">\n\t\t\t <q-icon icon=\"check-circle\" />\n\t\t\t </q-button>\n\t\t\t <q-button v-bind=\"args\" icon-pos=\"start\">\n\t\t\t <q-icon icon=\"check-circle\" />\n\t\t\t </q-button>\n\t\t\t <q-button v-bind=\"args\" icon-pos=\"end\">\n\t\t\t <q-icon icon=\"check-circle\" />\n\t\t\t </q-button>\n\t\t\t </div>\n\t\t\t <div style=\"display: flex; gap: 0.25rem\">\n\t\t\t <q-button v-bind=\"args\" icon-pos=\"top\">\n\t\t\t <q-icon icon=\"check-circle\" />\n\t\t\t </q-button>\n\t\t\t <q-button v-bind=\"args\" icon-pos=\"bottom\">\n\t\t\t <q-icon icon=\"check-circle\" />\n\t\t\t </q-button>\n\t\t\t </div>\n\t\t\t</div>"
714
714
  },
715
+ {
716
+ "title": "Append",
717
+ "description": "Trailing content via the `append` slot — for example a chevron beside a leading icon. Labeled buttons tighten end padding when `#append` contains a `.q-icon`.",
718
+ "code": "<div style=\"display: flex; align-items: center; gap: 0.25rem; flex-wrap: wrap\">\n\t\t\t\t<q-button v-bind=\"args\">\n\t\t\t\t\t<template #append>\n\t\t\t\t\t\t<q-icon icon=\"expand\" />\n\t\t\t\t\t</template>\n\t\t\t\t</q-button>\n\t\t\t\t<q-button v-bind=\"args\">\n\t\t\t\t\t<q-icon icon=\"more-items\" />\n\t\t\t\t\t<template #append>\n\t\t\t\t\t\t<q-icon icon=\"expand\" />\n\t\t\t\t\t</template>\n\t\t\t\t</q-button>\n\t\t\t\t<q-button>\n\t\t\t\t\t<q-icon icon=\"more-items\" />\n\t\t\t\t\t<template #append>\n\t\t\t\t\t\t<q-icon icon=\"expand\" />\n\t\t\t\t\t</template>\n\t\t\t\t</q-button>\n\t\t\t</div>"
719
+ },
715
720
  {
716
721
  "title": "Loading",
717
722
  "description": "Displays a loading animation and cannot be clicked.",
@@ -5116,8 +5121,8 @@
5116
5121
  {
5117
5122
  "name": "texts",
5118
5123
  "type": {
5119
- "kind": "unknown",
5120
- "raw": "Partial<{ restricted: string; showData: string; hideData: string; }> | undefined"
5124
+ "kind": "object",
5125
+ "fields": {}
5121
5126
  },
5122
5127
  "description": "Custom text configurations.",
5123
5128
  "default": "DEFAULT_TEXTS",
@@ -5252,6 +5257,182 @@
5252
5257
  }
5253
5258
  ]
5254
5259
  },
5260
+ {
5261
+ "name": "QOverflow",
5262
+ "description": "Layout container that shows navigation arrows when content overflows. The content track is a plain block — strip layouts are owned by slotted markup. `scrollMode=\"item\"` needs flat direct children (see Scroll Item); wrapped-strip stories disable the `scrollMode` control so Autodocs cannot switch them to `item`. `remapWheel` defaults to `false` (matches the component). Horizontal demos that benefit from trackpad UX set `remapWheel: true` on the story.",
5263
+ "meta": {
5264
+ "props": [
5265
+ {
5266
+ "name": "id",
5267
+ "type": {
5268
+ "kind": "primitive",
5269
+ "name": "string"
5270
+ },
5271
+ "description": "The component unique identifier.",
5272
+ "required": false,
5273
+ "category": "Identification"
5274
+ },
5275
+ {
5276
+ "name": "direction",
5277
+ "type": {
5278
+ "kind": "enum",
5279
+ "values": [
5280
+ "horizontal",
5281
+ "vertical"
5282
+ ]
5283
+ },
5284
+ "description": "Scroll axis of the overflow viewport.\n\nUses physical horizontal/vertical scrolling (`scrollLeft` / `scrollTop`). RTL and\nlogical start/end navigation are out of scope for v1.\n\n`vertical` sets `height: 100%` on the root — the host (or an ancestor) must have a\ndefinite height, or the track grows with content and overflow never appears.",
5285
+ "default": "horizontal",
5286
+ "required": false,
5287
+ "category": "Presentation"
5288
+ },
5289
+ {
5290
+ "name": "arrowPlacement",
5291
+ "type": {
5292
+ "kind": "enum",
5293
+ "values": [
5294
+ "outside",
5295
+ "inside"
5296
+ ]
5297
+ },
5298
+ "description": "Whether arrows sit beside the track (`outside`) or overlay its edges (`inside`).",
5299
+ "default": "outside",
5300
+ "required": false,
5301
+ "category": "Presentation"
5302
+ },
5303
+ {
5304
+ "name": "arrowVisibility",
5305
+ "type": {
5306
+ "kind": "enum",
5307
+ "values": [
5308
+ "hover",
5309
+ "always"
5310
+ ]
5311
+ },
5312
+ "description": "Whether arrows stay visible while overflowing, or only appear on hover / focus-within.\n\n`hover` is gated with `@media (hover: hover) and (pointer: fine)` so coarse-pointer\nand touch devices keep arrows visible (panning alone would otherwise leave them hidden).",
5313
+ "default": "always",
5314
+ "required": false,
5315
+ "category": "Presentation"
5316
+ },
5317
+ {
5318
+ "name": "scrollMode",
5319
+ "type": {
5320
+ "kind": "enum",
5321
+ "values": [
5322
+ "item",
5323
+ "page",
5324
+ "step"
5325
+ ]
5326
+ },
5327
+ "description": "How far each navigation action advances the scroll position.\n\nFor `item`, targets are direct `HTMLElement` children of the content track only\n(see {@link QOverflowScrollMode}).",
5328
+ "default": "page",
5329
+ "required": false,
5330
+ "category": "Behavior"
5331
+ },
5332
+ {
5333
+ "name": "scrollStep",
5334
+ "type": {
5335
+ "kind": "primitive",
5336
+ "name": "number"
5337
+ },
5338
+ "description": "Pixel distance used when `scrollMode` is `step`.",
5339
+ "default": "200",
5340
+ "required": false,
5341
+ "category": "Behavior"
5342
+ },
5343
+ {
5344
+ "name": "remapWheel",
5345
+ "type": {
5346
+ "kind": "primitive",
5347
+ "name": "boolean"
5348
+ },
5349
+ "description": "When `true` and `direction` is `horizontal`, dominant vertical wheel / trackpad\ndeltas are mapped onto `scrollLeft` (and may `preventDefault` page scroll while\nthe strip can still move). Default `false` so long-page hosts (e.g. future tabs)\nare not surprised; enable for standalone strips that want trackpad UX.",
5350
+ "default": "false",
5351
+ "required": false,
5352
+ "category": "Behavior"
5353
+ },
5354
+ {
5355
+ "name": "icons",
5356
+ "type": {
5357
+ "kind": "object",
5358
+ "fields": {}
5359
+ },
5360
+ "description": "Custom icon configurations for navigation controls.\n\nIcons are chosen from physical `direction` (left/right or up/down), not document\n`dir` / writing mode. Logical start/end and RTL-aware chevrons are a follow-up.",
5361
+ "default": "DEFAULT_ICONS",
5362
+ "required": false,
5363
+ "category": "Configuration"
5364
+ },
5365
+ {
5366
+ "name": "texts",
5367
+ "type": {
5368
+ "kind": "object",
5369
+ "fields": {}
5370
+ },
5371
+ "description": "Custom accessible strings for navigation controls.\n\nOptional `regionLabel` opts into a named landmark (`role=\"region\"` + `aria-label`).\nOmit it (the default) for a plain root — avoids N generic landmarks and an invalid\nunnamed `region`.",
5372
+ "default": "DEFAULT_TEXTS",
5373
+ "required": false,
5374
+ "category": "Configuration"
5375
+ }
5376
+ ],
5377
+ "events": [],
5378
+ "slots": [
5379
+ {
5380
+ "name": "prev",
5381
+ "description": ""
5382
+ },
5383
+ {
5384
+ "name": "default",
5385
+ "description": ""
5386
+ },
5387
+ {
5388
+ "name": "next",
5389
+ "description": ""
5390
+ }
5391
+ ]
5392
+ },
5393
+ "examples": [
5394
+ {
5395
+ "title": "Default",
5396
+ "description": "Horizontal overflow with arrows outside the content track.",
5397
+ "code": "<div :style=\"horizontalHostStyle\">\n\t\t\t\t<q-overflow v-bind=\"args\">\n\t\t\t\t\t<div :style=\"horizontalStripStyle\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-for=\"item in demoItems\"\n\t\t\t\t\t\t\t:key=\"item\"\n\t\t\t\t\t\t\t:style=\"horizontalItemStyle\">\n\t\t\t\t\t\t\t{{ item }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</q-overflow>\n\t\t\t</div>"
5398
+ },
5399
+ {
5400
+ "title": "Vertical",
5401
+ "description": "Vertical overflow with arrows beside the track. The host must be height-bounded — `direction=\"vertical\"` sets `height: 100%` on the root.",
5402
+ "code": "<div :style=\"verticalHostStyle\">\n\t\t\t\t<q-overflow v-bind=\"args\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-for=\"item in demoItems\"\n\t\t\t\t\t\t:key=\"item\"\n\t\t\t\t\t\t:style=\"verticalItemStyle\">\n\t\t\t\t\t\t{{ item }}\n\t\t\t\t\t</div>\n\t\t\t\t</q-overflow>\n\t\t\t</div>"
5403
+ },
5404
+ {
5405
+ "title": "Arrows Inside",
5406
+ "description": "Arrows overlay the content edges with an edge fade behind them.",
5407
+ "code": "<div :style=\"horizontalHostStyle\">\n\t\t\t\t<q-overflow v-bind=\"args\">\n\t\t\t\t\t<div :style=\"horizontalStripStyle\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-for=\"item in demoItems\"\n\t\t\t\t\t\t\t:key=\"item\"\n\t\t\t\t\t\t\t:style=\"horizontalItemStyle\">\n\t\t\t\t\t\t\t{{ item }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</q-overflow>\n\t\t\t</div>"
5408
+ },
5409
+ {
5410
+ "title": "Arrows On Hover",
5411
+ "description": "Navigation arrows appear only while the overflow is hovered or focused.",
5412
+ "code": "<div :style=\"horizontalHostStyle\">\n\t\t\t\t<q-overflow v-bind=\"args\">\n\t\t\t\t\t<div :style=\"horizontalStripStyle\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-for=\"item in demoItems\"\n\t\t\t\t\t\t\t:key=\"item\"\n\t\t\t\t\t\t\t:style=\"horizontalItemStyle\">\n\t\t\t\t\t\t\t{{ item }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</q-overflow>\n\t\t\t</div>"
5413
+ },
5414
+ {
5415
+ "title": "Scroll Step",
5416
+ "description": "Each navigation action advances by a fixed pixel step.",
5417
+ "code": "<div :style=\"horizontalHostStyle\">\n\t\t\t\t<q-overflow v-bind=\"args\">\n\t\t\t\t\t<div :style=\"horizontalStripStyle\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-for=\"item in demoItems\"\n\t\t\t\t\t\t\t:key=\"item\"\n\t\t\t\t\t\t\t:style=\"horizontalItemStyle\">\n\t\t\t\t\t\t\t{{ item }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</q-overflow>\n\t\t\t</div>"
5418
+ },
5419
+ {
5420
+ "title": "Scroll Item",
5421
+ "description": "Each navigation action centers the next or previous direct child in the viewport. Item mode expects flat `HTMLElement` children in the default slot (no nested wrappers). Horizontal strip layout uses inline-level items + nowrap on the host.",
5422
+ "code": "<div :style=\"horizontalStripHostStyle\">\n\t\t\t\t<q-overflow v-bind=\"args\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-for=\"item in demoItems\"\n\t\t\t\t\t\t:key=\"item\"\n\t\t\t\t\t\t:style=\"horizontalItemStyle\">\n\t\t\t\t\t\t{{ item }}\n\t\t\t\t\t</div>\n\t\t\t\t</q-overflow>\n\t\t\t</div>"
5423
+ },
5424
+ {
5425
+ "title": "Custom Arrows",
5426
+ "description": "Custom previous and next controls via slots.",
5427
+ "code": "<div :style=\"horizontalHostStyle\">\n\t\t\t\t<q-overflow v-bind=\"args\">\n\t\t\t\t\t<template #prev=\"{ disabled, onClick }\">\n\t\t\t\t\t\t<q-button\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tlabel=\"Back\"\n\t\t\t\t\t\t\t:disabled=\"disabled\"\n\t\t\t\t\t\t\t@click=\"onClick\" />\n\t\t\t\t\t</template>\n\n\t\t\t\t\t<div :style=\"horizontalStripStyle\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tv-for=\"item in demoItems\"\n\t\t\t\t\t\t\t:key=\"item\"\n\t\t\t\t\t\t\t:style=\"horizontalItemStyle\">\n\t\t\t\t\t\t\t{{ item }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<template #next=\"{ disabled, onClick }\">\n\t\t\t\t\t\t<q-button\n\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\tlabel=\"Next\"\n\t\t\t\t\t\t\t:disabled=\"disabled\"\n\t\t\t\t\t\t\t@click=\"onClick\" />\n\t\t\t\t\t</template>\n\t\t\t\t</q-overflow>\n\t\t\t</div>"
5428
+ },
5429
+ {
5430
+ "title": "Without Overflow",
5431
+ "description": "When content fits the viewport, navigation arrows are omitted.",
5432
+ "code": "<div :style=\"horizontalHostStyle\">\n\t\t\t\t<q-overflow v-bind=\"args\">\n\t\t\t\t\t<div :style=\"horizontalStripStyle\">\n\t\t\t\t\t\t<div :style=\"horizontalItemStyle\">Fits</div>\n\t\t\t\t\t\t<div :style=\"horizontalItemStyle\">Here</div>\n\t\t\t\t\t</div>\n\t\t\t\t</q-overflow>\n\t\t\t</div>"
5433
+ }
5434
+ ]
5435
+ },
5255
5436
  {
5256
5437
  "name": "QOverlay",
5257
5438
  "description": "A generic overlay for creating floating elements.",
@@ -40,6 +40,7 @@
40
40
  "QListItemGroup",
41
41
  "QMeter",
42
42
  "QObfuscation",
43
+ "QOverflow",
43
44
  "QOverlay",
44
45
  "QPasswordField",
45
46
  "QPhoneField",
package/dist/ui.css CHANGED
@@ -1769,7 +1769,10 @@ body *::-webkit-scrollbar-track {
1769
1769
  padding: 0.4rem 0.8rem;
1770
1770
  }
1771
1771
  .q-button.q-button--labeled:where(:has(.q-button__content > .q-icon)):where(:not(.q-button--icon-end)):where(:not(.q-button--icon-top)):where(:not(.q-button--icon-bottom)) {
1772
- padding: 0.4rem 0.8rem 0.4rem 0.6rem;
1772
+ padding-inline-start: 0.6rem;
1773
+ }
1774
+ .q-button.q-button--labeled:where(.q-button--icon-end):where(:has(.q-button__content > .q-icon)), .q-button.q-button--labeled:where(:has(.q-button__append .q-icon)) {
1775
+ padding-inline-end: 0.6rem;
1773
1776
  }
1774
1777
  .q-button__content {
1775
1778
  display: inline-flex;
@@ -1895,10 +1898,10 @@ body *::-webkit-scrollbar-track {
1895
1898
  padding: 0.25rem 0.5rem;
1896
1899
  }
1897
1900
  .q-button--small.q-button--labeled:where(:has(.q-button__content > .q-icon)):where(:not(.q-button--icon-end)):where(:not(.q-button--icon-top)):where(:not(.q-button--icon-bottom)) {
1898
- padding: 0.25rem 0.5rem 0.25rem 0.375rem;
1901
+ padding-inline-start: 0.375rem;
1899
1902
  }
1900
- .q-button--small.q-button--icon-end.q-button--labeled:where(:has(.q-button__content > .q-icon)) {
1901
- padding: 0.25rem 0.375rem 0.25rem 0.5rem;
1903
+ .q-button--small.q-button--labeled:where(.q-button--icon-end):where(:has(.q-button__content > .q-icon)), .q-button--small.q-button--labeled:where(:has(.q-button__append .q-icon)) {
1904
+ padding-inline-end: 0.375rem;
1902
1905
  }
1903
1906
  .q-button--borderless {
1904
1907
  border-color: transparent;
@@ -1909,9 +1912,6 @@ body *::-webkit-scrollbar-track {
1909
1912
  .q-button--icon-end .q-button__content {
1910
1913
  flex-direction: row-reverse;
1911
1914
  }
1912
- .q-button--icon-end.q-button--labeled:where(:has(.q-button__content > .q-icon)) {
1913
- padding: 0.4rem 0.6rem 0.4rem 0.8rem;
1914
- }
1915
1915
  .q-button--icon-top .q-button__content {
1916
1916
  flex-direction: column;
1917
1917
  }
@@ -5998,6 +5998,193 @@ body *::-webkit-scrollbar-track {
5998
5998
  flex-shrink: 0;
5999
5999
  }
6000
6000
 
6001
+ .q-overflow {
6002
+ --q-overflow-fade-size: 2.5rem;
6003
+ display: flex;
6004
+ align-items: stretch;
6005
+ min-width: 0;
6006
+ min-height: 0;
6007
+ width: 100%;
6008
+ outline: none;
6009
+ }
6010
+
6011
+ .q-overflow__viewport:focus-visible {
6012
+ outline: 2px solid rgb(var(--q-theme-info-rgb)/50%);
6013
+ }
6014
+
6015
+ .q-overflow__control .q-overflow__button:focus-visible {
6016
+ outline: 2px solid rgb(var(--q-theme-info-rgb)/50%);
6017
+ }
6018
+
6019
+ .q-overflow__viewport {
6020
+ position: relative;
6021
+ flex: 1 1 auto;
6022
+ min-width: 0;
6023
+ min-height: 0;
6024
+ outline: none;
6025
+ -webkit-overflow-scrolling: touch;
6026
+ scrollbar-width: none;
6027
+ }
6028
+ .q-overflow__viewport::-webkit-scrollbar {
6029
+ display: none;
6030
+ }
6031
+
6032
+ .q-overflow__content {
6033
+ position: relative;
6034
+ }
6035
+
6036
+ .q-overflow__control {
6037
+ display: flex;
6038
+ flex: 0 0 auto;
6039
+ align-items: center;
6040
+ justify-content: center;
6041
+ }
6042
+
6043
+ .q-overflow__button {
6044
+ min-width: 2.25rem;
6045
+ min-height: 2.25rem;
6046
+ }
6047
+
6048
+ .q-overflow--horizontal {
6049
+ flex-direction: row;
6050
+ }
6051
+ .q-overflow--horizontal .q-overflow__viewport {
6052
+ overflow: auto hidden;
6053
+ }
6054
+
6055
+ .q-overflow--vertical {
6056
+ flex-direction: column;
6057
+ height: 100%;
6058
+ }
6059
+ .q-overflow--vertical .q-overflow__viewport {
6060
+ overflow: hidden auto;
6061
+ }
6062
+
6063
+ .q-overflow--horizontal.q-overflow--can-scroll-start.q-overflow--can-scroll-end .q-overflow__viewport {
6064
+ -webkit-mask-image: linear-gradient(to right, transparent, #000 var(--q-overflow-fade-size), #000 calc(100% - var(--q-overflow-fade-size)), transparent);
6065
+ mask-image: linear-gradient(to right, transparent, #000 var(--q-overflow-fade-size), #000 calc(100% - var(--q-overflow-fade-size)), transparent);
6066
+ }
6067
+
6068
+ .q-overflow--horizontal.q-overflow--can-scroll-start:not(.q-overflow--can-scroll-end) .q-overflow__viewport {
6069
+ -webkit-mask-image: linear-gradient(to right, transparent, #000 var(--q-overflow-fade-size), #000);
6070
+ mask-image: linear-gradient(to right, transparent, #000 var(--q-overflow-fade-size), #000);
6071
+ }
6072
+
6073
+ .q-overflow--horizontal.q-overflow--can-scroll-end:not(.q-overflow--can-scroll-start) .q-overflow__viewport {
6074
+ -webkit-mask-image: linear-gradient(to right, #000, #000 calc(100% - var(--q-overflow-fade-size)), transparent);
6075
+ mask-image: linear-gradient(to right, #000, #000 calc(100% - var(--q-overflow-fade-size)), transparent);
6076
+ }
6077
+
6078
+ .q-overflow--vertical.q-overflow--can-scroll-start.q-overflow--can-scroll-end .q-overflow__viewport {
6079
+ -webkit-mask-image: linear-gradient(to bottom, transparent, #000 var(--q-overflow-fade-size), #000 calc(100% - var(--q-overflow-fade-size)), transparent);
6080
+ mask-image: linear-gradient(to bottom, transparent, #000 var(--q-overflow-fade-size), #000 calc(100% - var(--q-overflow-fade-size)), transparent);
6081
+ }
6082
+
6083
+ .q-overflow--vertical.q-overflow--can-scroll-start:not(.q-overflow--can-scroll-end) .q-overflow__viewport {
6084
+ -webkit-mask-image: linear-gradient(to bottom, transparent, #000 var(--q-overflow-fade-size), #000);
6085
+ mask-image: linear-gradient(to bottom, transparent, #000 var(--q-overflow-fade-size), #000);
6086
+ }
6087
+
6088
+ .q-overflow--vertical.q-overflow--can-scroll-end:not(.q-overflow--can-scroll-start) .q-overflow__viewport {
6089
+ -webkit-mask-image: linear-gradient(to bottom, #000, #000 calc(100% - var(--q-overflow-fade-size)), transparent);
6090
+ mask-image: linear-gradient(to bottom, #000, #000 calc(100% - var(--q-overflow-fade-size)), transparent);
6091
+ }
6092
+
6093
+ .q-overflow--arrows-outside .q-overflow__control {
6094
+ position: relative;
6095
+ z-index: 1;
6096
+ align-self: stretch;
6097
+ align-items: stretch;
6098
+ }
6099
+ .q-overflow--arrows-outside .q-overflow__control > *,
6100
+ .q-overflow--arrows-outside .q-overflow__button {
6101
+ align-self: stretch;
6102
+ }
6103
+
6104
+ .q-overflow--horizontal.q-overflow--arrows-outside .q-overflow__control > *,
6105
+ .q-overflow--horizontal.q-overflow--arrows-outside .q-overflow__button {
6106
+ height: 100%;
6107
+ }
6108
+
6109
+ .q-overflow--vertical.q-overflow--arrows-outside .q-overflow__control {
6110
+ width: 100%;
6111
+ }
6112
+ .q-overflow--vertical.q-overflow--arrows-outside .q-overflow__control > *,
6113
+ .q-overflow--vertical.q-overflow--arrows-outside .q-overflow__button {
6114
+ width: 100%;
6115
+ }
6116
+
6117
+ .q-overflow--arrows-inside {
6118
+ position: relative;
6119
+ }
6120
+ .q-overflow--arrows-inside .q-overflow__viewport {
6121
+ width: 100%;
6122
+ }
6123
+ .q-overflow--arrows-inside .q-overflow__control {
6124
+ position: absolute;
6125
+ z-index: 2;
6126
+ pointer-events: none;
6127
+ }
6128
+ .q-overflow--arrows-inside .q-overflow__control > * {
6129
+ pointer-events: auto;
6130
+ }
6131
+ .q-overflow--arrows-inside .q-overflow__control .q-overflow__button.q-button {
6132
+ background-color: rgb(var(--q-theme-background-rgb)/80%);
6133
+ }
6134
+ @media (hover: hover) {
6135
+ .q-overflow--arrows-inside .q-overflow__control .q-overflow__button.q-button:hover:not(:disabled) {
6136
+ background-color: rgb(var(--q-theme-background-rgb)/95%);
6137
+ }
6138
+ }
6139
+
6140
+ .q-overflow--horizontal.q-overflow--arrows-inside .q-overflow__control--prev {
6141
+ inset-block: 0;
6142
+ inset-inline-start: 0;
6143
+ }
6144
+ .q-overflow--horizontal.q-overflow--arrows-inside .q-overflow__control--next {
6145
+ inset-block: 0;
6146
+ inset-inline-end: 0;
6147
+ }
6148
+
6149
+ .q-overflow--vertical.q-overflow--arrows-inside .q-overflow__control--prev {
6150
+ inset-inline: 0;
6151
+ inset-block-start: 0;
6152
+ }
6153
+ .q-overflow--vertical.q-overflow--arrows-inside .q-overflow__control--next {
6154
+ inset-inline: 0;
6155
+ inset-block-end: 0;
6156
+ }
6157
+
6158
+ @media (hover: hover) and (pointer: fine) {
6159
+ .q-overflow--arrows-hover .q-overflow__control {
6160
+ opacity: 0;
6161
+ transition: opacity 0.15s ease;
6162
+ }
6163
+ .q-overflow--arrows-hover:hover .q-overflow__control, .q-overflow--arrows-hover:focus-within .q-overflow__control {
6164
+ opacity: 1;
6165
+ }
6166
+ }
6167
+ @media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: reduce) {
6168
+ .q-overflow--arrows-hover .q-overflow__control {
6169
+ transition: none;
6170
+ }
6171
+ }
6172
+
6173
+ @media (hover: hover) and (pointer: fine) {
6174
+ .q-overflow--arrows-hover.q-overflow--arrows-inside .q-overflow__control {
6175
+ pointer-events: none;
6176
+ }
6177
+ .q-overflow--arrows-hover.q-overflow--arrows-inside .q-overflow__control > * {
6178
+ pointer-events: none;
6179
+ }
6180
+ .q-overflow--arrows-hover.q-overflow--arrows-inside:hover .q-overflow__control, .q-overflow--arrows-hover.q-overflow--arrows-inside:focus-within .q-overflow__control {
6181
+ pointer-events: auto;
6182
+ }
6183
+ .q-overflow--arrows-hover.q-overflow--arrows-inside:hover .q-overflow__control > *, .q-overflow--arrows-hover.q-overflow--arrows-inside:focus-within .q-overflow__control > * {
6184
+ pointer-events: auto;
6185
+ }
6186
+ }
6187
+
6001
6188
  .q-overlay {
6002
6189
  --q-overlay-bg: var(--q-theme-container);
6003
6190
  --q-overlay-color: var(--q-theme-on-background);