@xleddyl/443-components-vue 0.8.1 → 0.8.3

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 (164) hide show
  1. package/README.md +52 -4
  2. package/dist/chart/BarChart.vue +33 -22
  3. package/dist/chart/BarChart.vue.d.ts +4 -0
  4. package/dist/chart/chart.css +2 -2
  5. package/dist/chart/useChartColors.mjs +8 -8
  6. package/dist/components/core/Button.vue.d.ts +1 -1
  7. package/dist/components/core/FormField.vue +5 -0
  8. package/dist/components/core/FormField.vue.d.ts +4 -0
  9. package/dist/components/core/Input.vue +59 -5
  10. package/dist/components/core/Input.vue.d.ts +9 -5
  11. package/dist/components/core/Textarea.vue +28 -3
  12. package/dist/components/core/Textarea.vue.d.ts +7 -5
  13. package/dist/components/core/types.d.ts +1 -1
  14. package/dist/components/data/Badge.vue.d.ts +1 -1
  15. package/dist/components/data/DescriptionList.vue.d.ts +1 -1
  16. package/dist/components/data/FilterPills.vue +43 -4
  17. package/dist/components/data/FilterPills.vue.d.ts +4 -1
  18. package/dist/components/data/Pagination.vue +63 -2
  19. package/dist/components/data/Pagination.vue.d.ts +12 -0
  20. package/dist/components/data/Tag.vue.d.ts +1 -1
  21. package/dist/components/data/Tree.vue.d.ts +1 -1
  22. package/dist/components/data/types.d.ts +1 -0
  23. package/dist/components/feedback/Meter.vue.d.ts +1 -1
  24. package/dist/components/feedback/Progress.vue.d.ts +1 -1
  25. package/dist/components/feedback/ProgressRing.vue.d.ts +1 -1
  26. package/dist/components/forms/Calendar.vue +31 -7
  27. package/dist/components/forms/Calendar.vue.d.ts +13 -2
  28. package/dist/components/forms/CheckboxGroup.vue +7 -1
  29. package/dist/components/forms/CheckboxGroup.vue.d.ts +1 -0
  30. package/dist/components/forms/ColorInput.vue.d.ts +5 -5
  31. package/dist/components/forms/Combobox.vue +4 -3
  32. package/dist/components/forms/Combobox.vue.d.ts +1 -0
  33. package/dist/components/forms/DateInput.vue.d.ts +10 -6
  34. package/dist/components/forms/DatePicker.vue.d.ts +1 -1
  35. package/dist/components/forms/FileInput.vue.d.ts +1 -1
  36. package/dist/components/forms/NumberInput.vue.d.ts +5 -5
  37. package/dist/components/forms/PasswordInput.vue.d.ts +9 -5
  38. package/dist/components/forms/PinInput.vue.d.ts +5 -5
  39. package/dist/components/forms/Select.vue +21 -2
  40. package/dist/components/forms/Select.vue.d.ts +4 -4
  41. package/dist/components/forms/Slider.vue.d.ts +5 -5
  42. package/dist/components/forms/Switch.vue.d.ts +1 -1
  43. package/dist/components/forms/TimeInput.vue.d.ts +9 -5
  44. package/dist/components/layout/AppShell.vue +4 -2
  45. package/dist/components/layout/AppShell.vue.d.ts +2 -0
  46. package/dist/components/layout/Card.vue.d.ts +1 -1
  47. package/dist/components/layout/CopyButton.vue.d.ts +1 -1
  48. package/dist/components/layout/PageHeader.vue +15 -3
  49. package/dist/components/layout/PageHeader.vue.d.ts +5 -0
  50. package/dist/components/layout/Separator.vue +17 -4
  51. package/dist/components/layout/Separator.vue.d.ts +7 -1
  52. package/dist/components/layout/Tabs.vue +10 -0
  53. package/dist/components/layout/types.d.ts +3 -0
  54. package/dist/components/overlays/ConfirmDialog.vue.d.ts +8 -4
  55. package/dist/components/overlays/ConfirmHost.vue.d.ts +8 -4
  56. package/dist/components/overlays/ContextMenu.vue.d.ts +4 -2
  57. package/dist/components/overlays/DropdownMenu.vue +5 -1
  58. package/dist/components/overlays/DropdownMenu.vue.d.ts +8 -2
  59. package/dist/components/overlays/Modal.vue +9 -2
  60. package/dist/components/overlays/Modal.vue.d.ts +4 -0
  61. package/dist/components/overlays/types.d.ts +2 -2
  62. package/dist/components/templates/DashboardLayout.vue +2 -0
  63. package/dist/components/templates/DashboardLayout.vue.d.ts +2 -0
  64. package/dist/components/templates/SettingsModal.vue.d.ts +8 -4
  65. package/dist/components/templates/types.d.ts +1 -0
  66. package/dist/composables/useForm.d.ts +24 -2
  67. package/dist/composables/useForm.mjs +51 -8
  68. package/dist/composables/useOverlay.d.ts +1 -1
  69. package/dist/editor/RichTextEditor.vue +108 -10
  70. package/dist/editor/RichTextEditor.vue.d.ts +5 -2
  71. package/dist/editor/rich-text-editor.css +31 -4
  72. package/dist/editor/types.d.ts +2 -1
  73. package/dist/grid/DataGrid.vue +106 -24
  74. package/dist/grid/DataGrid.vue.d.ts +14 -2
  75. package/dist/grid/cells/DateCell.vue +18 -3
  76. package/dist/grid/cells/ImageCell.vue +6 -1
  77. package/dist/grid/data-grid.css +17 -3
  78. package/dist/grid/index.d.ts +2 -1
  79. package/dist/grid/index.mjs +6 -1
  80. package/dist/grid/modules.d.ts +2 -0
  81. package/dist/grid/modules.mjs +32 -0
  82. package/dist/grid/theme.mjs +5 -5
  83. package/dist/grid/types.d.ts +4 -0
  84. package/dist/icons/builtin.d.ts +3 -0
  85. package/dist/icons/builtin.mjs +3 -0
  86. package/dist/index.d.ts +1 -1
  87. package/dist/index.mjs +1 -0
  88. package/dist/internal/core/intl.d.ts +2 -0
  89. package/dist/internal/core/intl.mjs +17 -0
  90. package/dist/internal/forms/counter.d.ts +18 -0
  91. package/dist/internal/forms/counter.mjs +31 -0
  92. package/dist/internal/keys.d.ts +2 -1
  93. package/dist/internal/keys.mjs +1 -0
  94. package/dist/internal/overlays/MenuList.vue +4 -2
  95. package/dist/internal/overlays/MenuList.vue.d.ts +2 -0
  96. package/dist/internal/overlays/OverlayView.vue.d.ts +8 -4
  97. package/dist/locale/de.mjs +21 -3
  98. package/dist/locale/en.mjs +21 -3
  99. package/dist/locale/it.mjs +21 -3
  100. package/dist/locale/types.d.ts +18 -0
  101. package/dist/nuxt/runtime/layouts/dashboard.vue +1 -0
  102. package/dist/styles/base.css +2 -1
  103. package/dist/styles/core/button.css +42 -16
  104. package/dist/styles/core/form-field.css +7 -1
  105. package/dist/styles/core/input.css +31 -2
  106. package/dist/styles/core/kbd.css +1 -1
  107. package/dist/styles/core/textarea.css +10 -0
  108. package/dist/styles/data/avatar.css +1 -1
  109. package/dist/styles/data/badge.css +39 -23
  110. package/dist/styles/data/description-list.css +2 -2
  111. package/dist/styles/data/filter-pills.css +24 -3
  112. package/dist/styles/data/pagination.css +26 -3
  113. package/dist/styles/data/selection-bar.css +1 -1
  114. package/dist/styles/data/stat.css +4 -4
  115. package/dist/styles/data/table.css +4 -4
  116. package/dist/styles/data/tag.css +1 -1
  117. package/dist/styles/data/timeline.css +1 -1
  118. package/dist/styles/data/tree.css +2 -2
  119. package/dist/styles/feedback/empty-state.css +1 -1
  120. package/dist/styles/feedback/loading-host.css +1 -1
  121. package/dist/styles/feedback/loading-overlay.css +1 -1
  122. package/dist/styles/feedback/meter.css +1 -1
  123. package/dist/styles/feedback/progress.css +2 -2
  124. package/dist/styles/forced-colors.css +6 -1
  125. package/dist/styles/forms/calendar.css +30 -3
  126. package/dist/styles/forms/checkbox.css +1 -1
  127. package/dist/styles/forms/choice.css +7 -1
  128. package/dist/styles/forms/combobox.css +2 -2
  129. package/dist/styles/forms/file-input.css +1 -1
  130. package/dist/styles/forms/password-input.css +1 -1
  131. package/dist/styles/forms/pin-input.css +1 -1
  132. package/dist/styles/forms/radio.css +1 -1
  133. package/dist/styles/forms/segmented.css +2 -2
  134. package/dist/styles/forms/select.css +2 -2
  135. package/dist/styles/forms/slider.css +1 -1
  136. package/dist/styles/forms/switch.css +4 -4
  137. package/dist/styles/layout/accordion.css +2 -2
  138. package/dist/styles/layout/app-shell.css +18 -6
  139. package/dist/styles/layout/breadcrumbs.css +3 -3
  140. package/dist/styles/layout/card.css +1 -1
  141. package/dist/styles/layout/nav-link.css +1 -1
  142. package/dist/styles/layout/page-header.css +21 -1
  143. package/dist/styles/layout/separator.css +21 -1
  144. package/dist/styles/layout/sidebar.css +1 -1
  145. package/dist/styles/layout/tabs.css +30 -1
  146. package/dist/styles/layout/theme-switch.css +1 -1
  147. package/dist/styles/overlays/command.css +3 -3
  148. package/dist/styles/overlays/drawer.css +4 -3
  149. package/dist/styles/overlays/floating.css +2 -2
  150. package/dist/styles/overlays/menu.css +5 -1
  151. package/dist/styles/overlays/modal.css +12 -9
  152. package/dist/styles/overlays/toast.css +3 -3
  153. package/dist/styles/overlays/tooltip.css +26 -8
  154. package/dist/styles/shared.css +2 -2
  155. package/dist/styles/templates/account-menu.css +1 -1
  156. package/dist/styles/templates/auth-layout.css +4 -4
  157. package/dist/styles/templates/brand.css +2 -2
  158. package/dist/styles/templates/dashboard-page.css +1 -1
  159. package/dist/styles/templates/empty-page.css +3 -3
  160. package/dist/styles/templates/error-page.css +1 -1
  161. package/dist/styles/templates/save-bar.css +1 -1
  162. package/dist/styles/templates/settings-modal.css +6 -6
  163. package/dist/styles/utilities.css +3 -3
  164. package/package.json +1 -1
