@vroxal/vd-angular 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -0
- package/fesm2022/vroxal-vd-angular.mjs +4768 -0
- package/fesm2022/vroxal-vd-angular.mjs.map +1 -0
- package/guidelines/COMPONENT_REGISTRY.md +94 -0
- package/guidelines/USAGE_GUIDELINES.md +70 -0
- package/guidelines/component-registry.json +723 -0
- package/package.json +43 -0
- package/styles/style.css +0 -0
- package/types/vroxal-vd-angular.d.ts +1335 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vroxal-vd-angular.mjs","sources":["../../../projects/angular-components/src/lib/vd-icon/vd-icon.component.ts","../../../projects/angular-components/src/lib/vd-icon/vd-icon.component.html","../../../projects/angular-components/src/lib/vd-button/vd-button.component.ts","../../../projects/angular-components/src/lib/vd-button/vd-button.component.html","../../../projects/angular-components/src/lib/vd-icon-button/vd-icon-button.component.ts","../../../projects/angular-components/src/lib/vd-icon-button/vd-icon-button.component.html","../../../projects/angular-components/src/lib/vd-toast/vd-toast.service.ts","../../../projects/angular-components/src/lib/vd-toast/vd-toast.component.ts","../../../projects/angular-components/src/lib/vd-toast/vd-toast.component.html","../../../projects/angular-components/src/lib/vd-tooltip/vd-tooltip.component.ts","../../../projects/angular-components/src/lib/vd-tooltip/vd-tooltip.directive.ts","../../../projects/angular-components/src/lib/vd-input/vd-input.component.ts","../../../projects/angular-components/src/lib/vd-input/vd-input.component.html","../../../projects/angular-components/src/lib/vd-checkbox/vd-checkbox.component.ts","../../../projects/angular-components/src/lib/vd-checkbox/vd-checkbox.component.html","../../../projects/angular-components/src/lib/vd-checkbox-group/vd-checkbox-group.component.ts","../../../projects/angular-components/src/lib/vd-checkbox-group/vd-checkbox-group.component.html","../../../projects/angular-components/src/lib/vd-badge/vd-badge.component.ts","../../../projects/angular-components/src/lib/vd-badge/vd-badge.component.html","../../../projects/angular-components/src/lib/vd-divider/vd-divider.component.ts","../../../projects/angular-components/src/lib/vd-divider/vd-divider.component.html","../../../projects/angular-components/src/lib/vd-pagination/vd-pagination.component.ts","../../../projects/angular-components/src/lib/vd-pagination/vd-pagination.component.html","../../../projects/angular-components/src/lib/vd-dropdown/vd-dropdown.token.ts","../../../projects/angular-components/src/lib/vd-dropdown/vd-dropdown.service.ts","../../../projects/angular-components/src/lib/vd-dropdown/vd-dropdown.component.ts","../../../projects/angular-components/src/lib/vd-dropdown/vd-dropdown.component.html","../../../projects/angular-components/src/lib/vd-dropdown/items/vd-dropdown-item.ts","../../../projects/angular-components/src/lib/vd-dropdown/items/vd-dropdown-item-link.ts","../../../projects/angular-components/src/lib/vd-dropdown/items/vd-dropdown-item-divider.ts","../../../projects/angular-components/src/lib/vd-dropdown/items/vd-dropdown-item-group.ts","../../../projects/angular-components/src/lib/vd-datatable/vd-datatable.component.ts","../../../projects/angular-components/src/lib/vd-datatable/vd-datatable.component.html","../../../projects/angular-components/src/lib/vd-accordion/vd-accordion.component.ts","../../../projects/angular-components/src/lib/vd-accordion/vd-accordion.component.html","../../../projects/angular-components/src/lib/vd-textarea/vd-textarea.component.ts","../../../projects/angular-components/src/lib/vd-textarea/vd-textarea.component.html","../../../projects/angular-components/src/lib/vd-select/vd-select.component.ts","../../../projects/angular-components/src/lib/vd-select/vd-select.component.html","../../../projects/angular-components/src/lib/vd-date-time-picker/vd-single-date-inline/vd-single-date-inline.component.ts","../../../projects/angular-components/src/lib/vd-date-time-picker/vd-single-date-inline/vd-single-date-inline.component.html","../../../projects/angular-components/src/lib/vd-date-time-picker/vd-single-date-picker/vd-single-date-picker.component.ts","../../../projects/angular-components/src/lib/vd-date-time-picker/vd-single-date-picker/vd-single-date-picker.component.html","../../../projects/angular-components/src/lib/vd-date-time-picker/vd-range-date-inline/vd-range-date-inline.component.ts","../../../projects/angular-components/src/lib/vd-date-time-picker/vd-range-date-inline/vd-range-date-inline.component.html","../../../projects/angular-components/src/lib/vd-date-time-picker/vd-range-date-picker/vd-range-date-picker.component.ts","../../../projects/angular-components/src/lib/vd-date-time-picker/vd-range-date-picker/vd-range-date-picker.component.html","../../../projects/angular-components/src/lib/vd-date-time-picker/vd-time-picker/vd-time-picker.component.ts","../../../projects/angular-components/src/lib/vd-date-time-picker/vd-time-picker/vd-time-picker.component.html","../../../projects/angular-components/src/lib/vd-date-time-picker/vd-date-time-picker/vd-date-time-picker.component.ts","../../../projects/angular-components/src/lib/vd-date-time-picker/vd-date-time-picker/vd-date-time-picker.component.html","../../../projects/angular-components/src/lib/vd-switch/vd-switch.component.ts","../../../projects/angular-components/src/lib/vd-switch/vd-switch.component.html","../../../projects/angular-components/src/lib/vd-sidebar/vd-sidebar.component.ts","../../../projects/angular-components/src/lib/vd-sidebar/vd-sidebar.component.html","../../../projects/angular-components/src/lib/vd-alert/vd-alert.component.ts","../../../projects/angular-components/src/lib/vd-alert/vd-alert.component.html","../../../projects/angular-components/src/lib/vd-drawer/vd-drawer.component.ts","../../../projects/angular-components/src/lib/vd-drawer/vd-drawer.component.html","../../../projects/angular-components/src/lib/vd-dialog/vd-dialog.component.ts","../../../projects/angular-components/src/lib/vd-dialog/vd-dialog.component.html","../../../projects/angular-components/src/lib/vd-progress-tracker/vd-progress-tracker.component.ts","../../../projects/angular-components/src/lib/vd-progress-tracker/vd-progress-tracker.component.html","../../../projects/angular-components/src/lib/vd-radio-button/vd-radio-button.component.ts","../../../projects/angular-components/src/lib/vd-radio-button/vd-radio-button.component.html","../../../projects/angular-components/src/lib/vd-radio-group/vd-radio-group.component.ts","../../../projects/angular-components/src/lib/vd-radio-group/vd-radio-group.component.html","../../../projects/angular-components/src/lib/vd-verification-code-input/vd-verification-code-input.component.ts","../../../projects/angular-components/src/lib/vd-verification-code-input/vd-verification-code-input.component.html","../../../projects/angular-components/src/lib/vd-tab/vd-tab.component.ts","../../../projects/angular-components/src/lib/vd-tab/vd-tab.component.html","../../../projects/angular-components/src/lib/vd-file-input/vd-file-input.component.ts","../../../projects/angular-components/src/lib/vd-file-input/vd-file-input.component.html","../../../projects/angular-components/src/lib/vd-number-input/vd-number-input.component.ts","../../../projects/angular-components/src/lib/vd-number-input/vd-number-input.component.html","../../../projects/angular-components/src/lib/vd-breadcrumb/vd-breadcrumb.component.ts","../../../projects/angular-components/src/lib/vd-breadcrumb/vd-breadcrumb.component.html","../../../projects/angular-components/src/lib/vd-navbar/vd-navbar.component.ts","../../../projects/angular-components/src/lib/vd-navbar/vd-navbar.component.html","../../../projects/angular-components/src/lib/vd-empty-state/vd-empty-state.component.ts","../../../projects/angular-components/src/lib/vd-empty-state/vd-empty-state.component.html","../../../projects/angular-components/src/lib/vd-loading-state/vd-loading-state.component.ts","../../../projects/angular-components/src/lib/vd-loading-state/vd-loading-state.component.html","../../../projects/angular-components/src/lib/vd-angular.module.ts","../../../projects/angular-components/src/lib/vd-toast/vd-toast.module.ts","../../../projects/angular-components/src/lib/vd-confirmation-dialog/vd-confirmation-dialog.component.ts","../../../projects/angular-components/src/lib/vd-confirmation-dialog/vd-confirmation-dialog.component.html","../../../projects/angular-components/src/lib/vd-confirmation-dialog/vd-confirmation-dialog.service.ts","../../../projects/angular-components/src/lib/vd-drawer/vd-drawer.service.ts","../../../projects/angular-components/src/lib/vd-dialog/vd-dialog.service.ts","../../../projects/angular-components/src/public-api.ts","../../../projects/angular-components/src/vroxal-vd-angular.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\ntype IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n@Component({\n selector: 'vd-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './vd-icon.component.html',\n styleUrls: ['./vd-icon.component.scss'],\n})\nexport class VdIcon {\n /** CSS class for the icon (e.g., \"vd-icon-save\") */\n @Input() name!: string;\n @Input() size?: IconSize;\n @Input() color?: string;\n /** Compute CSS class for size */\n get sizeClass(): string {\n if (!this.size) {\n return '';\n }\n return `vd-icon--${this.size}`;\n }\n}\n","<i\n class=\"vd-icon\"\n [class.vd-icon--primary]=\"color === 'primary'\"\n [class.vd-icon--success]=\"color === 'success'\"\n [class.vd-icon--error]=\"color === 'error'\"\n [class.vd-icon--info]=\"color === 'info'\"\n [class.vd-icon--warning]=\"color === 'warning'\"\n [class.vd-icon--neutral]=\"color === 'neutral'\"\n [class]=\"name + ' ' + sizeClass\"\n></i>\n","import { Component, Input, ElementRef, Renderer2 } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VdIcon } from '../vd-icon/vd-icon.component';\n\ntype ButtonVariant = 'solid' | 'subtle' | 'outline' | 'transparent';\ntype ButtonColor = 'primary' | 'neutral' | 'error';\ntype ButtonSize = 'sm' | 'md' | 'lg';\ntype IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\ntype ButtonType = 'button' | 'submit' | 'reset';\n\n@Component({\n selector: 'vd-button',\n standalone: true, // standalone is required\n imports: [CommonModule, VdIcon], // for *ngIf and [class]\n templateUrl: './vd-button.component.html',\n styleUrls: ['./vd-button.component.scss'],\n})\nexport class VdButton {\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n ngAfterViewInit() {\n const buttonEl = this.el.nativeElement.querySelector('button');\n if (buttonEl) {\n requestAnimationFrame(() => {\n buttonEl.classList.remove('not-initialized');\n });\n }\n }\n @Input() label!: string;\n @Input() variant?: ButtonVariant;\n @Input() color?: ButtonColor;\n @Input() size?: ButtonSize;\n @Input() rounded?: boolean;\n @Input() disabled?: boolean;\n @Input() loading?: boolean;\n @Input() leftIcon?: string;\n @Input() rightIcon?: string;\n @Input() type: ButtonType = 'button';\n\n /** Map button size → default icon size */\n private buttonIconMap: Record<ButtonSize, IconSize> = {\n sm: 'xs',\n md: 'md',\n lg: 'lg',\n };\n /** Effective icon size */\n get effectiveIconSize(): IconSize {\n return this.buttonIconMap[this.size ?? 'md'];\n }\n}\n","<button\n [attr.type]=\"type\"\n [disabled]=\"!!disabled || !!loading\"\n class=\"vd-button not-initialized\"\n [class.vd-button--subtle]=\"variant === 'subtle'\"\n [class.vd-button--outline]=\"variant === 'outline'\"\n [class.vd-button--transparent]=\"variant === 'transparent'\"\n [class.vd-button--neutral]=\"color === 'neutral'\"\n [class.vd-button--error]=\"color === 'error'\"\n [class.vd-button--sm]=\"size === 'sm'\"\n [class.vd-button--lg]=\"size === 'lg'\"\n [class.vd-button--rounded]=\"!!rounded\"\n [class.vd-button--disabled]=\"!!disabled\"\n [class.vd-button--loading]=\"!!loading\"\n>\n <!-- Left icon -->\n <vd-icon\n *ngIf=\"leftIcon\"\n [name]=\"leftIcon\"\n [size]=\"effectiveIconSize\"\n class=\"vd-button__icon\"\n ></vd-icon>\n\n <!-- Label (ALWAYS PRESENT) -->\n <span\n class=\"vd-button__label\"\n [class.label-small]=\"size === 'sm'\"\n [class.label-large]=\"size === 'lg'\"\n >\n {{ label }}\n </span>\n\n <!-- Right icon -->\n <vd-icon\n *ngIf=\"rightIcon\"\n [name]=\"rightIcon\"\n [size]=\"effectiveIconSize\"\n class=\"vd-button__icon\"\n ></vd-icon>\n\n <!-- Loading spinner -->\n <span *ngIf=\"!!loading\" class=\"vd-button__spinner\">\n <span class=\"vd-button__spinner-indicator\"></span>\n </span>\n</button>\n","import { Component, Input, ElementRef, Renderer2 } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VdIcon } from '../vd-icon/vd-icon.component';\n\ntype ButtonVariant = 'solid' | 'subtle' | 'outline' | 'transparent';\ntype ButtonColor = 'primary' | 'neutral' | 'error';\ntype ButtonSize = 'sm' | 'md' | 'lg';\ntype IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n@Component({\n selector: 'vd-icon-button',\n standalone: true,\n imports: [CommonModule, VdIcon],\n templateUrl: './vd-icon-button.component.html',\n styleUrls: ['./vd-icon-button.component.scss'],\n})\nexport class VdIconButton {\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n ngAfterViewInit() {\n const buttonEl = this.el.nativeElement.querySelector('button');\n if (buttonEl) {\n requestAnimationFrame(() => {\n buttonEl.classList.remove('not-initialized');\n });\n }\n }\n @Input() icon!: string;\n @Input() ariaLabel!: string;\n @Input() variant?: ButtonVariant = 'solid';\n @Input() color?: ButtonColor = 'primary';\n @Input() size?: ButtonSize = 'md';\n @Input() rounded?: boolean = false;\n @Input() disabled?: boolean = false;\n @Input() loading?: boolean = false;\n\n private buttonIconMap: Record<ButtonSize, IconSize> = {\n sm: 'md',\n md: 'md',\n lg: 'lg',\n };\n /** Effective icon size */\n get effectiveIconSize(): IconSize {\n return this.buttonIconMap[this.size ?? 'md'];\n }\n}\n","<button\n type=\"button\"\n [disabled]=\"!!disabled || !!loading\"\n class=\"vd-icon-button not-initialized\"\n [class.vd-icon-button--subtle]=\"variant === 'subtle'\"\n [class.vd-icon-button--outline]=\"variant === 'outline'\"\n [class.vd-icon-button--transparent]=\"variant === 'transparent'\"\n [class.vd-icon-button--neutral]=\"color === 'neutral'\"\n [class.vd-icon-button--error]=\"color === 'error'\"\n [class.vd-icon-button--sm]=\"size === 'sm'\"\n [class.vd-icon-button--lg]=\"size === 'lg'\"\n [class.vd-icon-button--rounded]=\"!!rounded\"\n [class.vd-icon-button--loading]=\"!!loading\"\n [class.vd-button--disabled]=\"!!disabled\"\n [attr.aria-label]=\"ariaLabel\"\n>\n <!-- Icon -->\n <vd-icon [name]=\"icon\" class=\"vd-icon-button__icon\" [size]=\"effectiveIconSize\"></vd-icon>\n\n <!-- Loading spinner -->\n <span *ngIf=\"!!loading\" class=\"vd-icon-button__spinner\">\n <span class=\"vd-icon-button__spinner-indicator\"></span>\n </span>\n</button>\n","//toast-service\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Toast, ToastPosition } from './vd-toast.model';\n\nconst AUTO_DISMISS_DURATION = 5000;\nconst EXIT_ANIMATION_DURATION = 300;\nconst DEFAULT_MAX_TOASTS = 5;\nconst DEFAULT_POSITION: ToastPosition = 'top-right';\n\nexport interface ToastConfig {\n placement?: ToastPosition;\n maxStack?: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class VdToastService {\n private toasts: Toast[] = [];\n private queue: Toast[] = [];\n private subject = new BehaviorSubject<Toast[]>([]);\n toasts$ = this.subject.asObservable();\n private maxToasts = DEFAULT_MAX_TOASTS;\n private defaultPlacement: ToastPosition = DEFAULT_POSITION;\n\n /**\n * Configure global toast settings\n * @param config Configuration options for toasts\n */\n configure(config: ToastConfig) {\n if (config.placement) {\n this.defaultPlacement = config.placement;\n }\n if (config.maxStack !== undefined && config.maxStack > 0) {\n this.maxToasts = config.maxStack;\n }\n }\n\n /**\n * Set the maximum number of toasts that can be displayed at once\n * @param max Maximum number of toasts (default: 5)\n */\n setMaxToasts(max: number) {\n this.maxToasts = max > 0 ? max : DEFAULT_MAX_TOASTS;\n }\n\n show(toast: Toast) {\n // Determine defaults\n let autoDismiss = toast.autoDismiss ?? true;\n // Position is now configuration-only, always use defaultPlacement\n let position = this.defaultPlacement;\n\n const newToast: Toast = {\n ...toast,\n id: this.generateId(),\n autoDismiss,\n position,\n isLeaving: false,\n remainingTime: AUTO_DISMISS_DURATION,\n };\n\n // Check if we've reached the max limit\n if (this.toasts.length >= this.maxToasts) {\n // Add to queue\n this.queue.push(newToast);\n } else {\n // Add to active toasts\n this.toasts = [...this.toasts, newToast];\n this.emit();\n\n if (newToast.autoDismiss) {\n this.startTimer(newToast);\n }\n }\n }\n\n private startTimer(toast: Toast) {\n toast.startTime = Date.now();\n clearTimeout(toast.timeoutId);\n\n toast.timeoutId = setTimeout(() => {\n this.dismiss(toast.id!);\n }, toast.remainingTime ?? AUTO_DISMISS_DURATION);\n }\n\n pause(id: string) {\n const toast = this.toasts.find((t) => t.id === id);\n if (!toast || !toast.autoDismiss || toast.isLeaving) return;\n\n clearTimeout(toast.timeoutId);\n\n const elapsed = Date.now() - (toast.startTime ?? Date.now());\n toast.remainingTime = Math.max((toast.remainingTime ?? AUTO_DISMISS_DURATION) - elapsed, 0);\n }\n\n resume(id: string) {\n const toast = this.toasts.find((t) => t.id === id);\n if (!toast || !toast.autoDismiss || toast.isLeaving) return;\n\n this.startTimer(toast);\n }\n\n dismiss(id: string) {\n const index = this.toasts.findIndex((t) => t.id === id);\n if (index === -1) return;\n\n const toast = this.toasts[index];\n if (toast.isLeaving) return;\n\n clearTimeout(toast.timeoutId);\n\n // ✅ immutable update so Angular detects class change\n const leavingToast: Toast = { ...toast, isLeaving: true };\n this.toasts = [...this.toasts.slice(0, index), leavingToast, ...this.toasts.slice(index + 1)];\n this.emit();\n\n // remove after animation\n setTimeout(() => {\n this.toasts = this.toasts.filter((t) => t.id !== id);\n this.emit();\n\n // Process queue if there are pending toasts\n this.processQueue();\n }, EXIT_ANIMATION_DURATION);\n }\n\n private processQueue() {\n if (this.queue.length > 0 && this.toasts.length < this.maxToasts) {\n const nextToast = this.queue.shift();\n if (nextToast) {\n this.toasts = [...this.toasts, nextToast];\n this.emit();\n\n if (nextToast.autoDismiss) {\n this.startTimer(nextToast);\n }\n }\n }\n }\n\n private emit() {\n this.subject.next([...this.toasts]);\n }\n\n private generateId(): string {\n return Math.random().toString(36).slice(2, 9);\n }\n}\n","//toast component\nimport { Component, Input, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VdToastService } from './vd-toast.service';\nimport { Toast, ToastPosition } from './vd-toast.model';\nimport { VdIconButton } from '../vd-icon-button/vd-icon-button.component';\nimport { VdIcon } from '../vd-icon/vd-icon.component';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'vd-toast',\n standalone: true,\n imports: [CommonModule, VdIconButton, VdIcon],\n templateUrl: './vd-toast.component.html',\n styleUrls: ['./vd-toast.component.scss'],\n})\nexport class VdToast implements OnInit {\n @Input() maxStack?: number;\n\n positions: ToastPosition[] = [\n 'top-right',\n 'top-left',\n 'top-center',\n 'bottom-right',\n 'bottom-left',\n 'bottom-center',\n ];\n\n // 🔑 must be public for template access\n constructor(public toastService: VdToastService) {}\n\n ngOnInit() {\n // Configure toast service with component inputs if provided\n if (this.maxStack !== undefined) {\n this.toastService.configure({\n maxStack: this.maxStack,\n });\n }\n }\n\n get toastsByPosition$() {\n return this.toastService.toasts$.pipe(\n map((toasts) => {\n const grouped: Record<ToastPosition, Toast[]> = {\n 'top-right': [],\n 'top-left': [],\n 'top-center': [],\n 'bottom-right': [],\n 'bottom-left': [],\n 'bottom-center': [],\n };\n\n toasts.forEach((toast) => {\n const position = toast.position || 'top-right';\n grouped[position].push(toast);\n });\n\n return grouped;\n }),\n );\n }\n\n trackById(_: number, toast: Toast) {\n return toast.id;\n }\n\n close(id: string) {\n this.toastService.dismiss(id);\n }\n\n onMouseEnter(toast: Toast) {\n this.toastService.pause(toast.id!);\n }\n\n onMouseLeave(toast: Toast) {\n this.toastService.resume(toast.id!);\n }\n\n getIconName(toast: Toast): string {\n switch (toast.color) {\n case 'success':\n return 'vd-icon-tick-circle-filled';\n case 'error':\n return 'vd-icon-error-filled';\n case 'warning':\n return 'vd-icon-warning-filled';\n case 'info':\n return 'vd-icon-info-circle-filled';\n default:\n return '';\n }\n }\n}\n","<!-- //toast component -->\n<ng-container *ngIf=\"toastsByPosition$ | async as toastsByPosition\">\n <div\n *ngFor=\"let position of positions\"\n class=\"vd-toast-container\"\n [ngClass]=\"'vd-toast-container--' + position\"\n >\n <div\n *ngFor=\"let toast of toastsByPosition[position]; trackBy: trackById\"\n class=\"vd-toast-wrapper\"\n [class.vd-toast-wrapper--leaving]=\"toast.isLeaving\"\n >\n <div\n class=\"vd-toast\"\n [ngClass]=\"['vd-toast--' + toast.color]\"\n (mouseenter)=\"onMouseEnter(toast)\"\n (mouseleave)=\"onMouseLeave(toast)\"\n >\n <vd-icon\n *ngIf=\"getIconName(toast)\"\n class=\"vd-toast__icon\"\n [name]=\"getIconName(toast)\"\n ></vd-icon>\n\n <div class=\"vd-toast__content\">\n <h6 *ngIf=\"toast.title\" class=\"vd-toast__title title-medium\">\n {{ toast.title }}\n </h6>\n <p class=\"vd-toast__description label-medium\">\n {{ toast.description }}\n </p>\n </div>\n\n <vd-icon-button\n class=\"vd-toast__close\"\n icon=\"vd-icon-cross\"\n variant=\"transparent\"\n color=\"neutral\"\n size=\"sm\"\n [rounded]=\"true\"\n (click)=\"close(toast.id!)\"\n ></vd-icon-button>\n </div>\n </div>\n </div>\n</ng-container>\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type TooltipPosition =\n | 'top-center'\n | 'top-left'\n | 'top-right'\n | 'center-left'\n | 'center-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\n@Component({\n selector: 'vd-tooltip',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div class=\"vd-tooltip\" [attr.data-position]=\"position\">\n <p class=\"vd-tooltip__text body-small\">\n {{ text }}\n </p>\n <span class=\"vd-tooltip__arrow\"></span>\n </div>\n `,\n styleUrls: ['./vd-tooltip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VdTooltip {\n @Input() text = '';\n @Input() position: TooltipPosition = 'top-center';\n}\n","import {\n Directive,\n Input,\n ElementRef,\n HostListener,\n OnDestroy,\n ViewContainerRef,\n inject,\n} from '@angular/core';\nimport { Overlay, OverlayRef, ConnectedPosition } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { VdTooltip, TooltipPosition } from './vd-tooltip.component';\n\n@Directive({\n selector: '[vdTooltip]',\n standalone: true,\n})\nexport class VdTooltipDirective implements OnDestroy {\n @Input('vdTooltip') text = '';\n @Input() vdTooltipPosition: TooltipPosition = 'top-center';\n\n private overlayRef?: OverlayRef;\n\n private overlay = inject(Overlay);\n private elementRef = inject(ElementRef<HTMLElement>);\n private viewContainerRef = inject(ViewContainerRef);\n\n ngOnDestroy() {\n this.destroy();\n }\n\n @HostListener('mouseenter')\n show() {\n if (!this.text || this.overlayRef) return;\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPositions([POSITIONS[this.vdTooltipPosition]])\n .withPush(false);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n panelClass: 'vd-tooltip',\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n });\n\n const portal = new ComponentPortal(VdTooltip, this.viewContainerRef);\n\n const tooltipRef = this.overlayRef.attach(portal);\n tooltipRef.instance.text = this.text;\n tooltipRef.instance.position = this.vdTooltipPosition;\n }\n\n @HostListener('mouseleave')\n hide() {\n this.destroy();\n }\n\n private destroy() {\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n }\n}\n\nconst POSITIONS: Record<TooltipPosition, ConnectedPosition> = {\n 'top-center': {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -8,\n },\n 'top-left': {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n 'top-right': {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n 'bottom-center': {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 8,\n },\n 'bottom-left': {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n 'bottom-right': {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n 'center-left': {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n offsetX: -8,\n },\n 'center-right': {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n offsetX: 8,\n },\n};\n","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VdIcon } from '../vd-icon/vd-icon.component';\nimport { VdIconButton } from '../vd-icon-button/vd-icon-button.component';\nimport { VdTooltipDirective } from '../vd-tooltip/vd-tooltip.directive';\n\n@Component({\n selector: 'vd-input',\n standalone: true,\n imports: [CommonModule, VdIcon, VdIconButton, VdTooltipDirective],\n templateUrl: './vd-input.component.html',\n styleUrls: ['./vd-input.component.scss'],\n})\nexport class VdInput {\n // Basic properties\n @Input() label?: string;\n @Input() hintText?: string; // ? icon tooltip content\n @Input() helperText?: string; // below-input text (validation / guidance)\n @Input() optional?: boolean;\n\n @Input() leadingIcon?: string;\n @Input() trailingActionIcon?: string;\n\n @Input() placeholder: string = '';\n @Input() type: 'text' | 'password' = 'text';\n @Input() value: string = '';\n @Input() maxInputCount?: number;\n @Input() readOnly?: boolean;\n\n @Input() disabled?: boolean;\n\n // State\n @Input() state: 'success' | 'error' | 'warning' | null = null;\n\n // Outputs\n @Output() valueChange = new EventEmitter<string>(); // live input\n @Output() valueCommit = new EventEmitter<string>(); // on blur\n @Output() trailingActionClick = new EventEmitter<void>();\n @Output() inputFocus = new EventEmitter<void>(); // optional focus event\n\n // Internal\n inputId = 'vd-input-' + Math.random().toString(36).substring(2, 9);\n showHint = false;\n isFocused = false;\n\n // Focus / blur handling\n onFocus() {\n this.isFocused = true;\n this.inputFocus.emit();\n }\n @ViewChild('inputElement', { static: true })\n inputElement!: ElementRef<HTMLInputElement>;\n\n focusInput() {\n if (!this.disabled) {\n this.inputElement.nativeElement.focus();\n }\n }\n onBlur() {\n this.isFocused = false;\n this.valueCommit.emit(this.value); // emit value on blur\n }\n\n // Input handler\n onInput(event: Event) {\n let val = (event.target as HTMLInputElement).value;\n\n // enforce max input count\n if (this.maxInputCount) {\n val = val.slice(0, this.maxInputCount);\n }\n this.value = val;\n this.valueChange.emit(val); // emit live value\n }\n\n // Trailing action\n onTrailingActionClick(): void {\n this.trailingActionClick.emit();\n }\n\n toggleHint() {\n this.showHint = !this.showHint;\n }\n\n // Computed visual state (removes error while focused)\n get visualState(): 'success' | 'error' | 'warning' | null {\n if (this.state === 'error' && this.isFocused) return null;\n return this.state;\n }\n\n // Trailing state icon\n get trailingStateIcon(): string | null {\n switch (this.visualState) {\n case 'success':\n return 'vd-icon-tick-circle-filled';\n case 'error':\n return 'vd-icon-error-filled';\n case 'warning':\n return 'vd-icon-warning-filled';\n default:\n return null;\n }\n }\n}\n","<div\n class=\"vd-input\"\n [class.vd-input--error]=\"state === 'error'\"\n [class.vd-input--disabled]=\"disabled\"\n [class.vd-input--success]=\"state === 'success'\"\n [class.vd-input--warning]=\"state === 'warning'\"\n>\n <!-- Label row -->\n <div class=\"vd-input__label-row\" *ngIf=\"label || optional || hintText\">\n <label *ngIf=\"label\" class=\"vd-input__label\" [attr.for]=\"inputId\">\n {{ label }}\n </label>\n\n <vd-icon *ngIf=\"hintText\" name=\"vd-icon-help\" [vdTooltip]=\"hintText\"> ></vd-icon>\n <p *ngIf=\"optional\" class=\"vd-input__optional body-medium-italic\">Optional</p>\n </div>\n\n <div class=\"vd-input__container\" (click)=\"focusInput()\">\n <span *ngIf=\"leadingIcon\" class=\"vd-input__leading-icon\">\n <vd-icon [name]=\"leadingIcon\"></vd-icon>\n </span>\n\n <input\n #inputElement\n [id]=\"inputId\"\n class=\"vd-input__input body-medium\"\n [type]=\"type\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n [attr.maxlength]=\"maxInputCount ? maxInputCount : null\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n [disabled]=\"disabled\"\n [readonly]=\"readOnly\"\n />\n\n <span *ngIf=\"trailingStateIcon\" class=\"vd-input__trailing-icon state\">\n <vd-icon [name]=\"trailingStateIcon\"></vd-icon>\n </span>\n\n <span class=\"vd-input__trailing-action-container\" *ngIf=\"trailingActionIcon\">\n <vd-icon-button\n class=\"vd-input__trailing-action\"\n variant=\"transparent\"\n color=\"neutral\"\n [disabled]=\"disabled\"\n [icon]=\"trailingActionIcon\"\n (click)=\"onTrailingActionClick(); $event.stopPropagation()\"\n ></vd-icon-button>\n </span>\n </div>\n\n <!-- Helper & counter row -->\n <div class=\"vd-input__helper-row\" *ngIf=\"helperText || maxInputCount\">\n <span *ngIf=\"helperText\" class=\"vd-input__helper-text body-small\">\n {{ helperText }}\n </span>\n\n <span *ngIf=\"maxInputCount\" class=\"vd-input__input-counter body-small\">\n {{ value.length || 0 }}/{{ maxInputCount }}\n </span>\n </div>\n</div>\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { VdIcon } from '../vd-icon/vd-icon.component';\n\n@Component({\n selector: 'vd-checkbox',\n standalone: true,\n imports: [CommonModule, VdIcon],\n templateUrl: './vd-checkbox.component.html',\n styleUrls: ['./vd-checkbox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => VdCheckbox),\n multi: true,\n },\n ],\n})\nexport class VdCheckbox implements ControlValueAccessor, OnInit, OnChanges {\n @Input() label?: string;\n @Input() description?: string;\n @Input() checked = false;\n @Input() indeterminate = false;\n @Input() disabled = false;\n @Input() id?: string;\n @Input() name?: string;\n @Input() ariaLabel?: string;\n\n @Output() change = new EventEmitter<boolean>();\n\n @ViewChild('inputRef', { static: true }) inputRef!: ElementRef<HTMLInputElement>;\n\n inputId = '';\n\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.inputId = this.id ?? `vd-checkbox-${Math.random().toString(36).substring(2, 9)}`;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.inputRef) {\n const input = this.inputRef.nativeElement;\n if (changes['checked']) {\n input.checked = this.checked;\n }\n if (changes['indeterminate']) {\n input.indeterminate = this.indeterminate;\n }\n }\n }\n\n onInputChange(event: Event): void {\n event.stopPropagation();\n\n if (this.disabled) {\n return;\n }\n\n const input = event.target as HTMLInputElement;\n\n if (this.indeterminate) {\n this.indeterminate = false;\n this.checked = true;\n input.checked = true;\n input.indeterminate = false;\n } else {\n this.checked = input.checked;\n }\n\n this.onChange(this.checked);\n this.change.emit(this.checked);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n\n writeValue(value: boolean): void {\n this.checked = !!value;\n if (this.checked) {\n this.indeterminate = false;\n }\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<label\n class=\"vd-checkbox\"\n [class.vd-checkbox--checked]=\"checked\"\n [class.vd-checkbox--indeterminate]=\"indeterminate\"\n [class.vd-checkbox--disabled]=\"disabled\"\n>\n <span class=\"vd-checkbox__icon-container\">\n <input\n #inputRef\n class=\"vd-checkbox__input\"\n type=\"checkbox\"\n [id]=\"inputId\"\n [name]=\"name\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n [disabled]=\"disabled\"\n [attr.aria-checked]=\"indeterminate ? 'mixed' : checked\"\n [attr.aria-label]=\"ariaLabel || label\"\n (change)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"\n />\n <span class=\"vd-checkbox__box\">\n <vd-icon\n *ngIf=\"checked && !indeterminate\"\n class=\"vd-checkbox__icon\"\n name=\"vd-icon-tick\"\n size=\"sm\"\n ></vd-icon>\n <vd-icon\n *ngIf=\"indeterminate\"\n class=\"vd-checkbox__icon\"\n name=\"vd-icon-minus\"\n size=\"sm\"\n ></vd-icon>\n </span>\n </span>\n <span *ngIf=\"label || description\" class=\"vd-checkbox__content\">\n <span *ngIf=\"label\" class=\"vd-checkbox__label label-medium\">{{ label }}</span>\n <span *ngIf=\"description\" class=\"vd-checkbox__description body-small\">\n {{ description }}\n </span>\n </span>\n</label>\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VdCheckbox } from '../vd-checkbox/vd-checkbox.component';\n\nexport type VdCheckboxGroupDirection = 'vertical' | 'horizontal';\n\nexport interface VdCheckboxGroupItem {\n label: string;\n value?: string | number;\n description?: string;\n disabled?: boolean;\n children?: VdCheckboxGroupItem[];\n}\n\n@Component({\n selector: 'vd-checkbox-group',\n standalone: true,\n imports: [CommonModule, VdCheckbox],\n templateUrl: './vd-checkbox-group.component.html',\n styleUrls: ['./vd-checkbox-group.component.scss'],\n})\nexport class VdCheckboxGroup implements OnChanges {\n @Input() items: VdCheckboxGroupItem[] = [];\n @Input() direction: VdCheckboxGroupDirection = 'vertical';\n @Input() value: Array<string | number> = [];\n @Input() disabled = false;\n\n @Output() valueChange = new EventEmitter<Array<string | number>>();\n\n private selectedValues = new Set<string | number>();\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value'] || changes['items']) {\n this.syncSelectedValues();\n }\n }\n\n onItemChange(item: VdCheckboxGroupItem, checked: boolean): void {\n const targetValues = this.getSelectableValues(item);\n\n if (!targetValues.length) {\n return;\n }\n\n if (checked) {\n targetValues.forEach((value) => this.selectedValues.add(value));\n } else {\n targetValues.forEach((value) => this.selectedValues.delete(value));\n }\n\n this.emitValueChange();\n }\n\n isChecked(item: VdCheckboxGroupItem): boolean {\n const values = this.getSelectableValues(item);\n if (!values.length) {\n return item.value !== undefined ? this.selectedValues.has(item.value) : false;\n }\n\n return values.every((value) => this.selectedValues.has(value));\n }\n\n isIndeterminate(item: VdCheckboxGroupItem): boolean {\n const values = this.getSelectableValues(item);\n if (!values.length) {\n return false;\n }\n\n const selectedCount = values.filter((value) => this.selectedValues.has(value)).length;\n return selectedCount > 0 && selectedCount < values.length;\n }\n\n trackByItem = (_: number, item: VdCheckboxGroupItem): string | number =>\n item.value ?? item.label;\n\n private emitValueChange(): void {\n const orderedValues = this.getAllLeafValues(this.items).filter((value) =>\n this.selectedValues.has(value),\n );\n\n this.value = orderedValues;\n this.valueChange.emit([...orderedValues]);\n }\n\n private syncSelectedValues(): void {\n this.selectedValues = new Set(this.value ?? []);\n this.applyParentSelection(this.items);\n }\n\n private getSelectableValues(item: VdCheckboxGroupItem): Array<string | number> {\n if (item.children && item.children.length) {\n return this.getAllSelectableLeafValues(item.children, this.disabled || item.disabled);\n }\n\n if (this.disabled || item.disabled) {\n return [];\n }\n\n return [this.getItemValue(item)];\n }\n\n private getAllLeafValues(items: VdCheckboxGroupItem[]): Array<string | number> {\n return items.flatMap((item) => {\n if (item.children && item.children.length) {\n return this.getAllLeafValues(item.children);\n }\n\n return [this.getItemValue(item)];\n });\n }\n\n private getAllSelectableLeafValues(\n items: VdCheckboxGroupItem[],\n inheritedDisabled = false,\n ): Array<string | number> {\n return items.flatMap((item) => {\n const isDisabled = inheritedDisabled || this.disabled || item.disabled;\n\n if (item.children && item.children.length) {\n return this.getAllSelectableLeafValues(item.children, isDisabled);\n }\n\n if (isDisabled) {\n return [];\n }\n\n return [this.getItemValue(item)];\n });\n }\n\n private applyParentSelection(items: VdCheckboxGroupItem[], inheritedDisabled = false): void {\n items.forEach((item) => {\n const isDisabled = inheritedDisabled || this.disabled || item.disabled;\n\n if (item.children && item.children.length) {\n const parentValue = this.getItemValue(item);\n const childValues = this.getAllSelectableLeafValues(item.children, isDisabled);\n\n if (this.selectedValues.has(parentValue) && childValues.length) {\n childValues.forEach((value) => this.selectedValues.add(value));\n }\n\n this.applyParentSelection(item.children, isDisabled);\n }\n });\n }\n\n private getItemValue(item: VdCheckboxGroupItem): string | number {\n return item.value ?? item.label;\n }\n}\n","<div\n class=\"vd-checkbox-group\"\n [class.vd-checkbox-group--horizontal]=\"direction === 'horizontal'\"\n [class.vd-checkbox-group--vertical]=\"direction === 'vertical'\"\n>\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { items: items, level: 0 }\"\n ></ng-container>\n</div>\n\n<ng-template #itemsTemplate let-items=\"items\" let-level=\"level\">\n <div\n class=\"vd-checkbox-group__list\"\n [class.vd-checkbox-group__list--root]=\"level === 0\"\n [class.vd-checkbox-group__list--nested]=\"level > 0\"\n >\n <div *ngFor=\"let item of items; trackBy: trackByItem\" class=\"vd-checkbox-group__item\">\n <vd-checkbox\n [label]=\"item.label\"\n [description]=\"item.description\"\n [checked]=\"isChecked(item)\"\n [indeterminate]=\"isIndeterminate(item)\"\n [disabled]=\"disabled || item.disabled\"\n (change)=\"onItemChange(item, $event)\"\n ></vd-checkbox>\n\n <ng-container *ngIf=\"item.children?.length\">\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { items: item.children, level: level + 1 }\"\n ></ng-container>\n </ng-container>\n </div>\n </div>\n</ng-template>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\ntype BadgeVariant = 'solid' | 'subtle';\ntype BadgeColor = 'primary' | 'neutral' | 'error' | 'success' | 'info' | 'warning';\ntype BadgeSize = 'sm' | 'md';\n\n@Component({\n selector: 'vd-badge',\n standalone: true, // standalone is required\n imports: [CommonModule], // for *ngIf and [class]\n templateUrl: './vd-badge.component.html',\n styleUrls: ['./vd-badge.component.scss'],\n})\nexport class VdBadge {\n @Input() label: string = '';\n @Input() variant: BadgeVariant = 'solid';\n @Input() color: BadgeColor = 'primary';\n @Input() size: BadgeSize = 'md';\n @Input() rounded: boolean = false;\n}\n","<span\n class=\"vd-badge label-small\"\n [class.vd-badge--subtle]=\"variant === 'subtle'\"\n [class.vd-badge--neutral]=\"color === 'neutral'\"\n [class.vd-badge--error]=\"color === 'error'\"\n [class.vd-badge--success]=\"color === 'success'\"\n [class.vd-badge--info]=\"color === 'info'\"\n [class.vd-badge--warning]=\"color === 'warning'\"\n [class.vd-badge--sm]=\"size === 'sm'\"\n [class.vd-badge--rounded]=\"rounded\"\n>\n {{ label }}\n</span>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'vd-divider',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './vd-divider.component.html',\n styleUrls: ['./vd-divider.component.scss'],\n})\nexport class VdDivider {\n /** CSS class for the icon (e.g., \"vd-icon-save\") */\n @Input() dashed?: boolean = false;\n @Input() color?: string = 'primary';\n @Input() direction?: string = 'horizontal';\n @Input() inset?: boolean = false;\n}\n","<div\n class=\"vd-divider\"\n [class.vd-divider--dashed]=\"dashed\"\n [class.vd-divider--secondary]=\"color === 'secondary'\"\n [class.vd-divider--inset]=\"inset\"\n [class.vd-divider--vertical]=\"direction === 'vertical'\"\n>\n <span></span>\n</div>\n","import { Component, Input, Output, EventEmitter, OnChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VdButton } from '../vd-button/vd-button.component'; // adjust path\n\n@Component({\n selector: 'vd-pagination',\n standalone: true,\n imports: [CommonModule, VdButton],\n templateUrl: './vd-pagination.component.html',\n styleUrls: ['./vd-pagination.component.scss'],\n})\nexport class VdPagination implements OnChanges {\n @Input() totalPages: number = 1;\n @Input() currentPage: number = 1;\n @Output() pageChange = new EventEmitter<number>();\n\n pagesToShow: (number | '...')[] = [];\n\n ngOnChanges() {\n this.generatePages();\n }\n\n private generatePages() {\n const pages: (number | '...')[] = [];\n\n if (this.totalPages <= 7) {\n // Show all pages if 7 or less\n for (let i = 1; i <= this.totalPages; i++) pages.push(i);\n } else {\n // Active page in first 4\n if (this.currentPage <= 4) {\n pages.push(1, 2, 3, 4, 5, '...', this.totalPages);\n }\n // Active page in last 4\n else if (this.currentPage >= this.totalPages - 3) {\n pages.push(\n 1,\n '...',\n this.totalPages - 4,\n this.totalPages - 3,\n this.totalPages - 2,\n this.totalPages - 1,\n this.totalPages\n );\n }\n // Active page in the middle\n else {\n pages.push(\n 1,\n '...',\n this.currentPage - 1,\n this.currentPage,\n this.currentPage + 1,\n '...',\n this.totalPages\n );\n }\n }\n\n this.pagesToShow = pages;\n }\n\n goToPage(page: number | '...') {\n if (page === '...') return;\n this.currentPage = page;\n this.pageChange.emit(page);\n this.generatePages();\n }\n\n goPrevious() {\n if (this.currentPage > 1) this.goToPage(this.currentPage - 1);\n }\n\n goNext() {\n if (this.currentPage < this.totalPages) this.goToPage(this.currentPage + 1);\n }\n}\n","<div class=\"vd-pagination\">\n <!-- Previous Button -->\n <vd-button\n color=\"neutral\"\n variant=\"transparent\"\n leftIcon=\"vd-icon-caret-left\"\n label=\"Previous\"\n [disabled]=\"currentPage === 1\"\n (click)=\"goPrevious()\"\n size=\"sm\"\n ></vd-button>\n\n <!-- Page Numbers -->\n <ng-container *ngFor=\"let page of pagesToShow\">\n <!-- Regular page button -->\n <vd-button\n *ngIf=\"page !== currentPage && page !== '...'\"\n color=\"neutral\"\n variant=\"transparent\"\n [label]=\"page.toString()\"\n (click)=\"goToPage(page)\"\n size=\"sm\"\n ></vd-button>\n\n <!-- Active page button -->\n <vd-button\n *ngIf=\"page === currentPage\"\n color=\"primary\"\n variant=\"solid\"\n [label]=\"page.toString()\"\n size=\"sm\"\n ></vd-button>\n\n <!-- Ellipsis -->\n <vd-button\n *ngIf=\"page === '...'\"\n color=\"neutral\"\n variant=\"transparent\"\n label=\"...\"\n [disabled]=\"true\"\n size=\"sm\"\n ></vd-button>\n </ng-container>\n\n <!-- Next Button -->\n <vd-button\n color=\"neutral\"\n variant=\"transparent\"\n rightIcon=\"vd-icon-caret-right\"\n label=\"Next\"\n [disabled]=\"currentPage === totalPages\"\n size=\"sm\"\n (click)=\"goNext()\"\n ></vd-button>\n</div>\n","import { InjectionToken } from '@angular/core';\n\nexport interface VdDropdownControl {\n close(): void;\n id: string;\n}\n\nexport const VD_DROPDOWN = new InjectionToken<VdDropdownControl>('VD_DROPDOWN');\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class VdDropdownService {\n private openDropdownId$ = new BehaviorSubject<string | null>(null);\n\n open(id: string) {\n this.openDropdownId$.next(id);\n }\n\n close(id: string) {\n if (this.openDropdownId$.value === id) {\n this.openDropdownId$.next(null);\n }\n }\n closeAll() {\n this.openDropdownId$.next(null);\n }\n changes() {\n return this.openDropdownId$.asObservable();\n }\n\n isOpen(id: string): boolean {\n return this.openDropdownId$.value === id;\n }\n}\n","import {\n Component,\n Input,\n ViewChild,\n TemplateRef,\n ElementRef,\n ViewContainerRef,\n OnInit,\n OnDestroy,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Overlay, OverlayRef, ConnectedPosition } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Subject, takeUntil } from 'rxjs';\nimport { VdDropdownService } from './vd-dropdown.service';\nimport { VD_DROPDOWN } from './vd-dropdown.token';\n\n@Component({\n selector: 'vd-dropdown',\n standalone: true,\n imports: [CommonModule],\n providers: [\n {\n provide: VD_DROPDOWN,\n useExisting: VdDropdown,\n },\n ],\n templateUrl: './vd-dropdown.component.html',\n styleUrls: ['./vd-dropdown.component.scss'],\n})\nexport class VdDropdown implements OnInit, OnDestroy, OnChanges {\n @Input() position:\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right'\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'left-start'\n | 'right-start' = 'bottom-left';\n\n @ViewChild('dropdownTemplate') dropdownTemplate!: TemplateRef<any>;\n @ViewChild('trigger', { read: ElementRef }) trigger!: ElementRef<HTMLElement>;\n\n private overlayRef?: OverlayRef;\n private destroy$ = new Subject<void>();\n private id = Math.random().toString(36).slice(2);\n\n constructor(\n private overlay: Overlay,\n private vcr: ViewContainerRef,\n private dropdownService: VdDropdownService,\n ) {}\n\n ngOnInit() {\n this.dropdownService\n .changes()\n .pipe(takeUntil(this.destroy$))\n .subscribe((openId) => {\n if (openId !== this.id) {\n this.close();\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['position'] && !changes['position'].firstChange) {\n // Position has changed, dispose the old overlay so a new one will be created with the new position\n this.close();\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n }\n }\n }\n\n toggle() {\n this.overlayRef?.hasAttached() ? this.close() : this.open();\n }\n\n open() {\n if (this.overlayRef?.hasAttached()) return;\n\n if (!this.overlayRef || this.overlayRef.hostElement === null) {\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.trigger)\n .withPositions([POSITION_MAP[this.position]])\n .withFlexibleDimensions(true)\n .withGrowAfterOpen(true)\n .withPush(false),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n hasBackdrop: false,\n });\n\n this.overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this.destroy$))\n .subscribe((event) => {\n // Don't close if clicking on the trigger element\n if (!this.trigger.nativeElement.contains(event.target as Node)) {\n this.close();\n }\n });\n }\n\n const portal = new TemplatePortal(this.dropdownTemplate, this.vcr);\n\n this.overlayRef.attach(portal);\n this.dropdownService.open(this.id);\n }\n\n close() {\n if (!this.overlayRef) return;\n\n this.overlayRef.detach();\n this.dropdownService.close(this.id);\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n this.overlayRef?.dispose();\n }\n}\n\nconst POSITION_MAP: Record<string, ConnectedPosition> = {\n 'bottom-left': {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n 'bottom-center': {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 8,\n },\n 'bottom-right': {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n 'top-left': {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n 'top-center': {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -8,\n },\n 'top-right': {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n 'left-start': {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: -8,\n },\n 'right-start': {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: 8,\n },\n};\n","<div #trigger class=\"vd-dropdown__trigger\" (click)=\"toggle()\">\n <ng-content select=\"[vdDropdownTrigger]\"></ng-content>\n</div>\n\n<ng-template #dropdownTemplate let-close=\"close\">\n <div class=\"vd-dropdown__content\">\n <ng-content></ng-content>\n </div>\n</ng-template>\n","import { Component, Optional, Inject, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VdIcon } from '../../vd-icon/vd-icon.component';\nimport { VD_DROPDOWN, VdDropdownControl } from '../vd-dropdown.token';\n\n@Component({\n selector: 'vd-dropdown-item',\n standalone: true,\n imports: [CommonModule, VdIcon],\n template: `\n <div\n class=\"vd-dropdown-item\"\n [class.vd-dropdown-item--disabled]=\"disabled\"\n (click)=\"onClick()\"\n >\n <vd-icon *ngIf=\"icon\" class=\"vd-dropdown-item__icon\" [name]=\"icon\"></vd-icon>\n <div *ngIf=\"title || description\" class=\"vd-dropdown-item__content\">\n <div *ngIf=\"title\" class=\"vd-dropdown-item__title label-medium\">{{ title }}</div>\n <div *ngIf=\"description\" class=\"vd-dropdown-item__description body-small\">\n {{ description }}\n </div>\n </div>\n </div>\n `,\n styleUrls: ['./vd-dropdown-item.scss'],\n})\nexport class VdDropdownItem {\n @Input() title!: string;\n @Input() description?: string;\n @Input() icon?: string;\n @Input() disabled = false;\n\n @Output() select = new EventEmitter<void>();\n\n constructor(@Optional() @Inject(VD_DROPDOWN) private dropdown: VdDropdownControl | null) {}\n\n onClick() {\n if (this.disabled) return;\n this.select.emit();\n this.dropdown?.close(); // close the parent dropdown\n }\n}\n","import { Component, Optional, Inject, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'vd-dropdown-item-link',\n standalone: true,\n imports: [CommonModule],\n template: `\n <a\n class=\"vd-dropdown-item vd-dropdown-item__link\"\n [class.vd-dropdown-item--disabled]=\"disabled\"\n [href]=\"disabled ? null : href\"\n [target]=\"target\"\n (click)=\"onClick($event)\"\n >\n <div class=\"vd-dropdown-item__content\">\n <div class=\"vd-dropdown-item__title label-medium\">{{ title }}</div>\n </div>\n </a>\n `,\n styleUrls: ['./vd-dropdown-item.scss'],\n})\nexport class VdDropdownItemLink {\n @Input() href!: string;\n @Input() target?: string;\n @Input() title!: string;\n @Input() disabled = false;\n\n @Output() select = new EventEmitter<Event>();\n\n onClick(event: Event) {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n this.select.emit(event);\n }\n}\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VdDivider } from '../../vd-divider/vd-divider.component';\n\n@Component({\n selector: 'vd-dropdown-item-divider',\n standalone: true,\n imports: [CommonModule, VdDivider],\n template: ` <vd-divider class=\"vd-dropdown-item__divider\" color=\"secondary\"></vd-divider> `,\n styleUrls: ['./vd-dropdown-item.scss'],\n})\nexport class VdDropdownItemDivider {}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VdDivider } from '../../vd-divider/vd-divider.component';\n\n@Component({\n selector: 'vd-dropdown-item-group',\n standalone: true,\n imports: [CommonModule, VdDivider],\n template: ` <div class=\"vd-dropdown-item__group\">\n <div *ngIf=\"name\" class=\"vd-dropdown-item__group-title-row\">\n <div class=\"vd-dropdown-item__group-title body-small\">{{ name }}</div>\n <vd-divider\n class=\"vd-dropdown-item__divider\"\n color=\"secondary\"\n [inset]=\"true\"\n ></vd-divider>\n </div>\n <ng-content></ng-content>\n </div>`,\n styleUrls: ['./vd-dropdown-item.scss'],\n})\nexport class VdDropdownItemGroup {\n @Input() name?: string;\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TemplateRef } from '@angular/core';\nimport { VdPagination } from '../vd-pagination/vd-pagination.component';\nimport { VdDropdown } from '../vd-dropdown/vd-dropdown.component';\nimport { VdDropdownItem } from '../vd-dropdown/items/vd-dropdown-item';\nimport { VdIconButton } from '../vd-icon-button/vd-icon-button.component';\n\nexport interface VdDatatableColumn<T = any> {\n key: keyof T | string;\n title: string;\n cell?: (row: T) => string | number;\n template?: TemplateRef<DatatableCellContext<T>>;\n}\n\nexport interface VdDatatableAction<T = any> {\n title: string;\n icon?: string;\n action: (row: T) => void;\n visible?: (row: T) => boolean;\n disabled?: (row: T) => boolean;\n}\nexport interface DatatableCellContext<T> {\n $implicit: T;\n row: T;\n key: keyof T | string;\n}\n@Component({\n selector: 'vd-datatable',\n standalone: true,\n templateUrl: './vd-datatable.component.html',\n styleUrls: ['./vd-datatable.component.scss'],\n imports: [CommonModule, VdPagination, VdDropdown, VdDropdownItem, VdIconButton],\n})\nexport class VdDatatable<T extends Record<string, any> = any> {\n @Input() data: T[] = [];\n\n @Input() columns: VdDatatableColumn<T>[] = [];\n @Input() expandedColumns: VdDatatableColumn<T>[] = [];\n\n @Input() actions: VdDatatableAction<T>[] = [];\n\n @Input() currentPage = 1;\n @Input() totalPages = 0;\n @Input() rowsPerPage = 10;\n @Input() totalRows = 0;\n\n @Output() actionTriggered = new EventEmitter<{ action: string; row: T }>();\n @Output() rowClicked = new EventEmitter<T>();\n @Output() pageChange = new EventEmitter<number>();\n\n expandedRow: T | null = null;\n\n get isExpandable(): boolean {\n return this.expandedColumns.length > 0;\n }\n\n get pagedData(): T[] {\n const start = (this.currentPage - 1) * this.rowsPerPage;\n return this.data.slice(start, start + this.rowsPerPage);\n }\n\n toggleExpand(row: T) {\n if (!this.isExpandable) {\n this.rowClicked.emit(row);\n return;\n }\n this.expandedRow = this.expandedRow === row ? null : row;\n }\n\n getRowActions(row: T): VdDatatableAction<T>[] {\n return this.actions.filter((a) => (a.visible ? a.visible(row) : true));\n }\n\n hasActions(row: T): boolean {\n return this.getRowActions(row).length > 0;\n }\n\n onActionClick(action: VdDatatableAction<T>, row: T) {\n action.action(row);\n this.actionTriggered.emit({ action: action.title, row });\n }\n\n onPageChanged(page: number) {\n this.pageChange.emit(page);\n }\n get rangeStart(): number {\n return (this.currentPage - 1) * this.rowsPerPage + 1;\n }\n\n get rangeEnd(): number {\n return Math.min(this.currentPage * this.rowsPerPage, this.totalRows);\n }\n}\n","<div class=\"vd-datatable\">\n <table class=\"vd-datatable__table\">\n <thead>\n <tr>\n <th *ngFor=\"let col of columns\" class=\"label-medium vd-datatable__table-header\">\n <div class=\"vd-datatable__cell\">{{ col.title }}</div>\n </th>\n <th\n *ngIf=\"actions.length\"\n class=\"label-medium vd-datatable__table-header vd-datatable__table-header--actions\"\n >\n <div class=\"vd-datatable__cell\">Actions</div>\n </th>\n </tr>\n </thead>\n\n <tbody>\n <ng-container *ngFor=\"let row of pagedData\">\n <!-- Main row -->\n <tr\n class=\"vd-datatable__row\"\n [class.vd-datatable__row--expandable]=\"isExpandable\"\n (click)=\"toggleExpand(row)\"\n >\n <td *ngFor=\"let col of columns\" class=\"body-medium vd-datatable__table-data\">\n <div class=\"vd-datatable__cell\">\n <ng-container *ngIf=\"col.template; else defaultCell\">\n <ng-container\n *ngTemplateOutlet=\"\n col.template;\n context: {\n $implicit: row,\n row: row,\n key: col.key,\n }\n \"\n ></ng-container>\n </ng-container>\n\n <ng-template #defaultCell>\n {{ (col.cell ? col.cell(row) : row[col.key]) ?? 'N/A' }}\n </ng-template>\n </div>\n </td>\n\n <td\n class=\"vd-datatable__table-data vd-datatable__table-data--actions\"\n *ngIf=\"actions.length\"\n >\n <div class=\"vd-datatable__action-cell\" *ngIf=\"hasActions(row)\">\n <vd-dropdown position=\"bottom-right\" (click)=\"$event.stopPropagation()\">\n <vd-icon-button\n color=\"neutral\"\n variant=\"transparent\"\n icon=\"vd-icon-vertical-dot\"\n vdDropdownTrigger\n ></vd-icon-button>\n <vd-dropdown-item\n *ngFor=\"let act of getRowActions(row)\"\n [icon]=\"act.icon || 'vd-icon-placeholder'\"\n [title]=\"act.title\"\n [disabled]=\"act.disabled?.(row) || false\"\n (select)=\"onActionClick(act, row)\"\n ></vd-dropdown-item>\n </vd-dropdown>\n </div>\n </td>\n </tr>\n\n <!-- Expanded row -->\n <tr\n *ngIf=\"isExpandable && expandedRow === row\"\n class=\"vd-datatable__row vd-datatable__row--expanded\"\n >\n <td\n [attr.colspan]=\"columns.length + (actions.length ? 1 : 0)\"\n class=\"vd-datatable__table-data\"\n >\n <div class=\"vd-datatable__expanded-content\">\n <div *ngFor=\"let col of expandedColumns\" class=\"vd-datatable__expanded-row-item\">\n <div class=\"label-medium\">{{ col.title }}</div>\n <div class=\"body-medium\">\n {{ (col.cell ? col.cell(row) : row[col.key]) ?? 'N/A' }}\n </div>\n </div>\n </div>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n</div>\n\n<!-- Bottom -->\n<div class=\"vd-datatable__bottom\" *ngIf=\"totalPages || totalRows\">\n <div class=\"vd-datatable__counter\" *ngIf=\"totalRows\">\n Showing {{ rangeStart }} – {{ rangeEnd }} of {{ totalRows }}\n </div>\n\n <vd-pagination\n *ngIf=\"totalPages\"\n [currentPage]=\"currentPage\"\n [totalPages]=\"totalPages\"\n (pageChange)=\"onPageChanged($event)\"\n class=\"vd-datatable__pagination\"\n ></vd-pagination>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VdIcon } from '../vd-icon/vd-icon.component';\nimport { VdDivider } from '../vd-divider/vd-divider.component';\n\ntype AccordionStyle = 'filled' | 'divided';\n\n@Component({\n selector: 'vd-accordion',\n standalone: true,\n imports: [CommonModule, VdIcon, VdDivider],\n templateUrl: './vd-accordion.component.html',\n styleUrls: ['./vd-accordion.component.scss'],\n})\nexport class VdAccordion {\n @Input() title: string = 'Title';\n @Input() variant: AccordionStyle = 'filled';\n @Input() icon?: string;\n @Input() active: boolean = false;\n toggle(): void {\n this.active = !this.active;\n }\n}\n","<div\n [class.vd-accordion]=\"true\"\n [class.vd-accordion--filled]=\"variant === 'filled'\"\n [class.vd-accordion--divided]=\"variant === 'divided'\"\n [class.vd-accordion--active]=\"active\"\n>\n <!-- Title Row (clickable header) -->\n <button\n type=\"button\"\n class=\"vd-accordion__header\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"active\"\n >\n <!-- Optional Icon -->\n <vd-icon *ngIf=\"icon\" [name]=\"icon\" size=\"md\" class=\"vd-accordion__icon\"></vd-icon>\n\n <!-- Title -->\n <span class=\"vd-accordion__title\">{{ title }}</span>\n\n <vd-icon name=\"vd-icon-caret-down\" class=\"vd-accordion__caret\" size=\"md\"></vd-icon>\n </button>\n\n <!-- Content Row (expandable content) -->\n <div class=\"vd-accordion__content\">\n <div class=\"vd-accordion__content-inner\">\n <ng-content></ng-content>\n </div>\n </div>\n\n <!-- Divider (only for divided style) -->\n <div *ngIf=\"variant === 'divided'\" class=\"vd-accordion__divider-container\">\n <vd-divider [inset]=\"true\"></vd-divider>\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VdIcon } from '../vd-icon/vd-icon.component';\nimport { VdIconButton } from '../vd-icon-button/vd-icon-button.component';\nimport { VdTooltipDirective } from '../vd-tooltip/vd-tooltip.directive';\n\n@Component({\n selector: 'vd-textarea',\n standalone: true,\n imports: [CommonModule, VdIcon, VdIconButton, VdTooltipDirective],\n templateUrl: './vd-textarea.component.html',\n styleUrls: ['./vd-textarea.component.scss'],\n})\nexport class VdTextarea {\n // Basic properties\n @Input() label?: string;\n @Input() hintText?: string; // ? icon tooltip content\n @Input() helperText?: string; // below-input text (validation / guidance)\n @Input() optional?: boolean;\n\n @Input() leadingIcon?: string;\n @Input() trailingActionIcon?: string;\n\n @Input() placeholder: string = '';\n @Input() type: 'text' | 'password' = 'text';\n @Input() value: string = '';\n @Input() maxInputCount?: number;\n\n @Input() disabled?: boolean;\n\n // State\n @Input() state: 'success' | 'error' | 'warning' | null = null;\n\n // Outputs\n @Output() valueChange = new EventEmitter<string>(); // live input\n @Output() valueCommit = new EventEmitter<string>(); // on blur\n @Output() trailingActionClick = new EventEmitter<void>();\n @Output() inputFocus = new EventEmitter<void>(); // optional focus event\n\n // Internal\n inputId = 'vd-textarea-' + Math.random().toString(36).substring(2, 9);\n showHint = false;\n isFocused = false;\n\n // Focus / blur handling\n onFocus() {\n this.isFocused = true;\n this.inputFocus.emit();\n }\n\n onBlur() {\n this.isFocused = false;\n this.valueCommit.emit(this.value); // emit value on blur\n }\n @ViewChild('inputElement', { static: true })\n textareaElement!: ElementRef<HTMLTextAreaElement>;\n\n focusInput() {\n if (!this.disabled) {\n this.textareaElement.nativeElement.focus();\n }\n }\n // Input handler\n onInput(event: Event) {\n let val = (event.target as HTMLInputElement).value;\n\n // enforce max input count\n if (this.maxInputCount) {\n val = val.slice(0, this.maxInputCount);\n }\n this.value = val;\n this.valueChange.emit(val); // emit live value\n }\n\n // Trailing action\n onTrailingActionClick(): void {\n this.trailingActionClick.emit();\n }\n\n toggleHint() {\n this.showHint = !this.showHint;\n }\n\n // Computed visual state (removes error while focused)\n get visualState(): 'success' | 'error' | 'warning' | null {\n if (this.state === 'error' && this.isFocused) return null;\n return this.state;\n }\n\n // Trailing state icon\n get trailingStateIcon(): string | null {\n switch (this.visualState) {\n case 'success':\n return 'vd-icon-tick-circle-filled';\n case 'error':\n return 'vd-icon-error-filled';\n case 'warning':\n return 'vd-icon-warning-filled';\n default:\n return null;\n }\n }\n}\n","<div\n class=\"vd-textarea\"\n [class.vd-textarea--error]=\"state === 'error'\"\n [class.vd-textarea--disabled]=\"disabled\"\n [class.vd-textarea--success]=\"state === 'success'\"\n [class.vd-textarea--warning]=\"state === 'warning'\"\n>\n <!-- Label row -->\n <div class=\"vd-textarea__label-row\" *ngIf=\"label || optional || hintText\">\n <label *ngIf=\"label\" class=\"vd-textarea__label\" [attr.for]=\"inputId\">\n {{ label }}\n </label>\n\n <vd-icon *ngIf=\"hintText\" name=\"vd-icon-help\" [vdTooltip]=\"hintText\"> ></vd-icon>\n <p *ngIf=\"optional\" class=\"vd-textarea__optional body-medium-italic\">Optional</p>\n </div>\n\n <div class=\"vd-textarea__container\" (click)=\"focusInput()\">\n <span *ngIf=\"leadingIcon\" class=\"vd-textarea__leading-icon\">\n <vd-icon [name]=\"leadingIcon\"></vd-icon>\n </span>\n <textarea\n #inputElement\n [id]=\"inputId\"\n class=\"vd-textarea__input body-medium\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n [attr.maxlength]=\"maxInputCount ? maxInputCount : null\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n [disabled]=\"disabled\"\n ></textarea>\n\n <span *ngIf=\"trailingStateIcon\" class=\"vd-textarea__trailing-icon state\">\n <vd-icon [name]=\"trailingStateIcon\"></vd-icon>\n </span>\n\n <span class=\"vd-textarea__trailing-action-container\" *ngIf=\"trailingActionIcon\">\n <vd-icon-button\n class=\"vd-textarea__trailing-action\"\n variant=\"transparent\"\n color=\"neutral\"\n [disabled]=\"disabled\"\n [icon]=\"trailingActionIcon\"\n (click)=\"onTrailingActionClick(); $event.stopPropagation()\"\n ></vd-icon-button>\n </span>\n </div>\n\n <!-- Helper & counter row -->\n <div class=\"vd-textarea__helper-row\" *ngIf=\"helperText || maxInputCount\">\n <span *ngIf=\"helperText\" class=\"vd-textarea__helper-text body-small\">\n {{ helperText }}\n </span>\n\n <span *ngIf=\"maxInputCount\" class=\"vd-textarea__input-counter body-small\">\n {{ value.length || 0 }}/{{ maxInputCount }}\n </span>\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VdIcon } from '../vd-icon/vd-icon.component';\nimport { VdTooltipDirective } from '../vd-tooltip/vd-tooltip.directive';\n\nexport interface VdSelectOption<T = any> {\n label: string;\n value: T;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'vd-select',\n standalone: true,\n imports: [CommonModule, VdIcon, VdTooltipDirective],\n templateUrl: './vd-select.component.html',\n styleUrls: ['./vd-select.component.scss'],\n})\nexport class VdSelect<T = any> {\n // Basic properties\n @Input() label?: string;\n @Input() hintText?: string; // ? icon tooltip content\n @Input() helperText?: string; // below-input text (validation / guidance)\n @Input() optional?: boolean;\n\n @Input() leadingIcon?: string;\n\n @Input() placeholder: string = '';\n\n @Input() disabled?: boolean;\n\n @Input() options: VdSelectOption<T>[] = [];\n @Input() value: T | null = null;\n\n // State\n @Input() state: 'success' | 'error' | 'warning' | null = null;\n\n // Outputs\n @Output() valueChange = new EventEmitter<T | null>(); // live input\n @Output() valueCommit = new EventEmitter<T | null>(); // on blur\n @Output() inputFocus = new EventEmitter<void>(); // optional focus event\n\n // Internal\n selectId = 'vd-select-' + Math.random().toString(36).substring(2, 9);\n isFocused = false;\n\n // Focus / blur handling\n onFocus() {\n this.isFocused = true;\n this.inputFocus.emit();\n }\n\n onBlur() {\n this.isFocused = false;\n this.valueCommit.emit(this.value);\n }\n\n @ViewChild('selectElement', { static: true })\n selectElement!: ElementRef<HTMLSelectElement>;\n\n focusSelect() {\n if (!this.disabled) {\n if ('showPicker' in (this.selectElement.nativeElement as any)) {\n try {\n (this.selectElement.nativeElement as any).showPicker();\n } catch (error) {\n // Fallback if showPicker fails (e.g. not user activation)\n this.selectElement.nativeElement.focus();\n }\n } else {\n this.selectElement.nativeElement.focus();\n }\n }\n }\n // Input handler\n onChange(event: Event) {\n const target = event.target as HTMLSelectElement;\n const selectedValue = target.value;\n\n // Map back to option type if not string\n const matched = this.options.find((o) => String(o.value) === selectedValue);\n const val: T | null = matched ? matched.value : null;\n\n this.value = val;\n this.valueChange.emit(val);\n }\n\n // Computed visual state (removes error while focused)\n get visualState(): 'success' | 'error' | 'warning' | null {\n if (this.state === 'error' && this.isFocused) return null;\n return this.state;\n }\n\n // Trailing state icon\n get trailingStateIcon(): string | null {\n switch (this.visualState) {\n case 'success':\n return 'vd-icon-tick-circle-filled';\n case 'error':\n return 'vd-icon-error-filled';\n case 'warning':\n return 'vd-icon-warning-filled';\n default:\n return null;\n }\n }\n}\n","<div\n class=\"vd-select\"\n [class.vd-select--error]=\"state === 'error'\"\n [class.vd-select--disabled]=\"disabled\"\n [class.vd-select--success]=\"state === 'success'\"\n [class.vd-select--warning]=\"state === 'warning'\"\n>\n <!-- Label row -->\n <div class=\"vd-select__label-row\" *ngIf=\"label || optional || hintText\">\n <label *ngIf=\"label\" class=\"vd-select__label\" [attr.for]=\"selectId\">\n {{ label }}\n </label>\n\n <vd-icon *ngIf=\"hintText\" name=\"vd-icon-help\" [vdTooltip]=\"hintText\"> ></vd-icon>\n <p *ngIf=\"optional\" class=\"vd-select__optional body-medium-italic\">Optional</p>\n </div>\n\n <div class=\"vd-select__container\" (click)=\"focusSelect()\">\n <span *ngIf=\"leadingIcon\" class=\"vd-select__leading-icon\">\n <vd-icon [name]=\"leadingIcon\"></vd-icon>\n </span>\n\n <select\n #selectElement\n [id]=\"selectId\"\n class=\"vd-select__input body-medium\"\n [disabled]=\"disabled\"\n [value]=\"value !== null ? value : ''\"\n [class.placeholder]=\"!value\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (change)=\"onChange($event)\"\n >\n <option *ngIf=\"placeholder\" value=\"\" disabled selected hidden>{{ placeholder }}</option>\n <option\n *ngFor=\"let opt of options\"\n [value]=\"opt.value\"\n [disabled]=\"opt.disabled\"\n [selected]=\"opt.value === value\"\n >\n {{ opt.label }}\n </option>\n </select>\n\n <span *ngIf=\"trailingStateIcon\" class=\"vd-select__trailing-icon state\">\n <vd-icon [name]=\"trailingStateIcon\"></vd-icon>\n </span>\n\n <span class=\"vd-select__caret\">\n <vd-icon name=\"vd-icon-caret-down\"></vd-icon>\n </span>\n </div>\n\n <!-- Helper & counter row -->\n <div class=\"vd-select__helper-row\" *ngIf=\"helperText\">\n <span *ngIf=\"helperText\" class=\"vd-select__helper-text body-small\">\n {{ helperText }}\n </span>\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VdIcon } from '../../vd-icon/vd-icon.component';\nimport { VdIconButton } from '../../vd-icon-button/vd-icon-button.component';\n\n@Component({\n selector: 'vd-single-date-inline',\n standalone: true,\n imports: [CommonModule, VdIcon, VdIconButton],\n templateUrl: './vd-single-date-inline.component.html',\n styleUrls: ['./vd-single-date-inline.component.scss'],\n})\nexport class VdSingleDateInline implements OnInit {\n @Input() value: Date | null = null;\n @Input() showMonthYearSelector: boolean = false;\n @Input() minDate?: Date;\n @Input() maxDate?: Date;\n @Input() disabled: boolean = false;\n\n @Output() valueChange = new EventEmitter<Date | null>();\n\n // Calendar View State\n currentMonth: Date = new Date();\n today: Date = new Date();\n\n // Calendar Data\n weekDays: string[] = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n months: string[] = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n ];\n years: number[] = [];\n\n calendarDays: Array<{\n date: Date;\n inMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n isDisabled: boolean;\n }> = [];\n\n ngOnInit() {\n this.resetCalendarView();\n this.generateYearsArray();\n }\n\n generateYearsArray() {\n const currentYear = new Date().getFullYear();\n const startYear = currentYear - 100;\n const endYear = currentYear + 100;\n this.years = [];\n for (let year = startYear; year <= endYear; year++) {\n this.years.push(year);\n }\n }\n\n prevMonth(event?: Event) {\n event?.stopPropagation();\n this.currentMonth = new Date(\n this.currentMonth.getFullYear(),\n this.currentMonth.getMonth() - 1,\n 1,\n );\n this.generateCalendar();\n }\n\n nextMonth(event?: Event) {\n event?.stopPropagation();\n this.currentMonth = new Date(\n this.currentMonth.getFullYear(),\n this.currentMonth.getMonth() + 1,\n 1,\n );\n this.generateCalendar();\n }\n\n onMonthChange(event: Event) {\n event.stopPropagation();\n const target = event.target as HTMLSelectElement;\n const monthIndex = parseInt(target.value, 10);\n this.currentMonth = new Date(this.currentMonth.getFullYear(), monthIndex, 1);\n this.generateCalendar();\n }\n\n onYearChange(event: Event) {\n event.stopPropagation();\n const target = event.target as HTMLSelectElement;\n const year = parseInt(target.value, 10);\n this.currentMonth = new Date(year, this.currentMonth.getMonth(), 1);\n this.generateCalendar();\n }\n\n get currentMonthLabel(): string {\n return this.currentMonth.toLocaleString('default', { month: 'long', year: 'numeric' });\n }\n\n get selectedMonth(): number {\n return this.currentMonth.getMonth();\n }\n\n get selectedYear(): number {\n return this.currentMonth.getFullYear();\n }\n\n get selectedMonthValue(): string {\n return this.selectedMonth.toString();\n }\n\n get selectedYearValue(): string {\n return this.selectedYear.toString();\n }\n\n generateCalendar() {\n this.calendarDays = this.generateMonthCalendar(\n this.currentMonth.getFullYear(),\n this.currentMonth.getMonth(),\n );\n }\n\n private generateMonthCalendar(\n year: number,\n month: number,\n ): Array<{\n isDisabled: boolean;\n date: Date;\n inMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n }> {\n const firstDayOfMonth = new Date(year, month, 1);\n const lastDayOfMonth = new Date(year, month + 1, 0);\n const startDayOfWeek = firstDayOfMonth.getDay();\n\n const days: any[] = [];\n\n // Add previous month's days\n for (let i = startDayOfWeek - 1; i >= 0; i--) {\n const date = new Date(year, month, -i);\n days.push(this.createDayObject(date, false));\n }\n\n // Add current month's days\n for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {\n const date = new Date(year, month, i);\n days.push(this.createDayObject(date, true));\n }\n\n // Add next month's days to fill the grid (6 rows * 7 days = 42 cells)\n const remainingCells = 42 - days.length;\n for (let i = 1; i <= remainingCells; i++) {\n const date = new Date(year, month + 1, i);\n days.push(this.createDayObject(date, false));\n }\n\n return days;\n }\n\n createDayObject(date: Date, inMonth: boolean) {\n const isToday = this.isSameDay(date, this.today);\n let isSelected = false;\n let isDisabled = false;\n\n const dateTime = new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime();\n if (this.minDate) {\n const minTime = new Date(\n this.minDate.getFullYear(),\n this.minDate.getMonth(),\n this.minDate.getDate(),\n ).getTime();\n if (dateTime < minTime) {\n isDisabled = true;\n }\n }\n if (this.maxDate) {\n const maxTime = new Date(\n this.maxDate.getFullYear(),\n this.maxDate.getMonth(),\n this.maxDate.getDate(),\n ).getTime();\n if (dateTime > maxTime) {\n isDisabled = true;\n }\n }\n\n if (this.value instanceof Date) {\n isSelected = this.isSameDay(date, this.value);\n }\n\n return {\n date,\n inMonth,\n isToday,\n isSelected,\n isDisabled,\n };\n }\n\n onDateClick(dayObj: any, event: Event) {\n if (dayObj.isDisabled) {\n return;\n }\n\n event.stopPropagation();\n this.value = dayObj.date;\n this.valueChange.emit(this.value);\n this.generateCalendar();\n }\n\n isSameDay(d1: Date, d2: Date): boolean {\n if (!d1 || !d2) return false;\n return (\n d1.getDate() === d2.getDate() &&\n d1.getMonth() === d2.getMonth() &&\n d1.getFullYear() === d2.getFullYear()\n );\n }\n\n resetCalendarView() {\n if (this.showMonthYearSelector) {\n if (this.value instanceof Date) {\n this.currentMonth = new Date(this.value);\n } else {\n const now = new Date();\n this.currentMonth = new Date(now.getFullYear(), now.getMonth(), 1);\n }\n\n if (isNaN(this.currentMonth.getTime())) {\n this.currentMonth = new Date();\n }\n this.generateCalendar();\n return;\n }\n\n if (this.value instanceof Date) {\n this.currentMonth = new Date(this.value);\n } else {\n this.currentMonth = new Date();\n }\n\n if (isNaN(this.currentMonth.getTime())) {\n this.currentMonth = new Date();\n }\n this.generateCalendar();\n }\n}\n","<div class=\"vd-single-date-inline\">\n <!-- Single Month -->\n <div class=\"vd-single-date-inline__month-container\">\n <!-- Header: Month Navigation -->\n <div class=\"vd-single-date-inline__header\">\n <vd-icon-button\n icon=\"vd-icon-caret-left\"\n variant=\"transparent\"\n color=\"neutral\"\n size=\"sm\"\n (click)=\"prevMonth($event)\"\n >\n </vd-icon-button>\n\n <!-- Show dropdowns for month and year selection if enabled -->\n <div *ngIf=\"showMonthYearSelector\" class=\"vd-single-date-inline__selectors\">\n <div class=\"vd-single-date-inline__month-selector\">\n <select\n class=\"vd-single-date-inline__month-select label-medium\"\n [value]=\"selectedMonthValue\"\n (change)=\"onMonthChange($event)\"\n (click)=\"$event.stopPropagation()\"\n >\n <option\n *ngFor=\"let month of months; let i = index\"\n [value]=\"i.toString()\"\n [selected]=\"i.toString() === selectedMonthValue\"\n >\n {{ month }}\n </option>\n </select>\n <vd-icon name=\"vd-icon-caret-down\" class=\"vd-single-date-inline__caret\"></vd-icon>\n </div>\n <div class=\"vd-single-date-inline__year-selector\">\n <select\n class=\"vd-single-date-inline__year-select label-medium\"\n [value]=\"selectedYearValue\"\n (change)=\"onYearChange($event)\"\n (click)=\"$event.stopPropagation()\"\n >\n <option\n *ngFor=\"let year of years\"\n [value]=\"year.toString()\"\n [selected]=\"year === selectedYear\"\n >\n {{ year }}\n </option>\n </select>\n <vd-icon name=\"vd-icon-caret-down\" class=\"vd-single-date-inline__caret\"></vd-icon>\n </div>\n </div>\n\n <!-- Without selectors: Show month label -->\n <span\n *ngIf=\"!showMonthYearSelector\"\n class=\"vd-single-date-inline__month-label label-medium\"\n >{{ currentMonthLabel }}</span\n >\n\n <vd-icon-button\n icon=\"vd-icon-caret-right\"\n variant=\"transparent\"\n color=\"neutral\"\n size=\"sm\"\n (click)=\"nextMonth($event)\"\n >\n </vd-icon-button>\n </div>\n\n <!-- Calendar Grid -->\n <div class=\"vd-single-date-inline__grid\">\n <!-- Weekday Headers -->\n <div class=\"vd-single-date-inline__weekday label-small\" *ngFor=\"let day of weekDays\">\n {{ day }}\n </div>\n\n <!-- Days -->\n <div\n class=\"vd-single-date-inline__day body-medium\"\n *ngFor=\"let dayObj of calendarDays\"\n [class.outside-month]=\"!dayObj.inMonth\"\n [class.today]=\"dayObj.isToday\"\n [class.selected]=\"dayObj.isSelected\"\n [class.disabled]=\"dayObj.isDisabled\"\n (click)=\"onDateClick(dayObj, $event)\"\n >\n <span class=\"vd-single-date-inline__day-number\">{{ dayObj.date.getDate() }}</span>\n </div>\n </div>\n </div>\n</div>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n TemplateRef,\n ElementRef,\n ViewContainerRef,\n OnChanges,\n SimpleChanges,\n OnDestroy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Overlay, OverlayRef, ConnectedPosition } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { VdInput } from '../../vd-input/vd-input.component';\nimport { VdSingleDateInline } from '../vd-single-date-inline/vd-single-date-inline.component';\n\n@Component({\n selector: 'vd-single-date-picker',\n standalone: true,\n imports: [CommonModule, VdInput, VdSingleDateInline],\n templateUrl: './vd-single-date-picker.component.html',\n styleUrls: ['./vd-single-date-picker.component.scss'],\n})\nexport class VdSingleDatePicker implements OnChanges, OnDestroy {\n // Basic Inputs\n @Input() label?: string;\n @Input() hintText?: string;\n @Input() helperText?: string;\n @Input() optional?: boolean;\n @Input() placeholder: string = 'Select date';\n @Input() disabled: boolean = false;\n @Input() leadingIcon?: string;\n @Input() showMonthYearSelector: boolean = false;\n @Input() dropdownPosition:\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right'\n | 'top-left'\n | 'top-center'\n | 'top-right' = 'bottom-left';\n @Input() minDate?: Date;\n @Input() maxDate?: Date;\n\n // Value - single Date\n @Input() value: Date | null = null;\n\n // State\n @Input() state: 'success' | 'error' | 'warning' | null = null;\n\n // Outputs\n @Output() valueChange = new EventEmitter<Date | null>();\n @Output() inputFocus = new EventEmitter<void>();\n @Output() inputBlur = new EventEmitter<void>();\n\n // Internal State\n isOpen = false;\n isFocused = false;\n @ViewChild('trigger', { read: ElementRef, static: true }) trigger!: ElementRef<HTMLElement>;\n @ViewChild('calendarPopupTemplate') calendarPopupTemplate!: TemplateRef<unknown>;\n private overlayRef?: OverlayRef;\n private readonly onAnyScroll = () => this.overlayRef?.updatePosition();\n\n // Computed visual state (removes error while focused)\n get visualState(): 'success' | 'error' | 'warning' | null {\n if (this.state === 'error' && this.isFocused) return null;\n return this.state;\n }\n\n constructor(\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['dropdownPosition'] && !changes['dropdownPosition'].firstChange) {\n this.overlayRef?.updatePositionStrategy(this.getPositionStrategy());\n this.overlayRef?.updatePosition();\n }\n }\n\n // Value Formatting\n get displayValue(): string {\n if (!this.value) return '';\n return this.formatDate(this.value);\n }\n\n private formatDate(date: Date): string {\n if (!date) return '';\n\n // Convert to Date object if it's a string\n const dateObj = date instanceof Date ? date : new Date(date);\n\n // Check if valid date\n if (isNaN(dateObj.getTime())) return '';\n\n // DD/MM/YYYY format\n const d = dateObj.getDate().toString().padStart(2, '0');\n const m = (dateObj.getMonth() + 1).toString().padStart(2, '0');\n const y = dateObj.getFullYear();\n\n return `${d}/${m}/${y}`;\n }\n\n // Focus Handling\n toggleCalendar() {\n if (this.disabled) return;\n\n if (this.isOpen) {\n this.closeCalendar();\n return;\n }\n\n this.openCalendar();\n }\n\n onInputFocus() {\n if (this.disabled) return;\n this.isFocused = true;\n this.inputFocus.emit();\n if (!this.isOpen) {\n this.openCalendar(false);\n }\n }\n\n onInputBlur() {\n if (!this.isOpen) {\n this.isFocused = false;\n this.inputBlur.emit();\n }\n }\n\n // Handle date selection from inline component\n onDateSelect(date: Date | null) {\n this.value = date;\n this.valueChange.emit(this.value);\n this.closeCalendar();\n }\n\n ngOnDestroy() {\n this.stopScrollTracking();\n this.overlayRef?.dispose();\n }\n\n private openCalendar(emitFocus: boolean = true) {\n if (!this.trigger?.nativeElement) return;\n\n if (!this.overlayRef || this.overlayRef.hostElement === null) {\n this.overlayRef = this.overlay.create({\n positionStrategy: this.getPositionStrategy(),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n hasBackdrop: false,\n });\n this.overlayRef.hostElement.style.zIndex = '999';\n\n this.overlayRef.outsidePointerEvents().subscribe((event) => {\n const target = event.target as Node | null;\n\n // Keep popup open when interacting with trigger\n if (target && this.trigger?.nativeElement.contains(target)) {\n return;\n }\n\n this.closeCalendar();\n });\n }\n\n if (!this.overlayRef.hasAttached()) {\n const portal = new TemplatePortal(this.calendarPopupTemplate, this.viewContainerRef);\n this.overlayRef.attach(portal);\n }\n\n this.isOpen = true;\n this.isFocused = true;\n if (emitFocus) {\n this.inputFocus.emit();\n }\n this.startScrollTracking();\n this.overlayRef.updatePosition();\n }\n\n private closeCalendar() {\n const wasOpen = this.isOpen;\n if (this.overlayRef?.hasAttached()) {\n this.overlayRef.detach();\n }\n this.isOpen = false;\n this.isFocused = false;\n this.stopScrollTracking();\n if (wasOpen) {\n this.inputBlur.emit();\n }\n }\n\n private getPositionStrategy() {\n return this.overlay\n .position()\n .flexibleConnectedTo(this.getOverlayOriginElement())\n .withPositions([POSITION_MAP[this.dropdownPosition]])\n .withFlexibleDimensions(false)\n .withGrowAfterOpen(true)\n .withPush(false);\n }\n\n private getOverlayOriginElement(): HTMLElement {\n return (\n this.trigger.nativeElement.querySelector('.vd-input__container') ?? this.trigger.nativeElement\n );\n }\n\n private startScrollTracking() {\n if (typeof window === 'undefined') return;\n window.addEventListener('scroll', this.onAnyScroll, true);\n }\n\n private stopScrollTracking() {\n if (typeof window === 'undefined') return;\n window.removeEventListener('scroll', this.onAnyScroll, true);\n }\n}\n\nconst POSITION_MAP: Record<\n 'bottom-left' | 'bottom-center' | 'bottom-right' | 'top-left' | 'top-center' | 'top-right',\n ConnectedPosition\n> = {\n 'bottom-left': {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n 'bottom-center': {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 8,\n },\n 'bottom-right': {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n 'top-left': {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n 'top-center': {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -8,\n },\n 'top-right': {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n};\n","<div\n class=\"vd-single-date-picker\"\n [class.vd-single-date-picker--error]=\"visualState === 'error'\"\n [class.vd-single-date-picker--success]=\"visualState === 'success'\"\n [class.vd-single-date-picker--warning]=\"visualState === 'warning'\"\n [class.vd-single-date-picker--disabled]=\"disabled\"\n [class.vd-single-date-picker--open]=\"isOpen\"\n>\n <div class=\"vd-single-date-picker__field\" #trigger>\n <vd-input\n [label]=\"label\"\n [hintText]=\"hintText\"\n [helperText]=\"helperText\"\n [optional]=\"optional\"\n [leadingIcon]=\"leadingIcon\"\n [trailingActionIcon]=\"'vd-icon-calendar'\"\n [placeholder]=\"placeholder\"\n [value]=\"displayValue\"\n [readOnly]=\"true\"\n [disabled]=\"disabled\"\n [state]=\"visualState\"\n (trailingActionClick)=\"toggleCalendar()\"\n (inputFocus)=\"onInputFocus()\"\n (valueCommit)=\"onInputBlur()\"\n ></vd-input>\n </div>\n</div>\n\n<ng-template #calendarPopupTemplate>\n <div class=\"vd-single-date-picker__calendar-popup\" (click)=\"$event.stopPropagation()\">\n <vd-single-date-inline\n [value]=\"value\"\n (valueChange)=\"onDateSelect($event)\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [showMonthYearSelector]=\"showMonthYearSelector\"\n [disabled]=\"disabled\"\n ></vd-single-date-inline>\n </div>\n</ng-template>\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VdIconButton } from '../../vd-icon-button/vd-icon-button.component';\n\nexport interface DateRange {\n start: Date | null;\n end: Date | null;\n}\n\n@Component({\n selector: 'vd-range-date-inline',\n standalone: true,\n imports: [CommonModule, VdIconButton],\n templateUrl: './vd-range-date-inline.component.html',\n styleUrls: ['./vd-range-date-inline.component.scss'],\n})\nexport class VdRangeDateInline implements OnInit {\n @Input() value: DateRange | null = null;\n @Input() minDate?: Date;\n @Input() maxDate?: Date;\n @Input() disabled: boolean = false;\n\n @Output() valueChange = new EventEmitter<DateRange | null>();\n\n // Calendar View State\n currentMonth: Date = new Date();\n today: Date = new Date();\n\n // Calendar Data\n weekDays: string[] = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n months: string[] = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n ];\n\n calendarDays: Array<{\n date: Date;\n inMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n isRangeStart: boolean;\n isRangeEnd: boolean;\n isInRange: boolean;\n isDisabled: boolean;\n }> = [];\n\n nextMonthCalendarDays: Array<{\n isDisabled: boolean;\n date: Date;\n inMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n isRangeStart: boolean;\n isRangeEnd: boolean;\n isInRange: boolean;\n }> = [];\n\n ngOnInit() {\n this.resetCalendarView();\n }\n\n prevMonth(event?: Event) {\n event?.stopPropagation();\n this.currentMonth = new Date(\n this.currentMonth.getFullYear(),\n this.currentMonth.getMonth() - 1,\n 1,\n );\n this.generateCalendar();\n }\n\n nextMonth(event?: Event) {\n event?.stopPropagation();\n this.currentMonth = new Date(\n this.currentMonth.getFullYear(),\n this.currentMonth.getMonth() + 1,\n 1,\n );\n this.generateCalendar();\n }\n\n get currentMonthLabel(): string {\n return this.currentMonth.toLocaleString('default', { month: 'long', year: 'numeric' });\n }\n\n get nextMonthLabel(): string {\n const nextMonth = new Date(\n this.currentMonth.getFullYear(),\n this.currentMonth.getMonth() + 1,\n 1,\n );\n return nextMonth.toLocaleString('default', { month: 'long', year: 'numeric' });\n }\n\n generateCalendar() {\n this.calendarDays = this.generateMonthCalendar(\n this.currentMonth.getFullYear(),\n this.currentMonth.getMonth(),\n );\n\n const nextMonth = new Date(\n this.currentMonth.getFullYear(),\n this.currentMonth.getMonth() + 1,\n 1,\n );\n this.nextMonthCalendarDays = this.generateMonthCalendar(\n nextMonth.getFullYear(),\n nextMonth.getMonth(),\n );\n }\n\n private generateMonthCalendar(\n year: number,\n month: number,\n ): Array<{\n isDisabled: boolean;\n date: Date;\n inMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n isRangeStart: boolean;\n isRangeEnd: boolean;\n isInRange: boolean;\n }> {\n const firstDayOfMonth = new Date(year, month, 1);\n const lastDayOfMonth = new Date(year, month + 1, 0);\n const startDayOfWeek = firstDayOfMonth.getDay();\n\n const days: any[] = [];\n\n for (let i = startDayOfWeek - 1; i >= 0; i--) {\n const date = new Date(year, month, -i);\n days.push(this.createDayObject(date, false));\n }\n\n for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {\n const date = new Date(year, month, i);\n days.push(this.createDayObject(date, true));\n }\n\n const remainingCells = 42 - days.length;\n for (let i = 1; i <= remainingCells; i++) {\n const date = new Date(year, month + 1, i);\n days.push(this.createDayObject(date, false));\n }\n\n return days;\n }\n\n createDayObject(date: Date, inMonth: boolean) {\n const isToday = this.isSameDay(date, this.today);\n let isSelected = false;\n let isRangeStart = false;\n let isRangeEnd = false;\n let isInRange = false;\n let isDisabled = false;\n\n const dateTime = new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime();\n if (this.minDate) {\n const minTime = new Date(\n this.minDate.getFullYear(),\n this.minDate.getMonth(),\n this.minDate.getDate(),\n ).getTime();\n if (dateTime < minTime) {\n isDisabled = true;\n }\n }\n if (this.maxDate) {\n const maxTime = new Date(\n this.maxDate.getFullYear(),\n this.maxDate.getMonth(),\n this.maxDate.getDate(),\n ).getTime();\n if (dateTime > maxTime) {\n isDisabled = true;\n }\n }\n\n if (this.value && 'start' in this.value) {\n const range = this.value as DateRange;\n if (range.start) isRangeStart = this.isSameDay(date, range.start);\n if (range.end) isRangeEnd = this.isSameDay(date, range.end);\n\n isSelected = isRangeStart || isRangeEnd;\n\n if (range.start && range.end) {\n const time = date.getTime();\n isInRange = time > range.start.getTime() && time < range.end.getTime();\n }\n }\n\n return {\n date,\n inMonth,\n isToday,\n isSelected,\n isRangeStart,\n isRangeEnd,\n isInRange,\n isDisabled,\n };\n }\n\n onDateClick(dayObj: any, event: Event) {\n if (dayObj.isDisabled) {\n return;\n }\n\n const date = dayObj.date;\n event.stopPropagation();\n\n let range = (this.value as DateRange) || { start: null, end: null };\n\n if ((range.start && range.end) || !range.start) {\n range = { start: date, end: null };\n } else {\n if (date < range.start) {\n range = { start: date, end: null };\n } else {\n range = { start: range.start, end: date };\n }\n }\n\n this.value = range;\n this.valueChange.emit(this.value);\n this.generateCalendar();\n }\n\n isSameDay(d1: Date, d2: Date): boolean {\n if (!d1 || !d2) return false;\n return (\n d1.getDate() === d2.getDate() &&\n d1.getMonth() === d2.getMonth() &&\n d1.getFullYear() === d2.getFullYear()\n );\n }\n\n resetCalendarView() {\n if (this.value?.start) {\n this.currentMonth = new Date(this.value.start);\n } else {\n this.currentMonth = new Date();\n }\n\n if (isNaN(this.currentMonth.getTime())) {\n this.currentMonth = new Date();\n }\n this.generateCalendar();\n }\n}\n","<div class=\"vd-range-date-inline\">\n <!-- First Month -->\n <div class=\"vd-range-date-inline__month-container\">\n <!-- Header: Month Navigation -->\n <div class=\"vd-range-date-inline__header\">\n <vd-icon-button\n icon=\"vd-icon-caret-left\"\n variant=\"transparent\"\n color=\"neutral\"\n size=\"sm\"\n (click)=\"prevMonth($event)\"\n >\n </vd-icon-button>\n\n <span class=\"vd-range-date-inline__month-label label-medium\">{{ currentMonthLabel }}</span>\n\n <!-- Empty space to maintain layout -->\n <div style=\"width: 32px\"></div>\n </div>\n\n <!-- Calendar Grid -->\n <div class=\"vd-range-date-inline__grid\">\n <!-- Weekday Headers -->\n <div class=\"vd-range-date-inline__weekday label-small\" *ngFor=\"let day of weekDays\">\n {{ day }}\n </div>\n\n <!-- Days -->\n <div\n class=\"vd-range-date-inline__day body-medium\"\n *ngFor=\"let dayObj of calendarDays\"\n [class.outside-month]=\"!dayObj.inMonth\"\n [class.today]=\"dayObj.isToday\"\n [class.selected]=\"dayObj.isSelected\"\n [class.range-start]=\"dayObj.isRangeStart\"\n [class.range-end]=\"dayObj.isRangeEnd\"\n [class.in-range]=\"dayObj.isInRange\"\n [class.disabled]=\"dayObj.isDisabled\"\n (click)=\"onDateClick(dayObj, $event)\"\n >\n <span class=\"vd-range-date-inline__day-number\">{{ dayObj.date.getDate() }}</span>\n </div>\n </div>\n </div>\n\n <!-- Second Month -->\n <div class=\"vd-range-date-inline__month-container\">\n <!-- Header: Month Navigation -->\n <div class=\"vd-range-date-inline__header\">\n <!-- Empty space to maintain layout -->\n <div style=\"width: 32px\"></div>\n\n <span class=\"vd-range-date-inline__month-label label-medium\">{{ nextMonthLabel }}</span>\n\n <vd-icon-button\n icon=\"vd-icon-caret-right\"\n variant=\"transparent\"\n color=\"neutral\"\n size=\"sm\"\n (click)=\"nextMonth($event)\"\n >\n </vd-icon-button>\n </div>\n\n <!-- Calendar Grid -->\n <div class=\"vd-range-date-inline__grid\">\n <!-- Weekday Headers -->\n <div class=\"vd-range-date-inline__weekday label-small\" *ngFor=\"let day of weekDays\">\n {{ day }}\n </div>\n\n <!-- Days -->\n <div\n class=\"vd-range-date-inline__day body-medium\"\n *ngFor=\"let dayObj of nextMonthCalendarDays\"\n [class.outside-month]=\"!dayObj.inMonth\"\n [class.today]=\"dayObj.isToday\"\n [class.selected]=\"dayObj.isSelected\"\n [class.range-start]=\"dayObj.isRangeStart\"\n [class.range-end]=\"dayObj.isRangeEnd\"\n [class.in-range]=\"dayObj.isInRange\"\n [class.disabled]=\"dayObj.isDisabled\"\n (click)=\"onDateClick(dayObj, $event)\"\n >\n <span class=\"vd-range-date-inline__day-number\">{{ dayObj.date.getDate() }}</span>\n </div>\n </div>\n </div>\n</div>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n TemplateRef,\n ElementRef,\n ViewContainerRef,\n OnChanges,\n SimpleChanges,\n OnDestroy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Overlay, OverlayRef, ConnectedPosition } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { VdInput } from '../../vd-input/vd-input.component';\nimport {\n VdRangeDateInline,\n DateRange,\n} from '../vd-range-date-inline/vd-range-date-inline.component';\n\n// Re-export DateRange for backward compatibility\nexport type { DateRange } from '../vd-range-date-inline/vd-range-date-inline.component';\n\n@Component({\n selector: 'vd-range-date-picker',\n standalone: true,\n imports: [CommonModule, VdInput, VdRangeDateInline],\n templateUrl: './vd-range-date-picker.component.html',\n styleUrls: ['./vd-range-date-picker.component.scss'],\n})\nexport class VdRangeDatePicker implements OnChanges, OnDestroy {\n // Basic Inputs\n @Input() label?: string;\n @Input() hintText?: string;\n @Input() helperText?: string;\n @Input() optional?: boolean;\n @Input() placeholder: string = 'Select date range';\n @Input() disabled: boolean = false;\n @Input() leadingIcon?: string;\n @Input() dropdownPosition:\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right'\n | 'top-left'\n | 'top-center'\n | 'top-right' = 'bottom-left';\n @Input() minDate?: Date;\n @Input() maxDate?: Date;\n\n // Value - DateRange\n @Input() value: DateRange | null = null;\n\n // State\n @Input() state: 'success' | 'error' | 'warning' | null = null;\n\n // Outputs\n @Output() valueChange = new EventEmitter<DateRange | null>();\n @Output() inputFocus = new EventEmitter<void>();\n @Output() inputBlur = new EventEmitter<void>();\n\n // Internal State\n isOpen = false;\n isFocused = false;\n @ViewChild('trigger', { read: ElementRef, static: true }) trigger!: ElementRef<HTMLElement>;\n @ViewChild('calendarPopupTemplate') calendarPopupTemplate!: TemplateRef<unknown>;\n private overlayRef?: OverlayRef;\n private readonly onAnyScroll = () => this.overlayRef?.updatePosition();\n\n // Computed visual state (removes error while focused)\n get visualState(): 'success' | 'error' | 'warning' | null {\n if (this.state === 'error' && this.isFocused) return null;\n return this.state;\n }\n\n constructor(\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['dropdownPosition'] && !changes['dropdownPosition'].firstChange) {\n this.overlayRef?.updatePositionStrategy(this.getPositionStrategy());\n this.overlayRef?.updatePosition();\n }\n }\n\n // Value Formatting\n get displayValue(): string {\n if (!this.value) return '';\n\n const range = this.value as DateRange;\n if (range.start && range.end) {\n return `${this.formatDate(range.start)} - ${this.formatDate(range.end)}`;\n } else if (range.start) {\n return `${this.formatDate(range.start)} - `;\n }\n return '';\n }\n\n private formatDate(date: Date): string {\n if (!date) return '';\n\n const dateObj = date instanceof Date ? date : new Date(date);\n if (isNaN(dateObj.getTime())) return '';\n\n const d = dateObj.getDate().toString().padStart(2, '0');\n const m = (dateObj.getMonth() + 1).toString().padStart(2, '0');\n const y = dateObj.getFullYear();\n\n return `${d}/${m}/${y}`;\n }\n\n // Focus Handling\n toggleCalendar() {\n if (this.disabled) return;\n\n if (this.isOpen) {\n this.closeCalendar();\n return;\n }\n\n this.openCalendar();\n }\n\n onInputFocus() {\n if (this.disabled) return;\n this.isFocused = true;\n this.inputFocus.emit();\n if (!this.isOpen) {\n this.openCalendar(false);\n }\n }\n\n onInputBlur() {\n if (!this.isOpen) {\n this.isFocused = false;\n this.inputBlur.emit();\n }\n }\n\n // Handle date selection from inline component\n onDateSelect(range: DateRange | null) {\n this.value = range;\n this.valueChange.emit(this.value);\n // Close only when both dates are selected\n if (range?.start && range?.end) {\n this.closeCalendar();\n }\n }\n\n ngOnDestroy() {\n this.stopScrollTracking();\n this.overlayRef?.dispose();\n }\n\n private openCalendar(emitFocus: boolean = true) {\n if (!this.trigger?.nativeElement) return;\n\n if (!this.overlayRef || this.overlayRef.hostElement === null) {\n this.overlayRef = this.overlay.create({\n positionStrategy: this.getPositionStrategy(),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n hasBackdrop: false,\n });\n this.overlayRef.hostElement.style.zIndex = '999';\n\n this.overlayRef.outsidePointerEvents().subscribe((event) => {\n const target = event.target as Node | null;\n\n // Keep popup open when interacting with trigger\n if (target && this.trigger?.nativeElement.contains(target)) {\n return;\n }\n\n this.closeCalendar();\n });\n }\n\n if (!this.overlayRef.hasAttached()) {\n const portal = new TemplatePortal(this.calendarPopupTemplate, this.viewContainerRef);\n this.overlayRef.attach(portal);\n }\n\n this.isOpen = true;\n this.isFocused = true;\n if (emitFocus) {\n this.inputFocus.emit();\n }\n this.startScrollTracking();\n this.overlayRef.updatePosition();\n }\n\n private closeCalendar() {\n const wasOpen = this.isOpen;\n if (this.overlayRef?.hasAttached()) {\n this.overlayRef.detach();\n }\n this.isOpen = false;\n this.isFocused = false;\n this.stopScrollTracking();\n if (wasOpen) {\n this.inputBlur.emit();\n }\n }\n\n private getPositionStrategy() {\n return this.overlay\n .position()\n .flexibleConnectedTo(this.getOverlayOriginElement())\n .withPositions([POSITION_MAP[this.dropdownPosition]])\n .withFlexibleDimensions(false)\n .withGrowAfterOpen(true)\n .withPush(false);\n }\n\n private getOverlayOriginElement(): HTMLElement {\n return (\n this.trigger.nativeElement.querySelector('.vd-input__container') ?? this.trigger.nativeElement\n );\n }\n\n private startScrollTracking() {\n if (typeof window === 'undefined') return;\n window.addEventListener('scroll', this.onAnyScroll, true);\n }\n\n private stopScrollTracking() {\n if (typeof window === 'undefined') return;\n window.removeEventListener('scroll', this.onAnyScroll, true);\n }\n}\n\nconst POSITION_MAP: Record<\n 'bottom-left' | 'bottom-center' | 'bottom-right' | 'top-left' | 'top-center' | 'top-right',\n ConnectedPosition\n> = {\n 'bottom-left': {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n 'bottom-center': {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 8,\n },\n 'bottom-right': {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n 'top-left': {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n 'top-center': {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -8,\n },\n 'top-right': {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n};\n","<div\n class=\"vd-range-date-picker\"\n [class.vd-range-date-picker--error]=\"visualState === 'error'\"\n [class.vd-range-date-picker--success]=\"visualState === 'success'\"\n [class.vd-range-date-picker--warning]=\"visualState === 'warning'\"\n [class.vd-range-date-picker--disabled]=\"disabled\"\n [class.vd-range-date-picker--open]=\"isOpen\"\n>\n <div class=\"vd-range-date-picker__field\" #trigger>\n <vd-input\n [label]=\"label\"\n [hintText]=\"hintText\"\n [helperText]=\"helperText\"\n [optional]=\"optional\"\n [leadingIcon]=\"leadingIcon\"\n [trailingActionIcon]=\"'vd-icon-calendar'\"\n [placeholder]=\"placeholder\"\n [value]=\"displayValue\"\n [readOnly]=\"true\"\n [disabled]=\"disabled\"\n [state]=\"visualState\"\n (trailingActionClick)=\"toggleCalendar()\"\n (inputFocus)=\"onInputFocus()\"\n (valueCommit)=\"onInputBlur()\"\n ></vd-input>\n </div>\n</div>\n\n<ng-template #calendarPopupTemplate>\n <div class=\"vd-range-date-picker__calendar-popup\" (click)=\"$event.stopPropagation()\">\n <vd-range-date-inline\n [value]=\"value\"\n (valueChange)=\"onDateSelect($event)\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [disabled]=\"disabled\"\n ></vd-range-date-inline>\n </div>\n</ng-template>\n","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VdInput } from '../../vd-input/vd-input.component';\n\n@Component({\n selector: 'vd-time-picker',\n standalone: true,\n imports: [CommonModule, VdInput],\n templateUrl: './vd-time-picker.component.html',\n styleUrls: ['./vd-time-picker.component.scss'],\n})\nexport class VdTimePicker {\n // Basic properties\n @Input() label?: string;\n @Input() hintText?: string; // ? icon tooltip content\n @Input() helperText?: string; // below-input text (validation / guidance)\n @Input() optional?: boolean;\n\n @Input() leadingIcon?: string;\n @Input() trailingActionIcon?: string;\n\n @Input() placeholder: string = '';\n @Input() type: 'text' | 'password' = 'text';\n @Input() value: string = '';\n @Input() maxInputCount?: number;\n\n @Input() disabled?: boolean;\n\n // State\n @Input() state: 'success' | 'error' | 'warning' | null = null;\n\n // Outputs\n @Output() valueChange = new EventEmitter<string>(); // live input\n @Output() valueCommit = new EventEmitter<string>(); // on blur\n @Output() trailingActionClick = new EventEmitter<void>();\n @Output() inputFocus = new EventEmitter<void>(); // optional focus event\n\n // Internal\n showHint = false;\n isFocused = false;\n\n // Focus / blur handling\n onFocus() {\n this.isFocused = true;\n this.inputFocus.emit();\n }\n @ViewChild('inputElement', { static: true })\n inputElement!: ElementRef<HTMLInputElement>;\n\n focusInput() {\n if (!this.disabled) {\n this.inputElement.nativeElement.focus();\n }\n }\n\n openTimePicker() {\n if (!this.disabled) {\n this.inputElement.nativeElement.focus();\n this.inputElement.nativeElement.showPicker();\n }\n }\n\n onBlur() {\n this.isFocused = false;\n this.valueCommit.emit(this.value); // emit value on blur\n }\n\n // Input handler\n onInput(event: Event) {\n let val = (event.target as HTMLInputElement).value;\n\n // enforce max input count\n if (this.maxInputCount) {\n val = val.slice(0, this.maxInputCount);\n }\n this.value = val;\n this.valueChange.emit(val); // emit live value\n }\n\n // Trailing action\n onTrailingActionClick(): void {\n this.trailingActionClick.emit();\n this.openTimePicker();\n }\n\n onInputFocus() {\n this.onFocus();\n this.openTimePicker();\n }\n\n onInputBlur() {\n this.onBlur();\n }\n\n toggleHint() {\n this.showHint = !this.showHint;\n }\n\n // Computed visual state (removes error while focused)\n get visualState(): 'success' | 'error' | 'warning' | null {\n if (this.state === 'error' && this.isFocused) return null;\n return this.state;\n }\n}\n","<div\n class=\"vd-time-picker\"\n [class.vd-time-picker--error]=\"state === 'error'\"\n [class.vd-time-picker--disabled]=\"disabled\"\n [class.vd-time-picker--success]=\"state === 'success'\"\n [class.vd-time-picker--warning]=\"state === 'warning'\"\n>\n <vd-input\n [label]=\"label\"\n [hintText]=\"hintText\"\n [helperText]=\"helperText\"\n [optional]=\"optional\"\n [leadingIcon]=\"leadingIcon\"\n [trailingActionIcon]=\"'vd-icon-clock'\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n [readOnly]=\"true\"\n [disabled]=\"disabled\"\n [state]=\"visualState\"\n (trailingActionClick)=\"onTrailingActionClick()\"\n (inputFocus)=\"onInputFocus()\"\n (valueCommit)=\"onInputBlur()\"\n ></vd-input>\n\n <input\n #inputElement\n class=\"vd-time-picker__native-input\"\n type=\"time\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n [disabled]=\"disabled\"\n />\n</div>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n TemplateRef,\n ElementRef,\n ViewContainerRef,\n OnInit,\n OnChanges,\n SimpleChanges,\n OnDestroy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Overlay, OverlayRef, ConnectedPosition } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { VdSingleDateInline } from '../vd-single-date-inline/vd-single-date-inline.component';\nimport {\n VdRangeDateInline,\n DateRange,\n} from '../vd-range-date-inline/vd-range-date-inline.component';\nimport { VdTimePicker } from '../vd-time-picker/vd-time-picker.component';\nimport { VdInput } from '../../vd-input/vd-input.component';\nimport { VdDivider } from '../../vd-divider/vd-divider.component';\n\n@Component({\n selector: 'vd-date-time-picker',\n standalone: true,\n imports: [\n CommonModule,\n VdSingleDateInline,\n VdRangeDateInline,\n VdTimePicker,\n VdInput,\n VdDivider,\n ],\n templateUrl: './vd-date-time-picker.component.html',\n styleUrls: ['./vd-date-time-picker.component.scss'],\n})\nexport class VdDateTimePicker implements OnInit, OnChanges, OnDestroy {\n // Mode Configuration\n @Input() mode: 'single' | 'range' = 'single';\n @Input() withTime: boolean = false;\n\n // Basic Inputs\n @Input() label?: string;\n @Input() hintText?: string;\n @Input() helperText?: string;\n @Input() optional?: boolean;\n @Input() placeholder: string = 'Select date';\n @Input() disabled: boolean = false;\n @Input() leadingIcon?: string;\n @Input() showMonthYearSelector: boolean = false;\n @Input() dropdownPosition:\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right'\n | 'top-left'\n | 'top-center'\n | 'top-right' = 'bottom-left';\n @Input() minDate?: Date;\n @Input() maxDate?: Date;\n\n // Value\n @Input() value: Date | { start: Date | null; end: Date | null } | null = null;\n\n // State\n @Input() state: 'success' | 'error' | 'warning' | null = null;\n\n // Outputs\n @Output() valueChange = new EventEmitter<\n Date | { start: Date | null; end: Date | null } | null\n >();\n @Output() inputFocus = new EventEmitter<void>();\n @Output() inputBlur = new EventEmitter<void>();\n\n // Internal State\n isOpen = false;\n isFocused = false;\n @ViewChild('trigger', { read: ElementRef, static: true }) trigger!: ElementRef<HTMLElement>;\n @ViewChild('calendarPopupTemplate') calendarPopupTemplate!: TemplateRef<unknown>;\n private overlayRef?: OverlayRef;\n private readonly onAnyScroll = () => this.overlayRef?.updatePosition();\n\n // Time values\n timeValue: string = '';\n startTimeValue: string = '';\n endTimeValue: string = '';\n\n // Computed visual state (removes error while focused)\n get visualState(): 'success' | 'error' | 'warning' | null {\n if (this.state === 'error' && this.isFocused) return null;\n return this.state;\n }\n\n constructor(\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n ) {}\n\n ngOnInit() {\n this.extractTimeFromValue();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['dropdownPosition'] && !changes['dropdownPosition'].firstChange) {\n this.overlayRef?.updatePositionStrategy(this.getPositionStrategy());\n this.overlayRef?.updatePosition();\n }\n }\n\n // Extract time from the value if it exists\n private extractTimeFromValue() {\n if (!this.value) {\n this.timeValue = '';\n this.startTimeValue = '';\n this.endTimeValue = '';\n return;\n }\n\n if (this.mode === 'single' && this.value instanceof Date) {\n this.timeValue = this.formatTime(this.value);\n } else if (this.mode === 'range') {\n const range = this.value as DateRange;\n if (range.start) {\n this.startTimeValue = this.formatTime(range.start);\n }\n if (range.end) {\n this.endTimeValue = this.formatTime(range.end);\n }\n }\n }\n\n // Format time as HH:MM\n private formatTime(date: Date): string {\n const hours = date.getHours().toString().padStart(2, '0');\n const minutes = date.getMinutes().toString().padStart(2, '0');\n return `${hours}:${minutes}`;\n }\n\n // Parse time string and apply to date\n private applyTimeToDate(date: Date | null, timeStr: string): Date | null {\n if (!date || !timeStr) return date;\n\n const parts = timeStr.split(':');\n if (parts.length !== 2) return date;\n\n const hours = parseInt(parts[0], 10);\n const minutes = parseInt(parts[1], 10);\n\n if (isNaN(hours) || isNaN(minutes)) return date;\n\n const result = new Date(date);\n result.setHours(hours, minutes, 0, 0);\n return result;\n }\n\n // Display value for input\n get displayValue(): string {\n if (!this.value) return '';\n\n if (this.mode === 'single') {\n const date = this.value as Date;\n if (!date) return '';\n\n const dateStr = this.formatDate(date);\n if (!this.withTime || !this.timeValue) return dateStr;\n return `${dateStr} ${this.timeValue}`;\n } else {\n const range = this.value as DateRange;\n if (!range.start && !range.end) return '';\n\n const startStr = range.start ? this.formatDate(range.start) : '';\n const endStr = range.end ? this.formatDate(range.end) : '';\n\n if (startStr && endStr) {\n if (this.withTime && (this.startTimeValue || this.endTimeValue)) {\n const startTime = this.startTimeValue || '00:00';\n const endTime = this.endTimeValue || '00:00';\n return `${startStr} ${startTime} - ${endStr} ${endTime}`;\n }\n return `${startStr} - ${endStr}`;\n }\n return startStr ? `${startStr} - ` : '';\n }\n }\n\n private formatDate(date: Date): string {\n if (!date) return '';\n\n const dateObj = date instanceof Date ? date : new Date(date);\n if (isNaN(dateObj.getTime())) return '';\n\n const d = dateObj.getDate().toString().padStart(2, '0');\n const m = (dateObj.getMonth() + 1).toString().padStart(2, '0');\n const y = dateObj.getFullYear();\n\n return `${d}/${m}/${y}`;\n }\n\n // Toggle calendar\n toggleCalendar() {\n if (this.disabled) return;\n\n if (this.isOpen) {\n this.closeCalendar();\n return;\n }\n\n this.openCalendar();\n }\n\n onInputFocus() {\n if (this.disabled) return;\n this.isFocused = true;\n this.inputFocus.emit();\n if (!this.isOpen) {\n this.openCalendar(false);\n }\n }\n\n onInputBlur() {\n if (!this.isOpen) {\n this.isFocused = false;\n this.inputBlur.emit();\n }\n }\n\n // Handle date change from picker\n onDateChange(newDate: Date | DateRange | null) {\n this.value = newDate;\n this.emitValue();\n }\n\n // Handle time change\n onTimeChange(timeStr: string) {\n this.timeValue = timeStr;\n this.emitValue();\n }\n\n // Handle time commit (blur)\n onTimeCommit(timeStr: string) {\n this.timeValue = timeStr;\n this.emitValue();\n }\n\n // Handle start time change\n onStartTimeChange(timeStr: string) {\n this.startTimeValue = timeStr;\n this.emitValue();\n }\n\n // Handle start time commit\n onStartTimeCommit(timeStr: string) {\n this.startTimeValue = timeStr;\n this.emitValue();\n }\n\n // Handle end time change\n onEndTimeChange(timeStr: string) {\n this.endTimeValue = timeStr;\n this.emitValue();\n }\n\n // Handle end time commit\n onEndTimeCommit(timeStr: string) {\n this.endTimeValue = timeStr;\n this.emitValue();\n }\n\n // Emit combined value\n private emitValue() {\n if (this.mode === 'single') {\n const date = this.value as Date;\n const finalValue = this.withTime ? this.applyTimeToDate(date, this.timeValue) : date;\n this.valueChange.emit(finalValue);\n } else {\n const range = this.value as DateRange;\n if (this.withTime) {\n const startWithTime = range.start\n ? this.applyTimeToDate(range.start, this.startTimeValue)\n : null;\n const endWithTime = range.end ? this.applyTimeToDate(range.end, this.endTimeValue) : null;\n this.valueChange.emit({ start: startWithTime, end: endWithTime });\n } else {\n this.valueChange.emit(range);\n }\n }\n }\n\n // Helper getters for template binding\n get singleDateValue(): Date | null {\n return this.mode === 'single' ? (this.value as Date) : null;\n }\n\n get rangeDateValue(): DateRange | null {\n return this.mode === 'range' ? (this.value as DateRange) : null;\n }\n\n ngOnDestroy() {\n this.stopScrollTracking();\n this.overlayRef?.dispose();\n }\n\n private openCalendar(emitFocus: boolean = true) {\n if (!this.trigger?.nativeElement) return;\n\n if (!this.overlayRef || this.overlayRef.hostElement === null) {\n this.overlayRef = this.overlay.create({\n positionStrategy: this.getPositionStrategy(),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n hasBackdrop: false,\n });\n\n this.overlayRef.outsidePointerEvents().subscribe((event) => {\n const target = event.target as Node | null;\n\n // Keep the panel open when interacting with the trigger itself.\n if (target && this.trigger?.nativeElement.contains(target)) {\n return;\n }\n\n this.closeCalendar();\n });\n }\n\n if (!this.overlayRef.hasAttached()) {\n const portal = new TemplatePortal(this.calendarPopupTemplate, this.viewContainerRef);\n this.overlayRef.attach(portal);\n }\n\n this.isOpen = true;\n this.isFocused = true;\n if (emitFocus) {\n this.inputFocus.emit();\n }\n this.startScrollTracking();\n this.overlayRef.updatePosition();\n }\n\n private closeCalendar() {\n const wasOpen = this.isOpen;\n if (this.overlayRef?.hasAttached()) {\n this.overlayRef.detach();\n }\n this.isOpen = false;\n this.isFocused = false;\n this.stopScrollTracking();\n if (wasOpen) {\n this.inputBlur.emit();\n }\n }\n\n private getPositionStrategy() {\n return this.overlay\n .position()\n .flexibleConnectedTo(this.getOverlayOriginElement())\n .withPositions([POSITION_MAP[this.dropdownPosition]])\n .withFlexibleDimensions(false)\n .withGrowAfterOpen(true)\n .withPush(false);\n }\n\n private getOverlayOriginElement(): HTMLElement {\n return (\n this.trigger.nativeElement.querySelector('.vd-input__container') ??\n this.trigger.nativeElement\n );\n }\n\n private startScrollTracking() {\n if (typeof window === 'undefined') return;\n window.addEventListener('scroll', this.onAnyScroll, true);\n }\n\n private stopScrollTracking() {\n if (typeof window === 'undefined') return;\n window.removeEventListener('scroll', this.onAnyScroll, true);\n }\n}\n\nconst POSITION_MAP: Record<\n 'bottom-left' | 'bottom-center' | 'bottom-right' | 'top-left' | 'top-center' | 'top-right',\n ConnectedPosition\n> = {\n 'bottom-left': {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n 'bottom-center': {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 8,\n },\n 'bottom-right': {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 8,\n },\n 'top-left': {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n 'top-center': {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -8,\n },\n 'top-right': {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -8,\n },\n};\n","<div\n class=\"vd-date-time-picker\"\n [class.vd-date-time-picker--error]=\"visualState === 'error'\"\n [class.vd-date-time-picker--success]=\"visualState === 'success'\"\n [class.vd-date-time-picker--warning]=\"visualState === 'warning'\"\n [class.vd-date-time-picker--disabled]=\"disabled\"\n [class.vd-date-time-picker--open]=\"isOpen\"\n>\n <div class=\"vd-date-time-picker__field\" #trigger>\n <vd-input\n [label]=\"label\"\n [hintText]=\"hintText\"\n [helperText]=\"helperText\"\n [optional]=\"optional\"\n [leadingIcon]=\"leadingIcon\"\n [trailingActionIcon]=\"'vd-icon-calendar'\"\n [placeholder]=\"placeholder\"\n [value]=\"displayValue\"\n [readOnly]=\"true\"\n [disabled]=\"disabled\"\n [state]=\"visualState\"\n (trailingActionClick)=\"toggleCalendar()\"\n (inputFocus)=\"onInputFocus()\"\n (valueCommit)=\"onInputBlur()\"\n ></vd-input>\n </div>\n</div>\n\n<ng-template #calendarPopupTemplate>\n <div class=\"vd-date-time-picker__calendar-popup\" (click)=\"$event.stopPropagation()\">\n <div class=\"vd-date-time-picker__date-section\">\n <vd-single-date-inline\n *ngIf=\"mode === 'single'\"\n [value]=\"singleDateValue\"\n (valueChange)=\"onDateChange($event)\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [showMonthYearSelector]=\"showMonthYearSelector\"\n [disabled]=\"disabled\"\n ></vd-single-date-inline>\n\n <vd-range-date-inline\n *ngIf=\"mode === 'range'\"\n [value]=\"rangeDateValue\"\n (valueChange)=\"onDateChange($event)\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [disabled]=\"disabled\"\n ></vd-range-date-inline>\n </div>\n\n <vd-divider\n color=\"secondary\"\n class=\"vd-date-time-picker__divider\"\n *ngIf=\"withTime\"\n ></vd-divider>\n\n <div class=\"vd-date-time-picker__time-section\" *ngIf=\"withTime\">\n <vd-time-picker\n *ngIf=\"mode === 'single'\"\n [value]=\"timeValue\"\n label=\"Time\"\n (valueChange)=\"onTimeChange($event)\"\n (valueCommit)=\"onTimeCommit($event)\"\n placeholder=\"HH:MM\"\n [disabled]=\"disabled\"\n ></vd-time-picker>\n\n <div *ngIf=\"mode === 'range'\" class=\"vd-date-time-picker__time-range\">\n <vd-time-picker\n [value]=\"startTimeValue\"\n label=\"Start Time\"\n (valueChange)=\"onStartTimeChange($event)\"\n (valueCommit)=\"onStartTimeCommit($event)\"\n placeholder=\"HH:MM\"\n [disabled]=\"disabled\"\n ></vd-time-picker>\n\n <vd-time-picker\n [value]=\"endTimeValue\"\n label=\"End Time\"\n (valueChange)=\"onEndTimeChange($event)\"\n (valueCommit)=\"onEndTimeCommit($event)\"\n placeholder=\"HH:MM\"\n [disabled]=\"disabled\"\n ></vd-time-picker>\n </div>\n </div>\n </div>\n</ng-template>\n","import { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'vd-switch',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './vd-switch.component.html',\n styleUrls: ['./vd-switch.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => VdSwitch),\n multi: true,\n },\n ],\n})\nexport class VdSwitch implements ControlValueAccessor {\n /** Optional label to display above the switch */\n @Input() label?: string;\n\n /** Whether the switch is active/enabled */\n @Input() checked: boolean = false;\n\n /** Whether the switch is disabled */\n @Input() disabled: boolean = false;\n\n /** Emitted when the switch state changes */\n @Output() change = new EventEmitter<boolean>();\n\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n /**\n * Toggle the switch state\n */\n toggle(): void {\n if (!this.disabled) {\n this.checked = !this.checked;\n this.onChange(this.checked);\n this.change.emit(this.checked);\n }\n }\n\n /**\n * ControlValueAccessor implementation\n */\n writeValue(value: boolean): void {\n this.checked = value;\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /**\n * Handle keyboard events (Space to toggle)\n */\n onKeyDown(event: KeyboardEvent): void {\n if (event.code === 'Space') {\n event.preventDefault();\n this.toggle();\n }\n }\n\n /**\n * Track blur event for ControlValueAccessor\n */\n onBlur(): void {\n this.onTouched();\n }\n}\n","<div class=\"vd-switch\">\n <label *ngIf=\"label\" class=\"vd-switch__label\">{{ label }}</label>\n <div\n role=\"switch\"\n class=\"vd-switch__base\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-label]=\"label\"\n [class.vd-switch__base--checked]=\"checked\"\n [class.vd-switch__base--disabled]=\"disabled\"\n (click)=\"toggle()\"\n (keydown)=\"onKeyDown($event)\"\n (blur)=\"onBlur()\"\n tabindex=\"0\"\n >\n <div class=\"vd-switch__toggle\"></div>\n </div>\n</div>\n","import { Component, Input, OnInit, OnDestroy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Router, RouterModule, NavigationEnd } from '@angular/router';\nimport { VdIcon } from '../vd-icon/vd-icon.component';\nimport { VdDivider } from '../vd-divider/vd-divider.component';\nimport { filter, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport type VdSidebarRouteMatchMode = 'exact' | 'prefix';\n\nexport interface VdSidebarNavItem {\n label: string;\n route?: string;\n matchMode?: VdSidebarRouteMatchMode;\n icon?: string; // icon name (optional)\n children?: VdSidebarNavItem[]; // nested items\n}\n\nexport interface VdSidebarNavSection {\n title?: string;\n items: VdSidebarNavItem[];\n showTitle?: boolean; // Optional: defaults to true if not specified\n}\n\n@Component({\n standalone: true,\n selector: 'vd-sidebar',\n templateUrl: './vd-sidebar.component.html',\n styleUrls: ['./vd-sidebar.component.scss'],\n imports: [CommonModule, RouterModule, VdIcon, VdDivider],\n})\nexport class VdSidebar implements OnInit, OnDestroy {\n @Input() sections: VdSidebarNavSection[] = [];\n\n expandedItems = new Set<string>(); // Track which items are expanded\n currentRoute: string = '';\n private destroy$ = new Subject<void>();\n\n constructor(private router: Router) {}\n\n ngOnInit(): void {\n // Set initial route\n this.currentRoute = this.router.url;\n this.updateExpandedState();\n\n // Listen to route changes\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n takeUntil(this.destroy$),\n )\n .subscribe((event: any) => {\n this.currentRoute = event.urlAfterRedirects;\n this.updateExpandedState();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n toggleExpand(label: string, event?: Event): void {\n // Prevent default link behavior if event is passed\n if (event) {\n event.stopPropagation();\n }\n if (this.expandedItems.has(label)) {\n this.expandedItems.delete(label);\n } else {\n this.expandedItems.add(label);\n }\n }\n\n isExpanded(label: string): boolean {\n return this.expandedItems.has(label);\n }\n\n isRouteActive(\n route: string | undefined,\n matchMode: VdSidebarRouteMatchMode = 'exact',\n ): boolean {\n if (!route) {\n return false;\n }\n\n const currentRoute = this.normalizeRoute(this.currentRoute);\n const targetRoute = this.normalizeRoute(route);\n\n if (matchMode === 'prefix') {\n return (\n currentRoute === targetRoute ||\n currentRoute.startsWith(`${targetRoute}/`) ||\n currentRoute.startsWith(`${targetRoute}?`)\n );\n }\n\n return currentRoute === targetRoute;\n }\n\n isItemActive(item: VdSidebarNavItem): boolean {\n return this.isRouteActive(item.route, item.matchMode);\n }\n\n isChildActive(item: VdSidebarNavItem): boolean {\n if (!item.children || item.children.length === 0) {\n return false;\n }\n return item.children.some((child: VdSidebarNavItem) => this.isItemActive(child));\n }\n\n private updateExpandedState(): void {\n // Collapse all items first\n this.expandedItems.clear();\n\n // Expand items that have active children or active parent route\n this.sections.forEach((section) => {\n section.items.forEach((item) => {\n if (this.isItemActive(item) || this.isChildActive(item)) {\n this.expandedItems.add(item.label);\n }\n });\n });\n }\n\n private normalizeRoute(route: string): string {\n const [routeWithoutFragment] = route.split('#');\n const [path, query] = routeWithoutFragment.split('?');\n const normalizedPath = this.normalizePath(path);\n\n return query ? `${normalizedPath}?${query}` : normalizedPath;\n }\n\n private normalizePath(path: string): string {\n if (!path || path === '/') {\n return '/';\n }\n\n const pathWithLeadingSlash = path.startsWith('/') ? path : `/${path}`;\n return pathWithLeadingSlash.replace(/\\/+$/, '');\n }\n}\n","<div class=\"vd-sidebar\">\n <!-- Other sections -->\n <div *ngFor=\"let section of sections\" class=\"vd-sidebar__section\">\n <div *ngIf=\"section.showTitle !== false\" class=\"vd-sidebar__title-container\">\n <p class=\"vd-sidebar__title body-small\">{{ section.title }}</p>\n <vd-divider></vd-divider>\n </div>\n\n <ul>\n <li *ngFor=\"let item of section.items\">\n <!-- Parent item with children -->\n <ng-container *ngIf=\"item.children && item.children.length > 0\">\n <!-- If parent has a route, make it a link -->\n <a\n *ngIf=\"item.route\"\n [routerLink]=\"item.route\"\n class=\"vd-sidebar__item vd-sidebar__item--parent\"\n [class.active]=\"isItemActive(item)\"\n [class.vd-sidebar__item--child-active]=\"isChildActive(item)\"\n [attr.aria-current]=\"isRouteActive(item.route, item.matchMode) ? 'page' : null\"\n (click)=\"toggleExpand(item.label, $event)\"\n >\n <span class=\"vd-sidebar__item-content\">\n <vd-icon\n *ngIf=\"item.icon\"\n class=\"vd-sidebar__item-icon\"\n [name]=\"item.icon\"\n ></vd-icon>\n <span class=\"vd-sidebar__item-label\">{{ item.label }}</span>\n </span>\n <vd-icon\n [class.vd-sidebar__icon--expanded]=\"isExpanded(item.label)\"\n name=\"vd-icon-caret-right\"\n ></vd-icon>\n </a>\n <!-- If parent doesn't have a route, make it a div -->\n <div\n *ngIf=\"!item.route\"\n class=\"vd-sidebar__item vd-sidebar__item--parent label-medium\"\n [class.active]=\"isItemActive(item)\"\n [class.vd-sidebar__item--child-active]=\"isChildActive(item)\"\n (click)=\"toggleExpand(item.label)\"\n >\n <span class=\"vd-sidebar__item-content\">\n <vd-icon\n *ngIf=\"item.icon\"\n class=\"vd-sidebar__item-icon\"\n [name]=\"item.icon\"\n ></vd-icon>\n <span class=\"vd-sidebar__item-label\">{{ item.label }}</span>\n </span>\n <vd-icon\n [class.vd-sidebar__icon--expanded]=\"isExpanded(item.label)\"\n name=\"vd-icon-caret-right\"\n ></vd-icon>\n </div>\n <!-- Nested children -->\n <ul *ngIf=\"isExpanded(item.label)\" class=\"vd-sidebar__nested-items\">\n <li *ngFor=\"let child of item.children\">\n <a\n [routerLink]=\"child.route\"\n class=\"vd-sidebar__item vd-sidebar__item--nested\"\n [class.active]=\"isItemActive(child)\"\n [attr.aria-current]=\"isRouteActive(child.route, child.matchMode) ? 'page' : null\"\n >\n <span class=\"vd-sidebar__item-content\">\n <vd-icon\n *ngIf=\"child.icon\"\n class=\"vd-sidebar__item-icon\"\n [name]=\"child.icon\"\n ></vd-icon>\n <span class=\"vd-sidebar__item-label\">{{ child.label }}</span>\n </span>\n </a>\n </li>\n </ul>\n </ng-container>\n\n <!-- Regular item (with route, no children) -->\n <ng-container *ngIf=\"!item.children || item.children.length === 0\">\n <a\n *ngIf=\"item.route\"\n [routerLink]=\"item.route\"\n class=\"vd-sidebar__item\"\n [class.active]=\"isItemActive(item)\"\n [attr.aria-current]=\"isRouteActive(item.route, item.matchMode) ? 'page' : null\"\n >\n <span class=\"vd-sidebar__item-content\">\n <vd-icon\n *ngIf=\"item.icon\"\n class=\"vd-sidebar__item-icon\"\n [name]=\"item.icon\"\n ></vd-icon>\n <span class=\"vd-sidebar__item-label\">{{ item.label }}</span>\n </span>\n </a>\n </ng-container>\n </li>\n </ul>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VdIcon } from '../vd-icon/vd-icon.component';\nimport { VdIconButton } from '../vd-icon-button/vd-icon-button.component';\nimport { VdButton } from '../vd-button/vd-button.component';\n\ntype AlertColor = 'primary' | 'success' | 'error' | 'warning' | 'info' | 'neutral';\n\n@Component({\n selector: 'vd-alert',\n standalone: true,\n imports: [CommonModule, VdIcon, VdIconButton, VdButton],\n templateUrl: './vd-alert.component.html',\n styleUrls: ['./vd-alert.component.scss'],\n})\nexport class VdAlert {\n /** Alert title (optional) */\n @Input() title?: string;\n\n /** Alert description/content (required) */\n @Input() description!: string;\n\n /** Alert color variant */\n @Input() color: AlertColor = 'primary';\n\n /** Show action button */\n @Input() action: boolean = true;\n\n /** Show close button */\n @Input() closable: boolean = true;\n\n /** Action button text */\n @Input() actionLabel: string = 'Alert Action';\n\n /** Display action button inline */\n @Input() actionInline: boolean = false;\n\n /** Show icon */\n @Input() showIcon: boolean = true;\n\n /** Leading icon name - if not provided, defaults based on color */\n @Input() icon?: string;\n\n /** Emitted when close button is clicked */\n @Input() onClose?: () => void;\n\n /** Emitted when action button is clicked */\n @Input() onAction?: () => void;\n\n /** Get the icon name based on color or custom icon */\n get iconName(): string {\n if (this.icon) {\n return this.icon;\n }\n\n switch (this.color) {\n case 'success':\n return 'vd-icon-tick-circle-filled';\n case 'error':\n return 'vd-icon-error-filled';\n case 'warning':\n return 'vd-icon-warning-filled';\n case 'info':\n return 'vd-icon-info-circle-filled';\n case 'primary':\n case 'neutral':\n default:\n return 'vd-icon-info-circle-filled';\n }\n }\n\n handleClose(): void {\n this.onClose?.();\n }\n\n handleAction(): void {\n this.onAction?.();\n }\n}\n","<div class=\"vd-alert vd-alert--{{ color }}\" [class.vd-alert--closable]=\"closable\" role=\"alert\">\n <!-- Icon -->\n @if (showIcon) {\n <vd-icon [name]=\"iconName\" size=\"md\"></vd-icon>\n }\n\n <!-- Content -->\n <div class=\"vd-alert__content\" [class.vd-alert__content--inline-action]=\"actionInline\">\n <!-- Text Container -->\n <div class=\"vd-alert__text-container\">\n <!-- Title -->\n @if (title) {\n <p class=\"vd-alert__title title-medium\">\n {{ title }}\n </p>\n }\n\n <!-- Description -->\n <p class=\"vd-alert__description label-medium\">\n {{ description }}\n </p>\n </div>\n\n <!-- Action Button -->\n @if (action) {\n <vd-button\n [label]=\"actionLabel\"\n variant=\"transparent\"\n (click)=\"handleAction()\"\n class=\"vd-alert__action label-medium\"\n ></vd-button>\n }\n </div>\n <!-- Close Button -->\n @if (closable) {\n <vd-icon-button\n icon=\"vd-icon-cross\"\n color=\"neutral\"\n variant=\"transparent\"\n size=\"sm\"\n [rounded]=\"true\"\n (click)=\"handleClose()\"\n aria-label=\"Close alert\"\n class=\"vd-alert__close\"\n ></vd-icon-button>\n }\n</div>\n","import { ChangeDetectorRef, Component, Inject, OnDestroy, OnInit, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';\nimport { Subject, takeUntil } from 'rxjs';\nimport { VdButton } from '../vd-button/vd-button.component';\nimport { VdIconButton } from '../vd-icon-button/vd-icon-button.component';\n\nexport type VdDrawerSize = 'sm' | 'md' | 'lg';\nexport type VdDrawerResult = 'primary' | 'secondary' | 'close';\n\nexport interface VdDrawerConfig<T = unknown> {\n title: string;\n size?: VdDrawerSize;\n contentTemplate: TemplateRef<T>;\n context?: T;\n primaryActionLabel?: string;\n secondaryActionLabel?: string;\n}\n\ninterface ResolvedConfig<T> extends VdDrawerConfig<T> {\n size: VdDrawerSize;\n}\n\n@Component({\n selector: 'vd-drawer',\n standalone: true,\n imports: [CommonModule, VdButton, VdIconButton],\n templateUrl: './vd-drawer.component.html',\n styleUrls: ['./vd-drawer.component.scss'],\n})\nexport class VdDrawer<T = unknown> implements OnInit, OnDestroy {\n readonly config: ResolvedConfig<T>;\n isClosing = false;\n private destroy$ = new Subject<void>();\n\n constructor(\n @Inject(DIALOG_DATA) data: VdDrawerConfig<T>,\n private dialogRef: DialogRef<VdDrawerResult>,\n private cdr: ChangeDetectorRef,\n ) {\n this.config = {\n ...data,\n size: data.size ?? 'md',\n };\n }\n\n get hasActions(): boolean {\n return Boolean(this.config.primaryActionLabel || this.config.secondaryActionLabel);\n }\n\n ngOnInit(): void {\n this.dialogRef.backdropClick.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.handleClose();\n });\n\n this.dialogRef.keydownEvents.pipe(takeUntil(this.destroy$)).subscribe((event) => {\n if (event.key === 'Escape') {\n this.handleClose();\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n handleClose(): void {\n this.closeDrawer('close');\n }\n\n handlePrimaryAction(): void {\n this.closeDrawer('primary');\n }\n\n handleSecondaryAction(): void {\n this.closeDrawer('secondary');\n }\n\n private closeDrawer(result: VdDrawerResult): void {\n if (this.isClosing) return;\n\n this.isClosing = true;\n this.cdr.detectChanges();\n\n setTimeout(() => {\n this.dialogRef.close(result);\n }, 150);\n }\n}\n","<div\n class=\"vd-drawer\"\n [class.vd-drawer--closing]=\"isClosing\"\n [class.vd-drawer--sm]=\"config.size === 'sm'\"\n [class.vd-drawer--md]=\"config.size === 'md'\"\n [class.vd-drawer--lg]=\"config.size === 'lg'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"config.title\"\n>\n <div class=\"vd-drawer__header\">\n <div class=\"vd-drawer__header-text\">\n <h6 class=\"title-medium\">\n {{ config.title }}\n </h6>\n </div>\n\n <vd-icon-button\n class=\"vd-drawer__close\"\n icon=\"vd-icon-cross\"\n variant=\"transparent\"\n color=\"neutral\"\n size=\"sm\"\n [rounded]=\"true\"\n ariaLabel=\"Close drawer\"\n (click)=\"handleClose()\"\n ></vd-icon-button>\n </div>\n\n <div\n class=\"vd-drawer__content\"\n [class.vd-drawer__content--sm]=\"config.size === 'sm'\"\n [class.vd-drawer__content--md]=\"config.size === 'md'\"\n [class.vd-drawer__content--lg]=\"config.size === 'lg'\"\n >\n <ng-container\n *ngTemplateOutlet=\"config.contentTemplate; context: config.context ?? null\"\n ></ng-container>\n </div>\n\n <div *ngIf=\"hasActions\" class=\"vd-drawer__footer\" [class.vd-drawer__footer--sm]=\"config.size === 'sm'\">\n <vd-button\n *ngIf=\"config.secondaryActionLabel\"\n [label]=\"config.secondaryActionLabel\"\n variant=\"subtle\"\n color=\"neutral\"\n size=\"md\"\n (click)=\"handleSecondaryAction()\"\n ></vd-button>\n\n <vd-button\n *ngIf=\"config.primaryActionLabel\"\n [label]=\"config.primaryActionLabel\"\n variant=\"solid\"\n color=\"primary\"\n size=\"md\"\n (click)=\"handlePrimaryAction()\"\n ></vd-button>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';\nimport { ChangeDetectorRef, Component, Inject, OnDestroy, OnInit, TemplateRef } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { VdButton } from '../vd-button/vd-button.component';\nimport { VdIconButton } from '../vd-icon-button/vd-icon-button.component';\n\nexport type VdDialogResult = 'primary' | 'secondary' | 'close';\n\nexport interface VdDialogConfig<T = unknown> {\n title: string;\n contentTemplate: TemplateRef<T>;\n context?: T;\n primaryActionLabel?: string;\n secondaryActionLabel?: string;\n}\n\n@Component({\n selector: 'vd-dialog',\n standalone: true,\n imports: [CommonModule, VdButton, VdIconButton],\n templateUrl: './vd-dialog.component.html',\n styleUrls: ['./vd-dialog.component.scss'],\n})\nexport class VdDialog<T = unknown> implements OnInit, OnDestroy {\n readonly config: VdDialogConfig<T>;\n isClosing = false;\n private destroy$ = new Subject<void>();\n\n constructor(\n @Inject(DIALOG_DATA) data: VdDialogConfig<T>,\n private dialogRef: DialogRef<VdDialogResult>,\n private cdr: ChangeDetectorRef,\n ) {\n this.config = data;\n }\n\n get hasActions(): boolean {\n return Boolean(this.config.primaryActionLabel || this.config.secondaryActionLabel);\n }\n\n ngOnInit(): void {\n this.dialogRef.backdropClick.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.handleClose();\n });\n\n this.dialogRef.keydownEvents.pipe(takeUntil(this.destroy$)).subscribe((event) => {\n if (event.key === 'Escape') {\n this.handleClose();\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n handleClose(): void {\n this.closeDialog('close');\n }\n\n handlePrimaryAction(): void {\n this.closeDialog('primary');\n }\n\n handleSecondaryAction(): void {\n this.closeDialog('secondary');\n }\n\n private closeDialog(result: VdDialogResult): void {\n if (this.isClosing) return;\n\n this.isClosing = true;\n this.cdr.detectChanges();\n\n setTimeout(() => {\n this.dialogRef.close(result);\n }, 150);\n }\n}\n","<div\n class=\"vd-dialog\"\n [class.vd-dialog--closing]=\"isClosing\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"config.title\"\n>\n <div class=\"vd-dialog__header\">\n <div class=\"vd-dialog__header-text\">\n <h6 class=\"vd-dialog__title title-medium\">\n {{ config.title }}\n </h6>\n </div>\n\n <vd-icon-button\n class=\"vd-dialog__close\"\n icon=\"vd-icon-cross\"\n variant=\"transparent\"\n color=\"neutral\"\n size=\"sm\"\n [rounded]=\"true\"\n ariaLabel=\"Close dialog\"\n (click)=\"handleClose()\"\n ></vd-icon-button>\n </div>\n\n <div class=\"vd-dialog__content\">\n <ng-container\n *ngTemplateOutlet=\"config.contentTemplate; context: config.context ?? null\"\n ></ng-container>\n </div>\n\n <div *ngIf=\"hasActions\" class=\"vd-dialog__footer\">\n <vd-button\n *ngIf=\"config.secondaryActionLabel\"\n [label]=\"config.secondaryActionLabel\"\n variant=\"subtle\"\n color=\"neutral\"\n size=\"md\"\n (click)=\"handleSecondaryAction()\"\n ></vd-button>\n\n <vd-button\n *ngIf=\"config.primaryActionLabel\"\n [label]=\"config.primaryActionLabel\"\n variant=\"solid\"\n color=\"primary\"\n size=\"md\"\n (click)=\"handlePrimaryAction()\"\n ></vd-button>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VdIcon } from '../vd-icon/vd-icon.component';\n\nexport type VdProgressTrackerState = 'default' | 'active' | 'completed' | 'error' | 'disabled';\nexport type VdProgressTrackerDirection = 'horizontal' | 'vertical';\nexport type VdProgressTrackerIndicatorType = 'number' | 'icon';\nexport type VdProgressTrackerSize = 'sm' | 'lg';\n\nexport interface VdProgressTrackerItem {\n title: string;\n description?: string;\n state?: VdProgressTrackerState;\n indicatorLabel?: string | number;\n icon?: string;\n}\n\n@Component({\n selector: 'vd-progress-tracker',\n standalone: true,\n imports: [CommonModule, VdIcon],\n templateUrl: './vd-progress-tracker.component.html',\n styleUrls: ['./vd-progress-tracker.component.scss'],\n})\nexport class VdProgressTracker {\n @Input() items: VdProgressTrackerItem[] = [];\n @Input() direction: VdProgressTrackerDirection = 'vertical';\n @Input() indicatorType: VdProgressTrackerIndicatorType = 'number';\n @Input() showDescription = true;\n @Input() showConnector = true;\n @Input() defaultIcon = 'vd-icon-placeholder';\n\n @Output() itemClick = new EventEmitter<number>();\n\n private readonly completedIcon = 'vd-icon-tick';\n private readonly errorIcon = 'vd-icon-error-filled';\n\n get indicatorSize(): VdProgressTrackerSize {\n return this.direction === 'horizontal' ? 'sm' : 'lg';\n }\n\n getItemState(item: VdProgressTrackerItem): VdProgressTrackerState {\n return item.state ?? 'default';\n }\n\n getIndicatorLabel(item: VdProgressTrackerItem, index: number): string {\n if (item.indicatorLabel !== undefined && item.indicatorLabel !== null) {\n return String(item.indicatorLabel);\n }\n\n return String(index + 1);\n }\n\n shouldShowLabel(item: VdProgressTrackerItem): boolean {\n const state = this.getItemState(item);\n const type = this.indicatorType;\n\n return type === 'number' && state !== 'completed' && state !== 'error';\n }\n\n shouldShowIcon(item: VdProgressTrackerItem): boolean {\n const state = this.getItemState(item);\n const type = this.indicatorType;\n\n return type === 'icon' || state === 'completed' || state === 'error';\n }\n\n getIndicatorIcon(item: VdProgressTrackerItem): string {\n const state = this.getItemState(item);\n const type = this.indicatorType;\n\n if (state === 'completed') {\n return this.completedIcon;\n }\n\n if (state === 'error') {\n return this.errorIcon;\n }\n\n if (type === 'icon') {\n return item.icon ?? this.defaultIcon;\n }\n\n return this.defaultIcon;\n }\n\n onItemClick(item: VdProgressTrackerItem, index: number): void {\n const state = this.getItemState(item);\n if (state === 'disabled' || state === 'active') {\n return;\n }\n this.itemClick.emit(index);\n }\n\n trackByIndex(index: number): number {\n return index;\n }\n}\n","<div\n class=\"vd-progress-tracker\"\n [class.vd-progress-tracker--horizontal]=\"direction === 'horizontal'\"\n [class.vd-progress-tracker--vertical]=\"direction === 'vertical'\"\n role=\"list\"\n>\n <div\n *ngFor=\"let item of items; let index = index; let isLast = last; trackBy: trackByIndex\"\n class=\"vd-progress-tracker__item\"\n [class.vd-progress-tracker__item--vertical]=\"direction === 'vertical'\"\n [class.vd-progress-tracker__item--horizontal]=\"direction === 'horizontal'\"\n [class.vd-progress-tracker__item--default]=\"getItemState(item) === 'default'\"\n [class.vd-progress-tracker__item--active]=\"getItemState(item) === 'active'\"\n [class.vd-progress-tracker__item--completed]=\"getItemState(item) === 'completed'\"\n [class.vd-progress-tracker__item--error]=\"getItemState(item) === 'error'\"\n [class.vd-progress-tracker__item--disabled]=\"getItemState(item) === 'disabled'\"\n (click)=\"onItemClick(item, index)\"\n role=\"listitem\"\n >\n <ng-container *ngIf=\"direction === 'horizontal'; else verticalLayout\">\n <div class=\"vd-progress-tracker__indicator-row\">\n <div\n class=\"vd-progress-tracker__indicator\"\n [ngClass]=\"\n indicatorSize === 'sm'\n ? 'vd-progress-tracker__indicator--sm'\n : 'vd-progress-tracker__indicator--lg'\n \"\n >\n <ng-container *ngIf=\"shouldShowIcon(item); else indicatorLabel\">\n <vd-icon\n class=\"vd-progress-tracker__indicator-icon\"\n [name]=\"getIndicatorIcon(item)\"\n [size]=\"indicatorSize === 'sm' ? 'sm' : 'md'\"\n ></vd-icon>\n </ng-container>\n <ng-template #indicatorLabel>\n <span\n class=\"vd-progress-tracker__indicator-label\"\n [ngClass]=\"indicatorSize === 'sm' ? 'body-small' : 'body-large'\"\n >\n {{ getIndicatorLabel(item, index) }}\n </span>\n </ng-template>\n </div>\n <span *ngIf=\"showConnector && !isLast\" class=\"vd-progress-tracker__connector\"></span>\n </div>\n <div class=\"vd-progress-tracker__content\">\n <p class=\"vd-progress-tracker__title title-medium\">{{ item.title }}</p>\n <p\n *ngIf=\"showDescription && item.description\"\n class=\"vd-progress-tracker__description body-small\"\n >\n {{ item.description }}\n </p>\n </div>\n </ng-container>\n <ng-template #verticalLayout>\n <div\n class=\"vd-progress-tracker__indicator\"\n [ngClass]=\"\n indicatorSize === 'sm'\n ? 'vd-progress-tracker__indicator--sm'\n : 'vd-progress-tracker__indicator--lg'\n \"\n >\n <ng-container *ngIf=\"shouldShowIcon(item); else indicatorLabelVertical\">\n <vd-icon\n class=\"vd-progress-tracker__indicator-icon\"\n [name]=\"getIndicatorIcon(item)\"\n [size]=\"indicatorSize === 'sm' ? 'sm' : 'md'\"\n ></vd-icon>\n </ng-container>\n <ng-template #indicatorLabelVertical>\n <span\n class=\"vd-progress-tracker__indicator-label\"\n [ngClass]=\"indicatorSize === 'sm' ? 'body-small' : 'body-large'\"\n >\n {{ getIndicatorLabel(item, index) }}\n </span>\n </ng-template>\n </div>\n <div class=\"vd-progress-tracker__content\">\n <p class=\"vd-progress-tracker__title title-medium\">{{ item.title }}</p>\n <p\n *ngIf=\"showDescription && item.description\"\n class=\"vd-progress-tracker__description body-small\"\n >\n {{ item.description }}\n </p>\n </div>\n </ng-template>\n </div>\n</div>\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'vd-radio-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './vd-radio-button.component.html',\n styleUrls: ['./vd-radio-button.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => VdRadioButton),\n multi: true,\n },\n ],\n})\nexport class VdRadioButton implements ControlValueAccessor, OnInit {\n @Input() label?: string;\n @Input() description?: string;\n @Input() value: string | number = '';\n @Input() checked = false;\n @Input() disabled = false;\n @Input() id?: string;\n @Input() name?: string;\n @Input() ariaLabel?: string;\n\n @Output() select = new EventEmitter<string | number>();\n\n @ViewChild('inputRef', { static: true }) inputRef!: ElementRef<HTMLInputElement>;\n\n inputId = '';\n\n private onChange: (value: string | number) => void = () => {};\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.inputId = this.id ?? `vd-radio-${Math.random().toString(36).substring(2, 9)}`;\n }\n\n onInputChange(event: Event): void {\n event.stopPropagation();\n\n if (this.disabled) {\n return;\n }\n\n this.checked = true;\n this.onChange(this.value);\n this.select.emit(this.value);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n\n writeValue(value: string | number): void {\n this.checked = this.value === value;\n }\n\n registerOnChange(fn: (value: string | number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<label\n class=\"vd-radio\"\n [class.vd-radio--checked]=\"checked\"\n [class.vd-radio--disabled]=\"disabled\"\n>\n <span class=\"vd-radio__icon-container\">\n <input\n #inputRef\n class=\"vd-radio__input\"\n type=\"radio\"\n [id]=\"inputId\"\n [name]=\"name\"\n [value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-label]=\"ariaLabel || label\"\n (change)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"\n />\n <span class=\"vd-radio__circle\">\n <span *ngIf=\"checked\" class=\"vd-radio__dot\"></span>\n </span>\n </span>\n <span *ngIf=\"label || description\" class=\"vd-radio__content\">\n <span *ngIf=\"label\" class=\"vd-radio__label label-medium\">{{ label }}</span>\n <span *ngIf=\"description\" class=\"vd-radio__description body-small\">\n {{ description }}\n </span>\n </span>\n</label>\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { VdRadioButton } from '../vd-radio-button/vd-radio-button.component';\n\nexport type VdRadioGroupDirection = 'vertical' | 'horizontal';\n\nexport interface VdRadioGroupItem {\n label: string;\n value: string | number;\n description?: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'vd-radio-group',\n standalone: true,\n imports: [CommonModule, VdRadioButton],\n templateUrl: './vd-radio-group.component.html',\n styleUrls: ['./vd-radio-group.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => VdRadioGroup),\n multi: true,\n },\n ],\n})\nexport class VdRadioGroup implements ControlValueAccessor, OnChanges {\n @Input() items: VdRadioGroupItem[] = [];\n @Input() direction: VdRadioGroupDirection = 'vertical';\n @Input() value: string | number | null = null;\n @Input() disabled = false;\n @Input() name = `vd-radio-group-${Math.random().toString(36).substring(2, 9)}`;\n\n @Output() valueChange = new EventEmitter<string | number>();\n\n private onChange: (value: string | number) => void = () => {};\n private onTouched: () => void = () => {};\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value']) {\n this.onChange(this.value as string | number);\n }\n }\n\n onItemSelect(item: VdRadioGroupItem): void {\n if (this.disabled || item.disabled) {\n return;\n }\n\n this.value = item.value;\n this.onChange(this.value);\n this.onTouched();\n this.valueChange.emit(this.value);\n }\n\n isChecked(item: VdRadioGroupItem): boolean {\n return this.value === item.value;\n }\n\n trackByItem = (_: number, item: VdRadioGroupItem): string | number => item.value;\n\n writeValue(value: string | number): void {\n this.value = value;\n }\n\n registerOnChange(fn: (value: string | number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<div\n class=\"vd-radio-group\"\n [class.vd-radio-group--horizontal]=\"direction === 'horizontal'\"\n [class.vd-radio-group--vertical]=\"direction === 'vertical'\"\n role=\"radiogroup\"\n>\n <div class=\"vd-radio-group__list\" [class.vd-radio-group__list--root]=\"true\">\n <div *ngFor=\"let item of items; trackBy: trackByItem\" class=\"vd-radio-group__item\">\n <vd-radio-button\n [label]=\"item.label\"\n [description]=\"item.description\"\n [value]=\"item.value\"\n [name]=\"name\"\n [checked]=\"isChecked(item)\"\n [disabled]=\"disabled || !!item.disabled\"\n (select)=\"onItemSelect(item)\"\n ></vd-radio-button>\n </div>\n </div>\n</div>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n AfterViewInit,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nlet verificationCodeInputId = 0;\n\n@Component({\n selector: 'vd-verification-code-input',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './vd-verification-code-input.component.html',\n styleUrls: ['./vd-verification-code-input.component.scss'],\n})\nexport class VdVerificationCodeInput implements AfterViewInit {\n /** Number of code input cells */\n @Input() length: 4 | 6 = 6;\n\n /** Current value (string of digits) */\n @Input() value: string = '';\n\n /** Whether the input is disabled */\n @Input() disabled: boolean = false;\n\n /** Error state */\n @Input() state: 'error' | null = null;\n\n /** Label text displayed above the input */\n @Input() label?: string;\n\n /** Helper text displayed below the input */\n @Input() helperText?: string;\n\n /** Whether to auto-focus the first cell on init */\n @Input() autoFocus: boolean = false;\n\n /** Whether to mask the entered digits */\n @Input() mask: boolean = false;\n\n /** Emitted on every value change */\n @Output() valueChange = new EventEmitter<string>();\n\n /** Emitted when all cells are filled */\n @Output() completed = new EventEmitter<string>();\n\n @ViewChild('codeInput') hiddenInput!: ElementRef<HTMLInputElement>;\n\n /** Tracks if input is focused */\n focused: boolean = false;\n\n /** Caret index for visual focus */\n caretIndex: number = 0;\n\n /** Unique id for input + helper text */\n inputId = `vd-verification-code-input-${verificationCodeInputId++}`;\n helperTextId = `${this.inputId}-helper`;\n\n /** Array representing the number of cells */\n get cells() {\n return Array.from({ length: this.length });\n }\n\n ngAfterViewInit(): void {\n if (this.autoFocus && !this.disabled) {\n setTimeout(() => this.focusInput());\n }\n }\n\n // focusInput(): void {\n // if (this.disabled) return;\n // this.hiddenInput.nativeElement.focus();\n // this.setCaret(this.value.length);\n // }\n focusInput(): void {\n if (this.disabled) return;\n const index = Math.min(this.value.length, this.length - 1); // <-- cap to last cell\n this.setCaret(index);\n this.hiddenInput.nativeElement.focus();\n }\n\n onFocus(): void {\n this.focused = true;\n const index = Math.min(this.value.length, this.length - 1);\n this.setCaret(index);\n }\n\n onBlur(): void {\n this.focused = false;\n }\n\n private setCaret(index: number) {\n this.caretIndex = index;\n const input = this.hiddenInput.nativeElement;\n input.setSelectionRange(index, index);\n }\n\n onKeyDown(event: KeyboardEvent): void {\n const allowed = ['Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'Tab', 'Home', 'End'];\n if (\n allowed.includes(event.key) ||\n ((event.ctrlKey || event.metaKey) && ['a', 'c', 'v', 'x'].includes(event.key))\n ) {\n return;\n }\n if (!/^[0-9]$/.test(event.key)) {\n event.preventDefault();\n }\n }\n\n onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n let val = input.value.replace(/[^0-9]/g, '').slice(0, this.length);\n this.value = val;\n input.value = val;\n this.valueChange.emit(val);\n this.setCaret(val.length);\n\n if (val.length === this.length) {\n this.completed.emit(val);\n }\n }\n}\n","<div\n class=\"vd-verification-code-input\"\n [class.vd-verification-code-input--error]=\"state === 'error'\"\n [class.vd-verification-code-input--disabled]=\"disabled\"\n>\n <!-- Label -->\n <label *ngIf=\"label\" class=\"vd-verification-code-input__label body-medium\" [for]=\"inputId\">\n {{ label }}\n </label>\n\n <!-- Visual cells -->\n <div class=\"vd-verification-code-input__cells\" (click)=\"focusInput()\">\n <div\n *ngFor=\"let _ of cells; let i = index\"\n class=\"vd-verification-code-input__cell\"\n [class.vd-verification-code-input__cell--focused]=\"focused && caretIndex === i\"\n [class.vd-verification-code-input__cell--filled]=\"!!value[i]\"\n >\n {{ mask && value[i] ? '•' : value[i] || '' }}\n </div>\n </div>\n\n <!-- Single hidden/native input -->\n <input\n #codeInput\n [id]=\"inputId\"\n class=\"vd-verification-code-input__input\"\n type=\"text\"\n inputmode=\"numeric\"\n autocomplete=\"one-time-code\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n pattern=\"[0-9]*\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [attr.maxlength]=\"length\"\n [attr.aria-invalid]=\"state === 'error' ? 'true' : null\"\n [attr.aria-describedby]=\"helperText ? helperTextId : null\"\n [attr.aria-label]=\"label ? null : 'Verification code'\"\n (keydown)=\"onKeyDown($event)\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n\n <!-- Helper text -->\n <span\n *ngIf=\"helperText\"\n class=\"vd-verification-code-input__helper-text body-small\"\n [id]=\"helperTextId\"\n >\n {{ helperText }}\n </span>\n</div>\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VdIcon } from '../vd-icon/vd-icon.component';\n\nexport type VdTabType = 'default' | 'boxed';\nexport type VdTabDirection = 'horizontal' | 'vertical';\n\nexport interface VdTabConfig {\n label: string;\n value: string;\n icon?: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'vd-tab',\n standalone: true,\n imports: [CommonModule, VdIcon],\n templateUrl: './vd-tab.component.html',\n styleUrls: ['./vd-tab.component.scss'],\n})\nexport class VdTab implements OnInit {\n /** Array of tab configurations */\n @Input() tabs: VdTabConfig[] = [];\n\n /** Currently active tab value */\n @Input() value: string = '';\n\n /** Visual type: 'default' (underline) or 'boxed' (filled background) */\n @Input() type: VdTabType = 'default';\n\n /** Layout direction */\n @Input() direction: VdTabDirection = 'horizontal';\n\n /** Emitted when active tab changes */\n @Output() valueChange = new EventEmitter<string>();\n\n /** Emitted when a tab is selected */\n @Output() tabChange = new EventEmitter<VdTabConfig>();\n\n ngOnInit(): void {\n // If no value is set, default to the first tab\n if (!this.value && this.tabs.length > 0) {\n this.value = this.tabs[0].value;\n }\n }\n\n selectTab(tab: VdTabConfig): void {\n if (tab.disabled) return;\n\n this.value = tab.value;\n this.valueChange.emit(this.value);\n this.tabChange.emit(tab);\n }\n\n isActive(tab: VdTabConfig): boolean {\n return this.value === tab.value;\n }\n\n trackByTab(_: number, tab: VdTabConfig): string {\n return tab.value;\n }\n}\n","<div\n class=\"vd-tab\"\n [class.vd-tab--default]=\"type === 'default'\"\n [class.vd-tab--boxed]=\"type === 'boxed'\"\n [class.vd-tab--horizontal]=\"direction === 'horizontal'\"\n [class.vd-tab--vertical]=\"direction === 'vertical'\"\n role=\"tablist\"\n [attr.aria-orientation]=\"direction\"\n>\n <button\n *ngFor=\"let tab of tabs; trackBy: trackByTab\"\n class=\"vd-tab__tab\"\n [class.vd-tab__tab--active]=\"isActive(tab)\"\n [class.vd-tab__tab--disabled]=\"tab.disabled\"\n role=\"tab\"\n [attr.aria-selected]=\"isActive(tab)\"\n [attr.aria-disabled]=\"tab.disabled || null\"\n [disabled]=\"tab.disabled\"\n (click)=\"selectTab(tab)\"\n >\n <vd-icon *ngIf=\"tab.icon\" [name]=\"tab.icon\" size=\"md\" class=\"vd-tab__tab-icon\"></vd-icon>\n <span class=\"vd-tab__tab-label label-medium\">{{ tab.label }}</span>\n </button>\n</div>\n","import { Component, Input, Output, EventEmitter, ElementRef, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VdIcon } from '../vd-icon/vd-icon.component';\nimport { VdIconButton } from '../vd-icon-button/vd-icon-button.component';\nimport { VdTooltipDirective } from '../vd-tooltip/vd-tooltip.directive';\n\ntype FileInputLayout = 'horizontal' | 'vertical';\n\n@Component({\n selector: 'vd-file-input',\n standalone: true,\n imports: [CommonModule, VdIcon, VdIconButton, VdTooltipDirective],\n templateUrl: './vd-file-input.component.html',\n styleUrls: ['./vd-file-input.component.scss'],\n})\nexport class VdFileInput {\n /** Field label displayed above the dropzone */\n @Input() label?: string;\n\n /** Tooltip content for the help icon (shown when label is present) */\n @Input() hintText?: string;\n\n /** Whether the field is optional */\n @Input() optional?: boolean;\n\n /** Layout variant: compact inline or large centered */\n @Input() layout: FileInputLayout = 'horizontal';\n\n /** Human-readable supported file types label (e.g. \".png, .jpeg\") */\n @Input() supportedFiles?: string;\n\n /** Human-readable supported file types label (e.g. \".png, .jpeg\") */\n @Input() supportingText?: string;\n\n /** Maximum file size label displayed to the user (e.g. \"12 MB\") */\n @Input() maxSize?: string;\n\n /** Whether multiple files can be selected */\n @Input() multiple: boolean = false;\n\n /** Whether the input is disabled */\n @Input() disabled: boolean = false;\n\n /** Validation state */\n @Input() state: 'error' | null = null;\n\n /** Helper text shown below the dropzone (e.g. validation message) */\n @Input() helperText?: string;\n\n /** Emitted when the selected files list changes (add or remove) */\n @Output() filesChange = new EventEmitter<File[]>();\n\n @ViewChild('fileInput') fileInputRef!: ElementRef<HTMLInputElement>;\n\n /** Internal list of selected files */\n selectedFiles: File[] = [];\n\n /** Internal drag-over flag */\n isDragOver = false;\n\n /** Computed unique id */\n inputId = 'vd-file-input-' + Math.random().toString(36).substring(2, 9);\n\n /** Whether the dropzone should be hidden (single mode with a file selected) */\n get hideDropzone(): boolean {\n return !this.multiple && this.selectedFiles.length > 0;\n }\n\n /** Open the native file picker */\n openFilePicker(): void {\n if (!this.disabled) {\n this.fileInputRef.nativeElement.click();\n }\n }\n\n /** Handle file selection via native input */\n onFileSelected(event: Event): void {\n const incoming = Array.from((event.target as HTMLInputElement).files ?? []);\n if (!incoming.length) return;\n\n if (this.multiple) {\n // Append, de-duplicate by name+size\n const existing = new Set(this.selectedFiles.map((f) => `${f.name}-${f.size}`));\n for (const file of incoming) {\n if (!existing.has(`${file.name}-${file.size}`)) {\n this.selectedFiles.push(file);\n }\n }\n } else {\n this.selectedFiles = [incoming[0]];\n }\n\n this.filesChange.emit([...this.selectedFiles]);\n // Reset native input so the same file can be re-selected\n (event.target as HTMLInputElement).value = '';\n }\n\n /** Remove a specific file from the list */\n removeFile(index: number, event: MouseEvent): void {\n event.stopPropagation();\n this.selectedFiles.splice(index, 1);\n this.filesChange.emit([...this.selectedFiles]);\n }\n\n /** Format bytes to human-readable size */\n formatSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n }\n\n /** Handle dragover */\n onDragOver(event: DragEvent): void {\n if (this.disabled) return;\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver = true;\n }\n\n /** Handle dragleave */\n onDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver = false;\n }\n\n /** Handle drop */\n onDrop(event: DragEvent): void {\n if (this.disabled) return;\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver = false;\n const incoming = Array.from(event.dataTransfer?.files ?? []);\n if (!incoming.length) return;\n\n if (this.multiple) {\n const existing = new Set(this.selectedFiles.map((f) => `${f.name}-${f.size}`));\n for (const file of incoming) {\n if (!existing.has(`${file.name}-${file.size}`)) {\n this.selectedFiles.push(file);\n }\n }\n } else {\n this.selectedFiles = [incoming[0]];\n }\n\n this.filesChange.emit([...this.selectedFiles]);\n }\n}\n","<div\n class=\"vd-file-input\"\n [class.vd-file-input--horizontal]=\"layout === 'horizontal'\"\n [class.vd-file-input--vertical]=\"layout === 'vertical'\"\n [class.vd-file-input--error]=\"state === 'error'\"\n [class.vd-file-input--disabled]=\"disabled\"\n>\n <!-- Hidden native file input -->\n <input\n #fileInput\n type=\"file\"\n [id]=\"inputId\"\n [accept]=\"supportedFiles ?? ''\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n style=\"display: none\"\n (change)=\"onFileSelected($event)\"\n />\n\n <!-- Label row -->\n <div class=\"vd-file-input__label-row\" *ngIf=\"label || optional || hintText\">\n <label *ngIf=\"label\" class=\"vd-file-input__label body-medium\" [attr.for]=\"inputId\">\n {{ label }}\n </label>\n <vd-icon *ngIf=\"hintText\" name=\"vd-icon-help\" size=\"md\" [vdTooltip]=\"hintText\"></vd-icon>\n <p *ngIf=\"optional\" class=\"vd-file-input__optional body-medium-italic\">Optional</p>\n </div>\n\n <!-- Dropzone (hidden in single mode once a file is selected) -->\n <div\n *ngIf=\"!hideDropzone\"\n class=\"vd-file-input__dropzone\"\n [class.vd-file-input__dropzone--drag-over]=\"isDragOver\"\n [class.vd-file-input__dropzone--disabled]=\"disabled\"\n [attr.tabindex]=\"disabled ? null : 0\"\n [attr.role]=\"'button'\"\n [attr.aria-label]=\"'Upload file'\"\n [attr.aria-disabled]=\"disabled\"\n (click)=\"openFilePicker()\"\n (keydown.enter)=\"openFilePicker()\"\n (keydown.space)=\"openFilePicker()\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <!-- Upload icon -->\n <span class=\"vd-file-input__icon-wrapper\">\n <vd-icon name=\"vd-icon-upload\" size=\"md\"></vd-icon>\n </span>\n\n <!-- Text content -->\n <div class=\"vd-file-input__content\">\n <div class=\"vd-file-input__placeholder body-medium\">\n <span class=\"vd-file-input__action-text body-medium\">Click to upload</span>\n <span class=\"vd-file-input__drag-text body-medium\">or drag and drop</span>\n </div>\n <div class=\"vd-file-input__footer-row\" *ngIf=\"supportingText\">\n <p classlass=\"vd-file-input__supported-files body-small\" *ngIf=\"supportingText\">\n {{ supportingText }}\n </p>\n </div>\n </div>\n </div>\n\n <!-- Footer: supported files / max size -->\n\n <!-- Selected files list -->\n <ul class=\"vd-file-input__file-list\" *ngIf=\"selectedFiles.length > 0\">\n <li class=\"vd-file-input__file-item\" *ngFor=\"let file of selectedFiles; let i = index\">\n <!-- File icon -->\n <span class=\"vd-file-input__file-icon\">\n <vd-icon name=\"vd-icon-file\" size=\"md\"></vd-icon>\n </span>\n\n <!-- File info -->\n <span class=\"vd-file-input__file-info\">\n <span class=\"vd-file-input__file-name label-medium\">{{ file.name }}</span>\n <span class=\"vd-file-input__file-size body-small\">{{ formatSize(file.size) }}</span>\n </span>\n\n <!-- Remove button -->\n <vd-icon-button\n class=\"vd-file-input__file-remove\"\n icon=\"vd-icon-trash\"\n ariaLabel=\"Remove {{ file.name }}\"\n variant=\"transparent\"\n color=\"neutral\"\n [disabled]=\"disabled\"\n (click)=\"removeFile(i, $event)\"\n ></vd-icon-button>\n </li>\n </ul>\n <!-- Helper text -->\n <div class=\"vd-file-input__helper-row\" *ngIf=\"helperText\">\n <p class=\"vd-file-input__helper-text body-small\">{{ helperText }}</p>\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { VdIcon } from '../vd-icon/vd-icon.component';\nimport { VdIconButton } from '../vd-icon-button/vd-icon-button.component';\nimport { VdTooltipDirective } from '../vd-tooltip/vd-tooltip.directive';\n\n@Component({\n selector: 'vd-number-input',\n standalone: true,\n imports: [CommonModule, FormsModule, VdIcon, VdIconButton, VdTooltipDirective],\n templateUrl: './vd-number-input.component.html',\n styleUrls: ['./vd-number-input.component.scss'],\n})\nexport class VdNumberInput {\n // Basic properties\n @Input() label?: string;\n @Input() hintText?: string; // ? icon tooltip content\n @Input() helperText?: string; // below-input text (validation / guidance)\n @Input() optional?: boolean;\n\n @Input() leadingIcon?: string;\n @Input() trailingActionIcon?: string;\n\n @Input() placeholder: string = '';\n @Input() value: number | null = null;\n\n @Input() min?: number;\n @Input() max?: number;\n @Input() step?: number | 'any';\n\n @Input() readOnly?: boolean;\n @Input() disabled?: boolean;\n\n // State\n @Input() state: 'success' | 'error' | 'warning' | null = null;\n\n // Outputs\n @Output() valueChange = new EventEmitter<number | null>(); // live input\n @Output() valueCommit = new EventEmitter<number | null>(); // on blur\n @Output() trailingActionClick = new EventEmitter<void>();\n @Output() inputFocus = new EventEmitter<void>(); // optional focus event\n\n // Internal\n inputId = 'vd-number-input-' + Math.random().toString(36).substring(2, 9);\n showHint = false;\n isFocused = false;\n\n // Focus / blur handling\n onFocus() {\n this.isFocused = true;\n this.inputFocus.emit();\n }\n @ViewChild('inputElement', { static: true })\n inputElement!: ElementRef<HTMLInputElement>;\n\n focusInput() {\n if (!this.disabled) {\n this.inputElement.nativeElement.focus();\n }\n }\n onBlur() {\n this.isFocused = false;\n\n // enforce min and max on blur\n if (this.value !== null) {\n let clamped = this.value;\n if (this.min !== undefined && clamped < this.min) {\n clamped = this.min;\n }\n if (this.max !== undefined && clamped > this.max) {\n clamped = this.max;\n }\n if (clamped !== this.value) {\n this.value = clamped;\n if (this.inputElement?.nativeElement) {\n this.inputElement.nativeElement.value = String(clamped);\n }\n this.valueChange.emit(this.value);\n }\n }\n\n this.valueCommit.emit(this.value); // emit value on blur\n }\n\n // Input handler\n onInput(event: Event) {\n const inputElement = event.target as HTMLInputElement;\n const rawValue = inputElement.value;\n\n // We emit null if empty, otherwise parsed number\n let numVal: number | null = rawValue === '' ? null : Number(rawValue);\n\n // Enforce max immediately on input\n if (numVal !== null && this.max !== undefined && numVal > this.max) {\n numVal = this.max;\n inputElement.value = String(numVal);\n }\n\n this.value = numVal;\n this.valueChange.emit(this.value); // emit live value\n }\n\n // Trailing action\n onTrailingActionClick(): void {\n this.trailingActionClick.emit();\n }\n\n toggleHint() {\n this.showHint = !this.showHint;\n }\n\n // Computed visual state (removes error while focused)\n get visualState(): 'success' | 'error' | 'warning' | null {\n if (this.state === 'error' && this.isFocused) return null;\n return this.state;\n }\n\n // Trailing state icon\n get trailingStateIcon(): string | null {\n switch (this.visualState) {\n case 'success':\n return 'vd-icon-tick-circle-filled';\n case 'error':\n return 'vd-icon-error-filled';\n case 'warning':\n return 'vd-icon-warning-filled';\n default:\n return null;\n }\n }\n}\n","<div\n class=\"vd-number-input\"\n [class.vd-number-input--error]=\"state === 'error'\"\n [class.vd-number-input--disabled]=\"disabled\"\n [class.vd-number-input--success]=\"state === 'success'\"\n [class.vd-number-input--warning]=\"state === 'warning'\"\n>\n <!-- Label row -->\n <div class=\"vd-number-input__label-row\" *ngIf=\"label || optional || hintText\">\n <label *ngIf=\"label\" class=\"vd-number-input__label\" [attr.for]=\"inputId\">\n {{ label }}\n </label>\n\n <vd-icon *ngIf=\"hintText\" name=\"vd-icon-help\" [vdTooltip]=\"hintText\"></vd-icon>\n <p *ngIf=\"optional\" class=\"vd-number-input__optional body-medium-italic\">Optional</p>\n </div>\n\n <div class=\"vd-number-input__container\" (click)=\"focusInput()\">\n <span *ngIf=\"leadingIcon\" class=\"vd-number-input__leading-icon\">\n <vd-icon [name]=\"leadingIcon\"></vd-icon>\n </span>\n\n <input\n #inputElement\n [id]=\"inputId\"\n class=\"vd-number-input__input body-medium\"\n type=\"number\"\n [placeholder]=\"placeholder\"\n [value]=\"value === null ? '' : value\"\n [attr.min]=\"min !== undefined ? min : null\"\n [attr.max]=\"max !== undefined ? max : null\"\n [attr.step]=\"step !== undefined ? step : null\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n [disabled]=\"disabled\"\n [readonly]=\"readOnly\"\n />\n\n <span *ngIf=\"trailingStateIcon\" class=\"vd-number-input__trailing-icon state\">\n <vd-icon [name]=\"trailingStateIcon\"></vd-icon>\n </span>\n\n <span class=\"vd-number-input__trailing-action-container\" *ngIf=\"trailingActionIcon\">\n <vd-icon-button\n class=\"vd-number-input__trailing-action\"\n variant=\"transparent\"\n color=\"neutral\"\n [disabled]=\"disabled\"\n [icon]=\"trailingActionIcon\"\n (click)=\"onTrailingActionClick(); $event.stopPropagation()\"\n ></vd-icon-button>\n </span>\n </div>\n\n <!-- Helper row -->\n <div class=\"vd-number-input__helper-row\" *ngIf=\"helperText\">\n <span class=\"vd-number-input__helper-text body-small\">\n {{ helperText }}\n </span>\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Router } from '@angular/router';\nimport { VdIcon } from '../vd-icon/vd-icon.component';\nimport { VdDropdown } from '../vd-dropdown/vd-dropdown.component';\nimport { VdDropdownItemLink } from '../vd-dropdown/items/vd-dropdown-item-link';\nimport { VdIconButton } from '../vd-icon-button/vd-icon-button.component';\n\nexport interface BreadcrumbItem {\n label: string;\n url?: string;\n [key: string]: any;\n}\n\n@Component({\n selector: 'vd-breadcrumb',\n standalone: true,\n imports: [CommonModule, VdIcon, VdDropdown, VdDropdownItemLink, VdIconButton],\n templateUrl: './vd-breadcrumb.component.html',\n styleUrls: ['./vd-breadcrumb.component.scss'],\n})\nexport class VdBreadcrumb {\n @Input() items: BreadcrumbItem[] = [];\n @Input() separatorIcon: string = 'vd-icon-caret-right';\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n\n @Output() itemClick = new EventEmitter<BreadcrumbItem>();\n\n get maxItems(): number {\n return 4;\n }\n\n get showOverflow(): boolean {\n return this.items.length > this.maxItems;\n }\n\n get visibleItems(): BreadcrumbItem[] {\n if (!this.showOverflow) {\n return this.items;\n }\n // Show first item, overflow menu, and last 3 items\n return [this.items[0], ...this.items.slice(-2)];\n }\n\n get overflowItems(): BreadcrumbItem[] {\n if (!this.showOverflow) {\n return [];\n }\n // Items between the first and the last 3\n return this.items.slice(1, -2);\n }\n\n private router = inject(Router);\n\n onItemClick(event: Event, item: BreadcrumbItem) {\n event.preventDefault();\n if (item.url) {\n this.router.navigate([item.url]);\n }\n this.itemClick.emit(item);\n }\n}\n","<nav aria-label=\"breadcrumb\">\n <ol class=\"vd-breadcrumb label-medium\">\n <ng-container *ngFor=\"let item of visibleItems; let i = index; let isLast = last\">\n <li class=\"vd-breadcrumb__item\" [attr.aria-current]=\"isLast ? 'page' : null\">\n <!-- Render link if url exists, otherwise a span -->\n <a\n *ngIf=\"item.url; else noLink\"\n [href]=\"item.url\"\n class=\"vd-breadcrumb__link\"\n [class.vd-breadcrumb__link--active]=\"isLast\"\n (click)=\"onItemClick($event, item)\"\n >\n {{ item.label }}\n </a>\n <ng-template #noLink>\n <span\n class=\"vd-breadcrumb__link\"\n [class.vd-breadcrumb__link--active]=\"isLast\"\n (click)=\"onItemClick($event, item)\"\n [style.cursor]=\"isLast ? 'default' : 'pointer'\"\n >\n {{ item.label }}\n </span>\n </ng-template>\n </li>\n\n <!-- Separator for normally visible items -->\n <li *ngIf=\"!isLast\" class=\"vd-breadcrumb__separator\" aria-hidden=\"true\">\n <vd-icon name=\"vd-icon-caret-right\"></vd-icon>\n </li>\n\n <!-- Render the overflow dropdown right after the first item if there are overflow items -->\n <ng-container *ngIf=\"showOverflow && i === 0\">\n <li class=\"vd-breadcrumb__item\">\n <vd-dropdown position=\"bottom-center\">\n <vd-icon-button\n vdDropdownTrigger\n variant=\"transparent\"\n color=\"neutral\"\n size=\"sm\"\n icon=\"vd-icon-horizontal-dot\"\n class=\"vd-breadcrumb__overflow-button\"\n ></vd-icon-button>\n <ng-container vdDropdownContent>\n <vd-dropdown-item-link\n *ngFor=\"let overflowItem of overflowItems\"\n [href]=\"overflowItem.url!\"\n [title]=\"overflowItem.label\"\n ></vd-dropdown-item-link>\n </ng-container>\n </vd-dropdown>\n </li>\n\n <li class=\"vd-breadcrumb__separator\" aria-hidden=\"true\">\n <vd-icon name=\"vd-icon-caret-right\"></vd-icon>\n </li>\n </ng-container>\n </ng-container>\n </ol>\n</nav>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'vd-navbar',\n standalone: true,\n templateUrl: './vd-navbar.component.html',\n styleUrls: ['./vd-navbar.component.scss'],\n})\nexport class VdNavbar {\n @Input() logoUrl?: string;\n @Input() logoAlt?: string = 'Brand Logo';\n}\n","<nav class=\"vd-navbar\">\n <div class=\"vd-navbar__row\">\n <ng-content></ng-content>\n </div>\n</nav>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { VdButton } from '../vd-button/vd-button.component';\nimport { VdIcon } from '../vd-icon/vd-icon.component';\n\n@Component({\n selector: 'vd-empty-state',\n standalone: true,\n imports: [CommonModule, VdIcon, VdButton],\n templateUrl: './vd-empty-state.component.html',\n styleUrls: ['./vd-empty-state.component.scss'],\n})\nexport class VdEmptyState {\n /** Heading shown as the primary message. */\n @Input({ required: true }) title!: string;\n\n /** Supporting description shown below the title (optional). */\n @Input() description?: string;\n\n /** Icon name rendered at the top of the empty state. */\n @Input() icon = 'vd-icon-placeholder';\n\n /** Show or hide the icon container. */\n @Input() showIcon = true;\n\n /** Boxed container style with padding, border and background. */\n @Input() boxed = true;\n\n /** Primary action button text. Button is visible only when label is provided. */\n @Input() primaryActionLabel = '';\n\n /** Secondary action button text. Button is visible only when label is provided. */\n @Input() secondaryActionLabel = '';\n\n /** Emitted when the primary action button is clicked. */\n @Output() primaryActionClick = new EventEmitter<void>();\n\n /** Emitted when the secondary action button is clicked. */\n @Output() secondaryActionClick = new EventEmitter<void>();\n\n get hasPrimaryAction(): boolean {\n return !!this.primaryActionLabel?.trim();\n }\n\n get hasSecondaryAction(): boolean {\n return !!this.secondaryActionLabel?.trim();\n }\n\n onPrimaryActionClick(): void {\n this.primaryActionClick.emit();\n }\n\n onSecondaryActionClick(): void {\n this.secondaryActionClick.emit();\n }\n}\n","<div class=\"vd-empty-state\" [class.vd-empty-state--unboxed]=\"!boxed\">\n @if (showIcon) {\n <div class=\"vd-empty-state__icon-container\">\n <vd-icon [name]=\"icon\" size=\"xl\" color=\"neutral\"></vd-icon>\n </div>\n }\n\n <div class=\"vd-empty-state__text-content\">\n <h3 class=\"vd-empty-state__title title-large\">{{ title }}</h3>\n @if (description) {\n <p class=\"vd-empty-state__description body-medium\">{{ description }}</p>\n }\n </div>\n\n @if (hasPrimaryAction || hasSecondaryAction) {\n <div class=\"vd-empty-state__actions\">\n @if (hasSecondaryAction) {\n <vd-button\n [label]=\"secondaryActionLabel\"\n variant=\"subtle\"\n color=\"neutral\"\n size=\"sm\"\n (click)=\"onSecondaryActionClick()\"\n ></vd-button>\n }\n\n @if (hasPrimaryAction) {\n <vd-button\n [label]=\"primaryActionLabel\"\n color=\"primary\"\n size=\"sm\"\n (click)=\"onPrimaryActionClick()\"\n ></vd-button>\n }\n </div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'vd-loading-state',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './vd-loading-state.component.html',\n styleUrls: ['./vd-loading-state.component.scss'],\n})\nexport class VdLoadingState {\n /** Heading shown as the primary message. */\n @Input({ required: true }) title!: string;\n\n /** Supporting description shown below the title (optional). */\n @Input() description?: string;\n}\n","<div class=\"vd-loading-state\">\n <span class=\"vd-loading-state__spinner\">\n <span class=\"vd-loading-state__spinner-indicator\"></span>\n </span>\n\n <div class=\"vd-loading-state__text-content\">\n <h3 class=\"vd-loading-state__title title-large\">{{ title }}</h3>\n @if (description) {\n <p class=\"vd-loading-state__description body-medium\">{{ description }}</p>\n }\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { VdButton } from './vd-button/vd-button.component';\nimport { VdIcon } from './vd-icon/vd-icon.component';\nimport { VdIconButton } from './vd-icon-button/vd-icon-button.component';\nimport { VdToast } from './vd-toast/vd-toast.component';\nimport { VdInput } from './vd-input/vd-input.component';\nimport { VdCheckbox } from './vd-checkbox/vd-checkbox.component';\nimport { VdCheckboxGroup } from './vd-checkbox-group/vd-checkbox-group.component';\nimport { VdTooltip } from './vd-tooltip/vd-tooltip.component';\nimport { VdBadge } from './vd-badge/vd-badge.component';\nimport { VdDivider } from './vd-divider/vd-divider.component';\nimport { VdPagination } from './vd-pagination/vd-pagination.component';\nimport { VdDropdown } from './vd-dropdown/vd-dropdown.component';\nimport { VdDropdownItem } from './vd-dropdown/items/vd-dropdown-item';\nimport { VdDropdownItemLink } from './vd-dropdown/items/vd-dropdown-item-link';\nimport { VdDropdownItemDivider } from './vd-dropdown/items/vd-dropdown-item-divider';\nimport { VdDropdownItemGroup } from './vd-dropdown/items/vd-dropdown-item-group';\nimport { VdDatatable } from './vd-datatable/vd-datatable.component';\nimport { VdAccordion } from './vd-accordion/vd-accordion.component';\nimport { VdTextarea } from './vd-textarea/vd-textarea.component';\nimport { VdSelect } from './vd-select/vd-select.component';\nimport { VdSingleDatePicker } from './vd-date-time-picker/vd-single-date-picker/vd-single-date-picker.component';\nimport { VdRangeDatePicker } from './vd-date-time-picker/vd-range-date-picker/vd-range-date-picker.component';\nimport { VdTimePicker } from './vd-date-time-picker/vd-time-picker/vd-time-picker.component';\nimport { VdDateTimePicker } from './vd-date-time-picker/vd-date-time-picker/vd-date-time-picker.component';\nimport { VdSingleDateInline } from './vd-date-time-picker/vd-single-date-inline/vd-single-date-inline.component';\nimport { VdRangeDateInline } from './vd-date-time-picker/vd-range-date-inline/vd-range-date-inline.component';\nimport { VdSwitch } from './vd-switch/vd-switch.component';\nimport { VdSidebar } from './vd-sidebar/vd-sidebar.component';\nimport { VdAlert } from './vd-alert/vd-alert.component';\nimport { VdDrawer } from './vd-drawer/vd-drawer.component';\nimport { VdDialog } from './vd-dialog/vd-dialog.component';\nimport { VdProgressTracker } from './vd-progress-tracker/vd-progress-tracker.component';\nimport { VdRadioButton } from './vd-radio-button/vd-radio-button.component';\nimport { VdRadioGroup } from './vd-radio-group/vd-radio-group.component';\nimport { VdVerificationCodeInput } from './vd-verification-code-input/vd-verification-code-input.component';\nimport { VdTab } from './vd-tab/vd-tab.component';\nimport { VdFileInput } from './vd-file-input/vd-file-input.component';\nimport { VdNumberInput } from './vd-number-input/vd-number-input.component';\nimport { VdBreadcrumb } from './vd-breadcrumb/vd-breadcrumb.component';\nimport { VdNavbar } from './vd-navbar/vd-navbar.component';\nimport { VdEmptyState } from './vd-empty-state/vd-empty-state.component';\nimport { VdLoadingState } from './vd-loading-state/vd-loading-state.component';\n\n@NgModule({\n imports: [\n VdButton,\n VdIcon,\n VdIconButton,\n VdToast,\n VdInput,\n VdCheckbox,\n VdCheckboxGroup,\n VdTooltip,\n VdBadge,\n VdDivider,\n VdPagination,\n VdDropdown,\n VdDropdownItem,\n VdDropdownItemLink,\n VdDropdownItemGroup,\n VdDropdownItemDivider,\n VdDatatable,\n VdAccordion,\n VdTextarea,\n VdSelect,\n VdSingleDatePicker,\n VdRangeDatePicker,\n VdTimePicker,\n VdDateTimePicker,\n VdSingleDateInline,\n VdRangeDateInline,\n VdSwitch,\n VdSidebar,\n VdAlert,\n VdDrawer,\n VdDialog,\n VdProgressTracker,\n VdRadioButton,\n VdRadioGroup,\n VdVerificationCodeInput,\n VdTab,\n VdFileInput,\n VdNumberInput,\n VdBreadcrumb,\n VdNavbar,\n VdEmptyState,\n VdLoadingState,\n ], // standalone component import\n exports: [\n VdButton,\n VdIcon,\n VdIconButton,\n VdToast,\n VdInput,\n VdCheckbox,\n VdCheckboxGroup,\n VdTooltip,\n VdBadge,\n VdDivider,\n VdPagination,\n VdDropdown,\n VdDropdownItem,\n VdDropdownItemLink,\n VdDropdownItemGroup,\n VdDropdownItemDivider,\n VdDatatable,\n VdAccordion,\n VdTextarea,\n VdSelect,\n VdRangeDatePicker,\n VdSingleDatePicker,\n VdTimePicker,\n VdDateTimePicker,\n VdSingleDateInline,\n VdSwitch,\n VdRangeDateInline,\n VdSidebar,\n VdAlert,\n VdDrawer,\n VdDialog,\n VdProgressTracker,\n VdRadioButton,\n VdRadioGroup,\n VdVerificationCodeInput,\n VdTab,\n VdFileInput,\n VdNumberInput,\n VdBreadcrumb,\n VdNavbar,\n VdEmptyState,\n VdLoadingState,\n ], // export to make available in apps\n})\nexport class VdAngularComponentsModule {}\n","//toatst module\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VdToast } from './vd-toast.component';\n\n@NgModule({\n imports: [CommonModule, VdToast],\n exports: [VdToast],\n})\nexport class ToastModule {}\n","import { Component, Inject, ChangeDetectorRef, OnInit, OnDestroy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';\nimport { VdIcon } from '../vd-icon/vd-icon.component';\nimport { VdButton } from '../vd-button/vd-button.component';\nimport { Subject, takeUntil } from 'rxjs';\n\nexport type DialogColor = 'default' | 'error';\n// export type DialogPosition = 'top-center'; // Only top-center supported now\n\nexport interface VdConfirmationDialogConfig {\n title: string;\n description?: string;\n icon?: string;\n color?: DialogColor;\n cancelLabel?: string;\n confirmLabel?: string;\n}\n\ninterface ResolvedConfig {\n title: string;\n description?: string;\n icon?: string;\n color: DialogColor;\n cancelLabel: string;\n confirmLabel: string;\n}\n\n@Component({\n selector: 'vd-confirmation-dialog',\n standalone: true,\n imports: [CommonModule, VdIcon, VdButton],\n templateUrl: './vd-confirmation-dialog.component.html',\n styleUrls: ['./vd-confirmation-dialog.component.scss'],\n})\nexport class VdConfirmationDialog implements OnInit, OnDestroy {\n readonly config: ResolvedConfig;\n isClosing = false;\n private destroy$ = new Subject<void>();\n\n constructor(\n @Inject(DIALOG_DATA) data: VdConfirmationDialogConfig,\n private dialogRef: DialogRef<'confirm' | 'cancel'>,\n private cdr: ChangeDetectorRef,\n ) {\n this.config = {\n title: data.title,\n description: data.description,\n icon: data.icon,\n color: data.color ?? 'default',\n cancelLabel: data.cancelLabel ?? 'Cancel',\n confirmLabel: data.confirmLabel ?? 'Confirm',\n };\n }\n\n ngOnInit() {\n this.dialogRef.backdropClick.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.handleCancel();\n });\n\n this.dialogRef.keydownEvents.pipe(takeUntil(this.destroy$)).subscribe((event) => {\n if (event.key === 'Escape') {\n this.handleCancel();\n }\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n handleCancel(): void {\n this.closeDialog('cancel');\n }\n\n handleConfirm(): void {\n this.closeDialog('confirm');\n }\n\n private closeDialog(result: 'confirm' | 'cancel'): void {\n if (this.isClosing) return;\n\n this.isClosing = true;\n this.cdr.detectChanges(); // Ensure UI updates immediately to trigger animation\n\n // Wait for animation to finish (300ms matches CSS animation)\n setTimeout(() => {\n this.dialogRef.close(result);\n }, 150);\n }\n}\n","<div\n class=\"vd-confirmation-dialog\"\n [class.vd-confirmation-dialog--error]=\"config.color === 'error'\"\n [class.vd-confirmation-dialog--closing]=\"isClosing\"\n role=\"dialog\"\n aria-modal=\"true\"\n>\n <div class=\"vd-confirmation-dialog__header\">\n <div *ngIf=\"config.icon\" class=\"vd-confirmation-dialog__icon-container\">\n <vd-icon [name]=\"config.icon\" size=\"xl\" class=\"vd-confirmation-dialog__icon\"></vd-icon>\n </div>\n\n <h6 class=\"title-large\">{{ config.title }}</h6>\n\n <p\n *ngIf=\"config.description\"\n class=\"vd-confirmation-dialog__description\"\n [textContent]=\"config.description\"\n ></p>\n </div>\n\n <div class=\"vd-confirmation-dialog__footer\">\n <vd-button\n [label]=\"config.cancelLabel\"\n [variant]=\"config.color === 'error' ? 'transparent' : 'subtle'\"\n color=\"neutral\"\n (click)=\"handleCancel()\"\n ></vd-button>\n\n <vd-button\n [label]=\"config.confirmLabel\"\n [variant]=\"config.color === 'error' ? 'subtle' : 'solid'\"\n [color]=\"config.color === 'error' ? 'error' : 'primary'\"\n (click)=\"handleConfirm()\"\n ></vd-button>\n </div>\n</div>\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { Dialog } from '@angular/cdk/dialog';\nimport { Overlay, ScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { firstValueFrom } from 'rxjs';\nimport {\n VdConfirmationDialog,\n VdConfirmationDialogConfig,\n} from './vd-confirmation-dialog.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class VdConfirmationDialogService {\n private scrollStrategy: ScrollStrategy;\n\n constructor(\n private dialog: Dialog,\n private overlay: Overlay,\n private scrollStrategyOptions: ScrollStrategyOptions,\n @Inject(DOCUMENT) private document: Document,\n ) {\n this.scrollStrategy = this.scrollStrategyOptions.noop();\n }\n\n confirm(config: VdConfirmationDialogConfig): Promise<'confirm' | 'cancel'> {\n this.blurActiveElement();\n // FORCE top-center strategy\n const positionStrategy = this.overlay\n .position()\n .global()\n .top('var(--vd-scale-spacing-1800)')\n .centerHorizontally();\n\n const dialogRef = this.dialog.open<\n 'confirm' | 'cancel',\n VdConfirmationDialogConfig,\n VdConfirmationDialog\n >(VdConfirmationDialog, {\n data: config,\n hasBackdrop: true,\n disableClose: true,\n autoFocus: false,\n panelClass: ['vd-dialog-panel'],\n backdropClass: 'vd-dialog-backdrop',\n scrollStrategy: this.scrollStrategy,\n positionStrategy: positionStrategy,\n });\n\n return firstValueFrom(dialogRef.closed).then((result) => result ?? 'cancel');\n }\n\n private blurActiveElement(): void {\n const activeElement = this.document.activeElement;\n if (activeElement instanceof HTMLElement) {\n activeElement.blur();\n }\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { Dialog } from '@angular/cdk/dialog';\nimport { Overlay, ScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { firstValueFrom } from 'rxjs';\nimport { VdDrawer, VdDrawerConfig, VdDrawerResult } from './vd-drawer.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class VdDrawerService {\n private scrollStrategy: ScrollStrategy;\n private activeDrawerCount = 0;\n private removeScrollLockListeners: (() => void) | null = null;\n\n constructor(\n private dialog: Dialog,\n private overlay: Overlay,\n private scrollStrategyOptions: ScrollStrategyOptions,\n @Inject(DOCUMENT) private document: Document,\n ) {\n // Use noop to avoid body scrollbar/padding adjustments that can shift fixed headers/navbars.\n this.scrollStrategy = this.scrollStrategyOptions.noop();\n }\n\n open<T = unknown>(config: VdDrawerConfig<T>): Promise<VdDrawerResult> {\n this.lockBackgroundScroll();\n this.blurActiveElement();\n const positionStrategy = this.overlay.position().global().top('0').right('0');\n\n try {\n const dialogRef = this.dialog.open<VdDrawerResult, VdDrawerConfig<T>, VdDrawer>(\n VdDrawer,\n {\n data: config,\n hasBackdrop: true,\n disableClose: true,\n autoFocus: false,\n backdropClass: 'vd-drawer-backdrop',\n panelClass: ['vd-drawer-panel'],\n scrollStrategy: this.scrollStrategy,\n positionStrategy,\n },\n );\n\n return firstValueFrom(dialogRef.closed)\n .then((result) => result ?? 'close')\n .finally(() => {\n this.unlockBackgroundScroll();\n });\n } catch (error) {\n this.unlockBackgroundScroll();\n throw error;\n }\n }\n\n private lockBackgroundScroll(): void {\n this.activeDrawerCount += 1;\n if (this.activeDrawerCount > 1) return;\n\n const shouldPreventScrollForEvent = (target: EventTarget | null): boolean => {\n if (!(target instanceof Element)) return true;\n if (target.closest('.vd-drawer__content')) return false;\n\n // Allow wheel/touch scrolling in nested overlay panes opened from drawer content\n // (for example select/date dropdown panels rendered in the global overlay container).\n const overlayPane = target.closest('.cdk-overlay-pane');\n if (overlayPane && !overlayPane.classList.contains('vd-drawer-panel')) {\n return false;\n }\n\n return true;\n };\n\n const wheelAndTouchHandler = (event: Event): void => {\n if (shouldPreventScrollForEvent(event.target)) {\n event.preventDefault();\n }\n };\n\n const keydownHandler = (event: KeyboardEvent): void => {\n const scrollKeys = ['ArrowUp', 'ArrowDown', 'PageUp', 'PageDown', 'Home', 'End', ' '];\n if (!scrollKeys.includes(event.key)) return;\n\n if (shouldPreventScrollForEvent(event.target)) {\n event.preventDefault();\n }\n };\n\n this.document.addEventListener('wheel', wheelAndTouchHandler, {\n passive: false,\n capture: true,\n });\n this.document.addEventListener('touchmove', wheelAndTouchHandler, {\n passive: false,\n capture: true,\n });\n this.document.addEventListener('keydown', keydownHandler, {\n passive: false,\n capture: true,\n });\n\n this.removeScrollLockListeners = () => {\n this.document.removeEventListener('wheel', wheelAndTouchHandler, true);\n this.document.removeEventListener('touchmove', wheelAndTouchHandler, true);\n this.document.removeEventListener('keydown', keydownHandler, true);\n };\n }\n\n private unlockBackgroundScroll(): void {\n this.activeDrawerCount = Math.max(0, this.activeDrawerCount - 1);\n if (this.activeDrawerCount > 0) return;\n\n if (this.removeScrollLockListeners) {\n this.removeScrollLockListeners();\n this.removeScrollLockListeners = null;\n }\n }\n\n private blurActiveElement(): void {\n const activeElement = this.document.activeElement;\n if (activeElement instanceof HTMLElement) {\n activeElement.blur();\n }\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { Dialog } from '@angular/cdk/dialog';\nimport { Overlay, ScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { firstValueFrom } from 'rxjs';\nimport { VdDialog, VdDialogConfig, VdDialogResult } from './vd-dialog.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class VdDialogService {\n private scrollStrategy: ScrollStrategy;\n\n constructor(\n private dialog: Dialog,\n private overlay: Overlay,\n private scrollStrategyOptions: ScrollStrategyOptions,\n @Inject(DOCUMENT) private document: Document,\n ) {\n // Keep body layout stable and rely on modal backdrop for interaction lock.\n this.scrollStrategy = this.scrollStrategyOptions.noop();\n }\n\n open<T = unknown>(config: VdDialogConfig<T>): Promise<VdDialogResult> {\n this.blurActiveElement();\n const positionStrategy = this.overlay\n .position()\n .global()\n .top('var(--vd-scale-spacing-1800)')\n .centerHorizontally();\n\n const dialogRef = this.dialog.open<VdDialogResult, VdDialogConfig<T>, VdDialog<T>>(\n VdDialog,\n {\n data: config,\n hasBackdrop: true,\n disableClose: true,\n autoFocus: false,\n backdropClass: 'vd-dialog-backdrop',\n panelClass: ['vd-dialog-panel'],\n scrollStrategy: this.scrollStrategy,\n positionStrategy,\n },\n );\n\n return firstValueFrom(dialogRef.closed).then((result) => result ?? 'close');\n }\n\n private blurActiveElement(): void {\n const activeElement = this.document.activeElement;\n if (activeElement instanceof HTMLElement) {\n activeElement.blur();\n }\n }\n}\n","/*\n * Public API Surface of angular-components\n */\n\n// 1. Export the Module (if you want to provide a \"bulk import\" option)\nexport * from './lib/vd-angular.module';\n//button\nexport * from './lib/vd-button/vd-button.component';\n//icon\nexport * from './lib/vd-icon/vd-icon.component';\n//icon button\nexport * from './lib/vd-icon-button/vd-icon-button.component';\n//toast\nexport * from './lib/vd-toast/vd-toast.component';\nexport * from './lib/vd-toast/vd-toast.module';\nexport * from './lib/vd-toast/vd-toast.service';\nexport * from './lib/vd-toast/vd-toast.model';\n//Input\nexport * from './lib/vd-input/vd-input.component';\n//Checkbox\nexport * from './lib/vd-checkbox/vd-checkbox.component';\n//Checkbox Group\nexport * from './lib/vd-checkbox-group/vd-checkbox-group.component';\n//tooltip\nexport * from './lib/vd-tooltip/vd-tooltip.component';\nexport * from './lib/vd-tooltip/vd-tooltip.directive';\n//Divider\nexport * from './lib/vd-divider/vd-divider.component';\n//Badge\nexport * from './lib/vd-badge/vd-badge.component';\n//Pagination\nexport * from './lib/vd-pagination/vd-pagination.component';\n//Dropdown\nexport * from './lib/vd-dropdown/vd-dropdown.component';\nexport * from './lib/vd-dropdown/items/vd-dropdown-item';\nexport * from './lib/vd-dropdown/items/vd-dropdown-item-link';\nexport * from './lib/vd-dropdown/items/vd-dropdown-item-divider';\nexport * from './lib/vd-dropdown/items/vd-dropdown-item-group';\n//Datatable\nexport * from './lib/vd-datatable/vd-datatable.component';\n//Accordion\nexport * from './lib/vd-accordion/vd-accordion.component';\n//Textarea\nexport * from './lib/vd-textarea/vd-textarea.component';\n//Select\nexport * from './lib/vd-select/vd-select.component';\n//Date/Time Picker\nexport * from './lib/vd-date-time-picker/vd-single-date-picker/vd-single-date-picker.component';\nexport * from './lib/vd-date-time-picker/vd-range-date-picker/vd-range-date-picker.component';\nexport * from './lib/vd-date-time-picker/vd-time-picker/vd-time-picker.component';\nexport * from './lib/vd-date-time-picker/vd-date-time-picker/vd-date-time-picker.component';\nexport * from './lib/vd-date-time-picker/vd-single-date-inline/vd-single-date-inline.component';\nexport * from './lib/vd-date-time-picker/vd-range-date-inline/vd-range-date-inline.component';\n//Switch\nexport * from './lib/vd-switch/vd-switch.component';\n//Sidebar\nexport * from './lib/vd-sidebar/vd-sidebar.component';\n//Alert\nexport * from './lib/vd-alert/vd-alert.component';\n//Confirmation Dialog\nexport * from './lib/vd-confirmation-dialog/vd-confirmation-dialog.component';\nexport * from './lib/vd-confirmation-dialog/vd-confirmation-dialog.service';\n//Drawer\nexport * from './lib/vd-drawer/vd-drawer.component';\nexport * from './lib/vd-drawer/vd-drawer.service';\n//Dialog\nexport * from './lib/vd-dialog/vd-dialog.component';\nexport * from './lib/vd-dialog/vd-dialog.service';\n//Progress Tracker\nexport * from './lib/vd-progress-tracker/vd-progress-tracker.component';\n//Radio Button\nexport * from './lib/vd-radio-button/vd-radio-button.component';\n//Radio Group\nexport * from './lib/vd-radio-group/vd-radio-group.component';\n//Verification Code Input\nexport * from './lib/vd-verification-code-input/vd-verification-code-input.component';\n//Tab\nexport * from './lib/vd-tab/vd-tab.component';\n//File Input\nexport * from './lib/vd-file-input/vd-file-input.component';\n//Number Input\nexport * from './lib/vd-number-input/vd-number-input.component';\n//Breadcrumb\nexport * from './lib/vd-breadcrumb/vd-breadcrumb.component';\n//Navbar\nexport * from './lib/vd-navbar/vd-navbar.component';\n//Empty State\nexport * from './lib/vd-empty-state/vd-empty-state.component';\n//Loading State\nexport * from './lib/vd-loading-state/vd-loading-state.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.VdToastService","i2","POSITION_MAP","i1","i2.VdDropdownService","takeUntil"],"mappings":"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"}
|