@konce-pt/angular 0.7.10 → 0.7.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { InjectionToken, Signal, EnvironmentProviders, TemplateRef, OnDestroy } from '@angular/core';
3
+ import * as _angular_forms_signals from '@angular/forms/signals';
3
4
  import { FormValueControl, WithOptionalFieldTree, ValidationError, FormCheckboxControl } from '@angular/forms/signals';
4
5
  import { ConnectedPosition } from '@angular/cdk/overlay';
5
6
  import * as _konce_pt_angular from '@konce-pt/angular';
@@ -359,6 +360,8 @@ interface KptMessages {
359
360
  strike: string;
360
361
  ul: string;
361
362
  ol: string;
363
+ indent: string;
364
+ outdent: string;
362
365
  foreColor: string;
363
366
  backColor: string;
364
367
  alignLeft: string;
@@ -410,6 +413,49 @@ interface KptMessages {
410
413
  customColor: string;
411
414
  };
412
415
  };
416
+ /** Ekran uwierzytelniania (kpt-auth). */
417
+ auth: {
418
+ signInTitle: string;
419
+ signInSubtitle: string;
420
+ signUpTitle: string;
421
+ signUpSubtitle: string;
422
+ forgotTitle: string;
423
+ forgotSubtitle: string;
424
+ name: string;
425
+ email: string;
426
+ emailPlaceholder: string;
427
+ password: string;
428
+ /** Interpolacja: {min} — minimalna długość hasła. */
429
+ passwordHint: string;
430
+ confirmPassword: string;
431
+ remember: string;
432
+ terms: string;
433
+ forgotLink: string;
434
+ backToSignIn: string;
435
+ signInSubmit: string;
436
+ signUpSubmit: string;
437
+ resetSubmit: string;
438
+ orContinueWith: string;
439
+ /** Interpolacja: {provider} — nazwa dostawcy (etykieta przycisku). */
440
+ continueWith: string;
441
+ noAccount: string;
442
+ haveAccount: string;
443
+ signInSwitch: string;
444
+ signUpSwitch: string;
445
+ errorRequired: string;
446
+ errorEmail: string;
447
+ /** Interpolacja: {min}. */
448
+ errorMinLength: string;
449
+ errorMismatch: string;
450
+ errorInvalid: string;
451
+ /** Treść panelu promocyjnego — zachęca do trybu przeciwnego niż bieżący. */
452
+ promo: {
453
+ signInTitle: string;
454
+ signInText: string;
455
+ signUpTitle: string;
456
+ signUpText: string;
457
+ };
458
+ };
413
459
  }
414
460
  declare const KPT_MESSAGES_EN: KptMessages;
415
461
  declare const KPT_MESSAGES_PL: KptMessages;
