@camp2gether/c2g-ui 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/camp2gether-c2g-ui-layout.mjs +1 -1
- package/fesm2022/camp2gether-c2g-ui-layout.mjs.map +1 -1
- package/fesm2022/camp2gether-c2g-ui-presets.mjs +1 -1
- package/fesm2022/camp2gether-c2g-ui-presets.mjs.map +1 -1
- package/layout/index.d.ts +1 -1
- package/package.json +1 -1
- package/presets/index.d.ts +1 -1
|
@@ -4,7 +4,7 @@ import * as i1 from '@ngx-translate/core';
|
|
|
4
4
|
import { TranslateModule } from '@ngx-translate/core';
|
|
5
5
|
import * as i1$1 from '@angular/material/icon';
|
|
6
6
|
import { MatIconModule, MatIcon } from '@angular/material/icon';
|
|
7
|
-
import { ButtonComponent, LottieLoaderComponent } from '@
|
|
7
|
+
import { ButtonComponent, LottieLoaderComponent } from '@camp2gether/c2g-ui';
|
|
8
8
|
import * as i1$2 from '@angular/material/button';
|
|
9
9
|
import { MatButtonModule } from '@angular/material/button';
|
|
10
10
|
import * as i3 from '@angular/material/tooltip';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"camp2gether-c2g-ui-layout.mjs","sources":["../../../projects/c2g-ui/layout/content-panel/content-panel.component.ts","../../../projects/c2g-ui/layout/content-panel/content-panel.component.html","../../../projects/c2g-ui/layout/hero/coverage-kpi.component.ts","../../../projects/c2g-ui/layout/hero/coverage-kpi.component.html","../../../projects/c2g-ui/layout/hero/hero.component.ts","../../../projects/c2g-ui/layout/hero/hero.component.html","../../../projects/c2g-ui/layout/hero/kpi-card.component.ts","../../../projects/c2g-ui/layout/hero/kpi-card.component.html","../../../projects/c2g-ui/layout/danger-zone/danger-zone-item.component.ts","../../../projects/c2g-ui/layout/danger-zone/danger-zone-item.component.html","../../../projects/c2g-ui/layout/danger-zone/danger-zone.component.ts","../../../projects/c2g-ui/layout/danger-zone/danger-zone.component.html","../../../projects/c2g-ui/layout/list-item/list-item.component.ts","../../../projects/c2g-ui/layout/list-item/list-item.component.html","../../../projects/c2g-ui/layout/stat-card/stat-card.component.ts","../../../projects/c2g-ui/layout/stat-card/stat-card.component.html","../../../projects/c2g-ui/layout/action-card/action-card.component.ts","../../../projects/c2g-ui/layout/action-card/action-card.component.html","../../../projects/c2g-ui/layout/view-toggle/view-toggle.component.ts","../../../projects/c2g-ui/layout/view-toggle/view-toggle.component.html","../../../projects/c2g-ui/layout/segmented-toggle/segmented-toggle.component.ts","../../../projects/c2g-ui/layout/search-input/search-input.component.ts","../../../projects/c2g-ui/layout/search-input/search-input.component.html","../../../projects/c2g-ui/layout/empty-state/empty-state.component.ts","../../../projects/c2g-ui/layout/empty-state/empty-state.component.html","../../../projects/c2g-ui/layout/pagination/pagination.component.ts","../../../projects/c2g-ui/layout/pagination/pagination.component.html","../../../projects/c2g-ui/layout/table/table.component.ts","../../../projects/c2g-ui/layout/table/table.component.html","../../../projects/c2g-ui/layout/tabs/tabs.component.ts","../../../projects/c2g-ui/layout/tabs/tabs.component.html","../../../projects/c2g-ui/layout/breadcrumb/breadcrumb.component.ts","../../../projects/c2g-ui/layout/breadcrumb/breadcrumb.component.html","../../../projects/c2g-ui/layout/stepper/stepper.component.ts","../../../projects/c2g-ui/layout/stepper/stepper.component.html","../../../projects/c2g-ui/layout/kpi-card/kpi-card.component.ts","../../../projects/c2g-ui/layout/kpi-card/kpi-card.component.html","../../../projects/c2g-ui/layout/filter-bar/filter-bar.component.ts","../../../projects/c2g-ui/layout/filter-bar/filter-bar.component.html","../../../projects/c2g-ui/layout/skeleton-table/skeleton-table.component.ts","../../../projects/c2g-ui/layout/skeleton-table/skeleton-table.component.html","../../../projects/c2g-ui/layout/camp2gether-c2g-ui-layout.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n input\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-content-panel',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule],\n templateUrl: './content-panel.component.html',\n styleUrls: ['./content-panel.component.scss']\n})\nexport class ContentPanelComponent {\n eyebrow = input<string>('');\n title = input<string>('');\n}\n","<article class=\"content-panel\">\n @if (eyebrow() || title()) {\n <header class=\"content-panel__header\">\n <div class=\"content-panel__header-text\">\n @if (eyebrow()) {\n <span class=\"content-panel__eyebrow\">{{ eyebrow() | translate }}</span>\n }\n @if (title()) {\n <h2 class=\"content-panel__title\">{{ title() | translate }}</h2>\n }\n </div>\n <div class=\"content-panel__actions\">\n <ng-content select=\"[panel-actions]\" />\n </div>\n </header>\n }\n <ng-content />\n</article>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core';\n\n@Component({\n selector: 'app-coverage-kpi',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n templateUrl: './coverage-kpi.component.html',\n styleUrls: ['./coverage-kpi.component.scss'],\n})\nexport class CoverageKpiComponent {\n label = input.required<string>();\n coveragePercent = input<number>(0);\n\n readonly ringCircumference = 125.66;\n\n readonly ringOffset = computed(\n () => this.ringCircumference * (1 - this.coveragePercent() / 100),\n );\n}","<div class=\"coverage-kpi\" role=\"listitem\">\n <div class=\"coverage-kpi__content\">\n <div class=\"coverage-kpi__ring\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 48 48\">\n <circle class=\"coverage-kpi__ring-bg\" cx=\"24\" cy=\"24\" r=\"20\" />\n <circle\n class=\"coverage-kpi__ring-fill\"\n cx=\"24\"\n cy=\"24\"\n r=\"20\"\n [style.stroke-dasharray]=\"ringCircumference\"\n [style.stroke-dashoffset]=\"ringOffset()\"\n />\n </svg>\n <span class=\"coverage-kpi__percent\">{{ coveragePercent() }}%</span>\n </div>\n\n <span class=\"coverage-kpi__label\">{{ label() }}</span>\n </div>\n</div>","import {\n Component,\n ChangeDetectionStrategy,\n input\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-hero',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatIconModule, TranslateModule],\n templateUrl: './hero.component.html',\n styleUrls: ['./hero.component.scss']\n})\nexport class HeroComponent {\n eyebrow = input<string>();\n title = input<string>();\n lead = input<string>();\n}\n","<section class=\"hero\">\n @if (eyebrow()) {\n <div class=\"hero__eyebrow\">\n <mat-icon class=\"hero__icon\">backpack</mat-icon>\n <span>{{ eyebrow() }}</span>\n </div>\n }\n\n <h1 class=\"hero__title\">{{ title() }}</h1>\n <p class=\"hero__lead\">{{ lead() }}</p>\n\n <ng-content></ng-content>\n</section>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nexport type KpiCardTone = 'owned' | 'missing' | 'total';\n\n@Component({\n selector: 'app-kpi-card',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatIconModule],\n templateUrl: './kpi-card.component.html',\n styleUrls: ['./kpi-card.component.scss'],\n})\nexport class KpiCardComponent {\n value = input.required<number>();\n label = input.required<string>();\n icon = input.required<string>();\n tone = input.required<KpiCardTone>();\n}","<div class=\"kpi-card\" [class]=\"'kpi-card kpi-card--' + tone()\" role=\"listitem\">\n <div class=\"kpi-card__content\">\n <span class=\"kpi-card__value\">{{ value() }}</span>\n <span class=\"kpi-card__label\">{{ label() }}</span>\n </div>\n <mat-icon class=\"kpi-card__icon\">{{ icon() }}</mat-icon>\n</div>","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonComponent } from '@humbeldore/c2g-ui';\nimport { DangerZoneItem } from './danger-zone.component';\n\n@Component({\n selector: 'c2g-danger-zone-item',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ButtonComponent, TranslateModule],\n templateUrl: './danger-zone-item.component.html',\n styleUrls: ['./danger-zone-item.component.scss']\n})\nexport class DangerZoneItemComponent {\n readonly item = input.required<DangerZoneItem>();\n readonly triggered = output<DangerZoneItem>();\n\n titleKey(): string {\n return this.item().titleKey ?? this.item().title ?? '';\n }\n\n descriptionKey(): string | null {\n return this.item().descriptionKey ?? this.item().description ?? null;\n }\n\n actionLabelKey(): string {\n return this.item().action.labelKey ?? this.item().action.label ?? '';\n }\n\n actionAriaLabelKey(): string {\n return this.item().action.ariaLabelKey ?? this.item().action.labelKey ?? this.item().action.ariaLabel ?? this.item().action.label ?? '';\n }\n\n onTriggered(): void {\n this.triggered.emit(this.item());\n }\n}\n","<div class=\"c2g-danger-zone-item\">\n <div class=\"c2g-danger-zone-item__info\">\n <span class=\"c2g-danger-zone-item__label\">{{ titleKey() | translate }}</span>\n @if (descriptionKey(); as descriptionKey) {\n <span class=\"c2g-danger-zone-item__hint\">{{ descriptionKey | translate }}</span>\n }\n </div>\n\n <c2g-button\n [variant]=\"item().action.variant ?? 'secondary'\"\n [icon]=\"item().action.icon ?? ''\"\n [ariaLabel]=\"actionAriaLabelKey() | translate\"\n [disabled]=\"item().action.disabled ?? false\"\n (clicked)=\"onTriggered()\"\n >\n {{ actionLabelKey() | translate }}\n </c2g-button>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DangerZoneItemComponent } from './danger-zone-item.component';\n\nexport interface DangerZoneAction {\n labelKey?: string;\n variant?: 'primary' | 'secondary' | 'ghost' | 'destructive';\n icon?: string;\n ariaLabelKey?: string;\n disabled?: boolean;\n // Legacy fallback fields\n label?: string;\n ariaLabel?: string;\n}\n\nexport interface DangerZoneItem {\n id: string;\n titleKey?: string;\n descriptionKey?: string;\n action: DangerZoneAction;\n onTrigger?: (item: DangerZoneItem) => void;\n // Legacy fallback fields\n title?: string;\n description?: string;\n}\n\n@Component({\n selector: 'c2g-danger-zone',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DangerZoneItemComponent, TranslateModule],\n templateUrl: './danger-zone.component.html',\n styleUrls: ['./danger-zone.component.scss']\n})\nexport class DangerZoneComponent {\n readonly headingKey = input<string>('c2g.danger_zone.default.heading');\n readonly items = input.required<DangerZoneItem[]>();\n\n /**\n * Emits the clicked item id so consumers can map actions in their container.\n *\n * Prefer the per-item callback (`item.onTrigger`) when you want action logic to\n * live directly on each item config.\n *\n * Output binding:\n * ```html\n * <c2g-danger-zone [items]=\"dangerItems\" (itemTriggered)=\"onDangerAction($event)\" />\n * ```\n *\n * Example mapping:\n * ```ts\n * onDangerAction(id: string) {\n * if (id === 'delete-project') {\n * this.openDeleteDialog();\n * }\n * }\n * ```\n */\n readonly itemTriggered = output<string>();\n\n readonly resolvedHeadingKey = computed(() => this.headingKey());\n\n onItemTriggered(item: DangerZoneItem): void {\n item.onTrigger?.(item);\n this.itemTriggered.emit(item.id);\n }\n}\n","<section class=\"c2g-danger-zone\" aria-labelledby=\"c2g-danger-zone-heading\">\n <h2 id=\"c2g-danger-zone-heading\" class=\"c2g-danger-zone__heading\">\n {{ resolvedHeadingKey() | translate }}\n </h2>\n\n <div class=\"c2g-danger-zone__content\">\n @for (item of items(); track item.id; let last = $last) {\n <c2g-danger-zone-item [item]=\"item\" (triggered)=\"onItemTriggered($event)\" />\n\n @if (!last) {\n <div class=\"c2g-danger-zone__divider\" aria-hidden=\"true\"></div>\n }\n }\n </div>\n</section>","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\n\nexport interface C2gListItemData {\n name: string;\n description?: string | null;\n memberCount?: number | null;\n members?: unknown[];\n}\n\n@Component({\n selector: 'c2g-list-item',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatButtonModule, MatIconModule, MatTooltipModule, TranslateModule],\n templateUrl: './list-item.component.html',\n styleUrls: ['./list-item.component.scss']\n})\nexport class ListItemComponent {\n readonly group = input<C2gListItemData | null>(null);\n readonly active = input<boolean>(false);\n\n readonly selected = output<C2gListItemData | null>();\n readonly opened = output<C2gListItemData | null>();\n}\n","<li\n class=\"c2g-list-item\"\n [class.c2g-list-item--active]=\"active()\"\n role=\"button\"\n tabindex=\"0\"\n [attr.aria-label]=\"group()?.name\"\n (click)=\"selected.emit(group())\"\n (keyup.enter)=\"selected.emit(group())\"\n (keydown.space)=\"$event.preventDefault(); selected.emit(group())\"\n>\n <div class=\"c2g-list-item__avatar\">\n <mat-icon>group</mat-icon>\n </div>\n\n <div class=\"c2g-list-item__info\">\n <span class=\"c2g-list-item__name\">{{ group()?.name }}</span>\n @if (group()?.description) {\n <span class=\"c2g-list-item__desc\">{{ group()?.description }}</span>\n }\n </div>\n\n <div class=\"c2g-list-item__end\">\n <span class=\"c2g-list-item__members\">\n <mat-icon>group</mat-icon>\n {{ group()?.memberCount ?? group()?.members?.length ?? 0 }}\n </span>\n <button\n mat-icon-button\n class=\"c2g-list-item__open-btn\"\n [matTooltip]=\"'groups.open' | translate\"\n [attr.aria-label]=\"'groups.open' | translate\"\n (click)=\"$event.stopPropagation(); opened.emit(group())\"\n >\n <mat-icon>arrow_forward</mat-icon>\n </button>\n </div>\n</li>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LottieLoaderComponent } from '@humbeldore/c2g-ui';\nimport { C2gLottieLoaderPreset } from '@humbeldore/c2g-ui';\n\nexport interface StatCardBackground {\n type: 'gradient' | 'image';\n value: string;\n overlay?: string;\n}\n\nexport interface StatCardData {\n value: string | number;\n label: string;\n icon?: string;\n lottiePreset?: C2gLottieLoaderPreset;\n iconBackgroundTone?: 'primary' | 'secondary' | 'neutral';\n background?: StatCardBackground;\n disabled?: boolean;\n trend?: {\n direction: 'up' | 'down' | 'neutral';\n value: string | number;\n };\n}\n\n@Component({\n selector: 'c2g-stat-card',\n standalone: true,\n imports: [CommonModule, MatIcon, TranslateModule, LottieLoaderComponent],\n templateUrl: './stat-card.component.html',\n styleUrl: './stat-card.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StatCardComponent {\n readonly data = input.required<StatCardData>();\n\n readonly cardBackgroundStyle = computed((): Record<string, string> | null => {\n const background = this.data().background;\n\n if (!background) {\n return null;\n }\n\n if (background.type === 'gradient') {\n return { backgroundImage: background.value };\n }\n\n const imageUrl = background.value.startsWith('url(')\n ? background.value\n : `url('${background.value}')`;\n const overlay = background.overlay ?? 'linear-gradient(rgba(0, 0, 0, 0.34), rgba(0, 0, 0, 0.34))';\n\n return {\n backgroundImage: `${overlay}, ${imageUrl}`,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n backgroundRepeat: 'no-repeat',\n };\n });\n}\n","<div\n class=\"stat-card\"\n [class]=\"'stat-card--' + (data().iconBackgroundTone || 'neutral')\"\n [class.stat-card--disabled]=\"data().disabled\"\n [class.stat-card--custom-bg]=\"!!data().background\"\n [ngStyle]=\"cardBackgroundStyle()\"\n>\n @if (data().lottiePreset) {\n <div class=\"stat-icon-wrapper stat-icon-wrapper--lottie\">\n <c2g-lottie-loader\n [preset]=\"data().lottiePreset!\"\n width=\"28px\"\n height=\"28px\"\n [showLabel]=\"false\"\n label=\"Animation\"\n ></c2g-lottie-loader>\n </div>\n } @else if (data().icon) {\n <div class=\"stat-icon-wrapper\">\n <mat-icon class=\"stat-icon\">{{ data().icon }}</mat-icon>\n </div>\n }\n\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{ data().value }}</div>\n <div class=\"stat-label\">{{ data().label | translate }}</div>\n </div>\n\n @if (data().trend) {\n <div class=\"stat-trend\" [class]=\"'stat-trend--' + data().trend!.direction\">\n <mat-icon class=\"trend-icon\">\n @switch (data().trend!.direction) {\n @case ('up') {\n trending_up\n }\n @case ('down') {\n trending_down\n }\n @case ('neutral') {\n trending_flat\n }\n }\n </mat-icon>\n <span class=\"trend-value\">{{ data().trend!.value }}</span>\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatCard } from '@angular/material/card';\nimport { MatIcon } from '@angular/material/icon';\nimport { ButtonComponent } from '@humbeldore/c2g-ui';\nimport { LottieLoaderComponent } from '@humbeldore/c2g-ui';\nimport { C2gLottieLoaderPreset } from '@humbeldore/c2g-ui';\n\nexport type ActionCardLayout = 'icon-left' | 'hero-top' | 'icon-detail';\n\nexport interface ActionCardData {\n icon?: string;\n title: string;\n text?: string;\n description?: string;\n image?: string;\n lottiePreset?: C2gLottieLoaderPreset;\n disabled?: boolean;\n iconBackgroundTone?: 'primary' | 'secondary' | 'neutral';\n ctaLabel?: string;\n}\n\n@Component({\n selector: 'c2g-action-card',\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n MatCard,\n MatIcon,\n ButtonComponent,\n LottieLoaderComponent\n ],\n templateUrl: './action-card.component.html',\n styleUrl: './action-card.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ActionCardComponent {\n readonly data = input.required<ActionCardData>();\n readonly clickable = input(true);\n readonly variant = input<ActionCardLayout>('icon-left');\n\n readonly cardClicked = output<void>();\n\n readonly effectiveText = computed(() => this.data().text ?? this.data().description ?? '');\n\n readonly supportingDescription = computed(() => {\n const d = this.data();\n return d.text ? (d.description ?? '') : '';\n });\n\n readonly isInteractive = computed(() => this.clickable() && !this.data().disabled);\n\n readonly iconToneClass = computed(() => this.data().iconBackgroundTone ?? 'neutral');\n\n onCardClick() {\n if (this.isInteractive()) {\n this.cardClicked.emit();\n }\n }\n\n onKeyDown(event: KeyboardEvent) {\n if (!this.isInteractive()) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.cardClicked.emit();\n }\n }\n}\n","<mat-card\n class=\"action-card\"\n [class.clickable]=\"isInteractive()\"\n [class.disabled]=\"data().disabled\"\n [class.variant-icon-left]=\"variant() === 'icon-left'\"\n [class.variant-hero-top]=\"variant() === 'hero-top'\"\n [class.variant-icon-detail]=\"variant() === 'icon-detail'\"\n (click)=\"onCardClick()\"\n (keydown)=\"onKeyDown($event)\"\n [attr.role]=\"isInteractive() ? 'button' : null\"\n [attr.tabindex]=\"isInteractive() ? '0' : null\">\n\n @if (variant() === 'hero-top') {\n <div class=\"hero-top-header\" [class.has-image]=\"data().image || data().lottiePreset\">\n @if (data().lottiePreset) {\n <div class=\"hero-image hero-image--lottie\">\n <c2g-lottie-loader\n [preset]=\"data().lottiePreset!\"\n [showLabel]=\"false\"\n width=\"100%\"\n height=\"100%\"\n ></c2g-lottie-loader>\n </div>\n } @else if (data().image) {\n <div class=\"hero-image\">\n <img [src]=\"data().image\" [alt]=\"data().title | translate\" />\n </div>\n }\n\n <div class=\"hero-top-title-wrap\">\n <h3 class=\"hero-top-title\">{{ data().title | translate }}</h3>\n @if (effectiveText()) {\n <p class=\"hero-top-description\">{{ effectiveText() | translate }}</p>\n }\n </div>\n </div>\n } @else if (variant() === 'icon-detail') {\n <div class=\"icon-detail-layout\">\n @if (data().icon) {\n <div class=\"icon-chip\" [ngClass]=\"iconToneClass()\">\n <mat-icon class=\"hero-icon\">{{ data().icon }}</mat-icon>\n </div>\n }\n <div class=\"icon-detail-body\">\n <h3 class=\"hero-title\">{{ data().title | translate }}</h3>\n @if (effectiveText()) {\n <p class=\"hero-description\">{{ effectiveText() | translate }}</p>\n }\n <div class=\"icon-detail-cta\" (click)=\"$event.stopPropagation()\">\n @if (data().ctaLabel) {\n <c2g-button variant=\"ghost\" size=\"sm\">{{ data().ctaLabel! | translate }}</c2g-button>\n }\n <ng-content select=\"[ctas]\"></ng-content>\n </div>\n </div>\n </div>\n } @else {\n <div class=\"icon-left-header\">\n @if (data().icon) {\n <div class=\"icon-chip\" [ngClass]=\"iconToneClass()\">\n <mat-icon class=\"hero-icon\">{{ data().icon }}</mat-icon>\n </div>\n }\n\n <div class=\"icon-left-title-wrap\">\n <h3 class=\"hero-title\">{{ data().title | translate }}</h3>\n </div>\n </div>\n }\n\n @if (variant() !== 'icon-detail') {\n <div class=\"content-section\">\n @if (variant() !== 'hero-top' && effectiveText()) {\n <p class=\"hero-description\">{{ effectiveText() | translate }}</p>\n }\n\n @if (supportingDescription()) {\n <p class=\"hero-description supporting\">{{ supportingDescription() | translate }}</p>\n }\n\n <ng-content></ng-content>\n </div>\n }\n\n @if (variant() !== 'icon-detail') {\n <div class=\"cta-section\" (click)=\"$event.stopPropagation()\">\n @if (data().ctaLabel) {\n <c2g-button variant=\"ghost\" size=\"sm\">{{ data().ctaLabel! | translate }}</c2g-button>\n }\n\n <ng-content select=\"[ctas]\"></ng-content>\n </div>\n }\n\n</mat-card>\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ViewToggleOption } from './view-toggle.model';\n\n@Component({\n selector: 'app-view-toggle',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n TranslateModule\n ],\n templateUrl: './view-toggle.component.html',\n styleUrls: ['./view-toggle.component.scss']\n})\nexport class ViewToggleComponent<T extends string = string> {\n options = input.required<ViewToggleOption<T>[]>();\n activeValue = input<T | null>(null);\n valueChange = output<T>();\n}\n","<div class=\"view-toggle\" role=\"group\">\n @for (option of options(); track option.value) {\n <button\n mat-icon-button\n [class.active]=\"activeValue() === option.value\"\n (click)=\"valueChange.emit(option.value)\"\n [matTooltip]=\"option.label | translate\"\n [attr.aria-label]=\"option.label | translate\"\n [attr.aria-pressed]=\"activeValue() === option.value\"\n >\n <mat-icon>{{ option.icon }}</mat-icon>\n </button>\n }\n</div>\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 { MatIconModule } from '@angular/material/icon';\nimport { SegmentedToggleOption } from './segmented-toggle.model';\n\n@Component({\n selector: 'c2g-segmented-toggle',\n standalone: true,\n imports: [MatIconModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SegmentedToggleComponent),\n multi: true,\n },\n ],\n template: `\n <div class=\"c2g-segmented\" role=\"radiogroup\" [attr.aria-label]=\"ariaLabel()\">\n @for (option of options(); track option.value; let index = $index) {\n <button\n type=\"button\"\n role=\"radio\"\n class=\"c2g-segmented__item\"\n [class.c2g-segmented__item--active]=\"value() === option.value\"\n [attr.aria-checked]=\"value() === option.value ? 'true' : 'false'\"\n [disabled]=\"isDisabled() || !!option.disabled\"\n [attr.tabindex]=\"tabIndexFor(option.value)\"\n (click)=\"select(option.value)\"\n (keydown)=\"onKeydown($event, index)\"\n >\n @if (option.icon || option.iconFontIcon) {\n <mat-icon\n class=\"c2g-segmented__icon\"\n [fontSet]=\"option.iconFontSet || ''\"\n [fontIcon]=\"option.iconFontIcon || ''\"\n [attr.aria-label]=\"option.iconAriaLabel || null\"\n [attr.aria-hidden]=\"option.iconAriaLabel ? null : 'true'\"\n >\n {{ option.icon || '' }}\n </mat-icon>\n }\n <span [class.c2g-segmented__sr-only]=\"iconOnly()\">{{ option.label }}</span>\n </button>\n }\n </div>\n `,\n styles: `\n .c2g-segmented {\n display: inline-flex;\n align-items: center;\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 padding: var(--c2g-space-1, 0.25rem);\n background: var(--c2g-color-surface, #ffffff);\n gap: var(--c2g-space-1, 0.25rem);\n font-family: var(--c2g-font-family-base, \"Quicksand\", \"Segoe UI\", sans-serif);\n }\n .c2g-segmented__item {\n border: none;\n background: transparent;\n border-radius: var(--c2g-radius-sm, 0.375rem);\n padding: var(--c2g-space-2, 0.5rem) var(--c2g-space-3, 0.75rem);\n display: inline-flex;\n align-items: center;\n gap: var(--c2g-space-2, 0.5rem);\n font-size: var(--c2g-font-size-sm, 0.875rem);\n color: var(--c2g-color-text-secondary, #4a423b);\n cursor: pointer;\n transition: all var(--c2g-motion-duration-fast, 120ms) var(--c2g-motion-ease-standard, ease);\n }\n .c2g-segmented__icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1rem;\n height: 1rem;\n font-size: 0.875rem;\n line-height: 1;\n }\n .c2g-segmented__sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n .c2g-segmented__item--active {\n background: var(--c2g-color-primary, #ff6b35);\n color: var(--c2g-color-text-primary, #1a1714);\n font-weight: var(--c2g-font-weight-semibold, 600);\n }\n .c2g-segmented__item: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-segmented__item:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n `,\n})\nexport class SegmentedToggleComponent<T extends string = string> implements ControlValueAccessor {\n readonly options = input<SegmentedToggleOption<T>[]>([]);\n readonly disabled = input(false);\n readonly ariaLabel = input('Auswahl');\n readonly iconOnly = input(false);\n\n readonly valueChange = output<T>();\n\n readonly value = signal<T | null>(null);\n readonly cvaDisabled = signal(false);\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 tabIndexFor(option: T): number {\n if (this.value() === option) {\n return 0;\n }\n if (this.value() === null && this.options()[0]?.value === option) {\n return 0;\n }\n return -1;\n }\n\n select(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 this.onTouched();\n }\n\n onKeydown(event: KeyboardEvent, index: number): void {\n if (\n event.key !== 'ArrowRight' &&\n event.key !== 'ArrowLeft' &&\n event.key !== 'ArrowUp' &&\n event.key !== 'ArrowDown' &&\n event.key !== 'Home' &&\n event.key !== 'End'\n ) {\n return;\n }\n event.preventDefault();\n\n const enabled = this.options().filter((option) => !option.disabled);\n if (enabled.length === 0) {\n return;\n }\n\n if (event.key === 'Home') {\n const next = enabled[0].value;\n this.select(next);\n this.focusValue(next, event.currentTarget);\n return;\n }\n\n if (event.key === 'End') {\n const next = enabled[enabled.length - 1].value;\n this.select(next);\n this.focusValue(next, event.currentTarget);\n return;\n }\n\n const selectedValue = this.value();\n const fallbackValue = this.options()[index]?.value ?? null;\n const baseValue = selectedValue ?? fallbackValue;\n const currentEnabledIndex = enabled.findIndex((option) => option.value === baseValue);\n const start = currentEnabledIndex >= 0 ? currentEnabledIndex : 0;\n const delta = event.key === 'ArrowRight' || event.key === 'ArrowDown' ? 1 : -1;\n const nextIndex = (start + delta + enabled.length) % enabled.length;\n const next = enabled[nextIndex].value;\n\n this.select(next);\n this.focusValue(next, event.currentTarget);\n }\n\n private focusValue(next: T, eventTarget: EventTarget | null): void {\n const trigger = eventTarget instanceof HTMLElement ? eventTarget : null;\n const root = trigger?.closest('.c2g-segmented');\n const allButtons = root?.querySelectorAll<HTMLButtonElement>('button[role=\"radio\"]');\n if (!allButtons) {\n return;\n }\n\n const optionIndex = this.options().findIndex((option) => option.value === next);\n if (optionIndex >= 0) {\n allButtons[optionIndex]?.focus();\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n output\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-search-input',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatIconModule,\n TranslateModule\n ],\n templateUrl: './search-input.component.html',\n styleUrls: ['./search-input.component.scss']\n})\nexport class SearchInputComponent {\n searchChange = output<string>();\n\n onInput(event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n this.searchChange.emit(inputEl.value);\n }\n}\n","<div class=\"search-input\">\n <mat-icon class=\"search-input__icon\">search</mat-icon>\n <input\n class=\"search-input__field\"\n type=\"text\"\n [placeholder]=\"'equipment.workspace.search' | translate\"\n [attr.aria-label]=\"'equipment.workspace.search' | translate\"\n (input)=\"onInput($event)\"\n />\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output\n} from '@angular/core';\nimport { LottieLoaderComponent } from '@humbeldore/c2g-ui';\nimport { EmptyStateData } from './empty-state.models';\n\n@Component({\n selector: 'c2g-empty-state',\n standalone: true,\n imports: [LottieLoaderComponent],\n templateUrl: './empty-state.component.html',\n styleUrls: ['./empty-state.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EmptyStateComponent {\n readonly data = input.required<EmptyStateData>();\n\n readonly actionClicked = output<void>();\n}\n","<div class=\"c2g-empty-state\">\n @if (data().lottiePreset) {\n <div class=\"c2g-empty-state__lottie\">\n <c2g-lottie-loader\n [preset]=\"data().lottiePreset!\"\n width=\"120px\"\n height=\"120px\"\n [showLabel]=\"false\"\n label=\"Illustration\"\n />\n </div>\n } @else if (data().icon) {\n <span class=\"c2g-empty-state__icon\" aria-hidden=\"true\">{{ data().icon }}</span>\n }\n\n <h3 class=\"c2g-empty-state__title\">{{ data().title }}</h3>\n\n @if (data().description) {\n <p class=\"c2g-empty-state__description\">{{ data().description }}</p>\n }\n\n @if (data().actionLabel) {\n <button\n class=\"c2g-empty-state__action\"\n type=\"button\"\n (click)=\"actionClicked.emit()\">\n {{ data().actionLabel }}\n </button>\n }\n\n <ng-content />\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output\n} from '@angular/core';\nimport { PaginationState } from './pagination.models';\n\nconst MAX_VISIBLE_PAGES = 5;\n\n@Component({\n selector: 'c2g-pagination',\n standalone: true,\n imports: [],\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PaginationComponent {\n readonly state = input.required<PaginationState>();\n readonly ariaLabel = input('Seitennavigation');\n\n readonly pageChanged = output<number>();\n\n readonly currentPage = computed(() => this.state().currentPage);\n readonly totalPages = computed(() => this.state().totalPages);\n\n readonly hasPrev = computed(() => this.currentPage() > 1);\n readonly hasNext = computed(() => this.currentPage() < this.totalPages());\n\n readonly visiblePages = computed(() => {\n const total = this.totalPages();\n const current = this.currentPage();\n const half = Math.floor(MAX_VISIBLE_PAGES / 2);\n\n let start = Math.max(1, current - half);\n let end = Math.min(total, start + MAX_VISIBLE_PAGES - 1);\n\n if (end - start < MAX_VISIBLE_PAGES - 1) {\n start = Math.max(1, end - MAX_VISIBLE_PAGES + 1);\n }\n\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n });\n\n readonly showStartEllipsis = computed(() => (this.visiblePages()[0] ?? 1) > 1);\n readonly showEndEllipsis = computed(() => (this.visiblePages().at(-1) ?? this.totalPages()) < this.totalPages());\n\n go(page: number): void {\n if (page < 1 || page > this.totalPages() || page === this.currentPage()) return;\n this.pageChanged.emit(page);\n }\n}\n","<nav class=\"c2g-pagination\" [attr.aria-label]=\"ariaLabel()\">\n <button\n class=\"c2g-pagination__btn c2g-pagination__btn--nav\"\n type=\"button\"\n aria-label=\"Vorherige Seite\"\n [disabled]=\"!hasPrev()\"\n (click)=\"go(currentPage() - 1)\">\n ‹\n </button>\n\n @if (showStartEllipsis()) {\n <button\n class=\"c2g-pagination__btn\"\n type=\"button\"\n [attr.aria-label]=\"'Seite 1'\"\n (click)=\"go(1)\">\n 1\n </button>\n <span class=\"c2g-pagination__ellipsis\" aria-hidden=\"true\">…</span>\n }\n\n @for (page of visiblePages(); track page) {\n <button\n class=\"c2g-pagination__btn\"\n [class.c2g-pagination__btn--active]=\"page === currentPage()\"\n type=\"button\"\n [attr.aria-label]=\"'Seite ' + page\"\n [attr.aria-current]=\"page === currentPage() ? 'page' : null\"\n (click)=\"go(page)\">\n {{ page }}\n </button>\n }\n\n @if (showEndEllipsis()) {\n <span class=\"c2g-pagination__ellipsis\" aria-hidden=\"true\">…</span>\n <button\n class=\"c2g-pagination__btn\"\n type=\"button\"\n [attr.aria-label]=\"'Seite ' + totalPages()\"\n (click)=\"go(totalPages())\">\n {{ totalPages() }}\n </button>\n }\n\n <button\n class=\"c2g-pagination__btn c2g-pagination__btn--nav\"\n type=\"button\"\n aria-label=\"Nächste Seite\"\n [disabled]=\"!hasNext()\"\n (click)=\"go(currentPage() + 1)\">\n ›\n </button>\n</nav>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n signal\n} from '@angular/core';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { C2gTableColumn, C2gSortState, C2gSortDirection } from './table.models';\n\n@Component({\n selector: 'c2g-table',\n standalone: true,\n imports: [ScrollingModule, NgClass, NgTemplateOutlet],\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableComponent<T extends Record<string, any> = Record<string, any>> {\n readonly rows = input.required<T[]>();\n readonly columns = input.required<C2gTableColumn<T>[]>();\n readonly rowHeight = input(48);\n readonly maxHeight = input('480px');\n readonly selectable = input(false);\n readonly virtualScroll = input(true);\n\n readonly sortChanged = output<C2gSortState>();\n readonly rowSelected = output<T>();\n\n readonly sortState = signal<C2gSortState>({ key: '', direction: null });\n readonly selectedRow = signal<T | null>(null);\n\n readonly sortedRows = computed(() => {\n const { key, direction } = this.sortState();\n const rows = [...this.rows()];\n if (!key || !direction) return rows;\n return rows.sort((a, b) => {\n const col = this.columns().find(c => c.key === key);\n const av = col?.valueGetter ? col.valueGetter(a) : a[key];\n const bv = col?.valueGetter ? col.valueGetter(b) : b[key];\n const cmp = av < bv ? -1 : av > bv ? 1 : 0;\n return direction === 'asc' ? cmp : -cmp;\n });\n });\n\n getCellValue(row: T, col: C2gTableColumn<T>): string | number {\n return col.valueGetter ? col.valueGetter(row) : row[col.key] ?? '';\n }\n\n sort(key: string): void {\n const current = this.sortState();\n const direction: C2gSortDirection =\n current.key === key\n ? current.direction === 'asc' ? 'desc' : current.direction === 'desc' ? null : 'asc'\n : 'asc';\n const next: C2gSortState = { key, direction };\n this.sortState.set(next);\n this.sortChanged.emit(next);\n }\n\n select(row: T): void {\n if (!this.selectable()) return;\n this.selectedRow.set(row);\n this.rowSelected.emit(row);\n }\n\n isSelected(row: T): boolean {\n return this.selectedRow() === row;\n }\n\n sortIcon(key: string): string {\n const s = this.sortState();\n if (s.key !== key || !s.direction) return '↕';\n return s.direction === 'asc' ? '↑' : '↓';\n }\n}\n","<div class=\"c2g-table-wrapper\" [style.maxHeight]=\"maxHeight()\">\n @if (virtualScroll()) {\n <cdk-virtual-scroll-viewport [itemSize]=\"rowHeight()\" class=\"c2g-table-viewport\" [style.height]=\"maxHeight()\">\n <table class=\"c2g-table\" role=\"grid\">\n <thead class=\"c2g-table__head\">\n <tr>\n @for (col of columns(); track col.key) {\n <th\n class=\"c2g-table__th\"\n [class.c2g-table__th--sortable]=\"col.sortable\"\n [class.c2g-table__th--sorted]=\"sortState().key === col.key\"\n (click)=\"col.sortable && sort(col.key)\"\n [attr.aria-sort]=\"col.sortable ? (sortState().key === col.key ? (sortState().direction ?? 'none') : 'none') : null\"\n >\n <span class=\"c2g-table__th-label\">{{ col.label }}</span>\n @if (col.sortable) {\n <span class=\"c2g-table__sort-icon\" aria-hidden=\"true\">{{ sortIcon(col.key) }}</span>\n }\n </th>\n }\n </tr>\n </thead>\n <tbody>\n <tr\n *cdkVirtualFor=\"let row of sortedRows()\"\n class=\"c2g-table__row\"\n [class.c2g-table__row--selectable]=\"selectable()\"\n [class.c2g-table__row--selected]=\"selectedRow() === row\"\n (click)=\"select(row)\"\n [attr.tabindex]=\"selectable() ? 0 : null\"\n (keydown.enter)=\"selectable() && select(row)\"\n >\n @for (col of columns(); track col.key) {\n <td class=\"c2g-table__td\">{{ getCellValue(row, col) }}</td>\n }\n </tr>\n </tbody>\n </table>\n </cdk-virtual-scroll-viewport>\n } @else {\n <table class=\"c2g-table\" role=\"grid\">\n <thead class=\"c2g-table__head\">\n <tr>\n @for (col of columns(); track col.key) {\n <th\n class=\"c2g-table__th\"\n [class.c2g-table__th--sortable]=\"col.sortable\"\n [class.c2g-table__th--sorted]=\"sortState().key === col.key\"\n (click)=\"col.sortable && sort(col.key)\"\n [attr.aria-sort]=\"col.sortable ? (sortState().key === col.key ? (sortState().direction ?? 'none') : 'none') : null\"\n >\n <span class=\"c2g-table__th-label\">{{ col.label }}</span>\n @if (col.sortable) {\n <span class=\"c2g-table__sort-icon\" aria-hidden=\"true\">{{ sortIcon(col.key) }}</span>\n }\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of sortedRows(); track $index) {\n <tr\n class=\"c2g-table__row\"\n [class.c2g-table__row--selectable]=\"selectable()\"\n [class.c2g-table__row--selected]=\"selectedRow() === row\"\n (click)=\"select(row)\"\n [attr.tabindex]=\"selectable() ? 0 : null\"\n (keydown.enter)=\"selectable() && select(row)\"\n >\n @for (col of columns(); track col.key) {\n <td class=\"c2g-table__td\">{{ getCellValue(row, col) }}</td>\n }\n </tr>\n }\n </tbody>\n </table>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n output\n} from '@angular/core';\nimport { C2gTab } from './tabs.models';\n\n@Component({\n selector: 'c2g-tabs',\n standalone: true,\n imports: [],\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TabsComponent {\n readonly tabs = input.required<C2gTab[]>();\n readonly activeKey = model<string>('');\n\n readonly tabChanged = output<C2gTab>();\n\n readonly activeTab = computed(() =>\n this.tabs().find(t => t.key === this.activeKey()) ?? this.tabs()[0]\n );\n\n select(tab: C2gTab): void {\n if (tab.disabled) return;\n this.activeKey.set(tab.key);\n this.tabChanged.emit(tab);\n }\n\n isActive(tab: C2gTab): boolean {\n const key = this.activeKey();\n return key ? tab.key === key : tab === this.tabs()[0];\n }\n}\n","<div class=\"c2g-tabs\" role=\"tablist\" [attr.aria-label]=\"'Tabs'\">\n <div class=\"c2g-tabs__nav\">\n @for (tab of tabs(); track tab.key) {\n <button\n class=\"c2g-tabs__tab\"\n role=\"tab\"\n [class.c2g-tabs__tab--active]=\"isActive(tab)\"\n [class.c2g-tabs__tab--disabled]=\"tab.disabled\"\n [attr.aria-selected]=\"isActive(tab)\"\n [attr.aria-disabled]=\"tab.disabled || null\"\n [disabled]=\"tab.disabled || null\"\n (click)=\"select(tab)\"\n >\n @if (tab.icon) {\n <span class=\"c2g-tabs__tab-icon\" aria-hidden=\"true\">{{ tab.icon }}</span>\n }\n <span class=\"c2g-tabs__tab-label\">{{ tab.label }}</span>\n @if (tab.badge !== undefined) {\n <span class=\"c2g-tabs__tab-badge\">{{ tab.badge }}</span>\n }\n </button>\n }\n </div>\n\n <div class=\"c2g-tabs__indicator-bar\" aria-hidden=\"true\"></div>\n\n <div class=\"c2g-tabs__panel\" role=\"tabpanel\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { C2gBreadcrumbItem } from './breadcrumb.models';\n\n@Component({\n selector: 'c2g-breadcrumb',\n standalone: true,\n imports: [],\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BreadcrumbComponent {\n readonly items = input.required<C2gBreadcrumbItem[]>();\n readonly separator = input('›');\n\n readonly itemClicked = output<C2gBreadcrumbItem>();\n\n navigate(event: Event, item: C2gBreadcrumbItem): void {\n if (!item.href) {\n event.preventDefault();\n this.itemClicked.emit(item);\n }\n }\n}\n","<nav class=\"c2g-breadcrumb\" aria-label=\"Breadcrumb\">\n <ol class=\"c2g-breadcrumb__list\">\n @for (item of items(); track item.label; let last = $last) {\n <li class=\"c2g-breadcrumb__item\">\n @if (!last) {\n <a\n class=\"c2g-breadcrumb__link\"\n [href]=\"item.href || '#'\"\n (click)=\"navigate($event, item)\"\n >\n @if (item.icon) {\n <span class=\"c2g-breadcrumb__icon\" aria-hidden=\"true\">{{ item.icon }}</span>\n }\n {{ item.label }}\n </a>\n <span class=\"c2g-breadcrumb__separator\" aria-hidden=\"true\">{{ separator() }}</span>\n } @else {\n <span class=\"c2g-breadcrumb__current\" aria-current=\"page\">\n @if (item.icon) {\n <span class=\"c2g-breadcrumb__icon\" aria-hidden=\"true\">{{ item.icon }}</span>\n }\n {{ item.label }}\n </span>\n }\n </li>\n }\n </ol>\n</nav>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n output\n} from '@angular/core';\nimport { C2gStep, C2gStepState } from './stepper.models';\n\n@Component({\n selector: 'c2g-stepper',\n standalone: true,\n imports: [],\n templateUrl: './stepper.component.html',\n styleUrls: ['./stepper.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class StepperComponent {\n readonly steps = input.required<C2gStep[]>();\n readonly activeIndex = model(0);\n readonly completedIndices = input<number[]>([]);\n readonly errorIndices = input<number[]>([]);\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n readonly stepChanged = output<{ step: C2gStep; index: number }>();\n\n readonly canGoNext = computed(() => this.activeIndex() < this.steps().length - 1);\n readonly canGoPrev = computed(() => this.activeIndex() > 0);\n\n getState(index: number): C2gStepState {\n if (this.errorIndices().includes(index)) return 'error';\n if (this.completedIndices().includes(index)) return 'completed';\n if (index === this.activeIndex()) return 'active';\n return 'pending';\n }\n\n goTo(index: number): void {\n if (index < 0 || index >= this.steps().length) return;\n this.activeIndex.set(index);\n this.stepChanged.emit({ step: this.steps()[index], index });\n }\n\n next(): void { this.goTo(this.activeIndex() + 1); }\n prev(): void { this.goTo(this.activeIndex() - 1); }\n}\n","<div\n class=\"c2g-stepper\"\n [class.c2g-stepper--horizontal]=\"orientation() === 'horizontal'\"\n [class.c2g-stepper--vertical]=\"orientation() === 'vertical'\"\n role=\"list\"\n [attr.aria-label]=\"'Steps'\"\n>\n @for (step of steps(); track step.label; let i = $index; let last = $last) {\n <div\n class=\"c2g-stepper__step\"\n [class.c2g-stepper__step--active]=\"getState(i) === 'active'\"\n [class.c2g-stepper__step--completed]=\"getState(i) === 'completed'\"\n [class.c2g-stepper__step--error]=\"getState(i) === 'error'\"\n [class.c2g-stepper__step--pending]=\"getState(i) === 'pending'\"\n role=\"listitem\"\n >\n <div class=\"c2g-stepper__header\">\n <button\n class=\"c2g-stepper__marker\"\n type=\"button\"\n [attr.aria-label]=\"'Step ' + (i + 1) + ': ' + step.label\"\n [attr.aria-current]=\"getState(i) === 'active' ? 'step' : null\"\n (click)=\"goTo(i)\"\n >\n @if (getState(i) === 'completed') {\n <span class=\"c2g-stepper__check\" aria-hidden=\"true\">✓</span>\n } @else if (getState(i) === 'error') {\n <span class=\"c2g-stepper__error-icon\" aria-hidden=\"true\">!</span>\n } @else {\n <span class=\"c2g-stepper__index\" aria-hidden=\"true\">{{ i + 1 }}</span>\n }\n </button>\n\n <div class=\"c2g-stepper__label-group\">\n <span class=\"c2g-stepper__label\">{{ step.label }}</span>\n @if (step.description) {\n <span class=\"c2g-stepper__description\">{{ step.description }}</span>\n }\n </div>\n </div>\n\n @if (!last) {\n <div class=\"c2g-stepper__connector\" aria-hidden=\"true\">\n <div\n class=\"c2g-stepper__connector-line\"\n [class.c2g-stepper__connector-line--filled]=\"getState(i) === 'completed'\"\n ></div>\n </div>\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n computed,\n effect,\n input,\n signal,\n} from '@angular/core';\nimport { C2gKpiCardData } from './kpi-card.models';\n\n@Component({\n selector: 'c2g-kpi-card',\n standalone: true,\n imports: [],\n templateUrl: './kpi-card.component.html',\n styleUrls: ['./kpi-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClass()',\n '(mousemove)': 'onMouseMove($event)',\n '(mouseleave)': 'onMouseLeave()',\n }\n})\nexport class C2gKpiCardComponent implements OnDestroy {\n readonly data = input.required<C2gKpiCardData>();\n\n readonly color = computed(() => this.data().color ?? 'neutral');\n readonly hostClass = computed(() => `c2g-kpi-card c2g-kpi-card--${this.color()}`);\n\n // Count-up animation\n readonly displayValue = signal('');\n private countUpRaf = 0;\n\n constructor(private el: ElementRef<HTMLElement>) {\n effect(() => {\n const raw = this.data().value;\n this.startCountUp(raw);\n });\n }\n\n private startCountUp(raw: string | number): void {\n cancelAnimationFrame(this.countUpRaf);\n const target = parseFloat(String(raw).replace(/[^0-9.-]/g, ''));\n if (isNaN(target)) { this.displayValue.set(String(raw)); return; }\n\n const isFloat = String(raw).includes('.');\n const decimals = isFloat ? (String(raw).split('.')[1]?.length ?? 1) : 0;\n const suffix = String(raw).replace(/^[0-9.,\\s-]+/, '');\n const prefix = String(raw).replace(/[0-9.,\\s]+.*$/, '');\n const duration = 900;\n const start = performance.now();\n\n const tick = (now: number) => {\n const progress = Math.min((now - start) / duration, 1);\n const ease = 1 - Math.pow(1 - progress, 3); // ease-out cubic\n const current = ease * target;\n const formatted = decimals > 0\n ? current.toFixed(decimals)\n : Math.round(current).toLocaleString('de-DE');\n this.displayValue.set(`${prefix}${formatted}${suffix}`);\n if (progress < 1) this.countUpRaf = requestAnimationFrame(tick);\n };\n this.countUpRaf = requestAnimationFrame(tick);\n }\n\n // Sparkline SVG path\n readonly sparklinePath = computed(() => {\n const pts = this.data().sparkline;\n if (!pts || pts.length < 2) return null;\n const w = 80, h = 28;\n const min = Math.min(...pts);\n const max = Math.max(...pts);\n const range = max - min || 1;\n const coords = pts.map((v, i) => ({\n x: (i / (pts.length - 1)) * w,\n y: h - ((v - min) / range) * h,\n }));\n // Smooth bezier\n const d = coords.reduce((acc, p, i) => {\n if (i === 0) return `M ${p.x} ${p.y}`;\n const prev = coords[i - 1];\n const cpx = (prev.x + p.x) / 2;\n return `${acc} C ${cpx} ${prev.y} ${cpx} ${p.y} ${p.x} ${p.y}`;\n }, '');\n // Area fill path\n const area = `${d} L ${coords[coords.length-1].x} ${h} L 0 ${h} Z`;\n return { line: d, area, lastX: coords[coords.length-1].x, lastY: coords[coords.length-1].y };\n });\n\n // 3D tilt\n readonly tilt = signal({ x: 0, y: 0 });\n\n onMouseMove(e: MouseEvent): void {\n const rect = this.el.nativeElement.getBoundingClientRect();\n const cx = rect.left + rect.width / 2;\n const cy = rect.top + rect.height / 2;\n const maxTilt = 6;\n this.tilt.set({\n x: ((e.clientY - cy) / (rect.height / 2)) * -maxTilt,\n y: ((e.clientX - cx) / (rect.width / 2)) * maxTilt,\n });\n }\n\n onMouseLeave(): void {\n this.tilt.set({ x: 0, y: 0 });\n }\n\n readonly tiltStyle = computed(() => {\n const { x, y } = this.tilt();\n return `perspective(600px) rotateX(${x}deg) rotateY(${y}deg) translateZ(0)`;\n });\n\n readonly trendArrow = computed(() => {\n const t = this.data().trend;\n if (t === 'up') return '↑';\n if (t === 'down') return '↓';\n return '→';\n });\n\n ngOnDestroy(): void {\n cancelAnimationFrame(this.countUpRaf);\n }\n}\n","<div class=\"c2g-kpi-card__inner\" [style.transform]=\"tiltStyle()\">\n\n <!-- Glassmorphism icon orb -->\n @if (data().icon) {\n <div class=\"c2g-kpi-card__orb\" aria-hidden=\"true\">\n <span class=\"c2g-kpi-card__orb-icon\">{{ data().icon }}</span>\n </div>\n }\n\n <!-- Decorative blob -->\n <div class=\"c2g-kpi-card__blob\" aria-hidden=\"true\"></div>\n\n <!-- Label -->\n <p class=\"c2g-kpi-card__label\">{{ data().label }}</p>\n\n <!-- Main value -->\n <div class=\"c2g-kpi-card__value-row\">\n <span class=\"c2g-kpi-card__value\">{{ displayValue() }}</span>\n @if (data().unit) {\n <span class=\"c2g-kpi-card__unit\">{{ data().unit }}</span>\n }\n </div>\n\n <!-- Sparkline -->\n @if (sparklinePath(); as sp) {\n <div class=\"c2g-kpi-card__sparkline\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 80 28\" preserveAspectRatio=\"none\" width=\"100%\" height=\"28\">\n <defs>\n <linearGradient [id]=\"'spark-grad-' + color()\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" class=\"c2g-kpi-card__spark-stop-top\" />\n <stop offset=\"100%\" class=\"c2g-kpi-card__spark-stop-bottom\" />\n </linearGradient>\n </defs>\n <path class=\"c2g-kpi-card__spark-area\"\n [attr.d]=\"sp.area\"\n [attr.fill]=\"'url(#spark-grad-' + color() + ')'\" />\n <path class=\"c2g-kpi-card__spark-line\" [attr.d]=\"sp.line\" fill=\"none\" />\n <!-- Dot at latest value -->\n <circle class=\"c2g-kpi-card__spark-dot\"\n [attr.cx]=\"sp.lastX\" [attr.cy]=\"sp.lastY\" r=\"2.5\" />\n </svg>\n </div>\n }\n\n <!-- Trend footer -->\n @if (data().trend || data().change !== undefined) {\n <div class=\"c2g-kpi-card__footer\"\n [class.c2g-kpi-card__footer--up]=\"data().trend === 'up'\"\n [class.c2g-kpi-card__footer--down]=\"data().trend === 'down'\">\n <span class=\"c2g-kpi-card__arrow\">{{ trendArrow() }}</span>\n @if (data().change !== undefined) {\n <span class=\"c2g-kpi-card__change\">{{ data().change }}</span>\n }\n @if (data().changeLabel) {\n <span class=\"c2g-kpi-card__change-label\">{{ data().changeLabel }}</span>\n }\n </div>\n }\n\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n output,\n signal\n} from '@angular/core';\nimport { C2gFilterGroup, C2gFilterState } from './filter-bar.models';\n\n@Component({\n selector: 'c2g-filter-bar',\n standalone: true,\n imports: [],\n templateUrl: './filter-bar.component.html',\n styleUrls: ['./filter-bar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FilterBarComponent {\n readonly groups = input.required<C2gFilterGroup[]>();\n readonly searchPlaceholder = input('Suchen...');\n readonly showSearch = input(true);\n\n readonly search = model('');\n readonly activeFilters = model<C2gFilterState>({});\n\n readonly filterChanged = output<C2gFilterState>();\n readonly searchChanged = output<string>();\n\n readonly activeCount = computed(() =>\n Object.values(this.activeFilters()).reduce((sum, v) => sum + v.length, 0)\n );\n\n readonly hasActiveFilters = computed(() => this.activeCount() > 0);\n\n isSelected(groupKey: string, optionKey: string): boolean {\n return (this.activeFilters()[groupKey] ?? []).includes(optionKey);\n }\n\n toggle(groupKey: string, optionKey: string, multiple: boolean): void {\n const current = { ...this.activeFilters() };\n const selected = current[groupKey] ?? [];\n if (multiple) {\n current[groupKey] = selected.includes(optionKey)\n ? selected.filter(k => k !== optionKey)\n : [...selected, optionKey];\n } else {\n current[groupKey] = selected.includes(optionKey) ? [] : [optionKey];\n }\n this.activeFilters.set(current);\n this.filterChanged.emit(current);\n }\n\n clearAll(): void {\n this.activeFilters.set({});\n this.search.set('');\n this.filterChanged.emit({});\n this.searchChanged.emit('');\n }\n\n onSearch(value: string): void {\n this.search.set(value);\n this.searchChanged.emit(value);\n }\n}\n","<div class=\"c2g-filter-bar\">\n @if (showSearch()) {\n <div class=\"c2g-filter-bar__search\">\n <input\n class=\"c2g-filter-bar__search-input\"\n type=\"search\"\n [placeholder]=\"searchPlaceholder()\"\n [value]=\"search()\"\n (input)=\"onSearch($any($event.target).value)\"\n aria-label=\"Suchen\"\n />\n <span class=\"c2g-filter-bar__search-icon\" aria-hidden=\"true\">🔍</span>\n </div>\n }\n\n <div class=\"c2g-filter-bar__groups\">\n @for (group of groups(); track group.key) {\n <div class=\"c2g-filter-bar__group\">\n @if (group.label) {\n <span class=\"c2g-filter-bar__group-label\">{{ group.label }}</span>\n }\n <div class=\"c2g-filter-bar__options\" role=\"group\" [attr.aria-label]=\"group.label\">\n @for (option of group.options; track option.key) {\n <button\n class=\"c2g-filter-bar__option\"\n type=\"button\"\n [class.c2g-filter-bar__option--active]=\"isSelected(group.key, option.key)\"\n [attr.aria-pressed]=\"isSelected(group.key, option.key)\"\n (click)=\"toggle(group.key, option.key, group.multiple ?? true)\"\n >\n @if (option.icon) {\n <span class=\"c2g-filter-bar__option-icon\" aria-hidden=\"true\">{{ option.icon }}</span>\n }\n {{ option.label }}\n @if (option.count !== undefined) {\n <span class=\"c2g-filter-bar__option-count\">{{ option.count }}</span>\n }\n </button>\n }\n </div>\n </div>\n }\n </div>\n\n @if (hasActiveFilters()) {\n <button\n class=\"c2g-filter-bar__clear\"\n type=\"button\"\n (click)=\"clearAll()\"\n >\n Filter zurücksetzen\n <span class=\"c2g-filter-bar__clear-badge\">{{ activeCount() }}</span>\n </button>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'c2g-skeleton-table',\n standalone: true,\n imports: [],\n templateUrl: './skeleton-table.component.html',\n styleUrls: ['./skeleton-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SkeletonTableComponent {\n readonly rows = input(5);\n readonly columns = input(4);\n readonly showHeader = input(true);\n\n readonly rowIndices = Array.from({ length: 10 }).map((_, i) => i);\n readonly colIndices = Array.from({ length: 10 }).map((_, i) => i);\n}\n","<div class=\"c2g-skeleton-table\">\n <table class=\"c2g-skeleton-table__table\" aria-busy=\"true\" aria-label=\"Wird geladen...\">\n @if (showHeader()) {\n <thead class=\"c2g-skeleton-table__head\">\n <tr>\n @for (c of colIndices.slice(0, columns()); track c) {\n <th class=\"c2g-skeleton-table__th\">\n <span class=\"c2g-skeleton c2g-skeleton--header\"></span>\n </th>\n }\n </tr>\n </thead>\n }\n <tbody>\n @for (r of rowIndices.slice(0, rows()); track r) {\n <tr class=\"c2g-skeleton-table__row\">\n @for (c of colIndices.slice(0, columns()); track c; let first = $first) {\n <td class=\"c2g-skeleton-table__td\">\n <span\n class=\"c2g-skeleton\"\n [class.c2g-skeleton--wide]=\"first\"\n ></span>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"camp2gether-c2g-ui-layout.mjs","sources":["../../../projects/c2g-ui/layout/content-panel/content-panel.component.ts","../../../projects/c2g-ui/layout/content-panel/content-panel.component.html","../../../projects/c2g-ui/layout/hero/coverage-kpi.component.ts","../../../projects/c2g-ui/layout/hero/coverage-kpi.component.html","../../../projects/c2g-ui/layout/hero/hero.component.ts","../../../projects/c2g-ui/layout/hero/hero.component.html","../../../projects/c2g-ui/layout/hero/kpi-card.component.ts","../../../projects/c2g-ui/layout/hero/kpi-card.component.html","../../../projects/c2g-ui/layout/danger-zone/danger-zone-item.component.ts","../../../projects/c2g-ui/layout/danger-zone/danger-zone-item.component.html","../../../projects/c2g-ui/layout/danger-zone/danger-zone.component.ts","../../../projects/c2g-ui/layout/danger-zone/danger-zone.component.html","../../../projects/c2g-ui/layout/list-item/list-item.component.ts","../../../projects/c2g-ui/layout/list-item/list-item.component.html","../../../projects/c2g-ui/layout/stat-card/stat-card.component.ts","../../../projects/c2g-ui/layout/stat-card/stat-card.component.html","../../../projects/c2g-ui/layout/action-card/action-card.component.ts","../../../projects/c2g-ui/layout/action-card/action-card.component.html","../../../projects/c2g-ui/layout/view-toggle/view-toggle.component.ts","../../../projects/c2g-ui/layout/view-toggle/view-toggle.component.html","../../../projects/c2g-ui/layout/segmented-toggle/segmented-toggle.component.ts","../../../projects/c2g-ui/layout/search-input/search-input.component.ts","../../../projects/c2g-ui/layout/search-input/search-input.component.html","../../../projects/c2g-ui/layout/empty-state/empty-state.component.ts","../../../projects/c2g-ui/layout/empty-state/empty-state.component.html","../../../projects/c2g-ui/layout/pagination/pagination.component.ts","../../../projects/c2g-ui/layout/pagination/pagination.component.html","../../../projects/c2g-ui/layout/table/table.component.ts","../../../projects/c2g-ui/layout/table/table.component.html","../../../projects/c2g-ui/layout/tabs/tabs.component.ts","../../../projects/c2g-ui/layout/tabs/tabs.component.html","../../../projects/c2g-ui/layout/breadcrumb/breadcrumb.component.ts","../../../projects/c2g-ui/layout/breadcrumb/breadcrumb.component.html","../../../projects/c2g-ui/layout/stepper/stepper.component.ts","../../../projects/c2g-ui/layout/stepper/stepper.component.html","../../../projects/c2g-ui/layout/kpi-card/kpi-card.component.ts","../../../projects/c2g-ui/layout/kpi-card/kpi-card.component.html","../../../projects/c2g-ui/layout/filter-bar/filter-bar.component.ts","../../../projects/c2g-ui/layout/filter-bar/filter-bar.component.html","../../../projects/c2g-ui/layout/skeleton-table/skeleton-table.component.ts","../../../projects/c2g-ui/layout/skeleton-table/skeleton-table.component.html","../../../projects/c2g-ui/layout/camp2gether-c2g-ui-layout.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n input\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-content-panel',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule],\n templateUrl: './content-panel.component.html',\n styleUrls: ['./content-panel.component.scss']\n})\nexport class ContentPanelComponent {\n eyebrow = input<string>('');\n title = input<string>('');\n}\n","<article class=\"content-panel\">\n @if (eyebrow() || title()) {\n <header class=\"content-panel__header\">\n <div class=\"content-panel__header-text\">\n @if (eyebrow()) {\n <span class=\"content-panel__eyebrow\">{{ eyebrow() | translate }}</span>\n }\n @if (title()) {\n <h2 class=\"content-panel__title\">{{ title() | translate }}</h2>\n }\n </div>\n <div class=\"content-panel__actions\">\n <ng-content select=\"[panel-actions]\" />\n </div>\n </header>\n }\n <ng-content />\n</article>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n} from '@angular/core';\n\n@Component({\n selector: 'app-coverage-kpi',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n templateUrl: './coverage-kpi.component.html',\n styleUrls: ['./coverage-kpi.component.scss'],\n})\nexport class CoverageKpiComponent {\n label = input.required<string>();\n coveragePercent = input<number>(0);\n\n readonly ringCircumference = 125.66;\n\n readonly ringOffset = computed(\n () => this.ringCircumference * (1 - this.coveragePercent() / 100),\n );\n}","<div class=\"coverage-kpi\" role=\"listitem\">\n <div class=\"coverage-kpi__content\">\n <div class=\"coverage-kpi__ring\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 48 48\">\n <circle class=\"coverage-kpi__ring-bg\" cx=\"24\" cy=\"24\" r=\"20\" />\n <circle\n class=\"coverage-kpi__ring-fill\"\n cx=\"24\"\n cy=\"24\"\n r=\"20\"\n [style.stroke-dasharray]=\"ringCircumference\"\n [style.stroke-dashoffset]=\"ringOffset()\"\n />\n </svg>\n <span class=\"coverage-kpi__percent\">{{ coveragePercent() }}%</span>\n </div>\n\n <span class=\"coverage-kpi__label\">{{ label() }}</span>\n </div>\n</div>","import {\n Component,\n ChangeDetectionStrategy,\n input\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-hero',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatIconModule, TranslateModule],\n templateUrl: './hero.component.html',\n styleUrls: ['./hero.component.scss']\n})\nexport class HeroComponent {\n eyebrow = input<string>();\n title = input<string>();\n lead = input<string>();\n}\n","<section class=\"hero\">\n @if (eyebrow()) {\n <div class=\"hero__eyebrow\">\n <mat-icon class=\"hero__icon\">backpack</mat-icon>\n <span>{{ eyebrow() }}</span>\n </div>\n }\n\n <h1 class=\"hero__title\">{{ title() }}</h1>\n <p class=\"hero__lead\">{{ lead() }}</p>\n\n <ng-content></ng-content>\n</section>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nexport type KpiCardTone = 'owned' | 'missing' | 'total';\n\n@Component({\n selector: 'app-kpi-card',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatIconModule],\n templateUrl: './kpi-card.component.html',\n styleUrls: ['./kpi-card.component.scss'],\n})\nexport class KpiCardComponent {\n value = input.required<number>();\n label = input.required<string>();\n icon = input.required<string>();\n tone = input.required<KpiCardTone>();\n}","<div class=\"kpi-card\" [class]=\"'kpi-card kpi-card--' + tone()\" role=\"listitem\">\n <div class=\"kpi-card__content\">\n <span class=\"kpi-card__value\">{{ value() }}</span>\n <span class=\"kpi-card__label\">{{ label() }}</span>\n </div>\n <mat-icon class=\"kpi-card__icon\">{{ icon() }}</mat-icon>\n</div>","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonComponent } from '@camp2gether/c2g-ui';\nimport { DangerZoneItem } from './danger-zone.component';\n\n@Component({\n selector: 'c2g-danger-zone-item',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ButtonComponent, TranslateModule],\n templateUrl: './danger-zone-item.component.html',\n styleUrls: ['./danger-zone-item.component.scss']\n})\nexport class DangerZoneItemComponent {\n readonly item = input.required<DangerZoneItem>();\n readonly triggered = output<DangerZoneItem>();\n\n titleKey(): string {\n return this.item().titleKey ?? this.item().title ?? '';\n }\n\n descriptionKey(): string | null {\n return this.item().descriptionKey ?? this.item().description ?? null;\n }\n\n actionLabelKey(): string {\n return this.item().action.labelKey ?? this.item().action.label ?? '';\n }\n\n actionAriaLabelKey(): string {\n return this.item().action.ariaLabelKey ?? this.item().action.labelKey ?? this.item().action.ariaLabel ?? this.item().action.label ?? '';\n }\n\n onTriggered(): void {\n this.triggered.emit(this.item());\n }\n}\n","<div class=\"c2g-danger-zone-item\">\n <div class=\"c2g-danger-zone-item__info\">\n <span class=\"c2g-danger-zone-item__label\">{{ titleKey() | translate }}</span>\n @if (descriptionKey(); as descriptionKey) {\n <span class=\"c2g-danger-zone-item__hint\">{{ descriptionKey | translate }}</span>\n }\n </div>\n\n <c2g-button\n [variant]=\"item().action.variant ?? 'secondary'\"\n [icon]=\"item().action.icon ?? ''\"\n [ariaLabel]=\"actionAriaLabelKey() | translate\"\n [disabled]=\"item().action.disabled ?? false\"\n (clicked)=\"onTriggered()\"\n >\n {{ actionLabelKey() | translate }}\n </c2g-button>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DangerZoneItemComponent } from './danger-zone-item.component';\n\nexport interface DangerZoneAction {\n labelKey?: string;\n variant?: 'primary' | 'secondary' | 'ghost' | 'destructive';\n icon?: string;\n ariaLabelKey?: string;\n disabled?: boolean;\n // Legacy fallback fields\n label?: string;\n ariaLabel?: string;\n}\n\nexport interface DangerZoneItem {\n id: string;\n titleKey?: string;\n descriptionKey?: string;\n action: DangerZoneAction;\n onTrigger?: (item: DangerZoneItem) => void;\n // Legacy fallback fields\n title?: string;\n description?: string;\n}\n\n@Component({\n selector: 'c2g-danger-zone',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DangerZoneItemComponent, TranslateModule],\n templateUrl: './danger-zone.component.html',\n styleUrls: ['./danger-zone.component.scss']\n})\nexport class DangerZoneComponent {\n readonly headingKey = input<string>('c2g.danger_zone.default.heading');\n readonly items = input.required<DangerZoneItem[]>();\n\n /**\n * Emits the clicked item id so consumers can map actions in their container.\n *\n * Prefer the per-item callback (`item.onTrigger`) when you want action logic to\n * live directly on each item config.\n *\n * Output binding:\n * ```html\n * <c2g-danger-zone [items]=\"dangerItems\" (itemTriggered)=\"onDangerAction($event)\" />\n * ```\n *\n * Example mapping:\n * ```ts\n * onDangerAction(id: string) {\n * if (id === 'delete-project') {\n * this.openDeleteDialog();\n * }\n * }\n * ```\n */\n readonly itemTriggered = output<string>();\n\n readonly resolvedHeadingKey = computed(() => this.headingKey());\n\n onItemTriggered(item: DangerZoneItem): void {\n item.onTrigger?.(item);\n this.itemTriggered.emit(item.id);\n }\n}\n","<section class=\"c2g-danger-zone\" aria-labelledby=\"c2g-danger-zone-heading\">\n <h2 id=\"c2g-danger-zone-heading\" class=\"c2g-danger-zone__heading\">\n {{ resolvedHeadingKey() | translate }}\n </h2>\n\n <div class=\"c2g-danger-zone__content\">\n @for (item of items(); track item.id; let last = $last) {\n <c2g-danger-zone-item [item]=\"item\" (triggered)=\"onItemTriggered($event)\" />\n\n @if (!last) {\n <div class=\"c2g-danger-zone__divider\" aria-hidden=\"true\"></div>\n }\n }\n </div>\n</section>","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\n\nexport interface C2gListItemData {\n name: string;\n description?: string | null;\n memberCount?: number | null;\n members?: unknown[];\n}\n\n@Component({\n selector: 'c2g-list-item',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatButtonModule, MatIconModule, MatTooltipModule, TranslateModule],\n templateUrl: './list-item.component.html',\n styleUrls: ['./list-item.component.scss']\n})\nexport class ListItemComponent {\n readonly group = input<C2gListItemData | null>(null);\n readonly active = input<boolean>(false);\n\n readonly selected = output<C2gListItemData | null>();\n readonly opened = output<C2gListItemData | null>();\n}\n","<li\n class=\"c2g-list-item\"\n [class.c2g-list-item--active]=\"active()\"\n role=\"button\"\n tabindex=\"0\"\n [attr.aria-label]=\"group()?.name\"\n (click)=\"selected.emit(group())\"\n (keyup.enter)=\"selected.emit(group())\"\n (keydown.space)=\"$event.preventDefault(); selected.emit(group())\"\n>\n <div class=\"c2g-list-item__avatar\">\n <mat-icon>group</mat-icon>\n </div>\n\n <div class=\"c2g-list-item__info\">\n <span class=\"c2g-list-item__name\">{{ group()?.name }}</span>\n @if (group()?.description) {\n <span class=\"c2g-list-item__desc\">{{ group()?.description }}</span>\n }\n </div>\n\n <div class=\"c2g-list-item__end\">\n <span class=\"c2g-list-item__members\">\n <mat-icon>group</mat-icon>\n {{ group()?.memberCount ?? group()?.members?.length ?? 0 }}\n </span>\n <button\n mat-icon-button\n class=\"c2g-list-item__open-btn\"\n [matTooltip]=\"'groups.open' | translate\"\n [attr.aria-label]=\"'groups.open' | translate\"\n (click)=\"$event.stopPropagation(); opened.emit(group())\"\n >\n <mat-icon>arrow_forward</mat-icon>\n </button>\n </div>\n</li>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LottieLoaderComponent } from '@camp2gether/c2g-ui';\nimport { C2gLottieLoaderPreset } from '@camp2gether/c2g-ui';\n\nexport interface StatCardBackground {\n type: 'gradient' | 'image';\n value: string;\n overlay?: string;\n}\n\nexport interface StatCardData {\n value: string | number;\n label: string;\n icon?: string;\n lottiePreset?: C2gLottieLoaderPreset;\n iconBackgroundTone?: 'primary' | 'secondary' | 'neutral';\n background?: StatCardBackground;\n disabled?: boolean;\n trend?: {\n direction: 'up' | 'down' | 'neutral';\n value: string | number;\n };\n}\n\n@Component({\n selector: 'c2g-stat-card',\n standalone: true,\n imports: [CommonModule, MatIcon, TranslateModule, LottieLoaderComponent],\n templateUrl: './stat-card.component.html',\n styleUrl: './stat-card.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StatCardComponent {\n readonly data = input.required<StatCardData>();\n\n readonly cardBackgroundStyle = computed((): Record<string, string> | null => {\n const background = this.data().background;\n\n if (!background) {\n return null;\n }\n\n if (background.type === 'gradient') {\n return { backgroundImage: background.value };\n }\n\n const imageUrl = background.value.startsWith('url(')\n ? background.value\n : `url('${background.value}')`;\n const overlay = background.overlay ?? 'linear-gradient(rgba(0, 0, 0, 0.34), rgba(0, 0, 0, 0.34))';\n\n return {\n backgroundImage: `${overlay}, ${imageUrl}`,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n backgroundRepeat: 'no-repeat',\n };\n });\n}\n","<div\n class=\"stat-card\"\n [class]=\"'stat-card--' + (data().iconBackgroundTone || 'neutral')\"\n [class.stat-card--disabled]=\"data().disabled\"\n [class.stat-card--custom-bg]=\"!!data().background\"\n [ngStyle]=\"cardBackgroundStyle()\"\n>\n @if (data().lottiePreset) {\n <div class=\"stat-icon-wrapper stat-icon-wrapper--lottie\">\n <c2g-lottie-loader\n [preset]=\"data().lottiePreset!\"\n width=\"28px\"\n height=\"28px\"\n [showLabel]=\"false\"\n label=\"Animation\"\n ></c2g-lottie-loader>\n </div>\n } @else if (data().icon) {\n <div class=\"stat-icon-wrapper\">\n <mat-icon class=\"stat-icon\">{{ data().icon }}</mat-icon>\n </div>\n }\n\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{ data().value }}</div>\n <div class=\"stat-label\">{{ data().label | translate }}</div>\n </div>\n\n @if (data().trend) {\n <div class=\"stat-trend\" [class]=\"'stat-trend--' + data().trend!.direction\">\n <mat-icon class=\"trend-icon\">\n @switch (data().trend!.direction) {\n @case ('up') {\n trending_up\n }\n @case ('down') {\n trending_down\n }\n @case ('neutral') {\n trending_flat\n }\n }\n </mat-icon>\n <span class=\"trend-value\">{{ data().trend!.value }}</span>\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatCard } from '@angular/material/card';\nimport { MatIcon } from '@angular/material/icon';\nimport { ButtonComponent } from '@camp2gether/c2g-ui';\nimport { LottieLoaderComponent } from '@camp2gether/c2g-ui';\nimport { C2gLottieLoaderPreset } from '@camp2gether/c2g-ui';\n\nexport type ActionCardLayout = 'icon-left' | 'hero-top' | 'icon-detail';\n\nexport interface ActionCardData {\n icon?: string;\n title: string;\n text?: string;\n description?: string;\n image?: string;\n lottiePreset?: C2gLottieLoaderPreset;\n disabled?: boolean;\n iconBackgroundTone?: 'primary' | 'secondary' | 'neutral';\n ctaLabel?: string;\n}\n\n@Component({\n selector: 'c2g-action-card',\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n MatCard,\n MatIcon,\n ButtonComponent,\n LottieLoaderComponent\n ],\n templateUrl: './action-card.component.html',\n styleUrl: './action-card.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ActionCardComponent {\n readonly data = input.required<ActionCardData>();\n readonly clickable = input(true);\n readonly variant = input<ActionCardLayout>('icon-left');\n\n readonly cardClicked = output<void>();\n\n readonly effectiveText = computed(() => this.data().text ?? this.data().description ?? '');\n\n readonly supportingDescription = computed(() => {\n const d = this.data();\n return d.text ? (d.description ?? '') : '';\n });\n\n readonly isInteractive = computed(() => this.clickable() && !this.data().disabled);\n\n readonly iconToneClass = computed(() => this.data().iconBackgroundTone ?? 'neutral');\n\n onCardClick() {\n if (this.isInteractive()) {\n this.cardClicked.emit();\n }\n }\n\n onKeyDown(event: KeyboardEvent) {\n if (!this.isInteractive()) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.cardClicked.emit();\n }\n }\n}\n","<mat-card\n class=\"action-card\"\n [class.clickable]=\"isInteractive()\"\n [class.disabled]=\"data().disabled\"\n [class.variant-icon-left]=\"variant() === 'icon-left'\"\n [class.variant-hero-top]=\"variant() === 'hero-top'\"\n [class.variant-icon-detail]=\"variant() === 'icon-detail'\"\n (click)=\"onCardClick()\"\n (keydown)=\"onKeyDown($event)\"\n [attr.role]=\"isInteractive() ? 'button' : null\"\n [attr.tabindex]=\"isInteractive() ? '0' : null\">\n\n @if (variant() === 'hero-top') {\n <div class=\"hero-top-header\" [class.has-image]=\"data().image || data().lottiePreset\">\n @if (data().lottiePreset) {\n <div class=\"hero-image hero-image--lottie\">\n <c2g-lottie-loader\n [preset]=\"data().lottiePreset!\"\n [showLabel]=\"false\"\n width=\"100%\"\n height=\"100%\"\n ></c2g-lottie-loader>\n </div>\n } @else if (data().image) {\n <div class=\"hero-image\">\n <img [src]=\"data().image\" [alt]=\"data().title | translate\" />\n </div>\n }\n\n <div class=\"hero-top-title-wrap\">\n <h3 class=\"hero-top-title\">{{ data().title | translate }}</h3>\n @if (effectiveText()) {\n <p class=\"hero-top-description\">{{ effectiveText() | translate }}</p>\n }\n </div>\n </div>\n } @else if (variant() === 'icon-detail') {\n <div class=\"icon-detail-layout\">\n @if (data().icon) {\n <div class=\"icon-chip\" [ngClass]=\"iconToneClass()\">\n <mat-icon class=\"hero-icon\">{{ data().icon }}</mat-icon>\n </div>\n }\n <div class=\"icon-detail-body\">\n <h3 class=\"hero-title\">{{ data().title | translate }}</h3>\n @if (effectiveText()) {\n <p class=\"hero-description\">{{ effectiveText() | translate }}</p>\n }\n <div class=\"icon-detail-cta\" (click)=\"$event.stopPropagation()\">\n @if (data().ctaLabel) {\n <c2g-button variant=\"ghost\" size=\"sm\">{{ data().ctaLabel! | translate }}</c2g-button>\n }\n <ng-content select=\"[ctas]\"></ng-content>\n </div>\n </div>\n </div>\n } @else {\n <div class=\"icon-left-header\">\n @if (data().icon) {\n <div class=\"icon-chip\" [ngClass]=\"iconToneClass()\">\n <mat-icon class=\"hero-icon\">{{ data().icon }}</mat-icon>\n </div>\n }\n\n <div class=\"icon-left-title-wrap\">\n <h3 class=\"hero-title\">{{ data().title | translate }}</h3>\n </div>\n </div>\n }\n\n @if (variant() !== 'icon-detail') {\n <div class=\"content-section\">\n @if (variant() !== 'hero-top' && effectiveText()) {\n <p class=\"hero-description\">{{ effectiveText() | translate }}</p>\n }\n\n @if (supportingDescription()) {\n <p class=\"hero-description supporting\">{{ supportingDescription() | translate }}</p>\n }\n\n <ng-content></ng-content>\n </div>\n }\n\n @if (variant() !== 'icon-detail') {\n <div class=\"cta-section\" (click)=\"$event.stopPropagation()\">\n @if (data().ctaLabel) {\n <c2g-button variant=\"ghost\" size=\"sm\">{{ data().ctaLabel! | translate }}</c2g-button>\n }\n\n <ng-content select=\"[ctas]\"></ng-content>\n </div>\n }\n\n</mat-card>\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ViewToggleOption } from './view-toggle.model';\n\n@Component({\n selector: 'app-view-toggle',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n TranslateModule\n ],\n templateUrl: './view-toggle.component.html',\n styleUrls: ['./view-toggle.component.scss']\n})\nexport class ViewToggleComponent<T extends string = string> {\n options = input.required<ViewToggleOption<T>[]>();\n activeValue = input<T | null>(null);\n valueChange = output<T>();\n}\n","<div class=\"view-toggle\" role=\"group\">\n @for (option of options(); track option.value) {\n <button\n mat-icon-button\n [class.active]=\"activeValue() === option.value\"\n (click)=\"valueChange.emit(option.value)\"\n [matTooltip]=\"option.label | translate\"\n [attr.aria-label]=\"option.label | translate\"\n [attr.aria-pressed]=\"activeValue() === option.value\"\n >\n <mat-icon>{{ option.icon }}</mat-icon>\n </button>\n }\n</div>\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 { MatIconModule } from '@angular/material/icon';\nimport { SegmentedToggleOption } from './segmented-toggle.model';\n\n@Component({\n selector: 'c2g-segmented-toggle',\n standalone: true,\n imports: [MatIconModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SegmentedToggleComponent),\n multi: true,\n },\n ],\n template: `\n <div class=\"c2g-segmented\" role=\"radiogroup\" [attr.aria-label]=\"ariaLabel()\">\n @for (option of options(); track option.value; let index = $index) {\n <button\n type=\"button\"\n role=\"radio\"\n class=\"c2g-segmented__item\"\n [class.c2g-segmented__item--active]=\"value() === option.value\"\n [attr.aria-checked]=\"value() === option.value ? 'true' : 'false'\"\n [disabled]=\"isDisabled() || !!option.disabled\"\n [attr.tabindex]=\"tabIndexFor(option.value)\"\n (click)=\"select(option.value)\"\n (keydown)=\"onKeydown($event, index)\"\n >\n @if (option.icon || option.iconFontIcon) {\n <mat-icon\n class=\"c2g-segmented__icon\"\n [fontSet]=\"option.iconFontSet || ''\"\n [fontIcon]=\"option.iconFontIcon || ''\"\n [attr.aria-label]=\"option.iconAriaLabel || null\"\n [attr.aria-hidden]=\"option.iconAriaLabel ? null : 'true'\"\n >\n {{ option.icon || '' }}\n </mat-icon>\n }\n <span [class.c2g-segmented__sr-only]=\"iconOnly()\">{{ option.label }}</span>\n </button>\n }\n </div>\n `,\n styles: `\n .c2g-segmented {\n display: inline-flex;\n align-items: center;\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 padding: var(--c2g-space-1, 0.25rem);\n background: var(--c2g-color-surface, #ffffff);\n gap: var(--c2g-space-1, 0.25rem);\n font-family: var(--c2g-font-family-base, \"Quicksand\", \"Segoe UI\", sans-serif);\n }\n .c2g-segmented__item {\n border: none;\n background: transparent;\n border-radius: var(--c2g-radius-sm, 0.375rem);\n padding: var(--c2g-space-2, 0.5rem) var(--c2g-space-3, 0.75rem);\n display: inline-flex;\n align-items: center;\n gap: var(--c2g-space-2, 0.5rem);\n font-size: var(--c2g-font-size-sm, 0.875rem);\n color: var(--c2g-color-text-secondary, #4a423b);\n cursor: pointer;\n transition: all var(--c2g-motion-duration-fast, 120ms) var(--c2g-motion-ease-standard, ease);\n }\n .c2g-segmented__icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1rem;\n height: 1rem;\n font-size: 0.875rem;\n line-height: 1;\n }\n .c2g-segmented__sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n .c2g-segmented__item--active {\n background: var(--c2g-color-primary, #ff6b35);\n color: var(--c2g-color-text-primary, #1a1714);\n font-weight: var(--c2g-font-weight-semibold, 600);\n }\n .c2g-segmented__item: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-segmented__item:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n `,\n})\nexport class SegmentedToggleComponent<T extends string = string> implements ControlValueAccessor {\n readonly options = input<SegmentedToggleOption<T>[]>([]);\n readonly disabled = input(false);\n readonly ariaLabel = input('Auswahl');\n readonly iconOnly = input(false);\n\n readonly valueChange = output<T>();\n\n readonly value = signal<T | null>(null);\n readonly cvaDisabled = signal(false);\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 tabIndexFor(option: T): number {\n if (this.value() === option) {\n return 0;\n }\n if (this.value() === null && this.options()[0]?.value === option) {\n return 0;\n }\n return -1;\n }\n\n select(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 this.onTouched();\n }\n\n onKeydown(event: KeyboardEvent, index: number): void {\n if (\n event.key !== 'ArrowRight' &&\n event.key !== 'ArrowLeft' &&\n event.key !== 'ArrowUp' &&\n event.key !== 'ArrowDown' &&\n event.key !== 'Home' &&\n event.key !== 'End'\n ) {\n return;\n }\n event.preventDefault();\n\n const enabled = this.options().filter((option) => !option.disabled);\n if (enabled.length === 0) {\n return;\n }\n\n if (event.key === 'Home') {\n const next = enabled[0].value;\n this.select(next);\n this.focusValue(next, event.currentTarget);\n return;\n }\n\n if (event.key === 'End') {\n const next = enabled[enabled.length - 1].value;\n this.select(next);\n this.focusValue(next, event.currentTarget);\n return;\n }\n\n const selectedValue = this.value();\n const fallbackValue = this.options()[index]?.value ?? null;\n const baseValue = selectedValue ?? fallbackValue;\n const currentEnabledIndex = enabled.findIndex((option) => option.value === baseValue);\n const start = currentEnabledIndex >= 0 ? currentEnabledIndex : 0;\n const delta = event.key === 'ArrowRight' || event.key === 'ArrowDown' ? 1 : -1;\n const nextIndex = (start + delta + enabled.length) % enabled.length;\n const next = enabled[nextIndex].value;\n\n this.select(next);\n this.focusValue(next, event.currentTarget);\n }\n\n private focusValue(next: T, eventTarget: EventTarget | null): void {\n const trigger = eventTarget instanceof HTMLElement ? eventTarget : null;\n const root = trigger?.closest('.c2g-segmented');\n const allButtons = root?.querySelectorAll<HTMLButtonElement>('button[role=\"radio\"]');\n if (!allButtons) {\n return;\n }\n\n const optionIndex = this.options().findIndex((option) => option.value === next);\n if (optionIndex >= 0) {\n allButtons[optionIndex]?.focus();\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n output\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-search-input',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatIconModule,\n TranslateModule\n ],\n templateUrl: './search-input.component.html',\n styleUrls: ['./search-input.component.scss']\n})\nexport class SearchInputComponent {\n searchChange = output<string>();\n\n onInput(event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n this.searchChange.emit(inputEl.value);\n }\n}\n","<div class=\"search-input\">\n <mat-icon class=\"search-input__icon\">search</mat-icon>\n <input\n class=\"search-input__field\"\n type=\"text\"\n [placeholder]=\"'equipment.workspace.search' | translate\"\n [attr.aria-label]=\"'equipment.workspace.search' | translate\"\n (input)=\"onInput($event)\"\n />\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output\n} from '@angular/core';\nimport { LottieLoaderComponent } from '@camp2gether/c2g-ui';\nimport { EmptyStateData } from './empty-state.models';\n\n@Component({\n selector: 'c2g-empty-state',\n standalone: true,\n imports: [LottieLoaderComponent],\n templateUrl: './empty-state.component.html',\n styleUrls: ['./empty-state.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EmptyStateComponent {\n readonly data = input.required<EmptyStateData>();\n\n readonly actionClicked = output<void>();\n}\n","<div class=\"c2g-empty-state\">\n @if (data().lottiePreset) {\n <div class=\"c2g-empty-state__lottie\">\n <c2g-lottie-loader\n [preset]=\"data().lottiePreset!\"\n width=\"120px\"\n height=\"120px\"\n [showLabel]=\"false\"\n label=\"Illustration\"\n />\n </div>\n } @else if (data().icon) {\n <span class=\"c2g-empty-state__icon\" aria-hidden=\"true\">{{ data().icon }}</span>\n }\n\n <h3 class=\"c2g-empty-state__title\">{{ data().title }}</h3>\n\n @if (data().description) {\n <p class=\"c2g-empty-state__description\">{{ data().description }}</p>\n }\n\n @if (data().actionLabel) {\n <button\n class=\"c2g-empty-state__action\"\n type=\"button\"\n (click)=\"actionClicked.emit()\">\n {{ data().actionLabel }}\n </button>\n }\n\n <ng-content />\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output\n} from '@angular/core';\nimport { PaginationState } from './pagination.models';\n\nconst MAX_VISIBLE_PAGES = 5;\n\n@Component({\n selector: 'c2g-pagination',\n standalone: true,\n imports: [],\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PaginationComponent {\n readonly state = input.required<PaginationState>();\n readonly ariaLabel = input('Seitennavigation');\n\n readonly pageChanged = output<number>();\n\n readonly currentPage = computed(() => this.state().currentPage);\n readonly totalPages = computed(() => this.state().totalPages);\n\n readonly hasPrev = computed(() => this.currentPage() > 1);\n readonly hasNext = computed(() => this.currentPage() < this.totalPages());\n\n readonly visiblePages = computed(() => {\n const total = this.totalPages();\n const current = this.currentPage();\n const half = Math.floor(MAX_VISIBLE_PAGES / 2);\n\n let start = Math.max(1, current - half);\n let end = Math.min(total, start + MAX_VISIBLE_PAGES - 1);\n\n if (end - start < MAX_VISIBLE_PAGES - 1) {\n start = Math.max(1, end - MAX_VISIBLE_PAGES + 1);\n }\n\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n });\n\n readonly showStartEllipsis = computed(() => (this.visiblePages()[0] ?? 1) > 1);\n readonly showEndEllipsis = computed(() => (this.visiblePages().at(-1) ?? this.totalPages()) < this.totalPages());\n\n go(page: number): void {\n if (page < 1 || page > this.totalPages() || page === this.currentPage()) return;\n this.pageChanged.emit(page);\n }\n}\n","<nav class=\"c2g-pagination\" [attr.aria-label]=\"ariaLabel()\">\n <button\n class=\"c2g-pagination__btn c2g-pagination__btn--nav\"\n type=\"button\"\n aria-label=\"Vorherige Seite\"\n [disabled]=\"!hasPrev()\"\n (click)=\"go(currentPage() - 1)\">\n ‹\n </button>\n\n @if (showStartEllipsis()) {\n <button\n class=\"c2g-pagination__btn\"\n type=\"button\"\n [attr.aria-label]=\"'Seite 1'\"\n (click)=\"go(1)\">\n 1\n </button>\n <span class=\"c2g-pagination__ellipsis\" aria-hidden=\"true\">…</span>\n }\n\n @for (page of visiblePages(); track page) {\n <button\n class=\"c2g-pagination__btn\"\n [class.c2g-pagination__btn--active]=\"page === currentPage()\"\n type=\"button\"\n [attr.aria-label]=\"'Seite ' + page\"\n [attr.aria-current]=\"page === currentPage() ? 'page' : null\"\n (click)=\"go(page)\">\n {{ page }}\n </button>\n }\n\n @if (showEndEllipsis()) {\n <span class=\"c2g-pagination__ellipsis\" aria-hidden=\"true\">…</span>\n <button\n class=\"c2g-pagination__btn\"\n type=\"button\"\n [attr.aria-label]=\"'Seite ' + totalPages()\"\n (click)=\"go(totalPages())\">\n {{ totalPages() }}\n </button>\n }\n\n <button\n class=\"c2g-pagination__btn c2g-pagination__btn--nav\"\n type=\"button\"\n aria-label=\"Nächste Seite\"\n [disabled]=\"!hasNext()\"\n (click)=\"go(currentPage() + 1)\">\n ›\n </button>\n</nav>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n signal\n} from '@angular/core';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { C2gTableColumn, C2gSortState, C2gSortDirection } from './table.models';\n\n@Component({\n selector: 'c2g-table',\n standalone: true,\n imports: [ScrollingModule, NgClass, NgTemplateOutlet],\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableComponent<T extends Record<string, any> = Record<string, any>> {\n readonly rows = input.required<T[]>();\n readonly columns = input.required<C2gTableColumn<T>[]>();\n readonly rowHeight = input(48);\n readonly maxHeight = input('480px');\n readonly selectable = input(false);\n readonly virtualScroll = input(true);\n\n readonly sortChanged = output<C2gSortState>();\n readonly rowSelected = output<T>();\n\n readonly sortState = signal<C2gSortState>({ key: '', direction: null });\n readonly selectedRow = signal<T | null>(null);\n\n readonly sortedRows = computed(() => {\n const { key, direction } = this.sortState();\n const rows = [...this.rows()];\n if (!key || !direction) return rows;\n return rows.sort((a, b) => {\n const col = this.columns().find(c => c.key === key);\n const av = col?.valueGetter ? col.valueGetter(a) : a[key];\n const bv = col?.valueGetter ? col.valueGetter(b) : b[key];\n const cmp = av < bv ? -1 : av > bv ? 1 : 0;\n return direction === 'asc' ? cmp : -cmp;\n });\n });\n\n getCellValue(row: T, col: C2gTableColumn<T>): string | number {\n return col.valueGetter ? col.valueGetter(row) : row[col.key] ?? '';\n }\n\n sort(key: string): void {\n const current = this.sortState();\n const direction: C2gSortDirection =\n current.key === key\n ? current.direction === 'asc' ? 'desc' : current.direction === 'desc' ? null : 'asc'\n : 'asc';\n const next: C2gSortState = { key, direction };\n this.sortState.set(next);\n this.sortChanged.emit(next);\n }\n\n select(row: T): void {\n if (!this.selectable()) return;\n this.selectedRow.set(row);\n this.rowSelected.emit(row);\n }\n\n isSelected(row: T): boolean {\n return this.selectedRow() === row;\n }\n\n sortIcon(key: string): string {\n const s = this.sortState();\n if (s.key !== key || !s.direction) return '↕';\n return s.direction === 'asc' ? '↑' : '↓';\n }\n}\n","<div class=\"c2g-table-wrapper\" [style.maxHeight]=\"maxHeight()\">\n @if (virtualScroll()) {\n <cdk-virtual-scroll-viewport [itemSize]=\"rowHeight()\" class=\"c2g-table-viewport\" [style.height]=\"maxHeight()\">\n <table class=\"c2g-table\" role=\"grid\">\n <thead class=\"c2g-table__head\">\n <tr>\n @for (col of columns(); track col.key) {\n <th\n class=\"c2g-table__th\"\n [class.c2g-table__th--sortable]=\"col.sortable\"\n [class.c2g-table__th--sorted]=\"sortState().key === col.key\"\n (click)=\"col.sortable && sort(col.key)\"\n [attr.aria-sort]=\"col.sortable ? (sortState().key === col.key ? (sortState().direction ?? 'none') : 'none') : null\"\n >\n <span class=\"c2g-table__th-label\">{{ col.label }}</span>\n @if (col.sortable) {\n <span class=\"c2g-table__sort-icon\" aria-hidden=\"true\">{{ sortIcon(col.key) }}</span>\n }\n </th>\n }\n </tr>\n </thead>\n <tbody>\n <tr\n *cdkVirtualFor=\"let row of sortedRows()\"\n class=\"c2g-table__row\"\n [class.c2g-table__row--selectable]=\"selectable()\"\n [class.c2g-table__row--selected]=\"selectedRow() === row\"\n (click)=\"select(row)\"\n [attr.tabindex]=\"selectable() ? 0 : null\"\n (keydown.enter)=\"selectable() && select(row)\"\n >\n @for (col of columns(); track col.key) {\n <td class=\"c2g-table__td\">{{ getCellValue(row, col) }}</td>\n }\n </tr>\n </tbody>\n </table>\n </cdk-virtual-scroll-viewport>\n } @else {\n <table class=\"c2g-table\" role=\"grid\">\n <thead class=\"c2g-table__head\">\n <tr>\n @for (col of columns(); track col.key) {\n <th\n class=\"c2g-table__th\"\n [class.c2g-table__th--sortable]=\"col.sortable\"\n [class.c2g-table__th--sorted]=\"sortState().key === col.key\"\n (click)=\"col.sortable && sort(col.key)\"\n [attr.aria-sort]=\"col.sortable ? (sortState().key === col.key ? (sortState().direction ?? 'none') : 'none') : null\"\n >\n <span class=\"c2g-table__th-label\">{{ col.label }}</span>\n @if (col.sortable) {\n <span class=\"c2g-table__sort-icon\" aria-hidden=\"true\">{{ sortIcon(col.key) }}</span>\n }\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of sortedRows(); track $index) {\n <tr\n class=\"c2g-table__row\"\n [class.c2g-table__row--selectable]=\"selectable()\"\n [class.c2g-table__row--selected]=\"selectedRow() === row\"\n (click)=\"select(row)\"\n [attr.tabindex]=\"selectable() ? 0 : null\"\n (keydown.enter)=\"selectable() && select(row)\"\n >\n @for (col of columns(); track col.key) {\n <td class=\"c2g-table__td\">{{ getCellValue(row, col) }}</td>\n }\n </tr>\n }\n </tbody>\n </table>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n output\n} from '@angular/core';\nimport { C2gTab } from './tabs.models';\n\n@Component({\n selector: 'c2g-tabs',\n standalone: true,\n imports: [],\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TabsComponent {\n readonly tabs = input.required<C2gTab[]>();\n readonly activeKey = model<string>('');\n\n readonly tabChanged = output<C2gTab>();\n\n readonly activeTab = computed(() =>\n this.tabs().find(t => t.key === this.activeKey()) ?? this.tabs()[0]\n );\n\n select(tab: C2gTab): void {\n if (tab.disabled) return;\n this.activeKey.set(tab.key);\n this.tabChanged.emit(tab);\n }\n\n isActive(tab: C2gTab): boolean {\n const key = this.activeKey();\n return key ? tab.key === key : tab === this.tabs()[0];\n }\n}\n","<div class=\"c2g-tabs\" role=\"tablist\" [attr.aria-label]=\"'Tabs'\">\n <div class=\"c2g-tabs__nav\">\n @for (tab of tabs(); track tab.key) {\n <button\n class=\"c2g-tabs__tab\"\n role=\"tab\"\n [class.c2g-tabs__tab--active]=\"isActive(tab)\"\n [class.c2g-tabs__tab--disabled]=\"tab.disabled\"\n [attr.aria-selected]=\"isActive(tab)\"\n [attr.aria-disabled]=\"tab.disabled || null\"\n [disabled]=\"tab.disabled || null\"\n (click)=\"select(tab)\"\n >\n @if (tab.icon) {\n <span class=\"c2g-tabs__tab-icon\" aria-hidden=\"true\">{{ tab.icon }}</span>\n }\n <span class=\"c2g-tabs__tab-label\">{{ tab.label }}</span>\n @if (tab.badge !== undefined) {\n <span class=\"c2g-tabs__tab-badge\">{{ tab.badge }}</span>\n }\n </button>\n }\n </div>\n\n <div class=\"c2g-tabs__indicator-bar\" aria-hidden=\"true\"></div>\n\n <div class=\"c2g-tabs__panel\" role=\"tabpanel\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { C2gBreadcrumbItem } from './breadcrumb.models';\n\n@Component({\n selector: 'c2g-breadcrumb',\n standalone: true,\n imports: [],\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BreadcrumbComponent {\n readonly items = input.required<C2gBreadcrumbItem[]>();\n readonly separator = input('›');\n\n readonly itemClicked = output<C2gBreadcrumbItem>();\n\n navigate(event: Event, item: C2gBreadcrumbItem): void {\n if (!item.href) {\n event.preventDefault();\n this.itemClicked.emit(item);\n }\n }\n}\n","<nav class=\"c2g-breadcrumb\" aria-label=\"Breadcrumb\">\n <ol class=\"c2g-breadcrumb__list\">\n @for (item of items(); track item.label; let last = $last) {\n <li class=\"c2g-breadcrumb__item\">\n @if (!last) {\n <a\n class=\"c2g-breadcrumb__link\"\n [href]=\"item.href || '#'\"\n (click)=\"navigate($event, item)\"\n >\n @if (item.icon) {\n <span class=\"c2g-breadcrumb__icon\" aria-hidden=\"true\">{{ item.icon }}</span>\n }\n {{ item.label }}\n </a>\n <span class=\"c2g-breadcrumb__separator\" aria-hidden=\"true\">{{ separator() }}</span>\n } @else {\n <span class=\"c2g-breadcrumb__current\" aria-current=\"page\">\n @if (item.icon) {\n <span class=\"c2g-breadcrumb__icon\" aria-hidden=\"true\">{{ item.icon }}</span>\n }\n {{ item.label }}\n </span>\n }\n </li>\n }\n </ol>\n</nav>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n output\n} from '@angular/core';\nimport { C2gStep, C2gStepState } from './stepper.models';\n\n@Component({\n selector: 'c2g-stepper',\n standalone: true,\n imports: [],\n templateUrl: './stepper.component.html',\n styleUrls: ['./stepper.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class StepperComponent {\n readonly steps = input.required<C2gStep[]>();\n readonly activeIndex = model(0);\n readonly completedIndices = input<number[]>([]);\n readonly errorIndices = input<number[]>([]);\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n readonly stepChanged = output<{ step: C2gStep; index: number }>();\n\n readonly canGoNext = computed(() => this.activeIndex() < this.steps().length - 1);\n readonly canGoPrev = computed(() => this.activeIndex() > 0);\n\n getState(index: number): C2gStepState {\n if (this.errorIndices().includes(index)) return 'error';\n if (this.completedIndices().includes(index)) return 'completed';\n if (index === this.activeIndex()) return 'active';\n return 'pending';\n }\n\n goTo(index: number): void {\n if (index < 0 || index >= this.steps().length) return;\n this.activeIndex.set(index);\n this.stepChanged.emit({ step: this.steps()[index], index });\n }\n\n next(): void { this.goTo(this.activeIndex() + 1); }\n prev(): void { this.goTo(this.activeIndex() - 1); }\n}\n","<div\n class=\"c2g-stepper\"\n [class.c2g-stepper--horizontal]=\"orientation() === 'horizontal'\"\n [class.c2g-stepper--vertical]=\"orientation() === 'vertical'\"\n role=\"list\"\n [attr.aria-label]=\"'Steps'\"\n>\n @for (step of steps(); track step.label; let i = $index; let last = $last) {\n <div\n class=\"c2g-stepper__step\"\n [class.c2g-stepper__step--active]=\"getState(i) === 'active'\"\n [class.c2g-stepper__step--completed]=\"getState(i) === 'completed'\"\n [class.c2g-stepper__step--error]=\"getState(i) === 'error'\"\n [class.c2g-stepper__step--pending]=\"getState(i) === 'pending'\"\n role=\"listitem\"\n >\n <div class=\"c2g-stepper__header\">\n <button\n class=\"c2g-stepper__marker\"\n type=\"button\"\n [attr.aria-label]=\"'Step ' + (i + 1) + ': ' + step.label\"\n [attr.aria-current]=\"getState(i) === 'active' ? 'step' : null\"\n (click)=\"goTo(i)\"\n >\n @if (getState(i) === 'completed') {\n <span class=\"c2g-stepper__check\" aria-hidden=\"true\">✓</span>\n } @else if (getState(i) === 'error') {\n <span class=\"c2g-stepper__error-icon\" aria-hidden=\"true\">!</span>\n } @else {\n <span class=\"c2g-stepper__index\" aria-hidden=\"true\">{{ i + 1 }}</span>\n }\n </button>\n\n <div class=\"c2g-stepper__label-group\">\n <span class=\"c2g-stepper__label\">{{ step.label }}</span>\n @if (step.description) {\n <span class=\"c2g-stepper__description\">{{ step.description }}</span>\n }\n </div>\n </div>\n\n @if (!last) {\n <div class=\"c2g-stepper__connector\" aria-hidden=\"true\">\n <div\n class=\"c2g-stepper__connector-line\"\n [class.c2g-stepper__connector-line--filled]=\"getState(i) === 'completed'\"\n ></div>\n </div>\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n computed,\n effect,\n input,\n signal,\n} from '@angular/core';\nimport { C2gKpiCardData } from './kpi-card.models';\n\n@Component({\n selector: 'c2g-kpi-card',\n standalone: true,\n imports: [],\n templateUrl: './kpi-card.component.html',\n styleUrls: ['./kpi-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClass()',\n '(mousemove)': 'onMouseMove($event)',\n '(mouseleave)': 'onMouseLeave()',\n }\n})\nexport class C2gKpiCardComponent implements OnDestroy {\n readonly data = input.required<C2gKpiCardData>();\n\n readonly color = computed(() => this.data().color ?? 'neutral');\n readonly hostClass = computed(() => `c2g-kpi-card c2g-kpi-card--${this.color()}`);\n\n // Count-up animation\n readonly displayValue = signal('');\n private countUpRaf = 0;\n\n constructor(private el: ElementRef<HTMLElement>) {\n effect(() => {\n const raw = this.data().value;\n this.startCountUp(raw);\n });\n }\n\n private startCountUp(raw: string | number): void {\n cancelAnimationFrame(this.countUpRaf);\n const target = parseFloat(String(raw).replace(/[^0-9.-]/g, ''));\n if (isNaN(target)) { this.displayValue.set(String(raw)); return; }\n\n const isFloat = String(raw).includes('.');\n const decimals = isFloat ? (String(raw).split('.')[1]?.length ?? 1) : 0;\n const suffix = String(raw).replace(/^[0-9.,\\s-]+/, '');\n const prefix = String(raw).replace(/[0-9.,\\s]+.*$/, '');\n const duration = 900;\n const start = performance.now();\n\n const tick = (now: number) => {\n const progress = Math.min((now - start) / duration, 1);\n const ease = 1 - Math.pow(1 - progress, 3); // ease-out cubic\n const current = ease * target;\n const formatted = decimals > 0\n ? current.toFixed(decimals)\n : Math.round(current).toLocaleString('de-DE');\n this.displayValue.set(`${prefix}${formatted}${suffix}`);\n if (progress < 1) this.countUpRaf = requestAnimationFrame(tick);\n };\n this.countUpRaf = requestAnimationFrame(tick);\n }\n\n // Sparkline SVG path\n readonly sparklinePath = computed(() => {\n const pts = this.data().sparkline;\n if (!pts || pts.length < 2) return null;\n const w = 80, h = 28;\n const min = Math.min(...pts);\n const max = Math.max(...pts);\n const range = max - min || 1;\n const coords = pts.map((v, i) => ({\n x: (i / (pts.length - 1)) * w,\n y: h - ((v - min) / range) * h,\n }));\n // Smooth bezier\n const d = coords.reduce((acc, p, i) => {\n if (i === 0) return `M ${p.x} ${p.y}`;\n const prev = coords[i - 1];\n const cpx = (prev.x + p.x) / 2;\n return `${acc} C ${cpx} ${prev.y} ${cpx} ${p.y} ${p.x} ${p.y}`;\n }, '');\n // Area fill path\n const area = `${d} L ${coords[coords.length-1].x} ${h} L 0 ${h} Z`;\n return { line: d, area, lastX: coords[coords.length-1].x, lastY: coords[coords.length-1].y };\n });\n\n // 3D tilt\n readonly tilt = signal({ x: 0, y: 0 });\n\n onMouseMove(e: MouseEvent): void {\n const rect = this.el.nativeElement.getBoundingClientRect();\n const cx = rect.left + rect.width / 2;\n const cy = rect.top + rect.height / 2;\n const maxTilt = 6;\n this.tilt.set({\n x: ((e.clientY - cy) / (rect.height / 2)) * -maxTilt,\n y: ((e.clientX - cx) / (rect.width / 2)) * maxTilt,\n });\n }\n\n onMouseLeave(): void {\n this.tilt.set({ x: 0, y: 0 });\n }\n\n readonly tiltStyle = computed(() => {\n const { x, y } = this.tilt();\n return `perspective(600px) rotateX(${x}deg) rotateY(${y}deg) translateZ(0)`;\n });\n\n readonly trendArrow = computed(() => {\n const t = this.data().trend;\n if (t === 'up') return '↑';\n if (t === 'down') return '↓';\n return '→';\n });\n\n ngOnDestroy(): void {\n cancelAnimationFrame(this.countUpRaf);\n }\n}\n","<div class=\"c2g-kpi-card__inner\" [style.transform]=\"tiltStyle()\">\n\n <!-- Glassmorphism icon orb -->\n @if (data().icon) {\n <div class=\"c2g-kpi-card__orb\" aria-hidden=\"true\">\n <span class=\"c2g-kpi-card__orb-icon\">{{ data().icon }}</span>\n </div>\n }\n\n <!-- Decorative blob -->\n <div class=\"c2g-kpi-card__blob\" aria-hidden=\"true\"></div>\n\n <!-- Label -->\n <p class=\"c2g-kpi-card__label\">{{ data().label }}</p>\n\n <!-- Main value -->\n <div class=\"c2g-kpi-card__value-row\">\n <span class=\"c2g-kpi-card__value\">{{ displayValue() }}</span>\n @if (data().unit) {\n <span class=\"c2g-kpi-card__unit\">{{ data().unit }}</span>\n }\n </div>\n\n <!-- Sparkline -->\n @if (sparklinePath(); as sp) {\n <div class=\"c2g-kpi-card__sparkline\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 80 28\" preserveAspectRatio=\"none\" width=\"100%\" height=\"28\">\n <defs>\n <linearGradient [id]=\"'spark-grad-' + color()\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" class=\"c2g-kpi-card__spark-stop-top\" />\n <stop offset=\"100%\" class=\"c2g-kpi-card__spark-stop-bottom\" />\n </linearGradient>\n </defs>\n <path class=\"c2g-kpi-card__spark-area\"\n [attr.d]=\"sp.area\"\n [attr.fill]=\"'url(#spark-grad-' + color() + ')'\" />\n <path class=\"c2g-kpi-card__spark-line\" [attr.d]=\"sp.line\" fill=\"none\" />\n <!-- Dot at latest value -->\n <circle class=\"c2g-kpi-card__spark-dot\"\n [attr.cx]=\"sp.lastX\" [attr.cy]=\"sp.lastY\" r=\"2.5\" />\n </svg>\n </div>\n }\n\n <!-- Trend footer -->\n @if (data().trend || data().change !== undefined) {\n <div class=\"c2g-kpi-card__footer\"\n [class.c2g-kpi-card__footer--up]=\"data().trend === 'up'\"\n [class.c2g-kpi-card__footer--down]=\"data().trend === 'down'\">\n <span class=\"c2g-kpi-card__arrow\">{{ trendArrow() }}</span>\n @if (data().change !== undefined) {\n <span class=\"c2g-kpi-card__change\">{{ data().change }}</span>\n }\n @if (data().changeLabel) {\n <span class=\"c2g-kpi-card__change-label\">{{ data().changeLabel }}</span>\n }\n </div>\n }\n\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n output,\n signal\n} from '@angular/core';\nimport { C2gFilterGroup, C2gFilterState } from './filter-bar.models';\n\n@Component({\n selector: 'c2g-filter-bar',\n standalone: true,\n imports: [],\n templateUrl: './filter-bar.component.html',\n styleUrls: ['./filter-bar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FilterBarComponent {\n readonly groups = input.required<C2gFilterGroup[]>();\n readonly searchPlaceholder = input('Suchen...');\n readonly showSearch = input(true);\n\n readonly search = model('');\n readonly activeFilters = model<C2gFilterState>({});\n\n readonly filterChanged = output<C2gFilterState>();\n readonly searchChanged = output<string>();\n\n readonly activeCount = computed(() =>\n Object.values(this.activeFilters()).reduce((sum, v) => sum + v.length, 0)\n );\n\n readonly hasActiveFilters = computed(() => this.activeCount() > 0);\n\n isSelected(groupKey: string, optionKey: string): boolean {\n return (this.activeFilters()[groupKey] ?? []).includes(optionKey);\n }\n\n toggle(groupKey: string, optionKey: string, multiple: boolean): void {\n const current = { ...this.activeFilters() };\n const selected = current[groupKey] ?? [];\n if (multiple) {\n current[groupKey] = selected.includes(optionKey)\n ? selected.filter(k => k !== optionKey)\n : [...selected, optionKey];\n } else {\n current[groupKey] = selected.includes(optionKey) ? [] : [optionKey];\n }\n this.activeFilters.set(current);\n this.filterChanged.emit(current);\n }\n\n clearAll(): void {\n this.activeFilters.set({});\n this.search.set('');\n this.filterChanged.emit({});\n this.searchChanged.emit('');\n }\n\n onSearch(value: string): void {\n this.search.set(value);\n this.searchChanged.emit(value);\n }\n}\n","<div class=\"c2g-filter-bar\">\n @if (showSearch()) {\n <div class=\"c2g-filter-bar__search\">\n <input\n class=\"c2g-filter-bar__search-input\"\n type=\"search\"\n [placeholder]=\"searchPlaceholder()\"\n [value]=\"search()\"\n (input)=\"onSearch($any($event.target).value)\"\n aria-label=\"Suchen\"\n />\n <span class=\"c2g-filter-bar__search-icon\" aria-hidden=\"true\">🔍</span>\n </div>\n }\n\n <div class=\"c2g-filter-bar__groups\">\n @for (group of groups(); track group.key) {\n <div class=\"c2g-filter-bar__group\">\n @if (group.label) {\n <span class=\"c2g-filter-bar__group-label\">{{ group.label }}</span>\n }\n <div class=\"c2g-filter-bar__options\" role=\"group\" [attr.aria-label]=\"group.label\">\n @for (option of group.options; track option.key) {\n <button\n class=\"c2g-filter-bar__option\"\n type=\"button\"\n [class.c2g-filter-bar__option--active]=\"isSelected(group.key, option.key)\"\n [attr.aria-pressed]=\"isSelected(group.key, option.key)\"\n (click)=\"toggle(group.key, option.key, group.multiple ?? true)\"\n >\n @if (option.icon) {\n <span class=\"c2g-filter-bar__option-icon\" aria-hidden=\"true\">{{ option.icon }}</span>\n }\n {{ option.label }}\n @if (option.count !== undefined) {\n <span class=\"c2g-filter-bar__option-count\">{{ option.count }}</span>\n }\n </button>\n }\n </div>\n </div>\n }\n </div>\n\n @if (hasActiveFilters()) {\n <button\n class=\"c2g-filter-bar__clear\"\n type=\"button\"\n (click)=\"clearAll()\"\n >\n Filter zurücksetzen\n <span class=\"c2g-filter-bar__clear-badge\">{{ activeCount() }}</span>\n </button>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'c2g-skeleton-table',\n standalone: true,\n imports: [],\n templateUrl: './skeleton-table.component.html',\n styleUrls: ['./skeleton-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SkeletonTableComponent {\n readonly rows = input(5);\n readonly columns = input(4);\n readonly showHeader = input(true);\n\n readonly rowIndices = Array.from({ length: 10 }).map((_, i) => i);\n readonly colIndices = Array.from({ length: 10 }).map((_, i) => i);\n}\n","<div class=\"c2g-skeleton-table\">\n <table class=\"c2g-skeleton-table__table\" aria-busy=\"true\" aria-label=\"Wird geladen...\">\n @if (showHeader()) {\n <thead class=\"c2g-skeleton-table__head\">\n <tr>\n @for (c of colIndices.slice(0, columns()); track c) {\n <th class=\"c2g-skeleton-table__th\">\n <span class=\"c2g-skeleton c2g-skeleton--header\"></span>\n </th>\n }\n </tr>\n </thead>\n }\n <tbody>\n @for (r of rowIndices.slice(0, rows()); track r) {\n <tr class=\"c2g-skeleton-table__row\">\n @for (c of colIndices.slice(0, columns()); track c; let first = $first) {\n <td class=\"c2g-skeleton-table__td\">\n <span\n class=\"c2g-skeleton\"\n [class.c2g-skeleton--wide]=\"first\"\n ></span>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i4"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { input, output, signal, computed, ChangeDetectionStrategy, Component, effect, HostListener } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/material/icon';
|
|
4
4
|
import { MatIconModule } from '@angular/material/icon';
|
|
5
|
-
import { AvatarComponent, BadgeComponent, ButtonComponent, RadioGroupComponent, CheckboxComponent, SelectComponent, InputComponent, TextareaComponent } from '@
|
|
5
|
+
import { AvatarComponent, BadgeComponent, ButtonComponent, RadioGroupComponent, CheckboxComponent, SelectComponent, InputComponent, TextareaComponent } from '@camp2gether/c2g-ui';
|
|
6
6
|
import * as i1$2 from '@angular/common';
|
|
7
7
|
import { CommonModule } from '@angular/common';
|
|
8
8
|
import * as i1$1 from '@angular/forms';
|