@konce-pt/angular 0.2.0 → 0.3.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.
@@ -193,7 +193,7 @@ declare class KptIconRegistry {
193
193
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<KptIconRegistry>;
194
194
  }
195
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';
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' | 'phone' | 'map-pin' | 'world' | 'clock' | 'align-left' | 'align-center' | 'align-right' | 'align-justified' | 'palette' | 'highlight' | 'clipboard' | 'clipboard-text' | 'table' | 'pencil';
197
197
 
198
198
  type KptBadgeVariant = 'neutral' | 'primary' | 'success' | 'danger' | 'warning' | 'info';
199
199
  /**
@@ -312,10 +312,21 @@ declare class KptSkeleton {
312
312
  * kontrolki (np. `kpt-input`). Prezentacyjny — stan błędu przekazuje się przez `error`
313
313
  * (zwykle z pola Signal Forms). Wygląd sterowany tokenami `--kpt-form-field-*`.
314
314
  *
315
+ * Etykieta ma 4 warianty (`labelType`): `fixed` (domyślny, nad kontrolką) oraz trzy warianty
316
+ * unoszącej się etykiety (Float Label) z animowanym przejściem: `over` (nad obramowaniem),
317
+ * `in` (u góry wewnątrz pola) i `on` (na obramowaniu, notch). Uniesienie następuje przy focusie
318
+ * (CSS `:focus-within`) lub gdy pole jest wypełnione (wykrywane po zdarzeniach `input`/`change`
319
+ * oraz wartości początkowej) — bez wymogu placeholdera na kontrolce.
320
+ *
315
321
  * @example
316
322
  * <kpt-form-field label="E-mail" [error]="emailError()" hint="Firmowy adres">
317
323
  * <kpt-input [control]="f.email" type="email" />
318
324
  * </kpt-form-field>
325
+ *
326
+ * @example
327
+ * <kpt-form-field label="E-mail" labelType="over">
328
+ * <kpt-input />
329
+ * </kpt-form-field>
319
330
  */
