@quidgest/ui 0.18.0 → 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 (63) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/dist/json/api.json +136 -129
  3. package/dist/manifest/components.json +2 -1
  4. package/dist/ui.css +242 -155
  5. package/dist/ui.esm.js +365 -343
  6. package/dist/ui.js +121 -99
  7. package/dist/ui.min.css +1 -1
  8. package/dist/ui.min.js +121 -99
  9. package/dist/ui.scss +225 -151
  10. package/esm/components/QGrid/QCol.vue.js +1 -1
  11. package/esm/components/{QGroupBox/QGroupBox.d.ts → QSection/QSection.d.ts} +4 -4
  12. package/esm/components/QSection/QSection.d.ts.map +1 -0
  13. package/esm/components/{QGroupBox/QGroupBox.vue.js → QSection/QSection.vue.js} +8 -8
  14. package/esm/components/QSection/QSection2.vue.js +5 -0
  15. package/esm/components/{QGroupBox → QSection}/index.d.ts +8 -8
  16. package/esm/components/QSection/index.d.ts.map +1 -0
  17. package/esm/components/QSection/index.js +6 -0
  18. package/esm/components/QSection/types.d.ts +32 -0
  19. package/esm/components/QSection/types.d.ts.map +1 -0
  20. package/esm/components/QSidebar/QSidebar.d.ts +53 -6
  21. package/esm/components/QSidebar/QSidebar.d.ts.map +1 -1
  22. package/esm/components/QSidebar/QSidebar.vue.js +76 -106
  23. package/esm/components/QSidebar/QSidebarAnchor.d.ts +24 -210
  24. package/esm/components/QSidebar/QSidebarAnchor.d.ts.map +1 -1
  25. package/esm/components/QSidebar/QSidebarAnchor.vue.js +47 -59
  26. package/esm/components/QSidebar/QSidebarItem.d.ts +213 -0
  27. package/esm/components/QSidebar/QSidebarItem.d.ts.map +1 -0
  28. package/esm/components/QSidebar/QSidebarItem.vue.js +130 -0
  29. package/esm/components/QSidebar/QSidebarItem2.vue.js +5 -0
  30. package/esm/components/QSidebar/QSidebarPanel.d.ts +1 -7
  31. package/esm/components/QSidebar/QSidebarPanel.d.ts.map +1 -1
  32. package/esm/components/QSidebar/QSidebarPanel.vue.js +4 -10
  33. package/esm/components/QSidebar/context.d.ts +108 -0
  34. package/esm/components/QSidebar/context.d.ts.map +1 -0
  35. package/esm/components/QSidebar/context.js +4 -0
  36. package/esm/components/QSidebar/index.d.ts +166 -8
  37. package/esm/components/QSidebar/index.d.ts.map +1 -1
  38. package/esm/components/QSidebar/index.js +3 -2
  39. package/esm/components/QSidebar/types.d.ts +77 -42
  40. package/esm/components/QSidebar/types.d.ts.map +1 -1
  41. package/esm/components/QTabs/QTab.d.ts +1 -0
  42. package/esm/components/QTabs/QTab.d.ts.map +1 -1
  43. package/esm/components/QTabs/QTab.vue.js +2 -1
  44. package/esm/components/QTabs/QTabs.d.ts +2 -0
  45. package/esm/components/QTabs/QTabs.d.ts.map +1 -1
  46. package/esm/components/QTabs/QTabs.vue.js +125 -46
  47. package/esm/components/QTabs/context.d.ts +10 -3
  48. package/esm/components/QTabs/context.d.ts.map +1 -1
  49. package/esm/components/QTabs/index.d.ts +2 -0
  50. package/esm/components/QTabs/index.d.ts.map +1 -1
  51. package/esm/components/QTabs/types.d.ts +3 -1
  52. package/esm/components/QTabs/types.d.ts.map +1 -1
  53. package/esm/components/index.d.ts +1 -1
  54. package/esm/components/index.d.ts.map +1 -1
  55. package/esm/components/index.js +41 -40
  56. package/esm/index.d.ts +2 -1
  57. package/package.json +7 -6
  58. package/esm/components/QGroupBox/QGroupBox.d.ts.map +0 -1
  59. package/esm/components/QGroupBox/QGroupBox2.vue.js +0 -5
  60. package/esm/components/QGroupBox/index.d.ts.map +0 -1
  61. package/esm/components/QGroupBox/index.js +0 -6
  62. package/esm/components/QGroupBox/types.d.ts +0 -32
  63. package/esm/components/QGroupBox/types.d.ts.map +0 -1
