{"version":3,"file":"camp2gether-c2g-ui.mjs","sources":["../../../projects/c2g-ui/src/lib/c2g-ui.ts","../../../projects/c2g-ui/src/lib/icons/provide-c2g-icons.ts","../../../projects/c2g-ui/src/lib/avatar/avatar.component.ts","../../../projects/c2g-ui/src/lib/avatar/avatar.component.html","../../../projects/c2g-ui/src/lib/button/button.component.ts","../../../projects/c2g-ui/src/lib/badge/badge.component.ts","../../../projects/c2g-ui/src/lib/chip/chip.component.ts","../../../projects/c2g-ui/src/lib/checkbox/checkbox.component.ts","../../../projects/c2g-ui/src/lib/loader/loader.component.ts","../../../projects/c2g-ui/src/lib/lottie-loader/lottie-loader.presets.ts","../../../projects/c2g-ui/src/lib/lottie-loader/lottie-loader.component.ts","../../../projects/c2g-ui/src/lib/skeleton/skeleton.component.ts","../../../projects/c2g-ui/src/lib/alert/alert.component.ts","../../../projects/c2g-ui/src/lib/progress/progress.component.ts","../../../projects/c2g-ui/src/lib/input/input.component.ts","../../../projects/c2g-ui/src/lib/radio-group/radio-group.component.ts","../../../projects/c2g-ui/src/lib/select/select-option/select-option.component.ts","../../../projects/c2g-ui/src/lib/select/select-panel/select-panel.component.ts","../../../projects/c2g-ui/src/lib/select/select.component.ts","../../../projects/c2g-ui/src/lib/switch/switch.component.ts","../../../projects/c2g-ui/src/lib/tag/tag.component.ts","../../../projects/c2g-ui/src/lib/textarea/textarea.component.ts","../../../projects/c2g-ui/src/lib/modal/modal.component.ts","../../../projects/c2g-ui/src/lib/modal/modal.component.html","../../../projects/c2g-ui/src/lib/toast/toast.service.ts","../../../projects/c2g-ui/src/lib/toast/toast-container.component.ts","../../../projects/c2g-ui/src/lib/toast/toast-container.component.html","../../../projects/c2g-ui/src/lib/confirm-dialog/confirm-dialog.component.ts","../../../projects/c2g-ui/src/lib/confirm-dialog/confirm-dialog.component.html","../../../projects/c2g-ui/src/lib/date-range-picker/date-range-picker.component.ts","../../../projects/c2g-ui/src/lib/date-range-picker/date-range-picker.component.html","../../../projects/c2g-ui/src/lib/stepper/stepper.component.ts","../../../projects/c2g-ui/src/lib/packing-gap-banner/packing-gap-banner.component.ts","../../../projects/c2g-ui/src/lib/dropdown-menu/dropdown-menu.component.ts","../../../projects/c2g-ui/src/lib/popup/popup.component.ts","../../../projects/c2g-ui/src/lib/weather-widget/weather-widget.component.ts","../../../projects/c2g-ui/src/lib/date-preset-card/date-preset-card.component.ts","../../../projects/c2g-ui/src/public-api.ts","../../../projects/c2g-ui/src/camp2gether-c2g-ui.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n  selector: 'c2g-c2g-ui',\n  imports: [],\n  template: `\n    <p>\n      c2g-ui works!\n    </p>\n  `,\n  styles: ``,\n})\nexport class C2gUi {\n\n}\n","import { EnvironmentProviders, makeEnvironmentProviders, inject, provideAppInitializer } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\n\nexport interface C2gIconsOptions {\n  /**\n   * Which Material Icons font variants to register.\n   * Defaults to all four variants.\n   */\n  variants?: Array<'filled' | 'outlined' | 'round' | 'sharp'>;\n}\n\nconst VARIANT_MAP: Record<string, { fontClass: string; alias: string }> = {\n  filled:   { fontClass: 'material-icons',         alias: 'material-icons' },\n  outlined: { fontClass: 'material-icons-outlined', alias: 'material-icons-outlined' },\n  round:    { fontClass: 'material-icons-round',    alias: 'material-icons-round' },\n  sharp:    { fontClass: 'material-icons-sharp',    alias: 'material-icons-sharp' },\n};\n\n/**\n * Registers Material Icons font variants with MatIconRegistry.\n *\n * Add to your app config:\n * ```ts\n * providers: [provideC2gIcons()]\n * ```\n *\n * Then use in templates:\n * ```html\n * <mat-icon>hiking</mat-icon>\n * <mat-icon fontSet=\"material-icons-outlined\">map</mat-icon>\n * <mat-icon fontSet=\"material-icons-round\">star</mat-icon>\n * ```\n *\n * The consuming app must load the font CSS — either via Google Fonts or self-hosted:\n * ```html\n * <link href=\"https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined|Material+Icons+Round|Material+Icons+Sharp\" rel=\"stylesheet\">\n * ```\n */\nexport function provideC2gIcons(options?: C2gIconsOptions): EnvironmentProviders {\n  const variants = options?.variants ?? ['filled', 'outlined', 'round', 'sharp'];\n\n  return makeEnvironmentProviders([\n    provideAppInitializer(() => {\n      const registry = inject(MatIconRegistry);\n      for (const variant of variants) {\n        const { fontClass, alias } = VARIANT_MAP[variant];\n        registry.registerFontClassAlias(alias, fontClass);\n      }\n      // Set outlined as the default font set for c2g components\n      registry.setDefaultFontSetClass('material-icons-outlined');\n    }),\n  ]);\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { C2gAvatarBadge, C2gAvatarSize, C2gAvatarStatusTone } from './avatar.models';\n\n@Component({\n  selector: 'c2g-avatar',\n  standalone: true,\n  templateUrl: './avatar.component.html',\n  styleUrls: ['./avatar.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AvatarComponent {\n  readonly name = input('');\n  readonly initials = input('');\n  readonly imageUrl = input<string | null>(null);\n  readonly ariaLabel = input('');\n\n  readonly size = input<C2gAvatarSize>('md');\n  readonly backgroundColor = input('');\n  readonly textColor = input('');\n\n  readonly ringTone = input<C2gAvatarStatusTone>('none');\n  readonly ringColor = input('');\n  readonly clickable = input(false);\n  readonly disabled = input(false);\n\n  readonly badge = input<C2gAvatarBadge | null>(null);\n  readonly avatarClick = output<void>();\n\n  readonly resolvedInitials = computed(() => {\n    const explicitInitials = this.initials().trim();\n    if (explicitInitials) {\n      return explicitInitials.slice(0, 3).toUpperCase();\n    }\n\n    const name = this.name().trim();\n    if (!name) {\n      return '?';\n    }\n\n    return name\n      .split(/\\s+/)\n      .slice(0, 2)\n      .map(part => part[0])\n      .join('')\n      .toUpperCase();\n  });\n\n  readonly resolvedAriaLabel = computed(() => this.ariaLabel().trim() || this.name().trim() || null);\n\n  readonly hasImage = computed(() => !!this.imageUrl());\n\n  readonly ringStyle = computed(() => {\n    if (this.ringTone() !== 'custom' || !this.ringColor().trim()) {\n      return null;\n    }\n    return this.ringColor();\n  });\n\n  readonly badgeBackground = computed(() => {\n    const badge = this.badge();\n    if (!badge) {\n      return null;\n    }\n    if (badge.tone === 'custom' && badge.backgroundColor?.trim()) {\n      return badge.backgroundColor;\n    }\n    return null;\n  });\n\n  readonly badgeColor = computed(() => {\n    const badge = this.badge();\n    if (!badge) {\n      return null;\n    }\n    if (badge.tone === 'custom' && badge.color?.trim()) {\n      return badge.color;\n    }\n    return null;\n  });\n\n  onAvatarClick(): void {\n    if (!this.clickable() || this.disabled()) {\n      return;\n    }\n    this.avatarClick.emit();\n  }\n\n  onAvatarKeydown(event: KeyboardEvent): void {\n    if (!this.clickable() || this.disabled()) {\n      return;\n    }\n\n    if (event.key === 'Enter' || event.key === ' ') {\n      event.preventDefault();\n      this.avatarClick.emit();\n    }\n  }\n}","<span\n  class=\"c2g-avatar\"\n  [class.c2g-avatar--clickable]=\"clickable() && !disabled()\"\n  [class.c2g-avatar--disabled]=\"disabled()\"\n  [class.c2g-avatar--sm]=\"size() === 'sm'\"\n  [class.c2g-avatar--md]=\"size() === 'md'\"\n  [class.c2g-avatar--lg]=\"size() === 'lg'\"\n  [class.c2g-avatar--ring-neutral]=\"ringTone() === 'neutral'\"\n  [class.c2g-avatar--ring-success]=\"ringTone() === 'success'\"\n  [class.c2g-avatar--ring-danger]=\"ringTone() === 'danger'\"\n  [class.c2g-avatar--ring-muted]=\"ringTone() === 'muted'\"\n  [class.c2g-avatar--ring-custom]=\"ringTone() === 'custom'\"\n  [style.--c2g-avatar-bg]=\"backgroundColor() || null\"\n  [style.--c2g-avatar-color]=\"textColor() || null\"\n  [style.--c2g-avatar-ring]=\"ringStyle()\"\n  [attr.aria-label]=\"resolvedAriaLabel()\"\n  [attr.aria-disabled]=\"clickable() && disabled() ? 'true' : null\"\n  [attr.role]=\"clickable() ? 'button' : 'img'\"\n  [attr.tabindex]=\"clickable() && !disabled() ? 0 : null\"\n  (click)=\"onAvatarClick()\"\n  (keydown)=\"onAvatarKeydown($event)\">\n  @if (hasImage()) {\n    <img class=\"c2g-avatar__image\" [src]=\"imageUrl()!\" [alt]=\"resolvedAriaLabel() ?? ''\" />\n  } @else {\n    <span class=\"c2g-avatar__initials\">{{ resolvedInitials() }}</span>\n  }\n\n  @if (badge()) {\n    <span\n      class=\"c2g-avatar__badge\"\n      [class.c2g-avatar__badge--neutral]=\"badge()!.tone === 'neutral'\"\n      [class.c2g-avatar__badge--success]=\"badge()!.tone === 'success'\"\n      [class.c2g-avatar__badge--danger]=\"badge()!.tone === 'danger'\"\n      [class.c2g-avatar__badge--muted]=\"badge()!.tone === 'muted'\"\n      [class.c2g-avatar__badge--custom]=\"badge()!.tone === 'custom'\"\n      [style.--c2g-avatar-badge-bg]=\"badgeBackground()\"\n      [style.--c2g-avatar-badge-color]=\"badgeColor()\"\n      [attr.aria-label]=\"badge()!.ariaLabel || null\">\n      @if (badge()!.icon) {\n        <span class=\"c2g-avatar__badge-icon\" aria-hidden=\"true\">{{ badge()!.icon }}</span>\n      } @else if (badge()!.text) {\n        <span class=\"c2g-avatar__badge-text\" aria-hidden=\"true\">{{ badge()!.text }}</span>\n      }\n    </span>\n  }\n</span>","import { Component, input, output, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nexport type ButtonVariant =\n  | 'primary'\n  | 'secondary'\n  | 'ghost'\n  | 'destructive'\n  | 'icon'\n  | 'outlined'\n  | 'text'\n  | 'elevated'\n  | 'tonal'\n  | 'fab'\n  | 'fab-mini'\n  | 'chip';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\nexport type IconPosition = 'start' | 'end';\n\n@Component({\n  selector: 'c2g-button',\n  standalone: true,\n  imports: [MatIconModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <button\n      [type]=\"type()\"\n      [disabled]=\"isInteractionDisabled()\"\n      [class]=\"buttonClasses()\"\n      [attr.aria-busy]=\"loading() ? 'true' : null\"\n      [attr.aria-disabled]=\"isInteractionDisabled() ? 'true' : null\"\n      [attr.aria-label]=\"computedAriaLabel()\"\n      (click)=\"clicked.emit($event)\"\n    >\n      @if (showLeadingSpinner()) {\n        <span class=\"c2g-btn__spinner\" aria-hidden=\"true\"></span>\n      }\n\n      @if (showLeadingIcon()) {\n        <mat-icon class=\"c2g-btn__icon\" aria-hidden=\"true\"\n          [style.font-size]=\"iconSize() || null\"\n          [style.width]=\"iconSize() || null\"\n          [style.height]=\"iconSize() || null\"\n          [style.color]=\"iconColor() || null\"\n        >{{ icon() }}</mat-icon>\n      }\n\n      @if (badge() !== null) {\n        <span class=\"c2g-btn__badge\" aria-hidden=\"true\">{{ badge() }}</span>\n      }\n\n      @if (!iconOnly()) {\n        <span class=\"c2g-btn__content\">\n          <ng-content />\n        </span>\n      }\n\n      @if (showTrailingIcon()) {\n        <mat-icon class=\"c2g-btn__icon\" aria-hidden=\"true\"\n          [style.font-size]=\"iconSize() || null\"\n          [style.width]=\"iconSize() || null\"\n          [style.height]=\"iconSize() || null\"\n          [style.color]=\"iconColor() || null\"\n        >{{ icon() }}</mat-icon>\n      }\n\n      @if (showTrailingSpinner()) {\n        <span class=\"c2g-btn__spinner\" aria-hidden=\"true\"></span>\n      }\n    </button>\n  `,\n  styles: `\n    :host {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n    }\n    button {\n      display: inline-flex;\n      align-items: center;\n      justify-content: var(--c2g-btn-justify, center);\n      gap: var(--c2g-space-2, 0.5rem);\n      border: none;\n      cursor: pointer;\n      min-height: 2rem;\n      width: var(--c2g-btn-width, auto);\n      font-weight: var(--c2g-font-weight-semibold, 600);\n      font-family: var(--c2g-font-family-base, \"Inter\", \"Segoe UI\", sans-serif);\n      line-height: 1;\n      box-sizing: border-box;\n      border-radius: var(--c2g-radius-sm, 0.375rem);\n      transition:\n        background-color var(--c2g-motion-duration-base, 200ms) var(--c2g-motion-ease-standard, ease),\n        opacity var(--c2g-motion-duration-fast, 120ms) var(--c2g-motion-ease-standard, ease),\n        box-shadow var(--c2g-motion-duration-fast, 120ms) var(--c2g-motion-ease-standard, ease);\n    }\n    button:focus-visible {\n      outline: none;\n      box-shadow: 0 0 0 3px color-mix(in srgb, var(--c2g-color-primary) 30%, transparent);\n    }\n    button:disabled {\n      opacity: 0.5;\n      cursor: not-allowed;\n    }\n    .c2g-btn--loading {\n      cursor: wait;\n    }\n\n    /* ── Sizes ─────────────────────────────────────────────────────────── */\n    .c2g-btn--sm {\n      padding: calc(var(--c2g-space-1, 0.25rem) + var(--c2g-space-1, 0.25rem)) var(--c2g-space-3, 0.75rem);\n      font-size: var(--c2g-font-size-xs, 0.75rem);\n    }\n    .c2g-btn--md {\n      padding: calc(var(--c2g-space-2, 0.5rem) + var(--c2g-space-1, 0.25rem)) var(--c2g-space-5, 1.25rem);\n      font-size: var(--c2g-font-size-sm, 0.875rem);\n    }\n    .c2g-btn--lg {\n      padding: var(--c2g-space-4, 1rem) calc(var(--c2g-space-5, 1.25rem) + var(--c2g-space-2, 0.5rem));\n      font-size: var(--c2g-font-size-md, 1rem);\n    }\n\n    /* ── Primary (filled) ──────────────────────────────────────────────── */\n    .c2g-btn--primary {\n      background: var(--c2g-color-primary);\n      color: var(--c2g-theme-on-primary, #fff);\n    }\n    .c2g-btn--primary:hover:not(:disabled) {\n      background: color-mix(in srgb, var(--c2g-color-primary) 85%, black);\n    }\n\n    /* ── Secondary (surface fill) ─────────────────────────────────────── */\n    .c2g-btn--secondary {\n      background: var(--c2g-color-secondary-container);\n      color: var(--c2g-color-on-secondary-container, var(--c2g-color-text-primary));\n    }\n    .c2g-btn--secondary:hover:not(:disabled) {\n      background: color-mix(in srgb, var(--c2g-color-secondary-container) 85%, var(--c2g-color-on-secondary-container, var(--c2g-color-text-primary)));\n    }\n\n    /* ── Ghost (transparent, primary text) ────────────────────────────── */\n    .c2g-btn--ghost {\n      background: transparent;\n      color: var(--c2g-color-primary);\n    }\n    .c2g-btn--ghost:hover:not(:disabled) {\n      background: var(--c2g-color-primary-container);\n    }\n\n    /* ── Destructive ──────────────────────────────────────────────────── */\n    .c2g-btn--destructive {\n      background: var(--c2g-color-error);\n      color: var(--c2g-color-on-error, #fff);\n    }\n    .c2g-btn--destructive:hover:not(:disabled) {\n      background: color-mix(in srgb, var(--c2g-color-error) 85%, black);\n    }\n\n    /* ── Icon (circular icon button) ──────────────────────────────────── */\n    .c2g-btn--icon {\n      background: transparent;\n      color: var(--c2g-color-text-primary);\n      border: 1px solid var(--c2g-color-border-soft);\n      padding-inline: var(--c2g-space-2, 0.5rem);\n    }\n    .c2g-btn--icon:hover:not(:disabled) {\n      background: color-mix(in srgb, currentColor 12%, transparent);\n    }\n    .c2g-btn--icon-only {\n      padding: 0;\n      width: 2.5rem;\n      aspect-ratio: 1;\n      border-radius: 50%;\n    }\n    .c2g-btn--icon-only--borderless {\n      border-color: transparent;\n    }\n    .c2g-btn--sm.c2g-btn--icon-only { width: 2rem; }\n    .c2g-btn--lg.c2g-btn--icon-only { width: 3rem; }\n\n    /* ── Outlined (border, no fill) ───────────────────────────────────── */\n    .c2g-btn--outlined {\n      background: transparent;\n      color: var(--c2g-color-primary);\n      border: 1.5px solid var(--c2g-color-primary);\n    }\n    .c2g-btn--outlined:hover:not(:disabled) {\n      background: var(--c2g-color-primary-container);\n    }\n\n    /* ── Text (label only, no border/fill) ────────────────────────────── */\n    .c2g-btn--text {\n      background: transparent;\n      color: var(--c2g-color-primary);\n      padding-inline: var(--c2g-space-2, 0.5rem);\n    }\n    .c2g-btn--text:hover:not(:disabled) {\n      background: var(--c2g-color-primary-container);\n    }\n\n    /* ── Elevated (surface + shadow) ──────────────────────────────────── */\n    .c2g-btn--elevated {\n      background: var(--c2g-theme-surface);\n      color: var(--c2g-color-primary);\n      box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.10);\n    }\n    .c2g-btn--elevated:hover:not(:disabled) {\n      background: var(--c2g-theme-surface-container-low);\n      box-shadow: 0 3px 6px rgba(0, 0, 0, 0.15), 0 2px 4px rgba(0, 0, 0, 0.10);\n    }\n\n    /* ── Tonal (primary-container fill) ───────────────────────────────── */\n    .c2g-btn--tonal {\n      background: var(--c2g-color-primary-container);\n      color: var(--c2g-color-primary);\n    }\n    .c2g-btn--tonal:hover:not(:disabled) {\n      background: color-mix(in srgb, var(--c2g-color-primary-container) 80%, var(--c2g-color-primary));\n    }\n\n    /* ── FAB (floating action button) ─────────────────────────────────── */\n    .c2g-btn--fab {\n      background: var(--c2g-color-primary-container);\n      color: var(--c2g-color-primary);\n      border-radius: var(--c2g-radius-lg, 1rem);\n      padding: var(--c2g-space-4, 1rem);\n      box-shadow: 0 3px 8px rgba(0, 0, 0, 0.18), 0 1px 3px rgba(0, 0, 0, 0.12);\n      width: 3.5rem;\n      height: 3.5rem;\n    }\n    .c2g-btn--fab:hover:not(:disabled) {\n      background: color-mix(in srgb, var(--c2g-color-primary-container) 80%, var(--c2g-color-primary));\n      box-shadow: 0 6px 12px rgba(0, 0, 0, 0.18), 0 2px 4px rgba(0, 0, 0, 0.12);\n    }\n\n    /* ── FAB mini ─────────────────────────────────────────────────────── */\n    .c2g-btn--fab-mini {\n      background: var(--c2g-color-primary-container);\n      color: var(--c2g-color-primary);\n      border-radius: var(--c2g-radius-md, 0.75rem);\n      padding: var(--c2g-space-2, 0.5rem);\n      box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18), 0 1px 2px rgba(0, 0, 0, 0.12);\n      width: 2.5rem;\n      height: 2.5rem;\n    }\n    .c2g-btn--fab-mini:hover:not(:disabled) {\n      background: color-mix(in srgb, var(--c2g-color-primary-container) 80%, var(--c2g-color-primary));\n      box-shadow: 0 4px 8px rgba(0, 0, 0, 0.18), 0 2px 3px rgba(0, 0, 0, 0.12);\n    }\n\n    /* ── Chip ─────────────────────────────────────────────────────────── */\n    .c2g-btn--chip {\n      background: transparent;\n      color: var(--c2g-color-text-secondary);\n      border: 1.5px solid var(--c2g-color-border-soft, rgba(0,0,0,0.12));\n      border-radius: 999px;\n      padding: 7px 12px;\n      font-weight: 500;\n      gap: 5px;\n    }\n    .c2g-btn--chip:hover:not(:disabled) {\n      background: var(--c2g-theme-surface-container, rgba(0,0,0,0.05));\n      border-color: var(--c2g-color-border-medium, rgba(0,0,0,0.2));\n      color: var(--c2g-color-text-primary);\n    }\n    .c2g-btn--chip.c2g-btn--active {\n      background: color-mix(in srgb, var(--c2g-color-primary) 10%, transparent);\n      border-color: var(--c2g-color-primary);\n      color: var(--c2g-color-primary);\n    }\n    .c2g-btn--chip.c2g-btn--active:hover:not(:disabled) {\n      background: color-mix(in srgb, var(--c2g-color-primary) 16%, transparent);\n    }\n\n    /* ── Badge ────────────────────────────────────────────────────────── */\n    .c2g-btn__badge {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      min-width: 18px;\n      height: 18px;\n      padding: 0 4px;\n      border-radius: 999px;\n      background: color-mix(in srgb, var(--c2g-color-primary) 15%, transparent);\n      color: var(--c2g-color-primary);\n      font-size: 11px;\n      font-weight: 700;\n      line-height: 1;\n      flex-shrink: 0;\n    }\n    .c2g-btn--active .c2g-btn__badge {\n      background: var(--c2g-color-primary);\n      color: #fff;\n    }\n\n    /* ── Shared sub-elements ─────────────────────────────────────────── */\n    .c2g-btn__content {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      gap: inherit;\n      line-height: 1;\n    }\n    .c2g-btn__icon {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      width: 1em;\n      height: 1em;\n      font-size: 1.05em;\n      line-height: 1;\n      color: inherit;\n      fill: currentColor;\n    }\n    .c2g-btn__spinner {\n      width: 1em;\n      height: 1em;\n      border: 2px solid currentColor;\n      border-right-color: transparent;\n      border-radius: 999px;\n      animation: c2g-btn-spin 0.7s linear infinite;\n      display: inline-block;\n    }\n    @keyframes c2g-btn-spin {\n      from { transform: rotate(0deg); }\n      to { transform: rotate(360deg); }\n    }\n  `,\n})\nexport class ButtonComponent {\n  readonly variant = input<ButtonVariant>('primary');\n  readonly size = input<ButtonSize>('md');\n  readonly disabled = input(false);\n  readonly loading = input(false);\n  readonly icon = input('');\n  readonly iconPosition = input<IconPosition>('start');\n  readonly iconOnly = input(false);\n  readonly bordered = input(true);\n  readonly ariaLabel = input('');\n  readonly loadingAriaLabel = input('Loading');\n  readonly type = input<'button' | 'submit' | 'reset'>('button');\n  readonly badge = input<number | string | null>(null);\n  readonly active = input(false);\n  readonly iconSize = input('');\n  readonly iconColor = input('');\n  readonly clicked = output<MouseEvent>();\n\n  readonly isInteractionDisabled = computed(() => this.disabled() || this.loading());\n\n  readonly showLeadingSpinner = computed(\n    () => this.loading() && this.iconPosition() === 'start'\n  );\n\n  readonly showTrailingSpinner = computed(\n    () => this.loading() && this.iconPosition() === 'end'\n  );\n\n  readonly hasIcon = computed(() => this.icon().trim().length > 0);\n\n  readonly showLeadingIcon = computed(\n    () => this.hasIcon() && !this.loading() && this.iconPosition() === 'start'\n  );\n\n  readonly showTrailingIcon = computed(\n    () => this.hasIcon() && !this.loading() && this.iconPosition() === 'end'\n  );\n\n  readonly computedAriaLabel = computed(() => {\n    if (this.loading()) {\n      return this.loadingAriaLabel();\n    }\n    if (this.iconOnly()) {\n      return this.ariaLabel().trim() || 'Action';\n    }\n    return this.ariaLabel().trim() || null;\n  });\n\n  readonly buttonClasses = computed(() => {\n    const iconOnly = this.iconOnly();\n    const borderless = iconOnly && !this.bordered();\n    return [\n      `c2g-btn--${this.size()}`,\n      `c2g-btn--${this.variant()}`,\n      iconOnly ? 'c2g-btn--icon-only' : '',\n      borderless ? 'c2g-btn--icon-only--borderless' : '',\n      this.loading() ? 'c2g-btn--loading' : '',\n      this.active() ? 'c2g-btn--active' : '',\n    ].filter(Boolean).join(' ');\n  });\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nexport type BadgeTone = 'neutral' | 'accent' | 'info' | 'success' | 'warning' | 'danger';\nexport type BadgeVariant = 'solid' | 'subtle' | 'outline';\nexport type BadgeSize = 'sm' | 'md';\n\n@Component({\n  selector: 'c2g-badge',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <span\n      class=\"c2g-badge\"\n      [class]=\"classes()\"\n      [style.--c2g-badge-dot-color]=\"dotColor()\"\n      [attr.role]=\"dot() && resolvedAriaLabel() ? 'status' : null\"\n      [attr.aria-label]=\"resolvedAriaLabel()\"\n      [attr.aria-hidden]=\"dot() && !resolvedAriaLabel() ? 'true' : null\"\n    >\n      @if (dot()) {\n        <span class=\"c2g-badge__dot\" [class.c2g-badge__dot--pulse]=\"dotPulse()\" aria-hidden=\"true\"></span>\n      }\n      @if (!dot() || !dotOnly()) {\n        <span>{{ content() }}</span>\n      }\n    </span>\n  `,\n  styles: `\n    .c2g-badge {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      border-radius: 999px;\n      border: 1px solid transparent;\n      font-family: var(--c2g-font-family-base, \"Quicksand\", \"Segoe UI\", sans-serif);\n      font-weight: var(--c2g-font-weight-semibold, 600);\n      line-height: 1;\n      min-width: 1.25rem;\n    }\n    .c2g-badge--sm {\n      font-size: 0.6875rem;\n      padding: 0.16rem 0.4rem;\n      min-height: 1rem;\n    }\n    .c2g-badge--md {\n      font-size: var(--c2g-font-size-xs, 0.75rem);\n      padding: 0.22rem 0.5rem;\n      min-height: 1.125rem;\n    }\n    .c2g-badge__dot {\n      width: 0.5rem;\n      height: 0.5rem;\n      border-radius: 999px;\n      background: var(--c2g-badge-dot-color, currentColor);\n      margin-right: var(--c2g-space-1, 0.25rem);\n      flex: 0 0 auto;\n    }\n    .c2g-badge__dot--pulse {\n      animation: c2g-badge-dot-pulse 1.5s ease-in-out infinite;\n      transform-origin: center;\n    }\n    @keyframes c2g-badge-dot-pulse {\n      0% {\n        box-shadow: 0 0 0 0 color-mix(in srgb, var(--c2g-badge-dot-color, currentColor) 45%, transparent);\n        transform: scale(1);\n      }\n      70% {\n        box-shadow: 0 0 0 0.4rem color-mix(in srgb, var(--c2g-badge-dot-color, currentColor) 0%, transparent);\n        transform: scale(1.05);\n      }\n      100% {\n        box-shadow: 0 0 0 0 color-mix(in srgb, var(--c2g-badge-dot-color, currentColor) 0%, transparent);\n        transform: scale(1);\n      }\n    }\n\n    .c2g-badge--dot-only {\n      width: 1rem;\n      height: 1rem;\n      min-width: 1rem;\n      min-height: 1rem;\n      padding: 0;\n      border-radius: 50%;\n    }\n    .c2g-badge--dot-only.c2g-badge--sm {\n      width: 0.875rem;\n      height: 0.875rem;\n      min-width: 0.875rem;\n      min-height: 0.875rem;\n    }\n    .c2g-badge--dot-only.c2g-badge--md {\n      width: 1rem;\n      height: 1rem;\n      min-width: 1rem;\n      min-height: 1rem;\n    }\n    .c2g-badge--dot-only .c2g-badge__dot {\n      margin-right: 0;\n    }\n    .c2g-badge--dot-no-ring {\n      border-color: transparent !important;\n      background: transparent !important;\n      box-shadow: none;\n    }\n\n    .c2g-badge--solid.c2g-badge--neutral {\n      background: var(--c2g-color-text-secondary);\n      color: var(--c2g-color-surface);\n    }\n    .c2g-badge--solid.c2g-badge--accent {\n      background: var(--c2g-color-primary);\n      color: var(--c2g-color-surface);\n    }\n    .c2g-badge--solid.c2g-badge--info {\n      background: var(--c2g-color-info);\n      color: var(--c2g-color-surface);\n    }\n    .c2g-badge--solid.c2g-badge--success {\n      background: var(--c2g-color-success);\n      color: var(--c2g-color-surface);\n    }\n    .c2g-badge--solid.c2g-badge--warning {\n      background: var(--c2g-color-warning);\n      color: var(--c2g-color-surface);\n    }\n    .c2g-badge--solid.c2g-badge--danger {\n      background: var(--c2g-color-error);\n      color: var(--c2g-color-surface);\n    }\n\n    .c2g-badge--subtle.c2g-badge--neutral {\n      background: color-mix(in srgb, var(--c2g-color-text-secondary) 10%, var(--c2g-color-surface));\n      color: var(--c2g-color-text-secondary);\n    }\n    .c2g-badge--subtle.c2g-badge--accent {\n      background: color-mix(in srgb, var(--c2g-color-primary) 14%, var(--c2g-color-surface));\n      color: var(--c2g-color-primary-dark);\n    }\n    .c2g-badge--subtle.c2g-badge--info {\n      background: color-mix(in srgb, var(--c2g-color-info) 12%, var(--c2g-color-surface));\n      color: var(--c2g-color-info);\n    }\n    .c2g-badge--subtle.c2g-badge--success {\n      background: color-mix(in srgb, var(--c2g-color-success) 12%, var(--c2g-color-surface));\n      color: var(--c2g-color-success);\n    }\n    .c2g-badge--subtle.c2g-badge--warning {\n      background: color-mix(in srgb, var(--c2g-color-warning) 12%, var(--c2g-color-surface));\n      color: var(--c2g-color-warning);\n    }\n    .c2g-badge--subtle.c2g-badge--danger {\n      background: color-mix(in srgb, var(--c2g-color-error) 13%, var(--c2g-color-surface));\n      color: var(--c2g-color-error);\n    }\n\n    .c2g-badge--outline.c2g-badge--neutral {\n      border-color: color-mix(in srgb, var(--c2g-color-text-secondary) 35%, transparent);\n      color: var(--c2g-color-text-secondary);\n      background: transparent;\n    }\n    .c2g-badge--outline.c2g-badge--accent {\n      border-color: color-mix(in srgb, var(--c2g-color-primary) 40%, transparent);\n      color: var(--c2g-color-primary-dark);\n      background: transparent;\n    }\n    .c2g-badge--outline.c2g-badge--info {\n      border-color: color-mix(in srgb, var(--c2g-color-info) 40%, transparent);\n      color: var(--c2g-color-info);\n      background: transparent;\n    }\n    .c2g-badge--outline.c2g-badge--success {\n      border-color: color-mix(in srgb, var(--c2g-color-success) 40%, transparent);\n      color: var(--c2g-color-success);\n      background: transparent;\n    }\n    .c2g-badge--outline.c2g-badge--warning {\n      border-color: color-mix(in srgb, var(--c2g-color-warning) 40%, transparent);\n      color: var(--c2g-color-warning);\n      background: transparent;\n    }\n    .c2g-badge--outline.c2g-badge--danger {\n      border-color: color-mix(in srgb, var(--c2g-color-error) 40%, transparent);\n      color: var(--c2g-color-error);\n      background: transparent;\n    }\n  `,\n})\nexport class BadgeComponent {\n  readonly value = input<string | number>('1');\n  readonly tone = input<BadgeTone>('accent');\n  readonly variant = input<BadgeVariant>('solid');\n  readonly size = input<BadgeSize>('md');\n  readonly max = input<number>(99);\n  readonly dot = input(false);\n  readonly dotOnly = input(false);\n  readonly dotRing = input(true);\n  readonly dotPulse = input(false);\n  readonly dotColor = input('');\n  readonly ariaLabel = input('');\n\n  readonly resolvedAriaLabel = computed(() => this.ariaLabel().trim() || null);\n\n  readonly content = computed(() => {\n    const value = this.value();\n    if (typeof value === 'number' && value > this.max()) {\n      return `${this.max()}+`;\n    }\n    return `${value}`;\n  });\n\n  readonly classes = computed(\n    () =>\n      `c2g-badge c2g-badge--${this.size()} c2g-badge--${this.variant()} c2g-badge--${this.tone()} ${\n        this.dot() && this.dotOnly() ? 'c2g-badge--dot-only' : ''\n      } ${this.dot() && this.dotOnly() && !this.dotRing() ? 'c2g-badge--dot-no-ring' : ''}`\n  );\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  effect,\n  input,\n  output,\n  signal,\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nexport type ChipTone = 'neutral' | 'accent' | 'info' | 'success' | 'warning' | 'danger';\n\n@Component({\n  selector: 'c2g-chip',\n  standalone: true,\n  imports: [MatIconModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <span class=\"c2g-chip\" [class]=\"chipClasses()\">\n      <button\n        type=\"button\"\n        class=\"c2g-chip__action\"\n        [disabled]=\"disabled()\"\n        [attr.aria-pressed]=\"isSelected() ? 'true' : 'false'\"\n        [attr.aria-label]=\"ariaLabel() || null\"\n        (click)=\"toggleSelected()\"\n      >\n        @if (icon() || iconFontIcon()) {\n          <mat-icon\n            class=\"c2g-chip__icon\"\n            [fontSet]=\"iconFontSet()\"\n            [fontIcon]=\"iconFontIcon()\"\n            [attr.aria-label]=\"iconAriaLabel() || null\"\n            [attr.aria-hidden]=\"iconAriaLabel() ? null : 'true'\"\n          >\n            {{ icon() }}\n          </mat-icon>\n        }\n        <span>{{ label() }}</span>\n      </button>\n\n      @if (removable()) {\n        <button\n          type=\"button\"\n          class=\"c2g-chip__remove\"\n          [disabled]=\"disabled()\"\n          [attr.aria-label]=\"removeAriaLabel()\"\n          (click)=\"remove($event)\"\n        >\n          <mat-icon class=\"c2g-chip__remove-icon\" aria-hidden=\"true\">close</mat-icon>\n        </button>\n      }\n    </span>\n  `,\n  styles: `\n    .c2g-chip {\n      display: inline-flex;\n      align-items: center;\n      border-radius: 999px;\n      border: 1px solid transparent;\n      overflow: hidden;\n      font-family: var(--c2g-font-family-base, \"Quicksand\", \"Segoe UI\", sans-serif);\n      transition: all var(--c2g-motion-duration-fast, 120ms) var(--c2g-motion-ease-standard, ease);\n    }\n    .c2g-chip__action,\n    .c2g-chip__remove {\n      border: none;\n      background: transparent;\n      color: inherit;\n      display: inline-flex;\n      align-items: center;\n      cursor: pointer;\n      font: inherit;\n      line-height: 1;\n    }\n    .c2g-chip__action {\n      gap: var(--c2g-space-1, 0.25rem);\n      padding: 0.35rem 0.6rem;\n    }\n    .c2g-chip__remove {\n      padding: 0.35rem 0.45rem 0.35rem 0.25rem;\n      border-left: 1px solid color-mix(in srgb, currentColor 24%, transparent);\n    }\n    .c2g-chip__icon,\n    .c2g-chip__remove-icon {\n      width: 0.875rem;\n      height: 0.875rem;\n      font-size: 0.8125rem;\n      line-height: 1;\n    }\n    .c2g-chip__action:focus-visible,\n    .c2g-chip__remove:focus-visible {\n      outline: none;\n      box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--c2g-color-focus, #e55623) 24%, transparent);\n    }\n    .c2g-chip__action:disabled,\n    .c2g-chip__remove:disabled {\n      cursor: not-allowed;\n      opacity: 0.6;\n    }\n\n    .c2g-chip--neutral {\n      background: var(--c2g-color-bg-secondary, var(--c2g-theme-surface-container));\n      color: var(--c2g-color-text-secondary, #4a423b);\n      border-color: var(--c2g-color-border-soft);\n    }\n    .c2g-chip--accent {\n      background: var(--c2g-color-primary-container, #fce0d0);\n      color: var(--c2g-color-on-primary-container, #4a1800);\n      border-color: color-mix(in srgb, var(--c2g-color-primary, #d4622a) 30%, transparent);\n    }\n    .c2g-chip--info {\n      background: color-mix(in srgb, var(--c2g-color-info, #4a90d9) 15%, var(--c2g-color-bg-base, transparent));\n      color: color-mix(in srgb, var(--c2g-color-info, #4a90d9) 85%, var(--c2g-color-text-primary, #1a1714));\n      border-color: color-mix(in srgb, var(--c2g-color-info, #4a90d9) 35%, transparent);\n    }\n    .c2g-chip--success {\n      background: var(--c2g-theme-success-container, #edfaf4);\n      color: var(--c2g-theme-on-success-container, #14532d);\n      border-color: color-mix(in srgb, var(--c2g-color-success, #4caf87) 35%, transparent);\n    }\n    .c2g-chip--warning {\n      background: var(--c2g-theme-warning-container, #fff8ed);\n      color: var(--c2g-theme-on-warning-container, #78350f);\n      border-color: color-mix(in srgb, var(--c2g-color-warning, #f0a030) 35%, transparent);\n    }\n    .c2g-chip--danger {\n      background: var(--c2g-theme-error-container, #fdeaea);\n      color: var(--c2g-theme-on-error-container, #7f1d1d);\n      border-color: color-mix(in srgb, var(--c2g-color-error, #d94040) 35%, transparent);\n    }\n\n    .c2g-chip--selected {\n      box-shadow: inset 0 0 0 1px color-mix(in srgb, currentColor 40%, transparent);\n      filter: brightness(0.92);\n    }\n  `,\n})\nexport class ChipComponent {\n  readonly label = input('Chip');\n  readonly tone = input<ChipTone>('neutral');\n  readonly selected = input(false);\n  readonly disabled = input(false);\n  readonly removable = input(false);\n  readonly ariaLabel = input('');\n  readonly removeAriaLabel = input('Chip entfernen');\n\n  readonly icon = input('');\n  readonly iconAriaLabel = input('');\n  readonly iconFontSet = input('');\n  readonly iconFontIcon = input('');\n\n  readonly selectedChange = output<boolean>();\n  readonly removed = output<void>();\n\n  readonly isSelected = signal(false);\n  readonly chipClasses = computed(\n    () => `c2g-chip c2g-chip--${this.tone()} ${this.isSelected() ? 'c2g-chip--selected' : ''}`\n  );\n\n  constructor() {\n    effect(() => {\n      this.isSelected.set(this.selected());\n    });\n  }\n\n  toggleSelected(): void {\n    if (this.disabled()) {\n      return;\n    }\n    const next = !this.isSelected();\n    this.isSelected.set(next);\n    this.selectedChange.emit(next);\n  }\n\n  remove(event: Event): void {\n    event.stopPropagation();\n    if (this.disabled()) {\n      return;\n    }\n    this.removed.emit();\n  }\n}","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  forwardRef,\n  input,\n  output,\n  signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nlet nextCheckboxId = 0;\n\n@Component({\n  selector: 'c2g-checkbox',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => CheckboxComponent),\n      multi: true,\n    },\n  ],\n  template: `\n    <label class=\"c2g-checkbox\" [class.c2g-checkbox--disabled]=\"isDisabled()\" [attr.for]=\"checkboxId()\">\n      <input\n        class=\"c2g-checkbox__input\"\n        type=\"checkbox\"\n        [id]=\"checkboxId()\"\n        [checked]=\"checked()\"\n        [disabled]=\"isDisabled()\"\n        [attr.aria-describedby]=\"describedBy()\"\n        (change)=\"onInput($event)\"\n        (blur)=\"onBlur()\"\n      />\n      <span class=\"c2g-checkbox__box\" aria-hidden=\"true\"></span>\n      <span class=\"c2g-checkbox__label\">{{ label() }}</span>\n    </label>\n\n    @if (hint().trim()) {\n      <p class=\"c2g-checkbox__hint\" [id]=\"hintId()\">{{ hint() }}</p>\n    }\n  `,\n  styles: `\n    .c2g-checkbox {\n      display: inline-flex;\n      align-items: center;\n      gap: var(--c2g-space-2, 0.5rem);\n      cursor: pointer;\n      user-select: none;\n      font-family: var(--c2g-font-family-base, \"Quicksand\", \"Segoe UI\", sans-serif);\n      color: var(--c2g-color-text-primary, #1a1714);\n    }\n    .c2g-checkbox--disabled {\n      opacity: 0.55;\n      cursor: not-allowed;\n    }\n    .c2g-checkbox__input {\n      position: absolute;\n      opacity: 0;\n      pointer-events: none;\n    }\n    .c2g-checkbox__box {\n      width: 1.125rem;\n      height: 1.125rem;\n      border-radius: var(--c2g-radius-sm, 0.375rem);\n      border: 1px solid var(--c2g-color-border-subtle, rgba(74, 66, 59, 0.18));\n      background: var(--c2g-color-surface, #ffffff);\n      display: inline-block;\n      transition: all var(--c2g-motion-duration-fast, 120ms) var(--c2g-motion-ease-standard, ease);\n      position: relative;\n    }\n    .c2g-checkbox__input:checked + .c2g-checkbox__box {\n      border-color: var(--c2g-color-primary-dark, #e55623);\n      background: var(--c2g-color-primary, #ff6b35);\n    }\n    .c2g-checkbox__input:checked + .c2g-checkbox__box::after {\n      content: '';\n      position: absolute;\n      left: 0.33rem;\n      top: 0.12rem;\n      width: 0.27rem;\n      height: 0.55rem;\n      border: solid var(--c2g-color-surface, #ffffff);\n      border-width: 0 2px 2px 0;\n      transform: rotate(45deg);\n    }\n    .c2g-checkbox__input:focus-visible + .c2g-checkbox__box {\n      box-shadow: 0 0 0 3px color-mix(in srgb, var(--c2g-color-focus, #e55623) 24%, transparent);\n    }\n    .c2g-checkbox__label {\n      font-size: var(--c2g-font-size-sm, 0.875rem);\n    }\n    .c2g-checkbox__hint {\n      margin: var(--c2g-space-1, 0.25rem) 0 0 1.65rem;\n      color: var(--c2g-color-text-muted, #6b5e52);\n      font-size: var(--c2g-font-size-xs, 0.75rem);\n      font-family: var(--c2g-font-family-base, \"Quicksand\", \"Segoe UI\", sans-serif);\n    }\n  `,\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n  readonly id = input('');\n  readonly label = input('Option');\n  readonly hint = input('');\n  readonly disabled = input(false);\n\n  readonly checkedChange = output<boolean>();\n\n  readonly checked = signal(false);\n  readonly cvaDisabled = signal(false);\n  private readonly generatedId = `c2g-checkbox-${++nextCheckboxId}`;\n\n  readonly checkboxId = computed(() => this.id().trim() || this.generatedId);\n  readonly hintId = computed(() => `${this.checkboxId()}-hint`);\n  readonly describedBy = computed(() => (this.hint().trim() ? this.hintId() : null));\n  readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n\n  private onChange: (value: boolean) => void = () => {};\n  private onTouched: () => void = () => {};\n\n  writeValue(value: boolean | null): void {\n    this.checked.set(!!value);\n  }\n\n  registerOnChange(fn: (value: boolean) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.cvaDisabled.set(isDisabled);\n  }\n\n  onInput(event: Event): void {\n    const next = (event.target as HTMLInputElement).checked;\n    this.checked.set(next);\n    this.onChange(next);\n    this.checkedChange.emit(next);\n  }\n\n  onBlur(): void {\n    this.onTouched();\n  }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nexport type C2gLoaderSize = 'sm' | 'md' | 'lg';\nexport type C2gLoaderTone = 'primary' | 'neutral' | 'inverse';\n\n@Component({\n  selector: 'c2g-loader',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <span\n      class=\"c2g-loader\"\n      role=\"status\"\n      [class.c2g-loader--inline]=\"inline()\"\n      [class.c2g-loader--block]=\"!inline()\"\n      [class.c2g-loader--sm]=\"size() === 'sm'\"\n      [class.c2g-loader--md]=\"size() === 'md'\"\n      [class.c2g-loader--lg]=\"size() === 'lg'\"\n      [class.c2g-loader--primary]=\"tone() === 'primary'\"\n      [class.c2g-loader--neutral]=\"tone() === 'neutral'\"\n      [class.c2g-loader--inverse]=\"tone() === 'inverse'\"\n      [attr.aria-label]=\"ariaLabel()\"\n    >\n      <span class=\"c2g-loader__spinner\" aria-hidden=\"true\"></span>\n      @if (showLabel()) {\n        <span class=\"c2g-loader__label\">{{ label() }}</span>\n      }\n    </span>\n  `,\n  styles: `\n    .c2g-loader {\n      --loader-color: var(--c2g-color-primary, #ff6b35);\n      --loader-size: 1.25rem;\n      display: inline-flex;\n      align-items: center;\n      gap: var(--c2g-space-2, 0.5rem);\n      font-family: var(--c2g-font-family-base, \"Quicksand\", \"Segoe UI\", sans-serif);\n      color: var(--c2g-color-text-secondary, #4a423b);\n    }\n    .c2g-loader--inline {\n      display: inline-flex;\n    }\n    .c2g-loader--block {\n      display: flex;\n      width: 100%;\n    }\n    .c2g-loader--sm {\n      --loader-size: 0.9rem;\n      font-size: var(--c2g-font-size-xs, 0.75rem);\n    }\n    .c2g-loader--md {\n      --loader-size: 1.25rem;\n      font-size: var(--c2g-font-size-sm, 0.875rem);\n    }\n    .c2g-loader--lg {\n      --loader-size: 1.75rem;\n      font-size: var(--c2g-font-size-md, 1rem);\n    }\n    .c2g-loader--primary {\n      --loader-color: var(--c2g-color-primary, #ff6b35);\n    }\n    .c2g-loader--neutral {\n      --loader-color: var(--c2g-color-text-muted, #6b5e52);\n    }\n    .c2g-loader--inverse {\n      --loader-color: var(--c2g-color-surface, #ffffff);\n      color: var(--c2g-color-surface, #ffffff);\n    }\n    .c2g-loader__spinner {\n      width: var(--loader-size);\n      height: var(--loader-size);\n      border-radius: 999px;\n      border: 2px solid color-mix(in srgb, var(--loader-color) 24%, transparent);\n      border-top-color: var(--loader-color);\n      animation: c2g-loader-spin 0.8s linear infinite;\n      flex-shrink: 0;\n    }\n    .c2g-loader__label {\n      line-height: 1.2;\n    }\n    @keyframes c2g-loader-spin {\n      from {\n        transform: rotate(0deg);\n      }\n      to {\n        transform: rotate(360deg);\n      }\n    }\n  `,\n})\nexport class LoaderComponent {\n  readonly size = input<C2gLoaderSize>('md');\n  readonly tone = input<C2gLoaderTone>('primary');\n  readonly label = input('Laden...');\n  readonly showLabel = input(true);\n  readonly inline = input(true);\n\n  readonly ariaLabel = computed(() => this.label().trim() || 'Ladevorgang');\n}\n","export const C2G_LOTTIE_PRESET_OPTIONS = [\n  'beach',\n  'camping',\n  'car',\n  'cat-love',\n  'checklist',\n  'coffee-time',\n  'car-driving-landscape',\n  'error-404',\n  'fishing',\n  'mountain-search',\n  'planning',\n  'share',\n  'summer-camp',\n  'thinking',\n  'walking-orange',\n  'walking-avocado',\n  'weather-partly-cloudy',\n] as const;\n\nexport type C2gLottieLoaderPreset = (typeof C2G_LOTTIE_PRESET_OPTIONS)[number];\n\nexport type C2gLottieLoaderPresetMode = 'embedded' | 'path';\n\nexport const C2G_LOTTIE_PRESET_PATHS: Record<C2gLottieLoaderPreset, string> = {\n  beach: '/assets/animations/beach-animation.json',\n  camping: '/assets/animations/camping-animation.json',\n  car: '/assets/animations/car-animation.json',\n  'cat-love': '/assets/animations/cat-love-animation.json',\n  checklist: '/assets/animations/checklist-animation.json',\n  'error-404': '/assets/animations/error-404.json',\n  fishing: '/assets/animations/fishing-animation.json',\n  'mountain-search': '/assets/animations/mountain-search-animation.json',\n  planning: '/assets/animations/planning-animation.json',\n  share: '/assets/animations/share-animation.json',\n  'summer-camp': '/assets/animations/summer-camp-animation.json',\n  thinking: '/assets/animations/thinking-animation.json',\n  'coffee-time': '/assets/animations/coffee-time-animation.json',\n  'car-driving-landscape': '/assets/animations/car-driving-landscape-animation.json',\n  'walking-orange': '/assets/animations/walking-orange-animation.json',\n  'walking-avocado': '/assets/animations/walking-avocado-animation.json',\n  'weather-partly-cloudy': '/assets/animations/weather-partly-cloudy-animation.json',\n};\n\nconst C2G_LOTTIE_PRESET_IMPORTERS: Record<C2gLottieLoaderPreset, () => Promise<{ default: unknown }>> = {\n  beach: () => import('./presets/beach-animation.json'),\n  camping: () => import('./presets/camping-animation.json'),\n  car: () => import('./presets/car-animation.json'),\n  'cat-love': () => import('./presets/cat-love-animation.json'),\n  checklist: () => import('./presets/checklist-animation.json'),\n  'error-404': () => import('./presets/error-404.json'),\n  fishing: () => import('./presets/fishing-animation.json'),\n  'mountain-search': () => import('./presets/mountain-search-animation.json'),\n  planning: () => import('./presets/planning-animation.json'),\n  share: () => import('./presets/share-animation.json'),\n  'summer-camp': () => import('./presets/summer-camp-animation.json'),\n  thinking: () => import('./presets/thinking-animation.json'),\n  'coffee-time': () => import('./presets/coffee-time-animation.json'),\n  'car-driving-landscape': () => import('./presets/car-driving-landscape-animation.json'),\n  'walking-orange': () => import('./presets/walking-orange-animation.json'),\n  'walking-avocado': () => import('./presets/walking-avocado-animation.json'),\n  'weather-partly-cloudy': () => import('./presets/weather-partly-cloudy-animation.json'),\n};\n\nexport async function loadC2gLottiePresetData(preset: C2gLottieLoaderPreset): Promise<unknown> {\n  const module = await C2G_LOTTIE_PRESET_IMPORTERS[preset]();\n  return module.default;\n}\n","import { ChangeDetectionStrategy, Component, computed, effect, input, signal } from '@angular/core';\nimport { AnimationOptions, LottieComponent } from 'ngx-lottie';\nimport {\n  C2G_LOTTIE_PRESET_PATHS,\n  C2gLottieLoaderPreset,\n  C2gLottieLoaderPresetMode,\n  loadC2gLottiePresetData,\n} from './lottie-loader.presets';\n\n@Component({\n  selector: 'c2g-lottie-loader',\n  standalone: true,\n  imports: [LottieComponent],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <div class=\"c2g-lottie-loader\" role=\"status\" [attr.aria-label]=\"ariaLabel()\">\n      @if (hasRenderableAnimation()) {\n        <ng-lottie\n          class=\"c2g-lottie-loader__animation\"\n          [options]=\"options()\"\n          [width]=\"width()\"\n          [height]=\"height()\"\n          aria-hidden=\"true\"\n        ></ng-lottie>\n      } @else {\n        <span class=\"c2g-lottie-loader__fallback\" aria-hidden=\"true\"></span>\n      }\n\n      @if (showLabel()) {\n        <span class=\"c2g-lottie-loader__label\">{{ label() }}</span>\n      }\n    </div>\n  `,\n  styles: `\n    .c2g-lottie-loader {\n      display: inline-flex;\n      flex-direction: column;\n      align-items: center;\n      justify-content: center;\n      gap: var(--c2g-space-2, 0.5rem);\n      font-family: var(--c2g-font-family-base, \"Quicksand\", \"Segoe UI\", sans-serif);\n      color: var(--c2g-color-text-secondary, #4a423b);\n    }\n    .c2g-lottie-loader__animation {\n      display: inline-block;\n      line-height: 0;\n    }\n    .c2g-lottie-loader__fallback {\n      width: 1.5rem;\n      height: 1.5rem;\n      border-radius: 999px;\n      border: 2px solid color-mix(in srgb, var(--c2g-color-primary, #ff6b35) 24%, transparent);\n      border-top-color: var(--c2g-color-primary, #ff6b35);\n      animation: c2g-lottie-loader-fallback-spin 0.8s linear infinite;\n    }\n    .c2g-lottie-loader__label {\n      font-size: var(--c2g-font-size-sm, 0.875rem);\n      line-height: 1.2;\n      text-align: center;\n    }\n    @keyframes c2g-lottie-loader-fallback-spin {\n      from {\n        transform: rotate(0deg);\n      }\n      to {\n        transform: rotate(360deg);\n      }\n    }\n  `,\n})\nexport class LottieLoaderComponent {\n  readonly preset = input<C2gLottieLoaderPreset>('cat-love');\n  readonly presetMode = input<C2gLottieLoaderPresetMode>('embedded');\n  readonly animationPath = input('');\n  readonly animationData = input<unknown | null>(null);\n  readonly loop = input(true);\n  readonly autoplay = input(true);\n  readonly width = input('96px');\n  readonly height = input('96px');\n  readonly label = input('Lade...');\n  readonly showLabel = input(true);\n\n  readonly ariaLabel = computed(() => this.label().trim() || 'Ladevorgang');\n  private readonly lazyPresetData = signal<unknown | null>(null);\n\n  readonly hasRenderableAnimation = computed(() => {\n    const animationData = this.animationData();\n    if (animationData) {\n      return true;\n    }\n    if (this.animationPath().trim()) {\n      return true;\n    }\n    if (this.presetMode() === 'path') {\n      return true;\n    }\n    return this.lazyPresetData() !== null;\n  });\n\n  constructor() {\n    effect((onCleanup) => {\n      const hasCustomData = this.animationData() !== null;\n      const hasCustomPath = this.animationPath().trim().length > 0;\n      const mode = this.presetMode();\n      const preset = this.preset();\n\n      if (hasCustomData || hasCustomPath || mode === 'path') {\n        this.lazyPresetData.set(null);\n        return;\n      }\n\n      let cancelled = false;\n      this.lazyPresetData.set(null);\n\n      void loadC2gLottiePresetData(preset)\n        .then((data) => {\n          if (!cancelled) {\n            this.lazyPresetData.set(data);\n          }\n        })\n        .catch(() => {\n          if (!cancelled) {\n            this.lazyPresetData.set(null);\n          }\n        });\n\n      onCleanup(() => {\n        cancelled = true;\n      });\n    });\n  }\n\n  private cloneAnimationData<T>(value: T): T {\n    if (typeof structuredClone === 'function') {\n      return structuredClone(value);\n    }\n    return JSON.parse(JSON.stringify(value)) as T;\n  }\n\n  readonly options = computed<AnimationOptions>(() => {\n    const base: AnimationOptions = {\n      loop: this.loop(),\n      autoplay: this.autoplay(),\n    };\n\n    const animationData = this.animationData();\n    if (animationData) {\n      return {\n        ...base,\n        // ngx-lottie/lottie-web may mutate animationData; clone to avoid shared-state issues.\n        animationData: this.cloneAnimationData(animationData),\n      };\n    }\n\n    const explicitPath = this.animationPath().trim();\n    if (explicitPath) {\n      return {\n        ...base,\n        path: explicitPath,\n      };\n    }\n\n    if (this.presetMode() === 'path') {\n      return {\n        ...base,\n        path: C2G_LOTTIE_PRESET_PATHS[this.preset()],\n      };\n    }\n\n    const lazyData = this.lazyPresetData();\n    if (!lazyData) {\n      return base;\n    }\n\n    return {\n      ...base,\n      animationData: this.cloneAnimationData(lazyData),\n    };\n  });\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nexport type C2gSkeletonVariant = 'text' | 'block' | 'avatar';\n\n@Component({\n  selector: 'c2g-skeleton',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <span\n      class=\"c2g-skeleton\"\n      [class.c2g-skeleton--animated]=\"animated()\"\n      [class.c2g-skeleton--text]=\"variant() === 'text'\"\n      [class.c2g-skeleton--block]=\"variant() === 'block'\"\n      [class.c2g-skeleton--avatar]=\"variant() === 'avatar'\"\n      [style.width]=\"resolvedWidth()\"\n      [style.height]=\"resolvedHeight()\"\n      [style.borderRadius]=\"resolvedRadius()\"\n      aria-hidden=\"true\"\n    ></span>\n  `,\n  styles: `\n    .c2g-skeleton {\n      display: inline-block;\n      width: 100%;\n      height: 1rem;\n      border-radius: var(--c2g-radius-sm, 0.375rem);\n      background: linear-gradient(\n        90deg,\n        color-mix(in srgb, var(--c2g-color-neutral-200, #e1d9ce) 78%, #ffffff) 0%,\n        color-mix(in srgb, var(--c2g-color-neutral-200, #e1d9ce) 56%, #ffffff) 45%,\n        color-mix(in srgb, var(--c2g-color-neutral-200, #e1d9ce) 78%, #ffffff) 100%\n      );\n      background-size: 240% 100%;\n    }\n    .c2g-skeleton--animated {\n      animation: c2g-skeleton-shimmer 1.5s ease-in-out infinite;\n    }\n    .c2g-skeleton--text {\n      height: 0.95rem;\n      border-radius: 0.45rem;\n    }\n    .c2g-skeleton--block {\n      height: 5.5rem;\n    }\n    .c2g-skeleton--avatar {\n      width: 2.5rem;\n      height: 2.5rem;\n      border-radius: 999px;\n    }\n    @keyframes c2g-skeleton-shimmer {\n      from {\n        background-position: 200% 0;\n      }\n      to {\n        background-position: -40% 0;\n      }\n    }\n  `,\n})\nexport class SkeletonComponent {\n  readonly variant = input<C2gSkeletonVariant>('text');\n  readonly width = input('100%');\n  readonly height = input('');\n  readonly radius = input('');\n  readonly animated = input(true);\n\n  readonly resolvedWidth = computed(() => (this.width().trim() ? this.width() : '100%'));\n  readonly resolvedHeight = computed(() => {\n    if (this.height().trim()) {\n      return this.height();\n    }\n    if (this.variant() === 'avatar') {\n      return '2.5rem';\n    }\n    if (this.variant() === 'block') {\n      return '5.5rem';\n    }\n    return '0.95rem';\n  });\n  readonly resolvedRadius = computed(() => {\n    if (this.radius().trim()) {\n      return this.radius();\n    }\n    return this.variant() === 'avatar' ? '999px' : '0.45rem';\n  });\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\n\nexport type C2gAlertTone = 'info' | 'success' | 'warning' | 'danger';\nexport type C2gAlertVariant = 'soft' | 'solid' | 'outline';\n\n@Component({\n  selector: 'c2g-alert',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    @if (visible()) {\n      <section\n        class=\"c2g-alert\"\n        [class.c2g-alert--soft]=\"variant() === 'soft'\"\n        [class.c2g-alert--solid]=\"variant() === 'solid'\"\n        [class.c2g-alert--outline]=\"variant() === 'outline'\"\n        [class.c2g-alert--info]=\"tone() === 'info'\"\n        [class.c2g-alert--success]=\"tone() === 'success'\"\n        [class.c2g-alert--warning]=\"tone() === 'warning'\"\n        [class.c2g-alert--danger]=\"tone() === 'danger'\"\n        [attr.role]=\"liveRole()\"\n        [attr.aria-live]=\"ariaLive()\"\n      >\n        <span class=\"c2g-alert__icon\" aria-hidden=\"true\">{{ iconSymbol() }}</span>\n\n        <div class=\"c2g-alert__content\">\n          @if (title().trim()) {\n            <h4 class=\"c2g-alert__title\">{{ title() }}</h4>\n          }\n          @if (message().trim()) {\n            <p class=\"c2g-alert__message\">{{ message() }}</p>\n          }\n        </div>\n\n        @if (dismissible()) {\n          <button\n            type=\"button\"\n            class=\"c2g-alert__close\"\n            (click)=\"dismiss()\"\n            [attr.aria-label]=\"closeLabel()\"\n          >\n            x\n          </button>\n        }\n      </section>\n    }\n  `,\n  styles: `\n    .c2g-alert {\n      --alert-fg: #1a1714;\n      --alert-bg: color-mix(in srgb, var(--c2g-color-neutral-200, #e1d9ce) 35%, #ffffff);\n      --alert-border: color-mix(in srgb, var(--c2g-color-border-subtle, rgba(74, 66, 59, 0.18)) 100%, transparent);\n      display: grid;\n      grid-template-columns: auto 1fr auto;\n      align-items: start;\n      gap: var(--c2g-space-3, 0.75rem);\n      padding: var(--c2g-space-3, 0.75rem) var(--c2g-space-4, 1rem);\n      border-radius: var(--c2g-radius-md, 0.625rem);\n      border: 1px solid var(--alert-border);\n      color: var(--alert-fg);\n      background: var(--alert-bg);\n      font-family: var(--c2g-font-family-base, \"Quicksand\", \"Segoe UI\", sans-serif);\n    }\n    .c2g-alert--info {\n      --alert-fg: #134a7c;\n      --alert-bg: color-mix(in srgb, #4aa3ff 14%, #ffffff);\n      --alert-border: color-mix(in srgb, #4aa3ff 36%, transparent);\n    }\n    .c2g-alert--success {\n      --alert-fg: #1f6b41;\n      --alert-bg: color-mix(in srgb, #43b581 14%, #ffffff);\n      --alert-border: color-mix(in srgb, #43b581 36%, transparent);\n    }\n    .c2g-alert--warning {\n      --alert-fg: #6c4a0a;\n      --alert-bg: color-mix(in srgb, #ffb020 16%, #ffffff);\n      --alert-border: color-mix(in srgb, #ffb020 42%, transparent);\n    }\n    .c2g-alert--danger {\n      --alert-fg: #802e2e;\n      --alert-bg: color-mix(in srgb, #ef4444 14%, #ffffff);\n      --alert-border: color-mix(in srgb, #ef4444 40%, transparent);\n    }\n    .c2g-alert--solid {\n      background: color-mix(in srgb, var(--alert-fg) 88%, #000000 0%);\n      color: #ffffff;\n      border-color: transparent;\n    }\n    .c2g-alert--outline {\n      background: transparent;\n      border-width: 2px;\n    }\n    .c2g-alert__icon {\n      width: 1.25rem;\n      line-height: 1.25rem;\n      text-align: center;\n      font-weight: 700;\n      margin-top: 0.08rem;\n    }\n    .c2g-alert__title {\n      margin: 0;\n      font-size: var(--c2g-font-size-sm, 0.875rem);\n      font-weight: var(--c2g-font-weight-semibold, 600);\n      line-height: 1.2;\n    }\n    .c2g-alert__message {\n      margin: 0.2rem 0 0;\n      font-size: var(--c2g-font-size-sm, 0.875rem);\n      line-height: 1.35;\n    }\n    .c2g-alert__close {\n      border: none;\n      background: transparent;\n      color: inherit;\n      font-weight: 700;\n      font-size: 0.875rem;\n      line-height: 1;\n      cursor: pointer;\n      border-radius: var(--c2g-radius-sm, 0.375rem);\n      padding: 0.25rem;\n    }\n    .c2g-alert__close:focus-visible {\n      outline: none;\n      box-shadow: 0 0 0 3px color-mix(in srgb, currentColor 24%, transparent);\n    }\n  `,\n})\nexport class AlertComponent {\n  readonly tone = input<C2gAlertTone>('info');\n  readonly variant = input<C2gAlertVariant>('soft');\n  readonly title = input('Hinweis');\n  readonly message = input('');\n  readonly open = input<boolean | undefined>(undefined);\n  readonly dismissible = input(false);\n  readonly closeLabel = input('Hinweis schliessen');\n\n  readonly dismissed = output<void>();\n\n  readonly internalVisible = signal(true);\n  readonly visible = computed(() => {\n    const externallyControlled = this.open();\n    return externallyControlled === undefined ? this.internalVisible() : externallyControlled;\n  });\n\n  readonly liveRole = computed(() => (this.tone() === 'danger' || this.tone() === 'warning' ? 'alert' : 'status'));\n  readonly ariaLive = computed(() => (this.liveRole() === 'alert' ? 'assertive' : 'polite'));\n  readonly iconSymbol = computed(() => {\n    switch (this.tone()) {\n      case 'success':\n        return 'v';\n      case 'warning':\n        return '!';\n      case 'danger':\n        return 'x';\n      default:\n        return 'i';\n    }\n  });\n\n  dismiss(): void {\n    if (this.open() === undefined) {\n      this.internalVisible.set(false);\n    }\n    this.dismissed.emit();\n  }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nexport type C2gProgressTone = 'primary' | 'success' | 'warning' | 'danger';\nexport type C2gProgressSize = 'sm' | 'md' | 'lg';\n\n@Component({\n  selector: 'c2g-progress',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <div class=\"c2g-progress\" [class.c2g-progress--indeterminate]=\"indeterminate()\">\n      @if (showLabel()) {\n        <div class=\"c2g-progress__meta\">\n          <span class=\"c2g-progress__label\">{{ label() }}</span>\n          @if (!indeterminate()) {\n            <span class=\"c2g-progress__value\">{{ percentLabel() }}</span>\n          }\n        </div>\n      }\n\n      <div\n        class=\"c2g-progress__track\"\n        role=\"progressbar\"\n        [class.c2g-progress__track--sm]=\"size() === 'sm'\"\n        [class.c2g-progress__track--md]=\"size() === 'md'\"\n        [class.c2g-progress__track--lg]=\"size() === 'lg'\"\n        [attr.aria-label]=\"resolvedAriaLabel()\"\n        [attr.aria-valuemin]=\"indeterminate() ? null : 0\"\n        [attr.aria-valuemax]=\"indeterminate() ? null : safeMax()\"\n        [attr.aria-valuenow]=\"indeterminate() ? null : clampedValue()\"\n      >\n        <span\n          class=\"c2g-progress__bar\"\n          [class.c2g-progress__bar--primary]=\"tone() === 'primary'\"\n          [class.c2g-progress__bar--success]=\"tone() === 'success'\"\n          [class.c2g-progress__bar--warning]=\"tone() === 'warning'\"\n          [class.c2g-progress__bar--danger]=\"tone() === 'danger'\"\n          [class.c2g-progress__bar--striped]=\"striped()\"\n          [class.c2g-progress__bar--animated]=\"animated()\"\n          [style.width.%]=\"indeterminate() ? 38 : percent()\"\n        ></span>\n      </div>\n    </div>\n  `,\n  styles: `\n    .c2g-progress {\n      display: grid;\n      gap: var(--c2g-space-2, 0.5rem);\n      width: 100%;\n      font-family: var(--c2g-font-family-base, \"Quicksand\", \"Segoe UI\", sans-serif);\n    }\n    .c2g-progress__meta {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      gap: var(--c2g-space-3, 0.75rem);\n      font-size: var(--c2g-font-size-xs, 0.75rem);\n      color: var(--c2g-color-text-secondary, #4a423b);\n    }\n    .c2g-progress__label {\n      font-weight: var(--c2g-font-weight-semibold, 600);\n    }\n    .c2g-progress__track {\n      width: 100%;\n      border-radius: 999px;\n      overflow: hidden;\n      background: color-mix(in srgb, var(--c2g-color-neutral-200, #e1d9ce) 70%, #ffffff);\n    }\n    .c2g-progress__track--sm {\n      height: 0.375rem;\n    }\n    .c2g-progress__track--md {\n      height: 0.625rem;\n    }\n    .c2g-progress__track--lg {\n      height: 0.875rem;\n    }\n    .c2g-progress__bar {\n      display: block;\n      height: 100%;\n      width: 0;\n      border-radius: inherit;\n      transition: width 220ms ease;\n      background: var(--c2g-color-primary, #ff6b35);\n    }\n    .c2g-progress__bar--primary {\n      background: var(--c2g-color-primary, #ff6b35);\n    }\n    .c2g-progress__bar--success {\n      background: #43b581;\n    }\n    .c2g-progress__bar--warning {\n      background: #ffb020;\n    }\n    .c2g-progress__bar--danger {\n      background: #ef4444;\n    }\n    .c2g-progress__bar--striped {\n      background-image: linear-gradient(\n        45deg,\n        color-mix(in srgb, #ffffff 18%, transparent) 25%,\n        transparent 25%,\n        transparent 50%,\n        color-mix(in srgb, #ffffff 18%, transparent) 50%,\n        color-mix(in srgb, #ffffff 18%, transparent) 75%,\n        transparent 75%,\n        transparent\n      );\n      background-size: 1rem 1rem;\n    }\n    .c2g-progress__bar--animated {\n      animation: c2g-progress-shift 900ms linear infinite;\n    }\n    .c2g-progress--indeterminate .c2g-progress__bar {\n      animation: c2g-progress-indeterminate 1.2s ease-in-out infinite;\n      transform-origin: left center;\n    }\n    @keyframes c2g-progress-shift {\n      from {\n        background-position: 1rem 0;\n      }\n      to {\n        background-position: 0 0;\n      }\n    }\n    @keyframes c2g-progress-indeterminate {\n      0% {\n        transform: translateX(-120%);\n      }\n      50% {\n        transform: translateX(120%);\n      }\n      100% {\n        transform: translateX(220%);\n      }\n    }\n  `,\n})\nexport class ProgressComponent {\n  readonly value = input(0);\n  readonly max = input(100);\n  readonly size = input<C2gProgressSize>('md');\n  readonly tone = input<C2gProgressTone>('primary');\n  readonly label = input('Fortschritt');\n  readonly ariaLabel = input('');\n  readonly showLabel = input(true);\n  readonly striped = input(false);\n  readonly animated = input(false);\n  readonly indeterminate = input(false);\n\n  readonly safeMax = computed(() => (this.max() > 0 ? this.max() : 100));\n  readonly clampedValue = computed(() => {\n    const next = this.value();\n    return Math.min(Math.max(next, 0), this.safeMax());\n  });\n  readonly percent = computed(() => (this.clampedValue() / this.safeMax()) * 100);\n  readonly percentLabel = computed(() => `${Math.round(this.percent())}%`);\n  readonly resolvedAriaLabel = computed(() => {\n    const explicit = this.ariaLabel().trim();\n    if (explicit) {\n      return explicit;\n    }\n    const fromLabel = this.label().trim();\n    return fromLabel || 'Fortschritt';\n  });\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  forwardRef,\n  input,\n  output,\n  signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nlet nextInputId = 0;\n\n@Component({\n  selector: 'c2g-input',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => InputComponent),\n      multi: true,\n    },\n  ],\n  template: `\n    <div class=\"c2g-field\" [class.c2g-field--sm]=\"size() === 'sm'\">\n      @if (label().trim()) {\n        <label class=\"c2g-field__label\" [attr.for]=\"inputId()\">\n          {{ label() }}\n          @if (required()) {\n            <span class=\"c2g-field__required\" aria-hidden=\"true\">*</span>\n          }\n        </label>\n      }\n\n      <div class=\"c2g-field__control-shell\" [class.c2g-field__control-shell--error]=\"!!error().trim()\">\n        @if (prefix().trim()) {\n          <span class=\"c2g-field__affix\" aria-hidden=\"true\">{{ prefix() }}</span>\n        }\n\n        <input\n          class=\"c2g-field__control\"\n          [id]=\"inputId()\"\n          [type]=\"type()\"\n          [value]=\"value()\"\n          [placeholder]=\"placeholder()\"\n          [disabled]=\"isDisabled()\"\n          [required]=\"required()\"\n          [attr.maxlength]=\"maxLength() || null\"\n          [attr.aria-invalid]=\"error().trim() ? 'true' : null\"\n          [attr.aria-describedby]=\"describedBy()\"\n          [attr.aria-busy]=\"loading() ? 'true' : null\"\n          (input)=\"onInput($event)\"\n          (blur)=\"onBlur()\"\n        />\n\n        @if (loading()) {\n          <span class=\"c2g-field__spinner\" aria-hidden=\"true\"></span>\n        }\n\n        @if (suffix().trim()) {\n          <span class=\"c2g-field__affix\" aria-hidden=\"true\">{{ suffix() }}</span>\n        }\n      </div>\n\n      @if (!compact()) {\n        <div class=\"c2g-field__meta\">\n          @if (error().trim()) {\n            <p class=\"c2g-field__message c2g-field__message--error\" [id]=\"errorId()\">{{ error() }}</p>\n          } @else if (hint().trim()) {\n            <p class=\"c2g-field__message\" [id]=\"hintId()\">{{ hint() }}</p>\n          }\n\n          @if (showCounter()) {\n            <span class=\"c2g-field__counter\" [id]=\"counterId()\">{{ valueLength() }} / {{ maxLength() }}</span>\n          }\n        </div>\n      }\n    </div>\n  `,\n  styles: `\n    .c2g-field {\n      width: 100%;\n      display: grid;\n      gap: var(--c2g-space-2, 0.5rem);\n      font-family: var(--c2g-font-family-base, \"Quicksand\", \"Segoe UI\", sans-serif);\n    }\n    .c2g-field__label {\n      color: var(--c2g-color-text-secondary, #4a423b);\n      font-weight: var(--c2g-font-weight-semibold, 600);\n      font-size: var(--c2g-font-size-sm, 0.875rem);\n      display: inline-flex;\n      align-items: center;\n      gap: var(--c2g-space-1, 0.25rem);\n    }\n    .c2g-field__required {\n      color: var(--c2g-color-error, #ff6b6b);\n      line-height: 1;\n    }\n    .c2g-field__control-shell {\n      min-height: 2.75rem;\n      border: 1px solid var(--c2g-color-border-subtle, rgba(74, 66, 59, 0.18));\n      border-radius: var(--c2g-radius-md, 0.625rem);\n      background: var(--c2g-color-surface, #ffffff);\n      display: flex;\n      align-items: center;\n      gap: var(--c2g-space-2, 0.5rem);\n      padding: 0 var(--c2g-space-3, 0.75rem);\n      transition:\n        border-color var(--c2g-motion-duration-fast, 120ms) var(--c2g-motion-ease-standard, ease),\n        box-shadow var(--c2g-motion-duration-fast, 120ms) var(--c2g-motion-ease-standard, ease);\n    }\n    .c2g-field__control-shell:focus-within {\n      border-color: var(--c2g-color-focus, #e55623);\n      box-shadow: 0 0 0 3px color-mix(in srgb, var(--c2g-color-focus, #e55623) 20%, transparent);\n    }\n    .c2g-field__control-shell--error {\n      border-color: var(--c2g-color-error, #ff6b6b);\n    }\n    .c2g-field__control {\n      width: 100%;\n      min-width: 0;\n      border: none;\n      background: transparent;\n      color: var(--c2g-color-text-primary, #1a1714);\n      font-size: var(--c2g-font-size-md, 1rem);\n      line-height: 1.4;\n      outline: none;\n      padding: 0;\n    }\n    .c2g-field__control::placeholder {\n      color: var(--c2g-color-text-muted, #6b5e52);\n    }\n    .c2g-field__control:disabled {\n      cursor: not-allowed;\n      opacity: 0.7;\n    }\n    .c2g-field__affix {\n      color: var(--c2g-color-text-muted, #6b5e52);\n      font-size: var(--c2g-font-size-sm, 0.875rem);\n      white-space: nowrap;\n    }\n    .c2g-field__spinner {\n      width: 1rem;\n      height: 1rem;\n      border: 2px solid var(--c2g-color-primary, #ff6b35);\n      border-right-color: transparent;\n      border-radius: 999px;\n      animation: c2g-field-spin 0.8s linear infinite;\n      flex: 0 0 auto;\n    }\n    .c2g-field__meta {\n      display: flex;\n      align-items: baseline;\n      justify-content: space-between;\n      gap: var(--c2g-space-2, 0.5rem);\n      min-height: 1.25rem;\n    }\n    .c2g-field__message {\n      margin: 0;\n      font-size: var(--c2g-font-size-xs, 0.75rem);\n      color: var(--c2g-color-text-muted, #6b5e52);\n    }\n    .c2g-field__message--error {\n      color: var(--c2g-color-error, #ff6b6b);\n    }\n    .c2g-field__counter {\n      margin-left: auto;\n      font-size: var(--c2g-font-size-xs, 0.75rem);\n      color: var(--c2g-color-text-muted, #6b5e52);\n      font-variant-numeric: tabular-nums;\n    }\n    .c2g-field--sm .c2g-field__control-shell {\n      min-height: 2rem;\n      padding: 0 var(--c2g-space-2, 0.5rem);\n      border-radius: var(--c2g-radius-sm, 0.375rem);\n    }\n    .c2g-field--sm .c2g-field__control {\n      font-size: var(--c2g-font-size-sm, 0.875rem);\n    }\n    .c2g-field--sm .c2g-field__affix {\n      font-size: var(--c2g-font-size-xs, 0.75rem);\n    }\n    @keyframes c2g-field-spin {\n      from { transform: rotate(0deg); }\n      to { transform: rotate(360deg); }\n    }\n  `,\n})\nexport class InputComponent implements ControlValueAccessor {\n  readonly label = input('');\n  readonly hint = input('');\n  readonly error = input('');\n  readonly placeholder = input('');\n  readonly prefix = input('');\n  readonly suffix = input('');\n  readonly loading = input(false);\n  readonly compact = input(false);\n  readonly disabled = input(false);\n  readonly required = input(false);\n  readonly maxLength = input<number | null>(null);\n  readonly id = input('');\n  readonly type = input<'text' | 'email' | 'password' | 'search' | 'tel' | 'url'>('text');\n  readonly size = input<'md' | 'sm'>('md');\n\n  readonly valueChanged = output<string>();\n\n  readonly value = signal('');\n  readonly cvaDisabled = signal(false);\n  private readonly generatedId = `c2g-input-${++nextInputId}`;\n\n  readonly inputId = computed(() => this.id().trim() || this.generatedId);\n  readonly hintId = computed(() => `${this.inputId()}-hint`);\n  readonly errorId = computed(() => `${this.inputId()}-error`);\n  readonly counterId = computed(() => `${this.inputId()}-counter`);\n  readonly describedBy = computed(() => {\n    const ids: string[] = [];\n    if (this.error().trim()) {\n      ids.push(this.errorId());\n    } else if (this.hint().trim()) {\n      ids.push(this.hintId());\n    }\n    if (this.showCounter()) {\n      ids.push(this.counterId());\n    }\n    return ids.length > 0 ? ids.join(' ') : null;\n  });\n  readonly valueLength = computed(() => this.value().length);\n  readonly showCounter = computed(() => (this.maxLength() ?? 0) > 0);\n  readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n\n  private onChange: (value: string) => void = () => {};\n  private onTouched: () => void = () => {};\n\n  writeValue(value: string | null): void {\n    this.value.set(value ?? '');\n  }\n\n  registerOnChange(fn: (value: string) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.cvaDisabled.set(isDisabled);\n  }\n\n  onInput(event: Event): void {\n    const nextValue = (event.target as HTMLInputElement).value;\n    this.value.set(nextValue);\n    this.onChange(nextValue);\n    this.valueChanged.emit(nextValue);\n  }\n\n  onBlur(): void {\n    this.onTouched();\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  forwardRef,\n  input,\n  output,\n  signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { RadioOption } from './radio-group.model';\n\nlet nextRadioGroupId = 0;\n\n@Component({\n  selector: 'c2g-radio-group',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => RadioGroupComponent),\n      multi: true,\n    },\n  ],\n  template: `\n    <fieldset class=\"c2g-radio-group\" [disabled]=\"isDisabled()\">\n      @if (label().trim()) {\n        <legend class=\"c2g-radio-group__legend\">{{ label() }}</legend>\n      }\n\n      <div class=\"c2g-radio-group__options\" [class.c2g-radio-group__options--vertical]=\"orientation() === 'vertical'\">\n        @for (option of options(); track option.value) {\n          <label class=\"c2g-radio-group__option\" [class.c2g-radio-group__option--disabled]=\"isOptionDisabled(option)\">\n            <input\n              type=\"radio\"\n              class=\"c2g-radio-group__input\"\n              [name]=\"groupName()\"\n              [value]=\"option.value\"\n              [checked]=\"value() === option.value\"\n              [disabled]=\"isDisabled() || !!option.disabled\"\n              (change)=\"selectOption(option.value)\"\n              (blur)=\"onBlur()\"\n            />\n            <span class=\"c2g-radio-group__dot\" aria-hidden=\"true\"></span>\n            <span class=\"c2g-radio-group__text\">{{ option.label }}</span>\n          </label>\n        }\n      </div>\n\n      @if (hint().trim()) {\n        <p class=\"c2g-radio-group__hint\">{{ hint() }}</p>\n      }\n    </fieldset>\n  `,\n  styles: `\n    .c2g-radio-group {\n      border: 0;\n      margin: 0;\n      padding: 0;\n      min-width: 0;\n      font-family: var(--c2g-font-family-base, \"Quicksand\", \"Segoe UI\", sans-serif);\n    }\n    .c2g-radio-group__legend {\n      padding: 0;\n      margin-bottom: var(--c2g-space-2, 0.5rem);\n      font-size: var(--c2g-font-size-sm, 0.875rem);\n      font-weight: var(--c2g-font-weight-semibold, 600);\n      color: var(--c2g-color-text-secondary, #4a423b);\n    }\n    .c2g-radio-group__options {\n      display: flex;\n      gap: var(--c2g-space-3, 0.75rem);\n      flex-wrap: wrap;\n    }\n    .c2g-radio-group__options--vertical {\n      flex-direction: column;\n      align-items: flex-start;\n    }\n    .c2g-radio-group__option {\n      display: inline-flex;\n      align-items: center;\n      gap: var(--c2g-space-2, 0.5rem);\n      cursor: pointer;\n      color: var(--c2g-color-text-primary, #1a1714);\n      user-select: none;\n    }\n    .c2g-radio-group__option--disabled {\n      cursor: not-allowed;\n      opacity: 0.55;\n    }\n    .c2g-radio-group__input {\n      position: absolute;\n      opacity: 0;\n      pointer-events: none;\n    }\n    .c2g-radio-group__dot {\n      width: 1.125rem;\n      height: 1.125rem;\n      border-radius: 999px;\n      border: 1px solid var(--c2g-color-border-subtle, rgba(74, 66, 59, 0.18));\n      display: inline-grid;\n      place-items: center;\n      background: var(--c2g-color-surface, #ffffff);\n      transition: all var(--c2g-motion-duration-fast, 120ms) var(--c2g-motion-ease-standard, ease);\n      position: relative;\n    }\n    .c2g-radio-group__dot::after {\n      content: '';\n      width: 0.5rem;\n      height: 0.5rem;\n      border-radius: 999px;\n      background: var(--c2g-color-primary, #ff6b35);\n      transform: scale(0);\n      transition: transform var(--c2g-motion-duration-fast, 120ms) var(--c2g-motion-ease-standard, ease);\n    }\n    .c2g-radio-group__input:checked + .c2g-radio-group__dot {\n      border-color: var(--c2g-color-primary-dark, #e55623);\n    }\n    .c2g-radio-group__input:checked + .c2g-radio-group__dot::after {\n      transform: scale(1);\n    }\n    .c2g-radio-group__input:focus-visible + .c2g-radio-group__dot {\n      box-shadow: 0 0 0 3px color-mix(in srgb, var(--c2g-color-focus, #e55623) 24%, transparent);\n    }\n    .c2g-radio-group__text {\n      font-size: var(--c2g-font-size-sm, 0.875rem);\n    }\n    .c2g-radio-group__hint {\n      margin: var(--c2g-space-2, 0.5rem) 0 0;\n      color: var(--c2g-color-text-muted, #6b5e52);\n      font-size: var(--c2g-font-size-xs, 0.75rem);\n    }\n  `,\n})\nexport class RadioGroupComponent<T extends string = string> implements ControlValueAccessor {\n  readonly label = input('');\n  readonly hint = input('');\n  readonly disabled = input(false);\n  readonly orientation = input<'horizontal' | 'vertical'>('vertical');\n  readonly options = input<RadioOption<T>[]>([]);\n  readonly name = input('');\n\n  readonly valueChange = output<T>();\n\n  readonly value = signal<T | null>(null);\n  readonly cvaDisabled = signal(false);\n  private readonly generatedName = `c2g-radio-group-${++nextRadioGroupId}`;\n\n  readonly groupName = computed(() => this.name().trim() || this.generatedName);\n  readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n\n  private onChange: (value: T) => void = () => {};\n  private onTouched: () => void = () => {};\n\n  writeValue(value: T | null): void {\n    this.value.set(value);\n  }\n\n  registerOnChange(fn: (value: T) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.cvaDisabled.set(isDisabled);\n  }\n\n  isOptionDisabled(option: RadioOption<T>): boolean {\n    return this.isDisabled() || !!option.disabled;\n  }\n\n  selectOption(next: T): void {\n    if (this.isDisabled()) {\n      return;\n    }\n    this.value.set(next);\n    this.onChange(next);\n    this.valueChange.emit(next);\n  }\n\n  onBlur(): void {\n    this.onTouched();\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  OnInit,\n  inject,\n  input,\n} from '@angular/core';\nimport { Highlightable } from '@angular/cdk/a11y';\n\nlet nextOptionId = 0;\n\n@Component({\n  selector: 'c2g-select-option',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    role: 'option',\n    '[attr.aria-selected]': 'selected',\n    '[attr.aria-disabled]': 'disabled',\n    '[id]': 'optionId',\n    '[class.c2g-option--active]': '_active',\n    '[class.c2g-option--selected]': 'selected',\n    '[class.c2g-option--disabled]': 'disabled',\n    class: 'c2g-option',\n  },\n  template: `\n    <span class=\"c2g-option__label\">{{ label() }}</span>\n    @if (selected) {\n      <span class=\"c2g-option__check\" aria-hidden=\"true\">✓</span>\n    }\n  `,\n  styles: `\n    :host {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      gap: var(--c2g-space-2, 0.5rem);\n      padding: var(--c2g-space-2, 0.5rem) var(--c2g-space-3, 0.75rem);\n      cursor: pointer;\n      font-size: var(--c2g-font-size-md, 1rem);\n      color: var(--c2g-color-text-primary, #1a1714);\n      font-family: var(--c2g-font-family-base, \"Quicksand\", \"Segoe UI\", sans-serif);\n      border-radius: var(--c2g-radius-sm, 0.375rem);\n      transition: background 80ms ease;\n      user-select: none;\n      outline: none;\n    }\n\n    :host(.c2g-option--active) {\n      background: color-mix(in srgb, var(--c2g-color-primary, #e55623) 10%, transparent);\n      color: var(--c2g-color-primary, #e55623);\n    }\n\n    :host(.c2g-option--selected) {\n      font-weight: var(--c2g-font-weight-semibold, 600);\n      color: var(--c2g-color-primary, #e55623);\n    }\n\n    :host(.c2g-option--disabled) {\n      opacity: 0.45;\n      cursor: not-allowed;\n      pointer-events: none;\n    }\n\n    .c2g-option__check {\n      font-size: var(--c2g-font-size-sm, 0.875rem);\n      color: var(--c2g-color-primary, #e55623);\n      flex-shrink: 0;\n    }\n  `,\n})\nexport class SelectOptionComponent<T = string> implements Highlightable, OnInit {\n  readonly value = input.required<T>();\n  readonly label = input('');\n  readonly disabledInput = input(false, { alias: 'disabled' });\n\n  /** Satisfies `Highlightable.disabled: boolean | undefined` */\n  get disabled(): boolean {\n    return this.disabledInput();\n  }\n\n  readonly optionId = `c2g-option-${++nextOptionId}`;\n\n  /** Set by the parent panel when this option matches the current value */\n  selected = false;\n\n  _active = false;\n\n  private cdr = inject(ChangeDetectorRef);\n  private _elementRef = inject(ElementRef);\n\n  get element(): HTMLElement {\n    return this._elementRef.nativeElement;\n  }\n\n  ngOnInit(): void {}\n\n  // --- Highlightable ---\n  setActiveStyles(): void {\n    if (!this._active) {\n      this._active = true;\n      this.cdr.markForCheck();\n    }\n  }\n\n  setInactiveStyles(): void {\n    if (this._active) {\n      this._active = false;\n      this.cdr.markForCheck();\n    }\n  }\n\n  getLabel(): string {\n    return this.label();\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  OnDestroy,\n  QueryList,\n  ViewChildren,\n  inject,\n  input,\n  output,\n} from '@angular/core';\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { SelectOption } from '../select.model';\nimport { SelectOptionComponent } from '../select-option/select-option.component';\n\n@Component({\n  selector: 'c2g-select-panel',\n  standalone: true,\n  imports: [SelectOptionComponent],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    role: 'listbox',\n    '[attr.aria-multiselectable]': 'multiple()',\n    class: 'c2g-select-panel',\n    '(keydown)': 'onKeydown($event)',\n  },\n  template: `\n    @for (option of options(); track option.value) {\n      <c2g-select-option\n        [value]=\"option.value\"\n        [label]=\"option.label\"\n        [disabled]=\"option.disabled ?? false\"\n        (click)=\"onOptionClick(option)\"\n      />\n    }\n  `,\n  styles: `\n    :host {\n      display: block;\n      padding: var(--c2g-space-1, 0.25rem);\n      background: var(--c2g-color-surface, #ffffff);\n      border: 1px solid var(--c2g-color-border-subtle, rgba(74, 66, 59, 0.18));\n      border-radius: var(--c2g-radius-md, 0.625rem);\n      box-shadow: 0 4px 16px color-mix(in srgb, var(--c2g-color-shadow, #1a1714) 12%, transparent);\n      max-height: 18rem;\n      overflow-y: auto;\n      overflow-x: hidden;\n      outline: none;\n    }\n\n    :host::-webkit-scrollbar {\n      width: 4px;\n    }\n\n    :host::-webkit-scrollbar-track {\n      background: transparent;\n    }\n\n    :host::-webkit-scrollbar-thumb {\n      background: var(--c2g-color-border-subtle, rgba(74, 66, 59, 0.18));\n      border-radius: 2px;\n    }\n  `,\n})\nexport class SelectPanelComponent<T extends string = string> implements AfterViewInit, OnDestroy {\n  readonly options = input<SelectOption<T>[]>([]);\n  readonly selectedValue = input<T | null>(null);\n  readonly multiple = input(false);\n\n  readonly optionSelected = output<T>();\n\n  @ViewChildren(SelectOptionComponent)\n  optionItems!: QueryList<SelectOptionComponent<T>>;\n\n  keyManager!: ActiveDescendantKeyManager<SelectOptionComponent<T>>;\n\n  private cdr = inject(ChangeDetectorRef);\n\n  ngAfterViewInit(): void {\n    this.syncSelected();\n    this.keyManager = new ActiveDescendantKeyManager<SelectOptionComponent<T>>(\n      this.optionItems\n    ).withWrap().withTypeAhead();\n  }\n\n  ngOnDestroy(): void {\n    this.keyManager?.destroy();\n  }\n\n  /** Sync the selected state on all option items */\n  syncSelected(): void {\n    const current = this.selectedValue();\n    this.optionItems?.forEach((opt) => {\n      opt.selected = opt.value() === current;\n    });\n    this.cdr.markForCheck();\n  }\n\n  onKeydown(event: KeyboardEvent): void {\n    if (event.key === 'Enter' || event.key === ' ') {\n      event.preventDefault();\n      const active = this.keyManager?.activeItem;\n      if (active && !active.disabled) {\n        this.optionSelected.emit(active.value() as T);\n      }\n    } else {\n      this.keyManager?.onKeydown(event);\n    }\n  }\n\n  onOptionClick(option: SelectOption<T>): void {\n    if (option.disabled) return;\n    this.optionSelected.emit(option.value);\n  }\n\n  /** Called by parent after initialising to activate the selected item */\n  activateSelectedOrFirst(): void {\n    if (!this.keyManager) return;\n    const current = this.selectedValue();\n    if (current) {\n      const idx = this.optionItems.toArray().findIndex((o) => o.value() === current);\n      if (idx >= 0) {\n        this.keyManager.setActiveItem(idx);\n        return;\n      }\n    }\n    this.keyManager.setFirstItemActive();\n  }\n\n  activateLast(): void {\n    this.keyManager?.setLastItemActive();\n  }\n\n  get activeItemId(): string | null {\n    return this.keyManager?.activeItem?.optionId ?? null;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  ElementRef,\n  HostListener,\n  OnDestroy,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n  computed,\n  forwardRef,\n  inject,\n  input,\n  output,\n  signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n  ConnectedPosition,\n  Overlay,\n  OverlayModule,\n  OverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { SelectOption, SelectValue } from './select.model';\nimport { SelectPanelComponent } from './select-panel/select-panel.component';\n\nlet nextSelectId = 0;\n\n@Component({\n  selector: 'c2g-select',\n  standalone: true,\n  imports: [OverlayModule, SelectPanelComponent],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SelectComponent),\n      multi: true,\n    },\n  ],\n  template: `\n    <div class=\"c2g-field\">\n      @if (label().trim()) {\n        <label class=\"c2g-field__label\" [attr.for]=\"selectId()\">\n          {{ label() }}\n          @if (required()) {\n            <span class=\"c2g-field__required\" aria-hidden=\"true\">*</span>\n          }\n        </label>\n      }\n\n      <div\n        class=\"c2g-field__control-shell\"\n        [class.c2g-field__control-shell--error]=\"!!error().trim()\"\n        [class.c2g-field__control-shell--disabled]=\"isDisabled()\"\n        [class.c2g-select--open]=\"open()\">\n\n        <button\n          #triggerBtn\n          class=\"c2g-select__trigger\"\n          type=\"button\"\n          role=\"combobox\"\n          [id]=\"selectId()\"\n          [attr.aria-haspopup]=\"'listbox'\"\n          [attr.aria-expanded]=\"open()\"\n          [attr.aria-controls]=\"panelId()\"\n          [attr.aria-activedescendant]=\"activeDescendant()\"\n          [attr.aria-required]=\"required()\"\n          [attr.aria-invalid]=\"error().trim() ? 'true' : null\"\n          [attr.aria-describedby]=\"describedBy()\"\n          [disabled]=\"isDisabled()\"\n          (click)=\"toggle()\"\n          (blur)=\"onBlur()\">\n          <span class=\"c2g-select__value\" [class.c2g-select__value--placeholder]=\"!displayValue()\">\n            {{ displayValue() || placeholder() }}\n          </span>\n          <span class=\"c2g-select__chevron\" aria-hidden=\"true\">\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n                 width=\"1.25rem\" height=\"1.25rem\">\n              <polyline points=\"6 9 12 15 18 9\"></polyline>\n            </svg>\n          </span>\n        </button>\n      </div>\n\n      @if (!compact()) {\n        <div class=\"c2g-field__meta\">\n          @if (error().trim()) {\n            <p class=\"c2g-field__message c2g-field__message--error\" [id]=\"errorId()\">{{ error() }}</p>\n          } @else if (hint().trim()) {\n            <p class=\"c2g-field__message\" [id]=\"hintId()\">{{ hint() }}</p>\n          }\n        </div>\n      }\n    </div>\n\n    <ng-template #panelTpl>\n      <c2g-select-panel\n        [attr.id]=\"panelId()\"\n        [options]=\"options()\"\n        [selectedValue]=\"value()\"\n        [multiple]=\"multiple()\"\n        (optionSelected)=\"onOptionSelected($event)\"\n      />\n    </ng-template>\n  `,\n  styles: `\n    .c2g-field {\n      width: 100%;\n      display: grid;\n      gap: var(--c2g-space-2, 0.5rem);\n      font-family: var(--c2g-font-family-base, \"Quicksand\", \"Segoe UI\", sans-serif);\n    }\n\n    .c2g-field__label {\n      color: var(--c2g-color-text-secondary, #4a423b);\n      font-weight: var(--c2g-font-weight-semibold, 600);\n      font-size: var(--c2g-font-size-sm, 0.875rem);\n      display: inline-flex;\n      align-items: center;\n      gap: var(--c2g-space-1, 0.25rem);\n    }\n\n    .c2g-field__required {\n      color: var(--c2g-color-error, #ff6b6b);\n      line-height: 1;\n    }\n\n    .c2g-field__control-shell {\n      position: relative;\n      min-height: 2.75rem;\n      border: 1px solid var(--c2g-color-border-subtle, rgba(74, 66, 59, 0.18));\n      border-radius: var(--c2g-radius-md, 0.625rem);\n      background: var(--c2g-color-surface, #ffffff);\n      transition: border-color 120ms ease, box-shadow 120ms ease, background 120ms ease;\n    }\n\n    .c2g-field__control-shell:focus-within {\n      border-color: var(--c2g-color-focus, #e55623);\n      box-shadow: 0 0 0 3px color-mix(in srgb, var(--c2g-color-focus, #e55623) 20%, transparent);\n    }\n\n    .c2g-field__control-shell--error {\n      border-color: var(--c2g-color-error, #ff6b6b);\n    }\n\n    .c2g-field__control-shell--error:focus-within {\n      box-shadow: 0 0 0 3px color-mix(in srgb, var(--c2g-color-error, #ff6b6b) 20%, transparent);\n    }\n\n    .c2g-field__control-shell--disabled {\n      opacity: 0.6;\n      cursor: not-allowed;\n    }\n\n    /* Chevron rotates when open */\n    .c2g-select--open .c2g-select__chevron {\n      transform: rotate(180deg);\n    }\n\n    .c2g-select__trigger {\n      width: 100%;\n      height: 100%;\n      min-height: 2.75rem;\n      display: flex;\n      align-items: center;\n      gap: var(--c2g-space-2, 0.5rem);\n      padding: 0 var(--c2g-space-3, 0.75rem);\n      border: none;\n      background: transparent;\n      cursor: pointer;\n      font-family: inherit;\n      font-size: var(--c2g-font-size-md, 1rem);\n      color: var(--c2g-color-text-primary, #1a1714);\n      text-align: left;\n      border-radius: inherit;\n      outline: none;\n    }\n\n    .c2g-select__trigger:disabled {\n      cursor: not-allowed;\n    }\n\n    .c2g-select__value {\n      flex: 1;\n      min-width: 0;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n      line-height: 1.4;\n    }\n\n    .c2g-select__value--placeholder {\n      color: var(--c2g-color-text-muted, #6b5e52);\n    }\n\n    .c2g-select__chevron {\n      flex-shrink: 0;\n      color: var(--c2g-color-text-muted, #6b5e52);\n      display: flex;\n      align-items: center;\n      transition: transform 200ms ease, color 120ms ease;\n    }\n\n    .c2g-field__control-shell:focus-within .c2g-select__chevron,\n    .c2g-select--open .c2g-select__chevron {\n      color: var(--c2g-color-focus, #e55623);\n    }\n\n    .c2g-field__control-shell--error .c2g-select__chevron {\n      color: var(--c2g-color-error, #ff6b6b);\n    }\n\n    .c2g-field__meta {\n      display: flex;\n      align-items: baseline;\n      justify-content: space-between;\n      gap: var(--c2g-space-2, 0.5rem);\n      min-height: 1.25rem;\n    }\n\n    .c2g-field__message {\n      margin: 0;\n      font-size: var(--c2g-font-size-xs, 0.75rem);\n      color: var(--c2g-color-text-muted, #6b5e52);\n    }\n\n    .c2g-field__message--error {\n      color: var(--c2g-color-error, #ff6b6b);\n    }\n  `,\n})\nexport class SelectComponent<T extends string = string> implements ControlValueAccessor, OnDestroy {\n  // --- Inputs (same API as before + multiple) ---\n  readonly label = input('');\n  readonly placeholder = input('');\n  readonly hint = input('');\n  readonly error = input('');\n  readonly options = input<SelectOption<T>[]>([]);\n  readonly disabled = input(false);\n  readonly required = input(false);\n  readonly compact = input(false);\n  readonly id = input('');\n  readonly multiple = input<boolean>(false);\n\n  // --- Output ---\n  readonly valueChanged = output<T | null>();\n\n  // --- State ---\n  readonly value = signal<T | null>(null);\n  readonly cvaDisabled = signal(false);\n  readonly open = signal(false);\n  readonly activeDescendant = signal<string | null>(null);\n\n  private readonly generatedId = `c2g-select-${++nextSelectId}`;\n\n  readonly selectId = computed(() => this.id().trim() || this.generatedId);\n  readonly panelId = computed(() => `${this.selectId()}-panel`);\n  readonly hintId = computed(() => `${this.selectId()}-hint`);\n  readonly errorId = computed(() => `${this.selectId()}-error`);\n  readonly describedBy = computed(() => {\n    const ids: string[] = [];\n    if (this.error().trim()) ids.push(this.errorId());\n    else if (this.hint().trim()) ids.push(this.hintId());\n    return ids.length > 0 ? ids.join(' ') : null;\n  });\n  readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n\n  readonly displayValue = computed(() => {\n    const v = this.value();\n    if (!v) return '';\n    const found = this.options().find((o) => o.value === v);\n    return found?.label ?? v;\n  });\n\n  // --- Template refs ---\n  @ViewChild('triggerBtn', { read: ElementRef }) triggerRef!: ElementRef;\n  @ViewChild('panelTpl') panelTpl!: TemplateRef<void>;\n\n  // --- CDK Overlay ---\n  private overlay = inject(Overlay);\n  private vcr = inject(ViewContainerRef);\n  private cdr = inject(ChangeDetectorRef);\n  private overlayRef: OverlayRef | null = null;\n  private panelRef: SelectPanelComponent<T> | null = null;\n\n  // --- CVA internals ---\n  private onChange: (value: T | null) => void = () => {};\n  private onTouched: () => void = () => {};\n\n  // ─── ControlValueAccessor ────────────────────────────────────────────────\n\n  writeValue(value: T | null): void {\n    this.value.set(value ?? null);\n  }\n\n  registerOnChange(fn: (value: T | null) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.cvaDisabled.set(isDisabled);\n  }\n\n  // ─── Panel open/close ────────────────────────────────────────────────────\n\n  toggle(): void {\n    this.open() ? this.close() : this.openPanel();\n  }\n\n  openPanel(): void {\n    if (this.overlayRef || this.isDisabled()) return;\n\n    const positions: ConnectedPosition[] = [\n      { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top',    offsetY: 4  },\n      { originX: 'start', originY: 'top',    overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n      { originX: 'end',   originY: 'bottom', overlayX: 'end',   overlayY: 'top',    offsetY: 4  },\n      { originX: 'end',   originY: 'top',    overlayX: 'end',   overlayY: 'bottom', offsetY: -4 },\n    ];\n\n    this.overlayRef = this.overlay.create({\n      positionStrategy: this.overlay\n        .position()\n        .flexibleConnectedTo(this.triggerRef)\n        .withPositions(positions)\n        .withViewportMargin(8)\n        .withPush(true),\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\n      hasBackdrop: true,\n      backdropClass: 'cdk-overlay-transparent-backdrop',\n    });\n\n    // Match trigger width\n    const triggerWidth = (this.triggerRef.nativeElement as HTMLElement).offsetWidth;\n    this.overlayRef.updateSize({ minWidth: triggerWidth });\n\n    const portal = new TemplatePortal(this.panelTpl, this.vcr);\n    this.overlayRef.attach(portal);\n\n    this.overlayRef.backdropClick().subscribe(() => this.close());\n    this.open.set(true);\n\n    // After the panel renders, grab the component instance and set up keyboard management\n    // The panel is rendered via the template portal, so we access it via the overlay container\n    setTimeout(() => {\n      const panelEl = this.overlayRef?.overlayElement.querySelector('c2g-select-panel');\n      if (panelEl) {\n        // Focus the panel so keyboard events are routed there\n        (panelEl as HTMLElement).setAttribute('tabindex', '-1');\n        (panelEl as HTMLElement).focus();\n      }\n    });\n  }\n\n  close(): void {\n    if (this.overlayRef) {\n      this.overlayRef.dispose();\n      this.overlayRef = null;\n    }\n    this.panelRef = null;\n    this.activeDescendant.set(null);\n    this.open.set(false);\n    // Return focus to trigger\n    (this.triggerRef?.nativeElement as HTMLElement | undefined)?.focus();\n  }\n\n  onOptionSelected(value: T): void {\n    this.value.set(value);\n    this.onChange(value);\n    this.valueChanged.emit(value);\n    if (!this.multiple()) {\n      this.close();\n    }\n  }\n\n  onBlur(): void {\n    if (!this.open()) {\n      this.onTouched();\n    }\n  }\n\n  // ─── Keyboard on trigger ─────────────────────────────────────────────────\n\n  @HostListener('keydown', ['$event'])\n  onKeydown(event: KeyboardEvent): void {\n    if (this.isDisabled()) return;\n\n    if (!this.open()) {\n      if (event.key === 'ArrowDown') {\n        event.preventDefault();\n        this.openPanel();\n        // activateFirst is handled in openPanel's setTimeout\n      } else if (event.key === 'ArrowUp') {\n        event.preventDefault();\n        this.openPanel();\n      }\n      return;\n    }\n    // When open, pass to the panel\n    if (event.key === 'Escape') {\n      event.preventDefault();\n      this.close();\n      return;\n    }\n  }\n\n  @HostListener('document:keydown.escape')\n  onDocEscape(): void {\n    if (this.open()) {\n      this.close();\n    }\n  }\n\n  // ─── Lifecycle ───────────────────────────────────────────────────────────\n\n  ngOnDestroy(): void {\n    this.close();\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  forwardRef,\n  input,\n  output,\n  signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nlet nextSwitchId = 0;\n\n@Component({\n  selector: 'c2g-switch',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SwitchComponent),\n      multi: true,\n    },\n  ],\n  template: `\n    <div class=\"c2g-switch\">\n      <button\n        type=\"button\"\n        class=\"c2g-switch__control\"\n        role=\"switch\"\n        [id]=\"switchId()\"\n        [disabled]=\"isDisabled()\"\n        [attr.aria-checked]=\"checked() ? 'true' : 'false'\"\n        [attr.aria-describedby]=\"describedBy()\"\n        [class.c2g-switch__control--checked]=\"checked()\"\n        (click)=\"toggle()\"\n        (blur)=\"markTouched()\"\n      >\n        <span class=\"c2g-switch__thumb\"></span>\n      </button>\n\n      <label class=\"c2g-switch__label\" [attr.for]=\"switchId()\">{{ label() }}</label>\n    </div>\n\n    @if (hint().trim()) {\n      <p class=\"c2g-switch__hint\" [id]=\"hintId()\">{{ hint() }}</p>\n    }\n  `,\n  styles: `\n    .c2g-switch {\n      display: inline-flex;\n      align-items: center;\n      gap: var(--c2g-space-3, 0.75rem);\n      font-family: var(--c2g-font-family-base, \"Quicksand\", \"Segoe UI\", sans-serif);\n    }\n    .c2g-switch__control {\n      width: 2.75rem;\n      height: 1.625rem;\n      padding: 0.125rem;\n      border: 1px solid var(--c2g-color-border-subtle, rgba(74, 66, 59, 0.18));\n      border-radius: 999px;\n      background: var(--c2g-color-neutral-200, #e1d9ce);\n      display: inline-flex;\n      align-items: center;\n      justify-content: flex-start;\n      cursor: pointer;\n      transition: all var(--c2g-motion-duration-fast, 120ms) var(--c2g-motion-ease-standard, ease);\n    }\n    .c2g-switch__control--checked {\n      background: var(--c2g-color-primary, #ff6b35);\n      border-color: var(--c2g-color-primary-dark, #e55623);\n      justify-content: flex-end;\n    }\n    .c2g-switch__control:focus-visible {\n      outline: none;\n      box-shadow: 0 0 0 3px color-mix(in srgb, var(--c2g-color-focus, #e55623) 24%, transparent);\n    }\n    .c2g-switch__control:disabled {\n      cursor: not-allowed;\n      opacity: 0.55;\n    }\n    .c2g-switch__thumb {\n      width: 1.125rem;\n      height: 1.125rem;\n      border-radius: 999px;\n      background: var(--c2g-color-surface, #ffffff);\n      box-shadow: var(--c2g-shadow-sm, 0 0 3px rgba(31, 28, 25, 0.06));\n    }\n    .c2g-switch__label {\n      color: var(--c2g-color-text-primary, #1a1714);\n      font-size: var(--c2g-font-size-sm, 0.875rem);\n      user-select: none;\n    }\n    .c2g-switch__hint {\n      margin: var(--c2g-space-1, 0.25rem) 0 0;\n      color: var(--c2g-color-text-muted, #6b5e52);\n      font-size: var(--c2g-font-size-xs, 0.75rem);\n      font-family: var(--c2g-font-family-base, \"Quicksand\", \"Segoe UI\", sans-serif);\n    }\n  `,\n})\nexport class SwitchComponent implements ControlValueAccessor {\n  readonly id = input('');\n  readonly label = input('Toggle');\n  readonly hint = input('');\n  readonly disabled = input(false);\n\n  readonly checkedChange = output<boolean>();\n\n  readonly checked = signal(false);\n  readonly cvaDisabled = signal(false);\n  private readonly generatedId = `c2g-switch-${++nextSwitchId}`;\n\n  readonly switchId = computed(() => this.id().trim() || this.generatedId);\n  readonly hintId = computed(() => `${this.switchId()}-hint`);\n  readonly describedBy = computed(() => (this.hint().trim() ? this.hintId() : null));\n  readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n\n  private onChange: (value: boolean) => void = () => {};\n  private onTouched: () => void = () => {};\n\n  writeValue(value: boolean | null): void {\n    this.checked.set(!!value);\n  }\n\n  registerOnChange(fn: (value: boolean) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.cvaDisabled.set(isDisabled);\n  }\n\n  toggle(): void {\n    if (this.isDisabled()) {\n      return;\n    }\n    const next = !this.checked();\n    this.checked.set(next);\n    this.onChange(next);\n    this.checkedChange.emit(next);\n    this.onTouched();\n  }\n\n  markTouched(): void {\n    this.onTouched();\n  }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nexport type TagTone = 'neutral' | 'accent' | 'info' | 'success' | 'warning' | 'danger';\nexport type TagVariant = 'subtle' | 'solid' | 'outline';\nexport type TagSize = 'sm' | 'md';\n\n@Component({\n  selector: 'c2g-tag',\n  standalone: true,\n  imports: [MatIconModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <span class=\"c2g-tag\" [class]=\"classes()\" [attr.aria-label]=\"ariaLabel() || null\">\n      @if (icon() || iconFontIcon()) {\n        <mat-icon\n          class=\"c2g-tag__icon\"\n          [fontSet]=\"iconFontSet()\"\n          [fontIcon]=\"iconFontIcon()\"\n          [attr.aria-label]=\"iconAriaLabel() || null\"\n          [attr.aria-hidden]=\"iconAriaLabel() ? null : 'true'\"\n        >\n          {{ icon() }}\n        </mat-icon>\n      }\n      <span>{{ label() }}</span>\n    </span>\n  `,\n  styles: `\n    .c2g-tag {\n      display: inline-flex;\n      align-items: center;\n      gap: var(--c2g-space-1, 0.25rem);\n      border-radius: 999px;\n      border: 1px solid transparent;\n      font-family: var(--c2g-font-family-base, \"Quicksand\", \"Segoe UI\", sans-serif);\n      font-weight: var(--c2g-font-weight-medium, 500);\n      line-height: 1;\n      white-space: nowrap;\n    }\n    .c2g-tag--sm {\n      padding: 0.2rem 0.45rem;\n      font-size: 0.6875rem;\n    }\n    .c2g-tag--md {\n      padding: 0.3rem 0.6rem;\n      font-size: var(--c2g-font-size-xs, 0.75rem);\n    }\n    .c2g-tag__icon {\n      width: 0.875rem;\n      height: 0.875rem;\n      font-size: 0.8125rem;\n      line-height: 1;\n    }\n    .c2g-tag--dashed {\n      border-style: dashed;\n    }\n\n    /* ── subtle ── */\n    .c2g-tag--subtle.c2g-tag--neutral {\n      background: color-mix(in srgb, var(--c2g-color-text-secondary) 10%, var(--c2g-color-surface));\n      color: var(--c2g-color-text-secondary);\n    }\n    .c2g-tag--subtle.c2g-tag--accent {\n      background: color-mix(in srgb, var(--c2g-color-primary) 14%, var(--c2g-color-surface));\n      color: var(--c2g-color-primary-dark);\n    }\n    .c2g-tag--subtle.c2g-tag--info {\n      background: color-mix(in srgb, var(--c2g-color-info) 12%, var(--c2g-color-surface));\n      color: var(--c2g-color-info);\n    }\n    .c2g-tag--subtle.c2g-tag--success {\n      background: color-mix(in srgb, var(--c2g-color-success) 12%, var(--c2g-color-surface));\n      color: var(--c2g-color-success);\n    }\n    .c2g-tag--subtle.c2g-tag--warning {\n      background: color-mix(in srgb, var(--c2g-color-warning) 14%, var(--c2g-color-surface));\n      color: var(--c2g-color-warning-text);\n    }\n    .c2g-tag--subtle.c2g-tag--danger {\n      background: color-mix(in srgb, var(--c2g-color-error) 13%, var(--c2g-color-surface));\n      color: var(--c2g-color-error);\n    }\n\n    /* ── solid ── */\n    .c2g-tag--solid.c2g-tag--neutral {\n      background: var(--c2g-color-text-secondary);\n      color: var(--c2g-color-surface);\n    }\n    .c2g-tag--solid.c2g-tag--accent {\n      background: var(--c2g-color-primary);\n      color: var(--c2g-color-surface);\n    }\n    .c2g-tag--solid.c2g-tag--info {\n      background: var(--c2g-color-info);\n      color: var(--c2g-color-surface);\n    }\n    .c2g-tag--solid.c2g-tag--success {\n      background: var(--c2g-color-success);\n      color: var(--c2g-color-surface);\n    }\n    .c2g-tag--solid.c2g-tag--warning {\n      background: var(--c2g-color-warning);\n      color: var(--c2g-color-surface);\n    }\n    .c2g-tag--solid.c2g-tag--danger {\n      background: var(--c2g-color-error);\n      color: var(--c2g-color-surface);\n    }\n\n    /* ── outline ── */\n    .c2g-tag--outline.c2g-tag--neutral {\n      border-color: color-mix(in srgb, var(--c2g-color-text-secondary) 35%, transparent);\n      color: var(--c2g-color-text-secondary);\n      background: transparent;\n    }\n    .c2g-tag--outline.c2g-tag--accent {\n      border-color: color-mix(in srgb, var(--c2g-color-primary) 40%, transparent);\n      color: var(--c2g-color-primary-dark);\n      background: transparent;\n    }\n    .c2g-tag--outline.c2g-tag--info {\n      border-color: color-mix(in srgb, var(--c2g-color-info) 40%, transparent);\n      color: var(--c2g-color-info);\n      background: transparent;\n    }\n    .c2g-tag--outline.c2g-tag--success {\n      border-color: color-mix(in srgb, var(--c2g-color-success) 40%, transparent);\n      color: var(--c2g-color-success);\n      background: transparent;\n    }\n    .c2g-tag--outline.c2g-tag--warning {\n      border-color: color-mix(in srgb, var(--c2g-color-warning) 40%, transparent);\n      color: var(--c2g-color-warning-text);\n      background: transparent;\n    }\n    .c2g-tag--outline.c2g-tag--danger {\n      border-color: color-mix(in srgb, var(--c2g-color-error) 40%, transparent);\n      color: var(--c2g-color-error);\n      background: transparent;\n    }\n  `,\n})\nexport class TagComponent {\n  readonly label = input('Tag');\n  readonly tone = input<TagTone>('neutral');\n  readonly variant = input<TagVariant>('subtle');\n  readonly size = input<TagSize>('md');\n  readonly dashed = input(false);\n  readonly ariaLabel = input('');\n\n  readonly icon = input('');\n  readonly iconAriaLabel = input('');\n  readonly iconFontSet = input('');\n  readonly iconFontIcon = input('');\n\n  readonly classes = computed(\n    () =>\n      `c2g-tag c2g-tag--${this.size()} c2g-tag--${this.variant()} c2g-tag--${this.tone()}${this.dashed() ? ' c2g-tag--dashed' : ''}`\n  );\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  forwardRef,\n  input,\n  output,\n  signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nlet nextTextareaId = 0;\n\n@Component({\n  selector: 'c2g-textarea',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => TextareaComponent),\n      multi: true,\n    },\n  ],\n  template: `\n    <div class=\"c2g-field\">\n      @if (label().trim()) {\n        <label class=\"c2g-field__label\" [attr.for]=\"textareaId()\">\n          {{ label() }}\n          @if (required()) {\n            <span class=\"c2g-field__required\" aria-hidden=\"true\">*</span>\n          }\n        </label>\n      }\n\n      <div class=\"c2g-field__control-shell\" [class.c2g-field__control-shell--error]=\"!!error().trim()\">\n        @if (prefix().trim()) {\n          <span class=\"c2g-field__affix\" aria-hidden=\"true\">{{ prefix() }}</span>\n        }\n\n        <textarea\n          class=\"c2g-field__control\"\n          [id]=\"textareaId()\"\n          [value]=\"value()\"\n          [placeholder]=\"placeholder()\"\n          [disabled]=\"isDisabled()\"\n          [required]=\"required()\"\n          [attr.maxlength]=\"maxLength() || null\"\n          [rows]=\"rows()\"\n          [attr.aria-invalid]=\"error().trim() ? 'true' : null\"\n          [attr.aria-describedby]=\"describedBy()\"\n          [attr.aria-busy]=\"loading() ? 'true' : null\"\n          (input)=\"onInput($event)\"\n          (blur)=\"onBlur()\"\n        ></textarea>\n\n        @if (loading()) {\n          <span class=\"c2g-field__spinner\" aria-hidden=\"true\"></span>\n        }\n\n        @if (suffix().trim()) {\n          <span class=\"c2g-field__affix\" aria-hidden=\"true\">{{ suffix() }}</span>\n        }\n      </div>\n\n      <div class=\"c2g-field__meta\">\n        @if (error().trim()) {\n          <p class=\"c2g-field__message c2g-field__message--error\" [id]=\"errorId()\">{{ error() }}</p>\n        } @else if (hint().trim()) {\n          <p class=\"c2g-field__message\" [id]=\"hintId()\">{{ hint() }}</p>\n        }\n\n        @if (showCounter()) {\n          <span class=\"c2g-field__counter\" [id]=\"counterId()\">{{ valueLength() }} / {{ maxLength() }}</span>\n        }\n      </div>\n    </div>\n  `,\n  styles: `\n    .c2g-field {\n      width: 100%;\n      display: grid;\n      gap: var(--c2g-space-2, 0.5rem);\n      font-family: var(--c2g-font-family-base, \"Quicksand\", \"Segoe UI\", sans-serif);\n    }\n    .c2g-field__label {\n      color: var(--c2g-color-text-secondary, #4a423b);\n      font-weight: var(--c2g-font-weight-semibold, 600);\n      font-size: var(--c2g-font-size-sm, 0.875rem);\n      display: inline-flex;\n      align-items: center;\n      gap: var(--c2g-space-1, 0.25rem);\n    }\n    .c2g-field__required {\n      color: var(--c2g-color-error, #ff6b6b);\n      line-height: 1;\n    }\n    .c2g-field__control-shell {\n      border: 1px solid var(--c2g-color-border-subtle, rgba(74, 66, 59, 0.18));\n      border-radius: var(--c2g-radius-md, 0.625rem);\n      background: var(--c2g-color-surface, #ffffff);\n      display: flex;\n      align-items: flex-start;\n      gap: var(--c2g-space-2, 0.5rem);\n      padding: var(--c2g-space-2, 0.5rem) var(--c2g-space-3, 0.75rem);\n      transition:\n        border-color var(--c2g-motion-duration-fast, 120ms) var(--c2g-motion-ease-standard, ease),\n        box-shadow var(--c2g-motion-duration-fast, 120ms) var(--c2g-motion-ease-standard, ease);\n    }\n    .c2g-field__control-shell:focus-within {\n      border-color: var(--c2g-color-focus, #e55623);\n      box-shadow: 0 0 0 3px color-mix(in srgb, var(--c2g-color-focus, #e55623) 20%, transparent);\n    }\n    .c2g-field__control-shell--error {\n      border-color: var(--c2g-color-error, #ff6b6b);\n    }\n    .c2g-field__control {\n      width: 100%;\n      min-width: 0;\n      border: none;\n      background: transparent;\n      color: var(--c2g-color-text-primary, #1a1714);\n      font-size: var(--c2g-font-size-md, 1rem);\n      line-height: 1.4;\n      outline: none;\n      resize: vertical;\n      min-height: 5.5rem;\n      padding: 0;\n      margin: 0;\n      font-family: inherit;\n    }\n    .c2g-field__control::placeholder {\n      color: var(--c2g-color-text-muted, #6b5e52);\n    }\n    .c2g-field__control:disabled {\n      cursor: not-allowed;\n      opacity: 0.7;\n    }\n    .c2g-field__affix {\n      color: var(--c2g-color-text-muted, #6b5e52);\n      font-size: var(--c2g-font-size-sm, 0.875rem);\n      line-height: 1.5;\n      white-space: nowrap;\n      margin-top: var(--c2g-space-1, 0.25rem);\n    }\n    .c2g-field__spinner {\n      width: 1rem;\n      height: 1rem;\n      border: 2px solid var(--c2g-color-primary, #ff6b35);\n      border-right-color: transparent;\n      border-radius: 999px;\n      animation: c2g-field-spin 0.8s linear infinite;\n      flex: 0 0 auto;\n      margin-top: var(--c2g-space-1, 0.25rem);\n    }\n    .c2g-field__meta {\n      display: flex;\n      align-items: baseline;\n      justify-content: space-between;\n      gap: var(--c2g-space-2, 0.5rem);\n      min-height: 1.25rem;\n    }\n    .c2g-field__message {\n      margin: 0;\n      font-size: var(--c2g-font-size-xs, 0.75rem);\n      color: var(--c2g-color-text-muted, #6b5e52);\n    }\n    .c2g-field__message--error {\n      color: var(--c2g-color-error, #ff6b6b);\n    }\n    .c2g-field__counter {\n      margin-left: auto;\n      font-size: var(--c2g-font-size-xs, 0.75rem);\n      color: var(--c2g-color-text-muted, #6b5e52);\n      font-variant-numeric: tabular-nums;\n    }\n    @keyframes c2g-field-spin {\n      from { transform: rotate(0deg); }\n      to { transform: rotate(360deg); }\n    }\n  `,\n})\nexport class TextareaComponent implements ControlValueAccessor {\n  readonly label = input('');\n  readonly hint = input('');\n  readonly error = input('');\n  readonly placeholder = input('');\n  readonly prefix = input('');\n  readonly suffix = input('');\n  readonly loading = input(false);\n  readonly disabled = input(false);\n  readonly required = input(false);\n  readonly maxLength = input<number | null>(null);\n  readonly rows = input(4);\n  readonly id = input('');\n\n  readonly valueChanged = output<string>();\n\n  readonly value = signal('');\n  readonly cvaDisabled = signal(false);\n  private readonly generatedId = `c2g-textarea-${++nextTextareaId}`;\n\n  readonly textareaId = computed(() => this.id().trim() || this.generatedId);\n  readonly hintId = computed(() => `${this.textareaId()}-hint`);\n  readonly errorId = computed(() => `${this.textareaId()}-error`);\n  readonly counterId = computed(() => `${this.textareaId()}-counter`);\n  readonly describedBy = computed(() => {\n    const ids: string[] = [];\n    if (this.error().trim()) {\n      ids.push(this.errorId());\n    } else if (this.hint().trim()) {\n      ids.push(this.hintId());\n    }\n    if (this.showCounter()) {\n      ids.push(this.counterId());\n    }\n    return ids.length > 0 ? ids.join(' ') : null;\n  });\n  readonly valueLength = computed(() => this.value().length);\n  readonly showCounter = computed(() => (this.maxLength() ?? 0) > 0);\n  readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n\n  private onChange: (value: string) => void = () => {};\n  private onTouched: () => void = () => {};\n\n  writeValue(value: string | null): void {\n    this.value.set(value ?? '');\n  }\n\n  registerOnChange(fn: (value: string) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.cvaDisabled.set(isDisabled);\n  }\n\n  onInput(event: Event): void {\n    const nextValue = (event.target as HTMLTextAreaElement).value;\n    this.value.set(nextValue);\n    this.onChange(nextValue);\n    this.valueChanged.emit(nextValue);\n  }\n\n  onBlur(): void {\n    this.onTouched();\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  effect,\n  inject,\n  input,\n  output,\n  DOCUMENT\n} from '@angular/core';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { ModalSize } from './modal.models';\n\n@Component({\n  selector: 'c2g-modal',\n  standalone: true,\n  imports: [A11yModule],\n  templateUrl: './modal.component.html',\n  styleUrls: ['./modal.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ModalComponent {\n  private readonly document = inject(DOCUMENT);\n\n  readonly open = input(false);\n  readonly title = input('');\n  readonly size = input<ModalSize>('md');\n  readonly closable = input(true);\n  readonly lockBodyScroll = input(true);\n  readonly ariaLabel = input('');\n\n  readonly closed = output<void>();\n\n  readonly effectiveAriaLabel = computed(() => this.ariaLabel() || this.title() || 'Dialog');\n\n  readonly sizeClass = computed(() => `c2g-modal__panel--${this.size()}`);\n\n  constructor() {\n    effect(() => {\n      this.document.body.style.overflow = this.open() && this.lockBodyScroll() ? 'hidden' : '';\n    });\n  }\n\n  close(): void {\n    if (!this.closable()) return;\n    this.closed.emit();\n  }\n\n  onBackdropClick(event: MouseEvent): void {\n    if ((event.target as HTMLElement).classList.contains('c2g-modal__backdrop')) {\n      this.close();\n    }\n  }\n\n  onKeydown(event: KeyboardEvent): void {\n    if (event.key === 'Escape') {\n      this.close();\n    }\n  }\n}\n","@if (open()) {\n  <div\n    class=\"c2g-modal__backdrop\"\n    role=\"presentation\"\n    (click)=\"onBackdropClick($event)\"\n    (keydown)=\"onKeydown($event)\">\n    <div\n      class=\"c2g-modal__panel\"\n      [class]=\"sizeClass()\"\n      role=\"dialog\"\n      [attr.aria-label]=\"effectiveAriaLabel()\"\n      [attr.aria-modal]=\"true\"\n      cdkTrapFocus\n      cdkTrapFocusAutoCapture>\n\n      @if (title()) {\n        <div class=\"c2g-modal__header\">\n          <h2 class=\"c2g-modal__title\">{{ title() }}</h2>\n          @if (closable()) {\n            <button\n              class=\"c2g-modal__close\"\n              type=\"button\"\n              aria-label=\"Schließen\"\n              (click)=\"close()\">\n              ✕\n            </button>\n          }\n        </div>\n      }\n\n      <div class=\"c2g-modal__body\">\n        <ng-content />\n      </div>\n\n      <ng-content select=\"[c2g-modal-footer]\" />\n    </div>\n  </div>\n}\n","import { Injectable, signal } from '@angular/core';\nimport { C2gToast, C2gToastTone } from './toast.models';\n\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n  readonly toasts = signal<C2gToast[]>([]);\n\n  private show(message: string, tone: C2gToastTone, duration = 4000, action?: C2gToast['action']): void {\n    const id = `toast-${Date.now()}-${Math.random().toString(36).slice(2)}`;\n    this.toasts.update(list => [...list, { id, message, tone, duration, action }]);\n    if (duration > 0) {\n      setTimeout(() => this.dismiss(id), duration);\n    }\n  }\n\n  success(message: string, duration?: number) { this.show(message, 'success', duration); }\n  error(message: string, duration?: number)   { this.show(message, 'error', duration ?? 6000); }\n  warning(message: string, duration?: number) { this.show(message, 'warning', duration); }\n  info(message: string, duration?: number)    { this.show(message, 'info', duration); }\n\n  withAction(message: string, tone: C2gToastTone, action: C2gToast['action']): void {\n    this.show(message, tone, 0, action);\n  }\n\n  dismiss(id: string): void {\n    this.toasts.update(list => list.filter(t => t.id !== id));\n  }\n\n  dismissAll(): void {\n    this.toasts.set([]);\n  }\n}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { ToastService } from './toast.service';\n\n@Component({\n  selector: 'c2g-toast-container',\n  standalone: true,\n  imports: [],\n  templateUrl: './toast-container.component.html',\n  styleUrls: ['./toast-container.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ToastContainerComponent {\n  readonly toastService = inject(ToastService);\n  readonly toasts = this.toastService.toasts;\n\n  dismiss(id: string): void {\n    this.toastService.dismiss(id);\n  }\n\n  toneIcon(tone: string): string {\n    switch (tone) {\n      case 'success': return '✓';\n      case 'error':   return '✕';\n      case 'warning': return '⚠';\n      default:        return 'ℹ';\n    }\n  }\n}\n","<div class=\"c2g-toast-container\" aria-live=\"polite\" aria-atomic=\"false\">\n  @for (toast of toasts(); track toast.id) {\n    <div\n      class=\"c2g-toast\"\n      [class]=\"'c2g-toast--' + toast.tone\"\n      role=\"status\"\n    >\n      <span class=\"c2g-toast__icon\" aria-hidden=\"true\">{{ toneIcon(toast.tone) }}</span>\n      <span class=\"c2g-toast__message\">{{ toast.message }}</span>\n\n      @if (toast.action) {\n        <button\n          class=\"c2g-toast__action\"\n          type=\"button\"\n          (click)=\"toast.action!.callback(); dismiss(toast.id)\"\n        >\n          {{ toast.action.label }}\n        </button>\n      }\n\n      <button\n        class=\"c2g-toast__close\"\n        type=\"button\"\n        (click)=\"dismiss(toast.id)\"\n        aria-label=\"Schließen\"\n      >✕</button>\n    </div>\n  }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { ModalComponent } from '../modal/modal.component';\nimport { C2gConfirmDialogData } from './confirm-dialog.models';\n\n@Component({\n  selector: 'c2g-confirm-dialog',\n  standalone: true,\n  imports: [ModalComponent],\n  templateUrl: './confirm-dialog.component.html',\n  styleUrls: ['./confirm-dialog.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ConfirmDialogComponent {\n  readonly open = input(false);\n  readonly data = input.required<C2gConfirmDialogData>();\n\n  readonly confirmed = output<void>();\n  readonly cancelled = output<void>();\n\n  readonly confirmLabel = computed(() => this.data().confirmLabel ?? 'Bestätigen');\n  readonly cancelLabel  = computed(() => this.data().cancelLabel  ?? 'Abbrechen');\n  readonly tone         = computed(() => this.data().tone ?? 'info');\n}\n","<c2g-modal\n  [open]=\"open()\"\n  [title]=\"data().title\"\n  size=\"sm\"\n  (closed)=\"cancelled.emit()\"\n>\n  <div class=\"c2g-confirm-dialog\">\n    @if (data().icon) {\n      <div class=\"c2g-confirm-dialog__icon\" [class]=\"'c2g-confirm-dialog__icon--' + tone()\">\n        {{ data().icon }}\n      </div>\n    }\n\n    <p class=\"c2g-confirm-dialog__message\">{{ data().message }}</p>\n\n    <div class=\"c2g-confirm-dialog__actions\">\n      <button\n        class=\"c2g-confirm-dialog__btn c2g-confirm-dialog__btn--cancel\"\n        type=\"button\"\n        (click)=\"cancelled.emit()\"\n      >\n        {{ cancelLabel() }}\n      </button>\n      <button\n        class=\"c2g-confirm-dialog__btn\"\n        [class]=\"'c2g-confirm-dialog__btn--' + tone()\"\n        type=\"button\"\n        (click)=\"confirmed.emit()\"\n      >\n        {{ confirmLabel() }}\n      </button>\n    </div>\n  </div>\n</c2g-modal>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostListener,\n  OnDestroy,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n  computed,\n  inject,\n  input,\n  model,\n  output,\n  signal\n} from '@angular/core';\nimport {\n  ConnectedPosition,\n  Overlay,\n  OverlayModule,\n  OverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { C2gDateRange } from './date-range-picker.models';\n\ninterface CalendarDay {\n  date: Date;\n  currentMonth: boolean;\n  today: boolean;\n  inRange: boolean;\n  isStart: boolean;\n  isEnd: boolean;\n  disabled: boolean;\n}\n\nconst WEEKDAYS = ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So'];\nconst MONTHS = ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'];\n\nconst POSITIONS: ConnectedPosition[] = [\n  { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top',    offsetY:  6 },\n  { originX: 'start', originY: 'top',    overlayX: 'start', overlayY: 'bottom', offsetY: -6 },\n  { originX: 'end',   originY: 'bottom', overlayX: 'end',   overlayY: 'top',    offsetY:  6 },\n  { originX: 'end',   originY: 'top',    overlayX: 'end',   overlayY: 'bottom', offsetY: -6 },\n];\n\n@Component({\n  selector: 'c2g-date-range-picker',\n  standalone: true,\n  imports: [OverlayModule],\n  templateUrl: './date-range-picker.component.html',\n  styleUrls: ['./date-range-picker.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DateRangePickerComponent implements OnDestroy {\n  readonly value = model<C2gDateRange>({ from: null, to: null });\n  readonly minDate = input<Date | null>(null);\n  readonly maxDate = input<Date | null>(null);\n  readonly placeholder = input('Zeitraum wählen');\n\n  readonly rangeChanged = output<C2gDateRange>();\n\n  readonly open = signal(false);\n  readonly viewDate = signal(new Date());\n  readonly hoverDate = signal<Date | null>(null);\n\n  readonly weekdays = WEEKDAYS;\n  readonly months = MONTHS;\n\n  @ViewChild('triggerEl', { read: ElementRef }) triggerRef!: ElementRef;\n  @ViewChild('calendarTpl') calendarTpl!: TemplateRef<void>;\n\n  private overlay = inject(Overlay);\n  private vcr = inject(ViewContainerRef);\n  private overlayRef: OverlayRef | null = null;\n\n  readonly monthLabel = computed(() => {\n    const d = this.viewDate();\n    return `${MONTHS[d.getMonth()]} ${d.getFullYear()}`;\n  });\n\n  readonly days = computed((): CalendarDay[] => {\n    const vd = this.viewDate();\n    const year = vd.getFullYear();\n    const month = vd.getMonth();\n    const firstDay = new Date(year, month, 1);\n    const lastDay = new Date(year, month + 1, 0);\n    const today = new Date();\n    today.setHours(0, 0, 0, 0);\n\n    // Start from Monday\n    const startOffset = (firstDay.getDay() + 6) % 7;\n    const cells: CalendarDay[] = [];\n\n    for (let i = -startOffset; i < lastDay.getDate(); i++) {\n      const date = new Date(year, month, i + 1);\n      date.setHours(0, 0, 0, 0);\n      const { from, to } = this.value();\n      const hover = this.hoverDate();\n      const rangeEnd = to ?? hover;\n\n      const isStart = !!from && date.getTime() === from.getTime();\n      const isEnd = !!rangeEnd && date.getTime() === rangeEnd.getTime();\n      const inRange = !!from && !!rangeEnd &&\n        date > (from < rangeEnd ? from : rangeEnd) &&\n        date < (from < rangeEnd ? rangeEnd : from);\n\n      const min = this.minDate();\n      const max = this.maxDate();\n      const disabled = (!!min && date < min) || (!!max && date > max);\n\n      cells.push({\n        date,\n        currentMonth: date.getMonth() === month,\n        today: date.getTime() === today.getTime(),\n        inRange,\n        isStart,\n        isEnd,\n        disabled\n      });\n    }\n\n    // Pad to full weeks\n    while (cells.length % 7 !== 0) {\n      const last = cells[cells.length - 1].date;\n      const next = new Date(last);\n      next.setDate(next.getDate() + 1);\n      cells.push({ date: next, currentMonth: false, today: false, inRange: false, isStart: false, isEnd: false, disabled: true });\n    }\n\n    return cells;\n  });\n\n  readonly displayValue = computed(() => {\n    const { from, to } = this.value();\n    if (!from && !to) return '';\n    const fmt = (d: Date) => d.toLocaleDateString('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric' });\n    if (from && to) return `${fmt(from)} – ${fmt(to)}`;\n    if (from) return `${fmt(from)} – ...`;\n    return '';\n  });\n\n  toggleOpen(): void {\n    this.open() ? this.closeCalendar() : this.openCalendar();\n  }\n\n  openCalendar(): void {\n    if (this.overlayRef) return;\n\n    this.overlayRef = this.overlay.create({\n      positionStrategy: this.overlay\n        .position()\n        .flexibleConnectedTo(this.triggerRef)\n        .withPositions(POSITIONS)\n        .withViewportMargin(8)\n        .withPush(true),\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\n      hasBackdrop: true,\n      backdropClass: 'cdk-overlay-transparent-backdrop',\n      minWidth: this.triggerRef.nativeElement.offsetWidth,\n    });\n\n    this.overlayRef.attach(new TemplatePortal(this.calendarTpl, this.vcr));\n    this.overlayRef.backdropClick().subscribe(() => this.closeCalendar());\n    this.open.set(true);\n  }\n\n  closeCalendar(): void {\n    if (this.overlayRef) {\n      this.overlayRef.dispose();\n      this.overlayRef = null;\n    }\n    this.open.set(false);\n    this.hoverDate.set(null);\n  }\n\n  prevMonth(): void {\n    this.viewDate.update(d => new Date(d.getFullYear(), d.getMonth() - 1, 1));\n  }\n\n  nextMonth(): void {\n    this.viewDate.update(d => new Date(d.getFullYear(), d.getMonth() + 1, 1));\n  }\n\n  onDayClick(day: CalendarDay): void {\n    if (day.disabled) return;\n    const { from, to } = this.value();\n    if (!from || (from && to)) {\n      this.value.set({ from: day.date, to: null });\n    } else {\n      const range: C2gDateRange = day.date < from\n        ? { from: day.date, to: from }\n        : { from, to: day.date };\n      this.value.set(range);\n      this.rangeChanged.emit(range);\n      this.closeCalendar();\n    }\n  }\n\n  onDayHover(day: CalendarDay): void {\n    if (!this.value().from || this.value().to) return;\n    this.hoverDate.set(day.date);\n  }\n\n  clearRange(): void {\n    this.value.set({ from: null, to: null });\n    this.rangeChanged.emit({ from: null, to: null });\n  }\n\n  @HostListener('document:keydown.escape')\n  onEscape(): void {\n    this.closeCalendar();\n  }\n\n  ngOnDestroy(): void {\n    this.closeCalendar();\n  }\n}\n","<div #triggerEl class=\"c2g-drp\" [class.c2g-drp--open]=\"open()\">\n  <div class=\"c2g-drp__trigger\" (click)=\"toggleOpen()\">\n    <span class=\"c2g-drp__icon\" aria-hidden=\"true\">📅</span>\n    <span class=\"c2g-drp__value\" [class.c2g-drp__value--placeholder]=\"!displayValue()\">\n      {{ displayValue() || placeholder() }}\n    </span>\n    @if (value().from) {\n      <button\n        class=\"c2g-drp__clear\"\n        type=\"button\"\n        aria-label=\"Datum löschen\"\n        (click)=\"$event.stopPropagation(); clearRange()\"\n      >✕</button>\n    }\n    <span class=\"c2g-drp__chevron\" aria-hidden=\"true\">▾</span>\n  </div>\n</div>\n\n<ng-template #calendarTpl>\n  <div class=\"c2g-drp__calendar\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Kalender\">\n    <div class=\"c2g-drp__nav\">\n      <button class=\"c2g-drp__nav-btn\" type=\"button\" (click)=\"prevMonth()\" aria-label=\"Vorheriger Monat\">‹</button>\n      <span class=\"c2g-drp__month-label\">{{ monthLabel() }}</span>\n      <button class=\"c2g-drp__nav-btn\" type=\"button\" (click)=\"nextMonth()\" aria-label=\"Nächster Monat\">›</button>\n    </div>\n\n    <div class=\"c2g-drp__weekdays\">\n      @for (day of weekdays; track day) {\n        <span class=\"c2g-drp__weekday\">{{ day }}</span>\n      }\n    </div>\n\n    <div class=\"c2g-drp__grid\">\n      @for (day of days(); track day.date.getTime()) {\n        <button\n          class=\"c2g-drp__day\"\n          type=\"button\"\n          [class.c2g-drp__day--other-month]=\"!day.currentMonth\"\n          [class.c2g-drp__day--today]=\"day.today\"\n          [class.c2g-drp__day--start]=\"day.isStart\"\n          [class.c2g-drp__day--end]=\"day.isEnd\"\n          [class.c2g-drp__day--in-range]=\"day.inRange\"\n          [class.c2g-drp__day--disabled]=\"day.disabled\"\n          [disabled]=\"day.disabled || null\"\n          (click)=\"onDayClick(day)\"\n          (mouseenter)=\"onDayHover(day)\"\n          [attr.aria-label]=\"day.date.toLocaleDateString('de-DE')\"\n        >\n          {{ day.date.getDate() }}\n        </button>\n      }\n    </div>\n  </div>\n</ng-template>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  input,\n  output,\n} from '@angular/core';\nimport { ButtonComponent } from '../button/button.component';\nimport { ProgressComponent } from '../progress/progress.component';\n\nexport type StepperVariant = 'dot' | 'progress';\n\n@Component({\n  selector: 'c2g-stepper',\n  standalone: true,\n  imports: [ButtonComponent, ProgressComponent],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'c2g-stepper',\n    role: 'group',\n    '[attr.aria-label]': 'ariaLabel() || null',\n  },\n  template: `\n    <!-- ─── Header ─────────────────────────────────────────────────────────── -->\n    <header class=\"c2g-stepper__header\">\n      @if (showStepLabel()) {\n        <span class=\"c2g-stepper__step-label\" aria-live=\"polite\">\n          {{ stepLabel() }}\n        </span>\n      }\n\n      <!-- Dot indicator row -->\n      @if (variant() === 'dot') {\n        <div\n          class=\"c2g-stepper__dots\"\n          role=\"progressbar\"\n          [attr.aria-valuenow]=\"currentStep() + 1\"\n          [attr.aria-valuemin]=\"1\"\n          [attr.aria-valuemax]=\"totalSteps()\"\n          [attr.aria-label]=\"progressAriaLabel()\"\n        >\n          @for (i of stepIndices(); track i) {\n            <div\n              class=\"c2g-stepper__dot\"\n              [class.c2g-stepper__dot--done]=\"currentStep() > i\"\n              [class.c2g-stepper__dot--active]=\"currentStep() === i\"\n            ></div>\n          }\n        </div>\n      }\n\n      <!-- Skip / Close action -->\n      @if (showClose()) {\n        <c2g-button\n          class=\"c2g-stepper__close\"\n          variant=\"icon\"\n          icon=\"close\"\n          [iconOnly]=\"true\"\n          size=\"sm\"\n          [ariaLabel]=\"closeAriaLabel()\"\n          (clicked)=\"closed.emit()\"\n        />\n      }\n    </header>\n\n    <!-- ─── Progress bar ───────────────────────────────────────────────────── -->\n    @if (variant() === 'progress' || showProgressBar()) {\n      <c2g-progress\n        class=\"c2g-stepper__progress\"\n        [value]=\"currentStep() + 1\"\n        [max]=\"totalSteps()\"\n        size=\"sm\"\n        tone=\"primary\"\n        [showLabel]=\"false\"\n        [ariaLabel]=\"progressAriaLabel()\"\n      />\n    }\n\n    <!-- ─── Content slot ───────────────────────────────────────────────────── -->\n    <div class=\"c2g-stepper__body\">\n      <ng-content />\n    </div>\n\n    <!-- ─── Footer navigation ─────────────────────────────────────────────── -->\n    @if (!hideFooter()) {\n      <footer class=\"c2g-stepper__footer\">\n        @if (!isFirst()) {\n          <c2g-button\n            variant=\"ghost\"\n            icon=\"arrow_back\"\n            (clicked)=\"back.emit()\"\n          >{{ backLabel() }}</c2g-button>\n        } @else {\n          <span></span>\n        }\n\n        @if (!isLast()) {\n          <c2g-button\n            icon=\"arrow_forward\"\n            iconPosition=\"end\"\n            [disabled]=\"!canAdvance()\"\n            (clicked)=\"next.emit()\"\n          >{{ nextLabel() }}</c2g-button>\n        } @else {\n          <c2g-button\n            icon=\"check\"\n            iconPosition=\"end\"\n            [disabled]=\"!canAdvance()\"\n            (clicked)=\"finish.emit()\"\n          >{{ finishLabel() }}</c2g-button>\n        }\n      </footer>\n    }\n  `,\n  styles: `\n    :host.c2g-stepper {\n      display: flex;\n      flex-direction: column;\n      height: 100%;\n      font-family: var(--c2g-font-family-base, \"Quicksand\", \"Segoe UI\", sans-serif);\n    }\n\n    /* ─── Header ─────────────────────────────────────────────────────────── */\n    .c2g-stepper__header {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      padding: var(--c2g-space-4, 1rem) var(--c2g-space-4, 1rem) var(--c2g-space-3, 0.75rem);\n      gap: var(--c2g-space-3, 0.75rem);\n    }\n\n    .c2g-stepper__step-label {\n      font-size: var(--c2g-font-size-xs, 0.75rem);\n      font-weight: var(--c2g-font-weight-semibold, 600);\n      color: var(--c2g-color-text-muted, #6b5e52);\n      white-space: nowrap;\n      flex-shrink: 0;\n    }\n\n    /* ─── Dot indicator ───────────────────────────────────────────────────── */\n    .c2g-stepper__dots {\n      display: flex;\n      align-items: center;\n      gap: var(--c2g-space-1, 0.25rem);\n      flex: 1;\n      justify-content: center;\n    }\n\n    .c2g-stepper__dot {\n      width: 6px;\n      height: 6px;\n      border-radius: 999px;\n      background: var(--c2g-color-outline, #d1c4b5);\n      transition:\n        width var(--c2g-motion-duration-base, 200ms) var(--c2g-motion-ease-standard, ease),\n        background var(--c2g-motion-duration-base, 200ms) var(--c2g-motion-ease-standard, ease);\n    }\n\n    .c2g-stepper__dot--active {\n      width: 20px;\n      background: var(--c2g-color-primary, #ff6b35);\n    }\n\n    .c2g-stepper__dot--done {\n      background: var(--c2g-color-primary, #ff6b35);\n      opacity: 0.4;\n    }\n\n    /* ─── Close button ────────────────────────────────────────────────────── */\n    .c2g-stepper__close {\n      flex-shrink: 0;\n    }\n\n    /* ─── Progress bar ────────────────────────────────────────────────────── */\n    .c2g-stepper__progress {\n      display: block;\n    }\n\n    /* ─── Body ────────────────────────────────────────────────────────────── */\n    .c2g-stepper__body {\n      flex: 1;\n      display: flex;\n      flex-direction: column;\n      min-height: 0;\n      overflow-y: auto;\n      overflow-x: hidden;\n    }\n\n    /* ─── Footer ──────────────────────────────────────────────────────────── */\n    .c2g-stepper__footer {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      padding: var(--c2g-space-3, 0.75rem) var(--c2g-space-4, 1rem) var(--c2g-space-4, 1rem);\n      border-top: 1px solid var(--c2g-color-outline-variant, #e1d9ce);\n      gap: var(--c2g-space-3, 0.75rem);\n      flex-shrink: 0;\n    }\n\n    /* ─── Touch / notch safety ────────────────────────────────────────────── */\n    @media (max-width: 640px) {\n      .c2g-stepper__footer {\n        padding-bottom: calc(var(--c2g-space-4, 1rem) + env(safe-area-inset-bottom, 0px));\n      }\n\n      .c2g-stepper__header {\n        padding-top: calc(var(--c2g-space-3, 0.75rem) + env(safe-area-inset-top, 0px));\n      }\n    }\n\n    @media (hover: none) and (pointer: coarse) {\n      .c2g-stepper__footer c2g-button {\n        min-height: 44px;\n      }\n    }\n  `,\n})\nexport class StepperComponent {\n  /** Total number of steps in the wizard. */\n  readonly totalSteps = input.required<number>();\n\n  /** Zero-based index of the current active step. */\n  readonly currentStep = input(0);\n\n  /**\n   * Visual variant:\n   * - `dot` — animated dot row in the header (onboarding style)\n   * - `progress` — progress bar only, no dot row\n   */\n  readonly variant = input<StepperVariant>('dot');\n\n  /** Whether to render the footer navigation (back / next / finish). */\n  readonly hideFooter = input(false);\n\n  /** Whether to show the step-count label (e.g. \"2 of 5\"). */\n  readonly showStepLabel = input(true);\n\n  /**\n   * Whether to also render a `c2g-progress` bar below the header.\n   * When `variant` is `'progress'`, a bar is always rendered.\n   * For `'dot'` variant, set this to `true` to render both a dot row and a bar.\n   */\n  readonly showProgressBar = input(false);\n\n  /** Whether to show the close/skip icon button in the header. */\n  readonly showClose = input(false);\n\n  /** Label for the \"Back\" button. */\n  readonly backLabel = input('Back');\n\n  /** Label for the \"Next\" button. */\n  readonly nextLabel = input('Next');\n\n  /** Label for the \"Finish\" button on the last step. */\n  readonly finishLabel = input('Finish');\n\n  /**\n   * Pre-formatted step label string (e.g. \"Schritt 2 von 5\").\n   * When empty the component renders \"Step {n} of {total}\" using default logic.\n   */\n  readonly stepLabelText = input('');\n\n  /** Whether the user can advance to the next step. */\n  readonly canAdvance = input(true);\n\n  /** Accessible label for the host group element. */\n  readonly ariaLabel = input('');\n\n  /** Accessible label for the close/skip button. */\n  readonly closeAriaLabel = input('Skip');\n\n  // ─── Outputs ──────────────────────────────────────────────────────────────\n\n  /** Emitted when the user clicks the \"Next\" button. */\n  readonly next = output<void>();\n\n  /** Emitted when the user clicks the \"Back\" button. */\n  readonly back = output<void>();\n\n  /** Emitted when the user clicks the \"Finish\" button on the last step. */\n  readonly finish = output<void>();\n\n  /** Emitted when the user clicks the close/skip button. */\n  readonly closed = output<void>();\n\n  // ─── Derived ──────────────────────────────────────────────────────────────\n\n  /** Array of zero-based step indices for `@for` rendering. */\n  readonly stepIndices = computed(() =>\n    Array.from({ length: this.totalSteps() }, (_, i) => i)\n  );\n\n  readonly isFirst = computed(() => this.currentStep() === 0);\n\n  readonly isLast = computed(() => this.currentStep() >= this.totalSteps() - 1);\n\n  readonly stepLabel = computed(() => {\n    const custom = this.stepLabelText().trim();\n    if (custom) {\n      return custom;\n    }\n    return `Step ${this.currentStep() + 1} of ${this.totalSteps()}`;\n  });\n\n  readonly progressAriaLabel = computed(\n    () => `Step ${this.currentStep() + 1} of ${this.totalSteps()}`\n  );\n}\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core';\n\nexport interface PackingGap {\n  category: string;\n  severity: 'critical' | 'warning' | 'info';\n  message: string;\n  suggested_items?: string[];\n}\n\n@Component({\n  selector: 'c2g-packing-gap-banner',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    @if (hasGaps()) {\n      <div\n        class=\"pgb\"\n        [class.pgb--critical]=\"hasCritical()\"\n        [attr.role]=\"hasCritical() ? 'alert' : 'status'\"\n      >\n        <button class=\"pgb__header\" type=\"button\" (click)=\"toggle()\" [attr.aria-expanded]=\"expanded()\">\n          <span class=\"pgb__icon\" aria-hidden=\"true\">{{ hasCritical() ? '⚠' : 'ℹ' }}</span>\n          <span class=\"pgb__title\">\n            @if (hasCritical()) {\n              {{ criticalCount() }} kritische Kategorie{{ criticalCount() > 1 ? 'n fehlen' : ' fehlt' }}\n            } @else {\n              {{ gaps().length }} Hinweis{{ gaps().length > 1 ? 'e' : '' }} zur Packliste\n            }\n          </span>\n          <span class=\"pgb__chevron\" [class.pgb__chevron--open]=\"expanded()\" aria-hidden=\"true\">›</span>\n        </button>\n\n        @if (expanded()) {\n          <ul class=\"pgb__list\" role=\"list\">\n            @for (gap of gaps(); track gap.category + gap.message) {\n              <li class=\"pgb__item\" [class.pgb__item--critical]=\"gap.severity === 'critical'\">\n                <span class=\"pgb__item-icon\" aria-hidden=\"true\">\n                  {{ gap.severity === 'critical' ? '✕' : '▸' }}\n                </span>\n                <span class=\"pgb__item-text\">\n                  {{ gap.message }}\n                  @if (gap.suggested_items?.length) {\n                    <span class=\"pgb__item-suggestions\">— {{ gap.suggested_items!.join(', ') }}</span>\n                  }\n                </span>\n              </li>\n            }\n          </ul>\n        }\n      </div>\n    }\n  `,\n  styles: `\n    .pgb {\n      --pgb-color: var(--c2g-color-warning, #d97706);\n      --pgb-bg: color-mix(in srgb, var(--pgb-color) 10%, #fff);\n      --pgb-border: color-mix(in srgb, var(--pgb-color) 40%, transparent);\n      border: 1px solid var(--pgb-border);\n      border-radius: var(--c2g-radius-md, 0.625rem);\n      background: var(--pgb-bg);\n      overflow: hidden;\n      font-family: var(--c2g-font-family-base, \"Quicksand\", sans-serif);\n      font-size: var(--c2g-font-size-sm, 0.875rem);\n    }\n    .pgb--critical {\n      --pgb-color: var(--c2g-color-error, #dc2626);\n    }\n    .pgb__header {\n      display: flex;\n      align-items: center;\n      gap: 0.5rem;\n      width: 100%;\n      padding: 0.625rem 0.875rem;\n      background: none;\n      border: none;\n      cursor: pointer;\n      text-align: left;\n      color: inherit;\n      min-height: 44px;\n    }\n    .pgb__header:focus-visible {\n      outline: 2px solid var(--pgb-color);\n      outline-offset: -2px;\n    }\n    .pgb__icon {\n      color: var(--pgb-color);\n      font-size: 1rem;\n      flex-shrink: 0;\n      line-height: 1;\n    }\n    .pgb__title {\n      flex: 1;\n      font-weight: 600;\n      color: var(--c2g-color-text-primary, #1a1a1a);\n      line-height: 1.3;\n    }\n    .pgb__chevron {\n      color: var(--c2g-color-text-secondary, #666);\n      font-size: 1.25rem;\n      line-height: 1;\n      transition: transform 200ms ease;\n      display: inline-block;\n    }\n    .pgb__chevron--open {\n      transform: rotate(90deg);\n    }\n    .pgb__list {\n      list-style: none;\n      margin: 0;\n      padding: 0 0.875rem 0.75rem;\n      display: flex;\n      flex-direction: column;\n      gap: 0.375rem;\n    }\n    .pgb__item {\n      display: flex;\n      align-items: flex-start;\n      gap: 0.5rem;\n      color: var(--c2g-color-text-primary, #1a1a1a);\n      line-height: 1.4;\n    }\n    .pgb__item-icon {\n      flex-shrink: 0;\n      color: var(--pgb-color);\n      font-size: 0.75rem;\n      margin-top: 0.2rem;\n    }\n    .pgb__item--critical .pgb__item-icon {\n      color: var(--c2g-color-error, #dc2626);\n    }\n    .pgb__item-suggestions {\n      color: var(--c2g-color-text-secondary, #666);\n      font-style: italic;\n    }\n  `,\n})\nexport class PackingGapBannerComponent {\n  readonly gaps = input<PackingGap[]>([]);\n\n  readonly expanded = signal(false);\n\n  readonly criticalCount = computed(() =>\n    this.gaps().filter(g => g.severity === 'critical').length\n  );\n  readonly hasCritical = computed(() => this.criticalCount() > 0);\n  readonly hasGaps = computed(() => this.gaps().length > 0);\n\n  toggle(): void {\n    this.expanded.update(v => !v);\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostListener,\n  Injector,\n  OnDestroy,\n  ViewChild,\n  inject,\n  input,\n  output,\n  signal,\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n  Overlay,\n  OverlayRef,\n  OverlayModule,\n  ConnectedPosition,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { TemplateRef, ViewContainerRef } from '@angular/core';\n\nexport interface C2gDropdownMenuItem {\n  id: string;\n  label: string;\n  icon?: string;\n  danger?: boolean;\n  disabled?: boolean;\n  dividerBefore?: boolean;\n}\n\n@Component({\n  selector: 'c2g-dropdown-menu',\n  standalone: true,\n  imports: [MatIconModule, OverlayModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <button\n      #triggerBtn\n      class=\"c2g-ddm__trigger\"\n      [class.c2g-ddm__trigger--icon]=\"triggerIcon()\"\n      [class.c2g-ddm--open]=\"open()\"\n      type=\"button\"\n      [attr.aria-haspopup]=\"'menu'\"\n      [attr.aria-expanded]=\"open()\"\n      [attr.aria-label]=\"triggerLabel()\"\n      (click)=\"toggle()\">\n      @if (triggerIcon()) {\n        <mat-icon aria-hidden=\"true\">{{ triggerIcon() }}</mat-icon>\n      } @else {\n        <span class=\"c2g-ddm__trigger-dots\" aria-hidden=\"true\">⋯</span>\n      }\n    </button>\n\n    <ng-template #menuTpl>\n      <div class=\"c2g-ddm__menu\" role=\"menu\" (click)=\"$event.stopPropagation()\">\n        @for (item of items(); track item.id) {\n          @if (item.dividerBefore) {\n            <div class=\"c2g-ddm__divider\" role=\"separator\"></div>\n          }\n          <button\n            class=\"c2g-ddm__item\"\n            [class.c2g-ddm__item--danger]=\"item.danger\"\n            type=\"button\"\n            role=\"menuitem\"\n            [disabled]=\"item.disabled\"\n            (click)=\"selectItem(item)\">\n            @if (item.icon) {\n              <mat-icon class=\"c2g-ddm__item-icon\" aria-hidden=\"true\">{{ item.icon }}</mat-icon>\n            }\n            {{ item.label }}\n          </button>\n        }\n      </div>\n    </ng-template>\n  `,\n  styles: `\n    :host {\n      display: inline-grid;\n      justify-items: end;\n    }\n\n    .c2g-ddm__trigger {\n      width: 1.75rem;\n      height: 1.75rem;\n      border: 1px solid var(--c2g-color-outline-variant);\n      border-radius: 0.4rem;\n      background: transparent;\n      color: var(--c2g-color-text-muted);\n      font-size: 1rem;\n      line-height: 1;\n      cursor: pointer;\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      padding: 0;\n      transition: background 100ms;\n    }\n\n    .c2g-ddm--open.c2g-ddm__trigger,\n    .c2g-ddm__trigger:hover {\n      background: var(--c2g-color-neutral-bg);\n      color: var(--c2g-color-text-primary);\n    }\n\n    .c2g-ddm__trigger:focus-visible {\n      outline: 2px solid var(--c2g-color-primary);\n      outline-offset: 1px;\n    }\n\n    .c2g-ddm__trigger--icon {\n      width: 2.5rem;\n      height: 2.5rem;\n      border-radius: 50%;\n      border-color: transparent;\n    }\n    .c2g-ddm__trigger--icon:hover,\n    .c2g-ddm--open.c2g-ddm__trigger--icon {\n      background: color-mix(in srgb, currentColor 12%, transparent);\n    }\n\n    .c2g-ddm__trigger-dots {\n      font-size: 1rem;\n      letter-spacing: 0.05em;\n    }\n  `,\n})\nexport class DropdownMenuComponent implements OnDestroy {\n  readonly items = input.required<C2gDropdownMenuItem[]>();\n  readonly triggerLabel = input('Aktionen');\n  readonly triggerIcon = input('');\n  readonly alignEnd = input(false);\n\n  readonly itemSelected = output<C2gDropdownMenuItem>();\n\n  readonly open = signal(false);\n\n  @ViewChild('triggerBtn', { read: ElementRef }) triggerRef!: ElementRef;\n  @ViewChild('menuTpl') menuTpl!: TemplateRef<void>;\n\n  private overlay = inject(Overlay);\n  private vcr = inject(ViewContainerRef);\n  private overlayRef: OverlayRef | null = null;\n\n  toggle(): void {\n    this.open() ? this.close() : this.openMenu();\n  }\n\n  openMenu(): void {\n    if (this.overlayRef) return;\n\n    const preferred = this.alignEnd()\n      ? ([\n          { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top',    offsetY:  4 },\n          { originX: 'start', originY: 'top',    overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n          { originX: 'end',   originY: 'bottom', overlayX: 'end',   overlayY: 'top',    offsetY:  4 },\n          { originX: 'end',   originY: 'top',    overlayX: 'end',   overlayY: 'bottom', offsetY: -4 },\n        ] as ConnectedPosition[])\n      : ([\n          { originX: 'end',   originY: 'bottom', overlayX: 'end',   overlayY: 'top',    offsetY:  4 },\n          { originX: 'end',   originY: 'top',    overlayX: 'end',   overlayY: 'bottom', offsetY: -4 },\n          { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top',    offsetY:  4 },\n          { originX: 'start', originY: 'top',    overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n        ] as ConnectedPosition[]);\n\n    this.overlayRef = this.overlay.create({\n      positionStrategy: this.overlay\n        .position()\n        .flexibleConnectedTo(this.triggerRef)\n        .withPositions(preferred)\n        .withViewportMargin(8)\n        .withPush(true),\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\n      hasBackdrop: true,\n      backdropClass: 'cdk-overlay-transparent-backdrop',\n    });\n\n    this.overlayRef.attach(new TemplatePortal(this.menuTpl, this.vcr));\n    this.overlayRef.backdropClick().subscribe(() => this.close());\n    this.open.set(true);\n  }\n\n  close(): void {\n    if (this.overlayRef) {\n      this.overlayRef.dispose();\n      this.overlayRef = null;\n    }\n    this.open.set(false);\n  }\n\n  selectItem(item: C2gDropdownMenuItem): void {\n    if (item.disabled) return;\n    this.close();\n    this.itemSelected.emit(item);\n  }\n\n  @HostListener('document:keydown.escape')\n  onEscape(): void {\n    this.close();\n  }\n\n  ngOnDestroy(): void {\n    this.close();\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostListener,\n  OnDestroy,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n  inject,\n  input,\n  output,\n  signal,\n} from '@angular/core';\nimport {\n  ConnectedPosition,\n  Overlay,\n  OverlayModule,\n  OverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\n\nexport type PopupAlign = 'start' | 'end';\nexport type PopupPosition = 'bottom' | 'top';\n\n@Component({\n  selector: 'c2g-popup',\n  standalone: true,\n  imports: [OverlayModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <div #triggerEl class=\"c2g-popup__trigger\" (click)=\"toggle()\">\n      <ng-content select=\"[trigger]\" />\n    </div>\n\n    <ng-template #panelTpl>\n      <div class=\"c2g-popup__panel\" role=\"menu\" (click)=\"$event.stopPropagation()\">\n        <ng-content select=\"[panel]\" />\n      </div>\n    </ng-template>\n  `,\n  styles: `\n    :host {\n      display: inline-flex;\n      align-items: center;\n    }\n\n    .c2g-popup__trigger {\n      display: inline-flex;\n      align-items: center;\n    }\n  `,\n  host: {\n    '[class.c2g-popup--open]': 'open()',\n  },\n})\nexport class PopupComponent implements OnDestroy {\n  readonly align = input<PopupAlign>('end');\n  readonly position = input<PopupPosition>('bottom');\n  readonly minWidth = input<string>('');\n  readonly maxWidth = input<string>('320px');\n\n  readonly opened = output<void>();\n  readonly closed = output<void>();\n\n  readonly open = signal(false);\n\n  @ViewChild('triggerEl', { read: ElementRef }) private triggerRef!: ElementRef;\n  @ViewChild('panelTpl') private panelTpl!: TemplateRef<void>;\n\n  private readonly overlay = inject(Overlay);\n  private readonly vcr = inject(ViewContainerRef);\n  private overlayRef: OverlayRef | null = null;\n\n  toggle(): void {\n    this.open() ? this.closePanel() : this.openPanel();\n  }\n\n  openPanel(): void {\n    if (this.overlayRef) return;\n\n    const align = this.align();\n    const pos = this.position();\n    const originY = pos === 'bottom' ? 'bottom' : 'top';\n    const overlayY = pos === 'bottom' ? 'top' : 'bottom';\n    const offsetY = pos === 'bottom' ? 6 : -6;\n\n    const preferred: ConnectedPosition[] =\n      align === 'end'\n        ? [\n            { originX: 'end',   originY, overlayX: 'end',   overlayY, offsetY },\n            { originX: 'start', originY, overlayX: 'start', overlayY, offsetY },\n          ]\n        : [\n            { originX: 'start', originY, overlayX: 'start', overlayY, offsetY },\n            { originX: 'end',   originY, overlayX: 'end',   overlayY, offsetY },\n          ];\n\n    this.overlayRef = this.overlay.create({\n      positionStrategy: this.overlay\n        .position()\n        .flexibleConnectedTo(this.triggerRef)\n        .withPositions(preferred)\n        .withViewportMargin(8)\n        .withPush(true),\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\n      hasBackdrop: true,\n      backdropClass: 'cdk-overlay-transparent-backdrop',\n      minWidth: this.minWidth() || undefined,\n      maxWidth: this.maxWidth() || undefined,\n    });\n\n    this.overlayRef.attach(new TemplatePortal(this.panelTpl, this.vcr));\n    this.overlayRef.backdropClick().subscribe(() => this.closePanel());\n    this.open.set(true);\n    this.opened.emit();\n  }\n\n  closePanel(): void {\n    if (this.overlayRef) {\n      this.overlayRef.dispose();\n      this.overlayRef = null;\n    }\n    this.open.set(false);\n    this.closed.emit();\n  }\n\n  @HostListener('document:keydown.escape')\n  onEscape(): void {\n    this.closePanel();\n  }\n\n  ngOnDestroy(): void {\n    this.closePanel();\n  }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nexport interface C2gWeatherDay {\n  date: string;\n  icon: string;\n  description: string;\n  temperature: { min: number; max: number };\n}\n\nconst ICON_MAP: Record<string, string> = {\n  sunny:          '☀️',\n  clear:          '☀️',\n  'partly-cloudy': '⛅',\n  partly_cloudy:  '⛅',\n  cloudy:         '☁️',\n  overcast:       '☁️',\n  'light-rain':   '🌦️',\n  light_rain:     '🌦️',\n  rain:           '🌧️',\n  'heavy-rain':   '⛈️',\n  heavy_rain:     '⛈️',\n  snow:           '❄️',\n  fog:            '🌫️',\n  thunder:        '⛈️',\n  wind:           '💨',\n};\n\nfunction resolveIcon(icon: string): string {\n  return ICON_MAP[icon?.toLowerCase()] ?? '🌤️';\n}\n\n@Component({\n  selector: 'c2g-weather-widget',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: { class: 'c2g-weather-widget' },\n  styles: [`\n    :host { display: block; }\n\n    .wx {\n      display: flex;\n      flex-direction: column;\n      gap: 0.625rem;\n      font-family: var(--c2g-font-family-base, \"Quicksand\", sans-serif);\n    }\n\n    /* ── Hero ─────────────────────────────────────────────────────────────── */\n    .wx__hero {\n      display: flex;\n      align-items: center;\n      gap: var(--c2g-space-3, 0.75rem);\n      padding: var(--c2g-space-3, 0.75rem) var(--c2g-space-4, 1rem);\n      border-radius: var(--c2g-radius-lg, 0.75rem);\n      background: linear-gradient(135deg,\n        var(--c2g-color-primary-container, #ffede6) 0%,\n        color-mix(in srgb, var(--c2g-color-primary-container, #ffede6) 60%, #fff) 100%);\n      border: 1px solid color-mix(in srgb, var(--c2g-color-primary, #ff6b35) 15%, transparent);\n    }\n\n    .wx__hero-icon { font-size: 2.25rem; line-height: 1; flex-shrink: 0; }\n\n    .wx__hero-body { flex: 1; min-width: 0; }\n\n    .wx__temp {\n      font-size: 1.75rem;\n      font-weight: 700;\n      color: var(--c2g-color-text-primary, #1a1714);\n      line-height: 1;\n      letter-spacing: -0.03em;\n    }\n\n    .wx__temp sup { font-size: 0.9rem; font-weight: 500; vertical-align: super; }\n\n    .wx__condition {\n      font-size: 0.8125rem;\n      font-weight: 500;\n      color: var(--c2g-color-text-secondary, #4a423b);\n      margin-top: 0.125rem;\n    }\n\n    .wx__meta {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 0.2rem 0.4rem;\n      margin-top: 0.25rem;\n      font-size: 0.75rem;\n      color: var(--c2g-color-text-muted, #6b5e52);\n    }\n\n    .wx__location {\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      max-width: 22ch;\n    }\n\n    .wx__hero-range { text-align: right; flex-shrink: 0; }\n\n    .wx__high {\n      display: block;\n      font-size: 0.8125rem;\n      font-weight: 700;\n      color: var(--c2g-color-primary, #ff6b35);\n    }\n\n    .wx__low {\n      display: block;\n      font-size: 0.75rem;\n      color: var(--c2g-color-text-muted, #6b5e52);\n      margin-top: 0.1rem;\n    }\n\n    /* ── Forecast row ─────────────────────────────────────────────────────── */\n    .wx__forecast {\n      display: grid;\n      grid-template-columns: repeat(2, 1fr);\n      gap: var(--c2g-space-2, 0.5rem);\n    }\n\n    .wx__forecast[data-slots=\"3\"] { grid-template-columns: repeat(3, 1fr); }\n\n    .wx__slot {\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      gap: 0.15rem;\n      padding: 0.5rem 0.25rem;\n      border-radius: var(--c2g-radius-md, 0.5rem);\n      border: 1px solid var(--c2g-color-outline-variant, #e1d9ce);\n      background: var(--c2g-color-bg-base, #f8f6f3);\n      text-align: center;\n    }\n\n    .wx__slot-label {\n      font-size: 0.625rem;\n      font-weight: 700;\n      color: var(--c2g-color-primary, #ff6b35);\n      text-transform: uppercase;\n      letter-spacing: 0.06em;\n    }\n\n    .wx__slot-date {\n      font-size: 0.6875rem;\n      color: var(--c2g-color-text-muted, #6b5e52);\n    }\n\n    .wx__slot-icon { font-size: 1.375rem; line-height: 1; margin: 0.1rem 0; }\n\n    .wx__slot-temps { display: flex; gap: 0.25rem; align-items: baseline; }\n\n    .wx__slot-max {\n      font-size: 0.875rem;\n      font-weight: 700;\n      color: var(--c2g-color-text-primary, #1a1714);\n    }\n\n    .wx__slot-min { font-size: 0.75rem; color: var(--c2g-color-text-muted, #6b5e52); }\n  `],\n  template: `\n    @if (currentDay()) {\n      <div class=\"wx\">\n        <div class=\"wx__hero\">\n          <span class=\"wx__hero-icon\">{{ icon() }}</span>\n          <div class=\"wx__hero-body\">\n            <div class=\"wx__temp\">{{ currentDay()!.temperature.max }}<sup>°</sup></div>\n            <div class=\"wx__condition\">{{ currentDay()!.description }}</div>\n            @if (destination()) {\n              <div class=\"wx__meta\">\n                <span class=\"wx__location\">📍 {{ destination() }}</span>\n              </div>\n            }\n          </div>\n          <div class=\"wx__hero-range\">\n            <span class=\"wx__high\">↑ {{ currentDay()!.temperature.max }}°</span>\n            <span class=\"wx__low\">↓ {{ currentDay()!.temperature.min }}°</span>\n          </div>\n        </div>\n\n        @if (forecastSlots().length > 1) {\n          <div class=\"wx__forecast\" [attr.data-slots]=\"forecastSlots().length\">\n            @for (slot of forecastSlots(); track $index) {\n              <div class=\"wx__slot\">\n                <span class=\"wx__slot-label\">{{ slotLabel($index, forecastSlots().length) }}</span>\n                <span class=\"wx__slot-date\">{{ shortDate(slot.date) }}</span>\n                <span class=\"wx__slot-icon\">{{ resolveIcon(slot.icon) }}</span>\n                <div class=\"wx__slot-temps\">\n                  <span class=\"wx__slot-max\">{{ slot.temperature.max }}°</span>\n                  <span class=\"wx__slot-min\">{{ slot.temperature.min }}°</span>\n                </div>\n              </div>\n            }\n          </div>\n        }\n      </div>\n    }\n  `,\n})\nexport class WeatherWidgetComponent {\n  readonly currentDay    = input<C2gWeatherDay | null>(null);\n  readonly forecastSlots = input<C2gWeatherDay[]>([]);\n  readonly destination   = input<string>('');\n\n  readonly icon = computed(() => resolveIcon(this.currentDay()?.icon ?? ''));\n\n  resolveIcon = resolveIcon;\n\n  slotLabel(index: number, total: number): string {\n    if (total === 1) return 'Trip';\n    if (index === 0) return 'Arrival';\n    if (index === total - 1) return 'Departure';\n    return 'Mid';\n  }\n\n  shortDate(date: string): string {\n    return new Date(date).toLocaleDateString('default', { day: 'numeric', month: 'short' });\n  }\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nexport interface C2gWeatherSnippet {\n  icon: string;\n  temp: number;\n}\n\n@Component({\n  selector: 'c2g-date-preset-card',\n  standalone: true,\n  imports: [MatIconModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styles: [`\n    :host { display: contents; }\n\n    .dpc {\n      display: flex;\n      flex-direction: column;\n      gap: var(--c2g-space-xs, 0.25rem);\n      width: 100%;\n      padding: var(--c2g-space-md, 1rem);\n      border: 1.5px solid var(--c2g-color-outline-variant, #e1d9ce);\n      border-radius: var(--c2g-radius-lg, 0.75rem);\n      background: var(--c2g-color-bg-base, #f8f6f3);\n      font-family: var(--c2g-font-family-base, \"Quicksand\", sans-serif);\n      cursor: pointer;\n      text-align: left;\n      box-sizing: border-box;\n      transition:\n        border-color var(--c2g-motion-duration-fast, 120ms) ease,\n        background var(--c2g-motion-duration-fast, 120ms) ease,\n        box-shadow var(--c2g-motion-duration-fast, 120ms) ease,\n        transform var(--c2g-motion-duration-fast, 120ms) ease;\n    }\n\n    .dpc:focus-visible {\n      outline: none;\n      box-shadow: 0 0 0 3px color-mix(in srgb, var(--c2g-color-primary, #ff6b35) 30%, transparent);\n    }\n\n    .dpc:disabled {\n      opacity: 0.45;\n      cursor: not-allowed;\n    }\n\n    @media (hover: hover) {\n      .dpc:hover:not(:disabled) {\n        border-color: var(--c2g-color-primary, #ff6b35);\n        background: var(--c2g-color-primary-container, #ffede6);\n        box-shadow: 0 2px 8px color-mix(in srgb, var(--c2g-color-primary, #ff6b35) 18%, transparent);\n        transform: translateY(-1px);\n      }\n    }\n\n    @media (hover: none) {\n      .dpc:active:not(:disabled) {\n        border-color: var(--c2g-color-primary, #ff6b35);\n        background: var(--c2g-color-primary-container, #ffede6);\n        box-shadow: 0 1px 4px color-mix(in srgb, var(--c2g-color-primary, #ff6b35) 18%, transparent);\n        transform: translateY(0);\n      }\n    }\n\n    .dpc__top {\n      display: flex;\n      align-items: center;\n      gap: var(--c2g-space-sm, 0.5rem);\n    }\n\n    .dpc__icon {\n      font-size: 1.25rem;\n      width: 1.25rem;\n      height: 1.25rem;\n      color: var(--c2g-color-text-secondary, #4a423b);\n      transition: color var(--c2g-motion-duration-fast, 120ms) ease;\n      flex-shrink: 0;\n    }\n\n    .dpc__label {\n      font-size: 0.8125rem;\n      font-weight: 700;\n      color: var(--c2g-color-text-primary, #1a1714);\n      transition: color var(--c2g-motion-duration-fast, 120ms) ease;\n      line-height: 1.2;\n    }\n\n    .dpc__bottom {\n      display: flex;\n      justify-content: space-between;\n      align-items: baseline;\n      width: 100%;\n      gap: var(--c2g-space-xs, 0.25rem);\n    }\n\n    .dpc__date {\n      font-size: 0.75rem;\n      font-weight: 500;\n      color: var(--c2g-color-text-muted, #6b5e52);\n      line-height: 1.3;\n    }\n\n    .dpc__weather {\n      font-size: 0.75rem;\n      font-weight: 600;\n      color: var(--c2g-color-text-secondary, #4a423b);\n      white-space: nowrap;\n      flex-shrink: 0;\n    }\n  `],\n  template: `\n    <button\n      type=\"button\"\n      class=\"dpc\"\n      [disabled]=\"disabled()\"\n      (click)=\"cardClicked.emit()\"\n    >\n      @if (icon() || label()) {\n        <div class=\"dpc__top\">\n          @if (icon()) {\n            <mat-icon class=\"dpc__icon\" aria-hidden=\"true\">{{ icon() }}</mat-icon>\n          }\n          @if (label()) {\n            <span class=\"dpc__label\">{{ label() }}</span>\n          }\n        </div>\n      }\n\n      @if (dateRange() || weather()) {\n        <div class=\"dpc__bottom\">\n          @if (dateRange()) {\n            <span class=\"dpc__date\">{{ dateRange() }}</span>\n          }\n          @if (weather()) {\n            <span class=\"dpc__weather\">{{ weather()!.icon }} {{ weather()!.temp }}°</span>\n          }\n        </div>\n      }\n    </button>\n  `,\n})\nexport class C2gDatePresetCardComponent {\n  readonly icon = input<string>('');\n  readonly label = input<string>('');\n  readonly dateRange = input<string>('');\n  readonly weather = input<C2gWeatherSnippet | null | undefined>(undefined);\n  readonly disabled = input<boolean>(false);\n\n  readonly cardClicked = output<void>();\n}\n","/*\n * Public API Surface of @humbeldore/c2g-ui (core)\n *\n * UI primitives — the building blocks every consumer needs.\n * Domain-specific entry points:\n *   @humbeldore/c2g-ui/theme    — ThemeService, design tokens, i18n\n *   @humbeldore/c2g-ui/layout   — ContentPanel, Hero, StatCard, ActionCard, ...\n *   @humbeldore/c2g-ui/maps     — MapComponent, MapMarkerComponent\n *   @humbeldore/c2g-ui/charts   — BarChart, LineChart, ...\n *   @humbeldore/c2g-ui/presets  — PackingList, MemberList, WeatherWidget, ...\n */\n\nexport * from './lib/c2g-ui';\nexport * from './lib/icons/provide-c2g-icons';\nexport * from './lib/avatar';\nexport * from './lib/button/button.component';\nexport * from './lib/badge';\nexport * from './lib/chip';\nexport * from './lib/checkbox';\nexport * from './lib/loader';\nexport * from './lib/lottie-loader';\nexport * from './lib/skeleton';\nexport * from './lib/alert';\nexport * from './lib/progress';\nexport * from './lib/input';\nexport * from './lib/radio-group';\nexport * from './lib/select';\nexport * from './lib/switch';\nexport * from './lib/tag';\nexport * from './lib/textarea';\nexport * from './lib/modal';\nexport * from './lib/toast';\nexport * from './lib/confirm-dialog';\nexport * from './lib/date-range-picker';\nexport * from './lib/stepper';\nexport * from './lib/packing-gap-banner';\nexport * from './lib/dropdown-menu/dropdown-menu.component';\nexport * from './lib/popup/popup.component';\nexport * from './lib/weather-widget/weather-widget.component';\nexport * from './lib/date-preset-card/date-preset-card.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}