@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,7 +2,15 @@
2
2
  <header class="k-page-header" :class="{ 'is-bordered': bordered }">
3
3
  <div class="k-page-header-heading">
4
4
  <slot name="breadcrumbs">
5
- <Breadcrumbs v-if="breadcrumbs?.length" :items="breadcrumbs" />
5
+ <Breadcrumbs
6
+ v-if="breadcrumbs?.length"
7
+ :items="breadcrumbs"
8
+ :ancestors="breadcrumbsAncestors"
9
+ >
10
+ <template v-if="$slots['breadcrumb-item']" #item="scope">
11
+ <slot name="breadcrumb-item" v-bind="scope" />
12
+ </template>
13
+ </Breadcrumbs>
6
14
  </slot>
7
15
  <div class="k-page-header-title-row">
8
16
  <span v-if="icon || $slots.icon" class="k-page-header-icon" aria-hidden="true">
@@ -38,6 +46,7 @@ defineProps({
38
46
  description: { type: String, required: false },
39
47
  icon: { type: null, required: false },
40
48
  breadcrumbs: { type: Array, required: false },
49
+ breadcrumbsAncestors: { type: Boolean, required: false },
41
50
  level: { type: Number, required: false, default: 1 },
42
51
  bordered: { type: Boolean, required: false }
43
52
  });
@@ -1,26 +1,33 @@
1
1
  import type { IconName } from '../../composables/useIcons';
2
2
  import type { BreadcrumbItem, HeadingLevel } from './types';
3
- declare var __VLS_1: {}, __VLS_8: {}, __VLS_21: {}, __VLS_23: {}, __VLS_25: {}, __VLS_27: {}, __VLS_29: {};
3
+ declare var __VLS_1: {}, __VLS_10: {
4
+ item: BreadcrumbItem;
5
+ index: number;
6
+ current: boolean;
7
+ }, __VLS_12: {}, __VLS_25: {}, __VLS_27: {}, __VLS_29: {}, __VLS_31: {}, __VLS_33: {};
4
8
  type __VLS_Slots = {} & {
5
9
  breadcrumbs?: (props: typeof __VLS_1) => any;
6
10
  } & {
7
- icon?: (props: typeof __VLS_8) => any;
11
+ 'breadcrumb-item'?: (props: typeof __VLS_10) => any;
8
12
  } & {
9
- title?: (props: typeof __VLS_21) => any;
13
+ icon?: (props: typeof __VLS_12) => any;
10
14
  } & {
11
- badge?: (props: typeof __VLS_23) => any;
15
+ title?: (props: typeof __VLS_25) => any;
12
16
  } & {
13
- description?: (props: typeof __VLS_25) => any;
17
+ badge?: (props: typeof __VLS_27) => any;
14
18
  } & {
15
- actions?: (props: typeof __VLS_27) => any;
19
+ description?: (props: typeof __VLS_29) => any;
16
20
  } & {
17
- default?: (props: typeof __VLS_29) => any;
21
+ actions?: (props: typeof __VLS_31) => any;
22
+ } & {
23
+ default?: (props: typeof __VLS_33) => any;
18
24
  };