package/CHANGELOG.md ADDED
@@ -0,0 +1,79 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@quidgest/ui` are documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ On `0.x`, breaking changes typically ship as a **minor** bump. The `/release` workflow appends a section for each **major**/**minor** release (and for **patch** when there is something notable), including public API breaks with migration steps plus notable Added/Changed/Fixed entries. This file also ships in the npm package.
9
+
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
+
12
+ ## [0.19.0] - 2026-08-21
13
+
14
+ ### Changed
15
+
16
+ - **Breaking:** `QGroupBox` renamed to `QSection` — use `QSection` / `<q-section>`, CSS `q-section` / `q-section--*`, types `QSectionProps` / `QSectionVariant`, and `provideDefaults` key `QSection` instead of the `QGroupBox*` equivalents.
17
+ - **Breaking:** `QSidebar` composition API — remove the `panels` prop and per-id named slots (`content:${id}`, `header:${id}`, …); nest `QSidebarItem` children (import alongside `QSidebar`) with a `value` (was `id`), item-level slots (`header` / `footer` / `anchor` / default), and size/resize props on each item. Default `initialWidth` is `medium`; resizable panels default `maxWidth` to `block`. Panel content/header/footer now include built-in `1rem` margins — trim consumer padding to avoid double spacing. Fluid sizes `xlarge` (50%) and `block` (100%) expect a width-defined parent.
18
+
19
+ ### Added
20
+
21
+ - `QTabs` — sliding line-variant active indicator; `QTab` `#title` slot (with `#title.prepend` / `#title.append`) for custom labels
22
+
23
+ ### Fixed
24
+
25
+ - Nested component CSS specificity hardened so theme/default overrides apply more reliably
26
+
27
+ ## [0.18.0] - 2026-08-18
28
+
29
+ ### Added
30
+
31
+ - `QTabs` — accessible tabs component
32
+ - `QRequiredIndicator` — shared required-field mark
33
+ - `QDropdownMenu` — safe-triangle hover path for nested submenus
34
+
35
+ ### Changed
36
+
37
+ - `QDateTimePicker` — commit valid values on Enter/blur instead of masking while typing; tabbing / focus improvements
38
+ - `QCollapsible` — full header is clickable
39
+
40
+ ### Infrastructure
41
+
42
+ - Storybook 10.5 and pnpm 11.21 bumps
43
+
44
+ ## [0.17.0] - 2026-06-24
45
+
46
+ ### Changed
47
+
48
+ - **Breaking:** `QDateTimePicker` replaced with a custom zero-dependency implementation — drop the previous `@vuepic/vue-datepicker`-based usage; re-check props, events, slots, and styling against the new component (Storybook / types).
49
+
50
+ ### Added _(0.17.x)_
51
+
52
+ - `QObfuscation` — data obfuscation component
53
+ - `QDateTimePicker` — `open` / `close` events, further mask/range/focus fixes across 0.17.1–0.17.9
54
+
55
+ ### Infrastructure _(0.17.x)_
56
+
57
+ - UI package build migrated to Vite 8 (Rolldown)
58
+
59
+ ## [0.16.0] - 2025-05-06
60
+
61
+ ### Changed
62
+
63
+ - **Breaking:** Unified group / toggle APIs for consistency:
64
+ - Rename `QButtonToggle` → `QToggleButton`; pass items via the default slot (`options` prop removed)
65
+ - `QAccordion` now expects `QAccordionItem` children in the default slot
66
+ - Remove `active` from `QButton`; use `QToggle` for stateful toggle behaviour
67
+
68
+ ### Added _(0.16.x through 0.16.75)_
69
+
70
+ - Layout: `QSidebar`, grid primitives (`QContainer` / `QRow` / `QCol` / `QSpacer`), `QDivider`, `QSpacing` utilities
71
+ - Overlays / feedback: `QDialog` + `QDialogProvider` / `useDialog`, `QToast`, `QFocusWrap`, nested `QDropdownMenu`
72
+ - Inputs / display: `QSwitch`, `QAvatar`, `QCarousel`, `QGroupBox`, `QSelect` multi-select with badges, date-range on `QDateTimePicker`
73
+ - Theming / defaults: `QDefaultsProvider`, `QThemeProvider` accepts full `ThemeDefinition`, configurable `QField` / `QLabel` `labelPosition`
74
+ - Tooling: `@category` JSDoc on props (api-generator / Storybook)
75
+
76
+ ### Fixed _(highlights)_
77
+
78
+ - Broad accessibility and focus-trap work across `QOverlay`, `QSelect`, `QCheckbox`, `QRadioGroup`, and related controls
79
+ - Mobile overlay dismissal and button hover sticky-state fixes
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.18.0",
2
+ "version": "0.19.0",
3
3
  "components": [
4
4
  {
5
5
  "name": "QAccordion",
@@ -3857,110 +3857,6 @@
3857
3857
  }
3858
3858
  ]
3859
3859
  },
