@xleddyl/443-components-vue 0.1.0 → 0.2.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 (214) hide show
  1. package/README.md +81 -20
  2. package/dist/chart/BarChart.vue.d.ts +6 -6
  3. package/dist/chart/ChartLegend.vue.d.ts +16 -16
  4. package/dist/chart/ChartPanel.vue +10 -6
  5. package/dist/chart/ChartPanel.vue.d.ts +6 -8
  6. package/dist/chart/ChartSummary.vue.d.ts +6 -6
  7. package/dist/chart/DoughnutChart.vue.d.ts +6 -6
  8. package/dist/chart/LineChart.vue.d.ts +6 -6
  9. package/dist/components/core/Button.vue +3 -1
  10. package/dist/components/core/Button.vue.d.ts +6 -6
  11. package/dist/components/core/FormField.vue.d.ts +6 -6
  12. package/dist/components/core/Icon.vue +9 -1
  13. package/dist/components/core/Icon.vue.d.ts +4 -4
  14. package/dist/components/core/Input.vue +6 -3
  15. package/dist/components/core/Input.vue.d.ts +18 -19
  16. package/dist/components/core/Kbd.vue.d.ts +6 -6
  17. package/dist/components/core/Root.vue.d.ts +10 -10
  18. package/dist/components/core/Spinner.vue +7 -3
  19. package/dist/components/core/Spinner.vue.d.ts +6 -7
  20. package/dist/components/core/Textarea.vue +36 -23
  21. package/dist/components/core/Textarea.vue.d.ts +31 -21
  22. package/dist/components/core/VisuallyHidden.vue.d.ts +10 -10
  23. package/dist/components/data/Avatar.vue +4 -2
  24. package/dist/components/data/Avatar.vue.d.ts +6 -6
  25. package/dist/components/data/AvatarGroup.vue +5 -2
  26. package/dist/components/data/AvatarGroup.vue.d.ts +7 -8
  27. package/dist/components/data/Badge.vue.d.ts +6 -6
  28. package/dist/components/data/DescriptionList.vue +7 -3
  29. package/dist/components/data/DescriptionList.vue.d.ts +7 -8
  30. package/dist/components/data/FilterPills.vue +13 -4
  31. package/dist/components/data/FilterPills.vue.d.ts +16 -18
  32. package/dist/components/data/Pagination.vue +23 -14
  33. package/dist/components/data/Pagination.vue.d.ts +16 -23
  34. package/dist/components/data/Stat.vue +9 -6
  35. package/dist/components/data/Stat.vue.d.ts +10 -13
  36. package/dist/components/data/Table.vue +12 -7
  37. package/dist/components/data/Tag.vue +7 -4
  38. package/dist/components/data/Tag.vue.d.ts +16 -17
  39. package/dist/components/data/Timeline.vue.d.ts +6 -6
  40. package/dist/components/data/Tree.vue +5 -2
  41. package/dist/components/data/Tree.vue.d.ts +16 -17
  42. package/dist/components/feedback/Alert.vue +5 -2
  43. package/dist/components/feedback/Alert.vue.d.ts +14 -15
  44. package/dist/components/feedback/EmptyState.vue.d.ts +7 -7
  45. package/dist/components/feedback/LoadingOverlay.vue +8 -4
  46. package/dist/components/feedback/LoadingOverlay.vue.d.ts +6 -7
  47. package/dist/components/feedback/Meter.vue.d.ts +6 -6
  48. package/dist/components/feedback/Progress.vue +6 -3
  49. package/dist/components/feedback/Progress.vue.d.ts +6 -7
  50. package/dist/components/feedback/ProgressRing.vue +5 -2
  51. package/dist/components/feedback/ProgressRing.vue.d.ts +6 -7
  52. package/dist/components/feedback/Skeleton.vue.d.ts +6 -6
  53. package/dist/components/forms/Calendar.vue +16 -11
  54. package/dist/components/forms/Calendar.vue.d.ts +17 -21
  55. package/dist/components/forms/ColorInput.vue +8 -4
  56. package/dist/components/forms/ColorInput.vue.d.ts +18 -20
  57. package/dist/components/forms/Combobox.vue +31 -19
  58. package/dist/components/forms/Combobox.vue.d.ts +2 -2
  59. package/dist/components/forms/DateInput.vue.d.ts +16 -16
  60. package/dist/components/forms/DatePicker.vue +17 -11
  61. package/dist/components/forms/DatePicker.vue.d.ts +14 -18
  62. package/dist/components/forms/FileInput.vue +23 -13
  63. package/dist/components/forms/FileInput.vue.d.ts +17 -23
  64. package/dist/components/forms/InputAddon.vue.d.ts +6 -6
  65. package/dist/components/forms/InputGroup.vue.d.ts +6 -6
  66. package/dist/components/forms/NumberInput.vue +15 -10
  67. package/dist/components/forms/NumberInput.vue.d.ts +16 -19
  68. package/dist/components/forms/PasswordInput.vue +21 -13
  69. package/dist/components/forms/PasswordInput.vue.d.ts +14 -20
  70. package/dist/components/forms/PinInput.vue +7 -2
  71. package/dist/components/forms/PinInput.vue.d.ts +18 -16
  72. package/dist/components/forms/Radio.vue.d.ts +6 -6
  73. package/dist/components/forms/Slider.vue.d.ts +18 -18
  74. package/dist/components/forms/Switch.vue.d.ts +16 -16
  75. package/dist/components/forms/TimeInput.vue.d.ts +16 -16
  76. package/dist/components/layout/Accordion.vue.d.ts +16 -16
  77. package/dist/components/layout/AppShell.vue +11 -6
  78. package/dist/components/layout/AppShell.vue.d.ts +16 -19
  79. package/dist/components/layout/Breadcrumbs.vue +5 -2
  80. package/dist/components/layout/Breadcrumbs.vue.d.ts +6 -7
  81. package/dist/components/layout/Card.vue.d.ts +8 -8
  82. package/dist/components/layout/CopyButton.vue +11 -6
  83. package/dist/components/layout/CopyButton.vue.d.ts +16 -18
  84. package/dist/components/layout/Grid.vue.d.ts +7 -7
  85. package/dist/components/layout/NavLink.vue.d.ts +10 -10
  86. package/dist/components/layout/PageHeader.vue.d.ts +6 -6
  87. package/dist/components/layout/Separator.vue.d.ts +6 -6
  88. package/dist/components/layout/Sidebar.vue +10 -5
  89. package/dist/components/layout/Sidebar.vue.d.ts +7 -11
  90. package/dist/components/layout/SidebarSection.vue.d.ts +6 -6
  91. package/dist/components/layout/Stack.vue.d.ts +10 -10
  92. package/dist/components/layout/Tabs.vue.d.ts +16 -16
  93. package/dist/components/layout/ThemeSwitch.vue +12 -6
  94. package/dist/components/layout/ThemeSwitch.vue.d.ts +6 -7
  95. package/dist/components/layout/Toolbar.vue.d.ts +6 -6
  96. package/dist/components/overlays/CommandPalette.vue +38 -24
  97. package/dist/components/overlays/CommandPalette.vue.d.ts +18 -30
  98. package/dist/components/overlays/ConfirmDialog.vue +14 -9
  99. package/dist/components/overlays/ConfirmDialog.vue.d.ts +12 -15
  100. package/dist/components/overlays/ConfirmHost.vue +6 -3
  101. package/dist/components/overlays/ConfirmHost.vue.d.ts +16 -16
  102. package/dist/components/overlays/ContextMenu.vue +6 -3
  103. package/dist/components/overlays/ContextMenu.vue.d.ts +11 -13
  104. package/dist/components/overlays/Drawer.vue +1 -1
  105. package/dist/components/overlays/Drawer.vue.d.ts +10 -11
  106. package/dist/components/overlays/DropdownMenu.vue.d.ts +10 -10
  107. package/dist/components/overlays/HoverCard.vue.d.ts +16 -16
  108. package/dist/components/overlays/Modal.vue +1 -1
  109. package/dist/components/overlays/Modal.vue.d.ts +10 -11
  110. package/dist/components/overlays/OverlayHost.vue.d.ts +1 -1
  111. package/dist/components/overlays/Popover.vue.d.ts +16 -16
  112. package/dist/components/overlays/Toaster.vue +8 -4
  113. package/dist/components/overlays/Toaster.vue.d.ts +8 -10
  114. package/dist/components/overlays/Tooltip.vue.d.ts +6 -6
  115. package/dist/components/templates/AccountMenu.vue +5 -2
  116. package/dist/components/templates/AccountMenu.vue.d.ts +18 -19
  117. package/dist/components/templates/AppearanceSettings.vue +26 -12
  118. package/dist/components/templates/AppearanceSettings.vue.d.ts +7 -11
  119. package/dist/components/templates/AuthLayout.vue +11 -7
  120. package/dist/components/templates/AuthLayout.vue.d.ts +6 -9
  121. package/dist/components/templates/Brand.vue.d.ts +10 -10
  122. package/dist/components/templates/DashboardLayout.vue +25 -16
  123. package/dist/components/templates/DashboardLayout.vue.d.ts +12 -24
  124. package/dist/components/templates/DashboardPage.vue +7 -3
  125. package/dist/components/templates/DashboardPage.vue.d.ts +6 -7
  126. package/dist/components/templates/DetailPage.vue +14 -8
  127. package/dist/components/templates/DetailPage.vue.d.ts +14 -18
  128. package/dist/components/templates/EmptyPage.vue +15 -8
  129. package/dist/components/templates/EmptyPage.vue.d.ts +7 -11
  130. package/dist/components/templates/ErrorPage.vue +32 -25
  131. package/dist/components/templates/ErrorPage.vue.d.ts +6 -6
  132. package/dist/components/templates/FormPage.vue +19 -11
  133. package/dist/components/templates/FormPage.vue.d.ts +3 -3
  134. package/dist/components/templates/ListPage.vue +39 -23
  135. package/dist/components/templates/ListPage.vue.d.ts +2 -2
  136. package/dist/components/templates/NotFoundPage.vue +4 -4
  137. package/dist/components/templates/NotFoundPage.vue.d.ts +1 -1
  138. package/dist/components/templates/SaveBar.vue +20 -11
  139. package/dist/components/templates/SaveBar.vue.d.ts +16 -19
  140. package/dist/components/templates/SettingsGroup.vue.d.ts +7 -7
  141. package/dist/components/templates/SettingsModal.vue +29 -21
  142. package/dist/components/templates/SettingsModal.vue.d.ts +15 -25
  143. package/dist/components/templates/SettingsPage.vue +8 -5
  144. package/dist/components/templates/SettingsPage.vue.d.ts +18 -21
  145. package/dist/components/templates/SettingsSection.vue +7 -3
  146. package/dist/components/templates/SettingsSection.vue.d.ts +8 -9
  147. package/dist/composables/core.d.ts +1 -0
  148. package/dist/composables/core.mjs +1 -0
  149. package/dist/composables/useAlert.mjs +3 -1
  150. package/dist/composables/useConfirm.mjs +5 -3
  151. package/dist/composables/useDirtyGuard.mjs +7 -5
  152. package/dist/composables/useForm.d.ts +4 -1
  153. package/dist/composables/useForm.mjs +33 -16
  154. package/dist/composables/useIcons.d.ts +4 -0
  155. package/dist/composables/useIcons.mjs +10 -0
  156. package/dist/composables/useLocale.d.ts +11 -0
  157. package/dist/composables/useLocale.mjs +26 -0
  158. package/dist/composables/usePasswordStrength.mjs +11 -7
  159. package/dist/composables/usePrompt.mjs +3 -1
  160. package/dist/editor/RichTextEditor.vue +20 -14
  161. package/dist/editor/RichTextEditor.vue.d.ts +22 -15
  162. package/dist/editor/index.d.ts +0 -1
  163. package/dist/editor/index.mjs +0 -1
  164. package/dist/editor/types.d.ts +3 -18
  165. package/dist/grid/DataGrid.vue +11 -2
  166. package/dist/grid/GridToolbar.vue +6 -2
  167. package/dist/grid/GridToolbar.vue.d.ts +21 -20
  168. package/dist/grid/cells/BadgeCell.vue.d.ts +6 -6
  169. package/dist/grid/cells/BooleanCell.vue +5 -2
  170. package/dist/grid/cells/BooleanCell.vue.d.ts +6 -6
  171. package/dist/grid/cells/DateCell.vue +4 -1
  172. package/dist/grid/cells/DateCell.vue.d.ts +6 -6
  173. package/dist/grid/cells/ImageCell.vue.d.ts +6 -6
  174. package/dist/grid/cells/LinkCell.vue.d.ts +6 -6
  175. package/dist/grid/index.d.ts +0 -1
  176. package/dist/grid/index.mjs +0 -1
  177. package/dist/grid/types.d.ts +5 -17
  178. package/dist/icons/collections.d.ts +39 -0
  179. package/dist/icons/collections.mjs +67 -0
  180. package/dist/index.d.ts +4 -1
  181. package/dist/index.mjs +11 -1
  182. package/dist/internal/feedback/LoadingHost.vue +6 -3
  183. package/dist/internal/feedback/LoadingHost.vue.d.ts +0 -1
  184. package/dist/internal/forms/files.mjs +1 -1
  185. package/dist/internal/forms/standard-schema.d.ts +26 -0
  186. package/dist/internal/forms/standard-schema.mjs +21 -0
  187. package/dist/internal/keys.d.ts +4 -1
  188. package/dist/internal/keys.mjs +2 -0
  189. package/dist/internal/overlays/DialogFrame.vue +5 -2
  190. package/dist/internal/overlays/DialogFrame.vue.d.ts +14 -14
  191. package/dist/internal/overlays/MenuList.vue.d.ts +16 -16
  192. package/dist/internal/overlays/OverlayView.vue.d.ts +16 -16
  193. package/dist/internal/overlays/confirm.d.ts +3 -0
  194. package/dist/locale/en.d.ts +2 -0
  195. package/dist/locale/en.mjs +284 -0
  196. package/dist/locale/index.d.ts +16 -0
  197. package/dist/locale/index.mjs +50 -0
  198. package/dist/locale/it.d.ts +2 -0
  199. package/dist/locale/it.mjs +284 -0
  200. package/dist/locale/types.d.ts +292 -0
  201. package/dist/locale/types.mjs +0 -0
  202. package/dist/nuxt/module.d.ts +14 -0
  203. package/dist/nuxt/module.mjs +136 -8
  204. package/dist/nuxt/runtime/layouts/auth.vue.d.ts +16 -16
  205. package/dist/nuxt/runtime/layouts/dashboard.vue.d.ts +16 -16
  206. package/dist/nuxt/runtime/locale.d.ts +2 -0
  207. package/dist/nuxt/runtime/locale.mjs +20 -0
  208. package/dist/styles/core/icon.css +4 -0
  209. package/dist/styles/core/textarea.css +21 -0
  210. package/package.json +1 -1
  211. package/dist/editor/messages.d.ts +0 -2
  212. package/dist/editor/messages.mjs +0 -18
  213. package/dist/grid/messages.d.ts +0 -3
  214. package/dist/grid/messages.mjs +0 -21
