@xleddyl/443-components-vue 0.2.3 → 0.4.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 (236) hide show
  1. package/README.md +106 -19
  2. package/dist/chart/BarChart.vue.d.ts +2 -2
  3. package/dist/chart/ChartLegend.vue.d.ts +4 -4
  4. package/dist/chart/ChartPanel.vue.d.ts +2 -2
  5. package/dist/chart/ChartSummary.vue.d.ts +2 -2
  6. package/dist/chart/DoughnutChart.vue.d.ts +2 -2
  7. package/dist/chart/LineChart.vue.d.ts +2 -2
  8. package/dist/components/core/Button.vue.d.ts +2 -2
  9. package/dist/components/core/FieldBoundary.vue +14 -0
  10. package/dist/components/core/FieldBoundary.vue.d.ts +15 -0
  11. package/dist/components/core/FieldMessage.vue +28 -0
  12. package/dist/components/core/FieldMessage.vue.d.ts +409 -0
  13. package/dist/components/core/Form.vue +109 -11
  14. package/dist/components/core/Form.vue.d.ts +45 -6
  15. package/dist/components/core/FormAlerts.vue +30 -0
  16. package/dist/components/core/FormAlerts.vue.d.ts +393 -0
  17. package/dist/components/core/FormField.vue +54 -17
  18. package/dist/components/core/FormField.vue.d.ts +5 -4
  19. package/dist/components/core/Icon.vue.d.ts +2 -2
  20. package/dist/components/core/Input.vue.d.ts +4 -4
  21. package/dist/components/core/Kbd.vue.d.ts +2 -2
  22. package/dist/components/core/Root.vue.d.ts +6 -6
  23. package/dist/components/core/Spinner.vue +13 -1
  24. package/dist/components/core/Spinner.vue.d.ts +4 -2
  25. package/dist/components/core/Textarea.vue.d.ts +4 -4
  26. package/dist/components/core/VisuallyHidden.vue.d.ts +6 -6
  27. package/dist/components/core/index.d.ts +3 -0
  28. package/dist/components/core/index.mjs +3 -0
  29. package/dist/components/data/Avatar.vue.d.ts +2 -2
  30. package/dist/components/data/AvatarGroup.vue.d.ts +2 -2
  31. package/dist/components/data/Badge.vue.d.ts +2 -2
  32. package/dist/components/data/DescriptionList.vue.d.ts +2 -2
  33. package/dist/components/data/FilterPill.vue +35 -0
  34. package/dist/components/data/FilterPill.vue.d.ts +445 -0
  35. package/dist/components/data/FilterPills.vue +100 -27
  36. package/dist/components/data/FilterPills.vue.d.ts +47 -411
  37. package/dist/components/data/Pagination.vue.d.ts +4 -4
  38. package/dist/components/data/SelectionBar.vue +81 -0
  39. package/dist/components/data/SelectionBar.vue.d.ts +427 -0
  40. package/dist/components/data/Stat.vue.d.ts +8 -8
  41. package/dist/components/data/Tag.vue.d.ts +4 -4
  42. package/dist/components/data/Timeline.vue.d.ts +2 -2
  43. package/dist/components/data/Tree.vue +245 -21
  44. package/dist/components/data/Tree.vue.d.ts +40 -10
  45. package/dist/components/data/index.d.ts +3 -0
  46. package/dist/components/data/index.mjs +3 -0
  47. package/dist/components/data/types.d.ts +26 -2
  48. package/dist/components/feedback/Alert.vue.d.ts +18 -18
  49. package/dist/components/feedback/EmptyState.vue.d.ts +2 -2
  50. package/dist/components/feedback/LoadingOverlay.vue.d.ts +2 -2
  51. package/dist/components/feedback/Meter.vue.d.ts +2 -2
  52. package/dist/components/feedback/Progress.vue.d.ts +2 -2
  53. package/dist/components/feedback/ProgressRing.vue.d.ts +2 -2
  54. package/dist/components/feedback/Skeleton.vue.d.ts +3 -3
  55. package/dist/components/forms/Calendar.vue.d.ts +4 -4
  56. package/dist/components/forms/CheckboxGroup.vue +2 -1
  57. package/dist/components/forms/ColorInput.vue.d.ts +6 -6
  58. package/dist/components/forms/DateInput.vue.d.ts +14 -14
  59. package/dist/components/forms/DatePicker.vue.d.ts +6 -6
  60. package/dist/components/forms/FileInput.vue +160 -34
  61. package/dist/components/forms/FileInput.vue.d.ts +43 -15
  62. package/dist/components/forms/InputAddon.vue.d.ts +2 -2
  63. package/dist/components/forms/InputGroup.vue.d.ts +2 -2
  64. package/dist/components/forms/NumberInput.vue.d.ts +6 -6
  65. package/dist/components/forms/PasswordInput.vue.d.ts +16 -16
  66. package/dist/components/forms/PinInput.vue.d.ts +6 -6
  67. package/dist/components/forms/Radio.vue.d.ts +2 -2
  68. package/dist/components/forms/RadioGroup.vue +2 -1
  69. package/dist/components/forms/SegmentedControl.vue +33 -8
  70. package/dist/components/forms/SegmentedControl.vue.d.ts +15 -7
  71. package/dist/components/forms/Slider.vue.d.ts +6 -6
  72. package/dist/components/forms/Switch.vue.d.ts +6 -6
  73. package/dist/components/forms/TimeInput.vue.d.ts +16 -16
  74. package/dist/components/forms/types.d.ts +17 -0
  75. package/dist/components/layout/Accordion.vue +25 -5
  76. package/dist/components/layout/Accordion.vue.d.ts +11 -8
  77. package/dist/components/layout/AppShell.vue +1 -1
  78. package/dist/components/layout/AppShell.vue.d.ts +7 -7
  79. package/dist/components/layout/Breadcrumbs.vue +28 -20
  80. package/dist/components/layout/Breadcrumbs.vue.d.ts +18 -3
  81. package/dist/components/layout/Card.vue +22 -3
  82. package/dist/components/layout/Card.vue.d.ts +10 -4
  83. package/dist/components/layout/CopyButton.vue.d.ts +4 -4
  84. package/dist/components/layout/Grid.vue.d.ts +2 -2
  85. package/dist/components/layout/NavLink.vue.d.ts +8 -8
  86. package/dist/components/layout/PageHeader.vue +10 -1
  87. package/dist/components/layout/PageHeader.vue.d.ts +17 -9
  88. package/dist/components/layout/Separator.vue.d.ts +2 -2
  89. package/dist/components/layout/Sidebar.vue.d.ts +2 -2
  90. package/dist/components/layout/SidebarSection.vue.d.ts +2 -2
  91. package/dist/components/layout/Stack.vue.d.ts +6 -6
  92. package/dist/components/layout/Tabs.vue +37 -7
  93. package/dist/components/layout/Tabs.vue.d.ts +11 -4
  94. package/dist/components/layout/ThemeSwitch.vue.d.ts +2 -2
  95. package/dist/components/layout/Toolbar.vue.d.ts +2 -2
  96. package/dist/components/layout/types.d.ts +8 -1
  97. package/dist/components/overlays/CommandPalette.vue +35 -8
  98. package/dist/components/overlays/CommandPalette.vue.d.ts +273 -497
  99. package/dist/components/overlays/ConfirmDialog.vue.d.ts +8 -6
  100. package/dist/components/overlays/ConfirmHost.vue +5 -1
  101. package/dist/components/overlays/ConfirmHost.vue.d.ts +10 -8
  102. package/dist/components/overlays/ContextMenu.vue.d.ts +4 -4
  103. package/dist/components/overlays/Drawer.vue +4 -2
  104. package/dist/components/overlays/Drawer.vue.d.ts +8 -6
  105. package/dist/components/overlays/DropdownMenu.vue.d.ts +2 -2
  106. package/dist/components/overlays/HoverCard.vue +2 -1
  107. package/dist/components/overlays/HoverCard.vue.d.ts +8 -8
  108. package/dist/components/overlays/Modal.vue +5 -3
  109. package/dist/components/overlays/Modal.vue.d.ts +8 -6
  110. package/dist/components/overlays/Popover.vue +2 -1
  111. package/dist/components/overlays/Popover.vue.d.ts +8 -8
  112. package/dist/components/overlays/Toaster.vue.d.ts +4 -4
  113. package/dist/components/overlays/Tooltip.vue.d.ts +2 -2
  114. package/dist/components/overlays/types.d.ts +11 -5
  115. package/dist/components/templates/AccountMenu.vue.d.ts +6 -6
  116. package/dist/components/templates/AppearanceSettings.vue.d.ts +2 -2
  117. package/dist/components/templates/AuthLayout.vue.d.ts +2 -2
  118. package/dist/components/templates/Brand.vue +34 -5
  119. package/dist/components/templates/Brand.vue.d.ts +20 -15
  120. package/dist/components/templates/DashboardLayout.vue +49 -10
  121. package/dist/components/templates/DashboardLayout.vue.d.ts +332 -553
  122. package/dist/components/templates/DashboardPage.vue.d.ts +2 -2
  123. package/dist/components/templates/DetailPage.vue.d.ts +4 -4
  124. package/dist/components/templates/EmptyPage.vue.d.ts +2 -2
  125. package/dist/components/templates/ErrorPage.vue.d.ts +2 -2
  126. package/dist/components/templates/ListPage.vue +17 -11
  127. package/dist/components/templates/ListPage.vue.d.ts +3 -3
  128. package/dist/components/templates/NotFoundPage.vue.d.ts +1 -1
  129. package/dist/components/templates/SaveBar.vue.d.ts +4 -4
  130. package/dist/components/templates/SettingsGroup.vue.d.ts +2 -2
  131. package/dist/components/templates/SettingsModal.vue +5 -2
  132. package/dist/components/templates/SettingsModal.vue.d.ts +13 -8
  133. package/dist/components/templates/SettingsPage.vue.d.ts +4 -4
  134. package/dist/components/templates/SettingsSection.vue.d.ts +12 -8
  135. package/dist/components/templates/types.d.ts +25 -2
  136. package/dist/composables/core.d.ts +1 -0
  137. package/dist/composables/core.mjs +1 -0
  138. package/dist/composables/useField.d.ts +8 -1
  139. package/dist/composables/useField.mjs +41 -10
  140. package/dist/composables/useFieldBoundary.d.ts +2 -0
  141. package/dist/composables/useFieldBoundary.mjs +9 -0
  142. package/dist/composables/useFileDrop.d.ts +20 -0
  143. package/dist/composables/useFileDrop.mjs +115 -7
  144. package/dist/composables/useForm.d.ts +36 -19
  145. package/dist/composables/useForm.mjs +258 -51
  146. package/dist/editor/RichTextEditor.vue +32 -4
  147. package/dist/editor/RichTextEditor.vue.d.ts +11 -6
  148. package/dist/editor/rich-text-editor.css +1 -1
  149. package/dist/editor/types.d.ts +3 -0
  150. package/dist/grid/GridToolbar.vue.d.ts +4 -4
  151. package/dist/grid/cells/BadgeCell.vue.d.ts +2 -2
  152. package/dist/grid/cells/BooleanCell.vue.d.ts +2 -2
  153. package/dist/grid/cells/DateCell.vue.d.ts +2 -2
  154. package/dist/grid/cells/ImageCell.vue.d.ts +2 -2
  155. package/dist/grid/cells/LinkCell.vue.d.ts +2 -2
  156. package/dist/internal/core/ButtonElement.d.ts +2 -0
  157. package/dist/internal/core/ButtonElement.mjs +8 -0
  158. package/dist/internal/data/tree.d.ts +8 -0
  159. package/dist/internal/data/tree.mjs +41 -0
  160. package/dist/internal/forms/files.d.ts +9 -0
  161. package/dist/internal/forms/files.mjs +32 -1
  162. package/dist/internal/forms/standard-schema.d.ts +17 -0
  163. package/dist/internal/forms/standard-schema.mjs +40 -0
  164. package/dist/internal/keys.d.ts +2 -1
  165. package/dist/internal/keys.mjs +1 -0
  166. package/dist/internal/overlays/DialogFrame.vue +17 -7
  167. package/dist/internal/overlays/DialogFrame.vue.d.ts +9 -5
  168. package/dist/internal/overlays/MenuList.vue +2 -0
  169. package/dist/internal/overlays/MenuList.vue.d.ts +5 -5
  170. package/dist/internal/overlays/OverlayView.vue +2 -0
  171. package/dist/internal/overlays/OverlayView.vue.d.ts +14 -12
  172. package/dist/internal/overlays/dialog.d.ts +4 -1
  173. package/dist/internal/overlays/dialog.mjs +39 -5
  174. package/dist/internal/overlays/stack.d.ts +2 -1
  175. package/dist/locale/en.mjs +19 -2
  176. package/dist/locale/it.mjs +19 -2
  177. package/dist/locale/types.d.ts +17 -0
  178. package/dist/nuxt/module.d.ts +1 -0
  179. package/dist/nuxt/module.mjs +6 -3
  180. package/dist/nuxt/runtime/layouts/auth.vue.d.ts +8 -8
  181. package/dist/nuxt/runtime/layouts/dashboard.vue.d.ts +8 -8
  182. package/dist/styles/base.css +2 -0
  183. package/dist/styles/core/button.css +1 -13
  184. package/dist/styles/core/field-message.css +34 -0
  185. package/dist/styles/core/form-field.css +0 -23
  186. package/dist/styles/core/form.css +11 -0
  187. package/dist/styles/core/kbd.css +2 -2
  188. package/dist/styles/core/spinner.css +19 -0
  189. package/dist/styles/core.css +1 -0
  190. package/dist/styles/data/avatar.css +1 -1
  191. package/dist/styles/data/badge.css +1 -1
  192. package/dist/styles/data/filter-pills.css +40 -4
  193. package/dist/styles/data/pagination.css +0 -1
  194. package/dist/styles/data/selection-bar.css +89 -0
  195. package/dist/styles/data/stat.css +1 -6
  196. package/dist/styles/data/table.css +1 -3
  197. package/dist/styles/data/tag.css +1 -4
  198. package/dist/styles/data/tree.css +163 -2
  199. package/dist/styles/data.css +1 -0
  200. package/dist/styles/feedback/alert.css +0 -1
  201. package/dist/styles/feedback/empty-state.css +0 -1
  202. package/dist/styles/forms/calendar.css +1 -1
  203. package/dist/styles/forms/color-input.css +1 -1
  204. package/dist/styles/forms/combobox.css +0 -1
  205. package/dist/styles/forms/date-picker.css +1 -1
  206. package/dist/styles/forms/file-input.css +17 -1
  207. package/dist/styles/forms/number-input.css +1 -1
  208. package/dist/styles/forms/password-input.css +1 -5
  209. package/dist/styles/forms/segmented.css +8 -0
  210. package/dist/styles/forms/select.css +1 -1
  211. package/dist/styles/forms/slider.css +2 -2
  212. package/dist/styles/forms/switch.css +0 -1
  213. package/dist/styles/layout/accordion.css +22 -1
  214. package/dist/styles/layout/app-shell.css +4 -0
  215. package/dist/styles/layout/breadcrumbs.css +16 -1
  216. package/dist/styles/layout/card.css +20 -6
  217. package/dist/styles/layout/copy-button.css +2 -2
  218. package/dist/styles/layout/nav-link.css +2 -3
  219. package/dist/styles/layout/sidebar-nav.css +1 -1
  220. package/dist/styles/layout/sidebar.css +2 -2
  221. package/dist/styles/layout/tabs.css +65 -3
  222. package/dist/styles/layout/theme-switch.css +1 -3
  223. package/dist/styles/overlays/command.css +21 -3
  224. package/dist/styles/overlays/confirm.css +0 -1
  225. package/dist/styles/overlays/menu.css +3 -5
  226. package/dist/styles/overlays/modal.css +38 -0
  227. package/dist/styles/overlays/toast.css +0 -1
  228. package/dist/styles/templates/auth-layout.css +0 -1
  229. package/dist/styles/templates/brand.css +15 -0
  230. package/dist/styles/templates/empty-page.css +4 -4
  231. package/dist/styles/templates/form-page.css +1 -1
  232. package/dist/styles/templates/list-page.css +2 -6
  233. package/dist/styles/templates/page.css +1 -1
  234. package/dist/styles/templates/settings-modal.css +2 -3
  235. package/dist/styles/tokens.css +1 -1
  236. package/package.json +1 -1
