@kraft.stitch/angular 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +101 -2
- package/fesm2022/kraft.stitch-angular.mjs +2873 -0
- package/fesm2022/kraft.stitch-angular.mjs.map +1 -0
- package/package.json +17 -16
- package/types/kraft.stitch-angular.d.ts +2247 -0
- package/.github/workflows/npm-publish.yml +0 -33
- package/ng-package.json +0 -10
- package/src/lib/Buttons/button/button.ts +0 -152
- package/src/lib/Buttons/button-group/button-group.ts +0 -129
- package/src/lib/Buttons/chips/chips.ts +0 -131
- package/src/lib/Buttons/fab/fab.ts +0 -96
- package/src/lib/Calendars/datepicker/datepicker.ts +0 -105
- package/src/lib/Calendars/daterange/daterange.ts +0 -112
- package/src/lib/Calendars/timepicker/timepicker.ts +0 -117
- package/src/lib/Dropdowns/dropdown/dropdown.ts +0 -121
- package/src/lib/Dropdowns/listbox/listbox.ts +0 -116
- package/src/lib/Inputs/checkbox/checkbox.ts +0 -126
- package/src/lib/Inputs/colour-picker/colour-picker.ts +0 -101
- package/src/lib/Inputs/input/input.ts +0 -139
- package/src/lib/Inputs/otp-input/otp-input.ts +0 -113
- package/src/lib/Inputs/radio/radio.ts +0 -115
- package/src/lib/Inputs/rating/rating.ts +0 -104
- package/src/lib/Inputs/slider/slider.ts +0 -121
- package/src/lib/Inputs/switch/switch.ts +0 -100
- package/src/lib/Inputs/textarea/textarea.ts +0 -129
- package/src/lib/Inputs/theme-switch/theme-switch.ts +0 -61
- package/src/lib/Inputs/uploader/uploader.ts +0 -97
- package/src/lib/Layout/avatar/avatar.ts +0 -66
- package/src/lib/Layout/card/card.ts +0 -88
- package/src/lib/Layout/code-view/code-view.ts +0 -77
- package/src/lib/Layout/dialog/dialog.ts +0 -80
- package/src/lib/Layout/not-found/not-found.ts +0 -73
- package/src/lib/Layout/sidebar/sidebar.ts +0 -97
- package/src/lib/Layout/table/table.ts +0 -81
- package/src/lib/Layout/tooltip/tooltip.ts +0 -48
- package/src/lib/Navigation/accordion/accordion.ts +0 -80
- package/src/lib/Navigation/breadcrumb/breadcrumb.ts +0 -58
- package/src/lib/Navigation/carousel/carousel.ts +0 -70
- package/src/lib/Navigation/context-menu/context-menu.ts +0 -79
- package/src/lib/Navigation/nav-bar/nav-bar.ts +0 -72
- package/src/lib/Navigation/pagination/pagination.ts +0 -82
- package/src/lib/Navigation/stepper/stepper.ts +0 -77
- package/src/lib/Navigation/tab/tab.ts +0 -71
- package/src/lib/Navigation/toolbar/toolbar.ts +0 -60
- package/src/lib/Navigation/top-nav-bar/top-nav-bar.ts +0 -71
- package/src/lib/Navigation/tree-view/tree-view.ts +0 -75
- package/src/lib/Notification/badge/badge.ts +0 -55
- package/src/lib/Notification/loader/loader.ts +0 -41
- package/src/lib/Notification/message/message.ts +0 -60
- package/src/lib/Notification/progress/progress.ts +0 -65
- package/src/lib/Notification/spinner/spinner.ts +0 -50
- package/src/lib/Notification/toast/toast.ts +0 -56
- package/src/public-api.ts +0 -62
- package/tsconfig.json +0 -23
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kraft.stitch-angular.mjs","sources":["../../src/lib/Buttons/button/button.ts","../../src/lib/Buttons/button-group/button-group.ts","../../src/lib/Buttons/chips/chips.ts","../../src/lib/Buttons/fab/fab.ts","../../src/lib/Calendars/datepicker/datepicker.ts","../../src/lib/Calendars/daterange/daterange.ts","../../src/lib/Calendars/timepicker/timepicker.ts","../../src/lib/Dropdowns/dropdown/dropdown.ts","../../src/lib/Dropdowns/listbox/listbox.ts","../../src/lib/Inputs/checkbox/checkbox.ts","../../src/lib/Inputs/colour-picker/colour-picker.ts","../../src/lib/Inputs/input/input.ts","../../src/lib/Inputs/otp-input/otp-input.ts","../../src/lib/Inputs/radio/radio.ts","../../src/lib/Inputs/rating/rating.ts","../../src/lib/Inputs/slider/slider.ts","../../src/lib/Inputs/switch/switch.ts","../../src/lib/Inputs/textarea/textarea.ts","../../src/lib/Inputs/theme-switch/theme-switch.ts","../../src/lib/Inputs/uploader/uploader.ts","../../src/lib/Layout/avatar/avatar.ts","../../src/lib/Layout/card/card.ts","../../src/lib/Layout/code-view/code-view.ts","../../src/lib/Layout/dialog/dialog.ts","../../src/lib/Layout/not-found/not-found.ts","../../src/lib/Layout/sidebar/sidebar.ts","../../src/lib/Layout/table/table.ts","../../src/lib/Layout/tooltip/tooltip.ts","../../src/lib/Navigation/accordion/accordion.ts","../../src/lib/Navigation/breadcrumb/breadcrumb.ts","../../src/lib/Navigation/carousel/carousel.ts","../../src/lib/Navigation/context-menu/context-menu.ts","../../src/lib/Navigation/nav-bar/nav-bar.ts","../../src/lib/Navigation/pagination/pagination.ts","../../src/lib/Navigation/stepper/stepper.ts","../../src/lib/Navigation/tab/tab.ts","../../src/lib/Navigation/toolbar/toolbar.ts","../../src/lib/Navigation/top-nav-bar/top-nav-bar.ts","../../src/lib/Navigation/tree-view/tree-view.ts","../../src/lib/Notification/badge/badge.ts","../../src/lib/Notification/loader/loader.ts","../../src/lib/Notification/message/message.ts","../../src/lib/Notification/progress/progress.ts","../../src/lib/Notification/spinner/spinner.ts","../../src/lib/Notification/toast/toast.ts","../../src/public-api.ts","../../src/kraft.stitch-angular.ts"],"sourcesContent":["// Side-effect import: registers the `ks-button` tag in the browser's\n// CustomElementRegistry (via Stencil's `auto-define-custom-elements`\n// behavior in `core/stencil.config.ts`). Nothing in THIS file renders the\n// button — see the class doc comment below for exactly what does.\nimport '@kraft.stitch/core/dist/components/ks-button.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\nimport type { KsBaseSize, KsVariant } from '@kraft.stitch/core';\n\n/** DOM shape of the real `<ks-button>` custom element, typed for the wrapper. */\ntype KsButtonElement = HTMLElement & {\n icon: string;\n name: string;\n variant: KsVariant;\n size: KsBaseSize;\n isRounded: boolean;\n disabled: boolean;\n};\n\n/**\n * Angular wrapper around the `<ks-button>` Stencil custom element.\n *\n * ## How this actually renders a button (no markup lives in this file)\n *\n * 1. A parent template writes `<ks-button name=\"Save\" (ksClick)=\"save()\">`.\n * 2. Angular's renderer creates that host node with\n * `document.createElement('ks-button')`. Because the side-effect import\n * above already ran `customElements.define('ks-button', ...)`, the\n * **browser itself** immediately upgrades that node into an instance of\n * Stencil's compiled `KsButton` class — this is standard Custom Elements\n * behavior, nothing Angular-specific.\n * 3. That upgrade runs Stencil's `connectedCallback` → `render()`, which\n * injects the real `<button>…</button>` markup as children of the host\n * node. This happens **regardless of Angular** — it's the same thing\n * that would happen if you dropped `<ks-button>` in a plain HTML file.\n * 4. `KsButtonComponent` (this class) is a *second, independent* thing\n * attached to that same host node — Angular doesn't care that the node\n * is also a custom element instance. Its only job is translation:\n * push signal-input values onto the element's real DOM properties, and\n * re-emit the native `clicked` DOM event as an Angular `output()`.\n *\n * `template: ''` (no `<ng-content>`) is intentional: `ks-button`'s Stencil\n * `render()` has no `<slot>`, so there is nothing to project — content\n * written between `<ks-button>` tags wouldn't be displayed by the real\n * component anyway. Content projection would only make sense here if the\n * wrapped Stencil component actually declared a `<slot>`.\n *\n * ## Why the output is called `ksClick`, NOT `clicked`\n *\n * `<ks-button>` (the Stencil element) dispatches a **native** DOM\n * `CustomEvent` literally named `clicked` on the host node. It is tempting\n * to expose the wrapper's own output using that exact same name so the\n * public API \"mirrors\" the native event — but doing so creates a **name\n * collision** that makes the event fire twice from a parent template such\n * as `<ks-button (clicked)=\"log($event)\">`:\n *\n * For *any* event binding in a template, Ivy's `ɵɵlistener` instruction\n * does two things whenever the bound name also happens to match a\n * directive/component **output** on that element (`tNode.outputs[name]`):\n * 1. It subscribes the template's handler to that output (`output.emit()`\n * calls it).\n * 2. It **also** attaches a genuine `addEventListener(name, …)` straight\n * onto the host DOM node for that same literal name, independent of\n * step 1 — Ivy can't know whether the name is \"just\" an output or also\n * a real DOM event some element in the tree might dispatch, so it wires\n * both to be safe.\n *\n * If the output were named `clicked`, both of those fire for the *same*\n * underlying interaction here: (1) our own `this.ksClick.emit(...)` call\n * below invokes the template handler once, and (2) the raw native\n * `clicked` `CustomEvent` that `<ks-button>` dispatches on the host node\n * is picked up by Ivy's own native listener from step 2 and invokes the\n * *same* template handler a second time — with a different, unwrapped\n * event object. (An earlier attempt at fixing this used\n * `@HostListener('clicked', ['$event'])`, which hits the same\n * `tNode.outputs['clicked']` check and instead causes *infinite emit\n * recursion*, since the host listener itself becomes a subscriber of the\n * output it emits on.)\n *\n * Naming the output `ksClick` (no relation to any real DOM event name)\n * removes the collision entirely: a parent writes\n * `<ks-button (ksClick)=\"log($event)\">`, Ivy subscribes that to our\n * output, and the phantom native `addEventListener('ksClick', …)` it also\n * attaches never fires because no such DOM event exists. Only the manual\n * `addEventListener('clicked', …)` below — on the *internal* native event\n * name, never referenced in any template — observes the real click and\n * re-emits it once through `ksClick`. (This mirrors how libraries like\n * Ionic prefix outputs, e.g. `ionChange` instead of `change`, for exactly\n * this reason.)\n */\n@Component({\n selector: 'ks-button',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsButtonComponent {\n private readonly el: KsButtonElement;\n\n /** Icon class string (e.g. Material Icon or Font Awesome class) */\n readonly icon = input('');\n\n /** Button label text */\n readonly name = input('');\n\n /** Visual style variant */\n readonly variant = input<KsVariant>('brand');\n\n /** Size */\n readonly size = input<KsBaseSize>('md');\n\n /** Renders the button with fully-rounded pill corners */\n readonly isRounded = input(false);\n\n /** Disables the button */\n readonly disabled = input(false);\n\n /**\n * Emits the `MouseEvent` from the native `clicked` `CustomEvent`\n * dispatched by `<ks-button>`. Deliberately NOT named `clicked` — see\n * the class doc comment above for why that would fire this event twice.\n */\n readonly ksClick = output<MouseEvent>();\n\n constructor(ref: ElementRef<KsButtonElement>) {\n this.el = ref.nativeElement;\n\n // Each signal input gets its own effect so only the properties that\n // actually changed are written back to the DOM. Stencil's own\n // `@Prop()` watchers take it from there and re-render the button.\n effect(() => (this.el.icon = this.icon()));\n effect(() => (this.el.name = this.name()));\n effect(() => (this.el.variant = this.variant()));\n effect(() => (this.el.size = this.size()));\n effect(() => (this.el.isRounded = this.isRounded()));\n effect(() => (this.el.disabled = this.disabled()));\n\n // Attached manually (NOT `@HostListener`) to the *internal* native\n // event name `clicked`, which is never referenced by name in any\n // Angular template (`ksClick` is what templates bind to instead) — so\n // there is no `tNode.outputs` name collision for Ivy to double-wire.\n // zone.js's patched `addEventListener` means this still runs inside\n // the Angular zone, so no manual `NgZone.run()` is needed, and change\n // detection still runs after `emit()` below.\n const onNativeClicked = (event: Event): void => {\n this.ksClick.emit((event as CustomEvent<MouseEvent>).detail);\n event.preventDefault();\n };\n this.el.addEventListener('clicked', onNativeClicked);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('clicked', onNativeClicked));\n }\n}\n","// Side-effect import: registers the `ks-button-group` tag in the browser's\n// CustomElementRegistry — see `button/button.ts` for the full explanation of\n// this pattern (Stencil owns rendering, this class only translates\n// Angular-idiomatic Input/Output into DOM property writes + event listeners).\nimport '@kraft.stitch/core/dist/components/ks-button-group.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\nimport type { KsBaseSize, KsBaseVariant } from '@kraft.stitch/core';\n\n/**\n * Mirrors `KsButtonGroupItem` exported by\n * `core/src/components/Buttons/button-group/button-group.tsx`.\n *\n * Duplicated here (instead of importing it from `@kraft.stitch/core`) because that\n * package's root barrel (`core/src/index.ts`) is still being assembled and\n * does not yet reliably re-export every per-component type — only the\n * shared enums in `ks-ui.types` (`KsBaseSize`, `KsBaseVariant`, `KsVariant`,\n * imported below) are stable to depend on today. Keep this in sync with the\n * Stencil source if its shape changes.\n */\nexport interface KsButtonGroupItem {\n key: string;\n label?: string;\n icon?: string;\n disabled?: boolean;\n}\n\nexport type KsButtonGroupDisplayStyle = 'default' | 'switch';\n\n/** DOM shape of the real `<ks-button-group>` custom element, typed for the wrapper. */\ntype KsButtonGroupElement = HTMLElement & {\n buttons: KsButtonGroupItem[];\n variant: KsBaseVariant;\n size: KsBaseSize;\n displayStyle: KsButtonGroupDisplayStyle;\n multi: boolean;\n selectable: boolean;\n disabled: boolean;\n};\n\n/**\n * Angular wrapper around the `<ks-button-group>` Stencil custom element.\n *\n * `template: ''` — the Stencil `render()` for this element has no `<slot>`,\n * so there is nothing for this wrapper to project; every button is\n * generated from the `buttons` input.\n *\n * ## Output naming\n * The native element dispatches DOM `CustomEvent`s named `clicked` and\n * `selectionChanged`. Both outputs below are renamed with a `ks` prefix\n * (`ksClick`, `ksSelectionChange`) rather than reusing those exact strings.\n * Doing so is required, not just cosmetic: for a template binding such as\n * `<ks-button-group (clicked)=\"...\">`, Angular's `ɵɵlistener` instruction\n * *always* attaches a raw `addEventListener('clicked', …)` to the host\n * element in addition to subscribing to a same-named component output —\n * this is unconditional for element nodes (see\n * `packages/core/src/render3/instructions/listener.ts` →\n * `listenerInternal`), not something a custom-elements schema can opt out\n * of. With a same-named output, the parent handler would therefore run\n * *twice* per interaction — once via our own unwrapped `.emit()` call, once\n * via Angular's own raw listener receiving the untouched `CustomEvent`\n * (defeating the \"no `event.detail`\" requirement). Prefixing every output\n * with `ks` guarantees the literal name never matches a real DOM event, so\n * only our manual listener (below) ever observes it. See `button/button.ts`\n * for the original write-up of this same issue.\n */\n@Component({\n selector: 'ks-button-group',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsButtonGroupComponent {\n private readonly el: KsButtonGroupElement;\n\n /** The buttons to render */\n readonly buttons = input<KsButtonGroupItem[]>([]);\n\n /** Visual variant */\n readonly variant = input<KsBaseVariant>('brand');\n\n /** Size */\n readonly size = input<KsBaseSize>('md');\n\n /** Display style: 'default' (filled/outlined) or 'switch' (pill toggle) */\n readonly displayStyle = input<KsButtonGroupDisplayStyle>('default');\n\n /** Allow multiple selected buttons (toggle mode) */\n readonly multi = input(false);\n\n /** Toggle/selection mode — shows active state on click */\n readonly selectable = input(false);\n\n /** Disables the entire group */\n readonly disabled = input(false);\n\n /** Emits the clicked button's `key`. From the native `clicked` event. */\n readonly ksClick = output<string>();\n\n /** Emits the current selection when `selectable`. From the native `selectionChanged` event. */\n readonly ksSelectionChange = output<string[]>();\n\n constructor(ref: ElementRef<KsButtonGroupElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.buttons = this.buttons()));\n effect(() => (this.el.variant = this.variant()));\n effect(() => (this.el.size = this.size()));\n effect(() => (this.el.displayStyle = this.displayStyle()));\n effect(() => (this.el.multi = this.multi()));\n effect(() => (this.el.selectable = this.selectable()));\n effect(() => (this.el.disabled = this.disabled()));\n\n const onNativeClicked = (event: Event): void => {\n this.ksClick.emit((event as CustomEvent<string>).detail);\n };\n const onNativeSelectionChanged = (event: Event): void => {\n this.ksSelectionChange.emit((event as CustomEvent<string[]>).detail);\n };\n\n this.el.addEventListener('clicked', onNativeClicked);\n this.el.addEventListener('selectionChanged', onNativeSelectionChanged);\n\n inject(DestroyRef).onDestroy(() => {\n this.el.removeEventListener('clicked', onNativeClicked);\n this.el.removeEventListener('selectionChanged', onNativeSelectionChanged);\n });\n }\n}\n","// Side-effect import: registers the `ks-chips` tag — see `button/button.ts`\n// for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-chips.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { KsBaseSize } from '@kraft.stitch/core';\n\n/**\n * Mirrors `KsChipOption` exported by\n * `core/src/components/Buttons/chips/chips.tsx`. Duplicated locally — see\n * the note in `button-group/button-group.ts` on why component-specific\n * shapes aren't imported from `@kraft.stitch/core`'s root barrel yet.\n */\nexport interface KsChipOption {\n value: string | number;\n label: string;\n icon?: string;\n disabled?: boolean;\n}\n\nexport type KsChipsValue = (string | number) | (string | number)[] | null;\n\n/** DOM shape of the real `<ks-chips>` custom element, typed for the wrapper. */\ntype KsChipsElement = HTMLElement & {\n options: KsChipOption[];\n multi: boolean;\n label: string;\n size: KsBaseSize;\n isRounded: boolean;\n disabled: boolean;\n value: KsChipsValue;\n writeValue(val: KsChipsValue): Promise<void>;\n};\n\n/**\n * Angular wrapper around the `<ks-chips>` Stencil custom element.\n *\n * ## Two-way binding\n * The Stencil source's own doc comment says Angular forms integration\n * (`ngModel`/`formControl`) would be \"provided later by the generated\n * output-target wrappers\" — this is that wrapper. Rather than trying to\n * reuse Angular's `[(value)]` banana-box sugar (which would require an\n * output literally named `valueChange`, colliding with the native\n * `valueChange` `CustomEvent` the element already dispatches — see\n * `button/button.ts` for why that double-fires), two-way binding is\n * implemented the idiomatic Angular way: `ControlValueAccessor`. Bind with\n * `[(ngModel)]=\"fruit\"` or `formControlName=\"fruit\"` and it Just Works,\n * because `NgModel`/`FormControlDirective` talk to `writeValue` /\n * `registerOnChange` directly through DI — no template event-name matching\n * involved, so there's no collision to worry about.\n *\n * For plain (non-forms) two-way use, bind explicitly instead:\n * `[value]=\"fruit\" (ksValueChange)=\"fruit = $event\"`.\n *\n * `template: ''` — no `<slot>` in the wrapped Stencil render, nothing to project.\n */\n@Component({\n selector: 'ks-chips',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: KsChipsComponent, multi: true }],\n})\nexport class KsChipsComponent implements ControlValueAccessor {\n private readonly el: KsChipsElement;\n private onChange: (value: KsChipsValue) => void = () => {};\n private onTouched: () => void = () => {};\n\n /** Full list of chip options */\n readonly options = input<KsChipOption[]>([]);\n\n /** Allow selecting multiple chips */\n readonly multi = input(false);\n\n /** Field label */\n readonly label = input('');\n\n /** Size */\n readonly size = input<KsBaseSize>('md');\n\n /** Renders chips with fully-rounded pill corners */\n readonly isRounded = input(true);\n\n /** Disabled state */\n readonly disabled = input(false);\n\n /** Initial/controlled value for plain (non-forms) usage. Prefer `[(ngModel)]` / `formControlName` when inside a form. */\n readonly value = input<KsChipsValue>(null);\n\n /** Emits the newly-selected value(s). From the native `valueChange` event. */\n readonly ksValueChange = output<KsChipsValue>();\n\n constructor(ref: ElementRef<KsChipsElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.options = this.options()));\n effect(() => (this.el.multi = this.multi()));\n effect(() => (this.el.label = this.label()));\n effect(() => (this.el.size = this.size()));\n effect(() => (this.el.isRounded = this.isRounded()));\n effect(() => (this.el.disabled = this.disabled()));\n effect(() => void this.el.writeValue(this.value()));\n\n const onNativeValueChange = (event: Event): void => {\n const detail = (event as CustomEvent<KsChipsValue>).detail;\n this.ksValueChange.emit(detail);\n this.onChange(detail);\n this.onTouched();\n };\n this.el.addEventListener('valueChange', onNativeValueChange);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('valueChange', onNativeValueChange));\n }\n\n /** `ControlValueAccessor` — called by `ngModel`/`formControl` to push a value in. */\n writeValue(value: KsChipsValue): void {\n void this.el.writeValue(value ?? null);\n }\n\n registerOnChange(fn: (value: KsChipsValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.el.disabled = isDisabled;\n }\n}\n","// Side-effect import: registers the `ks-fab` tag — see `button/button.ts`\n// for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-fab.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\nimport type { KsBaseSize, KsBaseVariant } from '@kraft.stitch/core';\n\n/**\n * Mirrors `KsFabAction` / `KsFabPosition` exported by\n * `core/src/components/Buttons/fab/fab.tsx`. Duplicated locally — see the\n * note in `button-group/button-group.ts` for why.\n */\nexport interface KsFabAction {\n key: string;\n icon: string;\n label?: string;\n variant?: KsBaseVariant;\n}\n\nexport type KsFabPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';\n\n/** DOM shape of the real `<ks-fab>` custom element, typed for the wrapper. */\ntype KsFabElement = HTMLElement & {\n icon: string;\n label: string;\n variant: KsBaseVariant;\n size: KsBaseSize;\n actions: KsFabAction[];\n disabled: boolean;\n position: KsFabPosition;\n appendToParent: boolean;\n};\n\n/**\n * Angular wrapper around the `<ks-fab>` Stencil custom element.\n *\n * `ksClick` is renamed away from the native `clicked` event name for the\n * same double-fire reason documented in `button/button.ts` and\n * `button-group/button-group.ts`. `template: ''` — no `<slot>` in the\n * wrapped Stencil render.\n */\n@Component({\n selector: 'ks-fab',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsFabComponent {\n private readonly el: KsFabElement;\n\n /** Icon for the main FAB button */\n readonly icon = input('');\n\n /** Accessible label / tooltip */\n readonly label = input('');\n\n /** Variant */\n readonly variant = input<KsBaseVariant>('brand');\n\n /** Size */\n readonly size = input<KsBaseSize>('md');\n\n /** Speed-dial actions shown on expand */\n readonly actions = input<KsFabAction[]>([]);\n\n /** Disabled */\n readonly disabled = input(false);\n\n /** Corner to anchor the FAB inside its nearest positioned container */\n readonly position = input<KsFabPosition>('bottom-right');\n\n /** When true (default), positions `absolute` inside the nearest positioned ancestor; when false, `fixed` to the viewport */\n readonly appendToParent = input(true);\n\n /** Emits `'main'` for the main button, or a speed-dial action's `key`. From the native `clicked` event. */\n readonly ksClick = output<string>();\n\n constructor(ref: ElementRef<KsFabElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.icon = this.icon()));\n effect(() => (this.el.label = this.label()));\n effect(() => (this.el.variant = this.variant()));\n effect(() => (this.el.size = this.size()));\n effect(() => (this.el.actions = this.actions()));\n effect(() => (this.el.disabled = this.disabled()));\n effect(() => (this.el.position = this.position()));\n effect(() => (this.el.appendToParent = this.appendToParent()));\n\n const onNativeClicked = (event: Event): void => {\n this.ksClick.emit((event as CustomEvent<string>).detail);\n };\n this.el.addEventListener('clicked', onNativeClicked);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('clicked', onNativeClicked));\n }\n}\n","// Side-effect import: registers the `ks-datepicker` tag — see\n// `button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-datepicker.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/** DOM shape of the real `<ks-datepicker>` custom element, typed for the wrapper. */\ntype KsDatepickerElement = HTMLElement & {\n label: string;\n placeholder: string;\n minDate: Date | null;\n maxDate: Date | null;\n disabled: boolean;\n selectedDate: Date | null;\n writeValue(val: Date | null): Promise<void>;\n};\n\n/**\n * Angular wrapper around the `<ks-datepicker>` Stencil custom element.\n *\n * Two-way binding is via `ControlValueAccessor` — use `[(ngModel)]` or\n * `formControlName` and it works through DI (`writeValue` /\n * `registerOnChange`), with no template event-name collision to worry\n * about. See `chips/chips.ts` for the full rationale (same pattern, same\n * reason the native `selectedDateChange` event can't be reused verbatim as\n * an Angular output name).\n *\n * For plain (non-forms) two-way use, bind explicitly instead:\n * `[selectedDate]=\"d\" (ksSelectedDateChange)=\"d = $event\"`.\n *\n * `template: ''` — the projected panel content in the Stencil render is\n * internal (calendar grid projected into the shared `<ks-overlay-field>`\n * default slot); there is no slot exposed on `<ks-datepicker>` itself for\n * a consumer to project into.\n */\n@Component({\n selector: 'ks-datepicker',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: KsDatepickerComponent, multi: true }],\n})\nexport class KsDatepickerComponent implements ControlValueAccessor {\n private readonly el: KsDatepickerElement;\n private onChange: (value: Date | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n /** Field label */\n readonly label = input('');\n\n /** Placeholder text */\n readonly placeholder = input('Select date');\n\n /** Min selectable date */\n readonly minDate = input<Date | null>(null);\n\n /** Max selectable date */\n readonly maxDate = input<Date | null>(null);\n\n /** Disabled state */\n readonly disabled = input(false);\n\n /** Initial/controlled value for plain (non-forms) usage. Prefer `[(ngModel)]` / `formControlName` when inside a form. */\n readonly selectedDate = input<Date | null>(null);\n\n /** Emits the newly-picked date. From the native `selectedDateChange` event. */\n readonly ksSelectedDateChange = output<Date | null>();\n\n constructor(ref: ElementRef<KsDatepickerElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.label = this.label()));\n effect(() => (this.el.placeholder = this.placeholder()));\n effect(() => (this.el.minDate = this.minDate()));\n effect(() => (this.el.maxDate = this.maxDate()));\n effect(() => (this.el.disabled = this.disabled()));\n effect(() => void this.el.writeValue(this.selectedDate()));\n\n const onNativeSelectedDateChange = (event: Event): void => {\n const detail = (event as CustomEvent<Date | null>).detail;\n this.ksSelectedDateChange.emit(detail);\n this.onChange(detail);\n this.onTouched();\n };\n this.el.addEventListener('selectedDateChange', onNativeSelectedDateChange);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('selectedDateChange', onNativeSelectedDateChange));\n }\n\n writeValue(value: Date | null): void {\n void this.el.writeValue(value ?? null);\n }\n\n registerOnChange(fn: (value: Date | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.el.disabled = isDisabled;\n }\n}\n","// Side-effect import: registers the `ks-daterange` tag — see\n// `button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-daterange.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Mirrors `KsDateRange` / `KsPresetRange` exported by\n * `core/src/components/Calendars/daterange/daterange.types.ts`. Duplicated\n * locally — see the note in `button-group/button-group.ts` for why.\n */\nexport interface KsDateRange {\n start: Date | null;\n end: Date | null;\n}\n\nexport interface KsPresetRange {\n label: string;\n range: () => KsDateRange;\n}\n\n/** DOM shape of the real `<ks-daterange>` custom element, typed for the wrapper. */\ntype KsDaterangeElement = HTMLElement & {\n label: string;\n placeholder: string;\n minDate: Date | null;\n maxDate: Date | null;\n presets: KsPresetRange[];\n showPresets: boolean;\n disabled: boolean;\n range: KsDateRange;\n writeValue(val: KsDateRange | null): Promise<void>;\n};\n\n/**\n * Angular wrapper around the `<ks-daterange>` Stencil custom element.\n *\n * Two-way binding is via `ControlValueAccessor` — use `[(ngModel)]` or\n * `formControlName`. See `chips/chips.ts` for the full rationale (the\n * native `rangeChange` event can't be reused verbatim as an Angular output\n * name without a double-fire risk).\n *\n * For plain (non-forms) two-way use, bind explicitly instead:\n * `[range]=\"r\" (ksRangeChange)=\"r = $event\"`.\n *\n * `template: ''` — no slot is exposed on `<ks-daterange>` itself.\n */\n@Component({\n selector: 'ks-daterange',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: KsDaterangeComponent, multi: true }],\n})\nexport class KsDaterangeComponent implements ControlValueAccessor {\n private readonly el: KsDaterangeElement;\n private onChange: (value: KsDateRange) => void = () => {};\n private onTouched: () => void = () => {};\n\n readonly label = input('');\n readonly placeholder = input('Select date range…');\n readonly minDate = input<Date | null>(null);\n readonly maxDate = input<Date | null>(null);\n readonly presets = input<KsPresetRange[]>([]);\n readonly showPresets = input(true);\n readonly disabled = input(false);\n\n /** Initial/controlled value for plain (non-forms) usage. Prefer `[(ngModel)]` / `formControlName` when inside a form. */\n readonly range = input<KsDateRange>({ start: null, end: null });\n\n /** Emits the newly-picked range. From the native `rangeChange` event. */\n readonly ksRangeChange = output<KsDateRange>();\n\n constructor(ref: ElementRef<KsDaterangeElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.label = this.label()));\n effect(() => (this.el.placeholder = this.placeholder()));\n effect(() => (this.el.minDate = this.minDate()));\n effect(() => (this.el.maxDate = this.maxDate()));\n effect(() => (this.el.presets = this.presets()));\n effect(() => (this.el.showPresets = this.showPresets()));\n effect(() => (this.el.disabled = this.disabled()));\n effect(() => void this.el.writeValue(this.range()));\n\n const onNativeRangeChange = (event: Event): void => {\n const detail = (event as CustomEvent<KsDateRange>).detail;\n this.ksRangeChange.emit(detail);\n this.onChange(detail);\n this.onTouched();\n };\n this.el.addEventListener('rangeChange', onNativeRangeChange);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('rangeChange', onNativeRangeChange));\n }\n\n writeValue(value: KsDateRange | null): void {\n void this.el.writeValue(value ?? { start: null, end: null });\n }\n\n registerOnChange(fn: (value: KsDateRange) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.el.disabled = isDisabled;\n }\n}\n","// Side-effect import: registers the `ks-timepicker` tag — see\n// `button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-timepicker.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, model, output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Mirrors `KsTimeValue` exported by\n * `core/src/components/Calendars/timepicker/timepicker.tsx`. Duplicated\n * locally — see the note in `button-group/button-group.ts` for why.\n */\nexport interface KsTimeValue {\n hours: number;\n minutes: number;\n seconds?: number;\n period?: 'AM' | 'PM';\n}\n\n/** DOM shape of the real `<ks-timepicker>` custom element, typed for the wrapper. */\ntype KsTimepickerElement = HTMLElement & {\n label: string;\n placeholder: string;\n use12Hour: boolean;\n showSeconds: boolean;\n disabled: boolean;\n error: string;\n value: KsTimeValue | null;\n writeValue(val: KsTimeValue | null): Promise<void>;\n};\n\n/**\n * Angular wrapper around the `<ks-timepicker>` Stencil custom element.\n *\n * Two-way binding is via `ControlValueAccessor` — use `[(ngModel)]` or\n * `formControlName`. See `chips/chips.ts` for the full rationale (the\n * native `valueChange` event can't be reused verbatim as an Angular output\n * name without a double-fire risk).\n *\n * For plain (non-forms) two-way use, bind explicitly instead:\n * `[value]=\"t\" (ksValueChange)=\"t = $event\"`.\n *\n * `template: ''` — no slot is exposed on `<ks-timepicker>` itself.\n */\n@Component({\n selector: 'ks-timepicker',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: KsTimepickerComponent, multi: true }],\n})\nexport class KsTimepickerComponent implements ControlValueAccessor {\n private readonly el: KsTimepickerElement;\n private onChange: (value: KsTimeValue) => void = () => {};\n private onTouched: () => void = () => {};\n\n /** Field label */\n readonly label = input('');\n\n /** Placeholder */\n readonly placeholder = input('Select time…');\n\n /** Use 12-hour clock (AM/PM) */\n readonly use12Hour = input(false);\n\n /** Show seconds */\n readonly showSeconds = input(false);\n\n /** Disabled */\n readonly disabled = input(false);\n\n /** Error message */\n readonly error = input('');\n\n /** Initial/controlled value for plain (non-forms) usage. Prefer `[(ngModel)]` / `formControlName` when inside a form. */\n readonly value = model<KsTimeValue | null>(null);\n\n /** Emits the confirmed time. From the native `valueChange` event. */\n readonly ksValueChange = output<KsTimeValue>();\n\n constructor(ref: ElementRef<KsTimepickerElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.label = this.label()));\n effect(() => (this.el.placeholder = this.placeholder()));\n effect(() => (this.el.use12Hour = this.use12Hour()));\n effect(() => (this.el.showSeconds = this.showSeconds()));\n effect(() => (this.el.disabled = this.disabled()));\n effect(() => (this.el.error = this.error()));\n effect(() => void this.el.writeValue(this.value()));\n\n const onNativeValueChange = (event: Event): void => {\n const detail = (event as CustomEvent<KsTimeValue>).detail;\n this.ksValueChange.emit(detail);\n this.onChange(detail);\n this.onTouched();\n };\n this.el.addEventListener('valueChange', onNativeValueChange);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('valueChange', onNativeValueChange));\n }\n\n writeValue(value: KsTimeValue | null): void {\n void this.el.writeValue(value ?? null);\n }\n\n registerOnChange(fn: (value: KsTimeValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.el.disabled = isDisabled;\n }\n}\n","// Side-effect import: registers the `ks-dropdown` tag — see\n// `button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-dropdown.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Mirrors `KsDropdownOption` exported by\n * `core/src/components/Dropdowns/dropdown/dropdown.tsx`. Duplicated\n * locally — see the note in `button-group/button-group.ts` for why.\n */\nexport interface KsDropdownOption {\n value: string | number;\n label: string;\n icon?: string;\n disabled?: boolean;\n}\n\nexport type KsDropdownValue = (string | number)[] | string | number;\n\n/** DOM shape of the real `<ks-dropdown>` custom element, typed for the wrapper. */\ntype KsDropdownElement = HTMLElement & {\n options: KsDropdownOption[];\n placeholder: string;\n multi: boolean;\n searchable: boolean;\n label: string;\n disabled: boolean;\n selectedValues: (string | number)[];\n writeValue(val: (string | number) | (string | number)[] | null): Promise<void>;\n};\n\n/**\n * Angular wrapper around the `<ks-dropdown>` Stencil custom element.\n *\n * Two-way binding is via `ControlValueAccessor` — use `[(ngModel)]` or\n * `formControlName`. See `chips/chips.ts` for the full rationale (the\n * native `selectedValuesChange` event can't be reused verbatim as an\n * Angular output name without a double-fire risk).\n *\n * For plain (non-forms) two-way use, bind explicitly instead:\n * `[selectedValues]=\"v\" (ksSelectedValuesChange)=\"v = $event\"`.\n *\n * `template: ''` — the option list / search box in the Stencil render are\n * projected into the shared, internal `<ks-overlay-field>` slot; there is\n * no slot exposed on `<ks-dropdown>` itself for a consumer to project into.\n */\n@Component({\n selector: 'ks-dropdown',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: KsDropdownComponent, multi: true }],\n})\nexport class KsDropdownComponent implements ControlValueAccessor {\n private readonly el: KsDropdownElement;\n private onChange: (value: KsDropdownValue) => void = () => {};\n private onTouched: () => void = () => {};\n\n /** Full list of options */\n readonly options = input<KsDropdownOption[]>([]);\n\n /** Placeholder text shown when nothing is selected */\n readonly placeholder = input('Select…');\n\n /** Allow selecting multiple options */\n readonly multi = input(false);\n\n /** Show a search box inside the dropdown */\n readonly searchable = input(false);\n\n /** Field label */\n readonly label = input('');\n\n /** Disabled state */\n readonly disabled = input(false);\n\n /** Initial/controlled selected value(s) for plain (non-forms) usage. Prefer `[(ngModel)]` / `formControlName` when inside a form. */\n readonly selectedValues = input<(string | number)[]>([]);\n\n /** Emits the new selection — an array when `multi`, otherwise a single value. From the native `selectedValuesChange` event. */\n readonly ksSelectedValuesChange = output<KsDropdownValue>();\n\n constructor(ref: ElementRef<KsDropdownElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.options = this.options()));\n effect(() => (this.el.placeholder = this.placeholder()));\n effect(() => (this.el.multi = this.multi()));\n effect(() => (this.el.searchable = this.searchable()));\n effect(() => (this.el.label = this.label()));\n effect(() => (this.el.disabled = this.disabled()));\n effect(() => void this.el.writeValue(this.selectedValues()));\n\n const onNativeSelectedValuesChange = (event: Event): void => {\n const detail = (event as CustomEvent<KsDropdownValue>).detail;\n this.ksSelectedValuesChange.emit(detail);\n this.onChange(detail);\n this.onTouched();\n };\n this.el.addEventListener('selectedValuesChange', onNativeSelectedValuesChange);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('selectedValuesChange', onNativeSelectedValuesChange));\n }\n\n writeValue(value: KsDropdownValue | null): void {\n void this.el.writeValue(value ?? null);\n }\n\n registerOnChange(fn: (value: KsDropdownValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.el.disabled = isDisabled;\n }\n}\n","// Side-effect import: registers the `ks-listbox` tag — see\n// `button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-listbox.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Mirrors `KsListBoxOption` exported by\n * `core/src/components/Dropdowns/listbox/listbox.tsx`. Duplicated locally\n * — see the note in `button-group/button-group.ts` for why.\n */\nexport interface KsListBoxOption {\n value: string | number;\n label: string;\n icon?: string;\n disabled?: boolean;\n /** Optional group key — used when `groupBy` is enabled */\n group?: string;\n}\n\nexport type KsListBoxValue = (string | number)[] | string | number;\n\n/** DOM shape of the real `<ks-listbox>` custom element, typed for the wrapper. */\ntype KsListBoxElement = HTMLElement & {\n options: KsListBoxOption[];\n multi: boolean;\n searchable: boolean;\n disabled: boolean;\n selected: (string | number)[];\n groupBy: boolean;\n writeValue(val: (string | number) | (string | number)[] | null): Promise<void>;\n};\n\n/**\n * Angular wrapper around the `<ks-listbox>` Stencil custom element.\n *\n * Two-way binding is via `ControlValueAccessor` — use `[(ngModel)]` or\n * `formControlName`. See `chips/chips.ts` for the full rationale (the\n * native `selectedChange` event can't be reused verbatim as an Angular\n * output name without a double-fire risk).\n *\n * For plain (non-forms) two-way use, bind explicitly instead:\n * `[selected]=\"v\" (ksSelectedChange)=\"v = $event\"`.\n *\n * `template: ''` — no slot is exposed on `<ks-listbox>` itself.\n */\n@Component({\n selector: 'ks-listbox',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: KsListBoxComponent, multi: true }],\n})\nexport class KsListBoxComponent implements ControlValueAccessor {\n private readonly el: KsListBoxElement;\n private onChange: (value: KsListBoxValue) => void = () => {};\n private onTouched: () => void = () => {};\n\n /** Options list */\n readonly options = input<KsListBoxOption[]>([]);\n\n /** Allow multi-select */\n readonly multi = input(false);\n\n /** Show search box */\n readonly searchable = input(false);\n\n /** Disabled */\n readonly disabled = input(false);\n\n /** Enable group headers using the `group` field on each option */\n readonly groupBy = input(false);\n\n /** Initial/controlled selected value(s) for plain (non-forms) usage. Prefer `[(ngModel)]` / `formControlName` when inside a form. */\n readonly selected = input<(string | number)[]>([]);\n\n /** Emits the new selection — an array when `multi`, otherwise a single value. From the native `selectedChange` event. */\n readonly ksSelectedChange = output<KsListBoxValue>();\n\n constructor(ref: ElementRef<KsListBoxElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.options = this.options()));\n effect(() => (this.el.multi = this.multi()));\n effect(() => (this.el.searchable = this.searchable()));\n effect(() => (this.el.disabled = this.disabled()));\n effect(() => (this.el.groupBy = this.groupBy()));\n effect(() => void this.el.writeValue(this.selected()));\n\n const onNativeSelectedChange = (event: Event): void => {\n const detail = (event as CustomEvent<KsListBoxValue>).detail;\n this.ksSelectedChange.emit(detail);\n this.onChange(detail);\n this.onTouched();\n };\n this.el.addEventListener('selectedChange', onNativeSelectedChange);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('selectedChange', onNativeSelectedChange));\n }\n\n writeValue(value: KsListBoxValue | null): void {\n void this.el.writeValue(value ?? null);\n }\n\n registerOnChange(fn: (value: KsListBoxValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.el.disabled = isDisabled;\n }\n}\n","// Side-effect import: registers the `ks-checkbox` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-checkbox.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Mirrors `KsCheckboxOption` exported by\n * `core/src/components/Inputs/checkbox/checkbox.tsx`. Duplicated locally\n * — see the note in `Buttons/button-group/button-group.ts` for why.\n */\nexport interface KsCheckboxOption {\n value: string;\n label?: string;\n disabled?: boolean;\n checked?: boolean;\n}\n\n/** DOM shape of the real `<ks-checkbox>` custom element, typed for the wrapper. */\ntype KsCheckboxElement = HTMLElement & {\n label: string;\n options: KsCheckboxOption[];\n disabled: boolean;\n checked: boolean;\n selected: string[];\n writeValue(val: unknown): Promise<void>;\n};\n\n/**\n * Angular wrapper around the `<ks-checkbox>` Stencil custom element.\n *\n * Supports two modes, mirroring the Stencil source:\n * - **Single** mode (no `options`): two-way bind `checked` (boolean).\n * - **Group** mode (`options` set): two-way bind `selected` (string[]).\n *\n * Two-way binding for either mode is via `ControlValueAccessor` — use\n * `[(ngModel)]`/`formControlName` and it works for whichever mode is\n * active (see `Buttons/chips/chips.ts` for the full rationale on why CVA\n * is used instead of reusing a native event name as an Angular output).\n *\n * For plain (non-forms) two-way use, bind explicitly instead:\n * `[checked]=\"c\" (ksCheckedChange)=\"c = $event\"` or\n * `[selected]=\"s\" (ksSelectedChange)=\"s = $event\"`.\n *\n * `template: ''` — no `<slot>` in the wrapped Stencil render.\n */\n@Component({\n selector: 'ks-checkbox',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: KsCheckboxComponent, multi: true }],\n})\nexport class KsCheckboxComponent implements ControlValueAccessor {\n private readonly el: KsCheckboxElement;\n private onChange: (value: unknown) => void = () => {};\n private onTouched: () => void = () => {};\n\n /** Label shown next to the control (single mode) */\n readonly label = input('');\n\n /** Optional set of multiple options (multi-select / group mode) */\n readonly options = input<KsCheckboxOption[]>([]);\n\n /** Disabled state */\n readonly disabled = input(false);\n\n /** Single mode: initial/controlled checked value. Prefer `[(ngModel)]` / `formControlName`. */\n readonly checked = input(false);\n\n /** Group mode: initial/controlled selected values. Prefer `[(ngModel)]` / `formControlName`. */\n readonly selected = input<string[]>([]);\n\n /** Emits whenever `checked` changes (single mode). From the native `checkedChange` event. */\n readonly ksCheckedChange = output<boolean>();\n\n /** Emits whenever `selected` changes (group mode). From the native `selectedChange` event. */\n readonly ksSelectedChange = output<string[]>();\n\n constructor(ref: ElementRef<KsCheckboxElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.label = this.label()));\n effect(() => (this.el.options = this.options()));\n effect(() => (this.el.disabled = this.disabled()));\n effect(() => (this.el.checked = this.checked()));\n effect(() => (this.el.selected = this.selected()));\n\n const onNativeCheckedChange = (event: Event): void => {\n const detail = (event as CustomEvent<boolean>).detail;\n this.ksCheckedChange.emit(detail);\n this.onChange(detail);\n this.onTouched();\n };\n const onNativeSelectedChange = (event: Event): void => {\n const detail = (event as CustomEvent<string[]>).detail;\n this.ksSelectedChange.emit(detail);\n this.onChange(detail);\n this.onTouched();\n };\n this.el.addEventListener('checkedChange', onNativeCheckedChange);\n this.el.addEventListener('selectedChange', onNativeSelectedChange);\n inject(DestroyRef).onDestroy(() => {\n this.el.removeEventListener('checkedChange', onNativeCheckedChange);\n this.el.removeEventListener('selectedChange', onNativeSelectedChange);\n });\n }\n\n /** `ControlValueAccessor` — called by `ngModel`/`formControl` to push a value in (either mode). */\n writeValue(value: unknown): void {\n void this.el.writeValue(value);\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.el.disabled = isDisabled;\n }\n}\n","// Side-effect import: registers the `ks-colour-picker` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-colour-picker.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/** Mirrors the inline union used by `core/src/components/Inputs/colour-picker/colour-picker.tsx`. */\nexport type KsColourPickerVariant = 'input' | 'swatch';\n\nconst DEFAULT_SWATCHES = ['#ef4444', '#f97316', '#eab308', '#22c55e', '#3b82f6', '#8b5cf6', '#ec4899', '#64748b', '#000000', '#ffffff'];\n\n/** DOM shape of the real `<ks-colour-picker>` custom element, typed for the wrapper. */\ntype KsColourPickerElement = HTMLElement & {\n label: string;\n variant: KsColourPickerVariant;\n swatches: string[];\n disabled: boolean;\n value: string;\n writeValue(val: string): Promise<void>;\n};\n\n/**\n * Angular wrapper around the `<ks-colour-picker>` Stencil custom element.\n *\n * Two-way binding is via `ControlValueAccessor` — use `[(ngModel)]` or\n * `formControlName`. See `Buttons/chips/chips.ts` for the full rationale\n * (the native `valueChange` event can't be reused verbatim as an Angular\n * output name without a double-fire risk).\n *\n * For plain (non-forms) two-way use, bind explicitly instead:\n * `[value]=\"hex\" (ksValueChange)=\"hex = $event\"`.\n *\n * `template: ''` — the panel is rendered into the internal\n * `<ks-overlay-field>`; there is no slot on `<ks-colour-picker>` itself.\n */\n@Component({\n selector: 'ks-colour-picker',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: KsColourPickerComponent, multi: true }],\n})\nexport class KsColourPickerComponent implements ControlValueAccessor {\n private readonly el: KsColourPickerElement;\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n /** Field label */\n readonly label = input('');\n\n /** Picker UI variant */\n readonly variant = input<KsColourPickerVariant>('input');\n\n /** Preset swatch colours */\n readonly swatches = input<string[]>(DEFAULT_SWATCHES);\n\n /** Disabled */\n readonly disabled = input(false);\n\n /** Initial/controlled hex value. Prefer `[(ngModel)]` / `formControlName`. */\n readonly value = input('#3b82f6');\n\n /** Emits the newly-picked hex colour. From the native `valueChange` event. */\n readonly ksValueChange = output<string>();\n\n constructor(ref: ElementRef<KsColourPickerElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.label = this.label()));\n effect(() => (this.el.variant = this.variant()));\n effect(() => (this.el.swatches = this.swatches()));\n effect(() => (this.el.disabled = this.disabled()));\n effect(() => void this.el.writeValue(this.value()));\n\n const onNativeValueChange = (event: Event): void => {\n const detail = (event as CustomEvent<string>).detail;\n this.ksValueChange.emit(detail);\n this.onChange(detail);\n this.onTouched();\n };\n this.el.addEventListener('valueChange', onNativeValueChange);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('valueChange', onNativeValueChange));\n }\n\n writeValue(value: string): void {\n void this.el.writeValue(value ?? '#3b82f6');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.el.disabled = isDisabled;\n }\n}\n","// Side-effect import: registers the `ks-input` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-input.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, model, output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { KsSize } from '@kraft.stitch/core';\n\n/** Mirrors `KsInputType` exported by `core/src/components/Inputs/input/input.tsx`. */\nexport type KsInputType = 'text' | 'password' | 'email' | 'number' | 'search' | 'tel' | 'url';\n\n/** DOM shape of the real `<ks-input>` custom element, typed for the wrapper. */\ntype KsInputElement = HTMLElement & {\n type: KsInputType;\n placeholder: string;\n label: string;\n hint: string;\n error: string;\n prefixIcon: string;\n suffixIcon: string;\n size: KsSize;\n value: string;\n disabled: boolean;\n};\n\n/**\n * Angular wrapper around the `<ks-input>` Stencil custom element.\n *\n * Two-way binding is via `ControlValueAccessor` — use `[(ngModel)]` or\n * `formControlName`. `<ks-input>` has no `@Method() writeValue()` of its\n * own (unlike `chips`/`dropdown`/…), so this wrapper's `writeValue` sets\n * `el.value` directly instead of delegating to a Stencil method.\n *\n * The native `ksBlur` event is already prefixed `ks` by the Stencil\n * author, so re-using that exact name here as the Angular output would\n * still hit the double-fire collision described in `Buttons/button.ts`\n * (Ivy's `tNode.outputs` match is purely by literal name, `ks`-prefix or\n * not) — hence `ksBlurred` (distinct spelling) instead.\n *\n * For plain (non-forms) two-way use, bind explicitly instead:\n * `[value]=\"v\" (ksValueChange)=\"v = $event\"`.\n *\n * `template: ''` — no `<slot>` in the wrapped Stencil render.\n */\n@Component({\n selector: 'ks-input',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: KsInputComponent, multi: true }],\n})\nexport class KsInputComponent implements ControlValueAccessor {\n private readonly el: KsInputElement;\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n /** HTML input type */\n readonly type = input<KsInputType>('text');\n\n /** Placeholder text */\n readonly placeholder = input('');\n\n /** Field label */\n readonly label = input('');\n\n /** Helper / hint text shown below the input */\n readonly hint = input('');\n\n /** Error message — also triggers the error state */\n readonly error = input('');\n\n /** Leading icon class (e.g. Material Symbol name) */\n readonly prefixIcon = input('');\n\n /** Trailing icon class */\n readonly suffixIcon = input('');\n\n /** Size variant */\n readonly size = input<KsSize>('md');\n\n /** Initial/controlled value. Prefer `[(ngModel)]` / `formControlName`. */\n readonly value = model('');\n\n /** Disabled state */\n readonly disabled = input(false);\n\n /** Emits the newly-typed value. From the native `valueChange` event. */\n readonly ksValueChange = output<string>();\n\n /** Emitted on native blur (mirrors Angular's onTouched callback). From the native `ksBlur` event. */\n readonly ksBlurred = output<void>();\n\n constructor(ref: ElementRef<KsInputElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.type = this.type()));\n effect(() => (this.el.placeholder = this.placeholder()));\n effect(() => (this.el.label = this.label()));\n effect(() => (this.el.hint = this.hint()));\n effect(() => (this.el.error = this.error()));\n effect(() => (this.el.prefixIcon = this.prefixIcon()));\n effect(() => (this.el.suffixIcon = this.suffixIcon()));\n effect(() => (this.el.size = this.size()));\n effect(() => (this.el.disabled = this.disabled()));\n effect(() => (this.el.value = this.value()));\n\n const onNativeValueChange = (event: Event): void => {\n const detail = (event as CustomEvent<string>).detail;\n this.ksValueChange.emit(detail);\n this.onChange(detail);\n };\n const onNativeBlur = (): void => {\n this.ksBlurred.emit();\n this.onTouched();\n };\n this.el.addEventListener('valueChange', onNativeValueChange);\n this.el.addEventListener('ksBlur', onNativeBlur);\n inject(DestroyRef).onDestroy(() => {\n this.el.removeEventListener('valueChange', onNativeValueChange);\n this.el.removeEventListener('ksBlur', onNativeBlur);\n });\n }\n\n writeValue(value: string): void {\n this.el.value = value ?? '';\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.el.disabled = isDisabled;\n }\n}\n","// Side-effect import: registers the `ks-otp-input` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-otp-input.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/** DOM shape of the real `<ks-otp-input>` custom element, typed for the wrapper. */\ntype KsOtpInputElement = HTMLElement & {\n length: number;\n inputType: 'number' | 'text';\n label: string;\n error: string;\n masked: boolean;\n disabled: boolean;\n value: string;\n writeValue(val: string): Promise<void>;\n};\n\n/**\n * Angular wrapper around the `<ks-otp-input>` Stencil custom element.\n *\n * Two-way binding is via `ControlValueAccessor` — use `[(ngModel)]` or\n * `formControlName`. See `Buttons/chips/chips.ts` for the full rationale.\n *\n * For plain (non-forms) two-way use, bind explicitly instead:\n * `[value]=\"v\" (ksValueChange)=\"v = $event\"`.\n *\n * `template: ''` — no `<slot>` in the wrapped Stencil render.\n */\n@Component({\n selector: 'ks-otp-input',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: KsOtpInputComponent, multi: true }],\n})\nexport class KsOtpInputComponent implements ControlValueAccessor {\n private readonly el: KsOtpInputElement;\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n /** Number of digits */\n readonly length = input(6);\n\n /** Input type: 'number' | 'text' */\n readonly inputType = input<'number' | 'text'>('number');\n\n /** Field label */\n readonly label = input('');\n\n /** Error message */\n readonly error = input('');\n\n /** Mask the input (like a password) */\n readonly masked = input(false);\n\n /** Disabled */\n readonly disabled = input(false);\n\n /** Initial/controlled value. Prefer `[(ngModel)]` / `formControlName`. */\n readonly value = input('');\n\n /** Emits whenever `value` changes. From the native `valueChange` event. */\n readonly ksValueChange = output<string>();\n\n /** Emits the full OTP string when all digits are filled. From the native `completed` event. */\n readonly ksCompleted = output<string>();\n\n constructor(ref: ElementRef<KsOtpInputElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.length = this.length()));\n effect(() => (this.el.inputType = this.inputType()));\n effect(() => (this.el.label = this.label()));\n effect(() => (this.el.error = this.error()));\n effect(() => (this.el.masked = this.masked()));\n effect(() => (this.el.disabled = this.disabled()));\n effect(() => void this.el.writeValue(this.value()));\n\n const onNativeValueChange = (event: Event): void => {\n const detail = (event as CustomEvent<string>).detail;\n this.ksValueChange.emit(detail);\n this.onChange(detail);\n this.onTouched();\n };\n const onNativeCompleted = (event: Event): void => {\n this.ksCompleted.emit((event as CustomEvent<string>).detail);\n };\n this.el.addEventListener('valueChange', onNativeValueChange);\n this.el.addEventListener('completed', onNativeCompleted);\n inject(DestroyRef).onDestroy(() => {\n this.el.removeEventListener('valueChange', onNativeValueChange);\n this.el.removeEventListener('completed', onNativeCompleted);\n });\n }\n\n writeValue(value: string): void {\n void this.el.writeValue(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.el.disabled = isDisabled;\n }\n}\n","// Side-effect import: registers the `ks-radio` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-radio.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { KsBaseVariant, KsSize } from '@kraft.stitch/core';\n\n/**\n * Mirrors `KsRadioOption` exported by\n * `core/src/components/Inputs/radio/radio.tsx`. Duplicated locally — see\n * the note in `Buttons/button-group/button-group.ts` for why.\n */\nexport interface KsRadioOption {\n value: string;\n label?: string;\n disabled?: boolean;\n}\n\n/** DOM shape of the real `<ks-radio>` custom element, typed for the wrapper. */\ntype KsRadioElement = HTMLElement & {\n options: KsRadioOption[];\n label: string;\n name: string;\n variant: KsBaseVariant;\n size: KsSize;\n disabled: boolean;\n value: string;\n writeValue(val: string): Promise<void>;\n};\n\n/**\n * Angular wrapper around the `<ks-radio>` Stencil custom element.\n *\n * Two-way binding is via `ControlValueAccessor` — use `[(ngModel)]` or\n * `formControlName`. See `Buttons/chips/chips.ts` for the full rationale.\n *\n * For plain (non-forms) two-way use, bind explicitly instead:\n * `[value]=\"v\" (ksValueChange)=\"v = $event\"`.\n *\n * `template: ''` — no `<slot>` in the wrapped Stencil render.\n */\n@Component({\n selector: 'ks-radio',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: KsRadioComponent, multi: true }],\n})\nexport class KsRadioComponent implements ControlValueAccessor {\n private readonly el: KsRadioElement;\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n /** List of options — the component renders a radio group */\n readonly options = input<KsRadioOption[]>([]);\n\n /** Label shown above the group */\n readonly label = input('');\n\n /** Name attribute shared across all radio inputs in the group */\n readonly name = input('ks-radio');\n\n /** Colour variant applied to the selected indicator */\n readonly variant = input<KsBaseVariant>('brand');\n\n /** Size variant — affects label text size */\n readonly size = input<KsSize>('md');\n\n /** Disabled state */\n readonly disabled = input(false);\n\n /** Initial/controlled selected value. Prefer `[(ngModel)]` / `formControlName`. */\n readonly value = input('');\n\n /** Emits the selected value on every change. From the native `valueChange` event. */\n readonly ksValueChange = output<string>();\n\n constructor(ref: ElementRef<KsRadioElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.options = this.options()));\n effect(() => (this.el.label = this.label()));\n effect(() => (this.el.name = this.name()));\n effect(() => (this.el.variant = this.variant()));\n effect(() => (this.el.size = this.size()));\n effect(() => (this.el.disabled = this.disabled()));\n effect(() => void this.el.writeValue(this.value()));\n\n const onNativeValueChange = (event: Event): void => {\n const detail = (event as CustomEvent<string>).detail;\n this.ksValueChange.emit(detail);\n this.onChange(detail);\n this.onTouched();\n };\n this.el.addEventListener('valueChange', onNativeValueChange);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('valueChange', onNativeValueChange));\n }\n\n writeValue(value: string): void {\n void this.el.writeValue(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.el.disabled = isDisabled;\n }\n}\n","// Side-effect import: registers the `ks-rating` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-rating.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { KsBaseSize } from '@kraft.stitch/core';\n\n/** DOM shape of the real `<ks-rating>` custom element, typed for the wrapper. */\ntype KsRatingElement = HTMLElement & {\n max: number;\n size: KsBaseSize;\n readOnly: boolean;\n showLabel: boolean;\n label: string;\n disabled: boolean;\n value: number;\n writeValue(val: number): Promise<void>;\n};\n\n/**\n * Angular wrapper around the `<ks-rating>` Stencil custom element.\n *\n * Two-way binding is via `ControlValueAccessor` — use `[(ngModel)]` or\n * `formControlName`. See `Buttons/chips/chips.ts` for the full rationale.\n *\n * For plain (non-forms) two-way use, bind explicitly instead:\n * `[value]=\"v\" (ksValueChange)=\"v = $event\"`.\n *\n * `template: ''` — no `<slot>` in the wrapped Stencil render.\n */\n@Component({\n selector: 'ks-rating',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: KsRatingComponent, multi: true }],\n})\nexport class KsRatingComponent implements ControlValueAccessor {\n private readonly el: KsRatingElement;\n private onChange: (value: number) => void = () => {};\n private onTouched: () => void = () => {};\n\n /** Total number of stars */\n readonly max = input(5);\n\n /** Size */\n readonly size = input<KsBaseSize>('md');\n\n /** Read-only / non-interactive */\n readonly readOnly = input(false);\n\n /** Show numeric label */\n readonly showLabel = input(false);\n\n /** Field label */\n readonly label = input('');\n\n /** Disabled */\n readonly disabled = input(false);\n\n /** Initial/controlled value. Prefer `[(ngModel)]` / `formControlName`. */\n readonly value = input(0);\n\n /** Emits the newly-picked rating. From the native `valueChange` event. */\n readonly ksValueChange = output<number>();\n\n constructor(ref: ElementRef<KsRatingElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.max = this.max()));\n effect(() => (this.el.size = this.size()));\n effect(() => (this.el.readOnly = this.readOnly()));\n effect(() => (this.el.showLabel = this.showLabel()));\n effect(() => (this.el.label = this.label()));\n effect(() => (this.el.disabled = this.disabled()));\n effect(() => void this.el.writeValue(this.value()));\n\n const onNativeValueChange = (event: Event): void => {\n const detail = (event as CustomEvent<number>).detail;\n this.ksValueChange.emit(detail);\n this.onChange(detail);\n this.onTouched();\n };\n this.el.addEventListener('valueChange', onNativeValueChange);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('valueChange', onNativeValueChange));\n }\n\n writeValue(value: number): void {\n void this.el.writeValue(value ?? 0);\n }\n\n registerOnChange(fn: (value: number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.el.disabled = isDisabled;\n }\n}\n","// Side-effect import: registers the `ks-slider` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-slider.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/** DOM shape of the real `<ks-slider>` custom element, typed for the wrapper. */\ntype KsSliderElement = HTMLElement & {\n min: number;\n max: number;\n step: number;\n showTooltip: boolean;\n showLabels: boolean;\n label: string;\n disabled: boolean;\n value: number;\n writeValue(val: number): Promise<void>;\n};\n\n/**\n * Angular wrapper around the `<ks-slider>` Stencil custom element.\n *\n * Two-way binding is via `ControlValueAccessor` — use `[(ngModel)]` or\n * `formControlName`. See `Buttons/chips/chips.ts` for the full rationale.\n * The native `ksBlur` event (already `ks`-prefixed by the Stencil author)\n * is re-exposed as `ksBlurred` — see `Inputs/input/input.ts` for why the\n * literal name can't be reused.\n *\n * For plain (non-forms) two-way use, bind explicitly instead:\n * `[value]=\"v\" (ksValueChange)=\"v = $event\"`.\n *\n * `template: ''` — no `<slot>` in the wrapped Stencil render.\n */\n@Component({\n selector: 'ks-slider',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: KsSliderComponent, multi: true }],\n})\nexport class KsSliderComponent implements ControlValueAccessor {\n private readonly el: KsSliderElement;\n private onChange: (value: number) => void = () => {};\n private onTouched: () => void = () => {};\n\n /** Minimum value */\n readonly min = input(0);\n\n /** Maximum value */\n readonly max = input(100);\n\n /** Step increment */\n readonly step = input(1);\n\n /** Show value tooltip */\n readonly showTooltip = input(true);\n\n /** Show min/max labels */\n readonly showLabels = input(false);\n\n /** Field label */\n readonly label = input('');\n\n /** Disabled state */\n readonly disabled = input(false);\n\n /** Initial/controlled value. Prefer `[(ngModel)]` / `formControlName`. */\n readonly value = input(0);\n\n /** Emits the newly-picked value. From the native `valueChange` event. */\n readonly ksValueChange = output<number>();\n\n /** Emitted on native blur. From the native `ksBlur` event. */\n readonly ksBlurred = output<void>();\n\n constructor(ref: ElementRef<KsSliderElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.min = this.min()));\n effect(() => (this.el.max = this.max()));\n effect(() => (this.el.step = this.step()));\n effect(() => (this.el.showTooltip = this.showTooltip()));\n effect(() => (this.el.showLabels = this.showLabels()));\n effect(() => (this.el.label = this.label()));\n effect(() => (this.el.disabled = this.disabled()));\n effect(() => void this.el.writeValue(this.value()));\n\n const onNativeValueChange = (event: Event): void => {\n const detail = (event as CustomEvent<number>).detail;\n this.ksValueChange.emit(detail);\n this.onChange(detail);\n };\n const onNativeBlur = (): void => {\n this.ksBlurred.emit();\n this.onTouched();\n };\n this.el.addEventListener('valueChange', onNativeValueChange);\n this.el.addEventListener('ksBlur', onNativeBlur);\n inject(DestroyRef).onDestroy(() => {\n this.el.removeEventListener('valueChange', onNativeValueChange);\n this.el.removeEventListener('ksBlur', onNativeBlur);\n });\n }\n\n writeValue(value: number): void {\n void this.el.writeValue(value ?? 0);\n }\n\n registerOnChange(fn: (value: number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.el.disabled = isDisabled;\n }\n}\n","// Side-effect import: registers the `ks-switch` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-switch.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { KsBaseVariant } from '@kraft.stitch/core';\n\n/** DOM shape of the real `<ks-switch>` custom element, typed for the wrapper. */\ntype KsSwitchElement = HTMLElement & {\n label: string;\n variant: KsBaseVariant;\n disabled: boolean;\n checked: boolean;\n labelPosition: 'left' | 'right';\n formDisabled: boolean;\n setDisabledState(isDisabled: boolean): Promise<void>;\n};\n\n/**\n * Angular wrapper around the `<ks-switch>` Stencil custom element.\n *\n * Two-way binding is via `ControlValueAccessor` — use `[(ngModel)]` or\n * `formControlName`. Unlike most other form-control wrappers here,\n * `<ks-switch>` has no `@Method() writeValue()`, so `writeValue` below\n * sets `el.checked` directly; it DOES expose a real\n * `@Method() setDisabledState()` (mirroring CVA exactly), which\n * `setDisabledState` below delegates to instead of setting a plain prop.\n *\n * For plain (non-forms) two-way use, bind explicitly instead:\n * `[checked]=\"c\" (ksCheckedChange)=\"c = $event\"`.\n *\n * `template: ''` — no `<slot>` in the wrapped Stencil render.\n */\n@Component({\n selector: 'ks-switch',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: KsSwitchComponent, multi: true }],\n})\nexport class KsSwitchComponent implements ControlValueAccessor {\n private readonly el: KsSwitchElement;\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n /** Label text */\n readonly label = input('');\n\n /** Colour variant */\n readonly variant = input<KsBaseVariant>('brand');\n\n /** Disabled */\n readonly disabled = input(false);\n\n /** Initial/controlled checked value. Prefer `[(ngModel)]` / `formControlName`. */\n readonly checked = input(false);\n\n /** Label position relative to the switch track */\n readonly labelPosition = input<'left' | 'right'>('left');\n\n /** Emits whenever `checked` changes. From the native `checkedChange` event. */\n readonly ksCheckedChange = output<boolean>();\n\n constructor(ref: ElementRef<KsSwitchElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.label = this.label()));\n effect(() => (this.el.variant = this.variant()));\n effect(() => (this.el.disabled = this.disabled()));\n effect(() => (this.el.checked = this.checked()));\n effect(() => (this.el.labelPosition = this.labelPosition()));\n\n const onNativeCheckedChange = (event: Event): void => {\n const detail = (event as CustomEvent<boolean>).detail;\n this.ksCheckedChange.emit(detail);\n this.onChange(detail);\n this.onTouched();\n };\n this.el.addEventListener('checkedChange', onNativeCheckedChange);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('checkedChange', onNativeCheckedChange));\n }\n\n writeValue(value: boolean): void {\n this.el.checked = value ?? false;\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /** Delegates to `<ks-switch>`'s own `@Method() setDisabledState()`. */\n setDisabledState(isDisabled: boolean): void {\n void this.el.setDisabledState(isDisabled);\n }\n}\n","// Side-effect import: registers the `ks-textarea` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-textarea.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/** DOM shape of the real `<ks-textarea>` custom element, typed for the wrapper. */\ntype KsTextareaElement = HTMLElement & {\n label: string;\n placeholder: string;\n rows: number;\n maxLength: number;\n showCounter: boolean;\n autoResize: boolean;\n disabled: boolean;\n error: string;\n hint: string;\n value: string;\n};\n\n/**\n * Angular wrapper around the `<ks-textarea>` Stencil custom element.\n *\n * Two-way binding is via `ControlValueAccessor` (see `Inputs/input/input.ts`\n * for the equivalent no-`writeValue()`-method pattern this follows —\n * `writeValue` here sets `el.value` directly). The native `ksBlur` event\n * is re-exposed as `ksBlurred` for the same reason.\n *\n * For plain (non-forms) two-way use, bind explicitly instead:\n * `[value]=\"v\" (ksValueChange)=\"v = $event\"`.\n *\n * `template: ''` — no `<slot>` in the wrapped Stencil render.\n */\n@Component({\n selector: 'ks-textarea',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: KsTextareaComponent, multi: true }],\n})\nexport class KsTextareaComponent implements ControlValueAccessor {\n private readonly el: KsTextareaElement;\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n /** Textarea label */\n readonly label = input('');\n\n /** Placeholder text */\n readonly placeholder = input('');\n\n /** Number of visible rows */\n readonly rows = input(3);\n\n /** Maximum character count */\n readonly maxLength = input(500);\n\n /** Show character counter */\n readonly showCounter = input(false);\n\n /** Auto-resize based on content */\n readonly autoResize = input(false);\n\n /** Disabled state */\n readonly disabled = input(false);\n\n /** Error state */\n readonly error = input('');\n\n /** Helper/error text */\n readonly hint = input('');\n\n /** Initial/controlled value. Prefer `[(ngModel)]` / `formControlName`. */\n readonly value = input('');\n\n /** Emits the newly-typed value. From the native `valueChange` event. */\n readonly ksValueChange = output<string>();\n\n /** Emitted on native blur. From the native `ksBlur` event. */\n readonly ksBlurred = output<void>();\n\n constructor(ref: ElementRef<KsTextareaElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.label = this.label()));\n effect(() => (this.el.placeholder = this.placeholder()));\n effect(() => (this.el.rows = this.rows()));\n effect(() => (this.el.maxLength = this.maxLength()));\n effect(() => (this.el.showCounter = this.showCounter()));\n effect(() => (this.el.autoResize = this.autoResize()));\n effect(() => (this.el.disabled = this.disabled()));\n effect(() => (this.el.error = this.error()));\n effect(() => (this.el.hint = this.hint()));\n effect(() => (this.el.value = this.value()));\n\n const onNativeValueChange = (event: Event): void => {\n const detail = (event as CustomEvent<string>).detail;\n this.ksValueChange.emit(detail);\n this.onChange(detail);\n };\n const onNativeBlur = (): void => {\n this.ksBlurred.emit();\n this.onTouched();\n };\n this.el.addEventListener('valueChange', onNativeValueChange);\n this.el.addEventListener('ksBlur', onNativeBlur);\n inject(DestroyRef).onDestroy(() => {\n this.el.removeEventListener('valueChange', onNativeValueChange);\n this.el.removeEventListener('ksBlur', onNativeBlur);\n });\n }\n\n writeValue(value: string): void {\n this.el.value = value ?? '';\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.el.disabled = isDisabled;\n }\n}\n","// Side-effect import: registers the `ks-theme-switch` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-theme-switch.js';\n\nimport { ChangeDetectionStrategy, Component, ElementRef, effect, input } from '@angular/core';\nimport { ThemeMode } from '@kraft.stitch/core';\nimport type { Palette } from '@kraft.stitch/core';\n\n/** DOM shape of the real `<ks-theme-switch>` custom element, typed for the wrapper. */\ntype KsThemeSwitchElement = HTMLElement & {\n includeSystem: boolean;\n includePalette: boolean;\n onlyIcon: boolean;\n palette: Palette;\n mode: ThemeMode;\n};\n\n/**\n * Angular wrapper around the `<ks-theme-switch>` Stencil custom element.\n *\n * Purely presentational — it drives the shared `themeService` singleton\n * (see `core/src/utils/ks-theme.util.ts`) directly and dispatches no\n * events of its own, so this wrapper has plain inputs only, no outputs\n * and no `ControlValueAccessor`.\n *\n * `template: ''` — no `<slot>` in the wrapped Stencil render.\n */\n@Component({\n selector: 'ks-theme-switch',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsThemeSwitchComponent {\n private readonly el: KsThemeSwitchElement;\n\n /** When true the mode-toggle shows three options: System | Light | Dark. */\n readonly includeSystem = input(true);\n\n /** When true the colour-palette switcher is shown. */\n readonly includePalette = input(false);\n\n /** When true only icons are shown in the mode-toggle switch. */\n readonly onlyIcon = input(false);\n\n /** The palette that should be active on init. */\n readonly palette = input<Palette>('ForestGreen');\n\n /** The mode that should be active on init. */\n readonly mode = input<ThemeMode>(ThemeMode.Light);\n\n constructor(ref: ElementRef<KsThemeSwitchElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.includeSystem = this.includeSystem()));\n effect(() => (this.el.includePalette = this.includePalette()));\n effect(() => (this.el.onlyIcon = this.onlyIcon()));\n effect(() => (this.el.palette = this.palette()));\n effect(() => (this.el.mode = this.mode()));\n }\n}\n","// Side-effect import: registers the `ks-uploader` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-uploader.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\n\n/**\n * Mirrors `KsUploadedFile` exported by\n * `core/src/components/Inputs/uploader/uploader.tsx`. Duplicated locally\n * — see the note in `Buttons/button-group/button-group.ts` for why.\n */\nexport interface KsUploadedFile {\n file: File;\n name: string;\n size: number;\n type: string;\n /** Data-URL preview (images only, when previewImages is true) */\n preview?: string;\n}\n\n/** DOM shape of the real `<ks-uploader>` custom element, typed for the wrapper. */\ntype KsUploaderElement = HTMLElement & {\n accept: string;\n multiple: boolean;\n maxSize: number;\n previewImages: boolean;\n label: string;\n disabled: boolean;\n};\n\n/**\n * Angular wrapper around the `<ks-uploader>` Stencil custom element.\n *\n * No two-way \"value\" here — the Stencil source has no `writeValue()`\n * method and no single controlled prop, just a plain `filesChange`/\n * `filesRejected` event pair, so no `ControlValueAccessor` is implemented\n * (unlike the other `Inputs/*` wrappers).\n *\n * `template: ''` — no `<slot>` in the wrapped Stencil render.\n */\n@Component({\n selector: 'ks-uploader',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsUploaderComponent {\n private readonly el: KsUploaderElement;\n\n /** Accepted MIME types / extensions, e.g. \"image/*,.pdf\" */\n readonly accept = input('');\n\n /** Allow selecting multiple files */\n readonly multiple = input(false);\n\n /** Maximum file size in bytes (0 = no limit) */\n readonly maxSize = input(0);\n\n /** Show image thumbnails for image/* files */\n readonly previewImages = input(true);\n\n /** Custom drop-zone label */\n readonly label = input('or Drop files here');\n\n /** Disabled state */\n readonly disabled = input(false);\n\n /** Emits the accepted files whenever the selection changes. From the native `filesChange` event. */\n readonly ksFilesChange = output<KsUploadedFile[]>();\n\n /** Emits rejected files (wrong type / over size limit). From the native `filesRejected` event. */\n readonly ksFilesRejected = output<File[]>();\n\n constructor(ref: ElementRef<KsUploaderElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.accept = this.accept()));\n effect(() => (this.el.multiple = this.multiple()));\n effect(() => (this.el.maxSize = this.maxSize()));\n effect(() => (this.el.previewImages = this.previewImages()));\n effect(() => (this.el.label = this.label()));\n effect(() => (this.el.disabled = this.disabled()));\n\n const onNativeFilesChange = (event: Event): void => {\n this.ksFilesChange.emit((event as CustomEvent<KsUploadedFile[]>).detail);\n };\n const onNativeFilesRejected = (event: Event): void => {\n this.ksFilesRejected.emit((event as CustomEvent<File[]>).detail);\n };\n this.el.addEventListener('filesChange', onNativeFilesChange);\n this.el.addEventListener('filesRejected', onNativeFilesRejected);\n inject(DestroyRef).onDestroy(() => {\n this.el.removeEventListener('filesChange', onNativeFilesChange);\n this.el.removeEventListener('filesRejected', onNativeFilesRejected);\n });\n }\n}\n","// Side-effect import: registers the `ks-avatar` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-avatar.js';\n\nimport { ChangeDetectionStrategy, Component, ElementRef, effect, input } from '@angular/core';\nimport type { KsBaseVariant, KsSize } from '@kraft.stitch/core';\n\n/** DOM shape of the real `<ks-avatar>` custom element, typed for the wrapper. */\ntype KsAvatarElement = HTMLElement & {\n src: string;\n alt: string;\n initials: string;\n icon: string;\n size: KsSize;\n variant: KsBaseVariant;\n square: boolean;\n};\n\n/**\n * Angular wrapper around the `<ks-avatar>` Stencil custom element.\n *\n * Purely presentational — no events, no `<slot>` in the wrapped Stencil\n * render, plain inputs only (same shape as `Inputs/theme-switch/theme-switch.ts`).\n */\n@Component({\n selector: 'ks-avatar',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsAvatarComponent {\n private readonly el: KsAvatarElement;\n\n /** Image URL — takes priority over initials */\n readonly src = input('');\n\n /** Alt text for the image */\n readonly alt = input('');\n\n /** Initials shown when no image (e.g. \"KS\") */\n readonly initials = input('');\n\n /** Icon class shown when neither src nor initials */\n readonly icon = input('');\n\n /** Size */\n readonly size = input<KsSize>('md');\n\n /** Colour variant — used when showing initials or icon */\n readonly variant = input<KsBaseVariant>('brand');\n\n /** Circular (default) or rounded-square */\n readonly square = input(false);\n\n constructor(ref: ElementRef<KsAvatarElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.src = this.src()));\n effect(() => (this.el.alt = this.alt()));\n effect(() => (this.el.initials = this.initials()));\n effect(() => (this.el.icon = this.icon()));\n effect(() => (this.el.size = this.size()));\n effect(() => (this.el.variant = this.variant()));\n effect(() => (this.el.square = this.square()));\n }\n}\n","// Side-effect import: registers the `ks-card` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-card.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\n\n/** Mirrors the inline union used by `core/src/components/Layout/card/card.tsx`. */\nexport type KsCardVariant = 'default' | 'outlined' | 'elevated' | 'flat';\n\n/** DOM shape of the real `<ks-card>` custom element, typed for the wrapper. */\ntype KsCardElement = HTMLElement & {\n label: string;\n cardTitle: string;\n subtitle: string;\n imageUrl: string;\n imageAlt: string;\n iconClass: string;\n variant: KsCardVariant;\n};\n\n/**\n * Angular wrapper around the `<ks-card>` Stencil custom element.\n *\n * ## Slots\n * Unlike the Buttons/Calendars/Dropdowns wrappers, `<ks-card>` renders\n * real, consumer-facing `<slot name=\"header\" />`, `<slot />` (default) and\n * `<slot name=\"footer\" />` in its scoped (non-shadow) Stencil `render()`.\n * `template: '<ng-content></ng-content>'` (a single unfiltered pass-through,\n * not per-slot `<ng-content select=\"...\">`) projects ALL of this Angular\n * component's content as real light-DOM children of the `<ks-card>` host\n * node; Stencil's own scoped-slot relocation logic (see `shadow: false,\n * scoped: true` on the Stencil class) then places each child into the\n * right native `<slot>` based on that child's own `slot=\"header\"` /\n * `slot=\"footer\"` attribute — same as plain HTML, nothing Angular-specific\n * needed beyond forwarding the projected content through untouched.\n * Usage: `<ks-card><ks-header slot=\"header\">…</ks-header>Body<ks-footer slot=\"footer\">…</ks-footer></ks-card>`.\n */\n@Component({\n selector: 'ks-card',\n standalone: true,\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsCardComponent {\n private readonly el: KsCardElement;\n\n /** Card title */\n readonly label = input('');\n\n /** Card title (Angular input name was `title`; aliased to avoid clashing with the native `title` attribute/tooltip). */\n readonly cardTitle = input('');\n\n /** Subtitle / subheading */\n readonly subtitle = input('');\n\n /** URL for header image */\n readonly imageUrl = input('');\n\n /** Alt text for image */\n readonly imageAlt = input('');\n\n /** SVG icon class */\n readonly iconClass = input('');\n\n /** Card visual variant */\n readonly variant = input<KsCardVariant>('default');\n\n /** Emits when clicked (only when clickable). From the native `cardClick` event. */\n readonly ksCardClick = output<MouseEvent>();\n\n constructor(ref: ElementRef<KsCardElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.label = this.label()));\n effect(() => (this.el.cardTitle = this.cardTitle()));\n effect(() => (this.el.subtitle = this.subtitle()));\n effect(() => (this.el.imageUrl = this.imageUrl()));\n effect(() => (this.el.imageAlt = this.imageAlt()));\n effect(() => (this.el.iconClass = this.iconClass()));\n effect(() => (this.el.variant = this.variant()));\n\n const onNativeCardClick = (event: Event): void => {\n this.ksCardClick.emit((event as CustomEvent<MouseEvent>).detail);\n };\n this.el.addEventListener('cardClick', onNativeCardClick);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('cardClick', onNativeCardClick));\n }\n}\n","// Side-effect import: registers the `ks-code-view` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-code-view.js';\n\nimport { ChangeDetectionStrategy, Component, ElementRef, effect, input } from '@angular/core';\n\n/** Mirrors the inline union used by `core/src/components/Layout/code-view/code-view.tsx`. */\nexport type KsCodeViewLanguage = 'html' | 'css' | 'typescript' | 'javascript' | 'json' | 'bash' | 'text';\n\n/**\n * Mirrors `ActionButtonsConfig` exported by\n * `core/src/components/Layout/code-view/code-view.tsx`. Duplicated\n * locally — see the note in `Buttons/button-group/button-group.ts` for why.\n */\nexport interface ActionButtonsConfig {\n expand?: boolean;\n code?: boolean;\n}\n\n/** DOM shape of the real `<ks-code-view>` custom element, typed for the wrapper. */\ntype KsCodeViewElement = HTMLElement & {\n code: string;\n language: KsCodeViewLanguage;\n label: string;\n maxHeight: string;\n showHeader: boolean;\n collapsed: boolean;\n actionButtonConfig: ActionButtonsConfig;\n};\n\n/**\n * Angular wrapper around the `<ks-code-view>` Stencil custom element.\n * Purely presentational — no events, no `<slot>` in the wrapped Stencil\n * render, plain inputs only.\n */\n@Component({\n selector: 'ks-code-view',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsCodeViewComponent {\n private readonly el: KsCodeViewElement;\n\n /** The source code string to display */\n readonly code = input('');\n\n /** Language hint shown in the header badge */\n readonly language = input<KsCodeViewLanguage>('html');\n\n /** Optional title shown in the header */\n readonly label = input('');\n\n /** Max visible height before scroll kicks in (CSS value, e.g. '20rem') */\n readonly maxHeight = input('24rem');\n\n /** Show the header bar with language badge & copy button */\n readonly showHeader = input(true);\n\n /** Whether the code block is currently collapsed */\n readonly collapsed = input(false);\n\n /** Whether the code block is to show and hide buttons */\n readonly actionButtonConfig = input<ActionButtonsConfig>({ expand: true, code: true });\n\n constructor(ref: ElementRef<KsCodeViewElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.code = this.code()));\n effect(() => (this.el.language = this.language()));\n effect(() => (this.el.label = this.label()));\n effect(() => (this.el.maxHeight = this.maxHeight()));\n effect(() => (this.el.showHeader = this.showHeader()));\n effect(() => (this.el.collapsed = this.collapsed()));\n effect(() => (this.el.actionButtonConfig = this.actionButtonConfig()));\n }\n}\n","// Side-effect import: registers the `ks-dialog` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-dialog.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\n\n/** Mirrors the inline union used by `core/src/components/Layout/dialog/dialog.tsx`. */\nexport type KsDialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\n/** DOM shape of the real `<ks-dialog>` custom element, typed for the wrapper. */\ntype KsDialogElement = HTMLElement & {\n open: boolean;\n label: string;\n hideClose: boolean;\n persistent: boolean;\n size: KsDialogSize;\n target: string;\n};\n\n/**\n * Angular wrapper around the `<ks-dialog>` Stencil custom element.\n *\n * `open` is a plain input, not `ControlValueAccessor` — a dialog's open\n * state isn't form data. For the same reason described throughout this\n * repo, the output can't be named `openChange` (it would collide with the\n * native `openChange`-style close event — see below), so bind explicitly:\n * `[open]=\"isOpen\" (ksCloseDialog)=\"isOpen = false\"`.\n *\n * ## Slots\n * `<ks-dialog>` renders real, consumer-facing `<slot />` (default) and\n * `<slot name=\"footer\" />`. Same single unfiltered `<ng-content>`\n * pass-through as `Layout/card/card.ts` — see that file's doc comment for\n * the full explanation of how native `slot=\"footer\"` attributes on\n * projected children route into the right Stencil `<slot>`.\n */\n@Component({\n selector: 'ks-dialog',\n standalone: true,\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsDialogComponent {\n private readonly el: KsDialogElement;\n\n /** Whether the dialog is open */\n readonly open = input(false);\n\n /** Dialog title */\n readonly label = input('');\n\n /** Hide the built-in close (✕) button */\n readonly hideClose = input(false);\n\n /** Prevent closing by clicking the backdrop */\n readonly persistent = input(false);\n\n /** Panel size */\n readonly size = input<KsDialogSize>('md');\n\n /** Target element id (without #), or '' to use `<body>`. When set, the overlay covers only that element and the dialog is centred inside it. */\n readonly target = input('');\n\n /** Emits when the dialog requests close. From the native `closeDialog` event. */\n readonly ksCloseDialog = output<void>();\n\n constructor(ref: ElementRef<KsDialogElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.open = this.open()));\n effect(() => (this.el.label = this.label()));\n effect(() => (this.el.hideClose = this.hideClose()));\n effect(() => (this.el.persistent = this.persistent()));\n effect(() => (this.el.size = this.size()));\n effect(() => (this.el.target = this.target()));\n\n const onNativeCloseDialog = (): void => this.ksCloseDialog.emit();\n this.el.addEventListener('closeDialog', onNativeCloseDialog);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('closeDialog', onNativeCloseDialog));\n }\n}\n","// Side-effect import: registers the `ks-not-found` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-not-found.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\n\n/** DOM shape of the real `<ks-not-found>` custom element, typed for the wrapper. */\ntype KsNotFoundElement = HTMLElement & {\n buttonLabel: string;\n homeHref: string;\n countdown: number;\n showActionButtons: boolean;\n code: string;\n message: string;\n description: string;\n};\n\n/**\n * Angular wrapper around the `<ks-not-found>` Stencil custom element.\n *\n * `<ks-not-found>` renders a real, consumer-facing default `<slot />`.\n * Same single unfiltered `<ng-content>` pass-through as\n * `Layout/card/card.ts` — see that file's doc comment for the full\n * explanation of how projected content routes into the Stencil `<slot>`.\n */\n@Component({\n selector: 'ks-not-found',\n standalone: true,\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsNotFoundComponent {\n private readonly el: KsNotFoundElement;\n\n /** Label shown on the redirect button (default: \"Go to Home\") */\n readonly buttonLabel = input('Go to Home');\n\n /** href the button and auto-redirect navigate to (default: \"./\") */\n readonly homeHref = input('./');\n\n /** Seconds before auto-redirect fires. Set to `0` to disable the countdown. */\n readonly countdown = input(30);\n\n readonly showActionButtons = input(true);\n\n /** Custom heading (default: \"404\") */\n readonly code = input('404');\n\n /** Custom sub-heading (default: \"Page not found\") */\n readonly message = input('Page not found');\n\n /** Custom description below the heading */\n readonly description = input(\"The page you're looking for doesn't exist or has been moved.\");\n\n /** Emitted just before the auto-redirect navigates away. From the native `redirecting` event. */\n readonly ksRedirecting = output<void>();\n\n constructor(ref: ElementRef<KsNotFoundElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.buttonLabel = this.buttonLabel()));\n effect(() => (this.el.homeHref = this.homeHref()));\n effect(() => (this.el.countdown = this.countdown()));\n effect(() => (this.el.showActionButtons = this.showActionButtons()));\n effect(() => (this.el.code = this.code()));\n effect(() => (this.el.message = this.message()));\n effect(() => (this.el.description = this.description()));\n\n const onNativeRedirecting = (): void => this.ksRedirecting.emit();\n this.el.addEventListener('redirecting', onNativeRedirecting);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('redirecting', onNativeRedirecting));\n }\n}\n","// Side-effect import: registers the `ks-sidebar` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-sidebar.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, model, output } from '@angular/core';\n\nexport type KsSidebarPosition = 'left' | 'right';\nexport type KsSidebarType = 'over' | 'push';\n\n/** DOM shape of the real `<ks-sidebar>` custom element, typed for the wrapper. */\ntype KsSidebarElement = HTMLElement & {\n position: KsSidebarPosition;\n type: KsSidebarType;\n open: boolean;\n width: string;\n target: string;\n openPanel(): Promise<void>;\n close(): Promise<void>;\n toggle(): Promise<void>;\n};\n\n/**\n * Angular wrapper around the `<ks-sidebar>` Stencil custom element.\n *\n * `open` is a plain input/output pair, not `ControlValueAccessor` — panel\n * open state isn't form data. The native event is literally `openChange`,\n * so (per the double-fire rule in `Buttons/button.ts`) the Angular output\n * can't reuse that name; bind explicitly instead:\n * `[open]=\"isOpen\" (ksOpenChange)=\"isOpen = $event\"`.\n *\n * `<ks-sidebar>`'s own `@Method()`s (`openPanel`/`close`/`toggle`) are\n * exposed here as real passthrough methods — grab the component instance\n * with `@ViewChild(KsSidebarComponent)` and call them directly.\n *\n * ## Slots\n * Renders real `<slot name=\"header\" />`, `<slot />` (default) and\n * `<slot name=\"footer\" />`. Same single unfiltered `<ng-content>`\n * pass-through as `Layout/card/card.ts`.\n */\n@Component({\n selector: 'ks-sidebar',\n standalone: true,\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsSidebarComponent {\n private readonly el: KsSidebarElement;\n\n /** Which side the panel appears on */\n readonly position = input<KsSidebarPosition>('left');\n\n /** Behaviour type */\n readonly type = input<KsSidebarType>('over');\n\n /** Initial/controlled open state. Bind explicitly: `[open]=\"isOpen\" (ksOpenChange)=\"isOpen = $event\"`. */\n readonly open = model(false);\n\n /** Width of the sidebar panel */\n readonly width = input('18rem');\n\n /** Target element id (without #) or '' to use the page. */\n readonly target = input('');\n\n /** Fires whenever `open` changes. From the native `openChange` event. */\n readonly ksOpenChange = output<boolean>();\n\n constructor(ref: ElementRef<KsSidebarElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.position = this.position()));\n effect(() => (this.el.type = this.type()));\n effect(() => (this.el.open = this.open()));\n effect(() => (this.el.width = this.width()));\n effect(() => (this.el.target = this.target()));\n\n const onNativeOpenChange = (event: Event): void => {\n this.ksOpenChange.emit((event as CustomEvent<boolean>).detail);\n };\n this.el.addEventListener('openChange', onNativeOpenChange);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('openChange', onNativeOpenChange));\n }\n\n /** Passthrough to `<ks-sidebar>`'s own `@Method() openPanel()`. */\n openPanel(): Promise<void> {\n return this.el.openPanel();\n }\n\n /** Passthrough to `<ks-sidebar>`'s own `@Method() close()`. */\n close(): Promise<void> {\n return this.el.close();\n }\n\n /** Passthrough to `<ks-sidebar>`'s own `@Method() toggle()`. */\n toggle(): Promise<void> {\n return this.el.toggle();\n }\n}\n","// Side-effect import: registers the `ks-table` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-table.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\n\n/** Mirrors the inline unions used by `core/src/components/Layout/table/table.tsx`. */\nexport type KsTableVariant = 'default' | 'striped' | 'bordered' | 'compact';\nexport type KsTableSize = 'sm' | 'md' | 'lg';\n\n/** DOM shape of the real `<ks-table>` custom element, typed for the wrapper. */\ntype KsTableElement = HTMLElement & {\n data: Record<string, unknown>[];\n columns: string[];\n columnLabels: Record<string, string>;\n variant: KsTableVariant;\n size: KsTableSize;\n caption: string;\n scrollable: boolean;\n hoverable: boolean;\n};\n\n/**\n * Angular wrapper around the `<ks-table>` Stencil custom element.\n * No `<slot>` in the wrapped Stencil render — data-driven only.\n */\n@Component({\n selector: 'ks-table',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsTableComponent {\n private readonly el: KsTableElement;\n\n /** Array of objects to render as table rows */\n readonly data = input<Record<string, unknown>[]>([]);\n\n /** Optional explicit column order; defaults to keys of the first row */\n readonly columns = input<string[]>([]);\n\n /** Optional custom column header labels: { key: 'Display Label' } */\n readonly columnLabels = input<Record<string, string>>({});\n\n /** Visual variant */\n readonly variant = input<KsTableVariant>('default');\n\n /** Row size */\n readonly size = input<KsTableSize>('md');\n\n /** Show a caption / title above the table */\n readonly caption = input('');\n\n /** Make the table horizontally scrollable on overflow */\n readonly scrollable = input(true);\n\n /** Highlight row on hover */\n readonly hoverable = input(true);\n\n /** Emits the clicked row's data. From the native `rowClick` event. */\n readonly ksRowClick = output<Record<string, unknown>>();\n\n constructor(ref: ElementRef<KsTableElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.data = this.data()));\n effect(() => (this.el.columns = this.columns()));\n effect(() => (this.el.columnLabels = this.columnLabels()));\n effect(() => (this.el.variant = this.variant()));\n effect(() => (this.el.size = this.size()));\n effect(() => (this.el.caption = this.caption()));\n effect(() => (this.el.scrollable = this.scrollable()));\n effect(() => (this.el.hoverable = this.hoverable()));\n\n const onNativeRowClick = (event: Event): void => {\n this.ksRowClick.emit((event as CustomEvent<Record<string, unknown>>).detail);\n };\n this.el.addEventListener('rowClick', onNativeRowClick);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('rowClick', onNativeRowClick));\n }\n}\n","// Side-effect import: registers the `ks-tooltip` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-tooltip.js';\n\nimport { ChangeDetectionStrategy, Component, ElementRef, effect, input } from '@angular/core';\nimport type { KsPosition } from '@kraft.stitch/core';\n\n/** DOM shape of the real `<ks-tooltip>` custom element, typed for the wrapper. */\ntype KsTooltipElement = HTMLElement & {\n text: string;\n position: KsPosition;\n visible: boolean;\n};\n\n/**\n * Angular wrapper around the `<ks-tooltip>` Stencil custom element.\n *\n * `<ks-tooltip>` renders a real, consumer-facing default `<slot />` for\n * the element the tooltip is attached to. Same single unfiltered\n * `<ng-content>` pass-through as `Layout/card/card.ts` — wrap the\n * trigger element as `<ks-tooltip text=\"Hi\"><button>Hover me</button></ks-tooltip>`.\n */\n@Component({\n selector: 'ks-tooltip',\n standalone: true,\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsTooltipComponent {\n private readonly el: KsTooltipElement;\n\n /** Tooltip text */\n readonly text = input('');\n\n /** Preferred placement */\n readonly position = input<KsPosition>('top');\n\n /** Show tooltip on demand (true = always visible) — leave false for hover behaviour */\n readonly visible = input(false);\n\n constructor(ref: ElementRef<KsTooltipElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.text = this.text()));\n effect(() => (this.el.position = this.position()));\n effect(() => (this.el.visible = this.visible()));\n }\n}\n","// Side-effect import: registers the `ks-accordion` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-accordion.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\n\n/**\n * Mirrors `KsAccordionItem` exported by\n * `core/src/components/Navigation/accordion/accordion.tsx`. Duplicated\n * locally — see the note in `Buttons/button-group/button-group.ts` for why.\n */\nexport interface KsAccordionItem {\n key: string;\n label: string;\n icon?: string;\n disabled?: boolean;\n}\n\n/** DOM shape of the real `<ks-accordion>` custom element, typed for the wrapper. */\ntype KsAccordionElement = HTMLElement & {\n items: KsAccordionItem[];\n multi: boolean;\n openKeys: string[];\n};\n\n/**\n * Angular wrapper around the `<ks-accordion>` Stencil custom element.\n *\n * ## Panel content — `ksPanel`, NOT a native `slot` attribute\n * The Stencil source maps each light-DOM child carrying a `ksPanel=\"key\"`\n * attribute to a matching named `<slot>` internally (see\n * `core/src/utils/ks-slots.util.ts`'s `getKsPanelMap()`) — it does NOT use\n * the browser-native `slot=\"...\"` attribute consumers would use for\n * `Layout/card/card.ts`-style components. `template: '<ng-content></ng-content>'`\n * still applies the same way: it's a single, unfiltered pass-through of\n * whatever this Angular component's own template projects, as real\n * light-DOM children of the `<ks-accordion>` host — the wrapper does no\n * filtering itself, it just needs to exist so the projected content\n * becomes real children for Stencil's `getKsPanelMap()` scan to find.\n * Usage:\n * `<ks-accordion [items]=\"items\">\n * <div ksPanel=\"profile\">Profile body…</div>\n * <div ksPanel=\"settings\">Settings body…</div>\n * </ks-accordion>`\n */\n@Component({\n selector: 'ks-accordion',\n standalone: true,\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsAccordionComponent {\n private readonly el: KsAccordionElement;\n\n /** List of accordion panel definitions */\n readonly items = input<KsAccordionItem[]>([]);\n\n /** Allow multiple panels open simultaneously */\n readonly multi = input(false);\n\n /** Keys that should be open by default */\n readonly openKeys = input<string[]>([]);\n\n /** Emits the key that was toggled. From the native `toggled` event. */\n readonly ksToggled = output<string>();\n\n constructor(ref: ElementRef<KsAccordionElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.items = this.items()));\n effect(() => (this.el.multi = this.multi()));\n effect(() => (this.el.openKeys = this.openKeys()));\n\n const onNativeToggled = (event: Event): void => {\n this.ksToggled.emit((event as CustomEvent<string>).detail);\n };\n this.el.addEventListener('toggled', onNativeToggled);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('toggled', onNativeToggled));\n }\n}\n","// Side-effect import: registers the `ks-breadcrumb` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-breadcrumb.js';\n\nimport { ChangeDetectionStrategy, Component, ElementRef, effect, input } from '@angular/core';\nimport type { KsBaseSize } from '@kraft.stitch/core';\n\n/**\n * Mirrors `KsBreadcrumbItem` exported by\n * `core/src/components/Navigation/breadcrumb/breadcrumb.tsx`. Duplicated\n * locally — see the note in `Buttons/button-group/button-group.ts` for why.\n */\nexport interface KsBreadcrumbItem {\n label: string;\n /** Route path or href — omit for the active (last) item */\n href?: string;\n /** Optional icon class */\n icon?: string;\n}\n\n/** DOM shape of the real `<ks-breadcrumb>` custom element, typed for the wrapper. */\ntype KsBreadcrumbElement = HTMLElement & {\n items: KsBreadcrumbItem[];\n separator: string;\n size: KsBaseSize;\n};\n\n/**\n * Angular wrapper around the `<ks-breadcrumb>` Stencil custom element.\n * Purely presentational — no events, no `<slot>` in the wrapped Stencil\n * render, plain inputs only.\n */\n@Component({\n selector: 'ks-breadcrumb',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsBreadcrumbComponent {\n private readonly el: KsBreadcrumbElement;\n\n /** Ordered list of breadcrumb items */\n readonly items = input<KsBreadcrumbItem[]>([]);\n\n /** Separator character or symbol */\n readonly separator = input('/');\n\n /** Size */\n readonly size = input<KsBaseSize>('lg');\n\n constructor(ref: ElementRef<KsBreadcrumbElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.items = this.items()));\n effect(() => (this.el.separator = this.separator()));\n effect(() => (this.el.size = this.size()));\n }\n}\n","// Side-effect import: registers the `ks-carousel` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-carousel.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\n\n/**\n * Mirrors `KsCarouselSlide` exported by\n * `core/src/components/Navigation/carousel/carousel.tsx`. Duplicated\n * locally — see the note in `Buttons/button-group/button-group.ts` for why.\n */\nexport interface KsCarouselSlide {\n key: string;\n imageUrl?: string;\n alt?: string;\n label?: string;\n caption?: string;\n}\n\n/** DOM shape of the real `<ks-carousel>` custom element, typed for the wrapper. */\ntype KsCarouselElement = HTMLElement & {\n slides: KsCarouselSlide[];\n autoPlay: number;\n showControls: boolean;\n showDots: boolean;\n};\n\n/**\n * Angular wrapper around the `<ks-carousel>` Stencil custom element.\n * No `<slot>` in the wrapped Stencil render — data-driven only.\n */\n@Component({\n selector: 'ks-carousel',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsCarouselComponent {\n private readonly el: KsCarouselElement;\n\n /** Slides to display */\n readonly slides = input<KsCarouselSlide[]>([]);\n\n /** Auto-play interval in ms (0 = disabled) */\n readonly autoPlay = input(0);\n\n /** Show prev/next arrow controls */\n readonly showControls = input(true);\n\n /** Show dot indicators */\n readonly showDots = input(true);\n\n /** Emits the current slide index on change. From the native `slideChange` event. */\n readonly ksSlideChange = output<number>();\n\n constructor(ref: ElementRef<KsCarouselElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.slides = this.slides()));\n effect(() => (this.el.autoPlay = this.autoPlay()));\n effect(() => (this.el.showControls = this.showControls()));\n effect(() => (this.el.showDots = this.showDots()));\n\n const onNativeSlideChange = (event: Event): void => {\n this.ksSlideChange.emit((event as CustomEvent<number>).detail);\n };\n this.el.addEventListener('slideChange', onNativeSlideChange);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('slideChange', onNativeSlideChange));\n }\n}\n","// Side-effect import: registers the `ks-context-menu` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-context-menu.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\n\n/**\n * Mirrors `KsContextMenuItem` / `KsContextMenuPosition` exported by\n * `core/src/components/Navigation/context-menu/context-menu.tsx`.\n * Duplicated locally — see the note in `Buttons/button-group/button-group.ts` for why.\n */\nexport interface KsContextMenuItem {\n key: string;\n label?: string;\n icon?: string;\n divider?: boolean;\n disabled?: boolean;\n danger?: boolean;\n}\n\nexport interface KsContextMenuPosition {\n x: number;\n y: number;\n}\n\n/** DOM shape of the real `<ks-context-menu>` custom element, typed for the wrapper. */\ntype KsContextMenuElement = HTMLElement & {\n items: KsContextMenuItem[];\n open(pos: KsContextMenuPosition): Promise<void>;\n close(): Promise<void>;\n};\n\n/**\n * Angular wrapper around the `<ks-context-menu>` Stencil custom element.\n *\n * `<ks-context-menu>`'s own `@Method()`s (`open(pos)`/`close()`) are\n * exposed here as real passthrough methods — grab the component instance\n * with `@ViewChild(KsContextMenuComponent)` and call them directly, e.g.\n * `onContextMenu(e: MouseEvent) { menu.open({ x: e.clientX, y: e.clientY }); }`.\n *\n * No `<slot>` in the wrapped Stencil render — data-driven only.\n */\n@Component({\n selector: 'ks-context-menu',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsContextMenuComponent {\n private readonly el: KsContextMenuElement;\n\n /** Menu items */\n readonly items = input<KsContextMenuItem[]>([]);\n\n /** Emits the clicked item key. From the native `itemClicked` event. */\n readonly ksItemClicked = output<string>();\n\n constructor(ref: ElementRef<KsContextMenuElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.items = this.items()));\n\n const onNativeItemClicked = (event: Event): void => {\n this.ksItemClicked.emit((event as CustomEvent<string>).detail);\n };\n this.el.addEventListener('itemClicked', onNativeItemClicked);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('itemClicked', onNativeItemClicked));\n }\n\n /** Passthrough to `<ks-context-menu>`'s own `@Method() open(pos)`. */\n open(pos: KsContextMenuPosition): Promise<void> {\n return this.el.open(pos);\n }\n\n /** Passthrough to `<ks-context-menu>`'s own `@Method() close()`. */\n close(): Promise<void> {\n return this.el.close();\n }\n}\n","// Side-effect import: registers the `ks-nav-bar` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-nav-bar.js';\n\nimport { ChangeDetectionStrategy, Component, ElementRef, effect, input } from '@angular/core';\n\n/**\n * Mirrors the types exported by\n * `core/src/components/Navigation/nav-bar/nav-bar.tsx`. Duplicated\n * locally — see the note in `Buttons/button-group/button-group.ts` for why.\n */\nexport interface KsNavBarItem {\n key: string;\n name: string;\n iconClass: string;\n /** href to navigate to */\n redirectLink: string;\n activationFragment?: string;\n disabled?: boolean;\n}\n\nexport type KsNavBarSection = 'top' | 'mid' | 'bottom';\n\nexport interface KsNavBarSectionItem extends KsNavBarItem {\n section: KsNavBarSection;\n}\n\nexport type KsNavBarMode = 'iconOnly' | 'hoverToExpand' | 'alwaysOpen';\n\n/** DOM shape of the real `<ks-nav-bar>` custom element, typed for the wrapper. */\ntype KsNavBarElement = HTMLElement & {\n items: KsNavBarSectionItem[];\n mode: KsNavBarMode;\n iconWidth: string;\n expandedWidth: string;\n};\n\n/**\n * Angular wrapper around the `<ks-nav-bar>` Stencil custom element.\n * Renders a real, consumer-facing default `<slot />` — same single\n * unfiltered `<ng-content>` pass-through as `Layout/card/card.ts`.\n */\n@Component({\n selector: 'ks-nav-bar',\n standalone: true,\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsNavBarComponent {\n private readonly el: KsNavBarElement;\n\n /** All nav items with their section assignment */\n readonly items = input<KsNavBarSectionItem[]>([]);\n\n /** Expansion mode */\n readonly mode = input<KsNavBarMode>('iconOnly');\n\n /** Width of the icon-only rail */\n readonly iconWidth = input('3.5rem');\n\n /** Width of the expanded label panel */\n readonly expandedWidth = input('13rem');\n\n constructor(ref: ElementRef<KsNavBarElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.items = this.items()));\n effect(() => (this.el.mode = this.mode()));\n effect(() => (this.el.iconWidth = this.iconWidth()));\n effect(() => (this.el.expandedWidth = this.expandedWidth()));\n }\n}\n","// Side-effect import: registers the `ks-pagination` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-pagination.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\n\n/** DOM shape of the real `<ks-pagination>` custom element, typed for the wrapper. */\ntype KsPaginationElement = HTMLElement & {\n total: number;\n pageSize: number;\n currentPage: number;\n showPageSize: boolean;\n pageSizeOptions: number[];\n showQuickJumper: boolean;\n maxPageButtons: number;\n};\n\n/**\n * Angular wrapper around the `<ks-pagination>` Stencil custom element.\n * No `<slot>` in the wrapped Stencil render — data-driven only.\n */\n@Component({\n selector: 'ks-pagination',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsPaginationComponent {\n private readonly el: KsPaginationElement;\n\n /** Total number of items */\n readonly total = input(0);\n\n /** Items per page */\n readonly pageSize = input(10);\n\n /** Current page (1-indexed) */\n readonly currentPage = input(1);\n\n /** Show page size selector */\n readonly showPageSize = input(false);\n\n /** Available page sizes */\n readonly pageSizeOptions = input<number[]>([10, 20, 50, 100]);\n\n /** Show quick jumper */\n readonly showQuickJumper = input(false);\n\n /** Maximum number of page buttons to show */\n readonly maxPageButtons = input(7);\n\n /** Emits when page changes. From the native `pageChange` event. */\n readonly ksPageChange = output<number>();\n\n /** Emits when page size changes. From the native `pageSizeChange` event. */\n readonly ksPageSizeChange = output<number>();\n\n constructor(ref: ElementRef<KsPaginationElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.total = this.total()));\n effect(() => (this.el.pageSize = this.pageSize()));\n effect(() => (this.el.currentPage = this.currentPage()));\n effect(() => (this.el.showPageSize = this.showPageSize()));\n effect(() => (this.el.pageSizeOptions = this.pageSizeOptions()));\n effect(() => (this.el.showQuickJumper = this.showQuickJumper()));\n effect(() => (this.el.maxPageButtons = this.maxPageButtons()));\n\n const onNativePageChange = (event: Event): void => {\n this.ksPageChange.emit((event as CustomEvent<number>).detail);\n };\n const onNativePageSizeChange = (event: Event): void => {\n this.ksPageSizeChange.emit((event as CustomEvent<number>).detail);\n };\n this.el.addEventListener('pageChange', onNativePageChange);\n this.el.addEventListener('pageSizeChange', onNativePageSizeChange);\n inject(DestroyRef).onDestroy(() => {\n this.el.removeEventListener('pageChange', onNativePageChange);\n this.el.removeEventListener('pageSizeChange', onNativePageSizeChange);\n });\n }\n}\n","// Side-effect import: registers the `ks-stepper` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-stepper.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\n\n/**\n * Mirrors `KsStepItem` / `KsStepperOrientation` exported by\n * `core/src/components/Navigation/stepper/stepper.tsx`. Duplicated\n * locally — see the note in `Buttons/button-group/button-group.ts` for why.\n */\nexport interface KsStepItem {\n key: string;\n label: string;\n description?: string;\n icon?: string;\n optional?: boolean;\n}\n\nexport type KsStepperOrientation = 'horizontal' | 'vertical';\n\n/** DOM shape of the real `<ks-stepper>` custom element, typed for the wrapper. */\ntype KsStepperElement = HTMLElement & {\n steps: KsStepItem[];\n activeStep: number;\n orientation: KsStepperOrientation;\n clickable: boolean;\n completedSteps: number[];\n};\n\n/**\n * Angular wrapper around the `<ks-stepper>` Stencil custom element.\n * No `<slot>` in the wrapped Stencil render — data-driven only.\n */\n@Component({\n selector: 'ks-stepper',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsStepperComponent {\n private readonly el: KsStepperElement;\n\n /** Step definitions */\n readonly steps = input<KsStepItem[]>([]);\n\n /** Currently active step index (0-based) */\n readonly activeStep = input(0);\n\n /** Layout orientation */\n readonly orientation = input<KsStepperOrientation>('horizontal');\n\n /** Allow clicking steps to navigate */\n readonly clickable = input(false);\n\n /** Marks completed steps */\n readonly completedSteps = input<number[]>([]);\n\n /** Emits the new step index. From the native `stepChange` event. */\n readonly ksStepChange = output<number>();\n\n constructor(ref: ElementRef<KsStepperElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.steps = this.steps()));\n effect(() => (this.el.activeStep = this.activeStep()));\n effect(() => (this.el.orientation = this.orientation()));\n effect(() => (this.el.clickable = this.clickable()));\n effect(() => (this.el.completedSteps = this.completedSteps()));\n\n const onNativeStepChange = (event: Event): void => {\n this.ksStepChange.emit((event as CustomEvent<number>).detail);\n };\n this.el.addEventListener('stepChange', onNativeStepChange);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('stepChange', onNativeStepChange));\n }\n}\n","// Side-effect import: registers the `ks-tab` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-tab.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\n\n/**\n * Mirrors `KsTabItem` exported by\n * `core/src/components/Navigation/tab/tab.tsx`. Duplicated locally — see\n * the note in `Buttons/button-group/button-group.ts` for why.\n */\nexport interface KsTabItem {\n key: string;\n label: string;\n icon?: string;\n disabled?: boolean;\n}\n\n/** DOM shape of the real `<ks-tab>` custom element, typed for the wrapper. */\ntype KsTabElement = HTMLElement & {\n tabs: KsTabItem[];\n activeKey: string;\n tabHeaderStyle: 'default' | 'expanded' | 'card' | 'button';\n};\n\n/**\n * Angular wrapper around the `<ks-tab>` Stencil custom element.\n *\n * Same `ksPanel=\"key\"` → named-`<slot>` strategy as\n * `Navigation/accordion/accordion.ts` (NOT the native `slot=\"...\"`\n * attribute) — see that file's doc comment for the full explanation.\n * Usage:\n * `<ks-tab [tabs]=\"tabs\" activeKey=\"tab1\">\n * <div ksPanel=\"tab1\">Tab 1 content</div>\n * <div ksPanel=\"tab2\">Tab 2 content</div>\n * </ks-tab>`\n */\n@Component({\n selector: 'ks-tab',\n standalone: true,\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsTabComponent {\n private readonly el: KsTabElement;\n\n /** List of tab definitions */\n readonly tabs = input<KsTabItem[]>([]);\n\n /** Key of the initially active tab */\n readonly activeKey = input('');\n\n readonly tabHeaderStyle = input<'default' | 'expanded' | 'card' | 'button'>('default');\n\n /** Emits the key of the newly selected tab. From the native `tabChange` event. */\n readonly ksTabChange = output<string>();\n\n constructor(ref: ElementRef<KsTabElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.tabs = this.tabs()));\n effect(() => (this.el.activeKey = this.activeKey()));\n effect(() => (this.el.tabHeaderStyle = this.tabHeaderStyle()));\n\n const onNativeTabChange = (event: Event): void => {\n this.ksTabChange.emit((event as CustomEvent<string>).detail);\n };\n this.el.addEventListener('tabChange', onNativeTabChange);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('tabChange', onNativeTabChange));\n }\n}\n","// Side-effect import: registers the `ks-toolbar` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-toolbar.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\nimport type { KsVariant } from '@kraft.stitch/core';\n\n/**\n * Mirrors `KsToolbarItem` exported by\n * `core/src/components/Navigation/toolbar/toolbar.tsx`. Duplicated\n * locally — see the note in `Buttons/button-group/button-group.ts` for why.\n */\nexport interface KsToolbarItem {\n key: string;\n icon?: string;\n label?: string;\n divider?: boolean;\n disabled?: boolean;\n active?: boolean;\n variant?: KsVariant;\n}\n\n/** DOM shape of the real `<ks-toolbar>` custom element, typed for the wrapper. */\ntype KsToolbarElement = HTMLElement & {\n items: KsToolbarItem[];\n};\n\n/**\n * Angular wrapper around the `<ks-toolbar>` Stencil custom element.\n * Renders a real, consumer-facing default `<slot />` for extra trailing\n * content — same single unfiltered `<ng-content>` pass-through as\n * `Layout/card/card.ts`.\n */\n@Component({\n selector: 'ks-toolbar',\n standalone: true,\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsToolbarComponent {\n private readonly el: KsToolbarElement;\n\n /** Toolbar items */\n readonly items = input<KsToolbarItem[]>([]);\n\n /** Emits the clicked item key. From the native `itemClicked` event. */\n readonly ksItemClicked = output<string>();\n\n constructor(ref: ElementRef<KsToolbarElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.items = this.items()));\n\n const onNativeItemClicked = (event: Event): void => {\n this.ksItemClicked.emit((event as CustomEvent<string>).detail);\n };\n this.el.addEventListener('itemClicked', onNativeItemClicked);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('itemClicked', onNativeItemClicked));\n }\n}\n","// Side-effect import: registers the `ks-top-nav-bar` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-top-nav-bar.js';\n\nimport { ChangeDetectionStrategy, Component, ElementRef, effect, input } from '@angular/core';\n\n/**\n * Mirrors the types exported by\n * `core/src/components/Navigation/top-nav-bar/top-nav-bar.tsx`.\n * Duplicated locally — see the note in `Buttons/button-group/button-group.ts` for why.\n */\nexport type KsTopNavBarVariant = 'default' | 'underline' | 'pill';\n\nexport interface KsTopNavBarItem {\n key: string;\n name: string;\n iconClass?: string;\n /** href to navigate to */\n redirectLink: string;\n activationFragment?: string;\n disabled?: boolean;\n}\n\n/** DOM shape of the real `<ks-top-nav-bar>` custom element, typed for the wrapper. */\ntype KsTopNavBarElement = HTMLElement & {\n items: KsTopNavBarItem[];\n variant: KsTopNavBarVariant;\n showIcons: boolean;\n showLabels: boolean;\n label: string;\n};\n\n/**\n * Angular wrapper around the `<ks-top-nav-bar>` Stencil custom element.\n * Renders a real, consumer-facing default `<slot />` — same single\n * unfiltered `<ng-content>` pass-through as `Layout/card/card.ts`.\n */\n@Component({\n selector: 'ks-top-nav-bar',\n standalone: true,\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsTopNavBarComponent {\n private readonly el: KsTopNavBarElement;\n\n /** Navigation items */\n readonly items = input<KsTopNavBarItem[]>([]);\n\n /** Visual style of the active indicator */\n readonly variant = input<KsTopNavBarVariant>('default');\n\n /** Show icon alongside label */\n readonly showIcons = input(true);\n\n /** Show label text */\n readonly showLabels = input(true);\n\n /** Aria label for the nav element */\n readonly label = input('Top navigation');\n\n constructor(ref: ElementRef<KsTopNavBarElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.items = this.items()));\n effect(() => (this.el.variant = this.variant()));\n effect(() => (this.el.showIcons = this.showIcons()));\n effect(() => (this.el.showLabels = this.showLabels()));\n effect(() => (this.el.label = this.label()));\n }\n}\n","// Side-effect import: registers the `ks-tree-view` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-tree-view.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\n\n/**\n * Mirrors `KsTreeNode` exported by\n * `core/src/components/Navigation/tree-view/tree-view.tsx`. Duplicated\n * locally — see the note in `Buttons/button-group/button-group.ts` for why.\n */\nexport interface KsTreeNode {\n key: string;\n label: string;\n icon?: string;\n disabled?: boolean;\n children?: KsTreeNode[];\n}\n\n/** DOM shape of the real `<ks-tree-view>` custom element, typed for the wrapper. */\ntype KsTreeViewElement = HTMLElement & {\n nodes: KsTreeNode[];\n expandedKeys: string[];\n multi: boolean;\n};\n\n/**\n * Angular wrapper around the `<ks-tree-view>` Stencil custom element.\n * No `<slot>` in the wrapped Stencil render — data-driven only.\n */\n@Component({\n selector: 'ks-tree-view',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsTreeViewComponent {\n private readonly el: KsTreeViewElement;\n\n /** Tree data */\n readonly nodes = input<KsTreeNode[]>([]);\n\n /** Keys of nodes that start expanded */\n readonly expandedKeys = input<string[]>([]);\n\n /** Allow selecting multiple nodes */\n readonly multi = input(false);\n\n /** Emits key(s) when selection changes. From the native `selectionChanged` event. */\n readonly ksSelectionChanged = output<string | string[]>();\n\n /** Emits when a node is expanded/collapsed. From the native `expandChange` event. */\n readonly ksExpandChange = output<{ key: string; expanded: boolean }>();\n\n constructor(ref: ElementRef<KsTreeViewElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.nodes = this.nodes()));\n effect(() => (this.el.expandedKeys = this.expandedKeys()));\n effect(() => (this.el.multi = this.multi()));\n\n const onNativeSelectionChanged = (event: Event): void => {\n this.ksSelectionChanged.emit((event as CustomEvent<string | string[]>).detail);\n };\n const onNativeExpandChange = (event: Event): void => {\n this.ksExpandChange.emit((event as CustomEvent<{ key: string; expanded: boolean }>).detail);\n };\n this.el.addEventListener('selectionChanged', onNativeSelectionChanged);\n this.el.addEventListener('expandChange', onNativeExpandChange);\n inject(DestroyRef).onDestroy(() => {\n this.el.removeEventListener('selectionChanged', onNativeSelectionChanged);\n this.el.removeEventListener('expandChange', onNativeExpandChange);\n });\n }\n}\n","// Side-effect import: registers the `ks-badge` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-badge.js';\n\nimport { ChangeDetectionStrategy, Component, ElementRef, effect, input } from '@angular/core';\nimport type { KsBaseSize, KsBaseVariant } from '@kraft.stitch/core';\n\n/** DOM shape of the real `<ks-badge>` custom element, typed for the wrapper. */\ntype KsBadgeElement = HTMLElement & {\n label: string;\n variant: KsBaseVariant;\n size: KsBaseSize;\n dot: boolean;\n pill: boolean;\n};\n\n/**\n * Angular wrapper around the `<ks-badge>` Stencil custom element.\n * Purely presentational — no events, no `<slot>` in the wrapped Stencil\n * render, plain inputs only.\n */\n@Component({\n selector: 'ks-badge',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsBadgeComponent {\n private readonly el: KsBadgeElement;\n\n /** Display text */\n readonly label = input('');\n\n /** Colour variant */\n readonly variant = input<KsBaseVariant>('brand');\n\n /** Size */\n readonly size = input<KsBaseSize>('md');\n\n /** Show a dot instead of text */\n readonly dot = input(false);\n\n /** Pill (fully rounded) shape */\n readonly pill = input(true);\n\n constructor(ref: ElementRef<KsBadgeElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.label = this.label()));\n effect(() => (this.el.variant = this.variant()));\n effect(() => (this.el.size = this.size()));\n effect(() => (this.el.dot = this.dot()));\n effect(() => (this.el.pill = this.pill()));\n }\n}\n","// Side-effect import: registers the `ks-loader` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-loader.js';\n\nimport { ChangeDetectionStrategy, Component, ElementRef, effect, input } from '@angular/core';\nimport { LoaderStateEnum } from '@kraft.stitch/core';\n\n/** DOM shape of the real `<ks-loader>` custom element, typed for the wrapper. */\ntype KsLoaderElement = HTMLElement & {\n state: LoaderStateEnum;\n};\n\n/**\n * Angular wrapper around the `<ks-loader>` Stencil custom element.\n *\n * Renders real, consumer-facing named slots — `loading`, `empty`,\n * `empty-action`, `error`, `error-action` — plus a default (unnamed)\n * slot for the `Success` state. Same single unfiltered\n * `<ng-content>` pass-through as `Layout/card/card.ts`: give each\n * projected child its own native `slot=\"loading\"` / `slot=\"empty\"` /\n * `slot=\"empty-action\"` / `slot=\"error\"` / `slot=\"error-action\"`\n * attribute (or none, for the default/success slot).\n */\n@Component({\n selector: 'ks-loader',\n standalone: true,\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsLoaderComponent {\n private readonly el: KsLoaderElement;\n\n /** Current state */\n readonly state = input<LoaderStateEnum>(LoaderStateEnum.Loading);\n\n constructor(ref: ElementRef<KsLoaderElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.state = this.state()));\n }\n}\n","// Side-effect import: registers the `ks-message` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-message.js';\n\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, effect, inject, input, output } from '@angular/core';\nimport type { KsBaseVariant } from '@kraft.stitch/core';\n\n/** DOM shape of the real `<ks-message>` custom element, typed for the wrapper. */\ntype KsMessageElement = HTMLElement & {\n text: string;\n icon: string;\n variant: KsBaseVariant;\n dismissible: boolean;\n};\n\n/**\n * Angular wrapper around the `<ks-message>` Stencil custom element.\n *\n * `<ks-message>` renders a default `<slot />` only as a fallback when\n * `text` is empty — same single unfiltered `<ng-content>` pass-through as\n * `Layout/card/card.ts`; omit `text` and project content instead if\n * richer markup is needed.\n */\n@Component({\n selector: 'ks-message',\n standalone: true,\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsMessageComponent {\n private readonly el: KsMessageElement;\n\n /** Main message text */\n readonly text = input('');\n\n /** Optional icon class (e.g. Material Icon or Font Awesome) */\n readonly icon = input('');\n\n /** Colour variant */\n readonly variant = input<KsBaseVariant>('info');\n\n /** Show a dismiss (×) button */\n readonly dismissible = input(false);\n\n /** Emits when the message is dismissed. From the native `dismissed` event. */\n readonly ksDismissed = output<void>();\n\n constructor(ref: ElementRef<KsMessageElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.text = this.text()));\n effect(() => (this.el.icon = this.icon()));\n effect(() => (this.el.variant = this.variant()));\n effect(() => (this.el.dismissible = this.dismissible()));\n\n const onNativeDismissed = (): void => this.ksDismissed.emit();\n this.el.addEventListener('dismissed', onNativeDismissed);\n inject(DestroyRef).onDestroy(() => this.el.removeEventListener('dismissed', onNativeDismissed));\n }\n}\n","// Side-effect import: registers the `ks-progress` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-progress.js';\n\nimport { ChangeDetectionStrategy, Component, ElementRef, effect, input } from '@angular/core';\nimport type { KsBaseSize, KsBaseVariant } from '@kraft.stitch/core';\n\n/** DOM shape of the real `<ks-progress>` custom element, typed for the wrapper. */\ntype KsProgressElement = HTMLElement & {\n value: number;\n max: number;\n showLabel: boolean;\n variant: KsBaseVariant;\n size: KsBaseSize;\n indeterminate: boolean;\n label: string;\n};\n\n/**\n * Angular wrapper around the `<ks-progress>` Stencil custom element.\n * Purely presentational — no events, no `<slot>` in the wrapped Stencil\n * render, plain inputs only.\n */\n@Component({\n selector: 'ks-progress',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsProgressComponent {\n private readonly el: KsProgressElement;\n\n /** Progress value (0-100) */\n readonly value = input(0);\n\n /** Maximum value */\n readonly max = input(100);\n\n /** Show percentage label */\n readonly showLabel = input(false);\n\n /** Progress variant */\n readonly variant = input<KsBaseVariant>('brand');\n\n /** Progress size */\n readonly size = input<KsBaseSize>('md');\n\n /** Indeterminate/loading state */\n readonly indeterminate = input(false);\n\n /** Optional label text */\n readonly label = input('');\n\n constructor(ref: ElementRef<KsProgressElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.value = this.value()));\n effect(() => (this.el.max = this.max()));\n effect(() => (this.el.showLabel = this.showLabel()));\n effect(() => (this.el.variant = this.variant()));\n effect(() => (this.el.size = this.size()));\n effect(() => (this.el.indeterminate = this.indeterminate()));\n effect(() => (this.el.label = this.label()));\n }\n}\n","// Side-effect import: registers the `ks-spinner` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-spinner.js';\n\nimport { ChangeDetectionStrategy, Component, ElementRef, effect, input } from '@angular/core';\nimport type { KsBaseVariant, KsSize } from '@kraft.stitch/core';\n\n/** DOM shape of the real `<ks-spinner>` custom element, typed for the wrapper. */\ntype KsSpinnerElement = HTMLElement & {\n size: KsSize;\n variant: KsBaseVariant;\n text: string;\n centered: boolean;\n};\n\n/**\n * Angular wrapper around the `<ks-spinner>` Stencil custom element.\n * Purely presentational — no events, no `<slot>` in the wrapped Stencil\n * render, plain inputs only.\n */\n@Component({\n selector: 'ks-spinner',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsSpinnerComponent {\n private readonly el: KsSpinnerElement;\n\n /** Spinner size */\n readonly size = input<KsSize>('md');\n\n /** Spinner variant/color */\n readonly variant = input<KsBaseVariant>('brand');\n\n /** Optional text to display */\n readonly text = input('');\n\n /** Center the spinner in container */\n readonly centered = input(false);\n\n constructor(ref: ElementRef<KsSpinnerElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.size = this.size()));\n effect(() => (this.el.variant = this.variant()));\n effect(() => (this.el.text = this.text()));\n effect(() => (this.el.centered = this.centered()));\n }\n}\n","// Side-effect import: registers the `ks-toast-outlet` tag — see\n// `Buttons/button/button.ts` for the full explanation of this pattern.\nimport '@kraft.stitch/core/dist/components/ks-toast-outlet.js';\n\nimport { ChangeDetectionStrategy, Component, ElementRef, effect, input } from '@angular/core';\nimport type { KsToastPosition } from '@kraft.stitch/core';\n\n/**\n * Re-exported so Angular consumers don't need a separate `@kraft.stitch/core`\n * import for the imperative side of the toast system. `toastStore` is a\n * plain module-level singleton (see `core/src/utils/ks-toast.store.ts`)\n * — there's no DI/service wrapper needed; call\n * `toastStore.show('Saved!', { variant: 'success' })` directly from any\n * component or service, and any mounted `<ks-toast>` (`KsToastComponent`)\n * on the page will pick it up via its internal subscription.\n */\nexport { toastStore } from '@kraft.stitch/core';\nexport type { KsToast, KsToastPosition } from '@kraft.stitch/core';\n\n/** DOM shape of the real `<ks-toast-outlet>` custom element, typed for the wrapper. */\ntype KsToastOutletElement = HTMLElement & {\n position: KsToastPosition;\n};\n\n/**\n * Angular wrapper around the `<ks-toast-outlet>` Stencil custom element.\n * Named `KsToastOutletComponent` (matching the literal tag, not just\n * `KsToastComponent`) for consistency with the React wrapper, which must\n * avoid colliding with the re-exported `KsToast` *data* interface above\n * (TypeScript disallows a value and a type export sharing one identifier\n * from the same module) — see `react/src/components/Notification/toast/toast.tsx`.\n * `<ks-toast-outlet position=\"top-right\" />` is all a consumer needs; add\n * one per screen corner they want to stack toasts in.\n *\n * No `<slot>`, no events — it purely subscribes to the shared\n * `toastStore` singleton (re-exported above) and renders whatever's\n * enqueued.\n */\n@Component({\n selector: 'ks-toast-outlet',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KsToastOutletComponent {\n private readonly el: KsToastOutletElement;\n\n /** Where on screen to stack toasts */\n readonly position = input<KsToastPosition>('top-right');\n\n constructor(ref: ElementRef<KsToastOutletElement>) {\n this.el = ref.nativeElement;\n\n effect(() => (this.el.position = this.position()));\n }\n}\n","/**\n * Public API surface of `@ks/wc-angular`.\n */\n\n/* ================= Buttons ================= */\nexport * from './lib/Buttons/button/button';\nexport * from './lib/Buttons/button-group/button-group';\nexport * from './lib/Buttons/chips/chips';\nexport * from './lib/Buttons/fab/fab';\n\n/* ================= Calendars ================= */\nexport * from './lib/Calendars/datepicker/datepicker';\nexport * from './lib/Calendars/daterange/daterange';\nexport * from './lib/Calendars/timepicker/timepicker';\n\n/* ================= Dropdowns ================= */\nexport * from './lib/Dropdowns/dropdown/dropdown';\nexport * from './lib/Dropdowns/listbox/listbox';\n\n/* ================= Inputs ================= */\nexport * from './lib/Inputs/checkbox/checkbox';\nexport * from './lib/Inputs/colour-picker/colour-picker';\nexport * from './lib/Inputs/input/input';\nexport * from './lib/Inputs/otp-input/otp-input';\nexport * from './lib/Inputs/radio/radio';\nexport * from './lib/Inputs/rating/rating';\nexport * from './lib/Inputs/slider/slider';\nexport * from './lib/Inputs/switch/switch';\nexport * from './lib/Inputs/textarea/textarea';\nexport * from './lib/Inputs/theme-switch/theme-switch';\nexport * from './lib/Inputs/uploader/uploader';\n\n/* ================= Layout ================= */\nexport * from './lib/Layout/avatar/avatar';\nexport * from './lib/Layout/card/card';\nexport * from './lib/Layout/code-view/code-view';\nexport * from './lib/Layout/dialog/dialog';\nexport * from './lib/Layout/not-found/not-found';\nexport * from './lib/Layout/sidebar/sidebar';\nexport * from './lib/Layout/table/table';\nexport * from './lib/Layout/tooltip/tooltip';\n\n/* ================= Navigation ================= */\nexport * from './lib/Navigation/accordion/accordion';\nexport * from './lib/Navigation/breadcrumb/breadcrumb';\nexport * from './lib/Navigation/carousel/carousel';\nexport * from './lib/Navigation/context-menu/context-menu';\nexport * from './lib/Navigation/nav-bar/nav-bar';\nexport * from './lib/Navigation/pagination/pagination';\nexport * from './lib/Navigation/stepper/stepper';\nexport * from './lib/Navigation/tab/tab';\nexport * from './lib/Navigation/toolbar/toolbar';\nexport * from './lib/Navigation/top-nav-bar/top-nav-bar';\nexport * from './lib/Navigation/tree-view/tree-view';\n\n/* ================= Notification ================= */\nexport * from './lib/Notification/badge/badge';\nexport * from './lib/Notification/loader/loader';\nexport * from './lib/Notification/message/message';\nexport * from './lib/Notification/progress/progress';\nexport * from './lib/Notification/spinner/spinner';\nexport * from './lib/Notification/toast/toast';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|