19
25
  declare const __VLS_base: import("vue").DefineComponent<{
20
26
  title?: string | undefined;
21
27
  description?: string;
22
28
  icon?: IconName;
23
29
  breadcrumbs?: BreadcrumbItem[];
30
+ breadcrumbsAncestors?: boolean;
24
31
  level?: HeadingLevel;
25
32
  bordered?: boolean;
26
33
  innerHTML?: string | undefined | undefined;
@@ -77,7 +84,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
77
84
  'aria-colindex'?: (string | number) | undefined;
78
85
  'aria-colspan'?: (string | number) | undefined;
79
86
  'aria-controls'?: string | undefined | undefined;
80
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
87
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
81
88
  'aria-describedby'?: string | undefined | undefined;
82
89
  'aria-details'?: string | undefined | undefined;
83
90
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -219,6 +226,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
219
226
  description?: string;
220
227
  icon?: IconName;
221
228
  breadcrumbs?: BreadcrumbItem[];
229
+ breadcrumbsAncestors?: boolean;
222
230
  level?: HeadingLevel;
223
231
  bordered?: boolean;
224
232
  innerHTML?: string | undefined | undefined;
@@ -275,7 +283,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
275
283
  'aria-colindex'?: (string | number) | undefined;
276
284
  'aria-colspan'?: (string | number) | undefined;
277
285
  'aria-controls'?: string | undefined | undefined;
278
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
286
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
279
287
  'aria-describedby'?: string | undefined | undefined;
280
288
  'aria-details'?: string | undefined | undefined;
281
289
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -61,7 +61,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
61
61
  'aria-colindex'?: (string | number) | undefined;
62
62
  'aria-colspan'?: (string | number) | undefined;
63
63
  'aria-controls'?: string | undefined | undefined;
64
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
64
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
65
65
  'aria-describedby'?: string | undefined | undefined;
66
66
  'aria-details'?: string | undefined | undefined;
67
67
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -257,7 +257,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
257
257
  'aria-colindex'?: (string | number) | undefined;
258
258
  'aria-colspan'?: (string | number) | undefined;
259
259
  'aria-controls'?: string | undefined | undefined;
260
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
260
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
261
261
  'aria-describedby'?: string | undefined | undefined;
262
262
  'aria-details'?: string | undefined | undefined;
263
263
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -76,7 +76,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
76
76
  'aria-colindex'?: (string | number) | undefined;
77
77
  'aria-colspan'?: (string | number) | undefined;
78
78
  'aria-controls'?: string | undefined | undefined;
79
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
79
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
80
80
  'aria-describedby'?: string | undefined | undefined;
81
81
  'aria-details'?: string | undefined | undefined;
82
82
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -273,7 +273,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
273
273
  'aria-colindex'?: (string | number) | undefined;
274
274
  'aria-colspan'?: (string | number) | undefined;
275
275
  'aria-controls'?: string | undefined | undefined;
276
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
276
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
277
277
  'aria-describedby'?: string | undefined | undefined;
278
278
  'aria-details'?: string | undefined | undefined;
279
279
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -59,7 +59,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
59
59
  'aria-colindex'?: (string | number) | undefined;
60
60
  'aria-colspan'?: (string | number) | undefined;
61
61
  'aria-controls'?: string | undefined | undefined;
62
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
62
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
63
63
  'aria-describedby'?: string | undefined | undefined;
64
64
  'aria-details'?: string | undefined | undefined;
65
65
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -253,7 +253,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
253
253
  'aria-colindex'?: (string | number) | undefined;
254
254
  'aria-colspan'?: (string | number) | undefined;
255
255
  'aria-controls'?: string | undefined | undefined;
256
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
256
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
257
257
  'aria-describedby'?: string | undefined | undefined;
258
258
  'aria-details'?: string | undefined | undefined;
259
259
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -20,9 +20,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
20
20
  results?: (string | number) | undefined;
21
21
  placeholder?: string | undefined;
22
22
  bind?: Record<string, unknown>;
23
- type?: string | undefined;
24
- ref?: import("vue").VNodeRef | undefined;
25
- target?: string | undefined;
26
23
  class?: import("vue").ClassValue;
27
24
  role?: string | undefined;
28
25
  'aria-label'?: string | undefined;
@@ -126,6 +123,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
126
123
  id?: string | undefined;
127
124
  lang?: string | undefined;
128
125
  media?: string | undefined;
126
+ target?: string | undefined;
127
+ type?: string | undefined;
129
128
  tabindex?: (string | number) | undefined;
130
129
  href?: string | undefined;
131
130
  'aria-activedescendant'?: string | 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;
176
+ ref?: import("vue").VNodeRef | undefined;
177
177
  ref_for?: boolean | undefined;
178
178
  ref_key?: string | undefined;
179
179
  accesskey?: string | undefined;
@@ -236,9 +236,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
236
236
  results?: (string | number) | undefined;
237
237
  placeholder?: string | undefined;
238
238
  bind?: Record<string, unknown>;
239
- type?: string | undefined;
240
- ref?: import("vue").VNodeRef | undefined;
241
- target?: string | undefined;
242
239
  class?: import("vue").ClassValue;
243
240
  role?: string | undefined;
244
241
  'aria-label'?: string | undefined;
@@ -342,6 +339,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
342
339
  id?: string | undefined;
343
340
  lang?: string | undefined;
344
341
  media?: string | undefined;
342
+ target?: string | undefined;
343
+ type?: string | undefined;
345
344
  tabindex?: (string | number) | undefined;
346
345
  href?: string | undefined;
347
346
  'aria-activedescendant'?: string | undefined;
@@ -390,6 +389,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
390
389
  'aria-valuemin'?: (string | number) | undefined;
391
390
  'aria-valuenow'?: (string | number) | undefined;
392
391
  'aria-valuetext'?: string | undefined;
392
+ ref?: import("vue").VNodeRef | undefined;
393
393
  ref_for?: boolean | undefined;
394
394
  ref_key?: string | undefined;
395
395
  accesskey?: string | undefined;
@@ -1,5 +1,12 @@
1
1
  <template>
2
- <div class="k-tabs" :class="[`k-tabs-${variant}`, `k-tabs-${size}`, { 'is-fill': fill }]">
2
+ <div
3
+ class="k-tabs"
4
+ :class="[
5
+ `k-tabs-${variant}`,
6
+ `k-tabs-${size}`,
7
+ { 'is-fill': fill, 'is-stretch': stretch, 'is-inset': inset }
8
+ ]"
9
+ >
3
10
  <div