@@ -20,7 +20,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
20
20
  dir?: string | undefined | undefined;
21
21
  draggable?: (boolean | "true" | "false") | undefined;
22
22
  enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
23
- enterKeyHint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
23
+ enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
24
24
  hidden?: "" | (boolean | "true" | "false") | "hidden" | "until-found" | undefined;
25
25
  id?: string | undefined | undefined;
26
26
  inert?: (boolean | "true" | "false") | 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'?: "location" | "time" | (boolean | "true" | "false") | "page" | "step" | "date" | undefined;
69
+ 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
70
70
  'aria-describedby'?: string | undefined | undefined;
71
71
  'aria-details'?: string | undefined | undefined;
72
72
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -75,7 +75,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
75
75
  'aria-expanded'?: (boolean | "true" | "false") | undefined;
76
76
  'aria-flowto'?: string | undefined | undefined;
77
77
  'aria-grabbed'?: (boolean | "true" | "false") | undefined;
78
- 'aria-haspopup'?: "dialog" | "menu" | (boolean | "true" | "false") | "listbox" | "tree" | "grid" | undefined;
78
+ 'aria-haspopup'?: "grid" | "tree" | "dialog" | "menu" | (boolean | "true" | "false") | "listbox" | undefined;
79
79
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
80
80
  'aria-invalid'?: (boolean | "true" | "false") | "grammar" | "spelling" | undefined;
