@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
@@ -0,0 +1,284 @@
1
+ export const en = {
2
+ code: "en",
3
+ dir: "ltr",
4
+ messages: {
5
+ common: {
6
+ cancel: "Cancel",
7
+ confirm: "Confirm",
8
+ close: "Close",
9
+ ok: "OK",
10
+ clear: "Clear",
11
+ loading: "Loading",
12
+ areYouSure: "Are you sure?",
13
+ noResults: "No results",
14
+ remove: "Remove",
15
+ dismiss: "Dismiss",
16
+ copy: "Copy",
17
+ copied: "Copied",
18
+ search: "Search",
19
+ back: "Back",
20
+ save: "Save",
21
+ saveChanges: "Save changes",
22
+ discard: "Discard",
23
+ retry: "Try again",
24
+ unsavedChanges: "Unsaved changes",
25
+ somethingWentWrong: "Something went wrong",
26
+ selected: "{count} selected"
27
+ },
28
+ form: {
29
+ required: "This field is required",
30
+ min: "Must be at least {min}",
31
+ max: "Must be at most {max}",
32
+ minLength: "Must be at least {count} character | Must be at least {count} characters",
33
+ maxLength: "Must be at most {count} character | Must be at most {count} characters",
34
+ minItems: "Select at least {count} item | Select at least {count} items",
35
+ maxItems: "Select at most {count} item | Select at most {count} items",
36
+ pattern: "Invalid format",
37
+ invalid: "Invalid value"
38
+ },
39
+ editor: {
40
+ bold: "Bold",
41
+ italic: "Italic",
42
+ strike: "Strikethrough",
43
+ code: "Inline code",
44
+ heading: "Heading {level}",
45
+ bulletList: "Bullet list",
46
+ orderedList: "Numbered list",
47
+ blockquote: "Quote",
48
+ link: "Link",
49
+ undo: "Undo",
50
+ redo: "Redo",
51
+ toolbar: "Formatting",
52
+ linkUrl: "Link URL",
53
+ applyLink: "Apply",
54
+ removeLink: "Remove link",
55
+ characters: "{count} character | {count} characters"
56
+ },
57
+ grid: {
58
+ noRows: "No rows to show",
59
+ loading: "Loading",
60
+ search: "Search",
61
+ clearSearch: "Clear search",
62
+ toolbar: "Grid tools",
63
+ columns: "Columns",
64
+ resetColumns: "Reset columns",
65
+ exportCsv: "Export CSV",
66
+ rowsPerPage: "Rows per page",
67
+ previousPage: "Previous page",
68
+ nextPage: "Next page",
69
+ pageStatus: "{from}-{to} of {total}",
70
+ selected: "{count} selected",
71
+ copied: "Copied to clipboard",
72
+ yes: "Yes",
73
+ no: "No"
74
+ },
75
+ account: {
76
+ label: "Account"
77
+ },
78
+ alert: {
79
+ title: "Heads up"
80
+ },
81
+ appearance: {
82
+ theme: "Theme",
83
+ themeDescription: "Choose how the interface looks. System follows your device.",
84
+ style: "Style",
85
+ styleDescription: "Brand colors, typefaces and corner radius."
86
+ },
87
+ auth: {
88
+ aside: "About"
89
+ },
90
+ avatar: {
91
+ label: "Avatar",
92
+ online: "online",
93
+ away: "away",
94
+ busy: "busy",
95
+ offline: "offline"
96
+ },
97
+ avatarGroup: {
98
+ more: "more"
99
+ },
100
+ breadcrumbs: {
101
+ label: "Breadcrumb"
102
+ },
103
+ calendar: {
104
+ previousMonth: "Previous month",
105
+ nextMonth: "Next month"
106
+ },
107
+ chart: {
108
+ empty: "No data to show",
109
+ loading: "Loading chart"
110
+ },
111
+ colorInput: {
112
+ pick: "Pick a color",
113
+ swatches: "Preset colors"
114
+ },
115
+ combobox: {
116
+ clear: "Clear selection",
117
+ toggle: "Show options",
118
+ list: "Options",
119
+ create: 'Create "{query}"',
120
+ results: "{count} result available | {count} results available"
121
+ },
122
+ commandPalette: {
123
+ placeholder: "Type a command or search",
124
+ label: "Command palette",
125
+ recent: "Recent",
126
+ minQuery: "Keep typing to search",
127
+ error: "Search failed. Try again.",
128
+ results: "{count} result | {count} results",
129
+ move: "to move",
130
+ select: "to select",
131
+ close: "to close"
132
+ },
133
+ contextMenu: {
134
+ label: "Context menu"
135
+ },
136
+ dashboardLayout: {
137
+ pages: "Pages",
138
+ searchPlaceholder: "Search pages and actions"
139
+ },
140
+ dashboardPage: {
141
+ stats: "Key figures"
142
+ },
143
+ datePicker: {
144
+ placeholder: "Pick a date",
145
+ clear: "Clear date",
146
+ dialog: "Choose date",
147
+ range: "{start} to {end}"
148
+ },
149
+ descriptionList: {
150
+ empty: "Not set"
151
+ },
152
+ detailPage: {
153
+ sections: "Sections",
154
+ details: "Details",
155
+ error: "Could not load this record"
156
+ },
157
+ dirtyGuard: {
158
+ title: "Discard unsaved changes?",
159
+ description: "The changes you made on this page will be lost.",
160
+ confirm: "Discard changes",
161
+ cancel: "Keep editing"
162
+ },
163
+ emptyPage: {
164
+ title: "Welcome aboard",
165
+ steps: "Getting started",
166
+ done: "(done)",
167
+ todo: "(to do)"
168
+ },
169
+ errorPage: {
170
+ home: "Back to home",
171
+ back: "Go back",
172
+ retry: "Try again",
173
+ badRequestTitle: "Bad request",
174
+ badRequestMessage: "The request could not be understood.",
175
+ signInTitle: "Sign in required",
176
+ signInMessage: "You need to sign in to see this page.",
177
+ forbiddenTitle: "Access denied",
178
+ forbiddenMessage: "You do not have permission to see this page.",
179
+ notFoundTitle: "Page not found",
180
+ notFoundMessage: "The page you are looking for does not exist or has been moved.",
181
+ serverTitle: "Something went wrong",
182
+ serverMessage: "An unexpected error occurred. Try again in a moment.",
183
+ unavailableTitle: "Service unavailable",
184
+ unavailableMessage: "We are down for maintenance. Back soon."
185
+ },
186
+ fileInput: {
187
+ title: "Drop files here or click to browse",
188
+ drop: "Release to add files",
189
+ list: "Selected files",
190
+ selected: "{count} file selected | {count} files selected"
191
+ },
192
+ filterPills: {
193
+ label: "Filters"
194
+ },
195
+ listPage: {
196
+ toolbar: "Filter results",
197
+ emptyTitle: "Nothing here yet",
198
+ noResultsDescription: "Try a different search or clear the filters.",
199
+ clearFilters: "Clear filters"
200
+ },
201
+ numberInput: {
202
+ increase: "Increase",
203
+ decrease: "Decrease"
204
+ },
205
+ pagination: {
206
+ label: "Pagination",
207
+ page: "Page",
208
+ previous: "Previous page",
209
+ next: "Next page",
210
+ pageSize: "Rows per page",
211
+ of: "of"
212
+ },
213
+ passwordInput: {
214
+ show: "Show password",
215
+ hide: "Hide password",
216
+ generate: "Generate a password",
217
+ copy: "Copy password",
218
+ strength: "Password strength"
219
+ },
220
+ passwordStrength: {
221
+ tooShort: "Too short",
222
+ weak: "Weak",
223
+ fair: "Fair",
224
+ good: "Good",
225
+ strong: "Strong"
226
+ },
227
+ preset: {
228
+ default: "Default",
229
+ defaultDescription: "Geist, indigo accent",
230
+ suedtirolDescription: "Funnel, forest and lime",
231
+ spotfishDescription: "Unbounded, signal yellow"
232
+ },
233
+ progress: {
234
+ label: "Progress"
235
+ },
236
+ prompt: {
237
+ title: "Enter a value"
238
+ },
239
+ saveBar: {
240
+ message: "You have unsaved changes"
241
+ },
242
+ settings: {
243
+ title: "Settings",
244
+ close: "Close settings",
245
+ sections: "Settings sections",
246
+ signOut: "Sign out",
247
+ session: "Session",
248
+ sessionDescription: "Sign out of this device.",
249
+ accountDescription: "Your profile and session.",
250
+ appearance: "Appearance",
251
+ appearanceDescription: "Theme and style of the interface."
252
+ },
253
+ shell: {
254
+ sidebar: "Sidebar",
255
+ openNavigation: "Open navigation",
256
+ skipToContent: "Skip to content",
257
+ main: "Main",
258
+ collapse: "Collapse sidebar",
259
+ expand: "Expand sidebar"
260
+ },
261
+ stat: {
262
+ increased: "Increased by",
263
+ decreased: "Decreased by"
264
+ },
265
+ table: {
266
+ selectAll: "Select all rows",
267
+ loading: "Loading rows",
268
+ selectRow: "Select row {index}"
269
+ },
270
+ theme: {
271
+ label: "Theme",
272
+ system: "System",
273
+ light: "Light",
274
+ dark: "Dark"
275
+ },
276
+ toaster: {
277
+ label: "Notifications",
278
+ dismiss: "Dismiss notification"
279
+ },
280
+ tree: {
281
+ label: "Tree"
282
+ }
283
+ }
284
+ };
@@ -0,0 +1,16 @@
1
+ import { en } from './en';
2
+ import { it } from './it';
3
+ import type { DeepPartial, KLocale, KMessages, MessageKey, MessageParams } from './types';
4
+ export { en, it };
5
+ export type * from './types';
6
+ export declare const builtinLocales: Readonly<Record<string, KLocale>>;
7
+ export interface DefineLocaleOptions {
8
+ code: string;
9
+ dir?: 'ltr' | 'rtl';
10
+ messages?: DeepPartial<KMessages>;
11
+ base?: KLocale;
12
+ }
13
+ export declare function defineLocale(options: DefineLocaleOptions): KLocale;
14
+ export declare function resolveBuiltinLocale(code: string | undefined): KLocale;
15
+ export declare function formatLocaleMessage(code: string, template: string, params?: MessageParams): string;
16
+ export declare function translate(locale: KLocale, key: MessageKey, params?: MessageParams): string;
@@ -0,0 +1,50 @@
1
+ import { formatMessage } from "../internal/core/text.mjs";
2
+ import { en } from "./en.mjs";
3
+ import { it } from "./it.mjs";
4
+ export { en, it };
5
+ export const builtinLocales = { en, it };
6
+ function mergeMessages(base, overrides) {
7
+ if (!overrides) return base;
8
+ const merged = { ...base };
9
+ for (const [key, value] of Object.entries(overrides)) {
10
+ if (value === void 0) continue;
11
+ const current = merged[key];
12
+ merged[key] = typeof value === "object" && value !== null && typeof current === "object" ? mergeMessages(current, value) : value;
13
+ }
14
+ return merged;
15
+ }
16
+ export function defineLocale(options) {
17
+ const base = options.base ?? builtinLocales[options.code.split("-")[0]] ?? en;
18
+ return {
19
+ code: options.code,
20
+ dir: options.dir ?? base.dir,
21
+ messages: mergeMessages(base.messages, options.messages)
22
+ };
23
+ }
24
+ export function resolveBuiltinLocale(code) {
25
+ if (!code) return en;
26
+ return builtinLocales[code] ?? builtinLocales[code.split("-")[0]] ?? en;
27
+ }
28
+ const pluralRules = /* @__PURE__ */ new Map();
29
+ function pluralForm(code, forms, count) {
30
+ if (forms.length === 3 && count === 0) return forms[0];
31
+ let rules = pluralRules.get(code);
32
+ if (!rules) {
33
+ rules = new Intl.PluralRules(code);
34
+ pluralRules.set(code, rules);
35
+ }
36
+ const one = rules.select(count) === "one";
37
+ const singular = forms.length === 3 ? forms[1] : forms[0];
38
+ return one ? singular : forms[forms.length - 1];
39
+ }
40
+ export function formatLocaleMessage(code, template, params = {}) {
41
+ const forms = template.split(/\s*\|\s*/);
42
+ const count = typeof params.count === "number" ? params.count : void 0;
43
+ const chosen = forms.length > 1 && count !== void 0 ? pluralForm(code, forms, count) : forms[0];
44
+ return formatMessage(chosen, params);
45
+ }
46
+ export function translate(locale, key, params = {}) {
47
+ const [group, name] = key.split(".");
48
+ const template = locale.messages[group][name] ?? key;
49
+ return formatLocaleMessage(locale.code, template, params);
50
+ }
@@ -0,0 +1,2 @@
1
+ import type { KLocale } from './types';
2
+ export declare const it: KLocale;
@@ -0,0 +1,284 @@
1
+ export const it = {
2
+ code: "it",
3
+ dir: "ltr",
4
+ messages: {
5
+ common: {
6
+ cancel: "Annulla",
7
+ confirm: "Conferma",
8
+ close: "Chiudi",
9
+ ok: "OK",
10
+ clear: "Cancella",
11
+ loading: "Caricamento",
12
+ areYouSure: "Sei sicuro?",
13
+ noResults: "Nessun risultato",
14
+ remove: "Rimuovi",
15
+ dismiss: "Chiudi",
16
+ copy: "Copia",
17
+ copied: "Copiato",
18
+ search: "Cerca",
19
+ back: "Indietro",
20
+ save: "Salva",
21
+ saveChanges: "Salva modifiche",
22
+ discard: "Scarta",
23
+ retry: "Riprova",
24
+ unsavedChanges: "Modifiche non salvate",
25
+ somethingWentWrong: "Qualcosa \xE8 andato storto",
26
+ selected: "{count} selezionato | {count} selezionati"
27
+ },
28
+ form: {
29
+ required: "Campo obbligatorio",
30
+ min: "Deve essere almeno {min}",
31
+ max: "Deve essere al massimo {max}",
32
+ minLength: "Deve avere almeno {count} carattere | Deve avere almeno {count} caratteri",
33
+ maxLength: "Deve avere al massimo {count} carattere | Deve avere al massimo {count} caratteri",
34
+ minItems: "Seleziona almeno {count} elemento | Seleziona almeno {count} elementi",
35
+ maxItems: "Seleziona al massimo {count} elemento | Seleziona al massimo {count} elementi",
36
+ pattern: "Formato non valido",
37
+ invalid: "Valore non valido"
38
+ },
39
+ editor: {
40
+ bold: "Grassetto",
41
+ italic: "Corsivo",
42
+ strike: "Barrato",
43
+ code: "Codice",
44
+ heading: "Titolo {level}",
45
+ bulletList: "Elenco puntato",
46
+ orderedList: "Elenco numerato",
47
+ blockquote: "Citazione",
48
+ link: "Link",
49
+ undo: "Annulla",
50
+ redo: "Ripeti",
51
+ toolbar: "Formattazione",
52
+ linkUrl: "URL del link",
53
+ applyLink: "Applica",
54
+ removeLink: "Rimuovi link",
55
+ characters: "{count} carattere | {count} caratteri"
56
+ },
57
+ grid: {
58
+ noRows: "Nessuna riga da mostrare",
59
+ loading: "Caricamento",
60
+ search: "Cerca",
61
+ clearSearch: "Cancella ricerca",
62
+ toolbar: "Strumenti griglia",
63
+ columns: "Colonne",
64
+ resetColumns: "Ripristina colonne",
65
+ exportCsv: "Esporta CSV",
66
+ rowsPerPage: "Righe per pagina",
67
+ previousPage: "Pagina precedente",
68
+ nextPage: "Pagina successiva",
69
+ pageStatus: "{from}-{to} di {total}",
70
+ selected: "{count} selezionati",
71
+ copied: "Copiato negli appunti",
72
+ yes: "S\xEC",
73
+ no: "No"
74
+ },
75
+ account: {
76
+ label: "Account"
77
+ },
78
+ alert: {
79
+ title: "Attenzione"
80
+ },
81
+ appearance: {
82
+ theme: "Tema",
83
+ themeDescription: "Scegli l'aspetto dell'interfaccia. Sistema segue il tuo dispositivo.",
84
+ style: "Stile",
85
+ styleDescription: "Colori del brand, caratteri e raggio degli angoli."
86
+ },
87
+ auth: {
88
+ aside: "Informazioni"
89
+ },
90
+ avatar: {
91
+ label: "Avatar",
92
+ online: "online",
93
+ away: "assente",
94
+ busy: "occupato",
95
+ offline: "offline"
96
+ },
97
+ avatarGroup: {
98
+ more: "altri"
99
+ },
100
+ breadcrumbs: {
101
+ label: "Percorso"
102
+ },
103
+ calendar: {
104
+ previousMonth: "Mese precedente",
105
+ nextMonth: "Mese successivo"
106
+ },
107
+ chart: {
108
+ empty: "Nessun dato da mostrare",
109
+ loading: "Caricamento grafico"
110
+ },
111
+ colorInput: {
112
+ pick: "Scegli un colore",
113
+ swatches: "Colori predefiniti"
114
+ },
115
+ combobox: {
116
+ clear: "Cancella selezione",
117
+ toggle: "Mostra opzioni",
118
+ list: "Opzioni",
119
+ create: 'Crea "{query}"',
120
+ results: "{count} risultato disponibile | {count} risultati disponibili"
121
+ },
122
+ commandPalette: {
123
+ placeholder: "Digita un comando o cerca",
124
+ label: "Palette comandi",
125
+ recent: "Recenti",
126
+ minQuery: "Continua a digitare per cercare",
127
+ error: "Ricerca non riuscita. Riprova.",
128
+ results: "{count} risultato | {count} risultati",
129
+ move: "per spostarti",
130
+ select: "per selezionare",
131
+ close: "per chiudere"
132
+ },
133
+ contextMenu: {
134
+ label: "Menu contestuale"
135
+ },
136
+ dashboardLayout: {
137
+ pages: "Pagine",
138
+ searchPlaceholder: "Cerca pagine e azioni"
139
+ },
140
+ dashboardPage: {
141
+ stats: "Dati principali"
142
+ },
143
+ datePicker: {
144
+ placeholder: "Scegli una data",
145
+ clear: "Cancella data",
146
+ dialog: "Scegli la data",
147
+ range: "{start} - {end}"
148
+ },
149
+ descriptionList: {
150
+ empty: "Non impostato"
151
+ },
152
+ detailPage: {
153
+ sections: "Sezioni",
154
+ details: "Dettagli",
155
+ error: "Impossibile caricare questo elemento"
156
+ },
157
+ dirtyGuard: {
158
+ title: "Scartare le modifiche non salvate?",
159
+ description: "Le modifiche apportate a questa pagina andranno perse.",
160
+ confirm: "Scarta modifiche",
161
+ cancel: "Continua a modificare"
162
+ },
163
+ emptyPage: {
164
+ title: "Benvenuto a bordo",
165
+ steps: "Per iniziare",
166
+ done: "(completato)",
167
+ todo: "(da fare)"
168
+ },
169
+ errorPage: {
170
+ home: "Torna alla home",
171
+ back: "Torna indietro",
172
+ retry: "Riprova",
173
+ badRequestTitle: "Richiesta non valida",
174
+ badRequestMessage: "Non \xE8 stato possibile comprendere la richiesta.",
175
+ signInTitle: "Accesso richiesto",
176
+ signInMessage: "Devi accedere per vedere questa pagina.",
177
+ forbiddenTitle: "Accesso negato",
178
+ forbiddenMessage: "Non hai i permessi per vedere questa pagina.",
179
+ notFoundTitle: "Pagina non trovata",
180
+ notFoundMessage: "La pagina che cerchi non esiste o \xE8 stata spostata.",
181
+ serverTitle: "Qualcosa \xE8 andato storto",
182
+ serverMessage: "Si \xE8 verificato un errore imprevisto. Riprova tra un momento.",
183
+ unavailableTitle: "Servizio non disponibile",
184
+ unavailableMessage: "Siamo in manutenzione. Torniamo presto."
185
+ },
186
+ fileInput: {
187
+ title: "Trascina i file qui o fai clic per sfogliare",
188
+ drop: "Rilascia per aggiungere i file",
189
+ list: "File selezionati",
190
+ selected: "{count} file selezionato | {count} file selezionati"
191
+ },
192
+ filterPills: {
193
+ label: "Filtri"
194
+ },
195
+ listPage: {
196
+ toolbar: "Filtra i risultati",
197
+ emptyTitle: "Ancora niente qui",
198
+ noResultsDescription: "Prova una ricerca diversa o cancella i filtri.",
199
+ clearFilters: "Cancella filtri"
200
+ },
201
+ numberInput: {
202
+ increase: "Aumenta",
203
+ decrease: "Diminuisci"
204
+ },
205
+ pagination: {
206
+ label: "Paginazione",
207
+ page: "Pagina",
208
+ previous: "Pagina precedente",
209
+ next: "Pagina successiva",
210
+ pageSize: "Righe per pagina",
211
+ of: "di"
212
+ },
213
+ passwordInput: {
214
+ show: "Mostra password",
215
+ hide: "Nascondi password",
216
+ generate: "Genera una password",
217
+ copy: "Copia password",
218
+ strength: "Sicurezza della password"
219
+ },
220
+ passwordStrength: {
221
+ tooShort: "Troppo corta",
222
+ weak: "Debole",
223
+ fair: "Discreta",
224
+ good: "Buona",
225
+ strong: "Forte"
226
+ },
227
+ preset: {
228
+ default: "Predefinito",
229
+ defaultDescription: "Geist, accento indaco",
230
+ suedtirolDescription: "Funnel, verde bosco e lime",
231
+ spotfishDescription: "Unbounded, giallo segnale"
232
+ },
233
+ progress: {
234
+ label: "Avanzamento"
235
+ },
236
+ prompt: {
237
+ title: "Inserisci un valore"
238
+ },
239
+ saveBar: {
240
+ message: "Hai modifiche non salvate"
241
+ },
242
+ settings: {
243
+ title: "Impostazioni",
244
+ close: "Chiudi impostazioni",
245
+ sections: "Sezioni delle impostazioni",
246
+ signOut: "Esci",
247
+ session: "Sessione",
248
+ sessionDescription: "Esci da questo dispositivo.",
249
+ accountDescription: "Il tuo profilo e la tua sessione.",
250
+ appearance: "Aspetto",
251
+ appearanceDescription: "Tema e stile dell'interfaccia."
252
+ },
253
+ shell: {
254
+ sidebar: "Barra laterale",
255
+ openNavigation: "Apri navigazione",
256
+ skipToContent: "Vai al contenuto",
257
+ main: "Principale",
258
+ collapse: "Comprimi barra laterale",
259
+ expand: "Espandi barra laterale"
260
+ },
261
+ stat: {
262
+ increased: "Aumento di",
263
+ decreased: "Diminuzione di"
264
+ },
265
+ table: {
266
+ selectAll: "Seleziona tutte le righe",
267
+ loading: "Caricamento righe",
268
+ selectRow: "Seleziona riga {index}"
269
+ },
270
+ theme: {
271
+ label: "Tema",
272
+ system: "Sistema",
273
+ light: "Chiaro",
274
+ dark: "Scuro"
275
+ },
276
+ toaster: {
277
+ label: "Notifiche",
278
+ dismiss: "Chiudi notifica"
279
+ },
280
+ tree: {
281
+ label: "Albero"
282
+ }
283
+ }
284
+ };