{"version":3,"file":"nzrm-ng.mjs","sources":["../../../projects/nzrm-ng/src/lib/components/tooltip/tooltip.directive.ts","../../../projects/nzrm-ng/src/lib/components/tooltip/tooltip.module.ts","../../../projects/nzrm-ng/src/lib/components/notification/notification.component.ts","../../../projects/nzrm-ng/src/lib/components/notification/notification.component.html","../../../projects/nzrm-ng/src/lib/components/notification/notification.service.ts","../../../projects/nzrm-ng/src/lib/services/theme.service.ts","../../../projects/nzrm-ng/src/lib/components/theme-toggle/theme-toggle.component.ts","../../../projects/nzrm-ng/src/lib/components/theme-toggle/theme-toggle.module.ts","../../../projects/nzrm-ng/src/lib/components/confirmation-dialog/confirmation-dialog.service.ts","../../../projects/nzrm-ng/src/lib/components/confirmation-dialog/confirmation-dialog.component.ts","../../../projects/nzrm-ng/src/lib/components/confirmation-dialog/confirmation-dialog.component.html","../../../projects/nzrm-ng/src/lib/components/confirmation-dialog/confirmation-dialog.directive.ts","../../../projects/nzrm-ng/src/lib/components/message-dialog/message-dialog.service.ts","../../../projects/nzrm-ng/src/lib/components/message-dialog/message-dialog.component.ts","../../../projects/nzrm-ng/src/lib/components/message-dialog/message-dialog.component.html","../../../projects/nzrm-ng/src/lib/components/button/button.directive.ts","../../../projects/nzrm-ng/src/lib/components/button/button.module.ts","../../../projects/nzrm-ng/src/lib/components/input-text/input-text.directive.ts","../../../projects/nzrm-ng/src/lib/components/input-text/input-text.module.ts","../../../projects/nzrm-ng/src/lib/components/drop-down/drop-down.directive.ts","../../../projects/nzrm-ng/src/lib/components/drop-down/drop-down.service.ts","../../../projects/nzrm-ng/src/lib/components/drop-down/drop-down.component.ts","../../../projects/nzrm-ng/src/lib/components/drop-down/drop-down.component.html","../../../projects/nzrm-ng/src/lib/components/drop-down/drop-down.module.ts","../../../projects/nzrm-ng/src/lib/components/skeleton/skeleton.directive.ts","../../../projects/nzrm-ng/src/lib/components/skeleton/skeleton.module.ts","../../../projects/nzrm-ng/src/lib/styles/styles.module.ts","../../../projects/nzrm-ng/src/public-api.ts","../../../projects/nzrm-ng/src/nzrm-ng.ts"],"sourcesContent":["import { Directive, ElementRef, HostListener, Input, OnInit, OnDestroy, Renderer2 } from '@angular/core';\n\nexport type TooltipSeverity = 'info' | 'success' | 'error' | 'warn' | 'normal';\nexport type TooltipPosition = 'top' | 'right' | 'bottom' | 'left';\n\n@Directive({\n    selector: '[nTooltip]',\n    standalone: true,\n})\nexport class TooltipDirective implements OnInit, OnDestroy {\n    @Input() tooltipText = '';\n    @Input() showOnlyIf = true;\n    @Input() sticky = false;\n    @Input() severity: TooltipSeverity = 'normal';\n    @Input() position: TooltipPosition = 'top';\n    @Input() showDelay = 100;\n    @Input() hideDelay = 100;\n    @Input() maxWidth = '250px';\n\n    private tooltipElement: HTMLElement | null = null;\n    private isVisible = false;\n    private showTimeoutId: any = null;\n    private hideTimeoutId: any = null;\n\n    constructor(\n        private el: ElementRef,\n        private renderer: Renderer2,\n    ) { }\n\n    ngOnInit() {\n        this.initializeTooltip();\n\n        if (this.sticky && this.showOnlyIf) {\n            setTimeout(() => this.showTooltip(), 0);\n        }\n    }\n\n    private initializeTooltip(): void {\n        if (this.tooltipElement) {\n            this.renderer.removeChild(document.body, this.tooltipElement);\n        }\n\n        this.tooltipElement = this.renderer.createElement('div');\n        this.renderer.addClass(this.tooltipElement, 'n-tooltip');\n        this.renderer.addClass(this.tooltipElement, `n-tooltip-${this.position}`);\n\n        if (this.severity !== 'normal') {\n            this.renderer.addClass(this.tooltipElement, `n-tooltip-${this.severity}`);\n        }\n\n        const contentWrapper = this.renderer.createElement('div');\n        this.renderer.addClass(contentWrapper, 'n-tooltip-content');\n\n        if (this.severity !== 'normal') {\n            const iconElement = this.renderer.createElement('span');\n            this.renderer.addClass(iconElement, 'n-tooltip-icon');\n\n            this.renderer.addClass(iconElement, 'pi');\n\n            switch (this.severity) {\n                case 'info':\n                    this.renderer.addClass(iconElement, 'pi-info-circle');\n                    break;\n                case 'success':\n                    this.renderer.addClass(iconElement, 'pi-check-circle');\n                    break;\n                case 'warn':\n                    this.renderer.addClass(iconElement, 'pi-exclamation-triangle');\n                    break;\n                case 'error':\n                    this.renderer.addClass(iconElement, 'pi-times-circle');\n                    break;\n            }\n\n            this.renderer.appendChild(contentWrapper, iconElement);\n        }\n\n        const textElement = this.renderer.createElement('span');\n        this.renderer.addClass(textElement, 'n-tooltip-text');\n        const textNode = this.renderer.createText(this.tooltipText);\n        this.renderer.appendChild(textElement, textNode);\n        this.renderer.appendChild(contentWrapper, textElement);\n\n        this.renderer.appendChild(this.tooltipElement, contentWrapper);\n\n        this.renderer.setStyle(this.tooltipElement, 'max-width', this.maxWidth);\n\n        this.renderer.setStyle(this.tooltipElement, 'position', 'absolute');\n        this.renderer.setStyle(this.tooltipElement, 'z-index', '9999');\n        this.renderer.setStyle(this.tooltipElement, 'display', 'none');\n        this.renderer.setStyle(this.tooltipElement, 'opacity', '0');\n\n        this.renderer.appendChild(document.body, this.tooltipElement);\n    }\n\n    @HostListener('mouseenter')\n    onMouseEnter(): void {\n        if (!this.showOnlyIf) return;\n        this.clearTimeouts();\n\n        this.showTimeoutId = setTimeout(() => {\n            this.showTooltip();\n        }, this.showDelay);\n    }\n\n    @HostListener('focus')\n    onFocus(): void {\n        if (!this.showOnlyIf) return;\n        this.clearTimeouts();\n\n        this.showTimeoutId = setTimeout(() => {\n            this.showTooltip();\n        }, this.showDelay);\n    }\n\n    @HostListener('mouseleave')\n    onMouseLeave(): void {\n        if (this.tooltipElement && !this.sticky) {\n            this.clearTimeouts();\n\n            this.hideTimeoutId = setTimeout(() => {\n                this.hideTooltip();\n            }, this.hideDelay);\n        }\n    }\n\n    @HostListener('blur')\n    onBlur(): void {\n        if (this.tooltipElement && !this.sticky) {\n            this.clearTimeouts();\n\n            this.hideTimeoutId = setTimeout(() => {\n                this.hideTooltip();\n            }, this.hideDelay);\n        }\n    }\n\n    @HostListener('click')\n    onClick(): void {\n        if (this.sticky && this.showOnlyIf) {\n            if (this.isVisible) {\n                this.hideTooltip();\n            } else {\n                this.showTooltip();\n            }\n        }\n    }\n\n    @HostListener('window:scroll')\n    onScroll(): void {\n        if (this.tooltipElement && this.showOnlyIf && this.isVisible) {\n            this.updateTooltipPosition();\n        }\n    }\n\n    @HostListener('window:resize')\n    onResize(): void {\n        if (this.tooltipElement && this.showOnlyIf && this.isVisible) {\n            this.updateTooltipPosition();\n        }\n    }\n\n    private clearTimeouts(): void {\n        if (this.showTimeoutId) {\n            clearTimeout(this.showTimeoutId);\n            this.showTimeoutId = null;\n        }\n\n        if (this.hideTimeoutId) {\n            clearTimeout(this.hideTimeoutId);\n            this.hideTimeoutId = null;\n        }\n    }\n\n    private showTooltip(): void {\n        if (!this.tooltipElement) return;\n\n        this.renderer.setStyle(this.tooltipElement, 'display', 'block');\n\n        this.updateTooltipPosition();\n\n        void this.tooltipElement.offsetHeight;\n\n        this.renderer.setStyle(this.tooltipElement, 'opacity', '1');\n        this.isVisible = true;\n    }\n\n    private hideTooltip(): void {\n        if (!this.tooltipElement) return;\n\n        this.renderer.setStyle(this.tooltipElement, 'opacity', '0');\n\n        // Wait for the transition to complete\n        setTimeout(() => {\n            if (this.tooltipElement && !this.isVisible) {\n                this.renderer.setStyle(this.tooltipElement, 'display', 'none');\n            }\n        }, 300);\n\n        this.isVisible = false;\n    }\n\n    private updateTooltipPosition(): void {\n        if (!this.tooltipElement) return;\n\n        const hostRect = this.el.nativeElement.getBoundingClientRect();\n        let tooltipRect = this.tooltipElement.getBoundingClientRect();\n\n        if (tooltipRect.width === 0 || tooltipRect.height === 0) {\n            const currentDisplay = this.tooltipElement.style.display;\n            const currentOpacity = this.tooltipElement.style.opacity;\n\n            this.renderer.setStyle(this.tooltipElement, 'display', 'block');\n            this.renderer.setStyle(this.tooltipElement, 'opacity', '0');\n\n            tooltipRect = this.tooltipElement.getBoundingClientRect();\n\n            if (!this.isVisible) {\n                this.renderer.setStyle(this.tooltipElement, 'display', currentDisplay);\n                this.renderer.setStyle(this.tooltipElement, 'opacity', currentOpacity);\n            }\n        }\n\n        let top = 0, left = 0;\n\n        switch (this.position) {\n            case 'top':\n                top = hostRect.top - tooltipRect.height - 8;\n                left = hostRect.left + (hostRect.width / 2) - (tooltipRect.width / 2);\n                break;\n            case 'right':\n                top = hostRect.top + (hostRect.height / 2) - (tooltipRect.height / 2);\n                left = hostRect.right + 8;\n                break;\n            case 'bottom':\n                top = hostRect.bottom + 8;\n                left = hostRect.left + (hostRect.width / 2) - (tooltipRect.width / 2);\n                break;\n            case 'left':\n                top = hostRect.top + (hostRect.height / 2) - (tooltipRect.height / 2);\n                left = hostRect.left - tooltipRect.width - 8;\n                break;\n        }\n\n        this.renderer.setStyle(this.tooltipElement, 'top', `${top + window.pageYOffset}px`);\n        this.renderer.setStyle(this.tooltipElement, 'left', `${left + window.pageXOffset}px`);\n    }\n\n    ngOnDestroy(): void {\n        this.clearTimeouts();\n\n        if (this.tooltipElement) {\n            this.renderer.removeChild(document.body, this.tooltipElement);\n            this.tooltipElement = null;\n        }\n    }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TooltipDirective } from './tooltip.directive';\n\n\n\n@NgModule({\n  declarations: [],\n  imports: [\n    CommonModule,\n    TooltipDirective\n  ],\n  exports: [\n    TooltipDirective\n  ]\n})\nexport class TooltipModule { }\n","import { trigger, state, style, transition, animate } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\nexport interface NotificationMessage {\n  severity: 'success' | 'info' | 'warn' | 'error';\n  summary: string;\n  detail: string;\n  timeout?: number;\n}\n\n@Component({\n  selector: 'app-notification',\n  imports: [\n    CommonModule\n  ],\n  templateUrl: './notification.component.html',\n  styleUrl: './notification.component.scss',\n  animations: [\n    trigger('notificationAnimation', [\n      state('void', style({\n        transform: 'translateX(100%)',\n        opacity: 0\n      })),\n      state('visible', style({\n        transform: 'translateX(0)',\n        opacity: 1\n      })),\n      state('hidden', style({\n        transform: 'translateX(100%)',\n        opacity: 0\n      })),\n      transition('void => visible', animate('300ms ease-out')),\n      transition('visible => hidden', animate('200ms ease-in'))\n    ])\n  ]\n})\nexport class NotificationComponent {\n  @Input() message: NotificationMessage | null = null;\n\n  visible = false;\n  animationState = 'void';\n  progressWidth = 100;\n  showProgressBar = true;\n\n  private timeout: any;\n  private progressInterval: any;\n\n  ngOnInit(): void {\n    if (this.message) {\n      this.show();\n    }\n  }\n\n  show(): void {\n    this.visible = true;\n    this.animationState = 'visible';\n    this.startProgressBar();\n  }\n\n  hide(): void {\n    this.animationState = 'hidden';\n    this.clearTimers();\n\n    setTimeout(() => {\n      this.visible = false;\n    }, 200);\n  }\n\n  getIconClass(): string {\n    switch (this.message?.severity) {\n      case 'success': return 'pi pi-check-circle';\n      case 'info': return 'pi pi-info-circle';\n      case 'warn': return 'pi pi-exclamation-triangle';\n      case 'error': return 'pi pi-times-circle';\n      default: return 'pi pi-info-circle';\n    }\n  }\n\n  private startProgressBar(): void {\n    this.progressWidth = 100;\n    const duration = this.message?.timeout || 5000;\n\n    clearInterval(this.progressInterval);\n    this.progressInterval = setInterval(() => {\n      this.progressWidth -= 0.5;\n      if (this.progressWidth <= 0) {\n        this.hide();\n      }\n    }, duration / 200);\n\n    this.timeout = setTimeout(() => {\n      this.hide();\n    }, duration);\n  }\n\n  private clearTimers(): void {\n    clearTimeout(this.timeout);\n    clearInterval(this.progressInterval);\n  }\n\n  ngOnDestroy(): void {\n    this.clearTimers();\n  }\n}","<div *ngIf=\"visible\" class=\"notification-container\" [ngClass]=\"'notification-' + message?.severity\"\n  [@notificationAnimation]=\"animationState\">\n  <div class=\"notification-icon\">\n    <i class=\"notification-icon-symbol\" [ngClass]=\"getIconClass()\"></i>\n  </div>\n  <div class=\"notification-content\">\n    <div class=\"notification-summary\">{{ message?.summary }}</div>\n    <div class=\"notification-detail\">{{ message?.detail }}</div>\n  </div>\n  <button class=\"notification-close\" (click)=\"hide()\">×</button>\n  <div *ngIf=\"showProgressBar\" class=\"notification-progress\" [style.width.%]=\"progressWidth\"></div>\n</div>","import { Injectable, ApplicationRef, ComponentFactoryResolver, ComponentRef, Injector, EmbeddedViewRef } from '@angular/core';\nimport { NotificationComponent, NotificationMessage } from './notification.component';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class NotificationService {\n    private notificationRefs: ComponentRef<NotificationComponent>[] = [];\n\n    constructor(\n        private appRef: ApplicationRef,\n        private componentFactoryResolver: ComponentFactoryResolver,\n        private injector: Injector\n    ) { }\n\n    show(message: NotificationMessage): void {\n        const componentRef = this.componentFactoryResolver\n            .resolveComponentFactory(NotificationComponent)\n            .create(this.injector);\n\n        componentRef.instance.message = message;\n\n        this.appRef.attachView(componentRef.hostView);\n\n        const domElement = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0];\n\n        document.body.appendChild(domElement);\n\n        this.notificationRefs.push(componentRef);\n\n        componentRef.instance.animationState = 'visible';\n        const originalHide = componentRef.instance.hide;\n        componentRef.instance.hide = () => {\n            originalHide.call(componentRef.instance);\n\n            setTimeout(() => {\n                this.removeNotification(componentRef);\n            }, 300);\n        };\n    }\n\n    success(summary: string, detail: string, timeout = 5000): void {\n        this.show({ severity: 'success', summary, detail, timeout });\n    }\n\n    info(summary: string, detail: string, timeout = 5000): void {\n        this.show({ severity: 'info', summary, detail, timeout });\n    }\n\n    warn(summary: string, detail: string, timeout = 5000): void {\n        this.show({ severity: 'warn', summary, detail, timeout });\n    }\n\n    error(summary: string, detail: string, timeout = 5000): void {\n        this.show({ severity: 'error', summary, detail, timeout });\n    }\n\n    private removeNotification(ref: ComponentRef<NotificationComponent>): void {\n        const index = this.notificationRefs.indexOf(ref);\n        if (index !== -1) {\n            this.appRef.detachView(ref.hostView);\n            ref.destroy();\n            this.notificationRefs.splice(index, 1);\n        }\n    }\n\n    clear(): void {\n        this.notificationRefs.forEach(ref => {\n            this.appRef.detachView(ref.hostView);\n            ref.destroy();\n        });\n        this.notificationRefs = [];\n    }\n}","import { Injectable, Renderer2, RendererFactory2 } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ThemeService {\n    private renderer: Renderer2;\n    private _isDarkTheme = new BehaviorSubject<boolean>(true);\n\n    public isDarkTheme$ = this._isDarkTheme.asObservable();\n\n    constructor(rendererFactory: RendererFactory2) {\n        this.renderer = rendererFactory.createRenderer(null, null);\n\n        const savedTheme = localStorage.getItem('isDarkTheme');\n        const initialTheme = savedTheme !== null ? savedTheme === 'true' :\n            window.matchMedia('(prefers-color-scheme: dark)').matches;\n\n        this.setTheme(initialTheme);\n    }\n\n    public get isDarkTheme(): boolean {\n        return this._isDarkTheme.value;\n    }\n\n    public setTheme(isDark: boolean): void {\n        this._isDarkTheme.next(isDark);\n        localStorage.setItem('isDarkTheme', String(isDark));\n\n        if (isDark) {\n            this.renderer.addClass(document.documentElement, 'dark-theme');\n            this.renderer.removeClass(document.documentElement, 'light-theme');\n        } else {\n            this.renderer.addClass(document.documentElement, 'light-theme');\n            this.renderer.removeClass(document.documentElement, 'dark-theme');\n        }\n    }\n\n    public toggleTheme(): void {\n        this.setTheme(!this.isDarkTheme);\n    }\n}","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThemeService } from '../../services/theme.service';\n\n@Component({\n  selector: 'app-theme-toggle',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <button \n      class=\"theme-toggle\"\n      [class.theme-toggle-small]=\"size === 'small'\"\n      [class.theme-toggle-large]=\"size === 'large'\"\n      (click)=\"toggleTheme()\" \n      [attr.aria-label]=\"'Toggle ' + (isDarkTheme ? 'light' : 'dark') + ' mode'\"\n    >\n      <div class=\"theme-toggle-icon\">\n        <svg *ngIf=\"isDarkTheme\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n          <circle cx=\"12\" cy=\"12\" r=\"5\"></circle>\n          <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\"></line>\n          <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\"></line>\n          <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\"></line>\n          <line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\"></line>\n          <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\"></line>\n          <line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\"></line>\n          <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\"></line>\n          <line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\"></line>\n        </svg>\n        <svg *ngIf=\"!isDarkTheme\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n          <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"></path>\n        </svg>\n      </div>\n    </button>\n  `,\n  styles: [`\n    .theme-toggle {\n      background-color: var(--bg-tertiary);\n      color: var(--text-primary);\n      border: 1px solid var(--border-color);\n      border-radius: 50%;\n      cursor: pointer;\n      width: 40px;\n      height: 40px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      transition: all 0.2s ease;\n      padding: 0;\n      box-shadow: var(--shadow-sm);\n    }\n    \n    .theme-toggle:hover {\n      box-shadow: var(--shadow-md);\n    }\n    \n    .theme-toggle:active {\n      transform: translateY(0);\n    }\n    \n    .theme-toggle-icon {\n      width: 20px;\n      height: 20px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    \n    .theme-toggle-small {\n      width: 32px;\n      height: 32px;\n    }\n    \n    .theme-toggle-small .theme-toggle-icon {\n      width: 16px;\n      height: 16px;\n    }\n    \n    .theme-toggle-large {\n      width: 48px;\n      height: 48px;\n    }\n    \n    .theme-toggle-large .theme-toggle-icon {\n      width: 24px;\n      height: 24px;\n    }\n  `]\n})\nexport class ThemeToggleComponent {\n  @Input() size: 'small' | 'medium' | 'large' = 'medium';\n\n  constructor(private themeService: ThemeService) { }\n\n  get isDarkTheme(): boolean {\n    return this.themeService.isDarkTheme;\n  }\n\n  toggleTheme(): void {\n    this.themeService.toggleTheme();\n  }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThemeService } from '../../services/theme.service';\nimport { ThemeToggleComponent } from './theme-toggle.component';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        ThemeToggleComponent\n    ],\n    exports: [\n        ThemeToggleComponent\n    ],\n    providers: [\n        ThemeService\n    ]\n})\nexport class ThemeModule { }","import { Injectable } from \"@angular/core\"\nimport { Observable, Subject } from \"rxjs\"\nimport { ConfirmationDialogConfig, ConfirmationDialogResult } from \"./confirmation-dialog.model\"\n\n@Injectable({\n    providedIn: \"root\",\n})\nexport class ConfirmationDialogService {\n    private dialogSubject = new Subject<ConfirmationDialogConfig | null>()\n    private resultSubject = new Subject<ConfirmationDialogResult>()\n    private currentDialog: Observable<ConfirmationDialogResult> | null = null\n    public dialog$ = this.dialogSubject.asObservable()\n\n    confirm(config: ConfirmationDialogConfig): Observable<ConfirmationDialogResult> {\n        const completeConfig: ConfirmationDialogConfig = {\n            confirmText: \"Confirm\",\n            cancelText: \"Cancel\",\n            severity: \"info\",\n            showCancel: true,\n            ...config,\n        }\n\n        this.dialogSubject.next(completeConfig)\n        this.currentDialog = this.resultSubject.asObservable()\n        return this.currentDialog\n    }\n\n    success(\n        title: string,\n        message: string,\n        options?: Partial<ConfirmationDialogConfig>,\n    ): Observable<ConfirmationDialogResult> {\n        return this.confirm({\n            title,\n            message,\n            severity: \"success\",\n            ...options,\n        })\n    }\n\n    info(\n        title: string,\n        message: string,\n        options?: Partial<ConfirmationDialogConfig>,\n    ): Observable<ConfirmationDialogResult> {\n        return this.confirm({\n            title,\n            message,\n            severity: \"info\",\n            ...options,\n        })\n    }\n\n    warn(\n        title: string,\n        message: string,\n        options?: Partial<ConfirmationDialogConfig>,\n    ): Observable<ConfirmationDialogResult> {\n        return this.confirm({\n            title,\n            message,\n            severity: \"warn\",\n            ...options,\n        })\n    }\n\n    error(\n        title: string,\n        message: string,\n        options?: Partial<ConfirmationDialogConfig>,\n    ): Observable<ConfirmationDialogResult> {\n        return this.confirm({\n            title,\n            message,\n            severity: \"error\",\n            ...options,\n        })\n    }\n\n    close(result: ConfirmationDialogResult): void {\n        this.resultSubject.next(result)\n        this.dialogSubject.next(null)\n        this.currentDialog = null\n    }\n}\n\n","import {\n  Component,\n  OnInit,\n  OnDestroy,\n  HostListener,\n  ChangeDetectorRef,\n  ViewEncapsulation,\n  Inject,\n} from \"@angular/core\"\nimport { CommonModule } from \"@angular/common\"\nimport { Subscription } from \"rxjs\"\nimport { trigger, transition, style, animate, AnimationEvent } from \"@angular/animations\"\nimport { ConfirmationDialogService } from \"./confirmation-dialog.service\"\nimport { ConfirmationDialogConfig, DialogSeverity } from \"./confirmation-dialog.model\"\nimport { DOCUMENT } from \"@angular/common\"\n\n@Component({\n  selector: \"n-confirmation-dialog\",\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: \"./confirmation-dialog.component.html\",\n  styleUrls: [\"./confirmation-dialog.component.scss\"],\n  encapsulation: ViewEncapsulation.None,\n  animations: [\n    trigger(\"dialogAnimation\", [\n      transition(\":enter\", [\n        style({ opacity: 0, transform: \"scale(0.95) translateY(10px)\" }),\n        animate(\"250ms cubic-bezier(0.16, 1, 0.3, 1)\", style({ opacity: 1, transform: \"scale(1) translateY(0)\" })),\n      ]),\n      transition(\":leave\", [\n        animate(\n          \"180ms cubic-bezier(0.16, 1, 0.3, 1)\",\n          style({ opacity: 0, transform: \"scale(0.95) translateY(10px)\" }),\n        ),\n      ]),\n    ]),\n    trigger(\"overlayAnimation\", [\n      transition(\":enter\", [style({ opacity: 0 }), animate(\"200ms ease-out\", style({ opacity: 1 }))]),\n      transition(\":leave\", [animate(\"150ms ease-in\", style({ opacity: 0 }))]),\n    ]),\n  ],\n})\nexport class ConfirmationDialogComponent implements OnInit, OnDestroy {\n  visible = false\n  config: ConfirmationDialogConfig | null = null\n  private subscription: Subscription = new Subscription()\n  private animationInProgress = false;\n\n  constructor(\n    private dialogService: ConfirmationDialogService,\n    private cdr: ChangeDetectorRef,\n    @Inject(DOCUMENT) private document: Document\n  ) { }\n\n  ngOnInit(): void {\n    this.subscription.add(\n      this.dialogService.dialog$.subscribe((config) => {\n        this.config = config\n        this.visible = !!config\n\n        if (this.visible) {\n          this.disableBodyScroll()\n        } else {\n          this.enableBodyScroll()\n        }\n\n        this.cdr.detectChanges()\n      }),\n    )\n  }\n\n  ngOnDestroy(): void {\n    this.enableBodyScroll()\n    this.subscription.unsubscribe()\n  }\n\n  confirm(): void {\n    if (this.animationInProgress) return\n    this.dialogService.close({ confirmed: true })\n  }\n\n  cancel(): void {\n    if (this.animationInProgress) return\n    this.dialogService.close({ confirmed: false })\n  }\n\n  @HostListener(\"document:keydown.escape\")\n  onEscapeKey(): void {\n    if (this.visible && !this.animationInProgress) {\n      this.cancel()\n    }\n  }\n\n  getIconClass(severity: DialogSeverity = \"info\"): string {\n    switch (severity) {\n      case \"success\":\n        return \"pi pi-check-circle\"\n      case \"warn\":\n        return \"pi pi-exclamation-triangle\"\n      case \"error\":\n        return \"pi pi-times-circle\"\n      case \"info\":\n      default:\n        return \"pi pi-info-circle\"\n    }\n  }\n\n  stopPropagation(event: MouseEvent): void {\n    event.stopPropagation()\n  }\n\n  onAnimationStart(event: AnimationEvent): void {\n    this.animationInProgress = true\n  }\n\n  onAnimationDone(event: AnimationEvent): void {\n    this.animationInProgress = false\n  }\n\n  private disableBodyScroll(): void {\n    const scrollbarWidth = window.innerWidth - this.document.documentElement.clientWidth\n    this.document.body.style.overflow = \"hidden\"\n    this.document.body.style.paddingRight = `${scrollbarWidth}px`\n  }\n\n  private enableBodyScroll(): void {\n    this.document.body.style.overflow = \"\"\n    this.document.body.style.paddingRight = \"\"\n  }\n}\n\n","<div *ngIf=\"visible\" class=\"dialog-overlay\" (click)=\"cancel()\" [@overlayAnimation]>\n  <div class=\"dialog-container\" (click)=\"stopPropagation($event)\" [@dialogAnimation]>\n    <div class=\"dialog-header\" [ngClass]=\"'dialog-' + (config?.severity || 'info')\">\n      <div class=\"dialog-icon\">\n        <i [class]=\"getIconClass(config?.severity)\"></i>\n      </div>\n      <h2 class=\"dialog-title\">{{ config?.title }}</h2>\n      <button class=\"dialog-close\" (click)=\"cancel()\" aria-label=\"Close\">\n        <i class=\"pi pi-times\"></i>\n      </button>\n    </div>\n\n    <div class=\"dialog-content\">\n      <p class=\"dialog-message\">{{ config?.message }}</p>\n    </div>\n\n    <div class=\"dialog-actions\">\n      <ng-container *ngIf=\"config?.showCancel !== false\">\n        <button class=\"dialog-button dialog-button-cancel\" (click)=\"cancel()\">\n          {{ config?.cancelText || 'Cancel' }}\n        </button>\n      </ng-container>\n      <button class=\"dialog-button dialog-button-confirm\" [ngClass]=\"'dialog-button-' + (config?.severity || 'info')\"\n        (click)=\"confirm()\">\n        {{ config?.confirmText || 'Confirm' }}\n      </button>\n    </div>\n  </div>\n</div>","import { Directive, Input, Output, EventEmitter, HostListener } from \"@angular/core\"\nimport { ConfirmationDialogService } from \"./confirmation-dialog.service\"\nimport { ConfirmationDialogConfig, DialogSeverity } from \"./confirmation-dialog.model\"\nimport { firstValueFrom } from \"rxjs\"\n\n@Directive({\n    selector: \"[nConfirmation]\",\n    standalone: true,\n})\nexport class ConfirmationDirective {\n    @Input() confirmTitle = \"Confirm Action\"\n    @Input() confirmMessage = \"Are you sure you want to proceed?\"\n    @Input() confirmText = \"Confirm\"\n    @Input() cancelText = \"Cancel\"\n    @Input() confirmSeverity: DialogSeverity = \"warn\"\n    @Input() showCancel = true\n    @Input() disabled = false\n\n    @Output() confirmed = new EventEmitter<void>()\n    @Output() cancelled = new EventEmitter<void>()\n    @Output() dialogOpened = new EventEmitter<void>()\n\n    constructor(private dialogService: ConfirmationDialogService) { }\n\n    @HostListener(\"click\", [\"$event\"])\n    async onClick(event: Event): Promise<void> {\n        if (this.disabled) {\n            return\n        }\n\n        event.preventDefault()\n        event.stopPropagation()\n\n        const config: ConfirmationDialogConfig = {\n            title: this.confirmTitle,\n            message: this.confirmMessage,\n            confirmText: this.confirmText,\n            cancelText: this.cancelText,\n            severity: this.confirmSeverity,\n            showCancel: this.showCancel,\n        }\n\n        try {\n            this.dialogOpened.emit()\n            const result = await firstValueFrom(this.dialogService.confirm(config))\n\n            if (result.confirmed) {\n                this.confirmed.emit()\n            } else {\n                this.cancelled.emit()\n            }\n        } catch (error) {\n            this.cancelled.emit()\n            console.error(\"Dialog error:\", error)\n        }\n    }\n}\n\n","import { Injectable, Inject } from \"@angular/core\"\nimport { DOCUMENT } from \"@angular/common\"\nimport { Observable, Subject } from \"rxjs\"\nimport { MessageDialogConfig } from \"./message-dialog.model\"\n\n@Injectable({\n    providedIn: \"root\",\n})\nexport class MessageDialogService {\n    private dialogSubject = new Subject<MessageDialogConfig | null>()\n    private closeSubject = new Subject<void>()\n\n    public dialog$ = this.dialogSubject.asObservable()\n    public close$ = this.closeSubject.asObservable()\n\n    private activeTimeoutId: number | null = null;\n\n    constructor(@Inject(DOCUMENT) private document: Document) { }\n\n    show(config: MessageDialogConfig): Observable<void> {\n\n        if (this.activeTimeoutId !== null) {\n            window.clearTimeout(this.activeTimeoutId)\n            this.activeTimeoutId = null\n        }\n\n        const completeConfig: MessageDialogConfig = {\n            showCloseButton: true,\n            closeOnEscape: true,\n            closeOnBackdropClick: true,\n            closable: true,\n            duration: 0,\n            severity: \"info\",\n            ...config,\n        }\n\n        this.dialogSubject.next(completeConfig)\n\n        if (completeConfig.duration && completeConfig.duration > 0) {\n            this.activeTimeoutId = window.setTimeout(() => {\n                this.close()\n            }, completeConfig.duration)\n        }\n\n        return this.close$\n    }\n\n    success(title: string, message: string, options?: Partial<MessageDialogConfig>): Observable<void> {\n        return this.show({\n            title,\n            message,\n            severity: \"success\",\n            ...options,\n        })\n    }\n\n    info(title: string, message: string, options?: Partial<MessageDialogConfig>): Observable<void> {\n        return this.show({\n            title,\n            message,\n            severity: \"info\",\n            ...options,\n        })\n    }\n\n    warn(title: string, message: string, options?: Partial<MessageDialogConfig>): Observable<void> {\n        return this.show({\n            title,\n            message,\n            severity: \"warn\",\n            ...options,\n        })\n    }\n\n    error(title: string, message: string, options?: Partial<MessageDialogConfig>): Observable<void> {\n        return this.show({\n            title,\n            message,\n            severity: \"error\",\n            ...options,\n        })\n    }\n\n    close(): void {\n        if (this.activeTimeoutId !== null) {\n            window.clearTimeout(this.activeTimeoutId)\n            this.activeTimeoutId = null\n        }\n\n        this.dialogSubject.next(null)\n        this.closeSubject.next()\n    }\n}","import {\n  Component,\n  OnInit,\n  OnDestroy,\n  HostListener,\n  ChangeDetectorRef,\n  ViewEncapsulation,\n  Inject,\n} from \"@angular/core\"\nimport { CommonModule } from \"@angular/common\"\nimport { Subscription } from \"rxjs\"\nimport { trigger, transition, style, animate, type AnimationEvent } from \"@angular/animations\"\nimport { DOCUMENT } from \"@angular/common\"\nimport { MessageDialogConfig, MessageSeverity } from \"./message-dialog.model\"\nimport { MessageDialogService } from \"./message-dialog.service\"\n@Component({\n  selector: \"n-message-dialog\",\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: \"./message-dialog.component.html\",\n  styleUrls: [\"./message-dialog.component.scss\"],\n  encapsulation: ViewEncapsulation.None,\n  animations: [\n    trigger(\"dialogAnimation\", [\n      transition(\":enter\", [\n        style({ opacity: 0, transform: \"scale(0.95) translateY(10px)\" }),\n        animate(\"250ms cubic-bezier(0.16, 1, 0.3, 1)\", style({ opacity: 1, transform: \"scale(1) translateY(0)\" })),\n      ]),\n      transition(\":leave\", [\n        animate(\n          \"180ms cubic-bezier(0.16, 1, 0.3, 1)\",\n          style({ opacity: 0, transform: \"scale(0.95) translateY(10px)\" }),\n        ),\n      ]),\n    ]),\n    trigger(\"overlayAnimation\", [\n      transition(\":enter\", [style({ opacity: 0 }), animate(\"200ms ease-out\", style({ opacity: 1 }))]),\n      transition(\":leave\", [animate(\"150ms ease-in\", style({ opacity: 0 }))]),\n    ]),\n  ],\n})\nexport class MessageDialogComponent implements OnInit, OnDestroy {\n  visible = false\n  config: MessageDialogConfig | null = null\n  private subscription: Subscription = new Subscription()\n  private animationInProgress = false;\n\n  constructor(\n    private dialogService: MessageDialogService,\n    private cdr: ChangeDetectorRef,\n    @Inject(DOCUMENT) private document: Document\n  ) { }\n\n  ngOnInit(): void {\n    this.subscription.add(\n      this.dialogService.dialog$.subscribe((config) => {\n        this.config = config\n        this.visible = !!config\n\n        if (this.visible) {\n          this.disableBodyScroll()\n        } else {\n          this.enableBodyScroll()\n        }\n\n        this.cdr.detectChanges()\n      }),\n    )\n  }\n\n  ngOnDestroy(): void {\n    this.enableBodyScroll()\n    this.subscription.unsubscribe()\n  }\n\n  close(): void {\n    if (this.animationInProgress || !this.config?.closable) return\n    this.dialogService.close()\n  }\n\n  @HostListener(\"document:keydown.escape\")\n  onEscapeKey(): void {\n    if (this.visible && !this.animationInProgress && this.config?.closeOnEscape && this.config?.closable) {\n      this.close()\n    }\n  }\n\n  onBackdropClick(): void {\n    if (this.config?.closeOnBackdropClick && this.config?.closable) {\n      this.close()\n    }\n  }\n\n  getIconClass(severity: MessageSeverity = \"info\"): string {\n    switch (severity) {\n      case \"success\":\n        return \"pi pi-check-circle\"\n      case \"warn\":\n        return \"pi pi-exclamation-triangle\"\n      case \"error\":\n        return \"pi pi-times-circle\"\n      case \"info\":\n      default:\n        return \"pi pi-info-circle\"\n    }\n  }\n\n  stopPropagation(event: MouseEvent): void {\n    event.stopPropagation()\n  }\n\n  onAnimationStart(event: AnimationEvent): void {\n    this.animationInProgress = true\n  }\n\n  onAnimationDone(event: AnimationEvent): void {\n    this.animationInProgress = false\n  }\n\n  private disableBodyScroll(): void {\n    const scrollbarWidth = window.innerWidth - this.document.documentElement.clientWidth\n    this.document.body.style.overflow = \"hidden\"\n    this.document.body.style.paddingRight = `${scrollbarWidth}px`\n  }\n\n  private enableBodyScroll(): void {\n    this.document.body.style.overflow = \"\"\n    this.document.body.style.paddingRight = \"\"\n  }\n}","<div *ngIf=\"visible\" class=\"message-dialog-overlay\" (click)=\"onBackdropClick()\" [@overlayAnimation]>\n  <div class=\"message-dialog-container\" (click)=\"stopPropagation($event)\" [@dialogAnimation]\n    (@dialogAnimation.start)=\"onAnimationStart($event)\" (@dialogAnimation.done)=\"onAnimationDone($event)\">\n\n    <div class=\"message-dialog-header\" [ngClass]=\"'message-dialog-' + (config?.severity || 'info')\">\n      <div class=\"message-dialog-icon\">\n        <i [class]=\"getIconClass(config?.severity)\"></i>\n      </div>\n      <h2 class=\"message-dialog-title\">{{ config?.title }}</h2>\n      <button *ngIf=\"config?.showCloseButton && config?.closable\" class=\"message-dialog-close\" (click)=\"close()\"\n        aria-label=\"Close\">\n        <i class=\"pi pi-times\"></i>\n      </button>\n    </div>\n\n    <div class=\"message-dialog-content\">\n      <p class=\"message-dialog-message\">{{ config?.message }}</p>\n    </div>\n  </div>\n</div>","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, HostListener, Input, OnInit, OnChanges, SimpleChanges, Renderer2, Inject, PLATFORM_ID } from '@angular/core';\n\ntype ButtonSeverity = 'primary' | 'secondary' | 'success' | 'info' | 'warn' | 'error';\ntype ButtonSize = 'sm' | 'md' | 'lg';\n\n@Directive({\n    selector: '[nButton]',\n    standalone: true,\n})\nexport class ButtonDirective implements OnInit, OnChanges {\n    private isBrowser: boolean;\n\n    @Input() severity: ButtonSeverity = 'primary';\n    @Input() size: ButtonSize = 'md';\n    @Input() label: string = '';\n    @Input() outlined: boolean = false;\n    @Input() rounded: boolean = false;\n    @Input()\n    get disabled(): boolean {\n        return this._disabled;\n    }\n    set disabled(value: boolean) {\n        this._disabled = value;\n        this.updateDisabledState();\n    }\n    private _disabled: boolean = false;\n    @Input() icon: string = '';\n    @Input() iconPos: 'left' | 'right' = 'left';\n    @Input()\n    set loading(value: boolean) {\n        if (value) {\n            if (!this.originalLabel) {\n                this.originalLabel = this.label;\n            }\n        } else {\n        }\n        this._loading = value;\n        this.updateDisabledState();\n    }\n    get loading(): boolean {\n        return this._loading;\n    }\n    private _loading: boolean = false;\n    @Input() ripple: boolean = true;\n\n    private loadingSpinner: HTMLElement | null = null;\n    private initialMinWidth: string | null = null;\n    private originalLabel: string | null = null;\n\n    @HostListener('click', ['$event'])\n    onClick(event: MouseEvent): void {\n        if (!this.isBrowser || this.disabled || !this.ripple) return;\n\n        this.createRippleEffect(event);\n    }\n\n    constructor(\n        @Inject(PLATFORM_ID) platformId: Object,\n        private el: ElementRef,\n        private renderer: Renderer2\n    ) {\n        this.isBrowser = isPlatformBrowser(platformId)\n    }\n\n    ngOnInit(): void {\n        if (this.isBrowser) {\n            this.applyBaseStyles();\n            this.applySeverityStyles();\n            this.applySizeStyles();\n\n            this.initialMinWidth = this.getMinWidth();\n\n            if (this.outlined) {\n                this.applyOutlinedStyles();\n            }\n\n            if (this.rounded) {\n                this.applyRoundedStyles();\n            }\n\n            const isIconOnly = this.icon && !this.label;\n\n            if (isIconOnly) {\n                this.applyIconOnlyStyles();\n            }\n\n            this.addButtonContent();\n\n            if (this.loading) {\n                this.applyLoadingState();\n            }\n\n            this.addRippleStyles();\n\n            const observer = new MutationObserver((mutations) => {\n                mutations.forEach((mutation) => {\n                    if (mutation.attributeName === 'disabled') {\n                        const nativeDisabled = this.el.nativeElement.hasAttribute('disabled');\n                        if (nativeDisabled !== this._disabled) {\n                            this._disabled = nativeDisabled;\n                            this.updateDisabledState();\n                        }\n                    }\n                });\n            });\n\n            observer.observe(this.el.nativeElement, {\n                attributes: true,\n                attributeFilter: ['disabled']\n            });\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (this.isBrowser) {\n            if (changes['loading']) {\n                if (changes['loading'].currentValue) {\n                    this.applyLoadingState();\n                } else {\n                    this.removeLoadingState();\n                }\n            }\n            if (changes['disabled']) {\n                this.updateDisabledState();\n            }\n        }\n    }\n\n    private createRippleEffect(event: MouseEvent): void {\n        if (!this.isBrowser) return;\n\n        const ripple = this.renderer.createElement('span');\n        this.renderer.addClass(ripple, 'n-button-ripple');\n\n        const rect = this.el.nativeElement.getBoundingClientRect();\n\n        const size = Math.max(rect.width, rect.height) * 2;\n\n        this.renderer.setStyle(ripple, 'width', `${size}px`);\n        this.renderer.setStyle(ripple, 'height', `${size}px`);\n\n        const x = event.clientX - rect.left - (size / 2);\n        const y = event.clientY - rect.top - (size / 2);\n        this.renderer.setStyle(ripple, 'left', `${x}px`);\n        this.renderer.setStyle(ripple, 'top', `${y}px`);\n\n        this.renderer.appendChild(this.el.nativeElement, ripple);\n\n        setTimeout(() => {\n            if (this.el.nativeElement.contains(ripple)) {\n                this.renderer.removeChild(this.el.nativeElement, ripple);\n            }\n        }, 600);\n    }\n\n    private addRippleStyles(): void {\n        if (!this.isBrowser) return;\n\n        if (!document.getElementById('n-button-ripple-style')) {\n            const style = this.renderer.createElement('style');\n            style.id = 'n-button-ripple-style';\n            const css = `\n                .n-button-ripple {\n                    position: absolute;\n                    border-radius: 50%;\n                    background-color: rgba(255, 255, 255, 0.4);\n                    transform: scale(0);\n                    animation: n-button-ripple-animation 0.6s ease-out;\n                    pointer-events: none;\n                }\n                \n                @keyframes n-button-ripple-animation {\n                    to {\n                        transform: scale(2);\n                        opacity: 0;\n                    }\n                }\n            `;\n            this.renderer.appendChild(style, this.renderer.createText(css));\n            this.renderer.appendChild(document.head, style);\n        }\n    }\n\n    private applyBaseStyles(): void {\n        const styles = {\n            'display': 'inline-flex',\n            'align-items': 'center',\n            'justify-content': 'center',\n            'font-family': 'Inter, sans-serif',\n            'font-weight': '500',\n            'border': 'none',\n            'cursor': 'pointer',\n            'transition': 'background-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, width 0.2s ease, padding 0.2s ease, min-width 0.2s ease',\n            'position': 'relative',\n            'overflow': 'hidden',\n            'box-shadow': 'var(--shadow-sm)',\n            'text-transform': 'none',\n            'letter-spacing': '0.3px',\n            'border-radius': '6px',\n            'min-width': this.getMinWidth(),\n        };\n\n        Object.entries(styles).forEach(([property, value]) => {\n            this.renderer.setStyle(this.el.nativeElement, property, value);\n        });\n    }\n\n    private getMinWidth(): string {\n        switch (this.size) {\n            case 'sm': return '80px';\n            case 'lg': return '120px';\n            case 'md':\n            default: return '100px';\n        }\n    }\n\n    private applySeverityStyles(): void {\n        let bgColor: string;\n        let textColor: string;\n        let hoverBgColor: string;\n\n        switch (this.severity) {\n            case 'primary':\n                bgColor = 'var(--brand-primary)';\n                textColor = '#ffffff';\n                hoverBgColor = 'var(--brand-secondary)';\n                break;\n            case 'secondary':\n                bgColor = 'var(--bg-tertiary)';\n                textColor = 'var(--text-primary)';\n                hoverBgColor = 'var(--bg-secondary)';\n                break;\n            case 'success':\n                bgColor = 'var(--success-color)';\n                textColor = '#ffffff';\n                hoverBgColor = 'color-mix(in srgb, var(--success-color), #000 10%)';\n                break;\n            case 'info':\n                bgColor = 'var(--info-color)';\n                textColor = '#ffffff';\n                hoverBgColor = 'color-mix(in srgb, var(--info-color), #000 10%)';\n                break;\n            case 'warn':\n                bgColor = 'var(--warn-color)';\n                textColor = '#ffffff';\n                hoverBgColor = 'color-mix(in srgb, var(--warn-color), #000 10%)';\n                break;\n            case 'error':\n                bgColor = 'var(--error-color)';\n                textColor = '#ffffff';\n                hoverBgColor = 'color-mix(in srgb, var(--error-color), #000 10%)';\n                break;\n            default:\n                bgColor = 'var(--brand-primary)';\n                textColor = '#ffffff';\n                hoverBgColor = 'var(--brand-secondary)';\n        }\n\n        this.renderer.setStyle(this.el.nativeElement, 'background-color', bgColor);\n        this.renderer.setStyle(this.el.nativeElement, 'color', textColor);\n\n        this.renderer.listen(this.el.nativeElement, 'mouseenter', () => {\n            if (!this.disabled) {\n                this.renderer.setStyle(this.el.nativeElement, 'background-color', hoverBgColor);\n                this.renderer.setStyle(this.el.nativeElement, 'box-shadow', 'var(--shadow-md)');\n            }\n        });\n\n        this.renderer.listen(this.el.nativeElement, 'mouseleave', () => {\n            if (!this.disabled) {\n                this.renderer.setStyle(this.el.nativeElement, 'background-color', bgColor);\n                this.renderer.setStyle(this.el.nativeElement, 'box-shadow', 'var(--shadow-sm)');\n            }\n        });\n    }\n\n    private applySizeStyles(): void {\n        let padding: string;\n        let fontSize: string;\n        let height: string;\n\n        switch (this.size) {\n            case 'sm':\n                padding = '0.5rem 0.75rem';\n                fontSize = '0.75rem';\n                height = '32px';\n                break;\n            case 'lg':\n                padding = '0.75rem 1.5rem';\n                fontSize = '1rem';\n                height = '48px';\n                break;\n            case 'md':\n            default:\n                padding = '0.625rem 1.25rem';\n                fontSize = '0.875rem';\n                height = '40px';\n        }\n\n        this.renderer.setStyle(this.el.nativeElement, 'padding', padding);\n        this.renderer.setStyle(this.el.nativeElement, 'font-size', fontSize);\n        this.renderer.setStyle(this.el.nativeElement, 'height', height);\n    }\n\n    private applyOutlinedStyles(): void {\n        let borderColor: string;\n        let textColor: string;\n        let hoverBgColor: string;\n\n        switch (this.severity) {\n            case 'primary':\n                borderColor = 'var(--brand-primary)';\n                textColor = 'var(--brand-primary)';\n                hoverBgColor = 'rgba(123, 104, 238, 0.1)';\n                break;\n            case 'secondary':\n                borderColor = 'var(--border-color)';\n                textColor = 'var(--text-primary)';\n                hoverBgColor = 'var(--bg-tertiary)';\n                break;\n            case 'success':\n                borderColor = 'var(--success-color)';\n                textColor = 'var(--success-color)';\n                hoverBgColor = 'rgba(74, 222, 128, 0.1)';\n                break;\n            case 'info':\n                borderColor = 'var(--info-color)';\n                textColor = 'var(--info-color)';\n                hoverBgColor = 'rgba(96, 165, 250, 0.1)';\n                break;\n            case 'warn':\n                borderColor = 'var(--warn-color)';\n                textColor = 'var(--warn-color)';\n                hoverBgColor = 'rgba(251, 191, 36, 0.1)';\n                break;\n            case 'error':\n                borderColor = 'var(--error-color)';\n                textColor = 'var(--error-color)';\n                hoverBgColor = 'rgba(248, 113, 113, 0.1)';\n                break;\n            default:\n                borderColor = 'var(--brand-primary)';\n                textColor = 'var(--brand-primary)';\n                hoverBgColor = 'rgba(123, 104, 238, 0.1)';\n        }\n\n        this.renderer.setStyle(this.el.nativeElement, 'background-color', 'transparent');\n        this.renderer.setStyle(this.el.nativeElement, 'border', `1px solid ${borderColor}`);\n        this.renderer.setStyle(this.el.nativeElement, 'color', textColor);\n\n        this.renderer.listen(this.el.nativeElement, 'mouseenter', () => {\n            if (!this.disabled) {\n                this.renderer.setStyle(this.el.nativeElement, 'background-color', hoverBgColor);\n            }\n        });\n\n        this.renderer.listen(this.el.nativeElement, 'mouseleave', () => {\n            if (!this.disabled) {\n                this.renderer.setStyle(this.el.nativeElement, 'background-color', 'transparent');\n            }\n        });\n    }\n\n    private applyRoundedStyles(): void {\n        this.renderer.setStyle(this.el.nativeElement, 'border-radius', '50px');\n    }\n\n    private updateDisabledState(): void {\n        if (this._disabled || this.loading) {\n            this.applyDisabledStyles();\n        } else {\n            this.removeDisabledStyles();\n        }\n    }\n\n    private applyDisabledStyles(): void {\n        this.renderer.setProperty(this.el.nativeElement, 'disabled', true);\n        this.renderer.setStyle(this.el.nativeElement, 'opacity', '0.6');\n        this.renderer.setStyle(this.el.nativeElement, 'cursor', 'not-allowed');\n        this.renderer.setStyle(this.el.nativeElement, 'pointer-events', 'none');\n    }\n\n    private removeDisabledStyles(): void {\n        this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n        this.renderer.removeStyle(this.el.nativeElement, 'opacity');\n        this.renderer.setStyle(this.el.nativeElement, 'cursor', 'pointer');\n        this.renderer.removeStyle(this.el.nativeElement, 'pointer-events');\n    }\n\n    private applyIconOnlyStyles(): void {\n        const size = this.getIconOnlySize();\n\n        this.renderer.setStyle(this.el.nativeElement, 'width', size);\n        this.renderer.setStyle(this.el.nativeElement, 'min-width', size);\n        this.renderer.setStyle(this.el.nativeElement, 'padding', '0');\n\n        if (this.rounded) {\n            this.renderer.setStyle(this.el.nativeElement, 'border-radius', '50%');\n        }\n    }\n\n    private getIconOnlySize(): string {\n        switch (this.size) {\n            case 'sm': return '32px';\n            case 'lg': return '48px';\n            case 'md':\n            default: return '40px';\n        }\n    }\n\n    private addButtonContent(): void {\n        while (this.el.nativeElement.firstChild) {\n            this.renderer.removeChild(this.el.nativeElement, this.el.nativeElement.firstChild);\n        }\n\n        const container = this.renderer.createElement('div');\n        this.renderer.setStyle(container, 'display', 'flex');\n        this.renderer.setStyle(container, 'align-items', 'center');\n        this.renderer.setStyle(container, 'justify-content', 'center');\n        this.renderer.setStyle(container, 'width', '100%');\n        this.renderer.setStyle(container, 'height', '100%');\n        this.renderer.setStyle(container, 'transition', 'all 0.2s ease-in-out');\n\n        if (this.icon && this.label) {\n            if (this.iconPos === 'left') {\n                const iconEl = this.createIconElement(true);\n                const labelEl = this.createLabelElement();\n                this.renderer.appendChild(container, iconEl);\n                this.renderer.appendChild(container, labelEl);\n            } else {\n                const labelEl = this.createLabelElement();\n                const iconEl = this.createIconElement(false);\n                this.renderer.appendChild(container, labelEl);\n                this.renderer.appendChild(container, iconEl);\n            }\n        } else if (this.icon) {\n            const iconEl = this.createIconElement(false);\n            this.renderer.appendChild(container, iconEl);\n        } else if (this.label) {\n            const labelEl = this.createLabelElement();\n            this.renderer.appendChild(container, labelEl);\n        }\n\n        this.renderer.appendChild(this.el.nativeElement, container);\n    }\n\n    private createIconElement(isLeftIcon: boolean): HTMLElement {\n        const iconElement = this.renderer.createElement('i');\n\n        if (this.icon) {\n            const iconClasses = this.icon.split(' ');\n            iconClasses.forEach(className => {\n                if (className) {\n                    this.renderer.addClass(iconElement, className);\n                }\n            });\n        }\n\n        let iconSize: string;\n        switch (this.size) {\n            case 'sm': iconSize = '0.875rem'; break;\n            case 'lg': iconSize = '1.25rem'; break;\n            case 'md':\n            default: iconSize = '1rem';\n        }\n\n        this.renderer.setStyle(iconElement, 'font-size', iconSize);\n\n        if (this.label) {\n            if (isLeftIcon) {\n                this.renderer.setStyle(iconElement, 'margin-right', '0.5rem');\n            } else {\n                this.renderer.setStyle(iconElement, 'margin-left', '0.5rem');\n            }\n        }\n\n        return iconElement;\n    }\n\n    private createLabelElement(): HTMLElement {\n        const span = this.renderer.createElement('span');\n        const text = this.renderer.createText(this.label);\n        this.renderer.appendChild(span, text);\n        return span;\n    }\n\n    private removeLoadingState(): void {\n        if (this.loadingSpinner && this.el.nativeElement.contains(this.loadingSpinner)) {\n            this.renderer.setStyle(this.loadingSpinner, 'opacity', '0');\n            const spinner = this.loadingSpinner;\n            setTimeout(() => {\n                if (this.el.nativeElement.contains(spinner)) {\n                    this.renderer.removeChild(this.el.nativeElement.firstChild, spinner);\n                }\n            }, 200);\n        }\n\n        this.loadingSpinner = null;\n        this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n        this.renderer.setStyle(this.el.nativeElement, 'cursor', 'pointer');\n        this.renderer.setStyle(this.el.nativeElement, 'min-width', this.initialMinWidth);\n    }\n\n    private applyLoadingState(): void {\n        const spinner = this.renderer.createElement('span');\n        this.renderer.addClass(spinner, 'n-button-spinner');\n\n        this.renderer.setStyle(spinner, 'width', '1em');\n        this.renderer.setStyle(spinner, 'height', '1em');\n        this.renderer.setStyle(spinner, 'border-radius', '50%');\n        this.renderer.setStyle(spinner, 'border', '2px solid currentColor');\n        this.renderer.setStyle(spinner, 'border-right-color', 'transparent');\n        this.renderer.setStyle(spinner, 'animation', 'n-button-spin 0.75s linear infinite');\n        this.renderer.setStyle(spinner, 'opacity', '0');\n        this.renderer.setStyle(spinner, 'position', 'relative');\n\n        if (this.label) {\n            this.renderer.setStyle(spinner, 'margin-right', '0.5rem');\n        }\n\n        if (!document.getElementById('n-button-spinner-style')) {\n            const style = this.renderer.createElement('style');\n            style.id = 'n-button-spinner-style';\n            const css = `\n                @keyframes n-button-spin {\n                    to { transform: rotate(360deg); }\n                }\n                .n-button-spinner {\n                    opacity: 1 !important;\n                    transition: opacity 0.2s ease-in-out;\n                }\n            `;\n            this.renderer.appendChild(style, this.renderer.createText(css));\n            this.renderer.appendChild(document.head, style);\n        }\n\n        const container = this.el.nativeElement.firstChild;\n        if (container) {\n            this.renderer.insertBefore(container, spinner, container.firstChild);\n        } else {\n            this.renderer.appendChild(this.el.nativeElement, spinner);\n        }\n\n        spinner.offsetHeight;\n        this.renderer.setStyle(spinner, 'opacity', '1');\n\n        this.loadingSpinner = spinner;\n        this.renderer.setProperty(this.el.nativeElement, 'disabled', true);\n        this.renderer.setStyle(this.el.nativeElement, 'cursor', 'wait');\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonDirective } from './button.directive';\n\n@NgModule({\n    imports: [ButtonDirective, CommonModule],\n    exports: [ButtonDirective]\n})\nexport class ButtonModule { }","import {\n    Directive,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    Input,\n    OnInit,\n    Output,\n    Renderer2\n} from '@angular/core';\n\ntype InputSize = 'sm' | 'md' | 'lg';\ntype KeyFilterType = 'int' | 'num' | 'alpha' | 'alphanum' | 'money' | 'blockSpace' | 'hex' | 'email' | 'custom';\n\n@Directive({\n    selector: '[nInputText]',\n    standalone: true,\n    exportAs: 'nInputText'\n})\nexport class InputTextDirective implements OnInit {\n    @Input() size: InputSize = 'md';\n    @Input() placeholder: string = '';\n    @Input() disabled: boolean = false;\n    @Input() readonly: boolean = false;\n    @Input() maxLength?: number;\n    @Input() minLength?: number;\n    @Input() keyFilter?: KeyFilterType;\n    @Input() blockChars?: string;\n    @Input() customRegex?: string;\n    @Input() icon?: string;\n    @Input() iconPos: 'left' | 'right' = 'left';\n    @Input() floatLabel: boolean = true;\n    @Input() invalid: boolean = false;\n    @Input() helpText?: string;\n    @Input() errorText?: string;\n    @Input() iconClickable: boolean = false;\n\n    @Output() valueChange = new EventEmitter<string>();\n    @Output() focusEvent = new EventEmitter<FocusEvent>();\n    @Output() blurEvent = new EventEmitter<FocusEvent>();\n    @Output() keydown = new EventEmitter<KeyboardEvent>();\n    @Output() keyup = new EventEmitter<KeyboardEvent>();\n    @Output() iconClick = new EventEmitter<void>();\n\n    private inputElement!: HTMLInputElement;\n    private wrapperElement!: HTMLDivElement;\n    private labelElement?: HTMLLabelElement;\n    private iconElement?: HTMLElement;\n    private helpTextElement?: HTMLElement;\n    private errorTextElement?: HTMLElement;\n    private isFocused: boolean = false;\n    private initialValue: string = '';\n\n\n    private readonly REGEX = {\n        int: /^-?\\d*$/,\n        num: /^-?\\d*\\.?\\d*$/,\n        alpha: /^[a-zA-Z]*$/,\n        alphanum: /^[a-zA-Z0-9]*$/,\n        hex: /^[0-9a-fA-F]*$/,\n        email: /^[a-zA-Z0-9._%+-@]*$/,\n        money: /^-?\\d*\\.?\\d{0,2}$/\n    };\n\n    constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n    ngOnInit(): void {\n        this.setupElements();\n        this.applyStyles();\n        this.setupEventListeners();\n\n        this.initialValue = this.inputElement.value;\n    }\n\n    private setupElements(): void {\n        this.inputElement = this.el.nativeElement;\n\n        this.wrapperElement = this.renderer.createElement('div');\n        this.renderer.addClass(this.wrapperElement, 'n-input-wrapper');\n\n        if (this.placeholder && this.floatLabel && !this.readonly) {\n            this.labelElement = this.renderer.createElement('label');\n            this.renderer.addClass(this.labelElement, 'n-input-label');\n            const labelText = this.renderer.createText(this.placeholder);\n            this.renderer.appendChild(this.labelElement, labelText);\n            this.renderer.appendChild(this.wrapperElement, this.labelElement);\n\n            this.renderer.setAttribute(this.inputElement, 'placeholder', '');\n        } else if (this.placeholder && !this.readonly) {\n            this.renderer.setAttribute(this.inputElement, 'placeholder', this.placeholder);\n        } else if (this.readonly) {\n            this.renderer.setAttribute(this.inputElement, 'placeholder', '');\n        }\n\n\n        if (this.icon) {\n            this.iconElement = this.renderer.createElement('i');\n            const iconClasses = this.icon.split(' ');\n            iconClasses.forEach(className => {\n                if (className) {\n                    this.renderer.addClass(this.iconElement!, className);\n                }\n            });\n            this.renderer.addClass(this.iconElement, 'n-input-icon');\n            this.renderer.addClass(this.iconElement, `n-input-icon-${this.iconPos}`);\n        }\n\n        if (this.helpText) {\n            this.helpTextElement = this.renderer.createElement('div');\n            this.renderer.addClass(this.helpTextElement, 'n-input-help-text');\n            const helpText = this.renderer.createText(this.helpText);\n            this.renderer.appendChild(this.helpTextElement, helpText);\n        }\n\n        if (this.errorText) {\n            this.errorTextElement = this.renderer.createElement('div');\n            this.renderer.addClass(this.errorTextElement, 'n-input-error-text');\n            const errorText = this.renderer.createText(this.errorText);\n            this.renderer.appendChild(this.errorTextElement, errorText);\n        }\n\n        const parent = this.renderer.parentNode(this.inputElement);\n\n        if (this.iconElement && this.iconPos === 'left') {\n            this.renderer.appendChild(this.wrapperElement, this.iconElement);\n        }\n\n        this.renderer.removeChild(parent, this.inputElement);\n        this.renderer.appendChild(this.wrapperElement, this.inputElement);\n\n        if (this.iconElement && this.iconPos === 'right') {\n            this.renderer.appendChild(this.wrapperElement, this.iconElement);\n        }\n\n        this.renderer.appendChild(parent, this.wrapperElement);\n\n        if (this.helpTextElement) {\n            this.renderer.appendChild(parent, this.helpTextElement);\n        }\n\n        if (this.errorTextElement) {\n            this.renderer.appendChild(parent, this.errorTextElement);\n        }\n    }\n\n    private applyStyles(): void {\n        this.renderer.addClass(this.inputElement, 'n-input');\n\n        this.renderer.addClass(this.inputElement, `n-input-${this.size}`);\n\n        if (this.icon) {\n            this.renderer.addClass(this.inputElement, `n-input-has-icon-${this.iconPos}`);\n        }\n\n        if (this.invalid) {\n            this.renderer.addClass(this.inputElement, 'n-input-invalid');\n        }\n\n        if (this.disabled) {\n            this.renderer.setProperty(this.inputElement, 'disabled', true);\n            this.renderer.addClass(this.wrapperElement, 'n-input-wrapper-disabled');\n        }\n\n        if (this.readonly) {\n            this.renderer.setAttribute(this.inputElement, 'readonly', 'readonly');\n            this.renderer.addClass(this.wrapperElement, 'n-input-wrapper-readonly');\n            this.renderer.setStyle(this.inputElement, 'cursor', 'default');\n            this.renderer.setStyle(this.inputElement, 'user-select', 'none');\n            this.renderer.setStyle(this.inputElement, 'background-color', 'var(--bg-tertiary)');\n            this.renderer.setStyle(this.inputElement, 'opacity', '0.9');\n        }\n\n        if (this.maxLength !== undefined) {\n            this.renderer.setAttribute(this.inputElement, 'maxlength', this.maxLength.toString());\n        }\n\n        this.applyBaseStyles();\n    }\n\n    private applyBaseStyles(): void {\n        const wrapperStyles = {\n            'position': 'relative',\n            'display': 'inline-flex',\n            'align-items': 'center',\n            'width': 'fit-content',\n            'font-family': 'Inter, sans-serif',\n            'transition': 'all 0.2s ease',\n        };\n\n        Object.entries(wrapperStyles).forEach(([property, value]) => {\n            this.renderer.setStyle(this.wrapperElement, property, value);\n        });\n\n        const inputStyles = {\n\n            'font-family': 'Inter, sans-serif',\n            'background-color': 'var(--bg-secondary)',\n            'color': 'var(--text-primary)',\n            'border': '1px solid var(--border-color)',\n            'border-radius': '6px',\n            'transition': 'all 0.2s ease',\n            'outline': 'none',\n            'box-sizing': 'border-box',\n            'max-width': 'fit-content',\n            'min-width': '200px'\n        };\n\n        Object.entries(inputStyles).forEach(([property, value]) => {\n            this.renderer.setStyle(this.inputElement, property, value);\n        });\n\n        let padding: string;\n        let fontSize: string;\n        let height: string;\n\n        switch (this.size) {\n            case 'sm':\n                padding = this.icon ? (this.iconPos === 'left' ? '0.5rem 0.75rem 0.5rem 2.5rem' : '0.5rem 2.5rem 0.5rem 0.75rem') : '0.5rem 0.75rem';\n                fontSize = '0.75rem';\n                height = '32px';\n                break;\n            case 'lg':\n                padding = this.icon ? (this.iconPos === 'left' ? '0.75rem 1.5rem 0.75rem 3.5rem' : '0.75rem 3.5rem 0.75rem 1.5rem') : '0.75rem 1.5rem';\n                fontSize = '1rem';\n                height = '48px';\n                break;\n            case 'md':\n            default:\n                padding = this.icon ? (this.iconPos === 'left' ? '0.625rem 1.25rem 0.625rem 3rem' : '0.625rem 3rem 0.625rem 1.25rem') : '0.625rem 1.25rem';\n                fontSize = '0.875rem';\n                height = '40px';\n        }\n\n        this.renderer.setStyle(this.inputElement, 'padding', padding);\n        this.renderer.setStyle(this.inputElement, 'font-size', fontSize);\n        this.renderer.setStyle(this.inputElement, 'height', height);\n\n        this.addIconStyles();\n\n        if (this.labelElement) {\n            const labelStyles = {\n                'position': 'absolute',\n                'left': this.icon && this.iconPos === 'left' ? (this.size === 'sm' ? '2rem' : (this.size === 'lg' ? '3rem' : '2.5rem')) : (this.size === 'sm' ? '0.75rem' : (this.size === 'lg' ? '1.5rem' : '1.25rem')),\n                'top': '50%',\n                'transform': 'translateY(-50%)',\n                'color': 'var(--text-secondary)',\n                'font-size': fontSize,\n                'pointer-events': 'none',\n                'transition': 'all 0.2s ease',\n                'background-color': 'transparent',\n                'padding': '0 0.25rem',\n            };\n\n            Object.entries(labelStyles).forEach(([property, value]) => {\n                this.renderer.setStyle(this.labelElement!, property, value);\n            });\n\n            if (this.inputElement.value) {\n                this.setLabelFloating(true);\n            }\n        }\n\n        if (this.helpTextElement) {\n            const helpTextStyles = {\n                'font-size': '0.75rem',\n                'color': 'var(--text-secondary)',\n                'margin-top': '0.25rem',\n            };\n\n            Object.entries(helpTextStyles).forEach(([property, value]) => {\n                this.renderer.setStyle(this.helpTextElement!, property, value);\n            });\n        }\n\n        if (this.errorTextElement) {\n            const errorTextStyles = {\n                'font-size': '0.75rem',\n                'color': 'var(--error-color)',\n                'margin-top': '0.25rem',\n                'display': this.invalid ? 'block' : 'none',\n            };\n\n            Object.entries(errorTextStyles).forEach(([property, value]) => {\n                this.renderer.setStyle(this.errorTextElement!, property, value);\n            });\n        }\n\n        this.renderer.listen(this.inputElement, 'focus', () => {\n            if (!this.readonly && !this.disabled) {\n                this.renderer.setStyle(this.inputElement, 'border-color', 'var(--brand-primary)');\n                this.renderer.setStyle(this.inputElement, 'box-shadow', '0 0 0 3px rgba(123, 104, 238, 0.15)');\n\n                if (this.labelElement) {\n                    this.setLabelFloating(true);\n                }\n\n                this.isFocused = true;\n            }\n        });\n\n        this.renderer.listen(this.inputElement, 'blur', () => {\n            this.renderer.setStyle(this.inputElement, 'border-color', this.invalid ? 'var(--error-color)' : 'var(--border-color)');\n            this.renderer.setStyle(this.inputElement, 'box-shadow', 'none');\n\n            if (this.labelElement && !this.inputElement.value) {\n                this.setLabelFloating(false);\n            }\n\n            this.isFocused = false;\n\n            if (this.readonly) {\n                this.inputElement.value = this.initialValue;\n            }\n        });\n\n        if (this.invalid) {\n            this.renderer.setStyle(this.inputElement, 'border-color', 'var(--error-color)');\n\n            if (this.errorTextElement) {\n                this.renderer.setStyle(this.errorTextElement, 'display', 'block');\n            }\n        }\n    }\n\n    private addIconStyles(): void {\n        if (this.iconElement) {\n            const iconStyles = {\n                'position': 'absolute',\n                'color': 'var(--text-secondary)',\n                'font-size': this.size === 'sm' ? '0.875rem' : (this.size === 'lg' ? '1.25rem' : '1rem'),\n                'pointer-events': this.iconClickable ? 'auto' : 'none',\n                'cursor': this.iconClickable ? 'pointer' : 'default',\n                'transition': 'all 0.2s ease-in-out',\n                'width': '24px',\n                'height': '24px',\n                'display': 'flex',\n                'align-items': 'center',\n                'justify-content': 'center',\n                'border-radius': '50%',\n                'padding': '4px'\n            };\n\n            Object.entries(iconStyles).forEach(([property, value]) => {\n                this.renderer.setStyle(this.iconElement!, property, value);\n            });\n\n            if (this.iconPos === 'left') {\n                this.renderer.setStyle(this.iconElement, 'left', this.size === 'sm' ? '0.75rem' : (this.size === 'lg' ? '1.25rem' : '.3rem'));\n            } else {\n                this.renderer.setStyle(this.iconElement, 'right', this.size === 'sm' ? '0.75rem' : (this.size === 'lg' ? '1.25rem' : '.3rem'));\n            }\n\n\n            if (this.iconClickable) {\n                this.renderer.listen(this.iconElement, 'mouseenter', () => {\n                    this.renderer.setStyle(this.iconElement, 'color', 'var(--brand-primary)');\n                    this.renderer.setStyle(this.iconElement, 'background', 'var(--border-color)');\n                });\n\n                this.renderer.listen(this.iconElement, 'mouseleave', () => {\n                    this.renderer.setStyle(this.iconElement, 'color', 'var(--text-secondary)');\n                    this.renderer.setStyle(this.iconElement, 'background', 'transparent');\n                });\n\n                this.renderer.listen(this.iconElement, 'click', (event: Event) => {\n                    event.stopPropagation();\n                    if (!this.disabled && !this.readonly) {\n                        this.iconClick.emit();\n                    }\n                });\n            }\n        }\n    }\n\n    private setLabelFloating(isFloating: boolean): void {\n        if (!this.labelElement) return;\n\n        if (isFloating) {\n            const topValue = this.size === 'sm' ? '-0.5rem' : (this.size === 'lg' ? '-0.75rem' : '-0.625rem');\n            const fontSize = this.size === 'sm' ? '0.65rem' : (this.size === 'lg' ? '0.75rem' : '0.7rem');\n\n            this.renderer.setStyle(this.labelElement, 'top', '0');\n            this.renderer.setStyle(this.labelElement, 'transform', 'translateY(-50%)');\n            this.renderer.setStyle(this.labelElement, 'font-size', fontSize);\n            this.renderer.setStyle(this.labelElement, 'color', this.isFocused ? 'var(--brand-primary)' : 'var(--text-secondary)');\n            this.renderer.setStyle(this.labelElement, 'background-color', 'var(--bg-secondary)');\n        } else {\n            const fontSize = this.size === 'sm' ? '0.75rem' : (this.size === 'lg' ? '1rem' : '0.875rem');\n\n            this.renderer.setStyle(this.labelElement, 'top', '50%');\n            this.renderer.setStyle(this.labelElement, 'transform', 'translateY(-50%)');\n            this.renderer.setStyle(this.labelElement, 'font-size', fontSize);\n            this.renderer.setStyle(this.labelElement, 'color', 'var(--text-secondary)');\n            this.renderer.setStyle(this.labelElement, 'background-color', 'transparent');\n        }\n    }\n\n    private setupEventListeners(): void {\n        this.renderer.listen(this.inputElement, 'input', (event: Event) => {\n            const value = (event.target as HTMLInputElement).value;\n\n            if (this.readonly) {\n                this.inputElement.value = this.initialValue;\n                return;\n            }\n\n            this.valueChange.emit(value);\n        });\n\n        this.renderer.listen(this.inputElement, 'focus', (event: FocusEvent) => {\n            if (!this.readonly && !this.disabled) {\n                this.focusEvent.emit(event);\n            } else if (this.readonly) {\n                this.inputElement.blur();\n            }\n        });\n\n        this.renderer.listen(this.inputElement, 'blur', (event: FocusEvent) => {\n            this.blurEvent.emit(event);\n\n            if (this.readonly) {\n                this.inputElement.value = this.initialValue;\n            }\n        });\n\n        this.renderer.listen(this.inputElement, 'keydown', (event: KeyboardEvent) => {\n            if (this.readonly) {\n                event.preventDefault();\n                return;\n            }\n\n            this.keydown.emit(event);\n        });\n\n        this.renderer.listen(this.inputElement, 'keyup', (event: KeyboardEvent) => {\n            if (!this.readonly) {\n                this.keyup.emit(event);\n            }\n        });\n\n        this.renderer.listen(this.inputElement, 'paste', (event: ClipboardEvent) => {\n            if (this.readonly) {\n                event.preventDefault();\n            }\n        });\n\n        this.renderer.listen(this.inputElement, 'cut', (event: ClipboardEvent) => {\n            if (this.readonly) {\n                event.preventDefault();\n            }\n        });\n    }\n\n    @HostListener('keypress', ['$event'])\n    onKeyPress(event: KeyboardEvent): boolean {\n        if (this.readonly) {\n            event.preventDefault();\n            return false;\n        }\n\n        if (this.keyFilter) {\n            return this.validateKeyFilter(event);\n        }\n\n        if (this.blockChars) {\n            return !this.blockChars.includes(event.key);\n        }\n\n        return true;\n    }\n\n    private validateKeyFilter(event: KeyboardEvent): boolean {\n        const char = event.key;\n\n\n        if (event.ctrlKey || event.altKey || event.metaKey ||\n            char === 'Backspace' || char === 'Delete' ||\n            char === 'ArrowLeft' || char === 'ArrowRight' ||\n            char === 'Tab' || char === 'Enter') {\n            return true;\n        }\n\n        if (this.keyFilter === 'blockSpace' && char === ' ') {\n            return false;\n        }\n\n        if (this.keyFilter === 'int' ||\n            this.keyFilter === 'num' ||\n            this.keyFilter === 'alpha' ||\n            this.keyFilter === 'alphanum' ||\n            this.keyFilter === 'hex' ||\n            this.keyFilter === 'email' ||\n            this.keyFilter === 'money') {\n\n            const regex = this.REGEX[this.keyFilter];\n            const newValue = this.inputElement.value + char;\n\n            if (this.keyFilter === 'money') {\n                if (char === '.' && this.inputElement.value.includes('.')) {\n                    return false;\n                }\n\n                const parts = newValue.split('.');\n                if (parts.length > 1 && parts[1].length > 2) {\n                    return false;\n                }\n            }\n\n            return regex.test(newValue);\n        }\n\n        if (this.keyFilter === 'custom' && this.customRegex) {\n            const regex = new RegExp(this.customRegex);\n            return regex.test(char);\n        }\n\n        return true;\n    }\n\n    public focus(): void {\n        if (!this.readonly && !this.disabled) {\n            this.inputElement.focus();\n        }\n    }\n\n    public blur(): void {\n        this.inputElement.blur();\n    }\n\n    public clear(): void {\n        if (!this.readonly) {\n            this.inputElement.value = '';\n            this.valueChange.emit('');\n\n            if (this.labelElement && !this.isFocused) {\n                this.setLabelFloating(false);\n            }\n        }\n    }\n\n    public setValue(value: string): void {\n        this.inputElement.value = value;\n        this.initialValue = value;\n        this.valueChange.emit(value);\n\n        if (this.labelElement) {\n            this.setLabelFloating(!!value);\n        }\n    }\n\n    public getValue(): string {\n        return this.inputElement.value;\n    }\n\n    public setInvalid(invalid: boolean, errorText?: string): void {\n        this.invalid = invalid;\n\n        if (invalid) {\n            this.renderer.addClass(this.inputElement, 'n-input-invalid');\n            this.renderer.setStyle(this.inputElement, 'border-color', 'var(--error-color)');\n        } else {\n            this.renderer.removeClass(this.inputElement, 'n-input-invalid');\n            this.renderer.setStyle(this.inputElement, 'border-color', this.isFocused ? 'var(--brand-primary)' : 'var(--border-color)');\n        }\n\n        if (errorText && this.errorTextElement) {\n            while (this.errorTextElement.firstChild) {\n                this.renderer.removeChild(this.errorTextElement, this.errorTextElement.firstChild);\n            }\n\n            const newErrorText = this.renderer.createText(errorText);\n            this.renderer.appendChild(this.errorTextElement, newErrorText);\n            this.renderer.setStyle(this.errorTextElement, 'display', invalid ? 'block' : 'none');\n        } else if (this.errorTextElement) {\n            this.renderer.setStyle(this.errorTextElement, 'display', invalid ? 'block' : 'none');\n        }\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InputTextDirective } from './input-text.directive';\n\n@NgModule({\n    declarations: [],\n    imports: [CommonModule, InputTextDirective],\n    exports: [InputTextDirective]\n})\nexport class InputTextModule { }","import { Directive, ElementRef, HostListener, Input, OnInit, Renderer2 } from '@angular/core';\n\n@Directive({\n    selector: '[nDropdown]',\n    standalone: true,\n    exportAs: 'nDropdown'\n})\nexport class DropdownDirective implements OnInit {\n    @Input() appendTo: 'body' | 'self' = 'self';\n    @Input() autoClose: boolean = true;\n\n    private isOpen: boolean = false;\n    private dropdownMenu: HTMLElement | null = null;\n    private clickListener: (() => void) | null = null;\n\n    constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n    ngOnInit(): void {\n        this.dropdownMenu = this.el.nativeElement.querySelector('.n-dropdown-menu');\n\n        if (!this.dropdownMenu) {\n            console.warn('No dropdown menu found with class .n-dropdown-menu');\n            return;\n        }\n\n        this.renderer.setStyle(this.dropdownMenu, 'display', 'none');\n\n        if (this.appendTo === 'body') {\n            this.renderer.removeChild(this.el.nativeElement, this.dropdownMenu);\n            this.renderer.appendChild(document.body, this.dropdownMenu);\n        }\n    }\n\n    @HostListener('click', ['$event'])\n    onClick(event: MouseEvent): void {\n        event.stopPropagation();\n        this.toggle();\n    }\n\n    toggle(): void {\n        this.isOpen ? this.close() : this.open();\n    }\n\n    open(): void {\n        if (this.isOpen || !this.dropdownMenu) return;\n\n        this.isOpen = true;\n        this.renderer.setStyle(this.dropdownMenu, 'display', 'block');\n\n        this.updatePosition();\n\n        if (this.autoClose) {\n            this.clickListener = this.renderer.listen('document', 'click', () => {\n                this.close();\n            });\n        }\n    }\n\n    close(): void {\n        if (!this.isOpen || !this.dropdownMenu) return;\n\n        this.isOpen = false;\n        this.renderer.setStyle(this.dropdownMenu, 'display', 'none');\n\n        if (this.clickListener) {\n            this.clickListener();\n            this.clickListener = null;\n        }\n    }\n\n    private updatePosition(): void {\n        if (!this.dropdownMenu) return;\n\n        const triggerRect = this.el.nativeElement.getBoundingClientRect();\n\n        if (this.appendTo === 'body') {\n            const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;\n            const scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;\n\n            this.renderer.setStyle(this.dropdownMenu, 'position', 'absolute');\n            this.renderer.setStyle(this.dropdownMenu, 'top', `${triggerRect.bottom + scrollTop}px`);\n            this.renderer.setStyle(this.dropdownMenu, 'left', `${triggerRect.left + scrollLeft}px`);\n            this.renderer.setStyle(this.dropdownMenu, 'width', `${triggerRect.width}px`);\n            this.renderer.setStyle(this.dropdownMenu, 'z-index', '1000');\n        } else {\n            this.renderer.setStyle(this.dropdownMenu, 'position', 'absolute');\n            this.renderer.setStyle(this.dropdownMenu, 'top', '100%');\n            this.renderer.setStyle(this.dropdownMenu, 'left', '0');\n            this.renderer.setStyle(this.dropdownMenu, 'width', '100%');\n            this.renderer.setStyle(this.dropdownMenu, 'z-index', '1');\n        }\n\n        const dropdownRect = this.dropdownMenu.getBoundingClientRect();\n        const viewportHeight = window.innerHeight;\n\n        if (dropdownRect.bottom > viewportHeight) {\n            if (this.appendTo === 'body') {\n                const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;\n                this.renderer.setStyle(this.dropdownMenu, 'top', `${triggerRect.top + scrollTop - dropdownRect.height}px`);\n            } else {\n                this.renderer.setStyle(this.dropdownMenu, 'top', 'auto');\n                this.renderer.setStyle(this.dropdownMenu, 'bottom', '100%');\n            }\n        }\n    }\n}","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DropdownManagerService {\n    private openDropdownId: string | null = null;\n    private dropdownCloseSubject = new Subject<string>();\n\n    public dropdownClose$ = this.dropdownCloseSubject.asObservable();\n\n    registerOpenDropdown(id: string): void {\n        if (this.openDropdownId !== id) {\n            if (this.openDropdownId) {\n                this.dropdownCloseSubject.next(this.openDropdownId);\n            }\n            this.openDropdownId = id;\n        }\n    }\n\n    closeDropdown(id: string): void {\n        if (this.openDropdownId === id) {\n            this.openDropdownId = null;\n        }\n    }\n\n    closeAll(): void {\n        if (this.openDropdownId) {\n            this.dropdownCloseSubject.next(this.openDropdownId);\n            this.openDropdownId = null;\n        }\n    }\n}\n","import {\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostListener,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  Renderer2,\n  TemplateRef,\n  ViewChild,\n  inject,\n  OnChanges,\n  SimpleChanges\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DropdownManagerService } from './drop-down.service';\nimport { Subject, Subscription, takeUntil } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\nimport { trigger, state, style, animate, transition } from '@angular/animations';\nimport { AnimationEvent } from '@angular/animations';\n\n@Component({\n  selector: 'n-dropdown',\n  standalone: true,\n  imports: [CommonModule],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DropdownComponent),\n      multi: true\n    }\n  ],\n  templateUrl: './drop-down.component.html',\n  styleUrl: './drop-down.component.scss',\n  animations: [\n    trigger('dropdownAnimation', [\n      state('void', style({\n        opacity: 0,\n        transform: 'translateY(-10px)'\n      })),\n      state('visible', style({\n        opacity: 1,\n        transform: 'translateY(0)'\n      })),\n      transition('void => visible', [\n        style({ opacity: 0, transform: 'translateY(-10px)' }),\n        animate('200ms cubic-bezier(0.4, 0.0, 0.2, 1)')\n      ]),\n      transition('visible => void', [\n        animate('200ms cubic-bezier(0.4, 0.0, 0.2, 1)',\n          style({ opacity: 0, transform: 'translateY(-10px)' }))\n      ])\n    ]),\n    trigger('ripple', [\n      transition(':enter', [\n        style({ transform: 'scale(0)', opacity: 0.5 }),\n        animate('600ms cubic-bezier(0.4, 0, 0.2, 1)',\n          style({ transform: 'scale(4)', opacity: 0 }))\n      ])\n    ])\n  ]\n})\nexport class DropdownComponent implements OnInit, OnDestroy, OnChanges, ControlValueAccessor {\n  @Input() options: any[] = [];\n  @Input() optionLabel: string = 'label';\n  @Input() optionValue: string = '';\n  @Input() optionDisabled: string = 'disabled';\n  @Input() placeholder: string = 'Select an option';\n  @Input() disabled: boolean = false;\n  @Input() readonly: boolean = false;\n  @Input() size: 'sm' | 'md' | 'lg' = 'md';\n  @Input() icon?: string;\n  @Input() iconPos: 'left' | 'right' = 'left';\n  @Input() multiSelect: boolean = false;\n  @Input() floatLabel: boolean = true;\n  @Input() invalid: boolean = false;\n  @Input() helpText?: string;\n  @Input() errorText?: string;\n  @Input() filterable: boolean = false;\n  @Input() filterPlaceholder: string = 'Search...';\n  @Input() emptyMessage: string = 'No results found';\n  @Input() appendTo: 'body' | 'self' = 'self';\n  @Input() maxSelectedLabels: number = 3;\n  @Input() showClear: boolean = false;\n  @Input() showToggleAll: boolean = false;\n  @Input() autoClose: boolean = true;\n  @Input() animationDuration: number = 250;\n\n  @Output() onChange = new EventEmitter<any>();\n  @Output() onFocus = new EventEmitter<any>();\n  @Output() onBlur = new EventEmitter<any>();\n  @Output() onShow = new EventEmitter<any>();\n  @Output() onHide = new EventEmitter<any>();\n  @Output() onFilter = new EventEmitter<string>();\n  @Output() onClear = new EventEmitter<any>();\n\n  @ViewChild('dropdownTrigger') dropdownTrigger!: ElementRef;\n  @ViewChild('dropdownPanel') dropdownPanel!: ElementRef;\n  @ViewChild('filterInput') filterInput!: ElementRef;\n\n  @ContentChild('itemTemplate') itemTemplate!: TemplateRef<any>;\n  @ContentChild('chipTemplate') chipTemplate!: TemplateRef<any>;\n  @ContentChild('selectedItemTemplate') selectedItemTemplate!: TemplateRef<any>;\n  @ContentChild('headerTemplate') headerTemplate!: TemplateRef<any>;\n  @ContentChild('footerTemplate') footerTemplate!: TemplateRef<any>;\n  @ContentChild('emptyTemplate') emptyTemplate!: TemplateRef<any>;\n\n  isOpen: boolean = false;\n  selectedItems: any[] = [];\n  filteredItems: any[] = [];\n  filterValue: string = '';\n  focused: boolean = false;\n  uniqueId: string = uuidv4();\n  hasValue: boolean = false;\n  isAnimating: boolean = false;\n\n  private dropdownManager = inject(DropdownManagerService);\n  private destroy$ = new Subject<void>();\n  private subscription: Subscription | null = null;\n\n  private onChangeCallback: any = () => { };\n  private onTouched: any = () => { };\n\n  constructor(\n    private el: ElementRef,\n    private renderer: Renderer2,\n    private cd: ChangeDetectorRef\n  ) { }\n\n  ngOnInit() {\n    this.filteredItems = [...this.options];\n    this.initStyles();\n\n    this.subscription = this.dropdownManager.dropdownClose$\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(id => {\n        if (id === this.uniqueId && this.isOpen) {\n          this.hideDropdown();\n        }\n      });\n\n    this.hasValue = this.selectedItems.length > 0;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['disabled'] && changes['disabled'].currentValue === true && this.isOpen) {\n      this.hideDropdown();\n    }\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n\n    if (this.subscription) {\n      this.subscription.unsubscribe();\n    }\n\n    if (this.documentClickListener) {\n      this.documentClickListener();\n      this.documentClickListener = null;\n    }\n  }\n\n  writeValue(value: any): void {\n    if (value === null || value === undefined) {\n      this.selectedItems = [];\n    } else if (this.multiSelect && Array.isArray(value)) {\n      this.selectedItems = value;\n    } else if (!this.multiSelect) {\n      this.selectedItems = value ? [value] : [];\n    }\n    this.hasValue = this.selectedItems.length > 0;\n    this.cd.markForCheck();\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChangeCallback = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n\n    if (isDisabled && this.isOpen) {\n      this.hideDropdown();\n    }\n\n    this.cd.markForCheck();\n  }\n\n  toggleDropdown(event: MouseEvent) {\n    if (this.disabled || this.readonly || this.isAnimating) return;\n\n    event.preventDefault();\n    event.stopPropagation();\n\n    if (this.isOpen) {\n      this.hideDropdown();\n    } else {\n      this.showDropdown();\n    }\n  }\n\n  showDropdown() {\n    if (this.disabled || this.readonly || this.isOpen || this.isAnimating) return;\n\n    this.dropdownManager.registerOpenDropdown(this.uniqueId);\n    this.isOpen = true;\n    this.onShow.emit();\n\n    requestAnimationFrame(() => {\n      this.positionPanel();\n    });\n\n    if (this.autoClose) {\n      this.documentClickListener = this.renderer.listen('document', 'click', this.onDocumentClick);\n    }\n\n    if (this.filterable && this.filterInput) {\n      setTimeout(() => this.filterInput.nativeElement.focus());\n    }\n  }\n\n\n  private documentClickListener: Function | null = null;\n\n  hideDropdown() {\n    if (!this.isOpen || this.isAnimating) return;\n\n    this.isOpen = false;\n    if (this.documentClickListener) {\n      this.documentClickListener();\n      this.documentClickListener = null;\n    }\n\n    if (this.filterable) {\n      this.filterValue = '';\n      this.filteredItems = [...this.options];\n    }\n\n    this.onHide.emit();\n    this.onTouched();\n    this.dropdownManager.closeDropdown(this.uniqueId);\n\n    this.cd.markForCheck();\n  }\n\n  onDocumentClick = (event: MouseEvent) => {\n    if (!this.isOpen) return;\n\n    const target = event.target as HTMLElement;\n    const dropdownEl = this.el.nativeElement;\n    const dropdownPanel = this.dropdownPanel?.nativeElement;\n\n    if (!dropdownEl.contains(target) && !dropdownPanel?.contains(target)) {\n      event.preventDefault();\n      event.stopPropagation();\n      this.hideDropdown();\n    }\n  }\n\n  positionPanel() {\n    if (!this.dropdownPanel || !this.dropdownTrigger) return;\n\n    const panel = this.dropdownPanel.nativeElement;\n    const trigger = this.dropdownTrigger.nativeElement;\n    const triggerRect = trigger.getBoundingClientRect();\n\n    this.renderer.setStyle(panel, 'width', `${triggerRect.width}px`);\n\n    const viewportHeight = window.innerHeight;\n    const spaceBelow = viewportHeight - triggerRect.bottom;\n    const panelHeight = panel.offsetHeight;\n\n    if (spaceBelow < panelHeight && triggerRect.top > panelHeight) {\n      this.renderer.setStyle(panel, 'top', 'auto');\n      this.renderer.setStyle(panel, 'bottom', '100%');\n      this.renderer.setStyle(panel, 'margin-bottom', '5px');\n      this.renderer.addClass(panel, 'n-dropdown-panel-above');\n\n      this.renderer.setStyle(panel, 'transform', 'translateY(10px)');\n    } else {\n      this.renderer.setStyle(panel, 'top', '100%');\n      this.renderer.setStyle(panel, 'bottom', 'auto');\n      this.renderer.setStyle(panel, 'margin-top', '5px');\n      this.renderer.removeClass(panel, 'n-dropdown-panel-above');\n\n      this.renderer.setStyle(panel, 'transform', 'translateY(-10px)');\n    }\n  }\n\n  onItemClick(event: MouseEvent, item: any) {\n    event.stopPropagation();\n\n    if (this.isItemDisabled(item)) return;\n\n    if (this.multiSelect) {\n      this.toggleItemSelection(item);\n\n      if (this.filterable && this.filterInput) {\n        this.filterInput.nativeElement.focus();\n      }\n    } else {\n      this.selectSingleItem(item);\n      this.hideDropdown();\n    }\n  }\n\n  toggleItemSelection(item: any) {\n    const index = this.findSelectedItemIndex(item);\n\n    if (index !== -1) {\n      this.selectedItems.splice(index, 1);\n    } else {\n      this.selectedItems.push(item);\n    }\n\n    this.hasValue = this.selectedItems.length > 0;\n    this.emitChangeEvent();\n  }\n\n  selectSingleItem(item: any) {\n    this.selectedItems = [item];\n    this.hasValue = true;\n    this.emitChangeEvent();\n  }\n\n  removeItem(event: MouseEvent, item: any) {\n    event.stopPropagation();\n\n    const index = this.findSelectedItemIndex(item);\n    if (index !== -1) {\n      this.selectedItems.splice(index, 1);\n      this.hasValue = this.selectedItems.length > 0;\n      this.emitChangeEvent();\n    }\n  }\n\n  findSelectedItemIndex(item: any): number {\n    if (this.optionValue) {\n      return this.selectedItems.findIndex(\n        selectedItem => selectedItem[this.optionValue] === item[this.optionValue]\n      );\n    }\n\n    return this.selectedItems.indexOf(item);\n  }\n\n  isSelected(item: any): boolean {\n    return this.findSelectedItemIndex(item) !== -1;\n  }\n\n  isItemDisabled(item: any): boolean {\n    if (this.optionDisabled) {\n      return item[this.optionDisabled] === true;\n    }\n    return false;\n  }\n\n  getItemLabel(item: any): string {\n    if (this.optionLabel) {\n      return item[this.optionLabel] || '';\n    }\n    return item.toString();\n  }\n\n  onFilterChange(event: Event) {\n    const value = (event.target as HTMLInputElement).value;\n    this.filterValue = value;\n\n    if (value.trim() === '') {\n      this.filteredItems = [...this.options];\n    } else {\n      this.filteredItems = this.options.filter(item => {\n        const label = this.getItemLabel(item).toLowerCase();\n        return label.includes(value.toLowerCase());\n      });\n    }\n\n    this.onFilter.emit(value);\n  }\n\n  clear(event: MouseEvent) {\n    event.stopPropagation();\n\n    this.selectedItems = [];\n    this.hasValue = false;\n    this.emitChangeEvent();\n    this.onClear.emit();\n  }\n\n  toggleAll() {\n    if (this.allSelected()) {\n      this.selectedItems = [];\n      this.hasValue = false;\n    } else {\n      this.selectedItems = [...this.options.filter(item => !this.isItemDisabled(item))];\n      this.hasValue = this.selectedItems.length > 0;\n    }\n\n    this.emitChangeEvent();\n  }\n\n  allSelected(): boolean {\n    const selectableItems = this.options.filter(item => !this.isItemDisabled(item));\n    return selectableItems.length > 0 && selectableItems.length === this.selectedItems.length;\n  }\n\n  emitChangeEvent() {\n    const value = this.multiSelect ? this.selectedItems : (this.selectedItems[0] || null);\n    this.onChange.emit(value);\n    this.onChangeCallback(value);\n  }\n\n  @HostListener('keydown', ['$event'])\n  onKeyDown(event: KeyboardEvent) {\n    if (this.disabled || this.readonly) return;\n\n    switch (event.key) {\n      case 'Enter':\n      case ' ':\n        if (!this.isOpen) {\n          this.showDropdown();\n          event.preventDefault();\n        }\n        break;\n      case 'Escape':\n        if (this.isOpen) {\n          this.hideDropdown();\n          event.preventDefault();\n        }\n        break;\n      case 'Tab':\n        if (this.isOpen) {\n          this.hideDropdown();\n        }\n        break;\n      case 'ArrowDown':\n        if (!this.isOpen) {\n          this.showDropdown();\n          event.preventDefault();\n        }\n        break;\n    }\n  }\n\n  initStyles() {\n    if (!document.getElementById('n-dropdown-styles')) {\n      const style = document.createElement('style');\n      style.id = 'n-dropdown-styles';\n      style.textContent = `\n        .n-dropdown-wrapper {\n            position: relative !important;\n            display: inline-flex !important;\n            align-items: center !important;\n            width: 100% !important;\n            font-family: 'Inter', sans-serif !important;\n            transition: all 0.2s ease !important;\n        }\n  \n        .n-dropdown-panel {\n          position: absolute !important;\n          left: 0 !important;\n          background-color: var(--bg-secondary) !important;\n          border: 1px solid var(--border-color) !important;\n          border-radius: 6px !important;\n          box-shadow: var(--shadow-md) !important;\n          z-index: 1000 !important;\n          max-height: 250px !important;\n          overflow: hidden !important;\n          display: none !important;\n          flex-direction: column !important;\n          will-change: transform, opacity !important;\n        }\n  \n        .n-dropdown-trigger {\n            display: flex !important;\n            align-items: center !important;\n            width: 100% !important;\n            background-color: var(--bg-secondary) !important;\n            color: var(--text-primary) !important;\n            border: 1px solid var(--border-color) !important;\n            border-radius: 6px !important;\n            cursor: pointer !important;\n            transition: all 0.2s ease !important;\n            position: relative !important;\n            overflow: hidden !important;\n            box-sizing: border-box !important;\n        }\n  \n        .n-dropdown-trigger:hover {\n            border-color: var(--brand-primary) !important;\n        }\n  \n        .n-dropdown-trigger-open {\n            border-color: var(--brand-primary) !important;\n            box-shadow: 0 0 0 3px rgba(123, 104, 238, 0.15) !important;\n        }\n  \n        .n-dropdown-sm {\n            padding: 0.5rem 0.75rem !important;\n            font-size: 0.75rem !important;\n            height: 32px !important;\n        }\n  \n        .n-dropdown-md {\n            padding: 0.625rem 1.25rem !important;\n            font-size: 0.875rem !important;\n            height: 40px !important;\n        }\n  \n        .n-dropdown-lg {\n            padding: 0.75rem 1.5rem !important;\n            font-size: 1rem !important;\n            height: 48px !important;\n        }\n  \n        .n-dropdown-has-icon-left {\n            padding-left: 2.5rem !important;\n        }\n  \n        .n-dropdown-has-icon-right {\n            padding-right: 2.5rem !important;\n        }\n  \n        .n-dropdown-icon {\n            position: absolute !important;\n            color: var(--text-secondary) !important;\n            pointer-events: none !important;\n        }\n  \n        .n-dropdown-icon-left {\n            left: 1rem !important;\n        }\n  \n        .n-dropdown-icon-right {\n            right: 1rem !important;\n        }\n  \n        .n-dropdown-arrow {\n            position: absolute !important;\n            right: 1rem !important;\n            width: 0 !important;\n            height: 0 !important;\n            border-left: 5px solid transparent !important;\n            border-right: 5px solid transparent !important;\n            border-top: 5px solid var(--text-secondary) !important;\n            transition: transform 0.2s ease !important;\n        }\n  \n        .n-dropdown-arrow-up {\n            transform: rotate(180deg) !important;\n        }\n  \n        .n-dropdown-value-container {\n            flex: 1 !important;\n            overflow: hidden !important;\n            text-overflow: ellipsis !important;\n            white-space: nowrap !important;\n        }\n  \n        .n-dropdown-placeholder {\n            color: var(--text-secondary) !important;\n            opacity: 0.8 !important;\n        }\n  \n        .n-dropdown-selected-item {\n            color: var(--text-primary) !important;\n        }\n  \n        .n-dropdown-selected-items {\n            display: flex !important;\n            flex-wrap: wrap !important;\n            gap: 4px !important;\n        }\n  \n        .n-dropdown-chip {\n            display: inline-flex !important;\n            align-items: center !important;\n            background-color: var(--bg-tertiary) !important;\n            border-radius: 4px !important;\n            padding: 2px 6px !important;\n            font-size: 0.75rem !important;\n            max-width: 100% !important;\n            overflow: hidden !important;\n            text-overflow: ellipsis !important;\n            white-space: nowrap !important;\n        }\n  \n        .n-dropdown-chip-remove {\n            margin-left: 4px !important;\n            cursor: pointer !important;\n            font-size: 1rem !important;\n            line-height: 0.75 !important;\n        }\n  \n        .n-dropdown-panel-open {\n            display: flex !important;\n        }\n  \n        .n-dropdown-filter-container {\n            padding: 0.75rem !important;\n            border-bottom: 1px solid var(--border-color) !important;\n        }\n  \n        .n-dropdown-filter {\n            padding: 0.625rem 0.875rem !important;\n            border: 1px solid var(--border-color) !important;\n            border-radius: 4px !important;\n            background-color: var(--bg-tertiary) !important;\n            color: var(--text-primary) !important;\n            font-size: 0.875rem !important;\n            outline: none !important;\n            transition: all 0.2s ease !important;\n            font-family: 'Inter', sans-serif !important;\n        }\n  \n        .n-dropdown-filter:focus {\n            border-color: var(--brand-primary) !important;\n            box-shadow: 0 0 0 2px rgba(123, 104, 238, 0.1) !important;\n        }\n  \n        .n-dropdown-filter::placeholder {\n            color: var(--text-secondary) !important;\n            opacity: 0.7 !important;\n        }\n  \n        .n-dropdown-items-wrapper {\n            overflow-y: auto !important;\n            max-height: 200px !important;\n            scrollbar-width: thin !important;\n            scrollbar-color: var(--border-color) transparent !important;\n        }\n  \n        .n-dropdown-items-wrapper::-webkit-scrollbar {\n            width: 6px !important;\n        }\n  \n        .n-dropdown-items-wrapper::-webkit-scrollbar-track {\n            background: transparent !important;\n        }\n  \n        .n-dropdown-items-wrapper::-webkit-scrollbar-thumb {\n            background-color: var(--border-color) !important;\n            border-radius: 6px !important;\n        }\n  \n        .n-dropdown-items-empty {\n            display: flex !important;\n            align-items: center !important;\n            justify-content: center !important;\n            padding: 1rem !important;\n        }\n  \n        .n-dropdown-empty-message {\n            color: var(--text-secondary) !important;\n            font-style: italic !important;\n            text-align: center !important;\n            padding: 1rem !important;\n        }\n  \n        .n-dropdown-item {\n            display: flex !important;\n            align-items: center !important;\n            padding: 0.625rem 1rem !important;\n            cursor: pointer !important;\n            transition: background-color 0.15s ease !important, color 0.15s ease !important;\n            position: relative !important;\n            overflow: hidden !important;\n        }\n  \n        .n-dropdown-item:hover {\n            background-color: var(--bg-tertiary) !important;\n        }\n  \n        .n-dropdown-item-selected {\n            background-color: rgba(123, 104, 238, 0.1) !important;\n            color: var(--brand-primary) !important;\n            font-weight: 500 !important;\n        }\n  \n        .n-dropdown-item-selected:hover {\n            background-color: rgba(123, 104, 238, 0.15) !important;\n        }\n  \n        .n-dropdown-wrapper-disabled {\n            opacity: 0.6 !important;\n            pointer-events: none !important;\n        }\n  \n        .n-dropdown-item-disabled {\n            opacity: 0.5 !important;\n            cursor: not-allowed !important;\n            color: var(--text-secondary) !important;\n            background-color: transparent !important;\n        }\n  \n        .n-dropdown-item-disabled:hover {\n            background-color: transparent !important;\n        }\n  \n        .n-dropdown-checkbox {\n            display: flex !important;\n            align-items: center !important;\n            margin-right: 0.75rem !important;\n        }\n  \n        .n-dropdown-checkbox-box {\n            width: 16px !important;\n            height: 16px !important;\n            border: 1px solid var(--border-color) !important;\n            border-radius: 3px !important;\n            display: flex !important;\n            align-items: center !important;\n            justify-content: center !important;\n            transition: all 0.2s ease !important;\n        }\n  \n        .n-dropdown-checkbox-checked {\n            background-color: var(--brand-primary) !important;\n            border-color: var(--brand-primary) !important;\n        }\n  \n        .n-dropdown-checkbox-icon {\n            color: white !important;\n            font-size: 0.75rem !important;\n            line-height: 1 !important;\n        }\n  \n        .n-dropdown-help-text {\n            font-size: 0.75rem !important;\n            color: var(--text-secondary) !important;\n            margin-top: 0.25rem !important;\n        }\n  \n        .n-dropdown-error-text {\n            font-size: 0.75rem !important;\n            color: var(--error-color) !important;\n            margin-top: 0.25rem !important;\n        }\n  \n        .n-dropdown-invalid {\n            border-color: var(--error-color) !important;\n        }\n  \n        .n-dropdown-wrapper-disabled .n-dropdown-trigger {\n            background-color: var(--bg-tertiary) !important;\n            border-color: var(--border-color) !important;\n            cursor: not-allowed !important;\n        }\n  \n        .n-dropdown-wrapper-readonly .n-dropdown-trigger {\n            background-color: var(--bg-tertiary) !important;\n            opacity: 0.9 !important;\n            cursor: default !important;\n        }\n  \n        .n-dropdown-ripple {\n            position: absolute !important;\n            border-radius: 50% !important;\n            background-color: rgba(255, 255, 255, 0.3) !important;\n            transform: scale(0) !important;\n            animation: n-dropdown-ripple-animation 0.6s linear !important;\n            pointer-events: none !important;\n        }\n  \n        @keyframes n-dropdown-ripple-animation {\n            to {\n                transform: scale(4) !important;\n                opacity: 0 !important;\n            }\n        }\n      `;\n      document.head.appendChild(style);\n    }\n  }\n\n\n  addRippleEffect(event: MouseEvent, element: HTMLElement | null) {\n    if (!element || this.isItemDisabled(element)) return;\n\n    const ripple = this.renderer.createElement('span');\n    this.renderer.addClass(ripple, 'n-dropdown-ripple');\n\n    const rect = element.getBoundingClientRect();\n    const size = Math.max(rect.width, rect.height);\n    const x = event.clientX - rect.left - (size / 2);\n    const y = event.clientY - rect.top - (size / 2);\n\n    this.renderer.setStyle(ripple, 'width', `${size}px`);\n    this.renderer.setStyle(ripple, 'height', `${size}px`);\n    this.renderer.setStyle(ripple, 'left', `${x}px`);\n    this.renderer.setStyle(ripple, 'top', `${y}px`);\n\n    this.renderer.appendChild(element, ripple);\n\n    setTimeout(() => {\n      if (element.contains(ripple)) {\n        this.renderer.removeChild(element, ripple);\n      }\n    }, 600);\n  }\n\n  onAnimationStart(event: AnimationEvent) {\n    this.isAnimating = true;\n    this.cd.detectChanges();\n  }\n\n  onAnimationDone(event: AnimationEvent) {\n    this.isAnimating = false;\n    this.cd.detectChanges();\n  }\n}\n","<div class=\"n-dropdown-wrapper\" [class.n-dropdown-wrapper-disabled]=\"disabled\"\n  [class.n-dropdown-wrapper-readonly]=\"readonly\">\n\n  <div #dropdownTrigger class=\"n-dropdown-trigger\" [class.n-dropdown-trigger-open]=\"isOpen\"\n    [class.n-dropdown-has-icon-left]=\"icon && iconPos === 'left'\"\n    [class.n-dropdown-has-icon-right]=\"icon && iconPos === 'right'\" [class.n-dropdown-invalid]=\"invalid\"\n    [class.n-dropdown-readonly]=\"readonly\" [class.n-dropdown-sm]=\"size === 'sm'\" [class.n-dropdown-md]=\"size === 'md'\"\n    [class.n-dropdown-lg]=\"size === 'lg'\" [attr.aria-disabled]=\"disabled\" [attr.aria-expanded]=\"isOpen\"\n    [attr.aria-controls]=\"'dropdown-panel-' + uniqueId\" role=\"combobox\" (click)=\"toggleDropdown($event)\">\n\n    <i *ngIf=\"icon && iconPos === 'left'\" [class]=\"icon + ' n-dropdown-icon n-dropdown-icon-left'\"></i>\n\n    <div class=\"n-dropdown-value-container\">\n      <span *ngIf=\"!selectedItems.length\" class=\"n-dropdown-placeholder\">{{placeholder}}</span>\n      <div *ngIf=\"selectedItems.length\" class=\"n-dropdown-selected-items\">\n        <div *ngFor=\"let item of selectedItems | slice:0:maxSelectedLabels\" class=\"n-dropdown-chip\">\n          {{getItemLabel(item)}}\n          <span *ngIf=\"showClear\" class=\"n-dropdown-chip-remove\" (click)=\"removeItem($event, item)\">×</span>\n        </div>\n        <div *ngIf=\"selectedItems.length > maxSelectedLabels\" class=\"n-dropdown-chip\">\n          +{{selectedItems.length - maxSelectedLabels}} more\n        </div>\n      </div>\n    </div>\n\n    <i class=\"n-dropdown-arrow\" [class.n-dropdown-arrow-up]=\"isOpen\"></i>\n  </div>\n\n  <div #dropdownPanel [id]=\"'dropdown-panel-' + uniqueId\" class=\"n-dropdown-panel\"\n    [@dropdownAnimation]=\"isOpen ? 'visible' : 'void'\" (@dropdownAnimation.start)=\"onAnimationStart($event)\"\n    (@dropdownAnimation.done)=\"onAnimationDone($event)\" [style.display]=\"isOpen || isAnimating ? 'flex' : 'none'\"\n    [class.n-dropdown-panel-open]=\"isOpen || isAnimating\" role=\"listbox\" [attr.aria-multiselectable]=\"multiSelect\">\n\n    <div *ngIf=\"filterable\" class=\"n-dropdown-filter-container\">\n      <input #filterInput type=\"text\" class=\"n-dropdown-filter\" [placeholder]=\"filterPlaceholder\"\n        (input)=\"onFilterChange($event)\" (click)=\"$event.stopPropagation()\" role=\"searchbox\"\n        [attr.aria-label]=\"filterPlaceholder\">\n    </div>\n\n    <div class=\"n-dropdown-items-wrapper\" [class.n-dropdown-items-empty]=\"filteredItems.length === 0\">\n      <div *ngIf=\"filteredItems.length === 0\" class=\"n-dropdown-empty-message\">\n        {{emptyMessage}}\n      </div>\n\n      <div *ngFor=\"let item of filteredItems; let i = index\" #dropdownItem class=\"n-dropdown-item\"\n        [class.n-dropdown-item-selected]=\"isSelected(item)\" [class.n-dropdown-item-disabled]=\"isItemDisabled(item)\"\n        [attr.aria-selected]=\"isSelected(item)\" [attr.aria-disabled]=\"isItemDisabled(item)\" role=\"option\"\n        (click)=\"onItemClick($event, item)\" (mousedown)=\"addRippleEffect($event, dropdownItem)\">\n\n        <div *ngIf=\"multiSelect\" class=\"n-dropdown-checkbox\">\n          <div class=\"n-dropdown-checkbox-box\" [class.n-dropdown-checkbox-checked]=\"isSelected(item)\">\n            <i *ngIf=\"isSelected(item)\" class=\"n-dropdown-checkbox-icon\">✓</i>\n          </div>\n        </div>\n\n        <span class=\"n-dropdown-item-label\">{{getItemLabel(item)}}</span>\n\n        <span *ngIf=\"isSelected(item) && !multiSelect\" class=\"n-dropdown-item-check\">\n          <i class=\"pi pi-check\"></i>\n        </span>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div *ngIf=\"helpText\" class=\"n-dropdown-help-text\">{{ helpText }}</div>\n<div *ngIf=\"errorText && invalid\" class=\"n-dropdown-error-text\">{{ errorText }}</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DropdownDirective } from './drop-down.directive';\nimport { DropdownComponent } from './drop-down.component';\nimport { DropdownManagerService } from './drop-down.service';\n\n@NgModule({\n    imports: [CommonModule, DropdownComponent, DropdownDirective],\n    exports: [DropdownDirective, DropdownComponent],\n    providers: [DropdownManagerService]\n})\nexport class DropdownModule { }","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\n\n@Directive({\n    selector: '[nSkeleton]',\n    standalone: true\n})\nexport class SkeletonDirective implements OnInit {\n    @Input() width = '100%';\n    @Input() height = '1rem';\n    @Input() borderRadius = '0.375rem';\n    @Input() animation = true;\n\n    constructor(\n        private el: ElementRef,\n        private renderer: Renderer2\n    ) { }\n\n    ngOnInit() {\n        this.initializeStyles();\n    }\n\n    private initializeStyles(): void {\n        const element = this.el.nativeElement;\n\n        this.renderer.setStyle(element, 'display', 'block');\n        this.renderer.setStyle(element, 'width', this.width);\n        this.renderer.setStyle(element, 'height', this.height);\n        this.renderer.setStyle(element, 'border-radius', this.borderRadius);\n        this.renderer.setStyle(element, 'background-color', 'var(--bg-tertiary, #313142)');\n        this.renderer.setStyle(element, 'position', 'relative');\n        this.renderer.setStyle(element, 'overflow', 'hidden');\n\n        if (this.animation) {\n            const shimmer = this.renderer.createElement('div');\n            this.renderer.addClass(shimmer, 'skeleton-shimmer');\n            this.renderer.appendChild(element, shimmer);\n\n            this.renderer.setStyle(shimmer, 'position', 'absolute');\n            this.renderer.setStyle(shimmer, 'top', '0');\n            this.renderer.setStyle(shimmer, 'left', '0');\n            this.renderer.setStyle(shimmer, 'width', '100%');\n            this.renderer.setStyle(shimmer, 'height', '100%');\n            this.renderer.setStyle(shimmer, 'background', 'linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.04), transparent)');\n            this.renderer.setStyle(shimmer, 'animation', 'shimmer 1.5s infinite');\n        }\n    }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SkeletonDirective } from './skeleton.directive';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    SkeletonDirective\n  ],\n  exports: [\n    SkeletonDirective\n  ]\n})\nexport class SkeletonModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n    imports: [\n        CommonModule\n    ],\n    declarations: [],\n    exports: []\n})\nexport class StylesModule { }","/*\n * Public API Surface of nzrm-ng\n */\n\n/****TOOLTIP****/\nexport * from './lib/components/tooltip/tooltip.directive';\nexport * from './lib/components/tooltip/tooltip.module';\n\n/*****NOTIFICATION****/\nexport * from './lib/components/notification/notification.component';\nexport * from './lib/components/notification/notification.service';\n\n/*****THEME TOGGLE****/\nexport * from './lib/components/theme-toggle/theme-toggle.component';\nexport * from './lib/components/theme-toggle/theme-toggle.module';\nexport * from './lib/services/theme.service';\n\n/****CONFIRMATION DIALOG****/\nexport * from './lib/components/confirmation-dialog/confirmation-dialog.component';\nexport * from './lib/components/confirmation-dialog/confirmation-dialog.service';\nexport * from './lib/components/confirmation-dialog/confirmation-dialog.directive';\nexport * from './lib/components/confirmation-dialog/confirmation-dialog.model';\n\n/****MESSAGE DIALOG*****/\nexport * from './lib/components/message-dialog/message-dialog.component';\nexport * from './lib/components/message-dialog/message-dialog.service';\nexport * from './lib/components/message-dialog/message-dialog.model';\n\n/****BUTTON****/\nexport * from './lib/components/button/button.module';\nexport * from './lib/components/button/button.directive';\n\n/***INPUT TEXT****/\nexport * from './lib/components/input-text/input-text.directive';\nexport * from './lib/components/input-text/input-text.module';\n\n/****DROPDOWN*****/\nexport * from './lib/components/drop-down/drop-down.module';\nexport * from './lib/components/drop-down/drop-down.directive';\nexport * from './lib/components/drop-down/drop-down.component';\nexport * from './lib/components/drop-down/drop-down.service';\n\n/****SKELETON*****/\nexport * from './lib/components/skeleton/skeleton.module';\nexport * from './lib/components/skeleton/skeleton.directive';\n\n/****STYLES****/\nexport * from './lib/styles/styles.module';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.ThemeService","i1.ConfirmationDialogService","uuidv4"],"mappings":"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"}