3860
- {
3861
- "name": "QGroupBox",
3862
- "description": "A container with a title that groups related content.",
3863
- "meta": {
3864
- "props": [
3865
- {
3866
- "name": "id",
3867
- "type": {
3868
- "kind": "primitive",
3869
- "name": "string"
3870
- },
3871
- "description": "The component unique identifier.",
3872
- "required": false,
3873
- "category": "Identification"
3874
- },
3875
- {
3876
- "name": "title",
3877
- "type": {
3878
- "kind": "primitive",
3879
- "name": "string"
3880
- },
3881
- "description": "The title of the group box.",
3882
- "required": false,
3883
- "category": "Content"
3884
- },
3885
- {
3886
- "name": "borderless",
3887
- "type": {
3888
- "kind": "primitive",
3889
- "name": "boolean"
3890
- },
3891
- "description": "If true, the group box has no borders.",
3892
- "required": false,
3893
- "category": "Presentation"
3894
- },
3895
- {
3896
- "name": "variant",
3897
- "type": {
3898
- "kind": "enum",
3899
- "values": [
3900
- "default",
3901
- "background",
3902
- "title-background",
3903
- "minor",
3904
- "minor-border-top"
3905
- ]
3906
- },
3907
- "description": "The styling variant of the group box.",
3908
- "default": "default",
3909
- "required": false,
3910
- "category": "Presentation"
3911
- },
3912
- {
3913
- "name": "block",
3914
- "type": {
3915
- "kind": "primitive",
3916
- "name": "boolean"
3917
- },
3918
- "description": "If true, the group box spans the full width of its container.",
3919
- "required": false,
3920
- "category": "Presentation"
3921
- }
3922
- ],
3923
- "events": [],
3924
- "slots": [
3925
- {
3926
- "name": "default",
3927
- "description": ""
3928
- }
3929
- ]
3930
- },
3931
- "examples": [
3932
- {
3933
- "title": "Default",
3934
- "description": "A basic group box with a title and example content.",
3935
- "code": "<q-group-box v-bind=\"args\">\n\t\t\t\t<span>Example of a group box</span>\n\t\t\t</q-group-box>"
3936
- },
3937
- {
3938
- "title": "No Title",
3939
- "description": "A group box without a title.",
3940
- "code": "<QGroupBox />"
3941
- },
3942
- {
3943
- "title": "Borderless",
3944
- "description": "A group box without borders.",
3945
- "code": "<QGroupBox :title=\"Borderless\" :borderless=\"true\" />"
3946
- },
3947
- {
3948
- "title": "Block",
3949
- "description": "A group box spanning full width of its container.",
3950
- "code": "<QGroupBox :title=\"Block Group Box\" :block=\"true\" />"
3951
- },
3952
- {
3953
- "title": "Variants",
3954
- "description": "Group box with different styling variants.",
3955
- "code": "<div style=\"display: flex; flex-direction: column; gap: 1rem;\">\n\t\t\t\t<q-group-box title=\"Default\" variant=\"default\">\n\t\t\t\t\t<p>Default variant content</p>\n\t\t\t\t</q-group-box>\n\t\t\t\t<q-group-box title=\"Background\" variant=\"background\">\n\t\t\t\t\t<p>Background variant content</p>\n\t\t\t\t</q-group-box>\n\t\t\t\t<q-group-box title=\"Minor\" variant=\"minor\">\n\t\t\t\t\t<p>Minor variant content</p>\n\t\t\t\t</q-group-box>\n\t\t\t\t<q-group-box title=\"Minor Border Top\" variant=\"minor-border-top\">\n\t\t\t\t\t<p>Minor with border top variant content</p>\n\t\t\t\t</q-group-box>\n\t\t\t\t<q-group-box title=\"Title Background\" variant=\"title-background\">\n\t\t\t\t\t<p>Title background variant content</p>\n\t\t\t\t</q-group-box>\n\t\t\t</div>"
3956
- },
3957
- {
3958
- "title": "Nested Groups",
3959
- "description": "Nested group boxes demonstrating hierarchy.",
3960
- "code": "<q-group-box v-bind=\"args\">\n\t\t\t\t<p>Top-level content</p>\n\t\t\t\t<q-group-box variant=\"minor\" title=\"Mid Level\">\n\t\t\t\t\t<p>Mid-level content</p>\n\t\t\t\t\t<q-group-box variant=\"minor-border-top\" title=\"Leaf\">\n\t\t\t\t\t\t<p>Leaf content</p>\n\t\t\t\t\t</q-group-box>\n\t\t\t\t</q-group-box>\n\t\t\t</q-group-box>"
3961
- }
3962
- ]
3963
- },
3964
3860
  {
3965
3861
  "name": "QIcon",
3966
3862
  "description": "Displays an icon. Note: This Storybook includes a Material Design Icons v7.3.67 SVG bundle for demonstration purposes. For the complete list of available icons, visit the official [Material Design Icons](https://pictogrammers.com/library/mdi/) page.",
@@ -6427,6 +6323,110 @@
6427
6323
  }
6428
6324
  ]
6429
6325
  },
