{"version":3,"file":"shaqra-dga-platformscode-angular.mjs","sources":["../../../projects/shaqra-dga-platformscode-angular/src/lib/shaqra-dga-platformscode-angular.service.ts","../../../projects/shaqra-dga-platformscode-angular/src/lib/components/text-input-component/text-input.component.ts","../../../projects/shaqra-dga-platformscode-angular/src/lib/components/text-input-component/text-input.component.html","../../../projects/shaqra-dga-platformscode-angular/src/lib/components/button-component/button.component.ts","../../../projects/shaqra-dga-platformscode-angular/src/lib/components/button-component/button.component.html","../../../projects/shaqra-dga-platformscode-angular/src/lib/shaqra-dga-platformscode-angular.component.ts","../../../projects/shaqra-dga-platformscode-angular/src/lib/components/dropdown/dropdown.component.ts","../../../projects/shaqra-dga-platformscode-angular/src/lib/components/dropdown/dropdown.component.html","../../../projects/shaqra-dga-platformscode-angular/src/lib/components/content-switcher/content-switcher.component.ts","../../../projects/shaqra-dga-platformscode-angular/src/lib/components/content-switcher/content-switcher.component.html","../../../projects/shaqra-dga-platformscode-angular/src/lib/components/single-datepicker/single-datepicker.component.ts","../../../projects/shaqra-dga-platformscode-angular/src/lib/components/single-datepicker/single-datepicker.component.html","../../../projects/shaqra-dga-platformscode-angular/src/lib/components/ranged-datepicker/ranged-datepicker.component.ts","../../../projects/shaqra-dga-platformscode-angular/src/lib/components/ranged-datepicker/ranged-datepicker.component.html","../../../projects/shaqra-dga-platformscode-angular/src/lib/components/file-uploader/file-uploader.component.ts","../../../projects/shaqra-dga-platformscode-angular/src/lib/components/file-uploader/file-uploader.component.html","../../../projects/shaqra-dga-platformscode-angular/src/lib/shaqra-dga-platformscode-angular.module.ts","../../../projects/shaqra-dga-platformscode-angular/src/shaqra-dga-platformscode-angular.ts"],"sourcesContent":["// File: src/lib/shaqra-dga-platformscode-angular.service.ts\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\nexport interface ShaqraDgaTheme {\r\n  primaryColor: string;\r\n  secondaryColor: string;\r\n  dangerColor: string;\r\n  backgroundColor: string;\r\n  textColor: string;\r\n  borderRadius: string;\r\n  fontFamily: string;\r\n}\r\n\r\nexport interface ShaqraDgaConfig {\r\n  theme: ShaqraDgaTheme;\r\n  globalDisabled: boolean;\r\n  debugMode: boolean;\r\n}\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ShaqraDgaPlatformscodeAngularService {\r\n  \r\n  // Default configuration\r\n  private defaultConfig: ShaqraDgaConfig = {\r\n    theme: {\r\n      primaryColor: '#3498db',\r\n      secondaryColor: '#ecf0f1',\r\n      dangerColor: '#e74c3c',\r\n      backgroundColor: '#ffffff',\r\n      textColor: '#2c3e50',\r\n      borderRadius: '8px',\r\n      fontFamily: \"'Segoe UI', Tahoma, Geneva, Verdana, sans-serif\"\r\n    },\r\n    globalDisabled: false,\r\n    debugMode: false\r\n  };\r\n\r\n  // Configuration state\r\n  private configSubject = new BehaviorSubject<ShaqraDgaConfig>(this.defaultConfig);\r\n  public config$ = this.configSubject.asObservable();\r\n\r\n  // Component registration tracking\r\n  private registeredComponents = new Set<string>();\r\n  private componentUsageStats = new Map<string, number>();\r\n\r\n  constructor() {\r\n    this.logDebug('ShaqraDgaPlatformscodeAngularService initialized');\r\n  }\r\n\r\n  /**\r\n   * Get current configuration\r\n   */\r\n  getConfig(): ShaqraDgaConfig {\r\n    return this.configSubject.value;\r\n  }\r\n\r\n  /**\r\n   * Update the global configuration\r\n   */\r\n  updateConfig(config: Partial<ShaqraDgaConfig>): void {\r\n    const currentConfig = this.configSubject.value;\r\n    const newConfig = {\r\n      ...currentConfig,\r\n      ...config,\r\n      theme: {\r\n        ...currentConfig.theme,\r\n        ...(config.theme || {})\r\n      }\r\n    };\r\n    \r\n    this.configSubject.next(newConfig);\r\n    this.logDebug('Configuration updated', newConfig);\r\n  }\r\n\r\n  /**\r\n   * Update only theme settings\r\n   */\r\n  updateTheme(theme: Partial<ShaqraDgaTheme>): void {\r\n    const currentConfig = this.configSubject.value;\r\n    const newTheme = {\r\n      ...currentConfig.theme,\r\n      ...theme\r\n    };\r\n    \r\n    this.updateConfig({ theme: newTheme });\r\n  }\r\n\r\n  /**\r\n   * Reset configuration to defaults\r\n   */\r\n  resetConfig(): void {\r\n    this.configSubject.next({ ...this.defaultConfig });\r\n    this.logDebug('Configuration reset to defaults');\r\n  }\r\n\r\n  /**\r\n   * Enable/disable all components globally\r\n   */\r\n  setGlobalDisabled(disabled: boolean): void {\r\n    this.updateConfig({ globalDisabled: disabled });\r\n  }\r\n\r\n  /**\r\n   * Enable/disable debug mode\r\n   */\r\n  setDebugMode(enabled: boolean): void {\r\n    this.updateConfig({ debugMode: enabled });\r\n  }\r\n\r\n  /**\r\n   * Register a component (for tracking and debugging)\r\n   */\r\n  registerComponent(componentName: string): void {\r\n    this.registeredComponents.add(componentName);\r\n    const currentUsage = this.componentUsageStats.get(componentName) || 0;\r\n    this.componentUsageStats.set(componentName, currentUsage + 1);\r\n    this.logDebug(`Component registered: ${componentName}`, {\r\n      totalRegistered: this.registeredComponents.size,\r\n      usageCount: currentUsage + 1\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Get list of registered components\r\n   */\r\n  getRegisteredComponents(): string[] {\r\n    return Array.from(this.registeredComponents);\r\n  }\r\n\r\n  /**\r\n   * Get component usage statistics\r\n   */\r\n  getComponentStats(): Map<string, number> {\r\n    return new Map(this.componentUsageStats);\r\n  }\r\n\r\n  /**\r\n   * Generate CSS custom properties from current theme\r\n   */\r\n  generateCSSVariables(): { [key: string]: string } {\r\n    const theme = this.configSubject.value.theme;\r\n    return {\r\n      '--shaqra-dga-primary-color': theme.primaryColor,\r\n      '--shaqra-dga-secondary-color': theme.secondaryColor,\r\n      '--shaqra-dga-danger-color': theme.dangerColor,\r\n      '--shaqra-dga-background-color': theme.backgroundColor,\r\n      '--shaqra-dga-text-color': theme.textColor,\r\n      '--shaqra-dga-border-radius': theme.borderRadius,\r\n      '--shaqra-dga-font-family': theme.fontFamily\r\n    };\r\n  }\r\n\r\n  /**\r\n   * Apply theme to document root\r\n   */\r\n  applyThemeToDocument(): void {\r\n    const variables = this.generateCSSVariables();\r\n    const root = document.documentElement;\r\n    \r\n    Object.entries(variables).forEach(([property, value]) => {\r\n      root.style.setProperty(property, value);\r\n    });\r\n    \r\n    this.logDebug('Theme applied to document', variables);\r\n  }\r\n\r\n  /**\r\n   * Validate component configuration\r\n   */\r\n  validateComponentConfig(componentName: string, config: any): boolean {\r\n    const isValid = config && typeof config === 'object';\r\n    this.logDebug(`Component config validation for ${componentName}:`, {\r\n      isValid,\r\n      config\r\n    });\r\n    return isValid;\r\n  }\r\n\r\n  /**\r\n   * Get library version and info\r\n   */\r\n  getLibraryInfo(): { name: string; version: string; components: string[] } {\r\n    return {\r\n      name: 'shaqra-dga-platformscode-angular',\r\n      version: '1.0.0',\r\n      components: this.getRegisteredComponents()\r\n    };\r\n  }\r\n\r\n  /**\r\n   * Debug logging utility\r\n   */\r\n  private logDebug(message: string, data?: any): void {\r\n    if (this.configSubject.value.debugMode) {\r\n      console.group(`[ShaqraDGA] ${message}`);\r\n      if (data) {\r\n        console.log(data);\r\n      }\r\n      console.groupEnd();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Observable for theme changes\r\n   */\r\n  get theme$(): Observable<ShaqraDgaTheme> {\r\n    return new Observable(observer => {\r\n      this.config$.subscribe(config => {\r\n        observer.next(config.theme);\r\n      });\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Check if components are globally disabled\r\n   */\r\n  isGloballyDisabled(): boolean {\r\n    return this.configSubject.value.globalDisabled;\r\n  }\r\n\r\n  /**\r\n   * Utility method to create component-specific configuration\r\n   */\r\n  createComponentConfig(componentName: string, baseConfig: any = {}): any {\r\n    const globalConfig = this.getConfig();\r\n    return {\r\n      ...baseConfig,\r\n      theme: globalConfig.theme,\r\n      disabled: globalConfig.globalDisabled || baseConfig.disabled || false,\r\n      debugMode: globalConfig.debugMode\r\n    };\r\n  }\r\n}","// File: src/lib/components/text-input-component/text-input.component.ts\r\nimport { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n  selector: 'shaqra-dga-text-input',\r\n  standalone: false,\r\n  templateUrl: './text-input.component.html',\r\n  styleUrls: ['./text-input.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => TextInputComponent),\r\n      multi: true\r\n    }\r\n  ]\r\n  // DO NOT include standalone: true here\r\n})\r\nexport class TextInputComponent implements ControlValueAccessor {\r\n  @Input() placeholder: string = '';\r\n  @Input() label: string = '';\r\n  @Input() disabled: boolean = false;\r\n  @Input() required: boolean = false;\r\n  @Input() type: string = 'text';\r\n  @Input() set value(val: string) {\r\n    this.writeValue(val);\r\n  }\r\n  get value(): string {\r\n    return this._value;\r\n  }\r\n  @Output() valueChange = new EventEmitter<string>();\r\n\r\n  _value: string = '';\r\n  \r\n  private onChange = (value: string) => {};\r\n  private onTouched = () => {};\r\n\r\n  writeValue(value: string): void {\r\n    this._value = value || '';\r\n  }\r\n\r\n  registerOnChange(fn: (value: string) => 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    this.disabled = isDisabled;\r\n  }\r\n\r\n  onInputChange(event: any): void {\r\n    this._value = event.target.value;\r\n    this.onChange(this._value);\r\n    this.valueChange.emit(this._value);\r\n  }\r\n\r\n  onBlur(): void {\r\n    this.onTouched();\r\n  }\r\n}","<div class=\"shaqra-dga-text-input-container\">\r\n  <label *ngIf=\"label\" class=\"shaqra-dga-label\">\r\n    {{ label }}<span *ngIf=\"required\" class=\"shaqra-dga-required\">*</span>\r\n  </label>\r\n  <input\r\n    class=\"input input--lg\"\r\n    [type]=\"type\"\r\n    [placeholder]=\"placeholder\"\r\n    [disabled]=\"disabled\"\r\n    [value]=\"_value\"\r\n    (input)=\"onInputChange($event)\"\r\n    (blur)=\"onBlur()\"\r\n  />\r\n</div>\r\n","// File: src/lib/components/button-component/button.component.ts\r\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'shaqra-dga-button',\r\n  standalone: false,\r\n  templateUrl: './button.component.html',\r\n  styleUrls: ['./button.component.scss']\r\n})\r\nexport class ButtonComponent {\r\n  @Input() variant: 'primary' | 'neutral' | 'danger' = 'primary';\r\n  @Input() size: 'small' | 'medium' | 'large' = 'large';\r\n  @Input() disabled: boolean = false;\r\n  @Input() loading: boolean = false;\r\n  @Input() selected: boolean = false;\r\n  @Input() showIcon: boolean = true;\r\n  @Input() type: 'button' | 'submit' | 'reset' = 'button';\r\n  @Output() clicked = new EventEmitter<void>();\r\n\r\n  onClick(): void {\r\n    if (!this.disabled && !this.loading) {\r\n      this.clicked.emit();\r\n    }\r\n  }\r\n\r\n  get buttonClasses(): string {\r\n    return [\r\n      'shaqra-dga-button',\r\n      `shaqra-dga-button--${this.variant}`,\r\n      `shaqra-dga-button--${this.size}`,\r\n      this.disabled ? 'shaqra-dga-button--disabled' : '',\r\n      this.loading ? 'shaqra-dga-button--loading' : '',\r\n      this.selected ? 'shaqra-dga-button--selected' : ''\r\n    ].filter(Boolean).join(' ');\r\n  }\r\n}","<!-- File: src/lib/components/button-component/button.component.html -->\r\n<button\r\n  [type]=\"type\"\r\n  [disabled]=\"disabled || loading\"\r\n  [class]=\"buttonClasses\"\r\n  (click)=\"onClick()\"\r\n>\r\n  <div class=\"shaqra-dga-button__focus-ring\"></div>\r\n  <div class=\"shaqra-dga-button__content\">\r\n    <span *ngIf=\"loading\" class=\"shaqra-dga-spinner\"></span>\r\n    <span class=\"shaqra-dga-button__text\" [class.shaqra-dga-button-content-hidden]=\"loading\">\r\n      <ng-content></ng-content>\r\n    </span>\r\n    <svg *ngIf=\"showIcon && !loading\" class=\"shaqra-dga-button__icon\" viewBox=\"0 0 18 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n      <path d=\"M11.5 1L16.5 6L11.5 11\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n      <path d=\"M1.5 6H16.5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n    </svg>\r\n  </div>\r\n</button>","// File: src/lib/shaqra-dga-platformscode-angular.component.ts\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'lib-shaqra-dga-platformscode-angular',\r\n  standalone: false,\r\n  template: `\r\n    <div class=\"shaqra-dga-library-container\">\r\n      <h2 class=\"shaqra-dga-library-title\">{{title}}</h2>\r\n      <p class=\"shaqra-dga-library-description\">\r\n        Welcome to Shaqra DGA Platformscode Angular Component Library\r\n      </p>\r\n      <div class=\"shaqra-dga-library-info\">\r\n        <p>This library includes:</p>\r\n        <ul class=\"shaqra-dga-component-list\">\r\n          <li>shaqra-dga-text-input - Custom text input component</li>\r\n          <li>shaqra-dga-button - Custom button component</li>\r\n          <li>More components coming soon...</li>\r\n        </ul>\r\n      </div>\r\n      <div class=\"shaqra-dga-library-demo\" *ngIf=\"showDemo\">\r\n        <h3>Demo:</h3>\r\n        <shaqra-dga-text-input \r\n          label=\"Sample Input\" \r\n          placeholder=\"Try typing here...\">\r\n        </shaqra-dga-text-input>\r\n        <shaqra-dga-button \r\n          variant=\"primary\" \r\n          (clicked)=\"onDemoButtonClick()\">\r\n          Demo Button\r\n        </shaqra-dga-button>\r\n      </div>\r\n    </div>\r\n  `,\r\n  styles: [`\r\n    .shaqra-dga-library-container {\r\n      padding: 24px;\r\n      border: 2px solid #3498db;\r\n      border-radius: 12px;\r\n      background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);\r\n      font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\r\n      max-width: 600px;\r\n      margin: 20px auto;\r\n      box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\r\n    }\r\n\r\n    .shaqra-dga-library-title {\r\n      color: #2c3e50;\r\n      font-size: 24px;\r\n      font-weight: 700;\r\n      margin: 0 0 16px 0;\r\n      text-align: center;\r\n      border-bottom: 3px solid #3498db;\r\n      padding-bottom: 12px;\r\n    }\r\n\r\n    .shaqra-dga-library-description {\r\n      color: #34495e;\r\n      font-size: 16px;\r\n      text-align: center;\r\n      margin-bottom: 24px;\r\n      font-weight: 500;\r\n    }\r\n\r\n    .shaqra-dga-library-info {\r\n      background-color: #ffffff;\r\n      padding: 20px;\r\n      border-radius: 8px;\r\n      border-left: 4px solid #3498db;\r\n      margin-bottom: 20px;\r\n    }\r\n\r\n    .shaqra-dga-library-info p {\r\n      margin: 0 0 12px 0;\r\n      font-weight: 600;\r\n      color: #2c3e50;\r\n    }\r\n\r\n    .shaqra-dga-component-list {\r\n      margin: 0;\r\n      padding-left: 20px;\r\n      color: #34495e;\r\n    }\r\n\r\n    .shaqra-dga-component-list li {\r\n      margin-bottom: 8px;\r\n      font-family: 'Courier New', monospace;\r\n      font-size: 14px;\r\n      background-color: #ecf0f1;\r\n      padding: 4px 8px;\r\n      border-radius: 4px;\r\n      list-style-type: none;\r\n      position: relative;\r\n    }\r\n\r\n    .shaqra-dga-component-list li::before {\r\n      content: \"📦\";\r\n      margin-right: 8px;\r\n    }\r\n\r\n    .shaqra-dga-library-demo {\r\n      background-color: #ffffff;\r\n      padding: 20px;\r\n      border-radius: 8px;\r\n      border: 1px solid #bdc3c7;\r\n    }\r\n\r\n    .shaqra-dga-library-demo h3 {\r\n      margin: 0 0 16px 0;\r\n      color: #2c3e50;\r\n      font-size: 18px;\r\n    }\r\n\r\n    .shaqra-dga-library-demo shaqra-dga-button {\r\n      margin-top: 12px;\r\n    }\r\n  `]\r\n  // DO NOT include standalone: true here\r\n})\r\nexport class ShaqraDgaPlatformscodeAngularComponent {\r\n  @Input() title: string = 'Shaqra DGA Component Library';\r\n  @Input() showDemo: boolean = true;\r\n\r\n  onDemoButtonClick(): void {\r\n    alert('Demo button clicked! The library is working correctly.');\r\n    console.log('Shaqra DGA Platform Code Angular - Demo button clicked');\r\n  }\r\n}","// File: src/lib/components/dropdown/dropdown.component.ts\r\nimport { Component, Input, Output, EventEmitter, forwardRef, HostListener, ElementRef, AfterViewInit } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nexport interface DropdownOption {\r\n  value: any;\r\n  label: string;\r\n  disabled?: boolean;\r\n}\r\n\r\n@Component({\r\n  selector: 'shaqra-dga-dropdown',\r\n  standalone: false,\r\n  templateUrl: './dropdown.component.html',\r\n  styleUrls: ['./dropdown.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => DropdownComponent),\r\n      multi: true\r\n    }\r\n  ]\r\n})\r\nexport class DropdownComponent implements ControlValueAccessor, AfterViewInit {\r\n  @Input() placeholder: string = 'إختيار';\r\n  @Input() label: string = '';\r\n  @Input() disabled: boolean = false;\r\n  @Input() required: boolean = false;\r\n  @Input() options: DropdownOption[] = [];\r\n  @Input() set value(val: any) {\r\n    this.writeValue(val);\r\n  }\r\n  get value(): any {\r\n    return this._value;\r\n  }\r\n  @Output() valueChange = new EventEmitter<any>();\r\n  @Output() selectionChange = new EventEmitter<DropdownOption | null>();\r\n\r\n  _value: any = null;\r\n  isOpen: boolean = false;\r\n  focusedOptionIndex: number = -1;\r\n  \r\n  private onChange = (value: any) => {};\r\n  private onTouched = () => {};\r\n\r\n  constructor(private elementRef: ElementRef) {}\r\n\r\n  ngAfterViewInit() {\r\n  }\r\n\r\n  writeValue(value: any): void {\r\n    this._value = value;\r\n  }\r\n\r\n  registerOnChange(fn: (value: any) => 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    this.disabled = isDisabled;\r\n  }\r\n\r\n  get selectedOption(): DropdownOption | null {\r\n    return this.options.find(option => option.value === this._value) || null;\r\n  }\r\n\r\n  get displayText(): string {\r\n    return this.selectedOption ? this.selectedOption.label : this.placeholder;\r\n  }\r\n\r\n  toggleDropdown(): void {\r\n    if (this.disabled) return;\r\n    \r\n    \r\n    this.isOpen = !this.isOpen;\r\n    \r\n    if (this.isOpen) {\r\n      // ✅ Properly initialize focus index\r\n      if (this.selectedOption) {\r\n        this.focusedOptionIndex = this.options.findIndex(option => option.value === this._value);\r\n      } else {\r\n        this.focusedOptionIndex = -1; // ✅ Start with no focus, first arrow will focus index 0\r\n      }\r\n      \r\n      // Debug: Check if dropdown list element exists\r\n      setTimeout(() => {\r\n        const dropdownList = this.elementRef.nativeElement.querySelector('.dropdown-list');\r\n        const dropdownOptions = this.elementRef.nativeElement.querySelectorAll('.dropdown-option');\r\n      }, 10);\r\n    } else {\r\n      this.focusedOptionIndex = -1; // ✅ Reset when closing\r\n    }\r\n    \r\n  }\r\n\r\n  selectOption(option: DropdownOption): void {\r\n    if (option.disabled) return;\r\n    \r\n    this._value = option.value;\r\n    this.onChange(this._value);\r\n    this.valueChange.emit(this._value);\r\n    this.selectionChange.emit(option);\r\n    this.isOpen = false;\r\n    this.onTouched();\r\n  }\r\n\r\n  onBlur(): void {\r\n    // Delay to allow for option selection\r\n    setTimeout(() => {\r\n      if (!this.isOpen) return; // Don't close if already closed\r\n      this.isOpen = false;\r\n      this.onTouched();\r\n    }, 150);\r\n  }\r\n\r\n  // ✅ Helper method to find next non-disabled option\r\n  private findNextEnabledOption(startIndex: number, direction: 'next' | 'prev'): number {\r\n    const increment = direction === 'next' ? 1 : -1;\r\n    let index = startIndex;\r\n    \r\n    for (let i = 0; i < this.options.length; i++) {\r\n      if (index >= 0 && index < this.options.length && !this.options[index].disabled) {\r\n        return index;\r\n      }\r\n      index += increment;\r\n      \r\n      // Wrap around\r\n      if (index >= this.options.length) index = 0;\r\n      if (index < 0) index = this.options.length - 1;\r\n    }\r\n    \r\n    return startIndex; // Fallback to original if all disabled\r\n  }\r\n\r\n  @HostListener('keydown', ['$event'])\r\n  onKeyDown(event: KeyboardEvent): void {\r\n    if (this.disabled) return;\r\n\r\n\r\n    switch (event.key) {\r\n      case 'ArrowDown':\r\n        event.preventDefault();\r\n        event.stopPropagation(); // ✅ Prevent event bubbling\r\n        \r\n        if (!this.isOpen) {\r\n          this.isOpen = true;\r\n          this.focusedOptionIndex = this.findNextEnabledOption(0, 'next');\r\n        } else {\r\n          // ✅ Handle initial state (-1) and normal navigation\r\n          if (this.focusedOptionIndex === -1) {\r\n            this.focusedOptionIndex = this.findNextEnabledOption(0, 'next');\r\n          } else {\r\n            const nextIndex = this.focusedOptionIndex + 1;\r\n            this.focusedOptionIndex = this.findNextEnabledOption(\r\n              Math.min(nextIndex, this.options.length - 1), \r\n              'next'\r\n            );\r\n          }\r\n        }\r\n        break;\r\n\r\n      case 'ArrowUp':\r\n        event.preventDefault();\r\n        event.stopPropagation(); // ✅ Prevent event bubbling\r\n        \r\n        if (this.isOpen) {\r\n          // ✅ Handle initial state (-1) and normal navigation\r\n          if (this.focusedOptionIndex === -1) {\r\n            this.focusedOptionIndex = this.findNextEnabledOption(this.options.length - 1, 'prev');\r\n          } else {\r\n            const prevIndex = this.focusedOptionIndex - 1;\r\n            this.focusedOptionIndex = this.findNextEnabledOption(\r\n              Math.max(prevIndex, 0), \r\n              'prev'\r\n            );\r\n          }\r\n        }\r\n        break;\r\n\r\n      case 'Enter':\r\n      case ' ':\r\n        event.preventDefault();\r\n        event.stopPropagation(); // ✅ Prevent event bubbling\r\n        \r\n        if (!this.isOpen) {\r\n          this.isOpen = true;\r\n          if (this.selectedOption) {\r\n            this.focusedOptionIndex = this.options.findIndex(option => option.value === this._value);\r\n          } else {\r\n            this.focusedOptionIndex = this.findNextEnabledOption(0, 'next');\r\n          }\r\n        } else if (this.focusedOptionIndex >= 0 && this.focusedOptionIndex < this.options.length) {\r\n          const option = this.options[this.focusedOptionIndex];\r\n          if (!option.disabled) {\r\n            this.selectOption(option);\r\n          }\r\n        }\r\n        break;\r\n\r\n      case 'Escape':\r\n        event.preventDefault();\r\n        event.stopPropagation(); // ✅ Prevent event bubbling\r\n        this.isOpen = false;\r\n        this.focusedOptionIndex = -1; // ✅ Reset focus index\r\n        break;\r\n    }\r\n  }\r\n\r\n  @HostListener('document:click', ['$event'])\r\n  onDocumentClick(event: Event): void {\r\n    // Check if the click is outside the dropdown\r\n    if (!this.elementRef.nativeElement.contains(event.target as Node)) {\r\n      this.isOpen = false;\r\n    }\r\n  }\r\n}","<!-- File: src/lib/components/dropdown/dropdown.component.html -->\r\n<div class=\"shaqra-dga-dropdown-container\">\r\n  <div class=\"dropdown-label-container\" *ngIf=\"label\">\r\n    <span class=\"shaqra-dga-label\">\r\n      {{ label }}<span *ngIf=\"required\" class=\"shaqra-dga-required\">*</span>\r\n    </span>\r\n  </div>\r\n  \r\n  <div class=\"dropdown-wrapper\" [class.is-open]=\"isOpen\">\r\n    <!-- Dropdown Trigger -->\r\n    <div \r\n      class=\"dropdown-trigger\"\r\n      [class.is-disabled]=\"disabled\"\r\n      [class.is-open]=\"isOpen\"\r\n      [class.has-value]=\"selectedOption\"\r\n      (click)=\"toggleDropdown()\"\r\n      (blur)=\"onBlur()\"\r\n      (keydown)=\"onKeyDown($event)\"\r\n      [attr.tabindex]=\"disabled ? -1 : 0\"\r\n      [attr.aria-haspopup]=\"true\"\r\n      [attr.aria-expanded]=\"isOpen\"\r\n      role=\"combobox\"\r\n    >\r\n      <div class=\"dropdown-content\">\r\n        <div class=\"dropdown-icon\">\r\n          <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n            <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n          </svg>\r\n        </div>\r\n        <div class=\"dropdown-text-container\">\r\n          <span class=\"dropdown-text\" [class.placeholder]=\"!selectedOption\">\r\n            {{ displayText }}\r\n          </span>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <!-- Bottom border indicator -->\r\n    <div class=\"dropdown-border-indicator\" [class.is-open]=\"isOpen\"></div>\r\n\r\n    <!-- Dropdown List -->\r\n    <div \r\n      class=\"dropdown-list\" \r\n      [class.is-open]=\"isOpen\"\r\n      role=\"listbox\"\r\n      [attr.aria-hidden]=\"!isOpen\"\r\n    >\r\n      <div class=\"dropdown-options\">\r\n        <div \r\n          *ngFor=\"let option of options; let i = index\"\r\n          class=\"dropdown-option\"\r\n          [class.is-selected]=\"option.value === _value\"\r\n          [class.is-focused]=\"i === focusedOptionIndex\"\r\n          [class.is-disabled]=\"option.disabled\"\r\n          (click)=\"selectOption(option)\"\r\n          [attr.role]=\"'option'\"\r\n          [attr.aria-selected]=\"option.value === _value\"\r\n        >\r\n          <div class=\"option-content\">\r\n            <div class=\"option-check\" *ngIf=\"option.value === _value\">\r\n              <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                <path d=\"M13.5 4.5L6 12L2.5 8.5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n              </svg>\r\n            </div>\r\n            <div class=\"option-text-container\">\r\n              <span class=\"option-text\">{{ option.label }}</span>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>","// File: src/lib/components/content-switcher/content-switcher.component.ts\r\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\nexport interface ContentSwitcherItem {\r\n  id: string | number;\r\n  label: string;\r\n  disabled?: boolean;\r\n}\r\n\r\n@Component({\r\n  selector: 'shaqra-dga-content-switcher',\r\n  standalone: false,\r\n  templateUrl: './content-switcher.component.html',\r\n  styleUrls: ['./content-switcher.component.scss']\r\n})\r\nexport class ContentSwitcherComponent {\r\n  @Input() items: ContentSwitcherItem[] = [];\r\n  @Input() variant: 'primary' | 'secondary' = 'secondary';\r\n  @Input() selectedId: string | number | null = null;\r\n  @Input() disabled: boolean = false;\r\n  @Output() selectionChange = new EventEmitter<ContentSwitcherItem>();\r\n\r\n  ngOnInit() {\r\n    // Auto-select first item if no selection\r\n    if (this.selectedId === null && this.items.length > 0) {\r\n      this.selectedId = this.items[0].id;\r\n    }\r\n  }\r\n\r\n  selectItem(item: ContentSwitcherItem, index: number): void {\r\n    if (this.disabled || item.disabled) {\r\n      return;\r\n    }\r\n\r\n    this.selectedId = item.id;\r\n    this.selectionChange.emit(item);\r\n  }\r\n\r\n  isSelected(item: ContentSwitcherItem): boolean {\r\n    return this.selectedId === item.id;\r\n  }\r\n\r\n  isFirst(index: number): boolean {\r\n    return index === 0;\r\n  }\r\n\r\n  isLast(index: number): boolean {\r\n    return index === this.items.length - 1;\r\n  }\r\n\r\n  getItemClasses(item: ContentSwitcherItem, index: number): string {\r\n    return [\r\n      'content-switcher__item',\r\n      `content-switcher__item--${this.variant}`,\r\n      this.isSelected(item) ? 'content-switcher__item--selected' : '',\r\n      this.isFirst(index) ? 'content-switcher__item--first' : '',\r\n      this.isLast(index) ? 'content-switcher__item--last' : '',\r\n      item.disabled || this.disabled ? 'content-switcher__item--disabled' : ''\r\n    ].filter(Boolean).join(' ');\r\n  }\r\n}\r\n\r\n","<!-- File: src/lib/components/content-switcher/content-switcher.component.html -->\r\n<div class=\"content-switcher\" [class.content-switcher--disabled]=\"disabled\">\r\n  <button\r\n    *ngFor=\"let item of items; let i = index\"\r\n    type=\"button\"\r\n    [class]=\"getItemClasses(item, i)\"\r\n    [disabled]=\"disabled || item.disabled\"\r\n    (click)=\"selectItem(item, i)\"\r\n    [attr.aria-selected]=\"isSelected(item)\"\r\n    role=\"tab\"\r\n  >\r\n    <span class=\"content-switcher__label\">{{ item.label }}</span>\r\n  </button>\r\n</div>\r\n\r\n","import { Component, Input, Output, EventEmitter, forwardRef, HostListener, ElementRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\ninterface CalendarDay {\r\n  date: Date;\r\n  day: number;\r\n  isCurrentMonth: boolean;\r\n  isToday: boolean;\r\n  isSelected: boolean;\r\n  isDisabled: boolean;\r\n}\r\n\r\n@Component({\r\n  selector: 'shaqra-dga-single-datepicker',\r\n  standalone: false,\r\n  templateUrl: './single-datepicker.component.html',\r\n  styleUrls: ['./single-datepicker.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => SingleDatepickerComponent),\r\n      multi: true\r\n    }\r\n  ]\r\n})\r\nexport class SingleDatepickerComponent implements ControlValueAccessor {\r\n  @Input() placeholder: string = 'DD/MM/YY';\r\n  @Input() label: string = '';\r\n  @Input() disabled: boolean = false;\r\n  @Input() readonly: boolean = false;\r\n  @Input() required: boolean = false;\r\n  @Input() minDate: Date | null = null;\r\n  @Input() maxDate: Date | null = null;\r\n  @Output() dateChange = new EventEmitter<Date | null>();\r\n\r\n  _selectedDate: Date | null = null;\r\n  isOpen: boolean = false;\r\n  isYearDropdownOpen: boolean = false;\r\n  currentMonth: Date = new Date();\r\n  calendarDays: CalendarDay[] = [];\r\n  focusedDayIndex: number = -1;\r\n  availableYears: number[] = [];\r\n\r\n  weekDays: string[] = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\r\n  monthNames: string[] = [\r\n    'January', 'February', 'March', 'April', 'May', 'June',\r\n    'July', 'August', 'September', 'October', 'November', 'December'\r\n  ];\r\n\r\n  private onChange = (value: Date | null) => {};\r\n  private onTouched = () => {};\r\n\r\n  constructor(private elementRef: ElementRef) {}\r\n\r\n  ngOnInit(): void {\r\n    this.generateYearList();\r\n    this.generateCalendar();\r\n  }\r\n\r\n  generateYearList(): void {\r\n    const currentYear = new Date().getFullYear();\r\n    const startYear = currentYear - 5;\r\n    const endYear = currentYear + 5;\r\n    \r\n    this.availableYears = [];\r\n    for (let year = startYear; year <= endYear; year++) {\r\n      this.availableYears.push(year);\r\n    }\r\n  }\r\n\r\n  toggleYearDropdown(event: Event): void {\r\n    event.stopPropagation();\r\n    this.isYearDropdownOpen = !this.isYearDropdownOpen;\r\n  }\r\n\r\n  selectYear(year: number, event: Event): void {\r\n    event.stopPropagation();\r\n    this.currentMonth = new Date(year, this.currentMonth.getMonth(), 1);\r\n    this.isYearDropdownOpen = false;\r\n    this.generateCalendar();\r\n  }\r\n\r\n  writeValue(value: Date | null): void {\r\n    this._selectedDate = value ? new Date(value) : null;\r\n    if (this._selectedDate) {\r\n      this.currentMonth = new Date(this._selectedDate.getFullYear(), this._selectedDate.getMonth(), 1);\r\n    }\r\n    this.generateCalendar();\r\n  }\r\n\r\n  registerOnChange(fn: (value: Date | null) => 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    this.disabled = isDisabled;\r\n  }\r\n\r\n  get formattedDate(): string {\r\n    if (!this._selectedDate) {\r\n      return this.placeholder;\r\n    }\r\n    const day = this._selectedDate.getDate().toString().padStart(2, '0');\r\n    const month = (this._selectedDate.getMonth() + 1).toString().padStart(2, '0');\r\n    const year = this._selectedDate.getFullYear().toString().slice(-2);\r\n    return `${day}/${month}/${year}`;\r\n  }\r\n\r\n  get displayPlaceholder(): boolean {\r\n    return !this._selectedDate;\r\n  }\r\n\r\n  get currentMonthName(): string {\r\n    return this.monthNames[this.currentMonth.getMonth()];\r\n  }\r\n\r\n  get currentYear(): number {\r\n    return this.currentMonth.getFullYear();\r\n  }\r\n\r\n  toggleCalendar(): void {\r\n    if (this.disabled || this.readonly) return;\r\n    this.isOpen = !this.isOpen;\r\n    if (this.isOpen) {\r\n      this.generateCalendar();\r\n      this.focusedDayIndex = -1;\r\n    } else {\r\n      this.isYearDropdownOpen = false;\r\n    }\r\n  }\r\n\r\n  closeCalendar(): void {\r\n    this.isOpen = false;\r\n    this.isYearDropdownOpen = false;\r\n    this.onTouched();\r\n  }\r\n\r\n  previousMonth(): void {\r\n    this.currentMonth = new Date(this.currentMonth.getFullYear(), this.currentMonth.getMonth() - 1, 1);\r\n    this.generateCalendar();\r\n  }\r\n\r\n  nextMonth(): void {\r\n    this.currentMonth = new Date(this.currentMonth.getFullYear(), this.currentMonth.getMonth() + 1, 1);\r\n    this.generateCalendar();\r\n  }\r\n\r\n  selectDate(day: CalendarDay): void {\r\n    if (day.isDisabled || this.disabled) return;\r\n\r\n    this._selectedDate = new Date(day.date);\r\n    this.onChange(this._selectedDate);\r\n    this.dateChange.emit(this._selectedDate);\r\n    this.closeCalendar();\r\n    this.generateCalendar();\r\n  }\r\n\r\n  isDateDisabled(date: Date): boolean {\r\n    if (this.minDate && date < this.minDate) return true;\r\n    if (this.maxDate && date > this.maxDate) return true;\r\n    return false;\r\n  }\r\n\r\n  generateCalendar(): void {\r\n    const year = this.currentMonth.getFullYear();\r\n    const month = this.currentMonth.getMonth();\r\n    \r\n    const firstDay = new Date(year, month, 1);\r\n    const lastDay = new Date(year, month + 1, 0);\r\n    const prevMonthLastDay = new Date(year, month, 0);\r\n    \r\n    const startDayOfWeek = firstDay.getDay();\r\n    const daysInMonth = lastDay.getDate();\r\n    const daysInPrevMonth = prevMonthLastDay.getDate();\r\n    \r\n    this.calendarDays = [];\r\n    \r\n    // Previous month days\r\n    for (let i = startDayOfWeek - 1; i >= 0; i--) {\r\n      const day = daysInPrevMonth - i;\r\n      const date = new Date(year, month - 1, day);\r\n      this.calendarDays.push({\r\n        date,\r\n        day,\r\n        isCurrentMonth: false,\r\n        isToday: this.isToday(date),\r\n        isSelected: this.isSameDate(date, this._selectedDate),\r\n        isDisabled: this.isDateDisabled(date)\r\n      });\r\n    }\r\n    \r\n    // Current month days\r\n    for (let day = 1; day <= daysInMonth; day++) {\r\n      const date = new Date(year, month, day);\r\n      this.calendarDays.push({\r\n        date,\r\n        day,\r\n        isCurrentMonth: true,\r\n        isToday: this.isToday(date),\r\n        isSelected: this.isSameDate(date, this._selectedDate),\r\n        isDisabled: this.isDateDisabled(date)\r\n      });\r\n    }\r\n    \r\n    // Next month days\r\n    const remainingDays = 42 - this.calendarDays.length; // 6 rows * 7 days\r\n    for (let day = 1; day <= remainingDays; day++) {\r\n      const date = new Date(year, month + 1, day);\r\n      this.calendarDays.push({\r\n        date,\r\n        day,\r\n        isCurrentMonth: false,\r\n        isToday: this.isToday(date),\r\n        isSelected: this.isSameDate(date, this._selectedDate),\r\n        isDisabled: this.isDateDisabled(date)\r\n      });\r\n    }\r\n  }\r\n\r\n  isToday(date: Date): boolean {\r\n    const today = new Date();\r\n    return this.isSameDate(date, today);\r\n  }\r\n\r\n  isSameDate(date1: Date | null, date2: Date | null): boolean {\r\n    if (!date1 || !date2) return false;\r\n    return date1.getDate() === date2.getDate() &&\r\n           date1.getMonth() === date2.getMonth() &&\r\n           date1.getFullYear() === date2.getFullYear();\r\n  }\r\n\r\n  getDayClasses(day: CalendarDay): string {\r\n    const classes = ['calendar-day'];\r\n    if (!day.isCurrentMonth) classes.push('calendar-day--other-month');\r\n    if (day.isToday) classes.push('calendar-day--today');\r\n    if (day.isSelected) classes.push('calendar-day--selected');\r\n    if (day.isDisabled) classes.push('calendar-day--disabled');\r\n    return classes.join(' ');\r\n  }\r\n\r\n  @HostListener('document:click', ['$event'])\r\n  onDocumentClick(event: Event): void {\r\n    if (!this.elementRef.nativeElement.contains(event.target as Node)) {\r\n      if (this.isOpen) {\r\n        this.closeCalendar();\r\n      }\r\n    }\r\n  }\r\n\r\n  @HostListener('keydown', ['$event'])\r\n  onKeyDown(event: KeyboardEvent): void {\r\n    if (!this.isOpen) {\r\n      if (event.key === 'Enter' || event.key === ' ') {\r\n        event.preventDefault();\r\n        this.toggleCalendar();\r\n      }\r\n      return;\r\n    }\r\n\r\n    switch (event.key) {\r\n      case 'Escape':\r\n        event.preventDefault();\r\n        this.closeCalendar();\r\n        break;\r\n      case 'Enter':\r\n        event.preventDefault();\r\n        if (this.focusedDayIndex >= 0 && this.focusedDayIndex < this.calendarDays.length) {\r\n          this.selectDate(this.calendarDays[this.focusedDayIndex]);\r\n        }\r\n        break;\r\n    }\r\n  }\r\n}\r\n\r\n","<div class=\"shaqra-dga-single-datepicker\">\r\n  <!-- Label -->\r\n  <label *ngIf=\"label\" class=\"datepicker-label\">\r\n    {{ label }}<span *ngIf=\"required\" class=\"datepicker-required\">*</span>\r\n  </label>\r\n\r\n  <!-- Input Field -->\r\n  <div class=\"datepicker-input-wrapper\" [class.is-open]=\"isOpen\">\r\n    <div\r\n      class=\"datepicker-input\"\r\n      [class.datepicker-input--disabled]=\"disabled\"\r\n      [class.datepicker-input--readonly]=\"readonly\"\r\n      [class.datepicker-input--focused]=\"isOpen\"\r\n      [class.datepicker-input--placeholder]=\"displayPlaceholder\"\r\n      (click)=\"toggleCalendar()\"\r\n      [attr.tabindex]=\"disabled || readonly ? -1 : 0\"\r\n      [attr.aria-label]=\"label || 'Select date'\"\r\n      [attr.aria-expanded]=\"isOpen\"\r\n      role=\"button\"\r\n    >\r\n      <span class=\"datepicker-input__text\">{{ formattedDate }}</span>\r\n      <div *ngIf=\"isOpen && !readonly\" class=\"datepicker-input__cursor\"></div>\r\n    </div>\r\n    <div *ngIf=\"isOpen\" class=\"datepicker-input__indicator\"></div>\r\n  </div>\r\n\r\n  <!-- Calendar Popup -->\r\n  <div *ngIf=\"isOpen\" class=\"datepicker-calendar\">\r\n    <!-- Calendar Header -->\r\n    <div class=\"calendar-header\">\r\n      <div class=\"calendar-header__title\">\r\n        <span class=\"calendar-header__month\">{{ currentMonthName }}</span>\r\n        <div class=\"calendar-header__year\" (click)=\"toggleYearDropdown($event)\">\r\n          <span>{{ currentYear }}</span>\r\n          <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n            <path d=\"M3.5 6L8 10.5L12.5 6\" stroke=\"#161616\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n          </svg>\r\n        </div>\r\n        \r\n        <!-- Year Dropdown -->\r\n        <div *ngIf=\"isYearDropdownOpen\" class=\"year-dropdown\" (click)=\"$event.stopPropagation()\">\r\n          <div class=\"year-dropdown__list\">\r\n            <div\r\n              *ngFor=\"let year of availableYears\"\r\n              class=\"year-dropdown__item\"\r\n              [class.year-dropdown__item--selected]=\"year === currentYear\"\r\n              (click)=\"selectYear(year, $event)\"\r\n            >\r\n              <span>{{ year }}</span>\r\n              <svg *ngIf=\"year === currentYear\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                <path d=\"M16.25 5.625L7.5 14.375L3.75 10.625\" stroke=\"#1b8354\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n              </svg>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"calendar-header__nav\">\r\n        <button\r\n          class=\"calendar-nav-button\"\r\n          (click)=\"previousMonth()\"\r\n          [attr.aria-label]=\"'Previous month'\"\r\n          type=\"button\"\r\n        >\r\n          <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n            <path d=\"M15 18L9 12L15 6\" stroke=\"#161616\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n          </svg>\r\n        </button>\r\n        <button\r\n          class=\"calendar-nav-button\"\r\n          (click)=\"nextMonth()\"\r\n          [attr.aria-label]=\"'Next month'\"\r\n          type=\"button\"\r\n        >\r\n          <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n            <path d=\"M9 18L15 12L9 6\" stroke=\"#161616\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n          </svg>\r\n        </button>\r\n      </div>\r\n    </div>\r\n\r\n    <!-- Week Days -->\r\n    <div class=\"calendar-weekdays\">\r\n      <div *ngFor=\"let day of weekDays\" class=\"calendar-weekday\">\r\n        {{ day }}\r\n      </div>\r\n    </div>\r\n\r\n    <!-- Calendar Days Grid -->\r\n    <div class=\"calendar-days\">\r\n      <div\r\n        *ngFor=\"let day of calendarDays; let i = index\"\r\n        [class]=\"getDayClasses(day)\"\r\n        (click)=\"selectDate(day)\"\r\n        [attr.tabindex]=\"day.isDisabled ? -1 : 0\"\r\n        [attr.aria-label]=\"day.date.toDateString()\"\r\n        [attr.aria-selected]=\"day.isSelected\"\r\n        role=\"button\"\r\n      >\r\n        <span class=\"calendar-day__number\">{{ day.day }}</span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>\r\n\r\n","import { Component, Input, Output, EventEmitter, forwardRef, HostListener, ElementRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nexport interface DateRange {\r\n  startDate: Date | null;\r\n  endDate: Date | null;\r\n}\r\n\r\ninterface CalendarDay {\r\n  date: Date;\r\n  day: number;\r\n  isCurrentMonth: boolean;\r\n  isToday: boolean;\r\n  isStartDate: boolean;\r\n  isEndDate: boolean;\r\n  isInRange: boolean;\r\n  isDisabled: boolean;\r\n}\r\n\r\n@Component({\r\n  selector: 'shaqra-dga-ranged-datepicker',\r\n  standalone: false,\r\n  templateUrl: './ranged-datepicker.component.html',\r\n  styleUrls: ['./ranged-datepicker.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => RangedDatepickerComponent),\r\n      multi: true\r\n    }\r\n  ]\r\n})\r\nexport class RangedDatepickerComponent implements ControlValueAccessor {\r\n  @Input() placeholder: string = 'DD/MM/YY - DD/MM/YY';\r\n  @Input() label: string = '';\r\n  @Input() disabled: boolean = false;\r\n  @Input() readonly: boolean = false;\r\n  @Input() required: boolean = false;\r\n  @Input() minDate: Date | null = null;\r\n  @Input() maxDate: Date | null = null;\r\n  @Output() rangeChange = new EventEmitter<DateRange>();\r\n\r\n  _dateRange: DateRange = { startDate: null, endDate: null };\r\n  isOpen: boolean = false;\r\n  isYearDropdownOpen: boolean = false;\r\n  currentMonth: Date = new Date();\r\n  calendarDays: CalendarDay[] = [];\r\n  isSelectingEndDate: boolean = false;\r\n  availableYears: number[] = [];\r\n\r\n  weekDays: string[] = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\r\n  monthNames: string[] = [\r\n    'January', 'February', 'March', 'April', 'May', 'June',\r\n    'July', 'August', 'September', 'October', 'November', 'December'\r\n  ];\r\n\r\n  private onChange = (value: DateRange) => {};\r\n  private onTouched = () => {};\r\n\r\n  constructor(private elementRef: ElementRef) {}\r\n\r\n  ngOnInit(): void {\r\n    this.generateYearList();\r\n    this.generateCalendar();\r\n  }\r\n\r\n  generateYearList(): void {\r\n    const currentYear = new Date().getFullYear();\r\n    const startYear = currentYear - 5;\r\n    const endYear = currentYear + 5;\r\n    \r\n    this.availableYears = [];\r\n    for (let year = startYear; year <= endYear; year++) {\r\n      this.availableYears.push(year);\r\n    }\r\n  }\r\n\r\n  toggleYearDropdown(event: Event): void {\r\n    event.stopPropagation();\r\n    this.isYearDropdownOpen = !this.isYearDropdownOpen;\r\n  }\r\n\r\n  selectYear(year: number, event: Event): void {\r\n    event.stopPropagation();\r\n    this.currentMonth = new Date(year, this.currentMonth.getMonth(), 1);\r\n    this.isYearDropdownOpen = false;\r\n    this.generateCalendar();\r\n  }\r\n\r\n  writeValue(value: DateRange): void {\r\n    if (value) {\r\n      this._dateRange = {\r\n        startDate: value.startDate ? new Date(value.startDate) : null,\r\n        endDate: value.endDate ? new Date(value.endDate) : null\r\n      };\r\n      \r\n      // Normalize dates to midnight\r\n      if (this._dateRange.startDate) {\r\n        this._dateRange.startDate.setHours(0, 0, 0, 0);\r\n        this.currentMonth = new Date(this._dateRange.startDate.getFullYear(), this._dateRange.startDate.getMonth(), 1);\r\n      }\r\n      if (this._dateRange.endDate) {\r\n        this._dateRange.endDate.setHours(0, 0, 0, 0);\r\n      }\r\n    } else {\r\n      this._dateRange = { startDate: null, endDate: null };\r\n    }\r\n    this.isSelectingEndDate = false;\r\n    this.generateCalendar();\r\n  }\r\n\r\n  registerOnChange(fn: (value: DateRange) => 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    this.disabled = isDisabled;\r\n  }\r\n\r\n  get formattedDate(): string {\r\n    if (!this._dateRange.startDate && !this._dateRange.endDate) {\r\n      return this.placeholder;\r\n    }\r\n    const formatDate = (date: Date | null) => {\r\n      if (!date) return 'DD/MM/YY';\r\n      const day = date.getDate().toString().padStart(2, '0');\r\n      const month = (date.getMonth() + 1).toString().padStart(2, '0');\r\n      const year = date.getFullYear().toString().slice(-2);\r\n      return `${day}/${month}/${year}`;\r\n    };\r\n    return `${formatDate(this._dateRange.startDate)} - ${formatDate(this._dateRange.endDate)}`;\r\n  }\r\n\r\n  get displayPlaceholder(): boolean {\r\n    return !this._dateRange.startDate && !this._dateRange.endDate;\r\n  }\r\n\r\n  get currentMonthName(): string {\r\n    return this.monthNames[this.currentMonth.getMonth()];\r\n  }\r\n\r\n  get currentYear(): number {\r\n    return this.currentMonth.getFullYear();\r\n  }\r\n\r\n  toggleCalendar(): void {\r\n    if (this.disabled || this.readonly) return;\r\n    this.isOpen = !this.isOpen;\r\n    if (this.isOpen) {\r\n      // When opening, keep the current selection but mark as ready for new selection\r\n      this.isSelectingEndDate = false;\r\n      this.generateCalendar();\r\n      console.log('Calendar opened. Current range:', this._dateRange);\r\n    } else {\r\n      this.isYearDropdownOpen = false;\r\n      console.log('Calendar closed by toggle');\r\n    }\r\n  }\r\n\r\n  closeCalendar(): void {\r\n    this.isOpen = false;\r\n    this.isYearDropdownOpen = false;\r\n    this.onTouched();\r\n  }\r\n\r\n  previousMonth(): void {\r\n    this.currentMonth = new Date(this.currentMonth.getFullYear(), this.currentMonth.getMonth() - 1, 1);\r\n    this.generateCalendar();\r\n  }\r\n\r\n  nextMonth(): void {\r\n    this.currentMonth = new Date(this.currentMonth.getFullYear(), this.currentMonth.getMonth() + 1, 1);\r\n    this.generateCalendar();\r\n  }\r\n\r\n  selectDate(day: CalendarDay): void {\r\n    if (day.isDisabled || this.disabled) return;\r\n\r\n    const selectedDate = new Date(day.date);\r\n    selectedDate.setHours(0, 0, 0, 0); // Normalize time to midnight\r\n\r\n    if (!this._dateRange.startDate || (this._dateRange.startDate && this._dateRange.endDate)) {\r\n      // First selection OR restart selection after complete range\r\n      this._dateRange.startDate = selectedDate;\r\n      this._dateRange.endDate = null;\r\n      this.isSelectingEndDate = true;\r\n      this.generateCalendar();\r\n      console.log('First date selected:', selectedDate);\r\n    } else {\r\n      // Second selection - set end date\r\n      const startTime = this._dateRange.startDate.getTime();\r\n      const selectedTime = selectedDate.getTime();\r\n      \r\n      if (selectedTime < startTime) {\r\n        // If selected date is before start date, swap them\r\n        this._dateRange.endDate = this._dateRange.startDate;\r\n        this._dateRange.startDate = selectedDate;\r\n      } else if (selectedTime === startTime) {\r\n        // If same date selected, treat it as a single day range\r\n        this._dateRange.endDate = selectedDate;\r\n      } else {\r\n        this._dateRange.endDate = selectedDate;\r\n      }\r\n      \r\n      this.isSelectingEndDate = false;\r\n      this.generateCalendar();\r\n      this.onChange(this._dateRange);\r\n      this.rangeChange.emit(this._dateRange);\r\n      console.log('Second date selected:', selectedDate, 'Range:', this._dateRange);\r\n      \r\n      // Delay closing to show the selection\r\n      setTimeout(() => {\r\n        this.isOpen = false;\r\n        this.onTouched();\r\n      }, 300);\r\n    }\r\n  }\r\n\r\n  clearSelection(): void {\r\n    this._dateRange = { startDate: null, endDate: null };\r\n    this.isSelectingEndDate = false;\r\n    this.onChange(this._dateRange);\r\n    this.rangeChange.emit(this._dateRange);\r\n    this.generateCalendar();\r\n  }\r\n\r\n  isDateDisabled(date: Date): boolean {\r\n    if (this.minDate && date < this.minDate) return true;\r\n    if (this.maxDate && date > this.maxDate) return true;\r\n    return false;\r\n  }\r\n\r\n  isDateInRange(date: Date): boolean {\r\n    if (!this._dateRange.startDate || !this._dateRange.endDate) return false;\r\n    return date >= this._dateRange.startDate && date <= this._dateRange.endDate;\r\n  }\r\n\r\n  generateCalendar(): void {\r\n    const year = this.currentMonth.getFullYear();\r\n    const month = this.currentMonth.getMonth();\r\n    \r\n    const firstDay = new Date(year, month, 1);\r\n    const lastDay = new Date(year, month + 1, 0);\r\n    const prevMonthLastDay = new Date(year, month, 0);\r\n    \r\n    const startDayOfWeek = firstDay.getDay();\r\n    const daysInMonth = lastDay.getDate();\r\n    const daysInPrevMonth = prevMonthLastDay.getDate();\r\n    \r\n    this.calendarDays = [];\r\n    \r\n    // Previous month days\r\n    for (let i = startDayOfWeek - 1; i >= 0; i--) {\r\n      const day = daysInPrevMonth - i;\r\n      const date = new Date(year, month - 1, day);\r\n      this.calendarDays.push({\r\n        date,\r\n        day,\r\n        isCurrentMonth: false,\r\n        isToday: this.isToday(date),\r\n        isStartDate: this.isSameDate(date, this._dateRange.startDate),\r\n        isEndDate: this.isSameDate(date, this._dateRange.endDate),\r\n        isInRange: this.isDateInRange(date),\r\n        isDisabled: this.isDateDisabled(date)\r\n      });\r\n    }\r\n    \r\n    // Current month days\r\n    for (let day = 1; day <= daysInMonth; day++) {\r\n      const date = new Date(year, month, day);\r\n      this.calendarDays.push({\r\n        date,\r\n        day,\r\n        isCurrentMonth: true,\r\n        isToday: this.isToday(date),\r\n        isStartDate: this.isSameDate(date, this._dateRange.startDate),\r\n        isEndDate: this.isSameDate(date, this._dateRange.endDate),\r\n        isInRange: this.isDateInRange(date),\r\n        isDisabled: this.isDateDisabled(date)\r\n      });\r\n    }\r\n    \r\n    // Next month days\r\n    const remainingDays = 42 - this.calendarDays.length; // 6 rows * 7 days\r\n    for (let day = 1; day <= remainingDays; day++) {\r\n      const date = new Date(year, month + 1, day);\r\n      this.calendarDays.push({\r\n        date,\r\n        day,\r\n        isCurrentMonth: false,\r\n        isToday: this.isToday(date),\r\n        isStartDate: this.isSameDate(date, this._dateRange.startDate),\r\n        isEndDate: this.isSameDate(date, this._dateRange.endDate),\r\n        isInRange: this.isDateInRange(date),\r\n        isDisabled: this.isDateDisabled(date)\r\n      });\r\n    }\r\n  }\r\n\r\n  isToday(date: Date): boolean {\r\n    const today = new Date();\r\n    return this.isSameDate(date, today);\r\n  }\r\n\r\n  isSameDate(date1: Date | null, date2: Date | null): boolean {\r\n    if (!date1 || !date2) return false;\r\n    return date1.getDate() === date2.getDate() &&\r\n           date1.getMonth() === date2.getMonth() &&\r\n           date1.getFullYear() === date2.getFullYear();\r\n  }\r\n\r\n  getDayClasses(day: CalendarDay): string {\r\n    const classes = ['calendar-day'];\r\n    if (!day.isCurrentMonth) classes.push('calendar-day--other-month');\r\n    if (day.isToday && !day.isStartDate && !day.isEndDate) classes.push('calendar-day--today');\r\n    if (day.isStartDate || day.isEndDate) classes.push('calendar-day--selected');\r\n    if (day.isInRange && !day.isStartDate && !day.isEndDate) classes.push('calendar-day--in-range');\r\n    if (day.isDisabled) classes.push('calendar-day--disabled');\r\n    return classes.join(' ');\r\n  }\r\n\r\n  @HostListener('document:click', ['$event'])\r\n  onDocumentClick(event: Event): void {\r\n    const clickedInside = this.elementRef.nativeElement.contains(event.target as Node);\r\n    if (!clickedInside && this.isOpen) {\r\n      // Close calendar when clicking outside, but reset selection state\r\n      this.isOpen = false;\r\n      this.onTouched();\r\n      console.log('Calendar closed by outside click');\r\n    }\r\n  }\r\n\r\n  @HostListener('keydown', ['$event'])\r\n  onKeyDown(event: KeyboardEvent): void {\r\n    if (!this.isOpen) {\r\n      if (event.key === 'Enter' || event.key === ' ') {\r\n        event.preventDefault();\r\n        this.toggleCalendar();\r\n      }\r\n      return;\r\n    }\r\n\r\n    if (event.key === 'Escape') {\r\n      event.preventDefault();\r\n      this.closeCalendar();\r\n    }\r\n  }\r\n}\r\n\r\n","<div class=\"shaqra-dga-ranged-datepicker\">\r\n  <!-- Label -->\r\n  <label *ngIf=\"label\" class=\"datepicker-label\">\r\n    {{ label }}<span *ngIf=\"required\" class=\"datepicker-required\">*</span>\r\n  </label>\r\n\r\n  <!-- Input Field -->\r\n  <div class=\"datepicker-input-wrapper\" [class.is-open]=\"isOpen\">\r\n    <div\r\n      class=\"datepicker-input\"\r\n      [class.datepicker-input--disabled]=\"disabled\"\r\n      [class.datepicker-input--readonly]=\"readonly\"\r\n      [class.datepicker-input--focused]=\"isOpen\"\r\n      [class.datepicker-input--placeholder]=\"displayPlaceholder\"\r\n      (click)=\"toggleCalendar()\"\r\n      [attr.tabindex]=\"disabled || readonly ? -1 : 0\"\r\n      [attr.aria-label]=\"label || 'Select date range'\"\r\n      [attr.aria-expanded]=\"isOpen\"\r\n      role=\"button\"\r\n    >\r\n      <span class=\"datepicker-input__text\">{{ formattedDate }}</span>\r\n      <div *ngIf=\"isOpen && !readonly\" class=\"datepicker-input__cursor\"></div>\r\n    </div>\r\n    <div *ngIf=\"isOpen\" class=\"datepicker-input__indicator\"></div>\r\n  </div>\r\n\r\n  <!-- Calendar Popup -->\r\n  <div *ngIf=\"isOpen\" class=\"datepicker-calendar\" (click)=\"$event.stopPropagation()\">\r\n    <!-- Calendar Header -->\r\n    <div class=\"calendar-header\">\r\n      <div class=\"calendar-header__title\">\r\n        <span class=\"calendar-header__month\">{{ currentMonthName }}</span>\r\n        <div class=\"calendar-header__year\" (click)=\"toggleYearDropdown($event)\">\r\n          <span>{{ currentYear }}</span>\r\n          <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n            <path d=\"M3.5 6L8 10.5L12.5 6\" stroke=\"#161616\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n          </svg>\r\n        </div>\r\n        \r\n        <!-- Year Dropdown -->\r\n        <div *ngIf=\"isYearDropdownOpen\" class=\"year-dropdown\" (click)=\"$event.stopPropagation()\">\r\n          <div class=\"year-dropdown__list\">\r\n            <div\r\n              *ngFor=\"let year of availableYears\"\r\n              class=\"year-dropdown__item\"\r\n              [class.year-dropdown__item--selected]=\"year === currentYear\"\r\n              (click)=\"selectYear(year, $event)\"\r\n            >\r\n              <span>{{ year }}</span>\r\n              <svg *ngIf=\"year === currentYear\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                <path d=\"M16.25 5.625L7.5 14.375L3.75 10.625\" stroke=\"#1b8354\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n              </svg>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"calendar-header__nav\">\r\n        <button\r\n          class=\"calendar-nav-button\"\r\n          (click)=\"previousMonth()\"\r\n          [attr.aria-label]=\"'Previous month'\"\r\n          type=\"button\"\r\n        >\r\n          <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n            <path d=\"M15 18L9 12L15 6\" stroke=\"#161616\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n          </svg>\r\n        </button>\r\n        <button\r\n          class=\"calendar-nav-button\"\r\n          (click)=\"nextMonth()\"\r\n          [attr.aria-label]=\"'Next month'\"\r\n          type=\"button\"\r\n        >\r\n          <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n            <path d=\"M9 18L15 12L9 6\" stroke=\"#161616\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n          </svg>\r\n        </button>\r\n      </div>\r\n    </div>\r\n\r\n    <!-- Week Days -->\r\n    <div class=\"calendar-weekdays\">\r\n      <div *ngFor=\"let day of weekDays\" class=\"calendar-weekday\">\r\n        {{ day }}\r\n      </div>\r\n    </div>\r\n\r\n    <!-- Calendar Days Grid -->\r\n    <div class=\"calendar-days\">\r\n      <div\r\n        *ngFor=\"let day of calendarDays; let i = index\"\r\n        [class]=\"getDayClasses(day)\"\r\n        (click)=\"selectDate(day)\"\r\n        [attr.tabindex]=\"day.isDisabled ? -1 : 0\"\r\n        [attr.aria-label]=\"day.date.toDateString()\"\r\n        [attr.aria-selected]=\"day.isStartDate || day.isEndDate\"\r\n        role=\"button\"\r\n      >\r\n        <div class=\"calendar-day__background\"></div>\r\n        <span class=\"calendar-day__number\">{{ day.day }}</span>\r\n      </div>\r\n    </div>\r\n\r\n    <!-- Actions -->\r\n    <div class=\"calendar-actions\" *ngIf=\"_dateRange.startDate || _dateRange.endDate\">\r\n      <button\r\n        class=\"calendar-action-button\"\r\n        (click)=\"clearSelection()\"\r\n        type=\"button\"\r\n      >\r\n        Clear Selection\r\n      </button>\r\n    </div>\r\n  </div>\r\n</div>\r\n\r\n","import { Component, Input, Output, EventEmitter, HostListener } from '@angular/core';\r\n\r\nexport interface UploadedFile {\r\n  id: string;\r\n  name: string;\r\n  size: number;\r\n  type: string;\r\n  file: File;\r\n}\r\n\r\n@Component({\r\n  selector: 'shaqra-dga-file-uploader',\r\n  templateUrl: './file-uploader.component.html',\r\n  styleUrls: ['./file-uploader.component.scss'],\r\n  standalone: false\r\n})\r\nexport class FileUploaderComponent {\r\n  @Input() disabled: boolean = false;\r\n  @Input() maxFileSize: number = 2 * 1024 * 1024; // 2MB in bytes\r\n  @Input() acceptedFormats: string[] = ['.jpg', '.jpeg', '.png', '.pdf'];\r\n  @Input() numberOfAllowedFiles: number | null = null; // null means unlimited\r\n  @Input() dragDropText: string = 'Drag and drop files here to upload';\r\n  @Input() browseButtonText: string = 'Browse Files';\r\n  @Input() descriptionText: string = 'Maximum file size allowed is 2MB, supported file formats include .jpg, .png, and .pdf.';\r\n  \r\n  @Output() filesChange = new EventEmitter<UploadedFile[]>();\r\n  @Output() fileError = new EventEmitter<string>();\r\n\r\n  uploadedFiles: UploadedFile[] = [];\r\n  isDragOver: boolean = false;\r\n\r\n  @HostListener('dragover', ['$event'])\r\n  onDragOver(event: DragEvent): void {\r\n    if (this.disabled || this.isUploadLimitReached()) return;\r\n    \r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    this.isDragOver = true;\r\n  }\r\n\r\n  @HostListener('dragleave', ['$event'])\r\n  onDragLeave(event: DragEvent): void {\r\n    if (this.disabled) return;\r\n    \r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    this.isDragOver = false;\r\n  }\r\n\r\n  @HostListener('drop', ['$event'])\r\n  onDrop(event: DragEvent): void {\r\n    if (this.disabled || this.isUploadLimitReached()) return;\r\n    \r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    this.isDragOver = false;\r\n\r\n    const files = event.dataTransfer?.files;\r\n    if (files) {\r\n      this.handleFiles(Array.from(files));\r\n    }\r\n  }\r\n\r\n  onBrowseClick(): void {\r\n    if (this.disabled || this.isUploadLimitReached()) return;\r\n    \r\n    const fileInput = document.createElement('input');\r\n    fileInput.type = 'file';\r\n    fileInput.multiple = this.numberOfAllowedFiles === null || this.numberOfAllowedFiles > 1;\r\n    fileInput.accept = this.acceptedFormats.join(',');\r\n    \r\n    fileInput.onchange = (event: any) => {\r\n      const files = event.target.files;\r\n      if (files) {\r\n        this.handleFiles(Array.from(files));\r\n      }\r\n    };\r\n    \r\n    fileInput.click();\r\n  }\r\n\r\n  handleFiles(files: File[]): void {\r\n    const remainingSlots = this.numberOfAllowedFiles \r\n      ? this.numberOfAllowedFiles - this.uploadedFiles.length \r\n      : files.length;\r\n    \r\n    const filesToProcess = files.slice(0, remainingSlots);\r\n\r\n    filesToProcess.forEach(file => {\r\n      // Validate file size\r\n      if (file.size > this.maxFileSize) {\r\n        this.fileError.emit(`File \"${file.name}\" exceeds the maximum size of ${this.formatFileSize(this.maxFileSize)}`);\r\n        return;\r\n      }\r\n\r\n      // Validate file format\r\n      const fileExtension = '.' + file.name.split('.').pop()?.toLowerCase();\r\n      if (!this.acceptedFormats.map(f => f.toLowerCase()).includes(fileExtension)) {\r\n        this.fileError.emit(`File \"${file.name}\" has an unsupported format. Accepted formats: ${this.acceptedFormats.join(', ')}`);\r\n        return;\r\n      }\r\n\r\n      // Add file to uploaded files\r\n      const uploadedFile: UploadedFile = {\r\n        id: this.generateId(),\r\n        name: file.name,\r\n        size: file.size,\r\n        type: file.type,\r\n        file: file\r\n      };\r\n\r\n      this.uploadedFiles.push(uploadedFile);\r\n    });\r\n\r\n    this.filesChange.emit(this.uploadedFiles);\r\n  }\r\n\r\n  removeFile(fileId: string): void {\r\n    if (this.disabled) return;\r\n    \r\n    this.uploadedFiles = this.uploadedFiles.filter(f => f.id !== fileId);\r\n    this.filesChange.emit(this.uploadedFiles);\r\n  }\r\n\r\n  isUploadLimitReached(): boolean {\r\n    if (this.numberOfAllowedFiles === null) return false;\r\n    return this.uploadedFiles.length >= this.numberOfAllowedFiles;\r\n  }\r\n\r\n  formatFileSize(bytes: number): string {\r\n    if (bytes === 0) return '0 Bytes';\r\n    const k = 1024;\r\n    const sizes = ['Bytes', 'KB', 'MB', 'GB'];\r\n    const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n    return Math.round(bytes / Math.pow(k, i) * 100) / 100 + ' ' + sizes[i];\r\n  }\r\n\r\n  getFileIcon(fileName: string): string {\r\n    const extension = fileName.split('.').pop()?.toLowerCase();\r\n    // Return appropriate icon class or path based on extension\r\n    return 'file-icon';\r\n  }\r\n\r\n  private generateId(): string {\r\n    return `file-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\r\n  }\r\n}\r\n\r\n","<div class=\"file-uploader-container\">\r\n  <!-- Drop Zone -->\r\n  <div \r\n    class=\"drop-zone\"\r\n    [class.drop-zone--drag-over]=\"isDragOver\"\r\n    [class.drop-zone--disabled]=\"disabled\"\r\n    [class.drop-zone--limit-reached]=\"isUploadLimitReached()\">\r\n    \r\n    <!-- Upload Icon -->\r\n    <div class=\"drop-zone__icon\">\r\n      <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n        <path d=\"M21 15V19C21 19.5304 20.7893 20.0391 20.4142 20.4142C20.0391 20.7893 19.5304 21 19 21H5C4.46957 21 3.96086 20.7893 3.58579 20.4142C3.21071 20.0391 3 19.5304 3 19V15\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n        <path d=\"M17 8L12 3L7 8\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n        <path d=\"M12 3V15\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n      </svg>\r\n    </div>\r\n\r\n    <!-- Text Content -->\r\n    <div class=\"drop-zone__content\">\r\n      <span class=\"drop-zone__title\">{{ dragDropText }}</span>\r\n      <span class=\"drop-zone__description\">{{ descriptionText }}</span>\r\n    </div>\r\n\r\n    <!-- Browse Button -->\r\n    <button \r\n      class=\"browse-button\"\r\n      [disabled]=\"disabled || isUploadLimitReached()\"\r\n      (click)=\"onBrowseClick()\">\r\n      <span>{{ browseButtonText }}</span>\r\n    </button>\r\n  </div>\r\n\r\n  <!-- Uploaded Files List -->\r\n  <div class=\"uploaded-files\" *ngIf=\"uploadedFiles.length > 0\">\r\n    <div \r\n      class=\"file-item\"\r\n      *ngFor=\"let file of uploadedFiles\"\r\n      [class.file-item--disabled]=\"disabled\">\r\n      \r\n      <!-- File Icon -->\r\n      <div class=\"file-item__icon\">\r\n        <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n          <path d=\"M11.667 1.66699H5.00033C4.55829 1.66699 4.13437 1.84259 3.82181 2.15515C3.50925 2.46771 3.33366 2.89163 3.33366 3.33366V16.667C3.33366 17.109 3.50925 17.5329 3.82181 17.8455C4.13437 18.1581 4.55829 18.3337 5.00033 18.3337H15.0003C15.4424 18.3337 15.8663 18.1581 16.1788 17.8455C16.4914 17.5329 16.667 17.109 16.667 16.667V6.66699L11.667 1.66699Z\" stroke=\"#161616\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n          <path d=\"M11.667 1.66699V6.66699H16.667\" stroke=\"#161616\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n        </svg>\r\n      </div>\r\n\r\n      <!-- File Info -->\r\n      <div class=\"file-item__info\">\r\n        <span class=\"file-item__name\">{{ file.name }}</span>\r\n      </div>\r\n\r\n      <!-- Delete Button -->\r\n      <button \r\n        class=\"file-item__delete\"\r\n        [disabled]=\"disabled\"\r\n        (click)=\"removeFile(file.id)\"\r\n        [attr.aria-label]=\"'Delete ' + file.name\">\r\n        <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n          <path d=\"M15 5L5 15\" stroke=\"#dc2626\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n          <path d=\"M5 5L15 15\" stroke=\"#dc2626\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n        </svg>\r\n      </button>\r\n    </div>\r\n  </div>\r\n</div>\r\n\r\n","// File: src/lib/shaqra-dga-platformscode-angular.module.ts\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { ShaqraDgaPlatformscodeAngularComponent } from './shaqra-dga-platformscode-angular.component';\r\nimport { ButtonComponent } from './components/button-component/button.component';\r\nimport { TextInputComponent } from './components/text-input-component/text-input.component';\r\nimport { DropdownComponent } from './components/dropdown/dropdown.component';\r\nimport { ContentSwitcherComponent } from './components/content-switcher/content-switcher.component';\r\nimport { SingleDatepickerComponent } from './components/single-datepicker/single-datepicker.component';\r\nimport { RangedDatepickerComponent } from './components/ranged-datepicker/ranged-datepicker.component';\r\nimport { FileUploaderComponent } from './components/file-uploader/file-uploader.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    ShaqraDgaPlatformscodeAngularComponent,\r\n    TextInputComponent,\r\n    ButtonComponent,\r\n    DropdownComponent,\r\n    ContentSwitcherComponent,\r\n    SingleDatepickerComponent,\r\n    RangedDatepickerComponent,\r\n    FileUploaderComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n  ],\r\n  exports: [\r\n    ShaqraDgaPlatformscodeAngularComponent,\r\n    TextInputComponent,\r\n    ButtonComponent,\r\n    DropdownComponent,\r\n    ContentSwitcherComponent,\r\n    SingleDatepickerComponent,\r\n    RangedDatepickerComponent,\r\n    FileUploaderComponent\r\n  ]\r\n})\r\nexport class ShaqraDgaPlatformscodeAngularModule { }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.TextInputComponent","i3.ButtonComponent"],"mappings":"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"}