@@ -462,8 +462,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
462
462
  }> & Readonly<{
463
463
  "onUpdate:modelValue"?: ((value: string | CalendarRange | null | undefined) => any) | undefined;
464
464
  }>, {
465
- invalid: boolean;
466
465
  size: FieldSize;
466
+ invalid: boolean;
467
467
  format: Intl.DateTimeFormatOptions;
468
468
  closeOnSelect: boolean;
469
469
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -497,9 +497,9 @@ declare const __VLS_base: import("vue").DefineComponent<{
497
497
  onReject?: ((events: FileInvalidEvent[], detail: FileAddDetail) => any) | undefined;
498
498
  }>, {
499
499
  icon: IconName;
500
+ size: FieldSize;
500
501
  invalid: boolean;
501
502
  list: boolean;
502
- size: FieldSize;
503
503
  acceptMode: FileInputAcceptMode;
504
504
  previews: boolean;
505
505
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -230,13 +230,13 @@ declare const __VLS_export: import("vue").DefineComponent<{
230
230
  popovertarget?: string | undefined;
231
231
  popovertargetaction?: import("../../index.ts").PopoverTargetAction | undefined;
232
232
  autocomplete?: import("vue").InputAutoCompleteAttribute | undefined;
233
+ maxlength?: (string | number) | undefined;
234
+ multiple?: (boolean | "true" | "false") | undefined;
233
235
  accept?: string | undefined | undefined;
234
236
  alt?: string | undefined | undefined;
235
237
  capture?: boolean | "user" | "environment" | undefined | undefined;
236
238
  crossorigin?: string | undefined | undefined;
237
- maxlength?: (string | number) | undefined;
238
239
  minlength?: (string | number) | undefined;
239
- multiple?: (boolean | "true" | "false") | undefined;
240
240
  src?: string | undefined | undefined;
241
241
  onCancel?: ((payload: Event) => void) | undefined;
242
242
  }, {
@@ -474,20 +474,20 @@ declare const __VLS_export: import("vue").DefineComponent<{
474
474
  popovertarget?: string | undefined;
475
475
  popovertargetaction?: import("../../index.ts").PopoverTargetAction | undefined;
476
476
  autocomplete?: import("vue").InputAutoCompleteAttribute | undefined;
477
+ maxlength?: (string | number) | undefined;
478
+ multiple?: (boolean | "true" | "false") | undefined;
477
479
  accept?: string | undefined | undefined;
478
480
  alt?: string | undefined | undefined;
479
481
  capture?: boolean | "user" | "environment" | undefined | undefined;
480
482
  crossorigin?: string | undefined | undefined;
481
- maxlength?: (string | number) | undefined;
482
483
  minlength?: (string | number) | undefined;
483
- multiple?: (boolean | "true" | "false") | undefined;
484
484
  src?: string | undefined | undefined;
485
485
  onCancel?: ((payload: Event) => void) | undefined;
486
486
  }> & Readonly<{
487
487
  "onUpdate:modelValue"?: ((value: number | null | undefined) => any) | undefined;
488
488
  }>, {
489
- invalid: boolean;
490
489
  size: FieldSize;
490
+ invalid: boolean;
491
491
  step: number;
492
492
  align: "end" | "start";
493
493
  stepper: boolean;
@@ -142,6 +142,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
142
142
  type?: string | undefined;
143
143
  width?: (string | number) | undefined;
144
144
  tabindex?: (string | number) | undefined;
145
+ transform?: (value: string) => string;
145
146
  'aria-activedescendant'?: string | undefined;
146
147
  'aria-atomic'?: (boolean | "true" | "false") | undefined;
147
148
  'aria-autocomplete'?: "none" | "inline" | "list" | "both" | undefined;
@@ -240,17 +241,18 @@ declare const __VLS_export: import("vue").DefineComponent<{
240
241
  onVnodeUpdated?: (((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[]) | undefined;
241
242
  onVnodeBeforeUnmount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
242
243
  onVnodeUnmounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
244
+ maxlength?: (string | number) | undefined;
243
245
  clearable?: boolean;
244
246
  clearLabel?: string;
245
247
  noAutofill?: boolean;
248
+ counter?: boolean;
246
249
  onClear?: (() => any) | undefined;
250
+ multiple?: (boolean | "true" | "false") | undefined;
247
251
  accept?: string | undefined;
248
252
  alt?: string | undefined;
249
253
  capture?: boolean | "user" | "environment" | undefined;
250
254
  crossorigin?: string | undefined;
251
- maxlength?: (string | number) | undefined;
252
255
  minlength?: (string | number) | undefined;
253
- multiple?: (boolean | "true" | "false") | undefined;
254
256
  src?: string | undefined;
255
257
  onCancel?: ((payload: Event) => void) | undefined;
256
258
  modelModifiers?: Partial<Record<"number" | "trim", true>>;
@@ -401,6 +403,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
401
403
  type?: string | undefined;
402
404
  width?: (string | number) | undefined;
403
405
  tabindex?: (string | number) | undefined;
406
+ transform?: (value: string) => string;
404
407
  'aria-activedescendant'?: string | undefined;
405
408
  'aria-atomic'?: (boolean | "true" | "false") | undefined;
406
409
  'aria-autocomplete'?: "none" | "inline" | "list" | "both" | undefined;
@@ -499,17 +502,18 @@ declare const __VLS_export: import("vue").DefineComponent<{
499
502
  onVnodeUpdated?: (((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[]) | undefined;
500
503
  onVnodeBeforeUnmount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
501
504
  onVnodeUnmounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
505
+ maxlength?: (string | number) | undefined;
502
506
  clearable?: boolean;
503
507
  clearLabel?: string;
504
508
  noAutofill?: boolean;
509
+ counter?: boolean;
505
510
  onClear?: (() => any) | undefined;
511
+ multiple?: (boolean | "true" | "false") | undefined;
506
512
  accept?: string | undefined;
507
513
  alt?: string | undefined;
508
514
  capture?: boolean | "user" | "environment" | undefined;
509
515
  crossorigin?: string | undefined;
510
- maxlength?: (string | number) | undefined;
511
516
  minlength?: (string | number) | undefined;
512
- multiple?: (boolean | "true" | "false") | undefined;
513
517
  src?: string | undefined;
514
518
  onCancel?: ((payload: Event) => void) | undefined;
515
519
  modelModifiers?: Partial<Record<"number" | "trim", true>>;
@@ -517,9 +521,9 @@ declare const __VLS_export: import("vue").DefineComponent<{
517
521
  onGenerate?: ((password: string) => any) | undefined;
518
522
  "onUpdate:modelValue"?: ((value: string | null | undefined) => any) | undefined;
519
523
  }>, {
524
+ size: FieldSize;
520
525
  minLength: number;
521
526
  invalid: boolean;
522
- size: FieldSize;
523
527
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
524
528
  declare const _default: typeof __VLS_export;
525
529
  export default _default;
@@ -229,13 +229,13 @@ declare const __VLS_export: import("vue").DefineComponent<{
229
229
  formtarget?: string | undefined | undefined;
230
230
  popovertarget?: string | undefined;
231
231
  popovertargetaction?: import("../..").PopoverTargetAction | undefined;
232
+ maxlength?: (string | number) | undefined;
233
+ multiple?: (boolean | "true" | "false") | undefined;
232
234
  accept?: string | undefined | undefined;
233
235
  alt?: string | undefined | undefined;
234
236
  capture?: boolean | "user" | "environment" | undefined | undefined;
235
237
  crossorigin?: string | undefined | undefined;
236
- maxlength?: (string | number) | undefined;
237
238
  minlength?: (string | number) | undefined;
238
- multiple?: (boolean | "true" | "false") | undefined;
239
239
  src?: string | undefined | undefined;
240
240
  onCancel?: ((payload: Event) => void) | undefined;
241
241
  }, {
@@ -474,13 +474,13 @@ declare const __VLS_export: import("vue").DefineComponent<{
474
474
  formtarget?: string | undefined | undefined;
475
475
  popovertarget?: string | undefined;
476
476
  popovertargetaction?: import("../..").PopoverTargetAction | undefined;
477
+ maxlength?: (string | number) | undefined;
478
+ multiple?: (boolean | "true" | "false") | undefined;
477
479
  accept?: string | undefined | undefined;
478
480
  alt?: string | undefined | undefined;
479
481
  capture?: boolean | "user" | "environment" | undefined | undefined;
480
482
  crossorigin?: string | undefined | undefined;
481
- maxlength?: (string | number) | undefined;
482
483
  minlength?: (string | number) | undefined;
483
- multiple?: (boolean | "true" | "false") | undefined;
484
484
  src?: string | undefined | undefined;
485
485
  onCancel?: ((payload: Event) => void) | undefined;
486
486
  }> & Readonly<{
@@ -488,8 +488,8 @@ declare const __VLS_export: import("vue").DefineComponent<{
488
488
  onComplete?: ((value: string) => any) | undefined;
489
489
  }>, {
490
490
  length: number;
491
- invalid: boolean;
492
491
  size: FieldSize;
492
+ invalid: boolean;
493
493
  mode: PinInputMode;
494
494
  autocomplete: string;
495
495
  maskChar: string;
@@ -41,6 +41,7 @@
41
41
  v-for="option in entry.options"
42
42
  :key="keyOf(option.value)"
43
43
  :value="keyOf(option.value)"
44
+ :data-k-option="indexOf(option)"
44
45
  :disabled="option.disabled"
45
46
  :selected="isSelected(option.value)"
46
47
  >
@@ -50,6 +51,7 @@
50
51
  <option
51
52
  v-else
52
53
  :value="keyOf(entry.value)"
54
+ :data-k-option="indexOf(entry)"
53
55
  :disabled="entry.disabled"
54
56
  :selected="isSelected(entry.value)"
55
57
  >
@@ -89,8 +91,12 @@ const control = useFieldControl({
89
91
  const flatOptions = computed(
90
92
  () => props.options.flatMap((entry) => isGroup(entry) ? entry.options : [entry])
91
93
  );
94
+ const optionIndex = computed(
95
+ () => new Map(flatOptions.value.map((option, index) => [option, index]))
96
+ );
97
+ const hasEmptyOption = computed(() => flatOptions.value.some((option) => option.value === ""));
92
98
  const isEmpty = computed(
93
- () => model.value === null || model.value === void 0 || model.value === ""
99
+ () => model.value === null || model.value === void 0 || model.value === "" && !hasEmptyOption.value
94
100
  );
95
101
  function isGroup(entry) {
96
102
  return "options" in entry && Array.isArray(entry.options);
@@ -101,8 +107,21 @@ function keyOf(value) {
101
107
  function isSelected(value) {
102
108
  return !isEmpty.value && keyOf(value) === keyOf(model.value);
103
109
  }
110
+ function indexOf(option) {
111
+ return optionIndex.value.get(option);
112
+ }
104
113
  function onChange(event) {
105
- const raw = event.target.value;
114
+ const select = event.target;
115
+ const chosen = select.selectedOptions[0];
116
+ const index = chosen?.dataset.kOption;
117
+ if (index !== void 0) {
118
+ const match2 = flatOptions.value[Number(index)];
119
+ if (match2) {
120
+ model.value = match2.value;
121
+ return;
122
+ }
123
+ }
124
+ const raw = select.value;
106
125
  if (raw === "" && props.placeholder !== void 0) {
107
126
  model.value = null;
108
127
  return;
@@ -1,7 +1,7 @@
1
1
  import type { IconName } from '../../composables/useIcons';
2
2
  import type { FieldSize } from '../core/types';
3
3
  import type { SelectOption, SelectOptionGroup } from './types';
4
- declare const __VLS_export: <T extends string | number>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
4
+ declare const __VLS_export: <T extends string | number | boolean>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
5
5
  props: import("vue").PublicProps & __VLS_PrettifyLocal<({
6
6
  options?: (SelectOption<T> | SelectOptionGroup<T>)[];
7
7
  placeholder?: string;
@@ -13,9 +13,9 @@ declare const __VLS_export: <T extends string | number>(__VLS_props: NonNullable
13
13
  class?: unknown;
14
14
  style?: unknown;
15
15
  } & {
16
- modelValue?: T | string | null | undefined;
16
+ modelValue?: T | null | undefined;
17
17
  }) & {
18
- "onUpdate:modelValue"?: ((value: string | T | null | undefined) => any) | undefined;
18
+ "onUpdate:modelValue"?: ((value: T | null | undefined) => any) | undefined;
19
19
  } & Partial<import("vue").SelectHTMLAttributes & import("vue").ReservedProps>> & (typeof globalThis extends {
20
20
  __VLS_PROPS_FALLBACK: infer P;
21
21
  } ? P : {});
@@ -27,7 +27,7 @@ declare const __VLS_export: <T extends string | number>(__VLS_props: NonNullable
27
27
  slots: {
28
28
  default?: (props: {}) => any;
29
29
  };
30
- emit: (event: "update:modelValue", value: string | T | null | undefined) => void;
30
+ emit: (event: "update:modelValue", value: T | null | undefined) => void;
31
31
  }>) => import("vue").VNode & {
32
32
  __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
33
33
  };
@@ -224,13 +224,13 @@ declare const __VLS_export: import("vue").DefineComponent<{
224
224
  popovertarget?: string | undefined;
225
225
  popovertargetaction?: import("../..").PopoverTargetAction | undefined;
226
226
  autocomplete?: import("vue").InputAutoCompleteAttribute | undefined;
227
+ maxlength?: (string | number) | undefined;
228
+ multiple?: (boolean | "true" | "false") | undefined;
227
229
  accept?: string | undefined | undefined;
228
230
  alt?: string | undefined | undefined;
229
231
  capture?: boolean | "user" | "environment" | undefined | undefined;
230
232
  crossorigin?: string | undefined | undefined;
231
- maxlength?: (string | number) | undefined;
232
233
  minlength?: (string | number) | undefined;
233
- multiple?: (boolean | "true" | "false") | undefined;
234
234
  src?: string | undefined | undefined;
235
235
  onCancel?: ((payload: Event) => void) | undefined;
236
236
  }, {
@@ -463,23 +463,23 @@ declare const __VLS_export: import("vue").DefineComponent<{
463
463
  popovertarget?: string | undefined;
464
464
  popovertargetaction?: import("../..").PopoverTargetAction | undefined;
465
465
  autocomplete?: import("vue").InputAutoCompleteAttribute | undefined;
466
+ maxlength?: (string | number) | undefined;
467
+ multiple?: (boolean | "true" | "false") | undefined;
466
468
  accept?: string | undefined | undefined;
467
469
  alt?: string | undefined | undefined;
468
470
  capture?: boolean | "user" | "environment" | undefined | undefined;
469
471
  crossorigin?: string | undefined | undefined;
470
- maxlength?: (string | number) | undefined;
471
472
  minlength?: (string | number) | undefined;
472
- multiple?: (boolean | "true" | "false") | undefined;
473
473
  src?: string | undefined | undefined;
474
474
  onCancel?: ((payload: Event) => void) | undefined;
475
475
  }> & Readonly<{
476
476
  onChange?: ((value: number) => any) | undefined;
477
477
  "onUpdate:modelValue"?: ((value: number | null | undefined) => any) | undefined;
478
478
  }>, {
479
+ size: FieldSize;
479
480
  min: number;
480
481
  max: number;
481
482
  invalid: boolean;
482
- size: FieldSize;
483
483
  format: (value: number) => string;
484
484
  step: number;
485
485
  bubble: SliderBubble;
@@ -448,8 +448,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
448
448
  }> & Readonly<{
449
449
  "onUpdate:modelValue"?: ((value: boolean | null | undefined) => any) | undefined;
450
450
  }>, {
451
- invalid: boolean;
452
451
  size: FieldSize;
452
+ invalid: boolean;
453
453
  labelPosition: "end" | "start";
454
454
  nativeValue: string;
455
455
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -132,6 +132,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
132
132
  type?: string | undefined;
133
133
  width?: (string | number) | undefined;
134
134
  tabindex?: (string | number) | undefined;
135
+ transform?: (value: string) => string;
135
136
  'aria-activedescendant'?: string | undefined;
136
137
  'aria-atomic'?: (boolean | "true" | "false") | undefined;
137
138
  'aria-autocomplete'?: "none" | "inline" | "list" | "both" | undefined;
@@ -230,16 +231,17 @@ declare const __VLS_export: import("vue").DefineComponent<{
230
231
  onVnodeBeforeUnmount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
231
232
  onVnodeUnmounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
232
233
  autocomplete?: import("vue").InputAutoCompleteAttribute | undefined;
234
+ maxlength?: (string | number) | undefined;
233
235
  clearLabel?: string;
234
236
  noAutofill?: boolean;
237
+ counter?: boolean;
235
238
  onClear?: (() => any) | undefined;
239
+ multiple?: (boolean | "true" | "false") | undefined;
236
240
  accept?: string | undefined;
237
241
  alt?: string | undefined;
238
242
  capture?: boolean | "user" | "environment" | undefined;
239
243
  crossorigin?: string | undefined;
240
- maxlength?: (string | number) | undefined;
241
244
  minlength?: (string | number) | undefined;
242
- multiple?: (boolean | "true" | "false") | undefined;
243
245
  src?: string | undefined;
244
246
  onCancel?: ((payload: Event) => void) | undefined;
245
247
  modelModifiers?: Partial<Record<"number" | "trim", true>>;
@@ -378,6 +380,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
378
380
  type?: string | undefined;
379
381
  width?: (string | number) | undefined;
380
382
  tabindex?: (string | number) | undefined;
383
+ transform?: (value: string) => string;
381
384
  'aria-activedescendant'?: string | undefined;
382
385
  'aria-atomic'?: (boolean | "true" | "false") | undefined;
383
386
  'aria-autocomplete'?: "none" | "inline" | "list" | "both" | undefined;
@@ -476,24 +479,25 @@ declare const __VLS_export: import("vue").DefineComponent<{
476
479
  onVnodeBeforeUnmount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
477
480
  onVnodeUnmounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
478
481
  autocomplete?: import("vue").InputAutoCompleteAttribute | undefined;
482
+ maxlength?: (string | number) | undefined;
479
483
  clearLabel?: string;
480
484
  noAutofill?: boolean;
485
+ counter?: boolean;
481
486
  onClear?: (() => any) | undefined;
487
+ multiple?: (boolean | "true" | "false") | undefined;
482
488
  accept?: string | undefined;
483
489
  alt?: string | undefined;
484
490
  capture?: boolean | "user" | "environment" | undefined;
485
491
  crossorigin?: string | undefined;
486
- maxlength?: (string | number) | undefined;
487
492
  minlength?: (string | number) | undefined;
488
- multiple?: (boolean | "true" | "false") | undefined;
489
493
  src?: string | undefined;
490
494
  onCancel?: ((payload: Event) => void) | undefined;
491
495
  modelModifiers?: Partial<Record<"number" | "trim", true>>;
492
496
  }> & Readonly<{
493
497
  "onUpdate:modelValue"?: ((value: string | null | undefined) => any) | undefined;
494
498
  }>, {
495
- invalid: boolean;
496
499
  size: FieldSize;
500
+ invalid: boolean;
497
501
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
498
502
  declare const _default: typeof __VLS_export;
499
503
  export default _default;
@@ -7,7 +7,8 @@
7
7
  'is-collapsed': collapsed,
8
8
  'is-nav-open': open,
9
9
  'is-mobile': mobile,
10
- 'is-named': viewTransition
10
+ 'is-named': viewTransition,
11
+ 'is-fill': fill
11
12
  }"
12
13
  @keydown.esc="onEscape"
13
14
  >
@@ -61,7 +62,7 @@
61
62
  <slot name="topbar" :open-nav="openNav" :mobile="mobile" :collapsed="collapsed" />
62
63
  </header>
63
64
  <main :id="mainId" class="k-shell-main" tabindex="-1">
64
- <div class="k-shell-content" :class="{ 'is-fluid': fluid }">
65
+ <div class="k-shell-content" :class="{ 'is-fluid': fluid, 'is-fill': fill }">
65
66
  <slot />
66
67
  </div>
67
68
  </main>
@@ -96,6 +97,7 @@ const props = defineProps({
96
97
  closeLabel: { type: String, required: false },
97
98
  skipLabel: { type: String, required: false },
98
99
  fluid: { type: Boolean, required: false },
100
+ fill: { type: Boolean, required: false },
99
101
  topbar: { type: Boolean, required: false, default: void 0 },
100
102
  storageKey: { type: [String, Boolean], required: false },
101
103
  shortcut: { type: [String, Boolean], required: false, default: false },
@@ -32,6 +32,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
32
32
  closeLabel?: string;
33
33
  skipLabel?: string;
34
34
  fluid?: boolean;
35
+ fill?: boolean;
35
36
  topbar?: boolean;
36
37
  storageKey?: string | false;
37
38
  shortcut?: string | false;
@@ -245,6 +246,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
245
246
  closeLabel?: string;
246
247
  skipLabel?: string;
247
248
  fluid?: boolean;
249
+ fill?: boolean;
248
250
  topbar?: boolean;
249
251
  storageKey?: string | false;
250
252
  shortcut?: string | false;
@@ -463,8 +463,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
463
463
  selected: boolean;
464
464
  variant: CardVariant;
465
465
  as: string;
466
- level: HeadingLevel;
467
466
  padding: CardPadding;
467
+ level: HeadingLevel;
468
468
  animated: boolean;
469
469
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
470
470
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -406,8 +406,8 @@ declare const __VLS_export: import("vue").DefineComponent<{
406
406
  }> & Readonly<{
407
407
  onCopy?: ((success: boolean) => any) | undefined;
408
408
  }>, {
409
- tone: Tone;
410
409
  size: ButtonSize;
410
+ tone: Tone;
411
411
  variant: ButtonVariant;
412
412
  resetAfter: number;
413
413
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -1,5 +1,11 @@
1
1
  <template>
2
- <div class="k-page-header" :class="{ 'is-bordered': bordered }">
2
+ <div
3
+ class="k-page-header"
4
+ :class="[
5
+ `k-page-header-align-${align}`,
6
+ { 'is-bordered': bordered, 'is-truncated': truncate }
7
+ ]"
8
+ >
3
9
  <div class="k-page-header-heading">
4
10
  <slot name="breadcrumbs">
5
11
  <Breadcrumbs
@@ -18,7 +24,11 @@
18
24
  </span>
19
25
  <div class="k-page-header-text">
20
26
  <div class="k-page-header-title-line">
21
- <component :is="`h${level}`" class="k-page-header-title">
27
+ <component
28
+ :is="`h${level}`"
29
+ class="k-page-header-title"
30
+ :title="truncate ? title : void 0"
31
+ >
22
32
  <slot name="title">{{ title }}</slot>
23
33
  </component>
24
34
  <slot name="badge" />
@@ -48,6 +58,8 @@ defineProps({
48
58
  breadcrumbs: { type: Array, required: false },
49
59
  breadcrumbsAncestors: { type: Boolean, required: false },
50
60
  level: { type: Number, required: false, default: 1 },
51
- bordered: { type: Boolean, required: false }
61
+ bordered: { type: Boolean, required: false },
62
+ align: { type: String, required: false, default: "end" },
63
+ truncate: { type: Boolean, required: false }
52
64
  });
53
65
  </script>
@@ -30,6 +30,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
30
30
  breadcrumbsAncestors?: boolean;
31
31
  level?: HeadingLevel;
32
32
  bordered?: boolean;
33
+ align?: "start" | "center" | "end";
34
+ truncate?: boolean;
33
35
  innerHTML?: string | undefined | undefined;
34
36
  class?: import("vue").ClassValue;
35
37
  style?: import("vue").StyleValue;
@@ -229,6 +231,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
229
231
  breadcrumbsAncestors?: boolean;
230
232
  level?: HeadingLevel;
231
233
  bordered?: boolean;
234
+ align?: "start" | "center" | "end";
235
+ truncate?: boolean;
232
236
  innerHTML?: string | undefined | undefined;
233
237
  class?: import("vue").ClassValue;
234
238
  style?: import("vue").StyleValue;
@@ -421,6 +425,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
421
425
  ref_for?: boolean | undefined | undefined;
422
426
  ref_key?: string | undefined | undefined;
423
427
  }> & Readonly<{}>, {
428
+ align: "center" | "end" | "start";
424
429
  level: HeadingLevel;
425
430
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
426
431
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,12 +1,20 @@
1
1
  <template>
2
2
  <div
3
3
  class="k-separator"
4
- :class="[`k-separator-${orientation}`, { 'has-label': Boolean(label || $slots.default) }]"
4
+ :class="[`k-separator-${orientation}`, { 'has-label': hasContent }]"
5
5
  :role="plain ? 'none' : 'separator'"
6
6
  :aria-orientation="!plain && orientation === 'vertical' ? 'vertical' : void 0"
7
7
  >
8
- <span v-if="label || $slots.default" class="k-separator-label">
9
- <slot>{{ label }}</slot>
8
+ <span v-if="hasText" class="k-separator-text">
9
+ <span v-if="label || $slots.default" class="k-separator-label">
10
+ <slot>{{ label }}</slot>
11
+ </span>
12
+ <span v-if="description || $slots.description" class="k-separator-description">
13
+ <slot name="description">{{ description }}</slot>
14
+ </span>
15
+ </span>
16
+ <span v-if="$slots.actions" class="k-separator-actions">
17
+ <slot name="actions" />
10
18
  </span>
11
19
  </div>
12
20
  </template>
@@ -16,8 +24,13 @@ import { computed, useSlots } from "vue";
16
24
  const props = defineProps({
17
25
  orientation: { type: String, required: false, default: "horizontal" },
18
26
  label: { type: String, required: false },
27
+ description: { type: String, required: false },
19
28
  decorative: { type: Boolean, required: false }
20
29
  });
21
30
  const slots = useSlots();
22
- const plain = computed(() => props.decorative || Boolean(props.label || slots.default));
31
+ const hasText = computed(
32
+ () => Boolean(props.label || slots.default || props.description || slots.description)
33
+ );
34
+ const hasContent = computed(() => Boolean(hasText.value || slots.actions));
35
+ const plain = computed(() => props.decorative || hasContent.value);
23
36
  </script>
@@ -1,10 +1,15 @@
1
- declare var __VLS_1: {};
1
+ declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {};
2
2
  type __VLS_Slots = {} & {
3
3
  default?: (props: typeof __VLS_1) => any;
4
+ } & {
5
+ description?: (props: typeof __VLS_3) => any;
6
+ } & {
7
+ actions?: (props: typeof __VLS_5) => any;
4
8
  };
5
9
  declare const __VLS_base: import("vue").DefineComponent<{
6
10
  orientation?: "horizontal" | "vertical";
7
11
  label?: string;
12
+ description?: string;
8
13
  decorative?: boolean;
9
14
  innerHTML?: string | undefined | undefined;
10
15
  class?: import("vue").ClassValue;
@@ -201,6 +206,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
201
206
  }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
202
207
  orientation?: "horizontal" | "vertical";
203
208
  label?: string;
209
+ description?: string;
204
210
  decorative?: boolean;
205
211
  innerHTML?: string | undefined | undefined;
206
212
  class?: import("vue").ClassValue;
@@ -41,6 +41,14 @@
41
41
  >
42
42
  <span v-if="item.badgeLabel" class="k-visually-hidden">{{ item.badgeLabel }}</span>
43
43
  </template>
44
+ <template v-if="item.dot">
45
+ <span
46
+ class="k-tab-dot"
47
+ :class="`k-tab-dot-${item.dotTone ?? 'danger'}`"
48
+ aria-hidden="true"
49
+ />
50
+ <span class="k-visually-hidden">{{ item.dotLabel ?? t("tabs.dot") }}</span>
51
+ </template>
44
52
  </button>
45
53
  <span class="k-tabs-indicator" aria-hidden="true" />
46
54
  </div>
@@ -76,6 +84,7 @@
76
84
  import { computed, nextTick, onMounted, ref, useId, useTemplateRef, warn, watch } from "vue";
77
85
  import { useResizeObserver } from "../../internal/core/resize";
78
86
  import Icon from "../core/Icon.vue";
87
+ import { useLocale } from "../../composables/useLocale";
79
88
  import { rovingIndex } from "../../internal/core/roving";
80
89
  const props = defineProps({
81
90
  items: { type: Array, required: true },
@@ -89,6 +98,7 @@ const props = defineProps({
89
98
  inset: { type: Boolean, required: false },
90
99
  panelFocusable: { type: Boolean, required: false, default: true }
91
100
  });
101
+ const { t } = useLocale();
92
102
  const slots = defineSlots();
93
103
  const model = defineModel({ type: [String, Number] });
94
104
  const baseId = useId();
@@ -27,6 +27,9 @@ export interface TabItem {
27
27
  badge?: string | number;
28
28
  badgeTone?: Tone;
29
29
  badgeLabel?: string;
30
+ dot?: boolean;
31
+ dotTone?: Tone;
32
+ dotLabel?: string;
30
33
  disabled?: boolean;
31
34
  }
32
35
  export type TabsVariant = 'segmented' | 'underline';