6326
+ {
6327
+ "name": "QSection",
6328
+ "description": "A container with a title that groups related content.",
6329
+ "meta": {
6330
+ "props": [
6331
+ {
6332
+ "name": "id",
6333
+ "type": {
6334
+ "kind": "primitive",
6335
+ "name": "string"
6336
+ },
6337
+ "description": "The component unique identifier.",
6338
+ "required": false,
6339
+ "category": "Identification"
6340
+ },
6341
+ {
6342
+ "name": "title",
6343
+ "type": {
6344
+ "kind": "primitive",
6345
+ "name": "string"
6346
+ },
6347
+ "description": "The title of the section.",
6348
+ "required": false,
6349
+ "category": "Content"
6350
+ },
6351
+ {
6352
+ "name": "borderless",
6353
+ "type": {
6354
+ "kind": "primitive",
6355
+ "name": "boolean"
6356
+ },
6357
+ "description": "If true, the section has no borders.",
6358
+ "required": false,
6359
+ "category": "Presentation"
6360
+ },
6361
+ {
6362
+ "name": "variant",
6363
+ "type": {
6364
+ "kind": "enum",
6365
+ "values": [
6366
+ "default",
6367
+ "background",
6368
+ "title-background",
6369
+ "minor",
6370
+ "minor-border-top"
6371
+ ]
6372
+ },
6373
+ "description": "The styling variant of the section.",
6374
+ "default": "default",
6375
+ "required": false,
6376
+ "category": "Presentation"
6377
+ },
6378
+ {
6379
+ "name": "block",
6380
+ "type": {
6381
+ "kind": "primitive",
6382
+ "name": "boolean"
6383
+ },
6384
+ "description": "If true, the section spans the full width of its container.",
6385
+ "required": false,
6386
+ "category": "Presentation"
6387
+ }
6388
+ ],
6389
+ "events": [],
6390
+ "slots": [
6391
+ {
6392
+ "name": "default",
6393
+ "description": ""
6394
+ }
6395
+ ]
6396
+ },
6397
+ "examples": [
6398
+ {
6399
+ "title": "Default",
6400
+ "description": "A basic group box with a title and example content.",
6401
+ "code": "<q-section v-bind=\"args\">\n\t\t\t\t<span>Example of a group box</span>\n\t\t\t</q-section>"
6402
+ },
6403
+ {
6404
+ "title": "No Title",
6405
+ "description": "A group box without a title.",
6406
+ "code": "<QSection />"
6407
+ },
6408
+ {
6409
+ "title": "Borderless",
6410
+ "description": "A group box without borders.",
6411
+ "code": "<QSection :title=\"Borderless\" :borderless=\"true\" />"
6412
+ },
6413
+ {
6414
+ "title": "Block",
6415
+ "description": "A group box spanning full width of its container.",
6416
+ "code": "<QSection :title=\"Block Group Box\" :block=\"true\" />"
6417
+ },
6418
+ {
6419
+ "title": "Variants",
6420
+ "description": "Group box with different styling variants.",
6421
+ "code": "<div style=\"display: flex; flex-direction: column; gap: 1rem;\">\n\t\t\t\t<q-section title=\"Default\" variant=\"default\">\n\t\t\t\t\t<p>Default variant content</p>\n\t\t\t\t</q-section>\n\t\t\t\t<q-section title=\"Background\" variant=\"background\">\n\t\t\t\t\t<p>Background variant content</p>\n\t\t\t\t</q-section>\n\t\t\t\t<q-section title=\"Minor\" variant=\"minor\">\n\t\t\t\t\t<p>Minor variant content</p>\n\t\t\t\t</q-section>\n\t\t\t\t<q-section title=\"Minor Border Top\" variant=\"minor-border-top\">\n\t\t\t\t\t<p>Minor with border top variant content</p>\n\t\t\t\t</q-section>\n\t\t\t\t<q-section title=\"Title Background\" variant=\"title-background\">\n\t\t\t\t\t<p>Title background variant content</p>\n\t\t\t\t</q-section>\n\t\t\t</div>"
6422
+ },
6423
+ {
6424
+ "title": "Nested Groups",
6425
+ "description": "Nested group boxes demonstrating hierarchy.",
6426
+ "code": "<q-section v-bind=\"args\">\n\t\t\t\t<p>Top-level content</p>\n\t\t\t\t<q-section variant=\"minor\" title=\"Mid Level\">\n\t\t\t\t\t<p>Mid-level content</p>\n\t\t\t\t\t<q-section variant=\"minor-border-top\" title=\"Leaf\">\n\t\t\t\t\t\t<p>Leaf content</p>\n\t\t\t\t\t</q-section>\n\t\t\t\t</q-section>\n\t\t\t</q-section>"
6427
+ }
6428
+ ]
6429
+ },
6430
6430
  {
6431
6431
  "name": "QSelect",
6432
6432
  "description": "A list of selectable items, activated by clicking on the main field.",
@@ -6809,17 +6809,14 @@
6809
6809
  "required": false
6810
6810
  },
