@konce-pt/angular 0.7.0 → 0.7.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, booleanAttribute, computed, ViewEncapsulation, ChangeDetectionStrategy, Component, model, output, InjectionToken, signal, inject, Injectable, ElementRef, effect, makeEnvironmentProviders, afterNextRender, numberAttribute, viewChild, Directive, DestroyRef, TemplateRef, contentChildren, viewChildren, afterRenderEffect, linkedSignal, contentChild } from '@angular/core';
3
- import { CdkOverlayOrigin, CdkConnectedOverlay } from '@angular/cdk/overlay';
4
- import { NgTemplateOutlet } from '@angular/common';
2
+ import { input, booleanAttribute, computed, ViewEncapsulation, ChangeDetectionStrategy, Component, model, output, signal, Injectable, inject, ElementRef, effect, InjectionToken, PLATFORM_ID, DestroyRef, makeEnvironmentProviders, contentChild, afterNextRender, forwardRef, numberAttribute, viewChild, Directive, TemplateRef, contentChildren, viewChildren, afterRenderEffect, linkedSignal } from '@angular/core';
3
+ import { CdkOverlayOrigin, CdkConnectedOverlay, OverlayContainer } from '@angular/cdk/overlay';
4
+ import { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';
5
5
 
6
6
  const _c0$D = ["*"];
7
7
  function KptButton_Conditional_1_Template(rf, ctx) { if (rf & 1) {
@@ -51,14 +51,14 @@ class KptButton {
51
51
  i0.ɵɵattribute("data-variant", ctx.variant())("data-size", ctx.size())("aria-busy", ctx.loading() ? "true" : null);
52
52
  i0.ɵɵadvance();
53
53
  i0.ɵɵconditional(ctx.loading() ? 1 : -1);
54
- } }, styles: ["@layer kpt.components{.kpt-button-host{display:inline-flex}.kpt-button-host--full{display:flex;width:100%}.kpt-button{--%NS%_bg: var(--%NS%kpt-button-filled-bg);--%NS%_fg: var(--%NS%kpt-button-filled-fg);--%NS%_bg-hover: var(--%NS%kpt-button-filled-bg-hover);--%NS%_bg-active: var(--%NS%kpt-button-filled-bg-active);--%NS%_border: transparent;display:inline-flex;align-items:center;justify-content:center;gap:var(--%NS%kpt-button-gap, .5rem);width:100%;box-sizing:border-box;height:var(--%NS%_h, 2.5rem);padding-inline:var(--%NS%_px, 1rem);border:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%_border);border-radius:var(--%NS%kpt-button-radius, .5rem);font-family:inherit;font-size:var(--%NS%_fs, .875rem);font-weight:var(--%NS%kpt-button-font-weight, 500);line-height:1;white-space:nowrap;cursor:pointer;background-color:var(--%NS%_bg);color:var(--%NS%_fg);transition:background-color var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard),border-color var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard),opacity var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-button:hover:not(:disabled){background-color:var(--%NS%_bg-hover)}.kpt-button:active:not(:disabled){background-color:var(--%NS%_bg-active, var(--%NS%_bg-hover))}.kpt-button:disabled{cursor:not-allowed;opacity:.5}.kpt-button[data-size=sm]{--%NS%_h: 2rem;--%NS%_px: .75rem;--%NS%_fs: .8125rem}.kpt-button[data-size=md]{--%NS%_h: 2.5rem;--%NS%_px: 1rem;--%NS%_fs: .875rem}.kpt-button[data-size=lg]{--%NS%_h: 3rem;--%NS%_px: 1.5rem;--%NS%_fs: 1rem}.kpt-button[data-variant=tonal]{--%NS%_bg: var(--%NS%kpt-button-tonal-bg);--%NS%_fg: var(--%NS%kpt-button-tonal-fg);--%NS%_bg-hover: var(--%NS%kpt-button-tonal-bg-hover);--%NS%_bg-active: var(--%NS%kpt-button-tonal-bg-hover)}.kpt-button[data-variant=outline]{--%NS%_bg: transparent;--%NS%_fg: var(--%NS%kpt-button-outline-fg);--%NS%_border: var(--%NS%kpt-button-outline-border);--%NS%_bg-hover: var(--%NS%kpt-button-outline-bg-hover);--%NS%_bg-active: var(--%NS%kpt-button-outline-bg-hover)}.kpt-button[data-variant=text]{--%NS%_bg: transparent;--%NS%_fg: var(--%NS%kpt-button-text-fg);--%NS%_bg-hover: var(--%NS%kpt-button-text-bg-hover);--%NS%_bg-active: var(--%NS%kpt-button-text-bg-hover)}.kpt-button[data-variant=danger]{--%NS%_bg: var(--%NS%kpt-color-danger);--%NS%_fg: var(--%NS%kpt-color-on-danger);--%NS%_bg-hover: color-mix(in oklch, var(--%NS%kpt-color-danger) 88%, black);--%NS%_bg-active: color-mix(in oklch, var(--%NS%kpt-color-danger) 78%, black)}.kpt-button--loading .kpt-button__content{opacity:.75}.kpt-button__spinner{width:1em;height:1em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:kpt-button-spin .6s linear infinite}@media(prefers-reduced-motion:reduce){.kpt-button{transition:none}.kpt-button__spinner{animation-duration:1.4s}}@keyframes kpt-button-spin{to{transform:rotate(360deg)}}}\n"], encapsulation: 2 }); }
54
+ } }, styles: ["@layer kpt.components{.kpt-button-host{display:inline-flex}.kpt-button-host--full{display:flex;width:100%}.kpt-button{--%NS%_bg: var(--%NS%kpt-button-filled-bg);--%NS%_fg: var(--%NS%kpt-button-filled-fg);--%NS%_bg-hover: var(--%NS%kpt-button-filled-bg-hover);--%NS%_bg-active: var(--%NS%kpt-button-filled-bg-active);--%NS%_border: transparent;position:relative;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;gap:var(--%NS%kpt-button-gap, .5rem);width:100%;box-sizing:border-box;height:var(--%NS%_h, 2.5rem);padding-inline:var(--%NS%_px, 1rem);border:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%_border);border-radius:var(--%NS%kpt-button-radius, .5rem);font-family:inherit;font-size:var(--%NS%_fs, .875rem);font-weight:var(--%NS%kpt-button-font-weight, 500);line-height:1;white-space:nowrap;cursor:pointer;background-color:var(--%NS%_bg);color:var(--%NS%_fg);transition:opacity var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-button:after{content:\"\";position:absolute;inset:0;z-index:-1;border-radius:inherit;background-color:var(--%NS%_state, transparent);opacity:0;pointer-events:none;transition:opacity var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard),background-color var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-button:hover:not(:disabled){--%NS%_state: var(--%NS%_bg-hover)}.kpt-button:hover:not(:disabled):after{opacity:1}.kpt-button:active:not(:disabled){--%NS%_state: var(--%NS%_bg-active, var(--%NS%_bg-hover))}.kpt-button:disabled{cursor:not-allowed;opacity:.5}.kpt-button[data-size=sm]{--%NS%_h: 2rem;--%NS%_px: .75rem;--%NS%_fs: .8125rem}.kpt-button[data-size=md]{--%NS%_h: 2.5rem;--%NS%_px: 1rem;--%NS%_fs: .875rem}.kpt-button[data-size=lg]{--%NS%_h: 3rem;--%NS%_px: 1.5rem;--%NS%_fs: 1rem}.kpt-button[data-variant=tonal]{--%NS%_bg: var(--%NS%kpt-button-tonal-bg);--%NS%_fg: var(--%NS%kpt-button-tonal-fg);--%NS%_bg-hover: var(--%NS%kpt-button-tonal-bg-hover);--%NS%_bg-active: var(--%NS%kpt-button-tonal-bg-hover)}.kpt-button[data-variant=outline]{--%NS%_bg: transparent;--%NS%_fg: var(--%NS%kpt-button-outline-fg);--%NS%_border: var(--%NS%kpt-button-outline-border);--%NS%_bg-hover: var(--%NS%kpt-button-outline-bg-hover);--%NS%_bg-active: var(--%NS%kpt-button-outline-bg-hover)}.kpt-button[data-variant=text]{--%NS%_bg: transparent;--%NS%_fg: var(--%NS%kpt-button-text-fg);--%NS%_bg-hover: var(--%NS%kpt-button-text-bg-hover);--%NS%_bg-active: var(--%NS%kpt-button-text-bg-hover)}.kpt-button[data-variant=danger]{--%NS%_bg: var(--%NS%kpt-color-danger);--%NS%_fg: var(--%NS%kpt-color-on-danger);--%NS%_bg-hover: color-mix(in oklch, var(--%NS%kpt-color-danger) 88%, black);--%NS%_bg-active: color-mix(in oklch, var(--%NS%kpt-color-danger) 78%, black)}.kpt-button--loading .kpt-button__content{opacity:.75}.kpt-button__spinner{width:1em;height:1em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:kpt-button-spin .6s linear infinite}@media(prefers-reduced-motion:reduce){.kpt-button{transition:none}.kpt-button:after{transition:none}.kpt-button__spinner{animation-duration:1.4s}}@keyframes kpt-button-spin{to{transform:rotate(360deg)}}}\n"], encapsulation: 2 }); }
55
55
  }
56
56
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptButton, [{
57
57
  type: Component,
58
58
  args: [{ selector: 'kpt-button', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
59
59
  class: 'kpt-button-host',
60
60
  '[class.kpt-button-host--full]': 'fullWidth()',
61
- }, template: "<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", styles: ["@layer kpt.components{.kpt-button-host{display:inline-flex}.kpt-button-host--full{display:flex;width:100%}.kpt-button{--_bg: var(--kpt-button-filled-bg);--_fg: var(--kpt-button-filled-fg);--_bg-hover: var(--kpt-button-filled-bg-hover);--_bg-active: var(--kpt-button-filled-bg-active);--_border: transparent;display:inline-flex;align-items:center;justify-content:center;gap:var(--kpt-button-gap, .5rem);width:100%;box-sizing:border-box;height:var(--_h, 2.5rem);padding-inline:var(--_px, 1rem);border:var(--kpt-border-width-thin, 1px) solid var(--_border);border-radius:var(--kpt-button-radius, .5rem);font-family:inherit;font-size:var(--_fs, .875rem);font-weight:var(--kpt-button-font-weight, 500);line-height:1;white-space:nowrap;cursor:pointer;background-color:var(--_bg);color:var(--_fg);transition:background-color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard),border-color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard),opacity var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-button:hover:not(:disabled){background-color:var(--_bg-hover)}.kpt-button:active:not(:disabled){background-color:var(--_bg-active, var(--_bg-hover))}.kpt-button:disabled{cursor:not-allowed;opacity:.5}.kpt-button[data-size=sm]{--_h: 2rem;--_px: .75rem;--_fs: .8125rem}.kpt-button[data-size=md]{--_h: 2.5rem;--_px: 1rem;--_fs: .875rem}.kpt-button[data-size=lg]{--_h: 3rem;--_px: 1.5rem;--_fs: 1rem}.kpt-button[data-variant=tonal]{--_bg: var(--kpt-button-tonal-bg);--_fg: var(--kpt-button-tonal-fg);--_bg-hover: var(--kpt-button-tonal-bg-hover);--_bg-active: var(--kpt-button-tonal-bg-hover)}.kpt-button[data-variant=outline]{--_bg: transparent;--_fg: var(--kpt-button-outline-fg);--_border: var(--kpt-button-outline-border);--_bg-hover: var(--kpt-button-outline-bg-hover);--_bg-active: var(--kpt-button-outline-bg-hover)}.kpt-button[data-variant=text]{--_bg: transparent;--_fg: var(--kpt-button-text-fg);--_bg-hover: var(--kpt-button-text-bg-hover);--_bg-active: var(--kpt-button-text-bg-hover)}.kpt-button[data-variant=danger]{--_bg: var(--kpt-color-danger);--_fg: var(--kpt-color-on-danger);--_bg-hover: color-mix(in oklch, var(--kpt-color-danger) 88%, black);--_bg-active: color-mix(in oklch, var(--kpt-color-danger) 78%, black)}.kpt-button--loading .kpt-button__content{opacity:.75}.kpt-button__spinner{width:1em;height:1em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:kpt-button-spin .6s linear infinite}@media(prefers-reduced-motion:reduce){.kpt-button{transition:none}.kpt-button__spinner{animation-duration:1.4s}}@keyframes kpt-button-spin{to{transform:rotate(360deg)}}}\n"] }]
61
+ }, template: "<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", styles: ["@layer kpt.components{.kpt-button-host{display:inline-flex}.kpt-button-host--full{display:flex;width:100%}.kpt-button{--_bg: var(--kpt-button-filled-bg);--_fg: var(--kpt-button-filled-fg);--_bg-hover: var(--kpt-button-filled-bg-hover);--_bg-active: var(--kpt-button-filled-bg-active);--_border: transparent;position:relative;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;gap:var(--kpt-button-gap, .5rem);width:100%;box-sizing:border-box;height:var(--_h, 2.5rem);padding-inline:var(--_px, 1rem);border:var(--kpt-border-width-thin, 1px) solid var(--_border);border-radius:var(--kpt-button-radius, .5rem);font-family:inherit;font-size:var(--_fs, .875rem);font-weight:var(--kpt-button-font-weight, 500);line-height:1;white-space:nowrap;cursor:pointer;background-color:var(--_bg);color:var(--_fg);transition:opacity var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-button:after{content:\"\";position:absolute;inset:0;z-index:-1;border-radius:inherit;background-color:var(--_state, transparent);opacity:0;pointer-events:none;transition:opacity var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard),background-color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-button:hover:not(:disabled){--_state: var(--_bg-hover)}.kpt-button:hover:not(:disabled):after{opacity:1}.kpt-button:active:not(:disabled){--_state: var(--_bg-active, var(--_bg-hover))}.kpt-button:disabled{cursor:not-allowed;opacity:.5}.kpt-button[data-size=sm]{--_h: 2rem;--_px: .75rem;--_fs: .8125rem}.kpt-button[data-size=md]{--_h: 2.5rem;--_px: 1rem;--_fs: .875rem}.kpt-button[data-size=lg]{--_h: 3rem;--_px: 1.5rem;--_fs: 1rem}.kpt-button[data-variant=tonal]{--_bg: var(--kpt-button-tonal-bg);--_fg: var(--kpt-button-tonal-fg);--_bg-hover: var(--kpt-button-tonal-bg-hover);--_bg-active: var(--kpt-button-tonal-bg-hover)}.kpt-button[data-variant=outline]{--_bg: transparent;--_fg: var(--kpt-button-outline-fg);--_border: var(--kpt-button-outline-border);--_bg-hover: var(--kpt-button-outline-bg-hover);--_bg-active: var(--kpt-button-outline-bg-hover)}.kpt-button[data-variant=text]{--_bg: transparent;--_fg: var(--kpt-button-text-fg);--_bg-hover: var(--kpt-button-text-bg-hover);--_bg-active: var(--kpt-button-text-bg-hover)}.kpt-button[data-variant=danger]{--_bg: var(--kpt-color-danger);--_fg: var(--kpt-color-on-danger);--_bg-hover: color-mix(in oklch, var(--kpt-color-danger) 88%, black);--_bg-active: color-mix(in oklch, var(--kpt-color-danger) 78%, black)}.kpt-button--loading .kpt-button__content{opacity:.75}.kpt-button__spinner{width:1em;height:1em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:kpt-button-spin .6s linear infinite}@media(prefers-reduced-motion:reduce){.kpt-button{transition:none}.kpt-button:after{transition:none}.kpt-button__spinner{animation-duration:1.4s}}@keyframes kpt-button-spin{to{transform:rotate(360deg)}}}\n"] }]
62
62
  }], null, { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], fullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidth", required: false }] }] }); })();
63
63
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptButton, { className: "KptButton", filePath: "lib/button/button.component.ts", lineNumber: 32 }); })();
64
64
 
@@ -105,7 +105,7 @@ class KptIconButton {
105
105
  i0.ɵɵattribute("data-variant", ctx.variant())("data-size", ctx.size())("data-shape", ctx.shape())("aria-label", ctx.ariaLabel())("aria-busy", ctx.loading() ? "true" : null);
106
106
  i0.ɵɵadvance();
107
107
  i0.ɵɵconditional(ctx.loading() ? 1 : 2);
108
- } }, styles: ["@layer kpt.components{.kpt-icon-button-host{display:inline-flex}.kpt-icon-button{--%NS%_bg: transparent;--%NS%_fg: var(--%NS%kpt-color-on-surface);--%NS%_bg-hover: var(--%NS%kpt-color-muted);display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border:var(--%NS%kpt-border-width-thin, 1px) solid transparent;border-radius:var(--%NS%kpt-radius-full, 9999px);background:var(--%NS%_bg);color:var(--%NS%_fg);cursor:pointer;font-size:1.25rem;transition:background-color var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-icon-button:hover:not(:disabled){background:var(--%NS%_bg-hover)}.kpt-icon-button:disabled{cursor:not-allowed;opacity:.5}.kpt-icon-button[data-shape=square]{border-radius:var(--%NS%kpt-radius-md, .5rem)}.kpt-icon-button[data-size=sm]{width:2rem;height:2rem;font-size:1rem}.kpt-icon-button[data-size=lg]{width:3rem;height:3rem;font-size:1.5rem}.kpt-icon-button[data-variant=filled]{--%NS%_bg: var(--%NS%kpt-color-primary);--%NS%_fg: var(--%NS%kpt-color-on-primary);--%NS%_bg-hover: var(--%NS%kpt-color-primary-hover)}.kpt-icon-button[data-variant=tonal]{--%NS%_bg: var(--%NS%kpt-color-muted);--%NS%_fg: var(--%NS%kpt-color-on-muted);--%NS%_bg-hover: var(--%NS%kpt-color-muted-hover)}.kpt-icon-button[data-variant=outline]{border-color:var(--%NS%kpt-color-border-strong)}.kpt-icon-button[data-variant=danger]{--%NS%_bg: var(--%NS%kpt-color-danger);--%NS%_fg: var(--%NS%kpt-color-on-danger);--%NS%_bg-hover: color-mix(in oklch, var(--%NS%kpt-color-danger) 88%, black)}.kpt-icon-button__spinner{width:1em;height:1em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:kpt-spinner-rotate .6s linear infinite}}\n"], encapsulation: 2 }); }
108
+ } }, styles: ["@layer kpt.components{.kpt-icon-button-host{display:inline-flex}.kpt-icon-button{--%NS%_bg: transparent;--%NS%_fg: var(--%NS%kpt-color-on-surface);--%NS%_bg-hover: var(--%NS%kpt-color-muted);position:relative;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border:var(--%NS%kpt-border-width-thin, 1px) solid transparent;border-radius:var(--%NS%kpt-radius-full, 9999px);background:var(--%NS%_bg);color:var(--%NS%_fg);cursor:pointer;font-size:1.25rem}.kpt-icon-button:after{content:\"\";position:absolute;inset:0;z-index:-1;border-radius:inherit;background-color:var(--%NS%_bg-hover);opacity:0;pointer-events:none;transition:opacity var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-icon-button:hover:not(:disabled):after{opacity:1}.kpt-icon-button:disabled{cursor:not-allowed;opacity:.5}.kpt-icon-button[data-shape=square]{border-radius:var(--%NS%kpt-radius-md, .5rem)}.kpt-icon-button[data-size=sm]{width:2rem;height:2rem;font-size:1rem}.kpt-icon-button[data-size=lg]{width:3rem;height:3rem;font-size:1.5rem}.kpt-icon-button[data-variant=filled]{--%NS%_bg: var(--%NS%kpt-color-primary);--%NS%_fg: var(--%NS%kpt-color-on-primary);--%NS%_bg-hover: var(--%NS%kpt-color-primary-hover)}.kpt-icon-button[data-variant=tonal]{--%NS%_bg: var(--%NS%kpt-color-muted);--%NS%_fg: var(--%NS%kpt-color-on-muted);--%NS%_bg-hover: var(--%NS%kpt-color-muted-hover)}.kpt-icon-button[data-variant=outline]{border-color:var(--%NS%kpt-color-border-strong)}.kpt-icon-button[data-variant=danger]{--%NS%_bg: var(--%NS%kpt-color-danger);--%NS%_fg: var(--%NS%kpt-color-on-danger);--%NS%_bg-hover: color-mix(in oklch, var(--%NS%kpt-color-danger) 88%, black)}@media(prefers-reduced-motion:reduce){.kpt-icon-button:after{transition:none}}.kpt-icon-button__spinner{width:1em;height:1em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:kpt-spinner-rotate .6s linear infinite}}\n"], encapsulation: 2 }); }
109
109
  }
110
110
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptIconButton, [{
111
111
  type: Component,
@@ -126,7 +126,7 @@ class KptIconButton {
126
126
  <ng-content />
127
127
  }
128
128
  </button>
129
- `, host: { class: 'kpt-icon-button-host' }, styles: ["@layer kpt.components{.kpt-icon-button-host{display:inline-flex}.kpt-icon-button{--_bg: transparent;--_fg: var(--kpt-color-on-surface);--_bg-hover: var(--kpt-color-muted);display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border:var(--kpt-border-width-thin, 1px) solid transparent;border-radius:var(--kpt-radius-full, 9999px);background:var(--_bg);color:var(--_fg);cursor:pointer;font-size:1.25rem;transition:background-color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-icon-button:hover:not(:disabled){background:var(--_bg-hover)}.kpt-icon-button:disabled{cursor:not-allowed;opacity:.5}.kpt-icon-button[data-shape=square]{border-radius:var(--kpt-radius-md, .5rem)}.kpt-icon-button[data-size=sm]{width:2rem;height:2rem;font-size:1rem}.kpt-icon-button[data-size=lg]{width:3rem;height:3rem;font-size:1.5rem}.kpt-icon-button[data-variant=filled]{--_bg: var(--kpt-color-primary);--_fg: var(--kpt-color-on-primary);--_bg-hover: var(--kpt-color-primary-hover)}.kpt-icon-button[data-variant=tonal]{--_bg: var(--kpt-color-muted);--_fg: var(--kpt-color-on-muted);--_bg-hover: var(--kpt-color-muted-hover)}.kpt-icon-button[data-variant=outline]{border-color:var(--kpt-color-border-strong)}.kpt-icon-button[data-variant=danger]{--_bg: var(--kpt-color-danger);--_fg: var(--kpt-color-on-danger);--_bg-hover: color-mix(in oklch, var(--kpt-color-danger) 88%, black)}.kpt-icon-button__spinner{width:1em;height:1em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:kpt-spinner-rotate .6s linear infinite}}\n"] }]
129
+ `, host: { class: 'kpt-icon-button-host' }, styles: ["@layer kpt.components{.kpt-icon-button-host{display:inline-flex}.kpt-icon-button{--_bg: transparent;--_fg: var(--kpt-color-on-surface);--_bg-hover: var(--kpt-color-muted);position:relative;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border:var(--kpt-border-width-thin, 1px) solid transparent;border-radius:var(--kpt-radius-full, 9999px);background:var(--_bg);color:var(--_fg);cursor:pointer;font-size:1.25rem}.kpt-icon-button:after{content:\"\";position:absolute;inset:0;z-index:-1;border-radius:inherit;background-color:var(--_bg-hover);opacity:0;pointer-events:none;transition:opacity var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-icon-button:hover:not(:disabled):after{opacity:1}.kpt-icon-button:disabled{cursor:not-allowed;opacity:.5}.kpt-icon-button[data-shape=square]{border-radius:var(--kpt-radius-md, .5rem)}.kpt-icon-button[data-size=sm]{width:2rem;height:2rem;font-size:1rem}.kpt-icon-button[data-size=lg]{width:3rem;height:3rem;font-size:1.5rem}.kpt-icon-button[data-variant=filled]{--_bg: var(--kpt-color-primary);--_fg: var(--kpt-color-on-primary);--_bg-hover: var(--kpt-color-primary-hover)}.kpt-icon-button[data-variant=tonal]{--_bg: var(--kpt-color-muted);--_fg: var(--kpt-color-on-muted);--_bg-hover: var(--kpt-color-muted-hover)}.kpt-icon-button[data-variant=outline]{border-color:var(--kpt-color-border-strong)}.kpt-icon-button[data-variant=danger]{--_bg: var(--kpt-color-danger);--_fg: var(--kpt-color-on-danger);--_bg-hover: color-mix(in oklch, var(--kpt-color-danger) 88%, black)}@media(prefers-reduced-motion:reduce){.kpt-icon-button:after{transition:none}}.kpt-icon-button__spinner{width:1em;height:1em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:kpt-spinner-rotate .6s linear infinite}}\n"] }]
130
130
  }], null, { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: true }] }] }); })();
131
131
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptIconButton, { className: "KptIconButton", filePath: "lib/icon-button/icon-button.component.ts", lineNumber: 36 }); })();
132
132
 
@@ -234,7 +234,7 @@ class KptFab {
234
234
  i0.ɵɵclassProp("kpt-fab--extended", ctx.extended());
235
235
  i0.ɵɵdomProperty("type", ctx.type())("disabled", ctx.disabled());
236
236
  i0.ɵɵattribute("data-variant", ctx.variant())("data-size", ctx.size())("aria-label", ctx.extended() ? null : ctx.ariaLabel());
237
- } }, styles: ["@layer kpt.components{.kpt-fab-host{display:inline-flex}.kpt-fab{--%NS%_bg: var(--%NS%kpt-color-primary);--%NS%_fg: var(--%NS%kpt-color-on-primary);--%NS%_bg-hover: var(--%NS%kpt-color-primary-hover);display:inline-flex;align-items:center;justify-content:center;gap:var(--%NS%kpt-space-2, .5rem);width:3.5rem;height:3.5rem;border:0;border-radius:var(--%NS%kpt-radius-lg, .75rem);background:var(--%NS%_bg);color:var(--%NS%_fg);box-shadow:var(--%NS%kpt-elevation-3);cursor:pointer;font:inherit;font-size:1.5rem;font-weight:var(--%NS%kpt-font-weight-medium, 500);transition:background-color var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard),box-shadow var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-fab:hover:not(:disabled){background:var(--%NS%_bg-hover);box-shadow:var(--%NS%kpt-elevation-4)}.kpt-fab:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.kpt-fab[data-variant=tonal]{--%NS%_bg: var(--%NS%kpt-color-muted);--%NS%_fg: var(--%NS%kpt-color-on-muted);--%NS%_bg-hover: var(--%NS%kpt-color-muted-hover)}.kpt-fab[data-size=mini]{width:2.5rem;height:2.5rem;font-size:1.15rem;border-radius:var(--%NS%kpt-radius-md, .5rem)}.kpt-fab--extended{width:auto;padding-inline:var(--%NS%kpt-space-5, 1.25rem);font-size:var(--%NS%kpt-font-size-sm, .875rem);border-radius:var(--%NS%kpt-radius-full, 9999px)}}\n"], encapsulation: 2 }); }
237
+ } }, styles: ["@layer kpt.components{.kpt-fab-host{display:inline-flex}.kpt-fab{--%NS%_bg: var(--%NS%kpt-color-primary);--%NS%_fg: var(--%NS%kpt-color-on-primary);--%NS%_bg-hover: var(--%NS%kpt-color-primary-hover);display:inline-flex;align-items:center;justify-content:center;gap:var(--%NS%kpt-space-2, .5rem);width:3.5rem;height:3.5rem;border:0;border-radius:var(--%NS%kpt-radius-lg, .75rem);background:var(--%NS%_bg);color:var(--%NS%_fg);box-shadow:var(--%NS%kpt-elevation-3);cursor:pointer;font:inherit;font-size:1.5rem;font-weight:var(--%NS%kpt-font-weight-medium, 500);position:relative;isolation:isolate;transition:box-shadow var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-fab:after{content:\"\";position:absolute;inset:0;z-index:-1;border-radius:inherit;background-color:var(--%NS%_bg-hover);opacity:0;pointer-events:none;transition:opacity var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-fab:hover:not(:disabled){box-shadow:var(--%NS%kpt-elevation-4)}.kpt-fab:hover:not(:disabled):after{opacity:1}.kpt-fab:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}@media(prefers-reduced-motion:reduce){.kpt-fab{transition:none}.kpt-fab:after{transition:none}}.kpt-fab[data-variant=tonal]{--%NS%_bg: var(--%NS%kpt-color-muted);--%NS%_fg: var(--%NS%kpt-color-on-muted);--%NS%_bg-hover: var(--%NS%kpt-color-muted-hover)}.kpt-fab[data-size=mini]{width:2.5rem;height:2.5rem;font-size:1.15rem;border-radius:var(--%NS%kpt-radius-md, .5rem)}.kpt-fab--extended{width:auto;padding-inline:var(--%NS%kpt-space-5, 1.25rem);font-size:var(--%NS%kpt-font-size-sm, .875rem);border-radius:var(--%NS%kpt-radius-full, 9999px)}}\n"], encapsulation: 2 }); }
238
238
  }
239
239
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptFab, [{
240
240
  type: Component,
@@ -248,10 +248,296 @@ class KptFab {
248
248
  [disabled]="disabled()"
249
249
  [attr.aria-label]="extended() ? null : ariaLabel()"
250
250
  ><ng-content /></button>
251
- `, host: { class: 'kpt-fab-host' }, styles: ["@layer kpt.components{.kpt-fab-host{display:inline-flex}.kpt-fab{--_bg: var(--kpt-color-primary);--_fg: var(--kpt-color-on-primary);--_bg-hover: var(--kpt-color-primary-hover);display:inline-flex;align-items:center;justify-content:center;gap:var(--kpt-space-2, .5rem);width:3.5rem;height:3.5rem;border:0;border-radius:var(--kpt-radius-lg, .75rem);background:var(--_bg);color:var(--_fg);box-shadow:var(--kpt-elevation-3);cursor:pointer;font:inherit;font-size:1.5rem;font-weight:var(--kpt-font-weight-medium, 500);transition:background-color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard),box-shadow var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-fab:hover:not(:disabled){background:var(--_bg-hover);box-shadow:var(--kpt-elevation-4)}.kpt-fab:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.kpt-fab[data-variant=tonal]{--_bg: var(--kpt-color-muted);--_fg: var(--kpt-color-on-muted);--_bg-hover: var(--kpt-color-muted-hover)}.kpt-fab[data-size=mini]{width:2.5rem;height:2.5rem;font-size:1.15rem;border-radius:var(--kpt-radius-md, .5rem)}.kpt-fab--extended{width:auto;padding-inline:var(--kpt-space-5, 1.25rem);font-size:var(--kpt-font-size-sm, .875rem);border-radius:var(--kpt-radius-full, 9999px)}}\n"] }]
251
+ `, host: { class: 'kpt-fab-host' }, styles: ["@layer kpt.components{.kpt-fab-host{display:inline-flex}.kpt-fab{--_bg: var(--kpt-color-primary);--_fg: var(--kpt-color-on-primary);--_bg-hover: var(--kpt-color-primary-hover);display:inline-flex;align-items:center;justify-content:center;gap:var(--kpt-space-2, .5rem);width:3.5rem;height:3.5rem;border:0;border-radius:var(--kpt-radius-lg, .75rem);background:var(--_bg);color:var(--_fg);box-shadow:var(--kpt-elevation-3);cursor:pointer;font:inherit;font-size:1.5rem;font-weight:var(--kpt-font-weight-medium, 500);position:relative;isolation:isolate;transition:box-shadow var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-fab:after{content:\"\";position:absolute;inset:0;z-index:-1;border-radius:inherit;background-color:var(--_bg-hover);opacity:0;pointer-events:none;transition:opacity var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-fab:hover:not(:disabled){box-shadow:var(--kpt-elevation-4)}.kpt-fab:hover:not(:disabled):after{opacity:1}.kpt-fab:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}@media(prefers-reduced-motion:reduce){.kpt-fab{transition:none}.kpt-fab:after{transition:none}}.kpt-fab[data-variant=tonal]{--_bg: var(--kpt-color-muted);--_fg: var(--kpt-color-on-muted);--_bg-hover: var(--kpt-color-muted-hover)}.kpt-fab[data-size=mini]{width:2.5rem;height:2.5rem;font-size:1.15rem;border-radius:var(--kpt-radius-md, .5rem)}.kpt-fab--extended{width:auto;padding-inline:var(--kpt-space-5, 1.25rem);font-size:var(--kpt-font-size-sm, .875rem);border-radius:var(--kpt-radius-full, 9999px)}}\n"] }]
252
252
  }], null, { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], extended: [{ type: i0.Input, args: [{ isSignal: true, alias: "extended", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] }); })();
253
253
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptFab, { className: "KptFab", filePath: "lib/fab/fab.component.ts", lineNumber: 28 }); })();
254
254
 
255
+ const KPT_ICONS = {
256
+ 'menu': '<path d="M4 6l16 0" /> <path d="M4 12l16 0" /> <path d="M4 18l16 0" />',
257
+ 'x': '<path d="M18 6l-12 12" /> <path d="M6 6l12 12" />',
258
+ 'chevron-up': '<path d="M6 15l6 -6l6 6" />',
259
+ 'chevron-down': '<path d="M6 9l6 6l6 -6" />',
260
+ 'chevron-left': '<path d="M15 6l-6 6l6 6" />',
261
+ 'chevron-right': '<path d="M9 6l6 6l-6 6" />',
262
+ 'check': '<path d="M5 12l5 5l10 -10" />',
263
+ 'search': '<path d="M3 10a7 7 0 1 0 14 0a7 7 0 1 0 -14 0" /> <path d="M21 21l-6 -6" />',
264
+ '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" />',
265
+ '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" />',
266
+ '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" />',
267
+ 'circle-check': '<path d="M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0" /> <path d="M9 12l2 2l4 -4" />',
268
+ '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" />',
269
+ '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" />',
270
+ '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" />',
271
+ '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" />',
272
+ 'code': '<path d="M7 8l-4 4l4 4" /> <path d="M17 8l4 4l-4 4" /> <path d="M14 4l-4 16" />',
273
+ '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" />',
274
+ 'italic': '<path d="M11 5l6 0" /> <path d="M7 19l6 0" /> <path d="M14 5l-4 14" />',
275
+ 'underline': '<path d="M7 5v5a5 5 0 0 0 10 0v-5" /> <path d="M5 19h14" />',
276
+ '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" />',
277
+ '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" />',
278
+ '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" />',
279
+ '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" />',
280
+ '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" />',
281
+ 'plus': '<path d="M12 5l0 14" /> <path d="M5 12l14 0" />',
282
+ '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" />',
283
+ '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" />',
284
+ '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" />',
285
+ '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" />',
286
+ 'pencil': '<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" /> <path d="M13.5 6.5l4 4" />',
287
+ '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" />',
288
+ '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" />',
289
+ 'minus': '<path d="M5 12l14 0" />',
290
+ 'arrow-up': '<path d="M12 5l0 14" /> <path d="M18 11l-6 -6" /> <path d="M6 11l6 -6" />',
291
+ 'arrow-down': '<path d="M12 5l0 14" /> <path d="M18 13l-6 6" /> <path d="M6 13l6 6" />',
292
+ '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" />',
293
+ '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" />',
294
+ 'phone': '<path d="M5 4h4l2 5l-2.5 1.5a11 11 0 0 0 5 5l1.5 -2.5l5 2v4a2 2 0 0 1 -2 2a16 16 0 0 1 -15 -15a2 2 0 0 1 2 -2" />',
295
+ 'map-pin': '<path d="M9 11a3 3 0 1 0 6 0a3 3 0 0 0 -6 0" /> <path d="M17.657 16.657l-4.243 4.243a2 2 0 0 1 -2.827 0l-4.244 -4.243a8 8 0 1 1 11.314 0z" />',
296
+ 'world': '<path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0" /> <path d="M3.6 9h16.8" /> <path d="M3.6 15h16.8" /> <path d="M11.5 3a17 17 0 0 0 0 18" /> <path d="M12.5 3a17 17 0 0 1 0 18" />',
297
+ 'clock': '<path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0" /> <path d="M12 7v5l3 3" />',
298
+ 'align-left': '<path d="M4 6l16 0" /> <path d="M4 12l10 0" /> <path d="M4 18l14 0" />',
299
+ 'align-center': '<path d="M4 6l16 0" /> <path d="M8 12l8 0" /> <path d="M6 18l12 0" />',
300
+ 'align-right': '<path d="M4 6l16 0" /> <path d="M10 12l10 0" /> <path d="M6 18l14 0" />',
301
+ 'align-justified': '<path d="M4 6l16 0" /> <path d="M4 12l16 0" /> <path d="M4 18l12 0" />',
302
+ 'palette': '<path d="M12 21a9 9 0 0 1 0 -18a9 8 0 0 1 9 8a4.5 4 0 0 1 -4.5 4h-2.5a2 2 0 0 0 -1 3.75a1.3 1.3 0 0 1 -1 2.25" /> <path d="M8.5 10.5a1 1 0 1 0 2 0a1 1 0 0 0 -2 0" /> <path d="M12.5 7.5a1 1 0 1 0 2 0a1 1 0 0 0 -2 0" /> <path d="M16.5 10.5a1 1 0 1 0 2 0a1 1 0 0 0 -2 0" />',
303
+ 'highlight': '<path d="M3 19h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" /> <path d="M12.5 5.5l4 4" /> <path d="M4.5 13.5l4 4" /> <path d="M21 15v4h-8" />',
304
+ 'clipboard': '<path d="M9 5h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-2" /> <path d="M9 3m0 2a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v0a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2z" />',
305
+ 'clipboard-text': '<path d="M9 5h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-2" /> <path d="M9 3m0 2a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v0a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2z" /> <path d="M9 12h6" /> <path d="M9 16h6" />',
306
+ 'table': '<path d="M3 5a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-14z" /> <path d="M3 10h18" /> <path d="M10 3v18" />',
307
+ 'mail': '<path d="M3 7a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-10z" /> <path d="M3 7l9 6l9 -6" />',
308
+ 'share': '<path d="M6 12m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" /> <path d="M18 6m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" /> <path d="M18 18m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" /> <path d="M8.7 10.7l6.6 -3.4" /> <path d="M8.7 13.3l6.6 3.4" />',
309
+ 'external-link': '<path d="M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6" /> <path d="M11 13l9 -9" /> <path d="M15 4h5v5" />',
310
+ 'crosshair': '<path d="M4 12h4" /> <path d="M16 12h4" /> <path d="M12 4v4" /> <path d="M12 16v4" /> <path d="M12 12m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0" />',
311
+ };
312
+
313
+ /**
314
+ * Rejestr ikon dla `kpt-icon`. Zawiera wbudowany zestaw (używany przez komponenty).
315
+ * Aby dodać pełny zestaw Tabler (5130 ikon), użyj `provideKptTablerIcons()`
316
+ * z `@konce-pt/angular/icons` lub zarejestruj własne przez `register()`.
317
+ */
318
+ class KptIconRegistry {
319
+ constructor() {
320
+ this.icons = new Map(Object.entries(KPT_ICONS));
321
+ this._version = signal(0, /* @ts-ignore */
322
+ ...(ngDevMode ? [{ debugName: "_version" }] : /* istanbul ignore next */ []));
323
+ /** Rośnie po każdej rejestracji — pozwala `kpt-icon` reagować na późne dodanie ikon. */
324
+ this.version = this._version.asReadonly();
325
+ }
326
+ /** Rejestruje (lub nadpisuje) ikony: `{ nazwa: 'inner svg' }`. */
327
+ register(icons) {
328
+ for (const [name, svg] of Object.entries(icons)) {
329
+ this.icons.set(name, svg);
330
+ }
331
+ this._version.update((v) => v + 1);
332
+ }
333
+ /** Zwraca wewnętrzny SVG ikony lub undefined. */
334
+ get(name) {
335
+ return this.icons.get(name);
336
+ }
337
+ has(name) {
338
+ return this.icons.has(name);
339
+ }
340
+ static { this.ɵfac = function KptIconRegistry_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptIconRegistry)(); }; }
341
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: KptIconRegistry, factory: KptIconRegistry.ɵfac, providedIn: 'root' }); }
342
+ }
343
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptIconRegistry, [{
344
+ type: Injectable,
345
+ args: [{ providedIn: 'root' }]
346
+ }], null, null); })();
347
+ /**
348
+ * Składa pełny znacznik `<svg>` z wewnętrznego SVG z rejestru.
349
+ *
350
+ * Wydzielone z `kpt-icon`, bo tego samego stringa potrzebują znaczniki mapy —
351
+ * ich HTML powstaje poza Angularem, w DOM zarządzanym przez silnik mapy.
352
+ * Pusty `inner` daje pusty string, żeby wołający nie musiał tego sprawdzać.
353
+ */
354
+ function renderKptIconSvg(inner, cssClass = 'kpt-icon') {
355
+ if (!inner)
356
+ return '';
357
+ return (`<svg class="${cssClass}" viewBox="0 0 24 24" fill="none" stroke="currentColor"` +
358
+ ' stroke-width="2" stroke-linecap="round" stroke-linejoin="round">' +
359
+ inner +
360
+ '</svg>');
361
+ }
362
+
363
+ /**
364
+ * Ikona Koncept UI (inline SVG, zestaw Tabler Icons — MIT). Rozmiar dziedziczy z `font-size`
365
+ * (1em) lub ustaw `size`; kolor z `currentColor`. Ikona musi być w rejestrze
366
+ * ([[KptIconRegistry]]) — wbudowany zestaw działa od razu, pełny zestaw dodaje
367
+ * `provideKptTablerIcons()` z `@konce-pt/angular/icons`.
368
+ *
369
+ * @example
370
+ * <kpt-icon name="menu" />
371
+ * <kpt-icon name="check" size="1.25rem" />
372
+ */
373
+ class KptIcon {
374
+ constructor() {
375
+ /** Nazwa ikony z rejestru (wbudowana lub zarejestrowana). */
376
+ this.name = input.required(/* @ts-ignore */
377
+ ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
378
+ /** Rozmiar jako długość CSS (np. '1.25rem'); domyślnie dziedziczy z font-size. */
379
+ this.size = input('', /* @ts-ignore */
380
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
381
+ this.host = inject(ElementRef);
382
+ this.registry = inject(KptIconRegistry);
383
+ effect(() => {
384
+ this.registry.version(); // reaguj na późną rejestrację ikon
385
+ // Treść pochodzi z zaufanego rejestru — bezpośredni innerHTML bez sanitizera.
386
+ this.host.nativeElement.innerHTML = renderKptIconSvg(this.registry.get(this.name()));
387
+ });
388
+ }
389
+ static { this.ɵfac = function KptIcon_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptIcon)(); }; }
390
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptIcon, selectors: [["kpt-icon"]], hostAttrs: ["aria-hidden", "true", 1, "kpt-icon-host"], hostVars: 2, hostBindings: function KptIcon_HostBindings(rf, ctx) { if (rf & 2) {
391
+ i0.ɵɵstyleProp("font-size", ctx.size() || null);
392
+ } }, inputs: { name: [1, "name"], size: [1, "size"] }, decls: 0, vars: 0, template: function KptIcon_Template(rf, ctx) { }, styles: ["@layer kpt.components{.kpt-icon-host{display:inline-flex;align-items:center;justify-content:center;line-height:0;flex-shrink:0}.kpt-icon{width:1em;height:1em}}\n"], encapsulation: 2 }); }
393
+ }
394
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptIcon, [{
395
+ type: Component,
396
+ args: [{ selector: 'kpt-icon', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: '', host: {
397
+ class: 'kpt-icon-host',
398
+ 'aria-hidden': 'true',
399
+ '[style.font-size]': 'size() || null',
400
+ }, styles: ["@layer kpt.components{.kpt-icon-host{display:inline-flex;align-items:center;justify-content:center;line-height:0;flex-shrink:0}.kpt-icon{width:1em;height:1em}}\n"] }]
401
+ }], () => [], { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] }); })();
402
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptIcon, { className: "KptIcon", filePath: "lib/icon/icon.component.ts", lineNumber: 26 }); })();
403
+
404
+ function KptAvatar_Conditional_1_Template(rf, ctx) { if (rf & 1) {
405
+ i0.ɵɵelement(0, "img", 1);
406
+ } if (rf & 2) {
407
+ const ctx_r0 = i0.ɵɵnextContext();
408
+ i0.ɵɵproperty("src", ctx_r0.src(), i0.ɵɵsanitizeUrl)("alt", ctx_r0.name() || "");
409
+ } }
410
+ function KptAvatar_Conditional_2_Template(rf, ctx) { if (rf & 1) {
411
+ i0.ɵɵelementStart(0, "span", 2);
412
+ i0.ɵɵtext(1);
413
+ i0.ɵɵelementEnd();
414
+ } if (rf & 2) {
415
+ const ctx_r0 = i0.ɵɵnextContext();
416
+ i0.ɵɵadvance();
417
+ i0.ɵɵtextInterpolate(ctx_r0.initials());
418
+ } }
419
+ function KptAvatar_Conditional_3_Template(rf, ctx) { if (rf & 1) {
420
+ i0.ɵɵelement(0, "kpt-icon", 3);
421
+ } if (rf & 2) {
422
+ const ctx_r0 = i0.ɵɵnextContext();
423
+ i0.ɵɵproperty("name", ctx_r0.icon());
424
+ } }
425
+ /**
426
+ * Awatar — obraz, inicjały (z `name`) lub ikona.
427
+ *
428
+ * @example
429
+ * <kpt-avatar src="/u/anna.jpg" />
430
+ * <kpt-avatar name="Anna Kowalska" size="lg" />
431
+ * <kpt-avatar icon="user" shape="square" />
432
+ */
433
+ class KptAvatar {
434
+ constructor() {
435
+ this.src = input(null, /* @ts-ignore */
436
+ ...(ngDevMode ? [{ debugName: "src" }] : /* istanbul ignore next */ []));
437
+ this.name = input('', /* @ts-ignore */
438
+ ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
439
+ this.icon = input(null, /* @ts-ignore */
440
+ ...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
441
+ this.size = input('md', /* @ts-ignore */
442
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
443
+ this.shape = input('circle', /* @ts-ignore */
444
+ ...(ngDevMode ? [{ debugName: "shape" }] : /* istanbul ignore next */ []));
445
+ this.initials = computed(() => this.name()
446
+ .trim()
447
+ .split(/\s+/)
448
+ .slice(0, 2)
449
+ .map((w) => w[0]?.toUpperCase() ?? '')
450
+ .join(''), /* @ts-ignore */
451
+ ...(ngDevMode ? [{ debugName: "initials" }] : /* istanbul ignore next */ []));
452
+ }
453
+ static { this.ɵfac = function KptAvatar_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptAvatar)(); }; }
454
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptAvatar, selectors: [["kpt-avatar"]], hostAttrs: [1, "kpt-avatar-host"], inputs: { src: [1, "src"], name: [1, "name"], icon: [1, "icon"], size: [1, "size"], shape: [1, "shape"] }, decls: 4, vars: 3, consts: [[1, "kpt-avatar"], [1, "kpt-avatar__img", 3, "src", "alt"], [1, "kpt-avatar__initials"], [3, "name"]], template: function KptAvatar_Template(rf, ctx) { if (rf & 1) {
455
+ i0.ɵɵelementStart(0, "span", 0);
456
+ i0.ɵɵconditionalCreate(1, KptAvatar_Conditional_1_Template, 1, 2, "img", 1)(2, KptAvatar_Conditional_2_Template, 2, 1, "span", 2)(3, KptAvatar_Conditional_3_Template, 1, 1, "kpt-icon", 3);
457
+ i0.ɵɵelementEnd();
458
+ } if (rf & 2) {
459
+ i0.ɵɵattribute("data-size", ctx.size())("data-shape", ctx.shape());
460
+ i0.ɵɵadvance();
461
+ i0.ɵɵconditional(ctx.src() ? 1 : ctx.name() ? 2 : ctx.icon() ? 3 : -1);
462
+ } }, dependencies: [KptIcon], styles: ["@layer kpt.components{.kpt-avatar-host{display:inline-flex;vertical-align:middle}.kpt-avatar{--%NS%_size: 2.5rem;display:inline-flex;align-items:center;justify-content:center;width:var(--%NS%_size);height:var(--%NS%_size);border-radius:var(--%NS%kpt-radius-full, 9999px);background:var(--%NS%kpt-color-muted);color:var(--%NS%kpt-color-on-muted);font-weight:var(--%NS%kpt-font-weight-semibold, 600);font-size:calc(var(--%NS%_size) * .4);overflow:hidden;-webkit-user-select:none;user-select:none}.kpt-avatar[data-size=sm]{--%NS%_size: 2rem}.kpt-avatar[data-size=md]{--%NS%_size: 2.5rem}.kpt-avatar[data-size=lg]{--%NS%_size: 3rem}.kpt-avatar[data-size=xl]{--%NS%_size: 4rem}.kpt-avatar[data-shape=square]{border-radius:var(--%NS%kpt-radius-md, .5rem)}.kpt-avatar__img{width:100%;height:100%;object-fit:cover}}\n"], encapsulation: 2 }); }
463
+ }
464
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptAvatar, [{
465
+ type: Component,
466
+ args: [{ selector: 'kpt-avatar', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [KptIcon], template: `
467
+ <span class="kpt-avatar" [attr.data-size]="size()" [attr.data-shape]="shape()">
468
+ @if (src()) {
469
+ <img class="kpt-avatar__img" [src]="src()" [alt]="name() || ''" />
470
+ } @else if (name()) {
471
+ <span class="kpt-avatar__initials">{{ initials() }}</span>
472
+ } @else if (icon()) {
473
+ <kpt-icon [name]="icon()!" />
474
+ }
475
+ </span>
476
+ `, host: { class: 'kpt-avatar-host' }, styles: ["@layer kpt.components{.kpt-avatar-host{display:inline-flex;vertical-align:middle}.kpt-avatar{--_size: 2.5rem;display:inline-flex;align-items:center;justify-content:center;width:var(--_size);height:var(--_size);border-radius:var(--kpt-radius-full, 9999px);background:var(--kpt-color-muted);color:var(--kpt-color-on-muted);font-weight:var(--kpt-font-weight-semibold, 600);font-size:calc(var(--_size) * .4);overflow:hidden;-webkit-user-select:none;user-select:none}.kpt-avatar[data-size=sm]{--_size: 2rem}.kpt-avatar[data-size=md]{--_size: 2.5rem}.kpt-avatar[data-size=lg]{--_size: 3rem}.kpt-avatar[data-size=xl]{--_size: 4rem}.kpt-avatar[data-shape=square]{border-radius:var(--kpt-radius-md, .5rem)}.kpt-avatar__img{width:100%;height:100%;object-fit:cover}}\n"] }]
477
+ }], null, { src: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }] }); })();
478
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptAvatar, { className: "KptAvatar", filePath: "lib/avatar/avatar.component.ts", lineNumber: 34 }); })();
479
+
480
+ const _c0$A = ["*"];
481
+ /**
482
+ * Znacznik (badge) — licznik lub kropka statusu. Standalone lub nałożony na treść (`overlay`).
483
+ *
484
+ * @example
485
+ * <kpt-badge [value]="3" variant="danger" />
486
+ * <kpt-badge [value]="4" size="sm" variant="success" />
487
+ * <kpt-badge [value]="128" overlay><kpt-icon name="menu" /></kpt-badge>
488
+ * <kpt-badge dot variant="success" overlay><kpt-avatar name="AK" /></kpt-badge>
489
+ */
490
+ class KptBadge {
491
+ constructor() {
492
+ this.value = input(null, /* @ts-ignore */
493
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
494
+ this.variant = input('primary', /* @ts-ignore */
495
+ ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
496
+ /** Rozmiar — `sm` mieści się w wierszu tekstu, `md` to domyślny licznik. */
497
+ this.size = input('md', /* @ts-ignore */
498
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
499
+ this.dot = input(false, { ...(ngDevMode ? { debugName: "dot" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
500
+ this.overlay = input(false, { ...(ngDevMode ? { debugName: "overlay" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
501
+ this.max = input(99, /* @ts-ignore */
502
+ ...(ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []));
503
+ this.display = computed(() => {
504
+ const v = this.value();
505
+ if (typeof v === 'number' && v > this.max())
506
+ return `${this.max()}+`;
507
+ return v ?? '';
508
+ }, /* @ts-ignore */
509
+ ...(ngDevMode ? [{ debugName: "display" }] : /* istanbul ignore next */ []));
510
+ }
511
+ static { this.ɵfac = function KptBadge_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptBadge)(); }; }
512
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptBadge, selectors: [["kpt-badge"]], hostAttrs: [1, "kpt-badge-host"], inputs: { value: [1, "value"], variant: [1, "variant"], size: [1, "size"], dot: [1, "dot"], overlay: [1, "overlay"], max: [1, "max"] }, ngContentSelectors: _c0$A, decls: 3, vars: 7, consts: [[1, "kpt-badge"]], template: function KptBadge_Template(rf, ctx) { if (rf & 1) {
513
+ i0.ɵɵprojectionDef();
514
+ i0.ɵɵprojection(0);
515
+ i0.ɵɵdomElementStart(1, "span", 0);
516
+ i0.ɵɵtext(2);
517
+ i0.ɵɵdomElementEnd();
518
+ } if (rf & 2) {
519
+ i0.ɵɵadvance();
520
+ i0.ɵɵclassProp("kpt-badge--overlay", ctx.overlay())("kpt-badge--dot", ctx.dot());
521
+ i0.ɵɵattribute("data-variant", ctx.variant())("data-size", ctx.size());
522
+ i0.ɵɵadvance();
523
+ i0.ɵɵtextInterpolate(ctx.dot() ? "" : ctx.display());
524
+ } }, styles: ["@charset \"UTF-8\";@layer kpt.components{.kpt-badge-host{position:relative;display:inline-flex;vertical-align:middle}.kpt-badge{--%NS%_bg: var(--%NS%kpt-color-primary);--%NS%_fg: var(--%NS%kpt-color-on-primary);--%NS%_size: 1.25rem;--%NS%_padding: .35rem;display:inline-flex;align-items:center;justify-content:center;min-width:var(--%NS%_size);height:var(--%NS%_size);padding-inline:var(--%NS%_padding);box-sizing:border-box;border-radius:var(--%NS%kpt-radius-full, 9999px);background:var(--%NS%_bg);color:var(--%NS%_fg);font-size:calc(var(--%NS%_size) * .6);font-weight:var(--%NS%kpt-font-weight-semibold, 600);line-height:1}.kpt-badge[data-size=sm]{--%NS%_size: 1rem;--%NS%_padding: .28rem}.kpt-badge[data-size=md]{--%NS%_size: 1.25rem;--%NS%_padding: .35rem}.kpt-badge[data-size=lg]{--%NS%_size: 1.5rem;--%NS%_padding: .45rem}.kpt-badge[data-variant=neutral]{--%NS%_bg: var(--%NS%kpt-color-muted);--%NS%_fg: var(--%NS%kpt-color-on-muted)}.kpt-badge[data-variant=success]{--%NS%_bg: var(--%NS%kpt-color-success);--%NS%_fg: var(--%NS%kpt-color-surface)}.kpt-badge[data-variant=danger]{--%NS%_bg: var(--%NS%kpt-color-danger);--%NS%_fg: var(--%NS%kpt-color-on-danger)}.kpt-badge[data-variant=warning]{--%NS%_bg: var(--%NS%kpt-color-warning);--%NS%_fg: var(--%NS%kpt-color-surface)}.kpt-badge[data-variant=info]{--%NS%_bg: var(--%NS%kpt-color-info);--%NS%_fg: var(--%NS%kpt-color-surface)}.kpt-badge--dot{min-width:0;width:calc(var(--%NS%_size) * .52);height:calc(var(--%NS%_size) * .52);padding:0}.kpt-badge--overlay{position:absolute;top:0;inset-inline-end:0;transform:translate(35%,-35%);box-shadow:0 0 0 2px var(--%NS%kpt-color-surface)}}\n"], encapsulation: 2 }); }
525
+ }
526
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptBadge, [{
527
+ type: Component,
528
+ args: [{ selector: 'kpt-badge', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: `
529
+ <ng-content />
530
+ <span
531
+ class="kpt-badge"
532
+ [attr.data-variant]="variant()"
533
+ [attr.data-size]="size()"
534
+ [class.kpt-badge--overlay]="overlay()"
535
+ [class.kpt-badge--dot]="dot()"
536
+ >{{ dot() ? '' : display() }}</span>
537
+ `, host: { class: 'kpt-badge-host' }, styles: ["@charset \"UTF-8\";@layer kpt.components{.kpt-badge-host{position:relative;display:inline-flex;vertical-align:middle}.kpt-badge{--_bg: var(--kpt-color-primary);--_fg: var(--kpt-color-on-primary);--_size: 1.25rem;--_padding: .35rem;display:inline-flex;align-items:center;justify-content:center;min-width:var(--_size);height:var(--_size);padding-inline:var(--_padding);box-sizing:border-box;border-radius:var(--kpt-radius-full, 9999px);background:var(--_bg);color:var(--_fg);font-size:calc(var(--_size) * .6);font-weight:var(--kpt-font-weight-semibold, 600);line-height:1}.kpt-badge[data-size=sm]{--_size: 1rem;--_padding: .28rem}.kpt-badge[data-size=md]{--_size: 1.25rem;--_padding: .35rem}.kpt-badge[data-size=lg]{--_size: 1.5rem;--_padding: .45rem}.kpt-badge[data-variant=neutral]{--_bg: var(--kpt-color-muted);--_fg: var(--kpt-color-on-muted)}.kpt-badge[data-variant=success]{--_bg: var(--kpt-color-success);--_fg: var(--kpt-color-surface)}.kpt-badge[data-variant=danger]{--_bg: var(--kpt-color-danger);--_fg: var(--kpt-color-on-danger)}.kpt-badge[data-variant=warning]{--_bg: var(--kpt-color-warning);--_fg: var(--kpt-color-surface)}.kpt-badge[data-variant=info]{--_bg: var(--kpt-color-info);--_fg: var(--kpt-color-surface)}.kpt-badge--dot{min-width:0;width:calc(var(--_size) * .52);height:calc(var(--_size) * .52);padding:0}.kpt-badge--overlay{position:absolute;top:0;inset-inline-end:0;transform:translate(35%,-35%);box-shadow:0 0 0 2px var(--kpt-color-surface)}}\n"] }]
538
+ }], null, { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], dot: [{ type: i0.Input, args: [{ isSignal: true, alias: "dot", required: false }] }], overlay: [{ type: i0.Input, args: [{ isSignal: true, alias: "overlay", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }] }); })();
539
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptBadge, { className: "KptBadge", filePath: "lib/badge/badge.component.ts", lineNumber: 32 }); })();
540
+
255
541
  /** Token konfiguracji i18n. Konsumowany przez `KptI18n`. */
256
542
  const KPT_I18N_CONFIG = new InjectionToken('KPT_I18N_CONFIG');
257
543
 
@@ -305,6 +591,75 @@ const KPT_MESSAGES_EN = {
305
591
  expandGroup: 'Expand group',
306
592
  collapseGroup: 'Collapse group',
307
593
  },
594
+ map: {
595
+ addLocation: 'Add location',
596
+ chooseCategory: 'Choose a category',
597
+ myLocation: 'My location',
598
+ locateMe: 'Centre on my location',
599
+ locationDenied: 'Location access denied',
600
+ locationUnavailable: 'Location unavailable',
601
+ zoomIn: 'Zoom in',
602
+ zoomOut: 'Zoom out',
603
+ legend: 'Legend',
604
+ showCategory: 'Show {category}',
605
+ hideCategory: 'Hide {category}',
606
+ cluster: 'Group of {count} locations',
607
+ clusterItems: 'Locations in this group',
608
+ fieldRequired: '{label} is required',
609
+ lookingUpAddress: 'Looking up the address…',
610
+ addressNotFound: 'No address found for this point',
611
+ latitude: 'Latitude',
612
+ longitude: 'Longitude',
613
+ empty: 'No locations',
614
+ save: 'Save',
615
+ cancel: 'Cancel',
616
+ poi: {
617
+ distanceAway: '{distance} away',
618
+ openNow: 'Open',
619
+ closedNow: 'Closed',
620
+ opensAt: 'opens at {time}',
621
+ closesAt: 'closes at {time}',
622
+ alwaysOpen: 'Open 24/7',
623
+ openingHours: 'Opening hours',
624
+ closedDay: 'Closed',
625
+ call: 'Call',
626
+ sendEmail: 'Send an e-mail',
627
+ openWebsite: 'Open the website',
628
+ coordinates: 'Coordinates',
629
+ copy: 'Copy',
630
+ copied: 'Copied',
631
+ share: 'Share',
632
+ addFavourite: 'Add to favourites',
633
+ removeFavourite: 'Remove from favourites',
634
+ noPhoto: 'No photo',
635
+ },
636
+ search: {
637
+ placeholder: 'Search for an address…',
638
+ label: 'Search for an address',
639
+ results: 'Address suggestions',
640
+ clear: 'Clear the search',
641
+ noResults: 'No matching places',
642
+ minLength: 'Type at least {count} characters',
643
+ searching: 'Searching…',
644
+ found: '{count} suggestions',
645
+ },
646
+ field: {
647
+ invalidEmail: 'Enter a valid e-mail address',
648
+ invalidUrl: 'Enter an address starting with http:// or https://',
649
+ imageTooLarge: 'The picture must be no larger than {max}',
650
+ pickImage: 'Pick a picture',
651
+ orPasteUrl: 'or paste a picture address',
652
+ removeImage: 'Remove the picture',
653
+ imagePreview: 'Picture preview',
654
+ hoursClosed: 'Closed',
655
+ hoursFrom: 'From',
656
+ hoursTo: 'To',
657
+ hoursSameAllWeek: 'Same all week',
658
+ hoursAddRange: 'Add a second range',
659
+ hoursRemoveRange: 'Remove the range',
660
+ hoursIncomplete: 'Set both times for {day} or mark the day as closed',
661
+ },
662
+ },
308
663
  dataTable: {
309
664
  search: 'Search…',
310
665
  exportCsv: 'Export CSV',
@@ -387,6 +742,10 @@ const KPT_MESSAGES_EN = {
387
742
  panel: {
388
743
  toggle: 'Collapse / expand',
389
744
  },
745
+ appShell: {
746
+ toggleNavigation: 'Toggle navigation',
747
+ navigation: 'Main navigation',
748
+ },
390
749
  breadcrumb: {
391
750
  label: 'breadcrumb',
392
751
  },
@@ -493,6 +852,75 @@ const KPT_MESSAGES_PL = {
493
852
  expandGroup: 'Rozwiń grupę',
494
853
  collapseGroup: 'Zwiń grupę',
495
854
  },
855
+ map: {
856
+ addLocation: 'Dodaj lokalizację',
857
+ chooseCategory: 'Wybierz kategorię',
858
+ myLocation: 'Moje położenie',
859
+ locateMe: 'Wyśrodkuj na moim położeniu',
860
+ locationDenied: 'Brak zgody na dostęp do lokalizacji',
861
+ locationUnavailable: 'Położenie niedostępne',
862
+ zoomIn: 'Przybliż',
863
+ zoomOut: 'Oddal',
864
+ legend: 'Legenda',
865
+ showCategory: 'Pokaż: {category}',
866
+ hideCategory: 'Ukryj: {category}',
867
+ cluster: 'Grupa {count} lokalizacji',
868
+ clusterItems: 'Lokalizacje w tej grupie',
869
+ fieldRequired: 'Pole „{label}" jest wymagane',
870
+ lookingUpAddress: 'Szukam adresu…',
871
+ addressNotFound: 'Nie znaleziono adresu dla tego punktu',
872
+ latitude: 'Szerokość',
873
+ longitude: 'Długość',
874
+ empty: 'Brak lokalizacji',
875
+ save: 'Zapisz',
876
+ cancel: 'Anuluj',
877
+ poi: {
878
+ distanceAway: '{distance} od Ciebie',
879
+ openNow: 'Otwarte',
880
+ closedNow: 'Zamknięte',
881
+ opensAt: 'otwarcie o {time}',
882
+ closesAt: 'zamknięcie o {time}',
883
+ alwaysOpen: 'Czynne całą dobę',
884
+ openingHours: 'Godziny otwarcia',
885
+ closedDay: 'Zamknięte',
886
+ call: 'Zadzwoń',
887
+ sendEmail: 'Napisz wiadomość',
888
+ openWebsite: 'Otwórz stronę',
889
+ coordinates: 'Współrzędne',
890
+ copy: 'Kopiuj',
891
+ copied: 'Skopiowano',
892
+ share: 'Udostępnij',
893
+ addFavourite: 'Dodaj do ulubionych',
894
+ removeFavourite: 'Usuń z ulubionych',
895
+ noPhoto: 'Brak zdjęcia',
896
+ },
897
+ search: {
898
+ placeholder: 'Szukaj adresu…',
899
+ label: 'Szukaj adresu',
900
+ results: 'Podpowiedzi adresów',
901
+ clear: 'Wyczyść wyszukiwanie',
902
+ noResults: 'Brak pasujących miejsc',
903
+ minLength: 'Wpisz więcej znaków (minimum: {count})',
904
+ searching: 'Szukam…',
905
+ found: 'Podpowiedzi: {count}',
906
+ },
907
+ field: {
908
+ invalidEmail: 'Podaj poprawny adres e-mail',
909
+ invalidUrl: 'Podaj adres zaczynający się od http:// albo https://',
910
+ imageTooLarge: 'Zdjęcie może mieć najwyżej {max}',
911
+ pickImage: 'Wybierz zdjęcie',
912
+ orPasteUrl: 'albo wklej adres zdjęcia',
913
+ removeImage: 'Usuń zdjęcie',
914
+ imagePreview: 'Podgląd zdjęcia',
915
+ hoursClosed: 'Zamknięte',
916
+ hoursFrom: 'Od',
917
+ hoursTo: 'Do',
918
+ hoursSameAllWeek: 'Tak samo przez cały tydzień',
919
+ hoursAddRange: 'Dodaj drugi przedział',
920
+ hoursRemoveRange: 'Usuń przedział',
921
+ hoursIncomplete: 'Podaj obie godziny dla dnia {day} albo oznacz go jako zamknięty',
922
+ },
923
+ },
496
924
  dataTable: {
497
925
  search: 'Szukaj…',
498
926
  exportCsv: 'Eksport CSV',
@@ -575,6 +1003,10 @@ const KPT_MESSAGES_PL = {
575
1003
  panel: {
576
1004
  toggle: 'Zwiń / rozwiń',
577
1005
  },
1006
+ appShell: {
1007
+ toggleNavigation: 'Przełącz nawigację',
1008
+ navigation: 'Nawigacja główna',
1009
+ },
578
1010
  breadcrumb: {
579
1011
  label: 'breadcrumb',
580
1012
  },
@@ -710,198 +1142,131 @@ class KptI18n {
710
1142
  return raw;
711
1143
  return raw.replace(/\{(\w+)\}/g, (_, name) => String(params[name] ?? `{${name}}`));
712
1144
  }
713
- lookup(dict, key) {
714
- let node = dict;
715
- for (const part of key.split('.')) {
716
- if (node && typeof node === 'object' && part in node) {
717
- node = node[part];
718
- }
719
- else {
720
- return undefined;
721
- }
722
- }
723
- return typeof node === 'string' ? node : undefined;
724
- }
725
- static { this.ɵfac = function KptI18n_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptI18n)(); }; }
726
- static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: KptI18n, factory: KptI18n.ɵfac, providedIn: 'root' }); }
727
- }
728
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptI18n, [{
729
- type: Injectable,
730
- args: [{ providedIn: 'root' }]
731
- }], () => [], null); })();
732
-
733
- const KPT_ICONS = {
734
- 'menu': '<path d="M4 6l16 0" /> <path d="M4 12l16 0" /> <path d="M4 18l16 0" />',
735
- 'x': '<path d="M18 6l-12 12" /> <path d="M6 6l12 12" />',
736
- 'chevron-up': '<path d="M6 15l6 -6l6 6" />',
737
- 'chevron-down': '<path d="M6 9l6 6l6 -6" />',
738
- 'chevron-left': '<path d="M15 6l-6 6l6 6" />',
739
- 'chevron-right': '<path d="M9 6l6 6l-6 6" />',
740
- 'check': '<path d="M5 12l5 5l10 -10" />',
741
- 'search': '<path d="M3 10a7 7 0 1 0 14 0a7 7 0 1 0 -14 0" /> <path d="M21 21l-6 -6" />',
742
- '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" />',
743
- '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" />',
744
- '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" />',
745
- 'circle-check': '<path d="M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0" /> <path d="M9 12l2 2l4 -4" />',
746
- '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" />',
747
- '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" />',
748
- '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" />',
749
- '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" />',
750
- 'code': '<path d="M7 8l-4 4l4 4" /> <path d="M17 8l4 4l-4 4" /> <path d="M14 4l-4 16" />',
751
- '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" />',
752
- 'italic': '<path d="M11 5l6 0" /> <path d="M7 19l6 0" /> <path d="M14 5l-4 14" />',
753
- 'underline': '<path d="M7 5v5a5 5 0 0 0 10 0v-5" /> <path d="M5 19h14" />',
754
- '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" />',
755
- '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" />',
756
- '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" />',
757
- '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" />',
758
- '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" />',
759
- 'plus': '<path d="M12 5l0 14" /> <path d="M5 12l14 0" />',
760
- '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" />',
761
- '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" />',
762
- '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" />',
763
- '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" />',
764
- 'pencil': '<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" /> <path d="M13.5 6.5l4 4" />',
765
- '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" />',
766
- '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" />',
767
- 'minus': '<path d="M5 12l14 0" />',
768
- 'arrow-up': '<path d="M12 5l0 14" /> <path d="M18 11l-6 -6" /> <path d="M6 11l6 -6" />',
769
- 'arrow-down': '<path d="M12 5l0 14" /> <path d="M18 13l-6 6" /> <path d="M6 13l6 6" />',
770
- '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" />',
771
- '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" />',
772
- 'phone': '<path d="M5 4h4l2 5l-2.5 1.5a11 11 0 0 0 5 5l1.5 -2.5l5 2v4a2 2 0 0 1 -2 2a16 16 0 0 1 -15 -15a2 2 0 0 1 2 -2" />',
773
- 'map-pin': '<path d="M9 11a3 3 0 1 0 6 0a3 3 0 0 0 -6 0" /> <path d="M17.657 16.657l-4.243 4.243a2 2 0 0 1 -2.827 0l-4.244 -4.243a8 8 0 1 1 11.314 0z" />',
774
- 'world': '<path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0" /> <path d="M3.6 9h16.8" /> <path d="M3.6 15h16.8" /> <path d="M11.5 3a17 17 0 0 0 0 18" /> <path d="M12.5 3a17 17 0 0 1 0 18" />',
775
- 'clock': '<path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0" /> <path d="M12 7v5l3 3" />',
776
- 'align-left': '<path d="M4 6l16 0" /> <path d="M4 12l10 0" /> <path d="M4 18l14 0" />',
777
- 'align-center': '<path d="M4 6l16 0" /> <path d="M8 12l8 0" /> <path d="M6 18l12 0" />',
778
- 'align-right': '<path d="M4 6l16 0" /> <path d="M10 12l10 0" /> <path d="M6 18l14 0" />',
779
- 'align-justified': '<path d="M4 6l16 0" /> <path d="M4 12l16 0" /> <path d="M4 18l12 0" />',
780
- 'palette': '<path d="M12 21a9 9 0 0 1 0 -18a9 8 0 0 1 9 8a4.5 4 0 0 1 -4.5 4h-2.5a2 2 0 0 0 -1 3.75a1.3 1.3 0 0 1 -1 2.25" /> <path d="M8.5 10.5a1 1 0 1 0 2 0a1 1 0 0 0 -2 0" /> <path d="M12.5 7.5a1 1 0 1 0 2 0a1 1 0 0 0 -2 0" /> <path d="M16.5 10.5a1 1 0 1 0 2 0a1 1 0 0 0 -2 0" />',
781
- 'highlight': '<path d="M3 19h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" /> <path d="M12.5 5.5l4 4" /> <path d="M4.5 13.5l4 4" /> <path d="M21 15v4h-8" />',
782
- 'clipboard': '<path d="M9 5h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-2" /> <path d="M9 3m0 2a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v0a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2z" />',
783
- 'clipboard-text': '<path d="M9 5h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-2" /> <path d="M9 3m0 2a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v0a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2z" /> <path d="M9 12h6" /> <path d="M9 16h6" />',
784
- 'table': '<path d="M3 5a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-14z" /> <path d="M3 10h18" /> <path d="M10 3v18" />',
785
- };
786
-
787
- /**
788
- * Rejestr ikon dla `kpt-icon`. Zawiera wbudowany zestaw (używany przez komponenty).
789
- * Aby dodać pełny zestaw Tabler (5130 ikon), użyj `provideKptTablerIcons()`
790
- * z `@konce-pt/angular/icons` lub zarejestruj własne przez `register()`.
791
- */
792
- class KptIconRegistry {
793
- constructor() {
794
- this.icons = new Map(Object.entries(KPT_ICONS));
795
- this._version = signal(0, /* @ts-ignore */
796
- ...(ngDevMode ? [{ debugName: "_version" }] : /* istanbul ignore next */ []));
797
- /** Rośnie po każdej rejestracji — pozwala `kpt-icon` reagować na późne dodanie ikon. */
798
- this.version = this._version.asReadonly();
799
- }
800
- /** Rejestruje (lub nadpisuje) ikony: `{ nazwa: 'inner svg' }`. */
801
- register(icons) {
802
- for (const [name, svg] of Object.entries(icons)) {
803
- this.icons.set(name, svg);
804
- }
805
- this._version.update((v) => v + 1);
806
- }
807
- /** Zwraca wewnętrzny SVG ikony lub undefined. */
808
- get(name) {
809
- return this.icons.get(name);
810
- }
811
- has(name) {
812
- return this.icons.has(name);
813
- }
814
- static { this.ɵfac = function KptIconRegistry_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptIconRegistry)(); }; }
815
- static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: KptIconRegistry, factory: KptIconRegistry.ɵfac, providedIn: 'root' }); }
816
- }
817
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptIconRegistry, [{
818
- type: Injectable,
819
- args: [{ providedIn: 'root' }]
820
- }], null, null); })();
821
-
822
- /**
823
- * Ikona Koncept UI (inline SVG, zestaw Tabler Icons — MIT). Rozmiar dziedziczy z `font-size`
824
- * (1em) lub ustaw `size`; kolor z `currentColor`. Ikona musi być w rejestrze
825
- * ([[KptIconRegistry]]) — wbudowany zestaw działa od razu, pełny zestaw dodaje
826
- * `provideKptTablerIcons()` z `@konce-pt/angular/icons`.
827
- *
828
- * @example
829
- * <kpt-icon name="menu" />
830
- * <kpt-icon name="check" size="1.25rem" />
831
- */
832
- class KptIcon {
833
- constructor() {
834
- /** Nazwa ikony z rejestru (wbudowana lub zarejestrowana). */
835
- this.name = input.required(/* @ts-ignore */
836
- ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
837
- /** Rozmiar jako długość CSS (np. '1.25rem'); domyślnie dziedziczy z font-size. */
838
- this.size = input('', /* @ts-ignore */
839
- ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
840
- this.host = inject(ElementRef);
841
- this.registry = inject(KptIconRegistry);
842
- effect(() => {
843
- this.registry.version(); // reaguj na późną rejestrację ikon
844
- const inner = this.registry.get(this.name()) ?? '';
845
- // Treść pochodzi z zaufanego rejestru — bezpośredni innerHTML bez sanitizera.
846
- this.host.nativeElement.innerHTML = inner
847
- ? '<svg class="kpt-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor"' +
848
- ' stroke-width="2" stroke-linecap="round" stroke-linejoin="round">' +
849
- inner +
850
- '</svg>'
851
- : '';
852
- });
853
- }
854
- static { this.ɵfac = function KptIcon_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptIcon)(); }; }
855
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptIcon, selectors: [["kpt-icon"]], hostAttrs: ["aria-hidden", "true", 1, "kpt-icon-host"], hostVars: 2, hostBindings: function KptIcon_HostBindings(rf, ctx) { if (rf & 2) {
856
- i0.ɵɵstyleProp("font-size", ctx.size() || null);
857
- } }, inputs: { name: [1, "name"], size: [1, "size"] }, decls: 0, vars: 0, template: function KptIcon_Template(rf, ctx) { }, styles: ["@layer kpt.components{.kpt-icon-host{display:inline-flex;align-items:center;justify-content:center;line-height:0;flex-shrink:0}.kpt-icon{width:1em;height:1em}}\n"], encapsulation: 2 }); }
1145
+ lookup(dict, key) {
1146
+ let node = dict;
1147
+ for (const part of key.split('.')) {
1148
+ if (node && typeof node === 'object' && part in node) {
1149
+ node = node[part];
1150
+ }
1151
+ else {
1152
+ return undefined;
1153
+ }
1154
+ }
1155
+ return typeof node === 'string' ? node : undefined;
1156
+ }
1157
+ static { this.ɵfac = function KptI18n_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptI18n)(); }; }
1158
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: KptI18n, factory: KptI18n.ɵfac, providedIn: 'root' }); }
858
1159
  }
859
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptIcon, [{
860
- type: Component,
861
- args: [{ selector: 'kpt-icon', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: '', host: {
862
- class: 'kpt-icon-host',
863
- 'aria-hidden': 'true',
864
- '[style.font-size]': 'size() || null',
865
- }, styles: ["@layer kpt.components{.kpt-icon-host{display:inline-flex;align-items:center;justify-content:center;line-height:0;flex-shrink:0}.kpt-icon{width:1em;height:1em}}\n"] }]
866
- }], () => [], { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] }); })();
867
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptIcon, { className: "KptIcon", filePath: "lib/icon/icon.component.ts", lineNumber: 26 }); })();
1160
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptI18n, [{
1161
+ type: Injectable,
1162
+ args: [{ providedIn: 'root' }]
1163
+ }], () => [], null); })();
868
1164
 
869
- const _c0$A = ["*"];
1165
+ const _c0$z = ["*"];
870
1166
  function KptSplitButton_ng_template_6_For_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
871
1167
  i0.ɵɵelement(0, "div", 7);
872
1168
  } }
873
1169
  function KptSplitButton_ng_template_6_For_2_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
874
- i0.ɵɵelement(0, "kpt-icon", 10);
1170
+ i0.ɵɵelement(0, "kpt-avatar", 10);
875
1171
  } if (rf & 2) {
876
- const item_r2 = i0.ɵɵnextContext(2).$implicit;
877
- i0.ɵɵproperty("name", item_r2.icon);
1172
+ const item_r1 = i0.ɵɵnextContext(2).$implicit;
1173
+ i0.ɵɵproperty("src", item_r1.avatar.src ?? null)("name", item_r1.avatar.name ?? "")("icon", item_r1.avatar.icon ?? null);
1174
+ } }
1175
+ function KptSplitButton_ng_template_6_For_2_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1176
+ i0.ɵɵelement(0, "kpt-icon", 11);
1177
+ } if (rf & 2) {
1178
+ const item_r1 = i0.ɵɵnextContext(2).$implicit;
1179
+ i0.ɵɵproperty("name", item_r1.icon);
1180
+ } }
1181
+ function KptSplitButton_ng_template_6_For_2_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
1182
+ i0.ɵɵelementStart(0, "span", 13);
1183
+ i0.ɵɵtext(1);
1184
+ i0.ɵɵelementEnd();
1185
+ } if (rf & 2) {
1186
+ const item_r1 = i0.ɵɵnextContext(2).$implicit;
1187
+ i0.ɵɵadvance();
1188
+ i0.ɵɵtextInterpolate(item_r1.label);
1189
+ } }
1190
+ function KptSplitButton_ng_template_6_For_2_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1191
+ i0.ɵɵelementStart(0, "span", 14);
1192
+ i0.ɵɵtext(1);
1193
+ i0.ɵɵelementEnd();
1194
+ } if (rf & 2) {
1195
+ const item_r1 = i0.ɵɵnextContext(2).$implicit;
1196
+ i0.ɵɵadvance();
1197
+ i0.ɵɵtextInterpolate(item_r1.description);
878
1198
  } }
879
1199
  function KptSplitButton_ng_template_6_For_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
880
- const _r1 = i0.ɵɵgetCurrentView();
881
- i0.ɵɵelementStart(0, "button", 9);
882
- i0.ɵɵlistener("click", function KptSplitButton_ng_template_6_For_2_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); const item_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.pick(item_r2)); });
883
- i0.ɵɵconditionalCreate(1, KptSplitButton_ng_template_6_For_2_Conditional_1_Conditional_1_Template, 1, 1, "kpt-icon", 10);
884
- i0.ɵɵelementStart(2, "span");
885
- i0.ɵɵtext(3);
1200
+ i0.ɵɵelementStart(0, "div", 8);
1201
+ i0.ɵɵconditionalCreate(1, KptSplitButton_ng_template_6_For_2_Conditional_1_Conditional_1_Template, 1, 3, "kpt-avatar", 10)(2, KptSplitButton_ng_template_6_For_2_Conditional_1_Conditional_2_Template, 1, 1, "kpt-icon", 11);
1202
+ i0.ɵɵelementStart(3, "span", 12);
1203
+ i0.ɵɵconditionalCreate(4, KptSplitButton_ng_template_6_For_2_Conditional_1_Conditional_4_Template, 2, 1, "span", 13);
1204
+ i0.ɵɵconditionalCreate(5, KptSplitButton_ng_template_6_For_2_Conditional_1_Conditional_5_Template, 2, 1, "span", 14);
886
1205
  i0.ɵɵelementEnd()();
887
1206
  } if (rf & 2) {
888
- const item_r2 = i0.ɵɵnextContext().$implicit;
889
- i0.ɵɵclassProp("kpt-split-button__item--danger", item_r2.danger);
890
- i0.ɵɵproperty("disabled", item_r2.disabled);
1207
+ const item_r1 = i0.ɵɵnextContext().$implicit;
891
1208
  i0.ɵɵadvance();
892
- i0.ɵɵconditional(item_r2.icon ? 1 : -1);
893
- i0.ɵɵadvance(2);
894
- i0.ɵɵtextInterpolate(item_r2.label);
1209
+ i0.ɵɵconditional(item_r1.avatar ? 1 : item_r1.icon ? 2 : -1);
1210
+ i0.ɵɵadvance(3);
1211
+ i0.ɵɵconditional(item_r1.label ? 4 : -1);
1212
+ i0.ɵɵadvance();
1213
+ i0.ɵɵconditional(item_r1.description ? 5 : -1);
1214
+ } }
1215
+ function KptSplitButton_ng_template_6_For_2_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1216
+ i0.ɵɵelement(0, "kpt-icon", 11);
1217
+ } if (rf & 2) {
1218
+ const item_r1 = i0.ɵɵnextContext(2).$implicit;
1219
+ i0.ɵɵproperty("name", item_r1.icon);
1220
+ } }
1221
+ function KptSplitButton_ng_template_6_For_2_Conditional_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1222
+ i0.ɵɵelementStart(0, "span", 14);
1223
+ i0.ɵɵtext(1);
1224
+ i0.ɵɵelementEnd();
1225
+ } if (rf & 2) {
1226
+ const item_r1 = i0.ɵɵnextContext(2).$implicit;
1227
+ i0.ɵɵadvance();
1228
+ i0.ɵɵtextInterpolate(item_r1.description);
1229
+ } }
1230
+ function KptSplitButton_ng_template_6_For_2_Conditional_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1231
+ i0.ɵɵelement(0, "kpt-badge", 16);
1232
+ } if (rf & 2) {
1233
+ const item_r1 = i0.ɵɵnextContext(2).$implicit;
1234
+ i0.ɵɵproperty("value", item_r1.badge)("variant", item_r1.badgeVariant ?? "primary");
1235
+ } }
1236
+ function KptSplitButton_ng_template_6_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1237
+ const _r2 = i0.ɵɵgetCurrentView();
1238
+ i0.ɵɵelementStart(0, "button", 15);
1239
+ i0.ɵɵlistener("click", function KptSplitButton_ng_template_6_For_2_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r2); const item_r1 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.pick(item_r1)); });
1240
+ i0.ɵɵconditionalCreate(1, KptSplitButton_ng_template_6_For_2_Conditional_2_Conditional_1_Template, 1, 1, "kpt-icon", 11);
1241
+ i0.ɵɵelementStart(2, "span", 12)(3, "span", 13);
1242
+ i0.ɵɵtext(4);
1243
+ i0.ɵɵelementEnd();
1244
+ i0.ɵɵconditionalCreate(5, KptSplitButton_ng_template_6_For_2_Conditional_2_Conditional_5_Template, 2, 1, "span", 14);
1245
+ i0.ɵɵelementEnd();
1246
+ i0.ɵɵconditionalCreate(6, KptSplitButton_ng_template_6_For_2_Conditional_2_Conditional_6_Template, 1, 2, "kpt-badge", 16);
1247
+ i0.ɵɵelementEnd();
1248
+ } if (rf & 2) {
1249
+ const item_r1 = i0.ɵɵnextContext().$implicit;
1250
+ i0.ɵɵclassProp("kpt-split-button__item--danger", item_r1.danger);
1251
+ i0.ɵɵproperty("disabled", item_r1.disabled);
1252
+ i0.ɵɵadvance();
1253
+ i0.ɵɵconditional(item_r1.icon ? 1 : -1);
1254
+ i0.ɵɵadvance(3);
1255
+ i0.ɵɵtextInterpolate(item_r1.label);
1256
+ i0.ɵɵadvance();
1257
+ i0.ɵɵconditional(item_r1.description ? 5 : -1);
1258
+ i0.ɵɵadvance();
1259
+ i0.ɵɵconditional(item_r1.badge !== undefined && item_r1.badge !== null ? 6 : -1);
895
1260
  } }
896
1261
  function KptSplitButton_ng_template_6_For_2_Template(rf, ctx) { if (rf & 1) {
897
- i0.ɵɵconditionalCreate(0, KptSplitButton_ng_template_6_For_2_Conditional_0_Template, 1, 0, "div", 7)(1, KptSplitButton_ng_template_6_For_2_Conditional_1_Template, 4, 5, "button", 8);
1262
+ i0.ɵɵconditionalCreate(0, KptSplitButton_ng_template_6_For_2_Conditional_0_Template, 1, 0, "div", 7)(1, KptSplitButton_ng_template_6_For_2_Conditional_1_Template, 6, 3, "div", 8)(2, KptSplitButton_ng_template_6_For_2_Conditional_2_Template, 7, 7, "button", 9);
898
1263
  } if (rf & 2) {
899
- const item_r2 = ctx.$implicit;
900
- i0.ɵɵconditional(item_r2.separator ? 0 : 1);
1264
+ const item_r1 = ctx.$implicit;
1265
+ i0.ɵɵconditional(item_r1.separator ? 0 : item_r1.header ? 1 : 2);
901
1266
  } }
902
1267
  function KptSplitButton_ng_template_6_Template(rf, ctx) { if (rf & 1) {
903
1268
  i0.ɵɵelementStart(0, "div", 6);
904
- i0.ɵɵrepeaterCreate(1, KptSplitButton_ng_template_6_For_2_Template, 2, 1, null, null, i0.ɵɵrepeaterTrackByIndex);
1269
+ i0.ɵɵrepeaterCreate(1, KptSplitButton_ng_template_6_For_2_Template, 3, 1, null, null, i0.ɵɵrepeaterTrackByIndex);
905
1270
  i0.ɵɵelementEnd();
906
1271
  } if (rf & 2) {
907
1272
  const ctx_r2 = i0.ɵɵnextContext();
@@ -939,7 +1304,7 @@ class KptSplitButton {
939
1304
  this.open.set(false);
940
1305
  }
941
1306
  static { this.ɵfac = function KptSplitButton_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptSplitButton)(); }; }
942
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptSplitButton, selectors: [["kpt-split-button"]], hostAttrs: [1, "kpt-split-button-host"], inputs: { variant: [1, "variant"], items: [1, "items"], disabled: [1, "disabled"] }, outputs: { primaryClick: "primaryClick", select: "select" }, ngContentSelectors: _c0$A, decls: 7, vars: 8, consts: [["origin", "cdkOverlayOrigin"], [1, "kpt-split-button"], ["type", "button", 1, "kpt-split-button__main", 3, "click", "disabled"], ["type", "button", "cdkOverlayOrigin", "", 1, "kpt-split-button__toggle", 3, "click", "disabled"], ["name", "chevron-down"], ["cdkConnectedOverlay", "", "cdkConnectedOverlayBackdropClass", "cdk-overlay-transparent-backdrop", 3, "backdropClick", "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen", "cdkConnectedOverlayPositions", "cdkConnectedOverlayHasBackdrop"], ["role", "menu", 1, "kpt-split-button__panel"], ["role", "separator", 1, "kpt-split-button__separator"], ["type", "button", 1, "kpt-split-button__item", 3, "kpt-split-button__item--danger", "disabled"], ["type", "button", 1, "kpt-split-button__item", 3, "click", "disabled"], [3, "name"]], template: function KptSplitButton_Template(rf, ctx) { if (rf & 1) {
1307
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptSplitButton, selectors: [["kpt-split-button"]], hostAttrs: [1, "kpt-split-button-host"], inputs: { variant: [1, "variant"], items: [1, "items"], disabled: [1, "disabled"] }, outputs: { primaryClick: "primaryClick", select: "select" }, ngContentSelectors: _c0$z, decls: 7, vars: 8, consts: [["origin", "cdkOverlayOrigin"], [1, "kpt-split-button"], ["type", "button", 1, "kpt-split-button__main", 3, "click", "disabled"], ["type", "button", "cdkOverlayOrigin", "", 1, "kpt-split-button__toggle", 3, "click", "disabled"], ["name", "chevron-down"], ["cdkConnectedOverlay", "", "cdkConnectedOverlayBackdropClass", "cdk-overlay-transparent-backdrop", 3, "backdropClick", "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen", "cdkConnectedOverlayPositions", "cdkConnectedOverlayHasBackdrop"], ["role", "menu", 1, "kpt-split-button__panel"], ["role", "separator", 1, "kpt-split-button__separator"], ["role", "presentation", 1, "kpt-split-button__header"], ["type", "button", 1, "kpt-split-button__item", 3, "kpt-split-button__item--danger", "disabled"], ["size", "sm", 3, "src", "name", "icon"], [3, "name"], [1, "kpt-split-button__text"], [1, "kpt-split-button__label"], [1, "kpt-split-button__description"], ["type", "button", 1, "kpt-split-button__item", 3, "click", "disabled"], [1, "kpt-split-button__badge", 3, "value", "variant"]], template: function KptSplitButton_Template(rf, ctx) { if (rf & 1) {
943
1308
  i0.ɵɵprojectionDef();
944
1309
  i0.ɵɵelementStart(0, "div", 1)(1, "button", 2);
945
1310
  i0.ɵɵlistener("click", function KptSplitButton_Template_button_click_1_listener() { return ctx.primaryClick.emit(); });
@@ -961,11 +1326,11 @@ class KptSplitButton {
961
1326
  i0.ɵɵattribute("aria-label", ctx.i18n.t("splitButton.more"));
962
1327
  i0.ɵɵadvance(3);
963
1328
  i0.ɵɵproperty("cdkConnectedOverlayOrigin", origin_r4)("cdkConnectedOverlayOpen", ctx.open())("cdkConnectedOverlayPositions", ctx.positions)("cdkConnectedOverlayHasBackdrop", true);
964
- } }, dependencies: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon], styles: ["@layer kpt.components{.kpt-split-button-host{display:inline-flex}.kpt-split-button{--%NS%_bg: var(--%NS%kpt-color-primary);--%NS%_fg: var(--%NS%kpt-color-on-primary);--%NS%_bg-hover: var(--%NS%kpt-color-primary-hover);display:inline-flex;border-radius:var(--%NS%kpt-button-radius, .5rem);overflow:hidden}.kpt-split-button[data-variant=tonal]{--%NS%_bg: var(--%NS%kpt-color-muted);--%NS%_fg: var(--%NS%kpt-color-on-muted);--%NS%_bg-hover: var(--%NS%kpt-color-muted-hover)}.kpt-split-button__main,.kpt-split-button__toggle{border:0;background:var(--%NS%_bg);color:var(--%NS%_fg);cursor:pointer;font:inherit;font-size:var(--%NS%kpt-font-size-sm, .875rem);font-weight:var(--%NS%kpt-font-weight-medium, 500);height:2.5rem;transition:background-color var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-split-button__main:hover:not(:disabled),.kpt-split-button__toggle:hover:not(:disabled){background:var(--%NS%_bg-hover)}.kpt-split-button__main:disabled,.kpt-split-button__toggle:disabled{opacity:.5;cursor:not-allowed}.kpt-split-button__main{padding-inline:var(--%NS%kpt-space-4, 1rem)}.kpt-split-button__toggle{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;border-inline-start:1px solid color-mix(in oklch,var(--%NS%_fg) 25%,transparent)}.kpt-split-button__panel{min-width:11rem;padding:.25rem;background:var(--%NS%kpt-color-surface-raised);border:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-color-border);border-radius:var(--%NS%kpt-radius-md, .5rem);box-shadow:var(--%NS%kpt-elevation-3)}.kpt-split-button__item{display:flex;align-items:center;gap:var(--%NS%kpt-space-2, .5rem);width:100%;padding:.5rem .6rem;border:0;border-radius:var(--%NS%kpt-radius-sm, .25rem);background:none;color:var(--%NS%kpt-color-on-surface);font:inherit;font-size:var(--%NS%kpt-font-size-sm, .875rem);text-align:start;cursor:pointer}.kpt-split-button__item:hover:not(:disabled){background:var(--%NS%kpt-color-surface-variant)}.kpt-split-button__item:disabled{opacity:.45;cursor:not-allowed}.kpt-split-button__item--danger{color:var(--%NS%kpt-color-danger)}.kpt-split-button__item kpt-icon{color:var(--%NS%kpt-color-on-surface-muted)}.kpt-split-button__separator{height:1px;margin:.25rem 0;background:var(--%NS%kpt-color-border)}}\n"], encapsulation: 2 }); }
1329
+ } }, dependencies: [CdkOverlayOrigin, CdkConnectedOverlay, KptAvatar, KptBadge, KptIcon], styles: ["@charset \"UTF-8\";@layer kpt.components{.kpt-split-button-host{display:inline-flex}.kpt-split-button{--%NS%_bg: var(--%NS%kpt-color-primary);--%NS%_fg: var(--%NS%kpt-color-on-primary);--%NS%_bg-hover: var(--%NS%kpt-color-primary-hover);display:inline-flex;border-radius:var(--%NS%kpt-button-radius, .5rem);overflow:hidden}.kpt-split-button[data-variant=tonal]{--%NS%_bg: var(--%NS%kpt-color-muted);--%NS%_fg: var(--%NS%kpt-color-on-muted);--%NS%_bg-hover: var(--%NS%kpt-color-muted-hover)}.kpt-split-button__main,.kpt-split-button__toggle{border:0;background:var(--%NS%_bg);color:var(--%NS%_fg);cursor:pointer;font:inherit;font-size:var(--%NS%kpt-font-size-sm, .875rem);font-weight:var(--%NS%kpt-font-weight-medium, 500);height:2.5rem;position:relative;isolation:isolate}.kpt-split-button__main:after,.kpt-split-button__toggle:after{content:\"\";position:absolute;inset:0;z-index:-1;background-color:var(--%NS%_bg-hover);opacity:0;pointer-events:none;transition:opacity var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-split-button__main:hover:not(:disabled):after,.kpt-split-button__toggle:hover:not(:disabled):after{opacity:1}.kpt-split-button__main:disabled,.kpt-split-button__toggle:disabled{opacity:.5;cursor:not-allowed}@media(prefers-reduced-motion:reduce){.kpt-split-button__main:after,.kpt-split-button__toggle:after{transition:none}}.kpt-split-button__main{padding-inline:var(--%NS%kpt-space-4, 1rem)}.kpt-split-button__toggle{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;border-inline-start:1px solid color-mix(in oklch,var(--%NS%_fg) 25%,transparent)}.kpt-split-button__panel{min-width:11rem;padding:.25rem;background:var(--%NS%kpt-color-surface-raised);border:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-color-border);border-radius:var(--%NS%kpt-radius-md, .5rem);box-shadow:var(--%NS%kpt-elevation-3)}.kpt-split-button__item{display:flex;align-items:center;gap:var(--%NS%kpt-space-2, .5rem);width:100%;padding:.5rem .6rem;border:0;border-radius:var(--%NS%kpt-radius-sm, .25rem);background:none;color:var(--%NS%kpt-color-on-surface);font:inherit;font-size:var(--%NS%kpt-font-size-sm, .875rem);text-align:start;cursor:pointer}.kpt-split-button__item:hover:not(:disabled){background:var(--%NS%kpt-color-surface-variant)}.kpt-split-button__item:disabled{opacity:.45;cursor:not-allowed}.kpt-split-button__item--danger{color:var(--%NS%kpt-color-danger)}.kpt-split-button__item kpt-icon{color:var(--%NS%kpt-color-on-surface-muted)}.kpt-split-button__header{display:flex;align-items:center;gap:var(--%NS%kpt-space-2, .5rem);padding:.5rem .6rem;font-size:var(--%NS%kpt-font-size-sm, .875rem);cursor:default}.kpt-split-button__header .kpt-split-button__label{font-weight:var(--%NS%kpt-font-weight-semibold, 600)}.kpt-split-button__header kpt-icon{color:var(--%NS%kpt-color-on-surface-muted)}.kpt-split-button__text{display:flex;flex-direction:column;min-width:0}.kpt-split-button__label,.kpt-split-button__description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpt-split-button__description{color:var(--%NS%kpt-color-on-surface-muted);font-size:var(--%NS%kpt-font-size-xs, .75rem)}.kpt-split-button__badge{margin-inline-start:auto}.kpt-split-button__separator{height:1px;margin:.25rem 0;background:var(--%NS%kpt-color-border)}}\n"], encapsulation: 2 }); }
965
1330
  }
966
1331
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptSplitButton, [{
967
1332
  type: Component,
968
- args: [{ selector: 'kpt-split-button', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon], template: `
1333
+ args: [{ selector: 'kpt-split-button', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [CdkOverlayOrigin, CdkConnectedOverlay, KptAvatar, KptBadge, KptIcon], template: `
969
1334
  <div class="kpt-split-button" [attr.data-variant]="variant()">
970
1335
  <button class="kpt-split-button__main" type="button" [disabled]="disabled()" (click)="primaryClick.emit()">
971
1336
  <ng-content />
@@ -994,6 +1359,25 @@ class KptSplitButton {
994
1359
  @for (item of items(); track $index) {
995
1360
  @if (item.separator) {
996
1361
  <div class="kpt-split-button__separator" role="separator"></div>
1362
+ } @else if (item.header) {
1363
+ <div class="kpt-split-button__header" role="presentation">
1364
+ @if (item.avatar) {
1365
+ <kpt-avatar
1366
+ [src]="item.avatar.src ?? null"
1367
+ [name]="item.avatar.name ?? ''"
1368
+ [icon]="item.avatar.icon ?? null"
1369
+ size="sm"
1370
+ />
1371
+ } @else if (item.icon) {
1372
+ <kpt-icon [name]="item.icon" />
1373
+ }
1374
+ <span class="kpt-split-button__text">
1375
+ @if (item.label) { <span class="kpt-split-button__label">{{ item.label }}</span> }
1376
+ @if (item.description) {
1377
+ <span class="kpt-split-button__description">{{ item.description }}</span>
1378
+ }
1379
+ </span>
1380
+ </div>
997
1381
  } @else {
998
1382
  <button
999
1383
  type="button"
@@ -1003,15 +1387,97 @@ class KptSplitButton {
1003
1387
  (click)="pick(item)"
1004
1388
  >
1005
1389
  @if (item.icon) { <kpt-icon [name]="item.icon" /> }
1006
- <span>{{ item.label }}</span>
1390
+ <span class="kpt-split-button__text">
1391
+ <span class="kpt-split-button__label">{{ item.label }}</span>
1392
+ @if (item.description) {
1393
+ <span class="kpt-split-button__description">{{ item.description }}</span>
1394
+ }
1395
+ </span>
1396
+ @if (item.badge !== undefined && item.badge !== null) {
1397
+ <kpt-badge
1398
+ class="kpt-split-button__badge"
1399
+ [value]="item.badge"
1400
+ [variant]="item.badgeVariant ?? 'primary'"
1401
+ />
1402
+ }
1007
1403
  </button>
1008
1404
  }
1009
1405
  }
1010
1406
  </div>
1011
1407
  </ng-template>
1012
- `, host: { class: 'kpt-split-button-host' }, styles: ["@layer kpt.components{.kpt-split-button-host{display:inline-flex}.kpt-split-button{--_bg: var(--kpt-color-primary);--_fg: var(--kpt-color-on-primary);--_bg-hover: var(--kpt-color-primary-hover);display:inline-flex;border-radius:var(--kpt-button-radius, .5rem);overflow:hidden}.kpt-split-button[data-variant=tonal]{--_bg: var(--kpt-color-muted);--_fg: var(--kpt-color-on-muted);--_bg-hover: var(--kpt-color-muted-hover)}.kpt-split-button__main,.kpt-split-button__toggle{border:0;background:var(--_bg);color:var(--_fg);cursor:pointer;font:inherit;font-size:var(--kpt-font-size-sm, .875rem);font-weight:var(--kpt-font-weight-medium, 500);height:2.5rem;transition:background-color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-split-button__main:hover:not(:disabled),.kpt-split-button__toggle:hover:not(:disabled){background:var(--_bg-hover)}.kpt-split-button__main:disabled,.kpt-split-button__toggle:disabled{opacity:.5;cursor:not-allowed}.kpt-split-button__main{padding-inline:var(--kpt-space-4, 1rem)}.kpt-split-button__toggle{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;border-inline-start:1px solid color-mix(in oklch,var(--_fg) 25%,transparent)}.kpt-split-button__panel{min-width:11rem;padding:.25rem;background:var(--kpt-color-surface-raised);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-md, .5rem);box-shadow:var(--kpt-elevation-3)}.kpt-split-button__item{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);width:100%;padding:.5rem .6rem;border:0;border-radius:var(--kpt-radius-sm, .25rem);background:none;color:var(--kpt-color-on-surface);font:inherit;font-size:var(--kpt-font-size-sm, .875rem);text-align:start;cursor:pointer}.kpt-split-button__item:hover:not(:disabled){background:var(--kpt-color-surface-variant)}.kpt-split-button__item:disabled{opacity:.45;cursor:not-allowed}.kpt-split-button__item--danger{color:var(--kpt-color-danger)}.kpt-split-button__item kpt-icon{color:var(--kpt-color-on-surface-muted)}.kpt-split-button__separator{height:1px;margin:.25rem 0;background:var(--kpt-color-border)}}\n"] }]
1408
+ `, host: { class: 'kpt-split-button-host' }, styles: ["@charset \"UTF-8\";@layer kpt.components{.kpt-split-button-host{display:inline-flex}.kpt-split-button{--_bg: var(--kpt-color-primary);--_fg: var(--kpt-color-on-primary);--_bg-hover: var(--kpt-color-primary-hover);display:inline-flex;border-radius:var(--kpt-button-radius, .5rem);overflow:hidden}.kpt-split-button[data-variant=tonal]{--_bg: var(--kpt-color-muted);--_fg: var(--kpt-color-on-muted);--_bg-hover: var(--kpt-color-muted-hover)}.kpt-split-button__main,.kpt-split-button__toggle{border:0;background:var(--_bg);color:var(--_fg);cursor:pointer;font:inherit;font-size:var(--kpt-font-size-sm, .875rem);font-weight:var(--kpt-font-weight-medium, 500);height:2.5rem;position:relative;isolation:isolate}.kpt-split-button__main:after,.kpt-split-button__toggle:after{content:\"\";position:absolute;inset:0;z-index:-1;background-color:var(--_bg-hover);opacity:0;pointer-events:none;transition:opacity var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-split-button__main:hover:not(:disabled):after,.kpt-split-button__toggle:hover:not(:disabled):after{opacity:1}.kpt-split-button__main:disabled,.kpt-split-button__toggle:disabled{opacity:.5;cursor:not-allowed}@media(prefers-reduced-motion:reduce){.kpt-split-button__main:after,.kpt-split-button__toggle:after{transition:none}}.kpt-split-button__main{padding-inline:var(--kpt-space-4, 1rem)}.kpt-split-button__toggle{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;border-inline-start:1px solid color-mix(in oklch,var(--_fg) 25%,transparent)}.kpt-split-button__panel{min-width:11rem;padding:.25rem;background:var(--kpt-color-surface-raised);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-md, .5rem);box-shadow:var(--kpt-elevation-3)}.kpt-split-button__item{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);width:100%;padding:.5rem .6rem;border:0;border-radius:var(--kpt-radius-sm, .25rem);background:none;color:var(--kpt-color-on-surface);font:inherit;font-size:var(--kpt-font-size-sm, .875rem);text-align:start;cursor:pointer}.kpt-split-button__item:hover:not(:disabled){background:var(--kpt-color-surface-variant)}.kpt-split-button__item:disabled{opacity:.45;cursor:not-allowed}.kpt-split-button__item--danger{color:var(--kpt-color-danger)}.kpt-split-button__item kpt-icon{color:var(--kpt-color-on-surface-muted)}.kpt-split-button__header{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);padding:.5rem .6rem;font-size:var(--kpt-font-size-sm, .875rem);cursor:default}.kpt-split-button__header .kpt-split-button__label{font-weight:var(--kpt-font-weight-semibold, 600)}.kpt-split-button__header kpt-icon{color:var(--kpt-color-on-surface-muted)}.kpt-split-button__text{display:flex;flex-direction:column;min-width:0}.kpt-split-button__label,.kpt-split-button__description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpt-split-button__description{color:var(--kpt-color-on-surface-muted);font-size:var(--kpt-font-size-xs, .75rem)}.kpt-split-button__badge{margin-inline-start:auto}.kpt-split-button__separator{height:1px;margin:.25rem 0;background:var(--kpt-color-border)}}\n"] }]
1013
1409
  }], null, { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], primaryClick: [{ type: i0.Output, args: ["primaryClick"] }], select: [{ type: i0.Output, args: ["select"] }] }); })();
1014
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptSplitButton, { className: "KptSplitButton", filePath: "lib/split-button/split-button.component.ts", lineNumber: 68 }); })();
1410
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptSplitButton, { className: "KptSplitButton", filePath: "lib/split-button/split-button.component.ts", lineNumber: 101 }); })();
1411
+
1412
+ // Do not edit directly — generated by scripts/gen-tokens.mjs
1413
+ // from @konce-pt/tokens (tokens/primitives/breakpoint.json).
1414
+ /** Progi breakpointów w pikselach — te same wartości, z których korzystają `@media` biblioteki. */
1415
+ const KPT_BREAKPOINTS = {
1416
+ 'sm': 640,
1417
+ 'md': 768,
1418
+ 'lg': 1024,
1419
+ 'xl': 1280,
1420
+ '2xl': 1536,
1421
+ };
1422
+
1423
+ /**
1424
+ * Obserwator breakpointów oparty na `matchMedia`, spięty z tokenami `--kpt-breakpoint-*`.
1425
+ * Zwraca sygnały, więc czyta się go tak samo w `computed`, w szablonie i w `effect`.
1426
+ *
1427
+ * Zapytania są memoizowane per string: `up('lg')` wywołane w wielu komponentach dzieli
1428
+ * jeden `MediaQueryList` i jeden nasłuch.
1429
+ *
1430
+ * Poza przeglądarką (SSR, prerender) każdy sygnał to stałe `false`. Dlatego **układ**
1431
+ * komponentów biblioteki nigdy nie zależy od tego serwisu — o tym, jak wygląda strona,
1432
+ * decyduje CSS, żeby nic nie migotało przed hydracją. Serwis odpowiada za zachowania,
1433
+ * których CSS nie wyrazi (np. w którą stronę ma zadziałać przycisk).
1434
+ *
1435
+ * @example
1436
+ * private readonly breakpoints = inject(KptBreakpointObserver);
1437
+ * readonly isDesktop = this.breakpoints.up('lg');
1438
+ */
1439
+ class KptBreakpointObserver {
1440
+ constructor() {
1441
+ this.isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
1442
+ this.destroyRef = inject(DestroyRef);
1443
+ this.cache = new Map();
1444
+ }
1445
+ /** Dowolne media query jako sygnał. */
1446
+ matches(query) {
1447
+ const cached = this.cache.get(query);
1448
+ if (cached)
1449
+ return cached;
1450
+ const result = this.isBrowser ? this.observe(query) : signal(false).asReadonly();
1451
+ this.cache.set(query, result);
1452
+ return result;
1453
+ }
1454
+ /** Czy viewport ma szerokość co najmniej danego breakpointa (mobile-first). */
1455
+ up(breakpoint) {
1456
+ return this.matches(`(min-width: ${KPT_BREAKPOINTS[breakpoint]}px)`);
1457
+ }
1458
+ /**
1459
+ * Czy viewport jest węższy niż dany breakpoint. Próg schodzi o 0.02px, żeby pasma
1460
+ * `up`/`down` nie nakładały się na ułamkowych szerokościach okna (zoom, DPI).
1461
+ */
1462
+ down(breakpoint) {
1463
+ return this.matches(`(max-width: ${KPT_BREAKPOINTS[breakpoint] - 0.02}px)`);
1464
+ }
1465
+ observe(query) {
1466
+ const list = window.matchMedia(query);
1467
+ const state = signal(list.matches, /* @ts-ignore */
1468
+ ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
1469
+ const onChange = (event) => state.set(event.matches);
1470
+ list.addEventListener('change', onChange);
1471
+ this.destroyRef.onDestroy(() => list.removeEventListener('change', onChange));
1472
+ return state.asReadonly();
1473
+ }
1474
+ static { this.ɵfac = function KptBreakpointObserver_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptBreakpointObserver)(); }; }
1475
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: KptBreakpointObserver, factory: KptBreakpointObserver.ɵfac, providedIn: 'root' }); }
1476
+ }
1477
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptBreakpointObserver, [{
1478
+ type: Injectable,
1479
+ args: [{ providedIn: 'root' }]
1480
+ }], null, null); })();
1015
1481
 
1016
1482
  /**
1017
1483
  * Konfiguruje i18n Koncept UI. Ustawia język początkowy i rejestruje/nadpisuje
@@ -1036,62 +1502,6 @@ function provideKptI18n(config = {}) {
1036
1502
  return makeEnvironmentProviders([{ provide: KPT_I18N_CONFIG, useValue: config }]);
1037
1503
  }
1038
1504
 
1039
- const _c0$z = ["*"];
1040
- /**
1041
- * Znacznik (badge) — licznik lub kropka statusu. Standalone lub nałożony na treść (`overlay`).
1042
- *
1043
- * @example
1044
- * <kpt-badge [value]="3" variant="danger" />
1045
- * <kpt-badge [value]="128" overlay><kpt-icon name="menu" /></kpt-badge>
1046
- * <kpt-badge dot variant="success" overlay><kpt-avatar name="AK" /></kpt-badge>
1047
- */
1048
- class KptBadge {
1049
- constructor() {
1050
- this.value = input(null, /* @ts-ignore */
1051
- ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
1052
- this.variant = input('primary', /* @ts-ignore */
1053
- ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
1054
- this.dot = input(false, { ...(ngDevMode ? { debugName: "dot" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
1055
- this.overlay = input(false, { ...(ngDevMode ? { debugName: "overlay" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
1056
- this.max = input(99, /* @ts-ignore */
1057
- ...(ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []));
1058
- this.display = computed(() => {
1059
- const v = this.value();
1060
- if (typeof v === 'number' && v > this.max())
1061
- return `${this.max()}+`;
1062
- return v ?? '';
1063
- }, /* @ts-ignore */
1064
- ...(ngDevMode ? [{ debugName: "display" }] : /* istanbul ignore next */ []));
1065
- }
1066
- static { this.ɵfac = function KptBadge_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptBadge)(); }; }
1067
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptBadge, selectors: [["kpt-badge"]], hostAttrs: [1, "kpt-badge-host"], inputs: { value: [1, "value"], variant: [1, "variant"], dot: [1, "dot"], overlay: [1, "overlay"], max: [1, "max"] }, ngContentSelectors: _c0$z, decls: 3, vars: 6, consts: [[1, "kpt-badge"]], template: function KptBadge_Template(rf, ctx) { if (rf & 1) {
1068
- i0.ɵɵprojectionDef();
1069
- i0.ɵɵprojection(0);
1070
- i0.ɵɵdomElementStart(1, "span", 0);
1071
- i0.ɵɵtext(2);
1072
- i0.ɵɵdomElementEnd();
1073
- } if (rf & 2) {
1074
- i0.ɵɵadvance();
1075
- i0.ɵɵclassProp("kpt-badge--overlay", ctx.overlay())("kpt-badge--dot", ctx.dot());
1076
- i0.ɵɵattribute("data-variant", ctx.variant());
1077
- i0.ɵɵadvance();
1078
- i0.ɵɵtextInterpolate(ctx.dot() ? "" : ctx.display());
1079
- } }, styles: ["@layer kpt.components{.kpt-badge-host{position:relative;display:inline-flex;vertical-align:middle}.kpt-badge{--%NS%_bg: var(--%NS%kpt-color-primary);--%NS%_fg: var(--%NS%kpt-color-on-primary);display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding-inline:.35rem;box-sizing:border-box;border-radius:var(--%NS%kpt-radius-full, 9999px);background:var(--%NS%_bg);color:var(--%NS%_fg);font-size:var(--%NS%kpt-font-size-xs, .75rem);font-weight:var(--%NS%kpt-font-weight-semibold, 600);line-height:1}.kpt-badge[data-variant=neutral]{--%NS%_bg: var(--%NS%kpt-color-muted);--%NS%_fg: var(--%NS%kpt-color-on-muted)}.kpt-badge[data-variant=success]{--%NS%_bg: var(--%NS%kpt-color-success);--%NS%_fg: var(--%NS%kpt-color-surface)}.kpt-badge[data-variant=danger]{--%NS%_bg: var(--%NS%kpt-color-danger);--%NS%_fg: var(--%NS%kpt-color-on-danger)}.kpt-badge[data-variant=warning]{--%NS%_bg: var(--%NS%kpt-color-warning);--%NS%_fg: var(--%NS%kpt-color-surface)}.kpt-badge[data-variant=info]{--%NS%_bg: var(--%NS%kpt-color-info);--%NS%_fg: var(--%NS%kpt-color-surface)}.kpt-badge--dot{min-width:0;width:.65rem;height:.65rem;padding:0}.kpt-badge--overlay{position:absolute;top:0;inset-inline-end:0;transform:translate(35%,-35%);box-shadow:0 0 0 2px var(--%NS%kpt-color-surface)}}\n"], encapsulation: 2 }); }
1080
- }
1081
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptBadge, [{
1082
- type: Component,
1083
- args: [{ selector: 'kpt-badge', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: `
1084
- <ng-content />
1085
- <span
1086
- class="kpt-badge"
1087
- [attr.data-variant]="variant()"
1088
- [class.kpt-badge--overlay]="overlay()"
1089
- [class.kpt-badge--dot]="dot()"
1090
- >{{ dot() ? '' : display() }}</span>
1091
- `, host: { class: 'kpt-badge-host' }, styles: ["@layer kpt.components{.kpt-badge-host{position:relative;display:inline-flex;vertical-align:middle}.kpt-badge{--_bg: var(--kpt-color-primary);--_fg: var(--kpt-color-on-primary);display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding-inline:.35rem;box-sizing:border-box;border-radius:var(--kpt-radius-full, 9999px);background:var(--_bg);color:var(--_fg);font-size:var(--kpt-font-size-xs, .75rem);font-weight:var(--kpt-font-weight-semibold, 600);line-height:1}.kpt-badge[data-variant=neutral]{--_bg: var(--kpt-color-muted);--_fg: var(--kpt-color-on-muted)}.kpt-badge[data-variant=success]{--_bg: var(--kpt-color-success);--_fg: var(--kpt-color-surface)}.kpt-badge[data-variant=danger]{--_bg: var(--kpt-color-danger);--_fg: var(--kpt-color-on-danger)}.kpt-badge[data-variant=warning]{--_bg: var(--kpt-color-warning);--_fg: var(--kpt-color-surface)}.kpt-badge[data-variant=info]{--_bg: var(--kpt-color-info);--_fg: var(--kpt-color-surface)}.kpt-badge--dot{min-width:0;width:.65rem;height:.65rem;padding:0}.kpt-badge--overlay{position:absolute;top:0;inset-inline-end:0;transform:translate(35%,-35%);box-shadow:0 0 0 2px var(--kpt-color-surface)}}\n"] }]
1092
- }], null, { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], dot: [{ type: i0.Input, args: [{ isSignal: true, alias: "dot", required: false }] }], overlay: [{ type: i0.Input, args: [{ isSignal: true, alias: "overlay", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }] }); })();
1093
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptBadge, { className: "KptBadge", filePath: "lib/badge/badge.component.ts", lineNumber: 29 }); })();
1094
-
1095
1505
  const _c0$y = ["*"];
1096
1506
  function KptChip_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1097
1507
  const _r1 = i0.ɵɵgetCurrentView();
@@ -1107,127 +1517,51 @@ function KptChip_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1107
1517
  /**
1108
1518
  * Chip / tag — etykieta, opcjonalnie usuwalna.
1109
1519
  *
1110
- * @example
1111
- * <kpt-chip>Angular</kpt-chip>
1112
- * <kpt-chip variant="success" removable (removed)="onRemove()">UI</kpt-chip>
1113
- */
1114
- class KptChip {
1115
- constructor() {
1116
- this.variant = input('neutral', /* @ts-ignore */
1117
- ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
1118
- this.removable = input(false, { ...(ngDevMode ? { debugName: "removable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
1119
- this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
1120
- this.removed = output();
1121
- this.i18n = inject(KptI18n);
1122
- }
1123
- static { this.ɵfac = function KptChip_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptChip)(); }; }
1124
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptChip, selectors: [["kpt-chip"]], hostAttrs: [1, "kpt-chip-host"], inputs: { variant: [1, "variant"], removable: [1, "removable"], disabled: [1, "disabled"] }, outputs: { removed: "removed" }, ngContentSelectors: _c0$y, decls: 3, vars: 4, consts: [[1, "kpt-chip"], ["type", "button", 1, "kpt-chip__remove", 3, "disabled"], ["type", "button", 1, "kpt-chip__remove", 3, "click", "disabled"], ["name", "x"]], template: function KptChip_Template(rf, ctx) { if (rf & 1) {
1125
- i0.ɵɵprojectionDef();
1126
- i0.ɵɵelementStart(0, "span", 0);
1127
- i0.ɵɵprojection(1);
1128
- i0.ɵɵconditionalCreate(2, KptChip_Conditional_2_Template, 2, 2, "button", 1);
1129
- i0.ɵɵelementEnd();
1130
- } if (rf & 2) {
1131
- i0.ɵɵclassProp("kpt-chip--disabled", ctx.disabled());
1132
- i0.ɵɵattribute("data-variant", ctx.variant());
1133
- i0.ɵɵadvance(2);
1134
- i0.ɵɵconditional(ctx.removable() ? 2 : -1);
1135
- } }, dependencies: [KptIcon], styles: ["@layer kpt.components{.kpt-chip-host{display:inline-flex;vertical-align:middle}.kpt-chip{--%NS%_bg: var(--%NS%kpt-color-muted);--%NS%_fg: var(--%NS%kpt-color-on-muted);display:inline-flex;align-items:center;gap:.35rem;height:1.6rem;padding-inline:.6rem;border-radius:var(--%NS%kpt-radius-full, 9999px);background:var(--%NS%_bg);color:var(--%NS%_fg);font-size:var(--%NS%kpt-font-size-xs, .75rem);font-weight:var(--%NS%kpt-font-weight-medium, 500);white-space:nowrap}.kpt-chip[data-variant=primary]{--%NS%_bg: color-mix(in oklch, var(--%NS%kpt-color-primary) 14%, var(--%NS%kpt-color-surface));--%NS%_fg: var(--%NS%kpt-color-primary)}.kpt-chip[data-variant=success]{--%NS%_bg: color-mix(in oklch, var(--%NS%kpt-color-success) 18%, transparent);--%NS%_fg: var(--%NS%kpt-color-success)}.kpt-chip[data-variant=danger]{--%NS%_bg: color-mix(in oklch, var(--%NS%kpt-color-danger) 16%, transparent);--%NS%_fg: var(--%NS%kpt-color-danger)}.kpt-chip[data-variant=warning]{--%NS%_bg: color-mix(in oklch, var(--%NS%kpt-color-warning) 20%, transparent);--%NS%_fg: var(--%NS%kpt-color-warning)}.kpt-chip[data-variant=info]{--%NS%_bg: color-mix(in oklch, var(--%NS%kpt-color-info) 16%, transparent);--%NS%_fg: var(--%NS%kpt-color-info)}.kpt-chip--disabled{opacity:.55}.kpt-chip__remove{display:inline-flex;align-items:center;border:0;background:none;cursor:pointer;color:inherit;opacity:.7;padding:0;margin-inline-end:-.2rem}.kpt-chip__remove:hover:not(:disabled){opacity:1}.kpt-chip__remove:disabled{cursor:not-allowed}}\n"], encapsulation: 2 }); }
1136
- }
1137
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptChip, [{
1138
- type: Component,
1139
- args: [{ selector: 'kpt-chip', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [KptIcon], template: `
1140
- <span class="kpt-chip" [attr.data-variant]="variant()" [class.kpt-chip--disabled]="disabled()">
1141
- <ng-content />
1142
- @if (removable()) {
1143
- <button
1144
- type="button"
1145
- class="kpt-chip__remove"
1146
- [disabled]="disabled()"
1147
- (click)="removed.emit()"
1148
- [attr.aria-label]="i18n.t('common.remove')"
1149
- ><kpt-icon name="x" /></button>
1150
- }
1151
- </span>
1152
- `, host: { class: 'kpt-chip-host' }, styles: ["@layer kpt.components{.kpt-chip-host{display:inline-flex;vertical-align:middle}.kpt-chip{--_bg: var(--kpt-color-muted);--_fg: var(--kpt-color-on-muted);display:inline-flex;align-items:center;gap:.35rem;height:1.6rem;padding-inline:.6rem;border-radius:var(--kpt-radius-full, 9999px);background:var(--_bg);color:var(--_fg);font-size:var(--kpt-font-size-xs, .75rem);font-weight:var(--kpt-font-weight-medium, 500);white-space:nowrap}.kpt-chip[data-variant=primary]{--_bg: color-mix(in oklch, var(--kpt-color-primary) 14%, var(--kpt-color-surface));--_fg: var(--kpt-color-primary)}.kpt-chip[data-variant=success]{--_bg: color-mix(in oklch, var(--kpt-color-success) 18%, transparent);--_fg: var(--kpt-color-success)}.kpt-chip[data-variant=danger]{--_bg: color-mix(in oklch, var(--kpt-color-danger) 16%, transparent);--_fg: var(--kpt-color-danger)}.kpt-chip[data-variant=warning]{--_bg: color-mix(in oklch, var(--kpt-color-warning) 20%, transparent);--_fg: var(--kpt-color-warning)}.kpt-chip[data-variant=info]{--_bg: color-mix(in oklch, var(--kpt-color-info) 16%, transparent);--_fg: var(--kpt-color-info)}.kpt-chip--disabled{opacity:.55}.kpt-chip__remove{display:inline-flex;align-items:center;border:0;background:none;cursor:pointer;color:inherit;opacity:.7;padding:0;margin-inline-end:-.2rem}.kpt-chip__remove:hover:not(:disabled){opacity:1}.kpt-chip__remove:disabled{cursor:not-allowed}}\n"] }]
1153
- }], null, { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], removable: [{ type: i0.Input, args: [{ isSignal: true, alias: "removable", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], removed: [{ type: i0.Output, args: ["removed"] }] }); })();
1154
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptChip, { className: "KptChip", filePath: "lib/chip/chip.component.ts", lineNumber: 36 }); })();
1155
-
1156
- function KptAvatar_Conditional_1_Template(rf, ctx) { if (rf & 1) {
1157
- i0.ɵɵelement(0, "img", 1);
1158
- } if (rf & 2) {
1159
- const ctx_r0 = i0.ɵɵnextContext();
1160
- i0.ɵɵproperty("src", ctx_r0.src(), i0.ɵɵsanitizeUrl)("alt", ctx_r0.name() || "");
1161
- } }
1162
- function KptAvatar_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1163
- i0.ɵɵelementStart(0, "span", 2);
1164
- i0.ɵɵtext(1);
1165
- i0.ɵɵelementEnd();
1166
- } if (rf & 2) {
1167
- const ctx_r0 = i0.ɵɵnextContext();
1168
- i0.ɵɵadvance();
1169
- i0.ɵɵtextInterpolate(ctx_r0.initials());
1170
- } }
1171
- function KptAvatar_Conditional_3_Template(rf, ctx) { if (rf & 1) {
1172
- i0.ɵɵelement(0, "kpt-icon", 3);
1173
- } if (rf & 2) {
1174
- const ctx_r0 = i0.ɵɵnextContext();
1175
- i0.ɵɵproperty("name", ctx_r0.icon());
1176
- } }
1177
- /**
1178
- * Awatar — obraz, inicjały (z `name`) lub ikona.
1179
- *
1180
- * @example
1181
- * <kpt-avatar src="/u/anna.jpg" />
1182
- * <kpt-avatar name="Anna Kowalska" size="lg" />
1183
- * <kpt-avatar icon="user" shape="square" />
1184
- */
1185
- class KptAvatar {
1186
- constructor() {
1187
- this.src = input(null, /* @ts-ignore */
1188
- ...(ngDevMode ? [{ debugName: "src" }] : /* istanbul ignore next */ []));
1189
- this.name = input('', /* @ts-ignore */
1190
- ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
1191
- this.icon = input(null, /* @ts-ignore */
1192
- ...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
1193
- this.size = input('md', /* @ts-ignore */
1194
- ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
1195
- this.shape = input('circle', /* @ts-ignore */
1196
- ...(ngDevMode ? [{ debugName: "shape" }] : /* istanbul ignore next */ []));
1197
- this.initials = computed(() => this.name()
1198
- .trim()
1199
- .split(/\s+/)
1200
- .slice(0, 2)
1201
- .map((w) => w[0]?.toUpperCase() ?? '')
1202
- .join(''), /* @ts-ignore */
1203
- ...(ngDevMode ? [{ debugName: "initials" }] : /* istanbul ignore next */ []));
1520
+ * @example
1521
+ * <kpt-chip>Angular</kpt-chip>
1522
+ * <kpt-chip variant="success" removable (removed)="onRemove()">UI</kpt-chip>
1523
+ */
1524
+ class KptChip {
1525
+ constructor() {
1526
+ this.variant = input('neutral', /* @ts-ignore */
1527
+ ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
1528
+ this.removable = input(false, { ...(ngDevMode ? { debugName: "removable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
1529
+ this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
1530
+ this.removed = output();
1531
+ this.i18n = inject(KptI18n);
1204
1532
  }
1205
- static { this.ɵfac = function KptAvatar_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptAvatar)(); }; }
1206
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptAvatar, selectors: [["kpt-avatar"]], hostAttrs: [1, "kpt-avatar-host"], inputs: { src: [1, "src"], name: [1, "name"], icon: [1, "icon"], size: [1, "size"], shape: [1, "shape"] }, decls: 4, vars: 3, consts: [[1, "kpt-avatar"], [1, "kpt-avatar__img", 3, "src", "alt"], [1, "kpt-avatar__initials"], [3, "name"]], template: function KptAvatar_Template(rf, ctx) { if (rf & 1) {
1533
+ static { this.ɵfac = function KptChip_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptChip)(); }; }
1534
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptChip, selectors: [["kpt-chip"]], hostAttrs: [1, "kpt-chip-host"], inputs: { variant: [1, "variant"], removable: [1, "removable"], disabled: [1, "disabled"] }, outputs: { removed: "removed" }, ngContentSelectors: _c0$y, decls: 3, vars: 4, consts: [[1, "kpt-chip"], ["type", "button", 1, "kpt-chip__remove", 3, "disabled"], ["type", "button", 1, "kpt-chip__remove", 3, "click", "disabled"], ["name", "x"]], template: function KptChip_Template(rf, ctx) { if (rf & 1) {
1535
+ i0.ɵɵprojectionDef();
1207
1536
  i0.ɵɵelementStart(0, "span", 0);
1208
- i0.ɵɵconditionalCreate(1, KptAvatar_Conditional_1_Template, 1, 2, "img", 1)(2, KptAvatar_Conditional_2_Template, 2, 1, "span", 2)(3, KptAvatar_Conditional_3_Template, 1, 1, "kpt-icon", 3);
1537
+ i0.ɵɵprojection(1);
1538
+ i0.ɵɵconditionalCreate(2, KptChip_Conditional_2_Template, 2, 2, "button", 1);
1209
1539
  i0.ɵɵelementEnd();
1210
1540
  } if (rf & 2) {
1211
- i0.ɵɵattribute("data-size", ctx.size())("data-shape", ctx.shape());
1212
- i0.ɵɵadvance();
1213
- i0.ɵɵconditional(ctx.src() ? 1 : ctx.name() ? 2 : ctx.icon() ? 3 : -1);
1214
- } }, dependencies: [KptIcon], styles: ["@layer kpt.components{.kpt-avatar-host{display:inline-flex;vertical-align:middle}.kpt-avatar{--%NS%_size: 2.5rem;display:inline-flex;align-items:center;justify-content:center;width:var(--%NS%_size);height:var(--%NS%_size);border-radius:var(--%NS%kpt-radius-full, 9999px);background:var(--%NS%kpt-color-muted);color:var(--%NS%kpt-color-on-muted);font-weight:var(--%NS%kpt-font-weight-semibold, 600);font-size:calc(var(--%NS%_size) * .4);overflow:hidden;-webkit-user-select:none;user-select:none}.kpt-avatar[data-size=sm]{--%NS%_size: 2rem}.kpt-avatar[data-size=md]{--%NS%_size: 2.5rem}.kpt-avatar[data-size=lg]{--%NS%_size: 3rem}.kpt-avatar[data-size=xl]{--%NS%_size: 4rem}.kpt-avatar[data-shape=square]{border-radius:var(--%NS%kpt-radius-md, .5rem)}.kpt-avatar__img{width:100%;height:100%;object-fit:cover}}\n"], encapsulation: 2 }); }
1541
+ i0.ɵɵclassProp("kpt-chip--disabled", ctx.disabled());
1542
+ i0.ɵɵattribute("data-variant", ctx.variant());
1543
+ i0.ɵɵadvance(2);
1544
+ i0.ɵɵconditional(ctx.removable() ? 2 : -1);
1545
+ } }, dependencies: [KptIcon], styles: ["@layer kpt.components{.kpt-chip-host{display:inline-flex;vertical-align:middle}.kpt-chip{--%NS%_bg: var(--%NS%kpt-color-muted);--%NS%_fg: var(--%NS%kpt-color-on-muted);display:inline-flex;align-items:center;gap:.35rem;height:1.6rem;padding-inline:.6rem;border-radius:var(--%NS%kpt-radius-full, 9999px);background:var(--%NS%_bg);color:var(--%NS%_fg);font-size:var(--%NS%kpt-font-size-xs, .75rem);font-weight:var(--%NS%kpt-font-weight-medium, 500);white-space:nowrap}.kpt-chip[data-variant=primary]{--%NS%_bg: color-mix(in oklch, var(--%NS%kpt-color-primary) 14%, var(--%NS%kpt-color-surface));--%NS%_fg: var(--%NS%kpt-color-primary)}.kpt-chip[data-variant=success]{--%NS%_bg: color-mix(in oklch, var(--%NS%kpt-color-success) 18%, transparent);--%NS%_fg: var(--%NS%kpt-color-success)}.kpt-chip[data-variant=danger]{--%NS%_bg: color-mix(in oklch, var(--%NS%kpt-color-danger) 16%, transparent);--%NS%_fg: var(--%NS%kpt-color-danger)}.kpt-chip[data-variant=warning]{--%NS%_bg: color-mix(in oklch, var(--%NS%kpt-color-warning) 20%, transparent);--%NS%_fg: var(--%NS%kpt-color-warning)}.kpt-chip[data-variant=info]{--%NS%_bg: color-mix(in oklch, var(--%NS%kpt-color-info) 16%, transparent);--%NS%_fg: var(--%NS%kpt-color-info)}.kpt-chip--disabled{opacity:.55}.kpt-chip__remove{display:inline-flex;align-items:center;border:0;background:none;cursor:pointer;color:inherit;opacity:.7;padding:0;margin-inline-end:-.2rem}.kpt-chip__remove:hover:not(:disabled){opacity:1}.kpt-chip__remove:disabled{cursor:not-allowed}}\n"], encapsulation: 2 }); }
1215
1546
  }
1216
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptAvatar, [{
1547
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptChip, [{
1217
1548
  type: Component,
1218
- args: [{ selector: 'kpt-avatar', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [KptIcon], template: `
1219
- <span class="kpt-avatar" [attr.data-size]="size()" [attr.data-shape]="shape()">
1220
- @if (src()) {
1221
- <img class="kpt-avatar__img" [src]="src()" [alt]="name() || ''" />
1222
- } @else if (name()) {
1223
- <span class="kpt-avatar__initials">{{ initials() }}</span>
1224
- } @else if (icon()) {
1225
- <kpt-icon [name]="icon()!" />
1549
+ args: [{ selector: 'kpt-chip', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [KptIcon], template: `
1550
+ <span class="kpt-chip" [attr.data-variant]="variant()" [class.kpt-chip--disabled]="disabled()">
1551
+ <ng-content />
1552
+ @if (removable()) {
1553
+ <button
1554
+ type="button"
1555
+ class="kpt-chip__remove"
1556
+ [disabled]="disabled()"
1557
+ (click)="removed.emit()"
1558
+ [attr.aria-label]="i18n.t('common.remove')"
1559
+ ><kpt-icon name="x" /></button>
1226
1560
  }
1227
1561
  </span>
1228
- `, host: { class: 'kpt-avatar-host' }, styles: ["@layer kpt.components{.kpt-avatar-host{display:inline-flex;vertical-align:middle}.kpt-avatar{--_size: 2.5rem;display:inline-flex;align-items:center;justify-content:center;width:var(--_size);height:var(--_size);border-radius:var(--kpt-radius-full, 9999px);background:var(--kpt-color-muted);color:var(--kpt-color-on-muted);font-weight:var(--kpt-font-weight-semibold, 600);font-size:calc(var(--_size) * .4);overflow:hidden;-webkit-user-select:none;user-select:none}.kpt-avatar[data-size=sm]{--_size: 2rem}.kpt-avatar[data-size=md]{--_size: 2.5rem}.kpt-avatar[data-size=lg]{--_size: 3rem}.kpt-avatar[data-size=xl]{--_size: 4rem}.kpt-avatar[data-shape=square]{border-radius:var(--kpt-radius-md, .5rem)}.kpt-avatar__img{width:100%;height:100%;object-fit:cover}}\n"] }]
1229
- }], null, { src: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }] }); })();
1230
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptAvatar, { className: "KptAvatar", filePath: "lib/avatar/avatar.component.ts", lineNumber: 34 }); })();
1562
+ `, host: { class: 'kpt-chip-host' }, styles: ["@layer kpt.components{.kpt-chip-host{display:inline-flex;vertical-align:middle}.kpt-chip{--_bg: var(--kpt-color-muted);--_fg: var(--kpt-color-on-muted);display:inline-flex;align-items:center;gap:.35rem;height:1.6rem;padding-inline:.6rem;border-radius:var(--kpt-radius-full, 9999px);background:var(--_bg);color:var(--_fg);font-size:var(--kpt-font-size-xs, .75rem);font-weight:var(--kpt-font-weight-medium, 500);white-space:nowrap}.kpt-chip[data-variant=primary]{--_bg: color-mix(in oklch, var(--kpt-color-primary) 14%, var(--kpt-color-surface));--_fg: var(--kpt-color-primary)}.kpt-chip[data-variant=success]{--_bg: color-mix(in oklch, var(--kpt-color-success) 18%, transparent);--_fg: var(--kpt-color-success)}.kpt-chip[data-variant=danger]{--_bg: color-mix(in oklch, var(--kpt-color-danger) 16%, transparent);--_fg: var(--kpt-color-danger)}.kpt-chip[data-variant=warning]{--_bg: color-mix(in oklch, var(--kpt-color-warning) 20%, transparent);--_fg: var(--kpt-color-warning)}.kpt-chip[data-variant=info]{--_bg: color-mix(in oklch, var(--kpt-color-info) 16%, transparent);--_fg: var(--kpt-color-info)}.kpt-chip--disabled{opacity:.55}.kpt-chip__remove{display:inline-flex;align-items:center;border:0;background:none;cursor:pointer;color:inherit;opacity:.7;padding:0;margin-inline-end:-.2rem}.kpt-chip__remove:hover:not(:disabled){opacity:1}.kpt-chip__remove:disabled{cursor:not-allowed}}\n"] }]
1563
+ }], null, { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], removable: [{ type: i0.Input, args: [{ isSignal: true, alias: "removable", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], removed: [{ type: i0.Output, args: ["removed"] }] }); })();
1564
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptChip, { className: "KptChip", filePath: "lib/chip/chip.component.ts", lineNumber: 36 }); })();
1231
1565
 
1232
1566
  /**
1233
1567
  * Wskaźnik ładowania (spinner). Kolor z `currentColor`.
@@ -1415,6 +1749,9 @@ class KptSkeleton {
1415
1749
  }], null, { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], lines: [{ type: i0.Input, args: [{ isSignal: true, alias: "lines", required: false }] }] }); })();
1416
1750
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptSkeleton, { className: "KptSkeleton", filePath: "lib/skeleton/skeleton.component.ts", lineNumber: 29 }); })();
1417
1751
 
1752
+ /** Token DI, przez który kontrolka zgłasza `kpt-form-field` swój stan wypełnienia. */
1753
+ const KPT_FORM_FIELD_CONTROL = new InjectionToken('KPT_FORM_FIELD_CONTROL');
1754
+
1418
1755
  const _c0$x = ["*"];
1419
1756
  function KptFormField_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1420
1757
  i0.ɵɵdomElementStart(0, "span", 6);
@@ -1461,7 +1798,8 @@ function KptFormField_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1461
1798
  * unoszącej się etykiety (Float Label) z animowanym przejściem: `over` (nad obramowaniem),
1462
1799
  * `in` (u góry wewnątrz pola) i `on` (na obramowaniu, notch). Uniesienie następuje przy focusie
1463
1800
  * (CSS `:focus-within`) lub gdy pole jest wypełnione (wykrywane po zdarzeniach `input`/`change`
1464
- * oraz wartości początkowej) — bez wymogu placeholdera na kontrolce.
1801
+ * oraz wartości początkowej) — bez wymogu placeholdera na kontrolce. Kontrolki bez natywnego
1802
+ * `input`/`textarea` (np. `kpt-select`) zgłaszają wypełnienie tokenem `KPT_FORM_FIELD_CONTROL`.
1465
1803
  *
1466
1804
  * @example
1467
1805
  * <kpt-form-field label="E-mail" [error]="emailError()" hint="Firmowy adres">
@@ -1497,8 +1835,16 @@ class KptFormField {
1497
1835
  this.labelType = input('fixed', /* @ts-ignore */
1498
1836
  ...(ngDevMode ? [{ debugName: "labelType" }] : /* istanbul ignore next */ []));
1499
1837
  this.host = inject(ElementRef);
1838
+ /**
1839
+ * Kontrolka bez natywnego `input`/`textarea` (np. `kpt-select`) zgłasza wypełnienie sama,
1840
+ * przez token `KPT_FORM_FIELD_CONTROL` — jej wartość nie da się odczytać z DOM.
1841
+ */
1842
+ this.control = contentChild(KPT_FORM_FIELD_CONTROL, { ...(ngDevMode ? { debugName: "control" } : /* istanbul ignore next */ {}), descendants: true });
1843
+ /** Wypełnienie odczytane z natywnej kontrolki (zdarzenia `input`/`change` + wartość początkowa). */
1844
+ this.nativeFilled = signal(false, /* @ts-ignore */
1845
+ ...(ngDevMode ? [{ debugName: "nativeFilled" }] : /* istanbul ignore next */ []));
1500
1846
  /** Czy projektowana kontrolka ma wartość — steruje uniesieniem etykiety w wariantach float. */
1501
- this.filled = signal(false, /* @ts-ignore */
1847
+ this.filled = computed(() => this.control()?.filled() ?? this.nativeFilled(), /* @ts-ignore */
1502
1848
  ...(ngDevMode ? [{ debugName: "filled" }] : /* istanbul ignore next */ []));
1503
1849
  // Wartość początkowa (np. pole prefill) — po pierwszym renderze projekcji.
1504
1850
  afterNextRender(() => this.updateFilled());
@@ -1506,10 +1852,14 @@ class KptFormField {
1506
1852
  /** Odczytuje wartość projektowanego `input`/`textarea` i aktualizuje stan `filled`. */
1507
1853
  updateFilled() {
1508
1854
  const el = this.host.nativeElement.querySelector('.kpt-form-field__control input, .kpt-form-field__control textarea');
1509
- this.filled.set(!!el && el.value !== '');
1855
+ this.nativeFilled.set(!!el && el.value !== '');
1510
1856
  }
1511
1857
  static { this.ɵfac = function KptFormField_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptFormField)(); }; }
1512
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptFormField, selectors: [["kpt-form-field"]], hostAttrs: [1, "kpt-form-field-host"], hostBindings: function KptFormField_HostBindings(rf, ctx) { if (rf & 1) {
1858
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptFormField, selectors: [["kpt-form-field"]], contentQueries: function KptFormField_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
1859
+ i0.ɵɵcontentQuerySignal(dirIndex, ctx.control, KPT_FORM_FIELD_CONTROL, 5);
1860
+ } if (rf & 2) {
1861
+ i0.ɵɵqueryAdvance();
1862
+ } }, hostAttrs: [1, "kpt-form-field-host"], hostBindings: function KptFormField_HostBindings(rf, ctx) { if (rf & 1) {
1513
1863
  i0.ɵɵlistener("input", function KptFormField_input_HostBindingHandler() { return ctx.updateFilled(); })("change", function KptFormField_change_HostBindingHandler() { return ctx.updateFilled(); });
1514
1864
  } }, inputs: { label: [1, "label"], hint: [1, "hint"], error: [1, "error"], required: [1, "required"], controlId: [1, "controlId"], labelType: [1, "labelType"] }, ngContentSelectors: _c0$x, decls: 7, vars: 10, consts: [[1, "kpt-form-field"], [1, "kpt-form-field__box"], [1, "kpt-form-field__label"], [1, "kpt-form-field__control"], ["role", "alert", 1, "kpt-form-field__message", "kpt-form-field__message--error"], [1, "kpt-form-field__message", "kpt-form-field__message--hint"], ["aria-hidden", "true", 1, "kpt-form-field__required"]], template: function KptFormField_Template(rf, ctx) { if (rf & 1) {
1515
1865
  i0.ɵɵprojectionDef();
@@ -1529,7 +1879,7 @@ class KptFormField {
1529
1879
  i0.ɵɵconditional(ctx.label() ? 2 : -1);
1530
1880
  i0.ɵɵadvance(3);
1531
1881
  i0.ɵɵconditional(ctx.error() ? 5 : ctx.hint() ? 6 : -1);
1532
- } }, styles: ["@layer kpt.components{.kpt-form-field,.kpt-form-field__box{display:flex;flex-direction:column;gap:var(--%NS%kpt-space-1, .25rem)}.kpt-form-field__label{font-size:var(--%NS%kpt-font-size-sm, .875rem);font-weight:var(--%NS%kpt-font-weight-medium, 500);color:var(--%NS%kpt-form-field-label)}.kpt-form-field__required{color:var(--%NS%kpt-color-danger);margin-inline-start:.125rem}.kpt-form-field__message{font-size:var(--%NS%kpt-font-size-xs, .75rem);line-height:var(--%NS%kpt-font-line-height-normal, 1.5)}.kpt-form-field__message--hint{color:var(--%NS%kpt-form-field-hint)}.kpt-form-field__message--error{color:var(--%NS%kpt-form-field-error)}.kpt-form-field--float .kpt-form-field__box{position:relative;display:block}.kpt-form-field--float .kpt-form-field__label{position:absolute;top:50%;left:var(--%NS%kpt-space-3, .75rem);margin:0;max-width:calc(100% - 2 * var(--%NS%kpt-space-3, .75rem));overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1;transform:translateY(-50%);transform-origin:left center;pointer-events:none;font-weight:var(--%NS%kpt-font-weight-normal, 400);color:var(--%NS%kpt-form-field-placeholder);transition:transform var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard),color var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-form-field--float .kpt-form-field__box:focus-within .kpt-form-field__label{color:var(--%NS%kpt-form-field-border-focus)}.kpt-form-field--float.kpt-form-field--invalid .kpt-form-field__box:is(:focus-within,.is-filled) .kpt-form-field__label,.kpt-form-field--float.kpt-form-field--invalid .kpt-form-field__box:focus-within .kpt-form-field__label{color:var(--%NS%kpt-form-field-border-error)}.kpt-form-field--over .kpt-form-field__box{margin-top:1.1rem}.kpt-form-field--over .kpt-form-field__box:is(:focus-within,.is-filled) .kpt-form-field__label{left:0;transform:translateY(calc(-50% - 1.87rem)) scale(.85)}.kpt-form-field--in .kpt-form-field__control :is(input,textarea){height:3.25rem;padding-top:1.15rem}.kpt-form-field--in .kpt-form-field__box:is(:focus-within,.is-filled) .kpt-form-field__label{transform:translateY(calc(-50% - .95rem)) scale(.85)}.kpt-form-field--on .kpt-form-field__box:is(:focus-within,.is-filled) .kpt-form-field__label{left:calc(var(--%NS%kpt-space-3, .75rem) - .25rem);padding-inline:.25rem;background:var(--%NS%kpt-form-field-bg);transform:translateY(calc(-50% - 1.25rem)) scale(.85)}@media(prefers-reduced-motion:reduce){.kpt-form-field--float .kpt-form-field__label{transition:none}}}\n"], encapsulation: 2 }); }
1882
+ } }, styles: ["@layer kpt.components{.kpt-form-field,.kpt-form-field__box{display:flex;flex-direction:column;gap:var(--%NS%kpt-space-1, .25rem)}.kpt-form-field__label{font-size:var(--%NS%kpt-font-size-sm, .875rem);font-weight:var(--%NS%kpt-font-weight-medium, 500);color:var(--%NS%kpt-form-field-label)}.kpt-form-field__required{color:var(--%NS%kpt-color-danger);margin-inline-start:.125rem}.kpt-form-field__message{font-size:var(--%NS%kpt-font-size-xs, .75rem);line-height:var(--%NS%kpt-font-line-height-normal, 1.5)}.kpt-form-field__message--hint{color:var(--%NS%kpt-form-field-hint)}.kpt-form-field__message--error{color:var(--%NS%kpt-form-field-error)}.kpt-form-field--float .kpt-form-field__box{position:relative;display:block}.kpt-form-field--float .kpt-form-field__label{position:absolute;top:50%;left:var(--%NS%kpt-space-3, .75rem);margin:0;max-width:calc(100% - 2 * var(--%NS%kpt-space-3, .75rem));overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1;transform:translateY(-50%);transform-origin:left center;pointer-events:none;font-weight:var(--%NS%kpt-font-weight-normal, 400);color:var(--%NS%kpt-form-field-placeholder);transition:transform var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard),color var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-form-field--float .kpt-form-field__box:focus-within .kpt-form-field__label{color:var(--%NS%kpt-form-field-border-focus)}.kpt-form-field--float.kpt-form-field--invalid .kpt-form-field__box:is(:focus-within,.is-filled) .kpt-form-field__label,.kpt-form-field--float.kpt-form-field--invalid .kpt-form-field__box:focus-within .kpt-form-field__label{color:var(--%NS%kpt-form-field-border-error)}.kpt-form-field--over .kpt-form-field__box{margin-top:1.1rem}.kpt-form-field--over .kpt-form-field__box:is(:focus-within,.is-filled) .kpt-form-field__label{left:0;transform:translateY(calc(-50% - 1.87rem)) scale(.85)}.kpt-form-field--in .kpt-form-field__control :is(input,textarea){height:3.25rem;padding-top:1.15rem}.kpt-form-field--in .kpt-form-field__control .kpt-select{min-height:3.25rem;padding-top:1.15rem}.kpt-form-field--in .kpt-form-field__box:is(:focus-within,.is-filled) .kpt-form-field__label{transform:translateY(calc(-50% - .95rem)) scale(.85)}.kpt-form-field--on .kpt-form-field__box:is(:focus-within,.is-filled) .kpt-form-field__label{left:calc(var(--%NS%kpt-space-3, .75rem) - .25rem);padding-inline:.25rem;background:var(--%NS%kpt-form-field-bg);transform:translateY(calc(-50% - 1.25rem)) scale(.85)}@media(prefers-reduced-motion:reduce){.kpt-form-field--float .kpt-form-field__label{transition:none}}}\n"], encapsulation: 2 }); }
1533
1883
  }
1534
1884
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptFormField, [{
1535
1885
  type: Component,
@@ -1537,9 +1887,9 @@ class KptFormField {
1537
1887
  class: 'kpt-form-field-host',
1538
1888
  '(input)': 'updateFilled()',
1539
1889
  '(change)': 'updateFilled()',
1540
- }, template: "<div\n class=\"kpt-form-field\"\n [class]=\"'kpt-form-field--' + labelType()\"\n [class.kpt-form-field--float]=\"labelType() !== 'fixed'\"\n [class.kpt-form-field--invalid]=\"!!error()\"\n>\n <div class=\"kpt-form-field__box\" [class.is-filled]=\"filled()\">\n @if (label()) {\n <label class=\"kpt-form-field__label\" [attr.for]=\"controlId() || null\">\n {{ label() }}\n @if (required()) {\n <span class=\"kpt-form-field__required\" aria-hidden=\"true\">*</span>\n }\n </label>\n }\n\n <div class=\"kpt-form-field__control\">\n <ng-content />\n </div>\n </div>\n\n @if (error()) {\n <p class=\"kpt-form-field__message kpt-form-field__message--error\" role=\"alert\">{{ error() }}</p>\n } @else if (hint()) {\n <p class=\"kpt-form-field__message kpt-form-field__message--hint\">{{ hint() }}</p>\n }\n</div>\n", styles: ["@layer kpt.components{.kpt-form-field,.kpt-form-field__box{display:flex;flex-direction:column;gap:var(--kpt-space-1, .25rem)}.kpt-form-field__label{font-size:var(--kpt-font-size-sm, .875rem);font-weight:var(--kpt-font-weight-medium, 500);color:var(--kpt-form-field-label)}.kpt-form-field__required{color:var(--kpt-color-danger);margin-inline-start:.125rem}.kpt-form-field__message{font-size:var(--kpt-font-size-xs, .75rem);line-height:var(--kpt-font-line-height-normal, 1.5)}.kpt-form-field__message--hint{color:var(--kpt-form-field-hint)}.kpt-form-field__message--error{color:var(--kpt-form-field-error)}.kpt-form-field--float .kpt-form-field__box{position:relative;display:block}.kpt-form-field--float .kpt-form-field__label{position:absolute;top:50%;left:var(--kpt-space-3, .75rem);margin:0;max-width:calc(100% - 2 * var(--kpt-space-3, .75rem));overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1;transform:translateY(-50%);transform-origin:left center;pointer-events:none;font-weight:var(--kpt-font-weight-normal, 400);color:var(--kpt-form-field-placeholder);transition:transform var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard),color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-form-field--float .kpt-form-field__box:focus-within .kpt-form-field__label{color:var(--kpt-form-field-border-focus)}.kpt-form-field--float.kpt-form-field--invalid .kpt-form-field__box:is(:focus-within,.is-filled) .kpt-form-field__label,.kpt-form-field--float.kpt-form-field--invalid .kpt-form-field__box:focus-within .kpt-form-field__label{color:var(--kpt-form-field-border-error)}.kpt-form-field--over .kpt-form-field__box{margin-top:1.1rem}.kpt-form-field--over .kpt-form-field__box:is(:focus-within,.is-filled) .kpt-form-field__label{left:0;transform:translateY(calc(-50% - 1.87rem)) scale(.85)}.kpt-form-field--in .kpt-form-field__control :is(input,textarea){height:3.25rem;padding-top:1.15rem}.kpt-form-field--in .kpt-form-field__box:is(:focus-within,.is-filled) .kpt-form-field__label{transform:translateY(calc(-50% - .95rem)) scale(.85)}.kpt-form-field--on .kpt-form-field__box:is(:focus-within,.is-filled) .kpt-form-field__label{left:calc(var(--kpt-space-3, .75rem) - .25rem);padding-inline:.25rem;background:var(--kpt-form-field-bg);transform:translateY(calc(-50% - 1.25rem)) scale(.85)}@media(prefers-reduced-motion:reduce){.kpt-form-field--float .kpt-form-field__label{transition:none}}}\n"] }]
1541
- }], () => [], { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], controlId: [{ type: i0.Input, args: [{ isSignal: true, alias: "controlId", required: false }] }], labelType: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelType", required: false }] }] }); })();
1542
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptFormField, { className: "KptFormField", filePath: "lib/form-field/form-field.component.ts", lineNumber: 46 }); })();
1890
+ }, template: "<div\n class=\"kpt-form-field\"\n [class]=\"'kpt-form-field--' + labelType()\"\n [class.kpt-form-field--float]=\"labelType() !== 'fixed'\"\n [class.kpt-form-field--invalid]=\"!!error()\"\n>\n <div class=\"kpt-form-field__box\" [class.is-filled]=\"filled()\">\n @if (label()) {\n <label class=\"kpt-form-field__label\" [attr.for]=\"controlId() || null\">\n {{ label() }}\n @if (required()) {\n <span class=\"kpt-form-field__required\" aria-hidden=\"true\">*</span>\n }\n </label>\n }\n\n <div class=\"kpt-form-field__control\">\n <ng-content />\n </div>\n </div>\n\n @if (error()) {\n <p class=\"kpt-form-field__message kpt-form-field__message--error\" role=\"alert\">{{ error() }}</p>\n } @else if (hint()) {\n <p class=\"kpt-form-field__message kpt-form-field__message--hint\">{{ hint() }}</p>\n }\n</div>\n", styles: ["@layer kpt.components{.kpt-form-field,.kpt-form-field__box{display:flex;flex-direction:column;gap:var(--kpt-space-1, .25rem)}.kpt-form-field__label{font-size:var(--kpt-font-size-sm, .875rem);font-weight:var(--kpt-font-weight-medium, 500);color:var(--kpt-form-field-label)}.kpt-form-field__required{color:var(--kpt-color-danger);margin-inline-start:.125rem}.kpt-form-field__message{font-size:var(--kpt-font-size-xs, .75rem);line-height:var(--kpt-font-line-height-normal, 1.5)}.kpt-form-field__message--hint{color:var(--kpt-form-field-hint)}.kpt-form-field__message--error{color:var(--kpt-form-field-error)}.kpt-form-field--float .kpt-form-field__box{position:relative;display:block}.kpt-form-field--float .kpt-form-field__label{position:absolute;top:50%;left:var(--kpt-space-3, .75rem);margin:0;max-width:calc(100% - 2 * var(--kpt-space-3, .75rem));overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1;transform:translateY(-50%);transform-origin:left center;pointer-events:none;font-weight:var(--kpt-font-weight-normal, 400);color:var(--kpt-form-field-placeholder);transition:transform var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard),color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-form-field--float .kpt-form-field__box:focus-within .kpt-form-field__label{color:var(--kpt-form-field-border-focus)}.kpt-form-field--float.kpt-form-field--invalid .kpt-form-field__box:is(:focus-within,.is-filled) .kpt-form-field__label,.kpt-form-field--float.kpt-form-field--invalid .kpt-form-field__box:focus-within .kpt-form-field__label{color:var(--kpt-form-field-border-error)}.kpt-form-field--over .kpt-form-field__box{margin-top:1.1rem}.kpt-form-field--over .kpt-form-field__box:is(:focus-within,.is-filled) .kpt-form-field__label{left:0;transform:translateY(calc(-50% - 1.87rem)) scale(.85)}.kpt-form-field--in .kpt-form-field__control :is(input,textarea){height:3.25rem;padding-top:1.15rem}.kpt-form-field--in .kpt-form-field__control .kpt-select{min-height:3.25rem;padding-top:1.15rem}.kpt-form-field--in .kpt-form-field__box:is(:focus-within,.is-filled) .kpt-form-field__label{transform:translateY(calc(-50% - .95rem)) scale(.85)}.kpt-form-field--on .kpt-form-field__box:is(:focus-within,.is-filled) .kpt-form-field__label{left:calc(var(--kpt-space-3, .75rem) - .25rem);padding-inline:.25rem;background:var(--kpt-form-field-bg);transform:translateY(calc(-50% - 1.25rem)) scale(.85)}@media(prefers-reduced-motion:reduce){.kpt-form-field--float .kpt-form-field__label{transition:none}}}\n"] }]
1891
+ }], () => [], { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], controlId: [{ type: i0.Input, args: [{ isSignal: true, alias: "controlId", required: false }] }], labelType: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelType", required: false }] }], control: [{ type: i0.ContentChild, args: [i0.forwardRef(() => KPT_FORM_FIELD_CONTROL), { ...{ descendants: true }, isSignal: true }] }] }); })();
1892
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptFormField, { className: "KptFormField", filePath: "lib/form-field/form-field.component.ts", lineNumber: 50 }); })();
1543
1893
 
1544
1894
  let nextUniqueId = 0;
1545
1895
  /**
@@ -1607,7 +1957,7 @@ class KptInput {
1607
1957
  '[attr.id]': 'null',
1608
1958
  }, template: "<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 [attr.aria-required]=\"required() ? 'true' : null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-invalid]=\"showInvalid() ? 'true' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"touch.emit()\"\n/>\n", styles: ["@layer kpt.components{.kpt-input-host{display:block}.kpt-input__field{display:block;width:100%;box-sizing:border-box;height:2.5rem;padding-inline:var(--kpt-space-3, .75rem);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-form-field-border);border-radius:var(--kpt-form-field-radius, .5rem);font-family:inherit;font-size:var(--kpt-font-size-sm, .875rem);color:var(--kpt-form-field-text);background-color:var(--kpt-form-field-bg);transition:border-color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard),box-shadow var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-input__field::placeholder{color:var(--kpt-form-field-placeholder)}.kpt-input__field:hover:not(:disabled):not([aria-invalid=true]){border-color:var(--kpt-form-field-border-hover)}.kpt-input__field:focus-visible{outline:none;border-color:var(--kpt-form-field-border-focus);box-shadow:0 0 0 2px color-mix(in oklch,var(--kpt-form-field-border-focus) 30%,transparent)}.kpt-input__field[aria-invalid=true]{border-color:var(--kpt-form-field-border-error)}.kpt-input__field[aria-invalid=true]:focus-visible{box-shadow:0 0 0 2px color-mix(in oklch,var(--kpt-form-field-border-error) 30%,transparent)}.kpt-input__field:disabled{cursor:not-allowed;opacity:.6;background-color:var(--kpt-color-surface-variant)}}\n"] }]
1609
1959
  }], null, { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], errors: [{ type: i0.Input, args: [{ isSignal: true, alias: "errors", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], touch: [{ type: i0.Output, args: ["touch"] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] }); })();
1610
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptInput, { className: "KptInput", filePath: "lib/input/input.component.ts", lineNumber: 41 }); })();
1960
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptInput, { className: "KptInput", filePath: "lib/input/input.component.ts", lineNumber: 49 }); })();
1611
1961
 
1612
1962
  const _c0$w = ["*"];
1613
1963
  function KptCheckbox_Conditional_5_Template(rf, ctx) { if (rf & 1) {
@@ -1660,7 +2010,7 @@ class KptCheckbox {
1660
2010
  i0.ɵɵattribute("aria-invalid", ctx.showInvalid() ? "true" : null);
1661
2011
  i0.ɵɵadvance(4);
1662
2012
  i0.ɵɵconditional(ctx.label() ? 5 : -1);
1663
- } }, styles: ["@layer kpt.components{.kpt-checkbox{display:inline-flex;align-items:center;gap:var(--%NS%kpt-space-2, .5rem);cursor:pointer;font-size:var(--%NS%kpt-font-size-sm, .875rem);color:var(--%NS%kpt-color-on-surface)}.kpt-checkbox--disabled{cursor:not-allowed;opacity:.55}.kpt-checkbox__input{position:absolute;opacity:0;width:1px;height:1px}.kpt-checkbox__box{display:inline-flex;align-items:center;justify-content:center;width:1.15rem;height:1.15rem;flex-shrink:0;border:var(--%NS%kpt-border-width-medium, 2px) solid var(--%NS%kpt-form-field-border);border-radius:var(--%NS%kpt-radius-sm, .25rem);background:var(--%NS%kpt-form-field-bg);transition:background-color var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard),border-color var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-checkbox__check{width:.9rem;height:.9rem;fill:none;stroke:var(--%NS%kpt-color-on-primary);stroke-width:2.25;stroke-linecap:round;stroke-linejoin:round;opacity:0;transition:opacity var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-checkbox__input:checked+.kpt-checkbox__box{background:var(--%NS%kpt-color-primary);border-color:var(--%NS%kpt-color-primary)}.kpt-checkbox__input:checked+.kpt-checkbox__box .kpt-checkbox__check{opacity:1}.kpt-checkbox__input:focus-visible+.kpt-checkbox__box{outline:var(--%NS%kpt-border-width-medium, 2px) solid var(--%NS%kpt-color-focus-ring);outline-offset:2px}.kpt-checkbox__input[aria-invalid=true]+.kpt-checkbox__box{border-color:var(--%NS%kpt-form-field-border-error)}}\n"], encapsulation: 2 }); }
2013
+ } }, styles: ["@layer kpt.components{.kpt-checkbox{display:inline-flex;position:relative;align-items:center;gap:var(--%NS%kpt-space-2, .5rem);cursor:pointer;font-size:var(--%NS%kpt-font-size-sm, .875rem);color:var(--%NS%kpt-color-on-surface)}.kpt-checkbox--disabled{cursor:not-allowed;opacity:.55}.kpt-checkbox__input{position:absolute;opacity:0;width:1px;height:1px}.kpt-checkbox__box{display:inline-flex;align-items:center;justify-content:center;width:1.15rem;height:1.15rem;flex-shrink:0;border:var(--%NS%kpt-border-width-medium, 2px) solid var(--%NS%kpt-form-field-border);border-radius:var(--%NS%kpt-radius-sm, .25rem);background:var(--%NS%kpt-form-field-bg);transition:background-color var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard),border-color var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-checkbox__check{width:.9rem;height:.9rem;fill:none;stroke:var(--%NS%kpt-color-on-primary);stroke-width:2.25;stroke-linecap:round;stroke-linejoin:round;opacity:0;transition:opacity var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-checkbox__input:checked+.kpt-checkbox__box{background:var(--%NS%kpt-color-primary);border-color:var(--%NS%kpt-color-primary)}.kpt-checkbox__input:checked+.kpt-checkbox__box .kpt-checkbox__check{opacity:1}.kpt-checkbox__input:focus-visible+.kpt-checkbox__box{outline:var(--%NS%kpt-border-width-medium, 2px) solid var(--%NS%kpt-color-focus-ring);outline-offset:2px}.kpt-checkbox__input[aria-invalid=true]+.kpt-checkbox__box{border-color:var(--%NS%kpt-form-field-border-error)}}\n"], encapsulation: 2 }); }
1664
2014
  }
1665
2015
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptCheckbox, [{
1666
2016
  type: Component,
@@ -1683,7 +2033,7 @@ class KptCheckbox {
1683
2033
  }
1684
2034
  <ng-content />
1685
2035
  </label>
1686
- `, host: { class: 'kpt-checkbox-host' }, styles: ["@layer kpt.components{.kpt-checkbox{display:inline-flex;align-items:center;gap:var(--kpt-space-2, .5rem);cursor:pointer;font-size:var(--kpt-font-size-sm, .875rem);color:var(--kpt-color-on-surface)}.kpt-checkbox--disabled{cursor:not-allowed;opacity:.55}.kpt-checkbox__input{position:absolute;opacity:0;width:1px;height:1px}.kpt-checkbox__box{display:inline-flex;align-items:center;justify-content:center;width:1.15rem;height:1.15rem;flex-shrink:0;border:var(--kpt-border-width-medium, 2px) solid var(--kpt-form-field-border);border-radius:var(--kpt-radius-sm, .25rem);background:var(--kpt-form-field-bg);transition:background-color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard),border-color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-checkbox__check{width:.9rem;height:.9rem;fill:none;stroke:var(--kpt-color-on-primary);stroke-width:2.25;stroke-linecap:round;stroke-linejoin:round;opacity:0;transition:opacity var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-checkbox__input:checked+.kpt-checkbox__box{background:var(--kpt-color-primary);border-color:var(--kpt-color-primary)}.kpt-checkbox__input:checked+.kpt-checkbox__box .kpt-checkbox__check{opacity:1}.kpt-checkbox__input:focus-visible+.kpt-checkbox__box{outline:var(--kpt-border-width-medium, 2px) solid var(--kpt-color-focus-ring);outline-offset:2px}.kpt-checkbox__input[aria-invalid=true]+.kpt-checkbox__box{border-color:var(--kpt-form-field-border-error)}}\n"] }]
2036
+ `, host: { class: 'kpt-checkbox-host' }, styles: ["@layer kpt.components{.kpt-checkbox{display:inline-flex;position:relative;align-items:center;gap:var(--kpt-space-2, .5rem);cursor:pointer;font-size:var(--kpt-font-size-sm, .875rem);color:var(--kpt-color-on-surface)}.kpt-checkbox--disabled{cursor:not-allowed;opacity:.55}.kpt-checkbox__input{position:absolute;opacity:0;width:1px;height:1px}.kpt-checkbox__box{display:inline-flex;align-items:center;justify-content:center;width:1.15rem;height:1.15rem;flex-shrink:0;border:var(--kpt-border-width-medium, 2px) solid var(--kpt-form-field-border);border-radius:var(--kpt-radius-sm, .25rem);background:var(--kpt-form-field-bg);transition:background-color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard),border-color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-checkbox__check{width:.9rem;height:.9rem;fill:none;stroke:var(--kpt-color-on-primary);stroke-width:2.25;stroke-linecap:round;stroke-linejoin:round;opacity:0;transition:opacity var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-checkbox__input:checked+.kpt-checkbox__box{background:var(--kpt-color-primary);border-color:var(--kpt-color-primary)}.kpt-checkbox__input:checked+.kpt-checkbox__box .kpt-checkbox__check{opacity:1}.kpt-checkbox__input:focus-visible+.kpt-checkbox__box{outline:var(--kpt-border-width-medium, 2px) solid var(--kpt-color-focus-ring);outline-offset:2px}.kpt-checkbox__input[aria-invalid=true]+.kpt-checkbox__box{border-color:var(--kpt-form-field-border-error)}}\n"] }]
1687
2037
  }], null, { checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }, { type: i0.Output, args: ["checkedChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], touch: [{ type: i0.Output, args: ["touch"] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }] }); })();
1688
2038
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptCheckbox, { className: "KptCheckbox", filePath: "lib/checkbox/checkbox.component.ts", lineNumber: 44 }); })();
1689
2039
 
@@ -1778,7 +2128,7 @@ class KptSwitch {
1778
2128
  i0.ɵɵconditional(ctx.label() && ctx.labelPosition() === "end" ? 5 : -1);
1779
2129
  i0.ɵɵadvance();
1780
2130
  i0.ɵɵconditional(ctx.hasStateLabels() ? 6 : -1);
1781
- } }, styles: ["@layer kpt.components{.kpt-switch{display:inline-flex;align-items:center;gap:var(--%NS%kpt-space-2, .5rem);cursor:pointer;font-size:var(--%NS%kpt-font-size-sm, .875rem);color:var(--%NS%kpt-color-on-surface)}.kpt-switch--disabled{cursor:not-allowed;opacity:.55}.kpt-switch__input{position:absolute;opacity:0;width:1px;height:1px}.kpt-switch__track{position:relative;display:inline-block;width:2.25rem;height:1.25rem;flex-shrink:0;border-radius:var(--%NS%kpt-radius-full, 9999px);background:var(--%NS%kpt-color-border-strong);transition:background-color var(--%NS%kpt-motion-duration-base, .2s) var(--%NS%kpt-motion-easing-standard)}.kpt-switch__thumb{position:absolute;top:.15rem;left:.15rem;width:.95rem;height:.95rem;border-radius:50%;background:var(--%NS%kpt-color-surface);box-shadow:var(--%NS%kpt-elevation-1);transition:transform var(--%NS%kpt-motion-duration-base, .2s) var(--%NS%kpt-motion-easing-standard)}.kpt-switch__state{font-size:var(--%NS%kpt-font-size-sm, .875rem);font-weight:var(--%NS%kpt-font-weight-medium, 500);font-variant-numeric:tabular-nums;color:var(--%NS%kpt-color-on-surface-muted);transition:color var(--%NS%kpt-motion-duration-base, .2s) var(--%NS%kpt-motion-easing-standard)}.kpt-switch__state--on{color:var(--%NS%kpt-color-primary)}.kpt-switch__input:checked+.kpt-switch__track{background:var(--%NS%kpt-color-primary)}.kpt-switch__input:checked+.kpt-switch__track .kpt-switch__thumb{transform:translate(1rem)}.kpt-switch__input:focus-visible+.kpt-switch__track{outline:var(--%NS%kpt-border-width-medium, 2px) solid var(--%NS%kpt-color-focus-ring);outline-offset:2px}@media(prefers-reduced-motion:reduce){.kpt-switch__thumb,.kpt-switch__track{transition:none}}}\n"], encapsulation: 2 }); }
2131
+ } }, styles: ["@layer kpt.components{.kpt-switch{display:inline-flex;position:relative;align-items:center;gap:var(--%NS%kpt-space-2, .5rem);cursor:pointer;font-size:var(--%NS%kpt-font-size-sm, .875rem);color:var(--%NS%kpt-color-on-surface)}.kpt-switch--disabled{cursor:not-allowed;opacity:.55}.kpt-switch__input{position:absolute;opacity:0;width:1px;height:1px}.kpt-switch__track{position:relative;display:inline-block;width:2.25rem;height:1.25rem;flex-shrink:0;border-radius:var(--%NS%kpt-radius-full, 9999px);background:var(--%NS%kpt-color-border-strong);transition:background-color var(--%NS%kpt-motion-duration-base, .2s) var(--%NS%kpt-motion-easing-standard)}.kpt-switch__thumb{position:absolute;top:.15rem;left:.15rem;width:.95rem;height:.95rem;border-radius:50%;background:var(--%NS%kpt-color-surface);box-shadow:var(--%NS%kpt-elevation-1);transition:transform var(--%NS%kpt-motion-duration-base, .2s) var(--%NS%kpt-motion-easing-standard)}.kpt-switch__state{font-size:var(--%NS%kpt-font-size-sm, .875rem);font-weight:var(--%NS%kpt-font-weight-medium, 500);font-variant-numeric:tabular-nums;color:var(--%NS%kpt-color-on-surface-muted);transition:color var(--%NS%kpt-motion-duration-base, .2s) var(--%NS%kpt-motion-easing-standard)}.kpt-switch__state--on{color:var(--%NS%kpt-color-primary)}.kpt-switch__input:checked+.kpt-switch__track{background:var(--%NS%kpt-color-primary)}.kpt-switch__input:checked+.kpt-switch__track .kpt-switch__thumb{transform:translate(1rem)}.kpt-switch__input:focus-visible+.kpt-switch__track{outline:var(--%NS%kpt-border-width-medium, 2px) solid var(--%NS%kpt-color-focus-ring);outline-offset:2px}@media(prefers-reduced-motion:reduce){.kpt-switch__thumb,.kpt-switch__track{transition:none}}}\n"], encapsulation: 2 }); }
1782
2132
  }
1783
2133
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptSwitch, [{
1784
2134
  type: Component,
@@ -1806,7 +2156,7 @@ class KptSwitch {
1806
2156
  }
1807
2157
  <ng-content />
1808
2158
  </label>
1809
- `, host: { class: 'kpt-switch-host' }, styles: ["@layer kpt.components{.kpt-switch{display:inline-flex;align-items:center;gap:var(--kpt-space-2, .5rem);cursor:pointer;font-size:var(--kpt-font-size-sm, .875rem);color:var(--kpt-color-on-surface)}.kpt-switch--disabled{cursor:not-allowed;opacity:.55}.kpt-switch__input{position:absolute;opacity:0;width:1px;height:1px}.kpt-switch__track{position:relative;display:inline-block;width:2.25rem;height:1.25rem;flex-shrink:0;border-radius:var(--kpt-radius-full, 9999px);background:var(--kpt-color-border-strong);transition:background-color var(--kpt-motion-duration-base, .2s) var(--kpt-motion-easing-standard)}.kpt-switch__thumb{position:absolute;top:.15rem;left:.15rem;width:.95rem;height:.95rem;border-radius:50%;background:var(--kpt-color-surface);box-shadow:var(--kpt-elevation-1);transition:transform var(--kpt-motion-duration-base, .2s) var(--kpt-motion-easing-standard)}.kpt-switch__state{font-size:var(--kpt-font-size-sm, .875rem);font-weight:var(--kpt-font-weight-medium, 500);font-variant-numeric:tabular-nums;color:var(--kpt-color-on-surface-muted);transition:color var(--kpt-motion-duration-base, .2s) var(--kpt-motion-easing-standard)}.kpt-switch__state--on{color:var(--kpt-color-primary)}.kpt-switch__input:checked+.kpt-switch__track{background:var(--kpt-color-primary)}.kpt-switch__input:checked+.kpt-switch__track .kpt-switch__thumb{transform:translate(1rem)}.kpt-switch__input:focus-visible+.kpt-switch__track{outline:var(--kpt-border-width-medium, 2px) solid var(--kpt-color-focus-ring);outline-offset:2px}@media(prefers-reduced-motion:reduce){.kpt-switch__thumb,.kpt-switch__track{transition:none}}}\n"] }]
2159
+ `, host: { class: 'kpt-switch-host' }, styles: ["@layer kpt.components{.kpt-switch{display:inline-flex;position:relative;align-items:center;gap:var(--kpt-space-2, .5rem);cursor:pointer;font-size:var(--kpt-font-size-sm, .875rem);color:var(--kpt-color-on-surface)}.kpt-switch--disabled{cursor:not-allowed;opacity:.55}.kpt-switch__input{position:absolute;opacity:0;width:1px;height:1px}.kpt-switch__track{position:relative;display:inline-block;width:2.25rem;height:1.25rem;flex-shrink:0;border-radius:var(--kpt-radius-full, 9999px);background:var(--kpt-color-border-strong);transition:background-color var(--kpt-motion-duration-base, .2s) var(--kpt-motion-easing-standard)}.kpt-switch__thumb{position:absolute;top:.15rem;left:.15rem;width:.95rem;height:.95rem;border-radius:50%;background:var(--kpt-color-surface);box-shadow:var(--kpt-elevation-1);transition:transform var(--kpt-motion-duration-base, .2s) var(--kpt-motion-easing-standard)}.kpt-switch__state{font-size:var(--kpt-font-size-sm, .875rem);font-weight:var(--kpt-font-weight-medium, 500);font-variant-numeric:tabular-nums;color:var(--kpt-color-on-surface-muted);transition:color var(--kpt-motion-duration-base, .2s) var(--kpt-motion-easing-standard)}.kpt-switch__state--on{color:var(--kpt-color-primary)}.kpt-switch__input:checked+.kpt-switch__track{background:var(--kpt-color-primary)}.kpt-switch__input:checked+.kpt-switch__track .kpt-switch__thumb{transform:translate(1rem)}.kpt-switch__input:focus-visible+.kpt-switch__track{outline:var(--kpt-border-width-medium, 2px) solid var(--kpt-color-focus-ring);outline-offset:2px}@media(prefers-reduced-motion:reduce){.kpt-switch__thumb,.kpt-switch__track{transition:none}}}\n"] }]
1810
2160
  }], null, { checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }, { type: i0.Output, args: ["checkedChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], touch: [{ type: i0.Output, args: ["touch"] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], labelPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelPosition", required: false }] }], onLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "onLabel", required: false }] }], offLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "offLabel", required: false }] }] }); })();
1811
2161
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptSwitch, { className: "KptSwitch", filePath: "lib/switch/switch.component.ts", lineNumber: 53 }); })();
1812
2162
 
@@ -1980,7 +2330,7 @@ class KptRadioGroup {
1980
2330
  i0.ɵɵattribute("aria-invalid", ctx.showInvalid() ? "true" : null);
1981
2331
  i0.ɵɵadvance();
1982
2332
  i0.ɵɵrepeater(ctx.options());
1983
- } }, styles: ["@layer kpt.components{.kpt-radio-group{display:flex;flex-direction:column;gap:var(--%NS%kpt-space-2, .5rem)}.kpt-radio{display:inline-flex;align-items:center;gap:var(--%NS%kpt-space-2, .5rem);cursor:pointer;font-size:var(--%NS%kpt-font-size-sm, .875rem);color:var(--%NS%kpt-color-on-surface)}.kpt-radio--disabled{cursor:not-allowed;opacity:.55}.kpt-radio__input{position:absolute;opacity:0;width:1px;height:1px}.kpt-radio__dot{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:1.15rem;height:1.15rem;flex-shrink:0;border:var(--%NS%kpt-border-width-medium, 2px) solid var(--%NS%kpt-form-field-border);border-radius:50%;background:var(--%NS%kpt-form-field-bg);transition:border-color var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-radio__dot:after{content:\"\";width:.5rem;height:.5rem;border-radius:50%;background:var(--%NS%kpt-color-primary);transform:scale(0);transition:transform var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-radio__input:checked+.kpt-radio__dot{border-color:var(--%NS%kpt-color-primary)}.kpt-radio__input:checked+.kpt-radio__dot:after{transform:scale(1)}.kpt-radio__input:focus-visible+.kpt-radio__dot{outline:var(--%NS%kpt-border-width-medium, 2px) solid var(--%NS%kpt-color-focus-ring);outline-offset:2px}}\n"], encapsulation: 2 }); }
2333
+ } }, styles: ["@layer kpt.components{.kpt-radio-group{display:flex;flex-direction:column;gap:var(--%NS%kpt-space-2, .5rem)}.kpt-radio{display:inline-flex;position:relative;align-items:center;gap:var(--%NS%kpt-space-2, .5rem);cursor:pointer;font-size:var(--%NS%kpt-font-size-sm, .875rem);color:var(--%NS%kpt-color-on-surface)}.kpt-radio--disabled{cursor:not-allowed;opacity:.55}.kpt-radio__input{position:absolute;opacity:0;width:1px;height:1px}.kpt-radio__dot{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:1.15rem;height:1.15rem;flex-shrink:0;border:var(--%NS%kpt-border-width-medium, 2px) solid var(--%NS%kpt-form-field-border);border-radius:50%;background:var(--%NS%kpt-form-field-bg);transition:border-color var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-radio__dot:after{content:\"\";width:.5rem;height:.5rem;border-radius:50%;background:var(--%NS%kpt-color-primary);transform:scale(0);transition:transform var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-radio__input:checked+.kpt-radio__dot{border-color:var(--%NS%kpt-color-primary)}.kpt-radio__input:checked+.kpt-radio__dot:after{transform:scale(1)}.kpt-radio__input:focus-visible+.kpt-radio__dot{outline:var(--%NS%kpt-border-width-medium, 2px) solid var(--%NS%kpt-color-focus-ring);outline-offset:2px}}\n"], encapsulation: 2 }); }
1984
2334
  }
1985
2335
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptRadioGroup, [{
1986
2336
  type: Component,
@@ -2002,7 +2352,7 @@ class KptRadioGroup {
2002
2352
  </label>
2003
2353
  }
2004
2354
  </div>
2005
- `, host: { class: 'kpt-radio-group-host' }, styles: ["@layer kpt.components{.kpt-radio-group{display:flex;flex-direction:column;gap:var(--kpt-space-2, .5rem)}.kpt-radio{display:inline-flex;align-items:center;gap:var(--kpt-space-2, .5rem);cursor:pointer;font-size:var(--kpt-font-size-sm, .875rem);color:var(--kpt-color-on-surface)}.kpt-radio--disabled{cursor:not-allowed;opacity:.55}.kpt-radio__input{position:absolute;opacity:0;width:1px;height:1px}.kpt-radio__dot{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:1.15rem;height:1.15rem;flex-shrink:0;border:var(--kpt-border-width-medium, 2px) solid var(--kpt-form-field-border);border-radius:50%;background:var(--kpt-form-field-bg);transition:border-color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-radio__dot:after{content:\"\";width:.5rem;height:.5rem;border-radius:50%;background:var(--kpt-color-primary);transform:scale(0);transition:transform var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-radio__input:checked+.kpt-radio__dot{border-color:var(--kpt-color-primary)}.kpt-radio__input:checked+.kpt-radio__dot:after{transform:scale(1)}.kpt-radio__input:focus-visible+.kpt-radio__dot{outline:var(--kpt-border-width-medium, 2px) solid var(--kpt-color-focus-ring);outline-offset:2px}}\n"] }]
2355
+ `, host: { class: 'kpt-radio-group-host' }, styles: ["@layer kpt.components{.kpt-radio-group{display:flex;flex-direction:column;gap:var(--kpt-space-2, .5rem)}.kpt-radio{display:inline-flex;position:relative;align-items:center;gap:var(--kpt-space-2, .5rem);cursor:pointer;font-size:var(--kpt-font-size-sm, .875rem);color:var(--kpt-color-on-surface)}.kpt-radio--disabled{cursor:not-allowed;opacity:.55}.kpt-radio__input{position:absolute;opacity:0;width:1px;height:1px}.kpt-radio__dot{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:1.15rem;height:1.15rem;flex-shrink:0;border:var(--kpt-border-width-medium, 2px) solid var(--kpt-form-field-border);border-radius:50%;background:var(--kpt-form-field-bg);transition:border-color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-radio__dot:after{content:\"\";width:.5rem;height:.5rem;border-radius:50%;background:var(--kpt-color-primary);transform:scale(0);transition:transform var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-radio__input:checked+.kpt-radio__dot{border-color:var(--kpt-color-primary)}.kpt-radio__input:checked+.kpt-radio__dot:after{transform:scale(1)}.kpt-radio__input:focus-visible+.kpt-radio__dot{outline:var(--kpt-border-width-medium, 2px) solid var(--kpt-color-focus-ring);outline-offset:2px}}\n"] }]
2006
2356
  }], null, { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], touch: [{ type: i0.Output, args: ["touch"] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }] }); })();
2007
2357
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptRadioGroup, { className: "KptRadioGroup", filePath: "lib/radio-group/radio-group.component.ts", lineNumber: 46 }); })();
2008
2358
 
@@ -2179,8 +2529,12 @@ class KptSelect {
2179
2529
  return this.multiple() ? '' : (sel[0]?.label ?? '');
2180
2530
  }, /* @ts-ignore */
2181
2531
  ...(ngDevMode ? [{ debugName: "singleLabel" }] : /* istanbul ignore next */ []));
2182
- this.hasValue = computed(() => this.selectedOptions().length > 0, /* @ts-ignore */
2183
- ...(ngDevMode ? [{ debugName: "hasValue" }] : /* istanbul ignore next */ []));
2532
+ /**
2533
+ * Czy wybrano jakąkolwiek opcję. Publiczne — `kpt-form-field` czyta to przez
2534
+ * `KPT_FORM_FIELD_CONTROL`, żeby unieść etykietę Float Label nad wybraną wartość.
2535
+ */
2536
+ this.filled = computed(() => this.selectedOptions().length > 0, /* @ts-ignore */
2537
+ ...(ngDevMode ? [{ debugName: "filled" }] : /* istanbul ignore next */ []));
2184
2538
  }
2185
2539
  isSelected(opt) {
2186
2540
  return this.selectedValues().includes(opt.value);
@@ -2255,7 +2609,7 @@ class KptSelect {
2255
2609
  }
2256
2610
  }
2257
2611
  static { this.ɵfac = function KptSelect_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptSelect)(); }; }
2258
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptSelect, selectors: [["kpt-select"]], hostAttrs: [1, "kpt-select-host"], inputs: { options: [1, "options"], placeholder: [1, "placeholder"], multiple: [1, "multiple"], filter: [1, "filter"], disabled: [1, "disabled"], invalid: [1, "invalid"], touched: [1, "touched"], value: [1, "value"] }, outputs: { value: "valueChange", touch: "touch" }, decls: 8, vars: 14, consts: [["trigger", "cdkOverlayOrigin"], ["cdkOverlayOrigin", "", "role", "combobox", "tabindex", "0", 1, "kpt-select", 3, "click", "keydown", "blur"], [1, "kpt-select__value"], [1, "kpt-select__single"], [1, "kpt-select__placeholder"], ["name", "chevron-down", 1, "kpt-select__chevron"], ["cdkConnectedOverlay", "", "cdkConnectedOverlayBackdropClass", "cdk-overlay-transparent-backdrop", 3, "backdropClick", "detach", "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen", "cdkConnectedOverlayPositions", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayWidth"], [1, "kpt-select__chip"], ["type", "button", 1, "kpt-select__chip-remove", 3, "click"], ["name", "x"], [1, "kpt-select__panel", 3, "keydown"], [1, "kpt-select__search"], ["role", "listbox", 1, "kpt-select__list"], ["role", "option", 1, "kpt-select__option", 3, "kpt-select__option--selected", "kpt-select__option--active", "kpt-select__option--disabled"], [1, "kpt-select__empty"], ["name", "search"], ["type", "text", 1, "kpt-select__search-input", 3, "input", "value"], ["role", "option", 1, "kpt-select__option", 3, "click", "mouseenter"], [1, "kpt-select__check", 3, "is-on"], [1, "kpt-select__option-label"], ["name", "check", 1, "kpt-select__option-tick"], [1, "kpt-select__check"], ["name", "check"]], template: function KptSelect_Template(rf, ctx) { if (rf & 1) {
2612
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptSelect, selectors: [["kpt-select"]], hostAttrs: [1, "kpt-select-host"], inputs: { options: [1, "options"], placeholder: [1, "placeholder"], multiple: [1, "multiple"], filter: [1, "filter"], disabled: [1, "disabled"], invalid: [1, "invalid"], touched: [1, "touched"], value: [1, "value"] }, outputs: { value: "valueChange", touch: "touch" }, features: [i0.ɵɵProvidersFeature([{ provide: KPT_FORM_FIELD_CONTROL, useExisting: forwardRef(() => KptSelect) }])], decls: 8, vars: 14, consts: [["trigger", "cdkOverlayOrigin"], ["cdkOverlayOrigin", "", "role", "combobox", "tabindex", "0", 1, "kpt-select", 3, "click", "keydown", "blur"], [1, "kpt-select__value"], [1, "kpt-select__single"], [1, "kpt-select__placeholder"], ["name", "chevron-down", 1, "kpt-select__chevron"], ["cdkConnectedOverlay", "", "cdkConnectedOverlayBackdropClass", "cdk-overlay-transparent-backdrop", 3, "backdropClick", "detach", "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen", "cdkConnectedOverlayPositions", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayWidth"], [1, "kpt-select__chip"], ["type", "button", 1, "kpt-select__chip-remove", 3, "click"], ["name", "x"], [1, "kpt-select__panel", 3, "keydown"], [1, "kpt-select__search"], ["role", "listbox", 1, "kpt-select__list"], ["role", "option", 1, "kpt-select__option", 3, "kpt-select__option--selected", "kpt-select__option--active", "kpt-select__option--disabled"], [1, "kpt-select__empty"], ["name", "search"], ["type", "text", 1, "kpt-select__search-input", 3, "input", "value"], ["role", "option", 1, "kpt-select__option", 3, "click", "mouseenter"], [1, "kpt-select__check", 3, "is-on"], [1, "kpt-select__option-label"], ["name", "check", 1, "kpt-select__option-tick"], [1, "kpt-select__check"], ["name", "check"]], template: function KptSelect_Template(rf, ctx) { if (rf & 1) {
2259
2613
  i0.ɵɵelementStart(0, "div", 1, 0);
2260
2614
  i0.ɵɵlistener("click", function KptSelect_Template_div_click_0_listener() { return ctx.toggleOpen(); })("keydown", function KptSelect_Template_div_keydown_0_listener($event) { return ctx.onTriggerKeydown($event); })("blur", function KptSelect_Template_div_blur_0_listener() { return ctx.touch.emit(); });
2261
2615
  i0.ɵɵelementStart(2, "div", 2);
@@ -2270,16 +2624,16 @@ class KptSelect {
2270
2624
  i0.ɵɵclassProp("kpt-select--open", ctx.open())("kpt-select--disabled", ctx.disabled())("kpt-select--invalid", ctx.showInvalid());
2271
2625
  i0.ɵɵattribute("aria-expanded", ctx.open())("aria-disabled", ctx.disabled() || null);
2272
2626
  i0.ɵɵadvance(3);
2273
- i0.ɵɵconditional(ctx.multiple() && ctx.selectedOptions().length ? 3 : !ctx.multiple() && ctx.hasValue() ? 4 : 5);
2627
+ i0.ɵɵconditional(ctx.multiple() && ctx.selectedOptions().length ? 3 : !ctx.multiple() && ctx.filled() ? 4 : 5);
2274
2628
  i0.ɵɵadvance(4);
2275
2629
  i0.ɵɵproperty("cdkConnectedOverlayOrigin", trigger_r9)("cdkConnectedOverlayOpen", ctx.open())("cdkConnectedOverlayPositions", ctx.positions)("cdkConnectedOverlayHasBackdrop", true)("cdkConnectedOverlayWidth", trigger_r9.elementRef.nativeElement.offsetWidth);
2276
2630
  } }, dependencies: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon], styles: ["@layer kpt.components{.kpt-select-host{display:block}.kpt-select{display:flex;align-items:center;gap:var(--%NS%kpt-space-2, .5rem);min-height:2.5rem;padding:.35rem var(--%NS%kpt-space-3, .75rem);box-sizing:border-box;border:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-form-field-border);border-radius:var(--%NS%kpt-form-field-radius, .5rem);background:var(--%NS%kpt-form-field-bg);color:var(--%NS%kpt-form-field-text);font-size:var(--%NS%kpt-font-size-sm, .875rem);cursor:pointer;transition:border-color var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-select:hover:not(.kpt-select--disabled){border-color:var(--%NS%kpt-form-field-border-hover)}.kpt-select:focus-visible,.kpt-select.kpt-select--open{outline:none;border-color:var(--%NS%kpt-form-field-border-focus);box-shadow:0 0 0 2px color-mix(in oklch,var(--%NS%kpt-form-field-border-focus) 30%,transparent)}.kpt-select.kpt-select--invalid{border-color:var(--%NS%kpt-form-field-border-error)}.kpt-select.kpt-select--disabled{cursor:not-allowed;opacity:.6;background:var(--%NS%kpt-color-surface-variant)}.kpt-select__value{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}.kpt-select__placeholder{color:var(--%NS%kpt-form-field-placeholder)}.kpt-select__single{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpt-select__chip{display:inline-flex;align-items:center;gap:.25rem;padding:.1rem .25rem .1rem .5rem;border-radius:var(--%NS%kpt-radius-sm, .25rem);background:var(--%NS%kpt-color-muted);color:var(--%NS%kpt-color-on-muted);font-size:var(--%NS%kpt-font-size-xs, .75rem)}.kpt-select__chip-remove{display:inline-flex;border:0;background:none;cursor:pointer;color:inherit;padding:0;opacity:.7}.kpt-select__chip-remove:hover{opacity:1}.kpt-select__chevron{color:var(--%NS%kpt-color-on-surface-muted);transition:transform var(--%NS%kpt-motion-duration-fast, .12s) var(--%NS%kpt-motion-easing-standard)}.kpt-select.kpt-select--open .kpt-select__chevron{transform:rotate(180deg)}.kpt-select__panel{background:var(--%NS%kpt-color-surface-raised);border:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-color-border);border-radius:var(--%NS%kpt-radius-md, .5rem);box-shadow:var(--%NS%kpt-elevation-3);overflow:hidden;font-size:var(--%NS%kpt-font-size-sm, .875rem);color:var(--%NS%kpt-color-on-surface)}.kpt-select__search{display:flex;align-items:center;gap:var(--%NS%kpt-space-2, .5rem);padding:var(--%NS%kpt-space-2, .5rem) var(--%NS%kpt-space-3, .75rem);border-bottom:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-color-border);color:var(--%NS%kpt-color-on-surface-muted)}.kpt-select__search-input{flex:1;min-width:0;border:0;background:none;outline:none;color:var(--%NS%kpt-color-on-surface);font:inherit}.kpt-select__search-input::placeholder{color:var(--%NS%kpt-color-on-surface-muted)}.kpt-select__list{list-style:none;margin:0;padding:.25rem;max-height:15rem;overflow-y:auto}.kpt-select__option{display:flex;align-items:center;gap:var(--%NS%kpt-space-2, .5rem);padding:.45rem .6rem;border-radius:var(--%NS%kpt-radius-sm, .25rem);cursor:pointer}.kpt-select__option--active{background:var(--%NS%kpt-color-surface-variant)}.kpt-select__option--selected{color:var(--%NS%kpt-color-on-surface);font-weight:var(--%NS%kpt-font-weight-medium, 500)}.kpt-select__option--disabled{opacity:.45;cursor:not-allowed}.kpt-select__option-label{flex:1;min-width:0}.kpt-select__option-tick{color:var(--%NS%kpt-color-primary)}.kpt-select__check{display:inline-flex;align-items:center;justify-content:center;width:1.05rem;height:1.05rem;flex-shrink:0;border:var(--%NS%kpt-border-width-medium, 2px) solid var(--%NS%kpt-form-field-border);border-radius:var(--%NS%kpt-radius-sm, .25rem);color:var(--%NS%kpt-color-on-primary);font-size:.7rem}.kpt-select__check kpt-icon{opacity:0}.kpt-select__check.is-on{background:var(--%NS%kpt-color-primary);border-color:var(--%NS%kpt-color-primary)}.kpt-select__check.is-on kpt-icon{opacity:1}.kpt-select__empty{list-style:none;padding:.75rem .6rem;color:var(--%NS%kpt-color-on-surface-muted);text-align:center}}\n"], encapsulation: 2 }); }
2277
2631
  }
2278
2632
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptSelect, [{
2279
2633
  type: Component,
2280
- args: [{ selector: 'kpt-select', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon], host: { class: 'kpt-select-host' }, template: "<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]=\"showInvalid()\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"toggleOpen()\"\n (keydown)=\"onTriggerKeydown($event)\"\n (blur)=\"touch.emit()\"\n>\n <div class=\"kpt-select__value\">\n @if (multiple() && selectedOptions().length) {\n @for (opt of selectedOptions(); track opt.value) {\n <span class=\"kpt-select__chip\">\n {{ opt.label }}\n <button type=\"button\" class=\"kpt-select__chip-remove\" (click)=\"removeChip(opt, $event)\" [attr.aria-label]=\"i18n.t('select.removeChip')\">\n <kpt-icon name=\"x\" />\n </button>\n </span>\n }\n } @else if (!multiple() && hasValue()) {\n <span class=\"kpt-select__single\">{{ singleLabel() }}</span>\n } @else {\n <span class=\"kpt-select__placeholder\">{{ placeholder() }}</span>\n }\n </div>\n <kpt-icon class=\"kpt-select__chevron\" name=\"chevron-down\" />\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayWidth]=\"trigger.elementRef.nativeElement.offsetWidth\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div class=\"kpt-select__panel\" (keydown)=\"onPanelKeydown($event)\">\n @if (filter()) {\n <div class=\"kpt-select__search\">\n <kpt-icon name=\"search\" />\n <input\n type=\"text\"\n class=\"kpt-select__search-input\"\n [value]=\"filterText()\"\n (input)=\"onFilterInput($event)\"\n [attr.placeholder]=\"i18n.t('select.search')\"\n />\n </div>\n }\n <ul class=\"kpt-select__list\" role=\"listbox\" [attr.aria-multiselectable]=\"multiple()\">\n @for (opt of filteredOptions(); track opt.value; let i = $index) {\n <li\n class=\"kpt-select__option\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(opt)\"\n [class.kpt-select__option--selected]=\"isSelected(opt)\"\n [class.kpt-select__option--active]=\"i === activeIndex()\"\n [class.kpt-select__option--disabled]=\"opt.disabled\"\n (click)=\"pick(opt)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >\n @if (multiple()) {\n <span class=\"kpt-select__check\" [class.is-on]=\"isSelected(opt)\"><kpt-icon name=\"check\" /></span>\n }\n <span class=\"kpt-select__option-label\">{{ opt.label }}</span>\n @if (!multiple() && isSelected(opt)) {\n <kpt-icon class=\"kpt-select__option-tick\" name=\"check\" />\n }\n </li>\n } @empty {\n <li class=\"kpt-select__empty\">{{ i18n.t('select.noResults') }}</li>\n }\n </ul>\n </div>\n</ng-template>\n", styles: ["@layer kpt.components{.kpt-select-host{display:block}.kpt-select{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);min-height:2.5rem;padding:.35rem var(--kpt-space-3, .75rem);box-sizing:border-box;border:var(--kpt-border-width-thin, 1px) solid var(--kpt-form-field-border);border-radius:var(--kpt-form-field-radius, .5rem);background:var(--kpt-form-field-bg);color:var(--kpt-form-field-text);font-size:var(--kpt-font-size-sm, .875rem);cursor:pointer;transition:border-color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-select:hover:not(.kpt-select--disabled){border-color:var(--kpt-form-field-border-hover)}.kpt-select:focus-visible,.kpt-select.kpt-select--open{outline:none;border-color:var(--kpt-form-field-border-focus);box-shadow:0 0 0 2px color-mix(in oklch,var(--kpt-form-field-border-focus) 30%,transparent)}.kpt-select.kpt-select--invalid{border-color:var(--kpt-form-field-border-error)}.kpt-select.kpt-select--disabled{cursor:not-allowed;opacity:.6;background:var(--kpt-color-surface-variant)}.kpt-select__value{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}.kpt-select__placeholder{color:var(--kpt-form-field-placeholder)}.kpt-select__single{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpt-select__chip{display:inline-flex;align-items:center;gap:.25rem;padding:.1rem .25rem .1rem .5rem;border-radius:var(--kpt-radius-sm, .25rem);background:var(--kpt-color-muted);color:var(--kpt-color-on-muted);font-size:var(--kpt-font-size-xs, .75rem)}.kpt-select__chip-remove{display:inline-flex;border:0;background:none;cursor:pointer;color:inherit;padding:0;opacity:.7}.kpt-select__chip-remove:hover{opacity:1}.kpt-select__chevron{color:var(--kpt-color-on-surface-muted);transition:transform var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-select.kpt-select--open .kpt-select__chevron{transform:rotate(180deg)}.kpt-select__panel{background:var(--kpt-color-surface-raised);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-md, .5rem);box-shadow:var(--kpt-elevation-3);overflow:hidden;font-size:var(--kpt-font-size-sm, .875rem);color:var(--kpt-color-on-surface)}.kpt-select__search{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);padding:var(--kpt-space-2, .5rem) var(--kpt-space-3, .75rem);border-bottom:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);color:var(--kpt-color-on-surface-muted)}.kpt-select__search-input{flex:1;min-width:0;border:0;background:none;outline:none;color:var(--kpt-color-on-surface);font:inherit}.kpt-select__search-input::placeholder{color:var(--kpt-color-on-surface-muted)}.kpt-select__list{list-style:none;margin:0;padding:.25rem;max-height:15rem;overflow-y:auto}.kpt-select__option{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);padding:.45rem .6rem;border-radius:var(--kpt-radius-sm, .25rem);cursor:pointer}.kpt-select__option--active{background:var(--kpt-color-surface-variant)}.kpt-select__option--selected{color:var(--kpt-color-on-surface);font-weight:var(--kpt-font-weight-medium, 500)}.kpt-select__option--disabled{opacity:.45;cursor:not-allowed}.kpt-select__option-label{flex:1;min-width:0}.kpt-select__option-tick{color:var(--kpt-color-primary)}.kpt-select__check{display:inline-flex;align-items:center;justify-content:center;width:1.05rem;height:1.05rem;flex-shrink:0;border:var(--kpt-border-width-medium, 2px) solid var(--kpt-form-field-border);border-radius:var(--kpt-radius-sm, .25rem);color:var(--kpt-color-on-primary);font-size:.7rem}.kpt-select__check kpt-icon{opacity:0}.kpt-select__check.is-on{background:var(--kpt-color-primary);border-color:var(--kpt-color-primary)}.kpt-select__check.is-on kpt-icon{opacity:1}.kpt-select__empty{list-style:none;padding:.75rem .6rem;color:var(--kpt-color-on-surface-muted);text-align:center}}\n"] }]
2634
+ args: [{ selector: 'kpt-select', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon], host: { class: 'kpt-select-host' }, providers: [{ provide: KPT_FORM_FIELD_CONTROL, useExisting: forwardRef(() => KptSelect) }], template: "<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]=\"showInvalid()\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"toggleOpen()\"\n (keydown)=\"onTriggerKeydown($event)\"\n (blur)=\"touch.emit()\"\n>\n <div class=\"kpt-select__value\">\n @if (multiple() && selectedOptions().length) {\n @for (opt of selectedOptions(); track opt.value) {\n <span class=\"kpt-select__chip\">\n {{ opt.label }}\n <button type=\"button\" class=\"kpt-select__chip-remove\" (click)=\"removeChip(opt, $event)\" [attr.aria-label]=\"i18n.t('select.removeChip')\">\n <kpt-icon name=\"x\" />\n </button>\n </span>\n }\n } @else if (!multiple() && filled()) {\n <span class=\"kpt-select__single\">{{ singleLabel() }}</span>\n } @else {\n <span class=\"kpt-select__placeholder\">{{ placeholder() }}</span>\n }\n </div>\n <kpt-icon class=\"kpt-select__chevron\" name=\"chevron-down\" />\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayWidth]=\"trigger.elementRef.nativeElement.offsetWidth\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div class=\"kpt-select__panel\" (keydown)=\"onPanelKeydown($event)\">\n @if (filter()) {\n <div class=\"kpt-select__search\">\n <kpt-icon name=\"search\" />\n <input\n type=\"text\"\n class=\"kpt-select__search-input\"\n [value]=\"filterText()\"\n (input)=\"onFilterInput($event)\"\n [attr.placeholder]=\"i18n.t('select.search')\"\n />\n </div>\n }\n <ul class=\"kpt-select__list\" role=\"listbox\" [attr.aria-multiselectable]=\"multiple()\">\n @for (opt of filteredOptions(); track opt.value; let i = $index) {\n <li\n class=\"kpt-select__option\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(opt)\"\n [class.kpt-select__option--selected]=\"isSelected(opt)\"\n [class.kpt-select__option--active]=\"i === activeIndex()\"\n [class.kpt-select__option--disabled]=\"opt.disabled\"\n (click)=\"pick(opt)\"\n (mouseenter)=\"activeIndex.set(i)\"\n >\n @if (multiple()) {\n <span class=\"kpt-select__check\" [class.is-on]=\"isSelected(opt)\"><kpt-icon name=\"check\" /></span>\n }\n <span class=\"kpt-select__option-label\">{{ opt.label }}</span>\n @if (!multiple() && isSelected(opt)) {\n <kpt-icon class=\"kpt-select__option-tick\" name=\"check\" />\n }\n </li>\n } @empty {\n <li class=\"kpt-select__empty\">{{ i18n.t('select.noResults') }}</li>\n }\n </ul>\n </div>\n</ng-template>\n", styles: ["@layer kpt.components{.kpt-select-host{display:block}.kpt-select{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);min-height:2.5rem;padding:.35rem var(--kpt-space-3, .75rem);box-sizing:border-box;border:var(--kpt-border-width-thin, 1px) solid var(--kpt-form-field-border);border-radius:var(--kpt-form-field-radius, .5rem);background:var(--kpt-form-field-bg);color:var(--kpt-form-field-text);font-size:var(--kpt-font-size-sm, .875rem);cursor:pointer;transition:border-color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-select:hover:not(.kpt-select--disabled){border-color:var(--kpt-form-field-border-hover)}.kpt-select:focus-visible,.kpt-select.kpt-select--open{outline:none;border-color:var(--kpt-form-field-border-focus);box-shadow:0 0 0 2px color-mix(in oklch,var(--kpt-form-field-border-focus) 30%,transparent)}.kpt-select.kpt-select--invalid{border-color:var(--kpt-form-field-border-error)}.kpt-select.kpt-select--disabled{cursor:not-allowed;opacity:.6;background:var(--kpt-color-surface-variant)}.kpt-select__value{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}.kpt-select__placeholder{color:var(--kpt-form-field-placeholder)}.kpt-select__single{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpt-select__chip{display:inline-flex;align-items:center;gap:.25rem;padding:.1rem .25rem .1rem .5rem;border-radius:var(--kpt-radius-sm, .25rem);background:var(--kpt-color-muted);color:var(--kpt-color-on-muted);font-size:var(--kpt-font-size-xs, .75rem)}.kpt-select__chip-remove{display:inline-flex;border:0;background:none;cursor:pointer;color:inherit;padding:0;opacity:.7}.kpt-select__chip-remove:hover{opacity:1}.kpt-select__chevron{color:var(--kpt-color-on-surface-muted);transition:transform var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-select.kpt-select--open .kpt-select__chevron{transform:rotate(180deg)}.kpt-select__panel{background:var(--kpt-color-surface-raised);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-md, .5rem);box-shadow:var(--kpt-elevation-3);overflow:hidden;font-size:var(--kpt-font-size-sm, .875rem);color:var(--kpt-color-on-surface)}.kpt-select__search{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);padding:var(--kpt-space-2, .5rem) var(--kpt-space-3, .75rem);border-bottom:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);color:var(--kpt-color-on-surface-muted)}.kpt-select__search-input{flex:1;min-width:0;border:0;background:none;outline:none;color:var(--kpt-color-on-surface);font:inherit}.kpt-select__search-input::placeholder{color:var(--kpt-color-on-surface-muted)}.kpt-select__list{list-style:none;margin:0;padding:.25rem;max-height:15rem;overflow-y:auto}.kpt-select__option{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);padding:.45rem .6rem;border-radius:var(--kpt-radius-sm, .25rem);cursor:pointer}.kpt-select__option--active{background:var(--kpt-color-surface-variant)}.kpt-select__option--selected{color:var(--kpt-color-on-surface);font-weight:var(--kpt-font-weight-medium, 500)}.kpt-select__option--disabled{opacity:.45;cursor:not-allowed}.kpt-select__option-label{flex:1;min-width:0}.kpt-select__option-tick{color:var(--kpt-color-primary)}.kpt-select__check{display:inline-flex;align-items:center;justify-content:center;width:1.05rem;height:1.05rem;flex-shrink:0;border:var(--kpt-border-width-medium, 2px) solid var(--kpt-form-field-border);border-radius:var(--kpt-radius-sm, .25rem);color:var(--kpt-color-on-primary);font-size:.7rem}.kpt-select__check kpt-icon{opacity:0}.kpt-select__check.is-on{background:var(--kpt-color-primary);border-color:var(--kpt-color-primary)}.kpt-select__check.is-on kpt-icon{opacity:1}.kpt-select__empty{list-style:none;padding:.75rem .6rem;color:var(--kpt-color-on-surface-muted);text-align:center}}\n"] }]
2281
2635
  }], null, { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], touch: [{ type: i0.Output, args: ["touch"] }] }); })();
2282
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptSelect, { className: "KptSelect", filePath: "lib/select/select.component.ts", lineNumber: 37 }); })();
2636
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptSelect, { className: "KptSelect", filePath: "lib/select/select.component.ts", lineNumber: 40 }); })();
2283
2637
 
2284
2638
  /*
2285
2639
  * Pomocniki nazw dni/miesięcy wyliczane z `Intl` — sterowane bieżącym locale i18n.
@@ -2981,6 +3335,9 @@ class KptDatepicker {
2981
3335
  this.touch = output();
2982
3336
  this.placeholder = input('', /* @ts-ignore */
2983
3337
  ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
3338
+ /** Nazwa dostępna, gdy pola nie opisuje `<label for>` (np. dwa pola w jednym wierszu). */
3339
+ this.ariaLabel = input(null, /* @ts-ignore */
3340
+ ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
2984
3341
  this.displayFormat = input('pl', /* @ts-ignore */
2985
3342
  ...(ngDevMode ? [{ debugName: "displayFormat" }] : /* istanbul ignore next */ []));
2986
3343
  /** Granulacja wyboru. */
@@ -3309,7 +3666,7 @@ class KptDatepicker {
3309
3666
  this.pendingDate.set('');
3310
3667
  }
3311
3668
  static { this.ɵfac = function KptDatepicker_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptDatepicker)(); }; }
3312
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptDatepicker, selectors: [["kpt-datepicker"]], hostAttrs: [1, "kpt-datepicker-host"], inputs: { value: [1, "value"], disabled: [1, "disabled"], invalid: [1, "invalid"], touched: [1, "touched"], placeholder: [1, "placeholder"], displayFormat: [1, "displayFormat"], selectionMode: [1, "selectionMode"], monthDisplay: [1, "monthDisplay"], hourFormat: [1, "hourFormat"], minuteStep: [1, "minuteStep"], minDate: [1, "minDate"], maxDate: [1, "maxDate"] }, outputs: { value: "valueChange", touch: "touch" }, decls: 8, vars: 13, consts: [["trigger", "cdkOverlayOrigin"], ["cdkOverlayOrigin", "", "role", "button", "tabindex", "0", 1, "kpt-datepicker", 3, "click", "keydown.enter", "blur"], [1, "kpt-datepicker__value"], [1, "kpt-datepicker__placeholder"], [1, "kpt-datepicker__spacer"], ["type", "button", 1, "kpt-datepicker__clear"], ["name", "calendar", 1, "kpt-datepicker__icon"], ["cdkConnectedOverlay", "", "cdkConnectedOverlayBackdropClass", "cdk-overlay-transparent-backdrop", 3, "backdropClick", "detach", "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen", "cdkConnectedOverlayPositions", "cdkConnectedOverlayHasBackdrop"], ["type", "button", 1, "kpt-datepicker__clear", 3, "click"], ["name", "x"], [1, "kpt-calendar", 3, "keydown.escape"], [3, "valueChange", "value", "hourFormat", "minuteStep"], [1, "kpt-calendar__footer"], ["size", "sm", 3, "click"], [1, "kpt-calendar__header"], ["type", "button", 1, "kpt-calendar__nav", 3, "click"], ["name", "chevron-left"], [1, "kpt-calendar__title"], ["name", "chevron-right"], [1, "kpt-calendar__weekdays"], [1, "kpt-calendar__weekday"], [1, "kpt-calendar__grid"], ["type", "button", 1, "kpt-calendar__timebar", 3, "click"], ["name", "clock"], ["type", "button", 1, "kpt-calendar__day", 3, "kpt-calendar__day--muted", "kpt-calendar__day--today", "kpt-calendar__day--selected", "disabled"], ["type", "button", 1, "kpt-calendar__day", 3, "click", "disabled"], [1, "kpt-calendar__grid", "kpt-calendar__grid--cells"], ["type", "button", 1, "kpt-calendar__cell", 3, "kpt-calendar__cell--selected", "disabled"], ["type", "button", 1, "kpt-calendar__cell", 3, "click", "disabled"], ["type", "button", 1, "kpt-calendar__cell", 3, "kpt-calendar__cell--selected"], ["type", "button", 1, "kpt-calendar__cell", 3, "click"]], template: function KptDatepicker_Template(rf, ctx) { if (rf & 1) {
3669
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptDatepicker, selectors: [["kpt-datepicker"]], hostAttrs: [1, "kpt-datepicker-host"], inputs: { value: [1, "value"], disabled: [1, "disabled"], invalid: [1, "invalid"], touched: [1, "touched"], placeholder: [1, "placeholder"], ariaLabel: [1, "ariaLabel"], displayFormat: [1, "displayFormat"], selectionMode: [1, "selectionMode"], monthDisplay: [1, "monthDisplay"], hourFormat: [1, "hourFormat"], minuteStep: [1, "minuteStep"], minDate: [1, "minDate"], maxDate: [1, "maxDate"] }, outputs: { value: "valueChange", touch: "touch" }, decls: 8, vars: 15, consts: [["trigger", "cdkOverlayOrigin"], ["cdkOverlayOrigin", "", "role", "button", "tabindex", "0", 1, "kpt-datepicker", 3, "click", "keydown.enter", "blur"], [1, "kpt-datepicker__value"], [1, "kpt-datepicker__placeholder"], [1, "kpt-datepicker__spacer"], ["type", "button", 1, "kpt-datepicker__clear"], [1, "kpt-datepicker__icon", 3, "name"], ["cdkConnectedOverlay", "", "cdkConnectedOverlayBackdropClass", "cdk-overlay-transparent-backdrop", 3, "backdropClick", "detach", "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen", "cdkConnectedOverlayPositions", "cdkConnectedOverlayHasBackdrop"], ["type", "button", 1, "kpt-datepicker__clear", 3, "click"], ["name", "x"], [1, "kpt-calendar", 3, "keydown.escape"], [3, "valueChange", "value", "hourFormat", "minuteStep"], [1, "kpt-calendar__footer"], ["size", "sm", 3, "click"], [1, "kpt-calendar__header"], ["type", "button", 1, "kpt-calendar__nav", 3, "click"], ["name", "chevron-left"], [1, "kpt-calendar__title"], ["name", "chevron-right"], [1, "kpt-calendar__weekdays"], [1, "kpt-calendar__weekday"], [1, "kpt-calendar__grid"], ["type", "button", 1, "kpt-calendar__timebar", 3, "click"], ["name", "clock"], ["type", "button", 1, "kpt-calendar__day", 3, "kpt-calendar__day--muted", "kpt-calendar__day--today", "kpt-calendar__day--selected", "disabled"], ["type", "button", 1, "kpt-calendar__day", 3, "click", "disabled"], [1, "kpt-calendar__grid", "kpt-calendar__grid--cells"], ["type", "button", 1, "kpt-calendar__cell", 3, "kpt-calendar__cell--selected", "disabled"], ["type", "button", 1, "kpt-calendar__cell", 3, "click", "disabled"], ["type", "button", 1, "kpt-calendar__cell", 3, "kpt-calendar__cell--selected"], ["type", "button", 1, "kpt-calendar__cell", 3, "click"]], template: function KptDatepicker_Template(rf, ctx) { if (rf & 1) {
3313
3670
  i0.ɵɵelementStart(0, "div", 1, 0);
3314
3671
  i0.ɵɵlistener("click", function KptDatepicker_Template_div_click_0_listener() { return ctx.toggleOpen(); })("keydown.enter", function KptDatepicker_Template_div_keydown_enter_0_listener() { return ctx.toggleOpen(); })("blur", function KptDatepicker_Template_div_blur_0_listener() { return ctx.touch.emit(); });
3315
3672
  i0.ɵɵconditionalCreate(2, KptDatepicker_Conditional_2_Template, 2, 1, "span", 2)(3, KptDatepicker_Conditional_3_Template, 2, 1, "span", 3);
@@ -3322,19 +3679,21 @@ class KptDatepicker {
3322
3679
  } if (rf & 2) {
3323
3680
  const trigger_r25 = i0.ɵɵreference(1);
3324
3681
  i0.ɵɵclassProp("kpt-datepicker--open", ctx.open())("kpt-datepicker--disabled", ctx.disabled())("kpt-datepicker--invalid", ctx.showInvalid());
3325
- i0.ɵɵattribute("aria-disabled", ctx.disabled() || null);
3682
+ i0.ɵɵattribute("aria-disabled", ctx.disabled() || null)("aria-label", ctx.ariaLabel());
3326
3683
  i0.ɵɵadvance(2);
3327
3684
  i0.ɵɵconditional(ctx.display() ? 2 : 3);
3328
3685
  i0.ɵɵadvance(3);
3329
3686
  i0.ɵɵconditional(ctx.display() ? 5 : -1);
3330
- i0.ɵɵadvance(2);
3687
+ i0.ɵɵadvance();
3688
+ i0.ɵɵproperty("name", ctx.selectionMode() === "time" ? "clock" : "calendar");
3689
+ i0.ɵɵadvance();
3331
3690
  i0.ɵɵproperty("cdkConnectedOverlayOrigin", trigger_r25)("cdkConnectedOverlayOpen", ctx.open())("cdkConnectedOverlayPositions", ctx.positions)("cdkConnectedOverlayHasBackdrop", true);
3332
3691
  } }, dependencies: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon, KptButton, KptClock], styles: ["@layer kpt.components{.kpt-datepicker-host{display:block}.kpt-datepicker{display:flex;align-items:center;gap:var(--%NS%kpt-space-2, .5rem);height:2.5rem;padding-inline:var(--%NS%kpt-space-3, .75rem);box-sizing:border-box;border:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-form-field-border);border-radius:var(--%NS%kpt-form-field-radius, .5rem);background:var(--%NS%kpt-form-field-bg);color:var(--%NS%kpt-form-field-text);font-size:var(--%NS%kpt-font-size-sm, .875rem);cursor:pointer}.kpt-datepicker:hover:not(.kpt-datepicker--disabled){border-color:var(--%NS%kpt-form-field-border-hover)}.kpt-datepicker:focus-visible,.kpt-datepicker.kpt-datepicker--open{outline:none;border-color:var(--%NS%kpt-form-field-border-focus);box-shadow:0 0 0 2px color-mix(in oklch,var(--%NS%kpt-form-field-border-focus) 30%,transparent)}.kpt-datepicker.kpt-datepicker--invalid{border-color:var(--%NS%kpt-form-field-border-error)}.kpt-datepicker.kpt-datepicker--disabled{cursor:not-allowed;opacity:.6;background:var(--%NS%kpt-color-surface-variant)}.kpt-datepicker__placeholder{color:var(--%NS%kpt-form-field-placeholder)}.kpt-datepicker__spacer{flex:1}.kpt-datepicker__icon{color:var(--%NS%kpt-color-on-surface-muted)}.kpt-datepicker__clear{display:inline-flex;border:0;background:none;cursor:pointer;color:var(--%NS%kpt-color-on-surface-muted);padding:0}.kpt-datepicker__clear:hover{color:var(--%NS%kpt-color-on-surface)}.kpt-calendar{width:17rem;padding:var(--%NS%kpt-space-3, .75rem);background:var(--%NS%kpt-color-surface-raised);border:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-color-border);border-radius:var(--%NS%kpt-radius-md, .5rem);box-shadow:var(--%NS%kpt-elevation-3);color:var(--%NS%kpt-color-on-surface);font-size:var(--%NS%kpt-font-size-sm, .875rem)}.kpt-calendar__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--%NS%kpt-space-2, .5rem)}.kpt-calendar__title{font-weight:var(--%NS%kpt-font-weight-semibold, 600);text-transform:capitalize}.kpt-calendar__nav{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:0;border-radius:var(--%NS%kpt-radius-md, .5rem);background:none;color:var(--%NS%kpt-color-on-surface);cursor:pointer}.kpt-calendar__nav:hover{background:var(--%NS%kpt-color-muted)}.kpt-calendar__weekdays,.kpt-calendar__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.kpt-calendar__weekday{text-align:center;font-size:var(--%NS%kpt-font-size-xs, .75rem);color:var(--%NS%kpt-color-on-surface-muted);padding:.25rem 0}.kpt-calendar__day{aspect-ratio:1;border:0;border-radius:var(--%NS%kpt-radius-sm, .25rem);background:none;color:var(--%NS%kpt-color-on-surface);cursor:pointer;font:inherit}.kpt-calendar__day:hover:not(:disabled){background:var(--%NS%kpt-color-muted)}.kpt-calendar__day--muted{color:var(--%NS%kpt-color-on-surface-muted);opacity:.5}.kpt-calendar__day--today{box-shadow:inset 0 0 0 1px var(--%NS%kpt-color-border-strong)}.kpt-calendar__day--selected{background:var(--%NS%kpt-color-primary)!important;color:var(--%NS%kpt-color-on-primary)}.kpt-calendar__day:disabled{opacity:.3;cursor:not-allowed}.kpt-calendar__grid--cells{grid-template-columns:repeat(3,1fr);gap:4px}.kpt-calendar__cell{padding:.6rem .25rem;border:0;border-radius:var(--%NS%kpt-radius-sm, .25rem);background:none;color:var(--%NS%kpt-color-on-surface);cursor:pointer;font:inherit;text-transform:capitalize}.kpt-calendar__cell:hover:not(:disabled){background:var(--%NS%kpt-color-muted)}.kpt-calendar__cell--selected{background:var(--%NS%kpt-color-primary)!important;color:var(--%NS%kpt-color-on-primary)}.kpt-calendar__cell:disabled{opacity:.3;cursor:not-allowed}.kpt-calendar__timebar{display:flex;align-items:center;justify-content:center;gap:var(--%NS%kpt-space-2, .5rem);width:100%;margin-top:var(--%NS%kpt-space-2, .5rem);padding:var(--%NS%kpt-space-2, .5rem);border:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-color-border);border-radius:var(--%NS%kpt-radius-md, .5rem);background:none;color:var(--%NS%kpt-color-on-surface);font:inherit;font-variant-numeric:tabular-nums;cursor:pointer}.kpt-calendar__timebar:hover{background:var(--%NS%kpt-color-muted)}.kpt-calendar__timebar kpt-icon{color:var(--%NS%kpt-color-on-surface-muted)}.kpt-calendar__footer{display:flex;justify-content:flex-end;margin-top:var(--%NS%kpt-space-3, .75rem)}.kpt-calendar--clock{width:16rem}}\n"], encapsulation: 2 }); }
3333
3692
  }
3334
3693
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptDatepicker, [{
3335
3694
  type: Component,
3336
- args: [{ selector: 'kpt-datepicker', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon, KptButton, KptClock], host: { class: 'kpt-datepicker-host' }, template: "<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]=\"showInvalid()\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"toggleOpen()\"\n (keydown.enter)=\"toggleOpen()\"\n (blur)=\"touch.emit()\"\n>\n @if (display()) {\n <span class=\"kpt-datepicker__value\">{{ display() }}</span>\n } @else {\n <span class=\"kpt-datepicker__placeholder\">{{ effectivePlaceholder() }}</span>\n }\n <span class=\"kpt-datepicker__spacer\"></span>\n @if (display()) {\n <button type=\"button\" class=\"kpt-datepicker__clear\" (click)=\"clear($event)\" [attr.aria-label]=\"i18n.t('common.clear')\"><kpt-icon name=\"x\" /></button>\n }\n <kpt-icon class=\"kpt-datepicker__icon\" name=\"calendar\" />\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div class=\"kpt-calendar\" [class.kpt-calendar--clock]=\"selectionMode() === 'time' || (selectionMode() === 'datetime' && dtView() === 'clock')\" (keydown.escape)=\"close()\">\n @switch (selectionMode()) {\n @case ('time') {\n <kpt-clock [(value)]=\"timeStr\" [hourFormat]=\"hourFormat()\" [minuteStep]=\"minuteStep()\" />\n <div class=\"kpt-calendar__footer\">\n <kpt-button size=\"sm\" (click)=\"commit()\">{{ i18n.t('common.done') }}</kpt-button>\n </div>\n }\n @case ('datetime') {\n @if (dtView() === 'calendar') {\n <div class=\"kpt-calendar__header\">\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"prevMonth()\" [attr.aria-label]=\"i18n.t('datepicker.prevMonth')\"><kpt-icon name=\"chevron-left\" /></button>\n <span class=\"kpt-calendar__title\">{{ monthLabel() }}</span>\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"nextMonth()\" [attr.aria-label]=\"i18n.t('datepicker.nextMonth')\"><kpt-icon name=\"chevron-right\" /></button>\n </div>\n <div class=\"kpt-calendar__weekdays\">\n @for (wd of weekdays(); track wd) {\n <span class=\"kpt-calendar__weekday\">{{ wd }}</span>\n }\n </div>\n <div class=\"kpt-calendar__grid\">\n @for (week of weeks(); track $index) {\n @for (cell of week; track cell.iso) {\n <button\n type=\"button\"\n class=\"kpt-calendar__day\"\n [class.kpt-calendar__day--muted]=\"!cell.inMonth\"\n [class.kpt-calendar__day--today]=\"cell.today\"\n [class.kpt-calendar__day--selected]=\"cell.selected\"\n [disabled]=\"cell.disabled\"\n [attr.aria-pressed]=\"cell.selected\"\n (click)=\"selectDay(cell)\"\n >{{ cell.day }}</button>\n }\n }\n </div>\n <button type=\"button\" class=\"kpt-calendar__timebar\" (click)=\"openClock()\">\n <kpt-icon name=\"clock\" />\n <span>{{ timeBarLabel() }}</span>\n </button>\n } @else {\n <div class=\"kpt-calendar__header\">\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"backToCalendar()\" [attr.aria-label]=\"i18n.t('datepicker.calendar')\"><kpt-icon name=\"chevron-left\" /></button>\n <span class=\"kpt-calendar__title\">{{ i18n.t('datepicker.time') }}</span>\n </div>\n <kpt-clock [(value)]=\"timeStr\" [hourFormat]=\"hourFormat()\" [minuteStep]=\"minuteStep()\" />\n }\n <div class=\"kpt-calendar__footer\">\n <kpt-button size=\"sm\" (click)=\"commit()\">{{ i18n.t('common.done') }}</kpt-button>\n </div>\n }\n @case ('monthYear') {\n <div class=\"kpt-calendar__header\">\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"prevYear()\" [attr.aria-label]=\"i18n.t('datepicker.prevYear')\"><kpt-icon name=\"chevron-left\" /></button>\n <span class=\"kpt-calendar__title\">{{ viewYear() }}</span>\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"nextYear()\" [attr.aria-label]=\"i18n.t('datepicker.nextYear')\"><kpt-icon name=\"chevron-right\" /></button>\n </div>\n <div class=\"kpt-calendar__grid kpt-calendar__grid--cells\">\n @for (cell of monthCells(); track cell.value) {\n <button\n type=\"button\"\n class=\"kpt-calendar__cell\"\n [class.kpt-calendar__cell--selected]=\"cell.selected\"\n [disabled]=\"cell.disabled\"\n [attr.aria-pressed]=\"cell.selected\"\n (click)=\"selectCell(cell)\"\n >{{ cell.label }}</button>\n }\n </div>\n }\n @case ('year') {\n <div class=\"kpt-calendar__header\">\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"prevYearPage()\" [attr.aria-label]=\"i18n.t('datepicker.prevYears')\"><kpt-icon name=\"chevron-left\" /></button>\n <span class=\"kpt-calendar__title\">{{ yearRangeLabel() }}</span>\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"nextYearPage()\" [attr.aria-label]=\"i18n.t('datepicker.nextYears')\"><kpt-icon name=\"chevron-right\" /></button>\n </div>\n <div class=\"kpt-calendar__grid kpt-calendar__grid--cells\">\n @for (cell of yearCells(); track cell.value) {\n <button\n type=\"button\"\n class=\"kpt-calendar__cell\"\n [class.kpt-calendar__cell--selected]=\"cell.selected\"\n [disabled]=\"cell.disabled\"\n [attr.aria-pressed]=\"cell.selected\"\n (click)=\"selectCell(cell)\"\n >{{ cell.label }}</button>\n }\n </div>\n }\n @case ('month') {\n <div class=\"kpt-calendar__header\">\n <span class=\"kpt-calendar__title\">{{ i18n.t('datepicker.month') }}</span>\n </div>\n <div class=\"kpt-calendar__grid kpt-calendar__grid--cells\">\n @for (cell of monthCells(); track cell.value) {\n <button\n type=\"button\"\n class=\"kpt-calendar__cell\"\n [class.kpt-calendar__cell--selected]=\"cell.selected\"\n [attr.aria-pressed]=\"cell.selected\"\n (click)=\"selectCell(cell)\"\n >{{ cell.label }}</button>\n }\n </div>\n }\n @default {\n <div class=\"kpt-calendar__header\">\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"prevMonth()\" [attr.aria-label]=\"i18n.t('datepicker.prevMonth')\"><kpt-icon name=\"chevron-left\" /></button>\n <span class=\"kpt-calendar__title\">{{ monthLabel() }}</span>\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"nextMonth()\" [attr.aria-label]=\"i18n.t('datepicker.nextMonth')\"><kpt-icon name=\"chevron-right\" /></button>\n </div>\n <div class=\"kpt-calendar__weekdays\">\n @for (wd of weekdays(); track wd) {\n <span class=\"kpt-calendar__weekday\">{{ wd }}</span>\n }\n </div>\n <div class=\"kpt-calendar__grid\">\n @for (week of weeks(); track $index) {\n @for (cell of week; track cell.iso) {\n <button\n type=\"button\"\n class=\"kpt-calendar__day\"\n [class.kpt-calendar__day--muted]=\"!cell.inMonth\"\n [class.kpt-calendar__day--today]=\"cell.today\"\n [class.kpt-calendar__day--selected]=\"cell.selected\"\n [disabled]=\"cell.disabled\"\n [attr.aria-pressed]=\"cell.selected\"\n (click)=\"selectDay(cell)\"\n >{{ cell.day }}</button>\n }\n }\n </div>\n }\n }\n </div>\n</ng-template>\n", styles: ["@layer kpt.components{.kpt-datepicker-host{display:block}.kpt-datepicker{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);height:2.5rem;padding-inline:var(--kpt-space-3, .75rem);box-sizing:border-box;border:var(--kpt-border-width-thin, 1px) solid var(--kpt-form-field-border);border-radius:var(--kpt-form-field-radius, .5rem);background:var(--kpt-form-field-bg);color:var(--kpt-form-field-text);font-size:var(--kpt-font-size-sm, .875rem);cursor:pointer}.kpt-datepicker:hover:not(.kpt-datepicker--disabled){border-color:var(--kpt-form-field-border-hover)}.kpt-datepicker:focus-visible,.kpt-datepicker.kpt-datepicker--open{outline:none;border-color:var(--kpt-form-field-border-focus);box-shadow:0 0 0 2px color-mix(in oklch,var(--kpt-form-field-border-focus) 30%,transparent)}.kpt-datepicker.kpt-datepicker--invalid{border-color:var(--kpt-form-field-border-error)}.kpt-datepicker.kpt-datepicker--disabled{cursor:not-allowed;opacity:.6;background:var(--kpt-color-surface-variant)}.kpt-datepicker__placeholder{color:var(--kpt-form-field-placeholder)}.kpt-datepicker__spacer{flex:1}.kpt-datepicker__icon{color:var(--kpt-color-on-surface-muted)}.kpt-datepicker__clear{display:inline-flex;border:0;background:none;cursor:pointer;color:var(--kpt-color-on-surface-muted);padding:0}.kpt-datepicker__clear:hover{color:var(--kpt-color-on-surface)}.kpt-calendar{width:17rem;padding:var(--kpt-space-3, .75rem);background:var(--kpt-color-surface-raised);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-md, .5rem);box-shadow:var(--kpt-elevation-3);color:var(--kpt-color-on-surface);font-size:var(--kpt-font-size-sm, .875rem)}.kpt-calendar__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--kpt-space-2, .5rem)}.kpt-calendar__title{font-weight:var(--kpt-font-weight-semibold, 600);text-transform:capitalize}.kpt-calendar__nav{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:0;border-radius:var(--kpt-radius-md, .5rem);background:none;color:var(--kpt-color-on-surface);cursor:pointer}.kpt-calendar__nav:hover{background:var(--kpt-color-muted)}.kpt-calendar__weekdays,.kpt-calendar__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.kpt-calendar__weekday{text-align:center;font-size:var(--kpt-font-size-xs, .75rem);color:var(--kpt-color-on-surface-muted);padding:.25rem 0}.kpt-calendar__day{aspect-ratio:1;border:0;border-radius:var(--kpt-radius-sm, .25rem);background:none;color:var(--kpt-color-on-surface);cursor:pointer;font:inherit}.kpt-calendar__day:hover:not(:disabled){background:var(--kpt-color-muted)}.kpt-calendar__day--muted{color:var(--kpt-color-on-surface-muted);opacity:.5}.kpt-calendar__day--today{box-shadow:inset 0 0 0 1px var(--kpt-color-border-strong)}.kpt-calendar__day--selected{background:var(--kpt-color-primary)!important;color:var(--kpt-color-on-primary)}.kpt-calendar__day:disabled{opacity:.3;cursor:not-allowed}.kpt-calendar__grid--cells{grid-template-columns:repeat(3,1fr);gap:4px}.kpt-calendar__cell{padding:.6rem .25rem;border:0;border-radius:var(--kpt-radius-sm, .25rem);background:none;color:var(--kpt-color-on-surface);cursor:pointer;font:inherit;text-transform:capitalize}.kpt-calendar__cell:hover:not(:disabled){background:var(--kpt-color-muted)}.kpt-calendar__cell--selected{background:var(--kpt-color-primary)!important;color:var(--kpt-color-on-primary)}.kpt-calendar__cell:disabled{opacity:.3;cursor:not-allowed}.kpt-calendar__timebar{display:flex;align-items:center;justify-content:center;gap:var(--kpt-space-2, .5rem);width:100%;margin-top:var(--kpt-space-2, .5rem);padding:var(--kpt-space-2, .5rem);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-md, .5rem);background:none;color:var(--kpt-color-on-surface);font:inherit;font-variant-numeric:tabular-nums;cursor:pointer}.kpt-calendar__timebar:hover{background:var(--kpt-color-muted)}.kpt-calendar__timebar kpt-icon{color:var(--kpt-color-on-surface-muted)}.kpt-calendar__footer{display:flex;justify-content:flex-end;margin-top:var(--kpt-space-3, .75rem)}.kpt-calendar--clock{width:16rem}}\n"] }]
3337
- }], null, { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], touch: [{ type: i0.Output, args: ["touch"] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], displayFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "displayFormat", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], monthDisplay: [{ type: i0.Input, args: [{ isSignal: true, alias: "monthDisplay", required: false }] }], hourFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "hourFormat", required: false }] }], minuteStep: [{ type: i0.Input, args: [{ isSignal: true, alias: "minuteStep", required: false }] }], minDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "minDate", required: false }] }], maxDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxDate", required: false }] }] }); })();
3695
+ args: [{ selector: 'kpt-datepicker', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon, KptButton, KptClock], host: { class: 'kpt-datepicker-host' }, template: "<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]=\"showInvalid()\"\n [attr.aria-disabled]=\"disabled() || null\"\n [attr.aria-label]=\"ariaLabel()\"\n (click)=\"toggleOpen()\"\n (keydown.enter)=\"toggleOpen()\"\n (blur)=\"touch.emit()\"\n>\n @if (display()) {\n <span class=\"kpt-datepicker__value\">{{ display() }}</span>\n } @else {\n <span class=\"kpt-datepicker__placeholder\">{{ effectivePlaceholder() }}</span>\n }\n <span class=\"kpt-datepicker__spacer\"></span>\n @if (display()) {\n <button type=\"button\" class=\"kpt-datepicker__clear\" (click)=\"clear($event)\" [attr.aria-label]=\"i18n.t('common.clear')\"><kpt-icon name=\"x\" /></button>\n }\n <kpt-icon\n class=\"kpt-datepicker__icon\"\n [name]=\"selectionMode() === 'time' ? 'clock' : 'calendar'\"\n />\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n>\n <div class=\"kpt-calendar\" [class.kpt-calendar--clock]=\"selectionMode() === 'time' || (selectionMode() === 'datetime' && dtView() === 'clock')\" (keydown.escape)=\"close()\">\n @switch (selectionMode()) {\n @case ('time') {\n <kpt-clock [(value)]=\"timeStr\" [hourFormat]=\"hourFormat()\" [minuteStep]=\"minuteStep()\" />\n <div class=\"kpt-calendar__footer\">\n <kpt-button size=\"sm\" (click)=\"commit()\">{{ i18n.t('common.done') }}</kpt-button>\n </div>\n }\n @case ('datetime') {\n @if (dtView() === 'calendar') {\n <div class=\"kpt-calendar__header\">\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"prevMonth()\" [attr.aria-label]=\"i18n.t('datepicker.prevMonth')\"><kpt-icon name=\"chevron-left\" /></button>\n <span class=\"kpt-calendar__title\">{{ monthLabel() }}</span>\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"nextMonth()\" [attr.aria-label]=\"i18n.t('datepicker.nextMonth')\"><kpt-icon name=\"chevron-right\" /></button>\n </div>\n <div class=\"kpt-calendar__weekdays\">\n @for (wd of weekdays(); track wd) {\n <span class=\"kpt-calendar__weekday\">{{ wd }}</span>\n }\n </div>\n <div class=\"kpt-calendar__grid\">\n @for (week of weeks(); track $index) {\n @for (cell of week; track cell.iso) {\n <button\n type=\"button\"\n class=\"kpt-calendar__day\"\n [class.kpt-calendar__day--muted]=\"!cell.inMonth\"\n [class.kpt-calendar__day--today]=\"cell.today\"\n [class.kpt-calendar__day--selected]=\"cell.selected\"\n [disabled]=\"cell.disabled\"\n [attr.aria-pressed]=\"cell.selected\"\n (click)=\"selectDay(cell)\"\n >{{ cell.day }}</button>\n }\n }\n </div>\n <button type=\"button\" class=\"kpt-calendar__timebar\" (click)=\"openClock()\">\n <kpt-icon name=\"clock\" />\n <span>{{ timeBarLabel() }}</span>\n </button>\n } @else {\n <div class=\"kpt-calendar__header\">\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"backToCalendar()\" [attr.aria-label]=\"i18n.t('datepicker.calendar')\"><kpt-icon name=\"chevron-left\" /></button>\n <span class=\"kpt-calendar__title\">{{ i18n.t('datepicker.time') }}</span>\n </div>\n <kpt-clock [(value)]=\"timeStr\" [hourFormat]=\"hourFormat()\" [minuteStep]=\"minuteStep()\" />\n }\n <div class=\"kpt-calendar__footer\">\n <kpt-button size=\"sm\" (click)=\"commit()\">{{ i18n.t('common.done') }}</kpt-button>\n </div>\n }\n @case ('monthYear') {\n <div class=\"kpt-calendar__header\">\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"prevYear()\" [attr.aria-label]=\"i18n.t('datepicker.prevYear')\"><kpt-icon name=\"chevron-left\" /></button>\n <span class=\"kpt-calendar__title\">{{ viewYear() }}</span>\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"nextYear()\" [attr.aria-label]=\"i18n.t('datepicker.nextYear')\"><kpt-icon name=\"chevron-right\" /></button>\n </div>\n <div class=\"kpt-calendar__grid kpt-calendar__grid--cells\">\n @for (cell of monthCells(); track cell.value) {\n <button\n type=\"button\"\n class=\"kpt-calendar__cell\"\n [class.kpt-calendar__cell--selected]=\"cell.selected\"\n [disabled]=\"cell.disabled\"\n [attr.aria-pressed]=\"cell.selected\"\n (click)=\"selectCell(cell)\"\n >{{ cell.label }}</button>\n }\n </div>\n }\n @case ('year') {\n <div class=\"kpt-calendar__header\">\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"prevYearPage()\" [attr.aria-label]=\"i18n.t('datepicker.prevYears')\"><kpt-icon name=\"chevron-left\" /></button>\n <span class=\"kpt-calendar__title\">{{ yearRangeLabel() }}</span>\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"nextYearPage()\" [attr.aria-label]=\"i18n.t('datepicker.nextYears')\"><kpt-icon name=\"chevron-right\" /></button>\n </div>\n <div class=\"kpt-calendar__grid kpt-calendar__grid--cells\">\n @for (cell of yearCells(); track cell.value) {\n <button\n type=\"button\"\n class=\"kpt-calendar__cell\"\n [class.kpt-calendar__cell--selected]=\"cell.selected\"\n [disabled]=\"cell.disabled\"\n [attr.aria-pressed]=\"cell.selected\"\n (click)=\"selectCell(cell)\"\n >{{ cell.label }}</button>\n }\n </div>\n }\n @case ('month') {\n <div class=\"kpt-calendar__header\">\n <span class=\"kpt-calendar__title\">{{ i18n.t('datepicker.month') }}</span>\n </div>\n <div class=\"kpt-calendar__grid kpt-calendar__grid--cells\">\n @for (cell of monthCells(); track cell.value) {\n <button\n type=\"button\"\n class=\"kpt-calendar__cell\"\n [class.kpt-calendar__cell--selected]=\"cell.selected\"\n [attr.aria-pressed]=\"cell.selected\"\n (click)=\"selectCell(cell)\"\n >{{ cell.label }}</button>\n }\n </div>\n }\n @default {\n <div class=\"kpt-calendar__header\">\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"prevMonth()\" [attr.aria-label]=\"i18n.t('datepicker.prevMonth')\"><kpt-icon name=\"chevron-left\" /></button>\n <span class=\"kpt-calendar__title\">{{ monthLabel() }}</span>\n <button type=\"button\" class=\"kpt-calendar__nav\" (click)=\"nextMonth()\" [attr.aria-label]=\"i18n.t('datepicker.nextMonth')\"><kpt-icon name=\"chevron-right\" /></button>\n </div>\n <div class=\"kpt-calendar__weekdays\">\n @for (wd of weekdays(); track wd) {\n <span class=\"kpt-calendar__weekday\">{{ wd }}</span>\n }\n </div>\n <div class=\"kpt-calendar__grid\">\n @for (week of weeks(); track $index) {\n @for (cell of week; track cell.iso) {\n <button\n type=\"button\"\n class=\"kpt-calendar__day\"\n [class.kpt-calendar__day--muted]=\"!cell.inMonth\"\n [class.kpt-calendar__day--today]=\"cell.today\"\n [class.kpt-calendar__day--selected]=\"cell.selected\"\n [disabled]=\"cell.disabled\"\n [attr.aria-pressed]=\"cell.selected\"\n (click)=\"selectDay(cell)\"\n >{{ cell.day }}</button>\n }\n }\n </div>\n }\n }\n </div>\n</ng-template>\n", styles: ["@layer kpt.components{.kpt-datepicker-host{display:block}.kpt-datepicker{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);height:2.5rem;padding-inline:var(--kpt-space-3, .75rem);box-sizing:border-box;border:var(--kpt-border-width-thin, 1px) solid var(--kpt-form-field-border);border-radius:var(--kpt-form-field-radius, .5rem);background:var(--kpt-form-field-bg);color:var(--kpt-form-field-text);font-size:var(--kpt-font-size-sm, .875rem);cursor:pointer}.kpt-datepicker:hover:not(.kpt-datepicker--disabled){border-color:var(--kpt-form-field-border-hover)}.kpt-datepicker:focus-visible,.kpt-datepicker.kpt-datepicker--open{outline:none;border-color:var(--kpt-form-field-border-focus);box-shadow:0 0 0 2px color-mix(in oklch,var(--kpt-form-field-border-focus) 30%,transparent)}.kpt-datepicker.kpt-datepicker--invalid{border-color:var(--kpt-form-field-border-error)}.kpt-datepicker.kpt-datepicker--disabled{cursor:not-allowed;opacity:.6;background:var(--kpt-color-surface-variant)}.kpt-datepicker__placeholder{color:var(--kpt-form-field-placeholder)}.kpt-datepicker__spacer{flex:1}.kpt-datepicker__icon{color:var(--kpt-color-on-surface-muted)}.kpt-datepicker__clear{display:inline-flex;border:0;background:none;cursor:pointer;color:var(--kpt-color-on-surface-muted);padding:0}.kpt-datepicker__clear:hover{color:var(--kpt-color-on-surface)}.kpt-calendar{width:17rem;padding:var(--kpt-space-3, .75rem);background:var(--kpt-color-surface-raised);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-md, .5rem);box-shadow:var(--kpt-elevation-3);color:var(--kpt-color-on-surface);font-size:var(--kpt-font-size-sm, .875rem)}.kpt-calendar__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--kpt-space-2, .5rem)}.kpt-calendar__title{font-weight:var(--kpt-font-weight-semibold, 600);text-transform:capitalize}.kpt-calendar__nav{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:0;border-radius:var(--kpt-radius-md, .5rem);background:none;color:var(--kpt-color-on-surface);cursor:pointer}.kpt-calendar__nav:hover{background:var(--kpt-color-muted)}.kpt-calendar__weekdays,.kpt-calendar__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.kpt-calendar__weekday{text-align:center;font-size:var(--kpt-font-size-xs, .75rem);color:var(--kpt-color-on-surface-muted);padding:.25rem 0}.kpt-calendar__day{aspect-ratio:1;border:0;border-radius:var(--kpt-radius-sm, .25rem);background:none;color:var(--kpt-color-on-surface);cursor:pointer;font:inherit}.kpt-calendar__day:hover:not(:disabled){background:var(--kpt-color-muted)}.kpt-calendar__day--muted{color:var(--kpt-color-on-surface-muted);opacity:.5}.kpt-calendar__day--today{box-shadow:inset 0 0 0 1px var(--kpt-color-border-strong)}.kpt-calendar__day--selected{background:var(--kpt-color-primary)!important;color:var(--kpt-color-on-primary)}.kpt-calendar__day:disabled{opacity:.3;cursor:not-allowed}.kpt-calendar__grid--cells{grid-template-columns:repeat(3,1fr);gap:4px}.kpt-calendar__cell{padding:.6rem .25rem;border:0;border-radius:var(--kpt-radius-sm, .25rem);background:none;color:var(--kpt-color-on-surface);cursor:pointer;font:inherit;text-transform:capitalize}.kpt-calendar__cell:hover:not(:disabled){background:var(--kpt-color-muted)}.kpt-calendar__cell--selected{background:var(--kpt-color-primary)!important;color:var(--kpt-color-on-primary)}.kpt-calendar__cell:disabled{opacity:.3;cursor:not-allowed}.kpt-calendar__timebar{display:flex;align-items:center;justify-content:center;gap:var(--kpt-space-2, .5rem);width:100%;margin-top:var(--kpt-space-2, .5rem);padding:var(--kpt-space-2, .5rem);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-md, .5rem);background:none;color:var(--kpt-color-on-surface);font:inherit;font-variant-numeric:tabular-nums;cursor:pointer}.kpt-calendar__timebar:hover{background:var(--kpt-color-muted)}.kpt-calendar__timebar kpt-icon{color:var(--kpt-color-on-surface-muted)}.kpt-calendar__footer{display:flex;justify-content:flex-end;margin-top:var(--kpt-space-3, .75rem)}.kpt-calendar--clock{width:16rem}}\n"] }]
3696
+ }], null, { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], touch: [{ type: i0.Output, args: ["touch"] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], displayFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "displayFormat", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], monthDisplay: [{ type: i0.Input, args: [{ isSignal: true, alias: "monthDisplay", required: false }] }], hourFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "hourFormat", required: false }] }], minuteStep: [{ type: i0.Input, args: [{ isSignal: true, alias: "minuteStep", required: false }] }], minDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "minDate", required: false }] }], maxDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxDate", required: false }] }] }); })();
3338
3697
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptDatepicker, { className: "KptDatepicker", filePath: "lib/datepicker/datepicker.component.ts", lineNumber: 66 }); })();
3339
3698
 
3340
3699
  const _c0$u = ["ta"];
@@ -6733,7 +7092,7 @@ class KptKnob {
6733
7092
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptKnob, { className: "KptKnob", filePath: "lib/knob/knob.component.ts", lineNumber: 41 }); })();
6734
7093
 
6735
7094
  const _c0$r = ["*", [["", "kptCardFooter", ""]]];
6736
- const _c1$9 = ["*", "[kptCardFooter]"];
7095
+ const _c1$a = ["*", "[kptCardFooter]"];
6737
7096
  function KptCard_Conditional_0_Template(rf, ctx) { if (rf & 1) {
6738
7097
  i0.ɵɵdomElementStart(0, "div", 0);
6739
7098
  i0.ɵɵtext(1);
@@ -6770,7 +7129,7 @@ class KptCard {
6770
7129
  static { this.ɵfac = function KptCard_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptCard)(); }; }
6771
7130
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptCard, selectors: [["kpt-card"]], hostAttrs: [1, "kpt-card"], hostVars: 1, hostBindings: function KptCard_HostBindings(rf, ctx) { if (rf & 2) {
6772
7131
  i0.ɵɵattribute("data-variant", ctx.variant());
6773
- } }, inputs: { variant: [1, "variant"], header: [1, "header"], flush: [1, "flush"] }, ngContentSelectors: _c1$9, decls: 4, vars: 3, consts: [[1, "kpt-card__header"], [1, "kpt-card__body"]], template: function KptCard_Template(rf, ctx) { if (rf & 1) {
7132
+ } }, inputs: { variant: [1, "variant"], header: [1, "header"], flush: [1, "flush"] }, ngContentSelectors: _c1$a, decls: 4, vars: 3, consts: [[1, "kpt-card__header"], [1, "kpt-card__body"]], template: function KptCard_Template(rf, ctx) { if (rf & 1) {
6774
7133
  i0.ɵɵprojectionDef(_c0$r);
6775
7134
  i0.ɵɵconditionalCreate(0, KptCard_Conditional_0_Template, 2, 1, "div", 0);
6776
7135
  i0.ɵɵdomElementStart(1, "div", 1);
@@ -6830,6 +7189,7 @@ const _c0$q = ["*"];
6830
7189
  /**
6831
7190
  * Górny pasek (toolbar) — pozioma belka na treść aplikacji (logo, akcje).
6832
7191
  * Elementowi z atrybutem `kptToolbarSpacer` nadaj elastyczny odstęp, aby rozepchnąć zawartość.
7192
+ * Poniżej breakpointa `sm` pasek sam zbiega się do niższej wysokości i węższych marginesów.
6833
7193
  *
6834
7194
  * @example
6835
7195
  * <kpt-toolbar elevated>
@@ -6842,109 +7202,271 @@ class KptToolbar {
6842
7202
  constructor() {
6843
7203
  /** Dodaje cień (wyniesienie) pod paskiem. */
6844
7204
  this.elevated = input(false, { ...(ngDevMode ? { debugName: "elevated" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
7205
+ /**
7206
+ * Pozwala zawartości paska zawinąć się do kolejnych wierszy, gdy zabraknie miejsca.
7207
+ * Opcjonalne, bo zawijanie zmienia zachowanie `kptToolbarSpacer` — w jednowierszowym
7208
+ * pasku rozpycha on treść, a w zawijanym potrafi zepchnąć resztę do nowego wiersza.
7209
+ */
7210
+ this.wrap = input(false, { ...(ngDevMode ? { debugName: "wrap" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
6845
7211
  }
6846
7212
  static { this.ɵfac = function KptToolbar_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptToolbar)(); }; }
6847
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptToolbar, selectors: [["kpt-toolbar"]], hostAttrs: [1, "kpt-toolbar"], hostVars: 2, hostBindings: function KptToolbar_HostBindings(rf, ctx) { if (rf & 2) {
7213
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptToolbar, selectors: [["kpt-toolbar"]], hostAttrs: [1, "kpt-toolbar"], hostVars: 3, hostBindings: function KptToolbar_HostBindings(rf, ctx) { if (rf & 2) {
7214
+ i0.ɵɵattribute("data-wrap", ctx.wrap() ? "" : null);
6848
7215
  i0.ɵɵclassProp("kpt-toolbar--elevated", ctx.elevated());
6849
- } }, inputs: { elevated: [1, "elevated"] }, ngContentSelectors: _c0$q, decls: 1, vars: 0, template: function KptToolbar_Template(rf, ctx) { if (rf & 1) {
7216
+ } }, inputs: { elevated: [1, "elevated"], wrap: [1, "wrap"] }, ngContentSelectors: _c0$q, decls: 1, vars: 0, template: function KptToolbar_Template(rf, ctx) { if (rf & 1) {
6850
7217
  i0.ɵɵprojectionDef();
6851
7218
  i0.ɵɵprojection(0);
6852
- } }, styles: ["@layer kpt.components{.kpt-toolbar{display:flex;align-items:center;gap:var(--%NS%kpt-space-3, .75rem);min-height:var(--%NS%kpt-toolbar-height, 3.5rem);padding-inline:var(--%NS%kpt-space-4, 1rem);background:var(--%NS%kpt-toolbar-bg);color:var(--%NS%kpt-toolbar-fg);border-bottom:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-toolbar-border)}.kpt-toolbar--elevated{box-shadow:var(--%NS%kpt-elevation-1)}.kpt-toolbar [kptToolbarSpacer]{flex:1 1 auto}}\n"], encapsulation: 2 }); }
7219
+ } }, styles: ["@layer kpt.components{.kpt-toolbar{--%NS%_kpt-toolbar-height: var(--%NS%kpt-toolbar-height, 3.5rem);--%NS%_kpt-toolbar-padding-inline: var(--%NS%kpt-space-4, 1rem);--%NS%_kpt-toolbar-gap: var(--%NS%kpt-space-3, .75rem);display:flex;align-items:center;gap:var(--%NS%_kpt-toolbar-gap);min-height:var(--%NS%_kpt-toolbar-height);padding-inline:var(--%NS%_kpt-toolbar-padding-inline);background:var(--%NS%kpt-toolbar-bg);color:var(--%NS%kpt-toolbar-fg);border-bottom:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-toolbar-border);min-inline-size:0}.kpt-toolbar--elevated{box-shadow:var(--%NS%kpt-elevation-1)}.kpt-toolbar [kptToolbarSpacer]{flex:1 1 auto;min-inline-size:0}.kpt-toolbar[data-wrap]{flex-wrap:wrap;row-gap:var(--%NS%kpt-space-2, .5rem);padding-block:var(--%NS%kpt-space-2, .5rem)}@media(max-width:639.98px){.kpt-toolbar{--%NS%_kpt-toolbar-height: var(--%NS%kpt-toolbar-height-compact, 3rem);--%NS%_kpt-toolbar-padding-inline: var(--%NS%kpt-space-3, .75rem);--%NS%_kpt-toolbar-gap: var(--%NS%kpt-space-2, .5rem)}}}\n"], encapsulation: 2 }); }
6853
7220
  }
6854
7221
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptToolbar, [{
6855
7222
  type: Component,
6856
7223
  args: [{ selector: 'kpt-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: '<ng-content />', host: {
6857
7224
  class: 'kpt-toolbar',
6858
7225
  '[class.kpt-toolbar--elevated]': 'elevated()',
6859
- }, styles: ["@layer kpt.components{.kpt-toolbar{display:flex;align-items:center;gap:var(--kpt-space-3, .75rem);min-height:var(--kpt-toolbar-height, 3.5rem);padding-inline:var(--kpt-space-4, 1rem);background:var(--kpt-toolbar-bg);color:var(--kpt-toolbar-fg);border-bottom:var(--kpt-border-width-thin, 1px) solid var(--kpt-toolbar-border)}.kpt-toolbar--elevated{box-shadow:var(--kpt-elevation-1)}.kpt-toolbar [kptToolbarSpacer]{flex:1 1 auto}}\n"] }]
6860
- }], null, { elevated: [{ type: i0.Input, args: [{ isSignal: true, alias: "elevated", required: false }] }] }); })();
6861
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptToolbar, { className: "KptToolbar", filePath: "lib/toolbar/toolbar.component.ts", lineNumber: 25 }); })();
7226
+ '[attr.data-wrap]': "wrap() ? '' : null",
7227
+ }, styles: ["@layer kpt.components{.kpt-toolbar{--_kpt-toolbar-height: var(--kpt-toolbar-height, 3.5rem);--_kpt-toolbar-padding-inline: var(--kpt-space-4, 1rem);--_kpt-toolbar-gap: var(--kpt-space-3, .75rem);display:flex;align-items:center;gap:var(--_kpt-toolbar-gap);min-height:var(--_kpt-toolbar-height);padding-inline:var(--_kpt-toolbar-padding-inline);background:var(--kpt-toolbar-bg);color:var(--kpt-toolbar-fg);border-bottom:var(--kpt-border-width-thin, 1px) solid var(--kpt-toolbar-border);min-inline-size:0}.kpt-toolbar--elevated{box-shadow:var(--kpt-elevation-1)}.kpt-toolbar [kptToolbarSpacer]{flex:1 1 auto;min-inline-size:0}.kpt-toolbar[data-wrap]{flex-wrap:wrap;row-gap:var(--kpt-space-2, .5rem);padding-block:var(--kpt-space-2, .5rem)}@media(max-width:639.98px){.kpt-toolbar{--_kpt-toolbar-height: var(--kpt-toolbar-height-compact, 3rem);--_kpt-toolbar-padding-inline: var(--kpt-space-3, .75rem);--_kpt-toolbar-gap: var(--kpt-space-2, .5rem)}}}\n"] }]
7228
+ }], null, { elevated: [{ type: i0.Input, args: [{ isSignal: true, alias: "elevated", required: false }] }], wrap: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrap", required: false }] }] }); })();
7229
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptToolbar, { className: "KptToolbar", filePath: "lib/toolbar/toolbar.component.ts", lineNumber: 27 }); })();
6862
7230
 
6863
- const _c0$p = ["*"];
7231
+ const _c0$p = ["*", [["", "kptSidenavFooter", ""]]];
7232
+ const _c1$9 = ["*", "[kptSidenavFooter]"];
6864
7233
  /**
6865
7234
  * Panel boczny (sidenav) — stylowany kontener nawigacji, zwykle umieszczany w slocie
6866
7235
  * `kptShellSidenav` komponentu `kpt-app-shell`.
6867
7236
  *
7237
+ * Treść domyślna ląduje w obszarze przewijanym. Element opatrzony atrybutem `kptSidenavFooter`
7238
+ * trafia do stopki stojącej **poza** tym obszarem, więc zostaje przyklejony do dołu panelu
7239
+ * niezależnie od długości nawigacji (blok użytkownika, wersja aplikacji, przełącznik motywu).
7240
+ *
6868
7241
  * @example
6869
7242
  * <kpt-sidenav kptShellSidenav>
6870
7243
  * <a href="#">Pulpit</a>
6871
7244
  * <a href="#">Ustawienia</a>
7245
+ * <div kptSidenavFooter>
7246
+ * <kpt-avatar name="Anna Kowalska" size="sm" />
7247
+ * </div>
6872
7248
  * </kpt-sidenav>
6873
7249
  */
6874
7250
  class KptSidenav {
6875
7251
  static { this.ɵfac = function KptSidenav_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptSidenav)(); }; }
6876
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptSidenav, selectors: [["kpt-sidenav"]], hostAttrs: [1, "kpt-sidenav"], ngContentSelectors: _c0$p, decls: 1, vars: 0, template: function KptSidenav_Template(rf, ctx) { if (rf & 1) {
6877
- i0.ɵɵprojectionDef();
6878
- i0.ɵɵprojection(0);
6879
- } }, styles: ["@layer kpt.components{.kpt-sidenav{display:flex;flex-direction:column;gap:var(--%NS%kpt-space-1, .25rem);width:100%;height:100%;box-sizing:border-box;padding:var(--%NS%kpt-space-3, .75rem);overflow-y:auto;background:var(--%NS%kpt-sidenav-bg);color:var(--%NS%kpt-sidenav-fg);border-inline-end:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-sidenav-border)}.kpt-sidenav a{display:block;padding:var(--%NS%kpt-space-2, .5rem) var(--%NS%kpt-space-3, .75rem);border-radius:var(--%NS%kpt-radius-md, .5rem);color:inherit;text-decoration:none;font-size:var(--%NS%kpt-font-size-sm, .875rem)}.kpt-sidenav a:hover{background:var(--%NS%kpt-color-muted)}}\n"], encapsulation: 2 }); }
7252
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptSidenav, selectors: [["kpt-sidenav"]], hostAttrs: [1, "kpt-sidenav"], ngContentSelectors: _c1$9, decls: 3, vars: 0, consts: [[1, "kpt-sidenav__scroll"]], template: function KptSidenav_Template(rf, ctx) { if (rf & 1) {
7253
+ i0.ɵɵprojectionDef(_c0$p);
7254
+ i0.ɵɵdomElementStart(0, "div", 0);
7255
+ i0.ɵɵprojection(1);
7256
+ i0.ɵɵdomElementEnd();
7257
+ i0.ɵɵprojection(2, 1);
7258
+ } }, styles: ["@charset \"UTF-8\";@layer kpt.components{.kpt-sidenav{display:flex;flex-direction:column;width:100%;height:100%;box-sizing:border-box;background:var(--%NS%kpt-sidenav-bg);color:var(--%NS%kpt-sidenav-fg);border-inline-end:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-sidenav-border)}.kpt-sidenav__scroll{display:flex;flex-direction:column;gap:var(--%NS%kpt-space-1, .25rem);flex:1 1 auto;min-block-size:0;box-sizing:border-box;padding:var(--%NS%kpt-space-3, .75rem);overflow-y:auto}.kpt-sidenav__scroll a{display:block;padding:var(--%NS%kpt-space-2, .5rem) var(--%NS%kpt-space-3, .75rem);border-radius:var(--%NS%kpt-radius-md, .5rem);color:inherit;text-decoration:none;font-size:var(--%NS%kpt-font-size-sm, .875rem)}.kpt-sidenav__scroll a:hover{background:var(--%NS%kpt-color-muted)}.kpt-sidenav [kptSidenavFooter]{flex:0 0 auto;box-sizing:border-box;padding:var(--%NS%kpt-space-3, .75rem);border-top:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-sidenav-border)}}\n"], encapsulation: 2 }); }
6880
7259
  }
6881
7260
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptSidenav, [{
6882
7261
  type: Component,
6883
- args: [{ selector: 'kpt-sidenav', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: '<ng-content />', host: { class: 'kpt-sidenav' }, styles: ["@layer kpt.components{.kpt-sidenav{display:flex;flex-direction:column;gap:var(--kpt-space-1, .25rem);width:100%;height:100%;box-sizing:border-box;padding:var(--kpt-space-3, .75rem);overflow-y:auto;background:var(--kpt-sidenav-bg);color:var(--kpt-sidenav-fg);border-inline-end:var(--kpt-border-width-thin, 1px) solid var(--kpt-sidenav-border)}.kpt-sidenav a{display:block;padding:var(--kpt-space-2, .5rem) var(--kpt-space-3, .75rem);border-radius:var(--kpt-radius-md, .5rem);color:inherit;text-decoration:none;font-size:var(--kpt-font-size-sm, .875rem)}.kpt-sidenav a:hover{background:var(--kpt-color-muted)}}\n"] }]
7262
+ args: [{ selector: 'kpt-sidenav', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: '<div class="kpt-sidenav__scroll"><ng-content /></div><ng-content select="[kptSidenavFooter]" />', host: { class: 'kpt-sidenav' }, styles: ["@charset \"UTF-8\";@layer kpt.components{.kpt-sidenav{display:flex;flex-direction:column;width:100%;height:100%;box-sizing:border-box;background:var(--kpt-sidenav-bg);color:var(--kpt-sidenav-fg);border-inline-end:var(--kpt-border-width-thin, 1px) solid var(--kpt-sidenav-border)}.kpt-sidenav__scroll{display:flex;flex-direction:column;gap:var(--kpt-space-1, .25rem);flex:1 1 auto;min-block-size:0;box-sizing:border-box;padding:var(--kpt-space-3, .75rem);overflow-y:auto}.kpt-sidenav__scroll a{display:block;padding:var(--kpt-space-2, .5rem) var(--kpt-space-3, .75rem);border-radius:var(--kpt-radius-md, .5rem);color:inherit;text-decoration:none;font-size:var(--kpt-font-size-sm, .875rem)}.kpt-sidenav__scroll a:hover{background:var(--kpt-color-muted)}.kpt-sidenav [kptSidenavFooter]{flex:0 0 auto;box-sizing:border-box;padding:var(--kpt-space-3, .75rem);border-top:var(--kpt-border-width-thin, 1px) solid var(--kpt-sidenav-border)}}\n"] }]
6884
7263
  }], null, null); })();
6885
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptSidenav, { className: "KptSidenav", filePath: "lib/sidenav/sidenav.component.ts", lineNumber: 21 }); })();
7264
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptSidenav, { className: "KptSidenav", filePath: "lib/sidenav/sidenav.component.ts", lineNumber: 30 }); })();
6886
7265
 
6887
7266
  const _c0$o = [[["", "kptShellToolbar", ""]], [["", "kptShellSidenav", ""]], "*"];
6888
7267
  const _c1$8 = ["[kptShellToolbar]", "[kptShellSidenav]", "*"];
6889
- function KptAppShell_Conditional_4_Template(rf, ctx) { if (rf & 1) {
6890
- const _r1 = i0.ɵɵgetCurrentView();
6891
- i0.ɵɵdomElementStart(0, "div", 4);
6892
- i0.ɵɵdomListener("click", function KptAppShell_Conditional_4_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onScrimClick()); });
6893
- i0.ɵɵdomElementEnd();
6894
- } }
6895
7268
  /**
6896
- * Szkielet aplikacji (app shell) w stylu Material: toolbar u góry, panel boczny i treść.
6897
- * Sloty projekcji: `[kptShellToolbar]`, `[kptShellSidenav]`, oraz treść domyślna.
7269
+ * Szkielet aplikacji: pasek u góry, panel boczny i treść. Sloty projekcji:
7270
+ * `[kptShellToolbar]`, `[kptShellSidenav]` oraz treść domyślna.
7271
+ *
7272
+ * Domyślny tryb `auto` jest responsywny bez konfiguracji: od `sidenavBreakpoint` w górę
7273
+ * panel jest zadokowany, poniżej zachowuje się jak nakładka ze scrimem i startuje zamknięty.
7274
+ * Opcjonalny `sidenavRailBreakpoint` wstawia między te pasma szynę ikon.
7275
+ *
7276
+ * O układzie decyduje wyłącznie CSS — nic nie migocze przed hydracją i nic nie zależy od
7277
+ * `matchMedia`. JavaScript odpowiada tylko za to, KTÓRY stan przełącza przycisk.
7278
+ *
7279
+ * Panel ma dwa niezależne stany otwarcia (`sidenavOpen` dla układu zadokowanego,
7280
+ * `sidenavCompactOpen` dla nakładki), więc intencja z desktopu przeżywa zwężenie
7281
+ * i ponowne rozszerzenie okna.
6898
7282
  *
6899
7283
  * @example
6900
- * <kpt-app-shell [(sidenavOpen)]="navOpen" sidenavMode="side">
6901
- * <kpt-toolbar kptShellToolbar>…</kpt-toolbar>
7284
+ * <kpt-app-shell [(sidenavOpen)]="navOpen">
7285
+ * <kpt-toolbar kptShellToolbar>
7286
+ * <button kptShellNavToggle type="button"><kpt-icon name="menu" /></button>
7287
+ * </kpt-toolbar>
6902
7288
  * <kpt-sidenav kptShellSidenav>…</kpt-sidenav>
6903
7289
  * <router-outlet />
6904
7290
  * </kpt-app-shell>
6905
7291
  */
6906
7292
  class KptAppShell {
7293
+ static { this.nextId = 0; }
6907
7294
  constructor() {
6908
- /** Czy panel boczny jest otwarty (dwukierunkowe). */
7295
+ this.breakpoints = inject(KptBreakpointObserver);
7296
+ this.i18n = inject(KptI18n);
7297
+ /** Czy panel jest otwarty w układzie zadokowanym (oraz w wymuszonym trybie `over`). */
6909
7298
  this.sidenavOpen = model(true, /* @ts-ignore */
6910
7299
  ...(ngDevMode ? [{ debugName: "sidenavOpen" }] : /* istanbul ignore next */ []));
6911
- /** Tryb panelu: 'side' rozpycha treść, 'over' nakłada się ze scrimem. */
6912
- this.sidenavMode = input('side', /* @ts-ignore */
7300
+ /**
7301
+ * Czy nakładka jest wysunięta w trybie `auto` poniżej `sidenavBreakpoint`.
7302
+ *
7303
+ * Celowo osobny od `sidenavOpen`: gdyby oba układy dzieliły jeden model, wejście na wąski
7304
+ * ekran musiałoby nadpisać stan konsumenta, a powrót na szeroki nie miałby czego przywrócić.
7305
+ */
7306
+ this.sidenavCompactOpen = model(false, /* @ts-ignore */
7307
+ ...(ngDevMode ? [{ debugName: "sidenavCompactOpen" }] : /* istanbul ignore next */ []));
7308
+ /** `auto` przełącza układ na breakpoincie; `side`/`over` wymuszają go niezależnie od szerokości. */
7309
+ this.sidenavMode = input('auto', /* @ts-ignore */
6913
7310
  ...(ngDevMode ? [{ debugName: "sidenavMode" }] : /* istanbul ignore next */ []));
7311
+ /** Od tego breakpointa w górę tryb `auto` dokuje panel; poniżej robi z niego nakładkę. */
7312
+ this.sidenavBreakpoint = input('lg', /* @ts-ignore */
7313
+ ...(ngDevMode ? [{ debugName: "sidenavBreakpoint" }] : /* istanbul ignore next */ []));
7314
+ /**
7315
+ * Włącza szynę ikon w paśmie od `sidenavBreakpoint` do tego breakpointa: zamknięty panel
7316
+ * nie chowa się wtedy całkowicie, tylko zwęża do `--kpt-sidenav-rail-width`. Powyżej tego
7317
+ * progu zamknięcie znów chowa panel w całości. Wartość musi być wyższa niż `sidenavBreakpoint`.
7318
+ * `null` (domyślnie) wyłącza szynę.
7319
+ */
7320
+ this.sidenavRailBreakpoint = input(null, /* @ts-ignore */
7321
+ ...(ngDevMode ? [{ debugName: "sidenavRailBreakpoint" }] : /* istanbul ignore next */ []));
7322
+ /** Etykieta dostępności panelu; puste = `appShell.navigation` ze słownika. */
7323
+ this.sidenavLabel = input('', /* @ts-ignore */
7324
+ ...(ngDevMode ? [{ debugName: "sidenavLabel" }] : /* istanbul ignore next */ []));
7325
+ /** Identyfikator panelu dla `aria-controls` przycisku przełączającego. */
7326
+ this.sidenavId = `kpt-app-shell-nav-${KptAppShell.nextId++}`;
7327
+ /** Czy panel zachowuje się TERAZ jak nakładka nad treścią. */
7328
+ this.isOverlay = computed(() => {
7329
+ const mode = this.sidenavMode();
7330
+ if (mode === 'over')
7331
+ return true;
7332
+ if (mode === 'side')
7333
+ return false;
7334
+ return !this.breakpoints.up(this.sidenavBreakpoint())();
7335
+ }, /* @ts-ignore */
7336
+ ...(ngDevMode ? [{ debugName: "isOverlay" }] : /* istanbul ignore next */ []));
7337
+ /** Efektywny stan otwarcia — ten, który obowiązuje w bieżącym układzie. */
7338
+ this.isSidenavOpen = computed(() => this.usesCompactState() ? this.sidenavCompactOpen() : this.sidenavOpen(), /* @ts-ignore */
7339
+ ...(ngDevMode ? [{ debugName: "isSidenavOpen" }] : /* istanbul ignore next */ []));
7340
+ this.navLabel = computed(() => this.sidenavLabel() || this.i18n.t('appShell.navigation'), /* @ts-ignore */
7341
+ ...(ngDevMode ? [{ debugName: "navLabel" }] : /* istanbul ignore next */ []));
7342
+ /** Scrim blokuje wskaźnik, ale nie klawiaturę — treść pod nakładką nie może łapać fokusu. */
7343
+ this.contentInert = computed(() => this.isOverlay() && this.isSidenavOpen(), /* @ts-ignore */
7344
+ ...(ngDevMode ? [{ debugName: "contentInert" }] : /* istanbul ignore next */ []));
7345
+ // Wyjście z nakładki chowa ją na wejściu: inaczej wróciłaby otwarta przy kolejnym
7346
+ // zwężeniu okna, mimo że użytkownik jej wtedy nie otwierał.
7347
+ effect(() => {
7348
+ if (!this.isOverlay())
7349
+ this.sidenavCompactOpen.set(false);
7350
+ });
7351
+ }
7352
+ /** Przełącza panel — trafia w stan właściwy dla bieżącego układu. */
7353
+ toggleSidenav() {
7354
+ this.setSidenavOpen(!this.isSidenavOpen());
7355
+ }
7356
+ /** Otwiera panel w bieżącym układzie. */
7357
+ openSidenav() {
7358
+ this.setSidenavOpen(true);
7359
+ }
7360
+ /** Zamyka panel w bieżącym układzie. */
7361
+ closeSidenav() {
7362
+ this.setSidenavOpen(false);
6914
7363
  }
6915
7364
  onScrimClick() {
6916
- if (this.sidenavMode() === 'over') {
6917
- this.sidenavOpen.set(false);
6918
- }
7365
+ // Scrim jest klikalny tylko wtedy, gdy CSS uczynił go widocznym — nie trzeba sprawdzać trybu.
7366
+ this.closeSidenav();
7367
+ }
7368
+ onEscape() {
7369
+ if (this.isOverlay() && this.isSidenavOpen())
7370
+ this.closeSidenav();
7371
+ }
7372
+ usesCompactState() {
7373
+ return this.sidenavMode() === 'auto' && this.isOverlay();
7374
+ }
7375
+ setSidenavOpen(open) {
7376
+ if (this.usesCompactState())
7377
+ this.sidenavCompactOpen.set(open);
7378
+ else
7379
+ this.sidenavOpen.set(open);
6919
7380
  }
6920
7381
  static { this.ɵfac = function KptAppShell_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptAppShell)(); }; }
6921
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptAppShell, selectors: [["kpt-app-shell"]], hostAttrs: [1, "kpt-app-shell"], hostVars: 3, hostBindings: function KptAppShell_HostBindings(rf, ctx) { if (rf & 2) {
6922
- i0.ɵɵattribute("data-sidenav-mode", ctx.sidenavMode());
6923
- i0.ɵɵclassProp("kpt-app-shell--nav-open", ctx.sidenavOpen());
6924
- } }, inputs: { sidenavOpen: [1, "sidenavOpen"], sidenavMode: [1, "sidenavMode"] }, outputs: { sidenavOpen: "sidenavOpenChange" }, ngContentSelectors: _c1$8, decls: 7, vars: 1, consts: [[1, "kpt-app-shell__body"], [1, "kpt-app-shell__sidenav"], [1, "kpt-app-shell__scrim"], [1, "kpt-app-shell__content"], [1, "kpt-app-shell__scrim", 3, "click"]], template: function KptAppShell_Template(rf, ctx) { if (rf & 1) {
7382
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptAppShell, selectors: [["kpt-app-shell"]], hostAttrs: [1, "kpt-app-shell"], hostVars: 7, hostBindings: function KptAppShell_HostBindings(rf, ctx) { if (rf & 1) {
7383
+ i0.ɵɵlistener("keydown.escape", function KptAppShell_keydown_escape_HostBindingHandler() { return ctx.onEscape(); }, i0.ɵɵresolveDocument);
7384
+ } if (rf & 2) {
7385
+ i0.ɵɵattribute("data-sidenav-mode", ctx.sidenavMode())("data-sidenav-breakpoint", ctx.sidenavBreakpoint())("data-sidenav-rail", ctx.sidenavRailBreakpoint());
7386
+ i0.ɵɵclassProp("kpt-app-shell--nav-open", ctx.sidenavOpen())("kpt-app-shell--nav-compact-open", ctx.sidenavCompactOpen());
7387
+ } }, inputs: { sidenavOpen: [1, "sidenavOpen"], sidenavCompactOpen: [1, "sidenavCompactOpen"], sidenavMode: [1, "sidenavMode"], sidenavBreakpoint: [1, "sidenavBreakpoint"], sidenavRailBreakpoint: [1, "sidenavRailBreakpoint"], sidenavLabel: [1, "sidenavLabel"] }, outputs: { sidenavOpen: "sidenavOpenChange", sidenavCompactOpen: "sidenavCompactOpenChange" }, ngContentSelectors: _c1$8, decls: 7, vars: 3, consts: [[1, "kpt-app-shell__body"], ["role", "navigation", "tabindex", "-1", 1, "kpt-app-shell__sidenav", 3, "id"], ["aria-hidden", "true", 1, "kpt-app-shell__scrim", 3, "click"], [1, "kpt-app-shell__content"]], template: function KptAppShell_Template(rf, ctx) { if (rf & 1) {
6925
7388
  i0.ɵɵprojectionDef(_c0$o);
6926
7389
  i0.ɵɵprojection(0);
6927
7390
  i0.ɵɵdomElementStart(1, "div", 0)(2, "aside", 1);
6928
7391
  i0.ɵɵprojection(3, 1);
6929
7392
  i0.ɵɵdomElementEnd();
6930
- i0.ɵɵconditionalCreate(4, KptAppShell_Conditional_4_Template, 1, 0, "div", 2);
7393
+ i0.ɵɵdomElementStart(4, "div", 2);
7394
+ i0.ɵɵdomListener("click", function KptAppShell_Template_div_click_4_listener() { return ctx.onScrimClick(); });
7395
+ i0.ɵɵdomElementEnd();
6931
7396
  i0.ɵɵdomElementStart(5, "main", 3);
6932
7397
  i0.ɵɵprojection(6, 2);
6933
7398
  i0.ɵɵdomElementEnd()();
6934
7399
  } if (rf & 2) {
6935
- i0.ɵɵadvance(4);
6936
- i0.ɵɵconditional(ctx.sidenavMode() === "over" && ctx.sidenavOpen() ? 4 : -1);
6937
- } }, styles: ["@layer kpt.components{.kpt-app-shell{display:flex;flex-direction:column;height:100vh}.kpt-app-shell__body{position:relative;flex:1;display:flex;min-height:0}.kpt-app-shell__sidenav{width:var(--%NS%kpt-sidenav-width, 16rem);flex-shrink:0;min-height:0;overflow-y:auto;transition:margin-inline-start var(--%NS%kpt-motion-duration-base, .2s) var(--%NS%kpt-motion-easing-standard),transform var(--%NS%kpt-motion-duration-base, .2s) var(--%NS%kpt-motion-easing-standard)}.kpt-app-shell__content{flex:1;min-width:0;overflow:auto}.kpt-app-shell__scrim{position:absolute;inset:0;background:var(--%NS%kpt-color-overlay-scrim);z-index:calc(var(--%NS%kpt-z-overlay, 1100) - 1)}.kpt-app-shell[data-sidenav-mode=side]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--%NS%kpt-sidenav-width, 16rem))}.kpt-app-shell[data-sidenav-mode=over] .kpt-app-shell__sidenav{position:absolute;inset-block:0;inset-inline-start:0;z-index:var(--%NS%kpt-z-overlay, 1100);box-shadow:var(--%NS%kpt-elevation-3)}.kpt-app-shell[data-sidenav-mode=over]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{transform:translate(-100%)}@media(prefers-reduced-motion:reduce){.kpt-app-shell__sidenav{transition:none}}}\n"], encapsulation: 2 }); }
7400
+ i0.ɵɵadvance(2);
7401
+ i0.ɵɵdomProperty("id", ctx.sidenavId);
7402
+ i0.ɵɵattribute("aria-label", ctx.navLabel());
7403
+ i0.ɵɵadvance(3);
7404
+ i0.ɵɵattribute("inert", ctx.contentInert() ? "" : null);
7405
+ } }, styles: ["@layer kpt.components{.kpt-app-shell{--%NS%_kpt-shell-sidenav-width: var(--%NS%kpt-sidenav-width, 16rem);--%NS%_kpt-shell-z: var(--%NS%kpt-z-overlay, 1100);--%NS%_kpt-shell-duration: var(--%NS%kpt-motion-duration-base, .2s);--%NS%_kpt-shell-easing: var(--%NS%kpt-motion-easing-standard);--%NS%_kpt-shell-out: -100%;display:flex;flex-direction:column;block-size:100vh;block-size:100dvh}.kpt-app-shell__body{position:relative;flex:1;display:flex;min-block-size:0}.kpt-app-shell__sidenav{inline-size:var(--%NS%_kpt-shell-sidenav-width);flex-shrink:0;min-block-size:0;overflow-y:auto;overscroll-behavior:contain;transition:margin-inline-start var(--%NS%_kpt-shell-duration) var(--%NS%_kpt-shell-easing),inline-size var(--%NS%_kpt-shell-duration) var(--%NS%_kpt-shell-easing),translate var(--%NS%_kpt-shell-duration) var(--%NS%_kpt-shell-easing),visibility 0s linear var(--%NS%_kpt-shell-vis-delay, 0s)}.kpt-app-shell__content{flex:1;min-inline-size:0;overflow:auto}.kpt-app-shell__scrim{position:absolute;inset:0;background:var(--%NS%kpt-color-overlay-scrim);z-index:calc(var(--%NS%_kpt-shell-z) - 1);opacity:0;visibility:hidden;--%NS%_kpt-shell-vis-delay: var(--%NS%_kpt-shell-duration);transition:opacity var(--%NS%_kpt-shell-duration) var(--%NS%_kpt-shell-easing),visibility 0s linear var(--%NS%_kpt-shell-vis-delay, 0s)}.kpt-app-shell__sidenav [kptNavLabel],.kpt-app-shell__sidenav [kptNavSection]{position:var(--%NS%_kpt-shell-label-position, static);inline-size:var(--%NS%_kpt-shell-label-size, auto);block-size:var(--%NS%_kpt-shell-label-size, auto);overflow:var(--%NS%_kpt-shell-label-overflow, visible);clip-path:var(--%NS%_kpt-shell-label-clip, none);white-space:var(--%NS%_kpt-shell-label-wrap, normal)}:where(.kpt-app-shell__sidenav) :where(a,button){text-align:var(--%NS%_kpt-shell-item-align, start)}[dir=rtl] .kpt-app-shell,.kpt-app-shell[dir=rtl]{--%NS%_kpt-shell-out: 100%}.kpt-app-shell[data-sidenav-mode=side]{--%NS%_kpt-shell-sidenav-width: var(--%NS%kpt-sidenav-width, 16rem);--%NS%_kpt-shell-label-position: static;--%NS%_kpt-shell-label-size: auto;--%NS%_kpt-shell-label-overflow: visible;--%NS%_kpt-shell-label-clip: none;--%NS%_kpt-shell-label-wrap: normal;--%NS%_kpt-shell-item-align: start}.kpt-app-shell[data-sidenav-mode=side] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--%NS%_kpt-shell-vis-delay: 0s}.kpt-app-shell[data-sidenav-mode=side]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--%NS%_kpt-shell-sidenav-width));visibility:hidden;--%NS%_kpt-shell-vis-delay: var(--%NS%_kpt-shell-duration)}.kpt-app-shell[data-sidenav-mode=side] .kpt-app-shell__scrim{display:none}.kpt-app-shell[data-sidenav-mode=over]{--%NS%_kpt-shell-sidenav-width: min(var(--%NS%kpt-sidenav-width, 16rem), 85vw);--%NS%_kpt-shell-label-position: static;--%NS%_kpt-shell-label-size: auto;--%NS%_kpt-shell-label-overflow: visible;--%NS%_kpt-shell-label-clip: none;--%NS%_kpt-shell-label-wrap: normal;--%NS%_kpt-shell-item-align: start}.kpt-app-shell[data-sidenav-mode=over] .kpt-app-shell__sidenav{position:absolute;inset-block:0;inset-inline-start:0;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:var(--%NS%_kpt-shell-z);box-shadow:var(--%NS%kpt-elevation-3);--%NS%_kpt-shell-vis-delay: 0s}.kpt-app-shell[data-sidenav-mode=over]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{translate:var(--%NS%_kpt-shell-out) 0;visibility:hidden;--%NS%_kpt-shell-vis-delay: var(--%NS%_kpt-shell-duration)}.kpt-app-shell[data-sidenav-mode=over] .kpt-app-shell__scrim{display:block}.kpt-app-shell[data-sidenav-mode=over].kpt-app-shell--nav-open .kpt-app-shell__scrim{opacity:1;visibility:visible;--%NS%_kpt-shell-vis-delay: 0s}.kpt-app-shell[data-sidenav-mode=auto]{--%NS%_kpt-shell-sidenav-width: min(var(--%NS%kpt-sidenav-width, 16rem), 85vw);--%NS%_kpt-shell-label-position: static;--%NS%_kpt-shell-label-size: auto;--%NS%_kpt-shell-label-overflow: visible;--%NS%_kpt-shell-label-clip: none;--%NS%_kpt-shell-label-wrap: normal;--%NS%_kpt-shell-item-align: start}.kpt-app-shell[data-sidenav-mode=auto] .kpt-app-shell__sidenav{position:absolute;inset-block:0;inset-inline-start:0;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:var(--%NS%_kpt-shell-z);box-shadow:var(--%NS%kpt-elevation-3);--%NS%_kpt-shell-vis-delay: 0s}.kpt-app-shell[data-sidenav-mode=auto]:not(.kpt-app-shell--nav-compact-open) .kpt-app-shell__sidenav{translate:var(--%NS%_kpt-shell-out) 0;visibility:hidden;--%NS%_kpt-shell-vis-delay: var(--%NS%_kpt-shell-duration)}.kpt-app-shell[data-sidenav-mode=auto] .kpt-app-shell__scrim{display:block}.kpt-app-shell[data-sidenav-mode=auto].kpt-app-shell--nav-compact-open .kpt-app-shell__scrim{opacity:1;visibility:visible;--%NS%_kpt-shell-vis-delay: 0s}@media(min-width:640px){.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=sm]{--%NS%_kpt-shell-sidenav-width: var(--%NS%kpt-sidenav-width, 16rem);--%NS%_kpt-shell-label-position: static;--%NS%_kpt-shell-label-size: auto;--%NS%_kpt-shell-label-overflow: visible;--%NS%_kpt-shell-label-clip: none;--%NS%_kpt-shell-label-wrap: normal;--%NS%_kpt-shell-item-align: start}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=sm] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--%NS%_kpt-shell-vis-delay: 0s}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=sm]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--%NS%_kpt-shell-sidenav-width));visibility:hidden;--%NS%_kpt-shell-vis-delay: var(--%NS%_kpt-shell-duration)}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=sm] .kpt-app-shell__scrim{display:none}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=sm][data-sidenav-rail]:not(.kpt-app-shell--nav-open){--%NS%_kpt-shell-sidenav-width: var(--%NS%kpt-sidenav-rail-width, 4rem);--%NS%_kpt-shell-label-position: absolute;--%NS%_kpt-shell-label-size: 1px;--%NS%_kpt-shell-label-overflow: hidden;--%NS%_kpt-shell-label-clip: inset(50%);--%NS%_kpt-shell-label-wrap: nowrap;--%NS%_kpt-shell-item-align: center}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=sm][data-sidenav-rail]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:0;visibility:visible;overflow-x:hidden;--%NS%_kpt-shell-vis-delay: 0s}}@media(min-width:768px){.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=md]{--%NS%_kpt-shell-sidenav-width: var(--%NS%kpt-sidenav-width, 16rem);--%NS%_kpt-shell-label-position: static;--%NS%_kpt-shell-label-size: auto;--%NS%_kpt-shell-label-overflow: visible;--%NS%_kpt-shell-label-clip: none;--%NS%_kpt-shell-label-wrap: normal;--%NS%_kpt-shell-item-align: start}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=md] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--%NS%_kpt-shell-vis-delay: 0s}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=md]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--%NS%_kpt-shell-sidenav-width));visibility:hidden;--%NS%_kpt-shell-vis-delay: var(--%NS%_kpt-shell-duration)}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=md] .kpt-app-shell__scrim{display:none}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=md][data-sidenav-rail]:not(.kpt-app-shell--nav-open){--%NS%_kpt-shell-sidenav-width: var(--%NS%kpt-sidenav-rail-width, 4rem);--%NS%_kpt-shell-label-position: absolute;--%NS%_kpt-shell-label-size: 1px;--%NS%_kpt-shell-label-overflow: hidden;--%NS%_kpt-shell-label-clip: inset(50%);--%NS%_kpt-shell-label-wrap: nowrap;--%NS%_kpt-shell-item-align: center}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=md][data-sidenav-rail]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:0;visibility:visible;overflow-x:hidden;--%NS%_kpt-shell-vis-delay: 0s}}@media(min-width:1024px){.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=lg]{--%NS%_kpt-shell-sidenav-width: var(--%NS%kpt-sidenav-width, 16rem);--%NS%_kpt-shell-label-position: static;--%NS%_kpt-shell-label-size: auto;--%NS%_kpt-shell-label-overflow: visible;--%NS%_kpt-shell-label-clip: none;--%NS%_kpt-shell-label-wrap: normal;--%NS%_kpt-shell-item-align: start}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=lg] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--%NS%_kpt-shell-vis-delay: 0s}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=lg]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--%NS%_kpt-shell-sidenav-width));visibility:hidden;--%NS%_kpt-shell-vis-delay: var(--%NS%_kpt-shell-duration)}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=lg] .kpt-app-shell__scrim{display:none}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=lg][data-sidenav-rail]:not(.kpt-app-shell--nav-open){--%NS%_kpt-shell-sidenav-width: var(--%NS%kpt-sidenav-rail-width, 4rem);--%NS%_kpt-shell-label-position: absolute;--%NS%_kpt-shell-label-size: 1px;--%NS%_kpt-shell-label-overflow: hidden;--%NS%_kpt-shell-label-clip: inset(50%);--%NS%_kpt-shell-label-wrap: nowrap;--%NS%_kpt-shell-item-align: center}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=lg][data-sidenav-rail]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:0;visibility:visible;overflow-x:hidden;--%NS%_kpt-shell-vis-delay: 0s}}@media(min-width:1280px){.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=xl]{--%NS%_kpt-shell-sidenav-width: var(--%NS%kpt-sidenav-width, 16rem);--%NS%_kpt-shell-label-position: static;--%NS%_kpt-shell-label-size: auto;--%NS%_kpt-shell-label-overflow: visible;--%NS%_kpt-shell-label-clip: none;--%NS%_kpt-shell-label-wrap: normal;--%NS%_kpt-shell-item-align: start}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=xl] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--%NS%_kpt-shell-vis-delay: 0s}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=xl]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--%NS%_kpt-shell-sidenav-width));visibility:hidden;--%NS%_kpt-shell-vis-delay: var(--%NS%_kpt-shell-duration)}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=xl] .kpt-app-shell__scrim{display:none}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=xl][data-sidenav-rail]:not(.kpt-app-shell--nav-open){--%NS%_kpt-shell-sidenav-width: var(--%NS%kpt-sidenav-rail-width, 4rem);--%NS%_kpt-shell-label-position: absolute;--%NS%_kpt-shell-label-size: 1px;--%NS%_kpt-shell-label-overflow: hidden;--%NS%_kpt-shell-label-clip: inset(50%);--%NS%_kpt-shell-label-wrap: nowrap;--%NS%_kpt-shell-item-align: center}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=xl][data-sidenav-rail]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:0;visibility:visible;overflow-x:hidden;--%NS%_kpt-shell-vis-delay: 0s}}@media(min-width:1536px){.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=\"2xl\"]{--%NS%_kpt-shell-sidenav-width: var(--%NS%kpt-sidenav-width, 16rem);--%NS%_kpt-shell-label-position: static;--%NS%_kpt-shell-label-size: auto;--%NS%_kpt-shell-label-overflow: visible;--%NS%_kpt-shell-label-clip: none;--%NS%_kpt-shell-label-wrap: normal;--%NS%_kpt-shell-item-align: start}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=\"2xl\"] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--%NS%_kpt-shell-vis-delay: 0s}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=\"2xl\"]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--%NS%_kpt-shell-sidenav-width));visibility:hidden;--%NS%_kpt-shell-vis-delay: var(--%NS%_kpt-shell-duration)}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=\"2xl\"] .kpt-app-shell__scrim{display:none}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=\"2xl\"][data-sidenav-rail]:not(.kpt-app-shell--nav-open){--%NS%_kpt-shell-sidenav-width: var(--%NS%kpt-sidenav-rail-width, 4rem);--%NS%_kpt-shell-label-position: absolute;--%NS%_kpt-shell-label-size: 1px;--%NS%_kpt-shell-label-overflow: hidden;--%NS%_kpt-shell-label-clip: inset(50%);--%NS%_kpt-shell-label-wrap: nowrap;--%NS%_kpt-shell-item-align: center}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=\"2xl\"][data-sidenav-rail]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:0;visibility:visible;overflow-x:hidden;--%NS%_kpt-shell-vis-delay: 0s}}@media(min-width:640px){.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=sm]{--%NS%_kpt-shell-sidenav-width: var(--%NS%kpt-sidenav-width, 16rem);--%NS%_kpt-shell-label-position: static;--%NS%_kpt-shell-label-size: auto;--%NS%_kpt-shell-label-overflow: visible;--%NS%_kpt-shell-label-clip: none;--%NS%_kpt-shell-label-wrap: normal;--%NS%_kpt-shell-item-align: start}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=sm] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--%NS%_kpt-shell-vis-delay: 0s}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=sm]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--%NS%_kpt-shell-sidenav-width));visibility:hidden;--%NS%_kpt-shell-vis-delay: var(--%NS%_kpt-shell-duration)}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=sm] .kpt-app-shell__scrim{display:none}}@media(min-width:768px){.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=md]{--%NS%_kpt-shell-sidenav-width: var(--%NS%kpt-sidenav-width, 16rem);--%NS%_kpt-shell-label-position: static;--%NS%_kpt-shell-label-size: auto;--%NS%_kpt-shell-label-overflow: visible;--%NS%_kpt-shell-label-clip: none;--%NS%_kpt-shell-label-wrap: normal;--%NS%_kpt-shell-item-align: start}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=md] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--%NS%_kpt-shell-vis-delay: 0s}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=md]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--%NS%_kpt-shell-sidenav-width));visibility:hidden;--%NS%_kpt-shell-vis-delay: var(--%NS%_kpt-shell-duration)}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=md] .kpt-app-shell__scrim{display:none}}@media(min-width:1024px){.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=lg]{--%NS%_kpt-shell-sidenav-width: var(--%NS%kpt-sidenav-width, 16rem);--%NS%_kpt-shell-label-position: static;--%NS%_kpt-shell-label-size: auto;--%NS%_kpt-shell-label-overflow: visible;--%NS%_kpt-shell-label-clip: none;--%NS%_kpt-shell-label-wrap: normal;--%NS%_kpt-shell-item-align: start}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=lg] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--%NS%_kpt-shell-vis-delay: 0s}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=lg]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--%NS%_kpt-shell-sidenav-width));visibility:hidden;--%NS%_kpt-shell-vis-delay: var(--%NS%_kpt-shell-duration)}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=lg] .kpt-app-shell__scrim{display:none}}@media(min-width:1280px){.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=xl]{--%NS%_kpt-shell-sidenav-width: var(--%NS%kpt-sidenav-width, 16rem);--%NS%_kpt-shell-label-position: static;--%NS%_kpt-shell-label-size: auto;--%NS%_kpt-shell-label-overflow: visible;--%NS%_kpt-shell-label-clip: none;--%NS%_kpt-shell-label-wrap: normal;--%NS%_kpt-shell-item-align: start}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=xl] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--%NS%_kpt-shell-vis-delay: 0s}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=xl]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--%NS%_kpt-shell-sidenav-width));visibility:hidden;--%NS%_kpt-shell-vis-delay: var(--%NS%_kpt-shell-duration)}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=xl] .kpt-app-shell__scrim{display:none}}@media(min-width:1536px){.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=\"2xl\"]{--%NS%_kpt-shell-sidenav-width: var(--%NS%kpt-sidenav-width, 16rem);--%NS%_kpt-shell-label-position: static;--%NS%_kpt-shell-label-size: auto;--%NS%_kpt-shell-label-overflow: visible;--%NS%_kpt-shell-label-clip: none;--%NS%_kpt-shell-label-wrap: normal;--%NS%_kpt-shell-item-align: start}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=\"2xl\"] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--%NS%_kpt-shell-vis-delay: 0s}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=\"2xl\"]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--%NS%_kpt-shell-sidenav-width));visibility:hidden;--%NS%_kpt-shell-vis-delay: var(--%NS%_kpt-shell-duration)}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=\"2xl\"] .kpt-app-shell__scrim{display:none}}@media(prefers-reduced-motion:reduce){.kpt-app-shell__sidenav,.kpt-app-shell__scrim{transition:none}}}\n"], encapsulation: 2 }); }
6938
7406
  }
6939
7407
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptAppShell, [{
6940
7408
  type: Component,
6941
7409
  args: [{ selector: 'kpt-app-shell', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
6942
7410
  class: 'kpt-app-shell',
6943
7411
  '[attr.data-sidenav-mode]': 'sidenavMode()',
7412
+ '[attr.data-sidenav-breakpoint]': 'sidenavBreakpoint()',
7413
+ '[attr.data-sidenav-rail]': 'sidenavRailBreakpoint()',
6944
7414
  '[class.kpt-app-shell--nav-open]': 'sidenavOpen()',
6945
- }, template: "<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", styles: ["@layer kpt.components{.kpt-app-shell{display:flex;flex-direction:column;height:100vh}.kpt-app-shell__body{position:relative;flex:1;display:flex;min-height:0}.kpt-app-shell__sidenav{width:var(--kpt-sidenav-width, 16rem);flex-shrink:0;min-height:0;overflow-y:auto;transition:margin-inline-start var(--kpt-motion-duration-base, .2s) var(--kpt-motion-easing-standard),transform var(--kpt-motion-duration-base, .2s) var(--kpt-motion-easing-standard)}.kpt-app-shell__content{flex:1;min-width:0;overflow:auto}.kpt-app-shell__scrim{position:absolute;inset:0;background:var(--kpt-color-overlay-scrim);z-index:calc(var(--kpt-z-overlay, 1100) - 1)}.kpt-app-shell[data-sidenav-mode=side]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--kpt-sidenav-width, 16rem))}.kpt-app-shell[data-sidenav-mode=over] .kpt-app-shell__sidenav{position:absolute;inset-block:0;inset-inline-start:0;z-index:var(--kpt-z-overlay, 1100);box-shadow:var(--kpt-elevation-3)}.kpt-app-shell[data-sidenav-mode=over]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{transform:translate(-100%)}@media(prefers-reduced-motion:reduce){.kpt-app-shell__sidenav{transition:none}}}\n"] }]
6946
- }], null, { sidenavOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "sidenavOpen", required: false }] }, { type: i0.Output, args: ["sidenavOpenChange"] }], sidenavMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "sidenavMode", required: false }] }] }); })();
6947
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptAppShell, { className: "KptAppShell", filePath: "lib/app-shell/app-shell.component.ts", lineNumber: 28 }); })();
7415
+ '[class.kpt-app-shell--nav-compact-open]': 'sidenavCompactOpen()',
7416
+ '(document:keydown.escape)': 'onEscape()',
7417
+ }, template: "<ng-content select=\"[kptShellToolbar]\" />\n\n<div class=\"kpt-app-shell__body\">\n <aside\n class=\"kpt-app-shell__sidenav\"\n role=\"navigation\"\n tabindex=\"-1\"\n [id]=\"sidenavId\"\n [attr.aria-label]=\"navLabel()\"\n >\n <ng-content select=\"[kptShellSidenav]\" />\n </aside>\n\n <!--\n Scrim jest zawsze w DOM, a jego widoczno\u015Bci\u0105 steruje wy\u0142\u0105cznie CSS. Dzi\u0119ki temu nak\u0142adka\n wygl\u0105da poprawnie ju\u017C na pierwszej klatce \u2014 tak\u017Ce przed hydracj\u0105 i przy wy\u0142\u0105czonym JS.\n -->\n <div class=\"kpt-app-shell__scrim\" aria-hidden=\"true\" (click)=\"onScrimClick()\"></div>\n\n <main class=\"kpt-app-shell__content\" [attr.inert]=\"contentInert() ? '' : null\">\n <ng-content />\n </main>\n</div>\n", styles: ["@layer kpt.components{.kpt-app-shell{--_kpt-shell-sidenav-width: var(--kpt-sidenav-width, 16rem);--_kpt-shell-z: var(--kpt-z-overlay, 1100);--_kpt-shell-duration: var(--kpt-motion-duration-base, .2s);--_kpt-shell-easing: var(--kpt-motion-easing-standard);--_kpt-shell-out: -100%;display:flex;flex-direction:column;block-size:100vh;block-size:100dvh}.kpt-app-shell__body{position:relative;flex:1;display:flex;min-block-size:0}.kpt-app-shell__sidenav{inline-size:var(--_kpt-shell-sidenav-width);flex-shrink:0;min-block-size:0;overflow-y:auto;overscroll-behavior:contain;transition:margin-inline-start var(--_kpt-shell-duration) var(--_kpt-shell-easing),inline-size var(--_kpt-shell-duration) var(--_kpt-shell-easing),translate var(--_kpt-shell-duration) var(--_kpt-shell-easing),visibility 0s linear var(--_kpt-shell-vis-delay, 0s)}.kpt-app-shell__content{flex:1;min-inline-size:0;overflow:auto}.kpt-app-shell__scrim{position:absolute;inset:0;background:var(--kpt-color-overlay-scrim);z-index:calc(var(--_kpt-shell-z) - 1);opacity:0;visibility:hidden;--_kpt-shell-vis-delay: var(--_kpt-shell-duration);transition:opacity var(--_kpt-shell-duration) var(--_kpt-shell-easing),visibility 0s linear var(--_kpt-shell-vis-delay, 0s)}.kpt-app-shell__sidenav [kptNavLabel],.kpt-app-shell__sidenav [kptNavSection]{position:var(--_kpt-shell-label-position, static);inline-size:var(--_kpt-shell-label-size, auto);block-size:var(--_kpt-shell-label-size, auto);overflow:var(--_kpt-shell-label-overflow, visible);clip-path:var(--_kpt-shell-label-clip, none);white-space:var(--_kpt-shell-label-wrap, normal)}:where(.kpt-app-shell__sidenav) :where(a,button){text-align:var(--_kpt-shell-item-align, start)}[dir=rtl] .kpt-app-shell,.kpt-app-shell[dir=rtl]{--_kpt-shell-out: 100%}.kpt-app-shell[data-sidenav-mode=side]{--_kpt-shell-sidenav-width: var(--kpt-sidenav-width, 16rem);--_kpt-shell-label-position: static;--_kpt-shell-label-size: auto;--_kpt-shell-label-overflow: visible;--_kpt-shell-label-clip: none;--_kpt-shell-label-wrap: normal;--_kpt-shell-item-align: start}.kpt-app-shell[data-sidenav-mode=side] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--_kpt-shell-vis-delay: 0s}.kpt-app-shell[data-sidenav-mode=side]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--_kpt-shell-sidenav-width));visibility:hidden;--_kpt-shell-vis-delay: var(--_kpt-shell-duration)}.kpt-app-shell[data-sidenav-mode=side] .kpt-app-shell__scrim{display:none}.kpt-app-shell[data-sidenav-mode=over]{--_kpt-shell-sidenav-width: min(var(--kpt-sidenav-width, 16rem), 85vw);--_kpt-shell-label-position: static;--_kpt-shell-label-size: auto;--_kpt-shell-label-overflow: visible;--_kpt-shell-label-clip: none;--_kpt-shell-label-wrap: normal;--_kpt-shell-item-align: start}.kpt-app-shell[data-sidenav-mode=over] .kpt-app-shell__sidenav{position:absolute;inset-block:0;inset-inline-start:0;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:var(--_kpt-shell-z);box-shadow:var(--kpt-elevation-3);--_kpt-shell-vis-delay: 0s}.kpt-app-shell[data-sidenav-mode=over]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{translate:var(--_kpt-shell-out) 0;visibility:hidden;--_kpt-shell-vis-delay: var(--_kpt-shell-duration)}.kpt-app-shell[data-sidenav-mode=over] .kpt-app-shell__scrim{display:block}.kpt-app-shell[data-sidenav-mode=over].kpt-app-shell--nav-open .kpt-app-shell__scrim{opacity:1;visibility:visible;--_kpt-shell-vis-delay: 0s}.kpt-app-shell[data-sidenav-mode=auto]{--_kpt-shell-sidenav-width: min(var(--kpt-sidenav-width, 16rem), 85vw);--_kpt-shell-label-position: static;--_kpt-shell-label-size: auto;--_kpt-shell-label-overflow: visible;--_kpt-shell-label-clip: none;--_kpt-shell-label-wrap: normal;--_kpt-shell-item-align: start}.kpt-app-shell[data-sidenav-mode=auto] .kpt-app-shell__sidenav{position:absolute;inset-block:0;inset-inline-start:0;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:var(--_kpt-shell-z);box-shadow:var(--kpt-elevation-3);--_kpt-shell-vis-delay: 0s}.kpt-app-shell[data-sidenav-mode=auto]:not(.kpt-app-shell--nav-compact-open) .kpt-app-shell__sidenav{translate:var(--_kpt-shell-out) 0;visibility:hidden;--_kpt-shell-vis-delay: var(--_kpt-shell-duration)}.kpt-app-shell[data-sidenav-mode=auto] .kpt-app-shell__scrim{display:block}.kpt-app-shell[data-sidenav-mode=auto].kpt-app-shell--nav-compact-open .kpt-app-shell__scrim{opacity:1;visibility:visible;--_kpt-shell-vis-delay: 0s}@media(min-width:640px){.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=sm]{--_kpt-shell-sidenav-width: var(--kpt-sidenav-width, 16rem);--_kpt-shell-label-position: static;--_kpt-shell-label-size: auto;--_kpt-shell-label-overflow: visible;--_kpt-shell-label-clip: none;--_kpt-shell-label-wrap: normal;--_kpt-shell-item-align: start}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=sm] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--_kpt-shell-vis-delay: 0s}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=sm]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--_kpt-shell-sidenav-width));visibility:hidden;--_kpt-shell-vis-delay: var(--_kpt-shell-duration)}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=sm] .kpt-app-shell__scrim{display:none}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=sm][data-sidenav-rail]:not(.kpt-app-shell--nav-open){--_kpt-shell-sidenav-width: var(--kpt-sidenav-rail-width, 4rem);--_kpt-shell-label-position: absolute;--_kpt-shell-label-size: 1px;--_kpt-shell-label-overflow: hidden;--_kpt-shell-label-clip: inset(50%);--_kpt-shell-label-wrap: nowrap;--_kpt-shell-item-align: center}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=sm][data-sidenav-rail]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:0;visibility:visible;overflow-x:hidden;--_kpt-shell-vis-delay: 0s}}@media(min-width:768px){.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=md]{--_kpt-shell-sidenav-width: var(--kpt-sidenav-width, 16rem);--_kpt-shell-label-position: static;--_kpt-shell-label-size: auto;--_kpt-shell-label-overflow: visible;--_kpt-shell-label-clip: none;--_kpt-shell-label-wrap: normal;--_kpt-shell-item-align: start}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=md] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--_kpt-shell-vis-delay: 0s}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=md]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--_kpt-shell-sidenav-width));visibility:hidden;--_kpt-shell-vis-delay: var(--_kpt-shell-duration)}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=md] .kpt-app-shell__scrim{display:none}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=md][data-sidenav-rail]:not(.kpt-app-shell--nav-open){--_kpt-shell-sidenav-width: var(--kpt-sidenav-rail-width, 4rem);--_kpt-shell-label-position: absolute;--_kpt-shell-label-size: 1px;--_kpt-shell-label-overflow: hidden;--_kpt-shell-label-clip: inset(50%);--_kpt-shell-label-wrap: nowrap;--_kpt-shell-item-align: center}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=md][data-sidenav-rail]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:0;visibility:visible;overflow-x:hidden;--_kpt-shell-vis-delay: 0s}}@media(min-width:1024px){.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=lg]{--_kpt-shell-sidenav-width: var(--kpt-sidenav-width, 16rem);--_kpt-shell-label-position: static;--_kpt-shell-label-size: auto;--_kpt-shell-label-overflow: visible;--_kpt-shell-label-clip: none;--_kpt-shell-label-wrap: normal;--_kpt-shell-item-align: start}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=lg] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--_kpt-shell-vis-delay: 0s}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=lg]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--_kpt-shell-sidenav-width));visibility:hidden;--_kpt-shell-vis-delay: var(--_kpt-shell-duration)}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=lg] .kpt-app-shell__scrim{display:none}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=lg][data-sidenav-rail]:not(.kpt-app-shell--nav-open){--_kpt-shell-sidenav-width: var(--kpt-sidenav-rail-width, 4rem);--_kpt-shell-label-position: absolute;--_kpt-shell-label-size: 1px;--_kpt-shell-label-overflow: hidden;--_kpt-shell-label-clip: inset(50%);--_kpt-shell-label-wrap: nowrap;--_kpt-shell-item-align: center}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=lg][data-sidenav-rail]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:0;visibility:visible;overflow-x:hidden;--_kpt-shell-vis-delay: 0s}}@media(min-width:1280px){.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=xl]{--_kpt-shell-sidenav-width: var(--kpt-sidenav-width, 16rem);--_kpt-shell-label-position: static;--_kpt-shell-label-size: auto;--_kpt-shell-label-overflow: visible;--_kpt-shell-label-clip: none;--_kpt-shell-label-wrap: normal;--_kpt-shell-item-align: start}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=xl] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--_kpt-shell-vis-delay: 0s}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=xl]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--_kpt-shell-sidenav-width));visibility:hidden;--_kpt-shell-vis-delay: var(--_kpt-shell-duration)}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=xl] .kpt-app-shell__scrim{display:none}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=xl][data-sidenav-rail]:not(.kpt-app-shell--nav-open){--_kpt-shell-sidenav-width: var(--kpt-sidenav-rail-width, 4rem);--_kpt-shell-label-position: absolute;--_kpt-shell-label-size: 1px;--_kpt-shell-label-overflow: hidden;--_kpt-shell-label-clip: inset(50%);--_kpt-shell-label-wrap: nowrap;--_kpt-shell-item-align: center}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=xl][data-sidenav-rail]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:0;visibility:visible;overflow-x:hidden;--_kpt-shell-vis-delay: 0s}}@media(min-width:1536px){.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=\"2xl\"]{--_kpt-shell-sidenav-width: var(--kpt-sidenav-width, 16rem);--_kpt-shell-label-position: static;--_kpt-shell-label-size: auto;--_kpt-shell-label-overflow: visible;--_kpt-shell-label-clip: none;--_kpt-shell-label-wrap: normal;--_kpt-shell-item-align: start}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=\"2xl\"] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--_kpt-shell-vis-delay: 0s}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=\"2xl\"]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--_kpt-shell-sidenav-width));visibility:hidden;--_kpt-shell-vis-delay: var(--_kpt-shell-duration)}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=\"2xl\"] .kpt-app-shell__scrim{display:none}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=\"2xl\"][data-sidenav-rail]:not(.kpt-app-shell--nav-open){--_kpt-shell-sidenav-width: var(--kpt-sidenav-rail-width, 4rem);--_kpt-shell-label-position: absolute;--_kpt-shell-label-size: 1px;--_kpt-shell-label-overflow: hidden;--_kpt-shell-label-clip: inset(50%);--_kpt-shell-label-wrap: nowrap;--_kpt-shell-item-align: center}.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-breakpoint=\"2xl\"][data-sidenav-rail]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:0;visibility:visible;overflow-x:hidden;--_kpt-shell-vis-delay: 0s}}@media(min-width:640px){.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=sm]{--_kpt-shell-sidenav-width: var(--kpt-sidenav-width, 16rem);--_kpt-shell-label-position: static;--_kpt-shell-label-size: auto;--_kpt-shell-label-overflow: visible;--_kpt-shell-label-clip: none;--_kpt-shell-label-wrap: normal;--_kpt-shell-item-align: start}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=sm] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--_kpt-shell-vis-delay: 0s}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=sm]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--_kpt-shell-sidenav-width));visibility:hidden;--_kpt-shell-vis-delay: var(--_kpt-shell-duration)}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=sm] .kpt-app-shell__scrim{display:none}}@media(min-width:768px){.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=md]{--_kpt-shell-sidenav-width: var(--kpt-sidenav-width, 16rem);--_kpt-shell-label-position: static;--_kpt-shell-label-size: auto;--_kpt-shell-label-overflow: visible;--_kpt-shell-label-clip: none;--_kpt-shell-label-wrap: normal;--_kpt-shell-item-align: start}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=md] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--_kpt-shell-vis-delay: 0s}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=md]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--_kpt-shell-sidenav-width));visibility:hidden;--_kpt-shell-vis-delay: var(--_kpt-shell-duration)}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=md] .kpt-app-shell__scrim{display:none}}@media(min-width:1024px){.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=lg]{--_kpt-shell-sidenav-width: var(--kpt-sidenav-width, 16rem);--_kpt-shell-label-position: static;--_kpt-shell-label-size: auto;--_kpt-shell-label-overflow: visible;--_kpt-shell-label-clip: none;--_kpt-shell-label-wrap: normal;--_kpt-shell-item-align: start}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=lg] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--_kpt-shell-vis-delay: 0s}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=lg]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--_kpt-shell-sidenav-width));visibility:hidden;--_kpt-shell-vis-delay: var(--_kpt-shell-duration)}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=lg] .kpt-app-shell__scrim{display:none}}@media(min-width:1280px){.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=xl]{--_kpt-shell-sidenav-width: var(--kpt-sidenav-width, 16rem);--_kpt-shell-label-position: static;--_kpt-shell-label-size: auto;--_kpt-shell-label-overflow: visible;--_kpt-shell-label-clip: none;--_kpt-shell-label-wrap: normal;--_kpt-shell-item-align: start}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=xl] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--_kpt-shell-vis-delay: 0s}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=xl]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--_kpt-shell-sidenav-width));visibility:hidden;--_kpt-shell-vis-delay: var(--_kpt-shell-duration)}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=xl] .kpt-app-shell__scrim{display:none}}@media(min-width:1536px){.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=\"2xl\"]{--_kpt-shell-sidenav-width: var(--kpt-sidenav-width, 16rem);--_kpt-shell-label-position: static;--_kpt-shell-label-size: auto;--_kpt-shell-label-overflow: visible;--_kpt-shell-label-clip: none;--_kpt-shell-label-wrap: normal;--_kpt-shell-item-align: start}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=\"2xl\"] .kpt-app-shell__sidenav{position:static;inset-block:auto;inset-inline-start:auto;margin-inline-start:0;translate:none;visibility:visible;overflow-x:auto;z-index:auto;box-shadow:none;--_kpt-shell-vis-delay: 0s}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=\"2xl\"]:not(.kpt-app-shell--nav-open) .kpt-app-shell__sidenav{margin-inline-start:calc(-1 * var(--_kpt-shell-sidenav-width));visibility:hidden;--_kpt-shell-vis-delay: var(--_kpt-shell-duration)}.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell.kpt-app-shell[data-sidenav-mode=auto][data-sidenav-rail=\"2xl\"] .kpt-app-shell__scrim{display:none}}@media(prefers-reduced-motion:reduce){.kpt-app-shell__sidenav,.kpt-app-shell__scrim{transition:none}}}\n"] }]
7418
+ }], () => [], { sidenavOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "sidenavOpen", required: false }] }, { type: i0.Output, args: ["sidenavOpenChange"] }], sidenavCompactOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "sidenavCompactOpen", required: false }] }, { type: i0.Output, args: ["sidenavCompactOpenChange"] }], sidenavMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "sidenavMode", required: false }] }], sidenavBreakpoint: [{ type: i0.Input, args: [{ isSignal: true, alias: "sidenavBreakpoint", required: false }] }], sidenavRailBreakpoint: [{ type: i0.Input, args: [{ isSignal: true, alias: "sidenavRailBreakpoint", required: false }] }], sidenavLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "sidenavLabel", required: false }] }] }); })();
7419
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptAppShell, { className: "KptAppShell", filePath: "lib/app-shell/app-shell.component.ts", lineNumber: 63 }); })();
7420
+
7421
+ /**
7422
+ * Przycisk przełączający panel boczny `kpt-app-shell`. Umieść go w slocie
7423
+ * `[kptShellToolbar]` — dyrektywa sama odnajdzie shell w drzewie deklaracji.
7424
+ *
7425
+ * Trafia w stan właściwy dla bieżącego układu (zadokowany albo nakładka), więc jeden
7426
+ * przycisk obsługuje desktop i wąski ekran. Bez tej dyrektywy aplikacja musiałaby sama
7427
+ * wstrzyknąć `KptBreakpointObserver` i rozstrzygnąć, który z dwóch modeli przełączyć.
7428
+ *
7429
+ * Atrybuty ARIA nakłada wyłącznie na natywny `<button>`/`<a>`. Na komponencie opakowującym
7430
+ * (np. `kpt-icon-button`) trafiłyby na zewnętrzny element bez roli, co jest naruszeniem
7431
+ * `aria-allowed-attr` — tam etykietę podaj samemu komponentowi.
7432
+ *
7433
+ * @example
7434
+ * <button kptShellNavToggle type="button"><kpt-icon name="menu" /></button>
7435
+ * <kpt-icon-button kptShellNavToggle ariaLabel="Menu"><kpt-icon name="menu" /></kpt-icon-button>
7436
+ */
7437
+ class KptShellNavToggle {
7438
+ constructor() {
7439
+ /** Własna etykieta przycisku; puste = `appShell.toggleNavigation` ze słownika. */
7440
+ this.label = input('', { ...(ngDevMode ? { debugName: "label" } : /* istanbul ignore next */ {}), alias: 'kptShellNavToggle' });
7441
+ this.shell = inject(KptAppShell);
7442
+ this.i18n = inject(KptI18n);
7443
+ this.isNativeControl = /^(?:BUTTON|A)$/.test(inject(ElementRef).nativeElement.tagName);
7444
+ this.ariaExpanded = computed(() => this.isNativeControl ? String(this.shell.isSidenavOpen()) : null, /* @ts-ignore */
7445
+ ...(ngDevMode ? [{ debugName: "ariaExpanded" }] : /* istanbul ignore next */ []));
7446
+ this.ariaControls = computed(() => (this.isNativeControl ? this.shell.sidenavId : null), /* @ts-ignore */
7447
+ ...(ngDevMode ? [{ debugName: "ariaControls" }] : /* istanbul ignore next */ []));
7448
+ this.ariaLabel = computed(() => this.isNativeControl ? this.label() || this.i18n.t('appShell.toggleNavigation') : null, /* @ts-ignore */
7449
+ ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
7450
+ }
7451
+ static { this.ɵfac = function KptShellNavToggle_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptShellNavToggle)(); }; }
7452
+ static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: KptShellNavToggle, selectors: [["", "kptShellNavToggle", ""]], hostVars: 3, hostBindings: function KptShellNavToggle_HostBindings(rf, ctx) { if (rf & 1) {
7453
+ i0.ɵɵlistener("click", function KptShellNavToggle_click_HostBindingHandler() { return ctx.shell.toggleSidenav(); });
7454
+ } if (rf & 2) {
7455
+ i0.ɵɵattribute("aria-expanded", ctx.ariaExpanded())("aria-controls", ctx.ariaControls())("aria-label", ctx.ariaLabel());
7456
+ } }, inputs: { label: [1, "kptShellNavToggle", "label"] } }); }
7457
+ }
7458
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptShellNavToggle, [{
7459
+ type: Directive,
7460
+ args: [{
7461
+ selector: '[kptShellNavToggle]',
7462
+ host: {
7463
+ '(click)': 'shell.toggleSidenav()',
7464
+ '[attr.aria-expanded]': 'ariaExpanded()',
7465
+ '[attr.aria-controls]': 'ariaControls()',
7466
+ '[attr.aria-label]': 'ariaLabel()',
7467
+ },
7468
+ }]
7469
+ }], null, { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "kptShellNavToggle", required: false }] }] }); })();
6948
7470
 
6949
7471
  const _c0$n = [[["", "kptPanelActions", ""]], "*"];
6950
7472
  const _c1$7 = ["[kptPanelActions]", "*"];
@@ -10417,15 +10939,47 @@ class KptDialog {
10417
10939
  this.i18n = inject(KptI18n);
10418
10940
  this.dialogRef = viewChild('dlg', /* @ts-ignore */
10419
10941
  ...(ngDevMode ? [{ debugName: "dialogRef" }] : /* istanbul ignore next */ []));
10942
+ this.overlayContainer = inject(OverlayContainer);
10943
+ /** Miejsce, z którego zabraliśmy kontener overlayów — żeby go tam oddać. */
10944
+ this.overlayHome = null;
10420
10945
  effect(() => {
10421
10946
  const el = this.dialogRef()?.nativeElement;
10422
10947
  if (!el)
10423
10948
  return;
10424
- if (this.open() && !el.open)
10949
+ if (this.open() && !el.open) {
10425
10950
  el.showModal();
10426
- else if (!this.open() && el.open)
10951
+ this.adoptOverlayContainer(el);
10952
+ }
10953
+ else if (!this.open() && el.open) {
10427
10954
  el.close();
10955
+ this.releaseOverlayContainer();
10956
+ }
10428
10957
  });
10958
+ // Zamknięcie przez `close`/`cancel` też przechodzi tędy, ale zniszczenie komponentu
10959
+ // z otwartym oknem już nie — kontener musi wrócić na miejsce niezależnie od drogi.
10960
+ inject(DestroyRef).onDestroy(() => this.releaseOverlayContainer());
10961
+ }
10962
+ /**
10963
+ * Przenosi kontener CDK Overlay do wnętrza `<dialog>` na czas, gdy okno jest otwarte.
10964
+ *
10965
+ * `showModal()` wynosi okno do **warstwy szczytowej** przeglądarki, a ta jest ponad
10966
+ * całym drzewem dokumentu — żaden `z-index` tego nie przebije. Kontener overlayów
10967
+ * wisi na `<body>`, więc panele `kpt-select`, `kpt-datepicker`, `kpt-autocomplete`
10968
+ * czy `kpt-menu` otwierałyby się NIEWIDOCZNE, schowane za tłem okna.
10969
+ */
10970
+ adoptOverlayContainer(dialog) {
10971
+ const container = this.overlayContainer.getContainerElement();
10972
+ if (container.parentElement === dialog)
10973
+ return;
10974
+ this.overlayHome = container.parentElement;
10975
+ dialog.appendChild(container);
10976
+ }
10977
+ releaseOverlayContainer() {
10978
+ if (!this.overlayHome)
10979
+ return;
10980
+ // `getContainerElement()` nie tworzy nowego kontenera — zwraca ten sam, który zabraliśmy.
10981
+ this.overlayHome.appendChild(this.overlayContainer.getContainerElement());
10982
+ this.overlayHome = null;
10429
10983
  }
10430
10984
  onCancel(event) {
10431
10985
  if (!this.dismissible()) {
@@ -10452,7 +11006,7 @@ class KptDialog {
10452
11006
  } if (rf & 2) {
10453
11007
  i0.ɵɵadvance(2);
10454
11008
  i0.ɵɵconditional(ctx.header() ? 2 : -1);
10455
- } }, dependencies: [KptIcon], styles: ["@layer kpt.components{.kpt-dialog{margin:auto;width:min(32rem,100vw - 2rem);max-height:calc(100vh - 4rem);padding:0;border:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-color-border);border-radius:var(--%NS%kpt-radius-lg, .75rem);background:var(--%NS%kpt-color-surface-raised);color:var(--%NS%kpt-color-on-surface);box-shadow:var(--%NS%kpt-elevation-4)}.kpt-dialog::backdrop{background:var(--%NS%kpt-color-overlay-scrim)}.kpt-dialog__header{display:flex;align-items:center;justify-content:space-between;gap:var(--%NS%kpt-space-3, .75rem);padding:var(--%NS%kpt-space-5, 1.25rem) var(--%NS%kpt-space-6, 1.5rem);border-bottom:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-color-border)}.kpt-dialog__title{font-size:var(--%NS%kpt-font-size-lg, 1.125rem);font-weight:var(--%NS%kpt-font-weight-semibold, 600)}.kpt-dialog__close{background:none;border:0;cursor:pointer;color:var(--%NS%kpt-color-on-surface-muted);font-size:1.4rem;line-height:1;padding:0}.kpt-dialog__close:hover{color:var(--%NS%kpt-color-on-surface)}.kpt-dialog__body{padding:var(--%NS%kpt-space-6, 1.5rem);font-size:var(--%NS%kpt-font-size-sm, .875rem);overflow-y:auto}.kpt-dialog [kptDialogFooter]{display:flex;justify-content:flex-end;gap:var(--%NS%kpt-space-3, .75rem);padding:var(--%NS%kpt-space-4, 1rem) var(--%NS%kpt-space-6, 1.5rem);border-top:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-color-border)}}\n"], encapsulation: 2 }); }
11009
+ } }, dependencies: [KptIcon], styles: ["@charset \"UTF-8\";@layer kpt.components{.kpt-dialog{margin:auto;width:min(32rem,100vw - 2rem);max-height:calc(100vh - 4rem);padding:0;border:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-color-border);border-radius:var(--%NS%kpt-radius-lg, .75rem);background:var(--%NS%kpt-color-surface-raised);color:var(--%NS%kpt-color-on-surface);box-shadow:var(--%NS%kpt-elevation-4)}.kpt-dialog::backdrop{background:var(--%NS%kpt-color-overlay-scrim)}.kpt-dialog[open]{display:flex;flex-direction:column}.kpt-dialog__header{flex:none;display:flex;align-items:center;justify-content:space-between;gap:var(--%NS%kpt-space-3, .75rem);padding:var(--%NS%kpt-space-5, 1.25rem) var(--%NS%kpt-space-6, 1.5rem);border-bottom:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-color-border)}.kpt-dialog__title{font-size:var(--%NS%kpt-font-size-lg, 1.125rem);font-weight:var(--%NS%kpt-font-weight-semibold, 600)}.kpt-dialog__close{background:none;border:0;cursor:pointer;color:var(--%NS%kpt-color-on-surface-muted);font-size:1.4rem;line-height:1;padding:0}.kpt-dialog__close:hover{color:var(--%NS%kpt-color-on-surface)}.kpt-dialog__body{min-height:0;padding:var(--%NS%kpt-space-6, 1.5rem);font-size:var(--%NS%kpt-font-size-sm, .875rem);overflow-y:auto;overscroll-behavior:contain}.kpt-dialog [kptDialogFooter]{flex:none;display:flex;justify-content:flex-end;gap:var(--%NS%kpt-space-3, .75rem);padding:var(--%NS%kpt-space-4, 1rem) var(--%NS%kpt-space-6, 1.5rem);border-top:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-color-border)}}\n"], encapsulation: 2 }); }
10456
11010
  }
10457
11011
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptDialog, [{
10458
11012
  type: Component,
@@ -10469,9 +11023,9 @@ class KptDialog {
10469
11023
  <div class="kpt-dialog__body"><ng-content /></div>
10470
11024
  <ng-content select="[kptDialogFooter]" />
10471
11025
  </dialog>
10472
- `, host: { class: 'kpt-dialog-host' }, styles: ["@layer kpt.components{.kpt-dialog{margin:auto;width:min(32rem,100vw - 2rem);max-height:calc(100vh - 4rem);padding:0;border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-lg, .75rem);background:var(--kpt-color-surface-raised);color:var(--kpt-color-on-surface);box-shadow:var(--kpt-elevation-4)}.kpt-dialog::backdrop{background:var(--kpt-color-overlay-scrim)}.kpt-dialog__header{display:flex;align-items:center;justify-content:space-between;gap:var(--kpt-space-3, .75rem);padding:var(--kpt-space-5, 1.25rem) var(--kpt-space-6, 1.5rem);border-bottom:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border)}.kpt-dialog__title{font-size:var(--kpt-font-size-lg, 1.125rem);font-weight:var(--kpt-font-weight-semibold, 600)}.kpt-dialog__close{background:none;border:0;cursor:pointer;color:var(--kpt-color-on-surface-muted);font-size:1.4rem;line-height:1;padding:0}.kpt-dialog__close:hover{color:var(--kpt-color-on-surface)}.kpt-dialog__body{padding:var(--kpt-space-6, 1.5rem);font-size:var(--kpt-font-size-sm, .875rem);overflow-y:auto}.kpt-dialog [kptDialogFooter]{display:flex;justify-content:flex-end;gap:var(--kpt-space-3, .75rem);padding:var(--kpt-space-4, 1rem) var(--kpt-space-6, 1.5rem);border-top:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border)}}\n"] }]
11026
+ `, host: { class: 'kpt-dialog-host' }, styles: ["@charset \"UTF-8\";@layer kpt.components{.kpt-dialog{margin:auto;width:min(32rem,100vw - 2rem);max-height:calc(100vh - 4rem);padding:0;border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-lg, .75rem);background:var(--kpt-color-surface-raised);color:var(--kpt-color-on-surface);box-shadow:var(--kpt-elevation-4)}.kpt-dialog::backdrop{background:var(--kpt-color-overlay-scrim)}.kpt-dialog[open]{display:flex;flex-direction:column}.kpt-dialog__header{flex:none;display:flex;align-items:center;justify-content:space-between;gap:var(--kpt-space-3, .75rem);padding:var(--kpt-space-5, 1.25rem) var(--kpt-space-6, 1.5rem);border-bottom:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border)}.kpt-dialog__title{font-size:var(--kpt-font-size-lg, 1.125rem);font-weight:var(--kpt-font-weight-semibold, 600)}.kpt-dialog__close{background:none;border:0;cursor:pointer;color:var(--kpt-color-on-surface-muted);font-size:1.4rem;line-height:1;padding:0}.kpt-dialog__close:hover{color:var(--kpt-color-on-surface)}.kpt-dialog__body{min-height:0;padding:var(--kpt-space-6, 1.5rem);font-size:var(--kpt-font-size-sm, .875rem);overflow-y:auto;overscroll-behavior:contain}.kpt-dialog [kptDialogFooter]{flex:none;display:flex;justify-content:flex-end;gap:var(--kpt-space-3, .75rem);padding:var(--kpt-space-4, 1rem) var(--kpt-space-6, 1.5rem);border-top:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border)}}\n"] }]
10473
11027
  }], () => [], { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: false }] }], dismissible: [{ type: i0.Input, args: [{ isSignal: true, alias: "dismissible", required: false }] }], dialogRef: [{ type: i0.ViewChild, args: ['dlg', { isSignal: true }] }] }); })();
10474
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptDialog, { className: "KptDialog", filePath: "lib/dialog/dialog.component.ts", lineNumber: 51 }); })();
11028
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptDialog, { className: "KptDialog", filePath: "lib/dialog/dialog.component.ts", lineNumber: 53 }); })();
10475
11029
 
10476
11030
  /**
10477
11031
  * Serwis powiadomień (toastów). Wstrzyknij i wywołuj `show`/`success`/`error`/...;
@@ -10607,37 +11161,106 @@ function KptMenu_ng_template_3_For_2_Conditional_0_Template(rf, ctx) { if (rf &
10607
11161
  i0.ɵɵelement(0, "div", 4);
10608
11162
  } }
10609
11163
  function KptMenu_ng_template_3_For_2_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
10610
- i0.ɵɵelement(0, "kpt-icon", 7);
11164
+ i0.ɵɵelement(0, "kpt-avatar", 7);
10611
11165
  } if (rf & 2) {
10612
- const item_r2 = i0.ɵɵnextContext(2).$implicit;
10613
- i0.ɵɵproperty("name", item_r2.icon);
11166
+ const item_r1 = i0.ɵɵnextContext(2).$implicit;
11167
+ i0.ɵɵproperty("src", item_r1.avatar.src ?? null)("name", item_r1.avatar.name ?? "")("icon", item_r1.avatar.icon ?? null);
11168
+ } }
11169
+ function KptMenu_ng_template_3_For_2_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
11170
+ i0.ɵɵelement(0, "kpt-icon", 8);
11171
+ } if (rf & 2) {
11172
+ const item_r1 = i0.ɵɵnextContext(2).$implicit;
11173
+ i0.ɵɵproperty("name", item_r1.icon);
11174
+ } }
11175
+ function KptMenu_ng_template_3_For_2_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
11176
+ i0.ɵɵelementStart(0, "span", 10);
11177
+ i0.ɵɵtext(1);
11178
+ i0.ɵɵelementEnd();
11179
+ } if (rf & 2) {
11180
+ const item_r1 = i0.ɵɵnextContext(2).$implicit;
11181
+ i0.ɵɵadvance();
11182
+ i0.ɵɵtextInterpolate(item_r1.label);
11183
+ } }
11184
+ function KptMenu_ng_template_3_For_2_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
11185
+ i0.ɵɵelementStart(0, "span", 11);
11186
+ i0.ɵɵtext(1);
11187
+ i0.ɵɵelementEnd();
11188
+ } if (rf & 2) {
11189
+ const item_r1 = i0.ɵɵnextContext(2).$implicit;
11190
+ i0.ɵɵadvance();
11191
+ i0.ɵɵtextInterpolate(item_r1.description);
10614
11192
  } }
10615
11193
  function KptMenu_ng_template_3_For_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
10616
- const _r1 = i0.ɵɵgetCurrentView();
10617
- i0.ɵɵelementStart(0, "button", 6);
10618
- i0.ɵɵlistener("click", function KptMenu_ng_template_3_For_2_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); const item_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.pick(item_r2)); });
10619
- i0.ɵɵconditionalCreate(1, KptMenu_ng_template_3_For_2_Conditional_1_Conditional_1_Template, 1, 1, "kpt-icon", 7);
10620
- i0.ɵɵelementStart(2, "span");
10621
- i0.ɵɵtext(3);
11194
+ i0.ɵɵelementStart(0, "div", 5);
11195
+ i0.ɵɵconditionalCreate(1, KptMenu_ng_template_3_For_2_Conditional_1_Conditional_1_Template, 1, 3, "kpt-avatar", 7)(2, KptMenu_ng_template_3_For_2_Conditional_1_Conditional_2_Template, 1, 1, "kpt-icon", 8);
11196
+ i0.ɵɵelementStart(3, "span", 9);
11197
+ i0.ɵɵconditionalCreate(4, KptMenu_ng_template_3_For_2_Conditional_1_Conditional_4_Template, 2, 1, "span", 10);
11198
+ i0.ɵɵconditionalCreate(5, KptMenu_ng_template_3_For_2_Conditional_1_Conditional_5_Template, 2, 1, "span", 11);
10622
11199
  i0.ɵɵelementEnd()();
10623
11200
  } if (rf & 2) {
10624
- const item_r2 = i0.ɵɵnextContext().$implicit;
10625
- i0.ɵɵclassProp("kpt-menu__item--danger", item_r2.danger);
10626
- i0.ɵɵproperty("disabled", item_r2.disabled);
11201
+ const item_r1 = i0.ɵɵnextContext().$implicit;
10627
11202
  i0.ɵɵadvance();
10628
- i0.ɵɵconditional(item_r2.icon ? 1 : -1);
10629
- i0.ɵɵadvance(2);
10630
- i0.ɵɵtextInterpolate(item_r2.label);
11203
+ i0.ɵɵconditional(item_r1.avatar ? 1 : item_r1.icon ? 2 : -1);
11204
+ i0.ɵɵadvance(3);
11205
+ i0.ɵɵconditional(item_r1.label ? 4 : -1);
11206
+ i0.ɵɵadvance();
11207
+ i0.ɵɵconditional(item_r1.description ? 5 : -1);
11208
+ } }
11209
+ function KptMenu_ng_template_3_For_2_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
11210
+ i0.ɵɵelement(0, "kpt-icon", 8);
11211
+ } if (rf & 2) {
11212
+ const item_r1 = i0.ɵɵnextContext(2).$implicit;
11213
+ i0.ɵɵproperty("name", item_r1.icon);
11214
+ } }
11215
+ function KptMenu_ng_template_3_For_2_Conditional_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
11216
+ i0.ɵɵelementStart(0, "span", 11);
11217
+ i0.ɵɵtext(1);
11218
+ i0.ɵɵelementEnd();
11219
+ } if (rf & 2) {
11220
+ const item_r1 = i0.ɵɵnextContext(2).$implicit;
11221
+ i0.ɵɵadvance();
11222
+ i0.ɵɵtextInterpolate(item_r1.description);
11223
+ } }
11224
+ function KptMenu_ng_template_3_For_2_Conditional_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
11225
+ i0.ɵɵelement(0, "kpt-badge", 13);
11226
+ } if (rf & 2) {
11227
+ const item_r1 = i0.ɵɵnextContext(2).$implicit;
11228
+ i0.ɵɵproperty("value", item_r1.badge)("variant", item_r1.badgeVariant ?? "primary");
11229
+ } }
11230
+ function KptMenu_ng_template_3_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
11231
+ const _r2 = i0.ɵɵgetCurrentView();
11232
+ i0.ɵɵelementStart(0, "button", 12);
11233
+ i0.ɵɵlistener("click", function KptMenu_ng_template_3_For_2_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r2); const item_r1 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.pick(item_r1)); });
11234
+ i0.ɵɵconditionalCreate(1, KptMenu_ng_template_3_For_2_Conditional_2_Conditional_1_Template, 1, 1, "kpt-icon", 8);
11235
+ i0.ɵɵelementStart(2, "span", 9)(3, "span", 10);
11236
+ i0.ɵɵtext(4);
11237
+ i0.ɵɵelementEnd();
11238
+ i0.ɵɵconditionalCreate(5, KptMenu_ng_template_3_For_2_Conditional_2_Conditional_5_Template, 2, 1, "span", 11);
11239
+ i0.ɵɵelementEnd();
11240
+ i0.ɵɵconditionalCreate(6, KptMenu_ng_template_3_For_2_Conditional_2_Conditional_6_Template, 1, 2, "kpt-badge", 13);
11241
+ i0.ɵɵelementEnd();
11242
+ } if (rf & 2) {
11243
+ const item_r1 = i0.ɵɵnextContext().$implicit;
11244
+ i0.ɵɵclassProp("kpt-menu__item--danger", item_r1.danger);
11245
+ i0.ɵɵproperty("disabled", item_r1.disabled);
11246
+ i0.ɵɵadvance();
11247
+ i0.ɵɵconditional(item_r1.icon ? 1 : -1);
11248
+ i0.ɵɵadvance(3);
11249
+ i0.ɵɵtextInterpolate(item_r1.label);
11250
+ i0.ɵɵadvance();
11251
+ i0.ɵɵconditional(item_r1.description ? 5 : -1);
11252
+ i0.ɵɵadvance();
11253
+ i0.ɵɵconditional(item_r1.badge !== undefined && item_r1.badge !== null ? 6 : -1);
10631
11254
  } }
10632
11255
  function KptMenu_ng_template_3_For_2_Template(rf, ctx) { if (rf & 1) {
10633
- i0.ɵɵconditionalCreate(0, KptMenu_ng_template_3_For_2_Conditional_0_Template, 1, 0, "div", 4)(1, KptMenu_ng_template_3_For_2_Conditional_1_Template, 4, 5, "button", 5);
11256
+ i0.ɵɵconditionalCreate(0, KptMenu_ng_template_3_For_2_Conditional_0_Template, 1, 0, "div", 4)(1, KptMenu_ng_template_3_For_2_Conditional_1_Template, 6, 3, "div", 5)(2, KptMenu_ng_template_3_For_2_Conditional_2_Template, 7, 7, "button", 6);
10634
11257
  } if (rf & 2) {
10635
- const item_r2 = ctx.$implicit;
10636
- i0.ɵɵconditional(item_r2.separator ? 0 : 1);
11258
+ const item_r1 = ctx.$implicit;
11259
+ i0.ɵɵconditional(item_r1.separator ? 0 : item_r1.header ? 1 : 2);
10637
11260
  } }
10638
11261
  function KptMenu_ng_template_3_Template(rf, ctx) { if (rf & 1) {
10639
11262
  i0.ɵɵelementStart(0, "div", 3);
10640
- i0.ɵɵrepeaterCreate(1, KptMenu_ng_template_3_For_2_Template, 2, 1, null, null, i0.ɵɵrepeaterTrackByIndex);
11263
+ i0.ɵɵrepeaterCreate(1, KptMenu_ng_template_3_For_2_Template, 3, 1, null, null, i0.ɵɵrepeaterTrackByIndex);
10641
11264
  i0.ɵɵelementEnd();
10642
11265
  } if (rf & 2) {
10643
11266
  const ctx_r2 = i0.ɵɵnextContext();
@@ -10679,7 +11302,7 @@ class KptMenu {
10679
11302
  this.close();
10680
11303
  }
10681
11304
  static { this.ɵfac = function KptMenu_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptMenu)(); }; }
10682
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptMenu, selectors: [["kpt-menu"]], hostAttrs: [1, "kpt-menu-host"], inputs: { items: [1, "items"] }, outputs: { select: "select" }, ngContentSelectors: _c0$5, decls: 4, vars: 4, consts: [["origin", "cdkOverlayOrigin"], ["cdkOverlayOrigin", "", 1, "kpt-menu__trigger", 3, "click"], ["cdkConnectedOverlay", "", "cdkConnectedOverlayBackdropClass", "cdk-overlay-transparent-backdrop", 3, "backdropClick", "detach", "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen", "cdkConnectedOverlayPositions", "cdkConnectedOverlayHasBackdrop"], ["role", "menu", 1, "kpt-menu__panel"], ["role", "separator", 1, "kpt-menu__separator"], ["type", "button", "role", "menuitem", 1, "kpt-menu__item", 3, "kpt-menu__item--danger", "disabled"], ["type", "button", "role", "menuitem", 1, "kpt-menu__item", 3, "click", "disabled"], [3, "name"]], template: function KptMenu_Template(rf, ctx) { if (rf & 1) {
11305
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptMenu, selectors: [["kpt-menu"]], hostAttrs: [1, "kpt-menu-host"], inputs: { items: [1, "items"] }, outputs: { select: "select" }, ngContentSelectors: _c0$5, decls: 4, vars: 4, consts: [["origin", "cdkOverlayOrigin"], ["cdkOverlayOrigin", "", 1, "kpt-menu__trigger", 3, "click"], ["cdkConnectedOverlay", "", "cdkConnectedOverlayBackdropClass", "cdk-overlay-transparent-backdrop", 3, "backdropClick", "detach", "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen", "cdkConnectedOverlayPositions", "cdkConnectedOverlayHasBackdrop"], ["role", "menu", 1, "kpt-menu__panel"], ["role", "separator", 1, "kpt-menu__separator"], ["role", "presentation", 1, "kpt-menu__header"], ["type", "button", "role", "menuitem", 1, "kpt-menu__item", 3, "kpt-menu__item--danger", "disabled"], ["size", "sm", 3, "src", "name", "icon"], [3, "name"], [1, "kpt-menu__text"], [1, "kpt-menu__label"], [1, "kpt-menu__description"], ["type", "button", "role", "menuitem", 1, "kpt-menu__item", 3, "click", "disabled"], [1, "kpt-menu__badge", 3, "value", "variant"]], template: function KptMenu_Template(rf, ctx) { if (rf & 1) {
10683
11306
  i0.ɵɵprojectionDef();
10684
11307
  i0.ɵɵelementStart(0, "span", 1, 0);
10685
11308
  i0.ɵɵlistener("click", function KptMenu_Template_span_click_0_listener() { return ctx.toggle(); });
@@ -10691,11 +11314,11 @@ class KptMenu {
10691
11314
  const origin_r4 = i0.ɵɵreference(1);
10692
11315
  i0.ɵɵadvance(3);
10693
11316
  i0.ɵɵproperty("cdkConnectedOverlayOrigin", origin_r4)("cdkConnectedOverlayOpen", ctx.open())("cdkConnectedOverlayPositions", ctx.positions)("cdkConnectedOverlayHasBackdrop", true);
10694
- } }, dependencies: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon], styles: ["@layer kpt.components{.kpt-menu-host{display:inline-flex}.kpt-menu__trigger{display:inline-flex;cursor:pointer}.kpt-menu__panel{min-width:11rem;padding:.25rem;background:var(--%NS%kpt-color-surface-raised);border:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-color-border);border-radius:var(--%NS%kpt-radius-md, .5rem);box-shadow:var(--%NS%kpt-elevation-3)}.kpt-menu__item{display:flex;align-items:center;gap:var(--%NS%kpt-space-2, .5rem);width:100%;padding:.5rem .6rem;border:0;border-radius:var(--%NS%kpt-radius-sm, .25rem);background:none;color:var(--%NS%kpt-color-on-surface);font:inherit;font-size:var(--%NS%kpt-font-size-sm, .875rem);text-align:start;cursor:pointer}.kpt-menu__item:hover:not(:disabled){background:var(--%NS%kpt-color-surface-variant)}.kpt-menu__item:disabled{opacity:.45;cursor:not-allowed}.kpt-menu__item--danger{color:var(--%NS%kpt-color-danger)}.kpt-menu__item kpt-icon{color:var(--%NS%kpt-color-on-surface-muted)}.kpt-menu__item--danger kpt-icon{color:var(--%NS%kpt-color-danger)}.kpt-menu__separator{height:1px;margin:.25rem 0;background:var(--%NS%kpt-color-border)}}\n"], encapsulation: 2 }); }
11317
+ } }, dependencies: [CdkOverlayOrigin, CdkConnectedOverlay, KptAvatar, KptBadge, KptIcon], styles: ["@charset \"UTF-8\";@layer kpt.components{.kpt-menu-host{display:inline-flex}.kpt-menu__trigger{display:inline-flex;cursor:pointer}.kpt-menu__panel{min-width:11rem;padding:.25rem;background:var(--%NS%kpt-color-surface-raised);border:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-color-border);border-radius:var(--%NS%kpt-radius-md, .5rem);box-shadow:var(--%NS%kpt-elevation-3)}.kpt-menu__item{display:flex;align-items:center;gap:var(--%NS%kpt-space-2, .5rem);width:100%;padding:.5rem .6rem;border:0;border-radius:var(--%NS%kpt-radius-sm, .25rem);background:none;color:var(--%NS%kpt-color-on-surface);font:inherit;font-size:var(--%NS%kpt-font-size-sm, .875rem);text-align:start;cursor:pointer}.kpt-menu__item:hover:not(:disabled){background:var(--%NS%kpt-color-surface-variant)}.kpt-menu__item:disabled{opacity:.45;cursor:not-allowed}.kpt-menu__item--danger{color:var(--%NS%kpt-color-danger)}.kpt-menu__item kpt-icon{color:var(--%NS%kpt-color-on-surface-muted)}.kpt-menu__item--danger kpt-icon{color:var(--%NS%kpt-color-danger)}.kpt-menu__header{display:flex;align-items:center;gap:var(--%NS%kpt-space-2, .5rem);padding:.5rem .6rem;font-size:var(--%NS%kpt-font-size-sm, .875rem);cursor:default}.kpt-menu__header .kpt-menu__label{font-weight:var(--%NS%kpt-font-weight-semibold, 600)}.kpt-menu__header kpt-icon{color:var(--%NS%kpt-color-on-surface-muted)}.kpt-menu__text{display:flex;flex-direction:column;min-width:0}.kpt-menu__label,.kpt-menu__description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpt-menu__description{color:var(--%NS%kpt-color-on-surface-muted);font-size:var(--%NS%kpt-font-size-xs, .75rem)}.kpt-menu__badge{margin-inline-start:auto}.kpt-menu__separator{height:1px;margin:.25rem 0;background:var(--%NS%kpt-color-border)}}\n"], encapsulation: 2 }); }
10695
11318
  }
10696
11319
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptMenu, [{
10697
11320
  type: Component,
10698
- args: [{ selector: 'kpt-menu', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [CdkOverlayOrigin, CdkConnectedOverlay, KptIcon], template: `
11321
+ args: [{ selector: 'kpt-menu', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [CdkOverlayOrigin, CdkConnectedOverlay, KptAvatar, KptBadge, KptIcon], template: `
10699
11322
  <span class="kpt-menu__trigger" cdkOverlayOrigin #origin="cdkOverlayOrigin" (click)="toggle()">
10700
11323
  <ng-content />
10701
11324
  </span>
@@ -10714,6 +11337,23 @@ class KptMenu {
10714
11337
  @for (item of items(); track $index) {
10715
11338
  @if (item.separator) {
10716
11339
  <div class="kpt-menu__separator" role="separator"></div>
11340
+ } @else if (item.header) {
11341
+ <div class="kpt-menu__header" role="presentation">
11342
+ @if (item.avatar) {
11343
+ <kpt-avatar
11344
+ [src]="item.avatar.src ?? null"
11345
+ [name]="item.avatar.name ?? ''"
11346
+ [icon]="item.avatar.icon ?? null"
11347
+ size="sm"
11348
+ />
11349
+ } @else if (item.icon) {
11350
+ <kpt-icon [name]="item.icon" />
11351
+ }
11352
+ <span class="kpt-menu__text">
11353
+ @if (item.label) { <span class="kpt-menu__label">{{ item.label }}</span> }
11354
+ @if (item.description) { <span class="kpt-menu__description">{{ item.description }}</span> }
11355
+ </span>
11356
+ </div>
10717
11357
  } @else {
10718
11358
  <button
10719
11359
  type="button"
@@ -10724,15 +11364,21 @@ class KptMenu {
10724
11364
  (click)="pick(item)"
10725
11365
  >
10726
11366
  @if (item.icon) { <kpt-icon [name]="item.icon" /> }
10727
- <span>{{ item.label }}</span>
11367
+ <span class="kpt-menu__text">
11368
+ <span class="kpt-menu__label">{{ item.label }}</span>
11369
+ @if (item.description) { <span class="kpt-menu__description">{{ item.description }}</span> }
11370
+ </span>
11371
+ @if (item.badge !== undefined && item.badge !== null) {
11372
+ <kpt-badge class="kpt-menu__badge" [value]="item.badge" [variant]="item.badgeVariant ?? 'primary'" />
11373
+ }
10728
11374
  </button>
10729
11375
  }
10730
11376
  }
10731
11377
  </div>
10732
11378
  </ng-template>
10733
- `, host: { class: 'kpt-menu-host' }, styles: ["@layer kpt.components{.kpt-menu-host{display:inline-flex}.kpt-menu__trigger{display:inline-flex;cursor:pointer}.kpt-menu__panel{min-width:11rem;padding:.25rem;background:var(--kpt-color-surface-raised);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-md, .5rem);box-shadow:var(--kpt-elevation-3)}.kpt-menu__item{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);width:100%;padding:.5rem .6rem;border:0;border-radius:var(--kpt-radius-sm, .25rem);background:none;color:var(--kpt-color-on-surface);font:inherit;font-size:var(--kpt-font-size-sm, .875rem);text-align:start;cursor:pointer}.kpt-menu__item:hover:not(:disabled){background:var(--kpt-color-surface-variant)}.kpt-menu__item:disabled{opacity:.45;cursor:not-allowed}.kpt-menu__item--danger{color:var(--kpt-color-danger)}.kpt-menu__item kpt-icon{color:var(--kpt-color-on-surface-muted)}.kpt-menu__item--danger kpt-icon{color:var(--kpt-color-danger)}.kpt-menu__separator{height:1px;margin:.25rem 0;background:var(--kpt-color-border)}}\n"] }]
11379
+ `, host: { class: 'kpt-menu-host' }, styles: ["@charset \"UTF-8\";@layer kpt.components{.kpt-menu-host{display:inline-flex}.kpt-menu__trigger{display:inline-flex;cursor:pointer}.kpt-menu__panel{min-width:11rem;padding:.25rem;background:var(--kpt-color-surface-raised);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-md, .5rem);box-shadow:var(--kpt-elevation-3)}.kpt-menu__item{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);width:100%;padding:.5rem .6rem;border:0;border-radius:var(--kpt-radius-sm, .25rem);background:none;color:var(--kpt-color-on-surface);font:inherit;font-size:var(--kpt-font-size-sm, .875rem);text-align:start;cursor:pointer}.kpt-menu__item:hover:not(:disabled){background:var(--kpt-color-surface-variant)}.kpt-menu__item:disabled{opacity:.45;cursor:not-allowed}.kpt-menu__item--danger{color:var(--kpt-color-danger)}.kpt-menu__item kpt-icon{color:var(--kpt-color-on-surface-muted)}.kpt-menu__item--danger kpt-icon{color:var(--kpt-color-danger)}.kpt-menu__header{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);padding:.5rem .6rem;font-size:var(--kpt-font-size-sm, .875rem);cursor:default}.kpt-menu__header .kpt-menu__label{font-weight:var(--kpt-font-weight-semibold, 600)}.kpt-menu__header kpt-icon{color:var(--kpt-color-on-surface-muted)}.kpt-menu__text{display:flex;flex-direction:column;min-width:0}.kpt-menu__label,.kpt-menu__description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpt-menu__description{color:var(--kpt-color-on-surface-muted);font-size:var(--kpt-font-size-xs, .75rem)}.kpt-menu__badge{margin-inline-start:auto}.kpt-menu__separator{height:1px;margin:.25rem 0;background:var(--kpt-color-border)}}\n"] }]
10734
11380
  }], null, { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], select: [{ type: i0.Output, args: ["select"] }] }); })();
10735
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptMenu, { className: "KptMenu", filePath: "lib/menu/menu.component.ts", lineNumber: 71 }); })();
11381
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptMenu, { className: "KptMenu", filePath: "lib/menu/menu.component.ts", lineNumber: 116 }); })();
10736
11382
 
10737
11383
  const _c0$4 = [[["", "kptPopoverTrigger", ""]], "*"];
10738
11384
  const _c1 = ["[kptPopoverTrigger]", "*"];
@@ -11034,7 +11680,7 @@ class KptDrawer {
11034
11680
  i0.ɵɵattribute("data-position", ctx.position());
11035
11681
  i0.ɵɵadvance();
11036
11682
  i0.ɵɵconditional(ctx.header() || ctx.dismissible() ? 2 : -1);
11037
- } }, dependencies: [KptIcon], styles: ["@layer kpt.components{.kpt-drawer-host{display:contents}.kpt-drawer__backdrop{position:fixed;inset:0;z-index:var(--%NS%kpt-z-overlay, 1000);background:color-mix(in oklch,black 45%,transparent);opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}.kpt-drawer__backdrop.is-open{opacity:1;visibility:visible}.kpt-drawer__panel{position:fixed;z-index:calc(var(--%NS%kpt-z-overlay, 1000) + 1);display:flex;flex-direction:column;background:var(--%NS%kpt-color-surface-raised);color:var(--%NS%kpt-color-on-surface);box-shadow:var(--%NS%kpt-elevation-4);transition:transform .25s ease;outline:none}.kpt-drawer__panel[data-position=left]{inset:0 auto 0 0;width:min(20rem,90vw);transform:translate(-100%)}.kpt-drawer__panel[data-position=right]{inset:0 0 0 auto;width:min(20rem,90vw);transform:translate(100%)}.kpt-drawer__panel[data-position=top]{inset:0 0 auto;height:min(16rem,80vh);transform:translateY(-100%)}.kpt-drawer__panel[data-position=bottom]{inset:auto 0 0;height:min(16rem,80vh);transform:translateY(100%)}.kpt-drawer__panel.is-open{transform:none}.kpt-drawer__header{display:flex;align-items:center;justify-content:space-between;padding:var(--%NS%kpt-space-3, .75rem) var(--%NS%kpt-space-4, 1rem);border-bottom:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-color-border)}.kpt-drawer__title{font-weight:var(--%NS%kpt-font-weight-semibold, 600)}.kpt-drawer__close{display:inline-flex;border:0;background:none;padding:0;cursor:pointer;color:var(--%NS%kpt-color-on-surface-muted)}.kpt-drawer__close:hover{color:var(--%NS%kpt-color-on-surface)}.kpt-drawer__body{flex:1;overflow:auto;padding:var(--%NS%kpt-space-4, 1rem)}}\n"], encapsulation: 2 }); }
11683
+ } }, dependencies: [KptIcon], styles: ["@layer kpt.components{.kpt-drawer-host{display:contents}.kpt-drawer__backdrop{position:fixed;inset:0;z-index:var(--%NS%kpt-z-overlay, 1100);background:color-mix(in oklch,black 45%,transparent);opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}.kpt-drawer__backdrop.is-open{opacity:1;visibility:visible}.kpt-drawer__panel{position:fixed;z-index:calc(var(--%NS%kpt-z-overlay, 1100) + 1);display:flex;flex-direction:column;background:var(--%NS%kpt-color-surface-raised);color:var(--%NS%kpt-color-on-surface);box-shadow:var(--%NS%kpt-elevation-4);outline:none;inset:0 auto 0 0;width:min(20rem,90vw);transform:translate(-100%);visibility:hidden;--%NS%_kpt-drawer-vis-delay: .25s;transition:transform .25s ease,visibility 0s linear var(--%NS%_kpt-drawer-vis-delay, 0s)}.kpt-drawer__panel[data-position=right]{inset:0 0 0 auto;width:min(20rem,90vw);transform:translate(100%)}.kpt-drawer__panel[data-position=top]{inset:0 0 auto;width:auto;height:min(16rem,80vh);transform:translateY(-100%)}.kpt-drawer__panel[data-position=bottom]{inset:auto 0 0;width:auto;height:min(16rem,80vh);transform:translateY(100%)}.kpt-drawer__panel.is-open{transform:none;visibility:visible;--%NS%_kpt-drawer-vis-delay: 0s}.kpt-drawer__header{display:flex;align-items:center;justify-content:space-between;padding:var(--%NS%kpt-space-3, .75rem) var(--%NS%kpt-space-4, 1rem);border-bottom:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-color-border)}.kpt-drawer__title{font-weight:var(--%NS%kpt-font-weight-semibold, 600)}.kpt-drawer__close{display:inline-flex;border:0;background:none;padding:0;cursor:pointer;color:var(--%NS%kpt-color-on-surface-muted)}.kpt-drawer__close:hover{color:var(--%NS%kpt-color-on-surface)}.kpt-drawer__body{flex:1;overflow:auto;padding:var(--%NS%kpt-space-4, 1rem)}@media(prefers-reduced-motion:reduce){.kpt-drawer__backdrop,.kpt-drawer__panel{transition:none}}}\n"], encapsulation: 2 }); }
11038
11684
  }
11039
11685
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptDrawer, [{
11040
11686
  type: Component,
@@ -11059,7 +11705,7 @@ class KptDrawer {
11059
11705
  }
11060
11706
  <div class="kpt-drawer__body"><ng-content /></div>
11061
11707
  </aside>
11062
- `, host: { class: 'kpt-drawer-host' }, styles: ["@layer kpt.components{.kpt-drawer-host{display:contents}.kpt-drawer__backdrop{position:fixed;inset:0;z-index:var(--kpt-z-overlay, 1000);background:color-mix(in oklch,black 45%,transparent);opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}.kpt-drawer__backdrop.is-open{opacity:1;visibility:visible}.kpt-drawer__panel{position:fixed;z-index:calc(var(--kpt-z-overlay, 1000) + 1);display:flex;flex-direction:column;background:var(--kpt-color-surface-raised);color:var(--kpt-color-on-surface);box-shadow:var(--kpt-elevation-4);transition:transform .25s ease;outline:none}.kpt-drawer__panel[data-position=left]{inset:0 auto 0 0;width:min(20rem,90vw);transform:translate(-100%)}.kpt-drawer__panel[data-position=right]{inset:0 0 0 auto;width:min(20rem,90vw);transform:translate(100%)}.kpt-drawer__panel[data-position=top]{inset:0 0 auto;height:min(16rem,80vh);transform:translateY(-100%)}.kpt-drawer__panel[data-position=bottom]{inset:auto 0 0;height:min(16rem,80vh);transform:translateY(100%)}.kpt-drawer__panel.is-open{transform:none}.kpt-drawer__header{display:flex;align-items:center;justify-content:space-between;padding:var(--kpt-space-3, .75rem) var(--kpt-space-4, 1rem);border-bottom:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border)}.kpt-drawer__title{font-weight:var(--kpt-font-weight-semibold, 600)}.kpt-drawer__close{display:inline-flex;border:0;background:none;padding:0;cursor:pointer;color:var(--kpt-color-on-surface-muted)}.kpt-drawer__close:hover{color:var(--kpt-color-on-surface)}.kpt-drawer__body{flex:1;overflow:auto;padding:var(--kpt-space-4, 1rem)}}\n"] }]
11708
+ `, host: { class: 'kpt-drawer-host' }, styles: ["@layer kpt.components{.kpt-drawer-host{display:contents}.kpt-drawer__backdrop{position:fixed;inset:0;z-index:var(--kpt-z-overlay, 1100);background:color-mix(in oklch,black 45%,transparent);opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}.kpt-drawer__backdrop.is-open{opacity:1;visibility:visible}.kpt-drawer__panel{position:fixed;z-index:calc(var(--kpt-z-overlay, 1100) + 1);display:flex;flex-direction:column;background:var(--kpt-color-surface-raised);color:var(--kpt-color-on-surface);box-shadow:var(--kpt-elevation-4);outline:none;inset:0 auto 0 0;width:min(20rem,90vw);transform:translate(-100%);visibility:hidden;--_kpt-drawer-vis-delay: .25s;transition:transform .25s ease,visibility 0s linear var(--_kpt-drawer-vis-delay, 0s)}.kpt-drawer__panel[data-position=right]{inset:0 0 0 auto;width:min(20rem,90vw);transform:translate(100%)}.kpt-drawer__panel[data-position=top]{inset:0 0 auto;width:auto;height:min(16rem,80vh);transform:translateY(-100%)}.kpt-drawer__panel[data-position=bottom]{inset:auto 0 0;width:auto;height:min(16rem,80vh);transform:translateY(100%)}.kpt-drawer__panel.is-open{transform:none;visibility:visible;--_kpt-drawer-vis-delay: 0s}.kpt-drawer__header{display:flex;align-items:center;justify-content:space-between;padding:var(--kpt-space-3, .75rem) var(--kpt-space-4, 1rem);border-bottom:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border)}.kpt-drawer__title{font-weight:var(--kpt-font-weight-semibold, 600)}.kpt-drawer__close{display:inline-flex;border:0;background:none;padding:0;cursor:pointer;color:var(--kpt-color-on-surface-muted)}.kpt-drawer__close:hover{color:var(--kpt-color-on-surface)}.kpt-drawer__body{flex:1;overflow:auto;padding:var(--kpt-space-4, 1rem)}@media(prefers-reduced-motion:reduce){.kpt-drawer__backdrop,.kpt-drawer__panel{transition:none}}}\n"] }]
11063
11709
  }], null, { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: false }] }], dismissible: [{ type: i0.Input, args: [{ isSignal: true, alias: "dismissible", required: false }] }], closeOnBackdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnBackdrop", required: false }] }] }); })();
11064
11710
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptDrawer, { className: "KptDrawer", filePath: "lib/drawer/drawer.component.ts", lineNumber: 45 }); })();
11065
11711
 
@@ -11068,33 +11714,102 @@ function KptContextMenu_Conditional_2_For_3_Conditional_0_Template(rf, ctx) { if
11068
11714
  i0.ɵɵelement(0, "div", 3);
11069
11715
  } }
11070
11716
  function KptContextMenu_Conditional_2_For_3_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
11071
- i0.ɵɵelement(0, "kpt-icon", 6);
11717
+ i0.ɵɵelement(0, "kpt-avatar", 6);
11072
11718
  } if (rf & 2) {
11073
- const item_r4 = i0.ɵɵnextContext(2).$implicit;
11074
- i0.ɵɵproperty("name", item_r4.icon);
11719
+ const item_r3 = i0.ɵɵnextContext(2).$implicit;
11720
+ i0.ɵɵproperty("src", item_r3.avatar.src ?? null)("name", item_r3.avatar.name ?? "")("icon", item_r3.avatar.icon ?? null);
11721
+ } }
11722
+ function KptContextMenu_Conditional_2_For_3_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
11723
+ i0.ɵɵelement(0, "kpt-icon", 7);
11724
+ } if (rf & 2) {
11725
+ const item_r3 = i0.ɵɵnextContext(2).$implicit;
11726
+ i0.ɵɵproperty("name", item_r3.icon);
11727
+ } }
11728
+ function KptContextMenu_Conditional_2_For_3_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
11729
+ i0.ɵɵelementStart(0, "span", 9);
11730
+ i0.ɵɵtext(1);
11731
+ i0.ɵɵelementEnd();
11732
+ } if (rf & 2) {
11733
+ const item_r3 = i0.ɵɵnextContext(2).$implicit;
11734
+ i0.ɵɵadvance();
11735
+ i0.ɵɵtextInterpolate(item_r3.label);
11736
+ } }
11737
+ function KptContextMenu_Conditional_2_For_3_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
11738
+ i0.ɵɵelementStart(0, "span", 10);
11739
+ i0.ɵɵtext(1);
11740
+ i0.ɵɵelementEnd();
11741
+ } if (rf & 2) {
11742
+ const item_r3 = i0.ɵɵnextContext(2).$implicit;
11743
+ i0.ɵɵadvance();
11744
+ i0.ɵɵtextInterpolate(item_r3.description);
11075
11745
  } }
11076
11746
  function KptContextMenu_Conditional_2_For_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
11077
- const _r3 = i0.ɵɵgetCurrentView();
11078
- i0.ɵɵelementStart(0, "button", 5);
11079
- i0.ɵɵlistener("click", function KptContextMenu_Conditional_2_For_3_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const item_r4 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.pick(item_r4)); });
11080
- i0.ɵɵconditionalCreate(1, KptContextMenu_Conditional_2_For_3_Conditional_1_Conditional_1_Template, 1, 1, "kpt-icon", 6);
11081
- i0.ɵɵelementStart(2, "span");
11082
- i0.ɵɵtext(3);
11747
+ i0.ɵɵelementStart(0, "div", 4);
11748
+ i0.ɵɵconditionalCreate(1, KptContextMenu_Conditional_2_For_3_Conditional_1_Conditional_1_Template, 1, 3, "kpt-avatar", 6)(2, KptContextMenu_Conditional_2_For_3_Conditional_1_Conditional_2_Template, 1, 1, "kpt-icon", 7);
11749
+ i0.ɵɵelementStart(3, "span", 8);
11750
+ i0.ɵɵconditionalCreate(4, KptContextMenu_Conditional_2_For_3_Conditional_1_Conditional_4_Template, 2, 1, "span", 9);
11751
+ i0.ɵɵconditionalCreate(5, KptContextMenu_Conditional_2_For_3_Conditional_1_Conditional_5_Template, 2, 1, "span", 10);
11083
11752
  i0.ɵɵelementEnd()();
11084
11753
  } if (rf & 2) {
11085
- const item_r4 = i0.ɵɵnextContext().$implicit;
11086
- i0.ɵɵclassProp("kpt-context-menu__item--danger", item_r4.danger);
11087
- i0.ɵɵproperty("disabled", item_r4.disabled);
11754
+ const item_r3 = i0.ɵɵnextContext().$implicit;
11088
11755
  i0.ɵɵadvance();
11089
- i0.ɵɵconditional(item_r4.icon ? 1 : -1);
11090
- i0.ɵɵadvance(2);
11091
- i0.ɵɵtextInterpolate(item_r4.label);
11756
+ i0.ɵɵconditional(item_r3.avatar ? 1 : item_r3.icon ? 2 : -1);
11757
+ i0.ɵɵadvance(3);
11758
+ i0.ɵɵconditional(item_r3.label ? 4 : -1);
11759
+ i0.ɵɵadvance();
11760
+ i0.ɵɵconditional(item_r3.description ? 5 : -1);
11761
+ } }
11762
+ function KptContextMenu_Conditional_2_For_3_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
11763
+ i0.ɵɵelement(0, "kpt-icon", 7);
11764
+ } if (rf & 2) {
11765
+ const item_r3 = i0.ɵɵnextContext(2).$implicit;
11766
+ i0.ɵɵproperty("name", item_r3.icon);
11767
+ } }
11768
+ function KptContextMenu_Conditional_2_For_3_Conditional_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
11769
+ i0.ɵɵelementStart(0, "span", 10);
11770
+ i0.ɵɵtext(1);
11771
+ i0.ɵɵelementEnd();
11772
+ } if (rf & 2) {
11773
+ const item_r3 = i0.ɵɵnextContext(2).$implicit;
11774
+ i0.ɵɵadvance();
11775
+ i0.ɵɵtextInterpolate(item_r3.description);
11776
+ } }
11777
+ function KptContextMenu_Conditional_2_For_3_Conditional_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
11778
+ i0.ɵɵelement(0, "kpt-badge", 12);
11779
+ } if (rf & 2) {
11780
+ const item_r3 = i0.ɵɵnextContext(2).$implicit;
11781
+ i0.ɵɵproperty("value", item_r3.badge)("variant", item_r3.badgeVariant ?? "primary");
11782
+ } }
11783
+ function KptContextMenu_Conditional_2_For_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
11784
+ const _r4 = i0.ɵɵgetCurrentView();
11785
+ i0.ɵɵelementStart(0, "button", 11);
11786
+ i0.ɵɵlistener("click", function KptContextMenu_Conditional_2_For_3_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const item_r3 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.pick(item_r3)); });
11787
+ i0.ɵɵconditionalCreate(1, KptContextMenu_Conditional_2_For_3_Conditional_2_Conditional_1_Template, 1, 1, "kpt-icon", 7);
11788
+ i0.ɵɵelementStart(2, "span", 8)(3, "span", 9);
11789
+ i0.ɵɵtext(4);
11790
+ i0.ɵɵelementEnd();
11791
+ i0.ɵɵconditionalCreate(5, KptContextMenu_Conditional_2_For_3_Conditional_2_Conditional_5_Template, 2, 1, "span", 10);
11792
+ i0.ɵɵelementEnd();
11793
+ i0.ɵɵconditionalCreate(6, KptContextMenu_Conditional_2_For_3_Conditional_2_Conditional_6_Template, 1, 2, "kpt-badge", 12);
11794
+ i0.ɵɵelementEnd();
11795
+ } if (rf & 2) {
11796
+ const item_r3 = i0.ɵɵnextContext().$implicit;
11797
+ i0.ɵɵclassProp("kpt-context-menu__item--danger", item_r3.danger);
11798
+ i0.ɵɵproperty("disabled", item_r3.disabled);
11799
+ i0.ɵɵadvance();
11800
+ i0.ɵɵconditional(item_r3.icon ? 1 : -1);
11801
+ i0.ɵɵadvance(3);
11802
+ i0.ɵɵtextInterpolate(item_r3.label);
11803
+ i0.ɵɵadvance();
11804
+ i0.ɵɵconditional(item_r3.description ? 5 : -1);
11805
+ i0.ɵɵadvance();
11806
+ i0.ɵɵconditional(item_r3.badge !== undefined && item_r3.badge !== null ? 6 : -1);
11092
11807
  } }
11093
11808
  function KptContextMenu_Conditional_2_For_3_Template(rf, ctx) { if (rf & 1) {
11094
- i0.ɵɵconditionalCreate(0, KptContextMenu_Conditional_2_For_3_Conditional_0_Template, 1, 0, "div", 3)(1, KptContextMenu_Conditional_2_For_3_Conditional_1_Template, 4, 5, "button", 4);
11809
+ i0.ɵɵconditionalCreate(0, KptContextMenu_Conditional_2_For_3_Conditional_0_Template, 1, 0, "div", 3)(1, KptContextMenu_Conditional_2_For_3_Conditional_1_Template, 6, 3, "div", 4)(2, KptContextMenu_Conditional_2_For_3_Conditional_2_Template, 7, 7, "button", 5);
11095
11810
  } if (rf & 2) {
11096
- const item_r4 = ctx.$implicit;
11097
- i0.ɵɵconditional(item_r4.separator ? 0 : 1);
11811
+ const item_r3 = ctx.$implicit;
11812
+ i0.ɵɵconditional(item_r3.separator ? 0 : item_r3.header ? 1 : 2);
11098
11813
  } }
11099
11814
  function KptContextMenu_Conditional_2_Template(rf, ctx) { if (rf & 1) {
11100
11815
  const _r1 = i0.ɵɵgetCurrentView();
@@ -11102,7 +11817,7 @@ function KptContextMenu_Conditional_2_Template(rf, ctx) { if (rf & 1) {
11102
11817
  i0.ɵɵlistener("click", function KptContextMenu_Conditional_2_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); })("contextmenu", function KptContextMenu_Conditional_2_Template_div_contextmenu_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); $event.preventDefault(); return i0.ɵɵresetView(ctx_r1.close()); });
11103
11818
  i0.ɵɵelementEnd();
11104
11819
  i0.ɵɵelementStart(1, "div", 2);
11105
- i0.ɵɵrepeaterCreate(2, KptContextMenu_Conditional_2_For_3_Template, 2, 1, null, null, i0.ɵɵrepeaterTrackByIndex);
11820
+ i0.ɵɵrepeaterCreate(2, KptContextMenu_Conditional_2_For_3_Template, 3, 1, null, null, i0.ɵɵrepeaterTrackByIndex);
11106
11821
  i0.ɵɵelementEnd();
11107
11822
  } if (rf & 2) {
11108
11823
  const ctx_r1 = i0.ɵɵnextContext();
@@ -11147,7 +11862,7 @@ class KptContextMenu {
11147
11862
  this.close();
11148
11863
  }
11149
11864
  static { this.ɵfac = function KptContextMenu_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptContextMenu)(); }; }
11150
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptContextMenu, selectors: [["kpt-context-menu"]], hostAttrs: [1, "kpt-context-menu-host"], inputs: { items: [1, "items"] }, outputs: { select: "select" }, ngContentSelectors: _c0$2, decls: 3, vars: 1, consts: [[1, "kpt-context-menu__area", 3, "contextmenu"], [1, "kpt-context-menu__backdrop", 3, "click", "contextmenu"], ["role", "menu", 1, "kpt-context-menu__panel"], ["role", "separator", 1, "kpt-context-menu__separator"], ["type", "button", "role", "menuitem", 1, "kpt-context-menu__item", 3, "kpt-context-menu__item--danger", "disabled"], ["type", "button", "role", "menuitem", 1, "kpt-context-menu__item", 3, "click", "disabled"], [3, "name"]], template: function KptContextMenu_Template(rf, ctx) { if (rf & 1) {
11865
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptContextMenu, selectors: [["kpt-context-menu"]], hostAttrs: [1, "kpt-context-menu-host"], inputs: { items: [1, "items"] }, outputs: { select: "select" }, ngContentSelectors: _c0$2, decls: 3, vars: 1, consts: [[1, "kpt-context-menu__area", 3, "contextmenu"], [1, "kpt-context-menu__backdrop", 3, "click", "contextmenu"], ["role", "menu", 1, "kpt-context-menu__panel"], ["role", "separator", 1, "kpt-context-menu__separator"], ["role", "presentation", 1, "kpt-context-menu__header"], ["type", "button", "role", "menuitem", 1, "kpt-context-menu__item", 3, "kpt-context-menu__item--danger", "disabled"], ["size", "sm", 3, "src", "name", "icon"], [3, "name"], [1, "kpt-context-menu__text"], [1, "kpt-context-menu__label"], [1, "kpt-context-menu__description"], ["type", "button", "role", "menuitem", 1, "kpt-context-menu__item", 3, "click", "disabled"], [1, "kpt-context-menu__badge", 3, "value", "variant"]], template: function KptContextMenu_Template(rf, ctx) { if (rf & 1) {
11151
11866
  i0.ɵɵprojectionDef();
11152
11867
  i0.ɵɵelementStart(0, "div", 0);
11153
11868
  i0.ɵɵlistener("contextmenu", function KptContextMenu_Template_div_contextmenu_0_listener($event) { return ctx.onContext($event); });
@@ -11157,11 +11872,11 @@ class KptContextMenu {
11157
11872
  } if (rf & 2) {
11158
11873
  i0.ɵɵadvance(2);
11159
11874
  i0.ɵɵconditional(ctx.open() ? 2 : -1);
11160
- } }, dependencies: [KptIcon], styles: ["@layer kpt.components{.kpt-context-menu-host{display:block}.kpt-context-menu__area{display:contents}.kpt-context-menu__backdrop{position:fixed;inset:0;z-index:var(--%NS%kpt-z-overlay, 1000)}.kpt-context-menu__panel{position:fixed;z-index:calc(var(--%NS%kpt-z-overlay, 1000) + 1);min-width:11rem;padding:var(--%NS%kpt-space-1, .25rem);background:var(--%NS%kpt-color-surface-raised);border:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-color-border);border-radius:var(--%NS%kpt-radius-md, .5rem);box-shadow:var(--%NS%kpt-elevation-3)}.kpt-context-menu__item{display:flex;align-items:center;gap:var(--%NS%kpt-space-2, .5rem);width:100%;padding:var(--%NS%kpt-space-2, .5rem) var(--%NS%kpt-space-3, .75rem);border:0;border-radius:var(--%NS%kpt-radius-sm, .25rem);background:none;color:var(--%NS%kpt-color-on-surface);font-size:var(--%NS%kpt-font-size-sm, .875rem);text-align:left;cursor:pointer}.kpt-context-menu__item:hover:not(:disabled){background:var(--%NS%kpt-color-muted)}.kpt-context-menu__item:disabled{opacity:.5;cursor:not-allowed}.kpt-context-menu__item--danger{color:var(--%NS%kpt-color-danger)}.kpt-context-menu__separator{height:1px;margin:var(--%NS%kpt-space-1, .25rem) 0;background:var(--%NS%kpt-color-border)}}\n"], encapsulation: 2 }); }
11875
+ } }, dependencies: [KptAvatar, KptBadge, KptIcon], styles: ["@charset \"UTF-8\";@layer kpt.components{.kpt-context-menu-host{display:block}.kpt-context-menu__area{display:contents}.kpt-context-menu__backdrop{position:fixed;inset:0;z-index:var(--%NS%kpt-z-overlay, 1000)}.kpt-context-menu__panel{position:fixed;z-index:calc(var(--%NS%kpt-z-overlay, 1000) + 1);min-width:11rem;padding:var(--%NS%kpt-space-1, .25rem);background:var(--%NS%kpt-color-surface-raised);border:var(--%NS%kpt-border-width-thin, 1px) solid var(--%NS%kpt-color-border);border-radius:var(--%NS%kpt-radius-md, .5rem);box-shadow:var(--%NS%kpt-elevation-3)}.kpt-context-menu__item{display:flex;align-items:center;gap:var(--%NS%kpt-space-2, .5rem);width:100%;padding:var(--%NS%kpt-space-2, .5rem) var(--%NS%kpt-space-3, .75rem);border:0;border-radius:var(--%NS%kpt-radius-sm, .25rem);background:none;color:var(--%NS%kpt-color-on-surface);font-size:var(--%NS%kpt-font-size-sm, .875rem);text-align:left;cursor:pointer}.kpt-context-menu__item:hover:not(:disabled){background:var(--%NS%kpt-color-muted)}.kpt-context-menu__item:disabled{opacity:.5;cursor:not-allowed}.kpt-context-menu__item--danger{color:var(--%NS%kpt-color-danger)}.kpt-context-menu__header{display:flex;align-items:center;gap:var(--%NS%kpt-space-2, .5rem);padding:var(--%NS%kpt-space-2, .5rem) var(--%NS%kpt-space-3, .75rem);font-size:var(--%NS%kpt-font-size-sm, .875rem);cursor:default}.kpt-context-menu__header .kpt-context-menu__label{font-weight:var(--%NS%kpt-font-weight-semibold, 600)}.kpt-context-menu__header kpt-icon{color:var(--%NS%kpt-color-on-surface-muted)}.kpt-context-menu__text{display:flex;flex-direction:column;min-width:0}.kpt-context-menu__label,.kpt-context-menu__description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpt-context-menu__description{color:var(--%NS%kpt-color-on-surface-muted);font-size:var(--%NS%kpt-font-size-xs, .75rem)}.kpt-context-menu__badge{margin-inline-start:auto}.kpt-context-menu__separator{height:1px;margin:var(--%NS%kpt-space-1, .25rem) 0;background:var(--%NS%kpt-color-border)}}\n"], encapsulation: 2 }); }
11161
11876
  }
11162
11877
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptContextMenu, [{
11163
11878
  type: Component,
11164
- args: [{ selector: 'kpt-context-menu', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [KptIcon], template: `
11879
+ args: [{ selector: 'kpt-context-menu', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [KptAvatar, KptBadge, KptIcon], template: `
11165
11880
  <div class="kpt-context-menu__area" (contextmenu)="onContext($event)">
11166
11881
  <ng-content />
11167
11882
  </div>
@@ -11172,6 +11887,25 @@ class KptContextMenu {
11172
11887
  @for (item of items(); track $index) {
11173
11888
  @if (item.separator) {
11174
11889
  <div class="kpt-context-menu__separator" role="separator"></div>
11890
+ } @else if (item.header) {
11891
+ <div class="kpt-context-menu__header" role="presentation">
11892
+ @if (item.avatar) {
11893
+ <kpt-avatar
11894
+ [src]="item.avatar.src ?? null"
11895
+ [name]="item.avatar.name ?? ''"
11896
+ [icon]="item.avatar.icon ?? null"
11897
+ size="sm"
11898
+ />
11899
+ } @else if (item.icon) {
11900
+ <kpt-icon [name]="item.icon" />
11901
+ }
11902
+ <span class="kpt-context-menu__text">
11903
+ @if (item.label) { <span class="kpt-context-menu__label">{{ item.label }}</span> }
11904
+ @if (item.description) {
11905
+ <span class="kpt-context-menu__description">{{ item.description }}</span>
11906
+ }
11907
+ </span>
11908
+ </div>
11175
11909
  } @else {
11176
11910
  <button
11177
11911
  type="button"
@@ -11182,15 +11916,27 @@ class KptContextMenu {
11182
11916
  (click)="pick(item)"
11183
11917
  >
11184
11918
  @if (item.icon) { <kpt-icon [name]="item.icon" /> }
11185
- <span>{{ item.label }}</span>
11919
+ <span class="kpt-context-menu__text">
11920
+ <span class="kpt-context-menu__label">{{ item.label }}</span>
11921
+ @if (item.description) {
11922
+ <span class="kpt-context-menu__description">{{ item.description }}</span>
11923
+ }
11924
+ </span>
11925
+ @if (item.badge !== undefined && item.badge !== null) {
11926
+ <kpt-badge
11927
+ class="kpt-context-menu__badge"
11928
+ [value]="item.badge"
11929
+ [variant]="item.badgeVariant ?? 'primary'"
11930
+ />
11931
+ }
11186
11932
  </button>
11187
11933
  }
11188
11934
  }
11189
11935
  </div>
11190
11936
  }
11191
- `, host: { class: 'kpt-context-menu-host' }, styles: ["@layer kpt.components{.kpt-context-menu-host{display:block}.kpt-context-menu__area{display:contents}.kpt-context-menu__backdrop{position:fixed;inset:0;z-index:var(--kpt-z-overlay, 1000)}.kpt-context-menu__panel{position:fixed;z-index:calc(var(--kpt-z-overlay, 1000) + 1);min-width:11rem;padding:var(--kpt-space-1, .25rem);background:var(--kpt-color-surface-raised);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-md, .5rem);box-shadow:var(--kpt-elevation-3)}.kpt-context-menu__item{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);width:100%;padding:var(--kpt-space-2, .5rem) var(--kpt-space-3, .75rem);border:0;border-radius:var(--kpt-radius-sm, .25rem);background:none;color:var(--kpt-color-on-surface);font-size:var(--kpt-font-size-sm, .875rem);text-align:left;cursor:pointer}.kpt-context-menu__item:hover:not(:disabled){background:var(--kpt-color-muted)}.kpt-context-menu__item:disabled{opacity:.5;cursor:not-allowed}.kpt-context-menu__item--danger{color:var(--kpt-color-danger)}.kpt-context-menu__separator{height:1px;margin:var(--kpt-space-1, .25rem) 0;background:var(--kpt-color-border)}}\n"] }]
11937
+ `, host: { class: 'kpt-context-menu-host' }, styles: ["@charset \"UTF-8\";@layer kpt.components{.kpt-context-menu-host{display:block}.kpt-context-menu__area{display:contents}.kpt-context-menu__backdrop{position:fixed;inset:0;z-index:var(--kpt-z-overlay, 1000)}.kpt-context-menu__panel{position:fixed;z-index:calc(var(--kpt-z-overlay, 1000) + 1);min-width:11rem;padding:var(--kpt-space-1, .25rem);background:var(--kpt-color-surface-raised);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-md, .5rem);box-shadow:var(--kpt-elevation-3)}.kpt-context-menu__item{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);width:100%;padding:var(--kpt-space-2, .5rem) var(--kpt-space-3, .75rem);border:0;border-radius:var(--kpt-radius-sm, .25rem);background:none;color:var(--kpt-color-on-surface);font-size:var(--kpt-font-size-sm, .875rem);text-align:left;cursor:pointer}.kpt-context-menu__item:hover:not(:disabled){background:var(--kpt-color-muted)}.kpt-context-menu__item:disabled{opacity:.5;cursor:not-allowed}.kpt-context-menu__item--danger{color:var(--kpt-color-danger)}.kpt-context-menu__header{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);padding:var(--kpt-space-2, .5rem) var(--kpt-space-3, .75rem);font-size:var(--kpt-font-size-sm, .875rem);cursor:default}.kpt-context-menu__header .kpt-context-menu__label{font-weight:var(--kpt-font-weight-semibold, 600)}.kpt-context-menu__header kpt-icon{color:var(--kpt-color-on-surface-muted)}.kpt-context-menu__text{display:flex;flex-direction:column;min-width:0}.kpt-context-menu__label,.kpt-context-menu__description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpt-context-menu__description{color:var(--kpt-color-on-surface-muted);font-size:var(--kpt-font-size-xs, .75rem)}.kpt-context-menu__badge{margin-inline-start:auto}.kpt-context-menu__separator{height:1px;margin:var(--kpt-space-1, .25rem) 0;background:var(--kpt-color-border)}}\n"] }]
11192
11938
  }], null, { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], select: [{ type: i0.Output, args: ["select"] }] }); })();
11193
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptContextMenu, { className: "KptContextMenu", filePath: "lib/context-menu/context-menu.component.ts", lineNumber: 49 }); })();
11939
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptContextMenu, { className: "KptContextMenu", filePath: "lib/context-menu/context-menu.component.ts", lineNumber: 82 }); })();
11194
11940
 
11195
11941
  function KptMenubar_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
11196
11942
  i0.ɵɵelement(0, "kpt-icon", 4);
@@ -11723,7 +12469,7 @@ class KptBottomSheet {
11723
12469
  i0.ɵɵattribute("aria-label", ctx.i18n.t("common.close"));
11724
12470
  i0.ɵɵadvance();
11725
12471
  i0.ɵɵconditional(ctx.header() ? 3 : -1);
11726
- } }, styles: ["@layer kpt.components{.kpt-bottom-sheet-host{display:contents}.kpt-bottom-sheet__backdrop{position:fixed;inset:0;z-index:var(--%NS%kpt-z-overlay, 1000);background:color-mix(in oklch,black 45%,transparent);opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}.kpt-bottom-sheet__backdrop.is-open{opacity:1;visibility:visible}.kpt-bottom-sheet__panel{position:fixed;inset:auto 0 0;z-index:calc(var(--%NS%kpt-z-overlay, 1000) + 1);max-height:85vh;display:flex;flex-direction:column;padding:var(--%NS%kpt-space-2, .5rem) var(--%NS%kpt-space-4, 1rem) var(--%NS%kpt-space-4, 1rem);background:var(--%NS%kpt-color-surface-raised);color:var(--%NS%kpt-color-on-surface);border-radius:var(--%NS%kpt-radius-lg, .75rem) var(--%NS%kpt-radius-lg, .75rem) 0 0;box-shadow:var(--%NS%kpt-elevation-4);transform:translateY(100%);transition:transform .25s ease}.kpt-bottom-sheet__panel.is-open{transform:none}.kpt-bottom-sheet__handle{align-self:center;width:2.5rem;height:.25rem;margin:var(--%NS%kpt-space-2, .5rem) 0;padding:0;border:0;border-radius:999px;background:var(--%NS%kpt-color-border-strong, var(--%NS%kpt-color-border));cursor:pointer}.kpt-bottom-sheet__header{font-weight:var(--%NS%kpt-font-weight-semibold, 600);margin-bottom:var(--%NS%kpt-space-2, .5rem)}.kpt-bottom-sheet__body{overflow:auto}}\n"], encapsulation: 2 }); }
12472
+ } }, styles: ["@layer kpt.components{.kpt-bottom-sheet-host{display:contents}.kpt-bottom-sheet__backdrop{position:fixed;inset:0;z-index:var(--%NS%kpt-z-overlay, 1000);background:color-mix(in oklch,black 45%,transparent);opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}.kpt-bottom-sheet__backdrop.is-open{opacity:1;visibility:visible}.kpt-bottom-sheet__panel{position:fixed;inset:auto 0 0;z-index:calc(var(--%NS%kpt-z-overlay, 1000) + 1);max-height:85vh;display:flex;flex-direction:column;padding:var(--%NS%kpt-space-2, .5rem) var(--%NS%kpt-space-4, 1rem) var(--%NS%kpt-space-4, 1rem);background:var(--%NS%kpt-color-surface-raised);color:var(--%NS%kpt-color-on-surface);border-radius:var(--%NS%kpt-radius-lg, .75rem) var(--%NS%kpt-radius-lg, .75rem) 0 0;box-shadow:var(--%NS%kpt-elevation-4);transform:translateY(100%);visibility:hidden;--%NS%_kpt-bottom-sheet-vis-delay: .25s;transition:transform .25s ease,visibility 0s linear var(--%NS%_kpt-bottom-sheet-vis-delay, 0s)}.kpt-bottom-sheet__panel.is-open{transform:none;visibility:visible;--%NS%_kpt-bottom-sheet-vis-delay: 0s}.kpt-bottom-sheet__handle{align-self:center;width:2.5rem;height:.25rem;margin:var(--%NS%kpt-space-2, .5rem) 0;padding:0;border:0;border-radius:999px;background:var(--%NS%kpt-color-border-strong, var(--%NS%kpt-color-border));cursor:pointer}.kpt-bottom-sheet__header{font-weight:var(--%NS%kpt-font-weight-semibold, 600);margin-bottom:var(--%NS%kpt-space-2, .5rem)}.kpt-bottom-sheet__body{overflow:auto}@media(prefers-reduced-motion:reduce){.kpt-bottom-sheet__backdrop,.kpt-bottom-sheet__panel{transition:none}}}\n"], encapsulation: 2 }); }
11727
12473
  }
11728
12474
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptBottomSheet, [{
11729
12475
  type: Component,
@@ -11734,7 +12480,7 @@ class KptBottomSheet {
11734
12480
  @if (header()) { <div class="kpt-bottom-sheet__header">{{ header() }}</div> }
11735
12481
  <div class="kpt-bottom-sheet__body"><ng-content /></div>
11736
12482
  </div>
11737
- `, host: { class: 'kpt-bottom-sheet-host' }, styles: ["@layer kpt.components{.kpt-bottom-sheet-host{display:contents}.kpt-bottom-sheet__backdrop{position:fixed;inset:0;z-index:var(--kpt-z-overlay, 1000);background:color-mix(in oklch,black 45%,transparent);opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}.kpt-bottom-sheet__backdrop.is-open{opacity:1;visibility:visible}.kpt-bottom-sheet__panel{position:fixed;inset:auto 0 0;z-index:calc(var(--kpt-z-overlay, 1000) + 1);max-height:85vh;display:flex;flex-direction:column;padding:var(--kpt-space-2, .5rem) var(--kpt-space-4, 1rem) var(--kpt-space-4, 1rem);background:var(--kpt-color-surface-raised);color:var(--kpt-color-on-surface);border-radius:var(--kpt-radius-lg, .75rem) var(--kpt-radius-lg, .75rem) 0 0;box-shadow:var(--kpt-elevation-4);transform:translateY(100%);transition:transform .25s ease}.kpt-bottom-sheet__panel.is-open{transform:none}.kpt-bottom-sheet__handle{align-self:center;width:2.5rem;height:.25rem;margin:var(--kpt-space-2, .5rem) 0;padding:0;border:0;border-radius:999px;background:var(--kpt-color-border-strong, var(--kpt-color-border));cursor:pointer}.kpt-bottom-sheet__header{font-weight:var(--kpt-font-weight-semibold, 600);margin-bottom:var(--kpt-space-2, .5rem)}.kpt-bottom-sheet__body{overflow:auto}}\n"] }]
12483
+ `, host: { class: 'kpt-bottom-sheet-host' }, styles: ["@layer kpt.components{.kpt-bottom-sheet-host{display:contents}.kpt-bottom-sheet__backdrop{position:fixed;inset:0;z-index:var(--kpt-z-overlay, 1000);background:color-mix(in oklch,black 45%,transparent);opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}.kpt-bottom-sheet__backdrop.is-open{opacity:1;visibility:visible}.kpt-bottom-sheet__panel{position:fixed;inset:auto 0 0;z-index:calc(var(--kpt-z-overlay, 1000) + 1);max-height:85vh;display:flex;flex-direction:column;padding:var(--kpt-space-2, .5rem) var(--kpt-space-4, 1rem) var(--kpt-space-4, 1rem);background:var(--kpt-color-surface-raised);color:var(--kpt-color-on-surface);border-radius:var(--kpt-radius-lg, .75rem) var(--kpt-radius-lg, .75rem) 0 0;box-shadow:var(--kpt-elevation-4);transform:translateY(100%);visibility:hidden;--_kpt-bottom-sheet-vis-delay: .25s;transition:transform .25s ease,visibility 0s linear var(--_kpt-bottom-sheet-vis-delay, 0s)}.kpt-bottom-sheet__panel.is-open{transform:none;visibility:visible;--_kpt-bottom-sheet-vis-delay: 0s}.kpt-bottom-sheet__handle{align-self:center;width:2.5rem;height:.25rem;margin:var(--kpt-space-2, .5rem) 0;padding:0;border:0;border-radius:999px;background:var(--kpt-color-border-strong, var(--kpt-color-border));cursor:pointer}.kpt-bottom-sheet__header{font-weight:var(--kpt-font-weight-semibold, 600);margin-bottom:var(--kpt-space-2, .5rem)}.kpt-bottom-sheet__body{overflow:auto}@media(prefers-reduced-motion:reduce){.kpt-bottom-sheet__backdrop,.kpt-bottom-sheet__panel{transition:none}}}\n"] }]
11738
12484
  }], null, { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: false }] }], closeOnBackdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnBackdrop", required: false }] }] }); })();
11739
12485
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptBottomSheet, { className: "KptBottomSheet", filePath: "lib/bottom-sheet/bottom-sheet.component.ts", lineNumber: 27 }); })();
11740
12486
 
@@ -11865,5 +12611,5 @@ class KptSpeedDial {
11865
12611
  * Generated bundle index. Do not edit.
11866
12612
  */
11867
12613
 
11868
- export { KPT_I18N_CONFIG, KPT_MESSAGES_EN, KPT_MESSAGES_PL, KptAccordion, KptAccordionPanel, KptAlert, KptAppShell, KptAutocomplete, KptAvatar, KptAvatarGroup, KptBadge, KptBottomSheet, KptBreadcrumb, KptButton, KptButtonGroup, KptCard, KptCarousel, KptCellDef, KptCheckbox, KptChip, KptChipsInput, KptClock, KptColorPicker, KptConfirmContainer, KptConfirmService, KptContextMenu, KptDataTable, KptDataView, KptDateRange, KptDatepicker, KptDialog, KptDivider, KptDrawer, KptEmpty, KptFab, KptFieldset, KptFileUpload, KptFormField, KptGalleria, KptI18n, KptIcon, KptIconButton, KptIconRegistry, KptImage, KptInput, KptInputMask, KptInputNumber, KptInputOtp, KptKnob, KptListbox, KptMegamenu, KptMenu, KptMenubar, KptMeterGroup, KptOrderList, KptPaginator, KptPanel, KptPassword, KptPickList, KptPopover, KptProgress, KptRadioGroup, KptRating, KptRichText, KptRowDetailDef, KptScrollTop, KptSelect, KptSidenav, KptSkeleton, KptSlider, KptSpeedDial, KptSpinner, KptSplitButton, KptSplitter, KptStep, KptStepper, KptSwitch, KptSwitchGroup, KptTab, KptTabs, KptTextarea, KptTimeline, KptToastContainer, KptToastService, KptToolbar, KptTooltip, KptTree, provideKptI18n };
12614
+ export { KPT_BREAKPOINTS, KPT_FORM_FIELD_CONTROL, KPT_I18N_CONFIG, KPT_MESSAGES_EN, KPT_MESSAGES_PL, KptAccordion, KptAccordionPanel, KptAlert, KptAppShell, KptAutocomplete, KptAvatar, KptAvatarGroup, KptBadge, KptBottomSheet, KptBreadcrumb, KptBreakpointObserver, KptButton, KptButtonGroup, KptCard, KptCarousel, KptCellDef, KptCheckbox, KptChip, KptChipsInput, KptClock, KptColorPicker, KptConfirmContainer, KptConfirmService, KptContextMenu, KptDataTable, KptDataView, KptDateRange, KptDatepicker, KptDialog, KptDivider, KptDrawer, KptEmpty, KptFab, KptFieldset, KptFileUpload, KptFormField, KptGalleria, KptI18n, KptIcon, KptIconButton, KptIconRegistry, KptImage, KptInput, KptInputMask, KptInputNumber, KptInputOtp, KptKnob, KptListbox, KptMegamenu, KptMenu, KptMenubar, KptMeterGroup, KptOrderList, KptPaginator, KptPanel, KptPassword, KptPickList, KptPopover, KptProgress, KptRadioGroup, KptRating, KptRichText, KptRowDetailDef, KptScrollTop, KptSelect, KptShellNavToggle, KptSidenav, KptSkeleton, KptSlider, KptSpeedDial, KptSpinner, KptSplitButton, KptSplitter, KptStep, KptStepper, KptSwitch, KptSwitchGroup, KptTab, KptTabs, KptTextarea, KptTimeline, KptToastContainer, KptToastService, KptToolbar, KptTooltip, KptTree, provideKptI18n, renderKptIconSvg };
11869
12615
  //# sourceMappingURL=konce-pt-angular.mjs.map