@xleddyl/443-components-vue 0.7.0 → 0.8.1

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.
package/README.md CHANGED
@@ -45,7 +45,7 @@ Every component is registered with the prefix (`Button.vue` becomes `<KButton>`)
45
45
  | `prefix` | `'K'` | Component name prefix. |
46
46
  | `css` | `true` | Injects `@xleddyl/443-components-vue/style.css` (and the CSS of enabled optional groups). |
47
47
  | `cssLayers` | `'theme, base, k, components, utilities'` | Cascade layer order declared before any other CSS. The library layer `k` sits after the `theme` and `base` layers of Tailwind (so preflight does not reset components) and before `components` and `utilities` (so host classes win). `false` declares nothing. See [Scoping](#scoping). |
48
- | `locale` | `'en'` | Language of the built-in copy: `'en'`, `'it'`, or any code completed with `messages`. With `@nuxtjs/i18n` the current i18n locale wins. See [Languages](#languages). |
48
+ | `locale` | `'en'` | Language of the built-in copy: `'en'`, `'it'`, `'de'`, or any code completed with `messages`. With `@nuxtjs/i18n` the current i18n locale wins. See [Languages](#languages). |
49
49
  | `messages` | `{}` | Overrides per locale code, for example `{ it: { common: { cancel: 'Indietro' } } }`. |
50
50
  | `composables` | `true` | Auto-imports the composables. |
51
51
  | `global` | `false` | Puts `k-root` and `data-theme` on `<html>` for apps that are dashboard only. |
@@ -108,6 +108,8 @@ Tokens live on `.k-root`, never on `:root`. Override them on a root element: Roo
108
108
 
109
109
  Input tokens, declared only on the outermost root so nested roots inherit them: `--k-accent`, `--k-accent-contrast`, `--k-font-sans`, `--k-font-mono`, `--k-font-size`, `--k-font-features`, `--k-line-height`, `--k-radius-scale`. Every other token (surfaces, text, lines, accent shades, status colors, radii, shadows, motion) is derived per root, so a nested root with its own `theme` or `accent` re-themes a region. The full list is in [CONVENTIONS.md](./CONVENTIONS.md#tokens).
110
110
 
111
+ A few component tokens are unset by default and only exist to be overridden on a root: `--k-scrim-blur` (backdrop blur of Modal and Drawer, `3px`), `--k-badge-radius` (Badge corners, `--k-radius-full`), `--k-grid-header-background`, `--k-grid-header-text` and `--k-grid-header-font` (DataGrid header, `--k-subtle`, `--k-text-muted` and `--k-font-sans`).
112
+
111
113
  Contrast is part of the tokens: `--k-text-muted` is the lightest text color (4.5:1), `--k-text-dimmed` is for icons and decoration (3:1), `--k-ring` is an opaque focus color (3:1 on every surface), and `--k-danger-text`, `--k-success-text`, `--k-warning-text`, `--k-info-text` color status text (4.5:1, also on soft tints). Every preset sets them for light and dark; keep the same ratios when you override them.
112
114
 
113
115
  Themes: `data-theme="light"` or `"dark"` forces the scheme, `system` (or no attribute) follows the OS. `useTheme()` returns `preference`, `set()` and `cycle()`; `KThemeSwitch` is a ready control.
@@ -202,7 +204,7 @@ Each collection is a separate chunk loaded the first time one of its icons rende
202
204
 
203
205
  ## Languages
204
206
 
205
- The components have no hardcoded copy. Every label, placeholder, status text and validation message comes from a typed catalog (`KMessages`), with English (`en`) and Italian (`it`) built in. Plurals are `'one | other'` templates with a `{count}` parameter.
207
+ The components have no hardcoded copy. Every label, placeholder, status text and validation message comes from a typed catalog (`KMessages`), with English (`en`), Italian (`it`) and German (`de`) built in. Plurals are `'one | other'` templates with a `{count}` parameter.
206
208
 
207
209
  ```ts
208
210
  k: { locale: 'it', messages: { it: { common: { cancel: 'Indietro' } } } }
@@ -591,6 +593,7 @@ Accessibility related props and defaults:
591
593
  - Copy props that contain a value are templates: `removeLabel` (`'Remove {label}'`) on `Tag`, `Combobox` and `FileInput`, `moreLabel` (`'{count} more'`) on `AvatarGroup`, `pageLabel` (`'Page {page}'`) on `Pagination`. `ListPage` takes `resultsText: (count) => string` for the announced result count, `ColorInput` takes `invalidText`.
592
594
  - `ColorInput` `swatches` accept `{ value, label }` objects (a radio group named by `label` or the hex). `PasswordInput` picks `autocomplete="new-password"` with `generate` or `strength`, `current-password` otherwise.
593
595
  - `Tree` with `reorderable` shows small move buttons (up, down, indent, outdent) on the hovered or focused row, as a single pointer alternative to dragging. Set `patterns` on `LineChart` and `BarChart` to tell series apart without color (dash and point style per line, a fill pattern per bar series, mirrored in the legend); it is off by default.
596
+ - `DataGrid` takes `gridOptions` for any AG Grid option it does not wrap (`rowHeight`, `onCellEditingStopped`, `onFilterChanged`, ...). They are applied before the props of `DataGrid`, so its own props win, and handlers from both run.
594
597
  - `DataGrid` translates the AG Grid ARIA strings through the catalog (`grid.*`; your own `localeText` still wins) and announces row count changes.
595
598
 
596
599
  ## Browser support
@@ -27,6 +27,7 @@
27
27
  >
28
28
  <AgGridVue
29
29
  v-if="mounted"
30
+ v-bind="gridOptions"
30
31
  class="k-data-grid-ag"
31
32
  :theme="theme"
32
33
  :row-data="rows"
@@ -127,7 +128,8 @@ const props = defineProps({
127
128
  total: { type: Number, required: false, default: 0 },
128
129
  pageSizes: { type: Array, required: false, default: () => [10, 25, 50, 100] },
129
130
  messages: { type: Object, required: false },
130
- localeText: { type: Object, required: false }
131
+ localeText: { type: Object, required: false },
132
+ gridOptions: { type: Object, required: false }
131
133
  });
132
134
  const emit = defineEmits(["rowClick", "selectionChange", "sortChange", "copy"]);
133
135
  const query = defineModel("query", { type: String, ...{ default: "" } });
@@ -1,4 +1,4 @@
1
- import type { ColDef, GridApi, RowClickedEvent } from 'ag-grid-community';
1
+ import type { ColDef, GridApi, GridOptions, RowClickedEvent } from 'ag-grid-community';
2
2
  import type { GridDensity, GridMessages, GridSelection, GridSortChange } from './types';
3
3
  declare const __VLS_export: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
4
4
  props: import("vue").PublicProps & __VLS_PrettifyLocal<({
@@ -25,6 +25,7 @@ declare const __VLS_export: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_se
25
25
  pageSizes?: number[];
26
26
  messages?: Partial<GridMessages>;
27
27
  localeText?: Record<string, string>;
28
+ gridOptions?: GridOptions<T>;
28
29
  } & {
29
30
  query?: string;
30
31
  page?: number;
@@ -14,8 +14,9 @@ export function createGridTheme(density) {
14
14
  textColor: "var(--k-text-toned)",
15
15
  borderColor: "var(--k-line)",
16
16
  chromeBackgroundColor: "var(--k-subtle)",
17
- headerBackgroundColor: "var(--k-subtle)",
18
- headerTextColor: "var(--k-text-muted)",
17
+ headerBackgroundColor: "var(--k-grid-header-background, var(--k-subtle))",
18
+ headerTextColor: "var(--k-grid-header-text, var(--k-text-muted))",
19
+ headerFontFamily: "var(--k-grid-header-font, var(--k-font-sans))",
19
20
  headerFontSize: 12,
20
21
  headerFontWeight: 500,
21
22
  headerRowBorder: { color: "var(--k-line)" },
package/dist/index.d.ts CHANGED
@@ -7,7 +7,7 @@ export * from './components/overlays';
7
7
  export * from './components/templates';
8
8
  export * from './composables';
9
9
  export { builtinIcons } from './icons/builtin';
10
- export { builtinLocales, defineLocale, en, it } from './locale';
10
+ export { builtinLocales, de, defineLocale, en, it } from './locale';
11
11
  export type { DefineLocaleOptions } from './locale';
12
12
  export type * from './locale/types';
13
13
  export type { BuiltinIconName } from './icons/builtin';
package/dist/index.mjs CHANGED
@@ -7,7 +7,7 @@ export * from "./components/overlays/index.mjs";
7
7
  export * from "./components/templates/index.mjs";
8
8
  export * from "./composables/index.mjs";
9
9
  export { builtinIcons } from "./icons/builtin.mjs";
10
- export { builtinLocales, defineLocale, en, it } from "./locale/index.mjs";
10
+ export { builtinLocales, de, defineLocale, en, it } from "./locale/index.mjs";
11
11
  export {
12
12
  FIELD_KEY,
13
13
  FORM_KEY,
@@ -0,0 +1,2 @@
1
+ import type { KLocale } from './types';
2
+ export declare const de: KLocale;
@@ -0,0 +1,354 @@
1
+ export const de = {
2
+ code: "de",
3
+ dir: "ltr",
4
+ messages: {
5
+ common: {
6
+ cancel: "Abbrechen",
7
+ confirm: "Best\xE4tigen",
8
+ close: "Schlie\xDFen",
9
+ ok: "OK",
10
+ clear: "Leeren",
11
+ loading: "Wird geladen",
12
+ areYouSure: "Bist du sicher?",
13
+ noResults: "Keine Ergebnisse",
14
+ remove: "Entfernen",
15
+ dismiss: "Ausblenden",
16
+ copy: "Kopieren",
17
+ copied: "Kopiert",
18
+ search: "Suchen",
19
+ back: "Zur\xFCck",
20
+ save: "Speichern",
21
+ saveChanges: "\xC4nderungen speichern",
22
+ discard: "Verwerfen",
23
+ retry: "Erneut versuchen",
24
+ unsavedChanges: "Ungespeicherte \xC4nderungen",
25
+ somethingWentWrong: "Etwas ist schiefgelaufen",
26
+ selected: "{count} ausgew\xE4hlt",
27
+ removeItem: "{label} entfernen",
28
+ opensInNewTab: "(\xF6ffnet in einem neuen Tab)",
29
+ copyFailed: "Kopieren fehlgeschlagen",
30
+ readonly: "Schreibgesch\xFCtzt",
31
+ empty: "Leer"
32
+ },
33
+ form: {
34
+ required: "Dieses Feld ist erforderlich",
35
+ min: "Muss mindestens {min} sein",
36
+ max: "Darf h\xF6chstens {max} sein",
37
+ minLength: "Mindestens {count} Zeichen | Mindestens {count} Zeichen",
38
+ maxLength: "H\xF6chstens {count} Zeichen | H\xF6chstens {count} Zeichen",
39
+ minItems: "W\xE4hle mindestens {count} Eintrag | W\xE4hle mindestens {count} Eintr\xE4ge",
40
+ maxItems: "W\xE4hle h\xF6chstens {count} Eintrag | W\xE4hle h\xF6chstens {count} Eintr\xE4ge",
41
+ pattern: "Ung\xFCltiges Format",
42
+ invalid: "Ung\xFCltiger Wert",
43
+ requiredHint: "(erforderlich)"
44
+ },
45
+ editor: {
46
+ bold: "Fett",
47
+ italic: "Kursiv",
48
+ strike: "Durchgestrichen",
49
+ code: "Code",
50
+ heading: "\xDCberschrift {level}",
51
+ bulletList: "Aufz\xE4hlung",
52
+ orderedList: "Nummerierte Liste",
53
+ blockquote: "Zitat",
54
+ link: "Link",
55
+ undo: "R\xFCckg\xE4ngig",
56
+ redo: "Wiederholen",
57
+ toolbar: "Formatierung",
58
+ linkUrl: "Link-URL",
59
+ applyLink: "\xDCbernehmen",
60
+ removeLink: "Link entfernen",
61
+ characters: "{count} Zeichen | {count} Zeichen",
62
+ limit: "{count} von {max} Zeichen",
63
+ limitReached: "Zeichenlimit erreicht"
64
+ },
65
+ grid: {
66
+ noRows: "Keine Zeilen vorhanden",
67
+ loading: "Wird geladen",
68
+ search: "Suchen",
69
+ clearSearch: "Suche leeren",
70
+ toolbar: "Tabellenwerkzeuge",
71
+ columns: "Spalten",
72
+ resetColumns: "Spalten zur\xFCcksetzen",
73
+ exportCsv: "CSV exportieren",
74
+ rowsPerPage: "Zeilen pro Seite",
75
+ previousPage: "Vorherige Seite",
76
+ nextPage: "N\xE4chste Seite",
77
+ pageStatus: "{from}-{to} von {total}",
78
+ selected: "{count} ausgew\xE4hlt",
79
+ copied: "In die Zwischenablage kopiert",
80
+ yes: "Ja",
81
+ no: "Nein",
82
+ label: "Datentabelle",
83
+ rowCount: "Keine Zeilen | {count} Zeile | {count} Zeilen",
84
+ checked: "ausgew\xE4hlt",
85
+ unchecked: "nicht ausgew\xE4hlt",
86
+ indeterminate: "teilweise ausgew\xE4hlt",
87
+ selectRowHint: "Leertaste dr\xFCcken, um diese Zeile auszuw\xE4hlen",
88
+ deselectRowHint: "Leertaste dr\xFCcken, um die Auswahl dieser Zeile aufzuheben",
89
+ toggleRowHint: "Leertaste dr\xFCcken, um die Zeile aus- oder abzuw\xE4hlen",
90
+ rowSelectionDisabled: "Diese Zeile kann nicht ausgew\xE4hlt werden",
91
+ selectAllHint: "Leertaste dr\xFCcken, um alle Zeilen aus- oder abzuw\xE4hlen",
92
+ selectAllRows: "Alle Zeilen ausw\xE4hlen",
93
+ sortHint: "Eingabetaste dr\xFCcken, um zu sortieren",
94
+ tooltip: "Tooltip"
95
+ },
96
+ account: {
97
+ label: "Konto"
98
+ },
99
+ alert: {
100
+ title: "Hinweis"
101
+ },
102
+ appearance: {
103
+ theme: "Design",
104
+ themeDescription: "W\xE4hle das Aussehen der Oberfl\xE4che. System folgt deinem Ger\xE4t.",
105
+ style: "Stil",
106
+ styleDescription: "Markenfarben, Schriften und Eckenradius."
107
+ },
108
+ auth: {
109
+ aside: "Info"
110
+ },
111
+ avatar: {
112
+ label: "Avatar",
113
+ online: "online",
114
+ away: "abwesend",
115
+ busy: "besch\xE4ftigt",
116
+ offline: "offline"
117
+ },
118
+ avatarGroup: {
119
+ more: "{count} weitere"
120
+ },
121
+ breadcrumbs: {
122
+ label: "Brotkrumennavigation"
123
+ },
124
+ calendar: {
125
+ previousMonth: "Vorheriger Monat",
126
+ nextMonth: "N\xE4chster Monat",
127
+ rangeStart: "Beginn des Zeitraums",
128
+ rangeEnd: "Ende des Zeitraums"
129
+ },
130
+ chart: {
131
+ empty: "Keine Daten vorhanden",
132
+ loading: "Diagramm wird geladen",
133
+ legend: "Legende"
134
+ },
135
+ colorInput: {
136
+ pick: "Farbe w\xE4hlen",
137
+ swatches: "Vordefinierte Farben",
138
+ invalid: "Gib eine Hex-Farbe wie #3366ff ein"
139
+ },
140
+ combobox: {
141
+ clear: "Auswahl leeren",
142
+ toggle: "Optionen anzeigen",
143
+ list: "Optionen",
144
+ create: '"{query}" erstellen',
145
+ results: "{count} Ergebnis verf\xFCgbar | {count} Ergebnisse verf\xFCgbar"
146
+ },
147
+ commandPalette: {
148
+ placeholder: "Befehl eingeben oder suchen",
149
+ label: "Befehlspalette",
150
+ recent: "Zuletzt verwendet",
151
+ minQuery: "Weiter tippen, um zu suchen",
152
+ error: "Suche fehlgeschlagen. Versuche es erneut.",
153
+ results: "{count} Ergebnis | {count} Ergebnisse",
154
+ move: "zum Bewegen",
155
+ select: "zum Ausw\xE4hlen",
156
+ close: "zum Schlie\xDFen"
157
+ },
158
+ contextMenu: {
159
+ label: "Kontextmen\xFC"
160
+ },
161
+ dashboardLayout: {
162
+ pages: "Seiten",
163
+ searchPlaceholder: "Seiten und Aktionen suchen"
164
+ },
165
+ dashboardPage: {
166
+ stats: "Kennzahlen"
167
+ },
168
+ datePicker: {
169
+ placeholder: "Datum w\xE4hlen",
170
+ clear: "Datum leeren",
171
+ dialog: "Datum ausw\xE4hlen",
172
+ range: "{start} bis {end}",
173
+ rangePending: "{start} - ..."
174
+ },
175
+ descriptionList: {
176
+ empty: "Nicht festgelegt"
177
+ },
178
+ detailPage: {
179
+ sections: "Abschnitte",
180
+ details: "Details",
181
+ error: "Dieser Eintrag konnte nicht geladen werden"
182
+ },
183
+ dirtyGuard: {
184
+ title: "Ungespeicherte \xC4nderungen verwerfen?",
185
+ description: "Die \xC4nderungen auf dieser Seite gehen verloren.",
186
+ confirm: "\xC4nderungen verwerfen",
187
+ cancel: "Weiter bearbeiten"
188
+ },
189
+ emptyPage: {
190
+ title: "Willkommen",
191
+ steps: "Erste Schritte",
192
+ done: "(erledigt)",
193
+ todo: "(offen)"
194
+ },
195
+ errorPage: {
196
+ home: "Zur Startseite",
197
+ back: "Zur\xFCck",
198
+ retry: "Erneut versuchen",
199
+ badRequestTitle: "Ung\xFCltige Anfrage",
200
+ badRequestMessage: "Die Anfrage konnte nicht verarbeitet werden.",
201
+ signInTitle: "Anmeldung erforderlich",
202
+ signInMessage: "Du musst dich anmelden, um diese Seite zu sehen.",
203
+ forbiddenTitle: "Zugriff verweigert",
204
+ forbiddenMessage: "Du hast keine Berechtigung, diese Seite zu sehen.",
205
+ notFoundTitle: "Seite nicht gefunden",
206
+ notFoundMessage: "Die gesuchte Seite existiert nicht oder wurde verschoben.",
207
+ serverTitle: "Etwas ist schiefgelaufen",
208
+ serverMessage: "Ein unerwarteter Fehler ist aufgetreten. Versuche es gleich noch einmal.",
209
+ unavailableTitle: "Dienst nicht verf\xFCgbar",
210
+ unavailableMessage: "Wir f\xFChren Wartungsarbeiten durch. Bald wieder da."
211
+ },
212
+ fileInput: {
213
+ title: "Dateien hier ablegen oder zum Durchsuchen klicken",
214
+ drop: "Loslassen, um Dateien hinzuzuf\xFCgen",
215
+ list: "Ausgew\xE4hlte Dateien",
216
+ selected: "{count} Datei ausgew\xE4hlt | {count} Dateien ausgew\xE4hlt",
217
+ directoryTitle: "Ordner hier ablegen oder zum Durchsuchen klicken",
218
+ mixedTitle: "Dateien oder Ordner hier ablegen oder zum Durchsuchen klicken",
219
+ browseDirectory: "Ordner hochladen",
220
+ loading: "Wird hochgeladen",
221
+ added: "{count} Datei hinzugef\xFCgt | {count} Dateien hinzugef\xFCgt",
222
+ rejected: "{count} Datei wurde nicht akzeptiert | {count} Dateien wurden nicht akzeptiert"
223
+ },
224
+ filterPills: {
225
+ label: "Filter"
226
+ },
227
+ listPage: {
228
+ toolbar: "Ergebnisse filtern",
229
+ emptyTitle: "Noch nichts vorhanden",
230
+ noResultsDescription: "Versuche eine andere Suche oder entferne die Filter.",
231
+ clearFilters: "Filter entfernen",
232
+ results: "Keine Ergebnisse | {count} Ergebnis | {count} Ergebnisse"
233
+ },
234
+ numberInput: {
235
+ increase: "Erh\xF6hen",
236
+ decrease: "Verringern"
237
+ },
238
+ pagination: {
239
+ label: "Seitennavigation",
240
+ page: "Seite {page}",
241
+ previous: "Vorherige Seite",
242
+ next: "N\xE4chste Seite",
243
+ pageSize: "Zeilen pro Seite",
244
+ of: "von"
245
+ },
246
+ passwordInput: {
247
+ show: "Passwort anzeigen",
248
+ hide: "Passwort verbergen",
249
+ generate: "Passwort generieren",
250
+ copy: "Passwort kopieren",
251
+ strength: "Passwortst\xE4rke"
252
+ },
253
+ passwordStrength: {
254
+ tooShort: "Zu kurz",
255
+ weak: "Schwach",
256
+ fair: "Ausreichend",
257
+ good: "Gut",
258
+ strong: "Stark"
259
+ },
260
+ preset: {
261
+ default: "Standard",
262
+ defaultDescription: "Geist, Indigo-Akzent",
263
+ suedtirolDescription: "Funnel, Waldgr\xFCn und Limette",
264
+ spotfishDescription: "Unbounded, Signalgelb"
265
+ },
266
+ progress: {
267
+ label: "Fortschritt"
268
+ },
269
+ prompt: {
270
+ title: "Wert eingeben"
271
+ },
272
+ saveBar: {
273
+ message: "Du hast ungespeicherte \xC4nderungen"
274
+ },
275
+ selectionBar: {
276
+ label: "Auswahl",
277
+ selectedOf: "{count} von {total} ausgew\xE4hlt",
278
+ selectAll: "Alle {count} ausw\xE4hlen",
279
+ clear: "Auswahl aufheben",
280
+ cleared: "Auswahl aufgehoben"
281
+ },
282
+ settings: {
283
+ title: "Einstellungen",
284
+ close: "Einstellungen schlie\xDFen",
285
+ sections: "Einstellungsbereiche",
286
+ signOut: "Abmelden",
287
+ session: "Sitzung",
288
+ sessionDescription: "Auf diesem Ger\xE4t abmelden.",
289
+ accountDescription: "Dein Profil und deine Sitzung.",
290
+ appearance: "Darstellung",
291
+ appearanceDescription: "Design und Stil der Oberfl\xE4che."
292
+ },
293
+ shell: {
294
+ sidebar: "Seitenleiste",
295
+ openNavigation: "Navigation \xF6ffnen",
296
+ skipToContent: "Zum Inhalt springen",
297
+ main: "Hauptnavigation",
298
+ closeNavigation: "Navigation schlie\xDFen",
299
+ navigation: "Navigation"
300
+ },
301
+ stat: {
302
+ increased: "Gestiegen um",
303
+ decreased: "Gesunken um",
304
+ favorable: "positiv",
305
+ unfavorable: "negativ"
306
+ },
307
+ table: {
308
+ selectAll: "Alle Zeilen ausw\xE4hlen",
309
+ loading: "Zeilen werden geladen",
310
+ selectRow: "Zeile {index} ausw\xE4hlen",
311
+ label: "Tabelle",
312
+ sortedBy: "Sortiert nach {column}, {direction}",
313
+ ascending: "aufsteigend",
314
+ descending: "absteigend",
315
+ sortCleared: "Sortierung entfernt"
316
+ },
317
+ theme: {
318
+ label: "Design",
319
+ system: "System",
320
+ light: "Hell",
321
+ dark: "Dunkel"
322
+ },
323
+ toaster: {
324
+ label: "Benachrichtigungen",
325
+ dismiss: "Benachrichtigung schlie\xDFen",
326
+ actionHint: "{hotkey} dr\xFCcken, um {action} zu erreichen"
327
+ },
328
+ tree: {
329
+ label: "Baum",
330
+ empty: "Keine Eintr\xE4ge",
331
+ reorderHint: "Alt mit Pfeil nach oben oder unten dr\xFCcken, um zu verschieben",
332
+ reorderNestedHint: "Alt mit den Pfeiltasten dr\xFCcken, um zu verschieben: oben und unten \xE4ndern die Position, links und rechts die Ebene",
333
+ moved: "{label} an Position {position} von {count} verschoben",
334
+ movedInto: "{label} nach {parent} verschoben, Position {position} von {count}",
335
+ moveUp: "{label} nach oben verschieben",
336
+ moveDown: "{label} nach unten verschieben",
337
+ indent: "{label} einr\xFCcken",
338
+ outdent: "{label} ausr\xFCcken"
339
+ },
340
+ meter: {
341
+ label: "Messanzeige",
342
+ valueText: "{value}, {state}",
343
+ good: "gut",
344
+ fair: "mittel",
345
+ poor: "schlecht"
346
+ },
347
+ tone: {
348
+ danger: "Fehler",
349
+ warning: "Warnung",
350
+ info: "Information",
351
+ success: "Erfolg"
352
+ }
353
+ }
354
+ };
@@ -1,7 +1,8 @@
1
+ import { de } from './de';
1
2
  import { en } from './en';
2
3
  import { it } from './it';
3
4
  import type { DeepPartial, KLocale, KMessages, MessageKey, MessageParams } from './types';
4
- export { en, it };
5
+ export { de, en, it };
5
6
  export type * from './types';
6
7
  export declare const builtinLocales: Readonly<Record<string, KLocale>>;
7
8
  export interface DefineLocaleOptions {
@@ -1,9 +1,10 @@
1
1
  import { pluralRules } from "../internal/core/intl.mjs";
2
2
  import { formatMessage } from "../internal/core/text.mjs";
3
+ import { de } from "./de.mjs";
3
4
  import { en } from "./en.mjs";
4
5
  import { it } from "./it.mjs";
5
- export { en, it };
6
- export const builtinLocales = { en, it };
6
+ export { de, en, it };
7
+ export const builtinLocales = { de, en, it };
7
8
  function mergeMessages(base, overrides) {
8
9
  if (!overrides) return base;
9
10
  const merged = { ...base };
@@ -9,7 +9,7 @@
9
9
  height: 1.375rem;
10
10
  padding: 0 0.5rem;
11
11
  border: 1px solid transparent;
12
- border-radius: var(--k-radius-full);
12
+ border-radius: var(--k-badge-radius, var(--k-radius-full));
13
13
  font-size: 0.75rem;
14
14
  font-weight: 500;
15
15
  line-height: 1;
@@ -40,7 +40,7 @@
40
40
  .k-modal[open]::backdrop,
41
41
  .k-drawer[open]::backdrop {
42
42
  background: var(--k-scrim);
43
- backdrop-filter: blur(3px);
43
+ backdrop-filter: blur(var(--k-scrim-blur, 3px));
44
44
  }
45
45
 
46
46
  @starting-style {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xleddyl/443-components-vue",
3
- "version": "0.7.0",
3
+ "version": "0.8.1",
4
4
  "description": "Compact, scoped dashboard components for Vue and Nuxt",
5
5
  "license": "MIT",
6
6
  "author": "Edoardo Alberti (https://github.com/xleddyl)",