@konce-pt/angular 0.1.0 → 0.1.2
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.
- package/README.md +228 -0
- package/dist/LICENSE +21 -0
- package/dist/README.md +228 -0
- package/dist/fesm2022/konce-pt-angular.mjs +1 -1
- package/dist/fesm2022/konce-pt-angular.mjs.map +1 -1
- package/dist/package.json +26 -2
- package/dist/src/lib/data-table/llms.txt +1 -1
- package/dist/types/konce-pt-angular.d.ts +1 -1
- package/package.json +26 -2
|
@@ -1 +1 @@
|
|
|
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/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/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/radio-group/radio-group.component.ts","../../src/lib/select/select.component.ts","../../src/lib/select/select.component.html","../../src/lib/datepicker/datepicker.component.ts","../../src/lib/datepicker/datepicker.component.html","../../src/lib/textarea/textarea.component.ts","../../src/lib/rich-text/rich-text.component.ts","../../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/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/tooltip/tooltip.directive.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","// 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';\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 '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};\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, input, output, signal } from '@angular/core';\nimport type { KptButtonVariant } from '../button/button.component';\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 aria-label=\"Więcej akcji\"\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 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 { 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, input, output } from '@angular/core';\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 aria-label=\"Usuń\"\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","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, input } from '@angular/core';\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]=\"label()\" [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 readonly label = input('Ładowanie');\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 ViewEncapsulation,\n booleanAttribute,\n input,\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 * @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@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: { class: 'kpt-form-field-host' },\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","<div class=\"kpt-form-field\" [class.kpt-form-field--invalid]=\"!!error()\">\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\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 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@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 <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()) {\n <span class=\"kpt-switch__label\">{{ label() }}</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}\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 input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\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 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)\" aria-label=\"Usuń\">\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 placeholder=\"Szukaj…\"\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\">Brak wyników</li>\n }\n </ul>\n </div>\n</ng-template>\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';\nimport { KptIcon } from '../icon/icon.component';\n\ninterface DayCell {\n day: number;\n iso: string;\n inMonth: boolean;\n today: boolean;\n selected: boolean;\n disabled: boolean;\n}\n\nconst WEEKDAYS = ['Pn', 'Wt', 'Śr', 'Cz', 'Pt', 'So', 'Nd'];\nconst MONTHS = [\n 'styczeń', 'luty', 'marzec', 'kwiecień', 'maj', 'czerwiec',\n 'lipiec', 'sierpień', 'wrzesień', 'październik', 'listopad', 'grudzień',\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 daty z własnym kalendarzem (CDK Overlay), Signal Forms. Wartość ISO 'RRRR-MM-DD'.\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 */\n@Component({\n selector: 'kpt-datepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon],\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('RRRR-MM-DD');\n readonly minDate = input<string | null>(null);\n readonly maxDate = input<string | null>(null);\n\n protected readonly weekdays = WEEKDAYS;\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 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 `${MONTHS[m]} ${y}`;\n });\n\n protected readonly display = computed(() => {\n const d = this.parse(this.value());\n return d ? `${pad(d.getDate())}.${pad(d.getMonth() + 1)}.${d.getFullYear()}` : '';\n });\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.value();\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 private parse(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\n protected toggleOpen(): void {\n if (this.disabled()) return;\n if (!this.open()) {\n const d = this.parse(this.value()) ?? this.today;\n this.view.set({ y: d.getFullYear(), m: d.getMonth() });\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 protected selectDay(cell: DayCell): void {\n if (cell.disabled) return;\n this.value.set(cell.iso);\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('');\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\">{{ placeholder() }}</span>\n }\n <span class=\"kpt-datepicker__spacer\"></span>\n @if (display()) {\n <button type=\"button\" class=\"kpt-datepicker__clear\" (click)=\"clear($event)\" aria-label=\"Wyczyść\"><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\" (keydown.escape)=\"close()\">\n <div class=\"kpt-calendar__header\">\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"prevMonth()\" aria-label=\"Poprzedni miesiąc\"><kpt-icon name=\"chevron-left\" /></button>\n <span class=\"kpt-calendar__title\">{{ monthLabel() }}</span>\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"nextMonth()\" aria-label=\"Następny miesiąc\"><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 </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 {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n booleanAttribute,\n effect,\n input,\n model,\n output,\n viewChild,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { KptIcon } from '../icon/icon.component';\nimport type { KptIconName } from '../icon/icons';\n\nexport type KptRichTool = 'bold' | 'italic' | 'underline' | 'strike' | 'ul' | 'ol' | 'link' | 'clear';\n\nconst ICON: Record<KptRichTool, KptIconName> = {\n bold: 'bold',\n italic: 'italic',\n underline: 'underline',\n strike: 'strikethrough',\n ul: 'list',\n ol: 'list-numbers',\n link: 'link',\n clear: 'clear-formatting',\n};\nconst COMMAND: Record<Exclude<KptRichTool, 'link'>, string> = {\n bold: 'bold',\n italic: 'italic',\n underline: 'underline',\n strike: 'strikeThrough',\n ul: 'insertUnorderedList',\n ol: 'insertOrderedList',\n clear: 'removeFormat',\n};\n\n/**\n * Lekki edytor tekstu sformatowanego (contenteditable) z konfigurowalnym paskiem przycisków.\n * Wartość = HTML. Bez zależności zewnętrznych. Signal Forms.\n *\n * @example\n * <kpt-rich-text [formField]=\"f.body\" [toolbar]=\"['bold','italic','ul','link']\" />\n */\n@Component({\n selector: 'kpt-rich-text',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\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 (item of toolbar(); track item) {\n <button\n type=\"button\"\n class=\"kpt-rich-text__tool\"\n [attr.aria-label]=\"item\"\n [disabled]=\"disabled()\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"exec(item)\"\n ><kpt-icon [name]=\"icon(item)\" /></button>\n }\n </div>\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 (blur)=\"touch.emit()\"\n ></div>\n </div>\n `,\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<KptRichTool[]>(['bold', 'italic', 'underline', 'strike', 'ul', 'ol', 'link', 'clear']);\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 private readonly editor = viewChild<ElementRef<HTMLElement>>('editor');\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\n protected icon(item: KptRichTool): KptIconName {\n return ICON[item];\n }\n\n protected onInput(): void {\n const el = this.editor()?.nativeElement;\n if (el) this.value.set(el.innerHTML);\n }\n\n protected exec(item: KptRichTool): void {\n if (this.disabled()) return;\n this.editor()?.nativeElement.focus();\n if (item === 'link') {\n const url = window.prompt('Adres URL:');\n if (url) document.execCommand('createLink', false, url);\n } else {\n document.execCommand(COMMAND[item]);\n }\n this.onInput();\n }\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';\n\n/**\n * Suwak wartości (slider) na Signal Forms.\n *\n * @example\n * <kpt-slider [formField]=\"f.volume\" [min]=\"0\" [max]=\"100\" [step]=\"5\" showValue />\n */\n@Component({\n selector: 'kpt-slider',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n <input\n class=\"kpt-slider__input\"\n type=\"range\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [style.--_pct.%]=\"percent()\"\n (input)=\"value.set(+$any($event.target).value)\"\n (change)=\"touch.emit()\"\n />\n @if (showValue()) {\n <span class=\"kpt-slider__value\">{{ value() }}</span>\n }\n `,\n styleUrl: './slider.component.scss',\n host: { class: 'kpt-slider-host' },\n})\nexport class KptSlider implements FormValueControl<number> {\n readonly value = model<number>(0);\n // Typ zgodny z FormValueControl (FormField może zsync-ować z walidatorami min/max).\n readonly min = input<number | undefined>(0);\n readonly max = input<number | 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 protected readonly percent = computed(() => {\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) * 100;\n });\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, input, model, output, signal } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\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\"><strong>Kliknij</strong> lub przeciągnij pliki tutaj</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)\" aria-label=\"Usuń\"><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 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 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\nexport interface KptDateRangeValue {\n start: string;\n end: string;\n}\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 WEEKDAYS = ['Pn', 'Wt', 'Śr', 'Cz', 'Pt', 'So', 'Nd'];\nconst MONTHS = [\n 'styczeń', 'luty', 'marzec', 'kwiecień', 'maj', 'czerwiec',\n 'lipiec', 'sierpień', 'wrzesień', 'październik', 'listopad', 'grudzień',\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())}`;\nconst fmt = (iso: string): string => {\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(iso);\n return m ? `${m[3]}.${m[2]}.${m[1]}` : '';\n};\n\n/**\n * Wybór zakresu dat z kalendarzem (CDK Overlay), Signal Forms.\n * Wartość: `{ start: 'RRRR-MM-DD', end: 'RRRR-MM-DD' }`.\n * Wymaga `import '@angular/cdk/overlay-prebuilt.css';`\n *\n * @example\n * <kpt-date-range [formField]=\"f.period\" />\n */\n@Component({\n selector: 'kpt-date-range',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon],\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 readonly placeholder = input('Wybierz zakres');\n\n protected readonly weekdays = WEEKDAYS;\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 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 `${MONTHS[m]} ${y}`;\n });\n\n protected readonly display = computed(() => {\n const { start, end } = this.value();\n if (!start) return '';\n return end ? `${fmt(start)} – ${fmt(end)}` : `${fmt(start)} – …`;\n });\n\n protected readonly weeks = computed<DayCell[][]>(() => {\n const { y, m } = this.view();\n const { start, end } = this.value();\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 = this.value().start;\n const d = start ? new Date(start) : this.today;\n this.view.set({ y: d.getFullYear(), m: d.getMonth() });\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 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 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 }\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\">{{ placeholder() }}</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)\" aria-label=\"Wyczyść\"><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\" (keydown.escape)=\"close()\">\n <div class=\"kpt-calendar__header\">\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"prevMonth()\" aria-label=\"Poprzedni miesiąc\"><kpt-icon name=\"chevron-left\" /></button>\n <span class=\"kpt-calendar__title\">{{ monthLabel() }}</span>\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"nextMonth()\" aria-label=\"Następny miesiąc\"><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 </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, computed, input, model, output } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\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)\" aria-label=\"Zmniejsz\"><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)\" aria-label=\"Zwiększ\"><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 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, input, model, output, signal } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\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() ? 'Ukryj hasło' : 'Pokaż hasło'\">\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 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 const labels = ['Bardzo słabe', 'Słabe', 'Średnie', 'Dobre', 'Silne'];\n return { score, label: labels[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 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, input, model, output } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { KptChip } from '../chip/chip.component';\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 ? '' : placeholder()\"\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 readonly placeholder = input('Dodaj i naciśnij Enter…');\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 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, input, model, output, signal } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\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\" placeholder=\"Szukaj…\" [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\">Brak pozycji</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 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, 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`.\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}\n","@if (header()) {\n <div class=\"kpt-card__header\">{{ header() }}</div>\n}\n<div class=\"kpt-card__body\">\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, input, model } from '@angular/core';\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()\" aria-label=\"Zwiń / rozwiń\">\n <kpt-icon [name]=\"collapsed() ? 'chevron-down' : 'chevron-up'\" />\n </button>\n }\n </div>\n @if (!collapsed()) {\n <div class=\"kpt-panel__body\"><ng-content /></div>\n }\n </div>\n `,\n styleUrl: './panel.component.scss',\n host: { class: 'kpt-panel-host' },\n})\nexport class KptPanel {\n readonly header = input('');\n readonly toggleable = input(false, { transform: booleanAttribute });\n readonly collapsed = model(false);\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 @if (!collapsed()) {\n <div class=\"kpt-fieldset__body\"><ng-content /></div>\n }\n </fieldset>\n `,\n styleUrl: './fieldset.component.scss',\n host: { class: 'kpt-fieldset-host' },\n})\nexport class KptFieldset {\n readonly legend = input('');\n readonly toggleable = input(false, { transform: booleanAttribute });\n readonly collapsed = model(false);\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, input, signal } from '@angular/core';\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 aria-label=\"Przewiń do góry\"\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 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, input, signal } from '@angular/core';\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()\" aria-label=\"Zamknij\"><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 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 ViewEncapsulation,\n computed,\n contentChildren,\n model,\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 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 </div>\n <div class=\"kpt-tabs__body\" role=\"tabpanel\">\n @if (activeTab(); as tab) {\n <ng-container [ngTemplateOutlet]=\"tab.content()\" />\n }\n </div>\n `,\n styleUrl: './tabs.component.scss',\n host: { class: 'kpt-tabs-host' },\n})\nexport class KptTabs {\n protected readonly tabs = contentChildren(KptTab);\n readonly activeIndex = model(0);\n\n protected readonly activeTab = computed(() => this.tabs()[this.activeIndex()]);\n\n protected select(index: number): void {\n if (!this.tabs()[index]?.disabled()) this.activeIndex.set(index);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\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 @if (expanded()) {\n <div class=\"kpt-accordion-panel__body\"><ng-content /></div>\n }\n </div>\n `,\n styleUrl: './accordion-panel.component.scss',\n host: { class: 'kpt-accordion-panel-host' },\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 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 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, input } from '@angular/core';\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\" aria-label=\"breadcrumb\">\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}\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 computed,\n contentChildren,\n model,\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 @if (activeStep(); as step) {\n <ng-container [ngTemplateOutlet]=\"step.content()\" />\n }\n </div>\n `,\n styleUrl: './stepper.component.scss',\n host: { class: 'kpt-stepper-host' },\n})\nexport class KptStepper {\n protected readonly steps = contentChildren(KptStep);\n readonly activeIndex = model(0);\n\n protected readonly activeStep = computed(() => this.steps()[this.activeIndex()]);\n\n goTo(index: number): void {\n this.activeIndex.set(Math.max(0, Math.min(index, this.steps().length - 1)));\n }\n next(): void {\n this.activeIndex.update((i) => Math.min(i + 1, this.steps().length - 1));\n }\n prev(): void {\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 input,\n model,\n} from '@angular/core';\nimport { KptButton } from '../button/button.component';\nimport { KptIcon } from '../icon/icon.component';\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 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 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 Wierszy:\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\">{{ rangeStart() }}–{{ rangeEnd() }} z {{ length() }}</span>\n\n<div class=\"kpt-paginator__nav\">\n <kpt-button variant=\"outline\" size=\"sm\" [disabled]=\"!canPrev()\" (click)=\"prev()\" aria-label=\"Poprzednia strona\"><kpt-icon name=\"chevron-left\" /></kpt-button>\n <kpt-button variant=\"outline\" size=\"sm\" [disabled]=\"!canNext()\" (click)=\"next()\" aria-label=\"Następna strona\"><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 { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n TemplateRef,\n ViewEncapsulation,\n afterNextRender,\n booleanAttribute,\n computed,\n contentChildren,\n effect,\n input,\n linkedSignal,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { KptButton } from '../button/button.component';\nimport { KptIcon } from '../icon/icon.component';\nimport type { KptIconName } from '../icon/icons';\nimport { KptPaginator } from '../paginator/paginator.component';\nimport { KptCellDef } from './cell.directive';\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}\n\nconst REM_PX = 16;\nconst CHECKBOX_FROZEN_W = 3; // 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}\n\n/**\n * Flagowa tabela danych Koncept UI (w duchu PrimeNG): 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],\n templateUrl: './data-table.component.html',\n styleUrl: './data-table.component.scss',\n host: { class: 'kpt-data-table' },\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 /** 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 readonly emptyMessage = input('Brak danych');\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\n // ── Model / zdarzenia ──\n readonly selection = model<T[]>([]);\n readonly rowClick = output<T>();\n /** Emitowane w trybie lazy przy zmianie sortowania/filtra/strony. */\n readonly lazyLoad = output<KptTableLazyState>();\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 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 });\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\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 protected onColDragStart(index: number, event: DragEvent): void {\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(event: DragEvent): void {\n if (this.dragIndex() !== null) 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 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 // ── Stan ──\n protected readonly filterText = signal('');\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 // ── Potok przetwarzania danych ──\n private readonly filtered = computed(() => {\n const query = this.filterText().trim().toLowerCase();\n const rows = this.data();\n if (!query) return rows;\n const cols = this.columns();\n return rows.filter((row) =>\n cols.some((col) => String((row as Record<string, unknown>)[col.field] ?? '').toLowerCase().includes(query)),\n );\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(() => this.columns().length + (this.selectable() !== 'none' ? 1 : 0));\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 private readonly frozenOffsets = computed(() => {\n const map = new Map<string, number>();\n let acc = this.selectable() !== 'none' ? CHECKBOX_FROZEN_W * REM_PX : 0;\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 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 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 placeholder=\"Szukaj…\"\n [value]=\"filterText()\"\n (input)=\"onFilter($event)\"\n />\n }\n @if (exportable()) {\n <kpt-button variant=\"outline\" size=\"sm\" (click)=\"exportCsv()\">Eksport CSV</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>\n <tr>\n @if (selectable() === 'multiple') {\n <th class=\"kpt-data-table__checkbox\" [class.kpt-data-table__cell--frozen]=\"hasFrozen()\" [style.left.px]=\"hasFrozen() ? 0 : null\">\n <input type=\"checkbox\" [checked]=\"pageAllSelected()\" (change)=\"toggleAllOnPage()\" aria-label=\"Zaznacz wszystkie\" />\n </th>\n } @else if (selectable() === 'single') {\n <th class=\"kpt-data-table__checkbox\" [class.kpt-data-table__cell--frozen]=\"hasFrozen()\" [style.left.px]=\"hasFrozen() ? 0 : null\"></th>\n }\n @for (col of orderedColumns(); track col.field; let i = $index) {\n <th\n [attr.draggable]=\"reorderable() ? 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]=\"reorderable()\"\n [class.kpt-data-table__th--dragover]=\"dragIndex() !== null && dragIndex() !== i\"\n [attr.aria-sort]=\"ariaSort(col)\"\n (click)=\"toggleSort(col)\"\n (dragstart)=\"reorderable() ? onColDragStart(i, $event) : null\"\n (dragover)=\"reorderable() ? onColDragOver($event) : null\"\n (drop)=\"reorderable() ? onColDrop(i, $event) : null\"\n (dragend)=\"onColDragEnd()\"\n >\n @if (reorderable()) {\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 </thead>\n <tbody>\n @if (loading()) {\n <tr><td class=\"kpt-data-table__state\" [attr.colspan]=\"colspan()\">Ładowanie…</td></tr>\n } @else if (displayCount() === 0) {\n <tr><td class=\"kpt-data-table__state\" [attr.colspan]=\"colspan()\">{{ emptyMessage() }}</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 [style.height.px]=\"virtualScroll() ? rowHeight() : null\"\n (click)=\"onRowClick(row)\"\n >\n @if (selectable() !== 'none') {\n <td class=\"kpt-data-table__checkbox\" [class.kpt-data-table__cell--frozen]=\"hasFrozen()\" [style.left.px]=\"hasFrozen() ? 0 : null\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(row)\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleRow(row)\"\n aria-label=\"Zaznacz wiersz\"\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</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, input, model } from '@angular/core';\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\" aria-label=\"Poprzedni\">\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\" aria-label=\"Następny\">\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]=\"'Slajd ' + (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 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, input, model } from '@angular/core';\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\">{{ items().length }} elementów</div>\n <div class=\"kpt-data-view__switch\">\n <button type=\"button\" [class.is-active]=\"layout() === 'list'\" (click)=\"layout.set('list')\" aria-label=\"Lista\"><kpt-icon name=\"list\" /></button>\n <button type=\"button\" [class.is-active]=\"layout() === 'grid'\" (click)=\"layout.set('grid')\" aria-label=\"Siatka\"><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\">Brak elementów</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 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, contentChild, input, model, signal } from '@angular/core';\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\">{{ sourceHeader() }}</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)\" aria-label=\"Przenieś wszystko w prawo\"><kpt-icon name=\"chevron-right\" /><kpt-icon name=\"chevron-right\" /></button>\n <button type=\"button\" (click)=\"move('source', false)\" aria-label=\"Przenieś w prawo\"><kpt-icon name=\"chevron-right\" /></button>\n <button type=\"button\" (click)=\"move('target', false)\" aria-label=\"Przenieś w lewo\"><kpt-icon name=\"chevron-left\" /></button>\n <button type=\"button\" (click)=\"move('target', true)\" aria-label=\"Przenieś wszystko w lewo\"><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\">{{ targetHeader() }}</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 readonly sourceHeader = input('Dostępne');\n readonly targetHeader = input('Wybrane');\n protected readonly itemTpl = contentChild.required(TemplateRef);\n\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, input, model, signal } from '@angular/core';\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\" aria-label=\"W górę\"><kpt-icon name=\"arrow-up\" /></button>\n <button type=\"button\" (click)=\"moveSelected(1)\" [disabled]=\"selected() === null\" aria-label=\"W dół\"><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 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, input, model } from '@angular/core';\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\" aria-label=\"Poprzedni\"><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\" aria-label=\"Następny\"><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]=\"'Obraz ' + (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 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 input,\n output,\n signal,\n} from '@angular/core';\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()\" aria-label=\"Zamknij\"><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 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 input,\n model,\n viewChild,\n} from '@angular/core';\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)\" aria-label=\"Zamknij\"><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 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 { 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)\" aria-label=\"Zamknij\"><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 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 { 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 { 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, input, model } from '@angular/core';\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()\" aria-label=\"Zamknij\"><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 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 { 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 *\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: [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 [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 @if (openIndex() === i && item.items?.length) {\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 }\n </div>\n }\n </nav>\n @if (openIndex() !== null) {\n <div class=\"kpt-menubar__backdrop\" (click)=\"closeAll()\"></div>\n }\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\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 { 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 *\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: [KptIcon],\n template: `\n <nav class=\"kpt-megamenu\" role=\"menubar\">\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\n @if (activeColumns().length) {\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 }\n </nav>\n @if (openIndex() !== null) {\n <div class=\"kpt-megamenu__backdrop\" (click)=\"closeAll()\"></div>\n }\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\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 { 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 ?? 'Potwierdzenie'\">\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 ?? 'Anuluj' }}</kpt-button>\n <kpt-button [variant]=\"req()?.variant ?? 'filled'\" (click)=\"service.accept()\">{{ req()?.acceptLabel ?? 'Potwierdź' }}</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 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, input, model } from '@angular/core';\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()\" aria-label=\"Zamknij\"></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 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 { KptFab } from '../fab/fab.component';\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() ? 'Zamknij' : ariaLabel()\" (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 readonly ariaLabel = input('Akcje');\n readonly select = output<KptMenuItem<T>>();\n\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// 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 { KptRadioGroup } from './lib/radio-group/radio-group.component';\nexport { KptSelect } from './lib/select/select.component';\nexport { KptDatepicker } from './lib/datepicker/datepicker.component';\nexport { KptTextarea } from './lib/textarea/textarea.component';\nexport { KptRichText } from './lib/rich-text/rich-text.component';\nexport type { KptRichTool } from './lib/rich-text/rich-text.component';\nexport { KptSlider } 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 { 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":["WEEKDAYS","MONTHS","pad","toIso"],"mappings":"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"}
|
|
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/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/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/radio-group/radio-group.component.ts","../../src/lib/select/select.component.ts","../../src/lib/select/select.component.html","../../src/lib/datepicker/datepicker.component.ts","../../src/lib/datepicker/datepicker.component.html","../../src/lib/textarea/textarea.component.ts","../../src/lib/rich-text/rich-text.component.ts","../../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/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/tooltip/tooltip.directive.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","// 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';\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 '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};\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, input, output, signal } from '@angular/core';\nimport type { KptButtonVariant } from '../button/button.component';\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 aria-label=\"Więcej akcji\"\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 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 { 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, input, output } from '@angular/core';\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 aria-label=\"Usuń\"\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","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, input } from '@angular/core';\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]=\"label()\" [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 readonly label = input('Ładowanie');\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 ViewEncapsulation,\n booleanAttribute,\n input,\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 * @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@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: { class: 'kpt-form-field-host' },\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","<div class=\"kpt-form-field\" [class.kpt-form-field--invalid]=\"!!error()\">\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\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 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@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 <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()) {\n <span class=\"kpt-switch__label\">{{ label() }}</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}\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 input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\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 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)\" aria-label=\"Usuń\">\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 placeholder=\"Szukaj…\"\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\">Brak wyników</li>\n }\n </ul>\n </div>\n</ng-template>\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';\nimport { KptIcon } from '../icon/icon.component';\n\ninterface DayCell {\n day: number;\n iso: string;\n inMonth: boolean;\n today: boolean;\n selected: boolean;\n disabled: boolean;\n}\n\nconst WEEKDAYS = ['Pn', 'Wt', 'Śr', 'Cz', 'Pt', 'So', 'Nd'];\nconst MONTHS = [\n 'styczeń', 'luty', 'marzec', 'kwiecień', 'maj', 'czerwiec',\n 'lipiec', 'sierpień', 'wrzesień', 'październik', 'listopad', 'grudzień',\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 daty z własnym kalendarzem (CDK Overlay), Signal Forms. Wartość ISO 'RRRR-MM-DD'.\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 */\n@Component({\n selector: 'kpt-datepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon],\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('RRRR-MM-DD');\n readonly minDate = input<string | null>(null);\n readonly maxDate = input<string | null>(null);\n\n protected readonly weekdays = WEEKDAYS;\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 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 `${MONTHS[m]} ${y}`;\n });\n\n protected readonly display = computed(() => {\n const d = this.parse(this.value());\n return d ? `${pad(d.getDate())}.${pad(d.getMonth() + 1)}.${d.getFullYear()}` : '';\n });\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.value();\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 private parse(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\n protected toggleOpen(): void {\n if (this.disabled()) return;\n if (!this.open()) {\n const d = this.parse(this.value()) ?? this.today;\n this.view.set({ y: d.getFullYear(), m: d.getMonth() });\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 protected selectDay(cell: DayCell): void {\n if (cell.disabled) return;\n this.value.set(cell.iso);\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('');\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\">{{ placeholder() }}</span>\n }\n <span class=\"kpt-datepicker__spacer\"></span>\n @if (display()) {\n <button type=\"button\" class=\"kpt-datepicker__clear\" (click)=\"clear($event)\" aria-label=\"Wyczyść\"><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\" (keydown.escape)=\"close()\">\n <div class=\"kpt-calendar__header\">\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"prevMonth()\" aria-label=\"Poprzedni miesiąc\"><kpt-icon name=\"chevron-left\" /></button>\n <span class=\"kpt-calendar__title\">{{ monthLabel() }}</span>\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"nextMonth()\" aria-label=\"Następny miesiąc\"><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 </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 {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ViewEncapsulation,\n booleanAttribute,\n effect,\n input,\n model,\n output,\n viewChild,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { KptIcon } from '../icon/icon.component';\nimport type { KptIconName } from '../icon/icons';\n\nexport type KptRichTool = 'bold' | 'italic' | 'underline' | 'strike' | 'ul' | 'ol' | 'link' | 'clear';\n\nconst ICON: Record<KptRichTool, KptIconName> = {\n bold: 'bold',\n italic: 'italic',\n underline: 'underline',\n strike: 'strikethrough',\n ul: 'list',\n ol: 'list-numbers',\n link: 'link',\n clear: 'clear-formatting',\n};\nconst COMMAND: Record<Exclude<KptRichTool, 'link'>, string> = {\n bold: 'bold',\n italic: 'italic',\n underline: 'underline',\n strike: 'strikeThrough',\n ul: 'insertUnorderedList',\n ol: 'insertOrderedList',\n clear: 'removeFormat',\n};\n\n/**\n * Lekki edytor tekstu sformatowanego (contenteditable) z konfigurowalnym paskiem przycisków.\n * Wartość = HTML. Bez zależności zewnętrznych. Signal Forms.\n *\n * @example\n * <kpt-rich-text [formField]=\"f.body\" [toolbar]=\"['bold','italic','ul','link']\" />\n */\n@Component({\n selector: 'kpt-rich-text',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [KptIcon],\n template: `\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 (item of toolbar(); track item) {\n <button\n type=\"button\"\n class=\"kpt-rich-text__tool\"\n [attr.aria-label]=\"item\"\n [disabled]=\"disabled()\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"exec(item)\"\n ><kpt-icon [name]=\"icon(item)\" /></button>\n }\n </div>\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 (blur)=\"touch.emit()\"\n ></div>\n </div>\n `,\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<KptRichTool[]>(['bold', 'italic', 'underline', 'strike', 'ul', 'ol', 'link', 'clear']);\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 private readonly editor = viewChild<ElementRef<HTMLElement>>('editor');\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\n protected icon(item: KptRichTool): KptIconName {\n return ICON[item];\n }\n\n protected onInput(): void {\n const el = this.editor()?.nativeElement;\n if (el) this.value.set(el.innerHTML);\n }\n\n protected exec(item: KptRichTool): void {\n if (this.disabled()) return;\n this.editor()?.nativeElement.focus();\n if (item === 'link') {\n const url = window.prompt('Adres URL:');\n if (url) document.execCommand('createLink', false, url);\n } else {\n document.execCommand(COMMAND[item]);\n }\n this.onInput();\n }\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';\n\n/**\n * Suwak wartości (slider) na Signal Forms.\n *\n * @example\n * <kpt-slider [formField]=\"f.volume\" [min]=\"0\" [max]=\"100\" [step]=\"5\" showValue />\n */\n@Component({\n selector: 'kpt-slider',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n <input\n class=\"kpt-slider__input\"\n type=\"range\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [style.--_pct.%]=\"percent()\"\n (input)=\"value.set(+$any($event.target).value)\"\n (change)=\"touch.emit()\"\n />\n @if (showValue()) {\n <span class=\"kpt-slider__value\">{{ value() }}</span>\n }\n `,\n styleUrl: './slider.component.scss',\n host: { class: 'kpt-slider-host' },\n})\nexport class KptSlider implements FormValueControl<number> {\n readonly value = model<number>(0);\n // Typ zgodny z FormValueControl (FormField może zsync-ować z walidatorami min/max).\n readonly min = input<number | undefined>(0);\n readonly max = input<number | 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 protected readonly percent = computed(() => {\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) * 100;\n });\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, input, model, output, signal } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\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\"><strong>Kliknij</strong> lub przeciągnij pliki tutaj</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)\" aria-label=\"Usuń\"><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 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 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\nexport interface KptDateRangeValue {\n start: string;\n end: string;\n}\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 WEEKDAYS = ['Pn', 'Wt', 'Śr', 'Cz', 'Pt', 'So', 'Nd'];\nconst MONTHS = [\n 'styczeń', 'luty', 'marzec', 'kwiecień', 'maj', 'czerwiec',\n 'lipiec', 'sierpień', 'wrzesień', 'październik', 'listopad', 'grudzień',\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())}`;\nconst fmt = (iso: string): string => {\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(iso);\n return m ? `${m[3]}.${m[2]}.${m[1]}` : '';\n};\n\n/**\n * Wybór zakresu dat z kalendarzem (CDK Overlay), Signal Forms.\n * Wartość: `{ start: 'RRRR-MM-DD', end: 'RRRR-MM-DD' }`.\n * Wymaga `import '@angular/cdk/overlay-prebuilt.css';`\n *\n * @example\n * <kpt-date-range [formField]=\"f.period\" />\n */\n@Component({\n selector: 'kpt-date-range',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon],\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 readonly placeholder = input('Wybierz zakres');\n\n protected readonly weekdays = WEEKDAYS;\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 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 `${MONTHS[m]} ${y}`;\n });\n\n protected readonly display = computed(() => {\n const { start, end } = this.value();\n if (!start) return '';\n return end ? `${fmt(start)} – ${fmt(end)}` : `${fmt(start)} – …`;\n });\n\n protected readonly weeks = computed<DayCell[][]>(() => {\n const { y, m } = this.view();\n const { start, end } = this.value();\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 = this.value().start;\n const d = start ? new Date(start) : this.today;\n this.view.set({ y: d.getFullYear(), m: d.getMonth() });\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 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 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 }\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\">{{ placeholder() }}</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)\" aria-label=\"Wyczyść\"><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\" (keydown.escape)=\"close()\">\n <div class=\"kpt-calendar__header\">\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"prevMonth()\" aria-label=\"Poprzedni miesiąc\"><kpt-icon name=\"chevron-left\" /></button>\n <span class=\"kpt-calendar__title\">{{ monthLabel() }}</span>\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"nextMonth()\" aria-label=\"Następny miesiąc\"><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 </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, computed, input, model, output } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\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)\" aria-label=\"Zmniejsz\"><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)\" aria-label=\"Zwiększ\"><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 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, input, model, output, signal } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\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() ? 'Ukryj hasło' : 'Pokaż hasło'\">\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 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 const labels = ['Bardzo słabe', 'Słabe', 'Średnie', 'Dobre', 'Silne'];\n return { score, label: labels[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 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, input, model, output } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport { KptChip } from '../chip/chip.component';\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 ? '' : placeholder()\"\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 readonly placeholder = input('Dodaj i naciśnij Enter…');\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 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, input, model, output, signal } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\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\" placeholder=\"Szukaj…\" [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\">Brak pozycji</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 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, 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`.\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}\n","@if (header()) {\n <div class=\"kpt-card__header\">{{ header() }}</div>\n}\n<div class=\"kpt-card__body\">\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, input, model } from '@angular/core';\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()\" aria-label=\"Zwiń / rozwiń\">\n <kpt-icon [name]=\"collapsed() ? 'chevron-down' : 'chevron-up'\" />\n </button>\n }\n </div>\n @if (!collapsed()) {\n <div class=\"kpt-panel__body\"><ng-content /></div>\n }\n </div>\n `,\n styleUrl: './panel.component.scss',\n host: { class: 'kpt-panel-host' },\n})\nexport class KptPanel {\n readonly header = input('');\n readonly toggleable = input(false, { transform: booleanAttribute });\n readonly collapsed = model(false);\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 @if (!collapsed()) {\n <div class=\"kpt-fieldset__body\"><ng-content /></div>\n }\n </fieldset>\n `,\n styleUrl: './fieldset.component.scss',\n host: { class: 'kpt-fieldset-host' },\n})\nexport class KptFieldset {\n readonly legend = input('');\n readonly toggleable = input(false, { transform: booleanAttribute });\n readonly collapsed = model(false);\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, input, signal } from '@angular/core';\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 aria-label=\"Przewiń do góry\"\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 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, input, signal } from '@angular/core';\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()\" aria-label=\"Zamknij\"><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 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 ViewEncapsulation,\n computed,\n contentChildren,\n model,\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 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 </div>\n <div class=\"kpt-tabs__body\" role=\"tabpanel\">\n @if (activeTab(); as tab) {\n <ng-container [ngTemplateOutlet]=\"tab.content()\" />\n }\n </div>\n `,\n styleUrl: './tabs.component.scss',\n host: { class: 'kpt-tabs-host' },\n})\nexport class KptTabs {\n protected readonly tabs = contentChildren(KptTab);\n readonly activeIndex = model(0);\n\n protected readonly activeTab = computed(() => this.tabs()[this.activeIndex()]);\n\n protected select(index: number): void {\n if (!this.tabs()[index]?.disabled()) this.activeIndex.set(index);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n booleanAttribute,\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 @if (expanded()) {\n <div class=\"kpt-accordion-panel__body\"><ng-content /></div>\n }\n </div>\n `,\n styleUrl: './accordion-panel.component.scss',\n host: { class: 'kpt-accordion-panel-host' },\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 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 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, input } from '@angular/core';\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\" aria-label=\"breadcrumb\">\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}\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 computed,\n contentChildren,\n model,\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 @if (activeStep(); as step) {\n <ng-container [ngTemplateOutlet]=\"step.content()\" />\n }\n </div>\n `,\n styleUrl: './stepper.component.scss',\n host: { class: 'kpt-stepper-host' },\n})\nexport class KptStepper {\n protected readonly steps = contentChildren(KptStep);\n readonly activeIndex = model(0);\n\n protected readonly activeStep = computed(() => this.steps()[this.activeIndex()]);\n\n goTo(index: number): void {\n this.activeIndex.set(Math.max(0, Math.min(index, this.steps().length - 1)));\n }\n next(): void {\n this.activeIndex.update((i) => Math.min(i + 1, this.steps().length - 1));\n }\n prev(): void {\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 input,\n model,\n} from '@angular/core';\nimport { KptButton } from '../button/button.component';\nimport { KptIcon } from '../icon/icon.component';\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 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 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 Wierszy:\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\">{{ rangeStart() }}–{{ rangeEnd() }} z {{ length() }}</span>\n\n<div class=\"kpt-paginator__nav\">\n <kpt-button variant=\"outline\" size=\"sm\" [disabled]=\"!canPrev()\" (click)=\"prev()\" aria-label=\"Poprzednia strona\"><kpt-icon name=\"chevron-left\" /></kpt-button>\n <kpt-button variant=\"outline\" size=\"sm\" [disabled]=\"!canNext()\" (click)=\"next()\" aria-label=\"Następna strona\"><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 { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n TemplateRef,\n ViewEncapsulation,\n afterNextRender,\n booleanAttribute,\n computed,\n contentChildren,\n effect,\n input,\n linkedSignal,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { KptButton } from '../button/button.component';\nimport { KptIcon } from '../icon/icon.component';\nimport type { KptIconName } from '../icon/icons';\nimport { KptPaginator } from '../paginator/paginator.component';\nimport { KptCellDef } from './cell.directive';\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}\n\nconst REM_PX = 16;\nconst CHECKBOX_FROZEN_W = 3; // 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}\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],\n templateUrl: './data-table.component.html',\n styleUrl: './data-table.component.scss',\n host: { class: 'kpt-data-table' },\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 /** 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 readonly emptyMessage = input('Brak danych');\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\n // ── Model / zdarzenia ──\n readonly selection = model<T[]>([]);\n readonly rowClick = output<T>();\n /** Emitowane w trybie lazy przy zmianie sortowania/filtra/strony. */\n readonly lazyLoad = output<KptTableLazyState>();\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 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 });\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\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 protected onColDragStart(index: number, event: DragEvent): void {\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(event: DragEvent): void {\n if (this.dragIndex() !== null) 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 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 // ── Stan ──\n protected readonly filterText = signal('');\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 // ── Potok przetwarzania danych ──\n private readonly filtered = computed(() => {\n const query = this.filterText().trim().toLowerCase();\n const rows = this.data();\n if (!query) return rows;\n const cols = this.columns();\n return rows.filter((row) =>\n cols.some((col) => String((row as Record<string, unknown>)[col.field] ?? '').toLowerCase().includes(query)),\n );\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(() => this.columns().length + (this.selectable() !== 'none' ? 1 : 0));\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 private readonly frozenOffsets = computed(() => {\n const map = new Map<string, number>();\n let acc = this.selectable() !== 'none' ? CHECKBOX_FROZEN_W * REM_PX : 0;\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 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 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 placeholder=\"Szukaj…\"\n [value]=\"filterText()\"\n (input)=\"onFilter($event)\"\n />\n }\n @if (exportable()) {\n <kpt-button variant=\"outline\" size=\"sm\" (click)=\"exportCsv()\">Eksport CSV</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>\n <tr>\n @if (selectable() === 'multiple') {\n <th class=\"kpt-data-table__checkbox\" [class.kpt-data-table__cell--frozen]=\"hasFrozen()\" [style.left.px]=\"hasFrozen() ? 0 : null\">\n <input type=\"checkbox\" [checked]=\"pageAllSelected()\" (change)=\"toggleAllOnPage()\" aria-label=\"Zaznacz wszystkie\" />\n </th>\n } @else if (selectable() === 'single') {\n <th class=\"kpt-data-table__checkbox\" [class.kpt-data-table__cell--frozen]=\"hasFrozen()\" [style.left.px]=\"hasFrozen() ? 0 : null\"></th>\n }\n @for (col of orderedColumns(); track col.field; let i = $index) {\n <th\n [attr.draggable]=\"reorderable() ? 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]=\"reorderable()\"\n [class.kpt-data-table__th--dragover]=\"dragIndex() !== null && dragIndex() !== i\"\n [attr.aria-sort]=\"ariaSort(col)\"\n (click)=\"toggleSort(col)\"\n (dragstart)=\"reorderable() ? onColDragStart(i, $event) : null\"\n (dragover)=\"reorderable() ? onColDragOver($event) : null\"\n (drop)=\"reorderable() ? onColDrop(i, $event) : null\"\n (dragend)=\"onColDragEnd()\"\n >\n @if (reorderable()) {\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 </thead>\n <tbody>\n @if (loading()) {\n <tr><td class=\"kpt-data-table__state\" [attr.colspan]=\"colspan()\">Ładowanie…</td></tr>\n } @else if (displayCount() === 0) {\n <tr><td class=\"kpt-data-table__state\" [attr.colspan]=\"colspan()\">{{ emptyMessage() }}</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 [style.height.px]=\"virtualScroll() ? rowHeight() : null\"\n (click)=\"onRowClick(row)\"\n >\n @if (selectable() !== 'none') {\n <td class=\"kpt-data-table__checkbox\" [class.kpt-data-table__cell--frozen]=\"hasFrozen()\" [style.left.px]=\"hasFrozen() ? 0 : null\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(row)\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleRow(row)\"\n aria-label=\"Zaznacz wiersz\"\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</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, input, model } from '@angular/core';\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\" aria-label=\"Poprzedni\">\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\" aria-label=\"Następny\">\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]=\"'Slajd ' + (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 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, input, model } from '@angular/core';\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\">{{ items().length }} elementów</div>\n <div class=\"kpt-data-view__switch\">\n <button type=\"button\" [class.is-active]=\"layout() === 'list'\" (click)=\"layout.set('list')\" aria-label=\"Lista\"><kpt-icon name=\"list\" /></button>\n <button type=\"button\" [class.is-active]=\"layout() === 'grid'\" (click)=\"layout.set('grid')\" aria-label=\"Siatka\"><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\">Brak elementów</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 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, contentChild, input, model, signal } from '@angular/core';\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\">{{ sourceHeader() }}</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)\" aria-label=\"Przenieś wszystko w prawo\"><kpt-icon name=\"chevron-right\" /><kpt-icon name=\"chevron-right\" /></button>\n <button type=\"button\" (click)=\"move('source', false)\" aria-label=\"Przenieś w prawo\"><kpt-icon name=\"chevron-right\" /></button>\n <button type=\"button\" (click)=\"move('target', false)\" aria-label=\"Przenieś w lewo\"><kpt-icon name=\"chevron-left\" /></button>\n <button type=\"button\" (click)=\"move('target', true)\" aria-label=\"Przenieś wszystko w lewo\"><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\">{{ targetHeader() }}</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 readonly sourceHeader = input('Dostępne');\n readonly targetHeader = input('Wybrane');\n protected readonly itemTpl = contentChild.required(TemplateRef);\n\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, input, model, signal } from '@angular/core';\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\" aria-label=\"W górę\"><kpt-icon name=\"arrow-up\" /></button>\n <button type=\"button\" (click)=\"moveSelected(1)\" [disabled]=\"selected() === null\" aria-label=\"W dół\"><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 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, input, model } from '@angular/core';\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\" aria-label=\"Poprzedni\"><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\" aria-label=\"Następny\"><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]=\"'Obraz ' + (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 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 input,\n output,\n signal,\n} from '@angular/core';\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()\" aria-label=\"Zamknij\"><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 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 input,\n model,\n viewChild,\n} from '@angular/core';\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)\" aria-label=\"Zamknij\"><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 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 { 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)\" aria-label=\"Zamknij\"><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 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 { 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 { 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, input, model } from '@angular/core';\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()\" aria-label=\"Zamknij\"><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 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 { 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 *\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: [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 [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 @if (openIndex() === i && item.items?.length) {\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 }\n </div>\n }\n </nav>\n @if (openIndex() !== null) {\n <div class=\"kpt-menubar__backdrop\" (click)=\"closeAll()\"></div>\n }\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\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 { 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 *\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: [KptIcon],\n template: `\n <nav class=\"kpt-megamenu\" role=\"menubar\">\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\n @if (activeColumns().length) {\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 }\n </nav>\n @if (openIndex() !== null) {\n <div class=\"kpt-megamenu__backdrop\" (click)=\"closeAll()\"></div>\n }\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\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 { 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 ?? 'Potwierdzenie'\">\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 ?? 'Anuluj' }}</kpt-button>\n <kpt-button [variant]=\"req()?.variant ?? 'filled'\" (click)=\"service.accept()\">{{ req()?.acceptLabel ?? 'Potwierdź' }}</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 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, input, model } from '@angular/core';\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()\" aria-label=\"Zamknij\"></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 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 { KptFab } from '../fab/fab.component';\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() ? 'Zamknij' : ariaLabel()\" (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 readonly ariaLabel = input('Akcje');\n readonly select = output<KptMenuItem<T>>();\n\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// 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 { KptRadioGroup } from './lib/radio-group/radio-group.component';\nexport { KptSelect } from './lib/select/select.component';\nexport { KptDatepicker } from './lib/datepicker/datepicker.component';\nexport { KptTextarea } from './lib/textarea/textarea.component';\nexport { KptRichText } from './lib/rich-text/rich-text.component';\nexport type { KptRichTool } from './lib/rich-text/rich-text.component';\nexport { KptSlider } 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 { 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":["WEEKDAYS","MONTHS","pad","toIso"],"mappings":"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"}
|