6811
6811
  {
6812
- "name": "panels",
6812
+ "name": "id",
6813
6813
  "type": {
6814
- "kind": "array",
6815
- "elementType": {
6816
- "name": "object",
6817
- "value": {}
6818
- }
6814
+ "kind": "primitive",
6815
+ "name": "string"
6819
6816
  },
6820
- "description": "List of panels that can be anchored in the sidebar.",
6817
+ "description": "The component unique identifier.",
6821
6818
  "required": false,
6822
- "category": "Content"
6819
+ "category": "Identification"
6823
6820
  },
6824
6821
  {
6825
6822
  "name": "anchorWidth",
@@ -6884,13 +6881,18 @@
6884
6881
  "type": "[finalWidth: number]"
6885
6882
  }
6886
6883
  ],
6887
- "slots": []
6884
+ "slots": [
6885
+ {
6886
+ "name": "default",
6887
+ "description": ""
6888
+ }
6889
+ ]
6888
6890
  },
6889
6891
  "examples": [
6890
6892
  {
6891
6893
  "title": "Default",
6892
6894
  "description": "Default sidebar with four panels and basic slot content.",
6893
- "code": "<QSidebar :panels=\"[\n\t\t\t{ id: 'activity', icon: { icon: 'bell' }, title: 'Activity' },\n\t\t\t{ id: 'chat', icon: { icon: 'chat' }, title: 'Chat' },\n\t\t\t{ id: 'calendar', icon: { icon: 'calendar' }, title: 'Calendar' },\n\t\t\t{ id: 'calls', icon: { icon: 'phone' }, title: 'Calls' }\n\t\t]\" />"
6895
+ "code": "<QSidebar v-bind=\"args\">\n\t\t\t\t${defaultItems}\n\t\t\t</QSidebar>"
6894
6896
  },
6895
6897
  {
6896
6898
  "title": "With Labels",
@@ -6900,42 +6902,47 @@
6900
6902
  {
6901
6903
  "title": "Right",
6902
6904
  "description": "Sidebar positioned on the right side of the screen.",
6903
- "code": "<QSidebar :position=\"right\" />"
6905
+ "code": "<QSidebar :show-labels=\"true\" :position=\"right\" />"
6904
6906
  },
6905
6907
  {
6906
6908
  "title": "Starts Expanded",
6907
6909
  "description": "Sidebar with a panel expanded by default.",
6908
- "code": "<QSidebar :model-value=\"activity\" />"
6910
+ "code": "<QSidebar :show-labels=\"true\" :model-value=\"activity\" />"
6909
6911
  },
6910
6912
  {
6911
6913
  "title": "Panel Size",
6912
6914
  "description": "Sidebar panels with different predefined initial widths.",
6913
- "code": "<QSidebar v-bind=\"args\">\n <template #content:activity>\n\t\t\t\t\t<div style=\"padding: 0 1rem;\">\n\t\t\t\t\t\t<p>Resize this panel to see how it behaves. Use the toggle group below to set the width of this panel.</p>\n\t\t\t\t\t\t<QToggleGroup v-model=\"args.panels[0].initialWidth\">\n\t\t\t\t\t\t\t<QToggleGroupItem value=\"small\" label=\"Small\" />\n\t\t\t\t\t\t\t<QToggleGroupItem value=\"medium\" label=\"Medium\" />\n\t\t\t\t\t\t\t<QToggleGroupItem value=\"large\" label=\"Large\" />\n\t\t\t\t\t\t</QToggleGroup>\n\t\t\t\t\t</div>\n </template>\n </QSidebar>"
6915
+ "code": "<QSidebar v-bind=\"args\">\n\t\t\t\t<q-sidebar-item\n\t\t\t\t\tvalue=\"activity\"\n\t\t\t\t\ttitle=\"Activity\"\n\t\t\t\t\t:icon=\"{ icon: 'bell' }\"\n\t\t\t\t\t:initial-width=\"activityWidth\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<p>Resize this panel to see how it behaves. Use the toggle group below to set the width of this panel.</p>\n\t\t\t\t\t\t<QToggleGroup v-model=\"activityWidth\">\n\t\t\t\t\t\t\t<QToggleGroupItem value=\"small\" label=\"Small\" />\n\t\t\t\t\t\t\t<QToggleGroupItem value=\"medium\" label=\"Medium\" />\n\t\t\t\t\t\t\t<QToggleGroupItem value=\"large\" label=\"Large\" />\n\t\t\t\t\t\t\t<QToggleGroupItem value=\"xlarge\" label=\"XLarge\" />\n\t\t\t\t\t\t\t<QToggleGroupItem value=\"block\" label=\"Block\" />\n\t\t\t\t\t\t</QToggleGroup>\n\t\t\t\t\t</div>\n\t\t\t\t</q-sidebar-item>\n\t\t\t\t<q-sidebar-item value=\"chat\" title=\"Chat\" :icon=\"{ icon: 'chat' }\" initial-width=\"large\" />\n\t\t\t\t<q-sidebar-item value=\"calendar\" title=\"Calendar\" :icon=\"{ icon: 'calendar' }\" initial-width=\"medium\" />\n\t\t\t\t<q-sidebar-item value=\"calls\" title=\"Calls\" :icon=\"{ icon: 'phone' }\" initial-width=\"small\" />\n\t\t\t</QSidebar>"
6916
+ },
6917
+ {
6918
+ "title": "Fluid Sizes",
6919
+ "description": "Sidebar with fluid panel sizes that fill half or all of the container.",
6920
+ "code": "<QSidebar v-bind=\"args\" show-labels>\n\t\t\t\t<q-sidebar-item value=\"half\" title=\"Half\" :icon=\"{ icon: 'resize' }\" initial-width=\"xlarge\">\n\t\t\t\t\tThis panel occupies half of the container width.\n\t\t\t\t</q-sidebar-item>\n\t\t\t\t<q-sidebar-item value=\"full\" title=\"Full\" :icon=\"{ icon: 'arrow-expand' }\" initial-width=\"block\">\n\t\t\t\t\tThis panel occupies the full container width.\n\t\t\t\t</q-sidebar-item>\n\t\t\t</QSidebar>"
6914
6921
  },
6915
6922
  {
6916
6923
  "title": "Resizable",
6917
6924
  "description": "Sidebar with resizable panels enabled.",
6918
- "code": "<QSidebar :panels=\"[\n\t\t\t{ id: 'activity', icon: { icon: 'bell' }, title: 'Activity', resizable: true },\n\t\t\t{ id: 'chat', icon: { icon: 'chat' }, title: 'Chat', resizable: true },\n\t\t\t{ id: 'calendar', icon: { icon: 'calendar' }, title: 'Calendar', resizable: true },\n\t\t\t{ id: 'calls', icon: { icon: 'phone' }, title: 'Calls', resizable: true }\n\t\t]\" :model-value=\"activity\" />"
6925
+ "code": "<QSidebar v-bind=\"args\">\n\t\t\t\t<q-sidebar-item value=\"activity\" title=\"Activity\" :icon=\"{ icon: 'bell' }\" resizable />\n\t\t\t\t<q-sidebar-item value=\"chat\" title=\"Chat\" :icon=\"{ icon: 'chat' }\" resizable />\n\t\t\t\t<q-sidebar-item value=\"calendar\" title=\"Calendar\" :icon=\"{ icon: 'calendar' }\" resizable />\n\t\t\t\t<q-sidebar-item value=\"calls\" title=\"Calls\" :icon=\"{ icon: 'phone' }\" resizable />\n\t\t\t</QSidebar>"
6919
6926
  },
6920
6927
  {
6921
6928
  "title": "Header",
6922
- "description": "Use the `header:${id}` slot to add a sticky header to a sidebar panel.",
6923
- "code": "<QSidebar v-bind=\"args\">\n <template #header:activity>\n <img src=\"/logo.png\" style=\"max-height: 100px; max-width: 150px;\" />\n </template>\n </QSidebar>"
6929
+ "description": "Use the `header` slot to add a sticky header to a sidebar panel.",
6930
+ "code": "<QSidebar v-bind=\"args\">\n\t\t\t\t<q-sidebar-item value=\"activity\" title=\"Activity\" :icon=\"{ icon: 'bell' }\">\n\t\t\t\t\t<template #header>\n\t\t\t\t\t\t<img src=\"/logo.png\" style=\"max-height: 100px; max-width: 150px;\" />\n\t\t\t\t\t</template>\n\t\t\t\t</q-sidebar-item>\n\t\t\t\t<q-sidebar-item value=\"chat\" title=\"Chat\" :icon=\"{ icon: 'chat' }\" />\n\t\t\t\t<q-sidebar-item value=\"calendar\" title=\"Calendar\" :icon=\"{ icon: 'calendar' }\" />\n\t\t\t\t<q-sidebar-item value=\"calls\" title=\"Calls\" :icon=\"{ icon: 'phone' }\" />\n\t\t\t</QSidebar>"
6924
6931
  },
6925
6932
  {
6926
6933
  "title": "Content",
6927
- "description": "Use the `content:${id}` slot to add main content to a sidebar panel.",
6928
- "code": "<QSidebar v-bind=\"args\">\n <template #content:activity>\n\t\t\t\t\t<div style=\"padding: 0 1rem;\">\n \tActivity content goes here.\n\t\t\t\t\t</div>\n </template>\n </QSidebar>"
6934
+ "description": "Use the default slot to add main content to a sidebar panel.",
6935
+ "code": "<QSidebar :model-value=\"activity\" />"
6929
6936
  },
6930
6937
  {
6931
6938
  "title": "Footer",
6932
- "description": "Use the `footer:${id}` slot to add a sticky footer to a sidebar panel.",
6933
- "code": "<QSidebar v-bind=\"args\">\n <template #footer:chat>\n <QCard\n\t\t\t\t\tclass=\"prompt\"\n\t\t\t\t\twidth=\"block\"\n\t\t\t\t\televation=\"low\">\n <QTextArea\n v-model=\"prompt\"\n class=\"prompt__textarea\"\n placeholder=\"Ask anything\"\n size=\"block\"\n :rows=\"1\"\n resize=\"none\"\n autosize\n />\n\n <template #footer>\n <div class=\"prompt__actions\">\n <QButton ref=\"upload\" pill>\n <QIcon icon=\"plus\" />\n </QButton>\n <QDropdownMenu\n :activator=\"uploadRef?.$el\"\n :items=\"uploadItems\"\n :groups=\"uploadGroups\"\n />\n\n <QToggle ref=\"search\" pill>\n <QIcon icon=\"earth\" />\n Search\n </QToggle>\n\n <QToggle ref=\"reason\" pill>\n <QIcon icon=\"lightbulb-outline\" />\n Reason\n </QToggle>\n\n <QButton ref=\"more\" pill>\n <QIcon icon=\"dots-horizontal\" />\n </QButton>\n <QDropdownMenu :activator=\"moreRef?.$el\" :items=\"moreItems\" />\n\n <QButton\n ref=\"action\"\n class=\"prompt__voice-mode\"\n variant=\"bold\"\n pill\n >\n <QIcon :icon=\"isPromptEmpty ? 'waveform' : 'arrow-up'\" />\n </QButton>\n </div>\n </template>\n </QCard>\n </template>\n </QSidebar>"
6939
+ "description": "Use the `footer` slot to add a sticky footer to a sidebar panel.",
6940
+ "code": "<QSidebar v-bind=\"args\">\n\t\t\t\t<q-sidebar-item\n\t\t\t\t\tvalue=\"chat\"\n\t\t\t\t\ttitle=\"Chat\"\n\t\t\t\t\t:icon=\"{ icon: 'robot-happy' }\"\n\t\t\t\t\tinitial-width=\"large\"\n\t\t\t\t\tmin-width=\"medium\"\n\t\t\t\t\tresizable>\n\t\t\t\t\t<template #footer>\n\t\t\t\t\t\t<QCard class=\"prompt\" width=\"block\" elevation=\"low\">\n\t\t\t\t\t\t\t<QTextArea\n\t\t\t\t\t\t\t\tv-model=\"prompt\"\n\t\t\t\t\t\t\t\tclass=\"prompt__textarea\"\n\t\t\t\t\t\t\t\tplaceholder=\"Ask anything\"\n\t\t\t\t\t\t\t\tsize=\"block\"\n\t\t\t\t\t\t\t\t:rows=\"1\"\n\t\t\t\t\t\t\t\tresize=\"none\"\n\t\t\t\t\t\t\t\tautosize\n\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t<template #footer>\n\t\t\t\t\t\t\t\t<div class=\"prompt__actions\">\n\t\t\t\t\t\t\t\t\t<QButton ref=\"upload\" pill>\n\t\t\t\t\t\t\t\t\t\t<QIcon icon=\"plus\" />\n\t\t\t\t\t\t\t\t\t</QButton>\n\t\t\t\t\t\t\t\t\t<QDropdownMenu\n\t\t\t\t\t\t\t\t\t\t:activator=\"uploadRef?.$el\"\n\t\t\t\t\t\t\t\t\t\t:items=\"uploadItems\"\n\t\t\t\t\t\t\t\t\t\t:groups=\"uploadGroups\"\n\t\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t\t<QToggle ref=\"search\" pill>\n\t\t\t\t\t\t\t\t\t\t<QIcon icon=\"earth\" />\n\t\t\t\t\t\t\t\t\t\tSearch\n\t\t\t\t\t\t\t\t\t</QToggle>\n\n\t\t\t\t\t\t\t\t\t<QToggle ref=\"reason\" pill>\n\t\t\t\t\t\t\t\t\t\t<QIcon icon=\"lightbulb-outline\" />\n\t\t\t\t\t\t\t\t\t\tReason\n\t\t\t\t\t\t\t\t\t</QToggle>\n\n\t\t\t\t\t\t\t\t\t<QButton ref=\"more\" pill>\n\t\t\t\t\t\t\t\t\t\t<QIcon icon=\"dots-horizontal\" />\n\t\t\t\t\t\t\t\t\t</QButton>\n\t\t\t\t\t\t\t\t\t<QDropdownMenu :activator=\"moreRef?.$el\" :items=\"moreItems\" />\n\n\t\t\t\t\t\t\t\t\t<QButton ref=\"action\" class=\"prompt__voice-mode\" variant=\"bold\" pill>\n\t\t\t\t\t\t\t\t\t\t<QIcon :icon=\"isPromptEmpty ? 'waveform' : 'arrow-up'\" />\n\t\t\t\t\t\t\t\t\t</QButton>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</QCard>\n\t\t\t\t\t</template>\n\t\t\t\t</q-sidebar-item>\n\t\t\t</QSidebar>"
6934
6941
  },
6935
6942
  {
6936
6943
  "title": "Custom Anchor Items",
6937
- "description": "Use the `anchor:${id}` slot to customize items of the sidebar anchor.",
6938
- "code": "<QSidebar v-bind=\"args\">\n <template #anchor:activity=\"{ item }\">\n\t\t\t\t\t<QBadgeIndicator color=\"highlight\">\n\t\t\t\t\t\t<QIcon v-bind=\"item.icon\" />\n\t\t\t\t\t</QBadgeIndicator>\n </template>\n\t\t\t\t<template #content:activity>\n\t\t\t\t\t<div style=\"padding: 0 1rem;\">\n\t\t\t\t\t\t<div class=\"alert\">\n\t\t\t\t\t\t\t<QIcon icon=\"alert\" />\n\t\t\t\t\t\t\tHeads up!\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n </template>\n </QSidebar>"
6944
+ "description": "Use the `anchor` slot to customize items of the sidebar anchor.",
6945
+ "code": "<QSidebar v-bind=\"args\">\n\t\t\t\t<q-sidebar-item value=\"activity\" title=\"Activity\" :icon=\"{ icon: 'bell' }\">\n\t\t\t\t\t<template #anchor>\n\t\t\t\t\t\t<QBadgeIndicator color=\"highlight\">\n\t\t\t\t\t\t\t<QIcon icon=\"bell\" />\n\t\t\t\t\t\t</QBadgeIndicator>\n\t\t\t\t\t</template>\n\t\t\t\t\t<div class=\"alert\">\n\t\t\t\t\t\t<QIcon icon=\"alert\" />\n\t\t\t\t\t\tHeads up!\n\t\t\t\t\t</div>\n\t\t\t\t</q-sidebar-item>\n\t\t\t\t<q-sidebar-item value=\"chat\" title=\"Chat\" :icon=\"{ icon: 'chat' }\" />\n\t\t\t\t<q-sidebar-item value=\"calendar\" title=\"Calendar\" :icon=\"{ icon: 'calendar' }\" />\n\t\t\t\t<q-sidebar-item value=\"calls\" title=\"Calls\" :icon=\"{ icon: 'phone' }\" />\n\t\t\t</QSidebar>"
6939
6946
  }
6940
6947
  ]
6941
6948
  },