320
331
  declare class KptFormField {
321
332
  /** Tekst etykiety. */
@@ -328,8 +339,20 @@ declare class KptFormField {
328
339
  readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
329
340
  /** Id kontrolki dla powiązania `label[for]`. */
330
341
  readonly controlId: _angular_core.InputSignal<string>;
342
+ /**
343
+ * Wariant etykiety: `fixed` (domyślnie, statyczna nad kontrolką) lub Float Label —
344
+ * `over` (nad obramowaniem), `in` (u góry wewnątrz pola), `on` (na obramowaniu, notch).
345
+ * Uniesienie następuje przy focusie lub wypełnieniu pola.
346
+ */
347
+ readonly labelType: _angular_core.InputSignal<"fixed" | "over" | "in" | "on">;
348
+ private readonly host;
349
+ /** Czy projektowana kontrolka ma wartość — steruje uniesieniem etykiety w wariantach float. */
350
+ protected readonly filled: _angular_core.WritableSignal<boolean>;
351
+ constructor();
352
+ /** Odczytuje wartość projektowanego `input`/`textarea` i aktualizuje stan `filled`. */
353
+ protected updateFilled(): void;
331
354
  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>;
355
+ 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; }; "labelType": { "alias": "labelType"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
333
356
  }
334
357
 
335
358
  type KptInputType = 'text' | 'email' | 'password' | 'number' | 'search' | 'tel' | 'url';
@@ -382,6 +405,10 @@ declare class KptCheckbox implements FormCheckboxControl {
382
405
  /**
383
406
  * Przełącznik (switch/toggle) zintegrowany z Signal Forms (`FormCheckboxControl`).
384
407
  * `<kpt-switch [formField]="f.notifications" label="Powiadomienia" />`
408
+ *
409
+ * Wariant z tekstem stanu: `onLabel`/`offLabel` — wyświetlany tekst zmienia się
410
+ * przy przełączaniu (np. „Włączony”/„Wyłączony”).
411
+ * `<kpt-switch [(checked)]="on" onLabel="Włączony" offLabel="Wyłączony" />`
385
412
  */
386
413
  declare class KptSwitch implements FormCheckboxControl {
387
414
  readonly checked: _angular_core.ModelSignal<boolean>;
@@ -390,8 +417,51 @@ declare class KptSwitch implements FormCheckboxControl {
390
417
  readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
391
418
  readonly touch: _angular_core.OutputEmitterRef<void>;
392
419
  readonly label: _angular_core.InputSignal<string>;
420
+ /** Pozycja etykiety `label` względem przełącznika: 'end' (prawo, domyślnie) lub 'start' (lewo). */
421
+ readonly labelPosition: _angular_core.InputSignal<"start" | "end">;
422
+ /** Tekst stanu włączonego (wyświetlany, gdy `checked`). */
423
+ readonly onLabel: _angular_core.InputSignal<string>;
424
+ /** Tekst stanu wyłączonego (wyświetlany, gdy nie `checked`). */
425
+ readonly offLabel: _angular_core.InputSignal<string>;
426
+ protected readonly hasStateLabels: _angular_core.Signal<boolean>;
427
+ /** Tekst zależny od stanu przełącznika. */
428
+ protected readonly stateLabel: _angular_core.Signal<string>;
393
429
  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>;
430
+ 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; }; "labelPosition": { "alias": "labelPosition"; "required": false; "isSignal": true; }; "onLabel": { "alias": "onLabel"; "required": false; "isSignal": true; }; "offLabel": { "alias": "offLabel"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "touch": "touch"; }, never, ["*"], true, never>;
431
+ }
432
+
433
+ /**
434
+ * Grupa przełączników. Domyślnie pojedynczy wybór (wzajemnie wykluczające się) —
435
+ * włączenie jednego wyłącza pozostałe, a wartość to `value` wybranej opcji (lub `null`).
436
+ * Z `multiple` przechodzi w tryb wielokrotny — wartość to tablica `T[]` zaznaczonych opcji.
437
+ * Zintegrowana z Signal Forms (`FormValueControl<T | T[] | null>`).
438
+ *
439
+ * @example
440
+ * <kpt-switch-group [(value)]="plan" [options]="plans" />
441
+ * <kpt-switch-group multiple [(value)]="tags" [options]="tagOptions" />
442
+ */
443
+ declare class KptSwitchGroup<T = unknown> implements FormValueControl<unknown> {
444
+ readonly value: _angular_core.ModelSignal<unknown>;
445
+ readonly options: _angular_core.InputSignal<KptOption<T>[]>;
446
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
447
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
448
+ readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
449
+ readonly touch: _angular_core.OutputEmitterRef<void>;
450
+ /** Układ: 'vertical' (domyślnie) lub 'horizontal'. */
451
+ readonly orientation: _angular_core.InputSignal<"vertical" | "horizontal">;
452
+ /** Tryb wielokrotnego wyboru — wartość to tablica `T[]` zaznaczonych opcji. Domyślnie false (pojedynczy wybór). */
453
+ readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
454
+ /**
455
+ * Czy ponowne kliknięcie aktywnej opcji ją odznacza (value = null). Dotyczy tylko trybu pojedynczego —
456
+ * w trybie `multiple` odznaczanie jest zawsze dozwolone. Domyślnie tak.
457
+ */
458
+ readonly allowDeselect: _angular_core.InputSignalWithTransform<boolean, unknown>;
459
+ /** Aktualna wartość jako tablica (tryb multiple) — normalizuje `null`/pojedynczą wartość. */
460
+ private readonly selectedValues;
461
+ protected isChecked(optValue: T): boolean;
462
+ protected onToggle(opt: KptOption<T>, checked: boolean): void;
463
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptSwitchGroup<any>, never>;
464
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptSwitchGroup<any>, "kpt-switch-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; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "allowDeselect": { "alias": "allowDeselect"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
395
465
  }
396
466
 
397
467
  /**
@@ -459,12 +529,26 @@ interface DayCell$1 {
459
529
  selected: boolean;
460
530
  disabled: boolean;
461
531
  }
532
+ interface GridCell {
533
+ label: string;
534
+ value: string;
535
+ selected: boolean;
536
+ disabled: boolean;
537
+ }
538
+ /** Granulacja wyboru. */
539
+ type KptDatepickerMode = 'date' | 'monthYear' | 'year' | 'month' | 'datetime' | 'time';
462
540
  /**
463
- * Wybór daty z własnym kalendarzem (CDK Overlay), Signal Forms. Wartość ISO 'RRRR-MM-DD'.
541
+ * Wybór daty/godziny z własnym kalendarzem (CDK Overlay), Signal Forms.
542
+ * Granulacja przez `selectionMode`: data, miesiąc+rok, rok, miesiąc, data+godzina, sama godzina.
543
+ * Godzina na tarczy zegara (dwa etapy: godziny → minuty), format 12/24h przez `hourFormat`.
544
+ * Format wartości zależy od trybu: 'RRRR-MM-DD' / 'RRRR-MM' / 'RRRR' / 'MM'
545
+ * / 'RRRR-MM-DDTHH:mm' (datetime) / 'HH:mm' (time). Czas przechowywany zawsze 24h.
464
546
  * Wymaga stylów overlay CDK: `import '@angular/cdk/overlay-prebuilt.css';`
465
547
  *
466
548
  * @example
467
549
  * <kpt-datepicker [formField]="f.birthDate" minDate="1900-01-01" />
550
+ * <kpt-datepicker selectionMode="datetime" [hourFormat]="12" [(value)]="meetingAt" />
551
+ * <kpt-datepicker selectionMode="time" [(value)]="alarm" />
468
552
  */
469
553
  declare class KptDatepicker implements FormValueControl<string> {
470
554
  readonly value: _angular_core.ModelSignal<string>;
@@ -473,25 +557,106 @@ declare class KptDatepicker implements FormValueControl<string> {
473
557
  readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
474
558
  readonly touch: _angular_core.OutputEmitterRef<void>;
475
559
  readonly placeholder: _angular_core.InputSignal<string>;
560
+ readonly displayFormat: _angular_core.InputSignal<"pl" | "iso">;
561
+ /** Granulacja wyboru. */
562
+ readonly selectionMode: _angular_core.InputSignal<KptDatepickerMode>;
563
+ /** Prezentacja miesiąca w trybie 'month': słownie ('long') lub liczbą ('number'). */
564
+ readonly monthDisplay: _angular_core.InputSignal<"number" | "long">;
565
+ /** Format godziny: 24 lub 12 (z AM/PM). */
566
+ readonly hourFormat: _angular_core.InputSignalWithTransform<number, unknown>;
567
+ /** Krok minut (snap na tarczy). */
568
+ readonly minuteStep: _angular_core.InputSignalWithTransform<number, unknown>;
476
569
  readonly minDate: _angular_core.InputSignal<string | null>;
477
570
  readonly maxDate: _angular_core.InputSignal<string | null>;
571
+ protected readonly effectivePlaceholder: _angular_core.Signal<string>;
478
572
  protected readonly weekdays: string[];
479
573
  protected readonly open: _angular_core.WritableSignal<boolean>;
480
574
  private readonly today;
481
575
  private readonly view;
576
+ protected readonly timeStr: _angular_core.WritableSignal<string>;
577
+ protected readonly dtView: _angular_core.WritableSignal<"calendar" | "clock">;
578
+ private readonly pendingDate;
482
579
  protected readonly positions: ConnectedPosition[];
580
+ protected readonly viewYear: _angular_core.Signal<number>;
483
581
  protected readonly monthLabel: _angular_core.Signal<string>;
582
+ protected readonly yearPageStart: _angular_core.Signal<number>;
583
+ protected readonly yearRangeLabel: _angular_core.Signal<string>;
584
+ private formatTime;
585
+ /** Etykieta czasu na pasku trybu datetime (uwzględnia AM/PM). */
586
+ protected readonly timeBarLabel: _angular_core.Signal<string>;
484
587
  protected readonly display: _angular_core.Signal<string>;
588
+ private readonly selectedDateIso;
485
589
  protected readonly weeks: _angular_core.Signal<DayCell$1[][]>;
486
- private parse;
590
+ protected readonly monthCells: _angular_core.Signal<GridCell[]>;
591
+ protected readonly yearCells: _angular_core.Signal<GridCell[]>;
592
+ private parseDate;
593
+ private parseTime;
594
+ private parseDateTime;
595
+ private isYearDisabled;
596
+ private isMonthYearDisabled;
597
+ private initialView;
598
+ private syncTimeFromValue;
487
599
  protected toggleOpen(): void;
488
600
  protected close(): void;
489
601
  protected selectDay(cell: DayCell$1): void;
602
+ protected selectCell(cell: GridCell): void;
603
+ protected openClock(): void;
604
+ protected backToCalendar(): void;
605
+ protected commit(): void;
490
606
  protected prevMonth(): void;
491
607
  protected nextMonth(): void;
608
+ protected prevYear(): void;
609
+ protected nextYear(): void;
610
+ protected prevYearPage(): void;
611
+ protected nextYearPage(): void;
492
612
  protected clear(event: Event): void;
493
613
  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>;
614
+ 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; }; "displayFormat": { "alias": "displayFormat"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "monthDisplay": { "alias": "monthDisplay"; "required": false; "isSignal": true; }; "hourFormat": { "alias": "hourFormat"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "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>;
615
+ }
616
+
617
+ interface ClockMark {
618
+ label: string;
619
+ hour24: number;
620
+ x: number;
621
+ y: number;
622
+ inner: boolean;
623
+ selected: boolean;
624
+ }
625
+ /**
626
+ * Tarcza zegara (wybór godziny) — dwa etapy: godziny → minuty, klik lub przeciąganie.
627
+ * Format 12/24h (`hourFormat`); w 24h dodatkowy wewnętrzny pierścień 13–00, w 12h AM/PM.
628
+ * Wartość `HH:mm` (zawsze 24h). Używana przez `kpt-datepicker` i `kpt-date-range`.
629
+ *
630
+ * @example
631
+ * <kpt-clock [(value)]="time" [hourFormat]="12" [minuteStep]="5" />
632
+ */
633
+ declare class KptClock {
634
+ readonly value: _angular_core.ModelSignal<string>;
635
+ readonly hourFormat: _angular_core.InputSignalWithTransform<number, unknown>;
636
+ readonly minuteStep: _angular_core.InputSignalWithTransform<number, unknown>;
637
+ protected readonly hour: _angular_core.WritableSignal<number>;
638
+ protected readonly minute: _angular_core.WritableSignal<number>;
639
+ protected readonly clockPhase: _angular_core.WritableSignal<"hours" | "minutes">;
640
+ constructor();
641
+ private parse;
642
+ private emit;
643
+ protected readonly ampm: _angular_core.Signal<"AM" | "PM">;
644
+ protected readonly hour12: _angular_core.Signal<number>;
645
+ protected readonly hourLabel: _angular_core.Signal<string>;
646
+ protected readonly minuteLabel: _angular_core.Signal<string>;
647
+ private from12h;
648
+ protected readonly hourMarks: _angular_core.Signal<ClockMark[]>;
649
+ protected readonly minuteMarks: _angular_core.Signal<ClockMark[]>;
650
+ protected readonly handAngle: _angular_core.Signal<number>;
651
+ protected readonly handInner: _angular_core.Signal<boolean>;
652
+ protected setPhase(phase: 'hours' | 'minutes'): void;
653
+ protected setAmpm(target: 'AM' | 'PM'): void;
654
+ protected pickHour(mark: ClockMark): void;
655
+ protected pickMinute(mark: ClockMark): void;
656
+ protected onDialPointer(event: PointerEvent, face: HTMLElement): void;
657
+ protected onDialUp(): void;
658
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptClock, never>;
659
+ 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>;
495
660
  }
496
661
 
497
662
  /**
@@ -518,50 +683,170 @@ declare class KptTextarea implements FormValueControl<string> {
518
683
  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
684
  }
520
685
 
521
- type KptRichTool = 'bold' | 'italic' | 'underline' | 'strike' | 'ul' | 'ol' | 'link' | 'clear';
686
+ type KptRichTool = 'copy' | 'paste' | 'pasteText' | 'heading' | 'bold' | 'italic' | 'underline' | 'strike' | 'ul' | 'ol' | 'foreColor' | 'backColor' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify' | 'link' | 'table' | 'clear' | 'html';
687
+ /** Pasek: płaska lista narzędzi lub grupy (sekcje rozdzielone separatorem). */
688
+ type KptRichToolbar = KptRichTool[] | KptRichTool[][];
522
689
  /**
523
- * Lekki edytor tekstu sformatowanego (contenteditable) z konfigurowalnym paskiem przycisków.
524
- * Wartość = HTML. Bez zależności zewnętrznych. Signal Forms.
690
+ * Lekki edytor tekstu sformatowanego (contenteditable) z konfigurowalnym paskiem sekcji.
691
+ * Narzędzia: schowek (kopiuj / wklej / wklej bez formatowania), styl (nagłówki H1–H6 / paragraf),
692
+ * bold/italic/underline/strike/ul/ol, kolor tekstu i tła (popover), wyrównania, link, czyszczenie.
693
+ * `toolbar` przyjmuje płaską listę lub grupy (sekcje). Wartość = HTML. Signal Forms.
694
+ * Wymaga stylów overlay CDK (popover kolorów): `import '@angular/cdk/overlay-prebuilt.css';`
525
695
  *
526
696
  * @example
527
- * <kpt-rich-text [formField]="f.body" [toolbar]="['bold','italic','ul','link']" />
697
+ * <kpt-rich-text [formField]="f.body" />
698
+ * <kpt-rich-text [(value)]="v" [toolbar]="[['bold','italic'],['ul','ol'],['link']]" />
528
699
  */
529
700
  declare class KptRichText implements FormValueControl<string> {
530
701
  readonly value: _angular_core.ModelSignal<string>;
531
- readonly toolbar: _angular_core.InputSignal<KptRichTool[]>;
702
+ readonly toolbar: _angular_core.InputSignal<KptRichToolbar>;
532
703
  readonly placeholder: _angular_core.InputSignal<string>;
533
704
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
534
705
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
535
706
  readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
536
707
  readonly touch: _angular_core.OutputEmitterRef<void>;
708
+ protected readonly swatches: string[];
537
709
  private readonly editor;
710
+ private savedRange;
711
+ protected readonly colorOpen: _angular_core.WritableSignal<boolean>;
712
+ protected readonly colorKind: _angular_core.WritableSignal<"foreColor" | "backColor" | "cellBg">;
713
+ protected readonly sourceView: _angular_core.WritableSignal<boolean>;
714
+ protected readonly styleOpen: _angular_core.WritableSignal<boolean>;
715
+ protected readonly tableOpen: _angular_core.WritableSignal<boolean>;
716
+ protected readonly gridR: _angular_core.WritableSignal<number>;
717
+ protected readonly gridC: _angular_core.WritableSignal<number>;
718
+ protected readonly gridRows: number[];
719
+ protected readonly gridCols: number[];
720
+ protected readonly menuOpen: _angular_core.WritableSignal<boolean>;
721
+ protected readonly menuPoint: _angular_core.WritableSignal<{
722
+ x: number;
723
+ y: number;
724
+ }>;
725
+ protected readonly borderOpen: _angular_core.WritableSignal<boolean>;
726
+ protected readonly borderTarget: _angular_core.WritableSignal<"table" | "cell">;
727
+ private ctxCell;
728
+ private resize;
729
+ protected readonly selCount: _angular_core.WritableSignal<number>;
730
+ private selCells;
731
+ private selAnchor;
732
+ private selecting;
733
+ private canSplitCtx;
734
+ protected readonly styleOptions: {
735
+ tag: string;
736
+ label: string;
737
+ }[];
738
+ protected readonly styleLabel: _angular_core.Signal<string>;
739
+ protected readonly activeCmds: _angular_core.WritableSignal<Set<string>>;
740
+ protected readonly currentBlock: _angular_core.WritableSignal<string>;
741
+ protected readonly positions: ConnectedPosition[];
742
+ /** Sekcje paska (normalizacja płaskiej listy do jednej grupy). */
743
+ protected readonly sections: _angular_core.Signal<KptRichTool[][]>;
538
744
  constructor();
539
745
  protected icon(item: KptRichTool): KptIconName;
746
+ protected aria(item: KptRichTool): string;
747
+ protected isActive(item: KptRichTool): boolean;
748
+ private inEditor;
749
+ private refreshState;
540
750
  protected onInput(): void;
751
+ protected onSource(event: Event): void;
752
+ private focusEditor;
753
+ private saveSelection;
754
+ private restoreSelection;
541
755
  protected exec(item: KptRichTool): void;
756
+ protected openStyle(): void;
757
+ protected closeStyle(): void;
758
+ protected pickStyle(tag: string): void;
759
+ protected openColor(kind: 'foreColor' | 'backColor'): void;
760
+ protected closeColor(): void;
761
+ protected applyColor(color: string): void;
762
+ protected onColorInput(event: Event): void;
763
+ private pasteRich;
764
+ private pastePlain;
765
+ /** Natywne wklejanie — oczyść (bez śmieci z Worda/WWW). */
766
+ protected onPaste(event: ClipboardEvent): void;
767
+ protected closeTable(): void;
768
+ protected gridHover(r: number, c: number): void;
769
+ protected insertTable(rows: number, cols: number): void;
770
+ protected onContextMenu(event: MouseEvent): void;
771
+ protected closeMenu(): void;
772
+ private ctxTable;
773
+ private afterTableOp;
774
+ protected insertColumn(dir: 'left' | 'right'): void;
775
+ protected deleteColumn(): void;
776
+ protected insertRow(dir: 'above' | 'below'): void;
777
+ protected deleteRow(): void;
778
+ /** Zamień komórki wiersza między `<td>` a `<th>` (wiersz nagłówka). */
779
+ protected toggleHeaderRow(): void;
780
+ /** Zamień komórki kolumny między `<td>` a `<th>` (kolumna nagłówka). */
781
+ protected toggleHeaderColumn(): void;
782
+ private swapCellTag;
783
+ protected deleteTable(): void;
784
+ protected alignCell(a: 'left' | 'center' | 'right'): void;
785
+ /** Komórki objęte operacją: zaznaczenie (jeśli jest) lub bieżąca komórka menu. */
786
+ private activeCells;
787
+ protected openCellBg(): void;
788
+ protected openBorder(): void;
789
+ protected closeBorder(): void;
790
+ private borderCells;
791
+ protected setBorderWidth(w: 'none' | 'thin' | 'medium' | 'thick'): void;
792
+ protected setBorderColor(color: string): void;
793
+ protected onBorderColorInput(event: Event): void;
794
+ private normalizeColWidths;
795
+ protected onEditorMouseDown(event: MouseEvent): void;
796
+ protected onEditorMouseMove(event: MouseEvent): void;
797
+ private onResizeMove;
798
+ private onResizeEnd;
799
+ private buildGrid;
800
+ private selectRegion;
801
+ private clearSelection;
802
+ protected mergeCells(): void;
803
+ protected splitCell(): void;
804
+ /** Komórka w wierszu, przed którą wstawić (pierwsza o origin-col > gridCol), lub null (na koniec). */
805
+ private cellBeforeGridCol;
806
+ protected canMerge(): boolean;
807
+ protected canSplit(): boolean;
808
+ private sanitizeHtml;
542
809
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptRichText, never>;
543
810
  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
811
  }
545
812
 
813
+ /** Wartość suwaka: pojedyncza liczba lub para `[min, max]` w trybie `range`. */
814
+ type KptSliderValue = number | [number, number];
546
815
  /**
547
816
  * Suwak wartości (slider) na Signal Forms.
817
+ * W trybie `range` udostępnia dwa uchwyty, a wartość jest parą `[min, max]`.
548
818
  *
549
819
  * @example
550
820
  * <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>;
821
+ * <kpt-slider range [(value)]="zakres" [min]="0" [max]="100" showValue />
822
+ */
823
+ declare class KptSlider implements FormValueControl<KptSliderValue> {
824
+ readonly value: _angular_core.ModelSignal<KptSliderValue>;
825
+ /** Tryb zakresu: dwa uchwyty; wartość jako para `[min, max]`. */
826
+ readonly range: _angular_core.InputSignalWithTransform<boolean, unknown>;
827
+ readonly min: _angular_core.InputSignal<KptSliderValue | undefined>;
828
+ readonly max: _angular_core.InputSignal<KptSliderValue | undefined>;
556
829
  readonly step: _angular_core.InputSignal<number>;
557
830
  readonly showValue: _angular_core.InputSignalWithTransform<boolean, unknown>;
558
831
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
559
832
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
560
833
  readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
561
834
  readonly touch: _angular_core.OutputEmitterRef<void>;
562
- protected readonly percent: _angular_core.Signal<number>;
835
+ private toNum;
836
+ protected readonly minN: _angular_core.Signal<number>;
837
+ protected readonly maxN: _angular_core.Signal<number>;
838
+ /** Bieżąca para `[low, high]` — również dla trybu pojedynczego (low = min). */
839
+ private readonly pair;
840
+ protected readonly single: _angular_core.Signal<number>;
841
+ protected readonly low: _angular_core.Signal<number>;
842
+ protected readonly high: _angular_core.Signal<number>;
843
+ protected setLow(v: number): void;
844
+ protected setHigh(v: number): void;
845
+ private pct;
846
+ protected readonly lowPct: _angular_core.Signal<number>;
847
+ protected readonly highPct: _angular_core.Signal<number>;
563
848
  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>;
849
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptSlider, "kpt-slider", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "range": { "alias": "range"; "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
850
  }
566
851
 
567
852
  /**
@@ -633,6 +918,8 @@ interface KptDateRangeValue {
633
918
  start: string;
634
919
  end: string;
635
920
  }
921
+ /** Granulacja zakresu: same daty, daty z godziną, same godziny. */
922
+ type KptDateRangeMode = 'date' | 'datetime' | 'time';
636
923
  interface DayCell {
637
924
  day: number;
638
925
  iso: string;
@@ -644,11 +931,14 @@ interface DayCell {
644
931
  }
645
932
  /**
646
933
  * Wybór zakresu dat z kalendarzem (CDK Overlay), Signal Forms.
647
- * Wartość: `{ start: 'RRRR-MM-DD', end: 'RRRR-MM-DD' }`.
934
+ * `mode`: 'date' (domyślnie), 'datetime' (data+godzina, tarcza zegara), 'time' (sama godzina).
935
+ * Wartość: `{ start, end }` — daty 'RRRR-MM-DD', datetime 'RRRR-MM-DDTHH:mm', godziny 'HH:mm'.
648
936
  * Wymaga `import '@angular/cdk/overlay-prebuilt.css';`
649
937
  *
650
938
  * @example
651
939
  * <kpt-date-range [formField]="f.period" />
940
+ * <kpt-date-range mode="datetime" [hourFormat]="12" [(value)]="span" />
941
+ * <kpt-date-range mode="time" [(value)]="hours" />
652
942
  */
653
943
  declare class KptDateRange implements FormValueControl<KptDateRangeValue> {
654
944
  readonly value: _angular_core.ModelSignal<KptDateRangeValue>;
@@ -657,22 +947,36 @@ declare class KptDateRange implements FormValueControl<KptDateRangeValue> {
657
947
  readonly touched: _angular_core.InputSignalWithTransform<boolean, unknown>;
658
948
  readonly touch: _angular_core.OutputEmitterRef<void>;
659
949
  readonly placeholder: _angular_core.InputSignal<string>;
950
+ readonly displayFormat: _angular_core.InputSignal<"pl" | "iso">;
951
+ readonly mode: _angular_core.InputSignal<KptDateRangeMode>;
952
+ readonly hourFormat: _angular_core.InputSignalWithTransform<number, unknown>;
953
+ readonly minuteStep: _angular_core.InputSignalWithTransform<number, unknown>;
660
954
  protected readonly weekdays: string[];
661
955
  protected readonly open: _angular_core.WritableSignal<boolean>;
662
956
  private readonly today;
663
957
  private readonly view;
958
+ protected readonly startTime: _angular_core.WritableSignal<string>;
959
+ protected readonly endTime: _angular_core.WritableSignal<string>;
960
+ protected readonly timeEnd: _angular_core.WritableSignal<"start" | "end">;
961
+ private readonly startDate;
962
+ private readonly endDate;
664
963
  protected readonly positions: ConnectedPosition[];
665
964
  protected readonly monthLabel: _angular_core.Signal<string>;
965
+ private datePart;
966
+ private timePart;
967
+ private fmtDate;
968
+ private fmtTime;
666
969
  protected readonly display: _angular_core.Signal<string>;
667
970
  protected readonly weeks: _angular_core.Signal<DayCell[][]>;
668
971
  protected toggleOpen(): void;
669
972
  protected close(): void;
670
973
  protected selectDay(cell: DayCell): void;
974
+ protected commit(): void;
671
975
  protected prevMonth(): void;
672
976
  protected nextMonth(): void;
673
977
  protected clear(event: Event): void;
674
978
  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>;
979
+ 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; }; "displayFormat": { "alias": "displayFormat"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "hourFormat": { "alias": "hourFormat"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touch": "touch"; }, never, never, true, never>;
676
980
  }
677
981
 
678
982
  /**
@@ -858,7 +1162,9 @@ type KptCardVariant = 'elevated' | 'outlined';
858
1162
  /**
859
1163
  * Karta Koncept UI — powierzchnia z wyniesieniem (elevated) lub obramowaniem (outlined).
860
1164
  * Opcjonalny nagłówek przez `header`; treść przez projekcję. Stopkę wstaw z atrybutem
861
- * `kptCardFooter`.
1165
+ * `kptCardFooter`. Dla bogatych układów (media/profil) ustaw `flush` (body bez paddingu)
1166
+ * i użyj reużywalnych klas: `kpt-card__media`, `__lead`, `__title`, `__subtitle`,
1167
+ * `__section`, `__tags`, `__meta`, `__avatar`, `__actions`.
862
1168
  *
863
1169
  * @example
864
1170
  * <kpt-card header="Ustawienia">
@@ -871,8 +1177,10 @@ declare class KptCard {
871
1177
  readonly variant: _angular_core.InputSignal<KptCardVariant>;
872
1178
  /** Opcjonalny tekst nagłówka. */
873
1179
  readonly header: _angular_core.InputSignal<string>;
1180
+ /** Body bez wewnętrznego paddingu — dla układów zarządzających własnymi sekcjami. */
1181
+ readonly flush: _angular_core.InputSignalWithTransform<boolean, unknown>;
874
1182
  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>;
1183
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptCard, "kpt-card", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "flush": { "alias": "flush"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[kptCardFooter]"], true, never>;
876
1184
  }
877
1185
 
878
1186
  type KptDividerOrientation = 'horizontal' | 'vertical';
@@ -958,8 +1266,10 @@ declare class KptPanel {
958
1266
  readonly header: _angular_core.InputSignal<string>;
959
1267
  readonly toggleable: _angular_core.InputSignalWithTransform<boolean, unknown>;
960
1268
  readonly collapsed: _angular_core.ModelSignal<boolean>;
1269
+ readonly animated: _angular_core.InputSignalWithTransform<boolean, unknown>;
1270
+ readonly animationDuration: _angular_core.InputSignal<number>;
961
1271
  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>;
1272
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptPanel, "kpt-panel", never, { "header": { "alias": "header"; "required": false; "isSignal": true; }; "toggleable": { "alias": "toggleable"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "animated": { "alias": "animated"; "required": false; "isSignal": true; }; "animationDuration": { "alias": "animationDuration"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, ["[kptPanelActions]", "*"], true, never>;
963
1273
  }
964
1274
 
965
1275
  /**
@@ -972,8 +1282,10 @@ declare class KptFieldset {
972
1282
  readonly legend: _angular_core.InputSignal<string>;
973
1283
  readonly toggleable: _angular_core.InputSignalWithTransform<boolean, unknown>;
974
1284
  readonly collapsed: _angular_core.ModelSignal<boolean>;
1285
+ readonly animated: _angular_core.InputSignalWithTransform<boolean, unknown>;
1286
+ readonly animationDuration: _angular_core.InputSignal<number>;
975
1287
  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>;
1288
+ 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; }; "animated": { "alias": "animated"; "required": false; "isSignal": true; }; "animationDuration": { "alias": "animationDuration"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, ["*"], true, never>;
977
1289
  }
978
1290
 
979
1291
  type KptSplitterOrientation = 'horizontal' | 'vertical';
@@ -1127,10 +1439,19 @@ declare class KptTab {
1127
1439
  declare class KptTabs {
1128
1440
  protected readonly tabs: _angular_core.Signal<readonly KptTab[]>;
1129
1441
  readonly activeIndex: _angular_core.ModelSignal<number>;
1442
+ readonly animated: _angular_core.InputSignalWithTransform<boolean, unknown>;
1443
+ readonly animationDuration: _angular_core.InputSignal<number>;
1444
+ private readonly tabBtns;
1445
+ protected readonly inkX: _angular_core.WritableSignal<number>;
1446
+ protected readonly inkW: _angular_core.WritableSignal<number>;
1447
+ protected readonly direction: _angular_core.WritableSignal<number>;
1130
1448
  protected readonly activeTab: _angular_core.Signal<KptTab>;
1449
+ protected readonly activePanels: _angular_core.Signal<KptTab[]>;
1450
+ constructor();
1451
+ protected measureInk(): void;
1131
1452
  protected select(index: number): void;
1132
1453
  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>;
1454
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptTabs, "kpt-tabs", never, { "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; "animated": { "alias": "animated"; "required": false; "isSignal": true; }; "animationDuration": { "alias": "animationDuration"; "required": false; "isSignal": true; }; }, { "activeIndex": "activeIndexChange"; }, ["tabs"], never, true, never>;
1134
1455
  }
1135
1456
 
1136
1457
  /**
@@ -1141,6 +1462,7 @@ declare class KptAccordionPanel {
1141
1462
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1142
1463
  readonly expanded: _angular_core.ModelSignal<boolean>;
1143
1464
  private readonly accordion;
1465
+ protected readonly animMs: _angular_core.Signal<string>;
1144
1466
  protected toggle(): void;
1145
1467
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptAccordionPanel, never>;
1146
1468
  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>;
@@ -1157,11 +1479,13 @@ declare class KptAccordionPanel {
1157
1479
  */
1158
1480
  declare class KptAccordion {
1159
1481
  readonly multi: _angular_core.InputSignalWithTransform<boolean, unknown>;
1482
+ readonly animated: _angular_core.InputSignalWithTransform<boolean, unknown>;
1483
+ readonly animationDuration: _angular_core.InputSignal<number>;
1160
1484
  private readonly panels;
1161
1485
  /** Wywoływane przez panel przy otwarciu — zamyka pozostałe, gdy nie `multi`. */
1162
1486
  onOpen(opened: KptAccordionPanel): void;
1163
1487
  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>;
1488
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptAccordion, "kpt-accordion", never, { "multi": { "alias": "multi"; "required": false; "isSignal": true; }; "animated": { "alias": "animated"; "required": false; "isSignal": true; }; "animationDuration": { "alias": "animationDuration"; "required": false; "isSignal": true; }; }, {}, ["panels"], ["*"], true, never>;
1165
1489
  }
1166
1490
 
1167
1491
  interface KptBreadcrumbItem {
@@ -1206,12 +1530,16 @@ declare class KptStep {
1206
1530
  declare class KptStepper {
1207
1531
  protected readonly steps: _angular_core.Signal<readonly KptStep[]>;
1208
1532
  readonly activeIndex: _angular_core.ModelSignal<number>;
1533
+ readonly animated: _angular_core.InputSignalWithTransform<boolean, unknown>;
1534
+ readonly animationDuration: _angular_core.InputSignal<number>;
1535
+ protected readonly direction: _angular_core.WritableSignal<number>;
1209
1536
  protected readonly activeStep: _angular_core.Signal<KptStep>;
1537
+ protected readonly activePanels: _angular_core.Signal<KptStep[]>;
1210
1538
  goTo(index: number): void;
1211
1539
  next(): void;
1212
1540
  prev(): void;
1213
1541
  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>;
1542
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptStepper, "kpt-stepper", never, { "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; "animated": { "alias": "animated"; "required": false; "isSignal": true; }; "animationDuration": { "alias": "animationDuration"; "required": false; "isSignal": true; }; }, { "activeIndex": "activeIndexChange"; }, ["steps"], never, true, never>;
1215
1543
  }
1216
1544
 
1217
1545
  /**
@@ -1242,6 +1570,23 @@ declare class KptPaginator {
1242
1570
  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
1571
  }
1244
1572
 
1573
+ /** Rodzaj kontrolki filtra w nagłówku kolumny. */
1574
+ type KptColumnFilterType = 'text' | 'number' | 'select' | 'dateRange' | 'numberRange' | 'slider';
1575
+ interface KptColumnFilter {
1576
+ type: KptColumnFilterType;
1577
+ /** Opcje dla `type: 'select'`. */
1578
+ options?: KptOption<unknown>[];
1579
+ /** Wielokrotny wybór dla `type: 'select'`. */
1580
+ multiple?: boolean;
1581
+ /** Placeholder kontrolki. */
1582
+ placeholder?: string;
1583
+ /** Dolna granica dla `type: 'slider'` (domyślnie 0). */
1584
+ min?: number;
1585
+ /** Górna granica dla `type: 'slider'` (domyślnie 100). */
1586
+ max?: number;
1587
+ /** Krok dla `type: 'slider'` (domyślnie 1). */
1588
+ step?: number;
1589
+ }
1245
1590
  interface KptColumn {
1246
1591
  /** Nazwa pola w wierszu. */
1247
1592
  field: string;
@@ -1255,6 +1600,8 @@ interface KptColumn {
1255
1600
  width?: string;
1256
1601
  /** Zamrożenie (sticky) — obsługiwane dla wiodących, sąsiadujących kolumn. */
1257
1602
  frozen?: boolean;
1603
+ /** Filtr kolumny w wierszu nagłówka (input/number/select/zakres dat). */
1604
+ filter?: KptColumnFilter;
1258
1605
  }
1259
1606
  type SortDir = 'asc' | 'desc' | null;
1260
1607
  /** Stan przekazywany w trybie lazy przy każdej zmianie sortowania/filtra/strony. */
@@ -1264,6 +1611,8 @@ interface KptTableLazyState {
1264
1611
  sortField: string | null;
1265
1612
  sortDir: SortDir;
1266
1613
  filter: string;
1614
+ /** Wartości filtrów per kolumna (pole → wartość kontrolki). */
1615
+ columnFilters: Record<string, unknown>;
1267
1616
  }
1268
1617
  /**
1269
1618
  * Flagowa tabela danych Koncept UI: kolumny konfiguracją, sortowanie,
@@ -1282,6 +1631,8 @@ declare class KptDataTable<T = Record<string, unknown>> {
1282
1631
  readonly columns: _angular_core.InputSignal<readonly KptColumn[]>;
1283
1632
  readonly data: _angular_core.InputSignal<readonly T[]>;
1284
1633
  readonly filterable: _angular_core.InputSignalWithTransform<boolean, unknown>;
1634
+ /** Pozycja wiersza filtrów kolumn względem etykiet: nad ('top') lub pod ('bottom'). */
1635
+ readonly filterRowPosition: _angular_core.InputSignal<"bottom" | "top">;
1285
1636
  /** Rozmiar strony; 0 wyłącza paginację. */
1286
1637
  readonly pageSize: _angular_core.InputSignal<number>;
1287
1638
  readonly pageSizeOptions: _angular_core.InputSignal<number[]>;
@@ -1306,7 +1657,13 @@ declare class KptDataTable<T = Record<string, unknown>> {
1306
1657
  readonly lazy: _angular_core.InputSignalWithTransform<boolean, unknown>;
1307
1658
  /** Łączna liczba rekordów (wymagane w trybie lazy dla paginacji). */
1308
1659
  readonly totalRecords: _angular_core.InputSignal<number | null>;
1660
+ /** Rozwijane wiersze: dodaje kolumnę z przełącznikiem i renderuje szablon `kptRowDetail`. */
1661
+ readonly expandable: _angular_core.InputSignalWithTransform<boolean, unknown>;
1662
+ /** Zezwala na rozwinięcie wielu wierszy naraz (domyślnie tak). */
1663
+ readonly multiExpand: _angular_core.InputSignalWithTransform<boolean, unknown>;
1309
1664
  readonly selection: _angular_core.ModelSignal<T[]>;
1665
+ /** Rozwinięte wiersze (dwukierunkowo). */
1666
+ readonly expandedRows: _angular_core.ModelSignal<T[]>;
1310
1667
  readonly rowClick: _angular_core.OutputEmitterRef<T>;
1311
1668
  /** Emitowane w trybie lazy przy zmianie sortowania/filtra/strony. */
1312
1669
  readonly lazyLoad: _angular_core.OutputEmitterRef<KptTableLazyState>;
@@ -1316,6 +1673,8 @@ declare class KptDataTable<T = Record<string, unknown>> {
1316
1673
  protected readonly scrollTop: _angular_core.WritableSignal<number>;
1317
1674
  protected readonly viewportHeight: _angular_core.WritableSignal<number>;
1318
1675
  private readonly buffer;
1676
+ private readonly theadEl;
1677
+ protected readonly theadOffset: _angular_core.WritableSignal<number>;
1319
1678
  constructor();
1320
1679
  protected onScroll(event: Event): void;
1321
1680
  protected readonly virtualStart: _angular_core.Signal<number>;
@@ -1324,19 +1683,45 @@ declare class KptDataTable<T = Record<string, unknown>> {
1324
1683
  protected readonly topPad: _angular_core.Signal<number>;
1325
1684
  protected readonly bottomPad: _angular_core.Signal<number>;
1326
1685
  protected readonly dragIndex: _angular_core.WritableSignal<number | null>;
1686
+ /** Kolumna przeciągalna tylko gdy `reorderable` i nie jest zamrożona (frozen musi zostać wiodąca). */
1687
+ protected isColDraggable(col: KptColumn): boolean;
1688
+ /** Liczba wiodących kolumn zamrożonych — poza nie wolno upuszczać ani ich przesuwać. */
1689
+ private frozenLeadCount;
1327
1690
  protected onColDragStart(index: number, event: DragEvent): void;
1328
- protected onColDragOver(event: DragEvent): void;
1691
+ protected onColDragOver(index: number, event: DragEvent): void;
1329
1692
  protected onColDrop(index: number, event: DragEvent): void;
1330
1693
  protected onColDragEnd(): void;
1331
1694
  exportCsv(): void;
1332
1695
  private readonly cellDefs;
1333
1696
  private readonly cellMap;
1334
1697
  protected cellTemplate(field: string): TemplateRef<unknown> | null;
1698
+ private readonly rowDetailDef;
1699
+ protected readonly rowDetailTpl: _angular_core.Signal<TemplateRef<any> | null>;
1700
+ /** Kolumna z przełącznikiem widoczna, gdy włączono `expandable` i podano szablon `kptRowDetail`. */
1701
+ protected readonly hasRowDetail: _angular_core.Signal<boolean>;
1702
+ protected isExpanded(row: T): boolean;
1703
+ protected toggleExpand(row: T): void;
1335
1704
  protected readonly filterText: _angular_core.WritableSignal<string>;
1705
+ protected readonly columnFilters: _angular_core.WritableSignal<Record<string, unknown>>;
1336
1706
  protected readonly sortField: _angular_core.WritableSignal<string | null>;
1337
1707
  protected readonly sortDir: _angular_core.WritableSignal<SortDir>;
1338
1708
  protected readonly pageIndex: _angular_core.WritableSignal<number>;
1339
1709
  protected readonly pageSizeState: _angular_core.WritableSignal<number>;
1710
+ protected readonly hasColumnFilters: _angular_core.Signal<boolean>;
1711
+ protected setColumnFilter(field: string, value: unknown): void;
1712
+ /** Input liczbowy — pozostaw tylko cyfry i zsynchronizuj DOM z wartością. */
1713
+ protected onNumberFilter(field: string, event: Event): void;
1714
+ /** Bieżąca wartość filtra zakresu liczbowego (min/max) dla kolumny. */
1715
+ protected rangeVal(field: string): {
1716
+ min: string;
1717
+ max: string;
1718
+ };
1719
+ /** Aktualizuj jedną granicę zakresu (min/max), pozostawiając tylko cyfry. */
1720
+ protected setRangeFilter(field: string, bound: 'min' | 'max', event: Event): void;
1721
+ /** Bieżąca para `[lo, hi]` filtra suwakowego dla kolumny (domyślnie pełen zakres). */
1722
+ protected sliderVal(col: KptColumn): [number, number];
1723
+ private static toIso;
1724
+ private matchesColumnFilters;
1340
1725
  private readonly filtered;
1341
1726
  private readonly sorted;
1342
1727
  protected readonly filteredCount: _angular_core.Signal<number>;
@@ -1345,8 +1730,14 @@ declare class KptDataTable<T = Record<string, unknown>> {
1345
1730
  protected readonly displayCount: _angular_core.Signal<number>;
1346
1731
  private parseWidthPx;
1347
1732
  /** Mapa pole → przesunięcie left (px) dla wiodących zamrożonych kolumn. */
1733
+ /** Suma szerokości wiodących kolumn systemowych (rozwijanie + zaznaczanie) w px. */
1734
+ private readonly leadingStickyWidth;
1348
1735
  private readonly frozenOffsets;
1349
1736
  protected readonly hasFrozen: _angular_core.Signal<boolean>;
1737
+ /** Sticky-left kolumny rozwijania (px) — 0, gdy tabela ma kolumny zamrożone. */
1738
+ protected readonly expanderStickyLeft: _angular_core.Signal<0 | null>;
1739
+ /** Sticky-left kolumny zaznaczania (px) — za kolumną rozwijania, jeśli obecna. */
1740
+ protected readonly checkboxStickyLeft: _angular_core.Signal<number | null>;
1350
1741
  protected frozenLeft(field: string): number | null;
1351
1742
  protected isFrozen(field: string): boolean;
1352
1743
  protected toggleSort(col: KptColumn): void;
@@ -1357,12 +1748,13 @@ declare class KptDataTable<T = Record<string, unknown>> {
1357
1748
  protected isSelected(row: T): boolean;
1358
1749
  protected toggleRow(row: T): void;
1359
1750
  protected readonly pageAllSelected: _angular_core.Signal<boolean>;
1751
+ protected readonly pageSomeSelected: _angular_core.Signal<boolean>;
1360
1752
  protected toggleAllOnPage(): void;
1361
1753
  protected onRowClick(row: T): void;
1362
1754
  protected getValue(row: T, field: string): unknown;
1363
1755
  protected trackRow: (row: T) => unknown;
1364
1756
  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>;
1757
+ 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; }; "filterRowPosition": { "alias": "filterRowPosition"; "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; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "multiExpand": { "alias": "multiExpand"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "expandedRows": { "alias": "expandedRows"; "required": false; "isSignal": true; }; }, { "selection": "selectionChange"; "expandedRows": "expandedRowsChange"; "rowClick": "rowClick"; "lazyLoad": "lazyLoad"; }, ["cellDefs", "rowDetailDef"], never, true, never>;
1366
1758
  }
1367
1759
 
1368
1760
  /**
@@ -1384,6 +1776,23 @@ declare class KptCellDef {
1384
1776
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KptCellDef, "ng-template[kptCell]", never, { "kptCell": { "alias": "kptCell"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
1385
1777
  }
1386
1778
 
1779
+ /**
1780
+ * Szablon rozwijanego wiersza (row detail) dla `kpt-data-table`. Renderowany pod
1781
+ * wierszem po rozwinięciu. Kontekst: `$implicit` = wiersz. Wymaga `expandable`.
1782
+ *
1783
+ * @example
1784
+ * <kpt-data-table [columns]="cols" [data]="rows" expandable>
1785
+ * <ng-template kptRowDetail let-row>
1786
+ * <div class="szczegoly">{{ row.opis }}</div>
1787
+ * </ng-template>
1788
+ * </kpt-data-table>
1789
+ */
1790
+ declare class KptRowDetailDef {
1791
+ readonly template: TemplateRef<any>;
1792
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptRowDetailDef, never>;
1793
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KptRowDetailDef, "ng-template[kptRowDetail]", never, {}, {}, never, never, true, never>;
1794
+ }
1795
+
1387
1796
  interface KptTreeNode<T = unknown> {
1388
1797
  label: string;
1389
1798
  value?: T;
@@ -1737,6 +2146,9 @@ declare class KptContextMenu<T = unknown> {
1737
2146
 
1738
2147
  /**
1739
2148
  * Pozioma belka menu z rozwijanymi pod-menu. Pozycje bez `items` działają jak akcje/linki.
2149
+ * Pod-menu renderowane przez CDK Overlay (doczepiane do `body`), więc nie są przycinane
2150
+ * przez rodzica z `overflow: hidden`. Wymaga stylów overlay CDK:
2151
+ * `import '@angular/cdk/overlay-prebuilt.css';`
1740
2152
  *
1741
2153
  * @example
1742
2154
  * <kpt-menubar [items]="items" (select)="onSelect($event)" />
@@ -1745,6 +2157,7 @@ declare class KptMenubar<T = unknown> {
1745
2157
  readonly items: _angular_core.InputSignal<KptMenuItem<T>[]>;
1746
2158
  readonly select: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
1747
2159
  protected readonly openIndex: _angular_core.WritableSignal<number | null>;
2160
+ protected readonly positions: ConnectedPosition[];
1748
2161
  protected toggle(i: number, item: KptMenuItem<T>): void;
1749
2162
  protected pick(item: KptMenuItem<T>): void;
1750
2163
  protected closeAll(): void;
@@ -1755,6 +2168,9 @@ declare class KptMenubar<T = unknown> {
1755
2168
  /**
1756
2169
  * Mega-menu — pozioma belka z szerokim, wielokolumnowym panelem.
1757
2170
  * Struktura: pozycja górna → `items` (kolumny) → każda kolumna `items` (odnośniki).
2171
+ * Panel renderowany przez CDK Overlay (doczepiony do `body`), więc nie jest przycinany
2172
+ * przez rodzica z `overflow: hidden`. Wymaga stylów overlay CDK:
2173
+ * `import '@angular/cdk/overlay-prebuilt.css';`
1758
2174
  *
1759
2175
  * @example
1760
2176
  * <kpt-megamenu [items]="items" (select)="onSelect($event)" />
@@ -1763,6 +2179,7 @@ declare class KptMegamenu<T = unknown> {
1763
2179
  readonly items: _angular_core.InputSignal<KptMenuItem<T>[]>;
1764
2180
  readonly select: _angular_core.OutputEmitterRef<KptMenuItem<T>>;
1765
2181
  protected readonly openIndex: _angular_core.WritableSignal<number | null>;
2182
+ protected readonly positions: ConnectedPosition[];
1766
2183
  protected activeColumns(): KptMenuItem<T>[];
1767
2184
  protected toggle(i: number): void;
1768
2185
  protected pick(link: KptMenuItem<T>): void;
@@ -1854,5 +2271,5 @@ declare class KptSpeedDial<T = unknown> {
1854
2271
  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
2272
  }
1856
2273
 
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 };
2274
+ export { KptAccordion, KptAccordionPanel, KptAlert, KptAppShell, KptAutocomplete, KptAvatar, KptAvatarGroup, KptBadge, KptBottomSheet, KptBreadcrumb, KptButton, KptButtonGroup, KptCard, KptCarousel, KptCellDef, KptCheckbox, KptChip, KptChipsInput, KptClock, KptColorPicker, KptConfirmContainer, KptConfirmService, KptContextMenu, KptDataTable, KptDataView, KptDateRange, KptDatepicker, KptDialog, KptDivider, KptDrawer, KptEmpty, KptFab, KptFieldset, KptFileUpload, KptFormField, KptGalleria, KptIcon, KptIconButton, KptIconRegistry, KptImage, KptInput, KptInputMask, KptInputNumber, KptInputOtp, KptKnob, KptListbox, KptMegamenu, KptMenu, KptMenubar, KptMeterGroup, KptOrderList, KptPaginator, KptPanel, KptPassword, KptPickList, KptPopover, KptProgress, KptRadioGroup, KptRating, KptRichText, KptRowDetailDef, KptScrollTop, KptSelect, KptSidenav, KptSkeleton, KptSlider, KptSpeedDial, KptSpinner, KptSplitButton, KptSplitter, KptStep, KptStepper, KptSwitch, KptSwitchGroup, KptTab, KptTabs, KptTextarea, KptTimeline, KptToastContainer, KptToastService, KptToolbar, KptTooltip, KptTree };
2275
+ export type { KptAlertVariant, KptAvatarItem, KptAvatarShape, KptAvatarSize, KptBadgeVariant, KptBreadcrumbItem, KptButtonSize, KptButtonVariant, KptCardVariant, KptChipVariant, KptColumn, KptConfirmOptions, KptConfirmRequest, KptDateRangeValue, KptDividerOrientation, KptDrawerPosition, KptGalleriaItem, KptIconName, KptInputType, KptMenuItem, KptMeterItem, KptOption, KptProgressVariant, KptRichTool, KptRichToolbar, KptSidenavMode, KptSkeletonVariant, KptSliderValue, KptSpeedDialDirection, KptSplitterOrientation, KptTableLazyState, KptTimelineItem, KptToast, KptToastOptions, KptTooltipPosition, KptTreeNode };