@konce-pt/angular 0.1.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 (82) hide show
  1. package/LICENSE +21 -0
  2. package/dist/fesm2022/konce-pt-angular-icons.mjs +5166 -0
  3. package/dist/fesm2022/konce-pt-angular-icons.mjs.map +1 -0
  4. package/dist/fesm2022/konce-pt-angular.mjs +5863 -0
  5. package/dist/fesm2022/konce-pt-angular.mjs.map +1 -0
  6. package/dist/package.json +47 -0
  7. package/dist/src/lib/accordion/llms.txt +18 -0
  8. package/dist/src/lib/alert/llms.txt +19 -0
  9. package/dist/src/lib/app-shell/llms.txt +29 -0
  10. package/dist/src/lib/autocomplete/llms.txt +16 -0
  11. package/dist/src/lib/avatar/llms.txt +15 -0
  12. package/dist/src/lib/avatar-group/llms.txt +15 -0
  13. package/dist/src/lib/badge/llms.txt +16 -0
  14. package/dist/src/lib/bottom-sheet/llms.txt +16 -0
  15. package/dist/src/lib/breadcrumb/llms.txt +12 -0
  16. package/dist/src/lib/button/llms.txt +35 -0
  17. package/dist/src/lib/button-group/llms.txt +14 -0
  18. package/dist/src/lib/card/llms.txt +24 -0
  19. package/dist/src/lib/carousel/llms.txt +24 -0
  20. package/dist/src/lib/checkbox/llms.txt +15 -0
  21. package/dist/src/lib/chip/llms.txt +14 -0
  22. package/dist/src/lib/chips-input/llms.txt +18 -0
  23. package/dist/src/lib/color-picker/llms.txt +18 -0
  24. package/dist/src/lib/confirm/llms.txt +21 -0
  25. package/dist/src/lib/context-menu/llms.txt +17 -0
  26. package/dist/src/lib/data-table/llms.txt +62 -0
  27. package/dist/src/lib/data-view/llms.txt +18 -0
  28. package/dist/src/lib/date-range/llms.txt +24 -0
  29. package/dist/src/lib/datepicker/llms.txt +17 -0
  30. package/dist/src/lib/dialog/llms.txt +27 -0
  31. package/dist/src/lib/divider/llms.txt +19 -0
  32. package/dist/src/lib/drawer/llms.txt +17 -0
  33. package/dist/src/lib/empty/llms.txt +17 -0
  34. package/dist/src/lib/fab/llms.txt +18 -0
  35. package/dist/src/lib/fieldset/llms.txt +15 -0
  36. package/dist/src/lib/file-upload/llms.txt +23 -0
  37. package/dist/src/lib/form-field/llms.txt +37 -0
  38. package/dist/src/lib/galleria/llms.txt +15 -0
  39. package/dist/src/lib/icon/llms.txt +34 -0
  40. package/dist/src/lib/icon-button/llms.txt +15 -0
  41. package/dist/src/lib/image/llms.txt +15 -0
  42. package/dist/src/lib/input/llms.txt +38 -0
  43. package/dist/src/lib/input-mask/llms.txt +20 -0
  44. package/dist/src/lib/input-number/llms.txt +17 -0
  45. package/dist/src/lib/input-otp/llms.txt +19 -0
  46. package/dist/src/lib/knob/llms.txt +20 -0
  47. package/dist/src/lib/listbox/llms.txt +17 -0
  48. package/dist/src/lib/megamenu/llms.txt +21 -0
  49. package/dist/src/lib/menu/llms.txt +17 -0
  50. package/dist/src/lib/menubar/llms.txt +19 -0
  51. package/dist/src/lib/meter-group/llms.txt +15 -0
  52. package/dist/src/lib/order-list/llms.txt +17 -0
  53. package/dist/src/lib/paginator/llms.txt +18 -0
  54. package/dist/src/lib/panel/llms.txt +18 -0
  55. package/dist/src/lib/password/llms.txt +20 -0
  56. package/dist/src/lib/pick-list/llms.txt +17 -0
  57. package/dist/src/lib/popover/llms.txt +17 -0
  58. package/dist/src/lib/progress/llms.txt +16 -0
  59. package/dist/src/lib/radio-group/llms.txt +15 -0
  60. package/dist/src/lib/rating/llms.txt +14 -0
  61. package/dist/src/lib/rich-text/llms.txt +16 -0
  62. package/dist/src/lib/scroll-top/llms.txt +15 -0
  63. package/dist/src/lib/select/llms.txt +22 -0
  64. package/dist/src/lib/sidenav/llms.txt +20 -0
  65. package/dist/src/lib/skeleton/llms.txt +14 -0
  66. package/dist/src/lib/slider/llms.txt +13 -0
  67. package/dist/src/lib/speed-dial/llms.txt +16 -0
  68. package/dist/src/lib/spinner/llms.txt +10 -0
  69. package/dist/src/lib/split-button/llms.txt +26 -0
  70. package/dist/src/lib/splitter/llms.txt +21 -0
  71. package/dist/src/lib/stepper/llms.txt +19 -0
  72. package/dist/src/lib/switch/llms.txt +13 -0
  73. package/dist/src/lib/tabs/llms.txt +19 -0
  74. package/dist/src/lib/textarea/llms.txt +14 -0
  75. package/dist/src/lib/timeline/llms.txt +22 -0
  76. package/dist/src/lib/toast/llms.txt +22 -0
  77. package/dist/src/lib/toolbar/llms.txt +23 -0
  78. package/dist/src/lib/tooltip/llms.txt +19 -0
  79. package/dist/src/lib/tree/llms.txt +17 -0
  80. package/dist/types/konce-pt-angular-icons.d.ts +18 -0
  81. package/dist/types/konce-pt-angular.d.ts +1858 -0
  82. package/package.json +61 -0
