yukit-web 0.0.12 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"yukit-web.mjs","sources":["../../../projects/yukit-web/src/lib/utils/cn.ts","../../../projects/yukit-web/src/lib/utils/value-accessor.ts","../../../projects/yukit-web/src/lib/components/button/button-group-text.directive.ts","../../../projects/yukit-web/src/lib/components/button/button.variants.ts","../../../projects/yukit-web/src/lib/components/button/button.component.ts","../../../projects/yukit-web/src/lib/components/button/button.component.html","../../../projects/yukit-web/src/lib/components/badge/badge.component.ts","../../../projects/yukit-web/src/lib/components/badge/badge.component.html","../../../projects/yukit-web/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/yukit-web/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/yukit-web/src/lib/components/pagination/pagination.util.ts","../../../projects/yukit-web/src/lib/components/pagination/pagination.component.ts","../../../projects/yukit-web/src/lib/components/pagination/pagination.component.html","../../../projects/yukit-web/src/lib/utils/field-size.variants.ts","../../../projects/yukit-web/src/lib/components/combobox/combobox-item.directive.ts","../../../projects/yukit-web/src/lib/components/combobox/combobox.component.ts","../../../projects/yukit-web/src/lib/components/combobox/combobox.component.html","../../../projects/yukit-web/src/lib/components/accordion/accordion.directive.ts","../../../projects/yukit-web/src/lib/components/accordion/accordion-item.directive.ts","../../../projects/yukit-web/src/lib/components/accordion/accordion-trigger.component.ts","../../../projects/yukit-web/src/lib/components/accordion/accordion-trigger.component.html","../../../projects/yukit-web/src/lib/components/accordion/accordion-content.component.ts","../../../projects/yukit-web/src/lib/components/accordion/accordion-content.component.html","../../../projects/yukit-web/src/lib/components/accordion/accordion.imports.ts","../../../projects/yukit-web/src/lib/components/input/input-addon.directive.ts","../../../projects/yukit-web/src/lib/components/input/input.component.ts","../../../projects/yukit-web/src/lib/components/input/input.component.html","../../../projects/yukit-web/src/lib/components/textarea/textarea.component.ts","../../../projects/yukit-web/src/lib/components/textarea/textarea.component.html","../../../projects/yukit-web/src/lib/components/search-input/search-input.variants.ts","../../../projects/yukit-web/src/lib/components/search-input/search-input.component.ts","../../../projects/yukit-web/src/lib/components/search-input/search-input.component.html","../../../projects/yukit-web/src/lib/components/password-input/password-input.reveal.ts","../../../projects/yukit-web/src/lib/components/password-input/password-input.component.ts","../../../projects/yukit-web/src/lib/components/password-input/password-input.component.html","../../../projects/yukit-web/src/lib/components/input-otp/input-otp.variants.ts","../../../projects/yukit-web/src/lib/components/input-otp/input-otp.layout.ts","../../../projects/yukit-web/src/lib/components/input-otp/input-otp.component.ts","../../../projects/yukit-web/src/lib/components/input-otp/input-otp.component.html","../../../projects/yukit-web/src/lib/components/label/label.directive.ts","../../../projects/yukit-web/src/lib/components/checkbox/checkbox.variants.ts","../../../projects/yukit-web/src/lib/components/checkbox/checkbox.component.ts","../../../projects/yukit-web/src/lib/components/checkbox/checkbox.component.html","../../../projects/yukit-web/src/lib/components/switch/switch.variants.ts","../../../projects/yukit-web/src/lib/components/switch/switch.component.ts","../../../projects/yukit-web/src/lib/components/switch/switch.component.html","../../../projects/yukit-web/src/lib/components/radio-group/radio-group.component.ts","../../../projects/yukit-web/src/lib/components/radio-group/radio-group.component.html","../../../projects/yukit-web/src/lib/components/skeleton/skeleton.directive.ts","../../../projects/yukit-web/src/lib/components/card/card.directives.ts","../../../projects/yukit-web/src/lib/components/empty/empty.directives.ts","../../../projects/yukit-web/src/lib/components/context-menu/context-menu-checkbox-indicator.component.ts","../../../projects/yukit-web/src/lib/components/context-menu/context-menu-checkbox-indicator.component.html","../../../projects/yukit-web/src/lib/components/context-menu/context-menu-radio-indicator.component.ts","../../../projects/yukit-web/src/lib/components/context-menu/context-menu-radio-indicator.component.html","../../../projects/yukit-web/src/lib/components/context-menu/context-menu-sub-indicator.component.ts","../../../projects/yukit-web/src/lib/components/context-menu/context-menu-sub-indicator.component.html","../../../projects/yukit-web/src/lib/components/context-menu/context-menu.directives.ts","../../../projects/yukit-web/src/lib/components/datepicker/datepicker.component.ts","../../../projects/yukit-web/src/lib/components/datepicker/datepicker.component.html","../../../projects/yukit-web/src/lib/components/table/table.directives.ts","../../../projects/yukit-web/src/lib/components/table/datatable.variants.ts","../../../projects/yukit-web/src/lib/components/table/datatable.component.ts","../../../projects/yukit-web/src/lib/components/table/datatable.component.html","../../../projects/yukit-web/src/lib/components/table/row-select/datatable-row-select.component.ts","../../../projects/yukit-web/src/lib/components/avatar/avatar.component.ts","../../../projects/yukit-web/src/lib/components/avatar/avatar.component.html","../../../projects/yukit-web/src/lib/components/item/item.directives.ts","../../../projects/yukit-web/src/lib/components/sheet/sheet.directives.ts","../../../projects/yukit-web/src/lib/components/sheet/sheet-footer.directive.ts","../../../projects/yukit-web/src/lib/components/sheet/sheet.component.ts","../../../projects/yukit-web/src/lib/components/sheet/sheet.component.html","../../../projects/yukit-web/src/lib/components/popover/popover.directives.ts","../../../projects/yukit-web/src/lib/components/popover/popover.component.ts","../../../projects/yukit-web/src/lib/components/popover/popover.component.html","../../../projects/yukit-web/src/lib/components/tooltip/tooltip.directive.ts","../../../projects/yukit-web/src/lib/components/spinner/spinner.component.ts","../../../projects/yukit-web/src/lib/components/spinner/spinner.component.html","../../../projects/yukit-web/src/lib/components/toaster/toaster.component.ts","../../../projects/yukit-web/src/lib/components/toaster/toaster.component.html","../../../projects/yukit-web/src/lib/components/alert/alert-action.directive.ts","../../../projects/yukit-web/src/lib/components/alert/alert-description.directive.ts","../../../projects/yukit-web/src/lib/components/alert/alert-title.directive.ts","../../../projects/yukit-web/src/lib/components/alert/alert.component.ts","../../../projects/yukit-web/src/lib/components/alert/alert.component.html","../../../projects/yukit-web/src/lib/components/dialog/dialog.directives.ts","../../../projects/yukit-web/src/lib/components/dialog/dialog-footer.directive.ts","../../../projects/yukit-web/src/lib/components/dialog/dialog.component.ts","../../../projects/yukit-web/src/lib/components/dialog/dialog.component.html","../../../projects/yukit-web/src/lib/components/alert-dialog/alert-dialog.directives.ts","../../../projects/yukit-web/src/lib/components/alert-dialog/alert-dialog-media.directive.ts","../../../projects/yukit-web/src/lib/components/alert-dialog/alert-dialog.component.ts","../../../projects/yukit-web/src/lib/components/alert-dialog/alert-dialog.component.html","../../../projects/yukit-web/src/lib/components/tabs/tabs.variants.ts","../../../projects/yukit-web/src/lib/components/tabs/tab-panel.directive.ts","../../../projects/yukit-web/src/lib/components/tabs/tabs.component.ts","../../../projects/yukit-web/src/lib/components/tabs/tabs.component.html","../../../projects/yukit-web/src/lib/components/attachment/attachment.directives.ts","../../../projects/yukit-web/src/lib/components/sidebar/sidebar.variants.ts","../../../projects/yukit-web/src/lib/components/sidebar/sidebar-rail.service.ts","../../../projects/yukit-web/src/lib/components/sidebar/sidebar.directives.ts","../../../projects/yukit-web/src/lib/components/sidebar/sidebar-submenu.service.ts","../../../projects/yukit-web/src/lib/components/sidebar/sidebar-nav.component.ts","../../../projects/yukit-web/src/lib/components/sidebar/sidebar-nav.component.html","../../../projects/yukit-web/src/lib/components/sidebar/sidebar-submenu-sheet.component.ts","../../../projects/yukit-web/src/lib/components/sidebar/sidebar-submenu-sheet.component.html","../../../projects/yukit-web/src/lib/components/sidebar/sidebar.component.ts","../../../projects/yukit-web/src/lib/components/sidebar/sidebar.component.html","../../../projects/yukit-web/src/lib/components/sidebar/sidebar-trigger.component.ts","../../../projects/yukit-web/src/lib/components/sidebar/sidebar-trigger.component.html","../../../projects/yukit-web/src/public-api.ts","../../../projects/yukit-web/src/yukit-web.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * Merges class lists the shadcn/Spartan way: `clsx` resolves conditionals/arrays, `twMerge`\n * then drops earlier Tailwind classes that a later one overrides (e.g. `px-3 ... px-4` keeps\n * only `px-4`) instead of shipping both to the DOM.\n *\n * Every yukit-web component's variant classes are combined through this, so a consumer's own\n * `class` input always wins over the component's defaults without fighting specificity.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { Directive, forwardRef, type ModelSignal, type Provider, signal, type Type } from '@angular/core';\nimport { type ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Registers a component as a form control, so `formControlName`/`formControl`/`ngModel` bind to it.\n *\n * Spartan's own controls mostly don't need this: `hlmInput` and `hlmTextarea` are *directives on a\n * native element*, so Angular's built-in `DefaultValueAccessor` already applies to the same host.\n * The moment we wrap that native element inside a component template, the host a consumer writes\n * `formControlName` on is no longer the `<input>` — Angular finds no accessor there and throws\n * `NG01203`. This restores what the wrapping cost us.\n *\n * Kept as a `useExisting` + `forwardRef` provider because the class is referenced in its own\n * decorator metadata, before the class binding is initialized.\n */\nexport function provideValueAccessor(component: Type<unknown>): Provider {\n return {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => component),\n multi: true,\n };\n}\n\n/**\n * Shared `ControlValueAccessor` for the library's text-entry controls.\n *\n * Exists so the five text components don't each carry a near-identical copy of the same CVA\n * plumbing — the single-responsibility and DRY concerns in `agents.md`. Subclasses supply nothing;\n * they just extend it, add the provider, and bind `value`/`_onBlur()` in their template.\n *\n * ## Why `disabled` needs care\n *\n * `disabled` has two sources that don't know about each other: our own `disabled` input, and the\n * forms API calling `setDisabledState()` (which is what `new FormControl({value, disabled: true})`\n * and `control.disable()` go through). Letting either one own a single signal means the last\n * writer wins and the other is silently ignored — the classic bug in hand-rolled accessors.\n *\n * They're kept as two separate signals and OR'd together in `disabledState`: disabled by *either*\n * source means disabled. That's the only combination that never drops a caller's intent.\n */\n@Directive({})\nexport abstract class YuwValueAccessorBase<T> implements ControlValueAccessor {\n protected readonly _formDisabled = signal(false);\n private _onChange: (value: T) => void = () => undefined;\n private _onTouched: () => void = () => undefined;\n abstract readonly value: ModelSignal<T>;\n\n registerOnChange(fn: (value: T) => 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._formDisabled.set(isDisabled);\n }\n\n writeValue(value: T | null | undefined): void {\n this.value.set(value ?? this._emptyValue());\n }\n\n protected _commit(next: T): void {\n this.value.set(next);\n this._onChange(next);\n }\n\n protected abstract _emptyValue(): T;\n\n protected _isDisabled(ownDisabled: boolean): boolean {\n return ownDisabled || this._formDisabled();\n }\n\n protected _onBlur(): void {\n this._onTouched();\n }\n}\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\n\n/**\n * Declares the content of a single text segment inside `<yuw-button>`'s button group. Apply it to\n * an `<ng-template>` and pass the id of the `kind: 'text'` entry it belongs to, matching an entry\n * in the `buttons` input.\n *\n * Exists because a text segment often isn't text — a checkbox, a badge, an icon with a count — and a\n * component cannot travel through a data array. An entry whose id has no matching template falls\n * back to its `label`, so the plain-string case needs no template at all.\n *\n * Usage:\n * ```html\n * <yuw-button [buttons]=\"entries\">\n * <ng-template yuwButtonGroupText=\"select-all\">\n * <yuw-checkbox [(checked)]=\"allSelected\" />\n * </ng-template>\n * </yuw-button>\n * ```\n */\n@Directive({\n selector: 'ng-template[yuwButtonGroupText]',\n})\nexport class YuwButtonGroupTextDirective {\n readonly templateRef = inject<TemplateRef<unknown>>(TemplateRef);\n\n readonly entryId = input.required<string>({ alias: 'yuwButtonGroupText' });\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\n\n/**\n * yukit-web's own class layer for `<yuw-button>`, applied on top of the helm `buttonVariants()`\n * output. The result lands on the `[class]` binding of the inner `[hlmBtn]` element; the helm\n * `classes()` utility registers it as base classes and merges it last through `twMerge`, so every\n * class here beats the helm default of the same Tailwind group *and* modifier stack without\n * needing `!important`.\n */\nexport const yuwButtonVariants = cva('', {\n variants: {\n /**\n * Mirrors the helm `variant` input. Only `outline` needs correcting: helm paints it with\n * `bg-background` (+ `dark:bg-input/30`) and a muted text color, while ours is transparent at\n * rest and uses the foreground color (which `[data-yuw-color]` remaps to the accent). The\n * helm `hover:`/`aria-expanded:` backgrounds are intentionally left in place.\n */\n variant: {\n default: '',\n secondary: '',\n outline: 'bg-transparent text-foreground dark:bg-transparent',\n ghost: '',\n destructive: '',\n link: '',\n },\n size: {\n default: 'h-10',\n xs: 'h-7',\n sm: 'h-9',\n lg: 'h-11',\n icon: 'size-10',\n 'icon-xs': 'size-7',\n 'icon-sm': 'size-9',\n 'icon-lg': 'size-11',\n },\n /**\n * Strips every background/border the helm variants set, covering each modifier stack they\n * use (`hover:`, `aria-expanded:`, `dark:`, `dark:hover:`, `[a]:hover:`) so `twMerge` drops\n * the helm counterpart in every state. The `component-colors.css` gradients key off the\n * `.bg-primary` class, which this merge removes from the element, so they never match a\n * transparent button and no `!important` is needed here either.\n */\n transparent: {\n true: 'border-transparent bg-transparent text-foreground hover:bg-transparent aria-expanded:bg-transparent aria-expanded:text-foreground dark:border-transparent dark:bg-transparent dark:hover:bg-transparent [a]:hover:bg-transparent',\n false: '',\n },\n animationDisabled: {\n true: 'active:translate-y-0!',\n false: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n transparent: false,\n },\n});\n\nexport type YuwButtonVariants = VariantProps<typeof yuwButtonVariants>;\n\nexport const yuwButtonGroupTextClass = 'bg-transparent text-foreground border-border dark:border-input';\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n ElementRef,\n inject,\n input,\n output,\n TemplateRef,\n} from '@angular/core';\nimport { type ButtonVariants, HlmButton } from 'yukit-web/helm/button';\nimport { HlmButtonGroup, HlmButtonGroupText } from 'yukit-web/helm/button-group';\nimport { HlmDropdownMenuTrigger } from 'yukit-web/helm/dropdown-menu';\nimport type { YuwColorDto } from '../../interface/color.interface';\nimport { cn } from '../../utils/cn';\nimport type {\n YuwButtonGroupClickDto,\n YuwButtonGroupEntryDto,\n YuwButtonGroupItemDto,\n} from './button-group-item.interface';\nimport { YuwButtonGroupTextDirective } from './button-group-text.directive';\nimport { yuwButtonGroupTextClass, yuwButtonVariants } from './button.variants';\n\n/**\n * Button component supporting single action button or grouped button options.\n *\n * Inputs:\n * - `variant`: Button style variant (`'default'`, `'secondary'`, `'outline'`, `'destructive'`, `'ghost'`, `'link'`). Default is `'default'`.\n * - `size`: Button size (`'default'`, `'sm'`, `'lg'`, `'icon'`, etc.). Default is `'default'`.\n * - `color`: Brand color theme (any `YuwColorDto` value). Default is `'secondary'`.\n * - `disabled`: Disables button interactions.\n * - `type`: HTML button type (`'button'`, `'submit'`, `'reset'`). Default is `'button'`.\n * - `href`: Renders button as an anchor tag navigating to specified URL.\n * - `target`: Target attribute for link button (e.g. `'_blank'`).\n * - `transparent`: Removes background and border styling.\n * - `class`: Extra CSS classes merged onto the inner button/anchor (single and link mode); merged last, so they win over the component's own classes.\n * - `yuwDropdownMenuTrigger`: Optional dropdown menu template reference to trigger.\n * - `ariaLabel`: Accessible label for screen readers.\n * - `buttons`: Array of group entries (`YuwButtonGroupEntryDto[]`) to render as a welded button group.\n * A `kind: 'text'` entry renders a static, non-interactive segment instead of a button; give it an\n * `<ng-template yuwButtonGroupText=\"<id>\">` to fill it with markup rather than a plain `label`.\n * - `orientation`: Group layout orientation (`'horizontal'` or `'vertical'`). Default is `'horizontal'`.\n * - `groupAriaLabel`: Accessible name for button group container.\n *\n * Outputs:\n * - `clicked`: Emits MouseEvent on single button click.\n * - `buttonClicked`: Emits object containing clicked button `id` and `event` in group mode.\n *\n * `_btnClass` merges our variant layer with the consumer's `class`, which goes last so it wins.\n *\n * `_resolved` gives each group entry everything its branch of the template needs. A text entry has\n * no variant/size/color to fall back to, so it takes its own path rather than being run through the\n * button resolver, which would invent fields its DTO doesn't declare. Its content template is looked\n * up through a `Map` rather than a per-entry `.find()`, which would make an n-entry group cost n².\n *\n * The host carries `inline-flex` so it is a real box rather than an inline one: an overlay trigger\n * directive composed onto `<yuw-button>` (see `YuwPopoverTriggerDirective`) anchors its panel to the\n * host element, and an inline host reports a rect that misses the button's own box. Elements that\n * need to be positioned — an overlay's close button, for instance — get a positioned wrapper around\n * `<yuw-button>` rather than relying on the host's own display.\n *\n * Single Button Usage:\n * ```html\n * <yuw-button variant=\"outline\" color=\"primary\" (clicked)=\"onSave()\">Save</yuw-button>\n * <yuw-button href=\"/dashboard\">Navigate</yuw-button>\n * ```\n *\n * Button Group Usage:\n * ```html\n * <yuw-button [buttons]=\"actionList\" (buttonClicked)=\"onAction($event)\" />\n *\n * <yuw-button [buttons]=\"[{id: 'caption', kind: 'text', label: 'Sort by'}, ...sortActions]\">\n * <ng-template yuwButtonGroupText=\"select-all\">\n * <yuw-checkbox [(checked)]=\"allSelected\" />\n * </ng-template>\n * </yuw-button>\n * ```\n */\n@Component({\n selector: 'yuw-button',\n imports: [NgTemplateOutlet, HlmButton, HlmButtonGroup, HlmButtonGroupText, HlmDropdownMenuTrigger],\n host: {\n class: 'inline-flex',\n '[class.cursor-not-allowed]': 'disabled()',\n '[attr.data-yuw-color]': 'color()',\n },\n templateUrl: './button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwButtonComponent {\n private readonly _host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n private readonly _texts = contentChildren(YuwButtonGroupTextDirective);\n\n readonly animationDisabled = input<boolean>(false);\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly buttons = input<YuwButtonGroupEntryDto[] | undefined>(undefined);\n readonly color = input<YuwColorDto>('secondary');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly groupAriaLabel = input<string | undefined>(undefined);\n readonly href = input<string | undefined>(undefined);\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n readonly size = input<ButtonVariants['size']>('default');\n readonly target = input<string | undefined>(undefined);\n readonly transparent = input(false, { transform: booleanAttribute });\n readonly type = input<'button' | 'submit' | 'reset'>('button');\n readonly userClass = input<string>('', { alias: 'class' });\n readonly variant = input<ButtonVariants['variant']>('default');\n readonly yuwDropdownMenuTrigger = input<TemplateRef<unknown> | undefined>(undefined);\n\n readonly buttonClicked = output<YuwButtonGroupClickDto>();\n readonly clicked = output<MouseEvent>();\n\n protected readonly _textClass = yuwButtonGroupTextClass;\n\n protected readonly _animationDisabled = computed(\n () => this.animationDisabled() || this._host.nativeElement.hasAttribute('aria-haspopup'),\n );\n protected readonly _effectiveVariant = computed<ButtonVariants['variant']>(() =>\n this.transparent() ? 'ghost' : this.variant(),\n );\n protected readonly _btnClass = computed(() =>\n cn(\n yuwButtonVariants({\n size: this.size(),\n variant: this._effectiveVariant(),\n transparent: this.transparent(),\n animationDisabled: this._animationDisabled(),\n }),\n this.userClass(),\n ),\n );\n protected readonly _isGroup = computed(() => (this.buttons()?.length ?? 0) > 0);\n protected readonly _resolved = computed(() => {\n const templates = new Map(this._texts().map((text) => [text.entryId(), text.templateRef]));\n\n return (this.buttons() ?? []).map((entry) => {\n if (entry.kind === 'text') {\n return { ...entry, template: templates.get(entry.id) };\n }\n\n const transparent = entry.transparent ?? false;\n const variant = transparent ? 'ghost' : (entry.variant ?? this.variant());\n return {\n ...entry,\n variant,\n size: entry.size ?? this.size(),\n color: entry.color ?? this.color(),\n disabled: entry.disabled ?? false,\n type: entry.type ?? ('button' as const),\n class: yuwButtonVariants({ variant, transparent, animationDisabled: this._animationDisabled() }),\n };\n });\n });\n\n protected onClick(event: MouseEvent): void {\n if (this.disabled()) {\n return;\n }\n this.clicked.emit(event);\n }\n\n protected onGroupClick(button: YuwButtonGroupItemDto, event: MouseEvent): void {\n if (button.disabled) {\n return;\n }\n this.buttonClicked.emit({ id: button.id, event });\n }\n}\n","@if (_isGroup()) {\n <div hlmButtonGroup [orientation]=\"orientation()\" [attr.aria-label]=\"groupAriaLabel()\">\n @for (button of _resolved(); track button.id) {\n @if (button.kind === 'text') {\n <hlm-button-group-text [class]=\"_textClass\">\n @if (button.template) {\n <ng-container [ngTemplateOutlet]=\"button.template\" />\n } @else {\n {{ button.label }}\n }\n </hlm-button-group-text>\n } @else if (button.href && !button.disabled) {\n <a\n hlmBtn\n [variant]=\"button.variant\"\n [size]=\"button.size\"\n [href]=\"button.href\"\n [target]=\"button.target\"\n [attr.data-yuw-color]=\"button.color\"\n [attr.aria-label]=\"button.ariaLabel\"\n (click)=\"onGroupClick(button, $event)\"\n [hlmDropdownMenuTrigger]=\"button.yuwDropdownMenuTrigger\"\n [class]=\"button.class\"\n >\n {{ button.label }}\n </a>\n } @else {\n <button\n hlmBtn\n [variant]=\"button.variant\"\n [size]=\"button.size\"\n [type]=\"button.type\"\n [disabled]=\"button.disabled\"\n [attr.data-yuw-color]=\"button.color\"\n [attr.aria-label]=\"button.ariaLabel\"\n (click)=\"onGroupClick(button, $event)\"\n [hlmDropdownMenuTrigger]=\"button.yuwDropdownMenuTrigger\"\n [class]=\"button.class\"\n >\n {{ button.label }}\n </button>\n }\n }\n </div>\n} @else if (href(); as hrefValue) {\n <a\n hlmBtn\n [variant]=\"_effectiveVariant()\"\n [size]=\"size()\"\n [disabled]=\"disabled()\"\n [href]=\"disabled() ? null : hrefValue\"\n [target]=\"target()\"\n [attr.aria-label]=\"ariaLabel()\"\n (click)=\"onClick($event)\"\n [hlmDropdownMenuTrigger]=\"yuwDropdownMenuTrigger()\"\n [class]=\"_btnClass()\"\n >\n <ng-content select=\"[yuwButtonIcon]\" />\n <ng-content />\n </a>\n} @else {\n <button\n hlmBtn\n [variant]=\"_effectiveVariant()\"\n [size]=\"size()\"\n [type]=\"type()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n (click)=\"onClick($event)\"\n [hlmDropdownMenuTrigger]=\"yuwDropdownMenuTrigger()\"\n [class]=\"_btnClass()\"\n >\n <ng-content select=\"[yuwButtonIcon]\" />\n <ng-content />\n </button>\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideX } from '@ng-icons/lucide';\nimport { type BadgeVariants, HlmBadge } from 'yukit-web/helm/badge';\nimport { YuwButtonComponent } from '../button/button.component';\nimport type { YuwColorDto } from '../../interface/color.interface';\n\n/** Text class for the remove button per helm badge variant, mirroring each variant's own foreground. */\nconst REMOVE_TEXT_CLASS: Record<NonNullable<BadgeVariants['variant']>, string> = {\n default: 'text-primary-foreground hover:text-primary-foreground',\n secondary: 'text-secondary-foreground hover:text-secondary-foreground',\n destructive: 'text-destructive hover:text-destructive',\n outline: 'text-foreground hover:text-foreground',\n ghost: 'text-foreground hover:text-foreground',\n link: 'text-primary hover:text-primary',\n};\n\n/**\n * Renders a small badge or tag component for status indicators, counts, and category labels.\n *\n * Supports the shared color vocabulary (`color`, any `YuwColorDto` value), variant styles\n * (`variant`), dismissible action (`removeLabel` / `removed`), and a compact dot mode (`dot`)\n * that renders no content at all.\n *\n * Usage:\n * ```html\n * <yuw-badge color=\"primary\">New</yuw-badge>\n * <yuw-badge removeLabel=\"Remove tag\" (removed)=\"onRemove()\">Category</yuw-badge>\n * <yuw-badge dot color=\"success\" />\n * ```\n */\n@Component({\n selector: 'yuw-badge',\n hostDirectives: [{ directive: HlmBadge, inputs: ['variant'] }],\n imports: [YuwButtonComponent, NgIcon],\n providers: [provideIcons({ lucideX })],\n host: {\n '[class]': 'dotClass()',\n '[attr.data-yuw-color]': 'color()',\n },\n templateUrl: './badge.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwBadgeComponent {\n readonly color = input<YuwColorDto>('primary');\n readonly dot = input(false, { transform: booleanAttribute });\n readonly removeLabel = input<string | undefined>(undefined);\n readonly variant = input<BadgeVariants['variant']>('default');\n\n readonly removed = output<void>();\n\n protected readonly dotClass = computed(() => (this.dot() ? 'size-4 p-0' : ''));\n protected readonly removeClass = computed(() => REMOVE_TEXT_CLASS[this.variant() ?? 'default']);\n\n protected onRemoveClick(event: Event): void {\n event.stopPropagation();\n this.removed.emit();\n }\n}\n","@if (!dot()) {\n <ng-content select=\"[yuwBadgeIcon]\" />\n <span class=\"truncate\"><ng-content /></span>\n\n @if (removeLabel()) {\n <yuw-button\n variant=\"ghost\"\n size=\"icon-xs\"\n [color]=\"color()\"\n [ariaLabel]=\"removeLabel()\"\n [class]=\"removeClass()\"\n (clicked)=\"onRemoveClick($event)\"\n >\n <ng-icon name=\"lucideX\" />\n </yuw-button>\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { HlmBreadcrumbImports } from 'yukit-web/helm/breadcrumb';\nimport type { YuwBreadcrumbItemDto } from './breadcrumb-item.interface';\n\n/**\n * Navigation breadcrumb bar displaying page hierarchy and links.\n *\n * Accepts an array of item objects (`items`), custom separator text (`separator`), and a required\n * accessible label (`ariaLabel`). The last item is announced as the current page\n * (`aria-current=\"page\"`); intermediate items render as links when they have an `href` and as\n * plain text otherwise.\n *\n * Usage:\n * ```html\n * <yuw-breadcrumb\n * [items]=\"[{ label: 'Inicio', href: '/' }, { label: 'Ajustes' }]\"\n * ariaLabel=\"Ruta de navegación\"\n * />\n * ```\n */\n@Component({\n selector: 'yuw-breadcrumb',\n imports: [...HlmBreadcrumbImports],\n templateUrl: './breadcrumb.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwBreadcrumbComponent {\n readonly ariaLabel = input.required<string>();\n readonly items = input.required<YuwBreadcrumbItemDto[]>();\n readonly separator = input('/');\n}\n","<nav hlmBreadcrumb [aria-label]=\"ariaLabel()\">\n <ol hlmBreadcrumbList>\n @for (item of items(); track $index; let last = $last) {\n <li hlmBreadcrumbItem>\n @if (last) {\n <span hlmBreadcrumbPage>{{ item.label }}</span>\n } @else if (item.href) {\n <a hlmBreadcrumbLink [link]=\"item.href\">{{ item.label }}</a>\n } @else {\n <span class=\"font-normal\">{{ item.label }}</span>\n }\n </li>\n @if (!last) {\n <li hlmBreadcrumbSeparator>{{ separator() }}</li>\n }\n }\n </ol>\n</nav>\n","export type YuwPaginationRangeItem = number | 'ellipsis';\n\n/**\n * Pure function on purpose: the page-range math has nothing to do with Angular, so it's testable\n * in isolation and keeps `pagination.component.ts` limited to wiring inputs/outputs.\n *\n * Always shows page 1 and the last page, plus the current page and its immediate neighbors,\n * collapsing any gap into a single `'ellipsis'` entry.\n */\nexport function getPaginationRange(page: number, totalPages: number): YuwPaginationRangeItem[] {\n if (totalPages <= 7) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const range: YuwPaginationRangeItem[] = [1];\n const start = Math.max(2, page - 1);\n const end = Math.min(totalPages - 1, page + 1);\n\n if (start > 2) {\n range.push('ellipsis');\n }\n\n for (let i = start; i <= end; i++) {\n range.push(i);\n }\n\n if (end < totalPages - 1) {\n range.push('ellipsis');\n }\n\n range.push(totalPages);\n\n return range;\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronLeft, lucideChevronRight } from '@ng-icons/lucide';\nimport {\n HlmPagination,\n HlmPaginationContent,\n HlmPaginationEllipsis,\n HlmPaginationItem,\n HlmPaginationLink,\n} from 'yukit-web/helm/pagination';\nimport type { YuwColorDto } from '../../interface/color.interface';\nimport { getPaginationRange } from './pagination.util';\n\n/**\n * Sizes accepted by `<yuw-pagination>`'s `size` input. Mirrors the helm button sizes so the\n * public API doesn't leak the helm's `ButtonVariants` type.\n */\nexport type YuwPaginationSizeDto = 'default' | 'xs' | 'sm' | 'lg' | 'icon' | 'icon-xs' | 'icon-sm' | 'icon-lg';\n\n/**\n * Pagination navigation bar for navigating multi-page content datasets.\n *\n * Controls two-way active page state `[(page)]`, accepts total pages (`totalPages`), accessible\n * previous/next/ellipsis labels, size and color theme.\n *\n * Usage:\n * ```html\n * <yuw-pagination\n * [(page)]=\"currentPage\"\n * [totalPages]=\"10\"\n * previousLabel=\"Página anterior\"\n * nextLabel=\"Página siguiente\"\n * ellipsisSrText=\"Más páginas\"\n * />\n * ```\n */\n@Component({\n selector: 'yuw-pagination',\n imports: [HlmPagination, HlmPaginationContent, HlmPaginationItem, HlmPaginationLink, HlmPaginationEllipsis, NgIcon],\n providers: [provideIcons({ lucideChevronLeft, lucideChevronRight })],\n host: {\n class: 'contents',\n '[attr.data-yuw-color]': 'color()',\n },\n templateUrl: './pagination.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwPaginationComponent {\n readonly ariaLabel = input.required<string>();\n readonly color = input<YuwColorDto>('primary');\n readonly ellipsisSrText = input.required<string>();\n readonly nextLabel = input.required<string>();\n readonly page = model.required<number>();\n readonly previousLabel = input.required<string>();\n readonly size = input<YuwPaginationSizeDto>('icon');\n readonly totalPages = input.required<number>();\n\n protected readonly range = computed(() => getPaginationRange(this.page(), this.totalPages()));\n\n protected goTo(target: number): void {\n if (target < 1 || target > this.totalPages() || target === this.page()) {\n return;\n }\n\n this.page.set(target);\n }\n}\n","<nav hlmPagination [aria-label]=\"ariaLabel()\">\n <ul hlmPaginationContent>\n <li hlmPaginationItem>\n <button\n type=\"button\"\n hlmPaginationLink\n [size]=\"size()\"\n [disabled]=\"page() <= 1\"\n [attr.aria-label]=\"previousLabel()\"\n (click)=\"goTo(page() - 1)\"\n >\n <ng-icon name=\"lucideChevronLeft\" class=\"rtl:rotate-180\" />\n </button>\n </li>\n\n @for (entry of range(); track $index) {\n <li hlmPaginationItem>\n @if (entry === 'ellipsis') {\n <hlm-pagination-ellipsis [srOnlyText]=\"ellipsisSrText()\" />\n } @else if (entry === page()) {\n <button\n type=\"button\"\n hlmPaginationLink\n isActive\n [size]=\"size()\"\n class=\"border-transparent bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground dark:border-transparent dark:bg-primary dark:hover:bg-primary\"\n (click)=\"goTo(entry)\"\n >\n {{ entry }}\n </button>\n } @else {\n <button type=\"button\" hlmPaginationLink [size]=\"size()\" (click)=\"goTo(entry)\">\n {{ entry }}\n </button>\n }\n </li>\n }\n\n <li hlmPaginationItem>\n <button\n type=\"button\"\n hlmPaginationLink\n [size]=\"size()\"\n [disabled]=\"page() >= totalPages()\"\n [attr.aria-label]=\"nextLabel()\"\n (click)=\"goTo(page() + 1)\"\n >\n <ng-icon name=\"lucideChevronRight\" class=\"rtl:rotate-180\" />\n </button>\n </li>\n </ul>\n</nav>\n","import { cva } from 'class-variance-authority';\nimport type { YuwFieldSizeDto } from '../interface/text-field.interface';\n\n/**\n * Height classes for field-shaped controls, keyed by `YuwFieldSizeDto`.\n *\n * Values are copied from `yuwButtonVariants`' `size` group on purpose, so a field and a button of\n * the same size name are the same number of pixels tall. Both helm shells the fields render\n * (`hlmInput` and `hlm-input-group`) hard-code `h-8`, so every size — `default` included — has to\n * emit a class; an empty string for the default would leave the helm height standing.\n *\n * @see yuwFieldMinHeightVariants for the wrapping variant used by the multi-select chips shell.\n */\nexport const yuwFieldSizeVariants = cva('', {\n variants: {\n size: {\n default: 'h-10',\n xs: 'h-7',\n sm: 'h-9',\n lg: 'h-11',\n } satisfies Record<YuwFieldSizeDto, string>,\n },\n defaultVariants: {\n size: 'default',\n },\n});\n\n/**\n * `min-height` counterpart of `yuwFieldSizeVariants`, for shells that grow past one row.\n *\n * The combobox chips shell wraps its selected chips onto further lines, so it is sized by the\n * helm's `min-h-8` rather than a fixed height; pinning `h-*` there would clip the second row.\n */\nexport const yuwFieldMinHeightVariants = cva('', {\n variants: {\n size: {\n default: 'min-h-10',\n xs: 'min-h-7',\n sm: 'min-h-9',\n lg: 'min-h-11',\n } satisfies Record<YuwFieldSizeDto, string>,\n },\n defaultVariants: {\n size: 'default',\n },\n});\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\nimport type { YuwComboboxOptionDto } from './combobox-option.interface';\n\n/** The `let-` context of a `*yuwComboboxItem` template. `$implicit` is the option itself, so\n * `let-option` works; `selected` is passed alongside because an item that renders its own\n * markup loses the default check glyph and often needs to show that state some other way. */\nexport interface YuwComboboxItemContext<TData = unknown> {\n $implicit: YuwComboboxOptionDto<TData>;\n option: YuwComboboxOptionDto<TData>;\n selected: boolean;\n}\n\n/**\n * Structural directive for custom option item templates in `yuw-combobox`.\n *\n * Exposes the option object (`let-option`) and selection state (`let-selected=\"selected\"`).\n *\n * Usage:\n * ```html\n * <yuw-combobox [options]=\"users\" [(value)]=\"userId\">\n * <ng-template yuwComboboxItem let-option let-selected=\"selected\">\n * <img [src]=\"option.data.avatar\" /> {{ option.label }}\n * </ng-template>\n * </yuw-combobox>\n * ```\n */\n@Directive({\n selector: '[yuwComboboxItem]',\n})\nexport class YuwComboboxItemDirective<TData = unknown> {\n readonly templateRef = inject<TemplateRef<YuwComboboxItemContext<TData>>>(TemplateRef);\n\n readonly typeOf = input<YuwComboboxOptionDto<TData>[] | undefined>(undefined, {\n alias: 'yuwComboboxItemTypeOf',\n });\n\n static ngTemplateContextGuard<TData>(\n _directive: YuwComboboxItemDirective<TData>,\n _context: unknown,\n ): _context is YuwComboboxItemContext<TData> {\n return true;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n ElementRef,\n input,\n model,\n viewChild,\n} from '@angular/core';\nimport { HlmComboboxContent, HlmComboboxImports } from 'yukit-web/helm/combobox';\nimport type { YuwFieldSizeDto } from '../../interface/text-field.interface';\nimport { yuwFieldMinHeightVariants, yuwFieldSizeVariants } from '../../utils/field-size.variants';\nimport { yuwButtonVariants } from '../button/button.variants';\nimport { provideValueAccessor, YuwValueAccessorBase } from '../../utils/value-accessor';\nimport { YuwComboboxItemDirective } from './combobox-item.directive';\nimport type { YuwComboboxOptionDto } from './combobox-option.interface';\n\nexport type YuwComboboxValue = string | string[] | undefined;\n\n/** Module-level counter for the fallback control id, so external labels always have a stable,\n * unique target even when the consumer doesn't pass `inputId`. */\nlet nextUniqueId = 0;\n\n/**\n * Searchable select combobox component supporting single or multiple selections, search filtering, and custom option rendering.\n *\n * Inputs / Models:\n * - `options`: Required array of option items (`YuwComboboxOptionDto<TData>[]`).\n * - `value`: Two-way selected value(s) (`string` for single mode, `string[]` for multiple mode).\n * Emits `valueChange` on every selection change.\n * - `size`: Control height (`'default'` 40px, `'xs'` 28px, `'sm'` 36px, `'lg'` 44px), matching the\n * `<yuw-button>` size of the same name. Applies to whichever control shape renders; the popover\n * panel and its inner search field keep their own compact sizing.\n * - `multiple`: Enables multi-selection mode with removable tags/chips.\n * - `disabled`: Disables combobox interaction.\n * - `placeholder`: Placeholder text when no option is selected.\n * - `searchPlaceholder`: Placeholder text inside the search field popover.\n * - `emptyText`: Message text displayed when search yields no matching options.\n * - `search`: Two-way search filter query string.\n * - `triggerAriaLabel`: Required accessible name for the icon-only popover trigger (the chevron\n * button). User-facing text — the consuming app is responsible for providing it translated.\n * Only rendered by the single-select input shape, but required in every mode so switching\n * modes never silently drops the label.\n * - `clearAriaLabel`: When set, the clear button is shown on the single-selection control and\n * this is its accessible name; when absent, there is no clear button. One input, one source of\n * truth. User-facing text — the consuming app is responsible for providing it translated.\n * - `inputId`: HTML `id` for the focusable control (the search input, or the trigger button when\n * `readonlyTrigger` is set), enabling external `<label for=\"...\">` association.\n * - `readonlyTrigger`: Renders control as a button showing selected label, placing search input inside popover.\n * - `invalid`: Forces invalid styling.\n *\n * `multiple` takes precedence over `readonlyTrigger`: when both are set the multi-select\n * chips shape renders and `readonlyTrigger` is ignored.\n *\n * Usage:\n * ```html\n * <yuw-combobox [options]=\"userOptions\" [(value)]=\"selectedUser\" placeholder=\"Select user...\"\n * triggerAriaLabel=\"Toggle options\" clearAriaLabel=\"Clear selection\" />\n * <yuw-combobox [options]=\"categoryOptions\" [(value)]=\"selectedCategories\" multiple\n * triggerAriaLabel=\"Toggle options\" />\n * ```\n */\n@Component({\n selector: 'yuw-combobox',\n imports: [...HlmComboboxImports, NgTemplateOutlet],\n providers: [provideValueAccessor(YuwComboboxComponent)],\n host: {\n class: 'contents',\n },\n templateUrl: './combobox.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwComboboxComponent<TData = unknown> extends YuwValueAccessorBase<YuwComboboxValue> {\n private readonly _panel = viewChild(HlmComboboxContent, { read: ElementRef });\n protected readonly itemTemplate = contentChild<YuwComboboxItemDirective<TData>>(YuwComboboxItemDirective);\n\n readonly clearAriaLabel = input<string | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly emptyText = input<string | undefined>(undefined);\n readonly inputId = input<string | undefined>(undefined);\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly options = input.required<YuwComboboxOptionDto<TData>[]>();\n readonly placeholder = input<string | undefined>(undefined);\n readonly readonlyTrigger = input(false, { transform: booleanAttribute });\n readonly search = model<string>('');\n readonly searchPlaceholder = input<string | undefined>(undefined);\n readonly size = input<YuwFieldSizeDto>('default');\n readonly triggerAriaLabel = input.required<string>();\n readonly value = model<YuwComboboxValue>(undefined);\n\n private readonly _generatedId = `yuw-combobox-${++nextUniqueId}`;\n protected readonly _itemToString = (value: string): string => this._labelByValue().get(value) ?? value;\n\n protected readonly _chipsClass = computed(() => yuwFieldMinHeightVariants({ size: this.size() }));\n protected readonly _clearVisible = computed(() => this.clearAriaLabel() !== undefined);\n protected readonly _controlId = computed(() => this.inputId() ?? this._generatedId);\n protected readonly _disabled = computed(() => this._isDisabled(this.disabled()));\n protected readonly _fieldClass = computed(() => yuwFieldSizeVariants({ size: this.size() }));\n private readonly _labelByValue = computed(\n () => new Map(this.options().map((option) => [option.value, option.label] as const)),\n );\n protected readonly _multipleValue = computed(() => {\n const value = this.value();\n if (value === undefined) {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n });\n protected readonly _selectedChips = computed(() => {\n const labels = this._labelByValue();\n return this._multipleValue().map((value) => ({ value, label: labels.get(value) ?? value }));\n });\n protected readonly _selectedValues = computed(() => new Set(this._multipleValue()));\n protected readonly _singleValue = computed(() => {\n const value = this.value();\n return Array.isArray(value) ? value[0] : value;\n });\n protected readonly _triggerClass = computed(() => yuwButtonVariants({ size: this.size() }));\n\n protected _emptyValue(): YuwComboboxValue {\n return this.multiple() ? [] : undefined;\n }\n\n protected _onFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget;\n\n if (next instanceof Node) {\n if (event.currentTarget instanceof Node && event.currentTarget.contains(next)) {\n return;\n }\n\n const panel = this._panel()?.nativeElement as HTMLElement | undefined;\n\n if (panel?.contains(next)) {\n return;\n }\n }\n\n this._onBlur();\n }\n\n protected onValueChange(next: YuwComboboxValue | null): void {\n this._commit(next ?? this._emptyValue());\n }\n}\n","<ng-template #itemContent let-option>\n @if (itemTemplate(); as custom) {\n <ng-container\n [ngTemplateOutlet]=\"custom.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: option,\n option: option,\n selected: _selectedValues().has(option.value),\n }\"\n />\n } @else {\n {{ option.label }}\n }\n</ng-template>\n\n@if (multiple()) {\n <hlm-combobox-multiple\n [disabled]=\"_disabled()\"\n [value]=\"_multipleValue()\"\n (valueChange)=\"onValueChange($event)\"\n [(search)]=\"search\"\n [itemToString]=\"_itemToString\"\n (focusout)=\"_onFocusOut($event)\"\n >\n <hlm-combobox-chips [forceInvalid]=\"invalid()\" [class]=\"_chipsClass()\">\n @for (chip of _selectedChips(); track chip.value) {\n <hlm-combobox-chip [value]=\"chip.value\">{{ chip.label }}</hlm-combobox-chip>\n }\n <input hlmComboboxChipInput [id]=\"_controlId()\" [placeholder]=\"placeholder() ?? ''\" />\n </hlm-combobox-chips>\n\n <hlm-combobox-content *hlmComboboxPortal>\n <div hlmComboboxList>\n @for (option of options(); track option.value) {\n <hlm-combobox-item [value]=\"option.value\" [disabled]=\"option.disabled ?? false\">\n <ng-container [ngTemplateOutlet]=\"itemContent\" [ngTemplateOutletContext]=\"{ $implicit: option }\" />\n </hlm-combobox-item>\n }\n </div>\n <hlm-combobox-empty>{{ emptyText() ?? '' }}</hlm-combobox-empty>\n </hlm-combobox-content>\n </hlm-combobox-multiple>\n} @else {\n <hlm-combobox\n [disabled]=\"_disabled()\"\n [value]=\"_singleValue()\"\n (valueChange)=\"onValueChange($event)\"\n [(search)]=\"search\"\n [itemToString]=\"_itemToString\"\n (focusout)=\"_onFocusOut($event)\"\n >\n @if (readonlyTrigger()) {\n <hlm-combobox-trigger\n [buttonId]=\"_controlId()\"\n [forceInvalid]=\"invalid()\"\n [class]=\"_triggerClass()\"\n class=\"w-full justify-between items-center\"\n >\n <hlm-combobox-value [placeholder]=\"placeholder() ?? ''\" />\n </hlm-combobox-trigger>\n } @else {\n <hlm-combobox-input\n [inputId]=\"_controlId()\"\n [placeholder]=\"placeholder() ?? ''\"\n [showClear]=\"_clearVisible()\"\n [clearAriaLabel]=\"clearAriaLabel() ?? ''\"\n [triggerAriaLabel]=\"triggerAriaLabel()\"\n [forceInvalid]=\"invalid()\"\n [class]=\"_fieldClass()\"\n />\n }\n\n <hlm-combobox-content *hlmComboboxPortal>\n @if (readonlyTrigger()) {\n <hlm-combobox-input\n [placeholder]=\"searchPlaceholder() ?? ''\"\n [showClear]=\"_clearVisible()\"\n [clearAriaLabel]=\"clearAriaLabel() ?? ''\"\n [triggerAriaLabel]=\"triggerAriaLabel()\"\n [showTrigger]=\"false\"\n />\n }\n <div hlmComboboxList>\n @for (option of options(); track option.value) {\n <hlm-combobox-item [value]=\"option.value\" [disabled]=\"option.disabled ?? false\">\n <ng-container [ngTemplateOutlet]=\"itemContent\" [ngTemplateOutletContext]=\"{ $implicit: option }\" />\n </hlm-combobox-item>\n }\n </div>\n <hlm-combobox-empty>{{ emptyText() ?? '' }}</hlm-combobox-empty>\n </hlm-combobox-content>\n </hlm-combobox>\n}\n","import { Directive } from '@angular/core';\nimport { HlmAccordion } from 'yukit-web/helm/accordion';\n\n/**\n * Container directive for collapsible accordion items.\n *\n * Renders a full-width flexible vertical container for `yuw-accordion-item` elements.\n * Supports single (`type=\"single\"`) or multiple (`type=\"multiple\"`) expandable items,\n * as well as vertical or horizontal orientation (`orientation`).\n *\n * Direct child items (`yuw-accordion-item`) can be declared statically or rendered dynamically\n * using `@for`.\n *\n * Extends `HlmAccordion` (instead of re-applying `BrnAccordion` and copying the helm's classes\n * by hand) so the helm's `data-slot`, classes and its `BrnAccordion` host directive — including\n * the forwarded `type`/`orientation` inputs — are all inherited. Forwarding those inputs through\n * a `hostDirectives` entry on `HlmAccordion` is not possible: Angular only allows exposing\n * inputs a host directive declares itself, and the helm exposes them transitively from\n * `BrnAccordion`.\n */\n@Directive({\n selector: 'yuw-accordion',\n})\nexport class YuwAccordion extends HlmAccordion {}\n","import { Directive } from '@angular/core';\nimport { HlmAccordionItem } from 'yukit-web/helm/accordion';\n\n/**\n * Directive representing an individual section/item within a `yuw-accordion`.\n *\n * Encloses a `yuw-accordion-trigger` button and a `yuw-accordion-content` panel.\n * Accepts `isOpened` (boolean) to control open state and `disabled` (boolean) to disable\n * interaction. Emits `openedChange` when the item is expanded or collapsed.\n *\n * Extends `HlmAccordionItem` (instead of re-applying `BrnAccordionItem` and copying the helm's\n * classes by hand) so the helm's `data-slot`, classes and its `BrnAccordionItem` host directive —\n * including the forwarded `isOpened`/`disabled` inputs and `openedChange` output — are all\n * inherited. Forwarding those through a `hostDirectives` entry on `HlmAccordionItem` is not\n * possible: Angular only allows exposing inputs/outputs a host directive declares itself, and\n * the helm exposes them transitively from `BrnAccordionItem`.\n */\n@Directive({\n selector: 'yuw-accordion-item',\n})\nexport class YuwAccordionItem extends HlmAccordionItem {}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { HlmAccordionTrigger } from 'yukit-web/helm/accordion';\n\n/**\n * Interactive header button for expanding or collapsing a `yuw-accordion-item`.\n *\n * Project content inside to serve as the trigger label (text, icons, badges, or custom markup).\n *\n * Inputs:\n * - `triggerClass`: Extra classes for the inner trigger `<button>`; the helm merges them last\n * (via tailwind-merge), so they win over its defaults.\n */\n@Component({\n selector: 'yuw-accordion-trigger',\n imports: [HlmAccordionTrigger],\n host: {\n class: 'contents',\n },\n templateUrl: './accordion-trigger.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwAccordionTriggerComponent {\n readonly triggerClass = input<string>('');\n}\n","<hlm-accordion-trigger [triggerClass]=\"triggerClass()\">\n <ng-content />\n</hlm-accordion-trigger>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { HlmAccordionContent } from 'yukit-web/helm/accordion';\n\n/**\n * Collapsible panel container for a `yuw-accordion-item`.\n *\n * Projects body content revealed when the item is expanded (supports text, custom markup, or nested components).\n */\n@Component({\n selector: 'yuw-accordion-content',\n imports: [HlmAccordionContent],\n host: {\n class: 'contents',\n },\n templateUrl: './accordion-content.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwAccordionContentComponent {}\n","<hlm-accordion-content>\n <ng-content />\n</hlm-accordion-content>\n","import { YuwAccordion } from './accordion.directive';\nimport { YuwAccordionContentComponent } from './accordion-content.component';\nimport { YuwAccordionItem } from './accordion-item.directive';\nimport { YuwAccordionTriggerComponent } from './accordion-trigger.component';\n\n/** Bundle for consumers who want every `yuw-accordion-*` piece in one `imports: [...]` entry —\n * same shape as Spartan's own `HlmAccordionImports`. Each piece is still exported and importable\n * on its own for consumers who only need a subset. */\nexport const YuwAccordionImports = [\n YuwAccordion,\n YuwAccordionItem,\n YuwAccordionTriggerComponent,\n YuwAccordionContentComponent,\n] as const;\n","import { Directive } from '@angular/core';\n\n/**\n * Slot directive for adding content (icons, text prefixes) on the left side of a `yuw-input` or `yuw-textarea`.\n */\n@Directive({\n selector: 'yuw-left-addon',\n})\nexport class YuwLeftAddonDirective {}\n\n/**\n * Slot directive for adding content (icons, text suffixes, action buttons) on the right side of a `yuw-input` or `yuw-textarea`.\n */\n@Directive({\n selector: 'yuw-right-addon',\n})\nexport class YuwRightAddonDirective {}\n\nexport const YuwInputAddonImports = [YuwLeftAddonDirective, YuwRightAddonDirective] as const;\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n input,\n model,\n output,\n} from '@angular/core';\nimport { HlmInput } from 'yukit-web/helm/input';\nimport { HlmInputGroup, HlmInputGroupAddon, HlmInputGroupInput } from 'yukit-web/helm/input-group';\nimport { YuwLeftAddonDirective, YuwRightAddonDirective } from './input-addon.directive';\nimport type {\n YuwFieldSizeDto,\n YuwInputModeDto,\n YuwInputTypeDto,\n YuwTextFieldContract,\n} from '../../interface/text-field.interface';\nimport { cn } from '../../utils/cn';\nimport { yuwFieldSizeVariants } from '../../utils/field-size.variants';\nimport { provideValueAccessor, YuwValueAccessorBase } from '../../utils/value-accessor';\n\n/** Module-level counter backing each instance's stable fallback `id`. */\nlet nextYuwInputId = 0;\n\n/**\n * Single-line text input control supporting two-way value binding, form controls (`formControlName`, `ngModel`),\n * validation styling, and left/right addon slots.\n *\n * Inputs / Models:\n * - `value`: Two-way text string.\n * - `inputId`: `id` applied to the native input, for external `<label for>` association.\n * - `type`: HTML input type (`'text'`, `'email'`, `'number'`, etc.). Default is `'text'`.\n * - `size`: Control height (`'default'` 40px, `'xs'` 28px, `'sm'` 36px, `'lg'` 44px), matching the\n * `<yuw-button>` size of the same name. Default is `'default'`.\n * - `inputmode`: Virtual keyboard hint (e.g. `'numeric'`).\n * - `disabled`: Disables input interaction.\n * - `readonly`: Makes the field read-only.\n * - `required`: Marks the field as required.\n * - `invalid`: Forces invalid styling.\n * - `name`: HTML `name` attribute.\n * - `autocomplete`: Native `autocomplete` attribute.\n * - `maxlength`: Hard cap on character count, enforced natively by the browser.\n * - `placeholder`: Hint text shown inside the empty field.\n * - `class`: Extra classes merged onto the visual root (the input, or the input group when addons are present).\n *\n * Outputs:\n * - `committed`: Emits the current value on the native `change` event (blur/enter).\n *\n * Usage:\n * ```html\n * <yuw-input [(value)]=\"username\" placeholder=\"Enter username...\" />\n *\n * <yuw-input formControlName=\"email\" type=\"email\">\n * <yuw-left-addon><ng-icon name=\"lucideMail\" /></yuw-left-addon>\n * </yuw-input>\n * ```\n */\n@Component({\n selector: 'yuw-input',\n imports: [HlmInput, HlmInputGroup, HlmInputGroupInput, HlmInputGroupAddon],\n providers: [provideValueAccessor(YuwInputComponent)],\n host: {\n class: 'contents',\n },\n templateUrl: './input.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwInputComponent extends YuwValueAccessorBase<string> implements YuwTextFieldContract {\n private readonly _leftAddons = contentChildren(YuwLeftAddonDirective);\n private readonly _rightAddons = contentChildren(YuwRightAddonDirective);\n\n readonly autocomplete = input<string | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly inputId = input<string | undefined>(undefined);\n readonly inputmode = input<YuwInputModeDto | undefined>(undefined);\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly maxlength = input<number | undefined>(undefined);\n readonly name = input<string | undefined>(undefined);\n readonly placeholder = input<string | undefined>(undefined);\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n readonly size = input<YuwFieldSizeDto>('default');\n readonly type = input<YuwInputTypeDto>('text');\n readonly userClass = input<string>('', { alias: 'class' });\n readonly value = model<string>('');\n\n readonly committed = output<string>();\n\n protected readonly _autoId = `yuw-input-${++nextYuwInputId}`;\n\n protected readonly _classes = computed(() => cn(yuwFieldSizeVariants({ size: this.size() }), this.userClass()));\n protected readonly _disabled = computed(() => this._isDisabled(this.disabled()));\n protected readonly _hasLeftAddon = computed(() => this._leftAddons().length > 0);\n protected readonly _hasRightAddon = computed(() => this._rightAddons().length > 0);\n protected readonly _hasAddons = computed(() => this._hasLeftAddon() || this._hasRightAddon());\n protected readonly _inputId = computed(() => this.inputId() ?? this._autoId);\n\n protected _emptyValue(): string {\n return '';\n }\n\n protected onChange(): void {\n this.committed.emit(this.value());\n }\n\n protected onInput(event: Event): void {\n this._commit((event.target as HTMLInputElement).value);\n }\n}\n","@if (_hasAddons()) {\n <hlm-input-group [class]=\"_classes()\">\n @if (_hasLeftAddon()) {\n <hlm-input-group-addon align=\"inline-start\">\n <ng-content select=\"yuw-left-addon\" />\n </hlm-input-group-addon>\n }\n\n <input\n hlmInputGroupInput\n [id]=\"_inputId()\"\n [type]=\"type()\"\n [attr.inputmode]=\"inputmode()\"\n [value]=\"value()\"\n [disabled]=\"_disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [forceInvalid]=\"invalid()\"\n [attr.name]=\"name()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.maxlength]=\"maxlength()\"\n [attr.placeholder]=\"placeholder()\"\n (input)=\"onInput($event)\"\n (change)=\"onChange()\"\n (blur)=\"_onBlur()\"\n />\n\n @if (_hasRightAddon()) {\n <hlm-input-group-addon align=\"inline-end\">\n <ng-content select=\"yuw-right-addon\" />\n </hlm-input-group-addon>\n }\n </hlm-input-group>\n} @else {\n <input\n hlmInput\n [class]=\"_classes()\"\n [id]=\"_inputId()\"\n [type]=\"type()\"\n [attr.inputmode]=\"inputmode()\"\n [value]=\"value()\"\n [disabled]=\"_disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [forceInvalid]=\"invalid()\"\n [attr.name]=\"name()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.maxlength]=\"maxlength()\"\n [attr.placeholder]=\"placeholder()\"\n (input)=\"onInput($event)\"\n (change)=\"onChange()\"\n (blur)=\"_onBlur()\"\n />\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n input,\n model,\n output,\n} from '@angular/core';\nimport { HlmInputGroup, HlmInputGroupAddon, HlmInputGroupTextarea } from 'yukit-web/helm/input-group';\nimport { HlmTextarea } from 'yukit-web/helm/textarea';\nimport { YuwLeftAddonDirective, YuwRightAddonDirective } from '../input/input-addon.directive';\nimport type { YuwTextFieldContract } from '../../interface/text-field.interface';\nimport { cn } from '../../utils/cn';\nimport { provideValueAccessor, YuwValueAccessorBase } from '../../utils/value-accessor';\n\nlet nextYuwTextareaId = 0;\n\n/**\n * Multi-line text input control supporting auto-growing content, character limits, row count, and form integration (`ngModel`, `formControlName`).\n *\n * Inputs / Models:\n * - `value`: Two-way text string.\n * - `inputId`: `id` applied to the native textarea, for external `<label for>` association.\n * - `disabled`: Disables input interaction.\n * - `readonly`: Makes the field read-only.\n * - `required`: Marks the field as required.\n * - `invalid`: Forces invalid styling.\n * - `name`: HTML `name` attribute.\n * - `autocomplete`: Native `autocomplete` attribute.\n * - `rows`: Fallback visible height in lines where `field-sizing` is unsupported; ignored otherwise.\n * - `maxlength`: Hard cap on character count, enforced natively by the browser.\n * - `placeholder`: Hint text shown inside the empty field.\n * - `class`: Extra classes merged onto the visual root (the textarea, or the input group when addons are present).\n *\n * Outputs:\n * - `committed`: Emits the current value on the native `change` event (blur/enter).\n *\n * Usage:\n * ```html\n * <yuw-textarea [(value)]=\"bio\" placeholder=\"Write your biography...\" [rows]=\"4\" />\n * <yuw-textarea formControlName=\"comments\" [maxlength]=\"500\" />\n * ```\n */\n@Component({\n selector: 'yuw-textarea',\n imports: [HlmTextarea, HlmInputGroup, HlmInputGroupTextarea, HlmInputGroupAddon],\n providers: [provideValueAccessor(YuwTextareaComponent)],\n host: {\n class: 'contents',\n },\n templateUrl: './textarea.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwTextareaComponent extends YuwValueAccessorBase<string> implements YuwTextFieldContract {\n private readonly _leftAddons = contentChildren(YuwLeftAddonDirective);\n private readonly _rightAddons = contentChildren(YuwRightAddonDirective);\n\n readonly autocomplete = input<string | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly inputId = input<string | undefined>(undefined);\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly maxlength = input<number | undefined>(undefined);\n readonly name = input<string | undefined>(undefined);\n readonly placeholder = input<string | undefined>(undefined);\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n readonly rows = input<number | undefined>(undefined);\n readonly userClass = input<string>('', { alias: 'class' });\n readonly value = model<string>('');\n\n readonly committed = output<string>();\n\n protected readonly _autoId = `yuw-textarea-${++nextYuwTextareaId}`;\n\n protected readonly _classes = computed(() => cn(this.userClass()));\n protected readonly _disabled = computed(() => this._isDisabled(this.disabled()));\n protected readonly _hasLeftAddon = computed(() => this._leftAddons().length > 0);\n protected readonly _hasRightAddon = computed(() => this._rightAddons().length > 0);\n protected readonly _hasAddons = computed(() => this._hasLeftAddon() || this._hasRightAddon());\n protected readonly _inputId = computed(() => this.inputId() ?? this._autoId);\n\n protected _emptyValue(): string {\n return '';\n }\n\n protected onChange(): void {\n this.committed.emit(this.value());\n }\n\n protected onInput(event: Event): void {\n this._commit((event.target as HTMLTextAreaElement).value);\n }\n}\n","<!-- The control is repeated in both branches on purpose: a shared ng-template cannot express it,\n because the two variants differ in a statically-matched directive (hlmInputGroupTextarea vs\n hlmTextarea) and Angular resolves directives at compile time — a single template would drag the\n group's reset classes into the bare case (or vice versa). Keep the binding lists in sync. -->\n@if (_hasAddons()) {\n <hlm-input-group [class]=\"_classes()\">\n @if (_hasLeftAddon()) {\n <hlm-input-group-addon align=\"block-start\">\n <ng-content select=\"yuw-left-addon\" />\n </hlm-input-group-addon>\n }\n\n <textarea\n hlmInputGroupTextarea\n [id]=\"_inputId()\"\n [value]=\"value()\"\n [disabled]=\"_disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [forceInvalid]=\"invalid()\"\n [attr.rows]=\"rows()\"\n [attr.maxlength]=\"maxlength()\"\n [attr.name]=\"name()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.placeholder]=\"placeholder()\"\n (input)=\"onInput($event)\"\n (change)=\"onChange()\"\n (blur)=\"_onBlur()\"\n ></textarea>\n\n @if (_hasRightAddon()) {\n <hlm-input-group-addon align=\"block-end\">\n <ng-content select=\"yuw-right-addon\" />\n </hlm-input-group-addon>\n }\n </hlm-input-group>\n} @else {\n <textarea\n hlmTextarea\n [class]=\"_classes()\"\n [id]=\"_inputId()\"\n [value]=\"value()\"\n [disabled]=\"_disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [forceInvalid]=\"invalid()\"\n [attr.rows]=\"rows()\"\n [attr.maxlength]=\"maxlength()\"\n [attr.name]=\"name()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.placeholder]=\"placeholder()\"\n (input)=\"onInput($event)\"\n (change)=\"onChange()\"\n (blur)=\"_onBlur()\"\n ></textarea>\n}\n","import { cva } from 'class-variance-authority';\nimport type { YuwFieldSizeDto } from '../../interface/text-field.interface';\n\n/**\n * Class map for the collapsible wrapper of `yuw-search-input`.\n *\n * The wrapper exists because the component host is `display: contents` and cannot own the animated\n * width itself. Width animates as `max-width`, bound inline from `expandedWidth`, so the same\n * element can be a 32px square when collapsed and the full field when expanded.\n *\n * Deliberately **not** `overflow-hidden`: the helm draws the group's focus ring outside the border\n * box, so clipping here would crop it. The input clips itself instead — see\n * `searchInputFieldVariants`.\n *\n * The anchoring and transition classes hang off `collapseFrom` rather than the cva base, because a\n * non-collapsible instance renders the same wrapper and must stay a plain box with no transition.\n * The anchor is an auto margin rather than `position: absolute`, so the control keeps participating\n * in its parent's layout.\n */\nexport const searchInputCollapsibleVariants = cva('w-full', {\n variants: {\n collapseFrom: {\n left: 'me-auto transition-[max-width] duration-300 ease-out motion-reduce:transition-none',\n right: 'ms-auto transition-[max-width] duration-300 ease-out motion-reduce:transition-none',\n },\n expanded: {\n true: '',\n false: '',\n },\n size: {\n default: '',\n xs: '',\n sm: '',\n lg: '',\n } satisfies Record<YuwFieldSizeDto, string>,\n },\n compoundVariants: [\n { expanded: false, size: 'default', class: 'max-w-10' },\n { expanded: false, size: 'xs', class: 'max-w-7' },\n { expanded: false, size: 'sm', class: 'max-w-9' },\n { expanded: false, size: 'lg', class: 'max-w-11' },\n ],\n defaultVariants: {\n expanded: true,\n size: 'default',\n },\n});\n\n/**\n * Classes for the search icon slot.\n *\n * A fixed square matching the control height, never a share of the wrapper: sizing it with `w-full`\n * would make it track the wrapper mid-transition, sliding the icon toward the middle and snapping it\n * back at the end. `shrink-0` holds that width against the sibling input's `flex-1`.\n *\n * The width is keyed by `size` through compound variants so the collapsed control stays square at\n * every size, mirroring the `icon-*` sizes of `<yuw-button>`.\n *\n * `ps-0` cancels the addon's own `ps-2`, and `has-[>button]:ms-0` cancels the helm's\n * `has-[>button]:ms-[-0.3rem]`; the prefix has to be repeated because tailwind-merge keys conflicts\n * per variant prefix, so a bare `ms-0` would not displace it.\n */\nexport const searchInputIconVariants = cva('', {\n variants: {\n collapsible: {\n true: 'shrink-0 justify-center ps-0 has-[>button]:ms-0',\n false: '',\n },\n size: {\n default: '',\n xs: '',\n sm: '',\n lg: '',\n } satisfies Record<YuwFieldSizeDto, string>,\n },\n compoundVariants: [\n { collapsible: true, size: 'default', class: 'w-10' },\n { collapsible: true, size: 'xs', class: 'w-7' },\n { collapsible: true, size: 'sm', class: 'w-9' },\n { collapsible: true, size: 'lg', class: 'w-11' },\n ],\n defaultVariants: {\n collapsible: false,\n size: 'default',\n },\n});\n\n/**\n * Classes for the native input while the control is collapsible.\n *\n * The input clips itself so the wrapper doesn't have to (which would take the focus ring with it).\n * `min-w-0` is what lets it shrink: a flex item defaults to `min-width: auto` and would otherwise\n * hold the collapsed wrapper open past 32px.\n */\nexport const searchInputFieldVariants = cva('', {\n variants: {\n collapsible: {\n true: 'min-w-0 overflow-hidden',\n false: '',\n },\n },\n defaultVariants: {\n collapsible: false,\n },\n});\n\n/**\n * Class map for the input group shell.\n *\n * `transparent` strips the helm's resting border and background. Each helm class is countered in\n * the same variant prefix it was declared with (`dark:`, and the `has-[…:disabled]:` stack), because\n * tailwind-merge resolves conflicts per prefix and a bare `bg-transparent` would leave the\n * prefixed helm declarations standing.\n *\n * The focus ring and the invalid-state ring are deliberately left in place: they are feedback, not\n * chrome, and a transparent field still has to show where focus is and when it is invalid.\n */\nexport const searchInputGroupVariants = cva('', {\n variants: {\n transparent: {\n true: 'border-transparent bg-transparent dark:bg-transparent has-[[data-slot=input-group-control]:disabled]:bg-transparent dark:has-[[data-slot=input-group-control]:disabled]:bg-transparent',\n false: '',\n },\n },\n defaultVariants: {\n transparent: false,\n },\n});\n\n/**\n * Size override for the collapsed expand button.\n *\n * The helm `hlmInputGroupButton` caps its `size` input at `icon-sm` (`size-8`), so the input is left\n * at `icon-sm` and the real dimensions come from here instead — the same approach `<yuw-switch>`\n * takes with its track. Without this the tap target stays 32px inside a 44px square at `lg`, leaving\n * a ring of dead space, and the glyph stops tracking the control.\n *\n * Each square is the control height minus 2px, one for the group's border on each side. Filling the\n * full height instead would paint the button's `hover:bg-muted` over that border and make it vanish\n * on hover — the addon cannot be used as the reference box either, since it is `h-auto` and stretches\n * taller than the group.\n *\n * Only the box scales; the glyph is left alone deliberately. The template passes `size=\"icon-sm\"`\n * rather than letting the helm default to `xs`, because the `xs` variant declares its own 14px glyph\n * while `icon-sm` declares none — so the icon falls through to `hlmBtn`'s `--spacing(4)`, the same\n * 16px the addon renders when the control is expanded. Without that the icon changes size as the\n * control collapses.\n *\n * Overriding the glyph from here does not work: the helm registers its classes through `classes()`,\n * which merges its own sources last, so a `[class]` binding loses that particular conflict.\n *\n * `pointer-events-auto` is in the base because the collapsed icon slot sets `pointer-events-none` on\n * its subtree; the button is the one thing inside it that must stay clickable.\n */\nexport const searchInputExpandButtonVariants = cva('pointer-events-auto', {\n variants: {\n size: {\n default: 'size-[38px]',\n xs: 'size-[26px]',\n sm: 'size-[34px]',\n lg: 'size-[42px]',\n } satisfies Record<YuwFieldSizeDto, string>,\n },\n defaultVariants: {\n size: 'default',\n },\n});\n","import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n Injector,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideSearch, lucideX } from '@ng-icons/lucide';\nimport { HlmInputGroupImports } from 'yukit-web/helm/input-group';\nimport type { YuwSearchInputCollapseFromDto } from './search-input-collapse.interface';\nimport {\n searchInputCollapsibleVariants,\n searchInputExpandButtonVariants,\n searchInputFieldVariants,\n searchInputGroupVariants,\n searchInputIconVariants,\n} from './search-input.variants';\nimport type { YuwFieldSizeDto, YuwTextFieldContract } from '../../interface/text-field.interface';\nimport { cn } from '../../utils/cn';\nimport { yuwFieldSizeVariants } from '../../utils/field-size.variants';\nimport { provideValueAccessor, YuwValueAccessorBase } from '../../utils/value-accessor';\n\n/** Module-level counter backing each instance's stable fallback `id`. */\nlet nextYuwSearchInputId = 0;\n\n/**\n * Search input control featuring a leading search icon, optional clear button, an optional\n * collapsible mode, and form integration (`ngModel`, `formControlName`).\n *\n * Inputs / Models:\n * - `value`: Two-way search query string.\n * - `inputId`: `id` applied to the native input, for external `<label for>` association.\n * - `disabled`: Disables input interaction.\n * - `readonly`: Makes the field read-only.\n * - `required`: Marks the field as required.\n * - `invalid`: Forces invalid styling.\n * - `name`: HTML `name` attribute.\n * - `autocomplete`: Native `autocomplete` attribute.\n * - `placeholder`: Hint text shown inside the empty field.\n * - `clearAriaLabel`: Accessible name for the clear button. Supplying it enables the clear button; omit to hide it.\n * - `collapseFrom`: Enables collapsible mode and picks the anchored edge — `'right'` collapses back\n * towards the right edge (the field grows leftwards), `'left'` mirrors it. Omit for a field that\n * is always expanded.\n * - `expandAriaLabel`: Accessible name for the collapsed search button. Required to make collapsible\n * mode usable, since the collapsed control has no visible text — user-facing text the consuming\n * app is responsible for translating.\n * - `expandedWidth`: CSS width the field animates out to, e.g. `'18rem'`. Default is `'16rem'`.\n * Collapsible mode only.\n * - `size`: Control height, matching the `<yuw-button>` of the same name. While collapsed the\n * control is a square of that height.\n * - `transparent`: Removes the field's resting border and background so it sits directly on its\n * container — for search inside a toolbar or a colored surface. The focus and invalid rings stay.\n * - `class`: Extra classes merged onto the input group.\n *\n * Outputs:\n * - `searched`: Emits the current query string on every keystroke.\n * - `committed`: Emits the current query string when the user presses Enter — for searches that\n * hit a server on explicit submit rather than on every keystroke.\n *\n * ## Collapsible mode\n *\n * Collapsed, the control is a square icon button; activating it animates the same element out to its\n * expanded width and focuses the field. It collapses again on Escape, or on blur while the query is\n * empty — a blur with text still in the field keeps the field open, because collapsing would hide a\n * query the user can no longer see or edit.\n *\n * Button and field are one element tree rather than two swapped views, so the transition is\n * continuous and the input is never re-created mid-animation (which would drop focus and the caret).\n *\n * Usage:\n * ```html\n * <yuw-search-input [(value)]=\"query\" placeholder=\"Search items...\" clearAriaLabel=\"Clear search\" (searched)=\"onSearch($event)\" />\n *\n * <yuw-search-input\n * [(value)]=\"query\"\n * collapseFrom=\"right\"\n * * expandAriaLabel=\"Open search\"\n * placeholder=\"Search items...\"\n * />\n * ```\n */\n@Component({\n selector: 'yuw-search-input',\n imports: [...HlmInputGroupImports, NgIcon],\n providers: [provideValueAccessor(YuwSearchInputComponent), provideIcons({ lucideSearch, lucideX })],\n host: {\n class: 'contents',\n },\n templateUrl: './search-input.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwSearchInputComponent extends YuwValueAccessorBase<string> implements YuwTextFieldContract {\n private readonly _injector = inject(Injector);\n\n private readonly _input = viewChild.required<ElementRef<HTMLInputElement>>('searchInput');\n\n readonly autocomplete = input<string | undefined>(undefined);\n readonly clearAriaLabel = input<string | undefined>(undefined);\n readonly collapseFrom = input<YuwSearchInputCollapseFromDto | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly expandAriaLabel = input<string | undefined>(undefined);\n readonly expandedWidth = input<string>('16rem');\n readonly inputId = input<string | undefined>(undefined);\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly name = input<string | undefined>(undefined);\n readonly placeholder = input<string | undefined>(undefined);\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n readonly size = input<YuwFieldSizeDto>('default');\n readonly transparent = input(false, { transform: booleanAttribute });\n readonly userClass = input<string>('', { alias: 'class' });\n readonly value = model<string>('');\n\n readonly committed = output<string>();\n readonly searched = output<string>();\n\n protected readonly _autoId = `yuw-search-input-${++nextYuwSearchInputId}`;\n private readonly _open = signal(false);\n\n protected readonly _classes = computed(() =>\n cn(\n yuwFieldSizeVariants({ size: this.size() }),\n searchInputGroupVariants({ transparent: this.transparent() }),\n this.userClass(),\n ),\n );\n protected readonly _collapsible = computed(() => this.collapseFrom() !== undefined);\n protected readonly _disabled = computed(() => this._isDisabled(this.disabled()));\n protected readonly _expandButtonClasses = computed(() => searchInputExpandButtonVariants({ size: this.size() }));\n protected readonly _expanded = computed(() => !this._collapsible() || this._open());\n protected readonly _fieldClasses = computed(() => searchInputFieldVariants({ collapsible: this._collapsible() }));\n protected readonly _iconClasses = computed(() =>\n searchInputIconVariants({ collapsible: this._collapsible(), size: this.size() }),\n );\n protected readonly _inputId = computed(() => this.inputId() ?? this._autoId);\n protected readonly _showClear = computed(\n () =>\n this.clearAriaLabel() !== undefined &&\n this.value().length > 0 &&\n this._expanded() &&\n !this._disabled() &&\n !this.readonly(),\n );\n protected readonly _showExpandButton = computed(() => !this._expanded() && !this._disabled());\n protected readonly _wrapperClasses = computed(() =>\n searchInputCollapsibleVariants({\n collapseFrom: this.collapseFrom(),\n expanded: this._expanded(),\n size: this.size(),\n }),\n );\n protected readonly _wrapperMaxWidth = computed(() => (this._expanded() ? this.expandedWidth() : null));\n\n protected _emptyValue(): string {\n return '';\n }\n\n protected onBlur(): void {\n this._onBlur();\n if (this._collapsible() && this.value().length === 0) {\n this._open.set(false);\n }\n }\n\n protected onClear(): void {\n this._commit('');\n this.searched.emit('');\n this._input().nativeElement.focus();\n }\n\n protected onEnter(): void {\n this.committed.emit(this.value());\n }\n\n protected onEscape(): void {\n if (!this._collapsible()) {\n return;\n }\n this._open.set(false);\n this._input().nativeElement.blur();\n }\n\n /**\n * Focus is deferred to the next render: while collapsed the input carries `tabindex=\"-1\"` and\n * `aria-hidden`, and focusing it before those bindings clear would be dropped by the browser.\n */\n protected onExpand(): void {\n this._open.set(true);\n afterNextRender(() => this._input().nativeElement.focus(), { injector: this._injector });\n }\n\n /**\n * Expands when the collapsed button receives focus, so reaching it with Tab opens the field\n * instead of leaving the user on a button they must also activate.\n *\n * Gated on `:focus-visible` to stay out of a focus loop: collapsing on blur remounts this button,\n * and if the browser then lands focus on it, an ungated handler would re-expand and the control\n * could never be tabbed past. `:focus-visible` is set for keyboard traversal but not for the\n * programmatic/pointer focus that a collapse produces.\n */\n protected onExpandFocus(event: FocusEvent): void {\n if ((event.target as HTMLElement).matches(':focus-visible')) {\n this.onExpand();\n }\n }\n\n protected onInput(event: Event): void {\n const next = (event.target as HTMLInputElement).value;\n this._commit(next);\n this.searched.emit(next);\n }\n}\n","<div [class]=\"_wrapperClasses()\" [style.max-width]=\"_wrapperMaxWidth()\">\n <hlm-input-group [class]=\"_classes()\">\n <hlm-input-group-addon align=\"inline-start\" [class]=\"_iconClasses()\">\n @if (_showExpandButton()) {\n <button\n hlmInputGroupButton\n size=\"icon-sm\"\n [class]=\"_expandButtonClasses()\"\n [attr.aria-label]=\"expandAriaLabel()\"\n [attr.aria-expanded]=\"false\"\n (focus)=\"onExpandFocus($event)\"\n (click)=\"onExpand()\"\n >\n <ng-icon name=\"lucideSearch\" />\n </button>\n } @else {\n <ng-icon name=\"lucideSearch\" />\n }\n </hlm-input-group-addon>\n\n <input\n #searchInput\n hlmInputGroupInput\n [class]=\"_fieldClasses()\"\n [id]=\"_inputId()\"\n type=\"text\"\n inputmode=\"search\"\n [value]=\"value()\"\n [disabled]=\"_disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [forceInvalid]=\"invalid()\"\n [attr.name]=\"name()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.placeholder]=\"placeholder()\"\n [attr.tabindex]=\"_expanded() ? null : -1\"\n [attr.aria-hidden]=\"_expanded() ? null : true\"\n (input)=\"onInput($event)\"\n (keydown.enter)=\"onEnter()\"\n (keydown.escape)=\"onEscape()\"\n (blur)=\"onBlur()\"\n />\n\n @if (_showClear()) {\n <hlm-input-group-addon align=\"inline-end\">\n <button hlmInputGroupButton size=\"icon-xs\" [attr.aria-label]=\"clearAriaLabel()\" (click)=\"onClear()\">\n <ng-icon name=\"lucideX\" />\n </button>\n </hlm-input-group-addon>\n }\n </hlm-input-group>\n</div>\n","/**\n * The reveal toggle's two states, as data rather than control flow — `agents.md` bans `switch`\n * over a mode, and a `[type]=\"masked() ? 'password' : 'text'\"` chain in the template would be the\n * same branch smeared across three separate bindings that can drift out of sync.\n *\n * Keyed by \"is the value currently masked\", so the component reads one boolean signal and gets\n * the matching input type and icon together, always consistent.\n */\nexport interface YuwPasswordRevealStateDto {\n inputType: 'password' | 'text';\n icon: 'lucideEye' | 'lucideEyeOff';\n struck: boolean;\n}\n\n/** Lookup replacing the branch, keyed by `` `${boolean}` `` so a boolean signal indexes it\n * directly (`STATES[`${masked()}`]`) with no ternary. Adding a third state (a \"peek while held\"\n * mode, say) means adding an entry here — open for extension, closed for modification. */\nexport const YUW_PASSWORD_REVEAL_STATES: Record<`${boolean}`, YuwPasswordRevealStateDto> = {\n true: { inputType: 'password', icon: 'lucideEyeOff', struck: true },\n false: { inputType: 'text', icon: 'lucideEye', struck: false },\n};\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideEye, lucideEyeOff } from '@ng-icons/lucide';\nimport { HlmInputGroupImports } from 'yukit-web/helm/input-group';\nimport type { YuwFieldSizeDto, YuwTextFieldContract } from '../../interface/text-field.interface';\nimport { cn } from '../../utils/cn';\nimport { yuwFieldSizeVariants } from '../../utils/field-size.variants';\nimport { provideValueAccessor, YuwValueAccessorBase } from '../../utils/value-accessor';\nimport { YUW_PASSWORD_REVEAL_STATES } from './password-input.reveal';\n\n/** Module-level counter backing each instance's stable fallback `id`. */\nlet nextYuwPasswordInputId = 0;\n\n/**\n * Password input field with optional visibility toggle button and form integration (`ngModel`, `formControlName`).\n *\n * Inputs / Models:\n * - `value`: Two-way password string.\n * - `size`: Control height, matching the `<yuw-button>` of the same name.\n * - `inputId`: `id` applied to the native input, for external `<label for>` association.\n * - `disabled`: Disables input interaction.\n * - `readonly`: Makes the field read-only.\n * - `required`: Marks the field as required.\n * - `invalid`: Forces invalid styling.\n * - `name`: HTML `name` attribute.\n * - `autocomplete`: Native `autocomplete` attribute (e.g. `'current-password'`, `'new-password'`).\n * - `placeholder`: Hint text shown inside the empty field.\n * - `revealAriaLabel`: Accessible name for the reveal toggle button. Supplying it enables the toggle; omit to hide it.\n * - `masked`: Two-way boolean controlling whether the value is masked. Default is `true` (masked). A parent can reset it (e.g. re-mask after a failed submit).\n * - `class`: Extra classes merged onto the input group.\n *\n * Outputs:\n * - `committed`: Emits the current value on the native `change` event (blur/enter).\n *\n * Usage:\n * ```html\n * <yuw-password-input [(value)]=\"password\" revealAriaLabel=\"Toggle password visibility\" />\n * <yuw-password-input formControlName=\"password\" autocomplete=\"current-password\" />\n * ```\n */\n@Component({\n selector: 'yuw-password-input',\n imports: [...HlmInputGroupImports, NgIcon],\n providers: [provideValueAccessor(YuwPasswordInputComponent), provideIcons({ lucideEye, lucideEyeOff })],\n host: {\n class: 'contents',\n },\n templateUrl: './password-input.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwPasswordInputComponent extends YuwValueAccessorBase<string> implements YuwTextFieldContract {\n readonly autocomplete = input<string | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly inputId = input<string | undefined>(undefined);\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly masked = model<boolean>(true);\n readonly name = input<string | undefined>(undefined);\n readonly placeholder = input<string | undefined>(undefined);\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n readonly revealAriaLabel = input<string | undefined>(undefined);\n readonly size = input<YuwFieldSizeDto>('default');\n readonly userClass = input<string>('', { alias: 'class' });\n readonly value = model<string>('');\n\n readonly committed = output<string>();\n\n protected readonly _autoId = `yuw-password-input-${++nextYuwPasswordInputId}`;\n\n protected readonly _classes = computed(() => cn(yuwFieldSizeVariants({ size: this.size() }), this.userClass()));\n protected readonly _disabled = computed(() => this._isDisabled(this.disabled()));\n protected readonly _inputId = computed(() => this.inputId() ?? this._autoId);\n protected readonly _reveal = computed(() => YUW_PASSWORD_REVEAL_STATES[`${this.masked()}`]);\n\n protected _emptyValue(): string {\n return '';\n }\n\n protected onChange(): void {\n this.committed.emit(this.value());\n }\n\n protected onInput(event: Event): void {\n this._commit((event.target as HTMLInputElement).value);\n }\n\n protected onToggleReveal(): void {\n this.masked.update((masked) => !masked);\n }\n}\n","<hlm-input-group [class]=\"_classes()\">\n <input\n hlmInputGroupInput\n [id]=\"_inputId()\"\n [type]=\"_reveal().inputType\"\n [value]=\"value()\"\n [disabled]=\"_disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [forceInvalid]=\"invalid()\"\n [attr.name]=\"name()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.placeholder]=\"placeholder()\"\n (input)=\"onInput($event)\"\n (change)=\"onChange()\"\n (blur)=\"_onBlur()\"\n />\n\n @if (revealAriaLabel(); as label) {\n <hlm-input-group-addon align=\"inline-end\">\n <button\n hlmInputGroupButton\n size=\"icon-xs\"\n [disabled]=\"_disabled()\"\n [attr.aria-label]=\"label\"\n [attr.aria-pressed]=\"!_reveal().struck\"\n (click)=\"onToggleReveal()\"\n >\n <ng-icon [name]=\"_reveal().icon\" />\n </button>\n </hlm-input-group-addon>\n }\n</hlm-input-group>\n","import { cva } from 'class-variance-authority';\nimport type { YuwFieldSizeDto } from '../../interface/text-field.interface';\n\n/**\n * Cell size for `<yuw-input-otp>`, applied to the container and reaching each\n * `<hlm-input-otp-slot>` through a descendant selector.\n *\n * The slots are separate components with their own `size-8`, and the container has no class\n * passthrough to them, so the scale is expressed as an arbitrary descendant variant keyed on the\n * slot's `data-slot` attribute. `!` is not needed: the generated rule is more specific than the\n * slot's own single utility class.\n *\n * Cells are square, so the values are `size-*` rather than `h-*`, matching the `icon-*` sizes of\n * `<yuw-button>` at the same name.\n */\nexport const yuwInputOtpSizeVariants = cva('', {\n variants: {\n size: {\n default: '[&_[data-slot=input-otp-slot]]:size-10',\n xs: '[&_[data-slot=input-otp-slot]]:size-7',\n sm: '[&_[data-slot=input-otp-slot]]:size-9',\n lg: '[&_[data-slot=input-otp-slot]]:size-11',\n } satisfies Record<YuwFieldSizeDto, string>,\n },\n defaultVariants: {\n size: 'default',\n },\n});\n","/**\n * One rendered group of OTP slots, with the absolute slot indices it contains.\n *\n * `HlmInputOtpSlot` needs an explicit `[index]` per slot, and those indices are absolute across\n * the whole input — the second group of a `3-3` layout holds slots 3,4,5, not 0,1,2. Precomputing\n * them here keeps the template to two plain `@for`s with no arithmetic and no method calls.\n */\nexport interface YuwInputOtpGroupDto {\n indices: number[];\n precededBySeparator: boolean;\n}\n\n/**\n * Expands a list of group sizes (`[3, 3]`) into the groups the template renders, assigning\n * absolute indices as it goes.\n *\n * Lives in its own file rather than inline in the component because `agents.md` wants the\n * component file to read as inputs, outputs, a couple of `computed()`s, done — and because this\n * is the one piece of real logic here, so it's the piece worth being able to test on its own.\n *\n * Sizes that are zero or negative are dropped: they'd contribute no slots but would still emit a\n * stray separator, so a typo like `[3, 0, 3]` would render a dangling dash between two groups.\n */\nexport function buildInputOtpGroups(groupSizes: readonly number[]): YuwInputOtpGroupDto[] {\n let nextIndex = 0;\n\n return groupSizes\n .filter((size) => size > 0)\n .map((size, groupPosition) => {\n const indices = Array.from({ length: size }, (_, offset) => nextIndex + offset);\n nextIndex += size;\n return { indices, precededBySeparator: groupPosition > 0 };\n });\n}\n\n/** Total slot count across every group — what `BrnInputOtp`'s own `length` input expects. Derived\n * from the same source as the groups so the two can never disagree, which is the bug you get from\n * accepting `length` and `groupSizes` as two independent inputs. */\nexport function totalInputOtpLength(groupSizes: readonly number[]): number {\n return groupSizes.filter((size) => size > 0).reduce((total, size) => total + size, 0);\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\nimport { BrnInputOtp } from '@spartan-ng/brain/input-otp';\nimport { HlmInputOtpImports } from 'yukit-web/helm/input-otp';\nimport type { YuwFieldSizeDto } from '../../interface/text-field.interface';\nimport { cn } from '../../utils/cn';\nimport { yuwInputOtpSizeVariants } from './input-otp.variants';\nimport { provideValueAccessor, YuwValueAccessorBase } from '../../utils/value-accessor';\nimport { buildInputOtpGroups, totalInputOtpLength } from './input-otp.layout';\n\nexport type YuwInputOtpModeDto = 'numeric' | 'text';\n\n/** Module-level counter backing each instance's stable fallback `id`. */\nlet nextYuwInputOtpId = 0;\n\n/**\n * One-time password / verification code input component rendering grouped digit or text slots.\n *\n * Inputs / Models:\n * - `value`: Two-way OTP code string.\n * - `inputId`: `id` applied to the hidden native input, for external `<label for>` association.\n * - `groupSizes`: Slot counts per visual group (`number[]`). A separator renders between groups, e.g. `[3, 3]` gives `000-000`. Default is `[6]`.\n * - `mode`: Virtual-keyboard hint (`'numeric'`, `'text'`). Default is `'numeric'`.\n * - `disabled`: Disables input interaction.\n * - `size`: Cell size, matching the `<yuw-button>` of the same name.\n * - `invalid`: Forces invalid styling.\n * - `autofocus`: Focuses the field on init. Appropriate on dedicated verification screens.\n * - `transformPaste`: Normalizes pasted text before it fills the slots.\n * - `class`: Extra classes merged onto the OTP container.\n *\n * Outputs:\n * - `completed`: Emits the full code string once the final slot is filled (by typing or paste).\n *\n * Usage:\n * ```html\n * <yuw-input-otp [(value)]=\"code\" [groupSizes]=\"[3, 3]\" (completed)=\"verifyCode($event)\" />\n * <yuw-input-otp formControlName=\"otpCode\" [groupSizes]=\"[6]\" mode=\"numeric\" />\n * ```\n */\n@Component({\n selector: 'yuw-input-otp',\n imports: [BrnInputOtp, ...HlmInputOtpImports],\n providers: [provideValueAccessor(YuwInputOtpComponent)],\n host: {\n class: 'contents',\n },\n templateUrl: './input-otp.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwInputOtpComponent extends YuwValueAccessorBase<string> {\n readonly autofocus = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly groupSizes = input<readonly number[]>([6]);\n readonly inputId = input<string | undefined>(undefined);\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly mode = input<YuwInputOtpModeDto>('numeric');\n readonly size = input<YuwFieldSizeDto>('default');\n readonly transformPaste = input<(pastedText: string, length: number) => string>((pastedText) => pastedText);\n readonly userClass = input<string>('', { alias: 'class' });\n readonly value = model<string>('');\n\n readonly completed = output<string>();\n\n protected readonly _autoId = `yuw-input-otp-${++nextYuwInputOtpId}`;\n\n protected readonly _classes = computed(() => cn(yuwInputOtpSizeVariants({ size: this.size() }), this.userClass()));\n protected readonly _disabled = computed(() => this._isDisabled(this.disabled()));\n protected readonly _groups = computed(() => buildInputOtpGroups(this.groupSizes()));\n protected readonly _inputId = computed(() => this.inputId() ?? this._autoId);\n protected readonly _length = computed(() => totalInputOtpLength(this.groupSizes()));\n\n protected _emptyValue(): string {\n return '';\n }\n\n protected onValueChange(next: string): void {\n this._commit(next);\n }\n}\n","<brn-input-otp\n hlmInputOtp\n [class]=\"_classes()\"\n [inputId]=\"_inputId()\"\n [length]=\"_length()\"\n [value]=\"value()\"\n [inputMode]=\"mode()\"\n [disabled]=\"_disabled()\"\n [autofocus]=\"autofocus()\"\n [transformPaste]=\"transformPaste()\"\n inputAutocomplete=\"one-time-code\"\n (valueChange)=\"onValueChange($event)\"\n (focusout)=\"_onBlur()\"\n (completed)=\"completed.emit($event)\"\n>\n @for (group of _groups(); track $index) {\n @if (group.precededBySeparator) {\n <hlm-input-otp-separator />\n }\n\n <hlm-input-otp-group>\n @for (index of group.indices; track index) {\n <hlm-input-otp-slot [index]=\"index\" [forceInvalid]=\"invalid()\" />\n }\n </hlm-input-otp-group>\n }\n</brn-input-otp>\n","import { Directive } from '@angular/core';\nimport { HlmLabel } from 'yukit-web/helm/label';\n\n/**\n * Form label directive applied directly to a native `<label>` element.\n *\n * Provides label styling and pairs with form controls using standard `for` attribute.\n *\n * Extends `HlmLabel` (instead of composing it via `hostDirectives`) because `id`/`for` are\n * inputs `HlmLabel` itself re-exposes from `BrnLabel` through its own `hostDirectives`, and\n * Angular's host-directive forwarding is not transitive (NG2017) — they can't be re-listed at\n * this level. Class inheritance carries the whole surface over unchanged: a static `for`/`id`\n * on the `<label>` reaches `BrnLabel` as an initial input, whose `[attr.for]` host binding then\n * re-writes the same value.\n *\n * Usage:\n * ```html\n * <label yuwLabel for=\"username\">Username</label>\n * <yuw-input inputId=\"username\" [(value)]=\"username\" />\n * ```\n */\n@Directive({\n selector: 'label[yuwLabel]',\n})\nexport class YuwLabel extends HlmLabel {}\n","import { cva } from 'class-variance-authority';\n\n/**\n * Class map for `yuw-checkbox`, layered on top of `HlmCheckbox`'s own classes.\n *\n * The base indeterminate treatment is unconditional — it's how *every* `yuw-checkbox` renders\n * that state, not a variant — so it lives in the cva base, while `secondary` is an opt-in\n * boolean variant layered on top.\n *\n * Order is load-bearing: the secondary classes override the base's `bg-primary`/`border-primary`,\n * and cva emits base classes before variant classes, so the component must pass the result\n * through `cn()` for `tailwind-merge` to keep the later (secondary) ones instead of shipping both\n * to the DOM and leaving it to specificity.\n */\nexport const checkboxVariants = cva(\n [\n 'data-[state=indeterminate]:bg-primary',\n 'dark:data-[state=indeterminate]:bg-primary',\n 'data-[state=indeterminate]:text-primary-foreground',\n 'data-[state=indeterminate]:[&>span]:hidden',\n 'data-[state=indeterminate]:after:h-0.5',\n 'data-[state=indeterminate]:after:w-2.5',\n 'data-[state=indeterminate]:after:rounded-full',\n 'data-[state=indeterminate]:after:bg-current',\n ],\n {\n variants: {\n secondary: {\n true: [\n 'data-[state=checked]:bg-(color:--neutrals-element-high)',\n 'data-[state=checked]:bg-(image:--neutrals-element-high-gradient)',\n 'data-[state=checked]:text-(--neutrals-overlay)',\n 'data-[state=checked]:border-(--neutrals-element-high)',\n 'data-[state=indeterminate]:bg-(color:--neutrals-element-high)',\n 'data-[state=indeterminate]:bg-(image:--neutrals-element-high-gradient)',\n 'data-[state=indeterminate]:text-(--neutrals-white)',\n 'data-[state=indeterminate]:border-(--neutrals-element-high)',\n 'dark:data-[state=indeterminate]:text-(--neutrals-black)',\n ],\n false: 'data-[state=indeterminate]:border-primary',\n },\n },\n defaultVariants: {\n secondary: false,\n },\n },\n);\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { HlmCheckbox } from 'yukit-web/helm/checkbox';\nimport { provideValueAccessor, YuwValueAccessorBase } from '../../utils/value-accessor';\nimport { YuwLabel } from '../label/label.directive';\nimport { cn } from '../../utils/cn';\nimport { checkboxVariants } from './checkbox.variants';\n\n/**\n * Checkbox control supporting two-way boolean binding, form integration (`ngModel`, `formControlName`),\n * indeterminate state, and secondary styling variant.\n *\n * Projected content becomes the checkbox's clickable label: the control is wrapped in a `<label>`,\n * so clicking the text toggles it and the text is announced as the accessible name. Without\n * projected content, pair it with an external `<label [for]>` via `inputId` or set `ariaLabel`.\n *\n * Inputs / Models:\n * - `value` / `checked`: Two-way boolean state of the checkbox. Default is `false`.\n * - `indeterminate`: Two-way boolean state for mixed/indeterminate checkbox appearance. Default is `false`.\n * - `disabled`: Disables checkbox interaction.\n * - `required`: Marks checkbox as required.\n * - `invalid`: Forces invalid styling.\n * - `name`: Form input name attribute.\n * - `inputId`: ID set on the native input element for `<label [for]>` matching.\n * - `ariaLabel`: Accessible name for screen readers when there's no visible label.\n * - `ariaLabelledby`: ID of an external element that labels the checkbox.\n * - `ariaDescribedby`: ID of an external element that describes the checkbox (hints, errors).\n * - `secondary`: Enables secondary color variant styling.\n *\n * Usage:\n * ```html\n * <yuw-checkbox [(checked)]=\"acceptedTerms\">Accept terms</yuw-checkbox>\n * <yuw-checkbox [(indeterminate)]=\"isMixed\" [(checked)]=\"allSelected\" />\n * <yuw-checkbox formControlName=\"rememberMe\" />\n * ```\n */\n@Component({\n selector: 'yuw-checkbox',\n imports: [HlmCheckbox, YuwLabel],\n providers: [provideValueAccessor(YuwCheckboxComponent)],\n host: {\n class: 'contents',\n },\n templateUrl: './checkbox.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwCheckboxComponent extends YuwValueAccessorBase<boolean> {\n readonly ariaDescribedby = input<string | undefined>(undefined);\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly ariaLabelledby = input<string | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly indeterminate = model(false);\n readonly inputId = input<string | undefined>(undefined);\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly name = input<string | undefined>(undefined);\n readonly required = input(false, { transform: booleanAttribute });\n readonly secondary = input(false, { transform: booleanAttribute });\n readonly value = model<boolean>(false, { alias: 'checked' });\n\n protected readonly _class = computed(() => cn(checkboxVariants({ secondary: this.secondary() })));\n protected readonly _disabled = computed(() => this._isDisabled(this.disabled()));\n\n protected _emptyValue(): boolean {\n return false;\n }\n\n protected onCheckedChange(checked: boolean): void {\n this._commit(checked);\n }\n}\n","<label yuwLabel class=\"gap-3\" (focusout)=\"_onBlur()\">\n <hlm-checkbox\n [class]=\"_class()\"\n [checked]=\"value()\"\n [(indeterminate)]=\"indeterminate\"\n [disabled]=\"_disabled()\"\n [required]=\"required()\"\n [forceInvalid]=\"invalid()\"\n [name]=\"name() ?? null\"\n [inputId]=\"inputId() ?? null\"\n [aria-label]=\"ariaLabel() ?? null\"\n [aria-labelledby]=\"ariaLabelledby() ?? null\"\n [aria-describedby]=\"ariaDescribedby() ?? null\"\n (checkedChange)=\"onCheckedChange($event)\"\n />\n <ng-content />\n</label>\n","import { cva } from 'class-variance-authority';\n\nexport type YuwSwitchSizeDto = 'default' | 'xs' | 'sm' | 'lg';\n\n/**\n * Helm switch size each of our sizes maps onto.\n *\n * The helm ships two real scales — `sm` (14x24 track, 12px thumb) and `default` (18.4x32, 16px) —\n * and keys both the track and the thumb off the resulting `data-size` attribute. Mapping onto the\n * nearer of the two keeps that attribute truthful, so `yuwSwitchSizeVariants` only has to override\n * the sizes that genuinely differ, under the prefix the helm actually emits.\n */\nexport const YUW_SWITCH_HELM_SIZE = {\n xs: 'sm',\n sm: 'default',\n default: 'default',\n lg: 'default',\n} as const satisfies Record<YuwSwitchSizeDto, 'default' | 'sm'>;\n\n/**\n * Track and thumb geometry for `<yuw-switch>`.\n *\n * A switch is not a field, so these are not the field heights — a 40px-tall switch would dominate any\n * row it sits in. The scale keeps the helm's ~1.75:1 track ratio and its 2px inset, and shifts the\n * whole thing up one step so `default` reads at 22x36 instead of the helm's cramped 18.4x32.\n * Sizes are named to match the rest of the library, not to match its pixel values.\n *\n * Each track width is exactly twice its thumb. That is not cosmetic: the helm moves the thumb with\n * `translate-x-[calc(100%-2px)]`, which is thumb-relative, so the travel it produces (`thumb - 2`)\n * only equals the space available (`track - 2*border - thumb`) when `track == 2 * thumb`. Break that\n * and the thumb stops short of the far edge, leaving the on state visibly off-centre.\n *\n * Only the sizes that differ from the mapped helm scale are declared, each under the prefix that\n * scale emits (see {@link YUW_SWITCH_HELM_SIZE}) — a plain `h-*` does not displace the helm's\n * `data-[size=…]:h-*`, it just loses to it on specificity. `xs` maps exactly onto the helm's `sm`\n * scale, so it needs nothing. The thumb's `translate-x-[calc(100%-2px)]` is thumb-relative and\n * follows any size change on its own.\n */\nexport const yuwSwitchSizeVariants = cva('', {\n variants: {\n size: {\n xs: '',\n sm: 'data-[size=default]:h-[18px] data-[size=default]:w-[28px] [&_[data-slot=switch-thumb]]:group-data-[size=default]/switch:size-3.5',\n default:\n 'data-[size=default]:h-[22px] data-[size=default]:w-[36px] [&_[data-slot=switch-thumb]]:group-data-[size=default]/switch:size-[18px]',\n lg: 'data-[size=default]:h-[26px] data-[size=default]:w-[44px] [&_[data-slot=switch-thumb]]:group-data-[size=default]/switch:size-[22px]',\n } satisfies Record<YuwSwitchSizeDto, string>,\n },\n defaultVariants: {\n size: 'default',\n },\n});\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { HlmSwitchImports } from 'yukit-web/helm/switch';\nimport { provideValueAccessor, YuwValueAccessorBase } from '../../utils/value-accessor';\nimport { YuwLabel } from '../label/label.directive';\nimport { YUW_SWITCH_HELM_SIZE, type YuwSwitchSizeDto, yuwSwitchSizeVariants } from './switch.variants';\n\nexport type { YuwSwitchSizeDto };\n\n/**\n * Toggle switch control for binary settings and immediate state changes.\n *\n * Projected content becomes the switch's clickable label: the control is wrapped in a `<label>`,\n * so clicking the text toggles it and the text is announced as the accessible name. Without\n * projected content, pair it with an external `<label [for]>` via `inputId` or set `ariaLabel`.\n *\n * Inputs / Models:\n * - `checked` (alias for `value`): Two-way boolean on/off state. Bind as `[(checked)]`.\n * - `size`: Track size (`'default'`, `'xs'`, `'sm'`, `'lg'`). Named to match the rest of the\n * library; the pixel values keep a switch's own proportions rather than the field heights.\n * - `disabled`: Disables switch interaction.\n * - `inputId`: HTML `id` for the underlying control, enabling external `<label for=\"...\">` association.\n * - `ariaLabel`: Accessible name for switches with no visible adjacent label.\n *\n * Usage:\n * ```html\n * <yuw-switch [(checked)]=\"notificationsEnabled\">Enable Notifications</yuw-switch>\n * <yuw-switch formControlName=\"darkMode\" size=\"sm\" />\n * ```\n */\n@Component({\n selector: 'yuw-switch',\n imports: [...HlmSwitchImports, YuwLabel],\n providers: [provideValueAccessor(YuwSwitchComponent)],\n host: {\n class: 'contents',\n },\n templateUrl: './switch.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwSwitchComponent extends YuwValueAccessorBase<boolean> {\n readonly ariaDescribedby = input<string | undefined>(undefined);\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly ariaLabelledby = input<string | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly inputId = input<string | undefined>(undefined);\n readonly size = input<YuwSwitchSizeDto>('default');\n readonly value = model<boolean>(false, { alias: 'checked' });\n\n protected readonly _disabled = computed(() => this._isDisabled(this.disabled()));\n protected readonly _helmSize = computed(() => YUW_SWITCH_HELM_SIZE[this.size()]);\n protected readonly _switchClass = computed(() => yuwSwitchSizeVariants({ size: this.size() }));\n\n protected _emptyValue(): boolean {\n return false;\n }\n\n protected onCheckedChange(checked: boolean): void {\n this._commit(checked);\n }\n}\n","<label yuwLabel class=\"gap-3\" (focusout)=\"_onBlur()\">\n <hlm-switch\n [checked]=\"value()\"\n [size]=\"_helmSize()\"\n [class]=\"_switchClass()\"\n [disabled]=\"_disabled()\"\n [inputId]=\"inputId() ?? null\"\n [aria-label]=\"ariaLabel() ?? null\"\n [aria-labelledby]=\"ariaLabelledby() ?? null\"\n [aria-describedby]=\"ariaDescribedby() ?? null\"\n (checkedChange)=\"onCheckedChange($event)\"\n />\n <ng-content />\n</label>\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { HlmRadioGroupImports } from 'yukit-web/helm/radio-group';\nimport { provideValueAccessor, YuwValueAccessorBase } from '../../utils/value-accessor';\nimport { cn } from '../../utils/cn';\nimport { YuwLabel } from '../label/label.directive';\nimport type { YuwRadioOptionDto } from './radio-option.interface';\n\n/** Module-level counter so every unnamed group gets its own radio `name`. Binding `[name]`\n * unconditionally overrides Brain's autogenerated unique name, and an empty-string fallback\n * would make two unnamed groups on the same page share `name=\"\"` — i.e. act as one group. */\nlet nextUniqueId = 0;\n\n/**\n * Radio button group component for selecting a single option from a list.\n *\n * Inputs / Models:\n * - `value`: Two-way selected option value (`string | undefined`). `undefined` means nothing is selected.\n * - `options`: Required array of radio options (`YuwRadioOptionDto[]`).\n * - `disabled`: Disables all radio options.\n * - `required`: Marks the group as required.\n * - `name`: Shared HTML `name` attribute for all radios, making them mutually exclusive in native\n * form submission. When omitted, a unique per-instance name is generated.\n * - `ariaLabel`: Accessible name for the `role=\"radiogroup\"` element. User-facing text — the\n * consuming app is responsible for providing it translated.\n * - `ariaLabelledby`: ID of an external element (e.g. a visible heading) that labels the group.\n * - `class`: Extra classes merged onto the group container (layout tweaks like\n * `grid-cols-2` or `flex-row`). The `gap-3` base stays unless overridden.\n *\n * Usage:\n * ```html\n * <yuw-radio-group [options]=\"planOptions\" [(value)]=\"selectedPlan\" ariaLabel=\"Plan\" />\n * <yuw-radio-group [options]=\"genderOptions\" formControlName=\"gender\" ariaLabelledby=\"gender-heading\" />\n * ```\n */\n@Component({\n selector: 'yuw-radio-group',\n imports: [...HlmRadioGroupImports, YuwLabel],\n providers: [provideValueAccessor(YuwRadioGroupComponent)],\n host: {\n class: 'contents',\n },\n templateUrl: './radio-group.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwRadioGroupComponent extends YuwValueAccessorBase<string | undefined> {\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly ariaLabelledby = input<string | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly name = input<string | undefined>(undefined);\n readonly options = input.required<readonly YuwRadioOptionDto[]>();\n readonly required = input(false, { transform: booleanAttribute });\n readonly userClass = input<string>('', { alias: 'class' });\n readonly value = model<string | undefined>(undefined);\n\n private readonly _generatedName = `yuw-radio-group-${++nextUniqueId}`;\n\n protected readonly _disabled = computed(() => this._isDisabled(this.disabled()));\n protected readonly _groupClass = computed(() => cn('gap-3', this.userClass()));\n protected readonly _name = computed(() => this.name() ?? this._generatedName);\n\n protected _emptyValue(): string | undefined {\n return undefined;\n }\n\n protected onValueChange(next: string): void {\n this._commit(next);\n }\n}\n","<hlm-radio-group\n [class]=\"_groupClass()\"\n [value]=\"value() ?? ''\"\n [disabled]=\"_disabled()\"\n [required]=\"required()\"\n [name]=\"_name()\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-labelledby]=\"ariaLabelledby() ?? null\"\n (valueChange)=\"onValueChange($event)\"\n (focusout)=\"_onBlur()\"\n>\n @for (option of options(); track option.value) {\n <label yuwLabel class=\"gap-3\">\n <hlm-radio [value]=\"option.value\" [disabled]=\"option.disabled ?? false\">\n <hlm-radio-indicator indicator />\n </hlm-radio>\n\n {{ option.label }}\n </label>\n }\n</hlm-radio-group>\n","import { Directive } from '@angular/core';\nimport { HlmSkeleton } from 'yukit-web/helm/skeleton';\n\n/**\n * Loading skeleton placeholder directive with pulse animation effect.\n *\n * Sized using standard CSS height and width classes on the host element.\n *\n * Usage:\n * ```html\n * <div yuwSkeleton class=\"h-4 w-32 rounded\"></div>\n * <div yuwSkeleton class=\"size-10 rounded-full\"></div>\n * ```\n */\n@Directive({\n selector: '[yuwSkeleton]',\n hostDirectives: [HlmSkeleton],\n host: {\n 'aria-hidden': 'true',\n },\n})\nexport class YuwSkeletonDirective {}\n","import { Directive } from '@angular/core';\nimport {\n HlmCard,\n HlmCardAction,\n HlmCardContent,\n HlmCardDescription,\n HlmCardFooter,\n HlmCardHeader,\n HlmCardTitle,\n} from 'yukit-web/helm/card';\n\n/**\n * Container directive for card components.\n * Accepts optional `size` input (e.g. `'default'` or `'sm'`).\n *\n * Usage:\n * ```html\n * <div yuwCard>\n * <div yuwCardHeader>\n * <h3 yuwCardTitle>Title</h3>\n * <p yuwCardDescription>Description text</p>\n * </div>\n * <div yuwCardContent>Main content</div>\n * <div yuwCardFooter>Footer content</div>\n * </div>\n * ```\n */\n@Directive({\n selector: '[yuwCard]',\n hostDirectives: [{ directive: HlmCard, inputs: ['size'] }],\n})\nexport class YuwCardDirective {}\n\n/** Header container directive for a card. */\n@Directive({\n selector: '[yuwCardHeader]',\n hostDirectives: [HlmCardHeader],\n})\nexport class YuwCardHeaderDirective {}\n\n/** Heading directive for card title text. */\n@Directive({\n selector: '[yuwCardTitle]',\n hostDirectives: [HlmCardTitle],\n})\nexport class YuwCardTitleDirective {}\n\n/** Subtitle or description directive for card text. */\n@Directive({\n selector: '[yuwCardDescription]',\n hostDirectives: [HlmCardDescription],\n})\nexport class YuwCardDescriptionDirective {}\n\n/** Header action directive for placing top-right controls (e.g. menu button or status badge). */\n@Directive({\n selector: '[yuwCardAction]',\n hostDirectives: [HlmCardAction],\n})\nexport class YuwCardActionDirective {}\n\n/** Main body container directive for card content. */\n@Directive({\n selector: '[yuwCardContent]',\n hostDirectives: [HlmCardContent],\n})\nexport class YuwCardContentDirective {}\n\n/** Footer container directive for card action buttons or summary info. */\n@Directive({\n selector: '[yuwCardFooter]',\n hostDirectives: [HlmCardFooter],\n})\nexport class YuwCardFooterDirective {}\n\n/** Every card part, for a consumer's `imports`. */\nexport const YuwCardImports = [\n YuwCardDirective,\n YuwCardHeaderDirective,\n YuwCardTitleDirective,\n YuwCardDescriptionDirective,\n YuwCardActionDirective,\n YuwCardContentDirective,\n YuwCardFooterDirective,\n] as const;\n","import { Directive } from '@angular/core';\nimport {\n HlmEmpty,\n HlmEmptyContent,\n HlmEmptyDescription,\n HlmEmptyHeader,\n HlmEmptyMedia,\n HlmEmptyTitle,\n} from 'yukit-web/helm/empty';\n\n/**\n * Container directive for empty-state layout panels (e.g., \"No search results\", \"Inbox empty\").\n *\n * Usage:\n * ```html\n * <div yuwEmpty>\n * <div yuwEmptyHeader>\n * <div yuwEmptyMedia>\n * <ng-icon name=\"lucideFolderOpen\" />\n * </div>\n * <h3 yuwEmptyTitle>No files found</h3>\n * <p yuwEmptyDescription>Try uploading a file or changing your query.</p>\n * </div>\n * <div yuwEmptyContent>\n * <yuw-button>Upload File</yuw-button>\n * </div>\n * </div>\n * ```\n */\n@Directive({\n selector: '[yuwEmpty]',\n hostDirectives: [HlmEmpty],\n})\nexport class YuwEmptyDirective {}\n\n/** Header container directive for empty-state title and media. */\n@Directive({\n selector: '[yuwEmptyHeader]',\n hostDirectives: [HlmEmptyHeader],\n})\nexport class YuwEmptyHeaderDirective {}\n\n/** Slot directive for empty-state icons or illustrations. Supports `variant` input. */\n@Directive({\n selector: '[yuwEmptyMedia]',\n hostDirectives: [{ directive: HlmEmptyMedia, inputs: ['variant'] }],\n})\nexport class YuwEmptyMediaDirective {}\n\n/** Title heading directive for empty state message. */\n@Directive({\n selector: '[yuwEmptyTitle]',\n hostDirectives: [HlmEmptyTitle],\n})\nexport class YuwEmptyTitleDirective {}\n\n/** Description paragraph directive explaining the empty state. */\n@Directive({\n selector: '[yuwEmptyDescription]',\n hostDirectives: [HlmEmptyDescription],\n})\nexport class YuwEmptyDescriptionDirective {}\n\n/** Content slot directive for action buttons or call-to-action controls in an empty state. */\n@Directive({\n selector: '[yuwEmptyContent]',\n hostDirectives: [HlmEmptyContent],\n})\nexport class YuwEmptyContentDirective {}\n\n/** Every empty-state part, for a consumer's `imports`. */\nexport const YuwEmptyImports = [\n YuwEmptyDirective,\n YuwEmptyHeaderDirective,\n YuwEmptyMediaDirective,\n YuwEmptyTitleDirective,\n YuwEmptyDescriptionDirective,\n YuwEmptyContentDirective,\n] as const;\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { HlmDropdownMenuCheckboxIndicator } from 'yukit-web/helm/dropdown-menu';\n\n/**\n * Checkmark shown at the trailing edge of a `[yuwContextMenuCheckbox]` item while it is checked.\n *\n * Place it inside the checkbox item; the helm indicator positions itself absolutely against the\n * item and only becomes visible when the item carries `data-checked`.\n *\n * Usage:\n * ```html\n * <button yuwContextMenuCheckbox [checked]=\"showArchived()\" (triggered)=\"toggleArchived()\">\n * Show archived\n * <yuw-context-menu-checkbox-indicator />\n * </button>\n * ```\n */\n@Component({\n selector: 'yuw-context-menu-checkbox-indicator',\n imports: [HlmDropdownMenuCheckboxIndicator],\n host: {\n class: 'contents',\n },\n templateUrl: './context-menu-checkbox-indicator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwContextMenuCheckboxIndicatorComponent {}\n","<hlm-dropdown-menu-checkbox-indicator />\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { HlmDropdownMenuRadioIndicator } from 'yukit-web/helm/dropdown-menu';\n\n/**\n * Mark shown at the trailing edge of a `[yuwContextMenuRadio]` item while it is selected.\n *\n * Place it inside the radio item; the helm indicator positions itself absolutely against the\n * item and only becomes visible when the item carries `data-checked`.\n *\n * Usage:\n * ```html\n * <button yuwContextMenuRadio [checked]=\"order() === 'asc'\" (triggered)=\"setOrder('asc')\">\n * Ascending\n * <yuw-context-menu-radio-indicator />\n * </button>\n * ```\n */\n@Component({\n selector: 'yuw-context-menu-radio-indicator',\n imports: [HlmDropdownMenuRadioIndicator],\n host: {\n class: 'contents',\n },\n templateUrl: './context-menu-radio-indicator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwContextMenuRadioIndicatorComponent {}\n","<hlm-dropdown-menu-radio-indicator />\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { HlmDropdownMenuItemSubIndicator } from 'yukit-web/helm/dropdown-menu';\n\n/**\n * Trailing chevron for a `[yuwContextMenuSubTrigger]` item, signalling that it opens a nested\n * sub-menu. Flips automatically in RTL layouts.\n *\n * Usage:\n * ```html\n * <button [yuwContextMenuSubTrigger]=\"subMenu\">\n * More tools\n * <yuw-context-menu-sub-indicator />\n * </button>\n * ```\n */\n@Component({\n selector: 'yuw-context-menu-sub-indicator',\n imports: [HlmDropdownMenuItemSubIndicator],\n host: {\n class: 'contents',\n },\n templateUrl: './context-menu-sub-indicator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwContextMenuSubIndicatorComponent {}\n","<hlm-dropdown-menu-item-sub-indicator />\n","import {\n CdkContextMenuTrigger,\n CdkMenuItem,\n CdkMenuItemCheckbox,\n CdkMenuItemRadio,\n CdkMenuTrigger,\n} from '@angular/cdk/menu';\nimport { booleanAttribute, Directive, effect, inject, input, TemplateRef } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\nimport { HlmContextMenuTrigger } from 'yukit-web/helm/context-menu';\nimport {\n HlmDropdownMenu,\n HlmDropdownMenuCheckbox,\n HlmDropdownMenuGroup,\n HlmDropdownMenuItem,\n HlmDropdownMenuLabel,\n HlmDropdownMenuRadio,\n HlmDropdownMenuSeparator,\n HlmDropdownMenuShortcut,\n HlmDropdownMenuSub,\n HlmDropdownMenuSubTrigger,\n} from 'yukit-web/helm/dropdown-menu';\nimport { YuwContextMenuCheckboxIndicatorComponent } from './context-menu-checkbox-indicator.component';\nimport { YuwContextMenuRadioIndicatorComponent } from './context-menu-radio-indicator.component';\nimport { YuwContextMenuSubIndicatorComponent } from './context-menu-sub-indicator.component';\n\n/**\n * Context menu directives suite based on right-click actions and panel controls.\n *\n * Why some inputs/outputs below are bridged imperatively instead of forwarded via\n * `hostDirectives`: Angular only lets a wrapper re-expose a host directive's *own* (or\n * class-inherited) inputs/outputs. Names the helm layer itself only *exposes* from its own host\n * directives (`hlmContextMenuTrigger`, `hlmContextMenuOpened`/`hlmContextMenuClosed`, the items'\n * `checked`/`disabled`/`keepOpen`/`triggered`) are not re-exposable one level further — the\n * compiler rejects the mapping with NG2017 (\"does not have an input with a public name of …\"),\n * and the runtime's `validateMappings` enforces the same rule. Verified against Angular 21.2\n * (`validateHostDirectiveMappings` in the compiler, `validateMappings` in core) and reproduced\n * with an isolated `ngc` compile. Own inputs of the helm classes (`disabled`/`align`/`side` on\n * the trigger, `inset`/`variant` on items, `sideOffset` on the panel) *are* forwarded\n * declaratively.\n */\n/**\n * Attach to an element to open a context menu upon right-clicking.\n *\n * Usage:\n * ```html\n * <div [yuwContextMenuTrigger]=\"menu\">Right-click me</div>\n *\n * <ng-template #menu>\n * <div yuwContextMenu>\n * <button yuwContextMenuItem (triggered)=\"onEdit()\">Edit</button>\n * <button yuwContextMenuItem variant=\"destructive\" (triggered)=\"onDelete()\">Delete</button>\n * </div>\n * </ng-template>\n * ```\n */\n@Directive({\n selector: '[yuwContextMenuTrigger]',\n hostDirectives: [\n {\n directive: HlmContextMenuTrigger,\n inputs: ['disabled', 'align', 'side'],\n },\n ],\n})\nexport class YuwContextMenuTriggerDirective {\n private readonly _trigger = inject(CdkContextMenuTrigger, { host: true });\n\n readonly menu = input.required<TemplateRef<unknown>>({ alias: 'yuwContextMenuTrigger' });\n readonly menuData = input<unknown>(undefined, { alias: 'yuwContextMenuTriggerData' });\n\n readonly closed = outputFromObservable<void>(this._trigger.closed);\n readonly opened = outputFromObservable<void>(this._trigger.opened);\n\n constructor() {\n effect(() => {\n this._trigger.menuTemplateRef = this.menu();\n this._trigger.menuData = this.menuData();\n });\n }\n}\n\n/** Container directive for context menu options, placed inside the context menu template. */\n@Directive({\n selector: '[yuwContextMenu]',\n hostDirectives: [{ directive: HlmDropdownMenu, inputs: ['sideOffset'] }],\n})\nexport class YuwContextMenuDirective {}\n\n/** Interactive action item within a context menu. Place on a `<button>` element. */\n@Directive({\n selector: '[yuwContextMenuItem]',\n hostDirectives: [{ directive: HlmDropdownMenuItem, inputs: ['disabled', 'variant', 'inset'] }],\n})\nexport class YuwContextMenuItemDirective {\n private readonly _item = inject(CdkMenuItem, { host: true });\n\n readonly triggered = outputFromObservable<void>(this._item.triggered);\n}\n\n/**\n * Checkable action item within a context menu. Place on a `<button>` element and project a\n * `<yuw-context-menu-checkbox-indicator />` to show the checkmark while checked.\n *\n * Toggling keeps the menu open (the helm default). The `checked` input drives the state; listen\n * to `triggered` to flip it in the consumer.\n *\n * Usage:\n * ```html\n * <button yuwContextMenuCheckbox [checked]=\"showArchived()\" (triggered)=\"toggleArchived()\">\n * Show archived\n * <yuw-context-menu-checkbox-indicator />\n * </button>\n * ```\n */\n@Directive({\n selector: '[yuwContextMenuCheckbox]',\n hostDirectives: [{ directive: HlmDropdownMenuCheckbox, inputs: ['inset'] }],\n})\nexport class YuwContextMenuCheckboxDirective {\n private readonly _item = inject(CdkMenuItemCheckbox, { host: true });\n\n readonly checked = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly triggered = outputFromObservable<void>(this._item.triggered);\n\n constructor() {\n effect(() => {\n this._item.checked = this.checked();\n this._item.disabled = this.disabled();\n });\n }\n}\n\n/**\n * Single-select (radio) item within a context menu. Place on a `<button>` element inside a\n * `[yuwContextMenuGroup]` and project a `<yuw-context-menu-radio-indicator />` to show the mark\n * while selected.\n *\n * Selecting keeps the menu open (the helm default). The `checked` input drives the state; listen\n * to `triggered` to set it in the consumer.\n *\n * Usage:\n * ```html\n * <div yuwContextMenuGroup>\n * <button yuwContextMenuRadio [checked]=\"order() === 'asc'\" (triggered)=\"setOrder('asc')\">\n * Ascending\n * <yuw-context-menu-radio-indicator />\n * </button>\n * </div>\n * ```\n */\n@Directive({\n selector: '[yuwContextMenuRadio]',\n hostDirectives: [HlmDropdownMenuRadio],\n})\nexport class YuwContextMenuRadioDirective {\n private readonly _item = inject(CdkMenuItemRadio, { host: true });\n\n readonly checked = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly triggered = outputFromObservable<void>(this._item.triggered);\n\n constructor() {\n effect(() => {\n this._item.checked = this.checked();\n this._item.disabled = this.disabled();\n });\n }\n}\n\n/** Section heading/label within a context menu. */\n@Directive({\n selector: '[yuwContextMenuLabel]',\n hostDirectives: [{ directive: HlmDropdownMenuLabel, inputs: ['inset'] }],\n})\nexport class YuwContextMenuLabelDirective {}\n\n/** Group container for grouping context menu items (required around `[yuwContextMenuRadio]` sets). */\n@Directive({\n selector: '[yuwContextMenuGroup]',\n hostDirectives: [HlmDropdownMenuGroup],\n})\nexport class YuwContextMenuGroupDirective {}\n\n/** Visual divider line between context menu items. */\n@Directive({\n selector: '[yuwContextMenuSeparator]',\n hostDirectives: [HlmDropdownMenuSeparator],\n})\nexport class YuwContextMenuSeparatorDirective {}\n\n/** Text hint for a keyboard shortcut displayed alongside a context menu item. */\n@Directive({\n selector: '[yuwContextMenuShortcut]',\n hostDirectives: [HlmDropdownMenuShortcut],\n})\nexport class YuwContextMenuShortcutDirective {}\n\n/** Container directive for nesting a sub-level context menu. */\n@Directive({\n selector: '[yuwContextMenuSub]',\n hostDirectives: [HlmDropdownMenuSub],\n})\nexport class YuwContextMenuSubDirective {}\n\n/**\n * Trigger item for expanding a nested sub-context menu.\n *\n * Usage:\n * ```html\n * <button [yuwContextMenuSubTrigger]=\"subMenu\">\n * More tools\n * <yuw-context-menu-sub-indicator />\n * </button>\n * ```\n */\n@Directive({\n selector: '[yuwContextMenuSubTrigger]',\n hostDirectives: [{ directive: HlmDropdownMenuSubTrigger, inputs: ['align', 'side'] }],\n})\nexport class YuwContextMenuSubTriggerDirective {\n private readonly _trigger = inject(CdkMenuTrigger, { host: true });\n\n readonly menu = input.required<TemplateRef<unknown>>({ alias: 'yuwContextMenuSubTrigger' });\n\n constructor() {\n effect(() => {\n this._trigger.menuTemplateRef = this.menu();\n });\n }\n}\n\n/** Every context-menu part, for a consumer's `imports`. */\nexport const YuwContextMenuImports = [\n YuwContextMenuTriggerDirective,\n YuwContextMenuDirective,\n YuwContextMenuItemDirective,\n YuwContextMenuCheckboxDirective,\n YuwContextMenuCheckboxIndicatorComponent,\n YuwContextMenuRadioDirective,\n YuwContextMenuRadioIndicatorComponent,\n YuwContextMenuLabelDirective,\n YuwContextMenuGroupDirective,\n YuwContextMenuSeparatorDirective,\n YuwContextMenuShortcutDirective,\n YuwContextMenuSubDirective,\n YuwContextMenuSubTriggerDirective,\n YuwContextMenuSubIndicatorComponent,\n] as const;\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport {\n HlmDatePickerImports,\n injectHlmDatePickerConfig,\n injectHlmDatePickerMultiConfig,\n injectHlmDateRangePickerConfig,\n injectHlmMonthYearPickerConfig,\n} from 'yukit-web/helm/date-picker';\nimport type { YuwFieldSizeDto } from '../../interface/text-field.interface';\nimport { cn } from '../../utils/cn';\nimport { yuwButtonVariants } from '../button/button.variants';\nimport { provideValueAccessor, YuwValueAccessorBase } from '../../utils/value-accessor';\n\nexport type YuwDatepickerValue = Date | [Date, Date] | Date[] | null;\nexport type YuwDatepickerModeDto = 'single' | 'range' | 'multiple' | 'monthYear';\n\n/** Module-level counter for the fallback trigger id, so external labels always have a stable,\n * unique target even when the consumer doesn't pass `buttonId`. */\nlet nextUniqueId = 0;\n\n/**\n * Date picker control supporting single date, date range, multiple dates, or month/year pick modes.\n *\n * Inputs / Models:\n * - `mode`: Selection mode (`'single'`, `'range'`, `'multiple'`, `'monthYear'`). Default is `'single'`.\n * - `value`: Two-way selected date(s) (`YuwDatepickerValue`). Shape follows `mode`. Emits\n * `valueChange` on every selection change.\n * - `disabled`: Disables the control.\n * - `placeholder`: Text shown on the trigger while nothing is selected.\n * - `minDate`: Earliest selectable date.\n * - `maxDate`: Latest selectable date.\n * - `captionLayout`: Calendar caption mode — `'dropdown'` adds month/year dropdowns for faster year navigation. Default is `'label'`.\n * Ignored in `monthYear` mode: that picker renders its own month/year grid and has no calendar caption.\n * - `align`: Popover alignment relative to trigger (`'start'`, `'center'`, `'end'`). Default is `'start'`.\n * - `buttonId`: HTML `id` for the trigger button, enabling external `<label for=\"...\">`\n * association. When omitted, a unique per-instance id is generated.\n * - `class`: Extra classes merged onto the trigger button (e.g. a width), consumer classes win.\n * - `invalid`: Forces invalid styling.\n * - `formatDate`: Custom date formatter function `(date: Date) => string` for the trigger label.\n * In `range`/`multiple` modes it formats each date, joined with `' - '` / `', '`.\n *\n * Usage:\n * ```html\n * <yuw-datepicker [(value)]=\"selectedDate\" placeholder=\"Select date...\" />\n * <yuw-datepicker mode=\"range\" [(value)]=\"dateRange\" />\n * <yuw-datepicker mode=\"monthYear\" [(value)]=\"selectedMonth\" />\n * ```\n */\n@Component({\n selector: 'yuw-datepicker',\n imports: [...HlmDatePickerImports],\n providers: [provideValueAccessor(YuwDatepickerComponent)],\n host: {\n class: 'contents',\n },\n templateUrl: './datepicker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwDatepickerComponent extends YuwValueAccessorBase<YuwDatepickerValue> {\n readonly align = input<'start' | 'center' | 'end'>('start');\n readonly buttonId = input<string | undefined>(undefined);\n readonly captionLayout = input<'dropdown' | 'label' | 'dropdown-months' | 'dropdown-years'>('label');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly formatDate = input<((date: Date) => string) | undefined>(undefined);\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly maxDate = input<Date | undefined>(undefined);\n readonly minDate = input<Date | undefined>(undefined);\n readonly mode = input<YuwDatepickerModeDto>('single');\n readonly placeholder = input<string | undefined>(undefined);\n readonly size = input<YuwFieldSizeDto>('default');\n readonly userClass = input<string>('', { alias: 'class' });\n readonly value = model<YuwDatepickerValue>(null);\n\n private readonly _generatedButtonId = `yuw-datepicker-${++nextUniqueId}`;\n private readonly _monthYearConfig = injectHlmMonthYearPickerConfig<Date>();\n private readonly _multiConfig = injectHlmDatePickerMultiConfig<Date>();\n private readonly _rangeConfig = injectHlmDateRangePickerConfig<Date>();\n private readonly _singleConfig = injectHlmDatePickerConfig<Date>();\n\n protected readonly _buttonId = computed(() => this.buttonId() ?? this._generatedButtonId);\n protected readonly _disabled = computed(() => this._isDisabled(this.disabled()));\n protected readonly _formatMonthYear = computed(() => this.formatDate() ?? this._monthYearConfig.formatDate);\n protected readonly _formatMulti = computed(() => {\n const format = this.formatDate();\n if (!format) {\n return this._multiConfig.formatDates;\n }\n return (dates: Date[]) => dates.map(format).join(', ');\n });\n protected readonly _formatRange = computed(() => {\n const format = this.formatDate();\n if (!format) {\n return this._rangeConfig.formatDates;\n }\n return ([start, end]: [Date | null, Date | null]) =>\n [start, end]\n .filter((date): date is Date => date !== null)\n .map(format)\n .join(' - ');\n });\n protected readonly _formatSingle = computed(() => this.formatDate() ?? this._singleConfig.formatDate);\n protected readonly _multipleValue = computed(() => {\n const value = this.value();\n if (!value) {\n return [];\n }\n return Array.isArray(value) ? (value as Date[]) : [value];\n });\n protected readonly _rangeValue = computed(() => {\n const value = this.value();\n return Array.isArray(value) && value.length === 2 ? (value as [Date, Date]) : undefined;\n });\n protected readonly _singleValue = computed(() => {\n const value = this.value();\n return Array.isArray(value) ? undefined : (value ?? undefined);\n });\n protected readonly _triggerClass = computed(() => cn(yuwButtonVariants({ size: this.size() }), this.userClass()));\n\n protected _emptyValue(): YuwDatepickerValue {\n return this.mode() === 'multiple' ? [] : null;\n }\n\n protected onValueChange(next: YuwDatepickerValue): void {\n this._commit(next);\n }\n}\n","@switch (mode()) {\n @case ('range') {\n <hlm-date-range-picker\n [date]=\"_rangeValue()\"\n [disabled]=\"_disabled()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [captionLayout]=\"captionLayout()\"\n [align]=\"align()\"\n [formatDates]=\"_formatRange()\"\n (dateChange)=\"onValueChange($event)\"\n (focusout)=\"_onBlur()\"\n >\n <hlm-date-picker-trigger [buttonId]=\"_buttonId()\" [class]=\"_triggerClass()\" [forceInvalid]=\"invalid()\">\n {{ placeholder() ?? '' }}\n </hlm-date-picker-trigger>\n </hlm-date-range-picker>\n }\n @case ('multiple') {\n <hlm-date-picker-multi\n [date]=\"_multipleValue()\"\n [disabled]=\"_disabled()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [captionLayout]=\"captionLayout()\"\n [align]=\"align()\"\n [formatDates]=\"_formatMulti()\"\n (dateChange)=\"onValueChange($event)\"\n (focusout)=\"_onBlur()\"\n >\n <hlm-date-picker-trigger [buttonId]=\"_buttonId()\" [class]=\"_triggerClass()\" [forceInvalid]=\"invalid()\">\n {{ placeholder() ?? '' }}\n </hlm-date-picker-trigger>\n </hlm-date-picker-multi>\n }\n @case ('monthYear') {\n <hlm-month-year-picker\n [date]=\"_singleValue()\"\n [disabled]=\"_disabled()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [align]=\"align()\"\n [formatDate]=\"_formatMonthYear()\"\n (dateChange)=\"onValueChange($event)\"\n (focusout)=\"_onBlur()\"\n >\n <hlm-date-picker-trigger [buttonId]=\"_buttonId()\" [class]=\"_triggerClass()\" [forceInvalid]=\"invalid()\">\n {{ placeholder() ?? '' }}\n </hlm-date-picker-trigger>\n </hlm-month-year-picker>\n }\n @default {\n <hlm-date-picker\n [date]=\"_singleValue()\"\n [disabled]=\"_disabled()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [captionLayout]=\"captionLayout()\"\n [align]=\"align()\"\n [formatDate]=\"_formatSingle()\"\n (dateChange)=\"onValueChange($event)\"\n (focusout)=\"_onBlur()\"\n >\n <hlm-date-picker-trigger [buttonId]=\"_buttonId()\" [class]=\"_triggerClass()\" [forceInvalid]=\"invalid()\">\n {{ placeholder() ?? '' }}\n </hlm-date-picker-trigger>\n </hlm-date-picker>\n }\n}\n","import { Directive } from '@angular/core';\nimport {\n HlmCaption,\n HlmTable,\n HlmTableContainer,\n HlmTBody,\n HlmTd,\n HlmTFoot,\n HlmTh,\n HlmTHead,\n HlmTr,\n} from 'yukit-web/helm/table';\n\n/**\n * Outer wrapper container directive for responsive HTML table scroll container.\n *\n * Usage:\n * ```html\n * <div yuwTableContainer>\n * <table yuwTable>\n * <thead yuwTHead>\n * <tr yuwTr><th yuwTh>Header</th></tr>\n * </thead>\n * <tbody yuwTBody>\n * <tr yuwTr><td yuwTd>Data cell</td></tr>\n * </tbody>\n * </table>\n * </div>\n * ```\n */\n@Directive({\n selector: '[yuwTableContainer]',\n hostDirectives: [HlmTableContainer],\n})\nexport class YuwTableContainerDirective {}\n\n/** Table element styling directive applied to native `<table>`. */\n@Directive({\n selector: '[yuwTable]',\n hostDirectives: [HlmTable],\n})\nexport class YuwTableDirective {}\n\n/** Table header container directive applied to native `<thead>`. */\n@Directive({\n selector: '[yuwTHead]',\n hostDirectives: [HlmTHead],\n})\nexport class YuwTHeadDirective {}\n\n/** Table body container directive applied to native `<tbody>`. */\n@Directive({\n selector: '[yuwTBody]',\n hostDirectives: [HlmTBody],\n})\nexport class YuwTBodyDirective {}\n\n/** Table footer container directive applied to native `<tfoot>`. */\n@Directive({\n selector: '[yuwTFoot]',\n hostDirectives: [HlmTFoot],\n})\nexport class YuwTFootDirective {}\n\n/** Table row directive applied to native `<tr>`. */\n@Directive({\n selector: '[yuwTr]',\n hostDirectives: [HlmTr],\n})\nexport class YuwTrDirective {}\n\n/** Table header cell directive applied to native `<th>`. */\n@Directive({\n selector: '[yuwTh]',\n hostDirectives: [HlmTh],\n})\nexport class YuwThDirective {}\n\n/** Table data cell directive applied to native `<td>`. */\n@Directive({\n selector: '[yuwTd]',\n hostDirectives: [HlmTd],\n})\nexport class YuwTdDirective {}\n\n/** Table caption directive applied to native `<caption>`. */\n@Directive({\n selector: '[yuwCaption]',\n hostDirectives: [HlmCaption],\n})\nexport class YuwCaptionDirective {}\n\n/** Every table part, for a consumer's `imports`. */\nexport const YuwTableImports = [\n YuwTableContainerDirective,\n YuwTableDirective,\n YuwTHeadDirective,\n YuwTBodyDirective,\n YuwTFootDirective,\n YuwTrDirective,\n YuwThDirective,\n YuwTdDirective,\n YuwCaptionDirective,\n] as const;\n","import { cva } from 'class-variance-authority';\n\nexport type YuwDatatableAlign = 'start' | 'center' | 'end';\n\n/**\n * Class maps for `yuw-datatable`, layered on top of the Hlm table directives' own classes.\n *\n * `DATATABLE_ALIGN_CLASS` is keyed by a column's `meta.align` and shared by header and body cells,\n * so a column declares its alignment once and both honour it; `start` maps to an empty string\n * rather than re-stating what `HlmTh`/`HlmTd` already apply.\n *\n * The `appearance` maps are split per element because the treatment is not uniform: `card` frames\n * the container so the header tint clips to the radius instead of squaring off against a\n * consumer's wrapper, then drops the header's bottom border, since a rule underneath a filled\n * strip reads as a seam. `default` resolves to an empty string throughout, leaving a table that\n * does not opt in byte-identical to what the Hlm directives render alone.\n */\nexport const DATATABLE_ALIGN_CLASS: Record<YuwDatatableAlign, string> = {\n start: '',\n center: 'text-center',\n end: 'text-end',\n};\n\nexport const datatableContainerVariants = cva('', {\n variants: {\n appearance: {\n default: '',\n card: 'overflow-hidden rounded-(--radius-container-sm) border bg-(--neutrals-surface)',\n },\n },\n defaultVariants: {\n appearance: 'default',\n },\n});\n\nexport const datatableHeadVariants = cva('', {\n variants: {\n appearance: {\n default: '',\n card: 'bg-(--neutrals-background) [&_tr]:border-b-0',\n },\n },\n defaultVariants: {\n appearance: 'default',\n },\n});\n\nexport const datatableHeaderCellVariants = cva('', {\n variants: {\n appearance: {\n default: '',\n card: 'h-12 px-4 text-xs font-normal tracking-wider uppercase text-(--neutrals-element-mid)',\n },\n },\n defaultVariants: {\n appearance: 'default',\n },\n});\n\nexport const datatableCellVariants = cva('', {\n variants: {\n appearance: {\n default: '',\n card: 'h-16 px-4',\n },\n },\n defaultVariants: {\n appearance: 'default',\n },\n});\n\nexport const datatableRowVariants = cva('', {\n variants: {\n appearance: {\n default: '',\n card: 'border-(--neutrals-outline)',\n },\n },\n defaultVariants: {\n appearance: 'default',\n },\n});\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n linkedSignal,\n model,\n numberAttribute,\n type OnInit,\n output,\n} from '@angular/core';\nimport { outputFromObservable, toObservable } from '@angular/core/rxjs-interop';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucideChevronsUpDown, lucideChevronUp } from '@ng-icons/lucide';\nimport { FlexRenderDirective, injectTable } from '@tanstack/angular-table';\nimport {\n type ColumnDef,\n columnFilteringFeature,\n type ColumnFiltersState,\n columnVisibilityFeature,\n type ColumnVisibilityState,\n createCoreRowModel,\n createFilteredRowModel,\n createPaginatedRowModel,\n createSortedRowModel,\n type PaginationState,\n type RowData,\n rowPaginationFeature,\n rowSelectionFeature,\n type RowSelectionState,\n rowSortingFeature,\n sortFns,\n type SortingState,\n type TableOptions,\n} from '@tanstack/table-core';\nimport { skip } from 'rxjs';\nimport { cn } from '../../utils/cn';\nimport { YuwPaginationComponent } from '../pagination/pagination.component';\nimport { YuwSkeletonDirective } from '../skeleton/skeleton.directive';\nimport { YuwTableImports } from './table.directives';\nimport {\n DATATABLE_ALIGN_CLASS,\n datatableCellVariants,\n datatableContainerVariants,\n datatableHeaderCellVariants,\n datatableHeadVariants,\n datatableRowVariants,\n type YuwDatatableAlign,\n} from './datatable.variants';\n\n/**\n * The feature set `yuw-datatable` enables.\n *\n * Declared as an interface keyed by feature name rather than `typeof` an object literal: TanStack\n * v9 types every feature constant as a bare `TableFeature`, and carries the *capabilities* on the\n * key names instead (see its own `StockFeatures`). A `typeof` would therefore widen every entry to\n * `TableFeature` and lose which features are actually on, leaving the table's own methods\n * (`getState`, `getCanNextPage`, …) missing from the instance type.\n */\nexport interface YuwDatatableFeatures {\n columnMeta: YuwDatatableColumnMeta;\n columnFilteringFeature: typeof columnFilteringFeature;\n columnVisibilityFeature: typeof columnVisibilityFeature;\n rowPaginationFeature: typeof rowPaginationFeature;\n rowSelectionFeature: typeof rowSelectionFeature;\n rowSortingFeature: typeof rowSortingFeature;\n}\n\n/**\n * Per-column options `yuw-datatable` reads off TanStack's `meta`, where `align` sets the\n * horizontal alignment of that column's header and body cells and defaults to `'start'`.\n *\n * TanStack resolves `columnDef.meta` from a feature set's own `columnMeta` slot when it declares\n * one, falling back to its global declaration-merged `ColumnMeta` otherwise. Declaring the slot on\n * `YuwDatatableFeatures` is what constrains our columns to this shape — without it, `meta` is the\n * empty global interface, which accepts any object and would catch no typo.\n */\nexport interface YuwDatatableColumnMeta {\n align?: YuwDatatableAlign;\n}\n\nexport const YUW_DATATABLE_FEATURES: YuwDatatableFeatures = {\n columnMeta: {} as YuwDatatableColumnMeta,\n columnFilteringFeature,\n columnVisibilityFeature,\n rowPaginationFeature,\n rowSelectionFeature,\n rowSortingFeature,\n};\n\nexport type YuwDatatableColumnDef<TData extends RowData> = ColumnDef<YuwDatatableFeatures, TData>;\nexport type YuwDatatableAppearanceDto = 'default' | 'card';\n\n/**\n * Full-featured data table component supporting sorting, filtering, pagination, row selection,\n * loading skeleton state, and column visibility.\n *\n * Inputs / Models:\n * - `columns`: Column definitions array (`YuwDatatableColumnDef<TData>[]`). Default is `[]`.\n * - `data`: Row data array (`TData[]`). Default is `[]`.\n * - `sortable`: Enables click-to-sort on headers whose column allows it.\n * - `paginated`: Enables the pagination row model and renders footer controls.\n * - `selectable`: Enables the row-selection state. The checkbox column itself is *not* rendered\n * by the datatable — the consumer provides it as a display column (`id: 'select'`,\n * `flexRenderComponent(...)` header/cell that call TanStack's own toggle handlers), as in the\n * demo's data page.\n * - `emptyText`: Message shown when data is empty or filtered to nothing. User-facing text the\n * consuming app is responsible for translating.\n * - `loading`: Renders skeleton rows instead of data. The pagination footer stays visible (with\n * its buttons disabled) so the layout doesn't jump.\n * - `loadingRows`: Number of skeleton rows to show while `loading`. Default is `5`.\n * - `previousPageLabel` (required): Accessible name for the footer's previous-page button.\n * User-facing text the consuming app is responsible for translating.\n * - `nextPageLabel` (required): Accessible name for the footer's next-page button. User-facing\n * text the consuming app is responsible for translating.\n * - `paginationEllipsisSrText` (required): Screen-reader text for the pagination ellipsis.\n * User-facing text the consuming app is responsible for translating.\n * - `paginationAriaLabel` (required): Accessible name for the pagination navigation landmark.\n * User-facing text the consuming app is responsible for translating.\n * - `caption`: Optional `<caption>` text for the table. User-facing text the consuming app is\n * responsible for translating; when absent, no caption is rendered.\n * - `tableClass`: Extra classes merged onto the inner `<table>` element. The host is\n * `display: contents`, so a plain `class` on `<yuw-datatable>` would never reach the table.\n * - `appearance`: Visual treatment (`YuwDatatableAppearanceDto`). Default is `'default'` —\n * Spartan's plain table. `'card'` frames the table in its own rounded bordered surface with a\n * tinted uppercase header strip and taller rows; the consumer needs no wrapper of its own.\n *\n * Per-column, through TanStack's `meta`:\n * - `meta.align`: `'start' | 'center' | 'end'`, applied to both the header and body cells of that\n * column. Default is `'start'`. Alignment and the appearance's own cell classes are resolved\n * once into a per-column-id lookup rather than in the template, because a template method would\n * re-run the class merge for every cell on every change-detection pass.\n * - `sorting`: Two-way sorting state (`SortingState`).\n * - `columnFilters`: Two-way column filters state (`ColumnFiltersState`).\n * - `columnVisibility`: Two-way column visibility state (`ColumnVisibilityState`).\n * - `rowSelection`: Two-way row selection state (`RowSelectionState`).\n * - `pagination`: Two-way pagination state (`PaginationState`). Default is `{ pageIndex: 0, pageSize: 10 }`.\n *\n * Outputs:\n * - `selectedRowsChange`: Emits the selected row objects (`TData[]`) on selection changes. The\n * initial state does not emit — only actual changes after mount.\n *\n * Usage:\n * ```html\n * <yuw-datatable\n * [columns]=\"columns\"\n * [data]=\"users\"\n * [(sorting)]=\"sorting\"\n * appearance=\"card\"\n * paginated\n * selectable\n * previousPageLabel=\"Página anterior\"\n * nextPageLabel=\"Página siguiente\"\n * (selectedRowsChange)=\"onSelect($event)\"\n * />\n * ```\n *\n * ```ts\n * const columns: YuwDatatableColumnDef<Client>[] = [\n * { accessorKey: 'name', header: 'Nombre' },\n * { accessorKey: 'cif', header: 'CIF', meta: { align: 'center' } },\n * ];\n * ```\n */\n@Component({\n selector: 'yuw-datatable',\n imports: [...YuwTableImports, YuwPaginationComponent, YuwSkeletonDirective, FlexRenderDirective, NgIcon],\n providers: [provideIcons({ lucideChevronDown, lucideChevronUp, lucideChevronsUpDown })],\n host: {\n class: 'contents',\n },\n templateUrl: './datatable.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwDatatableComponent<TData extends RowData> implements OnInit {\n readonly appearance = input<YuwDatatableAppearanceDto>('default');\n readonly caption = input<string | undefined>(undefined);\n readonly columnFilters = model<ColumnFiltersState>([]);\n readonly columns = input<YuwDatatableColumnDef<TData>[]>([]);\n readonly columnVisibility = model<ColumnVisibilityState>({});\n readonly data = input<TData[]>([]);\n readonly emptyText = input<string | undefined>(undefined);\n readonly loading = input(false, { transform: booleanAttribute });\n readonly loadingRows = input(5, { transform: numberAttribute });\n readonly nextPageLabel = input.required<string>();\n readonly paginated = input(false, { transform: booleanAttribute });\n readonly pagination = model<PaginationState>({ pageIndex: 0, pageSize: 10 });\n readonly paginationAriaLabel = input.required<string>();\n readonly paginationEllipsisSrText = input.required<string>();\n readonly previousPageLabel = input.required<string>();\n readonly rowSelection = model<RowSelectionState>({});\n readonly selectable = input(false, { transform: booleanAttribute });\n readonly sortable = input(false, { transform: booleanAttribute });\n readonly sorting = model<SortingState>([]);\n readonly tableClass = input<string | undefined>(undefined);\n\n protected rowClicked = output<TData>();\n\n protected readonly _ariaSort: Record<'asc' | 'desc', 'ascending' | 'descending'> = {\n asc: 'ascending',\n desc: 'descending',\n };\n private readonly _options = (): Omit<TableOptions<YuwDatatableFeatures, TData>, 'features'> & {\n features: YuwDatatableFeatures & Record<string, unknown>;\n } => ({\n features: {\n ...YUW_DATATABLE_FEATURES,\n coreRowModel: createCoreRowModel<YuwDatatableFeatures, TData>(),\n filteredRowModel: createFilteredRowModel<YuwDatatableFeatures, TData>(),\n ...(this.sortable() ? { sortedRowModel: createSortedRowModel<YuwDatatableFeatures, TData>(), sortFns } : {}),\n ...(this.paginated() ? { paginatedRowModel: createPaginatedRowModel<YuwDatatableFeatures, TData>() } : {}),\n },\n data: this.data(),\n columns: this.columns(),\n enableRowSelection: this.selectable(),\n state: {\n sorting: this.sorting(),\n columnFilters: this.columnFilters(),\n columnVisibility: this.columnVisibility(),\n rowSelection: this.rowSelection(),\n pagination: this.pagination(),\n },\n onSortingChange: (updater) =>\n this.sorting.update((current) => (typeof updater === 'function' ? updater(current) : updater)),\n onColumnFiltersChange: (updater) =>\n this.columnFilters.update((current) => (typeof updater === 'function' ? updater(current) : updater)),\n onColumnVisibilityChange: (updater) =>\n this.columnVisibility.update((current) => (typeof updater === 'function' ? updater(current) : updater)),\n onPaginationChange: (updater) =>\n this.pagination.update((current) => (typeof updater === 'function' ? updater(current) : updater)),\n onRowSelectionChange: (updater) =>\n this.rowSelection.update((current) => (typeof updater === 'function' ? updater(current) : updater)),\n });\n protected readonly _sortIcon: Record<'asc' | 'desc' | 'none', string> = {\n asc: 'lucideChevronUp',\n desc: 'lucideChevronDown',\n none: 'lucideChevronsUpDown',\n };\n protected readonly table = injectTable<YuwDatatableFeatures, TData>(this._options);\n\n private readonly _selectedRows = computed(() => {\n this.rowSelection();\n return this.table.getSelectedRowModel().rows.map((row) => row.original);\n });\n readonly selectedRowsChange = outputFromObservable<TData[]>(toObservable(this._selectedRows).pipe(skip(1)));\n\n protected readonly _cellClasses = computed(() => {\n const header = datatableHeaderCellVariants({ appearance: this.appearance() });\n const cell = datatableCellVariants({ appearance: this.appearance() });\n\n return new Map(\n this.columns().map((column, index) => {\n const align = DATATABLE_ALIGN_CLASS[column.meta?.align ?? 'start'];\n return [\n column.id ?? ('accessorKey' in column ? String(column.accessorKey) : String(index)),\n { header: cn(header, align), cell: cn(cell, align) },\n ] as const;\n }),\n );\n });\n protected readonly _columnCount = computed(() => this.table.getVisibleLeafColumns().length);\n protected readonly _containerClass = computed(() => datatableContainerVariants({ appearance: this.appearance() }));\n protected readonly _headClass = computed(() => datatableHeadVariants({ appearance: this.appearance() }));\n protected readonly _isEmpty = computed(() => !this.loading() && this.table.getRowModel().rows.length === 0);\n protected readonly _rowClass = computed(() => datatableRowVariants({ appearance: this.appearance() }));\n protected readonly _skeletonRows = computed(() => Array.from({ length: this.loadingRows() }, (_, i) => i));\n protected readonly _tableClass = computed(() => cn(this.tableClass()));\n protected readonly currentPage = linkedSignal({\n source: () => this.pagination().pageIndex,\n computation: (pageIndex) => pageIndex + 1,\n });\n\n /**\n * Applies the real options once, after inputs are set.\n *\n * `injectTable` constructs the table from a `queueMicrotask` that can fire before Angular has\n * assigned any input, so it captures `columns: []`/`data: []`. Its own options effect then\n * *skips its first run* (an `isMount` guard inside the library) — and that skipped run is\n * exactly the one carrying the real values. Without this the table stays permanently empty no\n * matter what is bound.\n *\n * This runs in `ngOnInit` rather than a constructor `effect` because the effect fires in the\n * same too-early window and re-applies the same empty options; `ngOnInit` is the first point\n * where inputs are guaranteed present. Later changes are handled by the library's own effect,\n * which by then is past its mount guard.\n */\n ngOnInit(): void {\n const options = this._options();\n this.table.setOptions((previous) => ({ ...previous, ...options }));\n }\n\n protected onPageChange(page: number): void {\n this.pagination.update((current) => ({ ...current, pageIndex: page - 1 }));\n }\n\n protected onRowClick(row: TData): void {\n this.rowClicked.emit(row);\n }\n}\n","<div yuwTableContainer [class]=\"_containerClass()\">\n <table yuwTable [class]=\"_tableClass()\">\n @if (caption()) {\n <caption yuwCaption>{{ caption() }}</caption>\n }\n\n <thead yuwTHead [class]=\"_headClass()\">\n @for (headerGroup of table.getHeaderGroups(); track headerGroup.id) {\n <tr yuwTr [class]=\"_rowClass()\">\n @for (header of headerGroup.headers; track header.id) {\n @let sorted = header.column.getIsSorted();\n <th\n yuwTh\n scope=\"col\"\n [attr.colspan]=\"header.colSpan\"\n [attr.aria-sort]=\"sorted ? _ariaSort[sorted] : null\"\n [class]=\"_cellClasses().get(header.column.id)?.header\"\n >\n @if (!header.isPlaceholder) {\n @if (sortable() && header.column.getCanSort()) {\n <button\n type=\"button\"\n class=\"inline-flex items-center gap-1 select-none hover:text-foreground/80\"\n (click)=\"header.column.toggleSorting()\"\n >\n <ng-container\n *flexRender=\"header.column.columnDef.header; props: header.getContext(); let rendered\"\n >\n {{ rendered }}\n </ng-container>\n\n <ng-icon [name]=\"_sortIcon[sorted || 'none']\" class=\"shrink-0 text-xs\" aria-hidden=\"true\" />\n </button>\n } @else {\n <ng-container *flexRender=\"header.column.columnDef.header; props: header.getContext(); let rendered\">\n {{ rendered }}\n </ng-container>\n }\n }\n </th>\n }\n </tr>\n }\n </thead>\n\n <tbody yuwTBody>\n @if (loading()) {\n @for (row of _skeletonRows(); track row) {\n <tr yuwTr [class]=\"_rowClass()\">\n @for (column of table.getVisibleLeafColumns(); track column.id) {\n <td yuwTd [class]=\"_cellClasses().get(column.id)?.cell\">\n <span yuwSkeleton class=\"block h-4 w-full\"></span>\n </td>\n }\n </tr>\n }\n } @else if (_isEmpty()) {\n <tr yuwTr [class]=\"_rowClass()\">\n <td yuwTd [attr.colspan]=\"_columnCount()\" class=\"h-24 text-center text-muted-foreground\">\n {{ emptyText() ?? '' }}\n </td>\n </tr>\n } @else {\n @for (row of table.getRowModel().rows; track row.id) {\n <tr\n yuwTr\n [class]=\"_rowClass()\"\n [attr.data-state]=\"row.getIsSelected() ? 'selected' : null\"\n (click)=\"onRowClick(row.original)\"\n >\n @for (cell of row.getVisibleCells(); track cell.id) {\n <td yuwTd [class]=\"_cellClasses().get(cell.column.id)?.cell\">\n <ng-container *flexRender=\"cell.column.columnDef.cell; props: cell.getContext(); let rendered\">\n {{ rendered }}\n </ng-container>\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n</div>\n\n@if (paginated()) {\n <div class=\"flex items-center justify-between gap-4 py-3\">\n @if (selectable()) {\n <p class=\"text-sm text-muted-foreground\">\n {{ table.getSelectedRowModel().rows.length }} / {{ table.getFilteredRowModel().rows.length }}\n </p>\n } @else {\n <span></span>\n }\n\n <div class=\"flex items-center\">\n <yuw-pagination\n [page]=\"currentPage()\"\n (pageChange)=\"onPageChange($event)\"\n [totalPages]=\"table.getPageCount() || 1\"\n [previousLabel]=\"previousPageLabel()\"\n [nextLabel]=\"nextPageLabel()\"\n [ellipsisSrText]=\"paginationEllipsisSrText()\"\n [ariaLabel]=\"paginationAriaLabel()\"\n color=\"secondary\"\n size=\"icon-sm\"\n />\n </div>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { YuwCheckboxComponent } from '../../checkbox/checkbox.component';\n\n@Component({\n selector: 'yuw-datatable-row-select',\n standalone: true,\n imports: [YuwCheckboxComponent],\n template: `\n <yuw-checkbox\n [checked]=\"checked()\"\n [indeterminate]=\"indeterminate()\"\n [ariaLabel]=\"label()\"\n (checkedChange)=\"toggle()\"\n (click)=\"$event.stopPropagation()\"\n />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwDatatableRowSelect {\n readonly checked = input(false);\n readonly indeterminate = input(false);\n readonly label = input('Select row');\n readonly onToggle = input<() => void>(() => undefined);\n\n protected toggle(): void {\n this.onToggle()();\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { HlmAvatarImports } from 'yukit-web/helm/avatar';\nimport type { YuwAvatarGroupItemDto } from './avatar-group-item.interface';\n\n/** The size vocabulary of `<yuw-avatar>`. */\nexport type YuwAvatarSizeDto = 'default' | 'sm' | 'lg';\n\n/**\n * Displays a user or entity avatar with optional image, fallback text/initials, status badge, or overlapping group layout.\n *\n * Inputs:\n * - `size`: Avatar size (`'default'`, `'sm'`, `'lg'`). Default is `'default'`.\n * - `src`: Image URL for single-avatar mode. Omit to display fallback text.\n * - `alt`: Required. Accessible label for single-avatar mode and fallback text. User-facing text —\n * the consuming app is responsible for providing (and translating) it.\n * - `fallback`: Fallback text or initials shown when image is loading, unprovided, or fails to load.\n * - `badge`: Renders a status badge marker on the bottom-right corner (single-avatar mode).\n * - `group`: Array of item DTOs (`YuwAvatarGroupItemDto[]`) to render as an overlapping avatar group stack.\n * - `groupCount`: Overflow label string (e.g. `\"+5\"`) displayed at the end of an avatar group stack.\n * - `class`: Extra CSS classes merged onto the inner `hlm-avatar` element(s); merged last, so they win.\n *\n * Single Avatar Usage:\n * ```html\n * <yuw-avatar src=\"/path/to/user.png\" alt=\"Jane Doe\" fallback=\"JD\" />\n * <yuw-avatar alt=\"Jane Doe\" fallback=\"JD\" badge />\n * ```\n *\n * Avatar Group Usage:\n * ```html\n * <yuw-avatar [group]=\"teamMembers\" alt=\"Team\" groupCount=\"+5\" />\n * ```\n */\n@Component({\n selector: 'yuw-avatar',\n imports: [NgTemplateOutlet, ...HlmAvatarImports],\n host: {\n class: 'contents',\n },\n templateUrl: './avatar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwAvatarComponent {\n readonly alt = input.required<string>();\n readonly badge = input(false, { transform: booleanAttribute });\n readonly fallback = input<string | undefined>(undefined);\n readonly group = input<YuwAvatarGroupItemDto[] | undefined>(undefined);\n readonly groupCount = input<string | undefined>(undefined);\n readonly size = input<YuwAvatarSizeDto>('default');\n readonly src = input<string | undefined>(undefined);\n readonly userClass = input<string>('', { alias: 'class' });\n\n protected readonly _isGroup = computed(() => (this.group()?.length ?? 0) > 0);\n}\n","<ng-template #avatarBox let-src=\"src\" let-alt=\"alt\" let-fallback=\"fallback\" let-showBadge=\"showBadge\">\n <hlm-avatar [size]=\"size()\" [class]=\"userClass()\">\n @if (src) {\n <img hlmAvatarImage [src]=\"src\" [alt]=\"alt ?? ''\" />\n }\n <span hlmAvatarFallback>{{ fallback }}</span>\n\n @if (showBadge) {\n <span hlmAvatarBadge>\n <ng-content select=\"[yuwAvatarBadgeIcon]\" />\n </span>\n }\n </hlm-avatar>\n</ng-template>\n\n@if (_isGroup()) {\n <div hlmAvatarGroup>\n @for (entry of group(); track entry.alt + '|' + (entry.src ?? '')) {\n <ng-container\n [ngTemplateOutlet]=\"avatarBox\"\n [ngTemplateOutletContext]=\"{ src: entry.src, alt: entry.alt, fallback: entry.fallback, showBadge: false }\"\n />\n }\n\n @if (groupCount()) {\n <span hlmAvatarGroupCount>{{ groupCount() }}</span>\n }\n </div>\n} @else {\n <ng-container\n [ngTemplateOutlet]=\"avatarBox\"\n [ngTemplateOutletContext]=\"{ src: src(), alt: alt(), fallback: fallback(), showBadge: badge() }\"\n />\n}\n","import { Directive } from '@angular/core';\nimport {\n HlmItem,\n HlmItemActions,\n HlmItemContent,\n HlmItemDescription,\n HlmItemFooter,\n HlmItemGroup,\n HlmItemHeader,\n HlmItemMedia,\n HlmItemSeparator,\n HlmItemTitle,\n} from 'yukit-web/helm/item';\n\n/**\n * Container directive for list/row item layout structures.\n * Accepts optional `variant` and `size` inputs.\n *\n * Usage:\n * ```html\n * <div yuwItem>\n * <div yuwItemMedia><yuw-avatar fallback=\"JD\" alt=\"John Doe\" /></div>\n * <div yuwItemContent>\n * <h4 yuwItemTitle>John Doe</h4>\n * <p yuwItemDescription>Software Engineer</p>\n * </div>\n * <div yuwItemActions><yuw-button size=\"sm\">Follow</yuw-button></div>\n * </div>\n * ```\n */\n@Directive({\n selector: '[yuwItem], yuw-item',\n hostDirectives: [{ directive: HlmItem, inputs: ['variant', 'size'] }],\n})\nexport class YuwItemDirective {}\n\n/** Header slot directive for an item container. */\n@Directive({\n selector: '[yuwItemHeader], yuw-item-header',\n hostDirectives: [HlmItemHeader],\n})\nexport class YuwItemHeaderDirective {}\n\n/** Leading media slot directive (for icons, avatars, or images) at the start of an item. Supports `variant` (`'default'`, `'icon'`, `'image'`). */\n@Directive({\n selector: '[yuwItemMedia], yuw-item-media',\n hostDirectives: [{ directive: HlmItemMedia, inputs: ['variant'] }],\n})\nexport class YuwItemMediaDirective {}\n\n/** Main text content container directive for an item. */\n@Directive({\n selector: '[yuwItemContent], yuw-item-content',\n hostDirectives: [HlmItemContent],\n})\nexport class YuwItemContentDirective {}\n\n/** Title heading directive for an item. */\n@Directive({\n selector: '[yuwItemTitle], yuw-item-title',\n hostDirectives: [HlmItemTitle],\n})\nexport class YuwItemTitleDirective {}\n\n/** Subtitle or description paragraph directive for an item. */\n@Directive({\n selector: '[yuwItemDescription], yuw-item-description',\n hostDirectives: [HlmItemDescription],\n})\nexport class YuwItemDescriptionDirective {}\n\n/** Trailing action controls slot directive (for buttons, switches, or menu triggers) at the end of an item. */\n@Directive({\n selector: '[yuwItemActions], yuw-item-actions',\n hostDirectives: [HlmItemActions],\n})\nexport class YuwItemActionsDirective {}\n\n/** Footer slot directive for an item. */\n@Directive({\n selector: '[yuwItemFooter], yuw-item-footer',\n hostDirectives: [HlmItemFooter],\n})\nexport class YuwItemFooterDirective {}\n\n/** Container directive for grouping multiple item rows together into a list card or bordered group. */\n@Directive({\n selector: '[yuwItemGroup], yuw-item-group',\n hostDirectives: [HlmItemGroup],\n})\nexport class YuwItemGroupDirective {}\n\n/**\n * Visual separator line between items inside a group. Accepts `orientation` (`'horizontal'` or\n * `'vertical'`), reaching the underlying `BrnSeparator`, which owns the `role`,\n * `aria-orientation` and `data-orientation` attributes. Extends `HlmItemSeparator` (instead of\n * composing it via `hostDirectives`) because `orientation` is re-exposed by the helm from\n * `BrnSeparator` through its own `hostDirectives`, and host-directive forwarding is not\n * transitive (NG2017).\n */\n@Directive({\n selector: '[yuwItemSeparator], yuw-item-separator',\n})\nexport class YuwItemSeparatorDirective extends HlmItemSeparator {}\n\n/** Every item part, for a consumer's `imports`. */\nexport const YuwItemImports = [\n YuwItemDirective,\n YuwItemHeaderDirective,\n YuwItemMediaDirective,\n YuwItemContentDirective,\n YuwItemTitleDirective,\n YuwItemDescriptionDirective,\n YuwItemActionsDirective,\n YuwItemFooterDirective,\n YuwItemGroupDirective,\n YuwItemSeparatorDirective,\n] as const;\n","import { Directive } from '@angular/core';\nimport { BrnSheetClose, BrnSheetTrigger } from '@spartan-ng/brain/sheet';\n\n/**\n * Makes a `<yuw-button>` the trigger of the surrounding `<yuw-sheet>`.\n *\n * Mirrors `YuwDialogTriggerDirective`: the helm trigger only matches a native `button`, so the brain\n * directive is composed here instead, keeping `[hlmBtn]` inside `<yuw-button>`. `side` is forwarded\n * so a trigger can override which edge the sheet appears from.\n */\n@Directive({\n selector: 'yuw-button[yuwSheetTriggerButton]',\n hostDirectives: [{ directive: BrnSheetTrigger, inputs: ['id', 'side', 'type'] }],\n host: { 'data-slot': 'sheet-trigger' },\n})\nexport class YuwSheetTriggerDirective {}\n\n/** Closes the surrounding `<yuw-sheet>` when the host `<yuw-button>` is activated. */\n@Directive({\n selector: 'yuw-button[yuwSheetClose]',\n hostDirectives: [BrnSheetClose],\n host: { 'data-slot': 'sheet-close' },\n})\nexport class YuwSheetCloseDirective {}\n","import { Directive } from '@angular/core';\n\n/**\n * Marks an element as the sheet's footer content, projected into the footer slot.\n * Its presence is also what makes the footer render at all — without it the sheet\n * shows no empty footer strip.\n */\n@Directive({\n selector: '[yuwSheetFooter]',\n})\nexport class YuwSheetFooterDirective {}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n effect,\n input,\n model,\n viewChild,\n} from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideX } from '@ng-icons/lucide';\nimport { type ButtonVariants } from 'yukit-web/helm/button';\nimport { YuwButtonComponent } from '../button/button.component';\nimport { YuwSheetCloseDirective, YuwSheetTriggerDirective } from './sheet.directives';\nimport { HlmSheet, HlmSheetImports } from 'yukit-web/helm/sheet';\nimport { YuwSheetFooterDirective } from './sheet-footer.directive';\n\nexport type YuwSheetSideDto = 'top' | 'bottom' | 'left' | 'right';\n\nexport type YuwSheetScrollStrategyDto = null | 'close' | 'reposition';\n\nconst YUW_SHEET_OVERLAY_BASE_CLASS =\n 'data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 isolate bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs';\n\n/**\n * Slide-in sheet overlay panel component for side drawers, dialogs, and detail views.\n *\n * Accessibility: provide either `title` or `ariaLabel` — a modal panel without an accessible name\n * is announced as an anonymous dialog by screen readers.\n *\n * Inputs / Models:\n * - `open`: Two-way open/closed state (`boolean`). Drive directly via `[(open)]` to open/close programmatically.\n * - `showTrigger`: Whether to render the trigger button. Set `false` when opening only via `[(open)]`.\n * - `side`: Edge of the screen the panel slides in from (`'top'`, `'bottom'`, `'left'`, `'right'`). Default is `'right'`.\n * - `title`: Optional header title text. User-facing text the consuming app is responsible for translating.\n * - `description`: Optional header description text. User-facing text the consuming app is responsible for translating.\n * - `ariaLabel`: Accessible name for the sheet when no visible `title` is rendered. User-facing\n * text the consuming app is responsible for translating.\n * - `closeLabel`: Accessible label of the corner close (×) button. When set, the close button\n * renders and screen readers read this label; when absent there is no close button. User-facing\n * text the consuming app is responsible for translating.\n * - `panelClass`: Extra classes merged onto the sheet panel (e.g. `sm:max-w-lg` to widen it).\n * They win over the library defaults via `twMerge`. Note `twMerge` resolves per variant group, so a\n * plain utility does not displace a variant-prefixed default — to override `data-[side=left]:w-3/4`\n * the class has to be `data-[side=left]:w-64`, not `w-64`.\n * - `overlayClass`: Extra classes for the backdrop, for a sheet that should not dim the whole\n * viewport. Applied through `setOverlayClass` rather than a template binding: the backdrop lives in\n * the overlay too, and the helm's own class always wins the `class` input it exposes.\n * - `scrollStrategy`: What happens to page scroll while open. Defaults to the brain's blocking\n * strategy; pass `'reposition'` for a panel that should leave the page scrollable.\n * - `ariaModal`: Whether the sheet claims the rest of the page is hidden. Leave `true` for a real\n * modal; set `false` when content outside stays visible and usable, so the claim stays honest.\n * - `closeOnOutsidePointerEvents`: Whether a pointer press outside the panel closes it, backdrop\n * clicks included. Default is `true`, matching the brain from `@spartan-ng/brain` 1.3.4 on; pass\n * `false` for a panel that must be dismissed deliberately.\n * - `triggerVariant`: Button style variant for the trigger button.\n * - `triggerSize`: Button size for the trigger button.\n *\n * Usage:\n * ```html\n * <yuw-sheet [(open)]=\"isOpen\" side=\"right\" title=\"Edit Profile\" description=\"Update your account details.\" closeLabel=\"Close\">\n * <ng-container yuwSheetTrigger>Edit Profile</ng-container>\n *\n * <p>Sheet form content goes here.</p>\n *\n * <div yuwSheetFooter>\n * <yuw-button (clicked)=\"save()\">Save Changes</yuw-button>\n * </div>\n * </yuw-sheet>\n * ```\n */\n@Component({\n selector: 'yuw-sheet',\n imports: [...HlmSheetImports, YuwButtonComponent, YuwSheetTriggerDirective, YuwSheetCloseDirective, NgIcon],\n providers: [provideIcons({ lucideX })],\n host: {\n class: 'contents',\n },\n templateUrl: './sheet.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwSheetComponent {\n protected readonly hasFooter = contentChild(YuwSheetFooterDirective);\n private readonly sheet = viewChild.required(HlmSheet);\n\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly ariaModal = input(true, { transform: booleanAttribute });\n readonly closeLabel = input<string | undefined>(undefined);\n readonly closeOnOutsidePointerEvents = input(true, { transform: booleanAttribute });\n readonly description = input<string | undefined>(undefined);\n readonly open = model(false);\n readonly overlayClass = input<string | undefined>(undefined);\n readonly panelClass = input<string | undefined>(undefined);\n readonly scrollStrategy = input<YuwSheetScrollStrategyDto>(null);\n readonly showTrigger = input(true, { transform: booleanAttribute });\n readonly side = input<YuwSheetSideDto>('right');\n readonly title = input<string | undefined>(undefined);\n readonly triggerSize = input<ButtonVariants['size']>('default');\n readonly triggerVariant = input<ButtonVariants['variant']>('outline');\n\n protected readonly _sheetState = computed(() => (this.open() ? 'open' : 'closed') as 'open' | 'closed');\n\n constructor() {\n effect(() => {\n const overlayClass = this.overlayClass();\n if (overlayClass === undefined) return;\n\n this.sheet().setOverlayClass(`${YUW_SHEET_OVERLAY_BASE_CLASS} ${overlayClass}`);\n });\n }\n\n protected onStateChanged(state: 'open' | 'closed'): void {\n this.open.set(state === 'open');\n }\n}\n\nexport const YuwSheetImports = [YuwSheetComponent, YuwSheetFooterDirective] as const;\n","<hlm-sheet\n [side]=\"side()\"\n [state]=\"_sheetState()\"\n [aria-label]=\"ariaLabel()\"\n [aria-modal]=\"ariaModal()\"\n [scrollStrategy]=\"scrollStrategy()\"\n [closeOnOutsidePointerEvents]=\"closeOnOutsidePointerEvents()\"\n (stateChanged)=\"onStateChanged($event)\"\n>\n @if (showTrigger()) {\n <yuw-button yuwSheetTriggerButton [variant]=\"triggerVariant()\" [size]=\"triggerSize()\">\n <ng-content select=\"[yuwSheetTrigger]\" />\n </yuw-button>\n }\n\n <hlm-sheet-content *hlmSheetPortal [showCloseButton]=\"false\" [class]=\"panelClass()\">\n @if (title() || description()) {\n <div hlmSheetHeader>\n @if (title()) {\n <h2 hlmSheetTitle>{{ title() }}</h2>\n }\n @if (description()) {\n <p hlmSheetDescription>{{ description() }}</p>\n }\n </div>\n }\n\n <div class=\"flex-1 overflow-y-auto px-4\">\n <ng-content />\n </div>\n\n @if (hasFooter()) {\n <div hlmSheetFooter>\n <ng-content select=\"[yuwSheetFooter]\" />\n </div>\n }\n\n @if (closeLabel()) {\n <div class=\"absolute inset-e-3 top-3\">\n <yuw-button yuwSheetClose variant=\"ghost\" size=\"icon-sm\">\n <ng-icon yuwButtonIcon name=\"lucideX\" />\n <span class=\"sr-only\">{{ closeLabel() }}</span>\n </yuw-button>\n </div>\n }\n </hlm-sheet-content>\n</hlm-sheet>\n","import { Directive } from '@angular/core';\nimport { BrnPopoverTrigger } from '@spartan-ng/brain/popover';\n\n/**\n * Makes a `<yuw-button>` the trigger of the surrounding `<yuw-popover>`.\n *\n * The helm trigger directive's selector only matches a native `button`, so composing the brain\n * directive here is what lets the popover use `<yuw-button>` rather than a bare `[hlmBtn]` element.\n * Brain needs three things from its host, all of which `<yuw-button>` provides: the `click` that\n * bubbles up from the inner button, the `aria-expanded`/`data-state` attributes, and a host box to\n * anchor the panel against — hence `<yuw-button>`'s `inline-flex` host, since a `display: contents`\n * host has no rect for the overlay to position from.\n *\n * `data-slot` mirrors the helm directive so the popover stylesheet targets both identically.\n */\n@Directive({\n selector: 'yuw-button[yuwPopoverTriggerFor], yuw-button[yuwPopoverTriggerButton]',\n hostDirectives: [\n { directive: BrnPopoverTrigger, inputs: ['id', 'brnPopoverTriggerFor: yuwPopoverTriggerFor', 'type'] },\n ],\n host: { 'data-slot': 'popover-trigger' },\n})\nexport class YuwPopoverTriggerDirective {}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { type ButtonVariants } from 'yukit-web/helm/button';\nimport { HlmPopoverImports } from 'yukit-web/helm/popover';\nimport { YuwButtonComponent } from '../button/button.component';\nimport { YuwPopoverTriggerDirective } from './popover.directives';\n\nexport type YuwPopoverAlignDto = 'start' | 'center' | 'end';\n\n/**\n * Popover component for displaying anchored floating overlay panels.\n *\n * Inputs / Models:\n * - `open`: Two-way open/closed state (`boolean`). Drive directly via `[(open)]` to open/close programmatically.\n * - `showTrigger`: Whether to render the trigger button. Set `false` when opening only via `[(open)]`.\n * - `align`: Panel alignment relative to trigger (`'start'`, `'center'`, `'end'`). Default is `'center'`.\n * - `sideOffset`: Pixel offset between the trigger and the panel. Default is `4`.\n * - `title`: Optional header title text. User-facing text the consuming app is responsible for translating.\n * - `description`: Optional header description text. User-facing text the consuming app is responsible for translating.\n * - `panelClass`: Extra classes merged onto the popover panel (e.g. `w-80` to widen it). They win\n * over the library defaults via `twMerge`.\n * - `triggerVariant`: Button style variant for the trigger button.\n * - `triggerSize`: Button size for the trigger button.\n * - `triggerTransparent`: Strips the trigger's background and border in every state (rest, hover,\n * open), for triggers whose projected content is the whole control — an avatar, a name, a chevron.\n * - `triggerClass`: Extra classes merged onto the trigger button, last, so they beat both the\n * variant classes and `triggerTransparent` (e.g. `h-auto p-0` to drop the button's own box).\n *\n * The trigger is a `<yuw-button>`; `YuwPopoverTriggerDirective` composes the brain trigger onto it,\n * so the popover reuses our button component instead of applying `[hlmBtn]` directly.\n *\n * Usage:\n * ```html\n * <yuw-popover [(open)]=\"isOpen\" title=\"Notifications\" description=\"You're all caught up.\">\n * <ng-container yuwPopoverTrigger>View Notifications</ng-container>\n *\n * <p>Popover content body goes here.</p>\n * </yuw-popover>\n * ```\n */\n@Component({\n selector: 'yuw-popover',\n imports: [...HlmPopoverImports, YuwButtonComponent, YuwPopoverTriggerDirective],\n host: {\n class: 'contents',\n },\n templateUrl: './popover.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwPopoverComponent {\n readonly align = input<YuwPopoverAlignDto>('center');\n readonly description = input<string | undefined>(undefined);\n readonly open = model(false);\n readonly panelClass = input<string | undefined>(undefined);\n readonly showTrigger = input(true, { transform: booleanAttribute });\n readonly sideOffset = input(4);\n readonly title = input<string | undefined>(undefined);\n readonly triggerClass = input<string>('');\n readonly triggerSize = input<ButtonVariants['size']>('default');\n readonly triggerTransparent = input(false, { transform: booleanAttribute });\n readonly triggerVariant = input<ButtonVariants['variant']>('outline');\n\n protected readonly _popoverState = computed(() => (this.open() ? 'open' : 'closed') as 'open' | 'closed');\n\n protected onOpenChange(state: 'open' | 'closed'): void {\n this.open.set(state === 'open');\n }\n}\n","<div\n hlmPopover\n [state]=\"_popoverState()\"\n [align]=\"align()\"\n [sideOffset]=\"sideOffset()\"\n (stateChanged)=\"onOpenChange($event)\"\n>\n @if (showTrigger()) {\n <yuw-button\n yuwPopoverTriggerButton\n [variant]=\"triggerVariant()\"\n [size]=\"triggerSize()\"\n [transparent]=\"triggerTransparent()\"\n [class]=\"triggerClass()\"\n >\n <ng-content select=\"[yuwPopoverTrigger]\" />\n </yuw-button>\n }\n\n <hlm-popover-content *hlmPopoverPortal [class]=\"panelClass()\">\n @if (title() || description()) {\n <div hlmPopoverHeader>\n @if (title()) {\n <p hlmPopoverTitle>{{ title() }}</p>\n }\n @if (description()) {\n <p hlmPopoverDescription>{{ description() }}</p>\n }\n </div>\n }\n\n <ng-content />\n </hlm-popover-content>\n</div>\n","import { Directive } from '@angular/core';\nimport { BrnTooltip, type BrnTooltipPosition, provideBrnTooltipDefaultOptions } from '@spartan-ng/brain/tooltip';\nimport {\n DEFAULT_TOOLTIP_CONTENT_CLASSES,\n DEFAULT_TOOLTIP_SVG_CLASS,\n tooltipPositionVariants,\n} from 'yukit-web/helm/tooltip';\nimport { hlm } from 'yukit-web/helm/utils';\n\nexport type YuwTooltipPositionDto = 'top' | 'bottom' | 'left' | 'right';\n\n/**\n * Tooltip directive applied directly to the element that should show a hint on hover/focus.\n *\n * Inputs:\n * - `yuwTooltip`: Tooltip text (or `TemplateRef`) to display. User-facing text the consuming app\n * is responsible for translating.\n * - `position`: Side the tooltip opens on (`'top'`, `'bottom'`, `'left'`, `'right'`). Default is `'top'`.\n * - `showDelay`: Milliseconds before the tooltip opens on hover. Defaults to the Brain tooltip\n * config default (`150`).\n * - `hideDelay`: Milliseconds before the tooltip closes after the pointer leaves. Defaults to the\n * Brain tooltip config default (`100`).\n * - `tooltipDisabled`: Disables the tooltip entirely.\n *\n * Usage:\n * ```html\n * <button yuwTooltip=\"Save changes\" hlmBtn>Save</button>\n * <yuw-button [yuwTooltip]=\"helpText\" position=\"right\">Help</yuw-button>\n * ```\n */\n@Directive({\n selector: '[yuwTooltip]',\n providers: [\n provideBrnTooltipDefaultOptions({\n svgClasses: DEFAULT_TOOLTIP_SVG_CLASS,\n tooltipContentClasses: DEFAULT_TOOLTIP_CONTENT_CLASSES,\n arrowClasses: (position: BrnTooltipPosition) => hlm(tooltipPositionVariants({ position })),\n }),\n ],\n hostDirectives: [\n {\n directive: BrnTooltip,\n inputs: ['brnTooltip: yuwTooltip', 'position', 'hideDelay', 'showDelay', 'tooltipDisabled'],\n },\n ],\n})\nexport class YuwTooltipDirective {}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { HlmSpinner } from 'yukit-web/helm/spinner';\n\n/**\n * Indeterminate loading spinner.\n *\n * Inputs:\n * - `label`: Accessible label announced by screen readers. User-facing text the consuming app is\n * responsible for translating.\n * - `icon`: Name of a registered icon to spin instead of the default loader.\n *\n * Usage:\n * ```html\n * <yuw-spinner label=\"Cargando\" />\n * ```\n */\n@Component({\n selector: 'yuw-spinner',\n imports: [HlmSpinner],\n host: {\n class: 'contents',\n },\n templateUrl: './spinner.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwSpinnerComponent {\n readonly icon = input<string>('lucideLoader2');\n readonly label = input.required<string>();\n}\n","<hlm-spinner [icon]=\"icon()\" [aria-label]=\"label()\" />\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input, numberAttribute } from '@angular/core';\nimport type { ToastOptions } from '@spartan-ng/brain/sonner';\nimport { HlmToaster } from 'yukit-web/helm/sonner';\n\nexport type YuwToasterPositionDto =\n 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';\n\nexport type YuwToasterThemeDto = 'light' | 'dark' | 'system';\n\n/**\n * Global toast host. Mount once near the application root; individual toasts are dispatched\n * through the `toast` API from `@spartan-ng/brain/sonner`.\n *\n * Inputs:\n * - `richColors`: Enables per-type colored toasts (success, error, warning, info). Enabled by\n * default — a deliberate deviation from the spartan default (`false`).\n * - `theme`: Toast color theme (`'light'`, `'dark'`, `'system'`). Default is `'light'` (the helm\n * default) — apps rendering in dark mode must pass `'dark'` (or `'system'`) explicitly.\n * - `toastOptions`: Default options applied to every toast (classes, styles, etc.), passed\n * through to the underlying sonner toaster.\n * - `position`: Screen corner the stack renders in. Default is `'bottom-right'`.\n * - `duration`: Milliseconds a toast stays visible. Default is `4000`.\n * - `visibleToasts`: Maximum simultaneously visible toasts. Default is `3`.\n * - `closeButton`: Renders a dismiss button on each toast.\n * - `expand`: Keeps the stack expanded instead of collapsed.\n *\n * Usage:\n * ```html\n * <yuw-toaster />\n * ```\n */\n@Component({\n selector: 'yuw-toaster',\n imports: [HlmToaster],\n host: {\n class: 'contents',\n },\n templateUrl: './toaster.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwToasterComponent {\n readonly closeButton = input(false, { transform: booleanAttribute });\n readonly duration = input(4000, { transform: numberAttribute });\n readonly expand = input(false, { transform: booleanAttribute });\n readonly position = input<YuwToasterPositionDto>('bottom-right');\n readonly richColors = input(true, { transform: booleanAttribute });\n readonly theme = input<YuwToasterThemeDto>('light');\n readonly toastOptions = input<ToastOptions>({});\n readonly visibleToasts = input(3, { transform: numberAttribute });\n}\n","<hlm-toaster\n [richColors]=\"richColors()\"\n [theme]=\"theme()\"\n [toastOptions]=\"toastOptions()\"\n [position]=\"position()\"\n [duration]=\"duration()\"\n [visibleToasts]=\"visibleToasts()\"\n [closeButton]=\"closeButton()\"\n [expand]=\"expand()\"\n/>\n","import { Directive } from '@angular/core';\n\n/**\n * Marks a projected element as the trailing action of a `<yuw-alert>`, which pins it to the\n * top-right corner of the alert.\n */\n@Directive({\n selector: '[yuwAlertAction]',\n})\nexport class YuwAlertActionDirective {}\n","import { Directive } from '@angular/core';\n\n/**\n * Marks projected rich content (links, `<strong>`, …) as the description of a `<yuw-alert>`.\n *\n * When present, the alert projects this content into its description slot instead of rendering\n * the `description` string input. The content lands inside the element carrying the helm\n * `alert-description` data-slot, so the alert's grid keeps positioning it correctly.\n */\n@Directive({\n selector: '[yuwAlertDescription]',\n})\nexport class YuwAlertDescriptionDirective {}\n","import { Directive } from '@angular/core';\n\n/**\n * Marks projected rich content (links, `<strong>`, …) as the title of a `<yuw-alert>`.\n *\n * When present, the alert projects this content into its title slot instead of rendering the\n * `title` string input. The content lands inside the element carrying the helm `alert-title`\n * data-slot, so the alert's grid keeps positioning it correctly.\n */\n@Directive({\n selector: '[yuwAlertTitle]',\n})\nexport class YuwAlertTitleDirective {}\n","import { ChangeDetectionStrategy, Component, contentChild, input } from '@angular/core';\nimport { HlmAlert, HlmAlertAction, HlmAlertDescription, HlmAlertTitle } from 'yukit-web/helm/alert';\nimport { YuwAlertActionDirective } from './alert-action.directive';\nimport { YuwAlertDescriptionDirective } from './alert-description.directive';\nimport { YuwAlertTitleDirective } from './alert-title.directive';\n\nexport type YuwAlertVariantDto = 'default' | 'destructive';\n\n/**\n * Inline, non-blocking message panel for status and validation feedback.\n *\n * Inputs:\n * - `variant`: Visual tone (`'default'`, `'destructive'`). Default is `'default'`.\n * - `title`: Heading text. User-facing text the consuming app is responsible for translating.\n * Ignored when a `[yuwAlertTitle]` slot is projected.\n * - `description`: Body text. User-facing text the consuming app is responsible for translating.\n * Ignored when a `[yuwAlertDescription]` slot is projected.\n * - `class`: Classes forwarded to the inner `hlm-alert` panel (the host is `display: contents`,\n * so they would otherwise never reach the rendered element). The consumer's classes win over\n * the alert's own styling.\n *\n * Content slots:\n * - `[yuwAlertIcon]`: Leading icon.\n * - `[yuwAlertTitle]`: Rich title content (links, `<strong>`, …). Replaces the `title` input.\n * - `[yuwAlertDescription]`: Rich description content. Replaces the `description` input.\n * - `[yuwAlertAction]`: Trailing action control, pinned to the top-right corner.\n *\n * Usage:\n * ```html\n * <yuw-alert variant=\"destructive\" title=\"Pago rechazado\" description=\"Revisa los datos de la tarjeta.\">\n * <ng-icon yuwAlertIcon name=\"lucideTriangleAlert\" />\n * <yuw-button yuwAlertAction size=\"sm\" variant=\"ghost\">Reintentar</yuw-button>\n * </yuw-alert>\n *\n * <yuw-alert>\n * <span yuwAlertTitle>Condiciones <strong>actualizadas</strong></span>\n * <span yuwAlertDescription>Consulta los <a href=\"/cambios\">cambios</a> antes de continuar.</span>\n * </yuw-alert>\n * ```\n */\n@Component({\n selector: 'yuw-alert',\n imports: [HlmAlert, HlmAlertTitle, HlmAlertDescription, HlmAlertAction],\n host: {\n class: 'contents',\n },\n templateUrl: './alert.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwAlertComponent {\n protected readonly descriptionSlot = contentChild(YuwAlertDescriptionDirective);\n protected readonly hasAction = contentChild(YuwAlertActionDirective);\n protected readonly titleSlot = contentChild(YuwAlertTitleDirective);\n\n readonly description = input<string | undefined>(undefined);\n readonly title = input<string | undefined>(undefined);\n readonly userClass = input<string>('', { alias: 'class' });\n readonly variant = input<YuwAlertVariantDto>('default');\n}\n\nexport const YuwAlertImports = [\n YuwAlertComponent,\n YuwAlertActionDirective,\n YuwAlertTitleDirective,\n YuwAlertDescriptionDirective,\n] as const;\n","<hlm-alert [variant]=\"variant()\" [class]=\"userClass()\">\n <ng-content select=\"[yuwAlertIcon]\" />\n\n @if (titleSlot()) {\n <div hlmAlertTitle>\n <ng-content select=\"[yuwAlertTitle]\" />\n </div>\n } @else if (title()) {\n <div hlmAlertTitle>{{ title() }}</div>\n }\n\n @if (descriptionSlot()) {\n <div hlmAlertDescription>\n <ng-content select=\"[yuwAlertDescription]\" />\n </div>\n } @else if (description()) {\n <div hlmAlertDescription>{{ description() }}</div>\n }\n\n <ng-content />\n\n @if (hasAction()) {\n <div hlmAlertAction>\n <ng-content select=\"[yuwAlertAction]\" />\n </div>\n }\n</hlm-alert>\n","import { Directive } from '@angular/core';\nimport { BrnDialogClose, BrnDialogTrigger } from '@spartan-ng/brain/dialog';\n\n/**\n * Makes a `<yuw-button>` the trigger of the surrounding `<yuw-dialog>`.\n *\n * The helm trigger directive's selector only matches a native `button`, so composing the brain\n * directive here is what lets the dialog use `<yuw-button>` rather than applying `[hlmBtn]` outside\n * of `<yuw-button>` itself. A dialog is centred rather than anchored to its trigger, so brain needs\n * only the click — which bubbles up from the inner button — and the `aria-expanded`/`data-state`\n * attributes it writes on the host.\n */\n@Directive({\n selector: 'yuw-button[yuwDialogTriggerFor], yuw-button[yuwDialogTriggerButton]',\n hostDirectives: [{ directive: BrnDialogTrigger, inputs: ['id', 'brnDialogTriggerFor: yuwDialogTriggerFor', 'type'] }],\n host: { 'data-slot': 'dialog-trigger' },\n})\nexport class YuwDialogTriggerDirective {}\n\n/** Closes the surrounding `<yuw-dialog>` when the host `<yuw-button>` is activated. */\n@Directive({\n selector: 'yuw-button[yuwDialogClose]',\n hostDirectives: [BrnDialogClose],\n host: { 'data-slot': 'dialog-close' },\n})\nexport class YuwDialogCloseDirective {}\n","import { Directive } from '@angular/core';\n\n/**\n * Marks an element as the dialog's footer content, projected into the footer slot.\n * Its presence is also what makes the footer render at all — without it the dialog\n * shows no empty footer strip.\n */\n@Directive({\n selector: '[yuwDialogFooter]',\n})\nexport class YuwDialogFooterDirective {}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n input,\n model,\n} from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideX } from '@ng-icons/lucide';\nimport { type ButtonVariants } from 'yukit-web/helm/button';\nimport { YuwButtonComponent } from '../button/button.component';\nimport { YuwDialogCloseDirective, YuwDialogTriggerDirective } from './dialog.directives';\nimport { HlmDialogImports } from 'yukit-web/helm/dialog';\nimport { YuwDialogFooterDirective } from './dialog-footer.directive';\nimport type { YuwColorDto } from '../../interface/color.interface';\n\n/**\n * Modal dialog overlay for focused tasks and forms.\n *\n * Accessibility: provide either `title` or `ariaLabel` — a modal without an accessible name is\n * announced as an anonymous dialog by screen readers.\n *\n * Inputs / Models:\n * - `open`: Two-way open/closed state. Drive via `[(open)]` to control it programmatically.\n * - `showTrigger`: Whether to render the trigger button. Set `false` when opening only via `[(open)]`.\n * - `title`: Header title text. User-facing text the consuming app is responsible for translating.\n * - `description`: Header description text. User-facing text the consuming app is responsible for translating.\n * - `ariaLabel`: Accessible name for the dialog when no visible `title` is rendered. User-facing\n * text the consuming app is responsible for translating.\n * - `closeLabel`: Accessible label of the corner close (×) button. When set, the close button\n * renders and screen readers read this label; when absent there is no close button. User-facing\n * text the consuming app is responsible for translating.\n * - `panelClass`: Extra classes merged onto the dialog panel (e.g. `sm:max-w-lg` to widen it).\n * They win over the library defaults via `twMerge`.\n * - `triggerVariant`: Button style variant for the trigger button. Default is `'outline'`.\n * - `triggerSize`: Button size for the trigger button.\n *\n * Content slots:\n * - `[yuwDialogTrigger]`: Trigger button content.\n * - `[yuwDialogFooter]`: Footer actions (`YuwDialogFooterDirective`). The footer only renders when\n * this slot is filled.\n *\n * The projected body scrolls internally when it is taller than the viewport, like `<yuw-sheet>`.\n *\n * Usage:\n * ```html\n * <yuw-dialog [(open)]=\"isOpen\" title=\"Crear proyecto\" description=\"Asigna un nombre para empezar.\" closeLabel=\"Cerrar\">\n * <ng-container yuwDialogTrigger>Crear proyecto</ng-container>\n *\n * <yuw-input [(value)]=\"name\" label=\"Nombre\" />\n *\n * <div yuwDialogFooter>\n * <yuw-button (clicked)=\"save()\">Guardar</yuw-button>\n * </div>\n * </yuw-dialog>\n * ```\n */\n@Component({\n selector: 'yuw-dialog',\n imports: [...HlmDialogImports, YuwButtonComponent, YuwDialogTriggerDirective, YuwDialogCloseDirective, NgIcon],\n providers: [provideIcons({ lucideX })],\n host: {\n class: 'contents',\n },\n templateUrl: './dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwDialogComponent {\n protected readonly hasFooter = contentChild(YuwDialogFooterDirective);\n\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly closeLabel = input<string | undefined>(undefined);\n readonly description = input<string | undefined>(undefined);\n readonly open = model(false);\n readonly panelClass = input<string | undefined>(undefined);\n readonly showTrigger = input(true, { transform: booleanAttribute });\n readonly title = input<string | undefined>(undefined);\n readonly triggerColor = input<YuwColorDto>('secondary');\n readonly triggerSize = input<ButtonVariants['size']>('default');\n readonly triggerVariant = input<ButtonVariants['variant']>('outline');\n\n protected readonly _dialogState = computed(() => (this.open() ? 'open' : 'closed') as 'open' | 'closed');\n\n protected onStateChanged(state: 'open' | 'closed'): void {\n this.open.set(state === 'open');\n }\n}\n\nexport const YuwDialogImports = [YuwDialogComponent, YuwDialogFooterDirective] as const;\n","<hlm-dialog [state]=\"_dialogState()\" [aria-label]=\"ariaLabel()\" (stateChanged)=\"onStateChanged($event)\">\n @if (showTrigger()) {\n <yuw-button yuwDialogTriggerButton [color]=\"triggerColor()\" [variant]=\"triggerVariant()\" [size]=\"triggerSize()\">\n <ng-content select=\"[yuwDialogTrigger]\" />\n </yuw-button>\n }\n\n <hlm-dialog-content\n *hlmDialogPortal\n [showCloseButton]=\"false\"\n class=\"flex max-h-[calc(100dvh-2rem)] flex-col\"\n [class]=\"panelClass()\"\n >\n @if (title() || description()) {\n <div hlmDialogHeader>\n @if (title()) {\n <h2 hlmDialogTitle>{{ title() }}</h2>\n }\n @if (description()) {\n <p hlmDialogDescription>{{ description() }}</p>\n }\n </div>\n }\n\n <div class=\"flex-1 overflow-y-auto\">\n <ng-content />\n </div>\n\n @if (hasFooter()) {\n <div hlmDialogFooter>\n <ng-content select=\"[yuwDialogFooter]\" />\n </div>\n }\n\n @if (closeLabel()) {\n <div class=\"absolute inset-e-2 inset-t-2\">\n <yuw-button yuwDialogClose variant=\"ghost\" size=\"icon-sm\">\n <ng-icon yuwButtonIcon name=\"lucideX\" />\n <span class=\"sr-only\">{{ closeLabel() }}</span>\n </yuw-button>\n </div>\n }\n </hlm-dialog-content>\n</hlm-dialog>\n","import { Directive } from '@angular/core';\nimport { BrnAlertDialogTrigger } from '@spartan-ng/brain/alert-dialog';\n\n/**\n * Makes a `<yuw-button>` the trigger of the surrounding `<yuw-alert-dialog>`.\n *\n * Mirrors `YuwDialogTriggerDirective`: the helm trigger only matches a native `button`, so the brain\n * directive is composed here instead, keeping `[hlmBtn]` inside `<yuw-button>`.\n */\n@Directive({\n selector: 'yuw-button[yuwAlertDialogTriggerFor], yuw-button[yuwAlertDialogTriggerButton]',\n hostDirectives: [\n {\n directive: BrnAlertDialogTrigger,\n inputs: ['id', 'brnAlertDialogTriggerFor: yuwAlertDialogTriggerFor', 'type'],\n },\n ],\n host: { 'data-slot': 'alert-dialog-trigger' },\n})\nexport class YuwAlertDialogTriggerDirective {}\n","import { Directive } from '@angular/core';\n\n/**\n * Marks a projected element as the leading media of a `<yuw-alert-dialog>`, rendered in a\n * highlighted square above or beside the title.\n */\n@Directive({\n selector: '[yuwAlertDialogMedia]',\n})\nexport class YuwAlertDialogMediaDirective {}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n input,\n model,\n output,\n} from '@angular/core';\nimport { HlmAlertDialogImports } from 'yukit-web/helm/alert-dialog';\nimport { type ButtonVariants } from 'yukit-web/helm/button';\nimport { YuwButtonComponent } from '../button/button.component';\nimport { YuwAlertDialogTriggerDirective } from './alert-dialog.directives';\nimport { YuwAlertDialogMediaDirective } from './alert-dialog-media.directive';\n\nexport type YuwAlertDialogSizeDto = 'sm' | 'default';\n\n/**\n * Blocking confirmation dialog for destructive or irreversible actions. Unlike `<yuw-dialog>` it\n * cannot be dismissed by clicking the backdrop, so the user must pick one of the two actions.\n *\n * Inputs / Models:\n * - `open`: Two-way open/closed state. Drive via `[(open)]` to control it programmatically.\n * - `showTrigger`: Whether to render the trigger button. Set `false` when opening only via `[(open)]`.\n * - `title`: Header title text. User-facing text the consuming app is responsible for translating.\n * - `description`: Header description text. User-facing text the consuming app is responsible for translating.\n * - `confirmLabel`: Label of the confirm action. User-facing text the consuming app is responsible for translating.\n * - `cancelLabel`: Label of the cancel action. User-facing text the consuming app is responsible for translating.\n * - `confirmVariant`: Button style variant for the confirm action. Use `'destructive'` for deletions.\n * - `size`: Content width (`'sm'`, `'default'`). Default is `'default'`.\n * - `triggerVariant`: Button style variant for the trigger button.\n * - `triggerSize`: Button size for the trigger button.\n *\n * Outputs:\n * - `confirmed`: Emitted when the confirm action is activated.\n * - `cancelled`: Emitted only when the cancel button is activated — programmatic closes (setting\n * `open` to `false`) do not emit it.\n *\n * Content slots:\n * - `[yuwAlertDialogTrigger]`: Trigger button content.\n * - `[yuwAlertDialogMedia]`: Leading media/icon shown above or beside the title.\n *\n * Usage:\n * ```html\n * <yuw-alert-dialog\n * [(open)]=\"isOpen\"\n * title=\"¿Eliminar factura?\"\n * description=\"Esta acción no se puede deshacer.\"\n * confirmLabel=\"Eliminar\"\n * cancelLabel=\"Cancelar\"\n * confirmVariant=\"destructive\"\n * (confirmed)=\"delete()\" />\n * ```\n */\n@Component({\n selector: 'yuw-alert-dialog',\n imports: [...HlmAlertDialogImports, YuwButtonComponent, YuwAlertDialogTriggerDirective],\n host: {\n class: 'contents',\n },\n templateUrl: './alert-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwAlertDialogComponent {\n protected readonly hasMedia = contentChild(YuwAlertDialogMediaDirective);\n\n readonly cancelLabel = input.required<string>();\n readonly confirmLabel = input.required<string>();\n readonly confirmVariant = input<ButtonVariants['variant']>('default');\n readonly description = input<string | undefined>(undefined);\n readonly open = model(false);\n readonly showTrigger = input(true, { transform: booleanAttribute });\n readonly size = input<YuwAlertDialogSizeDto>('default');\n readonly title = input.required<string>();\n readonly triggerSize = input<ButtonVariants['size']>('default');\n readonly triggerVariant = input<ButtonVariants['variant']>('outline');\n\n readonly cancelled = output<void>();\n readonly confirmed = output<void>();\n\n protected readonly _dialogState = computed(() => (this.open() ? 'open' : 'closed') as 'open' | 'closed');\n\n protected onStateChanged(state: 'open' | 'closed'): void {\n this.open.set(state === 'open');\n }\n}\n","<hlm-alert-dialog [state]=\"_dialogState()\" (stateChanged)=\"onStateChanged($event)\">\n @if (showTrigger()) {\n <yuw-button yuwAlertDialogTriggerButton [variant]=\"triggerVariant()\" [size]=\"triggerSize()\">\n <ng-content select=\"[yuwAlertDialogTrigger]\" />\n </yuw-button>\n }\n\n <hlm-alert-dialog-content *hlmAlertDialogPortal [size]=\"size()\">\n <div hlmAlertDialogHeader>\n @if (hasMedia()) {\n <div hlmAlertDialogMedia>\n <ng-content select=\"[yuwAlertDialogMedia]\" />\n </div>\n }\n\n <h2 hlmAlertDialogTitle>{{ title() }}</h2>\n\n @if (description()) {\n <p hlmAlertDialogDescription>{{ description() }}</p>\n }\n </div>\n\n <ng-content />\n\n <div hlmAlertDialogFooter>\n <button hlmAlertDialogCancel (click)=\"cancelled.emit()\">{{ cancelLabel() }}</button>\n <button hlmAlertDialogAction [variant]=\"confirmVariant()\" (click)=\"confirmed.emit()\">\n {{ confirmLabel() }}\n </button>\n </div>\n </hlm-alert-dialog-content>\n</hlm-alert-dialog>\n","import { cva } from 'class-variance-authority';\nimport type { YuwFieldSizeDto } from '../../interface/text-field.interface';\n\n/**\n * Size classes for `<yuw-tabs>`, applied to the `hlm-tabs-list`.\n *\n * Two things scale, and both have to be written with the helm's own modifier prefixes so\n * tailwind-merge displaces the helm class rather than leaving it standing:\n *\n * - The list height, declared by the helm as `group-data-horizontal/tabs:h-8`. Only the horizontal\n * orientation has a fixed height; the vertical one is `h-fit` and is left alone.\n * - The triggers' horizontal padding, reached through a descendant selector. The helm's `px-1.5` is\n * tight enough that a taller list would look cramped, and the triggers are separate components\n * with no class passthrough. Their height needs nothing — `h-[calc(100%-1px)]` already tracks the\n * list.\n */\nexport const yuwTabsSizeVariants = cva('', {\n variants: {\n size: {\n default: 'group-data-horizontal/tabs:h-10 [&_[data-slot=tabs-trigger]]:px-2.5',\n xs: 'group-data-horizontal/tabs:h-7 [&_[data-slot=tabs-trigger]]:px-1.5',\n sm: 'group-data-horizontal/tabs:h-9 [&_[data-slot=tabs-trigger]]:px-2',\n lg: 'group-data-horizontal/tabs:h-11 [&_[data-slot=tabs-trigger]]:px-3',\n } satisfies Record<YuwFieldSizeDto, string>,\n },\n defaultVariants: {\n size: 'default',\n },\n});\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\n\n/**\n * Declares the content of a single `<yuw-tabs>` panel. Apply it to an `<ng-template>` and pass the\n * id of the tab it belongs to, matching an entry in the `tabs` input.\n *\n * Usage:\n * ```html\n * <ng-template yuwTabPanel=\"billing\">Contenido de facturación</ng-template>\n * ```\n */\n@Directive({\n selector: 'ng-template[yuwTabPanel]',\n})\nexport class YuwTabPanelDirective {\n readonly templateRef = inject<TemplateRef<unknown>>(TemplateRef);\n\n readonly tabId = input.required<string>({ alias: 'yuwTabPanel' });\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChildren, input, model } from '@angular/core';\nimport { HlmTabsImports } from 'yukit-web/helm/tabs';\nimport type { YuwTabItemDto } from './tab-item.interface';\nimport type { YuwFieldSizeDto } from '../../interface/text-field.interface';\nimport { yuwTabsSizeVariants } from './tabs.variants';\nimport { YuwTabPanelDirective } from './tab-panel.directive';\n\nexport type YuwTabsVariantDto = 'default' | 'line';\nexport type YuwTabsOrientationDto = 'horizontal' | 'vertical';\nexport type YuwTabsActivationModeDto = 'automatic' | 'manual';\n\n/**\n * Tabbed navigation between sibling panels.\n *\n * Triggers come from the `tabs` input; each panel's content is declared by the consumer as an\n * `<ng-template yuwTabPanel=\"<id>\">` whose id matches a tab. Panels are lazy: a panel's content\n * is only instantiated the first time its tab becomes active (and stays alive, hidden, after\n * switching away).\n *\n * Inputs / Models:\n * - `tabs`: The tab definitions (`YuwTabItemDto[]`) rendered as triggers, in order.\n * - `activeTab`: Two-way id of the selected tab. Drive via `[(activeTab)]` to control it\n * programmatically; listen to `activeTabChange` to react to activations.\n * - `size`: Tab-list height, matching the `<yuw-button>` of the same name.\n * - `variant`: Trigger list style (`'default'` filled, `'line'` underlined). Default is `'default'`.\n * - `orientation`: Layout direction (`'horizontal'`, `'vertical'`). Default is `'horizontal'`.\n * - `activationMode`: How keyboard focus activates tabs (`'automatic'` activates on focus,\n * `'manual'` requires Enter/Space). Default is `'automatic'`.\n *\n * Usage:\n * ```html\n * <yuw-tabs [tabs]=\"tabs\" [(activeTab)]=\"selected\">\n * <ng-template yuwTabPanel=\"general\">Contenido general</ng-template>\n * <ng-template yuwTabPanel=\"billing\">Contenido de facturación</ng-template>\n * </yuw-tabs>\n * ```\n */\n@Component({\n selector: 'yuw-tabs',\n imports: [NgTemplateOutlet, ...HlmTabsImports],\n host: {\n class: 'contents',\n },\n templateUrl: './tabs.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwTabsComponent {\n protected readonly panels = contentChildren(YuwTabPanelDirective);\n\n readonly activationMode = input<YuwTabsActivationModeDto>('automatic');\n readonly activeTab = model.required<string>();\n readonly orientation = input<YuwTabsOrientationDto>('horizontal');\n readonly size = input<YuwFieldSizeDto>('default');\n readonly tabs = input.required<YuwTabItemDto[]>();\n readonly variant = input<YuwTabsVariantDto>('default');\n\n protected readonly _listClass = computed(() => yuwTabsSizeVariants({ size: this.size() }));\n\n protected onTabActivated(tabId: string): void {\n this.activeTab.set(tabId);\n }\n}\n","<hlm-tabs\n [tab]=\"activeTab()\"\n [orientation]=\"orientation()\"\n [activationMode]=\"activationMode()\"\n (tabActivated)=\"onTabActivated($event)\"\n>\n <hlm-tabs-list [variant]=\"variant()\" [class]=\"_listClass()\">\n @for (tab of tabs(); track tab.id) {\n <button [hlmTabsTrigger]=\"tab.id\" [disabled]=\"tab.disabled ?? false\">{{ tab.label }}</button>\n }\n </hlm-tabs-list>\n\n @for (panel of panels(); track panel.tabId()) {\n <div [hlmTabsContent]=\"panel.tabId()\">\n <ng-template hlmTabsContentLazy>\n <ng-container [ngTemplateOutlet]=\"panel.templateRef\" />\n </ng-template>\n </div>\n }\n</hlm-tabs>\n","import { Directive } from '@angular/core';\nimport { provideBrnButtonConfig } from 'yukit-web/helm/button';\nimport {\n HlmAttachment,\n HlmAttachmentAction,\n HlmAttachmentActions,\n HlmAttachmentContent,\n HlmAttachmentDescription,\n HlmAttachmentGroup,\n HlmAttachmentMedia,\n HlmAttachmentTitle,\n HlmAttachmentTrigger,\n} from 'yukit-web/helm/attachment';\n\n/**\n * Container directive for a single file attachment card.\n *\n * Accepts `state` (`'idle'`, `'uploading'`, `'processing'`, `'error'`, `'done'`), `size`\n * (`'default'`, `'sm'`, `'xs'`) and `orientation` (`'horizontal'`, `'vertical'`), which drive the\n * styling of every nested slot.\n *\n * Usage:\n * ```html\n * <div yuwAttachment state=\"uploading\">\n * <div yuwAttachmentMedia><ng-icon name=\"lucideFileText\" /></div>\n * <div yuwAttachmentContent>\n * <span yuwAttachmentTitle>informe.pdf</span>\n * <span yuwAttachmentDescription>2,4 MB</span>\n * </div>\n * <div yuwAttachmentActions>\n * <button yuwAttachmentAction><ng-icon name=\"lucideX\" /></button>\n * </div>\n * </div>\n * ```\n */\n@Directive({\n selector: '[yuwAttachment], yuw-attachment',\n hostDirectives: [{ directive: HlmAttachment, inputs: ['state', 'size', 'orientation'] }],\n})\nexport class YuwAttachmentDirective {}\n\n/** Scrollable, snapping row that lays out several attachment cards. */\n@Directive({\n selector: '[yuwAttachmentGroup], yuw-attachment-group',\n hostDirectives: [HlmAttachmentGroup],\n})\nexport class YuwAttachmentGroupDirective {}\n\n/** Leading media slot of an attachment, for a file-type icon or an image preview. Supports `variant` (`'icon'`, `'image'`). */\n@Directive({\n selector: '[yuwAttachmentMedia], yuw-attachment-media',\n hostDirectives: [{ directive: HlmAttachmentMedia, inputs: ['variant'] }],\n})\nexport class YuwAttachmentMediaDirective {}\n\n/** Text content container of an attachment, holding its title and description. */\n@Directive({\n selector: '[yuwAttachmentContent], yuw-attachment-content',\n hostDirectives: [HlmAttachmentContent],\n})\nexport class YuwAttachmentContentDirective {}\n\n/** File name of an attachment. Truncates and shimmers while the attachment is uploading or processing. */\n@Directive({\n selector: '[yuwAttachmentTitle], yuw-attachment-title',\n hostDirectives: [HlmAttachmentTitle],\n})\nexport class YuwAttachmentTitleDirective {}\n\n/** Secondary line of an attachment, for file size, progress, or an error message. */\n@Directive({\n selector: '[yuwAttachmentDescription], yuw-attachment-description',\n hostDirectives: [HlmAttachmentDescription],\n})\nexport class YuwAttachmentDescriptionDirective {}\n\n/** Trailing container for an attachment's action buttons. */\n@Directive({\n selector: '[yuwAttachmentActions], yuw-attachment-actions',\n hostDirectives: [HlmAttachmentActions],\n})\nexport class YuwAttachmentActionsDirective {}\n\n/**\n * Icon-sized action button inside an attachment, such as remove or retry.\n *\n * Besides `type`, accepts the button `variant` and `size` (defaults `'ghost'` / `'icon-xs'`).\n * Extends `HlmAttachmentAction` (instead of composing it via `hostDirectives`) because\n * `variant`/`size` are inputs the helm only exposes from its own `HlmButton` host directive, and\n * host-directive forwarding is not transitive (NG2017) — inheritance carries the whole surface\n * over as real `HlmButton` inputs, so the cva variants resolve natively instead of being layered\n * on top of the defaults. Angular does not inherit `providers`, so the helm's\n * `provideBrnButtonConfig` defaults are mirrored here; keep them in sync with\n * `helm/attachment/src/lib/hlm-attachment-action.ts` if the helm is regenerated.\n */\n@Directive({\n selector: 'button[yuwAttachmentAction]',\n providers: [provideBrnButtonConfig({ variant: 'ghost', size: 'icon-xs' })],\n})\nexport class YuwAttachmentActionDirective extends HlmAttachmentAction {}\n\n/** Turns the whole attachment card into a single clickable target, layered under its actions. */\n@Directive({\n selector: 'button[yuwAttachmentTrigger], a[yuwAttachmentTrigger]',\n hostDirectives: [{ directive: HlmAttachmentTrigger, inputs: ['type'] }],\n})\nexport class YuwAttachmentTriggerDirective {}\n","export const YUW_SIDEBAR_TRANSITION_MS = 200;\n\nexport const YUW_SIDEBAR_RAIL_PADDING = '22px';\nexport const YUW_SIDEBAR_RAIL_ICON_SIZE = '20px';\nexport const YUW_SIDEBAR_RAIL_WIDTH = '78px';\n\nexport const yuwSidebarMenuButtonClass = `\n [&>span]:truncate\n [&>span]:min-w-0\n hover:bg-muted\n hover:text-foreground\n dark:hover:bg-muted/50\n aria-expanded:bg-muted\n aria-expanded:text-foreground\n transition-[background-color,color,padding]\n duration-200\n ease-linear\n motion-reduce:transition-none\n [&_ng-icon]:origin-center\n [&_ng-icon]:transition-transform\n [&_ng-icon]:duration-200\n [&_ng-icon]:ease-linear\n motion-reduce:[&_ng-icon]:transition-none\n group-data-[collapsible=icon]:py-[20px]!\n group-data-[collapsible=icon]:h-auto!\n group-data-[collapsible=icon]:w-full!\n group-data-[yuw-rail=on]:justify-center!\n group-data-[yuw-rail=on]:[&>span]:hidden\n group-data-[yuw-rail=on]:[&_ng-icon]:scale-125\n`;\n\nexport const yuwSidebarMenuChevronClass = `\n ms-auto\n shrink-0\n transition-transform\n duration-200\n text-[length:--spacing(4)]!\n group-aria-expanded/menu-button:rotate-90\n group-data-[yuw-rail=on]:hidden!\n`;\n\nexport const YUW_SIDEBAR_RAIL_WIDTH_VAR = '--yuw-sidebar-rail-width';\nexport const yuwSidebarSubmenuSheetClass = `\n data-[side=left]:inset-y-0\n data-[side=left]:left-[var(--yuw-sidebar-rail-width)]\n data-[side=left]:h-full\n data-[side=left]:w-64\n data-[side=left]:sm:max-w-none\n data-[side=left]:border-r-0\n rounded-s-none\n rounded-e-xl\n bg-sidebar\n text-sidebar-foreground\n gap-0\n p-0\n duration-200\n data-[side=left]:data-open:slide-in-from-left-4\n data-[side=left]:data-closed:slide-out-to-left-4\n data-open:fade-in-0\n data-closed:fade-out-0\n motion-reduce:animate-none\n`;\n\nexport const yuwSidebarSubmenuOverlayClass = 'left-[var(--yuw-sidebar-rail-width)]!';\nexport const yuwSidebarSubmenuSheetBodyClass = `\n flex\n mt-0\n flex-col\n gap-0.5\n py-2\n [&_[data-sidebar=menu-sub]]:mx-0\n [&_[data-sidebar=menu-sub]]:translate-x-0\n [&_[data-sidebar=menu-sub]]:border-0\n [&_[data-sidebar=menu-sub]]:px-0\n [&_[data-sidebar=menu-sub]]:py-0\n [&_[data-sidebar=menu-sub]]:gap-0.5\n [&_[data-sidebar=menu-sub-button]]:translate-x-0\n [&_[data-sidebar=menu-sub-button]]:h-8\n`;\n\nexport const yuwSidebarSubmenuSheetLabelClass = `\n text-muted-foreground\n py-6.75\n text-xs\n font-medium\n truncate\n uppercase\n tracking-[2px]\n`;\n\nexport const yuwSidebarContainerClass = 'contain-layout';\n\nexport const yuwSidebarContentClass = `\n overflow-y-auto\n group-data-[collapsible=icon]:overflow-y-auto!\n group-data-[collapsible=icon]:overflow-x-hidden\n group-data-[yuw-rail=on]:gap-1\n`;\n\nexport const yuwSidebarGroupLabelClass = `\n group-data-[collapsible=icon]:mt-0!\n group-data-[collapsible=icon]:opacity-100\n transition-opacity\n duration-200\n ease-linear\n motion-reduce:transition-none\n group-data-[yuw-rail=on]:hidden\n`;\n\nexport const yuwSidebarGroupClass = 'group-data-[yuw-rail=on]:p-0';\n\nexport const yuwSidebarSubmenuWrapperClass = `\n grid\n transition-[grid-template-rows]\n duration-200\n ease-out\n motion-reduce:transition-none\n [&>*]:min-h-0\n [&>*]:overflow-hidden\n`;\n\nexport const yuwSidebarSubmenuOpenClass = 'grid-rows-[1fr]';\n\nexport const yuwSidebarSubmenuClosedClass = 'grid-rows-[0fr]';\n\nexport const yuwSidebarMenuBadgeClass = `\n transition-opacity\n duration-200\n ease-linear\n motion-reduce:transition-none\n group-data-[yuw-rail=on]:opacity-0\n group-data-[yuw-rail=on]:block!\n group-data-[yuw-rail=on]:pointer-events-none\n`;\n\nexport const yuwSidebarGroupLabelTextClass = `\n truncate\n block\n min-w-0\n`;\n\nexport const yuwSidebarMenuClass = `\n gap-2\n group-data-[yuw-rail=on]:gap-0\n`;\n\nexport const yuwSidebarMenuItemClass = 'group-data-[yuw-rail=on]:p-[11px]';\n\nexport const yuwSidebarMenuSubButtonClass = `\n [&>span]:truncate\n [&>span]:min-w-0\n hover:bg-muted\n hover:text-foreground\n dark:hover:bg-muted/50\n active:bg-muted\n active:text-foreground\n data-active:bg-sidebar-accent\n data-active:text-sidebar-accent-foreground\n transition-[background-color,color]\n duration-200\n ease-linear\n motion-reduce:transition-none\n`;\n","import { computed, inject, Injectable, type Signal } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { of, switchMap, timer } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { HlmSidebarService } from 'yukit-web/helm/sidebar';\nimport { YUW_SIDEBAR_TRANSITION_MS } from './sidebar.variants';\n\n/**\n * Tracks the sidebar's collapsed state, and a second copy of it that lags behind the width animation.\n *\n * The helm flips `data-collapsible` the instant the state changes, while the panel takes\n * `--sidebar-transition-duration` to reach its new width. Anything keyed off that attribute therefore\n * restyles against a panel that is still the old size — labels vanish and icons jump to rail geometry\n * while there is still 16rem of sidebar around them.\n *\n * `railSettled` fixes that asymmetrically, because the two directions want opposite timing:\n *\n * - Collapsing, the rail look has to wait for the panel to actually be narrow. Applying it up front is\n * what produces the jump.\n * - Expanding, the rail look has to go immediately. The labels need the whole animation to fade and\n * ellipsis into place, so waiting would replace one jump with another at the far end.\n *\n * `railPending` is the mirror of it, for anything whose *presence* has to span the whole collapse\n * rather than arrive at the end of it: `true` the instant the panel starts narrowing, `false` only\n * once the expand has finished widening. The pair brackets the animation from both sides — every\n * frame in which the panel is at, or moving towards, rail width has `railPending` set, while only the\n * frames where it has actually arrived have `railSettled` set. Something that must not be visible\n * during the motion keys off this one; something that must not be restyled during the motion keys off\n * `railSettled`.\n *\n * The delay runs through `timer` rather than a `setTimeout` inside an `effect`, and that is not a\n * stylistic choice: this app is zoneless, so a signal written from a bare timer callback notifies\n * nobody. Components reading `railSettled` in a template binding are `OnPush`, so they would keep\n * their stale view until something else happened to schedule a check — the signal flips, the DOM does\n * not. Going through `toSignal` puts the write back under Angular's own scheduling.\n *\n * Provided at the root so `<yuw-sidebar>` and the nav share one instance — the component stamps the\n * attribute the class layers select on, and the nav reads the same signal to decide between accordion\n * and submenu sheet, so the two must agree on the exact frame.\n */\n@Injectable({ providedIn: 'root' })\nexport class YuwSidebarRailService {\n private readonly sidebar = inject(HlmSidebarService);\n\n readonly collapsed = computed(() => (this.sidebar.isMobile() ? !this.sidebar.openMobile() : !this.sidebar.open()));\n\n private readonly collapsed$ = toObservable(this.collapsed);\n readonly railPending: Signal<boolean> = toSignal(\n this.collapsed$.pipe(\n switchMap((collapsed) => (collapsed ? of(true) : timer(YUW_SIDEBAR_TRANSITION_MS).pipe(map(() => false)))),\n ),\n { initialValue: false },\n );\n readonly railSettled: Signal<boolean> = toSignal(\n this.collapsed$.pipe(\n switchMap((collapsed) => (collapsed ? timer(YUW_SIDEBAR_TRANSITION_MS).pipe(map(() => true)) : of(false))),\n ),\n { initialValue: false },\n );\n}\n","import { Directive, input } from '@angular/core';\nimport { classes } from 'yukit-web/helm/utils';\nimport {\n HlmSidebarContent,\n HlmSidebarFooter,\n HlmSidebarGroup,\n HlmSidebarGroupContent,\n HlmSidebarGroupLabel,\n HlmSidebarHeader,\n HlmSidebarInset,\n HlmSidebarMenu,\n HlmSidebarMenuBadge,\n HlmSidebarMenuButton,\n HlmSidebarMenuItem,\n HlmSidebarMenuSub,\n HlmSidebarMenuSubButton,\n HlmSidebarMenuSubItem,\n HlmSidebarRail,\n HlmSidebarSeparator,\n HlmSidebarWrapper,\n provideHlmSidebarConfig,\n} from 'yukit-web/helm/sidebar';\nimport {\n YUW_SIDEBAR_RAIL_WIDTH,\n yuwSidebarContentClass,\n yuwSidebarGroupClass,\n yuwSidebarGroupLabelClass,\n yuwSidebarMenuButtonClass,\n yuwSidebarMenuItemClass,\n yuwSidebarMenuSubButtonClass,\n} from './sidebar.variants';\n\n/**\n * Outermost layout directive for a sidebar page. Wraps the sidebar and the main content, and owns\n * the `--sidebar-width` / `--sidebar-width-icon` custom properties via its `sidebarWidth` and\n * `sidebarWidthIcon` inputs.\n *\n * Usage:\n * ```html\n * <div yuwSidebarWrapper>\n * <yuw-sidebar collapsible=\"icon\">\n * <div yuwSidebarHeader>Yurest</div>\n * <div yuwSidebarContent>\n * <div yuwSidebarGroup>\n * <div yuwSidebarGroupLabel>Gestión</div>\n * <div yuwSidebarGroupContent>\n * <ul yuwSidebarMenu>\n * <li yuwSidebarMenuItem>\n * <a yuwSidebarMenuButton isActive tooltip=\"Pedidos\">Pedidos</a>\n * </li>\n * </ul>\n * </div>\n * </div>\n * </div>\n * </yuw-sidebar>\n *\n * <main yuwSidebarInset>\n * <button yuw-sidebar-trigger></button>\n * </main>\n * </div>\n * ```\n */\n@Directive({\n selector: '[yuwSidebarWrapper], yuw-sidebar-wrapper',\n hostDirectives: [{ directive: HlmSidebarWrapper, inputs: ['sidebarWidth', 'sidebarWidthIcon'] }],\n providers: [provideHlmSidebarConfig({ sidebarWidthIcon: YUW_SIDEBAR_RAIL_WIDTH })],\n})\nexport class YuwSidebarWrapperDirective {}\n\n/** Top area of the sidebar, above the scrollable content. */\n@Directive({\n selector: '[yuwSidebarHeader], yuw-sidebar-header',\n hostDirectives: [HlmSidebarHeader],\n})\nexport class YuwSidebarHeaderDirective {}\n\n/**\n * Scrollable middle area of the sidebar that holds the navigation groups.\n *\n * Restores vertical scrolling in the collapsed state, which the composed primitive switches off with\n * `group-data-[collapsible=icon]:overflow-hidden`. That is a fair default for a rail of icons alone,\n * but ours keeps expandable entries reachable there, so a tall nav has to be able to scroll rather\n * than have its last icons clipped. Horizontal overflow stays hidden: nothing should scroll sideways\n * in a rail that narrow.\n *\n * The `!` is needed because the helm's own declaration sits in the same Tailwind group at the same\n * modifier, and `twMerge` resolves that by keeping the last one — which would be ours already, except\n * `overflow-hidden` and `overflow-y-auto` are different properties to it, so both survive and the\n * shorthand wins on order.\n *\n * The scrollbar itself stays hidden, which the primitive's own `no-scrollbar` already handles: a\n * gutter that only appears once the nav happens to overflow shifts the icons sideways, and the rail is\n * too narrow to spend 11px on it. Wheel, trackpad and keyboard still scroll; only the thumb is gone.\n *\n * Also spaces the groups it stacks while collapsed. Each group's own menu spaces its items, so with\n * the groups' vertical padding dropped there was nothing left between the last icon of one and the\n * first of the next; matching that spacing here is what makes the rail read as one evenly spaced\n * column rather than blocks butted together.\n */\n@Directive({\n selector: '[yuwSidebarContent], yuw-sidebar-content',\n hostDirectives: [HlmSidebarContent],\n})\nexport class YuwSidebarContentDirective {\n constructor() {\n classes(() => yuwSidebarContentClass);\n }\n}\n\n/** Bottom area of the sidebar, below the scrollable content. */\n@Directive({\n selector: '[yuwSidebarFooter], yuw-sidebar-footer',\n hostDirectives: [HlmSidebarFooter],\n})\nexport class YuwSidebarFooterDirective {}\n\n/**\n * A titled section of the sidebar.\n *\n * Drops its vertical padding once collapsed to icons. The composed primitive pads every side with\n * `p-2`, which is right while headings are visible and separating one group from the next, but on the\n * rail those headings are gone and two adjacent groups contribute 8px each — a gap in the middle of\n * what reads as one column of icons. Horizontal padding stays: it is what keeps the icons off the\n * rail's edges.\n */\n@Directive({\n selector: '[yuwSidebarGroup], yuw-sidebar-group',\n hostDirectives: [HlmSidebarGroup],\n})\nexport class YuwSidebarGroupDirective {\n constructor() {\n classes(() => yuwSidebarGroupClass);\n }\n}\n\n/**\n * Heading of a sidebar group. Removed from the layout when the sidebar collapses to icons.\n *\n * The composed primitive hides it with `-mt-8` plus `opacity-0`, which leaves the heading in the flow\n * still occupying its `h-8` box and cancels that box with a negative margin. The two only net to zero\n * while the heading is exactly one line at exactly that height, so a group heading left a visible gap\n * between the icons of one group and the next. `hidden` takes it out of the flow instead, and the\n * margin is zeroed so the collapsed rail is not pulled upwards by a box that no longer exists.\n */\n@Directive({\n selector: 'div[yuwSidebarGroupLabel], button[yuwSidebarGroupLabel]',\n hostDirectives: [HlmSidebarGroupLabel],\n})\nexport class YuwSidebarGroupLabelDirective {\n constructor() {\n classes(() => yuwSidebarGroupLabelClass);\n }\n}\n\n/** Body of a sidebar group, wrapping its menu. */\n@Directive({\n selector: 'div[yuwSidebarGroupContent]',\n hostDirectives: [HlmSidebarGroupContent],\n})\nexport class YuwSidebarGroupContentDirective {}\n\n/** Navigation list of a sidebar group. Apply to a `<ul>`. */\n@Directive({\n selector: 'ul[yuwSidebarMenu]',\n hostDirectives: [HlmSidebarMenu],\n})\nexport class YuwSidebarMenuDirective {}\n\n/**\n * Marks projected markup that belongs *inside* the region `<yuw-sidebar>` renders from its `content`\n * input, after the object-driven groups — a hand-written group alongside a data-driven nav.\n *\n * Only meaningful when `content` is set; without it the marker is inert and the element falls\n * through to the default slot like any other projected node. Carries no styling of its own: it is a\n * projection selector, and whatever it is applied to (usually a `[yuwSidebarGroup]`) keeps its own.\n */\n@Directive({\n selector: '[yuwSidebarContentExtra]',\n})\nexport class YuwSidebarContentExtraDirective {}\n\n/** The `footer` counterpart of {@link YuwSidebarContentExtraDirective}. */\n@Directive({\n selector: '[yuwSidebarFooterExtra]',\n})\nexport class YuwSidebarFooterExtraDirective {}\n\n/**\n * A single entry of a sidebar menu. Apply to an `<li>`.\n *\n * Collapsed, the item is what owns the rail's spacing: `YUW_SIDEBAR_RAIL_PADDING` on all four sides,\n * which is why the group drops its own padding and the menu its gap in that state. Putting it here\n * rather than on the group is what makes the vertical and horizontal spacing come from one number —\n * adjacent items contribute 22px each, so the gap between two of them and the gap to the panel edge\n * stay in the same proportion no matter how the list is grouped. The rail renders as one flat list of\n * items; its groups have no visible boundary of their own to hang spacing off.\n */\n@Directive({\n selector: 'li[yuwSidebarMenuItem]',\n hostDirectives: [HlmSidebarMenuItem],\n})\nexport class YuwSidebarMenuItemDirective {\n constructor() {\n classes(() => yuwSidebarMenuItemClass);\n }\n}\n\n/**\n * Interactive control of a sidebar menu item. Accepts `variant` (`'default'`, `'outline'`), `size`\n * (`'default'`, `'sm'`, `'lg'`) and `isActive`.\n *\n * `tooltip` labels the item while the sidebar is collapsed to icons, where the label itself is\n * hidden; the composed primitive shows it only in that state. Every entry gets one, including those\n * with children — their submenu opens on click, so it never competes with the hover.\n *\n * Reaching that input takes composing `BrnTooltip` here under the same `tooltip` alias the helm uses,\n * rather than forwarding it. `HlmSidebarMenuButton` publishes the alias on its own `hostDirectives`\n * entry, which does not make it an input of the helm directive — a forward cannot be re-forwarded, the\n * same limit `context-menu.directives.ts` documents. Angular resolves both entries to the one\n * `BrnTooltip` instance on the element, so the helm keeps driving `mutableTooltipDisabled` (which is\n * what confines the tooltip to the collapsed state) while this binding supplies its content.\n *\n * `[attr.tooltip]` is not a substitute, and was the bug: it writes an HTML attribute, which never\n * reaches a signal input, so the tooltip stayed enabled with `null` content and silently showed\n * nothing.\n *\n * Carries `yuwSidebarMenuButtonClass`, our hover/expanded colouring and collapsed-to-icon geometry.\n * The `classes()` registration below runs after the composed `HlmSidebarMenuButton`'s own, and\n * `classes()` merges its sources in registration order through `twMerge`, so each of our classes\n * displaces the helm class of the same Tailwind group and modifier stack without `!important`.\n *\n * Those classes sit on the button rather than on `li[yuwSidebarMenuItem]` because every selector in\n * them resolves against the button's own box or subtree: the `<li>` is not the hovered control, never\n * carries `aria-expanded`, and its `> span:last-child` is the badge, not the label.\n *\n * Three details of the collapsed-to-icon block are load-bearing:\n *\n * - `h-auto!`, `w-full!` and `justify-center!` keep their `!` because the helm declarations they\n * replace (`size-8!`, `p-2!`) are themselves `!important`, which `twMerge` cannot outrank on\n * specificity alone. The helm pins the button to a square; ours fills the rail width and centres\n * the icon. Both halves of `size-8!` have to be named separately: a single `size-auto!` occupies\n * the same `twMerge` group as the base `w-full`, dropping it, so the button would fall back to\n * shrink-to-fit for the whole width animation — long enough for the label to stop ellipsing and\n * the trailing chevron to sit against it.\n * - `[&>span]:hidden` drops the label while collapsed, leaving the icon alone — the tooltip carries\n * the name in that state. Matched by element rather\n * than by `:last-child` (which is what the helm's own `truncate` uses): an expandable entry ends\n * with a trailing chevron, so the label is no longer the last child and a positional selector\n * would skip exactly those entries. `span` is unambiguous here — the label is the only one a menu\n * button has, with the badge living outside the button on the `<li>`.\n * - The icon grows through `scale-125` rather than a font-size bump, so it can be transitioned: only\n * `transform`-family properties animate on the compositor, and a `font-size` change would relayout\n * the row on every frame. The factor is what turns the `--spacing(4)` base into the rail's\n * `YUW_SIDEBAR_RAIL_ICON_SIZE`, so the two move together — the icon's layout box stays 16px and the\n * spacing around it comes from the item's padding, not from the icon's own box.\n *\n * Which state each class hangs off is load-bearing, because the two attributes fire at different\n * times. `data-collapsible` flips the instant the toggle is pressed; `data-yuw-rail` waits for the\n * width animation to finish. Anything that should hold its expanded look *through* the animation\n * therefore keys off the rail attribute — the label's `hidden`, the centring, the icon's size — while\n * the width and height overrides key off `collapsible`, to displace the helm's `size-8!` before it can\n * snap the row to 32px and truncate the label away in the first frame. That snap is what made the text vanish\n * on click instead of ellipsing gradually as the panel narrows.\n */\n@Directive({\n selector: 'button[yuwSidebarMenuButton], a[yuwSidebarMenuButton]',\n hostDirectives: [\n {\n directive: HlmSidebarMenuButton,\n inputs: ['variant', 'size', 'isActive', 'closeMobileSidebarOnClick'],\n },\n ],\n})\nexport class YuwSidebarMenuButtonDirective {\n constructor() {\n classes(() => yuwSidebarMenuButtonClass);\n }\n}\n\n/** Trailing count or status badge of a sidebar menu item. */\n@Directive({\n selector: '[yuwSidebarMenuBadge], yuw-sidebar-menu-badge',\n hostDirectives: [HlmSidebarMenuBadge],\n})\nexport class YuwSidebarMenuBadgeDirective {}\n\n/** Nested submenu list of a sidebar menu item. Apply to a `<ul>`. */\n@Directive({\n selector: 'ul[yuwSidebarMenuSub]',\n hostDirectives: [HlmSidebarMenuSub],\n})\nexport class YuwSidebarMenuSubDirective {}\n\n/** A single entry of a sidebar submenu. Apply to an `<li>`. */\n@Directive({\n selector: 'li[yuwSidebarMenuSubItem]',\n hostDirectives: [HlmSidebarMenuSubItem],\n})\nexport class YuwSidebarMenuSubItemDirective {}\n\n/**\n * Interactive control of a sidebar submenu item. Accepts `size` (`'sm'`, `'md'`) and `isActive`.\n *\n * Carries the same label clamp as `[yuwSidebarMenuButton]`. The composed primitive already truncates\n * its `span:last-child`, but truncation cannot fire while the span is a flex item at its default\n * `min-width: auto`: that floor keeps it at content width, so the panel widens the row instead of the\n * text ellipsing. `min-w-0` is what lets it shrink, and the `[&>span]` selector covers a label that is\n * no longer the last child.\n */\n@Directive({\n selector: 'a[yuwSidebarMenuSubButton], button[yuwSidebarMenuSubButton]',\n hostDirectives: [{ directive: HlmSidebarMenuSubButton, inputs: ['size', 'isActive', 'closeMobileSidebarOnClick'] }],\n})\nexport class YuwSidebarMenuSubButtonDirective {\n constructor() {\n classes(() => yuwSidebarMenuSubButtonClass);\n }\n}\n\n/** Divider between sidebar sections. */\n@Directive({\n selector: '[yuwSidebarSeparator], yuw-sidebar-separator',\n hostDirectives: [HlmSidebarSeparator],\n})\nexport class YuwSidebarSeparatorDirective {}\n\n/**\n * Thin draggable edge that toggles the sidebar. Apply to a `<button>`.\n *\n * `label` is the accessible label of the rail button (it has no visible text). User-facing text —\n * the consuming app is responsible for providing it already translated.\n */\n@Directive({\n selector: 'button[yuwSidebarRail]',\n hostDirectives: [HlmSidebarRail],\n host: {\n '[attr.aria-label]': 'label()',\n },\n})\nexport class YuwSidebarRailDirective {\n readonly label = input.required<string>();\n}\n\n/** Main content region beside the sidebar. Apply to a `<main>`. */\n@Directive({\n selector: 'main[yuwSidebarInset]',\n hostDirectives: [HlmSidebarInset],\n})\nexport class YuwSidebarInsetDirective {}\n","import { computed, Injectable, signal, type Signal } from '@angular/core';\nimport type { YuwSidebarItemDto } from './sidebar-content.interface';\n\n/**\n * Holds which rail entry's submenu the collapsed sidebar is showing. Provided on `<yuw-sidebar>`, so\n * two sidebars on a page don't drive each other.\n *\n * `renderedItem` lags `activeItem` by one close: the sheet renders from it so its markup outlives the\n * close and the panel can animate out. Swapping entries never writes `null`, which would detach the\n * overlay and replay the open animation. Matching is by `id` — the nav rebuilds these objects.\n *\n * `closeUnhandled` is what dismisses the sheet for a click that lands on the rail but on nothing that\n * owns the submenu — the padding between entries, a separator, the header, a plain rail link.\n * `<yuw-sidebar>` calls it from a bubble-phase listener on its own host, which therefore runs *after*\n * the handler of whatever entry was clicked, so an entry that has just opened or swapped the sheet has\n * to be able to say \"this click was mine\". `toggle` records the event it acted on for exactly that,\n * keyed on event identity so no timer or DOM-target test is involved: there is one event object per\n * click and both handlers see it. Together with the backdrop — inset to the rail's right edge, so it\n * covers the rest of the viewport — that listener closes the sheet from anywhere outside it.\n *\n * The brain's own `closeOnOutsidePointerEvents` is deliberately *not* used for this. The CDK\n * dispatches outside pointer events from a capture listener on `body`, so it would close the sheet\n * before the clicked entry's own bubble-phase handler ran, and `toggle` would then see no active item\n * and re-open on the very click that dismissed it.\n */\n@Injectable()\nexport class YuwSidebarSubmenuService {\n private readonly item = signal<YuwSidebarItemDto | null>(null);\n readonly activeItem: Signal<YuwSidebarItemDto | null> = this.item.asReadonly();\n private handledEvent: Event | null = null;\n private readonly lastItem = signal<YuwSidebarItemDto | null>(null);\n readonly renderedItem: Signal<YuwSidebarItemDto | null> = this.lastItem.asReadonly();\n\n readonly open = computed(() => this.item() !== null);\n\n close(): void {\n this.item.set(null);\n }\n\n closeUnhandled(event: Event): void {\n const handled = event === this.handledEvent;\n\n if (handled) {\n this.handledEvent = null;\n return;\n }\n\n this.close();\n }\n\n toggle(item: YuwSidebarItemDto, event: Event): void {\n this.handledEvent = event;\n\n const next = this.item()?.id === item.id ? null : item;\n\n this.item.set(next);\n if (next) this.lastItem.set(next);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n Injector,\n input,\n linkedSignal,\n output,\n runInInjectionContext,\n type Signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronRight } from '@ng-icons/lucide';\nimport { isActive, Router, RouterLink, RouterLinkActive } from '@angular/router';\nimport { HlmSidebarMenuButton, HlmSidebarService } from 'yukit-web/helm/sidebar';\nimport type {\n YuwSidebarCollapsibleDto,\n YuwSidebarContentDto,\n YuwSidebarItemClickDto,\n YuwSidebarItemDto,\n YuwSidebarSubItemDto,\n} from './sidebar-content.interface';\nimport {\n YuwSidebarGroupContentDirective,\n YuwSidebarGroupDirective,\n YuwSidebarGroupLabelDirective,\n YuwSidebarMenuBadgeDirective,\n YuwSidebarMenuButtonDirective,\n YuwSidebarMenuDirective,\n YuwSidebarMenuItemDirective,\n YuwSidebarMenuSubButtonDirective,\n YuwSidebarMenuSubDirective,\n YuwSidebarMenuSubItemDirective,\n YuwSidebarSeparatorDirective,\n} from './sidebar.directives';\nimport { YuwSidebarRailService } from './sidebar-rail.service';\nimport { YuwSidebarSubmenuService } from './sidebar-submenu.service';\nimport {\n yuwSidebarGroupLabelTextClass,\n yuwSidebarMenuBadgeClass,\n yuwSidebarMenuChevronClass,\n yuwSidebarMenuClass,\n yuwSidebarSubmenuClosedClass,\n yuwSidebarSubmenuOpenClass,\n yuwSidebarSubmenuWrapperClass,\n} from './sidebar.variants';\n\n/**\n * Renders one {@link YuwSidebarContentDto} as the group/menu/item tree.\n *\n * Internal to the library — it is not exported from `public-api.ts`, and consumers reach it through\n * `<yuw-sidebar>`'s `content` and `footer` inputs. It exists as its own component because those two\n * inputs need the identical tree; inlining it in `sidebar.component.html` would duplicate the whole\n * block.\n *\n * The host is `display: contents`, so the groups it renders become direct children of whichever\n * `[yuwSidebarContent]` / `[yuwSidebarFooter]` wrapper it sits inside. That is what keeps the\n * `group-data-[collapsible=icon]:` selectors — which resolve against the sidebar root — working\n * identically for object-rendered and hand-written markup.\n *\n * An entry with `children` shows its submenu two ways, one per sidebar state. Expanded, it is an\n * accordion rendered here: the entry carries `aria-expanded` and the submenu is nested beneath it.\n * Collapsed to icons, where there is no room for either the label or the nesting, it moves into the\n * sheet beside the rail — which this component does not own. `<yuw-sidebar>` renders one sheet and\n * this component only reports, through `YuwSidebarSubmenuService`, which entry the user picked. It\n * cannot own the panel itself: `<yuw-sidebar>` instantiates this component twice, once for `content`\n * and once for `footer`, so a sheet in here would be two sheets fighting over one screen position.\n *\n * Such an entry also opts out of the helm's close-the-mobile-sheet-on-click behaviour, which every\n * other entry keeps. On mobile the sidebar *is* a sheet, and that behaviour assumes a click means\n * \"I have navigated, take this away\" — true of a leaf, false of an accordion header, whose click only\n * unfolds a submenu inside the very panel it would be dismissing. Its children still close it, since\n * activating one of those really is the navigation the panel was opened for.\n *\n * A click on such an entry toggles the accordion while the panel is open, and opens the sheet on that\n * entry once collapsed — the same gesture either way, differing only in where the submenu appears.\n * Clicking the entry the sheet is already showing closes it; clicking a different one swaps the\n * sheet's contents. Only an entry that actually has children does any of this: `onParentClick` is the\n * click handler of every navigating entry, so it returns early for a childless one rather than opening\n * a sheet on an empty `children`. That guard lives in the method and not in the template so the\n * `route`, `href` and `<button>` branches cannot drift apart on it, and a childless entry then falls\n * through to `<yuw-sidebar>`'s host listener, which dismisses whatever sheet was open — clicking a\n * plain rail link should take its submenu away, not leave it hanging over the new page. When the entry\n * also has a `route` or an `href` it navigates *and* toggles, which is why an active one keeps its\n * pointer events instead of being locked like a childless active entry; when it has neither, toggling\n * is all it does and it stays out of `itemClicked`, since opening a submenu is not an action for the\n * consumer to handle.\n *\n * The chevron marking an expandable entry rotates off that same `aria-expanded`, read from the\n * button through the `group/menu-button` the helm already declares on every menu button. Its\n * `yuwSidebarMenuChevronClass` hides it with `hidden!` in the collapsed state, and that `!` is\n * load-bearing: `ng-icon` sets `display: block` on its own host from a layer outranking Tailwind's\n * `utilities`, so a plain `hidden` loses and the chevron keeps taking width — which pulls the\n * entry's real icon off centre, since the button is `justify-center` while collapsed. The same\n * classes on a `<span>` need no `!`; only the custom element does.\n *\n * Which of the two forms is live comes from `isRail`, and all three of its conditions are\n * load-bearing. `collapsible` must be `'icon'`, the only mode that leaves a narrow rail behind:\n * `'offcanvas'` moves the whole panel off-screen and `'none'` never collapses, yet the service\n * reports `state() === 'collapsed'` for both — reading the state alone opens the sheet beside a\n * sidebar sitting there at full width. It must not be mobile, where the panel is a full-width sheet\n * showing the accordion. And the collapse must have finished animating, which is what `railSettled`\n * waits for: switching to the sheet while the panel is still wide would leave it overlapping the very\n * sidebar it is supposed to sit beside. That same settled signal drives the rail's own styling, so\n * the geometry and the submenu form always change on the same frame.\n *\n * The accordion opens and closes over a grid-rows transition rather than by appearing outright, which\n * is why the submenu stays mounted and is switched between `0fr` and `1fr` instead of living behind an\n * `@if`: height cannot animate from or to something that is not in the layout, and `auto` is not an\n * animatable value. A closed submenu is `inert` and `aria-hidden`, so leaving it mounted does not hand\n * keyboard users links to a menu they cannot see.\n *\n * Collapsing to the rail also clears every open accordion, which is what stops an expand from\n * unfolding several submenus at once and shoving the entries below them down the panel. An entry\n * holding the active route still opens on its own, since that one is answering \"where am I\" rather\n * than restoring a stale choice.\n *\n * Which entries are expanded resolves in precedence order: an explicit toggle by the user wins,\n * otherwise an entry holding the active route is open — a deep link into a child should not hide the\n * child — otherwise the DTO's `expanded` seed, otherwise closed. The user's toggles live in a\n * `linkedSignal` on `content()` rather than a plain signal, so replacing the object — a nav rebuilt\n * from fresh permissions, say — drops toggles that no longer refer to anything instead of keeping a\n * map that grows with dead ids. The seed feeds the derived state rather than that map, which is what\n * lets an untouched entry keep following its seed and its active route.\n *\n * Whether an entry holds the active route is decided by comparing serialized `routerLink` targets\n * against the current URL, not by asking the router to match them: `Router.isActive` needs a\n * `UrlTree` per child and would run on every pass. The URL itself is a signal seeded with\n * `Router.url`, so a deep link is expanded on first paint, before any navigation event has fired —\n * `RouterLinkActive` cannot answer this, because it reports on the element it sits on and the entry\n * that needs to open is the *parent* of the matching child. Matching is by prefix, mirroring\n * `routerLinkActive`'s own non-exact behaviour, with a boundary check so `/reports` does not match\n * `/reports-archive`.\n *\n * Each entry's render state is resolved once per pass, which is also what keeps\n * `routerLinkActiveOptions` a stable object identity: a literal in the template\n * (`[routerLinkActiveOptions]=\"{exact: item.exact ?? false}\"`) allocates a new object on every\n * change-detection pass, and `RouterLinkActive` treats that as a changed input and re-runs its\n * subscription. Every entry resolves a tooltip, entries with children included: the submenu opens on\n * click, so hover is free to do what it does for every other rail icon and name the thing.\n */\n@Component({\n selector: 'yuw-sidebar-nav',\n imports: [\n NgIcon,\n NgTemplateOutlet,\n RouterLink,\n RouterLinkActive,\n YuwSidebarGroupDirective,\n YuwSidebarGroupLabelDirective,\n YuwSidebarGroupContentDirective,\n YuwSidebarMenuDirective,\n YuwSidebarMenuItemDirective,\n YuwSidebarMenuButtonDirective,\n HlmSidebarMenuButton,\n YuwSidebarMenuBadgeDirective,\n YuwSidebarMenuSubDirective,\n YuwSidebarMenuSubItemDirective,\n YuwSidebarMenuSubButtonDirective,\n YuwSidebarSeparatorDirective,\n ],\n providers: [provideIcons({ lucideChevronRight })],\n host: {\n class: 'contents',\n },\n templateUrl: './sidebar-nav.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwSidebarNavComponent {\n private readonly injector = inject(Injector);\n private readonly rail = inject(YuwSidebarRailService);\n private readonly router = inject(Router);\n private readonly sidebarService = inject(HlmSidebarService);\n private readonly submenu = inject(YuwSidebarSubmenuService);\n\n readonly collapsible = input<YuwSidebarCollapsibleDto>('offcanvas');\n readonly content = input.required<YuwSidebarContentDto>();\n\n readonly itemClicked = output<YuwSidebarItemClickDto>();\n\n private readonly activeRoutes = new Map<string, Signal<boolean>>();\n protected readonly badgeClass = yuwSidebarMenuBadgeClass;\n protected readonly chevronClass = yuwSidebarMenuChevronClass;\n protected readonly groupLabelTextClass = yuwSidebarGroupLabelTextClass;\n protected readonly menuClass = yuwSidebarMenuClass;\n\n private readonly expandedIds = linkedSignal<{ content: YuwSidebarContentDto; rail: boolean }, ReadonlySet<string>>({\n source: () => ({ content: this.content(), rail: this.isRail() }),\n computation: ({ content, rail }, previous) =>\n rail || previous\n ? new Set<string>()\n : new Set(\n content.groups.flatMap((group) => group.items.filter((item) => item.expanded).map((item) => item.id)),\n ),\n });\n protected readonly isRail = computed(\n () => this.collapsible() === 'icon' && !this.sidebarService.isMobile() && this.rail.railSettled(),\n );\n protected readonly _groups = computed(() => {\n const expandedIds = this.expandedIds();\n const isRail = this.isRail();\n\n return this.content().groups.map((group) => ({\n ...group,\n items: group.items.map((item) => {\n const children = (item.children ?? []).map((child) => ({\n ...child,\n activeOptions: { exact: child.exact ?? false },\n }));\n const hasChildren = children.length > 0;\n const expanded =\n isRail || !hasChildren ? false : expandedIds.has(item.id) || this.holdsActiveRoute(item.children);\n\n return {\n ...item,\n children,\n hasChildren,\n tooltipText: item.tooltip ?? item.label,\n activeOptions: { exact: item.exact ?? false },\n holdsActiveChild: hasChildren && this.holdsActiveRoute(item.children),\n expanded,\n submenuClass: `${yuwSidebarSubmenuWrapperClass} ${\n expanded ? yuwSidebarSubmenuOpenClass : yuwSidebarSubmenuClosedClass\n }`,\n };\n }),\n }));\n });\n\n protected onItemClick(id: string, event: MouseEvent): void {\n this.itemClicked.emit({ id, event });\n }\n\n protected onParentClick(item: YuwSidebarItemDto, expanded: boolean, event: MouseEvent): void {\n if (!(item.children?.length ?? 0)) return;\n\n if (this.isRail()) {\n this.submenu.toggle(item, event);\n\n return;\n }\n\n this.expandedIds.update((ids) => {\n const next = new Set(ids);\n if (expanded) next.delete(item.id);\n else next.add(item.id);\n\n return next;\n });\n }\n\n private holdsActiveRoute(children: readonly YuwSidebarSubItemDto[] | undefined): boolean {\n return (children ?? []).some((child) => {\n const route = child.route;\n\n return route !== undefined && route !== null && this.routeActive(route)();\n });\n }\n\n private routeActive(route: NonNullable<YuwSidebarSubItemDto['route']>): Signal<boolean> {\n const key = this.router.serializeUrl(this.router.createUrlTree(Array.isArray(route) ? route : [route]));\n const cached = this.activeRoutes.get(key);\n if (cached) return cached;\n\n const signal = runInInjectionContext(this.injector, () => isActive(key, this.router));\n this.activeRoutes.set(key, signal);\n\n return signal;\n }\n}\n","<ng-template #submenu let-item>\n <ul yuwSidebarMenuSub>\n @for (child of item.children; track child.id) {\n <li yuwSidebarMenuSubItem>\n @if (child.route) {\n <a\n yuwSidebarMenuSubButton\n closeMobileSidebarOnClick\n [routerLink]=\"child.route\"\n routerLinkActive\n #childLink=\"routerLinkActive\"\n [routerLinkActiveOptions]=\"child.activeOptions\"\n [isActive]=\"childLink.isActive\"\n [attr.aria-current]=\"childLink.isActive ? 'page' : null\"\n [attr.aria-disabled]=\"child.disabled ? 'true' : null\"\n [class.pointer-events-none]=\"childLink.isActive || child.disabled\"\n >\n <span>{{ child.label }}</span>\n </a>\n } @else if (child.href) {\n <a\n yuwSidebarMenuSubButton\n closeMobileSidebarOnClick\n [href]=\"child.href\"\n [attr.target]=\"child.target\"\n [attr.aria-disabled]=\"child.disabled ? 'true' : null\"\n [class.pointer-events-none]=\"child.disabled\"\n >\n <span>{{ child.label }}</span>\n </a>\n } @else {\n <button\n yuwSidebarMenuSubButton\n closeMobileSidebarOnClick\n type=\"button\"\n [disabled]=\"child.disabled ?? false\"\n (click)=\"onItemClick(child.id, $event)\"\n >\n <span>{{ child.label }}</span>\n </button>\n }\n </li>\n }\n </ul>\n</ng-template>\n\n@for (group of _groups(); track group.id) {\n <div yuwSidebarGroup class=\"mb-2\">\n @if (group.label) {\n <div yuwSidebarGroupLabel>\n <span [class]=\"groupLabelTextClass\">{{ group.label }}</span>\n </div>\n }\n\n <div yuwSidebarGroupContent>\n <ul yuwSidebarMenu [class]=\"menuClass\">\n @for (item of group.items; track item.id) {\n <li yuwSidebarMenuItem>\n @if (item.route) {\n <a\n yuwSidebarMenuButton\n [closeMobileSidebarOnClick]=\"!item.hasChildren\"\n [routerLink]=\"item.route\"\n routerLinkActive\n #link=\"routerLinkActive\"\n [routerLinkActiveOptions]=\"item.activeOptions\"\n [isActive]=\"link.isActive || item.holdsActiveChild\"\n [tooltip]=\"item.tooltipText\"\n [attr.aria-current]=\"link.isActive ? 'page' : null\"\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\n [attr.aria-expanded]=\"item.hasChildren ? item.expanded : null\"\n [class.pointer-events-none]=\"(link.isActive && !item.hasChildren) || item.disabled\"\n (click)=\"onParentClick(item, item.expanded, $event)\"\n >\n @if (item.icon) {\n <ng-icon [name]=\"item.icon\" />\n }\n <span>{{ item.label }}</span>\n @if (item.hasChildren) {\n <ng-icon name=\"lucideChevronRight\" [class]=\"chevronClass\" />\n }\n </a>\n } @else if (item.href) {\n <a\n yuwSidebarMenuButton\n [closeMobileSidebarOnClick]=\"!item.hasChildren\"\n [href]=\"item.href\"\n [attr.target]=\"item.target\"\n [isActive]=\"item.holdsActiveChild\"\n [tooltip]=\"item.tooltipText\"\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\n [attr.aria-expanded]=\"item.hasChildren ? item.expanded : null\"\n [class.pointer-events-none]=\"item.disabled\"\n (click)=\"onParentClick(item, item.expanded, $event)\"\n >\n @if (item.icon) {\n <ng-icon [name]=\"item.icon\" />\n }\n <span>{{ item.label }}</span>\n @if (item.hasChildren) {\n <ng-icon name=\"lucideChevronRight\" [class]=\"chevronClass\" />\n }\n </a>\n } @else {\n <button\n yuwSidebarMenuButton\n [closeMobileSidebarOnClick]=\"!item.hasChildren\"\n type=\"button\"\n [isActive]=\"item.holdsActiveChild\"\n [tooltip]=\"item.tooltipText\"\n [disabled]=\"item.disabled ?? false\"\n [attr.aria-expanded]=\"item.hasChildren ? item.expanded : null\"\n (click)=\"item.hasChildren ? onParentClick(item, item.expanded, $event) : onItemClick(item.id, $event)\"\n >\n @if (item.icon) {\n <ng-icon [name]=\"item.icon\" />\n }\n <span>{{ item.label }}</span>\n @if (item.hasChildren) {\n <ng-icon name=\"lucideChevronRight\" [class]=\"chevronClass\" />\n }\n </button>\n }\n\n @if (item.badge) {\n <span yuwSidebarMenuBadge [class]=\"badgeClass\">{{ item.badge }}</span>\n }\n\n @if (item.hasChildren && !isRail()) {\n <div\n [class]=\"item.submenuClass\"\n [attr.inert]=\"item.expanded ? null : ''\"\n [attr.aria-hidden]=\"!item.expanded\"\n >\n <div>\n <ng-container [ngTemplateOutlet]=\"submenu\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </div>\n </div>\n }\n </li>\n }\n </ul>\n </div>\n </div>\n\n @if (group.separatorAfter) {\n <div yuwSidebarSeparator class=\"mx-auto w-4/5!\"></div>\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n output,\n} from '@angular/core';\nimport { OverlayContainer } from '@angular/cdk/overlay';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { injectHlmSidebarConfig } from 'yukit-web/helm/sidebar';\nimport { YuwSheetComponent } from '../sheet/sheet.component';\nimport type { YuwSidebarItemClickDto } from './sidebar-content.interface';\nimport { YuwSidebarRailService } from './sidebar-rail.service';\nimport { YuwSidebarSubmenuService } from './sidebar-submenu.service';\nimport {\n YuwSidebarMenuSubButtonDirective,\n YuwSidebarMenuSubDirective,\n YuwSidebarMenuSubItemDirective,\n} from './sidebar.directives';\nimport {\n YUW_SIDEBAR_RAIL_WIDTH_VAR,\n yuwSidebarSubmenuOverlayClass,\n yuwSidebarSubmenuSheetBodyClass,\n yuwSidebarSubmenuSheetClass,\n yuwSidebarSubmenuSheetLabelClass,\n} from './sidebar.variants';\nimport { NgIcon } from '@ng-icons/core';\n\n/**\n * The one submenu panel of a collapsed sidebar, showing whatever `YuwSidebarSubmenuService` holds.\n * Lives here rather than in `YuwSidebarNavComponent`, which `<yuw-sidebar>` instantiates twice.\n *\n * The rail width is re-declared as `--yuw-sidebar-rail-width` on the CDK overlay *container*: the\n * overlay is portalled out of the wrapper that owns `--sidebar-width-icon`, and the panel and\n * backdrop are siblings there that both need it. It is read off the live wrapper because\n * `[sidebarWidthIcon]` overrides the config without writing back to it.\n *\n * Not `aria-modal`, and scroll is left alone: the rail stays live behind the dim.\n *\n * The `<yuw-sheet>` is mounted unconditionally rather than behind an `@if` on the rendered item, and\n * that is load-bearing. `BrnDialog` drives the CDK overlay imperatively from its `state` input, and it\n * registers the effect that reads that input inside an `afterNextRender`, while its `onDestroy` calls\n * `forceClose()` synchronously. Recreating the component to swap entries therefore tears the old\n * overlay down and brings a new dialog up one render tick behind an `open` that is already `true` —\n * the panel flashes in and settles invisible, and the `_phase`/`_closeGeneration` bookkeeping is left\n * split across the two refs, which is what broke every subsequent animation. Keeping one instance for\n * the sidebar's lifetime means a swap is only new content inside a live panel; the entry's own fields\n * are read through `_label`/`_children`, which tolerate the null the item holds before the first open.\n */\n@Component({\n selector: 'yuw-sidebar-submenu-sheet',\n imports: [\n YuwSheetComponent,\n RouterLink,\n RouterLinkActive,\n YuwSidebarMenuSubDirective,\n YuwSidebarMenuSubItemDirective,\n YuwSidebarMenuSubButtonDirective,\n NgIcon,\n ],\n host: {\n class: 'contents',\n },\n templateUrl: './sidebar-submenu-sheet.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwSidebarSubmenuSheetComponent {\n protected readonly _submenu = inject(YuwSidebarSubmenuService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly overlayContainer = inject(OverlayContainer);\n private readonly rail = inject(YuwSidebarRailService);\n\n readonly itemClicked = output<YuwSidebarItemClickDto>();\n\n protected readonly _item = this._submenu.renderedItem;\n protected readonly bodyClass = yuwSidebarSubmenuSheetBodyClass;\n private readonly config = injectHlmSidebarConfig();\n protected readonly labelClass = yuwSidebarSubmenuSheetLabelClass;\n protected readonly overlayClass = yuwSidebarSubmenuOverlayClass;\n protected readonly panelClass = yuwSidebarSubmenuSheetClass;\n\n protected readonly _children = computed(() => this._item()?.children ?? []);\n protected readonly _activeOptions = computed(() =>\n Object.fromEntries(this._children().map((child) => [child.id, { exact: child.exact ?? false }])),\n );\n protected readonly _label = computed(() => this._item()?.label ?? '');\n\n constructor() {\n effect(() => {\n if (this.rail.railSettled()) return;\n\n this._submenu.close();\n });\n\n effect(() => {\n if (!this._submenu.open()) return;\n\n this.overlayContainer.getContainerElement().style.setProperty(YUW_SIDEBAR_RAIL_WIDTH_VAR, this.railWidth());\n });\n\n const container = this.overlayContainer.getContainerElement();\n const onBackdrop = (event: Event) => {\n if (!(event.target as HTMLElement).classList.contains('cdk-overlay-backdrop')) return;\n\n this._submenu.close();\n };\n\n container.addEventListener('click', onBackdrop);\n this.destroyRef.onDestroy(() => container.removeEventListener('click', onBackdrop));\n }\n\n protected onChildClick(id: string, event: MouseEvent): void {\n this._submenu.close();\n this.itemClicked.emit({ id, event });\n }\n\n protected onOpenChange(open: boolean): void {\n if (open) return;\n\n this._submenu.close();\n }\n\n private railWidth(): string {\n const wrapper = this.host.nativeElement.closest<HTMLElement>('[data-slot=sidebar-wrapper]');\n const resolved = wrapper ? getComputedStyle(wrapper).getPropertyValue('--sidebar-width-icon').trim() : '';\n\n return resolved || this.config.sidebarWidthIcon;\n }\n}\n","<yuw-sheet\n side=\"left\"\n [open]=\"_submenu.open()\"\n (openChange)=\"onOpenChange($event)\"\n [showTrigger]=\"false\"\n [ariaLabel]=\"_label()\"\n [panelClass]=\"panelClass\"\n [overlayClass]=\"overlayClass\"\n [ariaModal]=\"false\"\n [closeOnOutsidePointerEvents]=\"false\"\n scrollStrategy=\"reposition\"\n>\n <div [class]=\"bodyClass\">\n <span [class]=\"labelClass\">{{ _label() }}</span>\n\n <ul yuwSidebarMenuSub>\n @for (child of _children(); track child.id) {\n <li yuwSidebarMenuSubItem>\n @if (child.route) {\n <a\n yuwSidebarMenuSubButton\n #childLink=\"routerLinkActive\"\n routerLinkActive\n class=\"px-4 h-12!\"\n [routerLink]=\"child.route\"\n [routerLinkActiveOptions]=\"_activeOptions()[child.id]\"\n [isActive]=\"childLink.isActive\"\n [attr.aria-current]=\"childLink.isActive ? 'page' : null\"\n [attr.aria-disabled]=\"child.disabled ? 'true' : null\"\n [class.pointer-events-none]=\"childLink.isActive || child.disabled\"\n (click)=\"_submenu.close()\"\n >\n @if (child.icon) {\n <ng-icon [name]=\"child.icon\" />\n }\n <span>{{ child.label }}</span>\n </a>\n } @else if (child.href) {\n <a\n yuwSidebarMenuSubButton\n class=\"px-4 h-12!\"\n [href]=\"child.href\"\n [attr.target]=\"child.target\"\n [attr.aria-disabled]=\"child.disabled ? 'true' : null\"\n [class.pointer-events-none]=\"child.disabled\"\n (click)=\"_submenu.close()\"\n >\n @if (child.icon) {\n <ng-icon [name]=\"child.icon\" />\n }\n <span>{{ child.label }}</span>\n </a>\n } @else {\n <button\n yuwSidebarMenuSubButton\n type=\"button\"\n class=\"px-4 h-12!\"\n [disabled]=\"child.disabled ?? false\"\n (click)=\"onChildClick(child.id, $event)\"\n >\n @if (child.icon) {\n <ng-icon [name]=\"child.icon\" />\n }\n <span>{{ child.label }}</span>\n </button>\n }\n </li>\n }\n </ul>\n </div>\n</yuw-sheet>\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { outputFromObservable, toObservable } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { HlmSidebar, injectHlmSidebarConfig } from 'yukit-web/helm/sidebar';\nimport { YuwSidebarRailService } from './sidebar-rail.service';\nimport type {\n YuwSidebarCollapsibleDto,\n YuwSidebarContentDto,\n YuwSidebarItemClickDto,\n YuwSidebarSideDto,\n YuwSidebarVariantDto,\n} from './sidebar-content.interface';\nimport { YuwSidebarNavComponent } from './sidebar-nav.component';\nimport { YuwSidebarSubmenuSheetComponent } from './sidebar-submenu-sheet.component';\nimport { YuwSidebarSubmenuService } from './sidebar-submenu.service';\nimport { yuwSidebarContainerClass } from './sidebar.variants';\nimport {\n YuwSidebarContentDirective,\n YuwSidebarFooterDirective,\n YuwSidebarSeparatorDirective,\n} from './sidebar.directives';\n\n/**\n * Collapsible navigation sidebar. Renders as a fixed panel on desktop and as a slide-in sheet on\n * mobile, and reads its colors from the `--sidebar-*` theme tokens.\n *\n * Place it inside a `[yuwSidebarWrapper]` alongside a `<main yuwSidebarInset>`, and compose its\n * inner structure with the `yuwSidebar*` directives. Open state is shared through\n * `YuwSidebarService`, so `<yuw-sidebar-trigger>` works from anywhere in the page.\n *\n * Inputs:\n * - `side`: Edge the sidebar is docked to (`'left'`, `'right'`). Default is `'left'`.\n * - `variant`: Panel treatment (`'sidebar'` flush, `'floating'` card, `'inset'` inset page). Default is `'sidebar'`.\n * - `collapsible`: Collapse behaviour (`'offcanvas'` slides away, `'icon'` shrinks to icons, `'none'` always open). Default is `'offcanvas'`.\n * - `sidebarWidthMobile`: Width of the mobile slide-in sheet (any CSS length). Defaults to the helm sidebar config (`18rem`).\n * - `sidebarContainerClass`: Extra classes merged onto the desktop fixed container (the helm merges them last, so they win).\n * - `content`: Renders the scrollable nav from a `YuwSidebarContentDto` instead of hand-written\n * markup. Groups → items → optional one level of children. An item with a `route` becomes a\n * `[routerLink]` anchor whose active state, `aria-current` and pointer-lock resolve automatically\n * from `routerLinkActive`; one with an `href` becomes a plain anchor; one with neither becomes a\n * button that reports through `itemClicked`. An item with `children` gets a submenu that follows\n * the sidebar's own state: an accordion while the panel is open, and a sheet sliding out beside the\n * rail once it is collapsed to icons, so nested entries stay reachable there. Its `expanded`\n * field seeds the accordion; the item holding the active route opens on its own.\n * - `footer`: The same, rendered into the footer region.\n *\n * Outputs:\n * - `itemClicked`: Emits `{id, event}` when a non-navigating entry (no `route`, no `href`) is\n * activated, in either `content` or `footer`.\n * - `collapsedChange`: Emits `true` when the sidebar collapses and `false` when it expands, reading\n * the mobile sheet or the desktop panel as appropriate. Fires the moment the state flips, so it is\n * the one to drive a caller's own layout, which should start moving with the panel.\n * - `railSettledChange`: The same transition, but `true` only once the collapse has finished\n * animating, and `false` immediately on expand. Use it for anything that should not restyle against\n * a panel still mid-width — swapping a logo for a mark, say. The sidebar's own rail geometry is\n * keyed off this, which is why the labels stay put until the panel is actually narrow.\n *\n * The two forms compose rather than exclude each other, unlike `<yuw-button>`'s `buttons` input\n * which drops projected content when set. `content`/`footer` render their own region; anything\n * projected still renders, so a data-driven nav can sit alongside a hand-written block. To place\n * extra markup *inside* the object-rendered regions — where it scrolls with the nav and inherits the\n * content area's flex sizing — mark it `[yuwSidebarContentExtra]` or `[yuwSidebarFooterExtra]`; the\n * default slot keeps everything else, so existing projection-only usage is unaffected.\n *\n * With `collapsible=\"icon\"` the component also renders a single submenu sheet, shared by every entry\n * that has `children` in either region. It is one panel rather than one per entry because a sheet is a\n * modal overlay: several would compete for the same screen position, and only one submenu is ever on\n * screen anyway.\n *\n * `header` has no object form: it is a free-form branding area with no repeating structure to model.\n *\n * Deliberately not exposed from the helm sidebar (add a wrapper only when a real consumer needs\n * them): `HlmSidebarMenuAction`, `HlmSidebarMenuSkeleton`, `HlmSidebarInput` and\n * `HlmSidebarGroupAction`.\n *\n * Usage:\n * ```html\n * <yuw-sidebar collapsible=\"icon\">\n * <div yuwSidebarHeader>Yurest</div>\n * <div yuwSidebarContent>\n * <ul yuwSidebarMenu>\n * <li yuwSidebarMenuItem><a yuwSidebarMenuButton isActive tooltip=\"Pedidos\">Pedidos</a></li>\n * </ul>\n * </div>\n * </yuw-sidebar>\n * ```\n *\n * Object form:\n * ```html\n * <yuw-sidebar collapsible=\"icon\" [content]=\"nav\" [footer]=\"footerNav\"\n * (itemClicked)=\"onAction($event.id)\">\n * <div yuwSidebarHeader>Yurest</div>\n * </yuw-sidebar>\n * ```\n * ```ts\n * nav: YuwSidebarContentDto = {\n * groups: [{\n * id: 'management',\n * label: 'Gestión',\n * items: [\n * {id: 'orders', label: 'Pedidos', icon: 'lucideReceipt', route: '/orders', badge: '12'},\n * {id: 'reports', label: 'Informes', icon: 'lucideChartLine', expanded: true, children: [\n * {id: 'sales', label: 'Ventas', route: '/reports/sales'},\n * ]},\n * {id: 'sync', label: 'Sincronizar'},\n * ],\n * }],\n * };\n * ```\n */\n@Component({\n selector: 'yuw-sidebar',\n imports: [\n HlmSidebar,\n YuwSidebarNavComponent,\n YuwSidebarSubmenuSheetComponent,\n YuwSidebarContentDirective,\n YuwSidebarFooterDirective,\n YuwSidebarSeparatorDirective,\n ],\n host: {\n class: 'contents',\n '(click)': '_submenu.closeUnhandled($event)',\n },\n providers: [YuwSidebarSubmenuService],\n templateUrl: './sidebar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwSidebarComponent {\n protected readonly _rail = inject(YuwSidebarRailService);\n protected readonly _submenu = inject(YuwSidebarSubmenuService);\n\n readonly collapsible = input<YuwSidebarCollapsibleDto>('offcanvas');\n readonly content = input<YuwSidebarContentDto | undefined>(undefined);\n readonly footer = input<YuwSidebarContentDto | undefined>(undefined);\n readonly side = input<YuwSidebarSideDto>('left');\n readonly sidebarContainerClass = input<string>('');\n\n private readonly config = injectHlmSidebarConfig();\n readonly sidebarWidthMobile = input<string>(this.config.sidebarWidthMobile);\n readonly variant = input<YuwSidebarVariantDto>('sidebar');\n\n readonly itemClicked = output<YuwSidebarItemClickDto>();\n\n readonly collapsedChange = outputFromObservable(toObservable(this._rail.collapsed).pipe(distinctUntilChanged()));\n readonly railSettledChange = outputFromObservable(toObservable(this._rail.railSettled).pipe(distinctUntilChanged()));\n\n protected readonly _containerClass = computed(() => `${yuwSidebarContainerClass} ${this.sidebarContainerClass()}`);\n protected readonly _isRail = computed(() => this.collapsible() === 'icon' && this._rail.railSettled());\n}\n","<hlm-sidebar\n [attr.data-yuw-rail]=\"_isRail() ? 'on' : null\"\n [side]=\"side()\"\n [variant]=\"variant()\"\n [collapsible]=\"collapsible()\"\n [sidebarWidthMobile]=\"sidebarWidthMobile()\"\n [sidebarContainerClass]=\"_containerClass()\"\n>\n <ng-content select=\"[yuwSidebarHeader], yuw-sidebar-header\" />\n\n @if (content(); as nav) {\n <div yuwSidebarContent>\n <div yuwSidebarSeparator class=\"mx-auto w-4/5!\"></div>\n <yuw-sidebar-nav [content]=\"nav\" [collapsible]=\"collapsible()\" (itemClicked)=\"itemClicked.emit($event)\" />\n <ng-content select=\"[yuwSidebarContentExtra]\" />\n </div>\n }\n\n <ng-content />\n\n @if (footer(); as nav) {\n <div yuwSidebarFooter>\n <div yuwSidebarSeparator class=\"mx-auto w-4/5!\"></div>\n <yuw-sidebar-nav [content]=\"nav\" [collapsible]=\"collapsible()\" (itemClicked)=\"itemClicked.emit($event)\" />\n <ng-content select=\"[yuwSidebarFooterExtra]\" />\n </div>\n }\n</hlm-sidebar>\n\n@if (collapsible() === 'icon') {\n <yuw-sidebar-submenu-sheet (itemClicked)=\"itemClicked.emit($event)\" />\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { HlmSidebarTrigger } from 'yukit-web/helm/sidebar';\n\n/**\n * Icon button that toggles the sidebar open or collapsed. Works anywhere on the page, including\n * inside `<main yuwSidebarInset>`, since the open state lives in `YuwSidebarService`.\n *\n * Inputs:\n * - `label`: Screen-reader-only label for the button. User-facing text the consuming app is\n * responsible for translating.\n *\n * Usage:\n * ```html\n * <yuw-sidebar-trigger label=\"Alternar menú\" />\n * ```\n */\n@Component({\n selector: 'yuw-sidebar-trigger',\n imports: [HlmSidebarTrigger],\n host: {\n class: 'contents',\n },\n templateUrl: './sidebar-trigger.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwSidebarTriggerComponent {\n readonly label = input.required<string>();\n}\n","<button hlmSidebarTrigger [srOnlyText]=\"label()\" class=\"cursor-pointer\"></button>\n","/*\n * Public API Surface of yukit-web\n */\n\nexport * from './lib/utils/cn';\nexport * from './lib/utils/value-accessor';\n\nexport * from './lib/interface/text-field.interface';\nexport * from './lib/interface/color.interface';\n\nexport * from './lib/components/button/button.component';\nexport * from './lib/components/button/button-group-item.interface';\nexport * from './lib/components/button/button-group-text.directive';\nexport * from './lib/components/badge/badge.component';\nexport * from './lib/components/breadcrumb/breadcrumb.component';\nexport * from './lib/components/breadcrumb/breadcrumb-item.interface';\nexport * from './lib/components/pagination/pagination.component';\nexport * from './lib/components/pagination/pagination.util';\nexport * from './lib/components/combobox/combobox.component';\nexport * from './lib/components/combobox/combobox-option.interface';\nexport * from './lib/components/combobox/combobox-item.directive';\nexport * from './lib/components/accordion/accordion.directive';\nexport * from './lib/components/accordion/accordion-item.directive';\nexport * from './lib/components/accordion/accordion-trigger.component';\nexport * from './lib/components/accordion/accordion-content.component';\nexport * from './lib/components/accordion/accordion.imports';\nexport * from './lib/components/input/input.component';\nexport * from './lib/components/input/input-addon.directive';\nexport * from './lib/components/textarea/textarea.component';\nexport * from './lib/components/search-input/search-input.component';\nexport * from './lib/components/search-input/search-input-collapse.interface';\nexport * from './lib/components/password-input/password-input.component';\nexport * from './lib/components/password-input/password-input.reveal';\nexport * from './lib/components/input-otp/input-otp.component';\nexport * from './lib/components/input-otp/input-otp.layout';\nexport * from './lib/components/label/label.directive';\nexport * from './lib/components/checkbox/checkbox.component';\nexport * from './lib/components/switch/switch.component';\nexport * from './lib/components/radio-group/radio-group.component';\nexport * from './lib/components/radio-group/radio-option.interface';\nexport * from './lib/components/skeleton/skeleton.directive';\nexport * from './lib/components/card/card.directives';\nexport * from './lib/components/empty/empty.directives';\nexport * from './lib/components/context-menu/context-menu.directives';\nexport * from './lib/components/context-menu/context-menu-checkbox-indicator.component';\nexport * from './lib/components/context-menu/context-menu-radio-indicator.component';\nexport * from './lib/components/context-menu/context-menu-sub-indicator.component';\nexport * from './lib/components/datepicker/datepicker.component';\nexport * from './lib/components/table/table.directives';\nexport * from './lib/components/table/datatable.component';\nexport * from './lib/components/table/datatable.variants';\nexport * from './lib/components/table/row-select/datatable-row-select.component';\n\nexport * from './lib/components/avatar/avatar.component';\nexport * from './lib/components/avatar/avatar-group-item.interface';\n\nexport * from './lib/components/item/item.directives';\n\nexport * from './lib/components/sheet/sheet.component';\nexport * from './lib/components/sheet/sheet.directives';\nexport * from './lib/components/sheet/sheet-footer.directive';\nexport * from './lib/components/popover/popover.component';\nexport * from './lib/components/popover/popover.directives';\nexport * from './lib/components/tooltip/tooltip.directive';\n\nexport * from './lib/components/spinner/spinner.component';\n\nexport * from './lib/components/toaster/toaster.component';\nexport * from './lib/components/toaster/toast';\n\nexport * from './lib/components/alert/alert.component';\nexport * from './lib/components/alert/alert-action.directive';\nexport * from './lib/components/alert/alert-title.directive';\nexport * from './lib/components/alert/alert-description.directive';\n\nexport * from './lib/components/dialog/dialog.component';\nexport * from './lib/components/dialog/dialog.directives';\nexport * from './lib/components/dialog/dialog-footer.directive';\n\nexport * from './lib/components/alert-dialog/alert-dialog.component';\nexport * from './lib/components/alert-dialog/alert-dialog.directives';\nexport * from './lib/components/alert-dialog/alert-dialog-media.directive';\n\nexport * from './lib/components/tabs/tabs.component';\nexport * from './lib/components/tabs/tab-item.interface';\nexport * from './lib/components/tabs/tab-panel.directive';\n\nexport * from './lib/components/attachment/attachment.directives';\n\nexport * from './lib/components/sidebar/sidebar.component';\nexport * from './lib/components/sidebar/sidebar-content.interface';\nexport * from './lib/components/sidebar/sidebar-trigger.component';\nexport * from './lib/components/sidebar/sidebar.directives';\nexport {\n YUW_SIDEBAR_RAIL_ICON_SIZE,\n YUW_SIDEBAR_RAIL_PADDING,\n YUW_SIDEBAR_RAIL_WIDTH,\n} from './lib/components/sidebar/sidebar.variants';\nexport * from './lib/components/sidebar/sidebar.service';\nexport * from './lib/components/sidebar/sidebar-rail.service';\nexport * from './lib/components/sidebar/sidebar-submenu.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","nextUniqueId","i1.YuwTableContainerDirective","i1.YuwTableDirective","i1.YuwTHeadDirective","i1.YuwTBodyDirective","i1.YuwTrDirective","i1.YuwThDirective","i1.YuwTdDirective","i1.YuwCaptionDirective"],"mappings":"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"}
1
+ {"version":3,"file":"yukit-web.mjs","sources":["../../../projects/yukit-web/src/lib/utils/cn.ts","../../../projects/yukit-web/src/lib/utils/value-accessor.ts","../../../projects/yukit-web/src/lib/components/button/button-group-text.directive.ts","../../../projects/yukit-web/src/lib/components/button/button.variants.ts","../../../projects/yukit-web/src/lib/components/button/button.component.ts","../../../projects/yukit-web/src/lib/components/button/button.component.html","../../../projects/yukit-web/src/lib/components/badge/badge.component.ts","../../../projects/yukit-web/src/lib/components/badge/badge.component.html","../../../projects/yukit-web/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/yukit-web/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/yukit-web/src/lib/components/pagination/pagination.util.ts","../../../projects/yukit-web/src/lib/components/pagination/pagination.component.ts","../../../projects/yukit-web/src/lib/components/pagination/pagination.component.html","../../../projects/yukit-web/src/lib/utils/field-size.variants.ts","../../../projects/yukit-web/src/lib/components/combobox/combobox-item.directive.ts","../../../projects/yukit-web/src/lib/components/combobox/combobox.component.ts","../../../projects/yukit-web/src/lib/components/combobox/combobox.component.html","../../../projects/yukit-web/src/lib/components/accordion/accordion.directive.ts","../../../projects/yukit-web/src/lib/components/accordion/accordion-item.directive.ts","../../../projects/yukit-web/src/lib/components/accordion/accordion-trigger.component.ts","../../../projects/yukit-web/src/lib/components/accordion/accordion-trigger.component.html","../../../projects/yukit-web/src/lib/components/accordion/accordion-content.component.ts","../../../projects/yukit-web/src/lib/components/accordion/accordion-content.component.html","../../../projects/yukit-web/src/lib/components/accordion/accordion.imports.ts","../../../projects/yukit-web/src/lib/components/input/input-addon.directive.ts","../../../projects/yukit-web/src/lib/components/input/input.component.ts","../../../projects/yukit-web/src/lib/components/input/input.component.html","../../../projects/yukit-web/src/lib/components/textarea/textarea.component.ts","../../../projects/yukit-web/src/lib/components/textarea/textarea.component.html","../../../projects/yukit-web/src/lib/components/search-input/search-input.variants.ts","../../../projects/yukit-web/src/lib/components/search-input/search-input.component.ts","../../../projects/yukit-web/src/lib/components/search-input/search-input.component.html","../../../projects/yukit-web/src/lib/components/password-input/password-input.reveal.ts","../../../projects/yukit-web/src/lib/components/password-input/password-input.component.ts","../../../projects/yukit-web/src/lib/components/password-input/password-input.component.html","../../../projects/yukit-web/src/lib/components/input-otp/input-otp.variants.ts","../../../projects/yukit-web/src/lib/components/input-otp/input-otp.layout.ts","../../../projects/yukit-web/src/lib/components/input-otp/input-otp.component.ts","../../../projects/yukit-web/src/lib/components/input-otp/input-otp.component.html","../../../projects/yukit-web/src/lib/components/label/label.directive.ts","../../../projects/yukit-web/src/lib/components/checkbox/checkbox.variants.ts","../../../projects/yukit-web/src/lib/components/checkbox/checkbox.component.ts","../../../projects/yukit-web/src/lib/components/checkbox/checkbox.component.html","../../../projects/yukit-web/src/lib/components/switch/switch.variants.ts","../../../projects/yukit-web/src/lib/components/switch/switch.component.ts","../../../projects/yukit-web/src/lib/components/switch/switch.component.html","../../../projects/yukit-web/src/lib/components/radio-group/radio-group.component.ts","../../../projects/yukit-web/src/lib/components/radio-group/radio-group.component.html","../../../projects/yukit-web/src/lib/components/skeleton/skeleton.directive.ts","../../../projects/yukit-web/src/lib/components/card/card.directives.ts","../../../projects/yukit-web/src/lib/components/empty/empty.directives.ts","../../../projects/yukit-web/src/lib/components/context-menu/context-menu-checkbox-indicator.component.ts","../../../projects/yukit-web/src/lib/components/context-menu/context-menu-checkbox-indicator.component.html","../../../projects/yukit-web/src/lib/components/context-menu/context-menu-radio-indicator.component.ts","../../../projects/yukit-web/src/lib/components/context-menu/context-menu-radio-indicator.component.html","../../../projects/yukit-web/src/lib/components/context-menu/context-menu-sub-indicator.component.ts","../../../projects/yukit-web/src/lib/components/context-menu/context-menu-sub-indicator.component.html","../../../projects/yukit-web/src/lib/components/context-menu/context-menu.directives.ts","../../../projects/yukit-web/src/lib/components/datepicker/datepicker.component.ts","../../../projects/yukit-web/src/lib/components/datepicker/datepicker.component.html","../../../projects/yukit-web/src/lib/components/table/table.directives.ts","../../../projects/yukit-web/src/lib/components/table/datatable.variants.ts","../../../projects/yukit-web/src/lib/components/table/datatable.interface.ts","../../../projects/yukit-web/src/lib/components/table/datatable.component.ts","../../../projects/yukit-web/src/lib/components/table/datatable.component.html","../../../projects/yukit-web/src/lib/components/table/row-select/datatable-row-select.component.ts","../../../projects/yukit-web/src/lib/components/avatar/avatar.component.ts","../../../projects/yukit-web/src/lib/components/avatar/avatar.component.html","../../../projects/yukit-web/src/lib/components/item/item.directives.ts","../../../projects/yukit-web/src/lib/components/sheet/sheet.directives.ts","../../../projects/yukit-web/src/lib/components/sheet/sheet-footer.directive.ts","../../../projects/yukit-web/src/lib/components/sheet/sheet.component.ts","../../../projects/yukit-web/src/lib/components/sheet/sheet.component.html","../../../projects/yukit-web/src/lib/components/popover/popover.directives.ts","../../../projects/yukit-web/src/lib/components/popover/popover.component.ts","../../../projects/yukit-web/src/lib/components/popover/popover.component.html","../../../projects/yukit-web/src/lib/components/tooltip/tooltip.directive.ts","../../../projects/yukit-web/src/lib/components/spinner/spinner.component.ts","../../../projects/yukit-web/src/lib/components/spinner/spinner.component.html","../../../projects/yukit-web/src/lib/components/toaster/toaster.component.ts","../../../projects/yukit-web/src/lib/components/toaster/toaster.component.html","../../../projects/yukit-web/src/lib/components/alert/alert-action.directive.ts","../../../projects/yukit-web/src/lib/components/alert/alert-description.directive.ts","../../../projects/yukit-web/src/lib/components/alert/alert-title.directive.ts","../../../projects/yukit-web/src/lib/components/alert/alert.component.ts","../../../projects/yukit-web/src/lib/components/alert/alert.component.html","../../../projects/yukit-web/src/lib/components/dialog/dialog.directives.ts","../../../projects/yukit-web/src/lib/components/dialog/dialog-footer.directive.ts","../../../projects/yukit-web/src/lib/components/dialog/dialog.component.ts","../../../projects/yukit-web/src/lib/components/dialog/dialog.component.html","../../../projects/yukit-web/src/lib/components/alert-dialog/alert-dialog.directives.ts","../../../projects/yukit-web/src/lib/components/alert-dialog/alert-dialog-media.directive.ts","../../../projects/yukit-web/src/lib/components/alert-dialog/alert-dialog.component.ts","../../../projects/yukit-web/src/lib/components/alert-dialog/alert-dialog.component.html","../../../projects/yukit-web/src/lib/components/tabs/tabs.variants.ts","../../../projects/yukit-web/src/lib/components/tabs/tab-panel.directive.ts","../../../projects/yukit-web/src/lib/components/tabs/tabs.component.ts","../../../projects/yukit-web/src/lib/components/tabs/tabs.component.html","../../../projects/yukit-web/src/lib/components/attachment/attachment.directives.ts","../../../projects/yukit-web/src/lib/components/sidebar/sidebar.variants.ts","../../../projects/yukit-web/src/lib/components/sidebar/sidebar-rail.service.ts","../../../projects/yukit-web/src/lib/components/sidebar/sidebar.directives.ts","../../../projects/yukit-web/src/lib/components/sidebar/sidebar-submenu.service.ts","../../../projects/yukit-web/src/lib/components/sidebar/sidebar-nav.component.ts","../../../projects/yukit-web/src/lib/components/sidebar/sidebar-nav.component.html","../../../projects/yukit-web/src/lib/components/sidebar/sidebar-submenu-sheet.component.ts","../../../projects/yukit-web/src/lib/components/sidebar/sidebar-submenu-sheet.component.html","../../../projects/yukit-web/src/lib/components/sidebar/sidebar.component.ts","../../../projects/yukit-web/src/lib/components/sidebar/sidebar.component.html","../../../projects/yukit-web/src/lib/components/sidebar/sidebar-trigger.component.ts","../../../projects/yukit-web/src/lib/components/sidebar/sidebar-trigger.component.html","../../../projects/yukit-web/src/public-api.ts","../../../projects/yukit-web/src/yukit-web.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * Merges class lists the shadcn/Spartan way: `clsx` resolves conditionals/arrays, `twMerge`\n * then drops earlier Tailwind classes that a later one overrides (e.g. `px-3 ... px-4` keeps\n * only `px-4`) instead of shipping both to the DOM.\n *\n * Every yukit-web component's variant classes are combined through this, so a consumer's own\n * `class` input always wins over the component's defaults without fighting specificity.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { Directive, forwardRef, type ModelSignal, type Provider, signal, type Type } from '@angular/core';\nimport { type ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Registers a component as a form control, so `formControlName`/`formControl`/`ngModel` bind to it.\n *\n * Spartan's own controls mostly don't need this: `hlmInput` and `hlmTextarea` are *directives on a\n * native element*, so Angular's built-in `DefaultValueAccessor` already applies to the same host.\n * The moment we wrap that native element inside a component template, the host a consumer writes\n * `formControlName` on is no longer the `<input>` — Angular finds no accessor there and throws\n * `NG01203`. This restores what the wrapping cost us.\n *\n * Kept as a `useExisting` + `forwardRef` provider because the class is referenced in its own\n * decorator metadata, before the class binding is initialized.\n */\nexport function provideValueAccessor(component: Type<unknown>): Provider {\n return {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => component),\n multi: true,\n };\n}\n\n/**\n * Shared `ControlValueAccessor` for the library's text-entry controls.\n *\n * Exists so the five text components don't each carry a near-identical copy of the same CVA\n * plumbing — the single-responsibility and DRY concerns in `agents.md`. Subclasses supply nothing;\n * they just extend it, add the provider, and bind `value`/`_onBlur()` in their template.\n *\n * ## Why `disabled` needs care\n *\n * `disabled` has two sources that don't know about each other: our own `disabled` input, and the\n * forms API calling `setDisabledState()` (which is what `new FormControl({value, disabled: true})`\n * and `control.disable()` go through). Letting either one own a single signal means the last\n * writer wins and the other is silently ignored — the classic bug in hand-rolled accessors.\n *\n * They're kept as two separate signals and OR'd together in `disabledState`: disabled by *either*\n * source means disabled. That's the only combination that never drops a caller's intent.\n */\n@Directive({})\nexport abstract class YuwValueAccessorBase<T> implements ControlValueAccessor {\n protected readonly _formDisabled = signal(false);\n private _onChange: (value: T) => void = () => undefined;\n private _onTouched: () => void = () => undefined;\n abstract readonly value: ModelSignal<T>;\n\n registerOnChange(fn: (value: T) => 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._formDisabled.set(isDisabled);\n }\n\n writeValue(value: T | null | undefined): void {\n this.value.set(value ?? this._emptyValue());\n }\n\n protected _commit(next: T): void {\n this.value.set(next);\n this._onChange(next);\n }\n\n protected abstract _emptyValue(): T;\n\n protected _isDisabled(ownDisabled: boolean): boolean {\n return ownDisabled || this._formDisabled();\n }\n\n protected _onBlur(): void {\n this._onTouched();\n }\n}\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\n\n/**\n * Declares the content of a single text segment inside `<yuw-button>`'s button group. Apply it to\n * an `<ng-template>` and pass the id of the `kind: 'text'` entry it belongs to, matching an entry\n * in the `buttons` input.\n *\n * Exists because a text segment often isn't text — a checkbox, a badge, an icon with a count — and a\n * component cannot travel through a data array. An entry whose id has no matching template falls\n * back to its `label`, so the plain-string case needs no template at all.\n *\n * Usage:\n * ```html\n * <yuw-button [buttons]=\"entries\">\n * <ng-template yuwButtonGroupText=\"select-all\">\n * <yuw-checkbox [(checked)]=\"allSelected\" />\n * </ng-template>\n * </yuw-button>\n * ```\n */\n@Directive({\n selector: 'ng-template[yuwButtonGroupText]',\n})\nexport class YuwButtonGroupTextDirective {\n readonly templateRef = inject<TemplateRef<unknown>>(TemplateRef);\n\n readonly entryId = input.required<string>({ alias: 'yuwButtonGroupText' });\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\n\n/**\n * yukit-web's own class layer for `<yuw-button>`, applied on top of the helm `buttonVariants()`\n * output. The result lands on the `[class]` binding of the inner `[hlmBtn]` element; the helm\n * `classes()` utility registers it as base classes and merges it last through `twMerge`, so every\n * class here beats the helm default of the same Tailwind group *and* modifier stack without\n * needing `!important`.\n */\nexport const yuwButtonVariants = cva('', {\n variants: {\n /**\n * Mirrors the helm `variant` input. Only `outline` needs correcting: helm paints it with\n * `bg-background` (+ `dark:bg-input/30`) and a muted text color, while ours is transparent at\n * rest and uses the foreground color (which `[data-yuw-color]` remaps to the accent). The\n * helm `hover:`/`aria-expanded:` backgrounds are intentionally left in place.\n */\n variant: {\n default: '',\n secondary: '',\n outline: 'bg-transparent text-foreground dark:bg-transparent',\n ghost: '',\n destructive: '',\n link: '',\n },\n size: {\n default: 'h-10',\n xs: 'h-7',\n sm: 'h-9',\n lg: 'h-11',\n icon: 'size-10',\n 'icon-xs': 'size-7',\n 'icon-sm': 'size-9',\n 'icon-lg': 'size-11',\n },\n /**\n * Strips every background/border the helm variants set, covering each modifier stack they\n * use (`hover:`, `aria-expanded:`, `dark:`, `dark:hover:`, `[a]:hover:`) so `twMerge` drops\n * the helm counterpart in every state. The `component-colors.css` gradients key off the\n * `.bg-primary` class, which this merge removes from the element, so they never match a\n * transparent button and no `!important` is needed here either.\n */\n transparent: {\n true: 'border-transparent bg-transparent text-foreground hover:bg-transparent aria-expanded:bg-transparent aria-expanded:text-foreground dark:border-transparent dark:bg-transparent dark:hover:bg-transparent [a]:hover:bg-transparent',\n false: '',\n },\n animationDisabled: {\n true: 'active:translate-y-0!',\n false: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n transparent: false,\n },\n});\n\nexport type YuwButtonVariants = VariantProps<typeof yuwButtonVariants>;\n\nexport const yuwButtonGroupTextClass = 'bg-transparent text-foreground border-border dark:border-input';\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n ElementRef,\n inject,\n input,\n output,\n TemplateRef,\n} from '@angular/core';\nimport { type ButtonVariants, HlmButton } from 'yukit-web/helm/button';\nimport { HlmButtonGroup, HlmButtonGroupText } from 'yukit-web/helm/button-group';\nimport { HlmDropdownMenuTrigger } from 'yukit-web/helm/dropdown-menu';\nimport type { YuwColorDto } from '../../interface/color.interface';\nimport { cn } from '../../utils/cn';\nimport type {\n YuwButtonGroupClickDto,\n YuwButtonGroupEntryDto,\n YuwButtonGroupItemDto,\n} from './button-group-item.interface';\nimport { YuwButtonGroupTextDirective } from './button-group-text.directive';\nimport { yuwButtonGroupTextClass, yuwButtonVariants } from './button.variants';\n\n/**\n * Button component supporting single action button or grouped button options.\n *\n * Inputs:\n * - `variant`: Button style variant (`'default'`, `'secondary'`, `'outline'`, `'destructive'`, `'ghost'`, `'link'`). Default is `'default'`.\n * - `size`: Button size (`'default'`, `'sm'`, `'lg'`, `'icon'`, etc.). Default is `'default'`.\n * - `color`: Brand color theme (any `YuwColorDto` value). Default is `'secondary'`.\n * - `disabled`: Disables button interactions.\n * - `type`: HTML button type (`'button'`, `'submit'`, `'reset'`). Default is `'button'`.\n * - `href`: Renders button as an anchor tag navigating to specified URL.\n * - `target`: Target attribute for link button (e.g. `'_blank'`).\n * - `transparent`: Removes background and border styling.\n * - `class`: Extra CSS classes merged onto the inner button/anchor (single and link mode); merged last, so they win over the component's own classes.\n * - `yuwDropdownMenuTrigger`: Optional dropdown menu template reference to trigger.\n * - `ariaLabel`: Accessible label for screen readers.\n * - `buttons`: Array of group entries (`YuwButtonGroupEntryDto[]`) to render as a welded button group.\n * A `kind: 'text'` entry renders a static, non-interactive segment instead of a button; give it an\n * `<ng-template yuwButtonGroupText=\"<id>\">` to fill it with markup rather than a plain `label`.\n * - `orientation`: Group layout orientation (`'horizontal'` or `'vertical'`). Default is `'horizontal'`.\n * - `groupAriaLabel`: Accessible name for button group container.\n *\n * Outputs:\n * - `clicked`: Emits MouseEvent on single button click.\n * - `buttonClicked`: Emits object containing clicked button `id` and `event` in group mode.\n *\n * `_btnClass` merges our variant layer with the consumer's `class`, which goes last so it wins.\n *\n * `_resolved` gives each group entry everything its branch of the template needs. A text entry has\n * no variant/size/color to fall back to, so it takes its own path rather than being run through the\n * button resolver, which would invent fields its DTO doesn't declare. Its content template is looked\n * up through a `Map` rather than a per-entry `.find()`, which would make an n-entry group cost n².\n *\n * The host carries `inline-flex` so it is a real box rather than an inline one: an overlay trigger\n * directive composed onto `<yuw-button>` (see `YuwPopoverTriggerDirective`) anchors its panel to the\n * host element, and an inline host reports a rect that misses the button's own box. Elements that\n * need to be positioned — an overlay's close button, for instance — get a positioned wrapper around\n * `<yuw-button>` rather than relying on the host's own display.\n *\n * Single Button Usage:\n * ```html\n * <yuw-button variant=\"outline\" color=\"primary\" (clicked)=\"onSave()\">Save</yuw-button>\n * <yuw-button href=\"/dashboard\">Navigate</yuw-button>\n * ```\n *\n * Button Group Usage:\n * ```html\n * <yuw-button [buttons]=\"actionList\" (buttonClicked)=\"onAction($event)\" />\n *\n * <yuw-button [buttons]=\"[{id: 'caption', kind: 'text', label: 'Sort by'}, ...sortActions]\">\n * <ng-template yuwButtonGroupText=\"select-all\">\n * <yuw-checkbox [(checked)]=\"allSelected\" />\n * </ng-template>\n * </yuw-button>\n * ```\n */\n@Component({\n selector: 'yuw-button',\n imports: [NgTemplateOutlet, HlmButton, HlmButtonGroup, HlmButtonGroupText, HlmDropdownMenuTrigger],\n host: {\n class: 'inline-flex',\n '[class.cursor-not-allowed]': 'disabled()',\n '[attr.data-yuw-color]': 'color()',\n },\n templateUrl: './button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwButtonComponent {\n private readonly _host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n private readonly _texts = contentChildren(YuwButtonGroupTextDirective);\n\n readonly animationDisabled = input<boolean>(false);\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly buttons = input<YuwButtonGroupEntryDto[] | undefined>(undefined);\n readonly color = input<YuwColorDto>('secondary');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly groupAriaLabel = input<string | undefined>(undefined);\n readonly href = input<string | undefined>(undefined);\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n readonly size = input<ButtonVariants['size']>('default');\n readonly target = input<string | undefined>(undefined);\n readonly transparent = input(false, { transform: booleanAttribute });\n readonly type = input<'button' | 'submit' | 'reset'>('button');\n readonly userClass = input<string>('', { alias: 'class' });\n readonly variant = input<ButtonVariants['variant']>('default');\n readonly yuwDropdownMenuTrigger = input<TemplateRef<unknown> | undefined>(undefined);\n\n readonly buttonClicked = output<YuwButtonGroupClickDto>();\n readonly clicked = output<MouseEvent>();\n\n protected readonly _textClass = yuwButtonGroupTextClass;\n\n protected readonly _animationDisabled = computed(\n () => this.animationDisabled() || this._host.nativeElement.hasAttribute('aria-haspopup'),\n );\n protected readonly _effectiveVariant = computed<ButtonVariants['variant']>(() =>\n this.transparent() ? 'ghost' : this.variant(),\n );\n protected readonly _btnClass = computed(() =>\n cn(\n yuwButtonVariants({\n size: this.size(),\n variant: this._effectiveVariant(),\n transparent: this.transparent(),\n animationDisabled: this._animationDisabled(),\n }),\n this.userClass(),\n ),\n );\n protected readonly _isGroup = computed(() => (this.buttons()?.length ?? 0) > 0);\n protected readonly _resolved = computed(() => {\n const templates = new Map(this._texts().map((text) => [text.entryId(), text.templateRef]));\n\n return (this.buttons() ?? []).map((entry) => {\n if (entry.kind === 'text') {\n return { ...entry, template: templates.get(entry.id) };\n }\n\n const transparent = entry.transparent ?? false;\n const variant = transparent ? 'ghost' : (entry.variant ?? this.variant());\n return {\n ...entry,\n variant,\n size: entry.size ?? this.size(),\n color: entry.color ?? this.color(),\n disabled: entry.disabled ?? false,\n type: entry.type ?? ('button' as const),\n class: yuwButtonVariants({ variant, transparent, animationDisabled: this._animationDisabled() }),\n };\n });\n });\n\n protected onClick(event: MouseEvent): void {\n if (this.disabled()) {\n return;\n }\n this.clicked.emit(event);\n }\n\n protected onGroupClick(button: YuwButtonGroupItemDto, event: MouseEvent): void {\n if (button.disabled) {\n return;\n }\n this.buttonClicked.emit({ id: button.id, event });\n }\n}\n","@if (_isGroup()) {\n <div hlmButtonGroup [orientation]=\"orientation()\" [attr.aria-label]=\"groupAriaLabel()\">\n @for (button of _resolved(); track button.id) {\n @if (button.kind === 'text') {\n <hlm-button-group-text [class]=\"_textClass\">\n @if (button.template) {\n <ng-container [ngTemplateOutlet]=\"button.template\" />\n } @else {\n {{ button.label }}\n }\n </hlm-button-group-text>\n } @else if (button.href && !button.disabled) {\n <a\n hlmBtn\n [variant]=\"button.variant\"\n [size]=\"button.size\"\n [href]=\"button.href\"\n [target]=\"button.target\"\n [attr.data-yuw-color]=\"button.color\"\n [attr.aria-label]=\"button.ariaLabel\"\n (click)=\"onGroupClick(button, $event)\"\n [hlmDropdownMenuTrigger]=\"button.yuwDropdownMenuTrigger\"\n [class]=\"button.class\"\n >\n {{ button.label }}\n </a>\n } @else {\n <button\n hlmBtn\n [variant]=\"button.variant\"\n [size]=\"button.size\"\n [type]=\"button.type\"\n [disabled]=\"button.disabled\"\n [attr.data-yuw-color]=\"button.color\"\n [attr.aria-label]=\"button.ariaLabel\"\n (click)=\"onGroupClick(button, $event)\"\n [hlmDropdownMenuTrigger]=\"button.yuwDropdownMenuTrigger\"\n [class]=\"button.class\"\n >\n {{ button.label }}\n </button>\n }\n }\n </div>\n} @else if (href(); as hrefValue) {\n <a\n hlmBtn\n [variant]=\"_effectiveVariant()\"\n [size]=\"size()\"\n [disabled]=\"disabled()\"\n [href]=\"disabled() ? null : hrefValue\"\n [target]=\"target()\"\n [attr.aria-label]=\"ariaLabel()\"\n (click)=\"onClick($event)\"\n [hlmDropdownMenuTrigger]=\"yuwDropdownMenuTrigger()\"\n [class]=\"_btnClass()\"\n >\n <ng-content select=\"[yuwButtonIcon]\" />\n <ng-content />\n </a>\n} @else {\n <button\n hlmBtn\n [variant]=\"_effectiveVariant()\"\n [size]=\"size()\"\n [type]=\"type()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n (click)=\"onClick($event)\"\n [hlmDropdownMenuTrigger]=\"yuwDropdownMenuTrigger()\"\n [class]=\"_btnClass()\"\n >\n <ng-content select=\"[yuwButtonIcon]\" />\n <ng-content />\n </button>\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideX } from '@ng-icons/lucide';\nimport { type BadgeVariants, HlmBadge } from 'yukit-web/helm/badge';\nimport { YuwButtonComponent } from '../button/button.component';\nimport type { YuwColorDto } from '../../interface/color.interface';\n\n/** Text class for the remove button per helm badge variant, mirroring each variant's own foreground. */\nconst REMOVE_TEXT_CLASS: Record<NonNullable<BadgeVariants['variant']>, string> = {\n default: 'text-primary-foreground hover:text-primary-foreground',\n secondary: 'text-secondary-foreground hover:text-secondary-foreground',\n destructive: 'text-destructive hover:text-destructive',\n outline: 'text-foreground hover:text-foreground',\n ghost: 'text-foreground hover:text-foreground',\n link: 'text-primary hover:text-primary',\n};\n\n/**\n * Renders a small badge or tag component for status indicators, counts, and category labels.\n *\n * Supports the shared color vocabulary (`color`, any `YuwColorDto` value), variant styles\n * (`variant`), dismissible action (`removeLabel` / `removed`), and a compact dot mode (`dot`)\n * that renders no content at all.\n *\n * Usage:\n * ```html\n * <yuw-badge color=\"primary\">New</yuw-badge>\n * <yuw-badge removeLabel=\"Remove tag\" (removed)=\"onRemove()\">Category</yuw-badge>\n * <yuw-badge dot color=\"success\" />\n * ```\n */\n@Component({\n selector: 'yuw-badge',\n hostDirectives: [{ directive: HlmBadge, inputs: ['variant'] }],\n imports: [YuwButtonComponent, NgIcon],\n providers: [provideIcons({ lucideX })],\n host: {\n '[class]': 'dotClass()',\n '[attr.data-yuw-color]': 'color()',\n },\n templateUrl: './badge.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwBadgeComponent {\n readonly color = input<YuwColorDto>('primary');\n readonly dot = input(false, { transform: booleanAttribute });\n readonly removeLabel = input<string | undefined>(undefined);\n readonly variant = input<BadgeVariants['variant']>('default');\n\n readonly removed = output<void>();\n\n protected readonly dotClass = computed(() => (this.dot() ? 'size-4 p-0' : ''));\n protected readonly removeClass = computed(() => REMOVE_TEXT_CLASS[this.variant() ?? 'default']);\n\n protected onRemoveClick(event: Event): void {\n event.stopPropagation();\n this.removed.emit();\n }\n}\n","@if (!dot()) {\n <ng-content select=\"[yuwBadgeIcon]\" />\n <span class=\"truncate\"><ng-content /></span>\n\n @if (removeLabel()) {\n <yuw-button\n variant=\"ghost\"\n size=\"icon-xs\"\n [color]=\"color()\"\n [ariaLabel]=\"removeLabel()\"\n [class]=\"removeClass()\"\n (clicked)=\"onRemoveClick($event)\"\n >\n <ng-icon name=\"lucideX\" />\n </yuw-button>\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { HlmBreadcrumbImports } from 'yukit-web/helm/breadcrumb';\nimport type { YuwBreadcrumbItemDto } from './breadcrumb-item.interface';\n\n/**\n * Navigation breadcrumb bar displaying page hierarchy and links.\n *\n * Accepts an array of item objects (`items`), custom separator text (`separator`), and a required\n * accessible label (`ariaLabel`). The last item is announced as the current page\n * (`aria-current=\"page\"`); intermediate items render as links when they have an `href` and as\n * plain text otherwise.\n *\n * Usage:\n * ```html\n * <yuw-breadcrumb\n * [items]=\"[{ label: 'Inicio', href: '/' }, { label: 'Ajustes' }]\"\n * ariaLabel=\"Ruta de navegación\"\n * />\n * ```\n */\n@Component({\n selector: 'yuw-breadcrumb',\n imports: [...HlmBreadcrumbImports],\n templateUrl: './breadcrumb.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwBreadcrumbComponent {\n readonly ariaLabel = input.required<string>();\n readonly items = input.required<YuwBreadcrumbItemDto[]>();\n readonly separator = input('/');\n}\n","<nav hlmBreadcrumb [aria-label]=\"ariaLabel()\">\n <ol hlmBreadcrumbList>\n @for (item of items(); track $index; let last = $last) {\n <li hlmBreadcrumbItem>\n @if (last) {\n <span hlmBreadcrumbPage>{{ item.label }}</span>\n } @else if (item.href) {\n <a hlmBreadcrumbLink [link]=\"item.href\">{{ item.label }}</a>\n } @else {\n <span class=\"font-normal\">{{ item.label }}</span>\n }\n </li>\n @if (!last) {\n <li hlmBreadcrumbSeparator>{{ separator() }}</li>\n }\n }\n </ol>\n</nav>\n","export type YuwPaginationRangeItem = number | 'ellipsis';\n\n/**\n * Pure function on purpose: the page-range math has nothing to do with Angular, so it's testable\n * in isolation and keeps `pagination.component.ts` limited to wiring inputs/outputs.\n *\n * Always shows page 1 and the last page, plus the current page and its immediate neighbors,\n * collapsing any gap into a single `'ellipsis'` entry.\n */\nexport function getPaginationRange(page: number, totalPages: number): YuwPaginationRangeItem[] {\n if (totalPages <= 7) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const range: YuwPaginationRangeItem[] = [1];\n const start = Math.max(2, page - 1);\n const end = Math.min(totalPages - 1, page + 1);\n\n if (start > 2) {\n range.push('ellipsis');\n }\n\n for (let i = start; i <= end; i++) {\n range.push(i);\n }\n\n if (end < totalPages - 1) {\n range.push('ellipsis');\n }\n\n range.push(totalPages);\n\n return range;\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronLeft, lucideChevronRight } from '@ng-icons/lucide';\nimport {\n HlmPagination,\n HlmPaginationContent,\n HlmPaginationEllipsis,\n HlmPaginationItem,\n HlmPaginationLink,\n} from 'yukit-web/helm/pagination';\nimport type { YuwColorDto } from '../../interface/color.interface';\nimport { getPaginationRange } from './pagination.util';\n\n/**\n * Sizes accepted by `<yuw-pagination>`'s `size` input. Mirrors the helm button sizes so the\n * public API doesn't leak the helm's `ButtonVariants` type.\n */\nexport type YuwPaginationSizeDto = 'default' | 'xs' | 'sm' | 'lg' | 'icon' | 'icon-xs' | 'icon-sm' | 'icon-lg';\n\n/**\n * Pagination navigation bar for navigating multi-page content datasets.\n *\n * Controls two-way active page state `[(page)]`, accepts total pages (`totalPages`), accessible\n * previous/next/ellipsis labels, size and color theme.\n *\n * Usage:\n * ```html\n * <yuw-pagination\n * [(page)]=\"currentPage\"\n * [totalPages]=\"10\"\n * previousLabel=\"Página anterior\"\n * nextLabel=\"Página siguiente\"\n * ellipsisSrText=\"Más páginas\"\n * />\n * ```\n */\n@Component({\n selector: 'yuw-pagination',\n imports: [HlmPagination, HlmPaginationContent, HlmPaginationItem, HlmPaginationLink, HlmPaginationEllipsis, NgIcon],\n providers: [provideIcons({ lucideChevronLeft, lucideChevronRight })],\n host: {\n class: 'contents',\n '[attr.data-yuw-color]': 'color()',\n },\n templateUrl: './pagination.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwPaginationComponent {\n readonly ariaLabel = input.required<string>();\n readonly color = input<YuwColorDto>('primary');\n readonly ellipsisSrText = input.required<string>();\n readonly nextLabel = input.required<string>();\n readonly page = model.required<number>();\n readonly previousLabel = input.required<string>();\n readonly size = input<YuwPaginationSizeDto>('icon');\n readonly totalPages = input.required<number>();\n\n protected readonly range = computed(() => getPaginationRange(this.page(), this.totalPages()));\n\n protected goTo(target: number): void {\n if (target < 1 || target > this.totalPages() || target === this.page()) {\n return;\n }\n\n this.page.set(target);\n }\n}\n","<nav hlmPagination [aria-label]=\"ariaLabel()\">\n <ul hlmPaginationContent>\n <li hlmPaginationItem>\n <button\n type=\"button\"\n hlmPaginationLink\n [size]=\"size()\"\n [disabled]=\"page() <= 1\"\n [attr.aria-label]=\"previousLabel()\"\n (click)=\"goTo(page() - 1)\"\n >\n <ng-icon name=\"lucideChevronLeft\" class=\"rtl:rotate-180\" />\n </button>\n </li>\n\n @for (entry of range(); track $index) {\n <li hlmPaginationItem>\n @if (entry === 'ellipsis') {\n <hlm-pagination-ellipsis [srOnlyText]=\"ellipsisSrText()\" />\n } @else if (entry === page()) {\n <button\n type=\"button\"\n hlmPaginationLink\n isActive\n [size]=\"size()\"\n class=\"border-transparent bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground dark:border-transparent dark:bg-primary dark:hover:bg-primary\"\n (click)=\"goTo(entry)\"\n >\n {{ entry }}\n </button>\n } @else {\n <button type=\"button\" hlmPaginationLink [size]=\"size()\" (click)=\"goTo(entry)\">\n {{ entry }}\n </button>\n }\n </li>\n }\n\n <li hlmPaginationItem>\n <button\n type=\"button\"\n hlmPaginationLink\n [size]=\"size()\"\n [disabled]=\"page() >= totalPages()\"\n [attr.aria-label]=\"nextLabel()\"\n (click)=\"goTo(page() + 1)\"\n >\n <ng-icon name=\"lucideChevronRight\" class=\"rtl:rotate-180\" />\n </button>\n </li>\n </ul>\n</nav>\n","import { cva } from 'class-variance-authority';\nimport type { YuwFieldSizeDto } from '../interface/text-field.interface';\n\n/**\n * Height classes for field-shaped controls, keyed by `YuwFieldSizeDto`.\n *\n * Values are copied from `yuwButtonVariants`' `size` group on purpose, so a field and a button of\n * the same size name are the same number of pixels tall. Both helm shells the fields render\n * (`hlmInput` and `hlm-input-group`) hard-code `h-8`, so every size — `default` included — has to\n * emit a class; an empty string for the default would leave the helm height standing.\n *\n * @see yuwFieldMinHeightVariants for the wrapping variant used by the multi-select chips shell.\n */\nexport const yuwFieldSizeVariants = cva('', {\n variants: {\n size: {\n default: 'h-10',\n xs: 'h-7',\n sm: 'h-9',\n lg: 'h-11',\n } satisfies Record<YuwFieldSizeDto, string>,\n },\n defaultVariants: {\n size: 'default',\n },\n});\n\n/**\n * `min-height` counterpart of `yuwFieldSizeVariants`, for shells that grow past one row.\n *\n * The combobox chips shell wraps its selected chips onto further lines, so it is sized by the\n * helm's `min-h-8` rather than a fixed height; pinning `h-*` there would clip the second row.\n */\nexport const yuwFieldMinHeightVariants = cva('', {\n variants: {\n size: {\n default: 'min-h-10',\n xs: 'min-h-7',\n sm: 'min-h-9',\n lg: 'min-h-11',\n } satisfies Record<YuwFieldSizeDto, string>,\n },\n defaultVariants: {\n size: 'default',\n },\n});\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\nimport type { YuwComboboxOptionDto } from './combobox-option.interface';\n\n/** The `let-` context of a `*yuwComboboxItem` template. `$implicit` is the option itself, so\n * `let-option` works; `selected` is passed alongside because an item that renders its own\n * markup loses the default check glyph and often needs to show that state some other way. */\nexport interface YuwComboboxItemContext<TData = unknown> {\n $implicit: YuwComboboxOptionDto<TData>;\n option: YuwComboboxOptionDto<TData>;\n selected: boolean;\n}\n\n/**\n * Structural directive for custom option item templates in `yuw-combobox`.\n *\n * Exposes the option object (`let-option`) and selection state (`let-selected=\"selected\"`).\n *\n * Usage:\n * ```html\n * <yuw-combobox [options]=\"users\" [(value)]=\"userId\">\n * <ng-template yuwComboboxItem let-option let-selected=\"selected\">\n * <img [src]=\"option.data.avatar\" /> {{ option.label }}\n * </ng-template>\n * </yuw-combobox>\n * ```\n */\n@Directive({\n selector: '[yuwComboboxItem]',\n})\nexport class YuwComboboxItemDirective<TData = unknown> {\n readonly templateRef = inject<TemplateRef<YuwComboboxItemContext<TData>>>(TemplateRef);\n\n readonly typeOf = input<YuwComboboxOptionDto<TData>[] | undefined>(undefined, {\n alias: 'yuwComboboxItemTypeOf',\n });\n\n static ngTemplateContextGuard<TData>(\n _directive: YuwComboboxItemDirective<TData>,\n _context: unknown,\n ): _context is YuwComboboxItemContext<TData> {\n return true;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n ElementRef,\n input,\n model,\n viewChild,\n} from '@angular/core';\nimport { HlmComboboxContent, HlmComboboxImports } from 'yukit-web/helm/combobox';\nimport type { YuwFieldSizeDto } from '../../interface/text-field.interface';\nimport { yuwFieldMinHeightVariants, yuwFieldSizeVariants } from '../../utils/field-size.variants';\nimport { yuwButtonVariants } from '../button/button.variants';\nimport { provideValueAccessor, YuwValueAccessorBase } from '../../utils/value-accessor';\nimport { YuwComboboxItemDirective } from './combobox-item.directive';\nimport type { YuwComboboxOptionDto } from './combobox-option.interface';\n\nexport type YuwComboboxValue = string | string[] | undefined;\n\n/** Module-level counter for the fallback control id, so external labels always have a stable,\n * unique target even when the consumer doesn't pass `inputId`. */\nlet nextUniqueId = 0;\n\n/**\n * Searchable select combobox component supporting single or multiple selections, search filtering, and custom option rendering.\n *\n * Inputs / Models:\n * - `options`: Required array of option items (`YuwComboboxOptionDto<TData>[]`).\n * - `value`: Two-way selected value(s) (`string` for single mode, `string[]` for multiple mode).\n * Emits `valueChange` on every selection change.\n * - `size`: Control height (`'default'` 40px, `'xs'` 28px, `'sm'` 36px, `'lg'` 44px), matching the\n * `<yuw-button>` size of the same name. Applies to whichever control shape renders; the popover\n * panel and its inner search field keep their own compact sizing.\n * - `multiple`: Enables multi-selection mode with removable tags/chips.\n * - `disabled`: Disables combobox interaction.\n * - `placeholder`: Placeholder text when no option is selected.\n * - `searchPlaceholder`: Placeholder text inside the search field popover.\n * - `emptyText`: Message text displayed when search yields no matching options.\n * - `search`: Two-way search filter query string.\n * - `triggerAriaLabel`: Required accessible name for the icon-only popover trigger (the chevron\n * button). User-facing text — the consuming app is responsible for providing it translated.\n * Only rendered by the single-select input shape, but required in every mode so switching\n * modes never silently drops the label.\n * - `clearAriaLabel`: When set, the clear button is shown on the single-selection control and\n * this is its accessible name; when absent, there is no clear button. One input, one source of\n * truth. User-facing text — the consuming app is responsible for providing it translated.\n * - `inputId`: HTML `id` for the focusable control (the search input, or the trigger button when\n * `readonlyTrigger` is set), enabling external `<label for=\"...\">` association.\n * - `readonlyTrigger`: Renders control as a button showing selected label, placing search input inside popover.\n * - `invalid`: Forces invalid styling.\n *\n * `multiple` takes precedence over `readonlyTrigger`: when both are set the multi-select\n * chips shape renders and `readonlyTrigger` is ignored.\n *\n * Usage:\n * ```html\n * <yuw-combobox [options]=\"userOptions\" [(value)]=\"selectedUser\" placeholder=\"Select user...\"\n * triggerAriaLabel=\"Toggle options\" clearAriaLabel=\"Clear selection\" />\n * <yuw-combobox [options]=\"categoryOptions\" [(value)]=\"selectedCategories\" multiple\n * triggerAriaLabel=\"Toggle options\" />\n * ```\n */\n@Component({\n selector: 'yuw-combobox',\n imports: [...HlmComboboxImports, NgTemplateOutlet],\n providers: [provideValueAccessor(YuwComboboxComponent)],\n host: {\n class: 'contents',\n },\n templateUrl: './combobox.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwComboboxComponent<TData = unknown> extends YuwValueAccessorBase<YuwComboboxValue> {\n private readonly _panel = viewChild(HlmComboboxContent, { read: ElementRef });\n protected readonly itemTemplate = contentChild<YuwComboboxItemDirective<TData>>(YuwComboboxItemDirective);\n\n readonly clearAriaLabel = input<string | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly emptyText = input<string | undefined>(undefined);\n readonly inputId = input<string | undefined>(undefined);\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly options = input.required<YuwComboboxOptionDto<TData>[]>();\n readonly placeholder = input<string | undefined>(undefined);\n readonly readonlyTrigger = input(false, { transform: booleanAttribute });\n readonly search = model<string>('');\n readonly searchPlaceholder = input<string | undefined>(undefined);\n readonly size = input<YuwFieldSizeDto>('default');\n readonly triggerAriaLabel = input.required<string>();\n readonly value = model<YuwComboboxValue>(undefined);\n\n private readonly _generatedId = `yuw-combobox-${++nextUniqueId}`;\n protected readonly _itemToString = (value: string): string => this._labelByValue().get(value) ?? value;\n\n protected readonly _chipsClass = computed(() => yuwFieldMinHeightVariants({ size: this.size() }));\n protected readonly _clearVisible = computed(() => this.clearAriaLabel() !== undefined);\n protected readonly _controlId = computed(() => this.inputId() ?? this._generatedId);\n protected readonly _disabled = computed(() => this._isDisabled(this.disabled()));\n protected readonly _fieldClass = computed(() => yuwFieldSizeVariants({ size: this.size() }));\n private readonly _labelByValue = computed(\n () => new Map(this.options().map((option) => [option.value, option.label] as const)),\n );\n protected readonly _multipleValue = computed(() => {\n const value = this.value();\n if (value === undefined) {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n });\n protected readonly _selectedChips = computed(() => {\n const labels = this._labelByValue();\n return this._multipleValue().map((value) => ({ value, label: labels.get(value) ?? value }));\n });\n protected readonly _selectedValues = computed(() => new Set(this._multipleValue()));\n protected readonly _singleValue = computed(() => {\n const value = this.value();\n return Array.isArray(value) ? value[0] : value;\n });\n protected readonly _triggerClass = computed(() => yuwButtonVariants({ size: this.size() }));\n\n protected _emptyValue(): YuwComboboxValue {\n return this.multiple() ? [] : undefined;\n }\n\n protected _onFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget;\n\n if (next instanceof Node) {\n if (event.currentTarget instanceof Node && event.currentTarget.contains(next)) {\n return;\n }\n\n const panel = this._panel()?.nativeElement as HTMLElement | undefined;\n\n if (panel?.contains(next)) {\n return;\n }\n }\n\n this._onBlur();\n }\n\n protected onValueChange(next: YuwComboboxValue | null): void {\n this._commit(next ?? this._emptyValue());\n }\n}\n","<ng-template #itemContent let-option>\n @if (itemTemplate(); as custom) {\n <ng-container\n [ngTemplateOutlet]=\"custom.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: option,\n option: option,\n selected: _selectedValues().has(option.value),\n }\"\n />\n } @else {\n {{ option.label }}\n }\n</ng-template>\n\n@if (multiple()) {\n <hlm-combobox-multiple\n [disabled]=\"_disabled()\"\n [value]=\"_multipleValue()\"\n (valueChange)=\"onValueChange($event)\"\n [(search)]=\"search\"\n [itemToString]=\"_itemToString\"\n (focusout)=\"_onFocusOut($event)\"\n >\n <hlm-combobox-chips [forceInvalid]=\"invalid()\" [class]=\"_chipsClass()\">\n @for (chip of _selectedChips(); track chip.value) {\n <hlm-combobox-chip [value]=\"chip.value\">{{ chip.label }}</hlm-combobox-chip>\n }\n <input hlmComboboxChipInput [id]=\"_controlId()\" [placeholder]=\"placeholder() ?? ''\" />\n </hlm-combobox-chips>\n\n <hlm-combobox-content *hlmComboboxPortal>\n <div hlmComboboxList>\n @for (option of options(); track option.value) {\n <hlm-combobox-item [value]=\"option.value\" [disabled]=\"option.disabled ?? false\">\n <ng-container [ngTemplateOutlet]=\"itemContent\" [ngTemplateOutletContext]=\"{ $implicit: option }\" />\n </hlm-combobox-item>\n }\n </div>\n <hlm-combobox-empty>{{ emptyText() ?? '' }}</hlm-combobox-empty>\n </hlm-combobox-content>\n </hlm-combobox-multiple>\n} @else {\n <hlm-combobox\n [disabled]=\"_disabled()\"\n [value]=\"_singleValue()\"\n (valueChange)=\"onValueChange($event)\"\n [(search)]=\"search\"\n [itemToString]=\"_itemToString\"\n (focusout)=\"_onFocusOut($event)\"\n >\n @if (readonlyTrigger()) {\n <hlm-combobox-trigger\n [buttonId]=\"_controlId()\"\n [forceInvalid]=\"invalid()\"\n [class]=\"_triggerClass()\"\n class=\"w-full justify-between items-center\"\n >\n <hlm-combobox-value [placeholder]=\"placeholder() ?? ''\" />\n </hlm-combobox-trigger>\n } @else {\n <hlm-combobox-input\n [inputId]=\"_controlId()\"\n [placeholder]=\"placeholder() ?? ''\"\n [showClear]=\"_clearVisible()\"\n [clearAriaLabel]=\"clearAriaLabel() ?? ''\"\n [triggerAriaLabel]=\"triggerAriaLabel()\"\n [forceInvalid]=\"invalid()\"\n [class]=\"_fieldClass()\"\n />\n }\n\n <hlm-combobox-content *hlmComboboxPortal>\n @if (readonlyTrigger()) {\n <hlm-combobox-input\n [placeholder]=\"searchPlaceholder() ?? ''\"\n [showClear]=\"_clearVisible()\"\n [clearAriaLabel]=\"clearAriaLabel() ?? ''\"\n [triggerAriaLabel]=\"triggerAriaLabel()\"\n [showTrigger]=\"false\"\n />\n }\n <div hlmComboboxList>\n @for (option of options(); track option.value) {\n <hlm-combobox-item [value]=\"option.value\" [disabled]=\"option.disabled ?? false\">\n <ng-container [ngTemplateOutlet]=\"itemContent\" [ngTemplateOutletContext]=\"{ $implicit: option }\" />\n </hlm-combobox-item>\n }\n </div>\n <hlm-combobox-empty>{{ emptyText() ?? '' }}</hlm-combobox-empty>\n </hlm-combobox-content>\n </hlm-combobox>\n}\n","import { Directive } from '@angular/core';\nimport { HlmAccordion } from 'yukit-web/helm/accordion';\n\n/**\n * Container directive for collapsible accordion items.\n *\n * Renders a full-width flexible vertical container for `yuw-accordion-item` elements.\n * Supports single (`type=\"single\"`) or multiple (`type=\"multiple\"`) expandable items,\n * as well as vertical or horizontal orientation (`orientation`).\n *\n * Direct child items (`yuw-accordion-item`) can be declared statically or rendered dynamically\n * using `@for`.\n *\n * Extends `HlmAccordion` (instead of re-applying `BrnAccordion` and copying the helm's classes\n * by hand) so the helm's `data-slot`, classes and its `BrnAccordion` host directive — including\n * the forwarded `type`/`orientation` inputs — are all inherited. Forwarding those inputs through\n * a `hostDirectives` entry on `HlmAccordion` is not possible: Angular only allows exposing\n * inputs a host directive declares itself, and the helm exposes them transitively from\n * `BrnAccordion`.\n */\n@Directive({\n selector: 'yuw-accordion',\n})\nexport class YuwAccordion extends HlmAccordion {}\n","import { Directive } from '@angular/core';\nimport { HlmAccordionItem } from 'yukit-web/helm/accordion';\n\n/**\n * Directive representing an individual section/item within a `yuw-accordion`.\n *\n * Encloses a `yuw-accordion-trigger` button and a `yuw-accordion-content` panel.\n * Accepts `isOpened` (boolean) to control open state and `disabled` (boolean) to disable\n * interaction. Emits `openedChange` when the item is expanded or collapsed.\n *\n * Extends `HlmAccordionItem` (instead of re-applying `BrnAccordionItem` and copying the helm's\n * classes by hand) so the helm's `data-slot`, classes and its `BrnAccordionItem` host directive —\n * including the forwarded `isOpened`/`disabled` inputs and `openedChange` output — are all\n * inherited. Forwarding those through a `hostDirectives` entry on `HlmAccordionItem` is not\n * possible: Angular only allows exposing inputs/outputs a host directive declares itself, and\n * the helm exposes them transitively from `BrnAccordionItem`.\n */\n@Directive({\n selector: 'yuw-accordion-item',\n})\nexport class YuwAccordionItem extends HlmAccordionItem {}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { HlmAccordionTrigger } from 'yukit-web/helm/accordion';\n\n/**\n * Interactive header button for expanding or collapsing a `yuw-accordion-item`.\n *\n * Project content inside to serve as the trigger label (text, icons, badges, or custom markup).\n *\n * Inputs:\n * - `triggerClass`: Extra classes for the inner trigger `<button>`; the helm merges them last\n * (via tailwind-merge), so they win over its defaults.\n */\n@Component({\n selector: 'yuw-accordion-trigger',\n imports: [HlmAccordionTrigger],\n host: {\n class: 'contents',\n },\n templateUrl: './accordion-trigger.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwAccordionTriggerComponent {\n readonly triggerClass = input<string>('');\n}\n","<hlm-accordion-trigger [triggerClass]=\"triggerClass()\">\n <ng-content />\n</hlm-accordion-trigger>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { HlmAccordionContent } from 'yukit-web/helm/accordion';\n\n/**\n * Collapsible panel container for a `yuw-accordion-item`.\n *\n * Projects body content revealed when the item is expanded (supports text, custom markup, or nested components).\n */\n@Component({\n selector: 'yuw-accordion-content',\n imports: [HlmAccordionContent],\n host: {\n class: 'contents',\n },\n templateUrl: './accordion-content.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwAccordionContentComponent {}\n","<hlm-accordion-content>\n <ng-content />\n</hlm-accordion-content>\n","import { YuwAccordion } from './accordion.directive';\nimport { YuwAccordionContentComponent } from './accordion-content.component';\nimport { YuwAccordionItem } from './accordion-item.directive';\nimport { YuwAccordionTriggerComponent } from './accordion-trigger.component';\n\n/** Bundle for consumers who want every `yuw-accordion-*` piece in one `imports: [...]` entry —\n * same shape as Spartan's own `HlmAccordionImports`. Each piece is still exported and importable\n * on its own for consumers who only need a subset. */\nexport const YuwAccordionImports = [\n YuwAccordion,\n YuwAccordionItem,\n YuwAccordionTriggerComponent,\n YuwAccordionContentComponent,\n] as const;\n","import { Directive } from '@angular/core';\n\n/**\n * Slot directive for adding content (icons, text prefixes) on the left side of a `yuw-input` or `yuw-textarea`.\n */\n@Directive({\n selector: 'yuw-left-addon',\n})\nexport class YuwLeftAddonDirective {}\n\n/**\n * Slot directive for adding content (icons, text suffixes, action buttons) on the right side of a `yuw-input` or `yuw-textarea`.\n */\n@Directive({\n selector: 'yuw-right-addon',\n})\nexport class YuwRightAddonDirective {}\n\nexport const YuwInputAddonImports = [YuwLeftAddonDirective, YuwRightAddonDirective] as const;\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n input,\n model,\n output,\n} from '@angular/core';\nimport { HlmInput } from 'yukit-web/helm/input';\nimport { HlmInputGroup, HlmInputGroupAddon, HlmInputGroupInput } from 'yukit-web/helm/input-group';\nimport { YuwLeftAddonDirective, YuwRightAddonDirective } from './input-addon.directive';\nimport type {\n YuwFieldSizeDto,\n YuwInputModeDto,\n YuwInputTypeDto,\n YuwTextFieldContract,\n} from '../../interface/text-field.interface';\nimport { cn } from '../../utils/cn';\nimport { yuwFieldSizeVariants } from '../../utils/field-size.variants';\nimport { provideValueAccessor, YuwValueAccessorBase } from '../../utils/value-accessor';\n\n/** Module-level counter backing each instance's stable fallback `id`. */\nlet nextYuwInputId = 0;\n\n/**\n * Single-line text input control supporting two-way value binding, form controls (`formControlName`, `ngModel`),\n * validation styling, and left/right addon slots.\n *\n * Inputs / Models:\n * - `value`: Two-way text string.\n * - `inputId`: `id` applied to the native input, for external `<label for>` association.\n * - `type`: HTML input type (`'text'`, `'email'`, `'number'`, etc.). Default is `'text'`.\n * - `size`: Control height (`'default'` 40px, `'xs'` 28px, `'sm'` 36px, `'lg'` 44px), matching the\n * `<yuw-button>` size of the same name. Default is `'default'`.\n * - `inputmode`: Virtual keyboard hint (e.g. `'numeric'`).\n * - `disabled`: Disables input interaction.\n * - `readonly`: Makes the field read-only.\n * - `required`: Marks the field as required.\n * - `invalid`: Forces invalid styling.\n * - `name`: HTML `name` attribute.\n * - `autocomplete`: Native `autocomplete` attribute.\n * - `maxlength`: Hard cap on character count, enforced natively by the browser.\n * - `placeholder`: Hint text shown inside the empty field.\n * - `class`: Extra classes merged onto the visual root (the input, or the input group when addons are present).\n *\n * Outputs:\n * - `committed`: Emits the current value on the native `change` event (blur/enter).\n *\n * Usage:\n * ```html\n * <yuw-input [(value)]=\"username\" placeholder=\"Enter username...\" />\n *\n * <yuw-input formControlName=\"email\" type=\"email\">\n * <yuw-left-addon><ng-icon name=\"lucideMail\" /></yuw-left-addon>\n * </yuw-input>\n * ```\n */\n@Component({\n selector: 'yuw-input',\n imports: [HlmInput, HlmInputGroup, HlmInputGroupInput, HlmInputGroupAddon],\n providers: [provideValueAccessor(YuwInputComponent)],\n host: {\n class: 'contents',\n },\n templateUrl: './input.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwInputComponent extends YuwValueAccessorBase<string> implements YuwTextFieldContract {\n private readonly _leftAddons = contentChildren(YuwLeftAddonDirective);\n private readonly _rightAddons = contentChildren(YuwRightAddonDirective);\n\n readonly autocomplete = input<string | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly inputId = input<string | undefined>(undefined);\n readonly inputmode = input<YuwInputModeDto | undefined>(undefined);\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly maxlength = input<number | undefined>(undefined);\n readonly name = input<string | undefined>(undefined);\n readonly placeholder = input<string | undefined>(undefined);\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n readonly size = input<YuwFieldSizeDto>('default');\n readonly type = input<YuwInputTypeDto>('text');\n readonly userClass = input<string>('', { alias: 'class' });\n readonly value = model<string>('');\n\n readonly committed = output<string>();\n\n protected readonly _autoId = `yuw-input-${++nextYuwInputId}`;\n\n protected readonly _classes = computed(() => cn(yuwFieldSizeVariants({ size: this.size() }), this.userClass()));\n protected readonly _disabled = computed(() => this._isDisabled(this.disabled()));\n protected readonly _hasLeftAddon = computed(() => this._leftAddons().length > 0);\n protected readonly _hasRightAddon = computed(() => this._rightAddons().length > 0);\n protected readonly _hasAddons = computed(() => this._hasLeftAddon() || this._hasRightAddon());\n protected readonly _inputId = computed(() => this.inputId() ?? this._autoId);\n\n protected _emptyValue(): string {\n return '';\n }\n\n protected onChange(): void {\n this.committed.emit(this.value());\n }\n\n protected onInput(event: Event): void {\n this._commit((event.target as HTMLInputElement).value);\n }\n}\n","@if (_hasAddons()) {\n <hlm-input-group [class]=\"_classes()\">\n @if (_hasLeftAddon()) {\n <hlm-input-group-addon align=\"inline-start\">\n <ng-content select=\"yuw-left-addon\" />\n </hlm-input-group-addon>\n }\n\n <input\n hlmInputGroupInput\n [id]=\"_inputId()\"\n [type]=\"type()\"\n [attr.inputmode]=\"inputmode()\"\n [value]=\"value()\"\n [disabled]=\"_disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [forceInvalid]=\"invalid()\"\n [attr.name]=\"name()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.maxlength]=\"maxlength()\"\n [attr.placeholder]=\"placeholder()\"\n (input)=\"onInput($event)\"\n (change)=\"onChange()\"\n (blur)=\"_onBlur()\"\n />\n\n @if (_hasRightAddon()) {\n <hlm-input-group-addon align=\"inline-end\">\n <ng-content select=\"yuw-right-addon\" />\n </hlm-input-group-addon>\n }\n </hlm-input-group>\n} @else {\n <input\n hlmInput\n [class]=\"_classes()\"\n [id]=\"_inputId()\"\n [type]=\"type()\"\n [attr.inputmode]=\"inputmode()\"\n [value]=\"value()\"\n [disabled]=\"_disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [forceInvalid]=\"invalid()\"\n [attr.name]=\"name()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.maxlength]=\"maxlength()\"\n [attr.placeholder]=\"placeholder()\"\n (input)=\"onInput($event)\"\n (change)=\"onChange()\"\n (blur)=\"_onBlur()\"\n />\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n input,\n model,\n output,\n} from '@angular/core';\nimport { HlmInputGroup, HlmInputGroupAddon, HlmInputGroupTextarea } from 'yukit-web/helm/input-group';\nimport { HlmTextarea } from 'yukit-web/helm/textarea';\nimport { YuwLeftAddonDirective, YuwRightAddonDirective } from '../input/input-addon.directive';\nimport type { YuwTextFieldContract } from '../../interface/text-field.interface';\nimport { cn } from '../../utils/cn';\nimport { provideValueAccessor, YuwValueAccessorBase } from '../../utils/value-accessor';\n\nlet nextYuwTextareaId = 0;\n\n/**\n * Multi-line text input control supporting auto-growing content, character limits, row count, and form integration (`ngModel`, `formControlName`).\n *\n * Inputs / Models:\n * - `value`: Two-way text string.\n * - `inputId`: `id` applied to the native textarea, for external `<label for>` association.\n * - `disabled`: Disables input interaction.\n * - `readonly`: Makes the field read-only.\n * - `required`: Marks the field as required.\n * - `invalid`: Forces invalid styling.\n * - `name`: HTML `name` attribute.\n * - `autocomplete`: Native `autocomplete` attribute.\n * - `rows`: Fallback visible height in lines where `field-sizing` is unsupported; ignored otherwise.\n * - `maxlength`: Hard cap on character count, enforced natively by the browser.\n * - `placeholder`: Hint text shown inside the empty field.\n * - `class`: Extra classes merged onto the visual root (the textarea, or the input group when addons are present).\n *\n * Outputs:\n * - `committed`: Emits the current value on the native `change` event (blur/enter).\n *\n * Usage:\n * ```html\n * <yuw-textarea [(value)]=\"bio\" placeholder=\"Write your biography...\" [rows]=\"4\" />\n * <yuw-textarea formControlName=\"comments\" [maxlength]=\"500\" />\n * ```\n */\n@Component({\n selector: 'yuw-textarea',\n imports: [HlmTextarea, HlmInputGroup, HlmInputGroupTextarea, HlmInputGroupAddon],\n providers: [provideValueAccessor(YuwTextareaComponent)],\n host: {\n class: 'contents',\n },\n templateUrl: './textarea.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwTextareaComponent extends YuwValueAccessorBase<string> implements YuwTextFieldContract {\n private readonly _leftAddons = contentChildren(YuwLeftAddonDirective);\n private readonly _rightAddons = contentChildren(YuwRightAddonDirective);\n\n readonly autocomplete = input<string | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly inputId = input<string | undefined>(undefined);\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly maxlength = input<number | undefined>(undefined);\n readonly name = input<string | undefined>(undefined);\n readonly placeholder = input<string | undefined>(undefined);\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n readonly rows = input<number | undefined>(undefined);\n readonly userClass = input<string>('', { alias: 'class' });\n readonly value = model<string>('');\n\n readonly committed = output<string>();\n\n protected readonly _autoId = `yuw-textarea-${++nextYuwTextareaId}`;\n\n protected readonly _classes = computed(() => cn(this.userClass()));\n protected readonly _disabled = computed(() => this._isDisabled(this.disabled()));\n protected readonly _hasLeftAddon = computed(() => this._leftAddons().length > 0);\n protected readonly _hasRightAddon = computed(() => this._rightAddons().length > 0);\n protected readonly _hasAddons = computed(() => this._hasLeftAddon() || this._hasRightAddon());\n protected readonly _inputId = computed(() => this.inputId() ?? this._autoId);\n\n protected _emptyValue(): string {\n return '';\n }\n\n protected onChange(): void {\n this.committed.emit(this.value());\n }\n\n protected onInput(event: Event): void {\n this._commit((event.target as HTMLTextAreaElement).value);\n }\n}\n","<!-- The control is repeated in both branches on purpose: a shared ng-template cannot express it,\n because the two variants differ in a statically-matched directive (hlmInputGroupTextarea vs\n hlmTextarea) and Angular resolves directives at compile time — a single template would drag the\n group's reset classes into the bare case (or vice versa). Keep the binding lists in sync. -->\n@if (_hasAddons()) {\n <hlm-input-group [class]=\"_classes()\">\n @if (_hasLeftAddon()) {\n <hlm-input-group-addon align=\"block-start\">\n <ng-content select=\"yuw-left-addon\" />\n </hlm-input-group-addon>\n }\n\n <textarea\n hlmInputGroupTextarea\n [id]=\"_inputId()\"\n [value]=\"value()\"\n [disabled]=\"_disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [forceInvalid]=\"invalid()\"\n [attr.rows]=\"rows()\"\n [attr.maxlength]=\"maxlength()\"\n [attr.name]=\"name()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.placeholder]=\"placeholder()\"\n (input)=\"onInput($event)\"\n (change)=\"onChange()\"\n (blur)=\"_onBlur()\"\n ></textarea>\n\n @if (_hasRightAddon()) {\n <hlm-input-group-addon align=\"block-end\">\n <ng-content select=\"yuw-right-addon\" />\n </hlm-input-group-addon>\n }\n </hlm-input-group>\n} @else {\n <textarea\n hlmTextarea\n [class]=\"_classes()\"\n [id]=\"_inputId()\"\n [value]=\"value()\"\n [disabled]=\"_disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [forceInvalid]=\"invalid()\"\n [attr.rows]=\"rows()\"\n [attr.maxlength]=\"maxlength()\"\n [attr.name]=\"name()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.placeholder]=\"placeholder()\"\n (input)=\"onInput($event)\"\n (change)=\"onChange()\"\n (blur)=\"_onBlur()\"\n ></textarea>\n}\n","import { cva } from 'class-variance-authority';\nimport type { YuwFieldSizeDto } from '../../interface/text-field.interface';\n\n/**\n * Class map for the collapsible wrapper of `yuw-search-input`.\n *\n * The wrapper exists because the component host is `display: contents` and cannot own the animated\n * width itself. Width animates as `max-width`, bound inline from `expandedWidth`, so the same\n * element can be a 32px square when collapsed and the full field when expanded.\n *\n * Deliberately **not** `overflow-hidden`: the helm draws the group's focus ring outside the border\n * box, so clipping here would crop it. The input clips itself instead — see\n * `searchInputFieldVariants`.\n *\n * The anchoring and transition classes hang off `collapseFrom` rather than the cva base, because a\n * non-collapsible instance renders the same wrapper and must stay a plain box with no transition.\n * The anchor is an auto margin rather than `position: absolute`, so the control keeps participating\n * in its parent's layout.\n */\nexport const searchInputCollapsibleVariants = cva('w-full', {\n variants: {\n collapseFrom: {\n left: 'me-auto transition-[max-width] duration-300 ease-out motion-reduce:transition-none',\n right: 'ms-auto transition-[max-width] duration-300 ease-out motion-reduce:transition-none',\n },\n expanded: {\n true: '',\n false: '',\n },\n size: {\n default: '',\n xs: '',\n sm: '',\n lg: '',\n } satisfies Record<YuwFieldSizeDto, string>,\n },\n compoundVariants: [\n { expanded: false, size: 'default', class: 'max-w-10' },\n { expanded: false, size: 'xs', class: 'max-w-7' },\n { expanded: false, size: 'sm', class: 'max-w-9' },\n { expanded: false, size: 'lg', class: 'max-w-11' },\n ],\n defaultVariants: {\n expanded: true,\n size: 'default',\n },\n});\n\n/**\n * Classes for the search icon slot.\n *\n * A fixed square matching the control height, never a share of the wrapper: sizing it with `w-full`\n * would make it track the wrapper mid-transition, sliding the icon toward the middle and snapping it\n * back at the end. `shrink-0` holds that width against the sibling input's `flex-1`.\n *\n * The width is keyed by `size` through compound variants so the collapsed control stays square at\n * every size, mirroring the `icon-*` sizes of `<yuw-button>`.\n *\n * `ps-0` cancels the addon's own `ps-2`, and `has-[>button]:ms-0` cancels the helm's\n * `has-[>button]:ms-[-0.3rem]`; the prefix has to be repeated because tailwind-merge keys conflicts\n * per variant prefix, so a bare `ms-0` would not displace it.\n */\nexport const searchInputIconVariants = cva('', {\n variants: {\n collapsible: {\n true: 'shrink-0 justify-center ps-0 has-[>button]:ms-0',\n false: '',\n },\n size: {\n default: '',\n xs: '',\n sm: '',\n lg: '',\n } satisfies Record<YuwFieldSizeDto, string>,\n },\n compoundVariants: [\n { collapsible: true, size: 'default', class: 'w-10' },\n { collapsible: true, size: 'xs', class: 'w-7' },\n { collapsible: true, size: 'sm', class: 'w-9' },\n { collapsible: true, size: 'lg', class: 'w-11' },\n ],\n defaultVariants: {\n collapsible: false,\n size: 'default',\n },\n});\n\n/**\n * Classes for the native input while the control is collapsible.\n *\n * The input clips itself so the wrapper doesn't have to (which would take the focus ring with it).\n * `min-w-0` is what lets it shrink: a flex item defaults to `min-width: auto` and would otherwise\n * hold the collapsed wrapper open past 32px.\n */\nexport const searchInputFieldVariants = cva('', {\n variants: {\n collapsible: {\n true: 'min-w-0 overflow-hidden',\n false: '',\n },\n },\n defaultVariants: {\n collapsible: false,\n },\n});\n\n/**\n * Class map for the input group shell.\n *\n * `transparent` strips the helm's resting border and background. Each helm class is countered in\n * the same variant prefix it was declared with (`dark:`, and the `has-[…:disabled]:` stack), because\n * tailwind-merge resolves conflicts per prefix and a bare `bg-transparent` would leave the\n * prefixed helm declarations standing.\n *\n * The focus ring and the invalid-state ring are deliberately left in place: they are feedback, not\n * chrome, and a transparent field still has to show where focus is and when it is invalid.\n */\nexport const searchInputGroupVariants = cva('', {\n variants: {\n transparent: {\n true: 'border-transparent bg-transparent dark:bg-transparent has-[[data-slot=input-group-control]:disabled]:bg-transparent dark:has-[[data-slot=input-group-control]:disabled]:bg-transparent',\n false: '',\n },\n },\n defaultVariants: {\n transparent: false,\n },\n});\n\n/**\n * Size override for the collapsed expand button.\n *\n * The helm `hlmInputGroupButton` caps its `size` input at `icon-sm` (`size-8`), so the input is left\n * at `icon-sm` and the real dimensions come from here instead — the same approach `<yuw-switch>`\n * takes with its track. Without this the tap target stays 32px inside a 44px square at `lg`, leaving\n * a ring of dead space, and the glyph stops tracking the control.\n *\n * Each square is the control height minus 2px, one for the group's border on each side. Filling the\n * full height instead would paint the button's `hover:bg-muted` over that border and make it vanish\n * on hover — the addon cannot be used as the reference box either, since it is `h-auto` and stretches\n * taller than the group.\n *\n * Only the box scales; the glyph is left alone deliberately. The template passes `size=\"icon-sm\"`\n * rather than letting the helm default to `xs`, because the `xs` variant declares its own 14px glyph\n * while `icon-sm` declares none — so the icon falls through to `hlmBtn`'s `--spacing(4)`, the same\n * 16px the addon renders when the control is expanded. Without that the icon changes size as the\n * control collapses.\n *\n * Overriding the glyph from here does not work: the helm registers its classes through `classes()`,\n * which merges its own sources last, so a `[class]` binding loses that particular conflict.\n *\n * `pointer-events-auto` is in the base because the collapsed icon slot sets `pointer-events-none` on\n * its subtree; the button is the one thing inside it that must stay clickable.\n */\nexport const searchInputExpandButtonVariants = cva('pointer-events-auto', {\n variants: {\n size: {\n default: 'size-[38px]',\n xs: 'size-[26px]',\n sm: 'size-[34px]',\n lg: 'size-[42px]',\n } satisfies Record<YuwFieldSizeDto, string>,\n },\n defaultVariants: {\n size: 'default',\n },\n});\n","import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n Injector,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideSearch, lucideX } from '@ng-icons/lucide';\nimport { HlmInputGroupImports } from 'yukit-web/helm/input-group';\nimport type { YuwSearchInputCollapseFromDto } from './search-input-collapse.interface';\nimport {\n searchInputCollapsibleVariants,\n searchInputExpandButtonVariants,\n searchInputFieldVariants,\n searchInputGroupVariants,\n searchInputIconVariants,\n} from './search-input.variants';\nimport type { YuwFieldSizeDto, YuwTextFieldContract } from '../../interface/text-field.interface';\nimport { cn } from '../../utils/cn';\nimport { yuwFieldSizeVariants } from '../../utils/field-size.variants';\nimport { provideValueAccessor, YuwValueAccessorBase } from '../../utils/value-accessor';\n\n/** Module-level counter backing each instance's stable fallback `id`. */\nlet nextYuwSearchInputId = 0;\n\n/**\n * Search input control featuring a leading search icon, optional clear button, an optional\n * collapsible mode, and form integration (`ngModel`, `formControlName`).\n *\n * Inputs / Models:\n * - `value`: Two-way search query string.\n * - `inputId`: `id` applied to the native input, for external `<label for>` association.\n * - `disabled`: Disables input interaction.\n * - `readonly`: Makes the field read-only.\n * - `required`: Marks the field as required.\n * - `invalid`: Forces invalid styling.\n * - `name`: HTML `name` attribute.\n * - `autocomplete`: Native `autocomplete` attribute.\n * - `placeholder`: Hint text shown inside the empty field.\n * - `clearAriaLabel`: Accessible name for the clear button. Supplying it enables the clear button; omit to hide it.\n * - `collapseFrom`: Enables collapsible mode and picks the anchored edge — `'right'` collapses back\n * towards the right edge (the field grows leftwards), `'left'` mirrors it. Omit for a field that\n * is always expanded.\n * - `expandAriaLabel`: Accessible name for the collapsed search button. Required to make collapsible\n * mode usable, since the collapsed control has no visible text — user-facing text the consuming\n * app is responsible for translating.\n * - `expandedWidth`: CSS width the field animates out to, e.g. `'18rem'`. Default is `'16rem'`.\n * Collapsible mode only.\n * - `size`: Control height, matching the `<yuw-button>` of the same name. While collapsed the\n * control is a square of that height.\n * - `transparent`: Removes the field's resting border and background so it sits directly on its\n * container — for search inside a toolbar or a colored surface. The focus and invalid rings stay.\n * - `class`: Extra classes merged onto the input group.\n *\n * Outputs:\n * - `searched`: Emits the current query string on every keystroke.\n * - `committed`: Emits the current query string when the user presses Enter — for searches that\n * hit a server on explicit submit rather than on every keystroke.\n *\n * ## Collapsible mode\n *\n * Collapsed, the control is a square icon button; activating it animates the same element out to its\n * expanded width and focuses the field. It collapses again on Escape, or on blur while the query is\n * empty — a blur with text still in the field keeps the field open, because collapsing would hide a\n * query the user can no longer see or edit.\n *\n * Button and field are one element tree rather than two swapped views, so the transition is\n * continuous and the input is never re-created mid-animation (which would drop focus and the caret).\n *\n * Usage:\n * ```html\n * <yuw-search-input [(value)]=\"query\" placeholder=\"Search items...\" clearAriaLabel=\"Clear search\" (searched)=\"onSearch($event)\" />\n *\n * <yuw-search-input\n * [(value)]=\"query\"\n * collapseFrom=\"right\"\n * * expandAriaLabel=\"Open search\"\n * placeholder=\"Search items...\"\n * />\n * ```\n */\n@Component({\n selector: 'yuw-search-input',\n imports: [...HlmInputGroupImports, NgIcon],\n providers: [provideValueAccessor(YuwSearchInputComponent), provideIcons({ lucideSearch, lucideX })],\n host: {\n class: 'contents',\n },\n templateUrl: './search-input.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwSearchInputComponent extends YuwValueAccessorBase<string> implements YuwTextFieldContract {\n private readonly _injector = inject(Injector);\n\n private readonly _input = viewChild.required<ElementRef<HTMLInputElement>>('searchInput');\n\n readonly autocomplete = input<string | undefined>(undefined);\n readonly clearAriaLabel = input<string | undefined>(undefined);\n readonly collapseFrom = input<YuwSearchInputCollapseFromDto | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly expandAriaLabel = input<string | undefined>(undefined);\n readonly expandedWidth = input<string>('16rem');\n readonly inputId = input<string | undefined>(undefined);\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly name = input<string | undefined>(undefined);\n readonly placeholder = input<string | undefined>(undefined);\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n readonly size = input<YuwFieldSizeDto>('default');\n readonly transparent = input(false, { transform: booleanAttribute });\n readonly userClass = input<string>('', { alias: 'class' });\n readonly value = model<string>('');\n\n readonly committed = output<string>();\n readonly searched = output<string>();\n\n protected readonly _autoId = `yuw-search-input-${++nextYuwSearchInputId}`;\n private readonly _open = signal(false);\n\n protected readonly _classes = computed(() =>\n cn(\n yuwFieldSizeVariants({ size: this.size() }),\n searchInputGroupVariants({ transparent: this.transparent() }),\n this.userClass(),\n ),\n );\n protected readonly _collapsible = computed(() => this.collapseFrom() !== undefined);\n protected readonly _disabled = computed(() => this._isDisabled(this.disabled()));\n protected readonly _expandButtonClasses = computed(() => searchInputExpandButtonVariants({ size: this.size() }));\n protected readonly _expanded = computed(() => !this._collapsible() || this._open());\n protected readonly _fieldClasses = computed(() => searchInputFieldVariants({ collapsible: this._collapsible() }));\n protected readonly _iconClasses = computed(() =>\n searchInputIconVariants({ collapsible: this._collapsible(), size: this.size() }),\n );\n protected readonly _inputId = computed(() => this.inputId() ?? this._autoId);\n protected readonly _showClear = computed(\n () =>\n this.clearAriaLabel() !== undefined &&\n this.value().length > 0 &&\n this._expanded() &&\n !this._disabled() &&\n !this.readonly(),\n );\n protected readonly _showExpandButton = computed(() => !this._expanded() && !this._disabled());\n protected readonly _wrapperClasses = computed(() =>\n searchInputCollapsibleVariants({\n collapseFrom: this.collapseFrom(),\n expanded: this._expanded(),\n size: this.size(),\n }),\n );\n protected readonly _wrapperMaxWidth = computed(() => (this._expanded() ? this.expandedWidth() : null));\n\n protected _emptyValue(): string {\n return '';\n }\n\n protected onBlur(): void {\n this._onBlur();\n if (this._collapsible() && this.value().length === 0) {\n this._open.set(false);\n }\n }\n\n protected onClear(): void {\n this._commit('');\n this.searched.emit('');\n this._input().nativeElement.focus();\n }\n\n protected onEnter(): void {\n this.committed.emit(this.value());\n }\n\n protected onEscape(): void {\n if (!this._collapsible()) {\n return;\n }\n this._open.set(false);\n this._input().nativeElement.blur();\n }\n\n /**\n * Focus is deferred to the next render: while collapsed the input carries `tabindex=\"-1\"` and\n * `aria-hidden`, and focusing it before those bindings clear would be dropped by the browser.\n */\n protected onExpand(): void {\n this._open.set(true);\n afterNextRender(() => this._input().nativeElement.focus(), { injector: this._injector });\n }\n\n /**\n * Expands when the collapsed button receives focus, so reaching it with Tab opens the field\n * instead of leaving the user on a button they must also activate.\n *\n * Gated on `:focus-visible` to stay out of a focus loop: collapsing on blur remounts this button,\n * and if the browser then lands focus on it, an ungated handler would re-expand and the control\n * could never be tabbed past. `:focus-visible` is set for keyboard traversal but not for the\n * programmatic/pointer focus that a collapse produces.\n */\n protected onExpandFocus(event: FocusEvent): void {\n if ((event.target as HTMLElement).matches(':focus-visible')) {\n this.onExpand();\n }\n }\n\n protected onInput(event: Event): void {\n const next = (event.target as HTMLInputElement).value;\n this._commit(next);\n this.searched.emit(next);\n }\n}\n","<div [class]=\"_wrapperClasses()\" [style.max-width]=\"_wrapperMaxWidth()\">\n <hlm-input-group [class]=\"_classes()\">\n <hlm-input-group-addon align=\"inline-start\" [class]=\"_iconClasses()\">\n @if (_showExpandButton()) {\n <button\n hlmInputGroupButton\n size=\"icon-sm\"\n [class]=\"_expandButtonClasses()\"\n [attr.aria-label]=\"expandAriaLabel()\"\n [attr.aria-expanded]=\"false\"\n (focus)=\"onExpandFocus($event)\"\n (click)=\"onExpand()\"\n >\n <ng-icon name=\"lucideSearch\" />\n </button>\n } @else {\n <ng-icon name=\"lucideSearch\" />\n }\n </hlm-input-group-addon>\n\n <input\n #searchInput\n hlmInputGroupInput\n [class]=\"_fieldClasses()\"\n [id]=\"_inputId()\"\n type=\"text\"\n inputmode=\"search\"\n [value]=\"value()\"\n [disabled]=\"_disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [forceInvalid]=\"invalid()\"\n [attr.name]=\"name()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.placeholder]=\"placeholder()\"\n [attr.tabindex]=\"_expanded() ? null : -1\"\n [attr.aria-hidden]=\"_expanded() ? null : true\"\n (input)=\"onInput($event)\"\n (keydown.enter)=\"onEnter()\"\n (keydown.escape)=\"onEscape()\"\n (blur)=\"onBlur()\"\n />\n\n @if (_showClear()) {\n <hlm-input-group-addon align=\"inline-end\">\n <button hlmInputGroupButton size=\"icon-xs\" [attr.aria-label]=\"clearAriaLabel()\" (click)=\"onClear()\">\n <ng-icon name=\"lucideX\" />\n </button>\n </hlm-input-group-addon>\n }\n </hlm-input-group>\n</div>\n","/**\n * The reveal toggle's two states, as data rather than control flow — `agents.md` bans `switch`\n * over a mode, and a `[type]=\"masked() ? 'password' : 'text'\"` chain in the template would be the\n * same branch smeared across three separate bindings that can drift out of sync.\n *\n * Keyed by \"is the value currently masked\", so the component reads one boolean signal and gets\n * the matching input type and icon together, always consistent.\n */\nexport interface YuwPasswordRevealStateDto {\n inputType: 'password' | 'text';\n icon: 'lucideEye' | 'lucideEyeOff';\n struck: boolean;\n}\n\n/** Lookup replacing the branch, keyed by `` `${boolean}` `` so a boolean signal indexes it\n * directly (`STATES[`${masked()}`]`) with no ternary. Adding a third state (a \"peek while held\"\n * mode, say) means adding an entry here — open for extension, closed for modification. */\nexport const YUW_PASSWORD_REVEAL_STATES: Record<`${boolean}`, YuwPasswordRevealStateDto> = {\n true: { inputType: 'password', icon: 'lucideEyeOff', struck: true },\n false: { inputType: 'text', icon: 'lucideEye', struck: false },\n};\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideEye, lucideEyeOff } from '@ng-icons/lucide';\nimport { HlmInputGroupImports } from 'yukit-web/helm/input-group';\nimport type { YuwFieldSizeDto, YuwTextFieldContract } from '../../interface/text-field.interface';\nimport { cn } from '../../utils/cn';\nimport { yuwFieldSizeVariants } from '../../utils/field-size.variants';\nimport { provideValueAccessor, YuwValueAccessorBase } from '../../utils/value-accessor';\nimport { YUW_PASSWORD_REVEAL_STATES } from './password-input.reveal';\n\n/** Module-level counter backing each instance's stable fallback `id`. */\nlet nextYuwPasswordInputId = 0;\n\n/**\n * Password input field with optional visibility toggle button and form integration (`ngModel`, `formControlName`).\n *\n * Inputs / Models:\n * - `value`: Two-way password string.\n * - `size`: Control height, matching the `<yuw-button>` of the same name.\n * - `inputId`: `id` applied to the native input, for external `<label for>` association.\n * - `disabled`: Disables input interaction.\n * - `readonly`: Makes the field read-only.\n * - `required`: Marks the field as required.\n * - `invalid`: Forces invalid styling.\n * - `name`: HTML `name` attribute.\n * - `autocomplete`: Native `autocomplete` attribute (e.g. `'current-password'`, `'new-password'`).\n * - `placeholder`: Hint text shown inside the empty field.\n * - `revealAriaLabel`: Accessible name for the reveal toggle button. Supplying it enables the toggle; omit to hide it.\n * - `masked`: Two-way boolean controlling whether the value is masked. Default is `true` (masked). A parent can reset it (e.g. re-mask after a failed submit).\n * - `class`: Extra classes merged onto the input group.\n *\n * Outputs:\n * - `committed`: Emits the current value on the native `change` event (blur/enter).\n *\n * Usage:\n * ```html\n * <yuw-password-input [(value)]=\"password\" revealAriaLabel=\"Toggle password visibility\" />\n * <yuw-password-input formControlName=\"password\" autocomplete=\"current-password\" />\n * ```\n */\n@Component({\n selector: 'yuw-password-input',\n imports: [...HlmInputGroupImports, NgIcon],\n providers: [provideValueAccessor(YuwPasswordInputComponent), provideIcons({ lucideEye, lucideEyeOff })],\n host: {\n class: 'contents',\n },\n templateUrl: './password-input.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwPasswordInputComponent extends YuwValueAccessorBase<string> implements YuwTextFieldContract {\n readonly autocomplete = input<string | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly inputId = input<string | undefined>(undefined);\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly masked = model<boolean>(true);\n readonly name = input<string | undefined>(undefined);\n readonly placeholder = input<string | undefined>(undefined);\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n readonly revealAriaLabel = input<string | undefined>(undefined);\n readonly size = input<YuwFieldSizeDto>('default');\n readonly userClass = input<string>('', { alias: 'class' });\n readonly value = model<string>('');\n\n readonly committed = output<string>();\n\n protected readonly _autoId = `yuw-password-input-${++nextYuwPasswordInputId}`;\n\n protected readonly _classes = computed(() => cn(yuwFieldSizeVariants({ size: this.size() }), this.userClass()));\n protected readonly _disabled = computed(() => this._isDisabled(this.disabled()));\n protected readonly _inputId = computed(() => this.inputId() ?? this._autoId);\n protected readonly _reveal = computed(() => YUW_PASSWORD_REVEAL_STATES[`${this.masked()}`]);\n\n protected _emptyValue(): string {\n return '';\n }\n\n protected onChange(): void {\n this.committed.emit(this.value());\n }\n\n protected onInput(event: Event): void {\n this._commit((event.target as HTMLInputElement).value);\n }\n\n protected onToggleReveal(): void {\n this.masked.update((masked) => !masked);\n }\n}\n","<hlm-input-group [class]=\"_classes()\">\n <input\n hlmInputGroupInput\n [id]=\"_inputId()\"\n [type]=\"_reveal().inputType\"\n [value]=\"value()\"\n [disabled]=\"_disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [forceInvalid]=\"invalid()\"\n [attr.name]=\"name()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.placeholder]=\"placeholder()\"\n (input)=\"onInput($event)\"\n (change)=\"onChange()\"\n (blur)=\"_onBlur()\"\n />\n\n @if (revealAriaLabel(); as label) {\n <hlm-input-group-addon align=\"inline-end\">\n <button\n hlmInputGroupButton\n size=\"icon-xs\"\n [disabled]=\"_disabled()\"\n [attr.aria-label]=\"label\"\n [attr.aria-pressed]=\"!_reveal().struck\"\n (click)=\"onToggleReveal()\"\n >\n <ng-icon [name]=\"_reveal().icon\" />\n </button>\n </hlm-input-group-addon>\n }\n</hlm-input-group>\n","import { cva } from 'class-variance-authority';\nimport type { YuwFieldSizeDto } from '../../interface/text-field.interface';\n\n/**\n * Cell size for `<yuw-input-otp>`, applied to the container and reaching each\n * `<hlm-input-otp-slot>` through a descendant selector.\n *\n * The slots are separate components with their own `size-8`, and the container has no class\n * passthrough to them, so the scale is expressed as an arbitrary descendant variant keyed on the\n * slot's `data-slot` attribute. `!` is not needed: the generated rule is more specific than the\n * slot's own single utility class.\n *\n * Cells are square, so the values are `size-*` rather than `h-*`, matching the `icon-*` sizes of\n * `<yuw-button>` at the same name.\n */\nexport const yuwInputOtpSizeVariants = cva('', {\n variants: {\n size: {\n default: '[&_[data-slot=input-otp-slot]]:size-10',\n xs: '[&_[data-slot=input-otp-slot]]:size-7',\n sm: '[&_[data-slot=input-otp-slot]]:size-9',\n lg: '[&_[data-slot=input-otp-slot]]:size-11',\n } satisfies Record<YuwFieldSizeDto, string>,\n },\n defaultVariants: {\n size: 'default',\n },\n});\n","/**\n * One rendered group of OTP slots, with the absolute slot indices it contains.\n *\n * `HlmInputOtpSlot` needs an explicit `[index]` per slot, and those indices are absolute across\n * the whole input — the second group of a `3-3` layout holds slots 3,4,5, not 0,1,2. Precomputing\n * them here keeps the template to two plain `@for`s with no arithmetic and no method calls.\n */\nexport interface YuwInputOtpGroupDto {\n indices: number[];\n precededBySeparator: boolean;\n}\n\n/**\n * Expands a list of group sizes (`[3, 3]`) into the groups the template renders, assigning\n * absolute indices as it goes.\n *\n * Lives in its own file rather than inline in the component because `agents.md` wants the\n * component file to read as inputs, outputs, a couple of `computed()`s, done — and because this\n * is the one piece of real logic here, so it's the piece worth being able to test on its own.\n *\n * Sizes that are zero or negative are dropped: they'd contribute no slots but would still emit a\n * stray separator, so a typo like `[3, 0, 3]` would render a dangling dash between two groups.\n */\nexport function buildInputOtpGroups(groupSizes: readonly number[]): YuwInputOtpGroupDto[] {\n let nextIndex = 0;\n\n return groupSizes\n .filter((size) => size > 0)\n .map((size, groupPosition) => {\n const indices = Array.from({ length: size }, (_, offset) => nextIndex + offset);\n nextIndex += size;\n return { indices, precededBySeparator: groupPosition > 0 };\n });\n}\n\n/** Total slot count across every group — what `BrnInputOtp`'s own `length` input expects. Derived\n * from the same source as the groups so the two can never disagree, which is the bug you get from\n * accepting `length` and `groupSizes` as two independent inputs. */\nexport function totalInputOtpLength(groupSizes: readonly number[]): number {\n return groupSizes.filter((size) => size > 0).reduce((total, size) => total + size, 0);\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\nimport { BrnInputOtp } from '@spartan-ng/brain/input-otp';\nimport { HlmInputOtpImports } from 'yukit-web/helm/input-otp';\nimport type { YuwFieldSizeDto } from '../../interface/text-field.interface';\nimport { cn } from '../../utils/cn';\nimport { yuwInputOtpSizeVariants } from './input-otp.variants';\nimport { provideValueAccessor, YuwValueAccessorBase } from '../../utils/value-accessor';\nimport { buildInputOtpGroups, totalInputOtpLength } from './input-otp.layout';\n\nexport type YuwInputOtpModeDto = 'numeric' | 'text';\n\n/** Module-level counter backing each instance's stable fallback `id`. */\nlet nextYuwInputOtpId = 0;\n\n/**\n * One-time password / verification code input component rendering grouped digit or text slots.\n *\n * Inputs / Models:\n * - `value`: Two-way OTP code string.\n * - `inputId`: `id` applied to the hidden native input, for external `<label for>` association.\n * - `groupSizes`: Slot counts per visual group (`number[]`). A separator renders between groups, e.g. `[3, 3]` gives `000-000`. Default is `[6]`.\n * - `mode`: Virtual-keyboard hint (`'numeric'`, `'text'`). Default is `'numeric'`.\n * - `disabled`: Disables input interaction.\n * - `size`: Cell size, matching the `<yuw-button>` of the same name.\n * - `invalid`: Forces invalid styling.\n * - `autofocus`: Focuses the field on init. Appropriate on dedicated verification screens.\n * - `transformPaste`: Normalizes pasted text before it fills the slots.\n * - `class`: Extra classes merged onto the OTP container.\n *\n * Outputs:\n * - `completed`: Emits the full code string once the final slot is filled (by typing or paste).\n *\n * Usage:\n * ```html\n * <yuw-input-otp [(value)]=\"code\" [groupSizes]=\"[3, 3]\" (completed)=\"verifyCode($event)\" />\n * <yuw-input-otp formControlName=\"otpCode\" [groupSizes]=\"[6]\" mode=\"numeric\" />\n * ```\n */\n@Component({\n selector: 'yuw-input-otp',\n imports: [BrnInputOtp, ...HlmInputOtpImports],\n providers: [provideValueAccessor(YuwInputOtpComponent)],\n host: {\n class: 'contents',\n },\n templateUrl: './input-otp.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwInputOtpComponent extends YuwValueAccessorBase<string> {\n readonly autofocus = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly groupSizes = input<readonly number[]>([6]);\n readonly inputId = input<string | undefined>(undefined);\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly mode = input<YuwInputOtpModeDto>('numeric');\n readonly size = input<YuwFieldSizeDto>('default');\n readonly transformPaste = input<(pastedText: string, length: number) => string>((pastedText) => pastedText);\n readonly userClass = input<string>('', { alias: 'class' });\n readonly value = model<string>('');\n\n readonly completed = output<string>();\n\n protected readonly _autoId = `yuw-input-otp-${++nextYuwInputOtpId}`;\n\n protected readonly _classes = computed(() => cn(yuwInputOtpSizeVariants({ size: this.size() }), this.userClass()));\n protected readonly _disabled = computed(() => this._isDisabled(this.disabled()));\n protected readonly _groups = computed(() => buildInputOtpGroups(this.groupSizes()));\n protected readonly _inputId = computed(() => this.inputId() ?? this._autoId);\n protected readonly _length = computed(() => totalInputOtpLength(this.groupSizes()));\n\n protected _emptyValue(): string {\n return '';\n }\n\n protected onValueChange(next: string): void {\n this._commit(next);\n }\n}\n","<brn-input-otp\n hlmInputOtp\n [class]=\"_classes()\"\n [inputId]=\"_inputId()\"\n [length]=\"_length()\"\n [value]=\"value()\"\n [inputMode]=\"mode()\"\n [disabled]=\"_disabled()\"\n [autofocus]=\"autofocus()\"\n [transformPaste]=\"transformPaste()\"\n inputAutocomplete=\"one-time-code\"\n (valueChange)=\"onValueChange($event)\"\n (focusout)=\"_onBlur()\"\n (completed)=\"completed.emit($event)\"\n>\n @for (group of _groups(); track $index) {\n @if (group.precededBySeparator) {\n <hlm-input-otp-separator />\n }\n\n <hlm-input-otp-group>\n @for (index of group.indices; track index) {\n <hlm-input-otp-slot [index]=\"index\" [forceInvalid]=\"invalid()\" />\n }\n </hlm-input-otp-group>\n }\n</brn-input-otp>\n","import { Directive } from '@angular/core';\nimport { HlmLabel } from 'yukit-web/helm/label';\n\n/**\n * Form label directive applied directly to a native `<label>` element.\n *\n * Provides label styling and pairs with form controls using standard `for` attribute.\n *\n * Extends `HlmLabel` (instead of composing it via `hostDirectives`) because `id`/`for` are\n * inputs `HlmLabel` itself re-exposes from `BrnLabel` through its own `hostDirectives`, and\n * Angular's host-directive forwarding is not transitive (NG2017) — they can't be re-listed at\n * this level. Class inheritance carries the whole surface over unchanged: a static `for`/`id`\n * on the `<label>` reaches `BrnLabel` as an initial input, whose `[attr.for]` host binding then\n * re-writes the same value.\n *\n * Usage:\n * ```html\n * <label yuwLabel for=\"username\">Username</label>\n * <yuw-input inputId=\"username\" [(value)]=\"username\" />\n * ```\n */\n@Directive({\n selector: 'label[yuwLabel]',\n})\nexport class YuwLabel extends HlmLabel {}\n","import { cva } from 'class-variance-authority';\n\n/**\n * Class map for `yuw-checkbox`, layered on top of `HlmCheckbox`'s own classes.\n *\n * The base indeterminate treatment is unconditional — it's how *every* `yuw-checkbox` renders\n * that state, not a variant — so it lives in the cva base, while `secondary` is an opt-in\n * boolean variant layered on top.\n *\n * Order is load-bearing: the secondary classes override the base's `bg-primary`/`border-primary`,\n * and cva emits base classes before variant classes, so the component must pass the result\n * through `cn()` for `tailwind-merge` to keep the later (secondary) ones instead of shipping both\n * to the DOM and leaving it to specificity.\n */\nexport const checkboxVariants = cva(\n [\n 'data-[state=indeterminate]:bg-primary',\n 'dark:data-[state=indeterminate]:bg-primary',\n 'data-[state=indeterminate]:text-primary-foreground',\n 'data-[state=indeterminate]:[&>span]:hidden',\n 'data-[state=indeterminate]:after:h-0.5',\n 'data-[state=indeterminate]:after:w-2.5',\n 'data-[state=indeterminate]:after:rounded-full',\n 'data-[state=indeterminate]:after:bg-current',\n ],\n {\n variants: {\n secondary: {\n true: [\n 'data-[state=checked]:bg-(color:--neutrals-element-high)',\n 'data-[state=checked]:bg-(image:--neutrals-element-high-gradient)',\n 'data-[state=checked]:text-(--neutrals-overlay)',\n 'data-[state=checked]:border-(--neutrals-element-high)',\n 'data-[state=indeterminate]:bg-(color:--neutrals-element-high)',\n 'data-[state=indeterminate]:bg-(image:--neutrals-element-high-gradient)',\n 'data-[state=indeterminate]:text-(--neutrals-white)',\n 'data-[state=indeterminate]:border-(--neutrals-element-high)',\n 'dark:data-[state=indeterminate]:text-(--neutrals-black)',\n ],\n false: 'data-[state=indeterminate]:border-primary',\n },\n },\n defaultVariants: {\n secondary: false,\n },\n },\n);\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { HlmCheckbox } from 'yukit-web/helm/checkbox';\nimport { provideValueAccessor, YuwValueAccessorBase } from '../../utils/value-accessor';\nimport { YuwLabel } from '../label/label.directive';\nimport { cn } from '../../utils/cn';\nimport { checkboxVariants } from './checkbox.variants';\n\n/**\n * Checkbox control supporting two-way boolean binding, form integration (`ngModel`, `formControlName`),\n * indeterminate state, and secondary styling variant.\n *\n * Projected content becomes the checkbox's clickable label: the control is wrapped in a `<label>`,\n * so clicking the text toggles it and the text is announced as the accessible name. Without\n * projected content, pair it with an external `<label [for]>` via `inputId` or set `ariaLabel`.\n *\n * Inputs / Models:\n * - `value` / `checked`: Two-way boolean state of the checkbox. Default is `false`.\n * - `indeterminate`: Two-way boolean state for mixed/indeterminate checkbox appearance. Default is `false`.\n * - `disabled`: Disables checkbox interaction.\n * - `required`: Marks checkbox as required.\n * - `invalid`: Forces invalid styling.\n * - `name`: Form input name attribute.\n * - `inputId`: ID set on the native input element for `<label [for]>` matching.\n * - `ariaLabel`: Accessible name for screen readers when there's no visible label.\n * - `ariaLabelledby`: ID of an external element that labels the checkbox.\n * - `ariaDescribedby`: ID of an external element that describes the checkbox (hints, errors).\n * - `secondary`: Enables secondary color variant styling.\n *\n * Usage:\n * ```html\n * <yuw-checkbox [(checked)]=\"acceptedTerms\">Accept terms</yuw-checkbox>\n * <yuw-checkbox [(indeterminate)]=\"isMixed\" [(checked)]=\"allSelected\" />\n * <yuw-checkbox formControlName=\"rememberMe\" />\n * ```\n */\n@Component({\n selector: 'yuw-checkbox',\n imports: [HlmCheckbox, YuwLabel],\n providers: [provideValueAccessor(YuwCheckboxComponent)],\n host: {\n class: 'contents',\n },\n templateUrl: './checkbox.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwCheckboxComponent extends YuwValueAccessorBase<boolean> {\n readonly ariaDescribedby = input<string | undefined>(undefined);\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly ariaLabelledby = input<string | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly indeterminate = model(false);\n readonly inputId = input<string | undefined>(undefined);\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly name = input<string | undefined>(undefined);\n readonly required = input(false, { transform: booleanAttribute });\n readonly secondary = input(false, { transform: booleanAttribute });\n readonly value = model<boolean>(false, { alias: 'checked' });\n\n protected readonly _class = computed(() => cn(checkboxVariants({ secondary: this.secondary() })));\n protected readonly _disabled = computed(() => this._isDisabled(this.disabled()));\n\n protected _emptyValue(): boolean {\n return false;\n }\n\n protected onCheckedChange(checked: boolean): void {\n this._commit(checked);\n }\n}\n","<label yuwLabel class=\"gap-3\" (focusout)=\"_onBlur()\">\n <hlm-checkbox\n [class]=\"_class()\"\n [checked]=\"value()\"\n [(indeterminate)]=\"indeterminate\"\n [disabled]=\"_disabled()\"\n [required]=\"required()\"\n [forceInvalid]=\"invalid()\"\n [name]=\"name() ?? null\"\n [inputId]=\"inputId() ?? null\"\n [aria-label]=\"ariaLabel() ?? null\"\n [aria-labelledby]=\"ariaLabelledby() ?? null\"\n [aria-describedby]=\"ariaDescribedby() ?? null\"\n (checkedChange)=\"onCheckedChange($event)\"\n />\n <ng-content />\n</label>\n","import { cva } from 'class-variance-authority';\n\nexport type YuwSwitchSizeDto = 'default' | 'xs' | 'sm' | 'lg';\n\n/**\n * Helm switch size each of our sizes maps onto.\n *\n * The helm ships two real scales — `sm` (14x24 track, 12px thumb) and `default` (18.4x32, 16px) —\n * and keys both the track and the thumb off the resulting `data-size` attribute. Mapping onto the\n * nearer of the two keeps that attribute truthful, so `yuwSwitchSizeVariants` only has to override\n * the sizes that genuinely differ, under the prefix the helm actually emits.\n */\nexport const YUW_SWITCH_HELM_SIZE = {\n xs: 'sm',\n sm: 'default',\n default: 'default',\n lg: 'default',\n} as const satisfies Record<YuwSwitchSizeDto, 'default' | 'sm'>;\n\n/**\n * Track and thumb geometry for `<yuw-switch>`.\n *\n * A switch is not a field, so these are not the field heights — a 40px-tall switch would dominate any\n * row it sits in. The scale keeps the helm's ~1.75:1 track ratio and its 2px inset, and shifts the\n * whole thing up one step so `default` reads at 22x36 instead of the helm's cramped 18.4x32.\n * Sizes are named to match the rest of the library, not to match its pixel values.\n *\n * Each track width is exactly twice its thumb. That is not cosmetic: the helm moves the thumb with\n * `translate-x-[calc(100%-2px)]`, which is thumb-relative, so the travel it produces (`thumb - 2`)\n * only equals the space available (`track - 2*border - thumb`) when `track == 2 * thumb`. Break that\n * and the thumb stops short of the far edge, leaving the on state visibly off-centre.\n *\n * Only the sizes that differ from the mapped helm scale are declared, each under the prefix that\n * scale emits (see {@link YUW_SWITCH_HELM_SIZE}) — a plain `h-*` does not displace the helm's\n * `data-[size=…]:h-*`, it just loses to it on specificity. `xs` maps exactly onto the helm's `sm`\n * scale, so it needs nothing. The thumb's `translate-x-[calc(100%-2px)]` is thumb-relative and\n * follows any size change on its own.\n */\nexport const yuwSwitchSizeVariants = cva('', {\n variants: {\n size: {\n xs: '',\n sm: 'data-[size=default]:h-[18px] data-[size=default]:w-[28px] [&_[data-slot=switch-thumb]]:group-data-[size=default]/switch:size-3.5',\n default:\n 'data-[size=default]:h-[22px] data-[size=default]:w-[36px] [&_[data-slot=switch-thumb]]:group-data-[size=default]/switch:size-[18px]',\n lg: 'data-[size=default]:h-[26px] data-[size=default]:w-[44px] [&_[data-slot=switch-thumb]]:group-data-[size=default]/switch:size-[22px]',\n } satisfies Record<YuwSwitchSizeDto, string>,\n },\n defaultVariants: {\n size: 'default',\n },\n});\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { HlmSwitchImports } from 'yukit-web/helm/switch';\nimport { provideValueAccessor, YuwValueAccessorBase } from '../../utils/value-accessor';\nimport { YuwLabel } from '../label/label.directive';\nimport { YUW_SWITCH_HELM_SIZE, type YuwSwitchSizeDto, yuwSwitchSizeVariants } from './switch.variants';\n\nexport type { YuwSwitchSizeDto };\n\n/**\n * Toggle switch control for binary settings and immediate state changes.\n *\n * Projected content becomes the switch's clickable label: the control is wrapped in a `<label>`,\n * so clicking the text toggles it and the text is announced as the accessible name. Without\n * projected content, pair it with an external `<label [for]>` via `inputId` or set `ariaLabel`.\n *\n * Inputs / Models:\n * - `checked` (alias for `value`): Two-way boolean on/off state. Bind as `[(checked)]`.\n * - `size`: Track size (`'default'`, `'xs'`, `'sm'`, `'lg'`). Named to match the rest of the\n * library; the pixel values keep a switch's own proportions rather than the field heights.\n * - `disabled`: Disables switch interaction.\n * - `inputId`: HTML `id` for the underlying control, enabling external `<label for=\"...\">` association.\n * - `ariaLabel`: Accessible name for switches with no visible adjacent label.\n *\n * Usage:\n * ```html\n * <yuw-switch [(checked)]=\"notificationsEnabled\">Enable Notifications</yuw-switch>\n * <yuw-switch formControlName=\"darkMode\" size=\"sm\" />\n * ```\n */\n@Component({\n selector: 'yuw-switch',\n imports: [...HlmSwitchImports, YuwLabel],\n providers: [provideValueAccessor(YuwSwitchComponent)],\n host: {\n class: 'contents',\n },\n templateUrl: './switch.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwSwitchComponent extends YuwValueAccessorBase<boolean> {\n readonly ariaDescribedby = input<string | undefined>(undefined);\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly ariaLabelledby = input<string | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly inputId = input<string | undefined>(undefined);\n readonly size = input<YuwSwitchSizeDto>('default');\n readonly value = model<boolean>(false, { alias: 'checked' });\n\n protected readonly _disabled = computed(() => this._isDisabled(this.disabled()));\n protected readonly _helmSize = computed(() => YUW_SWITCH_HELM_SIZE[this.size()]);\n protected readonly _switchClass = computed(() => yuwSwitchSizeVariants({ size: this.size() }));\n\n protected _emptyValue(): boolean {\n return false;\n }\n\n protected onCheckedChange(checked: boolean): void {\n this._commit(checked);\n }\n}\n","<label yuwLabel class=\"gap-3\" (focusout)=\"_onBlur()\">\n <hlm-switch\n [checked]=\"value()\"\n [size]=\"_helmSize()\"\n [class]=\"_switchClass()\"\n [disabled]=\"_disabled()\"\n [inputId]=\"inputId() ?? null\"\n [aria-label]=\"ariaLabel() ?? null\"\n [aria-labelledby]=\"ariaLabelledby() ?? null\"\n [aria-describedby]=\"ariaDescribedby() ?? null\"\n (checkedChange)=\"onCheckedChange($event)\"\n />\n <ng-content />\n</label>\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { HlmRadioGroupImports } from 'yukit-web/helm/radio-group';\nimport { provideValueAccessor, YuwValueAccessorBase } from '../../utils/value-accessor';\nimport { cn } from '../../utils/cn';\nimport { YuwLabel } from '../label/label.directive';\nimport type { YuwRadioOptionDto } from './radio-option.interface';\n\n/** Module-level counter so every unnamed group gets its own radio `name`. Binding `[name]`\n * unconditionally overrides Brain's autogenerated unique name, and an empty-string fallback\n * would make two unnamed groups on the same page share `name=\"\"` — i.e. act as one group. */\nlet nextUniqueId = 0;\n\n/**\n * Radio button group component for selecting a single option from a list.\n *\n * Inputs / Models:\n * - `value`: Two-way selected option value (`string | undefined`). `undefined` means nothing is selected.\n * - `options`: Required array of radio options (`YuwRadioOptionDto[]`).\n * - `disabled`: Disables all radio options.\n * - `required`: Marks the group as required.\n * - `name`: Shared HTML `name` attribute for all radios, making them mutually exclusive in native\n * form submission. When omitted, a unique per-instance name is generated.\n * - `ariaLabel`: Accessible name for the `role=\"radiogroup\"` element. User-facing text — the\n * consuming app is responsible for providing it translated.\n * - `ariaLabelledby`: ID of an external element (e.g. a visible heading) that labels the group.\n * - `class`: Extra classes merged onto the group container (layout tweaks like\n * `grid-cols-2` or `flex-row`). The `gap-3` base stays unless overridden.\n *\n * Usage:\n * ```html\n * <yuw-radio-group [options]=\"planOptions\" [(value)]=\"selectedPlan\" ariaLabel=\"Plan\" />\n * <yuw-radio-group [options]=\"genderOptions\" formControlName=\"gender\" ariaLabelledby=\"gender-heading\" />\n * ```\n */\n@Component({\n selector: 'yuw-radio-group',\n imports: [...HlmRadioGroupImports, YuwLabel],\n providers: [provideValueAccessor(YuwRadioGroupComponent)],\n host: {\n class: 'contents',\n },\n templateUrl: './radio-group.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwRadioGroupComponent extends YuwValueAccessorBase<string | undefined> {\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly ariaLabelledby = input<string | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly name = input<string | undefined>(undefined);\n readonly options = input.required<readonly YuwRadioOptionDto[]>();\n readonly required = input(false, { transform: booleanAttribute });\n readonly userClass = input<string>('', { alias: 'class' });\n readonly value = model<string | undefined>(undefined);\n\n private readonly _generatedName = `yuw-radio-group-${++nextUniqueId}`;\n\n protected readonly _disabled = computed(() => this._isDisabled(this.disabled()));\n protected readonly _groupClass = computed(() => cn('gap-3', this.userClass()));\n protected readonly _name = computed(() => this.name() ?? this._generatedName);\n\n protected _emptyValue(): string | undefined {\n return undefined;\n }\n\n protected onValueChange(next: string): void {\n this._commit(next);\n }\n}\n","<hlm-radio-group\n [class]=\"_groupClass()\"\n [value]=\"value() ?? ''\"\n [disabled]=\"_disabled()\"\n [required]=\"required()\"\n [name]=\"_name()\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-labelledby]=\"ariaLabelledby() ?? null\"\n (valueChange)=\"onValueChange($event)\"\n (focusout)=\"_onBlur()\"\n>\n @for (option of options(); track option.value) {\n <label yuwLabel class=\"gap-3\">\n <hlm-radio [value]=\"option.value\" [disabled]=\"option.disabled ?? false\">\n <hlm-radio-indicator indicator />\n </hlm-radio>\n\n {{ option.label }}\n </label>\n }\n</hlm-radio-group>\n","import { Directive } from '@angular/core';\nimport { HlmSkeleton } from 'yukit-web/helm/skeleton';\n\n/**\n * Loading skeleton placeholder directive with pulse animation effect.\n *\n * Sized using standard CSS height and width classes on the host element.\n *\n * Usage:\n * ```html\n * <div yuwSkeleton class=\"h-4 w-32 rounded\"></div>\n * <div yuwSkeleton class=\"size-10 rounded-full\"></div>\n * ```\n */\n@Directive({\n selector: '[yuwSkeleton]',\n hostDirectives: [HlmSkeleton],\n host: {\n 'aria-hidden': 'true',\n },\n})\nexport class YuwSkeletonDirective {}\n","import { Directive } from '@angular/core';\nimport {\n HlmCard,\n HlmCardAction,\n HlmCardContent,\n HlmCardDescription,\n HlmCardFooter,\n HlmCardHeader,\n HlmCardTitle,\n} from 'yukit-web/helm/card';\n\n/**\n * Container directive for card components.\n * Accepts optional `size` input (e.g. `'default'` or `'sm'`).\n *\n * Usage:\n * ```html\n * <div yuwCard>\n * <div yuwCardHeader>\n * <h3 yuwCardTitle>Title</h3>\n * <p yuwCardDescription>Description text</p>\n * </div>\n * <div yuwCardContent>Main content</div>\n * <div yuwCardFooter>Footer content</div>\n * </div>\n * ```\n */\n@Directive({\n selector: '[yuwCard]',\n hostDirectives: [{ directive: HlmCard, inputs: ['size'] }],\n})\nexport class YuwCardDirective {}\n\n/** Header container directive for a card. */\n@Directive({\n selector: '[yuwCardHeader]',\n hostDirectives: [HlmCardHeader],\n})\nexport class YuwCardHeaderDirective {}\n\n/** Heading directive for card title text. */\n@Directive({\n selector: '[yuwCardTitle]',\n hostDirectives: [HlmCardTitle],\n})\nexport class YuwCardTitleDirective {}\n\n/** Subtitle or description directive for card text. */\n@Directive({\n selector: '[yuwCardDescription]',\n hostDirectives: [HlmCardDescription],\n})\nexport class YuwCardDescriptionDirective {}\n\n/** Header action directive for placing top-right controls (e.g. menu button or status badge). */\n@Directive({\n selector: '[yuwCardAction]',\n hostDirectives: [HlmCardAction],\n})\nexport class YuwCardActionDirective {}\n\n/** Main body container directive for card content. */\n@Directive({\n selector: '[yuwCardContent]',\n hostDirectives: [HlmCardContent],\n})\nexport class YuwCardContentDirective {}\n\n/** Footer container directive for card action buttons or summary info. */\n@Directive({\n selector: '[yuwCardFooter]',\n hostDirectives: [HlmCardFooter],\n})\nexport class YuwCardFooterDirective {}\n\n/** Every card part, for a consumer's `imports`. */\nexport const YuwCardImports = [\n YuwCardDirective,\n YuwCardHeaderDirective,\n YuwCardTitleDirective,\n YuwCardDescriptionDirective,\n YuwCardActionDirective,\n YuwCardContentDirective,\n YuwCardFooterDirective,\n] as const;\n","import { Directive } from '@angular/core';\nimport {\n HlmEmpty,\n HlmEmptyContent,\n HlmEmptyDescription,\n HlmEmptyHeader,\n HlmEmptyMedia,\n HlmEmptyTitle,\n} from 'yukit-web/helm/empty';\n\n/**\n * Container directive for empty-state layout panels (e.g., \"No search results\", \"Inbox empty\").\n *\n * Usage:\n * ```html\n * <div yuwEmpty>\n * <div yuwEmptyHeader>\n * <div yuwEmptyMedia>\n * <ng-icon name=\"lucideFolderOpen\" />\n * </div>\n * <h3 yuwEmptyTitle>No files found</h3>\n * <p yuwEmptyDescription>Try uploading a file or changing your query.</p>\n * </div>\n * <div yuwEmptyContent>\n * <yuw-button>Upload File</yuw-button>\n * </div>\n * </div>\n * ```\n */\n@Directive({\n selector: '[yuwEmpty]',\n hostDirectives: [HlmEmpty],\n})\nexport class YuwEmptyDirective {}\n\n/** Header container directive for empty-state title and media. */\n@Directive({\n selector: '[yuwEmptyHeader]',\n hostDirectives: [HlmEmptyHeader],\n})\nexport class YuwEmptyHeaderDirective {}\n\n/** Slot directive for empty-state icons or illustrations. Supports `variant` input. */\n@Directive({\n selector: '[yuwEmptyMedia]',\n hostDirectives: [{ directive: HlmEmptyMedia, inputs: ['variant'] }],\n})\nexport class YuwEmptyMediaDirective {}\n\n/** Title heading directive for empty state message. */\n@Directive({\n selector: '[yuwEmptyTitle]',\n hostDirectives: [HlmEmptyTitle],\n})\nexport class YuwEmptyTitleDirective {}\n\n/** Description paragraph directive explaining the empty state. */\n@Directive({\n selector: '[yuwEmptyDescription]',\n hostDirectives: [HlmEmptyDescription],\n})\nexport class YuwEmptyDescriptionDirective {}\n\n/** Content slot directive for action buttons or call-to-action controls in an empty state. */\n@Directive({\n selector: '[yuwEmptyContent]',\n hostDirectives: [HlmEmptyContent],\n})\nexport class YuwEmptyContentDirective {}\n\n/** Every empty-state part, for a consumer's `imports`. */\nexport const YuwEmptyImports = [\n YuwEmptyDirective,\n YuwEmptyHeaderDirective,\n YuwEmptyMediaDirective,\n YuwEmptyTitleDirective,\n YuwEmptyDescriptionDirective,\n YuwEmptyContentDirective,\n] as const;\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { HlmDropdownMenuCheckboxIndicator } from 'yukit-web/helm/dropdown-menu';\n\n/**\n * Checkmark shown at the trailing edge of a `[yuwContextMenuCheckbox]` item while it is checked.\n *\n * Place it inside the checkbox item; the helm indicator positions itself absolutely against the\n * item and only becomes visible when the item carries `data-checked`.\n *\n * Usage:\n * ```html\n * <button yuwContextMenuCheckbox [checked]=\"showArchived()\" (triggered)=\"toggleArchived()\">\n * Show archived\n * <yuw-context-menu-checkbox-indicator />\n * </button>\n * ```\n */\n@Component({\n selector: 'yuw-context-menu-checkbox-indicator',\n imports: [HlmDropdownMenuCheckboxIndicator],\n host: {\n class: 'contents',\n },\n templateUrl: './context-menu-checkbox-indicator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwContextMenuCheckboxIndicatorComponent {}\n","<hlm-dropdown-menu-checkbox-indicator />\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { HlmDropdownMenuRadioIndicator } from 'yukit-web/helm/dropdown-menu';\n\n/**\n * Mark shown at the trailing edge of a `[yuwContextMenuRadio]` item while it is selected.\n *\n * Place it inside the radio item; the helm indicator positions itself absolutely against the\n * item and only becomes visible when the item carries `data-checked`.\n *\n * Usage:\n * ```html\n * <button yuwContextMenuRadio [checked]=\"order() === 'asc'\" (triggered)=\"setOrder('asc')\">\n * Ascending\n * <yuw-context-menu-radio-indicator />\n * </button>\n * ```\n */\n@Component({\n selector: 'yuw-context-menu-radio-indicator',\n imports: [HlmDropdownMenuRadioIndicator],\n host: {\n class: 'contents',\n },\n templateUrl: './context-menu-radio-indicator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwContextMenuRadioIndicatorComponent {}\n","<hlm-dropdown-menu-radio-indicator />\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { HlmDropdownMenuItemSubIndicator } from 'yukit-web/helm/dropdown-menu';\n\n/**\n * Trailing chevron for a `[yuwContextMenuSubTrigger]` item, signalling that it opens a nested\n * sub-menu. Flips automatically in RTL layouts.\n *\n * Usage:\n * ```html\n * <button [yuwContextMenuSubTrigger]=\"subMenu\">\n * More tools\n * <yuw-context-menu-sub-indicator />\n * </button>\n * ```\n */\n@Component({\n selector: 'yuw-context-menu-sub-indicator',\n imports: [HlmDropdownMenuItemSubIndicator],\n host: {\n class: 'contents',\n },\n templateUrl: './context-menu-sub-indicator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwContextMenuSubIndicatorComponent {}\n","<hlm-dropdown-menu-item-sub-indicator />\n","import {\n CdkContextMenuTrigger,\n CdkMenuItem,\n CdkMenuItemCheckbox,\n CdkMenuItemRadio,\n CdkMenuTrigger,\n} from '@angular/cdk/menu';\nimport { booleanAttribute, Directive, effect, inject, input, TemplateRef } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\nimport { HlmContextMenuTrigger } from 'yukit-web/helm/context-menu';\nimport {\n HlmDropdownMenu,\n HlmDropdownMenuCheckbox,\n HlmDropdownMenuGroup,\n HlmDropdownMenuItem,\n HlmDropdownMenuLabel,\n HlmDropdownMenuRadio,\n HlmDropdownMenuSeparator,\n HlmDropdownMenuShortcut,\n HlmDropdownMenuSub,\n HlmDropdownMenuSubTrigger,\n} from 'yukit-web/helm/dropdown-menu';\nimport { YuwContextMenuCheckboxIndicatorComponent } from './context-menu-checkbox-indicator.component';\nimport { YuwContextMenuRadioIndicatorComponent } from './context-menu-radio-indicator.component';\nimport { YuwContextMenuSubIndicatorComponent } from './context-menu-sub-indicator.component';\n\n/**\n * Context menu directives suite based on right-click actions and panel controls.\n *\n * Why some inputs/outputs below are bridged imperatively instead of forwarded via\n * `hostDirectives`: Angular only lets a wrapper re-expose a host directive's *own* (or\n * class-inherited) inputs/outputs. Names the helm layer itself only *exposes* from its own host\n * directives (`hlmContextMenuTrigger`, `hlmContextMenuOpened`/`hlmContextMenuClosed`, the items'\n * `checked`/`disabled`/`keepOpen`/`triggered`) are not re-exposable one level further — the\n * compiler rejects the mapping with NG2017 (\"does not have an input with a public name of …\"),\n * and the runtime's `validateMappings` enforces the same rule. Verified against Angular 21.2\n * (`validateHostDirectiveMappings` in the compiler, `validateMappings` in core) and reproduced\n * with an isolated `ngc` compile. Own inputs of the helm classes (`disabled`/`align`/`side` on\n * the trigger, `inset`/`variant` on items, `sideOffset` on the panel) *are* forwarded\n * declaratively.\n */\n/**\n * Attach to an element to open a context menu upon right-clicking.\n *\n * Usage:\n * ```html\n * <div [yuwContextMenuTrigger]=\"menu\">Right-click me</div>\n *\n * <ng-template #menu>\n * <div yuwContextMenu>\n * <button yuwContextMenuItem (triggered)=\"onEdit()\">Edit</button>\n * <button yuwContextMenuItem variant=\"destructive\" (triggered)=\"onDelete()\">Delete</button>\n * </div>\n * </ng-template>\n * ```\n */\n@Directive({\n selector: '[yuwContextMenuTrigger]',\n hostDirectives: [\n {\n directive: HlmContextMenuTrigger,\n inputs: ['disabled', 'align', 'side'],\n },\n ],\n})\nexport class YuwContextMenuTriggerDirective {\n private readonly _trigger = inject(CdkContextMenuTrigger, { host: true });\n\n readonly menu = input.required<TemplateRef<unknown>>({ alias: 'yuwContextMenuTrigger' });\n readonly menuData = input<unknown>(undefined, { alias: 'yuwContextMenuTriggerData' });\n\n readonly closed = outputFromObservable<void>(this._trigger.closed);\n readonly opened = outputFromObservable<void>(this._trigger.opened);\n\n constructor() {\n effect(() => {\n this._trigger.menuTemplateRef = this.menu();\n this._trigger.menuData = this.menuData();\n });\n }\n}\n\n/** Container directive for context menu options, placed inside the context menu template. */\n@Directive({\n selector: '[yuwContextMenu]',\n hostDirectives: [{ directive: HlmDropdownMenu, inputs: ['sideOffset'] }],\n})\nexport class YuwContextMenuDirective {}\n\n/** Interactive action item within a context menu. Place on a `<button>` element. */\n@Directive({\n selector: '[yuwContextMenuItem]',\n hostDirectives: [{ directive: HlmDropdownMenuItem, inputs: ['disabled', 'variant', 'inset'] }],\n})\nexport class YuwContextMenuItemDirective {\n private readonly _item = inject(CdkMenuItem, { host: true });\n\n readonly triggered = outputFromObservable<void>(this._item.triggered);\n}\n\n/**\n * Checkable action item within a context menu. Place on a `<button>` element and project a\n * `<yuw-context-menu-checkbox-indicator />` to show the checkmark while checked.\n *\n * Toggling keeps the menu open (the helm default). The `checked` input drives the state; listen\n * to `triggered` to flip it in the consumer.\n *\n * Usage:\n * ```html\n * <button yuwContextMenuCheckbox [checked]=\"showArchived()\" (triggered)=\"toggleArchived()\">\n * Show archived\n * <yuw-context-menu-checkbox-indicator />\n * </button>\n * ```\n */\n@Directive({\n selector: '[yuwContextMenuCheckbox]',\n hostDirectives: [{ directive: HlmDropdownMenuCheckbox, inputs: ['inset'] }],\n})\nexport class YuwContextMenuCheckboxDirective {\n private readonly _item = inject(CdkMenuItemCheckbox, { host: true });\n\n readonly checked = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly triggered = outputFromObservable<void>(this._item.triggered);\n\n constructor() {\n effect(() => {\n this._item.checked = this.checked();\n this._item.disabled = this.disabled();\n });\n }\n}\n\n/**\n * Single-select (radio) item within a context menu. Place on a `<button>` element inside a\n * `[yuwContextMenuGroup]` and project a `<yuw-context-menu-radio-indicator />` to show the mark\n * while selected.\n *\n * Selecting keeps the menu open (the helm default). The `checked` input drives the state; listen\n * to `triggered` to set it in the consumer.\n *\n * Usage:\n * ```html\n * <div yuwContextMenuGroup>\n * <button yuwContextMenuRadio [checked]=\"order() === 'asc'\" (triggered)=\"setOrder('asc')\">\n * Ascending\n * <yuw-context-menu-radio-indicator />\n * </button>\n * </div>\n * ```\n */\n@Directive({\n selector: '[yuwContextMenuRadio]',\n hostDirectives: [HlmDropdownMenuRadio],\n})\nexport class YuwContextMenuRadioDirective {\n private readonly _item = inject(CdkMenuItemRadio, { host: true });\n\n readonly checked = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly triggered = outputFromObservable<void>(this._item.triggered);\n\n constructor() {\n effect(() => {\n this._item.checked = this.checked();\n this._item.disabled = this.disabled();\n });\n }\n}\n\n/** Section heading/label within a context menu. */\n@Directive({\n selector: '[yuwContextMenuLabel]',\n hostDirectives: [{ directive: HlmDropdownMenuLabel, inputs: ['inset'] }],\n})\nexport class YuwContextMenuLabelDirective {}\n\n/** Group container for grouping context menu items (required around `[yuwContextMenuRadio]` sets). */\n@Directive({\n selector: '[yuwContextMenuGroup]',\n hostDirectives: [HlmDropdownMenuGroup],\n})\nexport class YuwContextMenuGroupDirective {}\n\n/** Visual divider line between context menu items. */\n@Directive({\n selector: '[yuwContextMenuSeparator]',\n hostDirectives: [HlmDropdownMenuSeparator],\n})\nexport class YuwContextMenuSeparatorDirective {}\n\n/** Text hint for a keyboard shortcut displayed alongside a context menu item. */\n@Directive({\n selector: '[yuwContextMenuShortcut]',\n hostDirectives: [HlmDropdownMenuShortcut],\n})\nexport class YuwContextMenuShortcutDirective {}\n\n/** Container directive for nesting a sub-level context menu. */\n@Directive({\n selector: '[yuwContextMenuSub]',\n hostDirectives: [HlmDropdownMenuSub],\n})\nexport class YuwContextMenuSubDirective {}\n\n/**\n * Trigger item for expanding a nested sub-context menu.\n *\n * Usage:\n * ```html\n * <button [yuwContextMenuSubTrigger]=\"subMenu\">\n * More tools\n * <yuw-context-menu-sub-indicator />\n * </button>\n * ```\n */\n@Directive({\n selector: '[yuwContextMenuSubTrigger]',\n hostDirectives: [{ directive: HlmDropdownMenuSubTrigger, inputs: ['align', 'side'] }],\n})\nexport class YuwContextMenuSubTriggerDirective {\n private readonly _trigger = inject(CdkMenuTrigger, { host: true });\n\n readonly menu = input.required<TemplateRef<unknown>>({ alias: 'yuwContextMenuSubTrigger' });\n\n constructor() {\n effect(() => {\n this._trigger.menuTemplateRef = this.menu();\n });\n }\n}\n\n/** Every context-menu part, for a consumer's `imports`. */\nexport const YuwContextMenuImports = [\n YuwContextMenuTriggerDirective,\n YuwContextMenuDirective,\n YuwContextMenuItemDirective,\n YuwContextMenuCheckboxDirective,\n YuwContextMenuCheckboxIndicatorComponent,\n YuwContextMenuRadioDirective,\n YuwContextMenuRadioIndicatorComponent,\n YuwContextMenuLabelDirective,\n YuwContextMenuGroupDirective,\n YuwContextMenuSeparatorDirective,\n YuwContextMenuShortcutDirective,\n YuwContextMenuSubDirective,\n YuwContextMenuSubTriggerDirective,\n YuwContextMenuSubIndicatorComponent,\n] as const;\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport {\n HlmDatePickerImports,\n injectHlmDatePickerConfig,\n injectHlmDatePickerMultiConfig,\n injectHlmDateRangePickerConfig,\n injectHlmMonthYearPickerConfig,\n} from 'yukit-web/helm/date-picker';\nimport type { YuwFieldSizeDto } from '../../interface/text-field.interface';\nimport { cn } from '../../utils/cn';\nimport { yuwButtonVariants } from '../button/button.variants';\nimport { provideValueAccessor, YuwValueAccessorBase } from '../../utils/value-accessor';\n\nexport type YuwDatepickerValue = Date | [Date, Date] | Date[] | null;\nexport type YuwDatepickerModeDto = 'single' | 'range' | 'multiple' | 'monthYear';\n\n/** Module-level counter for the fallback trigger id, so external labels always have a stable,\n * unique target even when the consumer doesn't pass `buttonId`. */\nlet nextUniqueId = 0;\n\n/**\n * Date picker control supporting single date, date range, multiple dates, or month/year pick modes.\n *\n * Inputs / Models:\n * - `mode`: Selection mode (`'single'`, `'range'`, `'multiple'`, `'monthYear'`). Default is `'single'`.\n * - `value`: Two-way selected date(s) (`YuwDatepickerValue`). Shape follows `mode`. Emits\n * `valueChange` on every selection change.\n * - `disabled`: Disables the control.\n * - `placeholder`: Text shown on the trigger while nothing is selected.\n * - `minDate`: Earliest selectable date.\n * - `maxDate`: Latest selectable date.\n * - `captionLayout`: Calendar caption mode — `'dropdown'` adds month/year dropdowns for faster year navigation. Default is `'label'`.\n * Ignored in `monthYear` mode: that picker renders its own month/year grid and has no calendar caption.\n * - `align`: Popover alignment relative to trigger (`'start'`, `'center'`, `'end'`). Default is `'start'`.\n * - `buttonId`: HTML `id` for the trigger button, enabling external `<label for=\"...\">`\n * association. When omitted, a unique per-instance id is generated.\n * - `class`: Extra classes merged onto the trigger button (e.g. a width), consumer classes win.\n * - `invalid`: Forces invalid styling.\n * - `formatDate`: Custom date formatter function `(date: Date) => string` for the trigger label.\n * In `range`/`multiple` modes it formats each date, joined with `' - '` / `', '`.\n *\n * Usage:\n * ```html\n * <yuw-datepicker [(value)]=\"selectedDate\" placeholder=\"Select date...\" />\n * <yuw-datepicker mode=\"range\" [(value)]=\"dateRange\" />\n * <yuw-datepicker mode=\"monthYear\" [(value)]=\"selectedMonth\" />\n * ```\n */\n@Component({\n selector: 'yuw-datepicker',\n imports: [...HlmDatePickerImports],\n providers: [provideValueAccessor(YuwDatepickerComponent)],\n host: {\n class: 'contents',\n },\n templateUrl: './datepicker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwDatepickerComponent extends YuwValueAccessorBase<YuwDatepickerValue> {\n readonly align = input<'start' | 'center' | 'end'>('start');\n readonly buttonId = input<string | undefined>(undefined);\n readonly captionLayout = input<'dropdown' | 'label' | 'dropdown-months' | 'dropdown-years'>('label');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly formatDate = input<((date: Date) => string) | undefined>(undefined);\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly maxDate = input<Date | undefined>(undefined);\n readonly minDate = input<Date | undefined>(undefined);\n readonly mode = input<YuwDatepickerModeDto>('single');\n readonly placeholder = input<string | undefined>(undefined);\n readonly size = input<YuwFieldSizeDto>('default');\n readonly userClass = input<string>('', { alias: 'class' });\n readonly value = model<YuwDatepickerValue>(null);\n\n private readonly _generatedButtonId = `yuw-datepicker-${++nextUniqueId}`;\n private readonly _monthYearConfig = injectHlmMonthYearPickerConfig<Date>();\n private readonly _multiConfig = injectHlmDatePickerMultiConfig<Date>();\n private readonly _rangeConfig = injectHlmDateRangePickerConfig<Date>();\n private readonly _singleConfig = injectHlmDatePickerConfig<Date>();\n\n protected readonly _buttonId = computed(() => this.buttonId() ?? this._generatedButtonId);\n protected readonly _disabled = computed(() => this._isDisabled(this.disabled()));\n protected readonly _formatMonthYear = computed(() => this.formatDate() ?? this._monthYearConfig.formatDate);\n protected readonly _formatMulti = computed(() => {\n const format = this.formatDate();\n if (!format) {\n return this._multiConfig.formatDates;\n }\n return (dates: Date[]) => dates.map(format).join(', ');\n });\n protected readonly _formatRange = computed(() => {\n const format = this.formatDate();\n if (!format) {\n return this._rangeConfig.formatDates;\n }\n return ([start, end]: [Date | null, Date | null]) =>\n [start, end]\n .filter((date): date is Date => date !== null)\n .map(format)\n .join(' - ');\n });\n protected readonly _formatSingle = computed(() => this.formatDate() ?? this._singleConfig.formatDate);\n protected readonly _multipleValue = computed(() => {\n const value = this.value();\n if (!value) {\n return [];\n }\n return Array.isArray(value) ? (value as Date[]) : [value];\n });\n protected readonly _rangeValue = computed(() => {\n const value = this.value();\n return Array.isArray(value) && value.length === 2 ? (value as [Date, Date]) : undefined;\n });\n protected readonly _singleValue = computed(() => {\n const value = this.value();\n return Array.isArray(value) ? undefined : (value ?? undefined);\n });\n protected readonly _triggerClass = computed(() => cn(yuwButtonVariants({ size: this.size() }), this.userClass()));\n\n protected _emptyValue(): YuwDatepickerValue {\n return this.mode() === 'multiple' ? [] : null;\n }\n\n protected onValueChange(next: YuwDatepickerValue): void {\n this._commit(next);\n }\n}\n","@switch (mode()) {\n @case ('range') {\n <hlm-date-range-picker\n [date]=\"_rangeValue()\"\n [disabled]=\"_disabled()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [captionLayout]=\"captionLayout()\"\n [align]=\"align()\"\n [formatDates]=\"_formatRange()\"\n (dateChange)=\"onValueChange($event)\"\n (focusout)=\"_onBlur()\"\n >\n <hlm-date-picker-trigger [buttonId]=\"_buttonId()\" [class]=\"_triggerClass()\" [forceInvalid]=\"invalid()\">\n {{ placeholder() ?? '' }}\n </hlm-date-picker-trigger>\n </hlm-date-range-picker>\n }\n @case ('multiple') {\n <hlm-date-picker-multi\n [date]=\"_multipleValue()\"\n [disabled]=\"_disabled()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [captionLayout]=\"captionLayout()\"\n [align]=\"align()\"\n [formatDates]=\"_formatMulti()\"\n (dateChange)=\"onValueChange($event)\"\n (focusout)=\"_onBlur()\"\n >\n <hlm-date-picker-trigger [buttonId]=\"_buttonId()\" [class]=\"_triggerClass()\" [forceInvalid]=\"invalid()\">\n {{ placeholder() ?? '' }}\n </hlm-date-picker-trigger>\n </hlm-date-picker-multi>\n }\n @case ('monthYear') {\n <hlm-month-year-picker\n [date]=\"_singleValue()\"\n [disabled]=\"_disabled()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [align]=\"align()\"\n [formatDate]=\"_formatMonthYear()\"\n (dateChange)=\"onValueChange($event)\"\n (focusout)=\"_onBlur()\"\n >\n <hlm-date-picker-trigger [buttonId]=\"_buttonId()\" [class]=\"_triggerClass()\" [forceInvalid]=\"invalid()\">\n {{ placeholder() ?? '' }}\n </hlm-date-picker-trigger>\n </hlm-month-year-picker>\n }\n @default {\n <hlm-date-picker\n [date]=\"_singleValue()\"\n [disabled]=\"_disabled()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [captionLayout]=\"captionLayout()\"\n [align]=\"align()\"\n [formatDate]=\"_formatSingle()\"\n (dateChange)=\"onValueChange($event)\"\n (focusout)=\"_onBlur()\"\n >\n <hlm-date-picker-trigger [buttonId]=\"_buttonId()\" [class]=\"_triggerClass()\" [forceInvalid]=\"invalid()\">\n {{ placeholder() ?? '' }}\n </hlm-date-picker-trigger>\n </hlm-date-picker>\n }\n}\n","import { Directive } from '@angular/core';\nimport {\n HlmCaption,\n HlmTable,\n HlmTableContainer,\n HlmTBody,\n HlmTd,\n HlmTFoot,\n HlmTh,\n HlmTHead,\n HlmTr,\n} from 'yukit-web/helm/table';\n\n/**\n * Outer wrapper container directive for responsive HTML table scroll container.\n *\n * Usage:\n * ```html\n * <div yuwTableContainer>\n * <table yuwTable>\n * <thead yuwTHead>\n * <tr yuwTr><th yuwTh>Header</th></tr>\n * </thead>\n * <tbody yuwTBody>\n * <tr yuwTr><td yuwTd>Data cell</td></tr>\n * </tbody>\n * </table>\n * </div>\n * ```\n */\n@Directive({\n selector: '[yuwTableContainer]',\n hostDirectives: [HlmTableContainer],\n})\nexport class YuwTableContainerDirective {}\n\n/** Table element styling directive applied to native `<table>`. */\n@Directive({\n selector: '[yuwTable]',\n hostDirectives: [HlmTable],\n})\nexport class YuwTableDirective {}\n\n/** Table header container directive applied to native `<thead>`. */\n@Directive({\n selector: '[yuwTHead]',\n hostDirectives: [HlmTHead],\n})\nexport class YuwTHeadDirective {}\n\n/** Table body container directive applied to native `<tbody>`. */\n@Directive({\n selector: '[yuwTBody]',\n hostDirectives: [HlmTBody],\n})\nexport class YuwTBodyDirective {}\n\n/** Table footer container directive applied to native `<tfoot>`. */\n@Directive({\n selector: '[yuwTFoot]',\n hostDirectives: [HlmTFoot],\n})\nexport class YuwTFootDirective {}\n\n/** Table row directive applied to native `<tr>`. */\n@Directive({\n selector: '[yuwTr]',\n hostDirectives: [HlmTr],\n})\nexport class YuwTrDirective {}\n\n/** Table header cell directive applied to native `<th>`. */\n@Directive({\n selector: '[yuwTh]',\n hostDirectives: [HlmTh],\n})\nexport class YuwThDirective {}\n\n/** Table data cell directive applied to native `<td>`. */\n@Directive({\n selector: '[yuwTd]',\n hostDirectives: [HlmTd],\n})\nexport class YuwTdDirective {}\n\n/** Table caption directive applied to native `<caption>`. */\n@Directive({\n selector: '[yuwCaption]',\n hostDirectives: [HlmCaption],\n})\nexport class YuwCaptionDirective {}\n\n/** Table custom pagination div content. */\n@Directive({\n selector: '[yuwDatatablePagination]',\n})\nexport class YuwDatatablePaginationDirective {}\n\n/** Every table part, for a consumer's `imports`. */\nexport const YuwTableImports = [\n YuwTableContainerDirective,\n YuwTableDirective,\n YuwTHeadDirective,\n YuwTBodyDirective,\n YuwTFootDirective,\n YuwTrDirective,\n YuwThDirective,\n YuwTdDirective,\n YuwCaptionDirective,\n YuwDatatablePaginationDirective,\n] as const;\n","import { cva } from 'class-variance-authority';\n\nexport type YuwDatatableAlign = 'start' | 'center' | 'end';\n\n/**\n * Class maps for `yuw-datatable`, layered on top of the Hlm table directives' own classes.\n *\n * `DATATABLE_ALIGN_CLASS` is keyed by a column's `meta.align` and shared by header and body cells,\n * so a column declares its alignment once and both honour it; `start` maps to an empty string\n * rather than re-stating what `HlmTh`/`HlmTd` already apply.\n *\n * The `appearance` maps are split per element because the treatment is not uniform: `card` frames\n * the container so the header tint clips to the radius instead of squaring off against a\n * consumer's wrapper, then drops the header's bottom border, since a rule underneath a filled\n * strip reads as a seam. `default` resolves to an empty string throughout, leaving a table that\n * does not opt in byte-identical to what the Hlm directives render alone.\n */\nexport const DATATABLE_ALIGN_CLASS: Record<YuwDatatableAlign, string> = {\n start: '',\n center: 'text-center',\n end: 'text-end',\n};\n\nexport const datatableContainerVariants = cva('', {\n variants: {\n appearance: {\n default: '',\n card: 'scroll-fade-x rounded-(--radius-container-sm) border bg-(--neutrals-surface)',\n },\n },\n defaultVariants: {\n appearance: 'default',\n },\n});\n\nexport const datatableHeadVariants = cva('', {\n variants: {\n appearance: {\n default: '',\n card: 'bg-(--neutrals-background) [&_tr]:border-b-0',\n },\n },\n defaultVariants: {\n appearance: 'default',\n },\n});\n\nexport const datatableHeaderCellVariants = cva('', {\n variants: {\n appearance: {\n default: '',\n card: 'h-12 px-4 text-xs font-normal tracking-wider uppercase text-(--neutrals-element-mid)',\n },\n },\n defaultVariants: {\n appearance: 'default',\n },\n});\n\nexport const datatableCellVariants = cva('', {\n variants: {\n appearance: {\n default: '',\n card: 'h-16 px-4',\n },\n },\n defaultVariants: {\n appearance: 'default',\n },\n});\n\nexport const datatableRowVariants = cva('', {\n variants: {\n appearance: {\n default: '',\n card: 'border-(--neutrals-outline)',\n },\n },\n defaultVariants: {\n appearance: 'default',\n },\n});\n","import {\n columnFilteringFeature,\n columnVisibilityFeature,\n rowPaginationFeature,\n rowSelectionFeature,\n rowSortingFeature,\n} from '@tanstack/table-core';\nimport { YuwDatatableAlign } from './datatable.variants';\n\nexport const YUW_DATATABLE_FEATURES: YuwDatatableFeatures = {\n columnMeta: {} as YuwDatatableColumnMeta,\n columnFilteringFeature,\n columnVisibilityFeature,\n rowPaginationFeature,\n rowSelectionFeature,\n rowSortingFeature,\n};\n\n/**\n * The feature set `yuw-datatable` enables.\n *\n * Declared as an interface keyed by feature name rather than `typeof` an object literal: TanStack\n * v9 types every feature constant as a bare `TableFeature`, and carries the *capabilities* on the\n * key names instead (see its own `StockFeatures`). A `typeof` would therefore widen every entry to\n * `TableFeature` and lose which features are actually on, leaving the table's own methods\n * (`getState`, `getCanNextPage`, …) missing from the instance type.\n */\nexport interface YuwDatatableFeatures {\n columnMeta: YuwDatatableColumnMeta;\n columnFilteringFeature: typeof columnFilteringFeature;\n columnVisibilityFeature: typeof columnVisibilityFeature;\n rowPaginationFeature: typeof rowPaginationFeature;\n rowSelectionFeature: typeof rowSelectionFeature;\n rowSortingFeature: typeof rowSortingFeature;\n}\n\n/**\n * Per-column options `yuw-datatable` reads off TanStack's `meta`, where `align` sets the\n * horizontal alignment of that column's header and body cells and defaults to `'start'`.\n *\n * TanStack resolves `columnDef.meta` from a feature set's own `columnMeta` slot when it declares\n * one, falling back to its global declaration-merged `ColumnMeta` otherwise. Declaring the slot on\n * `YuwDatatableFeatures` is what constrains our columns to this shape — without it, `meta` is the\n * empty global interface, which accepts any object and would catch no typo.\n */\nexport interface YuwDatatableColumnMeta {\n align?: YuwDatatableAlign;\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n input,\n linkedSignal,\n model,\n numberAttribute,\n type OnInit,\n output,\n} from '@angular/core';\nimport { outputFromObservable, toObservable } from '@angular/core/rxjs-interop';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronDown, lucideChevronsUpDown, lucideChevronUp } from '@ng-icons/lucide';\nimport { FlexRenderDirective, injectTable } from '@tanstack/angular-table';\nimport {\n type ColumnDef,\n type ColumnFiltersState,\n type ColumnVisibilityState,\n createCoreRowModel,\n createFilteredRowModel,\n createPaginatedRowModel,\n createSortedRowModel,\n type PaginationState,\n type RowData,\n type RowSelectionState,\n sortFns,\n type SortingState,\n type TableOptions,\n} from '@tanstack/table-core';\nimport { skip } from 'rxjs';\nimport { cn } from '../../utils/cn';\nimport { YuwPaginationComponent } from '../pagination/pagination.component';\nimport { YuwSkeletonDirective } from '../skeleton/skeleton.directive';\nimport { YuwDatatablePaginationDirective, YuwTableImports } from './table.directives';\nimport {\n DATATABLE_ALIGN_CLASS,\n datatableCellVariants,\n datatableContainerVariants,\n datatableHeaderCellVariants,\n datatableHeadVariants,\n datatableRowVariants,\n} from './datatable.variants';\nimport { YUW_DATATABLE_FEATURES, YuwDatatableFeatures } from './datatable.interface';\n\nexport type YuwDatatableColumnDef<TData extends RowData> = ColumnDef<YuwDatatableFeatures, TData>;\nexport type YuwDatatableAppearanceDto = 'default' | 'card';\n\n/**\n * Full-featured data table component supporting sorting, filtering, pagination, row selection,\n * loading skeleton state, and column visibility.\n *\n * Inputs / Models:\n * - `columns`: Column definitions array (`YuwDatatableColumnDef<TData>[]`). Default is `[]`.\n * - `data`: Row data array (`TData[]`). Default is `[]`.\n * - `sortable`: Enables click-to-sort on headers whose column allows it.\n * - `paginated`: Enables the pagination row model and renders footer controls.\n * - `selectable`: Enables the row-selection state. The checkbox column itself is *not* rendered\n * by the datatable — the consumer provides it as a display column (`id: 'select'`,\n * `flexRenderComponent(...)` header/cell that call TanStack's own toggle handlers), as in the\n * demo's data page.\n * - `emptyText`: Message shown when data is empty or filtered to nothing. User-facing text the\n * consuming app is responsible for translating.\n * - `loading`: Renders skeleton rows instead of data. The pagination footer stays visible (with\n * its buttons disabled) so the layout doesn't jump.\n * - `loadingRows`: Number of skeleton rows to show while `loading`. Default is `5`.\n * - `previousPageLabel` (required): Accessible name for the footer's previous-page button.\n * User-facing text the consuming app is responsible for translating.\n * - `nextPageLabel` (required): Accessible name for the footer's next-page button. User-facing\n * text the consuming app is responsible for translating.\n * - `paginationEllipsisSrText` (required): Screen-reader text for the pagination ellipsis.\n * User-facing text the consuming app is responsible for translating.\n * - `paginationAriaLabel` (required): Accessible name for the pagination navigation landmark.\n * User-facing text the consuming app is responsible for translating.\n * - `caption`: Optional `<caption>` text for the table. User-facing text the consuming app is\n * responsible for translating; when absent, no caption is rendered.\n * - `tableClass`: Extra classes merged onto the inner `<table>` element. The host is\n * `display: contents`, so a plain `class` on `<yuw-datatable>` would never reach the table.\n * - `appearance`: Visual treatment (`YuwDatatableAppearanceDto`). Default is `'default'` —\n * Spartan's plain table. `'card'` frames the table in its own rounded bordered surface with a\n * tinted uppercase header strip and taller rows; the consumer needs no wrapper of its own.\n *\n * Per-column, through TanStack's `meta`:\n * - `meta.align`: `'start' | 'center' | 'end'`, applied to both the header and body cells of that\n * column. Default is `'start'`. Alignment and the appearance's own cell classes are resolved\n * once into a per-column-id lookup rather than in the template, because a template method would\n * re-run the class merge for every cell on every change-detection pass.\n * - `sorting`: Two-way sorting state (`SortingState`).\n * - `columnFilters`: Two-way column filters state (`ColumnFiltersState`).\n * - `columnVisibility`: Two-way column visibility state (`ColumnVisibilityState`).\n * - `rowSelection`: Two-way row selection state (`RowSelectionState`).\n * - `pagination`: Two-way pagination state (`PaginationState`). Default is `{ pageIndex: 0, pageSize: 10 }`.\n *\n * Outputs:\n * - `selectedRowsChange`: Emits the selected row objects (`TData[]`) on selection changes. The\n * initial state does not emit — only actual changes after mount.\n *\n * Usage:\n * ```html\n * <yuw-datatable\n * [columns]=\"columns\"\n * [data]=\"users\"\n * [(sorting)]=\"sorting\"\n * appearance=\"card\"\n * paginated\n * selectable\n * previousPageLabel=\"Página anterior\"\n * nextPageLabel=\"Página siguiente\"\n * (selectedRowsChange)=\"onSelect($event)\"\n * />\n * ```\n *\n * ```ts\n * const columns: YuwDatatableColumnDef<Client>[] = [\n * { accessorKey: 'name', header: 'Nombre' },\n * { accessorKey: 'cif', header: 'CIF', meta: { align: 'center' } },\n * ];\n * ```\n */\n@Component({\n selector: 'yuw-datatable',\n imports: [...YuwTableImports, YuwPaginationComponent, YuwSkeletonDirective, FlexRenderDirective, NgIcon],\n providers: [provideIcons({ lucideChevronDown, lucideChevronUp, lucideChevronsUpDown })],\n host: {\n class: 'contents',\n },\n templateUrl: './datatable.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwDatatableComponent<TData extends RowData> implements OnInit {\n readonly customPagination = contentChild(YuwDatatablePaginationDirective);\n\n readonly appearance = input<YuwDatatableAppearanceDto>('default');\n readonly caption = input<string | undefined>(undefined);\n readonly columnFilters = model<ColumnFiltersState>([]);\n readonly columns = input<YuwDatatableColumnDef<TData>[]>([]);\n readonly columnVisibility = model<ColumnVisibilityState>({});\n readonly data = input<TData[]>([]);\n readonly emptyText = input<string | undefined>(undefined);\n readonly loading = input(false, { transform: booleanAttribute });\n readonly loadingRows = input(5, { transform: numberAttribute });\n readonly nextPageLabel = input.required<string>();\n readonly paginated = input(false, { transform: booleanAttribute });\n readonly pagination = model<PaginationState>({ pageIndex: 0, pageSize: 10 });\n readonly paginationAriaLabel = input.required<string>();\n readonly paginationEllipsisSrText = input.required<string>();\n readonly previousPageLabel = input.required<string>();\n readonly rowSelection = model<RowSelectionState>({});\n readonly selectable = input(false, { transform: booleanAttribute });\n readonly sortable = input(false, { transform: booleanAttribute });\n readonly sorting = model<SortingState>([]);\n readonly summary = input(false, { transform: booleanAttribute });\n readonly tableClass = input<string | undefined>(undefined);\n\n protected rowClicked = output<TData>();\n\n protected readonly _ariaSort: Record<'asc' | 'desc', 'ascending' | 'descending'> = {\n asc: 'ascending',\n desc: 'descending',\n };\n private readonly _options = (): Omit<TableOptions<YuwDatatableFeatures, TData>, 'features'> & {\n features: YuwDatatableFeatures & Record<string, unknown>;\n } => ({\n features: {\n ...YUW_DATATABLE_FEATURES,\n coreRowModel: createCoreRowModel<YuwDatatableFeatures, TData>(),\n filteredRowModel: createFilteredRowModel<YuwDatatableFeatures, TData>(),\n ...(this.sortable() ? { sortedRowModel: createSortedRowModel<YuwDatatableFeatures, TData>(), sortFns } : {}),\n ...(this.paginated() ? { paginatedRowModel: createPaginatedRowModel<YuwDatatableFeatures, TData>() } : {}),\n },\n data: this.data(),\n columns: this.columns(),\n enableRowSelection: this.selectable(),\n state: {\n sorting: this.sorting(),\n columnFilters: this.columnFilters(),\n columnVisibility: this.columnVisibility(),\n rowSelection: this.rowSelection(),\n pagination: this.pagination(),\n },\n onSortingChange: (updater) =>\n this.sorting.update((current) => (typeof updater === 'function' ? updater(current) : updater)),\n onColumnFiltersChange: (updater) =>\n this.columnFilters.update((current) => (typeof updater === 'function' ? updater(current) : updater)),\n onColumnVisibilityChange: (updater) =>\n this.columnVisibility.update((current) => (typeof updater === 'function' ? updater(current) : updater)),\n onPaginationChange: (updater) =>\n this.pagination.update((current) => (typeof updater === 'function' ? updater(current) : updater)),\n onRowSelectionChange: (updater) =>\n this.rowSelection.update((current) => (typeof updater === 'function' ? updater(current) : updater)),\n });\n protected readonly _sortIcon: Record<'asc' | 'desc' | 'none', string> = {\n asc: 'lucideChevronUp',\n desc: 'lucideChevronDown',\n none: 'lucideChevronsUpDown',\n };\n protected readonly table = injectTable<YuwDatatableFeatures, TData>(this._options);\n\n private readonly _selectedRows = computed(() => {\n this.rowSelection();\n return this.table.getSelectedRowModel().rows.map((row) => row.original);\n });\n readonly selectedRowsChange = outputFromObservable<TData[]>(toObservable(this._selectedRows).pipe(skip(1)));\n\n protected readonly _cellClasses = computed(() => {\n const header = datatableHeaderCellVariants({ appearance: this.appearance() });\n const cell = datatableCellVariants({ appearance: this.appearance() });\n\n return new Map(\n this.columns().map((column, index) => {\n const align = DATATABLE_ALIGN_CLASS[column.meta?.align ?? 'start'];\n return [\n column.id ?? ('accessorKey' in column ? String(column.accessorKey) : String(index)),\n { header: cn(header, align), cell: cn(cell, align) },\n ] as const;\n }),\n );\n });\n protected readonly _columnCount = computed(() => this.table.getVisibleLeafColumns().length);\n protected readonly _containerClass = computed(() => datatableContainerVariants({ appearance: this.appearance() }));\n protected readonly _headClass = computed(() => datatableHeadVariants({ appearance: this.appearance() }));\n protected readonly _isEmpty = computed(() => !this.loading() && this.table.getRowModel().rows.length === 0);\n protected readonly _rowClass = computed(() => datatableRowVariants({ appearance: this.appearance() }));\n protected readonly _skeletonRows = computed(() => Array.from({ length: this.loadingRows() }, (_, i) => i));\n protected readonly _tableClass = computed(() => cn(this.tableClass()));\n protected readonly currentPage = linkedSignal({\n source: () => this.pagination().pageIndex,\n computation: (pageIndex) => pageIndex + 1,\n });\n\n /**\n * Applies the real options once, after inputs are set.\n *\n * `injectTable` constructs the table from a `queueMicrotask` that can fire before Angular has\n * assigned any input, so it captures `columns: []`/`data: []`. Its own options effect then\n * *skips its first run* (an `isMount` guard inside the library) — and that skipped run is\n * exactly the one carrying the real values. Without this the table stays permanently empty no\n * matter what is bound.\n *\n * This runs in `ngOnInit` rather than a constructor `effect` because the effect fires in the\n * same too-early window and re-applies the same empty options; `ngOnInit` is the first point\n * where inputs are guaranteed present. Later changes are handled by the library's own effect,\n * which by then is past its mount guard.\n */\n ngOnInit(): void {\n const options = this._options();\n this.table.setOptions((previous) => ({ ...previous, ...options }));\n }\n\n protected onPageChange(page: number): void {\n this.pagination.update((current) => ({ ...current, pageIndex: page - 1 }));\n }\n\n protected onRowClick(row: TData): void {\n this.rowClicked.emit(row);\n }\n}\n","<div yuwTableContainer [class]=\"_containerClass()\">\n <table yuwTable [class]=\"_tableClass()\">\n @if (caption()) {\n <caption yuwCaption>{{ caption() }}</caption>\n }\n\n <thead yuwTHead [class]=\"_headClass()\">\n @for (headerGroup of table.getHeaderGroups(); track headerGroup.id) {\n <tr yuwTr [class]=\"_rowClass()\">\n @for (header of headerGroup.headers; track header.id) {\n @let sorted = header.column.getIsSorted();\n <th\n yuwTh\n scope=\"col\"\n [attr.colspan]=\"header.colSpan\"\n [attr.aria-sort]=\"sorted ? _ariaSort[sorted] : null\"\n [class]=\"_cellClasses().get(header.column.id)?.header\"\n >\n @if (!header.isPlaceholder) {\n @if (sortable() && header.column.getCanSort()) {\n <button\n type=\"button\"\n class=\"inline-flex items-center gap-1 select-none hover:text-foreground/80\"\n (click)=\"header.column.toggleSorting()\"\n >\n <ng-container\n *flexRender=\"header.column.columnDef.header; props: header.getContext(); let rendered\"\n >\n {{ rendered }}\n </ng-container>\n\n <ng-icon [name]=\"_sortIcon[sorted || 'none']\" class=\"shrink-0 text-xs\" aria-hidden=\"true\" />\n </button>\n } @else {\n <ng-container *flexRender=\"header.column.columnDef.header; props: header.getContext(); let rendered\">\n {{ rendered }}\n </ng-container>\n }\n }\n </th>\n }\n </tr>\n }\n </thead>\n\n <tbody yuwTBody>\n @if (loading()) {\n @for (row of _skeletonRows(); track row) {\n <tr yuwTr [class]=\"_rowClass()\">\n @for (column of table.getVisibleLeafColumns(); track column.id) {\n <td yuwTd [class]=\"_cellClasses().get(column.id)?.cell\">\n <span yuwSkeleton class=\"block h-4 w-full\"></span>\n </td>\n }\n </tr>\n }\n } @else if (_isEmpty()) {\n <tr yuwTr [class]=\"_rowClass()\">\n <td yuwTd [attr.colspan]=\"_columnCount()\" class=\"h-24 text-center text-muted-foreground\">\n {{ emptyText() ?? '' }}\n </td>\n </tr>\n } @else {\n @for (row of table.getRowModel().rows; track row.id) {\n <tr\n yuwTr\n [class]=\"_rowClass()\"\n [attr.data-state]=\"row.getIsSelected() ? 'selected' : null\"\n (click)=\"onRowClick(row.original)\"\n >\n @for (cell of row.getVisibleCells(); track cell.id) {\n <td yuwTd [class]=\"_cellClasses().get(cell.column.id)?.cell\">\n <ng-container *flexRender=\"cell.column.columnDef.cell; props: cell.getContext(); let rendered\">\n {{ rendered }}\n </ng-container>\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n</div>\n\n@if (paginated()) {\n <div class=\"flex items-center flex-wrap justify-end gap-4 py-3 px-1 max-lg:justify-center\">\n @if (customPagination()) {\n <ng-content select=\"[yuwDatatablePagination]\" />\n }\n <yuw-pagination\n [page]=\"currentPage()\"\n (pageChange)=\"onPageChange($event)\"\n [totalPages]=\"table.getPageCount() || 1\"\n [previousLabel]=\"previousPageLabel()\"\n [nextLabel]=\"nextPageLabel()\"\n [ellipsisSrText]=\"paginationEllipsisSrText()\"\n [ariaLabel]=\"paginationAriaLabel()\"\n color=\"secondary\"\n size=\"icon-sm\"\n class=\"flex\"\n />\n </div>\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { YuwCheckboxComponent } from '../../checkbox/checkbox.component';\n\n@Component({\n selector: 'yuw-datatable-row-select',\n standalone: true,\n imports: [YuwCheckboxComponent],\n template: `\n <yuw-checkbox\n [checked]=\"checked()\"\n [indeterminate]=\"indeterminate()\"\n [ariaLabel]=\"label()\"\n (checkedChange)=\"toggle()\"\n (click)=\"$event.stopPropagation()\"\n />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwDatatableRowSelect {\n readonly checked = input(false);\n readonly indeterminate = input(false);\n readonly label = input('Select row');\n readonly onToggle = input<() => void>(() => undefined);\n\n protected toggle(): void {\n this.onToggle()();\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { HlmAvatarImports } from 'yukit-web/helm/avatar';\nimport type { YuwAvatarGroupItemDto } from './avatar-group-item.interface';\n\n/** The size vocabulary of `<yuw-avatar>`. */\nexport type YuwAvatarSizeDto = 'default' | 'sm' | 'lg';\n\n/**\n * Displays a user or entity avatar with optional image, fallback text/initials, status badge, or overlapping group layout.\n *\n * Inputs:\n * - `size`: Avatar size (`'default'`, `'sm'`, `'lg'`). Default is `'default'`.\n * - `src`: Image URL for single-avatar mode. Omit to display fallback text.\n * - `alt`: Required. Accessible label for single-avatar mode and fallback text. User-facing text —\n * the consuming app is responsible for providing (and translating) it.\n * - `fallback`: Fallback text or initials shown when image is loading, unprovided, or fails to load.\n * - `badge`: Renders a status badge marker on the bottom-right corner (single-avatar mode).\n * - `group`: Array of item DTOs (`YuwAvatarGroupItemDto[]`) to render as an overlapping avatar group stack.\n * - `groupCount`: Overflow label string (e.g. `\"+5\"`) displayed at the end of an avatar group stack.\n * - `class`: Extra CSS classes merged onto the inner `hlm-avatar` element(s); merged last, so they win.\n *\n * Single Avatar Usage:\n * ```html\n * <yuw-avatar src=\"/path/to/user.png\" alt=\"Jane Doe\" fallback=\"JD\" />\n * <yuw-avatar alt=\"Jane Doe\" fallback=\"JD\" badge />\n * ```\n *\n * Avatar Group Usage:\n * ```html\n * <yuw-avatar [group]=\"teamMembers\" alt=\"Team\" groupCount=\"+5\" />\n * ```\n */\n@Component({\n selector: 'yuw-avatar',\n imports: [NgTemplateOutlet, ...HlmAvatarImports],\n host: {\n class: 'contents',\n },\n templateUrl: './avatar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwAvatarComponent {\n readonly alt = input.required<string>();\n readonly badge = input(false, { transform: booleanAttribute });\n readonly fallback = input<string | undefined>(undefined);\n readonly group = input<YuwAvatarGroupItemDto[] | undefined>(undefined);\n readonly groupCount = input<string | undefined>(undefined);\n readonly size = input<YuwAvatarSizeDto>('default');\n readonly src = input<string | undefined>(undefined);\n readonly userClass = input<string>('', { alias: 'class' });\n\n protected readonly _isGroup = computed(() => (this.group()?.length ?? 0) > 0);\n}\n","<ng-template #avatarBox let-src=\"src\" let-alt=\"alt\" let-fallback=\"fallback\" let-showBadge=\"showBadge\">\n <hlm-avatar [size]=\"size()\" [class]=\"userClass()\">\n @if (src) {\n <img hlmAvatarImage [src]=\"src\" [alt]=\"alt ?? ''\" />\n }\n <span hlmAvatarFallback>{{ fallback }}</span>\n\n @if (showBadge) {\n <span hlmAvatarBadge>\n <ng-content select=\"[yuwAvatarBadgeIcon]\" />\n </span>\n }\n </hlm-avatar>\n</ng-template>\n\n@if (_isGroup()) {\n <div hlmAvatarGroup>\n @for (entry of group(); track entry.alt + '|' + (entry.src ?? '')) {\n <ng-container\n [ngTemplateOutlet]=\"avatarBox\"\n [ngTemplateOutletContext]=\"{ src: entry.src, alt: entry.alt, fallback: entry.fallback, showBadge: false }\"\n />\n }\n\n @if (groupCount()) {\n <span hlmAvatarGroupCount>{{ groupCount() }}</span>\n }\n </div>\n} @else {\n <ng-container\n [ngTemplateOutlet]=\"avatarBox\"\n [ngTemplateOutletContext]=\"{ src: src(), alt: alt(), fallback: fallback(), showBadge: badge() }\"\n />\n}\n","import { Directive } from '@angular/core';\nimport {\n HlmItem,\n HlmItemActions,\n HlmItemContent,\n HlmItemDescription,\n HlmItemFooter,\n HlmItemGroup,\n HlmItemHeader,\n HlmItemMedia,\n HlmItemSeparator,\n HlmItemTitle,\n} from 'yukit-web/helm/item';\n\n/**\n * Container directive for list/row item layout structures.\n * Accepts optional `variant` and `size` inputs.\n *\n * Usage:\n * ```html\n * <div yuwItem>\n * <div yuwItemMedia><yuw-avatar fallback=\"JD\" alt=\"John Doe\" /></div>\n * <div yuwItemContent>\n * <h4 yuwItemTitle>John Doe</h4>\n * <p yuwItemDescription>Software Engineer</p>\n * </div>\n * <div yuwItemActions><yuw-button size=\"sm\">Follow</yuw-button></div>\n * </div>\n * ```\n */\n@Directive({\n selector: '[yuwItem], yuw-item',\n hostDirectives: [{ directive: HlmItem, inputs: ['variant', 'size'] }],\n})\nexport class YuwItemDirective {}\n\n/** Header slot directive for an item container. */\n@Directive({\n selector: '[yuwItemHeader], yuw-item-header',\n hostDirectives: [HlmItemHeader],\n})\nexport class YuwItemHeaderDirective {}\n\n/** Leading media slot directive (for icons, avatars, or images) at the start of an item. Supports `variant` (`'default'`, `'icon'`, `'image'`). */\n@Directive({\n selector: '[yuwItemMedia], yuw-item-media',\n hostDirectives: [{ directive: HlmItemMedia, inputs: ['variant'] }],\n})\nexport class YuwItemMediaDirective {}\n\n/** Main text content container directive for an item. */\n@Directive({\n selector: '[yuwItemContent], yuw-item-content',\n hostDirectives: [HlmItemContent],\n})\nexport class YuwItemContentDirective {}\n\n/** Title heading directive for an item. */\n@Directive({\n selector: '[yuwItemTitle], yuw-item-title',\n hostDirectives: [HlmItemTitle],\n})\nexport class YuwItemTitleDirective {}\n\n/** Subtitle or description paragraph directive for an item. */\n@Directive({\n selector: '[yuwItemDescription], yuw-item-description',\n hostDirectives: [HlmItemDescription],\n})\nexport class YuwItemDescriptionDirective {}\n\n/** Trailing action controls slot directive (for buttons, switches, or menu triggers) at the end of an item. */\n@Directive({\n selector: '[yuwItemActions], yuw-item-actions',\n hostDirectives: [HlmItemActions],\n})\nexport class YuwItemActionsDirective {}\n\n/** Footer slot directive for an item. */\n@Directive({\n selector: '[yuwItemFooter], yuw-item-footer',\n hostDirectives: [HlmItemFooter],\n})\nexport class YuwItemFooterDirective {}\n\n/** Container directive for grouping multiple item rows together into a list card or bordered group. */\n@Directive({\n selector: '[yuwItemGroup], yuw-item-group',\n hostDirectives: [HlmItemGroup],\n})\nexport class YuwItemGroupDirective {}\n\n/**\n * Visual separator line between items inside a group. Accepts `orientation` (`'horizontal'` or\n * `'vertical'`), reaching the underlying `BrnSeparator`, which owns the `role`,\n * `aria-orientation` and `data-orientation` attributes. Extends `HlmItemSeparator` (instead of\n * composing it via `hostDirectives`) because `orientation` is re-exposed by the helm from\n * `BrnSeparator` through its own `hostDirectives`, and host-directive forwarding is not\n * transitive (NG2017).\n */\n@Directive({\n selector: '[yuwItemSeparator], yuw-item-separator',\n})\nexport class YuwItemSeparatorDirective extends HlmItemSeparator {}\n\n/** Every item part, for a consumer's `imports`. */\nexport const YuwItemImports = [\n YuwItemDirective,\n YuwItemHeaderDirective,\n YuwItemMediaDirective,\n YuwItemContentDirective,\n YuwItemTitleDirective,\n YuwItemDescriptionDirective,\n YuwItemActionsDirective,\n YuwItemFooterDirective,\n YuwItemGroupDirective,\n YuwItemSeparatorDirective,\n] as const;\n","import { Directive } from '@angular/core';\nimport { BrnSheetClose, BrnSheetTrigger } from '@spartan-ng/brain/sheet';\n\n/**\n * Makes a `<yuw-button>` the trigger of the surrounding `<yuw-sheet>`.\n *\n * Mirrors `YuwDialogTriggerDirective`: the helm trigger only matches a native `button`, so the brain\n * directive is composed here instead, keeping `[hlmBtn]` inside `<yuw-button>`. `side` is forwarded\n * so a trigger can override which edge the sheet appears from.\n */\n@Directive({\n selector: 'yuw-button[yuwSheetTriggerButton]',\n hostDirectives: [{ directive: BrnSheetTrigger, inputs: ['id', 'side', 'type'] }],\n host: { 'data-slot': 'sheet-trigger' },\n})\nexport class YuwSheetTriggerDirective {}\n\n/** Closes the surrounding `<yuw-sheet>` when the host `<yuw-button>` is activated. */\n@Directive({\n selector: 'yuw-button[yuwSheetClose]',\n hostDirectives: [BrnSheetClose],\n host: { 'data-slot': 'sheet-close' },\n})\nexport class YuwSheetCloseDirective {}\n","import { Directive } from '@angular/core';\n\n/**\n * Marks an element as the sheet's footer content, projected into the footer slot.\n * Its presence is also what makes the footer render at all — without it the sheet\n * shows no empty footer strip.\n */\n@Directive({\n selector: '[yuwSheetFooter]',\n})\nexport class YuwSheetFooterDirective {}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n effect,\n input,\n model,\n viewChild,\n} from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideX } from '@ng-icons/lucide';\nimport { type ButtonVariants } from 'yukit-web/helm/button';\nimport { YuwButtonComponent } from '../button/button.component';\nimport { YuwSheetCloseDirective, YuwSheetTriggerDirective } from './sheet.directives';\nimport { HlmSheet, HlmSheetImports } from 'yukit-web/helm/sheet';\nimport { YuwSheetFooterDirective } from './sheet-footer.directive';\n\nexport type YuwSheetSideDto = 'top' | 'bottom' | 'left' | 'right';\n\nexport type YuwSheetScrollStrategyDto = null | 'close' | 'reposition';\n\nconst YUW_SHEET_OVERLAY_BASE_CLASS =\n 'data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 isolate bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs';\n\n/**\n * Slide-in sheet overlay panel component for side drawers, dialogs, and detail views.\n *\n * Accessibility: provide either `title` or `ariaLabel` — a modal panel without an accessible name\n * is announced as an anonymous dialog by screen readers.\n *\n * Inputs / Models:\n * - `open`: Two-way open/closed state (`boolean`). Drive directly via `[(open)]` to open/close programmatically.\n * - `showTrigger`: Whether to render the trigger button. Set `false` when opening only via `[(open)]`.\n * - `side`: Edge of the screen the panel slides in from (`'top'`, `'bottom'`, `'left'`, `'right'`). Default is `'right'`.\n * - `title`: Optional header title text. User-facing text the consuming app is responsible for translating.\n * - `description`: Optional header description text. User-facing text the consuming app is responsible for translating.\n * - `ariaLabel`: Accessible name for the sheet when no visible `title` is rendered. User-facing\n * text the consuming app is responsible for translating.\n * - `closeLabel`: Accessible label of the corner close (×) button. When set, the close button\n * renders and screen readers read this label; when absent there is no close button. User-facing\n * text the consuming app is responsible for translating.\n * - `panelClass`: Extra classes merged onto the sheet panel (e.g. `sm:max-w-lg` to widen it).\n * They win over the library defaults via `twMerge`. Note `twMerge` resolves per variant group, so a\n * plain utility does not displace a variant-prefixed default — to override `data-[side=left]:w-3/4`\n * the class has to be `data-[side=left]:w-64`, not `w-64`.\n * - `overlayClass`: Extra classes for the backdrop, for a sheet that should not dim the whole\n * viewport. Applied through `setOverlayClass` rather than a template binding: the backdrop lives in\n * the overlay too, and the helm's own class always wins the `class` input it exposes.\n * - `scrollStrategy`: What happens to page scroll while open. Defaults to the brain's blocking\n * strategy; pass `'reposition'` for a panel that should leave the page scrollable.\n * - `ariaModal`: Whether the sheet claims the rest of the page is hidden. Leave `true` for a real\n * modal; set `false` when content outside stays visible and usable, so the claim stays honest.\n * - `closeOnOutsidePointerEvents`: Whether a pointer press outside the panel closes it, backdrop\n * clicks included. Default is `true`, matching the brain from `@spartan-ng/brain` 1.3.4 on; pass\n * `false` for a panel that must be dismissed deliberately.\n * - `triggerVariant`: Button style variant for the trigger button.\n * - `triggerSize`: Button size for the trigger button.\n *\n * Usage:\n * ```html\n * <yuw-sheet [(open)]=\"isOpen\" side=\"right\" title=\"Edit Profile\" description=\"Update your account details.\" closeLabel=\"Close\">\n * <ng-container yuwSheetTrigger>Edit Profile</ng-container>\n *\n * <p>Sheet form content goes here.</p>\n *\n * <div yuwSheetFooter>\n * <yuw-button (clicked)=\"save()\">Save Changes</yuw-button>\n * </div>\n * </yuw-sheet>\n * ```\n */\n@Component({\n selector: 'yuw-sheet',\n imports: [...HlmSheetImports, YuwButtonComponent, YuwSheetTriggerDirective, YuwSheetCloseDirective, NgIcon],\n providers: [provideIcons({ lucideX })],\n host: {\n class: 'contents',\n },\n templateUrl: './sheet.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwSheetComponent {\n protected readonly hasFooter = contentChild(YuwSheetFooterDirective);\n private readonly sheet = viewChild.required(HlmSheet);\n\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly ariaModal = input(true, { transform: booleanAttribute });\n readonly closeLabel = input<string | undefined>(undefined);\n readonly closeOnOutsidePointerEvents = input(true, { transform: booleanAttribute });\n readonly description = input<string | undefined>(undefined);\n readonly open = model(false);\n readonly overlayClass = input<string | undefined>(undefined);\n readonly panelClass = input<string | undefined>(undefined);\n readonly scrollStrategy = input<YuwSheetScrollStrategyDto>(null);\n readonly showTrigger = input(true, { transform: booleanAttribute });\n readonly side = input<YuwSheetSideDto>('right');\n readonly title = input<string | undefined>(undefined);\n readonly triggerSize = input<ButtonVariants['size']>('default');\n readonly triggerVariant = input<ButtonVariants['variant']>('outline');\n\n protected readonly _sheetState = computed(() => (this.open() ? 'open' : 'closed') as 'open' | 'closed');\n\n constructor() {\n effect(() => {\n const overlayClass = this.overlayClass();\n if (overlayClass === undefined) return;\n\n this.sheet().setOverlayClass(`${YUW_SHEET_OVERLAY_BASE_CLASS} ${overlayClass}`);\n });\n }\n\n protected onStateChanged(state: 'open' | 'closed'): void {\n this.open.set(state === 'open');\n }\n}\n\nexport const YuwSheetImports = [YuwSheetComponent, YuwSheetFooterDirective] as const;\n","<hlm-sheet\n [side]=\"side()\"\n [state]=\"_sheetState()\"\n [aria-label]=\"ariaLabel()\"\n [aria-modal]=\"ariaModal()\"\n [scrollStrategy]=\"scrollStrategy()\"\n [closeOnOutsidePointerEvents]=\"closeOnOutsidePointerEvents()\"\n (stateChanged)=\"onStateChanged($event)\"\n>\n @if (showTrigger()) {\n <yuw-button yuwSheetTriggerButton [variant]=\"triggerVariant()\" [size]=\"triggerSize()\">\n <ng-content select=\"[yuwSheetTrigger]\" />\n </yuw-button>\n }\n\n <hlm-sheet-content *hlmSheetPortal [showCloseButton]=\"false\" [class]=\"panelClass()\">\n @if (title() || description()) {\n <div hlmSheetHeader>\n @if (title()) {\n <h2 hlmSheetTitle>{{ title() }}</h2>\n }\n @if (description()) {\n <p hlmSheetDescription>{{ description() }}</p>\n }\n </div>\n }\n\n <div class=\"flex-1 overflow-y-auto px-4\">\n <ng-content />\n </div>\n\n @if (hasFooter()) {\n <div hlmSheetFooter>\n <ng-content select=\"[yuwSheetFooter]\" />\n </div>\n }\n\n @if (closeLabel()) {\n <div class=\"absolute inset-e-3 top-3\">\n <yuw-button yuwSheetClose variant=\"ghost\" size=\"icon-sm\">\n <ng-icon yuwButtonIcon name=\"lucideX\" />\n <span class=\"sr-only\">{{ closeLabel() }}</span>\n </yuw-button>\n </div>\n }\n </hlm-sheet-content>\n</hlm-sheet>\n","import { Directive } from '@angular/core';\nimport { BrnPopoverTrigger } from '@spartan-ng/brain/popover';\n\n/**\n * Makes a `<yuw-button>` the trigger of the surrounding `<yuw-popover>`.\n *\n * The helm trigger directive's selector only matches a native `button`, so composing the brain\n * directive here is what lets the popover use `<yuw-button>` rather than a bare `[hlmBtn]` element.\n * Brain needs three things from its host, all of which `<yuw-button>` provides: the `click` that\n * bubbles up from the inner button, the `aria-expanded`/`data-state` attributes, and a host box to\n * anchor the panel against — hence `<yuw-button>`'s `inline-flex` host, since a `display: contents`\n * host has no rect for the overlay to position from.\n *\n * `data-slot` mirrors the helm directive so the popover stylesheet targets both identically.\n */\n@Directive({\n selector: 'yuw-button[yuwPopoverTriggerFor], yuw-button[yuwPopoverTriggerButton]',\n hostDirectives: [\n { directive: BrnPopoverTrigger, inputs: ['id', 'brnPopoverTriggerFor: yuwPopoverTriggerFor', 'type'] },\n ],\n host: { 'data-slot': 'popover-trigger' },\n})\nexport class YuwPopoverTriggerDirective {}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport { type ButtonVariants } from 'yukit-web/helm/button';\nimport { HlmPopoverImports } from 'yukit-web/helm/popover';\nimport { YuwButtonComponent } from '../button/button.component';\nimport { YuwPopoverTriggerDirective } from './popover.directives';\n\nexport type YuwPopoverAlignDto = 'start' | 'center' | 'end';\n\n/**\n * Popover component for displaying anchored floating overlay panels.\n *\n * Inputs / Models:\n * - `open`: Two-way open/closed state (`boolean`). Drive directly via `[(open)]` to open/close programmatically.\n * - `showTrigger`: Whether to render the trigger button. Set `false` when opening only via `[(open)]`.\n * - `align`: Panel alignment relative to trigger (`'start'`, `'center'`, `'end'`). Default is `'center'`.\n * - `sideOffset`: Pixel offset between the trigger and the panel. Default is `4`.\n * - `title`: Optional header title text. User-facing text the consuming app is responsible for translating.\n * - `description`: Optional header description text. User-facing text the consuming app is responsible for translating.\n * - `panelClass`: Extra classes merged onto the popover panel (e.g. `w-80` to widen it). They win\n * over the library defaults via `twMerge`.\n * - `triggerVariant`: Button style variant for the trigger button.\n * - `triggerSize`: Button size for the trigger button.\n * - `triggerTransparent`: Strips the trigger's background and border in every state (rest, hover,\n * open), for triggers whose projected content is the whole control — an avatar, a name, a chevron.\n * - `triggerClass`: Extra classes merged onto the trigger button, last, so they beat both the\n * variant classes and `triggerTransparent` (e.g. `h-auto p-0` to drop the button's own box).\n *\n * The trigger is a `<yuw-button>`; `YuwPopoverTriggerDirective` composes the brain trigger onto it,\n * so the popover reuses our button component instead of applying `[hlmBtn]` directly.\n *\n * Usage:\n * ```html\n * <yuw-popover [(open)]=\"isOpen\" title=\"Notifications\" description=\"You're all caught up.\">\n * <ng-container yuwPopoverTrigger>View Notifications</ng-container>\n *\n * <p>Popover content body goes here.</p>\n * </yuw-popover>\n * ```\n */\n@Component({\n selector: 'yuw-popover',\n imports: [...HlmPopoverImports, YuwButtonComponent, YuwPopoverTriggerDirective],\n host: {\n class: 'contents',\n },\n templateUrl: './popover.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwPopoverComponent {\n readonly align = input<YuwPopoverAlignDto>('center');\n readonly description = input<string | undefined>(undefined);\n readonly open = model(false);\n readonly panelClass = input<string | undefined>(undefined);\n readonly showTrigger = input(true, { transform: booleanAttribute });\n readonly sideOffset = input(4);\n readonly title = input<string | undefined>(undefined);\n readonly triggerClass = input<string>('');\n readonly triggerSize = input<ButtonVariants['size']>('default');\n readonly triggerTransparent = input(false, { transform: booleanAttribute });\n readonly triggerVariant = input<ButtonVariants['variant']>('outline');\n\n protected readonly _popoverState = computed(() => (this.open() ? 'open' : 'closed') as 'open' | 'closed');\n\n protected onOpenChange(state: 'open' | 'closed'): void {\n this.open.set(state === 'open');\n }\n}\n","<div\n hlmPopover\n [state]=\"_popoverState()\"\n [align]=\"align()\"\n [sideOffset]=\"sideOffset()\"\n (stateChanged)=\"onOpenChange($event)\"\n>\n @if (showTrigger()) {\n <yuw-button\n yuwPopoverTriggerButton\n [variant]=\"triggerVariant()\"\n [size]=\"triggerSize()\"\n [transparent]=\"triggerTransparent()\"\n [class]=\"triggerClass()\"\n >\n <ng-content select=\"[yuwPopoverTrigger]\" />\n </yuw-button>\n }\n\n <hlm-popover-content *hlmPopoverPortal [class]=\"panelClass()\">\n @if (title() || description()) {\n <div hlmPopoverHeader>\n @if (title()) {\n <p hlmPopoverTitle>{{ title() }}</p>\n }\n @if (description()) {\n <p hlmPopoverDescription>{{ description() }}</p>\n }\n </div>\n }\n\n <ng-content />\n </hlm-popover-content>\n</div>\n","import { Directive } from '@angular/core';\nimport { BrnTooltip, type BrnTooltipPosition, provideBrnTooltipDefaultOptions } from '@spartan-ng/brain/tooltip';\nimport {\n DEFAULT_TOOLTIP_CONTENT_CLASSES,\n DEFAULT_TOOLTIP_SVG_CLASS,\n tooltipPositionVariants,\n} from 'yukit-web/helm/tooltip';\nimport { hlm } from 'yukit-web/helm/utils';\n\nexport type YuwTooltipPositionDto = 'top' | 'bottom' | 'left' | 'right';\n\n/**\n * Tooltip directive applied directly to the element that should show a hint on hover/focus.\n *\n * Inputs:\n * - `yuwTooltip`: Tooltip text (or `TemplateRef`) to display. User-facing text the consuming app\n * is responsible for translating.\n * - `position`: Side the tooltip opens on (`'top'`, `'bottom'`, `'left'`, `'right'`). Default is `'top'`.\n * - `showDelay`: Milliseconds before the tooltip opens on hover. Defaults to the Brain tooltip\n * config default (`150`).\n * - `hideDelay`: Milliseconds before the tooltip closes after the pointer leaves. Defaults to the\n * Brain tooltip config default (`100`).\n * - `tooltipDisabled`: Disables the tooltip entirely.\n *\n * Usage:\n * ```html\n * <button yuwTooltip=\"Save changes\" hlmBtn>Save</button>\n * <yuw-button [yuwTooltip]=\"helpText\" position=\"right\">Help</yuw-button>\n * ```\n */\n@Directive({\n selector: '[yuwTooltip]',\n providers: [\n provideBrnTooltipDefaultOptions({\n svgClasses: DEFAULT_TOOLTIP_SVG_CLASS,\n tooltipContentClasses: DEFAULT_TOOLTIP_CONTENT_CLASSES,\n arrowClasses: (position: BrnTooltipPosition) => hlm(tooltipPositionVariants({ position })),\n }),\n ],\n hostDirectives: [\n {\n directive: BrnTooltip,\n inputs: ['brnTooltip: yuwTooltip', 'position', 'hideDelay', 'showDelay', 'tooltipDisabled'],\n },\n ],\n})\nexport class YuwTooltipDirective {}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { HlmSpinner } from 'yukit-web/helm/spinner';\n\n/**\n * Indeterminate loading spinner.\n *\n * Inputs:\n * - `label`: Accessible label announced by screen readers. User-facing text the consuming app is\n * responsible for translating.\n * - `icon`: Name of a registered icon to spin instead of the default loader.\n *\n * Usage:\n * ```html\n * <yuw-spinner label=\"Cargando\" />\n * ```\n */\n@Component({\n selector: 'yuw-spinner',\n imports: [HlmSpinner],\n host: {\n class: 'contents',\n },\n templateUrl: './spinner.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwSpinnerComponent {\n readonly icon = input<string>('lucideLoader2');\n readonly label = input.required<string>();\n}\n","<hlm-spinner [icon]=\"icon()\" [aria-label]=\"label()\" />\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input, numberAttribute } from '@angular/core';\nimport type { ToastOptions } from '@spartan-ng/brain/sonner';\nimport { HlmToaster } from 'yukit-web/helm/sonner';\n\nexport type YuwToasterPositionDto =\n 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';\n\nexport type YuwToasterThemeDto = 'light' | 'dark' | 'system';\n\n/**\n * Global toast host. Mount once near the application root; individual toasts are dispatched\n * through the `toast` API from `@spartan-ng/brain/sonner`.\n *\n * Inputs:\n * - `richColors`: Enables per-type colored toasts (success, error, warning, info). Enabled by\n * default — a deliberate deviation from the spartan default (`false`).\n * - `theme`: Toast color theme (`'light'`, `'dark'`, `'system'`). Default is `'light'` (the helm\n * default) — apps rendering in dark mode must pass `'dark'` (or `'system'`) explicitly.\n * - `toastOptions`: Default options applied to every toast (classes, styles, etc.), passed\n * through to the underlying sonner toaster.\n * - `position`: Screen corner the stack renders in. Default is `'bottom-right'`.\n * - `duration`: Milliseconds a toast stays visible. Default is `4000`.\n * - `visibleToasts`: Maximum simultaneously visible toasts. Default is `3`.\n * - `closeButton`: Renders a dismiss button on each toast.\n * - `expand`: Keeps the stack expanded instead of collapsed.\n *\n * Usage:\n * ```html\n * <yuw-toaster />\n * ```\n */\n@Component({\n selector: 'yuw-toaster',\n imports: [HlmToaster],\n host: {\n class: 'contents',\n },\n templateUrl: './toaster.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwToasterComponent {\n readonly closeButton = input(false, { transform: booleanAttribute });\n readonly duration = input(4000, { transform: numberAttribute });\n readonly expand = input(false, { transform: booleanAttribute });\n readonly position = input<YuwToasterPositionDto>('bottom-right');\n readonly richColors = input(true, { transform: booleanAttribute });\n readonly theme = input<YuwToasterThemeDto>('light');\n readonly toastOptions = input<ToastOptions>({});\n readonly visibleToasts = input(3, { transform: numberAttribute });\n}\n","<hlm-toaster\n [richColors]=\"richColors()\"\n [theme]=\"theme()\"\n [toastOptions]=\"toastOptions()\"\n [position]=\"position()\"\n [duration]=\"duration()\"\n [visibleToasts]=\"visibleToasts()\"\n [closeButton]=\"closeButton()\"\n [expand]=\"expand()\"\n/>\n","import { Directive } from '@angular/core';\n\n/**\n * Marks a projected element as the trailing action of a `<yuw-alert>`, which pins it to the\n * top-right corner of the alert.\n */\n@Directive({\n selector: '[yuwAlertAction]',\n})\nexport class YuwAlertActionDirective {}\n","import { Directive } from '@angular/core';\n\n/**\n * Marks projected rich content (links, `<strong>`, …) as the description of a `<yuw-alert>`.\n *\n * When present, the alert projects this content into its description slot instead of rendering\n * the `description` string input. The content lands inside the element carrying the helm\n * `alert-description` data-slot, so the alert's grid keeps positioning it correctly.\n */\n@Directive({\n selector: '[yuwAlertDescription]',\n})\nexport class YuwAlertDescriptionDirective {}\n","import { Directive } from '@angular/core';\n\n/**\n * Marks projected rich content (links, `<strong>`, …) as the title of a `<yuw-alert>`.\n *\n * When present, the alert projects this content into its title slot instead of rendering the\n * `title` string input. The content lands inside the element carrying the helm `alert-title`\n * data-slot, so the alert's grid keeps positioning it correctly.\n */\n@Directive({\n selector: '[yuwAlertTitle]',\n})\nexport class YuwAlertTitleDirective {}\n","import { ChangeDetectionStrategy, Component, contentChild, input } from '@angular/core';\nimport { HlmAlert, HlmAlertAction, HlmAlertDescription, HlmAlertTitle } from 'yukit-web/helm/alert';\nimport { YuwAlertActionDirective } from './alert-action.directive';\nimport { YuwAlertDescriptionDirective } from './alert-description.directive';\nimport { YuwAlertTitleDirective } from './alert-title.directive';\n\nexport type YuwAlertVariantDto = 'default' | 'destructive';\n\n/**\n * Inline, non-blocking message panel for status and validation feedback.\n *\n * Inputs:\n * - `variant`: Visual tone (`'default'`, `'destructive'`). Default is `'default'`.\n * - `title`: Heading text. User-facing text the consuming app is responsible for translating.\n * Ignored when a `[yuwAlertTitle]` slot is projected.\n * - `description`: Body text. User-facing text the consuming app is responsible for translating.\n * Ignored when a `[yuwAlertDescription]` slot is projected.\n * - `class`: Classes forwarded to the inner `hlm-alert` panel (the host is `display: contents`,\n * so they would otherwise never reach the rendered element). The consumer's classes win over\n * the alert's own styling.\n *\n * Content slots:\n * - `[yuwAlertIcon]`: Leading icon.\n * - `[yuwAlertTitle]`: Rich title content (links, `<strong>`, …). Replaces the `title` input.\n * - `[yuwAlertDescription]`: Rich description content. Replaces the `description` input.\n * - `[yuwAlertAction]`: Trailing action control, pinned to the top-right corner.\n *\n * Usage:\n * ```html\n * <yuw-alert variant=\"destructive\" title=\"Pago rechazado\" description=\"Revisa los datos de la tarjeta.\">\n * <ng-icon yuwAlertIcon name=\"lucideTriangleAlert\" />\n * <yuw-button yuwAlertAction size=\"sm\" variant=\"ghost\">Reintentar</yuw-button>\n * </yuw-alert>\n *\n * <yuw-alert>\n * <span yuwAlertTitle>Condiciones <strong>actualizadas</strong></span>\n * <span yuwAlertDescription>Consulta los <a href=\"/cambios\">cambios</a> antes de continuar.</span>\n * </yuw-alert>\n * ```\n */\n@Component({\n selector: 'yuw-alert',\n imports: [HlmAlert, HlmAlertTitle, HlmAlertDescription, HlmAlertAction],\n host: {\n class: 'contents',\n },\n templateUrl: './alert.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwAlertComponent {\n protected readonly descriptionSlot = contentChild(YuwAlertDescriptionDirective);\n protected readonly hasAction = contentChild(YuwAlertActionDirective);\n protected readonly titleSlot = contentChild(YuwAlertTitleDirective);\n\n readonly description = input<string | undefined>(undefined);\n readonly title = input<string | undefined>(undefined);\n readonly userClass = input<string>('', { alias: 'class' });\n readonly variant = input<YuwAlertVariantDto>('default');\n}\n\nexport const YuwAlertImports = [\n YuwAlertComponent,\n YuwAlertActionDirective,\n YuwAlertTitleDirective,\n YuwAlertDescriptionDirective,\n] as const;\n","<hlm-alert [variant]=\"variant()\" [class]=\"userClass()\">\n <ng-content select=\"[yuwAlertIcon]\" />\n\n @if (titleSlot()) {\n <div hlmAlertTitle>\n <ng-content select=\"[yuwAlertTitle]\" />\n </div>\n } @else if (title()) {\n <div hlmAlertTitle>{{ title() }}</div>\n }\n\n @if (descriptionSlot()) {\n <div hlmAlertDescription>\n <ng-content select=\"[yuwAlertDescription]\" />\n </div>\n } @else if (description()) {\n <div hlmAlertDescription>{{ description() }}</div>\n }\n\n <ng-content />\n\n @if (hasAction()) {\n <div hlmAlertAction>\n <ng-content select=\"[yuwAlertAction]\" />\n </div>\n }\n</hlm-alert>\n","import { Directive } from '@angular/core';\nimport { BrnDialogClose, BrnDialogTrigger } from '@spartan-ng/brain/dialog';\n\n/**\n * Makes a `<yuw-button>` the trigger of the surrounding `<yuw-dialog>`.\n *\n * The helm trigger directive's selector only matches a native `button`, so composing the brain\n * directive here is what lets the dialog use `<yuw-button>` rather than applying `[hlmBtn]` outside\n * of `<yuw-button>` itself. A dialog is centred rather than anchored to its trigger, so brain needs\n * only the click — which bubbles up from the inner button — and the `aria-expanded`/`data-state`\n * attributes it writes on the host.\n */\n@Directive({\n selector: 'yuw-button[yuwDialogTriggerFor], yuw-button[yuwDialogTriggerButton]',\n hostDirectives: [{ directive: BrnDialogTrigger, inputs: ['id', 'brnDialogTriggerFor: yuwDialogTriggerFor', 'type'] }],\n host: { 'data-slot': 'dialog-trigger' },\n})\nexport class YuwDialogTriggerDirective {}\n\n/** Closes the surrounding `<yuw-dialog>` when the host `<yuw-button>` is activated. */\n@Directive({\n selector: 'yuw-button[yuwDialogClose]',\n hostDirectives: [BrnDialogClose],\n host: { 'data-slot': 'dialog-close' },\n})\nexport class YuwDialogCloseDirective {}\n","import { Directive } from '@angular/core';\n\n/**\n * Marks an element as the dialog's footer content, projected into the footer slot.\n * Its presence is also what makes the footer render at all — without it the dialog\n * shows no empty footer strip.\n */\n@Directive({\n selector: '[yuwDialogFooter]',\n})\nexport class YuwDialogFooterDirective {}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n input,\n model,\n} from '@angular/core';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideX } from '@ng-icons/lucide';\nimport { type ButtonVariants } from 'yukit-web/helm/button';\nimport { YuwButtonComponent } from '../button/button.component';\nimport { YuwDialogCloseDirective, YuwDialogTriggerDirective } from './dialog.directives';\nimport { HlmDialogImports } from 'yukit-web/helm/dialog';\nimport { YuwDialogFooterDirective } from './dialog-footer.directive';\nimport type { YuwColorDto } from '../../interface/color.interface';\n\n/**\n * Modal dialog overlay for focused tasks and forms.\n *\n * Accessibility: provide either `title` or `ariaLabel` — a modal without an accessible name is\n * announced as an anonymous dialog by screen readers.\n *\n * Inputs / Models:\n * - `open`: Two-way open/closed state. Drive via `[(open)]` to control it programmatically.\n * - `showTrigger`: Whether to render the trigger button. Set `false` when opening only via `[(open)]`.\n * - `title`: Header title text. User-facing text the consuming app is responsible for translating.\n * - `description`: Header description text. User-facing text the consuming app is responsible for translating.\n * - `ariaLabel`: Accessible name for the dialog when no visible `title` is rendered. User-facing\n * text the consuming app is responsible for translating.\n * - `closeLabel`: Accessible label of the corner close (×) button. When set, the close button\n * renders and screen readers read this label; when absent there is no close button. User-facing\n * text the consuming app is responsible for translating.\n * - `panelClass`: Extra classes merged onto the dialog panel (e.g. `sm:max-w-lg` to widen it).\n * They win over the library defaults via `twMerge`.\n * - `triggerVariant`: Button style variant for the trigger button. Default is `'outline'`.\n * - `triggerSize`: Button size for the trigger button.\n *\n * Content slots:\n * - `[yuwDialogTrigger]`: Trigger button content.\n * - `[yuwDialogFooter]`: Footer actions (`YuwDialogFooterDirective`). The footer only renders when\n * this slot is filled.\n *\n * The projected body scrolls internally when it is taller than the viewport, like `<yuw-sheet>`.\n *\n * Usage:\n * ```html\n * <yuw-dialog [(open)]=\"isOpen\" title=\"Crear proyecto\" description=\"Asigna un nombre para empezar.\" closeLabel=\"Cerrar\">\n * <ng-container yuwDialogTrigger>Crear proyecto</ng-container>\n *\n * <yuw-input [(value)]=\"name\" label=\"Nombre\" />\n *\n * <div yuwDialogFooter>\n * <yuw-button (clicked)=\"save()\">Guardar</yuw-button>\n * </div>\n * </yuw-dialog>\n * ```\n */\n@Component({\n selector: 'yuw-dialog',\n imports: [...HlmDialogImports, YuwButtonComponent, YuwDialogTriggerDirective, YuwDialogCloseDirective, NgIcon],\n providers: [provideIcons({ lucideX })],\n host: {\n class: 'contents',\n },\n templateUrl: './dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwDialogComponent {\n protected readonly hasFooter = contentChild(YuwDialogFooterDirective);\n\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly closeLabel = input<string | undefined>(undefined);\n readonly description = input<string | undefined>(undefined);\n readonly open = model(false);\n readonly panelClass = input<string | undefined>(undefined);\n readonly showTrigger = input(true, { transform: booleanAttribute });\n readonly title = input<string | undefined>(undefined);\n readonly triggerColor = input<YuwColorDto>('secondary');\n readonly triggerSize = input<ButtonVariants['size']>('default');\n readonly triggerVariant = input<ButtonVariants['variant']>('outline');\n\n protected readonly _dialogState = computed(() => (this.open() ? 'open' : 'closed') as 'open' | 'closed');\n\n protected onStateChanged(state: 'open' | 'closed'): void {\n this.open.set(state === 'open');\n }\n}\n\nexport const YuwDialogImports = [YuwDialogComponent, YuwDialogFooterDirective] as const;\n","<hlm-dialog [state]=\"_dialogState()\" [aria-label]=\"ariaLabel()\" (stateChanged)=\"onStateChanged($event)\">\n @if (showTrigger()) {\n <yuw-button yuwDialogTriggerButton [color]=\"triggerColor()\" [variant]=\"triggerVariant()\" [size]=\"triggerSize()\">\n <ng-content select=\"[yuwDialogTrigger]\" />\n </yuw-button>\n }\n\n <hlm-dialog-content\n *hlmDialogPortal\n [showCloseButton]=\"false\"\n class=\"flex max-h-[calc(100dvh-2rem)] flex-col\"\n [class]=\"panelClass()\"\n >\n @if (title() || description()) {\n <div hlmDialogHeader>\n @if (title()) {\n <h2 hlmDialogTitle>{{ title() }}</h2>\n }\n @if (description()) {\n <p hlmDialogDescription>{{ description() }}</p>\n }\n </div>\n }\n\n <div class=\"flex-1 overflow-y-auto\">\n <ng-content />\n </div>\n\n @if (hasFooter()) {\n <div hlmDialogFooter>\n <ng-content select=\"[yuwDialogFooter]\" />\n </div>\n }\n\n @if (closeLabel()) {\n <div class=\"absolute inset-e-2 inset-t-2\">\n <yuw-button yuwDialogClose variant=\"ghost\" size=\"icon-sm\">\n <ng-icon yuwButtonIcon name=\"lucideX\" />\n <span class=\"sr-only\">{{ closeLabel() }}</span>\n </yuw-button>\n </div>\n }\n </hlm-dialog-content>\n</hlm-dialog>\n","import { Directive } from '@angular/core';\nimport { BrnAlertDialogTrigger } from '@spartan-ng/brain/alert-dialog';\n\n/**\n * Makes a `<yuw-button>` the trigger of the surrounding `<yuw-alert-dialog>`.\n *\n * Mirrors `YuwDialogTriggerDirective`: the helm trigger only matches a native `button`, so the brain\n * directive is composed here instead, keeping `[hlmBtn]` inside `<yuw-button>`.\n */\n@Directive({\n selector: 'yuw-button[yuwAlertDialogTriggerFor], yuw-button[yuwAlertDialogTriggerButton]',\n hostDirectives: [\n {\n directive: BrnAlertDialogTrigger,\n inputs: ['id', 'brnAlertDialogTriggerFor: yuwAlertDialogTriggerFor', 'type'],\n },\n ],\n host: { 'data-slot': 'alert-dialog-trigger' },\n})\nexport class YuwAlertDialogTriggerDirective {}\n","import { Directive } from '@angular/core';\n\n/**\n * Marks a projected element as the leading media of a `<yuw-alert-dialog>`, rendered in a\n * highlighted square above or beside the title.\n */\n@Directive({\n selector: '[yuwAlertDialogMedia]',\n})\nexport class YuwAlertDialogMediaDirective {}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n input,\n model,\n output,\n} from '@angular/core';\nimport { HlmAlertDialogImports } from 'yukit-web/helm/alert-dialog';\nimport { type ButtonVariants } from 'yukit-web/helm/button';\nimport { YuwButtonComponent } from '../button/button.component';\nimport { YuwAlertDialogTriggerDirective } from './alert-dialog.directives';\nimport { YuwAlertDialogMediaDirective } from './alert-dialog-media.directive';\n\nexport type YuwAlertDialogSizeDto = 'sm' | 'default';\n\n/**\n * Blocking confirmation dialog for destructive or irreversible actions. Unlike `<yuw-dialog>` it\n * cannot be dismissed by clicking the backdrop, so the user must pick one of the two actions.\n *\n * Inputs / Models:\n * - `open`: Two-way open/closed state. Drive via `[(open)]` to control it programmatically.\n * - `showTrigger`: Whether to render the trigger button. Set `false` when opening only via `[(open)]`.\n * - `title`: Header title text. User-facing text the consuming app is responsible for translating.\n * - `description`: Header description text. User-facing text the consuming app is responsible for translating.\n * - `confirmLabel`: Label of the confirm action. User-facing text the consuming app is responsible for translating.\n * - `cancelLabel`: Label of the cancel action. User-facing text the consuming app is responsible for translating.\n * - `confirmVariant`: Button style variant for the confirm action. Use `'destructive'` for deletions.\n * - `size`: Content width (`'sm'`, `'default'`). Default is `'default'`.\n * - `triggerVariant`: Button style variant for the trigger button.\n * - `triggerSize`: Button size for the trigger button.\n *\n * Outputs:\n * - `confirmed`: Emitted when the confirm action is activated.\n * - `cancelled`: Emitted only when the cancel button is activated — programmatic closes (setting\n * `open` to `false`) do not emit it.\n *\n * Content slots:\n * - `[yuwAlertDialogTrigger]`: Trigger button content.\n * - `[yuwAlertDialogMedia]`: Leading media/icon shown above or beside the title.\n *\n * Usage:\n * ```html\n * <yuw-alert-dialog\n * [(open)]=\"isOpen\"\n * title=\"¿Eliminar factura?\"\n * description=\"Esta acción no se puede deshacer.\"\n * confirmLabel=\"Eliminar\"\n * cancelLabel=\"Cancelar\"\n * confirmVariant=\"destructive\"\n * (confirmed)=\"delete()\" />\n * ```\n */\n@Component({\n selector: 'yuw-alert-dialog',\n imports: [...HlmAlertDialogImports, YuwButtonComponent, YuwAlertDialogTriggerDirective],\n host: {\n class: 'contents',\n },\n templateUrl: './alert-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwAlertDialogComponent {\n protected readonly hasMedia = contentChild(YuwAlertDialogMediaDirective);\n\n readonly cancelLabel = input.required<string>();\n readonly confirmLabel = input.required<string>();\n readonly confirmVariant = input<ButtonVariants['variant']>('default');\n readonly description = input<string | undefined>(undefined);\n readonly open = model(false);\n readonly showTrigger = input(true, { transform: booleanAttribute });\n readonly size = input<YuwAlertDialogSizeDto>('default');\n readonly title = input.required<string>();\n readonly triggerSize = input<ButtonVariants['size']>('default');\n readonly triggerVariant = input<ButtonVariants['variant']>('outline');\n\n readonly cancelled = output<void>();\n readonly confirmed = output<void>();\n\n protected readonly _dialogState = computed(() => (this.open() ? 'open' : 'closed') as 'open' | 'closed');\n\n protected onStateChanged(state: 'open' | 'closed'): void {\n this.open.set(state === 'open');\n }\n}\n","<hlm-alert-dialog [state]=\"_dialogState()\" (stateChanged)=\"onStateChanged($event)\">\n @if (showTrigger()) {\n <yuw-button yuwAlertDialogTriggerButton [variant]=\"triggerVariant()\" [size]=\"triggerSize()\">\n <ng-content select=\"[yuwAlertDialogTrigger]\" />\n </yuw-button>\n }\n\n <hlm-alert-dialog-content *hlmAlertDialogPortal [size]=\"size()\">\n <div hlmAlertDialogHeader>\n @if (hasMedia()) {\n <div hlmAlertDialogMedia>\n <ng-content select=\"[yuwAlertDialogMedia]\" />\n </div>\n }\n\n <h2 hlmAlertDialogTitle>{{ title() }}</h2>\n\n @if (description()) {\n <p hlmAlertDialogDescription>{{ description() }}</p>\n }\n </div>\n\n <ng-content />\n\n <div hlmAlertDialogFooter>\n <button hlmAlertDialogCancel (click)=\"cancelled.emit()\">{{ cancelLabel() }}</button>\n <button hlmAlertDialogAction [variant]=\"confirmVariant()\" (click)=\"confirmed.emit()\">\n {{ confirmLabel() }}\n </button>\n </div>\n </hlm-alert-dialog-content>\n</hlm-alert-dialog>\n","import { cva } from 'class-variance-authority';\nimport type { YuwFieldSizeDto } from '../../interface/text-field.interface';\n\n/**\n * Size classes for `<yuw-tabs>`, applied to the `hlm-tabs-list`.\n *\n * Two things scale, and both have to be written with the helm's own modifier prefixes so\n * tailwind-merge displaces the helm class rather than leaving it standing:\n *\n * - The list height, declared by the helm as `group-data-horizontal/tabs:h-8`. Only the horizontal\n * orientation has a fixed height; the vertical one is `h-fit` and is left alone.\n * - The triggers' horizontal padding, reached through a descendant selector. The helm's `px-1.5` is\n * tight enough that a taller list would look cramped, and the triggers are separate components\n * with no class passthrough. Their height needs nothing — `h-[calc(100%-1px)]` already tracks the\n * list.\n */\nexport const yuwTabsSizeVariants = cva('', {\n variants: {\n size: {\n default: 'group-data-horizontal/tabs:h-10 [&_[data-slot=tabs-trigger]]:px-2.5',\n xs: 'group-data-horizontal/tabs:h-7 [&_[data-slot=tabs-trigger]]:px-1.5',\n sm: 'group-data-horizontal/tabs:h-9 [&_[data-slot=tabs-trigger]]:px-2',\n lg: 'group-data-horizontal/tabs:h-11 [&_[data-slot=tabs-trigger]]:px-3',\n } satisfies Record<YuwFieldSizeDto, string>,\n },\n defaultVariants: {\n size: 'default',\n },\n});\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\n\n/**\n * Declares the content of a single `<yuw-tabs>` panel. Apply it to an `<ng-template>` and pass the\n * id of the tab it belongs to, matching an entry in the `tabs` input.\n *\n * Usage:\n * ```html\n * <ng-template yuwTabPanel=\"billing\">Contenido de facturación</ng-template>\n * ```\n */\n@Directive({\n selector: 'ng-template[yuwTabPanel]',\n})\nexport class YuwTabPanelDirective {\n readonly templateRef = inject<TemplateRef<unknown>>(TemplateRef);\n\n readonly tabId = input.required<string>({ alias: 'yuwTabPanel' });\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChildren, input, model } from '@angular/core';\nimport { HlmTabsImports } from 'yukit-web/helm/tabs';\nimport type { YuwTabItemDto } from './tab-item.interface';\nimport type { YuwFieldSizeDto } from '../../interface/text-field.interface';\nimport { yuwTabsSizeVariants } from './tabs.variants';\nimport { YuwTabPanelDirective } from './tab-panel.directive';\n\nexport type YuwTabsVariantDto = 'default' | 'line';\nexport type YuwTabsOrientationDto = 'horizontal' | 'vertical';\nexport type YuwTabsActivationModeDto = 'automatic' | 'manual';\n\n/**\n * Tabbed navigation between sibling panels.\n *\n * Triggers come from the `tabs` input; each panel's content is declared by the consumer as an\n * `<ng-template yuwTabPanel=\"<id>\">` whose id matches a tab. Panels are lazy: a panel's content\n * is only instantiated the first time its tab becomes active (and stays alive, hidden, after\n * switching away).\n *\n * Inputs / Models:\n * - `tabs`: The tab definitions (`YuwTabItemDto[]`) rendered as triggers, in order.\n * - `activeTab`: Two-way id of the selected tab. Drive via `[(activeTab)]` to control it\n * programmatically; listen to `activeTabChange` to react to activations.\n * - `size`: Tab-list height, matching the `<yuw-button>` of the same name.\n * - `variant`: Trigger list style (`'default'` filled, `'line'` underlined). Default is `'default'`.\n * - `orientation`: Layout direction (`'horizontal'`, `'vertical'`). Default is `'horizontal'`.\n * - `activationMode`: How keyboard focus activates tabs (`'automatic'` activates on focus,\n * `'manual'` requires Enter/Space). Default is `'automatic'`.\n *\n * Usage:\n * ```html\n * <yuw-tabs [tabs]=\"tabs\" [(activeTab)]=\"selected\">\n * <ng-template yuwTabPanel=\"general\">Contenido general</ng-template>\n * <ng-template yuwTabPanel=\"billing\">Contenido de facturación</ng-template>\n * </yuw-tabs>\n * ```\n */\n@Component({\n selector: 'yuw-tabs',\n imports: [NgTemplateOutlet, ...HlmTabsImports],\n host: {\n class: 'contents',\n },\n templateUrl: './tabs.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwTabsComponent {\n protected readonly panels = contentChildren(YuwTabPanelDirective);\n\n readonly activationMode = input<YuwTabsActivationModeDto>('automatic');\n readonly activeTab = model.required<string>();\n readonly orientation = input<YuwTabsOrientationDto>('horizontal');\n readonly size = input<YuwFieldSizeDto>('default');\n readonly tabs = input.required<YuwTabItemDto[]>();\n readonly variant = input<YuwTabsVariantDto>('default');\n\n protected readonly _listClass = computed(() => yuwTabsSizeVariants({ size: this.size() }));\n\n protected onTabActivated(tabId: string): void {\n this.activeTab.set(tabId);\n }\n}\n","<hlm-tabs\n [tab]=\"activeTab()\"\n [orientation]=\"orientation()\"\n [activationMode]=\"activationMode()\"\n (tabActivated)=\"onTabActivated($event)\"\n>\n <hlm-tabs-list [variant]=\"variant()\" [class]=\"_listClass()\">\n @for (tab of tabs(); track tab.id) {\n <button [hlmTabsTrigger]=\"tab.id\" [disabled]=\"tab.disabled ?? false\">{{ tab.label }}</button>\n }\n </hlm-tabs-list>\n\n @for (panel of panels(); track panel.tabId()) {\n <div [hlmTabsContent]=\"panel.tabId()\">\n <ng-template hlmTabsContentLazy>\n <ng-container [ngTemplateOutlet]=\"panel.templateRef\" />\n </ng-template>\n </div>\n }\n</hlm-tabs>\n","import { Directive } from '@angular/core';\nimport { provideBrnButtonConfig } from 'yukit-web/helm/button';\nimport {\n HlmAttachment,\n HlmAttachmentAction,\n HlmAttachmentActions,\n HlmAttachmentContent,\n HlmAttachmentDescription,\n HlmAttachmentGroup,\n HlmAttachmentMedia,\n HlmAttachmentTitle,\n HlmAttachmentTrigger,\n} from 'yukit-web/helm/attachment';\n\n/**\n * Container directive for a single file attachment card.\n *\n * Accepts `state` (`'idle'`, `'uploading'`, `'processing'`, `'error'`, `'done'`), `size`\n * (`'default'`, `'sm'`, `'xs'`) and `orientation` (`'horizontal'`, `'vertical'`), which drive the\n * styling of every nested slot.\n *\n * Usage:\n * ```html\n * <div yuwAttachment state=\"uploading\">\n * <div yuwAttachmentMedia><ng-icon name=\"lucideFileText\" /></div>\n * <div yuwAttachmentContent>\n * <span yuwAttachmentTitle>informe.pdf</span>\n * <span yuwAttachmentDescription>2,4 MB</span>\n * </div>\n * <div yuwAttachmentActions>\n * <button yuwAttachmentAction><ng-icon name=\"lucideX\" /></button>\n * </div>\n * </div>\n * ```\n */\n@Directive({\n selector: '[yuwAttachment], yuw-attachment',\n hostDirectives: [{ directive: HlmAttachment, inputs: ['state', 'size', 'orientation'] }],\n})\nexport class YuwAttachmentDirective {}\n\n/** Scrollable, snapping row that lays out several attachment cards. */\n@Directive({\n selector: '[yuwAttachmentGroup], yuw-attachment-group',\n hostDirectives: [HlmAttachmentGroup],\n})\nexport class YuwAttachmentGroupDirective {}\n\n/** Leading media slot of an attachment, for a file-type icon or an image preview. Supports `variant` (`'icon'`, `'image'`). */\n@Directive({\n selector: '[yuwAttachmentMedia], yuw-attachment-media',\n hostDirectives: [{ directive: HlmAttachmentMedia, inputs: ['variant'] }],\n})\nexport class YuwAttachmentMediaDirective {}\n\n/** Text content container of an attachment, holding its title and description. */\n@Directive({\n selector: '[yuwAttachmentContent], yuw-attachment-content',\n hostDirectives: [HlmAttachmentContent],\n})\nexport class YuwAttachmentContentDirective {}\n\n/** File name of an attachment. Truncates and shimmers while the attachment is uploading or processing. */\n@Directive({\n selector: '[yuwAttachmentTitle], yuw-attachment-title',\n hostDirectives: [HlmAttachmentTitle],\n})\nexport class YuwAttachmentTitleDirective {}\n\n/** Secondary line of an attachment, for file size, progress, or an error message. */\n@Directive({\n selector: '[yuwAttachmentDescription], yuw-attachment-description',\n hostDirectives: [HlmAttachmentDescription],\n})\nexport class YuwAttachmentDescriptionDirective {}\n\n/** Trailing container for an attachment's action buttons. */\n@Directive({\n selector: '[yuwAttachmentActions], yuw-attachment-actions',\n hostDirectives: [HlmAttachmentActions],\n})\nexport class YuwAttachmentActionsDirective {}\n\n/**\n * Icon-sized action button inside an attachment, such as remove or retry.\n *\n * Besides `type`, accepts the button `variant` and `size` (defaults `'ghost'` / `'icon-xs'`).\n * Extends `HlmAttachmentAction` (instead of composing it via `hostDirectives`) because\n * `variant`/`size` are inputs the helm only exposes from its own `HlmButton` host directive, and\n * host-directive forwarding is not transitive (NG2017) — inheritance carries the whole surface\n * over as real `HlmButton` inputs, so the cva variants resolve natively instead of being layered\n * on top of the defaults. Angular does not inherit `providers`, so the helm's\n * `provideBrnButtonConfig` defaults are mirrored here; keep them in sync with\n * `helm/attachment/src/lib/hlm-attachment-action.ts` if the helm is regenerated.\n */\n@Directive({\n selector: 'button[yuwAttachmentAction]',\n providers: [provideBrnButtonConfig({ variant: 'ghost', size: 'icon-xs' })],\n})\nexport class YuwAttachmentActionDirective extends HlmAttachmentAction {}\n\n/** Turns the whole attachment card into a single clickable target, layered under its actions. */\n@Directive({\n selector: 'button[yuwAttachmentTrigger], a[yuwAttachmentTrigger]',\n hostDirectives: [{ directive: HlmAttachmentTrigger, inputs: ['type'] }],\n})\nexport class YuwAttachmentTriggerDirective {}\n","export const YUW_SIDEBAR_TRANSITION_MS = 200;\n\nexport const YUW_SIDEBAR_RAIL_PADDING = '22px';\nexport const YUW_SIDEBAR_RAIL_ICON_SIZE = '20px';\nexport const YUW_SIDEBAR_RAIL_WIDTH = '78px';\n\nexport const yuwSidebarMenuButtonClass = `\n [&>span]:truncate\n [&>span]:min-w-0\n hover:bg-muted\n hover:text-foreground\n dark:hover:bg-muted/50\n aria-expanded:bg-muted\n aria-expanded:text-foreground\n transition-[background-color,color,padding]\n duration-200\n ease-linear\n motion-reduce:transition-none\n [&_ng-icon]:origin-center\n [&_ng-icon]:transition-transform\n [&_ng-icon]:duration-200\n [&_ng-icon]:ease-linear\n motion-reduce:[&_ng-icon]:transition-none\n group-data-[collapsible=icon]:py-[20px]!\n group-data-[collapsible=icon]:h-auto!\n group-data-[collapsible=icon]:w-full!\n group-data-[yuw-rail=on]:justify-center!\n group-data-[yuw-rail=on]:[&>span]:hidden\n group-data-[yuw-rail=on]:[&_ng-icon]:scale-125\n`;\n\nexport const yuwSidebarMenuChevronClass = `\n ms-auto\n shrink-0\n transition-transform\n duration-200\n text-[length:--spacing(4)]!\n group-aria-expanded/menu-button:rotate-90\n group-data-[yuw-rail=on]:hidden!\n`;\n\nexport const YUW_SIDEBAR_RAIL_WIDTH_VAR = '--yuw-sidebar-rail-width';\nexport const yuwSidebarSubmenuSheetClass = `\n data-[side=left]:inset-y-0\n data-[side=left]:left-[var(--yuw-sidebar-rail-width)]\n data-[side=left]:h-full\n data-[side=left]:w-64\n data-[side=left]:sm:max-w-none\n data-[side=left]:border-r-0\n rounded-s-none\n rounded-e-xl\n bg-sidebar\n text-sidebar-foreground\n gap-0\n p-0\n duration-200\n data-[side=left]:data-open:slide-in-from-left-4\n data-[side=left]:data-closed:slide-out-to-left-4\n data-open:fade-in-0\n data-closed:fade-out-0\n motion-reduce:animate-none\n`;\n\nexport const yuwSidebarSubmenuOverlayClass = 'left-[var(--yuw-sidebar-rail-width)]!';\nexport const yuwSidebarSubmenuSheetBodyClass = `\n flex\n mt-0\n flex-col\n gap-0.5\n py-2\n [&_[data-sidebar=menu-sub]]:mx-0\n [&_[data-sidebar=menu-sub]]:translate-x-0\n [&_[data-sidebar=menu-sub]]:border-0\n [&_[data-sidebar=menu-sub]]:px-0\n [&_[data-sidebar=menu-sub]]:py-0\n [&_[data-sidebar=menu-sub]]:gap-0.5\n [&_[data-sidebar=menu-sub-button]]:translate-x-0\n [&_[data-sidebar=menu-sub-button]]:h-8\n`;\n\nexport const yuwSidebarSubmenuSheetLabelClass = `\n text-muted-foreground\n py-6.75\n text-xs\n font-medium\n truncate\n uppercase\n tracking-[2px]\n`;\n\nexport const yuwSidebarContainerClass = 'contain-layout';\n\nexport const yuwSidebarContentClass = `\n overflow-y-auto\n group-data-[collapsible=icon]:overflow-y-auto!\n group-data-[collapsible=icon]:overflow-x-hidden\n group-data-[yuw-rail=on]:gap-1\n`;\n\nexport const yuwSidebarGroupLabelClass = `\n group-data-[collapsible=icon]:mt-0!\n group-data-[collapsible=icon]:opacity-100\n transition-opacity\n duration-200\n ease-linear\n motion-reduce:transition-none\n group-data-[yuw-rail=on]:hidden\n`;\n\nexport const yuwSidebarGroupClass = 'group-data-[yuw-rail=on]:p-0';\n\nexport const yuwSidebarFooterClass = 'group-data-[yuw-rail=on]:p-0';\n\nexport const yuwSidebarSubmenuWrapperClass = `\n grid\n transition-[grid-template-rows]\n duration-200\n ease-out\n motion-reduce:transition-none\n [&>*]:min-h-0\n [&>*]:overflow-hidden\n`;\n\nexport const yuwSidebarSubmenuOpenClass = 'grid-rows-[1fr]';\n\nexport const yuwSidebarSubmenuClosedClass = 'grid-rows-[0fr]';\n\nexport const yuwSidebarMenuBadgeClass = `\n transition-opacity\n duration-200\n ease-linear\n motion-reduce:transition-none\n group-data-[yuw-rail=on]:opacity-0\n group-data-[yuw-rail=on]:block!\n group-data-[yuw-rail=on]:pointer-events-none\n`;\n\nexport const yuwSidebarGroupLabelTextClass = `\n truncate\n block\n min-w-0\n`;\n\nexport const yuwSidebarMenuClass = `\n gap-2\n group-data-[yuw-rail=on]:gap-0\n`;\n\nexport const yuwSidebarMenuItemClass = 'group-data-[yuw-rail=on]:p-[11px]';\n\nexport const yuwSidebarMenuSubButtonClass = `\n [&>span]:truncate\n [&>span]:min-w-0\n hover:bg-muted\n hover:text-foreground\n dark:hover:bg-muted/50\n active:bg-muted\n active:text-foreground\n data-active:bg-sidebar-accent\n data-active:text-sidebar-accent-foreground\n transition-[background-color,color]\n duration-200\n ease-linear\n motion-reduce:transition-none\n`;\n","import { computed, inject, Injectable, type Signal } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { of, switchMap, timer } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { HlmSidebarService } from 'yukit-web/helm/sidebar';\nimport { YUW_SIDEBAR_TRANSITION_MS } from './sidebar.variants';\n\n/**\n * Tracks the sidebar's collapsed state, and a second copy of it that lags behind the width animation.\n *\n * The helm flips `data-collapsible` the instant the state changes, while the panel takes\n * `--sidebar-transition-duration` to reach its new width. Anything keyed off that attribute therefore\n * restyles against a panel that is still the old size — labels vanish and icons jump to rail geometry\n * while there is still 16rem of sidebar around them.\n *\n * `railSettled` fixes that asymmetrically, because the two directions want opposite timing:\n *\n * - Collapsing, the rail look has to wait for the panel to actually be narrow. Applying it up front is\n * what produces the jump.\n * - Expanding, the rail look has to go immediately. The labels need the whole animation to fade and\n * ellipsis into place, so waiting would replace one jump with another at the far end.\n *\n * `railPending` is the mirror of it, for anything whose *presence* has to span the whole collapse\n * rather than arrive at the end of it: `true` the instant the panel starts narrowing, `false` only\n * once the expand has finished widening. The pair brackets the animation from both sides — every\n * frame in which the panel is at, or moving towards, rail width has `railPending` set, while only the\n * frames where it has actually arrived have `railSettled` set. Something that must not be visible\n * during the motion keys off this one; something that must not be restyled during the motion keys off\n * `railSettled`.\n *\n * The delay runs through `timer` rather than a `setTimeout` inside an `effect`, and that is not a\n * stylistic choice: this app is zoneless, so a signal written from a bare timer callback notifies\n * nobody. Components reading `railSettled` in a template binding are `OnPush`, so they would keep\n * their stale view until something else happened to schedule a check — the signal flips, the DOM does\n * not. Going through `toSignal` puts the write back under Angular's own scheduling.\n *\n * Provided at the root so `<yuw-sidebar>` and the nav share one instance — the component stamps the\n * attribute the class layers select on, and the nav reads the same signal to decide between accordion\n * and submenu sheet, so the two must agree on the exact frame.\n */\n@Injectable({ providedIn: 'root' })\nexport class YuwSidebarRailService {\n private readonly sidebar = inject(HlmSidebarService);\n\n readonly collapsed = computed(() => (this.sidebar.isMobile() ? !this.sidebar.openMobile() : !this.sidebar.open()));\n\n private readonly collapsed$ = toObservable(this.collapsed);\n readonly railPending: Signal<boolean> = toSignal(\n this.collapsed$.pipe(\n switchMap((collapsed) => (collapsed ? of(true) : timer(YUW_SIDEBAR_TRANSITION_MS).pipe(map(() => false)))),\n ),\n { initialValue: false },\n );\n readonly railSettled: Signal<boolean> = toSignal(\n this.collapsed$.pipe(\n switchMap((collapsed) => (collapsed ? timer(YUW_SIDEBAR_TRANSITION_MS).pipe(map(() => true)) : of(false))),\n ),\n { initialValue: false },\n );\n}\n","import { Directive, input } from '@angular/core';\nimport { classes } from 'yukit-web/helm/utils';\nimport {\n HlmSidebarContent,\n HlmSidebarFooter,\n HlmSidebarGroup,\n HlmSidebarGroupContent,\n HlmSidebarGroupLabel,\n HlmSidebarHeader,\n HlmSidebarInset,\n HlmSidebarMenu,\n HlmSidebarMenuBadge,\n HlmSidebarMenuButton,\n HlmSidebarMenuItem,\n HlmSidebarMenuSub,\n HlmSidebarMenuSubButton,\n HlmSidebarMenuSubItem,\n HlmSidebarRail,\n HlmSidebarSeparator,\n HlmSidebarWrapper,\n provideHlmSidebarConfig,\n} from 'yukit-web/helm/sidebar';\nimport {\n YUW_SIDEBAR_RAIL_WIDTH,\n yuwSidebarContentClass,\n yuwSidebarFooterClass,\n yuwSidebarGroupClass,\n yuwSidebarGroupLabelClass,\n yuwSidebarMenuButtonClass,\n yuwSidebarMenuItemClass,\n yuwSidebarMenuSubButtonClass,\n} from './sidebar.variants';\n\n/**\n * Outermost layout directive for a sidebar page. Wraps the sidebar and the main content, and owns\n * the `--sidebar-width` / `--sidebar-width-icon` custom properties via its `sidebarWidth` and\n * `sidebarWidthIcon` inputs.\n *\n * Usage:\n * ```html\n * <div yuwSidebarWrapper>\n * <yuw-sidebar collapsible=\"icon\">\n * <div yuwSidebarHeader>Yurest</div>\n * <div yuwSidebarContent>\n * <div yuwSidebarGroup>\n * <div yuwSidebarGroupLabel>Gestión</div>\n * <div yuwSidebarGroupContent>\n * <ul yuwSidebarMenu>\n * <li yuwSidebarMenuItem>\n * <a yuwSidebarMenuButton isActive tooltip=\"Pedidos\">Pedidos</a>\n * </li>\n * </ul>\n * </div>\n * </div>\n * </div>\n * </yuw-sidebar>\n *\n * <main yuwSidebarInset>\n * <button yuw-sidebar-trigger></button>\n * </main>\n * </div>\n * ```\n */\n@Directive({\n selector: '[yuwSidebarWrapper], yuw-sidebar-wrapper',\n hostDirectives: [{ directive: HlmSidebarWrapper, inputs: ['sidebarWidth', 'sidebarWidthIcon'] }],\n providers: [provideHlmSidebarConfig({ sidebarWidthIcon: YUW_SIDEBAR_RAIL_WIDTH })],\n})\nexport class YuwSidebarWrapperDirective {}\n\n/** Top area of the sidebar, above the scrollable content. */\n@Directive({\n selector: '[yuwSidebarHeader], yuw-sidebar-header',\n hostDirectives: [HlmSidebarHeader],\n})\nexport class YuwSidebarHeaderDirective {}\n\n/**\n * Scrollable middle area of the sidebar that holds the navigation groups.\n *\n * Restores vertical scrolling in the collapsed state, which the composed primitive switches off with\n * `group-data-[collapsible=icon]:overflow-hidden`. That is a fair default for a rail of icons alone,\n * but ours keeps expandable entries reachable there, so a tall nav has to be able to scroll rather\n * than have its last icons clipped. Horizontal overflow stays hidden: nothing should scroll sideways\n * in a rail that narrow.\n *\n * The `!` is needed because the helm's own declaration sits in the same Tailwind group at the same\n * modifier, and `twMerge` resolves that by keeping the last one — which would be ours already, except\n * `overflow-hidden` and `overflow-y-auto` are different properties to it, so both survive and the\n * shorthand wins on order.\n *\n * The scrollbar itself stays hidden, which the primitive's own `no-scrollbar` already handles: a\n * gutter that only appears once the nav happens to overflow shifts the icons sideways, and the rail is\n * too narrow to spend 11px on it. Wheel, trackpad and keyboard still scroll; only the thumb is gone.\n *\n * Also spaces the groups it stacks while collapsed. Each group's own menu spaces its items, so with\n * the groups' vertical padding dropped there was nothing left between the last icon of one and the\n * first of the next; matching that spacing here is what makes the rail read as one evenly spaced\n * column rather than blocks butted together.\n */\n@Directive({\n selector: '[yuwSidebarContent], yuw-sidebar-content',\n hostDirectives: [HlmSidebarContent],\n})\nexport class YuwSidebarContentDirective {\n constructor() {\n classes(() => yuwSidebarContentClass);\n }\n}\n\n/** Bottom area of the sidebar, below the scrollable content. */\n@Directive({\n selector: '[yuwSidebarFooter], yuw-sidebar-footer',\n hostDirectives: [HlmSidebarFooter],\n})\nexport class YuwSidebarFooterDirective {\n constructor() {\n classes(() => yuwSidebarFooterClass);\n }\n}\n\n/**\n * A titled section of the sidebar.\n *\n * Drops its vertical padding once collapsed to icons. The composed primitive pads every side with\n * `p-2`, which is right while headings are visible and separating one group from the next, but on the\n * rail those headings are gone and two adjacent groups contribute 8px each — a gap in the middle of\n * what reads as one column of icons. Horizontal padding stays: it is what keeps the icons off the\n * rail's edges.\n */\n@Directive({\n selector: '[yuwSidebarGroup], yuw-sidebar-group',\n hostDirectives: [HlmSidebarGroup],\n})\nexport class YuwSidebarGroupDirective {\n constructor() {\n classes(() => yuwSidebarGroupClass);\n }\n}\n\n/**\n * Heading of a sidebar group. Removed from the layout when the sidebar collapses to icons.\n *\n * The composed primitive hides it with `-mt-8` plus `opacity-0`, which leaves the heading in the flow\n * still occupying its `h-8` box and cancels that box with a negative margin. The two only net to zero\n * while the heading is exactly one line at exactly that height, so a group heading left a visible gap\n * between the icons of one group and the next. `hidden` takes it out of the flow instead, and the\n * margin is zeroed so the collapsed rail is not pulled upwards by a box that no longer exists.\n */\n@Directive({\n selector: 'div[yuwSidebarGroupLabel], button[yuwSidebarGroupLabel]',\n hostDirectives: [HlmSidebarGroupLabel],\n})\nexport class YuwSidebarGroupLabelDirective {\n constructor() {\n classes(() => yuwSidebarGroupLabelClass);\n }\n}\n\n/** Body of a sidebar group, wrapping its menu. */\n@Directive({\n selector: 'div[yuwSidebarGroupContent]',\n hostDirectives: [HlmSidebarGroupContent],\n})\nexport class YuwSidebarGroupContentDirective {}\n\n/** Navigation list of a sidebar group. Apply to a `<ul>`. */\n@Directive({\n selector: 'ul[yuwSidebarMenu]',\n hostDirectives: [HlmSidebarMenu],\n})\nexport class YuwSidebarMenuDirective {}\n\n/**\n * Marks projected markup that belongs *inside* the region `<yuw-sidebar>` renders from its `content`\n * input, after the object-driven groups — a hand-written group alongside a data-driven nav.\n *\n * Only meaningful when `content` is set; without it the marker is inert and the element falls\n * through to the default slot like any other projected node. Carries no styling of its own: it is a\n * projection selector, and whatever it is applied to (usually a `[yuwSidebarGroup]`) keeps its own.\n */\n@Directive({\n selector: '[yuwSidebarContentExtra]',\n})\nexport class YuwSidebarContentExtraDirective {}\n\n/** The `footer` counterpart of {@link YuwSidebarContentExtraDirective}. */\n@Directive({\n selector: '[yuwSidebarFooterExtra]',\n})\nexport class YuwSidebarFooterExtraDirective {}\n\n/**\n * A single entry of a sidebar menu. Apply to an `<li>`.\n *\n * Collapsed, the item is what owns the rail's spacing: `YUW_SIDEBAR_RAIL_PADDING` on all four sides,\n * which is why the group drops its own padding and the menu its gap in that state. Putting it here\n * rather than on the group is what makes the vertical and horizontal spacing come from one number —\n * adjacent items contribute 22px each, so the gap between two of them and the gap to the panel edge\n * stay in the same proportion no matter how the list is grouped. The rail renders as one flat list of\n * items; its groups have no visible boundary of their own to hang spacing off.\n */\n@Directive({\n selector: 'li[yuwSidebarMenuItem]',\n hostDirectives: [HlmSidebarMenuItem],\n})\nexport class YuwSidebarMenuItemDirective {\n constructor() {\n classes(() => yuwSidebarMenuItemClass);\n }\n}\n\n/**\n * Interactive control of a sidebar menu item. Accepts `variant` (`'default'`, `'outline'`), `size`\n * (`'default'`, `'sm'`, `'lg'`) and `isActive`.\n *\n * `tooltip` labels the item while the sidebar is collapsed to icons, where the label itself is\n * hidden; the composed primitive shows it only in that state. Every entry gets one, including those\n * with children — their submenu opens on click, so it never competes with the hover.\n *\n * Reaching that input takes composing `BrnTooltip` here under the same `tooltip` alias the helm uses,\n * rather than forwarding it. `HlmSidebarMenuButton` publishes the alias on its own `hostDirectives`\n * entry, which does not make it an input of the helm directive — a forward cannot be re-forwarded, the\n * same limit `context-menu.directives.ts` documents. Angular resolves both entries to the one\n * `BrnTooltip` instance on the element, so the helm keeps driving `mutableTooltipDisabled` (which is\n * what confines the tooltip to the collapsed state) while this binding supplies its content.\n *\n * `[attr.tooltip]` is not a substitute, and was the bug: it writes an HTML attribute, which never\n * reaches a signal input, so the tooltip stayed enabled with `null` content and silently showed\n * nothing.\n *\n * Carries `yuwSidebarMenuButtonClass`, our hover/expanded colouring and collapsed-to-icon geometry.\n * The `classes()` registration below runs after the composed `HlmSidebarMenuButton`'s own, and\n * `classes()` merges its sources in registration order through `twMerge`, so each of our classes\n * displaces the helm class of the same Tailwind group and modifier stack without `!important`.\n *\n * Those classes sit on the button rather than on `li[yuwSidebarMenuItem]` because every selector in\n * them resolves against the button's own box or subtree: the `<li>` is not the hovered control, never\n * carries `aria-expanded`, and its `> span:last-child` is the badge, not the label.\n *\n * Three details of the collapsed-to-icon block are load-bearing:\n *\n * - `h-auto!`, `w-full!` and `justify-center!` keep their `!` because the helm declarations they\n * replace (`size-8!`, `p-2!`) are themselves `!important`, which `twMerge` cannot outrank on\n * specificity alone. The helm pins the button to a square; ours fills the rail width and centres\n * the icon. Both halves of `size-8!` have to be named separately: a single `size-auto!` occupies\n * the same `twMerge` group as the base `w-full`, dropping it, so the button would fall back to\n * shrink-to-fit for the whole width animation — long enough for the label to stop ellipsing and\n * the trailing chevron to sit against it.\n * - `[&>span]:hidden` drops the label while collapsed, leaving the icon alone — the tooltip carries\n * the name in that state. Matched by element rather\n * than by `:last-child` (which is what the helm's own `truncate` uses): an expandable entry ends\n * with a trailing chevron, so the label is no longer the last child and a positional selector\n * would skip exactly those entries. `span` is unambiguous here — the label is the only one a menu\n * button has, with the badge living outside the button on the `<li>`.\n * - The icon grows through `scale-125` rather than a font-size bump, so it can be transitioned: only\n * `transform`-family properties animate on the compositor, and a `font-size` change would relayout\n * the row on every frame. The factor is what turns the `--spacing(4)` base into the rail's\n * `YUW_SIDEBAR_RAIL_ICON_SIZE`, so the two move together — the icon's layout box stays 16px and the\n * spacing around it comes from the item's padding, not from the icon's own box.\n *\n * Which state each class hangs off is load-bearing, because the two attributes fire at different\n * times. `data-collapsible` flips the instant the toggle is pressed; `data-yuw-rail` waits for the\n * width animation to finish. Anything that should hold its expanded look *through* the animation\n * therefore keys off the rail attribute — the label's `hidden`, the centring, the icon's size — while\n * the width and height overrides key off `collapsible`, to displace the helm's `size-8!` before it can\n * snap the row to 32px and truncate the label away in the first frame. That snap is what made the text vanish\n * on click instead of ellipsing gradually as the panel narrows.\n */\n@Directive({\n selector: 'button[yuwSidebarMenuButton], a[yuwSidebarMenuButton]',\n hostDirectives: [\n {\n directive: HlmSidebarMenuButton,\n inputs: ['variant', 'size', 'isActive', 'closeMobileSidebarOnClick'],\n },\n ],\n})\nexport class YuwSidebarMenuButtonDirective {\n constructor() {\n classes(() => yuwSidebarMenuButtonClass);\n }\n}\n\n/** Trailing count or status badge of a sidebar menu item. */\n@Directive({\n selector: '[yuwSidebarMenuBadge], yuw-sidebar-menu-badge',\n hostDirectives: [HlmSidebarMenuBadge],\n})\nexport class YuwSidebarMenuBadgeDirective {}\n\n/** Nested submenu list of a sidebar menu item. Apply to a `<ul>`. */\n@Directive({\n selector: 'ul[yuwSidebarMenuSub]',\n hostDirectives: [HlmSidebarMenuSub],\n})\nexport class YuwSidebarMenuSubDirective {}\n\n/** A single entry of a sidebar submenu. Apply to an `<li>`. */\n@Directive({\n selector: 'li[yuwSidebarMenuSubItem]',\n hostDirectives: [HlmSidebarMenuSubItem],\n})\nexport class YuwSidebarMenuSubItemDirective {}\n\n/**\n * Interactive control of a sidebar submenu item. Accepts `size` (`'sm'`, `'md'`) and `isActive`.\n *\n * Carries the same label clamp as `[yuwSidebarMenuButton]`. The composed primitive already truncates\n * its `span:last-child`, but truncation cannot fire while the span is a flex item at its default\n * `min-width: auto`: that floor keeps it at content width, so the panel widens the row instead of the\n * text ellipsing. `min-w-0` is what lets it shrink, and the `[&>span]` selector covers a label that is\n * no longer the last child.\n */\n@Directive({\n selector: 'a[yuwSidebarMenuSubButton], button[yuwSidebarMenuSubButton]',\n hostDirectives: [{ directive: HlmSidebarMenuSubButton, inputs: ['size', 'isActive', 'closeMobileSidebarOnClick'] }],\n})\nexport class YuwSidebarMenuSubButtonDirective {\n constructor() {\n classes(() => yuwSidebarMenuSubButtonClass);\n }\n}\n\n/** Divider between sidebar sections. */\n@Directive({\n selector: '[yuwSidebarSeparator], yuw-sidebar-separator',\n hostDirectives: [HlmSidebarSeparator],\n})\nexport class YuwSidebarSeparatorDirective {}\n\n/**\n * Thin draggable edge that toggles the sidebar. Apply to a `<button>`.\n *\n * `label` is the accessible label of the rail button (it has no visible text). User-facing text —\n * the consuming app is responsible for providing it already translated.\n */\n@Directive({\n selector: 'button[yuwSidebarRail]',\n hostDirectives: [HlmSidebarRail],\n host: {\n '[attr.aria-label]': 'label()',\n },\n})\nexport class YuwSidebarRailDirective {\n readonly label = input.required<string>();\n}\n\n/** Main content region beside the sidebar. Apply to a `<main>`. */\n@Directive({\n selector: 'main[yuwSidebarInset]',\n hostDirectives: [HlmSidebarInset],\n})\nexport class YuwSidebarInsetDirective {}\n","import { computed, Injectable, signal, type Signal } from '@angular/core';\nimport type { YuwSidebarItemDto } from './sidebar-content.interface';\n\n/**\n * Holds which rail entry's submenu the collapsed sidebar is showing. Provided on `<yuw-sidebar>`, so\n * two sidebars on a page don't drive each other.\n *\n * `renderedItem` lags `activeItem` by one close: the sheet renders from it so its markup outlives the\n * close and the panel can animate out. Swapping entries never writes `null`, which would detach the\n * overlay and replay the open animation. Matching is by `id` — the nav rebuilds these objects.\n *\n * `closeUnhandled` is what dismisses the sheet for a click that lands on the rail but on nothing that\n * owns the submenu — the padding between entries, a separator, the header, a plain rail link.\n * `<yuw-sidebar>` calls it from a bubble-phase listener on its own host, which therefore runs *after*\n * the handler of whatever entry was clicked, so an entry that has just opened or swapped the sheet has\n * to be able to say \"this click was mine\". `toggle` records the event it acted on for exactly that,\n * keyed on event identity so no timer or DOM-target test is involved: there is one event object per\n * click and both handlers see it. Together with the backdrop — inset to the rail's right edge, so it\n * covers the rest of the viewport — that listener closes the sheet from anywhere outside it.\n *\n * The brain's own `closeOnOutsidePointerEvents` is deliberately *not* used for this. The CDK\n * dispatches outside pointer events from a capture listener on `body`, so it would close the sheet\n * before the clicked entry's own bubble-phase handler ran, and `toggle` would then see no active item\n * and re-open on the very click that dismissed it.\n */\n@Injectable()\nexport class YuwSidebarSubmenuService {\n private readonly item = signal<YuwSidebarItemDto | null>(null);\n readonly activeItem: Signal<YuwSidebarItemDto | null> = this.item.asReadonly();\n private handledEvent: Event | null = null;\n private readonly lastItem = signal<YuwSidebarItemDto | null>(null);\n readonly renderedItem: Signal<YuwSidebarItemDto | null> = this.lastItem.asReadonly();\n\n readonly open = computed(() => this.item() !== null);\n\n close(): void {\n this.item.set(null);\n }\n\n closeUnhandled(event: Event): void {\n const handled = event === this.handledEvent;\n\n if (handled) {\n this.handledEvent = null;\n return;\n }\n\n this.close();\n }\n\n toggle(item: YuwSidebarItemDto, event: Event): void {\n this.handledEvent = event;\n\n const next = this.item()?.id === item.id ? null : item;\n\n this.item.set(next);\n if (next) this.lastItem.set(next);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n Injector,\n input,\n linkedSignal,\n output,\n runInInjectionContext,\n type Signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { lucideChevronRight } from '@ng-icons/lucide';\nimport { isActive, Router, RouterLink, RouterLinkActive } from '@angular/router';\nimport { HlmSidebarMenuButton, HlmSidebarService } from 'yukit-web/helm/sidebar';\nimport type {\n YuwSidebarCollapsibleDto,\n YuwSidebarContentDto,\n YuwSidebarItemClickDto,\n YuwSidebarItemDto,\n YuwSidebarSubItemDto,\n} from './sidebar-content.interface';\nimport {\n YuwSidebarGroupContentDirective,\n YuwSidebarGroupDirective,\n YuwSidebarGroupLabelDirective,\n YuwSidebarMenuBadgeDirective,\n YuwSidebarMenuButtonDirective,\n YuwSidebarMenuDirective,\n YuwSidebarMenuItemDirective,\n YuwSidebarMenuSubButtonDirective,\n YuwSidebarMenuSubDirective,\n YuwSidebarMenuSubItemDirective,\n YuwSidebarSeparatorDirective,\n} from './sidebar.directives';\nimport { YuwSidebarRailService } from './sidebar-rail.service';\nimport { YuwSidebarSubmenuService } from './sidebar-submenu.service';\nimport {\n yuwSidebarGroupLabelTextClass,\n yuwSidebarMenuBadgeClass,\n yuwSidebarMenuChevronClass,\n yuwSidebarMenuClass,\n yuwSidebarSubmenuClosedClass,\n yuwSidebarSubmenuOpenClass,\n yuwSidebarSubmenuWrapperClass,\n} from './sidebar.variants';\n\n/**\n * Renders one {@link YuwSidebarContentDto} as the group/menu/item tree.\n *\n * Internal to the library — it is not exported from `public-api.ts`, and consumers reach it through\n * `<yuw-sidebar>`'s `content` and `footer` inputs. It exists as its own component because those two\n * inputs need the identical tree; inlining it in `sidebar.component.html` would duplicate the whole\n * block.\n *\n * The host is `display: contents`, so the groups it renders become direct children of whichever\n * `[yuwSidebarContent]` / `[yuwSidebarFooter]` wrapper it sits inside. That is what keeps the\n * `group-data-[collapsible=icon]:` selectors — which resolve against the sidebar root — working\n * identically for object-rendered and hand-written markup.\n *\n * An entry with `children` shows its submenu two ways, one per sidebar state. Expanded, it is an\n * accordion rendered here: the entry carries `aria-expanded` and the submenu is nested beneath it.\n * Collapsed to icons, where there is no room for either the label or the nesting, it moves into the\n * sheet beside the rail — which this component does not own. `<yuw-sidebar>` renders one sheet and\n * this component only reports, through `YuwSidebarSubmenuService`, which entry the user picked. It\n * cannot own the panel itself: `<yuw-sidebar>` instantiates this component twice, once for `content`\n * and once for `footer`, so a sheet in here would be two sheets fighting over one screen position.\n *\n * Such an entry also opts out of the helm's close-the-mobile-sheet-on-click behaviour, which every\n * other entry keeps. On mobile the sidebar *is* a sheet, and that behaviour assumes a click means\n * \"I have navigated, take this away\" — true of a leaf, false of an accordion header, whose click only\n * unfolds a submenu inside the very panel it would be dismissing. Its children still close it, since\n * activating one of those really is the navigation the panel was opened for.\n *\n * A click on such an entry toggles the accordion while the panel is open, and opens the sheet on that\n * entry once collapsed — the same gesture either way, differing only in where the submenu appears.\n * Clicking the entry the sheet is already showing closes it; clicking a different one swaps the\n * sheet's contents. Only an entry that actually has children does any of this: `onParentClick` is the\n * click handler of every navigating entry, so it returns early for a childless one rather than opening\n * a sheet on an empty `children`. That guard lives in the method and not in the template so the\n * `route`, `href` and `<button>` branches cannot drift apart on it, and a childless entry then falls\n * through to `<yuw-sidebar>`'s host listener, which dismisses whatever sheet was open — clicking a\n * plain rail link should take its submenu away, not leave it hanging over the new page. When the entry\n * also has a `route` or an `href` it navigates *and* toggles, which is why an active one keeps its\n * pointer events instead of being locked like a childless active entry; when it has neither, toggling\n * is all it does and it stays out of `itemClicked`, since opening a submenu is not an action for the\n * consumer to handle.\n *\n * The chevron marking an expandable entry rotates off that same `aria-expanded`, read from the\n * button through the `group/menu-button` the helm already declares on every menu button. Its\n * `yuwSidebarMenuChevronClass` hides it with `hidden!` in the collapsed state, and that `!` is\n * load-bearing: `ng-icon` sets `display: block` on its own host from a layer outranking Tailwind's\n * `utilities`, so a plain `hidden` loses and the chevron keeps taking width — which pulls the\n * entry's real icon off centre, since the button is `justify-center` while collapsed. The same\n * classes on a `<span>` need no `!`; only the custom element does.\n *\n * Which of the two forms is live comes from `isRail`, and all three of its conditions are\n * load-bearing. `collapsible` must be `'icon'`, the only mode that leaves a narrow rail behind:\n * `'offcanvas'` moves the whole panel off-screen and `'none'` never collapses, yet the service\n * reports `state() === 'collapsed'` for both — reading the state alone opens the sheet beside a\n * sidebar sitting there at full width. It must not be mobile, where the panel is a full-width sheet\n * showing the accordion. And the collapse must have finished animating, which is what `railSettled`\n * waits for: switching to the sheet while the panel is still wide would leave it overlapping the very\n * sidebar it is supposed to sit beside. That same settled signal drives the rail's own styling, so\n * the geometry and the submenu form always change on the same frame.\n *\n * The accordion opens and closes over a grid-rows transition rather than by appearing outright, which\n * is why the submenu stays mounted and is switched between `0fr` and `1fr` instead of living behind an\n * `@if`: height cannot animate from or to something that is not in the layout, and `auto` is not an\n * animatable value. A closed submenu is `inert` and `aria-hidden`, so leaving it mounted does not hand\n * keyboard users links to a menu they cannot see.\n *\n * Collapsing to the rail also clears every open accordion, which is what stops an expand from\n * unfolding several submenus at once and shoving the entries below them down the panel. An entry\n * holding the active route still opens on its own, since that one is answering \"where am I\" rather\n * than restoring a stale choice.\n *\n * Which entries are expanded resolves in precedence order: an explicit toggle by the user wins,\n * otherwise an entry holding the active route is open — a deep link into a child should not hide the\n * child — otherwise the DTO's `expanded` seed, otherwise closed. The user's toggles live in a\n * `linkedSignal` on `content()` rather than a plain signal, so replacing the object — a nav rebuilt\n * from fresh permissions, say — drops toggles that no longer refer to anything instead of keeping a\n * map that grows with dead ids. The seed feeds the derived state rather than that map, which is what\n * lets an untouched entry keep following its seed and its active route.\n *\n * Whether an entry holds the active route is decided by comparing serialized `routerLink` targets\n * against the current URL, not by asking the router to match them: `Router.isActive` needs a\n * `UrlTree` per child and would run on every pass. The URL itself is a signal seeded with\n * `Router.url`, so a deep link is expanded on first paint, before any navigation event has fired —\n * `RouterLinkActive` cannot answer this, because it reports on the element it sits on and the entry\n * that needs to open is the *parent* of the matching child. Matching is by prefix, mirroring\n * `routerLinkActive`'s own non-exact behaviour, with a boundary check so `/reports` does not match\n * `/reports-archive`.\n *\n * Each entry's render state is resolved once per pass, which is also what keeps\n * `routerLinkActiveOptions` a stable object identity: a literal in the template\n * (`[routerLinkActiveOptions]=\"{exact: item.exact ?? false}\"`) allocates a new object on every\n * change-detection pass, and `RouterLinkActive` treats that as a changed input and re-runs its\n * subscription. Every entry resolves a tooltip, entries with children included: the submenu opens on\n * click, so hover is free to do what it does for every other rail icon and name the thing.\n */\n@Component({\n selector: 'yuw-sidebar-nav',\n imports: [\n NgIcon,\n NgTemplateOutlet,\n RouterLink,\n RouterLinkActive,\n YuwSidebarGroupDirective,\n YuwSidebarGroupLabelDirective,\n YuwSidebarGroupContentDirective,\n YuwSidebarMenuDirective,\n YuwSidebarMenuItemDirective,\n YuwSidebarMenuButtonDirective,\n HlmSidebarMenuButton,\n YuwSidebarMenuBadgeDirective,\n YuwSidebarMenuSubDirective,\n YuwSidebarMenuSubItemDirective,\n YuwSidebarMenuSubButtonDirective,\n YuwSidebarSeparatorDirective,\n ],\n providers: [provideIcons({ lucideChevronRight })],\n host: {\n class: 'contents',\n },\n templateUrl: './sidebar-nav.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwSidebarNavComponent {\n private readonly injector = inject(Injector);\n private readonly rail = inject(YuwSidebarRailService);\n private readonly router = inject(Router);\n private readonly sidebarService = inject(HlmSidebarService);\n private readonly submenu = inject(YuwSidebarSubmenuService);\n\n readonly collapsible = input<YuwSidebarCollapsibleDto>('offcanvas');\n readonly content = input.required<YuwSidebarContentDto>();\n\n readonly itemClicked = output<YuwSidebarItemClickDto>();\n\n private readonly activeRoutes = new Map<string, Signal<boolean>>();\n protected readonly badgeClass = yuwSidebarMenuBadgeClass;\n protected readonly chevronClass = yuwSidebarMenuChevronClass;\n protected readonly groupLabelTextClass = yuwSidebarGroupLabelTextClass;\n protected readonly menuClass = yuwSidebarMenuClass;\n\n private readonly expandedIds = linkedSignal<{ content: YuwSidebarContentDto; rail: boolean }, ReadonlySet<string>>({\n source: () => ({ content: this.content(), rail: this.isRail() }),\n computation: ({ content, rail }, previous) =>\n rail || previous\n ? new Set<string>()\n : new Set(\n content.groups.flatMap((group) => group.items.filter((item) => item.expanded).map((item) => item.id)),\n ),\n });\n protected readonly isRail = computed(\n () => this.collapsible() === 'icon' && !this.sidebarService.isMobile() && this.rail.railSettled(),\n );\n protected readonly _groups = computed(() => {\n const expandedIds = this.expandedIds();\n const isRail = this.isRail();\n\n return this.content().groups.map((group) => ({\n ...group,\n items: group.items.map((item) => {\n const children = (item.children ?? []).map((child) => ({\n ...child,\n activeOptions: { exact: child.exact ?? false },\n }));\n const hasChildren = children.length > 0;\n const expanded =\n isRail || !hasChildren ? false : expandedIds.has(item.id) || this.holdsActiveRoute(item.children);\n\n return {\n ...item,\n children,\n hasChildren,\n tooltipText: item.tooltip ?? item.label,\n activeOptions: { exact: item.exact ?? false },\n holdsActiveChild: hasChildren && this.holdsActiveRoute(item.children),\n expanded,\n submenuClass: `${yuwSidebarSubmenuWrapperClass} ${\n expanded ? yuwSidebarSubmenuOpenClass : yuwSidebarSubmenuClosedClass\n }`,\n };\n }),\n }));\n });\n\n protected onItemClick(id: string, event: MouseEvent): void {\n this.itemClicked.emit({ id, event });\n }\n\n protected onParentClick(item: YuwSidebarItemDto, expanded: boolean, event: MouseEvent): void {\n if (!(item.children?.length ?? 0)) return;\n\n if (this.isRail()) {\n this.submenu.toggle(item, event);\n\n return;\n }\n\n this.expandedIds.update((ids) => {\n const next = new Set(ids);\n if (expanded) next.delete(item.id);\n else next.add(item.id);\n\n return next;\n });\n }\n\n private holdsActiveRoute(children: readonly YuwSidebarSubItemDto[] | undefined): boolean {\n return (children ?? []).some((child) => {\n const route = child.route;\n\n return route !== undefined && route !== null && this.routeActive(route)();\n });\n }\n\n private routeActive(route: NonNullable<YuwSidebarSubItemDto['route']>): Signal<boolean> {\n const key = this.router.serializeUrl(this.router.createUrlTree(Array.isArray(route) ? route : [route]));\n const cached = this.activeRoutes.get(key);\n if (cached) return cached;\n\n const signal = runInInjectionContext(this.injector, () => isActive(key, this.router));\n this.activeRoutes.set(key, signal);\n\n return signal;\n }\n}\n","<ng-template #submenu let-item>\n <ul yuwSidebarMenuSub>\n @for (child of item.children; track child.id) {\n <li yuwSidebarMenuSubItem>\n @if (child.route) {\n <a\n yuwSidebarMenuSubButton\n closeMobileSidebarOnClick\n [routerLink]=\"child.route\"\n routerLinkActive\n #childLink=\"routerLinkActive\"\n [routerLinkActiveOptions]=\"child.activeOptions\"\n [isActive]=\"childLink.isActive\"\n [attr.aria-current]=\"childLink.isActive ? 'page' : null\"\n [attr.aria-disabled]=\"child.disabled ? 'true' : null\"\n [class.pointer-events-none]=\"childLink.isActive || child.disabled\"\n >\n <span>{{ child.label }}</span>\n </a>\n } @else if (child.href) {\n <a\n yuwSidebarMenuSubButton\n closeMobileSidebarOnClick\n [href]=\"child.href\"\n [attr.target]=\"child.target\"\n [attr.aria-disabled]=\"child.disabled ? 'true' : null\"\n [class.pointer-events-none]=\"child.disabled\"\n >\n <span>{{ child.label }}</span>\n </a>\n } @else {\n <button\n yuwSidebarMenuSubButton\n closeMobileSidebarOnClick\n type=\"button\"\n [disabled]=\"child.disabled ?? false\"\n (click)=\"onItemClick(child.id, $event)\"\n >\n <span>{{ child.label }}</span>\n </button>\n }\n </li>\n }\n </ul>\n</ng-template>\n\n@for (group of _groups(); track group.id) {\n <div yuwSidebarGroup>\n @if (group.label) {\n <div yuwSidebarGroupLabel>\n <span [class]=\"groupLabelTextClass\">{{ group.label }}</span>\n </div>\n }\n\n <div yuwSidebarGroupContent>\n <ul yuwSidebarMenu [class]=\"menuClass\">\n @for (item of group.items; track item.id) {\n <li yuwSidebarMenuItem>\n @if (item.route) {\n <a\n yuwSidebarMenuButton\n [closeMobileSidebarOnClick]=\"!item.hasChildren\"\n [routerLink]=\"item.route\"\n routerLinkActive\n #link=\"routerLinkActive\"\n [routerLinkActiveOptions]=\"item.activeOptions\"\n [isActive]=\"link.isActive || item.holdsActiveChild\"\n [tooltip]=\"item.tooltipText\"\n [attr.aria-current]=\"link.isActive ? 'page' : null\"\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\n [attr.aria-expanded]=\"item.hasChildren ? item.expanded : null\"\n [class.pointer-events-none]=\"(link.isActive && !item.hasChildren) || item.disabled\"\n (click)=\"onParentClick(item, item.expanded, $event)\"\n >\n @if (item.icon) {\n <ng-icon [name]=\"item.icon\" />\n }\n <span>{{ item.label }}</span>\n @if (item.hasChildren) {\n <ng-icon name=\"lucideChevronRight\" [class]=\"chevronClass\" />\n }\n </a>\n } @else if (item.href) {\n <a\n yuwSidebarMenuButton\n [closeMobileSidebarOnClick]=\"!item.hasChildren\"\n [href]=\"item.href\"\n [attr.target]=\"item.target\"\n [isActive]=\"item.holdsActiveChild\"\n [tooltip]=\"item.tooltipText\"\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\n [attr.aria-expanded]=\"item.hasChildren ? item.expanded : null\"\n [class.pointer-events-none]=\"item.disabled\"\n (click)=\"onParentClick(item, item.expanded, $event)\"\n >\n @if (item.icon) {\n <ng-icon [name]=\"item.icon\" />\n }\n <span>{{ item.label }}</span>\n @if (item.hasChildren) {\n <ng-icon name=\"lucideChevronRight\" [class]=\"chevronClass\" />\n }\n </a>\n } @else {\n <button\n yuwSidebarMenuButton\n [closeMobileSidebarOnClick]=\"!item.hasChildren\"\n type=\"button\"\n [isActive]=\"item.holdsActiveChild\"\n [tooltip]=\"item.tooltipText\"\n [disabled]=\"item.disabled ?? false\"\n [attr.aria-expanded]=\"item.hasChildren ? item.expanded : null\"\n (click)=\"item.hasChildren ? onParentClick(item, item.expanded, $event) : onItemClick(item.id, $event)\"\n >\n @if (item.icon) {\n <ng-icon [name]=\"item.icon\" />\n }\n <span>{{ item.label }}</span>\n @if (item.hasChildren) {\n <ng-icon name=\"lucideChevronRight\" [class]=\"chevronClass\" />\n }\n </button>\n }\n\n @if (item.badge) {\n <span yuwSidebarMenuBadge [class]=\"badgeClass\">{{ item.badge }}</span>\n }\n\n @if (item.hasChildren && !isRail()) {\n <div\n [class]=\"item.submenuClass\"\n [attr.inert]=\"item.expanded ? null : ''\"\n [attr.aria-hidden]=\"!item.expanded\"\n >\n <div>\n <ng-container [ngTemplateOutlet]=\"submenu\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </div>\n </div>\n }\n </li>\n }\n </ul>\n </div>\n </div>\n\n @if (group.separatorAfter) {\n <div yuwSidebarSeparator class=\"mx-auto w-4/5!\"></div>\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n output,\n} from '@angular/core';\nimport { OverlayContainer } from '@angular/cdk/overlay';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { injectHlmSidebarConfig } from 'yukit-web/helm/sidebar';\nimport { YuwSheetComponent } from '../sheet/sheet.component';\nimport type { YuwSidebarItemClickDto } from './sidebar-content.interface';\nimport { YuwSidebarRailService } from './sidebar-rail.service';\nimport { YuwSidebarSubmenuService } from './sidebar-submenu.service';\nimport {\n YuwSidebarMenuSubButtonDirective,\n YuwSidebarMenuSubDirective,\n YuwSidebarMenuSubItemDirective,\n} from './sidebar.directives';\nimport {\n YUW_SIDEBAR_RAIL_WIDTH_VAR,\n yuwSidebarSubmenuOverlayClass,\n yuwSidebarSubmenuSheetBodyClass,\n yuwSidebarSubmenuSheetClass,\n yuwSidebarSubmenuSheetLabelClass,\n} from './sidebar.variants';\nimport { NgIcon } from '@ng-icons/core';\n\n/**\n * The one submenu panel of a collapsed sidebar, showing whatever `YuwSidebarSubmenuService` holds.\n * Lives here rather than in `YuwSidebarNavComponent`, which `<yuw-sidebar>` instantiates twice.\n *\n * The rail width is re-declared as `--yuw-sidebar-rail-width` on the CDK overlay *container*: the\n * overlay is portalled out of the wrapper that owns `--sidebar-width-icon`, and the panel and\n * backdrop are siblings there that both need it. It is read off the live wrapper because\n * `[sidebarWidthIcon]` overrides the config without writing back to it.\n *\n * Not `aria-modal`, and scroll is left alone: the rail stays live behind the dim.\n *\n * The `<yuw-sheet>` is mounted unconditionally rather than behind an `@if` on the rendered item, and\n * that is load-bearing. `BrnDialog` drives the CDK overlay imperatively from its `state` input, and it\n * registers the effect that reads that input inside an `afterNextRender`, while its `onDestroy` calls\n * `forceClose()` synchronously. Recreating the component to swap entries therefore tears the old\n * overlay down and brings a new dialog up one render tick behind an `open` that is already `true` —\n * the panel flashes in and settles invisible, and the `_phase`/`_closeGeneration` bookkeeping is left\n * split across the two refs, which is what broke every subsequent animation. Keeping one instance for\n * the sidebar's lifetime means a swap is only new content inside a live panel; the entry's own fields\n * are read through `_label`/`_children`, which tolerate the null the item holds before the first open.\n */\n@Component({\n selector: 'yuw-sidebar-submenu-sheet',\n imports: [\n YuwSheetComponent,\n RouterLink,\n RouterLinkActive,\n YuwSidebarMenuSubDirective,\n YuwSidebarMenuSubItemDirective,\n YuwSidebarMenuSubButtonDirective,\n NgIcon,\n ],\n host: {\n class: 'contents',\n },\n templateUrl: './sidebar-submenu-sheet.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwSidebarSubmenuSheetComponent {\n protected readonly _submenu = inject(YuwSidebarSubmenuService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly overlayContainer = inject(OverlayContainer);\n private readonly rail = inject(YuwSidebarRailService);\n\n readonly itemClicked = output<YuwSidebarItemClickDto>();\n\n protected readonly _item = this._submenu.renderedItem;\n protected readonly bodyClass = yuwSidebarSubmenuSheetBodyClass;\n private readonly config = injectHlmSidebarConfig();\n protected readonly labelClass = yuwSidebarSubmenuSheetLabelClass;\n protected readonly overlayClass = yuwSidebarSubmenuOverlayClass;\n protected readonly panelClass = yuwSidebarSubmenuSheetClass;\n\n protected readonly _children = computed(() => this._item()?.children ?? []);\n protected readonly _activeOptions = computed(() =>\n Object.fromEntries(this._children().map((child) => [child.id, { exact: child.exact ?? false }])),\n );\n protected readonly _label = computed(() => this._item()?.label ?? '');\n\n constructor() {\n effect(() => {\n if (this.rail.railSettled()) return;\n\n this._submenu.close();\n });\n\n effect(() => {\n if (!this._submenu.open()) return;\n\n this.overlayContainer.getContainerElement().style.setProperty(YUW_SIDEBAR_RAIL_WIDTH_VAR, this.railWidth());\n });\n\n const container = this.overlayContainer.getContainerElement();\n const onBackdrop = (event: Event) => {\n if (!(event.target as HTMLElement).classList.contains('cdk-overlay-backdrop')) return;\n\n this._submenu.close();\n };\n\n container.addEventListener('click', onBackdrop);\n this.destroyRef.onDestroy(() => container.removeEventListener('click', onBackdrop));\n }\n\n protected onChildClick(id: string, event: MouseEvent): void {\n this._submenu.close();\n this.itemClicked.emit({ id, event });\n }\n\n protected onOpenChange(open: boolean): void {\n if (open) return;\n\n this._submenu.close();\n }\n\n private railWidth(): string {\n const wrapper = this.host.nativeElement.closest<HTMLElement>('[data-slot=sidebar-wrapper]');\n const resolved = wrapper ? getComputedStyle(wrapper).getPropertyValue('--sidebar-width-icon').trim() : '';\n\n return resolved || this.config.sidebarWidthIcon;\n }\n}\n","<yuw-sheet\n side=\"left\"\n [open]=\"_submenu.open()\"\n (openChange)=\"onOpenChange($event)\"\n [showTrigger]=\"false\"\n [ariaLabel]=\"_label()\"\n [panelClass]=\"panelClass\"\n [overlayClass]=\"overlayClass\"\n [ariaModal]=\"false\"\n [closeOnOutsidePointerEvents]=\"false\"\n scrollStrategy=\"reposition\"\n>\n <div [class]=\"bodyClass\">\n <span [class]=\"labelClass\">{{ _label() }}</span>\n\n <ul yuwSidebarMenuSub>\n @for (child of _children(); track child.id) {\n <li yuwSidebarMenuSubItem>\n @if (child.route) {\n <a\n yuwSidebarMenuSubButton\n #childLink=\"routerLinkActive\"\n routerLinkActive\n class=\"px-4 h-12!\"\n [routerLink]=\"child.route\"\n [routerLinkActiveOptions]=\"_activeOptions()[child.id]\"\n [isActive]=\"childLink.isActive\"\n [attr.aria-current]=\"childLink.isActive ? 'page' : null\"\n [attr.aria-disabled]=\"child.disabled ? 'true' : null\"\n [class.pointer-events-none]=\"childLink.isActive || child.disabled\"\n (click)=\"_submenu.close()\"\n >\n @if (child.icon) {\n <ng-icon [name]=\"child.icon\" />\n }\n <span>{{ child.label }}</span>\n </a>\n } @else if (child.href) {\n <a\n yuwSidebarMenuSubButton\n class=\"px-4 h-12!\"\n [href]=\"child.href\"\n [attr.target]=\"child.target\"\n [attr.aria-disabled]=\"child.disabled ? 'true' : null\"\n [class.pointer-events-none]=\"child.disabled\"\n (click)=\"_submenu.close()\"\n >\n @if (child.icon) {\n <ng-icon [name]=\"child.icon\" />\n }\n <span>{{ child.label }}</span>\n </a>\n } @else {\n <button\n yuwSidebarMenuSubButton\n type=\"button\"\n class=\"px-4 h-12!\"\n [disabled]=\"child.disabled ?? false\"\n (click)=\"onChildClick(child.id, $event)\"\n >\n @if (child.icon) {\n <ng-icon [name]=\"child.icon\" />\n }\n <span>{{ child.label }}</span>\n </button>\n }\n </li>\n }\n </ul>\n </div>\n</yuw-sheet>\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { outputFromObservable, toObservable } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { HlmSidebar, injectHlmSidebarConfig } from 'yukit-web/helm/sidebar';\nimport { YuwSidebarRailService } from './sidebar-rail.service';\nimport type {\n YuwSidebarCollapsibleDto,\n YuwSidebarContentDto,\n YuwSidebarItemClickDto,\n YuwSidebarSideDto,\n YuwSidebarVariantDto,\n} from './sidebar-content.interface';\nimport { YuwSidebarNavComponent } from './sidebar-nav.component';\nimport { YuwSidebarSubmenuSheetComponent } from './sidebar-submenu-sheet.component';\nimport { YuwSidebarSubmenuService } from './sidebar-submenu.service';\nimport { yuwSidebarContainerClass } from './sidebar.variants';\nimport {\n YuwSidebarContentDirective,\n YuwSidebarFooterDirective,\n YuwSidebarSeparatorDirective,\n} from './sidebar.directives';\n\n/**\n * Collapsible navigation sidebar. Renders as a fixed panel on desktop and as a slide-in sheet on\n * mobile, and reads its colors from the `--sidebar-*` theme tokens.\n *\n * Place it inside a `[yuwSidebarWrapper]` alongside a `<main yuwSidebarInset>`, and compose its\n * inner structure with the `yuwSidebar*` directives. Open state is shared through\n * `YuwSidebarService`, so `<yuw-sidebar-trigger>` works from anywhere in the page.\n *\n * Inputs:\n * - `side`: Edge the sidebar is docked to (`'left'`, `'right'`). Default is `'left'`.\n * - `variant`: Panel treatment (`'sidebar'` flush, `'floating'` card, `'inset'` inset page). Default is `'sidebar'`.\n * - `collapsible`: Collapse behaviour (`'offcanvas'` slides away, `'icon'` shrinks to icons, `'none'` always open). Default is `'offcanvas'`.\n * - `sidebarWidthMobile`: Width of the mobile slide-in sheet (any CSS length). Defaults to the helm sidebar config (`18rem`).\n * - `sidebarContainerClass`: Extra classes merged onto the desktop fixed container (the helm merges them last, so they win).\n * - `content`: Renders the scrollable nav from a `YuwSidebarContentDto` instead of hand-written\n * markup. Groups → items → optional one level of children. An item with a `route` becomes a\n * `[routerLink]` anchor whose active state, `aria-current` and pointer-lock resolve automatically\n * from `routerLinkActive`; one with an `href` becomes a plain anchor; one with neither becomes a\n * button that reports through `itemClicked`. An item with `children` gets a submenu that follows\n * the sidebar's own state: an accordion while the panel is open, and a sheet sliding out beside the\n * rail once it is collapsed to icons, so nested entries stay reachable there. Its `expanded`\n * field seeds the accordion; the item holding the active route opens on its own.\n * - `footer`: The same, rendered into the footer region.\n *\n * Outputs:\n * - `itemClicked`: Emits `{id, event}` when a non-navigating entry (no `route`, no `href`) is\n * activated, in either `content` or `footer`.\n * - `collapsedChange`: Emits `true` when the sidebar collapses and `false` when it expands, reading\n * the mobile sheet or the desktop panel as appropriate. Fires the moment the state flips, so it is\n * the one to drive a caller's own layout, which should start moving with the panel.\n * - `railSettledChange`: The same transition, but `true` only once the collapse has finished\n * animating, and `false` immediately on expand. Use it for anything that should not restyle against\n * a panel still mid-width — swapping a logo for a mark, say. The sidebar's own rail geometry is\n * keyed off this, which is why the labels stay put until the panel is actually narrow.\n *\n * The two forms compose rather than exclude each other, unlike `<yuw-button>`'s `buttons` input\n * which drops projected content when set. `content`/`footer` render their own region; anything\n * projected still renders, so a data-driven nav can sit alongside a hand-written block. To place\n * extra markup *inside* the object-rendered regions — where it scrolls with the nav and inherits the\n * content area's flex sizing — mark it `[yuwSidebarContentExtra]` or `[yuwSidebarFooterExtra]`; the\n * default slot keeps everything else, so existing projection-only usage is unaffected.\n *\n * With `collapsible=\"icon\"` the component also renders a single submenu sheet, shared by every entry\n * that has `children` in either region. It is one panel rather than one per entry because a sheet is a\n * modal overlay: several would compete for the same screen position, and only one submenu is ever on\n * screen anyway.\n *\n * `header` has no object form: it is a free-form branding area with no repeating structure to model.\n *\n * Deliberately not exposed from the helm sidebar (add a wrapper only when a real consumer needs\n * them): `HlmSidebarMenuAction`, `HlmSidebarMenuSkeleton`, `HlmSidebarInput` and\n * `HlmSidebarGroupAction`.\n *\n * Usage:\n * ```html\n * <yuw-sidebar collapsible=\"icon\">\n * <div yuwSidebarHeader>Yurest</div>\n * <div yuwSidebarContent>\n * <ul yuwSidebarMenu>\n * <li yuwSidebarMenuItem><a yuwSidebarMenuButton isActive tooltip=\"Pedidos\">Pedidos</a></li>\n * </ul>\n * </div>\n * </yuw-sidebar>\n * ```\n *\n * Object form:\n * ```html\n * <yuw-sidebar collapsible=\"icon\" [content]=\"nav\" [footer]=\"footerNav\"\n * (itemClicked)=\"onAction($event.id)\">\n * <div yuwSidebarHeader>Yurest</div>\n * </yuw-sidebar>\n * ```\n * ```ts\n * nav: YuwSidebarContentDto = {\n * groups: [{\n * id: 'management',\n * label: 'Gestión',\n * items: [\n * {id: 'orders', label: 'Pedidos', icon: 'lucideReceipt', route: '/orders', badge: '12'},\n * {id: 'reports', label: 'Informes', icon: 'lucideChartLine', expanded: true, children: [\n * {id: 'sales', label: 'Ventas', route: '/reports/sales'},\n * ]},\n * {id: 'sync', label: 'Sincronizar'},\n * ],\n * }],\n * };\n * ```\n */\n@Component({\n selector: 'yuw-sidebar',\n imports: [\n HlmSidebar,\n YuwSidebarNavComponent,\n YuwSidebarSubmenuSheetComponent,\n YuwSidebarContentDirective,\n YuwSidebarFooterDirective,\n YuwSidebarSeparatorDirective,\n ],\n host: {\n class: 'contents',\n '(click)': '_submenu.closeUnhandled($event)',\n },\n providers: [YuwSidebarSubmenuService],\n templateUrl: './sidebar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwSidebarComponent {\n protected readonly _rail = inject(YuwSidebarRailService);\n protected readonly _submenu = inject(YuwSidebarSubmenuService);\n\n readonly collapsible = input<YuwSidebarCollapsibleDto>('offcanvas');\n readonly content = input<YuwSidebarContentDto | undefined>(undefined);\n readonly footer = input<YuwSidebarContentDto | undefined>(undefined);\n readonly side = input<YuwSidebarSideDto>('left');\n readonly sidebarContainerClass = input<string>('');\n\n private readonly config = injectHlmSidebarConfig();\n readonly sidebarWidthMobile = input<string>(this.config.sidebarWidthMobile);\n readonly variant = input<YuwSidebarVariantDto>('sidebar');\n\n readonly itemClicked = output<YuwSidebarItemClickDto>();\n\n readonly collapsedChange = outputFromObservable(toObservable(this._rail.collapsed).pipe(distinctUntilChanged()));\n readonly railSettledChange = outputFromObservable(toObservable(this._rail.railSettled).pipe(distinctUntilChanged()));\n\n protected readonly _containerClass = computed(() => `${yuwSidebarContainerClass} ${this.sidebarContainerClass()}`);\n protected readonly _isRail = computed(() => this.collapsible() === 'icon' && this._rail.railSettled());\n}\n","<hlm-sidebar\n [attr.data-yuw-rail]=\"_isRail() ? 'on' : null\"\n [side]=\"side()\"\n [variant]=\"variant()\"\n [collapsible]=\"collapsible()\"\n [sidebarWidthMobile]=\"sidebarWidthMobile()\"\n [sidebarContainerClass]=\"_containerClass()\"\n>\n <ng-content select=\"[yuwSidebarHeader], yuw-sidebar-header\" />\n\n @if (content(); as nav) {\n <div yuwSidebarContent>\n <div yuwSidebarSeparator class=\"mx-auto w-4/5!\"></div>\n <yuw-sidebar-nav [content]=\"nav\" [collapsible]=\"collapsible()\" (itemClicked)=\"itemClicked.emit($event)\" />\n <ng-content select=\"[yuwSidebarContentExtra]\" />\n </div>\n }\n\n <ng-content />\n\n @if (footer(); as nav) {\n <div yuwSidebarFooter>\n <div yuwSidebarSeparator class=\"mx-auto w-4/5!\"></div>\n <yuw-sidebar-nav [content]=\"nav\" [collapsible]=\"collapsible()\" (itemClicked)=\"itemClicked.emit($event)\" />\n <ng-content select=\"[yuwSidebarFooterExtra]\" />\n </div>\n }\n</hlm-sidebar>\n\n@if (collapsible() === 'icon') {\n <yuw-sidebar-submenu-sheet (itemClicked)=\"itemClicked.emit($event)\" />\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { HlmSidebarTrigger } from 'yukit-web/helm/sidebar';\n\n/**\n * Icon button that toggles the sidebar open or collapsed. Works anywhere on the page, including\n * inside `<main yuwSidebarInset>`, since the open state lives in `YuwSidebarService`.\n *\n * Inputs:\n * - `label`: Screen-reader-only label for the button. User-facing text the consuming app is\n * responsible for translating.\n *\n * Usage:\n * ```html\n * <yuw-sidebar-trigger label=\"Alternar menú\" />\n * ```\n */\n@Component({\n selector: 'yuw-sidebar-trigger',\n imports: [HlmSidebarTrigger],\n host: {\n class: 'contents',\n },\n templateUrl: './sidebar-trigger.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YuwSidebarTriggerComponent {\n readonly label = input.required<string>();\n}\n","<button hlmSidebarTrigger [srOnlyText]=\"label()\" class=\"cursor-pointer\"></button>\n","/*\n * Public API Surface of yukit-web\n */\n\nexport * from './lib/utils/cn';\nexport * from './lib/utils/value-accessor';\n\nexport * from './lib/interface/text-field.interface';\nexport * from './lib/interface/color.interface';\n\nexport * from './lib/components/button/button.component';\nexport * from './lib/components/button/button-group-item.interface';\nexport * from './lib/components/button/button-group-text.directive';\nexport * from './lib/components/badge/badge.component';\nexport * from './lib/components/breadcrumb/breadcrumb.component';\nexport * from './lib/components/breadcrumb/breadcrumb-item.interface';\nexport * from './lib/components/pagination/pagination.component';\nexport * from './lib/components/pagination/pagination.util';\nexport * from './lib/components/combobox/combobox.component';\nexport * from './lib/components/combobox/combobox-option.interface';\nexport * from './lib/components/combobox/combobox-item.directive';\nexport * from './lib/components/accordion/accordion.directive';\nexport * from './lib/components/accordion/accordion-item.directive';\nexport * from './lib/components/accordion/accordion-trigger.component';\nexport * from './lib/components/accordion/accordion-content.component';\nexport * from './lib/components/accordion/accordion.imports';\nexport * from './lib/components/input/input.component';\nexport * from './lib/components/input/input-addon.directive';\nexport * from './lib/components/textarea/textarea.component';\nexport * from './lib/components/search-input/search-input.component';\nexport * from './lib/components/search-input/search-input-collapse.interface';\nexport * from './lib/components/password-input/password-input.component';\nexport * from './lib/components/password-input/password-input.reveal';\nexport * from './lib/components/input-otp/input-otp.component';\nexport * from './lib/components/input-otp/input-otp.layout';\nexport * from './lib/components/label/label.directive';\nexport * from './lib/components/checkbox/checkbox.component';\nexport * from './lib/components/switch/switch.component';\nexport * from './lib/components/radio-group/radio-group.component';\nexport * from './lib/components/radio-group/radio-option.interface';\nexport * from './lib/components/skeleton/skeleton.directive';\nexport * from './lib/components/card/card.directives';\nexport * from './lib/components/empty/empty.directives';\nexport * from './lib/components/context-menu/context-menu.directives';\nexport * from './lib/components/context-menu/context-menu-checkbox-indicator.component';\nexport * from './lib/components/context-menu/context-menu-radio-indicator.component';\nexport * from './lib/components/context-menu/context-menu-sub-indicator.component';\nexport * from './lib/components/datepicker/datepicker.component';\nexport * from './lib/components/table/table.directives';\nexport * from './lib/components/table/datatable.component';\nexport * from './lib/components/table/datatable.variants';\nexport * from './lib/components/table/row-select/datatable-row-select.component';\n\nexport * from './lib/components/avatar/avatar.component';\nexport * from './lib/components/avatar/avatar-group-item.interface';\n\nexport * from './lib/components/item/item.directives';\n\nexport * from './lib/components/sheet/sheet.component';\nexport * from './lib/components/sheet/sheet.directives';\nexport * from './lib/components/sheet/sheet-footer.directive';\nexport * from './lib/components/popover/popover.component';\nexport * from './lib/components/popover/popover.directives';\nexport * from './lib/components/tooltip/tooltip.directive';\n\nexport * from './lib/components/spinner/spinner.component';\n\nexport * from './lib/components/toaster/toaster.component';\nexport * from './lib/components/toaster/toast';\n\nexport * from './lib/components/alert/alert.component';\nexport * from './lib/components/alert/alert-action.directive';\nexport * from './lib/components/alert/alert-title.directive';\nexport * from './lib/components/alert/alert-description.directive';\n\nexport * from './lib/components/dialog/dialog.component';\nexport * from './lib/components/dialog/dialog.directives';\nexport * from './lib/components/dialog/dialog-footer.directive';\n\nexport * from './lib/components/alert-dialog/alert-dialog.component';\nexport * from './lib/components/alert-dialog/alert-dialog.directives';\nexport * from './lib/components/alert-dialog/alert-dialog-media.directive';\n\nexport * from './lib/components/tabs/tabs.component';\nexport * from './lib/components/tabs/tab-item.interface';\nexport * from './lib/components/tabs/tab-panel.directive';\n\nexport * from './lib/components/attachment/attachment.directives';\n\nexport * from './lib/components/sidebar/sidebar.component';\nexport * from './lib/components/sidebar/sidebar-content.interface';\nexport * from './lib/components/sidebar/sidebar-trigger.component';\nexport * from './lib/components/sidebar/sidebar.directives';\nexport {\n YUW_SIDEBAR_RAIL_ICON_SIZE,\n YUW_SIDEBAR_RAIL_PADDING,\n YUW_SIDEBAR_RAIL_WIDTH,\n} from './lib/components/sidebar/sidebar.variants';\nexport * from './lib/components/sidebar/sidebar.service';\nexport * from './lib/components/sidebar/sidebar-rail.service';\nexport * from './lib/components/sidebar/sidebar-submenu.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","nextUniqueId","i1.YuwTableContainerDirective","i1.YuwTableDirective","i1.YuwTHeadDirective","i1.YuwTBodyDirective","i1.YuwTrDirective","i1.YuwThDirective","i1.YuwTdDirective","i1.YuwCaptionDirective"],"mappings":"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"}