{"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/split-button/split-button-options/split-button-options.component.ts","../../../projects/kaspacom-ui/src/lib/form-controls/components/split-button/split-button.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/components/toggle/toggle.component.ts","../../../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/loading/skeleton/skeleton-block.component.ts","../../../projects/kaspacom-ui/src/lib/loading/skeleton/skeleton-block.component.html","../../../projects/kaspacom-ui/src/lib/data/table/table.component.ts","../../../projects/kaspacom-ui/src/lib/data/table/table.component.html","../../../projects/kaspacom-ui/src/lib/data/table/directive/left-sticky.directive.ts","../../../projects/kaspacom-ui/src/lib/data/table/directive/right-sticky.directive.ts","../../../projects/kaspacom-ui/src/lib/data/table/component/sortable.component.ts","../../../projects/kaspacom-ui/src/lib/data/table/component/sortable.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/component/table/table-showcase.component.ts","../../../projects/kaspacom-ui/src/lib/showcase/component/table/table-showcase.component.html","../../../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 {\n  Component,\n  EventEmitter,\n  HostListener,\n  Inject,\n  Input,\n  OnInit,\n  Output,\n} from '@angular/core';\nimport { DOCUMENT, NgClass, NgStyle } from '@angular/common';\nimport { ComponentSize } from '../../form-controls/types/sizing.type';\n\n@Component({\n  // tslint:disable-next-line:component-selector\n  selector: 'kc-icon',\n  templateUrl: './icon.component.html',\n  styleUrls: ['./icon.component.scss'],\n  standalone: true,\n  imports: [NgStyle, NgClass],\n})\nexport class KcIconComponent {\n  @Input() iconClass!: string;\n  @Input() public readonly disabled: boolean = false;\n  @Input() size: ComponentSize = 'sm';\n  @Input() public iconSize: ComponentSize = 'sm';\n  @Input() public readonly classes?: string;\n  @Input() public readonly isDefaultColor: boolean = true;\n  @Input() public color?: string;\n\n  constructor(@Inject(DOCUMENT) private _document: Document) {}\n}\n","<div\n  [class]=\"'icon-wrapper ' + classes\"\n  [ngStyle]=\"{color: color ? color : ''}\"\n  [ngClass]=\"{\n    disabled: disabled,\n    xs: size === 'xs',\n    sm: size === 'sm',\n    md: size === 'md',\n    lg: size === 'lg',\n    xlg: size === 'xlg',\n    'default-color': isDefaultColor\n  }\"\n>\n  <div class=\"{{ iconClass }}\" [ngClass]=\"{icon: color ? false : true}\"></div>\n</div>\n","import { Component, ElementRef, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ComponentSize } from '../../form-controls/types/sizing.type';\nimport { KcIconComponent } from '../../icons/icon/icon.component';\nimport { trigger, transition, style, animate } from '@angular/animations';\n\n@Component({\n  selector: 'kc-base-modal',\n  standalone: true,\n  imports: [CommonModule, KcIconComponent],\n  templateUrl: './kc-base-modal.component.html',\n  styleUrls: ['./kc-base-modal.component.scss'],\n  animations: [\n    trigger('modalSlide', [\n      transition(':enter', [\n        style({ transform: 'translateY(100%)', opacity: 0 }),\n        animate('350ms ease-out', style({ transform: 'translateY(0)', opacity: 1 }))\n      ]),\n      transition(':leave', [\n        animate('300ms ease-in', style({ transform: 'translateY(100%)', opacity: 0 }))\n      ])\n    ]),\n    trigger('overlayFade', [\n      transition(':enter', [\n        style({ opacity: 0 }),\n        animate('250ms ease-out', style({ opacity: 1 }))\n      ]),\n      transition(':leave', [\n        animate('200ms ease-in', style({ opacity: 0 }))\n      ])\n    ])\n  ]\n})\nexport class KcBaseModalComponent {\n  // Inputs\n  showCloseButton = input<boolean>(true);\n  title = input<string | undefined>(undefined);\n  titleIconClass = input<string | undefined>(undefined);\n  showHeaderSeperator = input<boolean>(true);\n  autoWidth = input<boolean>(false);\n\n  // Component size constants for the template\n  componentSizes: Record<string, ComponentSize> = {\n    XS: 'xs',\n    SM: 'sm',\n    MD: 'md',\n    LG: 'lg',\n    XLG: 'xlg'\n  };\n  \n  // Outputs\n  close = output<void>();\n\n  constructor(private el: ElementRef) {}\n\n  onClose(): void {\n    this.el.nativeElement.classList.add('closing');\n\n    setTimeout(() => {\n      this.close.emit();\n    }, 300);\n  }\n}\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';\nimport { NgClass } from '@angular/common';\nimport { ComponentSize } from '../../form-controls/types/sizing.type';\n\n@Component({\n  selector: 'kc-spinner',\n  standalone: true,\n  imports: [NgClass],\n  template: `\n    <div class=\"spinner\" [ngClass]=\"size()\"></div>\n  `,\n  styleUrls: ['./spinner.component.scss']\n})\nexport class KcSpinnerComponent {\n  size = input<ComponentSize>('md');\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 \r\n                [iconClass]=\"prefixIcon()!\" \r\n                [color]=\"prefixIconColor()\"\r\n                [size]=\"getPrefixIconSize()\">\r\n              </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 \r\n                [iconClass]=\"suffixIcon()!\" \r\n                [color]=\"suffixIconColor()\"\r\n                [size]=\"getSuffixIconSize()\">\r\n              </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  prefixIconSize = input<ComponentSize | undefined>(undefined);\r\n  suffixIconSize = input<ComponentSize | 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  \r\n  getPrefixIconSize(): ComponentSize {\r\n    // Use custom size if provided, otherwise default to 'sm'\r\n    return this.prefixIconSize() || 'sm';\r\n  }\r\n  \r\n  getSuffixIconSize(): ComponentSize {\r\n    // Use custom size if provided, otherwise default to 'sm'\r\n    return this.suffixIconSize() || 'sm';\r\n  }\r\n} ","import { Component, forwardRef, input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { ComponentSize } from '../../types/sizing.type';\n\n@Component({\n  selector: 'kc-checkbox',\n  standalone: true,\n  imports: [CommonModule, FormsModule],\n  template: `\n    <div \n      class=\"checkbox-container\" \n      [class.checked]=\"checked\"\n      [class.disabled]=\"isDisabled()\"\n      [ngClass]=\"sizeClass()\"\n      (click)=\"toggle()\"\n    >\n      <div class=\"checkbox\">\n        <div class=\"checkbox-inner\" [class.checked]=\"checked\">\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\">\n            <polyline points=\"20 6 9 17 4 12\"></polyline>\n          </svg>\n        </div>\n      </div>\n      <label *ngIf=\"label()\" class=\"checkbox-label\">{{ label() }}</label>\n    </div>\n  `,\n  styles: [`\n    .checkbox-container {\n      display: inline-flex;\n      align-items: center;\n      gap: 8px;\n      cursor: pointer;\n      user-select: none;\n    }\n    \n    .checkbox-container.disabled {\n      opacity: 0.5;\n      cursor: not-allowed;\n      pointer-events: none;\n    }\n    \n    .checkbox {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n    \n    .checkbox-inner {\n      border-radius: 4px;\n      border: 2px solid var(--gray-50);\n      background-color: var(--gray-20);\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      transition: all 0.2s ease;\n      box-sizing: border-box;\n      position: relative;\n    }\n    \n    .checkbox-inner.checked {\n      border-color: var(--kaspa-50);\n      background-color: var(--kaspa-50);\n    }\n    \n    .checkbox-inner svg {\n      color: white;\n      position: absolute;\n      top: 50%;\n      left: 50%;\n      transform: translate(-50%, -50%);\n      width: 100%;\n      height: 100%;\n    }\n    \n    /* Sizing */\n    .checkbox-container.xs .checkbox-inner {\n      width: 14px;\n      height: 14px;\n      min-width: 14px;\n      min-height: 14px;\n    }\n    \n    .checkbox-container.sm .checkbox-inner {\n      width: 16px;\n      height: 16px;\n      min-width: 16px;\n      min-height: 16px;\n    }\n    \n    .checkbox-container.md .checkbox-inner {\n      width: 18px;\n      height: 18px;\n      min-width: 18px;\n      min-height: 18px;\n    }\n    \n    .checkbox-container.lg .checkbox-inner {\n      width: 20px;\n      height: 20px;\n      min-width: 20px;\n      min-height: 20px;\n    }\n    \n    .checkbox-container.xlg .checkbox-inner {\n      width: 24px;\n      height: 24px;\n      min-width: 24px;\n      min-height: 24px;\n    }\n    \n    .checkbox-container.xs svg {\n      width: 10px !important;\n      height: 10px !important;\n    }\n    \n    .checkbox-container.sm svg {\n      width: 12px !important;\n      height: 12px !important;\n    }\n    \n    .checkbox-container.md svg {\n      width: 14px !important;\n      height: 14px !important;\n    }\n    \n    .checkbox-container.lg svg {\n      width: 16px !important;\n      height: 16px !important;\n    }\n    \n    .checkbox-container.xlg svg {\n      width: 18px !important;\n      height: 18px !important;\n    }\n    \n    /* Typography for labels */\n    .checkbox-container.xs .checkbox-label {\n      font-size: 0.75rem;\n    }\n    \n    .checkbox-container.sm .checkbox-label {\n      font-size: 0.875rem;\n    }\n    \n    .checkbox-container.md .checkbox-label {\n      font-size: 1rem;\n    }\n    \n    .checkbox-container.lg .checkbox-label {\n      font-size: 1.125rem;\n    }\n    \n    .checkbox-container.xlg .checkbox-label {\n      font-size: 1.25rem;\n    }\n  `],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => KcCheckboxComponent),\n      multi: true\n    }\n  ]\n})\nexport class KcCheckboxComponent implements ControlValueAccessor, OnInit, OnChanges {\n  // Inputs\n  size = input<ComponentSize>('md');\n  isDisabled = input<boolean>(false);\n  label = input<string>('');\n  isChecked = input<boolean>(false);\n  \n  // State\n  checked = false;\n  \n  // Output\n  @Output() checkedChange = new EventEmitter<boolean>();\n  \n  // ControlValueAccessor\n  private onChange: (value: boolean) => void = () => {};\n  private onTouched: () => void = () => {};\n  \n  ngOnInit() {\n    // Initialize the checked state from the isChecked input\n    this.checked = this.isChecked();\n  }\n  \n  ngOnChanges(changes: SimpleChanges) {\n    // Update checked state when isChecked input changes\n    if (changes['isChecked']) {\n      this.checked = this.isChecked();\n    }\n  }\n  \n  // Calculate size class\n  sizeClass() {\n    // With string-based types, we can just return the size directly\n    return this.size();\n  }\n  \n  // Toggle the checkbox\n  toggle() {\n    if (this.isDisabled()) {\n      return;\n    }\n    \n    this.onTouched();\n    this.checked = !this.checked;\n    \n    // Update the input value\n    // Emit event for ngModel binding\n    this.checkedChange.emit(this.checked);\n    \n    // Emit event for reactive forms\n    this.onChange(this.checked);\n  }\n  \n  // ControlValueAccessor implementation\n  writeValue(value: boolean): void {\n    this.checked = !!value;\n  }\n  \n  registerOnChange(fn: (value: boolean) => void): void {\n    this.onChange = fn;\n  }\n  \n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n  \n  setDisabledState(isDisabled: boolean): void {\n    // Update the disabled state\n  }\n} ","import { Component, EventEmitter, TemplateRef, Output, OnInit, OnDestroy, Input, ContentChild } from '@angular/core';\nimport { CommonModule, NgClass } from '@angular/common';\nimport { DropdownOption } from '../dropdown-select.models';\nimport { DropdownVariant } from '../../../types/dropdown-variant.type';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { Subject, debounceTime, takeUntil } from 'rxjs';\n\n@Component({\n  selector: 'kc-dropdown-options',\n  standalone: true,\n  imports: [CommonModule, NgClass, ReactiveFormsModule],\n  templateUrl: './dropdown-options.component.html',\n  styleUrls: ['./dropdown-options.component.scss']\n})\nexport class KcDropdownOptionsComponent implements OnInit, OnDestroy {\n  options: DropdownOption[] = [];\n  filteredOptions: DropdownOption[] = [];\n  selectedValue: any = null;\n  variant: DropdownVariant = 'secondary';\n  \n  @Input() optionsEllipsis: boolean = false;\n  @Input() isFullscreenSelection: boolean = false;\n  @Input() isSearchable: boolean = false;\n  @Input() searchField: string = 'label';\n  @Input() customTemplate: TemplateRef<any> | null = null;\n  @ContentChild('emptyStateTemplate') emptyStateTemplate: TemplateRef<any> | null = null;\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\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        this.filterOptions(value || '');\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.selectedValue === option.value;\n  }\n\n  selectOption(option: DropdownOption): void {\n    this.optionSelected.emit(option);\n  }\n  \n  closeFullscreen(): void {\n    this.closeRequested.emit();\n  }\n  \n  getTypographyClass(): string {\n    // Using the same typography class as the dropdown options\n    return 'typo-text-3';\n  }\n  \n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n","<div class=\"dropdown-options-container\" [ngClass]=\"[variant, isFullscreenSelection ? 'fullscreen-mode' : '']\">\n  <!-- Fullscreen header with close button -->\n  <div *ngIf=\"isFullscreenSelection\" class=\"fullscreen-header\">\n    <div class=\"fullscreen-title typo-title-3\">Select an option</div>\n    <button class=\"close-button\" (click)=\"closeFullscreen()\">\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\">\n        <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n        <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n      </svg>\n    </button>\n  </div>\n  \n  <!-- Search input -->\n  <div *ngIf=\"isSearchable\" class=\"search-container\">\n    <div class=\"search-input-wrapper\">\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\">\n        <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\n        <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\n      </svg>\n      <input \n        type=\"text\" \n        class=\"search-input\"\n        [formControl]=\"searchControl\"\n        placeholder=\"Search...\" \n        [ngClass]=\"getTypographyClass()\"\n        autocomplete=\"off\"\n      />\n    </div>\n  </div>\n  \n  <div class=\"options-list\">\n    <div\n      *ngFor=\"let option of filteredOptions\"\n      class=\"dropdown-option\"\n      [class.disabled]=\"option.disabled\"\n      [class.selected]=\"isSelected(option)\"\n      [class.ellipsis]=\"optionsEllipsis\"\n      [class.variant-primary]=\"variant === 'primary'\"\n      [class.variant-secondary]=\"variant === 'secondary'\"\n      [class.variant-tertiary]=\"variant === 'tertiary'\"\n      [ngClass]=\"getTypographyClass()\"\n      (click)=\"option.disabled ? null : selectOption(option)\">\n      \n      <!-- Use custom template when provided -->\n      <ng-container *ngIf=\"customTemplate; else defaultTemplate\">\n        <ng-container *ngTemplateOutlet=\"customTemplate; context: { $implicit: option }\"></ng-container>\n      </ng-container>\n      \n      <!-- Default template -->\n      <ng-template #defaultTemplate>\n        {{ option.label }}\n      </ng-template>\n    </div>\n    \n    <!-- No results message -->\n    <div *ngIf=\"filteredOptions.length === 0\" class=\"no-results\" [ngClass]=\"getTypographyClass()\">\n      <!-- Use projected empty state template when provided -->\n      <ng-content select=\"[emptyStateTemplate]\" *ngIf=\"emptyStateTemplate\"></ng-content>\n      \n      <!-- Default empty state template when no projection provided -->\n      <ng-container *ngIf=\"!emptyStateTemplate\">\n        <div class=\"typo-caption\">No matching options found</div>\n      </ng-container>\n    </div>\n  </div>\n</div> ","import { Injectable, OnDestroy, inject, signal } from '@angular/core';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { Subject, takeUntil } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ResponsiveService implements OnDestroy {\n  private readonly destroy$ = new Subject<void>();\n  private readonly breakpointObserver = inject(BreakpointObserver);\n  \n  // Signal that indicates if the screen is in mobile size (XS and below)\n  isMobile = signal<boolean>(false);\n  \n  // Signal for screens <= 480px\n  isExtraSmallScreen = signal<boolean>(false);\n  \n  constructor() {\n    // Set the initial values based on the current screen size\n    this.isMobile.set(this.breakpointObserver.isMatched(Breakpoints.XSmall));\n    this.isExtraSmallScreen.set(this.breakpointObserver.isMatched('(max-width: 480px)'));\n    \n    // Observe changes to the breakpoints\n    this.breakpointObserver\n      .observe([Breakpoints.XSmall, '(max-width: 480px)'])\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(result => {\n        // Update the signals when the breakpoint states change\n        this.isMobile.set(result.breakpoints[Breakpoints.XSmall]);\n        this.isExtraSmallScreen.set(result.breakpoints['(max-width: 480px)']);\n      });\n  }\n  \n  // Also provide a method for custom breakpoint checking\n  isBreakpointMatched(breakpoint: string): boolean {\n    return this.breakpointObserver.isMatched(breakpoint);\n  }\n  \n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n} ","import {\r\n  Component,\r\n  ContentChild,\r\n  effect,\r\n  ElementRef,\r\n  inject,\r\n  input,\r\n  OnDestroy,\r\n  OnInit,\r\n  output,\r\n  TemplateRef,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport {CommonModule, NgClass} from '@angular/common';\r\nimport {Overlay, OverlayModule, OverlayRef} from '@angular/cdk/overlay';\r\nimport {ComponentPortal} from '@angular/cdk/portal';\r\nimport {ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule} from '@angular/forms';\r\nimport {Subject, takeUntil} from 'rxjs';\r\n\r\nimport {KcDropdownOptionsComponent} from './dropdown-options/dropdown-options.component';\r\nimport {DropdownOption} from './dropdown-select.models';\r\nimport {DropdownVariant} from '../../types/dropdown-variant.type';\r\nimport {ComponentSize} from '../../types/sizing.type';\r\nimport {KcIconComponent} from '../../../icons/icon/icon.component';\r\nimport {ResponsiveService} from '../../services/responsive.service';\r\n\r\n@Component({\r\n  selector: 'kc-dropdown-select',\r\n  standalone: true,\r\n  imports: [CommonModule, NgClass, FormsModule, ReactiveFormsModule, KcIconComponent, OverlayModule],\r\n  templateUrl: './dropdown-select.component.html',\r\n  styleUrls: ['./dropdown-select.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: KcDropdownSelectComponent,\r\n      multi: true\r\n    }\r\n  ]\r\n})\r\nexport class KcDropdownSelectComponent implements ControlValueAccessor, OnInit, OnDestroy {\r\n  // Constants\r\n  private readonly destroy$ = new Subject<void>();\r\n  private readonly overlay = inject(Overlay);\r\n  private readonly responsiveService = inject(ResponsiveService);\r\n\r\n  // Signals\r\n  options = input<DropdownOption[]>([]);\r\n  placeholder = input<string>('Select an option');\r\n  size = input<ComponentSize>('md');\r\n  variant = input<DropdownVariant>('secondary');\r\n  isFullWidth = input<boolean>(false);\r\n  isDisabled = input<boolean>(false);\r\n  optionsEllipsis = input<boolean>(false);\r\n  isFullscreenSelection = input<boolean>(false);\r\n  icon = input<string>('');\r\n  iconSize = input<ComponentSize | undefined>(undefined);\r\n  useContentWidth = input<boolean>(true);\r\n  maxWidth = input<string | null>(null);\r\n  showToggleIcon = input<boolean>(true);\r\n\r\n  // Value input for direct binding\r\n  value = input<any>(null);\r\n\r\n  // Search-related inputs\r\n  isSearchable = input<boolean>(false);\r\n  searchField = input<string>('label');\r\n\r\n  // Custom item template\r\n  @ContentChild('optionTemplate') optionTemplate: TemplateRef<any> | null = null;\r\n  @ContentChild('prefixTemplate') prefixTemplateRef: TemplateRef<any> | null = null;\r\n  @ContentChild('emptyStateTemplate') emptyStateTemplateRef: TemplateRef<any> | null = null;\r\n\r\n  // Output signals\r\n  valueChange = output<any>();\r\n\r\n  // Other properties\r\n  @ViewChild('dropdownTrigger') dropdownTrigger!: ElementRef;\r\n  isOpen = false;\r\n  private overlayRef: OverlayRef | null = null;\r\n  private _value: any = null;\r\n  private onChange: (value: any) => void = () => {};\r\n  private onTouched: () => void = () => {};\r\n\r\n  // We modify the isDisabled check to consider both the input signal and our internal state\r\n  private _internalDisabled = false;\r\n\r\n  constructor() {\r\n    // Use an effect to respond to changes in the input value\r\n    effect(() => {\r\n      const newValue = this.value();\r\n      if (this._value !== newValue) {\r\n        this._value = newValue;\r\n      }\r\n    });\r\n  }\r\n  \r\n  ngOnInit(): void {\r\n    // We can't modify the input signal directly, so we'll create a computed property\r\n    // that will check both the provided isFullscreenSelection and the screen size\r\n  }\r\n\r\n  // Helper method to check disabled state combining both sources\r\n  isComponentDisabled(): boolean {\r\n    return this.isDisabled() || this._internalDisabled;\r\n  }\r\n\r\n  // Get the display value for the dropdown\r\n  getDisplayValue(): string {\r\n    if (this._value === null || this._value === undefined) {\r\n      return this.placeholder();\r\n    }\r\n\r\n    const selectedOption = this.options().find(option => option.value === this._value);\r\n    return selectedOption ? selectedOption.label : this.placeholder();\r\n  }\r\n\r\n  // Map dropdown size to typography class\r\n  getTypographyClass(): string {\r\n    const typographyMap: Record<ComponentSize, string> = {\r\n      'xs': 'typo-text-1',\r\n      'sm': 'typo-text-2',\r\n      'md': 'typo-text-3',\r\n      'lg': 'typo-text-4',\r\n      'xlg': 'typo-text-5'\r\n    };\r\n\r\n    return typographyMap[this.size()];\r\n  }\r\n\r\n  // Get icon size - use custom size if provided, otherwise default to 'sm'\r\n  getIconSize(): ComponentSize {\r\n    return this.iconSize() || 'sm';\r\n  }\r\n\r\n  // Methods\r\n  toggleDropdown(): void {\r\n    if (this.isComponentDisabled()) {\r\n      return;\r\n    }\r\n\r\n    this.isOpen ? this.closeDropdown() : this.openDropdown();\r\n  }\r\n\r\n  openDropdown(): void {\r\n    this.onTouched();\r\n\r\n    if (this.overlayRef) {\r\n      return;\r\n    }\r\n\r\n    // Check both the provided isFullscreenSelection and the screen size\r\n    // If either is true, use fullscreen mode\r\n    const shouldUseFullscreen = this.isFullscreenSelection() || this.responsiveService.isExtraSmallScreen();\r\n    \r\n    // Different overlay creation strategy based on mode\r\n    if (shouldUseFullscreen) {\r\n      this.openFullscreenDropdown();\r\n    } else {\r\n      this.openRegularDropdown();\r\n    }\r\n\r\n    this.isOpen = true;\r\n  }\r\n\r\n  private openRegularDropdown(): void {\r\n    const positionStrategy = this.overlay\r\n      .position()\r\n      .flexibleConnectedTo(this.dropdownTrigger)\r\n      .withPositions([\r\n        {\r\n          originX: 'start',\r\n          originY: 'bottom',\r\n          overlayX: 'start',\r\n          overlayY: 'top',\r\n          offsetY: 4\r\n        },\r\n        {\r\n          originX: 'start',\r\n          originY: 'top',\r\n          overlayX: 'start',\r\n          overlayY: 'bottom',\r\n          offsetY: -4\r\n        }\r\n      ]);\r\n\r\n    // Get parent width for minimum width constraint\r\n    const parentWidth = this.dropdownTrigger.nativeElement.offsetWidth;\r\n    \r\n    // Configure overlay options based on the useContentWidth setting\r\n    const overlayConfig: any = {\r\n      positionStrategy,\r\n      minWidth: parentWidth, // Always ensure minimum width matches parent\r\n      scrollStrategy: this.overlay.scrollStrategies.close(),\r\n      hasBackdrop: true,\r\n      backdropClass: 'cdk-overlay-transparent-backdrop',\r\n      panelClass: ['dropdown-overlay-panel', 'dropdown-animated-panel']\r\n    };\r\n    \r\n    // Only set fixed width if useContentWidth is false\r\n    if (!this.useContentWidth()) {\r\n      overlayConfig.width = parentWidth;\r\n    }\r\n    \r\n    // Apply maxWidth if provided\r\n    if (this.maxWidth()) {\r\n      overlayConfig.maxWidth = this.maxWidth();\r\n    }\r\n    \r\n    this.overlayRef = this.overlay.create(overlayConfig);\r\n\r\n    // Apply entrance animation\r\n    const overlayElement = this.overlayRef.overlayElement;\r\n    overlayElement.style.opacity = '0';\r\n    overlayElement.style.transform = 'translateY(-10px) scale(0.98)';\r\n\r\n    this.attachOptionsComponent();\r\n\r\n    // Run the entrance animation after component is attached\r\n    requestAnimationFrame(() => {\r\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)';\r\n      overlayElement.style.opacity = '1';\r\n      overlayElement.style.transform = 'translateY(0) scale(1)';\r\n    });\r\n  }\r\n\r\n  private openFullscreenDropdown(): void {\r\n    const positionStrategy = this.overlay.position()\r\n      .global()\r\n      .centerHorizontally()\r\n      .bottom();\r\n\r\n    this.overlayRef = this.overlay.create({\r\n      positionStrategy,\r\n      width: '100%',\r\n      height: '75vh',\r\n      scrollStrategy: this.overlay.scrollStrategies.block(),\r\n      hasBackdrop: true,\r\n      backdropClass: 'cdk-overlay-dark-backdrop',\r\n      panelClass: ['dropdown-overlay-fullscreen', 'dropdown-animated-fullscreen']\r\n    });\r\n\r\n    // Apply fullscreen entrance animation - slide from bottom\r\n    const overlayElement = this.overlayRef.overlayElement;\r\n    overlayElement.style.opacity = '0';\r\n    overlayElement.style.transform = 'translateY(100%)';\r\n\r\n    // Add overflow hidden to prevent horizontal scrolling\r\n    overlayElement.style.overflowX = 'hidden';\r\n\r\n    this.attachOptionsComponent(true);\r\n\r\n    // Run the entrance animation after component is attached\r\n    requestAnimationFrame(() => {\r\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)';\r\n      overlayElement.style.opacity = '1';\r\n      overlayElement.style.transform = 'translateY(0)';\r\n    });\r\n  }\r\n\r\n  private attachOptionsComponent(isFullscreen = false): void {\r\n    // Create and attach the dropdown options component\r\n    const optionsPortal = new ComponentPortal(KcDropdownOptionsComponent);\r\n    const optionsRef = this.overlayRef!.attach(optionsPortal);\r\n    \r\n    // Configure options component\r\n    optionsRef.instance.options = this.options();\r\n    optionsRef.instance.filteredOptions = [...this.options()];\r\n    optionsRef.instance.selectedValue = this._value;\r\n    optionsRef.instance.variant = this.variant();\r\n    optionsRef.instance.optionsEllipsis = this.optionsEllipsis();\r\n    optionsRef.instance.isFullscreenSelection = isFullscreen;\r\n    \r\n    // Set search-related properties\r\n    optionsRef.instance.isSearchable = this.isSearchable();\r\n    optionsRef.instance.searchField = this.searchField();\r\n    \r\n    // Pass the custom template\r\n    optionsRef.instance.customTemplate = this.optionTemplate;\r\n    \r\n    // Handle option selection\r\n    optionsRef.instance.optionSelected.subscribe((option: DropdownOption) => {\r\n      this.setValue(option.value);\r\n      this.closeDropdown();\r\n    });\r\n    \r\n    // Handle close button click for fullscreen mode\r\n    optionsRef.instance.closeRequested?.subscribe(() => {\r\n      this.closeDropdown();\r\n    });\r\n    \r\n    // Handle backdrop click to close dropdown\r\n    this.overlayRef!.backdropClick().pipe(\r\n      takeUntil(this.destroy$)\r\n    ).subscribe(() => {\r\n      this.closeDropdown();\r\n    });\r\n  }\r\n\r\n  closeDropdown(): void {\r\n    if (this.overlayRef) {\r\n      // Apply exit animation based on mode\r\n      const overlayElement = this.overlayRef.overlayElement;\r\n\r\n      if (this.isFullscreenSelection()) {\r\n        // Fullscreen exit animation - slide down\r\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)';\r\n        overlayElement.style.opacity = '0';\r\n        overlayElement.style.transform = 'translateY(100%)';\r\n      } else {\r\n        // Regular exit animation\r\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)';\r\n        overlayElement.style.opacity = '0';\r\n        overlayElement.style.transform = 'translateY(-10px) scale(0.98)';\r\n      }\r\n\r\n      // Dispose after animation completes\r\n      setTimeout(() => {\r\n        if (this.overlayRef) {\r\n          this.overlayRef.dispose();\r\n          this.overlayRef = null;\r\n        }\r\n      }, this.isFullscreenSelection() ? 250 : 180);\r\n    }\r\n\r\n    this.isOpen = false;\r\n  }\r\n\r\n  setValue(value: any): void {\r\n    if (this._value !== value) {\r\n      this._value = value;\r\n      this.onChange(value);\r\n      this.valueChange.emit(value);\r\n    }\r\n  }\r\n\r\n  // ControlValueAccessor implementation\r\n  writeValue(value: any): void {\r\n    this._value = 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    this._internalDisabled = isDisabled;\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n\r\n    if (this.overlayRef) {\r\n      this.overlayRef.dispose();\r\n    }\r\n  }\r\n}\r\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    getTypographyClass()\r\n  ]\"\r\n  (click)=\"toggleDropdown()\"\r\n  #dropdownTrigger>\r\n  <div class=\"dropdown-value\">\r\n    <kc-icon *ngIf=\"icon()\" [iconClass]=\"icon()\" [size]=\"getIconSize()\" class=\"dropdown-icon\"></kc-icon>\r\n    <ng-container *ngIf=\"prefixTemplateRef\">\r\n      <ng-container [ngTemplateOutlet]=\"prefixTemplateRef\"></ng-container>\r\n    </ng-container>\r\n    <span>{{ getDisplayValue() }}</span>\r\n  </div>\r\n  <div *ngIf=\"showToggleIcon()\" class=\"dropdown-arrow\" [class.open]=\"isOpen\">\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, 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 \n  class=\"dropdown-options\" \n  [ngClass]=\"[variant, isFullscreenSelection ? 'fullscreen' : '']\">\n  \n  <!-- Fullscreen header -->\n  <div *ngIf=\"isFullscreenSelection\" class=\"fullscreen-header\">\n    <div class=\"header-title typo-title-3\">Select Options</div>\n    <button class=\"header-close\" (click)=\"closeFullscreen()\">\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\">\n        <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n        <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n      </svg>\n    </button>\n  </div>\n  \n  <!-- Options actions container - only show when searchable or has selections -->\n  <div *ngIf=\"isSearchable || selectedValues.length > 0\" \n       [@headerAnimation]\n       class=\"options-actions\">\n    <!-- Search container (always visible) -->\n    <div class=\"search-container\">\n      <input \n        *ngIf=\"isSearchable\"\n        type=\"text\" \n        class=\"search-input\"\n        [formControl]=\"searchControl\"\n        placeholder=\"Search...\"\n        [ngClass]=\"getTypographyClass()\"\n        autocomplete=\"off\">\n    </div>\n    \n    <!-- Clear selections button with animation -->\n    <div class=\"clear-all-btn-enter-exit\" [@enterLeave]=\"selectedValues.length > 0 ? 'visible' : 'hidden'\">\n      <kc-button\n        *ngIf=\"selectedValues.length > 0\" \n        [text]=\"'Clear all'\"\n        [role]=\"'neutral'\"\n        [size]=\"'sm'\"\n        (buttonClick)=\"clearAll()\"\n        class=\"clear-all-btn\"\n      ></kc-button>\n    </div>\n  </div>\n  \n  <!-- Options list with fixed height -->\n  <div class=\"options-list-container\">\n    <div class=\"options-list\">\n      <ng-container *ngIf=\"filteredOptions.length > 0; else noResults\">\n        <div \n          *ngFor=\"let option of filteredOptions\"\n          class=\"option-item\"\n          [class.selected]=\"isSelected(option)\"\n          [class.disabled]=\"!isSelected(option) && isMaxSelectionsReached()\"\n          [class.ellipsis]=\"optionsEllipsis\"\n          [ngClass]=\"getTypographyClass()\"\n          (click)=\"!isMaxSelectionsReached() || isSelected(option) ? selectOption(option) : null\">\n          \n          <!-- Custom template if provided -->\n          <ng-container *ngIf=\"customTemplate; else defaultTemplate\">\n            <ng-container *ngTemplateOutlet=\"customTemplate; context: { \n              $implicit: option, \n              selected: isSelected(option)\n            }\"></ng-container>\n          </ng-container>\n          \n          <!-- Default template -->\n          <ng-template #defaultTemplate>\n            <kc-checkbox \n              [isChecked]=\"isSelected(option)\"\n              [size]=\"size\"\n              [isDisabled]=\"!isSelected(option) && isMaxSelectionsReached()\"\n            ></kc-checkbox>\n            <span class=\"option-label\">{{ option.label }}</span>\n          </ng-template>\n        </div>\n      </ng-container>\n      \n      <!-- No results message -->\n      <ng-template #noResults>\n        <div class=\"no-results\" [ngClass]=\"getTypographyClass()\">\n          <!-- Use projected empty state template when provided -->\n          <ng-content select=\"[emptyStateTemplate]\" *ngIf=\"emptyStateTemplate\"></ng-content>\n          \n          <!-- Default empty state template when no projection provided -->\n          <ng-container *ngIf=\"!emptyStateTemplate\">\n            <div class=\"typo-caption\">No options found</div>\n          </ng-container>\n        </div>\n      </ng-template>\n    </div>\n  </div>\n  \n  <!-- Selection summary for fullscreen mode -->\n  <div *ngIf=\"isFullscreenSelection\" class=\"selection-summary\">\n    <div class=\"selection-info\">\n      <span class=\"typo-text-2\" *ngIf=\"selectedValues.length > 0\">Selected: {{ selectedValues.length }}</span>\n      <span *ngIf=\"maxSelection < 9999999\" class=\"typo-text-2\">(Max: {{ maxSelection }})</span>\n    </div>\n    <kc-button\n      [text]=\"'Apply'\"\n      [variant]=\"variant === 'tertiary' || variant === 'raw' ? 'primary' : (variant === 'primary' || variant === 'secondary' ? variant : 'primary')\"\n      [size]=\"size\"\n      [isDisabled]=\"selectedValues.length < minSelection\"\n      (buttonClick)=\"closeFullscreen()\"\n    ></kc-button>\n  </div>\n</div> ","import { \r\n  Component, \r\n  ElementRef, \r\n  OnDestroy, \r\n  OnInit, \r\n  ViewChild, \r\n  computed, \r\n  inject, \r\n  input, \r\n  output, \r\n  ContentChild, \r\n  TemplateRef, \r\n  signal \r\n} from '@angular/core';\r\nimport { CommonModule, NgClass } from '@angular/common';\r\nimport { Overlay, OverlayModule, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { ResponsiveService } from '../../services/responsive.service';\r\n\r\nimport { KcDropdownMultiselectOptionsComponent } from './dropdown-multiselect-options/dropdown-multiselect-options.component';\r\nimport { DropdownMultiselectConfig } from './dropdown-multiselect.models';\r\nimport { DropdownOption } from '../dropdown-select/dropdown-select.models';\r\nimport { DropdownVariant } from '../../types/dropdown-variant.type';\r\nimport { ComponentSize } from '../../types/sizing.type';\r\nimport { KcIconComponent } from '../../../icons/icon/icon.component';\r\n\r\n@Component({\r\n  selector: 'kc-dropdown-multiselect',\r\n  standalone: true,\r\n  imports: [CommonModule, NgClass, FormsModule, ReactiveFormsModule, OverlayModule, KcIconComponent],\r\n  templateUrl: './dropdown-multiselect.component.html',\r\n  styleUrls: ['./dropdown-multiselect.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: KcDropdownMultiselectComponent,\r\n      multi: true\r\n    }\r\n  ]\r\n})\r\nexport class KcDropdownMultiselectComponent implements ControlValueAccessor, OnInit, OnDestroy {\r\n  // Constants\r\n  private readonly destroy$ = new Subject<void>();\r\n  private readonly overlay = inject(Overlay);\r\n  private readonly responsiveService = inject(ResponsiveService);\r\n\r\n  // Signals\r\n  options = input<DropdownOption[]>([]);\r\n  placeholder = input<string>('Select options');\r\n  size = input<ComponentSize>('md');\r\n  variant = input<DropdownVariant>('secondary');\r\n  isFullWidth = input<boolean>(false);\r\n  isDisabled = input<boolean>(false);\r\n  optionsEllipsis = input<boolean>(false);\r\n  isFullscreenSelection = input<boolean>(false);\r\n  useContentWidth = input<boolean>(true);\r\n  maxWidth = input<string | null>(null);\r\n  icon = input<string>('');\r\n  iconSize = input<ComponentSize | undefined>(undefined);\r\n  showToggleIcon = input<boolean>(true);\r\n  \r\n  // Multi-select specific inputs\r\n  config = input<DropdownMultiselectConfig>({ minSelection: 0, maxSelection: Infinity });\r\n  selectionCountText = input<string>('Selected items');\r\n  \r\n  // Search-related inputs\r\n  isSearchable = input<boolean>(false);\r\n  searchField = input<string>('label');\r\n\r\n  // Custom item template\r\n  @ContentChild('optionTemplate') optionTemplate: TemplateRef<any> | null = null;\r\n  @ContentChild('prefixTemplate') prefixTemplateRef: TemplateRef<any> | null = null;\r\n  @ContentChild('emptyStateTemplate') emptyStateTemplateRef: TemplateRef<any> | null = null;\r\n\r\n  // Output signals\r\n  valueChange = output<any[]>();\r\n  searchChange = output<string>();\r\n  clearAll = output<void>();\r\n\r\n  // Other properties\r\n  @ViewChild('dropdownTrigger') dropdownTrigger!: ElementRef;\r\n  isOpen = false;\r\n  selectedValues = signal<any[]>([]);\r\n  private overlayRef: OverlayRef | null = null;\r\n  private onChange: (value: any[]) => void = () => {};\r\n  private onTouched: () => void = () => {};\r\n\r\n  // We modify the isDisabled check to consider both the input signal and our internal state\r\n  private _internalDisabled = false;\r\n\r\n  ngOnInit(): void {\r\n    // No setup needed here - we'll handle the responsive behavior in openDropdown\r\n  }\r\n\r\n  // Helper method to check disabled state combining both sources\r\n  isComponentDisabled(): boolean {\r\n    return this.isDisabled() || this._internalDisabled;\r\n  }\r\n\r\n  // Check if we've reached max selections\r\n  isMaxSelectionsReached(): boolean {\r\n    return this.selectedValues().length >= (this.config().maxSelection || Infinity);\r\n  }\r\n\r\n  // Get the display value for the dropdown\r\n  getDisplayValue(): string {\r\n    const selectedCount = this.selectedValues().length;\r\n    \r\n    if (selectedCount === 0) {\r\n      return this.placeholder();\r\n    }\r\n\r\n    if (selectedCount === 1) {\r\n      const selectedOption = this.options().find(option => option.value === this.selectedValues()[0]);\r\n      return selectedOption ? selectedOption.label : this.placeholder();\r\n    }\r\n\r\n    return `${selectedCount} ${this.selectionCountText()}`;\r\n  }\r\n  \r\n  // Map dropdown size to typography class\r\n  getTypographyClass(): string {\r\n    const typographyMap: Record<ComponentSize, string> = {\r\n      'xs': 'typo-text-1',\r\n      'sm': 'typo-text-2',\r\n      'md': 'typo-text-3',\r\n      'lg': 'typo-text-4',\r\n      'xlg': 'typo-text-5'\r\n    };\r\n    \r\n    return typographyMap[this.size()];\r\n  }\r\n\r\n  // Get icon size - use custom size if provided, otherwise default to 'sm'\r\n  getIconSize(): ComponentSize {\r\n    return this.iconSize() || 'sm';\r\n  }\r\n\r\n  // Methods\r\n  toggleDropdown(): void {\r\n    if (this.isComponentDisabled()) {\r\n      return;\r\n    }\r\n\r\n    this.isOpen ? this.closeDropdown() : this.openDropdown();\r\n  }\r\n\r\n  openDropdown(): void {\r\n    this.onTouched();\r\n\r\n    if (this.overlayRef) {\r\n      return;\r\n    }\r\n\r\n    // Check both the provided isFullscreenSelection and the screen size\r\n    // If either is true, use fullscreen mode\r\n    const shouldUseFullscreen = this.isFullscreenSelection() || this.responsiveService.isExtraSmallScreen();\r\n\r\n    // Different overlay creation strategy based on mode\r\n    if (shouldUseFullscreen) {\r\n      this.openFullscreenDropdown();\r\n    } else {\r\n      this.openRegularDropdown();\r\n    }\r\n\r\n    this.isOpen = true;\r\n  }\r\n\r\n  private openRegularDropdown(): void {\r\n    const positionStrategy = this.overlay\r\n      .position()\r\n      .flexibleConnectedTo(this.dropdownTrigger)\r\n      .withPositions([\r\n        {\r\n          originX: 'start',\r\n          originY: 'bottom',\r\n          overlayX: 'start',\r\n          overlayY: 'top',\r\n          offsetY: 4\r\n        },\r\n        {\r\n          originX: 'start',\r\n          originY: 'top',\r\n          overlayX: 'start',\r\n          overlayY: 'bottom',\r\n          offsetY: -4\r\n        }\r\n      ]);\r\n\r\n    // Get parent width for minimum width constraint\r\n    const parentWidth = this.dropdownTrigger.nativeElement.offsetWidth;\r\n    \r\n    // Configure overlay options based on the useContentWidth setting\r\n    const overlayConfig: any = {\r\n      positionStrategy,\r\n      minWidth: parentWidth, // Always ensure minimum width matches parent\r\n      scrollStrategy: this.overlay.scrollStrategies.close(),\r\n      hasBackdrop: true,\r\n      backdropClass: 'cdk-overlay-transparent-backdrop',\r\n      panelClass: ['dropdown-overlay-panel', 'dropdown-animated-panel']\r\n    };\r\n    \r\n    // Only set fixed width if useContentWidth is false\r\n    if (!this.useContentWidth()) {\r\n      overlayConfig.width = parentWidth;\r\n    }\r\n    \r\n    // Apply maxWidth if provided\r\n    if (this.maxWidth()) {\r\n      overlayConfig.maxWidth = this.maxWidth();\r\n    }\r\n    \r\n    this.overlayRef = this.overlay.create(overlayConfig);\r\n\r\n    // Apply entrance animation\r\n    const overlayElement = this.overlayRef!.overlayElement;\r\n    overlayElement.style.opacity = '0';\r\n    overlayElement.style.transform = 'translateY(-10px) scale(0.98)';\r\n\r\n    this.attachOptionsComponent();\r\n\r\n    // Run the entrance animation after component is attached\r\n    requestAnimationFrame(() => {\r\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)';\r\n      overlayElement.style.opacity = '1';\r\n      overlayElement.style.transform = 'translateY(0) scale(1)';\r\n    });\r\n  }\r\n\r\n  private openFullscreenDropdown(): void {\r\n    const positionStrategy = this.overlay.position()\r\n      .global()\r\n      .centerHorizontally()\r\n      .bottom();\r\n\r\n    this.overlayRef = this.overlay.create({\r\n      positionStrategy,\r\n      width: '100%',\r\n      height: '75vh',\r\n      scrollStrategy: this.overlay.scrollStrategies.block(),\r\n      hasBackdrop: true,\r\n      backdropClass: 'cdk-overlay-dark-backdrop',\r\n      panelClass: ['dropdown-overlay-fullscreen', 'dropdown-animated-fullscreen']\r\n    });\r\n\r\n    // Apply fullscreen entrance animation - slide from bottom\r\n    const overlayElement = this.overlayRef!.overlayElement;\r\n    overlayElement.style.opacity = '0';\r\n    overlayElement.style.transform = 'translateY(100%)';\r\n    \r\n    // Add overflow hidden to prevent horizontal scrolling\r\n    overlayElement.style.overflowX = 'hidden';\r\n\r\n    this.attachOptionsComponent(true);\r\n\r\n    // Run the entrance animation after component is attached\r\n    requestAnimationFrame(() => {\r\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)';\r\n      overlayElement.style.opacity = '1';\r\n      overlayElement.style.transform = 'translateY(0)';\r\n    });\r\n  }\r\n\r\n  private attachOptionsComponent(isFullscreen = false): void {\r\n    // Create and attach the dropdown options component\r\n    const optionsPortal = new ComponentPortal(KcDropdownMultiselectOptionsComponent);\r\n    const optionsRef = this.overlayRef!.attach(optionsPortal);\r\n\r\n    // Configure options component\r\n    optionsRef.instance.options = this.options();\r\n    optionsRef.instance.selectedValues = this.selectedValues();\r\n    optionsRef.instance.variant = this.variant();\r\n    optionsRef.instance.optionsEllipsis = this.optionsEllipsis();\r\n    optionsRef.instance.isFullscreenSelection = isFullscreen;\r\n    optionsRef.instance.minSelection = this.config().minSelection || 0;\r\n    optionsRef.instance.maxSelection = this.config().maxSelection || Infinity;\r\n    optionsRef.instance.size = this.size();\r\n    \r\n    // Set search-related properties\r\n    optionsRef.instance.isSearchable = this.isSearchable();\r\n    optionsRef.instance.searchField = this.searchField();\r\n    \r\n    // Pass the templates\r\n    optionsRef.instance.customTemplate = this.optionTemplate;\r\n\r\n    // Handle option selection\r\n    optionsRef.instance.optionSelected.subscribe((option: DropdownOption) => {\r\n      this.toggleOption(option);\r\n    });\r\n\r\n    // Handle search change\r\n    optionsRef.instance.searchChanged.subscribe((searchTerm: string) => {\r\n      this.searchChange.emit(searchTerm);\r\n    });\r\n\r\n    // Handle clear all\r\n    optionsRef.instance.clearAllRequested.subscribe(() => {\r\n      this.clearAllSelections();\r\n    });\r\n\r\n    // Handle close button click for fullscreen mode\r\n    optionsRef.instance.closeRequested?.subscribe(() => {\r\n      this.closeDropdown();\r\n    });\r\n\r\n    // Handle backdrop click to close dropdown\r\n    this.overlayRef!.backdropClick().pipe(\r\n      takeUntil(this.destroy$)\r\n    ).subscribe(() => {\r\n      this.closeDropdown();\r\n    });\r\n  }\r\n\r\n  clearAllSelections(): void {\r\n    this.setValues([]);\r\n    this.clearAll.emit();\r\n  }\r\n\r\n  closeDropdown(): void {\r\n    if (this.overlayRef) {\r\n      // Apply exit animation based on mode\r\n      const overlayElement = this.overlayRef.overlayElement;\r\n      \r\n      if (this.isFullscreenSelection()) {\r\n        // Fullscreen exit animation - slide down\r\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)';\r\n        overlayElement.style.opacity = '0';\r\n        overlayElement.style.transform = 'translateY(100%)';\r\n      } else {\r\n        // Regular exit animation\r\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)';\r\n        overlayElement.style.opacity = '0';\r\n        overlayElement.style.transform = 'translateY(-10px) scale(0.98)';\r\n      }\r\n\r\n      // Dispose after animation completes\r\n      setTimeout(() => {\r\n        if (this.overlayRef) {\r\n          this.overlayRef.dispose();\r\n          this.overlayRef = null;\r\n        }\r\n      }, this.isFullscreenSelection() ? 250 : 180);\r\n    }\r\n\r\n    this.isOpen = false;\r\n  }\r\n\r\n  toggleOption(option: DropdownOption): void {\r\n    const currentValues = [...this.selectedValues()];\r\n    const index = currentValues.findIndex(value => value === option.value);\r\n    \r\n    // If the option is already selected, remove it\r\n    if (index !== -1) {\r\n      currentValues.splice(index, 1);\r\n      this.setValues(currentValues);\r\n      return;\r\n    }\r\n    \r\n    // Check if max selections is reached\r\n    if (this.isMaxSelectionsReached()) {\r\n      return;\r\n    }\r\n    \r\n    // Add the option to selected values\r\n    currentValues.push(option.value);\r\n    this.setValues(currentValues);\r\n  }\r\n\r\n  setValues(values: any[]): void {\r\n    this.selectedValues.set(values);\r\n    this.onChange(values);\r\n    this.valueChange.emit(values);\r\n  }\r\n\r\n  // ControlValueAccessor implementation\r\n  writeValue(values: any[]): void {\r\n    this.selectedValues.set(values || []);\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    this._internalDisabled = isDisabled;\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n\r\n    if (this.overlayRef) {\r\n      this.overlayRef.dispose();\r\n    }\r\n  }\r\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()\" [size]=\"getIconSize()\" 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';\nimport { NgClass } from '@angular/common';\nimport { ComponentSize } from '../../types/sizing.type';\nimport { ChipVariant } from '../../types/chip-variant.type';\nimport { KcIconComponent } from '../../../icons/icon/icon.component';\n\n@Component({\n  selector: 'kc-chip',\n  standalone: true,\n  imports: [NgClass, KcIconComponent],\n  template: `\n    <div\n      class=\"app-chip\"\n      [ngClass]=\"[\n        variant(),\n        size(),\n        getTypographyClass()\n      ]\"\n    >\n      <div class=\"chip-content\">\n        @if (prefixIcon()) {\n          <kc-icon [iconClass]=\"prefixIcon()!\" [color]=\"prefixIconColor()\"></kc-icon>\n        }\n        @if (text()) {\n          <span class=\"chip-text\">{{ text() }}</span>\n        }\n        @if (suffixIcon()) {\n          <kc-icon [iconClass]=\"suffixIcon()!\" [color]=\"suffixIconColor()\"></kc-icon>\n        }\n      </div>\n    </div>\n  `,\n  styleUrls: ['./chip.component.scss']\n})\nexport class KcChipComponent {\n  text = input<string>('');\n  variant = input<ChipVariant>('neutral');\n  size = input<ComponentSize>('md');\n  prefixIcon = input<string | undefined>(undefined);\n  suffixIcon = input<string | undefined>(undefined);\n  prefixIconColor = input<string | undefined>(undefined);\n  suffixIconColor = input<string | undefined>(undefined);\n  \n  getTypographyClass(): string {\n    // Map chip size to appropriate typography class\n    const typographyMap: Record<ComponentSize, string> = {\n      'xs': 'typo-button-small',\n      'sm': 'typo-button-small',\n      'md': 'typo-button-medium',\n      'lg': 'typo-button-large',\n      'xlg': 'typo-button-large'\n    };\n    \n    return typographyMap[this.size()];\n  }\n} ","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n  TemplateRef,\r\n  HostListener\r\n} from '@angular/core';\r\nimport { CommonModule, NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { KcIconComponent } from '../../../../icons/icon/icon.component';\r\nimport { SplitButtonOption } from '../split-button.models';\r\nimport { ButtonVariant } from '../../../types/button-variant.type';\r\nimport { ComponentSize } from '../../../types/sizing.type';\r\n\r\n@Component({\r\n  selector: 'kc-split-button-options',\r\n  standalone: true,\r\n  imports: [CommonModule, NgClass, NgTemplateOutlet, KcIconComponent],\r\n  template: `\r\n    <div class=\"split-button-options-container\" [ngClass]=\"{'fullscreen': isFullscreenMenu}\">\r\n      @if (isFullscreenMenu) {\r\n        <div class=\"fullscreen-header\">\r\n          <button \r\n            class=\"close-button\" \r\n            (click)=\"closeRequested.emit()\"\r\n            type=\"button\"\r\n          >\r\n            <kc-icon iconClass=\"icon-close\" size=\"md\"></kc-icon>\r\n          </button>\r\n        </div>\r\n      }\r\n      \r\n      <div class=\"options-wrapper\">\r\n        <ul class=\"options-list\">\r\n          @for (option of options; track option.key) {\r\n            <li \r\n              class=\"option-item\"\r\n              [ngClass]=\"{\r\n                'disabled': option.disabled,\r\n                'typo-text-3': buttonSize === 'md' || buttonSize === 'lg' || buttonSize === 'xlg',\r\n                'typo-text-2': buttonSize === 'sm',\r\n                'typo-text-1': buttonSize === 'xs'\r\n              }\"\r\n              (click)=\"handleOptionClick(option)\"\r\n            >\r\n              <div class=\"option-content\">\r\n                @if (customTemplate) {\r\n                  <ng-container [ngTemplateOutlet]=\"customTemplate\" [ngTemplateOutletContext]=\"{$implicit: option}\"></ng-container>\r\n                } @else {\r\n                  <div class=\"option-inner-content\">\r\n                    @if (option.prefixIconClass) {\r\n                      <kc-icon \r\n                        [iconClass]=\"option.prefixIconClass\" \r\n                        [size]=\"getIconSize()\"\r\n                        class=\"option-prefix-icon\"\r\n                      ></kc-icon>\r\n                    }\r\n                    <span class=\"option-label\">{{ option.label }}</span>\r\n                    @if (option.suffixIconClass) {\r\n                      <kc-icon \r\n                        [iconClass]=\"option.suffixIconClass\" \r\n                        [size]=\"getIconSize()\"\r\n                        class=\"option-suffix-icon\"\r\n                      ></kc-icon>\r\n                    }\r\n                  </div>\r\n                }\r\n              </div>\r\n            </li>\r\n          }\r\n        </ul>\r\n      </div>\r\n    </div>\r\n  `,\r\n  styleUrls: ['./split-button-options.component.scss']\r\n})\r\nexport class KcSplitButtonOptionsComponent {\r\n  @Input() options: SplitButtonOption[] = [];\r\n  @Input() variant: ButtonVariant = 'primary';\r\n  @Input() isFullscreenMenu = false;\r\n  @Input() buttonSize: ComponentSize = 'md';\r\n  @Input() customTemplate: TemplateRef<any> | null = null;\r\n  \r\n  @Output() optionSelected = new EventEmitter<SplitButtonOption>();\r\n  @Output() closeRequested = new EventEmitter<void>();\r\n  \r\n  handleOptionClick(option: SplitButtonOption): void {\r\n    if (!option.disabled) {\r\n      this.optionSelected.emit(option);\r\n    }\r\n  }\r\n  \r\n  getIconSize(): ComponentSize {\r\n    // Map button size to appropriate icon 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.buttonSize];\r\n  }\r\n  \r\n  @HostListener('click', ['$event'])\r\n  handleContainerClick(event: MouseEvent): void {\r\n    // Prevent clicks from bubbling up to close the overlay\r\n    event.stopPropagation();\r\n  }\r\n} ","import {\r\n  Component,\r\n  ContentChild,\r\n  effect,\r\n  ElementRef,\r\n  inject,\r\n  input,\r\n  OnDestroy,\r\n  output,\r\n  TemplateRef,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport { CommonModule, NgClass } from '@angular/common';\r\nimport { Overlay, OverlayModule, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\nimport { KcIconComponent } from '../../../icons/icon/icon.component';\r\nimport { KcSpinnerComponent } from '../../../loading/spinner/spinner.component';\r\nimport { ComponentSize } from '../../types/sizing.type';\r\nimport { ButtonVariant } from '../../types/button-variant.type';\r\nimport { SplitButtonOption } from './split-button.models';\r\nimport { KcSplitButtonOptionsComponent } from './split-button-options/split-button-options.component';\r\nimport { ResponsiveService } from '../../services/responsive.service';\r\n\r\n@Component({\r\n  selector: 'kc-split-button',\r\n  standalone: true,\r\n  imports: [CommonModule, NgClass, KcIconComponent, KcSpinnerComponent, OverlayModule],\r\n  template: `\r\n    <button\r\n      #splitButtonTrigger\r\n      class=\"app-button split-button\"\r\n      [ngClass]=\"[\r\n        variant(),\r\n        size(),\r\n        isFullWidth() ? 'full-width' : '',\r\n        isDisabled() || isLoading() ? 'disabled' : '',\r\n        isLoading() ? 'loading skeleton-loading' : '',\r\n        role() ? 'role-' + role() : '',\r\n        getTypographyClass(),\r\n        isOpen ? 'open' : ''\r\n      ]\"\r\n      [disabled]=\"isDisabled() || isLoading()\"\r\n    >\r\n      <div class=\"button-content\">\r\n        <div class=\"button-inner-content\" [ngClass]=\"{ 'skeleton-content': isLoading() }\">\r\n          <div class=\"main-button-area\" (click)=\"handleMainButtonClick($event)\">\r\n            <!-- Always show spinner when loading -->\r\n            @if (isLoading()) {\r\n              <kc-spinner [size]=\"getSpinnerSize()\" class=\"loading-spinner\"></kc-spinner>\r\n            }\r\n            \r\n            <!-- Always show prefix icon (with skeleton styling when loading) -->\r\n            @if (prefixIcon()) {\r\n              <kc-icon \r\n                [iconClass]=\"prefixIcon()!\" \r\n                [color]=\"getIconColor()\" \r\n                [size]=\"getIconSize()\"\r\n                [ngClass]=\"{ 'skeleton-icon': isLoading() }\"\r\n              ></kc-icon>\r\n            }\r\n            \r\n            <!-- Always show text (with skeleton styling when loading) -->\r\n            @if (text() || loadingText()) {\r\n              <span \r\n                class=\"button-text\" \r\n                [ngClass]=\"{ 'skeleton-text': isLoading() }\"\r\n              >{{ isLoading() ? (loadingText() || text()) : text() }}</span>\r\n            }\r\n          </div>\r\n          \r\n          <!-- Always show toggle icon wrapper (with skeleton styling when loading) -->\r\n          <div class=\"toggle-icon-wrapper\" (click)=\"handleToggleClick($event)\">\r\n            <kc-icon \r\n              [iconClass]=\"isOpen ? toggleIconOpen() : toggleIconClosed()\" \r\n              [color]=\"getIconColor()\"\r\n              [size]=\"getIconSize()\"\r\n              [ngClass]=\"{ 'skeleton-icon': isLoading() }\"\r\n            ></kc-icon>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </button>\r\n  `,\r\n  styleUrls: ['./split-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 KcSplitButtonComponent implements OnDestroy {\r\n  // Constants\r\n  private readonly destroy$ = new Subject<void>();\r\n  private readonly overlay = inject(Overlay);\r\n  private readonly responsiveService = inject(ResponsiveService);\r\n\r\n  // Input signals\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  prefixIconColor = input<string | undefined>(undefined);\r\n  toggleIconOpen = input<string>('icon-chevron-up');\r\n  toggleIconClosed = input<string>('icon-chevron-down');\r\n  toggleIconColor = input<string | undefined>(undefined);\r\n  loadingText = input<string | undefined>(undefined);\r\n  \r\n  // Menu options\r\n  options = input<SplitButtonOption[]>([]);\r\n  isFullscreenMenu = input<boolean>(false);\r\n  \r\n  // Custom template for menu items\r\n  @ContentChild('optionTemplate') optionTemplate: TemplateRef<any> | null = null;\r\n  \r\n  // Output signals\r\n  buttonClick = output<MouseEvent>();\r\n  optionClick = output<SplitButtonOption>();\r\n  \r\n  // Other properties\r\n  @ViewChild('splitButtonTrigger') splitButtonTrigger!: ElementRef;\r\n  isOpen = false;\r\n  private overlayRef: OverlayRef | null = null;\r\n  \r\n  handleMainButtonClick(event: MouseEvent): void {\r\n    event.stopPropagation();\r\n    if (!this.isDisabled() && !this.isLoading()) {\r\n      // Close menu if open\r\n      if (this.isOpen) {\r\n        this.closeMenu();\r\n      }\r\n      this.buttonClick.emit(event);\r\n    }\r\n  }\r\n\r\n  handleToggleClick(event: MouseEvent): void {\r\n    event.stopPropagation();\r\n    if (!this.isDisabled() && !this.isLoading()) {\r\n      this.toggleMenu();\r\n    }\r\n  }\r\n  \r\n  toggleMenu(): void {\r\n    if (this.isDisabled()) {\r\n      return;\r\n    }\r\n\r\n    this.isOpen ? this.closeMenu() : this.openMenu();\r\n  }\r\n\r\n  openMenu(): void {\r\n    if (this.overlayRef) {\r\n      return;\r\n    }\r\n\r\n    // Check both the provided isFullscreenMenu and the screen size\r\n    const shouldUseFullscreen = this.isFullscreenMenu() || this.responsiveService.isExtraSmallScreen();\r\n    \r\n    // Different overlay creation strategy based on mode\r\n    if (shouldUseFullscreen) {\r\n      this.openFullscreenMenu();\r\n    } else {\r\n      this.openRegularMenu();\r\n    }\r\n\r\n    this.isOpen = true;\r\n  }\r\n\r\n  private openRegularMenu(): void {\r\n    const positionStrategy = this.overlay\r\n      .position()\r\n      .flexibleConnectedTo(this.splitButtonTrigger)\r\n      .withPositions([\r\n        {\r\n          originX: 'start',\r\n          originY: 'bottom',\r\n          overlayX: 'start',\r\n          overlayY: 'top',\r\n          offsetY: 4\r\n        },\r\n        {\r\n          originX: 'start',\r\n          originY: 'top',\r\n          overlayX: 'start',\r\n          overlayY: 'bottom',\r\n          offsetY: -4\r\n        }\r\n      ]);\r\n\r\n    // Get parent width for minimum width constraint\r\n    const parentWidth = this.splitButtonTrigger.nativeElement.offsetWidth;\r\n    \r\n    this.overlayRef = this.overlay.create({\r\n      positionStrategy,\r\n      minWidth: parentWidth,\r\n      scrollStrategy: this.overlay.scrollStrategies.close(),\r\n      hasBackdrop: true,\r\n      backdropClass: 'cdk-overlay-transparent-backdrop',\r\n      panelClass: ['split-button-overlay-panel', 'split-button-animated-panel']\r\n    });\r\n\r\n    // Apply entrance animation\r\n    const overlayElement = this.overlayRef.overlayElement;\r\n    overlayElement.style.opacity = '0';\r\n    overlayElement.style.transform = 'translateY(-10px) scale(0.98)';\r\n\r\n    this.attachOptionsComponent();\r\n\r\n    // Run the entrance animation after component is attached\r\n    requestAnimationFrame(() => {\r\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)';\r\n      overlayElement.style.opacity = '1';\r\n      overlayElement.style.transform = 'translateY(0) scale(1)';\r\n    });\r\n  }\r\n\r\n  private openFullscreenMenu(): void {\r\n    const positionStrategy = this.overlay.position()\r\n      .global()\r\n      .centerHorizontally()\r\n      .bottom();\r\n\r\n    this.overlayRef = this.overlay.create({\r\n      positionStrategy,\r\n      width: '100%',\r\n      height: '75vh',\r\n      scrollStrategy: this.overlay.scrollStrategies.block(),\r\n      hasBackdrop: true,\r\n      backdropClass: 'cdk-overlay-dark-backdrop',\r\n      panelClass: ['split-button-overlay-fullscreen', 'split-button-animated-fullscreen']\r\n    });\r\n\r\n    // Apply fullscreen entrance animation - slide from bottom\r\n    const overlayElement = this.overlayRef.overlayElement;\r\n    overlayElement.style.opacity = '0';\r\n    overlayElement.style.transform = 'translateY(100%)';\r\n\r\n    // Add overflow hidden to prevent horizontal scrolling\r\n    overlayElement.style.overflowX = 'hidden';\r\n\r\n    this.attachOptionsComponent(true);\r\n\r\n    // Run the entrance animation after component is attached\r\n    requestAnimationFrame(() => {\r\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)';\r\n      overlayElement.style.opacity = '1';\r\n      overlayElement.style.transform = 'translateY(0)';\r\n    });\r\n  }\r\n\r\n  private attachOptionsComponent(isFullscreen = false): void {\r\n    // Create and attach the split button options component\r\n    const optionsPortal = new ComponentPortal(KcSplitButtonOptionsComponent);\r\n    const optionsRef = this.overlayRef!.attach(optionsPortal);\r\n    \r\n    // Configure options component - Cast to proper type\r\n    const optionsComponent = optionsRef.instance as KcSplitButtonOptionsComponent;\r\n    optionsComponent.options = this.options();\r\n    optionsComponent.variant = this.variant();\r\n    optionsComponent.isFullscreenMenu = isFullscreen;\r\n    optionsComponent.buttonSize = this.size();\r\n    \r\n    // Pass the custom template\r\n    optionsComponent.customTemplate = this.optionTemplate;\r\n    \r\n    // Handle option selection\r\n    optionsComponent.optionSelected.subscribe((option: SplitButtonOption) => {\r\n      this.optionClick.emit(option);\r\n      this.closeMenu();\r\n    });\r\n    \r\n    // Handle close button click for fullscreen mode\r\n    optionsComponent.closeRequested?.subscribe(() => {\r\n      this.closeMenu();\r\n    });\r\n    \r\n    // Handle backdrop click to close menu\r\n    this.overlayRef!.backdropClick().pipe(\r\n      takeUntil(this.destroy$)\r\n    ).subscribe(() => {\r\n      this.closeMenu();\r\n    });\r\n  }\r\n\r\n  closeMenu(): void {\r\n    if (this.overlayRef) {\r\n      // Apply exit animation based on mode\r\n      const overlayElement = this.overlayRef.overlayElement;\r\n\r\n      if (this.isFullscreenMenu()) {\r\n        // Fullscreen exit animation - slide down\r\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)';\r\n        overlayElement.style.opacity = '0';\r\n        overlayElement.style.transform = 'translateY(100%)';\r\n      } else {\r\n        // Regular exit animation\r\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)';\r\n        overlayElement.style.opacity = '0';\r\n        overlayElement.style.transform = 'translateY(-10px) scale(0.98)';\r\n      }\r\n\r\n      // Dispose after animation completes\r\n      setTimeout(() => {\r\n        if (this.overlayRef) {\r\n          this.overlayRef.dispose();\r\n          this.overlayRef = null;\r\n        }\r\n      }, this.isFullscreenMenu() ? 250 : 180);\r\n    }\r\n\r\n    this.isOpen = false;\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  getIconSize(): ComponentSize {\r\n    // Map button size to appropriate icon size - reduce XLG to avoid oversized icons\r\n    const sizeMap: Record<ComponentSize, ComponentSize> = {\r\n      'xs': 'xs',\r\n      'sm': 'sm',\r\n      'md': 'md',\r\n      'lg': 'lg',\r\n      'xlg': 'lg' // Use LG size for XLG buttons to avoid oversized icons\r\n    };\r\n    \r\n    return sizeMap[this.size()];\r\n  }\r\n  \r\n  getIconColor(): string {\r\n    // Return black for primary variant, white for all others\r\n    return this.variant() === 'primary' ? 'black' : 'white';\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\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n\r\n    if (this.overlayRef) {\r\n      this.overlayRef.dispose();\r\n    }\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\">\n  <div class=\"navigation-container\" #navigationContainer>\n    <div class=\"selection-indicator\" #selectionIndicator></div>\n    <button\n      *ngFor=\"let option of options\"\n      class=\"option-button\"\n      [class.active]=\"option.key === currentActive\"\n      [class.disabled]=\"disabled || option.disabled\"\n      [attr.data-key]=\"option.key\"\n      (click)=\"onSelect(option.key)\"\n    >\n      <kc-icon \n        *ngIf=\"option.prefixIcon\" \n        [iconClass]=\"option.prefixIcon\"\n        [size]=\"size\"\n      ></kc-icon>\n      <span class=\"option-title\" [ngClass]=\"'typo-button-' + size\">{{ option.title }}</span>\n    </button>\n  </div>\n</div> ","import { Component, input, output, forwardRef } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ComponentSize } from '../../types/sizing.type';\r\nimport { ToggleVariant } from '../../types/toggle-variant.type';\r\n\r\n@Component({\r\n  selector: 'kc-toggle',\r\n  standalone: true,\r\n  imports: [NgClass],\r\n  template: `\r\n    <div class=\"toggle-container\">\r\n      <input\r\n        type=\"checkbox\"\r\n        class=\"toggle-input\"\r\n        [id]=\"toggleId\"\r\n        [checked]=\"value\"\r\n        [disabled]=\"isDisabled()\"\r\n        (change)=\"handleToggle($event)\"\r\n      >\r\n      <label\r\n        [for]=\"toggleId\"\r\n        class=\"toggle-label\"\r\n        [ngClass]=\"[\r\n          'toggle-' + variant(),\r\n          'toggle-' + size(),\r\n          isDisabled() ? 'toggle-disabled' : '',\r\n          value ? 'toggle-checked' : ''\r\n        ]\"\r\n      >\r\n        <span class=\"toggle-track\">\r\n          <span class=\"toggle-thumb\"></span>\r\n        </span>\r\n        @if (label()) {\r\n          <span class=\"toggle-text\">{{ label() }}</span>\r\n        }\r\n      </label>\r\n    </div>\r\n  `,\r\n  styleUrls: ['./toggle.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => KcToggleComponent),\r\n      multi: true\r\n    }\r\n  ]\r\n})\r\nexport class KcToggleComponent implements ControlValueAccessor {\r\n  // Input properties\r\n  variant = input<ToggleVariant>('primary');\r\n  size = input<ComponentSize>('md');\r\n  label = input<string>('');\r\n  isDisabled = input<boolean>(false);\r\n  \r\n  // Output events\r\n  toggleChange = output<boolean>();\r\n  \r\n  // Internal state\r\n  value = false;\r\n  toggleId = `toggle-${Math.random().toString(36).substr(2, 9)}`;\r\n  \r\n  // ControlValueAccessor implementation\r\n  private onChange = (value: boolean) => {};\r\n  private onTouched = () => {};\r\n  \r\n  writeValue(value: boolean): void {\r\n    this.value = !!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    // The disabled state is handled by the input signal\r\n  }\r\n  \r\n  handleToggle(event: Event): void {\r\n    if (this.isDisabled()) {\r\n      return;\r\n    }\r\n    \r\n    const target = event.target as HTMLInputElement;\r\n    this.value = target.checked;\r\n    \r\n    // Notify form control\r\n    this.onChange(this.value);\r\n    this.onTouched();\r\n    \r\n    // Emit event\r\n    this.toggleChange.emit(this.value);\r\n  }\r\n} ","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';\nimport { CommonModule } from '@angular/common';\nimport { KcIconComponent } from '../icons/icon/icon.component';\nimport { ComponentSize } from '../form-controls/types/sizing.type';\n\n@Component({\n  selector: 'kc-card',\n  standalone: true,\n  imports: [CommonModule, KcIconComponent],\n  templateUrl: './kc-card.component.html',\n  styleUrls: ['./kc-card.component.scss']\n})\nexport class KcCardComponent implements AfterContentInit {\n  // Structure Control\n  showHeader = input<boolean>(true);\n  isClosable = input<boolean>(false);\n  showHeaderSeparator = input<boolean>(true);\n\n  // Header Content\n  prefixIcon = input<string | undefined>(undefined);\n  title = input<string | undefined>(undefined);\n\n  // Size (affects title typography)\n  size = input<ComponentSize>('md');\n\n  // Width Control\n  fullWidth = input<boolean>(true);\n  width = input<string | undefined>(undefined);\n  minWidth = input<string | undefined>(undefined);\n  maxWidth = input<string | undefined>(undefined);\n  maxHeight = input<string | undefined>(undefined);\n\n  // Content check\n  @ContentChild('footerContent') footerContent: ElementRef | undefined;\n  hasFooterContent = false;\n\n  // Component size constants for the template\n  componentSizes: Record<string, ComponentSize> = {\n    XS: 'xs',\n    SM: 'sm',\n    MD: 'md',\n    LG: 'lg',\n    XLG: 'xlg'\n  };\n\n  ngAfterContentInit() {\n    // Check if footer content is present\n    setTimeout(() => {\n      const footerElement = document.querySelector('[footerSlot]');\n      this.hasFooterContent = !!footerElement && footerElement.children.length > 0;\n    });\n  }\n\n  // Event Handlers\n  onClose(): void {\n    // This is a stub for close functionality\n    // Implementations would typically emit an event here\n    console.log('Close button clicked');\n  }\n\n  // Helper methods to determine typography classes\n  getTitleClass(): string {\n    switch (this.size()) {\n      case 'sm': return 'typo-title-1';\n      case 'md': return 'typo-title-2';\n      case 'lg': return 'typo-title-3';\n      default: return 'typo-title-2';\n    }\n  }\n} ","<div class=\"kc-card\" \n     [ngStyle]=\"{ \n         'width': !fullWidth() ? width() : '100%',\n         'min-width': !fullWidth() ? minWidth() : null,\n         'max-width': !fullWidth() ? maxWidth() : null,\n         'max-height': maxHeight()\n     }\"\n     [class.no-header-separator]=\"showHeader() && !showHeaderSeparator()\">\n  <!-- Optional Header -->\n  <div class=\"kc-card-header\" *ngIf=\"showHeader()\" [class.with-separator]=\"showHeaderSeparator()\">\n    <div class=\"kc-card-header-left\">\n      <!-- Prefix Icon (if provided) -->\n      <kc-icon *ngIf=\"prefixIcon()\" [iconClass]=\"prefixIcon()!\" [size]=\"componentSizes['MD']\"></kc-icon>\n      \n      <!-- Title (if provided) -->\n      <span *ngIf=\"title()\" class=\"kc-card-title\" [ngClass]=\"getTitleClass()\">{{ title() }}</span>\n      \n      <!-- Left Slot Content -->\n      <ng-content select=\"[leftSlot]\"></ng-content>\n    </div>\n    \n    <div class=\"kc-card-header-right\">\n      <!-- Right Slot Content -->\n      <ng-content select=\"[rightSlot]\"></ng-content>\n      \n      <!-- Optional Close Button -->\n      <button *ngIf=\"isClosable()\" class=\"kc-card-close-button\" (click)=\"onClose()\">\n        <kc-icon iconClass=\"icon-close\"></kc-icon>\n      </button>\n    </div>\n  </div>\n  \n  <!-- Card Content -->\n  <div class=\"kc-card-content\" [class.has-max-height]=\"maxHeight()\">\n    <ng-content></ng-content>\n  </div>\n  \n  <!-- Optional Footer - Only displayed when content is provided -->\n  <div class=\"kc-card-footer\" *ngIf=\"hasFooterContent\">\n    <ng-content select=\"[footerSlot]\"></ng-content>\n  </div>\n</div> ","import { CommonModule } from '@angular/common';\r\nimport { Component, input } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'kc-skeleton-block',\r\n  imports: [CommonModule],\r\n  templateUrl: './skeleton-block.component.html',\r\n  styleUrl: './skeleton-block.component.scss',\r\n})\r\nexport class SkeletonBlockComponent {\r\n  width = input<string>('80px');\r\n  height = input<string>('8px');\r\n  borderRadius = input<string>('12px');\r\n}\r\n","<div\r\n  class=\"skeleton-block\"\r\n  [ngStyle]=\"{\r\n    width: width(),\r\n    height: height(),\r\n    borderRadius: borderRadius(),\r\n  }\"\r\n></div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n  Component,\r\n  ContentChild,\r\n  TemplateRef,\r\n  computed,\r\n  input,\r\n  output,\r\n  signal,\r\n} from '@angular/core';\r\nimport { SkeletonBlockComponent } from '../../../public-api';\r\n\r\nexport interface ISortState {\r\n  columnKey: string;\r\n  direction: 'asc' | 'desc' | '';\r\n}\r\n\r\n@Component({\r\n  selector: 'kc-table',\r\n  imports: [CommonModule, SkeletonBlockComponent],\r\n  templateUrl: './table.component.html',\r\n  styleUrl: './table.component.scss',\r\n})\r\nexport class KcTableComponent {\r\n  rows = input.required<any>();\r\n  // header values, for example array of strings\r\n  headers = input<any>();\r\n\r\n  applyScrolledXSticky = input<boolean>(true);\r\n\r\n  height = input<string | undefined>(undefined);\r\n\r\n  // show hover effect on rows\r\n  rowHover = input<boolean>(false);\r\n  // make cursor pointer on rows\r\n  rowClickable = input<boolean>(false);\r\n\r\n  // when loading show shimmer effect\r\n  isLoading = input<boolean>(false);\r\n\r\n  skeletonRows = input<number>(3);\r\n\r\n  skeletonCols = input<number>(3);\r\n\r\n  rowClicked = output<any>();\r\n\r\n  sortChanged = output<ISortState[]>();\r\n\r\n  @ContentChild('tableHeader') tableHeaderTpl?: TemplateRef<any>;\r\n  @ContentChild('tableRow') tableRowTpl?: TemplateRef<any>;\r\n  @ContentChild('skeleton') tableSkeletonTpl?: TemplateRef<any>;\r\n  hasScrolledX = signal(false);\r\n\r\n  skeletonRowsArray = computed(() =>\r\n    Array.from({ length: this.skeletonRows() ?? 0 }),\r\n  );\r\n  skeletonColsArray = computed(() =>\r\n    Array.from({ length: this.skeletonCols() ?? 0 }),\r\n  );\r\n\r\n  sortStateList = signal<ISortState[]>([]);\r\n\r\n  onScroll(element: HTMLElement): void {\r\n    this.hasScrolledX.set(element.scrollLeft > 0);\r\n  }\r\n\r\n  onSortChange(\r\n    columnKey: string,\r\n    direction: 'asc' | 'desc' | '',\r\n    isMultiSort: boolean,\r\n  ): void {\r\n    if (!isMultiSort) {\r\n      this.sortStateList.set([]);\r\n    }\r\n    let sortStateList = this.sortStateList();\r\n    const existingSort = sortStateList.find(\r\n      (sort) => sort.columnKey === columnKey,\r\n    );\r\n\r\n    if (existingSort) {\r\n      existingSort.direction = direction;\r\n      if (direction === '') {\r\n        sortStateList = sortStateList.filter(\r\n          (sort) => sort.columnKey !== columnKey,\r\n        );\r\n      }\r\n    } else if (direction !== '') {\r\n      sortStateList.push({ columnKey, direction });\r\n    }\r\n    this.sortStateList.set([...sortStateList]);\r\n    console.log('Sort State List:', this.sortStateList());\r\n\r\n    this.sortChanged.emit(this.sortStateList());\r\n  }\r\n}\r\n","<div class=\"table-wrapper\">\r\n  <div\r\n    #scrollContainer\r\n    class=\"table-overflow\"\r\n    [style.height]=\"height()\"\r\n    [class.scrolled-x]=\"hasScrolledX() && applyScrolledXSticky()\"\r\n    (scroll)=\"onScroll(scrollContainer)\"\r\n  >\r\n    <table class=\"table\">\r\n      <thead>\r\n        @if (tableHeaderTpl) {\r\n          <ng-container\r\n            [ngTemplateOutlet]=\"tableHeaderTpl\"\r\n            [ngTemplateOutletContext]=\"{ $implicit: headers() }\"\r\n          ></ng-container>\r\n        } @else {\r\n          <tr>\r\n            @for (item of headers(); track $index) {\r\n              <th>\r\n                <div class=\"header-cell\">\r\n                  <div class=\"header-cell__value\">\r\n                    {{ item }}\r\n                  </div>\r\n                </div>\r\n              </th>\r\n            }\r\n          </tr>\r\n        }\r\n      </thead>\r\n\r\n      <tbody>\r\n        @if (isLoading()) {\r\n          @if (tableSkeletonTpl) {\r\n            <ng-container [ngTemplateOutlet]=\"tableSkeletonTpl\"></ng-container>\r\n          } @else {\r\n            @for (_ of skeletonRowsArray(); track $index) {\r\n              <tr>\r\n                @for (_ of skeletonColsArray(); track $index) {\r\n                  <td>\r\n                    <kc-skeleton-block></kc-skeleton-block>\r\n                  </td>\r\n                }\r\n              </tr>\r\n            }\r\n          }\r\n        } @else {\r\n          @for (row of rows(); track $index) {\r\n            @if (tableRowTpl) {\r\n              <ng-container\r\n                [ngTemplateOutlet]=\"tableRowTpl\"\r\n                [ngTemplateOutletContext]=\"{ $implicit: row }\"\r\n              ></ng-container>\r\n            } @else {\r\n              <tr [class.hover]=\"rowHover()\" [class.clickable]=\"rowClickable()\">\r\n                @for (kv of row | keyvalue; track $index) {\r\n                  <td>\r\n                    {{ kv.value }}\r\n                  </td>\r\n                }\r\n              </tr>\r\n            }\r\n          }\r\n        }\r\n      </tbody>\r\n    </table>\r\n  </div>\r\n</div>\r\n","import {\r\n  Directive,\r\n  ElementRef,\r\n  HostBinding,\r\n  Renderer2,\r\n  computed,\r\n  effect,\r\n  inject,\r\n  input,\r\n} from '@angular/core';\r\nimport { KcTableComponent } from '../table.component';\r\n\r\n@Directive({\r\n  standalone: true,\r\n  selector: '[kcLeftSticky]',\r\n})\r\nexport class LeftStickyDirective {\r\n  @HostBinding('class.left-sticky') applyClass = true;\r\n\r\n  stickyStyles = input<{ [key: string]: string }>({});\r\n\r\n  private readonly renderer = inject(Renderer2);\r\n\r\n  private readonly el = inject(ElementRef);\r\n\r\n  private readonly hostTable = inject(KcTableComponent);\r\n\r\n  private hasScrolledX = computed(() => this.hostTable.hasScrolledX());\r\n\r\n  private prevStickyStyles = new Set<string>();\r\n\r\n  constructor() {\r\n    effect(() => {\r\n      this.manageStyles();\r\n    });\r\n  }\r\n\r\n  manageStyles() {\r\n    const scrolledX = this.hasScrolledX();\r\n    const stickyStyles = this.stickyStyles();\r\n    for (const style of this.prevStickyStyles) {\r\n      this.renderer.removeStyle(this.el.nativeElement, style);\r\n    }\r\n    this.prevStickyStyles.clear();\r\n    if (!scrolledX) {\r\n      return;\r\n    }\r\n    for (const [prop, value] of Object.entries(stickyStyles)) {\r\n      if (value) {\r\n        this.renderer.setStyle(this.el.nativeElement, prop, value);\r\n        this.prevStickyStyles.add(prop);\r\n      }\r\n    }\r\n  }\r\n}\r\n","import {\r\n  Directive,\r\n  ElementRef,\r\n  HostBinding,\r\n  Renderer2,\r\n  computed,\r\n  effect,\r\n  inject,\r\n  input,\r\n} from '@angular/core';\r\nimport { KcTableComponent } from '../table.component';\r\n\r\n@Directive({\r\n  standalone: true,\r\n  selector: '[kcRightSticky]',\r\n})\r\nexport class RightStickyDirective {\r\n  @HostBinding('class.right-sticky') applyClass = true;\r\n\r\n  stickyStyles = input<{ [key: string]: string }>({});\r\n\r\n  private readonly renderer = inject(Renderer2);\r\n\r\n  private readonly el = inject(ElementRef);\r\n\r\n  private readonly hostTable = inject(KcTableComponent);\r\n\r\n  private hasScrolledX = computed(() => this.hostTable.hasScrolledX());\r\n\r\n  private prevStickyStyles = new Set<string>();\r\n\r\n  constructor() {\r\n    effect(() => {\r\n      this.manageStyles();\r\n    });\r\n  }\r\n\r\n  manageStyles() {\r\n    const scrolledX = this.hasScrolledX();\r\n    const stickyStyles = this.stickyStyles();\r\n    for (const style of this.prevStickyStyles) {\r\n      this.renderer.removeStyle(this.el.nativeElement, style);\r\n    }\r\n    this.prevStickyStyles.clear();\r\n    if (!scrolledX) {\r\n      return;\r\n    }\r\n    for (const [prop, value] of Object.entries(stickyStyles)) {\r\n      if (value) {\r\n        this.renderer.setStyle(this.el.nativeElement, prop, value);\r\n        this.prevStickyStyles.add(prop);\r\n      }\r\n    }\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n  Component,\r\n  HostListener,\r\n  inject,\r\n  input,\r\n  linkedSignal,\r\n  signal,\r\n} from '@angular/core';\r\nimport { KcTableComponent } from '../table.component';\r\n\r\n@Component({\r\n  selector: '[kc-sortable]',\r\n  imports: [CommonModule],\r\n  styleUrls: ['./sortable.component.scss'],\r\n  templateUrl: './sortable.component.html',\r\n})\r\nexport class SortableComponent {\r\n  columnKey = input.required<string>({ alias: 'kc-sortable' });\r\n\r\n  private readonly hostTable = inject(KcTableComponent);\r\n\r\n  //currentDirection = signal<'asc' | 'desc' | ''>('');\r\n  currentDirection = linkedSignal<'asc' | 'desc' | ''>(() => {\r\n    const sortStateList = this.hostTable.sortStateList();\r\n    for (const sortState of sortStateList) {\r\n      if (sortState.columnKey === this.columnKey()) {\r\n        return sortState.direction;\r\n      }\r\n    }\r\n    return '';\r\n  });\r\n\r\n  @HostListener('click', ['$event'])\r\n  onClick(event: MouseEvent) {\r\n    const isMultiSort = !!event.ctrlKey || !!event.metaKey;\r\n    this.toggleDirection();\r\n    this.hostTable.onSortChange(\r\n      this.columnKey(),\r\n      this.currentDirection(),\r\n      isMultiSort,\r\n    );\r\n  }\r\n\r\n  private toggleDirection() {\r\n    const current = this.currentDirection();\r\n    if (current === '') {\r\n      this.currentDirection.set('asc');\r\n    } else if (current === 'asc') {\r\n      this.currentDirection.set('desc');\r\n    } else {\r\n      this.currentDirection.set('');\r\n    }\r\n  }\r\n}\r\n","<div class=\"header-cell\">\r\n  <div class=\"header-cell__value\">\r\n    <ng-content></ng-content>\r\n  </div>\r\n  <div class=\"header-cell__sort\">\r\n    <div\r\n      class=\"sort-arrow\"\r\n      [class.sort-arrow--asc]=\"currentDirection() === 'asc'\"\r\n      [class.sort-arrow--desc]=\"currentDirection() === 'desc'\"\r\n      [class.sort-arrow--none]=\"currentDirection() === ''\"\r\n    >\r\n      <svg\r\n        width=\"10\"\r\n        height=\"6\"\r\n        viewBox=\"0 0 10 6\"\r\n        fill=\"none\"\r\n        xmlns=\"http://www.w3.org/2000/svg\"\r\n      >\r\n        <path\r\n          d=\"M1 1L5 5L9 1\"\r\n          stroke=\"currentColor\"\r\n          stroke-width=\"1.5\"\r\n          stroke-linecap=\"round\"\r\n          stroke-linejoin=\"round\"\r\n        />\r\n      </svg>\r\n    </div>\r\n  </div>\r\n</div>\r\n","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-container.actionable {\r\n  pointer-events: auto;\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  @Input() tooltipActionable: boolean = false;\r\n  @Input() tooltipActionableDebounce: number = 150;\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    // Use a debounce delay for actionable tooltips to allow time to hover on the tooltip\r\n    const hideDelay = this.tooltipActionable ? Math.max(this.tooltipHideDelay, this.tooltipActionableDebounce) : this.tooltipHideDelay;\r\n    \r\n    this.hideTimeoutId = window.setTimeout(() => {\r\n      this.removeTooltip();\r\n    }, hideDelay);\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 addTooltipMouseListeners(): void {\r\n    if (!this.tooltipElement) return;\r\n    \r\n    this.renderer.listen(this.tooltipElement, 'mouseenter', () => {\r\n      this.clearTimeouts();\r\n    });\r\n    \r\n    this.renderer.listen(this.tooltipElement, 'mouseleave', () => {\r\n      // Add a small delay when leaving the tooltip to prevent accidental closes\r\n      this.clearTimeouts();\r\n      this.hideTimeoutId = window.setTimeout(() => {\r\n        this.removeTooltip();\r\n      }, Math.max(this.tooltipHideDelay, this.tooltipActionableDebounce));\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    // Add actionable class if needed\r\n    if (this.tooltipActionable) {\r\n      this.renderer.addClass(this.tooltipElement, 'actionable');\r\n    }\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    // Add mouse listeners for actionable tooltips\r\n    if (this.tooltipActionable) {\r\n      this.addTooltipMouseListeners();\r\n    }\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  }\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 { Component, signal } from '@angular/core';\r\nimport { SortableComponent } from '../../../data/table/component/sortable.component';\r\nimport { LeftStickyDirective } from '../../../data/table/directive/left-sticky.directive';\r\nimport { RightStickyDirective } from '../../../data/table/directive/right-sticky.directive';\r\nimport {\r\n  ISortState,\r\n  KcTableComponent,\r\n} from '../../../data/table/table.component';\r\nimport { KcIconComponent } from '../../../icons/icon/icon.component';\r\nimport { SkeletonBlockComponent } from '../../../loading/skeleton/skeleton-block.component';\r\n\r\nexport interface IPie {\r\n  id: number;\r\n  code: string;\r\n  name: string;\r\n  price: number;\r\n}\r\nexport const PIE_HEADERS = ['Code', 'Id', 'Name', 'Price'];\r\nexport const PIE_LIST: IPie[] = [\r\n  {\r\n    id: 1,\r\n    code: 'P001',\r\n    name: 'Apple Pie',\r\n    price: 12.99,\r\n  },\r\n  {\r\n    id: 1,\r\n    code: 'P002',\r\n    name: 'Cherry Pie',\r\n    price: 14.99,\r\n  },\r\n  {\r\n    id: 2,\r\n    code: 'P002',\r\n    name: 'Cherry Pie',\r\n    price: 14.99,\r\n  },\r\n  {\r\n    id: 3,\r\n    code: 'P003',\r\n    name: 'Pumpkin Pie',\r\n    price: 11.99,\r\n  },\r\n  {\r\n    id: 4,\r\n    code: 'P004',\r\n    name: 'Blueberry Pie',\r\n    price: 13.99,\r\n  },\r\n  {\r\n    id: 5,\r\n    code: 'P005',\r\n    name: 'Peach Pie',\r\n    price: 12.49,\r\n  },\r\n];\r\n\r\nexport const COOKIE_HEADERS = [\r\n  'ID',\r\n  'Image',\r\n  'Code',\r\n  'Name',\r\n  'Color',\r\n  'Weight',\r\n  'Price',\r\n];\r\nexport const COOKIE_LIST = [\r\n  {\r\n    id: 1,\r\n    image: 'https://example.com/cookie1.jpg',\r\n    code: 'C001',\r\n    name: 'Chocolate Chip Cookie',\r\n    color: 'Brown',\r\n    weight: 50,\r\n    price: 1.99,\r\n  },\r\n  {\r\n    id: 2,\r\n    image: 'https://example.com/cookie2.jpg',\r\n    code: 'C002',\r\n    name: 'Oatmeal Raisin Cookie',\r\n    color: 'Golden Brown',\r\n    weight: 55,\r\n    price: 2.49,\r\n  },\r\n  {\r\n    id: 3,\r\n    image: 'https://example.com/cookie3.jpg',\r\n    code: 'C003',\r\n    name: 'Peanut Butter Cookie',\r\n    color: 'Light Brown',\r\n    weight: 60,\r\n    price: 2.99,\r\n  },\r\n];\r\n\r\n@Component({\r\n  selector: 'lib-table-showcase',\r\n  imports: [\r\n    CommonModule,\r\n    KcTableComponent,\r\n    LeftStickyDirective,\r\n    RightStickyDirective,\r\n    SortableComponent,\r\n    SkeletonBlockComponent,\r\n    KcIconComponent,\r\n  ],\r\n  templateUrl: './table-showcase.component.html',\r\n  styleUrl: './table-showcase.component.scss',\r\n})\r\nexport class TableShowcaseComponent {\r\n  pieHeaders = PIE_HEADERS;\r\n  pieList = PIE_LIST;\r\n  veryLargePieList = Array(50).fill(PIE_LIST).flat();\r\n  cookieHeaders = COOKIE_HEADERS;\r\n  cookieList = COOKIE_LIST;\r\n\r\n  showVeryLargePieList = signal(false);\r\n\r\n  sortTable = signal<IPie[]>(PIE_LIST);\r\n\r\n  onSortChange(sortState: ISortState[]) {\r\n    console.log('Sort changed:', sortState);\r\n    this.sortTable.set(this.sortData(this.sortTable(), sortState));\r\n  }\r\n\r\n  sortData(data: IPie[], sortStates: ISortState[]): IPie[] {\r\n    // Filter valid sort keys (with 'asc' or 'desc') and focus on 'id' and 'code'\r\n    const activeSorts = sortStates.filter(\r\n      (s) =>\r\n        (s.columnKey === 'id' || s.columnKey === 'code') && s.direction !== '',\r\n    );\r\n\r\n    if (activeSorts.length === 0) return PIE_LIST;\r\n\r\n    return [...data].sort((a, b) => {\r\n      for (const { columnKey, direction } of activeSorts) {\r\n        const valA = columnKey === 'id' ? a.id : a.code;\r\n        const valB = columnKey === 'id' ? b.id : b.code;\r\n\r\n        if (valA < valB) return direction === 'asc' ? -1 : 1;\r\n        if (valA > valB) return direction === 'asc' ? 1 : -1;\r\n        // If equal, continue to next key\r\n      }\r\n      return 0; // all compared keys are equal\r\n    });\r\n  }\r\n}\r\n","<div class=\"table-container mt-20\">\r\n  <h3>Small table 0</h3>\r\n  <kc-table [headers]=\"pieHeaders\" [rows]=\"pieList\"></kc-table>\r\n</div>\r\n<div class=\"table-container mt-20\">\r\n  <h3>Small table 1</h3>\r\n  <kc-table\r\n    [headers]=\"pieHeaders\"\r\n    [rows]=\"pieList\"\r\n    [rowClickable]=\"true\"\r\n    [rowHover]=\"true\"\r\n  ></kc-table>\r\n</div>\r\n<div class=\"table-container mt-20\">\r\n  <h3>Small table 2</h3>\r\n  <kc-table\r\n    [headers]=\"pieHeaders\"\r\n    [rows]=\"pieList\"\r\n    [rowClickable]=\"true\"\r\n    [rowHover]=\"true\"\r\n  >\r\n    <ng-template #tableHeader>\r\n      <tr>\r\n        <th>\r\n          <div class=\"flex\">\r\n            <span> ID </span>\r\n            <kc-icon [iconClass]=\"'icon-chain'\"></kc-icon>\r\n          </div>\r\n        </th>\r\n        <th>\r\n          <div class=\"flex\">\r\n            <span> Code </span>\r\n            <kc-icon [iconClass]=\"'icon-search'\"></kc-icon>\r\n          </div>\r\n        </th>\r\n        <th>Name</th>\r\n        <th>Price</th>\r\n      </tr>\r\n    </ng-template>\r\n    <ng-template #tableRow let-row>\r\n      <tr>\r\n        <td kcLeftSticky>\r\n          <div class=\"flex\">\r\n            <span>\r\n              {{ row.id }}\r\n            </span>\r\n            <kc-icon [iconClass]=\"'icon-search'\"></kc-icon>\r\n          </div>\r\n        </td>\r\n        <td>\r\n          {{ row.code }}\r\n        </td>\r\n        <td>{{ row.name }}</td>\r\n        <td>{{ row.price }}</td>\r\n      </tr>\r\n    </ng-template>\r\n  </kc-table>\r\n</div>\r\n<!-- -------------------------------------->\r\n<!-- STICKY COLUMNS  -->\r\n<!-- -------------------------------------->\r\n<div class=\"flex\">\r\n  <div [style.width]=\"'200px'\" class=\"table-container\">\r\n    <h3>Sticky columns</h3>\r\n    <kc-table [rows]=\"pieList\" [rowClickable]=\"true\" [rowHover]=\"true\">\r\n      <ng-template #tableHeader>\r\n        <tr>\r\n          <th kcLeftSticky>ID</th>\r\n          <th kc-test=\"'code'\">Code</th>\r\n          <th>Name</th>\r\n          <th>Price</th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template #tableRow let-row>\r\n        <tr>\r\n          <td kcLeftSticky>\r\n            {{ row.id }}\r\n          </td>\r\n          <td>\r\n            {{ row.code }}\r\n          </td>\r\n          <td>{{ row.name }}</td>\r\n          <td>{{ row.price }}</td>\r\n        </tr>\r\n      </ng-template>\r\n    </kc-table>\r\n  </div>\r\n  <div [style.width]=\"'270px'\" class=\"table-container\">\r\n    <h3>2 Side Sticky</h3>\r\n    <kc-table [rows]=\"pieList\" [rowClickable]=\"true\" [rowHover]=\"true\">\r\n      <ng-template #tableHeader>\r\n        <tr>\r\n          <th kcLeftSticky>ID</th>\r\n          <th kc-test=\"'code'\">Code</th>\r\n          <th>Name</th>\r\n          <th kcRightSticky>Price</th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template #tableRow let-row>\r\n        <tr>\r\n          <td kcLeftSticky>\r\n            {{ row.id }}\r\n          </td>\r\n          <td>\r\n            {{ row.code }}\r\n          </td>\r\n          <td>{{ row.name }}</td>\r\n          <td kcRightSticky>{{ row.price }}</td>\r\n        </tr>\r\n      </ng-template>\r\n    </kc-table>\r\n  </div>\r\n\r\n  <div [style.width]=\"'300px'\" class=\"table-container\">\r\n    <h3>Custom style on sticky state</h3>\r\n    <kc-table [rows]=\"pieList\" [rowClickable]=\"true\" [rowHover]=\"true\">\r\n      <ng-template #tableHeader>\r\n        <tr>\r\n          <th\r\n            kcLeftSticky\r\n            [stickyStyles]=\"{\r\n              color: 'purple',\r\n              'background-color': 'var(--primary)',\r\n            }\"\r\n          >\r\n            ID\r\n          </th>\r\n          <th kc-test=\"'code'\">Code</th>\r\n          <th>Name</th>\r\n          <th>Price</th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template #tableRow let-row>\r\n        <tr>\r\n          <td\r\n            kcLeftSticky\r\n            [stickyStyles]=\"{\r\n              color: 'purple',\r\n              'background-color': 'var(--primary)',\r\n            }\"\r\n          >\r\n            {{ row.id }}\r\n          </td>\r\n          <td>\r\n            {{ row.code }}\r\n          </td>\r\n          <td>{{ row.name }}</td>\r\n          <td>{{ row.price }}</td>\r\n        </tr>\r\n      </ng-template>\r\n    </kc-table>\r\n  </div>\r\n  <div [style.width]=\"'300px'\" class=\"table-container\">\r\n    <h3>Separate Custom styles</h3>\r\n    <kc-table [rows]=\"pieList\" [rowClickable]=\"true\" [rowHover]=\"true\">\r\n      <ng-template #tableHeader>\r\n        <tr>\r\n          <th\r\n            kcLeftSticky\r\n            [stickyStyles]=\"{\r\n              color: 'purple',\r\n              'background-color': 'var(--tertiary)',\r\n            }\"\r\n          >\r\n            ID\r\n          </th>\r\n          <th kc-test=\"'code'\">Code</th>\r\n          <th>Name</th>\r\n          <th\r\n            kcRightSticky\r\n            [stickyStyles]=\"{\r\n              color: 'purple',\r\n              'background-color': 'var(--primary)',\r\n            }\"\r\n          >\r\n            Price\r\n          </th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template #tableRow let-row>\r\n        <tr>\r\n          @if (row.id === 3) {\r\n            <td\r\n              kcLeftSticky\r\n              [stickyStyles]=\"{\r\n                color: 'purple',\r\n                'background-color': 'var(--primary)',\r\n              }\"\r\n            >\r\n              {{ row.id }}\r\n            </td>\r\n          } @else {\r\n            <td\r\n              kcLeftSticky\r\n              [stickyStyles]=\"{\r\n                color: 'purple',\r\n                'background-color': 'orange',\r\n              }\"\r\n            >\r\n              {{ row.id }}\r\n            </td>\r\n          }\r\n          <td>\r\n            {{ row.code }}\r\n          </td>\r\n          <td>{{ row.name }}</td>\r\n          <td\r\n            kcRightSticky\r\n            [stickyStyles]=\"{\r\n              color: 'blue',\r\n              'background-color': 'purple',\r\n            }\"\r\n          >\r\n            {{ row.price }}\r\n          </td>\r\n        </tr>\r\n      </ng-template>\r\n    </kc-table>\r\n  </div>\r\n</div>\r\n<!-- -------------------------------------->\r\n<!-- STICKY COLUMNS END -->\r\n<!-- -------------------------------------->\r\n<!-- -------------------------------------->\r\n<!-- STICKY HEADERS-->\r\n<!-- -------------------------------------->\r\n<div class=\"flex\">\r\n  <div [style.width]=\"'300px'\" class=\"table-container\">\r\n    <h3>Sticky x and y axis</h3>\r\n    <kc-table\r\n      [height]=\"'200px'\"\r\n      [rows]=\"pieList\"\r\n      [rowClickable]=\"true\"\r\n      [rowHover]=\"true\"\r\n    >\r\n      <ng-template #tableHeader>\r\n        <tr>\r\n          <th\r\n            kcLeftSticky\r\n            [stickyStyles]=\"{\r\n              color: 'purple',\r\n              'background-color': 'var(--tertiary)',\r\n            }\"\r\n          >\r\n            ID\r\n          </th>\r\n          <th kc-test=\"'code'\">Code</th>\r\n          <th>Name</th>\r\n          <th\r\n            kcRightSticky\r\n            [stickyStyles]=\"{\r\n              color: 'purple',\r\n              'background-color': 'var(--primary)',\r\n            }\"\r\n          >\r\n            Price\r\n          </th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template #tableRow let-row>\r\n        <tr>\r\n          @if (row.id === 3) {\r\n            <td\r\n              kcLeftSticky\r\n              [stickyStyles]=\"{\r\n                color: 'purple',\r\n                'background-color': 'var(--primary)',\r\n              }\"\r\n            >\r\n              {{ row.id }}\r\n            </td>\r\n          } @else {\r\n            <td\r\n              kcLeftSticky\r\n              [stickyStyles]=\"{\r\n                color: 'purple',\r\n                'background-color': 'orange',\r\n              }\"\r\n            >\r\n              {{ row.id }}\r\n            </td>\r\n          }\r\n          <td>\r\n            {{ row.code }}\r\n          </td>\r\n          <td>{{ row.name }}</td>\r\n          <td\r\n            kcRightSticky\r\n            [stickyStyles]=\"{\r\n              color: 'blue',\r\n              'background-color': 'purple',\r\n            }\"\r\n          >\r\n            {{ row.price }}\r\n          </td>\r\n        </tr>\r\n      </ng-template>\r\n    </kc-table>\r\n  </div>\r\n</div>\r\n<!-- -------------------------------------->\r\n<!-- STICKY HEADERS END-->\r\n<!-- -------------------------------------->\r\n<div class=\"table-container mt-20\">\r\n  <h3>Shimmer during load table</h3>\r\n  <kc-table\r\n    [isLoading]=\"true\"\r\n    [skeletonCols]=\"4\"\r\n    [skeletonRows]=\"10\"\r\n    [headers]=\"pieHeaders\"\r\n    [rows]=\"pieList\"\r\n    [rowClickable]=\"true\"\r\n    [rowHover]=\"true\"\r\n  ></kc-table>\r\n</div>\r\n<div class=\"table-container mt-20\">\r\n  <h3>Custom Shimmer during load table</h3>\r\n  <kc-table\r\n    [isLoading]=\"true\"\r\n    [skeletonCols]=\"4\"\r\n    [skeletonRows]=\"10\"\r\n    [headers]=\"pieHeaders\"\r\n    [rows]=\"pieList\"\r\n    [rowClickable]=\"true\"\r\n    [rowHover]=\"true\"\r\n  >\r\n    <ng-template #skeleton>\r\n      <tr>\r\n        <td>shimmer</td>\r\n        <td>\r\n          <kc-skeleton-block [height]=\"'2px'\"></kc-skeleton-block>\r\n        </td>\r\n        <td>\r\n          <kc-skeleton-block></kc-skeleton-block>\r\n        </td>\r\n        <td>\r\n          <kc-skeleton-block></kc-skeleton-block>\r\n        </td>\r\n      </tr>\r\n    </ng-template>\r\n  </kc-table>\r\n</div>\r\n\r\n<div class=\"flex\">\r\n  <div [style.width]=\"'300px'\" class=\"table-container\">\r\n    <h3>Very large with sticky custom separate styles</h3>\r\n    <kc-table\r\n      [height]=\"'200px'\"\r\n      [rows]=\"veryLargePieList\"\r\n      [rowClickable]=\"true\"\r\n      [rowHover]=\"true\"\r\n    >\r\n      <ng-template #tableHeader>\r\n        <tr>\r\n          <th\r\n            kcLeftSticky\r\n            [stickyStyles]=\"{\r\n              color: 'purple',\r\n              'background-color': 'var(--tertiary)',\r\n            }\"\r\n          >\r\n            ID\r\n          </th>\r\n          <th kc-test=\"'code'\">Code</th>\r\n          <th>Name</th>\r\n          <th\r\n            kcRightSticky\r\n            [stickyStyles]=\"{\r\n              color: 'purple',\r\n              'background-color': 'var(--primary)',\r\n            }\"\r\n          >\r\n            Price\r\n          </th>\r\n        </tr>\r\n      </ng-template>\r\n      <ng-template #tableRow let-row>\r\n        <tr>\r\n          @if (row.id === 3) {\r\n            <td\r\n              kcLeftSticky\r\n              [stickyStyles]=\"{\r\n                color: 'purple',\r\n                'background-color': 'var(--primary)',\r\n              }\"\r\n            >\r\n              {{ row.id }}\r\n            </td>\r\n          } @else {\r\n            <td\r\n              kcLeftSticky\r\n              [stickyStyles]=\"{\r\n                color: 'purple',\r\n                'background-color': 'orange',\r\n              }\"\r\n            >\r\n              {{ row.id }}\r\n            </td>\r\n          }\r\n          <td>\r\n            {{ row.code }}\r\n          </td>\r\n          <td>{{ row.name }}</td>\r\n          <td\r\n            kcRightSticky\r\n            [stickyStyles]=\"{\r\n              color: 'blue',\r\n              'background-color': 'purple',\r\n            }\"\r\n          >\r\n            {{ row.price }}\r\n          </td>\r\n        </tr>\r\n      </ng-template>\r\n    </kc-table>\r\n  </div>\r\n</div>\r\n\r\n<h3>Sort (Multisort with ctrl or meta key)</h3>\r\n<div [style.width]=\"'300px'\" class=\"table-container\">\r\n  <kc-table\r\n    [rows]=\"sortTable()\"\r\n    (sortChanged)=\"onSortChange($event)\"\r\n    [rowClickable]=\"true\"\r\n    [rowHover]=\"true\"\r\n  >\r\n    <ng-template #tableHeader>\r\n      <tr>\r\n        <th [kc-sortable]=\"'id'\" kcLeftSticky>ID</th>\r\n        <th [kc-sortable]=\"'code'\" kc-test=\"'code'\">Code</th>\r\n        <th>Name</th>\r\n        <th>Price</th>\r\n      </tr>\r\n    </ng-template>\r\n    <ng-template #tableRow let-row>\r\n      <tr>\r\n        <td kcLeftSticky>\r\n          {{ row.id }}\r\n        </td>\r\n        <td>\r\n          {{ row.code }}\r\n        </td>\r\n        <td>{{ row.name }}</td>\r\n        <td>{{ row.price }}</td>\r\n      </tr>\r\n    </ng-template>\r\n  </kc-table>\r\n</div>\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 { KcSplitButtonComponent } from '../../lib/form-controls/components/split-button/split-button.component';\r\nimport { SplitButtonOption } from '../../lib/form-controls/components/split-button/split-button.models';\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\nimport { TableShowcaseComponent } from './component/table/table-showcase.component';\r\nimport { KcToggleComponent } from '../../lib/form-controls/components/toggle/toggle.component';\r\nimport { ToggleVariant } from '../../lib/form-controls/types/toggle-variant.type';\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    KcSplitButtonComponent,\r\n    KcBaseModalComponent,\r\n    KcSnackbarComponent,\r\n    KcCardComponent,\r\n    KcChipComponent,\r\n    KcTooltipDirective,\r\n    KcSwitchNavigationComponent,\r\n    KcToggleComponent,\r\n    TableShowcaseComponent,\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: 'splitButtons', name: 'Split 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    { id: 'toggle', name: 'Toggle' },\r\n    { id: 'table', name: 'Table' },\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  // Split Button demo options\r\n  splitButtonOptions: SplitButtonOption[] = [\r\n    { key: 'edit', label: 'Edit', value: 'edit' },\r\n    { key: 'duplicate', label: 'Duplicate', value: 'duplicate' },\r\n    { key: 'delete', label: 'Delete', value: 'delete' },\r\n    { key: 'archive', label: 'Archive', value: 'archive', disabled: true }\r\n  ];\r\n\r\n  splitButtonIconOptions: SplitButtonOption[] = [\r\n    { key: 'profile', label: 'Profile', value: 'profile', prefixIconClass: 'icon-user' },\r\n    { key: 'settings', label: 'Settings', value: 'settings', prefixIconClass: 'icon-cog' },\r\n    { key: 'logout', label: 'Logout', value: 'logout', prefixIconClass: 'icon-logout', suffixIconClass: 'icon-arrow-right' }\r\n  ];\r\n\r\n  // Toggle demo options\r\n  toggleValue = false;\r\n  toggleVariant: ToggleVariant = 'primary';\r\n  toggleSize: ComponentSize = 'md';\r\n  toggleDisabled = false;\r\n  toggleWithLabel = false;\r\n  toggleDisabledOn = true;\r\n\r\n  @ViewChild('sectionButtons') buttonSection!: ElementRef;\r\n  @ViewChild('sectionSplitButtons') splitButtonsSection!: 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  @ViewChild('sectionToggle') toggleSection!: ElementRef;\r\n  @ViewChild('sectionTable') tableSection!: 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      splitButtons: this.splitButtonsSection,\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      toggle: this.toggleSection,\r\n      table: this.tableSection,\r\n    };\r\n\r\n    // Initialize IntersectionObserver with a small delay to ensure all ViewChild elements are ready\r\n    setTimeout(() => {\r\n    this.observeSections();\r\n    }, 100);\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.entries(this.sectionRefs).forEach(([key, ref]) => {\r\n      if (ref && ref.nativeElement) {\r\n        observer.observe(ref.nativeElement);\r\n      } else {\r\n        console.warn(`Section ref for ${key} is not available`);\r\n      }\r\n    });\r\n  }\r\n\r\n  scrollToSection(sectionId: string) {\r\n    if (this.sectionRefs[sectionId] && this.sectionRefs[sectionId].nativeElement) {\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    } else {\r\n      console.warn(`Cannot scroll to section ${sectionId}: section reference not found`);\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  // Split Button demo handlers\r\n  onSplitButtonOptionClick(option: SplitButtonOption): void {\r\n    console.log('Split button option clicked:', option);\r\n    this.notificationService.success('Option Selected', `You selected: ${option.label}`);\r\n  }\r\n\r\n  // Toggle demo handlers\r\n  onToggleChange(value: boolean): void {\r\n    console.log('Toggle changed:', value);\r\n    this.toggleValue = value;\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 #sectionSplitButtons id=\"splitButtons\" class=\"component-section\">\r\n      <h2>Split Button</h2>\r\n\r\n      <div class=\"component-examples\">\r\n        <div class=\"example-card\">\r\n          <h3>Split Button Variants</h3>\r\n          <div class=\"buttons-row\">\r\n            <kc-split-button \r\n              [text]=\"'Primary'\" \r\n              [variant]=\"'primary'\"\r\n              [options]=\"splitButtonOptions\"\r\n              (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n            ></kc-split-button>\r\n            <kc-split-button \r\n              [text]=\"'Secondary'\" \r\n              [variant]=\"'secondary'\"\r\n              [options]=\"splitButtonOptions\"\r\n              (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n            ></kc-split-button>\r\n            <kc-split-button \r\n              [text]=\"'Tertiary'\" \r\n              [variant]=\"'tertiary'\"\r\n              [options]=\"splitButtonOptions\"\r\n              (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n            ></kc-split-button>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Gradient Variants</h3>\r\n          <div class=\"buttons-row\">\r\n            <kc-split-button \r\n              [text]=\"'Gradient 1'\" \r\n              [variant]=\"'gradient_1'\"\r\n              [options]=\"splitButtonOptions\"\r\n              (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n            ></kc-split-button>\r\n            <kc-split-button \r\n              [text]=\"'Gradient 2'\" \r\n              [variant]=\"'gradient_2'\"\r\n              [options]=\"splitButtonOptions\"\r\n              (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n            ></kc-split-button>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Different Sizes</h3>\r\n          <div class=\"buttons-row\">\r\n            <kc-split-button \r\n              [text]=\"'XS'\" \r\n              [size]=\"componentSizes['XS']\"\r\n              [options]=\"splitButtonOptions\"\r\n              (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n            ></kc-split-button>\r\n            <kc-split-button \r\n              [text]=\"'SM'\" \r\n              [size]=\"componentSizes['SM']\"\r\n              [options]=\"splitButtonOptions\"\r\n              (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n            ></kc-split-button>\r\n            <kc-split-button \r\n              [text]=\"'MD'\" \r\n              [size]=\"componentSizes['MD']\"\r\n              [options]=\"splitButtonOptions\"\r\n              (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n            ></kc-split-button>\r\n            <kc-split-button \r\n              [text]=\"'LG'\" \r\n              [size]=\"componentSizes['LG']\"\r\n              [options]=\"splitButtonOptions\"\r\n              (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n            ></kc-split-button>\r\n            <kc-split-button \r\n              [text]=\"'XLG'\" \r\n              [size]=\"componentSizes['XLG']\"\r\n              [options]=\"splitButtonOptions\"\r\n              (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n            ></kc-split-button>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>With Prefix Icon</h3>\r\n          <kc-split-button \r\n            [text]=\"'Settings'\" \r\n            [prefixIcon]=\"'icon-chain'\"\r\n            [variant]=\"'secondary'\"\r\n            [options]=\"splitButtonIconOptions\"\r\n            (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n          ></kc-split-button>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Custom Toggle Icons</h3>\r\n          <kc-split-button \r\n            [text]=\"'Custom Toggle'\" \r\n            [toggleIconOpen]=\"'icon-arrow-up'\"\r\n            [toggleIconClosed]=\"'icon-arrow-down'\"\r\n            [variant]=\"'tertiary'\"\r\n            [options]=\"splitButtonOptions\"\r\n            (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n          ></kc-split-button>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Menu with Icons</h3>\r\n          <kc-split-button \r\n            [text]=\"'User Menu'\" \r\n            [prefixIcon]=\"'icon-user'\"\r\n            [variant]=\"'gradient_1'\"\r\n            [options]=\"splitButtonIconOptions\"\r\n            (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n          ></kc-split-button>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Role-based Variants</h3>\r\n          <div class=\"buttons-row\">\r\n            <kc-split-button \r\n              [text]=\"'Success'\" \r\n              [role]=\"'success'\"\r\n              [options]=\"splitButtonOptions\"\r\n              (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n            ></kc-split-button>\r\n            <kc-split-button \r\n              [text]=\"'Warning'\" \r\n              [role]=\"'warning'\"\r\n              [options]=\"splitButtonOptions\"\r\n              (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n            ></kc-split-button>\r\n            <kc-split-button \r\n              [text]=\"'Danger'\" \r\n              [role]=\"'danger'\"\r\n              [options]=\"splitButtonOptions\"\r\n              (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n            ></kc-split-button>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>States</h3>\r\n          <div class=\"buttons-row\">\r\n            <kc-split-button \r\n              [text]=\"'Disabled'\" \r\n              [isDisabled]=\"true\"\r\n              [options]=\"splitButtonOptions\"\r\n              (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n            ></kc-split-button>\r\n            <kc-split-button \r\n              [text]=\"'Loading (Skeleton)'\" \r\n              [isLoading]=\"true\"\r\n              [loadingText]=\"'Loading...'\"\r\n              [options]=\"splitButtonOptions\"\r\n              (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n            ></kc-split-button>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Full Width</h3>\r\n          <kc-split-button \r\n            [text]=\"'Full Width Split Button'\" \r\n            [isFullWidth]=\"true\"\r\n            [variant]=\"'primary'\"\r\n            [options]=\"splitButtonOptions\"\r\n            (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n          ></kc-split-button>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Skeleton Loading States</h3>\r\n          <p style=\"margin-bottom: 15px; color: #666; font-size: 14px;\">\r\n            The new skeleton loading maintains the button layout while showing loading indicators alongside content.\r\n            Notice how the selected option values remain visible during loading.\r\n          </p>\r\n          <div class=\"buttons-row\">\r\n            <kc-split-button \r\n              [text]=\"'Edit Profile'\"\r\n              [variant]=\"'primary'\"\r\n              [prefixIcon]=\"'icon-chain'\"\r\n              [isLoading]=\"true\"\r\n              [loadingText]=\"'Updating profile...'\"\r\n              [options]=\"splitButtonOptions\"\r\n              (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n            ></kc-split-button>\r\n            <kc-split-button \r\n              [text]=\"'Delete Selected'\"\r\n              [variant]=\"'secondary'\"\r\n              [prefixIcon]=\"'icon-chain'\"\r\n              [isLoading]=\"true\"\r\n              [loadingText]=\"'Deleting items...'\"\r\n              [options]=\"splitButtonIconOptions\"\r\n              (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n            ></kc-split-button>\r\n            <kc-split-button \r\n              [text]=\"'Export to PDF'\"\r\n              [variant]=\"'gradient_1'\"\r\n              [prefixIcon]=\"'icon-chain'\"\r\n              [size]=\"'lg'\"\r\n              [isLoading]=\"true\"\r\n              [loadingText]=\"'Generating PDF...'\"\r\n              [options]=\"splitButtonIconOptions\"\r\n              (optionClick)=\"onSplitButtonOptionClick($event)\"\r\n            ></kc-split-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>Actionable Tooltip</h3>\r\n          <div class=\"tooltip-demo-container\">\r\n            <button\r\n              class=\"demo-button\"\r\n              kcTooltip\r\n              [tooltipTemplate]=\"actionableTooltipTemplate\"\r\n              [tooltipPosition]=\"'top'\"\r\n              [tooltipActionable]=\"true\"\r\n            >\r\n              Actionable Template\r\n            </button>\r\n            \r\n            <ng-template #actionableTooltipTemplate>\r\n              <div style=\"display: flex; flex-direction: column; gap: 8px; min-width: 200px;\">\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;\">Actionable Tooltip</div>\r\n                    <div style=\"font-size: 12px; opacity: 0.8;\">You can hover over this tooltip!</div>\r\n                  </div>\r\n                </div>\r\n                <div style=\"border-top: 1px solid var(--gray-25); padding-top: 8px;\">\r\n                  <div style=\"display: flex; gap: 6px;\">\r\n                    <button style=\"background: var(--kaspa-10); color: var(--vampire-black); border: none; padding: 4px 8px; border-radius: 3px; font-size: 12px; cursor: pointer;\">\r\n                      Action 1\r\n                    </button>\r\n                    <button style=\"background: var(--gray-30); color: var(--white); border: none; padding: 4px 8px; border-radius: 3px; font-size: 12px; cursor: pointer;\">\r\n                      Action 2\r\n                    </button>\r\n                  </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=\"switchNav\" #sectionSwitchNav class=\"component-section\">\r\n      <h2>Switch Navigation</h2>\r\n\r\n      <div class=\"component-examples\">\r\n        <div class=\"example-card\">\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=\"example-card\">\r\n          <h3>Switch Navigation Variants</h3>\r\n          <div style=\"display: flex; flex-direction: column; gap: 16px;\">\r\n            <div>\r\n              <p style=\"margin: 0 0 8px 0; font-size: 0.875rem; color: var(--gray-75);\">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            </div>\r\n\r\n            <div>\r\n              <p style=\"margin: 0 0 8px 0; font-size: 0.875rem; color: var(--gray-75);\">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            </div>\r\n\r\n            <div>\r\n              <p style=\"margin: 0 0 8px 0; font-size: 0.875rem; color: var(--gray-75);\">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        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Different Sizes</h3>\r\n          <div style=\"display: flex; flex-direction: column; gap: 16px;\">\r\n            <div>\r\n              <p style=\"margin: 0 0 8px 0; font-size: 0.875rem; color: var(--gray-75);\">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            </div>\r\n\r\n            <div>\r\n              <p style=\"margin: 0 0 8px 0; font-size: 0.875rem; color: var(--gray-75);\">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            </div>\r\n\r\n            <div>\r\n              <p style=\"margin: 0 0 8px 0; font-size: 0.875rem; color: var(--gray-75);\">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            </div>\r\n\r\n            <div>\r\n              <p style=\"margin: 0 0 8px 0; font-size: 0.875rem; color: var(--gray-75);\">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            </div>\r\n\r\n            <div>\r\n              <p style=\"margin: 0 0 8px 0; font-size: 0.875rem; color: var(--gray-75);\">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        </div>\r\n\r\n        <div class=\"example-card\">\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\r\n        <div class=\"example-card\">\r\n          <h3>Interactive Test</h3>\r\n          <p>Current Active: {{ switchNavCurrentActive }}</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        </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\r\nimport &#123; KcSwitchNavigationComponent &#125; from 'kaspacom-ui';\r\nimport &#123; SwitchNavigationOption &#125; from 'kaspacom-ui';\r\n\r\n// Add to your imports\r\n&#64;Component(&#123;\r\n  imports: [KcSwitchNavigationComponent]\r\n&#125;)\r\n\r\n// Define options\r\nswitchNavOptions: SwitchNavigationOption[] = [\r\n  &#123; key: 'day', title: 'Day', prefixIcon: 'icon-chain' &#125;,\r\n  &#123; key: 'week', title: 'Week', prefixIcon: 'icon-chain' &#125;,\r\n  &#123; key: 'month', title: 'Month', prefixIcon: 'icon-chain' &#125;,\r\n  &#123; key: 'year', title: 'Year', prefixIcon: 'icon-chain' &#125;\r\n];\r\n\r\ncurrentActive = 'day';\r\n\r\n// Basic usage\r\n&lt;kc-switch-navigation\r\n  [options]=\"switchNavOptions\"\r\n  [currentActive]=\"currentActive\"\r\n  variant=\"primary\"\r\n  size=\"md\"\r\n  (selectOption)=\"onOptionSelect($event)\"&gt;\r\n&lt;/kc-switch-navigation&gt;\r\n\r\n// Handle selection\r\nonOptionSelect(selectedKey: string): void &#123;\r\n  this.currentActive = selectedKey;\r\n  console.log('Selected:', selectedKey);\r\n&#125;\r\n          </pre>\r\n        </div>\r\n      </div>\r\n    </section>\r\n\r\n    <section #sectionToggle id=\"toggle\" class=\"component-section\">\r\n      <h2>Toggle</h2>\r\n\r\n      <div class=\"component-examples\">\r\n        <div class=\"example-card\">\r\n          <h3>Basic Usage</h3>\r\n          <kc-toggle\r\n            [variant]=\"'primary'\"\r\n            [size]=\"'md'\"\r\n            [label]=\"'Basic Toggle'\"\r\n            (toggleChange)=\"onToggleChange($event)\"\r\n          ></kc-toggle>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Toggle Variants</h3>\r\n          <div class=\"buttons-row\">\r\n            <kc-toggle\r\n              [variant]=\"'primary'\"\r\n              [size]=\"'md'\"\r\n              [label]=\"'Primary'\"\r\n              (toggleChange)=\"onToggleChange($event)\"\r\n            ></kc-toggle>\r\n            <kc-toggle\r\n              [variant]=\"'secondary'\"\r\n              [size]=\"'md'\"\r\n              [label]=\"'Secondary'\"\r\n              (toggleChange)=\"onToggleChange($event)\"\r\n            ></kc-toggle>\r\n            <kc-toggle\r\n              [variant]=\"'tertiary'\"\r\n              [size]=\"'md'\"\r\n              [label]=\"'Tertiary'\"\r\n              (toggleChange)=\"onToggleChange($event)\"\r\n            ></kc-toggle>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Different Sizes</h3>\r\n          <div class=\"buttons-row\">\r\n            <kc-toggle\r\n              [variant]=\"'primary'\"\r\n              [size]=\"'xs'\"\r\n              [label]=\"'XS'\"\r\n              (toggleChange)=\"onToggleChange($event)\"\r\n            ></kc-toggle>\r\n            <kc-toggle\r\n              [variant]=\"'primary'\"\r\n              [size]=\"'sm'\"\r\n              [label]=\"'SM'\"\r\n              (toggleChange)=\"onToggleChange($event)\"\r\n            ></kc-toggle>\r\n            <kc-toggle\r\n              [variant]=\"'primary'\"\r\n              [size]=\"'md'\"\r\n              [label]=\"'MD'\"\r\n              (toggleChange)=\"onToggleChange($event)\"\r\n            ></kc-toggle>\r\n            <kc-toggle\r\n              [variant]=\"'primary'\"\r\n              [size]=\"'lg'\"\r\n              [label]=\"'LG'\"\r\n              (toggleChange)=\"onToggleChange($event)\"\r\n            ></kc-toggle>\r\n            <kc-toggle\r\n              [variant]=\"'primary'\"\r\n              [size]=\"'xlg'\"\r\n              [label]=\"'XLG'\"\r\n              (toggleChange)=\"onToggleChange($event)\"\r\n            ></kc-toggle>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Toggle Without Label</h3>\r\n          <div class=\"buttons-row\">\r\n            <kc-toggle\r\n              [variant]=\"'primary'\"\r\n              [size]=\"'md'\"\r\n              (toggleChange)=\"onToggleChange($event)\"\r\n            ></kc-toggle>\r\n            <kc-toggle\r\n              [variant]=\"'secondary'\"\r\n              [size]=\"'md'\"\r\n              (toggleChange)=\"onToggleChange($event)\"\r\n            ></kc-toggle>\r\n            <kc-toggle\r\n              [variant]=\"'tertiary'\"\r\n              [size]=\"'md'\"\r\n              (toggleChange)=\"onToggleChange($event)\"\r\n            ></kc-toggle>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Disabled State</h3>\r\n          <div class=\"buttons-row\">\r\n            <kc-toggle\r\n              [variant]=\"'primary'\"\r\n              [size]=\"'md'\"\r\n              [label]=\"'Disabled (Off)'\"\r\n              [isDisabled]=\"true\"\r\n              (toggleChange)=\"onToggleChange($event)\"\r\n            ></kc-toggle>\r\n            <kc-toggle\r\n              [variant]=\"'primary'\"\r\n              [size]=\"'md'\"\r\n              [label]=\"'Disabled (On)'\"\r\n              [isDisabled]=\"true\"\r\n              [(ngModel)]=\"toggleDisabledOn\"\r\n              (toggleChange)=\"onToggleChange($event)\"\r\n            ></kc-toggle>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"example-card\">\r\n          <h3>Interactive Test</h3>\r\n          <p>Current Value: {{ toggleValue }}</p>\r\n          <kc-toggle\r\n            [variant]=\"'primary'\"\r\n            [size]=\"'md'\"\r\n            [label]=\"'Toggle me!'\"\r\n            [(ngModel)]=\"toggleValue\"\r\n            (toggleChange)=\"onToggleChange($event)\"\r\n          ></kc-toggle>\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\r\nimport &#123; KcToggleComponent &#125; from 'kaspacom-ui';\r\n\r\n// Add to your imports\r\n&#64;Component(&#123;\r\n  imports: [KcToggleComponent]\r\n&#125;)\r\n\r\n// Basic usage\r\n&lt;kc-toggle\r\n  [variant]=\"'primary'\"\r\n  [size]=\"'md'\"\r\n  [label]=\"'Enable notifications'\"\r\n  [(ngModel)]=\"isEnabled\"\r\n  (toggleChange)=\"onToggleChange($event)\"&gt;\r\n&lt;/kc-toggle&gt;\r\n\r\n// Without label\r\n&lt;kc-toggle\r\n  [variant]=\"'secondary'\"\r\n  [size]=\"'sm'\"\r\n  [(ngModel)]=\"toggleState\"&gt;\r\n&lt;/kc-toggle&gt;\r\n\r\n// In reactive forms\r\n&lt;kc-toggle\r\n  [variant]=\"'tertiary'\"\r\n  [size]=\"'lg'\"\r\n  [label]=\"'Accept terms'\"\r\n  [formControl]=\"acceptTermsControl\"&gt;\r\n&lt;/kc-toggle&gt;\r\n          </pre>\r\n        </div>\r\n      </div>\r\n    </section>\r\n\r\n    <section #sectionTable id=\"table\">\r\n      <h2>Table</h2>\r\n      <div class=\"component-examples\">\r\n        <lib-table-showcase></lib-table-showcase>\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","/*\r\n * Public API Surface of kaspacom-ui\r\n */\r\n\r\n// Modal Components\r\nexport * from './lib/modals/kc-base-modal/kc-base-modal.component';\r\n\r\n// Form Controls\r\nexport * from './lib/form-controls/components/button/button.component';\r\nexport * from './lib/form-controls/components/checkbox/checkbox.component';\r\nexport * from './lib/form-controls/components/dropdown-select/dropdown-select.component';\r\nexport * from './lib/form-controls/components/dropdown-multiselect/dropdown-multiselect.component';\r\nexport * from './lib/form-controls/components/chip/chip.component';\r\nexport * from './lib/form-controls/components/split-button/split-button.component';\r\nexport * from './lib/form-controls/components/switch-navigation/switch-navigation.component';\r\nexport * from './lib/form-controls/components/toggle/toggle.component';\r\nexport * from './lib/form-controls/kc-input/kc-input.component';\r\n\r\n// Models from components\r\nexport * from './lib/form-controls/components/dropdown-select/dropdown-select.models';\r\nexport * from './lib/form-controls/components/dropdown-multiselect/dropdown-multiselect.models';\r\nexport * from './lib/form-controls/components/split-button/split-button.models';\r\nexport * from './lib/form-controls/components/switch-navigation/switch-navigation.types';\r\n\r\n// Types\r\nexport * from './lib/form-controls/types/chip-variant.type';\r\nexport * from './lib/form-controls/types/toggle-variant.type';\r\n\r\n// Icons\r\nexport * from './lib/icons/icon/icon.component';\r\n\r\n// Card Component\r\nexport * from './lib/card';\r\n\r\n// Table Component\r\nexport * from './lib/loading/skeleton/skeleton-block.component';\r\nexport * from './lib/data/table/table.component';\r\nexport * from './lib/data/table/directive/left-sticky.directive';\r\nexport * from './lib/data/table/directive/right-sticky.directive';\r\nexport * from './lib/data/table/component/sortable.component';\r\n\r\n// Other components\r\nexport * from './lib/loading/spinner/spinner.component';\r\n\r\n// Snackbar\r\nexport * from './lib/snackbar/kc-snackbar/kc-snackbar.component';\r\nexport * from './lib/snackbar/notification.service';\r\nexport * from './lib/snackbar/snackbar.models';\r\n\r\n// Directives\r\nexport * from './lib/directives/tooltip';\r\n\r\n// Component Showcase\r\nexport * from './lib/showcase/design-system-showcase.component';\r\n\r\n// Enums\r\n// export * from './lib/form-controls/enums/sizing.enum';\r\n\r\n// Services\r\nexport * from './lib/form-controls/services/responsive.service';\r\n\r\n// Note: Styles will be included via ng-package.json assets configuration\r\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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"}