@@ -619,7 +665,7 @@ declare class KptIconRegistry {
619
665
  */
620
666
  declare function renderKptIconSvg(inner: string | undefined, cssClass?: string): string;
621
667
 
622
- type KptIconName = 'menu' | 'x' | 'chevron-up' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'check' | 'search' | 'grip-vertical' | 'info' | 'alert-triangle' | 'circle-check' | 'circle-x' | 'calendar' | 'copy' | 'link' | 'code' | 'bold' | 'italic' | 'underline' | 'strikethrough' | 'list' | 'list-numbers' | 'clear-formatting' | 'star' | 'plus' | 'upload' | 'dots-vertical' | 'photo' | 'trash' | 'eye' | 'eye-off' | 'minus' | 'arrow-up' | 'arrow-down' | 'zoom-in' | 'info-circle' | 'phone' | 'map-pin' | 'world' | 'clock' | 'align-left' | 'align-center' | 'align-right' | 'align-justified' | 'palette' | 'highlight' | 'clipboard' | 'clipboard-text' | 'table' | 'pencil' | 'mail' | 'share' | 'external-link' | 'crosshair' | 'adjustments-horizontal';
668
+ 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' | 'indent-increase' | 'indent-decrease' | 'clear-formatting' | 'star' | 'plus' | 'upload' | 'dots-vertical' | 'photo' | 'trash' | 'eye' | 'eye-off' | 'minus' | 'arrow-up' | 'arrow-down' | 'zoom-in' | 'info-circle' | 'phone' | 'map-pin' | 'world' | 'clock' | 'align-left' | 'align-center' | 'align-right' | 'align-justified' | 'palette' | 'highlight' | 'clipboard' | 'clipboard-text' | 'table' | 'pencil' | 'mail' | 'share' | 'external-link' | 'crosshair' | 'adjustments-horizontal';
623
669
 
624
670
  /** Nazwa breakpointa z tokenów `--kpt-breakpoint-*` (mobile-first). */
625
671
  type KptBreakpoint = 'sm' | 'md' | 'lg' | 'xl' | '2xl';
@@ -884,9 +930,11 @@ declare class KptInput implements FormValueControl<string> {
884
930
  readonly placeholder: _angular_core.InputSignal<string>;
885
931
  readonly id: _angular_core.InputSignal<string>;
886
932
  readonly ariaLabel: _angular_core.InputSignal<string | null>;
933
+ /** Podpowiedź autouzupełniania dla przeglądarki i menedżera haseł (np. 'email', 'current-password'). */
934
+ readonly autocomplete: _angular_core.InputSignal<string | null>;
887
935
  protected onInput(event: Event): void;
888
936
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptInput, never>;
889
- 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>;
937
+ 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; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
890
938
  }
891
939
 
892
940
  /**
@@ -1284,7 +1332,7 @@ declare class KptTextarea implements FormValueControl<string> {
1284
1332
  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>;
1285
1333
  }
1286
1334
 
1287
- type KptRichTool = 'copy' | 'paste' | 'pasteText' | 'heading' | 'bold' | 'italic' | 'underline' | 'strike' | 'ul' | 'ol' | 'foreColor' | 'backColor' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify' | 'link' | 'table' | 'clear' | 'html';
1335
+ type KptRichTool = 'copy' | 'paste' | 'pasteText' | 'heading' | 'bold' | 'italic' | 'underline' | 'strike' | 'ul' | 'ol' | 'indent' | 'outdent' | 'foreColor' | 'backColor' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify' | 'link' | 'table' | 'clear' | 'html';
1288
1336
  /** Pasek: płaska lista narzędzi lub grupy (sekcje rozdzielone separatorem). */
1289
1337
  type KptRichToolbar = KptRichTool[] | KptRichTool[][];
1290
1338
  /**
@@ -1302,6 +1350,8 @@ declare class KptRichText implements FormValueControl<string> {
1302
1350
  readonly value: _angular_core.ModelSignal<string>;
1303
1351
  readonly toolbar: _angular_core.InputSignal<KptRichToolbar>;
1304
1352
  readonly placeholder: _angular_core.InputSignal<string>;
1353
+ /** Maksymalna głębokość zagnieżdżenia list (Tab / „Dodaj wcięcie"). */
1354
+ readonly maxListLevel: _angular_core.InputSignalWithTransform<number, unknown>;
1305
1355
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1306
1356
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
1307
1357
  readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -1341,6 +1391,8 @@ declare class KptRichText implements FormValueControl<string> {
1341
1391
  }[]>;
1342
1392
  protected readonly styleLabel: _angular_core.Signal<string>;
1343
1393
  protected readonly activeCmds: _angular_core.WritableSignal<Set<string>>;
1394
+ protected readonly canIndent: _angular_core.WritableSignal<boolean>;
1395
+ protected readonly canOutdent: _angular_core.WritableSignal<boolean>;
1344
1396
  protected readonly currentBlock: _angular_core.WritableSignal<string>;
1345
1397
  protected readonly positions: ConnectedPosition[];
1346
1398
  /** Sekcje paska (normalizacja płaskiej listy do jednej grupy). */
@@ -1349,7 +1401,23 @@ declare class KptRichText implements FormValueControl<string> {
1349
1401
  protected icon(item: KptRichTool): KptIconName;
1350
1402
  protected aria(item: KptRichTool): string;
1351
1403
  protected isActive(item: KptRichTool): boolean;
1404
+ /** `aria-pressed` tylko dla przełączników — wcięcia są akcjami, nie stanem. */
1405
+ protected pressed(item: KptRichTool): boolean | null;
1406
+ /** Wcięcia są aktywne wyłącznie tam, gdzie faktycznie coś zrobią (kursor w liście). */
1407
+ protected enabled(item: KptRichTool): boolean;
1352
1408
  private inEditor;
1409
+ /**
1410
+ * Jedyne wywołanie `document.execCommand` w komponencie. API jest formalnie deprecated, ale nie
1411
+ * ma zamiennika: to jedyny sposób formatowania, który trafia do natywnego stosu undo przeglądarki
1412
+ * (Ctrl+Z). Własna implementacja komend wymagałaby własnej historii — czyli przepisania edytora.
1413
+ */
1414
+ private legacyExec;
1415
+ /** Stan komendy dla podświetlenia narzędzi; nieobsługiwana komenda → `false`. */
1416
+ private legacyState;
1417
+ /** Komendy aktywne dla bieżącego zaznaczenia (podświetlenie narzędzi). */
1418
+ private activeCommands;
1419
+ /** Tag bloku, w którym stoi kursor (dla selecta stylu); domyślnie paragraf. */
1420
+ private blockTag;
1353
1421
  private refreshState;
1354
1422
  protected onInput(): void;
1355
1423
  protected onSource(event: Event): void;
@@ -1357,6 +1425,33 @@ declare class KptRichText implements FormValueControl<string> {
1357
1425
  private saveSelection;
1358
1426
  private restoreSelection;
1359
1427
  protected exec(item: KptRichTool): void;
1428
+ /** Najbliższy punkt listy zawierający węzeł (tylko wewnątrz edytora). */
1429
+ private closestItem;
1430
+ /** Poziom punktu w obrębie edytora (1 = najwyższy). */
1431
+ private level;
1432
+ /** Najgłębszy poziom w poddrzewie punktu — wcięcie przenosi podpunkty razem z rodzicem. */
1433
+ private deepest;
1434
+ private canIndentItem;
1435
+ private canOutdentItem;
1436
+ /**
1437
+ * Punkty listy objęte zaznaczeniem. Przy zaznaczeniu wielu punktów operujemy na ich wspólnym
1438
+ * poziomie zagnieżdżenia — inaczej podpunkt dostałby wcięcie dwa razy (raz sam, raz z rodzicem).
1439
+ */
1440
+ private listItems;
1441
+ /** Zagnieżdża punkt w podliście poprzedniego punktu (poprawne `li > ul > li`). */
1442
+ private indentItem;
1443
+ /** Wyciąga punkt poziom wyżej; rodzeństwo po nim trafia do jego podlisty (kolejność bez zmian). */
1444
+ private outdentItem;
1445
+ /** Zwraca `true`, gdy DOM faktycznie się zmienił — od tego zależy `preventDefault()` dla Taba. */
1446
+ private shiftItems;
1447
+ /**
1448
+ * Tab: wcięcie w liście, przeskok komórki w tabeli (lista w komórce ma pierwszeństwo; gdy nie da
1449
+ * się już wciąć — przechodzimy do sąsiedniej komórki). Poza nimi i na krawędziach zostawiamy Tab
1450
+ * natywny — inaczej edytor byłby pułapką klawiaturową (WCAG 2.1.2).
1451
+ */
1452
+ protected onKeydown(event: KeyboardEvent): void;
1453
+ /** Przeskok do sąsiedniej komórki z zaznaczeniem jej treści; `false` = koniec tabeli. */
1454
+ private moveCell;
1360
1455
  protected openStyle(): void;
1361
1456
  protected closeStyle(): void;
1362
1457
  protected pickStyle(tag: string): void;
@@ -1364,6 +1459,8 @@ declare class KptRichText implements FormValueControl<string> {
1364
1459
  protected closeColor(): void;
1365
1460
  protected applyColor(color: string): void;
1366
1461
  protected onColorInput(event: Event): void;
1462
+ /** Kopiowanie przez async Clipboard API (jak wklejanie); fallback na starą komendę. */
1463
+ private copySelection;
1367
1464
  private pasteRich;
1368
1465
  private pastePlain;
1369
1466
  /** Natywne wklejanie — oczyść (bez śmieci z Worda/WWW). */
@@ -1401,6 +1498,10 @@ declare class KptRichText implements FormValueControl<string> {
1401
1498
  private onResizeMove;
1402
1499
  private onResizeEnd;
1403
1500
  private buildGrid;
1501
+ /** Jeden przebieg rozszerzania granic o komórki wystające poza region; `true` = coś się zmieniło. */
1502
+ private growBounds;
1503
+ /** Komórki leżące w prostokącie siatki (scalone trafiają raz — to `Set`). */
1504
+ private cellsInRegion;
1404
1505
  private selectRegion;
1405
1506
  private clearSelection;
1406
1507
  protected mergeCells(): void;
@@ -1416,8 +1517,13 @@ declare class KptRichText implements FormValueControl<string> {
1416
1517
  */
1417
1518
  private sanitizeUrl;
1418
1519
  private sanitizeHtml;
1520
+ /** Tag spoza allowlisty rozwijamy do dzieci; atrybuty czyścimy po kolei. */
1521
+ private sanitizeElement;
1522
+ private sanitizeAttribute;
1523
+ /** Deklaracje `style` z allowlisty; `null`, gdy nie zostaje nic. */
1524
+ private sanitizeStyleAttr;
1419
1525
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptRichText, never>;
1420
- 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>;
1526
+ 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; }; "maxListLevel": { "alias": "maxListLevel"; "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>;
1421
1527
  }
1422
1528
 
1423
1529
  /** Wartość suwaka: pojedyncza liczba lub para `[min, max]` w trybie `range`. */
@@ -1678,6 +1784,13 @@ interface Strength {
1678
1784
  declare class KptPassword implements FormValueControl<string> {
1679
1785
  readonly value: _angular_core.ModelSignal<string>;
1680
1786
  readonly placeholder: _angular_core.InputSignal<string>;
1787
+ /** Id natywnego pola — pozwala związać etykietę przez `kpt-form-field [controlId]`. */
1788
+ readonly id: _angular_core.InputSignal<string>;
1789
+ /**
1790
+ * Podpowiedź autouzupełniania. Rejestracja i reset hasła wymagają `new-password` — inaczej
1791
+ * menedżer haseł podstawia stare hasło zamiast zaproponować nowe.
1792
+ */
1793
+ readonly autocomplete: _angular_core.InputSignal<string | null>;
1681
1794
  readonly feedback: _angular_core.InputSignalWithTransform<boolean, unknown>;
1682
1795
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1683
1796
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -1689,7 +1802,7 @@ declare class KptPassword implements FormValueControl<string> {
1689
1802
  protected readonly visible: _angular_core.WritableSignal<boolean>;
1690
1803
  protected readonly strength: _angular_core.Signal<Strength>;
1691
1804
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptPassword, never>;
1692
- 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>;
1805
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptPassword, "kpt-password", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "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>;
1693
1806
  }
1694
1807
 
1695
1808
  /**
@@ -2036,6 +2149,202 @@ declare class KptShellNavToggle {
2036
2149
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KptShellNavToggle, "[kptShellNavToggle]", never, { "label": { "alias": "kptShellNavToggle"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2037
2150
  }
2038
2151
 
2152
+ /** Tryb ekranu — logowanie, rejestracja, odzyskiwanie hasła. */
2153
+ type KptAuthMode = 'signIn' | 'signUp' | 'forgot';
2154
+ /**
2155
+ * Układ ekranu:
2156
+ * - `slider` — panel promo przesuwa się nad formularzami przy zmianie trybu,
2157
+ * - `split` — panel promo stoi w miejscu, zmienia się tylko formularz.
2158
+ */
2159
+ type KptAuthLayout = 'slider' | 'split';
2160
+ /** Układ przycisków dostawców: pełnowymiarowa lista albo siatka ikon z podpisami. */
2161
+ type KptAuthProviderLayout = 'list' | 'grid';
2162
+ /** Dostawca logowania zewnętrznego (OAuth/SSO/dowolny własny). */
2163
+ interface KptAuthProvider {
2164
+ /** Identyfikator zwracany w `providerSelect` i wiążący własny szablon `kptAuthProvider`. */
2165
+ id: string;
2166
+ /** Widoczna etykieta — jednocześnie nazwa dostępna przycisku. */
2167
+ label: string;
2168
+ /** Nazwa ikony z rejestru `kpt-icon` (np. `brand-google` z pełnego zestawu Tabler). */
2169
+ icon?: string;
2170
+ /** Alternatywa dla `icon`: adres obrazka (wierne, wielokolorowe logo marki). */
2171
+ iconUrl?: string;
2172
+ /** Drugi wiersz opisu — tylko w układzie `list`. */
2173
+ description?: string;
2174
+ }
2175
+ /** Wartość formularza logowania. */
2176
+ interface KptAuthSignInValue {
2177
+ email: string;
2178
+ password: string;
2179
+ remember: boolean;
2180
+ }
2181
+ /** Wartość formularza rejestracji. */
2182
+ interface KptAuthSignUpValue {
2183
+ name: string;
2184
+ email: string;
2185
+ password: string;
2186
+ terms: boolean;
2187
+ }
2188
+ /** Wartość formularza odzyskiwania hasła. */
2189
+ interface KptAuthResetValue {
2190
+ email: string;
2191
+ }
2192
+
2193
+ /**
2194
+ * Ekran uwierzytelniania: logowanie, rejestracja i odzyskiwanie hasła w jednym komponencie,
2195
+ * z panelem promocyjnym i listą dostawców zewnętrznych (OAuth/SSO).
2196
+ *
2197
+ * Komponent jest prezentacyjny — nie woła API ani nie nawiguje. Wywołania backendu podpina
2198
+ * aplikacja pod `signIn` / `signUp` / `resetPassword` / `providerSelect`, a stan operacji
2199
+ * podaje z powrotem przez `busy`, `error` i `notice`.
2200
+ *
2201
+ * Układ `slider` przesuwa panel promocyjny nad formularzami przy zmianie trybu; `split`
2202
+ * zostawia go nieruchomo i przełącza sam formularz. Poniżej breakpointu `md` oba układy
2203
+ * schodzą do jednej kolumny.
2204
+ *
2205
+ * @example
2206
+ * <kpt-auth
2207
+ * [providers]="[{ id: 'google', label: 'Google', icon: 'brand-google' }]"
2208
+ * [busy]="loading()"
2209
+ * [error]="serverError()"
2210
+ * (signIn)="login($event)"
2211
+ * (providerSelect)="oauth($event.id)"
2212
+ * >
2213
+ * <img kptAuthBrand src="/logo.svg" alt="Konce" />
2214
+ * <div kptAuthPromo><h3>Witaj ponownie</h3><p>Zaloguj się, by wrócić do pracy.</p></div>
2215
+ * </kpt-auth>
2216
+ */
2217
+ declare class KptAuth {
2218
+ /** Aktywny tryb ekranu (dwukierunkowy — aplikacja może go wymusić po nawigacji). */
2219
+ readonly mode: _angular_core.ModelSignal<KptAuthMode>;
2220
+ /** Układ: przesuwany panel promocyjny albo nieruchomy split-screen. */
2221
+ readonly layout: _angular_core.InputSignal<KptAuthLayout>;
2222
+ /** Dostawcy logowania zewnętrznego. */
2223
+ readonly providers: _angular_core.InputSignal<KptAuthProvider[]>;
2224
+ /** Układ przycisków dostawców: lista pełnej szerokości albo siatka ikon. */
2225
+ readonly providerLayout: _angular_core.InputSignal<KptAuthProviderLayout>;
2226
+ /** Pole „imię i nazwisko" w rejestracji. */
2227
+ readonly showName: _angular_core.InputSignalWithTransform<boolean, unknown>;
2228
+ /** Wymagana zgoda na regulamin w rejestracji. */
2229
+ readonly requireTerms: _angular_core.InputSignalWithTransform<boolean, unknown>;
2230
+ /** Przełącznik „zapamiętaj mnie" przy logowaniu. */
2231
+ readonly showRemember: _angular_core.InputSignalWithTransform<boolean, unknown>;
2232
+ /** Operacja w toku — przyciski w stanie ładowania, pola zablokowane. */
2233
+ readonly busy: _angular_core.InputSignalWithTransform<boolean, unknown>;
2234
+ /** Komunikat błędu z serwera (np. „nieprawidłowe dane logowania"). */
2235
+ readonly error: _angular_core.InputSignal<string | null>;
2236
+ /** Komunikat powodzenia (np. „wysłaliśmy link na podany adres"). */
2237
+ readonly notice: _angular_core.InputSignal<string | null>;
2238
+ /**
2239
+ * Tytuł panelu promocyjnego. `null` (domyślnie) = tekst z i18n zależny od trybu,
2240
+ * `''` = brak tytułu (miejsce dla slotu `[kptAuthPromo]`).
2241
+ */
2242
+ readonly promoTitle: _angular_core.InputSignal<string | null>;
2243
+ /** Tekst panelu promocyjnego; zasady jak w `promoTitle`. */
2244
+ readonly promoText: _angular_core.InputSignal<string | null>;
2245
+ /** Animacja przejścia między trybami. */
2246
+ readonly animated: _angular_core.InputSignalWithTransform<boolean, unknown>;
2247
+ /** Czas animacji w ms. */
2248
+ readonly animationDuration: _angular_core.InputSignalWithTransform<number, unknown>;
2249
+ readonly signIn: _angular_core.OutputEmitterRef<KptAuthSignInValue>;
2250
+ readonly signUp: _angular_core.OutputEmitterRef<KptAuthSignUpValue>;
2251
+ readonly resetPassword: _angular_core.OutputEmitterRef<KptAuthResetValue>;
2252
+ readonly providerSelect: _angular_core.OutputEmitterRef<KptAuthProvider>;
2253
+ protected readonly i18n: KptI18n;
2254
+ private readonly injector;
2255
+ private readonly uid;
2256
+ /** Nagłówek panelu dostaje fokus po zmianie trybu — inaczej zmiana nie zostaje ogłoszona. */
2257
+ private readonly headings;
2258
+ private readonly providerDefs;
2259
+ protected readonly ids: {
2260
+ signIn: string;
2261
+ signUp: string;
2262
+ forgot: string;
2263
+ email: string;
2264
+ password: string;
2265
+ name: string;
2266
+ regEmail: string;
2267
+ regPassword: string;
2268
+ regConfirm: string;
2269
+ resetEmail: string;
2270
+ };
2271
+ /** W trybie `signUp` formularz i panel promocyjny zamieniają się stronami. */
2272
+ protected readonly signUpActive: _angular_core.Signal<boolean>;
2273
+ protected readonly headingId: _angular_core.Signal<string>;
2274
+ protected readonly title: _angular_core.Signal<string>;
2275
+ protected readonly subtitle: _angular_core.Signal<string>;
2276
+ /** Panel promocyjny zachęca do trybu przeciwnego do bieżącego. */
2277
+ protected readonly promoMode: _angular_core.Signal<KptAuthMode>;
2278
+ protected readonly promoHeading: _angular_core.Signal<string>;
2279
+ protected readonly promoBody: _angular_core.Signal<string>;
2280
+ private readonly signInModel;
2281
+ protected readonly signInForm: _angular_forms_signals.FieldTree<KptAuthSignInValue, string | number, "writable">;
2282
+ private readonly signUpModel;
2283
+ protected readonly signUpForm: _angular_forms_signals.FieldTree<{
2284
+ name: string;
2285
+ email: string;
2286
+ password: string;
2287
+ confirm: string;
2288
+ terms: boolean;
2289
+ }, string | number, "writable">;
2290
+ private readonly resetModel;
2291
+ protected readonly resetForm: _angular_forms_signals.FieldTree<KptAuthResetValue, string | number, "writable">;
2292
+ protected readonly signInInvalid: _angular_core.Signal<boolean>;
2293
+ protected readonly signUpInvalid: _angular_core.Signal<boolean>;
2294
+ protected readonly resetInvalid: _angular_core.Signal<boolean>;
2295
+ protected readonly signInEmailError: _angular_core.Signal<string | null>;
2296
+ protected readonly signInPasswordError: _angular_core.Signal<string | null>;
2297
+ protected readonly signUpNameError: _angular_core.Signal<string | null>;
2298
+ protected readonly signUpEmailError: _angular_core.Signal<string | null>;
2299
+ protected readonly signUpPasswordError: _angular_core.Signal<string | null>;
2300
+ protected readonly signUpConfirmError: _angular_core.Signal<string | null>;
2301
+ protected readonly signUpTermsError: _angular_core.Signal<string | null>;
2302
+ protected readonly resetEmailError: _angular_core.Signal<string | null>;
2303
+ /**
2304
+ * Komunikat błędu składamy z `kind` w chwili renderowania, a nie w walidatorze — dzięki temu
2305
+ * zmiana języka w runtime przerysowuje komunikaty (walidatory tworzą się raz, przy starcie).
2306
+ * Bramka „nie strasz czerwienią świeżego pola" żyje tu, w prezentacji.
2307
+ */
2308
+ private errorText;
2309
+ protected setMode(mode: KptAuthMode): void;
2310
+ protected onSignIn(): void;
2311
+ protected onSignUp(): void;
2312
+ protected onReset(): void;
2313
+ protected templateFor(provider: KptAuthProvider): _angular_core.TemplateRef<any> | null;
2314
+ protected selectProvider(provider: KptAuthProvider): void;
2315
+ /** Kontekst szablonu własnego dostawcy: `$implicit` = dostawca, `select` = zgłoszenie wyboru. */
2316
+ protected providerContext(provider: KptAuthProvider): {
2317
+ $implicit: KptAuthProvider;
2318
+ select: () => void;
2319
+ };
2320
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptAuth, never>;
2321
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptAuth, "kpt-auth", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "providers": { "alias": "providers"; "required": false; "isSignal": true; }; "providerLayout": { "alias": "providerLayout"; "required": false; "isSignal": true; }; "showName": { "alias": "showName"; "required": false; "isSignal": true; }; "requireTerms": { "alias": "requireTerms"; "required": false; "isSignal": true; }; "showRemember": { "alias": "showRemember"; "required": false; "isSignal": true; }; "busy": { "alias": "busy"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "notice": { "alias": "notice"; "required": false; "isSignal": true; }; "promoTitle": { "alias": "promoTitle"; "required": false; "isSignal": true; }; "promoText": { "alias": "promoText"; "required": false; "isSignal": true; }; "animated": { "alias": "animated"; "required": false; "isSignal": true; }; "animationDuration": { "alias": "animationDuration"; "required": false; "isSignal": true; }; }, { "mode": "modeChange"; "signIn": "signIn"; "signUp": "signUp"; "resetPassword": "resetPassword"; "providerSelect": "providerSelect"; }, ["providerDefs"], ["[kptAuthBrand]", "[kptAuthFields]", "[kptAuthFields]", "[kptAuthSso]", "[kptAuthFooter]", "[kptAuthPromo]"], true, never>;
2322
+ }
2323
+
2324
+ /**
2325
+ * Własny szablon przycisku jednego dostawcy logowania w `kpt-auth`. Kontekst: `$implicit` =
2326
+ * obiekt dostawcy, `select` = funkcja zgłaszająca wybór (emituje `providerSelect`).
2327
+ *
2328
+ * Przydatne, gdy logo marki nie przechodzi przez rejestr ikon (gradienty i `fill-rule` są
2329
+ * wycinane przy sanityzacji) albo gdy przycisk ma mieć inny układ niż wbudowany.
2330
+ *
2331
+ * @example
2332
+ * <kpt-auth [providers]="providers">
2333
+ * <ng-template kptAuthProvider="google" let-p let-select="select">
2334
+ * <button type="button" class="my-google" (click)="select()">
2335
+ * <img src="/google.svg" alt="" /> {{ p.label }}
2336
+ * </button>
2337
+ * </ng-template>
2338
+ * </kpt-auth>
2339
+ */
2340
+ declare class KptAuthProviderDef {
2341
+ /** Identyfikator dostawcy, dla którego obowiązuje szablon. */
2342
+ readonly kptAuthProvider: _angular_core.InputSignal<string>;
2343
+ readonly template: TemplateRef<any>;
2344
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptAuthProviderDef, never>;
2345
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KptAuthProviderDef, "ng-template[kptAuthProvider]", never, { "kptAuthProvider": { "alias": "kptAuthProvider"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
2346
+ }
2347
+
2039
2348
  /**
2040
2349
  * Panel z nagłówkiem i opcjonalnym zwijaniem. Akcje nagłówka: atrybut `kptPanelActions`.
2041
2350
  *
@@ -3248,6 +3557,6 @@ declare class KptSpeedDial<T = unknown> {
3248
3557
  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; }; }, { "selected": "selected"; }, never, never, true, never>;
3249
3558
  }
3250
3559
 
3251
- export { KPT_BREAKPOINTS, KPT_FORM_FIELD_CONTROL, KPT_I18N_CONFIG, KPT_MESSAGES_EN, KPT_MESSAGES_PL, KptAccordion, KptAccordionPanel, KptAlert, KptAppShell, KptAutocomplete, KptAvatar, KptAvatarGroup, KptBadge, KptBottomSheet, KptBreadcrumb, KptBreakpointObserver, KptButton, KptButtonGroup, KptCard, KptCarousel, KptCellDef, KptCellEditDef, KptCheckbox, KptChip, KptChipsInput, KptClock, KptColorPicker, KptConfirmContainer, KptConfirmService, KptContextMenu, KptDataTable, KptDataView, KptDateRange, KptDatepicker, KptDialog, KptDivider, KptDrawer, KptEmpty, KptFab, KptFieldset, KptFileUpload, KptFormField, KptGalleria, KptI18n, KptIcon, KptIconButton, KptIconRegistry, KptImage, KptInput, KptInputMask, KptInputNumber, KptInputOtp, KptKnob, KptListbox, KptMegamenu, KptMenu, KptMenubar, KptMeterGroup, KptOrderList, KptPaginator, KptPanel, KptPassword, KptPickList, KptPopover, KptProgress, KptRadioGroup, KptRating, KptRichText, KptRowDetailDef, KptScrollTop, KptSelect, KptShellNavToggle, KptSidenav, KptSkeleton, KptSlider, KptSpeedDial, KptSpinner, KptSplitButton, KptSplitter, KptStep, KptStepper, KptSwitch, KptSwitchGroup, KptTab, KptTabs, KptTextarea, KptTimeline, KptToastContainer, KptToastService, KptToolbar, KptTooltip, KptTree, provideKptI18n, renderKptIconSvg };
3252
- export type { DeepPartial, KptAlertVariant, KptAvatarItem, KptAvatarShape, KptAvatarSize, KptBadgeSize, KptBadgeVariant, KptBreadcrumbItem, KptBreakpoint, KptButtonSize, KptButtonVariant, KptCardVariant, KptCellEditEvent, KptChipVariant, KptColumn, KptColumnEdit, KptColumnEditType, KptColumnFilter, KptColumnFilterType, KptColumnSummary, KptConfirmOptions, KptConfirmRequest, KptDateRangeValue, KptDatepickerMode, KptDatepickerView, KptDividerOrientation, KptDrawerPosition, KptFormFieldControl, KptGalleriaItem, KptI18nConfig, KptIconName, KptInputType, KptLocale, KptMenuItem, KptMessages, KptMeterItem, KptOption, KptProgressVariant, KptRichTool, KptRichToolbar, KptSidenavMode, KptSkeletonVariant, KptSliderValue, KptSpeedDialDirection, KptSplitterOrientation, KptSummaryFn, KptTableLazyState, KptTimelineItem, KptToast, KptToastOptions, KptTooltipPosition, KptTreeNode };
3560
+ export { KPT_BREAKPOINTS, KPT_FORM_FIELD_CONTROL, KPT_I18N_CONFIG, KPT_MESSAGES_EN, KPT_MESSAGES_PL, KptAccordion, KptAccordionPanel, KptAlert, KptAppShell, KptAuth, KptAuthProviderDef, KptAutocomplete, KptAvatar, KptAvatarGroup, KptBadge, KptBottomSheet, KptBreadcrumb, KptBreakpointObserver, KptButton, KptButtonGroup, KptCard, KptCarousel, KptCellDef, KptCellEditDef, KptCheckbox, KptChip, KptChipsInput, KptClock, KptColorPicker, KptConfirmContainer, KptConfirmService, KptContextMenu, KptDataTable, KptDataView, KptDateRange, KptDatepicker, KptDialog, KptDivider, KptDrawer, KptEmpty, KptFab, KptFieldset, KptFileUpload, KptFormField, KptGalleria, KptI18n, KptIcon, KptIconButton, KptIconRegistry, KptImage, KptInput, KptInputMask, KptInputNumber, KptInputOtp, KptKnob, KptListbox, KptMegamenu, KptMenu, KptMenubar, KptMeterGroup, KptOrderList, KptPaginator, KptPanel, KptPassword, KptPickList, KptPopover, KptProgress, KptRadioGroup, KptRating, KptRichText, KptRowDetailDef, KptScrollTop, KptSelect, KptShellNavToggle, KptSidenav, KptSkeleton, KptSlider, KptSpeedDial, KptSpinner, KptSplitButton, KptSplitter, KptStep, KptStepper, KptSwitch, KptSwitchGroup, KptTab, KptTabs, KptTextarea, KptTimeline, KptToastContainer, KptToastService, KptToolbar, KptTooltip, KptTree, provideKptI18n, renderKptIconSvg };
3561
+ export type { DeepPartial, KptAlertVariant, KptAuthLayout, KptAuthMode, KptAuthProvider, KptAuthProviderLayout, KptAuthResetValue, KptAuthSignInValue, KptAuthSignUpValue, KptAvatarItem, KptAvatarShape, KptAvatarSize, KptBadgeSize, KptBadgeVariant, KptBreadcrumbItem, KptBreakpoint, KptButtonSize, KptButtonVariant, KptCardVariant, KptCellEditEvent, KptChipVariant, KptColumn, KptColumnEdit, KptColumnEditType, KptColumnFilter, KptColumnFilterType, KptColumnSummary, KptConfirmOptions, KptConfirmRequest, KptDateRangeValue, KptDatepickerMode, KptDatepickerView, KptDividerOrientation, KptDrawerPosition, KptFormFieldControl, KptGalleriaItem, KptI18nConfig, KptIconName, KptInputType, KptLocale, KptMenuItem, KptMessages, KptMeterItem, KptOption, KptProgressVariant, KptRichTool, KptRichToolbar, KptSidenavMode, KptSkeletonVariant, KptSliderValue, KptSpeedDialDirection, KptSplitterOrientation, KptSummaryFn, KptTableLazyState, KptTimelineItem, KptToast, KptToastOptions, KptTooltipPosition, KptTreeNode };
3253
3562
  //# sourceMappingURL=konce-pt-angular.d.ts.map