81
81
  'aria-keyshortcuts'?: string | undefined | undefined;
@@ -220,7 +220,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
220
220
  dir?: string | undefined | undefined;
221
221
  draggable?: (boolean | "true" | "false") | undefined;
222
222
  enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
223
- enterKeyHint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
223
+ enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
224
224
  hidden?: "" | (boolean | "true" | "false") | "hidden" | "until-found" | undefined;
225
225
  id?: string | undefined | undefined;
226
226
  inert?: (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'?: "location" | "time" | (boolean | "true" | "false") | "page" | "step" | "date" | undefined;
269
+ 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
270
270
  'aria-describedby'?: string | undefined | undefined;
271
271
  'aria-details'?: string | undefined | undefined;
272
272
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -275,7 +275,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
275
275
  'aria-expanded'?: (boolean | "true" | "false") | undefined;
276
276
  'aria-flowto'?: string | undefined | undefined;
277
277
  'aria-grabbed'?: (boolean | "true" | "false") | undefined;
278
- 'aria-haspopup'?: "dialog" | "menu" | (boolean | "true" | "false") | "listbox" | "tree" | "grid" | undefined;
278
+ 'aria-haspopup'?: "grid" | "tree" | "dialog" | "menu" | (boolean | "true" | "false") | "listbox" | undefined;
279
279
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
280
280
  'aria-invalid'?: (boolean | "true" | "false") | "grammar" | "spelling" | undefined;
281
281
  'aria-keyshortcuts'?: string | undefined | undefined;
@@ -404,13 +404,9 @@ declare const __VLS_base: import("vue").DefineComponent<{
404
404
  ref_for?: boolean | undefined | undefined;
405
405
  ref_key?: string | undefined | undefined;
406
406
  }> & Readonly<{}>, {
407
- level: 2 | 3 | 4;
407
+ level: 2 | 4 | 3;
408
408
  presets: false | readonly ThemePreset[];
409
409
  themes: boolean;
410
- themeLabel: string;
411
- themeText: string;
412
- presetLabel: string;
413
- presetText: string;
414
410
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
415
411
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
416
412
  declare const _default: typeof __VLS_export;
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="k-auth" :class="`k-auth-${variant}`">
3
- <a class="k-auth-skip k-visually-hidden-focusable" :href="`#${mainId}`">{{ skipLabel }}</a>
3
+ <a class="k-auth-skip k-visually-hidden-focusable" :href="`#${mainId}`">{{ skipText }}</a>
4
4
  <div v-if="themeSwitch || $slots.corner" class="k-auth-corner">
5
5
  <slot name="corner" />
6
6
  <ThemeSwitch v-if="themeSwitch" variant="icon" :label="themeLabel" />
@@ -38,7 +38,7 @@
38
38
  </footer>
39
39
  </div>
40
40
  </main>
41
- <aside v-if="variant === 'split'" class="k-auth-aside" :aria-label="asideLabel">
41
+ <aside v-if="variant === 'split'" class="k-auth-aside" :aria-label="asideText">
42
42
  <slot name="aside">
43
43
  <div class="k-auth-aside-art" aria-hidden="true">
44
44
  <span class="k-auth-aside-orb" />
@@ -63,10 +63,11 @@
63
63
  </template>
64
64
 
65
65
  <script setup>
66
- import { useId } from "vue";
66
+ import { computed, useId } from "vue";
67
+ import { useLocale } from "../../composables/useLocale";
67
68
  import ThemeSwitch from "../layout/ThemeSwitch.vue";
68
69
  import Brand from "./Brand.vue";
69
- defineProps({
70
+ const props = defineProps({
70
71
  variant: { type: String, required: false, default: "centered" },
71
72
  title: { type: String, required: false },
72
73
  description: { type: String, required: false },
@@ -78,10 +79,13 @@ defineProps({
78
79
  brandTo: { type: [String, Object], required: false },
79
80
  asideTitle: { type: String, required: false },
80
81
  asideDescription: { type: String, required: false },
81
- asideLabel: { type: String, required: false, default: "About" },
82
+ asideLabel: { type: String, required: false },
82
83
  themeSwitch: { type: Boolean, required: false },
83
- themeLabel: { type: String, required: false, default: "Theme" },
84
- skipLabel: { type: String, required: false, default: "Skip to content" }
84
+ themeLabel: { type: String, required: false },
85
+ skipLabel: { type: String, required: false }
85
86
  });
87
+ const { t } = useLocale();
88
+ const asideText = computed(() => props.asideLabel ?? t("auth.aside"));
89
+ const skipText = computed(() => props.skipLabel ?? t("shell.skipToContent"));
86
90
  const mainId = useId();
87
91
  </script>
@@ -44,7 +44,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
44
44
  dir?: string | undefined | undefined;
45
45
  draggable?: (boolean | "true" | "false") | undefined;
46
46
  enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
47
- enterKeyHint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
47
+ enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
48
48
  hidden?: "" | (boolean | "true" | "false") | "hidden" | "until-found" | undefined;
49
49
  id?: string | undefined | undefined;
50
50
  inert?: (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'?: "location" | "time" | (boolean | "true" | "false") | "page" | "step" | "date" | undefined;
92
+ 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
93
93
  'aria-describedby'?: string | undefined | undefined;
94
94
  'aria-details'?: string | undefined | undefined;
95
95
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -98,7 +98,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
98
98
  'aria-expanded'?: (boolean | "true" | "false") | undefined;
99
99
  'aria-flowto'?: string | undefined | undefined;
100
100
  'aria-grabbed'?: (boolean | "true" | "false") | undefined;
101
- 'aria-haspopup'?: "dialog" | "menu" | (boolean | "true" | "false") | "listbox" | "tree" | "grid" | undefined;
101
+ 'aria-haspopup'?: "grid" | "tree" | "dialog" | "menu" | (boolean | "true" | "false") | "listbox" | undefined;
102
102
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
103
103
  'aria-invalid'?: (boolean | "true" | "false") | "grammar" | "spelling" | undefined;
104
104
  'aria-keyshortcuts'?: string | undefined | undefined;
@@ -251,7 +251,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
251
251
  dir?: string | undefined | undefined;
252
252
  draggable?: (boolean | "true" | "false") | undefined;
253
253
  enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
254
- enterKeyHint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
254
+ enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
255
255
  hidden?: "" | (boolean | "true" | "false") | "hidden" | "until-found" | undefined;
256
256
  id?: string | undefined | undefined;
257
257
  inert?: (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'?: "location" | "time" | (boolean | "true" | "false") | "page" | "step" | "date" | undefined;
299
+ 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
300
300
  'aria-describedby'?: string | undefined | undefined;
301
301
  'aria-details'?: string | undefined | undefined;
302
302
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -305,7 +305,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
305
305
  'aria-expanded'?: (boolean | "true" | "false") | undefined;
306
306
  'aria-flowto'?: string | undefined | undefined;
307
307
  'aria-grabbed'?: (boolean | "true" | "false") | undefined;
308
- 'aria-haspopup'?: "dialog" | "menu" | (boolean | "true" | "false") | "listbox" | "tree" | "grid" | undefined;
308
+ 'aria-haspopup'?: "grid" | "tree" | "dialog" | "menu" | (boolean | "true" | "false") | "listbox" | undefined;
309
309
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
310
310
  'aria-invalid'?: (boolean | "true" | "false") | "grammar" | "spelling" | undefined;
311
311
  'aria-keyshortcuts'?: string | undefined | undefined;
@@ -435,9 +435,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
435
435
  ref_key?: string | undefined | undefined;
436
436
  }> & Readonly<{}>, {
437
437
  variant: AuthLayoutVariant;
438
- skipLabel: string;
439
- themeLabel: string;
440
- asideLabel: string;
441
438
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
442
439
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
443
440
  declare const _default: typeof __VLS_export;
@@ -22,17 +22,19 @@ declare const __VLS_base: import("vue").DefineComponent<{
22
22
  inlist?: any;
23
23
  download?: any;
24
24
  key?: PropertyKey | undefined;
25
+ prefix?: string | undefined;
26
+ title?: string | undefined;
27
+ style?: import("vue").StyleValue;
28
+ results?: (string | number) | undefined;
29
+ placeholder?: string | undefined;
25
30
  bind?: Record<string, unknown>;
26
31
  type?: string | undefined;
27
32
  ref?: import("vue").VNodeRef | undefined;
28
- placeholder?: string | undefined;
29
33
  target?: string | undefined;
30
34
  class?: import("vue").ClassValue;
31
35
  role?: string | undefined;
32
36
  'aria-label'?: string | undefined;
33
37
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
34
- style?: import("vue").StyleValue;
35
- title?: string | undefined;
36
38
  onCopy?: ((payload: ClipboardEvent) => void) | undefined;
37
39
  onCut?: ((payload: ClipboardEvent) => void) | undefined;
38
40
  onPaste?: ((payload: ClipboardEvent) => void) | undefined;
@@ -195,7 +197,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
195
197
  radiogroup?: string | undefined;
196
198
  about?: string | undefined;
197
199
  datatype?: string | undefined;
198
- prefix?: string | undefined;
199
200
  property?: string | undefined;
200
201
  resource?: string | undefined;
201
202
  typeof?: string | undefined;
@@ -208,7 +209,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
208
209
  itemtype?: string | undefined;
209
210
  itemid?: string | undefined;
210
211
  itemref?: string | undefined;
211
- results?: (string | number) | undefined;
212
212
  security?: string | undefined;
213
213
  unselectable?: "on" | "off" | undefined;
214
214
  inputmode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
@@ -240,17 +240,19 @@ declare const __VLS_base: import("vue").DefineComponent<{
240
240
  inlist?: any;
241
241
  download?: any;
242
242
  key?: PropertyKey | undefined;
243
+ prefix?: string | undefined;
244
+ title?: string | undefined;
245
+ style?: import("vue").StyleValue;
246
+ results?: (string | number) | undefined;
247
+ placeholder?: string | undefined;
243
248
  bind?: Record<string, unknown>;
244
249
  type?: string | undefined;
245
250
  ref?: import("vue").VNodeRef | undefined;
246
- placeholder?: string | undefined;
247
251
  target?: string | undefined;
248
252
  class?: import("vue").ClassValue;
249
253
  role?: string | undefined;
250
254
  'aria-label'?: string | undefined;
251
255
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
252
- style?: import("vue").StyleValue;
253
- title?: string | undefined;
254
256
  onCopy?: ((payload: ClipboardEvent) => void) | undefined;
255
257
  onCut?: ((payload: ClipboardEvent) => void) | undefined;
256
258
  onPaste?: ((payload: ClipboardEvent) => void) | undefined;
@@ -413,7 +415,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
413
415
  radiogroup?: string | undefined;
414
416
  about?: string | undefined;
415
417
  datatype?: string | undefined;
416
- prefix?: string | undefined;
417
418
  property?: string | undefined;
418
419
  resource?: string | undefined;
419
420
  typeof?: string | undefined;
@@ -426,7 +427,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
426
427
  itemtype?: string | undefined;
427
428
  itemid?: string | undefined;
428
429
  itemref?: string | undefined;
429
- results?: (string | number) | undefined;
430
430
  security?: string | undefined;
431
431
  unselectable?: "on" | "off" | undefined;
432
432
  inputmode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
@@ -38,7 +38,7 @@
38
38
  v-model:open="searchOpen"
39
39
  :groups="commandGroups"
40
40
  :trigger-label="searchLabel"
41
- :placeholder="searchPlaceholder"
41
+ :placeholder="searchPlaceholderText"
42
42
  :shortcut="searchShortcut"
43
43
  class="k-dashboard-search"
44
44
  />
@@ -66,7 +66,7 @@
66
66
  :email="account.email"
67
67
  :avatar="account.avatar"
68
68
  :active="settingsOpen"
69
- :aria-label="`${account.name}: ${settingsTitle}`"
69
+ :aria-label="`${account.name}: ${settingsTitleText}`"
70
70
  aria-haspopup="dialog"
71
71
  @click="settingsOpen = true"
72
72
  />
@@ -123,7 +123,7 @@
123
123
  :sections="settingsSections"
124
124
  :account="account"
125
125
  :presets="settingsPresets"
126
- :title="settingsTitle"
126
+ :title="settingsTitleText"
127
127
  :on-sign-out="onSignOut"
128
128
  >
129
129
  <template v-for="entry in settingsSlots" :key="entry.source" #[entry.target]="scope">
@@ -136,6 +136,7 @@
136
136
 
137
137
  <script setup>
138
138
  import { computed, ref, useSlots, useTemplateRef } from "vue";
139
+ import { useLocale } from "../../composables/useLocale";
139
140
  import { navCommands, toNavSections } from "../../internal/layout/navigation";
140
141
  import AppShell from "../layout/AppShell.vue";
141
142
  import Breadcrumbs from "../layout/Breadcrumbs.vue";
@@ -159,34 +160,42 @@ const props = defineProps({
159
160
  accountAction: { type: String, required: false, default: "settings" },
160
161
  settingsSections: { type: Array, required: false, default: void 0 },
161
162
  settingsPresets: { type: [Array, Boolean], required: false, default: void 0 },
162
- settingsTitle: { type: String, required: false, default: "Settings" },
163
+ settingsTitle: { type: String, required: false },
163
164
  onSignOut: { type: Function, required: false },
164
165
  breadcrumbs: { type: Array, required: false },
165
166
  search: { type: [Boolean, Array], required: false },
166
- searchLabel: { type: String, required: false, default: "Search" },
167
- searchPlaceholder: { type: String, required: false, default: "Search pages and actions" },
167
+ searchLabel: { type: String, required: false },
168
+ searchPlaceholder: { type: String, required: false },
168
169
  searchShortcut: { type: [String, Boolean], required: false, default: "mod+k" },
169
- searchNavigationLabel: { type: String, required: false, default: "Pages" },
170
+ searchNavigationLabel: { type: String, required: false },
170
171
  themeSwitch: { type: [String, Boolean], required: false, default: "sidebar" },
171
172
  collapsible: { type: Boolean, required: false, default: true },
172
173
  storageKey: { type: [String, Boolean], required: false, default: "k-sidebar-collapsed" },
173
174
  shortcut: { type: [String, Boolean], required: false, default: "mod+b" },
174
175
  fluid: { type: Boolean, required: false },
175
176
  viewTransition: { type: Boolean, required: false, default: true },
176
- navLabel: { type: String, required: false, default: "Main" },
177
- sidebarLabel: { type: String, required: false, default: "Sidebar" },
178
- menuLabel: { type: String, required: false, default: "Open navigation" },
179
- skipLabel: { type: String, required: false, default: "Skip to content" },
180
- collapseLabel: { type: String, required: false, default: "Collapse sidebar" },
181
- expandLabel: { type: String, required: false, default: "Expand sidebar" },
182
- accountLabel: { type: String, required: false, default: "Account" },
183
- themeLabel: { type: String, required: false, default: "Theme" }
177
+ navLabel: { type: String, required: false },
178
+ sidebarLabel: { type: String, required: false },
179
+ menuLabel: { type: String, required: false },
180
+ skipLabel: { type: String, required: false },
181
+ collapseLabel: { type: String, required: false },
182
+ expandLabel: { type: String, required: false },
183
+ accountLabel: { type: String, required: false },
184
+ themeLabel: { type: String, required: false }
184
185
  });
185
186
  const emit = defineEmits(["accountSelect"]);
186
187
  const collapsed = defineModel("collapsed", { type: Boolean, ...{ default: false } });
187
188
  const open = defineModel("open", { type: Boolean, ...{ default: false } });
188
189
  const settingsOpen = defineModel("settingsOpen", { type: Boolean, ...{ default: false } });
189
190
  const settingsSection = defineModel("settingsSection", { type: String });
191
+ const { t } = useLocale();
192
+ const settingsTitleText = computed(() => props.settingsTitle ?? t("settings.title"));
193
+ const searchPlaceholderText = computed(
194
+ () => props.searchPlaceholder ?? t("dashboardLayout.searchPlaceholder")
195
+ );
196
+ const navigationGroupLabel = computed(
197
+ () => props.searchNavigationLabel ?? t("dashboardLayout.pages")
198
+ );
190
199
  const slots = useSlots();
191
200
  const shell = useTemplateRef("shell");
192
201
  const searchOpen = ref(false);
@@ -216,7 +225,7 @@ const commandGroups = computed(() => {
216
225
  if (navigationCommands.value.length)
217
226
  groups.push({
218
227
  id: "navigation",
219
- label: props.searchNavigationLabel,
228
+ label: navigationGroupLabel.value,
220
229
  items: navigationCommands.value
221
230
  });
222
231
  if (Array.isArray(props.search)) groups.push(...props.search);
@@ -44,7 +44,7 @@ type __VLS_Slots = {} & {
44
44
  default?: (props: typeof __VLS_88) => any;
45
45
  };
46
46
  declare const __VLS_base: import("vue").DefineComponent<{
47
- variant?: "inset" | "sidebar" | "floating" | undefined;
47
+ variant?: "sidebar" | "inset" | "floating" | undefined;
48
48
  navigation?: DashboardNavigation;
49
49
  currentPath?: string;
50
50
  brandName?: string;
@@ -83,14 +83,16 @@ declare const __VLS_base: import("vue").DefineComponent<{
83
83
  settingsOpen?: boolean;
84
84
  settingsSection?: string;
85
85
  key?: PropertyKey | undefined;
86
- ref?: import("vue").VNodeRef | undefined;
86
+ prefix?: string | undefined;
87
+ title?: string | undefined;
88
+ style?: import("vue").StyleValue;
89
+ results?: (string | number) | undefined;
87
90
  placeholder?: string | undefined;
91
+ ref?: import("vue").VNodeRef | undefined;
88
92
  class?: import("vue").ClassValue;
89
93
  role?: string | undefined;
90
94
  'aria-label'?: string | undefined;
91
95
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
92
- style?: import("vue").StyleValue;
93
- title?: string | undefined;
94
96
  onCopy?: ((payload: ClipboardEvent) => void) | undefined;
95
97
  onCut?: ((payload: ClipboardEvent) => void) | undefined;
96
98
  onPaste?: ((payload: ClipboardEvent) => void) | undefined;
@@ -253,7 +255,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
253
255
  about?: string | undefined;
254
256
  datatype?: string | undefined;
255
257
  inlist?: any;
256
- prefix?: string | undefined;
257
258
  property?: string | undefined;
258
259
  resource?: string | undefined;
259
260
  typeof?: string | undefined;
@@ -266,7 +267,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
266
267
  itemtype?: string | undefined;
267
268
  itemid?: string | undefined;
268
269
  itemref?: string | undefined;
269
- results?: (string | number) | undefined;
270
270
  security?: string | undefined;
271
271
  unselectable?: "on" | "off" | undefined;
272
272
  inputmode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
@@ -294,7 +294,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
294
294
  "update:settingsOpen": (value: boolean) => any;
295
295
  "update:settingsSection": (value: string | undefined) => any;
296
296
  }, string, import("vue").PublicProps, Readonly<{
297
- variant?: "inset" | "sidebar" | "floating" | undefined;
297
+ variant?: "sidebar" | "inset" | "floating" | undefined;
298
298
  navigation?: DashboardNavigation;
299
299
  currentPath?: string;
300
300
  brandName?: string;
@@ -333,14 +333,16 @@ declare const __VLS_base: import("vue").DefineComponent<{
333
333
  settingsOpen?: boolean;
334
334
  settingsSection?: string;
335
335
  key?: PropertyKey | undefined;
336
- ref?: import("vue").VNodeRef | undefined;
336
+ prefix?: string | undefined;
337
+ title?: string | undefined;
338
+ style?: import("vue").StyleValue;
339
+ results?: (string | number) | undefined;
337
340
  placeholder?: string | undefined;
341
+ ref?: import("vue").VNodeRef | undefined;
338
342
  class?: import("vue").ClassValue;
339
343
  role?: string | undefined;
340
344
  'aria-label'?: string | undefined;
341
345
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
342
- style?: import("vue").StyleValue;
343
- title?: string | undefined;
344
346
  onCopy?: ((payload: ClipboardEvent) => void) | undefined;
345
347
  onCut?: ((payload: ClipboardEvent) => void) | undefined;
346
348
  onPaste?: ((payload: ClipboardEvent) => void) | undefined;
@@ -503,7 +505,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
503
505
  about?: string | undefined;
504
506
  datatype?: string | undefined;
505
507
  inlist?: any;
506
- prefix?: string | undefined;
507
508
  property?: string | undefined;
508
509
  resource?: string | undefined;
509
510
  typeof?: string | undefined;
@@ -516,7 +517,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
516
517
  itemtype?: string | undefined;
517
518
  itemid?: string | undefined;
518
519
  itemref?: string | undefined;
519
- results?: (string | number) | undefined;
520
520
  security?: string | undefined;
521
521
  unselectable?: "on" | "off" | undefined;
522
522
  inputmode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
@@ -540,27 +540,15 @@ declare const __VLS_base: import("vue").DefineComponent<{
540
540
  }>, {
541
541
  variant: DashboardVariant;
542
542
  collapsible: boolean;
543
- sidebarLabel: string;
544
- menuLabel: string;
545
- skipLabel: string;
546
543
  storageKey: string | false;
547
544
  shortcut: string | false;
548
545
  viewTransition: boolean;
549
- collapseLabel: string;
550
- expandLabel: string;
551
- themeLabel: string;
552
546
  brandTo: LinkTarget;
553
547
  themeSwitch: ThemeSwitchPlacement;
554
- navLabel: string;
555
- accountLabel: string;
556
548
  accountAction: AccountAction;
557
549
  settingsSections: SettingsModalSection[];
558
550
  settingsPresets: false | readonly ThemePreset[];
559
- settingsTitle: string;
560
- searchLabel: string;
561
- searchPlaceholder: string;
562
551
  searchShortcut: string | false;
563
- searchNavigationLabel: string;
564
552
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
565
553
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
566
554
  declare const _default: typeof __VLS_export;
@@ -20,7 +20,7 @@
20
20
  <section
21
21
  v-if="stats?.length || $slots.stats"
22
22
  class="k-dashboard-stats"
23
- :aria-label="statsLabel"
23
+ :aria-label="statsText"
24
24
  >
25
25
  <slot name="stats" :loading="loading">
26
26
  <Grid :columns="statsColumns">
@@ -55,10 +55,12 @@
55
55
  </template>
56
56
 
57
57
  <script setup>
58
+ import { computed } from "vue";
59
+ import { useLocale } from "../../composables/useLocale";
58
60
  import Stat from "../data/Stat.vue";
59
61
  import Grid from "../layout/Grid.vue";
60
62
  import PageHeader from "../layout/PageHeader.vue";
61
- defineProps({
63
+ const props = defineProps({
62
64
  title: { type: String, required: false },
63
65
  description: { type: String, required: false },
64
66
  eyebrow: { type: String, required: false },
@@ -66,10 +68,12 @@ defineProps({
66
68
  breadcrumbs: { type: Array, required: false },
67
69
  level: { type: Number, required: false, default: 1 },
68
70
  stats: { type: Array, required: false },
69
- statsLabel: { type: String, required: false, default: "Key figures" },
71
+ statsLabel: { type: String, required: false },
70
72
  statsColumns: { type: [Number, Object], required: false, default: () => ({ base: 1, sm: 2, lg: 4 }) },
71
73
  columns: { type: [Number, Object], required: false, default: () => ({ base: 1, lg: 3 }) },
72
74
  loading: { type: Boolean, required: false }
73
75
  });
76
+ const { t } = useLocale();
77
+ const statsText = computed(() => props.statsLabel ?? t("dashboardPage.stats"));
74
78
  defineSlots();
75
79
  </script>
@@ -37,7 +37,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
37
37
  dir?: string | undefined | undefined;
38
38
  draggable?: (boolean | "true" | "false") | undefined;
39
39
  enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
40
- enterKeyHint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
40
+ enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
41
41
  hidden?: "" | (boolean | "true" | "false") | "hidden" | "until-found" | undefined;
42
42
  id?: string | undefined | undefined;
43
43
  inert?: (boolean | "true" | "false") | undefined;
@@ -82,7 +82,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
82
82
  'aria-colindex'?: (string | number) | undefined;
83
83
  'aria-colspan'?: (string | number) | undefined;
84
84
  'aria-controls'?: string | undefined | undefined;
85
- 'aria-current'?: "location" | "time" | (boolean | "true" | "false") | "page" | "step" | "date" | undefined;
85
+ 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
86
86
  'aria-describedby'?: string | undefined | undefined;
87
87
  'aria-details'?: string | undefined | undefined;
88
88
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -91,7 +91,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
91
91
  'aria-expanded'?: (boolean | "true" | "false") | undefined;
92
92
  'aria-flowto'?: string | undefined | undefined;
93
93
  'aria-grabbed'?: (boolean | "true" | "false") | undefined;
94
- 'aria-haspopup'?: "dialog" | "menu" | (boolean | "true" | "false") | "listbox" | "tree" | "grid" | undefined;
94
+ 'aria-haspopup'?: "grid" | "tree" | "dialog" | "menu" | (boolean | "true" | "false") | "listbox" | undefined;
95
95
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
96
96
  'aria-invalid'?: (boolean | "true" | "false") | "grammar" | "spelling" | undefined;
97
97
  'aria-keyshortcuts'?: string | undefined | undefined;
@@ -240,7 +240,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
240
240
  dir?: string | undefined | undefined;
241
241
  draggable?: (boolean | "true" | "false") | undefined;
242
242
  enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
243
- enterKeyHint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
243
+ enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
244
244
  hidden?: "" | (boolean | "true" | "false") | "hidden" | "until-found" | undefined;
245
245
  id?: string | undefined | undefined;
246
246
  inert?: (boolean | "true" | "false") | undefined;
@@ -285,7 +285,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
285
285
  'aria-colindex'?: (string | number) | undefined;
286
286
  'aria-colspan'?: (string | number) | undefined;
287
287
  'aria-controls'?: string | undefined | undefined;
288
- 'aria-current'?: "location" | "time" | (boolean | "true" | "false") | "page" | "step" | "date" | undefined;
288
+ 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
289
289
  'aria-describedby'?: string | undefined | undefined;
290
290
  'aria-details'?: string | undefined | undefined;
291
291
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -294,7 +294,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
294
294
  'aria-expanded'?: (boolean | "true" | "false") | undefined;
295
295
  'aria-flowto'?: string | undefined | undefined;
296
296
  'aria-grabbed'?: (boolean | "true" | "false") | undefined;
297
- 'aria-haspopup'?: "dialog" | "menu" | (boolean | "true" | "false") | "listbox" | "tree" | "grid" | undefined;
297
+ 'aria-haspopup'?: "grid" | "tree" | "dialog" | "menu" | (boolean | "true" | "false") | "listbox" | undefined;
298
298
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
299
299
  'aria-invalid'?: (boolean | "true" | "false") | "grammar" | "spelling" | undefined;
300
300
  'aria-keyshortcuts'?: string | undefined | undefined;
@@ -425,7 +425,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
425
425
  }> & Readonly<{}>, {
426
426
  columns: number | GridColumns;
427
427
  level: HeadingLevel;
428
- statsLabel: string;
429
428
  statsColumns: number | GridColumns;
430
429
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
431
430
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -8,7 +8,7 @@
8
8
  icon="arrow-left"
9
9
  :to="backTo"
10
10
  :href="backHref"
11
- >{{ backLabel }}</Button
11
+ >{{ backText }}</Button
12
12
  >
13
13
  </div>
14
14
  <PageHeader
@@ -35,7 +35,7 @@
35
35
  <Alert
36
36
  v-if="error"
37
37
  tone="danger"
38
- :title="errorTitle"
38
+ :title="errorText"
39
39
  :description="typeof error === 'string' ? error : void 0"
40
40
  role="alert"
41
41
  />
@@ -50,7 +50,7 @@
50
50
  <Skeleton :lines="3" />
51
51
  </Card>
52
52
  </template>
53
- <Tabs v-else-if="tabs?.length" v-model="tab" :items="tabs" :label="tabsLabel">
53
+ <Tabs v-else-if="tabs?.length" v-model="tab" :items="tabs" :label="tabsText">
54
54
  <template v-for="name in panelSlots" :key="name" #[name]="scope">
55
55
  <slot :name="name" v-bind="scope" />
56
56
  </template>
@@ -60,7 +60,7 @@
60
60
  </Tabs>
61
61
  <slot v-else />
62
62
  </div>
63
- <aside v-if="hasAside" class="k-detail-aside" :aria-label="asideLabel">
63
+ <aside v-if="hasAside" class="k-detail-aside" :aria-label="asideText">
64
64
  <template v-if="loading">
65
65
  <Card>
66
66
  <Skeleton :lines="5" />
@@ -87,6 +87,7 @@
87
87
 
88
88
  <script setup>
89
89
  import { computed, useSlots } from "vue";
90
+ import { useLocale } from "../../composables/useLocale";
90
91
  import Button from "../core/Button.vue";
91
92
  import Badge from "../data/Badge.vue";
92
93
  import DescriptionList from "../data/DescriptionList.vue";
@@ -103,17 +104,22 @@ const props = defineProps({
103
104
  level: { type: Number, required: false, default: 1 },
104
105
  backTo: { type: [String, Object], required: false },
105
106
  backHref: { type: String, required: false },
106
- backLabel: { type: String, required: false, default: "Back" },
107
+ backLabel: { type: String, required: false },
107
108
  status: { type: Object, required: false },
108
109
  tabs: { type: Array, required: false },
109
- tabsLabel: { type: String, required: false, default: "Sections" },
110
+ tabsLabel: { type: String, required: false },
110
111
  sections: { type: Array, required: false },
111
- asideLabel: { type: String, required: false, default: "Details" },
112
+ asideLabel: { type: String, required: false },
112
113
  loading: { type: Boolean, required: false },
113
114
  error: { type: [String, Boolean], required: false },
114
- errorTitle: { type: String, required: false, default: "Could not load this record" }
115
+ errorTitle: { type: String, required: false }
115
116
  });
116
117
  defineSlots();
118
+ const { t } = useLocale();
119
+ const backText = computed(() => props.backLabel ?? t("common.back"));
120
+ const tabsText = computed(() => props.tabsLabel ?? t("detailPage.sections"));
121
+ const asideText = computed(() => props.asideLabel ?? t("detailPage.details"));
122
+ const errorText = computed(() => props.errorTitle ?? t("detailPage.error"));
117
123
  const tab = defineModel("tab", { type: [String, Number] });
118
124
  const slots = useSlots();
119
125
  const panelSlots = computed(