{"version":3,"file":"tgui-angular.mjs","sources":["../../../projects/tgui/src/lib/services/telegram.service.ts","../../../projects/tgui/src/lib/services/theme.service.ts","../../../projects/tgui/src/lib/services/platform.service.ts","../../../projects/tgui/src/lib/services/portal.service.ts","../../../projects/tgui/src/lib/services/ripple.service.ts","../../../projects/tgui/src/lib/utils/theme-helper.ts","../../../projects/tgui/src/lib/utils/has-node.ts","../../../projects/tgui/src/lib/utils/class-names.ts","../../../projects/tgui/src/lib/utils/function.ts","../../../projects/tgui/src/lib/utils/chunk.ts","../../../projects/tgui/src/lib/directives/tgui-theme.directive.ts","../../../projects/tgui/src/lib/directives/portal-outlet.directive.ts","../../../projects/tgui/src/lib/directives/horizontal-scroll.directive.ts","../../../projects/tgui/src/lib/directives/visually-hidden.directive.ts","../../../projects/tgui/src/lib/components/utils/tappable/components/ripple/ripple.component.ts","../../../projects/tgui/src/lib/components/utils/tappable/tappable.component.ts","../../../projects/tgui/src/lib/components/utils/portal/root-portal.component.ts","../../../projects/tgui/src/lib/components/utils/tgui-root/tgui-root.component.ts","../../../projects/tgui/src/lib/components/utils/touch/touch.component.ts","../../../projects/tgui/src/lib/components/utils/root-renderer/root-renderer.component.ts","../../../projects/tgui/src/lib/components/typography/typography.component.ts","../../../projects/tgui/src/lib/components/typography/caption/caption.component.ts","../../../projects/tgui/src/lib/components/typography/subheadline/subheadline.component.ts","../../../projects/tgui/src/lib/components/blocks/badge/badge.component.ts","../../../projects/tgui/src/lib/components/feedback/spinner/components/base-spinner/base-spinner.component.ts","../../../projects/tgui/src/lib/components/feedback/spinner/components/ios-spinner/ios-spinner.component.ts","../../../projects/tgui/src/lib/components/feedback/spinner/spinner.component.ts","../../../projects/tgui/src/lib/components/feedback/spoiler/spoiler.component.ts","../../../projects/tgui/src/lib/components/feedback/skeleton/skeleton.component.ts","../../../projects/tgui/src/lib/components/feedback/progress/progress.component.ts","../../../projects/tgui/src/lib/components/feedback/circular-progress/utils/get-circle-attributes.ts","../../../projects/tgui/src/lib/components/feedback/circular-progress/circular-progress.component.ts","../../../projects/tgui/src/lib/components/feedback/snackbar/snackbar.component.ts","../../../projects/tgui/src/lib/components/feedback/snackbar/snackbar.service.ts","../../../projects/tgui/src/lib/components/feedback/snackbar/components/snackbar-button/snackbar-button.component.ts","../../../projects/tgui/src/lib/icons/icon-base.component.ts","../../../projects/tgui/src/lib/icons/directives/svg-props.directive.ts","../../../projects/tgui/src/lib/icons/icon12/tgui-icon12-quote.ts","../../../projects/tgui/src/lib/icons/icon16/tgui-icon16-chevron.ts","../../../projects/tgui/src/lib/icons/icon16/tgui-icon16-cancel.ts","../../../projects/tgui/src/lib/icons/icon20/tgui-icon20-select-ios.ts","../../../projects/tgui/src/lib/icons/icon20/tgui-icon20-select.ts","../../../projects/tgui/src/lib/icons/icon20/tgui-icon20-question-mark.ts","../../../projects/tgui/src/lib/icons/icon20/tgui-icon20-chevron-down.ts","../../../projects/tgui/src/lib/icons/icon20/tgui-icon20-copy.ts","../../../projects/tgui/src/lib/icons/icon24/tgui-icon24-close.ts","../../../projects/tgui/src/lib/icons/icon24/tgui-icon24-sun-low.ts","../../../projects/tgui/src/lib/icons/icon24/tgui-icon24-qr.ts","../../../projects/tgui/src/lib/icons/icon24/tgui-icon24-person-remove.ts","../../../projects/tgui/src/lib/icons/icon24/tgui-icon24-notifications.ts","../../../projects/tgui/src/lib/icons/icon24/tgui-icon24-chevron-right.ts","../../../projects/tgui/src/lib/icons/icon24/tgui-icon24-chevron-left.ts","../../../projects/tgui/src/lib/icons/icon24/tgui-icon24-chat.ts","../../../projects/tgui/src/lib/icons/icon24/tgui-icon24-channel.ts","../../../projects/tgui/src/lib/icons/icon24/tgui-icon24-cancel.ts","../../../projects/tgui/src/lib/icons/icon24/tgui-icon24-chevron-down.ts","../../../projects/tgui/src/lib/icons/icon28/tgui-icon28-close.ts","../../../projects/tgui/src/lib/icons/icon28/tgui-icon28-close-ambient.ts","../../../projects/tgui/src/lib/icons/icon28/tgui-icon28-stats.ts","../../../projects/tgui/src/lib/icons/icon28/tgui-icon28-heart.ts","../../../projects/tgui/src/lib/icons/icon28/tgui-icon28-edit.ts","../../../projects/tgui/src/lib/icons/icon28/tgui-icon28-devices.ts","../../../projects/tgui/src/lib/icons/icon28/tgui-icon28-chat.ts","../../../projects/tgui/src/lib/icons/icon28/tgui-icon28-attach.ts","../../../projects/tgui/src/lib/icons/icon28/tgui-icon28-archive.ts","../../../projects/tgui/src/lib/icons/icon28/tgui-icon28-add-circle.ts","../../../projects/tgui/src/lib/icons/icon32/tgui-icon32-profile-colored-square.ts","../../../projects/tgui/src/lib/icons/icon36/tgui-icon36-backspace.ts","../../../projects/tgui/src/lib/icons/index.ts","../../../projects/tgui/src/lib/icons/dynamic-icon.component.ts","../../../projects/tgui/src/lib/components/typography/headline/headline.component.ts","../../../projects/tgui/src/lib/components/typography/large-title/large-title.component.ts","../../../projects/tgui/src/lib/components/typography/text/text.component.ts","../../../projects/tgui/src/lib/components/typography/title/title.component.ts","../../../projects/tgui/src/lib/components/blocks/button/button.component.ts","../../../projects/tgui/src/lib/components/blocks/avatar/components/avatar-acronym/avatar-acronym.component.ts","../../../projects/tgui/src/lib/components/blocks/avatar/avatar.component.ts","../../../projects/tgui/src/lib/components/blocks/avatar-stack/avatar-stack.component.ts","../../../projects/tgui/src/lib/components/misc/divider/divider.component.ts","../../../projects/tgui/src/lib/components/blocks/section/components/section-header/section-header.component.ts","../../../projects/tgui/src/lib/components/blocks/section/components/section-footer/section-footer.component.ts","../../../projects/tgui/src/lib/components/blocks/section/section.component.ts","../../../projects/tgui/src/lib/components/blocks/card/components/card-cell/card-cell.component.ts","../../../projects/tgui/src/lib/components/blocks/card/components/card-cell/card-cell.component.html","../../../projects/tgui/src/lib/components/blocks/card/card.component.ts","../../../projects/tgui/src/lib/components/blocks/card/card.component.html","../../../projects/tgui/src/lib/components/blocks/icon-button/icon-button.component.ts","../../../projects/tgui/src/lib/components/blocks/image/image.component.ts","../../../projects/tgui/src/lib/components/blocks/image/components/image-badge/image-badge.component.ts","../../../projects/tgui/src/lib/components/blocks/icon-container/icon-container.component.ts","../../../projects/tgui/src/lib/components/blocks/placeholder/placeholder.component.ts","../../../projects/tgui/src/lib/components/blocks/list/list.component.ts","../../../projects/tgui/src/lib/components/blocks/steps/steps.component.ts","../../../projects/tgui/src/lib/components/blocks/timeline/components/timeline-item/timeline-item.component.ts","../../../projects/tgui/src/lib/components/blocks/timeline/timeline.component.ts","../../../projects/tgui/src/lib/components/blocks/cell/services/typography-cell.service.ts","../../../projects/tgui/src/lib/components/blocks/cell/cell.component.ts","../../../projects/tgui/src/lib/components/blocks/accordion/accordion.component.ts","../../../projects/tgui/src/lib/components/blocks/accordion/components/accordion-summary/accordion-summary.component.ts","../../../projects/tgui/src/lib/components/blocks/accordion/components/accordion-content/accordion-content.component.ts","../../../projects/tgui/src/lib/components/blocks/cell/components/button-cell/button-cell.component.ts","../../../projects/tgui/src/lib/components/blocks/blockquote/blockquote.component.ts","../../../projects/tgui/src/lib/components/blocks/banner/banner.component.ts","../../../projects/tgui/src/lib/components/blocks/inline-buttons/inline-buttons.component.ts","../../../projects/tgui/src/lib/components/blocks/inline-buttons/components/inline-buttons-item.component.ts","../../../projects/tgui/src/lib/components/blocks/avatar/components/avatar-badge/avatar-badge.component.ts","../../../projects/tgui/src/lib/components/form/chip/chip.component.ts","../../../projects/tgui/src/lib/components/form/form-input/components/form-input-title.component.ts","../../../projects/tgui/src/lib/components/form/form-input/form-input.component.ts","../../../projects/tgui/src/lib/components/form/input/input.component.ts","../../../projects/tgui/src/lib/components/form/checkbox/icons/checkbox.component.ts","../../../projects/tgui/src/lib/components/form/checkbox/icons/checkbox-checked.component.ts","../../../projects/tgui/src/lib/components/form/checkbox/icons/checkbox-indeterminate.component.ts","../../../projects/tgui/src/lib/components/form/checkbox/checkbox.component.ts","../../../projects/tgui/src/lib/components/form/color-input/color-input.component.ts","../../../projects/tgui/src/lib/components/form/radio/icons/radio.component.ts","../../../projects/tgui/src/lib/components/form/radio/icons/radio-checked.component.ts","../../../projects/tgui/src/lib/components/form/radio/radio.component.ts","../../../projects/tgui/src/lib/components/form/file-input/file-input.component.ts","../../../projects/tgui/src/lib/components/form/pin-input/components/pin-input-button/pin-input-button.component.ts","../../../projects/tgui/src/lib/components/form/pin-input/components/pin-input-cell/pin-input-cell.component.ts","../../../projects/tgui/src/lib/utils/math.ts","../../../projects/tgui/src/lib/components/form/pin-input/hooks/use-pin-input.ts","../../../projects/tgui/src/lib/components/form/pin-input/pin-input.component.ts","../../../projects/tgui/src/lib/components/form/rating/rating.component.ts","../../../projects/tgui/src/lib/components/form/select/select.component.ts","../../../projects/tgui/src/lib/components/form/switch/switch.component.ts","../../../projects/tgui/src/lib/components/form/textarea/textarea.component.ts","../../../projects/tgui/src/lib/components/form/multiselectable/multiselectable.component.ts","../../../projects/tgui/src/lib/components/form/index.ts","../../../projects/tgui/src/lib/components/layout/fixed-layout/fixed-layout.component.ts","../../../projects/tgui/src/lib/components/layout/tabbar/tabbar-item.component.ts","../../../projects/tgui/src/lib/components/layout/tabbar/tabbar.component.ts","../../../projects/tgui/src/lib/components/navigation/breadcrumbs/breadcrumbs-item.component.ts","../../../projects/tgui/src/lib/components/navigation/breadcrumbs/icons/dot-icon.component.ts","../../../projects/tgui/src/lib/components/navigation/breadcrumbs/icons/slash-icon.component.ts","../../../projects/tgui/src/lib/components/navigation/breadcrumbs/breadcrumbs.component.ts","../../../projects/tgui/src/lib/components/navigation/tabs-list/tabs-item.component.ts","../../../projects/tgui/src/lib/components/navigation/tabs-list/tabs-list.component.ts","../../../projects/tgui/src/lib/components/navigation/segmented-control/segmented-control-item.component.ts","../../../projects/tgui/src/lib/components/navigation/segmented-control/segmented-control.component.ts","../../../projects/tgui/src/lib/components/navigation/pagination/hooks/pagination.enum.ts","../../../projects/tgui/src/lib/components/navigation/pagination/hooks/array-utils.ts","../../../projects/tgui/src/lib/components/navigation/pagination/hooks/use-pagination.ts","../../../projects/tgui/src/lib/components/navigation/pagination/pagination.component.ts","../../../projects/tgui/src/lib/components/navigation/compact-pagination/compact-pagination-item.component.ts","../../../projects/tgui/src/lib/components/navigation/compact-pagination/compact-pagination.component.ts","../../../projects/tgui/src/lib/components/navigation/link/link.component.ts","../../../projects/tgui/src/lib/components/overlays/popper/components/floating-arrow/floating-arrow.component.ts","../../../projects/tgui/src/lib/components/overlays/popper/hooks/helpers/alignment.ts","../../../projects/tgui/src/lib/components/overlays/popper/hooks/use-floating-middlewares.ts","../../../projects/tgui/src/lib/components/overlays/popper/helpers/auto-update-floating-element.ts","../../../projects/tgui/src/lib/components/overlays/popper/popper.component.ts","../../../projects/tgui/src/lib/components/overlays/tooltip/tooltip.component.ts","../../../projects/tgui/src/lib/components/overlays/modal/modal-header.component.ts","../../../projects/tgui/src/lib/components/overlays/modal/modal-close.component.ts","../../../projects/tgui/src/lib/components/overlays/modal/modal-overlay.component.ts","../../../projects/tgui/src/lib/components/overlays/modal/modal.component.ts","../../../projects/tgui/src/lib/tgui.service.ts","../../../projects/tgui/src/lib/tgui.component.ts","../../../projects/tgui/src/public-api.ts","../../../projects/tgui/src/tgui-angular.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n// Define Telegram WebApp interface\ninterface ThemeParams {\n  bg_color?: string;\n  text_color?: string;\n  hint_color?: string;\n  link_color?: string;\n  button_color?: string;\n  button_text_color?: string;\n  secondary_bg_color?: string;\n  header_bg_color?: string;\n  accent_text_color?: string;\n  section_bg_color?: string;\n  section_header_text_color?: string;\n  subtitle_text_color?: string;\n  destructive_text_color?: string;\n}\n\ninterface WebApp {\n  colorScheme: 'light' | 'dark';\n  themeParams: ThemeParams;\n  onEvent(eventName: string, eventHandler: () => void): void;\n  offEvent(eventName: string, eventHandler: () => void): void;\n}\n\ndeclare global {\n  interface Window {\n    Telegram?: {\n      WebApp?: WebApp;\n    };\n  }\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class TelegramService {\n  private ready = new BehaviorSubject<boolean>(false);\n  private initializationTimeout: number | null = null;\n\n  constructor() {\n    this.waitForTelegramWebApp();\n  }\n\n  // Check if DOM is available\n  private get canUseDOM(): boolean {\n    return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n  }\n\n  // Get Telegram WebApp data\n  public getTelegramData(): WebApp | undefined {\n    if (!this.canUseDOM) {\n      return undefined;\n    }\n\n    const webApp = window.Telegram?.WebApp;\n    return webApp;\n  }\n\n  // Wait for Telegram WebApp to be available\n  private waitForTelegramWebApp(maxAttempts = 50): void {\n    let attempts = 0;\n    \n    const checkWebApp = () => {\n      const webApp = this.getTelegramData();\n      \n      if (webApp) {\n        this.ready.next(true);\n        if (this.initializationTimeout !== null) {\n          window.clearTimeout(this.initializationTimeout);\n          this.initializationTimeout = null;\n        }\n      } else if (attempts < maxAttempts) {\n        attempts++;\n        this.initializationTimeout = window.setTimeout(checkWebApp, 100);\n      } else {\n        console.warn('TelegramService: Failed to initialize WebApp after', maxAttempts, 'attempts');\n        this.ready.next(false);\n      }\n    };\n\n    checkWebApp();\n  }\n\n  // Get ready state as observable\n  public get isReady$(): Observable<boolean> {\n    return this.ready.asObservable();\n  }\n\n  // Get current ready state\n  public get isReady(): boolean {\n    return this.ready.value;\n  }\n\n  // Helper function to convert hex color to RGB\n  public hexToRGB(hex: string): [number, number, number] {\n    // Remove # if present\n    hex = hex.replace('#', '');\n    \n    // Parse hex values\n    const r = parseInt(hex.substring(0, 2), 16);\n    const g = parseInt(hex.substring(2, 4), 16);\n    const b = parseInt(hex.substring(4, 6), 16);\n    \n    return [r, g, b];\n  }\n} ","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, OnDestroy, signal, inject, Renderer2, RendererFactory2 } from '@angular/core';\nimport { TelegramService } from './telegram.service';\n\nexport type AppearanceType = 'light' | 'dark';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ThemeService implements OnDestroy {\n  // Signal for appearance that components can subscribe to\n  public appearance = signal<AppearanceType>('light');\n  private themeChangeListener: (() => void) | null = null;\n  private mediaQueryList: MediaQueryList | null = null;\n  private handleThemeChange: ((event: MediaQueryListEvent) => void) | null = null;\n  private useSystemTheme = false;\n  private currentTheme: AppearanceType = 'light';\n  private renderer: Renderer2;\n\n  private telegramService = inject(TelegramService);\n  private document = inject(DOCUMENT);\n\n  constructor(rendererFactory: RendererFactory2) {\n    this.renderer = rendererFactory.createRenderer(null, null);\n    \n    // Wait for Telegram WebApp to be ready\n    this.telegramService.isReady$.subscribe(isReady => {\n      if (isReady) {\n        this.initializeTheme();\n      } else {\n        console.warn('themeService: Telegram WebApp is not available, using browser theme');\n        this.useSystemTheme = true;\n        this.setupBrowserThemeDetection();\n      }\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.cleanupListeners();\n  }\n\n  /**\n   * Change the theme manually\n   * @param theme The theme to set\n   * @param followSystem If true, will follow system theme changes after setting. Default false.\n   */\n  public setTheme(theme: AppearanceType, followSystem = false): void {\n    this.cleanupListeners();\n    this.appearance.set(theme);\n    this.applyThemeToDOM(theme);\n    \n    // If instructed to follow system theme, restore the detector\n    if (followSystem) {\n      this.useSystemTheme = true;\n      this.setupBrowserThemeDetection();\n    } else {\n      this.useSystemTheme = false;\n    }\n  }\n\n  /**\n   * Setup theme based on inputs and system preferences\n   * @param appearance Appearance to use\n   * @param followSystem Whether to follow system theme\n   */\n  public setupTheme(appearance?: AppearanceType, followSystem: boolean = false): void {\n    this.cleanupListeners();\n    if (followSystem) {\n      // Follow system theme\n      this.useSystemTheme = true;\n      this.setupBrowserThemeDetection();\n    } else if (appearance) {\n      // Set specific theme\n      this.setTheme(appearance, false);\n    } else {\n      // If nothing specified, try to detect system theme\n      this.detectSystemTheme();\n    }\n  }\n\n  /**\n   * Detect and apply system theme\n   */\n  public detectSystemTheme(): void {\n    if (typeof window === 'undefined') {\n      // Use light theme by default\n      this.setTheme('light', false);\n      return;\n    }\n    \n    const prefersDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;\n    this.setTheme(prefersDarkMode ? 'dark' : 'light', false);\n  }\n\n  /**\n   * Load global CSS variables to make them available for all components\n   */\n  public loadGlobalStyles(): void {\n    // Check if styles are already loaded\n    if (this.document.getElementById('tgui-variables-css')) {\n      return;\n    }\n    \n    const head = this.document.head;\n    const link = this.document.createElement('link');\n    \n    link.id = 'tgui-variables-css';\n    link.rel = 'stylesheet';\n    link.type = 'text/css';\n    \n    // Add error handling\n    link.onerror = () => {\n      console.error('Failed to load TGUI variables CSS file. Theme functionality may be limited.');\n    };\n    \n    // In production builds, this will be replaced with the actual path\n    // The actual file is bundled with the library during build\n    link.href = 'assets/tgui/styles/variables.css';\n    \n    head.appendChild(link);\n  }\n\n  /**\n   * Initialize the theme detection\n   */\n  private initializeTheme(): void {\n    // First check Telegram API\n    const telegramData = this.telegramService.getTelegramData();\n    \n    if (telegramData) {\n      // Use Telegram theme\n      this.appearance.set(telegramData.colorScheme);\n      this.applyThemeToDOM(telegramData.colorScheme);\n      \n      // Set up listener for theme changes\n      this.themeChangeListener = () => {\n        const newTelegramData = this.telegramService.getTelegramData();\n        if (newTelegramData) {\n          this.appearance.set(newTelegramData.colorScheme);\n          this.applyThemeToDOM(newTelegramData.colorScheme);\n        }\n      };\n      \n      telegramData.onEvent('themeChanged', this.themeChangeListener);\n    } else {\n      // Use browser preference\n      this.useSystemTheme = true;\n      this.setupBrowserThemeDetection();\n    }\n  }\n\n  /**\n   * Setup browser theme detection using prefers-color-scheme\n   */\n  private setupBrowserThemeDetection(): void {\n    if (typeof window === 'undefined') return;\n    \n    const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)');\n    this.mediaQueryList = isDarkMode;\n    \n    // Apply theme based on system preference only if following system theme\n    if (this.useSystemTheme) {\n      const theme: AppearanceType = isDarkMode.matches ? 'dark' : 'light';\n      this.appearance.set(theme);\n      this.applyThemeToDOM(theme);\n    }\n    \n    // Add listener for theme changes and store reference to the handler\n    this.handleThemeChange = (event: MediaQueryListEvent) => {\n      if (this.useSystemTheme) {\n        const newTheme: AppearanceType = event.matches ? 'dark' : 'light';\n        this.appearance.set(newTheme);\n        this.applyThemeToDOM(newTheme);\n      }\n    };\n    \n    isDarkMode.addEventListener('change', this.handleThemeChange);\n    \n    // Store reference for cleanup\n    this.mediaQueryList = isDarkMode;\n  }\n\n  /**\n   * Apply theme class to DOM\n   */\n  private applyThemeToDOM(theme: AppearanceType): void {\n\n    if (theme === this.currentTheme) {\n      if(theme === 'dark') {\n        this.renderer.removeClass(this.document.documentElement, `tgui-theme-light`);\n      } else {\n        this.renderer.removeClass(this.document.documentElement, `tgui-theme-dark`);\n      }\n      return;\n    };\n    \n    // Remove existing theme classes\n    this.renderer.removeClass(this.document.documentElement, `tgui-theme-${this.currentTheme}`);\n\n    // Add the appropriate theme class\n    this.renderer.addClass(this.document.documentElement, `tgui-theme-${theme}`);\n    \n    // Update current theme\n    this.currentTheme = theme;\n  }\n\n  /**\n   * Clean up event listeners\n   */\n  private cleanupListeners(): void {\n    // Clean up Telegram listeners\n    const telegramData = this.telegramService.getTelegramData();\n    if (telegramData && this.themeChangeListener) {\n      telegramData.offEvent('theme_changed', this.themeChangeListener);\n      this.themeChangeListener = null;\n    }\n    \n    // Clean up media query listeners using stored reference\n    if (this.mediaQueryList && this.handleThemeChange) {\n      this.mediaQueryList.removeEventListener('change', this.handleThemeChange);\n      this.mediaQueryList = null;\n      this.handleThemeChange = null;\n    }\n  }\n} ","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, signal, inject } from '@angular/core';\nimport { TelegramService } from './telegram.service';\n\nexport type PlatformType = 'base' | 'ios';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PlatformService {\n  // Signal for platform that components can subscribe to\n  public platform = signal<PlatformType>('base');\n  \n  // Cached value for checking iOS platform\n  private _isIOSPlatform: boolean | null = null;\n\n  private document = inject(DOCUMENT);\n\n  constructor() {\n    this.detectPlatform();\n  }\n\n  /**\n   * Set platform manually\n   */\n  public setPlatform(platform: PlatformType): void {\n    this.platform.set(platform);\n    this.applyPlatformToDOM(platform);\n    // Update cached value\n    this._isIOSPlatform = platform === 'ios';\n  }\n  \n  /**\n   * Checks if current platform is iOS\n   * Uses DOM class to determine platform, caches result for better performance\n   */\n  public isIOS(): boolean {\n    // If value is already cached, return it\n    if (this._isIOSPlatform !== null) {\n      return this._isIOSPlatform;\n    }\n    \n    // Otherwise check for iOS class in DOM\n    if (this.document && this.document.documentElement) {\n      this._isIOSPlatform = this.document.documentElement.classList.contains('tgui-platform-ios');\n      return this._isIOSPlatform;\n    }\n    \n    // If unable to determine, return false\n    return false;\n  }\n\n  /**\n   * Detect platform based on user agent\n   */\n  private detectPlatform(): void {\n    const isIOS = this.detectIOSFromUserAgent();\n    const detectedPlatform: PlatformType = isIOS ? 'ios' : 'base';\n    \n    this.platform.set(detectedPlatform);\n    this.applyPlatformToDOM(detectedPlatform);\n    // Cache result\n    this._isIOSPlatform = isIOS;\n  }\n\n  /**\n   * Apply platform class to DOM\n   */\n  private applyPlatformToDOM(platform: PlatformType): void {\n    // Remove existing platform classes\n    this.document.documentElement.classList.remove('tgui-platform-base', 'tgui-platform-ios');\n    \n    // Add the appropriate platform class\n    this.document.documentElement.classList.add(`tgui-platform-${platform}`);\n  }\n\n  /**\n   * Check if the device is iOS based on user agent\n   */\n  private detectIOSFromUserAgent(): boolean {\n    if (typeof window === 'undefined' || !window.navigator) {\n      return false;\n    }\n\n    const userAgent = window.navigator.userAgent.toLowerCase();\n    \n    return /iphone|ipad|ipod/.test(userAgent) || \n           (userAgent.includes('mac') && 'ontouchend' in document);\n  }\n} ","import { Injectable, ElementRef, signal, computed } from '@angular/core';\n\n/**\n * Service for managing portal container references\n * Provides functionality for components to render content outside of their DOM hierarchy\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class PortalService {\n  // Signal to store the portal container reference\n  private readonly portalContainerRef = signal<ElementRef<HTMLElement> | null>(null);\n\n  // Public readonly signal for accessing the portal container\n  public readonly portalContainer = this.portalContainerRef.asReadonly();\n  \n  // Computed signal to check if portal container is available\n  public readonly hasPortalContainer = computed(() => !!this.portalContainer());\n  \n  constructor() {\n    console.log('PortalService initialized');\n  }\n  \n  /**\n   * Set the portal container reference\n   * This is typically called by the TGUIRootComponent\n   */\n  public setPortalContainer(elementRef: ElementRef<HTMLElement>): void {\n    if (!elementRef || !elementRef.nativeElement) {\n      console.error('Invalid portal container provided to PortalService');\n      return;\n    }\n    \n    console.log('Setting portal container:', elementRef.nativeElement);\n    this.portalContainerRef.set(elementRef);\n  }\n  \n  /**\n   * Clear the portal container reference\n   * This should be called when the container is destroyed\n   */\n  public clearPortalContainer(): void {\n    console.log('Clearing portal container reference');\n    this.portalContainerRef.set(null);\n  }\n  \n  /**\n   * Get the current portal container element\n   * Returns the native DOM element or null if not set\n   */\n  public getPortalContainerElement(): HTMLElement | null {\n    const container = this.portalContainer()?.nativeElement || null;\n    if (!container) {\n      console.warn('Portal container not available - make sure tgui-root component is properly set up');\n    }\n    return container;\n  }\n  \n  /**\n   * Check if portal container is ready for use\n   */\n  public isPortalReady(): boolean {\n    const isReady = !!this.getPortalContainerElement();\n    console.log('Portal ready status:', isReady);\n    return isReady;\n  }\n} ","import { Injectable, signal } from '@angular/core';\n\nexport interface RippleWave {\n  x: number;\n  y: number;\n  date: number;\n  pointerId: number;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class RippleService {\n  private RIPPLE_DELAY = 70;\n  private WAVE_LIVE = 225;\n\n  /**\n   * Map to track pointer delay timers by pointerId\n   */\n  private pointerDelayTimers = new Map<number, ReturnType<typeof setTimeout>>();\n  \n  /**\n   * Add a new ripple wave effect at the specified coordinates\n   */\n  addWave(x: number, y: number, pointerId: number, currentWaves: RippleWave[]): RippleWave[] {\n    const dateNow = Date.now();\n    // Filter out expired waves\n    const filteredWaves = currentWaves.filter((wave) => wave.date + this.WAVE_LIVE > dateNow);\n\n    // Add the new wave\n    const newWaves = [\n      ...filteredWaves,\n      {\n        x,\n        y,\n        date: dateNow,\n        pointerId,\n      }\n    ];\n\n    // Clean up the timer for this pointerId\n    this.pointerDelayTimers.delete(pointerId);\n    \n    return newWaves;\n  }\n\n  /**\n   * Handle pointer down event\n   * @param event Pointer event\n   * @param wavesSignal Signal for managing waves\n   */\n  handlePointerDown(event: PointerEvent, wavesSignal: ReturnType<typeof signal<RippleWave[]>>): void {\n    const rect = (event.currentTarget as HTMLElement).getBoundingClientRect();\n    const x = event.clientX - rect.left;\n    const y = event.clientY - rect.top;\n\n    // Set a timeout to create the ripple effect after a short delay\n    this.pointerDelayTimers.set(\n      event.pointerId,\n      setTimeout(() => {\n        const newWaves = this.addWave(x, y, event.pointerId, wavesSignal());\n        wavesSignal.set(newWaves);\n        \n        // Clear the waves after they've completed their animation\n        setTimeout(() => {\n          wavesSignal.set([]);\n        }, this.WAVE_LIVE);\n      }, this.RIPPLE_DELAY)\n    );\n  }\n\n  /**\n   * Handle pointer cancel/up event\n   */\n  handlePointerCancel(pointerId: number): void {\n    const timer = this.pointerDelayTimers.get(pointerId);\n    if (timer) {\n      clearTimeout(timer);\n      this.pointerDelayTimers.delete(pointerId);\n    }\n  }\n} ","/**\n * Helper functions for managing TGUI themes\n */\n\nimport { Injectable, OnDestroy, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AppearanceType } from '../services/theme.service';\n\n/**\n * Apply the specified theme by adding the appropriate CSS class to the document's root element\n * @param theme The theme to apply ('light' or 'dark')\n */\nexport function applyTheme(theme: AppearanceType): void {\n  // Remove existing theme classes\n  document.documentElement.classList.remove('tgui-theme-light', 'tgui-theme-dark');\n  \n  // Add the appropriate theme class\n  document.documentElement.classList.add(`tgui-theme-${theme}`);\n}\n\n/**\n * Setup system theme detection using prefers-color-scheme\n * @param callback Optional callback function that will be called when the theme changes\n * @returns A function to cleanup the listeners\n */\nexport function setupSystemThemeDetection(callback?: (theme: AppearanceType) => void): () => void {\n  if (typeof window === 'undefined') return () => {};\n  \n  const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)');\n  \n  // Apply initial theme based on system preference\n  const initialTheme: AppearanceType = isDarkMode.matches ? 'dark' : 'light';\n  applyTheme(initialTheme);\n  callback?.(initialTheme);\n  \n  // Add listener for theme changes\n  const handleThemeChange = (event: MediaQueryListEvent) => {\n    const newTheme: AppearanceType = event.matches ? 'dark' : 'light';\n    applyTheme(newTheme);\n    callback?.(newTheme);\n  };\n  \n  isDarkMode.addEventListener('change', handleThemeChange);\n  \n  // Return cleanup function\n  return () => {\n    isDarkMode.removeEventListener('change', handleThemeChange);\n  };\n}\n\n/**\n * Angular service for using system themes\n * Uses signals to track theme changes\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class SystemThemeService implements OnDestroy {\n  // Signal for theme with initial value\n  private readonly themeSignal = signal<AppearanceType>(this.getInitialTheme());\n  \n  // Public readonly signal for theme access\n  public readonly theme = this.themeSignal.asReadonly();\n  \n  private cleanup: (() => void) | null = null;\n  \n  constructor() {\n    this.setupThemeDetection();\n  }\n  \n  // Set theme manually\n  setTheme(theme: AppearanceType): void {\n    this.themeSignal.set(theme);\n    applyTheme(theme);\n  }\n  \n  // Enable system theme tracking\n  enableSystemTheme(): void {\n    this.cleanup && this.cleanup();\n    this.setupThemeDetection();\n  }\n  \n  // Disable system theme tracking\n  disableSystemTheme(): void {\n    this.cleanup && this.cleanup();\n    this.cleanup = null;\n  }\n  \n  ngOnDestroy(): void {\n    this.cleanup && this.cleanup();\n  }\n  \n  private getInitialTheme(): AppearanceType {\n    if (typeof window === 'undefined') return 'light';\n    \n    const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)');\n    return isDarkMode.matches ? 'dark' : 'light';\n  }\n  \n  private setupThemeDetection(): void {\n    if (typeof window === 'undefined') return;\n    \n    const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n    \n    // Set initial theme\n    const initialTheme: AppearanceType = mediaQuery.matches ? 'dark' : 'light';\n    this.themeSignal.set(initialTheme);\n    applyTheme(initialTheme);\n    \n    // Create media query change event handler\n    const handleMediaQueryChange = (event: MediaQueryListEvent) => {\n      const newTheme: AppearanceType = event.matches ? 'dark' : 'light';\n      this.themeSignal.set(newTheme);\n      applyTheme(newTheme);\n    };\n    \n    // Add event listener\n    mediaQuery.addEventListener('change', handleMediaQueryChange);\n    \n    // Cleanup function\n    this.cleanup = () => {\n      mediaQuery.removeEventListener('change', handleMediaQueryChange);\n    };\n  }\n} ","/**\n * Checks if a node exists\n * \n * This utility function checks if a passed value can be rendered as a React-like node.\n * It verifies if the value is not null, not undefined, and is either a primitive or a complex object.\n * \n * @param node The node to check\n * @returns True if the node exists and can be rendered\n */\nexport function hasNode(node: any): boolean {\n  return (\n    node !== null &&\n    node !== undefined &&\n    (typeof node !== 'boolean' || node === true)\n  );\n} ","/**\n * Utility function to combine CSS class names with conditional logic.\n * Similar to the classnames library in React ecosystem.\n * \n * @param classes A list of class names, objects where keys are class names and values are booleans,\n * or falsy values (which will be ignored)\n * @returns A string of space-separated class names\n */\nexport function classNames(...classes: (string | Record<string, boolean> | null | undefined | false)[]): string {\n  const result: string[] = [];\n\n  for (const cls of classes) {\n    if (!cls) continue;\n    \n    if (typeof cls === 'string') {\n      result.push(cls);\n    } else if (typeof cls === 'object') {\n      for (const [key, value] of Object.entries(cls)) {\n        if (value) {\n          result.push(key);\n        }\n      }\n    }\n  }\n\n  return result.join(' ');\n} ","/**\n * Utility function to call multiple event handlers\n * Similar to the callMultiple function in the React version\n * \n * @param handlers List of event handlers to call\n * @returns A function that calls all handlers with the same arguments\n */\nexport function callMultiple<T = any>(...handlers: Array<((e: T) => void) | undefined>): (e: T) => void {\n  return (e: T) => {\n    handlers.forEach((handler) => {\n      if (typeof handler === 'function') {\n        handler(e);\n      }\n    });\n  };\n} ","/**\n * Creates chunks of the given array with specified size\n * @param array The array to create chunks from\n * @param chunkSize The size of each chunk\n * @returns An array of chunks\n */\nexport function createChunks<T>(array: T[], chunkSize: number): T[][] {\n  const result: T[][] = [];\n  \n  for (let i = 0; i < array.length; i += chunkSize) {\n    result.push(array.slice(i, i + chunkSize));\n  }\n  \n  return result;\n} ","import { Directive, ElementRef, OnInit, Renderer2, inject } from '@angular/core';\n\n/**\n * Directive that automatically loads the TGUI styles\n * This should be applied once on a root element (typically body or app-root)\n */\n@Directive({\n  selector: '[tguiTheme]',\n  standalone: true,\n})\nexport class ThemeDirective implements OnInit {\n  // CSS file path - this will be loaded from assets in the actual build\n  private stylesPath = 'assets/tgui/styles/variables.css';\n  \n  private el = inject(ElementRef);\n  private renderer = inject(Renderer2);\n\n  ngOnInit(): void {\n    this.loadStyles();\n  }\n\n  private loadStyles(): void {\n    const head = document.head;\n    const link = document.createElement('link');\n    \n    link.rel = 'stylesheet';\n    link.type = 'text/css';\n    link.href = this.stylesPath;\n    \n    head.appendChild(link);\n  }\n} ","import { Directive, Input, TemplateRef, ViewContainerRef, OnInit, OnDestroy, ElementRef, EmbeddedViewRef, inject, effect } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { PortalService } from '../services';\n\n/**\n * Directive that renders content into a portal container\n * Use it to project content outside of its normal DOM hierarchy\n */\n@Directive({\n  selector: '[tguiPortalOutlet]',\n  standalone: true\n})\nexport class PortalOutletDirective implements OnInit, OnDestroy {\n  @Input() tguiPortalOutlet: TemplateRef<any> | null = null;\n  \n  private destroy$ = new Subject<void>();\n  \n  private viewContainerRef = inject(ViewContainerRef);\n  private portalService = inject(PortalService);\n  \n  constructor() {\n    effect(() => {\n      const container = this.portalService.portalContainer();\n      \n      // Skip rendering if we're not initialized yet\n      if (!this.tguiPortalOutlet) return;\n      \n      // Clear existing content\n      this.viewContainerRef.clear();\n      \n      // Only render if we have both a container and a template\n      if (container && this.tguiPortalOutlet) {\n        const embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.tguiPortalOutlet) as EmbeddedViewRef<any>;\n        \n        // Move the generated content to the portal container\n        const viewRootNodes = embeddedViewRef.rootNodes || [];\n        viewRootNodes.forEach((node: Node) => {\n          container.nativeElement.appendChild(node);\n        });\n      }\n    });\n  }\n  \n  ngOnInit(): void {\n    // Initialization is now handled in the effect\n  }\n  \n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n} ","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n  selector: '[tguiHorizontalScroll]',\n  standalone: true\n})\nexport class HorizontalScrollDirective {\n  @HostBinding('style.display') display = 'flex';\n  @HostBinding('style.overflow-x') overflowX = 'scroll';\n  @HostBinding('style.-webkit-overflow-scrolling') webkitOverflowScrolling = 'touch';\n  @HostBinding('style.scrollbar-width') scrollbarWidth = 'none';        // Firefox\n  @HostBinding('style.-ms-overflow-style') msOverflowStyle = 'none';    // IE/Edge\n  @HostBinding('class.tgui-hide-scrollbar') hideScrollbar = true;       // Chrome/Safari\n}","import { Directive, ElementRef, OnInit } from '@angular/core';\n\n/**\n * Directive that visually hides an element while keeping it accessible for screen readers.\n * Used for improving accessibility by providing context for screen reader users\n * without affecting the visual presentation.\n */\n@Directive({\n  selector: '[tguiVisuallyHidden]',\n  standalone: true\n})\nexport class VisuallyHiddenDirective implements OnInit {\n  constructor(private el: ElementRef<HTMLElement>) {}\n\n  ngOnInit(): void {\n    const element = this.el.nativeElement;\n    element.style.position = 'absolute';\n    element.style.blockSize = '1px';\n    element.style.inlineSize = '1px';\n    element.style.padding = '0';\n    element.style.margin = '-1px';\n    element.style.whiteSpace = 'nowrap';\n    element.style.clip = 'rect(0, 0, 0, 0)';\n    element.style.clipPath = 'inset(50%)';\n    element.style.overflow = 'hidden';\n    element.style.border = '0';\n    element.style.opacity = '0';\n  }\n} ","import { Component, ChangeDetectionStrategy, ViewEncapsulation, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport type { RippleWave } from '../../../../../services';\n\n@Component({\n  selector: 'tgui-ripple',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <span \n      class=\"ripple-wrapper\" \n      aria-hidden=\"true\"\n    >\n      <span \n        *ngFor=\"let wave of waves()\" \n        class=\"ripple-wave\"\n        [style.top.px]=\"wave.y\"\n        [style.left.px]=\"wave.x\"\n        [attr.data-id]=\"wave.pointerId\"\n      ></span>\n    </span>\n  `,\n  styles: [`\n    :host {\n      display: block;\n      position: absolute;\n      width: 100%;\n      height: 100%;\n      top: 0;\n      left: 0;\n      pointer-events: none;\n      overflow: hidden;\n    }\n    \n    .ripple-wrapper {\n      display: block;\n      overflow: hidden;\n      position: absolute;\n      inset: 0;\n      border-radius: inherit;\n      transition: background-color .15s ease-out;\n      pointer-events: none;\n      width: 100%;\n      height: 100%;\n    }\n\n    .ripple-wave {\n      content: '';\n      position: absolute;\n      height: 30px;\n      width: 30px;\n      margin: -15px 0;\n      border-radius: 50%;\n      background: var(--tgui--outline);\n      animation: waveRise .3s cubic-bezier(.3, .3, .5, 1);\n      opacity: 0;\n    }\n\n    @keyframes waveRise {\n      0% {\n        transform: scale(1);\n        opacity: 1;\n      }\n\n      30% {\n        opacity: 1;\n      }\n\n      100% {\n        transform: scale(20);\n        opacity: 0;\n      }\n    }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RippleComponent {\n  /**\n   * The collection of active ripple waves\n   */\n  waves = input<RippleWave[]>([]);\n} ","import {\n  Component,\n  Input,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  OnInit,\n  OnDestroy,\n  OnChanges,\n  SimpleChanges,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  signal,\n  inject,\n  effect,\n  Signal,\n  input,\n  computed\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PlatformService, RippleService, RippleWave } from '../../../services';\nimport { RippleComponent } from './components/ripple/ripple.component';\n\n@Component({\n  selector: 'tgui-tappable',\n  standalone: true,\n  imports: [CommonModule, RippleComponent],\n  template: `\n    <tgui-ripple *ngIf=\"hasRippleEffect()\" [waves]=\"rippleWaves()\"></tgui-ripple>\n    <ng-content></ng-content>\n  `,\n  styles: [`\n    :host {\n      position: relative;\n      isolation: isolate;\n      cursor: pointer;\n      display: block;\n      touch-action: manipulation;\n      border-radius: inherit;\n      overflow: hidden;\n      user-select: none;\n    }\n\n    :host::after {\n      content: '';\n      position: absolute;\n      inset: 0;\n      opacity: 0;\n      transition: opacity .15s ease-out;\n      background: var(--tgui--bg_color);\n      border-radius: inherit;\n      pointer-events: none;\n    }\n\n    :host.readonly {\n      cursor: default;\n      pointer-events: none;\n    }\n\n    :host.disabled {\n      cursor: default;\n      opacity: .35;\n      pointer-events: none;\n    }\n\n    /* iOS disables ::after overlay by default */\n    :host.platform-ios::after {\n      content: unset;\n    }\n    \n    /* iOS uses direct opacity for hover (like original React) */\n    :host.platform-ios:hover {\n      opacity: .85;\n    }\n\n    /* iOS uses direct opacity for active (like original React) */\n    :host.platform-ios.is-active {\n      opacity: .65;\n    }\n\n    /* Non-iOS platforms use ::after overlay on active */\n    :host:not(.platform-ios).is-active::after {\n      opacity: var(--tgui--button--hovered-opacity, .15);\n    }\n\n    @media (hover: hover) and (pointer: fine) {\n      /* Hover effect uses ::after overlay for all platforms */\n      :host:hover::after {\n        opacity: var(--tgui--button--hovered-opacity, .07);      }\n    }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TappableComponent implements OnInit {\n  /** Animation type for clicks */\n  interactiveAnimation = input<'opacity' | 'background'>('background');\n  \n  /** Make component read-only */\n  readonly = input<boolean>(false);\n  \n  /** Disable component */\n  disabled = input<boolean>(false);\n\n  /** Ripple effect waves */\n  rippleWaves = signal<RippleWave[]>([]);\n\n  /** Active state signal for programmatic control */\n  private isActiveState = signal<boolean>(false);\n\n  /** Service injections */\n  private rippleService = inject(RippleService);\n  private platformService = inject(PlatformService);\n\n  /** Platform signal */\n  private platformSignal = this.platformService.platform;\n\n  /** Computed values */\n  private isIOS = computed(() => {\n    return this.platformSignal() === 'ios';\n  });\n  \n  private isReadOnlyState = computed(() => this.readonly() || this.disabled());\n\n  /** Computed ripple effect state */\n  hasRippleEffect = computed(() => \n    !this.isIOS() &&\n    this.interactiveAnimation() === 'background' &&\n    !this.isReadOnlyState()\n  );\n\n  constructor() {\n    // No need for explicit effect since we're using computed signals\n  }\n\n  ngOnInit(): void {\n    // Initialization is handled by computed signals\n  }\n\n  /**\n   * Pointerdown event handler\n   */\n  @HostListener('pointerdown', ['$event'])\n  onPointerDown(event: PointerEvent): void {\n    if (!this.isReadOnlyState()) {\n      // Set active state programmatically\n      this.isActiveState.set(true);\n      \n      // Handle ripple effect if needed\n      if (this.hasRippleEffect()) {\n        this.rippleService.handlePointerDown(event, this.rippleWaves);\n      }\n    }\n  }\n\n  /**\n   * Pointercancel/pointerup/pointerleave event handler\n   */\n  @HostListener('pointercancel', ['$event'])\n  @HostListener('pointerup', ['$event'])\n  @HostListener('pointerleave', ['$event'])\n  onPointerCancel(event: PointerEvent): void {\n    // Always remove active state\n    this.isActiveState.set(false);\n    \n    if (this.hasRippleEffect()) {\n      this.rippleService.handlePointerCancel(event.pointerId);\n    }\n  }\n\n  /** Host bindings */\n\n  @HostBinding('class.readonly')\n  get isReadonlyClass(): boolean {\n    return this.readonly();\n  }\n\n  @HostBinding('class.disabled')\n  get isDisabledClass(): boolean {\n    return this.disabled();\n  }\n\n  @HostBinding('class.tappable--opacity')\n  get isOpacityAnimation(): boolean {\n    return this.interactiveAnimation() === 'opacity' && !this.isIOS();\n  }\n\n  @HostBinding('class.platform-ios')\n  get isPlatformIOS(): boolean {\n    return this.isIOS();\n  }\n\n  @HostBinding('class.is-active')\n  get isActive(): boolean {\n    return this.isActiveState();\n  }\n\n  @HostBinding('attr.readonly')\n  get readonlyAttr() {\n    return this.readonly() ? '' : null;\n  }\n\n  @HostBinding('attr.disabled')\n  get disabledAttr() {\n    return this.disabled() ? '' : null;\n  }\n}","import { Component, Input, TemplateRef, ViewChild, ViewContainerRef, AfterViewInit, OnDestroy, ChangeDetectionStrategy, ViewEncapsulation, effect, inject, ChangeDetectorRef } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { PortalService } from '../../../services';\n\n/**\n * Component for rendering content in the portal container\n * Similar to RootRenderer in React version\n */\n@Component({\n  selector: 'tgui-root-portal',\n  template: `\n    <ng-template #contentTemplate>\n      <ng-content></ng-content>\n    </ng-template>\n  `,\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styles: [`\n    :host {\n      font-family: var(--tgui--font-family);\n    }\n    \n    :host::ng-deep * {\n      font-family: var(--tgui--font-family);\n    }\n  `],\n})\nexport class RootPortalComponent implements AfterViewInit, OnDestroy {\n  @ViewChild('contentTemplate', {static: true}) contentTemplate!: TemplateRef<any>;\n  \n  private destroy$ = new Subject<void>();\n  private viewRef: any = null;\n  private templateReady = false;\n  \n  private portalService = inject(PortalService);\n  private viewContainerRef = inject(ViewContainerRef);\n  private cdr = inject(ChangeDetectorRef);\n  \n  constructor() {\n    // Use effect to react to portal container changes\n    effect(() => {\n      const container = this.portalService.portalContainer();\n      \n      if (!this.templateReady || !this.contentTemplate) {\n        return;\n      }\n      \n      \n      // Clear previous view if it exists\n      if (this.viewRef) {\n        try {\n          this.viewContainerRef.remove(\n            this.viewContainerRef.indexOf(this.viewRef)\n          );\n        } catch (e) {\n          console.error('Error removing portal view:', e);\n        }\n        this.viewRef = null;\n      }\n      \n      if (container && container.nativeElement) {\n        \n        try {\n          // Create and insert view\n          this.viewRef = this.viewContainerRef.createEmbeddedView(this.contentTemplate);\n          this.cdr.detectChanges();\n          \n          // Move nodes to portal container\n          this.viewRef.rootNodes.forEach((node: Node) => {\n            // Apply font-family to top-level nodes if they're HTML elements\n            if (node instanceof HTMLElement) {\n              node.style.fontFamily = 'var(--tgui--font-family)';\n            }\n            container.nativeElement.appendChild(node);\n          });\n          \n        } catch (e) {\n          console.error('Error creating portal view:', e);\n        }\n      } else {\n        console.warn('No portal container available');\n      }\n    });\n  }\n  \n  ngAfterViewInit(): void {\n    \n    // Force immediate check to ensure template detection\n    this.cdr.detectChanges();\n    \n    // Mark template as ready to use in the effect\n    this.templateReady = true;\n    \n    // Force the effect to run again now that template is ready\n    setTimeout(() => {\n      const container = this.portalService.portalContainer();\n      // Even if container is the same object, this change\n      // will trigger the effect to run again\n      if (container) {\n        this.portalService.clearPortalContainer();\n        setTimeout(() => {\n          this.portalService.setPortalContainer(container);\n        }, 0);\n      }\n    }, 0);\n  }\n  \n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n    \n    // Clean up view\n    if (this.viewRef) {\n      try {\n        this.viewContainerRef.remove(\n          this.viewContainerRef.indexOf(this.viewRef)\n        );\n      } catch (e) {\n        console.error('Error cleaning up portal view:', e);\n      }\n    }\n  }\n} ","import { Component, OnInit, OnDestroy, ElementRef, ChangeDetectionStrategy, ViewEncapsulation, inject, InjectionToken, Renderer2, AfterViewInit, input, computed, effect } from '@angular/core';\n\nimport { DOCUMENT } from '@angular/common';\nimport { PortalService, PlatformService, ThemeService, PlatformType, AppearanceType  } from '../../../services';\n\n/**\n * Root component for the TGUI library\n * Provides theming, platform detection, and portal container functionality\n * Should be used at the root of your application\n */\n@Component({\n  selector: 'tgui-root',\n  template: '<ng-content></ng-content>',\n  styleUrls: ['./tgui-root.component.css'],\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'class': 'tgui-root-wrapper',\n    '[class.tgui-theme-light]': 'hostClasses().themeLight',\n    '[class.tgui-theme-dark]': 'hostClasses().themeDark',\n    '[class.tgui-platform-ios]': 'hostClasses().platformIos',\n    '[class.tgui-platform-base]': 'hostClasses().platformBase'\n  }\n})\nexport class RootComponent implements OnInit, OnDestroy, AfterViewInit {\n  /** Application platform, determined automatically if nothing passed */\n  platform = input<PlatformType>();\n  \n  /** Application appearance, determined automatically if nothing passed */\n  appearance = input<AppearanceType>();\n\n  /** Whether to follow system theme changes when appearance is set manually */\n  followSystemTheme = input<boolean>(false);\n\n  // Dependency injection through inject\n  private platformService = inject(PlatformService);\n  private portalService = inject(PortalService);\n  private elementRef = inject(ElementRef<HTMLElement>);\n  private themeService = inject(ThemeService);\n  private renderer = inject(Renderer2);\n  private document = inject(DOCUMENT);\n  private config = inject(TGUI_CONFIG, { optional: true }) as { \n    platform?: PlatformType;\n    appearance?: AppearanceType;\n    followSystemTheme?: boolean;\n  } | null;\n\n  private portalContainerEl: HTMLDivElement | null = null;\n\n  // Computed host classes based on current theme and platform\n  hostClasses = computed(() => {\n    const currentTheme = this.themeService.appearance();\n    const currentPlatform = this.platformService.platform();\n    \n    return {\n      themeLight: currentTheme === 'light',\n      themeDark: currentTheme === 'dark',\n      platformIos: currentPlatform === 'ios',\n      platformBase: currentPlatform === 'base'\n    };\n  });\n\n  constructor() {\n    // Effect to handle platform changes\n    effect(() => {\n      const platformToUse = this.platform() || this.config?.platform;\n      if (platformToUse) {\n        this.platformService.setPlatform(platformToUse);\n      }\n    });\n\n    // Effect to handle theme changes\n    effect(() => {\n      const appearanceToUse = this.appearance() || this.config?.appearance;\n      const followSystem = this.followSystemTheme() ?? this.config?.followSystemTheme ?? true;\n      this.themeService.setupTheme(appearanceToUse, followSystem);\n    });\n  }\n\n  ngOnInit(): void {\n    // Load global CSS variables\n    this.themeService.loadGlobalStyles();\n  }\n  \n  ngAfterViewInit(): void {\n    // Wait for DOM to be ready before setting up portal container\n    setTimeout(() => {\n      this.setupPortalContainer();\n    }, 0);\n  }\n\n  private setupPortalContainer(): void {\n    try {\n      // Create a dedicated div for portal content if it doesn't exist\n      if (!this.portalContainerEl) {\n        this.portalContainerEl = this.document.createElement('div');\n        this.portalContainerEl.className = 'tgui-portal-container';\n        this.renderer.appendChild(this.elementRef.nativeElement, this.portalContainerEl);\n      }\n      \n      // Create an ElementRef wrapping the portal container div\n      const portalElementRef = new ElementRef(this.portalContainerEl);\n      \n      // Register as portal container\n      this.portalService.setPortalContainer(portalElementRef);\n    } catch (e) {\n      console.error('Error setting up portal container:', e);\n    }\n  }\n\n  ngOnDestroy(): void {\n    // Clean up portal container reference\n    this.portalService.clearPortalContainer();\n    \n    // Remove the portal container element if it exists\n    if (this.portalContainerEl && this.portalContainerEl.parentNode) {\n      this.portalContainerEl.parentNode.removeChild(this.portalContainerEl);\n    }\n    \n  }\n}\n\n// Token for configuration injection\nexport const TGUI_CONFIG = new InjectionToken<{\n  platform?: PlatformType;\n  appearance?: AppearanceType;\n  followSystemTheme?: boolean;\n}>('TGUI_CONFIG');","import {\n  Component,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  ElementRef,\n  inject,\n  Renderer2,\n  HostListener,\n  signal,\n  computed,\n  input,\n  output,\n  OutputEmitterRef,\n  OnInit,\n  OnDestroy,\n  CUSTOM_ELEMENTS_SCHEMA\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Interface for a touch/gesture event\n */\nexport interface Gesture {\n  startX: number;\n  startY: number;\n  startT: Date;\n  duration: number;\n  isPressed: boolean;\n  isY: boolean;\n  isX: boolean;\n  isSlideX: boolean;\n  isSlideY: boolean;\n  isSlide: boolean;\n  clientX: number;\n  clientY: number;\n  shiftX: number;\n  shiftY: number;\n  shiftXAbs: number;\n  shiftYAbs: number;\n}\n\n/**\n * Custom touch event type combining MouseEvent and TouchEvent properties\n */\nexport interface CustomTouchEvent extends MouseEvent {\n  touches?: TouchList;\n  changedTouches?: TouchList;\n}\n\n/**\n * Touch event handler type\n */\nexport type TouchEventHandler = (e: TouchEvent) => void;\n\n/**\n * Touch event with gesture information\n */\nexport interface TouchEvent extends Gesture {\n  originalEvent: CustomTouchEvent;\n}\n\n/**\n * Component for handling touch and gesture events\n * \n * This component is ported from the VKUI library for convenient handling of pointer events\n * https://github.com/VKCOM/VKUI/blob/master/packages/vkui/src/components/Touch/Touch.tsx\n */\n@Component({\n  selector: 'tgui-touch',\n  standalone: true,\n  imports: [CommonModule],\n  template: `<ng-content></ng-content>`,\n  styles: [`\n    :host {\n      display: block;\n      position: relative;\n      touch-action: manipulation;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class TouchComponent implements OnInit, OnDestroy {\n  private elementRef = inject(ElementRef);\n  private renderer = inject(Renderer2);\n\n  // Input properties using Signal API\n  usePointerHover = input<boolean>(false);\n  useCapture = input<boolean>(false);\n  slideThreshold = input<number>(5);\n  noSlideClick = input<boolean>(false);\n  stopPropagation = input<boolean>(false);\n\n  // Output events using Signal API\n  onEnter = output<MouseEvent>();\n  onLeave = output<MouseEvent>();\n  onStart = output<TouchEvent>();\n  onStartX = output<TouchEvent>();\n  onStartY = output<TouchEvent>();\n  onMove = output<TouchEvent>();\n  onMoveX = output<TouchEvent>();\n  onMoveY = output<TouchEvent>();\n  onEnd = output<TouchEvent>();\n  onEndX = output<TouchEvent>();\n  onEndY = output<TouchEvent>();\n\n  // Internal state\n  private gesture = signal<Partial<Gesture> | null>(null);\n  private didSlide = signal(false);\n  private supportedEvents = this.getSupportedEvents();\n  private permanentUnlisteners: (() => void)[] = []; // Listeners that should persist throughout component lifecycle\n  private moveEndUnlisteners: (() => void)[] = []; // Listeners that should be removed after gesture end\n\n  /**\n   * Check if touch events are enabled in the browser\n   */\n  private touchEnabled(): boolean {\n    return typeof window !== 'undefined' && 'ontouchstart' in window;\n  }\n\n  /**\n   * Get supported events based on browser capabilities\n   */\n  private getSupportedEvents(): string[] {\n    if (this.touchEnabled()) {\n      return ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n    }\n    return ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\n  }\n\n  /**\n   * Initialize a gesture\n   */\n  private initGesture(startX: number, startY: number): Gesture {\n    return {\n      startX,\n      startY,\n      startT: new Date(),\n      duration: 0,\n      isPressed: true,\n      isY: false,\n      isX: false,\n      isSlideX: false,\n      isSlideY: false,\n      isSlide: false,\n      clientX: 0,\n      clientY: 0,\n      shiftX: 0,\n      shiftY: 0,\n      shiftXAbs: 0,\n      shiftYAbs: 0,\n    };\n  }\n\n  /**\n   * Get X coordinate from an event\n   */\n  private coordX(e: CustomTouchEvent): number {\n    if (e.clientX != null) {\n      return e.clientX;\n    }\n    return e.changedTouches?.[0]?.clientX || 0;\n  }\n\n  /**\n   * Get Y coordinate from an event\n   */\n  private coordY(e: CustomTouchEvent): number {\n    if (e.clientY != null) {\n      return e.clientY;\n    }\n    return e.changedTouches?.[0]?.clientY || 0;\n  }\n\n  ngOnInit(): void {\n    this.setupListeners();\n  }\n\n  ngOnDestroy(): void {\n    this.removeAllListeners();\n  }\n\n  /**\n   * Setup event listeners\n   */\n  private setupListeners(): void {\n    // Setup hover events if needed\n    if (this.usePointerHover()) {\n      this.addPermanentEventListener(\n        this.usePointerHover() ? 'pointerenter' : 'mouseenter',\n        (e: MouseEvent) => this.handleHoverEnter(e)\n      );\n      this.addPermanentEventListener(\n        this.usePointerHover() ? 'pointerleave' : 'mouseleave',\n        (e: MouseEvent) => this.handleHoverLeave(e)\n      );\n    }\n\n    // Setup touch/mouse start events\n    this.addPermanentEventListener(\n      this.supportedEvents[0],\n      (e: CustomTouchEvent) => this.handleStart(e)\n    );\n  }\n\n  /**\n   * Handle start of a touch/mouse interaction\n   */\n  private handleStart(e: CustomTouchEvent): void {\n    const newGesture = this.initGesture(this.coordX(e), this.coordY(e));\n    this.gesture.set(newGesture);\n\n    // Fire start events\n    this.handleGestureEvent(e, [\n      this.onStart,\n      this.onStartX,\n      this.onStartY\n    ]);\n\n    // Add move and end events\n    const targetElement = this.touchEnabled() \n      ? (e.target as HTMLElement) // Touch events fire on the initial target\n      : (window.document as any); // Mouse events need document-level capture\n\n    // Add move and end event listeners\n    this.addDocumentEventListeners(targetElement);\n  }\n\n  /**\n   * Add event listeners at document level for move and end events\n   */\n  private addDocumentEventListeners(target: HTMLElement | Document): void {\n    const moveListener = this.renderer.listen(\n      target,\n      this.supportedEvents[1],\n      (e: CustomTouchEvent) => this.handleMove(e)\n    );\n\n    const endListener = this.renderer.listen(\n      target,\n      this.supportedEvents[2],\n      (e: CustomTouchEvent) => this.handleEnd(e)\n    );\n\n    const cancelListener = this.renderer.listen(\n      target,\n      this.supportedEvents[3],\n      (e: CustomTouchEvent) => this.handleEnd(e)\n    );\n\n    this.moveEndUnlisteners.push(moveListener, endListener, cancelListener);\n  }\n\n  /**\n   * Handle move events\n   */\n  private handleMove(e: CustomTouchEvent): void {\n    const currentGesture = this.gesture();\n    \n    if (!currentGesture?.isPressed) {\n      return;\n    }\n\n    const { isPressed, isX, isY, startX = 0, startY = 0 } = currentGesture;\n\n    if (isPressed) {\n      const clientX = this.coordX(e);\n      const clientY = this.coordY(e);\n\n      // Calculate offsets\n      const shiftX = clientX - startX;\n      const shiftY = clientY - startY;\n\n      // Absolute offset values\n      const shiftXAbs = Math.abs(shiftX);\n      const shiftYAbs = Math.abs(shiftY);\n\n      // Check for multitouch - interrupt the gesture if detected\n      if (e.touches && e.touches.length > 1) {\n        this.handleEnd(e);\n        return;\n      }\n\n      // If direction not determined yet\n      if (!isX && !isY) {\n        const willBeX = shiftXAbs >= this.slideThreshold() && shiftXAbs > shiftYAbs;\n        const willBeY = shiftYAbs >= this.slideThreshold() && shiftYAbs > shiftXAbs;\n        const willBeSlidedX = willBeX && this.hasListeners(this.onMoveX) || this.hasListeners(this.onMove);\n        const willBeSlidedY = willBeY && this.hasListeners(this.onMoveY) || this.hasListeners(this.onMove);\n\n        // Update gesture state\n        this.gesture.update(g => {\n          if (!g) return g;\n          return {\n            ...g,\n            isY: willBeY,\n            isX: willBeX,\n            isSlideX: willBeSlidedX,\n            isSlideY: willBeSlidedY,\n            isSlide: willBeSlidedX || willBeSlidedY\n          };\n        });\n      }\n\n      const updatedGesture = this.gesture();\n      \n      if (updatedGesture?.isSlide) {\n        // Update gesture with new coordinates\n        this.gesture.update(g => {\n          if (!g) return g;\n          return {\n            ...g,\n            clientX,\n            clientY,\n            shiftX,\n            shiftY,\n            shiftXAbs,\n            shiftYAbs\n          };\n        });\n\n        // Fire move events\n        this.handleGestureEvent(e, [\n          this.onMove,\n          updatedGesture.isSlideX ? this.onMoveX : null,\n          updatedGesture.isSlideY ? this.onMoveY : null\n        ]);\n      }\n    }\n  }\n\n  /**\n   * Check if an output emitter has any listeners\n   */\n  private hasListeners(emitter: OutputEmitterRef<any>): boolean {\n    // In Angular, we can't directly check if an output has listeners\n    // So we'll make our best guess implementation\n    return true;\n  }\n\n  /**\n   * Handle end of interaction\n   */\n  private handleEnd(e: CustomTouchEvent): void {\n    const currentGesture = this.gesture();\n    const { isPressed, isSlide, isSlideX, isSlideY } = currentGesture || {};\n\n    if (isPressed) {\n      // Fire end events\n      this.handleGestureEvent(e, [\n        this.onEnd,\n        isSlideY ? this.onEndY : null,\n        isSlideX ? this.onEndX : null\n      ]);\n    }\n\n    // Track if slide occurred for click handling\n    if (this.touchEnabled() && isSlide) {\n      // If it's a touch device and touchmove was detected,\n      // the click event won't be triggered\n      this.didSlide.set(false);\n    } else {\n      this.didSlide.set(Boolean(isSlide));\n    }\n\n    // Reset gesture state\n    this.gesture.set({});\n\n    // If it was a touch event, simulate hover cancellation\n    if (this.touchEnabled() && this.hasListeners(this.onLeave)) {\n      this.onLeave.emit(e as MouseEvent);\n    }\n\n    // Remove document listeners for move and end events\n    this.removeMoveEndListeners();\n  }\n\n  /**\n   * Handle hover enter event\n   */\n  private handleHoverEnter(e: MouseEvent): void {\n    if (this.hasListeners(this.onEnter)) {\n      this.onEnter.emit(e);\n    }\n  }\n\n  /**\n   * Handle hover leave event\n   */\n  private handleHoverLeave(e: MouseEvent): void {\n    if (this.hasListeners(this.onLeave)) {\n      this.onLeave.emit(e);\n    }\n  }\n\n  /**\n   * Handle gesture events and emit to appropriate outputs\n   */\n  private handleGestureEvent(e: CustomTouchEvent, handlers: Array<OutputEmitterRef<TouchEvent> | null>): void {\n    if (this.stopPropagation()) {\n      e.stopPropagation();\n    }\n\n    handlers.forEach(emitter => {\n      if (!emitter || !this.hasListeners(emitter)) return;\n      \n      const currentGesture = this.gesture();\n      if (!currentGesture) return;\n      \n      const duration = Date.now() - (currentGesture.startT?.getTime() ?? 0);\n      \n      // Create a complete TouchEvent object with all required properties\n      const touchEvent: TouchEvent = {\n        startX: currentGesture.startX ?? 0,\n        startY: currentGesture.startY ?? 0,\n        startT: currentGesture.startT ?? new Date(),\n        duration,\n        isPressed: currentGesture.isPressed ?? false,\n        isY: currentGesture.isY ?? false,\n        isX: currentGesture.isX ?? false,\n        isSlideX: currentGesture.isSlideX ?? false,\n        isSlideY: currentGesture.isSlideY ?? false,\n        isSlide: currentGesture.isSlide ?? false,\n        clientX: currentGesture.clientX ?? 0,\n        clientY: currentGesture.clientY ?? 0,\n        shiftX: currentGesture.shiftX ?? 0,\n        shiftY: currentGesture.shiftY ?? 0,\n        shiftXAbs: currentGesture.shiftXAbs ?? 0,\n        shiftYAbs: currentGesture.shiftYAbs ?? 0,\n        originalEvent: e\n      };\n      \n      emitter.emit(touchEvent);\n    });\n  }\n\n  /**\n   * Add permanent event listeners to the host element\n   * These listeners remain active throughout the component lifecycle\n   */\n  private addPermanentEventListener(eventName: string, handler: (e: any) => void): void {\n    const unlistener = this.renderer.listen(\n      this.elementRef.nativeElement,\n      eventName,\n      (e: any) => handler(e)\n    );\n    this.permanentUnlisteners.push(unlistener);\n  }\n\n  /**\n   * Remove move and end event listeners\n   * These are cleaned up after every gesture completes\n   */\n  private removeMoveEndListeners(): void {\n    this.moveEndUnlisteners.forEach(unlisten => unlisten());\n    this.moveEndUnlisteners = [];\n  }\n\n  /**\n   * Remove all event listeners\n   * Called on component destruction\n   */\n  private removeAllListeners(): void {\n    this.removeMoveEndListeners();\n    this.permanentUnlisteners.forEach(unlisten => unlisten());\n    this.permanentUnlisteners = [];\n  }\n\n  /**\n   * Cancel the transition through nested links if a swipe was detected\n   */\n  @HostListener('click', ['$event'])\n  onClick(e: MouseEvent): void {\n    if (!this.didSlide()) {\n      return;\n    }\n\n    if (this.noSlideClick()) {\n      e.stopPropagation();\n      e.preventDefault();\n    }\n\n    this.didSlide.set(false);\n  }\n\n  /**\n   * Dragstart event handler\n   * Cancels the native browser behavior for nested links and images\n   */\n  @HostListener('dragstart', ['$event'])\n  onDragStart(e: DragEvent): void {\n    const target = e.target as HTMLElement;\n    if (target.tagName === 'A' || target.tagName === 'IMG') {\n      e.preventDefault();\n    }\n  }\n} ","import { \n  Component, \n  ChangeDetectionStrategy, \n  ViewEncapsulation, \n  inject, \n  AfterViewInit, \n  OnDestroy, \n  TemplateRef, \n  ViewChild, \n  ViewContainerRef \n} from '@angular/core';\nimport { PortalService } from '../../../services';\n\n/**\n * Component for rendering content in the portal container\n * Equivalent to RootRenderer in React version\n * Used for rendering content outside of normal DOM hierarchy (modals, popups, etc.)\n */\n@Component({\n  selector: 'tgui-root-renderer',\n  template: `\n    <ng-template #contentTemplate>\n      <ng-content></ng-content>\n    </ng-template>\n  `,\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.Emulated\n})\nexport class RootRendererComponent implements AfterViewInit, OnDestroy {\n  @ViewChild('contentTemplate', { static: true }) contentTemplate!: TemplateRef<any>;\n  \n  // Inject services\n  private portalService = inject(PortalService);\n  private viewContainerRef = inject(ViewContainerRef);\n  \n  // Track rendered view\n  private viewRef: any = null;\n  \n  constructor() {\n    // Portal container changes are handled in ngAfterViewInit\n  }\n  \n  ngAfterViewInit(): void {\n    // Get portal container\n    const portalContainer = this.portalService.getPortalContainerElement();\n    \n    // If no portal container, don't render\n    if (!portalContainer) {\n      return;\n    }\n    \n    // Create view from template\n    this.viewRef = this.viewContainerRef.createEmbeddedView(this.contentTemplate);\n    \n    // Move nodes to portal container\n    this.viewRef.rootNodes.forEach((node: Node) => {\n      portalContainer.appendChild(node);\n    });\n  }\n  \n  ngOnDestroy(): void {\n    // Clean up view on destroy\n    if (this.viewRef) {\n      try {\n        this.viewContainerRef.remove(\n          this.viewContainerRef.indexOf(this.viewRef)\n        );\n      } catch (e) {\n        console.error('Error cleaning up root renderer view:', e);\n      }\n    }\n  }\n} ","import { Component, ElementRef, Renderer2, OnInit, ViewEncapsulation, HostBinding, ChangeDetectionStrategy, inject, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * The Typography component is a versatile wrapper for text content, offering\n * customizable styling options such as weight, capitalization, and HTML tag. It's designed\n * to facilitate consistent text styling across your application, with support for customization\n * through inputs.\n */\n@Component({\n  selector: 'tgui-typography',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <ng-container *ngIf=\"!tag()\">\n      <ng-content></ng-content>\n    </ng-container>\n    <ng-container *ngIf=\"tag()\">\n      <ng-container [ngSwitch]=\"tag()\">\n        <h1 *ngSwitchCase=\"'h1'\" [class.plain]=\"plain()\" [class.caps]=\"caps()\" [class.weight-1]=\"weight() === '1'\" [class.weight-2]=\"weight() === '2'\" [class.weight-3]=\"weight() === '3'\">\n          <ng-content></ng-content>\n        </h1>\n        <h2 *ngSwitchCase=\"'h2'\" [class.plain]=\"plain()\" [class.caps]=\"caps()\" [class.weight-1]=\"weight() === '1'\" [class.weight-2]=\"weight() === '2'\" [class.weight-3]=\"weight() === '3'\">\n          <ng-content></ng-content>\n        </h2>\n        <h3 *ngSwitchCase=\"'h3'\" [class.plain]=\"plain()\" [class.caps]=\"caps()\" [class.weight-1]=\"weight() === '1'\" [class.weight-2]=\"weight() === '2'\" [class.weight-3]=\"weight() === '3'\">\n          <ng-content></ng-content>\n        </h3>\n        <h4 *ngSwitchCase=\"'h4'\" [class.plain]=\"plain()\" [class.caps]=\"caps()\" [class.weight-1]=\"weight() === '1'\" [class.weight-2]=\"weight() === '2'\" [class.weight-3]=\"weight() === '3'\">\n          <ng-content></ng-content>\n        </h4>\n        <h5 *ngSwitchCase=\"'h5'\" [class.plain]=\"plain()\" [class.caps]=\"caps()\" [class.weight-1]=\"weight() === '1'\" [class.weight-2]=\"weight() === '2'\" [class.weight-3]=\"weight() === '3'\">\n          <ng-content></ng-content>\n        </h5>\n        <h6 *ngSwitchCase=\"'h6'\" [class.plain]=\"plain()\" [class.caps]=\"caps()\" [class.weight-1]=\"weight() === '1'\" [class.weight-2]=\"weight() === '2'\" [class.weight-3]=\"weight() === '3'\">\n        222  \n        <ng-content></ng-content>\n        </h6>\n        <p *ngSwitchCase=\"'p'\" [class.plain]=\"plain()\" [class.caps]=\"caps()\" [class.weight-1]=\"weight() === '1'\" [class.weight-2]=\"weight() === '2'\" [class.weight-3]=\"weight() === '3'\">\n          <ng-content></ng-content>\n        </p>\n        <span *ngSwitchCase=\"'span'\" [class.plain]=\"plain()\" [class.caps]=\"caps()\" [class.weight-1]=\"weight() === '1'\" [class.weight-2]=\"weight() === '2'\" [class.weight-3]=\"weight() === '3'\">\n          <ng-content></ng-content>\n        </span>\n        <div *ngSwitchCase=\"'div'\" [class.plain]=\"plain()\" [class.caps]=\"caps()\" [class.weight-1]=\"weight() === '1'\" [class.weight-2]=\"weight() === '2'\" [class.weight-3]=\"weight() === '3'\">\n          <ng-content></ng-content>\n        </div>\n        <ng-container *ngSwitchDefault>\n          <span [class.plain]=\"plain()\" [class.caps]=\"caps()\" [class.weight-1]=\"weight() === '1'\" [class.weight-2]=\"weight() === '2'\" [class.weight-3]=\"weight() === '3'\">\n            <ng-content></ng-content>\n          </span>\n        </ng-container>\n      </ng-container>\n    </ng-container>\n  `,\n  styles: [`\n    :host {\n      font-family: var(--tgui--font-family);\n      display: inline-block;\n    }\n\n    :host.plain, .plain {\n      margin: 0;\n    }\n\n    :host.weight-1, .weight-1 {\n      font-weight: var(--tgui--font_weight--accent1);\n    }\n\n    :host.weight-2, .weight-2 {\n      font-weight: var(--tgui--font_weight--accent2);\n    }\n\n    :host.weight-3, .weight-3 {\n      font-weight: var(--tgui--font_weight--accent3);\n    }\n\n    :host.caps, .caps {\n      text-transform: uppercase;\n    }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TypographyComponent {\n  weight = input<'1' | '2' | '3'>('3');\n  caps = input<boolean>(false);\n  plain = input<boolean>(true);\n  tag = input<string | undefined>(undefined);\n\n  @HostBinding('class.plain') get isPlain() { return this.plain() && !this.tag(); }\n  @HostBinding('class.caps') get isCaps() { return this.caps() && !this.tag(); }\n  @HostBinding('class.weight-1') get isWeight1() { return this.weight() === '1' && !this.tag(); }\n  @HostBinding('class.weight-2') get isWeight2() { return this.weight() === '2' && !this.tag(); }\n  @HostBinding('class.weight-3') get isWeight3() { return this.weight() === '3' && !this.tag(); }\n} ","import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TypographyComponent } from '../typography.component';\n\n/**\n * The Caption component is a text wrapper that applies specific typographic styles,\n * based on the provided `level` prop. It's built on top of the Typography component,\n * ensuring consistent text styling across the application. It primarily serves for text\n * that acts as a small, descriptive label or annotation.\n */\n@Component({\n  selector: 'tgui-caption',\n  standalone: true,\n  imports: [CommonModule],\n  template: '<span><ng-content></ng-content></span>',\n  styles: [`\n    :host {\n      display: inline-block;\n    }\n    \n    :host.level-1 {\n      font-size: var(--tgui--caption1--font_size);\n      line-height: var(--tgui--caption1--line_height);\n    }\n    \n    :host.level-2 {\n      font-size: var(--tgui--caption2--font_size);\n      line-height: var(--tgui--caption2--line_height);\n    }\n    \n    :host.weight-1 {\n      font-weight: var(--tgui--font_weight--accent1);\n    }\n\n    :host.weight-2 {\n      font-weight: var(--tgui--font_weight--accent2);\n    }\n\n    :host.weight-3 {\n      font-weight: var(--tgui--font_weight--accent3);\n    }\n\n    :host.caps {\n      text-transform: uppercase;\n    }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CaptionComponent extends TypographyComponent {\n  /**\n   * The size level of the caption, influencing its styling and typography size.\n   */\n  level = input<'1' | '2'>('1');\n  \n  // Host bindings for CSS classes\n  override tag = input<string | undefined>('span');\n  \n  // Host bindings for level classes\n  @HostBinding('class.level-1') get isLevel1() { return this.level() === '1'; }\n  @HostBinding('class.level-2') get isLevel2() { return this.level() === '2'; }\n  \n  // Add host bindings for CSS classes of weights and other properties\n  @HostBinding('class.plain') override get isPlain() { return this.plain(); }\n  @HostBinding('class.caps') override get isCaps() { return this.caps(); }\n  @HostBinding('class.weight-1') override get isWeight1() { return this.weight() === '1'; }\n  @HostBinding('class.weight-2') override get isWeight2() { return this.weight() === '2'; }\n  @HostBinding('class.weight-3') override get isWeight3() { return this.weight() === '3'; }\n} ","import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TypographyComponent } from '../typography.component';\n\n/**\n * The Subheadline component is designed to render text that serves as a secondary heading\n * or subheading within content. It leverages the Typography component for consistent text styling,\n * offering additional control over the text's size through the `level` prop. By default, it renders\n * as an `<h6>` element but can be customized with the `tag` property.\n */\n@Component({\n  selector: 'tgui-subheadline',\n  standalone: true,\n  imports: [CommonModule],\n  template: '<ng-content></ng-content>',\n  styles: [`\n    :host {\n      display: inline-block;\n    }\n    \n    :host.level-1 {\n      font-size: var(--tgui--subheadline1--font_size);\n      line-height: var(--tgui--subheadline1--line_height);\n    }\n    \n    :host.level-2 {\n      font-size: var(--tgui--subheadline2--font_size);\n      line-height: var(--tgui--subheadline2--line_height);\n    }\n    \n    :host.weight-1 {\n      font-weight: var(--tgui--font_weight--accent1);\n    }\n\n    :host.weight-2 {\n      font-weight: var(--tgui--font_weight--accent2);\n    }\n\n    :host.weight-3 {\n      font-weight: var(--tgui--font_weight--accent3);\n    }\n\n    :host.caps {\n      text-transform: uppercase;\n    }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SubheadlineComponent extends TypographyComponent {\n  /**\n   * Determines the size of the subheadline, with `1` being the default and '2' providing a smaller option.\n   */\n  level = input<'1' | '2'>('1');\n  \n  // Override tag to use h6 by default\n  override tag = input<string | undefined>('h6');\n  \n  // Host bindings for level classes\n  @HostBinding('class.level-1') get isLevel1() { return this.level() === '1'; }\n  @HostBinding('class.level-2') get isLevel2() { return this.level() === '2'; }\n  \n  // Add host bindings for CSS weight classes and other properties\n  @HostBinding('class.plain') override get isPlain() { return this.plain(); }\n  @HostBinding('class.caps') override get isCaps() { return this.caps(); }\n  @HostBinding('class.weight-1') override get isWeight1() { return this.weight() === '1'; }\n  @HostBinding('class.weight-2') override get isWeight2() { return this.weight() === '2'; }\n  @HostBinding('class.weight-3') override get isWeight3() { return this.weight() === '3'; }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy, \n  HostBinding,\n  input\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CaptionComponent } from '../../typography/caption/caption.component';\nimport { SubheadlineComponent } from '../../typography/subheadline/subheadline.component';\n\nexport type BadgeType = 'number' | 'dot';\nexport type BadgeMode = 'primary' | 'critical' | 'secondary' | 'gray' | 'white';\n\n/**\n * Badge component displays a small numeric or dot indicator,\n * typically used for notifications, statuses, or counters.\n * Supports multiple visual modes for different contexts (e.g., critical, primary),\n * and can be regular or large size.\n */\n@Component({\n  selector: 'tgui-badge',\n  standalone: true,\n  imports: [CommonModule, CaptionComponent, SubheadlineComponent],\n  template: `\n    <ng-container *ngIf=\"isNumber\">\n      <ng-template #contentTemplate>\n        <ng-content></ng-content>\n      </ng-template>\n\n      <tgui-subheadline tag=\"span\" level=\"2\" weight=\"2\" *ngIf=\"large()\">\n        <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n      </tgui-subheadline>\n\n      <tgui-caption weight=\"2\" level=\"1\" *ngIf=\"!large()\">\n        <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n      </tgui-caption>\n    </ng-container>\n  `,\n  styles: [`\n    :host {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      box-sizing: border-box;\n      border-radius: 20px;\n      overflow: hidden;\n    }\n\n    /* Number type styles */\n    :host.type-number {\n      height: 20px;\n      min-width: 20px;\n      margin: 0 6px;\n      padding: 0 5px;\n    }\n\n    /* Large number badge */\n    :host.type-number.large {\n      height: 24px;\n      padding: 0 6px;\n      /* don't increase min-width, keep 20px as in React */\n    }\n\n    /* Dot type styles */\n    :host.type-dot {\n      display: inline-block;\n      width: 6px;\n      height: 6px;\n      margin: 7px;\n      border-radius: 50%;\n    }\n\n    /* Color modes */\n    :host.mode-primary {\n      color: var(--tgui--button_text_color);\n      background: var(--tgui--button_color);\n    }\n\n    :host.mode-critical {\n      color: var(--tgui--button_text_color);\n      background: var(--tgui--destructive_text_color);\n    }\n\n    :host.mode-secondary {\n      color: var(--tgui--link_color);\n      background: var(--tgui--secondary_fill);\n    }\n\n    :host.mode-gray {\n      color: var(--tgui--plain_foreground);\n      background: var(--tgui--plain_background);\n    }\n\n    :host.mode-white {\n      color: var(--tgui--link_color);\n      background: var(--tgui--white);\n    }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BadgeComponent {\n  /** Visual style of the badge: 'number' displays content, 'dot' shows a simple dot. */\n  type = input<BadgeType>('number');\n\n  /** Color scheme of the badge, affecting its background and text color. */\n  mode = input<BadgeMode>('primary');\n\n  /** Increases the badge size. Applied only when type='number'. */\n  large = input<boolean>(false);\n\n  // Host bindings for type\n  @HostBinding('class.type-number') get isNumber() { return this.type() === 'number'; }\n  @HostBinding('class.type-dot') get isDot() { return this.type() === 'dot'; }\n\n  // Host bindings for modes\n  @HostBinding('class.mode-primary') get isPrimary() { return this.mode() === 'primary'; }\n  @HostBinding('class.mode-critical') get isCritical() { return this.mode() === 'critical'; }\n  @HostBinding('class.mode-secondary') get isSecondary() { return this.mode() === 'secondary'; }\n  @HostBinding('class.mode-gray') get isGray() { return this.mode() === 'gray'; }\n  @HostBinding('class.mode-white') get isWhite() { return this.mode() === 'white'; }\n\n  // Host binding for size\n  @HostBinding('class.large') get isLarge() { return this.large() && this.type() === 'number'; }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input,\n  computed,\n  NO_ERRORS_SCHEMA\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n  selector: 'tgui-base-spinner',\n  standalone: true,\n  imports: [\n    CommonModule,\n  ],\n  schemas: [NO_ERRORS_SCHEMA],\n  template: `\n    <ng-container [ngSwitch]=\"size()\">\n    <svg *ngSwitchCase=\"'l'\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <use xlink:href=\"#spinner_44\" fill=\"none\">\n      <animateTransform\n              attributeName=\"transform\"\n              attributeType=\"XML\"\n              type=\"rotate\"\n              from=\"0 22 22\"\n              to=\"360 22 22\"\n              dur=\"0.7s\"\n              repeatCount=\"indefinite\"\n            />\n      </use>\n      <symbol xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 44 44\" id=\"spinner_44\">\n        <path\n          d=\"M22 4C25.1288 4 28.2036 4.81556 30.9211 6.36624C33.6386 7.91693 35.9049 10.1492 37.4967 12.8429C39.0884 15.5365 39.9505 18.5986 39.9979 21.727C40.0454 24.8555 39.2765 27.9423 37.7672 30.683C36.258 33.4237 34.0603 35.7236 31.3911 37.356C28.7219 38.9884 25.6733 39.8968 22.5459 39.9917C19.4185 40.0866 16.3204 39.3647 13.5571 37.8971C10.7939 36.4296 8.46085 34.2671 6.78817 31.6229\"\n          stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" />\n      </symbol>\n    </svg>\n\n      <svg *ngSwitchCase=\"'m'\" width=\"36\" height=\"36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <use xlink:href=\"#spinner_36\" fill=\"none\">\n          <animateTransform\n              attributeName=\"transform\"\n              attributeType=\"XML\"\n              type=\"rotate\"\n              from=\"0 18 18\"\n              to=\"360 18 18\"\n              dur=\"0.7s\"\n              repeatCount=\"indefinite\"\n            />\n        </use>\n        <symbol xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 36 36\" id=\"spinner_36\">\n          <path\n            d=\"M18 4c2.4335 0 4.825.63432 6.9386 1.84041S28.815 8.7827 30.053 10.8778c1.238 2.0951 1.9085 4.4766 1.9454 6.9099.0369 2.4332-.5611 4.8341-1.735 6.9657-1.1739 2.1317-2.8831 3.9205-4.9592 5.1902-2.0761 1.2696-4.4472 1.9762-6.8796 2.05-2.4324.0738-4.842-.4877-6.9913-1.6292-2.14918-1.1414-3.96375-2.8234-5.26472-4.8799\"\n            stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" />\n        </symbol>\n      </svg>\n\n      <svg *ngSwitchCase=\"'s'\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <use xlink:href=\"#spinner_24\" fill=\"none\">\n        <animateTransform\n              attributeName=\"transform\"\n              attributeType=\"XML\"\n              type=\"rotate\"\n              from=\"0 12 12\"\n              to=\"360 12 12\"\n              dur=\"0.7s\"\n              repeatCount=\"indefinite\"\n            />        </use>\n        <symbol xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" id=\"spinner_24\">\n          <path\n            d=\"M12 3c1.5644 0 3.1018.40778 4.4605 1.18312 1.3588.77535 2.492 1.89147 3.2878 3.23831.7959 1.34683 1.2269 2.87787 1.2507 4.44207.0237 1.5642-.3607 3.1076-1.1154 4.478-.7546 1.3703-1.8534 2.5203-3.188 3.3365-1.3347.8162-2.859 1.2704-4.4227 1.3179-1.5636.0474-3.11269-.3136-4.49433-1.0473-1.38163-.7338-2.54815-1.8151-3.38448-3.1371\"\n            stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" />\n        </symbol>\n      </svg>\n    </ng-container>\n  `,\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BaseSpinnerComponent {\n  size = input<'s' | 'm' | 'l'>('s');\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input, \n  computed\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n  selector: 'tgui-ios-spinner',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <ng-container [ngSwitch]=\"size()\">\n      <svg  *ngSwitchCase=\"'l'\" id=\"l151:1947\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" xmlns=\"http://www.w3.org/2000/svg\">\n        <g transform=\"matrix(1,0,0,1,0,0)\">\n          <g id=\"l151:1947\" opacity=\"1\" style='normal'>\n            <g>\n              <defs>\n                <clipPath id=\"l151:1947_clipPath\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n                  <path d=\"M0,0h44v0v44v0h-44v0v-44z\" fill=\"white\" clipRule=\"nonzero\" />\n                </clipPath>\n              </defs>\n              <g clipPath=\"url(#l151:1947_clipPath)\">\n                <g\n                  transform=\"matrix(-0.7071067811865475,-0.7071067811865476,0.7071067811865476,-0.7071067811865475,9.2715,37.5564)\">\n                  <g id=\"l151:1985\" opacity=\"0.837\" style='normal'>\n                    <g>\n                      <g>\n                        <path id=\"l151:1985_fill_path\"\n                          d=\"M2,0v0c1.10457,0 2,0.89543 2,2v10c0,1.10457 -0.89543,2 -2,2v0c-1.10457,0 -2,-0.89543 -2,-2v-10c0,-1.10457 0.89543,-2 2,-2z\"\n                          fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\"\n                          style='normal'\n                        />\n                      </g>\n                    </g>\n                  </g>\n                </g>\n                <g transform=\"matrix(1,0,0,1,20,29)\">\n                  <g id=\"l151:1980\" opacity=\"0.467\" style='normal'>\n                    <g>\n                      <g>\n                        <path id=\"l151:1980_fill_path\"\n                          d=\"M2,0v0c1.10457,0 2,0.89543 2,2v9c0,1.10457 -0.89543,2 -2,2v0c-1.10457,0 -2,-0.89543 -2,-2v-9c0,-1.10457 0.89543,-2 2,-2z\"\n                          fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\"\n                          style='normal' />\n                      </g>\n                    </g>\n                  </g>\n                </g>\n                <g\n                  transform=\"matrix(0.7071067811865476,-0.7071067811865475,0.7071067811865475,0.7071067811865476,24.8291,27.6569)\">\n                  <g id=\"l151:1982\" opacity=\"0.153\" style='normal'>\n                    <g>\n                      <g>\n                        <path id=\"l151:1982_fill_path\"\n                          d=\"M2,0v0c1.10457,0 2,0.89543 2,2v10c0,1.10457 -0.89543,2 -2,2v0c-1.10457,0 -2,-0.89543 -2,-2v-10c0,-1.10457 0.89543,-2 2,-2z\"\n                          fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\"\n                          style='normal' />\n                      </g>\n                    </g>\n                  </g>\n                </g>\n                <g transform=\"matrix(6.123233995736766e-17,-1,1,6.123233995736766e-17,29,24)\">\n                  <g id=\"l151:1984\" opacity=\"0.049\" style='normal'>\n                    <g>\n                      <g>\n                        <path id=\"l151:1984_fill_path\"\n                          d=\"M2,0v0c1.10457,0 2,0.89543 2,2v9c0,1.10457 -0.89543,2 -2,2v0c-1.10457,0 -2,-0.89543 -2,-2v-9c0,-1.10457 0.89543,-2 2,-2z\"\n                          fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\"\n                          style='normal' />\n                      </g>\n                    </g>\n                  </g>\n                </g>\n                <g\n                  transform=\"matrix(-0.7071067811865475,-0.7071067811865476,0.7071067811865476,-0.7071067811865475,27.6592,19.1716)\">\n                  <g id=\"l151:1986\" opacity=\"0.01\" style='normal'>\n                    <g>\n                      <g>\n                        <path id=\"l151:1986_fill_path\"\n                          d=\"M2,0v0c1.10457,0 2,0.89543 2,2v10c0,1.10457 -0.89543,2 -2,2v0c-1.10457,0 -2,-0.89543 -2,-2v-10c0,-1.10457 0.89543,-2 2,-2z\"\n                          fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\"\n                          style='normal' />\n                      </g>\n                    </g>\n                  </g>\n                </g>\n                <g transform=\"matrix(1,0,0,1,20,2)\">\n                  <g id=\"l151:1979\" opacity=\"0\" style='normal'>\n                    <g>\n                      <g>\n                        <path id=\"l151:1979_fill_path\"\n                          d=\"M2,0v0c1.10457,0 2,0.89543 2,2v9c0,1.10457 -0.89543,2 -2,2v0c-1.10457,0 -2,-0.89543 -2,-2v-9c0,-1.10457 0.89543,-2 2,-2z\"\n                          fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\"\n                          style='normal' />\n                      </g>\n                    </g>\n                  </g>\n                </g>\n                <g\n                  transform=\"matrix(0.7071067811865476,-0.7071067811865475,0.7071067811865475,0.7071067811865476,6.4473,9.2721)\">\n                  <g id=\"l151:1981\" opacity=\"0\" style='normal'>\n                    <g>\n                      <g>\n                        <path id=\"l151:1981_fill_path\"\n                          d=\"M2,0v0c1.10457,0 2,0.89543 2,2v10c0,1.10457 -0.89543,2 -2,2v0c-1.10457,0 -2,-0.89543 -2,-2v-10c0,-1.10457 0.89543,-2 2,-2z\"\n                          fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\"\n                          style='normal' />\n                      </g>\n                    </g>\n                  </g>\n                </g>\n                <g transform=\"matrix(6.123233995736766e-17,-1,1,6.123233995736766e-17,2,24)\">\n                  <g id=\"l151:1983\" opacity=\"1\" style='normal'>\n                    <g>\n                      <g>\n                        <path id=\"l151:1983_fill_path\"\n                          d=\"M2,0v0c1.10457,0 2,0.89543 2,2v9c0,1.10457 -0.89543,2 -2,2v0c-1.10457,0 -2,-0.89543 -2,-2v-9c0,-1.10457 0.89543,-2 2,-2z\"\n                          fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\"\n                          style='normal' />\n                      </g>\n                    </g>\n                  </g>\n                </g>\n              </g>\n            </g>\n          </g>\n        </g>\n        <animate href=\"#l151:1985\" attributeName=\"opacity\" values=\"0.837;0;1;0.8366;0;0\" dur=\"0.8s\" repeatCount=\"indefinite\"\n          calcMode=\"spline\" keyTimes=\"0;0.75;0.87;1;1;1\"\n          keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n          additive=\"replace\" fill=\"freeze\" />\n        <animate href=\"#l151:1980\" attributeName=\"opacity\" values=\"0.467;0;1;0.4669;0;0\" dur=\"0.8s\" repeatCount=\"indefinite\"\n          calcMode=\"spline\" keyTimes=\"0;0.63;0.75;1;1;1\"\n          keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n          additive=\"replace\" fill=\"freeze\" />\n        <animate href=\"#l151:1982\" attributeName=\"opacity\" values=\"0.153;0.05;1;0.1534;0;0\" dur=\"0.8s\"\n          repeatCount=\"indefinite\" calcMode=\"spline\" keyTimes=\"0;0.5;0.63;1;1;1\"\n          keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n          additive=\"replace\" fill=\"freeze\" />\n        <animate href=\"#l151:1984\" attributeName=\"opacity\" values=\"0.049;0;1;0.0493;0;0\" dur=\"0.8s\" repeatCount=\"indefinite\"\n          calcMode=\"spline\" keyTimes=\"0;0.37;0.5;1;1;1\"\n          keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n          additive=\"replace\" fill=\"freeze\" />\n        <animate href=\"#l151:1986\" attributeName=\"opacity\" values=\"0.01;0;1;0.0099;0;0\" dur=\"0.8s\" repeatCount=\"indefinite\"\n          calcMode=\"spline\" keyTimes=\"0;0.25;0.37;1;1;1\"\n          keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n          additive=\"replace\" fill=\"freeze\" />\n        <animate href=\"#l151:1979\" attributeName=\"opacity\" values=\"0;0;1;0\" dur=\"0.8s\" repeatCount=\"indefinite\"\n          calcMode=\"spline\" keyTimes=\"0;0.13;0.25;1\" keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n          additive=\"replace\" fill=\"freeze\" />\n        <animate href=\"#l151:1981\" attributeName=\"opacity\" values=\"0;1;0;0\" dur=\"0.8s\" repeatCount=\"indefinite\"\n          calcMode=\"spline\" keyTimes=\"0;0.13;0.89;1\" keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n          additive=\"replace\" fill=\"freeze\" />\n        <animate href=\"#l151:1983\" attributeName=\"opacity\" values=\"1;0;1\" dur=\"0.8s\" repeatCount=\"indefinite\"\n          calcMode=\"spline\" keyTimes=\"0;0.89;1\" keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1\" additive=\"replace\"\n          fill=\"freeze\" />\n      </svg>\n      <svg *ngSwitchCase=\"'m'\" xmlns=\"http://www.w3.org/2000/svg\" id=\"m151:1947\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\n  <g transform=\"matrix(1,0,0,1,0,0)\">\n    <g id=\"m151:1947\" opacity=\"1\" style='normal'>\n      <g>\n        <defs>\n          <clipPath id=\"m151:1947_clipPath\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n            <path d=\"M0,0h32v0v32v0h-32v0v-32z\" fill=\"white\" clipRule=\"nonzero\" />\n          </clipPath>\n        </defs>\n        <g clipPath=\"url(#151:1947_clipPath)\">\n          <g\n            transform=\"matrix(-0.7071067811865475,-0.7071067811865476,0.7071067811865476,-0.7071067811865475,6.7429,27.3137)\">\n            <g id=\"m151:1985\" opacity=\"0.837\" style='normal'>\n              <g>\n                <g>\n                  <path id=\"m151:1985_fill_path\"\n                    d=\"M1.5,0v0c0.82843,0 1.5,0.67157 1.5,1.5v7.1818c0,0.82843 -0.67157,1.5 -1.5,1.5v0c-0.82843,0 -1.5,-0.67157 -1.5,-1.5v-7.1818c0,-0.82843 0.67157,-1.5 1.5,-1.5z\"\n                    fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\" style='normal' />\n                </g>\n              </g>\n            </g>\n          </g>\n          <g transform=\"matrix(1,0,0,1,14.5454,21.0909)\">\n            <g id=\"m151:1980\" opacity=\"0.467\" style='normal'>\n              <g>\n                <g>\n                  <path id=\"m151:1980_fill_path\"\n                    d=\"M1.5,0v0c0.82843,0 1.5,0.67157 1.5,1.5v6.4545c0,0.82843 -0.67157,1.5 -1.5,1.5v0c-0.82843,0 -1.5,-0.67157 -1.5,-1.5v-6.4545c0,-0.82843 0.67157,-1.5 1.5,-1.5z\"\n                    fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\" style='normal' />\n                </g>\n              </g>\n            </g>\n          </g>\n          <g\n            transform=\"matrix(0.7071067811865476,-0.7071067811865475,0.7071067811865475,0.7071067811865476,18.0575,20.1141)\">\n            <g id=\"m151:1982\" opacity=\"0.153\" style='normal'>\n              <g>\n                <g>\n                  <path id=\"m151:1982_fill_path\"\n                    d=\"M1.5,0v0c0.82843,0 1.5,0.67157 1.5,1.5v7.1818c0,0.82843 -0.67157,1.5 -1.5,1.5v0c-0.82843,0 -1.5,-0.67157 -1.5,-1.5v-7.1818c0,-0.82843 0.67157,-1.5 1.5,-1.5z\"\n                    fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\" style='normal' />\n                </g>\n              </g>\n            </g>\n          </g>\n          <g transform=\"matrix(6.123233995736766e-17,-1,1,6.123233995736766e-17,21.0909,17.4545)\">\n            <g id=\"m151:1984\" opacity=\"0.049\" style='normal'>\n              <g>\n                <g>\n                  <path id=\"m151:1984_fill_path\"\n                    d=\"M1.5,0v0c0.82843,0 1.5,0.67157 1.5,1.5v6.4545c0,0.82843 -0.67157,1.5 -1.5,1.5v0c-0.82843,0 -1.5,-0.67157 -1.5,-1.5v-6.4545c0,-0.82843 0.67157,-1.5 1.5,-1.5z\"\n                    fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\" style='normal' />\n                </g>\n              </g>\n            </g>\n          </g>\n          <g\n            transform=\"matrix(-0.7071067811865475,-0.7071067811865476,0.7071067811865476,-0.7071067811865475,20.1157,13.943)\">\n            <g id=\"m151:1986\" opacity=\"0.01\" style='normal'>\n              <g>\n                <g>\n                  <path id=\"m151:1986_fill_path\"\n                    d=\"M1.5,0v0c0.82843,0 1.5,0.67157 1.5,1.5v7.1818c0,0.82843 -0.67157,1.5 -1.5,1.5v0c-0.82843,0 -1.5,-0.67157 -1.5,-1.5v-7.1818c0,-0.82843 0.67157,-1.5 1.5,-1.5z\"\n                    fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\" style='normal' />\n                </g>\n              </g>\n            </g>\n          </g>\n          <g transform=\"matrix(1,0,0,1,14.5454,1.4545)\">\n            <g id=\"m151:1979\" opacity=\"0\" style='normal'>\n              <g>\n                <g>\n                  <path id=\"m151:1979_fill_path\"\n                    d=\"M1.5,0v0c0.82843,0 1.5,0.67157 1.5,1.5v6.4545c0,0.82843 -0.67157,1.5 -1.5,1.5v0c-0.82843,0 -1.5,-0.67157 -1.5,-1.5v-6.4545c0,-0.82843 0.67157,-1.5 1.5,-1.5z\"\n                    fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\" style='normal' />\n                </g>\n              </g>\n            </g>\n          </g>\n          <g\n            transform=\"matrix(0.7071067811865476,-0.7071067811865475,0.7071067811865475,0.7071067811865476,4.6889,6.7433)\">\n            <g id=\"m151:1981\" opacity=\"0\" style='normal'>\n              <g>\n                <g>\n                  <path id=\"m151:1981_fill_path\"\n                    d=\"M1.5,0v0c0.82843,0 1.5,0.67157 1.5,1.5v7.1818c0,0.82843 -0.67157,1.5 -1.5,1.5v0c-0.82843,0 -1.5,-0.67157 -1.5,-1.5v-7.1818c0,-0.82843 0.67157,-1.5 1.5,-1.5z\"\n                    fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\" style='normal' />\n                </g>\n              </g>\n            </g>\n          </g>\n          <g transform=\"matrix(6.123233995736766e-17,-1,1,6.123233995736766e-17,1.4545,17.4545)\">\n            <g id=\"m151:1983\" opacity=\"1\" style='normal'>\n              <g>\n                <g>\n                  <path id=\"m151:1983_fill_path\"\n                    d=\"M1.5,0v0c0.82843,0 1.5,0.67157 1.5,1.5v6.4545c0,0.82843 -0.67157,1.5 -1.5,1.5v0c-0.82843,0 -1.5,-0.67157 -1.5,-1.5v-6.4545c0,-0.82843 0.67157,-1.5 1.5,-1.5z\"\n                    fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\" style='normal' />\n                </g>\n              </g>\n            </g>\n          </g>\n        </g>\n      </g>\n    </g>\n  </g>\n  <animate href=\"#m151:1985\" attributeName=\"opacity\" values=\"0.837;0;1;0.8366;0;0\" dur=\"0.8s\" repeatCount=\"indefinite\"\n    calcMode=\"spline\" keyTimes=\"0;0.75;0.87;1;1;1\"\n    keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n    additive=\"replace\" fill=\"freeze\" />\n  <animate href=\"#m151:1980\" attributeName=\"opacity\" values=\"0.467;0;1;0.4669;0;0\" dur=\"0.8s\" repeatCount=\"indefinite\"\n    calcMode=\"spline\" keyTimes=\"0;0.63;0.75;1;1;1\"\n    keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n    additive=\"replace\" fill=\"freeze\" />\n  <animate href=\"#m151:1982\" attributeName=\"opacity\" values=\"0.153;0.05;1;0.1534;0;0\" dur=\"0.8s\"\n    repeatCount=\"indefinite\" calcMode=\"spline\" keyTimes=\"0;0.5;0.63;1;1;1\"\n    keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n    additive=\"replace\" fill=\"freeze\" />\n  <animate href=\"#m151:1984\" attributeName=\"opacity\" values=\"0.049;0;1;0.0493;0;0\" dur=\"0.8s\" repeatCount=\"indefinite\"\n    calcMode=\"spline\" keyTimes=\"0;0.37;0.5;1;1;1\"\n    keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n    additive=\"replace\" fill=\"freeze\" />\n  <animate href=\"#m151:1986\" attributeName=\"opacity\" values=\"0.01;0;1;0.0099;0;0\" dur=\"0.8s\" repeatCount=\"indefinite\"\n    calcMode=\"spline\" keyTimes=\"0;0.25;0.37;1;1;1\"\n    keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n    additive=\"replace\" fill=\"freeze\" />\n  <animate href=\"#m151:1979\" attributeName=\"opacity\" values=\"0;0;1;0\" dur=\"0.8s\" repeatCount=\"indefinite\"\n    calcMode=\"spline\" keyTimes=\"0;0.13;0.25;1\" keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n    additive=\"replace\" fill=\"freeze\" />\n  <animate href=\"#m151:1981\" attributeName=\"opacity\" values=\"0;1;0;0\" dur=\"0.8s\" repeatCount=\"indefinite\"\n    calcMode=\"spline\" keyTimes=\"0;0.13;0.89;1\" keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n    additive=\"replace\" fill=\"freeze\" />\n  <animate href=\"#m151:1983\" attributeName=\"opacity\" values=\"1;0;1\" dur=\"0.8s\" repeatCount=\"indefinite\"\n    calcMode=\"spline\" keyTimes=\"0;0.89;1\" keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1\" additive=\"replace\"\n    fill=\"freeze\" />\n      </svg>\n      <svg *ngSwitchCase=\"'s'\" id=\"s151:1947\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n        <g transform=\"matrix(1,0,0,1,0,0)\">\n          <g id=\"s151:1947\" opacity=\"1\" style='normal'>\n            <g>\n              <defs>\n                <clipPath id=\"s151:1947_clipPath\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n                  <path d=\"M0,0h24v0v24v0h-24v0v-24z\" fill=\"white\" clipRule=\"nonzero\" />\n                </clipPath>\n              </defs>\n              <g clipPath=\"url(#151:1947_clipPath)\">\n                <g\n                  transform=\"matrix(-0.7071067811865475,-0.7071067811865476,0.7071067811865476,-0.7071067811865475,5.64,19.78)\">\n                  <g id=\"s151:1985\" opacity=\"0.837\" style='normal'>\n                    <g>\n                      <g>\n                        <path id=\"s151:1985_fill_path\"\n                          d=\"M1,0v0c0.55228,0 1,0.44772 1,1v5c0,0.55228 -0.44772,1 -1,1v0c-0.55228,0 -1,-0.44772 -1,-1v-5c0,-0.55228 0.44772,-1 1,-1z\"\n                          fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\"\n                          style='normal' />\n                      </g>\n                    </g>\n                  </g>\n                </g>\n                <g transform=\"matrix(1,0,0,1,11,15)\">\n                  <g id=\"s151:1980\" opacity=\"0.467\" style='normal'>\n                    <g>\n                      <g>\n                        <path id=\"s151:1980_fill_path\"\n                          d=\"M1,0v0c0.55228,0 1,0.44772 1,1v5c0,0.55228 -0.44772,1 -1,1v0c-0.55228,0 -1,-0.44772 -1,-1v-5c0,-0.55228 0.44772,-1 1,-1z\"\n                          fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\"\n                          style='normal' />\n                      </g>\n                    </g>\n                  </g>\n                </g>\n                <g\n                  transform=\"matrix(0.7071067811865476,-0.7071067811865475,0.7071067811865475,0.7071067811865476,13.41,14.83)\">\n                  <g id=\"s151:1982\" opacity=\"0.153\" style='normal'>\n                    <g>\n                      <g>\n                        <path id=\"s151:1982_fill_path\"\n                          d=\"M1,0v0c0.55228,0 1,0.44772 1,1v5c0,0.55228 -0.44772,1 -1,1v0c-0.55228,0 -1,-0.44772 -1,-1v-5c0,-0.55228 0.44772,-1 1,-1z\"\n                          fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\"\n                          style='normal' />\n                      </g>\n                    </g>\n                  </g>\n                </g>\n                <g transform=\"matrix(6.123233995736766e-17,-1,1,6.123233995736766e-17,15,13)\">\n                  <g id=\"s151:1984\" opacity=\"0.049\" style='normal'>\n                    <g>\n                      <g>\n                        <path id=\"s151:1984_fill_path\"\n                          d=\"M1,0v0c0.55228,0 1,0.44772 1,1v5c0,0.55228 -0.44772,1 -1,1v0c-0.55228,0 -1,-0.44772 -1,-1v-5c0,-0.55228 0.44772,-1 1,-1z\"\n                          fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\"\n                          style='normal' />\n                      </g>\n                    </g>\n                  </g>\n                </g>\n                <g transform=\"matrix(1,0,0,1,13.41,4.22)\">\n                  <g id=\"s597:11660\" opacity=\"0\" style='normal'>\n                    <g>\n                      <g>\n                        <path id=\"s597:11660_fill_path\"\n                          d=\"M2.0341,6.01101c-0.46533,0.46533 -1.21977,0.46533 -1.6851,0c-0.46533,-0.46533 -0.46533,-1.21977 0,-1.6851l3.97691,-3.97691c0.46533,-0.46533 1.21977,-0.46533 1.6851,0c0.46533,0.46533 0.46533,1.21977 0,1.6851z\"\n                          fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\"\n                          style='normal' />\n                      </g>\n                    </g>\n                  </g>\n                </g>\n                <g transform=\"matrix(1,0,0,1,11,1.9998)\">\n                  <g id=\"s151:1979\" opacity=\"0\" style='normal'>\n                    <g>\n                      <g>\n                        <path id=\"s151:1979_fill_path\"\n                          d=\"M1,0v0c0.55228,0 1,0.44772 1,1v5c0,0.55228 -0.44772,1 -1,1v0c-0.55228,0 -1,-0.44772 -1,-1v-5c0,-0.55228 0.44772,-1 1,-1z\"\n                          fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\"\n                          style='normal' />\n                      </g>\n                    </g>\n                  </g>\n                </g>\n                <g\n                  transform=\"matrix(0.7071067811865476,-0.7071067811865475,0.7071067811865475,0.7071067811865476,4.22,5.64)\">\n                  <g id=\"s151:1981\" opacity=\"0\" style='normal'>\n                    <g>\n                      <g>\n                        <path id=\"s151:1981_fill_path\"\n                          d=\"M1,0v0c0.55228,0 1,0.44772 1,1v5c0,0.55228 -0.44772,1 -1,1v0c-0.55228,0 -1,-0.44772 -1,-1v-5c0,-0.55228 0.44772,-1 1,-1z\"\n                          fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\"\n                          style='normal' />\n                      </g>\n                    </g>\n                  </g>\n                </g>\n                <g transform=\"matrix(6.123233995736766e-17,-1,1,6.123233995736766e-17,2.0003,13)\">\n                  <g id=\"s151:1983\" opacity=\"1\" style='normal'>\n                    <g>\n                      <g>\n                        <path id=\"s151:1983_fill_path\"\n                          d=\"M1,0v0c0.55228,0 1,0.44772 1,1v5c0,0.55228 -0.44772,1 -1,1v0c-0.55228,0 -1,-0.44772 -1,-1v-5c0,-0.55228 0.44772,-1 1,-1z\"\n                          fillRule=\"nonzero\" fill=\"currentColor\" fillOpacity=\"1\"\n                          style='normal' />\n                      </g>\n                    </g>\n                  </g>\n                </g>\n              </g>\n            </g>\n          </g>\n        </g>\n        <animate href=\"#s151:1985\" attributeName=\"opacity\" values=\"0.837;0;1;0.8366;0;0\" dur=\"0.8s\" repeatCount=\"indefinite\"\n          calcMode=\"spline\" keyTimes=\"0;0.75;0.87;1;1;1\"\n          keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n          additive=\"replace\" fill=\"freeze\" />\n        <animate href=\"#s151:1980\" attributeName=\"opacity\" values=\"0.467;0;1;0.4669;0;0\" dur=\"0.8s\" repeatCount=\"indefinite\"\n          calcMode=\"spline\" keyTimes=\"0;0.63;0.75;1;1;1\"\n          keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n          additive=\"replace\" fill=\"freeze\" />\n        <animate href=\"#s151:1982\" attributeName=\"opacity\" values=\"0.153;0.05;1;0.1534;0;0\" dur=\"0.8s\"\n          repeatCount=\"indefinite\" calcMode=\"spline\" keyTimes=\"0;0.5;0.63;1;1;1\"\n          keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n          additive=\"replace\" fill=\"freeze\" />\n        <animate href=\"#s151:1984\" attributeName=\"opacity\" values=\"0.049;0;1;0.0493;0;0\" dur=\"0.8s\" repeatCount=\"indefinite\"\n          calcMode=\"spline\" keyTimes=\"0;0.37;0.5;1;1;1\"\n          keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n          additive=\"replace\" fill=\"freeze\" />\n        <animate href=\"#s597:11660\" attributeName=\"opacity\" values=\"0;0;1;0\" dur=\"0.8s\" repeatCount=\"indefinite\"\n          calcMode=\"spline\" keyTimes=\"0;0.25;0.37;1\" keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n          additive=\"replace\" fill=\"freeze\" />\n        <animate href=\"#s151:1979\" attributeName=\"opacity\" values=\"0;0;1;0\" dur=\"0.8s\" repeatCount=\"indefinite\"\n          calcMode=\"spline\" keyTimes=\"0;0.13;0.25;1\" keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n          additive=\"replace\" fill=\"freeze\" />\n        <animate href=\"#s151:1981\" attributeName=\"opacity\" values=\"0;1;0;0\" dur=\"0.8s\" repeatCount=\"indefinite\"\n          calcMode=\"spline\" keyTimes=\"0;0.13;0.89;1\" keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1;0.5 0.35 0.15 1\"\n          additive=\"replace\" fill=\"freeze\" />\n        <animate href=\"#s151:1983\" attributeName=\"opacity\" values=\"1;0;1\" dur=\"0.8s\" repeatCount=\"indefinite\"\n          calcMode=\"spline\" keyTimes=\"0;0.89;1\" keySplines=\"0.5 0.35 0.15 1;0.5 0.35 0.15 1\" additive=\"replace\"\n          fill=\"freeze\" />\n      </svg>\n    </ng-container>\n  `,\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IOSSpinnerComponent {\n  size = input<'s' | 'm' | 'l'>('s');\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy, \n  HostBinding, \n  inject,\n  input,\n  computed,\n  signal,\n  effect\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PlatformService } from '../../../services';\nimport { BaseSpinnerComponent } from './components/base-spinner/base-spinner.component';\nimport { IOSSpinnerComponent } from './components/ios-spinner/ios-spinner.component';\n\n/**\n * Spinner component displays a loading indicator.\n * Automatically selects the appropriate indicator style based on the platform.\n */\n@Component({\n  selector: 'tgui-spinner',\n  standalone: true,\n  imports: [CommonModule, BaseSpinnerComponent, IOSSpinnerComponent],\n  host: {\n    'attr.data-refresh-platform': 'true'\n  },\n  template: `\n    <div role=\"status\" class=\"wrapper\" [class.wrapper--ios]=\"isIOS()\">\n      <ng-container *ngIf=\"isIOS(); else baseSpinner\">\n        <tgui-ios-spinner [size]=\"size()\"></tgui-ios-spinner>\n      </ng-container>\n      <ng-template #baseSpinner>\n        <tgui-base-spinner [size]=\"size()\"></tgui-base-spinner>\n      </ng-template>\n    </div>\n  `,\n  styles: [`\n    /* Определяем дефолтное значение на уровне компонента */\n    :host {\n      --tgui--internal-spinner-color: var(--tgui--link_color);\n    }\n\n    .wrapper {\n      /* Используем родительский --tgui--spinner-color если он есть, \n         иначе используем наш внутренний дефолтный цвет */\n      color: var(--tgui--spinner-color, var(--tgui--internal-spinner-color));\n    }\n\n    .wrapper--ios {\n      --tgui--internal-spinner-color: var(--tgui--hint_color);\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SpinnerComponent {\n  /**\n   * Size of the loading indicator ('s' - small, 'm' - medium, 'l' - large)\n   */\n  size = input<'s' | 'm' | 'l'>('m');\n  \n  private platformService = inject(PlatformService);\n  \n  /**\n   * Signal indicating whether the current platform is iOS\n   */\n  isIOS = signal<boolean>(false);\n\n  constructor() {\n    // Initialize the iOS platform check\n    this.isIOS.set(this.platformService.isIOS());\n    \n    // Subscribe to platform changes\n    effect(() => {\n      const platform = this.platformService.platform();\n      this.isIOS.set(platform === 'ios');\n    });\n  }\n\n  @HostBinding('class.size-s') get isSizeS() { return this.size() === 's'; }\n  @HostBinding('class.size-m') get isSizeM() { return this.size() === 'm'; }\n  @HostBinding('class.size-l') get isSizeL() { return this.size() === 'l'; }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input, \n  signal,\n  HostBinding,\n  HostListener,\n  ElementRef,\n  inject\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Provides a way to hide or show content, such as details or spoilers, with a simple click.\n * The visibility state can be controlled externally via props or toggled by user interaction.\n */\n@Component({\n  selector: 'tgui-spoiler',\n  standalone: true,\n  imports: [CommonModule],\n  template: `<ng-content></ng-content>`,\n  styles: [`\n    :host {\n      position: relative;\n      display: table;\n    }\n\n    :host::before {\n      position: absolute;\n      content: '';\n      inset: 0;\n      background-color: var(--tgui--bg_color);\n      background-image: url('./icons/spoiler.svg');\n      background-repeat: round;\n      background-position: center;\n      z-index: var(--tgui--z-index--simple);\n      transition: .4s ease;\n    }\n\n    :host.visible::before {\n      opacity: 0;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'attr.data-refresh-platform': 'true'\n  }\n})\nexport class SpoilerComponent {\n  private elementRef = inject(ElementRef);\n\n  // Input property for controlling visibility\n  visible = input<boolean>(false);\n  \n  // Internal state for visibility\n  private isVisible = signal(this.visible());\n\n  // Apply visible class based on internal state\n  @HostBinding('class.visible')\n  get isVisibleState(): boolean {\n    return this.isVisible();\n  }\n\n  // Handle changes to input property\n  ngOnChanges(): void {\n    this.isVisible.set(this.visible());\n  }\n\n  // Toggle visibility on click\n  @HostListener('click', ['$event'])\n  onClick(event: Event): void {\n    this.isVisible.update(state => !state);\n    event.stopPropagation();\n  }\n\n  // Handle keyboard accessibility\n  @HostListener('keydown.enter', ['$event'])\n  @HostListener('keydown.space', ['$event'])\n  onKeyDown(event: KeyboardEvent): void {\n    this.isVisible.update(state => !state);\n    event.preventDefault();\n    event.stopPropagation();\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input,\n  HostBinding\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Used as a placeholder during the loading state of a component or page.\n * It can visually mimic the layout that will be replaced by the actual content once loaded,\n * improving user experience by reducing perceived loading times.\n */\n@Component({\n  selector: 'tgui-skeleton',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <ng-content></ng-content>\n  `,\n  styles: [`\n    :host {\n      position: relative;\n    }\n    \n    :host.visible::before,\n    :host.visible::after {\n      content: '';\n      position: absolute;\n      inset: 0;\n      z-index: var(--tgui--z-index--simple);\n    }\n    \n    :host.visible::before {\n      background: var(--tgui--secondary_bg_color);\n    }\n    \n    :host:not(.without-animation).visible::after {\n      z-index: var(--tgui--z-index--skeleton);\n      background-color: var(--tgui--bg_color);\n      animation: fade 1.8s linear infinite;\n    }\n    \n    @keyframes fade {\n      0%, 100% {\n        opacity: .4;\n      }\n    \n      50% {\n        opacity: .7;\n      }\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SkeletonComponent {\n  /**\n   * If true, disables the shimmering animation of the skeleton.\n   */\n  withoutAnimation = input<boolean>(false);\n  \n  /**\n   * If true, the skeleton overlay is shown above the content.\n   * When false, the skeleton is hidden, showing any underlying content.\n   */\n  visible = input<boolean>(true);\n  \n  @HostBinding('class.without-animation')\n  get isWithoutAnimation() {\n    return this.withoutAnimation();\n  }\n  \n  @HostBinding('class.visible')\n  get isVisible() {\n    return this.visible();\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input,\n  computed,\n  inject\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PlatformService } from '../../../services/platform.service';\n\nconst PROGRESS_MIN_VALUE = 0;\nconst PROGRESS_MAX_VALUE = 100;\n\n/**\n * Renders a linear progress bar that visually represents completion percentage towards a goal.\n * The component respects accessibility standards by including appropriate ARIA attributes.\n */\n@Component({\n  selector: 'tgui-progress',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div \n      class=\"wrapper\" \n      [class.wrapper--base]=\"isPlatformBase\"\n      [attr.title]=\"progressTitle\"\n      role=\"progressbar\"\n      [attr.aria-valuenow]=\"progressValue()\"\n      [attr.aria-valuemin]=\"PROGRESS_MIN_VALUE\"\n      [attr.aria-valuemax]=\"PROGRESS_MAX_VALUE\"\n    >\n      <div \n        class=\"progress\" \n        aria-hidden=\"true\"\n        [style.width.%]=\"progressValue()\"\n      ></div>\n    </div>\n  `,\n  styles: [`\n    .wrapper {\n      overflow: hidden;\n      position: relative;\n      height: 4px;\n      border-radius: 2px;\n    }\n\n    .wrapper--base::after {\n      content: '';\n      position: absolute;\n      inset: 0;\n      opacity: .4;\n      background: var(--tgui--link_color);\n    }\n\n    .progress {\n      position: absolute;\n      block-size: 100%;\n      border-radius: inherit;\n      transition: width 0.2s ease;\n      background: var(--tgui--link_color);\n      z-index: var(--tgui--z-index--simple);\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'attr.data-refresh-platform': 'true'\n  }\n})\nexport class ProgressComponent {\n  private platformService = inject(PlatformService);\n  \n  // Constants exposed to template\n  protected readonly PROGRESS_MIN_VALUE = PROGRESS_MIN_VALUE;\n  protected readonly PROGRESS_MAX_VALUE = PROGRESS_MAX_VALUE;\n\n  /**\n   * The current value of the progress bar, expressed as a percentage.\n   * The value should be between 0 and 100.\n   */\n  value = input<number>(0);\n\n  /**\n   * Computed value that ensures the progress is clamped between min and max values\n   */\n  progressValue = computed(() => {\n    return Math.max(PROGRESS_MIN_VALUE, Math.min(this.value(), PROGRESS_MAX_VALUE));\n  });\n\n  /**\n   * Computes the title attribute for accessibility\n   */\n  get progressTitle() {\n    return `${this.progressValue()} / ${PROGRESS_MAX_VALUE}`;\n  }\n\n  /**\n   * Indicates if platform is base\n   */\n  get isPlatformBase() {\n    return this.platformService.platform() === 'base';\n  }\n} ","export type CircleSize = 'small' | 'medium' | 'large';\n\nexport interface CircleAttributes {\n  size: number;\n  strokeWidth: number;\n  radius: number;\n}\n\nexport function getCircleAttributes(size: CircleSize): CircleAttributes | undefined {\n  switch (size) {\n    case 'large':\n      return {\n        size: 56,\n        strokeWidth: 4,\n        radius: 18,\n      };\n\n    case 'medium':\n      return {\n        size: 36,\n        strokeWidth: 3,\n        radius: 14,\n      };\n\n    case 'small':\n      return {\n        size: 28,\n        strokeWidth: 3,\n        radius: 10,\n      };\n\n    default:\n      return undefined;\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input,\n  computed\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { \n  getCircleAttributes, \n  CircleSize, \n  CircleAttributes \n} from './utils/get-circle-attributes';\n\n/**\n * Renders a circular progress indicator, useful for displaying loading states or progress metrics.\n * The component dynamically adjusts its size and stroke based on the provided `size` input and visually represents\n * the `progress` input as a percentage of the circle's circumference.\n */\n@Component({\n  selector: 'tgui-circular-progress',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <svg\n      *ngIf=\"circleAttrs()\"\n      class=\"wrapper\"\n      [attr.width]=\"circleAttrs()?.size\"\n      [attr.height]=\"circleAttrs()?.size\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n\n        <circle\n        [attr.cx]=\"circleSize()\"\n        [attr.cy]=\"circleSize()\"\n        [attr.r]=\"circleAttrs()?.radius\"\n        stroke-opacity=\".1\"\n        [attr.stroke-width]=\"circleAttrs()?.strokeWidth\"\n        fill=\"none\"\n      />\n      <circle\n        fill=\"none\"\n        [attr.cx]=\"circleSize()\"\n        [attr.cy]=\"circleSize()\"\n        [attr.r]=\"circleAttrs()?.radius\"\n        [attr.stroke-width]=\"circleAttrs()?.strokeWidth\"\n        stroke-linecap=\"round\"\n        [attr.stroke-dasharray]=\"circumference()\"\n        [attr.stroke-dashoffset]=\"circumference() * ((100 - progress()) / 100)\"\n      />\n    </svg>\n  `,\n  styles: [`\n    .wrapper {\n      stroke: var(--tgui--link_color);\n      transform: rotate(-90deg);\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CircularProgressComponent {\n  /**\n   * Specifies the size of the circular progress indicator. \n   * Can be 'small', 'medium', or 'large'.\n   */\n  size = input<CircleSize>('medium');\n  \n  /**\n   * Current progress of the circular indicator, expressed as a percentage from 0 to 100.\n   */\n  progress = input<number>(0);\n\n  /**\n   * Computed circle attributes based on size\n   */\n  circleAttrs = computed<CircleAttributes | undefined>(() => {\n    return getCircleAttributes(this.size());\n  });\n\n  /**\n   * Computed circle center position (half of circle size)\n   */\n  circleSize = computed<number>(() => {\n    return (this.circleAttrs()?.size || 0) / 2;\n  });\n\n  /**\n   * Computed circumference of the circle\n   */\n  circumference = computed<number>(() => {\n    const radius = this.circleAttrs()?.radius || 0;\n    return 2 * Math.PI * radius;\n  });\n\n  /**\n   * Computed dash offset based on progress\n   */\n  dashOffset = computed<number>(() => {\n    return this.circumference() * ((100 - this.progress()) / 100);\n  });\n} ","import { Component, Input, signal, OnInit, OnDestroy, inject, ChangeDetectionStrategy, TemplateRef, ContentChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RootPortalComponent } from '../../utils/portal/root-portal.component';\nimport { CaptionComponent } from '../../typography/caption/caption.component';\nimport { PlatformService } from '../../../services';\n\n@Component({\n  selector: 'tgui-snackbar',\n  standalone: true,\n  imports: [CommonModule, RootPortalComponent, CaptionComponent],\n  template: `\n    <tgui-root-portal>\n      <div \n        class=\"tgui-snackbar-wrapper\"\n        [class.tgui-snackbar-wrapper--ios]=\"isIOS()\"\n        [class.tgui-snackbar-wrapper--closing]=\"closing()\">\n        <div class=\"tgui-snackbar-body\">\n          <div *ngIf=\"beforeTemplate\" class=\"tgui-snackbar-before\">\n            <ng-container *ngTemplateOutlet=\"beforeTemplate\"></ng-container>\n          </div>\n          <div class=\"tgui-snackbar-middle\">\n            <tgui-caption weight=\"2\" *ngIf=\"hasMainContent\">\n              <ng-content></ng-content>\n            </tgui-caption>\n            <tgui-caption *ngIf=\"description\">\n                {{ description }}\n            </tgui-caption>\n            <tgui-caption *ngIf=\"linkTemplate\">\n              <ng-container *ngTemplateOutlet=\"linkTemplate\"></ng-container>\n            </tgui-caption>\n          </div>\n          <div *ngIf=\"afterTemplate\" class=\"tgui-snackbar-after\">\n            <ng-container *ngTemplateOutlet=\"afterTemplate\"></ng-container>\n          </div>\n        </div>\n      </div>\n    </tgui-root-portal>\n  `,\n  styleUrls: ['./snackbar.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SnackbarComponent implements OnInit, OnDestroy {\n\n  @ContentChild('before') beforeTemplate?: TemplateRef<any>;\n  @ContentChild('after') afterTemplate?: TemplateRef<any>;\n  @ContentChild('link') linkTemplate?: TemplateRef<any>;\n\n  @Input() description?: string;\n  @Input() duration = 4000;\n  @Input() onClose!: () => void;\n  \n  private readonly TRANSITION_FINISH_DURATION = 320;\n  private closeTimeout?: any;\n  \n  closing = signal(false);\n  hasMainContent = true;\n  \n  private platformService = inject(PlatformService);\n  \n  isIOS = this.platformService.isIOS;\n  \n  ngOnInit(): void {\n    this.startCloseTimer();\n  }\n  \n  startCloseTimer(): void {\n    if (this.duration > 0) {\n      this.closeTimeout = setTimeout(() => {\n        this.close();\n      }, this.duration);\n    }\n  }\n  \n  close(): void {\n    this.closing.set(true);\n    setTimeout(() => {\n      if (this.onClose) {\n        this.onClose();\n      }\n    }, this.TRANSITION_FINISH_DURATION);\n  }\n  \n  ngOnDestroy(): void {\n    if (this.closeTimeout) {\n      clearTimeout(this.closeTimeout);\n    }\n  }\n} ","import { Injectable, inject, TemplateRef, createComponent, ApplicationRef, EnvironmentInjector } from '@angular/core';\nimport { SnackbarComponent } from './snackbar.component';\nimport { PortalService } from '../../../services/portal.service';\n\nexport interface SnackbarOptions {\n  beforeTemplate?: TemplateRef<any>;\n  afterTemplate?: TemplateRef<any>;\n  description?: string;\n  linkTemplate?: TemplateRef<any>;\n  duration?: number;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SnackbarService {\n  private appRef = inject(ApplicationRef);\n  private injector = inject(EnvironmentInjector);\n  private portalService = inject(PortalService);\n  private activeSnackbars: any[] = [];\n  private styleInjected = false;\n  \n  private injectSnackbarStyles() {\n    if (this.styleInjected) return;\n    \n    const style = document.createElement('style');\n    style.textContent = `\n      @keyframes verticalIntro {\n        from {\n          transform: translate3d(0, 140%, 0);\n        }\n        to {\n          transform: translate3d(0, 0, 0);\n        }\n      }\n    `;\n    document.head.appendChild(style);\n    this.styleInjected = true;\n  }\n  \n  show(message: string, options: SnackbarOptions = {}): void {\n    \n    // Ensure styles are injected\n    this.injectSnackbarStyles();\n    \n    // Check if portal container is available\n    const portalContainer = this.portalService.getPortalContainerElement();\n    console.log('PortalContainer element:', portalContainer);\n    \n    if (!portalContainer) {\n      console.error('SnackbarService: Portal container not available. Make sure tgui-root component is properly set up.');\n      return;\n    }\n    \n    try {\n      // Create a direct snackbar (avoiding RootPortalComponent recursive issue)\n      // Create the wrapper div\n      const wrapperEl = document.createElement('div');\n      wrapperEl.className = 'tgui-snackbar-wrapper';\n      wrapperEl.style.position = 'fixed';\n      wrapperEl.style.left = '10px';\n      wrapperEl.style.right = '10px';\n      wrapperEl.style.bottom = '10px';\n      wrapperEl.style.boxSizing = 'border-box';\n      wrapperEl.style.maxInlineSize = '460px';\n      wrapperEl.style.animation = 'verticalIntro 340ms cubic-bezier(.3, .3, .5, 1)';\n      wrapperEl.style.transition = 'transform 320ms cubic-bezier(.3, .3, .5, 1)';\n      wrapperEl.style.zIndex = '9999';\n      wrapperEl.style.margin = '0 auto';\n      \n      // Create the body div\n      const bodyEl = document.createElement('div');\n      bodyEl.className = 'tgui-snackbar-body';\n      bodyEl.style.position = 'sticky';\n      bodyEl.style.inset = '0';\n      bodyEl.style.display = 'flex';\n      bodyEl.style.alignItems = 'center';\n      bodyEl.style.gap = '12px';\n      bodyEl.style.width = '100%';\n      bodyEl.style.boxSizing = 'border-box';\n      bodyEl.style.padding = '10px 16px 10px 10px';\n      bodyEl.style.borderRadius = '10px';\n      bodyEl.style.backdropFilter = 'blur(28px)';\n      bodyEl.style.background = 'var(--tgui--surface_dark)';\n      \n      // Create the message div\n      const middleEl = document.createElement('div');\n      middleEl.className = 'tgui-snackbar-middle';\n      middleEl.style.flex = '1 1 0';\n      middleEl.style.display = 'flex';\n      middleEl.style.flexDirection = 'column';\n      middleEl.style.gap = '1px';\n      middleEl.style.color = 'var(--tgui--white)';\n      \n      // Add message\n      const messageEl = document.createElement('div');\n      messageEl.style.fontFamily = 'var(--tgui--font-family)';\n      messageEl.style.fontSize = '14px';\n      messageEl.style.fontWeight = '500';\n      messageEl.textContent = message;\n      middleEl.appendChild(messageEl);\n      \n      // Add description if provided\n      if (options.description) {\n        const descEl = document.createElement('div');\n        descEl.style.fontFamily = 'var(--tgui--font-family)';\n        descEl.style.fontSize = '14px';\n        descEl.textContent = options.description;\n        middleEl.appendChild(descEl);\n      }\n      \n      // Add elements to the DOM\n      bodyEl.appendChild(middleEl);\n      wrapperEl.appendChild(bodyEl);\n      \n      // Add to DOM\n      portalContainer.appendChild(wrapperEl);\n      \n      console.log('Manual snackbar element added to portal container:', wrapperEl);\n      \n      // Set up auto-close timer\n      const duration = options.duration ?? 4000;\n      \n      // Store reference for cleanup\n      const snackbarRef = { \n        element: wrapperEl, \n        timeoutId: null as any\n      };\n      \n      // Add to active snackbars\n      this.activeSnackbars.push(snackbarRef);\n      \n      // Auto close after duration\n      if (duration > 0) {\n        snackbarRef.timeoutId = setTimeout(() => {\n          this.closeManualSnackbar(snackbarRef);\n        }, duration);\n      }\n      \n      console.log('SnackbarService: Manual snackbar added successfully');\n    } catch (error) {\n      console.error('Error creating snackbar component:', error);\n    }\n  }\n  \n  private closeManualSnackbar(snackbarRef: any): void {\n    // Add closing animation class\n    if (snackbarRef.element) {\n      snackbarRef.element.style.transform = 'translate3d(0, 140%, 0)';\n      \n      // Remove after animation completes\n      setTimeout(() => {\n        const index = this.activeSnackbars.indexOf(snackbarRef);\n        if (index !== -1) {\n          this.activeSnackbars.splice(index, 1);\n        }\n        \n        // Remove from DOM\n        if (snackbarRef.element && snackbarRef.element.parentNode) {\n          snackbarRef.element.parentNode.removeChild(snackbarRef.element);\n        }\n        \n        // Clear timeout if it exists\n        if (snackbarRef.timeoutId) {\n          clearTimeout(snackbarRef.timeoutId);\n        }\n      }, 320); // Match the CSS transition duration\n    }\n  }\n  \n  private close(snackbarRef: any): void {\n    const index = this.activeSnackbars.indexOf(snackbarRef);\n    if (index !== -1) {\n      this.activeSnackbars.splice(index, 1);\n      \n      // Remove from DOM\n      const element = snackbarRef.location.nativeElement;\n      if (element && element.parentNode) {\n        element.parentNode.removeChild(element);\n      }\n      \n      this.appRef.detachView(snackbarRef.hostView);\n      snackbarRef.destroy();\n    }\n  }\n  \n  closeAll(): void {\n    // Close all snackbars\n    const snackbars = [...this.activeSnackbars]; // Create a copy to avoid mutation issues\n    for (const snackbar of snackbars) {\n      if (snackbar.element) {\n        this.closeManualSnackbar(snackbar);\n      } else {\n        snackbar.instance.close();\n      }\n    }\n  }\n} ","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TappableComponent } from '../../../../utils/tappable/tappable.component';\n\n@Component({\n  selector: 'tgui-snackbar-button',\n  standalone: true,\n  imports: [CommonModule, TappableComponent],\n  template: `\n    <tgui-tappable>\n      <ng-content></ng-content>\n    </tgui-tappable>\n  `,\n  styleUrls: ['./snackbar-button.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SnackbarButtonComponent {} ","import { Component, input, HostBinding, ViewEncapsulation } from '@angular/core';\nimport { TguiIconProps } from './icon.interface';\n\n@Component({\n  template: '',\n  encapsulation: ViewEncapsulation.None\n})\nexport abstract class TguiIconBase {\n  props = input<TguiIconProps>({});\n  \n  @HostBinding('attr.tgui-icon')\n  get tguiIconAttr() {\n    return '';\n  }\n} ","import { Directive, ElementRef, input, effect } from '@angular/core';\nimport { TguiIconProps } from '../icon.interface';\n\n/**\n * Directive for automatic passing of icon properties to SVG element\n * Allows using an approach similar to {...props} in React\n */\n@Directive({\n  selector: '[tguiSvgProps]',\n  standalone: true\n})\nexport class TguiSvgPropsDirective {\n  props = input<TguiIconProps>();\n\n  constructor(private el: ElementRef<SVGElement>) {\n    // Track props changes\n    effect(() => {\n      if (this.props()) {\n        this.applyProps();\n      }\n    });\n  }\n\n  private applyProps(): void {\n    const el = this.el.nativeElement;\n    const props = this.props();\n\n    if (!props) return;\n\n    // Apply basic attributes\n    if (props.class) el.setAttribute('class', props.class);\n    if (props.id) el.setAttribute('id', props.id);\n    if (props.fill) el.setAttribute('fill', props.fill);\n    if (props.stroke) el.setAttribute('stroke', props.stroke);\n    if (props.width) el.setAttribute('width', props.width.toString());\n    if (props.height) el.setAttribute('height', props.height.toString());\n    if (props.role) el.setAttribute('role', props.role);\n    if (props.tabIndex !== undefined) el.setAttribute('tabindex', props.tabIndex.toString());\n    if (props.autoFocus) el.setAttribute('autofocus', 'true');\n    if (props.ariaLabel) el.setAttribute('aria-label', props.ariaLabel);\n    if (props.title) el.setAttribute('title', props.title);\n\n    // Apply styles\n    if (props.style) {\n      const styleStr = Object.entries(props.style)\n        .map(([key, value]) => `${this.kebabCase(key)}: ${value}`)\n        .join('; ');\n      el.setAttribute('style', styleStr);\n    }\n\n    // Add event handlers\n    this.setupEventHandlers(el, props);\n  }\n\n  private setupEventHandlers(el: SVGElement, props: TguiIconProps): void {\n    // Clear old handlers\n    this.removeEventHandlers(el);\n\n    // Add new ones\n    if (props.onClick) {\n      el.addEventListener('click', (e) => props.onClick?.emit(e as MouseEvent));\n    }\n    if (props.onFocus) {\n      el.addEventListener('focus', (e) => props.onFocus?.emit(e as FocusEvent));\n    }\n    if (props.onBlur) {\n      el.addEventListener('blur', (e) => props.onBlur?.emit(e as FocusEvent));\n    }\n    if (props.onMouseEnter) {\n      el.addEventListener('mouseenter', (e) => props.onMouseEnter?.emit(e as MouseEvent));\n    }\n    if (props.onMouseLeave) {\n      el.addEventListener('mouseleave', (e) => props.onMouseLeave?.emit(e as MouseEvent));\n    }\n    if (props.onKeyDown) {\n      el.addEventListener('keydown', (e) => props.onKeyDown?.emit(e as KeyboardEvent));\n    }\n    if (props.onPointerDown) {\n      el.addEventListener('pointerdown', (e) => props.onPointerDown?.emit(e as PointerEvent));\n    }\n    if (props.onPointerUp) {\n      el.addEventListener('pointerup', (e) => props.onPointerUp?.emit(e as PointerEvent));\n    }\n  }\n\n  private removeEventHandlers(el: SVGElement): void {\n    // Remove all event listeners\n    el.removeEventListener('click', () => {});\n    el.removeEventListener('focus', () => {});\n    el.removeEventListener('blur', () => {});\n    el.removeEventListener('mouseenter', () => {});\n    el.removeEventListener('mouseleave', () => {});\n    el.removeEventListener('keydown', () => {});\n    el.removeEventListener('pointerdown', () => {});\n    el.removeEventListener('pointerup', () => {});\n  }\n\n  private kebabCase(str: string): string {\n    return str.replace(/[A-Z]/g, letter => `-${letter.toLowerCase()}`);\n  }\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon12-quote',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"12\" \n      height=\"12\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path\n        d=\"M3.07 7.7c.14-.36-.14-.74-.5-.93A2 2 0 1 1 5.5 5V5c0 1.55-.27 2.67-.57 3.43a5.33 5.33 0 0 1-.67 1.22 1 1 0 0 1-1.53-1.3h.01l.07-.1c.06-.1.16-.28.26-.54ZM4.26 9.65ZM8.07 7.7c.14-.36-.14-.74-.5-.93A2 2 0 1 1 10.5 5V5c0 1.55-.27 2.67-.57 3.43a5.33 5.33 0 0 1-.67 1.22 1 1 0 0 1-1.53-1.3h.01l.07-.1c.06-.1.16-.28.26-.54ZM9.26 9.65Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon12Quote extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon16-chevron',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"16\" \n      height=\"16\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        d=\"m6 3 5 5-5 5\" \n        stroke=\"currentColor\" \n        strokeWidth=\"2\" \n        strokeLinecap=\"round\" \n        strokeLinejoin=\"round\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon16Chevron extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon16-cancel',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"16\" \n      height=\"16\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M3.3 3.3a1 1 0 0 1 1.4 0L8 6.58l3.3-3.3a1 1 0 1 1 1.4 1.42L9.42 8l3.3 3.3a1 1 0 0 1-1.42 1.4L8 9.42l-3.3 3.3a1 1 0 0 1-1.4-1.42L6.58 8l-3.3-3.3a1 1 0 0 1 0-1.4Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon16Cancel extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon20-select-ios',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"20\" \n      height=\"20\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path\n        d=\"M8.174 18c-.473 0-.876-.21-1.208-.63l-4.602-5.82a1.727 1.727 0 0 1-.284-.465 1.423 1.423 0 0 1-.08-.474c0-.365.118-.666.355-.903s.536-.356.898-.356c.408 0 .752.18 1.03.539l3.856 5.017 7.525-12.242c.154-.243.313-.414.48-.51.165-.104.372-.156.621-.156.361 0 .657.116.889.347.23.23.346.526.346.884 0 .146-.024.292-.071.438a2.017 2.017 0 0 1-.222.456L9.39 17.335c-.284.443-.69.665-1.217.665Z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  `,\n})\nexport class TguiIcon20SelectIos extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon20-select',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"20\" \n      height=\"20\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path\n        d=\"M2.5 10.821 7 15.75l10.5-11.5\"\n        stroke=\"currentColor\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </svg>\n  `,\n})\nexport class TguiIcon20Select extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon20-question-mark',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"20\" \n      height=\"20\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path\n        d=\"M10.0605 18.5815c-1.17313 0-2.27713-.2241-3.31196-.6723-1.03484-.4427-1.94792-1.0598-2.73926-1.8511-.78581-.7913-1.40283-1.7044-1.85108-2.7393-.44824-1.0348-.67236-2.1388-.67236-3.312 0-1.17314.22412-2.27715.67236-3.31198.44825-1.03483 1.06527-1.94515 1.85108-2.73095.79134-.79134 1.70166-1.41114 2.73095-1.85938 1.03483-.44824 2.13884-.67236 3.31197-.67236 1.1788 0 2.2855.22412 3.3204.67236 1.0348.44824 1.9479 1.06804 2.7392 1.85938.7914.7858 1.4111 1.69612 1.8594 2.73095.4482 1.03483.6724 2.13884.6724 3.31198 0 1.1732-.2242 2.2772-.6724 3.312-.4483 1.0349-1.068 1.948-1.8594 2.7393-.7913.7913-1.7044 1.4084-2.7392 1.8511-1.0349.4482-2.1389.6723-3.3121.6723Zm0-1.6933c.9574 0 1.8511-.1771 2.6812-.5313.8301-.3541 1.5605-.8466 2.1914-1.4775.6309-.6309 1.1234-1.3613 1.4775-2.1914.3542-.8301.5313-1.7238.5313-2.6812 0-.95179-.1771-1.84274-.5313-2.67282-.3541-.83561-.8466-1.56884-1.4775-2.1997s-1.3641-1.12337-2.1997-1.47754c-.8301-.35417-1.7238-.53125-2.6812-.53125-.95178 0-1.84549.17708-2.68111.53125-.83007.35417-1.55778.84668-2.1831 1.47754-.62533.63086-1.11507 1.36409-1.46924 2.1997-.35417.83008-.53125 1.72103-.53125 2.67282 0 .9574.17708 1.8511.53125 2.6812.35417.8301.84391 1.5605 1.46924 2.1914.63086.6309 1.36133 1.1234 2.1914 1.4775.83562.3542 1.72933.5313 2.68111.5313Zm-.18257-5.2295c-.52572 0-.78857-.2352-.78857-.7056V10.8618c0-.3818.09407-.6917.28222-.92967.19369-.23796.43994-.45931.73882-.66406.3541-.24349.617-.45101.7885-.62256.1771-.17155.2657-.38737.2657-.64746 0-.28223-.1052-.51188-.3155-.68897-.2047-.18262-.4759-.27392-.8135-.27392-.16597 0-.32092.02767-.4648.083-.13835.05534-.26839.13558-.39014.24073-.11621.09961-.22135.22412-.31543.37353l-.13281.17432c-.07747.10514-.17155.18815-.28222.24902-.10515.06087-.23243.09131-.38184.09131-.17155 0-.32373-.05811-.45654-.17432-.13282-.11621-.19922-.27392-.19922-.47314 0-.07747.00553-.14941.0166-.21582.0166-.07194.03874-.14388.06641-.21582.12727-.38737.42057-.72217.87988-1.0044.46484-.28222 1.0542-.42334 1.76811-.42334.4869 0 .9352.08578 1.3447.25733.415.17155.7471.4178.9961.73877.249.32096.3735.7111.3735 1.17041 0 .48698-.1245.87158-.3735 1.15381-.2435.28222-.5672.55892-.9712.83007-.2767.17708-.487.34588-.6309.50638-.1439.1605-.2213.3486-.2324.5644v.0498c0 .0166-.0028.0332-.0083.0498-.0111.1661-.0858.3072-.2241.4234-.1328.1162-.3127.1743-.53957.1743Zm-.0166 2.5483c-.26563 0-.49528-.0857-.68897-.2573-.18815-.1771-.28222-.3957-.28222-.6558 0-.26.09407-.4759.28222-.6474.18815-.1771.41781-.2656.68897-.2656.27117 0 .50077.0857.68897.2573.1881.1715.2822.3901.2822.6557 0 .2657-.0941.4843-.2822.6558-.1882.1716-.4178.2573-.68897.2573Z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  `,\n})\nexport class TguiIcon20QuestionMark extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon20-chevron-down',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"20\" \n      height=\"20\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M3.29289 6.29289c.39053-.39052 1.02369-.39052 1.41422 0L10 11.5858l5.2929-5.29291c.3905-.39052 1.0237-.39052 1.4142 0 .3905.39053.3905 1.02369 0 1.41422l-6 5.99999c-.3905.3905-1.02368.3905-1.41421 0l-6-5.99999c-.39052-.39053-.39052-1.02369 0-1.41422Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon20ChevronDown extends TguiIconBase {\n} ","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\n\n@Component({\n  selector: 'tgui-icon20-copy',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"20\" \n      height=\"20\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M6.16145 2.5H9.5C10.8807 2.5 12 3.61929 12 5c0 .55229-.4477 1-1 1s-1-.44771-1-1c0-.27614-.22386-.5-.5-.5H6.2c-.57656 0-.94883.00078-1.23217.02393-.27166.02219-.37238.05987-.42182.08507-.18817.09587-.34115.24885-.43702.43701-.02519.04945-.06287.15016-.08507.42183C4.00077 5.75117 4 6.12345 4 6.7V9c0 .51259.00484.62284.01921.69509.07891.39671.389.70681.7857.78571.07224.0144.1825.0192.69509.0192.55228 0 1 .4477 1 1s-.44772 1-1 1h-.08389c-.3807.0003-.70853.0006-1.00139-.0576-1.19007-.2368-2.12036-1.1671-2.35708-2.3571-.05825-.29288-.05799-.62072-.05769-1.00141C1.99997 9.05621 2 9.02825 2 9l-.00001-2.33854c-.00001-.52715-.00003-.98191.03058-1.35649.0323-.39534.10361-.78856.29641-1.16694.28762-.56449.74656-1.02343 1.31104-1.31105.37838-.19279.7716-.26411 1.16695-.29641.37457-.0306.82933-.03059 1.35648-.03057Zm6.00005 5h1.677c.5272-.00002.982-.00003 1.3565.03057.3954.0323.7886.10362 1.167.29641.5645.28762 1.0234.74656 1.311 1.31105.1928.37838.2641.7716.2964 1.16697.0306.3746.0306.8293.0306 1.3565v1.677c0 .5272 0 .982-.0306 1.3565-.0323.3954-.1036.7886-.2964 1.167-.2876.5645-.7465 1.0234-1.311 1.311-.3784.1928-.7716.2641-1.167.2964-.3746.0306-.8293.0306-1.3565.0306h-1.677c-.5272 0-.982 0-1.3565-.0306-.3954-.0323-.7886-.1036-1.16698-.2964-.56448-.2876-1.02342-.7465-1.31104-1.311-.1928-.3784-.26411-.7716-.29641-1.167-.03061-.3745-.03059-.8293-.03058-1.3565v-1.677c-.00001-.5272-.00003-.982.03058-1.3565.0323-.39537.10361-.78859.29641-1.16697.28762-.56449.74656-1.02343 1.31104-1.31105.37838-.19279.77158-.26411 1.16698-.29641.3745-.0306.8293-.03059 1.3565-.03057Zm-1.1937 2.02393c-.2716.02219-.3724.05987-.4218.08507-.1882.09587-.3411.24885-.437.437-.0252.0495-.0629.1502-.0851.4218-.0231.2834-.0239.6556-.0239 1.2322v1.6c0 .5766.0008.9488.0239 1.2322.0222.2716.0599.3723.0851.4218.0959.1882.2488.3411.437.437.0494.0252.1502.0629.4218.0851.2834.0231.6556.0239 1.2322.0239h1.6c.5765 0 .9488-.0008 1.2322-.0239.2716-.0222.3723-.0599.4218-.0851.1881-.0959.3411-.2488.437-.437.0252-.0495.0629-.1502.0851-.4218.0231-.2834.0239-.6556.0239-1.2322v-1.6c0-.5766-.0008-.9488-.0239-1.2322-.0222-.2716-.0599-.3723-.0851-.4218-.0959-.18815-.2489-.34113-.437-.437-.0495-.0252-.1502-.06288-.4218-.08507C14.7488 9.50078 14.3765 9.5 13.8 9.5h-1.6c-.5766 0-.9488.00078-1.2322.02393Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon20Copy extends TguiIconBase {} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon24-close',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"24\" \n      height=\"24\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <g opacity=\".5\" fill=\"#000\" clipPath=\"url(#close_a)\">\n        <path\n          d=\"M12 24c6.5647 0 12-5.4471 12-12 0-6.56471-5.4471-12-12.0118-12C5.43529 0 0 5.43529 0 12c0 6.5529 5.44705 12 12 12Z\"\n          fill-opacity=\".04\" />\n        <path\n          d=\"M7.86242 17.1429c-.56394 0-1.00528-.4542-1.00528-1.0187 0-.2701.09807-.5279.29422-.7121L10.5472 12 7.15136 8.60006c-.19615-.19637-.29422-.44187-.29422-.71189 0-.57689.44134-1.00648 1.00528-1.00648.28196 0 .50263.09819.69878.28231l3.4204 3.4122 3.4449-3.42448c.2084-.20866.4291-.29458.6988-.29458.5639 0 1.0176.44187 1.0176 1.00648 0 .28231-.0859.50324-.3066.72417L13.4282 12l3.3959 3.4c.2084.1841.3065.4417.3065.7242 0 .5645-.4536 1.0187-1.0298 1.0187-.282 0-.5395-.0982-.7234-.2947l-3.3958-3.4121-3.38363 3.4121c-.19613.1965-.45359.2947-.73555.2947Z\"\n          fill-opacity=\".8\" fill=\"currentColor\"/>\n      </g>\n      <defs>\n        <clipPath id=\"close_a\">\n          <path fill=\"#fff\" d=\"M0 0h24v24H0z\" />\n        </clipPath>\n      </defs>\n    </svg>\n  `,\n})\nexport class TguiIcon24Close extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon24-sun-low',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"24\" \n      height=\"24\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M12 15.45c1.9054 0 3.45-1.5446 3.45-3.45 0-1.9054-1.5446-3.45-3.45-3.45-1.9054 0-3.45 1.5446-3.45 3.45 0 1.9054 1.5446 3.45 3.45 3.45Zm0 1.8c2.8995 0 5.25-2.3505 5.25-5.25 0-2.89949-2.3505-5.25-5.25-5.25-2.89949 0-5.25 2.35051-5.25 5.25 0 2.8995 2.35051 5.25 5.25 5.25Z\"\n        fill=\"currentColor\" \n      />\n      <circle cx=\"18.5\" cy=\"5.5\" r=\"1\" fill=\"currentColor\" />\n      <circle cx=\"5.5\" cy=\"5.5\" r=\"1\" fill=\"currentColor\" />\n      <circle cx=\"20.5\" cy=\"12\" r=\"1\" fill=\"currentColor\" />\n      <circle cx=\"3.5\" cy=\"12\" r=\"1\" fill=\"currentColor\" />\n      <circle cx=\"18.5\" cy=\"18.5\" r=\"1\" fill=\"currentColor\" />\n      <path d=\"M13 20.5c0 .5523-.4477 1-1 1s-1-.4477-1-1 .4477-1 1-1 1 .4477 1 1Z\" fill=\"currentColor\" />\n      <circle cx=\"5.5\" cy=\"18.5\" r=\"1\" fill=\"currentColor\" />\n      <path d=\"M13 3.5c0 .55228-.4477 1-1 1s-1-.44772-1-1 .4477-1 1-1 1 .44772 1 1Z\" fill=\"currentColor\" />\n    </svg>\n  `,\n})\nexport class TguiIcon24SunLow extends TguiIconBase {\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon24-qr',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"24\" \n      height=\"24\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M6.96424 2.48363h.07906c.63394-.00002 1.16862-.00003 1.60495.03899.4573.0409.89367.13017 1.30119.36235.46206.26326.84726.64277 1.11566 1.10156.2376.40608.3289.84138.3706 1.29567.0397.4322.0397.96123.0397 1.58569v.08066c0 .62446 0 1.1535-.0397 1.58569-.0417.45429-.133.88959-.3706 1.29568-.2684.45878-.6536.83828-1.11566 1.10158-.40752.2322-.84389.3214-1.30119.3623-.43632.039-.971.039-1.60493.039h-.07909c-.63393 0-1.16861 0-1.60493-.039-.4573-.0409-.89368-.1301-1.30119-.3623-.46208-.2633-.84726-.6428-1.11567-1.10158-.23758-.40609-.3289-.84139-.37063-1.29568-.03969-.4322-.03968-.96124-.03966-1.58572v-.08059c-.00002-.62448-.00003-1.15353.03966-1.58573.04173-.45429.13305-.88959.37063-1.29567.26841-.45879.65359-.8383 1.11566-1.10156.40752-.23218.8439-.32145 1.3012-.36235.43632-.03902.97101-.03901 1.60494-.03899ZM5.51965 4.31547c-.33464.02993-.48072.08233-.57048.13347-.18947.10795-.34534.26236-.4531.44655-.04952.08464-.10175.22412-.1318.55134-.03123.34005-.03212.78578-.03212 1.46139 0 .67561.00089 1.12135.03212 1.46139.03005.32722.08228.4667.1318.55134.10776.18419.26363.3386.4531.44656.08976.05114.23584.10354.57048.13347.34657.03099.80016.03183 1.48412.03183.68397 0 1.13756-.00084 1.48413-.03183.33464-.02993.48071-.08233.57048-.13347.18947-.10796.34534-.26237.45309-.44656.04953-.08464.10176-.22412.13181-.55134.03123-.34004.03212-.78578.03212-1.46139 0-.67561-.00089-1.12134-.03212-1.46139-.03005-.32722-.08228-.4667-.13181-.55134-.10775-.18419-.26362-.3386-.4531-.44655-.08975-.05114-.23583-.10354-.57047-.13347-.34657-.031-.80016-.03184-1.48413-.03184-.68396 0-1.13755.00084-1.48412.03184ZM16.9648 2.48363h.079c.634-.00002 1.1687-.00003 1.605.03899.4573.0409.8937.13017 1.3012.36235.4621.26326.8472.64277 1.1157 1.10156.2375.40608.3289.84138.3706 1.29567.0397.4322.0397.96125.0396 1.58574v.08057c.0001.62448.0001 1.15353-.0396 1.58573-.0417.45429-.1331.88959-.3706 1.29568-.2685.45878-.6536.83828-1.1157 1.10158-.4075.2322-.8439.3214-1.3012.3623-.4363.039-.971.039-1.6049.039h-.0791c-.634 0-1.1686 0-1.605-.039-.4573-.0409-.8936-.1301-1.3012-.3623-.462-.2633-.8472-.6428-1.1156-1.10158-.2376-.40609-.3289-.84139-.3706-1.29568-.0397-.4322-.0397-.96125-.0397-1.58573v-.08057c0-.62449 0-1.15353.0397-1.58574.0417-.45429.133-.88959.3706-1.29567.2684-.45879.6536-.8383 1.1156-1.10156.4076-.23218.8439-.32145 1.3012-.36235.4364-.03902.971-.03901 1.605-.03899Zm-1.4446 1.83184c-.3347.02993-.4807.08233-.5705.13347-.1895.10795-.3453.26236-.4531.44655-.0495.08464-.1017.22412-.1318.55134-.0312.34005-.0321.78578-.0321 1.46139 0 .67561.0009 1.12135.0321 1.46139.0301.32722.0823.4667.1318.55134.1078.18419.2636.3386.4531.44656.0898.05114.2358.10354.5705.13347.3466.03099.8001.03183 1.4841.03183.684 0 1.1376-.00084 1.4841-.03183.3347-.02993.4808-.08233.5705-.13347.1895-.10796.3454-.26237.4531-.44656.0495-.08464.10176-.22412.1318-.55134.0313-.34004.0321-.78578.0321-1.46139 0-.67561-.0008-1.12134-.0321-1.46139-.03-.32722-.0823-.4667-.1318-.55134-.1077-.18419-.2636-.3386-.4531-.44655-.0897-.05114-.2358-.10354-.5705-.13347-.3465-.031-.8001-.03184-1.4841-.03184-.684 0-1.1375.00084-1.4841.03184Z\"\n        fill=\"currentColor\" \n      />\n      <path\n        d=\"M14.7468 13.5283c.5681 0 1.0286.4545 1.0286 1.0151 0 .5606-.4605 1.0151-1.0286 1.0151-.5681 0-1.0287-.4545-1.0287-1.0151 0-.5606.4606-1.0151 1.0287-1.0151Zm2.4001 2.3686c.5681 0 1.0286.4544 1.0286 1.0151 0 .5606-.4605 1.015-1.0286 1.015-.5681 0-1.0286-.4544-1.0286-1.015 0-.5607.4605-1.0151 1.0286-1.0151Zm2.4001-2.3686c.5681 0 1.0287.4545 1.0287 1.0151 0 .5606-.4606 1.0151-1.0287 1.0151-.5681 0-1.0286-.4545-1.0286-1.0151 0-.5606.4605-1.0151 1.0286-1.0151Zm-4.8002 4.7371c.5681 0 1.0286.4545 1.0286 1.0151 0 .5606-.4605 1.0151-1.0286 1.0151-.5681 0-1.0287-.4545-1.0287-1.0151 0-.5606.4606-1.0151 1.0287-1.0151Zm4.8002 0c.5681 0 1.0287.4545 1.0287 1.0151 0 .5606-.4606 1.0151-1.0287 1.0151-.5681 0-1.0286-.4545-1.0286-1.0151 0-.5606.4605-1.0151 1.0286-1.0151Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon24Qr extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon24-person-remove',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"24\" \n      height=\"24\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M9.40001 3.89998c-1.47856 0-2.7 1.22035-2.7 2.75413s1.22144 2.75414 2.7 2.75414c1.47859 0 2.69999-1.22036 2.69999-2.75414 0-1.53378-1.2214-2.75413-2.69999-2.75413Zm-4.5 2.75413c0-2.50247 2.0021-4.55413 4.5-4.55413 2.49789 0 4.49999 2.05166 4.49999 4.55413 0 2.50247-2.0021 4.55409-4.49999 4.55409-2.4979 0-4.5-2.05162-4.5-4.55409Zm9.36629 8.79329c-.2335.4434-.3663.951-.3663 1.4924 0 1.758 1.4005 3.1602 3.1 3.1602.5337 0 1.0362-.1371 1.4755-.3801l-4.2092-4.2725Zm-.7352-2.0108c-.8855.8992-1.4311 2.1395-1.4311 3.5032 0 2.7267 2.1812 4.9602 4.9 4.9602 1.3573 0 2.5849-.5597 3.4696-1.4576.8843-.8977 1.4304-2.1375 1.4304-3.5026 0-2.7267-2.1812-4.9601-4.9-4.9601-1.3591 0-2.5838.5581-3.4689 1.4569Zm1.9938.7236 4.2086 4.2719c.2338-.4439.3665-.9515.3665-1.4923 0-1.758-1.4005-3.1601-3.1-3.1601-.5323 0-1.0353.1375-1.4751.3805ZM3.53465 13.847c.84767-.7943 1.88294-1.0553 2.66536-1.0553h4.37769c.497 0 .9.4029.9.9 0 .4971-.403.9-.9.9H6.20001c-.41759 0-.98231.145-1.43465.5688-.43226.405-.86535 1.1619-.86535 2.5914 0 .497-.40295.9-.9.9-.49706 0-.9-.403-.9-.9 0-1.8187.56691-3.0919 1.43464-3.9049Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon24PersonRemove extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon24-notifications',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"24\" \n      height=\"24\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M12.5 4.306c-.142 0-.278.004-.41.012-1.748.105-2.771.876-3.382 1.759-.637.921-.856 2.018-.856 2.738v3.2c0 .742 0 1.316-.177 1.857-.036.11-.077.219-.124.325-.23.52-.61.94-1.104 1.482l-.082.09c-.476.524-.783.865-.971 1.124.313.036.765.038 1.463.038h11.285c.698 0 1.15-.002 1.463-.038-.188-.26-.495-.6-.971-1.124l-.082-.09c-.493-.543-.874-.962-1.104-1.482a3.533 3.533 0 0 1-.124-.325c-.178-.541-.178-1.115-.177-1.857v-3.2c0-.72-.22-1.817-.856-2.738-.61-.883-1.635-1.654-3.382-1.759a6.86 6.86 0 0 0-.41-.012Zm-.512-1.791a8.57 8.57 0 0 1 1.023 0c2.291.137 3.8 1.195 4.713 2.516.887 1.283 1.181 2.764 1.181 3.784v3.077c0 .922.011 1.178.085 1.403.017.053.037.105.06.156.095.216.258.411.87 1.086l.04.043c.446.492.838.924 1.096 1.291.25.356.562.903.398 1.55a1.781 1.781 0 0 1-.212.501c-.35.565-.952.704-1.375.758-.438.057-1.012.057-1.667.057H6.8c-.656 0-1.23 0-1.668-.057-.423-.054-1.026-.193-1.375-.758a1.784 1.784 0 0 1-.212-.5c-.164-.648.148-1.195.398-1.55.258-.368.65-.8 1.097-1.292l.04-.043c.612-.675.774-.87.87-1.086a1.68 1.68 0 0 0 .059-.156c.074-.225.084-.48.084-1.403V8.815c0-1.02.295-2.501 1.182-3.784.913-1.32 2.422-2.379 4.713-2.516Z\"\n        fill=\"currentColor\" \n      />\n      <path\n        d=\"M12.5 22.5c.913 0 1.69-.712 1.976-1.706.13-.452-.255-.843-.714-.843h-2.526c-.459 0-.844.39-.714.843.286.994 1.063 1.706 1.977 1.706Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon24Notifications extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon24-chevron-right',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"24\" \n      height=\"24\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M7.29289 3.79289c.39053-.39052 1.02369-.39052 1.41422 0l7.49999 7.50001c.3905.3905.3905 1.0237 0 1.4142l-7.49999 7.5c-.39053.3905-1.02369.3905-1.41422 0-.39052-.3905-.39052-1.0237 0-1.4142L14.0858 12 7.29289 5.20711c-.39052-.39053-.39052-1.02369 0-1.41422Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon24ChevronRight extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon24-chevron-left',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"24\" \n      height=\"24\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M15.7071 3.79289c-.3905-.39052-1.0237-.39052-1.4142 0L6.79289 11.2929c-.39052.3905-.39052 1.0237 0 1.4142l7.50001 7.5c.3905.3905 1.0237.3905 1.4142 0 .3905-.3905.3905-1.0237 0-1.4142L8.91421 12l6.79289-6.79289c.3905-.39053.3905-1.02369 0-1.41422Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon24ChevronLeft extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon24-chat',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"24\" \n      height=\"24\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M6.665 18.088A4.269 4.269 0 0 0 7 16.37c-1.54-1.259-2.5-3.04-2.5-5.017 0-3.815 3.582-6.908 8-6.908 4.419 0 8 3.093 8 6.908 0 3.816-3.581 6.909-8 6.909-.69 0-1.36-.076-2-.218-.423.464-1.236 1.062-2.59 1.539-.78.274-1.741.508-2.91.652.644-.635 1.288-1.27 1.665-2.148Zm4.38 1.88c.475.062.961.095 1.455.095 5.156 0 9.8-3.66 9.8-8.709 0-5.048-4.644-8.708-9.8-8.708-5.155 0-9.8 3.66-9.8 8.708 0 2.232.938 4.227 2.414 5.73-.175.65-.623 1.126-1.379 1.871a1.8 1.8 0 0 0 1.485 3.068c2.768-.341 4.648-1.165 5.824-2.056Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon24Chat extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon24-channel',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"25\" \n      height=\"24\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M20.3345 4.69583c-.346-.56406-.9651-.85952-1.5842-.78415-.1303.01587-.3793.1062-.8925.47099-.4992.35487-1.1316.88076-2.0279 1.62737l-1.0131.84384v7.36662l1.201.8465c.8741.616 1.4867 1.047 1.9691 1.3339.4916.2923.7299.3598.8607.3676.5994.0357 1.1818-.272 1.5046-.8224.0752-.1282.1565-.381.2001-.9651.0428-.574.0434-1.34.0434-2.4288V8.38075c0-1.18556-.0006-2.02414-.0468-2.64881-.0474-.6407-.1364-.90909-.2144-1.03611Zm-7.3177 9.09147V7.33221H7.32665c-.60766 0-1.01705.00052-1.33441.02279-.30876.02167-.46285.06072-.56716.10516-.40136.17099-.72803.50259-.90011.9299-.04666.11586-.08557.28274-.10693.60477-.02187.32964-.02233.7538-.02233 1.37777v1.3914c0 .294.00084.3838.00668.4514.07352.8512.72316 1.494 1.50317 1.5653.06162.0057.14481.0066.43226.0066h6.67898Zm.5742-8.25509 1.1174-.93069c.8589-.71543 1.5442-1.28623 2.1065-1.68593.555-.39451 1.115-.71731 1.7179-.79071 1.3362-.16268 2.6314.481 3.3361 1.62975.3161.51527.424 1.15357.4751 1.84452.0517.69915.0517 1.60468.0517 2.74323v4.24772c0 1.0423 0 1.8757-.0484 2.5247-.0482.6468-.1505 1.2443-.4425 1.742-.6563 1.1189-1.8713 1.7855-3.1642 1.7085-.5788-.0345-1.1262-.2918-1.6737-.6173-.5497-.3269-1.2194-.7989-2.0539-1.387l-1.3815-.9737h-.2358v3.0331c0 1.7872-1.415 3.2796-3.2135 3.2796-.60764 0-1.21602-.1743-1.73688-.5279-1.1253-.7638-1.95819-1.4676-2.44463-2.5572-.38934-.8721-.52097-1.9169-.55377-3.2815-1.53933-.2768-2.70107-1.5796-2.83785-3.1631-.01344-.1556-.0134-.33-.01336-.5655v-1.4622c-.00001-.5865-.00001-1.0706.02628-1.46691.02724-.41065.08554-.79115.23328-1.15803.34635-.86004 1.01405-1.55123 1.86428-1.91347.36504-.15552.74311-.21645 1.14668-.24478.38788-.02722.86074-.02721 1.4291-.0272H13.591ZM7.24948 15.5873c.03562 1.2342.15547 1.9576.39485 2.4938.27219.6097.74578 1.078 1.81191 1.8017.20786.1411.46057.2172.72596.2172.7569 0 1.4135-.6383 1.4135-1.4796v-3.0331H7.24948Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon24Channel extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon24-cancel',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"24\" \n      height=\"24\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M4.5 4.44a.9.9 0 0 1 1.27 0L12 10.56l6.22-6.14a.9.9 0 0 1 1.27 1.28l-6.21 6.13 6.2 6.13a.9.9 0 0 1-1.26 1.28L12 13.1l-6.23 6.15a.9.9 0 1 1-1.26-1.28l6.2-6.13-6.2-6.13a.9.9 0 0 1-.01-1.27Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon24Cancel extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon24-chevron-down',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"24\" \n      height=\"24\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M4.3 7.54a1 1 0 0 1 1.4 0l6.8 6.8 6.8-6.8a1 1 0 1 1 1.4 1.42l-7.5 7.5a1 1 0 0 1-1.4 0l-7.5-7.5a1 1 0 0 1 0-1.42Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon24ChevronDown extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon28-close',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"28\" \n      height=\"28\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <g clipPath=\"url(#close_a)\" fill=\"currentColor\">\n        <path \n          d=\"M14 28c7.66 0 14-6.35 14-14 0-7.66-6.35-14-14.01-14A14.1 14.1 0 0 0 0 14c0 7.65 6.35 14 14 14Z\"\n          fill-opacity=\".04\" \n        />\n        <path \n          opacity=\".5\"\n          d=\"M9.17 20C8.51 20 8 19.47 8 18.81c0-.31.11-.61.34-.83L12.31 14l-3.97-3.97A1.15 1.15 0 0 1 8 9.2c0-.67.51-1.17 1.17-1.17.33 0 .59.11.82.33l3.99 3.98 4.02-4c.24-.24.5-.34.81-.34.66 0 1.19.52 1.19 1.17 0 .33-.1.6-.36.85L15.67 14l3.96 3.97c.24.21.36.51.36.84 0 .66-.53 1.19-1.2 1.19-.33 0-.64-.11-.85-.34l-3.96-3.98-3.95 3.98c-.23.23-.53.34-.86.34Z\"\n          fill-opacity=\".8\" \n        />\n      </g>\n      <defs>\n        <clipPath id=\"close_a\">\n          <path fill=\"#fff\" d=\"M0 0h28v28H0z\" />\n        </clipPath>\n      </defs>\n    </svg>\n  `,\n})\nexport class TguiIcon28Close extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon28-close-ambient',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"28\" \n      height=\"28\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <g clipPath=\"url(#close_ambient_a)\">\n        <path \n          d=\"M14 28c7.66 0 14-6.35 14-14 0-7.66-6.35-14-14.01-14A14.1 14.1 0 0 0 0 14c0 7.65 6.35 14 14 14Z\"\n          fill=\"#000\" \n          fill-opacity=\".1\" \n        />\n        <path\n          d=\"M9.17 20C8.51 20 8 19.47 8 18.81c0-.31.11-.61.34-.83L12.31 14l-3.97-3.97A1.15 1.15 0 0 1 8 9.2c0-.67.51-1.17 1.17-1.17.33 0 .59.11.82.33l3.99 3.98 4.02-4c.24-.24.5-.34.81-.34.66 0 1.19.52 1.19 1.17 0 .33-.1.6-.36.85L15.67 14l3.96 3.97c.24.21.36.51.36.84 0 .66-.53 1.19-1.2 1.19-.33 0-.64-.11-.85-.34l-3.96-3.98-3.95 3.98c-.23.23-.53.34-.86.34Z\"\n          fill=\"#fff\" \n        />\n      </g>\n      <defs>\n        <clipPath id=\"close_ambient_a\">\n          <path fill=\"#fff\" d=\"M0 0h28v28H0z\" />\n        </clipPath>\n      </defs>\n    </svg>\n  `,\n})\nexport class TguiIcon28CloseAmbient extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon28-stats',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"28\" \n      height=\"28\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M13.1 4.4a9.51 9.51 0 0 0-8.7 9.41 9.53 9.53 0 0 0 9.6 9.46c5 0 9.1-3.76 9.55-8.56h-7.29c-.5 0-.96 0-1.33-.05a2.04 2.04 0 0 1-1.23-.55c-.36-.36-.5-.8-.55-1.22-.05-.38-.05-.84-.05-1.34V4.4Zm1.8 0v7.1a9.97 9.97 0 0 0 .08 1.34l.19.04c.24.03.58.03 1.15.03h7.23A9.53 9.53 0 0 0 14.9 4.4Zm.06 8.43h.01Zm.02.01v.01Zm-12.38.97C2.6 7.6 7.72 2.56 14 2.56S25.4 7.59 25.4 13.8c0 6.23-5.12 11.26-11.4 11.26S2.6 20.04 2.6 13.81Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon28Stats extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon28-heart',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"28\" \n      height=\"28\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M14 5.126c-.994-.932-2.343-1.678-3.823-1.95-1.761-.323-3.71.03-5.402 1.524-1.128.996-1.833 2.563-2.067 4.256a9.678 9.678 0 0 0 .834 5.41c.607 1.287 2.054 2.908 3.557 4.4 1.537 1.523 3.247 3.023 4.5 4.083a3.706 3.706 0 0 0 4.803 0c1.252-1.06 2.962-2.56 4.499-4.084 1.503-1.491 2.95-3.112 3.558-4.4a9.677 9.677 0 0 0 .833-5.409c-.233-1.693-.939-3.26-2.067-4.256-1.692-1.495-3.64-1.847-5.402-1.524-1.48.272-2.828 1.018-3.823 1.95Zm-4.148-.18c-1.274-.233-2.648.01-3.886 1.103-.72.635-1.283 1.758-1.475 3.153a7.878 7.878 0 0 0 .678 4.395c.455.964 1.677 2.381 3.198 3.89 1.488 1.477 3.159 2.942 4.394 3.988.72.61 1.757.61 2.478 0 1.235-1.046 2.906-2.511 4.394-3.988 1.521-1.509 2.743-2.926 3.198-3.89a7.878 7.878 0 0 0 .678-4.395c-.192-1.395-.756-2.518-1.475-3.153-1.238-1.093-2.612-1.336-3.886-1.103-1.304.24-2.502.984-3.271 1.857a1.17 1.17 0 0 1-1.754 0c-.768-.873-1.967-1.617-3.271-1.857Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon28Heart extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon28-edit',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"28\" \n      height=\"28\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M18.92 3.4c.21-.03.43-.03.64 0 .58.06 1.04.32 1.47.66.41.32.86.77 1.4 1.29l.06.07c.55.54 1 1 1.34 1.4.35.44.62.91.7 1.5.02.21.02.43 0 .65a2.89 2.89 0 0 1-.7 1.5c-.33.4-.8.86-1.34 1.4L10.48 23.73l-.08.08a4.6 4.6 0 0 1-1.23.97 2.9 2.9 0 0 1-.26.11c-.47.17-.97.17-1.56.17H7.12c-.74 0-1.37 0-1.88-.06a2.9 2.9 0 0 1-1.5-.55c-.2-.15-.37-.32-.52-.51a2.9 2.9 0 0 1-.54-1.5c-.06-.51-.06-1.14-.06-1.88v-.16c0-.58 0-1.07.16-1.53l.14-.33c.22-.44.56-.78.97-1.19l.08-.08L16.06 5.35c.53-.52.98-.97 1.39-1.29.43-.34.9-.6 1.47-.67Zm.44 1.78h-.24c-.1.01-.26.06-.56.3-.32.25-.7.62-1.27 1.18l-.7.7 3.96 3.9.64-.64c.6-.58.98-.96 1.23-1.28.25-.3.3-.46.31-.57v-.25c-.01-.1-.06-.27-.3-.57-.26-.32-.65-.7-1.24-1.29a17.1 17.1 0 0 0-1.27-1.18c-.3-.24-.45-.29-.56-.3Zm-.1 7.34-3.95-3.9-10.07 9.94c-.53.52-.64.64-.7.77l-.06.13a17.21 17.21 0 0 0-.01 2.77c.04.38.11.52.18.6.05.08.12.14.19.2.08.07.23.14.6.18.4.05.92.05 1.73.05h.07a3.66 3.66 0 0 0 1.17-.1c.13-.07.26-.18.8-.71l10.06-9.93Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon28Edit extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon28-devices',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"28\" \n      height=\"28\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M4.03 7.9c0-1.59 1.3-2.88 2.89-2.88h16.74a.9.9 0 0 1 0 1.8H6.92c-.6 0-1.09.48-1.09 1.08v12.9h9.63a.9.9 0 0 1 0 1.8H2a.9.9 0 1 1 0-1.8h2.03V7.9Zm16.93 3.77c-.6 0-1.08.5-1.08 1.1v6.95c0 .6.48 1.08 1.08 1.08h3.05c.6 0 1.09-.48 1.09-1.08v-6.96c0-.6-.49-1.09-1.09-1.09h-3.05Zm-2.88 1.1c0-1.6 1.29-2.9 2.88-2.9h3.05c1.6 0 2.89 1.3 2.89 2.9v6.95c0 1.6-1.3 2.88-2.89 2.88h-3.05c-1.6 0-2.88-1.29-2.88-2.88v-6.96Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon28Devices extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon28-chat',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"28\" \n      height=\"28\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M7.15 20.64c.27-.6.45-1.29.45-2.13a7.55 7.55 0 0 1-2.91-5.84c0-4.44 4.17-8.04 9.3-8.04 5.15 0 9.32 3.6 9.32 8.04 0 4.44-4.17 8.04-9.31 8.04-.8 0-1.58-.1-2.33-.26a7.55 7.55 0 0 1-3.19 1.86c-.87.29-1.94.54-3.21.7a8.4 8.4 0 0 0 1.88-2.37Zm5.12 1.93c.57.08 1.14.12 1.73.12 5.95 0 11.29-4.23 11.29-10.02 0-5.8-5.34-10.02-11.3-10.02-5.94 0-11.28 4.22-11.28 10.02 0 2.58 1.1 4.9 2.82 6.63-.2.82-.75 1.4-1.65 2.3a1.98 1.98 0 0 0 1.63 3.37c3.24-.4 5.42-1.37 6.76-2.4Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon28Chat extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon28-attach',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"28\" \n      height=\"28\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M20.286 6.445c-2.342-2.307-6.19-2.307-8.53 0l-5.353 5.272a.99.99 0 0 1-1.388-1.41l5.352-5.272c3.112-3.065 8.196-3.065 11.307 0a7.598 7.598 0 0 1 0 10.885l-7.347 7.238c-2.355 2.32-6.198 2.32-8.553 0a5.762 5.762 0 0 1 0-8.253l7.381-7.27c1.585-1.56 4.141-1.632 5.814-.167a4.06 4.06 0 0 1 .082 6.068l-6.158 5.688a.99.99 0 0 1-1.343-1.454l6.16-5.687c.93-.859.91-2.29-.044-3.127a2.315 2.315 0 0 0-3.122.088l-7.381 7.27a3.784 3.784 0 0 0 0 5.435c1.584 1.56 4.191 1.56 5.775 0l7.348-7.238a5.62 5.62 0 0 0 0-8.066Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon28Attach extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon28-archive',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"28\" \n      height=\"29\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M9.72 5.35c-.59 0-1.14.25-1.54.67l-.9.98H20.7l-.9-.98c-.4-.42-.95-.67-1.53-.67H9.72ZM22.29 8.8H5.7c-.19.32-.3.7-.3 1.08V20.2c0 1.7 1.38 3.07 3.08 3.07h11.05c1.7 0 3.07-1.37 3.07-3.07V9.88c0-.39-.1-.76-.3-1.08ZM4.54 7.33c-.6.7-.94 1.61-.94 2.55V20.2c0 2.7 2.18 4.87 4.87 4.87h11.05c2.69 0 4.87-2.18 4.87-4.87V9.88c0-.98-.36-1.91-1.02-2.63l-2.24-2.44a3.88 3.88 0 0 0-2.86-1.26H9.72c-1.09 0-2.13.46-2.86 1.26L4.62 7.25a4.13 4.13 0 0 0-.08.08ZM14 11.55c.5 0 .9.4.9.9v5.36l1.83-1.75a.9.9 0 0 1 1.25 1.3l-3.36 3.2a.9.9 0 0 1-1.24 0l-3.35-3.2a.9.9 0 1 1 1.24-1.3l1.83 1.75v-5.36c0-.5.4-.9.9-.9Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon28Archive extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon28-add-circle',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"29\" \n      height=\"28\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M14.5 3.9C8.92193 3.9 4.40001 8.42192 4.40001 14c0 5.5781 4.52192 10.1 10.09999 10.1 5.5781 0 10.1-4.5219 10.1-10.1 0-5.57808-4.5219-10.1-10.1-10.1ZM2.60001 14c0-6.57219 5.32781-11.9 11.89999-11.9 6.5722 0 11.9 5.32781 11.9 11.9 0 6.5722-5.3278 11.9-11.9 11.9-6.57218 0-11.89999-5.3278-11.89999-11.9ZM14.5 8.6c.4971 0 .9.40294.9.9v3.6H19c.4971 0 .9.4029.9.9 0 .4971-.4029.9-.9.9h-3.6v3.6c0 .4971-.4029.9-.9.9-.4971 0-.9-.4029-.9-.9v-3.6H10c-.49705 0-.89999-.4029-.89999-.9 0-.4971.40294-.9.89999-.9h3.6V9.5c0-.49706.4029-.9.9-.9Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon28AddCircle extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon32-profile-colored-square',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"33\" \n      height=\"32\" \n      viewBox=\"0 0 33 32\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path\n        d=\"M1.5 10.6C1.5 7.23968 1.5 5.55953 2.15396 4.27606C2.7292 3.14708 3.64708 2.2292 4.77606 1.65396C6.05953 1 7.73969 1 11.1 1H21.9C25.2603 1 26.9405 1 28.2239 1.65396C29.3529 2.2292 30.2708 3.14708 30.846 4.27606C31.5 5.55953 31.5 7.23969 31.5 10.6V21.4C31.5 24.7603 31.5 26.4405 30.846 27.7239C30.2708 28.8529 29.3529 29.7708 28.2239 30.346C26.9405 31 25.2603 31 21.9 31H11.1C7.73968 31 6.05953 31 4.77606 30.346C3.64708 29.7708 2.7292 28.8529 2.15396 27.7239C1.5 26.4405 1.5 24.7603 1.5 21.4V10.6Z\"\n        fill=\"#008AFF\" />\n      <path\n        d=\"M18.459 13.2759H22.9912C23.1351 13.2759 23.2568 13.2261 23.3564 13.1265C23.4561 13.0269 23.5059 12.9051 23.5059 12.7612C23.5059 12.6174 23.4561 12.4984 23.3564 12.4043C23.2568 12.3047 23.1351 12.2549 22.9912 12.2549H18.459C18.3096 12.2549 18.1851 12.3047 18.0854 12.4043C17.9858 12.4984 17.936 12.6174 17.936 12.7612C17.936 12.9051 17.9858 13.0269 18.0854 13.1265C18.1851 13.2261 18.3096 13.2759 18.459 13.2759ZM18.459 16.5298H22.9912C23.1351 16.5298 23.2568 16.48 23.3564 16.3804C23.4561 16.2808 23.5059 16.1562 23.5059 16.0068C23.5059 15.8685 23.4561 15.7523 23.3564 15.6582C23.2568 15.5586 23.1351 15.5088 22.9912 15.5088H18.459C18.3096 15.5088 18.1851 15.5586 18.0854 15.6582C17.9858 15.7523 17.936 15.8685 17.936 16.0068C17.936 16.1562 17.9858 16.2808 18.0854 16.3804C18.1851 16.48 18.3096 16.5298 18.459 16.5298ZM18.459 19.7754H22.9912C23.1351 19.7754 23.2568 19.7284 23.3564 19.6343C23.4561 19.5347 23.5059 19.4157 23.5059 19.2773C23.5059 19.1335 23.4561 19.0117 23.3564 18.9121C23.2568 18.807 23.1351 18.7544 22.9912 18.7544H18.459C18.3096 18.7544 18.1851 18.807 18.0854 18.9121C17.9858 19.0117 17.936 19.1335 17.936 19.2773C17.936 19.4157 17.9858 19.5347 18.0854 19.6343C18.1851 19.7284 18.3096 19.7754 18.459 19.7754ZM9.80957 19.8335H16.2925C16.4253 19.8335 16.5249 19.792 16.5913 19.709C16.6632 19.626 16.6992 19.5236 16.6992 19.4019C16.6992 19.2026 16.6245 18.9508 16.4751 18.6465C16.3312 18.3366 16.1071 18.0267 15.8027 17.7168C15.5039 17.4014 15.1248 17.1385 14.6655 16.9282C14.2062 16.7179 13.6667 16.6128 13.0469 16.6128C12.4271 16.6128 11.8875 16.7179 11.4282 16.9282C10.9744 17.1385 10.5954 17.4014 10.291 17.7168C9.99219 18.0267 9.76807 18.3366 9.61865 18.6465C9.47477 18.9508 9.40283 19.2026 9.40283 19.4019C9.40283 19.5236 9.43604 19.626 9.50244 19.709C9.57438 19.792 9.67676 19.8335 9.80957 19.8335ZM13.0469 16.0317C13.5505 16.0317 13.9793 15.8436 14.3335 15.4673C14.6877 15.091 14.8647 14.6178 14.8647 14.0479C14.8647 13.6937 14.7817 13.37 14.6157 13.0767C14.4552 12.7834 14.2367 12.5482 13.96 12.3711C13.6888 12.194 13.3844 12.1055 13.0469 12.1055C12.7148 12.1055 12.4105 12.194 12.1338 12.3711C11.8571 12.5482 11.6357 12.7834 11.4697 13.0767C11.3092 13.37 11.229 13.6937 11.229 14.0479C11.229 14.6178 11.4061 15.091 11.7603 15.4673C12.12 15.8436 12.5488 16.0317 13.0469 16.0317ZM9.31982 23.6519C8.45101 23.6519 7.79801 23.436 7.36084 23.0044C6.9292 22.5783 6.71338 21.9391 6.71338 21.0869V10.9434C6.71338 10.0856 6.9292 9.44368 7.36084 9.01758C7.79801 8.58594 8.45101 8.37012 9.31982 8.37012H23.6802C24.5545 8.37012 25.2075 8.58594 25.6392 9.01758C26.0708 9.44922 26.2866 10.0911 26.2866 10.9434V21.0869C26.2866 21.9391 26.0708 22.5783 25.6392 23.0044C25.2075 23.436 24.5545 23.6519 23.6802 23.6519H9.31982Z\"\n        fill=\"white\" />\n    </svg>\n  `,\n})\nexport class TguiIcon32ProfileColoredSquare extends TguiIconBase {\n} ","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../icon-base.component';\nimport { TguiSvgPropsDirective } from '../directives';\nimport { TguiIconProps } from '../icon.interface';\n\n@Component({\n  selector: 'tgui-icon36-backspace',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"36\" \n      height=\"36\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        fillRule=\"evenodd\" \n        clipRule=\"evenodd\"\n        d=\"M15.886 6.5h8.855c.805 0 1.47 0 2.01.044.563.046 1.08.145 1.564.392a4 4 0 0 1 1.749 1.748c.247.485.345 1.002.391 1.564.045.541.045 1.206.045 2.01v11.483c0 .805 0 1.47-.045 2.01-.046.563-.144 1.08-.391 1.565a4 4 0 0 1-1.748 1.748c-.486.247-1.002.346-1.565.392-.54.044-1.205.044-2.01.044h-8.855c-.635 0-1.115 0-1.578-.11a4.001 4.001 0 0 1-1.156-.48c-.405-.248-.745-.587-1.193-1.037l-.072-.072-5.73-5.729c-.569-.57-1.039-1.039-1.39-1.453-.365-.43-.66-.865-.829-1.383a4 4 0 0 1 0-2.472c.168-.518.464-.953.829-1.383.351-.414.821-.884 1.39-1.453l5.73-5.73.072-.071c.448-.45.787-.789 1.193-1.038a4 4 0 0 1 1.156-.479c.463-.11.943-.11 1.578-.11Zm.102 2c-.782 0-1.01.006-1.213.055-.204.05-.399.13-.578.24-.178.109-.344.265-.896.818l-5.7 5.7c-.606.606-1.017 1.018-1.31 1.362-.284.335-.397.54-.45.707a2 2 0 0 0 0 1.236c.053.167.166.371.45.707.293.344.704.756 1.31 1.362l5.7 5.7c.552.552.718.709.896.818.18.11.374.19.578.24.204.049.431.055 1.213.055H24.7c.856 0 1.438 0 1.889-.038.438-.035.662-.1.819-.18a2 2 0 0 0 .874-.874c.08-.157.144-.38.18-.82.037-.45.038-1.032.038-1.888V12.3c0-.857-.001-1.439-.038-1.889-.036-.438-.1-.663-.18-.819a2 2 0 0 0-.875-.874c-.156-.08-.38-.145-.819-.18-.45-.037-1.032-.038-1.889-.038h-8.711Zm-1.196 4.793a1 1 0 0 1 1.415 0l3.293 3.293 3.292-3.293a1 1 0 0 1 1.415 1.414L20.914 18l3.293 3.293a1 1 0 0 1-1.415 1.414L19.5 19.414l-3.292 3.293a1 1 0 1 1-1.415-1.414L18.085 18l-3.293-3.293a1 1 0 0 1 0-1.414Z\"\n        fill=\"currentColor\" \n      />\n    </svg>\n  `,\n})\nexport class TguiIcon36Backspace extends TguiIconBase {\n} ","// Export all icons by size\nexport * from './icon12';\nexport * from './icon16';\nexport * from './icon20';\nexport * from './icon24';\nexport * from './icon28';\nexport * from './icon32';\nexport * from './icon36';\n\n// Base icon and interfaces\nexport * from './icon-base.component';\nexport * from './icon.interface';\n\n// Dynamic icon component\nexport * from './dynamic-icon.component'; ","import { Component, Input, OnChanges, SimpleChanges, ViewContainerRef, ViewChild, ComponentRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from './icon-base.component';\nimport { TguiIconProps } from './icon.interface';\n\n// Import all icon components\nimport * as Icons from './index';\n\n@Component({\n  selector: 'tgui-dynamic-icon',\n  standalone: true,\n  imports: [CommonModule],\n  template: '<ng-container #iconContainer></ng-container>',\n})\nexport class TguiDynamicIconComponent implements OnChanges {\n  @Input() icon!: string;\n  \n  @ViewChild('iconContainer', { read: ViewContainerRef, static: true })\n  iconContainer!: ViewContainerRef;\n\n  private componentRef: ComponentRef<TguiIconBase> | null = null;\n  \n  // Available icon sizes in ascending order\n  private readonly iconSizes = ['12', '16', '20', '24', '28', '32', '36'];\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['icon']) {\n      this.loadIconComponent();\n    }\n  }\n\n  private loadIconComponent(): void {\n    // Clear the previous component if any\n    if (this.componentRef) {\n      this.componentRef.destroy();\n      this.componentRef = null;\n    }\n\n    this.iconContainer.clear();\n\n    // Attempt to find the icon component by name\n    let iconComponentName = this.formatIconComponentName(this.icon);\n    let IconComponent = (Icons as any)[iconComponentName];\n    // If no icon found and no size was specified, try with the smallest size first\n    if (!IconComponent && !this.hasSize(this.icon)) {\n      for (const size of this.iconSizes) {\n        iconComponentName = this.toCamelCase(`tgui-icon${size}-${this.icon}`);\n        IconComponent = (Icons as any)[iconComponentName];\n        if (IconComponent) break;\n      }\n    }\n\n    if (IconComponent) {\n      this.componentRef = this.iconContainer.createComponent(IconComponent);\n    } else {\n      console.warn(`Icon component \"${this.icon}\" not found.`);\n    }\n  }\n\n\n  private hasSize(iconName: string): boolean {\n    // Check if the icon name already contains a size\n    if (iconName.startsWith('tgui-icon') && /tgui-icon\\d+/.test(iconName)) {\n      return true;\n    }\n    \n    if (iconName.includes('-')) {\n      const parts = iconName.split('-');\n      // Check if any part is a number (size)\n      return parts.some(part => /^\\d+$/.test(part));\n    }\n    \n    return false;\n  }\n\n  private formatIconComponentName(iconName: string): string {\n    // Handle different name formats\n    if (iconName.startsWith('tgui-icon')) {\n      return this.toCamelCase(iconName);\n    }\n    \n    // If icon name contains a size (e.g. \"close-24\" or \"24/close\")\n    if (iconName.includes('-')) {\n      const parts = iconName.split('-');\n      if (/^\\d+$/.test(parts[parts.length - 1])) {\n        // Format: \"close-24\" -> \"TguiIcon24Close\"\n        const size = parts.pop();\n        return this.toCamelCase(`tgui-icon${size}-${parts.join('-')}`);\n      } else if (/^\\d+$/.test(parts[0])) {\n        // Format: \"24-close\" -> \"TguiIcon24Close\"\n        const size = parts.shift();\n        return this.toCamelCase(`tgui-icon${size}-${parts.join('-')}`);\n      }\n    }\n    \n    // For icons without size, we'll try with different sizes in loadIconComponent\n    // Just return a default format here\n    return this.toCamelCase(`tgui-icon-${iconName}`);\n  }\n\n  private toCamelCase(str: string): string {\n    return str.replace(/(^|-|_)([a-z])/g, (match, separator, char) => \n      char.toUpperCase()\n    ).replace(/(-|_)/g, '');\n  }\n} ","import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TypographyComponent } from '../typography.component';\n\n/**\n * The Headline component serves as a wrapper for text that is intended to be displayed prominently,\n * typically used for section headings or important titles within the application. It leverages the Typography\n * component for consistent typographic styling, offering a range of customization options through its props.\n * The component defaults to an `<h5>` HTML tag, providing semantic meaning and ensuring good SEO practices,\n * but can be customized as needed.\n */\n@Component({\n  selector: 'tgui-headline',\n  standalone: true,\n  imports: [CommonModule],\n  template: '<ng-content></ng-content>',\n  styles: [`\n    :host {\n      display: inline-block;\n    }\n    \n    :host.level-1 {\n      font-size: var(--tgui--headline--font_size);\n      line-height: var(--tgui--headline--line_height);\n    }\n    \n    :host.level-2 {\n      font-size: calc(var(--tgui--headline--font_size) * 0.95);\n      line-height: var(--tgui--headline--line_height);\n    }\n    \n    :host.weight-1 {\n      font-weight: var(--tgui--font_weight--accent1);\n    }\n\n    :host.weight-2 {\n      font-weight: var(--tgui--font_weight--accent2);\n    }\n\n    :host.weight-3 {\n      font-weight: var(--tgui--font_weight--accent3);\n    }\n\n    :host.caps {\n      text-transform: uppercase;\n    }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class HeadlineComponent extends TypographyComponent {\n  /**\n   * The size level of the headline, influencing its styling.\n   */\n  level = input<'1' | '2'>('1');\n  \n  // Override tag to use h5 by default\n  override tag = input<string | undefined>('h5');\n  \n  // Host bindings for level classes\n  @HostBinding('class.level-1') get isLevel1() { return this.level() === '1'; }\n  @HostBinding('class.level-2') get isLevel2() { return this.level() === '2'; }\n  \n  // Add host bindings for CSS classes of weights and other properties\n  @HostBinding('class.plain') override get isPlain() { return this.plain(); }\n  @HostBinding('class.caps') override get isCaps() { return this.caps(); }\n  @HostBinding('class.weight-1') override get isWeight1() { return this.weight() === '1'; }\n  @HostBinding('class.weight-2') override get isWeight2() { return this.weight() === '2'; }\n  @HostBinding('class.weight-3') override get isWeight3() { return this.weight() === '3'; }\n} ","import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TypographyComponent } from '../typography.component';\n\n/**\n * The LargeTitle component is designed for prominent display text, typically used for major headings\n * or titles within an application. It encapsulates the Typography component's features, offering\n * extensive styling and semantic customization options while defaulting to an `<h1>` HTML element.\n * This choice of default component underscores the importance and hierarchy of the text it encapsulates,\n * making it suitable for primary page titles or significant headings.\n */\n@Component({\n  selector: 'tgui-large-title',\n  standalone: true,\n  imports: [CommonModule],\n  template: '<ng-content></ng-content>',\n  styles: [`\n    :host {\n      display: inline-block;\n    }\n    \n    :host.level-1 {\n      font-size: var(--tgui--large_title--font_size);\n      line-height: var(--tgui--large_title--line_height);\n    }\n    \n    :host.level-2 {\n      font-size: calc(var(--tgui--large_title--font_size) * 0.92);\n      line-height: var(--tgui--large_title--line_height);\n    }\n    \n    :host.weight-1 {\n      font-weight: var(--tgui--font_weight--accent1);\n    }\n\n    :host.weight-2 {\n      font-weight: var(--tgui--font_weight--accent2);\n    }\n\n    :host.weight-3 {\n      font-weight: var(--tgui--font_weight--accent3);\n    }\n\n    :host.caps {\n      text-transform: uppercase;\n    }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LargeTitleComponent extends TypographyComponent {\n  /**\n   * The size level of the large title, influencing its styling.\n   */\n  level = input<'1' | '2'>('1');\n  \n  // Override tag to use h1 by default\n  override tag = input<string | undefined>('h1');\n  \n  // Host bindings for level classes\n  @HostBinding('class.level-1') get isLevel1() { return this.level() === '1'; }\n  @HostBinding('class.level-2') get isLevel2() { return this.level() === '2'; }\n  \n  // Add host bindings for CSS classes of weights and other properties\n  @HostBinding('class.plain') override get isPlain() { return this.plain(); }\n  @HostBinding('class.caps') override get isCaps() { return this.caps(); }\n  @HostBinding('class.weight-1') override get isWeight1() { return this.weight() === '1'; }\n  @HostBinding('class.weight-2') override get isWeight2() { return this.weight() === '2'; }\n  @HostBinding('class.weight-3') override get isWeight3() { return this.weight() === '3'; }\n} ","import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TypographyComponent } from '../typography.component';\n\n/**\n * Text component is designed for general-purpose text rendering,\n * offering a wide range of typographic options. It extends the Typography\n * component, inheriting its flexibility and styling capabilities.\n * This component is ideal for paragraphs, labels, or any textual content, providing\n * consistent styling across the application.\n */\n@Component({\n  selector: 'tgui-text',\n  standalone: true,\n  imports: [CommonModule],\n  template: '<ng-content></ng-content>',\n  styles: [`\n    :host {\n      display: inline-block;\n    }\n    \n    :host.level-1 {\n      font-size: var(--tgui--text--font_size);\n      line-height: var(--tgui--text--line_height);\n    }\n    \n    :host.level-2 {\n      font-size: var(--tgui--text--font_size);\n      line-height: var(--tgui--text--line_height);\n      font-size: 0.95em;\n    }\n    \n    :host.weight-1 {\n      font-weight: var(--tgui--font_weight--accent1);\n    }\n\n    :host.weight-2 {\n      font-weight: var(--tgui--font_weight--accent2);\n    }\n\n    :host.weight-3 {\n      font-weight: var(--tgui--font_weight--accent3);\n    }\n\n    :host.caps {\n      text-transform: uppercase;\n    }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TextComponent extends TypographyComponent {\n  /**\n   * The size level of the text, influencing its styling.\n   */\n  level = input<'1' | '2'>('1');\n  \n  // Override plain property to keep consistency\n  override plain = input<boolean>(true);\n  \n  // Host bindings for level classes\n  @HostBinding('class.level-1') get isLevel1() { return this.level() === '1'; }\n  @HostBinding('class.level-2') get isLevel2() { return this.level() === '2'; }\n  \n  // Add host bindings for CSS classes of weights and other properties\n  @HostBinding('class.plain') override get isPlain() { return this.plain(); }\n  @HostBinding('class.caps') override get isCaps() { return this.caps(); }\n  @HostBinding('class.weight-1') override get isWeight1() { return this.weight() === '1'; }\n  @HostBinding('class.weight-2') override get isWeight2() { return this.weight() === '2'; }\n  @HostBinding('class.weight-3') override get isWeight3() { return this.weight() === '3'; }\n} ","import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TypographyComponent } from '../typography.component';\n\n/**\n * The Title component is designed to render text as a page or section heading,\n * providing clear hierarchy and structure within content. It supports three levels of emphasis,\n * allowing for flexibility in design while maintaining semantic integrity. By default, it uses `h3`\n * for its semantic HTML element but can be customized via the `level` prop or explicitly with the `tag` property.\n */\n@Component({\n  selector: 'tgui-title',\n  standalone: true,\n  imports: [CommonModule],\n  template: '<ng-content></ng-content>',\n  styles: [`\n    :host {\n      display: inline-block;\n    }\n    \n    :host.level-1 {\n      font-size: var(--tgui--title1--font_size);\n      line-height: var(--tgui--title1--line_height);\n    }\n    \n    :host.level-2 {\n      font-size: var(--tgui--title2--font_size);\n      line-height: var(--tgui--title2--line_height);\n    }\n    \n    :host.level-3 {\n      font-size: var(--tgui--title3--font_size);\n      line-height: var(--tgui--title3--line_height);\n    }\n    \n    :host.weight-1 {\n      font-weight: var(--tgui--font_weight--accent1);\n    }\n\n    :host.weight-2 {\n      font-weight: var(--tgui--font_weight--accent2);\n    }\n\n    :host.weight-3 {\n      font-weight: var(--tgui--font_weight--accent3);\n    }\n\n    :host.caps {\n      text-transform: uppercase;\n    }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TitleComponent extends TypographyComponent {\n  /**\n   * Determines the size and semantic tag of the title, with options for `h2`, `h3`, or `h4`.\n   */\n  level = input<'1' | '2' | '3'>('2');\n  \n  // Host bindings for level classes\n  @HostBinding('class.level-1') get isLevel1() { return this.level() === '1'; }\n  @HostBinding('class.level-2') get isLevel2() { return this.level() === '2'; }\n  @HostBinding('class.level-3') get isLevel3() { return this.level() === '3'; }\n  \n  // Add host bindings for CSS weight classes and other properties\n  @HostBinding('class.plain') override get isPlain() { return this.plain(); }\n  @HostBinding('class.caps') override get isCaps() { return this.caps(); }\n  @HostBinding('class.weight-1') override get isWeight1() { return this.weight() === '1'; }\n  @HostBinding('class.weight-2') override get isWeight2() { return this.weight() === '2'; }\n  @HostBinding('class.weight-3') override get isWeight3() { return this.weight() === '3'; }\n} ","import { \n    Component, \n    ViewEncapsulation, \n    ChangeDetectionStrategy, \n    Input, \n    HostBinding, \n    OnInit,\n    ElementRef, \n    ContentChild, \n    TemplateRef,\n    HostListener,\n    inject,\n    input\n  } from '@angular/core';\n  import { CommonModule } from '@angular/common';\nimport { SpinnerComponent } from '../../feedback';\nimport { TappableComponent } from '../../utils';\nimport { PlatformService } from '../../../services/platform.service';\nimport { TguiDynamicIconComponent } from '../../../icons/dynamic-icon.component';\nimport { TextComponent, SubheadlineComponent } from '../../typography';\n  // import { PlatformService } from '@services/platform.service';\n  // import { SpinnerComponent } from '@feedback/spinner/spinner.component';\n  // import { TappableComponent } from '@utils/tappable/tappable.component';\n  \n  /**\n   * The Button component provides a customizable button with various styles and states.\n   * Supports different sizes, display modes, loading state, etc.\n   */\n  @Component({\n    selector: 'tgui-button',\n    standalone: true,\n    imports: [\n      CommonModule,\n      SpinnerComponent,\n      TappableComponent,\n      TguiDynamicIconComponent,\n      TextComponent,\n      SubheadlineComponent,\n    ],\n    template: `\n      <tgui-tappable \n        [interactiveAnimation]=\"interactiveAnimation()\" \n        [readonly]=\"loading()\"\n        [disabled]=\"disabled()\"\n        class=\"button-tappable\"\n      >\n        <!-- Spinner is absolutely positioned over the content -->\n        <div *ngIf=\"loading()\" class=\"spinner\">\n          <tgui-spinner style=\"color: var(--tgui--button--spinner-color)\" size=\"s\"></tgui-spinner>\n        </div>\n  \n        <!-- Button content in wrapper for correct positioning -->\n        <div class=\"button-content-wrapper\">\n          <ng-content select=\"[tguiButtonBefore]\"></ng-content>\n          <div *ngIf=\"beforeTemplate\" class=\"before\">\n            <ng-container *ngTemplateOutlet=\"beforeTemplate\"></ng-container>\n          </div>\n          <div class=\"before\" *ngIf=\"icon() as icon\">\n            <tgui-dynamic-icon [icon]=\"icon\"></tgui-dynamic-icon>\n          </div>\n  \n          <!-- Template for button content -->\n          <ng-template #buttonContent>\n            <ng-content></ng-content>\n          </ng-template>\n\n          <div class=\"content\">\n              <tgui-text *ngIf=\"size() === 'l'\"  weight=\"2\">\n                <ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\n              </tgui-text>\n              <tgui-subheadline *ngIf=\"size() === 'm' || size() === 's'\" level=\"2\" weight=\"2\">\n                <ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\n              </tgui-subheadline>\n          </div>\n  \n          <ng-content select=\"[tguiButtonAfter]\"></ng-content>\n          <div *ngIf=\"afterTemplate\" class=\"after\">\n            <ng-container *ngTemplateOutlet=\"afterTemplate\"></ng-container>\n          </div>\n        </div>\n      </tgui-tappable>\n    `,\n    host: {\n      'attr.data-refresh-platform': 'true'\n    },\n    styles: [`\n      :host {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        border: none;\n        border-radius: 8px;\n        text-decoration: none;\n        box-sizing: border-box;\n        max-inline-size: 100%;\n        min-inline-size: 80px;\n        position: relative;\n        cursor: pointer;\n        -webkit-user-select: none;\n        -moz-user-select: none;\n        -ms-user-select: none;\n        user-select: none;\n        -webkit-tap-highlight-color: transparent;\n        touch-action: manipulation; /* Optimization for mobile devices */\n      }\n  \n      :host.stretched {\n        inline-size: 100%;\n        flex-grow: 1;\n      }\n  \n      :host::after {\n        content: '';\n        position: absolute;\n        inset: 0;\n        opacity: 0;\n        transition: opacity .15s ease-out;\n        background: var(--tgui--bg_color);\n        border-radius: inherit;\n        pointer-events: none;\n\n      }\n  \n      .button-tappable {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        width: 100%;\n        height: 100%;\n        border-radius: inherit;\n      }\n  \n      /* Wrapper for all button content */\n      .button-content-wrapper {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        gap: var(--tgui--button--gap);\n        position: relative;\n        z-index: 1;\n        width: 100%;\n        height: 100%;\n        padding: var(--tgui--button--padding, 0);\n        box-sizing: border-box;\n        user-select: none;\n        -webkit-user-select: none;\n      }\n  \n      .before,\n      .after {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        position: relative;\n        z-index: 1;\n        user-select: none;\n        -webkit-user-select: none;\n      }\n  \n      .content {\n        white-space: nowrap;\n        text-overflow: ellipsis;\n        overflow: hidden;\n        z-index: var(--tgui--z-index--simple);\n        position: relative; /* To be above ripple */\n        user-select: none;\n        -webkit-user-select: none;\n        -webkit-touch-callout: none; /* Prevents context menu on iOS with long press */\n      }\n  \n      .spinner {\n        position: absolute;\n        width: 100%;\n        height: 100%;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        cursor: auto;\n        background: inherit;\n        border-radius: inherit;\n        color: var(--tgui--button--spinner-color);\n        z-index: 2; /* Raised above content */\n        --tgui--spinner-color: var(--tgui--button--spinner-color);\n      }\n  \n      /* Size Variants */\n      :host.size-s {\n        height: 36px;\n        min-width: 34px;\n        border-radius: 20px;\n        --tgui--button--padding: 8px 12px;\n        --tgui--button--gap: 6px;\n      }\n  \n      :host.size-m {\n        height: 42px;\n        min-width: 42px;\n        border-radius: 8px;\n        --tgui--button--padding: 8px 14px;\n        --tgui--button--gap: 8px;\n      }\n  \n      :host.size-l {\n        height: 50px;\n        --tgui--button--padding: 10px 20px;\n        --tgui--button--gap: 10px;\n      }\n  \n      /* Mode Variants */\n      :host.mode-filled {\n        --tgui--button--hovered-opacity: .15;\n        --tgui--button--spinner-color: var(--tgui--button_text_color);\n        --tgui--ripple-color: rgba(255, 255, 255, 0.5);\n        color: var(--tgui--button_text_color);\n        background: var(--tgui--button_color);\n      }\n  \n      :host.mode-bezeled {\n        --tgui--button--hovered-opacity: .07;\n        --tgui--button--spinner-color: var(--tgui--link_color);\n        --tgui--ripple-color: rgba(0, 120, 255, 0.5);\n        color: var(--tgui--link_color);\n        background: var(--tgui--secondary_fill);\n      }\n  \n      :host.mode-plain {\n        --tgui--button--hovered-opacity: .03;\n        --tgui--button--spinner-color: var(--tgui--plain_foreground);\n        --tgui--ripple-color: rgba(0, 120, 255, 0.5);\n        color: var(--tgui--link_color);\n        background: transparent;\n      }\n  \n      :host.mode-gray {\n        --tgui--button--hovered-opacity: .5;\n        --tgui--button--spinner-color: var(--tgui--plain_foreground);\n        --tgui--ripple-color: rgba(0, 0, 0, 0.4);\n        color: var(--tgui--plain_foreground);\n        background: var(--tgui--plain_background);\n      }\n  \n      :host.mode-outline {\n        --tgui--button--hovered-opacity: .5;\n        --tgui--button--spinner-color: var(--tgui--plain_foreground);\n        --tgui--ripple-color: rgba(0, 0, 0, 0.3);\n        color: var(--tgui--plain_foreground);\n        background: inherit;\n        box-shadow: 0 0 0 1px var(--tgui--outline);\n      }\n  \n      :host.mode-white {\n        --tgui--button--hovered-opacity: .5;\n        --tgui--button--spinner-color: var(--tgui--surface_dark);\n        --tgui--ripple-color: rgba(0, 0, 0, 0.3);\n        background: var(--tgui--white);\n        color: var(--tgui--black);\n      }\n  \n      /* Platform Specific */\n      :host-context(.tgui-platform-ios) :host.size-m {\n        border-radius: 12px;\n      }\n  \n      :host-context(.tgui-platform-ios) :host::after {\n        content: unset;\n      }\n  \n      /* Loading State */\n      :host.loading .before,\n      :host.loading .after,\n      :host.loading .content {\n        opacity: 0;\n      }\n  \n      /* Disabled State */\n      :host.disabled {\n        opacity: 0.6;\n        cursor: default;\n        pointer-events: none;\n      }\n  \n      /* Hover Effects */\n      @media (hover: hover) and (pointer: fine) {\n        :host:hover::after {\n          opacity: var(--tgui--button--hovered-opacity);\n        }\n      }\n  \n      /* Button Typography Sizing */\n      :host.size-l .content {\n        font-size: var(--tgui--text--font_size);\n        line-height: var(--tgui--text--line_height);\n        font-weight: var(--tgui--font_weight--accent2);\n      }\n  \n      :host.size-m .content,\n      :host.size-s .content {\n        font-size: var(--tgui--subheadline2--font_size);\n        line-height: var(--tgui--subheadline2--line_height);\n        font-weight: var(--tgui--font_weight--accent2);\n      }\n    `],\n    changeDetection: ChangeDetectionStrategy.OnPush\n  })\n  export class ButtonComponent implements OnInit {\n    /**\n     * Button size ('s', 'm', 'l')\n     */\n    size = input<'s' | 'm' | 'l'>('m');\n  \n    /**\n     * Visual style of the button\n     */\n    mode = input<'filled' | 'bezeled' | 'plain' | 'gray' | 'outline' | 'white'>('filled');\n  \n    /**\n     * If true, the button will stretch to the width of its container\n     */\n    stretched = input<boolean>(false);\n  \n    /**\n     * If true, shows a loading indicator instead of button content\n     */\n    loading = input<boolean>(false);\n  \n    /**\n     * If true, the button will be disabled\n     */\n    disabled = input<boolean>(false);\n  \n    /**\n     * Button type (for HTML type attribute)\n     */\n    type = input<'button' | 'submit' | 'reset'>('button');\n  \n    /**\n     * Type of interactive animation ('opacity' | 'background')\n     */\n    interactiveAnimation = input<'opacity' | 'background'>('background');\n\n    /**\n     * Icon name to be displayed before the content\n     */\n    icon = input<string | undefined>(undefined);\n  \n    /**\n     * Template for content before the main button text\n     */\n    @ContentChild('beforeContent') beforeTemplate?: TemplateRef<any>;\n  \n    /**\n     * Template for content after the main button text\n     */\n    @ContentChild('afterContent') afterTemplate?: TemplateRef<any>;\n  \n    @HostBinding('class.size-s') get isSizeS() { return this.size() === 's'; }\n    @HostBinding('class.size-m') get isSizeM() { return this.size() === 'm'; }\n    @HostBinding('class.size-l') get isSizeL() { return this.size() === 'l'; }\n  \n    @HostBinding('class.mode-filled') get isModeFilled() { return this.mode() === 'filled'; }\n    @HostBinding('class.mode-bezeled') get isModeBezeled() { return this.mode() === 'bezeled'; }\n    @HostBinding('class.mode-plain') get isModePlain() { return this.mode() === 'plain'; }\n    @HostBinding('class.mode-gray') get isModeGray() { return this.mode() === 'gray'; }\n    @HostBinding('class.mode-outline') get isModeOutline() { return this.mode() === 'outline'; }\n    @HostBinding('class.mode-white') get isModeWhite() { return this.mode() === 'white'; }\n  \n    @HostBinding('class.stretched') get isStretched() { return this.stretched(); }\n    @HostBinding('class.loading') get isLoading() { return this.loading(); }\n    @HostBinding('class.disabled') get isDisabled() { return this.disabled(); }\n  \n    @HostBinding('attr.type') get buttonType() { return this.type(); }\n    @HostBinding('attr.disabled') get buttonDisabled() { return this.disabled() ? true : null; }\n    \n    private platformService = inject(PlatformService);\n    private elementRef = inject(ElementRef);\n  \n    @HostListener('selectstart', ['$event'])\n    onSelectStart(event: Event): boolean {\n      // Prevent text selection\n      event.preventDefault();\n      return false;\n    }\n  \n    ngOnInit(): void {      \n      // Transform component into a real button for better accessibility\n      this.transformToButton();\n    }\n    \n    /**\n     * Transforms the host element into a real HTML button for better accessibility and semantics\n     */\n    private transformToButton(): void {\n      const element = this.elementRef.nativeElement;\n      \n      // Add attributes to improve accessibility\n      if (!element.hasAttribute('role')) {\n        element.setAttribute('role', 'button');\n      }\n      \n      if (!element.hasAttribute('tabindex') && !this.disabled()) {\n        element.setAttribute('tabindex', '0');\n      }\n      \n      // Add CSS to prevent text selection (for older browsers)\n      element.style.webkitUserSelect = 'none';\n      element.style.userSelect = 'none';\n      \n      // Add keyboard event handlers for accessibility\n      element.addEventListener('keydown', (event: KeyboardEvent) => {\n        if ((event.key === 'Enter' || event.key === ' ') && !this.disabled()) {\n          event.preventDefault();\n          element.click();\n        }\n      });\n      \n      // Additional listener to prevent text selection\n      element.addEventListener('selectstart', (event: Event) => {\n        event.preventDefault();\n        return false;\n      });\n    }\n  } ","import { Component, ViewEncapsulation, ChangeDetectionStrategy, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CaptionComponent } from '../../../../typography/caption/caption.component';\nimport { HeadlineComponent } from '../../../../typography/headline/headline.component';\nimport { TitleComponent } from '../../../../typography/title/title.component';\nimport { LargeTitleComponent } from '../../../../typography/large-title/large-title.component';\nimport { AvatarSize } from '../../avatar.component';\n\n/**\n * The AvatarAcronym component displays initials for an avatar,\n * automatically selecting the appropriate font size and typography component.\n */\n@Component({\n  selector: 'tgui-avatar-acronym',\n  standalone: true,\n  imports: [\n    CommonModule, \n    CaptionComponent, \n    HeadlineComponent, \n    TitleComponent, \n    LargeTitleComponent\n  ],\n  template: `\n    <ng-container [ngSwitch]=\"getTypographyComponent()\">\n      <tgui-caption \n        *ngSwitchCase=\"'caption'\" \n        [level]=\"getCaptionLevel()\" \n        weight=\"1\" \n        [caps]=\"true\"\n      >{{ formatInitials() }}</tgui-caption>\n      \n      <tgui-headline \n        *ngSwitchCase=\"'headline'\" \n        weight=\"2\" \n        [caps]=\"true\"\n      >{{ formatInitials() }}</tgui-headline>\n      \n      <tgui-title \n        *ngSwitchCase=\"'title'\" \n        level=\"3\" \n        weight=\"1\" \n        [caps]=\"true\"\n      >{{ formatInitials() }}</tgui-title>\n      \n      <tgui-large-title \n        *ngSwitchCase=\"'large-title'\" \n        weight=\"1\" \n        [caps]=\"true\"\n      >{{ formatInitials() }}</tgui-large-title>\n    </ng-container>\n  `,\n  styles: [`\n    :host {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      width: 100%;\n      height: 100%;\n      color: var(--tgui--link_color);\n    }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AvatarAcronymComponent {\n  /**\n   * Avatar size that determines the size of displayed initials\n   */\n  size = input<AvatarSize>('m');\n  \n  /**\n   * Text from which initials will be formed\n   */\n  initials = input<string>('');\n  \n  /**\n   * Formats the passed text into initials, extracting the first letters of each word (up to 2 letters)\n   */\n  formatInitials(): string {\n    if (!this.initials()) return '';\n    \n    return this.initials()\n      .split(' ')\n      .map(part => part.charAt(0))\n      .slice(0, 2)\n      .join('')\n      .toUpperCase();\n  }\n  \n  /**\n   * Determines which typography component to use based on avatar size\n   */\n  getTypographyComponent(): 'caption' | 'headline' | 'title' | 'large-title' {\n    if (this.size() === 'xxs' || this.size() === 'xs' || this.size() === 's') {\n      return 'caption';\n    }\n    \n    if (this.size() === 'm') {\n      return 'headline';\n    }\n    \n    if (this.size() === 'l') {\n      return 'title';\n    }\n    \n    return 'large-title';\n  }\n  \n  /**\n   * Determines Caption level based on avatar size\n   */\n  getCaptionLevel(): '1' | '2' {\n    return this.size() === 'xs' ? '2' : '1';\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy, \n  HostBinding, \n  OnInit,\n  input,\n  computed\n} from '@angular/core';\nimport { CommonModule, NgStyle } from '@angular/common';\nimport { AvatarAcronymComponent } from './components/avatar-acronym/avatar-acronym.component';\nimport { AvatarBadgeComponent } from './components/avatar-badge/avatar-badge.component';\n\nexport type AvatarSize = 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl';\nexport type AvatarShape = 'circle' | 'rounded' | 'square';\n\n/**\n * The Avatar component displays an avatar with optional initials or image.\n * The component supports various sizes and shapes, as well as an online status indicator.\n */\n@Component({\n  selector: 'tgui-avatar',\n  standalone: true,\n  imports: [CommonModule, NgStyle, AvatarAcronymComponent],\n  template: `\n    <div \n      class=\"avatar-container\"\n      [ngStyle]=\"{ 'background-color': getBackgroundColor() }\"\n    >\n      <img \n        *ngIf=\"hasSrc()\" \n        [src]=\"srcUrl()\" \n        [alt]=\"altText()\" \n        class=\"avatar-image\"\n      />\n      \n      <tgui-avatar-acronym \n        *ngIf=\"!hasSrc() && hasInitials()\" \n        [size]=\"size()\" \n        [initials]=\"initialsText()\"\n      ></tgui-avatar-acronym>\n    </div>\n    \n    <!-- Content is rendered outside avatar-container\n         to avoid being affected by overflow: hidden -->\n    <div class=\"avatar-content\">\n      <div \n        *ngIf=\"online()\" \n        class=\"avatar-online-badge\"\n      ></div>\n      <ng-content></ng-content>\n    </div>\n  `,\n  styles: [`\n    :host {\n      display: inline-flex;\n      position: relative;\n    }\n    \n    .avatar-container {\n      width: 100%;\n      height: 100%;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      overflow: hidden;\n      background-color: var(--tgui--secondary_fill);\n      position: relative;\n      border-radius: inherit;\n      z-index: 1;\n    }\n    \n    .avatar-content {\n      position: absolute;\n      top: 0;\n      left: 0;\n      width: 100%;\n      height: 100%;\n      pointer-events: none;\n      z-index: 2;\n    }\n    \n    .avatar-content ::ng-deep > * {\n      pointer-events: auto;\n    }\n    \n    .avatar-image {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n    }\n    \n    .avatar-online-badge {\n      position: absolute;\n      bottom: 0;\n      right: 0;\n      width: 25%;\n      height: 25%;\n      min-width: 8px;\n      min-height: 8px;\n      background-color: var(--tgui--green);\n      border: 2px solid var(--tgui--bg_color);\n      border-radius: 50%;\n      box-sizing: border-box;\n      transform: translate(0, 0);\n      z-index: 3;\n    }\n    \n    /* Size Variants */\n    :host.size-xxs {\n      width: 20px;\n      height: 20px;\n    }\n    \n    :host.size-xs {\n      width: 24px;\n      height: 24px;\n    }\n    \n    :host.size-s {\n      width: 28px;\n      height: 28px;\n    }\n    \n    :host.size-m {\n      width: 40px;\n      height: 40px;\n    }\n    \n    :host.size-l {\n      width: 48px;\n      height: 48px;\n    }\n    \n    :host.size-xl {\n      width: 96px;\n      height: 96px;\n    }\n    \n    /* Shape Variants */\n    :host.shape-circle {\n      border-radius: 50%;\n    }\n    \n    :host.shape-rounded {\n      border-radius: 8px;\n    }\n    \n    :host.shape-square {\n      border-radius: 0;\n    }\n    \n    /* Platform Specific */\n    :host-context(.tgui-platform-ios) :host.shape-rounded {\n      border-radius: 10px;\n    }\n    \n    /* Badge size adjustments */\n    :host.size-xxs .avatar-online-badge {\n      min-width: 6px;\n      min-height: 6px;\n      border-width: 1px;\n    }\n    \n    :host.size-xs .avatar-online-badge {\n      min-width: 6px;\n      min-height: 6px;\n      border-width: 1px;\n    }\n    \n    :host.size-s .avatar-online-badge {\n      min-width: 8px;\n      min-height: 8px;\n      border-width: 1.5px;\n    }\n    \n    :host.size-l .avatar-online-badge {\n      min-width: 10px;\n      min-height: 10px;\n      border-width: 2px;\n    }\n    \n    :host.size-xl .avatar-online-badge {\n      min-width: 16px;\n      min-height: 16px;\n      border-width: 3px;\n    }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AvatarComponent {\n  /**\n   * Avatar image URL\n   */\n  src = input<string | undefined>(undefined);\n  \n  /**\n   * Text for initials if image is absent\n   */\n  initials = input<string | undefined>(undefined);\n  \n  /**\n   * Avatar size ('xxs', 'xs', 's', 'm', 'l', 'xl')\n   */\n  size = input<AvatarSize>('m');\n  \n  /**\n   * Avatar shape ('circle', 'rounded', 'square')\n   */\n  shape = input<AvatarShape>('circle');\n  \n  /**\n   * Alternative text for the image\n   */\n  alt = input<string | undefined>(undefined);\n  \n  /**\n   * Background color for avatar with initials\n   */\n  color = input<string | undefined>(undefined);\n  \n  /**\n   * Online status indicator\n   */\n  online = input<boolean>(false);\n\n  /**\n   * Computed alt text that always returns a string\n   */\n  altText = computed(() => this.alt() || 'Avatar');\n\n  /**\n   * Computed source URL that always returns a string\n   */\n  srcUrl = computed(() => this.src() || '');\n\n  /**\n   * Computed flag indicating if source URL is present\n   */\n  hasSrc = computed(() => !!this.src());\n\n  /**\n   * Computed flag indicating if initials are present\n   */\n  hasInitials = computed(() => !!this.initials());\n\n  /**\n   * Computed initials text that always returns a string\n   */\n  initialsText = computed(() => this.initials() || '');\n  \n  // Host bindings for CSS classes\n  @HostBinding('class.size-xxs') get isSizeXXS() { return this.size() === 'xxs'; }\n  @HostBinding('class.size-xs') get isSizeXS() { return this.size() === 'xs'; }\n  @HostBinding('class.size-s') get isSizeS() { return this.size() === 's'; }\n  @HostBinding('class.size-m') get isSizeM() { return this.size() === 'm'; }\n  @HostBinding('class.size-l') get isSizeL() { return this.size() === 'l'; }\n  @HostBinding('class.size-xl') get isSizeXL() { return this.size() === 'xl'; }\n  \n  @HostBinding('class.shape-circle') get isShapeCircle() { return this.shape() === 'circle'; }\n  @HostBinding('class.shape-rounded') get isShapeRounded() { return this.shape() === 'rounded'; }\n  @HostBinding('class.shape-square') get isShapeSquare() { return this.shape() === 'square'; }\n  \n  /**\n   * Returns background color for avatar with initials\n   */\n  getBackgroundColor(): string {\n    if (this.hasSrc()) {\n      return 'transparent';\n    }\n    \n    if (this.color()) {\n      return this.color()!;\n    }\n    \n    // If no image and no explicit color is set\n    return 'var(--tgui--secondary_fill)';\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  ContentChildren,\n  QueryList,\n  AfterContentInit,\n  HostBinding,\n  OnInit,\n  inject,\n  ElementRef,\n  Renderer2,\n  input\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AvatarComponent } from '../avatar/avatar.component';\n\n/**\n * The AvatarStack component displays a container for avatars in a stack format.\n * It allows to visually group avatars, often used to represent\n * multiple users or participants.\n * \n * Avatars are displayed with overlap, which is adjusted through the offset property.\n */\n@Component({\n  selector: 'tgui-avatar-stack',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div class=\"avatar-stack-container\" [style.--tgui-avatar-stack-offset.px]=\"offset()\">\n      <ng-content></ng-content>\n    </div>\n  `,\n  styles: [`\n    :host {\n      display: inline-flex;\n    }\n    \n    .avatar-stack-container {\n      display: flex;\n      --tgui-avatar-stack-offset: -12px;\n    }\n    \n    .avatar-stack-container > ::ng-deep tgui-avatar:not(:first-child) {\n      margin-left: var(--tgui-avatar-stack-offset);\n    }\n    \n    .avatar-stack-container > ::ng-deep tgui-avatar {\n      box-shadow: 0 0 0 3px var(--tgui--bg_color);\n    }\n    \n    /* Platform Specific */\n    :host-context(.tgui-platform-ios) :host .avatar-stack-container > ::ng-deep tgui-avatar {\n      box-shadow: 0 0 0 2px var(--tgui--bg_color);\n    }\n  `],\n  host: {\n    'attr.data-refresh-platform': 'true'\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AvatarStackComponent {\n  /**\n   * Offset between avatars in pixels (default -12px).\n   * Negative value determines the degree of overlap between avatars.\n   * The smaller the value (e.g., -18px), the greater the overlap between avatars.\n   * The larger the value (e.g., -6px), the less the overlap between avatars.\n   */\n  offset = input<number>(-12);\n  \n  /**\n   * List of avatars inside the stack\n   */\n  @ContentChildren(AvatarComponent) avatars!: QueryList<AvatarComponent>;\n  \n} ","import { Component, ChangeDetectionStrategy, ViewEncapsulation, HostBinding } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Represents a horizontal line used to separate content within a layout or component.\n * The component allows customization through custom CSS classes.\n */\n@Component({\n  selector: 'tgui-divider',\n  standalone: true,\n  imports: [CommonModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `<hr class=\"tgui-divider\">`,\n  styles: [`\n    .tgui-divider {\n      margin: 0;\n      border-top: none;\n      border-width: var(--tgui--border--width, 1px);\n      border-color: var(--tgui--outline);\n      width: 100%;\n    }\n  `]\n})\nexport class DividerComponent {} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy, \n  Input, \n  HostBinding,\n  inject,\n  effect\n} from '@angular/core';\nimport { CommonModule, NgClass } from '@angular/common';\nimport { PlatformService } from '../../../../../services/platform.service';\nimport { HeadlineComponent } from '../../../../typography/headline/headline.component';\nimport { LargeTitleComponent } from '../../../../typography/large-title/large-title.component';\n\n/**\n * The SectionHeader component represents a header for the Section component.\n * Supports large mode for an enlarged header.\n */\n@Component({\n  selector: 'tgui-section-header',\n  standalone: true,\n  imports: [CommonModule, NgClass, HeadlineComponent, LargeTitleComponent],\n  template: `\n    <header class=\"tgui-section-header\" [ngClass]=\"headerClasses\">\n      <ng-container *ngIf=\"large; else defaultHeader\">\n        <tgui-large-title>\n        <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container>\n        </tgui-large-title>\n      </ng-container>\n      <ng-template #defaultHeader>\n        <tgui-headline>\n        <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container>\n        </tgui-headline>\n      </ng-template>\n    </header>\n    <ng-template #contentTpl>\n      <ng-content></ng-content>\n    </ng-template>\n  `,\n  styles: [`\n    .tgui-section-header {\n      padding: 20px 24px 4px 22px;\n      color: var(--tgui--link_color);\n    }\n\n    .tgui-section-header--large {\n      padding-left: 24px;\n      color: var(--tgui--text_color);\n    }\n\n    .tgui-platform-ios .tgui-section-header {\n      padding: 16px 16px 8px 16px;\n      color: var(--tgui--section_header_text_color);\n    }\n\n    .tgui-section-header--ios.tgui-section-header--large {\n      padding: 0 0 12px;\n      color: var(--tgui--text_color);\n    }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SectionHeaderComponent {\n  /** Enlarged header, changes font size, padding and color */\n  @Input() large = false;\n\n\n  get headerClasses(): Record<string, boolean> {\n    return {\n      'tgui-section-header--large': this.large\n    };\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy, \n  Input, \n  HostBinding,\n  inject,\n  effect\n} from '@angular/core';\nimport { CommonModule, NgClass } from '@angular/common';\n// import { PlatformService } from '@services/platform.service';\nimport { CaptionComponent } from '../../../../typography/caption/caption.component';\nimport { SubheadlineComponent } from '../../../../typography/subheadline/subheadline.component';\nimport { PlatformService } from '../../../../../services/platform.service';\n/**\n * The SectionFooter component represents a footer for the Section component.\n * Supports centered mode for centered text.\n */\n@Component({\n  selector: 'tgui-section-footer',\n  standalone: true,\n  imports: [CommonModule, NgClass, CaptionComponent, SubheadlineComponent],\n  template: `\n    <footer class=\"tgui-section-footer\" [ngClass]=\"footerClasses\">\n      <ng-container *ngIf=\"_isPlatformIOS; else baseFooter\">\n        <tgui-caption class=\"tgui-section-footer-text\">\n        <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container>\n        </tgui-caption>\n      </ng-container>\n      <ng-template #baseFooter>\n        <tgui-subheadline level=\"2\" class=\"tgui-section-footer-text\">\n        <ng-container *ngTemplateOutlet=\"contentTpl\"></ng-container>\n        </tgui-subheadline>\n      </ng-template>\n    </footer>\n    <ng-template #contentTpl>\n      <ng-content></ng-content>\n    </ng-template>\n  `,\n  styles: [`\n    .tgui-section-footer {\n      padding: 12px 24px;\n    }\n\n    .tgui-section-footer--centered {\n      padding: 16px 24px 20px;\n      text-align: center;\n    }\n\n    :host-context(.tgui-platform-ios) .tgui-section-footer--centered {\n      padding: 16px 16px 0;\n    }\n    :host-context(.tgui-platform-ios) .tgui-section-footer {\n      padding: 8px 16px 0;\n    }\n    :host-context(.tgui-platform-ios) .tgui-section-footer-text {\n      color: var(--tgui--section_header_text_color);\n    }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SectionFooterComponent {\n  /** Text centering, adding additional padding */\n  @Input() centered = false;\n\n  private platformService = inject(PlatformService);\n  private platformSignal = this.platformService.platform;\n  public _isPlatformIOS: boolean = false\n  constructor() {\n    effect(() => {\n      const platform = this.platformSignal()\n      this._isPlatformIOS = platform === 'ios';\n    });\n  }\n\n  get footerClasses(): Record<string, boolean> {\n    return {\n      'tgui-section-footer--centered': this.centered\n    };\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy, \n  Input, \n  ContentChild,\n  TemplateRef,\n  ViewChild,\n  ElementRef,\n  inject,\n  AfterContentInit,\n  ContentChildren,\n  QueryList\n} from '@angular/core';\nimport { CommonModule, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { PlatformService } from '../../../services/platform.service';\nimport { DividerComponent } from '../../misc/divider/divider.component';\nimport { SectionHeaderComponent } from './components/section-header/section-header.component';\nimport { SectionFooterComponent } from './components/section-footer/section-footer.component';\n\n/**\n * The Section component organizes content into separate sections with optional\n * headers and footers. It automatically wraps strings and numbers in appropriate\n * SectionHeader and SectionFooter components, and inserts dividers between\n * child elements.\n */\n@Component({\n  selector: 'tgui-section',\n  standalone: true,\n  imports: [CommonModule, NgTemplateOutlet, DividerComponent, SectionHeaderComponent, SectionFooterComponent],\n  template: `\n    <section class=\"tgui-section\">\n      <div class=\"tgui-section-body-with-header\">\n        <!-- Header with wrapper -->\n        <ng-container *ngIf=\"headerContent || headerTemplate\">\n          <tgui-section-header *ngIf=\"headerContent && isPrimitiveContent(headerContent)\">\n            {{headerContent}}\n          </tgui-section-header>\n          <ng-container *ngIf=\"headerTemplate\">\n            <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n          </ng-container>\n        </ng-container>\n\n        <!-- Custom header content projection -->\n        <ng-content select=\"tgui-section-header\"></ng-content>\n\n        <!-- Body content -->\n        <div class=\"tgui-section-body\">\n          <ng-container *ngFor=\"let content of contentProjections; let last = last; let i = index\">\n            <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n            <tgui-divider *ngIf=\"!last\" class=\"tgui-section-divider\"></tgui-divider>\n          </ng-container>\n          \n          <!-- Default content projection -->\n          <ng-content></ng-content>\n        </div>\n      </div>\n\n      <!-- Footer with wrapper -->\n      <ng-container *ngIf=\"footerContent || footerTemplate\">\n        <tgui-section-footer *ngIf=\"footerContent && isPrimitiveContent(footerContent)\">\n          {{footerContent}}\n        </tgui-section-footer>\n        <ng-container *ngIf=\"footerTemplate\">\n          <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n        </ng-container>\n      </ng-container>\n\n      <!-- Custom footer content projection -->\n      <ng-content select=\"tgui-section-footer\"></ng-content>\n    </section>\n  `,\n  styles: [`\n    :host {\n      display: block;\n    }\n\n    .tgui-section {\n      display: block;\n      width: 100%;\n    }\n\n    /* Platform specific styles */\n    .tgui-section-body-with-header {\n      box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.1);\n      background: var(--tgui--section_bg_color);\n    }\n\n    :host-context(.tgui-platform-ios) .tgui-section-body-with-header {\n      border-radius: 12px;\n      background: var(--tgui--section_bg_color);\n    }\n\n    :host-context(.tgui-platform-ios) .tgui-section-body {\n      border-radius: 12px;\n      background: var(--tgui--section_bg_color);\n    }\n\n    :host-context(.tgui-platform-ios) .tgui-section-body > :first-child {\n      border-radius: 12px 12px 0 0;\n    }\n\n    :host-context(.tgui-platform-ios) .tgui-section-body > :last-child {\n      border-radius: 0 0 12px 12px;\n    }\n\n    :host-context(.tgui-platform-ios) .tgui-section-body > :only-child {\n      border-radius: 12px;\n    }\n\n    .tgui-section-divider {\n      display: block;\n      width: 100%;\n    }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'attr.data-refresh-platform': 'true'\n  }\n})\nexport class SectionComponent implements AfterContentInit {\n  /**\n   * Content for the section header. If a string is passed, SectionHeader is automatically used.\n   * For more control or a large header, use <tgui-section-header large>...</tgui-section-header>.\n   */\n  @Input() header?: string | number | TemplateRef<any>;\n\n  /**\n   * Content for the section footer. If a string is passed, SectionFooter is automatically used.\n   * For centered footer, use <tgui-section-footer centered>...</tgui-section-footer>.\n   */\n  @Input() footer?: string | number | TemplateRef<any>;\n\n  // Templates from content projection\n  @ContentChild('headerContent') headerTemplate?: TemplateRef<any>;\n  @ContentChild('footerContent') footerTemplate?: TemplateRef<any>;\n\n  // For storing content between elements\n  @ContentChildren(TemplateRef) contentNodes!: QueryList<TemplateRef<any>>;\n  contentProjections: TemplateRef<any>[] = [];\n\n  // Get content for header and footer\n  get headerContent(): string | number | null {\n    return this.isPrimitive(this.header) ? this.header as string | number : null;\n  }\n\n  get footerContent(): string | number | null {\n    return this.isPrimitive(this.footer) ? this.footer as string | number : null;\n  }\n\n  ngAfterContentInit(): void {\n    // Get all template projections between dividers\n    if (this.contentNodes) {\n      this.contentProjections = this.contentNodes.toArray();\n    }\n  }\n\n  /**\n   * Checks if the value is a primitive (string or number)\n   */\n  isPrimitive(value: any): boolean {\n    return typeof value === 'string' || typeof value === 'number';\n  }\n\n  /**\n   * Checks if the content is a primitive\n   */\n  isPrimitiveContent(content: any): boolean {\n    return this.isPrimitive(content);\n  }\n} ","import { Component, Input, HostBinding, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * CardCell component that represents a content section within a Card.\n */\n@Component({\n  selector: 'tgui-card-cell',\n  templateUrl: './card-cell.component.html',\n  styleUrls: ['./card-cell.component.css'],\n  standalone: true,\n  imports: [CommonModule],\n  exportAs: 'tguiCardCell'\n})\nexport class CardCellComponent {\n  /**\n   * Whether the cell contains image content\n   */\n  @Input() isImage = false;\n\n  /**\n   * Optional header text for the cell\n   */\n  @Input() header?: string;\n\n  /**\n   * Optional subtitle text for the cell\n   */\n  @Input() subtitle?: string;\n\n  /** Apply appropriate class based on the cell type */\n  @HostBinding('class') get className(): string {\n    const baseClass = 'tgui-card-cell';\n    return this.isImage ? `${baseClass} ${baseClass}--image` : baseClass;\n  }\n} ","<div class=\"tgui-card-cell__content\">\n  <div *ngIf=\"header || subtitle\" class=\"tgui-card-cell__text\">\n    <h3 *ngIf=\"header\" class=\"tgui-card-cell__header\">{{ header }}</h3>\n    <p *ngIf=\"subtitle\" class=\"tgui-card-cell__subtitle\">{{ subtitle }}</p>\n  </div>\n  <ng-content></ng-content>\n</div> ","import { Component, input, HostBinding, ViewEncapsulation, ElementRef, ContentChildren, QueryList, AfterContentInit, computed, signal, effect, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CardCellComponent } from './components/card-cell/card-cell.component';\nimport { CardChipComponent } from './components/card-chip/card-chip.component';\n\n/**\n * Card types that define the visual style of the card\n */\nexport type CardType = 'plain' | 'ambient';\n\n/**\n * Serves as a container for card-styled UI elements, providing context for its child components.\n * It supports different visual styles and can encapsulate various content types.\n */\n@Component({\n  selector: 'tgui-card',\n  templateUrl: './card.component.html',\n  styleUrls: ['./card.component.css'],\n  standalone: true,\n  imports: [CommonModule],\n  exportAs: 'tguiCard',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.Emulated\n})\nexport class CardComponent implements AfterContentInit {\n  /**\n   * Defines the visual style of the card, influencing background, shadow, and border.\n   */\n  type = input<CardType>('plain');\n\n  /**\n   * Defines the border radius of the card. Default is 24px.\n   */\n  borderRadius = input<string>('24px');\n\n  /**\n   * URL of the image to display at the top of the card\n   */\n  image = input<string>();\n\n  /**\n   * Alt text for the image\n   */\n  imageAlt = input<string>('');\n\n  /**\n   * Height of the image block\n   */\n  imageHeight = input<string>('200px');\n\n  /** Get all child cells */\n  @ContentChildren(CardCellComponent) cardCells!: QueryList<CardCellComponent>;\n\n  private elementRef = inject(ElementRef);\n\n  /** \n   * Custom style for card wrapper \n   */\n  customStyle = computed(() => ({\n    'border-radius': this.borderRadius()\n  }));\n\n  /**\n   * Styles for the image block\n   */\n  imageStyle = computed(() => {\n    if (!this.image()) return {};\n    \n    return {\n      'height': this.imageHeight(),\n      'background-image': `url(${this.image()})`,\n      'background-size': 'cover',\n      'background-position': 'center',\n      'border-top-left-radius': this.borderRadius(),\n      'border-top-right-radius': this.borderRadius(),\n      'overflow': 'hidden'\n    };\n  });\n\n  /**\n   * Checks if the card has an image\n   */\n  hasImage = computed(() => !!this.image());\n\n  constructor() {\n    // Effect to update CSS variable when border radius changes\n    effect(() => {\n      this.elementRef.nativeElement.style.setProperty('--tgui-card-border-radius', this.borderRadius());\n    });\n  }\n\n  ngAfterContentInit() {\n    // No additional setup needed with signals\n  }\n\n  /** Apply appropriate class based on the type */\n  @HostBinding('class') get className(): string {\n    return `tgui-card tgui-card--${this.type()}`;\n  }\n} ","<article class=\"tgui-card__wrapper\" [ngStyle]=\"customStyle()\">\n  <!-- Image, if provided -->\n  <div *ngIf=\"hasImage()\" class=\"tgui-card__image\" [ngStyle]=\"imageStyle()\">\n    <img *ngIf=\"false\" [src]=\"image()\" [alt]=\"imageAlt()\"> <!-- Hidden for accessibility -->\n  </div>\n  \n  <!-- Card content -->\n  <ng-content></ng-content>\n</article> ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy, \n  HostBinding,\n  ElementRef,\n  inject,\n  input\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TappableComponent } from '../../utils';\n\n/**\n * Renders an icon button with customizable size and mode. It utilizes the `Tappable` component for enhanced\n * touch interaction, allowing it to serve various UI actions efficiently.\n */\n@Component({\n  selector: 'tgui-icon-button',\n  standalone: true,\n  imports: [CommonModule, TappableComponent],\n  template: `\n    <tgui-tappable \n      [interactiveAnimation]=\"interactiveAnimation()\" \n      [readonly]=\"disabled()\"\n      [disabled]=\"disabled()\"\n      class=\"icon-button-tappable\"\n    >\n      <ng-content></ng-content>\n    </tgui-tappable>\n  `,\n  styleUrls: ['./icon-button.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IconButtonComponent {\n  /** Specifies the button size, affecting icon scaling. Recommended icon sizes are 20px for 's', 24px for 'm', and 28px for 'l'. */\n  size = input<'s' | 'm' | 'l'>('m');\n  \n  /** Defines the button's visual style, affecting its color and background. */\n  mode = input<'filled' | 'bezeled' | 'plain' | 'gray' | 'outline' | 'white'>('bezeled');\n  \n  /** Disables the button */\n  disabled = input<boolean>(false);\n  \n  /** Type of interactive animation */\n  interactiveAnimation = input<'opacity' | 'background'>('background');\n  \n  /** Type of button */\n  type = input<'button' | 'submit' | 'reset'>('button');\n  \n  private elementRef = inject(ElementRef);\n  \n  // Host bindings for size classes\n  @HostBinding('class.size-s') get isSizeS() { return this.size() === 's'; }\n  @HostBinding('class.size-m') get isSizeM() { return this.size() === 'm'; }\n  @HostBinding('class.size-l') get isSizeL() { return this.size() === 'l'; }\n  \n  // Host bindings for mode classes\n  @HostBinding('class.mode-filled') get isModeFilled() { return this.mode() === 'filled'; }\n  @HostBinding('class.mode-bezeled') get isModeBezeled() { return this.mode() === 'bezeled'; }\n  @HostBinding('class.mode-plain') get isModePlain() { return this.mode() === 'plain'; }\n  @HostBinding('class.mode-gray') get isModeGray() { return this.mode() === 'gray'; }\n  @HostBinding('class.mode-outline') get isModeOutline() { return this.mode() === 'outline'; }\n  @HostBinding('class.mode-white') get isModeWhite() { return this.mode() === 'white'; }\n  \n  // Host bindings for state\n  @HostBinding('class.disabled') get isDisabled() { return this.disabled(); }\n  @HostBinding('attr.type') get buttonType() { return this.type(); }\n  @HostBinding('attr.disabled') get buttonDisabled() { return this.disabled() ? true : null; }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy, \n  HostBinding,\n  ElementRef,\n  ContentChild,\n  TemplateRef,\n  signal,\n  computed,\n  inject,\n  OnInit,\n  input\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type ImageSize = 20 | 24 | 28 | 40 | 48 | 96;\n\n/**\n * Renders an image with optional fallback content. It supports custom sizing and will automatically\n * handle loading states and errors by optionally displaying a fallback icon. This component can also\n * include additional content, such as badges or overlays, as children.\n */\n\n// [decoding]=\"decoding\"\n// [loading]=\"loading\"\n// [referrerPolicy]=\"referrerPolicy\"\n// [sizes]=\"sizes\"\n// [srcset]=\"srcSet\"\n// [useMap]=\"useMap\"\n@Component({\n  selector: 'tgui-image',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div class=\"image-container\">\n      <img\n        *ngIf=\"hasSrc()\"\n        [src]=\"srcUrl()\"\n        [attr.alt]=\"altText()\"\n        class=\"image\"\n        [attr.crossOrigin]=\"crossOrigin()\"\n        [attr.decoding]=\"decoding()\"\n        [attr.loading]=\"loading()\"\n        [attr.referrerPolicy]=\"referrerPolicy()\"\n        [attr.sizes]=\"sizes()\"\n        [attr.srcset]=\"srcSet()\"\n        [class.loaded]=\"loaded()\"\n        (load)=\"handleImageLoad($event)\"\n        (error)=\"handleImageError($event)\"\n      />\n      <div *ngIf=\"shouldShowFallbackIcon()\" class=\"fallback\">\n        <ng-container *ngTemplateOutlet=\"fallbackIconTemplate || null\"></ng-container>\n      </div>\n      <ng-content></ng-content>\n    </div>\n  `,\n  styles: [`\n    :host {\n      position: relative;\n      display: inline-flex;\n      background-color: var(--tgui--tertiary_bg_color);\n      box-shadow: 0 0 0 1px var(--tgui--outline);\n    }\n\n    .image-container {\n      width: 100%;\n      height: 100%;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      position: relative;\n      border-radius: inherit;\n    }\n\n    .image {\n      position: absolute;\n      display: block;\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n      opacity: 0.5;\n      transition: opacity 0.2s ease-in-out;\n      border-radius: inherit;\n    }\n\n    .image.loaded {\n      opacity: 1;\n    }\n\n    .fallback {\n      position: absolute;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ImageComponent implements OnInit {\n  /** Specifies the size of the image, with a default of 40. Sizes are defined in pixels. */\n  size = input<ImageSize>(40);\n  \n  /** An element (often an icon) displayed when the image fails to load or the `src` attribute is not provided. */\n  @ContentChild('fallbackIcon') fallbackIconTemplate?: TemplateRef<any>;\n  \n  /** Image source URL */\n  src = input<string | undefined>(undefined);\n  \n  /** Alternative text for the image */\n  alt = input<string | undefined>(undefined);\n  \n  /** Cross-origin setting */\n  crossOrigin = input<string | undefined>(undefined);\n  \n  /** Image decoding hint */\n  decoding = input<'sync' | 'async' | 'auto' | undefined>(undefined);\n  \n  /** Loading strategy */\n  loading = input<'eager' | 'lazy' | undefined>(undefined);\n  \n  /** Referrer policy */\n  referrerPolicy = input<string | undefined>(undefined);\n  \n  /** Sizes attribute */\n  sizes = input<string | undefined>(undefined);\n  \n  /** Source set attribute */\n  srcSet = input<string | undefined>(undefined);\n  \n  /** Image map reference */\n  useMap = input<string | undefined>(undefined);\n\n  /** State to track if image has loaded */\n  loaded = signal(false);\n  \n  /** State to track if image failed to load */\n  failed = signal(false);\n\n  /** Computed source URL that always returns a string */\n  srcUrl = computed(() => this.src() || '');\n\n  /** Computed alt text that always returns a string */\n  altText = computed(() => this.alt() || '');\n\n  /** Check if source is provided */\n  hasSrc = computed(() => !!this.src() || !!this.srcSet());\n\n  /** Determine if fallback icon should be shown */\n  shouldShowFallbackIcon = computed(() => (this.failed() || !this.hasSrc()) && !!this.fallbackIconTemplate);\n\n  /** Handle image load event */\n  handleImageLoad(event: Event): void {\n    if (this.loaded()) {\n      return;\n    }\n\n    this.loaded.set(true);\n    this.failed.set(false);\n  }\n\n  /** Handle image error event */\n  handleImageError(event: Event): void {\n    this.loaded.set(false);\n    this.failed.set(true);\n  }\n\n  /** Apply size and border radius to host element */\n  ngOnInit(): void {\n    this.width = this.size();\n    this.minWidth = this.size();\n    this.height = this.size();\n    this.borderRadius = this.getBorderRadius(this.size());\n  }\n\n  @HostBinding('style.width.px') width!: number;\n  @HostBinding('style.minWidth.px') minWidth!: number;\n  @HostBinding('style.height.px') height!: number;\n  @HostBinding('style.borderRadius.px') borderRadius!: number;\n\n  /** Calculate border radius based on image size */\n  public getBorderRadius(size: number): number {\n    if (size < 40) {\n      return 4;\n    }\n\n    if (size < 96) {\n      return 8;\n    }\n\n    return 12;\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy, \n  Input \n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BadgeComponent } from '../../../badge/badge.component';\n\n/**\n * Badge component specifically designed to be used with Image component.\n * Only supports number type badges.\n */\n@Component({\n  selector: 'tgui-image-badge',\n  standalone: true,\n  imports: [CommonModule, BadgeComponent],\n  template: `\n    <tgui-badge \n      type=\"number\" \n      class=\"image-badge\"\n    >\n      {{ displayValue }}\n    </tgui-badge>\n  `,\n  styles: [`\n    :host {\n      position: absolute;\n      bottom: -4px;\n      right: -4px;\n      z-index: 1;\n    }\n    \n    .image-badge {\n      min-width: 18px;\n      height: 18px;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ImageBadgeComponent {\n  /** Badge count number */\n  @Input() count = 0;\n  \n  /** Maximum count to display before showing \"maxCount+\" */\n  @Input() maxCount = 99;\n  \n  constructor() {\n    console.assert(true, 'ImageBadge: Component supports only type=\"number\"');\n  }\n  \n  /** Compute display value with limit applied */\n  get displayValue(): string {\n    if (this.count <= this.maxCount) {\n      return this.count.toString();\n    }\n    return `${this.maxCount}+`;\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  HostBinding,\n  Input\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Icon container component provides a wrapper for icons with proper styling\n */\n@Component({\n  selector: 'tgui-icon-container',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <ng-content></ng-content>\n  `,\n  styles: [`\n    :host {\n      display: inline-flex;\n      color: var(--tgui--link_color);\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IconContainerComponent {\n  // Additional functionality can be added here if needed\n} ","import { Component, Input, HostBinding, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TextComponent } from '../../typography/text/text.component';\nimport { TitleComponent } from '../../typography/title/title.component';\n\n/**\n * A versatile component designed to display a placeholder with optional text, images, and actions.\n */\n@Component({\n  selector: 'tgui-placeholder',\n  standalone: true,\n  imports: [CommonModule, TextComponent, TitleComponent],\n  template: `\n    <section class=\"tgui-placeholder\">\n      <ng-content></ng-content>\n      <ng-content select=\"[image]\"></ng-content>\n      <dl *ngIf=\"header || description\" class=\"fields\">\n        <tgui-title *ngIf=\"header\" level=\"3\" weight=\"2\" tag=\"dt\">{{header}}</tgui-title>\n        <tgui-text *ngIf=\"description\" class=\"description\" tag=\"dd\">{{description}}</tgui-text>\n      </dl>\n      <ng-content select=\"[action]\"></ng-content>\n    </section>\n  `,\n  styles: [`\n    :host {\n      display: block;\n    }\n    \n    .tgui-placeholder {\n      overflow: hidden;\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      justify-content: center;\n      text-align: center;\n      padding: 32px;\n      gap: 24px;\n    }\n    \n    .fields {\n      overflow-wrap: anywhere;\n      text-align: center;\n      margin: 0;\n    }\n    \n    .description {\n      color: var(--tgui--hint_color);\n    }\n    \n    .description:not(:first-child) {\n      margin-top: 8px;\n    }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PlaceholderComponent {\n  /** The primary text, usually a title or a header, for the placeholder. */\n  @Input() header?: string;\n  \n  /** Additional descriptive text to provide more details or context. */\n  @Input() description?: string;\n  \n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy, \n  HostBinding,\n  inject,\n  Input,\n  ElementRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PlatformService } from '../../../services/platform.service';\n\n/**\n * Renders a container for list items, applying platform-specific styles for consistency \n * across different operating systems. This component serves as a foundational element \n * for creating lists in a user interface.\n */\n@Component({\n  selector: 'tgui-list',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <ng-content></ng-content>\n  `,\n  styles: [`\n    :host {\n      display: block;\n    }\n    \n    :host ::ng-deep > :not(:last-child) {\n      margin-bottom: 12px;\n    }\n    \n    :host-context(.tgui-platform-ios) {\n      padding: 10px 18px;\n      box-sizing: border-box;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ListComponent {\n  protected platformService = inject(PlatformService);\n} ","import { Component, ViewEncapsulation, ChangeDetectionStrategy, input, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Renders a visual indicator of steps or progress in a process, such as a tutorial or a multi-step form.\n * It visually represents total steps and current progress.\n */\n@Component({\n  selector: 'tgui-steps',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div class=\"tgui-steps-wrapper\">\n      <div \n        *ngFor=\"let step of stepsArray()\"\n        class=\"tgui-steps-step\"\n        [class.tgui-steps-step--active]=\"step < progress()\"\n      ></div>\n    </div>\n  `,\n  styles: [`\n    :host {\n      display: block;\n    }\n    \n    .tgui-steps-wrapper {\n      display: flex;\n      gap: 9px;\n      padding: 12px;\n    }\n    \n    .tgui-steps-step {\n      min-width: 3px;\n      height: 3px;\n      width: 100%;\n      border-radius: 2px;\n      background: var(--tgui--tertiary_bg_color);\n    }\n    \n    .tgui-steps-step--active {\n      background: var(--tgui--link_color);\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class StepsComponent {\n  /** Total number of steps. */\n  count = input<number>(0);\n  \n  /** \n   * Current progress, indicating how many steps have been completed. \n   * Progress is 0-indexed and goes up to `count`. \n   */\n  progress = input<number>(0);\n  \n  /** Array of indexes for rendering steps */\n  stepsArray = computed(() => Array.from({ length: this.count() }, (_, i) => i));\n} ","import { Component, Input, ViewEncapsulation, HostBinding, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PlatformService } from '../../../../../services/platform.service';\nimport { TextComponent } from '../../../../typography/text/text.component';\nimport { SubheadlineComponent } from '../../../../typography/subheadline/subheadline.component';\n\n@Component({\n  selector: 'tgui-timeline-item',\n  standalone: true,\n  imports: [CommonModule, TextComponent, SubheadlineComponent],\n  template: `\n    <div class=\"side\">\n      <div class=\"line\"></div>\n      <div class=\"dot\"></div>\n    </div>\n    <div class=\"fields\">\n      <tgui-text class=\"title\" weight=\"2\" *ngIf=\"header\">{{ header }}</tgui-text>\n      <tgui-subheadline \n        [level]=\"platformService.platform() === 'ios' ? '1' : '2'\"\n        class=\"description\"\n      >\n        <ng-content></ng-content>\n      </tgui-subheadline>\n    </div>\n  `,\n  styles: [`\n    :host {\n      --tgui--timeline--item--thickness: 4px;\n      --tgui--timeline--item--size: 12px;\n      display: flex;\n      gap: 32px;\n    }\n    \n    :host:last-child .line {\n      display: none;\n    }\n    \n    .side {\n      position: relative;\n      min-width: var(--tgui--timeline--item--size);\n    }\n    \n    .dot {\n      position: absolute;\n      top: 4px;\n      left: 0;\n      width: var(--tgui--timeline--item--size);\n      height: var(--tgui--timeline--item--size);\n      border-radius: 50%;\n      background: var(--tgui--quartenary_bg_color);\n    }\n    \n    .line {\n      position: absolute;\n      top: 24px;\n      bottom: 0;\n      left: 50%;\n      height: calc(100% - 4px);\n      width: var(--tgui--timeline--item--thickness);\n      border-radius: 2px;\n      transform: translateX(-50%);\n      background: var(--tgui--quartenary_bg_color);\n    }\n    \n    .fields {\n      overflow: hidden;\n    }\n    \n    .title {\n      display: block;\n      margin-bottom: 4px;\n    }\n    \n    .description {\n      color: var(--tgui--hint_color);\n    }\n    \n    :host.active .line,\n    :host.active .dot {\n      background: var(--tgui--link_color);\n    }\n    \n    :host.pre-active .dot {\n      background: var(--tgui--link_color);\n    }\n    \n    :host.ios .side {\n      --tgui--timeline--item--size: 16px;\n    }\n    \n    :host.ios .dot {\n      top: 6px;\n    }\n    \n    :host.ios .line {\n      top: 6px;\n      height: calc(100% + 26px);\n    }\n    \n    :host.horizontal {\n      gap: 24px;\n      flex-direction: column;\n    }\n    \n    :host.horizontal .side {\n      height: var(--tgui--timeline--item--size);\n      display: flex;\n      align-items: center;\n    }\n    \n    :host.horizontal .dot {\n      top: 0;\n    }\n    \n    :host.horizontal .line {\n      top: 50%;\n      left: 0;\n      height: var(--tgui--timeline--item--thickness);\n      width: calc(100% + 36px);\n      transform: translateY(-50%);\n    }\n    \n    :host.horizontal .title {\n      white-space: nowrap;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated\n})\nexport class TimelineItemComponent {\n  @Input() header?: string;\n  @Input() mode?: 'active' | 'pre-active';\n  @Input() horizontal?: boolean;\n  \n  protected platformService = inject(PlatformService);\n  \n  @HostBinding('class.active')\n  get isActive(): boolean {\n    return this.mode === 'active';\n  }\n  \n  @HostBinding('class.pre-active')\n  get isPreActive(): boolean {\n    return this.mode === 'pre-active';\n  }\n  \n  @HostBinding('class.ios')\n  get isIOS(): boolean {\n    return this.platformService.platform() === 'ios';\n  }\n  \n  @HostBinding('class.horizontal')\n  get isHorizontal(): boolean {\n    return !!this.horizontal;\n  }\n} ","import { Component, ViewEncapsulation, ContentChildren, QueryList, input, HostBinding, AfterContentInit, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TimelineItemComponent } from './components/timeline-item/timeline-item.component';\nimport { HorizontalScrollDirective } from '../../../directives/horizontal-scroll.directive';\n\n@Component({\n  selector: 'tgui-timeline',\n  standalone: true,\n  imports: [CommonModule, TimelineItemComponent, HorizontalScrollDirective],\n  template: `\n    <ng-content></ng-content>\n  `,\n  styles: [`\n    :host {\n      display: flex;\n      flex-direction: column;\n      gap: 24px;\n      padding: 32px 44px;\n      margin: 0;\n    }\n    \n    :host.horizontal {\n      flex-direction: row;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated\n})\nexport class TimelineComponent implements AfterContentInit {\n  active = input<number | undefined>(undefined);\n  horizontal = input<boolean | undefined>(undefined);\n  \n  @ContentChildren(TimelineItemComponent) items!: QueryList<TimelineItemComponent>;\n  \n  constructor() {\n    effect(() => {\n      const activeValue = this.active();\n      \n      // We need to access the value inside the effect to track it\n      // But we'll only update items when they're available\n      if (this.items && activeValue !== undefined) {\n        this.updateItemsMode();\n      }\n    });\n  }\n  \n  @HostBinding('class.horizontal')\n  get isHorizontal(): boolean {\n    return !!this.horizontal();\n  }\n  \n  @HostBinding('attr.tguiHorizontalScroll')\n  get needsHorizontalScroll(): any {\n    return this.horizontal() ? '' : null;\n  }\n  \n  ngAfterContentInit(): void {\n    // Initial setup of items after they're available\n    if (this.active() !== undefined) {\n      this.updateItemsMode();\n    }\n    \n    // Listen for changes to the items QueryList\n    this.items.changes.subscribe(() => {\n      if (this.active() !== undefined) {\n        this.updateItemsMode();\n      }\n    });\n  }\n  \n  private updateItemsMode(): void {\n    \n    this.items.forEach((item, index) => {\n      // Convert to 1-based index for comparison (like in React implementation)\n      const oneBasedIndex = index + 1;\n      \n      if (oneBasedIndex <= this.active()!) {\n        item.mode = 'active';\n      } else if (oneBasedIndex === this.active()! + 1) {\n        item.mode = 'pre-active';\n      } else {\n        item.mode = undefined;\n      }\n      \n      // Pass horizontal property to children\n      item.horizontal = this.horizontal();\n    });\n  }\n} ","import { Injectable, inject, Type } from '@angular/core';\nimport { PlatformService } from '../../../../services/platform.service';\nimport { TextComponent } from '../../../typography/text/text.component';\nimport { SubheadlineComponent } from '../../../typography/subheadline/subheadline.component';\nimport { CaptionComponent } from '../../../typography/caption/caption.component';\n\n/**\n * Service that provides platform-specific typography components for Cell\n * Similar to the React useTypographyCellComponents hook\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class TypographyCellService {\n  private platformService = inject(PlatformService);\n\n  /**\n   * Returns the appropriate component type for the title based on platform\n   * iOS: TextComponent\n   * Android/Web: SubheadlineComponent with level 1\n   */\n  getTitleComponent(): Type<any> {\n    return this.platformService.isIOS() ? TextComponent : SubheadlineComponent;\n  }\n\n  /**\n   * Returns the appropriate component type for the description based on platform\n   * iOS: CaptionComponent\n   * Android/Web: SubheadlineComponent with level 2\n   */\n  getDescriptionComponent(): Type<any> {\n    return this.platformService.isIOS() ? CaptionComponent : SubheadlineComponent;\n  }\n\n  /**\n   * Returns the level to use for title component if it's a SubheadlineComponent\n   */\n  getTitleLevel(): string {\n    return this.platformService.isIOS() ? '' : '1';\n  }\n\n  /**\n   * Returns the level to use for description component if it's a SubheadlineComponent\n   */\n  getDescriptionLevel(): string {\n    return '2';\n  }\n} ","import {\n  Component,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  HostBinding,\n  inject,\n  TemplateRef,\n  input\n} from '@angular/core';\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\n\nimport { TappableComponent } from '../../utils/tappable/tappable.component';\nimport { SubheadlineComponent } from '../../typography/subheadline/subheadline.component';\nimport { TitleComponent } from '../../typography/title/title.component';\nimport { TextComponent } from '../../typography/text/text.component';\nimport { CaptionComponent } from '../../typography/caption/caption.component';\nimport { PlatformService } from '../../../services/platform.service';\nimport { TypographyCellService } from './services/typography-cell.service';\n\n/**\n * `Cell` component acts as a flexible and interactive container for various types of content,\n * enabling the creation of complex list items, form fields, and more. It leverages the `Tappable`\n * component for interaction and is designed to be flexible and extensible.\n * \n * ## Usage\n * \n * ```html\n * <!-- Using input properties and template references -->\n * <tgui-cell\n *   subhead=\"Subhead text\"\n *   title=\"Title text\"\n *   hint=\"Hint text\"\n *   subtitle=\"Subtitle text\"\n *   description=\"Description text\"\n *   [titleBadge]=\"badgeTemplate\"\n *   [beforeTemplate]=\"beforeTemplate\"\n *   [afterTemplate]=\"afterTemplate\">\n *   Main content\n * </tgui-cell>\n * \n * <!-- Using with event propagation for form controls (combines semantic label with tappable effects) -->\n * <tgui-cell\n *   [propagateEvents]=\"true\"\n *   description=\"Click anywhere to toggle - includes ripple effects!\"\n *   [afterTemplate]=\"switchTemplate\">\n *   Toggle option\n * </tgui-cell>\n * \n * <ng-template #beforeTemplate>\n *   <tgui-avatar size=\"l\"></tgui-avatar>\n * </ng-template>\n * \n * <ng-template #afterTemplate>\n *   <tgui-badge type=\"number\">99</tgui-badge>\n * </ng-template>\n * \n * <ng-template #switchTemplate>\n *   <tgui-switch [checked]=\"true\"></tgui-switch>\n * </ng-template>\n * \n * <ng-template #badgeTemplate>\n *   <tgui-badge type=\"dot\"></tgui-badge>\n * </ng-template>\n * ```\n * \n * ## Template Inputs\n * \n * The component accepts the following template inputs:\n * \n * - `beforeTemplate`: Optional template displayed on the left side of the cell\n * - `afterTemplate`: Optional template displayed on the right side of the cell\n * - `titleBadge`: Badge template displayed next to the title\n * \n * All other content should be provided via input properties:\n * - `subhead`: Optional content displayed above the main title\n * - `title`: Main title/header content\n * - `hint`: Optional content displayed next to the title\n * - `subtitle`: Optional content displayed below the title\n * - `description`: Optional descriptive text below the subtitle\n * - `propagateEvents`: When true, wraps content in semantic label for form control interaction\n */\n@Component({\n  selector: 'tgui-cell',\n  standalone: true,\n  imports: [\n    CommonModule,\n    NgTemplateOutlet,\n    TappableComponent, \n    SubheadlineComponent, \n    TitleComponent, \n    TextComponent, \n    CaptionComponent\n  ],\n  template: `\n    <!-- Conditional rendering based on propagateEvents -->\n    <ng-container *ngIf=\"propagateEvents(); else tappableTemplate\">\n      <label class=\"label-container\">\n        <tgui-tappable\n          [interactiveAnimation]=\"interactiveAnimation()\"\n          [disabled]=\"disabled()\"\n          [readonly]=\"readonly()\"\n          [class.wrapper--hovered]=\"hovered()\"\n          class=\"wrapper\"\n          [class.wrapper--multiline]=\"multiline()\"\n          [class.wrapper--ios]=\"isIOS\"\n        >\n          <ng-container *ngTemplateOutlet=\"cellContent\"></ng-container>\n        </tgui-tappable>\n      </label>\n    </ng-container>\n\n    <ng-template #tappableTemplate>\n      <tgui-tappable\n        [interactiveAnimation]=\"interactiveAnimation()\"\n        [disabled]=\"disabled()\"\n        [readonly]=\"readonly()\"\n        [class.wrapper--hovered]=\"hovered()\"\n        class=\"wrapper\"\n        [class.wrapper--multiline]=\"multiline()\"\n        [class.wrapper--ios]=\"isIOS\"\n      >\n        <ng-container *ngTemplateOutlet=\"cellContent\"></ng-container>\n      </tgui-tappable>\n    </ng-template>\n\n    <!-- Shared cell content template -->\n    <ng-template #cellContent>\n      <div *ngIf=\"beforeTemplate()\" class=\"before\">\n        <ng-container *ngTemplateOutlet=\"beforeTemplate()\"></ng-container>\n      </div>\n\n      <div class=\"middle\">\n        <ng-content></ng-content>\n        <tgui-subheadline \n          *ngIf=\"subhead()\" \n          level=\"2\" \n          weight=\"3\" \n          class=\"subhead\"\n        >\n          {{ subhead() }}\n        </tgui-subheadline>\n\n        <ng-container *ngIf=\"title() || hint() || titleBadge()\">\n          <!-- iOS: TextComponent -->\n          <tgui-text *ngIf=\"isIOS\" class=\"head\">\n            <span *ngIf=\"title()\" class=\"title\">\n              {{ title() }}\n            </span>\n            <span *ngIf=\"hint()\" class=\"hint\">\n              {{ hint() }}\n            </span>\n            <ng-container *ngIf=\"titleBadge()\">\n              <ng-container *ngTemplateOutlet=\"titleBadge()\"></ng-container>\n            </ng-container>\n          </tgui-text>\n\n          <!-- Android/Web: SubheadlineComponent -->\n          <tgui-subheadline *ngIf=\"!isIOS\" level=\"1\" class=\"head\">\n            <span *ngIf=\"title()\" class=\"title\">\n              {{ title() }}\n            </span>\n            <span *ngIf=\"hint()\" class=\"hint\">\n              {{ hint() }}\n            </span>\n            <ng-container *ngIf=\"titleBadge()\">\n              <ng-container *ngTemplateOutlet=\"titleBadge()\"></ng-container>\n            </ng-container>\n          </tgui-subheadline>\n        </ng-container>\n\n        <tgui-subheadline \n          *ngIf=\"subtitle()\" \n          level=\"2\" \n          weight=\"3\" \n          class=\"subtitle\"\n        >\n          {{ subtitle() }}\n        </tgui-subheadline>\n\n        <ng-container *ngIf=\"description()\">\n          <!-- iOS: CaptionComponent -->\n          <tgui-caption \n            *ngIf=\"isIOS\" \n            class=\"description\"\n          >\n            {{ description() }}\n          </tgui-caption>\n\n          <!-- Android/Web: SubheadlineComponent -->\n          <tgui-subheadline \n            *ngIf=\"!isIOS\" \n            level=\"2\" \n            class=\"description\"\n          >\n            {{ description() }}\n          </tgui-subheadline>\n        </ng-container>\n      </div>\n\n      <div *ngIf=\"afterTemplate()\" class=\"after\">\n        <ng-container *ngTemplateOutlet=\"afterTemplate()\"></ng-container>\n      </div>\n    </ng-template>\n  `,\n  styles: [`\n    :host {\n      display: block;\n      position: relative;\n    }\n\n    .wrapper {\n      --tgui--cell--middle--padding: 16px 0;\n\n      display: flex;\n      align-items: center;\n      gap: 24px;\n      padding: 0 24px;\n    }\n\n    .wrapper--ios {\n      --tgui--cell--middle--padding: 12px 0;\n      gap: 16px;\n      padding: 0 16px;\n    }\n\n    .wrapper--hovered {\n      background: var(--tgui--tertiary_bg_color);\n    }\n\n    /* Label container styles */\n    .label-container {\n      display: block;\n      cursor: pointer;\n    }\n\n    .before, .after {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n\n    .middle {\n      display: flex;\n      flex-direction: column;\n      gap: 2px;\n      \n      flex-grow: 1;\n      max-inline-size: 100%;\n      min-inline-size: 0;\n      \n      padding: var(--tgui--cell--middle--padding);\n    }\n\n    .middle > *,\n    .title {\n      overflow: hidden;\n      text-overflow: ellipsis;\n    }\n\n    .wrapper:not(.wrapper--multiline) .middle > *,\n    .wrapper:not(.wrapper--multiline) .title {\n      white-space: nowrap;\n    }\n\n    .subhead {\n      color: var(--tgui--subtitle_text_color);\n    }\n\n    .head {\n      display: inline-flex;\n      align-items: center;\n      gap: 4px;\n    }\n\n    .hint {\n      color: var(--tgui--hint_color);\n    }\n\n    .subtitle {\n      color: var(--tgui--hint_color);\n    }\n\n    .description {\n      color: var(--tgui--hint_color);\n    }\n\n    @media (hover: hover) and (pointer: fine) {\n      .wrapper:hover {\n        background: var(--tgui--tertiary_bg_color);\n      }\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CellComponent {\n  /** Controls the hover state of the component externally, useful for keyboard navigation */\n  hovered = input<boolean>(false);\n\n  /** Allows for multiline content without truncation */\n  multiline = input<boolean>(false);\n\n  /** Interactive animation type */\n  interactiveAnimation = input<'opacity' | 'background'>('background');\n\n  /** Readonly state */\n  readonly = input<boolean>(false);\n\n  /** Disabled state */\n  disabled = input<boolean>(false);\n\n  /** When true, wraps content in semantic label for form control interaction */\n  propagateEvents = input<boolean>(false);\n\n  /** Content displayed above the main content as a subheading */\n  subhead = input<string | undefined>(undefined);\n\n  /** Main content displayed as a header */\n  title = input<string | undefined>(undefined);\n\n  /** Content displayed alongside the header as a hint */\n  hint = input<string | undefined>(undefined);\n\n  /** Content displayed below the header as a subtitle */\n  subtitle = input<string | undefined>(undefined);\n\n  /** Additional description displayed below the subtitle */\n  description = input<string | undefined>(undefined);\n\n  /** Badge component to be displayed next to the title */\n  titleBadge = input<TemplateRef<any> | null>(null);\n\n  /** Template displayed on the left side of the cell */\n  beforeTemplate = input<TemplateRef<any> | null>(null);\n\n  /** Template displayed on the right side of the cell */\n  afterTemplate = input<TemplateRef<any> | null>(null);\n\n  /** Platform service injection */\n  protected platformService = inject(PlatformService);\n\n  /** Typography service for component selection */\n  protected typographyCellService = inject(TypographyCellService);\n\n  /** Is the platform iOS */\n  get isIOS(): boolean {\n    return this.platformService.isIOS();\n  }\n\n  /** Add iOS specific class */\n  @HostBinding('class.ios')\n  get isiOS(): boolean {\n    return this.isIOS;\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  input,\n  signal, \n  computed,\n  inject,\n  HostBinding,\n  effect,\n  output,\n  EventEmitter,\n  ElementRef,\n  AfterViewInit,\n  OnDestroy,\n  ViewChild,\n  TemplateRef,\n  NgZone,\n  model\n} from '@angular/core';\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\nimport { CellComponent } from '../cell/cell.component';\nimport { TguiIcon24ChevronDown } from '../../../icons/icon24/tgui-icon24-chevron-down';\n\n/**\n * This component serves as an accordion container with built-in summary and content sections.\n * It uses a signal-based approach to manage its state.\n * \n * ## Usage\n * ```html\n * <!-- With string summary -->\n * <tgui-accordion \n *   summary=\"Simple string title\"\n *   [(expanded)]=\"isExpanded\">\n *   Accordion content here\n * </tgui-accordion>\n * \n * <!-- With template summary -->\n * <tgui-accordion \n *   [summary]=\"summaryTemplate\"\n *   [afterTemplate]=\"afterTemplate\"\n *   [(expanded)]=\"isExpanded\">\n *   Accordion content here\n * </tgui-accordion>\n * ```\n */\n@Component({\n  selector: 'tgui-accordion',\n  standalone: true,\n  imports: [CommonModule, NgTemplateOutlet, CellComponent, TguiIcon24ChevronDown],\n  template: `\n    <!-- Summary section -->\n    <tgui-cell\n      [id]=\"labelId()\"\n      [attr.aria-expanded]=\"expanded()\"\n      [attr.aria-controls]=\"contentId()\"\n      [afterTemplate]=\"getAfterTemplate()\"\n      (click)=\"toggleExpanded()\"\n    >\n      <ng-container *ngTemplateOutlet=\"getSummaryTemplate()\"></ng-container>\n    </tgui-cell>\n    \n    <!-- Content section -->\n    <div\n      class=\"accordion-content\"\n      [attr.id]=\"contentId()\"\n      [attr.role]=\"'region'\"\n      [attr.aria-labelledby]=\"labelId()\"\n      [attr.aria-hidden]=\"!expanded()\"\n    >\n      <div \n        class=\"accordion-body\"\n        #bodyElement\n        [style.maxHeight]=\"maxHeight()\"\n      >\n        <ng-content></ng-content>\n      </div>\n    </div>\n\n    <!-- Default summary template for string input -->\n    <ng-template #defaultStringTemplate>\n      {{summary()}}\n    </ng-template>\n\n    <!-- Default chevron template -->\n    <ng-template #defaultChevronTemplate>\n      <tgui-icon24-chevron-down \n        class=\"chevron\"\n        [class.chevron--expanded]=\"expanded()\"\n      ></tgui-icon24-chevron-down>\n    </ng-template>\n  `,\n  styles: [`\n    :host {\n      display: block;\n    }\n\n    .accordion-content {\n      display: block;\n      overflow: hidden;\n      background: var(--tgui--bg_color);\n    }\n    \n    .accordion-body {\n      max-block-size: 0;\n      transition: max-height 200ms ease-in-out;\n    }\n\n    .chevron {\n      transition: transform .15s ease-out;\n      color: var(--tgui--link_color);\n    }\n    \n    .chevron--expanded {\n      transform: rotate(180deg);\n    }\n\n    .default-summary {\n      color: var(--tgui--text_color);\n      opacity: 0.5;\n      font-style: italic;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated\n})\nexport class AccordionComponent implements AfterViewInit, OnDestroy {\n  /**\n   * Optional ID for the accordion element\n   */\n  readonly id = input<string>(`tgui-accordion-${Math.random().toString(36).substring(2, 9)}`);\n\n  /**\n   * Summary content - can be either a string or a template\n   */\n  readonly summary = input.required<string | TemplateRef<any>>();\n\n  /**\n   * Template displayed on the right side of the summary (replaces the default chevron)\n   */\n  readonly afterTemplate = input<TemplateRef<any> | null>(null);\n\n  /**\n   * Model value for expanded state with two-way binding support\n   */\n  readonly expanded = model(false);\n\n  /**\n   * @deprecated Use expanded() instead\n   * Internal signal for expansion state, kept for backward compatibility\n   */\n  readonly _expanded = signal(false);\n\n  /** Signal for dynamically setting max-height */\n  protected maxHeight = signal('0px');\n\n  /** Track when component is initialized */\n  private initialized = signal(false);\n\n  @ViewChild('bodyElement') private bodyElement!: ElementRef<HTMLDivElement>;\n  @ViewChild('defaultChevronTemplate', { static: true }) private defaultChevronTemplate!: TemplateRef<any>;\n  @ViewChild('defaultStringTemplate', { static: true }) private defaultStringTemplate!: TemplateRef<any>;\n\n  private ngZone = inject(NgZone);\n  \n  /** Computed ID for the label element */\n  readonly labelId = computed(() => `${this.id()}-label`);\n  \n  /** Computed ID for the content element */\n  readonly contentId = computed(() => `${this.id()}-content`);\n\n  // Observer for changes in content height\n  private mutationObserver: MutationObserver | null = null;\n  private resizeObserver: ResizeObserver | null = null;\n\n  constructor() {\n    // Sync expanded model with internal state\n    effect(() => {\n      this._expanded.set(this.expanded());\n    });\n\n    // Effect to update max-height when expanded status changes\n    effect(() => {\n      this.updateMaxHeight(this.expanded(), this.initialized());\n    });\n  }\n\n  /** Get appropriate template based on summary type */\n  getSummaryTemplate(): TemplateRef<any> {\n    const summary = this.summary();\n    if (summary instanceof TemplateRef) {\n      return summary;\n    }\n    return this.defaultStringTemplate;\n  }\n\n  /** Get the template to display in the after slot */\n  getAfterTemplate(): TemplateRef<any> | null {\n    return this.afterTemplate() || this.defaultChevronTemplate;\n  }\n\n  /**\n   * Toggle the expanded state of the accordion\n   */\n  toggleExpanded(): void {\n    this.expanded.update(state => !state);\n  }\n\n  ngAfterViewInit(): void {\n    this.initialized.set(true);\n    this.updateMaxHeight(this.expanded(), true);\n    this.setupContentObservers();\n  }\n  \n  ngOnDestroy(): void {\n    this.disconnectObservers();\n  }\n\n  /**\n   * Set up observers to detect changes in content size\n   */\n  private setupContentObservers(): void {\n    if (!this.bodyElement?.nativeElement) return;\n    \n    // Run outside Angular zone for better performance\n    this.ngZone.runOutsideAngular(() => {\n      // Observer for attribute changes\n      this.mutationObserver = new MutationObserver(() => {\n        if (this.expanded()) {\n          this.updateContentHeight();\n        }\n      });\n      \n      this.mutationObserver.observe(this.bodyElement.nativeElement, {\n        attributes: true,\n        childList: true,\n        subtree: true\n      });\n      \n      // Observer for size changes of child elements\n      if (typeof ResizeObserver !== 'undefined') {\n        this.resizeObserver = new ResizeObserver(() => {\n          if (this.expanded()) {\n            this.updateContentHeight();\n          }\n        });\n        \n        this.resizeObserver.observe(this.bodyElement.nativeElement);\n      }\n    });\n  }\n\n  /**\n   * Disconnect all observers during component destruction\n   */\n  private disconnectObservers(): void {\n    if (this.mutationObserver) {\n      this.mutationObserver.disconnect();\n      this.mutationObserver = null;\n    }\n    \n    if (this.resizeObserver) {\n      this.resizeObserver.disconnect();\n      this.resizeObserver = null;\n    }\n  }\n\n  /**\n   * Update height based on current content\n   */\n  private updateContentHeight(): void {\n    if (!this.bodyElement?.nativeElement) return;\n    \n    // Need to run this inside Angular zone to update the UI\n    this.ngZone.run(() => {\n      const scrollHeight = this.bodyElement.nativeElement.scrollHeight;\n      this.maxHeight.set(`${scrollHeight}px`);\n    });\n  }\n\n  /**\n   * Calculates and sets the appropriate max-height based on content\n   */\n  private updateMaxHeight(expanded: boolean, initialized: boolean): void {\n    if (!expanded) {\n      this.maxHeight.set('0px');\n      return;\n    }\n    \n    // We don't know the height of the element in the first render\n    if (!initialized || !this.bodyElement) {\n      this.maxHeight.set('inherit');\n      return;\n    }\n    \n    const scrollHeight = this.bodyElement.nativeElement.scrollHeight;\n    this.maxHeight.set(`${scrollHeight}px`);\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  HostListener,\n  inject,\n  input,\n  effect,\n  TemplateRef,\n  ViewChild\n} from '@angular/core';\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\n\nimport { CellComponent } from '../../../cell/cell.component';\nimport { AccordionComponent } from '../../accordion.component';\nimport { TguiIcon24ChevronDown } from '../../../../../icons/icon24/tgui-icon24-chevron-down';\n\n/**\n * `AccordionSummary` serves as the clickable header for an accordion section, toggling the visibility of the content.\n * It incorporates an expand/collapse icon to visually indicate state. This component extends `Cell` to provide\n * a consistent UI and accessibility features.\n * \n * ## Usage\n * \n * ```html\n * <!-- Using default chevron icon -->\n * <tgui-accordion-summary>\n *   Accordion title\n * </tgui-accordion-summary>\n * \n * <!-- Using custom after template -->\n * <tgui-accordion-summary [afterTemplate]=\"customAfterTemplate\">\n *   Accordion title\n * </tgui-accordion-summary>\n * \n * <ng-template #customAfterTemplate>\n *   <tgui-badge type=\"number\">5</tgui-badge>\n * </ng-template>\n * ```\n * \n * ## Template Inputs\n * \n * The component accepts the following template inputs:\n * \n * - `afterTemplate`: Optional template displayed on the right side of the cell (replaces the default chevron)\n */\n@Component({\n  selector: 'tgui-accordion-summary',\n  standalone: true,\n  imports: [CommonModule, NgTemplateOutlet, CellComponent, TguiIcon24ChevronDown],\n  template: `\n    <tgui-cell\n      [id]=\"accordion.labelId()\"\n      [attr.aria-expanded]=\"accordion.expanded\"\n      [attr.aria-controls]=\"accordion.contentId()\"\n      [afterTemplate]=\"getAfterTemplate()\"\n    >\n      <ng-content></ng-content>\n    </tgui-cell>\n    \n    <!-- Default chevron template -->\n    <ng-template #defaultChevronTemplate>\n      <tgui-icon24-chevron-down \n        class=\"chevron\"\n        [class.chevron--expanded]=\"isExpanded\"\n      ></tgui-icon24-chevron-down>\n    </ng-template>\n  `,\n  styles: [`\n    .chevron {\n      transition: transform .15s ease-out;\n      color: var(--tgui--link_color);\n    }\n    \n    .chevron--expanded {\n      transform: rotate(180deg);\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated\n})\nexport class AccordionSummaryComponent {\n  /** Template displayed on the right side of the cell (replaces the default chevron) */\n  afterTemplate = input<TemplateRef<any> | null>(null);\n  \n  protected accordion = inject(AccordionComponent);\n  \n  // Property to track expanded state instead of calling the function in template\n  isExpanded = false;\n  \n  // Reference to the default chevron template\n  @ViewChild('defaultChevronTemplate', { static: true })\n  defaultChevronTemplate!: TemplateRef<any>;\n  \n  constructor() {\n    // Use effect to respond to changes in the expanded signal\n    effect(() => {\n      this.isExpanded = this.accordion._expanded();\n    });\n  }\n\n  @HostListener('click')\n  onClick(): void {\n    this.accordion.toggleExpanded();\n  }\n\n  /** Get the template to display in the after slot */\n  getAfterTemplate(): TemplateRef<any> | null {\n    return this.afterTemplate() || this.defaultChevronTemplate;\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  inject,\n  ElementRef,\n  AfterViewInit,\n  OnDestroy,\n  signal,\n  effect,\n  ViewChild,\n  HostBinding,\n  NgZone\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AccordionComponent } from '../../accordion.component';\n\n/**\n * Renders the content part of an accordion, leveraging signals to control visibility and animation.\n * Utilizes element measurements for smooth height transitions during expand/collapse actions.\n */\n@Component({\n  selector: 'tgui-accordion-content',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div \n      class=\"body\"\n      #bodyElement\n      [style.maxHeight]=\"maxHeight()\"\n    >\n      <ng-content></ng-content>\n    </div>\n  `,\n  styles: [`\n    :host {\n      display: block;\n      overflow: hidden;\n      background: var(--tgui--bg_color);\n    }\n    \n    .body {\n      max-block-size: 0;\n      transition: max-height 200ms ease-in-out;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated\n})\nexport class AccordionContentComponent implements AfterViewInit, OnDestroy {\n  @ViewChild('bodyElement') bodyElement!: ElementRef<HTMLDivElement>;\n  \n  protected accordion = inject(AccordionComponent);\n  private ngZone = inject(NgZone);\n  \n  // Signal for dynamically setting max-height\n  maxHeight = signal('0px');\n  \n  // Bind aria attributes for accessibility\n  @HostBinding('attr.id') get contentId() { return this.accordion.contentId(); }\n  @HostBinding('attr.role') role = 'region';\n  @HostBinding('attr.aria-labelledby') get labelId() { return this.accordion.labelId(); }\n  @HostBinding('attr.aria-hidden') get ariaHidden() { return !this.accordion.expanded; }\n  \n  // Track when component is initialized\n  private initialized = signal(false);\n  \n  // Observer for changes in content height (like nested accordions expanding)\n  private mutationObserver: MutationObserver | null = null;\n  private resizeObserver: ResizeObserver | null = null;\n  \n  constructor() {\n    // Effect to update max-height when expanded status changes\n    effect(() => {\n      this.updateMaxHeight(this.accordion._expanded(), this.initialized());\n    });\n  }\n  \n  ngAfterViewInit(): void {\n    this.initialized.set(true);\n    this.updateMaxHeight(this.accordion._expanded(), true);\n    this.setupContentObservers();\n  }\n  \n  ngOnDestroy(): void {\n    this.disconnectObservers();\n  }\n  \n  /**\n   * Set up observers to detect changes in content size\n   */\n  private setupContentObservers(): void {\n    if (!this.bodyElement?.nativeElement) return;\n    \n    // Run outside Angular zone for better performance\n    this.ngZone.runOutsideAngular(() => {\n      // Observer for attribute changes (like class changes on nested accordions)\n      this.mutationObserver = new MutationObserver(() => {\n        if (this.accordion._expanded()) {\n          this.updateContentHeight();\n        }\n      });\n      \n      this.mutationObserver.observe(this.bodyElement.nativeElement, {\n        attributes: true,\n        childList: true,\n        subtree: true\n      });\n      \n      // Observer for size changes of child elements\n      if (typeof ResizeObserver !== 'undefined') {\n        this.resizeObserver = new ResizeObserver(() => {\n          if (this.accordion._expanded()) {\n            this.updateContentHeight();\n          }\n        });\n        \n        this.resizeObserver.observe(this.bodyElement.nativeElement);\n      }\n    });\n  }\n  \n  /**\n   * Disconnect all observers during component destruction\n   */\n  private disconnectObservers(): void {\n    if (this.mutationObserver) {\n      this.mutationObserver.disconnect();\n      this.mutationObserver = null;\n    }\n    \n    if (this.resizeObserver) {\n      this.resizeObserver.disconnect();\n      this.resizeObserver = null;\n    }\n  }\n  \n  /**\n   * Update height based on current content\n   */\n  private updateContentHeight(): void {\n    if (!this.bodyElement?.nativeElement) return;\n    \n    // Need to run this inside Angular zone to update the UI\n    this.ngZone.run(() => {\n      const scrollHeight = this.bodyElement.nativeElement.scrollHeight;\n      this.maxHeight.set(`${scrollHeight}px`);\n    });\n  }\n  \n  /**\n   * Calculates and sets the appropriate max-height based on content\n   */\n  private updateMaxHeight(expanded: boolean, initialized: boolean): void {\n    if (!expanded) {\n      this.maxHeight.set('0px');\n      return;\n    }\n    \n    // We don't know the height of the element in the first render\n    if (!initialized || !this.bodyElement) {\n      this.maxHeight.set('inherit');\n      return;\n    }\n    \n    const scrollHeight = this.bodyElement.nativeElement.scrollHeight;\n    this.maxHeight.set(`${scrollHeight}px`);\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy, \n  HostBinding,\n  ElementRef,\n  inject,\n  ContentChild,\n  TemplateRef,\n  computed,\n  input\n} from '@angular/core';\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\nimport { TappableComponent } from '../../../../utils/tappable/tappable.component';\nimport { SubheadlineComponent } from '../../../../typography/subheadline/subheadline.component';\nimport { TextComponent } from '../../../../typography/text/text.component';\nimport { PlatformService } from '../../../../../services/platform.service';\n\n/**\n * Renders an interactive cell component with optional leading and trailing elements.\n * Designed to be flexible, supporting various content structures and interaction models within UI designs.\n */\n@Component({\n  selector: 'tgui-button-cell',\n  standalone: true,\n  imports: [\n    CommonModule,\n    NgTemplateOutlet,\n    TappableComponent,\n    SubheadlineComponent,\n    TextComponent\n  ],\n  template: `\n    <tgui-tappable\n      [disabled]=\"disabled()\"\n      [interactiveAnimation]=\"'background'\"\n      class=\"wrapper\"\n    >\n      <ng-container *ngIf=\"beforeTemplate()\">\n        <ng-container *ngTemplateOutlet=\"beforeTemplate()\"></ng-container>\n      </ng-container>\n\n      <ng-container *ngIf=\"platformService.isIOS(); else androidContent\">\n        <tgui-text>\n          <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n        </tgui-text>\n      </ng-container>\n      <ng-template #androidContent>\n        <tgui-subheadline>\n          <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n        </tgui-subheadline>\n      </ng-template>\n\n      <ng-container *ngIf=\"afterTemplate()\">\n        <ng-container *ngTemplateOutlet=\"afterTemplate()\"></ng-container>\n      </ng-container>\n    </tgui-tappable>\n\n    <!-- Template for main content -->\n    <ng-template #contentTemplate>\n      <ng-content></ng-content>\n    </ng-template>\n  `,\n  styles: [`\n    :host {\n      display: block;\n      position: relative;\n      box-sizing: border-box;\n      -webkit-tap-highlight-color: transparent;\n    }\n\n    :host.button-cell-destructive {\n        color: var(--tgui--destructive_text_color);\n    }\n\n    :host-context(.tgui-platform-ios) {\n      --tgui--ripple-color: rgba(0, 0, 0, 0.2);\n    }\n\n    .wrapper {\n      width: 100%;\n      display: flex;\n      align-items: center;\n      \n\n        gap: 24px;\n        height: 48px;\n        padding: 10px 24px;\n        box-sizing: border-box;\n\n        color: var(--tgui--link_color);\n        border: none;\n        background: transparent;\n    }\n\n    :host-context(.tgui-platform-ios) .wrapper {\n        gap: 18px;\n  height: 44px;\n  padding: 8px 18px;\n    }\n\n    .before, .after {\n      display: flex;\n      align-items: center;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ButtonCellComponent {\n  /** Determines the button cell's visual theme, influencing color and style. */\n  mode = input<'default' | 'destructive'>('default');\n  \n  /** Disables button interaction */\n  disabled = input<boolean>(false);\n\n  /** Template displayed before the main content */\n  beforeTemplate = input<TemplateRef<any> | null>(null);\n\n  /** Template displayed after the main content */\n  afterTemplate = input<TemplateRef<any> | null>(null);\n\n  /** Inject the platform service */\n  protected platformService = inject(PlatformService);\n\n  /** Apply destructive mode class */\n  @HostBinding('class.button-cell-destructive')\n  get isDestructive(): boolean {\n    return this.mode() === 'destructive';\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy, \n  input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconContainerComponent } from '../icon-container/icon-container.component';\nimport { SubheadlineComponent } from '../../typography/subheadline/subheadline.component';\nimport { TguiDynamicIconComponent } from '../../../icons/dynamic-icon.component';\n/**\n * Renders a stylized blockquote element, typically used for quotations or special text.\n * The component can display a text in the subheadline and content below it.\n * The component can include a customizable icon in the top right corner.\n * \n * ## Usage\n * \n * ```html\n * <tgui-blockquote icon=\"quote\" text=\"Optional headline text\">\n *   Content of the blockquote\n * </tgui-blockquote>\n * ```\n * \n * ### Properties\n * \n * - `icon`: Optional input to specify which icon to display in the top-right corner.\n *   Default is \"quote\" icon. Uses the dynamic icon component.\n *   \n * - `text`: Optional text to be displayed as a headline above the content.\n *   If provided, it will be wrapped in the subheadline component.\n */\n@Component({\n  selector: 'tgui-blockquote',\n  standalone: true,\n  imports: [\n    CommonModule, \n    IconContainerComponent, \n    SubheadlineComponent,\n    TguiDynamicIconComponent\n  ],\n  template: `\n    <!-- Text displayed as subheadline if provided -->\n    <tgui-subheadline *ngIf=\"text()\">\n      {{ text() }}\n    </tgui-subheadline>\n    \n    <!-- Main content -->\n    <ng-content></ng-content>\n    \n    <!-- Icon -->\n    <tgui-icon-container class=\"top-right-icon\">\n      <tgui-dynamic-icon [icon]=\"icon()\"></tgui-dynamic-icon>\n    </tgui-icon-container>\n  `,\n  styles: [`\n    :host {\n      position: relative;\n      padding: 6px 28px 8px 12px;\n      display: block;\n      border-left: 3px solid var(--tgui--link_color);\n      border-radius: 4px;\n      background: var(--tgui--secondary_fill);\n    }\n\n    .top-right-icon {\n      position: absolute;\n      top: 4px;\n      right: 6px;\n      display: block;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BlockquoteComponent {\n  /** The icon to display in the top right corner. Default is \"quote\". */\n  icon = input<string>('quote');\n  \n  /** Optional text to display as a headline above the content. */\n  text = input<string | undefined>(undefined);\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  EventEmitter,\n  inject,\n  input,\n  Output,\n  ElementRef,\n  TemplateRef\n} from '@angular/core';\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\nimport { PlatformService } from '../../../services/platform.service';\nimport { TappableComponent } from '../../utils/tappable/tappable.component';\nimport { SubheadlineComponent } from '../../typography/subheadline/subheadline.component';\nimport { TextComponent } from '../../typography/text/text.component';\nimport { CaptionComponent } from '../../typography/caption/caption.component';\nimport { TguiDynamicIconComponent } from '../../../icons/dynamic-icon.component';\n\n/**\n * The `Banner` component renders a prominent graphical element, typically displayed at the top of a page or section, \n * designed to grab the user's attention and convey important information. \n * It is a versatile tool used for various purposes such as branding, promotion, announcements, or navigation.\n * \n * ## Usage\n * \n * ```html\n * <tgui-banner \n *   type=\"inline\" \n *   (onCloseIcon)=\"onCloseIcon($event)\"\n *   [beforeTemplate]=\"beforeTemplate\"\n *   [calloutTemplate]=\"calloutTemplate\"\n *   [headerTemplate]=\"headerTemplate\"\n *   [descriptionTemplate]=\"descriptionTemplate\"\n *   [buttonsTemplate]=\"buttonsTemplate\"\n *   [backgroundTemplate]=\"backgroundTemplate\">\n * </tgui-banner>\n * \n * <ng-template #beforeTemplate>\n *   <tgui-icon24-qr></tgui-icon24-qr>\n * </ng-template>\n * \n * <ng-template #calloutTemplate>\n *   Urgent notification\n * </ng-template>\n * \n * <ng-template #headerTemplate>\n *   Introducing TON Space\n * </ng-template>\n * \n * <ng-template #descriptionTemplate>\n *   Start exploring TON in a new, better way\n * </ng-template>\n * \n * <ng-template #buttonsTemplate>\n *   <tgui-button size=\"s\">Try it out</tgui-button>\n *   <tgui-button size=\"s\" mode=\"plain\">Maybe later</tgui-button>\n * </ng-template>\n * ```\n * \n * ## Template Inputs\n * \n * The component accepts the following template inputs:\n * \n * - `beforeTemplate`: Optional template displayed at the start of the banner, useful for icons\n * - `calloutTemplate`: Optional template for callout text displayed above the header\n * - `headerTemplate`: Template for main header/title of the banner\n * - `subheaderTemplate`: Optional template for text displayed below the header\n * - `descriptionTemplate`: Optional template for descriptive text\n * - `backgroundTemplate`: Optional template for background content\n * - `buttonsTemplate`: Optional template for action buttons\n */\n@Component({\n  selector: 'tgui-banner',\n  standalone: true,\n  imports: [\n    CommonModule,\n    NgTemplateOutlet,\n    TappableComponent,\n    SubheadlineComponent,\n    TextComponent,\n    CaptionComponent,\n    TguiDynamicIconComponent\n  ],\n  template: `\n    <section \n      class=\"wrapper\"\n      [class.wrapper--ios]=\"platformService.isIOS()\"\n      [class.wrapper--base]=\"!platformService.isIOS()\"\n      [class.wrapper--withBackground]=\"backgroundTemplate()\"\n      [class.wrapper--inline]=\"type() === 'inline'\"\n    >\n      <div *ngIf=\"backgroundTemplate()\" class=\"background\">\n        <ng-container *ngTemplateOutlet=\"backgroundTemplate()\"></ng-container>\n      </div>\n\n      <ng-container *ngIf=\"beforeTemplate()\">\n        <ng-container *ngTemplateOutlet=\"beforeTemplate()\"></ng-container>\n      </ng-container>\n\n      <div class=\"middle\">\n        <tgui-subheadline *ngIf=\"calloutTemplate()\" class=\"subheader\" level=\"2\">\n          <ng-container *ngTemplateOutlet=\"calloutTemplate()\"></ng-container>\n        </tgui-subheadline>\n\n        <tgui-text *ngIf=\"headerTemplate()\" class=\"title\" weight=\"2\">\n          <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n        </tgui-text>\n\n        <tgui-subheadline *ngIf=\"subheaderTemplate()\" class=\"subheader\" level=\"2\">\n          <ng-container *ngTemplateOutlet=\"subheaderTemplate()\"></ng-container>\n        </tgui-subheadline>\n\n        <ng-container *ngIf=\"descriptionTemplate()\">\n          <ng-container *ngIf=\"platformService.isIOS(); else baseDescription\">\n            <tgui-caption class=\"description\" level=\"1\">\n              <ng-container *ngTemplateOutlet=\"descriptionTemplate()\"></ng-container>\n            </tgui-caption>\n          </ng-container>\n          <ng-template #baseDescription>\n            <tgui-subheadline class=\"description\" level=\"2\">\n              <ng-container *ngTemplateOutlet=\"descriptionTemplate()\"></ng-container>\n            </tgui-subheadline>\n          </ng-template>\n        </ng-container>\n\n        <div *ngIf=\"buttonsTemplate()\" class=\"buttons\">\n          <ng-container *ngTemplateOutlet=\"buttonsTemplate()\"></ng-container>\n        </div>\n      </div>\n\n      <tgui-tappable *ngIf=\"onCloseIcon.observers?.length\" \n        (click)=\"onCloseIcon.emit($event)\" \n        class=\"close\"\n      >\n        <tgui-dynamic-icon [icon]=\"getCloseIconName()\"></tgui-dynamic-icon>\n      </tgui-tappable>\n    </section>\n  `,\n  styles: [`\n    :host {\n      display: block;\n    }\n\n    .wrapper {\n      overflow: hidden;\n      position: relative;\n      display: flex;\n      gap: 20px;\n      padding: 16px 20px;\n      background: var(--tgui--bg_color);\n    }\n\n    .wrapper--base:not(.wrapper--withBackground) {\n      box-shadow: var(--tgui--base--section--box_shadow);\n    }\n\n    .wrapper--ios {\n      border-radius: 16px;\n    }\n\n    .wrapper--withBackground {\n      padding: 20px;\n    }\n\n    .wrapper--withBackground .title {\n      color: var(--tgui--white);\n    }\n\n    .wrapper--withBackground .subheader {\n      opacity: .8;\n      color: var(--tgui--white);\n    }\n\n    .wrapper--inline {\n      background: var(--tgui--bg_color);\n    }\n\n    .wrapper--base.wrapper--inline {\n      margin: 8px 20px;\n      border-radius: 16px;\n      border: 1px solid var(--tgui--outline);\n      box-shadow: none;\n    }\n\n    .wrapper--ios.wrapper--inline {\n      margin: 8px 16px;\n      background: var(--tgui--quartenary_bg_color);\n    }\n\n    .background {\n      position: absolute;\n      inset: 0;\n    }\n\n    .middle {\n      flex: 1 1 0;\n      display: flex;\n      flex-direction: column;\n      gap: 2px;\n      z-index: var(--tgui--z-index--simple);\n    }\n\n    .subheader {\n      color: var(--tgui--subtitle_text_color);\n    }\n\n    .description {\n      color: var(--tgui--hint_color);\n    }\n\n    .buttons {\n      display: flex;\n      gap: 4px;\n      margin-top: 10px;\n    }\n\n    .close {\n      height: 28px;\n      border-radius: 50%;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BannerComponent {\n  // Event emitter for close icon clicks\n  @Output() onCloseIcon = new EventEmitter<MouseEvent>();\n\n  // Service injections\n  protected platformService = inject(PlatformService);\n  private elementRef = inject(ElementRef);\n  \n  /** Specifies the banner's layout style, which can affect its positioning and styling. */\n  public type = input<'section' | 'inline'>('section');\n  \n  /** The close icon to use. Can be overridden by input */\n  public closeIcon = input<string | undefined>(undefined);\n\n  /** Template displayed at the start of the banner, useful for icons */\n  public beforeTemplate = input<TemplateRef<any> | null>(null);\n\n  /** Template for callout text displayed above the header */\n  public calloutTemplate = input<TemplateRef<any> | null>(null);\n\n  /** Template for main header/title of the banner */\n  public headerTemplate = input<TemplateRef<any> | null>(null);\n\n  /** Template for text displayed below the header */\n  public subheaderTemplate = input<TemplateRef<any> | null>(null);\n\n  /** Template for descriptive text */\n  public descriptionTemplate = input<TemplateRef<any> | null>(null);\n\n  /** Template for background content */\n  public backgroundTemplate = input<TemplateRef<any> | null>(null);\n\n  /** Template for action buttons */\n  public buttonsTemplate = input<TemplateRef<any> | null>(null);\n\n  public isIOS = this.platformService.isIOS();\n\n  /**\n   * Determines which close icon to use based on platform and background\n   */\n  getCloseIconName(): string {\n    // If user provided a specific icon, use that\n    if (this.closeIcon()) {\n      return this.closeIcon()!;\n    }\n    \n    // Otherwise select icon based on platform and background\n    if (this.backgroundTemplate()) {\n      return 'tgui-icon28-close-ambient';\n    }\n    \n    return this.platformService.isIOS() ? 'tgui-icon24-cancel' : 'tgui-icon28-close';\n  }\n} ","import { \n  Component, \n  ChangeDetectionStrategy, \n  HostBinding,\n  input\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * `InlineButtons` acts as a container for `InlineButtonsItem` components.\n * This component provides a unified context for styling and interaction,\n * leveraging the `mode` to apply consistent styling across all child components.\n * It ensures visual consistency across different platforms and supports custom styling modes.\n */\n@Component({\n  selector: 'tgui-inline-buttons',\n  standalone: true,\n  imports: [CommonModule],\n  template: `<ng-content></ng-content>`,\n  styles: [\n    `\n      :host {\n        display: flex;\n        gap: 12px;\n      }\n\n      :host-context(.tgui-platform-ios) {\n        gap: 8px;\n      }\n    `\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'attr.data-refresh-platform': 'true'\n  }\n})\nexport class InlineButtonsComponent {\n  /** Dictates the styling mode for the inline buttons, affecting color and background. */\n  mode = input<'bezeled' | 'plain' | 'gray'>('plain');\n\n  @HostBinding('class.mode-bezeled') get isModeBezeled() { return this.mode() === 'bezeled'; }\n  @HostBinding('class.mode-plain') get isModePlain() { return this.mode() === 'plain'; }\n  @HostBinding('class.mode-gray') get isModeGray() { return this.mode() === 'gray'; }\n} ","import { \n  Component, \n  ChangeDetectionStrategy, \n  HostBinding,\n  ViewEncapsulation,\n  input\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TappableComponent } from '../../../utils/tappable/tappable.component';\nimport { CaptionComponent } from '../../../typography/caption/caption.component';\n\n/**\n * `InlineButtonsItem` is designed for use within an InlineButtons container but can also serve \n * as a standalone button if used by itself. It supports displaying optional text and can inherit \n * a styling mode from its parent InlineButtons context or utilize a locally defined mode.\n */\n@Component({\n  selector: 'tgui-inline-buttons-item',\n  standalone: true,\n  imports: [CommonModule, TappableComponent, CaptionComponent],\n  template: `\n    <tgui-tappable \n      [interactiveAnimation]=\"interactiveAnimation()\" \n      [disabled]=\"disabled()\"\n      class=\"inline-button-tappable\"\n    >\n        <ng-content></ng-content>\n        <tgui-caption *ngIf=\"text()\" class=\"text\" level=\"1\" weight=\"2\">{{ text() }}</tgui-caption>\n\n    </tgui-tappable>\n  `,\n  styles: [`\n    :host {\n      border-radius: 12px;\n      background: transparent;\n      color: var(--tgui--link_color);\n    }\n    \n    :host.mode-bezeled {\n      background: var(--tgui--secondary_fill);\n    }\n\n    :host.mode-gray {\n      color: var(--tgui--plain_foreground);\n      background: var(--tgui--plain_background);\n    }\n    \n    :host-context(.mode-bezeled):not(.mode-bezeled):not(.mode-gray) {\n      background: var(--tgui--secondary_fill);\n    }\n\n    :host-context(.mode-gray):not(.mode-bezeled):not(.mode-gray) {\n      color: var(--tgui--plain_foreground);\n      background: var(--tgui--plain_background);\n    }\n    \n    .inline-button-tappable {\n      flex: 1 0 0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex-direction: column;\n      gap: 3px;\n      min-height: 60px;\n      min-width: 64px;\n      padding: 0 12px;\n      max-inline-size: 100%;\n      border: none;\n      border-radius: 12px;\n      box-sizing: border-box;\n      user-select: none;\n    } \n\n    :host-context(.tgui-platform-ios) {\n      min-height: 64px;\n      min-width: 72px;\n      gap: 4px;\n    }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InlineButtonsItemComponent {\n  /** Text displayed inside the button. */\n  text = input<string | undefined>(undefined);\n  \n  /** Optional mode for styling the button, with 'plain' as the default. */\n  mode = input<'bezeled' | 'plain' | 'gray'>('plain');\n  \n  /** Disables the button */\n  disabled = input<boolean>(false);\n  \n  /** Type of interactive animation */\n  interactiveAnimation = input<'opacity' | 'background'>('background');\n\n  @HostBinding('class.mode-bezeled') get isModeBezeled() { return this.mode() === 'bezeled'; }\n  @HostBinding('class.mode-plain') get isModePlain() { return this.mode() === 'plain'; }\n  @HostBinding('class.mode-gray') get isModeGray() { return this.mode() === 'gray'; }\n} ","import { Component, ViewEncapsulation, ChangeDetectionStrategy, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * The AvatarBadge component displays a numeric badge on the avatar,\n * allowing to show the number of unread messages, notifications, etc.\n */\n@Component({\n  selector: 'tgui-avatar-badge',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div class=\"avatar-badge\">\n      <span class=\"badge-content\">{{ count() > 99 ? '99+' : count() }}</span>\n    </div>\n  `,\n  styles: [`\n    :host {\n      position: absolute;\n      top: 0;\n      right: 0;\n      z-index: 10;\n      pointer-events: none;\n    }\n    \n    .avatar-badge {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      min-width: 18px;\n      height: 18px;\n      padding: 0 5px;\n      border-radius: 10px;\n      background-color: var(--tgui--destructive_text_color);\n      color: white;\n      font-size: 11px;\n      font-weight: var(--tgui--font_weight--accent1);\n      box-sizing: border-box;\n      transform: translate(50%, -50%);\n      box-shadow: 0 0 0 2px var(--tgui--bg_color);\n      pointer-events: auto;\n    }\n    \n    .badge-content {\n      display: flex;\n      line-height: 1;\n    }\n    \n    /* Special styles for large and small badges */\n    :host-context(.size-xs) .avatar-badge,\n    :host-context(.size-s) .avatar-badge {\n      min-width: 14px;\n      height: 14px;\n      font-size: 10px;\n      padding: 0 4px;\n    }\n    \n    :host-context(.size-l) .avatar-badge,\n    :host-context(.size-xl) .avatar-badge {\n      min-width: 20px;\n      height: 20px;\n      font-size: 12px;\n      padding: 0 6px;\n    }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AvatarBadgeComponent {\n  /**\n   * Numeric value to display in the badge\n   */\n  count = input<number>(0);\n} ","import { Component, ViewEncapsulation, ChangeDetectionStrategy, inject, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PlatformService } from '../../../services/platform.service';\nimport { TappableComponent } from '../../utils/tappable';\nimport { SubheadlineComponent } from '../../typography/subheadline/subheadline.component';\n\n/**\n * Renders a compact element representing an input, attribute, or action. \n * Chips can include icons, text, or both, and are used to trigger actions, \n * input information, or represent a complex piece of information in a compact form.\n */\n@Component({\n  selector: 'tgui-chip',\n  standalone: true,\n  imports: [CommonModule, TappableComponent, SubheadlineComponent],\n  template: `\n    <tgui-tappable \n      interactiveAnimation=\"background\"\n      [class]=\"'tgui-chip tgui-chip--' + mode()\" \n      [ngClass]=\"className()\">\n      <div *ngIf=\"before()\" class=\"tgui-chip__before\">\n        <ng-container *ngTemplateOutlet=\"before()\"></ng-container>\n      </div>\n      <tgui-subheadline \n        class=\"tgui-chip__text\"\n        tag=\"span\"\n        [level]=\"platformService.isIOS() ? '2' : '1'\"\n        weight=\"2\">\n        <ng-content></ng-content>\n      </tgui-subheadline>\n      <div *ngIf=\"after()\" class=\"tgui-chip__after\">\n        <ng-container *ngTemplateOutlet=\"after()\"></ng-container>\n      </div>\n    </tgui-tappable>\n  `,\n  styles: [`\n    :host {\n      display: inline-block;\n    }\n\n    .tgui-chip {\n      user-select: none;\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      gap: 8px;\n      box-sizing: border-box;\n      padding: 8px 12px;\n      border-radius: 12px;\n    }\n\n    .tgui-chip--elevated {\n      background: var(--tgui--surface_primary);\n      box-shadow: 0 12px 24px 0 rgba(0, 0, 0, .05);\n    }\n\n    .tgui-chip--mono {\n      background: var(--tgui--plain_background);\n    }\n\n    .tgui-chip--outline {\n      border-radius: 12px;\n      box-shadow: 0 0 0 1px var(--tgui--outline);\n    }\n\n    .tgui-chip__text {\n      overflow: hidden;\n      text-overflow: ellipsis;\n      flex: 1 1 0;\n      color: var(--tgui--plain_foreground);\n    }\n\n    .tgui-chip__before {\n      margin-right: 2px;\n    }\n\n    .tgui-chip__after {\n      display: flex;\n      align-items: center;\n      margin-top: 1.5px;\n      color: var(--tgui--secondary_hint_color);\n    }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ChipComponent {\n  /** Defines the visual style of the chip, affecting its background, border, and shadow. */\n  mode = input<'elevated' | 'mono' | 'outline'>('elevated');\n  \n  /** Content or component to be placed before the main text, typically an icon or avatar. */\n  before = input<any>(null);\n  \n  /** Content or component to be placed after the main text, such as an icon indicating an action. */\n  after = input<any>(null);\n  \n  /** Custom class name */\n  className = input<string>('');\n  \n  protected platformService = inject(PlatformService);\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  inject,\n  input\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PlatformService } from '../../../../services/platform.service';\nimport { CaptionComponent, SubheadlineComponent } from '../../../typography';\n\n/**\n * FormInputTitle component that displays appropriate typography based on platform\n * Used internally by FormInput to display the header\n */\n@Component({\n  selector: 'tgui-form-input-title',\n  standalone: true,\n  imports: [CommonModule, CaptionComponent, SubheadlineComponent],\n  template: `\n    <ng-container *ngIf=\"platformService.isIOS(); else baseTitle\">\n      <tgui-caption [caps]=\"true\">\n        <ng-content></ng-content>\n      </tgui-caption>\n    </ng-container>\n    \n    <ng-template #baseTitle>\n      <tgui-subheadline level=\"2\" weight=\"2\">\n        <ng-content></ng-content>\n      </tgui-subheadline>\n    </ng-template>\n  `,\n  styles: [`\n    :host {\n      display: block;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormInputTitleComponent {\n  // Inject platform service\n  protected platformService = inject(PlatformService);\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input,\n  inject,\n  signal,\n  computed,\n  HostListener,\n  ElementRef,\n  TemplateRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PlatformService } from '../../../services/platform.service';\nimport { FormInputTitleComponent } from './components/form-input-title.component';\n\n/**\n * FormInput is a base wrapper component for form elements.\n * It provides common styling, layout, and behavior for form inputs.\n * \n * Features:\n * - Platform-specific styling (iOS vs base)\n * - Status handling (default, error, focused)\n * - Support for content before and after the input (as string or TemplateRef)\n * - Optional header display\n * - Focus and blur handling\n */\n@Component({\n  selector: 'tgui-form-input',\n  standalone: true,\n  imports: [CommonModule, FormInputTitleComponent],\n  template: `\n    <div \n      class=\"wrapper\"\n      [class.platform-base]=\"platformService.platform() === 'base'\"\n      [class.platform-ios]=\"platformService.platform() === 'ios'\"\n      [class.status-default]=\"effectiveStatus() === 'default'\"\n      [class.status-error]=\"effectiveStatus() === 'error'\"\n      [class.status-focused]=\"effectiveStatus() === 'focused'\"\n      [class.disabled]=\"disabled()\"\n      [attr.aria-disabled]=\"disabled()\"\n    >\n      <label\n        class=\"body\"\n        [class.disabled]=\"disabled()\"\n        [attr.aria-disabled]=\"disabled()\"\n      >\n        <!-- Before content -->\n        <div *ngIf=\"hasBefore()\" class=\"before\">\n          <!-- If it's a string -->\n          <ng-container *ngIf=\"isBeforeString(); else beforeTemplateContent\">\n            {{ inputBefore() }}\n          </ng-container>\n          \n          <!-- If it's a template -->\n          <ng-template #beforeTemplateContent>\n            <ng-container *ngIf=\"beforeTemplate()\" [ngTemplateOutlet]=\"beforeTemplate()!\"></ng-container>\n          </ng-template>\n          \n          <!-- Legacy support for content projection -->\n          <ng-content select=\"[tguiFormInputBefore]\"></ng-content>\n        </div>\n        \n        <ng-content></ng-content>\n        \n        <!-- After content -->\n        <div *ngIf=\"hasAfter()\" class=\"after\">\n          <!-- If it's a string -->\n          <ng-container *ngIf=\"isAfterString(); else afterTemplateContent\">\n            {{ inputAfter() }}\n          </ng-container>\n          \n          <!-- If it's a template -->\n          <ng-template #afterTemplateContent>\n            <ng-container *ngIf=\"afterTemplate()\" [ngTemplateOutlet]=\"afterTemplate()!\"></ng-container>\n          </ng-template>\n          \n          <!-- Legacy support for content projection -->\n          <ng-content select=\"[tguiFormInputAfter]\"></ng-content>\n        </div>\n      </label>\n      \n      <tgui-form-input-title \n        *ngIf=\"header() && platformService.platform() === 'base'\"\n        class=\"title\"\n      >\n        {{ header() }}\n      </tgui-form-input-title>\n    </div>\n  `,\n  styles: [`\n    :host {\n      display: block;\n    }\n\n    .wrapper {\n      position: relative;\n      width: 100%;\n    }\n\n    .wrapper.platform-base {\n      padding: 20px 22px 16px 22px;\n      background: var(--tgui--bg_color);\n    }\n\n    .wrapper.platform-base .title {\n      position: absolute;\n      overflow: hidden;\n      white-space: nowrap;\n      text-overflow: ellipsis;\n      top: 6px;\n      left: 32px;\n      max-width: calc(100% - 32px * 2 - 22px);\n      border-radius: 5px;\n      padding: 0 6px;\n      color: var(--tgui--secondary_hint_color);\n      background: var(--tgui--bg_color);\n    }\n\n    .wrapper.disabled {\n      pointer-events: none;\n    }\n\n    .wrapper.platform-ios.disabled {\n      opacity: .35;\n    }\n\n    .wrapper.platform-base.disabled::after {\n      content: '';\n      position: absolute;\n      inset: 0;\n      opacity: .5;\n      background: var(--tgui--bg_color);\n    }\n\n    .body {\n      padding: 12px 16px;\n      gap: 12px;\n      display: flex;\n      align-items: center;\n      box-sizing: border-box;\n      width: 100%;\n    }\n\n    .before,\n    .after {\n      display: flex;\n    }\n\n    .wrapper.platform-base .body {\n      border-radius: 14px;\n      box-shadow: 0 0 0 2px var(--tgui--outline);\n    }\n\n    .wrapper.platform-base.status-error .title {\n      color: var(--tgui--destructive_text_color);\n    }\n\n    .wrapper.platform-base.status-error .body {\n      box-shadow: 0 0 0 2px var(--tgui--destructive_text_color);\n    }\n\n    .wrapper.platform-base.status-focused .title {\n      color: var(--tgui--link_color);\n    }\n\n    .wrapper.platform-base.status-focused .body {\n      box-shadow: 0 0 0 2px var(--tgui--link_color);\n    }\n\n    .wrapper.platform-ios .body {\n      border-radius: 12px;\n      min-height: 48px;\n      background: var(--tgui--bg_color);\n    }\n\n    .wrapper.platform-ios.status-error .body {\n      box-shadow: 0 0 0 1.5px var(--tgui--destructive_text_color);\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FormInputComponent {\n  // Dependency injection\n  protected platformService = inject(PlatformService);\n  private elementRef = inject(ElementRef);\n\n  // Input signals\n  /** Defines the visual state of the form input */\n  status = input<'default' | 'error' | 'focused'>('default');\n  \n  /** Optional header content, displayed above the form input on base platform */\n  header = input<string | null>(null);\n  \n  /** Content to be displayed before the form input (can be string or TemplateRef) */\n  inputBefore = input<string | TemplateRef<any> | null>(null);\n  \n  /** Content to be displayed after the form input (can be string or TemplateRef) */\n  inputAfter = input<string | TemplateRef<any> | null>(null);\n  \n  /** Indicates if there's content to be displayed before the form input (legacy support) */\n  before = input<boolean>(false);\n  \n  /** Indicates if there's content to be displayed after the form input (legacy support) */\n  after = input<boolean>(false);\n  \n  /** Indicates if the form input is disabled */\n  disabled = input<boolean>(false);\n\n  // Internal state\n  private isFocused = signal(false);\n\n  // Computed values\n  /** Combines explicitly set status with internal focus state */\n  effectiveStatus = computed(() => {\n    // If status is explicitly set, use it\n    if (this.status() !== 'default') {\n      return this.status();\n    }\n    \n    // Otherwise derive from focus state\n    return this.isFocused() ? 'focused' : 'default';\n  });\n\n  /** Checks if there's content to display before the input */\n  hasBefore = computed(() => this.before() || this.inputBefore() !== null);\n\n  /** Checks if there's content to display after the input */\n  hasAfter = computed(() => this.after() || this.inputAfter() !== null);\n\n  /** Checks if the before content is a string */\n  isBeforeString = computed(() => typeof this.inputBefore() === 'string');\n\n  /** Checks if the after content is a string */\n  isAfterString = computed(() => typeof this.inputAfter() === 'string');\n  \n  /** Returns the before content as a TemplateRef if it is one */\n  beforeTemplate = computed(() => {\n    const content = this.inputBefore();\n    return content instanceof TemplateRef ? content : null;\n  });\n  \n  /** Returns the after content as a TemplateRef if it is one */\n  afterTemplate = computed(() => {\n    const content = this.inputAfter();\n    return content instanceof TemplateRef ? content : null;\n  });\n\n  // Focus event handlers\n  @HostListener('focusin')\n  onFocusIn(): void {\n    if (!this.disabled()) {\n      this.isFocused.set(true);\n    }\n  }\n\n  @HostListener('focusout')\n  onFocusOut(): void {\n    this.isFocused.set(false);\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input, \n  computed,\n  inject,\n  forwardRef,\n  ElementRef,\n  TemplateRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PlatformService } from '../../../services/platform.service';\nimport { FormInputComponent } from '../form-input/form-input.component';\nimport { SubheadlineComponent, TextComponent } from '../../typography';\n\n/**\n * Renders a text input field with enhanced styling and integration into a form structure.\n * It automatically adapts typography and layout based on the platform, ensuring a consistent user experience across devices.\n */\n@Component({\n  selector: 'tgui-input',\n  standalone: true,\n  imports: [CommonModule, FormInputComponent, SubheadlineComponent, TextComponent],\n  template: `\n    <tgui-form-input\n      [status]=\"status()\"\n      [header]=\"header()\"\n      [inputBefore]=\"before()\"\n      [inputAfter]=\"after()\"\n      [disabled]=\"disabled()\"\n    >\n      <input\n        class=\"input\"\n        [class.input-ios]=\"platformService.isIOS()\"\n        [class.input-base]=\"!platformService.isIOS()\"\n        [attr.type]=\"type()\"\n        [disabled]=\"disabled()\"\n        [attr.placeholder]=\"placeholder()\"\n        [attr.value]=\"value()\"\n        (input)=\"onInput($event)\"\n        (change)=\"onChange($event)\"\n      />\n    </tgui-form-input>\n  `,\n  styles: [`\n    :host {\n      display: block;\n    }\n\n    .input {\n      display: block;\n      width: 100%;\n      margin: 0;\n      border: 0;\n      outline: 0;\n      resize: none;\n      background: transparent;\n      box-sizing: border-box;\n      text-overflow: ellipsis;\n      color: var(--tgui--text_color);\n      font-family: var(--tgui--font-family);\n    }\n\n    .input-ios {\n      font-size: var(--tgui--text--font_size);\n      line-height: var(--tgui--text--line_height);\n      font-weight: var(--tgui--font_weight--accent3);\n    }\n\n    .input-base {\n      font-size: var(--tgui--subheadline1--font_size);\n      line-height: var(--tgui--subheadline1--line_height);\n      font-weight: var(--tgui--font_weight--accent3);\n    }\n\n    .input::-webkit-outer-spin-button,\n    .input::-webkit-inner-spin-button {\n      -webkit-appearance: none;\n    }\n\n    .input::placeholder {\n      color: var(--tgui--secondary_hint_color);\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InputComponent {\n  // Dependency injection\n  protected platformService = inject(PlatformService);\n  private elementRef = inject(ElementRef);\n\n  // Input signals\n  /** Input type (text, password, email, etc.) */\n  type = input<string>('text');\n  \n  /** Header text displayed above the input */\n  header = input<string | null>(null);\n  \n  /** Content to be displayed before the form input (can be string or TemplateRef) */\n  before = input<string | TemplateRef<any> | null>(null);\n  \n  /** Content to be displayed after the form input (can be string or TemplateRef) */\n  after = input<string | TemplateRef<any> | null>(null);\n  \n  /** Visual status of the input */\n  status = input<'default' | 'error' | 'focused'>('default');\n  \n  /** Whether the input is disabled */\n  disabled = input<boolean>(false);\n  \n  /** Placeholder text */\n  placeholder = input<string>('');\n  \n  /** Input value */\n  value = input<string>('');\n  \n  // Computed values\n  /** Combines wrapper classes based on platform */\n  wrapperClasses = computed(() => {\n    return {\n      'wrapper': true,\n      'wrapper--ios': this.platformService.isIOS(),\n    }\n  });\n\n  // Event handlers\n  /** Handles input events */\n  onInput(event: Event): void {\n    // Forward the input event\n    const nativeEvent = new Event('input', { bubbles: true });\n    this.elementRef.nativeElement.dispatchEvent(nativeEvent);\n  }\n\n  /** Handles change events */\n  onChange(event: Event): void {\n    // Forward the change event\n    const nativeEvent = new Event('change', { bubbles: true });\n    this.elementRef.nativeElement.dispatchEvent(nativeEvent);\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Icon component for checkbox in unchecked state\n */\n@Component({\n  selector: 'tgui-icon-checkbox',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <svg width=\"20\" height=\"20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" [attr.class]=\"className()\">\n      <path\n        d=\"M6.4 1h7.2c1.14 0 1.93 0 2.55.05.6.05.95.14 1.21.28a3 3 0 0 1 1.31 1.3c.14.27.23.62.28 1.22.05.62.05 1.41.05 2.55v7.2c0 1.14 0 1.93-.05 2.55-.05.6-.14.95-.28 1.21a3 3 0 0 1-1.3 1.31c-.27.14-.62.23-1.22.28-.62.05-1.41.05-2.55.05H6.4c-1.14 0-1.93 0-2.55-.05-.6-.05-.95-.14-1.21-.28a3 3 0 0 1-1.31-1.3 3.2 3.2 0 0 1-.28-1.22A34.7 34.7 0 0 1 1 13.6V6.4c0-1.14 0-1.93.05-2.55.05-.6.14-.95.28-1.21a3 3 0 0 1 1.3-1.31 3.2 3.2 0 0 1 1.22-.28C4.47 1 5.26 1 6.4 1Z\"\n        stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n    </svg>\n  `,\n  styles: [],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IconCheckboxComponent {\n  className = input<string | undefined>(undefined);\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Icon component for checkbox in checked state\n */\n@Component({\n  selector: 'tgui-icon-checkbox-checked',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <svg width=\"20\" height=\"20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" [attr.class]=\"className()\">\n      <path fillRule=\"evenodd\" clipRule=\"evenodd\"\n        d=\"M.48 2.87C0 3.88 0 5.2 0 7.8v4.4c0 2.61 0 3.92.48 4.93a5 5 0 0 0 2.4 2.4c1 .47 2.3.47 4.92.47h4.4c2.61 0 3.92 0 4.93-.48a5 5 0 0 0 2.4-2.4c.47-1 .47-2.3.47-4.92V7.8c0-2.61 0-3.92-.48-4.93a5 5 0 0 0-2.4-2.4C16.13 0 14.83 0 12.2 0H7.8C5.19 0 3.88 0 2.87.48a5 5 0 0 0-2.4 2.4ZM15.7 7.46a1 1 0 0 0-1.42-1.42L8 12.34l-2.3-2.3a1 1 0 1 0-1.4 1.42l3 3a1 1 0 0 0 1.4 0l7-7Z\"\n        fill=\"currentColor\" />\n      <path fillRule=\"evenodd\" clipRule=\"evenodd\"\n        d=\"M15.7 7.46a1 1 0 0 0-1.4-1.42L8 12.34l-2.3-2.3a1 1 0 1 0-1.4 1.42l3 3a1 1 0 0 0 1.4 0l7-7Z\" fill=\"#fff\" />\n    </svg>\n  `,\n  styles: [],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IconCheckboxCheckedComponent {\n  className = input<string | undefined>(undefined);\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Icon component for checkbox in indeterminate state\n */\n@Component({\n  selector: 'tgui-icon-checkbox-indeterminate',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <svg width=\"20\" height=\"20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" [attr.class]=\"className()\">\n      <path fillRule=\"evenodd\" clipRule=\"evenodd\"\n        d=\"M6.4 0h7.2c2.24 0 3.36 0 4.22.44a4 4 0 0 1 1.74 1.74c.44.86.44 1.98.44 4.22v7.2c0 2.24 0 3.36-.44 4.22a4 4 0 0 1-1.74 1.74c-.86.44-1.98.44-4.22.44H6.4c-2.24 0-3.36 0-4.22-.44a4 4 0 0 1-1.74-1.74C0 16.96 0 15.84 0 13.6V6.4c0-2.24 0-3.36.44-4.22A4 4 0 0 1 2.18.44C3.04 0 4.16 0 6.4 0ZM4 10a1 1 0 0 1 1-1h10a1 1 0 1 1 0 2H5a1 1 0 0 1-1-1Z\"\n        fill=\"currentColor\" />\n      <path d=\"M4 10a1 1 0 0 1 1-1h10a1 1 0 1 1 0 2H5a1 1 0 0 1-1-1Z\" fill=\"#fff\" />\n    </svg>\n  `,\n  styles: [],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IconCheckboxIndeterminateComponent {\n  className = input<string | undefined>(undefined);\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input, \n  signal,\n  computed,\n  inject,\n  ElementRef,\n  effect,\n  output,\n  forwardRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VisuallyHiddenDirective } from '../../../directives/visually-hidden.directive';\nimport { \n  IconCheckboxComponent, \n  IconCheckboxCheckedComponent,\n  IconCheckboxIndeterminateComponent \n} from './icons';\nimport { PlatformService } from '../../../services/platform.service';\n\n/**\n * Renders a checkbox input with custom styling and optional indeterminate state.\n * The component visually hides the actual input element for accessibility \n * while providing a custom styled appearance.\n */\n@Component({\n  selector: 'tgui-checkbox',\n  standalone: true,\n  imports: [\n    CommonModule, \n    VisuallyHiddenDirective, \n    IconCheckboxComponent, \n    IconCheckboxCheckedComponent,\n    IconCheckboxIndeterminateComponent\n  ],\n  template: `\n    <label\n      class=\"wrapper\"\n      [class.wrapper--disabled]=\"disabled()\"\n    >\n      <input\n        tguiVisuallyHidden\n        type=\"checkbox\"\n        class=\"input\"\n        [checked]=\"checked()\"\n        [disabled]=\"disabled()\"\n        [attr.name]=\"name()\"\n        [attr.value]=\"value()\"\n        (change)=\"onChange($event)\"\n      />\n      <tgui-icon-checkbox class=\"icon\" aria-hidden=\"true\" />\n      <div aria-hidden=\"true\" class=\"checkedIcon\">\n        <tgui-icon-checkbox-indeterminate *ngIf=\"indeterminate()\" />\n        <tgui-icon-checkbox-checked *ngIf=\"!indeterminate() && checked()\" />\n      </div>\n    </label>\n  `,\n  styles: [`\n    :host {\n      display: inline-block;\n    }\n\n    .wrapper {\n      cursor: pointer;\n      position: relative;\n    }\n\n    .wrapper--disabled {\n      cursor: default;\n      opacity: .3;\n    }\n\n    .icon {\n      display: block;\n      color: var(--tgui--outline);\n    }\n\n    .checkedIcon {\n      position: absolute;\n      top: 0;\n      opacity: 0;\n      color: var(--tgui--link_color);\n      transition: opacity .15s ease-out;\n    }\n\n    .input:checked ~ .checkedIcon {\n      opacity: 1;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CheckboxComponent {\n  // Service injection\n  private platformService = inject(PlatformService);\n  private elementRef = inject(ElementRef);\n\n  // Input parameters\n  /** Value of the name attribute for input */\n  name = input<string>('');\n  \n  /** Value of the value attribute for input */\n  value = input<string>('');\n  \n  /** Set checked state */\n  checked = input<boolean>(false);\n  \n  /** Set disabled state */\n  disabled = input<boolean>(false);\n  \n  /** Set indeterminate state */\n  indeterminate = input<boolean>(false);\n  \n  // Output events\n  /** Event when state changes */\n  change = output<Event>();\n  \n  // Methods\n  /** Change event handler */\n  onChange(event: Event): void {\n    if (!this.disabled()) {\n      // Останавливаем всплытие оригинального события чтобы избежать двойного вызова\n      event.stopPropagation();\n      \n      // Pass event outward\n      this.change.emit(event);\n    }\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input,\n  inject,\n  effect,\n  signal,\n  InputSignal,\n  computed,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PlatformService } from '../../../services/platform.service';\nimport { VisuallyHiddenDirective } from '../../../directives/visually-hidden.directive';\nimport { FormInputComponent } from '../form-input/form-input.component';\nimport { TextComponent } from '../../typography/text/text.component';\nimport { SubheadlineComponent } from '../../typography/subheadline/subheadline.component';\nimport { callMultiple } from '../../../utils/function';\n\n/**\n * Renders a color picker input within a form structure, displaying the selected color value.\n * It adapts the text style based on the platform and supports additional properties like header and status.\n */\n@Component({\n  selector: 'tgui-color-input',\n  standalone: true,\n  imports: [\n    CommonModule, \n    FormInputComponent, \n    TextComponent, \n    SubheadlineComponent,\n    VisuallyHiddenDirective\n  ],\n  template: `\n    <tgui-form-input\n      [header]=\"header()\"\n      [inputBefore]=\"before()\"\n      [inputAfter]=\"circleTemplate\"\n      [status]=\"status()\"\n      [class]=\"wrapperClasses()\"\n    >\n      <ng-container *ngIf=\"platformService.platform() === 'ios'; else baseTemplate\">\n        <tgui-text [caps]=\"true\" class=\"text\">{{ colorValue() }}</tgui-text>\n      </ng-container>\n      <ng-template #baseTemplate>\n        <tgui-subheadline [caps]=\"true\" class=\"text\">{{ colorValue() }}</tgui-subheadline>\n      </ng-template>\n    </tgui-form-input>\n\n    <ng-template #circleTemplate>\n      <div class=\"circle\">\n        <input\n          tguiVisuallyHidden\n          type=\"color\"\n          [value]=\"colorValue()\"\n          (input)=\"handleInput($event)\"\n          (change)=\"handleChange($event)\"\n          [disabled]=\"disabled()\"\n        />\n        <div class=\"circleColor\" [style.backgroundColor]=\"colorValue()\"></div>\n      </div>\n    </ng-template>\n  `,\n  styles: [`\n    :host {\n      display: block;\n    }\n\n    .wrapper {\n      display: flex;\n      gap: 10px;\n      min-height: 48px;\n      padding: 10px 12px 10px 16px;\n    }\n\n    .wrapper--ios {\n      padding: 10px 16px;\n      min-height: 50px;\n    }\n\n    .circle {\n      position: relative;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      width: 24px;\n      height: 24px;\n      border-radius: 50%;\n      background: conic-gradient(\n        from 0deg at 50% 50%,\n        #0C28FF 0deg,\n        #03FFFF 60deg,\n        #24D627 120deg,\n        #FDFF22 180deg,\n        #FF2227 240deg,\n        #FE2DF6 300deg,\n        #7122FF 360deg\n      );\n    }\n\n    .circleColor {\n      width: 16px;\n      height: 16px;\n      border-radius: 50%;\n    }\n\n    .circleColor::before,\n    .circleColor::after {\n      content: '';\n      position: absolute;\n      border-radius: inherit;\n    }\n\n    .circleColor::before {\n      inset: 2px;\n      background: var(--tgui--bg_color);\n    }\n\n    .circleColor::after {\n      inset: 4px;\n      background: inherit;\n    }\n\n    .text {\n      flex: 1 1 0;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ColorInputComponent {\n  // Dependency injection\n  protected platformService = inject(PlatformService);\n\n  // Platform shorthand\n  protected platform = computed(() => this.platformService.platform());\n\n  // Input signals\n  /** The header label for the color input */\n  header = input<string | null>(null);\n  \n  /** Content to be displayed before the color input */\n  before = input<any>(null);\n  \n  /** The status of the input - error, default or focused */\n  status = input<'error' | 'default' | 'focused'>('default');\n  \n  /** The current color value */\n  value = input<string>('#EFEFF4');\n  \n  /** The default color value */\n  defaultValue = input<string>('#EFEFF4');\n  \n  /** Whether the input is disabled */\n  disabled = input<boolean>(false);\n  \n  /** CSS class to apply to the component */\n  class = input<string>('');\n\n  /** Event handler for color change */\n  onChange = input<((event: Event) => void) | undefined>(undefined);\n\n  // Internal state\n  private internalValue = signal(this.value() || this.defaultValue());\n  // A separate signal to track temporary values during input\n  private temporaryValue = signal(this.value() || this.defaultValue());\n\n  // Watch for external value changes\n  constructor() {\n    effect(() => {\n      const newValue = this.value();\n      if (newValue) {\n        this.internalValue.set(newValue);\n      }\n    });\n  }\n\n  // Computed values\n  /** Current color value, combining input value or internal state */\n  protected colorValue = computed(() => this.temporaryValue());\n\n  /** Classes for the wrapper element */\n  protected wrapperClasses = computed(() => {\n    return {\n      'wrapper': true,\n      'wrapper--ios': this.platform() === 'ios',\n      [`${this.class()}`]: !!this.class()\n    };\n  });\n\n  /**\n   * Handle input event from the color picker\n   * This updates the UI immediately as the user selects colors\n   */\n  protected handleInput(event: Event): void {\n    const input = event.target as HTMLInputElement;\n    this.temporaryValue.set(input.value);\n  }\n\n  /**\n   * Handle change event from the color input\n   * This is triggered when the color picker is closed or Enter is pressed\n   */\n  protected handleChange(event: Event): void {\n    const input = event.target as HTMLInputElement;\n    this.internalValue.set(input.value);\n    this.temporaryValue.set(input.value);\n    \n    if (this.onChange()) {\n      this.onChange()?.(event);\n    }\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Icon component for radio button in unchecked state\n */\n@Component({\n  selector: 'tgui-icon-radio',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <svg width=\"20\" height=\"20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" [attr.class]=\"className()\">\n        <path fillRule=\"evenodd\" clipRule=\"evenodd\"\n        d=\"M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16Zm0 2a10 10 0 1 0 0-20 10 10 0 0 0 0 20Z\" fill=\"currentColor\" />\n    </svg>\n  `,\n  styles: [],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IconRadioComponent {\n  className = input<string | undefined>(undefined);\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Icon component for radio button in checked state\n */\n@Component({\n  selector: 'tgui-icon-radio-checked',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n  <svg width=\"20\" height=\"20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" [attr.class]=\"className()\">\n    <path fillRule=\"evenodd\" clipRule=\"evenodd\"\n      d=\"M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16Zm0 2a10 10 0 1 0 0-20 10 10 0 0 0 0 20Z\" fill=\"currentColor\" />\n    <path d=\"M15 10a5 5 0 1 1-10 0 5 5 0 0 1 10 0Z\" fill=\"currentColor\" />\n  </svg>\n  `,\n  styles: [],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IconRadioCheckedComponent {\n  className = input<string | undefined>(undefined);\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input, \n  output,\n  inject,\n  ElementRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VisuallyHiddenDirective } from '../../../directives/visually-hidden.directive';\nimport { \n  IconRadioComponent, \n  IconRadioCheckedComponent\n} from './icons';\nimport { PlatformService } from '../../../services/platform.service';\n\n/**\n * Renders a radio button input with custom styling.\n * The component visually hides the actual input element for accessibility \n * while providing a custom styled appearance.\n */\n@Component({\n  selector: 'tgui-radio',\n  standalone: true,\n  imports: [\n    CommonModule, \n    VisuallyHiddenDirective, \n    IconRadioComponent, \n    IconRadioCheckedComponent\n  ],\n  template: `\n    <label\n      class=\"wrapper\"\n      [class.wrapper--disabled]=\"disabled()\"\n    >\n      <input\n        tguiVisuallyHidden\n        type=\"radio\"\n        class=\"input\"\n        [checked]=\"checked()\"\n        [disabled]=\"disabled()\"\n        [attr.name]=\"name()\"\n        [attr.value]=\"value()\"\n        (change)=\"onChange($event)\"\n      />\n      <svg class='icon' width=\"20\" height=\"20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16Zm0 2a10 10 0 1 0 0-20 10 10 0 0 0 0 20Z\" fill=\"currentColor\"></path>\n      </svg>\n      <svg class='checkedIcon' width=\"20\" height=\"20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16Zm0 2a10 10 0 1 0 0-20 10 10 0 0 0 0 20Z\" fill=\"currentColor\"></path>\n        <path d=\"M15 10a5 5 0 1 1-10 0 5 5 0 0 1 10 0Z\" fill=\"currentColor\"></path></svg>\n    </label>\n  `,\n  styles: [`\n    :host {\n      display: inline-block;\n    }\n\n    .wrapper {\n      cursor: pointer;\n      position: relative;\n    }\n\n    .wrapper--disabled {\n      cursor: default;\n      opacity: .3;\n    }\n\n        .icon {\n        display: block;\n        color: var(--tgui--outline);\n        }\n\n        .checkedIcon {\n        position: absolute;\n        top: 0;\n\n        opacity: 0;\n        color: var(--tgui--link_color);\n        }\n\n        .icon,\n        .checkedIcon {\n        transition: opacity .15s ease-out;\n        }\n\n        .input:checked ~ .icon {\n        opacity: 0;\n        }\n\n        .input:checked ~ .checkedIcon {\n        opacity: 1;\n        }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RadioComponent {\n  // Service injections\n  private platformService = inject(PlatformService);\n  private elementRef = inject(ElementRef);\n\n  // Input parameters\n  /** Name attribute for input */\n  name = input<string>('');\n  \n  /** Value attribute for input */\n  value = input<string>('');\n  \n  /** Sets the checked state */\n  checked = input<boolean>(false);\n  \n  /** Sets the disabled state */\n  disabled = input<boolean>(false);\n  \n  // Output events\n  /** Event emitted on change */\n  change = output<Event>();\n  \n  // Methods\n  /** Change event handler */\n  onChange(event: Event): void {\n    if (!this.disabled()) {\n      // Останавливаем всплытие оригинального события чтобы избежать двойного вызова\n      event.stopPropagation();\n      \n      // Emit the event\n      this.change.emit(event);\n    }\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input, \n  output,\n  inject,\n  forwardRef,\n  ElementRef,\n  TemplateRef\n} from '@angular/core';\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\nimport { ButtonCellComponent } from '../../blocks/cell/components/button-cell/button-cell.component';\nimport { VisuallyHiddenDirective } from '../../../directives/visually-hidden.directive';\n\n/**\n * Renders a file input disguised as a button, enhancing the user interface and improving usability.\n * It leverages the `ButtonCell` component for consistent styling across the application.\n */\n@Component({\n  selector: 'tgui-file-input',\n  standalone: true,\n  imports: [\n    CommonModule,\n    NgTemplateOutlet,\n    ButtonCellComponent, \n    VisuallyHiddenDirective\n  ],\n  template: `\n    <div class=\"wrapper\">\n      <ng-content></ng-content>\n      <tgui-button-cell [beforeTemplate]=\"beforeTemplate()\">\n        <label class=\"file-label\">\n          <input \n            tguiVisuallyHidden \n            type=\"file\" \n            [attr.placeholder]=\"label()\" \n            [attr.accept]=\"accept()\"\n            [attr.multiple]=\"multiple() ? true : null\"\n            [attr.disabled]=\"disabled() ? true : null\"\n            (change)=\"handleChange($event)\"\n          />\n          {{ label() }}\n        </label>\n      </tgui-button-cell>\n    </div>\n  `,\n  styles: [`\n    :host {\n      display: block;\n    }\n    \n    .wrapper {\n      display: flex;\n      flex-direction: column;\n    }\n    \n    .file-label {\n      display: flex;\n      align-items: center;\n      width: 100%;\n      cursor: pointer;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FileInputComponent {\n  private elementRef = inject(ElementRef);\n\n  /** Text label for the file input, used as the button label */\n  label = input<string>('Attach file');\n  \n  /** File types that the input should accept */\n  accept = input<string | undefined>(undefined);\n  \n  /** Whether multiple files can be selected */\n  multiple = input<boolean>(false);\n  \n  /** Whether the input is disabled */\n  disabled = input<boolean>(false);\n\n  /** Template displayed before the main content */\n  beforeTemplate = input<TemplateRef<any> | null>(null);\n  \n  /** Emitted when files are selected */\n  change = output<Event>();\n  \n  /**\n   * Handles the change event when files are selected\n   */\n  handleChange(event: Event): void {\n    if (!this.disabled()) {\n      // Останавливаем всплытие оригинального события чтобы избежать двойного вызова\n      event.stopPropagation();\n      \n      this.change.emit(event);\n    }\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input,\n  inject,\n  HostBinding,\n  ContentChild,\n  ElementRef,\n  computed,\n  AfterContentInit,\n  signal,\n  effect\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TappableComponent } from '../../../../utils/tappable/tappable.component';\nimport { LargeTitleComponent, TitleComponent } from '../../../../typography';\nimport { PlatformService } from '../../../../../services/platform.service';\n\n/**\n * PinInputButton component for PIN code entry\n * Provides a button optimized for number entry in PIN inputs\n * Supports both content input property and ng-content projection\n */\n@Component({\n  selector: 'tgui-pin-input-button',\n  standalone: true,\n  imports: [CommonModule, TappableComponent, LargeTitleComponent, TitleComponent],\n  host: {\n    'attr.data-refresh-platform': 'true'\n  },\n  template: `\n    <tgui-tappable \n      class=\"wrapper\"\n    >\n      <ng-container *ngIf=\"content() == null || content() == undefined ;else inputContent\">\n        <ng-content></ng-content>\n      </ng-container>\n      <ng-template #inputContent>\n        <ng-container *ngIf=\"isIOSPlatform(); else baseContent\">\n          <tgui-large-title>{{ content() }}</tgui-large-title>\n        </ng-container>\n        <ng-template #baseContent>\n          <tgui-title>{{ content() }}</tgui-title>\n        </ng-template>\n      </ng-template>\n    </tgui-tappable>\n  `,\n  styles: [`\n    :host {\n      display: block;\n      width: var(--tgui--pin_input--button-width);\n      height: 56px;\n    }\n\n    .wrapper {\n      width: 100%;\n      height: 100%;\n      padding: 0;\n      border: none;\n      border-radius: 16px;\n      color: var(--tgui--text_color);\n      background: var(--tgui--tertiary_bg_color);\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n\n    :host(.pin-button-ios) {\n      width: 76px;\n      height: 76px;\n    }\n    \n    :host(.pin-button-ios) .wrapper {\n      border-radius: 50%;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PinInputButtonComponent {\n  // Input for button content as signal\n  content = input<string | number | null>(null);\n  \n  // Inject platform service\n  protected platformService = inject(PlatformService);\n  \n  // Platform signal to track iOS state\n  protected isIOSPlatform = signal<boolean>(false);\n  \n  constructor() {\n    // Initialize iOS state\n    this.isIOSPlatform.set(this.platformService.isIOS());\n    \n    // Track platform changes\n    effect(() => {\n      const platform = this.platformService.platform();\n      this.isIOSPlatform.set(platform === 'ios');\n    });\n  }\n  \n  // Host bindings for platform classes\n  @HostBinding('class.pin-button-ios') get isIOS() {\n    return this.isIOSPlatform();\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input, \n  computed,\n  inject,\n  ElementRef,\n  forwardRef,\n  signal,\n  effect\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VisuallyHiddenDirective } from '../../../../../directives/visually-hidden.directive';\nimport { PlatformService } from '../../../../../services/platform.service';\n\n/**\n * Individual cell component for PIN input.\n * Displays a field for a single digit of a PIN code.\n */\n@Component({\n  selector: 'tgui-pin-input-cell',\n  standalone: true,\n  imports: [CommonModule, VisuallyHiddenDirective],\n  host: {\n    'attr.data-refresh-platform': 'true'\n  },\n  template: `\n    <label\n      class=\"wrapper\"\n      [class.wrapper--ios]=\"isIOS()\"\n      [class.wrapper--typed]=\"isTyped()\"\n    >\n      <input\n        tguiVisuallyHidden\n        type=\"number\"\n        maxlength=\"1\"\n        class=\"input\"\n        [disabled]=\"disabled()\"\n        [attr.name]=\"name()\"\n      />\n      <div *ngIf=\"isTyped() && !isIOS()\" class=\"dot\"></div>\n    </label>\n  `,\n  styles: [`\n    .wrapper {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    \n      width: 40px;\n      height: 44px;\n    \n      border-radius: 12px;\n      border: 2.5px solid var(--tgui--divider);\n      background: var(--tgui--bg_color);\n    \n      transition: border-color .15s ease-out;\n      padding: 0;\n    }\n    \n    .wrapper--ios {\n      width: 13px;\n      height: 13px;\n    \n      opacity: .1;\n      border: none;\n      border-radius: 50%;\n      background: var(--tgui--link_color);\n    }\n    \n    .wrapper--ios.wrapper--typed {\n      opacity: 1;\n    }\n    \n    .wrapper:focus-within {\n      border-color: var(--tgui--link_color);\n    }\n    \n    .dot {\n      width: 8px;\n      height: 8px;\n    \n      border-radius: 50%;\n      background: var(--tgui--text_color);\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PinInputCellComponent {\n  // Service injections\n  private platformService = inject(PlatformService);\n  private elementRef = inject(ElementRef);\n\n  // Input parameters\n  /** Whether the cell has a value typed */\n  isTyped = input<boolean>(false);\n  \n  /** Name attribute for input */\n  name = input<string>('');\n  \n  /** Sets the disabled state */\n  disabled = input<boolean>(false);\n  \n  // Platform signal to track iOS state\n  protected isIOS = signal<boolean>(false);\n  \n  constructor() {\n    // Initialize iOS state\n    this.isIOS.set(this.platformService.isIOS());\n    \n    // Track platform changes\n    effect(() => {\n      const platform = this.platformService.platform();\n      this.isIOS.set(platform === 'ios');\n    });\n  }\n} ","/**\n * Clamps a value between a minimum and maximum value.\n * @param value The value to clamp\n * @param min The minimum value\n * @param max The maximum value\n * @returns The clamped value\n */\nexport function clamp(value: number, min: number, max: number): number {\n  return Math.max(min, Math.min(value, max));\n} ","import { Injectable, signal, computed } from '@angular/core';\nimport { clamp } from '../../../../utils/math';\n\nexport interface UsePinInputParams {\n  pinCount: number;\n  value?: number[];\n  onChange?: (value: number[]) => void;\n}\n\n/**\n * Keys for keyboard accessibility\n */\nexport enum Keys {\n  BACKSPACE = 'Backspace',\n  ARROW_LEFT = 'ArrowLeft',\n  ARROW_RIGHT = 'ArrowRight'\n}\n\nexport const AVAILABLE_PINS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, Keys.BACKSPACE];\n\n/**\n * Service that provides functionality for PIN input component\n * Similar to the React usePinInput hook\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class PinInputService {\n  // Constructor is empty as we don't need to inject anything\n  constructor() {}\n\n  /**\n   * Creates a PIN input controller with the specified parameters\n   * @param params The parameters for the PIN input\n   * @returns An object with methods and signals for controlling the PIN input\n   */\n  create(params: UsePinInputParams) {\n    const { pinCount, value: initialValue = [], onChange } = params;\n    \n    // Create signals\n    const inputRefs = signal<HTMLLabelElement[]>([]);\n    const value = signal<number[]>(initialValue);\n    \n    // Instead of using effect, use signal with a custom setter that triggers onChange\n    if (onChange) {\n      const originalUpdate = value.update;\n      \n      // Override the update method to call onChange after updating\n      value.update = function(updateFn: (value: number[]) => number[]) {\n        const result = originalUpdate.call(this, updateFn);\n        onChange(value());\n        return result;\n      };\n      \n      // Also override set method if needed\n      const originalSet = value.set;\n      value.set = function(newValue: number[]) {\n        const result = originalSet.call(this, newValue);\n        onChange(newValue);\n        return result;\n      };\n    }\n\n    /**\n     * Focuses the input at the specified index\n     * @param index The index to focus\n     */\n    const focusByIndex = (index: number) => {\n      requestAnimationFrame(() => {\n        const refs = inputRefs();\n        if (refs[index]) {\n          refs[index].focus();\n        }\n      });\n    };\n\n    /**\n     * Sets the value at the specified index\n     * @param index The index to set\n     * @param newValue The new value to set\n     */\n    const setValueByIndex = (index: number, newValue: number) => {\n      value.update((prev) => {\n        const nextValue = [...prev];\n        nextValue[index] = newValue;\n        return nextValue;\n      });\n    };\n\n    /**\n     * Removes the last value\n     * @param currentIndex The current index\n     */\n    const removeLastValue = (currentIndex: number) => {\n      value.update((prev) => prev.slice(0, -1));\n      focusByIndex(currentIndex - 1);\n    };\n\n    /**\n     * Handles a click on a value button\n     * @param enteredValue The value that was clicked\n     */\n    const handleClickValue = (enteredValue: number) => {\n      const lastIndex = clamp(value().length, 0, pinCount - 1);\n      setValueByIndex(lastIndex, enteredValue);\n      focusByIndex(lastIndex + 1);\n    };\n\n    /**\n     * Handles a click on the backspace button\n     */\n    const handleClickBackspace = () => {\n      removeLastValue(value().length - 1);\n    };\n\n    /**\n     * Handles a button press at a specific index\n     * @param index The index where the button was pressed\n     * @param button The button that was pressed\n     */\n    const handleButton = (index: number, button: string) => {\n      if (AVAILABLE_PINS.includes(Number(button))) {\n        setValueByIndex(index, Number(button));\n        focusByIndex(index + 1);\n      }\n\n      switch (button) {\n        case Keys.BACKSPACE:\n          removeLastValue(index);\n          break;\n\n        case Keys.ARROW_LEFT:\n          focusByIndex(index - 1);\n          break;\n\n        case Keys.ARROW_RIGHT:\n          focusByIndex(index + 1);\n          break;\n\n        default:\n          break;\n      }\n    };\n\n    /**\n     * Sets the input reference at the specified index\n     * @param index The index to set\n     * @param ref The reference to set\n     */\n    const setInputRefByIndex = (index: number, ref: HTMLLabelElement | null) => {\n      if (!ref) {\n        return;\n      }\n\n      inputRefs.update(refs => {\n        const newRefs = [...refs];\n        newRefs[index] = ref;\n        return newRefs;\n      });\n    };\n\n    return {\n      value,\n      setInputRefByIndex,\n      handleClickValue,\n      handleClickBackspace,\n      handleButton,\n    };\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input,\n  output,\n  inject,\n  ElementRef,\n  signal,\n  computed,\n  ViewChild,\n  effect\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HeadlineComponent } from '../../typography/headline/headline.component';\nimport { RootRendererComponent } from '../../utils/root-renderer/root-renderer.component';\nimport { PinInputCellComponent } from './components/pin-input-cell/pin-input-cell.component';\nimport { PinInputButtonComponent } from './components/pin-input-button/pin-input-button.component';\nimport { TguiIcon36Backspace } from '../../../icons/icon36/tgui-icon36-backspace';\nimport { AVAILABLE_PINS, Keys, PinInputService } from './hooks/use-pin-input';\nimport { createChunks } from '../../../utils/chunk';\nimport { PlatformService } from '../../../services/platform.service';\n\nexport const PIN_MIN_COUNT = 2;\n\n/**\n * Renders a set of input fields for entering pin codes with a virtual keypad for value entry and deletion.\n */\n@Component({\n  selector: 'tgui-pin-input',\n  standalone: true,\n  imports: [\n    CommonModule,\n    HeadlineComponent,\n    RootRendererComponent,\n    PinInputCellComponent,\n    PinInputButtonComponent,\n    TguiIcon36Backspace\n  ],\n  host: {\n    'attr.data-refresh-platform': 'true'\n  },\n  template: `\n    <tgui-root-renderer>\n      <section\n        class=\"wrapper\"\n        [class.wrapper--ios]=\"isIOS()\"\n      >\n        <!-- Debug information panel -->\n        <div *ngIf=\"debug()\" class=\"debug-panel\">\n          <div class=\"debug-row\">Platform: <strong>{{ platformService.platform() }}</strong></div>\n          <div class=\"debug-row\">iOS: <strong>{{ isIOS() }}</strong></div>\n          <div class=\"debug-row\">Platform changes: <strong>{{ platformChangeCount() }}</strong></div>\n        </div>\n        \n        <header class=\"header\">\n          <tgui-headline class=\"title\" weight=\"2\">{{ label() }}</tgui-headline>\n          <div class=\"cellsWrapper\">\n            <tgui-pin-input-cell\n              *ngFor=\"let item of cells(); let i = index; trackBy: trackByIndex\"\n              #cellRef\n              [isTyped]=\"i < value().length\"\n              [disabled]=\"false\"\n              [attr.tabindex]=\"-1\"\n              [attr.readonly]=\"true\"\n              [attr.value]=\"value()[i] || ''\"\n              [attr.autofocus]=\"i === 0 ? true : null\"\n              (keydown)=\"handleButton(i, $event.key)\"\n            ></tgui-pin-input-cell>\n          </div>\n        </header>\n        <div class=\"buttonWrapper\">\n          <div *ngFor=\"let row of buttonRows(); let rowIndex = index; trackBy: trackByRow\" class=\"row\">\n            <ng-container *ngFor=\"let element of row; let elIndex = index; trackBy: trackByElement\">\n              <tgui-pin-input-button \n                *ngIf=\"element !== Keys.BACKSPACE\"\n                (click)=\"handleClickValue(+element)\"\n                [content]=\"element\"\n              >\n              </tgui-pin-input-button>\n              <tgui-pin-input-button \n                *ngIf=\"element === Keys.BACKSPACE\"\n                (click)=\"handleClickBackspace()\"\n              >\n                <tgui-icon36-backspace class=\"backspaceIcon\"></tgui-icon36-backspace>\n              </tgui-pin-input-button>\n            </ng-container>\n          </div>\n        </div>\n      </section>\n    </tgui-root-renderer>\n  `,\n  styles: [`\n    .wrapper {\n      overflow: hidden;\n\n      position: fixed;\n      inset: 0;\n      padding: 32px 20px;\n\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex-direction: column;\n\n      box-sizing: border-box;\n      background: var(--tgui--bg_color);\n    }\n    \n    .header {\n      overflow: hidden;\n      white-space: nowrap;\n      text-overflow: ellipsis;\n\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex-direction: column;\n\n      max-inline-size: 100%;\n      flex: 1 1 0;\n    }\n    \n    .wrapper--ios .header {\n      flex: unset;\n    }\n    \n    .header,\n    .title {\n      overflow: hidden;\n      white-space: nowrap;\n      text-overflow: ellipsis;\n    }\n    \n    .title {\n      text-align: center;\n      max-inline-size: 100%;\n    }\n    \n    .cellsWrapper {\n      display: flex;\n      justify-content: center;\n      flex-wrap: wrap;\n\n      gap: 16px;\n      margin-top: 20px;\n    }\n    \n    .buttonWrapper {\n      --tgui--pin_input--buttons-gap: 12px;\n      --tgui--pin_input--button-width: 33.3%;\n\n      width: 100%;\n      display: flex;\n      flex-wrap: wrap;\n      flex-direction: column;\n      gap: var(--tgui--pin_input--buttons-gap);\n      margin-top: 52px;\n    }\n    \n    .wrapper--ios .buttonWrapper {\n      --tgui--pin_input--button-width: 76px;\n    }\n    \n    .row {\n      display: flex;\n      justify-content: center;\n      gap: var(--tgui--pin_input--buttons-gap);\n    }\n    \n    .row:last-child {\n      margin-left: calc(var(--tgui--pin_input--buttons-gap) * 2);\n      justify-content: flex-end;\n    }\n    \n    .wrapper--ios .row:last-child {\n      margin-left: calc(var(--tgui--pin_input--button-width) + var(--tgui--pin_input--buttons-gap));\n      justify-content: center;\n    }\n    \n    .backspaceIcon {\n      display: block;\n      margin: auto;\n      color: var(--tgui--link_color);\n    }\n    \n    /* Debug panel styles */\n    .debug-panel {\n      position: absolute;\n      top: 0;\n      left: 0;\n      right: 0;\n      background: rgba(0, 0, 0, 0.8);\n      color: white;\n      font-size: 12px;\n      padding: 8px;\n      z-index: 9999;\n      border-bottom: 1px solid rgba(255, 255, 255, 0.2);\n    }\n    \n    .debug-row {\n      margin-bottom: 4px;\n    }\n    \n    .debug-row:last-child {\n      margin-bottom: 0;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PinInputComponent {\n  // Inject necessary services\n  protected platformService = inject(PlatformService);\n  private pinInputService = inject(PinInputService);\n  private elementRef = inject(ElementRef);\n\n  // Input props\n  /** Text label displayed above the pin input cells. */\n  label = input<string>('Enter your pin');\n  \n  /** The number of pin input fields to display, with a minimum of 2. */\n  pinCount = input<number>(4);\n  \n  /** The initial pin values to populate the input fields with. */\n  initialValue = input<number[]>([]);\n  \n  /** Enable debug mode to show platform information */\n  debug = input<boolean>(false);\n  \n  // Output event\n  /** Callback function triggered when the pin values change. */\n  valueChange = output<number[]>();\n  \n  // ViewChild for the pin input cells\n  @ViewChild('cellRef') cellRef: ElementRef | undefined;\n  \n  // Reference to Keys enum for template\n  protected readonly Keys = Keys;\n  \n  // Debug counter for platform changes\n  protected platformChangeCount = signal(0);\n  \n  // Platform signal to track iOS state\n  protected isIOS = signal<boolean>(false);\n  \n  // Create a controller using the PinInputService\n  private normalizedPinCount = computed(() => {\n    return Math.max(PIN_MIN_COUNT, this.pinCount());\n  });\n  \n  private controller = computed(() => {\n    return this.pinInputService.create({\n      pinCount: this.normalizedPinCount(),\n      value: this.initialValue(),\n      onChange: (newValue) => this.valueChange.emit(newValue)\n    });\n  });\n  \n  // Constructor with platform change effect\n  constructor() {\n    // Initialize iOS state\n    this.isIOS.set(this.platformService.isIOS());\n    \n    // Track platform changes\n    effect(() => {\n      // Access platform to create dependency\n      const platform = this.platformService.platform();\n      \n      // Update iOS state\n      this.isIOS.set(platform === 'ios');\n      \n      // Update counter\n      this.platformChangeCount.update(count => count + 1);\n      \n    });\n  }\n  \n  // Expose needed controller methods and values\n  protected value = computed(() => this.controller().value());\n  \n  // Array for cells rendering\n  protected cells = computed(() => {\n    return new Array(this.normalizedPinCount()).fill(null);\n  });\n  \n  // Button rows\n  protected buttonRows = computed(() => {\n    return createChunks(AVAILABLE_PINS, 3);\n  });\n  \n  // Methods\n  protected trackByIndex(index: number): number {\n    return index;\n  }\n  \n  protected trackByRow(index: number, row: any[]): string {\n    return row.toString();\n  }\n  \n  protected trackByElement(index: number, element: any): any {\n    return element;\n  }\n  \n  protected handleClickValue(value: number): void {\n    this.controller().handleClickValue(value);\n  }\n  \n  protected handleClickBackspace(): void {\n    this.controller().handleClickBackspace();\n  }\n  \n  protected handleButton(index: number, key: string): void {\n    this.controller().handleButton(index, key);\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input, \n  signal,\n  computed,\n  inject,\n  ElementRef,\n  effect,\n  output,\n  model\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VisuallyHiddenDirective } from '../../../directives/visually-hidden.directive';\nimport { clamp } from '../../../utils/math';\n\nexport interface RatingProps {\n  /** The precision of the rating, determining the fraction of the star that can be selected. */\n  precision?: 0.1 | 0.2 | 0.25 | 0.5 | 1;\n  /** The maximum rating value, representing the number of icons displayed. */\n  max?: number;\n  /** The current value of the rating. */\n  value?: number;\n  /** Callback function invoked when the rating value changes. */\n  onChange?: (value: number) => void;\n}\n\nconst MINIMUM_PRECISION = 0.1;\n\n/**\n * Renders a customizable rating component, allowing users to provide a rating by selecting a value using stars.\n * Supports fractional ratings through precision control.\n * \n * @example\n * <tgui-rating\n *   [(ratingValue)]=\"userRating\"\n *   [precision]=\"0.5\"\n *   [max]=\"5\">\n * </tgui-rating>\n */\n@Component({\n  selector: 'tgui-rating',\n  standalone: true,\n  imports: [\n    CommonModule,\n    VisuallyHiddenDirective\n  ],\n  template: `\n    <div class=\"wrapper\" [attr.aria-label]=\"'Rating: ' + ratingValue()\">\n      <input tguiVisuallyHidden name=\"rating\" type=\"radio\" [value]=\"0\" (click)=\"onRatingChange(0)\" [checked]=\"ratingValue() === 0\" />\n      <ng-container *ngFor=\"let key of getKeys()\">\n        <label [class]=\"elementClass\" [attr.aria-label]=\"'Rate ' + (key + 1)\">\n          <svg *ngIf=\"getPickedElementWidth(key + 1) !== undefined\" \n               width=\"40\" \n               height=\"40\" \n               fill=\"none\" \n               xmlns=\"http://www.w3.org/2000/svg\" \n               [class]=\"elementPickedClass\" \n               [style.width.%]=\"getPickedElementWidth(key + 1)! * 100\"\n               aria-hidden=\"true\">\n            <path\n              d=\"M16.228 9.993c1.166-3.164 1.75-4.746 2.598-5.199a2.492 2.492 0 0 1 2.348 0c.849.453 1.432 2.035 2.598 5.199l.562 1.525c.337.914.506 1.372.796 1.715.257.303.58.54.945.694.413.173.895.194 1.86.235l1.608.07c3.338.143 5.006.215 5.694.89a2.56 2.56 0 0 1 .726 2.258c-.164.955-1.472 2.005-4.088 4.104l-1.262 1.011c-.756.607-1.134.91-1.367 1.296-.206.34-.33.725-.361 1.123-.036.45.094.92.353 1.86l.432 1.568c.896 3.253 1.345 4.88.921 5.75a2.518 2.518 0 0 1-1.9 1.395c-.949.137-2.34-.796-5.124-2.663l-1.341-.9c-.805-.54-1.207-.809-1.642-.914a2.488 2.488 0 0 0-1.168 0c-.435.105-.837.375-1.642.914l-1.341.9c-2.783 1.867-4.175 2.8-5.124 2.663a2.518 2.518 0 0 1-1.9-1.396c-.424-.87.025-2.496.921-5.749l.432-1.568c.26-.94.389-1.41.353-1.86a2.563 2.563 0 0 0-.361-1.123c-.233-.386-.611-.689-1.367-1.296l-1.262-1.011c-2.616-2.1-3.924-3.149-4.088-4.104a2.56 2.56 0 0 1 .726-2.258c.688-.675 2.356-.747 5.694-.89l1.608-.07c.965-.041 1.447-.062 1.86-.235.364-.153.688-.391.945-.694.29-.343.459-.8.796-1.715l.562-1.525Z\"\n              fill=\"currentColor\" opacity=\".8\" />\n          </svg>\n          <svg width=\"40\" \n               height=\"40\" \n               fill=\"none\" \n               xmlns=\"http://www.w3.org/2000/svg\"\n               aria-hidden=\"true\">\n            <path\n              d=\"M16.228 9.993c1.166-3.164 1.75-4.746 2.598-5.199a2.492 2.492 0 0 1 2.348 0c.849.453 1.432 2.035 2.598 5.199l.562 1.525c.337.914.506 1.372.796 1.715.257.303.58.54.945.694.413.173.895.194 1.86.235l1.608.07c3.338.143 5.006.215 5.694.89a2.56 2.56 0 0 1 .726 2.258c-.164.955-1.472 2.005-4.088 4.104l-1.262 1.011c-.756.607-1.134.91-1.367 1.296-.206.34-.33.725-.361 1.123-.036.45.094.92.353 1.86l.432 1.568c.896 3.253 1.345 4.88.921 5.75a2.518 2.518 0 0 1-1.9 1.395c-.949.137-2.34-.796-5.124-2.663l-1.341-.9c-.805-.54-1.207-.809-1.642-.914a2.488 2.488 0 0 0-1.168 0c-.435.105-.837.375-1.642.914l-1.341.9c-2.783 1.867-4.175 2.8-5.124 2.663a2.518 2.518 0 0 1-1.9-1.396c-.424-.87.025-2.496.921-5.749l.432-1.568c.26-.94.389-1.41.353-1.86a2.563 2.563 0 0 0-.361-1.123c-.233-.386-.611-.689-1.367-1.296l-1.262-1.011c-2.616-2.1-3.924-3.149-4.088-4.104a2.56 2.56 0 0 1 .726-2.258c.688-.675 2.356-.747 5.694-.89l1.608-.07c.965-.041 1.447-.062 1.86-.235.364-.153.688-.391.945-.694.29-.343.459-.8.796-1.715l.562-1.525Z\"\n              fill=\"currentColor\" opacity=\".8\" />\n          </svg>\n          <ng-container *ngFor=\"let element of getElementsWithPrecision()\">\n            <input\n              type=\"radio\"\n              [value]=\"(key + (element + 1) * normalizedPrecision()).toFixed(1)\"\n              name=\"rating\"\n              [style.width.%]=\"normalizedPrecision() * 100\"\n              [style.left.%]=\"element * normalizedPrecision() * 100\"\n              [class]=\"inputClass\"\n              [attr.aria-label]=\"'Rate ' + (key + 1) + ' stars'\"\n              [checked]=\"isInputChecked(key, element)\"\n              (click)=\"onRatingChange(+((key + (element + 1) * normalizedPrecision()).toFixed(1)))\"\n            />\n          </ng-container>\n        </label>\n      </ng-container>\n    </div>\n  `,\n  styles: [`\n    .wrapper {\n      position: relative;\n      display: flex;\n      gap: 4px;\n      padding: 12px;\n    }\n\n    .element {\n      position: relative;\n      color: var(--tgui--tertiary_bg_color);\n      cursor: pointer;\n    }\n\n    .element:focus-visible {\n      outline: 2px solid var(--tgui--link_color);\n    }\n\n    .element--picked {\n      position: absolute;\n      color: var(--tgui--link_color);\n      pointer-events: none;\n    }\n\n    .input {\n      position: absolute;\n      top: 0;\n      bottom: 0;\n      margin: 0;\n      opacity: 0;\n      cursor: pointer;\n      z-index: 1;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'class': 'tgui-rating',\n    'role': 'group',\n    'attr.aria-label': 'Rating selector'\n  }\n})\nexport class RatingComponent {\n  // Service injection\n  private elementRef = inject(ElementRef);\n\n  // Input parameters\n  /** The precision of the rating, determining the fraction of the star that can be selected. */\n  precision = input<0.1 | 0.2 | 0.25 | 0.5 | 1>(1);\n  \n  /** The maximum rating value, representing the number of icons displayed. */\n  max = input<number>(5);\n  \n  /** The current value of the rating using Angular's two-way binding with model(). */\n  ratingValue = model<number>(0);\n\n  // Computed properties\n  normalizedPrecision = computed(() => clamp(this.precision(), MINIMUM_PRECISION, 1));\n\n  // CSS Classes\n  elementClass = 'element';\n  elementPickedClass = 'element--picked';\n  inputClass = 'input';\n\n  constructor() {\n    // Constructor remains empty after removing debug code\n  }\n\n  // Helpers\n  getKeys(): number[] {\n    return Array.from(Array(this.max()).keys());\n  }\n\n  getElementsWithPrecision(): number[] {\n    const elementsWithPrecision = Math.floor(1 / this.normalizedPrecision());\n    return Array.from(Array(elementsWithPrecision).keys());\n  }\n\n  getPickedElementWidth(elementNumber: number): number | undefined {\n    // Use the model value\n    const currentValue = this.ratingValue();\n    \n    if (elementNumber <= currentValue) {\n      return 1;\n    }\n\n    const valueRange = elementNumber - currentValue;\n    if (valueRange > 0 && valueRange < 1) {\n      return 1 - valueRange;\n    }\n\n    return undefined;\n  }\n\n  // Check if specific input is selected\n  isInputChecked(key: number, element: number): boolean {\n    const value = +((key + (element + 1) * this.normalizedPrecision()).toFixed(1));\n    return Math.abs(this.ratingValue() - value) < 0.001;\n  }\n\n  // Rating change handler\n  onRatingChange(value: number): void {\n    this.ratingValue.set(value);\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input, \n  computed,\n  inject,\n  ElementRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PlatformService } from '../../../services/platform.service';\nimport { FormInputComponent } from '../form-input/form-input.component';\nimport { SubheadlineComponent, TextComponent } from '../../typography';\nimport { TguiIcon20ChevronDown } from '../../../icons/icon20/tgui-icon20-chevron-down';\n\n/**\n * Renders a custom styled select input within a `FormInput` container. This component is designed to integrate seamlessly\n * with the form input styles, providing a consistent look and enhanced features such as a custom dropdown arrow and support\n * for platform-specific typography. The `FormInput` wrapper facilitates the inclusion of headers and status messages.\n */\n@Component({\n  selector: 'tgui-select',\n  standalone: true,\n  imports: [\n    CommonModule, \n    FormInputComponent, \n    SubheadlineComponent, \n    TextComponent,\n    TguiIcon20ChevronDown\n  ],\n  template: `\n    <tgui-form-input\n      [status]=\"status()\"\n      [header]=\"header()\"\n      [inputBefore]=\"before()\"\n      [class]=\"wrapperClasses()\"\n    >\n      <div class=\"select-container\">\n        <select \n          class=\"select\"\n          [disabled]=\"disabled()\"\n        >\n          <ng-content></ng-content>\n        </select>\n        \n        <tgui-icon20-chevron-down aria-hidden=\"true\" class=\"chevron\"></tgui-icon20-chevron-down>\n      </div>\n    </tgui-form-input>\n  `,\n  styles: [`\n    :host {\n      display: block;\n    }\n\n    .select-container {\n      position: relative;\n      width: 100%;\n      height: 100%;\n      display: flex;\n      align-items: center;\n    }\n\n    .select {\n      appearance: none;\n      width: 100%;\n      height: 100%;\n      border: none;\n      color: var(--tgui--text_color);\n      outline: none;\n      border-radius: inherit;\n      background: inherit;\n      font-family: var(--tgui--font-family);\n    }\n\n    /* iOS styles */\n    :host-context(.tgui-platform-ios) .select {\n      font-size: var(--tgui--text--font_size);\n      line-height: var(--tgui--text--line_height);\n      font-weight: var(--tgui--font_weight--accent3);\n    }\n\n    /* Android/Web styles */\n    :host-context(.tgui-platform-base) .select {\n      font-size: var(--tgui--subheadline1--font_size);\n      line-height: var(--tgui--subheadline1--line_height);\n      font-weight: var(--tgui--font_weight--accent3);\n    }\n\n    .chevron {\n      position: absolute;\n      top: 50%;\n      right: 0;\n      transform: translateY(-50%);\n      color: var(--tgui--secondary_hint_color);\n      pointer-events: none;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SelectComponent {\n  // Dependency injection\n  protected platformService = inject(PlatformService);\n  private elementRef = inject(ElementRef);\n\n  // Input signals\n  /** Header text displayed above the input */\n  header = input<string | null>(null);\n  \n  /** Content to be displayed before the form input */\n  before = input<string | null>(null);\n  \n  /** Visual status of the input */\n  status = input<'default' | 'error' | 'focused'>('default');\n  \n  /** Whether the input is disabled */\n  disabled = input<boolean>(false);\n  \n  // Computed values\n  /** Combines wrapper classes based on platform */\n  wrapperClasses = computed(() => {\n    return {\n      'wrapper': true,\n      'wrapper--ios': this.platformService.isIOS(),\n    }\n  });\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input, \n  computed,\n  inject,\n  ElementRef,\n  forwardRef,\n  output\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VisuallyHiddenDirective } from '../../../directives/visually-hidden.directive';\nimport { PlatformService } from '../../../services/platform.service';\n\n/**\n * A custom switch component that mimics the behavior of a checkbox input but with enhanced styling.\n * It supports all the standard attributes of an HTML input element of type \"checkbox\".\n * The appearance of the switch can be customized to match either a base or iOS platform style.\n */\n@Component({\n  selector: 'tgui-switch',\n  standalone: true,\n  imports: [\n    CommonModule, \n    VisuallyHiddenDirective\n  ],\n  template: `\n    <label\n      class=\"wrapper\"\n      [class.wrapper--base]=\"platformService.platform() === 'base'\"\n      [class.wrapper--ios]=\"platformService.platform() === 'ios'\"\n      [class.wrapper--disabled]=\"disabled()\"\n    >\n      <input\n        tguiVisuallyHidden\n        type=\"checkbox\"\n        class=\"input\"\n        [checked]=\"checked()\"\n        [disabled]=\"disabled()\"\n        [attr.name]=\"name()\"\n        [attr.value]=\"value()\"\n        (change)=\"onChange($event)\"\n      />\n      <div aria-hidden=\"true\" class=\"control\"></div>\n      <ng-content></ng-content>\n    </label>\n  `,\n  styles: [`\n    .wrapper {\n      position: relative;\n      overflow: hidden;\n\n      display: flex;\n      align-items: center;\n      cursor: pointer;\n\n      width: 52px;\n      height: 32px;\n\n      border-radius: 16px;\n    }\n\n    .wrapper--disabled {\n      cursor: default;\n      opacity: .4;\n    }\n\n    .control::before {\n      position: absolute;\n      content: '';\n      inset: 0;\n\n      background: var(--tgui--secondary_bg_color);\n    }\n\n    .wrapper--base .control::before {\n      border-radius: 16px;\n      border: 3px solid var(--tgui--secondary_hint_color);\n    }\n\n    .control::after {\n      position: absolute;\n      content: '';\n\n      top: 50%;\n      transform: translateY(-50%);\n\n      border-radius: 50%;\n    }\n\n    .wrapper--base .control::after {\n      width: 16px;\n      height: 16px;\n\n      margin-left: 8px;\n      background: var(--tgui--secondary_hint_color);\n    }\n\n    .wrapper--ios .control::after {\n      width: 28px;\n      height: 28px;\n\n      margin-left: 2px;\n      box-shadow:\n          0 3px 1px 0 rgba(0, 0, 0, .06),\n          0 3px 8px 0 rgba(0, 0, 0, .15),\n          0 0 0 1px rgba(0, 0, 0, .04);\n      background: var(--tgui--white);\n    }\n\n    .input:checked + .control::before {\n      border-color: var(--tgui--link_color);\n      background-color: var(--tgui--link_color);\n    }\n\n    .wrapper--base .input:checked + .control::after {\n      width: 24px;\n      height: 24px;\n    }\n\n    .input:checked + .control::after {\n      transform: translateX(20px) translateY(-50%);\n    }\n\n    .wrapper--base .input:checked + .control::after {\n      background: var(--tgui--white);\n      transform: translateX(16px) translateY(-50%);\n    }\n\n    @media (prefers-reduced-motion: no-preference) {\n      .control::before {\n        transition: background-color, border-color 67ms linear;\n      }\n\n      .control::after {\n        /** Value from https://material-web.dev/components/switch/ */\n        transition: transform 300ms cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s\n      }\n\n      .wrapper--ios .control::before {\n        transition: background-color 0.2s ease;\n      }\n\n      .wrapper--ios .control::after {\n        transition: transform 0.2s cubic-bezier(0.36, -0.24, 0.26, 1.32);\n      }\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SwitchComponent {\n  // Services\n  public platformService = inject(PlatformService);\n  private elementRef = inject(ElementRef);\n\n  // Input parameters\n  /** The name attribute for the input */\n  name = input<string>('');\n  \n  /** The value attribute for the input */\n  value = input<string>('');\n  \n  /** Sets the checked state */\n  checked = input<boolean>(false);\n  \n  /** Sets the disabled state */\n  disabled = input<boolean>(false);\n  \n  // Output events\n  /** Event emitted when the switch state changes */\n  change = output<Event>();\n  \n  // Methods\n  /** Handler for change event */\n  onChange(event: Event): void {\n    if (!this.disabled()) {\n      // Останавливаем всплытие оригинального события чтобы избежать двойного вызова\n      event.stopPropagation();\n      \n      // Эмитируем событие от имени switch компонента\n      this.change.emit(event);\n    }\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input, \n  computed,\n  inject,\n  ElementRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PlatformService } from '../../../services/platform.service';\nimport { FormInputComponent } from '../form-input/form-input.component';\nimport { SubheadlineComponent, TextComponent } from '../../typography';\n\n/**\n * Wraps a standard HTML textarea element within a `FormInput` container, applying custom styles and functionality.\n * This component inherits the flexible design of the `FormInput`, allowing it to display a header and reflect different status styles.\n * The appearance and behavior of the textarea can be customized through various props, providing a seamless integration with forms.\n */\n@Component({\n  selector: 'tgui-textarea',\n  standalone: true,\n  imports: [CommonModule, FormInputComponent, SubheadlineComponent, TextComponent],\n  template: `\n    <tgui-form-input\n      [status]=\"status()\"\n      [header]=\"header()\"\n      [disabled]=\"disabled()\"\n      [class]=\"wrapperClasses()\"\n    >\n      <ng-container *ngIf=\"platformService.isIOS(); else baseTemplate\">\n        <tgui-text class=\"textarea\">\n          <textarea \n            [disabled]=\"disabled()\"\n            [attr.placeholder]=\"placeholder()\"\n            [value]=\"value()\"\n            (input)=\"onInput($event)\"\n            (change)=\"onChange($event)\"\n          ></textarea>\n        </tgui-text>\n      </ng-container>\n      \n      <ng-template #baseTemplate>\n        <tgui-subheadline class=\"textarea\">\n          <textarea \n            [disabled]=\"disabled()\"\n            [attr.placeholder]=\"placeholder()\"\n            [value]=\"value()\"\n            (input)=\"onInput($event)\"\n            (change)=\"onChange($event)\"\n          ></textarea>\n        </tgui-subheadline>\n      </ng-template>\n    </tgui-form-input>\n  `,\n  styles: [`\n    :host {\n      display: block;\n    }\n\n    .wrapper {\n      display: block;\n    }\n\n    .wrapper--ios {\n      display: block;\n    }\n\n    .textarea {\n      display: block;\n      width: 100%;\n      margin: 0;\n      border: 0;\n      outline: 0;\n      resize: none;\n      background: transparent;\n      color: var(--tgui--text_color);\n      font-family: var(--tgui--font-family);\n      min-height: 48px;\n    }\n\n    .textarea textarea {\n      display: block;\n      width: 100%;\n      height: 100%;\n      margin: 0;\n      padding: 0;\n      border: 0;\n      outline: 0;\n      resize: none;\n      background: transparent;\n      color: var(--tgui--text_color);\n      font-family: var(--tgui--font-family);\n      font: inherit;\n    }\n\n    .textarea textarea::placeholder {\n      color: var(--tgui--secondary_hint_color);\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TextareaComponent {\n  // Dependency injection\n  protected platformService = inject(PlatformService);\n  private elementRef = inject(ElementRef);\n\n  // Input signals\n  /** Header text displayed above the textarea */\n  header = input<string | null>(null);\n  \n  /** Visual status of the textarea */\n  status = input<'default' | 'error' | 'focused'>('default');\n  \n  /** Whether the textarea is disabled */\n  disabled = input<boolean>(false);\n  \n  /** Placeholder text */\n  placeholder = input<string>('');\n  \n  /** Textarea value */\n  value = input<string>('');\n\n  // Computed values\n  /** Combines wrapper classes based on platform */\n  wrapperClasses = computed(() => {\n    return {\n      'wrapper': true,\n      'wrapper--ios': this.platformService.isIOS()\n    }\n  });\n\n  // Event handlers\n  /** Handles input events */\n  onInput(event: Event): void {\n    // Forward the input event\n    const nativeEvent = new Event('input', { bubbles: true });\n    this.elementRef.nativeElement.dispatchEvent(nativeEvent);\n  }\n\n  /** Handles change events */\n  onChange(event: Event): void {\n    // Forward the change event\n    const nativeEvent = new Event('change', { bubbles: true });\n    this.elementRef.nativeElement.dispatchEvent(nativeEvent);\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input, \n  output,\n  inject,\n  ElementRef,\n  computed\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VisuallyHiddenDirective } from '../../../directives/visually-hidden.directive';\nimport { PlatformService } from '../../../services/platform.service';\n\n/**\n * Renders a custom multiselectable checkbox input, adapting its icons based on the current platform (iOS or others).\n * Supports all standard input checkbox properties.\n */\n@Component({\n  selector: 'tgui-multiselectable',\n  standalone: true,\n  imports: [CommonModule, VisuallyHiddenDirective],\n  template: `\n    <label\n      class=\"wrapper\"\n      [class.wrapper--disabled]=\"disabled()\"\n    >\n      <input\n        tguiVisuallyHidden\n        type=\"checkbox\"\n        class=\"input\"\n        [checked]=\"checked()\"\n        [disabled]=\"disabled()\"\n        [attr.name]=\"name()\"\n        [attr.value]=\"value()\"\n        (change)=\"onChange($event)\"\n      />\n      <!-- Unchecked icon based on platform -->\n      <svg *ngIf=\"!isIOS()\" width=\"20\" height=\"20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"icon\" aria-hidden=\"true\">\n        <circle cx=\"10\" cy=\"10\" r=\"9\" stroke=\"currentColor\" strokeWidth=\"2\" />\n      </svg>\n\n      <svg *ngIf=\"isIOS()\" width=\"24\" height=\"24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"icon\" aria-hidden=\"true\">\n        <circle cx=\"12\" cy=\"12\" r=\"11\" stroke=\"currentColor\" strokeWidth=\"2\" />\n      </svg>\n\n      <!-- Checked icon based on platform -->\n      <svg *ngIf=\"!isIOS()\" width=\"20\" height=\"20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"checkedIcon\" aria-hidden=\"true\">\n        <path fillRule=\"evenodd\" clipRule=\"evenodd\"\n          d=\"M10 20c5.523 0 10-4.477 10-10S15.523 0 10 0 0 4.477 0 10s4.477 10 10 10Z\" fill=\"currentColor\" />\n        <path fillRule=\"evenodd\" clipRule=\"evenodd\"\n          d=\"M15.375 6.56a1 1 0 0 1-.036 1.415l-6.31 6a1 1 0 0 1-1.416-.037l-2.84-3a1 1 0 0 1 1.453-1.375l2.15 2.272 5.585-5.31a1 1 0 0 1 1.414.036Z\"\n          fill=\"#fff\" />\n      </svg>\n\n      <svg *ngIf=\"isIOS()\" width=\"24\" height=\"24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"checkedIcon\" aria-hidden=\"true\">\n        <path fillRule=\"evenodd\" clipRule=\"evenodd\"\n          d=\"M12 24a12 12 0 1 0 0-24 12 12 0 0 0 0 24Zm4.78-17.1a1 1 0 0 1 .32 1.38l-5.63 9a1 1 0 0 1-1.62.1l-3.37-4.12a1 1 0 1 1 1.54-1.27l2.5 3.05 4.88-7.82a1 1 0 0 1 1.38-.32Z\"\n          fill=\"currentColor\" />\n      </svg>\n    </label>\n  `,\n  styles: [`\n\n    .wrapper {\n      position: relative;\n      cursor: pointer;\n    }\n    \n    .wrapper--disabled {\n      cursor: default;\n      opacity: .25;\n    }\n    \n    .icon {\n        display: block;\n        color: var(--tgui--outline);\n    }\n\n    .checkedIcon {\n        position: absolute;\n        top: 0;\n        opacity: 0;\n        color: var(--tgui--link_color);\n    }\n\n    .icon,\n    .checkedIcon {\n        transition: opacity .15s ease-out;\n    }\n\n    .input:checked ~ .icon {\n        opacity: 0;\n    }\n\n    .input:checked ~ .checkedIcon {\n        opacity: 1;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MultiselectableComponent {\n  // Service injection\n  private platformService = inject(PlatformService);\n  private elementRef = inject(ElementRef);\n\n  // Input parameters\n  /** Name attribute value for input */\n  name = input<string>('');\n  \n  /** Value attribute value for input */\n  value = input<string>('');\n  \n  /** Set checked state */\n  checked = input<boolean>(false);\n  \n  /** Set disabled state */\n  disabled = input<boolean>(false);\n  \n  // Output events\n  /** Event when state changes */\n  change = output<Event>();\n  \n  // Helper methods\n  /** Checks if current platform is iOS */\n  isIOS = computed(() => this.platformService.isIOS());\n\n  /** Change event handler */\n  onChange(event: Event): void {\n    if (!this.disabled()) {\n      // Останавливаем всплытие оригинального события чтобы избежать двойного вызова\n      event.stopPropagation();\n      \n      this.change.emit(event);\n    }\n  }\n} ","import { ChipComponent } from './chip/chip.component';\nimport { FormInputComponent } from './form-input/form-input.component';\nimport { FormInputTitleComponent } from './form-input/components/form-input-title.component';\nimport { InputComponent } from './input/input.component';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { ColorInputComponent } from './color-input/color-input.component';\nimport { RadioComponent } from './radio/radio.component';\nimport { FileInputComponent } from './file-input/file-input.component';\nimport { PinInputButtonComponent } from './pin-input/components/pin-input-button/pin-input-button.component';\nimport { PinInputCellComponent } from './pin-input/components/pin-input-cell/pin-input-cell.component';\nimport { PinInputService } from './pin-input/hooks/use-pin-input';\nimport { PinInputComponent } from './pin-input/pin-input.component';\nimport { RatingComponent } from './rating/rating.component';\nimport { SelectComponent } from './select/select.component';\nimport { SwitchComponent } from './switch/switch.component';\nimport { TextareaComponent } from './textarea/textarea.component';\n\nexport { \n  ChipComponent,\n  FormInputComponent,\n  FormInputTitleComponent,\n  InputComponent,\n  CheckboxComponent,\n  ColorInputComponent,\n  RadioComponent,\n  FileInputComponent,\n  PinInputButtonComponent,\n  PinInputCellComponent,\n  PinInputService,\n  PinInputComponent,\n  RatingComponent,\n  SelectComponent,\n  SwitchComponent,\n  TextareaComponent,\n};\n\nexport * from './multiselectable';\nexport * from './pin-input';\nexport * from './rating';\nexport * from './select';\nexport * from './switch';\n// Temporarily commented out due to linter errors\n// export * from './textarea';\n","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy, \n  input, \n  computed, \n  HostBinding,\n  inject,\n  ElementRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PlatformService } from '../../../services/platform.service';\n\n/**\n * This component provides a flexible way to create a layout that is fixed to either the top or bottom of its parent container.\n * It's useful for creating headers, footers, or any element that should remain in view regardless of the scrolling content.\n */\n@Component({\n  selector: 'tgui-fixed-layout',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <ng-content></ng-content>\n  `,\n  styles: [`\n    :host {\n      position: fixed;\n      left: 0;\n      right: 0;\n      display: block;\n    }\n\n    :host.vertical-top {\n      top: 0;\n    }\n\n    :host.vertical-bottom {\n      padding-bottom: var(--tgui--safe_area_inset_bottom);\n      bottom: 0;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'attr.data-refresh-platform': 'true'\n  }\n})\nexport class FixedLayoutComponent {\n\n  // Inputs\n  vertical = input<'top' | 'bottom'>('bottom');\n\n  // Host bindings for vertical position\n  @HostBinding('class.vertical-top')\n  get isTopPosition(): boolean {\n    return this.vertical() === 'top';\n  }\n\n  @HostBinding('class.vertical-bottom')\n  get isBottomPosition(): boolean {\n    return this.vertical() === 'bottom';\n  }\n\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy, \n  input, \n  HostBinding,\n  inject,\n  ContentChild,\n  HostListener,\n  signal,\n  WritableSignal\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PlatformService } from '../../../services/platform.service';\nimport { TappableComponent } from '../../utils/tappable/tappable.component';\nimport { CaptionComponent } from '../../typography/caption/caption.component';\n\n/**\n * Represents an individual tab within a `Tabbar`.\n * Each `TabbarItem` typically contains an icon and optional text.\n * When selected, the tab exhibits different visual styles to indicate its active state.\n *\n * The component adapts its styling based on the platform, providing a consistent look and feel across different devices.\n */\n@Component({\n  selector: 'tgui-tabbar-item',\n  standalone: true,\n  imports: [CommonModule, TappableComponent, CaptionComponent],\n  template: `\n    <tgui-tappable interactiveAnimation=\"opacity\">\n      <div *ngIf=\"hasIcon\" class=\"icon\">\n        <ng-content></ng-content>\n      </div>\n      <tgui-caption \n        *ngIf=\"text()\" \n        class=\"text\"\n        [weight]=\"'2'\"\n        [level]=\"platformService.isIOS() ? '2' : '1'\"\n      >\n        {{ text() }}\n      </tgui-caption>\n    </tgui-tappable>\n  `,\n  styles: [`\n    :host {\n      display: flex;\n      flex: 1 0 0;\n      max-inline-size: 100%;\n      min-inline-size: 0;\n    }\n\n    tgui-tappable {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex-direction: column;\n      gap: 6px;\n      width: 100%;\n      padding: 12px 16px 16px;\n      color: var(--tgui--secondary_hint_color);\n    }\n\n    :host-context(.tgui-platform-ios) tgui-tappable {\n      padding: 8px 12px 4px;\n      gap: 4px;\n    }\n\n    :host.selected tgui-tappable {\n      color: var(--tgui--link_color);\n    }\n\n    .icon {\n      display: flex;\n      justify-content: center;\n      min-width: 64px;\n      padding: 2px 10px;\n      border-radius: 35px;\n    }\n\n    :host:not(.platform-ios).selected .icon {\n      background: var(--tgui--secondary_fill);\n    }\n\n    :host-context(.tgui-platform-ios) .icon {\n      padding: 0;\n    }\n\n    .text {\n      white-space: nowrap;\n      max-inline-size: 100%;\n      overflow: hidden;\n      text-overflow: ellipsis;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'attr.data-refresh-platform': 'true'\n  }\n})\nexport class TabbarItemComponent {\n  // Inject services\n  protected platformService = inject(PlatformService);\n\n  // Inputs\n  text = input<string>('');\n  selected = signal<boolean>(false);\n\n  // Tab index, set by parent component\n  tabIndex = -1;\n  \n  // Callback for tab selection, called on click\n  onSelect: () => void = () => {};\n\n  // Platform-specific class binding\n  @HostBinding('class.platform-ios')\n  get isIOS(): boolean {\n    return this.platformService.isIOS();\n  }\n\n  // Selected state class binding\n  @HostBinding('class.selected')\n  get isSelected(): boolean {\n    return this.selected();\n  }\n\n  // Click event handler\n  @HostListener('click')\n  onClick(): void {\n    this.onSelect();\n  }\n\n  // Content projection check\n  @ContentChild('icon') iconContent: any;\n  \n  get hasIcon(): boolean {\n    return !!this.iconContent || true; // Default to true to match React behavior\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  ContentChildren,\n  QueryList,\n  AfterContentInit,\n  input,\n  output,\n  signal,\n  effect,\n  inject\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FixedLayoutComponent } from '../fixed-layout/fixed-layout.component';\nimport { TabbarItemComponent } from './tabbar-item.component';\n\n/**\n * Serves as a container for `TabbarItem` components, rendering a navigational tab bar.\n * Utilizes a `FixedLayout` to ensure the tab bar remains positioned at a specific area within a view,\n * typically at the bottom of the screen, making it ideal for mobile or web application navigation menus.\n *\n * The component adapts its styling based on the platform, providing a consistent look and feel across different devices.\n */\n@Component({\n  selector: 'tgui-tabbar',\n  standalone: true,\n  imports: [CommonModule, FixedLayoutComponent],\n  template: `\n    <tgui-fixed-layout vertical=\"bottom\">\n      <div class=\"tabbar-container\">\n        <ng-content></ng-content>\n      </div>\n    </tgui-fixed-layout>\n  `,\n  styles: [`\n    :host {\n      display: block;\n    }\n\n    .tabbar-container {\n      display: flex;\n      justify-items: stretch;\n      box-shadow: 0 -1px 0 var(--tgui--divider);\n      background: var(--tgui--surface_primary);\n      padding: 0 16px;\n    }\n\n    :host-context(.tgui-platform-ios) .tabbar-container {\n      padding: 0;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'attr.data-refresh-platform': 'true'\n  }\n})\nexport class TabbarComponent implements AfterContentInit {\n  /** Index of the selected tab */\n  selectedIndex = input<number>(0);\n  \n  /** Event emitted when selected tab changes */\n  selectedIndexChange = output<number>();\n  \n  /** Internal signal for tracking active tab */\n  private activeTabIndex = signal<number>(0);\n  \n  /** All tab items */\n  @ContentChildren(TabbarItemComponent) tabbarItems!: QueryList<TabbarItemComponent>;\n  \n  constructor() {\n    // Synchronize external selectedIndex with internal activeTabIndex\n    effect(() => {\n      this.activeTabIndex.set(this.selectedIndex());\n      this.updateSelectedState();\n    });\n  }\n  \n  ngAfterContentInit(): void {\n    // Initialize selected element\n    this.updateSelectedState();\n    \n    // Subscribe to tabbarItems changes to update selected tab\n    this.tabbarItems.changes.subscribe(() => {\n      this.updateSelectedState();\n    });\n  }\n  \n  /**\n   * Handles tab selection event\n   * @param index Index of selected tab\n   */\n  selectTab(index: number): void {\n    if (index !== this.activeTabIndex()) {\n      this.activeTabIndex.set(index);\n      this.selectedIndexChange.emit(index);\n      this.updateSelectedState();\n    }\n  }\n  \n  /**\n   * Updates \"selected\" state for all child elements\n   */\n  private updateSelectedState(): void {\n    if (!this.tabbarItems) return;\n    \n    const activeIndex = this.activeTabIndex();\n    this.tabbarItems.forEach((item, index) => {\n      // Set selected state through signal\n      item.selected.set(index === activeIndex);\n      // Set index for tab\n      item.tabIndex = index;\n      // Set callback for click tracking\n      item.onSelect = () => this.selectTab(index);\n    });\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input,\n  HostBinding,\n  ElementRef,\n  inject,\n  TemplateRef,\n  ContentChild,\n  computed\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { SubheadlineComponent } from '../../typography/subheadline/subheadline.component';\n\n/**\n * A component that represents a single item within a breadcrumb navigation.\n * It can be used standalone or as part of a BreadCrumbs collection.\n */\n@Component({\n  selector: 'tgui-breadcrumbs-item',\n  standalone: true,\n  imports: [CommonModule, RouterModule, SubheadlineComponent],\n  template: `\n    <!-- Content template -->\n    <ng-template #content>\n      <tgui-subheadline level=\"2\" weight=\"2\">\n        <ng-content></ng-content>\n      </tgui-subheadline>\n    </ng-template>\n    \n    <!-- Non-clickable item -->\n    <ng-container *ngIf=\"!isLink()\">\n      <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n    </ng-container>\n    \n    <!-- External link (href) -->\n    <a *ngIf=\"isExternalLink()\" [href]=\"href()\" [target]=\"target()\">\n      <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n    </a>\n    \n    <!-- Internal link (routerLink) -->\n    <a *ngIf=\"isInternalLink()\" [routerLink]=\"routerLink()\">\n      <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n    </a>\n  `,\n  styles: [`\n    :host {\n      cursor: pointer;\n      padding: 8px 10px;\n      border-radius: 8px;\n      display: block;\n      text-decoration: none;\n      transition: opacity .15s ease-out;\n      color: var(--tgui--hint_color);\n    }\n\n    a {\n      text-decoration: none;\n      color: inherit;\n      display: block;\n    }\n\n    :host:active {\n      opacity: .5;\n    }\n\n    @media (hover: hover) and (pointer: fine) {\n      :host:hover {\n        background: var(--tgui--tertiary_bg_color);\n      }\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BreadcrumbsItemComponent {\n  /**\n   * URL for the breadcrumb item\n   * @deprecated Use href or routerLink instead\n   */\n  url = input<string | undefined>(undefined);\n\n  /**\n   * External URL for the breadcrumb item (href attribute)\n   */\n  href = input<string | undefined>(undefined);\n  \n  /**\n   * Target attribute for external links\n   */\n  target = input<string | undefined>('_self');\n  \n  /**\n   * URL for internal navigation (routerLink)\n   */\n  routerLink = input<string | any[] | undefined>(undefined);\n\n  /**\n   * Computed property to determine if the item is a link (either external or internal)\n   */\n  isLink = computed(() => {\n    return this.isExternalLink() || this.isInternalLink() || !!this.url();\n  });\n\n  /**\n   * Check if this item is an external link (has href)\n   */\n  isExternalLink = computed(() => {\n    return !!this.href() && !this.routerLink();\n  });\n\n  /**\n   * Check if this item is an internal link (has routerLink)\n   */\n  isInternalLink = computed(() => {\n    return !!this.routerLink() || (!!this.url() && !this.href());\n  });\n\n  /**\n   * Reference to the element template\n   */\n  @ContentChild(TemplateRef) templateRef!: TemplateRef<any>;\n\n  /** Element reference */\n  private elementRef = inject(ElementRef);\n\n  /**\n   * Allows the host element to be an HTML anchor tag for navigation purposes\n   */\n  @HostBinding('attr.role') get role(): string | null {\n    const isA = this.elementRef.nativeElement.tagName === 'A';\n    const isLink = this.isLink();\n    \n    return (isA || isLink) ? 'button' : null;\n  }\n}","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../../../../icons/icon-base.component';\nimport { TguiSvgPropsDirective } from '../../../../icons/directives';\n\n/**\n * Dot icon used in breadcrumb navigation as a separator\n */\n@Component({\n  selector: 'tgui-breadcrumbs-dot-icon',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"21\" \n      height=\"20\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <circle cx=\"10.5\" cy=\"10\" r=\"2\" fill=\"currentColor\" />\n    </svg>\n  `,\n    styles: [`\n        :host {\n          display: flex;\n          align-items: center;\n          line-height: 0;\n        }\n      `]\n})\nexport class BreadcrumbsDotIconComponent extends TguiIconBase {\n} ","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TguiIconBase } from '../../../../icons/icon-base.component';\nimport { TguiSvgPropsDirective } from '../../../../icons/directives';\n\n/**\n * Slash icon used in breadcrumb navigation as a separator\n */\n@Component({\n  selector: 'tgui-breadcrumbs-slash-icon',\n  standalone: true,\n  imports: [CommonModule, TguiSvgPropsDirective],\n  template: `\n    <svg \n      width=\"20\" \n      height=\"20\" \n      viewBox=\"0 0 20 20\" \n      fill=\"none\" \n      xmlns=\"http://www.w3.org/2000/svg\"\n      tguiSvgProps\n      [props]=\"props()\"\n    >\n      <path \n        d=\"M13 5L8 15\" \n        stroke=\"currentColor\" \n        strokeWidth=\"2\" \n        strokeLinecap=\"round\" \n      />\n    </svg>\n  `,\n    styles: [`\n        :host {\n          display: flex;\n          align-items: center;\n          line-height: 0;\n        }\n      `]\n})\nexport class BreadcrumbsSlashIconComponent extends TguiIconBase {\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy, \n  input\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BreadcrumbsItemComponent } from './breadcrumbs-item.component';\nimport { BreadcrumbsDotIconComponent } from './icons/dot-icon.component';\nimport { BreadcrumbsSlashIconComponent } from './icons/slash-icon.component';\nimport { TguiIcon16Chevron } from '../../../icons/icon16/tgui-icon16-chevron';\n\n/**\n * Interface for a breadcrumb item\n */\nexport interface BreadcrumbItem {\n  /**\n   * Display text for the breadcrumb item\n   */\n  label: string;\n  \n  /**\n   * Optional URL for external links (href attribute)\n   */\n  href?: string;\n  \n  /**\n   * Optional target attribute for external links\n   */\n  target?: string;\n  \n  /**\n   * Optional URL for internal navigation (routerLink)\n   */\n  routerLink?: string | any[];\n}\n\n/**\n * Type of divider to use between breadcrumb items.\n */\nexport type BreadcrumbsDividerType = 'dot' | 'slash' | 'chevron';\n\n/**\n * The Breadcrumbs component displays a navigation trail for users to follow back to the starting or entry point.\n * It supports customizable dividers to fit different design needs.\n * \n * Usage:\n * ```html\n * <tgui-breadcrumbs\n *   [items]=\"[\n *     { label: 'Home', url: '/' },\n *     { label: 'Catalog', url: '/catalog' },\n *     { label: 'Product' }\n *   ]\"\n *   divider=\"slash\"\n * ></tgui-breadcrumbs>\n * ```\n */\n@Component({\n  selector: 'tgui-breadcrumbs',\n  standalone: true,\n  imports: [\n    CommonModule, \n    BreadcrumbsItemComponent, \n    BreadcrumbsDotIconComponent,\n    BreadcrumbsSlashIconComponent,\n    TguiIcon16Chevron\n  ],\n  template: `\n    <div class=\"tgui-breadcrumbs-wrapper\">\n        @for (item of items(); track $index) {\n        <!-- Breadcrumb item -->\n        <ng-container *ngIf=\"$index > 0\">\n          <!-- Divider -->\n          <div class=\"tgui-breadcrumbs-divider\">\n            <tgui-breadcrumbs-dot-icon *ngIf=\"divider() === 'dot'\"></tgui-breadcrumbs-dot-icon>\n            <tgui-breadcrumbs-slash-icon *ngIf=\"divider() === 'slash'\"></tgui-breadcrumbs-slash-icon>\n            <tgui-icon16-chevron style=\"stroke-width: 2; display: flex; align-items: center; justify-content: center;\" class=\"tgui-breadcrumbs-chevron\" *ngIf=\"divider() === 'chevron'\"></tgui-icon16-chevron>\n          </div>\n        </ng-container>\n        \n        <!-- Render item through breadcrumbs-item component -->\n        <tgui-breadcrumbs-item \n          [href]=\"item.href\" \n          [routerLink]=\"item.routerLink\"\n          [target]=\"item.target\"\n        >{{ item.label }}</tgui-breadcrumbs-item>\n        }\n    </div>\n  `,\n  styles: [`\n    .tgui-breadcrumbs-wrapper {\n      display: flex;\n      align-items: center;\n      flex-wrap: wrap;\n      gap: 4px;\n    }\n\n    .tgui-breadcrumbs-divider {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      width: 24px;\n      height: 20px;\n      margin: 0 -6px;\n      color: var(--tgui--divider);\n    }\n\n    .tgui-breadcrumbs-chevron {\n      color: var(--tgui--link_color);\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BreadcrumbsComponent {\n  /**\n   * Array of breadcrumb items to display\n   */\n  items = input<BreadcrumbItem[]>([]);\n\n  /**\n   * Type of divider to use between breadcrumb items.\n   */\n  divider = input<BreadcrumbsDividerType>('dot');\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  inject,\n  input,\n  HostBinding,\n  Output,\n  EventEmitter,\n  signal,\n  computed,\n  effect\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TappableComponent } from '../../utils/tappable/tappable.component';\nimport { TextComponent } from '../../typography/text/text.component';\nimport { PlatformService } from '../../../services/platform.service';\n\n/**\n * TabsItem component represents an individual tab within a TabsList.\n * It can be interactively selected to display associated content.\n */\n@Component({\n  selector: 'tgui-tabs-item',\n  standalone: true,\n  imports: [CommonModule, TappableComponent, TextComponent],\n  template: `\n    <tgui-tappable \n      role=\"tab\"\n      [attr.aria-selected]=\"isSelectedValue()\"\n      (click)=\"onClick()\"\n    >\n      <tgui-text [weight]=\"isIOS && isSelectedValue() ? '1' : '2'\" class=\"tab-text\">\n        <ng-content></ng-content>\n      </tgui-text>\n    </tgui-tappable>\n  `,\n  styles: [`\n    :host {\n      overflow: hidden;\n      white-space: nowrap;\n      text-overflow: ellipsis;\n      flex: 1 0 0;\n      max-inline-size: 100%;\n      height: 44px;\n      border: none;\n      border-radius: inherit;\n      background: transparent;\n      transition: color 125ms;\n      color: var(--tgui--secondary_hint_color);\n      min-width: 0; /* Important for text-overflow to work in flex containers */\n    }\n\n    :host.selected {\n      color: var(--tgui--link_color);\n    }\n\n    tgui-tappable {\n      width: 100%;\n      height: 100%;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      overflow: hidden; /* For content clipping */\n    }\n    \n    .tab-text {\n      overflow: hidden;\n      white-space: nowrap;\n      text-overflow: ellipsis;\n      max-width: 100%;\n      text-align: center;\n      display: block;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'attr.data-refresh-platform': 'true'\n  }\n})\nexport class TabsItemComponent {\n  /** External parameter for tab selection */\n  selected = input<boolean>(false);\n  \n  /** Internal signal for managing selection state */\n  private _isSelected = signal<boolean>(false);\n  \n  /** Computed value considering both sources (internal has priority) */\n  isSelectedValue = computed(() => this._isSelected() || this.selected());\n  \n  /** Event that fires when tab is clicked */\n  @Output() select = new EventEmitter<void>();\n  \n  /** Getting platform information */\n  private platformService = inject(PlatformService);\n  \n  constructor() {\n    // Synchronize internal signal with external when external changes\n    effect(() => {\n      this._isSelected.set(this.selected());\n    });\n  }\n  \n  /** Check if platform is iOS */\n  get isIOS(): boolean {\n    return this.platformService.isIOS();\n  }\n  \n  /** Bind selected class to host */\n  @HostBinding('class.selected')\n  get isSelected(): boolean {\n    return this.isSelectedValue();\n  }\n  \n  /** Tab click handler */\n  onClick(): void {\n    this.select.emit();\n  }\n  \n  /**\n   * Public method to set tab selection value\n   * from parent component\n   */\n  setSelected(value: boolean): void {\n    this._isSelected.set(value);\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  ContentChildren,\n  QueryList,\n  AfterContentInit,\n  input,\n  output,\n  signal,\n  effect,\n  ElementRef,\n  OnDestroy\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TabsItemComponent } from './tabs-item.component';\nimport { Subscription } from 'rxjs';\n\n/**\n * The TabsList component renders a list of tabs, typically used for navigating between different views\n * or filtering content. It visually indicates the currently active tab and supports custom styling.\n */\n@Component({\n  selector: 'tgui-tabs-list',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div class=\"tabs-container\" role=\"tablist\">\n      <div \n        *ngIf=\"hasSelectedTab()\"\n        aria-hidden=\"true\"\n        class=\"slider\"\n        [style.width.%]=\"100 / tabsCount()\"\n        [style.transform]=\"getSliderTransform()\"\n      ></div>\n      <ng-content></ng-content>\n    </div>\n  `,\n  styles: [`\n    :host {\n      display: block;\n      width: 100%;\n      overflow: hidden; /* Clip content if it overflows */\n    }\n\n    .tabs-container {\n      overflow: hidden;\n      position: relative;\n      display: flex;\n      align-items: center;\n      align-content: stretch;\n      width: 100%;\n      height: 100%;\n      /* Remove gap as it can interfere with compression */\n      /* Use flex container for even space distribution */\n    }\n\n    /* Ensure TabsItem child elements are evenly distributed */\n    ::ng-deep .tabs-container > tgui-tabs-item {\n      flex: 1 1 0;\n      min-width: 0; /* Important for flex element compression */\n      margin: 0 6px; /* Add horizontal margins instead of gap */\n    }\n\n    /* Remove margin from first and last elements for alignment */\n    ::ng-deep .tabs-container > tgui-tabs-item:first-child {\n      margin-left: 0;\n    }\n\n    ::ng-deep .tabs-container > tgui-tabs-item:last-child {\n      margin-right: 0;\n    }\n\n    .slider {\n      position: absolute;\n      left: 0;\n      bottom: 0;\n      right: 0;\n      height: 3px;\n      transition: transform 125ms;\n      border-radius: 4px 4px 1px 1px;\n      background: var(--tgui--button_color);\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TabsListComponent implements AfterContentInit, OnDestroy {\n  /** Index of selected tab */\n  selectedIndex = input<number>(0);\n  \n  /** Event for selected tab change */\n  selectedIndexChange = output<number>();\n  \n  /** Number of tabs */\n  tabsCount = signal<number>(0);\n  \n  /** Check if there is a selected tab */\n  hasSelectedTab = signal<boolean>(false);\n  \n  /** Current selected index (internal) */\n  private activeTabIndex = signal<number>(0);\n  \n  /** Get all TabsItem child elements */\n  @ContentChildren(TabsItemComponent) tabItems!: QueryList<TabsItemComponent>;\n  \n  /** Subscriptions to tab events */\n  private subscriptions: Subscription[] = [];\n  \n  constructor() {\n    effect(() => {\n      this.activeTabIndex.update(() => this.selectedIndex());\n      this.updateSelectedState();\n    });\n  }\n  \n  ngAfterContentInit(): void {\n    // Initialize tabs\n    this.updateTabsCount();\n    this.updateSelectedState();\n    \n    // Track changes in tab composition\n    this.tabItems.changes.subscribe(() => {\n      this.updateTabsCount();\n      this.updateSelectedState();\n    });\n  }\n  \n  ngOnDestroy(): void {\n    // Clean up subscriptions on component destruction\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n  }\n  \n  /** Gets transformation for slider */\n  getSliderTransform(): string {\n    return `translateX(${100 * this.activeTabIndex()}%)`;\n  }\n  \n  /** Updates number of tabs */\n  private updateTabsCount(): void {\n    if (this.tabItems) {\n      this.tabsCount.update(val => this.tabItems.length);\n    }\n  }\n  \n  /** Selects tab by index */\n  selectTab(index: number): void {\n    if (index !== this.activeTabIndex()) {\n      this.activeTabIndex.update(() => index);\n      this.selectedIndexChange.emit(index);\n      this.updateSelectedState();\n    }\n  }\n  \n  /** Updates selected tabs state */\n  private updateSelectedState(): void {\n    if (!this.tabItems) return;\n    \n    const activeIndex = this.activeTabIndex();\n    this.hasSelectedTab.update(() => activeIndex > -1 && activeIndex < this.tabItems.length);\n    \n    // Clear previous subscriptions\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n    this.subscriptions = [];\n    \n    this.tabItems.forEach((item, index) => {\n      // Update selected property in each tab through public method\n      const isSelected = index === activeIndex;\n      item.setSelected(isSelected);\n      \n      // Subscribe to selection event\n      const subscription = item.select.subscribe(() => {\n        this.selectTab(index);\n      });\n      \n      this.subscriptions.push(subscription);\n    });\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  inject,\n  input,\n  HostBinding,\n  Output,\n  EventEmitter,\n  signal,\n  computed,\n  effect\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TappableComponent } from '../../utils/tappable/tappable.component';\nimport { TextComponent } from '../../typography/text/text.component';\nimport { PlatformService } from '../../../services/platform.service';\nimport { CaptionComponent } from \"../../typography/caption/caption.component\";\n\n/**\n * SegmentedControlItem component represents an individual item within a SegmentedControl.\n * It can be interactively selected to display associated content.\n */\n@Component({\n  selector: 'tgui-segmented-control-item',\n  standalone: true,\n  imports: [CommonModule, TappableComponent, CaptionComponent],\n  template: `\n    <tgui-tappable \n      role=\"tab\"\n      [attr.aria-selected]=\"isSelectedValue()\"\n      (click)=\"onClick()\"\n      class=\"wrapper\"\n      [class.ios-tappable]=\"isIOS\"\n    >\n      <tgui-caption [weight]=\"isSelectedValue() ? '2' : '3'\">  \n        <ng-content></ng-content>\n      </tgui-caption>\n    </tgui-tappable>\n  `,\n  styles: [`\n    :host {\n      overflow: hidden;\n      white-space: nowrap;\n      text-overflow: ellipsis;\n      flex: 1 1 0;\n      max-inline-size: 100%;\n      height: 100%;\n      border: none;\n      border-radius: inherit;\n      background: transparent;\n      z-index: var(--tgui--z-index--simple);\n      color: var(--tgui--text_color);\n      display: flex;\n    }\n\n    .wrapper {\n      width: 100%;\n      height: 100%;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      overflow: hidden;\n      white-space: nowrap;\n      text-overflow: ellipsis;\n      padding: 10px 24px;\n      border: none;\n      border-radius: inherit;\n      background: transparent;\n      z-index: var(--tgui--z-index--simple);\n      color: var(--tgui--text_color);\n    }\n    \n    .wrapper.ios-tappable {\n      padding: 6px 24px;\n    }\n\n    ::ng-deep tgui-caption {\n      text-align: center;\n      width: 100%;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'attr.data-refresh-platform': 'true'\n  }\n})\nexport class SegmentedControlItemComponent {\n  /** External parameter to mark item as selected */\n  selected = input<boolean>(false);\n  \n  /** Internal signal to manage selection state */\n  private _isSelected = signal<boolean>(false);\n  \n  /** Computed value that considers both sources (internal has priority) */\n  isSelectedValue = computed(() => this._isSelected() || this.selected());\n  \n  /** Event triggered when the item is clicked */\n  @Output() select = new EventEmitter<void>();\n  \n  /** Platform service to check platform type */\n  private platformService = inject(PlatformService);\n  \n  constructor() {\n    // Synchronize internal signal with external when external changes\n    effect(() => {\n      this._isSelected.set(this.selected());\n    });\n  }\n  \n  /** Check if platform is iOS */\n  get isIOS(): boolean {\n    return this.platformService.isIOS();\n  }\n  \n  /** Bind selected class to host */\n  @HostBinding('class.selected')\n  get isSelected(): boolean {\n    return this.isSelectedValue();\n  }\n  \n  /** Handle click on the item */\n  onClick(): void {\n    this.select.emit();\n  }\n  \n  /**\n   * Public method to set the selection state\n   * from the parent component\n   */\n  setSelected(value: boolean): void {\n    this._isSelected.set(value);\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  ContentChildren,\n  QueryList,\n  AfterContentInit,\n  input,\n  output,\n  signal,\n  effect,\n  OnDestroy,\n  inject\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SegmentedControlItemComponent } from './segmented-control-item.component';\nimport { Subscription } from 'rxjs';\nimport { PlatformService } from '../../../services/platform.service';\n\n/**\n * The SegmentedControl component renders a set of options as a segmented control,\n * commonly used for toggling between views or filtering content.\n * It is designed to adapt its appearance based on the platform,\n * offering a native look and feel.\n */\n@Component({\n  selector: 'tgui-segmented-control',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div \n      role=\"tablist\"\n      class=\"segmented-container\"\n      [class.ios-platform]=\"isIOS\"\n    >\n      <div class=\"segmented-body\">\n        <div \n          *ngIf=\"hasSelectedTab()\"\n          aria-hidden=\"true\"\n          class=\"slider\"\n          [class.ios-platform]=\"isIOS\"\n          [style.width.%]=\"100 / tabsCount()\"\n          [style.transform]=\"getSliderTransform()\"\n        ></div>\n        <ng-content></ng-content>\n      </div>\n    </div>\n  `,\n  styles: [`\n    :host {\n      display: block;\n      width: 100%;\n      overflow: hidden;\n    }\n\n    .segmented-container {\n      overflow: hidden;\n      width: 100%;\n      height: 100%;\n      padding: 2px;\n      box-sizing: border-box;\n      border-radius: 44px;\n      background: var(--tgui--tertiary_bg_color);\n    }\n\n    .segmented-container.ios-platform {\n      border-radius: 9px;\n      background: var(--tgui--tertiary_bg_color);\n    }\n\n    .segmented-body {\n      position: relative;\n      display: flex;\n      align-items: center;\n      align-content: stretch;\n      width: 100%;\n      height: 100%;\n      box-sizing: border-box;\n      border-radius: inherit;\n    }\n\n    .slider {\n      position: absolute;\n      inset: 0;\n      transition: transform 150ms;\n      border-radius: 40px;\n      z-index: var(--tgui--z-index--simple);\n      box-sizing: border-box;\n      background: var(--tgui--segmented_control_active_bg);\n    }\n\n    .slider.ios-platform {\n      border: var(--tgui--border--width) solid rgba(0, 0, 0, .04);\n      border-radius: inherit;\n      box-shadow:\n          0 3px 1px 0 rgba(0, 0, 0, .04),\n          0 3px 8px 0 rgba(0, 0, 0, .12);\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SegmentedControlComponent implements AfterContentInit, OnDestroy {\n  /** Selected tab index */\n  selectedIndex = input<number>(0);\n  \n  /** Selected index change event */\n  selectedIndexChange = output<number>();\n  \n  /** Number of tabs */\n  tabsCount = signal<number>(0);\n  \n  /** Check if there is a selected tab */\n  hasSelectedTab = signal<boolean>(false);\n  \n  /** Current active tab index (internal) */\n  private activeTabIndex = signal<number>(0);\n  \n  /** Get all child SegmentedControlItem elements */\n  @ContentChildren(SegmentedControlItemComponent) tabItems!: QueryList<SegmentedControlItemComponent>;\n  \n  /** Subscriptions to tab events */\n  private subscriptions: Subscription[] = [];\n  \n  /** Platform service to check platform type */\n  private platformService = inject(PlatformService);\n  \n  constructor() {\n    effect(() => {\n      this.activeTabIndex.update(() => this.selectedIndex());\n      this.updateSelectedState();\n    });\n  }\n  \n  /** Check if platform is iOS */\n  get isIOS(): boolean {\n    return this.platformService.isIOS();\n  }\n  \n  ngAfterContentInit(): void {\n    // Initialize tabs\n    this.updateTabsCount();\n    this.updateSelectedState();\n    \n    // Track changes in tab composition\n    this.tabItems.changes.subscribe(() => {\n      this.updateTabsCount();\n      this.updateSelectedState();\n    });\n  }\n  \n  ngOnDestroy(): void {\n    // Clean up subscriptions when component is destroyed\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n  }\n  \n  /** Get slider transform */\n  getSliderTransform(): string {\n    return `translateX(${100 * this.activeTabIndex()}%)`;\n  }\n  \n  /** Update number of tabs */\n  private updateTabsCount(): void {\n    if (this.tabItems) {\n      this.tabsCount.update(val => this.tabItems.length);\n    }\n  }\n  \n  /** Select tab by index */\n  selectTab(index: number): void {\n    if (index !== this.activeTabIndex()) {\n      this.activeTabIndex.update(() => index);\n      this.selectedIndexChange.emit(index);\n      this.updateSelectedState();\n    }\n  }\n  \n  /** Update selected state of tabs */\n  private updateSelectedState(): void {\n    if (!this.tabItems) return;\n    \n    const activeIndex = this.activeTabIndex();\n    this.hasSelectedTab.update(() => activeIndex > -1 && activeIndex < this.tabItems.length);\n    \n    // Clear previous subscriptions\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n    this.subscriptions = [];\n    \n    this.tabItems.forEach((item, index) => {\n      // Update selected property in each tab through public method\n      const isSelected = index === activeIndex;\n      item.setSelected(isSelected);\n      \n      // Subscribe to selection event\n      const subscription = item.select.subscribe(() => {\n        this.selectTab(index);\n      });\n      \n      this.subscriptions.push(subscription);\n    });\n  }\n} ","/**\n * Enumeration of the various types of pagination items.\n */\nexport enum PaginationType {\n  Page = 'page',\n  Next = 'next',\n  Previous = 'previous',\n  StartEllipsis = 'start-ellipsis',\n  EndEllipsis = 'end-ellipsis',\n} ","/**\n * Creates an array of numbers in a given range\n * @param start The start of the range (inclusive)\n * @param end The end of the range (inclusive)\n * @returns An array containing all numbers in the range\n */\nexport function createRange(start: number, end: number): number[] {\n  const length = end - start + 1;\n  return Array.from({ length }, (_, i) => start + i);\n} ","import { signal, computed, Signal } from '@angular/core';\nimport { createRange } from './array-utils';\nimport { PaginationType } from './pagination.enum';\nimport { PaginationItem, PaginationProps } from './pagination.types';\n\n/**\n * Creates and manages the state and logic for pagination items.\n * \n * @param props Configuration options for the pagination\n * @returns A computed signal that produces an array of pagination items\n */\nexport function usePagination(props: {\n  boundaryCount: Signal<number>;\n  count: Signal<number>;\n  defaultPage: Signal<number>;\n  hideNextButton: Signal<boolean>;\n  hidePrevButton: Signal<boolean>;\n  page: Signal<number | undefined>;\n  siblingCount: Signal<number>;\n  onPageChange: (page: number) => void;\n}): Signal<PaginationItem[]> {\n  // State for the current page\n  const currentPage = signal<number>(props.page() ?? props.defaultPage());\n\n  // Update internal state when external page changes\n  const updatePage = () => {\n    if (props.page() !== undefined && props.page() !== currentPage()) {\n      currentPage.set(props.page() ?? props.defaultPage());\n    }\n  };\n\n  // Generate pagination items\n  return computed(() => {\n    // Ensure the page is synchronized with the props\n    updatePage();\n\n    const boundaryCount = props.boundaryCount();\n    const count = props.count();\n    const hideNextButton = props.hideNextButton();\n    const hidePrevButton = props.hidePrevButton();\n    const siblingCount = props.siblingCount();\n    const page = currentPage();\n\n    // Generate the ranges of the pages\n    const startPages = createRange(1, Math.min(boundaryCount, count));\n    const endPages = createRange(Math.max(count - boundaryCount + 1, boundaryCount + 1), count);\n\n    // Calculate sibling pages range\n    const siblingsStart = Math.max(\n      Math.min(\n        // Natural start\n        page - siblingCount,\n        // Lower boundary when page is high\n        count - boundaryCount - siblingCount * 2 - 1\n      ),\n      // Greater than startPages\n      boundaryCount + 2\n    );\n\n    const siblingsEnd = Math.min(\n      Math.max(\n        // Natural end\n        page + siblingCount,\n        // Upper boundary when page is low\n        boundaryCount + siblingCount * 2 + 2\n      ),\n      // Less than endPages\n      endPages.length > 0 ? endPages[0] - 2 : count - 1\n    );\n\n    // Basic list of items to render\n    const itemList: Array<PaginationType | number> = [];\n\n    // Add previous button\n    if (!hidePrevButton) {\n      itemList.push(PaginationType.Previous);\n    }\n\n    // Add start pages\n    itemList.push(...startPages);\n\n    // Add start ellipsis\n    if (siblingsStart > boundaryCount + 2) {\n      itemList.push(PaginationType.StartEllipsis);\n    } else if (boundaryCount + 1 < count - boundaryCount) {\n      itemList.push(boundaryCount + 1);\n    }\n\n    // Add sibling pages\n    itemList.push(...createRange(siblingsStart, siblingsEnd));\n\n    // Add end ellipsis\n    if (siblingsEnd < count - boundaryCount - 1) {\n      itemList.push(PaginationType.EndEllipsis);\n    } else if (count - boundaryCount > boundaryCount) {\n      itemList.push(count - boundaryCount);\n    }\n\n    // Add end pages\n    itemList.push(...endPages);\n\n    // Add next button\n    if (!hideNextButton) {\n      itemList.push(PaginationType.Next);\n    }\n\n    // Map the button type to its page number\n    const buttonPage = (type: PaginationType): number | null => {\n      switch (type) {\n        case PaginationType.Previous:\n          return page - 1;\n        case PaginationType.Next:\n          return page + 1;\n        default:\n          return null;\n      }\n    };\n\n    // Create the final pagination items\n    return itemList.map((item): PaginationItem => {\n      if (typeof item === 'number') {\n        return {\n          onClick: () => {\n            currentPage.set(item);\n            props.onPageChange(item);\n          },\n          type: PaginationType.Page,\n          page: item,\n          selected: item === page,\n          disabled: false,\n          'aria-current': item === page ? 'true' : undefined,\n        };\n      }\n\n      // Handle special items\n      const pageNumber = buttonPage(item);\n      return {\n        onClick: () => {\n          if (pageNumber !== null) {\n            currentPage.set(pageNumber);\n            props.onPageChange(pageNumber);\n          }\n        },\n        type: item,\n        page: pageNumber,\n        selected: false,\n        disabled:\n          (![PaginationType.StartEllipsis, PaginationType.EndEllipsis].includes(item) &&\n            (item === PaginationType.Next ? page >= count : page <= 1)),\n      };\n    });\n  });\n} ","import { \n    Component, \n    ViewEncapsulation, \n    ChangeDetectionStrategy,\n    input,\n    output,\n    HostBinding,\n    computed,\n    signal\n  } from '@angular/core';\n  import { CommonModule } from '@angular/common';\n  import { HeadlineComponent } from '../../typography/headline/headline.component';\n  import { TguiDynamicIconComponent } from '../../../icons/dynamic-icon.component';\n  import { PaginationItem } from './hooks/pagination.types';\n  import { PaginationType } from './hooks/pagination.enum';\n  import { usePagination } from './hooks/use-pagination';\n\n/**\n * The Pagination component displays a set of navigation controls allowing users to navigate through pages of content.\n * It is built on top of a custom hook that manages pagination logic and state.\n * This component can be customized to hide next/previous buttons, specify boundary and sibling count for pagination items, \n * and handle page changes through a pageChange output.\n */\n@Component({\n  selector: 'tgui-pagination',\n  standalone: true,\n  imports: [CommonModule, HeadlineComponent, TguiDynamicIconComponent],\n  template: `\n    <div\n      role=\"tablist\"\n      class=\"pagination-wrapper\"\n      [attr.aria-disabled]=\"disabled()\"\n    >\n      <ng-container *ngFor=\"let item of paginationItems()\">\n        <tgui-headline\n          [attr.tag]=\"isEllipsis(item) ? 'div' : 'button'\"\n          weight=\"2\"\n          [class.button]=\"true\"\n          [class.button--ellipsis]=\"isEllipsis(item)\"\n          [class.button--selected]=\"item.selected\"\n          [class.button--disabled]=\"item.disabled\"\n          [attr.aria-disabled]=\"item.disabled || undefined\"\n          [attr.aria-current]=\"item['aria-current']\"\n          (click)=\"handleItemClick(item)\"\n        >\n          <ng-container [ngSwitch]=\"item.type\">\n            <tgui-dynamic-icon *ngSwitchCase=\"'previous'\" icon=\"chevron-left\" class=\"icon\"></tgui-dynamic-icon>\n            <tgui-dynamic-icon *ngSwitchCase=\"'next'\" icon=\"chevron-right\" class=\"icon\"></tgui-dynamic-icon>\n            <ng-container *ngSwitchCase=\"'start-ellipsis'\">...</ng-container>\n            <ng-container *ngSwitchCase=\"'end-ellipsis'\">...</ng-container>\n            <ng-container *ngSwitchDefault>{{ item.page }}</ng-container>\n          </ng-container>\n        </tgui-headline>\n      </ng-container>\n    </div>\n  `,\n  styles: [`\n    :host {\n      display: block;\n    }\n    \n    .pagination-wrapper {\n      display: flex;\n      gap: 8px;\n      padding: 16px;\n    }\n    \n    :host.disabled .pagination-wrapper {\n      opacity: .35;\n    }\n    \n    .button {\n      cursor: pointer;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      box-sizing: border-box;\n    \n      min-width: 44px;\n      height: 44px;\n    \n      color: var(--tgui--hint_color);\n      padding: 0 10px;\n      border: none;\n      border-radius: 12px;\n      background: transparent;\n    }\n    \n    .button--selected {\n      color: var(--tgui--text_color);\n      background: var(--tgui--tertiary_bg_color);\n    }\n    \n    .button--disabled {\n      cursor: default;\n      opacity: .35;\n    }\n    \n    .button--ellipsis {\n      cursor: default;\n      opacity: 1;\n    }\n    \n    .icon {\n      color: var(--tgui--link_color);\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      width: 100%;\n      height: 100%;\n    }\n    \n    /* Ensure the icon container takes full space of the button */\n    :host ::ng-deep tgui-dynamic-icon svg {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      width: 100%;\n      height: 100%;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PaginationComponent {\n  /**\n   * Number of always visible pages at the beginning and end.\n   */\n  boundaryCount = input<number>(1);\n  \n  /**\n   * The total number of pages.\n   */\n  count = input<number>(1);\n  \n  /**\n   * The page selected by default when the component is uncontrolled.\n   */\n  defaultPage = input<number>(1);\n  \n  /**\n   * If `true`, hide the next-page button.\n   */\n  hideNextButton = input<boolean>(false);\n  \n  /**\n   * If `true`, hide the previous-page button.\n   */\n  hidePrevButton = input<boolean>(false);\n  \n  /**\n   * The current page.\n   */\n  page = input<number | undefined>(undefined);\n  \n  /**\n   * Number of always visible pages before and after the current page.\n   */\n  siblingCount = input<number>(1);\n  \n  /**\n   * Controls whether the Pagination component is interactive.\n   */\n  disabled = input<boolean>(false);\n  \n  /**\n   * Event emitted when the page changes.\n   */\n  pageChange = output<number>();\n  \n  /**\n   * Items for pagination calculated by the hook\n   */\n  paginationItems = usePagination({\n    boundaryCount: this.boundaryCount,\n    count: this.count,\n    defaultPage: this.defaultPage,\n    hideNextButton: this.hideNextButton,\n    hidePrevButton: this.hidePrevButton,\n    page: this.page,\n    siblingCount: this.siblingCount,\n    onPageChange: (page: number) => this.pageChange.emit(page)\n  });\n  \n  /**\n   * Apply the disabled class to the host element\n   */\n  @HostBinding('class.disabled')\n  get isDisabled(): boolean {\n    return this.disabled();\n  }\n  \n  /**\n   * Handle item click if the item is not disabled and not an ellipsis\n   */\n  handleItemClick(item: PaginationItem): void {\n    if (!this.disabled() && !item.disabled && !this.isEllipsis(item)) {\n      item.onClick();\n    }\n  }\n  \n  /**\n   * Check if an item is an ellipsis\n   */\n  isEllipsis(item: PaginationItem): boolean {\n    return [\n      PaginationType.StartEllipsis,\n      PaginationType.EndEllipsis\n    ].includes(item.type);\n  }\n}","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input,\n  Output,\n  EventEmitter,\n  HostBinding,\n  AfterContentInit,\n  ElementRef,\n  inject,\n  signal,\n  computed,\n  effect\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VisuallyHiddenDirective } from '../../../directives/visually-hidden.directive';\n\n/**\n * CompactPaginationItem component represents an individual dot in a compact pagination.\n * It visually indicates whether it is selected and provides accessibility features.\n */\n@Component({\n  selector: 'tgui-compact-pagination-item',\n  standalone: true,\n  imports: [CommonModule, VisuallyHiddenDirective],\n  template: `\n    <button\n      type=\"button\"\n      role=\"tab\"\n      [attr.aria-selected]=\"isSelectedValue()\"\n      (click)=\"onClick()\"\n    >\n      <span *ngIf=\"hasContent\" tguiVisuallyHidden>\n        <ng-content></ng-content>\n      </span>\n    </button>\n  `,\n  styles: [`\n    :host {\n      display: inline-block;\n    }\n    \n    button {\n      cursor: pointer;\n      display: block;\n    \n      width: 8px;\n      height: 8px;\n    \n      padding: 0;\n      border: none;\n      border-radius: 50%;\n    \n      transition: opacity .15s ease-in-out;\n      opacity: var(--tgui--compact-pagination--dot--opacity--selected, .25);\n      background: var(--tgui--compact-pagination--dot--background--selected, var(--tgui--link_color));\n    }\n    \n    :host.selected button {\n      opacity: 1;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CompactPaginationItemComponent implements AfterContentInit {\n  /** External selected state */\n  selected = input<boolean>(false);\n  \n  /** Internal selected state */\n  private _isSelected = signal<boolean>(false);\n  \n  /** Computed selected value */\n  isSelectedValue = computed(() => this._isSelected() || this.selected());\n  \n  /** Element reference */\n  private elementRef = inject(ElementRef);\n  \n  /** Flag to determine if content exists */\n  hasContent = false;\n  \n  /** Select event */\n  @Output() select = new EventEmitter<void>();\n  \n  constructor() {\n    effect(() => {\n      this._isSelected.set(this.selected());\n    });\n  }\n  \n  ngAfterContentInit(): void {\n    // Check if there is content\n    const element = this.elementRef.nativeElement;\n    this.hasContent = !!element.textContent?.trim();\n  }\n  \n  /** Host binding for selected class */\n  @HostBinding('class.selected')\n  get isSelected(): boolean {\n    return this.isSelectedValue();\n  }\n  \n  /** Click handler */\n  onClick(): void {\n    this.select.emit();\n  }\n  \n  /**\n   * Public method to set selected state from parent component\n   */\n  setSelected(value: boolean): void {\n    this._isSelected.set(value);\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input,\n  HostBinding,\n  ElementRef,\n  inject,\n  output,\n  ContentChildren,\n  QueryList,\n  AfterContentInit,\n  OnDestroy,\n  signal,\n  effect\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CompactPaginationItemComponent } from './compact-pagination-item.component';\nimport { Subscription } from 'rxjs';\n\n/**\n * CompactPagination component displays a set of dots for pagination.\n * It's typically used in carousels, sliders, or any component requiring compact pagination controls.\n * \n * The component supports different visual modes and manages the state of its pagination items.\n */\n@Component({\n  selector: 'tgui-compact-pagination',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div \n      role=\"tablist\"\n      class=\"pagination-container\"\n    >\n      <ng-content></ng-content>\n    </div>\n  `,\n  styles: [`\n    :host {\n      display: inline-block;\n    }\n    \n    .pagination-container {\n      --tgui--compact-pagination--dot--opacity--selected: .1;\n      --tgui--compact-pagination--dot--background--selected: var(--tgui--link_color);\n    \n      display: inline-flex;\n      gap: 8px;\n      padding: 4px;\n    }\n    \n    :host.ambient .pagination-container {\n      --tgui--compact-pagination--dot--opacity--selected: .25;\n      --tgui--compact-pagination--dot--background--selected: var(--tgui--white);\n    \n      padding: 8px 9px;\n      gap: 6px;\n      border-radius: 28px;\n      background: rgba(0, 0, 0, .25);\n      backdrop-filter: blur(22px);\n      -webkit-backdrop-filter: blur(22px);\n    }\n    \n    :host.white .pagination-container {\n      --tgui--compact-pagination--dot--opacity--selected: .25;\n      --tgui--compact-pagination--dot--background--selected: var(--tgui--white);\n    \n      gap: 6px;\n      padding: 0;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CompactPaginationComponent implements AfterContentInit, OnDestroy {\n  /** Mode of the pagination */\n  mode = input<'default' | 'ambient' | 'white'>('default');\n  \n  /** Selected index */\n  selectedIndex = input<number>(0);\n  \n  /** Selected index change event */\n  selectedIndexChange = output<number>();\n  \n  /** Current active index (internal) */\n  private activeIndex = signal<number>(0);\n  \n  /** Element reference */\n  private elementRef = inject(ElementRef);\n  \n  /** Get all pagination item components */\n  @ContentChildren(CompactPaginationItemComponent) \n  paginationItems!: QueryList<CompactPaginationItemComponent>;\n  \n  /** Subscriptions to pagination item events */\n  private subscriptions: Subscription[] = [];\n  \n  constructor() {\n    effect(() => {\n      this.activeIndex.set(this.selectedIndex());\n      this.updateSelectedState();\n    });\n  }\n  \n  /** Host bindings for different modes */\n  @HostBinding('class.ambient')\n  get isAmbient(): boolean {\n    return this.mode() === 'ambient';\n  }\n  \n  @HostBinding('class.white')\n  get isWhite(): boolean {\n    return this.mode() === 'white';\n  }\n  \n  ngAfterContentInit(): void {\n    this.updateSelectedState();\n    \n    // Track changes in pagination items\n    this.paginationItems.changes.subscribe(() => {\n      this.updateSelectedState();\n    });\n  }\n  \n  ngOnDestroy(): void {\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n  }\n  \n  /** Select item by index */\n  selectItem(index: number): void {\n    if (index !== this.activeIndex()) {\n      this.activeIndex.set(index);\n      this.selectedIndexChange.emit(index);\n      this.updateSelectedState();\n    }\n  }\n  \n  /** Update the selected state of all items */\n  private updateSelectedState(): void {\n    if (!this.paginationItems?.length) return;\n    \n    // Clear previous subscriptions\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n    this.subscriptions = [];\n    \n    const active = this.activeIndex();\n    \n    this.paginationItems.forEach((item, index) => {\n      // Update selected state in each item\n      if (item && typeof item.setSelected === 'function') {\n        item.setSelected(index === active);\n        \n        // Subscribe to select events from items\n        const subscription = item.select.subscribe(() => {\n          this.selectItem(index);\n        });\n        \n        this.subscriptions.push(subscription);\n      }\n    });\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  computed,\n  input,\n  InputSignal\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Link component provides a customizable anchor element.\n * Used for navigation with proper styling following the Telegram UI guidelines.\n */\n@Component({\n  selector: 'tgui-link',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <a\n      [attr.href]=\"href()\"\n      [attr.target]=\"target()\"\n      [attr.rel]=\"rel()\"\n      [attr.title]=\"title()\"\n      [attr.aria-label]=\"ariaLabel()\"\n    >\n      <ng-content></ng-content>\n    </a>\n  `,\n  styles: [`\n    :host {\n      display: inline;\n    }\n    \n    a {\n      text-decoration: none;\n      color: var(--tgui--link_color);\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LinkComponent {\n  /** URL that the hyperlink points to */\n  href = input<string>('');\n  \n  /** Specifies where to open the linked document */\n  target = input<string>('');\n  \n  /** Specifies the relationship between the current document and the linked document */\n  rel = input<string>('');\n  \n  /** Specifies extra information about an element */\n  title = input<string>('');\n  \n  /** Accessible label for the link */\n  ariaLabel = input<string>('');\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input,\n  computed,\n  inject,\n  ElementRef,\n  AfterViewInit,\n  signal,\n  OnChanges,\n  OnInit\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport interface Coords {\n  x?: number;\n  y?: number;\n}\n\n// Constants\nexport const DEFAULT_ARROW_WIDTH = 22;\nexport const DEFAULT_ARROW_HEIGHT = 6;\nexport const DEFAULT_ARROW_PADDING = 12;\n\n/**\n * Gets the position data for the arrow based on placement and coordinates\n */\nfunction getArrowPositionData(\n  placement: string,\n  coords?: Coords,\n  offset = 0,\n  isStaticOffset = false\n): [string | null, Record<string, number | string>] {\n  \n  // Ensure we have coordinates, even if they are undefined\n  const safeCoords = coords || { x: 0, y: 0 };\n  \n  // Function to calculate offset, similar to React version\n  const withOffset = (isVerticalPlacement: boolean): number => {\n    const coordValue = isVerticalPlacement ? (safeCoords.y ?? 0) : (safeCoords.x ?? 0);\n    return isStaticOffset ? offset : coordValue + offset;\n  };\n\n  // Handle each placement separately, as in React version\n  if (placement.includes('top')) {\n    return [\n      'bottom',\n      {\n        top: '100%',\n        left: withOffset(false)\n      }\n    ];\n  }\n\n  if (placement.includes('right')) {\n    return [\n      'left',\n      {\n        top: withOffset(true),\n        left: 0\n      }\n    ];\n  }\n\n  if (placement.includes('bottom')) {\n    return [\n      'top',\n      {\n        bottom: '100%',\n        left: withOffset(false)\n      }\n    ];\n  }\n\n  // Handle as left placement by default\n  return [\n    'right',\n    {\n      top: withOffset(true),\n      right: 0\n    }\n  ];\n}\n\n/**\n * FloatingArrow dynamically positions an arrow indicator relative to a floating element,\n * such as a tooltip to signify its association with a target element.\n * Supports custom arrow icons and positioning adjustments.\n */\n@Component({\n  selector: 'tgui-floating-arrow',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <svg\n      [attr.width]=\"DEFAULT_ARROW_WIDTH\"\n      [attr.height]=\"ARROW_HEIGHT_WITH_WHITE_SPACE\"\n      [attr.viewBox]=\"'0 0 ' + DEFAULT_ARROW_WIDTH + ' ' + ARROW_HEIGHT_WITH_WHITE_SPACE\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      class=\"icon\"\n    >\n      <path d=\"M10.804 0C6.387 0 6.94 6 .865 6h19.878c-6.074 0-5.521-6-9.939-6Z\" fill=\"currentColor\" />\n    </svg>\n  `,\n  styles: [`\n    :host {\n      position: absolute;\n      color: inherit;\n      pointer-events: none;\n      z-index: 0;\n    }\n\n    :host.placement-right {\n      transform: rotate(90deg) translate(50%, -50%);\n      transform-origin: right;\n    }\n\n    :host.placement-bottom {\n      transform: rotate(180deg);\n    }\n\n    :host.placement-left {\n      transform: rotate(-90deg) translate(-50%, -50%);\n      transform-origin: left;\n    }\n\n    .icon {\n      display: block;\n      transform: translateY(1px);\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class.placement-right]': 'arrowPlacement() === \"right\"',\n    '[class.placement-bottom]': 'arrowPlacement() === \"bottom\"',\n    '[class.placement-left]': 'arrowPlacement() === \"left\"',\n    '[style]': 'computedStyles()'\n  }\n})\nexport class FloatingArrowComponent implements OnInit, AfterViewInit, OnChanges {\n  private elementRef = inject(ElementRef);\n\n  // Constants\n  readonly DEFAULT_ARROW_WIDTH = DEFAULT_ARROW_WIDTH;\n  readonly DEFAULT_ARROW_HEIGHT = DEFAULT_ARROW_HEIGHT;\n  readonly PLATFORM_HEIGHT = 1;\n  readonly ARROW_HEIGHT_WITH_WHITE_SPACE = DEFAULT_ARROW_HEIGHT + this.PLATFORM_HEIGHT;\n\n  // Inputs\n  placement = input<string>('bottom');\n  offset = input<number | undefined>(undefined);\n  isStaticOffset = input<boolean>(false);\n  coords = input<Coords | undefined>(undefined);\n\n  // Internal state\n  private styles = signal<Record<string, number | string>>({});\n  private _arrowPlacement = signal<string | null>(null);\n\n  // Computed values\n  arrowPlacement = computed(() => this._arrowPlacement());\n  computedStyles = computed(() => {\n    const styleObj = this.styles();\n    \n    const result = Object.entries(styleObj).reduce((acc, [key, value]) => {\n      acc[key] = typeof value === 'number' ? `${value}px` : value;\n      return acc;\n    }, {} as Record<string, string>);\n    \n    return result;\n  });\n\n  ngOnInit(): void {\n    this.updateArrowPosition();\n  }\n\n  ngAfterViewInit(): void {\n    this.updateArrowPosition();\n  }\n  \n  ngOnChanges(): void {\n    this.updateArrowPosition();\n  }\n\n  private updateArrowPosition(): void {\n    \n    const [arrowPlacement, styles] = getArrowPositionData(\n      this.placement(),\n      this.coords(),\n      this.offset(),\n      this.isStaticOffset()\n    );\n\n    this._arrowPlacement.set(arrowPlacement);\n    \n    this.styles.set(styles);\n  }\n} ","import { Placement } from '@floating-ui/dom';\n\nimport { AutoPlacementType, PlacementWithAuto } from '../types';\n\n/**\n * Checks if the placement is not an auto-placement\n */\nexport const isNotAutoPlacement = (placement: PlacementWithAuto): placement is Placement => {\n  return !placement.startsWith('auto');\n};\n\n/**\n * Gets the alignment for auto-placement\n */\nexport const getAutoPlacementAlignment = (placement: AutoPlacementType): 'start' | 'end' | null => {\n  const align = placement.replace(/auto-|auto/, '');\n  return align === 'start' || align === 'end' ? align : null;\n}; ","import { Injectable, signal, computed } from '@angular/core';\nimport {\n  arrow,\n  autoPlacement,\n  flip,\n  Middleware,\n  offset,\n  shift,\n  size,\n  type MiddlewareState,\n  type ElementRects,\n  type Elements,\n} from '@floating-ui/dom';\n\nimport { getAutoPlacementAlignment, isNotAutoPlacement } from './helpers/alignment';\nimport { PlacementWithAuto } from './types';\n\nexport interface UseFloatingMiddlewaresOptions {\n  /** By default, the component will automatically choose the best placement */\n  placement?: PlacementWithAuto;\n  /** Offset along the main axis. */\n  offsetByMainAxis?: number;\n  /** Offset along the cross axis. */\n  offsetByCrossAxis?: number;\n  /** Ref for arrow element */\n  arrowRef?: HTMLElement | null;\n  /** Whether to display an arrow pointing to the anchor element. */\n  withArrow?: boolean;\n  /** The height of the arrow. This is added to `mainAxis` to prevent the arrow from overlapping the anchor element. */\n  arrowHeight?: number;\n  /** A safe zone around the arrow to prevent it from exceeding the content bounds. */\n  arrowPadding?: number;\n  /** Sets the width to match the target element. */\n  sameWidth?: boolean;\n  /** An array of custom modifiers for Popper. */\n  customMiddlewares?: Middleware[];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class FloatingMiddlewaresService {\n  getMiddlewares(options: UseFloatingMiddlewaresOptions) {\n    const {\n      placement = 'bottom-start',\n      arrowRef = null,\n      withArrow = false,\n      arrowHeight = 0,\n      arrowPadding = 0,\n      sameWidth = false,\n      offsetByMainAxis = 0,\n      offsetByCrossAxis = 0,\n      customMiddlewares = [],\n    } = options;\n\n    const isNotAutoPlaced = isNotAutoPlacement(placement);\n    const middlewares: Middleware[] = [];\n    \n    // Add offset middleware\n    const offsetConfig = {\n      crossAxis: offsetByCrossAxis,\n      mainAxis: withArrow && arrowHeight ? offsetByMainAxis + arrowHeight : offsetByMainAxis,\n    };\n    middlewares.push(offset(offsetConfig));\n\n    // Add placement-related middleware\n    if (isNotAutoPlaced) {\n      middlewares.push(\n        flip({\n          fallbackAxisSideDirection: 'start',\n        }),\n      );\n    } else {\n      const alignment = getAutoPlacementAlignment(placement);\n      middlewares.push(autoPlacement({\n        alignment\n      }));\n    }\n\n    middlewares.push(shift());\n\n    // Add size middleware if needed\n    if (sameWidth) {\n      middlewares.push(\n        size({\n          apply({ rects, elements }: { rects: ElementRects, elements: Elements }) {\n            Object.assign(elements.floating.style, {\n              width: `${rects.reference.width}px`,\n            });\n          },\n        }),\n      );\n    }\n\n    // Add custom middlewares\n    if (customMiddlewares.length > 0) {\n      middlewares.push(...customMiddlewares);\n    }\n\n    // Add arrow middleware if needed\n    if (withArrow && arrowRef) {\n      middlewares.push(\n        arrow({\n          element: arrowRef,\n          padding: arrowPadding,\n        }),\n      );\n    } else if (withArrow && !arrowRef) {\n      console.warn('🚀 Warning: Arrow middleware not added because arrowRef is null');\n    }\n\n    const result = {\n      middlewares,\n      strictPlacement: isNotAutoPlaced ? placement : undefined,\n    };\n    \n    return result;\n  }\n} ","import { autoUpdate, AutoUpdateOptions, FloatingElement, ReferenceElement } from '@floating-ui/dom';\n\nconst defaultOptions = {\n  ancestorScroll: true,\n  ancestorResize: true,\n  elementResize: false,\n  animationFrame: false,\n};\n\n/**\n * Check if the element is an HTML element\n */\nfunction isHTMLElement(value: any): value is HTMLElement {\n  return value instanceof HTMLElement;\n}\n\n/**\n * Check if an element is a virtual element\n */\nfunction isVirtualElement(value: any): boolean {\n  return value !== null && typeof value === 'object' && 'getBoundingClientRect' in value;\n}\n\n/**\n * Enhances the autoUpdate function from floating-ui with additional element resize support\n */\nexport const autoUpdateFloatingElement = (\n  reference: ReferenceElement | null,\n  floating: FloatingElement | null,\n  update: () => void,\n  options: Partial<AutoUpdateOptions> = defaultOptions,\n): ReturnType<typeof autoUpdate> => {\n\n  \n  if (!reference || !floating) {\n    console.warn('📌 autoUpdateFloatingElement: Missing reference or floating element, returning no-op');\n    return () => {};\n  }\n\n  const { elementResize = false, ...restOptions } = options;\n\n\n  let autoUpdateLibDisposer: (() => void);\n  try {\n    autoUpdateLibDisposer = autoUpdate(reference, floating, () => {\n      try {\n        update();\n      } catch (error) {\n        console.warn('📌 Error in update callback:', error);\n      }\n    }, {\n      ...restOptions,\n      elementResize: false,\n    });\n  } catch (error) {\n    console.error('📌 Error setting up autoUpdate:', error);\n    return () => {};\n  }\n\n  let observer: MutationObserver | null = null;\n  if (elementResize) {\n    try {\n      let initialUpdate = true;\n      observer = new MutationObserver(() => {\n        if (!initialUpdate) {\n          try {\n            update();\n          } catch (error) {\n            console.warn('📌 Error in MutationObserver update:', error);\n          }\n        }\n\n        initialUpdate = false;\n      });\n\n      if (isHTMLElement(reference) && !isVirtualElement(reference)) {\n        observer.observe(reference, {\n          childList: true,\n          subtree: true,\n        });\n      } \n\n      observer.observe(floating, {\n        childList: true,\n        subtree: true,\n      });\n    } catch (error) {\n      console.error('📌 Error setting up MutationObserver:', error);\n      if (observer) {\n        observer.disconnect();\n        observer = null;\n      }\n    }\n  }\n\n  return () => {\n    if (observer !== null) {\n      observer.disconnect();\n      observer = null;\n    }\n    try {\n      autoUpdateLibDisposer();\n    } catch (error) {\n      console.error('📌 Error in autoUpdateLibDisposer:', error);\n    }\n  };\n}; ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input,\n  computed,\n  signal,\n  inject,\n  ElementRef,\n  ViewChild,\n  AfterViewInit,\n  OnDestroy,\n  OnChanges,\n  type ElementRef as TypeElementRef,\n  output\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { \n  computePosition, \n  VirtualElement, \n  Placement,\n  MiddlewareData,\n  ComputePositionReturn\n} from '@floating-ui/dom';\n\nimport { RootRendererComponent } from '../../utils/root-renderer/root-renderer.component';\nimport { FloatingArrowComponent, DEFAULT_ARROW_HEIGHT, DEFAULT_ARROW_PADDING } from './components/floating-arrow';\nimport { FloatingMiddlewaresService, type UseFloatingMiddlewaresOptions, PlacementWithAuto } from './hooks';\nimport { autoUpdateFloatingElement } from './helpers';\n\nexport interface PopperProps extends Omit<UseFloatingMiddlewaresOptions, 'arrowHeight' | 'arrowPadding' | 'arrowRef'> {\n  /** Reference to the target element or virtual element for precise positioning. */\n  targetRef: HTMLElement | VirtualElement | null;\n  /** Configuration and customization options for the floating arrow component. */\n  arrowProps?: {\n    /** Optionally override the default arrow height. */\n    height?: number;\n    /** Optionally override the default arrow padding. */\n    padding?: number;\n    /** Additional styles for the arrow */\n    style?: Record<string, string>;\n    /** Additional class name for the arrow */\n    className?: string;\n  };\n  /** Opt-in feature to automatically update Popper's position when the target element resizes. */\n  autoUpdateOnTargetResize?: boolean;\n}\n\n/**\n * Renders a Popper component, leveraging floating UI for dynamic, responsive positioning.\n * Supports advanced configurations like virtual elements, custom arrows, and auto-position updates.\n */\n@Component({\n  selector: 'tgui-popper',\n  standalone: true,\n  imports: [CommonModule, RootRendererComponent, FloatingArrowComponent],\n  template: `\n    <tgui-root-renderer>\n      <div\n        #floatingEl\n        [ngStyle]=\"floatingStyles()\"\n        class=\"wrapper\"\n      >\n        <tgui-floating-arrow\n          *ngIf=\"withArrow()\"\n          #arrowEl\n          [placement]=\"resolvedPlacement()\"\n          [coords]=\"arrowCoords()\"\n          [style]=\"arrowStyle()\"\n          [class]=\"arrowClassName()\"\n        ></tgui-floating-arrow>\n        <ng-content></ng-content>\n      </div>\n    </tgui-root-renderer>\n  `,\n  styles: [`\n    .wrapper {\n      position: absolute;\n      top: 0;\n      left: 0;\n      z-index: 1000;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PopperComponent implements AfterViewInit, OnDestroy {\n  private floatingMiddlewaresService = inject(FloatingMiddlewaresService);\n  private elementRef = inject(ElementRef);\n\n  // ViewChild references\n  @ViewChild('floatingEl') floatingEl!: TypeElementRef<HTMLElement>;\n  @ViewChild('arrowEl') arrowEl?: FloatingArrowComponent;\n\n  // Inputs\n  placement = input<PlacementWithAuto>('auto');\n  targetRef = input<HTMLElement | VirtualElement | null>(null);\n  sameWidth = input<boolean>(false);\n  offsetByMainAxis = input<number>(8);\n  offsetByCrossAxis = input<number>(0);\n  withArrow = input<boolean>(true);\n  arrowProps = input<PopperProps['arrowProps']>({});\n  autoUpdateOnTargetResize = input<boolean>(false);\n  customMiddlewares = input<UseFloatingMiddlewaresOptions['customMiddlewares']>([]);\n\n  // Outputs\n  popperCreated = output<any>();\n  popperUpdated = output<ComputePositionReturn>();\n  popperShown = output<void>();\n\n  // State\n  private cleanup = signal<(() => void) | null>(null);\n  private _floatingStyles = signal<Record<string, string>>({});\n  private _resolvedPlacement = signal<Placement>('bottom');\n  private _arrowCoords = signal<{ x?: number; y?: number } | undefined>(undefined);\n  private _middlewareData = signal<MiddlewareData>({});\n\n  // Computed values\n  floatingStyles = computed(() => this._floatingStyles());\n  resolvedPlacement = computed(() => this._resolvedPlacement());\n  arrowCoords = computed(() => this._arrowCoords());\n  \n  // Arrow props\n  arrowStyle = computed(() => this.arrowProps()?.style || {});\n  arrowClassName = computed(() => this.arrowProps()?.className || '');\n  arrowHeight = computed(() => this.arrowProps()?.height || DEFAULT_ARROW_HEIGHT);\n  arrowPadding = computed(() => this.arrowProps()?.padding || DEFAULT_ARROW_PADDING);\n\n  ngAfterViewInit(): void {\n    this.setupFloating();\n  }\n\n  ngOnDestroy(): void {\n    this.cleanupFloating();\n  }\n\n  public setupFloating(): void {\n    if (!this.targetRef() || !this.floatingEl) {\n      return;\n    }\n\n    // Find DOM arrow element using querySelector and cast to HTMLElement\n    const arrowElement = this.floatingEl.nativeElement.querySelector('tgui-floating-arrow') as HTMLElement | null;\n    \n    const { middlewares, strictPlacement } = this.floatingMiddlewaresService.getMiddlewares({\n      placement: this.placement(),\n      sameWidth: this.sameWidth(),\n      offsetByMainAxis: this.offsetByMainAxis(),\n      offsetByCrossAxis: this.offsetByCrossAxis(),\n      withArrow: this.withArrow(),\n      arrowRef: arrowElement, // Use DOM element found through querySelector\n      arrowHeight: this.arrowHeight(),\n      arrowPadding: this.arrowPadding(),\n      customMiddlewares: this.customMiddlewares()\n    });\n\n    const update = () => {\n      if (!this.targetRef() || !this.floatingEl) {\n        return;\n      }\n\n      computePosition(this.targetRef() as any, this.floatingEl.nativeElement, {\n        placement: strictPlacement as Placement,\n        middleware: middlewares\n      }).then((positionData) => {\n        const { x, y, placement, middlewareData } = positionData;\n        \n        this._floatingStyles.set({\n          left: `${x}px`,\n          top: `${y}px`\n        });\n        \n        this._resolvedPlacement.set(placement);\n        this._middlewareData.set(middlewareData);\n        \n        // Log arrow coordinates update\n        this._arrowCoords.set(middlewareData.arrow);\n        \n        // Emit the position data\n        this.popperUpdated.emit(positionData);\n        \n        // Emit that the popper is now shown\n        setTimeout(() => {\n          this.popperShown.emit();\n        }, 0);\n      });\n    };\n\n    // Initial update\n    update();\n\n    // Setup auto-updating\n    const cleanupFn = autoUpdateFloatingElement(\n      this.targetRef() as any,\n      this.floatingEl.nativeElement,\n      update,\n      {\n        elementResize: this.autoUpdateOnTargetResize()\n      }\n    );\n\n    // Store cleanup function\n    this.cleanup.set(cleanupFn);\n    \n    // Emit that the popper instance is created\n    this.popperCreated.emit({\n      update,\n      cleanup: cleanupFn,\n      targetRef: this.targetRef(),\n      floatingEl: this.floatingEl.nativeElement\n    });\n  }\n\n  public cleanupFloating(): void {\n    if (this.cleanup()) {\n      this.cleanup()!();\n      this.cleanup.set(null);\n    }\n  }\n} ","import { \n  Component, \n  ViewEncapsulation, \n  ChangeDetectionStrategy,\n  input,\n  computed,\n  inject\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PopperComponent } from '../popper/popper.component';\nimport { CaptionComponent } from '../../typography/caption/caption.component';\nimport { ThemeService } from '../../../services/theme.service';\nimport { PlacementWithAuto } from '../popper/hooks';\nimport { PlatformService } from '../../../services/platform.service';\n\n/**\n * TODO: Implement as a directive to allow usage like:\n * <tgui-button tguiTooltip [tguiTooltipContent]=\"TEMPLATE OR STRING CONTENT\">\n * \n * The Tooltip component provides text labels that appear when the user hovers over, focuses on,\n * or touches an element. It's built on top of the Popper component for automatic positioning\n * relative to the target element. The tooltip supports light and dark modes for different visual\n * contexts and uses the Caption component for its content to ensure consistent typography.\n */\n@Component({\n  selector: 'tgui-tooltip',\n  standalone: true,\n  imports: [CommonModule, PopperComponent, CaptionComponent],\n  template: `\n    <tgui-popper\n      [withArrow]=\"true\"\n      [arrowProps]=\"{\n        style: arrowStyle()\n      }\"\n      [targetRef]=\"targetRef()\"\n      [sameWidth]=\"sameWidth()\"\n      [placement]=\"placement()\"\n      [offsetByMainAxis]=\"offsetByMainAxis()\"\n      [offsetByCrossAxis]=\"offsetByCrossAxis()\"\n      [autoUpdateOnTargetResize]=\"autoUpdateOnTargetResize()\"\n      [customMiddlewares]=\"customMiddlewares()\"\n    >\n      <div [class]=\"tooltipClass()\">\n        <tgui-caption level=\"1\">\n          <ng-content></ng-content>\n        </tgui-caption>\n      </div>\n    </tgui-popper>\n  `,\n  styles: [`\n    :host {\n      display: block;\n      position: absolute;\n    }\n\n    .tooltip-wrapper {\n      padding: 12px;\n      border-radius: 12px;\n      color: var(--tgui--black);\n      background: var(--tgui--white);\n      box-shadow: 0 8px 24px 0 rgba(0, 0, 0, .10);\n    }\n\n    .tooltip-wrapper--dark {\n      box-shadow: none;\n      color: var(--tgui--white);\n      background: var(--tgui--secondary_bg_color);\n    }\n\n    :host-context(.tgui-platform-ios) .tooltip-wrapper--dark {\n      backdrop-filter: blur(50px);\n      -webkit-backdrop-filter: blur(50px);\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'attr.data-refresh-platform': 'true'\n  }\n})\nexport class TooltipComponent {\n  /** Reference to the target element or virtual element for precise positioning. */\n  targetRef = input<HTMLElement | { getBoundingClientRect: () => DOMRect } | null>(null);\n\n  /** Defines the theme of the tooltip, affecting its background and text color. */\n  mode = input<'light' | 'dark'>('light');\n\n  /** Placement of the tooltip relative to the target element */\n  placement = input<PlacementWithAuto>('auto');\n\n  /** Match width of the tooltip with target element */\n  sameWidth = input<boolean>(false);\n\n  /** Offset along the main axis */\n  offsetByMainAxis = input<number>(8);\n\n  /** Offset along the cross axis */\n  offsetByCrossAxis = input<number>(0);\n\n  /** Whether to update tooltip position when target element resizes */\n  autoUpdateOnTargetResize = input<boolean>(false);\n\n  /** Custom middlewares for floating-ui positioning */\n  customMiddlewares = input<any[]>([]);\n\n  private themeService = inject(ThemeService);\n  private platformService = inject(PlatformService);\n\n  // Computed values for class bindings\n  tooltipClass = computed(() => {\n    const isDark = this.mode() === 'dark';\n    const isIOS = this.platformService.isIOS();\n    \n    return `tooltip-wrapper ${isDark ? 'tooltip-wrapper--dark' : ''} ${isIOS ? 'tooltip-wrapper--ios' : ''}`;\n  });\n\n  // Computed values for arrow styles\n  arrowStyle = computed(() => {\n    const isDark = this.mode() === 'dark';\n    \n    return {\n      color: isDark ? 'var(--tgui--secondary_bg_color)' : 'var(--tgui--white)'\n    };\n  });\n} ","import {\n  Component,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  input,\n  computed,\n  inject\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PlatformService } from '../../../services/platform.service';\n\n/**\n * Modal header component providing a title area with drag handle indicator.\n * Supports before/after content slots for additional elements like close buttons.\n * Only visible on iOS platform following design guidelines.\n */\n@Component({\n  selector: 'tgui-modal-header',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div [class]=\"headerClasses()\" *ngIf=\"showHeader()\">\n      <!-- Before content slot -->\n      <div class=\"modal-header__before\">\n        <ng-content select=\"[slot=before]\"></ng-content>\n      </div>\n      \n      <!-- Main content -->\n      <div class=\"modal-header__content\">\n        <ng-content></ng-content>\n      </div>\n      \n      <!-- After content slot -->\n      <div class=\"modal-header__after\">\n        <ng-content select=\"[slot=after]\"></ng-content>\n      </div>\n    </div>\n  `,\n  styles: [`\n    :host {\n      display: contents;\n    }\n\n    .modal-header {\n      position: relative;\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      gap: 12px;\n      box-sizing: border-box;\n      padding: 16px;\n    }\n\n    .modal-header::before {\n      position: absolute;\n      top: 8px;\n      left: 50%;\n      transform: translateX(-50%);\n      content: '';\n      width: 36px;\n      height: 4px;\n      border-radius: 4px;\n      background: var(--tgui--divider);\n    }\n\n    .modal-header__before,\n    .modal-header__after {\n      display: flex;\n      align-items: center;\n      flex: 1 0 0;\n    }\n\n    .modal-header__before {\n      justify-content: flex-start;\n    }\n\n    .modal-header__after {\n      justify-content: flex-end;\n    }\n\n    .modal-header__content {\n      --tgui--text--line_height: 28px;\n      display: block;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      text-align: center;\n      white-space: nowrap;\n      font-weight: 600;\n      font-size: 17px;\n      line-height: var(--tgui--text--line_height);\n      color: var(--tgui--text_color);\n    }\n\n    /* Hide header on non-iOS platforms by default */\n    :host-context(.tgui-platform-base) .modal-header {\n      display: none;\n    }\n\n    /* Show header on iOS or when explicitly enabled */\n    :host-context(.tgui-platform-ios) .modal-header {\n      display: flex;\n    }\n\n    .modal-header--force-show {\n      display: flex !important;\n    }\n\n    .modal-header--force-hide {\n      display: none !important;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'attr.data-refresh-platform': 'true'\n  }\n})\nexport class ModalHeaderComponent {\n  // Services\n  private platformService = inject(PlatformService);\n\n  // Inputs\n  /** Force show header regardless of platform */\n  forceShow = input<boolean>(false);\n  /** Force hide header regardless of platform */\n  forceHide = input<boolean>(false);\n\n  // Computed properties\n  showHeader = computed(() => {\n    if (this.forceHide()) return false;\n    if (this.forceShow()) return true;\n    // Default behavior: show only on iOS\n    return this.platformService.platform() === 'ios';\n  });\n\n  headerClasses = computed(() => ({\n    'modal-header': true,\n    'modal-header--force-show': this.forceShow(),\n    'modal-header--force-hide': this.forceHide()\n  }));\n} ","import {\n  Component,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  inject,\n  HostListener,\n  input\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TappableComponent } from '../../utils/tappable/tappable.component';\n\n/**\n * Modal close button component providing accessible close functionality.\n * Must be used within a Modal component to function properly.\n * Supports custom content and interactive animations.\n */\n@Component({\n  selector: 'tgui-modal-close',\n  standalone: true,\n  imports: [\n    CommonModule,\n    TappableComponent\n  ],\n  template: `\n    <tgui-tappable\n      class=\"modal-close\"\n      [interactiveAnimation]=\"interactiveAnimation()\"\n      role=\"button\"\n      tabindex=\"0\"\n      [attr.aria-label]=\"ariaLabel()\"\n      (click)=\"handleClick()\"\n    >\n      <ng-content></ng-content>\n    </tgui-tappable>\n  `,\n  styles: [`\n    :host {\n      display: contents;\n    }\n\n    .modal-close {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      min-width: 44px;\n      min-height: 44px;\n      border-radius: 50%;\n      color: var(--tgui--hint_color);\n      cursor: pointer;\n      transition: color 150ms ease;\n    }\n\n    .modal-close:hover {\n      color: var(--tgui--text_color);\n    }\n\n    .modal-close:focus-visible {\n      outline: 2px solid var(--tgui--link_color);\n      outline-offset: 2px;\n    }\n\n    /* Icon sizing */\n    .modal-close :global(svg) {\n      width: 28px;\n      height: 28px;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ModalCloseComponent {\n  // Inputs\n  /** Type of interactive animation */\n  interactiveAnimation = input<'opacity' | 'background'>('opacity');\n  /** Custom aria-label for accessibility */\n  ariaLabel = input<string>('Close modal');\n\n  // Click handler\n  handleClick(): void {\n    // The actual close logic is handled by the parent Modal component\n    // This component just provides the UI and triggers the event\n    this.closeModal();\n  }\n\n  // Keyboard event handling\n  @HostListener('keydown', ['$event'])\n  handleKeyDown(event: KeyboardEvent): void {\n    if (event.key === 'Enter' || event.key === ' ') {\n      event.preventDefault();\n      this.handleClick();\n    }\n  }\n\n  private closeModal(): void {\n    // Find parent modal and close it\n    // This works by bubbling up the event tree\n    const event = new CustomEvent('modal-close', { \n      bubbles: true, \n      cancelable: true \n    });\n    \n    // Dispatch the event to let parent Modal component handle it\n    document.dispatchEvent(event);\n  }\n} ","import {\n  Component,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  input,\n  computed,\n  inject\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThemeService } from '../../../services/theme.service';\n\n/**\n * Modal overlay component providing a backdrop behind the modal content.\n * Supports theme-aware background colors and customizable opacity.\n */\n@Component({\n  selector: 'tgui-modal-overlay',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div \n      class=\"modal-overlay\"\n      [style]=\"overlayStyles()\"\n      [attr.aria-hidden]=\"'true'\"\n    ></div>\n  `,\n  styles: [`\n    :host {\n      display: contents;\n    }\n\n    .modal-overlay {\n      position: fixed;\n      inset: 0;\n      z-index: 999;\n      background: rgba(0, 0, 0, 0.4);\n      transition: opacity 300ms ease;\n    }\n\n    /* Theme-aware overlays */\n    :host-context(.tgui-theme-light) .modal-overlay {\n      background: rgba(0, 0, 0, 0.4);\n    }\n\n    :host-context(.tgui-theme-dark) .modal-overlay {\n      background: rgba(0, 0, 0, 0.6);\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ModalOverlayComponent {\n  // Services\n  private themeService = inject(ThemeService);\n\n  // Inputs\n  /** Custom opacity for the overlay (0-1) */\n  opacity = input<number | null>(null);\n  /** Custom background color */\n  backgroundColor = input<string | null>(null);\n\n  // Computed properties\n  overlayStyles = computed(() => {\n    const styles: Record<string, any> = {};\n    \n    if (this.backgroundColor()) {\n      styles['background'] = this.backgroundColor();\n    } else if (this.opacity() !== null) {\n      const isDark = this.themeService.appearance() === 'dark';\n      const baseOpacity = isDark ? 0.6 : 0.4;\n      const finalOpacity = this.opacity()! * baseOpacity;\n      styles['background'] = `rgba(0, 0, 0, ${finalOpacity})`;\n    }\n    \n    return styles;\n  });\n} ","import {\n  Component,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  input,\n  computed,\n  signal,\n  inject,\n  OnInit,\n  OnDestroy,\n  TemplateRef,\n  ViewChild,\n  ElementRef,\n  effect,\n  output,\n  HostListener,\n  AfterViewInit\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PortalService } from '../../../services/portal.service';\nimport { PlatformService } from '../../../services/platform.service';\nimport { ThemeService } from '../../../services/theme.service';\nimport { RootRendererComponent } from '../../utils/root-renderer/root-renderer.component';\nimport { TouchComponent, type TouchEvent } from '../../utils/touch/touch.component';\nimport { ModalHeaderComponent } from './modal-header.component';\nimport { ModalCloseComponent } from './modal-close.component';\nimport { ModalOverlayComponent } from './modal-overlay.component';\n\nexport interface ModalSnapPoint {\n  height: number | string;\n  headerHeight?: number;\n}\n\n/**\n * Modal component providing a flexible dialog framework with customizable content.\n * Supports swipe gestures, snap points, and portal rendering for mobile-optimized experience.\n * Based on React TGUI Modal component but implemented with Angular Signal API.\n */\n@Component({\n  selector: 'tgui-modal',\n  standalone: true,\n  imports: [\n    CommonModule,\n    RootRendererComponent,\n    TouchComponent\n  ],\n  template: `\n    <!-- Trigger element -->\n    <ng-container *ngIf=\"trigger()\">\n      <ng-container \n        [ngTemplateOutlet]=\"trigger()!\" \n        (click)=\"handleTriggerClick()\"\n      ></ng-container>\n    </ng-container>\n\n    <!-- Portal content when modal is open -->\n    <tgui-root-renderer *ngIf=\"isOpen()\">\n      <!-- Overlay -->\n      <div \n        *ngIf=\"!overlayComponent(); else customOverlay\"\n        [class]=\"overlayClasses()\"\n        [style]=\"overlayStyles()\"\n        (click)=\"handleOverlayClick()\"\n      ></div>\n      \n      <ng-template #customOverlay>\n        <ng-container \n          [ngTemplateOutlet]=\"overlayComponent()!\"\n          (click)=\"handleOverlayClick()\"\n        ></ng-container>\n      </ng-template>\n\n      <!-- Modal Content -->\n      <tgui-touch\n        #touchElement\n        [class]=\"contentClasses()\"\n        [style]=\"contentStyles()\"\n        (onMoveY)=\"handleDrag($event)\"\n        (onEnd)=\"handleDragEnd($event)\"\n        (onStart)=\"handleDragStart($event)\"\n        [attr.role]=\"'dialog'\"\n        [attr.aria-modal]=\"'true'\"\n        [attr.aria-hidden]=\"!isOpen()\"\n        tabindex=\"-1\"\n      >\n        <!-- Header with drag handle -->\n        <ng-container *ngIf=\"header()\">\n          <ng-container [ngTemplateOutlet]=\"header()!\"></ng-container>\n        </ng-container>\n        \n        <!-- Body -->\n        <div class=\"modal-body\" #bodyElement>\n          <ng-content></ng-content>\n        </div>\n      </tgui-touch>\n    </tgui-root-renderer>\n  `,\n  styles: [`\n    :host {\n      display: contents;\n    }\n\n    .modal-overlay {\n      position: fixed;\n      inset: 0;\n      z-index: 999;\n      opacity: 0;\n      transition: opacity 300ms ease;\n      background: rgba(0, 0, 0, 0.4);\n    }\n\n    .modal-overlay--open {\n      opacity: 1;\n    }\n\n    .modal-content {\n      position: fixed;\n      bottom: 0;\n      left: 0;\n      right: 0;\n      max-height: 96%;\n      border-top-left-radius: 16px;\n      border-top-right-radius: 16px;\n      display: flex;\n      flex-direction: column;\n      outline: none;\n      background-color: var(--tgui--bg_color);\n      z-index: var(--tgui--z_index--overlay, 1000);\n      transform: translateY(100%);\n      transition: transform 300ms cubic-bezier(0.32, 0.72, 0, 1);\n      touch-action: none;\n      user-select: none;\n    }\n\n    .modal-content--open {\n      transform: translateY(0);\n    }\n\n    .modal-content--dragging {\n      transition: none;\n    }\n\n    .modal-content--closing {\n      transition: transform 300ms cubic-bezier(0.32, 0.72, 0, 1);\n      transform: translateY(100%);\n    }\n\n    .modal-body {\n      overflow-y: auto;\n      padding-bottom: var(--tgui--safe_area_inset_bottom, env(safe-area-inset-bottom));\n      flex: 1;\n    }\n\n    /* iOS specific styles */\n    :host-context(.tgui-platform-ios) .modal-content {\n      border-top-left-radius: 10px;\n      border-top-right-radius: 10px;\n    }\n  `],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'attr.data-refresh-platform': 'true'\n  }\n})\nexport class ModalComponent implements OnInit, OnDestroy, AfterViewInit {\n  // Static sub-components for compound component pattern\n  static Header = ModalHeaderComponent;\n  static Close = ModalCloseComponent;\n  static Overlay = ModalOverlayComponent;\n\n  // Services\n  private portalService = inject(PortalService);\n  private platformService = inject(PlatformService);\n  private themeService = inject(ThemeService);\n\n  // ViewChild references\n  @ViewChild('touchElement') touchElement?: ElementRef<HTMLElement>;\n  @ViewChild('bodyElement') bodyElement?: ElementRef<HTMLElement>;\n\n  // Inputs\n  open = input<boolean>(false);\n  header = input<TemplateRef<any> | null>(null);\n  overlayComponent = input<TemplateRef<any> | null>(null);\n  trigger = input<TemplateRef<any> | null>(null);\n  nested = input<boolean>(false);\n  closeThreshold = input<number>(0.5);\n  scrollLockTimeout = input<number>(500);\n  modal = input<boolean>(true);\n  preventScrollRestoration = input<boolean>(true);\n  snapPoints = input<(number | string)[]>([]);\n  fadeFromIndex = input<number | null>(null);\n  dismissible = input<boolean>(true);\n\n  // Outputs\n  openChange = output<boolean>();\n  animationEnd = output<{ open: boolean }>();\n\n  // Internal state\n  private internalOpen = signal<boolean>(false);\n  private isDragging = signal<boolean>(false);\n  private dragOffset = signal<number>(0);\n  private isAnimating = signal<boolean>(false);\n  private lastScrollTime = signal<number>(0);\n  private hasBeenOpened = signal<boolean>(false);\n\n  // Computed properties\n  readonly isOpenSignal = computed(() => {\n    const shouldBeOpen = this.open() || this.internalOpen();\n    if (shouldBeOpen && !this.hasBeenOpened()) {\n      // Mark as opened to trigger animation\n      setTimeout(() => this.hasBeenOpened.set(true), 10);\n    }\n    return shouldBeOpen;\n  });\n\n  // Getter method for template access\n  isOpen(): boolean {\n    return this.isOpenSignal();\n  }\n  \n  readonly contentClasses = computed(() => ({\n    'modal-content': true,\n    'modal-content--open': this.isOpenSignal() && this.hasBeenOpened() && !this.isDragging() && !this.isAnimating(),\n    'modal-content--dragging': this.isDragging(),\n    'modal-content--closing': this.isAnimating()\n  }));\n\n  readonly overlayClasses = computed(() => ({\n    'modal-overlay': true,\n    'modal-overlay--open': this.isOpenSignal() && this.hasBeenOpened()\n  }));\n\n  readonly contentStyles = computed(() => {\n    const styles: Record<string, any> = {};\n    \n    if (this.isDragging()) {\n      const offset = Math.max(0, this.dragOffset());\n      styles['transform'] = `translateY(${offset}px)`;\n      styles['transition'] = 'none';\n    }\n    \n    return styles;\n  });\n\n  readonly overlayStyles = computed(() => {\n    const [r, g, b] = this.getBackgroundColor();\n    return {\n      background: `rgba(${r}, ${g}, ${b}, 0.4)`\n    };\n  });\n\n  constructor() {\n    // Handle open state changes\n    effect(() => {\n      const newOpen = this.open();\n      if (newOpen !== this.internalOpen()) {\n        if (newOpen) {\n          this.openModal();\n        } else {\n          this.closeModal();\n        }\n      }\n    });\n\n    // Handle body scroll lock\n    effect(() => {\n      if (this.isOpen() && this.modal()) {\n        document.body.style.overflow = 'hidden';\n        document.body.style.paddingRight = this.getScrollbarWidth() + 'px';\n      } else {\n        document.body.style.overflow = '';\n        document.body.style.paddingRight = '';\n      }\n    });\n  }\n\n  ngOnInit(): void {\n    // Listen for modal-close events from child components\n    document.addEventListener('modal-close', this.handleModalCloseEvent.bind(this));\n  }\n\n  ngAfterViewInit(): void {\n    // Focus management\n    if (this.isOpen() && this.touchElement?.nativeElement) {\n      this.touchElement.nativeElement.focus();\n    }\n  }\n\n  ngOnDestroy(): void {\n    // Clean up body styles\n    document.body.style.overflow = '';\n    document.body.style.paddingRight = '';\n    \n    // Remove event listener\n    document.removeEventListener('modal-close', this.handleModalCloseEvent.bind(this));\n  }\n\n  // Handle modal-close events from child components\n  private handleModalCloseEvent(event: Event): void {\n    if (event instanceof CustomEvent && this.isOpen()) {\n      this.closeModal();\n    }\n  }\n\n  // Keyboard event handling\n  @HostListener('document:keydown', ['$event'])\n  handleKeyDown(event: KeyboardEvent): void {\n    if (event.key === 'Escape' && this.isOpen() && this.dismissible()) {\n      event.preventDefault();\n      this.closeModal();\n    }\n  }\n\n  // Event handlers\n  handleTriggerClick(): void {\n    this.openModal();\n  }\n\n  handleOverlayClick(): void {\n    if (this.dismissible()) {\n      this.closeModal();\n    }\n  }\n\n  handleDragStart(gesture: TouchEvent): void {\n    // Check if we should allow dragging\n    if (!this.dismissible() || this.isScrollLocked()) {\n      return;\n    }\n\n    this.isDragging.set(true);\n  }\n\n  handleDrag(gesture: TouchEvent): void {\n    if (!this.isDragging() || !this.dismissible()) {\n      return;\n    }\n\n    // Only allow downward dragging\n    const offset = Math.max(0, gesture.shiftY);\n    this.dragOffset.set(offset);\n  }\n\n  handleDragEnd(gesture: TouchEvent): void {\n    if (!this.isDragging()) {\n      return;\n    }\n\n    this.isDragging.set(false);\n    \n    const offset = this.dragOffset();\n    const threshold = (this.touchElement?.nativeElement.offsetHeight || 300) * this.closeThreshold();\n    \n    // Check velocity for momentum-based closing\n    const velocity = Math.abs(gesture.shiftY) / Math.max(gesture.duration, 1);\n    const shouldClose = offset > threshold || velocity > 0.5;\n\n    if (shouldClose && this.dismissible()) {\n      this.closeModal();\n    } else {\n      // Reset position\n      this.dragOffset.set(0);\n    }\n  }\n\n  // Public methods\n  openModal(): void {\n    this.internalOpen.set(true);\n    this.isAnimating.set(false);\n    this.openChange.emit(true);\n  }\n\n  closeModal(): void {\n    this.isAnimating.set(true);\n    this.internalOpen.set(false);\n    this.openChange.emit(false);\n    \n    // Reset state after animation\n    setTimeout(() => {\n      this.isAnimating.set(false);\n      this.dragOffset.set(0);\n      this.hasBeenOpened.set(false);\n      this.animationEnd.emit({ open: false });\n    }, 300);\n  }\n\n  // Private methods\n  private isScrollLocked(): boolean {\n    const now = Date.now();\n    const lastScroll = this.lastScrollTime();\n    return now - lastScroll < this.scrollLockTimeout();\n  }\n\n  private getBackgroundColor(): [number, number, number] {\n    // Default colors\n    const DEFAULT_LIGHT_RGB: [number, number, number] = [255, 255, 255];\n    const DEFAULT_DARK_RGB: [number, number, number] = [33, 33, 33];\n\n    // Fallback to theme service\n    return this.themeService.appearance() === 'dark' \n      ? DEFAULT_DARK_RGB \n      : DEFAULT_LIGHT_RGB;\n  }\n\n  private getScrollbarWidth(): number {\n    // Create temporary div to measure scrollbar width\n    const outer = document.createElement('div');\n    outer.style.visibility = 'hidden';\n    outer.style.overflow = 'scroll';\n    (outer.style as any).msOverflowStyle = 'scrollbar'; // IE specific property\n    document.body.appendChild(outer);\n\n    const inner = document.createElement('div');\n    outer.appendChild(inner);\n\n    const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;\n    \n    document.body.removeChild(outer);\n    return scrollbarWidth;\n  }\n} ","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class TguiService {\n\n  constructor() { }\n}\n","import { Component } from '@angular/core';\nimport { RootComponent } from './components/utils/tgui-root/tgui-root.component';\n\n/**\n * @deprecated Use TGUIRootComponent instead\n */\n@Component({\n  selector: 'tgui-root',\n  standalone: true,\n  imports: [RootComponent],\n  template: `\n    <tgui-root>\n      <ng-content></ng-content>\n    </tgui-root>\n  `,\n})\nexport class TguiComponent {\n  // This component is just a wrapper for backward compatibility\n}\n","/*\n * Public API Surface of tgui\n */\n\n// ===================================\n// CORE SERVICES & TYPES\n// ===================================\nexport {\n  ThemeService,\n  PlatformService,\n  PortalService,\n  RippleService,\n  TelegramService\n} from './lib/services';\n\nexport type {\n  AppearanceType,\n  PlatformType,\n  RippleWave\n} from './lib/services';\n\n// ===================================\n// UTILITY FUNCTIONS & SERVICES\n// ===================================\nexport {\n  applyTheme,\n  setupSystemThemeDetection,\n  SystemThemeService\n} from './lib/utils';\n\n// Export all utility functions\nexport * from './lib/utils/has-node';\nexport * from './lib/utils/theme-helper';\nexport * from './lib/utils/class-names';\nexport * from './lib/utils/function';\nexport * from './lib/utils/chunk';\n\n// ===================================\n// DIRECTIVES\n// ===================================\nexport {\n  ThemeDirective,\n  PortalOutletDirective,\n  HorizontalScrollDirective,\n  VisuallyHiddenDirective\n} from './lib/directives';\n\n// ===================================\n// UTILITY COMPONENTS\n// ===================================\nexport {\n  TappableComponent,\n  RippleComponent,\n  RootPortalComponent,\n  RootComponent,\n  TouchComponent,\n  RootRendererComponent\n} from './lib/components/utils';\n\n// ===================================\n// BLOCK COMPONENTS\n// ===================================\nexport {\n  // Core blocks\n  BadgeComponent,\n  ButtonComponent,\n  CardComponent,\n  SectionComponent,\n  \n  // Avatar components\n  AvatarComponent,\n  AvatarStackComponent,\n  AvatarAcronymComponent,\n  AvatarBadgeComponent,\n  // Icon components\n  IconButtonComponent,\n  IconContainerComponent,\n  \n  // Image components\n  ImageComponent,\n  ImageBadgeComponent,\n  \n  // List and navigation\n  ListComponent,\n  CellComponent,\n  ButtonCellComponent,\n  \n  // Layout blocks\n  PlaceholderComponent,\n  StepsComponent,\n  TimelineComponent,\n  TimelineItemComponent,\n  \n  // Interactive blocks\n  AccordionComponent,\n  AccordionSummaryComponent,\n  AccordionContentComponent,\n  InlineButtonsComponent,\n  InlineButtonsItemComponent,\n  \n  // Content blocks\n  BlockquoteComponent,\n  BannerComponent\n} from './lib/components/blocks';\n\n// Export additional types and interfaces from blocks\nexport * from './lib/components/blocks/cell';\nexport * from './lib/components/blocks/blockquote';\nexport * from './lib/components/blocks/banner';\n\n// ===================================\n// FORM COMPONENTS\n// ===================================\nexport {\n  // Basic form controls\n  InputComponent,\n  TextareaComponent,\n  FormInputComponent,\n  FormInputTitleComponent,\n  \n  // Selection controls\n  CheckboxComponent,\n  RadioComponent,\n  SwitchComponent,\n  SelectComponent,\n  \n  // Specialized inputs\n  ColorInputComponent,\n  FileInputComponent,\n  RatingComponent,\n  \n  // Pin input components\n  PinInputComponent,\n  PinInputButtonComponent,\n  PinInputCellComponent,\n  PinInputService,\n  \n  // Chip component\n  ChipComponent\n} from './lib/components/form';\n\n// Export additional types and services from forms\nexport * from './lib/components/form/multiselectable';\nexport * from './lib/components/form/pin-input';\nexport * from './lib/components/form/rating';\nexport * from './lib/components/form/select';\nexport * from './lib/components/form/switch';\n\n// ===================================\n// FEEDBACK COMPONENTS\n// ===================================\nexport {\n  SpinnerComponent,\n  SpoilerComponent,\n  SkeletonComponent,\n  ProgressComponent,\n  CircularProgressComponent\n} from './lib/components/feedback';\n\n// Export additional types and services from feedback\nexport * from './lib/components/feedback/snackbar';\nexport * from './lib/components/feedback/spoiler';\nexport * from './lib/components/feedback/progress';\nexport * from './lib/components/feedback/circular-progress';\n\n// ===================================\n// LAYOUT COMPONENTS\n// ===================================\nexport {\n  FixedLayoutComponent,\n  TabbarComponent,\n  TabbarItemComponent\n} from './lib/components/layout';\n\n// ===================================\n// NAVIGATION COMPONENTS\n// ===================================\n// Export all navigation components (using wildcard for complex exports)\nexport * from './lib/components/navigation/breadcrumbs/breadcrumbs-item.component';\nexport * from './lib/components/navigation/breadcrumbs/breadcrumbs.component';\nexport * from './lib/components/navigation/breadcrumbs/icons';\nexport * from './lib/components/navigation/tabs-list';\nexport * from './lib/components/navigation/segmented-control';\nexport * from './lib/components/navigation/pagination';\nexport * from './lib/components/navigation/compact-pagination';\nexport * from './lib/components/navigation/link/link.component';\n\n// ===================================\n// OVERLAY COMPONENTS\n// ===================================\nexport * from './lib/components/overlays/popper';\nexport * from './lib/components/overlays/tooltip';\nexport * from './lib/components/overlays/modal';\n\n// ===================================\n// TYPOGRAPHY COMPONENTS\n// ===================================\nexport {\n  TypographyComponent,\n  CaptionComponent,\n  HeadlineComponent,\n  LargeTitleComponent,\n  SubheadlineComponent,\n  TextComponent,\n  TitleComponent\n} from './lib/components/typography';\n\n// ===================================\n// MISCELLANEOUS COMPONENTS\n// ===================================\nexport {\n  DividerComponent\n} from './lib/components/misc';\n\n// ===================================\n// ICONS\n// ===================================\n// Icon base and interfaces\nexport * from './lib/icons/icon.interface';\nexport * from './lib/icons/icon-base.component';\nexport * from './lib/icons/dynamic-icon.component';\n\n// All icon sizes\nexport * from './lib/icons/icon12';\nexport * from './lib/icons/icon16';\nexport * from './lib/icons/icon20';\nexport * from './lib/icons/icon24';\nexport * from './lib/icons/icon28';\nexport * from './lib/icons/icon32';\nexport * from './lib/icons/icon36';\n\n// Icon directives\nexport * from './lib/icons/directives';\n\n// ===================================\n// LEGACY SUPPORT & MAIN SERVICE\n// ===================================\n// The library's main service\nexport * from './lib/tgui.service';\n\n// Main component (deprecated but still exported for backward compatibility)\nexport * from './lib/tgui.component';\n\n// Legacy icon exports for backward compatibility\nexport * from './lib/icons/icon20/tgui-icon20-chevron-down';\nexport * from './lib/icons/icon20/tgui-icon20-copy';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}