4
11
  ref="list"
5
12
  class="k-tabs-list"
@@ -16,7 +23,9 @@
16
23
  role="tab"
17
24
  class="k-tab"
18
25
  :aria-selected="isSelected(item) ? 'true' : 'false'"
19
- :aria-controls="panelId(index)"
26
+ :aria-controls="
27
+ singlePanel ? isSelected(item) ? singlePanelId : void 0 : panelId(index)
28
+ "
20
29
  :tabindex="index === focusIndex ? 0 : -1"
21
30
  :disabled="item.disabled"
22
31
  @click="select(item)"
@@ -25,13 +34,29 @@
25
34
  >
26
35
  <Icon v-if="item.icon" :name="item.icon" class="k-tab-icon" />
27
36
  <span class="k-tab-label">{{ item.label }}</span>
28
- <span v-if="item.badge !== void 0 && item.badge !== ''" class="k-tab-badge">{{
29
- item.badge
30
- }}</span>
37
+ <template v-if="item.badge !== void 0 && item.badge !== ''">
38
+ <span
39
+ class="k-tab-badge"
40
+ :class="item.badgeTone ? `k-tab-badge-${item.badgeTone}` : void 0"
41
+ :aria-hidden="item.badgeLabel ? 'true' : void 0"
42
+ >{{ item.badge }}</span
43
+ >
44
+ <span v-if="item.badgeLabel" class="k-visually-hidden">{{ item.badgeLabel }}</span>
45
+ </template>
31
46
  </button>
32
47
  <span class="k-tabs-indicator" aria-hidden="true" />
33
48
  </div>
34
- <template v-for="(item, index) in items" :key="item.value">
49
+ <div
50
+ v-if="singlePanel && activeItem"
51
+ :id="singlePanelId"
52
+ class="k-tabs-panel"
53
+ role="tabpanel"
54
+ :aria-labelledby="tabId(selectedIndex)"
55
+ :tabindex="panelFocusable ? 0 : void 0"
56
+ >
57
+ <slot name="panel" :item="activeItem" />
58
+ </div>
59
+ <template v-for="(item, index) in singlePanel ? [] : items" :key="item.value">
35
60
  <div
36
61
  v-if="!lazy || visited.has(item.value)"
37
62
  v-show="isSelected(item)"
@@ -70,9 +95,11 @@ const props = defineProps({
70
95
  activation: { type: String, required: false, default: "automatic" },
71
96
  lazy: { type: Boolean, required: false },
72
97
  fill: { type: Boolean, required: false },
98
+ stretch: { type: Boolean, required: false },
99
+ inset: { type: Boolean, required: false },
73
100
  panelFocusable: { type: Boolean, required: false, default: true }
74
101
  });
75
- defineSlots();
102
+ const slots = defineSlots();
76
103
  const model = defineModel({ type: [String, Number] });
77
104
  const baseId = useId();
78
105
  const list = useTemplateRef("list");
@@ -86,6 +113,9 @@ const selectedIndex = computed(
86
113
  )
87
114
  );
88
115
  const focusIndex = ref(selectedIndex.value);
116
+ const singlePanel = computed(() => Boolean(slots.panel));
117
+ const singlePanelId = `${baseId}-panel`;
118
+ const activeItem = computed(() => props.items[selectedIndex.value]);
89
119
  const visited = ref(/* @__PURE__ */ new Set());
90
120
  const indicator = ref(null);
