@konce-pt/angular 0.3.0 → 0.4.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.
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { TemplateRef, OnDestroy } from '@angular/core';
2
+ import { InjectionToken, EnvironmentProviders, TemplateRef, OnDestroy } from '@angular/core';
3
3
  import { FormValueControl, WithOptionalFieldTree, ValidationError, FormCheckboxControl } from '@angular/forms/signals';
4
4
  import { ConnectedPosition } from '@angular/cdk/overlay';
5
5
  import * as _konce_pt_angular from '@konce-pt/angular';
@@ -99,6 +99,259 @@ declare class KptFab {
99
99
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptFab, "kpt-fab", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "extended": { "alias": "extended"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
100
100
  }
101
101
 
102
+ /** Kod języka. Otwarty string — EN/PL mają podpowiedzi, ale dozwolony dowolny. */
103
+ type KptLocale = 'en' | 'pl' | (string & {});
104
+ /** Pełny słownik etykiet UI używanych przez komponenty biblioteki. */
105
+ interface KptMessages {
106
+ /** Etykiety współdzielone przez wiele komponentów (przyciski ikonowe itp.). */
107
+ common: {
108
+ close: string;
109
+ remove: string;
110
+ previous: string;
111
+ next: string;
112
+ clear: string;
113
+ done: string;
114
+ all: string;
115
+ };
116
+ paginator: {
117
+ rowsPerPage: string;
118
+ /** Interpolacja: {start}, {end}, {total}. */
119
+ range: string;
120
+ prevPage: string;
121
+ nextPage: string;
122
+ };
123
+ select: {
124
+ search: string;
125
+ noResults: string;
126
+ removeChip: string;
127
+ };
128
+ listbox: {
129
+ search: string;
130
+ empty: string;
131
+ };
132
+ dataView: {
133
+ list: string;
134
+ grid: string;
135
+ empty: string;
136
+ /** Interpolacja: {count}. */
137
+ count: string;
138
+ };
139
+ dataTable: {
140
+ search: string;
141
+ exportCsv: string;
142
+ loading: string;
143
+ empty: string;
144
+ selectAll: string;
145
+ selectRow: string;
146
+ expandRow: string;
147
+ /** Interpolacja: {column}. */
148
+ filter: string;
149
+ /** Interpolacja: {column}. */
150
+ filterMin: string;
151
+ /** Interpolacja: {column}. */
152
+ filterMax: string;
153
+ all: string;
154
+ dateRange: string;
155
+ min: string;
156
+ max: string;
157
+ };
158
+ confirm: {
159
+ header: string;
160
+ accept: string;
161
+ reject: string;
162
+ };
163
+ fileUpload: {
164
+ /** Może zawierać `<strong>…</strong>`. */
165
+ hint: string;
166
+ remove: string;
167
+ };
168
+ chipsInput: {
169
+ placeholder: string;
170
+ };
171
+ dateRange: {
172
+ placeholder: string;
173
+ from: string;
174
+ to: string;
175
+ fromTime: string;
176
+ toTime: string;
177
+ };
178
+ datepicker: {
179
+ prevMonth: string;
180
+ nextMonth: string;
181
+ prevYear: string;
182
+ nextYear: string;
183
+ prevYears: string;
184
+ nextYears: string;
185
+ calendar: string;
186
+ month: string;
187
+ time: string;
188
+ };
189
+ pickList: {
190
+ available: string;
191
+ selected: string;
192
+ moveAllRight: string;
193
+ moveRight: string;
194
+ moveLeft: string;
195
+ moveAllLeft: string;
196
+ };
197
+ orderList: {
198
+ up: string;
199
+ down: string;
200
+ };
201
+ inputNumber: {
202
+ decrement: string;
203
+ increment: string;
204
+ };
205
+ password: {
206
+ show: string;
207
+ hide: string;
208
+ /** Etykiety miernika siły (indeksy 0–4). */
209
+ strength: [string, string, string, string, string];
210
+ };
211
+ spinner: {
212
+ label: string;
213
+ };
214
+ speedDial: {
215
+ actions: string;
216
+ };
217
+ scrollTop: {
218
+ label: string;
219
+ };
220
+ splitButton: {
221
+ more: string;
222
+ };
223
+ panel: {
224
+ toggle: string;
225
+ };
226
+ breadcrumb: {
227
+ label: string;
228
+ };
229
+ galleria: {
230
+ /** Interpolacja: {index}. */
231
+ image: string;
232
+ };
233
+ carousel: {
234
+ /** Interpolacja: {index}. */
235
+ slide: string;
236
+ };
237
+ richText: {
238
+ copy: string;
239
+ paste: string;
240
+ pasteText: string;
241
+ heading: string;
242
+ bold: string;
243
+ italic: string;
244
+ underline: string;
245
+ strike: string;
246
+ ul: string;
247
+ ol: string;
248
+ foreColor: string;
249
+ backColor: string;
250
+ alignLeft: string;
251
+ alignCenter: string;
252
+ alignRight: string;
253
+ alignJustify: string;
254
+ link: string;
255
+ table: string;
256
+ clear: string;
257
+ html: string;
258
+ /** Styl bloku „Normalny" (select). */
259
+ styleNormal: string;
260
+ /** Interpolacja: {level}. */
261
+ styleHeading: string;
262
+ linkPrompt: string;
263
+ htmlSource: string;
264
+ /** Etykieta „Własny…" przy pickerze koloru. */
265
+ paletteCustom: string;
266
+ /** Menu kontekstowe tabeli. */
267
+ menu: {
268
+ column: string;
269
+ row: string;
270
+ cell: string;
271
+ insertLeft: string;
272
+ insertRight: string;
273
+ headerColumn: string;
274
+ deleteColumn: string;
275
+ insertAbove: string;
276
+ insertBelow: string;
277
+ headerRow: string;
278
+ deleteRow: string;
279
+ cellBackground: string;
280
+ alignLeft: string;
281
+ alignCenter: string;
282
+ alignRight: string;
283
+ mergeCells: string;
284
+ splitCell: string;
285
+ border: string;
286
+ deleteTable: string;
287
+ };
288
+ /** Popover obramowania. */
289
+ border: {
290
+ table: string;
291
+ cell: string;
292
+ none: string;
293
+ thin: string;
294
+ medium: string;
295
+ thick: string;
296
+ customColor: string;
297
+ };
298
+ };
299
+ }
300
+ declare const KPT_MESSAGES_EN: KptMessages;
301
+ declare const KPT_MESSAGES_PL: KptMessages;
302
+
303
+ /** Głęboko-opcjonalna wersja typu — dla nadpisań/częściowych słowników. */
304
+ type DeepPartial<T> = {
305
+ [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K];
306
+ };
307
+ /** Konfiguracja i18n przekazywana do `provideKptI18n`. */
308
+ interface KptI18nConfig {
309
+ /** Język początkowy (domyślnie 'en'). */
310
+ locale?: KptLocale;
311
+ /**
312
+ * Słowniki do zarejestrowania lub nadpisania, kluczowane kodem języka.
313
+ * Może dodać nowy język (`{ de: {...} }`) lub nadpisać istniejący
314
+ * (`{ en: { paginator: { rowsPerPage: 'Rows:' } } }`). Deep-merge z bazą EN/PL.
315
+ */
316
+ messages?: Record<string, DeepPartial<KptMessages>>;
317
+ }
318
+ /** Token konfiguracji i18n. Konsumowany przez `KptI18n`. */
319
+ declare const KPT_I18N_CONFIG: InjectionToken<KptI18nConfig>;
320
+
321
+ /**
322
+ * Serwis tłumaczeń Koncept UI. Trzyma rejestr słowników per język, bieżący locale
323
+ * (sygnał) i funkcję `t()` z interpolacją. Skonfiguruj przez `provideKptI18n(...)`.
324
+ *
325
+ * Domyślnie EN. Języki bazowe: EN, PL. Dowolny inny język dodaje się jednym
326
+ * słownikiem (`registerMessages` lub `provideKptI18n({ messages: { de } })`);
327
+ * brakujące klucze spadają na EN.
328
+ */
329
+ declare class KptI18n {
330
+ /** Rejestr słowników: język → pełny `KptMessages`. */
331
+ private readonly registry;
332
+ private readonly _locale;
333
+ /** Bieżący język (tylko do odczytu). */
334
+ readonly locale: _angular_core.Signal<KptLocale>;
335
+ /** Aktywny słownik (z fallbackiem na EN, gdy język nieznany). */
336
+ readonly messages: _angular_core.Signal<KptMessages>;
337
+ constructor();
338
+ /** Ustawia bieżący język. Zmiana jest reaktywna dla wszystkich komponentów. */
339
+ setLocale(locale: KptLocale): void;
340
+ /**
341
+ * Rejestruje lub nadpisuje słownik języka. Częściowy słownik deep-merge'uje się
342
+ * na istniejący (lub EN dla nowego języka) → brakujące klucze mają wartość EN.
343
+ */
344
+ registerMessages(locale: KptLocale, patch: DeepPartial<KptMessages>): void;
345
+ /**
346
+ * Tłumaczy klucz w notacji kropkowej (np. `'paginator.range'`), z opcjonalną
347
+ * interpolacją `{name}`. Brakujący klucz spada na EN, a w ostateczności zwraca sam klucz.
348
+ */
349
+ t(key: string, params?: Record<string, string | number>): string;
350
+ private lookup;
351
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptI18n, never>;
352
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<KptI18n>;
353
+ }
354
+
102
355
  interface KptMenuItem<T = unknown> {
103
356
  label?: string;
104
357
  value?: T;
@@ -145,6 +398,7 @@ declare class KptSplitButton<T = unknown> {
145
398
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
146
399
  readonly primaryClick: _angular_core.OutputEmitterRef<void>;
147
400
  readonly select: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
401
+ protected readonly i18n: KptI18n;
148
402
  protected readonly open: _angular_core.WritableSignal<boolean>;
149
403
  protected readonly positions: ConnectedPosition[];
150
404
  protected pick(item: KptMenuItem<T>): void;
@@ -195,6 +449,27 @@ declare class KptIconRegistry {
195
449
 
196
450
  type KptIconName = 'menu' | 'x' | 'chevron-up' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'check' | 'search' | 'grip-vertical' | 'info' | 'alert-triangle' | 'circle-check' | 'circle-x' | 'calendar' | 'copy' | 'link' | 'code' | 'bold' | 'italic' | 'underline' | 'strikethrough' | 'list' | 'list-numbers' | 'clear-formatting' | 'star' | 'plus' | 'upload' | 'dots-vertical' | 'photo' | 'trash' | 'eye' | 'eye-off' | 'minus' | 'arrow-up' | 'arrow-down' | 'zoom-in' | 'info-circle' | 'phone' | 'map-pin' | 'world' | 'clock' | 'align-left' | 'align-center' | 'align-right' | 'align-justified' | 'palette' | 'highlight' | 'clipboard' | 'clipboard-text' | 'table' | 'pencil';
197
451
 
452
+ /**
453
+ * Konfiguruje i18n Koncept UI. Ustawia język początkowy i rejestruje/nadpisuje
454
+ * słowniki. Języki bazowe (EN, PL) są dostępne bez konfiguracji.
455
+ *
456
+ * @example
457
+ * // main.ts — polski interfejs
458
+ * bootstrapApplication(App, {
459
+ * providers: [provideKptI18n({ locale: 'pl' })],
460
+ * });
461
+ *
462
+ * @example
463
+ * // Własny język jednym plikiem JSON (brakujące klucze → EN)
464
+ * import de from './i18n/de.json';
465
+ * provideKptI18n({ locale: 'de', messages: { de } });
466
+ *
467
+ * @example
468
+ * // Nadpisanie pojedynczych etykiet istniejącego języka
469
+ * provideKptI18n({ messages: { en: { paginator: { rowsPerPage: 'Rows per page:' } } } });
470
+ */
471
+ declare function provideKptI18n(config?: KptI18nConfig): EnvironmentProviders;
472
+
198
473
  type KptBadgeVariant = 'neutral' | 'primary' | 'success' | 'danger' | 'warning' | 'info';
199
474
  /**
200
475
  * Znacznik (badge) — licznik lub kropka statusu. Standalone lub nałożony na treść (`overlay`).
@@ -228,6 +503,7 @@ declare class KptChip {
228
503
  readonly removable: _angular_core.InputSignalWithTransform<boolean, unknown>;
229
504
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
230
505
  readonly removed: _angular_core.OutputEmitterRef<void>;
506
+ protected readonly i18n: KptI18n;
231
507
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptChip, never>;
232
508
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptChip, "kpt-chip", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, never, ["*"], true, never>;
233
509
  }
@@ -262,7 +538,10 @@ declare class KptAvatar {
262
538
  */
263
539
  declare class KptSpinner {
264
540
  readonly size: _angular_core.InputSignal<string>;
265
- readonly label: _angular_core.InputSignal<string>;
541
+ /** Etykieta a11y; bez wartości używa i18n (`spinner.label`). */
542
+ readonly label: _angular_core.InputSignal<string | undefined>;
543
+ private readonly i18n;
544
+ protected readonly effectiveLabel: _angular_core.Signal<string>;
266
545
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptSpinner, never>;
267
546
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptSpinner, "kpt-spinner", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
268
547
  }
@@ -500,6 +779,7 @@ declare class KptSelect<T = unknown> implements FormValueControl<unknown> {
500
779
  /** Wartość: pojedyncza (T) lub tablica (T[]) w trybie multiple. */
501
780
  readonly value: _angular_core.ModelSignal<unknown>;
502
781
  readonly touch: _angular_core.OutputEmitterRef<void>;
782
+ protected readonly i18n: KptI18n;
503
783
  protected readonly open: _angular_core.WritableSignal<boolean>;
504
784
  protected readonly filterText: _angular_core.WritableSignal<string>;
505
785
  protected readonly activeIndex: _angular_core.WritableSignal<number>;
@@ -569,7 +849,9 @@ declare class KptDatepicker implements FormValueControl<string> {
569
849
  readonly minDate: _angular_core.InputSignal<string | null>;
570
850
  readonly maxDate: _angular_core.InputSignal<string | null>;
571
851
  protected readonly effectivePlaceholder: _angular_core.Signal<string>;
572
- protected readonly weekdays: string[];
852
+ protected readonly i18n: KptI18n;
853
+ protected readonly weekdays: _angular_core.Signal<string[]>;
854
+ private readonly months;
573
855
  protected readonly open: _angular_core.WritableSignal<boolean>;
574
856
  private readonly today;
575
857
  private readonly view;
@@ -705,6 +987,7 @@ declare class KptRichText implements FormValueControl<string> {
705
987
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
706
988
  readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
707
989
  readonly touch: _angular_core.OutputEmitterRef<void>;
990
+ protected readonly i18n: KptI18n;
708
991
  protected readonly swatches: string[];
709
992
  private readonly editor;
710
993
  private savedRange;
@@ -731,10 +1014,10 @@ declare class KptRichText implements FormValueControl<string> {
731
1014
  private selAnchor;
732
1015
  private selecting;
733
1016
  private canSplitCtx;
734
- protected readonly styleOptions: {
1017
+ protected readonly styleOptions: _angular_core.Signal<{
735
1018
  tag: string;
736
1019
  label: string;
737
- }[];
1020
+ }[]>;
738
1021
  protected readonly styleLabel: _angular_core.Signal<string>;
739
1022
  protected readonly activeCmds: _angular_core.WritableSignal<Set<string>>;
740
1023
  protected readonly currentBlock: _angular_core.WritableSignal<string>;
@@ -885,6 +1168,7 @@ declare class KptFileUpload implements FormValueControl<File[]> {
885
1168
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
886
1169
  readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
887
1170
  readonly touch: _angular_core.OutputEmitterRef<void>;
1171
+ protected readonly i18n: KptI18n;
888
1172
  protected readonly dragover: _angular_core.WritableSignal<boolean>;
889
1173
  protected onSelect(event: Event): void;
890
1174
  protected onDragOver(event: DragEvent): void;
@@ -946,12 +1230,16 @@ declare class KptDateRange implements FormValueControl<KptDateRangeValue> {
946
1230
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
947
1231
  readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
948
1232
  readonly touch: _angular_core.OutputEmitterRef<void>;
949
- readonly placeholder: _angular_core.InputSignal<string>;
1233
+ /** Placeholder; bez wartości używa i18n (`dateRange.placeholder`). */
1234
+ readonly placeholder: _angular_core.InputSignal<string | undefined>;
950
1235
  readonly displayFormat: _angular_core.InputSignal<"pl" | "iso">;
951
1236
  readonly mode: _angular_core.InputSignal<KptDateRangeMode>;
952
1237
  readonly hourFormat: _angular_core.InputSignalWithTransform<number, unknown>;
953
1238
  readonly minuteStep: _angular_core.InputSignalWithTransform<number, unknown>;
954
- protected readonly weekdays: string[];
1239
+ protected readonly i18n: KptI18n;
1240
+ protected readonly weekdays: _angular_core.Signal<string[]>;
1241
+ private readonly months;
1242
+ protected readonly effectivePlaceholder: _angular_core.Signal<string>;
955
1243
  protected readonly open: _angular_core.WritableSignal<boolean>;
956
1244
  private readonly today;
957
1245
  private readonly view;
@@ -996,6 +1284,7 @@ declare class KptInputNumber implements FormValueControl<number | null> {
996
1284
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
997
1285
  readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
998
1286
  readonly touch: _angular_core.OutputEmitterRef<void>;
1287
+ protected readonly i18n: KptI18n;
999
1288
  protected readonly display: _angular_core.Signal<string>;
1000
1289
  protected readonly canInc: _angular_core.Signal<boolean>;
1001
1290
  protected readonly canDec: _angular_core.Signal<boolean>;
@@ -1024,6 +1313,7 @@ declare class KptPassword implements FormValueControl<string> {
1024
1313
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
1025
1314
  readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
1026
1315
  readonly touch: _angular_core.OutputEmitterRef<void>;
1316
+ protected readonly i18n: KptI18n;
1027
1317
  protected readonly visible: _angular_core.WritableSignal<boolean>;
1028
1318
  protected readonly strength: _angular_core.Signal<Strength>;
1029
1319
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptPassword, never>;
@@ -1065,12 +1355,15 @@ declare class KptInputOtp implements FormValueControl<string> {
1065
1355
  */
1066
1356
  declare class KptChipsInput implements FormValueControl<string[]> {
1067
1357
  readonly value: _angular_core.ModelSignal<string[]>;
1068
- readonly placeholder: _angular_core.InputSignal<string>;
1358
+ /** Placeholder; bez wartości używa i18n (`chipsInput.placeholder`). */
1359
+ readonly placeholder: _angular_core.InputSignal<string | undefined>;
1069
1360
  readonly allowDuplicates: _angular_core.InputSignalWithTransform<boolean, unknown>;
1070
1361
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1071
1362
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
1072
1363
  readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
1073
1364
  readonly touch: _angular_core.OutputEmitterRef<void>;
1365
+ protected readonly i18n: KptI18n;
1366
+ protected readonly effectivePlaceholder: _angular_core.Signal<string>;
1074
1367
  protected onKeydown(event: KeyboardEvent): void;
1075
1368
  protected commit(el: HTMLInputElement): void;
1076
1369
  protected removeAt(index: number): void;
@@ -1116,6 +1409,7 @@ declare class KptListbox<T = unknown> implements FormValueControl<T | T[] | null
1116
1409
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
1117
1410
  readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
1118
1411
  readonly touch: _angular_core.OutputEmitterRef<void>;
1412
+ protected readonly i18n: KptI18n;
1119
1413
  protected readonly query: _angular_core.WritableSignal<string>;
1120
1414
  protected readonly visible: _angular_core.Signal<KptOption<T>[]>;
1121
1415
  protected isSelected(v: T): boolean;
@@ -1268,6 +1562,7 @@ declare class KptPanel {
1268
1562
  readonly collapsed: _angular_core.ModelSignal<boolean>;
1269
1563
  readonly animated: _angular_core.InputSignalWithTransform<boolean, unknown>;
1270
1564
  readonly animationDuration: _angular_core.InputSignal<number>;
1565
+ protected readonly i18n: KptI18n;
1271
1566
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptPanel, never>;
1272
1567
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptPanel, "kpt-panel", never, { "header": { "alias": "header"; "required": false; "isSignal": true; }; "toggleable": { "alias": "toggleable"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "animated": { "alias": "animated"; "required": false; "isSignal": true; }; "animationDuration": { "alias": "animationDuration"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, ["[kptPanelActions]", "*"], true, never>;
1273
1568
  }
@@ -1323,6 +1618,7 @@ declare class KptSplitter {
1323
1618
  declare class KptScrollTop {
1324
1619
  readonly threshold: _angular_core.InputSignal<number>;
1325
1620
  readonly target: _angular_core.InputSignal<string | null>;
1621
+ protected readonly i18n: KptI18n;
1326
1622
  protected readonly visible: _angular_core.WritableSignal<boolean>;
1327
1623
  private scroller;
1328
1624
  constructor();
@@ -1343,6 +1639,7 @@ declare class KptImage {
1343
1639
  readonly alt: _angular_core.InputSignal<string>;
1344
1640
  readonly width: _angular_core.InputSignal<string | null>;
1345
1641
  readonly preview: _angular_core.InputSignalWithTransform<boolean, unknown>;
1642
+ protected readonly i18n: KptI18n;
1346
1643
  protected readonly open: _angular_core.WritableSignal<boolean>;
1347
1644
  protected openPreview(): void;
1348
1645
  protected close(): void;
@@ -1500,6 +1797,7 @@ interface KptBreadcrumbItem {
1500
1797
  */
1501
1798
  declare class KptBreadcrumb {
1502
1799
  readonly items: _angular_core.InputSignal<KptBreadcrumbItem[]>;
1800
+ protected readonly i18n: KptI18n;
1503
1801
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptBreadcrumb, never>;
1504
1802
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptBreadcrumb, "kpt-breadcrumb", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1505
1803
  }
@@ -1557,9 +1855,11 @@ declare class KptPaginator {
1557
1855
  readonly pageIndex: _angular_core.ModelSignal<number>;
1558
1856
  /** Dostępne rozmiary strony. */
1559
1857
  readonly pageSizeOptions: _angular_core.InputSignal<number[]>;
1858
+ protected readonly i18n: KptI18n;
1560
1859
  readonly totalPages: _angular_core.Signal<number>;
1561
1860
  readonly rangeStart: _angular_core.Signal<number>;
1562
1861
  readonly rangeEnd: _angular_core.Signal<number>;
1862
+ protected readonly rangeLabel: _angular_core.Signal<string>;
1563
1863
  readonly canPrev: _angular_core.Signal<boolean>;
1564
1864
  readonly canNext: _angular_core.Signal<boolean>;
1565
1865
  constructor();
@@ -1638,7 +1938,8 @@ declare class KptDataTable<T = Record<string, unknown>> {
1638
1938
  readonly pageSizeOptions: _angular_core.InputSignal<number[]>;
1639
1939
  readonly selectable: _angular_core.InputSignal<"none" | "single" | "multiple">;
1640
1940
  readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
1641
- readonly emptyMessage: _angular_core.InputSignal<string>;
1941
+ /** Komunikat pustej tabeli; bez wartości używa i18n (`dataTable.empty`). */
1942
+ readonly emptyMessage: _angular_core.InputSignal<string | undefined>;
1642
1943
  /** Pole identyfikujące wiersz (dla zaznaczania). Bez niego — porównanie po referencji. */
1643
1944
  readonly rowKey: _angular_core.InputSignal<string | null>;
1644
1945
  /** Wysokość przewijalnego obszaru (np. '400px'); sticky header pozostaje widoczny. */
@@ -1667,6 +1968,9 @@ declare class KptDataTable<T = Record<string, unknown>> {
1667
1968
  readonly rowClick: _angular_core.OutputEmitterRef<T>;
1668
1969
  /** Emitowane w trybie lazy przy zmianie sortowania/filtra/strony. */
1669
1970
  readonly lazyLoad: _angular_core.OutputEmitterRef<KptTableLazyState>;
1971
+ protected readonly i18n: KptI18n;
1972
+ /** Komunikat pustej tabeli (input albo domyślny z i18n). */
1973
+ protected readonly emptyText: _angular_core.Signal<string>;
1670
1974
  /** Kolumny w bieżącej kolejności (po ewentualnym przestawieniu). */
1671
1975
  protected readonly orderedColumns: _angular_core.WritableSignal<readonly KptColumn[]>;
1672
1976
  private readonly scrollEl;
@@ -1852,6 +2156,7 @@ declare class KptTimeline {
1852
2156
  declare class KptCarousel<T = unknown> {
1853
2157
  readonly items: _angular_core.InputSignal<T[]>;
1854
2158
  readonly activeIndex: _angular_core.ModelSignal<number>;
2159
+ protected readonly i18n: KptI18n;
1855
2160
  protected readonly slideTpl: _angular_core.Signal<TemplateRef<any>>;
1856
2161
  next(): void;
1857
2162
  prev(): void;
@@ -1874,6 +2179,7 @@ declare class KptDataView<T = unknown> {
1874
2179
  readonly layout: _angular_core.ModelSignal<"list" | "grid">;
1875
2180
  readonly pageSize: _angular_core.InputSignal<number>;
1876
2181
  readonly paginated: _angular_core.InputSignalWithTransform<boolean, unknown>;
2182
+ protected readonly i18n: KptI18n;
1877
2183
  protected readonly itemTpl: _angular_core.Signal<TemplateRef<any>>;
1878
2184
  protected readonly pageIndex: _angular_core.ModelSignal<number>;
1879
2185
  protected readonly showPager: _angular_core.Signal<boolean>;
@@ -1894,9 +2200,14 @@ declare class KptDataView<T = unknown> {
1894
2200
  declare class KptPickList<T = unknown> {
1895
2201
  readonly source: _angular_core.ModelSignal<T[]>;
1896
2202
  readonly target: _angular_core.ModelSignal<T[]>;
1897
- readonly sourceHeader: _angular_core.InputSignal<string>;
1898
- readonly targetHeader: _angular_core.InputSignal<string>;
2203
+ /** Nagłówek listy źródłowej; bez wartości używa i18n (`pickList.available`). */
2204
+ readonly sourceHeader: _angular_core.InputSignal<string | undefined>;
2205
+ /** Nagłówek listy docelowej; bez wartości używa i18n (`pickList.selected`). */
2206
+ readonly targetHeader: _angular_core.InputSignal<string | undefined>;
1899
2207
  protected readonly itemTpl: _angular_core.Signal<TemplateRef<any>>;
2208
+ protected readonly i18n: KptI18n;
2209
+ protected readonly effectiveSourceHeader: _angular_core.Signal<string>;
2210
+ protected readonly effectiveTargetHeader: _angular_core.Signal<string>;
1900
2211
  protected readonly selSource: _angular_core.WritableSignal<Set<T>>;
1901
2212
  protected readonly selTarget: _angular_core.WritableSignal<Set<T>>;
1902
2213
  protected toggle(side: 'source' | 'target', item: T): void;
@@ -1917,6 +2228,7 @@ declare class KptPickList<T = unknown> {
1917
2228
  declare class KptOrderList<T = unknown> {
1918
2229
  readonly items: _angular_core.ModelSignal<T[]>;
1919
2230
  readonly header: _angular_core.InputSignal<string>;
2231
+ protected readonly i18n: KptI18n;
1920
2232
  protected readonly itemTpl: _angular_core.Signal<TemplateRef<any>>;
1921
2233
  protected readonly selected: _angular_core.WritableSignal<number | null>;
1922
2234
  protected moveSelected(dir: -1 | 1): void;
@@ -1939,6 +2251,7 @@ declare class KptGalleria {
1939
2251
  readonly items: _angular_core.InputSignal<KptGalleriaItem[]>;
1940
2252
  readonly activeIndex: _angular_core.ModelSignal<number>;
1941
2253
  readonly showThumbnails: _angular_core.InputSignalWithTransform<boolean, unknown>;
2254
+ protected readonly i18n: KptI18n;
1942
2255
  protected readonly current: _angular_core.Signal<KptGalleriaItem>;
1943
2256
  protected next(): void;
1944
2257
  protected prev(): void;
@@ -1958,6 +2271,7 @@ declare class KptAlert {
1958
2271
  readonly title: _angular_core.InputSignal<string>;
1959
2272
  readonly dismissible: _angular_core.InputSignalWithTransform<boolean, unknown>;
1960
2273
  readonly closed: _angular_core.OutputEmitterRef<void>;
2274
+ protected readonly i18n: KptI18n;
1961
2275
  protected readonly visible: _angular_core.WritableSignal<boolean>;
1962
2276
  protected iconName(): KptIconName;
1963
2277
  protected dismiss(): void;
@@ -1984,6 +2298,7 @@ declare class KptDialog {
1984
2298
  readonly header: _angular_core.InputSignal<string>;
1985
2299
  /** Pozwala zamknąć klawiszem Esc / przyciskiem ×. */
1986
2300
  readonly dismissible: _angular_core.InputSignalWithTransform<boolean, unknown>;
2301
+ protected readonly i18n: KptI18n;
1987
2302
  private readonly dialogRef;
1988
2303
  constructor();
1989
2304
  protected onCancel(event: Event): void;
@@ -2025,6 +2340,7 @@ declare class KptToastService {
2025
2340
  */
2026
2341
  declare class KptToastContainer {
2027
2342
  private readonly service;
2343
+ protected readonly i18n: KptI18n;
2028
2344
  protected readonly toasts: _angular_core.Signal<_konce_pt_angular.KptToast[]>;
2029
2345
  protected dismiss(id: number): void;
2030
2346
  protected icon(variant: KptAlertVariant): KptIconName;
@@ -2117,6 +2433,7 @@ declare class KptDrawer {
2117
2433
  readonly header: _angular_core.InputSignal<string>;
2118
2434
  readonly dismissible: _angular_core.InputSignalWithTransform<boolean, unknown>;
2119
2435
  readonly closeOnBackdrop: _angular_core.InputSignalWithTransform<boolean, unknown>;
2436
+ protected readonly i18n: KptI18n;
2120
2437
  protected onBackdrop(): void;
2121
2438
  protected close(): void;
2122
2439
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptDrawer, never>;
@@ -2224,6 +2541,7 @@ declare class KptConfirmService {
2224
2541
  * Umieść raz w aplikacji (np. obok `<kpt-toast-container />`).
2225
2542
  */
2226
2543
  declare class KptConfirmContainer {
2544
+ protected readonly i18n: KptI18n;
2227
2545
  protected readonly service: KptConfirmService;
2228
2546
  protected readonly req: _angular_core.Signal<_konce_pt_angular.KptConfirmRequest | null>;
2229
2547
  protected readonly isOpen: _angular_core.Signal<boolean>;
@@ -2244,6 +2562,7 @@ declare class KptBottomSheet {
2244
2562
  readonly open: _angular_core.ModelSignal<boolean>;
2245
2563
  readonly header: _angular_core.InputSignal<string>;
2246
2564
  readonly closeOnBackdrop: _angular_core.InputSignalWithTransform<boolean, unknown>;
2565
+ protected readonly i18n: KptI18n;
2247
2566
  protected onBackdrop(): void;
2248
2567
  protected close(): void;
2249
2568
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptBottomSheet, never>;
@@ -2261,8 +2580,11 @@ declare class KptSpeedDial<T = unknown> {
2261
2580
  readonly items: _angular_core.InputSignal<KptMenuItem<T>[]>;
2262
2581
  readonly direction: _angular_core.InputSignal<KptSpeedDialDirection>;
2263
2582
  readonly icon: _angular_core.InputSignal<string>;
2264
- readonly ariaLabel: _angular_core.InputSignal<string>;
2583
+ /** Etykieta a11y FAB (stan zamknięty); bez wartości używa i18n (`speedDial.actions`). */
2584
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
2265
2585
  readonly select: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
2586
+ protected readonly i18n: KptI18n;
2587
+ protected readonly effectiveAriaLabel: _angular_core.Signal<string>;
2266
2588
  protected readonly open: _angular_core.WritableSignal<boolean>;
2267
2589
  protected toggle(): void;
2268
2590
  protected close(): void;
@@ -2271,5 +2593,5 @@ declare class KptSpeedDial<T = unknown> {
2271
2593
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptSpeedDial<any>, "kpt-speed-dial", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "select": "select"; }, never, never, true, never>;
2272
2594
  }
2273
2595
 
2274
- export { KptAccordion, KptAccordionPanel, KptAlert, KptAppShell, KptAutocomplete, KptAvatar, KptAvatarGroup, KptBadge, KptBottomSheet, KptBreadcrumb, KptButton, KptButtonGroup, KptCard, KptCarousel, KptCellDef, KptCheckbox, KptChip, KptChipsInput, KptClock, KptColorPicker, KptConfirmContainer, KptConfirmService, KptContextMenu, KptDataTable, KptDataView, KptDateRange, KptDatepicker, KptDialog, KptDivider, KptDrawer, KptEmpty, KptFab, KptFieldset, KptFileUpload, KptFormField, KptGalleria, KptIcon, KptIconButton, KptIconRegistry, KptImage, KptInput, KptInputMask, KptInputNumber, KptInputOtp, KptKnob, KptListbox, KptMegamenu, KptMenu, KptMenubar, KptMeterGroup, KptOrderList, KptPaginator, KptPanel, KptPassword, KptPickList, KptPopover, KptProgress, KptRadioGroup, KptRating, KptRichText, KptRowDetailDef, KptScrollTop, KptSelect, KptSidenav, KptSkeleton, KptSlider, KptSpeedDial, KptSpinner, KptSplitButton, KptSplitter, KptStep, KptStepper, KptSwitch, KptSwitchGroup, KptTab, KptTabs, KptTextarea, KptTimeline, KptToastContainer, KptToastService, KptToolbar, KptTooltip, KptTree };
2275
- export type { KptAlertVariant, KptAvatarItem, KptAvatarShape, KptAvatarSize, KptBadgeVariant, KptBreadcrumbItem, KptButtonSize, KptButtonVariant, KptCardVariant, KptChipVariant, KptColumn, KptConfirmOptions, KptConfirmRequest, KptDateRangeValue, KptDividerOrientation, KptDrawerPosition, KptGalleriaItem, KptIconName, KptInputType, KptMenuItem, KptMeterItem, KptOption, KptProgressVariant, KptRichTool, KptRichToolbar, KptSidenavMode, KptSkeletonVariant, KptSliderValue, KptSpeedDialDirection, KptSplitterOrientation, KptTableLazyState, KptTimelineItem, KptToast, KptToastOptions, KptTooltipPosition, KptTreeNode };
2596
+ export { KPT_I18N_CONFIG, KPT_MESSAGES_EN, KPT_MESSAGES_PL, KptAccordion, KptAccordionPanel, KptAlert, KptAppShell, KptAutocomplete, KptAvatar, KptAvatarGroup, KptBadge, KptBottomSheet, KptBreadcrumb, KptButton, KptButtonGroup, KptCard, KptCarousel, KptCellDef, KptCheckbox, KptChip, KptChipsInput, KptClock, KptColorPicker, KptConfirmContainer, KptConfirmService, KptContextMenu, KptDataTable, KptDataView, KptDateRange, KptDatepicker, KptDialog, KptDivider, KptDrawer, KptEmpty, KptFab, KptFieldset, KptFileUpload, KptFormField, KptGalleria, KptI18n, KptIcon, KptIconButton, KptIconRegistry, KptImage, KptInput, KptInputMask, KptInputNumber, KptInputOtp, KptKnob, KptListbox, KptMegamenu, KptMenu, KptMenubar, KptMeterGroup, KptOrderList, KptPaginator, KptPanel, KptPassword, KptPickList, KptPopover, KptProgress, KptRadioGroup, KptRating, KptRichText, KptRowDetailDef, KptScrollTop, KptSelect, KptSidenav, KptSkeleton, KptSlider, KptSpeedDial, KptSpinner, KptSplitButton, KptSplitter, KptStep, KptStepper, KptSwitch, KptSwitchGroup, KptTab, KptTabs, KptTextarea, KptTimeline, KptToastContainer, KptToastService, KptToolbar, KptTooltip, KptTree, provideKptI18n };
2597
+ export type { DeepPartial, KptAlertVariant, KptAvatarItem, KptAvatarShape, KptAvatarSize, KptBadgeVariant, KptBreadcrumbItem, KptButtonSize, KptButtonVariant, KptCardVariant, KptChipVariant, KptColumn, KptConfirmOptions, KptConfirmRequest, KptDateRangeValue, KptDividerOrientation, KptDrawerPosition, KptGalleriaItem, KptI18nConfig, KptIconName, KptInputType, KptLocale, KptMenuItem, KptMessages, KptMeterItem, KptOption, KptProgressVariant, KptRichTool, KptRichToolbar, KptSidenavMode, KptSkeletonVariant, KptSliderValue, KptSpeedDialDirection, KptSplitterOrientation, KptTableLazyState, KptTimelineItem, KptToast, KptToastOptions, KptTooltipPosition, KptTreeNode };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@konce-pt/angular",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Open-source Angular 22 component library on Signals & Signal Forms — 70+ components, rich data table, zoneless, fully tokenized. Selektory kpt-*, klasy Kpt*.",
5
5
  "license": "MIT",
6
6
  "author": "konce.pt",