@underlayerdev/ui 0.0.2 → 0.0.4

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":"underlayerdev-ui.mjs","sources":["../../../projects/ui/src/components/accordion/accordion.ts","../../../projects/ui/src/components/area-code/area-code.ts","../../../projects/ui/src/components/area-code/area-code.html","../../../projects/ui/src/components/icon/icon.ts","../../../projects/ui/src/components/skeleton/skeleton.ts","../../../projects/ui/src/components/skeleton/skeleton.html","../../../projects/ui/src/components/avatar/avatar.ts","../../../projects/ui/src/components/avatar/avatar-group.ts","../../../projects/ui/src/components/breadcrumb/breadcrumb.ts","../../../projects/ui/src/components/breadcrumb/breadcrumb.html","../../../projects/ui/src/config.ts","../../../projects/ui/src/components/button/button.directive.ts","../../../projects/ui/src/components/button/button.ts","../../../projects/ui/src/components/shared/form-field/form-field-ids.ts","../../../projects/ui/src/components/shared/form-field/form-field-label.ts","../../../projects/ui/src/components/shared/form-field/form-field-helper.ts","../../../projects/ui/src/components/calendar/calendar.ts","../../../projects/ui/src/components/calendar/calendar.html","../../../projects/ui/src/components/card/card.ts","../../../projects/ui/src/components/card/card.html","../../../projects/ui/src/components/carousel/carousel.ts","../../../projects/ui/src/components/checkbox/checkbox.ts","../../../projects/ui/src/components/collapse/collapse.ts","../../../projects/ui/src/components/list-item/list-item.ts","../../../projects/ui/src/components/dropdown/dropdown.ts","../../../projects/ui/src/components/dropdown/dropdown.html","../../../projects/ui/src/components/file-input/file-input.ts","../../../projects/ui/src/components/file-input/file-input.html","../../../projects/ui/src/components/footer/footer.ts","../../../projects/ui/src/components/footer/footer.html","../../../projects/ui/src/components/pill/pill.ts","../../../projects/ui/src/components/pill/pill.html","../../../projects/ui/src/components/hero/hero-slot.directive.ts","../../../projects/ui/src/components/hero/hero.ts","../../../projects/ui/src/components/hero/hero.html","../../../projects/ui/src/components/image/image-not-found.ts","../../../projects/ui/src/components/input/input.ts","../../../projects/ui/src/components/input/input.html","../../../projects/ui/src/components/modal/modal.ts","../../../projects/ui/src/components/modal/modal.html","../../../projects/ui/src/components/navbar/navbar-slot.directive.ts","../../../projects/ui/src/components/navbar/navbar.ts","../../../projects/ui/src/components/navbar/navbar.html","../../../projects/ui/src/components/price-button/custom-currency.pipe.ts","../../../projects/ui/src/components/price-button/price-button.ts","../../../projects/ui/src/components/price-button/price-button.html","../../../projects/ui/src/components/radio/radio.ts","../../../projects/ui/src/components/radio/radio.html","../../../projects/ui/src/components/radio/radio-group.ts","../../../projects/ui/src/components/radial/radial.ts","../../../projects/ui/src/components/radial/radial.html","../../../projects/ui/src/components/rich-text/rich-text.ts","../../../projects/ui/src/components/toast/toast.service.ts","../../../projects/ui/src/components/toast/toast.ts","../../../projects/ui/src/components/toast/toast.html","../../../projects/ui/src/components/tooltip/tooltip.ts","../../../projects/ui/src/components/tooltip/tooltip.html","../../../projects/ui/src/components/search-select/search-select.ts","../../../projects/ui/src/components/search-select/search-select.html","../../../projects/ui/src/components/select/select.ts","../../../projects/ui/src/components/select/select.html","../../../projects/ui/src/components/sidebar/sidebar.ts","../../../projects/ui/src/components/sidebar/sidebar.html","../../../projects/ui/src/components/status/status.ts","../../../projects/ui/src/components/status/status.html","../../../projects/ui/src/components/table/table.ts","../../../projects/ui/src/components/table/table.html","../../../projects/ui/src/components/textarea/textarea-field.directive.ts","../../../projects/ui/src/components/textarea/textarea.ts","../../../projects/ui/src/components/textarea/textarea.html","../../../projects/ui/src/public-api.ts","../../../projects/ui/src/underlayerdev-ui.ts"],"sourcesContent":["import { CdkAccordion, CdkAccordionItem } from '@angular/cdk/accordion';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n DestroyRef,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * AccordionItemComponent is a standalone Angular component that extends CdkAccordionItem.\n * It represents an item within an accordion, providing configurable expansion behavior\n * and accessibility features.\n */\n@Component({\n selector: 'pe-accordion-item',\n standalone: true,\n template: `\n <div\n class=\"pe-accordion__item\"\n [class.pe-accordion__item--expanded]=\"cdkAccordionItem.expanded\"\n [class.pe-accordion__item--disabled]=\"cdkAccordionItem.disabled\">\n <button\n (click)=\"onToggle()\"\n class=\"pe-accordion__trigger\"\n [id]=\"triggerId\"\n [attr.aria-expanded]=\"cdkAccordionItem.expanded\"\n [attr.aria-controls]=\"contentId\"\n [attr.aria-disabled]=\"cdkAccordionItem.disabled ? 'true' : null\"\n [disabled]=\"cdkAccordionItem.disabled\"\n (keydown)=\"onKeydown($event)\"\n type=\"button\">\n <div class=\"pe-accordion__icon\">\n <ng-content select=\"[pe-accordion-icon]\"></ng-content>\n </div>\n <div class=\"pe-accordion__label\">\n <ng-content select=\"[pe-accordion-label]\"></ng-content>\n </div>\n <div class=\"pe-accordion__status\">\n <ng-content select=\"[pe-accordion-status]\"></ng-content>\n </div>\n <span class=\"pe-accordion__indicator\">\n <i class=\"pe-icon pe-icon-size-8 pe-icon-weight-bold pe-icon-chevron_down\"></i>\n </span>\n </button>\n <div\n role=\"region\"\n class=\"pe-accordion__content\"\n [id]=\"contentId\"\n [attr.aria-labelledby]=\"triggerId\"\n [attr.aria-hidden]=\"!cdkAccordionItem.expanded\">\n <ng-content select=\"[pe-accordion-content]\"></ng-content>\n </div>\n </div>\n `,\n styleUrls: ['./accordion.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: CdkAccordionItem,\n inputs: ['expanded', 'disabled'],\n outputs: ['closed', 'opened', 'destroyed', 'expandedChange'],\n },\n ],\n})\nexport class AccordionItemComponent {\n cdkAccordionItem = inject(CdkAccordionItem);\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n /**\n * Stable ID for the content region, used for aria-controls linkage.\n */\n readonly contentId = `pe-accordion-content-${Math.random().toString(36).slice(2, 11)}`;\n\n /**\n * Stable ID for the trigger button, used for aria-labelledby linkage.\n */\n readonly triggerId = `pe-accordion-trigger-${Math.random().toString(36).slice(2, 11)}`;\n\n onToggle(): void {\n if (this.cdkAccordionItem.disabled) {\n return;\n }\n this.cdkAccordionItem.toggle();\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (this.cdkAccordionItem.disabled) {\n return;\n }\n\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.onToggle();\n return;\n }\n\n // Handle Arrow keys, Home, and End for navigation between accordion items\n const accordion = this.elementRef.nativeElement.closest('.pe-accordion');\n if (!accordion) {\n return;\n }\n\n const triggers = Array.from(\n accordion.querySelectorAll('.pe-accordion__trigger:not([disabled])'),\n ) as HTMLButtonElement[];\n const currentIndex = triggers.findIndex((t) => t.id === this.triggerId);\n\n if (currentIndex === -1) {\n return;\n }\n\n let targetIndex: number | null = null;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n targetIndex = currentIndex < triggers.length - 1 ? currentIndex + 1 : 0;\n break;\n case 'ArrowUp':\n event.preventDefault();\n targetIndex = currentIndex > 0 ? currentIndex - 1 : triggers.length - 1;\n break;\n case 'Home':\n event.preventDefault();\n targetIndex = 0;\n break;\n case 'End':\n event.preventDefault();\n targetIndex = triggers.length - 1;\n break;\n }\n\n if (targetIndex !== null && triggers[targetIndex]) {\n triggers[targetIndex].focus();\n }\n }\n}\n\n/**\n * AccordionComponent is a standalone Angular component that acts as a container\n * for multiple AccordionItemComponents. It provides configuration options for\n * multi-expansion behavior and manages the state of its child accordion items.\n */\n@Component({\n selector: 'pe-accordion',\n standalone: true,\n template: `\n <cdk-accordion #accordion [multi]=\"multi()\" class=\"pe-accordion\" [class.pe-accordion--divider]=\"showDivider()\">\n <ng-content />\n </cdk-accordion>\n `,\n styleUrls: ['./accordion.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CdkAccordion],\n})\nexport class AccordionComponent implements AfterViewInit {\n readonly showDivider = input<boolean>(false);\n readonly multi = input<boolean>(false);\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly accordionItems = contentChildren<AccordionItemComponent, CdkAccordionItem>(AccordionItemComponent, {\n read: CdkAccordionItem,\n });\n\n ngAfterViewInit(): void {\n this.setupSingleExpansionLogic();\n }\n\n /**\n * Sets up the single expansion logic to ensure only one item is expanded at a time\n * when multi mode is disabled.\n */\n private setupSingleExpansionLogic(): void {\n const items = this.accordionItems();\n\n // Early return if no items or multi mode is enabled\n if (!items.length || this.multi()) {\n return;\n }\n\n // Subscribe to expansion changes for all items\n items.forEach((item) => {\n item.expandedChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((expanded) => {\n this.handleExpansionChange(item, expanded, items);\n });\n });\n }\n\n /**\n * Handles expansion changes and manages single-expansion behavior.\n * @param changedItem - The accordion item that changed\n * @param expanded - Whether the item is now expanded\n * @param allItems - Array of all accordion items\n */\n private handleExpansionChange(\n changedItem: CdkAccordionItem,\n expanded: boolean,\n allItems: readonly CdkAccordionItem[],\n ): void {\n // Only handle expansion (not collapse) and only when multi mode is disabled\n if (!expanded || this.multi()) {\n return;\n }\n\n // Collapse all other items except the one that was just expanded\n allItems.forEach((item) => {\n if (item !== changedItem && item.expanded) {\n item.expanded = false;\n }\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * A code display component that shows code with automatic line numbering.\n * Features a clean two-column layout following PE design guidelines.\n *\n * @example\n * <pe-area-code\n * [content]=\"codeContent\"\n * [showLineNumbers]=\"true\"\n * />\n */\n@Component({\n selector: 'pe-area-code',\n standalone: true,\n templateUrl: './area-code.html',\n styleUrls: ['./area-code.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AreaCodeComponent {\n // Core inputs\n readonly content = input<string>('');\n readonly showLineNumbers = input<boolean>(true);\n readonly maxHeight = input<string | null>(null);\n\n // Computed properties\n readonly lines = computed(() => {\n const content = this.content();\n if (!content) return [''];\n return content.split('\\n');\n });\n\n readonly lineCount = computed(() => this.lines().length);\n\n readonly lineNumbers = computed(() => {\n const count = this.lineCount();\n return Array.from({ length: count }, (_, i) => i + 1);\n });\n\n // Component properties\n readonly codeId = `pe-area-code-${Math.random().toString(36).slice(2, 11)}`;\n}\n","<div class=\"pe-area-code\" [class.pe-area-code--no-line-numbers]=\"!showLineNumbers()\">\n <div class=\"pe-area-code__container pe-scrollable\" [style.max-height]=\"maxHeight()\">\n <!-- Code Display Area -->\n <div class=\"pe-area-code__display\">\n <!-- Line Numbers Column -->\n @if (showLineNumbers()) {\n <div class=\"pe-area-code__line-numbers\" role=\"presentation\" aria-hidden=\"true\">\n @for (lineNumber of lineNumbers(); track lineNumber) {\n <span class=\"pe-area-code__line-number\">{{ lineNumber }}.</span>\n }\n </div>\n }\n <!-- Code Content Column -->\n <div class=\"pe-area-code__content\">\n <pre class=\"pe-area-code__code\" [id]=\"codeId\"><code>{{ content() }}</code></pre>\n </div>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation } from '@angular/core';\n\n/** Icon size keys from design tokens (iconography.font.size). */\nexport type IconSize = '4' | '5' | '6' | '7' | '8' | '10' | '12' | '16' | '24' | '32';\n\n/** Icon weight keys from design tokens (iconography.font.weight). */\nexport type IconWeight = 'medium' | 'bold';\n\n/** Icon name / glyph key from design tokens (content['icon-glyph']). Valid values match token keys. */\nexport type IconName = string;\n\n// <pe-icon class=\"pe-icon pe-icon-size-${size} pe-icon-weight-${weight} pe-icon-${icon}\" />\n@Component({\n selector: 'pe-icon',\n standalone: true,\n template: ``,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'hostClasses()'\n }\n})\nexport class IconComponent {\n size = input<IconSize>('8');\n weight = input<IconWeight>('medium');\n icon = input.required<IconName>();\n\n readonly hostClasses = computed(() => {\n return `pe-icon pe-icon-size-${this.size()} pe-icon-weight-${this.weight()} pe-icon-${this.icon()}`;\n });\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\n\nexport type SkeletonVariant = 'rect' | 'text';\n\nexport type SkeletonBorderRadius = 'xs' | 'sm' | 'md' | 'lg' | 'full';\n\n@Component({\n selector: 'pe-skeleton',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './skeleton.html',\n styleUrls: ['./skeleton.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkeletonComponent {\n readonly variant = input<SkeletonVariant>('rect');\n readonly width = input<string | null>(null);\n readonly height = input<string | null>(null);\n readonly lines = input<number>(3);\n readonly borderRadius = input<SkeletonBorderRadius | null>(null);\n readonly show = input<boolean>(true);\n\n readonly hostStyles = computed(() => {\n const width = this.width();\n const height = this.height();\n\n return {\n width: width ?? null,\n height: height ?? null,\n } as const;\n });\n\n readonly lineWidths = computed(() => {\n const count = Math.max(1, this.lines());\n const widths: string[] = [];\n\n for (let index = 0; index < count; index += 1) {\n const base = 100;\n const step = 8;\n const value = Math.max(40, base - index * step);\n widths.push(`${value}%`);\n }\n\n return widths;\n });\n\n readonly radiusClass = computed(() => {\n const radius = this.borderRadius();\n return radius ? `pe-skeleton--radius-${radius}` : null;\n });\n\n trackByIndex(index: number): number {\n return index;\n }\n}\n\n","<div\n class=\"pe-skeleton\"\n [class.pe-skeleton--active]=\"show()\"\n [class.pe-skeleton--rect]=\"variant() === 'rect'\"\n [class.pe-skeleton--text]=\"variant() === 'text'\"\n [class]=\"radiusClass() || ''\"\n [style.width]=\"hostStyles().width\"\n [style.height]=\"hostStyles().height\"\n>\n <div class=\"pe-skeleton__content\">\n <ng-content />\n </div>\n\n @if (show()) {\n @if (variant() === 'text') {\n <div class=\"pe-skeleton__overlay pe-skeleton__overlay--text\">\n @for (lineWidth of lineWidths(); track trackByIndex($index)) {\n <div class=\"pe-skeleton__block pe-skeleton__block--line\" [style.width]=\"lineWidth\"></div>\n }\n </div>\n } @else {\n <div class=\"pe-skeleton__overlay pe-skeleton__overlay--rect\">\n <div class=\"pe-skeleton__block pe-skeleton__block--rect\"></div>\n </div>\n }\n }\n</div>\n\n","import { ChangeDetectionStrategy, Component, computed, effect, input, signal, ViewEncapsulation } from '@angular/core';\n\nimport { IconComponent, IconName } from '../icon/icon';\nimport { SkeletonComponent } from '../skeleton/skeleton';\nimport type { UiSize } from '../shared/ui-types';\ntype IconSize = '5' | '6' | '7' | '8';\n/**\n * A reusable avatar component that displays user images, initials, or icons.\n * Supports multiple sizes and fallback options when an image is not available.\n * @example\n * <pe-avatar size=\"md\" [src]=\"userImageUrl\" [initials]=\"'JD'\" />\n */\n@Component({\n selector: 'pe-avatar',\n standalone: true,\n imports: [IconComponent, SkeletonComponent],\n template: `\n <pe-skeleton class=\"pe-avatar pe-avatar--{{ size() }}\" [show]=\"loading()\" variant=\"rect\" borderRadius=\"full\">\n <div class=\"pe-avatar pe-avatar--{{ size() }}\">\n @if (src() && !imageError()) {\n <img\n [src]=\"src()\"\n [alt]=\"alt()\"\n (error)=\"handleImageError()\"\n class=\"pe-avatar__image\"\n />\n } @else if (initials()) {\n <span class=\"pe-avatar__initials\">{{ initials() }}</span>\n } @else if (icon()) {\n <pe-icon [icon]=\"icon()!\" [size]=\"iconSize()\" />\n }\n </div>\n </pe-skeleton>\n `,\n styleUrls: ['./avatar.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AvatarComponent {\n /** The size of the avatar */\n size = input<UiSize>('md');\n\n /** The image source URL */\n src = input<string | undefined>(undefined);\n\n /** Fallback initials to display when image is not available */\n initials = input<string | undefined>(undefined);\n\n /** Fallback icon to display when image and initials are not available */\n icon = input<IconName | undefined>(undefined);\n\n /** Alt text for the avatar image */\n alt = input<string>('');\n\n /** Show a skeleton placeholder instead of content while loading. */\n loading = input<boolean>(false);\n\n /** Internal signal to track image loading errors */\n protected readonly imageError = signal(false);\n\n /** Computed icon size based on avatar size */\n readonly iconSize = computed<IconSize>(() => {\n const sizeMap: Record<UiSize, IconSize> = {\n sm: '5',\n md: '6',\n lg: '7',\n xl: '8',\n };\n return sizeMap[this.size()];\n });\n\n constructor() {\n // Reset image error when src changes\n effect(() => {\n this.src();\n this.imageError.set(false);\n });\n }\n\n /** Handles image loading errors */\n protected handleImageError(): void {\n this.imageError.set(true);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation } from '@angular/core';\n\nimport { AvatarComponent } from './avatar';\nimport type { UiSize } from '../shared/ui-types';\nimport type { IconName } from '../icon/icon';\n\nexport interface AvatarData {\n src?: string;\n initials?: string;\n icon?: IconName;\n alt?: string;\n}\n\n/**\n * A reusable avatar group component that displays multiple avatars with overflow handling.\n * Supports maximum visible count and shows a \"+X\" indicator for remaining avatars.\n * @example\n * <pe-avatar-group [avatars]=\"userAvatars\" [maxVisible]=\"3\" size=\"md\" />\n */\n@Component({\n selector: 'pe-avatar-group',\n standalone: true,\n imports: [AvatarComponent],\n template: `\n <div class=\"pe-avatar-group pe-avatar-group--{{this.size()}}\"\n [class.pe-avatar-group--stacked]=\"stacked()\"\n >\n @for (avatar of visibleAvatars(); track $index) {\n <pe-avatar\n [size]=\"size()\"\n [src]=\"avatar.src\"\n [initials]=\"avatar.initials\"\n [icon]=\"avatar.icon\"\n [alt]=\"avatar.alt || ''\"\n [class.pe-avatar-group__avatar]=\"!stacked() && $index > 0\"\n />\n }\n @if (remainingCount() > 0) {\n <div class=\"pe-avatar-group__overflow pe-avatar-group__overflow--{{this.size()}}\" \n [class.pe-avatar-group__overflow-avatar]=\"!stacked()\">\n <span class=\"pe-avatar-group__overflow-text\">+{{ remainingCount() }}</span>\n </div>\n }\n </div>\n `,\n styleUrls: ['./avatar-group.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AvatarGroupComponent {\n /** Array of avatar data to display */\n avatars = input.required<AvatarData[]>();\n\n /** The size of all avatars in the group */\n size = input<UiSize>('md');\n\n /** Maximum number of avatars to display before showing overflow indicator */\n maxVisible = input<number | null>(null);\n\n /** Whether avatars should overlap (stacked) or have spacing between them */\n stacked = input<boolean>(false);\n\n /** Computed list of visible avatars */\n readonly visibleAvatars = computed(() => {\n const max = this.maxVisible();\n const avatars = this.avatars();\n return max !== null && max > 0 ? avatars.slice(0, max) : avatars;\n });\n\n /** Computed count of remaining avatars not shown */\n readonly remainingCount = computed(() => {\n const max = this.maxVisible();\n if (max === null || max <= 0) return 0;\n return Math.max(0, this.avatars().length - max);\n });\n}\n","import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\nimport { IconComponent } from '../icon/icon';\n\nexport interface BreadcrumbItem {\n label: string;\n href?: string;\n routerLink?: string | any[];\n icon?: string;\n}\n\nexport type BreadcrumbSeparator = 'chevron_right' | 'slash' | 'dot';\n\n/**\n * Breadcrumb component for displaying navigation hierarchy.\n * Supports responsive collapsing on mobile devices and customizable separators.\n *\n * @example\n * ```html\n * <pe-breadcrumb\n * [items]=\"[\n * { label: 'Home', href: '/' },\n * { label: 'Products', href: '/products' },\n * { label: 'Current Page' }\n * ]\"\n * />\n * ```\n */\n@Component({\n selector: 'pe-breadcrumb',\n standalone: true,\n imports: [IconComponent, RouterLink],\n templateUrl: './breadcrumb.html',\n styleUrls: ['./breadcrumb.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class BreadcrumbComponent {\n /** Array of breadcrumb items to display */\n items = input.required<BreadcrumbItem[]>();\n\n /** Separator type between breadcrumb items */\n separator = input<BreadcrumbSeparator>('chevron_right');\n\n /** Maximum number of items to show before collapsing (for responsive behavior) */\n maxItems = input<number | undefined>(undefined);\n\n /** Check if an item is the last item */\n isLastItem(index: number): boolean {\n return index === this.items().length - 1;\n }\n\n /** Check if an item should be shown on mobile (first, last, or within maxItems) */\n shouldShowOnMobile(index: number): boolean {\n const items = this.items();\n const max = this.maxItems();\n if (!max || items.length <= max) return true;\n if (index === 0) return true; // Always show first\n if (index >= items.length - 2) return true; // Always show last 2\n return false;\n }\n\n /** Check if ellipsis should be shown on mobile */\n shouldShowEllipsisOnMobile(): boolean {\n const items = this.items();\n const max = this.maxItems();\n if (!max || items.length <= max) return false;\n return items.length > max + 1; // Show ellipsis if we're hiding items\n }\n}\n","<nav class=\"pe-breadcrumb\" aria-label=\"Breadcrumb\">\n <ol class=\"pe-breadcrumb__list\">\n @for (item of items(); track $index) {\n <li\n class=\"pe-breadcrumb__item\"\n [class.pe-breadcrumb__item--current]=\"isLastItem($index)\"\n [class.pe-breadcrumb__item--with-icon]=\"item.icon\"\n [class.pe-breadcrumb__item--hidden-mobile]=\"maxItems() && !shouldShowOnMobile($index)\"\n >\n @if (isLastItem($index)) {\n <span class=\"pe-breadcrumb__text\" aria-current=\"page\">\n @if (item.icon) {\n <pe-icon [icon]=\"item.icon\" size=\"5\" class=\"pe-breadcrumb__icon\" />\n }\n {{ item.label }}\n </span>\n } @else {\n @if (item.href) {\n <a [href]=\"item.href\" class=\"pe-breadcrumb__link\">\n @if (item.icon) {\n <pe-icon [icon]=\"item.icon\" size=\"5\" class=\"pe-breadcrumb__icon\" />\n }\n {{ item.label }}\n </a>\n } @else if (item.routerLink) {\n <a [routerLink]=\"item.routerLink\" class=\"pe-breadcrumb__link\">\n @if (item.icon) {\n <pe-icon [icon]=\"item.icon\" size=\"5\" class=\"pe-breadcrumb__icon\" />\n }\n {{ item.label }}\n </a>\n } @else {\n <span class=\"pe-breadcrumb__text\">\n @if (item.icon) {\n <pe-icon [icon]=\"item.icon\" size=\"5\" class=\"pe-breadcrumb__icon\" />\n }\n {{ item.label }}\n </span>\n }\n }\n\n @if (!isLastItem($index)) {\n <span class=\"pe-breadcrumb__separator\" aria-hidden=\"true\">\n @if (separator() === 'chevron_right') {\n <pe-icon icon=\"chevron_right\" size=\"5\" />\n } @else if (separator() === 'slash') {\n <span class=\"pe-breadcrumb__separator-text\">/</span>\n } @else if (separator() === 'dot') {\n <span class=\"pe-breadcrumb__separator-text\">·</span>\n }\n </span>\n }\n </li>\n }\n\n @if (shouldShowEllipsisOnMobile()) {\n <li class=\"pe-breadcrumb__item pe-breadcrumb__item--ellipsis\" aria-hidden=\"true\">\n <span class=\"pe-breadcrumb__ellipsis\">...</span>\n <span class=\"pe-breadcrumb__separator\" aria-hidden=\"true\">\n @if (separator() === 'chevron_right') {\n <pe-icon icon=\"chevron_right\" size=\"5\" />\n } @else if (separator() === 'slash') {\n <span class=\"pe-breadcrumb__separator-text\">/</span>\n } @else if (separator() === 'dot') {\n <span class=\"pe-breadcrumb__separator-text\">·</span>\n }\n </span>\n </li>\n }\n </ol>\n</nav>\n","export const CSS_PREFIX = 'pe-';\n","import { computed, Directive, input } from '@angular/core';\n\nimport { CSS_PREFIX } from '../../config';\nimport type { UiSize, UiTheme } from '../shared/ui-types';\n\n/**\n * Directive that applies styling and behavior to button elements.\n * @example\n * <button udsButton size=\"md\" theme=\"fill-purple\">Click me</button>\n */\n@Directive({\n selector: '[peButton]',\n standalone: true,\n host: {\n '[attr.role]': '\"button\"',\n '[class]': 'allClasses()',\n },\n})\nexport class ButtonDirective {\n private readonly baseClass = `${CSS_PREFIX}btn`;\n\n /** The size variant of the button */\n size = input<UiSize>('md');\n\n /** The theme variant of the button */\n theme = input<UiTheme>('fill-purple');\n\n /** Whether the button only contains an icon */\n iconOnly = input<boolean>(false);\n\n /** Whether the content should be stacked vertically */\n vertical = input<boolean>(false);\n\n /** Computed property for vertical state */\n protected shouldBeVertical = computed(() => this.vertical() && this.size() === 'lg');\n\n /** All computed classes based on current state */\n protected allClasses = computed(() => {\n const classes = [this.baseClass]; // Base class\n classes.push(`${this.baseClass}--${this.size()}`); // Size variant\n classes.push(`${this.baseClass}--${this.theme()}`); // Theme variant\n if (this.iconOnly()) {\n classes.push(`${this.baseClass}--icon-only`); // Icon only state\n }\n if (this.shouldBeVertical()) {\n classes.push(`${this.baseClass}--vertical`);\n }\n return classes;\n });\n}\n","import { ChangeDetectionStrategy, Component, input, output, ViewEncapsulation } from '@angular/core';\n\nimport { ButtonDirective } from './button.directive';\nimport type { UiSize, UiTheme } from '../shared/ui-types';\n\n/**\n * A reusable button component that supports various themes, sizes, and states.\n * @example\n * <uds-button size=\"md\" theme=\"fill-purple\">Click me</uds-button>\n */\n@Component({\n selector: 'pe-button',\n standalone: true,\n imports: [ButtonDirective],\n template: `\n <button\n peButton\n [attr.type]=\"type()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-disabled]=\"disabled()\"\n [size]=\"size()\"\n [theme]=\"theme()\"\n [iconOnly]=\"iconOnly()\"\n [vertical]=\"vertical()\"\n [disabled]=\"disabled()\"\n (click)=\"handleClick($event)\">\n <ng-content />\n </button>\n `,\n styleUrls: ['./button.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class ButtonComponent {\n /** The size of the button */\n size = input<UiSize>('md');\n\n /** The visual theme of the button */\n theme = input<UiTheme>('fill-purple');\n\n /** Whether the button only contains an icon */\n iconOnly = input<boolean>(false);\n\n /** Whether the button content should be stacked vertically (only applies to lg size) */\n vertical = input<boolean>(false);\n\n /** Whether the button is disabled */\n disabled = input<boolean>(false);\n\n /** The button type attribute */\n type = input<'button' | 'submit' | 'reset'>('button');\n\n /** Optional aria-label for accessibility */\n ariaLabel = input<string | undefined>(undefined);\n\n /** Click event emitter with proper type safety */\n buttonClick = output<MouseEvent>();\n\n /** Handles the click event and prevents it if button is disabled */\n protected handleClick(event: MouseEvent): void {\n if (this.disabled()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n this.buttonClick.emit(event);\n }\n}\n","/**\n * Generates unique IDs for form field elements (control, helper, error).\n * Use this so label `for`, helper `id`, and `aria-describedby` stay in sync.\n */\nexport function createFormFieldIds(prefix: string): {\n controlId: string;\n helperId: string;\n errorId: string;\n} {\n const id = `${prefix}-${Math.random().toString(36).slice(2, 11)}`;\n return {\n controlId: id,\n helperId: `${id}-helper`,\n errorId: `${id}-error`,\n };\n}\n\n/**\n * Builds the value for `aria-describedby` from helper and error IDs.\n */\nexport function getFormFieldDescribedBy(\n helperId: string,\n errorId: string,\n hasHelperText: boolean,\n hasError: boolean,\n hasErrorText: boolean\n): string | undefined {\n const ids: string[] = [];\n if (hasHelperText) ids.push(helperId);\n if (hasError && hasErrorText) ids.push(errorId);\n return ids.length > 0 ? ids.join(' ') : undefined;\n}\n","import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\nimport type { UiSize } from '../ui-types';\n\n/**\n * Shared label for form fields (input, select, textarea).\n * Renders label text and optional required indicator.\n */\n@Component({\n selector: 'pe-form-field-label',\n standalone: true,\n template: `\n @if (label()) {\n <label\n [attr.for]=\"for()\"\n class=\"pe-form-field__label pe-form-field__label--{{size()}}\"\n [class.pe-form-field__label--required]=\"required()\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"pe-form-field__required-indicator\" aria-hidden=\"true\" title=\"Required\"> * </span>\n }\n </label>\n }\n `,\n styleUrls: ['./form-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class FormFieldLabelComponent {\n readonly label = input<string | null>(null);\n readonly required = input<boolean>(false);\n readonly for = input<string>('');\n readonly size = input<UiSize>('md');\n}\n","import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\n/**\n * Shared helper/error text for form fields (input, select, textarea).\n * Shows error text when in error state, otherwise helper text.\n */\n@Component({\n selector: 'pe-form-field-helper',\n standalone: true,\n template: `\n <span\n [id]=\"id()\"\n class=\"pe-form-field__helper-text\"\n [class.pe-form-field__helper-text--error]=\"error()\"\n >\n @if (error() && errorText()) {\n {{ errorText() }}\n } @else {\n {{ helperText() }}\n }\n </span>\n `,\n styleUrls: ['./form-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class FormFieldHelperComponent {\n readonly id = input.required<string>();\n readonly helperText = input<string | null>(null);\n readonly errorText = input<string | null>(null);\n readonly error = input<boolean>(false);\n}\n","import { CdkMenu, CdkMenuTrigger } from '@angular/cdk/menu';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n model,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nimport {\n createFormFieldIds,\n FormFieldHelperComponent,\n FormFieldLabelComponent,\n getFormFieldDescribedBy,\n} from '../shared/form-field';\nimport { ButtonComponent } from '../button/button';\nimport { IconComponent } from '../icon/icon';\nimport type { IconSize } from '../icon/icon';\nimport type { UiSize } from '../shared/ui-types';\n\nexport type CalendarMode = 'date' | 'time' | 'datetime';\n\nexport interface CalendarDay {\n date: Date;\n isCurrentMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n isDisabled: boolean;\n}\n\nexport interface TimeSelection {\n hour: number;\n minute: number;\n}\n\n/**\n * Calendar component. Implements FormValueControl&lt;Date | null&gt; for Signal Forms [formField].\n * Use [(value)] or [formField]=\"myForm().date\". Form model field should be Date | null.\n */\n@Component({\n selector: 'pe-calendar',\n standalone: true,\n imports: [\n CdkMenuTrigger,\n CdkMenu,\n ButtonComponent,\n IconComponent,\n FormFieldLabelComponent,\n FormFieldHelperComponent,\n ],\n templateUrl: './calendar.html',\n styleUrls: ['./calendar.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class CalendarComponent implements FormValueControl<Date | null> {\n readonly mode = input<CalendarMode>('date');\n readonly value = model<Date | null>(null);\n readonly size = input<UiSize>('md');\n readonly error = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly readOnly = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly placeholder = input<string>('');\n readonly label = input<string | null>(null);\n readonly helperText = input<string | null>(null);\n readonly errorText = input<string | null>(null);\n readonly minDate = input<Date | null>(null);\n readonly maxDate = input<Date | null>(null);\n readonly minTime = input<Date | null>(null);\n readonly maxTime = input<Date | null>(null);\n readonly locale = input<string>('en-US');\n readonly showCalendarIcon = input<boolean>(true);\n\n readonly invalid = input<boolean>(false);\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n protected readonly ids = createFormFieldIds('pe-calendar');\n\n readonly isOpen = signal(false);\n readonly currentMonth = signal<Date>(new Date());\n readonly selectedTime = signal<TimeSelection | null>(null);\n\n readonly buttonSize = computed<UiSize>(() => {\n const size = this.size();\n\n if (size === 'sm') return 'sm';\n if (size === 'md') return 'md';\n if (size === 'lg') return 'lg';\n if (size === 'xl') return 'xl';\n\n return 'md';\n });\n\n readonly iconSize = computed<IconSize>(() => {\n const size = this.size();\n\n if (size === 'sm') return '6';\n if (size === 'md') return '7';\n if (size === 'lg') return '8';\n\n // xl calendar uses a slightly larger icon\n return '10';\n });\n\n readonly defaultPlaceholder = computed(() => {\n const mode = this.mode();\n if (this.placeholder()) return this.placeholder();\n if (mode === 'date') return 'Select date';\n if (mode === 'time') return 'Select time';\n return 'Select date and time';\n });\n\n readonly displayValue = computed(() => {\n const val = this.value();\n if (!val) return '';\n const mode = this.mode();\n const locale = this.locale();\n\n if (mode === 'date') {\n return new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n }).format(val);\n }\n\n if (mode === 'time') {\n return new Intl.DateTimeFormat(locale, {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }).format(val);\n }\n\n return new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }).format(val);\n });\n\n protected readonly hasError = computed(() => this.error() || this.invalid());\n\n protected readonly resolvedErrorText = computed(\n () =>\n this.errorText() ||\n (this.hasError() && this.errors().length ? (this.errors()[0]?.message ?? null) : null)\n );\n\n readonly describedBy = computed(() =>\n getFormFieldDescribedBy(\n this.ids.helperId,\n this.ids.errorId,\n !!this.helperText(),\n this.hasError(),\n !!this.resolvedErrorText()\n )\n );\n\n readonly calendarDays = computed<CalendarDay[]>(() => {\n const month = this.currentMonth();\n const selected = this.value();\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n const firstDay = new Date(month.getFullYear(), month.getMonth(), 1);\n const lastDay = new Date(month.getFullYear(), month.getMonth() + 1, 0);\n const startDate = new Date(firstDay);\n startDate.setDate(startDate.getDate() - startDate.getDay());\n\n const days: CalendarDay[] = [];\n const current = new Date(startDate);\n\n for (let i = 0; i < 42; i++) {\n const date = new Date(current);\n date.setHours(0, 0, 0, 0);\n\n const isCurrentMonth = date.getMonth() === month.getMonth();\n const isToday = date.getTime() === today.getTime();\n const isSelected =\n selected !== null &&\n date.getTime() === new Date(selected).setHours(0, 0, 0, 0);\n const isDisabled = this.isDateDisabled(date);\n\n days.push({\n date,\n isCurrentMonth,\n isToday,\n isSelected,\n isDisabled,\n });\n\n current.setDate(current.getDate() + 1);\n }\n\n return days;\n });\n\n readonly monthYearLabel = computed(() => {\n const month = this.currentMonth();\n return new Intl.DateTimeFormat(this.locale(), {\n month: 'long',\n year: 'numeric',\n }).format(month);\n });\n\n readonly hourOptions = computed(() => {\n const hours: number[] = [];\n for (let i = 0; i < 24; i++) {\n hours.push(i);\n }\n return hours;\n });\n\n readonly minuteOptions = computed(() => {\n const minutes: number[] = [];\n for (let i = 0; i < 60; i += 5) {\n minutes.push(i);\n }\n return minutes;\n });\n\n readonly selectedHour = computed(() => {\n const val = this.value();\n if (!val) return this.selectedTime()?.hour ?? 0;\n return val.getHours();\n });\n\n readonly selectedMinute = computed(() => {\n const val = this.value();\n if (!val) return this.selectedTime()?.minute ?? 0;\n return val.getMinutes();\n });\n\n readonly opened = output<void>();\n readonly closed = output<void>();\n\n constructor() {\n // Keep currentMonth and selectedTime in sync with the external value\n effect(() => {\n const val = this.value();\n if (val) {\n this.currentMonth.set(new Date(val.getFullYear(), val.getMonth(), 1));\n if (this.mode() !== 'date') {\n this.selectedTime.set({\n hour: val.getHours(),\n minute: val.getMinutes(),\n });\n }\n }\n });\n }\n\n /**\n * Closes the CDK menu by simulating an Escape key press.\n * This lets the CDK handle all focus and cleanup logic.\n */\n private closeMenuViaEscape(): void {\n const escapeEvent = new KeyboardEvent('keydown', {\n key: 'Escape',\n code: 'Escape',\n keyCode: 27,\n bubbles: true,\n cancelable: true,\n });\n\n document.dispatchEvent(escapeEvent);\n this.isOpen.set(false);\n this.closed.emit();\n }\n\n isDateDisabled(date: Date): boolean {\n const min = this.minDate();\n const max = this.maxDate();\n const dateOnly = new Date(date);\n dateOnly.setHours(0, 0, 0, 0);\n\n if (min) {\n const minOnly = new Date(min);\n minOnly.setHours(0, 0, 0, 0);\n if (dateOnly < minOnly) return true;\n }\n\n if (max) {\n const maxOnly = new Date(max);\n maxOnly.setHours(0, 0, 0, 0);\n if (dateOnly > maxOnly) return true;\n }\n\n return false;\n }\n\n isTimeDisabled(hour: number, minute: number): boolean {\n const min = this.minTime();\n const max = this.maxTime();\n if (!min && !max) return false;\n\n const testDate = new Date();\n testDate.setHours(hour, minute, 0, 0);\n\n if (min) {\n const minHour = min.getHours();\n const minMinute = min.getMinutes();\n if (hour < minHour || (hour === minHour && minute < minMinute)) {\n return true;\n }\n }\n\n if (max) {\n const maxHour = max.getHours();\n const maxMinute = max.getMinutes();\n if (hour > maxHour || (hour === maxHour && minute > maxMinute)) {\n return true;\n }\n }\n\n return false;\n }\n\n selectDate(date: Date): void {\n if (this.isDateDisabled(date)) return;\n\n const mode = this.mode();\n const currentValue = this.value();\n let newDate: Date;\n\n if (mode === 'date') {\n newDate = new Date(date);\n newDate.setHours(0, 0, 0, 0);\n } else if (mode === 'time') {\n const time = this.selectedTime();\n newDate = new Date(date);\n if (time) {\n newDate.setHours(time.hour, time.minute, 0, 0);\n } else {\n newDate.setHours(0, 0, 0, 0);\n }\n } else {\n const time = this.selectedTime() ?? {\n hour: currentValue?.getHours() ?? 0,\n minute: currentValue?.getMinutes() ?? 0,\n };\n newDate = new Date(date);\n newDate.setHours(time.hour, time.minute, 0, 0);\n }\n\n this.value.set(newDate);\n\n if (mode === 'date') {\n this.closeMenuViaEscape();\n }\n }\n\n selectTime(hour: number, minute: number): void {\n if (this.isTimeDisabled(hour, minute)) return;\n\n this.selectedTime.set({ hour, minute });\n\n const mode = this.mode();\n const currentValue = this.value();\n let newDate: Date;\n\n if (mode === 'time') {\n newDate = new Date();\n newDate.setHours(hour, minute, 0, 0);\n } else {\n const baseDate = currentValue ?? new Date();\n newDate = new Date(baseDate);\n newDate.setHours(hour, minute, 0, 0);\n }\n\n this.value.set(newDate);\n\n if (mode === 'time' || mode === 'datetime') {\n this.closeMenuViaEscape();\n }\n }\n\n previousMonth(): void {\n const current = this.currentMonth();\n const newMonth = new Date(current.getFullYear(), current.getMonth() - 1, 1);\n this.currentMonth.set(newMonth);\n }\n\n nextMonth(): void {\n const current = this.currentMonth();\n const newMonth = new Date(current.getFullYear(), current.getMonth() + 1, 1);\n this.currentMonth.set(newMonth);\n }\n\n selectToday(): void {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n this.selectDate(today);\n }\n\n clear(): void {\n this.value.set(null);\n this.selectedTime.set(null);\n }\n\n open(): void {\n if (this.disabled() || this.readOnly()) return;\n this.isOpen.set(true);\n this.opened.emit();\n }\n\n close(): void {\n this.isOpen.set(false);\n this.closed.emit();\n }\n\n onMenuOpened(): void {\n this.isOpen.set(true);\n this.opened.emit();\n }\n\n onMenuClosed(): void {\n this.isOpen.set(false);\n this.closed.emit();\n }\n\n focus(): void {\n const trigger = document.getElementById(this.ids.controlId);\n trigger?.focus();\n }\n}\n","<div\n class=\"pe-calendar pe-calendar--{{ mode() }} pe-calendar--{{ size() }}\"\n [class.pe-calendar--error]=\"hasError()\"\n [class.pe-calendar--disabled]=\"disabled()\"\n [class.pe-calendar--read-only]=\"readOnly()\"\n [class.pe-calendar--required]=\"required()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n>\n <pe-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"ids.controlId\"\n [size]=\"size()\"\n />\n\n <div class=\"pe-calendar__trigger-group\" [class.pe-calendar__trigger-group--focused]=\"isOpen()\">\n <button\n type=\"button\"\n [id]=\"ids.controlId\"\n class=\"pe-calendar__trigger\"\n [disabled]=\"disabled()\"\n [cdkMenuTriggerFor]=\"calendarMenu\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"ids.controlId + '-menu'\"\n (cdkMenuOpened)=\"onMenuOpened()\"\n (cdkMenuClosed)=\"onMenuClosed()\"\n >\n <span\n class=\"pe-calendar__trigger-text\"\n [class.pe-calendar__trigger-text--placeholder]=\"!displayValue()\"\n >\n @if (displayValue()) {\n {{ displayValue() }}\n } @else {\n {{ defaultPlaceholder() }}\n }\n </span>\n </button>\n\n @if (showCalendarIcon()) {\n <pe-button\n type=\"button\"\n theme=\"ghost-white\"\n [size]=\"buttonSize()\"\n [iconOnly]=\"true\"\n [disabled]=\"disabled()\"\n [cdkMenuTriggerFor]=\"calendarMenu\"\n class=\"pe-calendar__icon-button\"\n ariaLabel=\"Open calendar\"\n (cdkMenuOpened)=\"onMenuOpened()\"\n (cdkMenuClosed)=\"onMenuClosed()\"\n >\n <pe-icon icon=\"calendar\" [size]=\"iconSize()\" />\n </pe-button>\n }\n </div>\n\n <pe-form-field-helper\n [id]=\"ids.helperId\"\n [helperText]=\"helperText()\"\n [errorText]=\"resolvedErrorText()\"\n [error]=\"hasError()\"\n />\n\n <ng-template #calendarMenu>\n <div cdkMenu class=\"pe-calendar__popup\" [id]=\"ids.controlId + '-menu'\">\n @if (mode() === 'date' || mode() === 'datetime') {\n <div class=\"pe-calendar__date-picker\">\n <div class=\"pe-calendar__header\">\n <pe-button\n type=\"button\"\n theme=\"ghost-white\"\n [iconOnly]=\"true\"\n ariaLabel=\"Previous month\"\n (buttonClick)=\"previousMonth()\"\n >\n <pe-icon icon=\"chevron_left\" size=\"6\" />\n </pe-button>\n <div class=\"pe-calendar__month-year\">{{ monthYearLabel() }}</div>\n <pe-button\n type=\"button\"\n theme=\"ghost-white\"\n [iconOnly]=\"true\"\n ariaLabel=\"Next month\"\n (buttonClick)=\"nextMonth()\"\n >\n <pe-icon icon=\"chevron_right\" size=\"6\" />\n </pe-button>\n </div>\n\n <div class=\"pe-calendar__weekdays\">\n @for (day of ['S', 'M', 'T', 'W', 'T', 'F', 'S']; track $index) {\n <div class=\"pe-calendar__weekday\">{{ day }}</div>\n }\n </div>\n\n <div class=\"pe-calendar__days\">\n @for (day of calendarDays(); track day.date.getTime()) {\n <button\n type=\"button\"\n class=\"pe-calendar__day\"\n [class.pe-calendar__day--current-month]=\"day.isCurrentMonth\"\n [class.pe-calendar__day--today]=\"day.isToday\"\n [class.pe-calendar__day--selected]=\"day.isSelected\"\n [class.pe-calendar__day--disabled]=\"day.isDisabled\"\n [disabled]=\"day.isDisabled\"\n (click)=\"selectDate(day.date)\"\n >\n {{ day.date.getDate() }}\n </button>\n }\n </div>\n </div>\n }\n\n @if (mode() === 'time' || mode() === 'datetime') {\n <div class=\"pe-calendar__time-picker\">\n <div class=\"pe-calendar__time-controls\">\n <select\n class=\"pe-calendar__time-select\"\n [value]=\"selectedHour()\"\n (change)=\"selectTime(+$any($event.target).value, selectedMinute())\"\n >\n @for (hour of hourOptions(); track hour) {\n <option [value]=\"hour\" [disabled]=\"isTimeDisabled(hour, selectedMinute())\">\n {{ hour.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n <span class=\"pe-calendar__time-separator\">:</span>\n <select\n class=\"pe-calendar__time-select\"\n [value]=\"selectedMinute()\"\n (change)=\"selectTime(selectedHour(), +$any($event.target).value)\"\n >\n @for (minute of minuteOptions(); track minute) {\n <option [value]=\"minute\" [disabled]=\"isTimeDisabled(selectedHour(), minute)\">\n {{ minute.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n </div>\n </div>\n }\n\n <div class=\"pe-calendar__actions\">\n @if (mode() === 'date' || mode() === 'datetime') {\n <pe-button type=\"button\" theme=\"transparent-white\" (buttonClick)=\"selectToday()\">\n Today\n </pe-button>\n }\n @if (value()) {\n <pe-button type=\"button\" theme=\"transparent-white\" (buttonClick)=\"clear()\">\n Clear\n </pe-button>\n }\n </div>\n </div>\n </ng-template>\n</div>\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\nimport { SkeletonComponent } from '../skeleton/skeleton';\n\n// Card types\nexport type CardDirection = 'horizontal' | 'vertical';\nexport type CardCaptionSize = 'default' | 'sm';\nexport type ActionsDistribution = 'default' | 'equal';\nexport type MediaAspectRatio = 'default' | 'square' | 'portrait';\n\n@Component({\n selector: 'pe-card',\n standalone: true,\n imports: [SkeletonComponent],\n templateUrl: './card.html',\n styleUrls: ['./card.scss'],\n host: {\n class: 'pe-card',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[class.pe-card--focused]': 'focused()',\n '[class.pe-card--disabled]': 'disabled()',\n '[class.pe-card--horizontal]': 'cardDirection() === \"horizontal\"',\n '[class.pe-card--caption-sm]': 'cardCaptionSize() === \"sm\"',\n '[class.pe-card--footer-equal]': 'footerDist() === \"equal\"',\n '[class.pe-card--media-square]': 'mediaAspectRatio() === \"square\"',\n '[class.pe-card--media-portrait]': 'mediaAspectRatio() === \"portrait\"',\n '[class.pe-card--media-grayscale]': 'mediaGrayscale()',\n '[class.pe-card--loading]': 'loading()',\n '[class.pe-card--media-blurred]': 'mediaBlur()',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardComponent {\n // State inputs\n focused = input<boolean, boolean>(false, { transform: booleanAttribute });\n disabled = input<boolean, boolean>(false, { transform: booleanAttribute });\n\n // Layout inputs\n cardDirection = input<CardDirection>('vertical');\n cardCaptionSize = input<CardCaptionSize>('default');\n footerDist = input<ActionsDistribution>('default');\n\n // Media inputs\n mediaAspectRatio = input<MediaAspectRatio>('default');\n mediaBlur = input<boolean, boolean>(false, { transform: booleanAttribute });\n mediaGrayscale = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n\n // Content inputs\n cardCaption = input<string>('');\n cardTitle = input<string>('');\n cardTitleSingleLine = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n cardSubtitle = input<string>('');\n cardSubtitleSingleLine = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n\n // Loading state\n loading = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n}\n","@if (loading()) {\n <div class=\"pe-card__skeleton\">\n <div class=\"pe-card__media\">\n <pe-skeleton variant=\"rect\" borderRadius=\"lg\" [show]=\"true\" />\n </div>\n <div class=\"pe-card__content\">\n <div class=\"pe-card__content-title pe-card__content-title--single-line\">\n <pe-skeleton variant=\"text\" [lines]=\"2\" borderRadius=\"sm\" />\n </div>\n <div class=\"pe-card__content-subtitle pe-card__content-subtitle--single-line\">\n <pe-skeleton variant=\"text\" [lines]=\"1\" borderRadius=\"sm\" />\n </div>\n </div>\n </div>\n} @else {\n <div class=\"pe-card__media\">\n <ng-content select=\"[udsCardMedia]\" />\n <ng-content select=\"[udsCardMediaOverlay]\" />\n </div>\n <div class=\"pe-card__media-action\">\n <ng-content select=\"[udsCardMediaAction]\" />\n </div>\n\n <div class=\"pe-card__content\">\n @if (cardCaption()) {\n <div class=\"pe-card__content-caption\">\n {{ cardCaption() }}\n </div>\n }\n @if (cardTitle()) {\n <div\n class=\"pe-card__content-title\"\n [class.pe-card__content-title--single-line]=\"cardTitleSingleLine()\"\n >\n {{ cardTitle() }}\n </div>\n }\n @if (cardSubtitle()) {\n <div\n class=\"pe-card__content-subtitle\"\n [class.pe-card__content-subtitle--single-line]=\"cardSubtitleSingleLine()\"\n >\n {{ cardSubtitle() }}\n </div>\n }\n </div>\n\n <div class=\"pe-card__footer\">\n <ng-content select=\"[udsCardFooter]\" />\n </div>\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n effect,\n ElementRef,\n input,\n OnDestroy,\n output,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport Splide, { Options } from '@splidejs/splide';\n\n@Component({\n selector: 'pe-carousel-item',\n standalone: true,\n template: ` <ng-content /> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'splide__slide pe-carousel__item',\n },\n})\nexport class CarouselItemComponent {}\n\n@Component({\n selector: 'pe-carousel',\n standalone: true,\n template: `\n <div class=\"splide pe-carousel\" #carousel role=\"region\" aria-roledescription=\"carousel\">\n <div class=\"splide__track pe-carousel__track\">\n <div class=\"splide__list\">\n <ng-content />\n </div>\n </div>\n </div>\n `,\n styleUrl: './carousel.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CarouselComponent implements AfterViewInit, OnDestroy {\n options = input<Options>({\n autoplay: true,\n });\n autoMount = input<boolean>(true);\n mounted = output<Splide>();\n\n private carousel = viewChild<ElementRef<HTMLElement>>('carousel');\n private items = contentChildren<CarouselItemComponent>(CarouselItemComponent);\n private instance: Splide | null = null;\n\n constructor() {\n effect(() => {\n this.items(); // trigger change detection\n this.updateCarouselOnItemsChange();\n });\n }\n\n ngAfterViewInit() {\n this.init();\n }\n\n ngOnDestroy() {\n this.instance?.destroy();\n }\n\n // Get the Splide instance\n getInstance() {\n return this.instance;\n }\n\n // Methods to control the carousel\n goNext() {\n this.instance?.go('>');\n }\n\n goPrev() {\n this.instance?.go('<');\n }\n\n goTo(index: number) {\n this.instance?.go(index);\n }\n\n // Mount the carousel\n mount() {\n if (!this.instance) {\n throw new Error('Carousel instance not found');\n }\n this.instance.mount();\n this.mounted.emit(this.instance);\n }\n\n private init() {\n const carousel = this.carousel();\n if (!carousel) {\n throw new Error('Carousel element not found');\n }\n // initialize the carousel\n this.instance = new Splide(carousel.nativeElement, {\n arrows: false,\n classes: {\n page: 'splide__pagination__page pe-carousel__pagination-dot',\n },\n ...this.options(),\n });\n // mount the carousel\n if (this.autoMount()) {\n this.mount();\n }\n }\n\n private updateCarouselOnItemsChange() {\n this.instance?.refresh();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport type { FormCheckboxControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nimport {\n createFormFieldIds,\n FormFieldHelperComponent,\n FormFieldLabelComponent,\n getFormFieldDescribedBy,\n} from '../shared/form-field';\nimport type { UiCheckboxSize } from '../shared/ui-types';\n\nexport type CheckboxZoneType = 'none' | 'accessible' | 'visible' | 'checked-visible';\n\n/**\n * Checkbox component. Implements FormCheckboxControl for Signal Forms [formField].\n * Use [(checked)] or [formField]=\"myForm().acceptTerms\". No value property.\n * Uses shared form field label and helper for alignment with input, textarea, radio-group.\n */\n@Component({\n selector: 'pe-checkbox',\n standalone: true,\n imports: [FormFieldLabelComponent, FormFieldHelperComponent],\n template: `\n <div\n class=\"pe-checkbox pe-checkbox--{{ size() }}\"\n [class.pe-checkbox--accessible-zone]=\"zone() === 'accessible'\"\n [class.pe-checkbox--visible-zone]=\"zone() === 'visible'\"\n [class.pe-checkbox--checked-visible-zone]=\"zone() === 'checked-visible'\"\n [class.pe-checkbox--error]=\"hasError()\"\n [class.pe-checkbox--disabled]=\"disabled()\"\n [class.pe-checkbox--required]=\"required()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n >\n <pe-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"ids.controlId\"\n [size]=\"size() === 'sm' ? 'sm' : 'md'\"\n />\n\n <label\n class=\"pe-checkbox__row\"\n [class.pe-checkbox__row--accessible-zone]=\"zone() === 'accessible'\"\n [class.pe-checkbox__row--visible-zone]=\"zone() === 'visible'\"\n [class.pe-checkbox__row--checked-visible-zone]=\"zone() === 'checked-visible'\"\n [class.pe-checkbox__row--sm]=\"size() === 'sm'\"\n [class.pe-checkbox__row--error]=\"hasError()\"\n [attr.for]=\"ids.controlId\"\n >\n <input\n type=\"checkbox\"\n class=\"pe-checkbox__input\"\n [id]=\"ids.controlId\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [indeterminate]=\"indeterminate()\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n (change)=\"onChange($event)\"\n />\n <span class=\"pe-checkbox__pseudo-input\"></span>\n <span class=\"pe-checkbox__label\">\n <ng-content />\n </span>\n </label>\n\n <pe-form-field-helper\n [id]=\"ids.helperId\"\n [helperText]=\"helperText()\"\n [errorText]=\"resolvedErrorText()\"\n [error]=\"hasError()\"\n />\n </div>\n `,\n styleUrls: ['./checkbox.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxComponent implements FormCheckboxControl {\n checked = model<boolean>(false);\n\n disabled = model<boolean>(false);\n indeterminate = model<boolean>(false);\n zone = input<CheckboxZoneType>('none');\n size = input<UiCheckboxSize>('default');\n label = input<string | null>(null);\n helperText = input<string | null>(null);\n required = input<boolean>(false);\n error = input<boolean>(false);\n errorText = input<string | null>(null);\n invalid = input<boolean>(false);\n errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n protected readonly ids = createFormFieldIds('pe-checkbox');\n protected readonly hasError = computed(() => this.error() || this.invalid());\n\n protected readonly resolvedErrorText = computed(\n () =>\n this.errorText() ||\n (this.hasError() && this.errors().length ? (this.errors()[0]?.message ?? null) : null)\n );\n\n protected readonly describedBy = computed(() =>\n getFormFieldDescribedBy(\n this.ids.helperId,\n this.ids.errorId,\n !!this.helperText(),\n this.hasError(),\n !!this.resolvedErrorText()\n )\n );\n\n onChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.checked.set(input.checked);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n model,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { ButtonComponent } from '../button/button';\nimport { IconComponent } from '../icon/icon';\n\nexport type CollapseVariant = 'text' | 'icon';\n\n/**\n * A collapsible content component that supports both text and icon variants.\n * Uses CSS transitions for smooth animations and provides accessibility features.\n *\n * @example\n * ```html\n * <pe-collapse [maxHeight]=\"300\" variant=\"text\">\n * <div>Collapsible content here</div>\n * </pe-collapse>\n * ```\n */\n@Component({\n selector: 'pe-collapse',\n standalone: true,\n imports: [ButtonComponent, IconComponent],\n template: `\n <div [class]=\"computedClasses()\">\n <div class=\"pe-collapse__content\" #content [attr.aria-expanded]=\"!collapsed()\" [attr.aria-hidden]=\"collapsed()\">\n <ng-content />\n </div>\n @if (isCollapsible()) {\n <div class=\"pe-collapse__toggle\">\n <pe-button\n theme=\"ghost-white\"\n [iconOnly]=\"variant() === 'icon'\"\n class=\"pe-collapse__toggle-button\"\n (click)=\"toggle()\"\n (keydown)=\"onToggleKeydown($event)\"\n [attr.aria-label]=\"collapsed() ? expandLabel() : collapseLabel()\">\n @if (variant() === 'text') {\n <span>\n {{ collapsed() ? expandLabel() : collapseLabel() }}\n </span>\n } @else if (variant() === 'icon') {\n <pe-icon size=\"6\" icon=\"chevron_up\" />\n }\n </pe-button>\n </div>\n }\n </div>\n `,\n styleUrls: ['./collapse.scss'],\n host: {\n '[style.--pe-collapse-max-height.px]': 'maxHeight()',\n '[style.--pe-collapse-full-height.px]': 'fullHeight()',\n role: 'region',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CollapseComponent implements AfterViewInit {\n private readonly destroyRef = inject(DestroyRef);\n\n @ViewChild('content') content!: ElementRef<HTMLDivElement>;\n\n /**\n * The visual variant of the collapse toggle.\n * @default 'text'\n */\n variant = input<CollapseVariant>('text');\n\n /**\n * Controls the collapsed state of the component.\n * @default true\n */\n collapsed = model<boolean>(true);\n\n /**\n * Maximum height of the content when collapsed.\n * @default 200\n */\n maxHeight = input.required<number>();\n\n /**\n * Custom label for the expand action.\n * @default 'See more'\n */\n expandLabel = input<string>('See more');\n\n /**\n * Custom label for the collapse action.\n * @default 'See less'\n */\n collapseLabel = input<string>('See less');\n\n /** Current full height of the content */\n fullHeight = signal<number>(0);\n\n /** Whether the content is collapsible based on its height */\n isCollapsible = computed(() => {\n const max = Math.max(0, this.maxHeight());\n return this.fullHeight() > max;\n });\n\n ngAfterViewInit() {\n // Initial height calculation\n this.updateFullHeight();\n\n // Listen for window resize events to recalculate height\n const resizeSubscription = fromEvent(window, 'resize')\n .pipe(debounceTime(100))\n .subscribe(() => this.updateFullHeight());\n\n this.destroyRef.onDestroy(() => resizeSubscription.unsubscribe());\n }\n\n /** Updates the full height of the content */\n private updateFullHeight(): void {\n if (this.content?.nativeElement) {\n this.fullHeight.set(this.content.nativeElement.scrollHeight);\n }\n }\n\n /** Toggles the collapsed state */\n toggle(): void {\n this.collapsed.set(!this.collapsed());\n }\n\n onToggleKeydown(event: KeyboardEvent): void {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.toggle();\n }\n }\n\n computedClasses = computed(() => {\n return {\n 'pe-collapse': true,\n 'pe-collapse--collapsed': this.isCollapsible() && this.collapsed(),\n };\n });\n}\n","import { ChangeDetectionStrategy, Component, contentChild, input } from '@angular/core';\n\nimport { CheckboxComponent } from '../checkbox/checkbox';\nimport { SkeletonComponent } from '../skeleton/skeleton';\n\nexport type ListItemTheme = 'ghost-white' | 'transparent-white' | 'outline-white' | 'outline-purple';\n\n@Component({\n selector: 'pe-list-item',\n standalone: true,\n imports: [SkeletonComponent],\n template: `\n <pe-skeleton [show]=\"loading()\" variant=\"rect\">\n <button\n class=\"pe-list-item pe-list-item--{{ theme() }}\"\n [class.pe-list-item--no-focus-outline]=\"hideFocusOutline()\"\n [class.pe-list-item--selected]=\"selected() || !!checkbox()?.checked\"\n (click)=\"clickHandler()\"\n [disabled]=\"disabled() || loading()\">\n <div class=\"pe-list-item__before-label\">\n <ng-content select=\"[pe-list-item-before-label]\"></ng-content>\n </div>\n <div class=\"pe-list-item__label\">\n <ng-content select=\"[pe-list-item-label]\"></ng-content>\n </div>\n <div class=\"pe-list-item__after-label\">\n <ng-content select=\"[pe-list-item-after-label]\"></ng-content>\n </div>\n </button>\n </pe-skeleton>\n `,\n styleUrls: ['./list-item.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListItemComponent {\n checkbox = contentChild<CheckboxComponent>(CheckboxComponent);\n\n theme = input<ListItemTheme>('ghost-white');\n disabled = input<boolean>(false);\n hideFocusOutline = input<boolean>(false);\n selected = input<boolean>(false);\n\n loading = input<boolean>(false);\n\n clickHandler() {\n if (this.disabled() || this.loading()) {\n return;\n }\n\n if (!this.disabled()) {\n this.checkbox()?.checked.update((value) => !value);\n }\n }\n}\n","import { CdkMenu, CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ButtonComponent } from '../button/button';\nimport { IconComponent, IconName } from '../icon/icon';\nimport { ListItemComponent, ListItemTheme } from '../list-item/list-item';\n\n/**\n * Represents a single item in the dropdown menu.\n */\nexport type DropdownItem = {\n /** Display text for the dropdown item */\n label: string;\n /** Optional value associated with the item */\n value?: string;\n /** Icons to display on the left side of the item */\n leftIcons?: IconName[];\n /** Icons to display on the right side of the item */\n rightIcons?: IconName[];\n /** Whether the item is disabled and cannot be selected */\n disabled?: boolean;\n};\n\n/**\n * A customizable dropdown component that displays a list of selectable items.\n *\n * Features:\n * - Configurable themes (ghost-white, transparent-white)\n * - Icon support for items and trigger button\n * - Customizable trigger appearance\n * - Disabled item support\n * - Two-way binding for selected item\n *\n * @example\n * ```html\n * <!-- Basic usage -->\n * <uds-dropdown\n * [items]=\"dropdownItems\"\n * [theme]=\"'transparent-white'\"\n * (selectedItemChange)=\"onItemSelected($event)\">\n * </uds-dropdown>\n *\n * <!-- More options menu -->\n * <uds-dropdown\n * [items]=\"actionItems\"\n * [onlyMenuTriggerIcon]=\"'more_options'\">\n * </uds-dropdown>\n * ```\n */\n@Component({\n selector: 'pe-dropdown',\n standalone: true,\n imports: [CdkMenuTrigger, CdkMenu, CdkMenuItem, NgTemplateOutlet, ListItemComponent, IconComponent, ButtonComponent],\n templateUrl: './dropdown.html',\n styleUrls: ['./dropdown.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DropdownComponent {\n /**\n * The visual theme for the dropdown.\n * @default 'ghost-white'\n */\n theme = input<ListItemTheme>('ghost-white');\n\n /**\n * Array of items to display in the dropdown menu.\n * @default []\n */\n items = input<DropdownItem[]>([]);\n\n /**\n * Whether the dropdown is disabled.\n * @default false\n */\n disabled = input<boolean>(false);\n\n /**\n * Overrides the icons of the selected item in the trigger button.\n * Can override leftIcons, rightIcons, or both.\n * @default {}\n *\n * @example\n * ```typescript\n * menuTriggerIcons = {\n * chevron_down\n * }\n * ```\n */\n menuTriggerIcons = input<Pick<DropdownItem, 'leftIcons' | 'rightIcons'>>({\n rightIcons: ['chevron_down'],\n });\n\n /**\n * Shows only a single icon in the trigger button, hiding the selected item's label and icons.\n * Commonly used with 'more_options' for action menus.\n * @default undefined\n *\n * @example\n * ```typescript\n * triggerIconOnly = 'more_options'\n * ```\n */\n triggerIconOnly = input<IconName>();\n\n /**\n * Accessible label for the icon-only trigger button.\n * @default 'Open menu'\n */\n iconOnlyLabel = input<string>('Open menu');\n\n /**\n * The index of the currently selected item.\n * Supports two-way binding with [(selectedIndex)].\n * @default 0\n */\n selectedIndex = model<number>(0);\n\n /**\n * The currently selected item with any trigger icon overrides applied.\n */\n selectedItem = computed(() => {\n const items = this.items();\n const index = this.selectedIndex();\n const fallback: DropdownItem = {\n label: '',\n value: undefined,\n leftIcons: [],\n rightIcons: [],\n disabled: false,\n };\n const item = items[index] ?? items[0] ?? fallback;\n\n return {\n ...item,\n ...this.menuTriggerIcons(),\n };\n });\n\n /**\n * Right icons for the trigger: when default is chevron_down, shows chevron_down when closed\n * and chevron_up when open. Otherwise uses selectedItem().rightIcons as-is.\n */\n triggerRightIcons = computed(() => {\n const right = this.selectedItem().rightIcons ?? [];\n const open = this.isOpen();\n if (right.length === 1 && right[0] === 'chevron_down') {\n return open ? (['chevron_up'] as IconName[]) : (['chevron_down'] as IconName[]);\n }\n return right;\n });\n\n /**\n * Tracks whether the menu is currently open for ARIA.\n */\n isOpen = signal(false);\n\n /**\n * Stable id used to link the trigger to the menu container.\n */\n readonly menuId = `pe-dropdown-menu-${Math.random().toString(36).slice(2, 11)}`;\n\n /**\n * Emitted when a new item is selected from the dropdown.\n */\n selectedItemChange = output<DropdownItem>();\n\n /**\n * Handles the selection of a dropdown item.\n * @param index - The index of the selected item\n */\n handleItemTriggered(index: number) {\n this.selectedIndex.set(index);\n this.selectedItemChange.emit(this.items()[index]);\n }\n\n onMenuOpened(): void {\n this.isOpen.set(true);\n }\n\n onMenuClosed(): void {\n this.isOpen.set(false);\n }\n}\n","<div class=\"pe-dropdown\">\n <!-- Template for rendering icon arrays -->\n <ng-template #renderIcons let-icons>\n @for (icon of icons; track icon) {\n <pe-icon size=\"5\" [icon]=\"icon\" />\n }\n </ng-template>\n\n @if (triggerIconOnly(); as iconName) {\n <pe-button\n [theme]=\"theme()\"\n [iconOnly]=\"true\"\n [disabled]=\"disabled()\"\n [cdkMenuTriggerFor]=\"menu\"\n class=\"pe-dropdown__trigger\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"menuId\"\n [attr.aria-label]=\"iconOnlyLabel()\"\n (cdkMenuOpened)=\"onMenuOpened()\"\n (cdkMenuClosed)=\"onMenuClosed()\"\n >\n <pe-icon [icon]=\"iconName\" />\n </pe-button>\n } @else {\n <pe-list-item\n [theme]=\"theme()\"\n [disabled]=\"disabled()\"\n [cdkMenuTriggerFor]=\"menu\"\n class=\"pe-dropdown__trigger\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"menuId\"\n (cdkMenuOpened)=\"onMenuOpened()\"\n (cdkMenuClosed)=\"onMenuClosed()\"\n >\n <ng-container pe-list-item-before-label>\n @if (selectedItem().leftIcons) {\n <ng-container\n *ngTemplateOutlet=\"renderIcons; context: { $implicit: selectedItem().leftIcons }\"\n />\n }\n </ng-container>\n <ng-container pe-list-item-label>\n {{ selectedItem().label }}\n </ng-container>\n <ng-container pe-list-item-after-label>\n <ng-container\n *ngTemplateOutlet=\"renderIcons; context: { $implicit: triggerRightIcons() }\"\n />\n </ng-container>\n </pe-list-item>\n }\n\n <ng-template #menu>\n <div cdkMenu class=\"pe-dropdown__content pe-scrollable\" [id]=\"menuId\">\n @for (item of items(); track $index) {\n <pe-list-item\n cdkMenuItem\n (cdkMenuItemTriggered)=\"handleItemTriggered($index)\"\n [disabled]=\"!!item.disabled\"\n role=\"menuitemradio\"\n [attr.aria-checked]=\"selectedIndex() === $index ? 'true' : 'false'\"\n >\n <ng-container pe-list-item-before-label>\n <ng-container *ngTemplateOutlet=\"renderIcons; context: { $implicit: item.leftIcons }\" />\n </ng-container>\n <ng-container pe-list-item-label>{{ item.label }}</ng-container>\n <ng-container pe-list-item-after-label>\n <ng-container\n *ngTemplateOutlet=\"renderIcons; context: { $implicit: item.rightIcons }\"\n />\n @if (selectedIndex() === $index) {\n <pe-icon size=\"5\" icon=\"check\" />\n }\n </ng-container>\n </pe-list-item>\n }\n </div>\n </ng-template>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nimport {\n createFormFieldIds,\n FormFieldHelperComponent,\n FormFieldLabelComponent,\n getFormFieldDescribedBy,\n} from '../shared/form-field';\nimport type { UiSize } from '../shared/ui-types';\n\n/** Border and hover style: border-only (hover = border only), subtle-tint (hover = border + 5% fill). */\nexport type FileInputAppearance = 'border-only' | 'subtle-tint';\n\n/**\n * File input component with label, helper/error text, and optional slots.\n * Implements FormValueControl<FileList | null> for use with Signal Forms [formField].\n *\n * Uses hidden native file input + visible trigger + selected file label.\n * Content projection: [pe-file-input-left-elements], [pe-file-input-right-elements].\n */\n@Component({\n selector: 'pe-file-input',\n standalone: true,\n imports: [FormFieldLabelComponent, FormFieldHelperComponent],\n templateUrl: './file-input.html',\n styleUrls: ['./file-input.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FileInputComponent implements FormValueControl<FileList | null> {\n readonly size = input<UiSize>('md');\n readonly appearance = input<FileInputAppearance>('border-only');\n readonly accept = input<string>('');\n readonly multiple = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly label = input<string | null>(null);\n readonly helperText = input<string | null>(null);\n readonly errorText = input<string | null>(null);\n /** Placeholder when no file is selected (e.g. \"Choose file\" or \"No file chosen\"). */\n readonly placeholderText = input<string>('No file chosen');\n readonly controlId = input<string | undefined>();\n\n readonly invalid = input<boolean>(false);\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n readonly touched = model<boolean>(false);\n readonly error = input<boolean>(false);\n\n readonly value = model<FileList | null>(null);\n\n protected readonly fileInputRef = viewChild<ElementRef<HTMLInputElement>>('fileInput');\n\n protected readonly ids = createFormFieldIds('pe-file-input');\n protected readonly effectiveControlId = computed(() => this.controlId() ?? this.ids.controlId);\n protected readonly effectiveHelperId = computed(() =>\n this.controlId() ? `${this.controlId()}-helper` : this.ids.helperId\n );\n protected readonly effectiveErrorId = computed(() =>\n this.controlId() ? `${this.controlId()}-error` : this.ids.errorId\n );\n protected readonly isFocused = signal(false);\n protected readonly hasError = computed(() => this.error() || this.invalid());\n\n protected readonly describedBy = computed(() =>\n getFormFieldDescribedBy(\n this.effectiveHelperId(),\n this.effectiveErrorId(),\n !!this.helperText(),\n this.hasError(),\n !!this.errorText() || this.errors().length > 0\n )\n );\n\n /** Display text for selected file(s). */\n protected readonly selectedLabel = computed(() => {\n const files = this.value();\n if (!files?.length) return this.placeholderText();\n if (files.length === 1) return files[0].name;\n return `${files.length} files selected`;\n });\n\n readonly inputBlur = output<FocusEvent>();\n readonly inputFocus = output<FocusEvent>();\n\n constructor() {\n effect(() => {\n if (this.value() === null) {\n const el = this.fileInputRef()?.nativeElement;\n if (el) el.value = '';\n }\n });\n }\n\n onFileChange(event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n const fileList = inputEl.files;\n const next = fileList && fileList.length > 0 ? fileList : null;\n this.value.set(next);\n }\n\n onBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.touched.set(true);\n this.inputBlur.emit(event);\n }\n\n onFocus(event: FocusEvent): void {\n this.isFocused.set(true);\n this.inputFocus.emit(event);\n }\n\n triggerClick(): void {\n if (this.disabled()) return;\n this.fileInputRef()?.nativeElement?.click();\n }\n\n focus(): void {\n const el = document.getElementById(this.effectiveControlId());\n if (el instanceof HTMLInputElement) el.focus();\n }\n}\n","<div\n class=\"pe-file-input pe-file-input--{{ size() }} pe-file-input--appearance-{{ appearance() }}\"\n [class.pe-file-input--error]=\"hasError()\"\n [class.pe-file-input--disabled]=\"disabled()\"\n [class.pe-file-input--required]=\"required()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n>\n <pe-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"effectiveControlId()\"\n [size]=\"size()\"\n />\n\n <div class=\"pe-file-input__group\" [class.pe-file-input__group--focused]=\"isFocused()\">\n <div class=\"pe-file-input__left-elements\">\n <ng-content select=\"[pe-file-input-left-elements]\" />\n </div>\n\n <input\n #fileInput\n [id]=\"effectiveControlId()\"\n type=\"file\"\n class=\"pe-file-input__native\"\n [accept]=\"accept()\"\n [multiple]=\"multiple()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n (change)=\"onFileChange($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n />\n\n <button\n type=\"button\"\n class=\"pe-file-input__trigger\"\n [disabled]=\"disabled()\"\n (click)=\"triggerClick()\"\n >\n Choose file\n </button>\n <span class=\"pe-file-input__label\">{{ selectedLabel() }}</span>\n\n <div class=\"pe-file-input__right-elements\">\n <ng-content select=\"[pe-file-input-right-elements]\" />\n </div>\n </div>\n\n <pe-form-field-helper\n [id]=\"effectiveHelperId()\"\n [helperText]=\"helperText()\"\n [errorText]=\"errorText() || (hasError() && errors().length ? errors()[0].message : '') || null\"\n [error]=\"hasError()\"\n />\n</div>\n","import { Component, input } from '@angular/core';\nimport { ButtonComponent } from '../button/button';\nimport { IconComponent, IconName } from '../icon/icon';\n\n@Component({\n selector: 'pe-footer',\n templateUrl: 'footer.html',\n styleUrls: ['./footer.scss'],\n imports: [ButtonComponent, IconComponent],\n standalone: true,\n})\nexport class FooterComponent {\n copyrightText = input('');\n socialLinks = input<{ url: string; icon: IconName }[]>([]);\n links = input<{ url: string; text: string }[]>([]);\n}\n","<div class=\"pe-footer\">\n <p class=\"pe-footer__copyright\">\n {{ copyrightText() }}\n </p>\n @if (socialLinks()) {\n <ul class=\"pe-footer__social-links\">\n @for (link of socialLinks(); track link.url) {\n <li>\n <pe-button [theme]=\"'ghost-white'\" [iconOnly]=\"true\" [disabled]=\"false\">\n <pe-icon [icon]=\"link.icon\" />\n </pe-button>\n </li>\n }\n </ul>\n }\n @for (link of links(); track link.url) {\n <a [href]=\"link.url\" class=\"pe-link pe-body-m--medium\">{{ link.text }}</a>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\nimport { ButtonComponent } from '../button/button';\nimport { IconComponent } from '../icon/icon';\n\nexport type PillSize = 'md' | 'lg';\n\nexport type PillVariant = 'interactive' | 'interactive-rounded' | 'read-only' | 'dismissible' | 'selectable';\n\nexport type PillTheme =\n | 'fill-white'\n | 'fill-black'\n | 'fill-purple'\n | 'fill-red'\n | 'fill-green'\n | 'transparent-white'\n | 'transparent-purple'\n | 'transparent-red'\n | 'transparent-green'\n | 'stroke-white'\n | 'outline-white'\n | 'outline-purple'\n | 'outline-red'\n | 'outline-green';\n\n@Component({\n selector: 'pe-pill',\n standalone: true,\n imports: [CommonModule, ButtonComponent, IconComponent],\n templateUrl: './pill.html',\n styleUrls: ['./pill.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PillComponent {\n variant = input<PillVariant>('interactive');\n theme = input<PillTheme>('transparent-white');\n size = input<PillSize>('md');\n disabled = input<boolean>(false);\n\n dismiss = output<void>();\n\n dismissibleButtonTheme = computed(() => {\n const t = this.theme();\n if (t === 'transparent-purple' || t === 'outline-purple') return 'ghost-purple';\n if (t === 'outline-red') return 'ghost-red';\n if (t === 'outline-green') return 'ghost-green';\n return 'ghost-white';\n });\n\n modifierClass = computed(() => {\n const classes = ['pe-pill', `pe-pill--${this.variant()}`, `pe-pill--${this.theme()}`, `pe-pill--${this.size()}`];\n\n if (this.disabled()) {\n classes.push('pe-pill--disabled');\n }\n\n return classes;\n });\n}\n","@if (variant() === 'selectable') {\n <label [class]=\"modifierClass()\" [class.pe-pill--disabled]=\"disabled()\">\n <input type=\"checkbox\" class=\"pe-pill__checkbox\" />\n <ng-container *ngTemplateOutlet=\"content\" />\n </label>\n} @else if (['dismissible', 'read-only'].includes(variant())) {\n <div [class]=\"modifierClass()\" [class.pe-pill--disabled]=\"disabled()\">\n <ng-container *ngTemplateOutlet=\"content\" />\n @if (variant() === 'dismissible') {\n <pe-button\n [theme]=\"dismissibleButtonTheme()\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [disabled]=\"disabled()\"\n (click)=\"dismiss.emit()\"\n >\n <pe-icon icon=\"close\" />\n </pe-button>\n }\n </div>\n} @else if (['interactive', 'interactive-rounded'].includes(variant())) {\n <button [class]=\"modifierClass()\" [disabled]=\"disabled()\">\n <ng-container *ngTemplateOutlet=\"content\" />\n </button>\n}\n\n<ng-template #content>\n <ng-content />\n</ng-template>\n","import { Directive } from '@angular/core';\n\n/** Place on the element projected into [pe-hero-badges] so the hero can detect custom badges content. */\n@Directive({\n selector: '[pe-hero-badges]',\n standalone: true,\n})\nexport class PeHeroBadgesSlotDirective {}\n\n/** Place on the element projected into [pe-hero-title] so the hero can detect custom title content. */\n@Directive({\n selector: '[pe-hero-title]',\n standalone: true,\n})\nexport class PeHeroTitleSlotDirective {}\n\n/** Place on the element projected into [pe-hero-subtitle] so the hero can detect custom subtitle content. */\n@Directive({\n selector: '[pe-hero-subtitle]',\n standalone: true,\n})\nexport class PeHeroSubtitleSlotDirective {}\n\n/** Place on the element projected into [pe-hero-actions] so the hero can detect custom actions content. */\n@Directive({\n selector: '[pe-hero-actions]',\n standalone: true,\n})\nexport class PeHeroActionsSlotDirective {}\n\n/** Place on the element projected into [pe-hero-content] for optional extra content (e.g. between subtitle and actions). */\n@Directive({\n selector: '[pe-hero-content]',\n standalone: true,\n})\nexport class PeHeroContentSlotDirective {}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\nimport type { UiSize, UiTheme } from '../shared/ui-types';\nimport { ButtonComponent } from '../button/button';\nimport { IconComponent } from '../icon/icon';\nimport { PillComponent } from '../pill/pill';\n\nimport {\n PeHeroActionsSlotDirective,\n PeHeroBadgesSlotDirective,\n PeHeroContentSlotDirective,\n PeHeroSubtitleSlotDirective,\n PeHeroTitleSlotDirective,\n} from './hero-slot.directive';\n\nexport interface HeroAction {\n label: string;\n href?: string;\n routerLink?: string | string[];\n icon?: string;\n theme?: UiTheme;\n size?: UiSize;\n}\n\nexport type HeroAlignment = 'left' | 'center' | 'right';\nexport type HeroSize = 'sm' | 'md' | 'lg';\n\n/**\n * Hero component for displaying prominent hero sections with title, description,\n * call-to-action buttons, optional badges, and background image support.\n * Fully responsive across mobile, tablet, and desktop.\n *\n * When slots are not projected, inputs are used (title, subtitle, badges, primaryAction, secondaryAction).\n * Content projection slots: pe-hero-badges, pe-hero-title, pe-hero-subtitle, pe-hero-actions, pe-hero-content.\n *\n * @example\n * ```html\n * <pe-hero\n * title=\"Welcome\"\n * subtitle=\"Build amazing experiences\"\n * [primaryAction]=\"{ label: 'Get Started', href: '/signup' }\"\n * [badges]=\"['New', 'Featured']\"\n * />\n * ```\n */\n@Component({\n selector: 'pe-hero',\n standalone: true,\n imports: [ButtonComponent, IconComponent, PillComponent, RouterLink],\n templateUrl: './hero.html',\n styleUrls: ['./hero.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class HeroComponent {\n /** Main headline text */\n title = input.required<string>();\n\n /** Supporting description text */\n subtitle = input<string | undefined>(undefined);\n\n /** Primary call-to-action button */\n primaryAction = input<HeroAction | undefined>(undefined);\n\n /** Secondary call-to-action button */\n secondaryAction = input<HeroAction | undefined>(undefined);\n\n /** Badge/pill labels to display above the title */\n badges = input<string[]>([]);\n\n /** Background image URL */\n backgroundImage = input<string | undefined>(undefined);\n\n /**\n * CSS gradient or color for the overlay on top of the background image.\n * E.g. \"linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.7) 100%)\" or \"rgba(0,0,0,0.5)\".\n * When unset, a default dark overlay is used when a background image is present.\n */\n backgroundOverlayGradient = input<string | undefined>(undefined);\n\n /**\n * CSS filter applied to the background image (e.g. \"brightness(0.8)\", \"blur(2px)\", \"grayscale(0.3)\").\n * Combine multiple: \"brightness(0.7) contrast(1.1)\".\n */\n backgroundFilter = input<string | undefined>(undefined);\n\n /** Text and content alignment */\n alignment = input<HeroAlignment>('center');\n\n /** Hero section size variant */\n size = input<HeroSize>('md');\n\n /** Whether hero takes full viewport height */\n fullHeight = input<boolean>(false);\n\n readonly badgesSlot = contentChild(PeHeroBadgesSlotDirective);\n readonly titleSlot = contentChild(PeHeroTitleSlotDirective);\n readonly subtitleSlot = contentChild(PeHeroSubtitleSlotDirective);\n readonly actionsSlot = contentChild(PeHeroActionsSlotDirective);\n readonly contentSlot = contentChild(PeHeroContentSlotDirective);\n\n readonly hasBadgesSlot = computed(() => !!this.badgesSlot());\n readonly hasTitleSlot = computed(() => !!this.titleSlot());\n readonly hasSubtitleSlot = computed(() => !!this.subtitleSlot());\n readonly hasActionsSlot = computed(() => !!this.actionsSlot());\n readonly hasContentSlot = computed(() => !!this.contentSlot());\n}\n","<section\n class=\"pe-hero pe-hero-alignment-{{ alignment() }} pe-hero-size-{{ size() }}\"\n role=\"banner\"\n [attr.aria-label]=\"title()\"\n [class.pe-hero--full-height]=\"fullHeight()\"\n [class.pe-hero--has-background]=\"!!backgroundImage()\"\n>\n @if (backgroundImage()) {\n <div\n class=\"pe-hero__background\"\n [style.background-image]=\"'url(' + backgroundImage() + ')'\"\n [style.filter]=\"backgroundFilter() || null\"\n aria-hidden=\"true\"\n ></div>\n <div\n class=\"pe-hero__overlay\"\n [style.background]=\"backgroundOverlayGradient() || 'rgba(0, 0, 0, 0.4)'\"\n aria-hidden=\"true\"\n ></div>\n }\n\n <div class=\"pe-hero__content\">\n @if (hasBadgesSlot()) {\n <div class=\"pe-hero__badges\">\n <ng-content select=\"[pe-hero-badges]\" />\n </div>\n } @else if (badges().length) {\n <div class=\"pe-hero__badges\">\n @for (badge of badges(); track badge) {\n <pe-pill variant=\"read-only\" theme=\"transparent-white\" size=\"md\">\n {{ badge }}\n </pe-pill>\n }\n </div>\n }\n\n @if (hasTitleSlot()) {\n <div class=\"pe-hero__title\">\n <ng-content select=\"[pe-hero-title]\" />\n </div>\n } @else {\n <h1 class=\"pe-hero__title\">{{ title() }}</h1>\n }\n\n @if (hasSubtitleSlot()) {\n <div class=\"pe-hero__subtitle\">\n <ng-content select=\"[pe-hero-subtitle]\" />\n </div>\n } @else if (subtitle()) {\n <p class=\"pe-hero__subtitle\">{{ subtitle() }}</p>\n }\n\n @if (hasContentSlot()) {\n <div class=\"pe-hero__extra\">\n <ng-content select=\"[pe-hero-content]\" />\n </div>\n }\n\n @if (hasActionsSlot()) {\n <div class=\"pe-hero__actions\">\n <ng-content select=\"[pe-hero-actions]\" />\n </div>\n } @else if (primaryAction() || secondaryAction()) {\n <div class=\"pe-hero__actions\">\n @if (primaryAction()) {\n @if (primaryAction()!.href) {\n <a [href]=\"primaryAction()!.href\" class=\"pe-hero__action-link\">\n <pe-button\n [theme]=\"primaryAction()!.theme ?? 'fill-purple'\"\n [size]=\"primaryAction()!.size ?? 'md'\"\n >\n @if (primaryAction()!.icon) {\n <pe-icon [icon]=\"primaryAction()!.icon!\" size=\"6\" />\n }\n {{ primaryAction()!.label }}\n </pe-button>\n </a>\n } @else if (primaryAction()!.routerLink) {\n <a [routerLink]=\"primaryAction()!.routerLink\" class=\"pe-hero__action-link\">\n <pe-button\n [theme]=\"primaryAction()!.theme ?? 'fill-purple'\"\n [size]=\"primaryAction()!.size ?? 'md'\"\n >\n @if (primaryAction()!.icon) {\n <pe-icon [icon]=\"primaryAction()!.icon!\" size=\"6\" />\n }\n {{ primaryAction()!.label }}\n </pe-button>\n </a>\n } @else {\n <pe-button\n [theme]=\"primaryAction()!.theme ?? 'fill-purple'\"\n [size]=\"primaryAction()!.size ?? 'md'\"\n >\n @if (primaryAction()!.icon) {\n <pe-icon [icon]=\"primaryAction()!.icon!\" size=\"6\" />\n }\n {{ primaryAction()!.label }}\n </pe-button>\n }\n }\n @if (secondaryAction()) {\n @if (secondaryAction()!.href) {\n <a [href]=\"secondaryAction()!.href\" class=\"pe-hero__action-link\">\n <pe-button theme=\"ghost-white\" [size]=\"secondaryAction()!.size ?? 'md'\">\n @if (secondaryAction()!.icon) {\n <pe-icon [icon]=\"secondaryAction()!.icon!\" size=\"6\" />\n }\n {{ secondaryAction()!.label }}\n </pe-button>\n </a>\n } @else if (secondaryAction()!.routerLink) {\n <a [routerLink]=\"secondaryAction()!.routerLink\" class=\"pe-hero__action-link\">\n <pe-button\n [theme]=\"secondaryAction()!.theme ?? 'ghost-white'\"\n [size]=\"secondaryAction()!.size ?? 'md'\"\n >\n @if (secondaryAction()!.icon) {\n <pe-icon [icon]=\"secondaryAction()!.icon!\" size=\"6\" />\n }\n {{ secondaryAction()!.label }}\n </pe-button>\n </a>\n } @else {\n <pe-button\n [theme]=\"secondaryAction()!.theme ?? 'ghost-white'\"\n [size]=\"secondaryAction()!.size ?? 'md'\"\n >\n @if (secondaryAction()!.icon) {\n <pe-icon [icon]=\"secondaryAction()!.icon!\" size=\"6\" />\n }\n {{ secondaryAction()!.label }}\n </pe-button>\n }\n }\n </div>\n }\n </div>\n</section>\n","import { Directive, input, signal } from '@angular/core';\n/**\n * Directive to handle image loading errors and display placeholders\n */\n@Directive({\n selector: '[peCatchImageNotFound]',\n host: {\n '(load)': 'handleLoad()',\n '(error)': 'handleError()',\n '[class.pe-image--not-found]': 'imageNotFound()',\n '[style.visibility]': 'visibility()',\n },\n})\nexport class ImageNotFoundDirective {\n // Controls whether to show a placeholder when image fails to load\n showPlaceholder = input<boolean>(true);\n\n // Signal to track if image failed to load\n imageNotFound = signal<boolean>(false);\n // Signal to control alt and icon visibility of broken images.\n visibility = signal<string>('hidden');\n\n /**\n * Handles image loading errors\n * Hides the image and optionally shows placeholder\n */\n handleError() {\n this.visibility.set('hidden');\n if (this.showPlaceholder()) {\n this.imageNotFound.set(true);\n }\n }\n\n /**\n * Handles successful image load\n * Shows the image and removes placeholder\n */\n handleLoad() {\n this.imageNotFound.set(false);\n this.visibility.set('visible');\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model, output, signal } from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nimport {\n createFormFieldIds,\n FormFieldHelperComponent,\n FormFieldLabelComponent,\n getFormFieldDescribedBy,\n} from '../shared/form-field';\nimport type { UiSize } from '../shared/ui-types';\n\nexport type InputType = 'text' | 'password' | 'email' | 'number' | 'tel' | 'url';\n\n/** Border and hover style: border-only (hover = border only), subtle-tint (hover = border + 5% fill). */\nexport type InputAppearance = 'border-only' | 'subtle-tint';\n\n/**\n * A reusable input component that follows UDS design system guidelines.\n * Implements FormValueControl for use with Signal Forms [formField] directive.\n *\n * Use [(value)] for two-way binding, or bind with [formField]=\"myForm().email\" for Signal Forms.\n *\n * Content projection: [pe-input-left-elements], [pe-input-right-elements].\n */\n@Component({\n selector: 'pe-input',\n standalone: true,\n imports: [FormFieldLabelComponent, FormFieldHelperComponent],\n templateUrl: './input.html',\n styleUrls: ['./input.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputComponent implements FormValueControl<string> {\n readonly type = input<InputType>('text');\n readonly size = input<UiSize>('md');\n /** Border/hover style: border-only (hover = border only), subtle-tint (hover = border + 5% fill). */\n readonly appearance = input<InputAppearance>('border-only');\n readonly error = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly readOnly = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly placeholder = input<string>('');\n readonly label = input<string | null>(null);\n readonly helperText = input<string | null>(null);\n readonly errorText = input<string | null>(null);\n readonly maxLength = input<number | undefined>();\n readonly minLength = input<number | undefined>();\n readonly pattern = input<readonly RegExp[]>([]);\n readonly autocomplete = input<string>('off');\n /** When provided (e.g. by a parent form field), the input element uses this id instead of the internal one. */\n readonly controlId = input<string | undefined>();\n\n /** FormUiControl optional: bound by [formField] when invalid */\n readonly invalid = input<boolean>(false);\n /** FormUiControl optional: bound by [formField] for validation errors */\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n /** FormUiControl optional: control sets on blur */\n readonly touched = model<boolean>(false);\n\n readonly value = model<string>('');\n\n protected readonly ids = createFormFieldIds('pe-input');\n protected readonly effectiveControlId = computed(() => this.controlId() ?? this.ids.controlId);\n protected readonly effectiveHelperId = computed(() => (this.controlId() ? `${this.controlId()}-helper` : this.ids.helperId));\n protected readonly effectiveErrorId = computed(() => (this.controlId() ? `${this.controlId()}-error` : this.ids.errorId));\n protected readonly isFocused = signal(false);\n protected readonly hasError = computed(() => this.error() || this.invalid());\n\n protected readonly describedBy = computed(() =>\n getFormFieldDescribedBy(\n this.effectiveHelperId(),\n this.effectiveErrorId(),\n !!this.helperText(),\n this.hasError(),\n !!this.errorText() || this.errors().length > 0\n )\n );\n\n // Outputs\n readonly inputBlur = output<FocusEvent>();\n readonly inputFocus = output<FocusEvent>();\n\n onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.value.set(value);\n }\n\n onBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.touched.set(true);\n this.inputBlur.emit(event);\n }\n\n onFocus(event: FocusEvent): void {\n this.isFocused.set(true);\n this.inputFocus.emit(event);\n }\n\n /**\n * Programmatically focuses the input element\n */\n focus(): void {\n const inputEl = document.getElementById(this.effectiveControlId()) as HTMLInputElement;\n inputEl?.focus();\n }\n\n select(): void {\n const inputEl = document.getElementById(this.effectiveControlId()) as HTMLInputElement;\n inputEl?.select();\n }\n}\n","<div\n class=\"pe-input pe-input--{{ size() }} pe-input--appearance-{{ appearance() }}\"\n [class.pe-input--error]=\"hasError()\"\n [class.pe-input--disabled]=\"disabled()\"\n [class.pe-input--read-only]=\"readOnly()\"\n [class.pe-input--required]=\"required()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n>\n <pe-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"effectiveControlId()\"\n [size]=\"size()\"\n />\n\n <div class=\"pe-input__group\" [class.pe-input__group--focused]=\"isFocused()\">\n <div class=\"pe-input__left-elements\">\n <ng-content select=\"[pe-input-left-elements]\" />\n </div>\n\n <input\n [id]=\"effectiveControlId()\"\n [type]=\"type()\"\n class=\"pe-input__field\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n [disabled]=\"disabled()\"\n [readonly]=\"readOnly()\"\n [required]=\"required()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.minlength]=\"minLength()\"\n [attr.pattern]=\"pattern()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n />\n\n <div class=\"pe-input__right-elements\">\n <ng-content select=\"[pe-input-right-elements]\" />\n </div>\n </div>\n\n <pe-form-field-helper\n [id]=\"effectiveHelperId()\"\n [helperText]=\"helperText()\"\n [errorText]=\"errorText() || (hasError() && errors().length ? errors()[0].message : '') || null\"\n [error]=\"hasError()\"\n />\n</div>\n","import { CdkTrapFocus } from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostListener,\n input,\n model,\n output,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ButtonComponent } from '../button/button';\nimport { IconComponent } from '../icon/icon';\n\nexport type ModalVariant =\n | 'default'\n | 'success'\n | 'error'\n | 'custom'\n | 'bottom-sheet'\n | 'confirmation';\n\n@Component({\n selector: 'pe-modal',\n standalone: true,\n imports: [CdkTrapFocus, ButtonComponent, IconComponent],\n templateUrl: './modal.html',\n styleUrls: ['./modal.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.aria-hidden]': '!open()',\n },\n})\nexport class ModalComponent {\n /** Whether the modal is open. Supports two-way binding with [(open)]. */\n open = model<boolean>(false);\n\n /** Visual variant: default, success, error, custom, or bottom-sheet (mobile-only layout). */\n variant = input<ModalVariant>('default');\n\n /** Optional title shown in the header. */\n title = input<string | undefined>(undefined);\n\n /** Whether clicking the backdrop closes the modal. */\n closeOnBackdropClick = input<boolean>(true);\n\n /** Whether to show the close button in the header. */\n showCloseButton = input<boolean>(true);\n\n /** Label for the primary confirm action in the confirmation variant. */\n confirmLabel = input<string>('Confirm');\n\n /** Label for the secondary cancel action in the confirmation variant. */\n cancelLabel = input<string>('Cancel');\n\n /** Optional CSS class for the panel (e.g. for custom variant). */\n customClass = input<string | undefined>(undefined);\n\n /** Emitted when the modal is closed (button, backdrop, or escape). */\n closed = output<void>();\n\n /** Emitted when the user confirms in the confirmation variant. */\n confirmed = output<void>();\n\n /** Emitted when the user cancels in the confirmation variant. */\n cancelled = output<void>();\n\n readonly panelClass = computed(() => {\n const variant = this.variant();\n const custom = this.customClass();\n const classes = ['pe-modal__panel', `pe-modal__panel--${variant}`];\n if (custom) {\n classes.push(custom);\n }\n return classes.join(' ');\n });\n\n readonly isConfirmation = computed(() => this.variant() === 'confirmation');\n readonly isSuccess = computed(() => this.variant() === 'success');\n readonly isError = computed(() => this.variant() === 'error');\n\n modalTitle = computed(() => \n (this.isSuccess() || this.isError()) ? '' : this.title()\n );\n\n readonly titleId = `pe-modal-title-${Math.random().toString(36).slice(2, 11)}`;\n readonly bodyId = `pe-modal-body-${Math.random().toString(36).slice(2, 11)}`;\n\n close(): void {\n this.open.set(false);\n this.closed.emit();\n }\n\n onConfirm(): void {\n if (!this.isConfirmation()) {\n return;\n }\n this.confirmed.emit();\n this.close();\n }\n\n onCancel(): void {\n if (!this.isConfirmation()) {\n return;\n }\n this.cancelled.emit();\n this.close();\n }\n\n onBackdropClick(event: MouseEvent): void {\n if (this.closeOnBackdropClick() && event.target === event.currentTarget) {\n this.close();\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n if (this.open()) {\n this.close();\n }\n }\n}\n","@if (open()) {\n <div\n class=\"pe-modal pe-modal--backdrop\"\n role=\"dialog\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"title() ? titleId : null\"\n [attr.aria-describedby]=\"bodyId\"\n (click)=\"onBackdropClick($event)\"\n >\n <div [class]=\"panelClass()\" cdkTrapFocus (click)=\"$event.stopPropagation()\">\n @if (modalTitle() || showCloseButton()) {\n <header class=\"pe-modal__header\">\n @if (modalTitle()) {\n <h2 [id]=\"titleId\" class=\"pe-modal__title\">{{ title() }}</h2>\n }\n @if (showCloseButton()) {\n <pe-button\n type=\"button\"\n theme=\"ghost-white\"\n [iconOnly]=\"true\"\n ariaLabel=\"Close\"\n class=\"pe-modal__close\"\n (buttonClick)=\"close()\"\n >\n <pe-icon icon=\"close\" size=\"6\" />\n </pe-button>\n }\n </header>\n }\n <div class=\"pe-modal__body\" [id]=\"bodyId\">\n @if (isSuccess() || isError()) {\n <div class=\"pe-modal__status\" aria-hidden=\"true\">\n <pe-icon\n class=\"pe-modal__status-icon\"\n [icon]=\"isSuccess() ? 'check_circle' : 'cross_circle'\"\n size=\"16\"\n />\n </div>\n }\n <ng-content />\n </div>\n <div class=\"pe-modal__footer\">\n @if (isConfirmation()) {\n <pe-button theme=\"ghost-white\" (buttonClick)=\"onCancel()\">\n {{ cancelLabel() }}\n </pe-button>\n <pe-button theme=\"fill-purple\" (buttonClick)=\"onConfirm()\">\n {{ confirmLabel() }}\n </pe-button>\n } @else {\n <ng-content select=\"[pe-modal-footer]\" />\n }\n </div>\n </div>\n </div>\n}\n","import { Directive } from '@angular/core';\n\n/** Place on the element projected into [pe-navbar-logo] so the navbar can detect logo content. */\n@Directive({\n selector: '[pe-navbar-logo]',\n standalone: true,\n})\nexport class NavbarLogoSlotDirective {}\n\n/** Place on the element projected into [pe-navbar-search] so the navbar can show the mobile search toggle. */\n@Directive({\n selector: '[pe-navbar-search]',\n standalone: true,\n})\nexport class NavbarSearchSlotDirective {}\n\n/** Place on the element projected into [pe-navbar-avatar] so the navbar can detect avatar content. */\n@Directive({\n selector: '[pe-navbar-avatar]',\n standalone: true,\n})\nexport class NavbarAvatarSlotDirective {}\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n computed,\n input,\n signal,\n ViewEncapsulation,\n output,\n} from '@angular/core';\n\nimport { AvatarComponent } from '../avatar/avatar';\nimport { ButtonComponent } from '../button/button';\nimport { IconComponent } from '../icon/icon';\nimport {\n NavbarAvatarSlotDirective,\n NavbarLogoSlotDirective,\n NavbarSearchSlotDirective,\n} from './navbar-slot.directive';\n\n@Component({\n selector: 'pe-navbar',\n standalone: true,\n imports: [AvatarComponent, ButtonComponent, IconComponent],\n templateUrl: './navbar.html',\n styleUrls: ['./navbar.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class NavbarComponent {\n /** Default logo link href when logo slot is not projected. */\n logoHref = input<string>('/');\n\n /** Default logo image src when logo slot is not projected. */\n logoSrc = input<string | undefined>(undefined);\n\n /** Default logo image alt when logo slot is not projected. */\n logoAlt = input<string>('');\n\n /** Default avatar image src when avatar slot is not projected. */\n avatarSrc = input<string | undefined>(undefined);\n\n /** Default avatar initials when avatar slot is not projected and no image. */\n avatarInitials = input<string | undefined>(undefined);\n\n /** Default avatar image alt when avatar slot is not projected. */\n avatarAlt = input<string>('');\n \n /** For aria-expanded on the toggle button */\n sidebarOpen = input<boolean>(false);\n\n /** When true, show the sidebar toggle button even when a logo slot is projected. */\n showSidebarToggle = input<boolean>(false);\n\n /** Emitted when the user clicks the sidebar toggle. Parent should flip the open state. */\n sidebarToggle = output<void>();\n\n readonly logoSlot = contentChild(NavbarLogoSlotDirective);\n readonly searchSlot = contentChild(NavbarSearchSlotDirective);\n readonly avatarSlot = contentChild(NavbarAvatarSlotDirective);\n\n readonly hasLogoSlot = computed(() => !!this.logoSlot());\n readonly hasSearchSlot = computed(() => !!this.searchSlot());\n readonly hasAvatarSlot = computed(() => !!this.avatarSlot());\n\n readonly showToggle = computed(() => !this.hasLogoSlot() || this.showSidebarToggle());\n\n readonly searchExpanded = signal(false);\n\n toggleSearch(): void {\n this.searchExpanded.update((v) => !v);\n }\n\n toggleSidebar(): void {\n this.sidebarToggle.emit();\n }\n}\n","<nav class=\"pe-navbar\" role=\"navigation\">\n <div class=\"pe-navbar__bar\">\n <div class=\"pe-navbar__logo\">\n @if (showToggle()) {\n <pe-button\n theme=\"ghost-white\"\n [iconOnly]=\"true\"\n size=\"sm\"\n class=\"pe-navbar__sidebar_toggle\"\n ariaLabel=\"Open menu\"\n [attr.aria-expanded]=\"sidebarOpen()\"\n (buttonClick)=\"toggleSidebar()\"\n >\n <pe-icon icon=\"menu\" size=\"6\" />\n </pe-button>\n }\n @if (hasLogoSlot()) {\n <ng-content select=\"[pe-navbar-logo]\" />\n } @else {\n <img [src]=\"logoSrc()\" [alt]=\"logoAlt()\" class=\"pe-navbar__logo-img\" height=\"32\" />\n <a [href]=\"logoHref()\" class=\"pe-navbar__logo-link pe-navbar__logo-text\">Pinake</a>\n }\n </div>\n\n @if (hasSearchSlot()) {\n <pe-button\n theme=\"ghost-white\"\n [iconOnly]=\"true\"\n class=\"pe-navbar__search-toggle\"\n ariaLabel=\"Toggle search\"\n [attr.aria-expanded]=\"searchExpanded()\"\n (buttonClick)=\"toggleSearch()\"\n >\n <pe-icon icon=\"search\" size=\"6\" />\n </pe-button>\n }\n\n <div\n class=\"pe-navbar__search-wrapper\"\n [class.pe-navbar__search-wrapper--expanded]=\"searchExpanded()\"\n >\n <ng-content select=\"[pe-navbar-search]\" />\n </div>\n\n <div class=\"pe-navbar__avatar\">\n @if (hasAvatarSlot()) {\n <ng-content select=\"[pe-navbar-avatar]\" />\n } @else if (avatarSrc() || avatarInitials()) {\n <pe-avatar\n [src]=\"avatarSrc()\"\n [initials]=\"avatarInitials()\"\n [alt]=\"avatarAlt()\"\n size=\"md\"\n />\n }\n </div>\n </div>\n</nav>\n","import { CurrencyPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Extends Angular's CurrencyPipe to use the custom symbol 'ᕫ' for 'UOS' currency code.\n * For all other codes, behaves exactly like CurrencyPipe.\n */\n@Pipe({\n name: 'peCurrency',\n standalone: true,\n})\nexport class CustomCurrencyPipe extends CurrencyPipe implements PipeTransform {\n private static readonly UOS_SYMBOL = 'ᕫ';\n\n override transform(\n value: number | string,\n currencyCode?: string,\n display?: 'code' | 'symbol' | 'symbol-narrow' | string | boolean,\n digitsInfo?: string,\n locale?: string,\n ): string | null;\n override transform(\n value: null | undefined,\n currencyCode?: string,\n display?: 'code' | 'symbol' | 'symbol-narrow' | string | boolean,\n digitsInfo?: string,\n locale?: string,\n ): null;\n override transform(\n value: number | string | null | undefined,\n currencyCode?: string,\n display?: 'code' | 'symbol' | 'symbol-narrow' | string | boolean,\n digitsInfo?: string,\n locale?: string,\n ): string | null {\n const customDisplay = currencyCode === 'UOS' ? CustomCurrencyPipe.UOS_SYMBOL : display;\n return this.separateCurrencyAndPrice(super.transform(value, currencyCode, customDisplay, digitsInfo, locale));\n }\n\n private separateCurrencyAndPrice(input: string | null): string | null {\n // Match non-digits at the start (currency), then the number\n const match = input?.match(/^(\\D+)?(\\d+(\\.\\d+)?)/);\n if (match) {\n const symbol = match[1] ? match[1].trim() : '';\n const price = match[2];\n // Join with a space if symbol exists\n return symbol ? `${symbol} ${price}` : price;\n }\n // Return input if no match\n return input;\n }\n}\n","import { ChangeDetectionStrategy, Component, input, output, ViewEncapsulation } from '@angular/core';\n\nimport type { UiSize, UiTheme } from '../shared/ui-types';\nimport { ButtonComponent } from '../button/button';\n\nimport { CustomCurrencyPipe } from './custom-currency.pipe';\n\nexport type SalePosition = 'left' | 'right';\nexport type Currency = 'UOS' | string;\n\n@Component({\n selector: 'pe-price-button',\n standalone: true,\n imports: [ButtonComponent, CustomCurrencyPipe],\n templateUrl: './price-button.html',\n styleUrl: './price-button.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'pe-price-button',\n '[class.pe-price-button--sale-left]': 'salePosition() === \"left\"',\n },\n})\nexport class PriceButtonComponent {\n // Inputs\n readonly label = input<string>(''); // Button label\n readonly size = input<UiSize>('md'); // Button size\n readonly theme = input<UiTheme>('transparent-white'); // Button theme\n readonly disabled = input<boolean>(false); // Disabled state\n readonly salePosition = input<SalePosition>('right'); // Sale badge position\n readonly price = input<number>(0); // Price (0 = free)\n readonly originalPrice = input<number>(0); // Original price\n readonly discountBasis = input<number>(0); // Discount basis\n readonly currency = input<Currency>('USD'); // Currency\n\n // Outputs\n readonly buttonClick = output<MouseEvent>(); // Click event\n\n // Methods\n protected handleClick(event: MouseEvent): void {\n // Handle click\n if (this.disabled()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n this.buttonClick.emit(event);\n }\n}\n","<pe-button [size]=\"size()\" [theme]=\"theme()\" [disabled]=\"disabled()\" (click)=\"handleClick($event)\">\n @if (label()) {\n {{ label() }}\n } @else if (price() > 0) {\n {{ price() | peCurrency: currency() }}\n } @else {\n Free\n }\n</pe-button>\n@if (price() !== originalPrice() && discountBasis() > 0) {\n <div class=\"pe-price-button__sale\">\n <div\n class=\"pe-price-button__discount\"\n [attr.aria-label]=\"'Discount ' + discountBasis() + '% off original price'\"\n >\n -{{ discountBasis() }}%\n </div>\n <div class=\"pe-price-button__original-price\" aria-hidden=\"true\">\n {{ originalPrice() | peCurrency: currency() }}\n </div>\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { booleanAttribute, Component, computed, input, model, output, signal, ViewEncapsulation } from '@angular/core';\n\n/**\n * Radio button for use inside a group. For Signal Forms use pe-radio-group with [formField].\n * Use [(checked)] when controlling each radio manually, or place inside pe-radio-group for [formField] binding.\n *\n * @example\n * <pe-radio value=\"option1\" name=\"my-group\" [checked]=\"isSelected\">Option 1</pe-radio>\n */\n@Component({\n selector: 'pe-radio',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './radio.html',\n styleUrls: ['./radio.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class RadioComponent {\n /**\n * The value associated with this radio button.\n * This value identifies the radio button within its group.\n */\n value = input.required<string>();\n\n /**\n * The name attribute for the radio button group.\n * All radio buttons in the same group should share the same name.\n */\n name = input.required<string>();\n\n /**\n * Whether the radio button is disabled.\n * @default false\n */\n disabled = input<boolean, boolean>(false, { transform: booleanAttribute });\n\n /**\n * Whether the radio button is currently checked/selected.\n * This is a two-way binding that can be used with [(checked)].\n */\n checked = model<boolean>(false);\n\n /**\n * Unique identifier for the radio button.\n * If not provided, one will be auto-generated.\n */\n id = input<string>();\n\n /**\n * Event emitted when the radio button is clicked.\n * Useful for additional click handling beyond the default radio behavior.\n */\n click = output<MouseEvent>();\n\n /**\n * Emitted when this radio is selected (checked becomes true).\n * Used by pe-radio-group to sync the group value.\n */\n selected = output<string>();\n\n /**\n * Internal signal for the unique ID\n */\n private readonly uniqueId = signal(`pe-radio-${Math.random().toString(36).substr(2, 9)}`);\n\n /**\n * Computed ID that uses provided ID or falls back to generated unique ID\n */\n readonly radioId = computed(() => this.id() || this.uniqueId());\n\n /**\n * Computed ARIA attributes for accessibility\n */\n readonly ariaAttributes = computed(() => ({\n 'aria-checked': this.checked(),\n 'aria-disabled': this.disabled(),\n role: 'radio' as const,\n }));\n\n /**\n * Handles the radio button change event.\n * Updates the checked state.\n *\n * @param event - The change event from the input element\n */\n onRadioChange(event: Event): void {\n if (this.disabled()) {\n return;\n }\n\n const input = event.target as HTMLInputElement;\n\n this.checked.set(input.checked);\n if (input.checked) {\n this.selected.emit(this.value());\n }\n }\n\n /**\n * Handles click events on the radio button.\n * Useful for additional click handling beyond the default radio behavior.\n *\n * @param event - The click event\n */\n onRadioClick(event: MouseEvent): void {\n if (this.disabled()) {\n event.preventDefault();\n return;\n }\n\n this.click.emit(event);\n }\n\n /**\n * Handles keyboard events for accessibility.\n * Supports Space and Enter keys for selection.\n *\n * @param event - The keyboard event\n */\n onKeyDown(event: KeyboardEvent): void {\n if (this.disabled()) {\n return;\n }\n\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.checked.set(true);\n }\n }\n}\n","<label class=\"pe-radio-container\" [for]=\"radioId()\" [class.pe-radio-disabled]=\"disabled()\">\n <input\n type=\"radio\"\n [id]=\"radioId()\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [attr.aria-checked]=\"ariaAttributes()['aria-checked']\"\n [attr.aria-disabled]=\"ariaAttributes()['aria-disabled']\"\n [attr.role]=\"ariaAttributes()['role']\"\n (change)=\"onRadioChange($event)\"\n (click)=\"onRadioClick($event)\"\n (keydown)=\"onKeyDown($event)\"\n class=\"pe-radio-input\"\n />\n <span class=\"pe-radio-label\">\n <ng-content />\n </span>\n</label>\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nimport {\n createFormFieldIds,\n FormFieldHelperComponent,\n FormFieldLabelComponent,\n getFormFieldDescribedBy,\n} from '../shared/form-field';\nimport { RadioComponent } from './radio';\n\nexport interface RadioGroupOption {\n value: string;\n label: string;\n}\n\n/**\n * Radio group that holds the selected option value. Implements FormValueControl for Signal Forms [formField].\n * Use [(value)] or [formField]=\"myForm().choice\". Renders pe-radio per option; value is the selected option's value.\n */\n@Component({\n selector: 'pe-radio-group',\n standalone: true,\n imports: [RadioComponent, FormFieldLabelComponent, FormFieldHelperComponent],\n template: `\n <div\n class=\"pe-radio-group\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n role=\"radiogroup\"\n [attr.aria-label]=\"label()\"\n >\n <pe-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"ids.controlId\"\n size=\"md\"\n />\n <div class=\"pe-radio-group__radios\" [id]=\"ids.controlId\">\n @for (opt of options(); track opt.value) {\n <pe-radio\n [name]=\"name()\"\n [value]=\"opt.value\"\n [checked]=\"value() === opt.value\"\n [disabled]=\"disabled()\"\n (selected)=\"value.set(opt.value)\"\n >\n {{ opt.label }}\n </pe-radio>\n }\n </div>\n <pe-form-field-helper\n [id]=\"ids.helperId\"\n [helperText]=\"helperText()\"\n [errorText]=\"errorText() || (hasError() && errors().length ? (errors()[0].message ?? null) : null)\"\n [error]=\"hasError()\"\n />\n </div>\n `,\n styleUrls: ['./radio-group.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioGroupComponent implements FormValueControl<string | null> {\n readonly name = input.required<string>();\n readonly options = input<RadioGroupOption[]>([]);\n readonly label = input<string | null>(null);\n readonly helperText = input<string | null>(null);\n readonly errorText = input<string | null>(null);\n readonly error = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly invalid = input<boolean>(false);\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n readonly value = model<string | null>(null);\n\n protected readonly ids = createFormFieldIds('pe-radio-group');\n protected readonly hasError = computed(() => this.error() || this.invalid());\n protected readonly describedBy = computed(() =>\n getFormFieldDescribedBy(\n this.ids.helperId,\n this.ids.errorId,\n !!this.helperText(),\n this.hasError(),\n !!this.errorText() || this.errors().length > 0\n )\n );\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\ntype RadialSize = 96 | 64 | 48 | 32 | 24 | 20 | 16;\n\nconst lineWidths = {\n 96: 6,\n 64: 6,\n 48: 5,\n 32: 4,\n 24: 4,\n 20: 3,\n 16: 3,\n};\n\n@Component({\n selector: 'pe-radial',\n standalone: true,\n templateUrl: './radial.html',\n styleUrl: './radial.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadialComponent {\n // size of the radial component in px\n readonly size = input<RadialSize>(96);\n // if true, the radial will rotate indefinitely\n readonly infinite = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n // percentage of the radial that is filled\n readonly percentage = input<number>(0);\n\n // optional accessible label for the radial\n readonly ariaLabel = input<string | null>(null);\n\n readonly lineWidth = computed(() => lineWidths[this.size()]);\n}\n","<div\n class=\"pe-radial\"\n role=\"progressbar\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-valuenow]=\"percentage()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [class.pe-radial--infinite]=\"infinite()\"\n [style.width.px]=\"size()\"\n [style.padding.px]=\"lineWidth()\"\n [style.--pe-radial-percentage]=\"percentage() + '%'\"\n></div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n SecurityContext,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nexport type RichTextTone = 'default' | 'muted' | 'inverse';\nexport type RichTextSize = 'body-m' | 'body-l';\n\n/**\n * Display-only rich text component. Renders sanitized HTML from the API (or from\n * pe-rich-text-editor) with no Quill dependency. HTML is sanitized before rendering.\n *\n * Use [content] for HTML strings (e.g. from API or editor), or project markup via\n * ng-content when content is empty.\n */\n@Component({\n selector: 'pe-rich-text',\n template: `\n @if (content()) {\n <div\n class=\"pe-rich-text\"\n [class.pe-rich-text--body-m]=\"size() === 'body-m'\"\n [innerHTML]=\"sanitizedContent()\"\n ></div>\n } @else {\n <div\n class=\"pe-rich-text\"\n [class.pe-rich-text--body-m]=\"size() === 'body-m'\"\n >\n <ng-content />\n </div>\n }`,\n host: {\n class: 'pe-rich-text-host',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RichTextComponent {\n readonly content = input<string | null>(null);\n readonly size = input<RichTextSize>('body-l');\n\n private readonly domSanitizer = inject(DomSanitizer);\n\n protected readonly sanitizedContent = computed(() => {\n const html = this.content() ?? '';\n return this.domSanitizer.sanitize(SecurityContext.HTML, html) ?? '';\n });\n}\n","import { Injectable, computed, inject, signal } from '@angular/core';\n\nexport type ToastKind = 'info' | 'success' | 'warning' | 'error';\n\nexport const toastIcon = (kind: ToastKind) => {\n switch (kind) {\n case 'success':\n return 'check_circle';\n case 'warning':\n return 'alert';\n case 'error':\n return 'cross_circle';\n case 'info':\n return 'info';\n }\n};\n\nexport interface ToastConfig {\n readonly id: string;\n readonly message: string;\n readonly title?: string;\n readonly kind: ToastKind;\n readonly dismissible: boolean;\n /**\n * Auto-dismiss delay in milliseconds. When null or 0, the toast\n * will stay visible until the user dismisses it explicitly.\n */\n readonly durationMs: number | null;\n readonly showIcon: boolean;\n}\n\nexport type ToastWithRole = {\n readonly id: string;\n readonly title?: string;\n readonly message: string;\n readonly kind: ToastKind;\n readonly dismissible: boolean;\n readonly role: 'status' | 'alert';\n readonly icon: string;\n readonly showIcon: boolean;\n};\n\ntype NewToastConfig = Omit<ToastConfig, 'id'>;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastService {\n private readonly toastsSignal = signal<ToastConfig[]>([]);\n\n readonly toasts = computed<ToastWithRole[]>(() =>\n this.toastsSignal().map((toast) => ({\n id: toast.id,\n title: toast.title,\n message: toast.message,\n kind: toast.kind,\n dismissible: toast.dismissible,\n role: toast.kind === 'error' || toast.kind === 'warning' ? 'alert' : 'status',\n icon: toastIcon(toast.kind),\n showIcon: toast.showIcon,\n })),\n );\n\n show(message: string, config?: Partial<NewToastConfig>): string {\n const id = this.createId();\n const merged: ToastConfig = {\n id,\n message,\n title: config?.title,\n kind: config?.kind ?? 'info',\n dismissible: config?.dismissible ?? true,\n durationMs: config?.durationMs ?? 5000,\n showIcon: config?.showIcon ?? false,\n };\n\n this.toastsSignal.update((current) => [...current, merged]);\n\n if (merged.durationMs && merged.durationMs > 0) {\n window.setTimeout(() => {\n this.dismiss(id);\n }, merged.durationMs);\n }\n\n return id;\n }\n\n info(message: string, config?: Partial<Omit<NewToastConfig, 'kind'>>): string {\n return this.show(message, { ...config, kind: 'info' });\n }\n\n success(message: string, config?: Partial<Omit<NewToastConfig, 'kind'>>): string {\n return this.show(message, { ...config, kind: 'success' });\n }\n\n warning(message: string, config?: Partial<Omit<NewToastConfig, 'kind'>>): string {\n return this.show(message, { ...config, kind: 'warning' });\n }\n\n error(message: string, config?: Partial<Omit<NewToastConfig, 'kind'>>): string {\n return this.show(message, { ...config, kind: 'error' });\n }\n\n dismiss(id: string): void {\n this.toastsSignal.update((current) => current.filter((toast) => toast.id !== id));\n }\n\n clear(): void {\n this.toastsSignal.set([]);\n }\n\n private createId(): string {\n if (typeof crypto !== 'undefined' && 'randomUUID' in crypto) {\n // eslint-disable-next-line no-restricted-globals\n return crypto.randomUUID();\n }\n\n return `pe-toast-${Math.random().toString(36).slice(2, 11)}`;\n }\n}\n\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, inject } from '@angular/core';\n\nimport { ButtonComponent } from '../button/button';\nimport { IconComponent } from '../icon/icon';\n\nimport { ToastService, ToastWithRole } from './toast.service';\n\n@Component({\n selector: 'pe-toast-container',\n standalone: true,\n imports: [ButtonComponent, IconComponent],\n templateUrl: './toast.html',\n styleUrl: './toast.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToastContainerComponent {\n private readonly toastService = inject(ToastService);\n readonly toasts = this.toastService.toasts;\n\n trackById(_: number, toast: ToastWithRole): string {\n return toast.id;\n }\n\n dismiss(id: string): void {\n this.toastService.dismiss(id);\n }\n}\n\n","<div class=\"pe-toast-container\" aria-live=\"polite\" aria-atomic=\"true\">\n @for (toast of toasts(); track trackById($index, toast)) {\n <section class=\"pe-toast pe-toast--{{ toast.kind }}\" [attr.role]=\"toast.role\">\n <div class=\"pe-toast__icon\">\n @if (toast.showIcon) {\n <pe-icon [icon]=\"toast.icon\" size=\"6\" iconWeight=\"bold\" />\n }\n </div>\n\n <div class=\"pe-toast__body\">\n @if (toast.title) {\n <h3 class=\"pe-toast__title\">\n {{ toast.title }}\n </h3>\n }\n <p class=\"pe-toast__message\">\n {{ toast.message }}\n </p>\n </div>\n\n @if (toast.dismissible) {\n <pe-button\n theme=\"ghost-white\"\n size=\"sm\"\n [iconOnly]=\"true\"\n class=\"pe-toast__close\"\n ariaLabel=\"Dismiss notification\"\n (buttonClick)=\"dismiss(toast.id)\"\n >\n <pe-icon icon=\"cross\" size=\"5\" />\n </pe-button>\n }\n </section>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n HostListener,\n ViewEncapsulation,\n input,\n signal,\n} from '@angular/core';\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\n@Component({\n selector: 'pe-tooltip',\n standalone: true,\n templateUrl: './tooltip.html',\n styleUrl: './tooltip.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipComponent {\n text = input<string>('');\n position = input<TooltipPosition>('top');\n disabled = input<boolean>(false);\n showDelay = input<number>(150);\n hideDelay = input<number>(100);\n\n private readonly visible = signal<boolean>(false);\n private showTimeoutId: number | null = null;\n private hideTimeoutId: number | null = null;\n\n readonly tooltipId = `pe-tooltip-${Math.random().toString(36).slice(2, 11)}`;\n\n @HostBinding('attr.aria-describedby')\n get ariaDescribedBy(): string | null {\n return this.visible() && !!this.text() ? this.tooltipId : null;\n }\n\n @HostListener('mouseenter')\n @HostListener('focusin')\n handlePointerEnter(): void {\n if (this.disabled() || !this.text()) return;\n this.scheduleShow();\n }\n\n @HostListener('mouseleave')\n @HostListener('focusout')\n handlePointerLeave(): void {\n this.scheduleHide();\n }\n\n readonly isVisible = this.visible.asReadonly();\n\n private scheduleShow(): void {\n this.cancelHide();\n if (this.visible()) return;\n\n const delay = this.showDelay();\n if (delay <= 0) {\n this.visible.set(true);\n return;\n }\n\n this.showTimeoutId = window.setTimeout(() => {\n this.visible.set(true);\n }, delay);\n }\n\n private scheduleHide(): void {\n this.cancelShow();\n if (!this.visible()) return;\n\n const delay = this.hideDelay();\n if (delay <= 0) {\n this.visible.set(false);\n return;\n }\n\n this.hideTimeoutId = window.setTimeout(() => {\n this.visible.set(false);\n }, delay);\n }\n\n private cancelShow(): void {\n if (this.showTimeoutId !== null) {\n window.clearTimeout(this.showTimeoutId);\n this.showTimeoutId = null;\n }\n }\n\n private cancelHide(): void {\n if (this.hideTimeoutId !== null) {\n window.clearTimeout(this.hideTimeoutId);\n this.hideTimeoutId = null;\n }\n }\n}\n\n","<span class=\"pe-tooltip-wrapper\">\n <ng-content />\n\n @if (isVisible() && text()) {\n <span\n class=\"pe-tooltip pe-tooltip--{{ position() }}\"\n role=\"tooltip\"\n [attr.id]=\"tooltipId\"\n >\n {{ text() }}\n </span>\n }\n</span>\n\n","import { ChangeDetectionStrategy, Component, computed, input, model, output, signal } from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nimport { IconComponent } from '../icon/icon';\nimport { InputComponent } from '../input/input';\nimport { ListItemComponent } from '../list-item/list-item';\nimport {\n createFormFieldIds,\n FormFieldHelperComponent,\n FormFieldLabelComponent,\n getFormFieldDescribedBy,\n} from '../shared/form-field';\nimport type { UiSize } from '../shared/ui-types';\n\nexport interface SearchSelectOption {\n label: string;\n value: string;\n}\n\n/**\n * Combobox: search input with filterable dropdown. User types to filter options and selects a result.\n * Implements FormValueControl for use with Signal Forms [formField]. Use [(value)] for two-way binding.\n */\n@Component({\n selector: 'pe-search-select',\n standalone: true,\n imports: [\n InputComponent,\n IconComponent,\n ListItemComponent,\n FormFieldLabelComponent,\n FormFieldHelperComponent,\n ],\n templateUrl: './search-select.html',\n styleUrls: ['./search-select.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SearchSelectComponent implements FormValueControl<string | null> {\n readonly size = input<UiSize>('md');\n readonly label = input<string | null>(null);\n readonly helperText = input<string | null>(null);\n readonly errorText = input<string | null>(null);\n readonly error = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly placeholder = input<string>('Search...');\n readonly options = input<SearchSelectOption[]>([]);\n readonly minCharsToOpen = input<number>(0);\n\n readonly invalid = input<boolean>(false);\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n readonly value = model<string | null>(null);\n\n protected readonly ids = createFormFieldIds('pe-search-select');\n protected readonly query = signal('');\n protected readonly isOpen = signal(false);\n protected readonly isFocused = signal(false);\n protected readonly highlightedIndex = signal(0);\n protected blurCloseTimeout: ReturnType<typeof setTimeout> | null = null;\n\n protected readonly listId = `${this.ids.controlId}-list`;\n\n protected readonly hasError = computed(() => this.error() || this.invalid());\n\n protected readonly describedBy = computed(() =>\n getFormFieldDescribedBy(\n this.ids.helperId,\n this.ids.errorId,\n !!this.helperText(),\n this.hasError(),\n !!this.errorText() || this.errors().length > 0\n )\n );\n\n protected readonly selectedOption = computed(() => {\n const v = this.value();\n if (v == null) return null;\n return this.options().find((opt) => opt.value === v) ?? null;\n });\n\n protected readonly selectedLabel = computed(() => this.selectedOption()?.label ?? '');\n\n protected readonly filteredOptions = computed(() => {\n const q = this.query().trim().toLowerCase();\n const opts = this.options();\n if (!q) return opts;\n return opts.filter((opt) => opt.label.toLowerCase().includes(q));\n });\n\n protected readonly displayText = computed(() => {\n if (this.isOpen()) return this.query();\n if (this.value() != null) return this.selectedLabel();\n return this.query();\n });\n\n protected readonly shouldShowPanel = computed(() => {\n if (!this.isOpen()) return false;\n const min = this.minCharsToOpen();\n return this.query().trim().length >= min;\n });\n\n protected readonly hasNoResults = computed(() => this.shouldShowPanel() && this.filteredOptions().length === 0);\n\n protected readonly optionId = (index: number) => `${this.ids.controlId}-option-${index}`;\n\n protected readonly activeDescendantId = computed(() => {\n const list = this.filteredOptions();\n const idx = this.highlightedIndex();\n if (list.length === 0) return undefined;\n const safeIdx = Math.min(Math.max(0, idx), list.length - 1);\n return this.optionId(safeIdx);\n });\n\n onInputValueChange(text: string): void {\n this.query.set(text);\n this.isOpen.set(true);\n this.highlightedIndex.set(0);\n if (this.value() != null && text !== this.selectedLabel()) {\n this.value.set(null);\n }\n }\n\n onInputFocus(): void {\n this.cancelBlurClose();\n this.isFocused.set(true);\n if (this.value() != null) this.query.set(this.selectedLabel());\n this.isOpen.set(true);\n this.highlightedIndex.set(0);\n }\n\n onInputBlur(): void {\n this.isFocused.set(false);\n this.blurCloseTimeout = setTimeout(() => {\n this.blurCloseTimeout = null;\n this.isOpen.set(false);\n if (this.value() != null) this.query.set(this.selectedLabel());\n }, 150);\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (!this.shouldShowPanel()) return;\n const list = this.filteredOptions();\n if (list.length === 0) return;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.highlightedIndex.set((this.highlightedIndex() + 1) % list.length);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.highlightedIndex.set(\n this.highlightedIndex() <= 0 ? list.length - 1 : this.highlightedIndex() - 1\n );\n break;\n case 'Enter':\n event.preventDefault();\n this.selectOption(list[this.highlightedIndex()]);\n break;\n case 'Escape':\n event.preventDefault();\n this.isOpen.set(false);\n break;\n default:\n break;\n }\n }\n\n selectOption(opt: SearchSelectOption): void {\n this.cancelBlurClose();\n this.value.set(opt.value);\n this.query.set(opt.label);\n this.isOpen.set(false);\n }\n\n private cancelBlurClose(): void {\n if (this.blurCloseTimeout != null) {\n clearTimeout(this.blurCloseTimeout);\n this.blurCloseTimeout = null;\n }\n }\n}\n","<div\n class=\"pe-search-select pe-search-select--{{ size() }}\"\n [class.pe-search-select--open]=\"isOpen()\"\n [class.pe-search-select--error]=\"hasError()\"\n [class.pe-search-select--disabled]=\"disabled()\"\n [class.pe-search-select--required]=\"required()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n>\n <pe-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"ids.controlId\"\n [size]=\"size()\"\n />\n\n <div\n class=\"pe-search-select__control\"\n [class.pe-search-select__control--focused]=\"isFocused()\"\n role=\"combobox\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listId\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n (keydown)=\"onKeydown($event)\"\n >\n <pe-input\n [controlId]=\"ids.controlId\"\n [value]=\"displayText()\"\n (valueChange)=\"onInputValueChange($event)\"\n (inputFocus)=\"onInputFocus()\"\n (inputBlur)=\"onInputBlur()\"\n [size]=\"size()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [label]=\"null\"\n [helperText]=\"null\"\n [autocomplete]=\"'off'\"\n >\n <ng-container pe-input-right-elements>\n <pe-icon size=\"5\" icon=\"search\" />\n </ng-container>\n </pe-input>\n\n @if (shouldShowPanel()) {\n <div\n class=\"pe-search-select__list pe-scrollable\"\n [class.pe-search-select__list--empty]=\"hasNoResults()\"\n [id]=\"listId\"\n role=\"listbox\"\n >\n @if (hasNoResults()) {\n <div class=\"pe-search-select__empty\" role=\"status\">No results</div>\n } @else {\n @for (opt of filteredOptions(); track opt.value; let i = $index) {\n <div\n class=\"pe-search-select__option\"\n [class.pe-search-select__option--highlighted]=\"highlightedIndex() === i\"\n [id]=\"optionId(i)\"\n role=\"option\"\n [attr.aria-selected]=\"value() === opt.value\"\n (mousedown)=\"selectOption(opt)\"\n >\n <pe-list-item\n theme=\"ghost-white\"\n [selected]=\"value() === opt.value\"\n [hideFocusOutline]=\"true\"\n >\n <ng-container pe-list-item-label>{{ opt.label }}</ng-container>\n </pe-list-item>\n </div>\n }\n }\n </div>\n }\n </div>\n\n <pe-form-field-helper\n [id]=\"ids.helperId\"\n [helperText]=\"helperText()\"\n [errorText]=\"errorText() || (hasError() && errors().length ? errors()[0].message : '') || null\"\n [error]=\"hasError()\"\n />\n</div>\n","import { ChangeDetectionStrategy, Component, computed, effect, input, model, ViewEncapsulation } from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nimport { DropdownComponent, DropdownItem } from '../dropdown/dropdown';\nimport {\n createFormFieldIds,\n FormFieldHelperComponent,\n FormFieldLabelComponent,\n getFormFieldDescribedBy,\n} from '../shared/form-field';\nimport type { UiSize } from '../shared/ui-types';\nimport type { ListItemTheme } from '../list-item/list-item';\n\nexport interface SelectOption extends DropdownItem {\n /** Required value associated with the option */\n value: string;\n}\n\n/**\n * Form-friendly select built on the dropdown. Implements FormValueControl for Signal Forms [formField].\n * Use [(value)] or [formField]=\"myForm().country\".\n *\n * @example\n * <pe-select label=\"Sort by\" [options]=\"options\" [(value)]=\"selected\" />\n */\n@Component({\n selector: 'pe-select',\n standalone: true,\n imports: [DropdownComponent, FormFieldLabelComponent, FormFieldHelperComponent],\n templateUrl: './select.html',\n styleUrls: ['./select.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectComponent implements FormValueControl<string | null> {\n readonly size = input<UiSize>('md');\n readonly theme = input<ListItemTheme>('transparent-white');\n readonly label = input<string | null>(null);\n readonly helperText = input<string | null>(null);\n readonly errorText = input<string | null>(null);\n readonly error = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly placeholder = input<string>('Select an option');\n readonly options = input<SelectOption[]>([]);\n\n readonly invalid = input<boolean>(false);\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n readonly value = model<string | null>(null);\n protected readonly selectedIndex = model<number>(0);\n\n protected readonly ids = createFormFieldIds('pe-select');\n\n protected readonly items = computed<DropdownItem[]>(() => {\n const opts = this.options();\n if (!opts.length) return [];\n return opts.map((option) => ({\n label: option.label ?? option.value,\n value: option.value,\n leftIcons: option.leftIcons,\n rightIcons: option.rightIcons,\n disabled: option.disabled,\n }));\n });\n\n protected readonly hasError = computed(() => this.error() || this.invalid());\n\n protected readonly describedBy = computed(() =>\n getFormFieldDescribedBy(\n this.ids.helperId,\n this.ids.errorId,\n !!this.helperText(),\n this.hasError(),\n !!this.errorText() || this.errors().length > 0\n )\n );\n\n constructor() {\n // Keep selectedIndex in sync when value or options change\n effect(() => {\n const currentValue = this.value();\n const options = this.options();\n\n if (currentValue == null) {\n this.selectedIndex.set(0);\n return;\n }\n\n const index = options.findIndex((opt) => opt.value === currentValue);\n this.selectedIndex.set(index >= 0 ? index : 0);\n });\n }\n\n /** Handles index changes coming from the dropdown */\n protected onSelectedIndexChange(index: number): void {\n const options = this.options();\n const option = options[index];\n\n this.selectedIndex.set(index);\n this.value.set(option?.value ?? null);\n }\n}\n\n","<div\n class=\"pe-select pe-select--{{ size() }}\"\n [class.pe-select--disabled]=\"disabled()\"\n [class.pe-select--error]=\"hasError()\"\n [class.pe-select--required]=\"required()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n>\n <pe-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"ids.controlId\"\n [size]=\"size()\"\n />\n\n <div\n class=\"pe-select__control\"\n [id]=\"ids.controlId\"\n [class.pe-select__control--disabled]=\"disabled()\"\n >\n <pe-dropdown\n class=\"pe-select__dropdown\"\n [theme]=\"theme()\"\n [items]=\"items()\"\n [disabled]=\"disabled()\"\n [(selectedIndex)]=\"selectedIndex\"\n (selectedIndexChange)=\"onSelectedIndexChange($event)\"\n />\n </div>\n\n <pe-form-field-helper\n [id]=\"ids.helperId\"\n [helperText]=\"helperText()\"\n [errorText]=\"errorText() || (hasError() && errors().length ? errors()[0].message : '') || null\"\n [error]=\"hasError()\"\n />\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n input,\n model,\n output,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ButtonComponent } from '../button/button';\nimport { IconComponent, IconName } from '../icon/icon';\nimport { ListItemComponent, ListItemTheme } from '../list-item/list-item';\n\nexport type SidebarItem = {\n label: string;\n value?: string;\n leftIcons?: IconName[];\n rightIcons?: IconName[];\n disabled?: boolean;\n};\n\n@Component({\n selector: 'pe-sidebar',\n standalone: true,\n imports: [ButtonComponent, IconComponent, ListItemComponent],\n templateUrl: './sidebar.html',\n styleUrls: ['./sidebar.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.aria-hidden]': '!open()',\n },\n})\nexport class SidebarComponent {\n items = input<SidebarItem[]>([]);\n theme = input<ListItemTheme>('ghost-white');\n selectedIndex = model<number>(0);\n open = model<boolean>(false);\n closeOnBackdropClick = input<boolean>(true);\n hideItemFocusOutline = input<boolean>(true);\n\n itemSelected = output<SidebarItem>();\n\n close(): void {\n this.open.set(false);\n }\n\n onOverlayClick(): void {\n if (this.closeOnBackdropClick()) {\n this.close();\n }\n }\n\n onItemClick(item: SidebarItem, index: number): void {\n if (item.disabled) {\n return;\n }\n this.selectedIndex.set(index);\n this.itemSelected.emit(item);\n }\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n if (this.open()) {\n this.close();\n }\n }\n}\n","<div class=\"pe-sidebar\">\n <div\n class=\"pe-sidebar__overlay\"\n [class.pe-sidebar__overlay--visible]=\"open()\"\n [attr.aria-hidden]=\"!open()\"\n (click)=\"onOverlayClick()\"\n ></div>\n\n <aside\n class=\"pe-sidebar__drawer\"\n [class.pe-sidebar__drawer--open]=\"open()\"\n role=\"navigation\"\n [attr.aria-hidden]=\"!open()\"\n >\n <div class=\"pe-sidebar__inner\">\n <header class=\"pe-sidebar__header\">\n @if (open()) {\n <pe-button\n theme=\"ghost-white\"\n [iconOnly]=\"true\"\n class=\"pe-sidebar__close\"\n ariaLabel=\"Close menu\"\n (buttonClick)=\"close()\"\n >\n <pe-icon icon=\"close\" size=\"6\" />\n </pe-button>\n }\n <ng-content select=\"[pe-sidebar-header]\" />\n </header>\n <nav class=\"pe-sidebar__nav pe-scrollable\">\n @if (items().length > 0) {\n @for (item of items(); track $index) {\n <pe-list-item\n [theme]=\"theme()\"\n [disabled]=\"!!item.disabled\"\n [selected]=\"selectedIndex() === $index\"\n [hideFocusOutline]=\"hideItemFocusOutline()\"\n (click)=\"onItemClick(item, $index)\"\n >\n <ng-container pe-list-item-before-label>\n @if (item.leftIcons) {\n @for (icon of item.leftIcons; track icon) {\n <pe-icon size=\"5\" [icon]=\"icon\" />\n }\n }\n </ng-container>\n <ng-container pe-list-item-label>{{ item.label }}</ng-container>\n <ng-container pe-list-item-after-label>\n @if (item.rightIcons) {\n @for (icon of item.rightIcons; track icon) {\n <pe-icon size=\"5\" [icon]=\"icon\" />\n }\n }\n </ng-container>\n </pe-list-item>\n }\n } @else {\n <ng-content select=\"[pe-sidebar-nav]\" />\n }\n </nav>\n <footer class=\"pe-sidebar__footer\">\n <ng-content select=\"[pe-sidebar-footer]\" />\n </footer>\n </div>\n </aside>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport { IconComponent, IconName } from '../icon/icon';\nimport { RadialComponent } from '../radial/radial';\n\nexport type Status = 'confirm' | 'alert' | 'error' | 'pending' | 'info';\n\n@Component({\n selector: 'pe-status',\n standalone: true,\n imports: [IconComponent, RadialComponent],\n templateUrl: './status.html',\n styleUrl: './status.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StatusComponent {\n status = input<Status>('info');\n customIcon = input<IconName>();\n loadingAnimation = input<boolean>(false);\n\n get icon(): IconName {\n const customIcon = this.customIcon();\n if (customIcon) {\n return customIcon;\n }\n\n const statusIcons: Record<Status, IconName> = {\n confirm: 'check',\n alert: 'alert',\n error: 'cross',\n pending: 'hourglass',\n info: 'info',\n };\n\n return statusIcons[this.status()] || 'info';\n }\n\n computedClasses = computed(() => ({\n 'pe-status': true,\n 'pe-status--confirm': this.status() === 'confirm',\n 'pe-status--alert': this.status() === 'alert',\n 'pe-status--error': this.status() === 'error',\n 'pe-status--pending': this.status() === 'pending',\n 'pe-status--info': this.status() === 'info',\n }));\n}\n","<div [class]=\"computedClasses()\">\n <div class=\"pe-status-icon\">\n <pe-icon [icon]=\"icon\" size=\"12\" />\n @if (loadingAnimation()) {\n <div class=\"pe-status-loading\">\n <pe-radial [size]=\"96\" [percentage]=\"50\" [infinite]=\"true\" />\n </div>\n }\n </div>\n <div class=\"pe-status-title-container\">\n <div class=\"pe-status-title\">\n <ng-content select=\"[pe-status-title]\" />\n </div>\n <div class=\"pe-status-subtitle\">\n <ng-content select=\"[pe-status-subtitle]\" />\n </div>\n </div>\n <div class=\"pe-status-description\">\n <ng-content select=\"[pe-status-description]\" />\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, model, output, signal } from '@angular/core';\n\nimport { IconComponent } from '../icon/icon';\nimport { InputComponent } from '../input/input';\nimport { SkeletonComponent } from '../skeleton/skeleton';\n\nexport interface TableColumn {\n id: string;\n label: string;\n sortable?: boolean;\n filterable?: boolean;\n}\n\nexport type SortDirection = 'asc' | 'desc';\n\n/**\n * Table component for tabular data with optional sort (per-column) and global filter.\n * Uses semantic table markup; responsive with horizontal scroll on small viewports.\n */\n@Component({\n selector: 'pe-table',\n standalone: true,\n imports: [InputComponent, IconComponent, SkeletonComponent],\n templateUrl: './table.html',\n styleUrls: ['./table.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableComponent {\n readonly columns = input<TableColumn[]>([]);\n readonly data = input<Record<string, unknown>[]>([]);\n readonly sortColumn = model<string | null>(null);\n readonly sortDirection = model<SortDirection>('asc');\n readonly filterPlaceholder = input<string>('Filter...');\n readonly filterLabel = input<string>('Filter');\n readonly showGlobalFilter = input<boolean>(false);\n readonly emptyMessage = input<string>('No data');\n\n readonly loading = input<boolean>(false);\n\n readonly sortChange = output<{ column: string | null; direction: SortDirection }>();\n readonly filterChange = output<string>();\n\n protected readonly filterQuery = signal('');\n\n protected readonly hasSortableColumn = computed(() =>\n this.columns().some((col) => col.sortable === true)\n );\n\n protected readonly filteredData = computed(() => {\n const rows = this.data();\n const query = this.filterQuery().trim().toLowerCase();\n const cols = this.columns();\n if (!query) return rows;\n return rows.filter((row) => {\n return cols.some((col) => {\n const val = this.getCellValue(row, col.id);\n return String(val).toLowerCase().includes(query);\n });\n });\n });\n\n protected readonly sortedData = computed(() => {\n const rows = this.filteredData();\n const colId = this.sortColumn();\n const dir = this.sortDirection();\n if (!colId) return rows;\n return [...rows].sort((a, b) => {\n const aVal = this.getCellValue(a, colId);\n const bVal = this.getCellValue(b, colId);\n const aStr = String(aVal ?? '');\n const bStr = String(bVal ?? '');\n const cmp = aStr.localeCompare(bStr, undefined, { numeric: true });\n return dir === 'asc' ? cmp : -cmp;\n });\n });\n\n protected readonly filterId = `pe-table-filter-${Math.random().toString(36).slice(2, 9)}`;\n\n getCellValue(row: Record<string, unknown>, columnId: string): unknown {\n return row[columnId];\n }\n\n onFilterInput(value: string): void {\n this.filterQuery.set(value);\n this.filterChange.emit(value);\n }\n\n toggleSort(columnId: string): void {\n const col = this.columns().find((c) => c.id === columnId);\n if (!col?.sortable) return;\n const current = this.sortColumn();\n const currentDir = this.sortDirection();\n if (current === columnId) {\n const nextDir: SortDirection = currentDir === 'asc' ? 'desc' : 'asc';\n this.sortDirection.set(nextDir);\n this.sortChange.emit({ column: columnId, direction: nextDir });\n return;\n } else {\n this.sortColumn.set(columnId);\n this.sortDirection.set('asc');\n this.sortChange.emit({ column: columnId, direction: 'asc' });\n }\n }\n\n getSortAriaSort(columnId: string): 'ascending' | 'descending' | 'none' {\n if (this.sortColumn() !== columnId) return 'none';\n return this.sortDirection() === 'asc' ? 'ascending' : 'descending';\n }\n}\n","<div\n class=\"pe-table\"\n [class.pe-table--sortable]=\"hasSortableColumn()\"\n [class.pe-table--filterable]=\"showGlobalFilter()\"\n>\n @if (showGlobalFilter()) {\n <div class=\"pe-table__toolbar\">\n <pe-input\n [controlId]=\"filterId\"\n [label]=\"filterLabel()\"\n [placeholder]=\"filterPlaceholder()\"\n [value]=\"filterQuery()\"\n (valueChange)=\"onFilterInput($event)\"\n size=\"sm\"\n >\n <ng-container pe-input-left-elements>\n <pe-icon size=\"5\" icon=\"search\" />\n </ng-container>\n </pe-input>\n </div>\n }\n\n <div class=\"pe-table__scroll pe-scrollable\">\n <pe-skeleton [show]=\"loading()\" variant=\"rect\">\n <table class=\"pe-table__table\">\n <thead class=\"pe-table__head\">\n <tr class=\"pe-table__row pe-table__row--head\">\n @for (col of columns(); track col.id) {\n <th\n class=\"pe-table__th\"\n [class.pe-table__th--sortable]=\"col.sortable\"\n [class.pe-table__th--sort-asc]=\"sortColumn() === col.id && sortDirection() === 'asc'\"\n [class.pe-table__th--sort-desc]=\"sortColumn() === col.id && sortDirection() === 'desc'\"\n [attr.scope]=\"'col'\"\n [attr.aria-sort]=\"col.sortable ? getSortAriaSort(col.id) : null\"\n >\n @if (col.sortable) {\n <button\n type=\"button\"\n class=\"pe-table__th-button\"\n [attr.aria-label]=\"'Sort by ' + col.label\"\n (click)=\"toggleSort(col.id)\"\n >\n <span class=\"pe-table__th-label\">{{ col.label }}</span>\n @if (sortColumn() === col.id && sortDirection() === 'asc') {\n <pe-icon size=\"5\" icon=\"arrow_up\" />\n } @else if (sortColumn() === col.id && sortDirection() === 'desc') {\n <pe-icon size=\"5\" icon=\"arrow_down\" />\n } @else {\n <pe-icon size=\"5\" icon=\"sort\" />\n }\n </button>\n } @else {\n <span class=\"pe-table__th-label\">{{ col.label }}</span>\n }\n </th>\n }\n </tr>\n </thead>\n <tbody class=\"pe-table__body\">\n @if (sortedData().length === 0) {\n <tr class=\"pe-table__row pe-table__row--empty\">\n <td class=\"pe-table__cell pe-table__cell--empty\" [attr.colspan]=\"columns().length || 1\">\n {{ emptyMessage() }}\n </td>\n </tr>\n } @else {\n @for (row of sortedData(); track $index) {\n <tr class=\"pe-table__row\">\n @for (col of columns(); track col.id) {\n <td class=\"pe-table__cell\">{{ getCellValue(row, col.id) }}</td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n </pe-skeleton>\n </div>\n</div>\n","import { Directive } from '@angular/core';\n\n/**\n * When projected into pe-textarea, replaces the native textarea with custom content (e.g. Quill).\n * Use with [pe-textarea-field] on the element to project.\n */\n@Directive({\n selector: '[pe-textarea-field]',\n standalone: true,\n})\nexport class TextareaFieldDirective {}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nimport {\n createFormFieldIds,\n FormFieldHelperComponent,\n FormFieldLabelComponent,\n getFormFieldDescribedBy,\n} from '../shared/form-field';\nimport type { UiSize } from '../shared/ui-types';\n\nimport { TextareaFieldDirective } from './textarea-field.directive';\n\nexport type TextareaResize = 'none' | 'vertical' | 'horizontal' | 'both';\n\n/**\n * Reusable textarea. Implements FormValueControl for Signal Forms [formField].\n * Use [(value)] for two-way binding or [formField]=\"myForm().message\".\n *\n * Content projection: [pe-textarea-field] (replaces native textarea), [pe-textarea-left-elements], [pe-textarea-right-elements].\n */\n@Component({\n selector: 'pe-textarea',\n standalone: true,\n imports: [FormFieldLabelComponent, FormFieldHelperComponent],\n templateUrl: './textarea.html',\n styleUrls: ['./textarea.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextareaComponent implements FormValueControl<string> {\n readonly size = input<UiSize>('md');\n readonly error = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly readOnly = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly placeholder = input<string>('');\n readonly label = input<string | null>(null);\n readonly helperText = input<string | null>(null);\n readonly errorText = input<string | null>(null);\n readonly maxLength = input<number | undefined>();\n readonly minLength = input<number | undefined>();\n readonly autocomplete = input<string>('off');\n readonly rows = input<number>(3);\n readonly resize = input<TextareaResize>('vertical');\n\n /** When using [pe-textarea-field], pass focus state so the group border reflects it. */\n readonly groupFocused = input<boolean | null>(null);\n\n readonly invalid = input<boolean>(false);\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n readonly touched = model<boolean>(false);\n\n readonly value = model<string>('');\n\n protected readonly customField = contentChild(TextareaFieldDirective);\n protected readonly ids = createFormFieldIds('pe-textarea');\n protected readonly isFocused = signal(false);\n protected readonly groupFocusedState = computed(() => this.groupFocused() ?? this.isFocused());\n\n protected readonly hasError = computed(() => this.error() || this.invalid());\n\n protected readonly describedBy = computed(() =>\n getFormFieldDescribedBy(\n this.ids.helperId,\n this.ids.errorId,\n !!this.helperText(),\n this.hasError(),\n !!this.errorText() || this.errors().length > 0\n )\n );\n\n readonly inputBlur = output<FocusEvent>();\n readonly inputFocus = output<FocusEvent>();\n\n onInput(event: Event): void {\n const value = (event.target as HTMLTextAreaElement).value;\n this.value.set(value);\n }\n\n onBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.touched.set(true);\n this.inputBlur.emit(event);\n }\n\n onFocus(event: FocusEvent): void {\n this.isFocused.set(true);\n this.inputFocus.emit(event);\n }\n\n focus(): void {\n if (this.customField()) return;\n const el = document.getElementById(this.ids.controlId) as HTMLTextAreaElement;\n el?.focus();\n }\n\n select(): void {\n const el = document.getElementById(this.ids.controlId) as HTMLTextAreaElement;\n el?.select();\n }\n}\n","<div\n class=\"pe-textarea pe-textarea--{{ size() }}\"\n [class.pe-textarea--error]=\"hasError()\"\n [class.pe-textarea--disabled]=\"disabled()\"\n [class.pe-textarea--read-only]=\"readOnly()\"\n [class.pe-textarea--required]=\"required()\"\n [class.pe-textarea--resize-none]=\"resize() === 'none'\"\n [class.pe-textarea--resize-vertical]=\"resize() === 'vertical'\"\n [class.pe-textarea--resize-horizontal]=\"resize() === 'horizontal'\"\n [class.pe-textarea--resize-both]=\"resize() === 'both'\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n>\n <pe-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"ids.controlId\"\n [size]=\"size()\"\n />\n\n <div\n class=\"pe-textarea__group\"\n [class.pe-textarea__group--focused]=\"groupFocusedState()\"\n [style.--pe-textarea-rows]=\"rows()\"\n >\n <div class=\"pe-textarea__left-elements\">\n <ng-content select=\"[pe-textarea-left-elements]\" />\n </div>\n\n <ng-content select=\"[pe-textarea-field]\" />\n @if (!customField()) {\n <textarea\n [id]=\"ids.controlId\"\n class=\"pe-textarea__field\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n [disabled]=\"disabled()\"\n [readonly]=\"readOnly()\"\n [required]=\"required()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.minlength]=\"minLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.rows]=\"rows()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n ></textarea>\n }\n\n <div class=\"pe-textarea__right-elements\">\n <ng-content select=\"[pe-textarea-right-elements]\" />\n </div>\n </div>\n\n <pe-form-field-helper\n [id]=\"ids.helperId\"\n [helperText]=\"helperText()\"\n [errorText]=\"(errorText() || (hasError() && errors().length ? errors()[0].message : null)) ?? null\"\n [error]=\"hasError()\"\n />\n</div>\n","/*\n * Public API Surface of ui\n */\n\nexport * from './components';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"underlayerdev-ui.mjs","sources":["../../../projects/ui/src/components/accordion/accordion.ts","../../../projects/ui/src/components/area-code/area-code.ts","../../../projects/ui/src/components/area-code/area-code.html","../../../projects/ui/src/components/icon/icon.ts","../../../projects/ui/src/components/skeleton/skeleton.ts","../../../projects/ui/src/components/skeleton/skeleton.html","../../../projects/ui/src/components/avatar/avatar.ts","../../../projects/ui/src/components/avatar/avatar-group.ts","../../../projects/ui/src/components/breadcrumb/breadcrumb.ts","../../../projects/ui/src/components/breadcrumb/breadcrumb.html","../../../projects/ui/src/config.ts","../../../projects/ui/src/components/button/button.directive.ts","../../../projects/ui/src/components/button/button.ts","../../../projects/ui/src/components/shared/form-field/form-field-ids.ts","../../../projects/ui/src/components/shared/form-field/form-field-label.ts","../../../projects/ui/src/components/shared/form-field/form-field-helper.ts","../../../projects/ui/src/components/calendar/calendar.ts","../../../projects/ui/src/components/calendar/calendar.html","../../../projects/ui/src/components/card/card.ts","../../../projects/ui/src/components/card/card.html","../../../projects/ui/src/components/carousel/carousel.ts","../../../projects/ui/src/components/checkbox/checkbox.ts","../../../projects/ui/src/components/collapse/collapse.ts","../../../projects/ui/src/components/list-item/list-item.ts","../../../projects/ui/src/components/dropdown/dropdown.ts","../../../projects/ui/src/components/dropdown/dropdown.html","../../../projects/ui/src/components/file-input/file-input.ts","../../../projects/ui/src/components/file-input/file-input.html","../../../projects/ui/src/components/footer/footer.ts","../../../projects/ui/src/components/footer/footer.html","../../../projects/ui/src/components/pill/pill.ts","../../../projects/ui/src/components/pill/pill.html","../../../projects/ui/src/components/hero/hero-slot.directive.ts","../../../projects/ui/src/components/hero/hero.ts","../../../projects/ui/src/components/hero/hero.html","../../../projects/ui/src/components/image/image-not-found.ts","../../../projects/ui/src/components/input/input.ts","../../../projects/ui/src/components/input/input.html","../../../projects/ui/src/components/modal/modal.ts","../../../projects/ui/src/components/modal/modal.html","../../../projects/ui/src/components/navbar/navbar-slot.directive.ts","../../../projects/ui/src/components/navbar/navbar.ts","../../../projects/ui/src/components/navbar/navbar.html","../../../projects/ui/src/components/price-button/custom-currency.pipe.ts","../../../projects/ui/src/components/price-button/price-button.ts","../../../projects/ui/src/components/price-button/price-button.html","../../../projects/ui/src/components/radio/radio.ts","../../../projects/ui/src/components/radio/radio.html","../../../projects/ui/src/components/radio/radio-group.ts","../../../projects/ui/src/components/radial/radial.ts","../../../projects/ui/src/components/radial/radial.html","../../../projects/ui/src/components/rich-text/rich-text.ts","../../../projects/ui/src/components/toast/toast.service.ts","../../../projects/ui/src/components/toast/toast.ts","../../../projects/ui/src/components/toast/toast.html","../../../projects/ui/src/components/tooltip/tooltip.ts","../../../projects/ui/src/components/tooltip/tooltip.html","../../../projects/ui/src/components/search-select/search-select.ts","../../../projects/ui/src/components/search-select/search-select.html","../../../projects/ui/src/components/select/select.ts","../../../projects/ui/src/components/select/select.html","../../../projects/ui/src/components/sidebar/sidebar.ts","../../../projects/ui/src/components/sidebar/sidebar.html","../../../projects/ui/src/components/status/status.ts","../../../projects/ui/src/components/status/status.html","../../../projects/ui/src/components/table/table.ts","../../../projects/ui/src/components/table/table.html","../../../projects/ui/src/components/textarea/textarea-field.directive.ts","../../../projects/ui/src/components/textarea/textarea.ts","../../../projects/ui/src/components/textarea/textarea.html","../../../projects/ui/src/public-api.ts","../../../projects/ui/src/underlayerdev-ui.ts"],"sourcesContent":["import { CdkAccordion, CdkAccordionItem } from '@angular/cdk/accordion';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n DestroyRef,\n ElementRef,\n inject,\n input,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * AccordionItemComponent is a standalone Angular component that extends CdkAccordionItem.\n * It represents an item within an accordion, providing configurable expansion behavior\n * and accessibility features.\n */\n@Component({\n selector: 'ul-accordion-item',\n standalone: true,\n template: `\n <div\n class=\"ul-accordion__item\"\n [class.ul-accordion__item--expanded]=\"cdkAccordionItem.expanded\"\n [class.ul-accordion__item--disabled]=\"cdkAccordionItem.disabled\">\n <button\n (click)=\"onToggle()\"\n class=\"ul-accordion__trigger\"\n [id]=\"triggerId\"\n [attr.aria-expanded]=\"cdkAccordionItem.expanded\"\n [attr.aria-controls]=\"contentId\"\n [attr.aria-disabled]=\"cdkAccordionItem.disabled ? 'true' : null\"\n [disabled]=\"cdkAccordionItem.disabled\"\n (keydown)=\"onKeydown($event)\"\n type=\"button\">\n <div class=\"ul-accordion__icon\">\n <ng-content select=\"[ul-accordion-icon]\"></ng-content>\n </div>\n <div class=\"ul-accordion__label\">\n <ng-content select=\"[ul-accordion-label]\"></ng-content>\n </div>\n <div class=\"ul-accordion__status\">\n <ng-content select=\"[ul-accordion-status]\"></ng-content>\n </div>\n <span class=\"ul-accordion__indicator\">\n <i class=\"ul-icon ul-icon-size-8 ul-icon-weight-bold ul-icon-chevron_down\"></i>\n </span>\n </button>\n <div\n role=\"region\"\n class=\"ul-accordion__content\"\n [id]=\"contentId\"\n [attr.aria-labelledby]=\"triggerId\"\n [attr.aria-hidden]=\"!cdkAccordionItem.expanded\">\n <ng-content select=\"[ul-accordion-content]\"></ng-content>\n </div>\n </div>\n `,\n styleUrls: ['./accordion.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: CdkAccordionItem,\n inputs: ['expanded', 'disabled'],\n outputs: ['closed', 'opened', 'destroyed', 'expandedChange'],\n },\n ],\n})\nexport class AccordionItemComponent {\n cdkAccordionItem = inject(CdkAccordionItem);\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n /**\n * Stable ID for the content region, used for aria-controls linkage.\n */\n readonly contentId = `ul-accordion-content-${Math.random().toString(36).slice(2, 11)}`;\n\n /**\n * Stable ID for the trigger button, used for aria-labelledby linkage.\n */\n readonly triggerId = `ul-accordion-trigger-${Math.random().toString(36).slice(2, 11)}`;\n\n onToggle(): void {\n if (this.cdkAccordionItem.disabled) {\n return;\n }\n this.cdkAccordionItem.toggle();\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (this.cdkAccordionItem.disabled) {\n return;\n }\n\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.onToggle();\n return;\n }\n\n // Handle Arrow keys, Home, and End for navigation between accordion items\n const accordion = this.elementRef.nativeElement.closest('.ul-accordion');\n if (!accordion) {\n return;\n }\n\n const triggers = Array.from(\n accordion.querySelectorAll('.ul-accordion__trigger:not([disabled])'),\n ) as HTMLButtonElement[];\n const currentIndex = triggers.findIndex((t) => t.id === this.triggerId);\n\n if (currentIndex === -1) {\n return;\n }\n\n let targetIndex: number | null = null;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n targetIndex = currentIndex < triggers.length - 1 ? currentIndex + 1 : 0;\n break;\n case 'ArrowUp':\n event.preventDefault();\n targetIndex = currentIndex > 0 ? currentIndex - 1 : triggers.length - 1;\n break;\n case 'Home':\n event.preventDefault();\n targetIndex = 0;\n break;\n case 'End':\n event.preventDefault();\n targetIndex = triggers.length - 1;\n break;\n }\n\n if (targetIndex !== null && triggers[targetIndex]) {\n triggers[targetIndex].focus();\n }\n }\n}\n\n/**\n * AccordionComponent is a standalone Angular component that acts as a container\n * for multiple AccordionItemComponents. It provides configuration options for\n * multi-expansion behavior and manages the state of its child accordion items.\n */\n@Component({\n selector: 'ul-accordion',\n standalone: true,\n template: `\n <cdk-accordion #accordion [multi]=\"multi()\" class=\"ul-accordion\" [class.ul-accordion--divider]=\"showDivider()\">\n <ng-content />\n </cdk-accordion>\n `,\n styleUrls: ['./accordion.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CdkAccordion],\n})\nexport class AccordionComponent implements AfterViewInit {\n readonly showDivider = input<boolean>(false);\n readonly multi = input<boolean>(false);\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly accordionItems = contentChildren<AccordionItemComponent, CdkAccordionItem>(AccordionItemComponent, {\n read: CdkAccordionItem,\n });\n\n ngAfterViewInit(): void {\n this.setupSingleExpansionLogic();\n }\n\n /**\n * Sets up the single expansion logic to ensure only one item is expanded at a time\n * when multi mode is disabled.\n */\n private setupSingleExpansionLogic(): void {\n const items = this.accordionItems();\n\n // Early return if no items or multi mode is enabled\n if (!items.length || this.multi()) {\n return;\n }\n\n // Subscribe to expansion changes for all items\n items.forEach((item) => {\n item.expandedChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((expanded) => {\n this.handleExpansionChange(item, expanded, items);\n });\n });\n }\n\n /**\n * Handles expansion changes and manages single-expansion behavior.\n * @param changedItem - The accordion item that changed\n * @param expanded - Whether the item is now expanded\n * @param allItems - Array of all accordion items\n */\n private handleExpansionChange(\n changedItem: CdkAccordionItem,\n expanded: boolean,\n allItems: readonly CdkAccordionItem[],\n ): void {\n // Only handle expansion (not collapse) and only when multi mode is disabled\n if (!expanded || this.multi()) {\n return;\n }\n\n // Collapse all other items except the one that was just expanded\n allItems.forEach((item) => {\n if (item !== changedItem && item.expanded) {\n item.expanded = false;\n }\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * A code display component that shows code with automatic line numbering.\n * Features a clean two-column layout following PE design guidelines.\n *\n * @example\n * <ul-area-code\n * [content]=\"codeContent\"\n * [showLineNumbers]=\"true\"\n * />\n */\n@Component({\n selector: 'ul-area-code',\n standalone: true,\n templateUrl: './area-code.html',\n styleUrls: ['./area-code.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AreaCodeComponent {\n // Core inputs\n readonly content = input<string>('');\n readonly showLineNumbers = input<boolean>(true);\n readonly maxHeight = input<string | null>(null);\n\n // Computed properties\n readonly lines = computed(() => {\n const content = this.content();\n if (!content) return [''];\n return content.split('\\n');\n });\n\n readonly lineCount = computed(() => this.lines().length);\n\n readonly lineNumbers = computed(() => {\n const count = this.lineCount();\n return Array.from({ length: count }, (_, i) => i + 1);\n });\n\n // Component properties\n readonly codeId = `ul-area-code-${Math.random().toString(36).slice(2, 11)}`;\n}\n","<div class=\"ul-area-code\" [class.ul-area-code--no-line-numbers]=\"!showLineNumbers()\">\n <div class=\"ul-area-code__container ul-scrollable\" [style.max-height]=\"maxHeight()\">\n <!-- Code Display Area -->\n <div class=\"ul-area-code__display\">\n <!-- Line Numbers Column -->\n @if (showLineNumbers()) {\n <div class=\"ul-area-code__line-numbers\" role=\"presentation\" aria-hidden=\"true\">\n @for (lineNumber of lineNumbers(); track lineNumber) {\n <span class=\"ul-area-code__line-number\">{{ lineNumber }}.</span>\n }\n </div>\n }\n <!-- Code Content Column -->\n <div class=\"ul-area-code__content\">\n <pre class=\"ul-area-code__code\" [id]=\"codeId\"><code>{{ content() }}</code></pre>\n </div>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation } from '@angular/core';\n\n/** Icon size keys from design tokens (iconography.font.size). */\nexport type IconSize = '4' | '5' | '6' | '7' | '8' | '10' | '12' | '16' | '24' | '32';\n\n/** Icon weight keys from design tokens (iconography.font.weight). */\nexport type IconWeight = 'medium' | 'bold';\n\n/** Icon name / glyph key from design tokens (content['icon-glyph']). Valid values match token keys. */\nexport type IconName = string;\n\n// <ul-icon class=\"ul-icon ul-icon-size-${size} ul-icon-weight-${weight} ul-icon-${icon}\" />\n@Component({\n selector: 'ul-icon',\n standalone: true,\n template: ``,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'hostClasses()'\n }\n})\nexport class IconComponent {\n size = input<IconSize>('8');\n weight = input<IconWeight>('medium');\n icon = input.required<IconName>();\n\n readonly hostClasses = computed(() => {\n return `ul-icon ul-icon-size-${this.size()} ul-icon-weight-${this.weight()} ul-icon-${this.icon()}`;\n });\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\n\nexport type SkeletonVariant = 'rect' | 'text';\n\nexport type SkeletonBorderRadius = 'xs' | 'sm' | 'md' | 'lg' | 'full';\n\n@Component({\n selector: 'ul-skeleton',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './skeleton.html',\n styleUrls: ['./skeleton.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkeletonComponent {\n readonly variant = input<SkeletonVariant>('rect');\n readonly width = input<string | null>(null);\n readonly height = input<string | null>(null);\n readonly lines = input<number>(3);\n readonly borderRadius = input<SkeletonBorderRadius | null>(null);\n readonly show = input<boolean>(true);\n\n readonly hostStyles = computed(() => {\n const width = this.width();\n const height = this.height();\n\n return {\n width: width ?? null,\n height: height ?? null,\n } as const;\n });\n\n readonly lineWidths = computed(() => {\n const count = Math.max(1, this.lines());\n const widths: string[] = [];\n\n for (let index = 0; index < count; index += 1) {\n const base = 100;\n const step = 8;\n const value = Math.max(40, base - index * step);\n widths.push(`${value}%`);\n }\n\n return widths;\n });\n\n readonly radiusClass = computed(() => {\n const radius = this.borderRadius();\n return radius ? `ul-skeleton--radius-${radius}` : null;\n });\n\n trackByIndex(index: number): number {\n return index;\n }\n}\n\n","<div\n class=\"ul-skeleton\"\n [class.ul-skeleton--active]=\"show()\"\n [class.ul-skeleton--rect]=\"variant() === 'rect'\"\n [class.ul-skeleton--text]=\"variant() === 'text'\"\n [class]=\"radiusClass() || ''\"\n [style.width]=\"hostStyles().width\"\n [style.height]=\"hostStyles().height\"\n>\n <div class=\"ul-skeleton__content\">\n <ng-content />\n </div>\n\n @if (show()) {\n @if (variant() === 'text') {\n <div class=\"ul-skeleton__overlay ul-skeleton__overlay--text\">\n @for (lineWidth of lineWidths(); track trackByIndex($index)) {\n <div class=\"ul-skeleton__block ul-skeleton__block--line\" [style.width]=\"lineWidth\"></div>\n }\n </div>\n } @else {\n <div class=\"ul-skeleton__overlay ul-skeleton__overlay--rect\">\n <div class=\"ul-skeleton__block ul-skeleton__block--rect\"></div>\n </div>\n }\n }\n</div>\n\n","import { ChangeDetectionStrategy, Component, computed, effect, input, signal, ViewEncapsulation } from '@angular/core';\n\nimport { IconComponent, IconName } from '../icon/icon';\nimport { SkeletonComponent } from '../skeleton/skeleton';\nimport type { UiSize } from '../shared/ui-types';\ntype IconSize = '5' | '6' | '7' | '8';\n/**\n * A reusable avatar component that displays user images, initials, or icons.\n * Supports multiple sizes and fallback options when an image is not available.\n * @example\n * <ul-avatar size=\"md\" [src]=\"userImageUrl\" [initials]=\"'JD'\" />\n */\n@Component({\n selector: 'ul-avatar',\n standalone: true,\n imports: [IconComponent, SkeletonComponent],\n template: `\n <ul-skeleton class=\"ul-avatar ul-avatar--{{ size() }}\" [show]=\"loading()\" variant=\"rect\" borderRadius=\"full\">\n <div class=\"ul-avatar ul-avatar--{{ size() }}\">\n @if (src() && !imageError()) {\n <img\n [src]=\"src()\"\n [alt]=\"alt()\"\n (error)=\"handleImageError()\"\n class=\"ul-avatar__image\"\n />\n } @else if (initials()) {\n <span class=\"ul-avatar__initials\">{{ initials() }}</span>\n } @else if (icon()) {\n <ul-icon [icon]=\"icon()!\" [size]=\"iconSize()\" />\n }\n </div>\n </ul-skeleton>\n `,\n styleUrls: ['./avatar.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AvatarComponent {\n /** The size of the avatar */\n size = input<UiSize>('md');\n\n /** The image source URL */\n src = input<string | undefined>(undefined);\n\n /** Fallback initials to display when image is not available */\n initials = input<string | undefined>(undefined);\n\n /** Fallback icon to display when image and initials are not available */\n icon = input<IconName | undefined>(undefined);\n\n /** Alt text for the avatar image */\n alt = input<string>('');\n\n /** Show a skeleton placeholder instead of content while loading. */\n loading = input<boolean>(false);\n\n /** Internal signal to track image loading errors */\n protected readonly imageError = signal(false);\n\n /** Computed icon size based on avatar size */\n readonly iconSize = computed<IconSize>(() => {\n const sizeMap: Record<UiSize, IconSize> = {\n sm: '5',\n md: '6',\n lg: '7',\n xl: '8',\n };\n return sizeMap[this.size()];\n });\n\n constructor() {\n // Reset image error when src changes\n effect(() => {\n this.src();\n this.imageError.set(false);\n });\n }\n\n /** Handles image loading errors */\n protected handleImageError(): void {\n this.imageError.set(true);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation } from '@angular/core';\n\nimport { AvatarComponent } from './avatar';\nimport type { UiSize } from '../shared/ui-types';\nimport type { IconName } from '../icon/icon';\n\nexport interface AvatarData {\n src?: string;\n initials?: string;\n icon?: IconName;\n alt?: string;\n}\n\n/**\n * A reusable avatar group component that displays multiple avatars with overflow handling.\n * Supports maximum visible count and shows a \"+X\" indicator for remaining avatars.\n * @example\n * <ul-avatar-group [avatars]=\"userAvatars\" [maxVisible]=\"3\" size=\"md\" />\n */\n@Component({\n selector: 'ul-avatar-group',\n standalone: true,\n imports: [AvatarComponent],\n template: `\n <div class=\"ul-avatar-group ul-avatar-group--{{this.size()}}\"\n [class.ul-avatar-group--stacked]=\"stacked()\"\n >\n @for (avatar of visibleAvatars(); track $index) {\n <ul-avatar\n [size]=\"size()\"\n [src]=\"avatar.src\"\n [initials]=\"avatar.initials\"\n [icon]=\"avatar.icon\"\n [alt]=\"avatar.alt || ''\"\n [class.ul-avatar-group__avatar]=\"!stacked() && $index > 0\"\n />\n }\n @if (remainingCount() > 0) {\n <div class=\"ul-avatar-group__overflow ul-avatar-group__overflow--{{this.size()}}\" \n [class.ul-avatar-group__overflow-avatar]=\"!stacked()\">\n <span class=\"ul-avatar-group__overflow-text\">+{{ remainingCount() }}</span>\n </div>\n }\n </div>\n `,\n styleUrls: ['./avatar-group.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AvatarGroupComponent {\n /** Array of avatar data to display */\n avatars = input.required<AvatarData[]>();\n\n /** The size of all avatars in the group */\n size = input<UiSize>('md');\n\n /** Maximum number of avatars to display before showing overflow indicator */\n maxVisible = input<number | null>(null);\n\n /** Whether avatars should overlap (stacked) or have spacing between them */\n stacked = input<boolean>(false);\n\n /** Computed list of visible avatars */\n readonly visibleAvatars = computed(() => {\n const max = this.maxVisible();\n const avatars = this.avatars();\n return max !== null && max > 0 ? avatars.slice(0, max) : avatars;\n });\n\n /** Computed count of remaining avatars not shown */\n readonly remainingCount = computed(() => {\n const max = this.maxVisible();\n if (max === null || max <= 0) return 0;\n return Math.max(0, this.avatars().length - max);\n });\n}\n","import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\nimport { IconComponent } from '../icon/icon';\n\nexport interface BreadcrumbItem {\n label: string;\n href?: string;\n routerLink?: string | any[];\n icon?: string;\n}\n\nexport type BreadcrumbSeparator = 'chevron_right' | 'slash' | 'dot';\n\n/**\n * Breadcrumb component for displaying navigation hierarchy.\n * Supports responsive collapsing on mobile devices and customizable separators.\n *\n * @example\n * ```html\n * <ul-breadcrumb\n * [items]=\"[\n * { label: 'Home', href: '/' },\n * { label: 'Products', href: '/products' },\n * { label: 'Current Page' }\n * ]\"\n * />\n * ```\n */\n@Component({\n selector: 'ul-breadcrumb',\n standalone: true,\n imports: [IconComponent, RouterLink],\n templateUrl: './breadcrumb.html',\n styleUrls: ['./breadcrumb.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class BreadcrumbComponent {\n /** Array of breadcrumb items to display */\n items = input.required<BreadcrumbItem[]>();\n\n /** Separator type between breadcrumb items */\n separator = input<BreadcrumbSeparator>('chevron_right');\n\n /** Maximum number of items to show before collapsing (for responsive behavior) */\n maxItems = input<number | undefined>(undefined);\n\n /** Check if an item is the last item */\n isLastItem(index: number): boolean {\n return index === this.items().length - 1;\n }\n\n /** Check if an item should be shown on mobile (first, last, or within maxItems) */\n shouldShowOnMobile(index: number): boolean {\n const items = this.items();\n const max = this.maxItems();\n if (!max || items.length <= max) return true;\n if (index === 0) return true; // Always show first\n if (index >= items.length - 2) return true; // Always show last 2\n return false;\n }\n\n /** Check if ellipsis should be shown on mobile */\n shouldShowEllipsisOnMobile(): boolean {\n const items = this.items();\n const max = this.maxItems();\n if (!max || items.length <= max) return false;\n return items.length > max + 1; // Show ellipsis if we're hiding items\n }\n}\n","<nav class=\"ul-breadcrumb\" aria-label=\"Breadcrumb\">\n <ol class=\"ul-breadcrumb__list\">\n @for (item of items(); track $index) {\n <li\n class=\"ul-breadcrumb__item\"\n [class.ul-breadcrumb__item--current]=\"isLastItem($index)\"\n [class.ul-breadcrumb__item--with-icon]=\"item.icon\"\n [class.ul-breadcrumb__item--hidden-mobile]=\"maxItems() && !shouldShowOnMobile($index)\"\n >\n @if (isLastItem($index)) {\n <span class=\"ul-breadcrumb__text\" aria-current=\"page\">\n @if (item.icon) {\n <ul-icon [icon]=\"item.icon\" size=\"5\" class=\"ul-breadcrumb__icon\" />\n }\n {{ item.label }}\n </span>\n } @else {\n @if (item.href) {\n <a [href]=\"item.href\" class=\"ul-breadcrumb__link\">\n @if (item.icon) {\n <ul-icon [icon]=\"item.icon\" size=\"5\" class=\"ul-breadcrumb__icon\" />\n }\n {{ item.label }}\n </a>\n } @else if (item.routerLink) {\n <a [routerLink]=\"item.routerLink\" class=\"ul-breadcrumb__link\">\n @if (item.icon) {\n <ul-icon [icon]=\"item.icon\" size=\"5\" class=\"ul-breadcrumb__icon\" />\n }\n {{ item.label }}\n </a>\n } @else {\n <span class=\"ul-breadcrumb__text\">\n @if (item.icon) {\n <ul-icon [icon]=\"item.icon\" size=\"5\" class=\"ul-breadcrumb__icon\" />\n }\n {{ item.label }}\n </span>\n }\n }\n\n @if (!isLastItem($index)) {\n <span class=\"ul-breadcrumb__separator\" aria-hidden=\"true\">\n @if (separator() === 'chevron_right') {\n <ul-icon icon=\"chevron_right\" size=\"5\" />\n } @else if (separator() === 'slash') {\n <span class=\"ul-breadcrumb__separator-text\">/</span>\n } @else if (separator() === 'dot') {\n <span class=\"ul-breadcrumb__separator-text\">·</span>\n }\n </span>\n }\n </li>\n }\n\n @if (shouldShowEllipsisOnMobile()) {\n <li class=\"ul-breadcrumb__item ul-breadcrumb__item--ellipsis\" aria-hidden=\"true\">\n <span class=\"ul-breadcrumb__ellipsis\">...</span>\n <span class=\"ul-breadcrumb__separator\" aria-hidden=\"true\">\n @if (separator() === 'chevron_right') {\n <ul-icon icon=\"chevron_right\" size=\"5\" />\n } @else if (separator() === 'slash') {\n <span class=\"ul-breadcrumb__separator-text\">/</span>\n } @else if (separator() === 'dot') {\n <span class=\"ul-breadcrumb__separator-text\">·</span>\n }\n </span>\n </li>\n }\n </ol>\n</nav>\n","export const CSS_PREFIX = 'ul-';\n","import { computed, Directive, input } from '@angular/core';\n\nimport { CSS_PREFIX } from '../../config';\nimport type { UiSize, UiTheme } from '../shared/ui-types';\n\n/**\n * Directive that applies styling and behavior to button elements.\n * @example\n * <button udsButton size=\"md\" theme=\"fill-purple\">Click me</button>\n */\n@Directive({\n selector: '[peButton]',\n standalone: true,\n host: {\n '[attr.role]': '\"button\"',\n '[class]': 'allClasses()',\n },\n})\nexport class ButtonDirective {\n private readonly baseClass = `${CSS_PREFIX}btn`;\n\n /** The size variant of the button */\n size = input<UiSize>('md');\n\n /** The theme variant of the button */\n theme = input<UiTheme>('fill-purple');\n\n /** Whether the button only contains an icon */\n iconOnly = input<boolean>(false);\n\n /** Whether the content should be stacked vertically */\n vertical = input<boolean>(false);\n\n /** Computed property for vertical state */\n protected shouldBeVertical = computed(() => this.vertical() && this.size() === 'lg');\n\n /** All computed classes based on current state */\n protected allClasses = computed(() => {\n const classes = [this.baseClass]; // Base class\n classes.push(`${this.baseClass}--${this.size()}`); // Size variant\n classes.push(`${this.baseClass}--${this.theme()}`); // Theme variant\n if (this.iconOnly()) {\n classes.push(`${this.baseClass}--icon-only`); // Icon only state\n }\n if (this.shouldBeVertical()) {\n classes.push(`${this.baseClass}--vertical`);\n }\n return classes;\n });\n}\n","import { ChangeDetectionStrategy, Component, input, output, ViewEncapsulation } from '@angular/core';\n\nimport { ButtonDirective } from './button.directive';\nimport type { UiSize, UiTheme } from '../shared/ui-types';\n\n/**\n * A reusable button component that supports various themes, sizes, and states.\n * @example\n * <uds-button size=\"md\" theme=\"fill-purple\">Click me</uds-button>\n */\n@Component({\n selector: 'ul-button',\n standalone: true,\n imports: [ButtonDirective],\n template: `\n <button\n peButton\n [attr.type]=\"type()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-disabled]=\"disabled()\"\n [size]=\"size()\"\n [theme]=\"theme()\"\n [iconOnly]=\"iconOnly()\"\n [vertical]=\"vertical()\"\n [disabled]=\"disabled()\"\n (click)=\"handleClick($event)\">\n <ng-content />\n </button>\n `,\n styleUrls: ['./button.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class ButtonComponent {\n /** The size of the button */\n size = input<UiSize>('md');\n\n /** The visual theme of the button */\n theme = input<UiTheme>('fill-purple');\n\n /** Whether the button only contains an icon */\n iconOnly = input<boolean>(false);\n\n /** Whether the button content should be stacked vertically (only applies to lg size) */\n vertical = input<boolean>(false);\n\n /** Whether the button is disabled */\n disabled = input<boolean>(false);\n\n /** The button type attribute */\n type = input<'button' | 'submit' | 'reset'>('button');\n\n /** Optional aria-label for accessibility */\n ariaLabel = input<string | undefined>(undefined);\n\n /** Click event emitter with proper type safety */\n buttonClick = output<MouseEvent>();\n\n /** Handles the click event and prevents it if button is disabled */\n protected handleClick(event: MouseEvent): void {\n if (this.disabled()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n this.buttonClick.emit(event);\n }\n}\n","/**\n * Generates unique IDs for form field elements (control, helper, error).\n * Use this so label `for`, helper `id`, and `aria-describedby` stay in sync.\n */\nexport function createFormFieldIds(prefix: string): {\n controlId: string;\n helperId: string;\n errorId: string;\n} {\n const id = `${prefix}-${Math.random().toString(36).slice(2, 11)}`;\n return {\n controlId: id,\n helperId: `${id}-helper`,\n errorId: `${id}-error`,\n };\n}\n\n/**\n * Builds the value for `aria-describedby` from helper and error IDs.\n */\nexport function getFormFieldDescribedBy(\n helperId: string,\n errorId: string,\n hasHelperText: boolean,\n hasError: boolean,\n hasErrorText: boolean\n): string | undefined {\n const ids: string[] = [];\n if (hasHelperText) ids.push(helperId);\n if (hasError && hasErrorText) ids.push(errorId);\n return ids.length > 0 ? ids.join(' ') : undefined;\n}\n","import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\nimport type { UiSize } from '../ui-types';\n\n/**\n * Shared label for form fields (input, select, textarea).\n * Renders label text and optional required indicator.\n */\n@Component({\n selector: 'ul-form-field-label',\n standalone: true,\n template: `\n @if (label()) {\n <label\n [attr.for]=\"for()\"\n class=\"ul-form-field__label ul-form-field__label--{{size()}}\"\n [class.ul-form-field__label--required]=\"required()\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"ul-form-field__required-indicator\" aria-hidden=\"true\" title=\"Required\"> * </span>\n }\n </label>\n }\n `,\n styleUrls: ['./form-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class FormFieldLabelComponent {\n readonly label = input<string | null>(null);\n readonly required = input<boolean>(false);\n readonly for = input<string>('');\n readonly size = input<UiSize>('md');\n}\n","import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\n/**\n * Shared helper/error text for form fields (input, select, textarea).\n * Shows error text when in error state, otherwise helper text.\n */\n@Component({\n selector: 'ul-form-field-helper',\n standalone: true,\n template: `\n <span\n [id]=\"id()\"\n class=\"ul-form-field__helper-text\"\n [class.ul-form-field__helper-text--error]=\"error()\"\n >\n @if (error() && errorText()) {\n {{ errorText() }}\n } @else {\n {{ helperText() }}\n }\n </span>\n `,\n styleUrls: ['./form-field.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class FormFieldHelperComponent {\n readonly id = input.required<string>();\n readonly helperText = input<string | null>(null);\n readonly errorText = input<string | null>(null);\n readonly error = input<boolean>(false);\n}\n","import { CdkMenu, CdkMenuTrigger } from '@angular/cdk/menu';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n model,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nimport {\n createFormFieldIds,\n FormFieldHelperComponent,\n FormFieldLabelComponent,\n getFormFieldDescribedBy,\n} from '../shared/form-field';\nimport { ButtonComponent } from '../button/button';\nimport { IconComponent } from '../icon/icon';\nimport type { IconSize } from '../icon/icon';\nimport type { UiSize } from '../shared/ui-types';\n\nexport type CalendarMode = 'date' | 'time' | 'datetime';\n\nexport interface CalendarDay {\n date: Date;\n isCurrentMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n isDisabled: boolean;\n}\n\nexport interface TimeSelection {\n hour: number;\n minute: number;\n}\n\n/**\n * Calendar component. Implements FormValueControl&lt;Date | null&gt; for Signal Forms [formField].\n * Use [(value)] or [formField]=\"myForm().date\". Form model field should be Date | null.\n */\n@Component({\n selector: 'ul-calendar',\n standalone: true,\n imports: [\n CdkMenuTrigger,\n CdkMenu,\n ButtonComponent,\n IconComponent,\n FormFieldLabelComponent,\n FormFieldHelperComponent,\n ],\n templateUrl: './calendar.html',\n styleUrls: ['./calendar.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class CalendarComponent implements FormValueControl<Date | null> {\n readonly mode = input<CalendarMode>('date');\n readonly value = model<Date | null>(null);\n readonly size = input<UiSize>('md');\n readonly error = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly readOnly = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly placeholder = input<string>('');\n readonly label = input<string | null>(null);\n readonly helperText = input<string | null>(null);\n readonly errorText = input<string | null>(null);\n readonly minDate = input<Date | null>(null);\n readonly maxDate = input<Date | null>(null);\n readonly minTime = input<Date | null>(null);\n readonly maxTime = input<Date | null>(null);\n readonly locale = input<string>('en-US');\n readonly showCalendarIcon = input<boolean>(true);\n\n readonly invalid = input<boolean>(false);\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n protected readonly ids = createFormFieldIds('ul-calendar');\n\n readonly isOpen = signal(false);\n readonly currentMonth = signal<Date>(new Date());\n readonly selectedTime = signal<TimeSelection | null>(null);\n\n readonly buttonSize = computed<UiSize>(() => {\n const size = this.size();\n\n if (size === 'sm') return 'sm';\n if (size === 'md') return 'md';\n if (size === 'lg') return 'lg';\n if (size === 'xl') return 'xl';\n\n return 'md';\n });\n\n readonly iconSize = computed<IconSize>(() => {\n const size = this.size();\n\n if (size === 'sm') return '6';\n if (size === 'md') return '7';\n if (size === 'lg') return '8';\n\n // xl calendar uses a slightly larger icon\n return '10';\n });\n\n readonly defaultPlaceholder = computed(() => {\n const mode = this.mode();\n if (this.placeholder()) return this.placeholder();\n if (mode === 'date') return 'Select date';\n if (mode === 'time') return 'Select time';\n return 'Select date and time';\n });\n\n readonly displayValue = computed(() => {\n const val = this.value();\n if (!val) return '';\n const mode = this.mode();\n const locale = this.locale();\n\n if (mode === 'date') {\n return new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n }).format(val);\n }\n\n if (mode === 'time') {\n return new Intl.DateTimeFormat(locale, {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }).format(val);\n }\n\n return new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }).format(val);\n });\n\n protected readonly hasError = computed(() => this.error() || this.invalid());\n\n protected readonly resolvedErrorText = computed(\n () =>\n this.errorText() ||\n (this.hasError() && this.errors().length ? (this.errors()[0]?.message ?? null) : null)\n );\n\n readonly describedBy = computed(() =>\n getFormFieldDescribedBy(\n this.ids.helperId,\n this.ids.errorId,\n !!this.helperText(),\n this.hasError(),\n !!this.resolvedErrorText()\n )\n );\n\n readonly calendarDays = computed<CalendarDay[]>(() => {\n const month = this.currentMonth();\n const selected = this.value();\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n const firstDay = new Date(month.getFullYear(), month.getMonth(), 1);\n const lastDay = new Date(month.getFullYear(), month.getMonth() + 1, 0);\n const startDate = new Date(firstDay);\n startDate.setDate(startDate.getDate() - startDate.getDay());\n\n const days: CalendarDay[] = [];\n const current = new Date(startDate);\n\n for (let i = 0; i < 42; i++) {\n const date = new Date(current);\n date.setHours(0, 0, 0, 0);\n\n const isCurrentMonth = date.getMonth() === month.getMonth();\n const isToday = date.getTime() === today.getTime();\n const isSelected =\n selected !== null &&\n date.getTime() === new Date(selected).setHours(0, 0, 0, 0);\n const isDisabled = this.isDateDisabled(date);\n\n days.push({\n date,\n isCurrentMonth,\n isToday,\n isSelected,\n isDisabled,\n });\n\n current.setDate(current.getDate() + 1);\n }\n\n return days;\n });\n\n readonly monthYearLabel = computed(() => {\n const month = this.currentMonth();\n return new Intl.DateTimeFormat(this.locale(), {\n month: 'long',\n year: 'numeric',\n }).format(month);\n });\n\n readonly hourOptions = computed(() => {\n const hours: number[] = [];\n for (let i = 0; i < 24; i++) {\n hours.push(i);\n }\n return hours;\n });\n\n readonly minuteOptions = computed(() => {\n const minutes: number[] = [];\n for (let i = 0; i < 60; i += 5) {\n minutes.push(i);\n }\n return minutes;\n });\n\n readonly selectedHour = computed(() => {\n const val = this.value();\n if (!val) return this.selectedTime()?.hour ?? 0;\n return val.getHours();\n });\n\n readonly selectedMinute = computed(() => {\n const val = this.value();\n if (!val) return this.selectedTime()?.minute ?? 0;\n return val.getMinutes();\n });\n\n readonly opened = output<void>();\n readonly closed = output<void>();\n\n constructor() {\n // Keep currentMonth and selectedTime in sync with the external value\n effect(() => {\n const val = this.value();\n if (val) {\n this.currentMonth.set(new Date(val.getFullYear(), val.getMonth(), 1));\n if (this.mode() !== 'date') {\n this.selectedTime.set({\n hour: val.getHours(),\n minute: val.getMinutes(),\n });\n }\n }\n });\n }\n\n /**\n * Closes the CDK menu by simulating an Escape key press.\n * This lets the CDK handle all focus and cleanup logic.\n */\n private closeMenuViaEscape(): void {\n const escapeEvent = new KeyboardEvent('keydown', {\n key: 'Escape',\n code: 'Escape',\n keyCode: 27,\n bubbles: true,\n cancelable: true,\n });\n\n document.dispatchEvent(escapeEvent);\n this.isOpen.set(false);\n this.closed.emit();\n }\n\n isDateDisabled(date: Date): boolean {\n const min = this.minDate();\n const max = this.maxDate();\n const dateOnly = new Date(date);\n dateOnly.setHours(0, 0, 0, 0);\n\n if (min) {\n const minOnly = new Date(min);\n minOnly.setHours(0, 0, 0, 0);\n if (dateOnly < minOnly) return true;\n }\n\n if (max) {\n const maxOnly = new Date(max);\n maxOnly.setHours(0, 0, 0, 0);\n if (dateOnly > maxOnly) return true;\n }\n\n return false;\n }\n\n isTimeDisabled(hour: number, minute: number): boolean {\n const min = this.minTime();\n const max = this.maxTime();\n if (!min && !max) return false;\n\n const testDate = new Date();\n testDate.setHours(hour, minute, 0, 0);\n\n if (min) {\n const minHour = min.getHours();\n const minMinute = min.getMinutes();\n if (hour < minHour || (hour === minHour && minute < minMinute)) {\n return true;\n }\n }\n\n if (max) {\n const maxHour = max.getHours();\n const maxMinute = max.getMinutes();\n if (hour > maxHour || (hour === maxHour && minute > maxMinute)) {\n return true;\n }\n }\n\n return false;\n }\n\n selectDate(date: Date): void {\n if (this.isDateDisabled(date)) return;\n\n const mode = this.mode();\n const currentValue = this.value();\n let newDate: Date;\n\n if (mode === 'date') {\n newDate = new Date(date);\n newDate.setHours(0, 0, 0, 0);\n } else if (mode === 'time') {\n const time = this.selectedTime();\n newDate = new Date(date);\n if (time) {\n newDate.setHours(time.hour, time.minute, 0, 0);\n } else {\n newDate.setHours(0, 0, 0, 0);\n }\n } else {\n const time = this.selectedTime() ?? {\n hour: currentValue?.getHours() ?? 0,\n minute: currentValue?.getMinutes() ?? 0,\n };\n newDate = new Date(date);\n newDate.setHours(time.hour, time.minute, 0, 0);\n }\n\n this.value.set(newDate);\n\n if (mode === 'date') {\n this.closeMenuViaEscape();\n }\n }\n\n selectTime(hour: number, minute: number): void {\n if (this.isTimeDisabled(hour, minute)) return;\n\n this.selectedTime.set({ hour, minute });\n\n const mode = this.mode();\n const currentValue = this.value();\n let newDate: Date;\n\n if (mode === 'time') {\n newDate = new Date();\n newDate.setHours(hour, minute, 0, 0);\n } else {\n const baseDate = currentValue ?? new Date();\n newDate = new Date(baseDate);\n newDate.setHours(hour, minute, 0, 0);\n }\n\n this.value.set(newDate);\n\n if (mode === 'time' || mode === 'datetime') {\n this.closeMenuViaEscape();\n }\n }\n\n previousMonth(): void {\n const current = this.currentMonth();\n const newMonth = new Date(current.getFullYear(), current.getMonth() - 1, 1);\n this.currentMonth.set(newMonth);\n }\n\n nextMonth(): void {\n const current = this.currentMonth();\n const newMonth = new Date(current.getFullYear(), current.getMonth() + 1, 1);\n this.currentMonth.set(newMonth);\n }\n\n selectToday(): void {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n this.selectDate(today);\n }\n\n clear(): void {\n this.value.set(null);\n this.selectedTime.set(null);\n }\n\n open(): void {\n if (this.disabled() || this.readOnly()) return;\n this.isOpen.set(true);\n this.opened.emit();\n }\n\n close(): void {\n this.isOpen.set(false);\n this.closed.emit();\n }\n\n onMenuOpened(): void {\n this.isOpen.set(true);\n this.opened.emit();\n }\n\n onMenuClosed(): void {\n this.isOpen.set(false);\n this.closed.emit();\n }\n\n focus(): void {\n const trigger = document.getElementById(this.ids.controlId);\n trigger?.focus();\n }\n}\n","<div\n class=\"ul-calendar ul-calendar--{{ mode() }} ul-calendar--{{ size() }}\"\n [class.ul-calendar--error]=\"hasError()\"\n [class.ul-calendar--disabled]=\"disabled()\"\n [class.ul-calendar--read-only]=\"readOnly()\"\n [class.ul-calendar--required]=\"required()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n>\n <ul-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"ids.controlId\"\n [size]=\"size()\"\n />\n\n <div class=\"ul-calendar__trigger-group\" [class.ul-calendar__trigger-group--focused]=\"isOpen()\">\n <button\n type=\"button\"\n [id]=\"ids.controlId\"\n class=\"ul-calendar__trigger\"\n [disabled]=\"disabled()\"\n [cdkMenuTriggerFor]=\"calendarMenu\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"ids.controlId + '-menu'\"\n (cdkMenuOpened)=\"onMenuOpened()\"\n (cdkMenuClosed)=\"onMenuClosed()\"\n >\n <span\n class=\"ul-calendar__trigger-text\"\n [class.ul-calendar__trigger-text--placeholder]=\"!displayValue()\"\n >\n @if (displayValue()) {\n {{ displayValue() }}\n } @else {\n {{ defaultPlaceholder() }}\n }\n </span>\n </button>\n\n @if (showCalendarIcon()) {\n <ul-button\n type=\"button\"\n theme=\"ghost-white\"\n [size]=\"buttonSize()\"\n [iconOnly]=\"true\"\n [disabled]=\"disabled()\"\n [cdkMenuTriggerFor]=\"calendarMenu\"\n class=\"ul-calendar__icon-button\"\n ariaLabel=\"Open calendar\"\n (cdkMenuOpened)=\"onMenuOpened()\"\n (cdkMenuClosed)=\"onMenuClosed()\"\n >\n <ul-icon icon=\"calendar\" [size]=\"iconSize()\" />\n </ul-button>\n }\n </div>\n\n <ul-form-field-helper\n [id]=\"ids.helperId\"\n [helperText]=\"helperText()\"\n [errorText]=\"resolvedErrorText()\"\n [error]=\"hasError()\"\n />\n\n <ng-template #calendarMenu>\n <div cdkMenu class=\"ul-calendar__popup\" [id]=\"ids.controlId + '-menu'\">\n @if (mode() === 'date' || mode() === 'datetime') {\n <div class=\"ul-calendar__date-picker\">\n <div class=\"ul-calendar__header\">\n <ul-button\n type=\"button\"\n theme=\"ghost-white\"\n [iconOnly]=\"true\"\n ariaLabel=\"Previous month\"\n (buttonClick)=\"previousMonth()\"\n >\n <ul-icon icon=\"chevron_left\" size=\"6\" />\n </ul-button>\n <div class=\"ul-calendar__month-year\">{{ monthYearLabel() }}</div>\n <ul-button\n type=\"button\"\n theme=\"ghost-white\"\n [iconOnly]=\"true\"\n ariaLabel=\"Next month\"\n (buttonClick)=\"nextMonth()\"\n >\n <ul-icon icon=\"chevron_right\" size=\"6\" />\n </ul-button>\n </div>\n\n <div class=\"ul-calendar__weekdays\">\n @for (day of ['S', 'M', 'T', 'W', 'T', 'F', 'S']; track $index) {\n <div class=\"ul-calendar__weekday\">{{ day }}</div>\n }\n </div>\n\n <div class=\"ul-calendar__days\">\n @for (day of calendarDays(); track day.date.getTime()) {\n <button\n type=\"button\"\n class=\"ul-calendar__day\"\n [class.ul-calendar__day--current-month]=\"day.isCurrentMonth\"\n [class.ul-calendar__day--today]=\"day.isToday\"\n [class.ul-calendar__day--selected]=\"day.isSelected\"\n [class.ul-calendar__day--disabled]=\"day.isDisabled\"\n [disabled]=\"day.isDisabled\"\n (click)=\"selectDate(day.date)\"\n >\n {{ day.date.getDate() }}\n </button>\n }\n </div>\n </div>\n }\n\n @if (mode() === 'time' || mode() === 'datetime') {\n <div class=\"ul-calendar__time-picker\">\n <div class=\"ul-calendar__time-controls\">\n <select\n class=\"ul-calendar__time-select\"\n [value]=\"selectedHour()\"\n (change)=\"selectTime(+$any($event.target).value, selectedMinute())\"\n >\n @for (hour of hourOptions(); track hour) {\n <option [value]=\"hour\" [disabled]=\"isTimeDisabled(hour, selectedMinute())\">\n {{ hour.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n <span class=\"ul-calendar__time-separator\">:</span>\n <select\n class=\"ul-calendar__time-select\"\n [value]=\"selectedMinute()\"\n (change)=\"selectTime(selectedHour(), +$any($event.target).value)\"\n >\n @for (minute of minuteOptions(); track minute) {\n <option [value]=\"minute\" [disabled]=\"isTimeDisabled(selectedHour(), minute)\">\n {{ minute.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n </div>\n </div>\n }\n\n <div class=\"ul-calendar__actions\">\n @if (mode() === 'date' || mode() === 'datetime') {\n <ul-button type=\"button\" theme=\"transparent-white\" (buttonClick)=\"selectToday()\">\n Today\n </ul-button>\n }\n @if (value()) {\n <ul-button type=\"button\" theme=\"transparent-white\" (buttonClick)=\"clear()\">\n Clear\n </ul-button>\n }\n </div>\n </div>\n </ng-template>\n</div>\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\nimport { SkeletonComponent } from '../skeleton/skeleton';\n\n// Card types\nexport type CardDirection = 'horizontal' | 'vertical';\nexport type CardCaptionSize = 'default' | 'sm';\nexport type ActionsDistribution = 'default' | 'equal';\nexport type MediaAspectRatio = 'default' | 'square' | 'portrait';\n\n@Component({\n selector: 'ul-card',\n standalone: true,\n imports: [SkeletonComponent],\n templateUrl: './card.html',\n styleUrls: ['./card.scss'],\n host: {\n class: 'ul-card',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[class.ul-card--focused]': 'focused()',\n '[class.ul-card--disabled]': 'disabled()',\n '[class.ul-card--horizontal]': 'cardDirection() === \"horizontal\"',\n '[class.ul-card--caption-sm]': 'cardCaptionSize() === \"sm\"',\n '[class.ul-card--footer-equal]': 'footerDist() === \"equal\"',\n '[class.ul-card--media-square]': 'mediaAspectRatio() === \"square\"',\n '[class.ul-card--media-portrait]': 'mediaAspectRatio() === \"portrait\"',\n '[class.ul-card--media-grayscale]': 'mediaGrayscale()',\n '[class.ul-card--loading]': 'loading()',\n '[class.ul-card--media-blurred]': 'mediaBlur()',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardComponent {\n // State inputs\n focused = input<boolean, boolean>(false, { transform: booleanAttribute });\n disabled = input<boolean, boolean>(false, { transform: booleanAttribute });\n\n // Layout inputs\n cardDirection = input<CardDirection>('vertical');\n cardCaptionSize = input<CardCaptionSize>('default');\n footerDist = input<ActionsDistribution>('default');\n\n // Media inputs\n mediaAspectRatio = input<MediaAspectRatio>('default');\n mediaBlur = input<boolean, boolean>(false, { transform: booleanAttribute });\n mediaGrayscale = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n\n // Content inputs\n cardCaption = input<string>('');\n cardTitle = input<string>('');\n cardTitleSingleLine = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n cardSubtitle = input<string>('');\n cardSubtitleSingleLine = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n\n // Loading state\n loading = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n}\n","@if (loading()) {\n <div class=\"ul-card__skeleton\">\n <div class=\"ul-card__media\">\n <ul-skeleton variant=\"rect\" borderRadius=\"lg\" [show]=\"true\" />\n </div>\n <div class=\"ul-card__content\">\n <div class=\"ul-card__content-title ul-card__content-title--single-line\">\n <ul-skeleton variant=\"text\" [lines]=\"2\" borderRadius=\"sm\" />\n </div>\n <div class=\"ul-card__content-subtitle ul-card__content-subtitle--single-line\">\n <ul-skeleton variant=\"text\" [lines]=\"1\" borderRadius=\"sm\" />\n </div>\n </div>\n </div>\n} @else {\n <div class=\"ul-card__media\">\n <ng-content select=\"[udsCardMedia]\" />\n <ng-content select=\"[udsCardMediaOverlay]\" />\n </div>\n <div class=\"ul-card__media-action\">\n <ng-content select=\"[udsCardMediaAction]\" />\n </div>\n\n <div class=\"ul-card__content\">\n @if (cardCaption()) {\n <div class=\"ul-card__content-caption\">\n {{ cardCaption() }}\n </div>\n }\n @if (cardTitle()) {\n <div\n class=\"ul-card__content-title\"\n [class.ul-card__content-title--single-line]=\"cardTitleSingleLine()\"\n >\n {{ cardTitle() }}\n </div>\n }\n @if (cardSubtitle()) {\n <div\n class=\"ul-card__content-subtitle\"\n [class.ul-card__content-subtitle--single-line]=\"cardSubtitleSingleLine()\"\n >\n {{ cardSubtitle() }}\n </div>\n }\n </div>\n\n <div class=\"ul-card__footer\">\n <ng-content select=\"[udsCardFooter]\" />\n </div>\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n effect,\n ElementRef,\n input,\n OnDestroy,\n output,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport Splide, { Options } from '@splidejs/splide';\n\n@Component({\n selector: 'ul-carousel-item',\n standalone: true,\n template: ` <ng-content /> `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'splide__slide ul-carousel__item',\n },\n})\nexport class CarouselItemComponent {}\n\n@Component({\n selector: 'ul-carousel',\n standalone: true,\n template: `\n <div class=\"splide ul-carousel\" #carousel role=\"region\" aria-roledescription=\"carousel\">\n <div class=\"splide__track ul-carousel__track\">\n <div class=\"splide__list\">\n <ng-content />\n </div>\n </div>\n </div>\n `,\n styleUrl: './carousel.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CarouselComponent implements AfterViewInit, OnDestroy {\n options = input<Options>({\n autoplay: true,\n });\n autoMount = input<boolean>(true);\n mounted = output<Splide>();\n\n private carousel = viewChild<ElementRef<HTMLElement>>('carousel');\n private items = contentChildren<CarouselItemComponent>(CarouselItemComponent);\n private instance: Splide | null = null;\n\n constructor() {\n effect(() => {\n this.items(); // trigger change detection\n this.updateCarouselOnItemsChange();\n });\n }\n\n ngAfterViewInit() {\n this.init();\n }\n\n ngOnDestroy() {\n this.instance?.destroy();\n }\n\n // Get the Splide instance\n getInstance() {\n return this.instance;\n }\n\n // Methods to control the carousel\n goNext() {\n this.instance?.go('>');\n }\n\n goPrev() {\n this.instance?.go('<');\n }\n\n goTo(index: number) {\n this.instance?.go(index);\n }\n\n // Mount the carousel\n mount() {\n if (!this.instance) {\n throw new Error('Carousel instance not found');\n }\n this.instance.mount();\n this.mounted.emit(this.instance);\n }\n\n private init() {\n const carousel = this.carousel();\n if (!carousel) {\n throw new Error('Carousel element not found');\n }\n // initialize the carousel\n this.instance = new Splide(carousel.nativeElement, {\n arrows: false,\n classes: {\n page: 'splide__pagination__page ul-carousel__pagination-dot',\n },\n ...this.options(),\n });\n // mount the carousel\n if (this.autoMount()) {\n this.mount();\n }\n }\n\n private updateCarouselOnItemsChange() {\n this.instance?.refresh();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport type { FormCheckboxControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nimport {\n createFormFieldIds,\n FormFieldHelperComponent,\n FormFieldLabelComponent,\n getFormFieldDescribedBy,\n} from '../shared/form-field';\nimport type { UiCheckboxSize } from '../shared/ui-types';\n\nexport type CheckboxZoneType = 'none' | 'accessible' | 'visible' | 'checked-visible';\n\n/**\n * Checkbox component. Implements FormCheckboxControl for Signal Forms [formField].\n * Use [(checked)] or [formField]=\"myForm().acceptTerms\". No value property.\n * Uses shared form field label and helper for alignment with input, textarea, radio-group.\n */\n@Component({\n selector: 'ul-checkbox',\n standalone: true,\n imports: [FormFieldLabelComponent, FormFieldHelperComponent],\n template: `\n <div\n class=\"ul-checkbox ul-checkbox--{{ size() }}\"\n [class.ul-checkbox--accessible-zone]=\"zone() === 'accessible'\"\n [class.ul-checkbox--visible-zone]=\"zone() === 'visible'\"\n [class.ul-checkbox--checked-visible-zone]=\"zone() === 'checked-visible'\"\n [class.ul-checkbox--error]=\"hasError()\"\n [class.ul-checkbox--disabled]=\"disabled()\"\n [class.ul-checkbox--required]=\"required()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n >\n <ul-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"ids.controlId\"\n [size]=\"size() === 'sm' ? 'sm' : 'md'\"\n />\n\n <label\n class=\"ul-checkbox__row\"\n [class.ul-checkbox__row--accessible-zone]=\"zone() === 'accessible'\"\n [class.ul-checkbox__row--visible-zone]=\"zone() === 'visible'\"\n [class.ul-checkbox__row--checked-visible-zone]=\"zone() === 'checked-visible'\"\n [class.ul-checkbox__row--sm]=\"size() === 'sm'\"\n [class.ul-checkbox__row--error]=\"hasError()\"\n [attr.for]=\"ids.controlId\"\n >\n <input\n type=\"checkbox\"\n class=\"ul-checkbox__input\"\n [id]=\"ids.controlId\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [indeterminate]=\"indeterminate()\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n (change)=\"onChange($event)\"\n />\n <span class=\"ul-checkbox__pseudo-input\"></span>\n <span class=\"ul-checkbox__label\">\n <ng-content />\n </span>\n </label>\n\n <ul-form-field-helper\n [id]=\"ids.helperId\"\n [helperText]=\"helperText()\"\n [errorText]=\"resolvedErrorText()\"\n [error]=\"hasError()\"\n />\n </div>\n `,\n styleUrls: ['./checkbox.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxComponent implements FormCheckboxControl {\n checked = model<boolean>(false);\n\n disabled = model<boolean>(false);\n indeterminate = model<boolean>(false);\n zone = input<CheckboxZoneType>('none');\n size = input<UiCheckboxSize>('default');\n label = input<string | null>(null);\n helperText = input<string | null>(null);\n required = input<boolean>(false);\n error = input<boolean>(false);\n errorText = input<string | null>(null);\n invalid = input<boolean>(false);\n errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n protected readonly ids = createFormFieldIds('ul-checkbox');\n protected readonly hasError = computed(() => this.error() || this.invalid());\n\n protected readonly resolvedErrorText = computed(\n () =>\n this.errorText() ||\n (this.hasError() && this.errors().length ? (this.errors()[0]?.message ?? null) : null)\n );\n\n protected readonly describedBy = computed(() =>\n getFormFieldDescribedBy(\n this.ids.helperId,\n this.ids.errorId,\n !!this.helperText(),\n this.hasError(),\n !!this.resolvedErrorText()\n )\n );\n\n onChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.checked.set(input.checked);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n model,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { ButtonComponent } from '../button/button';\nimport { IconComponent } from '../icon/icon';\n\nexport type CollapseVariant = 'text' | 'icon';\n\n/**\n * A collapsible content component that supports both text and icon variants.\n * Uses CSS transitions for smooth animations and provides accessibility features.\n *\n * @example\n * ```html\n * <ul-collapse [maxHeight]=\"300\" variant=\"text\">\n * <div>Collapsible content here</div>\n * </ul-collapse>\n * ```\n */\n@Component({\n selector: 'ul-collapse',\n standalone: true,\n imports: [ButtonComponent, IconComponent],\n template: `\n <div [class]=\"computedClasses()\">\n <div class=\"ul-collapse__content\" #content [attr.aria-expanded]=\"!collapsed()\" [attr.aria-hidden]=\"collapsed()\">\n <ng-content />\n </div>\n @if (isCollapsible()) {\n <div class=\"ul-collapse__toggle\">\n <ul-button\n theme=\"ghost-white\"\n [iconOnly]=\"variant() === 'icon'\"\n class=\"ul-collapse__toggle-button\"\n (click)=\"toggle()\"\n (keydown)=\"onToggleKeydown($event)\"\n [attr.aria-label]=\"collapsed() ? expandLabel() : collapseLabel()\">\n @if (variant() === 'text') {\n <span>\n {{ collapsed() ? expandLabel() : collapseLabel() }}\n </span>\n } @else if (variant() === 'icon') {\n <ul-icon size=\"6\" icon=\"chevron_up\" />\n }\n </ul-button>\n </div>\n }\n </div>\n `,\n styleUrls: ['./collapse.scss'],\n host: {\n '[style.--ul-collapse-max-height.px]': 'maxHeight()',\n '[style.--ul-collapse-full-height.px]': 'fullHeight()',\n role: 'region',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CollapseComponent implements AfterViewInit {\n private readonly destroyRef = inject(DestroyRef);\n\n @ViewChild('content') content!: ElementRef<HTMLDivElement>;\n\n /**\n * The visual variant of the collapse toggle.\n * @default 'text'\n */\n variant = input<CollapseVariant>('text');\n\n /**\n * Controls the collapsed state of the component.\n * @default true\n */\n collapsed = model<boolean>(true);\n\n /**\n * Maximum height of the content when collapsed.\n * @default 200\n */\n maxHeight = input.required<number>();\n\n /**\n * Custom label for the expand action.\n * @default 'See more'\n */\n expandLabel = input<string>('See more');\n\n /**\n * Custom label for the collapse action.\n * @default 'See less'\n */\n collapseLabel = input<string>('See less');\n\n /** Current full height of the content */\n fullHeight = signal<number>(0);\n\n /** Whether the content is collapsible based on its height */\n isCollapsible = computed(() => {\n const max = Math.max(0, this.maxHeight());\n return this.fullHeight() > max;\n });\n\n ngAfterViewInit() {\n // Initial height calculation\n this.updateFullHeight();\n\n // Listen for window resize events to recalculate height\n const resizeSubscription = fromEvent(window, 'resize')\n .pipe(debounceTime(100))\n .subscribe(() => this.updateFullHeight());\n\n this.destroyRef.onDestroy(() => resizeSubscription.unsubscribe());\n }\n\n /** Updates the full height of the content */\n private updateFullHeight(): void {\n if (this.content?.nativeElement) {\n this.fullHeight.set(this.content.nativeElement.scrollHeight);\n }\n }\n\n /** Toggles the collapsed state */\n toggle(): void {\n this.collapsed.set(!this.collapsed());\n }\n\n onToggleKeydown(event: KeyboardEvent): void {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.toggle();\n }\n }\n\n computedClasses = computed(() => {\n return {\n 'ul-collapse': true,\n 'ul-collapse--collapsed': this.isCollapsible() && this.collapsed(),\n };\n });\n}\n","import { ChangeDetectionStrategy, Component, contentChild, input } from '@angular/core';\n\nimport { CheckboxComponent } from '../checkbox/checkbox';\nimport { SkeletonComponent } from '../skeleton/skeleton';\n\nexport type ListItemTheme = 'ghost-white' | 'transparent-white' | 'outline-white' | 'outline-purple';\n\n@Component({\n selector: 'ul-list-item',\n standalone: true,\n imports: [SkeletonComponent],\n template: `\n <ul-skeleton [show]=\"loading()\" variant=\"rect\">\n <button\n class=\"ul-list-item ul-list-item--{{ theme() }}\"\n [class.ul-list-item--no-focus-outline]=\"hideFocusOutline()\"\n [class.ul-list-item--selected]=\"selected() || !!checkbox()?.checked\"\n (click)=\"clickHandler()\"\n [disabled]=\"disabled() || loading()\">\n <div class=\"ul-list-item__before-label\">\n <ng-content select=\"[ul-list-item-before-label]\"></ng-content>\n </div>\n <div class=\"ul-list-item__label\">\n <ng-content select=\"[ul-list-item-label]\"></ng-content>\n </div>\n <div class=\"ul-list-item__after-label\">\n <ng-content select=\"[ul-list-item-after-label]\"></ng-content>\n </div>\n </button>\n </ul-skeleton>\n `,\n styleUrls: ['./list-item.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListItemComponent {\n checkbox = contentChild<CheckboxComponent>(CheckboxComponent);\n\n theme = input<ListItemTheme>('ghost-white');\n disabled = input<boolean>(false);\n hideFocusOutline = input<boolean>(false);\n selected = input<boolean>(false);\n\n loading = input<boolean>(false);\n\n clickHandler() {\n if (this.disabled() || this.loading()) {\n return;\n }\n\n if (!this.disabled()) {\n this.checkbox()?.checked.update((value) => !value);\n }\n }\n}\n","import { CdkMenu, CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ButtonComponent } from '../button/button';\nimport { IconComponent, IconName } from '../icon/icon';\nimport { ListItemComponent, ListItemTheme } from '../list-item/list-item';\n\n/**\n * Represents a single item in the dropdown menu.\n */\nexport type DropdownItem = {\n /** Display text for the dropdown item */\n label: string;\n /** Optional value associated with the item */\n value?: string;\n /** Icons to display on the left side of the item */\n leftIcons?: IconName[];\n /** Icons to display on the right side of the item */\n rightIcons?: IconName[];\n /** Whether the item is disabled and cannot be selected */\n disabled?: boolean;\n};\n\n/**\n * A customizable dropdown component that displays a list of selectable items.\n *\n * Features:\n * - Configurable themes (ghost-white, transparent-white)\n * - Icon support for items and trigger button\n * - Customizable trigger appearance\n * - Disabled item support\n * - Two-way binding for selected item\n *\n * @example\n * ```html\n * <!-- Basic usage -->\n * <uds-dropdown\n * [items]=\"dropdownItems\"\n * [theme]=\"'transparent-white'\"\n * (selectedItemChange)=\"onItemSelected($event)\">\n * </uds-dropdown>\n *\n * <!-- More options menu -->\n * <uds-dropdown\n * [items]=\"actionItems\"\n * [onlyMenuTriggerIcon]=\"'more_options'\">\n * </uds-dropdown>\n * ```\n */\n@Component({\n selector: 'ul-dropdown',\n standalone: true,\n imports: [CdkMenuTrigger, CdkMenu, CdkMenuItem, NgTemplateOutlet, ListItemComponent, IconComponent, ButtonComponent],\n templateUrl: './dropdown.html',\n styleUrls: ['./dropdown.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DropdownComponent {\n /**\n * The visual theme for the dropdown.\n * @default 'ghost-white'\n */\n theme = input<ListItemTheme>('ghost-white');\n\n /**\n * Array of items to display in the dropdown menu.\n * @default []\n */\n items = input<DropdownItem[]>([]);\n\n /**\n * Whether the dropdown is disabled.\n * @default false\n */\n disabled = input<boolean>(false);\n\n /**\n * Overrides the icons of the selected item in the trigger button.\n * Can override leftIcons, rightIcons, or both.\n * @default {}\n *\n * @example\n * ```typescript\n * menuTriggerIcons = {\n * chevron_down\n * }\n * ```\n */\n menuTriggerIcons = input<Pick<DropdownItem, 'leftIcons' | 'rightIcons'>>({\n rightIcons: ['chevron_down'],\n });\n\n /**\n * Shows only a single icon in the trigger button, hiding the selected item's label and icons.\n * Commonly used with 'more_options' for action menus.\n * @default undefined\n *\n * @example\n * ```typescript\n * triggerIconOnly = 'more_options'\n * ```\n */\n triggerIconOnly = input<IconName>();\n\n /**\n * Accessible label for the icon-only trigger button.\n * @default 'Open menu'\n */\n iconOnlyLabel = input<string>('Open menu');\n\n /**\n * The index of the currently selected item.\n * Supports two-way binding with [(selectedIndex)].\n * @default 0\n */\n selectedIndex = model<number>(0);\n\n /**\n * The currently selected item with any trigger icon overrides applied.\n */\n selectedItem = computed(() => {\n const items = this.items();\n const index = this.selectedIndex();\n const fallback: DropdownItem = {\n label: '',\n value: undefined,\n leftIcons: [],\n rightIcons: [],\n disabled: false,\n };\n const item = items[index] ?? items[0] ?? fallback;\n\n return {\n ...item,\n ...this.menuTriggerIcons(),\n };\n });\n\n /**\n * Right icons for the trigger: when default is chevron_down, shows chevron_down when closed\n * and chevron_up when open. Otherwise uses selectedItem().rightIcons as-is.\n */\n triggerRightIcons = computed(() => {\n const right = this.selectedItem().rightIcons ?? [];\n const open = this.isOpen();\n if (right.length === 1 && right[0] === 'chevron_down') {\n return open ? (['chevron_up'] as IconName[]) : (['chevron_down'] as IconName[]);\n }\n return right;\n });\n\n /**\n * Tracks whether the menu is currently open for ARIA.\n */\n isOpen = signal(false);\n\n /**\n * Stable id used to link the trigger to the menu container.\n */\n readonly menuId = `ul-dropdown-menu-${Math.random().toString(36).slice(2, 11)}`;\n\n /**\n * Emitted when a new item is selected from the dropdown.\n */\n selectedItemChange = output<DropdownItem>();\n\n /**\n * Handles the selection of a dropdown item.\n * @param index - The index of the selected item\n */\n handleItemTriggered(index: number) {\n this.selectedIndex.set(index);\n this.selectedItemChange.emit(this.items()[index]);\n }\n\n onMenuOpened(): void {\n this.isOpen.set(true);\n }\n\n onMenuClosed(): void {\n this.isOpen.set(false);\n }\n}\n","<div class=\"ul-dropdown\">\n <!-- Template for rendering icon arrays -->\n <ng-template #renderIcons let-icons>\n @for (icon of icons; track icon) {\n <ul-icon size=\"5\" [icon]=\"icon\" />\n }\n </ng-template>\n\n @if (triggerIconOnly(); as iconName) {\n <ul-button\n [theme]=\"theme()\"\n [iconOnly]=\"true\"\n [disabled]=\"disabled()\"\n [cdkMenuTriggerFor]=\"menu\"\n class=\"ul-dropdown__trigger\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"menuId\"\n [attr.aria-label]=\"iconOnlyLabel()\"\n (cdkMenuOpened)=\"onMenuOpened()\"\n (cdkMenuClosed)=\"onMenuClosed()\"\n >\n <ul-icon [icon]=\"iconName\" />\n </ul-button>\n } @else {\n <ul-list-item\n [theme]=\"theme()\"\n [disabled]=\"disabled()\"\n [cdkMenuTriggerFor]=\"menu\"\n class=\"ul-dropdown__trigger\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"menuId\"\n (cdkMenuOpened)=\"onMenuOpened()\"\n (cdkMenuClosed)=\"onMenuClosed()\"\n >\n <ng-container ul-list-item-before-label>\n @if (selectedItem().leftIcons) {\n <ng-container\n *ngTemplateOutlet=\"renderIcons; context: { $implicit: selectedItem().leftIcons }\"\n />\n }\n </ng-container>\n <ng-container ul-list-item-label>\n {{ selectedItem().label }}\n </ng-container>\n <ng-container ul-list-item-after-label>\n <ng-container\n *ngTemplateOutlet=\"renderIcons; context: { $implicit: triggerRightIcons() }\"\n />\n </ng-container>\n </ul-list-item>\n }\n\n <ng-template #menu>\n <div cdkMenu class=\"ul-dropdown__content ul-scrollable\" [id]=\"menuId\">\n @for (item of items(); track $index) {\n <ul-list-item\n cdkMenuItem\n (cdkMenuItemTriggered)=\"handleItemTriggered($index)\"\n [disabled]=\"!!item.disabled\"\n role=\"menuitemradio\"\n [attr.aria-checked]=\"selectedIndex() === $index ? 'true' : 'false'\"\n >\n <ng-container ul-list-item-before-label>\n <ng-container *ngTemplateOutlet=\"renderIcons; context: { $implicit: item.leftIcons }\" />\n </ng-container>\n <ng-container ul-list-item-label>{{ item.label }}</ng-container>\n <ng-container ul-list-item-after-label>\n <ng-container\n *ngTemplateOutlet=\"renderIcons; context: { $implicit: item.rightIcons }\"\n />\n @if (selectedIndex() === $index) {\n <ul-icon size=\"5\" icon=\"check\" />\n }\n </ng-container>\n </ul-list-item>\n }\n </div>\n </ng-template>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nimport {\n createFormFieldIds,\n FormFieldHelperComponent,\n FormFieldLabelComponent,\n getFormFieldDescribedBy,\n} from '../shared/form-field';\nimport type { UiSize } from '../shared/ui-types';\n\n/** Border and hover style: border-only (hover = border only), subtle-tint (hover = border + 5% fill). */\nexport type FileInputAppearance = 'border-only' | 'subtle-tint';\n\n/**\n * File input component with label, helper/error text, and optional slots.\n * Implements FormValueControl<FileList | null> for use with Signal Forms [formField].\n *\n * Uses hidden native file input + visible trigger + selected file label.\n * Content projection: [ul-file-input-left-elements], [ul-file-input-right-elements].\n */\n@Component({\n selector: 'ul-file-input',\n standalone: true,\n imports: [FormFieldLabelComponent, FormFieldHelperComponent],\n templateUrl: './file-input.html',\n styleUrls: ['./file-input.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FileInputComponent implements FormValueControl<FileList | null> {\n readonly size = input<UiSize>('md');\n readonly appearance = input<FileInputAppearance>('border-only');\n readonly accept = input<string>('');\n readonly multiple = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly label = input<string | null>(null);\n readonly helperText = input<string | null>(null);\n readonly errorText = input<string | null>(null);\n /** Placeholder when no file is selected (e.g. \"Choose file\" or \"No file chosen\"). */\n readonly placeholderText = input<string>('No file chosen');\n readonly controlId = input<string | undefined>();\n\n readonly invalid = input<boolean>(false);\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n readonly touched = model<boolean>(false);\n readonly error = input<boolean>(false);\n\n readonly value = model<FileList | null>(null);\n\n protected readonly fileInputRef = viewChild<ElementRef<HTMLInputElement>>('fileInput');\n\n protected readonly ids = createFormFieldIds('ul-file-input');\n protected readonly effectiveControlId = computed(() => this.controlId() ?? this.ids.controlId);\n protected readonly effectiveHelperId = computed(() =>\n this.controlId() ? `${this.controlId()}-helper` : this.ids.helperId\n );\n protected readonly effectiveErrorId = computed(() =>\n this.controlId() ? `${this.controlId()}-error` : this.ids.errorId\n );\n protected readonly isFocused = signal(false);\n protected readonly hasError = computed(() => this.error() || this.invalid());\n\n protected readonly describedBy = computed(() =>\n getFormFieldDescribedBy(\n this.effectiveHelperId(),\n this.effectiveErrorId(),\n !!this.helperText(),\n this.hasError(),\n !!this.errorText() || this.errors().length > 0\n )\n );\n\n /** Display text for selected file(s). */\n protected readonly selectedLabel = computed(() => {\n const files = this.value();\n if (!files?.length) return this.placeholderText();\n if (files.length === 1) return files[0].name;\n return `${files.length} files selected`;\n });\n\n readonly inputBlur = output<FocusEvent>();\n readonly inputFocus = output<FocusEvent>();\n\n constructor() {\n effect(() => {\n if (this.value() === null) {\n const el = this.fileInputRef()?.nativeElement;\n if (el) el.value = '';\n }\n });\n }\n\n onFileChange(event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n const fileList = inputEl.files;\n const next = fileList && fileList.length > 0 ? fileList : null;\n this.value.set(next);\n }\n\n onBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.touched.set(true);\n this.inputBlur.emit(event);\n }\n\n onFocus(event: FocusEvent): void {\n this.isFocused.set(true);\n this.inputFocus.emit(event);\n }\n\n triggerClick(): void {\n if (this.disabled()) return;\n this.fileInputRef()?.nativeElement?.click();\n }\n\n focus(): void {\n const el = document.getElementById(this.effectiveControlId());\n if (el instanceof HTMLInputElement) el.focus();\n }\n}\n","<div\n class=\"ul-file-input ul-file-input--{{ size() }} ul-file-input--appearance-{{ appearance() }}\"\n [class.ul-file-input--error]=\"hasError()\"\n [class.ul-file-input--disabled]=\"disabled()\"\n [class.ul-file-input--required]=\"required()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n>\n <ul-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"effectiveControlId()\"\n [size]=\"size()\"\n />\n\n <div class=\"ul-file-input__group\" [class.ul-file-input__group--focused]=\"isFocused()\">\n <div class=\"ul-file-input__left-elements\">\n <ng-content select=\"[ul-file-input-left-elements]\" />\n </div>\n\n <input\n #fileInput\n [id]=\"effectiveControlId()\"\n type=\"file\"\n class=\"ul-file-input__native\"\n [accept]=\"accept()\"\n [multiple]=\"multiple()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n (change)=\"onFileChange($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n />\n\n <button\n type=\"button\"\n class=\"ul-file-input__trigger\"\n [disabled]=\"disabled()\"\n (click)=\"triggerClick()\"\n >\n Choose file\n </button>\n <span class=\"ul-file-input__label\">{{ selectedLabel() }}</span>\n\n <div class=\"ul-file-input__right-elements\">\n <ng-content select=\"[ul-file-input-right-elements]\" />\n </div>\n </div>\n\n <ul-form-field-helper\n [id]=\"effectiveHelperId()\"\n [helperText]=\"helperText()\"\n [errorText]=\"errorText() || (hasError() && errors().length ? errors()[0].message : '') || null\"\n [error]=\"hasError()\"\n />\n</div>\n","import { Component, input } from '@angular/core';\nimport { ButtonComponent } from '../button/button';\nimport { IconComponent, IconName } from '../icon/icon';\n\n@Component({\n selector: 'ul-footer',\n templateUrl: 'footer.html',\n styleUrls: ['./footer.scss'],\n imports: [ButtonComponent, IconComponent],\n standalone: true,\n})\nexport class FooterComponent {\n copyrightText = input('');\n socialLinks = input<{ url: string; icon: IconName }[]>([]);\n links = input<{ url: string; text: string }[]>([]);\n}\n","<div class=\"ul-footer\">\n <p class=\"ul-footer__copyright\">\n {{ copyrightText() }}\n </p>\n @if (socialLinks()) {\n <ul class=\"ul-footer__social-links\">\n @for (link of socialLinks(); track link.url) {\n <li>\n <ul-button [theme]=\"'ghost-white'\" [iconOnly]=\"true\" [disabled]=\"false\">\n <ul-icon [icon]=\"link.icon\" />\n </ul-button>\n </li>\n }\n </ul>\n }\n @for (link of links(); track link.url) {\n <a [href]=\"link.url\" class=\"ul-link ul-body-m--medium\">{{ link.text }}</a>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\nimport { ButtonComponent } from '../button/button';\nimport { IconComponent } from '../icon/icon';\n\nexport type PillSize = 'md' | 'lg';\n\nexport type PillVariant = 'interactive' | 'interactive-rounded' | 'read-only' | 'dismissible' | 'selectable';\n\nexport type PillTheme =\n | 'fill-white'\n | 'fill-black'\n | 'fill-purple'\n | 'fill-red'\n | 'fill-green'\n | 'transparent-white'\n | 'transparent-purple'\n | 'transparent-red'\n | 'transparent-green'\n | 'stroke-white'\n | 'outline-white'\n | 'outline-purple'\n | 'outline-red'\n | 'outline-green';\n\n@Component({\n selector: 'ul-pill',\n standalone: true,\n imports: [CommonModule, ButtonComponent, IconComponent],\n templateUrl: './pill.html',\n styleUrls: ['./pill.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PillComponent {\n variant = input<PillVariant>('interactive');\n theme = input<PillTheme>('transparent-white');\n size = input<PillSize>('md');\n disabled = input<boolean>(false);\n\n dismiss = output<void>();\n\n dismissibleButtonTheme = computed(() => {\n const t = this.theme();\n if (t === 'transparent-purple' || t === 'outline-purple') return 'ghost-purple';\n if (t === 'outline-red') return 'ghost-red';\n if (t === 'outline-green') return 'ghost-green';\n return 'ghost-white';\n });\n\n modifierClass = computed(() => {\n const classes = ['ul-pill', `ul-pill--${this.variant()}`, `ul-pill--${this.theme()}`, `ul-pill--${this.size()}`];\n\n if (this.disabled()) {\n classes.push('ul-pill--disabled');\n }\n\n return classes;\n });\n}\n","@if (variant() === 'selectable') {\n <label [class]=\"modifierClass()\" [class.ul-pill--disabled]=\"disabled()\">\n <input type=\"checkbox\" class=\"ul-pill__checkbox\" />\n <ng-container *ngTemplateOutlet=\"content\" />\n </label>\n} @else if (['dismissible', 'read-only'].includes(variant())) {\n <div [class]=\"modifierClass()\" [class.ul-pill--disabled]=\"disabled()\">\n <ng-container *ngTemplateOutlet=\"content\" />\n @if (variant() === 'dismissible') {\n <ul-button\n [theme]=\"dismissibleButtonTheme()\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [disabled]=\"disabled()\"\n (click)=\"dismiss.emit()\"\n >\n <ul-icon icon=\"close\" />\n </ul-button>\n }\n </div>\n} @else if (['interactive', 'interactive-rounded'].includes(variant())) {\n <button [class]=\"modifierClass()\" [disabled]=\"disabled()\">\n <ng-container *ngTemplateOutlet=\"content\" />\n </button>\n}\n\n<ng-template #content>\n <ng-content />\n</ng-template>\n","import { Directive } from '@angular/core';\n\n/** Place on the element projected into [ul-hero-badges] so the hero can detect custom badges content. */\n@Directive({\n selector: '[ul-hero-badges]',\n standalone: true,\n})\nexport class PeHeroBadgesSlotDirective {}\n\n/** Place on the element projected into [ul-hero-title] so the hero can detect custom title content. */\n@Directive({\n selector: '[ul-hero-title]',\n standalone: true,\n})\nexport class PeHeroTitleSlotDirective {}\n\n/** Place on the element projected into [ul-hero-subtitle] so the hero can detect custom subtitle content. */\n@Directive({\n selector: '[ul-hero-subtitle]',\n standalone: true,\n})\nexport class PeHeroSubtitleSlotDirective {}\n\n/** Place on the element projected into [ul-hero-actions] so the hero can detect custom actions content. */\n@Directive({\n selector: '[ul-hero-actions]',\n standalone: true,\n})\nexport class PeHeroActionsSlotDirective {}\n\n/** Place on the element projected into [ul-hero-content] for optional extra content (e.g. between subtitle and actions). */\n@Directive({\n selector: '[ul-hero-content]',\n standalone: true,\n})\nexport class PeHeroContentSlotDirective {}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\nimport type { UiSize, UiTheme } from '../shared/ui-types';\nimport { ButtonComponent } from '../button/button';\nimport { IconComponent } from '../icon/icon';\nimport { PillComponent } from '../pill/pill';\n\nimport {\n PeHeroActionsSlotDirective,\n PeHeroBadgesSlotDirective,\n PeHeroContentSlotDirective,\n PeHeroSubtitleSlotDirective,\n PeHeroTitleSlotDirective,\n} from './hero-slot.directive';\n\nexport interface HeroAction {\n label: string;\n href?: string;\n routerLink?: string | string[];\n icon?: string;\n theme?: UiTheme;\n size?: UiSize;\n}\n\nexport type HeroAlignment = 'left' | 'center' | 'right';\nexport type HeroSize = 'sm' | 'md' | 'lg';\n\n/**\n * Hero component for displaying prominent hero sections with title, description,\n * call-to-action buttons, optional badges, and background image support.\n * Fully responsive across mobile, tablet, and desktop.\n *\n * When slots are not projected, inputs are used (title, subtitle, badges, primaryAction, secondaryAction).\n * Content projection slots: ul-hero-badges, ul-hero-title, ul-hero-subtitle, ul-hero-actions, ul-hero-content.\n *\n * @example\n * ```html\n * <ul-hero\n * title=\"Welcome\"\n * subtitle=\"Build amazing experiences\"\n * [primaryAction]=\"{ label: 'Get Started', href: '/signup' }\"\n * [badges]=\"['New', 'Featured']\"\n * />\n * ```\n */\n@Component({\n selector: 'ul-hero',\n standalone: true,\n imports: [ButtonComponent, IconComponent, PillComponent, RouterLink],\n templateUrl: './hero.html',\n styleUrls: ['./hero.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class HeroComponent {\n /** Main headline text */\n title = input.required<string>();\n\n /** Supporting description text */\n subtitle = input<string | undefined>(undefined);\n\n /** Primary call-to-action button */\n primaryAction = input<HeroAction | undefined>(undefined);\n\n /** Secondary call-to-action button */\n secondaryAction = input<HeroAction | undefined>(undefined);\n\n /** Badge/pill labels to display above the title */\n badges = input<string[]>([]);\n\n /** Background image URL */\n backgroundImage = input<string | undefined>(undefined);\n\n /**\n * CSS gradient or color for the overlay on top of the background image.\n * E.g. \"linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.7) 100%)\" or \"rgba(0,0,0,0.5)\".\n * When unset, a default dark overlay is used when a background image is present.\n */\n backgroundOverlayGradient = input<string | undefined>(undefined);\n\n /**\n * CSS filter applied to the background image (e.g. \"brightness(0.8)\", \"blur(2px)\", \"grayscale(0.3)\").\n * Combine multiple: \"brightness(0.7) contrast(1.1)\".\n */\n backgroundFilter = input<string | undefined>(undefined);\n\n /** Text and content alignment */\n alignment = input<HeroAlignment>('center');\n\n /** Hero section size variant */\n size = input<HeroSize>('md');\n\n /** Whether hero takes full viewport height */\n fullHeight = input<boolean>(false);\n\n readonly badgesSlot = contentChild(PeHeroBadgesSlotDirective);\n readonly titleSlot = contentChild(PeHeroTitleSlotDirective);\n readonly subtitleSlot = contentChild(PeHeroSubtitleSlotDirective);\n readonly actionsSlot = contentChild(PeHeroActionsSlotDirective);\n readonly contentSlot = contentChild(PeHeroContentSlotDirective);\n\n readonly hasBadgesSlot = computed(() => !!this.badgesSlot());\n readonly hasTitleSlot = computed(() => !!this.titleSlot());\n readonly hasSubtitleSlot = computed(() => !!this.subtitleSlot());\n readonly hasActionsSlot = computed(() => !!this.actionsSlot());\n readonly hasContentSlot = computed(() => !!this.contentSlot());\n}\n","<section\n class=\"ul-hero ul-hero-alignment-{{ alignment() }} ul-hero-size-{{ size() }}\"\n role=\"banner\"\n [attr.aria-label]=\"title()\"\n [class.ul-hero--full-height]=\"fullHeight()\"\n [class.ul-hero--has-background]=\"!!backgroundImage()\"\n>\n @if (backgroundImage()) {\n <div\n class=\"ul-hero__background\"\n [style.background-image]=\"'url(' + backgroundImage() + ')'\"\n [style.filter]=\"backgroundFilter() || null\"\n aria-hidden=\"true\"\n ></div>\n <div\n class=\"ul-hero__overlay\"\n [style.background]=\"backgroundOverlayGradient() || 'rgba(0, 0, 0, 0.4)'\"\n aria-hidden=\"true\"\n ></div>\n }\n\n <div class=\"ul-hero__content\">\n @if (hasBadgesSlot()) {\n <div class=\"ul-hero__badges\">\n <ng-content select=\"[ul-hero-badges]\" />\n </div>\n } @else if (badges().length) {\n <div class=\"ul-hero__badges\">\n @for (badge of badges(); track badge) {\n <ul-pill variant=\"read-only\" theme=\"transparent-white\" size=\"md\">\n {{ badge }}\n </ul-pill>\n }\n </div>\n }\n\n @if (hasTitleSlot()) {\n <div class=\"ul-hero__title\">\n <ng-content select=\"[ul-hero-title]\" />\n </div>\n } @else {\n <h1 class=\"ul-hero__title\">{{ title() }}</h1>\n }\n\n @if (hasSubtitleSlot()) {\n <div class=\"ul-hero__subtitle\">\n <ng-content select=\"[ul-hero-subtitle]\" />\n </div>\n } @else if (subtitle()) {\n <p class=\"ul-hero__subtitle\">{{ subtitle() }}</p>\n }\n\n @if (hasContentSlot()) {\n <div class=\"ul-hero__extra\">\n <ng-content select=\"[ul-hero-content]\" />\n </div>\n }\n\n @if (hasActionsSlot()) {\n <div class=\"ul-hero__actions\">\n <ng-content select=\"[ul-hero-actions]\" />\n </div>\n } @else if (primaryAction() || secondaryAction()) {\n <div class=\"ul-hero__actions\">\n @if (primaryAction()) {\n @if (primaryAction()!.href) {\n <a [href]=\"primaryAction()!.href\" class=\"ul-hero__action-link\">\n <ul-button\n [theme]=\"primaryAction()!.theme ?? 'fill-purple'\"\n [size]=\"primaryAction()!.size ?? 'md'\"\n >\n @if (primaryAction()!.icon) {\n <ul-icon [icon]=\"primaryAction()!.icon!\" size=\"6\" />\n }\n {{ primaryAction()!.label }}\n </ul-button>\n </a>\n } @else if (primaryAction()!.routerLink) {\n <a [routerLink]=\"primaryAction()!.routerLink\" class=\"ul-hero__action-link\">\n <ul-button\n [theme]=\"primaryAction()!.theme ?? 'fill-purple'\"\n [size]=\"primaryAction()!.size ?? 'md'\"\n >\n @if (primaryAction()!.icon) {\n <ul-icon [icon]=\"primaryAction()!.icon!\" size=\"6\" />\n }\n {{ primaryAction()!.label }}\n </ul-button>\n </a>\n } @else {\n <ul-button\n [theme]=\"primaryAction()!.theme ?? 'fill-purple'\"\n [size]=\"primaryAction()!.size ?? 'md'\"\n >\n @if (primaryAction()!.icon) {\n <ul-icon [icon]=\"primaryAction()!.icon!\" size=\"6\" />\n }\n {{ primaryAction()!.label }}\n </ul-button>\n }\n }\n @if (secondaryAction()) {\n @if (secondaryAction()!.href) {\n <a [href]=\"secondaryAction()!.href\" class=\"ul-hero__action-link\">\n <ul-button theme=\"ghost-white\" [size]=\"secondaryAction()!.size ?? 'md'\">\n @if (secondaryAction()!.icon) {\n <ul-icon [icon]=\"secondaryAction()!.icon!\" size=\"6\" />\n }\n {{ secondaryAction()!.label }}\n </ul-button>\n </a>\n } @else if (secondaryAction()!.routerLink) {\n <a [routerLink]=\"secondaryAction()!.routerLink\" class=\"ul-hero__action-link\">\n <ul-button\n [theme]=\"secondaryAction()!.theme ?? 'ghost-white'\"\n [size]=\"secondaryAction()!.size ?? 'md'\"\n >\n @if (secondaryAction()!.icon) {\n <ul-icon [icon]=\"secondaryAction()!.icon!\" size=\"6\" />\n }\n {{ secondaryAction()!.label }}\n </ul-button>\n </a>\n } @else {\n <ul-button\n [theme]=\"secondaryAction()!.theme ?? 'ghost-white'\"\n [size]=\"secondaryAction()!.size ?? 'md'\"\n >\n @if (secondaryAction()!.icon) {\n <ul-icon [icon]=\"secondaryAction()!.icon!\" size=\"6\" />\n }\n {{ secondaryAction()!.label }}\n </ul-button>\n }\n }\n </div>\n }\n </div>\n</section>\n","import { Directive, input, signal } from '@angular/core';\n/**\n * Directive to handle image loading errors and display placeholders\n */\n@Directive({\n selector: '[peCatchImageNotFound]',\n host: {\n '(load)': 'handleLoad()',\n '(error)': 'handleError()',\n '[class.ul-image--not-found]': 'imageNotFound()',\n '[style.visibility]': 'visibility()',\n },\n})\nexport class ImageNotFoundDirective {\n // Controls whether to show a placeholder when image fails to load\n showPlaceholder = input<boolean>(true);\n\n // Signal to track if image failed to load\n imageNotFound = signal<boolean>(false);\n // Signal to control alt and icon visibility of broken images.\n visibility = signal<string>('hidden');\n\n /**\n * Handles image loading errors\n * Hides the image and optionally shows placeholder\n */\n handleError() {\n this.visibility.set('hidden');\n if (this.showPlaceholder()) {\n this.imageNotFound.set(true);\n }\n }\n\n /**\n * Handles successful image load\n * Shows the image and removes placeholder\n */\n handleLoad() {\n this.imageNotFound.set(false);\n this.visibility.set('visible');\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model, output, signal } from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nimport {\n createFormFieldIds,\n FormFieldHelperComponent,\n FormFieldLabelComponent,\n getFormFieldDescribedBy,\n} from '../shared/form-field';\nimport type { UiSize } from '../shared/ui-types';\n\nexport type InputType = 'text' | 'password' | 'email' | 'number' | 'tel' | 'url';\n\n/** Border and hover style: border-only (hover = border only), subtle-tint (hover = border + 5% fill). */\nexport type InputAppearance = 'border-only' | 'subtle-tint';\n\n/**\n * A reusable input component that follows UDS design system guidelines.\n * Implements FormValueControl for use with Signal Forms [formField] directive.\n *\n * Use [(value)] for two-way binding, or bind with [formField]=\"myForm().email\" for Signal Forms.\n *\n * Content projection: [ul-input-left-elements], [ul-input-right-elements].\n */\n@Component({\n selector: 'ul-input',\n standalone: true,\n imports: [FormFieldLabelComponent, FormFieldHelperComponent],\n templateUrl: './input.html',\n styleUrls: ['./input.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputComponent implements FormValueControl<string> {\n readonly type = input<InputType>('text');\n readonly size = input<UiSize>('md');\n /** Border/hover style: border-only (hover = border only), subtle-tint (hover = border + 5% fill). */\n readonly appearance = input<InputAppearance>('border-only');\n readonly error = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly readOnly = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly placeholder = input<string>('');\n readonly label = input<string | null>(null);\n readonly helperText = input<string | null>(null);\n readonly errorText = input<string | null>(null);\n readonly maxLength = input<number | undefined>();\n readonly minLength = input<number | undefined>();\n readonly pattern = input<readonly RegExp[]>([]);\n readonly autocomplete = input<string>('off');\n /** When provided (e.g. by a parent form field), the input element uses this id instead of the internal one. */\n readonly controlId = input<string | undefined>();\n\n /** FormUiControl optional: bound by [formField] when invalid */\n readonly invalid = input<boolean>(false);\n /** FormUiControl optional: bound by [formField] for validation errors */\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n /** FormUiControl optional: control sets on blur */\n readonly touched = model<boolean>(false);\n\n readonly value = model<string>('');\n\n protected readonly ids = createFormFieldIds('ul-input');\n protected readonly effectiveControlId = computed(() => this.controlId() ?? this.ids.controlId);\n protected readonly effectiveHelperId = computed(() => (this.controlId() ? `${this.controlId()}-helper` : this.ids.helperId));\n protected readonly effectiveErrorId = computed(() => (this.controlId() ? `${this.controlId()}-error` : this.ids.errorId));\n protected readonly isFocused = signal(false);\n protected readonly hasError = computed(() => this.error() || this.invalid());\n\n protected readonly describedBy = computed(() =>\n getFormFieldDescribedBy(\n this.effectiveHelperId(),\n this.effectiveErrorId(),\n !!this.helperText(),\n this.hasError(),\n !!this.errorText() || this.errors().length > 0\n )\n );\n\n // Outputs\n readonly inputBlur = output<FocusEvent>();\n readonly inputFocus = output<FocusEvent>();\n\n onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.value.set(value);\n }\n\n onBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.touched.set(true);\n this.inputBlur.emit(event);\n }\n\n onFocus(event: FocusEvent): void {\n this.isFocused.set(true);\n this.inputFocus.emit(event);\n }\n\n /**\n * Programmatically focuses the input element\n */\n focus(): void {\n const inputEl = document.getElementById(this.effectiveControlId()) as HTMLInputElement;\n inputEl?.focus();\n }\n\n select(): void {\n const inputEl = document.getElementById(this.effectiveControlId()) as HTMLInputElement;\n inputEl?.select();\n }\n}\n","<div\n class=\"ul-input ul-input--{{ size() }} ul-input--appearance-{{ appearance() }}\"\n [class.ul-input--error]=\"hasError()\"\n [class.ul-input--disabled]=\"disabled()\"\n [class.ul-input--read-only]=\"readOnly()\"\n [class.ul-input--required]=\"required()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n>\n <ul-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"effectiveControlId()\"\n [size]=\"size()\"\n />\n\n <div class=\"ul-input__group\" [class.ul-input__group--focused]=\"isFocused()\">\n <div class=\"ul-input__left-elements\">\n <ng-content select=\"[ul-input-left-elements]\" />\n </div>\n\n <input\n [id]=\"effectiveControlId()\"\n [type]=\"type()\"\n class=\"ul-input__field\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n [disabled]=\"disabled()\"\n [readonly]=\"readOnly()\"\n [required]=\"required()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.minlength]=\"minLength()\"\n [attr.pattern]=\"pattern()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n />\n\n <div class=\"ul-input__right-elements\">\n <ng-content select=\"[ul-input-right-elements]\" />\n </div>\n </div>\n\n <ul-form-field-helper\n [id]=\"effectiveHelperId()\"\n [helperText]=\"helperText()\"\n [errorText]=\"errorText() || (hasError() && errors().length ? errors()[0].message : '') || null\"\n [error]=\"hasError()\"\n />\n</div>\n","import { CdkTrapFocus } from '@angular/cdk/a11y';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostListener,\n input,\n model,\n output,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ButtonComponent } from '../button/button';\nimport { IconComponent } from '../icon/icon';\n\nexport type ModalVariant =\n | 'default'\n | 'success'\n | 'error'\n | 'custom'\n | 'bottom-sheet'\n | 'confirmation';\n\n@Component({\n selector: 'ul-modal',\n standalone: true,\n imports: [CdkTrapFocus, ButtonComponent, IconComponent],\n templateUrl: './modal.html',\n styleUrls: ['./modal.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.aria-hidden]': '!open()',\n },\n})\nexport class ModalComponent {\n /** Whether the modal is open. Supports two-way binding with [(open)]. */\n open = model<boolean>(false);\n\n /** Visual variant: default, success, error, custom, or bottom-sheet (mobile-only layout). */\n variant = input<ModalVariant>('default');\n\n /** Optional title shown in the header. */\n title = input<string | undefined>(undefined);\n\n /** Whether clicking the backdrop closes the modal. */\n closeOnBackdropClick = input<boolean>(true);\n\n /** Whether to show the close button in the header. */\n showCloseButton = input<boolean>(true);\n\n /** Label for the primary confirm action in the confirmation variant. */\n confirmLabel = input<string>('Confirm');\n\n /** Label for the secondary cancel action in the confirmation variant. */\n cancelLabel = input<string>('Cancel');\n\n /** Optional CSS class for the panel (e.g. for custom variant). */\n customClass = input<string | undefined>(undefined);\n\n /** Emitted when the modal is closed (button, backdrop, or escape). */\n closed = output<void>();\n\n /** Emitted when the user confirms in the confirmation variant. */\n confirmed = output<void>();\n\n /** Emitted when the user cancels in the confirmation variant. */\n cancelled = output<void>();\n\n readonly panelClass = computed(() => {\n const variant = this.variant();\n const custom = this.customClass();\n const classes = ['ul-modal__panel', `ul-modal__panel--${variant}`];\n if (custom) {\n classes.push(custom);\n }\n return classes.join(' ');\n });\n\n readonly isConfirmation = computed(() => this.variant() === 'confirmation');\n readonly isSuccess = computed(() => this.variant() === 'success');\n readonly isError = computed(() => this.variant() === 'error');\n\n modalTitle = computed(() => \n (this.isSuccess() || this.isError()) ? '' : this.title()\n );\n\n readonly titleId = `ul-modal-title-${Math.random().toString(36).slice(2, 11)}`;\n readonly bodyId = `ul-modal-body-${Math.random().toString(36).slice(2, 11)}`;\n\n close(): void {\n this.open.set(false);\n this.closed.emit();\n }\n\n onConfirm(): void {\n if (!this.isConfirmation()) {\n return;\n }\n this.confirmed.emit();\n this.close();\n }\n\n onCancel(): void {\n if (!this.isConfirmation()) {\n return;\n }\n this.cancelled.emit();\n this.close();\n }\n\n onBackdropClick(event: MouseEvent): void {\n if (this.closeOnBackdropClick() && event.target === event.currentTarget) {\n this.close();\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n if (this.open()) {\n this.close();\n }\n }\n}\n","@if (open()) {\n <div\n class=\"ul-modal ul-modal--backdrop\"\n role=\"dialog\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"title() ? titleId : null\"\n [attr.aria-describedby]=\"bodyId\"\n (click)=\"onBackdropClick($event)\"\n >\n <div [class]=\"panelClass()\" cdkTrapFocus (click)=\"$event.stopPropagation()\">\n @if (modalTitle() || showCloseButton()) {\n <header class=\"ul-modal__header\">\n @if (modalTitle()) {\n <h2 [id]=\"titleId\" class=\"ul-modal__title\">{{ title() }}</h2>\n }\n @if (showCloseButton()) {\n <ul-button\n type=\"button\"\n theme=\"ghost-white\"\n [iconOnly]=\"true\"\n ariaLabel=\"Close\"\n class=\"ul-modal__close\"\n (buttonClick)=\"close()\"\n >\n <ul-icon icon=\"close\" size=\"6\" />\n </ul-button>\n }\n </header>\n }\n <div class=\"ul-modal__body\" [id]=\"bodyId\">\n @if (isSuccess() || isError()) {\n <div class=\"ul-modal__status\" aria-hidden=\"true\">\n <ul-icon\n class=\"ul-modal__status-icon\"\n [icon]=\"isSuccess() ? 'check_circle' : 'cross_circle'\"\n size=\"16\"\n />\n </div>\n }\n <ng-content />\n </div>\n <div class=\"ul-modal__footer\">\n @if (isConfirmation()) {\n <ul-button theme=\"ghost-white\" (buttonClick)=\"onCancel()\">\n {{ cancelLabel() }}\n </ul-button>\n <ul-button theme=\"fill-purple\" (buttonClick)=\"onConfirm()\">\n {{ confirmLabel() }}\n </ul-button>\n } @else {\n <ng-content select=\"[ul-modal-footer]\" />\n }\n </div>\n </div>\n </div>\n}\n","import { Directive } from '@angular/core';\n\n/** Place on the element projected into [ul-navbar-logo] so the navbar can detect logo content. */\n@Directive({\n selector: '[ul-navbar-logo]',\n standalone: true,\n})\nexport class NavbarLogoSlotDirective {}\n\n/** Place on the element projected into [ul-navbar-search] so the navbar can show the mobile search toggle. */\n@Directive({\n selector: '[ul-navbar-search]',\n standalone: true,\n})\nexport class NavbarSearchSlotDirective {}\n\n/** Place on the element projected into [ul-navbar-avatar] so the navbar can detect avatar content. */\n@Directive({\n selector: '[ul-navbar-avatar]',\n standalone: true,\n})\nexport class NavbarAvatarSlotDirective {}\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n computed,\n input,\n signal,\n ViewEncapsulation,\n output,\n} from '@angular/core';\n\nimport { AvatarComponent } from '../avatar/avatar';\nimport { ButtonComponent } from '../button/button';\nimport { IconComponent } from '../icon/icon';\nimport {\n NavbarAvatarSlotDirective,\n NavbarLogoSlotDirective,\n NavbarSearchSlotDirective,\n} from './navbar-slot.directive';\n\n@Component({\n selector: 'ul-navbar',\n standalone: true,\n imports: [AvatarComponent, ButtonComponent, IconComponent],\n templateUrl: './navbar.html',\n styleUrls: ['./navbar.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class NavbarComponent {\n /** Default logo link href when logo slot is not projected. */\n logoHref = input<string>('/');\n\n /** Default logo image src when logo slot is not projected. */\n logoSrc = input<string | undefined>(undefined);\n\n /** Default logo image alt when logo slot is not projected. */\n logoAlt = input<string>('');\n\n /** Default avatar image src when avatar slot is not projected. */\n avatarSrc = input<string | undefined>(undefined);\n\n /** Default avatar initials when avatar slot is not projected and no image. */\n avatarInitials = input<string | undefined>(undefined);\n\n /** Default avatar image alt when avatar slot is not projected. */\n avatarAlt = input<string>('');\n \n /** For aria-expanded on the toggle button */\n sidebarOpen = input<boolean>(false);\n\n /** When true, show the sidebar toggle button even when a logo slot is projected. */\n showSidebarToggle = input<boolean>(false);\n\n /** Emitted when the user clicks the sidebar toggle. Parent should flip the open state. */\n sidebarToggle = output<void>();\n\n readonly logoSlot = contentChild(NavbarLogoSlotDirective);\n readonly searchSlot = contentChild(NavbarSearchSlotDirective);\n readonly avatarSlot = contentChild(NavbarAvatarSlotDirective);\n\n readonly hasLogoSlot = computed(() => !!this.logoSlot());\n readonly hasSearchSlot = computed(() => !!this.searchSlot());\n readonly hasAvatarSlot = computed(() => !!this.avatarSlot());\n\n readonly showToggle = computed(() => !this.hasLogoSlot() || this.showSidebarToggle());\n\n readonly searchExpanded = signal(false);\n\n toggleSearch(): void {\n this.searchExpanded.update((v) => !v);\n }\n\n toggleSidebar(): void {\n this.sidebarToggle.emit();\n }\n}\n","<nav class=\"ul-navbar\" role=\"navigation\">\n <div class=\"ul-navbar__bar\">\n <div class=\"ul-navbar__logo\">\n @if (showToggle()) {\n <ul-button\n theme=\"ghost-white\"\n [iconOnly]=\"true\"\n size=\"sm\"\n class=\"ul-navbar__sidebar_toggle\"\n ariaLabel=\"Open menu\"\n [attr.aria-expanded]=\"sidebarOpen()\"\n (buttonClick)=\"toggleSidebar()\"\n >\n <ul-icon icon=\"menu\" size=\"6\" />\n </ul-button>\n }\n @if (hasLogoSlot()) {\n <ng-content select=\"[ul-navbar-logo]\" />\n } @else {\n <img [src]=\"logoSrc()\" [alt]=\"logoAlt()\" class=\"ul-navbar__logo-img\" height=\"32\" />\n <a [href]=\"logoHref()\" class=\"ul-navbar__logo-link ul-navbar__logo-text\">Pinake</a>\n }\n </div>\n\n @if (hasSearchSlot()) {\n <ul-button\n theme=\"ghost-white\"\n [iconOnly]=\"true\"\n class=\"ul-navbar__search-toggle\"\n ariaLabel=\"Toggle search\"\n [attr.aria-expanded]=\"searchExpanded()\"\n (buttonClick)=\"toggleSearch()\"\n >\n <ul-icon icon=\"search\" size=\"6\" />\n </ul-button>\n }\n\n <div\n class=\"ul-navbar__search-wrapper\"\n [class.ul-navbar__search-wrapper--expanded]=\"searchExpanded()\"\n >\n <ng-content select=\"[ul-navbar-search]\" />\n </div>\n\n <div class=\"ul-navbar__avatar\">\n @if (hasAvatarSlot()) {\n <ng-content select=\"[ul-navbar-avatar]\" />\n } @else if (avatarSrc() || avatarInitials()) {\n <ul-avatar\n [src]=\"avatarSrc()\"\n [initials]=\"avatarInitials()\"\n [alt]=\"avatarAlt()\"\n size=\"md\"\n />\n }\n </div>\n </div>\n</nav>\n","import { CurrencyPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Extends Angular's CurrencyPipe to use the custom symbol 'ᕫ' for 'UOS' currency code.\n * For all other codes, behaves exactly like CurrencyPipe.\n */\n@Pipe({\n name: 'peCurrency',\n standalone: true,\n})\nexport class CustomCurrencyPipe extends CurrencyPipe implements PipeTransform {\n private static readonly UOS_SYMBOL = 'ᕫ';\n\n override transform(\n value: number | string,\n currencyCode?: string,\n display?: 'code' | 'symbol' | 'symbol-narrow' | string | boolean,\n digitsInfo?: string,\n locale?: string,\n ): string | null;\n override transform(\n value: null | undefined,\n currencyCode?: string,\n display?: 'code' | 'symbol' | 'symbol-narrow' | string | boolean,\n digitsInfo?: string,\n locale?: string,\n ): null;\n override transform(\n value: number | string | null | undefined,\n currencyCode?: string,\n display?: 'code' | 'symbol' | 'symbol-narrow' | string | boolean,\n digitsInfo?: string,\n locale?: string,\n ): string | null {\n const customDisplay = currencyCode === 'UOS' ? CustomCurrencyPipe.UOS_SYMBOL : display;\n return this.separateCurrencyAndPrice(super.transform(value, currencyCode, customDisplay, digitsInfo, locale));\n }\n\n private separateCurrencyAndPrice(input: string | null): string | null {\n // Match non-digits at the start (currency), then the number\n const match = input?.match(/^(\\D+)?(\\d+(\\.\\d+)?)/);\n if (match) {\n const symbol = match[1] ? match[1].trim() : '';\n const price = match[2];\n // Join with a space if symbol exists\n return symbol ? `${symbol} ${price}` : price;\n }\n // Return input if no match\n return input;\n }\n}\n","import { ChangeDetectionStrategy, Component, input, output, ViewEncapsulation } from '@angular/core';\n\nimport type { UiSize, UiTheme } from '../shared/ui-types';\nimport { ButtonComponent } from '../button/button';\n\nimport { CustomCurrencyPipe } from './custom-currency.pipe';\n\nexport type SalePosition = 'left' | 'right';\nexport type Currency = 'UOS' | string;\n\n@Component({\n selector: 'ul-price-button',\n standalone: true,\n imports: [ButtonComponent, CustomCurrencyPipe],\n templateUrl: './price-button.html',\n styleUrl: './price-button.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ul-price-button',\n '[class.ul-price-button--sale-left]': 'salePosition() === \"left\"',\n },\n})\nexport class PriceButtonComponent {\n // Inputs\n readonly label = input<string>(''); // Button label\n readonly size = input<UiSize>('md'); // Button size\n readonly theme = input<UiTheme>('transparent-white'); // Button theme\n readonly disabled = input<boolean>(false); // Disabled state\n readonly salePosition = input<SalePosition>('right'); // Sale badge position\n readonly price = input<number>(0); // Price (0 = free)\n readonly originalPrice = input<number>(0); // Original price\n readonly discountBasis = input<number>(0); // Discount basis\n readonly currency = input<Currency>('USD'); // Currency\n\n // Outputs\n readonly buttonClick = output<MouseEvent>(); // Click event\n\n // Methods\n protected handleClick(event: MouseEvent): void {\n // Handle click\n if (this.disabled()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n this.buttonClick.emit(event);\n }\n}\n","<ul-button [size]=\"size()\" [theme]=\"theme()\" [disabled]=\"disabled()\" (click)=\"handleClick($event)\">\n @if (label()) {\n {{ label() }}\n } @else if (price() > 0) {\n {{ price() | peCurrency: currency() }}\n } @else {\n Free\n }\n</ul-button>\n@if (price() !== originalPrice() && discountBasis() > 0) {\n <div class=\"ul-price-button__sale\">\n <div\n class=\"ul-price-button__discount\"\n [attr.aria-label]=\"'Discount ' + discountBasis() + '% off original price'\"\n >\n -{{ discountBasis() }}%\n </div>\n <div class=\"ul-price-button__original-price\" aria-hidden=\"true\">\n {{ originalPrice() | peCurrency: currency() }}\n </div>\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { booleanAttribute, Component, computed, input, model, output, signal, ViewEncapsulation } from '@angular/core';\n\n/**\n * Radio button for use inside a group. For Signal Forms use ul-radio-group with [formField].\n * Use [(checked)] when controlling each radio manually, or place inside ul-radio-group for [formField] binding.\n *\n * @example\n * <ul-radio value=\"option1\" name=\"my-group\" [checked]=\"isSelected\">Option 1</ul-radio>\n */\n@Component({\n selector: 'ul-radio',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './radio.html',\n styleUrls: ['./radio.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class RadioComponent {\n /**\n * The value associated with this radio button.\n * This value identifies the radio button within its group.\n */\n value = input.required<string>();\n\n /**\n * The name attribute for the radio button group.\n * All radio buttons in the same group should share the same name.\n */\n name = input.required<string>();\n\n /**\n * Whether the radio button is disabled.\n * @default false\n */\n disabled = input<boolean, boolean>(false, { transform: booleanAttribute });\n\n /**\n * Whether the radio button is currently checked/selected.\n * This is a two-way binding that can be used with [(checked)].\n */\n checked = model<boolean>(false);\n\n /**\n * Unique identifier for the radio button.\n * If not provided, one will be auto-generated.\n */\n id = input<string>();\n\n /**\n * Event emitted when the radio button is clicked.\n * Useful for additional click handling beyond the default radio behavior.\n */\n click = output<MouseEvent>();\n\n /**\n * Emitted when this radio is selected (checked becomes true).\n * Used by ul-radio-group to sync the group value.\n */\n selected = output<string>();\n\n /**\n * Internal signal for the unique ID\n */\n private readonly uniqueId = signal(`ul-radio-${Math.random().toString(36).substr(2, 9)}`);\n\n /**\n * Computed ID that uses provided ID or falls back to generated unique ID\n */\n readonly radioId = computed(() => this.id() || this.uniqueId());\n\n /**\n * Computed ARIA attributes for accessibility\n */\n readonly ariaAttributes = computed(() => ({\n 'aria-checked': this.checked(),\n 'aria-disabled': this.disabled(),\n role: 'radio' as const,\n }));\n\n /**\n * Handles the radio button change event.\n * Updates the checked state.\n *\n * @param event - The change event from the input element\n */\n onRadioChange(event: Event): void {\n if (this.disabled()) {\n return;\n }\n\n const input = event.target as HTMLInputElement;\n\n this.checked.set(input.checked);\n if (input.checked) {\n this.selected.emit(this.value());\n }\n }\n\n /**\n * Handles click events on the radio button.\n * Useful for additional click handling beyond the default radio behavior.\n *\n * @param event - The click event\n */\n onRadioClick(event: MouseEvent): void {\n if (this.disabled()) {\n event.preventDefault();\n return;\n }\n\n this.click.emit(event);\n }\n\n /**\n * Handles keyboard events for accessibility.\n * Supports Space and Enter keys for selection.\n *\n * @param event - The keyboard event\n */\n onKeyDown(event: KeyboardEvent): void {\n if (this.disabled()) {\n return;\n }\n\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.checked.set(true);\n }\n }\n}\n","<label class=\"ul-radio-container\" [for]=\"radioId()\" [class.ul-radio-disabled]=\"disabled()\">\n <input\n type=\"radio\"\n [id]=\"radioId()\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n [attr.aria-checked]=\"ariaAttributes()['aria-checked']\"\n [attr.aria-disabled]=\"ariaAttributes()['aria-disabled']\"\n [attr.role]=\"ariaAttributes()['role']\"\n (change)=\"onRadioChange($event)\"\n (click)=\"onRadioClick($event)\"\n (keydown)=\"onKeyDown($event)\"\n class=\"ul-radio-input\"\n />\n <span class=\"ul-radio-label\">\n <ng-content />\n </span>\n</label>\n","import { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nimport {\n createFormFieldIds,\n FormFieldHelperComponent,\n FormFieldLabelComponent,\n getFormFieldDescribedBy,\n} from '../shared/form-field';\nimport { RadioComponent } from './radio';\n\nexport interface RadioGroupOption {\n value: string;\n label: string;\n}\n\n/**\n * Radio group that holds the selected option value. Implements FormValueControl for Signal Forms [formField].\n * Use [(value)] or [formField]=\"myForm().choice\". Renders ul-radio per option; value is the selected option's value.\n */\n@Component({\n selector: 'ul-radio-group',\n standalone: true,\n imports: [RadioComponent, FormFieldLabelComponent, FormFieldHelperComponent],\n template: `\n <div\n class=\"ul-radio-group\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n role=\"radiogroup\"\n [attr.aria-label]=\"label()\"\n >\n <ul-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"ids.controlId\"\n size=\"md\"\n />\n <div class=\"ul-radio-group__radios\" [id]=\"ids.controlId\">\n @for (opt of options(); track opt.value) {\n <ul-radio\n [name]=\"name()\"\n [value]=\"opt.value\"\n [checked]=\"value() === opt.value\"\n [disabled]=\"disabled()\"\n (selected)=\"value.set(opt.value)\"\n >\n {{ opt.label }}\n </ul-radio>\n }\n </div>\n <ul-form-field-helper\n [id]=\"ids.helperId\"\n [helperText]=\"helperText()\"\n [errorText]=\"errorText() || (hasError() && errors().length ? (errors()[0].message ?? null) : null)\"\n [error]=\"hasError()\"\n />\n </div>\n `,\n styleUrls: ['./radio-group.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioGroupComponent implements FormValueControl<string | null> {\n readonly name = input.required<string>();\n readonly options = input<RadioGroupOption[]>([]);\n readonly label = input<string | null>(null);\n readonly helperText = input<string | null>(null);\n readonly errorText = input<string | null>(null);\n readonly error = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly invalid = input<boolean>(false);\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n readonly value = model<string | null>(null);\n\n protected readonly ids = createFormFieldIds('ul-radio-group');\n protected readonly hasError = computed(() => this.error() || this.invalid());\n protected readonly describedBy = computed(() =>\n getFormFieldDescribedBy(\n this.ids.helperId,\n this.ids.errorId,\n !!this.helperText(),\n this.hasError(),\n !!this.errorText() || this.errors().length > 0\n )\n );\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\ntype RadialSize = 96 | 64 | 48 | 32 | 24 | 20 | 16;\n\nconst lineWidths = {\n 96: 6,\n 64: 6,\n 48: 5,\n 32: 4,\n 24: 4,\n 20: 3,\n 16: 3,\n};\n\n@Component({\n selector: 'ul-radial',\n standalone: true,\n templateUrl: './radial.html',\n styleUrl: './radial.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadialComponent {\n // size of the radial component in px\n readonly size = input<RadialSize>(96);\n // if true, the radial will rotate indefinitely\n readonly infinite = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n // percentage of the radial that is filled\n readonly percentage = input<number>(0);\n\n // optional accessible label for the radial\n readonly ariaLabel = input<string | null>(null);\n\n readonly lineWidth = computed(() => lineWidths[this.size()]);\n}\n","<div\n class=\"ul-radial\"\n role=\"progressbar\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-valuenow]=\"percentage()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [class.ul-radial--infinite]=\"infinite()\"\n [style.width.px]=\"size()\"\n [style.padding.px]=\"lineWidth()\"\n [style.--ul-radial-percentage]=\"percentage() + '%'\"\n></div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n SecurityContext,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nexport type RichTextTone = 'default' | 'muted' | 'inverse';\nexport type RichTextSize = 'body-m' | 'body-l';\n\n/**\n * Display-only rich text component. Renders sanitized HTML from the API (or from\n * ul-rich-text-editor) with no Quill dependency. HTML is sanitized before rendering.\n *\n * Use [content] for HTML strings (e.g. from API or editor), or project markup via\n * ng-content when content is empty.\n */\n@Component({\n selector: 'ul-rich-text',\n template: `\n @if (content()) {\n <div\n class=\"ul-rich-text\"\n [class.ul-rich-text--body-m]=\"size() === 'body-m'\"\n [innerHTML]=\"sanitizedContent()\"\n ></div>\n } @else {\n <div\n class=\"ul-rich-text\"\n [class.ul-rich-text--body-m]=\"size() === 'body-m'\"\n >\n <ng-content />\n </div>\n }`,\n host: {\n class: 'ul-rich-text-host',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RichTextComponent {\n readonly content = input<string | null>(null);\n readonly size = input<RichTextSize>('body-l');\n\n private readonly domSanitizer = inject(DomSanitizer);\n\n protected readonly sanitizedContent = computed(() => {\n const html = this.content() ?? '';\n return this.domSanitizer.sanitize(SecurityContext.HTML, html) ?? '';\n });\n}\n","import { Injectable, computed, inject, signal } from '@angular/core';\n\nexport type ToastKind = 'info' | 'success' | 'warning' | 'error';\n\nexport const toastIcon = (kind: ToastKind) => {\n switch (kind) {\n case 'success':\n return 'check_circle';\n case 'warning':\n return 'alert';\n case 'error':\n return 'cross_circle';\n case 'info':\n return 'info';\n }\n};\n\nexport interface ToastConfig {\n readonly id: string;\n readonly message: string;\n readonly title?: string;\n readonly kind: ToastKind;\n readonly dismissible: boolean;\n /**\n * Auto-dismiss delay in milliseconds. When null or 0, the toast\n * will stay visible until the user dismisses it explicitly.\n */\n readonly durationMs: number | null;\n readonly showIcon: boolean;\n}\n\nexport type ToastWithRole = {\n readonly id: string;\n readonly title?: string;\n readonly message: string;\n readonly kind: ToastKind;\n readonly dismissible: boolean;\n readonly role: 'status' | 'alert';\n readonly icon: string;\n readonly showIcon: boolean;\n};\n\ntype NewToastConfig = Omit<ToastConfig, 'id'>;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastService {\n private readonly toastsSignal = signal<ToastConfig[]>([]);\n\n readonly toasts = computed<ToastWithRole[]>(() =>\n this.toastsSignal().map((toast) => ({\n id: toast.id,\n title: toast.title,\n message: toast.message,\n kind: toast.kind,\n dismissible: toast.dismissible,\n role: toast.kind === 'error' || toast.kind === 'warning' ? 'alert' : 'status',\n icon: toastIcon(toast.kind),\n showIcon: toast.showIcon,\n })),\n );\n\n show(message: string, config?: Partial<NewToastConfig>): string {\n const id = this.createId();\n const merged: ToastConfig = {\n id,\n message,\n title: config?.title,\n kind: config?.kind ?? 'info',\n dismissible: config?.dismissible ?? true,\n durationMs: config?.durationMs ?? 5000,\n showIcon: config?.showIcon ?? false,\n };\n\n this.toastsSignal.update((current) => [...current, merged]);\n\n if (merged.durationMs && merged.durationMs > 0) {\n window.setTimeout(() => {\n this.dismiss(id);\n }, merged.durationMs);\n }\n\n return id;\n }\n\n info(message: string, config?: Partial<Omit<NewToastConfig, 'kind'>>): string {\n return this.show(message, { ...config, kind: 'info' });\n }\n\n success(message: string, config?: Partial<Omit<NewToastConfig, 'kind'>>): string {\n return this.show(message, { ...config, kind: 'success' });\n }\n\n warning(message: string, config?: Partial<Omit<NewToastConfig, 'kind'>>): string {\n return this.show(message, { ...config, kind: 'warning' });\n }\n\n error(message: string, config?: Partial<Omit<NewToastConfig, 'kind'>>): string {\n return this.show(message, { ...config, kind: 'error' });\n }\n\n dismiss(id: string): void {\n this.toastsSignal.update((current) => current.filter((toast) => toast.id !== id));\n }\n\n clear(): void {\n this.toastsSignal.set([]);\n }\n\n private createId(): string {\n if (typeof crypto !== 'undefined' && 'randomUUID' in crypto) {\n // eslint-disable-next-line no-restricted-globals\n return crypto.randomUUID();\n }\n\n return `ul-toast-${Math.random().toString(36).slice(2, 11)}`;\n }\n}\n\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, inject } from '@angular/core';\n\nimport { ButtonComponent } from '../button/button';\nimport { IconComponent } from '../icon/icon';\n\nimport { ToastService, ToastWithRole } from './toast.service';\n\n@Component({\n selector: 'ul-toast-container',\n standalone: true,\n imports: [ButtonComponent, IconComponent],\n templateUrl: './toast.html',\n styleUrl: './toast.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToastContainerComponent {\n private readonly toastService = inject(ToastService);\n readonly toasts = this.toastService.toasts;\n\n trackById(_: number, toast: ToastWithRole): string {\n return toast.id;\n }\n\n dismiss(id: string): void {\n this.toastService.dismiss(id);\n }\n}\n\n","<div class=\"ul-toast-container\" aria-live=\"polite\" aria-atomic=\"true\">\n @for (toast of toasts(); track trackById($index, toast)) {\n <section class=\"ul-toast ul-toast--{{ toast.kind }}\" [attr.role]=\"toast.role\">\n <div class=\"ul-toast__icon\">\n @if (toast.showIcon) {\n <ul-icon [icon]=\"toast.icon\" size=\"6\" iconWeight=\"bold\" />\n }\n </div>\n\n <div class=\"ul-toast__body\">\n @if (toast.title) {\n <h3 class=\"ul-toast__title\">\n {{ toast.title }}\n </h3>\n }\n <p class=\"ul-toast__message\">\n {{ toast.message }}\n </p>\n </div>\n\n @if (toast.dismissible) {\n <ul-button\n theme=\"ghost-white\"\n size=\"sm\"\n [iconOnly]=\"true\"\n class=\"ul-toast__close\"\n ariaLabel=\"Dismiss notification\"\n (buttonClick)=\"dismiss(toast.id)\"\n >\n <ul-icon icon=\"cross\" size=\"5\" />\n </ul-button>\n }\n </section>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n HostListener,\n ViewEncapsulation,\n input,\n signal,\n} from '@angular/core';\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\n@Component({\n selector: 'ul-tooltip',\n standalone: true,\n templateUrl: './tooltip.html',\n styleUrl: './tooltip.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipComponent {\n text = input<string>('');\n position = input<TooltipPosition>('top');\n disabled = input<boolean>(false);\n showDelay = input<number>(150);\n hideDelay = input<number>(100);\n\n private readonly visible = signal<boolean>(false);\n private showTimeoutId: number | null = null;\n private hideTimeoutId: number | null = null;\n\n readonly tooltipId = `ul-tooltip-${Math.random().toString(36).slice(2, 11)}`;\n\n @HostBinding('attr.aria-describedby')\n get ariaDescribedBy(): string | null {\n return this.visible() && !!this.text() ? this.tooltipId : null;\n }\n\n @HostListener('mouseenter')\n @HostListener('focusin')\n handlePointerEnter(): void {\n if (this.disabled() || !this.text()) return;\n this.scheduleShow();\n }\n\n @HostListener('mouseleave')\n @HostListener('focusout')\n handlePointerLeave(): void {\n this.scheduleHide();\n }\n\n readonly isVisible = this.visible.asReadonly();\n\n private scheduleShow(): void {\n this.cancelHide();\n if (this.visible()) return;\n\n const delay = this.showDelay();\n if (delay <= 0) {\n this.visible.set(true);\n return;\n }\n\n this.showTimeoutId = window.setTimeout(() => {\n this.visible.set(true);\n }, delay);\n }\n\n private scheduleHide(): void {\n this.cancelShow();\n if (!this.visible()) return;\n\n const delay = this.hideDelay();\n if (delay <= 0) {\n this.visible.set(false);\n return;\n }\n\n this.hideTimeoutId = window.setTimeout(() => {\n this.visible.set(false);\n }, delay);\n }\n\n private cancelShow(): void {\n if (this.showTimeoutId !== null) {\n window.clearTimeout(this.showTimeoutId);\n this.showTimeoutId = null;\n }\n }\n\n private cancelHide(): void {\n if (this.hideTimeoutId !== null) {\n window.clearTimeout(this.hideTimeoutId);\n this.hideTimeoutId = null;\n }\n }\n}\n\n","<span class=\"ul-tooltip-wrapper\">\n <ng-content />\n\n @if (isVisible() && text()) {\n <span\n class=\"ul-tooltip ul-tooltip--{{ position() }}\"\n role=\"tooltip\"\n [attr.id]=\"tooltipId\"\n >\n {{ text() }}\n </span>\n }\n</span>\n\n","import { ChangeDetectionStrategy, Component, computed, input, model, output, signal } from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nimport { IconComponent } from '../icon/icon';\nimport { InputComponent } from '../input/input';\nimport { ListItemComponent } from '../list-item/list-item';\nimport {\n createFormFieldIds,\n FormFieldHelperComponent,\n FormFieldLabelComponent,\n getFormFieldDescribedBy,\n} from '../shared/form-field';\nimport type { UiSize } from '../shared/ui-types';\n\nexport interface SearchSelectOption {\n label: string;\n value: string;\n}\n\n/**\n * Combobox: search input with filterable dropdown. User types to filter options and selects a result.\n * Implements FormValueControl for use with Signal Forms [formField]. Use [(value)] for two-way binding.\n */\n@Component({\n selector: 'ul-search-select',\n standalone: true,\n imports: [\n InputComponent,\n IconComponent,\n ListItemComponent,\n FormFieldLabelComponent,\n FormFieldHelperComponent,\n ],\n templateUrl: './search-select.html',\n styleUrls: ['./search-select.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SearchSelectComponent implements FormValueControl<string | null> {\n readonly size = input<UiSize>('md');\n readonly label = input<string | null>(null);\n readonly helperText = input<string | null>(null);\n readonly errorText = input<string | null>(null);\n readonly error = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly placeholder = input<string>('Search...');\n readonly options = input<SearchSelectOption[]>([]);\n readonly minCharsToOpen = input<number>(0);\n\n readonly invalid = input<boolean>(false);\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n readonly value = model<string | null>(null);\n\n protected readonly ids = createFormFieldIds('ul-search-select');\n protected readonly query = signal('');\n protected readonly isOpen = signal(false);\n protected readonly isFocused = signal(false);\n protected readonly highlightedIndex = signal(0);\n protected blurCloseTimeout: ReturnType<typeof setTimeout> | null = null;\n\n protected readonly listId = `${this.ids.controlId}-list`;\n\n protected readonly hasError = computed(() => this.error() || this.invalid());\n\n protected readonly describedBy = computed(() =>\n getFormFieldDescribedBy(\n this.ids.helperId,\n this.ids.errorId,\n !!this.helperText(),\n this.hasError(),\n !!this.errorText() || this.errors().length > 0\n )\n );\n\n protected readonly selectedOption = computed(() => {\n const v = this.value();\n if (v == null) return null;\n return this.options().find((opt) => opt.value === v) ?? null;\n });\n\n protected readonly selectedLabel = computed(() => this.selectedOption()?.label ?? '');\n\n protected readonly filteredOptions = computed(() => {\n const q = this.query().trim().toLowerCase();\n const opts = this.options();\n if (!q) return opts;\n return opts.filter((opt) => opt.label.toLowerCase().includes(q));\n });\n\n protected readonly displayText = computed(() => {\n if (this.isOpen()) return this.query();\n if (this.value() != null) return this.selectedLabel();\n return this.query();\n });\n\n protected readonly shouldShowPanel = computed(() => {\n if (!this.isOpen()) return false;\n const min = this.minCharsToOpen();\n return this.query().trim().length >= min;\n });\n\n protected readonly hasNoResults = computed(() => this.shouldShowPanel() && this.filteredOptions().length === 0);\n\n protected readonly optionId = (index: number) => `${this.ids.controlId}-option-${index}`;\n\n protected readonly activeDescendantId = computed(() => {\n const list = this.filteredOptions();\n const idx = this.highlightedIndex();\n if (list.length === 0) return undefined;\n const safeIdx = Math.min(Math.max(0, idx), list.length - 1);\n return this.optionId(safeIdx);\n });\n\n onInputValueChange(text: string): void {\n this.query.set(text);\n this.isOpen.set(true);\n this.highlightedIndex.set(0);\n if (this.value() != null && text !== this.selectedLabel()) {\n this.value.set(null);\n }\n }\n\n onInputFocus(): void {\n this.cancelBlurClose();\n this.isFocused.set(true);\n if (this.value() != null) this.query.set(this.selectedLabel());\n this.isOpen.set(true);\n this.highlightedIndex.set(0);\n }\n\n onInputBlur(): void {\n this.isFocused.set(false);\n this.blurCloseTimeout = setTimeout(() => {\n this.blurCloseTimeout = null;\n this.isOpen.set(false);\n if (this.value() != null) this.query.set(this.selectedLabel());\n }, 150);\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (!this.shouldShowPanel()) return;\n const list = this.filteredOptions();\n if (list.length === 0) return;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.highlightedIndex.set((this.highlightedIndex() + 1) % list.length);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.highlightedIndex.set(\n this.highlightedIndex() <= 0 ? list.length - 1 : this.highlightedIndex() - 1\n );\n break;\n case 'Enter':\n event.preventDefault();\n this.selectOption(list[this.highlightedIndex()]);\n break;\n case 'Escape':\n event.preventDefault();\n this.isOpen.set(false);\n break;\n default:\n break;\n }\n }\n\n selectOption(opt: SearchSelectOption): void {\n this.cancelBlurClose();\n this.value.set(opt.value);\n this.query.set(opt.label);\n this.isOpen.set(false);\n }\n\n private cancelBlurClose(): void {\n if (this.blurCloseTimeout != null) {\n clearTimeout(this.blurCloseTimeout);\n this.blurCloseTimeout = null;\n }\n }\n}\n","<div\n class=\"ul-search-select ul-search-select--{{ size() }}\"\n [class.ul-search-select--open]=\"isOpen()\"\n [class.ul-search-select--error]=\"hasError()\"\n [class.ul-search-select--disabled]=\"disabled()\"\n [class.ul-search-select--required]=\"required()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n>\n <ul-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"ids.controlId\"\n [size]=\"size()\"\n />\n\n <div\n class=\"ul-search-select__control\"\n [class.ul-search-select__control--focused]=\"isFocused()\"\n role=\"combobox\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listId\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n (keydown)=\"onKeydown($event)\"\n >\n <ul-input\n [controlId]=\"ids.controlId\"\n [value]=\"displayText()\"\n (valueChange)=\"onInputValueChange($event)\"\n (inputFocus)=\"onInputFocus()\"\n (inputBlur)=\"onInputBlur()\"\n [size]=\"size()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [label]=\"null\"\n [helperText]=\"null\"\n [autocomplete]=\"'off'\"\n >\n <ng-container ul-input-right-elements>\n <ul-icon size=\"5\" icon=\"search\" />\n </ng-container>\n </ul-input>\n\n @if (shouldShowPanel()) {\n <div\n class=\"ul-search-select__list ul-scrollable\"\n [class.ul-search-select__list--empty]=\"hasNoResults()\"\n [id]=\"listId\"\n role=\"listbox\"\n >\n @if (hasNoResults()) {\n <div class=\"ul-search-select__empty\" role=\"status\">No results</div>\n } @else {\n @for (opt of filteredOptions(); track opt.value; let i = $index) {\n <div\n class=\"ul-search-select__option\"\n [class.ul-search-select__option--highlighted]=\"highlightedIndex() === i\"\n [id]=\"optionId(i)\"\n role=\"option\"\n [attr.aria-selected]=\"value() === opt.value\"\n (mousedown)=\"selectOption(opt)\"\n >\n <ul-list-item\n theme=\"ghost-white\"\n [selected]=\"value() === opt.value\"\n [hideFocusOutline]=\"true\"\n >\n <ng-container ul-list-item-label>{{ opt.label }}</ng-container>\n </ul-list-item>\n </div>\n }\n }\n </div>\n }\n </div>\n\n <ul-form-field-helper\n [id]=\"ids.helperId\"\n [helperText]=\"helperText()\"\n [errorText]=\"errorText() || (hasError() && errors().length ? errors()[0].message : '') || null\"\n [error]=\"hasError()\"\n />\n</div>\n","import { ChangeDetectionStrategy, Component, computed, effect, input, model, ViewEncapsulation } from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nimport { DropdownComponent, DropdownItem } from '../dropdown/dropdown';\nimport {\n createFormFieldIds,\n FormFieldHelperComponent,\n FormFieldLabelComponent,\n getFormFieldDescribedBy,\n} from '../shared/form-field';\nimport type { UiSize } from '../shared/ui-types';\nimport type { ListItemTheme } from '../list-item/list-item';\n\nexport interface SelectOption extends DropdownItem {\n /** Required value associated with the option */\n value: string;\n}\n\n/**\n * Form-friendly select built on the dropdown. Implements FormValueControl for Signal Forms [formField].\n * Use [(value)] or [formField]=\"myForm().country\".\n *\n * @example\n * <ul-select label=\"Sort by\" [options]=\"options\" [(value)]=\"selected\" />\n */\n@Component({\n selector: 'ul-select',\n standalone: true,\n imports: [DropdownComponent, FormFieldLabelComponent, FormFieldHelperComponent],\n templateUrl: './select.html',\n styleUrls: ['./select.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectComponent implements FormValueControl<string | null> {\n readonly size = input<UiSize>('md');\n readonly theme = input<ListItemTheme>('transparent-white');\n readonly label = input<string | null>(null);\n readonly helperText = input<string | null>(null);\n readonly errorText = input<string | null>(null);\n readonly error = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly placeholder = input<string>('Select an option');\n readonly options = input<SelectOption[]>([]);\n\n readonly invalid = input<boolean>(false);\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n\n readonly value = model<string | null>(null);\n protected readonly selectedIndex = model<number>(0);\n\n protected readonly ids = createFormFieldIds('ul-select');\n\n protected readonly items = computed<DropdownItem[]>(() => {\n const opts = this.options();\n if (!opts.length) return [];\n return opts.map((option) => ({\n label: option.label ?? option.value,\n value: option.value,\n leftIcons: option.leftIcons,\n rightIcons: option.rightIcons,\n disabled: option.disabled,\n }));\n });\n\n protected readonly hasError = computed(() => this.error() || this.invalid());\n\n protected readonly describedBy = computed(() =>\n getFormFieldDescribedBy(\n this.ids.helperId,\n this.ids.errorId,\n !!this.helperText(),\n this.hasError(),\n !!this.errorText() || this.errors().length > 0\n )\n );\n\n constructor() {\n // Keep selectedIndex in sync when value or options change\n effect(() => {\n const currentValue = this.value();\n const options = this.options();\n\n if (currentValue == null) {\n this.selectedIndex.set(0);\n return;\n }\n\n const index = options.findIndex((opt) => opt.value === currentValue);\n this.selectedIndex.set(index >= 0 ? index : 0);\n });\n }\n\n /** Handles index changes coming from the dropdown */\n protected onSelectedIndexChange(index: number): void {\n const options = this.options();\n const option = options[index];\n\n this.selectedIndex.set(index);\n this.value.set(option?.value ?? null);\n }\n}\n\n","<div\n class=\"ul-select ul-select--{{ size() }}\"\n [class.ul-select--disabled]=\"disabled()\"\n [class.ul-select--error]=\"hasError()\"\n [class.ul-select--required]=\"required()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n>\n <ul-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"ids.controlId\"\n [size]=\"size()\"\n />\n\n <div\n class=\"ul-select__control\"\n [id]=\"ids.controlId\"\n [class.ul-select__control--disabled]=\"disabled()\"\n >\n <ul-dropdown\n class=\"ul-select__dropdown\"\n [theme]=\"theme()\"\n [items]=\"items()\"\n [disabled]=\"disabled()\"\n [(selectedIndex)]=\"selectedIndex\"\n (selectedIndexChange)=\"onSelectedIndexChange($event)\"\n />\n </div>\n\n <ul-form-field-helper\n [id]=\"ids.helperId\"\n [helperText]=\"helperText()\"\n [errorText]=\"errorText() || (hasError() && errors().length ? errors()[0].message : '') || null\"\n [error]=\"hasError()\"\n />\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n input,\n model,\n output,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { ButtonComponent } from '../button/button';\nimport { IconComponent, IconName } from '../icon/icon';\nimport { ListItemComponent, ListItemTheme } from '../list-item/list-item';\n\nexport type SidebarItem = {\n label: string;\n value?: string;\n leftIcons?: IconName[];\n rightIcons?: IconName[];\n disabled?: boolean;\n};\n\n@Component({\n selector: 'ul-sidebar',\n standalone: true,\n imports: [ButtonComponent, IconComponent, ListItemComponent],\n templateUrl: './sidebar.html',\n styleUrls: ['./sidebar.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.aria-hidden]': '!open()',\n },\n})\nexport class SidebarComponent {\n items = input<SidebarItem[]>([]);\n theme = input<ListItemTheme>('ghost-white');\n selectedIndex = model<number>(0);\n open = model<boolean>(false);\n closeOnBackdropClick = input<boolean>(true);\n hideItemFocusOutline = input<boolean>(true);\n\n itemSelected = output<SidebarItem>();\n\n close(): void {\n this.open.set(false);\n }\n\n onOverlayClick(): void {\n if (this.closeOnBackdropClick()) {\n this.close();\n }\n }\n\n onItemClick(item: SidebarItem, index: number): void {\n if (item.disabled) {\n return;\n }\n this.selectedIndex.set(index);\n this.itemSelected.emit(item);\n }\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n if (this.open()) {\n this.close();\n }\n }\n}\n","<div class=\"ul-sidebar\">\n <div\n class=\"ul-sidebar__overlay\"\n [class.ul-sidebar__overlay--visible]=\"open()\"\n [attr.aria-hidden]=\"!open()\"\n (click)=\"onOverlayClick()\"\n ></div>\n\n <aside\n class=\"ul-sidebar__drawer\"\n [class.ul-sidebar__drawer--open]=\"open()\"\n role=\"navigation\"\n [attr.aria-hidden]=\"!open()\"\n >\n <div class=\"ul-sidebar__inner\">\n <header class=\"ul-sidebar__header\">\n @if (open()) {\n <ul-button\n theme=\"ghost-white\"\n [iconOnly]=\"true\"\n class=\"ul-sidebar__close\"\n ariaLabel=\"Close menu\"\n (buttonClick)=\"close()\"\n >\n <ul-icon icon=\"close\" size=\"6\" />\n </ul-button>\n }\n <ng-content select=\"[ul-sidebar-header]\" />\n </header>\n <nav class=\"ul-sidebar__nav ul-scrollable\">\n @if (items().length > 0) {\n @for (item of items(); track $index) {\n <ul-list-item\n [theme]=\"theme()\"\n [disabled]=\"!!item.disabled\"\n [selected]=\"selectedIndex() === $index\"\n [hideFocusOutline]=\"hideItemFocusOutline()\"\n (click)=\"onItemClick(item, $index)\"\n >\n <ng-container ul-list-item-before-label>\n @if (item.leftIcons) {\n @for (icon of item.leftIcons; track icon) {\n <ul-icon size=\"5\" [icon]=\"icon\" />\n }\n }\n </ng-container>\n <ng-container ul-list-item-label>{{ item.label }}</ng-container>\n <ng-container ul-list-item-after-label>\n @if (item.rightIcons) {\n @for (icon of item.rightIcons; track icon) {\n <ul-icon size=\"5\" [icon]=\"icon\" />\n }\n }\n </ng-container>\n </ul-list-item>\n }\n } @else {\n <ng-content select=\"[ul-sidebar-nav]\" />\n }\n </nav>\n <footer class=\"ul-sidebar__footer\">\n <ng-content select=\"[ul-sidebar-footer]\" />\n </footer>\n </div>\n </aside>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport { IconComponent, IconName } from '../icon/icon';\nimport { RadialComponent } from '../radial/radial';\n\nexport type Status = 'confirm' | 'alert' | 'error' | 'pending' | 'info';\n\n@Component({\n selector: 'ul-status',\n standalone: true,\n imports: [IconComponent, RadialComponent],\n templateUrl: './status.html',\n styleUrl: './status.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StatusComponent {\n status = input<Status>('info');\n customIcon = input<IconName>();\n loadingAnimation = input<boolean>(false);\n\n get icon(): IconName {\n const customIcon = this.customIcon();\n if (customIcon) {\n return customIcon;\n }\n\n const statusIcons: Record<Status, IconName> = {\n confirm: 'check',\n alert: 'alert',\n error: 'cross',\n pending: 'hourglass',\n info: 'info',\n };\n\n return statusIcons[this.status()] || 'info';\n }\n\n computedClasses = computed(() => ({\n 'ul-status': true,\n 'ul-status--confirm': this.status() === 'confirm',\n 'ul-status--alert': this.status() === 'alert',\n 'ul-status--error': this.status() === 'error',\n 'ul-status--pending': this.status() === 'pending',\n 'ul-status--info': this.status() === 'info',\n }));\n}\n","<div [class]=\"computedClasses()\">\n <div class=\"ul-status-icon\">\n <ul-icon [icon]=\"icon\" size=\"12\" />\n @if (loadingAnimation()) {\n <div class=\"ul-status-loading\">\n <ul-radial [size]=\"96\" [percentage]=\"50\" [infinite]=\"true\" />\n </div>\n }\n </div>\n <div class=\"ul-status-title-container\">\n <div class=\"ul-status-title\">\n <ng-content select=\"[ul-status-title]\" />\n </div>\n <div class=\"ul-status-subtitle\">\n <ng-content select=\"[ul-status-subtitle]\" />\n </div>\n </div>\n <div class=\"ul-status-description\">\n <ng-content select=\"[ul-status-description]\" />\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, model, output, signal } from '@angular/core';\n\nimport { IconComponent } from '../icon/icon';\nimport { InputComponent } from '../input/input';\nimport { SkeletonComponent } from '../skeleton/skeleton';\n\nexport interface TableColumn {\n id: string;\n label: string;\n sortable?: boolean;\n filterable?: boolean;\n}\n\nexport type SortDirection = 'asc' | 'desc';\n\n/**\n * Table component for tabular data with optional sort (per-column) and global filter.\n * Uses semantic table markup; responsive with horizontal scroll on small viewports.\n */\n@Component({\n selector: 'ul-table',\n standalone: true,\n imports: [InputComponent, IconComponent, SkeletonComponent],\n templateUrl: './table.html',\n styleUrls: ['./table.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableComponent {\n readonly columns = input<TableColumn[]>([]);\n readonly data = input<Record<string, unknown>[]>([]);\n readonly sortColumn = model<string | null>(null);\n readonly sortDirection = model<SortDirection>('asc');\n readonly filterPlaceholder = input<string>('Filter...');\n readonly filterLabel = input<string>('Filter');\n readonly showGlobalFilter = input<boolean>(false);\n readonly emptyMessage = input<string>('No data');\n\n readonly loading = input<boolean>(false);\n\n readonly sortChange = output<{ column: string | null; direction: SortDirection }>();\n readonly filterChange = output<string>();\n\n protected readonly filterQuery = signal('');\n\n protected readonly hasSortableColumn = computed(() =>\n this.columns().some((col) => col.sortable === true)\n );\n\n protected readonly filteredData = computed(() => {\n const rows = this.data();\n const query = this.filterQuery().trim().toLowerCase();\n const cols = this.columns();\n if (!query) return rows;\n return rows.filter((row) => {\n return cols.some((col) => {\n const val = this.getCellValue(row, col.id);\n return String(val).toLowerCase().includes(query);\n });\n });\n });\n\n protected readonly sortedData = computed(() => {\n const rows = this.filteredData();\n const colId = this.sortColumn();\n const dir = this.sortDirection();\n if (!colId) return rows;\n return [...rows].sort((a, b) => {\n const aVal = this.getCellValue(a, colId);\n const bVal = this.getCellValue(b, colId);\n const aStr = String(aVal ?? '');\n const bStr = String(bVal ?? '');\n const cmp = aStr.localeCompare(bStr, undefined, { numeric: true });\n return dir === 'asc' ? cmp : -cmp;\n });\n });\n\n protected readonly filterId = `ul-table-filter-${Math.random().toString(36).slice(2, 9)}`;\n\n getCellValue(row: Record<string, unknown>, columnId: string): unknown {\n return row[columnId];\n }\n\n onFilterInput(value: string): void {\n this.filterQuery.set(value);\n this.filterChange.emit(value);\n }\n\n toggleSort(columnId: string): void {\n const col = this.columns().find((c) => c.id === columnId);\n if (!col?.sortable) return;\n const current = this.sortColumn();\n const currentDir = this.sortDirection();\n if (current === columnId) {\n const nextDir: SortDirection = currentDir === 'asc' ? 'desc' : 'asc';\n this.sortDirection.set(nextDir);\n this.sortChange.emit({ column: columnId, direction: nextDir });\n return;\n } else {\n this.sortColumn.set(columnId);\n this.sortDirection.set('asc');\n this.sortChange.emit({ column: columnId, direction: 'asc' });\n }\n }\n\n getSortAriaSort(columnId: string): 'ascending' | 'descending' | 'none' {\n if (this.sortColumn() !== columnId) return 'none';\n return this.sortDirection() === 'asc' ? 'ascending' : 'descending';\n }\n}\n","<div\n class=\"ul-table\"\n [class.ul-table--sortable]=\"hasSortableColumn()\"\n [class.ul-table--filterable]=\"showGlobalFilter()\"\n>\n @if (showGlobalFilter()) {\n <div class=\"ul-table__toolbar\">\n <ul-input\n [controlId]=\"filterId\"\n [label]=\"filterLabel()\"\n [placeholder]=\"filterPlaceholder()\"\n [value]=\"filterQuery()\"\n (valueChange)=\"onFilterInput($event)\"\n size=\"sm\"\n >\n <ng-container ul-input-left-elements>\n <ul-icon size=\"5\" icon=\"search\" />\n </ng-container>\n </ul-input>\n </div>\n }\n\n <div class=\"ul-table__scroll ul-scrollable\">\n <ul-skeleton [show]=\"loading()\" variant=\"rect\">\n <table class=\"ul-table__table\">\n <thead class=\"ul-table__head\">\n <tr class=\"ul-table__row ul-table__row--head\">\n @for (col of columns(); track col.id) {\n <th\n class=\"ul-table__th\"\n [class.ul-table__th--sortable]=\"col.sortable\"\n [class.ul-table__th--sort-asc]=\"sortColumn() === col.id && sortDirection() === 'asc'\"\n [class.ul-table__th--sort-desc]=\"sortColumn() === col.id && sortDirection() === 'desc'\"\n [attr.scope]=\"'col'\"\n [attr.aria-sort]=\"col.sortable ? getSortAriaSort(col.id) : null\"\n >\n @if (col.sortable) {\n <button\n type=\"button\"\n class=\"ul-table__th-button\"\n [attr.aria-label]=\"'Sort by ' + col.label\"\n (click)=\"toggleSort(col.id)\"\n >\n <span class=\"ul-table__th-label\">{{ col.label }}</span>\n @if (sortColumn() === col.id && sortDirection() === 'asc') {\n <ul-icon size=\"5\" icon=\"arrow_up\" />\n } @else if (sortColumn() === col.id && sortDirection() === 'desc') {\n <ul-icon size=\"5\" icon=\"arrow_down\" />\n } @else {\n <ul-icon size=\"5\" icon=\"sort\" />\n }\n </button>\n } @else {\n <span class=\"ul-table__th-label\">{{ col.label }}</span>\n }\n </th>\n }\n </tr>\n </thead>\n <tbody class=\"ul-table__body\">\n @if (sortedData().length === 0) {\n <tr class=\"ul-table__row ul-table__row--empty\">\n <td class=\"ul-table__cell ul-table__cell--empty\" [attr.colspan]=\"columns().length || 1\">\n {{ emptyMessage() }}\n </td>\n </tr>\n } @else {\n @for (row of sortedData(); track $index) {\n <tr class=\"ul-table__row\">\n @for (col of columns(); track col.id) {\n <td class=\"ul-table__cell\">{{ getCellValue(row, col.id) }}</td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n </ul-skeleton>\n </div>\n</div>\n","import { Directive } from '@angular/core';\n\n/**\n * When projected into ul-textarea, replaces the native textarea with custom content (e.g. Quill).\n * Use with [ul-textarea-field] on the element to project.\n */\n@Directive({\n selector: '[ul-textarea-field]',\n standalone: true,\n})\nexport class TextareaFieldDirective {}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport type { FormValueControl, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\n\nimport {\n createFormFieldIds,\n FormFieldHelperComponent,\n FormFieldLabelComponent,\n getFormFieldDescribedBy,\n} from '../shared/form-field';\nimport type { UiSize } from '../shared/ui-types';\n\nimport { TextareaFieldDirective } from './textarea-field.directive';\n\nexport type TextareaResize = 'none' | 'vertical' | 'horizontal' | 'both';\n\n/**\n * Reusable textarea. Implements FormValueControl for Signal Forms [formField].\n * Use [(value)] for two-way binding or [formField]=\"myForm().message\".\n *\n * Content projection: [ul-textarea-field] (replaces native textarea), [ul-textarea-left-elements], [ul-textarea-right-elements].\n */\n@Component({\n selector: 'ul-textarea',\n standalone: true,\n imports: [FormFieldLabelComponent, FormFieldHelperComponent],\n templateUrl: './textarea.html',\n styleUrls: ['./textarea.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextareaComponent implements FormValueControl<string> {\n readonly size = input<UiSize>('md');\n readonly error = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly readOnly = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly placeholder = input<string>('');\n readonly label = input<string | null>(null);\n readonly helperText = input<string | null>(null);\n readonly errorText = input<string | null>(null);\n readonly maxLength = input<number | undefined>();\n readonly minLength = input<number | undefined>();\n readonly autocomplete = input<string>('off');\n readonly rows = input<number>(3);\n readonly resize = input<TextareaResize>('vertical');\n\n /** When using [ul-textarea-field], pass focus state so the group border reflects it. */\n readonly groupFocused = input<boolean | null>(null);\n\n readonly invalid = input<boolean>(false);\n readonly errors = input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n readonly touched = model<boolean>(false);\n\n readonly value = model<string>('');\n\n protected readonly customField = contentChild(TextareaFieldDirective);\n protected readonly ids = createFormFieldIds('ul-textarea');\n protected readonly isFocused = signal(false);\n protected readonly groupFocusedState = computed(() => this.groupFocused() ?? this.isFocused());\n\n protected readonly hasError = computed(() => this.error() || this.invalid());\n\n protected readonly describedBy = computed(() =>\n getFormFieldDescribedBy(\n this.ids.helperId,\n this.ids.errorId,\n !!this.helperText(),\n this.hasError(),\n !!this.errorText() || this.errors().length > 0\n )\n );\n\n readonly inputBlur = output<FocusEvent>();\n readonly inputFocus = output<FocusEvent>();\n\n onInput(event: Event): void {\n const value = (event.target as HTMLTextAreaElement).value;\n this.value.set(value);\n }\n\n onBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.touched.set(true);\n this.inputBlur.emit(event);\n }\n\n onFocus(event: FocusEvent): void {\n this.isFocused.set(true);\n this.inputFocus.emit(event);\n }\n\n focus(): void {\n if (this.customField()) return;\n const el = document.getElementById(this.ids.controlId) as HTMLTextAreaElement;\n el?.focus();\n }\n\n select(): void {\n const el = document.getElementById(this.ids.controlId) as HTMLTextAreaElement;\n el?.select();\n }\n}\n","<div\n class=\"ul-textarea ul-textarea--{{ size() }}\"\n [class.ul-textarea--error]=\"hasError()\"\n [class.ul-textarea--disabled]=\"disabled()\"\n [class.ul-textarea--read-only]=\"readOnly()\"\n [class.ul-textarea--required]=\"required()\"\n [class.ul-textarea--resize-none]=\"resize() === 'none'\"\n [class.ul-textarea--resize-vertical]=\"resize() === 'vertical'\"\n [class.ul-textarea--resize-horizontal]=\"resize() === 'horizontal'\"\n [class.ul-textarea--resize-both]=\"resize() === 'both'\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n>\n <ul-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"ids.controlId\"\n [size]=\"size()\"\n />\n\n <div\n class=\"ul-textarea__group\"\n [class.ul-textarea__group--focused]=\"groupFocusedState()\"\n [style.--ul-textarea-rows]=\"rows()\"\n >\n <div class=\"ul-textarea__left-elements\">\n <ng-content select=\"[ul-textarea-left-elements]\" />\n </div>\n\n <ng-content select=\"[ul-textarea-field]\" />\n @if (!customField()) {\n <textarea\n [id]=\"ids.controlId\"\n class=\"ul-textarea__field\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n [disabled]=\"disabled()\"\n [readonly]=\"readOnly()\"\n [required]=\"required()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.minlength]=\"minLength()\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.rows]=\"rows()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n ></textarea>\n }\n\n <div class=\"ul-textarea__right-elements\">\n <ng-content select=\"[ul-textarea-right-elements]\" />\n </div>\n </div>\n\n <ul-form-field-helper\n [id]=\"ids.helperId\"\n [helperText]=\"helperText()\"\n [errorText]=\"(errorText() || (hasError() && errors().length ? errors()[0].message : null)) ?? null\"\n [error]=\"hasError()\"\n />\n</div>\n","/*\n * Public API Surface of ui\n */\n\nexport * from './components';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}