{"version":3,"file":"kaspacom-ui.mjs","sources":["../../../projects/kaspacom-ui/src/lib/icons/icon/icon.component.ts","../../../projects/kaspacom-ui/src/lib/icons/icon/icon.component.html","../../../projects/kaspacom-ui/src/lib/modals/kc-base-modal/kc-base-modal.component.ts","../../../projects/kaspacom-ui/src/lib/modals/kc-base-modal/kc-base-modal.component.html","../../../projects/kaspacom-ui/src/lib/loading/spinner/spinner.component.ts","../../../projects/kaspacom-ui/src/lib/form-controls/components/button/button.component.ts","../../../projects/kaspacom-ui/src/lib/form-controls/components/checkbox/checkbox.component.ts","../../../projects/kaspacom-ui/src/lib/form-controls/components/dropdown-select/dropdown-options/dropdown-options.component.ts","../../../projects/kaspacom-ui/src/lib/form-controls/components/dropdown-select/dropdown-options/dropdown-options.component.html","../../../projects/kaspacom-ui/src/lib/form-controls/services/responsive.service.ts","../../../projects/kaspacom-ui/src/lib/form-controls/components/dropdown-select/dropdown-select.component.ts","../../../projects/kaspacom-ui/src/lib/form-controls/components/dropdown-select/dropdown-select.component.html","../../../projects/kaspacom-ui/src/lib/form-controls/components/dropdown-multiselect/dropdown-multiselect-options/dropdown-multiselect-options.component.ts","../../../projects/kaspacom-ui/src/lib/form-controls/components/dropdown-multiselect/dropdown-multiselect-options/dropdown-multiselect-options.component.html","../../../projects/kaspacom-ui/src/lib/form-controls/components/dropdown-multiselect/dropdown-multiselect.component.ts","../../../projects/kaspacom-ui/src/lib/form-controls/components/dropdown-multiselect/dropdown-multiselect.component.html","../../../projects/kaspacom-ui/src/lib/form-controls/components/chip/chip.component.ts","../../../projects/kaspacom-ui/src/lib/form-controls/components/switch-navigation/switch-navigation.component.ts","../../../projects/kaspacom-ui/src/lib/form-controls/components/switch-navigation/switch-navigation.component.html","../../../projects/kaspacom-ui/src/lib/form-controls/kc-input/kc-input.component.ts","../../../projects/kaspacom-ui/src/lib/form-controls/kc-input/kc-input.component.html","../../../projects/kaspacom-ui/src/lib/card/kc-card.component.ts","../../../projects/kaspacom-ui/src/lib/card/kc-card.component.html","../../../projects/kaspacom-ui/src/lib/snackbar/snackbar.models.ts","../../../projects/kaspacom-ui/src/lib/snackbar/notification.service.ts","../../../projects/kaspacom-ui/src/lib/snackbar/kc-snackbar/kc-snackbar.component.ts","../../../projects/kaspacom-ui/src/lib/snackbar/kc-snackbar/kc-snackbar.component.html","../../../projects/kaspacom-ui/src/lib/directives/tooltip/tooltip.directive.ts","../../../projects/kaspacom-ui/src/lib/showcase/design-system-showcase.component.ts","../../../projects/kaspacom-ui/src/lib/showcase/design-system-showcase.component.html","../../../projects/kaspacom-ui/src/public-api.ts","../../../projects/kaspacom-ui/src/kaspacom-ui.ts"],"sourcesContent":["import {\r\n  Component,\r\n  EventEmitter,\r\n  HostListener,\r\n  Inject,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n} from '@angular/core';\r\nimport { DOCUMENT, NgClass, NgStyle } from '@angular/common';\r\nimport { ComponentSize } from '../../form-controls/types/sizing.type';\r\n\r\n@Component({\r\n  // tslint:disable-next-line:component-selector\r\n  selector: 'kc-icon',\r\n  templateUrl: './icon.component.html',\r\n  styleUrls: ['./icon.component.scss'],\r\n  standalone: true,\r\n  imports: [NgStyle, NgClass],\r\n})\r\nexport class KcIconComponent {\r\n  @Input() iconClass!: string;\r\n  @Input() public readonly disabled: boolean = false;\r\n  @Input() size: ComponentSize = 'sm';\r\n  @Input() public iconSize: ComponentSize = 'sm';\r\n  @Input() public readonly classes?: string;\r\n  @Input() public readonly isDefaultColor: boolean = true;\r\n  @Input() public color?: string;\r\n\r\n  constructor(@Inject(DOCUMENT) private _document: Document) {}\r\n}\r\n","<div\r\n  [class]=\"'icon-wrapper ' + classes\"\r\n  [ngStyle]=\"{color: color ? color : ''}\"\r\n  [ngClass]=\"{\r\n    disabled: disabled,\r\n    xs: size === 'xs',\r\n    sm: size === 'sm',\r\n    md: size === 'md',\r\n    lg: size === 'lg',\r\n    xlg: size === 'xlg',\r\n    'default-color': isDefaultColor\r\n  }\"\r\n>\r\n  <div class=\"{{ iconClass }}\" [ngClass]=\"{icon: color ? false : true}\"></div>\r\n</div>\r\n","import { Component, ElementRef, input, output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ComponentSize } from '../../form-controls/types/sizing.type';\r\nimport { KcIconComponent } from '../../icons/icon/icon.component';\r\nimport { trigger, transition, style, animate } from '@angular/animations';\r\n\r\n@Component({\r\n  selector: 'kc-base-modal',\r\n  standalone: true,\r\n  imports: [CommonModule, KcIconComponent],\r\n  templateUrl: './kc-base-modal.component.html',\r\n  styleUrls: ['./kc-base-modal.component.scss'],\r\n  animations: [\r\n    trigger('modalSlide', [\r\n      transition(':enter', [\r\n        style({ transform: 'translateY(100%)', opacity: 0 }),\r\n        animate('350ms ease-out', style({ transform: 'translateY(0)', opacity: 1 }))\r\n      ]),\r\n      transition(':leave', [\r\n        animate('300ms ease-in', style({ transform: 'translateY(100%)', opacity: 0 }))\r\n      ])\r\n    ]),\r\n    trigger('overlayFade', [\r\n      transition(':enter', [\r\n        style({ opacity: 0 }),\r\n        animate('250ms ease-out', style({ opacity: 1 }))\r\n      ]),\r\n      transition(':leave', [\r\n        animate('200ms ease-in', style({ opacity: 0 }))\r\n      ])\r\n    ])\r\n  ]\r\n})\r\nexport class KcBaseModalComponent {\r\n  // Inputs\r\n  showCloseButton = input<boolean>(true);\r\n  title = input<string | undefined>(undefined);\r\n  titleIconClass = input<string | undefined>(undefined);\r\n  showHeaderSeperator = input<boolean>(true);\r\n  autoWidth = input<boolean>(false);\r\n\r\n  // Component size constants for the template\r\n  componentSizes: Record<string, ComponentSize> = {\r\n    XS: 'xs',\r\n    SM: 'sm',\r\n    MD: 'md',\r\n    LG: 'lg',\r\n    XLG: 'xlg'\r\n  };\r\n  \r\n  // Outputs\r\n  close = output<void>();\r\n\r\n  constructor(private el: ElementRef) {}\r\n\r\n  onClose(): void {\r\n    this.el.nativeElement.classList.add('closing');\r\n\r\n    setTimeout(() => {\r\n      this.close.emit();\r\n    }, 300);\r\n  }\r\n}\r\n","<div class=\"modal-overlay\">\n  <div class=\"modal-container\" [class.auto-width]=\"autoWidth()\">\n    <div class=\"modal-header\" [class.header-separator]=\"showHeaderSeperator()\">\n      <div class=\"modal-title\">\n        <span *ngIf=\"titleIconClass()\" class=\"modal-title-icon\">\n          <kc-icon [iconClass]=\"titleIconClass()!\" [size]=\"componentSizes['MD']\"></kc-icon>\n        </span>\n        <span *ngIf=\"title()\" class=\"modal-title-text typo-title-3\">{{ title() }}</span>\n      </div>\n      <div class=\"modal-header-controls\">\n        <ng-content select=\"[rightSideSlot]\"></ng-content>\n        <button *ngIf=\"showCloseButton()\" class=\"close-button\" (click)=\"onClose()\">\n          <kc-icon iconClass=\"icon-close\"></kc-icon>\n        </button>\n      </div>\n    </div>\n    <div class=\"modal-content typo-text-3\">\n      <ng-content></ng-content>\n    </div>\n  </div>\n</div> ","import { Component, input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { ComponentSize } from '../../form-controls/types/sizing.type';\r\n\r\n@Component({\r\n  selector: 'kc-spinner',\r\n  standalone: true,\r\n  imports: [NgClass],\r\n  template: `\r\n    <div class=\"spinner\" [ngClass]=\"size()\"></div>\r\n  `,\r\n  styleUrls: ['./spinner.component.scss']\r\n})\r\nexport class KcSpinnerComponent {\r\n  size = input<ComponentSize>('md');\r\n} ","import { Component, input, output, EventEmitter, HostBinding, ContentChild, TemplateRef } from '@angular/core';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { ComponentSize } from '../../types/sizing.type';\r\nimport { KcSpinnerComponent } from '../../../loading/spinner/spinner.component';\r\nimport { KcIconComponent } from '../../../icons/icon/icon.component';\r\nimport { ButtonVariant } from '../../types/button-variant.type';\r\n\r\n@Component({\r\n  selector: 'kc-button',\r\n  standalone: true,\r\n  imports: [NgClass, NgTemplateOutlet, KcSpinnerComponent, KcIconComponent],\r\n  template: `\r\n    <button\r\n      class=\"app-button\"\r\n      [ngClass]=\"[\r\n        variant(),\r\n        size(),\r\n        isFullWidth() ? 'full-width' : '',\r\n        isDisabled() || isLoading() ? 'disabled' : '',\r\n        isLoading() ? 'loading' : '',\r\n        role() ? 'role-' + role() : '',\r\n        getTypographyClass()\r\n      ]\"\r\n      [disabled]=\"isDisabled() || isLoading()\"\r\n      (click)=\"handleClick($event)\"\r\n    >\r\n      <div class=\"button-content\">\r\n        @if (isLoading()) {\r\n          <div class=\"loading-content\">\r\n            <kc-spinner [size]=\"getSpinnerSize()\"></kc-spinner>\r\n            @if (loadingText()) {\r\n              <span>{{ loadingText() }}</span>\r\n            }\r\n          </div>\r\n        } @else {\r\n          <div class=\"button-inner-content\">\r\n            @if (prefixIcon()) {\r\n              <kc-icon [iconClass]=\"prefixIcon()!\" [color]=\"prefixIconColor()\"></kc-icon>\r\n            }\r\n            @if (prefixTemplateRef) {\r\n              <ng-container [ngTemplateOutlet]=\"prefixTemplateRef\"></ng-container>\r\n            }\r\n            @if (text()) {\r\n              <span>{{ text() }}</span>\r\n            }\r\n            @if (suffixIcon()) {\r\n              <kc-icon [iconClass]=\"suffixIcon()!\" [color]=\"suffixIconColor()\"></kc-icon>\r\n            }\r\n          </div>\r\n        }\r\n      </div>\r\n    </button>\r\n  `,\r\n  styleUrls: ['./button.component.scss'],\r\n  host: {\r\n    '[style.display]': \"isFullWidth() ? 'block' : 'inline-block'\",\r\n    '[style.width]': \"isFullWidth() ? '100%' : 'auto'\"\r\n  }\r\n})\r\nexport class KcButtonComponent {\r\n  text = input<string>('');\r\n  variant = input<ButtonVariant>('primary');\r\n  size = input<ComponentSize>('md');\r\n  isLoading = input<boolean>(false);\r\n  isFullWidth = input<boolean>(false);\r\n  isDisabled = input<boolean>(false);\r\n  role = input<'success' | 'info' | 'warning' | 'danger' | 'neutral' | null>(null);\r\n  prefixIcon = input<string | undefined>(undefined);\r\n  suffixIcon = input<string | undefined>(undefined);\r\n  prefixIconColor = input<string | undefined>(undefined);\r\n  suffixIconColor = input<string | undefined>(undefined);\r\n  loadingText = input<string | undefined>(undefined);\r\n  \r\n  @ContentChild('prefixTemplate', { static: false }) prefixTemplateRef?: TemplateRef<any>;\r\n  \r\n  buttonClick = output<MouseEvent>();\r\n  \r\n  handleClick(event: MouseEvent): void {\r\n    if (!this.isDisabled() && !this.isLoading()) {\r\n      this.buttonClick.emit(event);\r\n    }\r\n  }\r\n  \r\n  getSpinnerSize(): ComponentSize {\r\n    // Map button size to appropriate spinner size\r\n    const sizeMap: Record<ComponentSize, ComponentSize> = {\r\n      'xs': 'xs',\r\n      'sm': 'xs',\r\n      'md': 'sm',\r\n      'lg': 'md',\r\n      'xlg': 'lg'\r\n    };\r\n    \r\n    return sizeMap[this.size()];\r\n  }\r\n  \r\n  getTypographyClass(): string {\r\n    // Map button size to appropriate typography class\r\n    const typographyMap: Record<ComponentSize, string> = {\r\n      'xs': 'typo-button-small',\r\n      'sm': 'typo-button-small',\r\n      'md': 'typo-button-medium',\r\n      'lg': 'typo-button-large',\r\n      'xlg': 'typo-button-large'\r\n    };\r\n    \r\n    return typographyMap[this.size()];\r\n  }\r\n} ","import { Component, forwardRef, input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\nimport { ComponentSize } from '../../types/sizing.type';\r\n\r\n@Component({\r\n  selector: 'kc-checkbox',\r\n  standalone: true,\r\n  imports: [CommonModule, FormsModule],\r\n  template: `\r\n    <div \r\n      class=\"checkbox-container\" \r\n      [class.checked]=\"checked\"\r\n      [class.disabled]=\"isDisabled()\"\r\n      [ngClass]=\"sizeClass()\"\r\n      (click)=\"toggle()\"\r\n    >\r\n      <div class=\"checkbox\">\r\n        <div class=\"checkbox-inner\" [class.checked]=\"checked\">\r\n          <svg *ngIf=\"checked\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n            <polyline points=\"20 6 9 17 4 12\"></polyline>\r\n          </svg>\r\n        </div>\r\n      </div>\r\n      <label *ngIf=\"label()\" class=\"checkbox-label\">{{ label() }}</label>\r\n    </div>\r\n  `,\r\n  styles: [`\r\n    .checkbox-container {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      gap: 8px;\r\n      cursor: pointer;\r\n      user-select: none;\r\n    }\r\n    \r\n    .checkbox-container.disabled {\r\n      opacity: 0.5;\r\n      cursor: not-allowed;\r\n      pointer-events: none;\r\n    }\r\n    \r\n    .checkbox {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n    }\r\n    \r\n    .checkbox-inner {\r\n      border-radius: 4px;\r\n      border: 2px solid var(--gray-50);\r\n      background-color: var(--gray-20);\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      transition: all 0.2s ease;\r\n      box-sizing: border-box;\r\n      position: relative;\r\n    }\r\n    \r\n    .checkbox-inner.checked {\r\n      border-color: var(--kaspa-50);\r\n      background-color: var(--kaspa-50);\r\n    }\r\n    \r\n    .checkbox-inner svg {\r\n      color: white;\r\n      position: absolute;\r\n      top: 50%;\r\n      left: 50%;\r\n      transform: translate(-50%, -50%);\r\n      width: 100%;\r\n      height: 100%;\r\n    }\r\n    \r\n    /* Sizing */\r\n    .checkbox-container.xs .checkbox-inner {\r\n      width: 14px;\r\n      height: 14px;\r\n      min-width: 14px;\r\n      min-height: 14px;\r\n    }\r\n    \r\n    .checkbox-container.sm .checkbox-inner {\r\n      width: 16px;\r\n      height: 16px;\r\n      min-width: 16px;\r\n      min-height: 16px;\r\n    }\r\n    \r\n    .checkbox-container.md .checkbox-inner {\r\n      width: 18px;\r\n      height: 18px;\r\n      min-width: 18px;\r\n      min-height: 18px;\r\n    }\r\n    \r\n    .checkbox-container.lg .checkbox-inner {\r\n      width: 20px;\r\n      height: 20px;\r\n      min-width: 20px;\r\n      min-height: 20px;\r\n    }\r\n    \r\n    .checkbox-container.xlg .checkbox-inner {\r\n      width: 24px;\r\n      height: 24px;\r\n      min-width: 24px;\r\n      min-height: 24px;\r\n    }\r\n    \r\n    .checkbox-container.xs svg {\r\n      width: 10px !important;\r\n      height: 10px !important;\r\n    }\r\n    \r\n    .checkbox-container.sm svg {\r\n      width: 12px !important;\r\n      height: 12px !important;\r\n    }\r\n    \r\n    .checkbox-container.md svg {\r\n      width: 14px !important;\r\n      height: 14px !important;\r\n    }\r\n    \r\n    .checkbox-container.lg svg {\r\n      width: 16px !important;\r\n      height: 16px !important;\r\n    }\r\n    \r\n    .checkbox-container.xlg svg {\r\n      width: 18px !important;\r\n      height: 18px !important;\r\n    }\r\n    \r\n    /* Typography for labels */\r\n    .checkbox-container.xs .checkbox-label {\r\n      font-size: 0.75rem;\r\n    }\r\n    \r\n    .checkbox-container.sm .checkbox-label {\r\n      font-size: 0.875rem;\r\n    }\r\n    \r\n    .checkbox-container.md .checkbox-label {\r\n      font-size: 1rem;\r\n    }\r\n    \r\n    .checkbox-container.lg .checkbox-label {\r\n      font-size: 1.125rem;\r\n    }\r\n    \r\n    .checkbox-container.xlg .checkbox-label {\r\n      font-size: 1.25rem;\r\n    }\r\n  `],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => KcCheckboxComponent),\r\n      multi: true\r\n    }\r\n  ]\r\n})\r\nexport class KcCheckboxComponent implements ControlValueAccessor, OnInit, OnChanges {\r\n  // Inputs\r\n  size = input<ComponentSize>('md');\r\n  isDisabled = input<boolean>(false);\r\n  label = input<string>('');\r\n  isChecked = input<boolean>(false);\r\n  \r\n  // State\r\n  checked = false;\r\n  \r\n  // Output\r\n  @Output() checkedChange = new EventEmitter<boolean>();\r\n  \r\n  // ControlValueAccessor\r\n  private onChange: (value: boolean) => void = () => {};\r\n  private onTouched: () => void = () => {};\r\n  \r\n  ngOnInit() {\r\n    // Initialize the checked state from the isChecked input\r\n    this.checked = this.isChecked();\r\n  }\r\n  \r\n  ngOnChanges(changes: SimpleChanges) {\r\n    // Update checked state when isChecked input changes\r\n    if (changes['isChecked']) {\r\n      this.checked = this.isChecked();\r\n    }\r\n  }\r\n  \r\n  // Calculate size class\r\n  sizeClass() {\r\n    // With string-based types, we can just return the size directly\r\n    return this.size();\r\n  }\r\n  \r\n  // Toggle the checkbox\r\n  toggle() {\r\n    if (this.isDisabled()) {\r\n      return;\r\n    }\r\n    \r\n    this.onTouched();\r\n    this.checked = !this.checked;\r\n    \r\n    // Update the input value\r\n    // Emit event for ngModel binding\r\n    this.checkedChange.emit(this.checked);\r\n    \r\n    // Emit event for reactive forms\r\n    this.onChange(this.checked);\r\n  }\r\n  \r\n  // ControlValueAccessor implementation\r\n  writeValue(value: boolean): void {\r\n    this.checked = !!value;\r\n  }\r\n  \r\n  registerOnChange(fn: (value: boolean) => void): void {\r\n    this.onChange = fn;\r\n  }\r\n  \r\n  registerOnTouched(fn: () => void): void {\r\n    this.onTouched = fn;\r\n  }\r\n  \r\n  setDisabledState(isDisabled: boolean): void {\r\n    // Update the disabled state\r\n  }\r\n} ","import { Component, EventEmitter, TemplateRef, Output, OnInit, OnDestroy, Input, ContentChild } from '@angular/core';\r\nimport { CommonModule, NgClass } from '@angular/common';\r\nimport { DropdownOption } from '../dropdown-select.models';\r\nimport { DropdownVariant } from '../../../types/dropdown-variant.type';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { Subject, debounceTime, takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'kc-dropdown-options',\r\n  standalone: true,\r\n  imports: [CommonModule, NgClass, ReactiveFormsModule],\r\n  templateUrl: './dropdown-options.component.html',\r\n  styleUrls: ['./dropdown-options.component.scss']\r\n})\r\nexport class KcDropdownOptionsComponent implements OnInit, OnDestroy {\r\n  options: DropdownOption[] = [];\r\n  filteredOptions: DropdownOption[] = [];\r\n  selectedValue: any = null;\r\n  variant: DropdownVariant = 'secondary';\r\n  \r\n  @Input() optionsEllipsis: boolean = false;\r\n  @Input() isFullscreenSelection: boolean = false;\r\n  @Input() isSearchable: boolean = false;\r\n  @Input() searchField: string = 'label';\r\n  @Input() customTemplate: TemplateRef<any> | null = null;\r\n  @ContentChild('emptyStateTemplate') emptyStateTemplate: TemplateRef<any> | null = null;\r\n  \r\n  searchControl = new FormControl('');\r\n  private destroy$ = new Subject<void>();\r\n  \r\n  @Output() optionSelected = new EventEmitter<DropdownOption>();\r\n  @Output() closeRequested = new EventEmitter<void>();\r\n\r\n  ngOnInit(): void {\r\n    this.filteredOptions = [...this.options];\r\n    \r\n    if (this.isSearchable) {\r\n      this.searchControl.valueChanges.pipe(\r\n        debounceTime(128),\r\n        takeUntil(this.destroy$)\r\n      ).subscribe(value => {\r\n        this.filterOptions(value || '');\r\n      });\r\n    }\r\n  }\r\n  \r\n  filterOptions(searchText: string): void {\r\n    if (!searchText.trim()) {\r\n      this.filteredOptions = [...this.options];\r\n      return;\r\n    }\r\n    \r\n    const searchLower = searchText.toLowerCase();\r\n    this.filteredOptions = this.options.filter(option => {\r\n      const field = this.searchField === 'label' ? option.label : \r\n                   (option as any)[this.searchField] || '';\r\n      return String(field).toLowerCase().includes(searchLower);\r\n    });\r\n  }\r\n\r\n  isSelected(option: DropdownOption): boolean {\r\n    return this.selectedValue === option.value;\r\n  }\r\n\r\n  selectOption(option: DropdownOption): void {\r\n    this.optionSelected.emit(option);\r\n  }\r\n  \r\n  closeFullscreen(): void {\r\n    this.closeRequested.emit();\r\n  }\r\n  \r\n  getTypographyClass(): string {\r\n    // Using the same typography class as the dropdown options\r\n    return 'typo-text-3';\r\n  }\r\n  \r\n  ngOnDestroy(): void {\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n}\r\n","<div class=\"dropdown-options-container\" [ngClass]=\"[variant, isFullscreenSelection ? 'fullscreen-mode' : '']\">\r\n  <!-- Fullscreen header with close button -->\r\n  <div *ngIf=\"isFullscreenSelection\" class=\"fullscreen-header\">\r\n    <div class=\"fullscreen-title typo-title-3\">Select an option</div>\r\n    <button class=\"close-button\" (click)=\"closeFullscreen()\">\r\n      <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n        <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\r\n        <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\r\n      </svg>\r\n    </button>\r\n  </div>\r\n  \r\n  <!-- Search input -->\r\n  <div *ngIf=\"isSearchable\" class=\"search-container\">\r\n    <div class=\"search-input-wrapper\">\r\n      <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n        <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\r\n        <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\r\n      </svg>\r\n      <input \r\n        type=\"text\" \r\n        class=\"search-input\"\r\n        [formControl]=\"searchControl\"\r\n        placeholder=\"Search...\" \r\n        [ngClass]=\"getTypographyClass()\"\r\n        autocomplete=\"off\"\r\n      />\r\n    </div>\r\n  </div>\r\n  \r\n  <div class=\"options-list\">\r\n    <div\r\n      *ngFor=\"let option of filteredOptions\"\r\n      class=\"dropdown-option\"\r\n      [class.disabled]=\"option.disabled\"\r\n      [class.selected]=\"isSelected(option)\"\r\n      [class.ellipsis]=\"optionsEllipsis\"\r\n      [class.variant-primary]=\"variant === 'primary'\"\r\n      [class.variant-secondary]=\"variant === 'secondary'\"\r\n      [class.variant-tertiary]=\"variant === 'tertiary'\"\r\n      [ngClass]=\"getTypographyClass()\"\r\n      (click)=\"option.disabled ? null : selectOption(option)\">\r\n      \r\n      <!-- Use custom template when provided -->\r\n      <ng-container *ngIf=\"customTemplate; else defaultTemplate\">\r\n        <ng-container *ngTemplateOutlet=\"customTemplate; context: { $implicit: option }\"></ng-container>\r\n      </ng-container>\r\n      \r\n      <!-- Default template -->\r\n      <ng-template #defaultTemplate>\r\n        {{ option.label }}\r\n      </ng-template>\r\n    </div>\r\n    \r\n    <!-- No results message -->\r\n    <div *ngIf=\"filteredOptions.length === 0\" class=\"no-results\" [ngClass]=\"getTypographyClass()\">\r\n      <!-- Use projected empty state template when provided -->\r\n      <ng-content select=\"[emptyStateTemplate]\" *ngIf=\"emptyStateTemplate\"></ng-content>\r\n      \r\n      <!-- Default empty state template when no projection provided -->\r\n      <ng-container *ngIf=\"!emptyStateTemplate\">\r\n        <div class=\"typo-caption\">No matching options found</div>\r\n      </ng-container>\r\n    </div>\r\n  </div>\r\n</div> ","import { Injectable, OnDestroy, inject, signal } from '@angular/core';\r\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ResponsiveService implements OnDestroy {\r\n  private readonly destroy$ = new Subject<void>();\r\n  private readonly breakpointObserver = inject(BreakpointObserver);\r\n  \r\n  // Signal that indicates if the screen is in mobile size (XS and below)\r\n  isMobile = signal<boolean>(false);\r\n  \r\n  // Signal for screens <= 480px\r\n  isExtraSmallScreen = signal<boolean>(false);\r\n  \r\n  constructor() {\r\n    // Set the initial values based on the current screen size\r\n    this.isMobile.set(this.breakpointObserver.isMatched(Breakpoints.XSmall));\r\n    this.isExtraSmallScreen.set(this.breakpointObserver.isMatched('(max-width: 480px)'));\r\n    \r\n    // Observe changes to the breakpoints\r\n    this.breakpointObserver\r\n      .observe([Breakpoints.XSmall, '(max-width: 480px)'])\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe(result => {\r\n        // Update the signals when the breakpoint states change\r\n        this.isMobile.set(result.breakpoints[Breakpoints.XSmall]);\r\n        this.isExtraSmallScreen.set(result.breakpoints['(max-width: 480px)']);\r\n      });\r\n  }\r\n  \r\n  // Also provide a method for custom breakpoint checking\r\n  isBreakpointMatched(breakpoint: string): boolean {\r\n    return this.breakpointObserver.isMatched(breakpoint);\r\n  }\r\n  \r\n  ngOnDestroy(): void {\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n} ","import {\n  Component,\n  ContentChild,\n  effect,\n  ElementRef,\n  inject,\n  input,\n  OnDestroy,\n  OnInit,\n  output,\n  TemplateRef,\n  ViewChild\n} from '@angular/core';\nimport {CommonModule, NgClass} from '@angular/common';\nimport {Overlay, OverlayModule, OverlayRef} from '@angular/cdk/overlay';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule} from '@angular/forms';\nimport {Subject, takeUntil} from 'rxjs';\n\nimport {KcDropdownOptionsComponent} from './dropdown-options/dropdown-options.component';\nimport {DropdownOption} from './dropdown-select.models';\nimport {DropdownVariant} from '../../types/dropdown-variant.type';\nimport {ComponentSize} from '../../types/sizing.type';\nimport {KcIconComponent} from '../../../icons/icon/icon.component';\nimport {ResponsiveService} from '../../services/responsive.service';\n\n@Component({\n  selector: 'kc-dropdown-select',\n  standalone: true,\n  imports: [CommonModule, NgClass, FormsModule, ReactiveFormsModule, KcIconComponent, OverlayModule],\n  templateUrl: './dropdown-select.component.html',\n  styleUrls: ['./dropdown-select.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: KcDropdownSelectComponent,\n      multi: true\n    }\n  ]\n})\nexport class KcDropdownSelectComponent implements ControlValueAccessor, OnInit, OnDestroy {\n  // Constants\n  private readonly destroy$ = new Subject<void>();\n  private readonly overlay = inject(Overlay);\n  private readonly responsiveService = inject(ResponsiveService);\n\n  // Signals\n  options = input<DropdownOption[]>([]);\n  placeholder = input<string>('Select an option');\n  size = input<ComponentSize>('md');\n  variant = input<DropdownVariant>('secondary');\n  isFullWidth = input<boolean>(false);\n  isDisabled = input<boolean>(false);\n  optionsEllipsis = input<boolean>(false);\n  isFullscreenSelection = input<boolean>(false);\n  icon = input<string>('');\n  useContentWidth = input<boolean>(true);\n  maxWidth = input<string | null>(null);\n  showToggleIcon = input<boolean>(true);\n\n  // Value input for direct binding\n  value = input<any>(null);\n\n  // Search-related inputs\n  isSearchable = input<boolean>(false);\n  searchField = input<string>('label');\n\n  // Custom item template\n  @ContentChild('optionTemplate') optionTemplate: TemplateRef<any> | null = null;\n  @ContentChild('prefixTemplate') prefixTemplateRef: TemplateRef<any> | null = null;\n  @ContentChild('emptyStateTemplate') emptyStateTemplateRef: TemplateRef<any> | null = null;\n\n  // Output signals\n  valueChange = output<any>();\n\n  // Other properties\n  @ViewChild('dropdownTrigger') dropdownTrigger!: ElementRef;\n  isOpen = false;\n  private overlayRef: OverlayRef | null = null;\n  private _value: any = null;\n  private onChange: (value: any) => void = () => {};\n  private onTouched: () => void = () => {};\n\n  // We modify the isDisabled check to consider both the input signal and our internal state\n  private _internalDisabled = false;\n\n  constructor() {\n    // Use an effect to respond to changes in the input value\n    effect(() => {\n      const newValue = this.value();\n      if (this._value !== newValue) {\n        this._value = newValue;\n      }\n    });\n  }\n  \n  ngOnInit(): void {\n    // We can't modify the input signal directly, so we'll create a computed property\n    // that will check both the provided isFullscreenSelection and the screen size\n  }\n\n  // Helper method to check disabled state combining both sources\n  isComponentDisabled(): boolean {\n    return this.isDisabled() || this._internalDisabled;\n  }\n\n  // Get the display value for the dropdown\n  getDisplayValue(): string {\n    if (this._value === null || this._value === undefined) {\n      return this.placeholder();\n    }\n\n    const selectedOption = this.options().find(option => option.value === this._value);\n    return selectedOption ? selectedOption.label : this.placeholder();\n  }\n\n  // Map dropdown size to typography class\n  getTypographyClass(): string {\n    const typographyMap: Record<ComponentSize, string> = {\n      'xs': 'typo-text-1',\n      'sm': 'typo-text-2',\n      'md': 'typo-text-3',\n      'lg': 'typo-text-4',\n      'xlg': 'typo-text-5'\n    };\n\n    return typographyMap[this.size()];\n  }\n\n  // Methods\n  toggleDropdown(): void {\n    if (this.isComponentDisabled()) {\n      return;\n    }\n\n    this.isOpen ? this.closeDropdown() : this.openDropdown();\n  }\n\n  openDropdown(): void {\n    this.onTouched();\n\n    if (this.overlayRef) {\n      return;\n    }\n\n    // Check both the provided isFullscreenSelection and the screen size\n    // If either is true, use fullscreen mode\n    const shouldUseFullscreen = this.isFullscreenSelection() || this.responsiveService.isExtraSmallScreen();\n    \n    // Different overlay creation strategy based on mode\n    if (shouldUseFullscreen) {\n      this.openFullscreenDropdown();\n    } else {\n      this.openRegularDropdown();\n    }\n\n    this.isOpen = true;\n  }\n\n  private openRegularDropdown(): void {\n    const positionStrategy = this.overlay\n      .position()\n      .flexibleConnectedTo(this.dropdownTrigger)\n      .withPositions([\n        {\n          originX: 'start',\n          originY: 'bottom',\n          overlayX: 'start',\n          overlayY: 'top',\n          offsetY: 4\n        },\n        {\n          originX: 'start',\n          originY: 'top',\n          overlayX: 'start',\n          overlayY: 'bottom',\n          offsetY: -4\n        }\n      ]);\n\n    // Get parent width for minimum width constraint\n    const parentWidth = this.dropdownTrigger.nativeElement.offsetWidth;\n    \n    // Configure overlay options based on the useContentWidth setting\n    const overlayConfig: any = {\n      positionStrategy,\n      minWidth: parentWidth, // Always ensure minimum width matches parent\n      scrollStrategy: this.overlay.scrollStrategies.close(),\n      hasBackdrop: true,\n      backdropClass: 'cdk-overlay-transparent-backdrop',\n      panelClass: ['dropdown-overlay-panel', 'dropdown-animated-panel']\n    };\n    \n    // Only set fixed width if useContentWidth is false\n    if (!this.useContentWidth()) {\n      overlayConfig.width = parentWidth;\n    }\n    \n    // Apply maxWidth if provided\n    if (this.maxWidth()) {\n      overlayConfig.maxWidth = this.maxWidth();\n    }\n    \n    this.overlayRef = this.overlay.create(overlayConfig);\n\n    // Apply entrance animation\n    const overlayElement = this.overlayRef.overlayElement;\n    overlayElement.style.opacity = '0';\n    overlayElement.style.transform = 'translateY(-10px) scale(0.98)';\n\n    this.attachOptionsComponent();\n\n    // Run the entrance animation after component is attached\n    requestAnimationFrame(() => {\n      overlayElement.style.transition = 'opacity 200ms cubic-bezier(0.25, 0.8, 0.25, 1), transform 200ms cubic-bezier(0.25, 0.8, 0.25, 1)';\n      overlayElement.style.opacity = '1';\n      overlayElement.style.transform = 'translateY(0) scale(1)';\n    });\n  }\n\n  private openFullscreenDropdown(): void {\n    const positionStrategy = this.overlay.position()\n      .global()\n      .centerHorizontally()\n      .bottom();\n\n    this.overlayRef = this.overlay.create({\n      positionStrategy,\n      width: '100%',\n      height: '75vh',\n      scrollStrategy: this.overlay.scrollStrategies.block(),\n      hasBackdrop: true,\n      backdropClass: 'cdk-overlay-dark-backdrop',\n      panelClass: ['dropdown-overlay-fullscreen', 'dropdown-animated-fullscreen']\n    });\n\n    // Apply fullscreen entrance animation - slide from bottom\n    const overlayElement = this.overlayRef.overlayElement;\n    overlayElement.style.opacity = '0';\n    overlayElement.style.transform = 'translateY(100%)';\n\n    // Add overflow hidden to prevent horizontal scrolling\n    overlayElement.style.overflowX = 'hidden';\n\n    this.attachOptionsComponent(true);\n\n    // Run the entrance animation after component is attached\n    requestAnimationFrame(() => {\n      overlayElement.style.transition = 'opacity 300ms cubic-bezier(0.25, 0.8, 0.25, 1), transform 300ms cubic-bezier(0.25, 0.8, 0.25, 1)';\n      overlayElement.style.opacity = '1';\n      overlayElement.style.transform = 'translateY(0)';\n    });\n  }\n\n  private attachOptionsComponent(isFullscreen = false): void {\n    // Create and attach the dropdown options component\n    const optionsPortal = new ComponentPortal(KcDropdownOptionsComponent);\n    const optionsRef = this.overlayRef!.attach(optionsPortal);\n    \n    // Configure options component\n    optionsRef.instance.options = this.options();\n    optionsRef.instance.filteredOptions = [...this.options()];\n    optionsRef.instance.selectedValue = this._value;\n    optionsRef.instance.variant = this.variant();\n    optionsRef.instance.optionsEllipsis = this.optionsEllipsis();\n    optionsRef.instance.isFullscreenSelection = isFullscreen;\n    \n    // Set search-related properties\n    optionsRef.instance.isSearchable = this.isSearchable();\n    optionsRef.instance.searchField = this.searchField();\n    \n    // Pass the custom template\n    optionsRef.instance.customTemplate = this.optionTemplate;\n    \n    // Handle option selection\n    optionsRef.instance.optionSelected.subscribe((option: DropdownOption) => {\n      this.setValue(option.value);\n      this.closeDropdown();\n    });\n    \n    // Handle close button click for fullscreen mode\n    optionsRef.instance.closeRequested?.subscribe(() => {\n      this.closeDropdown();\n    });\n    \n    // Handle backdrop click to close dropdown\n    this.overlayRef!.backdropClick().pipe(\n      takeUntil(this.destroy$)\n    ).subscribe(() => {\n      this.closeDropdown();\n    });\n  }\n\n  closeDropdown(): void {\n    if (this.overlayRef) {\n      // Apply exit animation based on mode\n      const overlayElement = this.overlayRef.overlayElement;\n\n      if (this.isFullscreenSelection()) {\n        // Fullscreen exit animation - slide down\n        overlayElement.style.transition = 'opacity 250ms cubic-bezier(0.4, 0.0, 0.2, 1), transform 250ms cubic-bezier(0.4, 0.0, 0.2, 1)';\n        overlayElement.style.opacity = '0';\n        overlayElement.style.transform = 'translateY(100%)';\n      } else {\n        // Regular exit animation\n        overlayElement.style.transition = 'opacity 180ms cubic-bezier(0.4, 0.0, 0.2, 1), transform 180ms cubic-bezier(0.4, 0.0, 0.2, 1)';\n        overlayElement.style.opacity = '0';\n        overlayElement.style.transform = 'translateY(-10px) scale(0.98)';\n      }\n\n      // Dispose after animation completes\n      setTimeout(() => {\n        if (this.overlayRef) {\n          this.overlayRef.dispose();\n          this.overlayRef = null;\n        }\n      }, this.isFullscreenSelection() ? 250 : 180);\n    }\n\n    this.isOpen = false;\n  }\n\n  setValue(value: any): void {\n    if (this._value !== value) {\n      this._value = value;\n      this.onChange(value);\n      this.valueChange.emit(value);\n    }\n  }\n\n  // ControlValueAccessor implementation\n  writeValue(value: any): void {\n    this._value = value;\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this._internalDisabled = isDisabled;\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n\n    if (this.overlayRef) {\n      this.overlayRef.dispose();\n    }\n  }\n}\n","<div\n  class=\"dropdown-select\"\n  [ngClass]=\"[\n    size(),\n    variant(),\n    isComponentDisabled() ? 'disabled' : '',\n    isFullWidth() ? 'full-width' : '',\n    getTypographyClass()\n  ]\"\n  (click)=\"toggleDropdown()\"\n  #dropdownTrigger>\n  <div class=\"dropdown-value\">\n    <kc-icon *ngIf=\"icon()\" [iconClass]=\"icon()\" [iconSize]=\"size()\" class=\"dropdown-icon\"></kc-icon>\n    <ng-container *ngIf=\"prefixTemplateRef\">\n      <ng-container [ngTemplateOutlet]=\"prefixTemplateRef\"></ng-container>\n    </ng-container>\n    <span>{{ getDisplayValue() }}</span>\n  </div>\n  <div *ngIf=\"showToggleIcon()\" class=\"dropdown-arrow\" [class.open]=\"isOpen\">\n    <svg width=\"10\" height=\"6\" viewBox=\"0 0 10 6\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path d=\"M1 1L5 5L9 1\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n    </svg>\n  </div>\n</div> ","import { Component, EventEmitter, Input, Output, TemplateRef, OnInit, OnDestroy, ContentChild } from '@angular/core';\nimport { CommonModule, NgClass } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { Subject, debounceTime, takeUntil } from 'rxjs';\nimport { DropdownOption } from '../../dropdown-select/dropdown-select.models';\nimport { debounceTime as rxjsDebounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { ComponentSize } from '../../../types/sizing.type';\nimport { KcCheckboxComponent } from '../../checkbox/checkbox.component';\nimport { KcButtonComponent } from '../../button/button.component';\nimport { trigger, state, style, animate, transition } from '@angular/animations';\n\n@Component({\n  selector: 'kc-dropdown-multiselect-options',\n  standalone: true,\n  imports: [CommonModule, NgClass, ReactiveFormsModule, KcCheckboxComponent, KcButtonComponent],\n  templateUrl: './dropdown-multiselect-options.component.html',\n  styleUrls: ['./dropdown-multiselect-options.component.scss'],\n  animations: [\n    trigger('enterLeave', [\n      state('visible', style({\n        opacity: 1,\n        overflow: 'hidden',\n        maxWidth: '100px',\n        maxHeight: '32px',\n        margin: '0 0 0 8px'\n      })),\n      state('hidden', style({\n        opacity: 0,\n        overflow: 'hidden',\n        maxWidth: '0px',\n        maxHeight: '0px',\n        margin: '0',\n        padding: '0'\n      })),\n      transition('hidden => visible', [\n        animate('300ms ease-in-out')\n      ]),\n      transition('visible => hidden', [\n        animate('300ms ease-in-out')\n      ])\n    ]),\n    trigger('headerAnimation', [\n      state('void', style({\n        opacity: 0,\n        height: '0px',\n        minHeight: '0px',\n        padding: '0px 16px',\n        overflow: 'hidden',\n        borderBottomWidth: '0px'\n      })),\n      state('*', style({\n        opacity: 1,\n        height: '*',\n        minHeight: '42px',\n        padding: '12px 16px',\n        overflow: 'hidden',\n        borderBottomWidth: '1px'\n      })),\n      transition('void <=> *', [\n        animate('200ms ease-in-out')\n      ])\n    ])\n  ]\n})\nexport class KcDropdownMultiselectOptionsComponent implements OnInit, OnDestroy {\n  options: DropdownOption[] = [];\n  filteredOptions: DropdownOption[] = [];\n  selectedValues: any[] = [];\n  variant: string = 'secondary';\n  optionsEllipsis: boolean = false;\n  isFullscreenSelection: boolean = false;\n  isSearchable: boolean = false;\n  searchField: string = 'label';\n  minSelection: number = 0;\n  maxSelection: number = Infinity;\n  customTemplate: TemplateRef<any> | null = null;\n  @ContentChild('emptyStateTemplate') emptyStateTemplate: TemplateRef<any> | null = null;\n  size: ComponentSize = 'md';\n  \n  searchControl = new FormControl('');\n  private destroy$ = new Subject<void>();\n  \n  @Output() optionSelected = new EventEmitter<DropdownOption>();\n  @Output() closeRequested = new EventEmitter<void>();\n  @Output() searchChanged = new EventEmitter<string>();\n  @Output() clearAllRequested = new EventEmitter<void>();\n\n  ngOnInit(): void {\n    this.filteredOptions = [...this.options];\n    \n    if (this.isSearchable) {\n      this.searchControl.valueChanges.pipe(\n        debounceTime(128),\n        takeUntil(this.destroy$)\n      ).subscribe(value => {\n        const searchTerm = value || '';\n        this.filterOptions(searchTerm);\n        this.searchChanged.emit(searchTerm);\n      });\n    }\n  }\n  \n  filterOptions(searchText: string): void {\n    if (!searchText.trim()) {\n      this.filteredOptions = [...this.options];\n      return;\n    }\n    \n    const searchLower = searchText.toLowerCase();\n    this.filteredOptions = this.options.filter(option => {\n      const field = this.searchField === 'label' ? option.label : \n                   (option as any)[this.searchField] || '';\n      return String(field).toLowerCase().includes(searchLower);\n    });\n  }\n\n  isSelected(option: DropdownOption): boolean {\n    return this.selectedValues.includes(option.value);\n  }\n\n  selectOption(option: DropdownOption): void {\n    this.optionSelected.emit(option);\n    \n    // Immediately update the local selection state for UI feedback\n    const isCurrentlySelected = this.isSelected(option);\n    if (isCurrentlySelected) {\n      this.selectedValues = this.selectedValues.filter(val => val !== option.value);\n    } else {\n      if (this.selectedValues.length < this.maxSelection || this.maxSelection === Infinity) {\n        this.selectedValues = [...this.selectedValues, option.value];\n      }\n    }\n  }\n  \n  clearAll(): void {\n    this.clearAllRequested.emit();\n    // Immediately update the local state for visual feedback\n    this.selectedValues = [];\n  }\n  \n  closeFullscreen(): void {\n    this.closeRequested.emit();\n  }\n  \n  isMaxSelectionsReached(): boolean {\n    return this.selectedValues.length >= this.maxSelection && this.maxSelection !== Infinity;\n  }\n  \n  getTypographyClass(): string {\n    const typographyMap: Record<ComponentSize, string> = {\n      'xs': 'typo-text-1',\n      'sm': 'typo-text-2',\n      'md': 'typo-text-3',\n      'lg': 'typo-text-4',\n      'xlg': 'typo-text-5'\n    };\n    \n    return typographyMap[this.size];\n  }\n  \n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n} ","<div \r\n  class=\"dropdown-options\" \r\n  [ngClass]=\"[variant, isFullscreenSelection ? 'fullscreen' : '']\">\r\n  \r\n  <!-- Fullscreen header -->\r\n  <div *ngIf=\"isFullscreenSelection\" class=\"fullscreen-header\">\r\n    <div class=\"header-title typo-title-3\">Select Options</div>\r\n    <button class=\"header-close\" (click)=\"closeFullscreen()\">\r\n      <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n        <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\r\n        <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\r\n      </svg>\r\n    </button>\r\n  </div>\r\n  \r\n  <!-- Options actions container - only show when searchable or has selections -->\r\n  <div *ngIf=\"isSearchable || selectedValues.length > 0\" \r\n       [@headerAnimation]\r\n       class=\"options-actions\">\r\n    <!-- Search container (always visible) -->\r\n    <div class=\"search-container\">\r\n      <input \r\n        *ngIf=\"isSearchable\"\r\n        type=\"text\" \r\n        class=\"search-input\"\r\n        [formControl]=\"searchControl\"\r\n        placeholder=\"Search...\"\r\n        [ngClass]=\"getTypographyClass()\"\r\n        autocomplete=\"off\">\r\n    </div>\r\n    \r\n    <!-- Clear selections button with animation -->\r\n    <div class=\"clear-all-btn-enter-exit\" [@enterLeave]=\"selectedValues.length > 0 ? 'visible' : 'hidden'\">\r\n      <kc-button\r\n        *ngIf=\"selectedValues.length > 0\" \r\n        [text]=\"'Clear all'\"\r\n        [role]=\"'neutral'\"\r\n        [size]=\"'sm'\"\r\n        (buttonClick)=\"clearAll()\"\r\n        class=\"clear-all-btn\"\r\n      ></kc-button>\r\n    </div>\r\n  </div>\r\n  \r\n  <!-- Options list with fixed height -->\r\n  <div class=\"options-list-container\">\r\n    <div class=\"options-list\">\r\n      <ng-container *ngIf=\"filteredOptions.length > 0; else noResults\">\r\n        <div \r\n          *ngFor=\"let option of filteredOptions\"\r\n          class=\"option-item\"\r\n          [class.selected]=\"isSelected(option)\"\r\n          [class.disabled]=\"!isSelected(option) && isMaxSelectionsReached()\"\r\n          [class.ellipsis]=\"optionsEllipsis\"\r\n          [ngClass]=\"getTypographyClass()\"\r\n          (click)=\"!isMaxSelectionsReached() || isSelected(option) ? selectOption(option) : null\">\r\n          \r\n          <!-- Custom template if provided -->\r\n          <ng-container *ngIf=\"customTemplate; else defaultTemplate\">\r\n            <ng-container *ngTemplateOutlet=\"customTemplate; context: { \r\n              $implicit: option, \r\n              selected: isSelected(option)\r\n            }\"></ng-container>\r\n          </ng-container>\r\n          \r\n          <!-- Default template -->\r\n          <ng-template #defaultTemplate>\r\n            <kc-checkbox \r\n              [isChecked]=\"isSelected(option)\"\r\n              [size]=\"size\"\r\n              [isDisabled]=\"!isSelected(option) && isMaxSelectionsReached()\"\r\n            ></kc-checkbox>\r\n            <span class=\"option-label\">{{ option.label }}</span>\r\n          </ng-template>\r\n        </div>\r\n      </ng-container>\r\n      \r\n      <!-- No results message -->\r\n      <ng-template #noResults>\r\n        <div class=\"no-results\" [ngClass]=\"getTypographyClass()\">\r\n          <!-- Use projected empty state template when provided -->\r\n          <ng-content select=\"[emptyStateTemplate]\" *ngIf=\"emptyStateTemplate\"></ng-content>\r\n          \r\n          <!-- Default empty state template when no projection provided -->\r\n          <ng-container *ngIf=\"!emptyStateTemplate\">\r\n            <div class=\"typo-caption\">No options found</div>\r\n          </ng-container>\r\n        </div>\r\n      </ng-template>\r\n    </div>\r\n  </div>\r\n  \r\n  <!-- Selection summary for fullscreen mode -->\r\n  <div *ngIf=\"isFullscreenSelection\" class=\"selection-summary\">\r\n    <div class=\"selection-info\">\r\n      <span class=\"typo-text-2\" *ngIf=\"selectedValues.length > 0\">Selected: {{ selectedValues.length }}</span>\r\n      <span *ngIf=\"maxSelection < 9999999\" class=\"typo-text-2\">(Max: {{ maxSelection }})</span>\r\n    </div>\r\n    <kc-button\r\n      [text]=\"'Apply'\"\r\n      [variant]=\"variant === 'tertiary' || variant === 'raw' ? 'primary' : (variant === 'primary' || variant === 'secondary' ? variant : 'primary')\"\r\n      [size]=\"size\"\r\n      [isDisabled]=\"selectedValues.length < minSelection\"\r\n      (buttonClick)=\"closeFullscreen()\"\r\n    ></kc-button>\r\n  </div>\r\n</div> ","import { \n  Component, \n  ElementRef, \n  OnDestroy, \n  OnInit, \n  ViewChild, \n  computed, \n  inject, \n  input, \n  output, \n  ContentChild, \n  TemplateRef, \n  signal \n} from '@angular/core';\nimport { CommonModule, NgClass } from '@angular/common';\nimport { Overlay, OverlayModule, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { Subject, takeUntil } from 'rxjs';\nimport { ResponsiveService } from '../../services/responsive.service';\n\nimport { KcDropdownMultiselectOptionsComponent } from './dropdown-multiselect-options/dropdown-multiselect-options.component';\nimport { DropdownMultiselectConfig } from './dropdown-multiselect.models';\nimport { DropdownOption } from '../dropdown-select/dropdown-select.models';\nimport { DropdownVariant } from '../../types/dropdown-variant.type';\nimport { ComponentSize } from '../../types/sizing.type';\nimport { KcIconComponent } from '../../../icons/icon/icon.component';\n\n@Component({\n  selector: 'kc-dropdown-multiselect',\n  standalone: true,\n  imports: [CommonModule, NgClass, FormsModule, ReactiveFormsModule, OverlayModule, KcIconComponent],\n  templateUrl: './dropdown-multiselect.component.html',\n  styleUrls: ['./dropdown-multiselect.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: KcDropdownMultiselectComponent,\n      multi: true\n    }\n  ]\n})\nexport class KcDropdownMultiselectComponent implements ControlValueAccessor, OnInit, OnDestroy {\n  // Constants\n  private readonly destroy$ = new Subject<void>();\n  private readonly overlay = inject(Overlay);\n  private readonly responsiveService = inject(ResponsiveService);\n\n  // Signals\n  options = input<DropdownOption[]>([]);\n  placeholder = input<string>('Select options');\n  size = input<ComponentSize>('md');\n  variant = input<DropdownVariant>('secondary');\n  isFullWidth = input<boolean>(false);\n  isDisabled = input<boolean>(false);\n  optionsEllipsis = input<boolean>(false);\n  isFullscreenSelection = input<boolean>(false);\n  useContentWidth = input<boolean>(true);\n  maxWidth = input<string | null>(null);\n  icon = input<string>('');\n  showToggleIcon = input<boolean>(true);\n  \n  // Multi-select specific inputs\n  config = input<DropdownMultiselectConfig>({ minSelection: 0, maxSelection: Infinity });\n  selectionCountText = input<string>('Selected items');\n  \n  // Search-related inputs\n  isSearchable = input<boolean>(false);\n  searchField = input<string>('label');\n\n  // Custom item template\n  @ContentChild('optionTemplate') optionTemplate: TemplateRef<any> | null = null;\n  @ContentChild('prefixTemplate') prefixTemplateRef: TemplateRef<any> | null = null;\n  @ContentChild('emptyStateTemplate') emptyStateTemplateRef: TemplateRef<any> | null = null;\n\n  // Output signals\n  valueChange = output<any[]>();\n  searchChange = output<string>();\n  clearAll = output<void>();\n\n  // Other properties\n  @ViewChild('dropdownTrigger') dropdownTrigger!: ElementRef;\n  isOpen = false;\n  selectedValues = signal<any[]>([]);\n  private overlayRef: OverlayRef | null = null;\n  private onChange: (value: any[]) => void = () => {};\n  private onTouched: () => void = () => {};\n\n  // We modify the isDisabled check to consider both the input signal and our internal state\n  private _internalDisabled = false;\n\n  ngOnInit(): void {\n    // No setup needed here - we'll handle the responsive behavior in openDropdown\n  }\n\n  // Helper method to check disabled state combining both sources\n  isComponentDisabled(): boolean {\n    return this.isDisabled() || this._internalDisabled;\n  }\n\n  // Check if we've reached max selections\n  isMaxSelectionsReached(): boolean {\n    return this.selectedValues().length >= (this.config().maxSelection || Infinity);\n  }\n\n  // Get the display value for the dropdown\n  getDisplayValue(): string {\n    const selectedCount = this.selectedValues().length;\n    \n    if (selectedCount === 0) {\n      return this.placeholder();\n    }\n\n    if (selectedCount === 1) {\n      const selectedOption = this.options().find(option => option.value === this.selectedValues()[0]);\n      return selectedOption ? selectedOption.label : this.placeholder();\n    }\n\n    return `${selectedCount} ${this.selectionCountText()}`;\n  }\n  \n  // Map dropdown size to typography class\n  getTypographyClass(): string {\n    const typographyMap: Record<ComponentSize, string> = {\n      'xs': 'typo-text-1',\n      'sm': 'typo-text-2',\n      'md': 'typo-text-3',\n      'lg': 'typo-text-4',\n      'xlg': 'typo-text-5'\n    };\n    \n    return typographyMap[this.size()];\n  }\n\n  // Methods\n  toggleDropdown(): void {\n    if (this.isComponentDisabled()) {\n      return;\n    }\n\n    this.isOpen ? this.closeDropdown() : this.openDropdown();\n  }\n\n  openDropdown(): void {\n    this.onTouched();\n\n    if (this.overlayRef) {\n      return;\n    }\n\n    // Check both the provided isFullscreenSelection and the screen size\n    // If either is true, use fullscreen mode\n    const shouldUseFullscreen = this.isFullscreenSelection() || this.responsiveService.isExtraSmallScreen();\n\n    // Different overlay creation strategy based on mode\n    if (shouldUseFullscreen) {\n      this.openFullscreenDropdown();\n    } else {\n      this.openRegularDropdown();\n    }\n\n    this.isOpen = true;\n  }\n\n  private openRegularDropdown(): void {\n    const positionStrategy = this.overlay\n      .position()\n      .flexibleConnectedTo(this.dropdownTrigger)\n      .withPositions([\n        {\n          originX: 'start',\n          originY: 'bottom',\n          overlayX: 'start',\n          overlayY: 'top',\n          offsetY: 4\n        },\n        {\n          originX: 'start',\n          originY: 'top',\n          overlayX: 'start',\n          overlayY: 'bottom',\n          offsetY: -4\n        }\n      ]);\n\n    // Get parent width for minimum width constraint\n    const parentWidth = this.dropdownTrigger.nativeElement.offsetWidth;\n    \n    // Configure overlay options based on the useContentWidth setting\n    const overlayConfig: any = {\n      positionStrategy,\n      minWidth: parentWidth, // Always ensure minimum width matches parent\n      scrollStrategy: this.overlay.scrollStrategies.close(),\n      hasBackdrop: true,\n      backdropClass: 'cdk-overlay-transparent-backdrop',\n      panelClass: ['dropdown-overlay-panel', 'dropdown-animated-panel']\n    };\n    \n    // Only set fixed width if useContentWidth is false\n    if (!this.useContentWidth()) {\n      overlayConfig.width = parentWidth;\n    }\n    \n    // Apply maxWidth if provided\n    if (this.maxWidth()) {\n      overlayConfig.maxWidth = this.maxWidth();\n    }\n    \n    this.overlayRef = this.overlay.create(overlayConfig);\n\n    // Apply entrance animation\n    const overlayElement = this.overlayRef!.overlayElement;\n    overlayElement.style.opacity = '0';\n    overlayElement.style.transform = 'translateY(-10px) scale(0.98)';\n\n    this.attachOptionsComponent();\n\n    // Run the entrance animation after component is attached\n    requestAnimationFrame(() => {\n      overlayElement.style.transition = 'opacity 200ms cubic-bezier(0.25, 0.8, 0.25, 1), transform 200ms cubic-bezier(0.25, 0.8, 0.25, 1)';\n      overlayElement.style.opacity = '1';\n      overlayElement.style.transform = 'translateY(0) scale(1)';\n    });\n  }\n\n  private openFullscreenDropdown(): void {\n    const positionStrategy = this.overlay.position()\n      .global()\n      .centerHorizontally()\n      .bottom();\n\n    this.overlayRef = this.overlay.create({\n      positionStrategy,\n      width: '100%',\n      height: '75vh',\n      scrollStrategy: this.overlay.scrollStrategies.block(),\n      hasBackdrop: true,\n      backdropClass: 'cdk-overlay-dark-backdrop',\n      panelClass: ['dropdown-overlay-fullscreen', 'dropdown-animated-fullscreen']\n    });\n\n    // Apply fullscreen entrance animation - slide from bottom\n    const overlayElement = this.overlayRef!.overlayElement;\n    overlayElement.style.opacity = '0';\n    overlayElement.style.transform = 'translateY(100%)';\n    \n    // Add overflow hidden to prevent horizontal scrolling\n    overlayElement.style.overflowX = 'hidden';\n\n    this.attachOptionsComponent(true);\n\n    // Run the entrance animation after component is attached\n    requestAnimationFrame(() => {\n      overlayElement.style.transition = 'opacity 300ms cubic-bezier(0.25, 0.8, 0.25, 1), transform 300ms cubic-bezier(0.25, 0.8, 0.25, 1)';\n      overlayElement.style.opacity = '1';\n      overlayElement.style.transform = 'translateY(0)';\n    });\n  }\n\n  private attachOptionsComponent(isFullscreen = false): void {\n    // Create and attach the dropdown options component\n    const optionsPortal = new ComponentPortal(KcDropdownMultiselectOptionsComponent);\n    const optionsRef = this.overlayRef!.attach(optionsPortal);\n\n    // Configure options component\n    optionsRef.instance.options = this.options();\n    optionsRef.instance.selectedValues = this.selectedValues();\n    optionsRef.instance.variant = this.variant();\n    optionsRef.instance.optionsEllipsis = this.optionsEllipsis();\n    optionsRef.instance.isFullscreenSelection = isFullscreen;\n    optionsRef.instance.minSelection = this.config().minSelection || 0;\n    optionsRef.instance.maxSelection = this.config().maxSelection || Infinity;\n    optionsRef.instance.size = this.size();\n    \n    // Set search-related properties\n    optionsRef.instance.isSearchable = this.isSearchable();\n    optionsRef.instance.searchField = this.searchField();\n    \n    // Pass the templates\n    optionsRef.instance.customTemplate = this.optionTemplate;\n\n    // Handle option selection\n    optionsRef.instance.optionSelected.subscribe((option: DropdownOption) => {\n      this.toggleOption(option);\n    });\n\n    // Handle search change\n    optionsRef.instance.searchChanged.subscribe((searchTerm: string) => {\n      this.searchChange.emit(searchTerm);\n    });\n\n    // Handle clear all\n    optionsRef.instance.clearAllRequested.subscribe(() => {\n      this.clearAllSelections();\n    });\n\n    // Handle close button click for fullscreen mode\n    optionsRef.instance.closeRequested?.subscribe(() => {\n      this.closeDropdown();\n    });\n\n    // Handle backdrop click to close dropdown\n    this.overlayRef!.backdropClick().pipe(\n      takeUntil(this.destroy$)\n    ).subscribe(() => {\n      this.closeDropdown();\n    });\n  }\n\n  clearAllSelections(): void {\n    this.setValues([]);\n    this.clearAll.emit();\n  }\n\n  closeDropdown(): void {\n    if (this.overlayRef) {\n      // Apply exit animation based on mode\n      const overlayElement = this.overlayRef.overlayElement;\n      \n      if (this.isFullscreenSelection()) {\n        // Fullscreen exit animation - slide down\n        overlayElement.style.transition = 'opacity 250ms cubic-bezier(0.4, 0.0, 0.2, 1), transform 250ms cubic-bezier(0.4, 0.0, 0.2, 1)';\n        overlayElement.style.opacity = '0';\n        overlayElement.style.transform = 'translateY(100%)';\n      } else {\n        // Regular exit animation\n        overlayElement.style.transition = 'opacity 180ms cubic-bezier(0.4, 0.0, 0.2, 1), transform 180ms cubic-bezier(0.4, 0.0, 0.2, 1)';\n        overlayElement.style.opacity = '0';\n        overlayElement.style.transform = 'translateY(-10px) scale(0.98)';\n      }\n\n      // Dispose after animation completes\n      setTimeout(() => {\n        if (this.overlayRef) {\n          this.overlayRef.dispose();\n          this.overlayRef = null;\n        }\n      }, this.isFullscreenSelection() ? 250 : 180);\n    }\n\n    this.isOpen = false;\n  }\n\n  toggleOption(option: DropdownOption): void {\n    const currentValues = [...this.selectedValues()];\n    const index = currentValues.findIndex(value => value === option.value);\n    \n    // If the option is already selected, remove it\n    if (index !== -1) {\n      currentValues.splice(index, 1);\n      this.setValues(currentValues);\n      return;\n    }\n    \n    // Check if max selections is reached\n    if (this.isMaxSelectionsReached()) {\n      return;\n    }\n    \n    // Add the option to selected values\n    currentValues.push(option.value);\n    this.setValues(currentValues);\n  }\n\n  setValues(values: any[]): void {\n    this.selectedValues.set(values);\n    this.onChange(values);\n    this.valueChange.emit(values);\n  }\n\n  // ControlValueAccessor implementation\n  writeValue(values: any[]): void {\n    this.selectedValues.set(values || []);\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this._internalDisabled = isDisabled;\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n\n    if (this.overlayRef) {\n      this.overlayRef.dispose();\n    }\n  }\n} ","<div\r\n  class=\"dropdown-select\"\r\n  [ngClass]=\"[\r\n    size(),\r\n    variant(),\r\n    isComponentDisabled() ? 'disabled' : '',\r\n    isFullWidth() ? 'full-width' : '',\r\n    isOpen ? 'open' : '',\r\n    getTypographyClass()\r\n  ]\"\r\n  (click)=\"toggleDropdown()\"\r\n  #dropdownTrigger>\r\n  <div class=\"dropdown-value\">\r\n    <ng-container *ngIf=\"icon()\">\r\n      <kc-icon [iconClass]=\"icon()\" [iconSize]=\"size()\" class=\"dropdown-icon\"></kc-icon>\r\n    </ng-container>\r\n    <ng-container *ngIf=\"prefixTemplateRef\">\r\n      <ng-template [ngTemplateOutlet]=\"prefixTemplateRef\"></ng-template>\r\n    </ng-container>\r\n    <!-- When no selections or just one, show text -->\r\n    <ng-container *ngIf=\"selectedValues().length <= 1\">\r\n      <span>{{ getDisplayValue() }}</span>\r\n    </ng-container>\r\n    \r\n    <!-- When multiple selections, show count bubble and text -->\r\n    <ng-container *ngIf=\"selectedValues().length > 1\">\r\n      <span class=\"selection-count\">\r\n        {{ selectedValues().length }}\r\n      </span>\r\n      <span class=\"selection-text\">{{ selectionCountText() }}</span>\r\n    </ng-container>\r\n  </div>\r\n  <div *ngIf=\"showToggleIcon()\" class=\"dropdown-icon\">\r\n    <svg width=\"10\" height=\"6\" viewBox=\"0 0 10 6\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n      <path d=\"M1 1L5 5L9 1\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n    </svg>\r\n  </div>\r\n</div> ","import { Component, input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { ComponentSize } from '../../types/sizing.type';\r\nimport { ChipVariant } from '../../types/chip-variant.type';\r\nimport { KcIconComponent } from '../../../icons/icon/icon.component';\r\n\r\n@Component({\r\n  selector: 'kc-chip',\r\n  standalone: true,\r\n  imports: [NgClass, KcIconComponent],\r\n  template: `\r\n    <div\r\n      class=\"app-chip\"\r\n      [ngClass]=\"[\r\n        variant(),\r\n        size(),\r\n        getTypographyClass()\r\n      ]\"\r\n    >\r\n      <div class=\"chip-content\">\r\n        @if (prefixIcon()) {\r\n          <kc-icon [iconClass]=\"prefixIcon()!\" [color]=\"prefixIconColor()\"></kc-icon>\r\n        }\r\n        @if (text()) {\r\n          <span class=\"chip-text\">{{ text() }}</span>\r\n        }\r\n        @if (suffixIcon()) {\r\n          <kc-icon [iconClass]=\"suffixIcon()!\" [color]=\"suffixIconColor()\"></kc-icon>\r\n        }\r\n      </div>\r\n    </div>\r\n  `,\r\n  styleUrls: ['./chip.component.scss']\r\n})\r\nexport class KcChipComponent {\r\n  text = input<string>('');\r\n  variant = input<ChipVariant>('neutral');\r\n  size = input<ComponentSize>('md');\r\n  prefixIcon = input<string | undefined>(undefined);\r\n  suffixIcon = input<string | undefined>(undefined);\r\n  prefixIconColor = input<string | undefined>(undefined);\r\n  suffixIconColor = input<string | undefined>(undefined);\r\n  \r\n  getTypographyClass(): string {\r\n    // Map chip size to appropriate typography class\r\n    const typographyMap: Record<ComponentSize, string> = {\r\n      'xs': 'typo-button-small',\r\n      'sm': 'typo-button-small',\r\n      'md': 'typo-button-medium',\r\n      'lg': 'typo-button-large',\r\n      'xlg': 'typo-button-large'\r\n    };\r\n    \r\n    return typographyMap[this.size()];\r\n  }\r\n} ","import { Component, Input, Output, EventEmitter, ElementRef, AfterViewInit, ViewChild, OnChanges, SimpleChanges, AfterViewChecked, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KcIconComponent } from '../../../icons/icon/icon.component';\nimport { SwitchNavigationOption, SwitchNavigationVariant } from './switch-navigation.types';\nimport { ComponentSize } from '../../types/sizing.type';\n\n@Component({\n  selector: 'kc-switch-navigation',\n  templateUrl: './switch-navigation.component.html',\n  styleUrls: ['./switch-navigation.component.scss'],\n  standalone: true,\n  imports: [CommonModule, KcIconComponent],\n})\nexport class KcSwitchNavigationComponent implements AfterViewInit, AfterViewChecked, OnChanges {\n  @Input() options: SwitchNavigationOption[] = [];\n  @Input() currentActive: string = '';\n  @Input() disabled: boolean = false;\n  @Input() variant: SwitchNavigationVariant = 'primary';\n  @Input() size: ComponentSize = 'md';\n\n  @Output() selectOption = new EventEmitter<string>();\n\n  @ViewChild('selectionIndicator') selectionIndicator!: ElementRef;\n  @ViewChild('navigationContainer') navigationContainer!: ElementRef;\n  \n  private indicatorInitialized = false;\n  private updatePending = false;\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  ngAfterViewInit(): void {\n    this.updateSelectionIndicator();\n  }\n  \n  ngAfterViewChecked(): void {\n    if (this.updatePending || (!this.indicatorInitialized && this.navigationContainer && this.selectionIndicator)) {\n      this.updateSelectionIndicator();\n      this.updatePending = false;\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if ((changes['currentActive'] || changes['options'])) {\n      this.updatePending = true;\n      \n      // Reset indicator flag if options change\n      if (changes['options']) {\n        this.indicatorInitialized = false;\n      }\n    }\n  }\n\n  onSelect(key: string): void {\n    if (this.disabled || this.options.find(option => option.key === key)?.disabled) {\n      return;\n    }\n    this.selectOption.emit(key);\n  }\n\n  private updateSelectionIndicator(): void {\n    if (!this.navigationContainer || !this.selectionIndicator || !this.currentActive) {\n      return;\n    }\n\n    // Use a slightly longer timeout for more reliable DOM updates\n    setTimeout(() => {\n      const container = this.navigationContainer.nativeElement;\n      const currentElement = container.querySelector(`[data-key=\"${this.currentActive}\"]`);\n      \n      if (currentElement) {\n        const indicator = this.selectionIndicator.nativeElement;\n        const containerRect = container.getBoundingClientRect();\n        const elementRect = currentElement.getBoundingClientRect();\n        \n        // Position the indicator relative to the container\n        indicator.style.width = `${elementRect.width}px`;\n        indicator.style.height = `${elementRect.height}px`;\n        indicator.style.transform = `translateX(${elementRect.left - containerRect.left}px)`;\n        this.indicatorInitialized = true;\n        this.cdr.detectChanges();\n      }\n    }, 50); // Increased timeout for better reliability\n  }\n} ","<div class=\"kc-switch-navigation\" [class.disabled]=\"disabled\" [ngClass]=\"size + ' ' + variant\">\r\n  <div class=\"navigation-container\" #navigationContainer>\r\n    <div class=\"selection-indicator\" #selectionIndicator></div>\r\n    <button\r\n      *ngFor=\"let option of options\"\r\n      class=\"option-button\"\r\n      [class.active]=\"option.key === currentActive\"\r\n      [class.disabled]=\"disabled || option.disabled\"\r\n      [attr.data-key]=\"option.key\"\r\n      (click)=\"onSelect(option.key)\"\r\n    >\r\n      <kc-icon \r\n        *ngIf=\"option.prefixIcon\" \r\n        [iconClass]=\"option.prefixIcon\"\r\n        [size]=\"size\"\r\n      ></kc-icon>\r\n      <span class=\"option-title\" [ngClass]=\"'typo-button-' + size\">{{ option.title }}</span>\r\n    </button>\r\n  </div>\r\n</div> ","import {\r\n  Component,\r\n  Input,\r\n  ViewEncapsulation,\r\n  signal,\r\n  input,\r\n  output,\r\n  EventEmitter,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n  ControlValueAccessor,\r\n  FormsModule,\r\n  NG_VALUE_ACCESSOR,\r\n  ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { KcIconComponent } from '../../icons/icon/icon.component';\r\nimport { first } from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'kc-input',\r\n  standalone: true,\r\n  imports: [CommonModule, FormsModule, ReactiveFormsModule, KcIconComponent],\r\n  templateUrl: './kc-input.component.html',\r\n  styleUrls: ['./kc-input.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: KcInputComponent,\r\n      multi: true,\r\n    },\r\n  ],\r\n  host: {\r\n    '[class.isFullWidth]': 'isFullWidth()',\r\n  },\r\n})\r\nexport class KcInputComponent implements ControlValueAccessor {\r\n  // Using signal inputs as requested\r\n  label = input<string | undefined>(undefined);\r\n  prefixIcon = input<string | undefined>(undefined);\r\n  suffixIcon = input<string | undefined>(undefined);\r\n  prefixLabelIcon = input<string | undefined>(undefined);\r\n  suffixLabelIcon = input<string | undefined>(undefined);\r\n  prefixIconColor = input<string | undefined>(undefined);\r\n  suffixIconColor = input<string | undefined>(undefined);\r\n  prefixLabelIconColor = input<string | undefined>(undefined);\r\n  suffixLabelIconColor = input<string | undefined>(undefined);\r\n  isFullWidth = input<boolean>(false);\r\n  isDisabled = input<boolean>(false);\r\n  placeholder = input<string | undefined>(undefined);\r\n\r\n  // New inputs\r\n  type = input<'text' | 'number' | 'password'>('text');\r\n  min = input<number | undefined>(undefined);\r\n  max = input<number | undefined>(undefined);\r\n\r\n  // External validation inputs\r\n  isValid = input<boolean>(true);\r\n  invalidReason = input<string | undefined>(undefined);\r\n  prepadInvalidReason = input<boolean>(false);\r\n\r\n  // Output events\r\n  valueChange = output<any>();\r\n  blur = output<void>();\r\n  focus = output<void>();\r\n  keyup = output<KeyboardEvent>();\r\n  keydown = output<KeyboardEvent>();\r\n  validationChange = output<boolean>();\r\n\r\n  // For ControlValueAccessor implementation\r\n  private _value = signal<any>(null);\r\n  private _onChange: (value: any) => void = () => {};\r\n  private _onTouched: () => void = () => {};\r\n  private _isDirty = signal<boolean>(false);\r\n  private _previousValidState = true;\r\n\r\n  get value() {\r\n    return this._value();\r\n  }\r\n\r\n  set value(val: any) {\r\n    this._value.set(val);\r\n    this._onChange(val);\r\n    this.valueChange.emit(val);\r\n    this._isDirty.set(true);\r\n  }\r\n\r\n  // ControlValueAccessor implementation\r\n  writeValue(value: any): void {\r\n    this._value.set(value);\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this._onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this._onTouched = fn;\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    // No explicit use here since we're using signal inputs\r\n  }\r\n\r\n  onInputChange(event: Event): void {\r\n    const inputElement = event.target as HTMLInputElement;\r\n    let value: string | number = inputElement.value;\r\n\r\n    // Convert to number if type is number\r\n    if (this.type() === 'number' && value !== '') {\r\n      const parsedNumber = Number(value);\r\n      // Ensure we have a valid number\r\n      if (!isNaN(parsedNumber)) {\r\n        value = parsedNumber;\r\n      } else {\r\n        // Handle invalid number input - could keep as string or convert to null/undefined\r\n        // depending on requirements\r\n        value = '';\r\n      }\r\n    }\r\n\r\n    this.value = value;\r\n  }\r\n\r\n  onBlur(): void {\r\n    this._onTouched();\r\n    this.blur.emit();\r\n  }\r\n\r\n  onFocus(): void {\r\n    this.focus.emit();\r\n  }\r\n\r\n  onKeyUp(event: KeyboardEvent): void {\r\n    this.keyup.emit(event);\r\n  }\r\n\r\n  onKeyDown(event: KeyboardEvent): void {\r\n    this.keydown.emit(event);\r\n  }\r\n\r\n  // Check if the input is valid based on external isValid input and min/max constraints\r\n  isValidInput(): boolean {\r\n    // First check min/max constraints regardless of external isValid input\r\n    const hasMinMaxErrors = this.hasMinMaxError();\r\n    const externallyValid = this.isValid();\r\n    const isCurrentlyValid = !hasMinMaxErrors && externallyValid;\r\n\r\n    // Emit validation change event if the state changed\r\n    if (this._previousValidState !== isCurrentlyValid) {\r\n      this._previousValidState = isCurrentlyValid;\r\n      this.validationChange.emit(isCurrentlyValid);\r\n    }\r\n\r\n    return isCurrentlyValid;\r\n  }\r\n\r\n  // Helper method to check min/max constraints\r\n  hasMinMaxError(): boolean {\r\n    if (this.value === null || this.value === undefined || this.value === '') {\r\n      return false;\r\n    }\r\n\r\n    if (this.type() === 'number') {\r\n      const numberValue = Number(this.value);\r\n\r\n      if (isNaN(numberValue)) {\r\n        return true;\r\n      }\r\n\r\n      const minValue = this.min();\r\n      const maxValue = this.max();\r\n\r\n      if (minValue !== undefined && numberValue < minValue) {\r\n        return true;\r\n      }\r\n\r\n      if (maxValue !== undefined && numberValue > maxValue) {\r\n        return true;\r\n      }\r\n    } else {\r\n      // For text input, min/max refers to length\r\n      const textValue = String(this.value);\r\n\r\n      const minLength = this.min();\r\n      const maxLength = this.max();\r\n\r\n      if (minLength !== undefined && textValue.length < minLength) {\r\n        return true;\r\n      }\r\n\r\n      if (maxLength !== undefined && textValue.length > maxLength) {\r\n        return true;\r\n      }\r\n    }\r\n\r\n    return false;\r\n  }\r\n\r\n  // Dirty state control\r\n  isDirty(): boolean {\r\n    return this._isDirty();\r\n  }\r\n\r\n  markAsDirty(): void {\r\n    this._isDirty.set(true);\r\n  }\r\n\r\n  markAsPristine(): void {\r\n    this._isDirty.set(false);\r\n  }\r\n\r\n  protected readonly first = first;\r\n}\r\n","<div\r\n  class=\"kc-input-container\"\r\n  [class.full-width]=\"isFullWidth()\"\r\n  [class.disabled]=\"isDisabled()\"\r\n  [class.hasPrefixIcon]=\"!!prefixIcon()\"\r\n  [class.hasSuffixIcon]=\"!!suffixIcon()\"\r\n  [class.invalid]=\"!isValidInput()\"\r\n>\r\n  <label *ngIf=\"label()\" class=\"kc-input-label typo-title-1\">\r\n    <div class=\"kc-label-content\">\r\n      <div class=\"kc-label-main\">\r\n        <span\r\n          *ngIf=\"prefixLabelIcon()\"\r\n          class=\"kc-label-icon kc-label-prefix-icon\"\r\n        >\r\n          <kc-icon\r\n            [iconClass]=\"prefixLabelIcon()!\"\r\n            [color]=\"prefixLabelIconColor()\"\r\n          ></kc-icon>\r\n        </span>\r\n        <span class=\"kc-label-text\">{{ label() }}</span>\r\n      </div>\r\n      <span\r\n        *ngIf=\"suffixLabelIcon()\"\r\n        class=\"kc-label-icon kc-label-suffix-icon\"\r\n      >\r\n        <kc-icon\r\n          [iconClass]=\"suffixLabelIcon()!\"\r\n          [color]=\"suffixLabelIconColor()\"\r\n        ></kc-icon>\r\n      </span>\r\n    </div>\r\n  </label>\r\n  <div class=\"kc-input-wrapper\">\r\n    <span *ngIf=\"prefixIcon()\" class=\"kc-input-icon kc-input-prefix-icon\">\r\n      <kc-icon\r\n        [iconClass]=\"prefixIcon()!\"\r\n        [color]=\"prefixIconColor()\"\r\n      ></kc-icon>\r\n    </span>\r\n    <input\r\n      class=\"kc-input typo-title-2\"\r\n      [ngModel]=\"value\"\r\n      (ngModelChange)=\"value = $event\"\r\n      (blur)=\"onBlur()\"\r\n      (focus)=\"onFocus()\"\r\n      (keyup)=\"onKeyUp($event)\"\r\n      (keydown)=\"onKeyDown($event)\"\r\n      [disabled]=\"isDisabled()\"\r\n      [placeholder]=\"placeholder() || ''\"\r\n      [attr.aria-invalid]=\"!isValidInput()\"\r\n      [attr.aria-disabled]=\"isDisabled()\"\r\n      [attr.aria-label]=\"label() || placeholder() || 'Input field'\"\r\n      [attr.type]=\"type()\"\r\n      [attr.min]=\"type() === 'number' && min() !== undefined ? min() : null\"\r\n      [attr.max]=\"type() === 'number' && max() !== undefined ? max() : null\"\r\n      [attr.minlength]=\"\r\n        (type() === 'text' || type() === 'password') && min() !== undefined\r\n          ? min()\r\n          : null\r\n      \"\r\n      [attr.maxlength]=\"\r\n        (type() === 'text' || type() === 'password') && max() !== undefined\r\n          ? max()\r\n          : null\r\n      \"\r\n    />\r\n    <div class=\"kc-input-right-content\">\r\n      <span *ngIf=\"suffixIcon()\" class=\"kc-input-icon kc-input-suffix-icon\">\r\n        <kc-icon\r\n          [iconClass]=\"suffixIcon()!\"\r\n          [color]=\"suffixIconColor()\"\r\n        ></kc-icon>\r\n      </span>\r\n      <ng-content select=\"[rightSideSlot]\"></ng-content>\r\n    </div>\r\n  </div>\r\n  <!-- Error message display is hidden for now but structure preserved for future use\r\n  <div *ngIf=\"!isValidInput() && invalidReason()\" class=\"kc-input-error-message\" aria-live=\"polite\">\r\n    {{ invalidReason() }}\r\n  </div>\r\n  -->\r\n  @if (prepadInvalidReason()) {\r\n  <div class=\"kc-input-error-message-prepadded\" aria-live=\"polite\">\r\n    {{ isValidInput() ? \"\" : invalidReason() }}\r\n  </div>\r\n  } @else {\r\n  <div\r\n    *ngIf=\"!isValidInput() && invalidReason()\"\r\n    class=\"kc-input-error-message\"\r\n    aria-live=\"polite\"\r\n  >\r\n    {{ invalidReason() }}\r\n  </div>\r\n  }\r\n</div>\r\n","import { Component, ContentChild, ElementRef, input, AfterContentInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { KcIconComponent } from '../icons/icon/icon.component';\r\nimport { ComponentSize } from '../form-controls/types/sizing.type';\r\n\r\n@Component({\r\n  selector: 'kc-card',\r\n  standalone: true,\r\n  imports: [CommonModule, KcIconComponent],\r\n  templateUrl: './kc-card.component.html',\r\n  styleUrls: ['./kc-card.component.scss']\r\n})\r\nexport class KcCardComponent implements AfterContentInit {\r\n  // Structure Control\r\n  showHeader = input<boolean>(true);\r\n  isClosable = input<boolean>(false);\r\n  showHeaderSeparator = input<boolean>(true);\r\n\r\n  // Header Content\r\n  prefixIcon = input<string | undefined>(undefined);\r\n  title = input<string | undefined>(undefined);\r\n\r\n  // Size (affects title typography)\r\n  size = input<ComponentSize>('md');\r\n\r\n  // Width Control\r\n  fullWidth = input<boolean>(true);\r\n  width = input<string | undefined>(undefined);\r\n  minWidth = input<string | undefined>(undefined);\r\n  maxWidth = input<string | undefined>(undefined);\r\n  maxHeight = input<string | undefined>(undefined);\r\n\r\n  // Content check\r\n  @ContentChild('footerContent') footerContent: ElementRef | undefined;\r\n  hasFooterContent = false;\r\n\r\n  // Component size constants for the template\r\n  componentSizes: Record<string, ComponentSize> = {\r\n    XS: 'xs',\r\n    SM: 'sm',\r\n    MD: 'md',\r\n    LG: 'lg',\r\n    XLG: 'xlg'\r\n  };\r\n\r\n  ngAfterContentInit() {\r\n    // Check if footer content is present\r\n    setTimeout(() => {\r\n      const footerElement = document.querySelector('[footerSlot]');\r\n      this.hasFooterContent = !!footerElement && footerElement.children.length > 0;\r\n    });\r\n  }\r\n\r\n  // Event Handlers\r\n  onClose(): void {\r\n    // This is a stub for close functionality\r\n    // Implementations would typically emit an event here\r\n    console.log('Close button clicked');\r\n  }\r\n\r\n  // Helper methods to determine typography classes\r\n  getTitleClass(): string {\r\n    switch (this.size()) {\r\n      case 'sm': return 'typo-title-1';\r\n      case 'md': return 'typo-title-2';\r\n      case 'lg': return 'typo-title-3';\r\n      default: return 'typo-title-2';\r\n    }\r\n  }\r\n} ","<div class=\"kc-card\" \r\n     [ngStyle]=\"{ \r\n         'width': !fullWidth() ? width() : '100%',\r\n         'min-width': !fullWidth() ? minWidth() : null,\r\n         'max-width': !fullWidth() ? maxWidth() : null,\r\n         'max-height': maxHeight()\r\n     }\"\r\n     [class.no-header-separator]=\"showHeader() && !showHeaderSeparator()\">\r\n  <!-- Optional Header -->\r\n  <div class=\"kc-card-header\" *ngIf=\"showHeader()\" [class.with-separator]=\"showHeaderSeparator()\">\r\n    <div class=\"kc-card-header-left\">\r\n      <!-- Prefix Icon (if provided) -->\r\n      <kc-icon *ngIf=\"prefixIcon()\" [iconClass]=\"prefixIcon()!\" [size]=\"componentSizes['MD']\"></kc-icon>\r\n      \r\n      <!-- Title (if provided) -->\r\n      <span *ngIf=\"title()\" class=\"kc-card-title\" [ngClass]=\"getTitleClass()\">{{ title() }}</span>\r\n      \r\n      <!-- Left Slot Content -->\r\n      <ng-content select=\"[leftSlot]\"></ng-content>\r\n    </div>\r\n    \r\n    <div class=\"kc-card-header-right\">\r\n      <!-- Right Slot Content -->\r\n      <ng-content select=\"[rightSlot]\"></ng-content>\r\n      \r\n      <!-- Optional Close Button -->\r\n      <button *ngIf=\"isClosable()\" class=\"kc-card-close-button\" (click)=\"onClose()\">\r\n        <kc-icon iconClass=\"icon-close\"></kc-icon>\r\n      </button>\r\n    </div>\r\n  </div>\r\n  \r\n  <!-- Card Content -->\r\n  <div class=\"kc-card-content\" [class.has-max-height]=\"maxHeight()\">\r\n    <ng-content></ng-content>\r\n  </div>\r\n  \r\n  <!-- Optional Footer - Only displayed when content is provided -->\r\n  <div class=\"kc-card-footer\" *ngIf=\"hasFooterContent\">\r\n    <ng-content select=\"[footerSlot]\"></ng-content>\r\n  </div>\r\n</div> ","export enum NotificationType {\n  Success = 'success',\n  Error = 'error',\n  Warning = 'warning',\n  Info = 'info',\n  Neutral = 'neutral'\n}\n\nexport interface NotificationMessage {\n  id?: string;\n  type: NotificationType;\n  title: string;\n  description: string;\n  duration?: number;\n  templateRef?: any; // TemplateRef<any>\n  templateContext?: any;\n}\n\nexport interface NotificationConfig {\n  maxMessages?: number;\n  defaultDuration?: number;\n}\n\n// Keep this type for backward compatibility, but only 'top-right' is used\nexport type NotificationPosition = 'top-right'; ","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { NotificationMessage, NotificationConfig, NotificationPosition, NotificationType } from './snackbar.models';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NotificationService {\n  private messages: NotificationMessage[] = [];\n  private messagesSubject = new BehaviorSubject<NotificationMessage[]>([]);\n  \n  private config: NotificationConfig = {\n    maxMessages: 5,\n    defaultDuration: 5000\n  };\n\n  constructor() {}\n  \n  /**\n   * Get the observable of active notification messages\n   */\n  getMessages(): Observable<NotificationMessage[]> {\n    return this.messagesSubject.asObservable();\n  }\n  \n  /**\n   * Configure notification settings\n   */\n  setConfig(config: Partial<NotificationConfig>): void {\n    // Position is no longer configurable, only use valid config properties\n    this.config = { ...this.config, ...config };\n  }\n  \n  /**\n   * Get current notification configuration\n   */\n  getConfig(): NotificationConfig {\n    return { ...this.config };\n  }\n  \n  /**\n   * Get current notification position\n   */\n  getPosition(): NotificationPosition {\n    return 'top-right';\n  }\n  \n  /**\n   * Push a new notification message\n   */\n  pushMessage(message: Omit<NotificationMessage, 'id'>): void {\n    const newMessage: NotificationMessage = {\n      ...message,\n      id: this.generateId(),\n      duration: message.duration || this.config.defaultDuration\n    };\n    \n    this.messages = [newMessage, ...this.messages].slice(0, this.config.maxMessages);\n    this.messagesSubject.next([...this.messages]);\n    \n    // Auto-dismiss after duration\n    if (newMessage.duration) {\n      setTimeout(() => {\n        this.removeMessage(newMessage.id!);\n      }, newMessage.duration);\n    }\n  }\n  \n  /**\n   * Remove a specific message\n   */\n  removeMessage(id: string): void {\n    this.messages = this.messages.filter(msg => msg.id !== id);\n    this.messagesSubject.next([...this.messages]);\n  }\n  \n  /**\n   * Clear all messages\n   */\n  clearAll(): void {\n    this.messages = [];\n    this.messagesSubject.next([]);\n  }\n  \n  /**\n   * Helper methods for common notification types\n   */\n  success(title: string, description: string, duration?: number): void {\n    this.pushMessage({ type: NotificationType.Success, title, description, duration });\n  }\n  \n  error(title: string, description: string, duration?: number): void {\n    this.pushMessage({ type: NotificationType.Error, title, description, duration });\n  }\n  \n  warning(title: string, description: string, duration?: number): void {\n    this.pushMessage({ type: NotificationType.Warning, title, description, duration });\n  }\n  \n  info(title: string, description: string, duration?: number): void {\n    this.pushMessage({ type: NotificationType.Info, title, description, duration });\n  }\n  \n  neutral(title: string, description: string, duration?: number): void {\n    this.pushMessage({ type: NotificationType.Neutral, title, description, duration });\n  }\n\n  /**\n   * Custom template notification methods for common types\n   */\n  successTemplate(templateRef: any, templateContext: any, duration?: number): void {\n    this.pushMessage({ \n      type: NotificationType.Success, \n      title: templateContext.title || '',\n      description: templateContext.description || templateContext.message || '',\n      templateRef, \n      templateContext, \n      duration \n    });\n  }\n  \n  errorTemplate(templateRef: any, templateContext: any, duration?: number): void {\n    this.pushMessage({ \n      type: NotificationType.Error, \n      title: templateContext.title || '',\n      description: templateContext.description || '',\n      templateRef, \n      templateContext, \n      duration \n    });\n  }\n  \n  warningTemplate(templateRef: any, templateContext: any, duration?: number): void {\n    this.pushMessage({ \n      type: NotificationType.Warning, \n      title: templateContext.title || '',\n      description: templateContext.description || templateContext.message || '',\n      templateRef, \n      templateContext, \n      duration \n    });\n  }\n  \n  infoTemplate(templateRef: any, templateContext: any, duration?: number): void {\n    this.pushMessage({ \n      type: NotificationType.Info, \n      title: templateContext.title || '',\n      description: templateContext.description || templateContext.message || '',\n      templateRef, \n      templateContext, \n      duration \n    });\n  }\n  \n  neutralTemplate(templateRef: any, templateContext: any, duration?: number): void {\n    this.pushMessage({ \n      type: NotificationType.Neutral, \n      title: templateContext.title || '',\n      description: templateContext.description || templateContext.message || '',\n      templateRef, \n      templateContext, \n      duration \n    });\n  }\n  \n  private generateId(): string {\n    return Date.now().toString(36) + Math.random().toString(36).substring(2);\n  }\n} ","import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef, TemplateRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { NotificationService } from '../notification.service';\nimport { NotificationMessage } from '../snackbar.models';\nimport { KcIconComponent } from '../../icons/icon/icon.component';\n\n@Component({\n  selector: 'kc-snackbar',\n  templateUrl: './kc-snackbar.component.html',\n  styleUrls: ['./kc-snackbar.component.scss'],\n  standalone: true,\n  imports: [CommonModule, KcIconComponent],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('slideIn', [\n      transition(':enter', [\n        style({ transform: '{{transform}}', opacity: 0 }),\n        animate('200ms ease-out', style({ transform: 'translateY(0)', opacity: 1 })),\n      ]),\n      transition(':leave', [\n        animate('200ms ease-in', style({ transform: '{{transform}}', opacity: 0 }))\n      ])\n    ])\n  ]\n})\nexport class KcSnackbarComponent implements OnInit, OnDestroy {\n  messages: NotificationMessage[] = [];\n  \n  private subscription = new Subscription();\n\n  constructor(\n    private notificationService: NotificationService,\n    private cdr: ChangeDetectorRef\n  ) {}\n\n  ngOnInit(): void {\n    // Subscribe to messages\n    this.subscription.add(\n      this.notificationService.getMessages().subscribe(messages => {\n        this.messages = messages;\n        this.cdr.markForCheck();\n      })\n    );\n  }\n\n  ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  /**\n   * Remove a specific message\n   */\n  remove(id: string): void {\n    this.notificationService.removeMessage(id);\n  }\n\n  /**\n   * Get the appropriate animation transform based on position\n   */\n  getEnterTransform(): string {\n    return 'translateY(-100%)';\n  }\n\n  /**\n   * Get container class based on position\n   */\n  getContainerClass(): string {\n    return 'kc-snackbar-container top-right';\n  }\n\n  /**\n   * Get snackbar item class based on notification type\n   */\n  getSnackbarClass(type: string): string {\n    return `kc-snackbar-item kc-snackbar-${type}`;\n  }\n} ","<div [class]=\"getContainerClass()\">\n  <div \n    *ngFor=\"let message of messages\" \n    class=\"kc-snackbar-wrapper\"\n    [@slideIn]=\"{value: '', params: {transform: getEnterTransform()}}\"\n  >\n    <div [class]=\"getSnackbarClass(message.type)\" role=\"alert\">\n      <div class=\"kc-snackbar-content\">\n        <div class=\"kc-snackbar-header\">\n          <span *ngIf=\"message.title\" class=\"kc-snackbar-title\">{{ message.title }}</span>\n          <button \n            class=\"kc-snackbar-close\" \n            (click)=\"remove(message.id!)\" \n            aria-label=\"Close notification\"\n          >\n            <kc-icon iconClass=\"icon-close-12px\" [color]=\"'#ffffff'\"></kc-icon>\n          </button>\n        </div>\n        \n        <div class=\"kc-snackbar-body\">\n          <div class=\"kc-snackbar-description\" *ngIf=\"message.description\">\n            {{ message.description }}\n          </div>\n          \n          <ng-container *ngIf=\"message.templateRef\">\n            <ng-container *ngTemplateOutlet=\"message.templateRef; context: message.templateContext\"></ng-container>\n          </ng-container>\n        </div>\n      </div>\n    </div>\n  </div>\n</div> ","import { \r\n  Directive, \r\n  ElementRef, \r\n  HostListener, \r\n  Input, \r\n  Renderer2, \r\n  OnDestroy,\r\n  PLATFORM_ID,\r\n  inject,\r\n  Inject,\r\n  TemplateRef,\r\n  ViewContainerRef,\r\n  EmbeddedViewRef\r\n} from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\r\n\r\n// The global styles for tooltips\r\nconst tooltipStyles = `\r\n.kc-tooltip-container {\r\n  position: absolute;\r\n  z-index: 10000;\r\n  pointer-events: none;\r\n  font-family: 'Poppins', sans-serif;\r\n  font-size: 0.875rem;\r\n}\r\n\r\n.kc-tooltip {\r\n  position: relative;\r\n  transform-origin: center;\r\n  opacity: 0;\r\n  transform: scale(0.8);\r\n  transition: opacity 200ms ease-out, transform 200ms ease-out;\r\n  will-change: opacity, transform;\r\n}\r\n\r\n.kc-tooltip.visible {\r\n  opacity: 1;\r\n  transform: scale(1);\r\n}\r\n\r\n.kc-tooltip:before {\r\n  content: '';\r\n  position: absolute;\r\n  width: 0;\r\n  height: 0;\r\n  border: 6px solid transparent;\r\n}\r\n\r\n.kc-tooltip.top:before {  bottom: -12px;  left: 50%;  transform: translateX(-50%);  border-top-color: var(--gray-15);}.kc-tooltip.bottom:before {  top: -12px;  left: 50%;  transform: translateX(-50%);  border-bottom-color: var(--gray-15);}.kc-tooltip.left:before {  right: -12px;  top: 50%;  transform: translateY(-50%);  border-left-color: var(--gray-15);}.kc-tooltip.right:before {  left: -12px;  top: 50%;  transform: translateY(-50%);  border-right-color: var(--gray-15);}\r\n\r\n.kc-tooltip-content {\r\n  background-color: var(--gray-15);\r\n  color: var(--white);\r\n  padding: 8px 12px;\r\n  border-radius: 4px;\r\n  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 6px;\r\n  min-width: max-content;\r\n  max-width: 250px;\r\n  word-wrap: break-word;\r\n  white-space: normal;\r\n}\r\n\r\n.kc-tooltip-content i {\r\n  font-size: 14px;\r\n  min-width: 14px;\r\n  display: inline-flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n}\r\n`;\r\n\r\n@Directive({\r\n  selector: '[kcTooltip]',\r\n  standalone: true,\r\n  exportAs: 'kcTooltip'\r\n})\r\nexport class KcTooltipDirective implements OnDestroy {\r\n  private tooltipElement: HTMLElement | null = null;\r\n  private showTimeoutId: number | null = null;\r\n  private hideTimeoutId: number | null = null;\r\n  private isBrowser: boolean;\r\n  private static stylesInjected = false;\r\n  private embeddedViewRef: EmbeddedViewRef<any> | null = null;\r\n\r\n  // Configuration inputs\r\n  @Input('kcTooltip') text = '';\r\n  @Input() tooltipTemplate: TemplateRef<any> | null = null;\r\n  @Input() tooltipPosition: TooltipPosition = 'bottom';\r\n  @Input() tooltipShowDelay = 0; // No delay for immediate feedback\r\n  @Input() tooltipHideDelay = 0; \r\n  @Input() tooltipTextColor: string | undefined = undefined;\r\n  @Input() tooltipPrefixIcon: string | undefined = undefined;\r\n  @Input() tooltipSuffixIcon: string | undefined = undefined;\r\n  @Input() tooltipPrefixIconColor: string | undefined = undefined;\r\n  @Input() tooltipSuffixIconColor: string | undefined = undefined;\r\n  \r\n  constructor(\r\n    private el: ElementRef,\r\n    private renderer: Renderer2,\r\n    private viewContainerRef: ViewContainerRef,\r\n    @Inject(PLATFORM_ID) platformId: Object\r\n  ) {\r\n    this.isBrowser = isPlatformBrowser(platformId);\r\n    \r\n    // Inject the styles once per app\r\n    if (this.isBrowser && !KcTooltipDirective.stylesInjected) {\r\n      this.injectStyles();\r\n      KcTooltipDirective.stylesInjected = true;\r\n    }\r\n  }\r\n  \r\n  // Inject tooltip styles to the head\r\n  private injectStyles(): void {\r\n    const styleElement = this.renderer.createElement('style');\r\n    const textNode = this.renderer.createText(tooltipStyles);\r\n    this.renderer.appendChild(styleElement, textNode);\r\n    this.renderer.appendChild(document.head, styleElement);\r\n  }\r\n\r\n  @HostListener('mouseenter')\r\n  onMouseEnter(): void {\r\n    this.showTooltip();\r\n  }\r\n\r\n  @HostListener('mouseleave')\r\n  onMouseLeave(): void {\r\n    this.hideTooltip();\r\n  }\r\n\r\n  @HostListener('focus')\r\n  onFocus(): void {\r\n    this.showTooltip();\r\n  }\r\n\r\n  @HostListener('blur')\r\n  onBlur(): void {\r\n    this.hideTooltip();\r\n  }\r\n\r\n  showTooltip(): void {\r\n    if (!this.isBrowser || (!this.text && !this.tooltipTemplate) || this.tooltipElement) {\r\n      return;\r\n    }\r\n\r\n    this.clearTimeouts();\r\n\r\n    this.showTimeoutId = window.setTimeout(() => {\r\n      this.createTooltip();\r\n    }, this.tooltipShowDelay);\r\n  }\r\n\r\n  hideTooltip(): void {\r\n    this.clearTimeouts();\r\n    \r\n    if (!this.tooltipElement) return;\r\n\r\n    this.hideTimeoutId = window.setTimeout(() => {\r\n      this.removeTooltip();\r\n    }, this.tooltipHideDelay);\r\n  }\r\n\r\n  private clearTimeouts(): void {\r\n    if (this.showTimeoutId !== null) {\r\n      clearTimeout(this.showTimeoutId);\r\n      this.showTimeoutId = null;\r\n    }\r\n    \r\n    if (this.hideTimeoutId !== null) {\r\n      clearTimeout(this.hideTimeoutId);\r\n      this.hideTimeoutId = null;\r\n    }\r\n  }\r\n\r\n  private createTooltip(): void {\r\n    if (!this.isBrowser) return;\r\n\r\n    // Create tooltip element\r\n    this.tooltipElement = this.renderer.createElement('div');\r\n    this.renderer.addClass(this.tooltipElement, 'kc-tooltip-container');\r\n    this.renderer.addClass(this.tooltipElement, 'typo-text-1');\r\n    \r\n    // Create tooltip content wrapper\r\n    const tooltipWrapper = this.renderer.createElement('div');\r\n    this.renderer.addClass(tooltipWrapper, 'kc-tooltip');\r\n    this.renderer.addClass(tooltipWrapper, this.tooltipPosition);\r\n    \r\n    // Create tooltip content\r\n    const tooltipContent = this.renderer.createElement('div');\r\n    this.renderer.addClass(tooltipContent, 'kc-tooltip-content');\r\n    \r\n    // Handle template or text content\r\n    if (this.tooltipTemplate) {\r\n      // Render template content\r\n      this.embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.tooltipTemplate);\r\n      this.embeddedViewRef.detectChanges();\r\n      \r\n      // Append template nodes to tooltip content\r\n      this.embeddedViewRef.rootNodes.forEach(node => {\r\n        this.renderer.appendChild(tooltipContent, node);\r\n      });\r\n    } else {\r\n      // Handle text content with icons (original behavior)\r\n      // Add prefix icon if provided\r\n      if (this.tooltipPrefixIcon) {\r\n        const prefixIcon = this.renderer.createElement('i');\r\n        this.renderer.addClass(prefixIcon, this.tooltipPrefixIcon);\r\n        if (this.tooltipPrefixIconColor) {\r\n          this.renderer.setStyle(prefixIcon, 'color', this.tooltipPrefixIconColor);\r\n        }\r\n        this.renderer.appendChild(tooltipContent, prefixIcon);\r\n      }\r\n      \r\n      // Add text content\r\n      const textSpan = this.renderer.createElement('span');\r\n      const text = this.renderer.createText(this.text);\r\n      this.renderer.appendChild(textSpan, text);\r\n      \r\n      if (this.tooltipTextColor) {\r\n        this.renderer.setStyle(textSpan, 'color', this.tooltipTextColor);\r\n      }\r\n      \r\n      this.renderer.appendChild(tooltipContent, textSpan);\r\n      \r\n      // Add suffix icon if provided\r\n      if (this.tooltipSuffixIcon) {\r\n        const suffixIcon = this.renderer.createElement('i');\r\n        this.renderer.addClass(suffixIcon, this.tooltipSuffixIcon);\r\n        if (this.tooltipSuffixIconColor) {\r\n          this.renderer.setStyle(suffixIcon, 'color', this.tooltipSuffixIconColor);\r\n        }\r\n        this.renderer.appendChild(tooltipContent, suffixIcon);\r\n      }\r\n    }\r\n    \r\n    // Assemble the tooltip\r\n    this.renderer.appendChild(tooltipWrapper, tooltipContent);\r\n    this.renderer.appendChild(this.tooltipElement, tooltipWrapper);\r\n    this.renderer.appendChild(document.body, this.tooltipElement);\r\n    \r\n    // Set initial positioning\r\n    this.setTooltipPosition();\r\n    \r\n    // Trigger animation\r\n    setTimeout(() => {\r\n      if (this.tooltipElement) {\r\n        const tooltipDiv = this.tooltipElement.querySelector('.kc-tooltip') as HTMLElement;\r\n        if (tooltipDiv) {\r\n          this.renderer.addClass(tooltipDiv, 'visible');\r\n        }\r\n      }\r\n    }, 20);\r\n  }\r\n\r\n  private removeTooltip(): void {\r\n    if (this.tooltipElement) {\r\n      // Trigger animation out\r\n      const tooltipDiv = this.tooltipElement.querySelector('.kc-tooltip') as HTMLElement;\r\n      if (tooltipDiv) {\r\n        this.renderer.removeClass(tooltipDiv, 'visible');\r\n      }\r\n      \r\n      // Remove from DOM after animation\r\n      setTimeout(() => {\r\n        if (this.tooltipElement) {\r\n          this.renderer.removeChild(document.body, this.tooltipElement);\r\n          this.tooltipElement = null;\r\n        }\r\n        \r\n        // Clean up embedded view if it exists\r\n        if (this.embeddedViewRef) {\r\n          this.embeddedViewRef.destroy();\r\n          this.embeddedViewRef = null;\r\n        }\r\n      }, 200);\r\n    }\r\n  }\r\n\r\n  private setTooltipPosition(): void {\r\n    if (!this.tooltipElement) return;\r\n    \r\n    const hostRect = this.el.nativeElement.getBoundingClientRect();\r\n    const tooltipRect = this.tooltipElement.getBoundingClientRect();\r\n    \r\n    const scrollY = window.scrollY || document.documentElement.scrollTop;\r\n    const scrollX = window.scrollX || document.documentElement.scrollLeft;\r\n    \r\n    let top = 0;\r\n    let left = 0;\r\n    \r\n    // Calculate position based on position input\r\n    switch (this.tooltipPosition) {\r\n      case 'top':\r\n        top = hostRect.top - tooltipRect.height - 8 + scrollY;\r\n        left = hostRect.left + (hostRect.width - tooltipRect.width) / 2 + scrollX;\r\n        break;\r\n      case 'bottom':\r\n        top = hostRect.bottom + 8 + scrollY;\r\n        left = hostRect.left + (hostRect.width - tooltipRect.width) / 2 + scrollX;\r\n        break;\r\n      case 'left':\r\n        top = hostRect.top + (hostRect.height - tooltipRect.height) / 2 + scrollY;\r\n        left = hostRect.left - tooltipRect.width - 8 + scrollX;\r\n        break;\r\n      case 'right':\r\n        top = hostRect.top + (hostRect.height - tooltipRect.height) / 2 + scrollY;\r\n        left = hostRect.right + 12 + scrollX; // Increased from 8 to 12px for right position\r\n        break;\r\n    }\r\n    \r\n    // Keep tooltip within viewport bounds\r\n    const viewportWidth = document.documentElement.clientWidth;\r\n    const viewportHeight = document.documentElement.clientHeight;\r\n    \r\n    // Adjust horizontal position if needed\r\n    if (left < 0) {\r\n      left = 4;\r\n    } else if (left + tooltipRect.width > viewportWidth) {\r\n      left = viewportWidth - tooltipRect.width - 4;\r\n    }\r\n    \r\n    // Adjust vertical position if needed\r\n    if (top < 0) {\r\n      top = 4;\r\n    } else if (top + tooltipRect.height > viewportHeight + scrollY) {\r\n      top = viewportHeight + scrollY - tooltipRect.height - 4;\r\n    }\r\n    \r\n    // Set position\r\n    this.renderer.setStyle(this.tooltipElement, 'position', 'absolute');\r\n    this.renderer.setStyle(this.tooltipElement, 'z-index', '10000');\r\n    this.renderer.setStyle(this.tooltipElement, 'top', `${top}px`);\r\n    this.renderer.setStyle(this.tooltipElement, 'left', `${left}px`);\r\n    this.renderer.setStyle(this.tooltipElement, 'pointer-events', 'none');\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.clearTimeouts();\r\n    this.removeTooltip();\r\n    \r\n    // Ensure embedded view is cleaned up\r\n    if (this.embeddedViewRef) {\r\n      this.embeddedViewRef.destroy();\r\n      this.embeddedViewRef = null;\r\n    }\r\n  }\r\n} ","import { CommonModule } from '@angular/common';\r\nimport {\r\n  Component,\r\n  HostListener,\r\n  ElementRef,\r\n  ViewChild,\r\n  AfterViewInit,\r\n  TemplateRef,\r\n  signal,\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { KcInputComponent } from '../../lib/form-controls/kc-input/kc-input.component';\r\nimport { KcDropdownSelectComponent } from '../../lib/form-controls/components/dropdown-select/dropdown-select.component';\r\nimport { KcDropdownMultiselectComponent } from '../../lib/form-controls/components/dropdown-multiselect/dropdown-multiselect.component';\r\nimport { KcIconComponent } from '../../lib/icons/icon/icon.component';\r\nimport { KcButtonComponent } from '../../lib/form-controls/components/button/button.component';\r\nimport { KcBaseModalComponent } from '../../lib/modals/kc-base-modal/kc-base-modal.component';\r\nimport { KcSnackbarComponent } from '../../lib/snackbar/kc-snackbar/kc-snackbar.component';\r\nimport { NotificationService } from '../../lib/snackbar/notification.service';\r\nimport { NotificationType } from '../../lib/snackbar/snackbar.models';\r\nimport { KcCardComponent } from '../../lib/card/kc-card.component';\r\nimport { KcChipComponent } from '../../lib/form-controls/components/chip/chip.component';\r\nimport { KcTooltipDirective } from '../../lib/directives/tooltip/tooltip.directive';\r\nimport { ComponentSize } from '../../lib/form-controls/types/sizing.type';\r\nimport { KcSwitchNavigationComponent } from '../../lib/form-controls/components/switch-navigation/switch-navigation.component';\r\nimport {\r\n  SwitchNavigationOption,\r\n  SwitchNavigationVariant,\r\n} from '../../lib/form-controls/components/switch-navigation/switch-navigation.types';\r\nimport { DropdownOption } from '../../lib/form-controls/components/dropdown-select/dropdown-select.models';\r\n\r\n@Component({\r\n  selector: 'design-system-showcase',\r\n  standalone: true,\r\n  imports: [\r\n    KcInputComponent,\r\n    KcDropdownSelectComponent,\r\n    KcDropdownMultiselectComponent,\r\n    CommonModule,\r\n    FormsModule,\r\n    KcIconComponent,\r\n    KcButtonComponent,\r\n    KcBaseModalComponent,\r\n    KcSnackbarComponent,\r\n    KcCardComponent,\r\n    KcChipComponent,\r\n    KcTooltipDirective,\r\n    KcSwitchNavigationComponent,\r\n  ],\r\n  templateUrl: './design-system-showcase.component.html',\r\n  styleUrl: './design-system-showcase.component.scss',\r\n})\r\nexport class DesignSystemShowcaseComponent implements AfterViewInit {\r\n  // Template references for custom snackbar notifications\r\n  @ViewChild('successTemplate', { static: true })\r\n  successTemplate!: TemplateRef<any>;\r\n  @ViewChild('errorTemplate', { static: true })\r\n  errorTemplate!: TemplateRef<any>;\r\n\r\n  // Make NotificationType available in the template\r\n  NotificationType = NotificationType;\r\n\r\n  options: DropdownOption[] = [\r\n    { value: 'option1', label: 'Option 1' },\r\n    { value: 'option2', label: 'Option 2' },\r\n    { value: 'option3', label: 'Option 3' },\r\n    { value: 'option4', label: 'Option 4' },\r\n    { value: 'option5', label: 'Option 5' },\r\n  ];\r\n\r\n  emptyOptions: DropdownOption[] = [];\r\n\r\n  longOptions: DropdownOption[] = [\r\n    {\r\n      label:\r\n        'This is a very long option text that will expand the dropdown width',\r\n      value: 'long1',\r\n    },\r\n    {\r\n      label:\r\n        'Another lengthy option with more text than you would normally expect',\r\n      value: 'long2',\r\n    },\r\n    { label: 'Short option', value: 'short' },\r\n    {\r\n      label:\r\n        'This one has even more text to demonstrate content-based width properly',\r\n      value: 'long3',\r\n    },\r\n  ];\r\n\r\n  sections = [\r\n    { id: 'buttons', name: 'Button' },\r\n    { id: 'dropdowns', name: 'Dropdown' },\r\n    { id: 'multiselect', name: 'Multiselect' },\r\n    { id: 'modals', name: 'Modal' },\r\n    { id: 'icons', name: 'Icon' },\r\n    { id: 'inputs', name: 'Input' },\r\n    { id: 'snackbar', name: 'Snackbar' },\r\n    { id: 'card', name: 'Card' },\r\n    { id: 'chips', name: 'Chip' },\r\n    { id: 'tooltip', name: 'Tooltip' },\r\n    { id: 'switchNav', name: 'Switch Navigation' },\r\n  ];\r\n\r\n  currentSection = 'buttons';\r\n\r\n  // Handle different modals\r\n  activeModal: 'basic' | 'withIcon' | 'autoWidth' | null = null;\r\n\r\n  // Make ComponentSize available to the template as string literals\r\n  componentSizes: Record<string, ComponentSize> = {\r\n    XS: 'xs',\r\n    SM: 'sm',\r\n    MD: 'md',\r\n    LG: 'lg',\r\n    XLG: 'xlg',\r\n  };\r\n\r\n  // Example input values\r\n  inputValue = '';\r\n  numberOutOfRange = 5;\r\n  dynamicValidState = true;\r\n  validatedInputValue = '';\r\n  validationEventValue = '';\r\n  validationStatus = false;\r\n\r\n  // Switch Navigation demo\r\n  switchNavOptions: SwitchNavigationOption[] = [\r\n    { key: 'day', title: 'Day', prefixIcon: 'icon-chain' },\r\n    { key: 'week', title: 'Week', prefixIcon: 'icon-chain' },\r\n    { key: 'month', title: 'Month', prefixIcon: 'icon-chain' },\r\n    { key: 'year', title: 'Year', prefixIcon: 'icon-chain' },\r\n  ];\r\n\r\n  switchNavCurrentActive = 'day';\r\n  switchNavVariant: SwitchNavigationVariant = 'primary';\r\n  switchNavSize: ComponentSize = 'md';\r\n  switchNavDisabled = false;\r\n\r\n  @ViewChild('sectionButtons') buttonSection!: ElementRef;\r\n  @ViewChild('sectionDropdowns') dropdownsSection!: ElementRef;\r\n  @ViewChild('sectionMultiselect') multiselectSection!: ElementRef;\r\n  @ViewChild('sectionModals') modalsSection!: ElementRef;\r\n  @ViewChild('sectionIcons') iconsSection!: ElementRef;\r\n  @ViewChild('sectionInputs') inputsSection!: ElementRef;\r\n  @ViewChild('sectionSnackbar') snackbarSection!: ElementRef;\r\n  @ViewChild('sectionCard') cardSection!: ElementRef;\r\n  @ViewChild('sectionChips') chipsSection!: ElementRef;\r\n  @ViewChild('sectionTooltip') tooltipSection!: ElementRef;\r\n  @ViewChild('sectionSwitchNav') switchNavSection!: ElementRef;\r\n\r\n  sectionRefs: { [key: string]: ElementRef } = {};\r\n\r\n  disabledButton = signal<boolean>(true);\r\n  loadingButton = signal<boolean>(false);\r\n\r\n  constructor(private notificationService: NotificationService) {}\r\n\r\n  ngAfterViewInit() {\r\n    this.sectionRefs = {\r\n      buttons: this.buttonSection,\r\n      dropdowns: this.dropdownsSection,\r\n      multiselect: this.multiselectSection,\r\n      modals: this.modalsSection,\r\n      icons: this.iconsSection,\r\n      inputs: this.inputsSection,\r\n      snackbar: this.snackbarSection,\r\n      card: this.cardSection,\r\n      chips: this.chipsSection,\r\n      tooltip: this.tooltipSection,\r\n      switchNav: this.switchNavSection,\r\n    };\r\n\r\n    // Initialize IntersectionObserver\r\n    this.observeSections();\r\n  }\r\n\r\n  // Switch Navigation demo handlers\r\n  onSwitchNavSelect(key: string): void {\r\n    this.switchNavCurrentActive = key;\r\n  }\r\n\r\n  toggleSwitchNavDisabled(): void {\r\n    this.switchNavDisabled = !this.switchNavDisabled;\r\n  }\r\n\r\n  // Show different notification types\r\n  showNotification(type: NotificationType): void {\r\n    switch (type) {\r\n      case NotificationType.Success:\r\n        this.notificationService.success(\r\n          'Success!',\r\n          'Your operation was completed successfully.'\r\n        );\r\n        break;\r\n      case NotificationType.Error:\r\n        this.notificationService.error(\r\n          'Error',\r\n          'There was an error processing your request.'\r\n        );\r\n        break;\r\n      case NotificationType.Warning:\r\n        this.notificationService.warning(\r\n          'Warning',\r\n          'This action might cause issues.'\r\n        );\r\n        break;\r\n      case NotificationType.Info:\r\n        this.notificationService.info(\r\n          'Information',\r\n          'This is an informational message.'\r\n        );\r\n        break;\r\n      case NotificationType.Neutral:\r\n        this.notificationService.neutral(\r\n          'Notification',\r\n          'This is a neutral notification.'\r\n        );\r\n        break;\r\n    }\r\n  }\r\n\r\n  // Show custom template notifications\r\n  showCustomSuccess(): void {\r\n    this.notificationService.successTemplate(\r\n      this.successTemplate,\r\n      {\r\n        title: 'Operation Successful',\r\n        message: 'Your transaction has been processed.',\r\n        onActionClick: () => {\r\n          console.log('OK button clicked');\r\n        },\r\n      },\r\n      8000 // Duration in milliseconds\r\n    );\r\n  }\r\n\r\n  showCustomError(): void {\r\n    this.notificationService.errorTemplate(\r\n      this.errorTemplate,\r\n      {\r\n        title: 'Transaction Failed',\r\n        description: 'Unable to complete your transaction at this time.',\r\n        errorCode: 'ERR-1234',\r\n        onRetry: () => {\r\n          console.log('Retry clicked');\r\n          // Implement retry logic\r\n        },\r\n        onDismiss: () => {\r\n          console.log('Dismiss clicked');\r\n        },\r\n      },\r\n      0 // Won't auto-dismiss\r\n    );\r\n  }\r\n\r\n  observeSections() {\r\n    const options = {\r\n      rootMargin: '-100px 0px -100px 0px',\r\n      threshold: 0.1,\r\n    };\r\n\r\n    const observer = new IntersectionObserver(\r\n      (entries: IntersectionObserverEntry[]) => {\r\n        // Find the section that is most visible\r\n        const visibleEntries = entries.filter((entry) => entry.isIntersecting);\r\n\r\n        if (visibleEntries.length > 0) {\r\n          // Find entry with highest intersection ratio\r\n          const mostVisibleEntry = visibleEntries.reduce((prev, current) => {\r\n            return prev.intersectionRatio > current.intersectionRatio\r\n              ? prev\r\n              : current;\r\n          });\r\n\r\n          // Get the section ID from the element ID\r\n          const sectionId = mostVisibleEntry.target.id;\r\n\r\n          // Only update if changed to avoid unnecessary renders\r\n          if (sectionId && this.currentSection !== sectionId) {\r\n            this.currentSection = sectionId;\r\n          }\r\n        }\r\n      },\r\n      options\r\n    );\r\n\r\n    // Observe all section elements\r\n    Object.values(this.sectionRefs).forEach((ref) => {\r\n      if (ref && ref.nativeElement) {\r\n        observer.observe(ref.nativeElement);\r\n      }\r\n    });\r\n  }\r\n\r\n  scrollToSection(sectionId: string) {\r\n    if (this.sectionRefs[sectionId]) {\r\n      // Update current section immediately for better UX\r\n      this.currentSection = sectionId;\r\n\r\n      // Use native scrollIntoView with smooth behavior\r\n      this.sectionRefs[sectionId].nativeElement.scrollIntoView({\r\n        behavior: 'smooth',\r\n        block: 'start',\r\n      });\r\n    }\r\n  }\r\n\r\n  openModal(modalType: 'basic' | 'withIcon' | 'autoWidth') {\r\n    this.activeModal = modalType;\r\n  }\r\n\r\n  closeModal() {\r\n    this.activeModal = null;\r\n  }\r\n\r\n  // Toggle validation state for demo\r\n  toggleValidationState(): void {\r\n    this.dynamicValidState = !this.dynamicValidState;\r\n  }\r\n\r\n  // Handle validation change events\r\n  onValidationChange(isValid: boolean): void {\r\n    this.validationStatus = isValid;\r\n    console.log('Validation changed:', isValid);\r\n  }\r\n\r\n  toggleLoadingButton(): void {\r\n    this.loadingButton.set(!this.loadingButton());\r\n  }\r\n\r\n  simulateLoading(): void {\r\n    this.loadingButton.set(true);\r\n    setTimeout(() => {\r\n      this.loadingButton.set(false);\r\n    }, 3000); // 3 seconds loading simulation\r\n  }\r\n}\r\n","<div class=\"demo-app\">\r\n  <aside class=\"sidebar\">\r\n    <nav>\r\n      <ul>\r\n        <li\r\n          *ngFor=\"let section of sections\"\r\n          [class.active]=\"currentSection === section.id\"\r\n          (click)=\"scrollToSection(section.id)\"\r\n        >\r\n          {{ section.name }}\r\n        </li>\r\n      </ul>\r\n    </nav>\r\n  </aside>\r\n\r\n  <main class=\"content\">\r\n    <header>\r\n      <h1 class=\"main-title\">KaspaCom DeFi UI Kit</h1>\r\n    </header>\r\n\r\n    <section #sectionButtons id=\"buttons\" class=\"component-section\">\r\n      <h2>Button</h2>\r\n\r\n      <div class=\"component-examples\">\r\n        <div class=\"example-card\">\r\n          <h3>Button Variants</h3>\r\n          <div class=\"buttons-row\">\r\n            <kc-button [text]=\"'Primary'\" [variant]=\"'primary'\"></kc-button>\r\n            <kc-button [text]=\"'Secondary'\" [variant]=\"'secondary'\"></kc-button>\r\n            <kc-button [text]=\"'Tertiary'\" [variant]=\"'tertiary'\"></kc-button>\r\n            <kc-button\r\n              [text]=\"'Gradient 1'\"\r\n              [variant]=\"'gradient_1'\"\r\n            ></kc-button>\r\n            <kc-button\r\n              [text]=\"'Gradient 2'\"\r\n              [variant]=\"'gradient_2'\"\r\n            ></kc-button>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Regular Button</h3>\r\n          <kc-button [text]=\"'Default Button'\"></kc-button>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Disabled Button</h3>\r\n          <div class=\"buttons-row\">\r\n            <kc-button\r\n              [isDisabled]=\"disabledButton()\"\r\n              [text]=\"'Default Button'\"\r\n            ></kc-button>\r\n            <kc-button\r\n              [text]=\"'Toggle Button'\"\r\n              (buttonClick)=\"disabledButton.set(!disabledButton())\"\r\n            ></kc-button>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Button with Prefix Icon</h3>\r\n          <kc-button\r\n            [prefixIcon]=\"'icon-chain'\"\r\n            [prefixIconColor]=\"'white'\"\r\n            [text]=\"'With Icon'\"\r\n          ></kc-button>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Button with Suffix Icon</h3>\r\n          <kc-button\r\n            [suffixIcon]=\"'icon-chain'\"\r\n            [suffixIconColor]=\"'white'\"\r\n            [text]=\"'With Icon'\"\r\n          ></kc-button>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Button with Both Icons</h3>\r\n          <kc-button\r\n            [prefixIcon]=\"'icon-chain'\"\r\n            [prefixIconColor]=\"'white'\"\r\n            [suffixIcon]=\"'icon-chain'\"\r\n            [suffixIconColor]=\"'white'\"\r\n            [text]=\"'With Icons'\"\r\n          ></kc-button>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Button with Prefix Slot</h3>\r\n          <kc-button [text]=\"'With Prefix Slot'\">\r\n            <ng-template #prefixTemplate>\r\n              <span class=\"prefix-badge\">New</span>\r\n            </ng-template>\r\n          </kc-button>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Button Roles</h3>\r\n          <div class=\"buttons-row\">\r\n            <kc-button [text]=\"'Success'\" [role]=\"'success'\"></kc-button>\r\n            <kc-button [text]=\"'Info'\" [role]=\"'info'\"></kc-button>\r\n            <kc-button [text]=\"'Warning'\" [role]=\"'warning'\"></kc-button>\r\n            <kc-button [text]=\"'Danger'\" [role]=\"'danger'\"></kc-button>\r\n            <kc-button [text]=\"'Neutral'\" [role]=\"'neutral'\"></kc-button>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Loading Button</h3>\r\n          <p>Current loading state: {{ loadingButton() }}</p>\r\n          <div class=\"buttons-row\">\r\n            <kc-button\r\n              [text]=\"'Click to Load'\"\r\n              [isLoading]=\"loadingButton()\"\r\n              [loadingText]=\"'Submitting...'\"\r\n              (buttonClick)=\"simulateLoading()\"\r\n            ></kc-button>\r\n            <kc-button\r\n              [text]=\"'Toggle Loading'\"\r\n              (buttonClick)=\"toggleLoadingButton()\"\r\n            ></kc-button>\r\n          </div>\r\n          <div class=\"buttons-row\">\r\n            <kc-button\r\n              [text]=\"'Static Loading Test'\"\r\n              [isLoading]=\"true\"\r\n              [loadingText]=\"'Always Loading...'\"\r\n            ></kc-button>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Loading Button without Loading Text</h3>\r\n          <div class=\"buttons-row\">\r\n            <kc-button\r\n              [text]=\"'Load without text'\"\r\n              [isLoading]=\"loadingButton()\"\r\n              (buttonClick)=\"simulateLoading()\"\r\n            ></kc-button>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </section>\r\n\r\n    <section #sectionDropdowns id=\"dropdowns\" class=\"component-section\">\r\n      <h2>Dropdown</h2>\r\n\r\n      <div class=\"component-examples\">\r\n        <div class=\"example-card\">\r\n          <h3>Default Dropdown</h3>\r\n          <kc-dropdown-select\r\n            [options]=\"options\"\r\n            [placeholder]=\"'Select an option'\"\r\n            [useContentWidth]=\"true\"\r\n          >\r\n          </kc-dropdown-select>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Dropdown with Icon</h3>\r\n          <kc-dropdown-select\r\n            [icon]=\"'icon-chain'\"\r\n            [options]=\"options\"\r\n            [placeholder]=\"'Select an option'\"\r\n            [useContentWidth]=\"true\"\r\n          >\r\n          </kc-dropdown-select>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Primary Variant</h3>\r\n          <kc-dropdown-select\r\n            [options]=\"options\"\r\n            [placeholder]=\"'Primary variant'\"\r\n            [variant]=\"'primary'\"\r\n            [useContentWidth]=\"true\"\r\n          >\r\n          </kc-dropdown-select>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Secondary Variant</h3>\r\n          <kc-dropdown-select\r\n            [options]=\"options\"\r\n            [placeholder]=\"'Secondary variant'\"\r\n            [variant]=\"'secondary'\"\r\n            [useContentWidth]=\"true\"\r\n          >\r\n          </kc-dropdown-select>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Tertiary Variant</h3>\r\n          <kc-dropdown-select\r\n            [options]=\"options\"\r\n            [placeholder]=\"'Tertiary variant'\"\r\n            [variant]=\"'tertiary'\"\r\n            [useContentWidth]=\"true\"\r\n          >\r\n          </kc-dropdown-select>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Raw Variant</h3>\r\n          <kc-dropdown-select\r\n            [options]=\"options\"\r\n            [placeholder]=\"'Raw variant'\"\r\n            [variant]=\"'raw'\"\r\n            [useContentWidth]=\"true\"\r\n          >\r\n          </kc-dropdown-select>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Hidden Toggle Icon</h3>\r\n          <kc-dropdown-select\r\n            [options]=\"options\"\r\n            [placeholder]=\"'No toggle icon'\"\r\n            [showToggleIcon]=\"false\"\r\n            [useContentWidth]=\"true\"\r\n          >\r\n          </kc-dropdown-select>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Raw Without Toggle</h3>\r\n          <kc-dropdown-select\r\n            [options]=\"options\"\r\n            [placeholder]=\"'Raw without toggle'\"\r\n            [variant]=\"'raw'\"\r\n            [showToggleIcon]=\"false\"\r\n            [useContentWidth]=\"true\"\r\n          >\r\n          </kc-dropdown-select>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Fixed Width Dropdown</h3>\r\n          <kc-dropdown-select\r\n            [options]=\"options\"\r\n            [placeholder]=\"'Select an option'\"\r\n            [useContentWidth]=\"false\"\r\n          >\r\n          </kc-dropdown-select>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>With Long Options</h3>\r\n          <kc-dropdown-select\r\n            [options]=\"longOptions\"\r\n            [placeholder]=\"'Select with long text'\"\r\n            [useContentWidth]=\"true\"\r\n          >\r\n          </kc-dropdown-select>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>With Max Width</h3>\r\n          <kc-dropdown-select\r\n            [options]=\"longOptions\"\r\n            [placeholder]=\"'Limited width'\"\r\n            [useContentWidth]=\"true\"\r\n            [maxWidth]=\"'250px'\"\r\n          >\r\n          </kc-dropdown-select>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Empty Options</h3>\r\n          <kc-dropdown-select\r\n            [options]=\"emptyOptions\"\r\n            [placeholder]=\"'No options available'\"\r\n            [isSearchable]=\"true\"\r\n          >\r\n          </kc-dropdown-select>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Custom Empty State</h3>\r\n          <kc-dropdown-select\r\n            [options]=\"emptyOptions\"\r\n            [placeholder]=\"'With custom empty state'\"\r\n            [isSearchable]=\"true\"\r\n          >\r\n            <div emptyStateTemplate class=\"custom-empty-state\">\r\n              <svg\r\n                xmlns=\"http://www.w3.org/2000/svg\"\r\n                width=\"24\"\r\n                height=\"24\"\r\n                viewBox=\"0 0 24 24\"\r\n                fill=\"none\"\r\n                stroke=\"currentColor\"\r\n                stroke-width=\"2\"\r\n                stroke-linecap=\"round\"\r\n                stroke-linejoin=\"round\"\r\n              >\r\n                <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\r\n                <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line>\r\n                <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>\r\n              </svg>\r\n              <p>No options available</p>\r\n            </div>\r\n          </kc-dropdown-select>\r\n        </div>\r\n      </div>\r\n    </section>\r\n\r\n    <section #sectionMultiselect id=\"multiselect\" class=\"component-section\">\r\n      <h2>Multiselect</h2>\r\n\r\n      <div class=\"component-examples\">\r\n        <div class=\"example-card\">\r\n          <h3>Default Multiselect</h3>\r\n          <kc-dropdown-multiselect\r\n            [options]=\"options\"\r\n            [placeholder]=\"'Select multiple options'\"\r\n            [useContentWidth]=\"true\"\r\n          >\r\n          </kc-dropdown-multiselect>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>With Icon</h3>\r\n          <kc-dropdown-multiselect\r\n            [icon]=\"'icon-chain'\"\r\n            [options]=\"options\"\r\n            [placeholder]=\"'Select multiple options'\"\r\n            [useContentWidth]=\"true\"\r\n          >\r\n          </kc-dropdown-multiselect>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Primary Variant</h3>\r\n          <kc-dropdown-multiselect\r\n            [options]=\"options\"\r\n            [placeholder]=\"'Primary variant'\"\r\n            [variant]=\"'primary'\"\r\n            [useContentWidth]=\"true\"\r\n          >\r\n          </kc-dropdown-multiselect>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Secondary Variant</h3>\r\n          <kc-dropdown-multiselect\r\n            [options]=\"options\"\r\n            [placeholder]=\"'Secondary variant'\"\r\n            [variant]=\"'secondary'\"\r\n            [useContentWidth]=\"true\"\r\n          >\r\n          </kc-dropdown-multiselect>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Tertiary Variant</h3>\r\n          <kc-dropdown-multiselect\r\n            [options]=\"options\"\r\n            [placeholder]=\"'Tertiary variant'\"\r\n            [variant]=\"'tertiary'\"\r\n            [useContentWidth]=\"true\"\r\n          >\r\n          </kc-dropdown-multiselect>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Raw Variant</h3>\r\n          <kc-dropdown-multiselect\r\n            [options]=\"options\"\r\n            [placeholder]=\"'Raw variant'\"\r\n            [variant]=\"'raw'\"\r\n            [useContentWidth]=\"true\"\r\n          >\r\n          </kc-dropdown-multiselect>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Hidden Toggle Icon</h3>\r\n          <kc-dropdown-multiselect\r\n            [options]=\"options\"\r\n            [placeholder]=\"'No toggle icon'\"\r\n            [showToggleIcon]=\"false\"\r\n            [useContentWidth]=\"true\"\r\n          >\r\n          </kc-dropdown-multiselect>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Raw Without Toggle</h3>\r\n          <kc-dropdown-multiselect\r\n            [options]=\"options\"\r\n            [placeholder]=\"'Raw without toggle'\"\r\n            [variant]=\"'raw'\"\r\n            [showToggleIcon]=\"false\"\r\n            [useContentWidth]=\"true\"\r\n          >\r\n          </kc-dropdown-multiselect>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Fixed Width</h3>\r\n          <kc-dropdown-multiselect\r\n            [options]=\"options\"\r\n            [placeholder]=\"'Select multiple options'\"\r\n            [useContentWidth]=\"false\"\r\n          >\r\n          </kc-dropdown-multiselect>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Empty Options</h3>\r\n          <kc-dropdown-multiselect\r\n            [options]=\"emptyOptions\"\r\n            [placeholder]=\"'No options available'\"\r\n            [isSearchable]=\"true\"\r\n          >\r\n          </kc-dropdown-multiselect>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Custom Empty State</h3>\r\n          <kc-dropdown-multiselect\r\n            [options]=\"emptyOptions\"\r\n            [placeholder]=\"'With custom empty state'\"\r\n            [isSearchable]=\"true\"\r\n          >\r\n            <div emptyStateTemplate class=\"custom-empty-state\">\r\n              <svg\r\n                xmlns=\"http://www.w3.org/2000/svg\"\r\n                width=\"24\"\r\n                height=\"24\"\r\n                viewBox=\"0 0 24 24\"\r\n                fill=\"none\"\r\n                stroke=\"currentColor\"\r\n                stroke-width=\"2\"\r\n                stroke-linecap=\"round\"\r\n                stroke-linejoin=\"round\"\r\n              >\r\n                <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\r\n                <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line>\r\n                <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>\r\n              </svg>\r\n              <p>No options available</p>\r\n            </div>\r\n          </kc-dropdown-multiselect>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>With Long Options</h3>\r\n          <kc-dropdown-multiselect\r\n            [options]=\"longOptions\"\r\n            [placeholder]=\"'Select with long text'\"\r\n            [useContentWidth]=\"true\"\r\n          >\r\n          </kc-dropdown-multiselect>\r\n        </div>\r\n      </div>\r\n    </section>\r\n\r\n    <section #sectionModals id=\"modals\" class=\"component-section\">\r\n      <h2>Modal</h2>\r\n\r\n      <div class=\"component-examples\">\r\n        <div class=\"example-card\">\r\n          <h3>Base Modal Example</h3>\r\n          <p>Click the button below to open a modal</p>\r\n          <kc-button\r\n            [text]=\"'Open Modal'\"\r\n            (click)=\"openModal('basic')\"\r\n          ></kc-button>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Modal with Icon</h3>\r\n          <p>Modal with a custom title icon</p>\r\n          <kc-button\r\n            [text]=\"'Open Modal with Icon'\"\r\n            (click)=\"openModal('withIcon')\"\r\n            [prefixIcon]=\"'icon-chain'\"\r\n          ></kc-button>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Auto Width Modal</h3>\r\n          <p>\r\n            Modal that adjusts to content width instead of using fixed width\r\n          </p>\r\n          <div style=\"display: flex; gap: 8px\">\r\n            <kc-button\r\n              [text]=\"'Open Auto Width Modal'\"\r\n              (click)=\"openModal('autoWidth')\"\r\n              [variant]=\"'secondary'\"\r\n            ></kc-button>\r\n            <kc-button\r\n              [text]=\"'Compare with Regular'\"\r\n              (click)=\"openModal('basic')\"\r\n              [variant]=\"'tertiary'\"\r\n              [size]=\"'sm'\"\r\n            ></kc-button>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </section>\r\n\r\n    <section #sectionIcons id=\"icons\" class=\"component-section\">\r\n      <h2>Icon</h2>\r\n\r\n      <div class=\"component-examples\">\r\n        <div class=\"example-card\">\r\n          <h3>Basic Icon</h3>\r\n          <kc-icon [iconClass]=\"'icon-chain'\"></kc-icon>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Colored Icon</h3>\r\n          <kc-icon [iconClass]=\"'icon-chain'\" [color]=\"'#a2fff1'\"></kc-icon>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Medium Size</h3>\r\n          <kc-icon\r\n            [iconClass]=\"'icon-chain'\"\r\n            [iconSize]=\"componentSizes['MD']\"\r\n          ></kc-icon>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Large Size</h3>\r\n          <kc-icon\r\n            [iconClass]=\"'icon-chain'\"\r\n            [iconSize]=\"componentSizes['LG']\"\r\n          ></kc-icon>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Disabled Icon</h3>\r\n          <div style=\"opacity: 0.5\">\r\n            <kc-icon [iconClass]=\"'icon-chain'\"></kc-icon>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </section>\r\n\r\n    <section #sectionInputs id=\"inputs\" class=\"component-section\">\r\n      <h2>Input</h2>\r\n\r\n      <div class=\"input-examples-container\">\r\n        <div class=\"example-container\">\r\n          <h3>Basic Input</h3>\r\n          <kc-input [placeholder]=\"'Enter text'\"></kc-input>\r\n        </div>\r\n\r\n        <div class=\"example-container\">\r\n          <h3>Input with Label</h3>\r\n          <kc-input\r\n            [label]=\"'Username'\"\r\n            [placeholder]=\"'Enter username'\"\r\n          ></kc-input>\r\n        </div>\r\n\r\n        <div class=\"example-container\">\r\n          <h3>Input with Prefix Icon</h3>\r\n          <kc-input\r\n            [prefixIcon]=\"'icon-chain'\"\r\n            [placeholder]=\"'Input with icon'\"\r\n          ></kc-input>\r\n        </div>\r\n\r\n        <div class=\"example-container\">\r\n          <h3>Input with Suffix Icon</h3>\r\n          <kc-input\r\n            [suffixIcon]=\"'icon-chain'\"\r\n            [placeholder]=\"'Input with icon'\"\r\n          ></kc-input>\r\n        </div>\r\n\r\n        <div class=\"example-container\">\r\n          <h3>Full Width Input</h3>\r\n          <kc-input\r\n            [isFullWidth]=\"true\"\r\n            [placeholder]=\"'Full width input'\"\r\n          ></kc-input>\r\n        </div>\r\n\r\n        <div class=\"example-container\">\r\n          <h3>Disabled Input</h3>\r\n          <kc-input\r\n            [isDisabled]=\"true\"\r\n            [placeholder]=\"'Disabled input'\"\r\n          ></kc-input>\r\n        </div>\r\n\r\n        <div class=\"example-container\">\r\n          <h3>Number Input 0 to 100</h3>\r\n          <kc-input\r\n            [type]=\"'number'\"\r\n            [placeholder]=\"'Enter a number'\"\r\n            [min]=\"0\"\r\n            [max]=\"100\"\r\n          ></kc-input>\r\n        </div>\r\n\r\n        <div class=\"example-container\">\r\n          <h3>Text Input with Length Limits</h3>\r\n          <kc-input\r\n            [type]=\"'text'\"\r\n            [placeholder]=\"'Enter 3-10 characters'\"\r\n            [min]=\"3\"\r\n            [max]=\"10\"\r\n          ></kc-input>\r\n        </div>\r\n\r\n        <div class=\"example-container\">\r\n          <h3>Valid Input (External Validation)</h3>\r\n          <kc-input\r\n            [placeholder]=\"'This input is valid'\"\r\n            [isValid]=\"true\"\r\n          ></kc-input>\r\n        </div>\r\n\r\n        <div class=\"example-container\">\r\n          <h3>Invalid Input (External Validation)</h3>\r\n          <kc-input\r\n            [placeholder]=\"'This input is invalid'\"\r\n            [isValid]=\"false\"\r\n          ></kc-input>\r\n        </div>\r\n\r\n        <div class=\"example-container\">\r\n          <h3>Invalid with Min/Max Validation</h3>\r\n          <kc-input\r\n            [type]=\"'number'\"\r\n            [placeholder]=\"'Enter 1-10 (will be invalid)'\"\r\n            [min]=\"1\"\r\n            [max]=\"10\"\r\n            [isValid]=\"true\"\r\n            [(ngModel)]=\"numberOutOfRange\"\r\n          >\r\n          </kc-input>\r\n          <div class=\"controls-row\">\r\n            <kc-button\r\n              [text]=\"'Set to 15'\"\r\n              (click)=\"numberOutOfRange = 15\"\r\n              [size]=\"'sm'\"\r\n            ></kc-button>\r\n            <kc-button\r\n              [text]=\"'Set to 5'\"\r\n              (click)=\"numberOutOfRange = 5\"\r\n              [size]=\"'sm'\"\r\n            ></kc-button>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-container\">\r\n          <h3>Toggle Validation State</h3>\r\n          <kc-input\r\n            [placeholder]=\"'Validation toggles on button click'\"\r\n            [isValid]=\"dynamicValidState\"\r\n            [invalidReason]=\"'Invalid input'\"\r\n            [(ngModel)]=\"validatedInputValue\"\r\n          >\r\n          </kc-input>\r\n          <div class=\"controls-row\">\r\n            <kc-button\r\n              [text]=\"'Toggle Valid/Invalid'\"\r\n              (click)=\"toggleValidationState()\"\r\n              [size]=\"'sm'\"\r\n            ></kc-button>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-container\">\r\n          <h3>Toggle Validation State Prepadded</h3>\r\n          <kc-input\r\n            [placeholder]=\"'Validation toggles on button click'\"\r\n            [isValid]=\"dynamicValidState\"\r\n            [invalidReason]=\"'Invalid input'\"\r\n            [prepadInvalidReason]=\"true\"\r\n            [(ngModel)]=\"validatedInputValue\"\r\n          >\r\n          </kc-input>\r\n          <div class=\"controls-row\">\r\n            <kc-button\r\n              [text]=\"'Toggle Valid/Invalid'\"\r\n              (click)=\"toggleValidationState()\"\r\n              [size]=\"'sm'\"\r\n            ></kc-button>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-container\">\r\n          <h3>Validation Change Event</h3>\r\n          <kc-input\r\n            [placeholder]=\"'Type more than 5 characters'\"\r\n            [isValid]=\"true\"\r\n            [min]=\"5\"\r\n            [(ngModel)]=\"validationEventValue\"\r\n            (validationChange)=\"onValidationChange($event)\"\r\n          >\r\n          </kc-input>\r\n          <p class=\"validation-status\">\r\n            Current status:\r\n            <span\r\n              [class.valid-text]=\"validationStatus\"\r\n              [class.invalid-text]=\"!validationStatus\"\r\n            >\r\n              {{ validationStatus ? \"Valid\" : \"Invalid\" }}\r\n            </span>\r\n          </p>\r\n        </div>\r\n      </div>\r\n    </section>\r\n\r\n    <section #sectionSnackbar id=\"snackbar\" class=\"component-section\">\r\n      <h2>Snackbar</h2>\r\n\r\n      <div class=\"component-examples\">\r\n        <div class=\"example-card\">\r\n          <h3>Notification Types</h3>\r\n          <div class=\"buttons-row\">\r\n            <kc-button\r\n              [text]=\"'Success'\"\r\n              (click)=\"showNotification(NotificationType.Success)\"\r\n            ></kc-button>\r\n            <kc-button\r\n              [text]=\"'Error'\"\r\n              (click)=\"showNotification(NotificationType.Error)\"\r\n            ></kc-button>\r\n            <kc-button\r\n              [text]=\"'Warning'\"\r\n              (click)=\"showNotification(NotificationType.Warning)\"\r\n            ></kc-button>\r\n            <kc-button\r\n              [text]=\"'Info'\"\r\n              (click)=\"showNotification(NotificationType.Info)\"\r\n            ></kc-button>\r\n            <kc-button\r\n              [text]=\"'Neutral'\"\r\n              (click)=\"showNotification(NotificationType.Neutral)\"\r\n            ></kc-button>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Custom Template Notifications</h3>\r\n          <div class=\"custom-snackbar-demo\">\r\n            <div class=\"buttons-row\">\r\n              <kc-button\r\n                [text]=\"'Show Custom Success'\"\r\n                (click)=\"showCustomSuccess()\"\r\n              ></kc-button>\r\n              <kc-button\r\n                [text]=\"'Show Custom Error'\"\r\n                (click)=\"showCustomError()\"\r\n              ></kc-button>\r\n            </div>\r\n          </div>\r\n\r\n          <!-- Success Template -->\r\n          <ng-template\r\n            #successTemplate\r\n            let-title=\"title\"\r\n            let-message=\"message\"\r\n            let-onActionClick=\"onActionClick\"\r\n          >\r\n            <div class=\"custom-template-content\">\r\n              <kc-icon\r\n                iconClass=\"icon-check-circle\"\r\n                [iconSize]=\"'sm'\"\r\n              ></kc-icon>\r\n              <div class=\"message-container\">\r\n                <p>{{ message }}</p>\r\n              </div>\r\n              <kc-button [text]=\"'OK'\" [size]=\"'xs'\" (click)=\"onActionClick()\">\r\n              </kc-button>\r\n            </div>\r\n          </ng-template>\r\n\r\n          <!-- Error Template -->\r\n          <ng-template\r\n            #errorTemplate\r\n            let-title=\"title\"\r\n            let-description=\"description\"\r\n            let-errorCode=\"errorCode\"\r\n            let-onRetry=\"onRetry\"\r\n            let-onDismiss=\"onDismiss\"\r\n          >\r\n            <div class=\"custom-template-content\">\r\n              <kc-icon iconClass=\"icon-x-circle\" [iconSize]=\"'sm'\"></kc-icon>\r\n              <div class=\"message-container\">\r\n                <p>{{ description }}</p>\r\n                <p class=\"error-code\">Error code: {{ errorCode }}</p>\r\n              </div>\r\n              <div class=\"action-buttons\">\r\n                <kc-button [text]=\"'Retry'\" [size]=\"'xs'\" (click)=\"onRetry()\">\r\n                </kc-button>\r\n                <kc-button\r\n                  [text]=\"'Dismiss'\"\r\n                  [size]=\"'xs'\"\r\n                  (click)=\"onDismiss()\"\r\n                >\r\n                </kc-button>\r\n              </div>\r\n            </div>\r\n          </ng-template>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>How to Use</h3>\r\n          <pre class=\"code-example\">\r\n// Import the component and service\r\nimport &#123; KcSnackbarComponent, NotificationService, NotificationType &#125; from 'kaspacom-ui';\r\n\r\n// Add component to your imports\r\n&#64;Component(&#123;\r\n  imports: [KcSnackbarComponent]\r\n&#125;)\r\n\r\n// Add to template\r\n&lt;kc-snackbar&gt;&lt;/kc-snackbar&gt;\r\n\r\n// Inject service and use\r\nconstructor(private notificationService: NotificationService) &#123;&#125;\r\n\r\n// Display a notification\r\nthis.notificationService.success('Success!', 'Operation completed');\r\nthis.notificationService.error('Error', 'Something went wrong');\r\n// etc.\r\n\r\n// Using with custom templates\r\n&#64;ViewChild('myTemplate', &#123; static: true &#125;) myTemplate!: TemplateRef&lt;any&gt;;\r\n\r\n// Show with template\r\nthis.notificationService.successTemplate(\r\n  this.myTemplate, \r\n  &#123; \r\n    // Custom data for your template \r\n    title: 'My title',\r\n    message: 'Custom message',\r\n    onAction: () => console.log('Action clicked') \r\n  &#125;,\r\n  5000 // Duration in ms\r\n);\r\n          </pre>\r\n        </div>\r\n      </div>\r\n    </section>\r\n\r\n    <!-- Card Section -->\r\n    <section #sectionCard id=\"card\" class=\"component-section\">\r\n      <h2>Card</h2>\r\n\r\n      <div class=\"component-examples\">\r\n        <div class=\"example-card\">\r\n          <h3>Basic Card</h3>\r\n          <kc-card [title]=\"'Card Title'\">\r\n            <p>This is a basic card with a header (default) and content.</p>\r\n          </kc-card>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Without Header</h3>\r\n          <kc-card [showHeader]=\"false\">\r\n            <p>This card has no header, only content.</p>\r\n          </kc-card>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>With Prefix Icon</h3>\r\n          <kc-card [title]=\"'Card with Icon'\" [prefixIcon]=\"'icon-chain'\">\r\n            <p>This card has a prefix icon in its header.</p>\r\n          </kc-card>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Without Header Separator</h3>\r\n          <kc-card [title]=\"'No Separator'\" [showHeaderSeparator]=\"false\">\r\n            <p>This card has a header without the bottom separator line.</p>\r\n          </kc-card>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>With Left Slot</h3>\r\n          <kc-card [title]=\"'Left Slot Card'\">\r\n            <span leftSlot class=\"badge-info\">New</span>\r\n            <p>This card has content in the left slot of its header.</p>\r\n          </kc-card>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>With Close Button</h3>\r\n          <kc-card [title]=\"'Closable Card'\" [isClosable]=\"true\">\r\n            <p>This card has a close button in its header.</p>\r\n          </kc-card>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>With Right Slot</h3>\r\n          <kc-card [title]=\"'Right Slot Card'\">\r\n            <button rightSlot class=\"icon-button\">\r\n              <kc-icon iconClass=\"icon-chain\"></kc-icon>\r\n            </button>\r\n            <p>This card has content in the right slot of its header.</p>\r\n          </kc-card>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>With Footer</h3>\r\n          <kc-card [title]=\"'Card with Footer'\">\r\n            <p>This card has both content and a footer section.</p>\r\n            <div footerSlot class=\"card-footer-content\">\r\n              <kc-button\r\n                [text]=\"'Action'\"\r\n                [size]=\"componentSizes['SM']\"\r\n              ></kc-button>\r\n            </div>\r\n          </kc-card>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Small Size Title</h3>\r\n          <kc-card [title]=\"'Small Card Title'\" [size]=\"componentSizes['SM']\">\r\n            <p>This card has a small-sized title.</p>\r\n          </kc-card>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Medium Size Title</h3>\r\n          <kc-card [title]=\"'Medium Card Title'\" [size]=\"componentSizes['MD']\">\r\n            <p>This card has a medium-sized title (default).</p>\r\n          </kc-card>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Large Size Title</h3>\r\n          <kc-card [title]=\"'Large Card Title'\" [size]=\"componentSizes['LG']\">\r\n            <p>This card has a large-sized title.</p>\r\n          </kc-card>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Fixed Width Card</h3>\r\n          <kc-card\r\n            [title]=\"'Fixed Width'\"\r\n            [fullWidth]=\"false\"\r\n            [width]=\"'200px'\"\r\n          >\r\n            <p>This card has a fixed width of 200px.</p>\r\n          </kc-card>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Min/Max Width Card</h3>\r\n          <kc-card\r\n            [title]=\"'Min/Max Width'\"\r\n            [fullWidth]=\"false\"\r\n            [minWidth]=\"'150px'\"\r\n            [maxWidth]=\"'300px'\"\r\n          >\r\n            <p>This card has min-width of 150px and max-width of 300px.</p>\r\n          </kc-card>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Max Height Card</h3>\r\n          <kc-card [title]=\"'Height Limited'\" [maxHeight]=\"'200px'\">\r\n            <p>\r\n              This card has a max-height of 200px with vertical scrolling when\r\n              content exceeds the limit.\r\n            </p>\r\n            <p>\r\n              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam\r\n              auctor, nisl eget ultricies tincidunt, nisl nisl aliquam nisl,\r\n              eget aliquam nisl nisl eget nisl. Nullam auctor, nisl eget\r\n              ultricies tincidunt.\r\n            </p>\r\n            <p>\r\n              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam\r\n              auctor, nisl eget ultricies tincidunt, nisl nisl aliquam nisl,\r\n              eget aliquam nisl nisl eget nisl. Nullam auctor, nisl eget\r\n              ultricies tincidunt.\r\n            </p>\r\n            <p>\r\n              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam\r\n              auctor, nisl eget ultricies tincidunt, nisl nisl aliquam nisl,\r\n              eget aliquam nisl nisl eget nisl. Nullam auctor, nisl eget\r\n              ultricies tincidunt.\r\n            </p>\r\n          </kc-card>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Combination Example</h3>\r\n          <kc-card\r\n            [title]=\"'Complete Card'\"\r\n            [prefixIcon]=\"'icon-chain'\"\r\n            [isClosable]=\"true\"\r\n            [size]=\"componentSizes['LG']\"\r\n            [fullWidth]=\"false\"\r\n            [width]=\"'100%'\"\r\n            [maxWidth]=\"'400px'\"\r\n          >\r\n            <span leftSlot class=\"badge-primary\">Featured</span>\r\n            <button rightSlot class=\"icon-button\">\r\n              <kc-icon iconClass=\"icon-chain\"></kc-icon>\r\n            </button>\r\n            <p>\r\n              This is a complete card example with multiple options combined.\r\n            </p>\r\n            <p>It demonstrates how various properties work together.</p>\r\n            <div footerSlot class=\"card-footer-actions\">\r\n              <kc-button\r\n                [text]=\"'Cancel'\"\r\n                [size]=\"componentSizes['SM']\"\r\n              ></kc-button>\r\n              <kc-button\r\n                [text]=\"'Save'\"\r\n                [size]=\"componentSizes['SM']\"\r\n              ></kc-button>\r\n            </div>\r\n          </kc-card>\r\n        </div>\r\n      </div>\r\n    </section>\r\n\r\n    <section #sectionChips id=\"chips\" class=\"component-section\">\r\n      <h2>Chips</h2>\r\n\r\n      <div class=\"component-examples\">\r\n        <div class=\"example-card\">\r\n          <h3>Chip Variants</h3>\r\n          <div class=\"chips-row\">\r\n            <kc-chip [text]=\"'Success'\" [variant]=\"'success'\"></kc-chip>\r\n            <kc-chip [text]=\"'Error'\" [variant]=\"'error'\"></kc-chip>\r\n            <kc-chip [text]=\"'Warning'\" [variant]=\"'warning'\"></kc-chip>\r\n            <kc-chip [text]=\"'Info'\" [variant]=\"'info'\"></kc-chip>\r\n            <kc-chip [text]=\"'Neutral'\" [variant]=\"'neutral'\"></kc-chip>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Chip Sizes</h3>\r\n          <div class=\"chips-row\">\r\n            <kc-chip\r\n              [text]=\"'XS Size'\"\r\n              [size]=\"'xs'\"\r\n              [variant]=\"'success'\"\r\n            ></kc-chip>\r\n            <kc-chip\r\n              [text]=\"'SM Size'\"\r\n              [size]=\"'sm'\"\r\n              [variant]=\"'success'\"\r\n            ></kc-chip>\r\n            <kc-chip\r\n              [text]=\"'MD Size'\"\r\n              [size]=\"'md'\"\r\n              [variant]=\"'success'\"\r\n            ></kc-chip>\r\n            <kc-chip\r\n              [text]=\"'LG Size'\"\r\n              [size]=\"'lg'\"\r\n              [variant]=\"'success'\"\r\n            ></kc-chip>\r\n            <kc-chip\r\n              [text]=\"'XLG Size'\"\r\n              [size]=\"'xlg'\"\r\n              [variant]=\"'success'\"\r\n            ></kc-chip>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Chips with Icons</h3>\r\n          <div class=\"chips-row\">\r\n            <kc-chip\r\n              [text]=\"'With Prefix Icon'\"\r\n              [variant]=\"'info'\"\r\n              [prefixIcon]=\"'icon-chain'\"\r\n            >\r\n            </kc-chip>\r\n            <kc-chip\r\n              [text]=\"'With Suffix Icon'\"\r\n              [variant]=\"'warning'\"\r\n              [suffixIcon]=\"'icon-chain'\"\r\n            >\r\n            </kc-chip>\r\n            <kc-chip\r\n              [text]=\"'With Both Icons'\"\r\n              [variant]=\"'error'\"\r\n              [prefixIcon]=\"'icon-chain'\"\r\n              [suffixIcon]=\"'icon-chain'\"\r\n            >\r\n            </kc-chip>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </section>\r\n\r\n    <section #sectionTooltip id=\"tooltip\" class=\"component-section\">\r\n      <h2>Tooltip</h2>\r\n\r\n      <div class=\"component-examples\">\r\n        <div class=\"example-card\">\r\n          <h3>Basic Tooltip</h3>\r\n          <div class=\"tooltip-demo-container\">\r\n            <button class=\"demo-button\" [kcTooltip]=\"'This is a basic tooltip'\">\r\n              Hover me\r\n            </button>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Tooltip Positions</h3>\r\n          <div class=\"tooltip-demo-container tooltip-positions\">\r\n            <button\r\n              class=\"demo-button\"\r\n              [kcTooltip]=\"'Tooltip on top'\"\r\n              [tooltipPosition]=\"'top'\"\r\n            >\r\n              Top\r\n            </button>\r\n            <button\r\n              class=\"demo-button\"\r\n              [kcTooltip]=\"'Tooltip on right'\"\r\n              [tooltipPosition]=\"'right'\"\r\n            >\r\n              Right\r\n            </button>\r\n            <button\r\n              class=\"demo-button\"\r\n              [kcTooltip]=\"'Tooltip on bottom'\"\r\n              [tooltipPosition]=\"'bottom'\"\r\n            >\r\n              Bottom\r\n            </button>\r\n            <button\r\n              class=\"demo-button\"\r\n              [kcTooltip]=\"'Tooltip on left'\"\r\n              [tooltipPosition]=\"'left'\"\r\n            >\r\n              Left\r\n            </button>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Tooltip with Custom Color</h3>\r\n          <div class=\"tooltip-demo-container\">\r\n            <button\r\n              class=\"demo-button\"\r\n              [kcTooltip]=\"'This is a tooltip with custom color'\"\r\n              [tooltipTextColor]=\"'var(--kaspa-10)'\"\r\n            >\r\n              Custom Color\r\n            </button>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Tooltip with Prefix Icon</h3>\r\n          <div class=\"tooltip-demo-container\">\r\n            <button\r\n              class=\"demo-button\"\r\n              [kcTooltip]=\"'Tooltip with prefix icon'\"\r\n              [tooltipPrefixIcon]=\"'icon-chain'\"\r\n              [tooltipPrefixIconColor]=\"'var(--kaspa-10)'\"\r\n            >\r\n              Prefix Icon\r\n            </button>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Tooltip with Suffix Icon</h3>\r\n          <div class=\"tooltip-demo-container\">\r\n            <button\r\n              class=\"demo-button\"\r\n              [kcTooltip]=\"'Tooltip with suffix icon'\"\r\n              [tooltipSuffixIcon]=\"'icon-chain'\"\r\n              [tooltipSuffixIconColor]=\"'var(--purple-10)'\"\r\n            >\r\n              Suffix Icon\r\n            </button>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Tooltip with Both Icons</h3>\r\n          <div class=\"tooltip-demo-container\">\r\n            <button\r\n              class=\"demo-button\"\r\n              [kcTooltip]=\"'Tooltip with both icons'\"\r\n              [tooltipPrefixIcon]=\"'icon-chain'\"\r\n              [tooltipPrefixIconColor]=\"'var(--green-10)'\"\r\n              [tooltipSuffixIcon]=\"'icon-chain'\"\r\n              [tooltipSuffixIconColor]=\"'var(--blue-10)'\"\r\n            >\r\n              Both Icons\r\n            </button>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Tooltip on Icon</h3>\r\n          <div class=\"tooltip-demo-container\">\r\n            <span class=\"icon-with-tooltip\" [kcTooltip]=\"'Tooltip on an icon'\">\r\n              <kc-icon [iconClass]=\"'icon-chain'\" [size]=\"'sm'\"></kc-icon>\r\n            </span>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Tooltip with Custom Template</h3>\r\n          <div class=\"tooltip-demo-container\">\r\n            <button\r\n              class=\"demo-button\"\r\n              kcTooltip\r\n              [tooltipTemplate]=\"customTooltipTemplate\"\r\n              [tooltipPosition]=\"'top'\"\r\n            >\r\n              Custom Template\r\n            </button>\r\n            \r\n            <ng-template #customTooltipTemplate>\r\n              <div style=\"display: flex; align-items: center; gap: 8px;\">\r\n                <kc-icon [iconClass]=\"'icon-chain'\" [size]=\"'sm'\" style=\"color: var(--kaspa-10);\"></kc-icon>\r\n                <div>\r\n                  <div style=\"font-weight: 600; font-size: 14px;\">Custom Tooltip</div>\r\n                  <div style=\"font-size: 12px; opacity: 0.8;\">With rich content</div>\r\n                </div>\r\n              </div>\r\n            </ng-template>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Advanced Template Tooltip</h3>\r\n          <div class=\"tooltip-demo-container\">\r\n            <button\r\n              class=\"demo-button\"\r\n              kcTooltip\r\n              [tooltipTemplate]=\"advancedTooltipTemplate\"\r\n              [tooltipPosition]=\"'right'\"\r\n            >\r\n              Advanced Template\r\n            </button>\r\n            \r\n            <ng-template #advancedTooltipTemplate>\r\n              <div style=\"max-width: 200px;\">\r\n                <div style=\"display: flex; align-items: center; gap: 6px; margin-bottom: 8px;\">\r\n                  <kc-chip [text]=\"'NEW'\" [variant]=\"'success'\" [size]=\"'xs'\"></kc-chip>\r\n                  <span style=\"font-weight: 600;\">Feature Update</span>\r\n                </div>\r\n                <div style=\"font-size: 13px; line-height: 1.4; margin-bottom: 8px;\">\r\n                  This tooltip demonstrates advanced template functionality with components and styling.\r\n                </div>\r\n                <div style=\"display: flex; gap: 4px; font-size: 11px; opacity: 0.7;\">\r\n                  <span>📅 2024</span>\r\n                  <span>•</span>\r\n                  <span>✨ Enhanced</span>\r\n                </div>\r\n              </div>\r\n            </ng-template>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </section>\r\n\r\n    <!-- Switch Navigation Section -->\r\n    <section id=\"sectionSwitchNav\" #sectionSwitchNav class=\"component-section\">\r\n      <h2 class=\"section-title\">Switch Navigation</h2>\r\n\r\n      <div class=\"demo-area\">\r\n        <div class=\"demo-row\">\r\n          <h3>Basic Usage</h3>\r\n          <kc-switch-navigation\r\n            [options]=\"switchNavOptions\"\r\n            [currentActive]=\"switchNavCurrentActive\"\r\n            variant=\"primary\"\r\n            size=\"md\"\r\n            (selectOption)=\"onSwitchNavSelect($event)\"\r\n          ></kc-switch-navigation>\r\n        </div>\r\n\r\n        <div class=\"demo-row\">\r\n          <h3>Variants</h3>\r\n          <div class=\"vertical-stack\">\r\n            <p>Primary</p>\r\n            <kc-switch-navigation\r\n              [options]=\"switchNavOptions\"\r\n              [currentActive]=\"switchNavCurrentActive\"\r\n              variant=\"primary\"\r\n              size=\"md\"\r\n              (selectOption)=\"onSwitchNavSelect($event)\"\r\n            ></kc-switch-navigation>\r\n\r\n            <p>Secondary</p>\r\n            <kc-switch-navigation\r\n              [options]=\"switchNavOptions\"\r\n              [currentActive]=\"switchNavCurrentActive\"\r\n              variant=\"secondary\"\r\n              size=\"md\"\r\n              (selectOption)=\"onSwitchNavSelect($event)\"\r\n            ></kc-switch-navigation>\r\n\r\n            <p>Tertiary</p>\r\n            <kc-switch-navigation\r\n              [options]=\"switchNavOptions\"\r\n              [currentActive]=\"switchNavCurrentActive\"\r\n              variant=\"tertiary\"\r\n              size=\"md\"\r\n              (selectOption)=\"onSwitchNavSelect($event)\"\r\n            ></kc-switch-navigation>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"demo-row\">\r\n          <h3>Sizes</h3>\r\n          <div class=\"vertical-stack\">\r\n            <p>XS</p>\r\n            <kc-switch-navigation\r\n              [options]=\"switchNavOptions\"\r\n              [currentActive]=\"switchNavCurrentActive\"\r\n              variant=\"primary\"\r\n              size=\"xs\"\r\n              (selectOption)=\"onSwitchNavSelect($event)\"\r\n            ></kc-switch-navigation>\r\n\r\n            <p>SM</p>\r\n            <kc-switch-navigation\r\n              [options]=\"switchNavOptions\"\r\n              [currentActive]=\"switchNavCurrentActive\"\r\n              variant=\"primary\"\r\n              size=\"sm\"\r\n              (selectOption)=\"onSwitchNavSelect($event)\"\r\n            ></kc-switch-navigation>\r\n\r\n            <p>MD</p>\r\n            <kc-switch-navigation\r\n              [options]=\"switchNavOptions\"\r\n              [currentActive]=\"switchNavCurrentActive\"\r\n              variant=\"primary\"\r\n              size=\"md\"\r\n              (selectOption)=\"onSwitchNavSelect($event)\"\r\n            ></kc-switch-navigation>\r\n\r\n            <p>LG</p>\r\n            <kc-switch-navigation\r\n              [options]=\"switchNavOptions\"\r\n              [currentActive]=\"switchNavCurrentActive\"\r\n              variant=\"primary\"\r\n              size=\"lg\"\r\n              (selectOption)=\"onSwitchNavSelect($event)\"\r\n            ></kc-switch-navigation>\r\n\r\n            <p>XLG</p>\r\n            <kc-switch-navigation\r\n              [options]=\"switchNavOptions\"\r\n              [currentActive]=\"switchNavCurrentActive\"\r\n              variant=\"primary\"\r\n              size=\"xlg\"\r\n              (selectOption)=\"onSwitchNavSelect($event)\"\r\n            ></kc-switch-navigation>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"demo-row\">\r\n          <h3>Disabled State</h3>\r\n          <kc-switch-navigation\r\n            [options]=\"switchNavOptions\"\r\n            [currentActive]=\"switchNavCurrentActive\"\r\n            variant=\"primary\"\r\n            size=\"md\"\r\n            [disabled]=\"true\"\r\n            (selectOption)=\"onSwitchNavSelect($event)\"\r\n          ></kc-switch-navigation>\r\n        </div>\r\n      </div>\r\n    </section>\r\n  </main>\r\n\r\n  <!-- Global Modals -->\r\n  <div *ngIf=\"activeModal === 'basic'\" class=\"modal-overlay\">\r\n    <kc-base-modal\r\n      [title]=\"'Example Modal'\"\r\n      [showCloseButton]=\"true\"\r\n      (close)=\"closeModal()\"\r\n    >\r\n      <div class=\"modal-content\">\r\n        <p>This is a basic modal example. You can put any content here.</p>\r\n        <kc-button [text]=\"'Close'\" (click)=\"closeModal()\"></kc-button>\r\n      </div>\r\n    </kc-base-modal>\r\n  </div>\r\n\r\n  <div *ngIf=\"activeModal === 'withIcon'\" class=\"modal-overlay\">\r\n    <kc-base-modal\r\n      [title]=\"'Modal with Icon'\"\r\n      [titleIconClass]=\"'icon-chain'\"\r\n      [showCloseButton]=\"true\"\r\n      (close)=\"closeModal()\"\r\n    >\r\n      <div class=\"modal-content\">\r\n        <p>\r\n          This is a modal with a title icon. Notice the chain icon in the title.\r\n        </p>\r\n        <kc-button\r\n          [text]=\"'Close'\"\r\n          [prefixIcon]=\"'icon-chain'\"\r\n          (click)=\"closeModal()\"\r\n        ></kc-button>\r\n      </div>\r\n    </kc-base-modal>\r\n  </div>\r\n\r\n  <div *ngIf=\"activeModal === 'autoWidth'\" class=\"modal-overlay\">\r\n    <kc-base-modal\r\n      [title]=\"'Auto Width Modal'\"\r\n      [titleIconClass]=\"'icon-chain'\"\r\n      [showCloseButton]=\"true\"\r\n      [autoWidth]=\"true\"\r\n      (close)=\"closeModal()\"\r\n    >\r\n      <div class=\"modal-content\">\r\n        <p>\r\n          This modal adjusts its width to fit the content instead of using a\r\n          fixed width.\r\n        </p>\r\n        <p>Perfect for forms, confirmations, or content that varies in size.</p>\r\n\r\n        <div style=\"margin: 16px 0\">\r\n          <kc-input\r\n            [placeholder]=\"'Enter your name'\"\r\n            [label]=\"'Name'\"\r\n          ></kc-input>\r\n        </div>\r\n\r\n        <div\r\n          style=\"\r\n            display: flex;\r\n            gap: 8px;\r\n            margin-top: 20px;\r\n            justify-content: flex-end;\r\n          \"\r\n        >\r\n          <kc-button\r\n            [text]=\"'Cancel'\"\r\n            [variant]=\"'secondary'\"\r\n            [size]=\"'sm'\"\r\n            (click)=\"closeModal()\"\r\n          ></kc-button>\r\n          <kc-button\r\n            [text]=\"'Confirm'\"\r\n            [size]=\"'sm'\"\r\n            (click)=\"closeModal()\"\r\n          ></kc-button>\r\n        </div>\r\n      </div>\r\n    </kc-base-modal>\r\n  </div>\r\n\r\n  <!-- Snackbar Component -->\r\n  <kc-snackbar></kc-snackbar>\r\n</div>\r\n","/*\n * Public API Surface of kaspacom-ui\n */\n\n// Modal Components\nexport * from './lib/modals/kc-base-modal/kc-base-modal.component';\n\n// Form Controls\nexport * from './lib/form-controls/components/button/button.component';\nexport * from './lib/form-controls/components/checkbox/checkbox.component';\nexport * from './lib/form-controls/components/dropdown-select/dropdown-select.component';\nexport * from './lib/form-controls/components/dropdown-multiselect/dropdown-multiselect.component';\nexport * from './lib/form-controls/components/chip/chip.component';\nexport * from './lib/form-controls/components/switch-navigation/switch-navigation.component';\nexport * from './lib/form-controls/kc-input/kc-input.component';\n\n// Models from components\nexport * from './lib/form-controls/components/dropdown-select/dropdown-select.models';\nexport * from './lib/form-controls/components/dropdown-multiselect/dropdown-multiselect.models';\nexport * from './lib/form-controls/components/switch-navigation/switch-navigation.types';\n\n// Types\nexport * from './lib/form-controls/types/chip-variant.type';\n\n// Icons\nexport * from './lib/icons/icon/icon.component';\n\n// Card Component\nexport * from './lib/card';\n\n// Other components\nexport * from './lib/loading/spinner/spinner.component';\n\n// Snackbar\nexport * from './lib/snackbar/kc-snackbar/kc-snackbar.component';\nexport * from './lib/snackbar/notification.service';\nexport * from './lib/snackbar/snackbar.models';\n\n// Directives\nexport * from './lib/directives/tooltip';\n\n// Component Showcase\nexport * from './lib/showcase/design-system-showcase.component';\n\n// Enums\n// export * from './lib/form-controls/enums/sizing.enum';\n\n// Services\nexport * from './lib/form-controls/services/responsive.service';\n\n// Note: Styles will be included via ng-package.json assets configuration\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NotificationService","i2","i3"],"mappings":"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"}