@@ -0,0 +1,1858 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { TemplateRef, OnDestroy } from '@angular/core';
3
+ import { FormValueControl, WithOptionalFieldTree, ValidationError, FormCheckboxControl } from '@angular/forms/signals';
4
+ import { ConnectedPosition } from '@angular/cdk/overlay';
5
+ import * as _konce_pt_angular from '@konce-pt/angular';
6
+
7
+ type KptButtonVariant = 'filled' | 'tonal' | 'outline' | 'text' | 'danger';
8
+ type KptButtonSize = 'sm' | 'md' | 'lg';
9
+ /**
10
+ * Przycisk Koncept UI. Renderuje natywny `<button>` (zachowana semantyka i submit
11
+ * formularza). Wygląd sterowany tokenami `--kpt-button-*`.
12
+ *
13
+ * @example
14
+ * <kpt-button variant="filled" (click)="save()">Zapisz</kpt-button>
15
+ * <kpt-button variant="outline" size="sm" [disabled]="busy()">Anuluj</kpt-button>
16
+ */
17
+ declare class KptButton {
18
+ /** Wariant wizualny. */
19
+ readonly variant: _angular_core.InputSignal<KptButtonVariant>;
20
+ /** Rozmiar. */
21
+ readonly size: _angular_core.InputSignal<KptButtonSize>;
22
+ /** Typ natywnego przycisku (istotne w formularzach). */
23
+ readonly type: _angular_core.InputSignal<"button" | "submit" | "reset">;
24
+ /** Wyłączony. */
25
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
26
+ /** Stan ładowania — pokazuje spinner i blokuje interakcję. */
27
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
28
+ /** Rozciągnięcie na całą szerokość kontenera. */
29
+ readonly fullWidth: _angular_core.InputSignalWithTransform<boolean, unknown>;
30
+ protected readonly isDisabled: _angular_core.Signal<boolean>;
31
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptButton, never>;
32
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptButton, "kpt-button", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
33
+ }
34
+
35
+ /**
36
+ * Przycisk ikonowy (tylko ikona). Wymaga `ariaLabel` dla dostępności.
37
+ *
38
+ * @example
39
+ * <kpt-icon-button ariaLabel="Ustawienia"><kpt-icon name="menu" /></kpt-icon-button>
40
+ * <kpt-icon-button variant="filled" shape="square" ariaLabel="Usuń"><kpt-icon name="x" /></kpt-icon-button>
41
+ */
42
+ declare class KptIconButton {
43
+ readonly variant: _angular_core.InputSignal<KptButtonVariant>;
44
+ readonly size: _angular_core.InputSignal<KptButtonSize>;
45
+ readonly shape: _angular_core.InputSignal<"round" | "square">;
46
+ readonly type: _angular_core.InputSignal<"button" | "submit" | "reset">;
47
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
48
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
49
+ /** Etykieta dostępności (wymagana — przycisk nie ma tekstu). */
50
+ readonly ariaLabel: _angular_core.InputSignal<string>;
51
+ protected readonly isDisabled: _angular_core.Signal<boolean>;
52
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptIconButton, never>;
53
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptIconButton, "kpt-icon-button", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
54
+ }
55
+
56
+ /** Opcja wyboru dla kontrolek typu select / radio-group. */
57
+ interface KptOption<T = unknown> {
58
+ label: string;
59
+ value: T;
60
+ disabled?: boolean;
61
+ }
62
+
63
+ /**
64
+ * Segmentowana grupa przycisków (toggle) — pojedynczy wybór z opcji. Signal Forms.
65
+ *
66
+ * @example
67
+ * <kpt-button-group [(value)]="view" [options]="[{label:'Lista',value:'list'},{label:'Siatka',value:'grid'}]" />
68
+ * <kpt-button-group [formField]="f.period" [options]="periods" />
69
+ */
70
+ declare class KptButtonGroup<T = unknown> implements FormValueControl<T> {
71
+ readonly options: _angular_core.InputSignal<KptOption<T>[]>;
72
+ readonly value: _angular_core.ModelSignal<T>;
73
+ readonly size: _angular_core.InputSignal<"sm" | "md" | "lg">;
74
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
75
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
76
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
77
+ readonly touch: _angular_core.OutputEmitterRef<void>;
78
+ protected select(opt: KptOption<T>): void;
79
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptButtonGroup<any>, never>;
80
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptButtonGroup<any>, "kpt-button-group", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
81
+ }
82
+
83
+ /**
84
+ * Floating Action Button (FAB) — okrągły, wyniesiony przycisk akcji. Wariant `extended` = pigułka z tekstem.
85
+ *
86
+ * @example
87
+ * <kpt-fab ariaLabel="Dodaj"><kpt-icon name="plus" /></kpt-fab>
88
+ * <kpt-fab extended><kpt-icon name="plus" /> Nowy</kpt-fab>
89
+ */
90
+ declare class KptFab {
91
+ readonly variant: _angular_core.InputSignal<"filled" | "tonal">;
92
+ readonly size: _angular_core.InputSignal<"md" | "mini">;
93
+ readonly extended: _angular_core.InputSignalWithTransform<boolean, unknown>;
94
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
95
+ readonly type: _angular_core.InputSignal<"button" | "submit" | "reset">;
96
+ /** Wymagane dla wariantu okrągłego (bez tekstu). */
97
+ readonly ariaLabel: _angular_core.InputSignal<string>;
98
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptFab, never>;
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
+ }
101
+
102
+ interface KptMenuItem<T = unknown> {
103
+ label?: string;
104
+ value?: T;
105
+ icon?: string;
106
+ disabled?: boolean;
107
+ danger?: boolean;
108
+ separator?: boolean;
109
+ /** Pozycje podrzędne (menubar / megamenu). */
110
+ items?: KptMenuItem<T>[];
111
+ /** Adres odnośnika (menubar / megamenu). */
112
+ url?: string;
113
+ }
114
+ /**
115
+ * Menu rozwijane (dropdown) na CDK Overlay. Trigger przez projekcję, pozycje przez `items`.
116
+ * Wymaga stylów overlay CDK: `import '@angular/cdk/overlay-prebuilt.css';`
117
+ *
118
+ * @example
119
+ * <kpt-menu [items]="items" (select)="onSelect($event)">
120
+ * <kpt-button variant="outline">Opcje</kpt-button>
121
+ * </kpt-menu>
122
+ */
123
+ declare class KptMenu<T = unknown> {
124
+ readonly items: _angular_core.InputSignal<KptMenuItem<T>[]>;
125
+ readonly select: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
126
+ protected readonly open: _angular_core.WritableSignal<boolean>;
127
+ protected readonly positions: ConnectedPosition[];
128
+ protected toggle(): void;
129
+ protected close(): void;
130
+ protected pick(item: KptMenuItem<T>): void;
131
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptMenu<any>, never>;
132
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptMenu<any>, "kpt-menu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, { "select": "select"; }, never, ["*"], true, never>;
133
+ }
134
+
135
+ /**
136
+ * Przycisk dzielony (split button) — akcja główna + rozwijane menu dodatkowych akcji.
137
+ * Wymaga `import '@angular/cdk/overlay-prebuilt.css';`
138
+ *
139
+ * @example
140
+ * <kpt-split-button [items]="items" (primaryClick)="save()" (select)="onItem($event)">Zapisz</kpt-split-button>
141
+ */
142
+ declare class KptSplitButton<T = unknown> {
143
+ readonly variant: _angular_core.InputSignal<KptButtonVariant>;
144
+ readonly items: _angular_core.InputSignal<KptMenuItem<T>[]>;
145
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
146
+ readonly primaryClick: _angular_core.OutputEmitterRef<void>;
147
+ readonly select: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
148
+ protected readonly open: _angular_core.WritableSignal<boolean>;
149
+ protected readonly positions: ConnectedPosition[];
150
+ protected pick(item: KptMenuItem<T>): void;
151
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptSplitButton<any>, never>;
152
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptSplitButton<any>, "kpt-split-button", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "primaryClick": "primaryClick"; "select": "select"; }, never, ["*"], true, never>;
153
+ }
154
+
155
+ /**
156
+ * Ikona Koncept UI (inline SVG, zestaw Tabler Icons — MIT). Rozmiar dziedziczy z `font-size`
157
+ * (1em) lub ustaw `size`; kolor z `currentColor`. Ikona musi być w rejestrze
158
+ * ([[KptIconRegistry]]) — wbudowany zestaw działa od razu, pełny zestaw dodaje
159
+ * `provideKptTablerIcons()` z `@konce-pt/angular/icons`.
160
+ *
161
+ * @example
162
+ * <kpt-icon name="menu" />
163
+ * <kpt-icon name="check" size="1.25rem" />
164
+ */
165
+ declare class KptIcon {
166
+ /** Nazwa ikony z rejestru (wbudowana lub zarejestrowana). */
167
+ readonly name: _angular_core.InputSignal<string>;
168
+ /** Rozmiar jako długość CSS (np. '1.25rem'); domyślnie dziedziczy z font-size. */
169
+ readonly size: _angular_core.InputSignal<string>;
170
+ private readonly host;
171
+ private readonly registry;
172
+ constructor();
173
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptIcon, never>;
174
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptIcon, "kpt-icon", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
175
+ }
176
+
177
+ /**
178
+ * Rejestr ikon dla `kpt-icon`. Zawiera wbudowany zestaw (używany przez komponenty).
179
+ * Aby dodać pełny zestaw Tabler (5130 ikon), użyj `provideKptTablerIcons()`
180
+ * z `@konce-pt/angular/icons` lub zarejestruj własne przez `register()`.
181
+ */
182
+ declare class KptIconRegistry {
183
+ private readonly icons;
184
+ private readonly _version;
185
+ /** Rośnie po każdej rejestracji — pozwala `kpt-icon` reagować na późne dodanie ikon. */
186
+ readonly version: _angular_core.Signal<number>;
187
+ /** Rejestruje (lub nadpisuje) ikony: `{ nazwa: 'inner svg' }`. */
188
+ register(icons: Record<string, string>): void;
189
+ /** Zwraca wewnętrzny SVG ikony lub undefined. */
190
+ get(name: string): string | undefined;
191
+ has(name: string): boolean;
192
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptIconRegistry, never>;
193
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<KptIconRegistry>;
194
+ }
195
+
196
+ 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';
197
+
198
+ type KptBadgeVariant = 'neutral' | 'primary' | 'success' | 'danger' | 'warning' | 'info';
199
+ /**
200
+ * Znacznik (badge) — licznik lub kropka statusu. Standalone lub nałożony na treść (`overlay`).
201
+ *
202
+ * @example
203
+ * <kpt-badge [value]="3" variant="danger" />
204
+ * <kpt-badge [value]="128" overlay><kpt-icon name="menu" /></kpt-badge>
205
+ * <kpt-badge dot variant="success" overlay><kpt-avatar name="AK" /></kpt-badge>
206
+ */
207
+ declare class KptBadge {
208
+ readonly value: _angular_core.InputSignal<string | number | null>;
209
+ readonly variant: _angular_core.InputSignal<KptBadgeVariant>;
210
+ readonly dot: _angular_core.InputSignalWithTransform<boolean, unknown>;
211
+ readonly overlay: _angular_core.InputSignalWithTransform<boolean, unknown>;
212
+ readonly max: _angular_core.InputSignal<number>;
213
+ protected readonly display: _angular_core.Signal<string | number>;
214
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptBadge, never>;
215
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptBadge, "kpt-badge", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "dot": { "alias": "dot"; "required": false; "isSignal": true; }; "overlay": { "alias": "overlay"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
216
+ }
217
+
218
+ type KptChipVariant = 'neutral' | 'primary' | 'success' | 'danger' | 'warning' | 'info';
219
+ /**
220
+ * Chip / tag — etykieta, opcjonalnie usuwalna.
221
+ *
222
+ * @example
223
+ * <kpt-chip>Angular</kpt-chip>
224
+ * <kpt-chip variant="success" removable (removed)="onRemove()">UI</kpt-chip>
225
+ */
226
+ declare class KptChip {
227
+ readonly variant: _angular_core.InputSignal<KptChipVariant>;
228
+ readonly removable: _angular_core.InputSignalWithTransform<boolean, unknown>;
229
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
230
+ readonly removed: _angular_core.OutputEmitterRef<void>;
231
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptChip, never>;
232
+ 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
+ }
234
+
235
+ type KptAvatarSize = 'sm' | 'md' | 'lg' | 'xl';
236
+ type KptAvatarShape = 'circle' | 'square';
237
+ /**
238
+ * Awatar — obraz, inicjały (z `name`) lub ikona.
239
+ *
240
+ * @example
241
+ * <kpt-avatar src="/u/anna.jpg" />
242
+ * <kpt-avatar name="Anna Kowalska" size="lg" />
243
+ * <kpt-avatar icon="user" shape="square" />
244
+ */
245
+ declare class KptAvatar {
246
+ readonly src: _angular_core.InputSignal<string | null>;
247
+ readonly name: _angular_core.InputSignal<string>;
248
+ readonly icon: _angular_core.InputSignal<string | null>;
249
+ readonly size: _angular_core.InputSignal<KptAvatarSize>;
250
+ readonly shape: _angular_core.InputSignal<KptAvatarShape>;
251
+ protected readonly initials: _angular_core.Signal<string>;
252
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptAvatar, never>;
253
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptAvatar, "kpt-avatar", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
254
+ }
255
+
256
+ /**
257
+ * Wskaźnik ładowania (spinner). Kolor z `currentColor`.
258
+ *
259
+ * @example
260
+ * <kpt-spinner />
261
+ * <kpt-spinner size="2rem" label="Wczytywanie danych" />
262
+ */
263
+ declare class KptSpinner {
264
+ readonly size: _angular_core.InputSignal<string>;
265
+ readonly label: _angular_core.InputSignal<string>;
266
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptSpinner, never>;
267
+ 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
+ }
269
+
270
+ type KptProgressVariant = 'primary' | 'success' | 'danger' | 'warning' | 'info';
271
+ /**
272
+ * Wskaźnik postępu — liniowy lub kołowy, określony (0–100) lub nieokreślony (`value` = null).
273
+ *
274
+ * @example
275
+ * <kpt-progress [value]="60" />
276
+ * <kpt-progress type="circular" [value]="75" variant="success" />
277
+ * <kpt-progress [value]="null" /> <!-- indeterminate -->
278
+ */
279
+ declare class KptProgress {
280
+ /** 0–100 lub null = nieokreślony. */
281
+ readonly value: _angular_core.InputSignal<number | null>;
282
+ readonly variant: _angular_core.InputSignal<KptProgressVariant>;
283
+ readonly type: _angular_core.InputSignal<"linear" | "circular">;
284
+ readonly diameter: _angular_core.InputSignal<number>;
285
+ protected readonly circumference: number;
286
+ protected readonly offset: _angular_core.Signal<number>;
287
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptProgress, never>;
288
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptProgress, "kpt-progress", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "diameter": { "alias": "diameter"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
289
+ }
290
+
291
+ type KptSkeletonVariant = 'text' | 'circle' | 'rect';
292
+ /**
293
+ * Placeholder ładowania (skeleton) z animacją shimmer.
294
+ *
295
+ * @example
296
+ * <kpt-skeleton variant="text" [lines]="3" />
297
+ * <kpt-skeleton variant="circle" width="3rem" height="3rem" />
298
+ * <kpt-skeleton variant="rect" width="100%" height="8rem" />
299
+ */
300
+ declare class KptSkeleton {
301
+ readonly variant: _angular_core.InputSignal<KptSkeletonVariant>;
302
+ readonly width: _angular_core.InputSignal<string>;
303
+ readonly height: _angular_core.InputSignal<string>;
304
+ readonly lines: _angular_core.InputSignal<number>;
305
+ protected readonly lineArray: _angular_core.Signal<unknown[]>;
306
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptSkeleton, never>;
307
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptSkeleton, "kpt-skeleton", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "lines": { "alias": "lines"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
308
+ }
309
+
310
+ /**
311
+ * Wrapper pola formularza: etykieta, podpowiedź i komunikat błędu wokół dowolnej
312
+ * kontrolki (np. `kpt-input`). Prezentacyjny — stan błędu przekazuje się przez `error`
313
+ * (zwykle z pola Signal Forms). Wygląd sterowany tokenami `--kpt-form-field-*`.
314
+ *
315
+ * @example
316
+ * <kpt-form-field label="E-mail" [error]="emailError()" hint="Firmowy adres">
317
+ * <kpt-input [control]="f.email" type="email" />
318
+ * </kpt-form-field>
319
+ */
320
+ declare class KptFormField {
321
+ /** Tekst etykiety. */
322
+ readonly label: _angular_core.InputSignal<string>;
323
+ /** Podpowiedź pod kontrolką (ukrywana, gdy jest błąd). */
324
+ readonly hint: _angular_core.InputSignal<string>;
325
+ /** Komunikat błędu — gdy niepusty, pole jest oznaczone jako nieprawidłowe. */
326
+ readonly error: _angular_core.InputSignal<string | null>;
327
+ /** Oznacz pole jako wymagane (gwiazdka przy etykiecie). */
328
+ readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
329
+ /** Id kontrolki dla powiązania `label[for]`. */
330
+ readonly controlId: _angular_core.InputSignal<string>;
331
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptFormField, never>;
332
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptFormField, "kpt-form-field", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "controlId": { "alias": "controlId"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
333
+ }
334
+
335
+ type KptInputType = 'text' | 'email' | 'password' | 'number' | 'search' | 'tel' | 'url';
336
+ /**
337
+ * Pole tekstowe Koncept UI zintegrowane z Angular Signal Forms.
338
+ * Implementuje `FormValueControl<string>` — wiąż je dyrektywą `FormField`:
339
+ *
340
+ * <kpt-input [formField]="loginForm.email" type="email" />
341
+ *
342
+ * Stan pola (disabled/readonly/required/invalid/errors/touched) wiąże automatycznie
343
+ * dyrektywa `FormField`. Bez `ControlValueAccessor`. Wygląd: tokeny `--kpt-form-field-*`.
344
+ */
345
+ declare class KptInput implements FormValueControl<string> {
346
+ /** Wartość pola (wymagane przez kontrakt FormValueControl). */
347
+ readonly value: _angular_core.ModelSignal<string>;
348
+ readonly disabled: _angular_core.InputSignal<boolean>;
349
+ readonly readonly: _angular_core.InputSignal<boolean>;
350
+ readonly required: _angular_core.InputSignal<boolean>;
351
+ readonly invalid: _angular_core.InputSignal<boolean>;
352
+ readonly errors: _angular_core.InputSignal<readonly WithOptionalFieldTree<ValidationError>[]>;
353
+ readonly touched: _angular_core.InputSignal<boolean>;
354
+ /** Emitowane na `blur` — oznacza pole jako dotknięte. */
355
+ readonly touch: _angular_core.OutputEmitterRef<void>;
356
+ readonly type: _angular_core.InputSignal<KptInputType>;
357
+ readonly placeholder: _angular_core.InputSignal<string>;
358
+ readonly id: _angular_core.InputSignal<string>;
359
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
360
+ protected onInput(event: Event): void;
361
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptInput, never>;
362
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptInput, "kpt-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
363
+ }
364
+
365
+ /**
366
+ * Pole wyboru (checkbox) zintegrowane z Signal Forms (`FormCheckboxControl`).
367
+ * Wiąż dyrektywą `FormField`: `<kpt-checkbox [formField]="f.terms" label="Akceptuję" />`.
368
+ */
369
+ declare class KptCheckbox implements FormCheckboxControl {
370
+ /** Zaznaczenie (wymagane przez kontrakt FormCheckboxControl). */
371
+ readonly checked: _angular_core.ModelSignal<boolean>;
372
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
373
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
374
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
375
+ readonly touch: _angular_core.OutputEmitterRef<void>;
376
+ /** Etykieta obok pola. */
377
+ readonly label: _angular_core.InputSignal<string>;
378
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptCheckbox, never>;
379
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptCheckbox, "kpt-checkbox", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "touch": "touch"; }, never, ["*"], true, never>;
380
+ }
381
+
382
+ /**
383
+ * Przełącznik (switch/toggle) zintegrowany z Signal Forms (`FormCheckboxControl`).
384
+ * `<kpt-switch [formField]="f.notifications" label="Powiadomienia" />`
385
+ */
386
+ declare class KptSwitch implements FormCheckboxControl {
387
+ readonly checked: _angular_core.ModelSignal<boolean>;
388
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
389
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
390
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
391
+ readonly touch: _angular_core.OutputEmitterRef<void>;
392
+ readonly label: _angular_core.InputSignal<string>;
393
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptSwitch, never>;
394
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptSwitch, "kpt-switch", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "touch": "touch"; }, never, ["*"], true, never>;
395
+ }
396
+
397
+ /**
398
+ * Grupa przycisków opcji (radio) zintegrowana z Signal Forms (`FormValueControl<T>`).
399
+ * Opcje przez `options`. `<kpt-radio-group [formField]="f.plan" [options]="plans" />`
400
+ */
401
+ declare class KptRadioGroup<T = unknown> implements FormValueControl<T> {
402
+ readonly value: _angular_core.ModelSignal<T>;
403
+ readonly options: _angular_core.InputSignal<KptOption<T>[]>;
404
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
405
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
406
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
407
+ readonly touch: _angular_core.OutputEmitterRef<void>;
408
+ readonly name: _angular_core.InputSignal<string>;
409
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptRadioGroup<any>, never>;
410
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptRadioGroup<any>, "kpt-radio-group", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
411
+ }
412
+
413
+ /**
414
+ * Lista wyboru (select) na własnym panelu (CDK Overlay), zintegrowana z Signal Forms.
415
+ * Warianty: pojedynczy, z wyszukiwarką (`filter`) i wielokrotny (`multiple`, chipy).
416
+ *
417
+ * @example
418
+ * <kpt-select [formField]="f.role" [options]="roles" placeholder="Wybierz…" />
419
+ * <kpt-select [formField]="f.city" [options]="cities" filter placeholder="Szukaj miasta…" />
420
+ * <kpt-select [formField]="f.tags" [options]="tags" multiple filter placeholder="Tagi…" />
421
+ */
422
+ declare class KptSelect<T = unknown> implements FormValueControl<unknown> {
423
+ readonly options: _angular_core.InputSignal<KptOption<T>[]>;
424
+ readonly placeholder: _angular_core.InputSignal<string>;
425
+ readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
426
+ readonly filter: _angular_core.InputSignalWithTransform<boolean, unknown>;
427
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
428
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
429
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
430
+ /** Wartość: pojedyncza (T) lub tablica (T[]) w trybie multiple. */
431
+ readonly value: _angular_core.ModelSignal<unknown>;
432
+ readonly touch: _angular_core.OutputEmitterRef<void>;
433
+ protected readonly open: _angular_core.WritableSignal<boolean>;
434
+ protected readonly filterText: _angular_core.WritableSignal<string>;
435
+ protected readonly activeIndex: _angular_core.WritableSignal<number>;
436
+ protected readonly positions: ConnectedPosition[];
437
+ private readonly selectedValues;
438
+ protected readonly selectedOptions: _angular_core.Signal<KptOption<T>[]>;
439
+ protected readonly filteredOptions: _angular_core.Signal<KptOption<T>[]>;
440
+ protected readonly singleLabel: _angular_core.Signal<string>;
441
+ protected readonly hasValue: _angular_core.Signal<boolean>;
442
+ protected isSelected(opt: KptOption<T>): boolean;
443
+ protected toggleOpen(): void;
444
+ protected close(): void;
445
+ protected pick(opt: KptOption<T>): void;
446
+ protected removeChip(opt: KptOption<T>, event: Event): void;
447
+ protected onFilterInput(event: Event): void;
448
+ protected onTriggerKeydown(event: KeyboardEvent): void;
449
+ protected onPanelKeydown(event: KeyboardEvent): void;
450
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptSelect<any>, never>;
451
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptSelect<any>, "kpt-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
452
+ }
453
+
454
+ interface DayCell$1 {
455
+ day: number;
456
+ iso: string;
457
+ inMonth: boolean;
458
+ today: boolean;
459
+ selected: boolean;
460
+ disabled: boolean;
461
+ }
462
+ /**
463
+ * Wybór daty z własnym kalendarzem (CDK Overlay), Signal Forms. Wartość ISO 'RRRR-MM-DD'.
464
+ * Wymaga stylów overlay CDK: `import '@angular/cdk/overlay-prebuilt.css';`
465
+ *
466
+ * @example
467
+ * <kpt-datepicker [formField]="f.birthDate" minDate="1900-01-01" />
468
+ */
469
+ declare class KptDatepicker implements FormValueControl<string> {
470
+ readonly value: _angular_core.ModelSignal<string>;
471
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
472
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
473
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
474
+ readonly touch: _angular_core.OutputEmitterRef<void>;
475
+ readonly placeholder: _angular_core.InputSignal<string>;
476
+ readonly minDate: _angular_core.InputSignal<string | null>;
477
+ readonly maxDate: _angular_core.InputSignal<string | null>;
478
+ protected readonly weekdays: string[];
479
+ protected readonly open: _angular_core.WritableSignal<boolean>;
480
+ private readonly today;
481
+ private readonly view;
482
+ protected readonly positions: ConnectedPosition[];
483
+ protected readonly monthLabel: _angular_core.Signal<string>;
484
+ protected readonly display: _angular_core.Signal<string>;
485
+ protected readonly weeks: _angular_core.Signal<DayCell$1[][]>;
486
+ private parse;
487
+ protected toggleOpen(): void;
488
+ protected close(): void;
489
+ protected selectDay(cell: DayCell$1): void;
490
+ protected prevMonth(): void;
491
+ protected nextMonth(): void;
492
+ protected clear(event: Event): void;
493
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptDatepicker, never>;
494
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptDatepicker, "kpt-datepicker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
495
+ }
496
+
497
+ /**
498
+ * Pole wieloliniowe (textarea) na Signal Forms, z opcjonalnym auto-resize.
499
+ *
500
+ * @example
501
+ * <kpt-textarea [formField]="f.notes" placeholder="Notatki…" autoResize />
502
+ */
503
+ declare class KptTextarea implements FormValueControl<string> {
504
+ readonly value: _angular_core.ModelSignal<string>;
505
+ readonly placeholder: _angular_core.InputSignal<string>;
506
+ readonly rows: _angular_core.InputSignal<number>;
507
+ readonly autoResize: _angular_core.InputSignalWithTransform<boolean, unknown>;
508
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
509
+ readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
510
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
511
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
512
+ readonly touch: _angular_core.OutputEmitterRef<void>;
513
+ private readonly ta;
514
+ constructor();
515
+ protected onInput(event: Event): void;
516
+ private resize;
517
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptTextarea, never>;
518
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptTextarea, "kpt-textarea", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "autoResize": { "alias": "autoResize"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
519
+ }
520
+
521
+ type KptRichTool = 'bold' | 'italic' | 'underline' | 'strike' | 'ul' | 'ol' | 'link' | 'clear';
522
+ /**
523
+ * Lekki edytor tekstu sformatowanego (contenteditable) z konfigurowalnym paskiem przycisków.
524
+ * Wartość = HTML. Bez zależności zewnętrznych. Signal Forms.
525
+ *
526
+ * @example
527
+ * <kpt-rich-text [formField]="f.body" [toolbar]="['bold','italic','ul','link']" />
528
+ */
529
+ declare class KptRichText implements FormValueControl<string> {
530
+ readonly value: _angular_core.ModelSignal<string>;
531
+ readonly toolbar: _angular_core.InputSignal<KptRichTool[]>;
532
+ readonly placeholder: _angular_core.InputSignal<string>;
533
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
534
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
535
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
536
+ readonly touch: _angular_core.OutputEmitterRef<void>;
537
+ private readonly editor;
538
+ constructor();
539
+ protected icon(item: KptRichTool): KptIconName;
540
+ protected onInput(): void;
541
+ protected exec(item: KptRichTool): void;
542
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptRichText, never>;
543
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptRichText, "kpt-rich-text", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "toolbar": { "alias": "toolbar"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
544
+ }
545
+
546
+ /**
547
+ * Suwak wartości (slider) na Signal Forms.
548
+ *
549
+ * @example
550
+ * <kpt-slider [formField]="f.volume" [min]="0" [max]="100" [step]="5" showValue />
551
+ */
552
+ declare class KptSlider implements FormValueControl<number> {
553
+ readonly value: _angular_core.ModelSignal<number>;
554
+ readonly min: _angular_core.InputSignal<number | undefined>;
555
+ readonly max: _angular_core.InputSignal<number | undefined>;
556
+ readonly step: _angular_core.InputSignal<number>;
557
+ readonly showValue: _angular_core.InputSignalWithTransform<boolean, unknown>;
558
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
559
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
560
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
561
+ readonly touch: _angular_core.OutputEmitterRef<void>;
562
+ protected readonly percent: _angular_core.Signal<number>;
563
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptSlider, never>;
564
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptSlider, "kpt-slider", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
565
+ }
566
+
567
+ /**
568
+ * Ocena gwiazdkami (rating) na Signal Forms.
569
+ *
570
+ * @example
571
+ * <kpt-rating [formField]="f.score" [max]="5" />
572
+ * <kpt-rating [value]="4" readonly />
573
+ */
574
+ declare class KptRating implements FormValueControl<number> {
575
+ readonly value: _angular_core.ModelSignal<number>;
576
+ /** Liczba gwiazdek. */
577
+ readonly count: _angular_core.InputSignal<number>;
578
+ readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
579
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
580
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
581
+ readonly touch: _angular_core.OutputEmitterRef<void>;
582
+ protected readonly hover: _angular_core.WritableSignal<number>;
583
+ protected readonly stars: _angular_core.Signal<number[]>;
584
+ protected pick(star: number): void;
585
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptRating, never>;
586
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptRating, "kpt-rating", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "count": { "alias": "count"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
587
+ }
588
+
589
+ /**
590
+ * Wgrywanie plików (drag-drop + wybór). Wartość = File[]. Signal Forms.
591
+ *
592
+ * @example
593
+ * <kpt-file-upload [formField]="f.files" accept="image/*" multiple />
594
+ */
595
+ declare class KptFileUpload implements FormValueControl<File[]> {
596
+ readonly value: _angular_core.ModelSignal<File[]>;
597
+ readonly accept: _angular_core.InputSignal<string>;
598
+ readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
599
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
600
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
601
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
602
+ readonly touch: _angular_core.OutputEmitterRef<void>;
603
+ protected readonly dragover: _angular_core.WritableSignal<boolean>;
604
+ protected onSelect(event: Event): void;
605
+ protected onDragOver(event: DragEvent): void;
606
+ protected onDrop(event: DragEvent): void;
607
+ private addFiles;
608
+ protected remove(file: File, event: Event): void;
609
+ protected size(file: File): string;
610
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptFileUpload, never>;
611
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptFileUpload, "kpt-file-upload", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
612
+ }
613
+
614
+ /**
615
+ * Wybór koloru (swatch + hex + presety) na Signal Forms. Wartość = hex, np. '#3b82f6'.
616
+ *
617
+ * @example
618
+ * <kpt-color-picker [formField]="f.brand" />
619
+ */
620
+ declare class KptColorPicker implements FormValueControl<string> {
621
+ readonly value: _angular_core.ModelSignal<string>;
622
+ readonly presets: _angular_core.InputSignal<string[]>;
623
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
624
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
625
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
626
+ readonly touch: _angular_core.OutputEmitterRef<void>;
627
+ protected onHex(event: Event): void;
628
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptColorPicker, never>;
629
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptColorPicker, "kpt-color-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
630
+ }
631
+
632
+ interface KptDateRangeValue {
633
+ start: string;
634
+ end: string;
635
+ }
636
+ interface DayCell {
637
+ day: number;
638
+ iso: string;
639
+ inMonth: boolean;
640
+ isStart: boolean;
641
+ isEnd: boolean;
642
+ inRange: boolean;
643
+ disabled: boolean;
644
+ }
645
+ /**
646
+ * Wybór zakresu dat z kalendarzem (CDK Overlay), Signal Forms.
647
+ * Wartość: `{ start: 'RRRR-MM-DD', end: 'RRRR-MM-DD' }`.
648
+ * Wymaga `import '@angular/cdk/overlay-prebuilt.css';`
649
+ *
650
+ * @example
651
+ * <kpt-date-range [formField]="f.period" />
652
+ */
653
+ declare class KptDateRange implements FormValueControl<KptDateRangeValue> {
654
+ readonly value: _angular_core.ModelSignal<KptDateRangeValue>;
655
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
656
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
657
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
658
+ readonly touch: _angular_core.OutputEmitterRef<void>;
659
+ readonly placeholder: _angular_core.InputSignal<string>;
660
+ protected readonly weekdays: string[];
661
+ protected readonly open: _angular_core.WritableSignal<boolean>;
662
+ private readonly today;
663
+ private readonly view;
664
+ protected readonly positions: ConnectedPosition[];
665
+ protected readonly monthLabel: _angular_core.Signal<string>;
666
+ protected readonly display: _angular_core.Signal<string>;
667
+ protected readonly weeks: _angular_core.Signal<DayCell[][]>;
668
+ protected toggleOpen(): void;
669
+ protected close(): void;
670
+ protected selectDay(cell: DayCell): void;
671
+ protected prevMonth(): void;
672
+ protected nextMonth(): void;
673
+ protected clear(event: Event): void;
674
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptDateRange, never>;
675
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptDateRange, "kpt-date-range", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
676
+ }
677
+
678
+ /**
679
+ * Pole liczbowe ze strzałkami krokowania na Signal Forms. Wartość = number | null.
680
+ *
681
+ * @example
682
+ * <kpt-input-number [formField]="f.qty" [min]="0" [max]="99" [step]="1" />
683
+ */
684
+ declare class KptInputNumber implements FormValueControl<number | null> {
685
+ readonly value: _angular_core.ModelSignal<number | null>;
686
+ readonly min: _angular_core.InputSignal<number | undefined>;
687
+ readonly max: _angular_core.InputSignal<number | undefined>;
688
+ readonly step: _angular_core.InputSignal<number>;
689
+ readonly placeholder: _angular_core.InputSignal<string>;
690
+ readonly suffix: _angular_core.InputSignal<string>;
691
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
692
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
693
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
694
+ readonly touch: _angular_core.OutputEmitterRef<void>;
695
+ protected readonly display: _angular_core.Signal<string>;
696
+ protected readonly canInc: _angular_core.Signal<boolean>;
697
+ protected readonly canDec: _angular_core.Signal<boolean>;
698
+ protected onInput(event: Event): void;
699
+ protected step_(dir: 1 | -1): void;
700
+ private clamp;
701
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptInputNumber, never>;
702
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptInputNumber, "kpt-input-number", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
703
+ }
704
+
705
+ interface Strength {
706
+ score: 0 | 1 | 2 | 3 | 4;
707
+ label: string;
708
+ }
709
+ /**
710
+ * Pole hasła z przełącznikiem widoczności i opcjonalnym miernikiem siły. Signal Forms.
711
+ *
712
+ * @example
713
+ * <kpt-password [formField]="f.password" feedback />
714
+ */
715
+ declare class KptPassword implements FormValueControl<string> {
716
+ readonly value: _angular_core.ModelSignal<string>;
717
+ readonly placeholder: _angular_core.InputSignal<string>;
718
+ readonly feedback: _angular_core.InputSignalWithTransform<boolean, unknown>;
719
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
720
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
721
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
722
+ readonly touch: _angular_core.OutputEmitterRef<void>;
723
+ protected readonly visible: _angular_core.WritableSignal<boolean>;
724
+ protected readonly strength: _angular_core.Signal<Strength>;
725
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptPassword, never>;
726
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptPassword, "kpt-password", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "feedback": { "alias": "feedback"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
727
+ }
728
+
729
+ /**
730
+ * Pole kodu jednorazowego (OTP/PIN) — N osobnych pól, autofocus i wklejanie. Signal Forms.
731
+ * Wartość = string (sklejone znaki).
732
+ *
733
+ * @example
734
+ * <kpt-input-otp [formField]="f.code" [length]="6" integerOnly />
735
+ */
736
+ declare class KptInputOtp implements FormValueControl<string> {
737
+ readonly value: _angular_core.ModelSignal<string>;
738
+ readonly length: _angular_core.InputSignal<number>;
739
+ readonly integerOnly: _angular_core.InputSignalWithTransform<boolean, unknown>;
740
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
741
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
742
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
743
+ readonly touch: _angular_core.OutputEmitterRef<void>;
744
+ protected readonly slots: _angular_core.Signal<number[]>;
745
+ protected charAt(i: number): string;
746
+ protected onInput(i: number, event: Event): void;
747
+ protected onKeydown(i: number, event: KeyboardEvent): void;
748
+ protected onPaste(event: ClipboardEvent): void;
749
+ private setChar;
750
+ private focusSibling;
751
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptInputOtp, never>;
752
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptInputOtp, "kpt-input-otp", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "length": { "alias": "length"; "required": false; "isSignal": true; }; "integerOnly": { "alias": "integerOnly"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
753
+ }
754
+
755
+ /**
756
+ * Pole tagów — dodawanie Enter/przecinkiem, usuwanie Backspace/×. Signal Forms.
757
+ * Wartość = string[].
758
+ *
759
+ * @example
760
+ * <kpt-chips-input [formField]="f.tags" placeholder="Dodaj tag…" />
761
+ */
762
+ declare class KptChipsInput implements FormValueControl<string[]> {
763
+ readonly value: _angular_core.ModelSignal<string[]>;
764
+ readonly placeholder: _angular_core.InputSignal<string>;
765
+ readonly allowDuplicates: _angular_core.InputSignalWithTransform<boolean, unknown>;
766
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
767
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
768
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
769
+ readonly touch: _angular_core.OutputEmitterRef<void>;
770
+ protected onKeydown(event: KeyboardEvent): void;
771
+ protected commit(el: HTMLInputElement): void;
772
+ protected removeAt(index: number): void;
773
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptChipsInput, never>;
774
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptChipsInput, "kpt-chips-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "allowDuplicates": { "alias": "allowDuplicates"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
775
+ }
776
+
777
+ /**
778
+ * Pole z maską znakową na Signal Forms. Tokeny maski: `9`=cyfra, `a`=litera, `*`=alfanumeryczny.
779
+ * Pozostałe znaki maski to literały (np. spacje, nawiasy, myślniki).
780
+ *
781
+ * @example
782
+ * <kpt-input-mask [formField]="f.phone" mask="(999) 999-99-99" />
783
+ */
784
+ declare class KptInputMask implements FormValueControl<string> {
785
+ readonly value: _angular_core.ModelSignal<string>;
786
+ readonly mask: _angular_core.InputSignal<string>;
787
+ readonly placeholder: _angular_core.InputSignal<string>;
788
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
789
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
790
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
791
+ readonly touch: _angular_core.OutputEmitterRef<void>;
792
+ protected onInput(event: Event): void;
793
+ private applyMask;
794
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptInputMask, never>;
795
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptInputMask, "kpt-input-mask", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "mask": { "alias": "mask"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
796
+ }
797
+
798
+ /**
799
+ * Lista wyboru (listbox) na Signal Forms. Pojedynczy lub wielokrotny wybór, opcjonalny filtr.
800
+ * Wartość: `T` (single) lub `T[]` (multiple).
801
+ *
802
+ * @example
803
+ * <kpt-listbox [formField]="f.role" [options]="roles" filter />
804
+ * <kpt-listbox [(value)]="tags" [options]="tagOptions" multiple />
805
+ */
806
+ declare class KptListbox<T = unknown> implements FormValueControl<T | T[] | null> {
807
+ readonly value: _angular_core.ModelSignal<T | T[] | null>;
808
+ readonly options: _angular_core.InputSignal<KptOption<T>[]>;
809
+ readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
810
+ readonly filter: _angular_core.InputSignalWithTransform<boolean, unknown>;
811
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
812
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
813
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
814
+ readonly touch: _angular_core.OutputEmitterRef<void>;
815
+ protected readonly query: _angular_core.WritableSignal<string>;
816
+ protected readonly visible: _angular_core.Signal<KptOption<T>[]>;
817
+ protected isSelected(v: T): boolean;
818
+ protected toggle(v: T): void;
819
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptListbox<any>, never>;
820
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptListbox<any>, "kpt-listbox", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
821
+ }
822
+
823
+ /**
824
+ * Pokrętło (knob) — wybór wartości po łuku, myszką lub strzałkami. Signal Forms.
825
+ *
826
+ * @example
827
+ * <kpt-knob [formField]="f.level" [min]="0" [max]="100" [step]="1" />
828
+ */
829
+ declare class KptKnob implements FormValueControl<number> {
830
+ private readonly host;
831
+ readonly value: _angular_core.ModelSignal<number>;
832
+ readonly min: _angular_core.InputSignal<number | undefined>;
833
+ readonly max: _angular_core.InputSignal<number | undefined>;
834
+ readonly step: _angular_core.InputSignal<number>;
835
+ readonly size: _angular_core.InputSignal<number>;
836
+ readonly stroke: _angular_core.InputSignal<number>;
837
+ readonly suffix: _angular_core.InputSignal<string>;
838
+ readonly showValue: _angular_core.InputSignalWithTransform<boolean, unknown>;
839
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
840
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
841
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
842
+ readonly touch: _angular_core.OutputEmitterRef<void>;
843
+ private readonly startAngle;
844
+ private readonly sweep;
845
+ protected readonly rangePath: _angular_core.Signal<string>;
846
+ protected readonly valuePath: _angular_core.Signal<string>;
847
+ private ratio;
848
+ private arc;
849
+ protected onPointer(event: PointerEvent): void;
850
+ private setFromPoint;
851
+ private applyRatio;
852
+ protected onKeydown(event: KeyboardEvent): void;
853
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptKnob, never>;
854
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptKnob, "kpt-knob", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "stroke": { "alias": "stroke"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
855
+ }
856
+
857
+ type KptCardVariant = 'elevated' | 'outlined';
858
+ /**
859
+ * Karta Koncept UI — powierzchnia z wyniesieniem (elevated) lub obramowaniem (outlined).
860
+ * Opcjonalny nagłówek przez `header`; treść przez projekcję. Stopkę wstaw z atrybutem
861
+ * `kptCardFooter`.
862
+ *
863
+ * @example
864
+ * <kpt-card header="Ustawienia">
865
+ * <p>Treść karty…</p>
866
+ * <div kptCardFooter><kpt-button>Zapisz</kpt-button></div>
867
+ * </kpt-card>
868
+ */
869
+ declare class KptCard {
870
+ /** Wariant wizualny. */
871
+ readonly variant: _angular_core.InputSignal<KptCardVariant>;
872
+ /** Opcjonalny tekst nagłówka. */
873
+ readonly header: _angular_core.InputSignal<string>;
874
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptCard, never>;
875
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptCard, "kpt-card", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[kptCardFooter]"], true, never>;
876
+ }
877
+
878
+ type KptDividerOrientation = 'horizontal' | 'vertical';
879
+ /**
880
+ * Separator Koncept UI (linia pozioma lub pionowa). Kolor z `--kpt-color-border`.
881
+ *
882
+ * @example
883
+ * <kpt-divider />
884
+ * <kpt-divider orientation="vertical" />
885
+ * <kpt-divider inset />
886
+ */
887
+ declare class KptDivider {
888
+ /** Orientacja linii. */
889
+ readonly orientation: _angular_core.InputSignal<KptDividerOrientation>;
890
+ /** Wcięcie (odstęp od krawędzi kontenera). */
891
+ readonly inset: _angular_core.InputSignalWithTransform<boolean, unknown>;
892
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptDivider, never>;
893
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptDivider, "kpt-divider", never, { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "inset": { "alias": "inset"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
894
+ }
895
+
896
+ /**
897
+ * Górny pasek (toolbar) — pozioma belka na treść aplikacji (logo, akcje).
898
+ * Elementowi z atrybutem `kptToolbarSpacer` nadaj elastyczny odstęp, aby rozepchnąć zawartość.
899
+ *
900
+ * @example
901
+ * <kpt-toolbar elevated>
902
+ * <strong>Koncept UI</strong>
903
+ * <span kptToolbarSpacer></span>
904
+ * <kpt-button variant="text">Wyloguj</kpt-button>
905
+ * </kpt-toolbar>
906
+ */
907
+ declare class KptToolbar {
908
+ /** Dodaje cień (wyniesienie) pod paskiem. */
909
+ readonly elevated: _angular_core.InputSignalWithTransform<boolean, unknown>;
910
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptToolbar, never>;
911
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptToolbar, "kpt-toolbar", never, { "elevated": { "alias": "elevated"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
912
+ }
913
+
914
+ /**
915
+ * Panel boczny (sidenav) — stylowany kontener nawigacji, zwykle umieszczany w slocie
916
+ * `kptShellSidenav` komponentu `kpt-app-shell`.
917
+ *
918
+ * @example
919
+ * <kpt-sidenav kptShellSidenav>
920
+ * <a href="#">Pulpit</a>
921
+ * <a href="#">Ustawienia</a>
922
+ * </kpt-sidenav>
923
+ */
924
+ declare class KptSidenav {
925
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptSidenav, never>;
926
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptSidenav, "kpt-sidenav", never, {}, {}, never, ["*"], true, never>;
927
+ }
928
+
929
+ type KptSidenavMode = 'side' | 'over';
930
+ /**
931
+ * Szkielet aplikacji (app shell) w stylu Material: toolbar u góry, panel boczny i treść.
932
+ * Sloty projekcji: `[kptShellToolbar]`, `[kptShellSidenav]`, oraz treść domyślna.
933
+ *
934
+ * @example
935
+ * <kpt-app-shell [(sidenavOpen)]="navOpen" sidenavMode="side">
936
+ * <kpt-toolbar kptShellToolbar>…</kpt-toolbar>
937
+ * <kpt-sidenav kptShellSidenav>…</kpt-sidenav>
938
+ * <router-outlet />
939
+ * </kpt-app-shell>
940
+ */
941
+ declare class KptAppShell {
942
+ /** Czy panel boczny jest otwarty (dwukierunkowe). */
943
+ readonly sidenavOpen: _angular_core.ModelSignal<boolean>;
944
+ /** Tryb panelu: 'side' rozpycha treść, 'over' nakłada się ze scrimem. */
945
+ readonly sidenavMode: _angular_core.InputSignal<KptSidenavMode>;
946
+ protected onScrimClick(): void;
947
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptAppShell, never>;
948
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptAppShell, "kpt-app-shell", never, { "sidenavOpen": { "alias": "sidenavOpen"; "required": false; "isSignal": true; }; "sidenavMode": { "alias": "sidenavMode"; "required": false; "isSignal": true; }; }, { "sidenavOpen": "sidenavOpenChange"; }, never, ["[kptShellToolbar]", "[kptShellSidenav]", "*"], true, never>;
949
+ }
950
+
951
+ /**
952
+ * Panel z nagłówkiem i opcjonalnym zwijaniem. Akcje nagłówka: atrybut `kptPanelActions`.
953
+ *
954
+ * @example
955
+ * <kpt-panel header="Ustawienia" toggleable>Treść…</kpt-panel>
956
+ */
957
+ declare class KptPanel {
958
+ readonly header: _angular_core.InputSignal<string>;
959
+ readonly toggleable: _angular_core.InputSignalWithTransform<boolean, unknown>;
960
+ readonly collapsed: _angular_core.ModelSignal<boolean>;
961
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptPanel, never>;
962
+ 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; }; }, { "collapsed": "collapsedChange"; }, never, ["[kptPanelActions]", "*"], true, never>;
963
+ }
964
+
965
+ /**
966
+ * Grupa pól z legendą (fieldset), opcjonalnie zwijana.
967
+ *
968
+ * @example
969
+ * <kpt-fieldset legend="Dane osobowe" toggleable>…</kpt-fieldset>
970
+ */
971
+ declare class KptFieldset {
972
+ readonly legend: _angular_core.InputSignal<string>;
973
+ readonly toggleable: _angular_core.InputSignalWithTransform<boolean, unknown>;
974
+ readonly collapsed: _angular_core.ModelSignal<boolean>;
975
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptFieldset, never>;
976
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptFieldset, "kpt-fieldset", never, { "legend": { "alias": "legend"; "required": false; "isSignal": true; }; "toggleable": { "alias": "toggleable"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, ["*"], true, never>;
977
+ }
978
+
979
+ type KptSplitterOrientation = 'horizontal' | 'vertical';
980
+ /**
981
+ * Splitter — dwa panele z przeciąganym uchwytem. Panele przez sloty `[kptSplitStart]` i `[kptSplitEnd]`.
982
+ * `horizontal` = panele obok siebie, `vertical` = jeden pod drugim.
983
+ *
984
+ * @example
985
+ * <kpt-splitter orientation="horizontal" [(startSize)]="size">
986
+ * <div kptSplitStart>Lewy</div>
987
+ * <div kptSplitEnd>Prawy</div>
988
+ * </kpt-splitter>
989
+ */
990
+ declare class KptSplitter {
991
+ private readonly host;
992
+ readonly orientation: _angular_core.InputSignal<KptSplitterOrientation>;
993
+ /** Rozmiar pierwszego panelu w procentach (0–100). */
994
+ readonly startSize: _angular_core.ModelSignal<number>;
995
+ readonly minSize: _angular_core.InputSignal<number>;
996
+ protected readonly endSize: _angular_core.Signal<number>;
997
+ protected onPointer(event: PointerEvent): void;
998
+ protected onKeydown(event: KeyboardEvent): void;
999
+ private setSize;
1000
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptSplitter, never>;
1001
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptSplitter, "kpt-splitter", never, { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "startSize": { "alias": "startSize"; "required": false; "isSignal": true; }; "minSize": { "alias": "minSize"; "required": false; "isSignal": true; }; }, { "startSize": "startSizeChange"; }, never, ["[kptSplitStart]", "[kptSplitEnd]"], true, never>;
1002
+ }
1003
+
1004
+ /**
1005
+ * Przycisk „do góry" — pojawia się po przewinięciu ponad `threshold` px.
1006
+ * Domyślnie działa na oknie; `target` przyjmuje selektor przewijanego elementu.
1007
+ *
1008
+ * @example
1009
+ * <kpt-scroll-top [threshold]="300" />
1010
+ */
1011
+ declare class KptScrollTop {
1012
+ readonly threshold: _angular_core.InputSignal<number>;
1013
+ readonly target: _angular_core.InputSignal<string | null>;
1014
+ protected readonly visible: _angular_core.WritableSignal<boolean>;
1015
+ private scroller;
1016
+ constructor();
1017
+ private currentTop;
1018
+ protected scrollUp(): void;
1019
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptScrollTop, never>;
1020
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptScrollTop, "kpt-scroll-top", never, { "threshold": { "alias": "threshold"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1021
+ }
1022
+
1023
+ /**
1024
+ * Obraz z opcjonalnym podglądem pełnoekranowym (zoom).
1025
+ *
1026
+ * @example
1027
+ * <kpt-image src="/foto.jpg" alt="Zdjęcie" preview width="240px" />
1028
+ */
1029
+ declare class KptImage {
1030
+ readonly src: _angular_core.InputSignal<string>;
1031
+ readonly alt: _angular_core.InputSignal<string>;
1032
+ readonly width: _angular_core.InputSignal<string | null>;
1033
+ readonly preview: _angular_core.InputSignalWithTransform<boolean, unknown>;
1034
+ protected readonly open: _angular_core.WritableSignal<boolean>;
1035
+ protected openPreview(): void;
1036
+ protected close(): void;
1037
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptImage, never>;
1038
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptImage, "kpt-image", never, { "src": { "alias": "src"; "required": true; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "preview": { "alias": "preview"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1039
+ }
1040
+
1041
+ interface KptMeterItem {
1042
+ label: string;
1043
+ value: number;
1044
+ color?: string;
1045
+ }
1046
+ /**
1047
+ * Wielosegmentowy miernik (meter group) z opcjonalną legendą.
1048
+ *
1049
+ * @example
1050
+ * <kpt-meter-group [values]="[{label:'Użyte', value:70}, {label:'Wolne', value:30}]" />
1051
+ */
1052
+ declare class KptMeterGroup {
1053
+ readonly values: _angular_core.InputSignal<KptMeterItem[]>;
1054
+ /** Suma odniesienia; domyślnie suma wartości (100%). */
1055
+ readonly max: _angular_core.InputSignal<number | undefined>;
1056
+ readonly showLegend: _angular_core.InputSignalWithTransform<boolean, unknown>;
1057
+ private readonly palette;
1058
+ protected readonly sum: _angular_core.Signal<number>;
1059
+ protected total(): number;
1060
+ protected percent(item: KptMeterItem): number;
1061
+ protected fallback(i: number): string;
1062
+ protected round(n: number): number;
1063
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptMeterGroup, never>;
1064
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptMeterGroup, "kpt-meter-group", never, { "values": { "alias": "values"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1065
+ }
1066
+
1067
+ interface KptAvatarItem {
1068
+ name?: string;
1069
+ src?: string;
1070
+ icon?: string;
1071
+ }
1072
+ /**
1073
+ * Grupa nakładających się awatarów z licznikiem „+N". Buduje na `kpt-avatar`.
1074
+ *
1075
+ * @example
1076
+ * <kpt-avatar-group [avatars]="team" [max]="4" />
1077
+ */
1078
+ declare class KptAvatarGroup {
1079
+ readonly avatars: _angular_core.InputSignal<KptAvatarItem[]>;
1080
+ readonly max: _angular_core.InputSignal<number>;
1081
+ readonly size: _angular_core.InputSignal<KptAvatarSize>;
1082
+ protected readonly shown: _angular_core.Signal<KptAvatarItem[]>;
1083
+ protected readonly overflow: _angular_core.Signal<number>;
1084
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptAvatarGroup, never>;
1085
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptAvatarGroup, "kpt-avatar-group", never, { "avatars": { "alias": "avatars"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1086
+ }
1087
+
1088
+ /**
1089
+ * Stan pusty (empty state) — ikona, tytuł, opis i opcjonalne akcje (projekcja).
1090
+ *
1091
+ * @example
1092
+ * <kpt-empty icon="search" title="Brak wyników" description="Zmień kryteria wyszukiwania.">
1093
+ * <kpt-button>Wyczyść filtry</kpt-button>
1094
+ * </kpt-empty>
1095
+ */
1096
+ declare class KptEmpty {
1097
+ readonly icon: _angular_core.InputSignal<string | null>;
1098
+ readonly title: _angular_core.InputSignal<string>;
1099
+ readonly description: _angular_core.InputSignal<string>;
1100
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptEmpty, never>;
1101
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptEmpty, "kpt-empty", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1102
+ }
1103
+
1104
+ /**
1105
+ * Pojedyncza zakładka. Umieszczaj w `kpt-tabs`. Treść renderowana leniwie (gdy aktywna).
1106
+ *
1107
+ * @example
1108
+ * <kpt-tab label="Ogólne">…treść…</kpt-tab>
1109
+ */
1110
+ declare class KptTab {
1111
+ readonly label: _angular_core.InputSignal<string>;
1112
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1113
+ readonly content: _angular_core.Signal<TemplateRef<any>>;
1114
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptTab, never>;
1115
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptTab, "kpt-tab", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1116
+ }
1117
+
1118
+ /**
1119
+ * Zakładki (tabs) — przełączanie widoków. Treść zakładek renderowana leniwie.
1120
+ *
1121
+ * @example
1122
+ * <kpt-tabs [(activeIndex)]="tab">
1123
+ * <kpt-tab label="Ogólne">…</kpt-tab>
1124
+ * <kpt-tab label="Zaawansowane">…</kpt-tab>
1125
+ * </kpt-tabs>
1126
+ */
1127
+ declare class KptTabs {
1128
+ protected readonly tabs: _angular_core.Signal<readonly KptTab[]>;
1129
+ readonly activeIndex: _angular_core.ModelSignal<number>;
1130
+ protected readonly activeTab: _angular_core.Signal<KptTab>;
1131
+ protected select(index: number): void;
1132
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptTabs, never>;
1133
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptTabs, "kpt-tabs", never, { "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; }, { "activeIndex": "activeIndexChange"; }, ["tabs"], never, true, never>;
1134
+ }
1135
+
1136
+ /**
1137
+ * Panel akordeonu. Umieszczaj w `kpt-accordion`. Stan `expanded` jest dwukierunkowy.
1138
+ */
1139
+ declare class KptAccordionPanel {
1140
+ readonly title: _angular_core.InputSignal<string>;
1141
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1142
+ readonly expanded: _angular_core.ModelSignal<boolean>;
1143
+ private readonly accordion;
1144
+ protected toggle(): void;
1145
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptAccordionPanel, never>;
1146
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptAccordionPanel, "kpt-accordion-panel", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; }, never, ["*"], true, never>;
1147
+ }
1148
+
1149
+ /**
1150
+ * Akordeon — grupa rozwijanych paneli. `multi` pozwala otworzyć wiele naraz.
1151
+ *
1152
+ * @example
1153
+ * <kpt-accordion>
1154
+ * <kpt-accordion-panel title="Sekcja 1">…</kpt-accordion-panel>
1155
+ * <kpt-accordion-panel title="Sekcja 2">…</kpt-accordion-panel>
1156
+ * </kpt-accordion>
1157
+ */
1158
+ declare class KptAccordion {
1159
+ readonly multi: _angular_core.InputSignalWithTransform<boolean, unknown>;
1160
+ private readonly panels;
1161
+ /** Wywoływane przez panel przy otwarciu — zamyka pozostałe, gdy nie `multi`. */
1162
+ onOpen(opened: KptAccordionPanel): void;
1163
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptAccordion, never>;
1164
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptAccordion, "kpt-accordion", never, { "multi": { "alias": "multi"; "required": false; "isSignal": true; }; }, {}, ["panels"], ["*"], true, never>;
1165
+ }
1166
+
1167
+ interface KptBreadcrumbItem {
1168
+ label: string;
1169
+ url?: string;
1170
+ }
1171
+ /**
1172
+ * Ścieżka nawigacji (breadcrumbs).
1173
+ *
1174
+ * @example
1175
+ * <kpt-breadcrumb [items]="[{label:'Start',url:'/'},{label:'Ustawienia'}]" />
1176
+ */
1177
+ declare class KptBreadcrumb {
1178
+ readonly items: _angular_core.InputSignal<KptBreadcrumbItem[]>;
1179
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptBreadcrumb, never>;
1180
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptBreadcrumb, "kpt-breadcrumb", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1181
+ }
1182
+
1183
+ /**
1184
+ * Krok w `kpt-stepper`. Treść renderowana leniwie (gdy krok aktywny).
1185
+ *
1186
+ * @example
1187
+ * <kpt-step label="Konto">…</kpt-step>
1188
+ */
1189
+ declare class KptStep {
1190
+ readonly label: _angular_core.InputSignal<string>;
1191
+ readonly content: _angular_core.Signal<TemplateRef<any>>;
1192
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptStep, never>;
1193
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptStep, "kpt-step", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1194
+ }
1195
+
1196
+ /**
1197
+ * Kreator kroków (stepper). Nagłówek z numerowanymi krokami + aktywna treść.
1198
+ * Metody `next()`/`prev()`/`goTo()` do sterowania (np. z przycisków).
1199
+ *
1200
+ * @example
1201
+ * <kpt-stepper #s [(activeIndex)]="step">
1202
+ * <kpt-step label="Konto">…<kpt-button (click)="s.next()">Dalej</kpt-button></kpt-step>
1203
+ * <kpt-step label="Profil">…</kpt-step>
1204
+ * </kpt-stepper>
1205
+ */
1206
+ declare class KptStepper {
1207
+ protected readonly steps: _angular_core.Signal<readonly KptStep[]>;
1208
+ readonly activeIndex: _angular_core.ModelSignal<number>;
1209
+ protected readonly activeStep: _angular_core.Signal<KptStep>;
1210
+ goTo(index: number): void;
1211
+ next(): void;
1212
+ prev(): void;
1213
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptStepper, never>;
1214
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptStepper, "kpt-stepper", never, { "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; }, { "activeIndex": "activeIndexChange"; }, ["steps"], never, true, never>;
1215
+ }
1216
+
1217
+ /**
1218
+ * Paginator Koncept UI. Sterowany sygnałami; `pageIndex` i `pageSize` są dwukierunkowe.
1219
+ *
1220
+ * @example
1221
+ * <kpt-paginator [length]="total()" [(pageIndex)]="page" [(pageSize)]="size" />
1222
+ */
1223
+ declare class KptPaginator {
1224
+ /** Łączna liczba elementów. */
1225
+ readonly length: _angular_core.InputSignal<number>;
1226
+ /** Rozmiar strony (dwukierunkowe). */
1227
+ readonly pageSize: _angular_core.ModelSignal<number>;
1228
+ /** Indeks strony od 0 (dwukierunkowe). */
1229
+ readonly pageIndex: _angular_core.ModelSignal<number>;
1230
+ /** Dostępne rozmiary strony. */
1231
+ readonly pageSizeOptions: _angular_core.InputSignal<number[]>;
1232
+ readonly totalPages: _angular_core.Signal<number>;
1233
+ readonly rangeStart: _angular_core.Signal<number>;
1234
+ readonly rangeEnd: _angular_core.Signal<number>;
1235
+ readonly canPrev: _angular_core.Signal<boolean>;
1236
+ readonly canNext: _angular_core.Signal<boolean>;
1237
+ constructor();
1238
+ prev(): void;
1239
+ next(): void;
1240
+ onSizeChange(event: Event): void;
1241
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptPaginator, never>;
1242
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptPaginator, "kpt-paginator", never, { "length": { "alias": "length"; "required": true; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageIndex": { "alias": "pageIndex"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; }, { "pageSize": "pageSizeChange"; "pageIndex": "pageIndexChange"; }, never, never, true, never>;
1243
+ }
1244
+
1245
+ interface KptColumn {
1246
+ /** Nazwa pola w wierszu. */
1247
+ field: string;
1248
+ /** Nagłówek kolumny. */
1249
+ header: string;
1250
+ /** Czy kolumna jest sortowalna. */
1251
+ sortable?: boolean;
1252
+ /** Wyrównanie zawartości. */
1253
+ align?: 'start' | 'center' | 'end';
1254
+ /** Szerokość kolumny (np. '10rem', '20%'). Wymagane dla kolumn zamrożonych. */
1255
+ width?: string;
1256
+ /** Zamrożenie (sticky) — obsługiwane dla wiodących, sąsiadujących kolumn. */
1257
+ frozen?: boolean;
1258
+ }
1259
+ type SortDir = 'asc' | 'desc' | null;
1260
+ /** Stan przekazywany w trybie lazy przy każdej zmianie sortowania/filtra/strony. */
1261
+ interface KptTableLazyState {
1262
+ pageIndex: number;
1263
+ pageSize: number;
1264
+ sortField: string | null;
1265
+ sortDir: SortDir;
1266
+ filter: string;
1267
+ }
1268
+ /**
1269
+ * Flagowa tabela danych Koncept UI (w duchu PrimeNG): kolumny konfiguracją, sortowanie,
1270
+ * filtr globalny, paginacja, zaznaczanie wierszy i własne szablony komórek (`kptCell`).
1271
+ * Sygnałowa, OnPush. Stylowanie tokenami `--kpt-table-*`.
1272
+ *
1273
+ * @example
1274
+ * <kpt-data-table [columns]="cols" [data]="rows" filterable [pageSize]="10"
1275
+ * selectable="multiple" rowKey="id" [(selection)]="picked">
1276
+ * <ng-template kptCell="status" let-value="value">
1277
+ * <span class="badge">{{ value }}</span>
1278
+ * </ng-template>
1279
+ * </kpt-data-table>
1280
+ */
1281
+ declare class KptDataTable<T = Record<string, unknown>> {
1282
+ readonly columns: _angular_core.InputSignal<readonly KptColumn[]>;
1283
+ readonly data: _angular_core.InputSignal<readonly T[]>;
1284
+ readonly filterable: _angular_core.InputSignalWithTransform<boolean, unknown>;
1285
+ /** Rozmiar strony; 0 wyłącza paginację. */
1286
+ readonly pageSize: _angular_core.InputSignal<number>;
1287
+ readonly pageSizeOptions: _angular_core.InputSignal<number[]>;
1288
+ readonly selectable: _angular_core.InputSignal<"none" | "single" | "multiple">;
1289
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
1290
+ readonly emptyMessage: _angular_core.InputSignal<string>;
1291
+ /** Pole identyfikujące wiersz (dla zaznaczania). Bez niego — porównanie po referencji. */
1292
+ readonly rowKey: _angular_core.InputSignal<string | null>;
1293
+ /** Wysokość przewijalnego obszaru (np. '400px'); sticky header pozostaje widoczny. */
1294
+ readonly scrollHeight: _angular_core.InputSignal<string | null>;
1295
+ /** Wirtualizacja wierszy dla dużych zbiorów (renderuje tylko widoczne). Wymaga `scrollHeight`. */
1296
+ readonly virtualScroll: _angular_core.InputSignalWithTransform<boolean, unknown>;
1297
+ /** Wysokość wiersza w px (stała, wymagana przy virtualScroll). */
1298
+ readonly rowHeight: _angular_core.InputSignal<number>;
1299
+ /** Umożliwia przestawianie kolumn metodą przeciągnij-i-upuść. */
1300
+ readonly reorderable: _angular_core.InputSignalWithTransform<boolean, unknown>;
1301
+ /** Pokazuje przycisk eksportu do CSV. */
1302
+ readonly exportable: _angular_core.InputSignalWithTransform<boolean, unknown>;
1303
+ /** Nazwa pliku eksportu CSV. */
1304
+ readonly exportFilename: _angular_core.InputSignal<string>;
1305
+ /** Tryb serwerowy: bez filtrowania/sortowania/paginacji po stronie klienta. */
1306
+ readonly lazy: _angular_core.InputSignalWithTransform<boolean, unknown>;
1307
+ /** Łączna liczba rekordów (wymagane w trybie lazy dla paginacji). */
1308
+ readonly totalRecords: _angular_core.InputSignal<number | null>;
1309
+ readonly selection: _angular_core.ModelSignal<T[]>;
1310
+ readonly rowClick: _angular_core.OutputEmitterRef<T>;
1311
+ /** Emitowane w trybie lazy przy zmianie sortowania/filtra/strony. */
1312
+ readonly lazyLoad: _angular_core.OutputEmitterRef<KptTableLazyState>;
1313
+ /** Kolumny w bieżącej kolejności (po ewentualnym przestawieniu). */
1314
+ protected readonly orderedColumns: _angular_core.WritableSignal<readonly KptColumn[]>;
1315
+ private readonly scrollEl;
1316
+ protected readonly scrollTop: _angular_core.WritableSignal<number>;
1317
+ protected readonly viewportHeight: _angular_core.WritableSignal<number>;
1318
+ private readonly buffer;
1319
+ constructor();
1320
+ protected onScroll(event: Event): void;
1321
+ protected readonly virtualStart: _angular_core.Signal<number>;
1322
+ protected readonly virtualEnd: _angular_core.Signal<number>;
1323
+ protected readonly virtualRows: _angular_core.Signal<T[]>;
1324
+ protected readonly topPad: _angular_core.Signal<number>;
1325
+ protected readonly bottomPad: _angular_core.Signal<number>;
1326
+ protected readonly dragIndex: _angular_core.WritableSignal<number | null>;
1327
+ protected onColDragStart(index: number, event: DragEvent): void;
1328
+ protected onColDragOver(event: DragEvent): void;
1329
+ protected onColDrop(index: number, event: DragEvent): void;
1330
+ protected onColDragEnd(): void;
1331
+ exportCsv(): void;
1332
+ private readonly cellDefs;
1333
+ private readonly cellMap;
1334
+ protected cellTemplate(field: string): TemplateRef<unknown> | null;
1335
+ protected readonly filterText: _angular_core.WritableSignal<string>;
1336
+ protected readonly sortField: _angular_core.WritableSignal<string | null>;
1337
+ protected readonly sortDir: _angular_core.WritableSignal<SortDir>;
1338
+ protected readonly pageIndex: _angular_core.WritableSignal<number>;
1339
+ protected readonly pageSizeState: _angular_core.WritableSignal<number>;
1340
+ private readonly filtered;
1341
+ private readonly sorted;
1342
+ protected readonly filteredCount: _angular_core.Signal<number>;
1343
+ protected readonly paged: _angular_core.Signal<readonly T[]>;
1344
+ protected readonly colspan: _angular_core.Signal<number>;
1345
+ protected readonly displayCount: _angular_core.Signal<number>;
1346
+ private parseWidthPx;
1347
+ /** Mapa pole → przesunięcie left (px) dla wiodących zamrożonych kolumn. */
1348
+ private readonly frozenOffsets;
1349
+ protected readonly hasFrozen: _angular_core.Signal<boolean>;
1350
+ protected frozenLeft(field: string): number | null;
1351
+ protected isFrozen(field: string): boolean;
1352
+ protected toggleSort(col: KptColumn): void;
1353
+ protected sortIconName(col: KptColumn): KptIconName;
1354
+ protected ariaSort(col: KptColumn): 'ascending' | 'descending' | 'none';
1355
+ protected onFilter(event: Event): void;
1356
+ private sameRow;
1357
+ protected isSelected(row: T): boolean;
1358
+ protected toggleRow(row: T): void;
1359
+ protected readonly pageAllSelected: _angular_core.Signal<boolean>;
1360
+ protected toggleAllOnPage(): void;
1361
+ protected onRowClick(row: T): void;
1362
+ protected getValue(row: T, field: string): unknown;
1363
+ protected trackRow: (row: T) => unknown;
1364
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptDataTable<any>, never>;
1365
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptDataTable<any>, "kpt-data-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "filterable": { "alias": "filterable"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "rowKey": { "alias": "rowKey"; "required": false; "isSignal": true; }; "scrollHeight": { "alias": "scrollHeight"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "reorderable": { "alias": "reorderable"; "required": false; "isSignal": true; }; "exportable": { "alias": "exportable"; "required": false; "isSignal": true; }; "exportFilename": { "alias": "exportFilename"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "totalRecords": { "alias": "totalRecords"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; }, { "selection": "selectionChange"; "rowClick": "rowClick"; "lazyLoad": "lazyLoad"; }, ["cellDefs"], never, true, never>;
1366
+ }
1367
+
1368
+ /**
1369
+ * Własny szablon komórki dla kolumny `kpt-data-table`. Kontekst: `$implicit` = wiersz,
1370
+ * `value` = wartość pola.
1371
+ *
1372
+ * @example
1373
+ * <kpt-data-table [columns]="cols" [data]="rows">
1374
+ * <ng-template kptCell="status" let-row let-value="value">
1375
+ * <span class="badge">{{ value }}</span>
1376
+ * </ng-template>
1377
+ * </kpt-data-table>
1378
+ */
1379
+ declare class KptCellDef {
1380
+ /** Nazwa pola kolumny, dla której obowiązuje szablon. */
1381
+ readonly kptCell: _angular_core.InputSignal<string>;
1382
+ readonly template: TemplateRef<any>;
1383
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptCellDef, never>;
1384
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KptCellDef, "ng-template[kptCell]", never, { "kptCell": { "alias": "kptCell"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
1385
+ }
1386
+
1387
+ interface KptTreeNode<T = unknown> {
1388
+ label: string;
1389
+ value?: T;
1390
+ icon?: string;
1391
+ children?: KptTreeNode<T>[];
1392
+ expanded?: boolean;
1393
+ disabled?: boolean;
1394
+ }
1395
+ /**
1396
+ * Drzewo hierarchiczne (rozwijanie, zaznaczanie, ikony). Dane przez `nodes`.
1397
+ *
1398
+ * @example
1399
+ * <kpt-tree [nodes]="tree" selectable [(selected)]="node" (nodeClick)="open($event)" />
1400
+ */
1401
+ declare class KptTree<T = unknown> {
1402
+ readonly nodes: _angular_core.InputSignal<KptTreeNode<T>[]>;
1403
+ readonly selectable: _angular_core.InputSignalWithTransform<boolean, unknown>;
1404
+ readonly selected: _angular_core.ModelSignal<KptTreeNode<T> | null>;
1405
+ readonly nodeClick: _angular_core.OutputEmitterRef<KptTreeNode<T>>;
1406
+ private readonly version;
1407
+ protected has(node: KptTreeNode<T>): boolean;
1408
+ protected isOpen(node: KptTreeNode<T>): boolean;
1409
+ protected isSelected(node: KptTreeNode<T>): boolean;
1410
+ protected toggle(node: KptTreeNode<T>, event: Event): void;
1411
+ protected onRow(node: KptTreeNode<T>): void;
1412
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptTree<any>, never>;
1413
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptTree<any>, "kpt-tree", never, { "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; }, { "selected": "selectedChange"; "nodeClick": "nodeClick"; }, never, never, true, never>;
1414
+ }
1415
+
1416
+ interface KptTimelineItem {
1417
+ title: string;
1418
+ description?: string;
1419
+ time?: string;
1420
+ icon?: string;
1421
+ variant?: 'neutral' | 'primary' | 'success' | 'danger' | 'warning' | 'info';
1422
+ }
1423
+ /**
1424
+ * Oś czasu (timeline) — pionowa lista zdarzeń z markerami.
1425
+ *
1426
+ * @example
1427
+ * <kpt-timeline [items]="[{title:'Utworzono', time:'10:00', variant:'success', icon:'check'}]" />
1428
+ */
1429
+ declare class KptTimeline {
1430
+ readonly items: _angular_core.InputSignal<KptTimelineItem[]>;
1431
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptTimeline, never>;
1432
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptTimeline, "kpt-timeline", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1433
+ }
1434
+
1435
+ /**
1436
+ * Karuzela slajdów. Dane przez `items`, szablon slajdu przez projekcję `<ng-template let-item>`.
1437
+ *
1438
+ * @example
1439
+ * <kpt-carousel [items]="photos">
1440
+ * <ng-template let-photo><img [src]="photo" style="width:100%" /></ng-template>
1441
+ * </kpt-carousel>
1442
+ */
1443
+ declare class KptCarousel<T = unknown> {
1444
+ readonly items: _angular_core.InputSignal<T[]>;
1445
+ readonly activeIndex: _angular_core.ModelSignal<number>;
1446
+ protected readonly slideTpl: _angular_core.Signal<TemplateRef<any>>;
1447
+ next(): void;
1448
+ prev(): void;
1449
+ goTo(index: number): void;
1450
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptCarousel<any>, never>;
1451
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptCarousel<any>, "kpt-carousel", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; }, { "activeIndex": "activeIndexChange"; }, ["slideTpl"], never, true, never>;
1452
+ }
1453
+
1454
+ /**
1455
+ * DataView — prezentacja listy elementów w układzie lista/siatka, z opcjonalną paginacją.
1456
+ * Szablon elementu przez projekcję `<ng-template let-item>`.
1457
+ *
1458
+ * @example
1459
+ * <kpt-data-view [items]="products" [pageSize]="6">
1460
+ * <ng-template let-p><div>{{ p.name }}</div></ng-template>
1461
+ * </kpt-data-view>
1462
+ */
1463
+ declare class KptDataView<T = unknown> {
1464
+ readonly items: _angular_core.InputSignal<T[]>;
1465
+ readonly layout: _angular_core.ModelSignal<"list" | "grid">;
1466
+ readonly pageSize: _angular_core.InputSignal<number>;
1467
+ readonly paginated: _angular_core.InputSignalWithTransform<boolean, unknown>;
1468
+ protected readonly itemTpl: _angular_core.Signal<TemplateRef<any>>;
1469
+ protected readonly pageIndex: _angular_core.ModelSignal<number>;
1470
+ protected readonly showPager: _angular_core.Signal<boolean>;
1471
+ protected readonly pageItems: _angular_core.Signal<T[]>;
1472
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptDataView<any>, never>;
1473
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptDataView<any>, "kpt-data-view", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "paginated": { "alias": "paginated"; "required": false; "isSignal": true; }; "pageIndex": { "alias": "pageIndex"; "required": false; "isSignal": true; }; }, { "layout": "layoutChange"; "pageIndex": "pageIndexChange"; }, ["itemTpl"], never, true, never>;
1474
+ }
1475
+
1476
+ /**
1477
+ * PickList — transfer elementów między dwiema listami (źródło ↔ cel).
1478
+ * Szablon elementu przez projekcję `<ng-template let-item>`.
1479
+ *
1480
+ * @example
1481
+ * <kpt-pick-list [(source)]="available" [(target)]="selected" sourceHeader="Dostępne" targetHeader="Wybrane">
1482
+ * <ng-template let-item>{{ item.name }}</ng-template>
1483
+ * </kpt-pick-list>
1484
+ */
1485
+ declare class KptPickList<T = unknown> {
1486
+ readonly source: _angular_core.ModelSignal<T[]>;
1487
+ readonly target: _angular_core.ModelSignal<T[]>;
1488
+ readonly sourceHeader: _angular_core.InputSignal<string>;
1489
+ readonly targetHeader: _angular_core.InputSignal<string>;
1490
+ protected readonly itemTpl: _angular_core.Signal<TemplateRef<any>>;
1491
+ protected readonly selSource: _angular_core.WritableSignal<Set<T>>;
1492
+ protected readonly selTarget: _angular_core.WritableSignal<Set<T>>;
1493
+ protected toggle(side: 'source' | 'target', item: T): void;
1494
+ protected move(from: 'source' | 'target', all: boolean): void;
1495
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptPickList<any>, never>;
1496
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptPickList<any>, "kpt-pick-list", never, { "source": { "alias": "source"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "sourceHeader": { "alias": "sourceHeader"; "required": false; "isSignal": true; }; "targetHeader": { "alias": "targetHeader"; "required": false; "isSignal": true; }; }, { "source": "sourceChange"; "target": "targetChange"; }, ["itemTpl"], never, true, never>;
1497
+ }
1498
+
1499
+ /**
1500
+ * OrderList — lista z ręcznym porządkowaniem elementów (w górę/dół).
1501
+ * Szablon elementu przez projekcję `<ng-template let-item>`.
1502
+ *
1503
+ * @example
1504
+ * <kpt-order-list [(items)]="tasks" header="Kolejność">
1505
+ * <ng-template let-item>{{ item.name }}</ng-template>
1506
+ * </kpt-order-list>
1507
+ */
1508
+ declare class KptOrderList<T = unknown> {
1509
+ readonly items: _angular_core.ModelSignal<T[]>;
1510
+ readonly header: _angular_core.InputSignal<string>;
1511
+ protected readonly itemTpl: _angular_core.Signal<TemplateRef<any>>;
1512
+ protected readonly selected: _angular_core.WritableSignal<number | null>;
1513
+ protected moveSelected(dir: -1 | 1): void;
1514
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptOrderList<any>, never>;
1515
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptOrderList<any>, "kpt-order-list", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; }, { "items": "itemsChange"; }, ["itemTpl"], never, true, never>;
1516
+ }
1517
+
1518
+ interface KptGalleriaItem {
1519
+ src: string;
1520
+ thumbnail?: string;
1521
+ alt?: string;
1522
+ }
1523
+ /**
1524
+ * Galleria — duży podgląd obrazu z paskiem miniatur i nawigacją.
1525
+ *
1526
+ * @example
1527
+ * <kpt-galleria [items]="photos" [(activeIndex)]="idx" />
1528
+ */
1529
+ declare class KptGalleria {
1530
+ readonly items: _angular_core.InputSignal<KptGalleriaItem[]>;
1531
+ readonly activeIndex: _angular_core.ModelSignal<number>;
1532
+ readonly showThumbnails: _angular_core.InputSignalWithTransform<boolean, unknown>;
1533
+ protected readonly current: _angular_core.Signal<KptGalleriaItem>;
1534
+ protected next(): void;
1535
+ protected prev(): void;
1536
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptGalleria, never>;
1537
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptGalleria, "kpt-galleria", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; "showThumbnails": { "alias": "showThumbnails"; "required": false; "isSignal": true; }; }, { "activeIndex": "activeIndexChange"; }, never, never, true, never>;
1538
+ }
1539
+
1540
+ type KptAlertVariant = 'info' | 'success' | 'warning' | 'danger';
1541
+ /**
1542
+ * Komunikat inline (alert). Warianty info/success/warning/danger, opcjonalny tytuł i zamykanie.
1543
+ *
1544
+ * @example
1545
+ * <kpt-alert variant="success" title="Zapisano">Zmiany zostały zapisane.</kpt-alert>
1546
+ */
1547
+ declare class KptAlert {
1548
+ readonly variant: _angular_core.InputSignal<KptAlertVariant>;
1549
+ readonly title: _angular_core.InputSignal<string>;
1550
+ readonly dismissible: _angular_core.InputSignalWithTransform<boolean, unknown>;
1551
+ readonly closed: _angular_core.OutputEmitterRef<void>;
1552
+ protected readonly visible: _angular_core.WritableSignal<boolean>;
1553
+ protected iconName(): KptIconName;
1554
+ protected dismiss(): void;
1555
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptAlert, never>;
1556
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptAlert, "kpt-alert", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*"], true, never>;
1557
+ }
1558
+
1559
+ /**
1560
+ * Okno modalne na natywnym `<dialog>` (focus trap, ESC, backdrop w standardzie).
1561
+ * Sterowane sygnałem `open` (dwukierunkowe). Stopkę wstaw z atrybutem `kptDialogFooter`.
1562
+ *
1563
+ * @example
1564
+ * <kpt-dialog [(open)]="confirmOpen" header="Usunąć?">
1565
+ * Tej operacji nie można cofnąć.
1566
+ * <div kptDialogFooter>
1567
+ * <kpt-button variant="text" (click)="confirmOpen.set(false)">Anuluj</kpt-button>
1568
+ * <kpt-button variant="danger" (click)="remove()">Usuń</kpt-button>
1569
+ * </div>
1570
+ * </kpt-dialog>
1571
+ */
1572
+ declare class KptDialog {
1573
+ /** Otwarcie okna (dwukierunkowe). */
1574
+ readonly open: _angular_core.ModelSignal<boolean>;
1575
+ readonly header: _angular_core.InputSignal<string>;
1576
+ /** Pozwala zamknąć klawiszem Esc / przyciskiem ×. */
1577
+ readonly dismissible: _angular_core.InputSignalWithTransform<boolean, unknown>;
1578
+ private readonly dialogRef;
1579
+ constructor();
1580
+ protected onCancel(event: Event): void;
1581
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptDialog, never>;
1582
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptDialog, "kpt-dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["*", "[kptDialogFooter]"], true, never>;
1583
+ }
1584
+
1585
+ interface KptToast {
1586
+ id: number;
1587
+ message: string;
1588
+ title?: string;
1589
+ variant: KptAlertVariant;
1590
+ /** Czas życia w ms; 0 = bez auto-zamykania. */
1591
+ duration: number;
1592
+ }
1593
+ type KptToastOptions = Partial<Omit<KptToast, 'id' | 'message'>>;
1594
+ /**
1595
+ * Serwis powiadomień (toastów). Wstrzyknij i wywołuj `show`/`success`/`error`/...;
1596
+ * umieść `<kpt-toast-container />` raz w aplikacji, aby je renderować.
1597
+ */
1598
+ declare class KptToastService {
1599
+ private readonly _toasts;
1600
+ readonly toasts: _angular_core.Signal<KptToast[]>;
1601
+ private seq;
1602
+ show(message: string, options?: KptToastOptions): number;
1603
+ info(message: string, options?: KptToastOptions): number;
1604
+ success(message: string, options?: KptToastOptions): number;
1605
+ warning(message: string, options?: KptToastOptions): number;
1606
+ error(message: string, options?: KptToastOptions): number;
1607
+ dismiss(id: number): void;
1608
+ clear(): void;
1609
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptToastService, never>;
1610
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<KptToastService>;
1611
+ }
1612
+
1613
+ /**
1614
+ * Kontener renderujący toasty z `KptToastService`. Umieść raz w aplikacji
1615
+ * (np. w komponencie głównym): `<kpt-toast-container />`.
1616
+ */
1617
+ declare class KptToastContainer {
1618
+ private readonly service;
1619
+ protected readonly toasts: _angular_core.Signal<_konce_pt_angular.KptToast[]>;
1620
+ protected dismiss(id: number): void;
1621
+ protected icon(variant: KptAlertVariant): KptIconName;
1622
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptToastContainer, never>;
1623
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptToastContainer, "kpt-toast-container", never, {}, {}, never, never, true, never>;
1624
+ }
1625
+
1626
+ type KptTooltipPosition = 'top' | 'bottom' | 'left' | 'right';
1627
+ /**
1628
+ * Dymek podpowiedzi (tooltip) pokazywany na hover/focus hosta. Lekki — element dodawany
1629
+ * do `body` i pozycjonowany względem hosta (działa w trybie zoneless).
1630
+ *
1631
+ * @example
1632
+ * <kpt-button kptTooltip="Zapisz zmiany" kptTooltipPosition="bottom">Zapisz</kpt-button>
1633
+ */
1634
+ declare class KptTooltip implements OnDestroy {
1635
+ readonly text: _angular_core.InputSignal<string>;
1636
+ readonly position: _angular_core.InputSignal<KptTooltipPosition>;
1637
+ private readonly host;
1638
+ private tip?;
1639
+ protected show(): void;
1640
+ protected hide(): void;
1641
+ private reposition;
1642
+ ngOnDestroy(): void;
1643
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptTooltip, never>;
1644
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KptTooltip, "[kptTooltip]", never, { "text": { "alias": "kptTooltip"; "required": true; "isSignal": true; }; "position": { "alias": "kptTooltipPosition"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1645
+ }
1646
+
1647
+ /**
1648
+ * Popover — dowolna treść w dymku na CDK Overlay (bogatszy niż tooltip). Slot triggera:
1649
+ * atrybut `kptPopoverTrigger`; reszta treści trafia do panelu.
1650
+ * Wymaga stylów overlay CDK: `import '@angular/cdk/overlay-prebuilt.css';`
1651
+ *
1652
+ * @example
1653
+ * <kpt-popover>
1654
+ * <kpt-button kptPopoverTrigger variant="outline">Szczegóły</kpt-button>
1655
+ * <div>Bogata treść popovera…</div>
1656
+ * </kpt-popover>
1657
+ */
1658
+ declare class KptPopover {
1659
+ readonly placement: _angular_core.InputSignal<"bottom" | "top">;
1660
+ protected readonly open: _angular_core.WritableSignal<boolean>;
1661
+ protected readonly positions: ConnectedPosition[];
1662
+ protected toggle(): void;
1663
+ protected close(): void;
1664
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptPopover, never>;
1665
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptPopover, "kpt-popover", never, { "placement": { "alias": "placement"; "required": false; "isSignal": true; }; }, {}, never, ["[kptPopoverTrigger]", "*"], true, never>;
1666
+ }
1667
+
1668
+ /**
1669
+ * Pole z podpowiedziami (autocomplete) na CDK Overlay, Signal Forms. Wartość = wpisany tekst.
1670
+ * Wymaga stylów overlay CDK: `import '@angular/cdk/overlay-prebuilt.css';`
1671
+ *
1672
+ * @example
1673
+ * <kpt-autocomplete [formField]="f.city" [options]="cities" placeholder="Miasto…" />
1674
+ */
1675
+ declare class KptAutocomplete implements FormValueControl<string> {
1676
+ readonly value: _angular_core.ModelSignal<string>;
1677
+ readonly options: _angular_core.InputSignal<string[]>;
1678
+ readonly placeholder: _angular_core.InputSignal<string>;
1679
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1680
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
1681
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
1682
+ readonly touch: _angular_core.OutputEmitterRef<void>;
1683
+ protected readonly open: _angular_core.WritableSignal<boolean>;
1684
+ protected readonly activeIndex: _angular_core.WritableSignal<number>;
1685
+ protected readonly positions: ConnectedPosition[];
1686
+ protected readonly filtered: _angular_core.Signal<string[]>;
1687
+ protected onInput(event: Event): void;
1688
+ protected onFocus(): void;
1689
+ protected onBlur(): void;
1690
+ protected pick(opt: string): void;
1691
+ protected onKeydown(event: KeyboardEvent): void;
1692
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptAutocomplete, never>;
1693
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptAutocomplete, "kpt-autocomplete", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
1694
+ }
1695
+
1696
+ type KptDrawerPosition = 'left' | 'right' | 'top' | 'bottom';
1697
+ /**
1698
+ * Panel wysuwany (drawer / off-canvas) sterowany sygnałem `open`. Niezależny od app-shell.
1699
+ *
1700
+ * @example
1701
+ * <kpt-drawer [(open)]="menuOpen" position="right" header="Filtry">
1702
+ * Treść panelu…
1703
+ * </kpt-drawer>
1704
+ */
1705
+ declare class KptDrawer {
1706
+ readonly open: _angular_core.ModelSignal<boolean>;
1707
+ readonly position: _angular_core.InputSignal<KptDrawerPosition>;
1708
+ readonly header: _angular_core.InputSignal<string>;
1709
+ readonly dismissible: _angular_core.InputSignalWithTransform<boolean, unknown>;
1710
+ readonly closeOnBackdrop: _angular_core.InputSignalWithTransform<boolean, unknown>;
1711
+ protected onBackdrop(): void;
1712
+ protected close(): void;
1713
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptDrawer, never>;
1714
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptDrawer, "kpt-drawer", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "closeOnBackdrop": { "alias": "closeOnBackdrop"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["*"], true, never>;
1715
+ }
1716
+
1717
+ /**
1718
+ * Menu kontekstowe (PPM) na obszarze projekcji. Panel pozycjonowany do kursora.
1719
+ *
1720
+ * @example
1721
+ * <kpt-context-menu [items]="items" (select)="onSelect($event)">
1722
+ * <div class="obszar">Kliknij prawym przyciskiem</div>
1723
+ * </kpt-context-menu>
1724
+ */
1725
+ declare class KptContextMenu<T = unknown> {
1726
+ readonly items: _angular_core.InputSignal<KptMenuItem<T>[]>;
1727
+ readonly select: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
1728
+ protected readonly open: _angular_core.WritableSignal<boolean>;
1729
+ protected readonly x: _angular_core.WritableSignal<number>;
1730
+ protected readonly y: _angular_core.WritableSignal<number>;
1731
+ protected onContext(event: MouseEvent): void;
1732
+ protected close(): void;
1733
+ protected pick(item: KptMenuItem<T>): void;
1734
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptContextMenu<any>, never>;
1735
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptContextMenu<any>, "kpt-context-menu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, { "select": "select"; }, never, ["*"], true, never>;
1736
+ }
1737
+
1738
+ /**
1739
+ * Pozioma belka menu z rozwijanymi pod-menu. Pozycje bez `items` działają jak akcje/linki.
1740
+ *
1741
+ * @example
1742
+ * <kpt-menubar [items]="items" (select)="onSelect($event)" />
1743
+ */
1744
+ declare class KptMenubar<T = unknown> {
1745
+ readonly items: _angular_core.InputSignal<KptMenuItem<T>[]>;
1746
+ readonly select: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
1747
+ protected readonly openIndex: _angular_core.WritableSignal<number | null>;
1748
+ protected toggle(i: number, item: KptMenuItem<T>): void;
1749
+ protected pick(item: KptMenuItem<T>): void;
1750
+ protected closeAll(): void;
1751
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptMenubar<any>, never>;
1752
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptMenubar<any>, "kpt-menubar", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, { "select": "select"; }, never, never, true, never>;
1753
+ }
1754
+
1755
+ /**
1756
+ * Mega-menu — pozioma belka z szerokim, wielokolumnowym panelem.
1757
+ * Struktura: pozycja górna → `items` (kolumny) → każda kolumna `items` (odnośniki).
1758
+ *
1759
+ * @example
1760
+ * <kpt-megamenu [items]="items" (select)="onSelect($event)" />
1761
+ */
1762
+ declare class KptMegamenu<T = unknown> {
1763
+ readonly items: _angular_core.InputSignal<KptMenuItem<T>[]>;
1764
+ readonly select: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
1765
+ protected readonly openIndex: _angular_core.WritableSignal<number | null>;
1766
+ protected activeColumns(): KptMenuItem<T>[];
1767
+ protected toggle(i: number): void;
1768
+ protected pick(link: KptMenuItem<T>): void;
1769
+ protected closeAll(): void;
1770
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptMegamenu<any>, never>;
1771
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptMegamenu<any>, "kpt-megamenu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, { "select": "select"; }, never, never, true, never>;
1772
+ }
1773
+
1774
+ interface KptConfirmOptions {
1775
+ message: string;
1776
+ header?: string;
1777
+ acceptLabel?: string;
1778
+ rejectLabel?: string;
1779
+ /** Wariant przycisku akceptacji. */
1780
+ variant?: 'filled' | 'danger';
1781
+ icon?: string;
1782
+ }
1783
+ interface KptConfirmRequest extends KptConfirmOptions {
1784
+ id: number;
1785
+ resolve: (accepted: boolean) => void;
1786
+ }
1787
+ /**
1788
+ * Serwis potwierdzeń. Wstrzyknij i wywołaj `confirm(...)` (zwraca Promise<boolean>);
1789
+ * umieść `<kpt-confirm-container />` raz w aplikacji.
1790
+ *
1791
+ * @example
1792
+ * if (await confirm.confirm({ message: 'Usunąć rekord?', variant: 'danger' })) { ... }
1793
+ */
1794
+ declare class KptConfirmService {
1795
+ private readonly _current;
1796
+ readonly current: _angular_core.Signal<KptConfirmRequest | null>;
1797
+ private seq;
1798
+ confirm(options: KptConfirmOptions): Promise<boolean>;
1799
+ accept(): void;
1800
+ reject(): void;
1801
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptConfirmService, never>;
1802
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<KptConfirmService>;
1803
+ }
1804
+
1805
+ /**
1806
+ * Kontener potwierdzeń — renderuje aktywne żądanie z `KptConfirmService` na `kpt-dialog`.
1807
+ * Umieść raz w aplikacji (np. obok `<kpt-toast-container />`).
1808
+ */
1809
+ declare class KptConfirmContainer {
1810
+ protected readonly service: KptConfirmService;
1811
+ protected readonly req: _angular_core.Signal<_konce_pt_angular.KptConfirmRequest | null>;
1812
+ protected readonly isOpen: _angular_core.Signal<boolean>;
1813
+ protected onOpenChange(open: boolean): void;
1814
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptConfirmContainer, never>;
1815
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptConfirmContainer, "kpt-confirm-container", never, {}, {}, never, never, true, never>;
1816
+ }
1817
+
1818
+ /**
1819
+ * Arkusz wysuwany z dołu ekranu (bottom sheet). Sterowany sygnałem `open`.
1820
+ *
1821
+ * @example
1822
+ * <kpt-bottom-sheet [(open)]="sheetOpen" header="Udostępnij">
1823
+ * Treść arkusza…
1824
+ * </kpt-bottom-sheet>
1825
+ */
1826
+ declare class KptBottomSheet {
1827
+ readonly open: _angular_core.ModelSignal<boolean>;
1828
+ readonly header: _angular_core.InputSignal<string>;
1829
+ readonly closeOnBackdrop: _angular_core.InputSignalWithTransform<boolean, unknown>;
1830
+ protected onBackdrop(): void;
1831
+ protected close(): void;
1832
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptBottomSheet, never>;
1833
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptBottomSheet, "kpt-bottom-sheet", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "closeOnBackdrop": { "alias": "closeOnBackdrop"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["*"], true, never>;
1834
+ }
1835
+
1836
+ type KptSpeedDialDirection = 'up' | 'down' | 'left' | 'right';
1837
+ /**
1838
+ * Speed dial — FAB rozwijający zestaw akcji. Buduje na `kpt-fab`.
1839
+ *
1840
+ * @example
1841
+ * <kpt-speed-dial [items]="actions" direction="up" (select)="onAction($event)" />
1842
+ */
1843
+ declare class KptSpeedDial<T = unknown> {
1844
+ readonly items: _angular_core.InputSignal<KptMenuItem<T>[]>;
1845
+ readonly direction: _angular_core.InputSignal<KptSpeedDialDirection>;
1846
+ readonly icon: _angular_core.InputSignal<string>;
1847
+ readonly ariaLabel: _angular_core.InputSignal<string>;
1848
+ readonly select: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
1849
+ protected readonly open: _angular_core.WritableSignal<boolean>;
1850
+ protected toggle(): void;
1851
+ protected close(): void;
1852
+ protected pick(item: KptMenuItem<T>): void;
1853
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptSpeedDial<any>, never>;
1854
+ 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>;
1855
+ }
1856
+
1857
+ export { KptAccordion, KptAccordionPanel, KptAlert, KptAppShell, KptAutocomplete, KptAvatar, KptAvatarGroup, KptBadge, KptBottomSheet, KptBreadcrumb, KptButton, KptButtonGroup, KptCard, KptCarousel, KptCellDef, KptCheckbox, KptChip, KptChipsInput, 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, KptScrollTop, KptSelect, KptSidenav, KptSkeleton, KptSlider, KptSpeedDial, KptSpinner, KptSplitButton, KptSplitter, KptStep, KptStepper, KptSwitch, KptTab, KptTabs, KptTextarea, KptTimeline, KptToastContainer, KptToastService, KptToolbar, KptTooltip, KptTree };
1858
+ 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, KptSidenavMode, KptSkeletonVariant, KptSpeedDialDirection, KptSplitterOrientation, KptTableLazyState, KptTimelineItem, KptToast, KptToastOptions, KptTooltipPosition, KptTreeNode };