@konce-pt/angular 0.7.9 → 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;
@@ -526,20 +572,20 @@ interface KptMenuItem<T = unknown> {
526
572
  * Wymaga stylów overlay CDK: `import '@angular/cdk/overlay-prebuilt.css';`
527
573
  *
528
574
  * @example
529
- * <kpt-menu [items]="items" (select)="onSelect($event)">
575
+ * <kpt-menu [items]="items" (selected)="onSelect($event)">
530
576
  * <kpt-button variant="outline">Opcje</kpt-button>
531
577
  * </kpt-menu>
532
578
  */
533
579
  declare class KptMenu<T = unknown> {
534
580
  readonly items: _angular_core.InputSignal<KptMenuItem<T>[]>;
535
- readonly select: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
581
+ readonly selected: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
536
582
  protected readonly open: _angular_core.WritableSignal<boolean>;
537
583
  protected readonly positions: ConnectedPosition[];
538
584
  protected toggle(): void;
539
585
  protected close(): void;
540
586
  protected pick(item: KptMenuItem<T>): void;
541
587
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptMenu<any>, never>;
542
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptMenu<any>, "kpt-menu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, { "select": "select"; }, never, ["*"], true, never>;
588
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptMenu<any>, "kpt-menu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, { "selected": "selected"; }, never, ["*"], true, never>;
543
589
  }
544
590
 
545
591
  /**
@@ -547,20 +593,20 @@ declare class KptMenu<T = unknown> {
547
593
  * Wymaga `import '@angular/cdk/overlay-prebuilt.css';`
548
594
  *
549
595
  * @example
550
- * <kpt-split-button [items]="items" (primaryClick)="save()" (select)="onItem($event)">Zapisz</kpt-split-button>
596
+ * <kpt-split-button [items]="items" (primaryClick)="save()" (selected)="onItem($event)">Zapisz</kpt-split-button>
551
597
  */
552
598
  declare class KptSplitButton<T = unknown> {
553
599
  readonly variant: _angular_core.InputSignal<KptButtonVariant>;
554
600
  readonly items: _angular_core.InputSignal<KptMenuItem<T>[]>;
555
601
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
556
602
  readonly primaryClick: _angular_core.OutputEmitterRef<void>;
557
- readonly select: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
603
+ readonly selected: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
558
604
  protected readonly i18n: KptI18n;
559
605
  protected readonly open: _angular_core.WritableSignal<boolean>;
560
606
  protected readonly positions: ConnectedPosition[];
561
607
  protected pick(item: KptMenuItem<T>): void;
562
608
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptSplitButton<any>, never>;
563
- 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>;
609
+ 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"; "selected": "selected"; }, never, ["*"], true, never>;
564
610
  }
565
611
 
566
612
  /**
@@ -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
  /**
@@ -1155,7 +1203,17 @@ declare class KptDatepicker implements FormValueControl<string> {
1155
1203
  private formatTime;
1156
1204
  /** Etykieta czasu na pasku trybu datetime (uwzględnia AM/PM). */
1157
1205
  protected readonly timeBarLabel: _angular_core.Signal<string>;
1206
+ /**
1207
+ * Tekst w triggerze. Każdy tryb ma własny format wartości, więc `display` tylko rozdziela
1208
+ * robotę — formatowanie siedzi w metodach `display*` niżej. Wartość niepasująca do formatu
1209
+ * trybu daje pusty string (trigger nie pokazuje śmieci, np. po ręcznej podmianie modelu).
1210
+ */
1158
1211
  protected readonly display: _angular_core.Signal<string>;
1212
+ private displayMonthYear;
1213
+ private displayMonth;
1214
+ private displayTime;
1215
+ private displayDateTime;
1216
+ private displayDate;
1159
1217
  private readonly selectedDateIso;
1160
1218
  protected readonly weeks: _angular_core.Signal<DayCell$1[][]>;
1161
1219
  /** Rok/miesiąc bieżącej wartości — zaznaczenie w siatkach wyższych poziomów. */
@@ -1226,7 +1284,11 @@ declare class KptClock {
1226
1284
  protected readonly hourLabel: _angular_core.Signal<string>;
1227
1285
  protected readonly minuteLabel: _angular_core.Signal<string>;
1228
1286
  private from12h;
1287
+ /** W 12h jeden pierścień; w 24h zewnętrzny (12, 1–11) i wewnętrzny (00, 13–23). */
1229
1288
  protected readonly hourMarks: _angular_core.Signal<ClockMark[]>;
1289
+ private marks12h;
1290
+ private marks24hOuter;
1291
+ private marks24hInner;
1230
1292
  protected readonly minuteMarks: _angular_core.Signal<ClockMark[]>;
1231
1293
  protected readonly handAngle: _angular_core.Signal<number>;
1232
1294
  protected readonly handInner: _angular_core.Signal<boolean>;
@@ -1235,6 +1297,10 @@ declare class KptClock {
1235
1297
  protected pickHour(mark: ClockMark): void;
1236
1298
  protected pickMinute(mark: ClockMark): void;
1237
1299
  protected onDialPointer(event: PointerEvent, face: HTMLElement): void;
1300
+ /** Godzina z kąta; w 24h o pierścieniu (a więc o 12–23 vs 0–11) decyduje promień kliknięcia. */
1301
+ private setHourFromAngle;
1302
+ /** Minuta z kąta, dociągnięta do `minuteStep`. */
1303
+ private setMinuteFromAngle;
1238
1304
  protected onDialUp(): void;
1239
1305
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptClock, never>;
1240
1306
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptClock, "kpt-clock", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "hourFormat": { "alias": "hourFormat"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
@@ -1266,7 +1332,7 @@ declare class KptTextarea implements FormValueControl<string> {
1266
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>;
1267
1333
  }
1268
1334
 
1269
- 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';
1270
1336
  /** Pasek: płaska lista narzędzi lub grupy (sekcje rozdzielone separatorem). */
1271
1337
  type KptRichToolbar = KptRichTool[] | KptRichTool[][];
1272
1338
  /**
@@ -1284,6 +1350,8 @@ declare class KptRichText implements FormValueControl<string> {
1284
1350
  readonly value: _angular_core.ModelSignal<string>;
1285
1351
  readonly toolbar: _angular_core.InputSignal<KptRichToolbar>;
1286
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>;
1287
1355
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1288
1356
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
1289
1357
  readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -1323,6 +1391,8 @@ declare class KptRichText implements FormValueControl<string> {
1323
1391
  }[]>;
1324
1392
  protected readonly styleLabel: _angular_core.Signal<string>;
1325
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>;
1326
1396
  protected readonly currentBlock: _angular_core.WritableSignal<string>;
1327
1397
  protected readonly positions: ConnectedPosition[];
1328
1398
  /** Sekcje paska (normalizacja płaskiej listy do jednej grupy). */
@@ -1331,7 +1401,23 @@ declare class KptRichText implements FormValueControl<string> {
1331
1401
  protected icon(item: KptRichTool): KptIconName;
1332
1402
  protected aria(item: KptRichTool): string;
1333
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;
1334
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;
1335
1421
  private refreshState;
1336
1422
  protected onInput(): void;
1337
1423
  protected onSource(event: Event): void;
@@ -1339,6 +1425,33 @@ declare class KptRichText implements FormValueControl<string> {
1339
1425
  private saveSelection;
1340
1426
  private restoreSelection;
1341
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;
1342
1455
  protected openStyle(): void;
1343
1456
  protected closeStyle(): void;
1344
1457
  protected pickStyle(tag: string): void;
@@ -1346,6 +1459,8 @@ declare class KptRichText implements FormValueControl<string> {
1346
1459
  protected closeColor(): void;
1347
1460
  protected applyColor(color: string): void;
1348
1461
  protected onColorInput(event: Event): void;
1462
+ /** Kopiowanie przez async Clipboard API (jak wklejanie); fallback na starą komendę. */
1463
+ private copySelection;
1349
1464
  private pasteRich;
1350
1465
  private pastePlain;
1351
1466
  /** Natywne wklejanie — oczyść (bez śmieci z Worda/WWW). */
@@ -1383,6 +1498,10 @@ declare class KptRichText implements FormValueControl<string> {
1383
1498
  private onResizeMove;
1384
1499
  private onResizeEnd;
1385
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;
1386
1505
  private selectRegion;
1387
1506
  private clearSelection;
1388
1507
  protected mergeCells(): void;
@@ -1398,8 +1517,13 @@ declare class KptRichText implements FormValueControl<string> {
1398
1517
  */
1399
1518
  private sanitizeUrl;
1400
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;
1401
1525
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptRichText, never>;
1402
- 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>;
1403
1527
  }
1404
1528
 
1405
1529
  /** Wartość suwaka: pojedyncza liczba lub para `[min, max]` w trybie `range`. */
@@ -1660,6 +1784,13 @@ interface Strength {
1660
1784
  declare class KptPassword implements FormValueControl<string> {
1661
1785
  readonly value: _angular_core.ModelSignal<string>;
1662
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>;
1663
1794
  readonly feedback: _angular_core.InputSignalWithTransform<boolean, unknown>;
1664
1795
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1665
1796
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -1671,7 +1802,7 @@ declare class KptPassword implements FormValueControl<string> {
1671
1802
  protected readonly visible: _angular_core.WritableSignal<boolean>;
1672
1803
  protected readonly strength: _angular_core.Signal<Strength>;
1673
1804
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptPassword, never>;
1674
- 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>;
1675
1806
  }
1676
1807
 
1677
1808
  /**
@@ -2018,6 +2149,202 @@ declare class KptShellNavToggle {
2018
2149
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KptShellNavToggle, "[kptShellNavToggle]", never, { "label": { "alias": "kptShellNavToggle"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2019
2150
  }
2020
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
+
2021
2348
  /**
2022
2349
  * Panel z nagłówkiem i opcjonalnym zwijaniem. Akcje nagłówka: atrybut `kptPanelActions`.
2023
2350
  *
@@ -2338,18 +2665,6 @@ declare class KptPaginator {
2338
2665
  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>;
2339
2666
  }
2340
2667
 
2341
- /** Wbudowana agregacja kolumny w wierszu podsumowania. */
2342
- type KptSummaryFn = 'sum' | 'avg' | 'min' | 'max' | 'count';
2343
- interface KptColumnSummary {
2344
- /**
2345
- * Agregacja wbudowana albo własna funkcja liczona na całym zbiorze wierszy
2346
- * (po filtrach, ze wszystkich stron).
2347
- */
2348
- fn: KptSummaryFn | ((rows: readonly Record<string, unknown>[]) => unknown);
2349
- /** Formatowanie wyniku (np. waluta). Bez niego wartość renderowana jest surowo. */
2350
- format?: (value: unknown) => string;
2351
- }
2352
-
2353
2668
  /** Rodzaj kontrolki filtra w nagłówku kolumny. */
2354
2669
  type KptColumnFilterType = 'text' | 'number' | 'select' | 'dateRange' | 'numberRange' | 'slider';
2355
2670
  interface KptColumnFilter {
@@ -2367,6 +2682,19 @@ interface KptColumnFilter {
2367
2682
  /** Krok dla `type: 'slider'` (domyślnie 1). */
2368
2683
  step?: number;
2369
2684
  }
2685
+
2686
+ /** Wbudowana agregacja kolumny w wierszu podsumowania. */
2687
+ type KptSummaryFn = 'sum' | 'avg' | 'min' | 'max' | 'count';
2688
+ interface KptColumnSummary {
2689
+ /**
2690
+ * Agregacja wbudowana albo własna funkcja liczona na całym zbiorze wierszy
2691
+ * (po filtrach, ze wszystkich stron).
2692
+ */
2693
+ fn: KptSummaryFn | ((rows: readonly Record<string, unknown>[]) => unknown);
2694
+ /** Formatowanie wyniku (np. waluta). Bez niego wartość renderowana jest surowo. */
2695
+ format?: (value: unknown) => string;
2696
+ }
2697
+
2370
2698
  /** Rodzaj kontrolki edycji inline komórki. */
2371
2699
  type KptColumnEditType = 'text' | 'number' | 'date' | 'select' | 'multiselect';
2372
2700
  interface KptColumnEdit {
@@ -2583,7 +2911,7 @@ declare class KptDataTable<T = Record<string, unknown>> {
2583
2911
  protected setRangeFilter(field: string, bound: 'min' | 'max', event: Event): void;
2584
2912
  /** Bieżąca para `[lo, hi]` filtra suwakowego dla kolumny (domyślnie pełen zakres). */
2585
2913
  protected sliderVal(col: KptColumn): [number, number];
2586
- private static toIso;
2914
+ /** Semantyka dopasowania siedzi w `./column-filter` — tu zostaje tylko spięcie ze stanem. */
2587
2915
  private matchesColumnFilters;
2588
2916
  private readonly filtered;
2589
2917
  private readonly sorted;
@@ -2614,6 +2942,7 @@ declare class KptDataTable<T = Record<string, unknown>> {
2614
2942
  protected readonly summaryLabelSpan: _angular_core.Signal<number>;
2615
2943
  /** Gotowe teksty komórek podsumowania (pole → tekst); pusty string dla braku wartości. */
2616
2944
  private readonly summaryTexts;
2945
+ private formatSummary;
2617
2946
  protected summaryText(field: string): string;
2618
2947
  private parseWidthPx;
2619
2948
  /** Mapa pole → przesunięcie left (px) dla wiodących zamrożonych kolumn. */
@@ -3079,13 +3408,13 @@ declare class KptDrawer {
3079
3408
  * Menu kontekstowe (PPM) na obszarze projekcji. Panel pozycjonowany do kursora.
3080
3409
  *
3081
3410
  * @example
3082
- * <kpt-context-menu [items]="items" (select)="onSelect($event)">
3411
+ * <kpt-context-menu [items]="items" (selected)="onSelect($event)">
3083
3412
  * <div class="obszar">Kliknij prawym przyciskiem</div>
3084
3413
  * </kpt-context-menu>
3085
3414
  */
3086
3415
  declare class KptContextMenu<T = unknown> {
3087
3416
  readonly items: _angular_core.InputSignal<KptMenuItem<T>[]>;
3088
- readonly select: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
3417
+ readonly selected: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
3089
3418
  protected readonly open: _angular_core.WritableSignal<boolean>;
3090
3419
  protected readonly x: _angular_core.WritableSignal<number>;
3091
3420
  protected readonly y: _angular_core.WritableSignal<number>;
@@ -3093,7 +3422,7 @@ declare class KptContextMenu<T = unknown> {
3093
3422
  protected close(): void;
3094
3423
  protected pick(item: KptMenuItem<T>): void;
3095
3424
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptContextMenu<any>, never>;
3096
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptContextMenu<any>, "kpt-context-menu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, { "select": "select"; }, never, ["*"], true, never>;
3425
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptContextMenu<any>, "kpt-context-menu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, { "selected": "selected"; }, never, ["*"], true, never>;
3097
3426
  }
3098
3427
 
3099
3428
  /**
@@ -3103,18 +3432,18 @@ declare class KptContextMenu<T = unknown> {
3103
3432
  * `import '@angular/cdk/overlay-prebuilt.css';`
3104
3433
  *
3105
3434
  * @example
3106
- * <kpt-menubar [items]="items" (select)="onSelect($event)" />
3435
+ * <kpt-menubar [items]="items" (selected)="onSelect($event)" />
3107
3436
  */
3108
3437
  declare class KptMenubar<T = unknown> {
3109
3438
  readonly items: _angular_core.InputSignal<KptMenuItem<T>[]>;
3110
- readonly select: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
3439
+ readonly selected: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
3111
3440
  protected readonly openIndex: _angular_core.WritableSignal<number | null>;
3112
3441
  protected readonly positions: ConnectedPosition[];
3113
3442
  protected toggle(i: number, item: KptMenuItem<T>): void;
3114
3443
  protected pick(item: KptMenuItem<T>): void;
3115
3444
  protected closeAll(): void;
3116
3445
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptMenubar<any>, never>;
3117
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptMenubar<any>, "kpt-menubar", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, { "select": "select"; }, never, never, true, never>;
3446
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptMenubar<any>, "kpt-menubar", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, { "selected": "selected"; }, never, never, true, never>;
3118
3447
  }
3119
3448
 
3120
3449
  /**
@@ -3125,11 +3454,11 @@ declare class KptMenubar<T = unknown> {
3125
3454
  * `import '@angular/cdk/overlay-prebuilt.css';`
3126
3455
  *
3127
3456
  * @example
3128
- * <kpt-megamenu [items]="items" (select)="onSelect($event)" />
3457
+ * <kpt-megamenu [items]="items" (selected)="onSelect($event)" />
3129
3458
  */
3130
3459
  declare class KptMegamenu<T = unknown> {
3131
3460
  readonly items: _angular_core.InputSignal<KptMenuItem<T>[]>;
3132
- readonly select: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
3461
+ readonly selected: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
3133
3462
  protected readonly openIndex: _angular_core.WritableSignal<number | null>;
3134
3463
  protected readonly positions: ConnectedPosition[];
3135
3464
  protected activeColumns(): KptMenuItem<T>[];
@@ -3137,7 +3466,7 @@ declare class KptMegamenu<T = unknown> {
3137
3466
  protected pick(link: KptMenuItem<T>): void;
3138
3467
  protected closeAll(): void;
3139
3468
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptMegamenu<any>, never>;
3140
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptMegamenu<any>, "kpt-megamenu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, { "select": "select"; }, never, never, true, never>;
3469
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptMegamenu<any>, "kpt-megamenu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, { "selected": "selected"; }, never, never, true, never>;
3141
3470
  }
3142
3471
 
3143
3472
  interface KptConfirmOptions {
@@ -3209,7 +3538,7 @@ type KptSpeedDialDirection = 'up' | 'down' | 'left' | 'right';
3209
3538
  * Speed dial — FAB rozwijający zestaw akcji. Buduje na `kpt-fab`.
3210
3539
  *
3211
3540
  * @example
3212
- * <kpt-speed-dial [items]="actions" direction="up" (select)="onAction($event)" />
3541
+ * <kpt-speed-dial [items]="actions" direction="up" (selected)="onAction($event)" />
3213
3542
  */
3214
3543
  declare class KptSpeedDial<T = unknown> {
3215
3544
  readonly items: _angular_core.InputSignal<KptMenuItem<T>[]>;
@@ -3217,7 +3546,7 @@ declare class KptSpeedDial<T = unknown> {
3217
3546
  readonly icon: _angular_core.InputSignal<string>;
3218
3547
  /** Etykieta a11y FAB (stan zamknięty); bez wartości używa i18n (`speedDial.actions`). */
3219
3548
  readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
3220
- readonly select: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
3549
+ readonly selected: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
3221
3550
  protected readonly i18n: KptI18n;
3222
3551
  protected readonly effectiveAriaLabel: _angular_core.Signal<string>;
3223
3552
  protected readonly open: _angular_core.WritableSignal<boolean>;
@@ -3225,9 +3554,9 @@ declare class KptSpeedDial<T = unknown> {
3225
3554
  protected close(): void;
3226
3555
  protected pick(item: KptMenuItem<T>): void;
3227
3556
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptSpeedDial<any>, never>;
3228
- 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>;
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>;
3229
3558
  }
3230
3559
 
3231
- 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 };
3232
- export type { DeepPartial, KptAlertVariant, KptAvatarItem, KptAvatarShape, KptAvatarSize, KptBadgeSize, KptBadgeVariant, KptBreadcrumbItem, KptBreakpoint, KptButtonSize, KptButtonVariant, KptCardVariant, KptCellEditEvent, KptChipVariant, KptColumn, KptColumnEdit, KptColumnEditType, 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 };
3233
3562
  //# sourceMappingURL=konce-pt-angular.d.ts.map