@konce-pt/angular 0.6.1 → 0.7.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/CHANGELOG.md +384 -0
  2. package/README.md +38 -19
  3. package/fesm2022/konce-pt-angular-charts.mjs +1409 -0
  4. package/fesm2022/konce-pt-angular-charts.mjs.map +1 -0
  5. package/fesm2022/konce-pt-angular-grid.mjs +232 -0
  6. package/{dist/fesm2022 → fesm2022}/konce-pt-angular-grid.mjs.map +1 -1
  7. package/fesm2022/konce-pt-angular-map.mjs +4568 -0
  8. package/fesm2022/konce-pt-angular-map.mjs.map +1 -0
  9. package/fesm2022/konce-pt-angular-roadmap.mjs +1919 -0
  10. package/fesm2022/konce-pt-angular-roadmap.mjs.map +1 -0
  11. package/fesm2022/konce-pt-angular.mjs +12307 -0
  12. package/fesm2022/konce-pt-angular.mjs.map +1 -0
  13. package/map/src/lib/llms.txt +741 -0
  14. package/package.json +44 -54
  15. package/roadmap/src/lib/llms.txt +112 -0
  16. package/src/lib/app-shell/llms.txt +89 -0
  17. package/src/lib/breakpoint/llms.txt +45 -0
  18. package/{dist/src → src}/lib/datepicker/llms.txt +3 -0
  19. package/src/lib/dialog/llms.txt +68 -0
  20. package/{dist/src → src}/lib/form-field/llms.txt +24 -1
  21. package/{dist/src → src}/lib/icon/llms.txt +2 -1
  22. package/{dist/src → src}/lib/input/llms.txt +14 -4
  23. package/src/lib/input-number/llms.txt +61 -0
  24. package/{dist/src → src}/lib/select/llms.txt +9 -0
  25. package/src/lib/sidenav/llms.txt +29 -0
  26. package/src/lib/toolbar/llms.txt +31 -0
  27. package/src/lib/tooltip/llms.txt +33 -0
  28. package/{dist/types → types}/konce-pt-angular-charts.d.ts +1 -0
  29. package/types/konce-pt-angular-charts.d.ts.map +1 -0
  30. package/{dist/types → types}/konce-pt-angular-grid.d.ts +1 -0
  31. package/types/konce-pt-angular-grid.d.ts.map +1 -0
  32. package/{dist/types → types}/konce-pt-angular-icons.d.ts +1 -0
  33. package/types/konce-pt-angular-icons.d.ts.map +1 -0
  34. package/types/konce-pt-angular-map.d.ts +1585 -0
  35. package/types/konce-pt-angular-map.d.ts.map +1 -0
  36. package/types/konce-pt-angular-roadmap.d.ts +649 -0
  37. package/types/konce-pt-angular-roadmap.d.ts.map +1 -0
  38. package/{dist/types → types}/konce-pt-angular.d.ts +373 -23
  39. package/types/konce-pt-angular.d.ts.map +1 -0
  40. package/dist/LICENSE +0 -21
  41. package/dist/README.md +0 -316
  42. package/dist/fesm2022/konce-pt-angular-charts.mjs +0 -957
  43. package/dist/fesm2022/konce-pt-angular-charts.mjs.map +0 -1
  44. package/dist/fesm2022/konce-pt-angular-grid.mjs +0 -218
  45. package/dist/fesm2022/konce-pt-angular.mjs +0 -8462
  46. package/dist/fesm2022/konce-pt-angular.mjs.map +0 -1
  47. package/dist/package.json +0 -79
  48. package/dist/src/lib/app-shell/llms.txt +0 -29
  49. package/dist/src/lib/dialog/llms.txt +0 -27
  50. package/dist/src/lib/input-number/llms.txt +0 -17
  51. package/dist/src/lib/sidenav/llms.txt +0 -20
  52. package/dist/src/lib/toolbar/llms.txt +0 -23
  53. package/dist/src/lib/tooltip/llms.txt +0 -19
  54. /package/{dist/charts → charts}/src/lib/llms.txt +0 -0
  55. /package/{dist/fesm2022 → fesm2022}/konce-pt-angular-icons.mjs +0 -0
  56. /package/{dist/fesm2022 → fesm2022}/konce-pt-angular-icons.mjs.map +0 -0
  57. /package/{dist/grid → grid}/src/lib/llms.txt +0 -0
  58. /package/{dist/src → src}/lib/accordion/llms.txt +0 -0
  59. /package/{dist/src → src}/lib/alert/llms.txt +0 -0
  60. /package/{dist/src → src}/lib/autocomplete/llms.txt +0 -0
  61. /package/{dist/src → src}/lib/avatar/llms.txt +0 -0
  62. /package/{dist/src → src}/lib/avatar-group/llms.txt +0 -0
  63. /package/{dist/src → src}/lib/badge/llms.txt +0 -0
  64. /package/{dist/src → src}/lib/bottom-sheet/llms.txt +0 -0
  65. /package/{dist/src → src}/lib/breadcrumb/llms.txt +0 -0
  66. /package/{dist/src → src}/lib/button/llms.txt +0 -0
  67. /package/{dist/src → src}/lib/button-group/llms.txt +0 -0
  68. /package/{dist/src → src}/lib/card/llms.txt +0 -0
  69. /package/{dist/src → src}/lib/carousel/llms.txt +0 -0
  70. /package/{dist/src → src}/lib/checkbox/llms.txt +0 -0
  71. /package/{dist/src → src}/lib/chip/llms.txt +0 -0
  72. /package/{dist/src → src}/lib/chips-input/llms.txt +0 -0
  73. /package/{dist/src → src}/lib/color-picker/llms.txt +0 -0
  74. /package/{dist/src → src}/lib/confirm/llms.txt +0 -0
  75. /package/{dist/src → src}/lib/context-menu/llms.txt +0 -0
  76. /package/{dist/src → src}/lib/data-table/llms.txt +0 -0
  77. /package/{dist/src → src}/lib/data-view/llms.txt +0 -0
  78. /package/{dist/src → src}/lib/date-range/llms.txt +0 -0
  79. /package/{dist/src → src}/lib/divider/llms.txt +0 -0
  80. /package/{dist/src → src}/lib/drawer/llms.txt +0 -0
  81. /package/{dist/src → src}/lib/empty/llms.txt +0 -0
  82. /package/{dist/src → src}/lib/fab/llms.txt +0 -0
  83. /package/{dist/src → src}/lib/fieldset/llms.txt +0 -0
  84. /package/{dist/src → src}/lib/file-upload/llms.txt +0 -0
  85. /package/{dist/src → src}/lib/galleria/llms.txt +0 -0
  86. /package/{dist/src → src}/lib/i18n/llms.txt +0 -0
  87. /package/{dist/src → src}/lib/icon-button/llms.txt +0 -0
  88. /package/{dist/src → src}/lib/image/llms.txt +0 -0
  89. /package/{dist/src → src}/lib/input-mask/llms.txt +0 -0
  90. /package/{dist/src → src}/lib/input-otp/llms.txt +0 -0
  91. /package/{dist/src → src}/lib/knob/llms.txt +0 -0
  92. /package/{dist/src → src}/lib/listbox/llms.txt +0 -0
  93. /package/{dist/src → src}/lib/megamenu/llms.txt +0 -0
  94. /package/{dist/src → src}/lib/menu/llms.txt +0 -0
  95. /package/{dist/src → src}/lib/menubar/llms.txt +0 -0
  96. /package/{dist/src → src}/lib/meter-group/llms.txt +0 -0
  97. /package/{dist/src → src}/lib/order-list/llms.txt +0 -0
  98. /package/{dist/src → src}/lib/paginator/llms.txt +0 -0
  99. /package/{dist/src → src}/lib/panel/llms.txt +0 -0
  100. /package/{dist/src → src}/lib/password/llms.txt +0 -0
  101. /package/{dist/src → src}/lib/pick-list/llms.txt +0 -0
  102. /package/{dist/src → src}/lib/popover/llms.txt +0 -0
  103. /package/{dist/src → src}/lib/progress/llms.txt +0 -0
  104. /package/{dist/src → src}/lib/radio-group/llms.txt +0 -0
  105. /package/{dist/src → src}/lib/rating/llms.txt +0 -0
  106. /package/{dist/src → src}/lib/rich-text/llms.txt +0 -0
  107. /package/{dist/src → src}/lib/scroll-top/llms.txt +0 -0
  108. /package/{dist/src → src}/lib/skeleton/llms.txt +0 -0
  109. /package/{dist/src → src}/lib/slider/llms.txt +0 -0
  110. /package/{dist/src → src}/lib/speed-dial/llms.txt +0 -0
  111. /package/{dist/src → src}/lib/spinner/llms.txt +0 -0
  112. /package/{dist/src → src}/lib/split-button/llms.txt +0 -0
  113. /package/{dist/src → src}/lib/splitter/llms.txt +0 -0
  114. /package/{dist/src → src}/lib/stepper/llms.txt +0 -0
  115. /package/{dist/src → src}/lib/switch/llms.txt +0 -0
  116. /package/{dist/src → src}/lib/switch-group/llms.txt +0 -0
  117. /package/{dist/src → src}/lib/tabs/llms.txt +0 -0
  118. /package/{dist/src → src}/lib/textarea/llms.txt +0 -0
  119. /package/{dist/src → src}/lib/timeline/llms.txt +0 -0
  120. /package/{dist/src → src}/lib/toast/llms.txt +0 -0
  121. /package/{dist/src → src}/lib/tree/llms.txt +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"konce-pt-angular.mjs","sources":["../../src/lib/button/button.component.ts","../../src/lib/button/button.component.html","../../src/lib/icon-button/icon-button.component.ts","../../src/lib/button-group/button-group.component.ts","../../src/lib/fab/fab.component.ts","../../src/lib/i18n/i18n.token.ts","../../src/lib/i18n/messages.ts","../../src/lib/i18n/i18n.service.ts","../../src/lib/icon/icons.ts","../../src/lib/icon/icon-registry.ts","../../src/lib/icon/icon.component.ts","../../src/lib/split-button/split-button.component.ts","../../src/lib/i18n/i18n.provider.ts","../../src/lib/badge/badge.component.ts","../../src/lib/chip/chip.component.ts","../../src/lib/avatar/avatar.component.ts","../../src/lib/spinner/spinner.component.ts","../../src/lib/progress/progress.component.ts","../../src/lib/skeleton/skeleton.component.ts","../../src/lib/form-field/form-field.component.ts","../../src/lib/form-field/form-field.component.html","../../src/lib/input/input.component.ts","../../src/lib/input/input.component.html","../../src/lib/checkbox/checkbox.component.ts","../../src/lib/switch/switch.component.ts","../../src/lib/switch-group/switch-group.component.ts","../../src/lib/radio-group/radio-group.component.ts","../../src/lib/select/select.component.ts","../../src/lib/select/select.component.html","../../src/lib/i18n/intl.ts","../../src/lib/datepicker/clock.component.ts","../../src/lib/datepicker/datepicker.component.ts","../../src/lib/datepicker/datepicker.component.html","../../src/lib/textarea/textarea.component.ts","../../src/lib/tooltip/tooltip.directive.ts","../../src/lib/rich-text/rich-text.component.ts","../../src/lib/rich-text/rich-text.component.html","../../src/lib/slider/slider.component.ts","../../src/lib/rating/rating.component.ts","../../src/lib/file-upload/file-upload.component.ts","../../src/lib/color-picker/color-picker.component.ts","../../src/lib/date-range/date-range.component.ts","../../src/lib/date-range/date-range.component.html","../../src/lib/input-number/input-number.component.ts","../../src/lib/password/password.component.ts","../../src/lib/input-otp/input-otp.component.ts","../../src/lib/chips-input/chips-input.component.ts","../../src/lib/input-mask/input-mask.component.ts","../../src/lib/listbox/listbox.component.ts","../../src/lib/knob/knob.component.ts","../../src/lib/card/card.component.ts","../../src/lib/card/card.component.html","../../src/lib/divider/divider.component.ts","../../src/lib/toolbar/toolbar.component.ts","../../src/lib/sidenav/sidenav.component.ts","../../src/lib/app-shell/app-shell.component.ts","../../src/lib/app-shell/app-shell.component.html","../../src/lib/panel/panel.component.ts","../../src/lib/fieldset/fieldset.component.ts","../../src/lib/splitter/splitter.component.ts","../../src/lib/scroll-top/scroll-top.component.ts","../../src/lib/image/image.component.ts","../../src/lib/meter-group/meter-group.component.ts","../../src/lib/avatar-group/avatar-group.component.ts","../../src/lib/empty/empty.component.ts","../../src/lib/tabs/tab.component.ts","../../src/lib/tabs/tabs.component.ts","../../src/lib/accordion/accordion-panel.component.ts","../../src/lib/accordion/accordion.component.ts","../../src/lib/breadcrumb/breadcrumb.component.ts","../../src/lib/stepper/step.component.ts","../../src/lib/stepper/stepper.component.ts","../../src/lib/paginator/paginator.component.ts","../../src/lib/paginator/paginator.component.html","../../src/lib/data-table/cell.directive.ts","../../src/lib/data-table/row-detail.directive.ts","../../src/lib/data-table/data-table.component.ts","../../src/lib/data-table/data-table.component.html","../../src/lib/tree/tree.component.ts","../../src/lib/timeline/timeline.component.ts","../../src/lib/carousel/carousel.component.ts","../../src/lib/data-view/data-view.component.ts","../../src/lib/pick-list/pick-list.component.ts","../../src/lib/order-list/order-list.component.ts","../../src/lib/galleria/galleria.component.ts","../../src/lib/alert/alert.component.ts","../../src/lib/dialog/dialog.component.ts","../../src/lib/toast/toast.service.ts","../../src/lib/toast/toast-container.component.ts","../../src/lib/menu/menu.component.ts","../../src/lib/popover/popover.component.ts","../../src/lib/autocomplete/autocomplete.component.ts","../../src/lib/drawer/drawer.component.ts","../../src/lib/context-menu/context-menu.component.ts","../../src/lib/menubar/menubar.component.ts","../../src/lib/megamenu/megamenu.component.ts","../../src/lib/confirm/confirm.service.ts","../../src/lib/confirm/confirm-container.component.ts","../../src/lib/bottom-sheet/bottom-sheet.component.ts","../../src/lib/speed-dial/speed-dial.component.ts","../../src/public-api.ts","../../src/konce-pt-angular.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n input,\n} from '@angular/core';\n\nexport type KptButtonVariant = 'filled' | 'tonal' | 'outline' | 'text' | 'danger';\nexport type KptButtonSize = 'sm' | 'md' | 'lg';\n\n/**\n * Przycisk Koncept UI. Renderuje natywny `<button>` (zachowana semantyka i submit\n * formularza). Wygląd sterowany tokenami `--kpt-button-*`.\n *\n * @example\n * <kpt-button variant=\"filled\" (click)=\"save()\">Zapisz</kpt-button>\n * <kpt-button variant=\"outline\" size=\"sm\" [disabled]=\"busy()\">Anuluj</kpt-button>\n */\n@Component({\n selector: 'kpt-button',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n templateUrl: './button.component.html',\n styleUrl: './button.component.scss',\n host: {\n class: 'kpt-button-host',\n '[class.kpt-button-host--full]': 'fullWidth()',\n },\n})\nexport class KptButton {\n /** Wariant wizualny. */\n readonly variant = input<KptButtonVariant>('filled');\n /** Rozmiar. */\n readonly size = input<KptButtonSize>('md');\n /** Typ natywnego przycisku (istotne w formularzach). */\n readonly type = input<'button' | 'submit' | 'reset'>('button');\n /** Wyłączony. */\n readonly disabled = input(false, { transform: booleanAttribute });\n /** Stan ładowania — pokazuje spinner i blokuje interakcję. */\n readonly loading = input(false, { transform: booleanAttribute });\n /** Rozciągnięcie na całą szerokość kontenera. */\n readonly fullWidth = input(false, { transform: booleanAttribute });\n\n protected readonly isDisabled = computed(() => this.disabled() || this.loading());\n}\n","<button\n class=\"kpt-button\"\n [type]=\"type()\"\n [attr.data-variant]=\"variant()\"\n [attr.data-size]=\"size()\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n [class.kpt-button--loading]=\"loading()\"\n [disabled]=\"isDisabled()\"\n>\n @if (loading()) {\n <span class=\"kpt-button__spinner\" aria-hidden=\"true\"></span>\n }\n <span class=\"kpt-button__content\"><ng-content /></span>\n</button>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, computed, input } from '@angular/core';\nimport type { KptButtonVariant, KptButtonSize } from '../button/button.component';\n\n/**\n * Przycisk ikonowy (tylko ikona). Wymaga `ariaLabel` dla dostępności.\n *\n * @example\n * <kpt-icon-button ariaLabel=\"Ustawienia\"><kpt-icon name=\"menu\" /></kpt-icon-button>\n * <kpt-icon-button variant=\"filled\" shape=\"square\" ariaLabel=\"Usuń\"><kpt-icon name=\"x\" /></kpt-icon-button>\n */\n@Component({\n selector: 'kpt-icon-button',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n <button\n class=\"kpt-icon-button\"\n [type]=\"type()\"\n [attr.data-variant]=\"variant()\"\n [attr.data-size]=\"size()\"\n [attr.data-shape]=\"shape()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n >\n @if (loading()) {\n <span class=\"kpt-icon-button__spinner\" aria-hidden=\"true\"></span>\n } @else {\n <ng-content />\n }\n </button>\n `,\n styleUrl: './icon-button.component.scss',\n host: { class: 'kpt-icon-button-host' },\n})\nexport class KptIconButton {\n readonly variant = input<KptButtonVariant>('text');\n readonly size = input<KptButtonSize>('md');\n readonly shape = input<'round' | 'square'>('round');\n readonly type = input<'button' | 'submit' | 'reset'>('button');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n /** Etykieta dostępności (wymagana — przycisk nie ma tekstu). */\n readonly ariaLabel = input.required<string>();\n\n protected readonly isDisabled = computed(() => this.disabled() || this.loading());\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n input,\n model,\n output,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport type { KptOption } from '../shared/types';\n\n/**\n * Segmentowana grupa przycisków (toggle) — pojedynczy wybór z opcji. Signal Forms.\n *\n * @example\n * <kpt-button-group [(value)]=\"view\" [options]=\"[{label:'Lista',value:'list'},{label:'Siatka',value:'grid'}]\" />\n * <kpt-button-group [formField]=\"f.period\" [options]=\"periods\" />\n */\n@Component({\n selector: 'kpt-button-group',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n <div class=\"kpt-button-group\" role=\"group\" [attr.data-size]=\"size()\">\n @for (opt of options(); track opt.value) {\n <button\n type=\"button\"\n class=\"kpt-button-group__item\"\n [class.is-active]=\"opt.value === value()\"\n [disabled]=\"disabled() || opt.disabled\"\n [attr.aria-pressed]=\"opt.value === value()\"\n (click)=\"select(opt)\"\n >{{ opt.label }}</button>\n }\n </div>\n `,\n styleUrl: './button-group.component.scss',\n host: { class: 'kpt-button-group-host' },\n})\nexport class KptButtonGroup<T = unknown> implements FormValueControl<T> {\n readonly options = input<KptOption<T>[]>([]);\n readonly value = model<T>(undefined as T);\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n\n protected select(opt: KptOption<T>): void {\n if (opt.disabled || this.disabled()) return;\n this.value.set(opt.value);\n this.touch.emit();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, input } from '@angular/core';\n\n/**\n * Floating Action Button (FAB) — okrągły, wyniesiony przycisk akcji. Wariant `extended` = pigułka z tekstem.\n *\n * @example\n * <kpt-fab ariaLabel=\"Dodaj\"><kpt-icon name=\"plus\" /></kpt-fab>\n * <kpt-fab extended><kpt-icon name=\"plus\" /> Nowy</kpt-fab>\n */\n@Component({\n selector: 'kpt-fab',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n <button\n class=\"kpt-fab\"\n [type]=\"type()\"\n [attr.data-variant]=\"variant()\"\n [attr.data-size]=\"size()\"\n [class.kpt-fab--extended]=\"extended()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"extended() ? null : ariaLabel()\"\n ><ng-content /></button>\n `,\n styleUrl: './fab.component.scss',\n host: { class: 'kpt-fab-host' },\n})\nexport class KptFab {\n readonly variant = input<'filled' | 'tonal'>('filled');\n readonly size = input<'md' | 'mini'>('md');\n readonly extended = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly type = input<'button' | 'submit' | 'reset'>('button');\n /** Wymagane dla wariantu okrągłego (bez tekstu). */\n readonly ariaLabel = input('');\n}\n","import { InjectionToken } from '@angular/core';\nimport type { KptLocale, KptMessages } from './messages';\n\n/** Głęboko-opcjonalna wersja typu — dla nadpisań/częściowych słowników. */\nexport type DeepPartial<T> = {\n [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K];\n};\n\n/** Konfiguracja i18n przekazywana do `provideKptI18n`. */\nexport interface KptI18nConfig {\n /** Język początkowy (domyślnie 'en'). */\n locale?: KptLocale;\n /**\n * Słowniki do zarejestrowania lub nadpisania, kluczowane kodem języka.\n * Może dodać nowy język (`{ de: {...} }`) lub nadpisać istniejący\n * (`{ en: { paginator: { rowsPerPage: 'Rows:' } } }`). Deep-merge z bazą EN/PL.\n */\n messages?: Record<string, DeepPartial<KptMessages>>;\n}\n\n/** Token konfiguracji i18n. Konsumowany przez `KptI18n`. */\nexport const KPT_I18N_CONFIG = new InjectionToken<KptI18nConfig>('KPT_I18N_CONFIG');\n","/*\n * Kontrakt tłumaczeń Koncept UI + słowniki bazowe (EN, PL).\n *\n * Plik jest celowo wolny od zależności Angulara — to czysty TypeScript/JSON.\n * Dzięki temu ten sam kontrakt (`KptMessages`) i te same słowniki przenoszą się\n * 1:1 do przyszłego portu React (Context + hook zamiast DI).\n *\n * Autor nowego języka wypełnia strukturę `KptMessages` (np. `de.json`) i podaje\n * ją przez `provideKptI18n({ locale: 'de', messages: { de } })`. Brakujące klucze\n * spadają na fallback EN.\n */\n\n/** Kod języka. Otwarty string — EN/PL mają podpowiedzi, ale dozwolony dowolny. */\nexport type KptLocale = 'en' | 'pl' | (string & {});\n\n/** Pełny słownik etykiet UI używanych przez komponenty biblioteki. */\nexport interface KptMessages {\n /** Etykiety współdzielone przez wiele komponentów (przyciski ikonowe itp.). */\n common: {\n close: string;\n remove: string;\n previous: string;\n next: string;\n clear: string;\n done: string;\n all: string;\n };\n paginator: {\n rowsPerPage: string;\n /** Interpolacja: {start}, {end}, {total}. */\n range: string;\n prevPage: string;\n nextPage: string;\n };\n select: {\n search: string;\n noResults: string;\n removeChip: string;\n };\n listbox: {\n search: string;\n empty: string;\n };\n dataView: {\n list: string;\n grid: string;\n empty: string;\n /** Interpolacja: {count}. */\n count: string;\n };\n dataTable: {\n search: string;\n exportCsv: string;\n loading: string;\n empty: string;\n selectAll: string;\n selectRow: string;\n expandRow: string;\n /** Interpolacja: {column}. */\n filter: string;\n /** Interpolacja: {column}. */\n filterMin: string;\n /** Interpolacja: {column}. */\n filterMax: string;\n all: string;\n dateRange: string;\n min: string;\n max: string;\n };\n confirm: {\n header: string;\n accept: string;\n reject: string;\n };\n fileUpload: {\n /** Może zawierać `<strong>…</strong>`. */\n hint: string;\n remove: string;\n };\n chipsInput: {\n placeholder: string;\n };\n dateRange: {\n placeholder: string;\n from: string;\n to: string;\n fromTime: string;\n toTime: string;\n };\n datepicker: {\n prevMonth: string;\n nextMonth: string;\n prevYear: string;\n nextYear: string;\n prevYears: string;\n nextYears: string;\n calendar: string;\n month: string;\n time: string;\n };\n pickList: {\n available: string;\n selected: string;\n moveAllRight: string;\n moveRight: string;\n moveLeft: string;\n moveAllLeft: string;\n };\n orderList: {\n up: string;\n down: string;\n };\n inputNumber: {\n decrement: string;\n increment: string;\n };\n password: {\n show: string;\n hide: string;\n /** Etykiety miernika siły (indeksy 0–4). */\n strength: [string, string, string, string, string];\n };\n spinner: {\n label: string;\n };\n speedDial: {\n actions: string;\n };\n scrollTop: {\n label: string;\n };\n splitButton: {\n more: string;\n };\n panel: {\n toggle: string;\n };\n breadcrumb: {\n label: string;\n };\n galleria: {\n /** Interpolacja: {index}. */\n image: string;\n };\n carousel: {\n /** Interpolacja: {index}. */\n slide: string;\n };\n richText: {\n // Etykiety narzędzi paska (klucze = KptRichTool).\n copy: string;\n paste: string;\n pasteText: string;\n heading: string;\n bold: string;\n italic: string;\n underline: string;\n strike: string;\n ul: string;\n ol: string;\n foreColor: string;\n backColor: string;\n alignLeft: string;\n alignCenter: string;\n alignRight: string;\n alignJustify: string;\n link: string;\n table: string;\n clear: string;\n html: string;\n /** Styl bloku „Normalny\" (select). */\n styleNormal: string;\n /** Interpolacja: {level}. */\n styleHeading: string;\n linkPrompt: string;\n htmlSource: string;\n /** Etykieta „Własny…\" przy pickerze koloru. */\n paletteCustom: string;\n /** Menu kontekstowe tabeli. */\n menu: {\n column: string;\n row: string;\n cell: string;\n insertLeft: string;\n insertRight: string;\n headerColumn: string;\n deleteColumn: string;\n insertAbove: string;\n insertBelow: string;\n headerRow: string;\n deleteRow: string;\n cellBackground: string;\n alignLeft: string;\n alignCenter: string;\n alignRight: string;\n mergeCells: string;\n splitCell: string;\n border: string;\n deleteTable: string;\n };\n /** Popover obramowania. */\n border: {\n table: string;\n cell: string;\n none: string;\n thin: string;\n medium: string;\n thick: string;\n customColor: string;\n };\n };\n}\n\nexport const KPT_MESSAGES_EN: KptMessages = {\n common: {\n close: 'Close',\n remove: 'Remove',\n previous: 'Previous',\n next: 'Next',\n clear: 'Clear',\n done: 'Done',\n all: 'All',\n },\n paginator: {\n rowsPerPage: 'Rows:',\n range: '{start}–{end} of {total}',\n prevPage: 'Previous page',\n nextPage: 'Next page',\n },\n select: {\n search: 'Search…',\n noResults: 'No results',\n removeChip: 'Remove',\n },\n listbox: {\n search: 'Search…',\n empty: 'No items',\n },\n dataView: {\n list: 'List',\n grid: 'Grid',\n empty: 'No items',\n count: '{count} items',\n },\n dataTable: {\n search: 'Search…',\n exportCsv: 'Export CSV',\n loading: 'Loading…',\n empty: 'No data',\n selectAll: 'Select all',\n selectRow: 'Select row',\n expandRow: 'Expand row',\n filter: 'Filter: {column}',\n filterMin: 'Filter min: {column}',\n filterMax: 'Filter max: {column}',\n all: 'All',\n dateRange: 'Date range',\n min: 'min',\n max: 'max',\n },\n confirm: {\n header: 'Confirmation',\n accept: 'Confirm',\n reject: 'Cancel',\n },\n fileUpload: {\n hint: '<strong>Click</strong> or drag files here',\n remove: 'Remove',\n },\n chipsInput: {\n placeholder: 'Add and press Enter…',\n },\n dateRange: {\n placeholder: 'Select range',\n from: 'From',\n to: 'To',\n fromTime: 'From (time)',\n toTime: 'To (time)',\n },\n datepicker: {\n prevMonth: 'Previous month',\n nextMonth: 'Next month',\n prevYear: 'Previous year',\n nextYear: 'Next year',\n prevYears: 'Previous years',\n nextYears: 'Next years',\n calendar: 'Calendar',\n month: 'Month',\n time: 'Time',\n },\n pickList: {\n available: 'Available',\n selected: 'Selected',\n moveAllRight: 'Move all right',\n moveRight: 'Move right',\n moveLeft: 'Move left',\n moveAllLeft: 'Move all left',\n },\n orderList: {\n up: 'Up',\n down: 'Down',\n },\n inputNumber: {\n decrement: 'Decrease',\n increment: 'Increase',\n },\n password: {\n show: 'Show password',\n hide: 'Hide password',\n strength: ['Very weak', 'Weak', 'Medium', 'Good', 'Strong'],\n },\n spinner: {\n label: 'Loading',\n },\n speedDial: {\n actions: 'Actions',\n },\n scrollTop: {\n label: 'Scroll to top',\n },\n splitButton: {\n more: 'More actions',\n },\n panel: {\n toggle: 'Collapse / expand',\n },\n breadcrumb: {\n label: 'breadcrumb',\n },\n galleria: {\n image: 'Image {index}',\n },\n carousel: {\n slide: 'Slide {index}',\n },\n richText: {\n copy: 'Copy',\n paste: 'Paste with formatting',\n pasteText: 'Paste without formatting',\n heading: 'Style',\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n strike: 'Strikethrough',\n ul: 'Bulleted list',\n ol: 'Numbered list',\n foreColor: 'Text color',\n backColor: 'Text background color',\n alignLeft: 'Align left',\n alignCenter: 'Center',\n alignRight: 'Align right',\n alignJustify: 'Justify',\n link: 'Insert link',\n table: 'Table',\n clear: 'Clear formatting',\n html: 'HTML preview',\n styleNormal: 'Normal',\n styleHeading: 'Heading {level}',\n linkPrompt: 'URL:',\n htmlSource: 'HTML source',\n paletteCustom: 'Custom…',\n menu: {\n column: 'Column',\n row: 'Row',\n cell: 'Cell',\n insertLeft: 'Insert left',\n insertRight: 'Insert right',\n headerColumn: 'Header column',\n deleteColumn: 'Delete column',\n insertAbove: 'Insert above',\n insertBelow: 'Insert below',\n headerRow: 'Header row',\n deleteRow: 'Delete row',\n cellBackground: 'Background color',\n alignLeft: 'Left',\n alignCenter: 'Center',\n alignRight: 'Right',\n mergeCells: 'Merge cells',\n splitCell: 'Split cell',\n border: 'Border…',\n deleteTable: 'Delete table',\n },\n border: {\n table: 'Table',\n cell: 'Cell',\n none: 'None',\n thin: 'Thin',\n medium: 'Medium',\n thick: 'Thick',\n customColor: 'Color…',\n },\n },\n};\n\nexport const KPT_MESSAGES_PL: KptMessages = {\n common: {\n close: 'Zamknij',\n remove: 'Usuń',\n previous: 'Poprzedni',\n next: 'Następny',\n clear: 'Wyczyść',\n done: 'Gotowe',\n all: 'Wszystkie',\n },\n paginator: {\n rowsPerPage: 'Wierszy:',\n range: '{start}–{end} z {total}',\n prevPage: 'Poprzednia strona',\n nextPage: 'Następna strona',\n },\n select: {\n search: 'Szukaj…',\n noResults: 'Brak wyników',\n removeChip: 'Usuń',\n },\n listbox: {\n search: 'Szukaj…',\n empty: 'Brak pozycji',\n },\n dataView: {\n list: 'Lista',\n grid: 'Siatka',\n empty: 'Brak elementów',\n count: '{count} elementów',\n },\n dataTable: {\n search: 'Szukaj…',\n exportCsv: 'Eksport CSV',\n loading: 'Ładowanie…',\n empty: 'Brak danych',\n selectAll: 'Zaznacz wszystkie',\n selectRow: 'Zaznacz wiersz',\n expandRow: 'Rozwiń wiersz',\n filter: 'Filtr: {column}',\n filterMin: 'Filtr min: {column}',\n filterMax: 'Filtr max: {column}',\n all: 'Wszystkie',\n dateRange: 'Zakres dat',\n min: 'min',\n max: 'max',\n },\n confirm: {\n header: 'Potwierdzenie',\n accept: 'Potwierdź',\n reject: 'Anuluj',\n },\n fileUpload: {\n hint: '<strong>Kliknij</strong> lub przeciągnij pliki tutaj',\n remove: 'Usuń',\n },\n chipsInput: {\n placeholder: 'Dodaj i naciśnij Enter…',\n },\n dateRange: {\n placeholder: 'Wybierz zakres',\n from: 'Od',\n to: 'Koniec',\n fromTime: 'Od (godzina)',\n toTime: 'Koniec (godzina)',\n },\n datepicker: {\n prevMonth: 'Poprzedni miesiąc',\n nextMonth: 'Następny miesiąc',\n prevYear: 'Poprzedni rok',\n nextYear: 'Następny rok',\n prevYears: 'Poprzednie lata',\n nextYears: 'Następne lata',\n calendar: 'Kalendarz',\n month: 'Miesiąc',\n time: 'Godzina',\n },\n pickList: {\n available: 'Dostępne',\n selected: 'Wybrane',\n moveAllRight: 'Przenieś wszystko w prawo',\n moveRight: 'Przenieś w prawo',\n moveLeft: 'Przenieś w lewo',\n moveAllLeft: 'Przenieś wszystko w lewo',\n },\n orderList: {\n up: 'W górę',\n down: 'W dół',\n },\n inputNumber: {\n decrement: 'Zmniejsz',\n increment: 'Zwiększ',\n },\n password: {\n show: 'Pokaż hasło',\n hide: 'Ukryj hasło',\n strength: ['Bardzo słabe', 'Słabe', 'Średnie', 'Dobre', 'Silne'],\n },\n spinner: {\n label: 'Ładowanie',\n },\n speedDial: {\n actions: 'Akcje',\n },\n scrollTop: {\n label: 'Przewiń do góry',\n },\n splitButton: {\n more: 'Więcej akcji',\n },\n panel: {\n toggle: 'Zwiń / rozwiń',\n },\n breadcrumb: {\n label: 'breadcrumb',\n },\n galleria: {\n image: 'Obraz {index}',\n },\n carousel: {\n slide: 'Slajd {index}',\n },\n richText: {\n copy: 'Kopiuj',\n paste: 'Wklej z formatowaniem',\n pasteText: 'Wklej bez formatowania',\n heading: 'Styl',\n bold: 'Pogrubienie',\n italic: 'Kursywa',\n underline: 'Podkreślenie',\n strike: 'Przekreślenie',\n ul: 'Lista punktowana',\n ol: 'Lista numerowana',\n foreColor: 'Kolor tekstu',\n backColor: 'Kolor tła tekstu',\n alignLeft: 'Wyrównaj do lewej',\n alignCenter: 'Wyśrodkuj',\n alignRight: 'Wyrównaj do prawej',\n alignJustify: 'Wyjustuj',\n link: 'Wstaw link',\n table: 'Tabela',\n clear: 'Usuń formatowanie',\n html: 'Podgląd HTML',\n styleNormal: 'Normalny',\n styleHeading: 'Nagłówek {level}',\n linkPrompt: 'Adres URL:',\n htmlSource: 'Źródło HTML',\n paletteCustom: 'Własny…',\n menu: {\n column: 'Kolumna',\n row: 'Wiersz',\n cell: 'Komórka',\n insertLeft: 'Wstaw z lewej',\n insertRight: 'Wstaw z prawej',\n headerColumn: 'Nagłówek kolumny',\n deleteColumn: 'Usuń kolumnę',\n insertAbove: 'Wstaw powyżej',\n insertBelow: 'Wstaw poniżej',\n headerRow: 'Nagłówek wiersza',\n deleteRow: 'Usuń wiersz',\n cellBackground: 'Kolor tła',\n alignLeft: 'Do lewej',\n alignCenter: 'Wyśrodkuj',\n alignRight: 'Do prawej',\n mergeCells: 'Scal komórki',\n splitCell: 'Podziel komórkę',\n border: 'Obramowanie…',\n deleteTable: 'Usuń tabelę',\n },\n border: {\n table: 'Tabela',\n cell: 'Komórka',\n none: 'Bez',\n thin: 'Cienkie',\n medium: 'Średnie',\n thick: 'Grube',\n customColor: 'Kolor…',\n },\n },\n};\n","import { Injectable, computed, inject, signal } from '@angular/core';\nimport type { DeepPartial } from './i18n.token';\nimport { KPT_I18N_CONFIG } from './i18n.token';\nimport { KPT_MESSAGES_EN, KPT_MESSAGES_PL, type KptLocale, type KptMessages } from './messages';\n\ntype PlainObject = Record<string, unknown>;\n\n/** Deep-merge `patch` na kopię `base` (łączy tylko obiekty, wartości nadpisuje). */\nfunction deepMerge<T>(base: T, patch: DeepPartial<T>): T {\n const out: PlainObject = { ...(base as unknown as PlainObject) };\n for (const [key, value] of Object.entries(patch as PlainObject)) {\n const current = out[key];\n if (value && typeof value === 'object' && !Array.isArray(value) && current && typeof current === 'object') {\n out[key] = deepMerge(current, value as DeepPartial<unknown>);\n } else if (value !== undefined) {\n out[key] = value;\n }\n }\n return out as T;\n}\n\n/**\n * Serwis tłumaczeń Koncept UI. Trzyma rejestr słowników per język, bieżący locale\n * (sygnał) i funkcję `t()` z interpolacją. Skonfiguruj przez `provideKptI18n(...)`.\n *\n * Domyślnie EN. Języki bazowe: EN, PL. Dowolny inny język dodaje się jednym\n * słownikiem (`registerMessages` lub `provideKptI18n({ messages: { de } })`);\n * brakujące klucze spadają na EN.\n */\n@Injectable({ providedIn: 'root' })\nexport class KptI18n {\n /** Rejestr słowników: język → pełny `KptMessages`. */\n private readonly registry = new Map<KptLocale, KptMessages>([\n ['en', KPT_MESSAGES_EN],\n ['pl', KPT_MESSAGES_PL],\n ]);\n\n private readonly _locale = signal<KptLocale>('en');\n /** Bieżący język (tylko do odczytu). */\n readonly locale = this._locale.asReadonly();\n\n /** Aktywny słownik (z fallbackiem na EN, gdy język nieznany). */\n readonly messages = computed<KptMessages>(() => this.registry.get(this._locale()) ?? KPT_MESSAGES_EN);\n\n constructor() {\n const config = inject(KPT_I18N_CONFIG, { optional: true });\n if (config?.messages) {\n for (const [locale, patch] of Object.entries(config.messages)) {\n this.registerMessages(locale, patch);\n }\n }\n if (config?.locale) this._locale.set(config.locale);\n }\n\n /** Ustawia bieżący język. Zmiana jest reaktywna dla wszystkich komponentów. */\n setLocale(locale: KptLocale): void {\n this._locale.set(locale);\n }\n\n /**\n * Rejestruje lub nadpisuje słownik języka. Częściowy słownik deep-merge'uje się\n * na istniejący (lub EN dla nowego języka) → brakujące klucze mają wartość EN.\n */\n registerMessages(locale: KptLocale, patch: DeepPartial<KptMessages>): void {\n const base = this.registry.get(locale) ?? KPT_MESSAGES_EN;\n this.registry.set(locale, deepMerge(base, patch));\n }\n\n /**\n * Tłumaczy klucz w notacji kropkowej (np. `'paginator.range'`), z opcjonalną\n * interpolacją `{name}`. Brakujący klucz spada na EN, a w ostateczności zwraca sam klucz.\n */\n t(key: string, params?: Record<string, string | number>): string {\n const raw = this.lookup(this.messages(), key) ?? this.lookup(KPT_MESSAGES_EN, key) ?? key;\n if (!params) return raw;\n return raw.replace(/\\{(\\w+)\\}/g, (_, name) => String(params[name] ?? `{${name}}`));\n }\n\n private lookup(dict: KptMessages, key: string): string | undefined {\n let node: unknown = dict;\n for (const part of key.split('.')) {\n if (node && typeof node === 'object' && part in node) {\n node = (node as PlainObject)[part];\n } else {\n return undefined;\n }\n }\n return typeof node === 'string' ? node : undefined;\n }\n}\n","// Ikony z zestawu Tabler Icons (MIT). Wyodrębnione inline (siatka 24x24, stroke 2px).\n// Źródło i licencja: https://github.com/tabler/tabler-icons (MIT). Zob. ICONS-LICENSE.\nexport 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';\n\nexport const KPT_ICONS: Record<KptIconName, string> = {\n 'menu': '<path d=\"M4 6l16 0\" /> <path d=\"M4 12l16 0\" /> <path d=\"M4 18l16 0\" />',\n 'x': '<path d=\"M18 6l-12 12\" /> <path d=\"M6 6l12 12\" />',\n 'chevron-up': '<path d=\"M6 15l6 -6l6 6\" />',\n 'chevron-down': '<path d=\"M6 9l6 6l6 -6\" />',\n 'chevron-left': '<path d=\"M15 6l-6 6l6 6\" />',\n 'chevron-right': '<path d=\"M9 6l6 6l-6 6\" />',\n 'check': '<path d=\"M5 12l5 5l10 -10\" />',\n 'search': '<path d=\"M3 10a7 7 0 1 0 14 0a7 7 0 1 0 -14 0\" /> <path d=\"M21 21l-6 -6\" />',\n 'grip-vertical': '<path d=\"M8 5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" /> <path d=\"M8 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" /> <path d=\"M8 19a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" /> <path d=\"M14 5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" /> <path d=\"M14 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" /> <path d=\"M14 19a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" />',\n 'info': '<path d=\"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0\" /> <path d=\"M12 9h.01\" /> <path d=\"M11 12h1v4h1\" />',\n 'alert-triangle': '<path d=\"M12 9v4\" /> <path d=\"M10.363 3.591l-8.106 13.534a1.914 1.914 0 0 0 1.636 2.871h16.214a1.914 1.914 0 0 0 1.636 -2.87l-8.106 -13.536a1.914 1.914 0 0 0 -3.274 0\" /> <path d=\"M12 16h.01\" />',\n 'circle-check': '<path d=\"M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0\" /> <path d=\"M9 12l2 2l4 -4\" />',\n 'circle-x': '<path d=\"M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0\" /> <path d=\"M10 10l4 4m0 -4l-4 4\" />',\n 'calendar': '<path d=\"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12\" /> <path d=\"M16 3v4\" /> <path d=\"M8 3v4\" /> <path d=\"M4 11h16\" /> <path d=\"M11 15h1\" /> <path d=\"M12 15v3\" />',\n 'copy': '<path d=\"M7 9.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667l0 -8.666\" /> <path d=\"M4.012 16.737a2.005 2.005 0 0 1 -1.012 -1.737v-10c0 -1.1 .9 -2 2 -2h10c.75 0 1.158 .385 1.5 1\" />',\n 'link': '<path d=\"M9 15l6 -6\" /> <path d=\"M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464\" /> <path d=\"M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463\" />',\n 'code': '<path d=\"M7 8l-4 4l4 4\" /> <path d=\"M17 8l4 4l-4 4\" /> <path d=\"M14 4l-4 16\" />',\n 'bold': '<path d=\"M7 5h6a3.5 3.5 0 0 1 0 7h-6l0 -7\" /> <path d=\"M13 12h1a3.5 3.5 0 0 1 0 7h-7v-7\" />',\n 'italic': '<path d=\"M11 5l6 0\" /> <path d=\"M7 19l6 0\" /> <path d=\"M14 5l-4 14\" />',\n 'underline': '<path d=\"M7 5v5a5 5 0 0 0 10 0v-5\" /> <path d=\"M5 19h14\" />',\n 'strikethrough': '<path d=\"M5 12l14 0\" /> <path d=\"M16 6.5a4 2 0 0 0 -4 -1.5h-1a3.5 3.5 0 0 0 0 7h2a3.5 3.5 0 0 1 0 7h-1.5a4 2 0 0 1 -4 -1.5\" />',\n 'list': '<path d=\"M9 6l11 0\" /> <path d=\"M9 12l11 0\" /> <path d=\"M9 18l11 0\" /> <path d=\"M5 6l0 .01\" /> <path d=\"M5 12l0 .01\" /> <path d=\"M5 18l0 .01\" />',\n 'list-numbers': '<path d=\"M11 6h9\" /> <path d=\"M11 12h9\" /> <path d=\"M12 18h8\" /> <path d=\"M4 16a2 2 0 1 1 4 0c0 .591 -.5 1 -1 1.5l-3 2.5h4\" /> <path d=\"M6 10v-6l-2 2\" />',\n 'clear-formatting': '<path d=\"M17 15l4 4m0 -4l-4 4\" /> <path d=\"M7 6v-1h11v1\" /> <path d=\"M7 19l4 0\" /> <path d=\"M13 5l-4 14\" />',\n 'star': '<path d=\"M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873l-6.158 -3.245\" />',\n 'plus': '<path d=\"M12 5l0 14\" /> <path d=\"M5 12l14 0\" />',\n 'upload': '<path d=\"M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2\" /> <path d=\"M7 9l5 -5l5 5\" /> <path d=\"M12 4l0 12\" />',\n 'dots-vertical': '<path d=\"M11 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" /> <path d=\"M11 19a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" /> <path d=\"M11 5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\" />',\n 'photo': '<path d=\"M15 8h.01\" /> <path d=\"M3 6a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3v-12\" /> <path d=\"M3 16l5 -5c.928 -.893 2.072 -.893 3 0l5 5\" /> <path d=\"M14 14l1 -1c.928 -.893 2.072 -.893 3 0l3 3\" />',\n 'trash': '<path d=\"M4 7l16 0\" /> <path d=\"M10 11l0 6\" /> <path d=\"M14 11l0 6\" /> <path d=\"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12\" /> <path d=\"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3\" />',\n 'pencil': '<path d=\"M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4\" /> <path d=\"M13.5 6.5l4 4\" />',\n 'eye': '<path d=\"M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0\" /> <path d=\"M21 12c-2.4 4 -5.4 6 -9 6c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6\" />',\n 'eye-off': '<path d=\"M10.585 10.587a2 2 0 0 0 2.829 2.828\" /> <path d=\"M16.681 16.673a8.717 8.717 0 0 1 -4.681 1.327c-3.6 0 -6.6 -2 -9 -6c1.272 -2.12 2.712 -3.678 4.32 -4.674m2.86 -1.146a9.055 9.055 0 0 1 1.82 -.18c3.6 0 6.6 2 9 6c-.666 1.11 -1.379 2.067 -2.138 2.87\" /> <path d=\"M3 3l18 18\" />',\n 'minus': '<path d=\"M5 12l14 0\" />',\n 'arrow-up': '<path d=\"M12 5l0 14\" /> <path d=\"M18 11l-6 -6\" /> <path d=\"M6 11l6 -6\" />',\n 'arrow-down': '<path d=\"M12 5l0 14\" /> <path d=\"M18 13l-6 6\" /> <path d=\"M6 13l6 6\" />',\n 'zoom-in': '<path d=\"M3 10a7 7 0 1 0 14 0a7 7 0 1 0 -14 0\" /> <path d=\"M7 10l6 0\" /> <path d=\"M10 7l0 6\" /> <path d=\"M21 21l-6 -6\" />',\n 'info-circle': '<path d=\"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0\" /> <path d=\"M12 9h.01\" /> <path d=\"M11 12h1v4h1\" />',\n 'phone': '<path d=\"M5 4h4l2 5l-2.5 1.5a11 11 0 0 0 5 5l1.5 -2.5l5 2v4a2 2 0 0 1 -2 2a16 16 0 0 1 -15 -15a2 2 0 0 1 2 -2\" />',\n 'map-pin': '<path d=\"M9 11a3 3 0 1 0 6 0a3 3 0 0 0 -6 0\" /> <path d=\"M17.657 16.657l-4.243 4.243a2 2 0 0 1 -2.827 0l-4.244 -4.243a8 8 0 1 1 11.314 0z\" />',\n 'world': '<path d=\"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0\" /> <path d=\"M3.6 9h16.8\" /> <path d=\"M3.6 15h16.8\" /> <path d=\"M11.5 3a17 17 0 0 0 0 18\" /> <path d=\"M12.5 3a17 17 0 0 1 0 18\" />',\n 'clock': '<path d=\"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0\" /> <path d=\"M12 7v5l3 3\" />',\n 'align-left': '<path d=\"M4 6l16 0\" /> <path d=\"M4 12l10 0\" /> <path d=\"M4 18l14 0\" />',\n 'align-center': '<path d=\"M4 6l16 0\" /> <path d=\"M8 12l8 0\" /> <path d=\"M6 18l12 0\" />',\n 'align-right': '<path d=\"M4 6l16 0\" /> <path d=\"M10 12l10 0\" /> <path d=\"M6 18l14 0\" />',\n 'align-justified': '<path d=\"M4 6l16 0\" /> <path d=\"M4 12l16 0\" /> <path d=\"M4 18l12 0\" />',\n 'palette': '<path d=\"M12 21a9 9 0 0 1 0 -18a9 8 0 0 1 9 8a4.5 4 0 0 1 -4.5 4h-2.5a2 2 0 0 0 -1 3.75a1.3 1.3 0 0 1 -1 2.25\" /> <path d=\"M8.5 10.5a1 1 0 1 0 2 0a1 1 0 0 0 -2 0\" /> <path d=\"M12.5 7.5a1 1 0 1 0 2 0a1 1 0 0 0 -2 0\" /> <path d=\"M16.5 10.5a1 1 0 1 0 2 0a1 1 0 0 0 -2 0\" />',\n 'highlight': '<path d=\"M3 19h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4\" /> <path d=\"M12.5 5.5l4 4\" /> <path d=\"M4.5 13.5l4 4\" /> <path d=\"M21 15v4h-8\" />',\n 'clipboard': '<path d=\"M9 5h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-2\" /> <path d=\"M9 3m0 2a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v0a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2z\" />',\n 'clipboard-text': '<path d=\"M9 5h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-2\" /> <path d=\"M9 3m0 2a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v0a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2z\" /> <path d=\"M9 12h6\" /> <path d=\"M9 16h6\" />',\n 'table': '<path d=\"M3 5a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-14z\" /> <path d=\"M3 10h18\" /> <path d=\"M10 3v18\" />',\n};\n","import { Injectable, signal } from '@angular/core';\nimport { KPT_ICONS } from './icons';\n\n/**\n * Rejestr ikon dla `kpt-icon`. Zawiera wbudowany zestaw (używany przez komponenty).\n * Aby dodać pełny zestaw Tabler (5130 ikon), użyj `provideKptTablerIcons()`\n * z `@konce-pt/angular/icons` lub zarejestruj własne przez `register()`.\n */\n@Injectable({ providedIn: 'root' })\nexport class KptIconRegistry {\n private readonly icons = new Map<string, string>(Object.entries(KPT_ICONS));\n private readonly _version = signal(0);\n /** Rośnie po każdej rejestracji — pozwala `kpt-icon` reagować na późne dodanie ikon. */\n readonly version = this._version.asReadonly();\n\n /** Rejestruje (lub nadpisuje) ikony: `{ nazwa: 'inner svg' }`. */\n register(icons: Record<string, string>): void {\n for (const [name, svg] of Object.entries(icons)) {\n this.icons.set(name, svg);\n }\n this._version.update((v) => v + 1);\n }\n\n /** Zwraca wewnętrzny SVG ikony lub undefined. */\n get(name: string): string | undefined {\n return this.icons.get(name);\n }\n\n has(name: string): boolean {\n return this.icons.has(name);\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, ViewEncapsulation, effect, inject, input } from '@angular/core';\nimport { KptIconRegistry } from './icon-registry';\n\n/**\n * Ikona Koncept UI (inline SVG, zestaw Tabler Icons — MIT). Rozmiar dziedziczy z `font-size`\n * (1em) lub ustaw `size`; kolor z `currentColor`. Ikona musi być w rejestrze\n * ([[KptIconRegistry]]) — wbudowany zestaw działa od razu, pełny zestaw dodaje\n * `provideKptTablerIcons()` z `@konce-pt/angular/icons`.\n *\n * @example\n * <kpt-icon name=\"menu\" />\n * <kpt-icon name=\"check\" size=\"1.25rem\" />\n */\n@Component({\n selector: 'kpt-icon',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: '',\n styleUrl: './icon.component.scss',\n host: {\n class: 'kpt-icon-host',\n 'aria-hidden': 'true',\n '[style.font-size]': 'size() || null',\n },\n})\nexport class KptIcon {\n /** Nazwa ikony z rejestru (wbudowana lub zarejestrowana). */\n readonly name = input.required<string>();\n /** Rozmiar jako długość CSS (np. '1.25rem'); domyślnie dziedziczy z font-size. */\n readonly size = input<string>('');\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly registry = inject(KptIconRegistry);\n\n constructor() {\n effect(() => {\n this.registry.version(); // reaguj na późną rejestrację ikon\n const inner = this.registry.get(this.name()) ?? '';\n // Treść pochodzi z zaufanego rejestru — bezpośredni innerHTML bez sanitizera.\n this.host.nativeElement.innerHTML = inner\n ? '<svg class=\"kpt-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"' +\n ' stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">' +\n inner +\n '</svg>'\n : '';\n });\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, type ConnectedPosition } from '@angular/cdk/overlay';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, inject, input, output, signal } from '@angular/core';\nimport type { KptButtonVariant } from '../button/button.component';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\nimport type { KptMenuItem } from '../menu/menu.component';\n\n/**\n * Przycisk dzielony (split button) — akcja główna + rozwijane menu dodatkowych akcji.\n * Wymaga `import '@angular/cdk/overlay-prebuilt.css';`\n *\n * @example\n * <kpt-split-button [items]=\"items\" (primaryClick)=\"save()\" (select)=\"onItem($event)\">Zapisz</kpt-split-button>\n */\n@Component({\n selector: 'kpt-split-button',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon],\n template: `\n <div class=\"kpt-split-button\" [attr.data-variant]=\"variant()\">\n <button class=\"kpt-split-button__main\" type=\"button\" [disabled]=\"disabled()\" (click)=\"primaryClick.emit()\">\n <ng-content />\n </button>\n <button\n class=\"kpt-split-button__toggle\"\n type=\"button\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n [disabled]=\"disabled()\"\n (click)=\"open.set(!open())\"\n [attr.aria-label]=\"i18n.t('splitButton.more')\"\n ><kpt-icon name=\"chevron-down\" /></button>\n </div>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"open.set(false)\"\n >\n <div class=\"kpt-split-button__panel\" role=\"menu\">\n @for (item of items(); track $index) {\n @if (item.separator) {\n <div class=\"kpt-split-button__separator\" role=\"separator\"></div>\n } @else {\n <button\n type=\"button\"\n class=\"kpt-split-button__item\"\n [class.kpt-split-button__item--danger]=\"item.danger\"\n [disabled]=\"item.disabled\"\n (click)=\"pick(item)\"\n >\n @if (item.icon) { <kpt-icon [name]=\"item.icon\" /> }\n <span>{{ item.label }}</span>\n </button>\n }\n }\n </div>\n </ng-template>\n `,\n styleUrl: './split-button.component.scss',\n host: { class: 'kpt-split-button-host' },\n})\nexport class KptSplitButton<T = unknown> {\n readonly variant = input<KptButtonVariant>('filled');\n readonly items = input<KptMenuItem<T>[]>([]);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly primaryClick = output<void>();\n readonly select = output<KptMenuItem<T>>();\n\n protected readonly i18n = inject(KptI18n);\n protected readonly open = signal(false);\n protected readonly positions: ConnectedPosition[] = [\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: 4 },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetY: -4 },\n ];\n\n protected pick(item: KptMenuItem<T>): void {\n if (item.disabled) return;\n this.select.emit(item);\n this.open.set(false);\n }\n}\n","import { type EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { KPT_I18N_CONFIG, type KptI18nConfig } from './i18n.token';\n\n/**\n * Konfiguruje i18n Koncept UI. Ustawia język początkowy i rejestruje/nadpisuje\n * słowniki. Języki bazowe (EN, PL) są dostępne bez konfiguracji.\n *\n * @example\n * // main.ts — polski interfejs\n * bootstrapApplication(App, {\n * providers: [provideKptI18n({ locale: 'pl' })],\n * });\n *\n * @example\n * // Własny język jednym plikiem JSON (brakujące klucze → EN)\n * import de from './i18n/de.json';\n * provideKptI18n({ locale: 'de', messages: { de } });\n *\n * @example\n * // Nadpisanie pojedynczych etykiet istniejącego języka\n * provideKptI18n({ messages: { en: { paginator: { rowsPerPage: 'Rows per page:' } } } });\n */\nexport function provideKptI18n(config: KptI18nConfig = {}): EnvironmentProviders {\n return makeEnvironmentProviders([{ provide: KPT_I18N_CONFIG, useValue: config }]);\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, computed, input } from '@angular/core';\n\nexport type KptBadgeVariant = 'neutral' | 'primary' | 'success' | 'danger' | 'warning' | 'info';\n\n/**\n * Znacznik (badge) — licznik lub kropka statusu. Standalone lub nałożony na treść (`overlay`).\n *\n * @example\n * <kpt-badge [value]=\"3\" variant=\"danger\" />\n * <kpt-badge [value]=\"128\" overlay><kpt-icon name=\"menu\" /></kpt-badge>\n * <kpt-badge dot variant=\"success\" overlay><kpt-avatar name=\"AK\" /></kpt-badge>\n */\n@Component({\n selector: 'kpt-badge',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n <ng-content />\n <span\n class=\"kpt-badge\"\n [attr.data-variant]=\"variant()\"\n [class.kpt-badge--overlay]=\"overlay()\"\n [class.kpt-badge--dot]=\"dot()\"\n >{{ dot() ? '' : display() }}</span>\n `,\n styleUrl: './badge.component.scss',\n host: { class: 'kpt-badge-host' },\n})\nexport class KptBadge {\n readonly value = input<string | number | null>(null);\n readonly variant = input<KptBadgeVariant>('primary');\n readonly dot = input(false, { transform: booleanAttribute });\n readonly overlay = input(false, { transform: booleanAttribute });\n readonly max = input(99);\n\n protected readonly display = computed(() => {\n const v = this.value();\n if (typeof v === 'number' && v > this.max()) return `${this.max()}+`;\n return v ?? '';\n });\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, inject, input, output } from '@angular/core';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\n\nexport type KptChipVariant = 'neutral' | 'primary' | 'success' | 'danger' | 'warning' | 'info';\n\n/**\n * Chip / tag — etykieta, opcjonalnie usuwalna.\n *\n * @example\n * <kpt-chip>Angular</kpt-chip>\n * <kpt-chip variant=\"success\" removable (removed)=\"onRemove()\">UI</kpt-chip>\n */\n@Component({\n selector: 'kpt-chip',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <span class=\"kpt-chip\" [attr.data-variant]=\"variant()\" [class.kpt-chip--disabled]=\"disabled()\">\n <ng-content />\n @if (removable()) {\n <button\n type=\"button\"\n class=\"kpt-chip__remove\"\n [disabled]=\"disabled()\"\n (click)=\"removed.emit()\"\n [attr.aria-label]=\"i18n.t('common.remove')\"\n ><kpt-icon name=\"x\" /></button>\n }\n </span>\n `,\n styleUrl: './chip.component.scss',\n host: { class: 'kpt-chip-host' },\n})\nexport class KptChip {\n readonly variant = input<KptChipVariant>('neutral');\n readonly removable = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly removed = output<void>();\n\n protected readonly i18n = inject(KptI18n);\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\nimport { KptIcon } from '../icon/icon.component';\n\nexport type KptAvatarSize = 'sm' | 'md' | 'lg' | 'xl';\nexport type KptAvatarShape = 'circle' | 'square';\n\n/**\n * Awatar — obraz, inicjały (z `name`) lub ikona.\n *\n * @example\n * <kpt-avatar src=\"/u/anna.jpg\" />\n * <kpt-avatar name=\"Anna Kowalska\" size=\"lg\" />\n * <kpt-avatar icon=\"user\" shape=\"square\" />\n */\n@Component({\n selector: 'kpt-avatar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <span class=\"kpt-avatar\" [attr.data-size]=\"size()\" [attr.data-shape]=\"shape()\">\n @if (src()) {\n <img class=\"kpt-avatar__img\" [src]=\"src()\" [alt]=\"name() || ''\" />\n } @else if (name()) {\n <span class=\"kpt-avatar__initials\">{{ initials() }}</span>\n } @else if (icon()) {\n <kpt-icon [name]=\"icon()!\" />\n }\n </span>\n `,\n styleUrl: './avatar.component.scss',\n host: { class: 'kpt-avatar-host' },\n})\nexport class KptAvatar {\n readonly src = input<string | null>(null);\n readonly name = input<string>('');\n readonly icon = input<string | null>(null);\n readonly size = input<KptAvatarSize>('md');\n readonly shape = input<KptAvatarShape>('circle');\n\n protected readonly initials = computed(() =>\n this.name()\n .trim()\n .split(/\\s+/)\n .slice(0, 2)\n .map((w) => w[0]?.toUpperCase() ?? '')\n .join(''),\n );\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, inject, input } from '@angular/core';\nimport { KptI18n } from '../i18n/i18n.service';\n\n/**\n * Wskaźnik ładowania (spinner). Kolor z `currentColor`.\n *\n * @example\n * <kpt-spinner />\n * <kpt-spinner size=\"2rem\" label=\"Wczytywanie danych\" />\n */\n@Component({\n selector: 'kpt-spinner',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `<span class=\"kpt-spinner\" role=\"status\" [attr.aria-label]=\"effectiveLabel()\" [style.width]=\"size()\" [style.height]=\"size()\"></span>`,\n styleUrl: './spinner.component.scss',\n host: { class: 'kpt-spinner-host' },\n})\nexport class KptSpinner {\n readonly size = input('1.5rem');\n /** Etykieta a11y; bez wartości używa i18n (`spinner.label`). */\n readonly label = input<string>();\n\n private readonly i18n = inject(KptI18n);\n protected readonly effectiveLabel = computed(() => this.label() ?? this.i18n.t('spinner.label'));\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\n\nexport type KptProgressVariant = 'primary' | 'success' | 'danger' | 'warning' | 'info';\n\n/**\n * Wskaźnik postępu — liniowy lub kołowy, określony (0–100) lub nieokreślony (`value` = null).\n *\n * @example\n * <kpt-progress [value]=\"60\" />\n * <kpt-progress type=\"circular\" [value]=\"75\" variant=\"success\" />\n * <kpt-progress [value]=\"null\" /> <!-- indeterminate -->\n */\n@Component({\n selector: 'kpt-progress',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n @if (type() === 'circular') {\n <svg\n class=\"kpt-progress__circular\"\n [class.kpt-progress--indeterminate]=\"value() == null\"\n [attr.data-variant]=\"variant()\"\n [attr.width]=\"diameter()\"\n [attr.height]=\"diameter()\"\n viewBox=\"0 0 40 40\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"value()\"\n >\n <circle class=\"kpt-progress__track\" cx=\"20\" cy=\"20\" r=\"16\" />\n <circle\n class=\"kpt-progress__bar\"\n cx=\"20\"\n cy=\"20\"\n r=\"16\"\n [style.stroke-dasharray]=\"circumference\"\n [style.stroke-dashoffset]=\"offset()\"\n />\n </svg>\n } @else {\n <div class=\"kpt-progress__linear\" [attr.data-variant]=\"variant()\" role=\"progressbar\" [attr.aria-valuenow]=\"value()\">\n <div class=\"kpt-progress__bar\" [class.kpt-progress--indeterminate]=\"value() == null\" [style.width.%]=\"value() ?? 0\"></div>\n </div>\n }\n `,\n styleUrl: './progress.component.scss',\n host: { class: 'kpt-progress-host' },\n})\nexport class KptProgress {\n /** 0–100 lub null = nieokreślony. */\n readonly value = input<number | null>(null);\n readonly variant = input<KptProgressVariant>('primary');\n readonly type = input<'linear' | 'circular'>('linear');\n readonly diameter = input(40);\n\n protected readonly circumference = 2 * Math.PI * 16;\n protected readonly offset = computed(() => {\n const v = this.value();\n if (v == null) return this.circumference * 0.75;\n return this.circumference * (1 - Math.min(100, Math.max(0, v)) / 100);\n });\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\n\nexport type KptSkeletonVariant = 'text' | 'circle' | 'rect';\n\n/**\n * Placeholder ładowania (skeleton) z animacją shimmer.\n *\n * @example\n * <kpt-skeleton variant=\"text\" [lines]=\"3\" />\n * <kpt-skeleton variant=\"circle\" width=\"3rem\" height=\"3rem\" />\n * <kpt-skeleton variant=\"rect\" width=\"100%\" height=\"8rem\" />\n */\n@Component({\n selector: 'kpt-skeleton',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n @if (variant() === 'text') {\n @for (line of lineArray(); track $index; let last = $last) {\n <span class=\"kpt-skeleton kpt-skeleton--text\" [style.width]=\"last ? '60%' : width()\"></span>\n }\n } @else {\n <span class=\"kpt-skeleton\" [attr.data-variant]=\"variant()\" [style.width]=\"width()\" [style.height]=\"height()\"></span>\n }\n `,\n styleUrl: './skeleton.component.scss',\n host: { class: 'kpt-skeleton-host', 'aria-hidden': 'true' },\n})\nexport class KptSkeleton {\n readonly variant = input<KptSkeletonVariant>('rect');\n readonly width = input('100%');\n readonly height = input('1rem');\n readonly lines = input(3);\n\n protected readonly lineArray = computed(() => Array.from({ length: this.lines() }));\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n afterNextRender,\n booleanAttribute,\n inject,\n input,\n signal,\n} from '@angular/core';\n\n/**\n * Wrapper pola formularza: etykieta, podpowiedź i komunikat błędu wokół dowolnej\n * kontrolki (np. `kpt-input`). Prezentacyjny — stan błędu przekazuje się przez `error`\n * (zwykle z pola Signal Forms). Wygląd sterowany tokenami `--kpt-form-field-*`.\n *\n * Etykieta ma 4 warianty (`labelType`): `fixed` (domyślny, nad kontrolką) oraz trzy warianty\n * unoszącej się etykiety (Float Label) z animowanym przejściem: `over` (nad obramowaniem),\n * `in` (u góry wewnątrz pola) i `on` (na obramowaniu, notch). Uniesienie następuje przy focusie\n * (CSS `:focus-within`) lub gdy pole jest wypełnione (wykrywane po zdarzeniach `input`/`change`\n * oraz wartości początkowej) — bez wymogu placeholdera na kontrolce.\n *\n * @example\n * <kpt-form-field label=\"E-mail\" [error]=\"emailError()\" hint=\"Firmowy adres\">\n * <kpt-input [control]=\"f.email\" type=\"email\" />\n * </kpt-form-field>\n *\n * @example\n * <kpt-form-field label=\"E-mail\" labelType=\"over\">\n * <kpt-input />\n * </kpt-form-field>\n */\n@Component({\n selector: 'kpt-form-field',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n templateUrl: './form-field.component.html',\n styleUrl: './form-field.component.scss',\n host: {\n class: 'kpt-form-field-host',\n '(input)': 'updateFilled()',\n '(change)': 'updateFilled()',\n },\n})\nexport class KptFormField {\n /** Tekst etykiety. */\n readonly label = input<string>('');\n /** Podpowiedź pod kontrolką (ukrywana, gdy jest błąd). */\n readonly hint = input<string>('');\n /** Komunikat błędu — gdy niepusty, pole jest oznaczone jako nieprawidłowe. */\n readonly error = input<string | null>(null);\n /** Oznacz pole jako wymagane (gwiazdka przy etykiecie). */\n readonly required = input(false, { transform: booleanAttribute });\n /** Id kontrolki dla powiązania `label[for]`. */\n readonly controlId = input<string>('');\n /**\n * Wariant etykiety: `fixed` (domyślnie, statyczna nad kontrolką) lub Float Label —\n * `over` (nad obramowaniem), `in` (u góry wewnątrz pola), `on` (na obramowaniu, notch).\n * Uniesienie następuje przy focusie lub wypełnieniu pola.\n */\n readonly labelType = input<'fixed' | 'over' | 'in' | 'on'>('fixed');\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n /** Czy projektowana kontrolka ma wartość — steruje uniesieniem etykiety w wariantach float. */\n protected readonly filled = signal(false);\n\n constructor() {\n // Wartość początkowa (np. pole prefill) — po pierwszym renderze projekcji.\n afterNextRender(() => this.updateFilled());\n }\n\n /** Odczytuje wartość projektowanego `input`/`textarea` i aktualizuje stan `filled`. */\n protected updateFilled(): void {\n const el = this.host.nativeElement.querySelector<HTMLInputElement | HTMLTextAreaElement>(\n '.kpt-form-field__control input, .kpt-form-field__control textarea',\n );\n this.filled.set(!!el && el.value !== '');\n }\n}\n","<div\n class=\"kpt-form-field\"\n [class]=\"'kpt-form-field--' + labelType()\"\n [class.kpt-form-field--float]=\"labelType() !== 'fixed'\"\n [class.kpt-form-field--invalid]=\"!!error()\"\n>\n <div class=\"kpt-form-field__box\" [class.is-filled]=\"filled()\">\n @if (label()) {\n <label class=\"kpt-form-field__label\" [attr.for]=\"controlId() || null\">\n {{ label() }}\n @if (required()) {\n <span class=\"kpt-form-field__required\" aria-hidden=\"true\">*</span>\n }\n </label>\n }\n\n <div class=\"kpt-form-field__control\">\n <ng-content />\n </div>\n </div>\n\n @if (error()) {\n <p class=\"kpt-form-field__message kpt-form-field__message--error\" role=\"alert\">{{ error() }}</p>\n } @else if (hint()) {\n <p class=\"kpt-form-field__message kpt-form-field__message--hint\">{{ hint() }}</p>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n input,\n model,\n output,\n} from '@angular/core';\nimport type {\n FormValueControl,\n ValidationError,\n WithOptionalFieldTree,\n} from '@angular/forms/signals';\n\nexport type KptInputType = 'text' | 'email' | 'password' | 'number' | 'search' | 'tel' | 'url';\n\nlet nextUniqueId = 0;\n\n/**\n * Pole tekstowe Koncept UI zintegrowane z Angular Signal Forms.\n * Implementuje `FormValueControl<string>` — wiąż je dyrektywą `FormField`:\n *\n * <kpt-input [formField]=\"loginForm.email\" type=\"email\" />\n *\n * Stan pola (disabled/readonly/required/invalid/errors/touched) wiąże automatycznie\n * dyrektywa `FormField`. Bez `ControlValueAccessor`. Wygląd: tokeny `--kpt-form-field-*`.\n */\n@Component({\n selector: 'kpt-input',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss',\n host: {\n class: 'kpt-input-host',\n // id należy wyłącznie do wewnętrznego <input> (powiązanie label[for]); host go nie nosi\n '[attr.id]': 'null',\n },\n})\nexport class KptInput implements FormValueControl<string> {\n /** Wartość pola (wymagane przez kontrakt FormValueControl). */\n readonly value = model<string>('');\n\n // ── Stan wiązany automatycznie przez dyrektywę FormField ──\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly invalid = input<boolean>(false);\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n readonly touched = input<boolean>(false);\n /** Emitowane na `blur` — oznacza pole jako dotknięte. */\n readonly touch = output<void>();\n\n // ── Wejścia prezentacyjne ──\n readonly type = input<KptInputType>('text');\n readonly placeholder = input<string>('');\n readonly id = input<string>(`kpt-input-${++nextUniqueId}`);\n readonly ariaLabel = input<string | null>(null);\n\n protected onInput(event: Event): void {\n this.value.set((event.target as HTMLInputElement).value);\n }\n}\n","<input\n class=\"kpt-input__field\"\n [id]=\"id()\"\n [type]=\"type()\"\n [value]=\"value()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"touch.emit()\"\n/>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n input,\n model,\n output,\n} from '@angular/core';\nimport type { FormCheckboxControl } from '@angular/forms/signals';\n\n/**\n * Pole wyboru (checkbox) zintegrowane z Signal Forms (`FormCheckboxControl`).\n * Wiąż dyrektywą `FormField`: `<kpt-checkbox [formField]=\"f.terms\" label=\"Akceptuję\" />`.\n */\n@Component({\n selector: 'kpt-checkbox',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n <label class=\"kpt-checkbox\" [class.kpt-checkbox--disabled]=\"disabled()\">\n <input\n type=\"checkbox\"\n class=\"kpt-checkbox__input\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n (change)=\"checked.set($any($event.target).checked)\"\n (blur)=\"touch.emit()\"\n />\n <span class=\"kpt-checkbox__box\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 16 16\" class=\"kpt-checkbox__check\"><path d=\"M13 4.5 6.5 11 3 7.5\" /></svg>\n </span>\n @if (label()) {\n <span class=\"kpt-checkbox__label\">{{ label() }}</span>\n }\n <ng-content />\n </label>\n `,\n styleUrl: './checkbox.component.scss',\n host: { class: 'kpt-checkbox-host' },\n})\nexport class KptCheckbox implements FormCheckboxControl {\n /** Zaznaczenie (wymagane przez kontrakt FormCheckboxControl). */\n readonly checked = model(false);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n /** Etykieta obok pola. */\n readonly label = input('');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n input,\n model,\n output,\n} from '@angular/core';\nimport type { FormCheckboxControl } from '@angular/forms/signals';\n\n/**\n * Przełącznik (switch/toggle) zintegrowany z Signal Forms (`FormCheckboxControl`).\n * `<kpt-switch [formField]=\"f.notifications\" label=\"Powiadomienia\" />`\n *\n * Wariant z tekstem stanu: `onLabel`/`offLabel` — wyświetlany tekst zmienia się\n * przy przełączaniu (np. „Włączony”/„Wyłączony”).\n * `<kpt-switch [(checked)]=\"on\" onLabel=\"Włączony\" offLabel=\"Wyłączony\" />`\n */\n@Component({\n selector: 'kpt-switch',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n <label class=\"kpt-switch\" [class.kpt-switch--disabled]=\"disabled()\">\n @if (label() && labelPosition() === 'start') {\n <span class=\"kpt-switch__label kpt-switch__label--start\">{{ label() }}</span>\n }\n <input\n type=\"checkbox\"\n role=\"switch\"\n class=\"kpt-switch__input\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n (change)=\"checked.set($any($event.target).checked)\"\n (blur)=\"touch.emit()\"\n />\n <span class=\"kpt-switch__track\" aria-hidden=\"true\"><span class=\"kpt-switch__thumb\"></span></span>\n @if (label() && labelPosition() === 'end') {\n <span class=\"kpt-switch__label\">{{ label() }}</span>\n }\n @if (hasStateLabels()) {\n <span class=\"kpt-switch__state\" [class.kpt-switch__state--on]=\"checked()\">{{ stateLabel() }}</span>\n }\n <ng-content />\n </label>\n `,\n styleUrl: './switch.component.scss',\n host: { class: 'kpt-switch-host' },\n})\nexport class KptSwitch implements FormCheckboxControl {\n readonly checked = model(false);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n readonly label = input('');\n /** Pozycja etykiety `label` względem przełącznika: 'end' (prawo, domyślnie) lub 'start' (lewo). */\n readonly labelPosition = input<'start' | 'end'>('end');\n /** Tekst stanu włączonego (wyświetlany, gdy `checked`). */\n readonly onLabel = input('');\n /** Tekst stanu wyłączonego (wyświetlany, gdy nie `checked`). */\n readonly offLabel = input('');\n\n protected readonly hasStateLabels = computed(() => !!(this.onLabel() || this.offLabel()));\n /** Tekst zależny od stanu przełącznika. */\n protected readonly stateLabel = computed(() => (this.checked() ? this.onLabel() : this.offLabel()));\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n input,\n model,\n output,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport type { KptOption } from '../shared/types';\nimport { KptSwitch } from '../switch/switch.component';\n\n/**\n * Grupa przełączników. Domyślnie pojedynczy wybór (wzajemnie wykluczające się) —\n * włączenie jednego wyłącza pozostałe, a wartość to `value` wybranej opcji (lub `null`).\n * Z `multiple` przechodzi w tryb wielokrotny — wartość to tablica `T[]` zaznaczonych opcji.\n * Zintegrowana z Signal Forms (`FormValueControl<T | T[] | null>`).\n *\n * @example\n * <kpt-switch-group [(value)]=\"plan\" [options]=\"plans\" />\n * <kpt-switch-group multiple [(value)]=\"tags\" [options]=\"tagOptions\" />\n */\n@Component({\n selector: 'kpt-switch-group',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptSwitch],\n template: `\n <div\n class=\"kpt-switch-group\"\n [class.kpt-switch-group--horizontal]=\"orientation() === 'horizontal'\"\n role=\"group\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n >\n @for (opt of options(); track opt.value) {\n <kpt-switch\n class=\"kpt-switch-group__item\"\n [checked]=\"isChecked(opt.value)\"\n [label]=\"opt.label\"\n [disabled]=\"disabled() || opt.disabled\"\n (checkedChange)=\"onToggle(opt, $event)\"\n (touch)=\"touch.emit()\"\n />\n }\n </div>\n `,\n styleUrl: './switch-group.component.scss',\n host: { class: 'kpt-switch-group-host' },\n})\nexport class KptSwitchGroup<T = unknown> implements FormValueControl<unknown> {\n readonly value = model<unknown>(null);\n readonly options = input<KptOption<T>[]>([]);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n /** Układ: 'vertical' (domyślnie) lub 'horizontal'. */\n readonly orientation = input<'vertical' | 'horizontal'>('vertical');\n /** Tryb wielokrotnego wyboru — wartość to tablica `T[]` zaznaczonych opcji. Domyślnie false (pojedynczy wybór). */\n readonly multiple = input(false, { transform: booleanAttribute });\n /**\n * Czy ponowne kliknięcie aktywnej opcji ją odznacza (value = null). Dotyczy tylko trybu pojedynczego —\n * w trybie `multiple` odznaczanie jest zawsze dozwolone. Domyślnie tak.\n */\n readonly allowDeselect = input(true, { transform: booleanAttribute });\n\n /** Aktualna wartość jako tablica (tryb multiple) — normalizuje `null`/pojedynczą wartość. */\n private readonly selectedValues = computed<T[]>(() => {\n const v = this.value();\n if (Array.isArray(v)) return v as T[];\n return v == null ? [] : [v as T];\n });\n\n protected isChecked(optValue: T): boolean {\n if (this.multiple()) return this.selectedValues().includes(optValue);\n return optValue === this.value();\n }\n\n protected onToggle(opt: KptOption<T>, checked: boolean): void {\n if (this.multiple()) {\n const current = this.selectedValues();\n if (checked) {\n if (!current.includes(opt.value)) this.value.set([...current, opt.value]);\n } else {\n this.value.set(current.filter((v) => v !== opt.value));\n }\n return;\n }\n\n if (checked) {\n this.value.set(opt.value);\n return;\n }\n // Wyłączono aktywną opcję.\n if (this.allowDeselect()) {\n this.value.set(null);\n } else {\n // Odznaczanie niedozwolone — przywróć zaznaczenie (wymusza ponowne wypchnięcie [checked]).\n const current = opt.value;\n this.value.set(null);\n this.value.set(current);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n input,\n model,\n output,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport type { KptOption } from '../shared/types';\n\nlet nextGroupId = 0;\n\n/**\n * Grupa przycisków opcji (radio) zintegrowana z Signal Forms (`FormValueControl<T>`).\n * Opcje przez `options`. `<kpt-radio-group [formField]=\"f.plan\" [options]=\"plans\" />`\n */\n@Component({\n selector: 'kpt-radio-group',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n <div class=\"kpt-radio-group\" role=\"radiogroup\" [attr.aria-invalid]=\"invalid() ? 'true' : null\">\n @for (opt of options(); track opt.value) {\n <label class=\"kpt-radio\" [class.kpt-radio--disabled]=\"disabled() || opt.disabled\">\n <input\n type=\"radio\"\n class=\"kpt-radio__input\"\n [name]=\"name()\"\n [checked]=\"opt.value === value()\"\n [disabled]=\"disabled() || opt.disabled\"\n (change)=\"value.set(opt.value)\"\n (blur)=\"touch.emit()\"\n />\n <span class=\"kpt-radio__dot\" aria-hidden=\"true\"></span>\n <span class=\"kpt-radio__label\">{{ opt.label }}</span>\n </label>\n }\n </div>\n `,\n styleUrl: './radio-group.component.scss',\n host: { class: 'kpt-radio-group-host' },\n})\nexport class KptRadioGroup<T = unknown> implements FormValueControl<T> {\n readonly value = model<T>(undefined as T);\n readonly options = input<KptOption<T>[]>([]);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n readonly name = input<string>(`kpt-radio-${++nextGroupId}`);\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, type ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\nimport type { KptOption } from '../shared/types';\n\n/**\n * Lista wyboru (select) na własnym panelu (CDK Overlay), zintegrowana z Signal Forms.\n * Warianty: pojedynczy, z wyszukiwarką (`filter`) i wielokrotny (`multiple`, chipy).\n *\n * @example\n * <kpt-select [formField]=\"f.role\" [options]=\"roles\" placeholder=\"Wybierz…\" />\n * <kpt-select [formField]=\"f.city\" [options]=\"cities\" filter placeholder=\"Szukaj miasta…\" />\n * <kpt-select [formField]=\"f.tags\" [options]=\"tags\" multiple filter placeholder=\"Tagi…\" />\n */\n@Component({\n selector: 'kpt-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon],\n templateUrl: './select.component.html',\n styleUrl: './select.component.scss',\n host: { class: 'kpt-select-host' },\n})\nexport class KptSelect<T = unknown> implements FormValueControl<unknown> {\n readonly options = input<KptOption<T>[]>([]);\n readonly placeholder = input('');\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly filter = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n\n /** Wartość: pojedyncza (T) lub tablica (T[]) w trybie multiple. */\n readonly value = model<unknown>(null);\n readonly touch = output<void>();\n\n protected readonly i18n = inject(KptI18n);\n protected readonly open = signal(false);\n protected readonly filterText = signal('');\n protected readonly activeIndex = signal(-1);\n\n protected readonly positions: ConnectedPosition[] = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n ];\n\n private readonly selectedValues = computed<T[]>(() => {\n const v = this.value();\n if (this.multiple()) return Array.isArray(v) ? (v as T[]) : [];\n return v == null ? [] : [v as T];\n });\n\n protected readonly selectedOptions = computed(() =>\n this.options().filter((o) => this.selectedValues().includes(o.value)),\n );\n\n protected readonly filteredOptions = computed(() => {\n const q = this.filterText().trim().toLowerCase();\n const opts = this.options();\n return q ? opts.filter((o) => o.label.toLowerCase().includes(q)) : opts;\n });\n\n protected readonly singleLabel = computed(() => {\n const sel = this.selectedOptions();\n return this.multiple() ? '' : (sel[0]?.label ?? '');\n });\n\n protected readonly hasValue = computed(() => this.selectedOptions().length > 0);\n\n protected isSelected(opt: KptOption<T>): boolean {\n return this.selectedValues().includes(opt.value);\n }\n\n protected toggleOpen(): void {\n if (this.disabled()) return;\n this.open.update((o) => !o);\n if (this.open()) {\n this.filterText.set('');\n this.activeIndex.set(-1);\n }\n }\n\n protected close(): void {\n if (!this.open()) return;\n this.open.set(false);\n this.touch.emit();\n }\n\n protected pick(opt: KptOption<T>): void {\n if (opt.disabled) return;\n if (this.multiple()) {\n const cur = this.selectedValues();\n this.value.set(this.isSelected(opt) ? cur.filter((v) => v !== opt.value) : [...cur, opt.value]);\n } else {\n this.value.set(opt.value);\n this.close();\n }\n }\n\n protected removeChip(opt: KptOption<T>, event: Event): void {\n event.stopPropagation();\n this.value.set(this.selectedValues().filter((v) => v !== opt.value));\n }\n\n protected onFilterInput(event: Event): void {\n this.filterText.set((event.target as HTMLInputElement).value);\n this.activeIndex.set(-1);\n }\n\n // ── Klawiatura ──\n protected onTriggerKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n if (!this.open()) this.toggleOpen();\n } else if (event.key === 'Escape') {\n this.close();\n }\n }\n\n protected onPanelKeydown(event: KeyboardEvent): void {\n const opts = this.filteredOptions();\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.activeIndex.set(Math.min(this.activeIndex() + 1, opts.length - 1));\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.activeIndex.set(Math.max(this.activeIndex() - 1, 0));\n } else if (event.key === 'Enter') {\n event.preventDefault();\n const opt = opts[this.activeIndex()];\n if (opt) this.pick(opt);\n }\n }\n}\n","<div\n class=\"kpt-select\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n role=\"combobox\"\n tabindex=\"0\"\n [class.kpt-select--open]=\"open()\"\n [class.kpt-select--disabled]=\"disabled()\"\n [class.kpt-select--invalid]=\"invalid()\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"toggleOpen()\"\n (keydown)=\"onTriggerKeydown($event)\"\n (blur)=\"touch.emit()\"\n>\n <div class=\"kpt-select__value\">\n @if (multiple() && selectedOptions().length) {\n @for (opt of selectedOptions(); track opt.value) {\n <span class=\"kpt-select__chip\">\n {{ opt.label }}\n <button type=\"button\" class=\"kpt-select__chip-remove\" (click)=\"removeChip(opt, $event)\" [attr.aria-label]=\"i18n.t('select.removeChip')\">\n <kpt-icon name=\"x\" />\n </button>\n </span>\n }\n } @else if (!multiple() && hasValue()) {\n <span class=\"kpt-select__single\">{{ singleLabel() }}</span>\n } @else {\n <span class=\"kpt-select__placeholder\">{{ placeholder() }}</span>\n }\n </div>\n <kpt-icon class=\"kpt-select__chevron\" name=\"chevron-down\" />\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayWidth]=\"trigger.elementRef.nativeElement.offsetWidth\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div class=\"kpt-select__panel\" (keydown)=\"onPanelKeydown($event)\">\n @if (filter()) {\n <div class=\"kpt-select__search\">\n <kpt-icon name=\"search\" />\n <input\n type=\"text\"\n class=\"kpt-select__search-input\"\n [value]=\"filterText()\"\n (input)=\"onFilterInput($event)\"\n [attr.placeholder]=\"i18n.t('select.search')\"\n />\n </div>\n }\n <ul class=\"kpt-select__list\" role=\"listbox\" [attr.aria-multiselectable]=\"multiple()\">\n @for (opt of filteredOptions(); track opt.value; let i = $index) {\n <li\n class=\"kpt-select__option\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(opt)\"\n [class.kpt-select__option--selected]=\"isSelected(opt)\"\n [class.kpt-select__option--active]=\"i === activeIndex()\"\n [class.kpt-select__option--disabled]=\"opt.disabled\"\n (click)=\"pick(opt)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >\n @if (multiple()) {\n <span class=\"kpt-select__check\" [class.is-on]=\"isSelected(opt)\"><kpt-icon name=\"check\" /></span>\n }\n <span class=\"kpt-select__option-label\">{{ opt.label }}</span>\n @if (!multiple() && isSelected(opt)) {\n <kpt-icon class=\"kpt-select__option-tick\" name=\"check\" />\n }\n </li>\n } @empty {\n <li class=\"kpt-select__empty\">{{ i18n.t('select.noResults') }}</li>\n }\n </ul>\n </div>\n</ng-template>\n","/*\n * Pomocniki nazw dni/miesięcy wyliczane z `Intl` — sterowane bieżącym locale i18n.\n * Dzięki temu kalendarze (`kpt-datepicker`, `kpt-date-range`) nie trzymają\n * zaszytych tablic nazw i działają dla dowolnego języka.\n */\n\n/** Krótkie nazwy dni tygodnia, zaczynając od poniedziałku (Pn…Nd). */\nexport function weekdayNames(locale: string): string[] {\n const fmt = new Intl.DateTimeFormat(locale, { weekday: 'short' });\n // 2024-01-01 (UTC) to poniedziałek.\n return Array.from({ length: 7 }, (_, i) => fmt.format(new Date(Date.UTC(2024, 0, 1 + i))));\n}\n\n/** Pełne nazwy miesięcy (styczeń…grudzień / January…December). */\nexport function monthNames(locale: string): string[] {\n const fmt = new Intl.DateTimeFormat(locale, { month: 'long' });\n return Array.from({ length: 12 }, (_, i) => fmt.format(new Date(Date.UTC(2024, i, 1))));\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n effect,\n input,\n model,\n numberAttribute,\n signal,\n} from '@angular/core';\n\ninterface ClockMark {\n label: string;\n hour24: number; // wartość docelowa (24h) dla godzin, minuta dla minut\n x: number; // % w obrębie tarczy\n y: number;\n inner: boolean;\n selected: boolean;\n}\n\nconst R_OUTER = 40;\nconst R_INNER = 26;\nconst pad = (n: number): string => String(n).padStart(2, '0');\n\n/**\n * Tarcza zegara (wybór godziny) — dwa etapy: godziny → minuty, klik lub przeciąganie.\n * Format 12/24h (`hourFormat`); w 24h dodatkowy wewnętrzny pierścień 13–00, w 12h AM/PM.\n * Wartość `HH:mm` (zawsze 24h). Używana przez `kpt-datepicker` i `kpt-date-range`.\n *\n * @example\n * <kpt-clock [(value)]=\"time\" [hourFormat]=\"12\" [minuteStep]=\"5\" />\n */\n@Component({\n selector: 'kpt-clock',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n <div class=\"kpt-clock\">\n <div class=\"kpt-clock__time\">\n <button type=\"button\" class=\"kpt-clock__seg\" [class.is-active]=\"clockPhase() === 'hours'\" (click)=\"setPhase('hours')\">{{ hourLabel() }}</button>\n <span class=\"kpt-clock__colon\">:</span>\n <button type=\"button\" class=\"kpt-clock__seg\" [class.is-active]=\"clockPhase() === 'minutes'\" (click)=\"setPhase('minutes')\">{{ minuteLabel() }}</button>\n @if (hourFormat() === 12) {\n <div class=\"kpt-clock__ampm\">\n <button type=\"button\" [class.is-active]=\"ampm() === 'AM'\" (click)=\"setAmpm('AM')\">AM</button>\n <button type=\"button\" [class.is-active]=\"ampm() === 'PM'\" (click)=\"setAmpm('PM')\">PM</button>\n </div>\n }\n </div>\n <div\n class=\"kpt-clock__face\"\n #face\n (pointerdown)=\"onDialPointer($event, face)\"\n (pointermove)=\"onDialPointer($event, face)\"\n (pointerup)=\"onDialUp()\"\n >\n <span class=\"kpt-clock__center\"></span>\n <span\n class=\"kpt-clock__hand\"\n [class.kpt-clock__hand--inner]=\"handInner()\"\n [style.transform]=\"'rotate(' + handAngle() + 'deg)'\"\n ></span>\n @if (clockPhase() === 'hours') {\n @for (mark of hourMarks(); track mark.hour24) {\n <button\n type=\"button\"\n class=\"kpt-clock__num\"\n [class.kpt-clock__num--inner]=\"mark.inner\"\n [class.kpt-clock__num--selected]=\"mark.selected\"\n [style.left.%]=\"mark.x\"\n [style.top.%]=\"mark.y\"\n (click)=\"pickHour(mark)\"\n >{{ mark.label }}</button>\n }\n } @else {\n @for (mark of minuteMarks(); track mark.hour24) {\n <button\n type=\"button\"\n class=\"kpt-clock__num\"\n [class.kpt-clock__num--selected]=\"mark.selected\"\n [style.left.%]=\"mark.x\"\n [style.top.%]=\"mark.y\"\n (click)=\"pickMinute(mark)\"\n >{{ mark.label }}</button>\n }\n }\n </div>\n </div>\n `,\n styleUrl: './clock.component.scss',\n host: { class: 'kpt-clock-host' },\n})\nexport class KptClock {\n readonly value = model<string>('');\n readonly hourFormat = input(24, { transform: numberAttribute });\n readonly minuteStep = input(1, { transform: numberAttribute });\n\n protected readonly hour = signal(0);\n protected readonly minute = signal(0);\n protected readonly clockPhase = signal<'hours' | 'minutes'>('hours');\n\n constructor() {\n // Synchronizacja wartości zewnętrznej → stan tarczy (zapis idempotentny, bez pętli).\n effect(() => {\n const t = this.parse(this.value());\n this.hour.set(t?.h ?? 0);\n this.minute.set(t?.m ?? 0);\n });\n }\n\n private parse(v: string): { h: number; m: number } | null {\n const m = /^(\\d{2}):(\\d{2})$/.exec(v ?? '');\n return m ? { h: +m[1], m: +m[2] } : null;\n }\n private emit(): void {\n this.value.set(`${pad(this.hour())}:${pad(this.minute())}`);\n }\n\n protected readonly ampm = computed<'AM' | 'PM'>(() => (this.hour() < 12 ? 'AM' : 'PM'));\n protected readonly hour12 = computed(() => {\n const h = this.hour() % 12;\n return h === 0 ? 12 : h;\n });\n protected readonly hourLabel = computed(() =>\n this.hourFormat() === 12 ? String(this.hour12()) : pad(this.hour()),\n );\n protected readonly minuteLabel = computed(() => pad(this.minute()));\n\n private from12h(h12: number, ap: 'AM' | 'PM'): number {\n const base = h12 % 12; // 12 → 0\n return ap === 'PM' ? base + 12 : base;\n }\n\n protected readonly hourMarks = computed<ClockMark[]>(() => {\n const marks: ClockMark[] = [];\n if (this.hourFormat() === 12) {\n const ap = this.ampm();\n const curH12 = this.hour12();\n for (let i = 0; i < 12; i++) {\n const theta = (i / 12) * 2 * Math.PI;\n const h12 = i === 0 ? 12 : i;\n marks.push({\n label: String(h12),\n hour24: this.from12h(h12, ap),\n x: 50 + R_OUTER * Math.sin(theta),\n y: 50 - R_OUTER * Math.cos(theta),\n inner: false,\n selected: curH12 === h12,\n });\n }\n return marks;\n }\n const cur = this.hour();\n for (let i = 0; i < 12; i++) {\n const theta = (i / 12) * 2 * Math.PI;\n const hour24 = i === 0 ? 12 : i;\n marks.push({\n label: i === 0 ? '12' : String(i),\n hour24,\n x: 50 + R_OUTER * Math.sin(theta),\n y: 50 - R_OUTER * Math.cos(theta),\n inner: false,\n selected: cur === hour24,\n });\n }\n for (let i = 0; i < 12; i++) {\n const theta = (i / 12) * 2 * Math.PI;\n const hour24 = i === 0 ? 0 : i + 12;\n marks.push({\n label: i === 0 ? '00' : String(i + 12),\n hour24,\n x: 50 + R_INNER * Math.sin(theta),\n y: 50 - R_INNER * Math.cos(theta),\n inner: true,\n selected: cur === hour24,\n });\n }\n return marks;\n });\n\n protected readonly minuteMarks = computed<ClockMark[]>(() => {\n const cur = this.minute();\n return Array.from({ length: 12 }, (_, i) => {\n const val = i * 5;\n const theta = (i / 12) * 2 * Math.PI;\n return {\n label: pad(val),\n hour24: val,\n x: 50 + R_OUTER * Math.sin(theta),\n y: 50 - R_OUTER * Math.cos(theta),\n inner: false,\n selected: cur === val,\n };\n });\n });\n\n protected readonly handAngle = computed(() =>\n this.clockPhase() === 'hours' ? (this.hour() % 12) * 30 : this.minute() * 6,\n );\n protected readonly handInner = computed(\n () => this.clockPhase() === 'hours' && this.hourFormat() === 24 && (this.hour() === 0 || this.hour() >= 13),\n );\n\n protected setPhase(phase: 'hours' | 'minutes'): void {\n this.clockPhase.set(phase);\n }\n protected setAmpm(target: 'AM' | 'PM'): void {\n this.hour.set(this.from12h(this.hour12(), target));\n this.emit();\n }\n protected pickHour(mark: ClockMark): void {\n this.hour.set(mark.hour24);\n this.clockPhase.set('minutes');\n this.emit();\n }\n protected pickMinute(mark: ClockMark): void {\n this.minute.set(mark.hour24);\n this.emit();\n }\n\n protected onDialPointer(event: PointerEvent, face: HTMLElement): void {\n if (event.type === 'pointerdown') face.setPointerCapture(event.pointerId);\n else if (!(event.buttons & 1)) return;\n const rect = face.getBoundingClientRect();\n const dx = event.clientX - (rect.left + rect.width / 2);\n const dy = event.clientY - (rect.top + rect.height / 2);\n let deg = (Math.atan2(dx, -dy) * 180) / Math.PI;\n if (deg < 0) deg += 360;\n if (this.clockPhase() === 'hours') {\n const idx = Math.round(deg / 30) % 12;\n if (this.hourFormat() === 12) {\n const h12 = idx === 0 ? 12 : idx;\n this.hour.set(this.from12h(h12, this.ampm()));\n } else {\n const radius = Math.hypot(dx, dy) / (rect.width / 2);\n const inner = radius < (R_OUTER + R_INNER) / 2 / 50;\n this.hour.set(inner ? (idx === 0 ? 0 : idx + 12) : idx === 0 ? 12 : idx);\n }\n } else {\n const step = Math.max(1, this.minuteStep());\n const raw = Math.round(deg / 6) % 60;\n this.minute.set((Math.round(raw / step) * step) % 60);\n }\n this.emit();\n }\n\n protected onDialUp(): void {\n if (this.clockPhase() === 'hours') this.clockPhase.set('minutes');\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, type ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { KptButton } from '../button/button.component';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { monthNames, weekdayNames } from '../i18n/intl';\nimport { KptIcon } from '../icon/icon.component';\nimport { KptClock } from './clock.component';\n\ninterface DayCell {\n day: number;\n iso: string;\n inMonth: boolean;\n today: boolean;\n selected: boolean;\n disabled: boolean;\n}\n\ninterface GridCell {\n label: string;\n value: string;\n selected: boolean;\n disabled: boolean;\n}\n\n/** Granulacja wyboru. */\nexport type KptDatepickerMode = 'date' | 'monthYear' | 'year' | 'month' | 'datetime' | 'time';\n\nconst pad = (n: number): string => String(n).padStart(2, '0');\nconst toIso = (d: Date): string => `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\n\n/**\n * Wybór daty/godziny z własnym kalendarzem (CDK Overlay), Signal Forms.\n * Granulacja przez `selectionMode`: data, miesiąc+rok, rok, miesiąc, data+godzina, sama godzina.\n * Godzina na tarczy zegara (dwa etapy: godziny → minuty), format 12/24h przez `hourFormat`.\n * Format wartości zależy od trybu: 'RRRR-MM-DD' / 'RRRR-MM' / 'RRRR' / 'MM'\n * / 'RRRR-MM-DDTHH:mm' (datetime) / 'HH:mm' (time). Czas przechowywany zawsze 24h.\n * Wymaga stylów overlay CDK: `import '@angular/cdk/overlay-prebuilt.css';`\n *\n * @example\n * <kpt-datepicker [formField]=\"f.birthDate\" minDate=\"1900-01-01\" />\n * <kpt-datepicker selectionMode=\"datetime\" [hourFormat]=\"12\" [(value)]=\"meetingAt\" />\n * <kpt-datepicker selectionMode=\"time\" [(value)]=\"alarm\" />\n */\n@Component({\n selector: 'kpt-datepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon, KptButton, KptClock],\n templateUrl: './datepicker.component.html',\n styleUrl: './datepicker.component.scss',\n host: { class: 'kpt-datepicker-host' },\n})\nexport class KptDatepicker implements FormValueControl<string> {\n readonly value = model<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n readonly placeholder = input('');\n readonly displayFormat = input<'pl' | 'iso'>('pl');\n /** Granulacja wyboru. */\n readonly selectionMode = input<KptDatepickerMode>('date');\n /** Prezentacja miesiąca w trybie 'month': słownie ('long') lub liczbą ('number'). */\n readonly monthDisplay = input<'long' | 'number'>('long');\n /** Format godziny: 24 lub 12 (z AM/PM). */\n readonly hourFormat = input(24, { transform: numberAttribute });\n /** Krok minut (snap na tarczy). */\n readonly minuteStep = input(1, { transform: numberAttribute });\n readonly minDate = input<string | null>(null);\n readonly maxDate = input<string | null>(null);\n\n protected readonly effectivePlaceholder = computed(() => {\n if (this.placeholder()) return this.placeholder();\n const iso = this.displayFormat() === 'iso';\n const time = this.hourFormat() === 12 ? '--:-- --' : '--:--';\n switch (this.selectionMode()) {\n case 'monthYear': return iso ? 'RRRR-MM' : 'MM.RRRR';\n case 'year': return 'RRRR';\n case 'month': return this.monthDisplay() === 'number' ? 'MM' : this.i18n.t('datepicker.month');\n case 'time': return time;\n case 'datetime': return `${iso ? 'RRRR-MM-DD' : 'DD.MM.RRRR'} ${time}`;\n default: return iso ? 'RRRR-MM-DD' : 'DD.MM.RRRR';\n }\n });\n\n protected readonly i18n = inject(KptI18n);\n protected readonly weekdays = computed(() => weekdayNames(this.i18n.locale()));\n private readonly months = computed(() => monthNames(this.i18n.locale()));\n protected readonly open = signal(false);\n private readonly today = new Date();\n private readonly view = signal({ y: this.today.getFullYear(), m: this.today.getMonth() });\n\n // ── Stan czasu (bufor 'HH:mm', 24h) ──\n protected readonly timeStr = signal('');\n protected readonly dtView = signal<'calendar' | 'clock'>('calendar');\n private readonly pendingDate = signal('');\n\n protected readonly positions: ConnectedPosition[] = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n ];\n\n protected readonly viewYear = computed(() => this.view().y);\n protected readonly monthLabel = computed(() => {\n const { y, m } = this.view();\n return `${this.months()[m]} ${y}`;\n });\n protected readonly yearPageStart = computed(() => {\n const y = this.view().y;\n return y - (((y % 12) + 12) % 12);\n });\n protected readonly yearRangeLabel = computed(() => `${this.yearPageStart()} – ${this.yearPageStart() + 11}`);\n\n // ── Prezentacja czasu ──\n private formatTime(h: number, m: number): string {\n if (this.hourFormat() === 12) {\n const h12 = h % 12 === 0 ? 12 : h % 12;\n return `${h12}:${pad(m)} ${h < 12 ? 'AM' : 'PM'}`;\n }\n return `${pad(h)}:${pad(m)}`;\n }\n\n /** Etykieta czasu na pasku trybu datetime (uwzględnia AM/PM). */\n protected readonly timeBarLabel = computed(() => {\n const t = this.parseTime(this.timeStr());\n return this.formatTime(t?.h ?? 0, t?.m ?? 0);\n });\n\n protected readonly display = computed(() => {\n const v = this.value();\n if (!v) return '';\n const iso = this.displayFormat() === 'iso';\n switch (this.selectionMode()) {\n case 'monthYear': {\n const m = /^(\\d{4})-(\\d{2})$/.exec(v);\n return m ? (iso ? v : `${m[2]}.${m[1]}`) : '';\n }\n case 'year':\n return /^\\d{4}$/.test(v) ? v : '';\n case 'month': {\n const m = /^(\\d{2})$/.exec(v);\n if (!m) return '';\n return this.monthDisplay() === 'number' ? m[1] : (this.months()[+m[1] - 1] ?? '');\n }\n case 'time': {\n const t = this.parseTime(v);\n return t ? this.formatTime(t.h, t.m) : '';\n }\n case 'datetime': {\n const dt = this.parseDateTime(v);\n if (!dt) return '';\n const datePart = iso ? dt.date : `${dt.date.slice(8, 10)}.${dt.date.slice(5, 7)}.${dt.date.slice(0, 4)}`;\n const sep = iso ? 'T' : ' ';\n return `${datePart}${sep}${this.formatTime(dt.h, dt.m)}`;\n }\n default: {\n const d = this.parseDate(v);\n if (!d) return '';\n return iso ? toIso(d) : `${pad(d.getDate())}.${pad(d.getMonth() + 1)}.${d.getFullYear()}`;\n }\n }\n });\n\n // ── Siatka dni (tryby 'date' / 'datetime') ──\n private readonly selectedDateIso = computed(() =>\n this.selectionMode() === 'datetime' ? this.pendingDate() : this.value(),\n );\n protected readonly weeks = computed<DayCell[][]>(() => {\n const { y, m } = this.view();\n const first = new Date(y, m, 1);\n const startOffset = (first.getDay() + 6) % 7; // poniedziałek = 0\n const start = new Date(y, m, 1 - startOffset);\n const sel = this.selectedDateIso();\n const min = this.minDate();\n const max = this.maxDate();\n const todayIso = toIso(this.today);\n\n const weeks: DayCell[][] = [];\n for (let w = 0; w < 6; w++) {\n const row: DayCell[] = [];\n for (let d = 0; d < 7; d++) {\n const date = new Date(start.getFullYear(), start.getMonth(), start.getDate() + w * 7 + d);\n const iso = toIso(date);\n row.push({\n day: date.getDate(),\n iso,\n inMonth: date.getMonth() === m,\n today: iso === todayIso,\n selected: iso === sel,\n disabled: (min != null && iso < min) || (max != null && iso > max),\n });\n }\n weeks.push(row);\n }\n return weeks;\n });\n\n // ── Siatka miesięcy (tryby 'monthYear' / 'month') ──\n protected readonly monthCells = computed<GridCell[]>(() => {\n const { y } = this.view();\n const sel = this.value();\n const isMonthOnly = this.selectionMode() === 'month';\n const numeric = this.monthDisplay() === 'number';\n return this.months().map((name, i) => {\n const mm = pad(i + 1);\n const value = isMonthOnly ? mm : `${y}-${mm}`;\n return {\n label: numeric ? mm : name,\n value,\n selected: sel === value,\n disabled: isMonthOnly ? false : this.isMonthYearDisabled(y, i),\n };\n });\n });\n\n // ── Siatka lat (tryb 'year') ──\n protected readonly yearCells = computed<GridCell[]>(() => {\n const start = this.yearPageStart();\n const sel = this.value();\n return Array.from({ length: 12 }, (_, i) => {\n const year = start + i;\n const value = String(year);\n return { label: value, value, selected: sel === value, disabled: this.isYearDisabled(year) };\n });\n });\n\n // ── Parsowanie ──\n private parseDate(iso: string): Date | null {\n const match = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(iso ?? '');\n if (!match) return null;\n return new Date(+match[1], +match[2] - 1, +match[3]);\n }\n private parseTime(v: string): { h: number; m: number } | null {\n const m = /^(\\d{2}):(\\d{2})$/.exec(v ?? '');\n return m ? { h: +m[1], m: +m[2] } : null;\n }\n private parseDateTime(v: string): { date: string; h: number; m: number } | null {\n const m = /^(\\d{4}-\\d{2}-\\d{2})[T ](\\d{2}):(\\d{2})$/.exec(v ?? '');\n return m ? { date: m[1], h: +m[2], m: +m[3] } : null;\n }\n\n private isYearDisabled(year: number): boolean {\n const min = this.minDate();\n const max = this.maxDate();\n if (min && year < +min.slice(0, 4)) return true;\n if (max && year > +max.slice(0, 4)) return true;\n return false;\n }\n private isMonthYearDisabled(y: number, monthIndex: number): boolean {\n const ym = `${y}-${pad(monthIndex + 1)}`;\n const min = this.minDate();\n const max = this.maxDate();\n if (min && ym < min.slice(0, 7)) return true;\n if (max && ym > max.slice(0, 7)) return true;\n return false;\n }\n\n private initialView(): { y: number; m: number } {\n const v = this.value();\n switch (this.selectionMode()) {\n case 'monthYear': {\n const m = /^(\\d{4})-(\\d{2})$/.exec(v);\n return m ? { y: +m[1], m: +m[2] - 1 } : { y: this.today.getFullYear(), m: this.today.getMonth() };\n }\n case 'year':\n return { y: /^\\d{4}$/.test(v) ? +v : this.today.getFullYear(), m: 0 };\n case 'month':\n return { y: this.today.getFullYear(), m: 0 };\n case 'datetime': {\n const dt = this.parseDateTime(v);\n if (dt) {\n const d = this.parseDate(dt.date)!;\n return { y: d.getFullYear(), m: d.getMonth() };\n }\n return { y: this.today.getFullYear(), m: this.today.getMonth() };\n }\n default: {\n const d = this.parseDate(v) ?? this.today;\n return { y: d.getFullYear(), m: d.getMonth() };\n }\n }\n }\n\n private syncTimeFromValue(): void {\n const mode = this.selectionMode();\n if (mode === 'time') {\n const t = this.parseTime(this.value());\n this.timeStr.set(t ? `${pad(t.h)}:${pad(t.m)}` : '00:00');\n } else if (mode === 'datetime') {\n const dt = this.parseDateTime(this.value());\n this.timeStr.set(dt ? `${pad(dt.h)}:${pad(dt.m)}` : '00:00');\n this.pendingDate.set(dt?.date ?? '');\n }\n }\n\n protected toggleOpen(): void {\n if (this.disabled()) return;\n if (!this.open()) {\n this.view.set(this.initialView());\n this.syncTimeFromValue();\n this.dtView.set(this.selectionMode() === 'time' ? 'clock' : 'calendar');\n }\n this.open.update((o) => !o);\n }\n\n protected close(): void {\n if (!this.open()) return;\n this.open.set(false);\n this.touch.emit();\n }\n\n // ── Wybór data/miesiąc/rok ──\n protected selectDay(cell: DayCell): void {\n if (cell.disabled) return;\n if (this.selectionMode() === 'datetime') {\n this.pendingDate.set(cell.iso);\n return; // czas jeszcze do wyboru\n }\n this.value.set(cell.iso);\n this.close();\n }\n protected selectCell(cell: GridCell): void {\n if (cell.disabled) return;\n this.value.set(cell.value);\n this.close();\n }\n\n // ── Zegar (delegowany do kpt-clock przez timeStr) ──\n protected openClock(): void {\n this.dtView.set('clock');\n }\n protected backToCalendar(): void {\n this.dtView.set('calendar');\n }\n\n protected commit(): void {\n const time = this.timeStr() || '00:00';\n if (this.selectionMode() === 'time') {\n this.value.set(time);\n } else {\n const dt = this.parseDateTime(this.value());\n const date = this.pendingDate() || dt?.date || toIso(this.today);\n this.value.set(`${date}T${time}`);\n }\n this.close();\n }\n\n protected prevMonth(): void {\n this.view.update(({ y, m }) => (m === 0 ? { y: y - 1, m: 11 } : { y, m: m - 1 }));\n }\n protected nextMonth(): void {\n this.view.update(({ y, m }) => (m === 11 ? { y: y + 1, m: 0 } : { y, m: m + 1 }));\n }\n protected prevYear(): void {\n this.view.update(({ y, m }) => ({ y: y - 1, m }));\n }\n protected nextYear(): void {\n this.view.update(({ y, m }) => ({ y: y + 1, m }));\n }\n protected prevYearPage(): void {\n this.view.update(({ y, m }) => ({ y: y - 12, m }));\n }\n protected nextYearPage(): void {\n this.view.update(({ y, m }) => ({ y: y + 12, m }));\n }\n protected clear(event: Event): void {\n event.stopPropagation();\n this.value.set('');\n this.pendingDate.set('');\n }\n}\n","<div\n class=\"kpt-datepicker\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n role=\"button\"\n tabindex=\"0\"\n [class.kpt-datepicker--open]=\"open()\"\n [class.kpt-datepicker--disabled]=\"disabled()\"\n [class.kpt-datepicker--invalid]=\"invalid()\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"toggleOpen()\"\n (keydown.enter)=\"toggleOpen()\"\n (blur)=\"touch.emit()\"\n>\n @if (display()) {\n <span class=\"kpt-datepicker__value\">{{ display() }}</span>\n } @else {\n <span class=\"kpt-datepicker__placeholder\">{{ effectivePlaceholder() }}</span>\n }\n <span class=\"kpt-datepicker__spacer\"></span>\n @if (display()) {\n <button type=\"button\" class=\"kpt-datepicker__clear\" (click)=\"clear($event)\" [attr.aria-label]=\"i18n.t('common.clear')\"><kpt-icon name=\"x\" /></button>\n }\n <kpt-icon class=\"kpt-datepicker__icon\" name=\"calendar\" />\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div class=\"kpt-calendar\" [class.kpt-calendar--clock]=\"selectionMode() === 'time' || (selectionMode() === 'datetime' && dtView() === 'clock')\" (keydown.escape)=\"close()\">\n @switch (selectionMode()) {\n @case ('time') {\n <kpt-clock [(value)]=\"timeStr\" [hourFormat]=\"hourFormat()\" [minuteStep]=\"minuteStep()\" />\n <div class=\"kpt-calendar__footer\">\n <kpt-button size=\"sm\" (click)=\"commit()\">{{ i18n.t('common.done') }}</kpt-button>\n </div>\n }\n @case ('datetime') {\n @if (dtView() === 'calendar') {\n <div class=\"kpt-calendar__header\">\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"prevMonth()\" [attr.aria-label]=\"i18n.t('datepicker.prevMonth')\"><kpt-icon name=\"chevron-left\" /></button>\n <span class=\"kpt-calendar__title\">{{ monthLabel() }}</span>\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"nextMonth()\" [attr.aria-label]=\"i18n.t('datepicker.nextMonth')\"><kpt-icon name=\"chevron-right\" /></button>\n </div>\n <div class=\"kpt-calendar__weekdays\">\n @for (wd of weekdays(); track wd) {\n <span class=\"kpt-calendar__weekday\">{{ wd }}</span>\n }\n </div>\n <div class=\"kpt-calendar__grid\">\n @for (week of weeks(); track $index) {\n @for (cell of week; track cell.iso) {\n <button\n type=\"button\"\n class=\"kpt-calendar__day\"\n [class.kpt-calendar__day--muted]=\"!cell.inMonth\"\n [class.kpt-calendar__day--today]=\"cell.today\"\n [class.kpt-calendar__day--selected]=\"cell.selected\"\n [disabled]=\"cell.disabled\"\n [attr.aria-pressed]=\"cell.selected\"\n (click)=\"selectDay(cell)\"\n >{{ cell.day }}</button>\n }\n }\n </div>\n <button type=\"button\" class=\"kpt-calendar__timebar\" (click)=\"openClock()\">\n <kpt-icon name=\"clock\" />\n <span>{{ timeBarLabel() }}</span>\n </button>\n } @else {\n <div class=\"kpt-calendar__header\">\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"backToCalendar()\" [attr.aria-label]=\"i18n.t('datepicker.calendar')\"><kpt-icon name=\"chevron-left\" /></button>\n <span class=\"kpt-calendar__title\">{{ i18n.t('datepicker.time') }}</span>\n </div>\n <kpt-clock [(value)]=\"timeStr\" [hourFormat]=\"hourFormat()\" [minuteStep]=\"minuteStep()\" />\n }\n <div class=\"kpt-calendar__footer\">\n <kpt-button size=\"sm\" (click)=\"commit()\">{{ i18n.t('common.done') }}</kpt-button>\n </div>\n }\n @case ('monthYear') {\n <div class=\"kpt-calendar__header\">\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"prevYear()\" [attr.aria-label]=\"i18n.t('datepicker.prevYear')\"><kpt-icon name=\"chevron-left\" /></button>\n <span class=\"kpt-calendar__title\">{{ viewYear() }}</span>\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"nextYear()\" [attr.aria-label]=\"i18n.t('datepicker.nextYear')\"><kpt-icon name=\"chevron-right\" /></button>\n </div>\n <div class=\"kpt-calendar__grid kpt-calendar__grid--cells\">\n @for (cell of monthCells(); track cell.value) {\n <button\n type=\"button\"\n class=\"kpt-calendar__cell\"\n [class.kpt-calendar__cell--selected]=\"cell.selected\"\n [disabled]=\"cell.disabled\"\n [attr.aria-pressed]=\"cell.selected\"\n (click)=\"selectCell(cell)\"\n >{{ cell.label }}</button>\n }\n </div>\n }\n @case ('year') {\n <div class=\"kpt-calendar__header\">\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"prevYearPage()\" [attr.aria-label]=\"i18n.t('datepicker.prevYears')\"><kpt-icon name=\"chevron-left\" /></button>\n <span class=\"kpt-calendar__title\">{{ yearRangeLabel() }}</span>\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"nextYearPage()\" [attr.aria-label]=\"i18n.t('datepicker.nextYears')\"><kpt-icon name=\"chevron-right\" /></button>\n </div>\n <div class=\"kpt-calendar__grid kpt-calendar__grid--cells\">\n @for (cell of yearCells(); track cell.value) {\n <button\n type=\"button\"\n class=\"kpt-calendar__cell\"\n [class.kpt-calendar__cell--selected]=\"cell.selected\"\n [disabled]=\"cell.disabled\"\n [attr.aria-pressed]=\"cell.selected\"\n (click)=\"selectCell(cell)\"\n >{{ cell.label }}</button>\n }\n </div>\n }\n @case ('month') {\n <div class=\"kpt-calendar__header\">\n <span class=\"kpt-calendar__title\">{{ i18n.t('datepicker.month') }}</span>\n </div>\n <div class=\"kpt-calendar__grid kpt-calendar__grid--cells\">\n @for (cell of monthCells(); track cell.value) {\n <button\n type=\"button\"\n class=\"kpt-calendar__cell\"\n [class.kpt-calendar__cell--selected]=\"cell.selected\"\n [attr.aria-pressed]=\"cell.selected\"\n (click)=\"selectCell(cell)\"\n >{{ cell.label }}</button>\n }\n </div>\n }\n @default {\n <div class=\"kpt-calendar__header\">\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"prevMonth()\" [attr.aria-label]=\"i18n.t('datepicker.prevMonth')\"><kpt-icon name=\"chevron-left\" /></button>\n <span class=\"kpt-calendar__title\">{{ monthLabel() }}</span>\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"nextMonth()\" [attr.aria-label]=\"i18n.t('datepicker.nextMonth')\"><kpt-icon name=\"chevron-right\" /></button>\n </div>\n <div class=\"kpt-calendar__weekdays\">\n @for (wd of weekdays(); track wd) {\n <span class=\"kpt-calendar__weekday\">{{ wd }}</span>\n }\n </div>\n <div class=\"kpt-calendar__grid\">\n @for (week of weeks(); track $index) {\n @for (cell of week; track cell.iso) {\n <button\n type=\"button\"\n class=\"kpt-calendar__day\"\n [class.kpt-calendar__day--muted]=\"!cell.inMonth\"\n [class.kpt-calendar__day--today]=\"cell.today\"\n [class.kpt-calendar__day--selected]=\"cell.selected\"\n [disabled]=\"cell.disabled\"\n [attr.aria-pressed]=\"cell.selected\"\n (click)=\"selectDay(cell)\"\n >{{ cell.day }}</button>\n }\n }\n </div>\n }\n }\n </div>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n afterNextRender,\n booleanAttribute,\n input,\n model,\n output,\n viewChild,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\n\n/**\n * Pole wieloliniowe (textarea) na Signal Forms, z opcjonalnym auto-resize.\n *\n * @example\n * <kpt-textarea [formField]=\"f.notes\" placeholder=\"Notatki…\" autoResize />\n */\n@Component({\n selector: 'kpt-textarea',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n <textarea\n #ta\n class=\"kpt-textarea__field\"\n [value]=\"value()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [rows]=\"rows()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"touch.emit()\"\n ></textarea>\n `,\n styleUrl: './textarea.component.scss',\n host: { class: 'kpt-textarea-host' },\n})\nexport class KptTextarea implements FormValueControl<string> {\n readonly value = model<string>('');\n readonly placeholder = input('');\n readonly rows = input(3);\n readonly autoResize = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n\n private readonly ta = viewChild<ElementRef<HTMLTextAreaElement>>('ta');\n\n constructor() {\n afterNextRender(() => {\n if (this.autoResize()) this.resize();\n });\n }\n\n protected onInput(event: Event): void {\n this.value.set((event.target as HTMLTextAreaElement).value);\n if (this.autoResize()) this.resize();\n }\n\n private resize(): void {\n const el = this.ta()?.nativeElement;\n if (!el) return;\n el.style.height = 'auto';\n el.style.height = `${el.scrollHeight}px`;\n }\n}\n","import { Directive, ElementRef, OnDestroy, inject, input } from '@angular/core';\n\nexport type KptTooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\n/**\n * Dymek podpowiedzi (tooltip) pokazywany na hover/focus hosta. Lekki — element dodawany\n * do `body` i pozycjonowany względem hosta (działa w trybie zoneless).\n *\n * @example\n * <kpt-button kptTooltip=\"Zapisz zmiany\" kptTooltipPosition=\"bottom\">Zapisz</kpt-button>\n */\n@Directive({\n selector: '[kptTooltip]',\n host: {\n '(mouseenter)': 'show()',\n '(mouseleave)': 'hide()',\n '(focus)': 'show()',\n '(blur)': 'hide()',\n },\n})\nexport class KptTooltip implements OnDestroy {\n readonly text = input.required<string>({ alias: 'kptTooltip' });\n readonly position = input<KptTooltipPosition>('top', { alias: 'kptTooltipPosition' });\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private tip?: HTMLElement;\n\n protected show(): void {\n if (this.tip || !this.text()) return;\n const tip = document.createElement('div');\n tip.className = 'kpt-tooltip';\n tip.setAttribute('role', 'tooltip');\n tip.textContent = this.text();\n tip.style.cssText =\n 'position:fixed;z-index:1400;max-width:16rem;padding:0.35rem 0.6rem;' +\n 'border-radius:var(--kpt-radius-sm,0.25rem);font-size:var(--kpt-font-size-xs,0.75rem);' +\n 'line-height:1.4;background:var(--kpt-color-on-surface);color:var(--kpt-color-surface);' +\n 'box-shadow:var(--kpt-elevation-2);pointer-events:none;opacity:0;transition:opacity 120ms;';\n document.body.appendChild(tip);\n this.tip = tip;\n this.reposition();\n requestAnimationFrame(() => {\n if (this.tip) this.tip.style.opacity = '1';\n });\n }\n\n protected hide(): void {\n this.tip?.remove();\n this.tip = undefined;\n }\n\n private reposition(): void {\n const tip = this.tip;\n if (!tip) return;\n const r = this.host.nativeElement.getBoundingClientRect();\n const t = tip.getBoundingClientRect();\n const gap = 8;\n let top: number;\n let left: number;\n switch (this.position()) {\n case 'bottom':\n top = r.bottom + gap;\n left = r.left + r.width / 2 - t.width / 2;\n break;\n case 'left':\n top = r.top + r.height / 2 - t.height / 2;\n left = r.left - t.width - gap;\n break;\n case 'right':\n top = r.top + r.height / 2 - t.height / 2;\n left = r.right + gap;\n break;\n default:\n top = r.top - t.height - gap;\n left = r.left + r.width / 2 - t.width / 2;\n }\n tip.style.top = `${Math.max(4, top)}px`;\n tip.style.left = `${Math.max(4, left)}px`;\n }\n\n ngOnDestroy(): void {\n this.hide();\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, type ConnectedPosition } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\nimport type { KptIconName } from '../icon/icons';\nimport { KptTooltip } from '../tooltip/tooltip.directive';\n\nexport type KptRichTool =\n | 'copy' | 'paste' | 'pasteText'\n | 'heading' | 'bold' | 'italic' | 'underline' | 'strike' | 'ul' | 'ol'\n | 'foreColor' | 'backColor'\n | 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify'\n | 'link' | 'table' | 'clear' | 'html';\n\n/** Pasek: płaska lista narzędzi lub grupy (sekcje rozdzielone separatorem). */\nexport type KptRichToolbar = KptRichTool[] | KptRichTool[][];\n\nconst ICON: Record<KptRichTool, KptIconName> = {\n copy: 'copy',\n paste: 'clipboard',\n pasteText: 'clipboard-text',\n heading: 'code', // nieużywane (heading renderuje select)\n bold: 'bold',\n italic: 'italic',\n underline: 'underline',\n strike: 'strikethrough',\n ul: 'list',\n ol: 'list-numbers',\n foreColor: 'palette',\n backColor: 'highlight',\n alignLeft: 'align-left',\n alignCenter: 'align-center',\n alignRight: 'align-right',\n alignJustify: 'align-justified',\n link: 'link',\n table: 'table',\n clear: 'clear-formatting',\n html: 'code',\n};\n\n/** Narzędzia zwykłe → komenda execCommand + nazwa queryCommandState (dla stanu aktywnego). */\nconst COMMAND: Partial<Record<KptRichTool, string>> = {\n bold: 'bold',\n italic: 'italic',\n underline: 'underline',\n strike: 'strikeThrough',\n ul: 'insertUnorderedList',\n ol: 'insertOrderedList',\n alignLeft: 'justifyLeft',\n alignCenter: 'justifyCenter',\n alignRight: 'justifyRight',\n alignJustify: 'justifyFull',\n clear: 'removeFormat',\n};\n\nconst SWATCHES = [\n '#000000', '#434343', '#666666', '#999999', '#b7b7b7', '#cccccc', '#ffffff',\n '#e11d48', '#ea580c', '#ca8a04', '#16a34a', '#0891b2', '#2563eb', '#7c3aed',\n];\n\nconst DEFAULT_TOOLBAR: KptRichTool[][] = [\n ['copy', 'paste', 'pasteText'],\n ['heading', 'bold', 'italic', 'underline', 'strike', 'ul', 'ol'],\n ['foreColor', 'backColor'],\n ['alignLeft', 'alignCenter', 'alignRight', 'alignJustify'],\n ['link', 'table', 'clear', 'html'],\n];\n\n// Allowlisty sanityzacji wklejanego HTML.\nconst ALLOWED_TAGS = new Set([\n 'P', 'BR', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'B', 'STRONG', 'I', 'EM', 'U', 'S', 'STRIKE',\n 'UL', 'OL', 'LI', 'A', 'SPAN', 'DIV', 'BLOCKQUOTE', 'FONT',\n 'TABLE', 'THEAD', 'TBODY', 'TFOOT', 'TR', 'TD', 'TH', 'COLGROUP', 'COL', 'CAPTION',\n]);\nconst ALLOWED_STYLES = new Set([\n 'color', 'background-color', 'text-align', 'font-weight', 'font-style', 'text-decoration',\n 'width', 'height', 'border', 'border-color', 'border-width', 'border-style', 'vertical-align',\n]);\nconst ALLOWED_ATTRS = new Set(['colspan', 'rowspan', 'span', 'width', 'class']);\n\n/**\n * Lekki edytor tekstu sformatowanego (contenteditable) z konfigurowalnym paskiem sekcji.\n * Narzędzia: schowek (kopiuj / wklej / wklej bez formatowania), styl (nagłówki H1–H6 / paragraf),\n * bold/italic/underline/strike/ul/ol, kolor tekstu i tła (popover), wyrównania, link, czyszczenie.\n * `toolbar` przyjmuje płaską listę lub grupy (sekcje). Wartość = HTML. Signal Forms.\n * Wymaga stylów overlay CDK (popover kolorów): `import '@angular/cdk/overlay-prebuilt.css';`\n *\n * @example\n * <kpt-rich-text [formField]=\"f.body\" />\n * <kpt-rich-text [(value)]=\"v\" [toolbar]=\"[['bold','italic'],['ul','ol'],['link']]\" />\n */\n@Component({\n selector: 'kpt-rich-text',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon, CdkOverlayOrigin, CdkConnectedOverlay, NgTemplateOutlet, KptTooltip],\n templateUrl: './rich-text.component.html',\n styleUrl: './rich-text.component.scss',\n host: { class: 'kpt-rich-text-host' },\n})\nexport class KptRichText implements FormValueControl<string> {\n readonly value = model<string>('');\n readonly toolbar = input<KptRichToolbar>(DEFAULT_TOOLBAR);\n readonly placeholder = input('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n\n protected readonly i18n = inject(KptI18n);\n protected readonly swatches = SWATCHES;\n private readonly editor = viewChild<ElementRef<HTMLElement>>('editor');\n private savedRange: Range | null = null;\n\n protected readonly colorOpen = signal(false);\n protected readonly colorKind = signal<'foreColor' | 'backColor' | 'cellBg'>('foreColor');\n protected readonly sourceView = signal(false);\n protected readonly styleOpen = signal(false);\n\n // ── Tabele ──\n protected readonly tableOpen = signal(false); // popover siatki wstawiania\n protected readonly gridR = signal(0);\n protected readonly gridC = signal(0);\n protected readonly gridRows = Array.from({ length: 8 }, (_, i) => i + 1);\n protected readonly gridCols = Array.from({ length: 8 }, (_, i) => i + 1);\n protected readonly menuOpen = signal(false); // menu kontekstowe\n protected readonly menuPoint = signal<{ x: number; y: number }>({ x: 0, y: 0 });\n protected readonly borderOpen = signal(false);\n protected readonly borderTarget = signal<'table' | 'cell'>('table');\n private ctxCell: HTMLTableCellElement | null = null;\n private resize: { col: HTMLTableColElement; startX: number; startW: number } | null = null;\n // Zaznaczanie wielu komórek\n protected readonly selCount = signal(0);\n private selCells = new Set<HTMLTableCellElement>();\n private selAnchor: HTMLTableCellElement | null = null;\n private selecting = false;\n private canSplitCtx = false;\n\n protected readonly styleOptions = computed<{ tag: string; label: string }[]>(() => [\n { tag: 'p', label: this.i18n.t('richText.styleNormal') },\n { tag: 'h1', label: this.i18n.t('richText.styleHeading', { level: 1 }) },\n { tag: 'h2', label: this.i18n.t('richText.styleHeading', { level: 2 }) },\n { tag: 'h3', label: this.i18n.t('richText.styleHeading', { level: 3 }) },\n { tag: 'h4', label: this.i18n.t('richText.styleHeading', { level: 4 }) },\n { tag: 'h5', label: this.i18n.t('richText.styleHeading', { level: 5 }) },\n { tag: 'h6', label: this.i18n.t('richText.styleHeading', { level: 6 }) },\n ]);\n protected readonly styleLabel = computed(\n () => this.styleOptions().find((o) => o.tag === this.currentBlock())?.label ?? this.i18n.t('richText.styleNormal'),\n );\n protected readonly activeCmds = signal<Set<string>>(new Set());\n protected readonly currentBlock = signal<string>('p');\n\n protected readonly positions: ConnectedPosition[] = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n ];\n\n /** Sekcje paska (normalizacja płaskiej listy do jednej grupy). */\n protected readonly sections = computed<KptRichTool[][]>(() => {\n const t = this.toolbar();\n if (t.length === 0) return [];\n return Array.isArray(t[0]) ? (t as KptRichTool[][]) : [t as KptRichTool[]];\n });\n\n constructor() {\n // Synchronizuj tylko przy zmianie zewnętrznej (bez resetu kursora podczas pisania).\n effect(() => {\n const el = this.editor()?.nativeElement;\n const v = this.value();\n if (el && el.innerHTML !== v) el.innerHTML = v;\n });\n\n // Odzwierciedlenie stanu aktywnego narzędzi na podstawie zaznaczenia.\n const onSel = () => this.refreshState();\n const onMove = (e: MouseEvent) => this.onResizeMove(e);\n const onUp = () => this.onResizeEnd();\n document.addEventListener('selectionchange', onSel);\n document.addEventListener('mousemove', onMove);\n document.addEventListener('mouseup', onUp);\n inject(DestroyRef).onDestroy(() => {\n document.removeEventListener('selectionchange', onSel);\n document.removeEventListener('mousemove', onMove);\n document.removeEventListener('mouseup', onUp);\n });\n }\n\n protected icon(item: KptRichTool): KptIconName {\n return ICON[item];\n }\n protected aria(item: KptRichTool): string {\n return this.i18n.t(`richText.${item}`);\n }\n protected isActive(item: KptRichTool): boolean {\n if (item === 'html') return this.sourceView();\n const cmd = COMMAND[item];\n return !!cmd && this.activeCmds().has(cmd);\n }\n\n private inEditor(): boolean {\n const el = this.editor()?.nativeElement;\n const sel = window.getSelection();\n return !!el && !!sel && sel.rangeCount > 0 && el.contains(sel.anchorNode);\n }\n\n private refreshState(): void {\n if (this.disabled() || !this.inEditor()) return;\n const active = new Set<string>();\n for (const cmd of Object.values(COMMAND)) {\n if (cmd && cmd !== 'removeFormat') {\n try {\n if (document.queryCommandState(cmd)) active.add(cmd);\n } catch {\n /* nieobsługiwana komenda */\n }\n }\n }\n this.activeCmds.set(active);\n // Bieżący blok (dla selecta stylu).\n const sel = window.getSelection();\n let node = sel?.anchorNode as HTMLElement | null;\n while (node && node !== this.editor()?.nativeElement) {\n const tag = node.tagName?.toLowerCase();\n if (tag && /^(h[1-6]|p|blockquote)$/.test(tag)) {\n this.currentBlock.set(tag);\n return;\n }\n node = node.parentElement;\n }\n this.currentBlock.set('p');\n }\n\n protected onInput(): void {\n const el = this.editor()?.nativeElement;\n if (el) this.value.set(el.innerHTML);\n }\n protected onSource(event: Event): void {\n this.value.set((event.target as HTMLTextAreaElement).value);\n }\n\n private focusEditor(): void {\n this.editor()?.nativeElement.focus();\n }\n private saveSelection(): void {\n const sel = window.getSelection();\n this.savedRange = sel && sel.rangeCount > 0 ? sel.getRangeAt(0).cloneRange() : null;\n }\n private restoreSelection(): void {\n const sel = window.getSelection();\n if (this.savedRange && sel) {\n sel.removeAllRanges();\n sel.addRange(this.savedRange);\n }\n }\n\n protected exec(item: KptRichTool): void {\n if (this.disabled()) return;\n if (item === 'html') {\n this.sourceView.update((v) => !v);\n return;\n }\n if (item === 'table') {\n this.saveSelection();\n this.tableOpen.set(true);\n return;\n }\n this.focusEditor();\n switch (item) {\n case 'link': {\n const url = window.prompt(this.i18n.t('richText.linkPrompt'));\n if (url) document.execCommand('createLink', false, url);\n break;\n }\n case 'copy':\n document.execCommand('copy');\n break;\n case 'paste':\n void this.pasteRich();\n return;\n case 'pasteText':\n void this.pastePlain();\n return;\n default: {\n const cmd = COMMAND[item];\n if (cmd) document.execCommand(cmd);\n }\n }\n this.onInput();\n this.refreshState();\n }\n\n // ── Styl bloku (dropdown w stylu kpt-select, z podglądem wielkości) ──\n protected openStyle(): void {\n if (this.disabled()) return;\n this.saveSelection();\n this.styleOpen.set(true);\n }\n protected closeStyle(): void {\n this.styleOpen.set(false);\n }\n protected pickStyle(tag: string): void {\n this.styleOpen.set(false);\n this.focusEditor();\n this.restoreSelection();\n document.execCommand('formatBlock', false, `<${tag}>`);\n this.onInput();\n this.refreshState();\n }\n\n // ── Kolory ──\n protected openColor(kind: 'foreColor' | 'backColor'): void {\n if (this.disabled()) return;\n this.saveSelection();\n this.colorKind.set(kind);\n this.colorOpen.set(true);\n }\n protected closeColor(): void {\n this.colorOpen.set(false);\n }\n protected applyColor(color: string): void {\n this.colorOpen.set(false);\n if (this.colorKind() === 'cellBg') {\n for (const cell of this.activeCells()) cell.style.backgroundColor = color;\n this.onInput();\n return;\n }\n this.focusEditor();\n this.restoreSelection();\n if (this.colorKind() === 'foreColor') {\n document.execCommand('foreColor', false, color);\n } else if (!document.execCommand('hiliteColor', false, color)) {\n document.execCommand('backColor', false, color);\n }\n this.onInput();\n }\n protected onColorInput(event: Event): void {\n this.applyColor((event.target as HTMLInputElement).value);\n }\n\n // ── Schowek ──\n private async pasteRich(): Promise<void> {\n try {\n const items = await navigator.clipboard.read();\n for (const it of items) {\n if (it.types.includes('text/html')) {\n const blob = await it.getType('text/html');\n const html = this.sanitizeHtml(await blob.text());\n this.focusEditor();\n document.execCommand('insertHTML', false, html);\n this.onInput();\n return;\n }\n }\n const text = await navigator.clipboard.readText();\n this.focusEditor();\n document.execCommand('insertText', false, text);\n this.onInput();\n } catch {\n /* brak uprawnień / brak API — ignoruj */\n }\n }\n private async pastePlain(): Promise<void> {\n try {\n const text = await navigator.clipboard.readText();\n this.focusEditor();\n document.execCommand('insertText', false, text);\n this.onInput();\n } catch {\n /* brak uprawnień / brak API — ignoruj */\n }\n }\n\n /** Natywne wklejanie — oczyść (bez śmieci z Worda/WWW). */\n protected onPaste(event: ClipboardEvent): void {\n if (this.disabled()) return;\n const html = event.clipboardData?.getData('text/html');\n const text = event.clipboardData?.getData('text/plain') ?? '';\n event.preventDefault();\n if (html) {\n document.execCommand('insertHTML', false, this.sanitizeHtml(html));\n } else {\n document.execCommand('insertText', false, text);\n }\n this.onInput();\n }\n\n // ── Tabele: wstawianie ──\n protected closeTable(): void {\n this.tableOpen.set(false);\n this.gridR.set(0);\n this.gridC.set(0);\n }\n protected gridHover(r: number, c: number): void {\n this.gridR.set(r);\n this.gridC.set(c);\n }\n protected insertTable(rows: number, cols: number): void {\n this.closeTable();\n this.focusEditor();\n this.restoreSelection();\n const w = (100 / cols).toFixed(4);\n const colgroup = `<colgroup>${Array.from({ length: cols }, () => `<col style=\"width:${w}%\">`).join('')}</colgroup>`;\n const row = `<tr>${Array.from({ length: cols }, () => '<td><br></td>').join('')}</tr>`;\n const body = `<tbody>${Array.from({ length: rows }, () => row).join('')}</tbody>`;\n const table = `<table class=\"kpt-rt-table\">${colgroup}${body}</table>`;\n document.execCommand('insertHTML', false, `${table}<p><br></p>`);\n this.onInput();\n }\n\n // ── Tabele: menu kontekstowe ──\n protected onContextMenu(event: MouseEvent): void {\n if (this.disabled()) return;\n const cell = (event.target as HTMLElement).closest('td, th') as HTMLTableCellElement | null;\n const editor = this.editor()?.nativeElement;\n if (!cell || !editor?.contains(cell)) return; // poza tabelą → natywne menu\n event.preventDefault();\n this.ctxCell = cell;\n this.canSplitCtx = (cell.colSpan || 1) > 1 || (cell.rowSpan || 1) > 1;\n this.menuPoint.set({ x: event.clientX, y: event.clientY });\n this.menuOpen.set(true);\n }\n protected closeMenu(): void {\n this.menuOpen.set(false);\n }\n\n private ctxTable(): HTMLTableElement | null {\n return this.ctxCell?.closest('table') ?? null;\n }\n private afterTableOp(): void {\n this.menuOpen.set(false);\n this.onInput();\n }\n\n protected insertColumn(dir: 'left' | 'right'): void {\n const cell = this.ctxCell;\n const table = this.ctxTable();\n if (!cell || !table) return;\n const idx = cell.cellIndex + (dir === 'right' ? 1 : 0);\n for (const tr of Array.from(table.rows)) {\n const td = document.createElement('td');\n td.innerHTML = '<br>';\n tr.insertBefore(td, tr.cells[idx] ?? null);\n }\n const colgroup = table.querySelector('colgroup');\n if (colgroup) {\n const col = document.createElement('col');\n colgroup.insertBefore(col, colgroup.children[idx] ?? null);\n this.normalizeColWidths(table);\n }\n this.afterTableOp();\n }\n protected deleteColumn(): void {\n const cell = this.ctxCell;\n const table = this.ctxTable();\n if (!cell || !table) return;\n const idx = cell.cellIndex;\n if ((table.rows[0]?.cells.length ?? 0) <= 1) {\n table.remove();\n this.afterTableOp();\n return;\n }\n for (const tr of Array.from(table.rows)) tr.cells[idx]?.remove();\n table.querySelector('colgroup')?.children[idx]?.remove();\n this.normalizeColWidths(table);\n this.afterTableOp();\n }\n protected insertRow(dir: 'above' | 'below'): void {\n const cell = this.ctxCell;\n const table = this.ctxTable();\n if (!cell || !table) return;\n const tr = cell.parentElement as HTMLTableRowElement;\n const cols = tr.cells.length;\n const newRow = document.createElement('tr');\n newRow.innerHTML = Array.from({ length: cols }, () => '<td><br></td>').join('');\n tr.parentElement?.insertBefore(newRow, dir === 'below' ? tr.nextSibling : tr);\n this.afterTableOp();\n }\n protected deleteRow(): void {\n const cell = this.ctxCell;\n const table = this.ctxTable();\n if (!cell || !table) return;\n if (table.rows.length <= 1) {\n table.remove();\n this.afterTableOp();\n return;\n }\n (cell.parentElement as HTMLTableRowElement).remove();\n this.afterTableOp();\n }\n /** Zamień komórki wiersza między `<td>` a `<th>` (wiersz nagłówka). */\n protected toggleHeaderRow(): void {\n const cell = this.ctxCell;\n if (!cell) return;\n const tr = cell.parentElement as HTMLTableRowElement;\n const toHeader = tr.cells[0]?.tagName !== 'TH';\n for (const c of Array.from(tr.cells)) this.swapCellTag(c, toHeader ? 'th' : 'td');\n this.ctxCell = null; // komórki zostały podmienione\n this.afterTableOp();\n }\n /** Zamień komórki kolumny między `<td>` a `<th>` (kolumna nagłówka). */\n protected toggleHeaderColumn(): void {\n const cell = this.ctxCell;\n const table = this.ctxTable();\n if (!cell || !table) return;\n const idx = cell.cellIndex;\n const toHeader = cell.tagName !== 'TH';\n for (const tr of Array.from(table.rows)) {\n const c = tr.cells[idx];\n if (c) this.swapCellTag(c, toHeader ? 'th' : 'td');\n }\n this.ctxCell = null;\n this.afterTableOp();\n }\n private swapCellTag(cell: HTMLTableCellElement, tag: 'td' | 'th'): void {\n if (cell.tagName.toLowerCase() === tag) return;\n const el = document.createElement(tag);\n for (const a of Array.from(cell.attributes)) el.setAttribute(a.name, a.value);\n el.append(...Array.from(cell.childNodes));\n cell.replaceWith(el);\n }\n protected deleteTable(): void {\n this.ctxTable()?.remove();\n this.afterTableOp();\n }\n protected alignCell(a: 'left' | 'center' | 'right'): void {\n for (const cell of this.activeCells()) cell.style.textAlign = a;\n this.afterTableOp();\n }\n /** Komórki objęte operacją: zaznaczenie (jeśli jest) lub bieżąca komórka menu. */\n private activeCells(): HTMLTableCellElement[] {\n if (this.selCells.size) return [...this.selCells];\n return this.ctxCell ? [this.ctxCell] : [];\n }\n protected openCellBg(): void {\n this.menuOpen.set(false);\n this.colorKind.set('cellBg');\n this.colorOpen.set(true);\n }\n\n // ── Obramowanie (tabela / komórka) ──\n protected openBorder(): void {\n this.menuOpen.set(false);\n this.borderOpen.set(true);\n }\n protected closeBorder(): void {\n this.borderOpen.set(false);\n }\n private borderCells(): HTMLTableCellElement[] {\n if (this.borderTarget() === 'cell') return this.activeCells();\n const table = this.ctxTable();\n return table ? (Array.from(table.querySelectorAll('td, th')) as HTMLTableCellElement[]) : [];\n }\n protected setBorderWidth(w: 'none' | 'thin' | 'medium' | 'thick'): void {\n const px: Record<string, string> = { thin: '1px', medium: '2px', thick: '3px' };\n for (const cell of this.borderCells()) {\n if (w === 'none') {\n cell.style.borderStyle = 'none';\n cell.style.borderWidth = '';\n } else {\n cell.style.borderStyle = 'solid';\n cell.style.borderWidth = px[w];\n }\n }\n this.onInput();\n }\n protected setBorderColor(color: string): void {\n for (const cell of this.borderCells()) {\n cell.style.borderColor = color;\n if (!cell.style.borderStyle || cell.style.borderStyle === 'none') cell.style.borderStyle = 'solid';\n if (!cell.style.borderWidth) cell.style.borderWidth = '1px';\n }\n this.onInput();\n }\n protected onBorderColorInput(event: Event): void {\n this.setBorderColor((event.target as HTMLInputElement).value);\n }\n private normalizeColWidths(table: HTMLTableElement): void {\n const cols = Array.from(table.querySelectorAll('col'));\n const w = (100 / cols.length).toFixed(4);\n for (const col of cols) (col as HTMLElement).style.width = `${w}%`;\n }\n\n // ── Tabele: resize kolumn + zaznaczanie komórek ──\n protected onEditorMouseDown(event: MouseEvent): void {\n if (this.disabled() || event.button !== 0) return; // tylko lewy przycisk\n const cell = (event.target as HTMLElement).closest('td, th') as HTMLTableCellElement | null;\n if (!cell) {\n this.clearSelection();\n return;\n }\n const rect = cell.getBoundingClientRect();\n if (event.clientX >= rect.right - 6) {\n // Strefa przy prawej krawędzi → resize kolumny.\n const table = cell.closest('table');\n const col = table?.querySelectorAll('col')[cell.cellIndex] as HTMLTableColElement | undefined;\n if (col) {\n event.preventDefault();\n this.resize = { col, startX: event.clientX, startW: col.getBoundingClientRect().width };\n return;\n }\n }\n // Start zaznaczania (potwierdzone dopiero przy ruchu).\n this.clearSelection();\n this.selAnchor = cell;\n this.selecting = false;\n }\n protected onEditorMouseMove(event: MouseEvent): void {\n const cell = (event.target as HTMLElement).closest('td, th') as HTMLTableCellElement | null;\n const editor = this.editor()?.nativeElement;\n if (!editor) return;\n const near = !!cell && event.clientX >= cell.getBoundingClientRect().right - 6;\n editor.classList.toggle('is-col-resize', near || !!this.resize);\n }\n private onResizeMove(event: MouseEvent): void {\n if (this.resize) {\n const w = Math.max(32, this.resize.startW + (event.clientX - this.resize.startX));\n this.resize.col.style.width = `${w}px`;\n return;\n }\n // Przeciąganie zaznaczenia komórek.\n if (!this.selAnchor || !(event.buttons & 1)) return;\n const target = event.target;\n if (!(target instanceof Element)) return;\n const focus = target.closest('td, th') as HTMLTableCellElement | null;\n if (!focus || focus.closest('table') !== this.selAnchor.closest('table')) return;\n if (focus === this.selAnchor && !this.selecting) return;\n this.selecting = true;\n event.preventDefault();\n window.getSelection()?.removeAllRanges();\n this.selectRegion(this.selAnchor, focus);\n }\n private onResizeEnd(): void {\n if (this.resize) {\n this.resize = null;\n this.onInput();\n }\n if (this.selAnchor && !this.selecting) this.clearSelection(); // zwykły klik\n this.selAnchor = null;\n this.selecting = false;\n }\n\n // ── Macierz siatki (uwzględnia colspan/rowspan) ──\n private buildGrid(table: HTMLTableElement): {\n grid: HTMLTableCellElement[][];\n pos: Map<HTMLTableCellElement, { r: number; c: number; rowspan: number; colspan: number }>;\n } {\n const grid: HTMLTableCellElement[][] = [];\n const pos = new Map<HTMLTableCellElement, { r: number; c: number; rowspan: number; colspan: number }>();\n const rows = Array.from(table.rows);\n rows.forEach((tr, r) => {\n grid[r] ??= [];\n let c = 0;\n for (const cell of Array.from(tr.cells)) {\n while (grid[r][c]) c++; // pomiń zajęte przez rowspan wyżej\n const colspan = cell.colSpan || 1;\n const rowspan = cell.rowSpan || 1;\n pos.set(cell, { r, c, rowspan, colspan });\n for (let dr = 0; dr < rowspan; dr++) {\n grid[r + dr] ??= [];\n for (let dc = 0; dc < colspan; dc++) grid[r + dr][c + dc] = cell;\n }\n c += colspan;\n }\n });\n return { grid, pos };\n }\n\n private selectRegion(anchor: HTMLTableCellElement, focus: HTMLTableCellElement): void {\n const table = anchor.closest('table') as HTMLTableElement | null;\n if (!table) return;\n const { grid, pos } = this.buildGrid(table);\n const a = pos.get(anchor);\n const f = pos.get(focus);\n if (!a || !f) return;\n let r0 = Math.min(a.r, f.r);\n let c0 = Math.min(a.c, f.c);\n let r1 = Math.max(a.r + a.rowspan - 1, f.r + f.rowspan - 1);\n let c1 = Math.max(a.c + a.colspan - 1, f.c + f.colspan - 1);\n // Rozszerz region, by w pełni objąć scalone komórki na brzegach.\n for (let changed = true; changed; ) {\n changed = false;\n for (let r = r0; r <= r1; r++) {\n for (let c = c0; c <= c1; c++) {\n const cell = grid[r]?.[c];\n if (!cell) continue;\n const p = pos.get(cell)!;\n if (p.r < r0) { r0 = p.r; changed = true; }\n if (p.c < c0) { c0 = p.c; changed = true; }\n if (p.r + p.rowspan - 1 > r1) { r1 = p.r + p.rowspan - 1; changed = true; }\n if (p.c + p.colspan - 1 > c1) { c1 = p.c + p.colspan - 1; changed = true; }\n }\n }\n }\n const set = new Set<HTMLTableCellElement>();\n for (let r = r0; r <= r1; r++) {\n for (let c = c0; c <= c1; c++) {\n const cell = grid[r]?.[c];\n if (cell) set.add(cell);\n }\n }\n this.clearSelection();\n for (const cell of set) cell.classList.add('kpt-rt-cell-sel');\n this.selCells = set;\n this.selCount.set(set.size);\n }\n\n private clearSelection(): void {\n for (const cell of this.selCells) cell.classList.remove('kpt-rt-cell-sel');\n this.selCells = new Set();\n this.selCount.set(0);\n }\n\n // ── Scalanie / dzielenie ──\n protected mergeCells(): void {\n if (this.selCells.size < 2) return;\n const cells = [...this.selCells];\n const table = cells[0].closest('table') as HTMLTableElement;\n const { pos } = this.buildGrid(table);\n let r0 = Infinity, c0 = Infinity, r1 = -1, c1 = -1;\n for (const cell of cells) {\n const p = pos.get(cell)!;\n r0 = Math.min(r0, p.r); c0 = Math.min(c0, p.c);\n r1 = Math.max(r1, p.r + p.rowspan - 1); c1 = Math.max(c1, p.c + p.colspan - 1);\n }\n const topLeft = cells.find((cell) => { const p = pos.get(cell)!; return p.r === r0 && p.c === c0; }) ?? cells[0];\n // Przenieś niepustą treść pozostałych komórek do górnej-lewej.\n for (const cell of cells) {\n if (cell === topLeft) continue;\n const html = cell.innerHTML.trim();\n if (html && html !== '<br>') topLeft.innerHTML += ` ${html}`;\n cell.remove();\n }\n const colspan = c1 - c0 + 1;\n const rowspan = r1 - r0 + 1;\n if (colspan > 1) topLeft.colSpan = colspan; else topLeft.removeAttribute('colspan');\n if (rowspan > 1) topLeft.rowSpan = rowspan; else topLeft.removeAttribute('rowspan');\n this.clearSelection();\n this.menuOpen.set(false);\n this.onInput();\n }\n protected splitCell(): void {\n const cell = this.ctxCell;\n if (!cell) return;\n const table = cell.closest('table') as HTMLTableElement;\n const { pos } = this.buildGrid(table);\n const p = pos.get(cell);\n if (!p || (p.colspan <= 1 && p.rowspan <= 1)) return;\n const tag = cell.tagName.toLowerCase();\n cell.removeAttribute('colspan');\n cell.removeAttribute('rowspan');\n // Uzupełnij brakujące pozycje siatki pustymi komórkami (dla każdego pokrytego wiersza).\n for (let dr = 0; dr < p.rowspan; dr++) {\n const startCol = dr === 0 ? p.c + 1 : p.c; // origin zostaje w pierwszym wierszu\n const count = dr === 0 ? p.colspan - 1 : p.colspan;\n if (count <= 0) continue;\n const row = table.rows[p.r + dr];\n const before = this.cellBeforeGridCol(row, p.c, table);\n for (let i = 0; i < count; i++) {\n const el = document.createElement(tag);\n el.innerHTML = '<br>';\n row.insertBefore(el, before);\n }\n }\n this.menuOpen.set(false);\n this.onInput();\n }\n /** Komórka w wierszu, przed którą wstawić (pierwsza o origin-col > gridCol), lub null (na koniec). */\n private cellBeforeGridCol(row: HTMLTableRowElement, gridCol: number, table: HTMLTableElement): HTMLTableCellElement | null {\n const { pos } = this.buildGrid(table);\n for (const cell of Array.from(row.cells)) {\n const p = pos.get(cell);\n if (p && p.c > gridCol) return cell;\n }\n return null;\n }\n protected canMerge(): boolean {\n return this.selCells.size >= 2;\n }\n protected canSplit(): boolean {\n return this.canSplitCtx;\n }\n\n private sanitizeHtml(html: string): string {\n const tpl = document.createElement('template');\n tpl.innerHTML = html;\n const walk = (root: ParentNode): void => {\n for (const el of Array.from(root.querySelectorAll('*'))) {\n if (!ALLOWED_TAGS.has(el.tagName)) {\n el.replaceWith(...Array.from(el.childNodes));\n continue;\n }\n for (const attr of Array.from(el.attributes)) {\n const name = attr.name.toLowerCase();\n if (name.startsWith('on')) {\n el.removeAttribute(attr.name);\n } else if (name === 'href' || name === 'src') {\n if (/^\\s*javascript:/i.test(attr.value)) el.removeAttribute(attr.name);\n } else if (name === 'style') {\n const kept = attr.value\n .split(';')\n .map((s) => s.trim())\n .filter((s) => ALLOWED_STYLES.has(s.split(':')[0]?.trim().toLowerCase()));\n if (kept.length) el.setAttribute('style', kept.join('; '));\n else el.removeAttribute('style');\n } else if (!ALLOWED_ATTRS.has(name) && name !== 'color' && el.tagName !== 'A') {\n el.removeAttribute(attr.name);\n }\n }\n }\n };\n walk(tpl.content);\n return tpl.innerHTML;\n }\n}\n","<div class=\"kpt-rich-text\" [class.kpt-rich-text--invalid]=\"invalid()\" [class.kpt-rich-text--disabled]=\"disabled()\">\n <div class=\"kpt-rich-text__toolbar\" role=\"toolbar\">\n @for (section of sections(); track $index; let firstSection = $first) {\n @if (!firstSection) {\n <span class=\"kpt-rich-text__divider\" aria-hidden=\"true\"></span>\n }\n @for (item of section; track item) {\n @switch (item) {\n @case ('heading') {\n <button\n type=\"button\"\n class=\"kpt-rich-text__style\"\n cdkOverlayOrigin\n #styleOrigin=\"cdkOverlayOrigin\"\n [class.is-open]=\"styleOpen()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"aria(item)\"\n [attr.aria-expanded]=\"styleOpen()\"\n [kptTooltip]=\"aria(item)\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"openStyle()\"\n >\n <span>{{ styleLabel() }}</span>\n <kpt-icon name=\"chevron-down\" class=\"kpt-rich-text__style-caret\" />\n </button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"styleOrigin\"\n [cdkConnectedOverlayOpen]=\"styleOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeStyle()\"\n (detach)=\"closeStyle()\"\n >\n <ul class=\"kpt-rich-text__style-panel\" role=\"listbox\">\n @for (o of styleOptions(); track o.tag) {\n <li\n class=\"kpt-rich-text__style-opt\"\n [class]=\"'kpt-rich-text__style-opt kpt-rich-text__style-opt--' + o.tag\"\n role=\"option\"\n [attr.aria-selected]=\"currentBlock() === o.tag\"\n [class.is-selected]=\"currentBlock() === o.tag\"\n (click)=\"pickStyle(o.tag)\"\n >{{ o.label }}</li>\n }\n </ul>\n </ng-template>\n }\n @case ('foreColor') {\n <button\n type=\"button\"\n class=\"kpt-rich-text__tool kpt-rich-text__tool--color\"\n cdkOverlayOrigin\n #foreOrigin=\"cdkOverlayOrigin\"\n [attr.aria-label]=\"aria(item)\"\n [kptTooltip]=\"aria(item)\"\n [disabled]=\"disabled()\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"openColor('foreColor')\"\n >\n <kpt-icon [name]=\"icon(item)\" />\n </button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"foreOrigin\"\n [cdkConnectedOverlayOpen]=\"colorOpen() && colorKind() === 'foreColor'\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeColor()\"\n (detach)=\"closeColor()\"\n >\n <ng-container [ngTemplateOutlet]=\"paletteTpl\" />\n </ng-template>\n }\n @case ('backColor') {\n <button\n type=\"button\"\n class=\"kpt-rich-text__tool kpt-rich-text__tool--color\"\n cdkOverlayOrigin\n #backOrigin=\"cdkOverlayOrigin\"\n [attr.aria-label]=\"aria(item)\"\n [kptTooltip]=\"aria(item)\"\n [disabled]=\"disabled()\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"openColor('backColor')\"\n >\n <kpt-icon [name]=\"icon(item)\" />\n </button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"backOrigin\"\n [cdkConnectedOverlayOpen]=\"colorOpen() && colorKind() === 'backColor'\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeColor()\"\n (detach)=\"closeColor()\"\n >\n <ng-container [ngTemplateOutlet]=\"paletteTpl\" />\n </ng-template>\n }\n @case ('table') {\n <button\n type=\"button\"\n class=\"kpt-rich-text__tool\"\n cdkOverlayOrigin\n #tableOrigin=\"cdkOverlayOrigin\"\n [class.is-active]=\"tableOpen()\"\n [attr.aria-label]=\"aria(item)\"\n [kptTooltip]=\"aria(item)\"\n [disabled]=\"disabled()\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"exec(item)\"\n >\n <kpt-icon [name]=\"icon(item)\" />\n </button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"tableOrigin\"\n [cdkConnectedOverlayOpen]=\"tableOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeTable()\"\n (detach)=\"closeTable()\"\n >\n <div class=\"kpt-rt-grid-pop\" (mousedown)=\"$event.preventDefault()\">\n <div class=\"kpt-rt-grid\" (mouseleave)=\"gridHover(0, 0)\">\n @for (r of gridRows; track r) {\n <div class=\"kpt-rt-grid__row\">\n @for (c of gridCols; track c) {\n <span\n class=\"kpt-rt-grid__cell\"\n [class.is-on]=\"r <= gridR() && c <= gridC()\"\n (mouseenter)=\"gridHover(r, c)\"\n (click)=\"insertTable(r, c)\"\n ></span>\n }\n </div>\n }\n </div>\n <div class=\"kpt-rt-grid__label\">{{ gridR() }} × {{ gridC() }}</div>\n </div>\n </ng-template>\n }\n @default {\n <button\n type=\"button\"\n class=\"kpt-rich-text__tool\"\n [class.is-active]=\"isActive(item)\"\n [attr.aria-label]=\"aria(item)\"\n [attr.aria-pressed]=\"isActive(item)\"\n [kptTooltip]=\"aria(item)\"\n [disabled]=\"disabled()\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"exec(item)\"\n >\n <kpt-icon [name]=\"icon(item)\" />\n </button>\n }\n }\n }\n }\n </div>\n @if (sourceView()) {\n <textarea\n class=\"kpt-rich-text__source\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n spellcheck=\"false\"\n [attr.aria-label]=\"i18n.t('richText.htmlSource')\"\n (input)=\"onSource($event)\"\n (blur)=\"touch.emit()\"\n ></textarea>\n } @else {\n <div\n #editor\n class=\"kpt-rich-text__editor\"\n [attr.contenteditable]=\"disabled() ? 'false' : 'true'\"\n [attr.data-placeholder]=\"placeholder()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n role=\"textbox\"\n aria-multiline=\"true\"\n (input)=\"onInput()\"\n (paste)=\"onPaste($event)\"\n (contextmenu)=\"onContextMenu($event)\"\n (mousedown)=\"onEditorMouseDown($event)\"\n (mousemove)=\"onEditorMouseMove($event)\"\n (blur)=\"touch.emit()\"\n ></div>\n }\n\n <!-- Menu kontekstowe tabeli (origin punktowy = pozycja kursora) -->\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"menuPoint()\"\n [cdkConnectedOverlayOpen]=\"menuOpen()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeMenu()\"\n (detach)=\"closeMenu()\"\n >\n <div class=\"kpt-rt-menu\" (contextmenu)=\"$event.preventDefault()\">\n <div class=\"kpt-rt-menu__group\">{{ i18n.t('richText.menu.column') }}</div>\n <button type=\"button\" class=\"kpt-rt-menu__item\" (click)=\"insertColumn('left')\"><kpt-icon name=\"plus\" /> {{ i18n.t('richText.menu.insertLeft') }}</button>\n <button type=\"button\" class=\"kpt-rt-menu__item\" (click)=\"insertColumn('right')\"><kpt-icon name=\"plus\" /> {{ i18n.t('richText.menu.insertRight') }}</button>\n <button type=\"button\" class=\"kpt-rt-menu__item\" (click)=\"toggleHeaderColumn()\"><kpt-icon name=\"table\" /> {{ i18n.t('richText.menu.headerColumn') }}</button>\n <button type=\"button\" class=\"kpt-rt-menu__item\" (click)=\"deleteColumn()\"><kpt-icon name=\"trash\" /> {{ i18n.t('richText.menu.deleteColumn') }}</button>\n <div class=\"kpt-rt-menu__sep\"></div>\n <div class=\"kpt-rt-menu__group\">{{ i18n.t('richText.menu.row') }}</div>\n <button type=\"button\" class=\"kpt-rt-menu__item\" (click)=\"insertRow('above')\"><kpt-icon name=\"plus\" /> {{ i18n.t('richText.menu.insertAbove') }}</button>\n <button type=\"button\" class=\"kpt-rt-menu__item\" (click)=\"insertRow('below')\"><kpt-icon name=\"plus\" /> {{ i18n.t('richText.menu.insertBelow') }}</button>\n <button type=\"button\" class=\"kpt-rt-menu__item\" (click)=\"toggleHeaderRow()\"><kpt-icon name=\"table\" /> {{ i18n.t('richText.menu.headerRow') }}</button>\n <button type=\"button\" class=\"kpt-rt-menu__item\" (click)=\"deleteRow()\"><kpt-icon name=\"trash\" /> {{ i18n.t('richText.menu.deleteRow') }}</button>\n <div class=\"kpt-rt-menu__sep\"></div>\n <div class=\"kpt-rt-menu__group\">{{ i18n.t('richText.menu.cell') }}</div>\n <button type=\"button\" class=\"kpt-rt-menu__item\" (click)=\"openCellBg()\"><kpt-icon name=\"palette\" /> {{ i18n.t('richText.menu.cellBackground') }}</button>\n <button type=\"button\" class=\"kpt-rt-menu__item\" (click)=\"alignCell('left')\"><kpt-icon name=\"align-left\" /> {{ i18n.t('richText.menu.alignLeft') }}</button>\n <button type=\"button\" class=\"kpt-rt-menu__item\" (click)=\"alignCell('center')\"><kpt-icon name=\"align-center\" /> {{ i18n.t('richText.menu.alignCenter') }}</button>\n <button type=\"button\" class=\"kpt-rt-menu__item\" (click)=\"alignCell('right')\"><kpt-icon name=\"align-right\" /> {{ i18n.t('richText.menu.alignRight') }}</button>\n <div class=\"kpt-rt-menu__sep\"></div>\n <button type=\"button\" class=\"kpt-rt-menu__item\" [class.is-disabled]=\"!canMerge()\" (click)=\"mergeCells()\"><kpt-icon name=\"table\" /> {{ i18n.t('richText.menu.mergeCells') }}</button>\n <button type=\"button\" class=\"kpt-rt-menu__item\" [class.is-disabled]=\"!canSplit()\" (click)=\"splitCell()\"><kpt-icon name=\"grip-vertical\" /> {{ i18n.t('richText.menu.splitCell') }}</button>\n <div class=\"kpt-rt-menu__sep\"></div>\n <button type=\"button\" class=\"kpt-rt-menu__item\" (click)=\"openBorder()\"><kpt-icon name=\"table\" /> {{ i18n.t('richText.menu.border') }}</button>\n <div class=\"kpt-rt-menu__sep\"></div>\n <button type=\"button\" class=\"kpt-rt-menu__item kpt-rt-menu__item--danger\" (click)=\"deleteTable()\"><kpt-icon name=\"trash\" /> {{ i18n.t('richText.menu.deleteTable') }}</button>\n </div>\n </ng-template>\n\n <!-- Popover obramowania (tabela / komórka) -->\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"menuPoint()\"\n [cdkConnectedOverlayOpen]=\"borderOpen()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeBorder()\"\n (detach)=\"closeBorder()\"\n >\n <div class=\"kpt-rt-border\" (mousedown)=\"$event.preventDefault()\">\n <div class=\"kpt-rt-border__seg\">\n <button type=\"button\" [class.is-active]=\"borderTarget() === 'table'\" (click)=\"borderTarget.set('table')\">{{ i18n.t('richText.border.table') }}</button>\n <button type=\"button\" [class.is-active]=\"borderTarget() === 'cell'\" (click)=\"borderTarget.set('cell')\">{{ i18n.t('richText.border.cell') }}</button>\n </div>\n <div class=\"kpt-rt-border__widths\">\n <button type=\"button\" (click)=\"setBorderWidth('none')\">{{ i18n.t('richText.border.none') }}</button>\n <button type=\"button\" (click)=\"setBorderWidth('thin')\">{{ i18n.t('richText.border.thin') }}</button>\n <button type=\"button\" (click)=\"setBorderWidth('medium')\">{{ i18n.t('richText.border.medium') }}</button>\n <button type=\"button\" (click)=\"setBorderWidth('thick')\">{{ i18n.t('richText.border.thick') }}</button>\n </div>\n <div class=\"kpt-rich-text__swatches\">\n @for (c of swatches; track c) {\n <button type=\"button\" class=\"kpt-rich-text__swatch\" [style.background]=\"c\" [attr.aria-label]=\"c\" (click)=\"setBorderColor(c)\"></button>\n }\n </div>\n <label class=\"kpt-rich-text__picker\">\n <span>{{ i18n.t('richText.border.customColor') }}</span>\n <input type=\"color\" (input)=\"onBorderColorInput($event)\" />\n </label>\n </div>\n </ng-template>\n\n <!-- Popover koloru tła komórki (z menu kontekstowego) -->\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"menuPoint()\"\n [cdkConnectedOverlayOpen]=\"colorOpen() && colorKind() === 'cellBg'\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeColor()\"\n (detach)=\"closeColor()\"\n >\n <ng-container [ngTemplateOutlet]=\"paletteTpl\" />\n </ng-template>\n</div>\n\n<ng-template #paletteTpl>\n <div class=\"kpt-rich-text__palette\" (mousedown)=\"$event.preventDefault()\">\n <div class=\"kpt-rich-text__swatches\">\n @for (c of swatches; track c) {\n <button\n type=\"button\"\n class=\"kpt-rich-text__swatch\"\n [style.background]=\"c\"\n [attr.aria-label]=\"c\"\n (click)=\"applyColor(c)\"\n ></button>\n }\n </div>\n <label class=\"kpt-rich-text__picker\">\n <span>{{ i18n.t('richText.paletteCustom') }}</span>\n <input type=\"color\" (input)=\"onColorInput($event)\" />\n </label>\n </div>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n input,\n model,\n output,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\n\n/** Wartość suwaka: pojedyncza liczba lub para `[min, max]` w trybie `range`. */\nexport type KptSliderValue = number | [number, number];\n\n/**\n * Suwak wartości (slider) na Signal Forms.\n * W trybie `range` udostępnia dwa uchwyty, a wartość jest parą `[min, max]`.\n *\n * @example\n * <kpt-slider [formField]=\"f.volume\" [min]=\"0\" [max]=\"100\" [step]=\"5\" showValue />\n * <kpt-slider range [(value)]=\"zakres\" [min]=\"0\" [max]=\"100\" showValue />\n */\n@Component({\n selector: 'kpt-slider',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n @if (range()) {\n <div class=\"kpt-slider__range\">\n <div class=\"kpt-slider__rail\"></div>\n <div class=\"kpt-slider__fill\" [style.left.%]=\"lowPct()\" [style.right.%]=\"100 - highPct()\"></div>\n <input\n class=\"kpt-slider__thumb kpt-slider__thumb--low\"\n type=\"range\"\n [min]=\"minN()\"\n [max]=\"maxN()\"\n [step]=\"step()\"\n [value]=\"low()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"'Minimum'\"\n (input)=\"setLow(+$any($event.target).value)\"\n (change)=\"touch.emit()\"\n />\n <input\n class=\"kpt-slider__thumb kpt-slider__thumb--high\"\n type=\"range\"\n [min]=\"minN()\"\n [max]=\"maxN()\"\n [step]=\"step()\"\n [value]=\"high()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"'Maksimum'\"\n (input)=\"setHigh(+$any($event.target).value)\"\n (change)=\"touch.emit()\"\n />\n </div>\n @if (showValue()) {\n <span class=\"kpt-slider__value\">{{ low() }}–{{ high() }}</span>\n }\n } @else {\n <input\n class=\"kpt-slider__input\"\n type=\"range\"\n [min]=\"minN()\"\n [max]=\"maxN()\"\n [step]=\"step()\"\n [value]=\"single()\"\n [disabled]=\"disabled()\"\n [style.--_pct.%]=\"highPct()\"\n (input)=\"value.set(+$any($event.target).value)\"\n (change)=\"touch.emit()\"\n />\n @if (showValue()) {\n <span class=\"kpt-slider__value\">{{ single() }}</span>\n }\n }\n `,\n styleUrl: './slider.component.scss',\n host: { class: 'kpt-slider-host' },\n})\nexport class KptSlider implements FormValueControl<KptSliderValue> {\n readonly value = model<KptSliderValue>(0);\n /** Tryb zakresu: dwa uchwyty; wartość jako para `[min, max]`. */\n readonly range = input(false, { transform: booleanAttribute });\n // Typ zgodny z FormValueControl<KptSliderValue> (FormField może zsync-ować walidatory min/max).\n // W praktyce zawsze liczby — do matematyki/szablonu używamy skalarnych `minN`/`maxN`.\n readonly min = input<KptSliderValue | undefined>(0);\n readonly max = input<KptSliderValue | undefined>(100);\n readonly step = input(1);\n readonly showValue = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n\n // Skalarne granice do szablonu i obliczeń (min/max są typowane szeroko dla FormValueControl).\n private toNum(v: KptSliderValue | undefined, fallback: number): number {\n return typeof v === 'number' ? v : fallback;\n }\n protected readonly minN = computed(() => this.toNum(this.min(), 0));\n protected readonly maxN = computed(() => this.toNum(this.max(), 100));\n\n /** Bieżąca para `[low, high]` — również dla trybu pojedynczego (low = min). */\n private readonly pair = computed<[number, number]>(() => {\n const v = this.value();\n if (Array.isArray(v)) return [v[0], v[1]];\n return [this.minN(), v];\n });\n protected readonly single = computed(() => {\n const v = this.value();\n return Array.isArray(v) ? v[1] : v;\n });\n protected readonly low = computed(() => this.pair()[0]);\n protected readonly high = computed(() => this.pair()[1]);\n\n protected setLow(v: number): void {\n const [, hi] = this.pair();\n this.value.set([Math.min(v, hi), hi]);\n }\n protected setHigh(v: number): void {\n const [lo] = this.pair();\n this.value.set([lo, Math.max(v, lo)]);\n }\n\n private pct(val: number): number {\n const mn = this.minN();\n const mx = this.maxN();\n const range = mx - mn;\n return range <= 0 ? 0 : ((val - mn) / range) * 100;\n }\n protected readonly lowPct = computed(() => this.pct(this.low()));\n protected readonly highPct = computed(() => this.pct(this.high()));\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { KptIcon } from '../icon/icon.component';\n\n/**\n * Ocena gwiazdkami (rating) na Signal Forms.\n *\n * @example\n * <kpt-rating [formField]=\"f.score\" [max]=\"5\" />\n * <kpt-rating [value]=\"4\" readonly />\n */\n@Component({\n selector: 'kpt-rating',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <div class=\"kpt-rating\" role=\"slider\" [attr.aria-valuenow]=\"value()\" [attr.aria-valuemax]=\"count()\">\n @for (star of stars(); track star) {\n <button\n type=\"button\"\n class=\"kpt-rating__star\"\n [class.is-filled]=\"star <= (hover() || value())\"\n [disabled]=\"readonly() || disabled()\"\n (click)=\"pick(star)\"\n (mouseenter)=\"hover.set(star)\"\n (mouseleave)=\"hover.set(0)\"\n [attr.aria-label]=\"star + ' z ' + count()\"\n ><kpt-icon name=\"star\" /></button>\n }\n </div>\n `,\n styleUrl: './rating.component.scss',\n host: { class: 'kpt-rating-host' },\n})\nexport class KptRating implements FormValueControl<number> {\n readonly value = model<number>(0);\n /** Liczba gwiazdek. */\n readonly count = input(5);\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n\n protected readonly hover = signal(0);\n protected readonly stars = computed(() => Array.from({ length: this.count() }, (_, i) => i + 1));\n\n protected pick(star: number): void {\n if (this.readonly() || this.disabled()) return;\n this.value.set(this.value() === star ? 0 : star);\n this.touch.emit();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, inject, input, model, output, signal } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\n\n/**\n * Wgrywanie plików (drag-drop + wybór). Wartość = File[]. Signal Forms.\n *\n * @example\n * <kpt-file-upload [formField]=\"f.files\" accept=\"image/*\" multiple />\n */\n@Component({\n selector: 'kpt-file-upload',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <div\n class=\"kpt-file-upload__zone\"\n [class.is-dragover]=\"dragover()\"\n [class.is-disabled]=\"disabled()\"\n (click)=\"fileInput.click()\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"dragover.set(false)\"\n (drop)=\"onDrop($event)\"\n >\n <input #fileInput type=\"file\" hidden [accept]=\"accept()\" [multiple]=\"multiple()\" (change)=\"onSelect($event)\" />\n <kpt-icon name=\"upload\" class=\"kpt-file-upload__icon\" />\n <div class=\"kpt-file-upload__text\" [innerHTML]=\"i18n.t('fileUpload.hint')\"></div>\n @if (accept()) { <div class=\"kpt-file-upload__hint\">{{ accept() }}</div> }\n </div>\n\n @if (value().length) {\n <ul class=\"kpt-file-upload__list\">\n @for (file of value(); track file.name) {\n <li class=\"kpt-file-upload__file\">\n <kpt-icon name=\"photo\" />\n <span class=\"kpt-file-upload__name\">{{ file.name }}</span>\n <span class=\"kpt-file-upload__size\">{{ size(file) }}</span>\n <button type=\"button\" class=\"kpt-file-upload__remove\" (click)=\"remove(file, $event)\" [attr.aria-label]=\"i18n.t('fileUpload.remove')\"><kpt-icon name=\"trash\" /></button>\n </li>\n }\n </ul>\n }\n `,\n styleUrl: './file-upload.component.scss',\n host: { class: 'kpt-file-upload-host' },\n})\nexport class KptFileUpload implements FormValueControl<File[]> {\n readonly value = model<File[]>([]);\n readonly accept = input('');\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n\n protected readonly i18n = inject(KptI18n);\n protected readonly dragover = signal(false);\n\n protected onSelect(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.addFiles(input.files);\n input.value = '';\n }\n protected onDragOver(event: DragEvent): void {\n event.preventDefault();\n if (!this.disabled()) this.dragover.set(true);\n }\n protected onDrop(event: DragEvent): void {\n event.preventDefault();\n this.dragover.set(false);\n if (!this.disabled()) this.addFiles(event.dataTransfer?.files);\n }\n private addFiles(list: FileList | null | undefined): void {\n if (!list?.length) return;\n const arr = Array.from(list);\n this.value.set(this.multiple() ? [...this.value(), ...arr] : arr.slice(0, 1));\n this.touch.emit();\n }\n protected remove(file: File, event: Event): void {\n event.stopPropagation();\n this.value.set(this.value().filter((f) => f !== file));\n }\n protected size(file: File): string {\n const kb = file.size / 1024;\n return kb < 1024 ? `${kb.toFixed(0)} KB` : `${(kb / 1024).toFixed(1)} MB`;\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, input, model, output } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\n\n/**\n * Wybór koloru (swatch + hex + presety) na Signal Forms. Wartość = hex, np. '#3b82f6'.\n *\n * @example\n * <kpt-color-picker [formField]=\"f.brand\" />\n */\n@Component({\n selector: 'kpt-color-picker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n <div class=\"kpt-color-picker\">\n <label class=\"kpt-color-picker__swatch\" [style.background]=\"value()\">\n <input\n type=\"color\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n (input)=\"value.set($any($event.target).value)\"\n (blur)=\"touch.emit()\"\n />\n </label>\n <input\n type=\"text\"\n class=\"kpt-color-picker__hex\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n maxlength=\"7\"\n (input)=\"onHex($event)\"\n (blur)=\"touch.emit()\"\n />\n <div class=\"kpt-color-picker__presets\">\n @for (color of presets(); track color) {\n <button\n type=\"button\"\n class=\"kpt-color-picker__preset\"\n [class.is-active]=\"color === value()\"\n [style.background]=\"color\"\n [disabled]=\"disabled()\"\n (click)=\"value.set(color)\"\n [attr.aria-label]=\"color\"\n ></button>\n }\n </div>\n </div>\n `,\n styleUrl: './color-picker.component.scss',\n host: { class: 'kpt-color-picker-host' },\n})\nexport class KptColorPicker implements FormValueControl<string> {\n readonly value = model<string>('#3b82f6');\n readonly presets = input<string[]>([\n '#ef4444', '#f59e0b', '#10b981', '#3b82f6', '#8b5cf6', '#ec4899', '#111827', '#ffffff',\n ]);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n\n protected onHex(event: Event): void {\n this.value.set((event.target as HTMLInputElement).value);\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, type ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { KptButton } from '../button/button.component';\nimport { KptClock } from '../datepicker/clock.component';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { monthNames, weekdayNames } from '../i18n/intl';\nimport { KptIcon } from '../icon/icon.component';\n\nexport interface KptDateRangeValue {\n start: string;\n end: string;\n}\n\n/** Granulacja zakresu: same daty, daty z godziną, same godziny. */\nexport type KptDateRangeMode = 'date' | 'datetime' | 'time';\n\ninterface DayCell {\n day: number;\n iso: string;\n inMonth: boolean;\n isStart: boolean;\n isEnd: boolean;\n inRange: boolean;\n disabled: boolean;\n}\n\nconst pad = (n: number): string => String(n).padStart(2, '0');\nconst toIso = (d: Date): string => `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\n\n/**\n * Wybór zakresu dat z kalendarzem (CDK Overlay), Signal Forms.\n * `mode`: 'date' (domyślnie), 'datetime' (data+godzina, tarcza zegara), 'time' (sama godzina).\n * Wartość: `{ start, end }` — daty 'RRRR-MM-DD', datetime 'RRRR-MM-DDTHH:mm', godziny 'HH:mm'.\n * Wymaga `import '@angular/cdk/overlay-prebuilt.css';`\n *\n * @example\n * <kpt-date-range [formField]=\"f.period\" />\n * <kpt-date-range mode=\"datetime\" [hourFormat]=\"12\" [(value)]=\"span\" />\n * <kpt-date-range mode=\"time\" [(value)]=\"hours\" />\n */\n@Component({\n selector: 'kpt-date-range',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon, KptButton, KptClock],\n templateUrl: './date-range.component.html',\n styleUrl: './date-range.component.scss',\n host: { class: 'kpt-date-range-host' },\n})\nexport class KptDateRange implements FormValueControl<KptDateRangeValue> {\n readonly value = model<KptDateRangeValue>({ start: '', end: '' });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n /** Placeholder; bez wartości używa i18n (`dateRange.placeholder`). */\n readonly placeholder = input<string>();\n readonly displayFormat = input<'pl' | 'iso'>('pl');\n readonly mode = input<KptDateRangeMode>('date');\n readonly hourFormat = input(24, { transform: numberAttribute });\n readonly minuteStep = input(1, { transform: numberAttribute });\n\n protected readonly i18n = inject(KptI18n);\n protected readonly weekdays = computed(() => weekdayNames(this.i18n.locale()));\n private readonly months = computed(() => monthNames(this.i18n.locale()));\n protected readonly effectivePlaceholder = computed(() => this.placeholder() ?? this.i18n.t('dateRange.placeholder'));\n protected readonly open = signal(false);\n private readonly today = new Date();\n private readonly view = signal({ y: this.today.getFullYear(), m: this.today.getMonth() });\n\n // ── Bufory czasu (tryby datetime/time) ──\n protected readonly startTime = signal('');\n protected readonly endTime = signal('');\n protected readonly timeEnd = signal<'start' | 'end'>('start'); // który koniec edytuje tarcza\n // Daty zakresu (część kalendarzowa dla datetime — bez czasu)\n private readonly startDate = signal('');\n private readonly endDate = signal('');\n\n protected readonly positions: ConnectedPosition[] = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n ];\n\n protected readonly monthLabel = computed(() => {\n const { y, m } = this.view();\n return `${this.months()[m]} ${y}`;\n });\n\n private datePart(v: string): string {\n return v ? v.slice(0, 10) : '';\n }\n private timePart(v: string): string {\n const m = /[T ](\\d{2}:\\d{2})$/.exec(v);\n return m ? m[1] : '';\n }\n private fmtDate(iso: string): string {\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(iso);\n if (!m) return '';\n return this.displayFormat() === 'iso' ? `${m[1]}-${m[2]}-${m[3]}` : `${m[3]}.${m[2]}.${m[1]}`;\n }\n private fmtTime(hhmm: string): string {\n const m = /^(\\d{2}):(\\d{2})$/.exec(hhmm);\n if (!m) return '';\n if (this.hourFormat() === 12) {\n const h = +m[1];\n const h12 = h % 12 === 0 ? 12 : h % 12;\n return `${h12}:${m[2]} ${h < 12 ? 'AM' : 'PM'}`;\n }\n return hhmm;\n }\n\n protected readonly display = computed(() => {\n const { start, end } = this.value();\n if (!start) return '';\n const mode = this.mode();\n if (mode === 'time') {\n return end ? `${this.fmtTime(start)} – ${this.fmtTime(end)}` : `${this.fmtTime(start)} – …`;\n }\n if (mode === 'datetime') {\n const one = (v: string): string => {\n const d = this.fmtDate(this.datePart(v));\n const t = this.fmtTime(this.timePart(v));\n return t ? `${d} ${t}` : d;\n };\n return end ? `${one(start)} – ${one(end)}` : `${one(start)} – …`;\n }\n return end ? `${this.fmtDate(start)} – ${this.fmtDate(end)}` : `${this.fmtDate(start)} – …`;\n });\n\n protected readonly weeks = computed<DayCell[][]>(() => {\n const { y, m } = this.view();\n const start = this.mode() === 'datetime' ? this.startDate() : this.value().start;\n const end = this.mode() === 'datetime' ? this.endDate() : this.value().end;\n const first = new Date(y, m, 1);\n const startOffset = (first.getDay() + 6) % 7;\n const gridStart = new Date(y, m, 1 - startOffset);\n const weeks: DayCell[][] = [];\n for (let w = 0; w < 6; w++) {\n const row: DayCell[] = [];\n for (let d = 0; d < 7; d++) {\n const date = new Date(gridStart.getFullYear(), gridStart.getMonth(), gridStart.getDate() + w * 7 + d);\n const iso = toIso(date);\n row.push({\n day: date.getDate(),\n iso,\n inMonth: date.getMonth() === m,\n isStart: iso === start,\n isEnd: iso === end,\n inRange: !!start && !!end && iso > start && iso < end,\n disabled: false,\n });\n }\n weeks.push(row);\n }\n return weeks;\n });\n\n protected toggleOpen(): void {\n if (this.disabled()) return;\n if (!this.open()) {\n const { start, end } = this.value();\n const base = this.datePart(start) || toIso(this.today);\n const d = new Date(base);\n this.view.set({ y: d.getFullYear(), m: d.getMonth() });\n if (this.mode() === 'datetime') {\n this.startDate.set(this.datePart(start));\n this.endDate.set(this.datePart(end));\n this.startTime.set(this.timePart(start) || '00:00');\n this.endTime.set(this.timePart(end) || '00:00');\n } else if (this.mode() === 'time') {\n this.startTime.set(/^\\d{2}:\\d{2}$/.test(start) ? start : '00:00');\n this.endTime.set(/^\\d{2}:\\d{2}$/.test(end) ? end : '00:00');\n }\n this.timeEnd.set('start');\n }\n this.open.update((o) => !o);\n }\n protected close(): void {\n if (!this.open()) return;\n this.open.set(false);\n this.touch.emit();\n }\n\n protected selectDay(cell: DayCell): void {\n if (this.mode() === 'datetime') {\n const start = this.startDate();\n const end = this.endDate();\n if (!start || (start && end)) {\n this.startDate.set(cell.iso);\n this.endDate.set('');\n } else if (cell.iso < start) {\n this.endDate.set(start);\n this.startDate.set(cell.iso);\n } else {\n this.endDate.set(cell.iso);\n }\n return; // czas do wyboru → zamknięcie przez „Gotowe\"\n }\n const { start, end } = this.value();\n if (!start || (start && end)) {\n this.value.set({ start: cell.iso, end: '' });\n } else {\n if (cell.iso < start) this.value.set({ start: cell.iso, end: start });\n else this.value.set({ start, end: cell.iso });\n this.close();\n }\n }\n\n protected commit(): void {\n if (this.mode() === 'time') {\n const s = this.startTime() || '00:00';\n const e = this.endTime() || '00:00';\n // Normalizacja kolejności (start ≤ end).\n this.value.set(s <= e ? { start: s, end: e } : { start: e, end: s });\n } else if (this.mode() === 'datetime') {\n const sd = this.startDate();\n const ed = this.endDate() || sd;\n if (!sd) {\n this.close();\n return;\n }\n const start = `${sd}T${this.startTime() || '00:00'}`;\n const end = `${ed}T${this.endTime() || '00:00'}`;\n this.value.set(start <= end ? { start, end } : { start: end, end: start });\n }\n this.close();\n }\n\n protected prevMonth(): void {\n this.view.update(({ y, m }) => (m === 0 ? { y: y - 1, m: 11 } : { y, m: m - 1 }));\n }\n protected nextMonth(): void {\n this.view.update(({ y, m }) => (m === 11 ? { y: y + 1, m: 0 } : { y, m: m + 1 }));\n }\n protected clear(event: Event): void {\n event.stopPropagation();\n this.value.set({ start: '', end: '' });\n this.startDate.set('');\n this.endDate.set('');\n }\n}\n","<div\n class=\"kpt-date-range\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n role=\"button\"\n tabindex=\"0\"\n [class.kpt-date-range--open]=\"open()\"\n [class.kpt-date-range--disabled]=\"disabled()\"\n [class.kpt-date-range--invalid]=\"invalid()\"\n (click)=\"toggleOpen()\"\n (keydown.enter)=\"toggleOpen()\"\n (blur)=\"touch.emit()\"\n>\n @if (display()) {\n <span class=\"kpt-date-range__value\">{{ display() }}</span>\n } @else {\n <span class=\"kpt-date-range__placeholder\">{{ effectivePlaceholder() }}</span>\n }\n <span class=\"kpt-date-range__spacer\"></span>\n @if (display()) {\n <button type=\"button\" class=\"kpt-date-range__clear\" (click)=\"clear($event)\" [attr.aria-label]=\"i18n.t('common.clear')\"><kpt-icon name=\"x\" /></button>\n }\n <kpt-icon class=\"kpt-date-range__icon\" name=\"calendar\" />\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div class=\"kpt-calendar\" [class.kpt-calendar--clock]=\"mode() === 'time'\" (keydown.escape)=\"close()\">\n @if (mode() === 'time') {\n <div class=\"kpt-range-tabs\">\n <button type=\"button\" [class.is-active]=\"timeEnd() === 'start'\" (click)=\"timeEnd.set('start')\">{{ i18n.t('dateRange.from') }}</button>\n <button type=\"button\" [class.is-active]=\"timeEnd() === 'end'\" (click)=\"timeEnd.set('end')\">{{ i18n.t('dateRange.to') }}</button>\n </div>\n @if (timeEnd() === 'start') {\n <kpt-clock [value]=\"startTime()\" (valueChange)=\"startTime.set($event)\" [hourFormat]=\"hourFormat()\" [minuteStep]=\"minuteStep()\" />\n } @else {\n <kpt-clock [value]=\"endTime()\" (valueChange)=\"endTime.set($event)\" [hourFormat]=\"hourFormat()\" [minuteStep]=\"minuteStep()\" />\n }\n <div class=\"kpt-calendar__footer\">\n <kpt-button size=\"sm\" (click)=\"commit()\">{{ i18n.t('common.done') }}</kpt-button>\n </div>\n } @else {\n <div class=\"kpt-calendar__header\">\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"prevMonth()\" [attr.aria-label]=\"i18n.t('datepicker.prevMonth')\"><kpt-icon name=\"chevron-left\" /></button>\n <span class=\"kpt-calendar__title\">{{ monthLabel() }}</span>\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"nextMonth()\" [attr.aria-label]=\"i18n.t('datepicker.nextMonth')\"><kpt-icon name=\"chevron-right\" /></button>\n </div>\n <div class=\"kpt-calendar__weekdays\">\n @for (wd of weekdays(); track wd) {\n <span class=\"kpt-calendar__weekday\">{{ wd }}</span>\n }\n </div>\n <div class=\"kpt-calendar__grid\">\n @for (week of weeks(); track $index) {\n @for (cell of week; track cell.iso) {\n <button\n type=\"button\"\n class=\"kpt-calendar__day\"\n [class.kpt-calendar__day--muted]=\"!cell.inMonth\"\n [class.kpt-calendar__day--range]=\"cell.inRange\"\n [class.kpt-calendar__day--selected]=\"cell.isStart || cell.isEnd\"\n (click)=\"selectDay(cell)\"\n >{{ cell.day }}</button>\n }\n }\n </div>\n\n @if (mode() === 'datetime') {\n <div class=\"kpt-range-tabs\">\n <button type=\"button\" [class.is-active]=\"timeEnd() === 'start'\" (click)=\"timeEnd.set('start')\">{{ i18n.t('dateRange.fromTime') }}</button>\n <button type=\"button\" [class.is-active]=\"timeEnd() === 'end'\" (click)=\"timeEnd.set('end')\">{{ i18n.t('dateRange.toTime') }}</button>\n </div>\n @if (timeEnd() === 'start') {\n <kpt-clock [value]=\"startTime()\" (valueChange)=\"startTime.set($event)\" [hourFormat]=\"hourFormat()\" [minuteStep]=\"minuteStep()\" />\n } @else {\n <kpt-clock [value]=\"endTime()\" (valueChange)=\"endTime.set($event)\" [hourFormat]=\"hourFormat()\" [minuteStep]=\"minuteStep()\" />\n }\n <div class=\"kpt-calendar__footer\">\n <kpt-button size=\"sm\" (click)=\"commit()\">{{ i18n.t('common.done') }}</kpt-button>\n </div>\n }\n }\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, computed, inject, input, model, output } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\n\n/**\n * Pole liczbowe ze strzałkami krokowania na Signal Forms. Wartość = number | null.\n *\n * @example\n * <kpt-input-number [formField]=\"f.qty\" [min]=\"0\" [max]=\"99\" [step]=\"1\" />\n */\n@Component({\n selector: 'kpt-input-number',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <div class=\"kpt-input-number\" [class.kpt-input-number--disabled]=\"disabled()\" [class.kpt-input-number--invalid]=\"invalid()\">\n <button type=\"button\" class=\"kpt-input-number__btn\" [disabled]=\"disabled() || !canDec()\" (click)=\"step_(-1)\" [attr.aria-label]=\"i18n.t('inputNumber.decrement')\"><kpt-icon name=\"minus\" /></button>\n <input\n class=\"kpt-input-number__input\"\n type=\"text\"\n inputmode=\"decimal\"\n [value]=\"display()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n (input)=\"onInput($event)\"\n (blur)=\"touch.emit()\"\n />\n <button type=\"button\" class=\"kpt-input-number__btn\" [disabled]=\"disabled() || !canInc()\" (click)=\"step_(1)\" [attr.aria-label]=\"i18n.t('inputNumber.increment')\"><kpt-icon name=\"plus\" /></button>\n </div>\n `,\n styleUrl: './input-number.component.scss',\n host: { class: 'kpt-input-number-host' },\n})\nexport class KptInputNumber implements FormValueControl<number | null> {\n readonly value = model<number | null>(null);\n readonly min = input<number | undefined>(undefined);\n readonly max = input<number | undefined>(undefined);\n readonly step = input(1);\n readonly placeholder = input('');\n readonly suffix = input('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n\n protected readonly i18n = inject(KptI18n);\n\n protected readonly display = computed(() => {\n const v = this.value();\n if (v === null || v === undefined || Number.isNaN(v)) return '';\n return `${v}${this.suffix()}`;\n });\n protected readonly canInc = computed(() => {\n const mx = this.max();\n return mx === undefined || (this.value() ?? -Infinity) < mx;\n });\n protected readonly canDec = computed(() => {\n const mn = this.min();\n return mn === undefined || (this.value() ?? Infinity) > mn;\n });\n\n protected onInput(event: Event): void {\n const raw = (event.target as HTMLInputElement).value.replace(this.suffix(), '').replace(',', '.').trim();\n if (raw === '') {\n this.value.set(null);\n return;\n }\n const n = Number(raw);\n if (!Number.isNaN(n)) this.value.set(this.clamp(n));\n }\n\n protected step_(dir: 1 | -1): void {\n const base = this.value() ?? this.min() ?? 0;\n this.value.set(this.clamp(base + dir * this.step()));\n this.touch.emit();\n }\n\n private clamp(n: number): number {\n const mn = this.min();\n const mx = this.max();\n if (mn !== undefined && n < mn) return mn;\n if (mx !== undefined && n > mx) return mx;\n return n;\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, computed, inject, input, model, output, signal } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\n\ninterface Strength {\n score: 0 | 1 | 2 | 3 | 4;\n label: string;\n}\n\n/**\n * Pole hasła z przełącznikiem widoczności i opcjonalnym miernikiem siły. Signal Forms.\n *\n * @example\n * <kpt-password [formField]=\"f.password\" feedback />\n */\n@Component({\n selector: 'kpt-password',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <div class=\"kpt-password\" [class.kpt-password--disabled]=\"disabled()\" [class.kpt-password--invalid]=\"invalid()\">\n <input\n class=\"kpt-password__input\"\n [type]=\"visible() ? 'text' : 'password'\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n autocomplete=\"current-password\"\n (input)=\"value.set($any($event.target).value)\"\n (blur)=\"touch.emit()\"\n />\n <button type=\"button\" class=\"kpt-password__toggle\" [disabled]=\"disabled()\" (click)=\"visible.set(!visible())\" [attr.aria-label]=\"visible() ? i18n.t('password.hide') : i18n.t('password.show')\">\n <kpt-icon [name]=\"visible() ? 'eye-off' : 'eye'\" />\n </button>\n </div>\n @if (feedback() && value()) {\n <div class=\"kpt-password__meter\" [attr.data-score]=\"strength().score\">\n <div class=\"kpt-password__bars\">\n @for (i of [0,1,2,3]; track i) {\n <span class=\"kpt-password__bar\" [class.is-on]=\"i < strength().score\"></span>\n }\n </div>\n <span class=\"kpt-password__hint\">{{ strength().label }}</span>\n </div>\n }\n `,\n styleUrl: './password.component.scss',\n host: { class: 'kpt-password-host' },\n})\nexport class KptPassword implements FormValueControl<string> {\n readonly value = model<string>('');\n readonly placeholder = input('');\n readonly feedback = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n\n protected readonly i18n = inject(KptI18n);\n protected readonly visible = signal(false);\n\n protected readonly strength = computed<Strength>(() => {\n const v = this.value();\n let s = 0;\n if (v.length >= 8) s++;\n if (/[A-Z]/.test(v) && /[a-z]/.test(v)) s++;\n if (/\\d/.test(v)) s++;\n if (/[^A-Za-z0-9]/.test(v)) s++;\n const score = Math.min(s, 4) as Strength['score'];\n return { score, label: this.i18n.messages().password.strength[score] };\n });\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, computed, input, model, output } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\n\n/**\n * Pole kodu jednorazowego (OTP/PIN) — N osobnych pól, autofocus i wklejanie. Signal Forms.\n * Wartość = string (sklejone znaki).\n *\n * @example\n * <kpt-input-otp [formField]=\"f.code\" [length]=\"6\" integerOnly />\n */\n@Component({\n selector: 'kpt-input-otp',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n <div class=\"kpt-input-otp\" [class.kpt-input-otp--invalid]=\"invalid()\">\n @for (i of slots(); track i) {\n <input\n class=\"kpt-input-otp__cell\"\n type=\"text\"\n [attr.inputmode]=\"integerOnly() ? 'numeric' : 'text'\"\n maxlength=\"1\"\n [value]=\"charAt(i)\"\n [disabled]=\"disabled()\"\n (input)=\"onInput(i, $event)\"\n (keydown)=\"onKeydown(i, $event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"$any($event.target).select()\"\n />\n }\n </div>\n `,\n styleUrl: './input-otp.component.scss',\n host: { class: 'kpt-input-otp-host' },\n})\nexport class KptInputOtp implements FormValueControl<string> {\n readonly value = model<string>('');\n readonly length = input(6);\n readonly integerOnly = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n\n protected readonly slots = computed(() => Array.from({ length: this.length() }, (_, i) => i));\n\n protected charAt(i: number): string {\n return this.value()[i] ?? '';\n }\n\n protected onInput(i: number, event: Event): void {\n const el = event.target as HTMLInputElement;\n let ch = el.value.slice(-1);\n if (this.integerOnly() && !/\\d/.test(ch)) ch = '';\n this.setChar(i, ch);\n el.value = this.charAt(i); // sync DOM z modelem — kasuje odrzucony/znormalizowany znak\n if (ch) this.focusSibling(el, 1);\n }\n\n protected onKeydown(i: number, event: KeyboardEvent): void {\n const el = event.target as HTMLInputElement;\n if (event.key === 'Backspace' && !this.charAt(i)) {\n this.focusSibling(el, -1);\n } else if (event.key === 'ArrowLeft') {\n this.focusSibling(el, -1);\n } else if (event.key === 'ArrowRight') {\n this.focusSibling(el, 1);\n }\n }\n\n protected onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n let text = event.clipboardData?.getData('text') ?? '';\n if (this.integerOnly()) text = text.replace(/\\D/g, '');\n this.value.set(text.slice(0, this.length()));\n this.touch.emit();\n }\n\n private setChar(i: number, ch: string): void {\n const arr = this.value().padEnd(this.length(), ' ').split('');\n arr[i] = ch || ' ';\n this.value.set(arr.join('').replace(/ +$/, ''));\n }\n\n private focusSibling(el: HTMLInputElement, dir: 1 | -1): void {\n const target = dir === 1 ? el.nextElementSibling : el.previousElementSibling;\n (target as HTMLInputElement | null)?.focus();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, computed, inject, input, model, output } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { KptChip } from '../chip/chip.component';\nimport { KptI18n } from '../i18n/i18n.service';\n\n/**\n * Pole tagów — dodawanie Enter/przecinkiem, usuwanie Backspace/×. Signal Forms.\n * Wartość = string[].\n *\n * @example\n * <kpt-chips-input [formField]=\"f.tags\" placeholder=\"Dodaj tag…\" />\n */\n@Component({\n selector: 'kpt-chips-input',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptChip],\n template: `\n <div class=\"kpt-chips-input\" [class.kpt-chips-input--disabled]=\"disabled()\" [class.kpt-chips-input--invalid]=\"invalid()\">\n @for (chip of value(); track $index) {\n <kpt-chip variant=\"primary\" [removable]=\"!disabled()\" (removed)=\"removeAt($index)\">{{ chip }}</kpt-chip>\n }\n <input\n class=\"kpt-chips-input__field\"\n type=\"text\"\n [placeholder]=\"value().length ? '' : effectivePlaceholder()\"\n [disabled]=\"disabled()\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"commit($any($event.target)); touch.emit()\"\n />\n </div>\n `,\n styleUrl: './chips-input.component.scss',\n host: { class: 'kpt-chips-input-host' },\n})\nexport class KptChipsInput implements FormValueControl<string[]> {\n readonly value = model<string[]>([]);\n /** Placeholder; bez wartości używa i18n (`chipsInput.placeholder`). */\n readonly placeholder = input<string>();\n readonly allowDuplicates = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n\n protected readonly i18n = inject(KptI18n);\n protected readonly effectivePlaceholder = computed(() => this.placeholder() ?? this.i18n.t('chipsInput.placeholder'));\n\n protected onKeydown(event: KeyboardEvent): void {\n const el = event.target as HTMLInputElement;\n if (event.key === 'Enter' || event.key === ',') {\n event.preventDefault();\n this.commit(el);\n } else if (event.key === 'Backspace' && el.value === '' && this.value().length) {\n this.removeAt(this.value().length - 1);\n }\n }\n\n protected commit(el: HTMLInputElement): void {\n const text = el.value.trim();\n if (!text) return;\n if (this.allowDuplicates() || !this.value().includes(text)) {\n this.value.set([...this.value(), text]);\n }\n el.value = '';\n }\n\n protected removeAt(index: number): void {\n this.value.set(this.value().filter((_, i) => i !== index));\n this.touch.emit();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, input, model, output } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\n\nconst TOKENS: Record<string, RegExp> = {\n '9': /\\d/,\n a: /[a-zA-Z]/,\n '*': /[a-zA-Z0-9]/,\n};\n\n/**\n * Pole z maską znakową na Signal Forms. Tokeny maski: `9`=cyfra, `a`=litera, `*`=alfanumeryczny.\n * Pozostałe znaki maski to literały (np. spacje, nawiasy, myślniki).\n *\n * @example\n * <kpt-input-mask [formField]=\"f.phone\" mask=\"(999) 999-99-99\" />\n */\n@Component({\n selector: 'kpt-input-mask',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n <input\n class=\"kpt-input-mask__input\"\n type=\"text\"\n [class.kpt-input-mask--invalid]=\"invalid()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder() || mask()\"\n (input)=\"onInput($event)\"\n (blur)=\"touch.emit()\"\n />\n `,\n styleUrl: './input-mask.component.scss',\n host: { class: 'kpt-input-mask-host' },\n})\nexport class KptInputMask implements FormValueControl<string> {\n readonly value = model<string>('');\n readonly mask = input('');\n readonly placeholder = input('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n\n protected onInput(event: Event): void {\n const el = event.target as HTMLInputElement;\n const formatted = this.applyMask(el.value);\n this.value.set(formatted);\n el.value = formatted;\n }\n\n private applyMask(raw: string): string {\n const mask = this.mask();\n if (!mask) return raw;\n // Zbierz same znaczące znaki z wejścia (pomiń literały maski).\n const chars = raw.split('');\n let ci = 0;\n let out = '';\n for (let mi = 0; mi < mask.length && ci < chars.length; ) {\n const token = mask[mi];\n const rule = TOKENS[token];\n if (rule) {\n // szukaj kolejnego pasującego znaku z wejścia\n while (ci < chars.length && !rule.test(chars[ci])) ci++;\n if (ci >= chars.length) break;\n out += chars[ci];\n ci++;\n mi++;\n } else {\n out += token;\n mi++;\n }\n }\n return out;\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, computed, inject, input, model, output, signal } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\nimport type { KptOption } from '../shared/types';\n\n/**\n * Lista wyboru (listbox) na Signal Forms. Pojedynczy lub wielokrotny wybór, opcjonalny filtr.\n * Wartość: `T` (single) lub `T[]` (multiple).\n *\n * @example\n * <kpt-listbox [formField]=\"f.role\" [options]=\"roles\" filter />\n * <kpt-listbox [(value)]=\"tags\" [options]=\"tagOptions\" multiple />\n */\n@Component({\n selector: 'kpt-listbox',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <div class=\"kpt-listbox\" [class.kpt-listbox--invalid]=\"invalid()\" role=\"listbox\" [attr.aria-multiselectable]=\"multiple()\">\n @if (filter()) {\n <div class=\"kpt-listbox__filter\">\n <kpt-icon name=\"search\" />\n <input type=\"text\" [attr.placeholder]=\"i18n.t('listbox.search')\" [value]=\"query()\" (input)=\"query.set($any($event.target).value)\" />\n </div>\n }\n <div class=\"kpt-listbox__items\">\n @for (opt of visible(); track opt.value) {\n <button\n type=\"button\"\n role=\"option\"\n class=\"kpt-listbox__item\"\n [class.is-selected]=\"isSelected(opt.value)\"\n [attr.aria-selected]=\"isSelected(opt.value)\"\n [disabled]=\"disabled() || opt.disabled\"\n (click)=\"toggle(opt.value)\"\n >\n <span>{{ opt.label }}</span>\n @if (isSelected(opt.value)) { <kpt-icon name=\"check\" /> }\n </button>\n } @empty {\n <div class=\"kpt-listbox__empty\">{{ i18n.t('listbox.empty') }}</div>\n }\n </div>\n </div>\n `,\n styleUrl: './listbox.component.scss',\n host: { class: 'kpt-listbox-host' },\n})\nexport class KptListbox<T = unknown> implements FormValueControl<T | T[] | null> {\n readonly value = model<T | T[] | null>(null);\n readonly options = input<KptOption<T>[]>([]);\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly filter = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n\n protected readonly i18n = inject(KptI18n);\n protected readonly query = signal('');\n protected readonly visible = computed(() => {\n const q = this.query().trim().toLowerCase();\n return q ? this.options().filter((o) => o.label.toLowerCase().includes(q)) : this.options();\n });\n\n protected isSelected(v: T): boolean {\n const cur = this.value();\n return this.multiple() ? Array.isArray(cur) && cur.includes(v) : cur === v;\n }\n\n protected toggle(v: T): void {\n if (this.multiple()) {\n const cur = (Array.isArray(this.value()) ? this.value() : []) as T[];\n this.value.set(cur.includes(v) ? cur.filter((x) => x !== v) : [...cur, v]);\n } else {\n this.value.set(this.value() === v ? null : v);\n }\n this.touch.emit();\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, ViewEncapsulation, booleanAttribute, computed, inject, input, model, output } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\n\nconst TAU = Math.PI * 2;\nconst GAP = Math.PI / 4; // przerwa u dołu (kąt „otwarcia\" łuku)\n\n/**\n * Pokrętło (knob) — wybór wartości po łuku, myszką lub strzałkami. Signal Forms.\n *\n * @example\n * <kpt-knob [formField]=\"f.level\" [min]=\"0\" [max]=\"100\" [step]=\"1\" />\n */\n@Component({\n selector: 'kpt-knob',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n <div\n class=\"kpt-knob\"\n role=\"slider\"\n tabindex=\"0\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"value()\"\n [attr.aria-disabled]=\"disabled()\"\n (pointerdown)=\"onPointer($event)\"\n (keydown)=\"onKeydown($event)\"\n >\n <svg [attr.viewBox]=\"'0 0 ' + size() + ' ' + size()\" [style.width.px]=\"size()\" [style.height.px]=\"size()\">\n <path class=\"kpt-knob__range\" [attr.d]=\"rangePath()\" fill=\"none\" [attr.stroke-width]=\"stroke()\" stroke-linecap=\"round\" />\n <path class=\"kpt-knob__value\" [attr.d]=\"valuePath()\" fill=\"none\" [attr.stroke-width]=\"stroke()\" stroke-linecap=\"round\" />\n @if (showValue()) {\n <text class=\"kpt-knob__text\" [attr.x]=\"size() / 2\" [attr.y]=\"size() / 2\" text-anchor=\"middle\" dominant-baseline=\"central\">{{ value() }}{{ suffix() }}</text>\n }\n </svg>\n </div>\n `,\n styleUrl: './knob.component.scss',\n host: { class: 'kpt-knob-host' },\n})\nexport class KptKnob implements FormValueControl<number> {\n private readonly host = inject(ElementRef<HTMLElement>);\n\n readonly value = model<number>(0);\n readonly min = input<number | undefined>(0);\n readonly max = input<number | undefined>(100);\n readonly step = input(1);\n readonly size = input(96);\n readonly stroke = input(10);\n readonly suffix = input('');\n readonly showValue = input(true, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n\n private readonly startAngle = Math.PI / 2 + GAP;\n private readonly sweep = TAU - GAP * 2;\n\n protected readonly rangePath = computed(() => this.arc(0, 1));\n protected readonly valuePath = computed(() => this.arc(0, this.ratio()));\n\n private ratio(): number {\n const mn = this.min() ?? 0;\n const mx = this.max() ?? 100;\n const range = mx - mn;\n return range <= 0 ? 0 : (this.value() - mn) / range;\n }\n\n private arc(from: number, to: number): string {\n const s = this.size();\n const r = (s - this.stroke()) / 2;\n const cx = s / 2;\n const cy = s / 2;\n const a0 = this.startAngle + this.sweep * from;\n const a1 = this.startAngle + this.sweep * Math.max(from, to);\n const x0 = cx + r * Math.cos(a0);\n const y0 = cy + r * Math.sin(a0);\n const x1 = cx + r * Math.cos(a1);\n const y1 = cy + r * Math.sin(a1);\n const large = a1 - a0 > Math.PI ? 1 : 0;\n if (Math.abs(a1 - a0) < 1e-4) return `M ${x0} ${y0}`;\n return `M ${x0} ${y0} A ${r} ${r} 0 ${large} 1 ${x1} ${y1}`;\n }\n\n protected onPointer(event: PointerEvent): void {\n if (this.disabled()) return;\n const update = (e: PointerEvent) => this.setFromPoint(e.clientX, e.clientY);\n update(event);\n const move = (e: PointerEvent) => update(e);\n const up = () => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', up);\n this.touch.emit();\n };\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', up);\n }\n\n private setFromPoint(clientX: number, clientY: number): void {\n const rect = (this.host.nativeElement.querySelector('svg') as SVGElement).getBoundingClientRect();\n const cx = rect.left + rect.width / 2;\n const cy = rect.top + rect.height / 2;\n let a = Math.atan2(clientY - cy, clientX - cx) - this.startAngle;\n a = ((a % TAU) + TAU) % TAU;\n if (a > this.sweep + GAP) a = a > this.sweep + GAP / 2 ? 0 : this.sweep;\n const ratio = Math.min(1, Math.max(0, a / this.sweep));\n this.applyRatio(ratio);\n }\n\n private applyRatio(ratio: number): void {\n const mn = this.min() ?? 0;\n const mx = this.max() ?? 100;\n const step = this.step();\n const raw = mn + ratio * (mx - mn);\n const snapped = Math.round(raw / step) * step;\n this.value.set(Math.min(mx, Math.max(mn, snapped)));\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n const mn = this.min() ?? 0;\n const mx = this.max() ?? 100;\n let next = this.value();\n if (event.key === 'ArrowUp' || event.key === 'ArrowRight') next += this.step();\n else if (event.key === 'ArrowDown' || event.key === 'ArrowLeft') next -= this.step();\n else if (event.key === 'Home') next = mn;\n else if (event.key === 'End') next = mx;\n else return;\n event.preventDefault();\n this.value.set(Math.min(mx, Math.max(mn, next)));\n this.touch.emit();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, input } from '@angular/core';\n\nexport type KptCardVariant = 'elevated' | 'outlined';\n\n/**\n * Karta Koncept UI — powierzchnia z wyniesieniem (elevated) lub obramowaniem (outlined).\n * Opcjonalny nagłówek przez `header`; treść przez projekcję. Stopkę wstaw z atrybutem\n * `kptCardFooter`. Dla bogatych układów (media/profil) ustaw `flush` (body bez paddingu)\n * i użyj reużywalnych klas: `kpt-card__media`, `__lead`, `__title`, `__subtitle`,\n * `__section`, `__tags`, `__meta`, `__avatar`, `__actions`.\n *\n * @example\n * <kpt-card header=\"Ustawienia\">\n * <p>Treść karty…</p>\n * <div kptCardFooter><kpt-button>Zapisz</kpt-button></div>\n * </kpt-card>\n */\n@Component({\n selector: 'kpt-card',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n templateUrl: './card.component.html',\n styleUrl: './card.component.scss',\n host: {\n class: 'kpt-card',\n '[attr.data-variant]': 'variant()',\n },\n})\nexport class KptCard {\n /** Wariant wizualny. */\n readonly variant = input<KptCardVariant>('elevated');\n /** Opcjonalny tekst nagłówka. */\n readonly header = input<string>('');\n /** Body bez wewnętrznego paddingu — dla układów zarządzających własnymi sekcjami. */\n readonly flush = input(false, { transform: booleanAttribute });\n}\n","@if (header()) {\n <div class=\"kpt-card__header\">{{ header() }}</div>\n}\n<div class=\"kpt-card__body\" [class.kpt-card__body--flush]=\"flush()\">\n <ng-content />\n</div>\n<ng-content select=\"[kptCardFooter]\" />\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, input } from '@angular/core';\n\nexport type KptDividerOrientation = 'horizontal' | 'vertical';\n\n/**\n * Separator Koncept UI (linia pozioma lub pionowa). Kolor z `--kpt-color-border`.\n *\n * @example\n * <kpt-divider />\n * <kpt-divider orientation=\"vertical\" />\n * <kpt-divider inset />\n */\n@Component({\n selector: 'kpt-divider',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: '',\n styleUrl: './divider.component.scss',\n host: {\n class: 'kpt-divider',\n role: 'separator',\n '[attr.aria-orientation]': 'orientation()',\n '[attr.data-orientation]': 'orientation()',\n '[class.kpt-divider--inset]': 'inset()',\n },\n})\nexport class KptDivider {\n /** Orientacja linii. */\n readonly orientation = input<KptDividerOrientation>('horizontal');\n /** Wcięcie (odstęp od krawędzi kontenera). */\n readonly inset = input(false, { transform: booleanAttribute });\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, input } from '@angular/core';\n\n/**\n * Górny pasek (toolbar) — pozioma belka na treść aplikacji (logo, akcje).\n * Elementowi z atrybutem `kptToolbarSpacer` nadaj elastyczny odstęp, aby rozepchnąć zawartość.\n *\n * @example\n * <kpt-toolbar elevated>\n * <strong>Koncept UI</strong>\n * <span kptToolbarSpacer></span>\n * <kpt-button variant=\"text\">Wyloguj</kpt-button>\n * </kpt-toolbar>\n */\n@Component({\n selector: 'kpt-toolbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: '<ng-content />',\n styleUrl: './toolbar.component.scss',\n host: {\n class: 'kpt-toolbar',\n '[class.kpt-toolbar--elevated]': 'elevated()',\n },\n})\nexport class KptToolbar {\n /** Dodaje cień (wyniesienie) pod paskiem. */\n readonly elevated = input(false, { transform: booleanAttribute });\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Panel boczny (sidenav) — stylowany kontener nawigacji, zwykle umieszczany w slocie\n * `kptShellSidenav` komponentu `kpt-app-shell`.\n *\n * @example\n * <kpt-sidenav kptShellSidenav>\n * <a href=\"#\">Pulpit</a>\n * <a href=\"#\">Ustawienia</a>\n * </kpt-sidenav>\n */\n@Component({\n selector: 'kpt-sidenav',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: '<ng-content />',\n styleUrl: './sidenav.component.scss',\n host: { class: 'kpt-sidenav' },\n})\nexport class KptSidenav {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, input, model } from '@angular/core';\n\nexport type KptSidenavMode = 'side' | 'over';\n\n/**\n * Szkielet aplikacji (app shell) w stylu Material: toolbar u góry, panel boczny i treść.\n * Sloty projekcji: `[kptShellToolbar]`, `[kptShellSidenav]`, oraz treść domyślna.\n *\n * @example\n * <kpt-app-shell [(sidenavOpen)]=\"navOpen\" sidenavMode=\"side\">\n * <kpt-toolbar kptShellToolbar>…</kpt-toolbar>\n * <kpt-sidenav kptShellSidenav>…</kpt-sidenav>\n * <router-outlet />\n * </kpt-app-shell>\n */\n@Component({\n selector: 'kpt-app-shell',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n templateUrl: './app-shell.component.html',\n styleUrl: './app-shell.component.scss',\n host: {\n class: 'kpt-app-shell',\n '[attr.data-sidenav-mode]': 'sidenavMode()',\n '[class.kpt-app-shell--nav-open]': 'sidenavOpen()',\n },\n})\nexport class KptAppShell {\n /** Czy panel boczny jest otwarty (dwukierunkowe). */\n readonly sidenavOpen = model(true);\n /** Tryb panelu: 'side' rozpycha treść, 'over' nakłada się ze scrimem. */\n readonly sidenavMode = input<KptSidenavMode>('side');\n\n protected onScrimClick(): void {\n if (this.sidenavMode() === 'over') {\n this.sidenavOpen.set(false);\n }\n }\n}\n","<ng-content select=\"[kptShellToolbar]\" />\n\n<div class=\"kpt-app-shell__body\">\n <aside class=\"kpt-app-shell__sidenav\">\n <ng-content select=\"[kptShellSidenav]\" />\n </aside>\n\n @if (sidenavMode() === 'over' && sidenavOpen()) {\n <div class=\"kpt-app-shell__scrim\" (click)=\"onScrimClick()\"></div>\n }\n\n <main class=\"kpt-app-shell__content\">\n <ng-content />\n </main>\n</div>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, inject, input, model } from '@angular/core';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\n\n/**\n * Panel z nagłówkiem i opcjonalnym zwijaniem. Akcje nagłówka: atrybut `kptPanelActions`.\n *\n * @example\n * <kpt-panel header=\"Ustawienia\" toggleable>Treść…</kpt-panel>\n */\n@Component({\n selector: 'kpt-panel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <div class=\"kpt-panel\">\n <div class=\"kpt-panel__header\">\n <span class=\"kpt-panel__title\">{{ header() }}</span>\n <span class=\"kpt-panel__actions\"><ng-content select=\"[kptPanelActions]\" /></span>\n @if (toggleable()) {\n <button type=\"button\" class=\"kpt-panel__toggle\" (click)=\"collapsed.set(!collapsed())\" [attr.aria-expanded]=\"!collapsed()\" [attr.aria-label]=\"i18n.t('panel.toggle')\">\n <kpt-icon [name]=\"collapsed() ? 'chevron-down' : 'chevron-up'\" />\n </button>\n }\n </div>\n <div\n class=\"kpt-panel__collapse\"\n [class.is-open]=\"!collapsed()\"\n [attr.inert]=\"collapsed() ? '' : null\"\n [attr.aria-hidden]=\"collapsed()\"\n >\n <div class=\"kpt-panel__collapse-inner\">\n <div class=\"kpt-panel__body\"><ng-content /></div>\n </div>\n </div>\n </div>\n `,\n styleUrl: './panel.component.scss',\n host: {\n 'class': 'kpt-panel-host',\n '[style.--kpt-anim-duration]': \"(animated() ? animationDuration() : 0) + 'ms'\",\n },\n})\nexport class KptPanel {\n readonly header = input('');\n readonly toggleable = input(false, { transform: booleanAttribute });\n readonly collapsed = model(false);\n readonly animated = input(true, { transform: booleanAttribute });\n readonly animationDuration = input(500);\n\n protected readonly i18n = inject(KptI18n);\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, input, model } from '@angular/core';\nimport { KptIcon } from '../icon/icon.component';\n\n/**\n * Grupa pól z legendą (fieldset), opcjonalnie zwijana.\n *\n * @example\n * <kpt-fieldset legend=\"Dane osobowe\" toggleable>…</kpt-fieldset>\n */\n@Component({\n selector: 'kpt-fieldset',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <fieldset class=\"kpt-fieldset\">\n <legend class=\"kpt-fieldset__legend\">\n @if (toggleable()) {\n <button type=\"button\" class=\"kpt-fieldset__toggle\" (click)=\"collapsed.set(!collapsed())\" [attr.aria-expanded]=\"!collapsed()\">\n <kpt-icon [name]=\"collapsed() ? 'chevron-down' : 'chevron-up'\" />\n <span>{{ legend() }}</span>\n </button>\n } @else {\n <span>{{ legend() }}</span>\n }\n </legend>\n <div\n class=\"kpt-fieldset__collapse\"\n [class.is-open]=\"!collapsed()\"\n [attr.inert]=\"collapsed() ? '' : null\"\n [attr.aria-hidden]=\"collapsed()\"\n >\n <div class=\"kpt-fieldset__collapse-inner\">\n <div class=\"kpt-fieldset__body\"><ng-content /></div>\n </div>\n </div>\n </fieldset>\n `,\n styleUrl: './fieldset.component.scss',\n host: {\n 'class': 'kpt-fieldset-host',\n '[style.--kpt-anim-duration]': \"(animated() ? animationDuration() : 0) + 'ms'\",\n },\n})\nexport class KptFieldset {\n readonly legend = input('');\n readonly toggleable = input(false, { transform: booleanAttribute });\n readonly collapsed = model(false);\n readonly animated = input(true, { transform: booleanAttribute });\n readonly animationDuration = input(500);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, ViewEncapsulation, computed, inject, input, model } from '@angular/core';\n\nexport type KptSplitterOrientation = 'horizontal' | 'vertical';\n\n/**\n * Splitter — dwa panele z przeciąganym uchwytem. Panele przez sloty `[kptSplitStart]` i `[kptSplitEnd]`.\n * `horizontal` = panele obok siebie, `vertical` = jeden pod drugim.\n *\n * @example\n * <kpt-splitter orientation=\"horizontal\" [(startSize)]=\"size\">\n * <div kptSplitStart>Lewy</div>\n * <div kptSplitEnd>Prawy</div>\n * </kpt-splitter>\n */\n@Component({\n selector: 'kpt-splitter',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n <div class=\"kpt-splitter\" [attr.data-orientation]=\"orientation()\">\n <div class=\"kpt-splitter__pane\" [style.flex-basis.%]=\"startSize()\"><ng-content select=\"[kptSplitStart]\" /></div>\n <div\n class=\"kpt-splitter__gutter\"\n role=\"separator\"\n tabindex=\"0\"\n [attr.aria-orientation]=\"orientation()\"\n [attr.aria-valuenow]=\"startSize()\"\n (pointerdown)=\"onPointer($event)\"\n (keydown)=\"onKeydown($event)\"\n ></div>\n <div class=\"kpt-splitter__pane\" [style.flex-basis.%]=\"endSize()\"><ng-content select=\"[kptSplitEnd]\" /></div>\n </div>\n `,\n styleUrl: './splitter.component.scss',\n host: { class: 'kpt-splitter-host' },\n})\nexport class KptSplitter {\n private readonly host = inject(ElementRef<HTMLElement>);\n readonly orientation = input<KptSplitterOrientation>('horizontal');\n /** Rozmiar pierwszego panelu w procentach (0–100). */\n readonly startSize = model(50);\n readonly minSize = input(10);\n\n protected readonly endSize = computed(() => 100 - this.startSize());\n\n protected onPointer(event: PointerEvent): void {\n event.preventDefault();\n const container = this.host.nativeElement.querySelector('.kpt-splitter') as HTMLElement;\n const move = (e: PointerEvent) => {\n const rect = container.getBoundingClientRect();\n const pct =\n this.orientation() === 'horizontal'\n ? ((e.clientX - rect.left) / rect.width) * 100\n : ((e.clientY - rect.top) / rect.height) * 100;\n this.setSize(pct);\n };\n const up = () => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', up);\n };\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', up);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const dir = event.key === 'ArrowLeft' || event.key === 'ArrowUp' ? -2 : event.key === 'ArrowRight' || event.key === 'ArrowDown' ? 2 : 0;\n if (!dir) return;\n event.preventDefault();\n this.setSize(this.startSize() + dir);\n }\n\n private setSize(pct: number): void {\n const min = this.minSize();\n this.startSize.set(Math.min(100 - min, Math.max(min, Math.round(pct))));\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, afterNextRender, inject, input, signal } from '@angular/core';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\n\n/**\n * Przycisk „do góry\" — pojawia się po przewinięciu ponad `threshold` px.\n * Domyślnie działa na oknie; `target` przyjmuje selektor przewijanego elementu.\n *\n * @example\n * <kpt-scroll-top [threshold]=\"300\" />\n */\n@Component({\n selector: 'kpt-scroll-top',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <button\n type=\"button\"\n class=\"kpt-scroll-top\"\n [class.is-visible]=\"visible()\"\n (click)=\"scrollUp()\"\n [attr.aria-label]=\"i18n.t('scrollTop.label')\"\n [attr.tabindex]=\"visible() ? 0 : -1\"\n ><kpt-icon name=\"arrow-up\" /></button>\n `,\n styleUrl: './scroll-top.component.scss',\n host: { class: 'kpt-scroll-top-host' },\n})\nexport class KptScrollTop {\n readonly threshold = input(300);\n readonly target = input<string | null>(null);\n\n protected readonly i18n = inject(KptI18n);\n protected readonly visible = signal(false);\n private scroller: HTMLElement | Window = window;\n\n constructor() {\n afterNextRender(() => {\n const sel = this.target();\n this.scroller = sel ? document.querySelector<HTMLElement>(sel) ?? window : window;\n const onScroll = () => this.visible.set(this.currentTop() > this.threshold());\n this.scroller.addEventListener('scroll', onScroll, { passive: true });\n onScroll();\n });\n }\n\n private currentTop(): number {\n return this.scroller === window ? window.scrollY : (this.scroller as HTMLElement).scrollTop;\n }\n\n protected scrollUp(): void {\n if (this.scroller === window) window.scrollTo({ top: 0, behavior: 'smooth' });\n else (this.scroller as HTMLElement).scrollTo({ top: 0, behavior: 'smooth' });\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, inject, input, signal } from '@angular/core';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\n\n/**\n * Obraz z opcjonalnym podglądem pełnoekranowym (zoom).\n *\n * @example\n * <kpt-image src=\"/foto.jpg\" alt=\"Zdjęcie\" preview width=\"240px\" />\n */\n@Component({\n selector: 'kpt-image',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <div class=\"kpt-image\" [class.kpt-image--preview]=\"preview()\" [style.width]=\"width()\" (click)=\"openPreview()\">\n <img class=\"kpt-image__img\" [src]=\"src()\" [alt]=\"alt()\" />\n @if (preview()) {\n <div class=\"kpt-image__mask\" aria-hidden=\"true\"><kpt-icon name=\"zoom-in\" /></div>\n }\n </div>\n\n @if (open()) {\n <div class=\"kpt-image__overlay\" (click)=\"close()\">\n <button type=\"button\" class=\"kpt-image__close\" (click)=\"close()\" [attr.aria-label]=\"i18n.t('common.close')\"><kpt-icon name=\"x\" /></button>\n <img class=\"kpt-image__full\" [src]=\"src()\" [alt]=\"alt()\" (click)=\"$event.stopPropagation()\" />\n </div>\n }\n `,\n styleUrl: './image.component.scss',\n host: { class: 'kpt-image-host' },\n})\nexport class KptImage {\n readonly src = input.required<string>();\n readonly alt = input('');\n readonly width = input<string | null>(null);\n readonly preview = input(false, { transform: booleanAttribute });\n\n protected readonly i18n = inject(KptI18n);\n protected readonly open = signal(false);\n\n protected openPreview(): void {\n if (this.preview()) this.open.set(true);\n }\n protected close(): void {\n this.open.set(false);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, computed, input } from '@angular/core';\n\nexport interface KptMeterItem {\n label: string;\n value: number;\n color?: string;\n}\n\n/**\n * Wielosegmentowy miernik (meter group) z opcjonalną legendą.\n *\n * @example\n * <kpt-meter-group [values]=\"[{label:'Użyte', value:70}, {label:'Wolne', value:30}]\" />\n */\n@Component({\n selector: 'kpt-meter-group',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n <div class=\"kpt-meter-group\">\n <div class=\"kpt-meter-group__track\" role=\"meter\" [attr.aria-valuenow]=\"sum()\" [attr.aria-valuemax]=\"max()\">\n @for (item of values(); track $index; let i = $index) {\n <span\n class=\"kpt-meter-group__segment\"\n [style.width.%]=\"percent(item)\"\n [style.background]=\"item.color || fallback(i)\"\n [attr.title]=\"item.label\"\n ></span>\n }\n </div>\n @if (showLegend()) {\n <ul class=\"kpt-meter-group__legend\">\n @for (item of values(); track $index; let i = $index) {\n <li class=\"kpt-meter-group__legend-item\">\n <span class=\"kpt-meter-group__dot\" [style.background]=\"item.color || fallback(i)\"></span>\n <span>{{ item.label }}</span>\n <span class=\"kpt-meter-group__val\">{{ round(percent(item)) }}%</span>\n </li>\n }\n </ul>\n }\n </div>\n `,\n styleUrl: './meter-group.component.scss',\n host: { class: 'kpt-meter-group-host' },\n})\nexport class KptMeterGroup {\n readonly values = input<KptMeterItem[]>([]);\n /** Suma odniesienia; domyślnie suma wartości (100%). */\n readonly max = input<number | undefined>(undefined);\n readonly showLegend = input(true, { transform: booleanAttribute });\n\n private readonly palette = ['var(--kpt-color-primary)', 'var(--kpt-color-info)', 'var(--kpt-color-success)', 'var(--kpt-color-warning)', 'var(--kpt-color-danger)'];\n\n protected readonly sum = computed(() => this.values().reduce((a, v) => a + v.value, 0));\n\n protected total(): number {\n return this.max() ?? (this.sum() || 1);\n }\n protected percent(item: KptMeterItem): number {\n return (item.value / this.total()) * 100;\n }\n protected fallback(i: number): string {\n return this.palette[i % this.palette.length];\n }\n protected round(n: number): number {\n return Math.round(n);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\nimport { KptAvatar, type KptAvatarSize } from '../avatar/avatar.component';\n\nexport interface KptAvatarItem {\n name?: string;\n src?: string;\n icon?: string;\n}\n\n/**\n * Grupa nakładających się awatarów z licznikiem „+N\". Buduje na `kpt-avatar`.\n *\n * @example\n * <kpt-avatar-group [avatars]=\"team\" [max]=\"4\" />\n */\n@Component({\n selector: 'kpt-avatar-group',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptAvatar],\n template: `\n <div class=\"kpt-avatar-group\" [attr.data-size]=\"size()\">\n @for (a of shown(); track $index) {\n <span class=\"kpt-avatar-group__item\">\n <kpt-avatar [name]=\"a.name || ''\" [src]=\"a.src || null\" [icon]=\"a.icon || null\" [size]=\"size()\" />\n </span>\n }\n @if (overflow() > 0) {\n <span class=\"kpt-avatar-group__item kpt-avatar-group__more\" [attr.data-size]=\"size()\">+{{ overflow() }}</span>\n }\n </div>\n `,\n styleUrl: './avatar-group.component.scss',\n host: { class: 'kpt-avatar-group-host' },\n})\nexport class KptAvatarGroup {\n readonly avatars = input<KptAvatarItem[]>([]);\n readonly max = input(4);\n readonly size = input<KptAvatarSize>('md');\n\n protected readonly shown = computed(() => this.avatars().slice(0, this.max()));\n protected readonly overflow = computed(() => Math.max(0, this.avatars().length - this.max()));\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, input } from '@angular/core';\nimport { KptIcon } from '../icon/icon.component';\n\n/**\n * Stan pusty (empty state) — ikona, tytuł, opis i opcjonalne akcje (projekcja).\n *\n * @example\n * <kpt-empty icon=\"search\" title=\"Brak wyników\" description=\"Zmień kryteria wyszukiwania.\">\n * <kpt-button>Wyczyść filtry</kpt-button>\n * </kpt-empty>\n */\n@Component({\n selector: 'kpt-empty',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <div class=\"kpt-empty\">\n @if (icon()) { <div class=\"kpt-empty__icon\"><kpt-icon [name]=\"icon()!\" /></div> }\n @if (title()) { <p class=\"kpt-empty__title\">{{ title() }}</p> }\n @if (description()) { <p class=\"kpt-empty__desc\">{{ description() }}</p> }\n <div class=\"kpt-empty__actions\"><ng-content /></div>\n </div>\n `,\n styleUrl: './empty.component.scss',\n host: { class: 'kpt-empty-host' },\n})\nexport class KptEmpty {\n readonly icon = input<string | null>('info-circle');\n readonly title = input('');\n readonly description = input('');\n}\n","import { ChangeDetectionStrategy, Component, TemplateRef, booleanAttribute, input, viewChild } from '@angular/core';\n\n/**\n * Pojedyncza zakładka. Umieszczaj w `kpt-tabs`. Treść renderowana leniwie (gdy aktywna).\n *\n * @example\n * <kpt-tab label=\"Ogólne\">…treść…</kpt-tab>\n */\n@Component({\n selector: 'kpt-tab',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-template><ng-content /></ng-template>`,\n})\nexport class KptTab {\n readonly label = input.required<string>();\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly content = viewChild.required(TemplateRef);\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChildren,\n input,\n model,\n signal,\n viewChildren,\n} from '@angular/core';\nimport { KptTab } from './tab.component';\n\n/**\n * Zakładki (tabs) — przełączanie widoków. Treść zakładek renderowana leniwie.\n *\n * @example\n * <kpt-tabs [(activeIndex)]=\"tab\">\n * <kpt-tab label=\"Ogólne\">…</kpt-tab>\n * <kpt-tab label=\"Zaawansowane\">…</kpt-tab>\n * </kpt-tabs>\n */\n@Component({\n selector: 'kpt-tabs',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet],\n template: `\n <div class=\"kpt-tabs__header\" role=\"tablist\">\n @for (tab of tabs(); track $index; let i = $index) {\n <button\n #tabBtn\n type=\"button\"\n class=\"kpt-tabs__tab\"\n role=\"tab\"\n [class.is-active]=\"i === activeIndex()\"\n [disabled]=\"tab.disabled()\"\n [attr.aria-selected]=\"i === activeIndex()\"\n (click)=\"select(i)\"\n >{{ tab.label() }}</button>\n }\n <span class=\"kpt-tabs__ink\" [style.width.px]=\"inkW()\" [style.transform]=\"'translateX(' + inkX() + 'px)'\"></span>\n </div>\n <div class=\"kpt-tabs__body\" role=\"tabpanel\">\n @for (tab of activePanels(); track activeIndex()) {\n <div class=\"kpt-tabs__panel\"><ng-container [ngTemplateOutlet]=\"tab.content()\" /></div>\n }\n </div>\n `,\n styleUrl: './tabs.component.scss',\n host: {\n 'class': 'kpt-tabs-host',\n '[style.--kpt-anim-duration]': \"(animated() ? animationDuration() : 0) + 'ms'\",\n '[style.--kpt-anim-dir]': 'direction()',\n '(window:resize)': 'measureInk()',\n },\n})\nexport class KptTabs {\n protected readonly tabs = contentChildren(KptTab);\n readonly activeIndex = model(0);\n readonly animated = input(true, { transform: booleanAttribute });\n readonly animationDuration = input(500);\n\n private readonly tabBtns = viewChildren<ElementRef<HTMLButtonElement>>('tabBtn');\n protected readonly inkX = signal(0);\n protected readonly inkW = signal(0);\n protected readonly direction = signal(1);\n\n protected readonly activeTab = computed(() => this.tabs()[this.activeIndex()]);\n protected readonly activePanels = computed(() => {\n const tab = this.activeTab();\n return tab ? [tab] : [];\n });\n\n constructor() {\n afterRenderEffect(() => this.measureInk());\n }\n\n protected measureInk(): void {\n const btn = this.tabBtns()[this.activeIndex()]?.nativeElement;\n if (!btn) return;\n this.inkX.set(btn.offsetLeft);\n this.inkW.set(btn.offsetWidth);\n }\n\n protected select(index: number): void {\n if (this.tabs()[index]?.disabled()) return;\n this.direction.set(index >= this.activeIndex() ? 1 : -1);\n this.activeIndex.set(index);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n inject,\n input,\n model,\n} from '@angular/core';\nimport { KptIcon } from '../icon/icon.component';\nimport { KptAccordion } from './accordion.component';\n\n/**\n * Panel akordeonu. Umieszczaj w `kpt-accordion`. Stan `expanded` jest dwukierunkowy.\n */\n@Component({\n selector: 'kpt-accordion-panel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <div class=\"kpt-accordion-panel\" [class.is-open]=\"expanded()\">\n <button\n type=\"button\"\n class=\"kpt-accordion-panel__header\"\n [attr.aria-expanded]=\"expanded()\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n >\n <span class=\"kpt-accordion-panel__title\">{{ title() }}</span>\n <kpt-icon name=\"chevron-down\" class=\"kpt-accordion-panel__chevron\" [class.is-open]=\"expanded()\" />\n </button>\n <div\n class=\"kpt-accordion-panel__collapse\"\n [class.is-open]=\"expanded()\"\n [attr.inert]=\"expanded() ? null : ''\"\n [attr.aria-hidden]=\"!expanded()\"\n >\n <div class=\"kpt-accordion-panel__collapse-inner\">\n <div class=\"kpt-accordion-panel__body\"><ng-content /></div>\n </div>\n </div>\n </div>\n `,\n styleUrl: './accordion-panel.component.scss',\n host: {\n 'class': 'kpt-accordion-panel-host',\n '[style.--kpt-anim-duration]': 'animMs()',\n },\n})\nexport class KptAccordionPanel {\n readonly title = input.required<string>();\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly expanded = model(false);\n\n private readonly accordion = inject(KptAccordion, { optional: true });\n\n protected readonly animMs = computed(() => {\n const on = this.accordion?.animated() ?? true;\n const d = this.accordion?.animationDuration() ?? 500;\n return (on ? d : 0) + 'ms';\n });\n\n protected toggle(): void {\n if (this.disabled()) return;\n const willOpen = !this.expanded();\n this.expanded.set(willOpen);\n if (willOpen) this.accordion?.onOpen(this);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, contentChildren, input } from '@angular/core';\nimport { KptAccordionPanel } from './accordion-panel.component';\n\n/**\n * Akordeon — grupa rozwijanych paneli. `multi` pozwala otworzyć wiele naraz.\n *\n * @example\n * <kpt-accordion>\n * <kpt-accordion-panel title=\"Sekcja 1\">…</kpt-accordion-panel>\n * <kpt-accordion-panel title=\"Sekcja 2\">…</kpt-accordion-panel>\n * </kpt-accordion>\n */\n@Component({\n selector: 'kpt-accordion',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `<ng-content />`,\n styleUrl: './accordion.component.scss',\n host: { class: 'kpt-accordion-host' },\n})\nexport class KptAccordion {\n readonly multi = input(false, { transform: booleanAttribute });\n readonly animated = input(true, { transform: booleanAttribute });\n readonly animationDuration = input(500);\n private readonly panels = contentChildren(KptAccordionPanel);\n\n /** Wywoływane przez panel przy otwarciu — zamyka pozostałe, gdy nie `multi`. */\n onOpen(opened: KptAccordionPanel): void {\n if (this.multi()) return;\n for (const panel of this.panels()) {\n if (panel !== opened) panel.expanded.set(false);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject, input } from '@angular/core';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\n\nexport interface KptBreadcrumbItem {\n label: string;\n url?: string;\n}\n\n/**\n * Ścieżka nawigacji (breadcrumbs).\n *\n * @example\n * <kpt-breadcrumb [items]=\"[{label:'Start',url:'/'},{label:'Ustawienia'}]\" />\n */\n@Component({\n selector: 'kpt-breadcrumb',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <nav class=\"kpt-breadcrumb\" [attr.aria-label]=\"i18n.t('breadcrumb.label')\">\n @for (item of items(); track $index; let last = $last) {\n @if (item.url && !last) {\n <a class=\"kpt-breadcrumb__link\" [href]=\"item.url\">{{ item.label }}</a>\n } @else {\n <span class=\"kpt-breadcrumb__current\" [attr.aria-current]=\"last ? 'page' : null\">{{ item.label }}</span>\n }\n @if (!last) {\n <kpt-icon name=\"chevron-right\" class=\"kpt-breadcrumb__sep\" />\n }\n }\n </nav>\n `,\n styleUrl: './breadcrumb.component.scss',\n host: { class: 'kpt-breadcrumb-host' },\n})\nexport class KptBreadcrumb {\n readonly items = input<KptBreadcrumbItem[]>([]);\n protected readonly i18n = inject(KptI18n);\n}\n","import { ChangeDetectionStrategy, Component, TemplateRef, input, viewChild } from '@angular/core';\n\n/**\n * Krok w `kpt-stepper`. Treść renderowana leniwie (gdy krok aktywny).\n *\n * @example\n * <kpt-step label=\"Konto\">…</kpt-step>\n */\n@Component({\n selector: 'kpt-step',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<ng-template><ng-content /></ng-template>`,\n})\nexport class KptStep {\n readonly label = input.required<string>();\n readonly content = viewChild.required(TemplateRef);\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n contentChildren,\n input,\n model,\n signal,\n} from '@angular/core';\nimport { KptIcon } from '../icon/icon.component';\nimport { KptStep } from './step.component';\n\n/**\n * Kreator kroków (stepper). Nagłówek z numerowanymi krokami + aktywna treść.\n * Metody `next()`/`prev()`/`goTo()` do sterowania (np. z przycisków).\n *\n * @example\n * <kpt-stepper #s [(activeIndex)]=\"step\">\n * <kpt-step label=\"Konto\">…<kpt-button (click)=\"s.next()\">Dalej</kpt-button></kpt-step>\n * <kpt-step label=\"Profil\">…</kpt-step>\n * </kpt-stepper>\n */\n@Component({\n selector: 'kpt-stepper',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, KptIcon],\n template: `\n <ol class=\"kpt-stepper__header\">\n @for (step of steps(); track $index; let i = $index, last = $last) {\n <li class=\"kpt-stepper__step\" [class.is-active]=\"i === activeIndex()\" [class.is-done]=\"i < activeIndex()\">\n <button type=\"button\" class=\"kpt-stepper__marker\" (click)=\"goTo(i)\" [attr.aria-current]=\"i === activeIndex() ? 'step' : null\">\n @if (i < activeIndex()) { <kpt-icon name=\"check\" /> } @else { {{ i + 1 }} }\n </button>\n <span class=\"kpt-stepper__label\">{{ step.label() }}</span>\n @if (!last) { <span class=\"kpt-stepper__connector\"></span> }\n </li>\n }\n </ol>\n <div class=\"kpt-stepper__body\">\n @for (step of activePanels(); track activeIndex()) {\n <div class=\"kpt-stepper__panel\"><ng-container [ngTemplateOutlet]=\"step.content()\" /></div>\n }\n </div>\n `,\n styleUrl: './stepper.component.scss',\n host: {\n 'class': 'kpt-stepper-host',\n '[style.--kpt-anim-duration]': \"(animated() ? animationDuration() : 0) + 'ms'\",\n '[style.--kpt-anim-dir]': 'direction()',\n },\n})\nexport class KptStepper {\n protected readonly steps = contentChildren(KptStep);\n readonly activeIndex = model(0);\n readonly animated = input(true, { transform: booleanAttribute });\n readonly animationDuration = input(500);\n\n protected readonly direction = signal(1);\n protected readonly activeStep = computed(() => this.steps()[this.activeIndex()]);\n protected readonly activePanels = computed(() => {\n const step = this.activeStep();\n return step ? [step] : [];\n });\n\n goTo(index: number): void {\n const next = Math.max(0, Math.min(index, this.steps().length - 1));\n this.direction.set(next >= this.activeIndex() ? 1 : -1);\n this.activeIndex.set(next);\n }\n next(): void {\n this.direction.set(1);\n this.activeIndex.update((i) => Math.min(i + 1, this.steps().length - 1));\n }\n prev(): void {\n this.direction.set(-1);\n this.activeIndex.update((i) => Math.max(i - 1, 0));\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n input,\n model,\n} from '@angular/core';\nimport { KptButton } from '../button/button.component';\nimport { KptIcon } from '../icon/icon.component';\nimport { KptI18n } from '../i18n/i18n.service';\n\n/**\n * Paginator Koncept UI. Sterowany sygnałami; `pageIndex` i `pageSize` są dwukierunkowe.\n *\n * @example\n * <kpt-paginator [length]=\"total()\" [(pageIndex)]=\"page\" [(pageSize)]=\"size\" />\n */\n@Component({\n selector: 'kpt-paginator',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptButton, KptIcon],\n templateUrl: './paginator.component.html',\n styleUrl: './paginator.component.scss',\n host: { class: 'kpt-paginator' },\n})\nexport class KptPaginator {\n /** Łączna liczba elementów. */\n readonly length = input.required<number>();\n /** Rozmiar strony (dwukierunkowe). */\n readonly pageSize = model<number>(10);\n /** Indeks strony od 0 (dwukierunkowe). */\n readonly pageIndex = model<number>(0);\n /** Dostępne rozmiary strony. */\n readonly pageSizeOptions = input<number[]>([5, 10, 20, 50]);\n\n protected readonly i18n = inject(KptI18n);\n\n readonly totalPages = computed(() => Math.max(1, Math.ceil(this.length() / this.pageSize())));\n readonly rangeStart = computed(() => (this.length() === 0 ? 0 : this.pageIndex() * this.pageSize() + 1));\n readonly rangeEnd = computed(() => Math.min(this.length(), (this.pageIndex() + 1) * this.pageSize()));\n protected readonly rangeLabel = computed(() =>\n this.i18n.t('paginator.range', { start: this.rangeStart(), end: this.rangeEnd(), total: this.length() }),\n );\n readonly canPrev = computed(() => this.pageIndex() > 0);\n readonly canNext = computed(() => this.pageIndex() < this.totalPages() - 1);\n\n constructor() {\n // Utrzymuj poprawny indeks, gdy zmieni się długość lub rozmiar strony.\n effect(() => {\n const max = this.totalPages() - 1;\n if (this.pageIndex() > max) {\n this.pageIndex.set(max);\n }\n });\n }\n\n prev(): void {\n if (this.canPrev()) this.pageIndex.update((i) => i - 1);\n }\n next(): void {\n if (this.canNext()) this.pageIndex.update((i) => i + 1);\n }\n onSizeChange(event: Event): void {\n this.pageSize.set(+(event.target as HTMLSelectElement).value);\n this.pageIndex.set(0);\n }\n}\n","<div class=\"kpt-paginator__size\">\n <label>\n {{ i18n.t('paginator.rowsPerPage') }}\n <select class=\"kpt-paginator__select\" [value]=\"pageSize()\" (change)=\"onSizeChange($event)\">\n @for (opt of pageSizeOptions(); track opt) {\n <option [value]=\"opt\" [selected]=\"opt === pageSize()\">{{ opt }}</option>\n }\n </select>\n </label>\n</div>\n\n<span class=\"kpt-paginator__range\">{{ rangeLabel() }}</span>\n\n<div class=\"kpt-paginator__nav\">\n <kpt-button variant=\"outline\" size=\"sm\" [disabled]=\"!canPrev()\" (click)=\"prev()\" [attr.aria-label]=\"i18n.t('paginator.prevPage')\"><kpt-icon name=\"chevron-left\" /></kpt-button>\n <kpt-button variant=\"outline\" size=\"sm\" [disabled]=\"!canNext()\" (click)=\"next()\" [attr.aria-label]=\"i18n.t('paginator.nextPage')\"><kpt-icon name=\"chevron-right\" /></kpt-button>\n</div>\n","import { Directive, TemplateRef, inject, input } from '@angular/core';\n\n/**\n * Własny szablon komórki dla kolumny `kpt-data-table`. Kontekst: `$implicit` = wiersz,\n * `value` = wartość pola.\n *\n * @example\n * <kpt-data-table [columns]=\"cols\" [data]=\"rows\">\n * <ng-template kptCell=\"status\" let-row let-value=\"value\">\n * <span class=\"badge\">{{ value }}</span>\n * </ng-template>\n * </kpt-data-table>\n */\n@Directive({\n selector: 'ng-template[kptCell]',\n})\nexport class KptCellDef {\n /** Nazwa pola kolumny, dla której obowiązuje szablon. */\n readonly kptCell = input.required<string>();\n readonly template = inject(TemplateRef);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n/**\n * Szablon rozwijanego wiersza (row detail) dla `kpt-data-table`. Renderowany pod\n * wierszem po rozwinięciu. Kontekst: `$implicit` = wiersz. Wymaga `expandable`.\n *\n * @example\n * <kpt-data-table [columns]=\"cols\" [data]=\"rows\" expandable>\n * <ng-template kptRowDetail let-row>\n * <div class=\"szczegoly\">{{ row.opis }}</div>\n * </ng-template>\n * </kpt-data-table>\n */\n@Directive({\n selector: 'ng-template[kptRowDetail]',\n})\nexport class KptRowDetailDef {\n readonly template = inject(TemplateRef);\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n TemplateRef,\n ViewEncapsulation,\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChild,\n contentChildren,\n effect,\n inject,\n input,\n linkedSignal,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { KptButton } from '../button/button.component';\nimport { KptDateRange, type KptDateRangeValue } from '../date-range/date-range.component';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\nimport type { KptIconName } from '../icon/icons';\nimport { KptPaginator } from '../paginator/paginator.component';\nimport { KptSelect } from '../select/select.component';\nimport { KptSlider } from '../slider/slider.component';\nimport type { KptOption } from '../shared/types';\nimport { KptCellDef } from './cell.directive';\nimport { KptRowDetailDef } from './row-detail.directive';\n\n/** Rodzaj kontrolki filtra w nagłówku kolumny. */\nexport type KptColumnFilterType = 'text' | 'number' | 'select' | 'dateRange' | 'numberRange' | 'slider';\n\nexport interface KptColumnFilter {\n type: KptColumnFilterType;\n /** Opcje dla `type: 'select'`. */\n options?: KptOption<unknown>[];\n /** Wielokrotny wybór dla `type: 'select'`. */\n multiple?: boolean;\n /** Placeholder kontrolki. */\n placeholder?: string;\n /** Dolna granica dla `type: 'slider'` (domyślnie 0). */\n min?: number;\n /** Górna granica dla `type: 'slider'` (domyślnie 100). */\n max?: number;\n /** Krok dla `type: 'slider'` (domyślnie 1). */\n step?: number;\n}\n\nexport interface KptColumn {\n /** Nazwa pola w wierszu. */\n field: string;\n /** Nagłówek kolumny. */\n header: string;\n /** Czy kolumna jest sortowalna. */\n sortable?: boolean;\n /** Wyrównanie zawartości. */\n align?: 'start' | 'center' | 'end';\n /** Szerokość kolumny (np. '10rem', '20%'). Wymagane dla kolumn zamrożonych. */\n width?: string;\n /** Zamrożenie (sticky) — obsługiwane dla wiodących, sąsiadujących kolumn. */\n frozen?: boolean;\n /** Filtr kolumny w wierszu nagłówka (input/number/select/zakres dat). */\n filter?: KptColumnFilter;\n}\n\nconst REM_PX = 16;\nconst CHECKBOX_FROZEN_W = 3; // rem\nconst EXPANDER_FROZEN_W = 2.5; // rem\n\ntype SortDir = 'asc' | 'desc' | null;\n\n/** Stan przekazywany w trybie lazy przy każdej zmianie sortowania/filtra/strony. */\nexport interface KptTableLazyState {\n pageIndex: number;\n pageSize: number;\n sortField: string | null;\n sortDir: SortDir;\n filter: string;\n /** Wartości filtrów per kolumna (pole → wartość kontrolki). */\n columnFilters: Record<string, unknown>;\n}\n\n/**\n * Flagowa tabela danych Koncept UI: kolumny konfiguracją, sortowanie,\n * filtr globalny, paginacja, zaznaczanie wierszy i własne szablony komórek (`kptCell`).\n * Sygnałowa, OnPush. Stylowanie tokenami `--kpt-table-*`.\n *\n * @example\n * <kpt-data-table [columns]=\"cols\" [data]=\"rows\" filterable [pageSize]=\"10\"\n * selectable=\"multiple\" rowKey=\"id\" [(selection)]=\"picked\">\n * <ng-template kptCell=\"status\" let-value=\"value\">\n * <span class=\"badge\">{{ value }}</span>\n * </ng-template>\n * </kpt-data-table>\n */\n@Component({\n selector: 'kpt-data-table',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, KptButton, KptIcon, KptPaginator, KptSelect, KptDateRange, KptSlider],\n templateUrl: './data-table.component.html',\n styleUrl: './data-table.component.scss',\n host: {\n 'class': 'kpt-data-table',\n '[style.--kpt-thead-offset]': \"theadOffset() + 'px'\",\n },\n})\nexport class KptDataTable<T = Record<string, unknown>> {\n // ── Wejścia ──\n readonly columns = input.required<readonly KptColumn[]>();\n readonly data = input<readonly T[]>([]);\n readonly filterable = input(false, { transform: booleanAttribute });\n /** Pozycja wiersza filtrów kolumn względem etykiet: nad ('top') lub pod ('bottom'). */\n readonly filterRowPosition = input<'top' | 'bottom'>('bottom');\n /** Rozmiar strony; 0 wyłącza paginację. */\n readonly pageSize = input(0);\n readonly pageSizeOptions = input<number[]>([5, 10, 20, 50]);\n readonly selectable = input<'none' | 'single' | 'multiple'>('none');\n readonly loading = input(false, { transform: booleanAttribute });\n /** Komunikat pustej tabeli; bez wartości używa i18n (`dataTable.empty`). */\n readonly emptyMessage = input<string>();\n /** Pole identyfikujące wiersz (dla zaznaczania). Bez niego — porównanie po referencji. */\n readonly rowKey = input<string | null>(null);\n /** Wysokość przewijalnego obszaru (np. '400px'); sticky header pozostaje widoczny. */\n readonly scrollHeight = input<string | null>(null);\n /** Wirtualizacja wierszy dla dużych zbiorów (renderuje tylko widoczne). Wymaga `scrollHeight`. */\n readonly virtualScroll = input(false, { transform: booleanAttribute });\n /** Wysokość wiersza w px (stała, wymagana przy virtualScroll). */\n readonly rowHeight = input(41);\n /** Umożliwia przestawianie kolumn metodą przeciągnij-i-upuść. */\n readonly reorderable = input(false, { transform: booleanAttribute });\n /** Pokazuje przycisk eksportu do CSV. */\n readonly exportable = input(false, { transform: booleanAttribute });\n /** Nazwa pliku eksportu CSV. */\n readonly exportFilename = input('export.csv');\n /** Tryb serwerowy: bez filtrowania/sortowania/paginacji po stronie klienta. */\n readonly lazy = input(false, { transform: booleanAttribute });\n /** Łączna liczba rekordów (wymagane w trybie lazy dla paginacji). */\n readonly totalRecords = input<number | null>(null);\n /** Rozwijane wiersze: dodaje kolumnę z przełącznikiem i renderuje szablon `kptRowDetail`. */\n readonly expandable = input(false, { transform: booleanAttribute });\n /** Zezwala na rozwinięcie wielu wierszy naraz (domyślnie tak). */\n readonly multiExpand = input(true, { transform: booleanAttribute });\n\n // ── Model / zdarzenia ──\n readonly selection = model<T[]>([]);\n /** Rozwinięte wiersze (dwukierunkowo). */\n readonly expandedRows = model<T[]>([]);\n readonly rowClick = output<T>();\n /** Emitowane w trybie lazy przy zmianie sortowania/filtra/strony. */\n readonly lazyLoad = output<KptTableLazyState>();\n\n protected readonly i18n = inject(KptI18n);\n /** Komunikat pustej tabeli (input albo domyślny z i18n). */\n protected readonly emptyText = computed(() => this.emptyMessage() ?? this.i18n.t('dataTable.empty'));\n\n /** Kolumny w bieżącej kolejności (po ewentualnym przestawieniu). */\n protected readonly orderedColumns = linkedSignal<readonly KptColumn[]>(() => this.columns());\n\n // ── Wirtualizacja (ręczne okno wierszy) ──\n private readonly scrollEl = viewChild<ElementRef<HTMLElement>>('scrollEl');\n protected readonly scrollTop = signal(0);\n protected readonly viewportHeight = signal(400);\n private readonly buffer = 6;\n\n // ── Sticky offset drugiego wiersza nagłówka (etykiety + filtry) ──\n private readonly theadEl = viewChild<ElementRef<HTMLTableSectionElement>>('theadEl');\n protected readonly theadOffset = signal(0);\n\n constructor() {\n // Tryb lazy: przy każdej zmianie stanu poproś rodzica o dane.\n effect(() => {\n if (!this.lazy()) return;\n this.lazyLoad.emit({\n pageIndex: this.pageIndex(),\n pageSize: this.pageSizeState(),\n sortField: this.sortField(),\n sortDir: this.sortDir(),\n filter: this.filterText(),\n columnFilters: this.columnFilters(),\n });\n });\n\n // Zmierz wysokość viewportu dla wirtualizacji.\n afterNextRender(() => {\n const el = this.scrollEl()?.nativeElement;\n if (el) this.viewportHeight.set(el.clientHeight);\n });\n\n // Zmierz wysokość pierwszego wiersza nagłówka → offset sticky drugiego wiersza.\n afterRenderEffect(() => {\n this.filterRowPosition();\n this.hasColumnFilters();\n this.orderedColumns();\n const first = this.theadEl()?.nativeElement?.rows?.[0];\n if (first) this.theadOffset.set(first.offsetHeight);\n });\n }\n\n protected onScroll(event: Event): void {\n if (!this.virtualScroll()) return;\n const el = event.target as HTMLElement;\n this.scrollTop.set(el.scrollTop);\n this.viewportHeight.set(el.clientHeight);\n }\n\n protected readonly virtualStart = computed(() =>\n Math.max(0, Math.floor(this.scrollTop() / this.rowHeight()) - this.buffer),\n );\n protected readonly virtualEnd = computed(() => {\n const total = this.sorted().length;\n const count = Math.ceil(this.viewportHeight() / this.rowHeight()) + this.buffer * 2;\n return Math.min(total, this.virtualStart() + count);\n });\n protected readonly virtualRows = computed(() => this.sorted().slice(this.virtualStart(), this.virtualEnd()));\n protected readonly topPad = computed(() => this.virtualStart() * this.rowHeight());\n protected readonly bottomPad = computed(() => (this.sorted().length - this.virtualEnd()) * this.rowHeight());\n\n // ── Przestawianie kolumn (natywny HTML5 drag-and-drop; działa w trybie zoneless) ──\n protected readonly dragIndex = signal<number | null>(null);\n\n /** Kolumna przeciągalna tylko gdy `reorderable` i nie jest zamrożona (frozen musi zostać wiodąca). */\n protected isColDraggable(col: KptColumn): boolean {\n return this.reorderable() && !col.frozen;\n }\n /** Liczba wiodących kolumn zamrożonych — poza nie wolno upuszczać ani ich przesuwać. */\n private frozenLeadCount(): number {\n let n = 0;\n for (const col of this.orderedColumns()) {\n if (col.frozen) n++;\n else break;\n }\n return n;\n }\n\n protected onColDragStart(index: number, event: DragEvent): void {\n if (this.orderedColumns()[index]?.frozen) return; // frozen nieprzeciągalne\n this.dragIndex.set(index);\n event.dataTransfer?.setData('text/plain', String(index));\n if (event.dataTransfer) event.dataTransfer.effectAllowed = 'move';\n }\n protected onColDragOver(index: number, event: DragEvent): void {\n // Zezwól na upuszczenie tylko poza obszarem kolumn zamrożonych.\n if (this.dragIndex() !== null && index >= this.frozenLeadCount()) event.preventDefault();\n }\n protected onColDrop(index: number, event: DragEvent): void {\n event.preventDefault();\n const from = this.dragIndex();\n if (from === null || from === index) return;\n if (index < this.frozenLeadCount()) return; // nie wsuwaj przed/pomiędzy kolumny zamrożone\n const cols = [...this.orderedColumns()];\n const [moved] = cols.splice(from, 1);\n cols.splice(index, 0, moved);\n this.orderedColumns.set(cols);\n this.dragIndex.set(null);\n }\n protected onColDragEnd(): void {\n this.dragIndex.set(null);\n }\n\n exportCsv(): void {\n const cols = this.orderedColumns();\n const rows = this.lazy() ? this.data() : this.sorted();\n const escape = (value: unknown): string => {\n const text = String(value ?? '');\n return /[\",\\n;]/.test(text) ? `\"${text.replace(/\"/g, '\"\"')}\"` : text;\n };\n const header = cols.map((c) => escape(c.header)).join(';');\n const body = rows\n .map((row) => cols.map((c) => escape((row as Record<string, unknown>)[c.field])).join(';'))\n .join('\\n');\n // BOM () — poprawne polskie znaki w Excelu.\n const csv = `${header}\\n${body}`;\n const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = this.exportFilename();\n link.click();\n URL.revokeObjectURL(url);\n }\n\n // ── Szablony komórek ──\n private readonly cellDefs = contentChildren(KptCellDef);\n private readonly cellMap = computed(() => {\n const map = new Map<string, TemplateRef<unknown>>();\n for (const def of this.cellDefs()) map.set(def.kptCell(), def.template);\n return map;\n });\n protected cellTemplate(field: string): TemplateRef<unknown> | null {\n return this.cellMap().get(field) ?? null;\n }\n\n // ── Rozwijane wiersze ──\n private readonly rowDetailDef = contentChild(KptRowDetailDef);\n protected readonly rowDetailTpl = computed(() => this.rowDetailDef()?.template ?? null);\n /** Kolumna z przełącznikiem widoczna, gdy włączono `expandable` i podano szablon `kptRowDetail`. */\n protected readonly hasRowDetail = computed(() => this.expandable() && !!this.rowDetailDef());\n protected isExpanded(row: T): boolean {\n return this.expandedRows().some((r) => this.sameRow(r, row));\n }\n protected toggleExpand(row: T): void {\n if (this.isExpanded(row)) {\n this.expandedRows.set(this.expandedRows().filter((r) => !this.sameRow(r, row)));\n } else {\n this.expandedRows.set(this.multiExpand() ? [...this.expandedRows(), row] : [row]);\n }\n }\n\n // ── Stan ──\n protected readonly filterText = signal('');\n protected readonly columnFilters = signal<Record<string, unknown>>({});\n protected readonly sortField = signal<string | null>(null);\n protected readonly sortDir = signal<SortDir>(null);\n protected readonly pageIndex = signal(0);\n protected readonly pageSizeState = linkedSignal(() => this.pageSize() || 10);\n\n protected readonly hasColumnFilters = computed(() => this.columns().some((c) => c.filter));\n\n // ── Filtry kolumn ──\n protected setColumnFilter(field: string, value: unknown): void {\n this.columnFilters.update((cur) => ({ ...cur, [field]: value }));\n this.pageIndex.set(0);\n }\n /** Input liczbowy — pozostaw tylko cyfry i zsynchronizuj DOM z wartością. */\n protected onNumberFilter(field: string, event: Event): void {\n const el = event.target as HTMLInputElement;\n const digits = el.value.replace(/\\D/g, '');\n el.value = digits;\n this.setColumnFilter(field, digits);\n }\n /** Bieżąca wartość filtra zakresu liczbowego (min/max) dla kolumny. */\n protected rangeVal(field: string): { min: string; max: string } {\n const v = this.columnFilters()[field] as { min?: string; max?: string } | undefined;\n return { min: v?.min ?? '', max: v?.max ?? '' };\n }\n /** Aktualizuj jedną granicę zakresu (min/max), pozostawiając tylko cyfry. */\n protected setRangeFilter(field: string, bound: 'min' | 'max', event: Event): void {\n const el = event.target as HTMLInputElement;\n const digits = el.value.replace(/\\D/g, '');\n el.value = digits;\n this.setColumnFilter(field, { ...this.rangeVal(field), [bound]: digits });\n }\n /** Bieżąca para `[lo, hi]` filtra suwakowego dla kolumny (domyślnie pełen zakres). */\n protected sliderVal(col: KptColumn): [number, number] {\n const mn = col.filter?.min ?? 0;\n const mx = col.filter?.max ?? 100;\n const v = this.columnFilters()[col.field] as [number, number] | undefined;\n return v ?? [mn, mx];\n }\n\n private static toIso(value: unknown): string {\n if (value instanceof Date) {\n const p = (n: number) => String(n).padStart(2, '0');\n return `${value.getFullYear()}-${p(value.getMonth() + 1)}-${p(value.getDate())}`;\n }\n return String(value ?? '');\n }\n\n private matchesColumnFilters(row: T): boolean {\n const filters = this.columnFilters();\n return this.columns().every((col) => {\n const f = col.filter;\n if (!f) return true;\n const fv = filters[col.field];\n if (fv == null || fv === '' || (Array.isArray(fv) && fv.length === 0)) return true;\n const cell = (row as Record<string, unknown>)[col.field];\n switch (f.type) {\n case 'text':\n return String(cell ?? '').toLowerCase().includes(String(fv).toLowerCase());\n case 'number':\n return String(cell ?? '').includes(String(fv));\n case 'select': {\n const vals = Array.isArray(fv) ? fv : [fv];\n // Komórka-tablica (np. lista tagów/członków) → dopasuj, gdy zawiera dowolną z wybranych wartości.\n if (Array.isArray(cell)) return cell.some((c) => vals.includes(c));\n return vals.includes(cell);\n }\n case 'numberRange': {\n const { min, max } = (fv as { min?: string; max?: string }) ?? {};\n const hasMin = min != null && min !== '';\n const hasMax = max != null && max !== '';\n if (!hasMin && !hasMax) return true;\n const num = typeof cell === 'number' ? cell : parseFloat(String(cell ?? ''));\n if (Number.isNaN(num)) return false;\n if (hasMin && num < parseFloat(min!)) return false;\n if (hasMax && num > parseFloat(max!)) return false;\n return true;\n }\n case 'slider': {\n const [lo, hi] = fv as [number, number];\n const num = typeof cell === 'number' ? cell : parseFloat(String(cell ?? ''));\n if (Number.isNaN(num)) return false;\n return num >= lo && num <= hi;\n }\n case 'dateRange': {\n const { start, end } = (fv as KptDateRangeValue) ?? { start: '', end: '' };\n if (!start && !end) return true;\n const iso = KptDataTable.toIso(cell);\n if (start && iso < start) return false;\n if (end && iso > end) return false;\n return true;\n }\n default:\n return true;\n }\n });\n }\n\n // ── Potok przetwarzania danych ──\n private readonly filtered = computed(() => {\n const query = this.filterText().trim().toLowerCase();\n const cols = this.columns();\n let rows = this.data();\n if (query) {\n rows = rows.filter((row) =>\n cols.some((col) => String((row as Record<string, unknown>)[col.field] ?? '').toLowerCase().includes(query)),\n );\n }\n if (this.hasColumnFilters()) {\n rows = rows.filter((row) => this.matchesColumnFilters(row));\n }\n return rows;\n });\n\n private readonly sorted = computed(() => {\n const field = this.sortField();\n const dir = this.sortDir();\n const rows = this.filtered();\n if (!field || !dir) return rows;\n const sign = dir === 'asc' ? 1 : -1;\n return [...rows].sort((a, b) => {\n const av = (a as Record<string, unknown>)[field];\n const bv = (b as Record<string, unknown>)[field];\n if (av == null) return 1;\n if (bv == null) return -1;\n if (typeof av === 'number' && typeof bv === 'number') return (av - bv) * sign;\n return String(av).localeCompare(String(bv)) * sign;\n });\n });\n\n protected readonly filteredCount = computed(() =>\n this.lazy() ? (this.totalRecords() ?? this.data().length) : this.filtered().length,\n );\n\n protected readonly paged = computed(() => {\n if (this.lazy()) return this.data();\n const rows = this.sorted();\n if (this.pageSize() <= 0) return rows;\n const size = this.pageSizeState();\n const start = this.pageIndex() * size;\n return rows.slice(start, start + size);\n });\n\n protected readonly colspan = computed(\n () =>\n this.columns().length +\n (this.selectable() !== 'none' ? 1 : 0) +\n (this.hasRowDetail() ? 1 : 0),\n );\n protected readonly displayCount = computed(() =>\n this.virtualScroll() ? this.sorted().length : this.paged().length,\n );\n\n // ── Kolumny zamrożone (sticky, wiodące) ──\n private parseWidthPx(width?: string): number {\n if (!width) return 8 * REM_PX;\n const n = parseFloat(width);\n if (Number.isNaN(n)) return 8 * REM_PX;\n return width.trim().endsWith('px') ? n : n * REM_PX;\n }\n /** Mapa pole → przesunięcie left (px) dla wiodących zamrożonych kolumn. */\n /** Suma szerokości wiodących kolumn systemowych (rozwijanie + zaznaczanie) w px. */\n private readonly leadingStickyWidth = computed(() => {\n let acc = 0;\n if (this.hasRowDetail()) acc += EXPANDER_FROZEN_W * REM_PX;\n if (this.selectable() !== 'none') acc += CHECKBOX_FROZEN_W * REM_PX;\n return acc;\n });\n private readonly frozenOffsets = computed(() => {\n const map = new Map<string, number>();\n let acc = this.leadingStickyWidth();\n for (const col of this.orderedColumns()) {\n if (!col.frozen) break; // tylko wiodące, sąsiadujące\n map.set(col.field, acc);\n acc += this.parseWidthPx(col.width);\n }\n return map;\n });\n protected readonly hasFrozen = computed(() => this.frozenOffsets().size > 0);\n /** Sticky-left kolumny rozwijania (px) — 0, gdy tabela ma kolumny zamrożone. */\n protected readonly expanderStickyLeft = computed(() => (this.hasFrozen() ? 0 : null));\n /** Sticky-left kolumny zaznaczania (px) — za kolumną rozwijania, jeśli obecna. */\n protected readonly checkboxStickyLeft = computed(() => {\n if (!this.hasFrozen()) return null;\n return this.hasRowDetail() ? EXPANDER_FROZEN_W * REM_PX : 0;\n });\n protected frozenLeft(field: string): number | null {\n return this.frozenOffsets().get(field) ?? null;\n }\n protected isFrozen(field: string): boolean {\n return this.frozenOffsets().has(field);\n }\n\n // ── Sortowanie ──\n protected toggleSort(col: KptColumn): void {\n if (!col.sortable) return;\n if (this.sortField() !== col.field) {\n this.sortField.set(col.field);\n this.sortDir.set('asc');\n return;\n }\n const dir = this.sortDir();\n if (dir === 'asc') this.sortDir.set('desc');\n else if (dir === 'desc') {\n this.sortField.set(null);\n this.sortDir.set(null);\n } else this.sortDir.set('asc');\n }\n protected sortIconName(col: KptColumn): KptIconName {\n return this.sortField() === col.field && this.sortDir() === 'asc' ? 'chevron-up' : 'chevron-down';\n }\n protected ariaSort(col: KptColumn): 'ascending' | 'descending' | 'none' {\n if (this.sortField() !== col.field || !this.sortDir()) return 'none';\n return this.sortDir() === 'asc' ? 'ascending' : 'descending';\n }\n\n // ── Filtrowanie ──\n protected onFilter(event: Event): void {\n this.filterText.set((event.target as HTMLInputElement).value);\n this.pageIndex.set(0);\n }\n\n // ── Zaznaczanie ──\n private sameRow(a: T, b: T): boolean {\n const key = this.rowKey();\n if (key) return (a as Record<string, unknown>)[key] === (b as Record<string, unknown>)[key];\n return a === b;\n }\n protected isSelected(row: T): boolean {\n return this.selection().some((r) => this.sameRow(r, row));\n }\n protected toggleRow(row: T): void {\n const mode = this.selectable();\n if (mode === 'none') return;\n if (mode === 'single') {\n this.selection.set(this.isSelected(row) ? [] : [row]);\n return;\n }\n const current = this.selection();\n this.selection.set(\n this.isSelected(row) ? current.filter((r) => !this.sameRow(r, row)) : [...current, row],\n );\n }\n protected readonly pageAllSelected = computed(() => {\n const page = this.paged();\n return page.length > 0 && page.every((r) => this.isSelected(r));\n });\n protected readonly pageSomeSelected = computed(() => {\n const page = this.paged();\n return page.some((r) => this.isSelected(r)) && !this.pageAllSelected();\n });\n protected toggleAllOnPage(): void {\n const page = this.paged();\n if (this.pageAllSelected()) {\n this.selection.set(this.selection().filter((r) => !page.some((pr) => this.sameRow(pr, r))));\n } else {\n const toAdd = page.filter((r) => !this.isSelected(r));\n this.selection.set([...this.selection(), ...toAdd]);\n }\n }\n\n // ── Wiersze ──\n protected onRowClick(row: T): void {\n this.rowClick.emit(row);\n }\n protected getValue(row: T, field: string): unknown {\n return (row as Record<string, unknown>)[field];\n }\n protected trackRow = (row: T): unknown => {\n const key = this.rowKey();\n return key ? (row as Record<string, unknown>)[key] : row;\n };\n}\n","@if (filterable() || exportable()) {\n <div class=\"kpt-data-table__toolbar\">\n @if (filterable()) {\n <input\n class=\"kpt-data-table__filter\"\n type=\"search\"\n [attr.placeholder]=\"i18n.t('dataTable.search')\"\n [value]=\"filterText()\"\n (input)=\"onFilter($event)\"\n />\n }\n @if (exportable()) {\n <kpt-button variant=\"outline\" size=\"sm\" (click)=\"exportCsv()\">{{ i18n.t('dataTable.exportCsv') }}</kpt-button>\n }\n </div>\n}\n\n<div class=\"kpt-data-table__scroll\" #scrollEl [style.max-height]=\"scrollHeight()\" (scroll)=\"onScroll($event)\">\n <table\n class=\"kpt-data-table__table\"\n [class.kpt-data-table__table--frozen]=\"hasFrozen()\"\n [class.kpt-data-table__table--virtual]=\"virtualScroll()\"\n >\n <thead #theadEl>\n @if (hasColumnFilters() && filterRowPosition() === 'top') {\n <ng-container [ngTemplateOutlet]=\"filterRowTpl\" />\n }\n <tr>\n @if (hasRowDetail()) {\n <th class=\"kpt-data-table__expander\" [class.kpt-data-table__cell--frozen]=\"hasFrozen()\" [style.left.px]=\"expanderStickyLeft()\"></th>\n }\n @if (selectable() === 'multiple') {\n <th class=\"kpt-data-table__checkbox\" [class.kpt-data-table__cell--frozen]=\"hasFrozen()\" [style.left.px]=\"checkboxStickyLeft()\">\n <input\n type=\"checkbox\"\n [checked]=\"pageAllSelected()\"\n [indeterminate]=\"pageSomeSelected()\"\n (change)=\"toggleAllOnPage()\"\n [attr.aria-label]=\"i18n.t('dataTable.selectAll')\"\n />\n </th>\n } @else if (selectable() === 'single') {\n <th class=\"kpt-data-table__checkbox\" [class.kpt-data-table__cell--frozen]=\"hasFrozen()\" [style.left.px]=\"checkboxStickyLeft()\"></th>\n }\n @for (col of orderedColumns(); track col.field; let i = $index) {\n <th\n [attr.draggable]=\"isColDraggable(col) ? true : null\"\n [style.width]=\"col.width\"\n [style.left.px]=\"frozenLeft(col.field)\"\n [attr.data-align]=\"col.align ?? 'start'\"\n [class.kpt-data-table__cell--frozen]=\"isFrozen(col.field)\"\n [class.kpt-data-table__th--sortable]=\"col.sortable\"\n [class.kpt-data-table__th--draggable]=\"isColDraggable(col)\"\n [class.kpt-data-table__th--dragover]=\"dragIndex() !== null && dragIndex() !== i && !col.frozen\"\n [attr.aria-sort]=\"ariaSort(col)\"\n (click)=\"toggleSort(col)\"\n (dragstart)=\"onColDragStart(i, $event)\"\n (dragover)=\"reorderable() ? onColDragOver(i, $event) : null\"\n (drop)=\"reorderable() ? onColDrop(i, $event) : null\"\n (dragend)=\"onColDragEnd()\"\n >\n @if (isColDraggable(col)) {\n <kpt-icon class=\"kpt-data-table__grip\" name=\"grip-vertical\" />\n }\n <span>{{ col.header }}</span>\n @if (col.sortable) {\n <kpt-icon\n class=\"kpt-data-table__sort\"\n [class.kpt-data-table__sort--active]=\"ariaSort(col) !== 'none'\"\n [name]=\"sortIconName(col)\"\n />\n }\n </th>\n }\n </tr>\n @if (hasColumnFilters() && filterRowPosition() === 'bottom') {\n <ng-container [ngTemplateOutlet]=\"filterRowTpl\" />\n }\n </thead>\n <tbody>\n @if (loading()) {\n <tr><td class=\"kpt-data-table__state\" [attr.colspan]=\"colspan()\">{{ i18n.t('dataTable.loading') }}</td></tr>\n } @else if (displayCount() === 0) {\n <tr><td class=\"kpt-data-table__state\" [attr.colspan]=\"colspan()\">{{ emptyText() }}</td></tr>\n } @else if (virtualScroll()) {\n @if (topPad() > 0) {\n <tr class=\"kpt-data-table__spacer\" aria-hidden=\"true\"><td [attr.colspan]=\"colspan()\" [style.height.px]=\"topPad()\"></td></tr>\n }\n @for (row of virtualRows(); track trackRow(row)) {\n <ng-container [ngTemplateOutlet]=\"rowTpl\" [ngTemplateOutletContext]=\"{ $implicit: row }\" />\n }\n @if (bottomPad() > 0) {\n <tr class=\"kpt-data-table__spacer\" aria-hidden=\"true\"><td [attr.colspan]=\"colspan()\" [style.height.px]=\"bottomPad()\"></td></tr>\n }\n } @else {\n @for (row of paged(); track trackRow(row)) {\n <ng-container [ngTemplateOutlet]=\"rowTpl\" [ngTemplateOutletContext]=\"{ $implicit: row }\" />\n }\n }\n </tbody>\n </table>\n</div>\n\n<ng-template #rowTpl let-row>\n <tr\n [class.kpt-data-table__row--selected]=\"isSelected(row)\"\n [class.kpt-data-table__row--expanded]=\"hasRowDetail() && isExpanded(row)\"\n [style.height.px]=\"virtualScroll() ? rowHeight() : null\"\n (click)=\"onRowClick(row)\"\n >\n @if (hasRowDetail()) {\n <td class=\"kpt-data-table__expander\" [class.kpt-data-table__cell--frozen]=\"hasFrozen()\" [style.left.px]=\"expanderStickyLeft()\">\n <button\n type=\"button\"\n class=\"kpt-data-table__expander-btn\"\n [class.kpt-data-table__expander-btn--open]=\"isExpanded(row)\"\n [attr.aria-expanded]=\"isExpanded(row)\"\n [attr.aria-label]=\"i18n.t('dataTable.expandRow')\"\n (click)=\"$event.stopPropagation(); toggleExpand(row)\"\n >\n <kpt-icon name=\"chevron-right\" />\n </button>\n </td>\n }\n @if (selectable() !== 'none') {\n <td class=\"kpt-data-table__checkbox\" [class.kpt-data-table__cell--frozen]=\"hasFrozen()\" [style.left.px]=\"checkboxStickyLeft()\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(row)\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleRow(row)\"\n [attr.aria-label]=\"i18n.t('dataTable.selectRow')\"\n />\n </td>\n }\n @for (col of orderedColumns(); track col.field) {\n <td\n [attr.data-align]=\"col.align ?? 'start'\"\n [style.left.px]=\"frozenLeft(col.field)\"\n [class.kpt-data-table__cell--frozen]=\"isFrozen(col.field)\"\n >\n @if (cellTemplate(col.field); as tpl) {\n <ng-container\n [ngTemplateOutlet]=\"tpl\"\n [ngTemplateOutletContext]=\"{ $implicit: row, value: getValue(row, col.field) }\"\n />\n } @else {\n {{ getValue(row, col.field) }}\n }\n </td>\n }\n </tr>\n @if (hasRowDetail() && isExpanded(row) && !virtualScroll()) {\n <tr class=\"kpt-data-table__detail-row\">\n <td class=\"kpt-data-table__detail\" [attr.colspan]=\"colspan()\">\n <ng-container [ngTemplateOutlet]=\"rowDetailTpl()\" [ngTemplateOutletContext]=\"{ $implicit: row }\" />\n </td>\n </tr>\n }\n</ng-template>\n\n<ng-template #filterRowTpl>\n <tr class=\"kpt-data-table__filter-row\">\n @if (hasRowDetail()) {\n <th class=\"kpt-data-table__expander\" [class.kpt-data-table__cell--frozen]=\"hasFrozen()\" [style.left.px]=\"expanderStickyLeft()\"></th>\n }\n @if (selectable() !== 'none') {\n <th class=\"kpt-data-table__checkbox\" [class.kpt-data-table__cell--frozen]=\"hasFrozen()\" [style.left.px]=\"checkboxStickyLeft()\"></th>\n }\n @for (col of orderedColumns(); track col.field) {\n <th\n [style.width]=\"col.width\"\n [style.left.px]=\"frozenLeft(col.field)\"\n [attr.data-align]=\"col.align ?? 'start'\"\n [class.kpt-data-table__cell--frozen]=\"isFrozen(col.field)\"\n >\n @switch (col.filter?.type) {\n @case ('text') {\n <input\n class=\"kpt-data-table__fcell\"\n type=\"search\"\n [attr.placeholder]=\"col.filter?.placeholder || ''\"\n [attr.aria-label]=\"i18n.t('dataTable.filter', { column: col.header })\"\n [value]=\"$any(columnFilters()[col.field]) || ''\"\n (input)=\"setColumnFilter(col.field, $any($event.target).value)\"\n (click)=\"$event.stopPropagation()\"\n />\n }\n @case ('number') {\n <input\n class=\"kpt-data-table__fcell\"\n type=\"text\"\n inputmode=\"numeric\"\n [attr.placeholder]=\"col.filter?.placeholder || ''\"\n [attr.aria-label]=\"i18n.t('dataTable.filter', { column: col.header })\"\n [value]=\"$any(columnFilters()[col.field]) || ''\"\n (input)=\"onNumberFilter(col.field, $event)\"\n (click)=\"$event.stopPropagation()\"\n />\n }\n @case ('select') {\n <kpt-select\n [options]=\"col.filter?.options || []\"\n [multiple]=\"!!col.filter?.multiple\"\n filter\n [placeholder]=\"col.filter?.placeholder || i18n.t('dataTable.all')\"\n [value]=\"columnFilters()[col.field] ?? null\"\n (valueChange)=\"setColumnFilter(col.field, $event)\"\n />\n }\n @case ('numberRange') {\n <div class=\"kpt-data-table__frange\">\n <input\n class=\"kpt-data-table__fcell\"\n type=\"text\"\n inputmode=\"numeric\"\n [attr.placeholder]=\"i18n.t('dataTable.min')\"\n [attr.aria-label]=\"i18n.t('dataTable.filterMin', { column: col.header })\"\n [value]=\"rangeVal(col.field).min\"\n (input)=\"setRangeFilter(col.field, 'min', $event)\"\n (click)=\"$event.stopPropagation()\"\n />\n <input\n class=\"kpt-data-table__fcell\"\n type=\"text\"\n inputmode=\"numeric\"\n [attr.placeholder]=\"i18n.t('dataTable.max')\"\n [attr.aria-label]=\"i18n.t('dataTable.filterMax', { column: col.header })\"\n [value]=\"rangeVal(col.field).max\"\n (input)=\"setRangeFilter(col.field, 'max', $event)\"\n (click)=\"$event.stopPropagation()\"\n />\n </div>\n }\n @case ('slider') {\n <div class=\"kpt-data-table__fslider\" (click)=\"$event.stopPropagation()\">\n <kpt-slider\n range\n [min]=\"col.filter?.min ?? 0\"\n [max]=\"col.filter?.max ?? 100\"\n [step]=\"col.filter?.step ?? 1\"\n [value]=\"sliderVal(col)\"\n (valueChange)=\"setColumnFilter(col.field, $event)\"\n showValue\n />\n </div>\n }\n @case ('dateRange') {\n <kpt-date-range\n [placeholder]=\"col.filter?.placeholder || i18n.t('dataTable.dateRange')\"\n [value]=\"$any(columnFilters()[col.field]) || { start: '', end: '' }\"\n (valueChange)=\"setColumnFilter(col.field, $event)\"\n />\n }\n }\n </th>\n }\n </tr>\n</ng-template>\n\n@if (pageSize() > 0 && !virtualScroll()) {\n <kpt-paginator\n [length]=\"filteredCount()\"\n [pageIndex]=\"pageIndex()\"\n (pageIndexChange)=\"pageIndex.set($event)\"\n [pageSize]=\"pageSizeState()\"\n (pageSizeChange)=\"pageSizeState.set($event)\"\n [pageSizeOptions]=\"pageSizeOptions()\"\n />\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, input, model, output, signal } from '@angular/core';\nimport { KptIcon } from '../icon/icon.component';\n\nexport interface KptTreeNode<T = unknown> {\n label: string;\n value?: T;\n icon?: string;\n children?: KptTreeNode<T>[];\n expanded?: boolean;\n disabled?: boolean;\n}\n\n/**\n * Drzewo hierarchiczne (rozwijanie, zaznaczanie, ikony). Dane przez `nodes`.\n *\n * @example\n * <kpt-tree [nodes]=\"tree\" selectable [(selected)]=\"node\" (nodeClick)=\"open($event)\" />\n */\n@Component({\n selector: 'kpt-tree',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, KptIcon],\n template: `\n <ul class=\"kpt-tree\" role=\"tree\">\n <ng-container [ngTemplateOutlet]=\"nodeTpl\" [ngTemplateOutletContext]=\"{ $implicit: nodes(), level: 0 }\" />\n </ul>\n\n <ng-template #nodeTpl let-list let-level=\"level\">\n @for (node of list; track node) {\n <li class=\"kpt-tree__node\" role=\"treeitem\" [attr.aria-expanded]=\"has(node) ? isOpen(node) : null\">\n <div\n class=\"kpt-tree__row\"\n [class.is-selected]=\"isSelected(node)\"\n [class.is-disabled]=\"node.disabled\"\n [style.padding-inline-start.rem]=\"0.5 + level * 1.1\"\n (click)=\"onRow(node)\"\n >\n @if (has(node)) {\n <button type=\"button\" class=\"kpt-tree__toggle\" (click)=\"toggle(node, $event)\" [attr.aria-label]=\"isOpen(node) ? 'Zwiń' : 'Rozwiń'\">\n <kpt-icon name=\"chevron-right\" class=\"kpt-tree__chevron\" [class.is-open]=\"isOpen(node)\" />\n </button>\n } @else {\n <span class=\"kpt-tree__spacer\"></span>\n }\n @if (node.icon) { <kpt-icon [name]=\"node.icon\" class=\"kpt-tree__icon\" /> }\n <span class=\"kpt-tree__label\">{{ node.label }}</span>\n </div>\n @if (has(node) && isOpen(node)) {\n <ul role=\"group\">\n <ng-container [ngTemplateOutlet]=\"nodeTpl\" [ngTemplateOutletContext]=\"{ $implicit: node.children, level: level + 1 }\" />\n </ul>\n }\n </li>\n }\n </ng-template>\n `,\n styleUrl: './tree.component.scss',\n host: { class: 'kpt-tree-host' },\n})\nexport class KptTree<T = unknown> {\n readonly nodes = input<KptTreeNode<T>[]>([]);\n readonly selectable = input(false, { transform: booleanAttribute });\n readonly selected = model<KptTreeNode<T> | null>(null);\n readonly nodeClick = output<KptTreeNode<T>>();\n\n private readonly version = signal(0);\n\n protected has(node: KptTreeNode<T>): boolean {\n return !!node.children?.length;\n }\n protected isOpen(node: KptTreeNode<T>): boolean {\n this.version();\n return !!node.expanded;\n }\n protected isSelected(node: KptTreeNode<T>): boolean {\n return this.selected() === node;\n }\n protected toggle(node: KptTreeNode<T>, event: Event): void {\n event.stopPropagation();\n node.expanded = !node.expanded;\n this.version.update((v) => v + 1);\n }\n protected onRow(node: KptTreeNode<T>): void {\n if (node.disabled) return;\n if (this.selectable()) this.selected.set(node);\n else if (this.has(node)) {\n node.expanded = !node.expanded;\n this.version.update((v) => v + 1);\n }\n this.nodeClick.emit(node);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, input } from '@angular/core';\nimport { KptIcon } from '../icon/icon.component';\n\nexport interface KptTimelineItem {\n title: string;\n description?: string;\n time?: string;\n icon?: string;\n variant?: 'neutral' | 'primary' | 'success' | 'danger' | 'warning' | 'info';\n}\n\n/**\n * Oś czasu (timeline) — pionowa lista zdarzeń z markerami.\n *\n * @example\n * <kpt-timeline [items]=\"[{title:'Utworzono', time:'10:00', variant:'success', icon:'check'}]\" />\n */\n@Component({\n selector: 'kpt-timeline',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <ol class=\"kpt-timeline\">\n @for (item of items(); track $index) {\n <li class=\"kpt-timeline__item\">\n <div class=\"kpt-timeline__marker\" [attr.data-variant]=\"item.variant ?? 'primary'\">\n @if (item.icon) { <kpt-icon [name]=\"item.icon\" /> }\n </div>\n <div class=\"kpt-timeline__content\">\n <div class=\"kpt-timeline__header\">\n <span class=\"kpt-timeline__title\">{{ item.title }}</span>\n @if (item.time) { <span class=\"kpt-timeline__time\">{{ item.time }}</span> }\n </div>\n @if (item.description) { <p class=\"kpt-timeline__desc\">{{ item.description }}</p> }\n </div>\n </li>\n }\n </ol>\n `,\n styleUrl: './timeline.component.scss',\n host: { class: 'kpt-timeline-host' },\n})\nexport class KptTimeline {\n readonly items = input<KptTimelineItem[]>([]);\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewEncapsulation, contentChild, inject, input, model } from '@angular/core';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\n\n/**\n * Karuzela slajdów. Dane przez `items`, szablon slajdu przez projekcję `<ng-template let-item>`.\n *\n * @example\n * <kpt-carousel [items]=\"photos\">\n * <ng-template let-photo><img [src]=\"photo\" style=\"width:100%\" /></ng-template>\n * </kpt-carousel>\n */\n@Component({\n selector: 'kpt-carousel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, KptIcon],\n template: `\n <div class=\"kpt-carousel\">\n <div class=\"kpt-carousel__viewport\">\n <div class=\"kpt-carousel__track\" [style.transform]=\"'translateX(-' + activeIndex() * 100 + '%)'\">\n @for (item of items(); track $index) {\n <div class=\"kpt-carousel__slide\">\n <ng-container [ngTemplateOutlet]=\"slideTpl()\" [ngTemplateOutletContext]=\"{ $implicit: item, index: $index }\" />\n </div>\n }\n </div>\n </div>\n\n <button class=\"kpt-carousel__nav kpt-carousel__nav--prev\" type=\"button\" (click)=\"prev()\" [disabled]=\"activeIndex() === 0\" [attr.aria-label]=\"i18n.t('common.previous')\">\n <kpt-icon name=\"chevron-left\" />\n </button>\n <button class=\"kpt-carousel__nav kpt-carousel__nav--next\" type=\"button\" (click)=\"next()\" [disabled]=\"activeIndex() >= items().length - 1\" [attr.aria-label]=\"i18n.t('common.next')\">\n <kpt-icon name=\"chevron-right\" />\n </button>\n\n <div class=\"kpt-carousel__dots\">\n @for (item of items(); track $index; let i = $index) {\n <button\n type=\"button\"\n class=\"kpt-carousel__dot\"\n [class.is-active]=\"i === activeIndex()\"\n (click)=\"goTo(i)\"\n [attr.aria-label]=\"i18n.t('carousel.slide', { index: i + 1 })\"\n ></button>\n }\n </div>\n </div>\n `,\n styleUrl: './carousel.component.scss',\n host: { class: 'kpt-carousel-host' },\n})\nexport class KptCarousel<T = unknown> {\n readonly items = input<T[]>([]);\n readonly activeIndex = model(0);\n protected readonly i18n = inject(KptI18n);\n protected readonly slideTpl = contentChild.required(TemplateRef);\n\n next(): void {\n this.activeIndex.update((i) => Math.min(i + 1, this.items().length - 1));\n }\n prev(): void {\n this.activeIndex.update((i) => Math.max(i - 1, 0));\n }\n goTo(index: number): void {\n this.activeIndex.set(index);\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewEncapsulation, booleanAttribute, computed, contentChild, inject, input, model } from '@angular/core';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\nimport { KptPaginator } from '../paginator/paginator.component';\n\n/**\n * DataView — prezentacja listy elementów w układzie lista/siatka, z opcjonalną paginacją.\n * Szablon elementu przez projekcję `<ng-template let-item>`.\n *\n * @example\n * <kpt-data-view [items]=\"products\" [pageSize]=\"6\">\n * <ng-template let-p><div>{{ p.name }}</div></ng-template>\n * </kpt-data-view>\n */\n@Component({\n selector: 'kpt-data-view',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, KptIcon, KptPaginator],\n template: `\n <div class=\"kpt-data-view\">\n <div class=\"kpt-data-view__toolbar\">\n <div class=\"kpt-data-view__count\">{{ i18n.t('dataView.count', { count: items().length }) }}</div>\n <div class=\"kpt-data-view__switch\">\n <button type=\"button\" [class.is-active]=\"layout() === 'list'\" (click)=\"layout.set('list')\" [attr.aria-label]=\"i18n.t('dataView.list')\"><kpt-icon name=\"list\" /></button>\n <button type=\"button\" [class.is-active]=\"layout() === 'grid'\" (click)=\"layout.set('grid')\" [attr.aria-label]=\"i18n.t('dataView.grid')\"><kpt-icon name=\"menu\" /></button>\n </div>\n </div>\n\n <div class=\"kpt-data-view__content\" [attr.data-layout]=\"layout()\">\n @for (item of pageItems(); track $index) {\n <div class=\"kpt-data-view__item\">\n <ng-container [ngTemplateOutlet]=\"itemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: item, index: $index }\" />\n </div>\n } @empty {\n <div class=\"kpt-data-view__empty\">{{ i18n.t('dataView.empty') }}</div>\n }\n </div>\n\n @if (showPager()) {\n <kpt-paginator [length]=\"items().length\" [(pageIndex)]=\"pageIndex\" [pageSize]=\"pageSize()\" [pageSizeOptions]=\"[pageSize()]\" />\n }\n </div>\n `,\n styleUrl: './data-view.component.scss',\n host: { class: 'kpt-data-view-host' },\n})\nexport class KptDataView<T = unknown> {\n readonly items = input<T[]>([]);\n readonly layout = model<'list' | 'grid'>('grid');\n readonly pageSize = input(0);\n readonly paginated = input(true, { transform: booleanAttribute });\n protected readonly i18n = inject(KptI18n);\n protected readonly itemTpl = contentChild.required(TemplateRef);\n protected readonly pageIndex = model(0);\n\n protected readonly showPager = computed(() => this.paginated() && this.pageSize() > 0 && this.items().length > this.pageSize());\n protected readonly pageItems = computed(() => {\n const size = this.pageSize();\n if (!this.paginated() || size <= 0) return this.items();\n const start = this.pageIndex() * size;\n return this.items().slice(start, start + size);\n });\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewEncapsulation, computed, contentChild, inject, input, model, signal } from '@angular/core';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\n\n/**\n * PickList — transfer elementów między dwiema listami (źródło ↔ cel).\n * Szablon elementu przez projekcję `<ng-template let-item>`.\n *\n * @example\n * <kpt-pick-list [(source)]=\"available\" [(target)]=\"selected\" sourceHeader=\"Dostępne\" targetHeader=\"Wybrane\">\n * <ng-template let-item>{{ item.name }}</ng-template>\n * </kpt-pick-list>\n */\n@Component({\n selector: 'kpt-pick-list',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, KptIcon],\n template: `\n <div class=\"kpt-pick-list\">\n <div class=\"kpt-pick-list__col\">\n <div class=\"kpt-pick-list__header\">{{ effectiveSourceHeader() }}</div>\n <ul class=\"kpt-pick-list__items\">\n @for (item of source(); track $index) {\n <li class=\"kpt-pick-list__item\" [class.is-selected]=\"selSource().has(item)\" (click)=\"toggle('source', item)\">\n <ng-container [ngTemplateOutlet]=\"itemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </li>\n }\n </ul>\n </div>\n\n <div class=\"kpt-pick-list__controls\">\n <button type=\"button\" (click)=\"move('source', true)\" [attr.aria-label]=\"i18n.t('pickList.moveAllRight')\"><kpt-icon name=\"chevron-right\" /><kpt-icon name=\"chevron-right\" /></button>\n <button type=\"button\" (click)=\"move('source', false)\" [attr.aria-label]=\"i18n.t('pickList.moveRight')\"><kpt-icon name=\"chevron-right\" /></button>\n <button type=\"button\" (click)=\"move('target', false)\" [attr.aria-label]=\"i18n.t('pickList.moveLeft')\"><kpt-icon name=\"chevron-left\" /></button>\n <button type=\"button\" (click)=\"move('target', true)\" [attr.aria-label]=\"i18n.t('pickList.moveAllLeft')\"><kpt-icon name=\"chevron-left\" /><kpt-icon name=\"chevron-left\" /></button>\n </div>\n\n <div class=\"kpt-pick-list__col\">\n <div class=\"kpt-pick-list__header\">{{ effectiveTargetHeader() }}</div>\n <ul class=\"kpt-pick-list__items\">\n @for (item of target(); track $index) {\n <li class=\"kpt-pick-list__item\" [class.is-selected]=\"selTarget().has(item)\" (click)=\"toggle('target', item)\">\n <ng-container [ngTemplateOutlet]=\"itemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </li>\n }\n </ul>\n </div>\n </div>\n `,\n styleUrl: './pick-list.component.scss',\n host: { class: 'kpt-pick-list-host' },\n})\nexport class KptPickList<T = unknown> {\n readonly source = model<T[]>([]);\n readonly target = model<T[]>([]);\n /** Nagłówek listy źródłowej; bez wartości używa i18n (`pickList.available`). */\n readonly sourceHeader = input<string>();\n /** Nagłówek listy docelowej; bez wartości używa i18n (`pickList.selected`). */\n readonly targetHeader = input<string>();\n protected readonly itemTpl = contentChild.required(TemplateRef);\n\n protected readonly i18n = inject(KptI18n);\n protected readonly effectiveSourceHeader = computed(() => this.sourceHeader() ?? this.i18n.t('pickList.available'));\n protected readonly effectiveTargetHeader = computed(() => this.targetHeader() ?? this.i18n.t('pickList.selected'));\n protected readonly selSource = signal<Set<T>>(new Set());\n protected readonly selTarget = signal<Set<T>>(new Set());\n\n protected toggle(side: 'source' | 'target', item: T): void {\n const sig = side === 'source' ? this.selSource : this.selTarget;\n const next = new Set(sig());\n if (next.has(item)) next.delete(item);\n else next.add(item);\n sig.set(next);\n }\n\n protected move(from: 'source' | 'target', all: boolean): void {\n const fromModel = from === 'source' ? this.source : this.target;\n const toModel = from === 'source' ? this.target : this.source;\n const sel = from === 'source' ? this.selSource : this.selTarget;\n const moving = all ? fromModel() : fromModel().filter((i) => sel().has(i));\n if (!moving.length) return;\n fromModel.set(fromModel().filter((i) => !moving.includes(i)));\n toModel.set([...toModel(), ...moving]);\n sel.set(new Set());\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, TemplateRef, ViewEncapsulation, contentChild, inject, input, model, signal } from '@angular/core';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\n\n/**\n * OrderList — lista z ręcznym porządkowaniem elementów (w górę/dół).\n * Szablon elementu przez projekcję `<ng-template let-item>`.\n *\n * @example\n * <kpt-order-list [(items)]=\"tasks\" header=\"Kolejność\">\n * <ng-template let-item>{{ item.name }}</ng-template>\n * </kpt-order-list>\n */\n@Component({\n selector: 'kpt-order-list',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, KptIcon],\n template: `\n <div class=\"kpt-order-list\">\n <div class=\"kpt-order-list__controls\">\n <button type=\"button\" (click)=\"moveSelected(-1)\" [disabled]=\"selected() === null\" [attr.aria-label]=\"i18n.t('orderList.up')\"><kpt-icon name=\"arrow-up\" /></button>\n <button type=\"button\" (click)=\"moveSelected(1)\" [disabled]=\"selected() === null\" [attr.aria-label]=\"i18n.t('orderList.down')\"><kpt-icon name=\"arrow-down\" /></button>\n </div>\n <div class=\"kpt-order-list__panel\">\n @if (header()) { <div class=\"kpt-order-list__header\">{{ header() }}</div> }\n <ul class=\"kpt-order-list__items\">\n @for (item of items(); track $index; let i = $index) {\n <li class=\"kpt-order-list__item\" [class.is-selected]=\"selected() === i\" (click)=\"selected.set(i)\">\n <ng-container [ngTemplateOutlet]=\"itemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: item, index: i }\" />\n </li>\n }\n </ul>\n </div>\n </div>\n `,\n styleUrl: './order-list.component.scss',\n host: { class: 'kpt-order-list-host' },\n})\nexport class KptOrderList<T = unknown> {\n readonly items = model<T[]>([]);\n readonly header = input('');\n protected readonly i18n = inject(KptI18n);\n protected readonly itemTpl = contentChild.required(TemplateRef);\n protected readonly selected = signal<number | null>(null);\n\n protected moveSelected(dir: -1 | 1): void {\n const i = this.selected();\n if (i === null) return;\n const j = i + dir;\n const arr = [...this.items()];\n if (j < 0 || j >= arr.length) return;\n [arr[i], arr[j]] = [arr[j], arr[i]];\n this.items.set(arr);\n this.selected.set(j);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, computed, inject, input, model } from '@angular/core';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\n\nexport interface KptGalleriaItem {\n src: string;\n thumbnail?: string;\n alt?: string;\n}\n\n/**\n * Galleria — duży podgląd obrazu z paskiem miniatur i nawigacją.\n *\n * @example\n * <kpt-galleria [items]=\"photos\" [(activeIndex)]=\"idx\" />\n */\n@Component({\n selector: 'kpt-galleria',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <div class=\"kpt-galleria\">\n <div class=\"kpt-galleria__stage\">\n <button type=\"button\" class=\"kpt-galleria__nav kpt-galleria__nav--prev\" (click)=\"prev()\" [disabled]=\"activeIndex() === 0\" [attr.aria-label]=\"i18n.t('common.previous')\"><kpt-icon name=\"chevron-left\" /></button>\n @if (current(); as item) {\n <img class=\"kpt-galleria__image\" [src]=\"item.src\" [alt]=\"item.alt || ''\" />\n }\n <button type=\"button\" class=\"kpt-galleria__nav kpt-galleria__nav--next\" (click)=\"next()\" [disabled]=\"activeIndex() >= items().length - 1\" [attr.aria-label]=\"i18n.t('common.next')\"><kpt-icon name=\"chevron-right\" /></button>\n </div>\n\n @if (showThumbnails()) {\n <div class=\"kpt-galleria__thumbs\">\n @for (item of items(); track $index; let i = $index) {\n <button type=\"button\" class=\"kpt-galleria__thumb\" [class.is-active]=\"i === activeIndex()\" (click)=\"activeIndex.set(i)\" [attr.aria-label]=\"i18n.t('galleria.image', { index: i + 1 })\">\n <img [src]=\"item.thumbnail || item.src\" [alt]=\"item.alt || ''\" />\n </button>\n }\n </div>\n }\n </div>\n `,\n styleUrl: './galleria.component.scss',\n host: { class: 'kpt-galleria-host' },\n})\nexport class KptGalleria {\n readonly items = input<KptGalleriaItem[]>([]);\n readonly activeIndex = model(0);\n readonly showThumbnails = input(true, { transform: booleanAttribute });\n\n protected readonly i18n = inject(KptI18n);\n protected readonly current = computed(() => this.items()[this.activeIndex()] ?? null);\n\n protected next(): void {\n this.activeIndex.update((i) => Math.min(i + 1, this.items().length - 1));\n }\n protected prev(): void {\n this.activeIndex.update((i) => Math.max(i - 1, 0));\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\nimport type { KptIconName } from '../icon/icons';\n\nexport type KptAlertVariant = 'info' | 'success' | 'warning' | 'danger';\n\n/**\n * Komunikat inline (alert). Warianty info/success/warning/danger, opcjonalny tytuł i zamykanie.\n *\n * @example\n * <kpt-alert variant=\"success\" title=\"Zapisano\">Zmiany zostały zapisane.</kpt-alert>\n */\n@Component({\n selector: 'kpt-alert',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <div class=\"kpt-alert\" [attr.data-variant]=\"variant()\" role=\"alert\">\n <kpt-icon class=\"kpt-alert__icon\" [name]=\"iconName()\" />\n <div class=\"kpt-alert__content\">\n @if (title()) {\n <div class=\"kpt-alert__title\">{{ title() }}</div>\n }\n <div class=\"kpt-alert__message\"><ng-content /></div>\n </div>\n @if (dismissible()) {\n <button class=\"kpt-alert__close\" type=\"button\" (click)=\"dismiss()\" [attr.aria-label]=\"i18n.t('common.close')\"><kpt-icon name=\"x\" /></button>\n }\n </div>\n `,\n styleUrl: './alert.component.scss',\n host: { class: 'kpt-alert-host', '[hidden]': '!visible()' },\n})\nexport class KptAlert {\n readonly variant = input<KptAlertVariant>('info');\n readonly title = input('');\n readonly dismissible = input(false, { transform: booleanAttribute });\n readonly closed = output<void>();\n\n protected readonly i18n = inject(KptI18n);\n protected readonly visible = signal(true);\n\n protected iconName(): KptIconName {\n return { info: 'info', success: 'circle-check', warning: 'alert-triangle', danger: 'circle-x' }[\n this.variant()\n ] as KptIconName;\n }\n protected dismiss(): void {\n this.visible.set(false);\n this.closed.emit();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n booleanAttribute,\n effect,\n inject,\n input,\n model,\n viewChild,\n} from '@angular/core';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\n\n/**\n * Okno modalne na natywnym `<dialog>` (focus trap, ESC, backdrop w standardzie).\n * Sterowane sygnałem `open` (dwukierunkowe). Stopkę wstaw z atrybutem `kptDialogFooter`.\n *\n * @example\n * <kpt-dialog [(open)]=\"confirmOpen\" header=\"Usunąć?\">\n * Tej operacji nie można cofnąć.\n * <div kptDialogFooter>\n * <kpt-button variant=\"text\" (click)=\"confirmOpen.set(false)\">Anuluj</kpt-button>\n * <kpt-button variant=\"danger\" (click)=\"remove()\">Usuń</kpt-button>\n * </div>\n * </kpt-dialog>\n */\n@Component({\n selector: 'kpt-dialog',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <dialog #dlg class=\"kpt-dialog\" (close)=\"open.set(false)\" (cancel)=\"onCancel($event)\">\n @if (header()) {\n <div class=\"kpt-dialog__header\">\n <h2 class=\"kpt-dialog__title\">{{ header() }}</h2>\n @if (dismissible()) {\n <button class=\"kpt-dialog__close\" type=\"button\" (click)=\"open.set(false)\" [attr.aria-label]=\"i18n.t('common.close')\"><kpt-icon name=\"x\" /></button>\n }\n </div>\n }\n <div class=\"kpt-dialog__body\"><ng-content /></div>\n <ng-content select=\"[kptDialogFooter]\" />\n </dialog>\n `,\n styleUrl: './dialog.component.scss',\n host: { class: 'kpt-dialog-host' },\n})\nexport class KptDialog {\n /** Otwarcie okna (dwukierunkowe). */\n readonly open = model(false);\n readonly header = input('');\n /** Pozwala zamknąć klawiszem Esc / przyciskiem ×. */\n readonly dismissible = input(true, { transform: booleanAttribute });\n\n protected readonly i18n = inject(KptI18n);\n private readonly dialogRef = viewChild<ElementRef<HTMLDialogElement>>('dlg');\n\n constructor() {\n effect(() => {\n const el = this.dialogRef()?.nativeElement;\n if (!el) return;\n if (this.open() && !el.open) el.showModal();\n else if (!this.open() && el.open) el.close();\n });\n }\n\n protected onCancel(event: Event): void {\n if (!this.dismissible()) {\n event.preventDefault();\n return;\n }\n this.open.set(false);\n }\n}\n","import { Injectable, signal } from '@angular/core';\nimport type { KptAlertVariant } from '../alert/alert.component';\n\nexport interface KptToast {\n id: number;\n message: string;\n title?: string;\n variant: KptAlertVariant;\n /** Czas życia w ms; 0 = bez auto-zamykania. */\n duration: number;\n}\n\nexport type KptToastOptions = Partial<Omit<KptToast, 'id' | 'message'>>;\n\n/**\n * Serwis powiadomień (toastów). Wstrzyknij i wywołuj `show`/`success`/`error`/...;\n * umieść `<kpt-toast-container />` raz w aplikacji, aby je renderować.\n */\n@Injectable({ providedIn: 'root' })\nexport class KptToastService {\n private readonly _toasts = signal<KptToast[]>([]);\n readonly toasts = this._toasts.asReadonly();\n private seq = 0;\n\n show(message: string, options: KptToastOptions = {}): number {\n const id = ++this.seq;\n const toast: KptToast = { id, message, variant: 'info', duration: 4000, ...options };\n this._toasts.update((list) => [...list, toast]);\n if (toast.duration > 0) {\n setTimeout(() => this.dismiss(id), toast.duration);\n }\n return id;\n }\n\n info(message: string, options?: KptToastOptions): number {\n return this.show(message, { ...options, variant: 'info' });\n }\n success(message: string, options?: KptToastOptions): number {\n return this.show(message, { ...options, variant: 'success' });\n }\n warning(message: string, options?: KptToastOptions): number {\n return this.show(message, { ...options, variant: 'warning' });\n }\n error(message: string, options?: KptToastOptions): number {\n return this.show(message, { ...options, variant: 'danger' });\n }\n\n dismiss(id: number): void {\n this._toasts.update((list) => list.filter((t) => t.id !== id));\n }\n clear(): void {\n this._toasts.set([]);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\nimport type { KptIconName } from '../icon/icons';\nimport type { KptAlertVariant } from '../alert/alert.component';\nimport { KptToastService } from './toast.service';\n\n/**\n * Kontener renderujący toasty z `KptToastService`. Umieść raz w aplikacji\n * (np. w komponencie głównym): `<kpt-toast-container />`.\n */\n@Component({\n selector: 'kpt-toast-container',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <div class=\"kpt-toast-container\" aria-live=\"polite\" aria-atomic=\"false\">\n @for (toast of toasts(); track toast.id) {\n <div class=\"kpt-toast\" [attr.data-variant]=\"toast.variant\" role=\"status\">\n <kpt-icon class=\"kpt-toast__icon\" [name]=\"icon(toast.variant)\" />\n <div class=\"kpt-toast__content\">\n @if (toast.title) {\n <div class=\"kpt-toast__title\">{{ toast.title }}</div>\n }\n <div class=\"kpt-toast__message\">{{ toast.message }}</div>\n </div>\n <button class=\"kpt-toast__close\" type=\"button\" (click)=\"dismiss(toast.id)\" [attr.aria-label]=\"i18n.t('common.close')\"><kpt-icon name=\"x\" /></button>\n </div>\n }\n </div>\n `,\n styleUrl: './toast-container.component.scss',\n host: { class: 'kpt-toast-container-host' },\n})\nexport class KptToastContainer {\n private readonly service = inject(KptToastService);\n protected readonly i18n = inject(KptI18n);\n protected readonly toasts = this.service.toasts;\n\n protected dismiss(id: number): void {\n this.service.dismiss(id);\n }\n protected icon(variant: KptAlertVariant): KptIconName {\n return { info: 'info', success: 'circle-check', warning: 'alert-triangle', danger: 'circle-x' }[\n variant\n ] as KptIconName;\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, type ConnectedPosition } from '@angular/cdk/overlay';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, input, output, signal } from '@angular/core';\nimport { KptIcon } from '../icon/icon.component';\n\nexport interface KptMenuItem<T = unknown> {\n label?: string;\n value?: T;\n icon?: string;\n disabled?: boolean;\n danger?: boolean;\n separator?: boolean;\n /** Pozycje podrzędne (menubar / megamenu). */\n items?: KptMenuItem<T>[];\n /** Adres odnośnika (menubar / megamenu). */\n url?: string;\n}\n\n/**\n * Menu rozwijane (dropdown) na CDK Overlay. Trigger przez projekcję, pozycje przez `items`.\n * Wymaga stylów overlay CDK: `import '@angular/cdk/overlay-prebuilt.css';`\n *\n * @example\n * <kpt-menu [items]=\"items\" (select)=\"onSelect($event)\">\n * <kpt-button variant=\"outline\">Opcje</kpt-button>\n * </kpt-menu>\n */\n@Component({\n selector: 'kpt-menu',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon],\n template: `\n <span class=\"kpt-menu__trigger\" cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" (click)=\"toggle()\">\n <ng-content />\n </span>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n >\n <div class=\"kpt-menu__panel\" role=\"menu\">\n @for (item of items(); track $index) {\n @if (item.separator) {\n <div class=\"kpt-menu__separator\" role=\"separator\"></div>\n } @else {\n <button\n type=\"button\"\n class=\"kpt-menu__item\"\n role=\"menuitem\"\n [class.kpt-menu__item--danger]=\"item.danger\"\n [disabled]=\"item.disabled\"\n (click)=\"pick(item)\"\n >\n @if (item.icon) { <kpt-icon [name]=\"item.icon\" /> }\n <span>{{ item.label }}</span>\n </button>\n }\n }\n </div>\n </ng-template>\n `,\n styleUrl: './menu.component.scss',\n host: { class: 'kpt-menu-host' },\n})\nexport class KptMenu<T = unknown> {\n readonly items = input<KptMenuItem<T>[]>([]);\n readonly select = output<KptMenuItem<T>>();\n\n protected readonly open = signal(false);\n protected readonly positions: ConnectedPosition[] = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n ];\n\n protected toggle(): void {\n this.open.update((o) => !o);\n }\n protected close(): void {\n this.open.set(false);\n }\n protected pick(item: KptMenuItem<T>): void {\n if (item.disabled) return;\n this.select.emit(item);\n this.close();\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, type ConnectedPosition } from '@angular/cdk/overlay';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, input, signal } from '@angular/core';\n\n/**\n * Popover — dowolna treść w dymku na CDK Overlay (bogatszy niż tooltip). Slot triggera:\n * atrybut `kptPopoverTrigger`; reszta treści trafia do panelu.\n * Wymaga stylów overlay CDK: `import '@angular/cdk/overlay-prebuilt.css';`\n *\n * @example\n * <kpt-popover>\n * <kpt-button kptPopoverTrigger variant=\"outline\">Szczegóły</kpt-button>\n * <div>Bogata treść popovera…</div>\n * </kpt-popover>\n */\n@Component({\n selector: 'kpt-popover',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkOverlayOrigin, CdkConnectedOverlay],\n template: `\n <span class=\"kpt-popover__trigger\" cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" (click)=\"toggle()\">\n <ng-content select=\"[kptPopoverTrigger]\" />\n </span>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n >\n <div class=\"kpt-popover__panel\" role=\"dialog\">\n <ng-content />\n </div>\n </ng-template>\n `,\n styleUrl: './popover.component.scss',\n host: { class: 'kpt-popover-host' },\n})\nexport class KptPopover {\n readonly placement = input<'bottom' | 'top'>('bottom');\n\n protected readonly open = signal(false);\n protected readonly positions: ConnectedPosition[] = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 6 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -6 },\n ];\n\n protected toggle(): void {\n this.open.update((o) => !o);\n }\n protected close(): void {\n this.open.set(false);\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, type ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\n\n/**\n * Pole z podpowiedziami (autocomplete) na CDK Overlay, Signal Forms. Wartość = wpisany tekst.\n * Wymaga stylów overlay CDK: `import '@angular/cdk/overlay-prebuilt.css';`\n *\n * @example\n * <kpt-autocomplete [formField]=\"f.city\" [options]=\"cities\" placeholder=\"Miasto…\" />\n */\n@Component({\n selector: 'kpt-autocomplete',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkOverlayOrigin, CdkConnectedOverlay],\n template: `\n <input\n class=\"kpt-autocomplete__input\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n type=\"text\"\n [value]=\"value()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n role=\"combobox\"\n [attr.aria-expanded]=\"open()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeydown($event)\"\n />\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"open() && filtered().length > 0\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayWidth]=\"origin.elementRef.nativeElement.offsetWidth\"\n >\n <ul class=\"kpt-autocomplete__panel\" role=\"listbox\">\n @for (opt of filtered(); track opt; let i = $index) {\n <li\n class=\"kpt-autocomplete__option\"\n role=\"option\"\n [class.is-active]=\"i === activeIndex()\"\n (mousedown)=\"$event.preventDefault(); pick(opt)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >{{ opt }}</li>\n }\n </ul>\n </ng-template>\n `,\n styleUrl: './autocomplete.component.scss',\n host: { class: 'kpt-autocomplete-host' },\n})\nexport class KptAutocomplete implements FormValueControl<string> {\n readonly value = model<string>('');\n readonly options = input<string[]>([]);\n readonly placeholder = input('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly touch = output<void>();\n\n protected readonly open = signal(false);\n protected readonly activeIndex = signal(-1);\n protected readonly positions: ConnectedPosition[] = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n ];\n\n protected readonly filtered = computed(() => {\n const q = this.value().trim().toLowerCase();\n const opts = this.options();\n return q ? opts.filter((o) => o.toLowerCase().includes(q)) : opts;\n });\n\n protected onInput(event: Event): void {\n this.value.set((event.target as HTMLInputElement).value);\n this.open.set(true);\n this.activeIndex.set(-1);\n }\n protected onFocus(): void {\n this.open.set(true);\n }\n protected onBlur(): void {\n this.open.set(false);\n this.touch.emit();\n }\n protected pick(opt: string): void {\n this.value.set(opt);\n this.open.set(false);\n }\n protected onKeydown(event: KeyboardEvent): void {\n const opts = this.filtered();\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.open.set(true);\n this.activeIndex.set(Math.min(this.activeIndex() + 1, opts.length - 1));\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.activeIndex.set(Math.max(this.activeIndex() - 1, 0));\n } else if (event.key === 'Enter') {\n const opt = opts[this.activeIndex()];\n if (opt) {\n event.preventDefault();\n this.pick(opt);\n }\n } else if (event.key === 'Escape') {\n this.open.set(false);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, inject, input, model } from '@angular/core';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\n\nexport type KptDrawerPosition = 'left' | 'right' | 'top' | 'bottom';\n\n/**\n * Panel wysuwany (drawer / off-canvas) sterowany sygnałem `open`. Niezależny od app-shell.\n *\n * @example\n * <kpt-drawer [(open)]=\"menuOpen\" position=\"right\" header=\"Filtry\">\n * Treść panelu…\n * </kpt-drawer>\n */\n@Component({\n selector: 'kpt-drawer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <div class=\"kpt-drawer__backdrop\" [class.is-open]=\"open()\" (click)=\"onBackdrop()\"></div>\n <aside\n class=\"kpt-drawer__panel\"\n [attr.data-position]=\"position()\"\n [class.is-open]=\"open()\"\n role=\"dialog\"\n aria-modal=\"true\"\n (keydown.escape)=\"close()\"\n tabindex=\"-1\"\n >\n @if (header() || dismissible()) {\n <div class=\"kpt-drawer__header\">\n <span class=\"kpt-drawer__title\">{{ header() }}</span>\n @if (dismissible()) {\n <button type=\"button\" class=\"kpt-drawer__close\" (click)=\"close()\" [attr.aria-label]=\"i18n.t('common.close')\"><kpt-icon name=\"x\" /></button>\n }\n </div>\n }\n <div class=\"kpt-drawer__body\"><ng-content /></div>\n </aside>\n `,\n styleUrl: './drawer.component.scss',\n host: { class: 'kpt-drawer-host' },\n})\nexport class KptDrawer {\n readonly open = model(false);\n readonly position = input<KptDrawerPosition>('left');\n readonly header = input('');\n readonly dismissible = input(true, { transform: booleanAttribute });\n readonly closeOnBackdrop = input(true, { transform: booleanAttribute });\n\n protected readonly i18n = inject(KptI18n);\n\n protected onBackdrop(): void {\n if (this.closeOnBackdrop()) this.close();\n }\n protected close(): void {\n this.open.set(false);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, input, output, signal } from '@angular/core';\nimport { KptIcon } from '../icon/icon.component';\nimport type { KptMenuItem } from '../menu/menu.component';\n\n/**\n * Menu kontekstowe (PPM) na obszarze projekcji. Panel pozycjonowany do kursora.\n *\n * @example\n * <kpt-context-menu [items]=\"items\" (select)=\"onSelect($event)\">\n * <div class=\"obszar\">Kliknij prawym przyciskiem</div>\n * </kpt-context-menu>\n */\n@Component({\n selector: 'kpt-context-menu',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\n <div class=\"kpt-context-menu__area\" (contextmenu)=\"onContext($event)\">\n <ng-content />\n </div>\n\n @if (open()) {\n <div class=\"kpt-context-menu__backdrop\" (click)=\"close()\" (contextmenu)=\"$event.preventDefault(); close()\"></div>\n <div class=\"kpt-context-menu__panel\" role=\"menu\" [style.left.px]=\"x()\" [style.top.px]=\"y()\">\n @for (item of items(); track $index) {\n @if (item.separator) {\n <div class=\"kpt-context-menu__separator\" role=\"separator\"></div>\n } @else {\n <button\n type=\"button\"\n class=\"kpt-context-menu__item\"\n role=\"menuitem\"\n [class.kpt-context-menu__item--danger]=\"item.danger\"\n [disabled]=\"item.disabled\"\n (click)=\"pick(item)\"\n >\n @if (item.icon) { <kpt-icon [name]=\"item.icon\" /> }\n <span>{{ item.label }}</span>\n </button>\n }\n }\n </div>\n }\n `,\n styleUrl: './context-menu.component.scss',\n host: { class: 'kpt-context-menu-host' },\n})\nexport class KptContextMenu<T = unknown> {\n readonly items = input<KptMenuItem<T>[]>([]);\n readonly select = output<KptMenuItem<T>>();\n\n protected readonly open = signal(false);\n protected readonly x = signal(0);\n protected readonly y = signal(0);\n\n protected onContext(event: MouseEvent): void {\n event.preventDefault();\n this.x.set(event.clientX);\n this.y.set(event.clientY);\n this.open.set(true);\n }\n protected close(): void {\n this.open.set(false);\n }\n protected pick(item: KptMenuItem<T>): void {\n if (item.disabled) return;\n this.select.emit(item);\n this.close();\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, type ConnectedPosition } from '@angular/cdk/overlay';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, input, output, signal } from '@angular/core';\nimport { KptIcon } from '../icon/icon.component';\nimport type { KptMenuItem } from '../menu/menu.component';\n\n/**\n * Pozioma belka menu z rozwijanymi pod-menu. Pozycje bez `items` działają jak akcje/linki.\n * Pod-menu renderowane przez CDK Overlay (doczepiane do `body`), więc nie są przycinane\n * przez rodzica z `overflow: hidden`. Wymaga stylów overlay CDK:\n * `import '@angular/cdk/overlay-prebuilt.css';`\n *\n * @example\n * <kpt-menubar [items]=\"items\" (select)=\"onSelect($event)\" />\n */\n@Component({\n selector: 'kpt-menubar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon],\n template: `\n <nav class=\"kpt-menubar\" role=\"menubar\">\n @for (item of items(); track $index; let i = $index) {\n <div class=\"kpt-menubar__group\">\n <button\n type=\"button\"\n class=\"kpt-menubar__top\"\n role=\"menuitem\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n [class.is-open]=\"openIndex() === i\"\n [disabled]=\"item.disabled\"\n (click)=\"toggle(i, item)\"\n >\n @if (item.icon) { <kpt-icon [name]=\"item.icon\" /> }\n <span>{{ item.label }}</span>\n @if (item.items?.length) { <kpt-icon name=\"chevron-down\" class=\"kpt-menubar__caret\" /> }\n </button>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"openIndex() === i && !!item.items?.length\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeAll()\"\n (detach)=\"closeAll()\"\n >\n <div class=\"kpt-menubar__dropdown\" role=\"menu\">\n @for (sub of item.items; track $index) {\n @if (sub.separator) {\n <div class=\"kpt-menubar__separator\" role=\"separator\"></div>\n } @else {\n <button\n type=\"button\"\n class=\"kpt-menubar__item\"\n role=\"menuitem\"\n [class.kpt-menubar__item--danger]=\"sub.danger\"\n [disabled]=\"sub.disabled\"\n (click)=\"pick(sub)\"\n >\n @if (sub.icon) { <kpt-icon [name]=\"sub.icon\" /> }\n <span>{{ sub.label }}</span>\n </button>\n }\n }\n </div>\n </ng-template>\n </div>\n }\n </nav>\n `,\n styleUrl: './menubar.component.scss',\n host: { class: 'kpt-menubar-host' },\n})\nexport class KptMenubar<T = unknown> {\n readonly items = input<KptMenuItem<T>[]>([]);\n readonly select = output<KptMenuItem<T>>();\n\n protected readonly openIndex = signal<number | null>(null);\n protected readonly positions: ConnectedPosition[] = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n ];\n\n protected toggle(i: number, item: KptMenuItem<T>): void {\n if (item.disabled) return;\n if (item.items?.length) {\n this.openIndex.update((cur) => (cur === i ? null : i));\n } else {\n this.select.emit(item);\n this.closeAll();\n }\n }\n protected pick(item: KptMenuItem<T>): void {\n if (item.disabled) return;\n this.select.emit(item);\n this.closeAll();\n }\n protected closeAll(): void {\n this.openIndex.set(null);\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, type ConnectedPosition } from '@angular/cdk/overlay';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, input, output, signal } from '@angular/core';\nimport { KptIcon } from '../icon/icon.component';\nimport type { KptMenuItem } from '../menu/menu.component';\n\n/**\n * Mega-menu — pozioma belka z szerokim, wielokolumnowym panelem.\n * Struktura: pozycja górna → `items` (kolumny) → każda kolumna `items` (odnośniki).\n * Panel renderowany przez CDK Overlay (doczepiony do `body`), więc nie jest przycinany\n * przez rodzica z `overflow: hidden`. Wymaga stylów overlay CDK:\n * `import '@angular/cdk/overlay-prebuilt.css';`\n *\n * @example\n * <kpt-megamenu [items]=\"items\" (select)=\"onSelect($event)\" />\n */\n@Component({\n selector: 'kpt-megamenu',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon],\n template: `\n <nav class=\"kpt-megamenu\" role=\"menubar\" cdkOverlayOrigin #origin=\"cdkOverlayOrigin\">\n @for (item of items(); track $index; let i = $index) {\n <button\n type=\"button\"\n class=\"kpt-megamenu__top\"\n role=\"menuitem\"\n [class.is-open]=\"openIndex() === i\"\n (click)=\"toggle(i)\"\n >\n @if (item.icon) { <kpt-icon [name]=\"item.icon\" /> }\n <span>{{ item.label }}</span>\n <kpt-icon name=\"chevron-down\" class=\"kpt-megamenu__caret\" />\n </button>\n }\n </nav>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"openIndex() !== null\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeAll()\"\n (detach)=\"closeAll()\"\n >\n <div class=\"kpt-megamenu__panel\" role=\"menu\">\n @for (col of activeColumns(); track $index) {\n <div class=\"kpt-megamenu__column\">\n @if (col.label) { <div class=\"kpt-megamenu__col-title\">{{ col.label }}</div> }\n @for (link of col.items ?? []; track $index) {\n <button type=\"button\" class=\"kpt-megamenu__link\" [disabled]=\"link.disabled\" (click)=\"pick(link)\">\n @if (link.icon) { <kpt-icon [name]=\"link.icon\" /> }\n <span>{{ link.label }}</span>\n </button>\n }\n </div>\n }\n </div>\n </ng-template>\n `,\n styleUrl: './megamenu.component.scss',\n host: { class: 'kpt-megamenu-host' },\n})\nexport class KptMegamenu<T = unknown> {\n readonly items = input<KptMenuItem<T>[]>([]);\n readonly select = output<KptMenuItem<T>>();\n\n protected readonly openIndex = signal<number | null>(null);\n protected readonly positions: ConnectedPosition[] = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n ];\n\n protected activeColumns(): KptMenuItem<T>[] {\n const i = this.openIndex();\n return i === null ? [] : this.items()[i]?.items ?? [];\n }\n\n protected toggle(i: number): void {\n this.openIndex.update((cur) => (cur === i ? null : i));\n }\n protected pick(link: KptMenuItem<T>): void {\n if (link.disabled) return;\n this.select.emit(link);\n this.closeAll();\n }\n protected closeAll(): void {\n this.openIndex.set(null);\n }\n}\n","import { Injectable, signal } from '@angular/core';\n\nexport interface KptConfirmOptions {\n message: string;\n header?: string;\n acceptLabel?: string;\n rejectLabel?: string;\n /** Wariant przycisku akceptacji. */\n variant?: 'filled' | 'danger';\n icon?: string;\n}\n\nexport interface KptConfirmRequest extends KptConfirmOptions {\n id: number;\n resolve: (accepted: boolean) => void;\n}\n\n/**\n * Serwis potwierdzeń. Wstrzyknij i wywołaj `confirm(...)` (zwraca Promise<boolean>);\n * umieść `<kpt-confirm-container />` raz w aplikacji.\n *\n * @example\n * if (await confirm.confirm({ message: 'Usunąć rekord?', variant: 'danger' })) { ... }\n */\n@Injectable({ providedIn: 'root' })\nexport class KptConfirmService {\n private readonly _current = signal<KptConfirmRequest | null>(null);\n readonly current = this._current.asReadonly();\n private seq = 0;\n\n confirm(options: KptConfirmOptions): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n this._current.set({ id: ++this.seq, ...options, resolve });\n });\n }\n\n accept(): void {\n this._current()?.resolve(true);\n this._current.set(null);\n }\n reject(): void {\n this._current()?.resolve(false);\n this._current.set(null);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, inject } from '@angular/core';\nimport { KptButton } from '../button/button.component';\nimport { KptDialog } from '../dialog/dialog.component';\nimport { KptIcon } from '../icon/icon.component';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptConfirmService } from './confirm.service';\n\n/**\n * Kontener potwierdzeń — renderuje aktywne żądanie z `KptConfirmService` na `kpt-dialog`.\n * Umieść raz w aplikacji (np. obok `<kpt-toast-container />`).\n */\n@Component({\n selector: 'kpt-confirm-container',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptDialog, KptButton, KptIcon],\n template: `\n <kpt-dialog [open]=\"isOpen()\" (openChange)=\"onOpenChange($event)\" [header]=\"req()?.header ?? i18n.t('confirm.header')\">\n <div class=\"kpt-confirm__body\">\n @if (req()?.icon) { <kpt-icon [name]=\"req()!.icon!\" class=\"kpt-confirm__icon\" [attr.data-variant]=\"req()?.variant ?? 'filled'\" /> }\n <p class=\"kpt-confirm__message\">{{ req()?.message }}</p>\n </div>\n <div kptDialogFooter>\n <kpt-button variant=\"text\" (click)=\"service.reject()\">{{ req()?.rejectLabel ?? i18n.t('confirm.reject') }}</kpt-button>\n <kpt-button [variant]=\"req()?.variant ?? 'filled'\" (click)=\"service.accept()\">{{ req()?.acceptLabel ?? i18n.t('confirm.accept') }}</kpt-button>\n </div>\n </kpt-dialog>\n `,\n styleUrl: './confirm-container.component.scss',\n host: { class: 'kpt-confirm-container-host' },\n})\nexport class KptConfirmContainer {\n protected readonly i18n = inject(KptI18n);\n protected readonly service = inject(KptConfirmService);\n protected readonly req = this.service.current;\n protected readonly isOpen = computed(() => this.req() !== null);\n\n protected onOpenChange(open: boolean): void {\n if (!open) this.service.reject();\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, inject, input, model } from '@angular/core';\nimport { KptI18n } from '../i18n/i18n.service';\n\n/**\n * Arkusz wysuwany z dołu ekranu (bottom sheet). Sterowany sygnałem `open`.\n *\n * @example\n * <kpt-bottom-sheet [(open)]=\"sheetOpen\" header=\"Udostępnij\">\n * Treść arkusza…\n * </kpt-bottom-sheet>\n */\n@Component({\n selector: 'kpt-bottom-sheet',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n <div class=\"kpt-bottom-sheet__backdrop\" [class.is-open]=\"open()\" (click)=\"onBackdrop()\"></div>\n <div class=\"kpt-bottom-sheet__panel\" [class.is-open]=\"open()\" role=\"dialog\" aria-modal=\"true\" (keydown.escape)=\"close()\" tabindex=\"-1\">\n <button type=\"button\" class=\"kpt-bottom-sheet__handle\" (click)=\"close()\" [attr.aria-label]=\"i18n.t('common.close')\"></button>\n @if (header()) { <div class=\"kpt-bottom-sheet__header\">{{ header() }}</div> }\n <div class=\"kpt-bottom-sheet__body\"><ng-content /></div>\n </div>\n `,\n styleUrl: './bottom-sheet.component.scss',\n host: { class: 'kpt-bottom-sheet-host' },\n})\nexport class KptBottomSheet {\n readonly open = model(false);\n readonly header = input('');\n readonly closeOnBackdrop = input(true, { transform: booleanAttribute });\n\n protected readonly i18n = inject(KptI18n);\n\n protected onBackdrop(): void {\n if (this.closeOnBackdrop()) this.close();\n }\n protected close(): void {\n this.open.set(false);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, inject, input, output, signal } from '@angular/core';\nimport { KptFab } from '../fab/fab.component';\nimport { KptI18n } from '../i18n/i18n.service';\nimport { KptIcon } from '../icon/icon.component';\nimport type { KptMenuItem } from '../menu/menu.component';\n\nexport type KptSpeedDialDirection = 'up' | 'down' | 'left' | 'right';\n\n/**\n * Speed dial — FAB rozwijający zestaw akcji. Buduje na `kpt-fab`.\n *\n * @example\n * <kpt-speed-dial [items]=\"actions\" direction=\"up\" (select)=\"onAction($event)\" />\n */\n@Component({\n selector: 'kpt-speed-dial',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptFab, KptIcon],\n template: `\n <div class=\"kpt-speed-dial\" [attr.data-direction]=\"direction()\" [class.is-open]=\"open()\">\n <div class=\"kpt-speed-dial__actions\">\n @for (item of items(); track $index) {\n <button type=\"button\" class=\"kpt-speed-dial__action\" [disabled]=\"item.disabled\" (click)=\"pick(item)\" [attr.aria-label]=\"item.label\">\n @if (item.icon) { <kpt-icon [name]=\"item.icon\" /> }\n @if (item.label) { <span class=\"kpt-speed-dial__label\">{{ item.label }}</span> }\n </button>\n }\n </div>\n <kpt-fab [ariaLabel]=\"open() ? i18n.t('common.close') : effectiveAriaLabel()\" (click)=\"toggle()\">\n <span class=\"kpt-speed-dial__trigger-icon\"><kpt-icon [name]=\"icon()\" /></span>\n </kpt-fab>\n </div>\n @if (open()) { <div class=\"kpt-speed-dial__backdrop\" (click)=\"close()\"></div> }\n `,\n styleUrl: './speed-dial.component.scss',\n host: { class: 'kpt-speed-dial-host' },\n})\nexport class KptSpeedDial<T = unknown> {\n readonly items = input<KptMenuItem<T>[]>([]);\n readonly direction = input<KptSpeedDialDirection>('up');\n readonly icon = input('plus');\n /** Etykieta a11y FAB (stan zamknięty); bez wartości używa i18n (`speedDial.actions`). */\n readonly ariaLabel = input<string>();\n readonly select = output<KptMenuItem<T>>();\n\n protected readonly i18n = inject(KptI18n);\n protected readonly effectiveAriaLabel = computed(() => this.ariaLabel() ?? this.i18n.t('speedDial.actions'));\n protected readonly open = signal(false);\n\n protected toggle(): void {\n this.open.update((o) => !o);\n }\n protected close(): void {\n this.open.set(false);\n }\n protected pick(item: KptMenuItem<T>): void {\n if (item.disabled) return;\n this.select.emit(item);\n this.close();\n }\n}\n","/*\n * Public API — @konce-pt/angular\n * Komponenty Koncept UI dla Angular 22 (sygnały, Signal Forms).\n */\nexport { KptButton } from './lib/button/button.component';\nexport type { KptButtonVariant, KptButtonSize } from './lib/button/button.component';\nexport { KptIconButton } from './lib/icon-button/icon-button.component';\nexport { KptButtonGroup } from './lib/button-group/button-group.component';\nexport { KptFab } from './lib/fab/fab.component';\nexport { KptSplitButton } from './lib/split-button/split-button.component';\n\nexport { KptIcon } from './lib/icon/icon.component';\nexport { KptIconRegistry } from './lib/icon/icon-registry';\nexport type { KptIconName } from './lib/icon/icons';\n\n// i18n\nexport { provideKptI18n } from './lib/i18n/i18n.provider';\nexport { KptI18n } from './lib/i18n/i18n.service';\nexport type { KptI18nConfig, DeepPartial } from './lib/i18n/i18n.token';\nexport { KPT_I18N_CONFIG } from './lib/i18n/i18n.token';\nexport { KPT_MESSAGES_EN, KPT_MESSAGES_PL } from './lib/i18n/messages';\nexport type { KptMessages, KptLocale } from './lib/i18n/messages';\n\n// Wyświetlanie / statusy\nexport { KptBadge } from './lib/badge/badge.component';\nexport type { KptBadgeVariant } from './lib/badge/badge.component';\nexport { KptChip } from './lib/chip/chip.component';\nexport type { KptChipVariant } from './lib/chip/chip.component';\nexport { KptAvatar } from './lib/avatar/avatar.component';\nexport type { KptAvatarSize, KptAvatarShape } from './lib/avatar/avatar.component';\nexport { KptSpinner } from './lib/spinner/spinner.component';\nexport { KptProgress } from './lib/progress/progress.component';\nexport type { KptProgressVariant } from './lib/progress/progress.component';\nexport { KptSkeleton } from './lib/skeleton/skeleton.component';\nexport type { KptSkeletonVariant } from './lib/skeleton/skeleton.component';\n\nexport { KptFormField } from './lib/form-field/form-field.component';\n\nexport { KptInput } from './lib/input/input.component';\nexport type { KptInputType } from './lib/input/input.component';\n\nexport { KptCheckbox } from './lib/checkbox/checkbox.component';\nexport { KptSwitch } from './lib/switch/switch.component';\nexport { KptSwitchGroup } from './lib/switch-group/switch-group.component';\nexport { KptRadioGroup } from './lib/radio-group/radio-group.component';\nexport { KptSelect } from './lib/select/select.component';\nexport { KptDatepicker } from './lib/datepicker/datepicker.component';\nexport { KptClock } from './lib/datepicker/clock.component';\nexport { KptTextarea } from './lib/textarea/textarea.component';\nexport { KptRichText } from './lib/rich-text/rich-text.component';\nexport type { KptRichTool, KptRichToolbar } from './lib/rich-text/rich-text.component';\nexport { KptSlider, type KptSliderValue } from './lib/slider/slider.component';\nexport { KptRating } from './lib/rating/rating.component';\nexport { KptFileUpload } from './lib/file-upload/file-upload.component';\nexport { KptColorPicker } from './lib/color-picker/color-picker.component';\nexport { KptDateRange } from './lib/date-range/date-range.component';\nexport type { KptDateRangeValue } from './lib/date-range/date-range.component';\nexport { KptInputNumber } from './lib/input-number/input-number.component';\nexport { KptPassword } from './lib/password/password.component';\nexport { KptInputOtp } from './lib/input-otp/input-otp.component';\nexport { KptChipsInput } from './lib/chips-input/chips-input.component';\nexport { KptInputMask } from './lib/input-mask/input-mask.component';\nexport { KptListbox } from './lib/listbox/listbox.component';\nexport { KptKnob } from './lib/knob/knob.component';\nexport type { KptOption } from './lib/shared/types';\n\n// Layout\nexport { KptCard } from './lib/card/card.component';\nexport type { KptCardVariant } from './lib/card/card.component';\nexport { KptDivider } from './lib/divider/divider.component';\nexport type { KptDividerOrientation } from './lib/divider/divider.component';\nexport { KptToolbar } from './lib/toolbar/toolbar.component';\nexport { KptSidenav } from './lib/sidenav/sidenav.component';\nexport { KptAppShell } from './lib/app-shell/app-shell.component';\nexport type { KptSidenavMode } from './lib/app-shell/app-shell.component';\nexport { KptPanel } from './lib/panel/panel.component';\nexport { KptFieldset } from './lib/fieldset/fieldset.component';\nexport { KptSplitter } from './lib/splitter/splitter.component';\nexport type { KptSplitterOrientation } from './lib/splitter/splitter.component';\nexport { KptScrollTop } from './lib/scroll-top/scroll-top.component';\nexport { KptImage } from './lib/image/image.component';\nexport { KptMeterGroup } from './lib/meter-group/meter-group.component';\nexport type { KptMeterItem } from './lib/meter-group/meter-group.component';\nexport { KptAvatarGroup } from './lib/avatar-group/avatar-group.component';\nexport type { KptAvatarItem } from './lib/avatar-group/avatar-group.component';\nexport { KptEmpty } from './lib/empty/empty.component';\n\n// Nawigacja\nexport { KptTabs } from './lib/tabs/tabs.component';\nexport { KptTab } from './lib/tabs/tab.component';\nexport { KptAccordion } from './lib/accordion/accordion.component';\nexport { KptAccordionPanel } from './lib/accordion/accordion-panel.component';\nexport { KptBreadcrumb } from './lib/breadcrumb/breadcrumb.component';\nexport type { KptBreadcrumbItem } from './lib/breadcrumb/breadcrumb.component';\nexport { KptStepper } from './lib/stepper/stepper.component';\nexport { KptStep } from './lib/stepper/step.component';\n\n// Dane\nexport { KptPaginator } from './lib/paginator/paginator.component';\nexport { KptDataTable } from './lib/data-table/data-table.component';\nexport type { KptColumn, KptTableLazyState } from './lib/data-table/data-table.component';\nexport { KptCellDef } from './lib/data-table/cell.directive';\nexport { KptRowDetailDef } from './lib/data-table/row-detail.directive';\nexport { KptTree } from './lib/tree/tree.component';\nexport type { KptTreeNode } from './lib/tree/tree.component';\nexport { KptTimeline } from './lib/timeline/timeline.component';\nexport type { KptTimelineItem } from './lib/timeline/timeline.component';\nexport { KptCarousel } from './lib/carousel/carousel.component';\nexport { KptDataView } from './lib/data-view/data-view.component';\nexport { KptPickList } from './lib/pick-list/pick-list.component';\nexport { KptOrderList } from './lib/order-list/order-list.component';\nexport { KptGalleria } from './lib/galleria/galleria.component';\nexport type { KptGalleriaItem } from './lib/galleria/galleria.component';\n\n// Feedback\nexport { KptAlert } from './lib/alert/alert.component';\nexport type { KptAlertVariant } from './lib/alert/alert.component';\nexport { KptDialog } from './lib/dialog/dialog.component';\nexport { KptToastService } from './lib/toast/toast.service';\nexport type { KptToast, KptToastOptions } from './lib/toast/toast.service';\nexport { KptToastContainer } from './lib/toast/toast-container.component';\nexport { KptTooltip } from './lib/tooltip/tooltip.directive';\nexport type { KptTooltipPosition } from './lib/tooltip/tooltip.directive';\nexport { KptMenu } from './lib/menu/menu.component';\nexport type { KptMenuItem } from './lib/menu/menu.component';\nexport { KptPopover } from './lib/popover/popover.component';\nexport { KptAutocomplete } from './lib/autocomplete/autocomplete.component';\nexport { KptDrawer } from './lib/drawer/drawer.component';\nexport type { KptDrawerPosition } from './lib/drawer/drawer.component';\nexport { KptContextMenu } from './lib/context-menu/context-menu.component';\nexport { KptMenubar } from './lib/menubar/menubar.component';\nexport { KptMegamenu } from './lib/megamenu/megamenu.component';\nexport { KptConfirmService } from './lib/confirm/confirm.service';\nexport type { KptConfirmOptions, KptConfirmRequest } from './lib/confirm/confirm.service';\nexport { KptConfirmContainer } from './lib/confirm/confirm-container.component';\nexport { KptBottomSheet } from './lib/bottom-sheet/bottom-sheet.component';\nexport { KptSpeedDial } from './lib/speed-dial/speed-dial.component';\nexport type { KptSpeedDialDirection } from './lib/speed-dial/speed-dial.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["pad","toIso"],"mappings":"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"}