@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
@@ -16,7 +16,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
16
16
  dir?: string | undefined | undefined;
17
17
  draggable?: (boolean | "true" | "false") | undefined;
18
18
  enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
19
- enterKeyHint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
19
+ enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
20
20
  hidden?: "" | (boolean | "true" | "false") | "hidden" | "until-found" | undefined;
21
21
  id?: string | undefined | undefined;
22
22
  inert?: (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'?: "location" | "time" | (boolean | "true" | "false") | "page" | "step" | "date" | undefined;
65
+ 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
66
66
  'aria-describedby'?: string | undefined | undefined;
67
67
  'aria-details'?: string | undefined | undefined;
68
68
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -71,7 +71,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
71
71
  'aria-expanded'?: (boolean | "true" | "false") | undefined;
72
72
  'aria-flowto'?: string | undefined | undefined;
73
73
  'aria-grabbed'?: (boolean | "true" | "false") | undefined;
74
- 'aria-haspopup'?: "dialog" | "menu" | (boolean | "true" | "false") | "listbox" | "tree" | "grid" | undefined;
74
+ 'aria-haspopup'?: "grid" | "tree" | "dialog" | "menu" | (boolean | "true" | "false") | "listbox" | undefined;
75
75
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
76
76
  'aria-invalid'?: (boolean | "true" | "false") | "grammar" | "spelling" | undefined;
77
77
  'aria-keyshortcuts'?: string | undefined | undefined;
@@ -213,7 +213,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
213
213
  dir?: string | undefined | undefined;
214
214
  draggable?: (boolean | "true" | "false") | undefined;
215
215
  enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
216
- enterKeyHint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
216
+ enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
217
217
  hidden?: "" | (boolean | "true" | "false") | "hidden" | "until-found" | undefined;
218
218
  id?: string | undefined | undefined;
219
219
  inert?: (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'?: "location" | "time" | (boolean | "true" | "false") | "page" | "step" | "date" | undefined;
262
+ 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
263
263
  'aria-describedby'?: string | undefined | undefined;
264
264
  'aria-details'?: string | undefined | undefined;
265
265
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -268,7 +268,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
268
268
  'aria-expanded'?: (boolean | "true" | "false") | undefined;
269
269
  'aria-flowto'?: string | undefined | undefined;
270
270
  'aria-grabbed'?: (boolean | "true" | "false") | undefined;
271
- 'aria-haspopup'?: "dialog" | "menu" | (boolean | "true" | "false") | "listbox" | "tree" | "grid" | undefined;
271
+ 'aria-haspopup'?: "grid" | "tree" | "dialog" | "menu" | (boolean | "true" | "false") | "listbox" | undefined;
272
272
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
273
273
  'aria-invalid'?: (boolean | "true" | "false") | "grammar" | "spelling" | undefined;
274
274
  'aria-keyshortcuts'?: string | undefined | undefined;
@@ -10,7 +10,7 @@
10
10
  @click="open = true"
11
11
  >
12
12
  <Icon name="magnifying-glass" class="k-command-trigger-icon" />
13
- <span class="k-command-trigger-text">{{ triggerLabel }}</span>
13
+ <span class="k-command-trigger-text">{{ triggerText }}</span>
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>
@@ -27,7 +27,7 @@
27
27
  >
28
28
  <div v-if="present" ref="panelRef" class="k-modal-panel k-command-panel" tabindex="-1">
29
29
  <div class="k-command-bar">
30
- <label :id="labelId" :for="inputId" class="k-visually-hidden">{{ label }}</label>
30
+ <label :id="labelId" :for="inputId" class="k-visually-hidden">{{ labelText }}</label>
31
31
  <Icon name="magnifying-glass" class="k-command-bar-icon" />
32
32
  <input
33
33
  :id="inputId"
@@ -37,7 +37,7 @@
37
37
  type="text"
38
38
  role="combobox"
39
39
  class="k-command-input"
40
- :placeholder="placeholder"
40
+ :placeholder="placeholderText"
41
41
  autocomplete="off"
42
42
  autocapitalize="off"
43
43
  spellcheck="false"
@@ -117,9 +117,9 @@
117
117
  </div>
118
118
  </div>
119
119
  <div class="k-command-footer" aria-hidden="true">
120
- <span><Kbd size="sm">↑</Kbd><Kbd size="sm">↓</Kbd> {{ footerMove }}</span>
121
- <span><Kbd size="sm">↵</Kbd> {{ footerSelect }}</span>
122
- <span><Kbd size="sm">Esc</Kbd> {{ footerClose }}</span>
120
+ <span><Kbd size="sm">↑</Kbd><Kbd size="sm">↓</Kbd> {{ moveText }}</span>
121
+ <span><Kbd size="sm">↵</Kbd> {{ selectText }}</span>
122
+ <span><Kbd size="sm">Esc</Kbd> {{ closeText }}</span>
123
123
  </div>
124
124
  <p class="k-visually-hidden" aria-live="polite">{{ status }}</p>
125
125
  </div>
@@ -129,6 +129,7 @@
129
129
  <script setup>
130
130
  import { computed, nextTick, onMounted, ref, shallowRef, useId, useTemplateRef, watch } from "vue";
131
131
  import { ariaKeyShortcuts, formatHotkey, useHotkey } from "../../composables/useHotkey";
132
+ import { useLocale } from "../../composables/useLocale";
132
133
  import { useModalDialog } from "../../internal/overlays/dialog";
133
134
  import { nextEnabledIndex } from "../../internal/core/roving";
134
135
  import { useAsyncSearch } from "../../internal/core/search";
@@ -146,23 +147,35 @@ const props = defineProps({
146
147
  minQueryLength: { type: Number, required: false, default: 0 },
147
148
  filter: { type: Boolean, required: false, default: true },
148
149
  loading: { type: Boolean, required: false },
149
- placeholder: { type: String, required: false, default: "Type a command or search" },
150
- label: { type: String, required: false, default: "Command palette" },
150
+ placeholder: { type: String, required: false },
151
+ label: { type: String, required: false },
151
152
  shortcut: { type: [String, Boolean], required: false, default: "mod+k" },
152
153
  trigger: { type: Boolean, required: false, default: true },
153
- triggerLabel: { type: String, required: false, default: "Search" },
154
+ triggerLabel: { type: String, required: false },
154
155
  recentKey: { type: String, required: false },
155
156
  recentLimit: { type: Number, required: false, default: 5 },
156
- recentLabel: { type: String, required: false, default: "Recent" },
157
- emptyText: { type: String, required: false, default: "No results" },
158
- minQueryText: { type: String, required: false, default: "Keep typing to search" },
159
- errorText: { type: String, required: false, default: "Search failed. Try again." },
160
- loadingText: { type: String, required: false, default: "Loading" },
161
- resultsText: { type: Function, required: false, default: (count) => `${count} results` },
162
- footerMove: { type: String, required: false, default: "to move" },
163
- footerSelect: { type: String, required: false, default: "to select" },
164
- footerClose: { type: String, required: false, default: "to close" }
157
+ recentLabel: { type: String, required: false },
158
+ emptyText: { type: String, required: false },
159
+ minQueryText: { type: String, required: false },
160
+ errorText: { type: String, required: false },
161
+ loadingText: { type: String, required: false },
162
+ resultsText: { type: Function, required: false },
163
+ footerMove: { type: String, required: false },
164
+ footerSelect: { type: String, required: false },
165
+ footerClose: { type: String, required: false }
165
166
  });
167
+ const { t } = useLocale();
168
+ const placeholderText = computed(() => props.placeholder ?? t("commandPalette.placeholder"));
169
+ const labelText = computed(() => props.label ?? t("commandPalette.label"));
170
+ const triggerText = computed(() => props.triggerLabel ?? t("common.search"));
171
+ const recentText = computed(() => props.recentLabel ?? t("commandPalette.recent"));
172
+ const emptyLabel = computed(() => props.emptyText ?? t("common.noResults"));
173
+ const minQueryLabel = computed(() => props.minQueryText ?? t("commandPalette.minQuery"));
174
+ const errorLabel = computed(() => props.errorText ?? t("commandPalette.error"));
175
+ const loadingLabel = computed(() => props.loadingText ?? t("common.loading"));
176
+ const moveText = computed(() => props.footerMove ?? t("commandPalette.move"));
177
+ const selectText = computed(() => props.footerSelect ?? t("commandPalette.select"));
178
+ const closeText = computed(() => props.footerClose ?? t("commandPalette.close"));
166
179
  const emit = defineEmits(["select", "open", "close"]);
167
180
  const open = defineModel("open", { type: Boolean, ...{ default: false } });
168
181
  const query = defineModel("query", { type: String, ...{ default: "" } });
@@ -203,7 +216,7 @@ const rendered = computed(() => {
203
216
  if (!term.value && props.recentKey && recent.value.length) {
204
217
  list.push({
205
218
  key: "recent",
206
- label: props.recentLabel,
219
+ label: recentText.value,
207
220
  recent: true,
208
221
  items: recent.value.map((snapshot) => {
209
222
  const item = allItems.value.find((candidate) => candidate.id === snapshot.id) ?? snapshot;
@@ -228,15 +241,16 @@ const rendered = computed(() => {
228
241
  const flat = computed(() => rendered.value.flatMap((group) => group.items));
229
242
  const activeId = computed(() => flat.value.length ? optionId(active.value) : void 0);
230
243
  const hint = computed(() => {
231
- if (belowMinimum.value) return props.minQueryText;
232
- if (search.failed.value) return props.errorText;
233
- if (!busy.value && !flat.value.length && (term.value || !props.search)) return props.emptyText;
244
+ if (belowMinimum.value) return minQueryLabel.value;
245
+ if (search.failed.value) return errorLabel.value;
246
+ if (!busy.value && !flat.value.length && (term.value || !props.search)) return emptyLabel.value;
234
247
  return "";
235
248
  });
236
249
  const status = computed(() => {
237
250
  if (hint.value) return hint.value;
238
- if (busy.value) return props.loadingText;
239
- return props.resultsText(flat.value.length);
251
+ if (busy.value) return loadingLabel.value;
252
+ const count = flat.value.length;
253
+ return props.resultsText ? props.resultsText(count) : t("commandPalette.results", { count });
240
254
  });
241
255
  function optionId(index) {
242
256
  return `${listId}-option-${index}`;
@@ -36,7 +36,12 @@ declare const __VLS_base: import("vue").DefineComponent<{
36
36
  open?: boolean;
37
37
  query?: string;
38
38
  key?: PropertyKey | undefined;
39
+ prefix?: string | undefined | undefined;
39
40
  value?: string | number | readonly string[] | undefined;
41
+ form?: string | undefined | undefined;
42
+ title?: string | undefined | undefined;
43
+ style?: import("vue").StyleValue;
44
+ results?: (string | number) | undefined;
40
45
  name?: string | undefined | undefined;
41
46
  type?: "submit" | "reset" | "button" | undefined | undefined;
42
47
  ref?: import("vue").VNodeRef | undefined;
@@ -44,9 +49,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
44
49
  role?: string | undefined | undefined;
45
50
  'aria-label'?: string | undefined | undefined;
46
51
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
47
- style?: import("vue").StyleValue;
48
- form?: string | undefined | undefined;
49
- title?: string | undefined | undefined;
50
52
  onCopy?: ((payload: ClipboardEvent) => void) | undefined;
51
53
  onCut?: ((payload: ClipboardEvent) => void) | undefined;
52
54
  onPaste?: ((payload: ClipboardEvent) => void) | undefined;
@@ -154,7 +156,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
154
156
  'aria-colindex'?: (string | number) | undefined;
155
157
  'aria-colspan'?: (string | number) | undefined;
156
158
  'aria-controls'?: string | undefined | undefined;
157
- 'aria-current'?: "location" | "time" | (boolean | "true" | "false") | "page" | "step" | "date" | undefined;
159
+ 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
158
160
  'aria-describedby'?: string | undefined | undefined;
159
161
  'aria-details'?: string | undefined | undefined;
160
162
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -163,7 +165,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
163
165
  'aria-expanded'?: (boolean | "true" | "false") | undefined;
164
166
  'aria-flowto'?: string | undefined | undefined;
165
167
  'aria-grabbed'?: (boolean | "true" | "false") | undefined;
166
- 'aria-haspopup'?: "dialog" | "menu" | (boolean | "true" | "false") | "listbox" | "tree" | "grid" | undefined;
168
+ 'aria-haspopup'?: "grid" | "tree" | "dialog" | "menu" | (boolean | "true" | "false") | "listbox" | undefined;
167
169
  'aria-invalid'?: (boolean | "true" | "false") | "grammar" | "spelling" | undefined;
168
170
  'aria-keyshortcuts'?: string | undefined | undefined;
169
171
  'aria-labelledby'?: string | undefined | undefined;
@@ -199,7 +201,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
199
201
  dir?: string | undefined | undefined;
200
202
  draggable?: (boolean | "true" | "false") | undefined;
201
203
  enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
202
- enterKeyHint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
204
+ enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
203
205
  hidden?: "" | (boolean | "true" | "false") | "hidden" | "until-found" | undefined;
204
206
  inert?: (boolean | "true" | "false") | undefined;
205
207
  spellcheck?: (boolean | "true" | "false") | undefined;
@@ -208,7 +210,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
208
210
  about?: string | undefined | undefined;
209
211
  datatype?: string | undefined | undefined;
210
212
  inlist?: any;
211
- prefix?: string | undefined | undefined;
212
213
  property?: string | undefined | undefined;
213
214
  resource?: string | undefined | undefined;
214
215
  typeof?: string | undefined | undefined;
@@ -221,7 +222,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
221
222
  itemtype?: string | undefined | undefined;
222
223
  itemid?: string | undefined | undefined;
223
224
  itemref?: string | undefined | undefined;
224
- results?: (string | number) | undefined;
225
225
  security?: string | undefined | undefined;
226
226
  unselectable?: "on" | "off" | undefined | undefined;
227
227
  inputmode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined | undefined;
@@ -243,8 +243,8 @@ declare const __VLS_base: import("vue").DefineComponent<{
243
243
  hide: () => boolean;
244
244
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
245
245
  close: () => any;
246
- open: () => any;
247
246
  select: (item: CommandItem) => any;
247
+ open: () => any;
248
248
  "update:open": (value: boolean) => any;
249
249
  "update:query": (value: string) => any;
250
250
  }, string, import("vue").PublicProps, Readonly<{
@@ -273,7 +273,12 @@ declare const __VLS_base: import("vue").DefineComponent<{
273
273
  open?: boolean;
274
274
  query?: string;
275
275
  key?: PropertyKey | undefined;
276
+ prefix?: string | undefined | undefined;
276
277
  value?: string | number | readonly string[] | undefined;
278
+ form?: string | undefined | undefined;
279
+ title?: string | undefined | undefined;
280
+ style?: import("vue").StyleValue;
281
+ results?: (string | number) | undefined;
277
282
  name?: string | undefined | undefined;
278
283
  type?: "submit" | "reset" | "button" | undefined | undefined;
279
284
  ref?: import("vue").VNodeRef | undefined;
@@ -281,9 +286,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
281
286
  role?: string | undefined | undefined;
282
287
  'aria-label'?: string | undefined | undefined;
283
288
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
284
- style?: import("vue").StyleValue;
285
- form?: string | undefined | undefined;
286
- title?: string | undefined | undefined;
287
289
  onCopy?: ((payload: ClipboardEvent) => void) | undefined;
288
290
  onCut?: ((payload: ClipboardEvent) => void) | undefined;
289
291
  onPaste?: ((payload: ClipboardEvent) => void) | undefined;
@@ -391,7 +393,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
391
393
  'aria-colindex'?: (string | number) | undefined;
392
394
  'aria-colspan'?: (string | number) | undefined;
393
395
  'aria-controls'?: string | undefined | undefined;
394
- 'aria-current'?: "location" | "time" | (boolean | "true" | "false") | "page" | "step" | "date" | undefined;
396
+ 'aria-current'?: "page" | "location" | "time" | (boolean | "true" | "false") | "step" | "date" | undefined;
395
397
  'aria-describedby'?: string | undefined | undefined;
396
398
  'aria-details'?: string | undefined | undefined;
397
399
  'aria-disabled'?: (boolean | "true" | "false") | undefined;
@@ -400,7 +402,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
400
402
  'aria-expanded'?: (boolean | "true" | "false") | undefined;
401
403
  'aria-flowto'?: string | undefined | undefined;
402
404
  'aria-grabbed'?: (boolean | "true" | "false") | undefined;
403
- 'aria-haspopup'?: "dialog" | "menu" | (boolean | "true" | "false") | "listbox" | "tree" | "grid" | undefined;
405
+ 'aria-haspopup'?: "grid" | "tree" | "dialog" | "menu" | (boolean | "true" | "false") | "listbox" | undefined;
404
406
  'aria-invalid'?: (boolean | "true" | "false") | "grammar" | "spelling" | undefined;
405
407
  'aria-keyshortcuts'?: string | undefined | undefined;
406
408
  'aria-labelledby'?: string | undefined | undefined;
@@ -436,7 +438,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
436
438
  dir?: string | undefined | undefined;
437
439
  draggable?: (boolean | "true" | "false") | undefined;
438
440
  enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
439
- enterKeyHint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
441
+ enterKeyHint?: "search" | "done" | "previous" | "next" | "enter" | "go" | "send" | undefined;
440
442
  hidden?: "" | (boolean | "true" | "false") | "hidden" | "until-found" | undefined;
441
443
  inert?: (boolean | "true" | "false") | undefined;
442
444
  spellcheck?: (boolean | "true" | "false") | undefined;
@@ -445,7 +447,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
445
447
  about?: string | undefined | undefined;
446
448
  datatype?: string | undefined | undefined;
447
449
  inlist?: any;
448
- prefix?: string | undefined | undefined;
449
450
  property?: string | undefined | undefined;
450
451
  resource?: string | undefined | undefined;
451
452
  typeof?: string | undefined | undefined;
@@ -458,7 +459,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
458
459
  itemtype?: string | undefined | undefined;
459
460
  itemid?: string | undefined | undefined;
460
461
  itemref?: string | undefined | undefined;
461
- results?: (string | number) | undefined;
462
462
  security?: string | undefined | undefined;
463
463
  unselectable?: "on" | "off" | undefined | undefined;
464
464
  inputmode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined | undefined;
@@ -477,30 +477,18 @@ declare const __VLS_base: import("vue").DefineComponent<{
477
477
  popovertargetaction?: import("../../index.ts").PopoverTargetAction | undefined;
478
478
  }> & Readonly<{
479
479
  onClose?: (() => any) | undefined;
480
- onOpen?: (() => any) | undefined;
481
480
  onSelect?: ((item: CommandItem) => any) | undefined;
481
+ onOpen?: (() => any) | undefined;
482
482
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
483
483
  "onUpdate:query"?: ((value: string) => any) | undefined;
484
484
  }>, {
485
485
  filter: boolean;
486
- placeholder: string;
487
- label: string;
488
- emptyText: string;
489
- loadingText: string;
490
486
  debounce: number;
491
487
  minQueryLength: number;
492
- resultsText: (count: number) => string;
493
488
  shortcut: string | false;
494
489
  groups: CommandGroup[];
495
490
  trigger: boolean;
496
- triggerLabel: string;
497
491
  recentLimit: number;
498
- recentLabel: string;
499
- minQueryText: string;
500
- errorText: string;
501
- footerMove: string;
502
- footerSelect: string;
503
- footerClose: string;
504
492
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
505
493
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
506
494
  declare const _default: typeof __VLS_export;
@@ -5,7 +5,7 @@
5
5
  :class="`k-confirm-${tone}`"
6
6
  role="alertdialog"
7
7
  size="sm"
8
- :title="title"
8
+ :title="titleText"
9
9
  :description="description"
10
10
  :loading="loading"
11
11
  hide-close
@@ -18,7 +18,7 @@
18
18
  <Icon :name="icon" />
19
19
  </span>
20
20
  <div class="k-confirm-heading">
21
- <h2 :id="titleId" class="k-modal-title">{{ title }}</h2>
21
+ <h2 :id="titleId" class="k-modal-title">{{ titleText }}</h2>
22
22
  <p v-if="description" :id="descriptionId" class="k-modal-description">
23
23
  {{ description }}
24
24
  </p>
@@ -33,7 +33,7 @@
33
33
  <template #footer>
34
34
  <Button
35
35
  v-if="!hideCancel"
36
- :label="cancelLabel"
36
+ :label="cancelText"
37
37
  variant="soft"
38
38
  tone="neutral"
39
39
  :disabled="loading"
@@ -41,7 +41,7 @@
41
41
  @click="cancel"
42
42
  />
43
43
  <Button
44
- :label="confirmLabel"
44
+ :label="confirmText"
45
45
  :tone="tone"
46
46
  :loading="loading"
47
47
  :autofocus="tone !== 'danger' || hideCancel || void 0"
@@ -52,20 +52,25 @@
52
52
  </template>
53
53
 
54
54
  <script setup>
55
- import { ref, watch } from "vue";
55
+ import { computed, ref, watch } from "vue";
56
+ import { useLocale } from "../../composables/useLocale";
56
57
  import Button from "../core/Button.vue";
57
58
  import Icon from "../core/Icon.vue";
58
59
  import Modal from "./Modal.vue";
59
60
  const props = defineProps({
60
- title: { type: String, required: false, default: "Are you sure?" },
61
+ title: { type: String, required: false },
61
62
  description: { type: String, required: false },
62
- confirmLabel: { type: String, required: false, default: "Confirm" },
63
- cancelLabel: { type: String, required: false, default: "Cancel" },
63
+ confirmLabel: { type: String, required: false },
64
+ cancelLabel: { type: String, required: false },
64
65
  tone: { type: String, required: false, default: "accent" },
65
66
  icon: { type: null, required: false },
66
67
  hideCancel: { type: Boolean, required: false },
67
68
  onConfirm: { type: Function, required: false }
68
69
  });
70
+ const { t } = useLocale();
71
+ const titleText = computed(() => props.title ?? t("common.areYouSure"));
72
+ const confirmText = computed(() => props.confirmLabel ?? t("common.confirm"));
73
+ const cancelText = computed(() => props.cancelLabel ?? t("common.cancel"));
69
74
  const emit = defineEmits(["cancel", "resolve", "afterLeave"]);
70
75
  const open = defineModel("open", { type: Boolean, ...{ default: false } });
71
76
  const loading = ref(false);
@@ -84,7 +89,7 @@ async function confirm() {
84
89
  try {
85
90
  if (await props.onConfirm() === false) return;
86
91
  } catch (cause) {
87
- error.value = cause instanceof Error ? cause.message : String(cause || "Something went wrong");
92
+ error.value = cause instanceof Error ? cause.message : String(cause || t("common.somethingWentWrong"));
88
93
  return;
89
94
  } finally {
90
95
  loading.value = false;
@@ -17,14 +17,17 @@ declare const __VLS_base: import("vue").DefineComponent<{
17
17
  onConfirm?: () => unknown;
18
18
  open?: boolean | undefined;
19
19
  key?: PropertyKey | undefined;
20
+ loading?: boolean;
21
+ prefix?: "k-modal" | "k-drawer" | undefined;
22
+ style?: import("vue").StyleValue;
23
+ results?: (string | number) | undefined;
24
+ placeholder?: string | undefined;
20
25
  size?: import("./types.ts").ModalSize;
21
26
  ref?: import("vue").VNodeRef | undefined;
22
- placeholder?: string | undefined;
23
27
  class?: import("vue").ClassValue;
24
28
  role?: string | undefined;
25
29
  'aria-label'?: string | undefined;
26
30
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
27
- style?: import("vue").StyleValue;
28
31
  onCopy?: ((payload: ClipboardEvent) => void) | undefined;
29
32
  onCut?: ((payload: ClipboardEvent) => void) | undefined;
30
33
  onPaste?: ((payload: ClipboardEvent) => void) | undefined;
@@ -187,7 +190,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
187
190
  about?: string | undefined;
188
191
  datatype?: string | undefined;
189
192
  inlist?: any;
190
- prefix?: "k-modal" | "k-drawer" | undefined;
191
193
  property?: string | undefined;
192
194
  resource?: string | undefined;
193
195
  typeof?: string | undefined;
@@ -200,7 +202,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
200
202
  itemtype?: string | undefined;
201
203
  itemid?: string | undefined;
202
204
  itemref?: string | undefined;
203
- results?: (string | number) | undefined;
204
205
  security?: string | undefined;
205
206
  unselectable?: "on" | "off" | undefined;
206
207
  inputmode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
@@ -208,7 +209,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
208
209
  exportparts?: string;
209
210
  part?: string;
210
211
  popover?: import("../../index.ts").PopoverMode | "" | boolean;
211
- loading?: boolean;
212
212
  onClose?: (() => any) | undefined;
213
213
  onVnodeBeforeMount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
214
214
  onVnodeMounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
@@ -222,7 +222,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
222
222
  onOpen?: (() => any) | undefined;
223
223
  rootClass?: unknown;
224
224
  hideClose?: boolean;
225
- closeLabel?: string | undefined;
225
+ closeLabel?: string;
226
226
  closedby?: import("../../index.ts").DialogClosedBy;
227
227
  }, {
228
228
  confirm: typeof confirm;
@@ -243,14 +243,17 @@ declare const __VLS_base: import("vue").DefineComponent<{
243
243
  onConfirm?: () => unknown;
244
244
  open?: boolean | undefined;
245
245
  key?: PropertyKey | undefined;
246
+ loading?: boolean;
247
+ prefix?: "k-modal" | "k-drawer" | undefined;
248
+ style?: import("vue").StyleValue;
249
+ results?: (string | number) | undefined;
250
+ placeholder?: string | undefined;
246
251
  size?: import("./types.ts").ModalSize;
247
252
  ref?: import("vue").VNodeRef | undefined;
248
- placeholder?: string | undefined;
249
253
  class?: import("vue").ClassValue;
250
254
  role?: string | undefined;
251
255
  'aria-label'?: string | undefined;
252
256
  'aria-hidden'?: (boolean | "true" | "false") | undefined;
253
- style?: import("vue").StyleValue;
254
257
  onCopy?: ((payload: ClipboardEvent) => void) | undefined;
255
258
  onCut?: ((payload: ClipboardEvent) => void) | undefined;
256
259
  onPaste?: ((payload: ClipboardEvent) => void) | undefined;
@@ -413,7 +416,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
413
416
  about?: string | undefined;
414
417
  datatype?: string | undefined;
415
418
  inlist?: any;
416
- prefix?: "k-modal" | "k-drawer" | undefined;
417
419
  property?: string | undefined;
418
420
  resource?: string | undefined;
419
421
  typeof?: string | undefined;
@@ -426,7 +428,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
426
428
  itemtype?: string | undefined;
427
429
  itemid?: string | undefined;
428
430
  itemref?: string | undefined;
429
- results?: (string | number) | undefined;
430
431
  security?: string | undefined;
431
432
  unselectable?: "on" | "off" | undefined;
432
433
  inputmode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
@@ -434,7 +435,6 @@ declare const __VLS_base: import("vue").DefineComponent<{
434
435
  exportparts?: string;
435
436
  part?: string;
436
437
  popover?: import("../../index.ts").PopoverMode | "" | boolean;
437
- loading?: boolean;
438
438
  onClose?: (() => any) | undefined;
439
439
  onVnodeBeforeMount?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
440
440
  onVnodeMounted?: (((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[]) | undefined;
@@ -448,7 +448,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
448
448
  onOpen?: (() => any) | undefined;
449
449
  rootClass?: unknown;
450
450
  hideClose?: boolean;
451
- closeLabel?: string | undefined;
451
+ closeLabel?: string;
452
452
  closedby?: import("../../index.ts").DialogClosedBy;
453
453
  }> & Readonly<{
454
454
  onCancel?: (() => any) | undefined;
@@ -456,10 +456,7 @@ declare const __VLS_base: import("vue").DefineComponent<{
456
456
  onAfterLeave?: (() => any) | undefined;
457
457
  onResolve?: ((confirmed: boolean) => any) | undefined;
458
458
  }>, {
459
- title: string;
460
459
  tone: Tone;
461
- confirmLabel: string;
462
- cancelLabel: string;
463
460
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
464
461
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
465
462
  declare const _default: typeof __VLS_export;
@@ -15,8 +15,9 @@
15
15
  @resolve="onResolve"
16
16
  @after-leave="onAfterLeave"
17
17
  >
18
+ <component :is="current.body" v-if="current && current.kind !== 'prompt' && current.body" />
18
19
  <FormField
19
- v-if="current?.kind === 'prompt'"
20
+ v-else-if="current?.kind === 'prompt'"
20
21
  :label="current.label"
21
22
  :required="current.required"
22
23
  :error="promptError || void 0"
@@ -36,10 +37,12 @@
36
37
  <script setup>
37
38
  import { computed, onBeforeUnmount, ref, shallowRef, useTemplateRef, watch } from "vue";
38
39
  import { cancelRequest, confirmQueue } from "../../internal/overlays/confirm";
40
+ import { useLocale } from "../../composables/useLocale";
39
41
  import { useHostClaim } from "../../internal/overlays/host";
40
42
  import FormField from "../core/FormField.vue";
41
43
  import Input from "../core/Input.vue";
42
44
  import ConfirmDialog from "./ConfirmDialog.vue";
45
+ const { t } = useLocale();
43
46
  const active = useHostClaim("confirm");
44
47
  const dialogRef = useTemplateRef("dialogRef");
45
48
  const open = ref(false);
@@ -49,7 +52,7 @@ const promptError = ref("");
49
52
  const confirmLabel = computed(() => {
50
53
  const request = current.value;
51
54
  if (request?.confirmLabel) return request.confirmLabel;
52
- return request?.kind === "alert" ? "OK" : void 0;
55
+ return request?.kind === "alert" ? t("common.ok") : void 0;
53
56
  });
54
57
  function next() {
55
58
  if (!active.value || current.value || !confirmQueue.length) return;
@@ -67,7 +70,7 @@ async function onConfirm() {
67
70
  if (!request || request.kind === "alert") return;
68
71
  if (request.kind === "confirm") return request.onConfirm?.();
69
72
  const value = promptText();
70
- const error = request.required && !value.trim() ? request.requiredText ?? "This field is required" : request.validate?.(value);
73
+ const error = request.required && !value.trim() ? request.requiredText ?? t("form.required") : request.validate?.(value);
71
74
  if (error) {
72
75
  promptError.value = error;
73
76
  return false;