91
121
  const indicatorReady = computed(() => indicator.value !== null);
@@ -7,6 +7,9 @@ type __VLS_Slots = {
7
7
  default?: (props: {
8
8
  item: TabItem;
9
9
  }) => unknown;
10
+ panel?: (props: {
11
+ item: TabItem;
12
+ }) => unknown;
10
13
  };
11
14
  declare const __VLS_base: import("vue").DefineComponent<{
12
15
  items: TabItem[];
@@ -16,6 +19,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
16
19
  activation?: TabsActivation;
17
20
  lazy?: boolean;
18
21
  fill?: boolean;
22
+ stretch?: boolean;
23
+ inset?: boolean;
19
24
  panelFocusable?: boolean;
20
25
  modelValue?: TabItem["value"];
21
26
  key?: PropertyKey | undefined;
@@ -24,7 +29,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
24
29
  style?: import("vue").StyleValue;
25
30
  results?: (string | number) | undefined;
26
31
  placeholder?: string | undefined | undefined;
27
- ref?: import("vue").VNodeRef | undefined;
28
32
  class?: import("vue").ClassValue;
29
33
  role?: string | undefined | undefined;
30
34
  'aria-label'?: string | undefined | undefined;
@@ -137,7 +141,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
137
141
  'aria-colindex'?: (string | number) | undefined;
138
142
  'aria-colspan'?: (string | number) | undefined;
139
143
  'aria-controls'?: string | undefined | undefined;
140
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
144
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
141
145
  'aria-describedby'?: string | undefined | undefined;
142
146
  'aria-details'?: string | undefined | undefined;
143
147
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -174,6 +178,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
174
178
  'aria-valuemin'?: (string | number) | undefined;
175
179
  'aria-valuenow'?: (string | number) | undefined;
176
180
  'aria-valuetext'?: string | undefined | undefined;
181
+ ref?: import("vue").VNodeRef | undefined;
177
182
  ref_for?: boolean | undefined | undefined;
178
183
  ref_key?: string | undefined | undefined;
179
184
  accesskey?: string | undefined | undefined;
@@ -220,6 +225,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
220
225
  activation?: TabsActivation;
221
226
  lazy?: boolean;
222
227
  fill?: boolean;
228
+ stretch?: boolean;
229
+ inset?: boolean;
223
230
  panelFocusable?: boolean;
224
231
  modelValue?: TabItem["value"];
225
232
  key?: PropertyKey | undefined;
@@ -228,7 +235,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
228
235
  style?: import("vue").StyleValue;
229
236
  results?: (string | number) | undefined;
230
237
  placeholder?: string | undefined | undefined;
231
- ref?: import("vue").VNodeRef | undefined;
232
238
  class?: import("vue").ClassValue;
233
239
  role?: string | undefined | undefined;
234
240
  'aria-label'?: string | undefined | undefined;
@@ -341,7 +347,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
341
347
  'aria-colindex'?: (string | number) | undefined;
342
348
  'aria-colspan'?: (string | number) | undefined;
343
349
  'aria-controls'?: string | undefined | undefined;
344
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
350
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
345
351
  'aria-describedby'?: string | undefined | undefined;
346
352
  'aria-details'?: string | undefined | undefined;
347
353
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -378,6 +384,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
378
384
  'aria-valuemin'?: (string | number) | undefined;
379
385
  'aria-valuenow'?: (string | number) | undefined;
380
386
  'aria-valuetext'?: string | undefined | undefined;
387
+ ref?: import("vue").VNodeRef | undefined;
381
388
  ref_for?: boolean | undefined | undefined;
382
389
  ref_key?: string | undefined | undefined;
383
390
  accesskey?: string | undefined | undefined;
@@ -76,7 +76,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
76
76
  'aria-colindex'?: (string | number) | undefined;
77
77
  'aria-colspan'?: (string | number) | undefined;
78
78
  'aria-controls'?: string | undefined | undefined;
79
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
79
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
80
80
  'aria-describedby'?: string | undefined | undefined;
81
81
  'aria-details'?: string | undefined | undefined;
82
82
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -308,7 +308,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
308
308
  'aria-colindex'?: (string | number) | undefined;
309
309
  'aria-colspan'?: (string | number) | undefined;
310
310
  'aria-controls'?: string | undefined | undefined;
311
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
311
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
312
312
  'aria-describedby'?: string | undefined | undefined;
313
313
  'aria-details'?: string | undefined | undefined;
314
314
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -62,7 +62,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
62
62
  'aria-colindex'?: (string | number) | undefined;
63
63
  'aria-colspan'?: (string | number) | undefined;
64
64
  'aria-controls'?: string | undefined | undefined;
65
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
65
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
66
66
  'aria-describedby'?: string | undefined | undefined;
67
67
  'aria-details'?: string | undefined | undefined;
68
68
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -259,7 +259,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
259
259
  'aria-colindex'?: (string | number) | undefined;
260
260
  'aria-colspan'?: (string | number) | undefined;
261
261
  'aria-controls'?: string | undefined | undefined;
262
- 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
262
+ 'aria-current'?: "page" | "time" | (boolean | "true" | "false") | "step" | "location" | "date" | undefined;
263
263
  'aria-describedby'?: string | undefined | undefined;
264
264
  'aria-details'?: string | undefined | undefined;
265
265
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -1,5 +1,5 @@
1
1
  import type { IconName } from '../../composables/useIcons';
2
- import type { LinkTarget } from '../core/types';
2
+ import type { LinkTarget, Tone } from '../core/types';
3
3
  export type LayoutGap = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
4
4
  export type LayoutAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline';
5
5
  export type LayoutJustify = 'start' | 'center' | 'end' | 'between' | 'around';
@@ -15,6 +15,8 @@ export interface BreadcrumbItem {
15
15
  to?: LinkTarget;
16
16
  href?: string;
17
17
  icon?: IconName;
18
+ attrs?: Record<string, unknown>;
19
+ onClick?: (event: MouseEvent) => void;
18
20
  }
19
21
  export type CardPadding = 'none' | 'sm' | 'md' | 'lg';
20
22
  export type CardVariant = 'raised' | 'outline' | 'subtle';
@@ -23,6 +25,8 @@ export interface TabItem {
23
25
  label: string;
24
26
  icon?: IconName;
25
27
  badge?: string | number;
28
+ badgeTone?: Tone;
29
+ badgeLabel?: string;
26
30
  disabled?: boolean;
27
31
  }
28
32
  export type TabsVariant = 'segmented' | 'underline';
@@ -30,10 +34,13 @@ export type TabsActivation = 'automatic' | 'manual';
30
34
  export interface AccordionItem {
31
35
  value?: string | number;
32
36
  title: string;
37
+ description?: string;
33
38
  content?: string;
34
39
  icon?: IconName;
35
40
  disabled?: boolean;
36
41
  }
42
+ export type AccordionVariant = 'separated' | 'plain' | 'card' | 'outline';
43
+ export type AccordionContentVariant = 'text' | 'neutral';
37
44
  export type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
38
45
  export interface AppShellContext {
39
46
  collapsed: Readonly<{
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <button
2
+ <ButtonElement
3
3
  v-if="trigger"
4
4
  v-bind="$attrs"
5
5
  type="button"
@@ -14,7 +14,7 @@
14
14
  <span v-if="shortcut" class="k-command-trigger-keys" aria-hidden="true">
15
15
  <Kbd v-for="(key, index) in shortcutKeys" :key="index" size="sm">{{ key }}</Kbd>
16
16
  </span>
17
- </button>
17
+ </ButtonElement>
18
18
  <dialog
19
19
  ref="dialogRef"
20
20
  class="k-modal k-command"
@@ -65,15 +65,28 @@
65
65
  v-for="(group, groupIndex) in rendered"
66
66
  :key="group.key"
67
67
  role="group"
68
- :aria-labelledby="group.label ? `${listId}-group-${groupIndex}` : void 0"
68
+ :aria-labelledby="
69
+ group.label || $slots['group-label'] ? `${listId}-group-${groupIndex}` : void 0
70
+ "
69
71
  class="k-command-group"
70
72
  >
71
73
  <div
72
- v-if="group.label"
74
+ v-if="group.label || $slots['group-label']"
73
75
  :id="`${listId}-group-${groupIndex}`"
74
76
  class="k-command-group-label"
75
77
  >
76
- {{ group.label }}
78
+ <slot
79
+ name="group-label"
80
+ :group="group.source"
81
+ :label="group.label"
82
+ :description="group.description"
83
+ :recent="group.recent"
84
+ >
85
+ <span class="k-command-group-title">{{ group.label }}</span>
86
+ <span v-if="group.description" class="k-command-group-description">
87
+ {{ group.description }}
88
+ </span>
89
+ </slot>
77
90
  </div>
78
91
  <div
79
92
  v-for="entry in group.items"
@@ -115,6 +128,9 @@
115
128
  </div>
116
129
  </div>
117
130
  </div>
131
+ <div v-if="flat.length && (notice || $slots['after-results'])" class="k-command-notice">
132
+ <slot name="after-results" :query="query" :count="flat.length">{{ notice }}</slot>
133
+ </div>
118
134
  </div>
119
135
  <div class="k-command-footer" aria-hidden="true">
120
136
  <span><Kbd size="sm">↑</Kbd><Kbd size="sm">↓</Kbd> {{ moveText }}</span>
@@ -136,10 +152,13 @@ import { useAsyncSearch } from "../../internal/core/search";
136
152
  import { matchesSearch } from "../../internal/core/text";
137
153
  import { readStorageJson, writeStorageJson } from "../../internal/core/storage";
138
154
  import { useRouterLike } from "../../internal/layout/route";
155
+ import { ButtonElement } from "../../internal/core/ButtonElement";
139
156
  import Icon from "../core/Icon.vue";
140
157
  import Kbd from "../core/Kbd.vue";
141
158
  import Spinner from "../core/Spinner.vue";
159
+ import { provideFieldBoundary } from "../../composables/useFieldBoundary";
142
160
  defineOptions({ inheritAttrs: false });
161
+ provideFieldBoundary();
143
162
  const props = defineProps({
144
163
  groups: { type: Array, required: false, default: () => [] },
145
164
  search: { type: Function, required: false },
@@ -155,21 +174,26 @@ const props = defineProps({
155
174
  recentKey: { type: String, required: false },
156
175
  recentLimit: { type: Number, required: false, default: 5 },
157
176
  recentLabel: { type: String, required: false },
158
- emptyText: { type: String, required: false },
177
+ emptyText: { type: [String, Function], required: false },
159
178
  minQueryText: { type: String, required: false },
160
179
  errorText: { type: String, required: false },
161
180
  loadingText: { type: String, required: false },
162
181
  resultsText: { type: Function, required: false },
163
182
  footerMove: { type: String, required: false },
164
183
  footerSelect: { type: String, required: false },
165
- footerClose: { type: String, required: false }
184
+ footerClose: { type: String, required: false },
185
+ notice: { type: String, required: false }
166
186
  });
167
187
  const { t } = useLocale();
168
188
  const placeholderText = computed(() => props.placeholder ?? t("commandPalette.placeholder"));
169
189
  const labelText = computed(() => props.label ?? t("commandPalette.label"));
170
190
  const triggerText = computed(() => props.triggerLabel ?? t("common.search"));
171
191
  const recentText = computed(() => props.recentLabel ?? t("commandPalette.recent"));
172
- const emptyLabel = computed(() => props.emptyText ?? t("common.noResults"));
192
+ const emptyLabel = computed(() => {
193
+ const text = props.emptyText;
194
+ if (typeof text === "function") return text(term.value);
195
+ return text ?? t("common.noResults");
196
+ });
173
197
  const minQueryLabel = computed(() => props.minQueryText ?? t("commandPalette.minQuery"));
174
198
  const errorLabel = computed(() => props.errorText ?? t("commandPalette.error"));
175
199
  const loadingLabel = computed(() => props.loadingText ?? t("common.loading"));
@@ -177,6 +201,7 @@ const moveText = computed(() => props.footerMove ?? t("commandPalette.move"));
177
201
  const selectText = computed(() => props.footerSelect ?? t("commandPalette.select"));
178
202
  const closeText = computed(() => props.footerClose ?? t("commandPalette.close"));
179
203
  const emit = defineEmits(["select", "open", "close"]);
204
+ defineSlots();
180
205
  const open = defineModel("open", { type: Boolean, ...{ default: false } });
181
206
  const query = defineModel("query", { type: String, ...{ default: "" } });
182
207
  const baseId = useId();
@@ -228,6 +253,8 @@ const rendered = computed(() => {
228
253
  list.push({
229
254
  key: `group-${group.id}`,
230
255
  label: group.label,
256
+ description: group.description,
257
+ source: group,
231
258
  recent: false,
232
259
  items: group.items.map((item) => ({
233
260
  key: `${group.id}-${item.id}`,