@@ -2,13 +2,13 @@ import type { OverlayPlacement } from './types';
2
2
  declare var __VLS_1: {
3
3
  open: boolean;
4
4
  close: () => void;
5
- }, __VLS_3: {
5
+ }, __VLS_9: {
6
6
  close: () => void;
7
7
  };
8
8
  type __VLS_Slots = {} & {
9
9
  default?: (props: typeof __VLS_1) => any;
10
10
  } & {
11
- content?: (props: typeof __VLS_3) => any;
11
+ content?: (props: typeof __VLS_9) => any;
12
12
  };
13
13
  declare const __VLS_base: import("vue").DefineComponent<{
14
14
  placement?: OverlayPlacement;
@@ -25,7 +25,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
25
25
  style?: import("vue").StyleValue;
26
26
  results?: (string | number) | undefined;
27
27
  placeholder?: string | undefined | undefined;
28
- ref?: import("vue").VNodeRef | undefined;
29
28
  class?: import("vue").ClassValue;
30
29
  'aria-label'?: string | undefined | undefined;
31
30
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
@@ -137,7 +136,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
137
136
  'aria-colindex'?: (string | number) | undefined;
138
137
  'aria-colspan'?: (string | number) | undefined;
139
138
  'aria-controls'?: string | undefined | undefined;
140
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
139
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
141
140
  'aria-describedby'?: string | undefined | undefined;
142
141
  'aria-details'?: string | undefined | undefined;
143
142
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -174,6 +173,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
174
173
  'aria-valuemin'?: (string | number) | undefined;
175
174
  'aria-valuenow'?: (string | number) | undefined;
176
175
  'aria-valuetext'?: string | undefined | undefined;
176
+ ref?: import("vue").VNodeRef | undefined;
177
177
  ref_for?: boolean | undefined | undefined;
178
178
  ref_key?: string | undefined | undefined;
179
179
  accesskey?: string | undefined | undefined;
@@ -209,7 +209,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
209
209
  is?: string | undefined | undefined;
210
210
  exportparts?: string | undefined;
211
211
  part?: string | undefined;
212
- popover?: (import("../..").PopoverMode | "" | boolean) | undefined;
212
+ popover?: (import("../../index.ts").PopoverMode | "" | boolean) | undefined;
213
213
  }, {
214
214
  show: () => void;
215
215
  hide: () => void;
@@ -231,7 +231,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
231
231
  style?: import("vue").StyleValue;
232
232
  results?: (string | number) | undefined;
233
233
  placeholder?: string | undefined | undefined;
234
- ref?: import("vue").VNodeRef | undefined;
235
234
  class?: import("vue").ClassValue;
236
235
  'aria-label'?: string | undefined | undefined;
237
236
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
@@ -343,7 +342,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
343
342
  'aria-colindex'?: (string | number) | undefined;
344
343
  'aria-colspan'?: (string | number) | undefined;
345
344
  'aria-controls'?: string | undefined | undefined;
346
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
345
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
347
346
  'aria-describedby'?: string | undefined | undefined;
348
347
  'aria-details'?: string | undefined | undefined;
349
348
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -380,6 +379,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
380
379
  'aria-valuemin'?: (string | number) | undefined;
381
380
  'aria-valuenow'?: (string | number) | undefined;
382
381
  'aria-valuetext'?: string | undefined | undefined;
382
+ ref?: import("vue").VNodeRef | undefined;
383
383
  ref_for?: boolean | undefined | undefined;
384
384
  ref_key?: string | undefined | undefined;
385
385
  accesskey?: string | undefined | undefined;
@@ -415,7 +415,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
415
415
  is?: string | undefined | undefined;
416
416
  exportparts?: string | undefined;
417
417
  part?: string | undefined;
418
- popover?: (import("../..").PopoverMode | "" | boolean) | undefined;
418
+ popover?: (import("../../index.ts").PopoverMode | "" | boolean) | undefined;
419
419
  }> & Readonly<{
420
420
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
421
421
  }>, {
@@ -11,9 +11,9 @@ declare const __VLS_export: import("vue").DefineComponent<{
11
11
  hotkey?: string | false;
12
12
  key?: PropertyKey | undefined;
13
13
  style?: import("vue").StyleValue;
14
- ref?: import("vue").VNodeRef | undefined;
15
14
  class?: import("vue").ClassValue;
16
15
  to?: string | import("vue").RendererElement | null | undefined;
16
+ ref?: import("vue").VNodeRef | undefined;
17
17
  ref_for?: boolean | undefined;
18
18
  ref_key?: string | undefined;
19
19
  disabled?: boolean;
@@ -77,7 +77,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
77
77
  'aria-colindex'?: (string | number) | undefined;
78
78
  'aria-colspan'?: (string | number) | undefined;
79
79
  'aria-controls'?: string | undefined | undefined;
80
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
80
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
81
81
  'aria-describedby'?: string | undefined | undefined;
82
82
  'aria-details'?: string | undefined | undefined;
83
83
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -222,9 +222,9 @@ declare const __VLS_export: import("vue").DefineComponent<{
222
222
  hotkey?: string | false;
223
223
  key?: PropertyKey | undefined;
224
224
  style?: import("vue").StyleValue;
225
- ref?: import("vue").VNodeRef | undefined;
226
225
  class?: import("vue").ClassValue;
227
226
  to?: string | import("vue").RendererElement | null | undefined;
227
+ ref?: import("vue").VNodeRef | undefined;
228
228
  ref_for?: boolean | undefined;
229
229
  ref_key?: string | undefined;
230
230
  disabled?: boolean;
@@ -288,7 +288,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
288
288
  'aria-colindex'?: (string | number) | undefined;
289
289
  'aria-colspan'?: (string | number) | undefined;
290
290
  'aria-controls'?: string | undefined | undefined;
291
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
291
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
292
292
  'aria-describedby'?: string | undefined | undefined;
293
293
  'aria-details'?: string | undefined | undefined;
294
294
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -69,7 +69,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
69
69
  'aria-colindex'?: (string | number) | undefined;
70
70
  'aria-colspan'?: (string | number) | undefined;
71
71
  'aria-controls'?: string | undefined | undefined;
72
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
72
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
73
73
  'aria-describedby'?: string | undefined | undefined;
74
74
  'aria-details'?: string | undefined | undefined;
75
75
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -270,7 +270,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
270
270
  'aria-colindex'?: (string | number) | undefined;
271
271
  'aria-colspan'?: (string | number) | undefined;
272
272
  'aria-controls'?: string | undefined | undefined;
273
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
273
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
274
274
  'aria-describedby'?: string | undefined | undefined;
275
275
  'aria-details'?: string | undefined | undefined;
276
276
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -2,7 +2,9 @@ import type { LinkTarget } from '../core/types';
2
2
  import type { IconName } from '../../composables/useIcons';
3
3
  import type { Placement, Side } from '../../internal/floating/position';
4
4
  export type { Placement as OverlayPlacement, Side as OverlaySide };
5
- export type ModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full' | 'fit';
5
+ export type ModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full' | 'fit' | 'fullscreen';
6
+ export type DialogCloseReason = 'escape' | 'backdrop' | 'close-button' | 'action';
7
+ export type DialogBeforeClose = (reason: DialogCloseReason) => boolean | Promise<boolean>;
6
8
  export type ToasterPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
7
9
  export interface ToasterOptions {
8
10
  position?: ToasterPosition;
@@ -58,7 +60,7 @@ export interface MenuSeparator {
58
60
  export type MenuItem = MenuActionItem | MenuCheckboxItem | MenuRadioItem;
59
61
  export type MenuEntry = MenuItem | MenuLabel | MenuSeparator;
60
62
  export type MenuItems = MenuEntry[] | MenuEntry[][];
61
- export interface CommandItem {
63
+ export interface CommandItem<T = unknown> {
62
64
  id: string;
63
65
  label: string;
64
66
  description?: string;
@@ -68,10 +70,14 @@ export interface CommandItem {
68
70
  to?: LinkTarget;
69
71
  href?: string;
70
72
  disabled?: boolean;
71
- onSelect?: (item: CommandItem) => void;
73
+ data?: T;
74
+ onSelect?: (item: CommandItem<T>) => void;
72
75
  }
73
- export interface CommandGroup {
76
+ export interface CommandGroup<T = unknown> {
74
77
  id: string;
75
78
  label?: string;
76
- items: CommandItem[];
79
+ description?: string;
80
+ items: CommandItem<T>[];
77
81
  }
82
+ export type CommandSearch<T = unknown> = (query: string, signal: AbortSignal) => CommandGroup<T>[] | Promise<CommandGroup<T>[]>;
83
+ export type CommandEmptyText = string | ((query: string) => string);
@@ -17,8 +17,6 @@ declare const __VLS_export: import("vue").DefineComponent<{
17
17
  style?: import("vue").StyleValue;
18
18
  results?: (string | number) | undefined;
19
19
  placeholder?: string | undefined | undefined;
20
- type?: "submit" | "reset" | "button" | undefined | undefined;
21
- ref?: import("vue").VNodeRef | undefined;
22
20
  class?: import("vue").ClassValue;
23
21
  role?: string | undefined | undefined;
24
22
  'aria-label'?: string | undefined | undefined;
@@ -120,6 +118,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
120
118
  color?: string | undefined | undefined;
121
119
  id?: string | undefined | undefined;
122
120
  lang?: string | undefined | undefined;
121
+ type?: "submit" | "reset" | "button" | undefined | undefined;
123
122
  tabindex?: (string | number) | undefined;
124
123
  'aria-activedescendant'?: string | undefined | undefined;
125
124
  'aria-atomic'?: (boolean | "true" | "false") | undefined;
@@ -130,7 +129,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
130
129
  'aria-colindex'?: (string | number) | undefined;
131
130
  'aria-colspan'?: (string | number) | undefined;
132
131
  'aria-controls'?: string | undefined | undefined;
133
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
132
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
134
133
  'aria-describedby'?: string | undefined | undefined;
135
134
  'aria-details'?: string | undefined | undefined;
136
135
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -167,6 +166,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
167
166
  'aria-valuemin'?: (string | number) | undefined;
168
167
  'aria-valuenow'?: (string | number) | undefined;
169
168
  'aria-valuetext'?: string | undefined | undefined;
169
+ ref?: import("vue").VNodeRef | undefined;
170
170
  ref_for?: boolean | undefined | undefined;
171
171
  ref_key?: string | undefined | undefined;
172
172
  accesskey?: string | undefined | undefined;
@@ -231,8 +231,6 @@ declare const __VLS_export: import("vue").DefineComponent<{
231
231
  style?: import("vue").StyleValue;
232
232
  results?: (string | number) | undefined;
233
233
  placeholder?: string | undefined | undefined;
234
- type?: "submit" | "reset" | "button" | undefined | undefined;
235
- ref?: import("vue").VNodeRef | undefined;
236
234
  class?: import("vue").ClassValue;
237
235
  role?: string | undefined | undefined;
238
236
  'aria-label'?: string | undefined | undefined;
@@ -334,6 +332,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
334
332
  color?: string | undefined | undefined;
335
333
  id?: string | undefined | undefined;
336
334
  lang?: string | undefined | undefined;
335
+ type?: "submit" | "reset" | "button" | undefined | undefined;
337
336
  tabindex?: (string | number) | undefined;
338
337
  'aria-activedescendant'?: string | undefined | undefined;
339
338
  'aria-atomic'?: (boolean | "true" | "false") | undefined;
@@ -344,7 +343,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
344
343
  'aria-colindex'?: (string | number) | undefined;
345
344
  'aria-colspan'?: (string | number) | undefined;
346
345
  'aria-controls'?: string | undefined | undefined;
347
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
346
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
348
347
  'aria-describedby'?: string | undefined | undefined;
349
348
  'aria-details'?: string | undefined | undefined;
350
349
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -381,6 +380,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
381
380
  'aria-valuemin'?: (string | number) | undefined;
382
381
  'aria-valuenow'?: (string | number) | undefined;
383
382
  'aria-valuetext'?: string | undefined | undefined;
383
+ ref?: import("vue").VNodeRef | undefined;
384
384
  ref_for?: boolean | undefined | undefined;
385
385
  ref_key?: string | undefined | undefined;
386
386
  accesskey?: string | undefined | undefined;
@@ -66,7 +66,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
66
66
  'aria-colindex'?: (string | number) | undefined;
67
67
  'aria-colspan'?: (string | number) | undefined;
68
68
  'aria-controls'?: string | undefined | undefined;
69
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
69
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
70
70
  'aria-describedby'?: string | undefined | undefined;
71
71
  'aria-details'?: string | undefined | undefined;
72
72
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -266,7 +266,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
266
266
  'aria-colindex'?: (string | number) | undefined;
267
267
  'aria-colspan'?: (string | number) | undefined;
268
268
  'aria-controls'?: string | undefined | undefined;
269
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
269
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
270
270
  'aria-describedby'?: string | undefined | undefined;
271
271
  'aria-details'?: string | undefined | undefined;
272
272
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -89,7 +89,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
89
89
  'aria-colindex'?: (string | number) | undefined;
90
90
  'aria-colspan'?: (string | number) | undefined;
91
91
  'aria-controls'?: string | undefined | undefined;
92
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
92
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
93
93
  'aria-describedby'?: string | undefined | undefined;
94
94
  'aria-details'?: string | undefined | undefined;
95
95
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -296,7 +296,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
296
296
  'aria-colindex'?: (string | number) | undefined;
297
297
  'aria-colspan'?: (string | number) | undefined;
298
298
  'aria-controls'?: string | undefined | undefined;
299
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
299
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
300
300
  'aria-describedby'?: string | undefined | undefined;
301
301
  'aria-details'?: string | undefined | undefined;
302
302
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -6,7 +6,22 @@
6
6
  class="k-brand"
7
7
  :class="[`k-brand-${size}`, { 'is-link': isLink, 'is-accent': accent }]"
8
8
  >
9
- <img v-if="logo" class="k-brand-logo" :src="logo" :alt="name ?? ''" />
9
+ <span v-if="$slots.logo" class="k-brand-logo is-slot" v-bind="logoAttrs">
10
+ <slot name="logo" />
11
+ </span>
12
+ <span
13
+ v-else-if="logoSvg !== void 0"
14
+ class="k-brand-logo is-svg"
15
+ v-bind="logoAttrs"
16
+ v-html="logoSvg"
17
+ />
18
+ <component :is="logo" v-else-if="logoComponent" class="k-brand-logo" v-bind="logoAttrs" />
19
+ <img
20
+ v-else-if="logo"
21
+ class="k-brand-logo"
22
+ :src="logoUrl"
23
+ :alt="showText ? '' : name ?? ''"
24
+ />
10
25
  <span v-else class="k-brand-mark" aria-hidden="true">
11
26
  <slot name="mark">
12
27
  <Icon v-if="icon" :name="icon" />
@@ -34,25 +49,39 @@ const props = defineProps({
34
49
  name: { type: String, required: false },
35
50
  subtitle: { type: String, required: false },
36
51
  icon: { type: null, required: false },
37
- logo: { type: String, required: false },
52
+ logo: { type: null, required: false },
38
53
  to: { type: [String, Object], required: false },
39
54
  href: { type: String, required: false },
40
55
  size: { type: String, required: false, default: "md" },
41
56
  accent: { type: Boolean, required: false },
42
- hideText: { type: Boolean, required: false }
57
+ hideText: { type: Boolean, required: false },
58
+ showName: { type: Boolean, required: false }
43
59
  });
44
60
  const slots = useSlots();
45
61
  const { resolveLink } = useLinkResolver();
46
62
  const link = computed(() => resolveLink(props));
47
63
  const isLink = computed(() => link.value !== null);
48
64
  const tag = computed(() => link.value?.is ?? "span");
65
+ const hasLogo = computed(() => Boolean(props.logo || slots.logo));
66
+ const logoSvg = computed(
67
+ () => typeof props.logo === "string" && props.logo.trimStart().startsWith("<svg") ? props.logo : void 0
68
+ );
69
+ const logoUrl = computed(
70
+ () => typeof props.logo === "string" && logoSvg.value === void 0 ? props.logo : void 0
71
+ );
72
+ const logoComponent = computed(
73
+ () => props.logo && typeof props.logo !== "string" ? props.logo : void 0
74
+ );
75
+ const logoAttrs = computed(
76
+ () => showText.value || !props.name ? { "aria-hidden": "true" } : { role: "img", "aria-label": props.name }
77
+ );
49
78
  const linkAttrs = computed(() => {
50
79
  if (!link.value) return {};
51
- const label = showText.value || props.logo ? void 0 : props.name;
80
+ const label = showText.value || hasLogo.value ? void 0 : props.name;
52
81
  return { ...link.value.attrs, "aria-label": label };
53
82
  });
54
83
  const initial = computed(() => (props.name ?? "").trim().charAt(0).toUpperCase());
55
84
  const showText = computed(
56
- () => !props.hideText && !props.logo && Boolean(props.name || slots.default)
85
+ () => !props.hideText && (!hasLogo.value || props.showName) && Boolean(props.name || slots.default)
57
86
  );
58
87
  </script>
@@ -1,24 +1,28 @@
1
+ import type { Component } from 'vue';
1
2
  import type { IconName } from '../../composables/useIcons';
2
- import type { BrandSize } from './types';
3
+ import type { BrandLogo, BrandSize } from './types';
3
4
  import type { LinkTarget } from '../core/types';
4
- declare var __VLS_7: {}, __VLS_14: {}, __VLS_16: {};
5
+ declare var __VLS_7: {}, __VLS_14: {}, __VLS_21: {}, __VLS_23: {};
5
6
  type __VLS_Slots = {} & {
6
- mark?: (props: typeof __VLS_7) => any;
7
+ logo?: (props: typeof __VLS_7) => any;
7
8
  } & {
8
- default?: (props: typeof __VLS_14) => any;
9
+ mark?: (props: typeof __VLS_14) => any;
9
10
  } & {
10
- subtitle?: (props: typeof __VLS_16) => any;
11
+ default?: (props: typeof __VLS_21) => any;
12
+ } & {
13
+ subtitle?: (props: typeof __VLS_23) => any;
11
14
  };
12
15
  declare const __VLS_base: import("vue").DefineComponent<{
13
16
  name?: string;
14
17
  subtitle?: string;
15
18
  icon?: IconName;
16
- logo?: string;
19
+ logo?: BrandLogo;
17
20
  to?: LinkTarget;
18
21
  href?: string | undefined;
19
22
  size?: BrandSize;
20
23
  accent?: boolean;
21
24
  hideText?: boolean;
25
+ showName?: boolean;
22
26
  inlist?: any;
23
27
  download?: any;
24
28
  key?: PropertyKey | undefined;
@@ -28,9 +32,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
28
32
  results?: (string | number) | undefined;
29
33
  placeholder?: string | undefined;
30
34
  bind?: Record<string, unknown>;
31
- type?: string | undefined;
32
- ref?: import("vue").VNodeRef | undefined;
33
- target?: string | undefined;
34
35
  class?: import("vue").ClassValue;
35
36
  role?: string | undefined;
36
37
  'aria-label'?: string | undefined;
@@ -134,6 +135,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
134
135
  id?: string | undefined;
135
136
  lang?: string | undefined;
136
137
  media?: string | undefined;
138
+ target?: string | undefined;
139
+ type?: string | undefined;
137
140
  tabindex?: (string | number) | undefined;
138
141
  'aria-activedescendant'?: string | undefined;
139
142
  'aria-atomic'?: (boolean | "true" | "false") | undefined;
@@ -181,6 +184,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
181
184
  'aria-valuemin'?: (string | number) | undefined;
182
185
  'aria-valuenow'?: (string | number) | undefined;
183
186
  'aria-valuetext'?: string | undefined;
187
+ ref?: import("vue").VNodeRef | undefined;
184
188
  ref_for?: boolean | undefined;
185
189
  ref_key?: string | undefined;
186
190
  accesskey?: string | undefined;
@@ -220,23 +224,24 @@ declare const __VLS_base: import("vue").DefineComponent<{
220
224
  hreflang?: string | undefined;
221
225
  ping?: string | undefined;
222
226
  referrerpolicy?: ("" | "origin" | "no-referrer" | "no-referrer-when-downgrade" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url") | undefined;
223
- as?: string | import("vue").Component;
224
227
  onVnodeBeforeMount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
225
228
  onVnodeMounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
226
229
  onVnodeBeforeUpdate?: (((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[]) | undefined;
227
230
  onVnodeUpdated?: (((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[]) | undefined;
228
231
  onVnodeBeforeUnmount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
229
232
  onVnodeUnmounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
233
+ as?: string | Component;
230
234
  }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
231
235
  name?: string;
232
236
  subtitle?: string;
233
237
  icon?: IconName;
234
- logo?: string;
238
+ logo?: BrandLogo;
235
239
  to?: LinkTarget;
236
240
  href?: string | undefined;
237
241
  size?: BrandSize;
238
242
  accent?: boolean;
239
243
  hideText?: boolean;
244
+ showName?: boolean;
240
245
  inlist?: any;
241
246
  download?: any;
242
247
  key?: PropertyKey | undefined;
@@ -246,9 +251,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
246
251
  results?: (string | number) | undefined;
247
252
  placeholder?: string | undefined;
248
253
  bind?: Record<string, unknown>;
249
- type?: string | undefined;
250
- ref?: import("vue").VNodeRef | undefined;
251
- target?: string | undefined;
252
254
  class?: import("vue").ClassValue;
253
255
  role?: string | undefined;
254
256
  'aria-label'?: string | undefined;
@@ -352,6 +354,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
352
354
  id?: string | undefined;
353
355
  lang?: string | undefined;
354
356
  media?: string | undefined;
357
+ target?: string | undefined;
358
+ type?: string | undefined;
355
359
  tabindex?: (string | number) | undefined;
356
360
  'aria-activedescendant'?: string | undefined;
357
361
  'aria-atomic'?: (boolean | "true" | "false") | undefined;
@@ -399,6 +403,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
399
403
  'aria-valuemin'?: (string | number) | undefined;
400
404
  'aria-valuenow'?: (string | number) | undefined;
401
405
  'aria-valuetext'?: string | undefined;
406
+ ref?: import("vue").VNodeRef | undefined;
402
407
  ref_for?: boolean | undefined;
403
408
  ref_key?: string | undefined;
404
409
  accesskey?: string | undefined;
@@ -438,13 +443,13 @@ declare const __VLS_base: import("vue").DefineComponent<{
438
443
  hreflang?: string | undefined;
439
444
  ping?: string | undefined;
440
445
  referrerpolicy?: ("" | "origin" | "no-referrer" | "no-referrer-when-downgrade" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url") | undefined;
441
- as?: string | import("vue").Component;
442
446
  onVnodeBeforeMount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
443
447
  onVnodeMounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
444
448
  onVnodeBeforeUpdate?: (((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[]) | undefined;
445
449
  onVnodeUpdated?: (((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[]) | undefined;
446
450
  onVnodeBeforeUnmount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
447
451
  onVnodeUnmounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
452
+ as?: string | Component;
448
453
  }> & Readonly<{}>, {
449
454
  size: BrandSize;
450
455
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -28,6 +28,7 @@
28
28
  :subtitle="brandSubtitle"
29
29
  :icon="brandIcon"
30
30
  :logo="brandLogo"
31
+ :show-name="brandShowName"
31
32
  :to="brandTo"
32
33
  />
33
34
  </slot>
@@ -38,10 +39,25 @@
38
39
  v-model:open="searchOpen"
39
40
  :groups="commandGroups"
40
41
  :trigger-label="searchLabel"
41
- :placeholder="searchPlaceholderText"
42
42
  :shortcut="searchShortcut"
43
43
  class="k-dashboard-search"
44
- />
44
+ v-bind="searchProps"
45
+ :search="searchFunction"
46
+ :placeholder="searchProps?.placeholder ?? searchPlaceholderText"
47
+ >
48
+ <template v-if="$slots['search-item']" #item="scope">
49
+ <slot name="search-item" v-bind="scope" />
50
+ </template>
51
+ <template v-if="$slots['search-empty']" #empty="scope">
52
+ <slot name="search-empty" v-bind="scope" />
53
+ </template>
54
+ <template v-if="$slots['search-group-label']" #group-label="scope">
55
+ <slot name="search-group-label" v-bind="scope" />
56
+ </template>
57
+ <template v-if="$slots['search-after-results']" #after-results="scope">
58
+ <slot name="search-after-results" v-bind="scope" />
59
+ </template>
60
+ </CommandPalette>
45
61
  </slot>
46
62
  </template>
47
63
  <slot name="sidebar" :collapsed="isCollapsed">
@@ -90,6 +106,7 @@
90
106
  :name="brandName"
91
107
  :icon="brandIcon"
92
108
  :logo="brandLogo"
109
+ :show-name="brandShowName"
93
110
  :to="brandTo"
94
111
  size="sm"
95
112
  />
@@ -126,6 +143,9 @@
126
143
  :title="settingsTitleText"
127
144
  :on-sign-out="onSignOut"
128
145
  >
146
+ <template v-if="$slots['settings-account-fields']" #account-fields="scope">
147
+ <slot name="settings-account-fields" v-bind="scope" />
148
+ </template>
129
149
  <template v-for="entry in settingsSlots" :key="entry.source" #[entry.target]="scope">
130
150
  <slot :name="entry.source" v-bind="scope" />
131
151
  </template>
@@ -135,9 +155,10 @@
135
155
  </template>
136
156
 
137
157
  <script setup>
138
- import { computed, ref, useSlots, useTemplateRef } from "vue";
158
+ import { computed, ref, useTemplateRef } from "vue";
139
159
  import { useLocale } from "../../composables/useLocale";
140
160
  import { navCommands, toNavSections } from "../../internal/layout/navigation";
161
+ import { matchesSearch } from "../../internal/core/text";
141
162
  import AppShell from "../layout/AppShell.vue";
142
163
  import Breadcrumbs from "../layout/Breadcrumbs.vue";
143
164
  import Sidebar from "../layout/Sidebar.vue";
@@ -154,7 +175,8 @@ const props = defineProps({
154
175
  brandName: { type: String, required: false },
155
176
  brandSubtitle: { type: String, required: false },
156
177
  brandIcon: { type: null, required: false },
157
- brandLogo: { type: String, required: false },
178
+ brandLogo: { type: null, required: false },
179
+ brandShowName: { type: Boolean, required: false },
158
180
  brandTo: { type: [String, Object], required: false, default: "/" },
159
181
  account: { type: Object, required: false },
160
182
  accountAction: { type: String, required: false, default: "settings" },
@@ -163,7 +185,9 @@ const props = defineProps({
163
185
  settingsTitle: { type: String, required: false },
164
186
  onSignOut: { type: Function, required: false },
165
187
  breadcrumbs: { type: Array, required: false },
166
- search: { type: [Boolean, Array], required: false },
188
+ search: { type: [Boolean, Array, Function], required: false },
189
+ searchProps: { type: Object, required: false },
190
+ searchNavigation: { type: Boolean, required: false, default: true },
167
191
  searchLabel: { type: String, required: false },
168
192
  searchPlaceholder: { type: String, required: false },
169
193
  searchShortcut: { type: [String, Boolean], required: false, default: "mod+k" },
@@ -184,6 +208,7 @@ const props = defineProps({
184
208
  themeLabel: { type: String, required: false }
185
209
  });
186
210
  const emit = defineEmits(["accountSelect"]);
211
+ const slots = defineSlots();
187
212
  const collapsed = defineModel("collapsed", { type: Boolean, ...{ default: false } });
188
213
  const open = defineModel("open", { type: Boolean, ...{ default: false } });
189
214
  const settingsOpen = defineModel("settingsOpen", { type: Boolean, ...{ default: false } });
@@ -196,7 +221,6 @@ const searchPlaceholderText = computed(
196
221
  const navigationGroupLabel = computed(
197
222
  () => props.searchNavigationLabel ?? t("dashboardLayout.pages")
198
223
  );
199
- const slots = useSlots();
200
224
  const shell = useTemplateRef("shell");
201
225
  const searchOpen = ref(false);
202
226
  const hasDesktopTopbar = computed(
@@ -212,14 +236,29 @@ const hasSidebarFooter = computed(
212
236
  const hasSettings = computed(
213
237
  () => props.accountAction === "settings" && Boolean(props.account || props.settingsSections)
214
238
  );
215
- const SETTINGS_SLOT_PREFIX = "settings-";
239
+ const SETTINGS_SLOT_PATTERN = /^settings-(section|actions)-./;
216
240
  const settingsSlots = computed(
217
- () => Object.keys(slots).filter((name) => name.startsWith(SETTINGS_SLOT_PREFIX)).map((name) => ({
241
+ () => Object.keys(slots).filter((name) => SETTINGS_SLOT_PATTERN.test(name)).map((name) => ({
218
242
  source: name,
219
- target: name.slice(SETTINGS_SLOT_PREFIX.length)
243
+ target: name.slice("settings-".length)
220
244
  }))
221
245
  );
222
- const navigationCommands = computed(() => navCommands(toNavSections(props.navigation)));
246
+ const navigationCommands = computed(
247
+ () => navCommands(toNavSections(props.navigation))
248
+ );
249
+ const searchFunction = computed(() => {
250
+ const search = props.search;
251
+ if (typeof search !== "function") return void 0;
252
+ if (!props.searchNavigation) return search;
253
+ return async (query, signal) => {
254
+ const groups = await search(query, signal);
255
+ const items = navigationCommands.value.filter(
256
+ (item) => matchesSearch([item.label, item.description, ...item.keywords ?? []], query)
257
+ );
258
+ if (!items.length) return groups;
259
+ return [{ id: "navigation", label: navigationGroupLabel.value, items }, ...groups];
260
+ };
261
+ });
223
262
  const commandGroups = computed(() => {
224
263
  const groups = [];
225
264
  if (navigationCommands.value.length)