@@ -7386,8 +7393,8 @@
7386
7393
  },
7387
7394
  {
7388
7395
  "title": "With Title Slots",
7389
- "description": "Tabs with prepend and append title slots.",
7390
- "code": "<q-tabs v-bind=\"args\">\n\t\t\t\t<q-tab title=\"Inbox\" value=\"inbox\">\n\t\t\t\t\t<template #title.prepend>📥</template>\n\t\t\t\t\t<template #title.append>(3)</template>\n\t\t\t\t\tInbox messages.\n\t\t\t\t</q-tab>\n\t\t\t\t<q-tab title=\"Sent\" value=\"sent\">\n\t\t\t\t\t<template #title.prepend>📤</template>\n\t\t\t\t\tSent messages.\n\t\t\t\t</q-tab>\n\t\t\t</q-tabs>"
7396
+ "description": "Tabs with title, prepend, and append slots.",
7397
+ "code": "<q-tabs v-bind=\"args\">\n\t\t\t\t<q-tab title=\"Inbox\" value=\"inbox\">\n\t\t\t\t\t<template #title.prepend>📥</template>\n\t\t\t\t\t<template #title.append>(3)</template>\n\t\t\t\t\tInbox messages.\n\t\t\t\t</q-tab>\n\t\t\t\t<q-tab title=\"Sent\" value=\"sent\">\n\t\t\t\t\t<template #title.prepend>📤</template>\n\t\t\t\t\tSent messages.\n\t\t\t\t</q-tab>\n\t\t\t\t<q-tab value=\"alerts\">\n\t\t\t\t\t<template #title>\n\t\t\t\t\t\t<q-badge\n\t\t\t\t\t\t\tvariant=\"bold\"\n\t\t\t\t\t\t\tpill\n\t\t\t\t\t\t\tstyle=\"height: 1.25rem; margin-block: -0.25rem\">\n\t\t\t\t\t\t\tAlerts\n\t\t\t\t\t\t</q-badge>\n\t\t\t\t\t</template>\n\t\t\t\t\tAlert notifications.\n\t\t\t\t</q-tab>\n\t\t\t</q-tabs>"
7391
7398
  },
7392
7399
  {
7393
7400
  "title": "Disabled",
@@ -27,7 +27,6 @@
27
27
  "QContainer",
28
28
  "QRow",
29
29
  "QSpacer",
30
- "QGroupBox",
31
30
  "QIcon",
32
31
  "QIconFont",
33
32
  "QIconImg",
@@ -49,8 +48,10 @@
49
48
  "QPropertyListPanel",
50
49
  "QRadioButton",
51
50
  "QRadioGroup",
51
+ "QSection",
52
52
  "QSelect",
53
53
  "QSidebar",
54
+ "QSidebarItem",
54
55
  "QSkeletonLoader",
55
56
  "QSpinnerLoader",
56
57
  "QSwitch",