@ah-oh/ao-workspaces-design-system 0.0.56 → 0.0.58

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ah-oh-ao-workspaces-design-system.mjs","sources":["../../../../libs/design-system/src/lib/design-system.ts","../../../../libs/design-system/src/lib/auth/auth.service.ts","../../../../libs/design-system/src/lib/auth/auth.interceptor.ts","../../../../libs/design-system/src/lib/auth/auth.providers.ts","../../../../libs/design-system/src/lib/icon/icon.component.ts","../../../../libs/design-system/src/lib/button/button.component.ts","../../../../libs/design-system/src/lib/icon-button/icon-button.component.ts","../../../../libs/design-system/src/lib/input/input.component.ts","../../../../libs/design-system/src/lib/input/input.component.html","../../../../libs/design-system/src/lib/select/select.component.ts","../../../../libs/design-system/src/lib/select/select.component.html","../../../../libs/design-system/src/lib/table/components/table-checkbox.component.ts","../../../../libs/design-system/src/lib/table/components/table-input.component.ts","../../../../libs/design-system/src/lib/table/components/table-select.component.ts","../../../../libs/design-system/src/lib/date-input/date-picker/date-picker.component.ts","../../../../libs/design-system/src/lib/date-input/date-picker/date-picker.component.html","../../../../libs/design-system/src/lib/table/components/table-date-picker.component.ts","../../../../libs/design-system/src/lib/table/components/table-filter.component.ts","../../../../libs/design-system/src/lib/table/components/table-pagination.component.ts","../../../../libs/design-system/src/lib/table/components/table-row-actions.component.ts","../../../../libs/design-system/src/lib/table/directives/table-cell-def.directive.ts","../../../../libs/design-system/src/lib/table/table.component.ts","../../../../libs/design-system/src/lib/table/table.component.html","../../../../libs/design-system/src/lib/markdown-editor/markdown-editor.types.ts","../../../../libs/design-system/src/lib/markdown-editor/markdown-editor.component.ts","../../../../libs/design-system/src/lib/markdown-editor/markdown-editor.component.html","../../../../libs/design-system/src/lib/slide-toggle/slide-toggle.component.ts","../../../../libs/design-system/src/lib/slide-toggle/slide-toggle.component.html","../../../../libs/design-system/src/lib/editable-text/editable-text.component.ts","../../../../libs/design-system/src/lib/editable-text/editable-text.component.html","../../../../libs/design-system/src/lib/dialog/dialog-ref.ts","../../../../libs/design-system/src/lib/dialog/dialog.component.ts","../../../../libs/design-system/src/lib/dialog/dialog.component.html","../../../../libs/design-system/src/lib/dialog/dialog.types.ts","../../../../libs/design-system/src/lib/dialog/dialog.service.ts","../../../../libs/design-system/src/lib/chips-input/chips-input.component.ts","../../../../libs/design-system/src/lib/chips-input/chips-input.component.html","../../../../libs/design-system/src/lib/multiselect/multiselect.component.ts","../../../../libs/design-system/src/lib/multiselect/multiselect.component.html","../../../../libs/design-system/src/lib/checkbox/checkbox.component.ts","../../../../libs/design-system/src/lib/checkbox/checkbox.component.html","../../../../libs/design-system/src/lib/tabs/tab-panel.component.ts","../../../../libs/design-system/src/lib/tabs/tabs.component.ts","../../../../libs/design-system/src/lib/tabs/tabs.component.html","../../../../libs/design-system/src/lib/navigation/side-nav/side-nav.component.ts","../../../../libs/design-system/src/lib/navigation/side-nav/side-nav.component.html","../../../../libs/design-system/src/lib/navigation/ai-search/ai-search.component.ts","../../../../libs/design-system/src/lib/navigation/ai-search/ai-search.component.html","../../../../libs/design-system/src/lib/navigation/notification-button/notification-button.component.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/handbook-configuration.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/handbook-request-builder.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/handbook-base-service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/app/app-controller-get-health-check.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/services/app.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/handbook-entries/handbook-entry-controller-create-handbook-entry.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/handbook-entries/handbook-entry-controller-delete-handbook-entry.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/handbook-entries/handbook-entry-controller-find-all-handbook-entries.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/handbook-entries/handbook-entry-controller-find-all-handbook-entries-for-overview.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/handbook-entries/handbook-entry-controller-find-all-tags.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/handbook-entries/handbook-entry-controller-find-handbook-entry-by-id.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/handbook-entries/handbook-entry-controller-generate-handbook.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/handbook-entries/handbook-entry-controller-generate-handbook-from-text.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/handbook-entries/handbook-entry-controller-get-text-from-voice.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/handbook-entries/handbook-entry-controller-update-handbook-entry.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/services/handbook-entries.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/conversation/conversation-controller-conversation.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/conversation/conversation-controller-get-conversation-detail.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/conversation/conversation-controller-get-conversation-overview.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/conversation/conversation-controller-get-relevant-context.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/services/conversation.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/lichtbot/lichtbot-controller-get-import-adresses.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/lichtbot/lichtbot-controller-get-import-history.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/lichtbot/lichtbot-controller-join-room.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/lichtbot/lichtbot-controller-leave-room.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/lichtbot/lichtbot-controller-recive-message.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/services/lichtbot.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/presidio/presidio-controller-analyze-text.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/presidio/presidio-controller-anonymize-text.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/presidio/presidio-controller-test.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/services/presidio.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/sethub-apps/sethub-apps-controller-conversation.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/sethub-apps/sethub-apps-controller-get-relevant-context.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/sethub-apps/sethub-apps-controller-summary.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/services/sethub-apps.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/sethub-nav/sethub-nav-controller-process-nav-request.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/services/sethub-nav.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/sethub-products/sethub-products-controller-get-product-list.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/sethub-products/sethub-products-controller-get-product-search.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/services/sethub-products.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/sethub-user-action/sethub-user-action-controller-generate-action-comment.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/services/sethub-user-action.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/handbook.module.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/index.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/dialog-edit-voice-text/dialog-edit-voice-text.component.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/dialog-edit-voice-text/dialog-edit-voice-text.component.html","../../../../libs/design-system/src/lib/workspace-navbar/workspace-navbar.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/handbook-voice.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/handbook/handbook.component.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/handbook/handbook.component.html","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/dialog-delete-handbook/dialog-delete-handbook.component.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/dialog-delete-handbook/dialog-delete-handbook.component.html","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/handbook-dialog.component.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/handbook-dialog.component.html","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/stop-record-dialog/stop-record-dialog.component.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/stop-record-dialog/stop-record-dialog.component.html","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/start-record-dialog/start-record-dialog.component.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/start-record-dialog/start-record-dialog.component.html","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/nav-tools.component.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/nav-tools.component.html","../../../../libs/design-system/src/lib/navigation/top-nav/top-nav.component.ts","../../../../libs/design-system/src/lib/navigation/top-nav/top-nav.component.html","../../../../libs/design-system/src/lib/navigation/search-results-page/search-results-page.component.ts","../../../../libs/design-system/src/lib/navigation/search-results-page/search-results-page.component.html","../../../../libs/design-system/src/lib/navigation/services/robin-search.service.ts","../../../../libs/design-system/src/lib/navigation/logo-menu/logo-menu.component.ts","../../../../libs/design-system/src/lib/navigation/sub-nav-actions/sub-nav-actions.service.ts","../../../../libs/design-system/src/lib/navigation/sub-top-nav/sub-top-nav.component.ts","../../../../libs/design-system/src/lib/navigation/sub-top-nav/sub-top-nav.component.html","../../../../libs/design-system/src/lib/menu/components/menu/menu.component.ts","../../../../libs/design-system/src/lib/menu/components/menu/menu.component.html","../../../../libs/design-system/src/lib/menu/components/menu-item/menu-item.component.ts","../../../../libs/design-system/src/lib/menu/components/menu-item/menu-item.component.html","../../../../libs/design-system/src/lib/tooltip/components/tooltip-overlay.component.ts","../../../../libs/design-system/src/lib/tooltip/components/tooltip-overlay.component.html","../../../../libs/design-system/src/lib/tooltip/directive/tooltip.directive.ts","../../../../libs/design-system/src/lib/date-input/date-input.component.ts","../../../../libs/design-system/src/lib/date-input/date-input.component.html","../../../../libs/design-system/src/lib/workspace-navbar/chat/chat-message/chat-message.component.ts","../../../../libs/design-system/src/lib/workspace-navbar/chat/chat-message/chat-message.component.html","../../../../libs/design-system/src/lib/workspace-navbar/chat/robin-chat.service.ts","../../../../libs/design-system/src/lib/workspace-navbar/chat/robin-chat-action-dispatcher.service.ts","../../../../libs/design-system/src/lib/workspace-navbar/chat/chat.component.ts","../../../../libs/design-system/src/lib/workspace-navbar/chat/chat.component.html","../../../../libs/design-system/src/lib/workspace-navbar/workspace-navbar.component.ts","../../../../libs/design-system/src/lib/workspace-navbar/workspace-navbar.component.html","../../../../libs/design-system/src/lib/workspace-navbar/chat/a2ui/ao-choice-picker.component.ts","../../../../libs/design-system/src/lib/workspace-navbar/chat/a2ui/ao-catalog.ts","../../../../libs/design-system/src/lib/workspace-navbar/chat/a2ui/a2ui-chat.providers.ts","../../../../libs/design-system/src/index.ts","../../../../libs/design-system/src/ah-oh-ao-workspaces-design-system.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-design-system',\n imports: [],\n template: `\n <p>\n design-system works!\n </p>\n `,\n styles: ``,\n})\nexport class DesignSystem {\n\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable, signal } from '@angular/core';\n\nconst URL_TOKEN_PARAM = 'jwtKey';\nconst COOKIE_TOKEN_KEY = 'jwt';\n\n/**\n * Holds the Workspaces JWT for the current browser session.\n *\n * Token resolution order:\n * 1. `?jwtKey=…` query param (set by the login redirect) — captured on\n * construction and removed from the URL so it does not stay in browser\n * history.\n * 2. A readable `jwt` cookie — only seen when the cookie is *not* httpOnly.\n * Production cookies are httpOnly, so this branch typically returns\n * undefined; the backend reads the cookie directly in that case. The\n * interceptor still sets `withCredentials: true` so the browser\n * attaches the httpOnly cookie automatically.\n */\n@Injectable({ providedIn: 'root' })\nexport class AuthService {\n private readonly document = inject(DOCUMENT);\n private readonly _token = signal<string | undefined>(undefined);\n\n readonly token = this._token.asReadonly();\n\n constructor() {\n const fromUrl = this.readTokenFromUrl();\n const fromCookie = fromUrl ? undefined : this.readTokenFromCookie();\n const initial = fromUrl ?? fromCookie;\n if (initial) {\n this._token.set(initial);\n }\n }\n\n setToken(token: string | undefined): void {\n this._token.set(token);\n }\n\n clear(): void {\n this._token.set(undefined);\n }\n\n private readTokenFromUrl(): string | undefined {\n const win = this.document.defaultView;\n if (!win) return undefined;\n const url = new URL(win.location.href);\n const token = url.searchParams.get(URL_TOKEN_PARAM) ?? undefined;\n if (token) {\n url.searchParams.delete(URL_TOKEN_PARAM);\n win.history.replaceState({}, '', url.toString());\n }\n return token;\n }\n\n private readTokenFromCookie(): string | undefined {\n const raw = this.document.cookie;\n if (!raw) return undefined;\n for (const pair of raw.split(';')) {\n const [name, ...rest] = pair.trim().split('=');\n if (name === COOKIE_TOKEN_KEY) {\n return decodeURIComponent(rest.join('='));\n }\n }\n return undefined;\n }\n}\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { AuthService } from './auth.service';\n\n/**\n * Attaches the Workspaces JWT to outgoing same-origin requests:\n * - sets `Authorization: Bearer <token>` when an in-memory token is known\n * - sets `withCredentials: true` so the browser sends the httpOnly `jwt`\n * cookie alongside (the backend prefers the cookie when both are present)\n *\n * The interceptor is intentionally permissive: it does not validate the URL.\n * If you need to scope it to specific hosts, branch on `req.url`.\n */\nexport const authInterceptor: HttpInterceptorFn = (req, next) => {\n const auth = inject(AuthService);\n const token = auth.token();\n const headers = token ? req.headers.set('Authorization', `Bearer ${token}`) : req.headers;\n return next(req.clone({ headers, withCredentials: true }));\n};\n","import { withInterceptors } from '@angular/common/http';\nimport { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { authInterceptor } from './auth.interceptor';\n\n/**\n * Returns the HttpClient feature that wires {@link authInterceptor} into\n * every outgoing request. Pass it to `provideHttpClient(withFetch(),\n * withAuthInterceptor())` in the app config.\n */\nexport const withAuthInterceptor = () => withInterceptors([authInterceptor]);\n\n/**\n * Convenience provider for apps that want auth wired up with one call.\n * Currently only ensures the `AuthService` is eagerly resolvable; the\n * interceptor must still be added via {@link withAuthInterceptor} on\n * `provideHttpClient`.\n */\nexport function provideAuth(): EnvironmentProviders {\n return makeEnvironmentProviders([]);\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NgIcon } from '@ng-icons/core';\n\nexport type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n@Component({\n selector: 'ao-icon',\n imports: [NgIcon],\n template: `<ng-icon [svg]=\"svg()\" />`,\n styleUrl: './icon.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ao-icon',\n '[class.ao-icon--xs]': 'size() === \"xs\"',\n '[class.ao-icon--sm]': 'size() === \"sm\"',\n '[class.ao-icon--md]': 'size() === \"md\"',\n '[class.ao-icon--lg]': 'size() === \"lg\"',\n '[class.ao-icon--xl]': 'size() === \"xl\"',\n },\n})\nexport class IconComponent {\n readonly svg = input.required<string>();\n readonly size = input<IconSize>('md');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'dark' | 'outline' | 'ghost';\n\n@Component({\n selector: 'button[ao-button], a[ao-button]',\n imports: [IconComponent],\n template: `\n @if (icon()) {\n <ao-icon [svg]=\"icon()!\" size=\"sm\" />\n }\n <ng-content />\n @if (iconTrailing()) {\n <ao-icon [svg]=\"iconTrailing()!\" size=\"sm\" />\n }\n `,\n styleUrl: './button.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'btn',\n '[class.btn--primary]': 'variant() === \"primary\"',\n '[class.btn--secondary]': 'variant() === \"secondary\"',\n '[class.btn--dark]': 'variant() === \"dark\"',\n '[class.btn--outline]': 'variant() === \"outline\"',\n '[class.btn--ghost]': 'variant() === \"ghost\"',\n },\n})\nexport class ButtonComponent {\n readonly variant = input<ButtonVariant>('primary');\n readonly icon = input<string>();\n readonly iconTrailing = input<string>();\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { IconComponent, IconSize } from '../icon/icon.component';\n\nexport type IconButtonSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'button[ao-icon-button], a[ao-icon-button]',\n imports: [IconComponent],\n template: `\n @if (icon()) {\n <ao-icon class=\"ao-icon-button__icon\" [svg]=\"icon()\" [size]=\"actualIconSize()\" />\n }\n `,\n styleUrl: './icon-button.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-icon-btn',\n '[class.ao-icon-button--sm]': 'size() === \"sm\"',\n '[class.ao-icon-button--md]': 'size() === \"md\"',\n '[class.ao-icon-button--lg]': 'size() === \"lg\"',\n },\n})\nexport class IconButtonComponent {\n static readonly ICON_SIZES = new Map<IconButtonSize, IconSize>([\n ['sm', 'xs'],\n ['md', 'sm'],\n ['lg', 'md'],\n ]);\n\n readonly icon = input.required<string>();\n readonly size = input<IconButtonSize>('md');\n readonly iconSize = input<IconSize>();\n\n protected readonly actualIconSize = computed(\n () => this.iconSize() ?? IconButtonComponent.ICON_SIZES.get(this.size()) ?? 'sm'\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n model,\n signal,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { phosphorLockSimple, phosphorWarning } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'ao-input',\n imports: [ReactiveFormsModule, IconComponent],\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true,\n },\n ],\n host: {\n class: 'ao-input',\n '[class.ao-input--disabled]': 'disabled()',\n '[class.ao-input--readonly]': 'readonly()',\n '[class.ao-input--error]': 'error()',\n '[class.ao-input--focused]': 'focused()',\n },\n})\nexport class InputComponent implements ControlValueAccessor {\n readonly label = input<string>('');\n readonly placeholder = input<string>('Bitte ausfüllen');\n readonly optional = input<boolean>(false);\n readonly error = input<string>('');\n readonly readonly = input<boolean>(false);\n readonly disabled = model<boolean>(false);\n readonly type = input<'text' | 'email' | 'password' | 'number'>('text');\n readonly value = model<string>('');\n readonly focused = signal<boolean>(false);\n readonly hasError = computed(() => !!this.error());\n protected readonly lockIcon = phosphorLockSimple;\n protected readonly warningIcon = phosphorWarning;\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.value.set(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.value.set(target.value);\n this.onChange(target.value);\n }\n\n onFocus(): void {\n this.focused.set(true);\n }\n\n onBlur(): void {\n this.focused.set(false);\n this.onTouched();\n }\n}\n","@if (label()) {\n <label class=\"ao-input__label\">\n {{ label() }}\n @if (optional()) {\n <span class=\"ao-input__optional\">(Optional)</span>\n }\n </label>\n}\n\n<div class=\"ao-input__wrapper\">\n <input\n class=\"ao-input__field\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n\n @if (readonly() && !error()) {\n <ao-icon class=\"ao-input__icon ao-input__icon--lock\" [svg]=\"lockIcon\" />\n }\n\n @if (error()) {\n <ao-icon class=\"ao-input__icon ao-input__icon--warning\" [svg]=\"warningIcon\" />\n }\n</div>\n\n@if (error()) {\n <span class=\"ao-input__error\">{{ error() }}</span>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n model,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport {\n phosphorCaretDown,\n phosphorLockSimple,\n phosphorWarning,\n} from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../icon/icon.component';\n\nexport interface SelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'ao-select',\n imports: [ReactiveFormsModule, IconComponent],\n templateUrl: './select.component.html',\n styleUrl: './select.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true,\n },\n ],\n host: {\n class: 'ao-select',\n '[class.ao-select--disabled]': 'disabled()',\n '[class.ao-select--readonly]': 'readonly()',\n '[class.ao-select--error]': 'error()',\n '[class.ao-select--focused]': 'focused()',\n },\n})\nexport class SelectComponent implements ControlValueAccessor {\n readonly label = input<string>('');\n readonly placeholder = input<string>('Bitte auswählen');\n readonly optional = input<boolean>(false);\n readonly error = input<string>('');\n readonly readonly = input<boolean>(false);\n readonly disabled = model<boolean>(false);\n readonly options = input<SelectOption[]>([]);\n readonly value = model<string>('');\n readonly focused = signal<boolean>(false);\n readonly hasError = computed(() => !!this.error());\n protected readonly caretIcon = phosphorCaretDown;\n protected readonly lockIcon = phosphorLockSimple;\n protected readonly warningIcon = phosphorWarning;\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.value.set(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n onSelectChange(event: Event): void {\n const target = event.target as HTMLSelectElement;\n this.value.set(target.value);\n this.onChange(target.value);\n }\n\n onFocus(): void {\n this.focused.set(true);\n }\n\n onBlur(): void {\n this.focused.set(false);\n this.onTouched();\n }\n}\n","@if (label()) {\n <label class=\"ao-select__label\">\n {{ label() }}\n @if (optional()) {\n <span class=\"ao-select__optional\">(Optional)</span>\n }\n </label>\n}\n\n<div class=\"ao-select__wrapper\">\n <select\n class=\"ao-select__field\"\n [disabled]=\"disabled() || readonly()\"\n [value]=\"value()\"\n (change)=\"onSelectChange($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n >\n @if (placeholder()) {\n <option value=\"\" disabled [selected]=\"!value()\">{{ placeholder() }}</option>\n }\n @for (option of options(); track option.value) {\n <option\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n [selected]=\"option.value === value()\"\n >\n {{ option.label }}\n </option>\n }\n </select>\n\n @if (readonly() && !error()) {\n <ao-icon class=\"ao-select__icon ao-select__icon--lock\" [svg]=\"lockIcon\" />\n } @else if (error()) {\n <ao-icon class=\"ao-select__icon ao-select__icon--warning\" [svg]=\"warningIcon\" />\n } @else {\n <ao-icon class=\"ao-select__icon ao-select__icon--caret\" [svg]=\"caretIcon\" />\n }\n</div>\n\n@if (error()) {\n <span class=\"ao-select__error\">{{ error() }}</span>\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { phosphorSquare, phosphorCheckSquare, phosphorMinusSquare } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../../icon/icon.component';\n\nexport type CheckboxState = 'unchecked' | 'checked' | 'indeterminate';\n\n@Component({\n selector: 'ao-table-checkbox',\n imports: [IconComponent],\n template: `\n <button\n type=\"button\"\n class=\"ao-table-checkbox__button\"\n [attr.aria-checked]=\"state() === 'checked'\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"disabled()\"\n (click)=\"toggle($event)\"\n >\n @switch (state()) {\n @case ('checked') {\n <ao-icon [svg]=\"checkSquareIcon\" size=\"md\" />\n }\n @case ('indeterminate') {\n <ao-icon [svg]=\"minusSquareIcon\" size=\"md\" />\n }\n @default {\n <ao-icon [svg]=\"squareIcon\" size=\"md\" />\n }\n }\n </button>\n `,\n styleUrl: './table-checkbox.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-table-checkbox',\n '[class.ao-table-checkbox--disabled]': 'disabled()',\n },\n})\nexport class TableCheckboxComponent {\n readonly state = input<CheckboxState>('unchecked');\n readonly disabled = input<boolean>(false);\n readonly ariaLabel = input<string>('Select row');\n readonly stateChange = output<CheckboxState>();\n protected readonly squareIcon = phosphorSquare;\n protected readonly checkSquareIcon = phosphorCheckSquare;\n protected readonly minusSquareIcon = phosphorMinusSquare;\n\n toggle(event: MouseEvent): void {\n event.stopPropagation();\n if (this.disabled()) return;\n const newState: CheckboxState = this.state() === 'checked' ? 'unchecked' : 'checked';\n this.stateChange.emit(newState);\n }\n}\n","import { ChangeDetectionStrategy, Component, DestroyRef, inject, input, OnInit, output } from '@angular/core';\nimport { debounceTime, Subject } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'ao-table-input',\n template: `\n <input\n class=\"ao-table-input__field\"\n type=\"text\"\n [placeholder]=\"placeholder()\"\n [attr.size]=\"placeholder().length || null\"\n (input)=\"onInput($event)\"\n />\n `,\n styleUrl: './table-input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-table-input',\n },\n})\nexport class TableInputComponent implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly input$ = new Subject<string>();\n readonly placeholder = input<string>('');\n readonly value = input<string>('');\n readonly valueChange = output<string>();\n\n ngOnInit(): void {\n this.input$\n .pipe(debounceTime(300), takeUntilDestroyed(this.destroyRef))\n .subscribe(value => this.valueChange.emit(value));\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.input$.next(target.value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { phosphorCaretDown } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../../icon/icon.component';\nimport { SelectOption } from '../../select/select.component';\n\n@Component({\n selector: 'ao-table-select',\n imports: [IconComponent],\n template: `\n <button\n type=\"button\"\n class=\"ao-table-select__trigger\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"listbox\"\n (click)=\"toggleDropdown($event)\"\n >\n <span class=\"ao-table-select__value\" [class.ao-table-select__value--placeholder]=\"!value()\">{{\n displayValue()\n }}</span>\n <ao-icon [svg]=\"caretDownIcon\" size=\"sm\" />\n </button>\n @if (isOpen()) {\n <div\n class=\"ao-table-select__dropdown\"\n role=\"listbox\"\n [style.top.px]=\"dropdownTop()\"\n [style.left.px]=\"dropdownLeft()\"\n [style.width.px]=\"dropdownWidth()\"\n >\n @if (placeholder()) {\n <button\n type=\"button\"\n class=\"ao-table-select__option\"\n [class.ao-table-select__option--selected]=\"!value()\"\n role=\"option\"\n (click)=\"selectOption('')\"\n >\n {{ placeholder() }}\n </button>\n }\n @for (option of options(); track option.value) {\n <button\n type=\"button\"\n class=\"ao-table-select__option\"\n [class.ao-table-select__option--selected]=\"option.value === value()\"\n role=\"option\"\n (click)=\"selectOption(option.value)\"\n >\n {{ option.label }}\n </button>\n }\n </div>\n }\n `,\n styleUrl: './table-select.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-table-select',\n '[class.ao-table-select--open]': 'isOpen()',\n },\n})\nexport class TableSelectComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly options = input.required<SelectOption[]>();\n readonly placeholder = input<string>('Alle');\n readonly value = input<string>('');\n readonly valueChange = output<string>();\n readonly isOpen = signal<boolean>(false);\n readonly dropdownTop = signal(0);\n readonly dropdownLeft = signal(0);\n readonly dropdownWidth = signal(0);\n protected readonly caretDownIcon = phosphorCaretDown;\n private readonly DROPDOWN_MAX_HEIGHT = 200;\n private readonly DROPDOWN_GAP = 4;\n private readonly VIEWPORT_OFFSET = 8;\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.elementRef.nativeElement.contains(event.target as Node)) {\n this.isOpen.set(false);\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscapeKey(): void {\n this.isOpen.set(false);\n }\n\n @HostListener('window:resize')\n @HostListener('window:scroll')\n onViewportChange(): void {\n this.isOpen.set(false);\n }\n\n displayValue(): string {\n const currentValue = this.value();\n if (!currentValue) {\n return this.placeholder();\n }\n const option = this.options().find(o => o.value === currentValue);\n return option?.label ?? currentValue;\n }\n\n toggleDropdown(event: MouseEvent): void {\n event.stopPropagation();\n const willOpen = !this.isOpen();\n if (willOpen) {\n this.calculateDropdownPosition();\n }\n this.isOpen.set(willOpen);\n }\n\n private calculateDropdownPosition(): void {\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n const spaceBelow = viewportHeight - rect.bottom;\n const openTop = spaceBelow < this.DROPDOWN_MAX_HEIGHT && rect.top > spaceBelow;\n const maxLeft = Math.max(\n this.VIEWPORT_OFFSET,\n viewportWidth - rect.width - this.VIEWPORT_OFFSET\n );\n this.dropdownTop.set(\n openTop\n ? Math.max(this.VIEWPORT_OFFSET, rect.top - this.DROPDOWN_MAX_HEIGHT - this.DROPDOWN_GAP)\n : rect.bottom + this.DROPDOWN_GAP\n );\n this.dropdownLeft.set(Math.max(this.VIEWPORT_OFFSET, Math.min(rect.left, maxLeft)));\n this.dropdownWidth.set(rect.width);\n }\n\n selectOption(value: string): void {\n this.isOpen.set(false);\n this.valueChange.emit(value);\n }\n}\n","import { Component, computed, input, model, output, signal } from '@angular/core';\nimport { IconComponent } from '../../icon/icon.component';\nimport {\n phosphorCalendarBlank,\n phosphorCaretLeft,\n phosphorCaretRight,\n} from '@ng-icons/phosphor-icons/regular';\n\nexport type DatePickerMode = 'single' | 'range';\n\ninterface CalendarDay {\n date: number;\n month: number;\n year: number;\n isCurrentMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n isInRange: boolean;\n isRangeStart: boolean;\n isRangeEnd: boolean;\n}\n\n@Component({\n selector: 'ao-date-picker',\n imports: [IconComponent],\n templateUrl: './date-picker.component.html',\n styleUrl: './date-picker.component.scss',\n})\nexport class DatePickerComponent {\n protected readonly caretLeftIcon = phosphorCaretLeft;\n protected readonly caretRightIcon = phosphorCaretRight;\n\n readonly weekDays = ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So'];\n readonly monthNames = [\n 'Januar',\n 'Februar',\n 'März',\n 'April',\n 'Mai',\n 'Juni',\n 'Juli',\n 'August',\n 'September',\n 'Oktober',\n 'November',\n 'Dezember',\n ];\n\n readonly mode = input<DatePickerMode>('single');\n\n readonly selectedDate = model<Date | null>(null);\n readonly rangeStart = model<Date | null>(null);\n readonly rangeEnd = model<Date | null>(null);\n\n readonly currentMonth = model(new Date().getMonth());\n readonly currentYear = model(new Date().getFullYear());\n\n readonly onSelection = output<void>();\n\n readonly calendarDays = computed((): CalendarDay[] => {\n const year = this.currentYear();\n const month = this.currentMonth();\n const today = new Date();\n const firstDay = new Date(year, month, 1);\n const lastDay = new Date(year, month + 1, 0);\n const startOffset = (firstDay.getDay() + 6) % 7;\n const days: CalendarDay[] = [];\n const prevMonthLastDay = new Date(year, month, 0).getDate();\n for (let i = startOffset - 1; i >= 0; i--) {\n const date = prevMonthLastDay - i;\n const prevMonth = month === 0 ? 11 : month - 1;\n const prevYear = month === 0 ? year - 1 : year;\n days.push(this.createCalendarDay(date, prevMonth, prevYear, false, today));\n }\n for (let date = 1; date <= lastDay.getDate(); date++) {\n days.push(this.createCalendarDay(date, month, year, true, today));\n }\n const remaining = 42 - days.length;\n for (let date = 1; date <= remaining; date++) {\n const nextMonth = month === 11 ? 0 : month + 1;\n const nextYear = month === 11 ? year + 1 : year;\n days.push(this.createCalendarDay(date, nextMonth, nextYear, false, today));\n }\n return days;\n });\n\n private createCalendarDay(\n date: number,\n month: number,\n year: number,\n isCurrentMonth: boolean,\n today: Date\n ): CalendarDay {\n const dayDate = new Date(year, month, date);\n const isToday =\n today.getDate() === date && today.getMonth() === month && today.getFullYear() === year;\n let isSelected = false;\n let isInRange = false;\n let isRangeStart = false;\n let isRangeEnd = false;\n if (this.mode() === 'single') {\n const selected = this.selectedDate();\n isSelected = selected\n ? selected.getDate() === date &&\n selected.getMonth() === month &&\n selected.getFullYear() === year\n : false;\n } else {\n const start = this.rangeStart();\n const end = this.rangeEnd();\n if (start) {\n isRangeStart =\n start.getDate() === date && start.getMonth() === month && start.getFullYear() === year;\n }\n if (end) {\n isRangeEnd =\n end.getDate() === date && end.getMonth() === month && end.getFullYear() === year;\n }\n if (start && end) {\n isInRange = dayDate > start && dayDate < end;\n }\n isSelected = isRangeStart || isRangeEnd;\n }\n return {\n date,\n month,\n year,\n isCurrentMonth,\n isToday,\n isSelected,\n isInRange,\n isRangeStart,\n isRangeEnd,\n };\n }\n\n previousMonth(): void {\n if (this.currentMonth() === 0) {\n this.currentMonth.set(11);\n this.currentYear.update(y => y - 1);\n } else {\n this.currentMonth.update(m => m - 1);\n }\n }\n\n nextMonth(): void {\n if (this.currentMonth() === 11) {\n this.currentMonth.set(0);\n this.currentYear.update(y => y + 1);\n } else {\n this.currentMonth.update(m => m + 1);\n }\n }\n\n selectDate(day: CalendarDay): void {\n const date = new Date(day.year, day.month, day.date);\n if (this.mode() === 'single') {\n this.selectedDate.set(date);\n this.onSelection.emit();\n } else {\n const start = this.rangeStart();\n if (!start || (start && this.rangeEnd())) {\n this.rangeStart.set(date);\n this.rangeEnd.set(null);\n } else {\n if (date < start) {\n this.rangeEnd.set(start);\n this.rangeStart.set(date);\n } else {\n this.rangeEnd.set(date);\n }\n const startDate = this.rangeStart();\n const endDate = this.rangeEnd();\n if (!startDate || !endDate) return;\n this.onSelection.emit();\n }\n }\n }\n\n formatDate = DatePickerComponent.formatDate;\n static formatDate(date: Date): string {\n const day = date.getDate().toString().padStart(2, '0');\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const year = date.getFullYear();\n return `${day}.${month}.${year}`;\n }\n\n clear(): void {\n this.selectedDate.set(null);\n this.rangeStart.set(null);\n this.rangeEnd.set(null);\n this.onSelection.emit();\n }\n}\n","<div class=\"ao-date-picker__header\">\n <button\n type=\"button\"\n class=\"ao-date-picker__nav\"\n aria-label=\"Vorheriger Monat\"\n (click)=\"previousMonth()\"\n >\n <ao-icon [svg]=\"caretLeftIcon\" size=\"sm\" />\n </button>\n <span class=\"ao-date-picker__month-year\">\n {{ monthNames[currentMonth()] }} {{ currentYear() }}\n </span>\n <button\n type=\"button\"\n class=\"ao-date-picker__nav\"\n aria-label=\"Nächster Monat\"\n (click)=\"nextMonth()\"\n >\n <ao-icon [svg]=\"caretRightIcon\" size=\"sm\" />\n </button>\n</div>\n<div class=\"ao-date-picker__weekdays\">\n @for (day of weekDays; track day) {\n <span class=\"ao-date-picker__weekday\">{{ day }}</span>\n }\n</div>\n<div class=\"ao-date-picker__days\">\n @for (day of calendarDays(); track day.date + '-' + day.month) {\n <button\n type=\"button\"\n class=\"ao-date-picker__day\"\n [class.ao-date-picker__day--other-month]=\"!day.isCurrentMonth\"\n [class.ao-date-picker__day--today]=\"day.isToday\"\n [class.ao-date-picker__day--selected]=\"day.isSelected\"\n [class.ao-date-picker__day--in-range]=\"day.isInRange\"\n [class.ao-date-picker__day--range-start]=\"day.isRangeStart\"\n [class.ao-date-picker__day--range-end]=\"day.isRangeEnd\"\n (click)=\"selectDate(day)\"\n >\n {{ day.date }}\n </button>\n }\n</div>\n@if (mode() === 'range') {\n <div class=\"ao-date-picker__range-info\">\n @if (rangeStart() && rangeEnd()) {\n <span>{{ formatDate(rangeStart()!) }} - {{ formatDate(rangeEnd()!) }}</span>\n } @else if (rangeStart()) {\n <span>{{ formatDate(rangeStart()!) }} - ...</span>\n } @else {\n <span>Startdatum wählen</span>\n }\n </div>\n}\n<div class=\"ao-date-picker__actions\">\n <button type=\"button\" class=\"ao-date-picker__clear\" (click)=\"clear()\">Zurücksetzen</button>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostListener,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { phosphorCalendarBlank } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../../icon/icon.component';\nimport {\n DatePickerComponent,\n DatePickerMode,\n} from '../../date-input/date-picker/date-picker.component';\n\n@Component({\n selector: 'ao-table-date-picker',\n imports: [IconComponent, DatePickerComponent],\n template: `\n <div class=\"ao-table-date-picker__trigger\" (click)=\"toggleDropdown()\">\n <input\n type=\"text\"\n class=\"ao-table-date-picker__input\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"placeholder()\"\n [attr.size]=\"placeholder().length || null\"\n [value]=\"displayValue()\"\n (input)=\"onInputChange($event)\"\n (click)=\"$event.stopPropagation()\"\n />\n <ao-icon [svg]=\"calendarIcon\" size=\"sm\" />\n </div>\n @if (isOpen()) {\n <div\n class=\"ao-table-date-picker__dropdown\"\n [style.top.px]=\"dropdownTop()\"\n [style.left.px]=\"dropdownLeft()\"\n >\n <ao-date-picker\n [mode]=\"mode()\"\n [(selectedDate)]=\"selectedDate\"\n [(rangeStart)]=\"rangeStart\"\n [(rangeEnd)]=\"rangeEnd\"\n [(currentMonth)]=\"currentMonth\"\n [(currentYear)]=\"currentYear\"\n (onSelection)=\"onSelection()\"\n ></ao-date-picker>\n </div>\n }\n `,\n styleUrl: './table-date-picker.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-table-date-picker',\n },\n})\nexport class TableDatePickerComponent {\n protected readonly calendarIcon = phosphorCalendarBlank;\n private readonly elementRef = inject(ElementRef);\n\n readonly placeholder = input<string>('TT.MM.JJJJ');\n readonly value = input<string>('');\n readonly mode = input<DatePickerMode>('single');\n readonly selectedDate = model<Date | null>(null);\n readonly rangeStart = model<Date | null>(null);\n readonly rangeEnd = model<Date | null>(null);\n readonly currentMonth = model(new Date().getMonth());\n readonly currentYear = model(new Date().getFullYear());\n readonly valueChange = output<string>();\n\n readonly isOpen = signal(false);\n readonly dropdownTop = signal(0);\n readonly dropdownLeft = signal(0);\n\n private readonly DROPDOWN_HEIGHT = 380;\n private readonly DROPDOWN_WIDTH = 280;\n private readonly DROPDOWN_GAP = 4;\n private readonly VIEWPORT_OFFSET = 8;\n\n readonly displayValue = computed(() => {\n if (this.mode() === 'range') {\n const start = this.rangeStart();\n const end = this.rangeEnd();\n if (start && end) {\n return `${DatePickerComponent.formatDate(start)} - ${DatePickerComponent.formatDate(end)}`;\n } else if (start) {\n return DatePickerComponent.formatDate(start);\n }\n return this.value();\n }\n const date = this.selectedDate();\n return date ? DatePickerComponent.formatDate(date) : this.value();\n });\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!(this.elementRef.nativeElement as HTMLElement).contains(event.target as Node)) {\n this.isOpen.set(false);\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscapeKey(): void {\n this.isOpen.set(false);\n }\n\n @HostListener('window:resize')\n @HostListener('window:scroll')\n onViewportChange(): void {\n this.isOpen.set(false);\n }\n\n toggleDropdown(): void {\n const willOpen = !this.isOpen();\n if (willOpen) {\n this.calculateDropdownPosition();\n }\n this.isOpen.set(willOpen);\n }\n\n private calculateDropdownPosition(): void {\n const el = this.elementRef.nativeElement as HTMLElement;\n const rect = el.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n const spaceBelow = viewportHeight - rect.bottom;\n const openTop = spaceBelow < this.DROPDOWN_HEIGHT && rect.top > spaceBelow;\n const maxLeft = Math.max(\n this.VIEWPORT_OFFSET,\n viewportWidth - this.DROPDOWN_WIDTH - this.VIEWPORT_OFFSET\n );\n this.dropdownTop.set(\n openTop\n ? Math.max(this.VIEWPORT_OFFSET, rect.top - this.DROPDOWN_HEIGHT - this.DROPDOWN_GAP)\n : rect.bottom + this.DROPDOWN_GAP\n );\n this.dropdownLeft.set(Math.max(this.VIEWPORT_OFFSET, Math.min(rect.left, maxLeft)));\n }\n\n onInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const value = input.value;\n if (this.mode() === 'single') {\n const parsed = this.parseDate(value);\n if (parsed) {\n this.selectedDate.set(parsed);\n this.currentMonth.set(parsed.getMonth());\n this.currentYear.set(parsed.getFullYear());\n }\n } else {\n const parts = value.split(' - ');\n if (parts.length === 2) {\n const start = this.parseDate(parts[0].trim());\n const end = this.parseDate(parts[1].trim());\n if (start) this.rangeStart.set(start);\n if (end) this.rangeEnd.set(end);\n }\n }\n this.valueChange.emit(value);\n }\n\n onSelection() {\n if (this.mode() === 'single') {\n const date = this.selectedDate();\n this.valueChange.emit(date ? DatePickerComponent.formatDate(date) : '');\n this.isOpen.set(false);\n } else {\n const startDate = this.rangeStart();\n const endDate = this.rangeEnd();\n if (startDate && endDate) {\n this.valueChange.emit(\n `${DatePickerComponent.formatDate(startDate)} - ${DatePickerComponent.formatDate(endDate)}`\n );\n this.isOpen.set(false);\n } else {\n this.valueChange.emit('');\n }\n }\n }\n\n private parseDate(value: string): Date | null {\n const match = value.match(/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/);\n if (match) {\n const day = parseInt(match[1], 10);\n const month = parseInt(match[2], 10) - 1;\n const year = parseInt(match[3], 10);\n const date = new Date(year, month, day);\n if (date.getDate() === day && date.getMonth() === month && date.getFullYear() === year) {\n return date;\n }\n }\n return null;\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { TableColumnFilter } from '../table.types';\nimport { TableInputComponent } from './table-input.component';\nimport { TableSelectComponent } from './table-select.component';\nimport { TableDatePickerComponent } from './table-date-picker.component';\nimport { SelectOption } from '../../select/select.component';\n\n@Component({\n selector: 'ao-table-filter',\n imports: [TableInputComponent, TableSelectComponent, TableDatePickerComponent],\n template: `\n <div class=\"ao-table-filter__container\">\n @switch (filter().type) {\n @case ('text') {\n <ao-table-input\n [placeholder]=\"placeholder() ?? filter().placeholder ?? 'Filter...'\"\n [value]=\"value() ?? ''\"\n (valueChange)=\"onValueChange($event)\"\n />\n }\n @case ('select') {\n <ao-table-select\n [placeholder]=\"filter().placeholder ?? 'Alle'\"\n [options]=\"selectOptions()\"\n [value]=\"value() ?? ''\"\n (valueChange)=\"onValueChange($event)\"\n />\n }\n @case ('date') {\n <ao-table-date-picker\n [placeholder]=\"placeholder() ?? filter().placeholder ?? 'TT.MM.JJJJ'\"\n [value]=\"value() ?? ''\"\n [mode]=\"'single'\"\n (valueChange)=\"onValueChange($event)\"\n />\n }\n @case ('date-range') {\n <ao-table-date-picker\n [placeholder]=\"placeholder() ?? filter().placeholder ?? 'TT.MM.JJJJ - TT.MM.JJJJ'\"\n [value]=\"value() ?? ''\"\n [mode]=\"'range'\"\n (valueChange)=\"onValueChange($event)\"\n />\n }\n }\n </div>\n `,\n styleUrl: './table-filter.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-table-filter',\n },\n})\nexport class TableFilterComponent {\n readonly filter = input.required<TableColumnFilter>();\n readonly placeholder = input<string | null>(null);\n readonly value = input<string | null>(null);\n readonly valueChange = output<string>();\n\n readonly selectOptions = computed((): SelectOption[] => {\n return this.filter().options ?? [];\n });\n\n onValueChange(value: string): void {\n this.valueChange.emit(value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostListener,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport {\n phosphorCaretDown,\n phosphorCaretLeft,\n phosphorCaretRight,\n} from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../../icon/icon.component';\nimport { TablePageChangeEvent, TablePageState } from '../table.types';\n\n@Component({\n selector: 'ao-table-pagination',\n imports: [IconComponent],\n template: `\n <div class=\"ao-table-pagination__container\">\n <div class=\"ao-table-pagination__left\">\n <span class=\"ao-table-pagination__label\">Einträge pro Seite:</span>\n <div class=\"ao-table-pagination__page-size\" #pageSizeContainer>\n <button\n type=\"button\"\n class=\"ao-table-pagination__page-size-trigger\"\n aria-label=\"Seitengröße auswählen\"\n [attr.aria-expanded]=\"pageSizeDropdownOpen()\"\n aria-haspopup=\"listbox\"\n (click)=\"togglePageSizeDropdown()\"\n >\n <span>{{ pageState().pageSize }}</span>\n <ao-icon [svg]=\"caretDownIcon\" size=\"sm\" />\n </button>\n @if (pageSizeDropdownOpen()) {\n <div\n class=\"ao-table-pagination__page-size-dropdown\"\n role=\"listbox\"\n [style.top.px]=\"dropdownTop()\"\n [style.left.px]=\"dropdownLeft()\"\n [style.minWidth.px]=\"dropdownMinWidth()\"\n >\n @for (option of pageSizeOptions(); track option) {\n <button\n type=\"button\"\n class=\"ao-table-pagination__page-size-option\"\n [class.ao-table-pagination__page-size-option--selected]=\"\n option === pageState().pageSize\n \"\n (click)=\"onPageSizeChange(option)\"\n >\n {{ option }}\n </button>\n }\n </div>\n }\n </div>\n </div>\n <div class=\"ao-table-pagination__right\">\n <span class=\"ao-table-pagination__info\"\n >Seite {{ pageState().pageIndex + 1 }} von {{ totalPages() }} ({{\n pageState().totalItems\n }}\n Einträge gesamt)</span\n >\n <div class=\"ao-table-pagination__nav\">\n <button\n type=\"button\"\n class=\"ao-table-pagination__nav-btn\"\n aria-label=\"Vorherige Seite\"\n [class.ao-table-pagination__nav-btn--disabled]=\"!canGoPrevious()\"\n [disabled]=\"!canGoPrevious()\"\n (click)=\"goToPrevious()\"\n >\n <ao-icon [svg]=\"caretLeftIcon\" size=\"sm\" />\n </button>\n <div class=\"ao-table-pagination__pages\">\n @for (page of visiblePages(); track page) {\n <button\n type=\"button\"\n class=\"ao-table-pagination__page-btn\"\n [class.ao-table-pagination__page-btn--active]=\"page === pageState().pageIndex + 1\"\n (click)=\"goToPage(page)\"\n >\n {{ page }}\n </button>\n }\n </div>\n <button\n type=\"button\"\n class=\"ao-table-pagination__nav-btn\"\n aria-label=\"Nächste Seite\"\n [class.ao-table-pagination__nav-btn--disabled]=\"!canGoNext()\"\n [disabled]=\"!canGoNext()\"\n (click)=\"goToNext()\"\n >\n <ao-icon [svg]=\"caretRightIcon\" size=\"sm\" />\n </button>\n </div>\n </div>\n </div>\n `,\n styleUrl: './table-pagination.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-table-pagination',\n },\n})\nexport class TablePaginationComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n readonly pageState = input.required<TablePageState>();\n readonly pageSizeOptions = input<number[]>([10, 25, 50]);\n readonly pageChange = output<TablePageChangeEvent>();\n protected readonly caretLeftIcon = phosphorCaretLeft;\n protected readonly caretRightIcon = phosphorCaretRight;\n protected readonly caretDownIcon = phosphorCaretDown;\n readonly pageSizeDropdownOpen = signal(false);\n readonly dropdownTop = signal(0);\n readonly dropdownLeft = signal(0);\n readonly dropdownMinWidth = signal(0);\n private readonly pageSizeContainer = viewChild<ElementRef<HTMLElement>>('pageSizeContainer');\n private readonly DROPDOWN_HEIGHT = 150;\n private readonly DROPDOWN_GAP = 4;\n private readonly VIEWPORT_OFFSET = 8;\n\n readonly totalPages = computed(() => {\n const { totalItems, pageSize } = this.pageState();\n return Math.max(1, Math.ceil(totalItems / pageSize));\n });\n\n readonly canGoPrevious = computed(() => this.pageState().pageIndex > 0);\n\n readonly canGoNext = computed(() => this.pageState().pageIndex < this.totalPages() - 1);\n\n readonly visiblePages = computed(() => {\n const total = this.totalPages();\n const current = this.pageState().pageIndex + 1;\n const maxVisible = 5;\n if (total <= maxVisible) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n let start = Math.max(1, current - Math.floor(maxVisible / 2));\n const end = Math.min(total, start + maxVisible - 1);\n if (end - start + 1 < maxVisible) {\n start = Math.max(1, end - maxVisible + 1);\n }\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n });\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.elementRef.nativeElement.contains(event.target as Node)) {\n this.pageSizeDropdownOpen.set(false);\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscapeKey(): void {\n this.pageSizeDropdownOpen.set(false);\n }\n\n @HostListener('window:resize')\n @HostListener('window:scroll')\n onViewportChange(): void {\n this.pageSizeDropdownOpen.set(false);\n }\n\n togglePageSizeDropdown(): void {\n const willOpen = !this.pageSizeDropdownOpen();\n if (willOpen) {\n this.calculateDropdownPosition();\n }\n this.pageSizeDropdownOpen.set(willOpen);\n }\n\n private calculateDropdownPosition(): void {\n const container = this.pageSizeContainer();\n if (!container) return;\n const rect = container.nativeElement.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n const spaceBelow = viewportHeight - rect.bottom;\n const openTop = spaceBelow < this.DROPDOWN_HEIGHT && rect.top > spaceBelow;\n const maxLeft = Math.max(\n this.VIEWPORT_OFFSET,\n viewportWidth - rect.width - this.VIEWPORT_OFFSET\n );\n this.dropdownTop.set(\n openTop\n ? Math.max(this.VIEWPORT_OFFSET, rect.top - this.DROPDOWN_HEIGHT - this.DROPDOWN_GAP)\n : rect.bottom + this.DROPDOWN_GAP\n );\n this.dropdownLeft.set(Math.max(this.VIEWPORT_OFFSET, Math.min(rect.left, maxLeft)));\n this.dropdownMinWidth.set(rect.width);\n }\n\n goToPrevious(): void {\n if (!this.canGoPrevious()) return;\n this.pageChange.emit({\n pageIndex: this.pageState().pageIndex - 1,\n pageSize: this.pageState().pageSize,\n });\n }\n\n goToNext(): void {\n if (!this.canGoNext()) return;\n this.pageChange.emit({\n pageIndex: this.pageState().pageIndex + 1,\n pageSize: this.pageState().pageSize,\n });\n }\n\n goToPage(page: number): void {\n this.pageChange.emit({\n pageIndex: page - 1,\n pageSize: this.pageState().pageSize,\n });\n }\n\n onPageSizeChange(size: number): void {\n this.pageSizeDropdownOpen.set(false);\n this.pageChange.emit({\n pageIndex: 0,\n pageSize: size,\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { phosphorDotsThreeVertical } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../../icon/icon.component';\nimport { TableRowAction } from '../table.types';\n\n@Component({\n selector: 'ao-table-row-actions',\n imports: [IconComponent],\n template: `\n <button\n type=\"button\"\n class=\"ao-table-row-actions__trigger\"\n aria-label=\"Aktionen öffnen\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"menu\"\n (click)=\"toggleMenu($event)\"\n >\n <ao-icon [svg]=\"dotsIcon\" size=\"md\" />\n </button>\n @if (isOpen()) {\n <div\n class=\"ao-table-row-actions__menu\"\n role=\"menu\"\n [style.top.px]=\"menuTop()\"\n [style.left.px]=\"menuLeft()\"\n >\n @for (action of actions(); track action.id) {\n <button\n type=\"button\"\n class=\"ao-table-row-actions__item\"\n role=\"menuitem\"\n [disabled]=\"isActionDisabled(action)\"\n (click)=\"onActionClick(action, $event)\"\n >\n @if (action.icon) {\n <ao-icon [svg]=\"action.icon\" size=\"sm\" />\n }\n <span>{{ action.label }}</span>\n </button>\n }\n </div>\n }\n `,\n styleUrl: './table-row-actions.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-table-row-actions',\n '[class.ao-table-row-actions--open]': 'isOpen()',\n },\n})\nexport class TableRowActionsComponent<T> {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n readonly actions = input.required<TableRowAction<T>[]>();\n readonly row = input.required<T>();\n readonly actionClick = output<TableRowAction<T>>();\n readonly isOpen = signal<boolean>(false);\n readonly menuTop = signal(0);\n readonly menuLeft = signal(0);\n protected readonly dotsIcon = phosphorDotsThreeVertical;\n private readonly MENU_HEIGHT = 150;\n private readonly MENU_GAP = 4;\n private readonly VIEWPORT_OFFSET = 8;\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.elementRef.nativeElement.contains(event.target as Node)) {\n this.isOpen.set(false);\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscapeKey(): void {\n this.isOpen.set(false);\n }\n\n @HostListener('window:resize')\n @HostListener('window:scroll')\n onViewportChange(): void {\n this.isOpen.set(false);\n }\n\n toggleMenu(event: MouseEvent): void {\n event.stopPropagation();\n const willOpen = !this.isOpen();\n if (willOpen) {\n this.calculateMenuPosition();\n }\n this.isOpen.set(willOpen);\n }\n\n private calculateMenuPosition(): void {\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const spaceBelow = viewportHeight - rect.bottom;\n const openTop = spaceBelow < this.MENU_HEIGHT && rect.top > spaceBelow;\n this.menuTop.set(\n openTop\n ? Math.max(this.VIEWPORT_OFFSET, rect.top - this.MENU_HEIGHT - this.MENU_GAP)\n : rect.bottom + this.MENU_GAP\n );\n this.menuLeft.set(Math.min(rect.right, window.innerWidth - this.VIEWPORT_OFFSET));\n }\n\n isActionDisabled(action: TableRowAction<T>): boolean {\n if (typeof action.disabled === 'function') {\n return action.disabled(this.row());\n }\n return action.disabled ?? false;\n }\n\n onActionClick(action: TableRowAction<T>, event: MouseEvent): void {\n event.stopPropagation();\n if (this.isActionDisabled(action)) return;\n this.isOpen.set(false);\n this.actionClick.emit(action);\n }\n}\n","import { Directive, input, TemplateRef, inject } from '@angular/core';\n\nexport interface TableCellDefContext<T extends object = Record<string, unknown>> {\n $implicit: T;\n value: T[keyof T & string];\n row: T;\n column: keyof T & string;\n}\n\n@Directive({\n selector: '[aoTableCellDef]',\n})\nexport class TableCellDefDirective<T extends object = Record<string, unknown>> {\n templateRef = inject<TemplateRef<TableCellDefContext<T>>>(TemplateRef);\n\n readonly aoTableCellDef = input.required<keyof T & string>();\n\n /** Optional type witness for inferring `T`. Bind `[aoTableCellDefOf]=\"data()\"` to enable autocomplete on `let-row` / `let-value`. */\n readonly aoTableCellDefOf = input<T[]>();\n\n static ngTemplateContextGuard<T extends object>(\n _directive: TableCellDefDirective<T>,\n ctx: unknown\n ): ctx is TableCellDefContext<T> {\n return true;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n DestroyRef,\n inject,\n input,\n model,\n OnInit,\n output,\n signal,\n TrackByFunction,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n phosphorArrowsDownUp,\n phosphorCaretDown,\n phosphorCaretUp,\n phosphorDatabase,\n phosphorTrash,\n phosphorMagnifyingGlass,\n phosphorFunnel,\n phosphorPlus,\n} from '@ng-icons/phosphor-icons/regular';\nimport { debounceTime, Subject } from 'rxjs';\nimport { IconComponent } from '../icon/icon.component';\nimport { ButtonComponent } from '../button/button.component';\nimport { CheckboxState, TableCheckboxComponent } from './components/table-checkbox.component';\nimport { TableFilterComponent } from './components/table-filter.component';\nimport { TablePaginationComponent } from './components/table-pagination.component';\nimport { TableRowActionsComponent } from './components/table-row-actions.component';\nimport { TableCellDefContext, TableCellDefDirective } from './directives/table-cell-def.directive';\nimport {\n SortDirection,\n TableColumn,\n TableFilterState,\n TablePageChangeEvent,\n TablePageState,\n TableRowAction,\n TableRowActionEvent,\n TableSelectionMode,\n TableSortState,\n} from './table.types';\n\n@Component({\n selector: 'ao-table',\n imports: [\n NgTemplateOutlet,\n IconComponent,\n ButtonComponent,\n TableCheckboxComponent,\n TableFilterComponent,\n TablePaginationComponent,\n TableRowActionsComponent,\n ],\n templateUrl: './table.component.html',\n styleUrl: './table.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-table',\n '[class.ao-table--loading]': 'loading()',\n },\n})\nexport class TableComponent<T extends object> implements OnInit {\n // Header options\n readonly title = input<string>();\n readonly subtitle = input<string>();\n\n // Global Search\n readonly showSearch = input<boolean>(false);\n readonly searchPlaceholder = input<string>('Suchen...');\n readonly searchValue = model<string>('');\n readonly searchChange = output<string>();\n\n // Filter Toggle (global toggle for column filters or an external filter panel)\n readonly showFilterToggle = input<boolean>(false);\n readonly filterToggleActive = model<boolean>(false);\n readonly filterToggleChange = output<boolean>();\n\n // Add Action\n readonly addActionLabel = input<string>();\n readonly addActionIcon = input<string>(phosphorPlus);\n readonly addActionClick = output<void>();\n\n // Data\n readonly data = input.required<T[]>();\n readonly columns = input.required<TableColumn[]>();\n readonly loading = input<boolean>(false);\n readonly trackBy = input<TrackByFunction<T>>();\n // Selection\n readonly selectionMode = input<TableSelectionMode>('none');\n readonly selected = model<T[]>([]);\n readonly selectionChange = output<T[]>();\n // Sorting\n readonly sortState = model<TableSortState | null>(null);\n readonly sortChange = output<TableSortState>();\n // Filtering\n readonly filterState = model<TableFilterState>({});\n readonly filterChange = output<TableFilterState>();\n readonly showFilters = input<boolean>(true);\n // Pagination\n readonly pageState = model<TablePageState | null>(null);\n readonly pageChange = output<TablePageChangeEvent>();\n readonly pageSizeOptions = input<number[]>([10, 25, 50]);\n // Row Actions\n readonly rowActions = input<TableRowAction<T>[]>([]);\n readonly rowActionClick = output<TableRowActionEvent<T>>();\n readonly rowClick = output<T>();\n // Bulk Actions\n readonly bulkDelete = output<T[]>();\n // Cell templates\n readonly cellDefs = contentChildren(TableCellDefDirective);\n\n // Icons\n protected readonly trashIcon = phosphorTrash;\n protected readonly emptyIcon = phosphorDatabase;\n protected readonly searchIcon = phosphorMagnifyingGlass;\n protected readonly filterIcon = phosphorFunnel;\n private readonly arrowsDownUpIcon = phosphorArrowsDownUp;\n private readonly caretUpIcon = phosphorCaretUp;\n private readonly caretDownIcon = phosphorCaretDown;\n\n // Debouncing\n readonly filterDebounce = input<number>(300);\n private readonly filterSubject = new Subject<TableFilterState>();\n private readonly searchSubject = new Subject<string>();\n private readonly destroyRef = inject(DestroyRef);\n\n // Internal state\n private readonly selectedSet = signal<Set<T>>(new Set());\n\n ngOnInit(): void {\n this.filterSubject\n .pipe(debounceTime(this.filterDebounce()), takeUntilDestroyed(this.destroyRef))\n .subscribe(state => {\n this.filterChange.emit(state);\n });\n\n this.searchSubject\n .pipe(debounceTime(this.filterDebounce()), takeUntilDestroyed(this.destroyRef))\n .subscribe(value => {\n this.searchChange.emit(value);\n });\n }\n\n readonly hasSelection = computed(() => this.selectionMode() !== 'none');\n\n readonly hasRowActions = computed(() => this.rowActions().length > 0);\n\n readonly hasFilters = computed(() => {\n return (\n this.showFilters() && this.columns().some(col => col.filter && col.filter.type !== 'none')\n );\n });\n\n readonly hasPagination = computed(() => this.pageState() !== null);\n\n readonly hasTopBar = computed(() => {\n return (\n !!this.title() ||\n !!this.subtitle() ||\n this.showSearch() ||\n this.showFilterToggle() ||\n !!this.addActionLabel()\n );\n });\n\n readonly allSelected = computed((): CheckboxState => {\n const data = this.data();\n const selected = this.selectedSet();\n if (data.length === 0 || selected.size === 0) return 'unchecked';\n if (selected.size === data.length) return 'checked';\n return 'indeterminate';\n });\n\n readonly selectedCount = computed(() => this.selectedSet().size);\n\n isRowSelected(row: T): boolean {\n return this.selectedSet().has(row);\n }\n\n getRowCheckboxState(row: T): CheckboxState {\n return this.isRowSelected(row) ? 'checked' : 'unchecked';\n }\n\n getCellTemplate(columnKey: string): TableCellDefDirective<T> | undefined {\n return this.cellDefs().find(def => def.aoTableCellDef() === columnKey) as unknown as\n | TableCellDefDirective<T>\n | undefined;\n }\n\n getCellContext(row: T, columnKey: string): TableCellDefContext<T> {\n return {\n $implicit: row,\n value: (row as Record<string, unknown>)[columnKey],\n row,\n column: columnKey,\n } as TableCellDefContext<T>;\n }\n\n getCellValue(row: T, columnKey: string): unknown {\n return (row as Record<string, unknown>)[columnKey];\n }\n\n getColumnSortDirection(columnKey: string): SortDirection {\n const state = this.sortState();\n if (!state || state.column !== columnKey) return null;\n return state.direction;\n }\n\n getSortIcon(columnKey: string): string {\n const direction = this.getColumnSortDirection(columnKey);\n if (direction === 'asc') return this.caretUpIcon;\n if (direction === 'desc') return this.caretDownIcon;\n return this.arrowsDownUpIcon;\n }\n\n onHeaderClick(column: TableColumn): void {\n if (!column.sortable) return;\n const currentState = this.sortState();\n let newDirection: 'asc' | 'desc' | null = 'asc';\n if (currentState?.column === column.key) {\n if (currentState.direction === 'asc') {\n newDirection = 'desc';\n } else if (currentState.direction === 'desc') {\n newDirection = null;\n }\n }\n const newState: TableSortState = { column: column.key, direction: newDirection };\n this.sortState.set(newState);\n this.sortChange.emit(newState);\n }\n\n onFilterChange(columnKey: string, value: string): void {\n const current = this.filterState();\n const newState: TableFilterState = {\n ...current,\n [columnKey]: value || null,\n };\n this.filterState.set(newState);\n this.filterSubject.next(newState);\n }\n\n onSearchInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const value = input.value;\n this.searchValue.set(value);\n this.searchSubject.next(value);\n }\n\n toggleFilter(): void {\n const newState = !this.filterToggleActive();\n this.filterToggleActive.set(newState);\n this.filterToggleChange.emit(newState);\n }\n\n onAddAction(): void {\n this.addActionClick.emit();\n }\n\n getFilterToggleLabel(): string {\n return this.filterToggleActive() ? 'Filter ausblenden' : 'Filter einblenden';\n }\n\n onSelectAllChange(state: CheckboxState): void {\n if (this.selectionMode() === 'none') return;\n const newSelected = state === 'checked' ? [...this.data()] : [];\n this.selectedSet.set(new Set(newSelected));\n this.selected.set(newSelected);\n this.selectionChange.emit(newSelected);\n }\n\n onRowSelectionChange(row: T, state: CheckboxState): void {\n const mode = this.selectionMode();\n if (mode === 'none') return;\n const currentSet = new Set(this.selectedSet());\n if (mode === 'single') {\n currentSet.clear();\n if (state === 'checked') {\n currentSet.add(row);\n }\n } else {\n if (state === 'checked') {\n currentSet.add(row);\n } else {\n currentSet.delete(row);\n }\n }\n this.selectedSet.set(currentSet);\n const newSelected = Array.from(currentSet);\n this.selected.set(newSelected);\n this.selectionChange.emit(newSelected);\n }\n\n onRowClick(row: T): void {\n if (this.selectionMode() === 'none') {\n this.rowClick.emit(row);\n } else {\n const newState = this.isRowSelected(row) ? 'unchecked' : 'checked';\n this.onRowSelectionChange(row, newState);\n }\n }\n\n onRowActionClick(row: T, action: TableRowAction<T>): void {\n this.rowActionClick.emit({ action, row });\n }\n\n onPageChange(event: TablePageChangeEvent): void {\n const current = this.pageState();\n if (current) {\n this.pageState.set({\n ...current,\n pageIndex: event.pageIndex,\n pageSize: event.pageSize,\n });\n }\n this.pageChange.emit(event);\n }\n\n onBulkDelete(): void {\n const selectedItems = Array.from(this.selectedSet());\n this.bulkDelete.emit(selectedItems);\n }\n\n clearSelection(): void {\n this.selectedSet.set(new Set());\n this.selected.set([]);\n this.selectionChange.emit([]);\n }\n\n trackByFn(index: number, item: T): unknown {\n const customTrackBy = this.trackBy();\n return customTrackBy ? customTrackBy(index, item) : index;\n }\n}\n","@if (hasTopBar()) {\n <div class=\"ao-table__top-bar\">\n <div class=\"ao-table__top-bar-left\">\n @if (title()) {\n <h2 class=\"ao-table__title\">{{ title() }}</h2>\n }\n @if (subtitle()) {\n <p class=\"ao-table__subtitle\">{{ subtitle() }}</p>\n }\n </div>\n <div class=\"ao-table__top-bar-right\">\n @if (showSearch()) {\n <div class=\"ao-table__search\">\n <ao-icon [svg]=\"searchIcon\" size=\"sm\" class=\"ao-table__search-icon\" />\n <input\n type=\"text\"\n class=\"ao-table__search-input\"\n [placeholder]=\"searchPlaceholder()\"\n [attr.aria-label]=\"searchPlaceholder() || 'Suchen'\"\n [value]=\"searchValue()\"\n (input)=\"onSearchInput($event)\"\n />\n </div>\n }\n @if (showFilterToggle()) {\n <button\n type=\"button\"\n class=\"ao-table__filter-toggle\"\n [class.ao-table__filter-toggle--active]=\"filterToggleActive()\"\n [attr.aria-label]=\"getFilterToggleLabel()\"\n [attr.aria-pressed]=\"filterToggleActive()\"\n (click)=\"toggleFilter()\"\n >\n <ao-icon [svg]=\"filterIcon\" size=\"md\" />\n </button>\n }\n @if (addActionLabel()) {\n <button\n type=\"button\"\n ao-button\n variant=\"primary\"\n [icon]=\"addActionIcon()\"\n (click)=\"onAddAction()\"\n >\n {{ addActionLabel() }}\n </button>\n }\n </div>\n </div>\n}\n\n<div class=\"ao-table__container\">\n <div class=\"ao-table__wrapper\">\n <table class=\"ao-table__table\">\n <thead class=\"ao-table__thead\">\n <tr class=\"ao-table__header-row\">\n @if (hasSelection()) {\n <th class=\"ao-table__cell ao-table__cell--checkbox\">\n @if (selectionMode() === 'multi') {\n <ao-table-checkbox\n [state]=\"allSelected()\"\n ariaLabel=\"Select all rows\"\n (stateChange)=\"onSelectAllChange($event)\"\n />\n }\n </th>\n }\n @for (column of columns(); track column.key) {\n <th\n class=\"ao-table__cell ao-table__cell--header\"\n [class.ao-table__cell--sorted]=\"getColumnSortDirection(column.key) !== null\"\n [style.width]=\"column.width\"\n [style.textAlign]=\"column.align ?? 'left'\"\n >\n <div\n class=\"ao-table__header-content\"\n [style.justifyContent]=\"\n column.align === 'right'\n ? 'flex-end'\n : column.align === 'center'\n ? 'center'\n : 'flex-start'\n \"\n >\n <span class=\"ao-table__header-label\">{{ column.header }}</span>\n @if (column.sortable) {\n <button\n type=\"button\"\n class=\"ao-table__sort-btn\"\n [class.ao-table__sort-btn--active]=\"getColumnSortDirection(column.key)\"\n (click)=\"onHeaderClick(column)\"\n >\n <ao-icon [svg]=\"getSortIcon(column.key)\" size=\"sm\" />\n </button>\n }\n </div>\n </th>\n }\n @if (hasRowActions()) {\n <th class=\"ao-table__cell ao-table__cell--actions\"></th>\n }\n </tr>\n @if (hasFilters()) {\n <tr class=\"ao-table__filter-row\">\n @if (hasSelection()) {\n <th class=\"ao-table__cell ao-table__cell--checkbox\"></th>\n }\n @for (column of columns(); track column.key) {\n <th\n class=\"ao-table__cell ao-table__cell--filter\"\n [class.ao-table__cell--sorted]=\"getColumnSortDirection(column.key) !== null\"\n [style.width]=\"column.width\"\n >\n @if (showFilters() && column.filter && column.filter.type !== 'none') {\n <ao-table-filter\n [filter]=\"column.filter\"\n [placeholder]=\"column.header\"\n [value]=\"$any(filterState()[column.key])\"\n (valueChange)=\"onFilterChange(column.key, $event)\"\n />\n }\n </th>\n }\n @if (hasRowActions()) {\n <th class=\"ao-table__cell ao-table__cell--actions\"></th>\n }\n </tr>\n }\n @if (hasSelection() && selectedCount() > 0) {\n <tr class=\"ao-table__selection-row\">\n <td class=\"ao-table__cell ao-table__cell--checkbox\"></td>\n <td\n class=\"ao-table__cell ao-table__cell--selection-info\"\n [attr.colspan]=\"columns().length + (hasRowActions() ? 1 : 0)\"\n >\n <div class=\"ao-table__selection-content\">\n <span class=\"ao-table__selection-text\">{{ selectedCount() }} ausgewählt</span>\n <button type=\"button\" class=\"ao-table__delete-btn\" (click)=\"onBulkDelete()\">\n <ao-icon [svg]=\"trashIcon\" size=\"sm\" />\n <span>Ausgewählte löschen</span>\n </button>\n </div>\n </td>\n </tr>\n }\n </thead>\n <tbody class=\"ao-table__tbody\">\n @if (loading() && data().length === 0) {\n <tr class=\"ao-table__row ao-table__row--loading\">\n <td\n class=\"ao-table__cell ao-table__cell--loading\"\n [attr.colspan]=\"\n columns().length + (hasSelection() ? 1 : 0) + (hasRowActions() ? 1 : 0)\n \"\n >\n <div class=\"ao-table__loading-container\">\n <span class=\"ao-table__loading-text\">Laden...</span>\n </div>\n </td>\n </tr>\n } @else if (!loading() && data().length === 0) {\n <tr class=\"ao-table__row ao-table__row--empty\">\n <td\n class=\"ao-table__cell ao-table__cell--empty\"\n [attr.colspan]=\"\n columns().length + (hasSelection() ? 1 : 0) + (hasRowActions() ? 1 : 0)\n \"\n >\n <div class=\"ao-table__empty-container\">\n <ao-icon [svg]=\"emptyIcon\" size=\"xl\" class=\"ao-table__empty-icon\" />\n <span class=\"ao-table__empty-text\">Keine Daten vorhanden</span>\n </div>\n </td>\n </tr>\n } @else {\n @for (row of data(); track trackByFn($index, row)) {\n <tr\n class=\"ao-table__row\"\n [class.ao-table__row--selected]=\"isRowSelected(row)\"\n (click)=\"onRowClick(row)\"\n >\n @if (hasSelection()) {\n <td class=\"ao-table__cell ao-table__cell--checkbox\">\n <ao-table-checkbox\n [state]=\"getRowCheckboxState(row)\"\n ariaLabel=\"Select row\"\n (stateChange)=\"onRowSelectionChange(row, $event)\"\n />\n </td>\n }\n @for (column of columns(); track column.key) {\n <td\n class=\"ao-table__cell\"\n [style.width]=\"column.width\"\n [style.textAlign]=\"column.align ?? 'left'\"\n >\n @if (getCellTemplate(column.key); as template) {\n <ng-container\n [ngTemplateOutlet]=\"template.templateRef\"\n [ngTemplateOutletContext]=\"getCellContext(row, column.key)\"\n />\n } @else {\n {{ getCellValue(row, column.key) }}\n }\n </td>\n }\n @if (hasRowActions()) {\n <td\n class=\"ao-table__cell ao-table__cell--actions\"\n (click)=\"$event.stopPropagation()\"\n >\n <ao-table-row-actions\n [actions]=\"rowActions()\"\n [row]=\"row\"\n (actionClick)=\"onRowActionClick(row, $event)\"\n />\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n\n @if (hasPagination() && pageState(); as state) {\n <ao-table-pagination\n [pageState]=\"state\"\n [pageSizeOptions]=\"pageSizeOptions()\"\n (pageChange)=\"onPageChange($event)\"\n />\n }\n</div>\n","export type MarkdownEditorToolbarAction =\n | 'bold'\n | 'italic'\n | 'strike'\n | 'code'\n | 'heading1'\n | 'heading2'\n | 'heading3'\n | 'bulletList'\n | 'orderedList'\n | 'blockquote'\n | 'codeBlock'\n | 'horizontalRule'\n | 'link'\n | 'undo'\n | 'redo';\n\nexport interface MarkdownEditorConfig {\n readonly placeholder?: string;\n readonly toolbar?: readonly MarkdownEditorToolbarAction[];\n readonly minHeight?: string;\n readonly maxHeight?: string;\n}\n\nexport const DEFAULT_TOOLBAR: readonly MarkdownEditorToolbarAction[] = [\n 'bold',\n 'italic',\n 'strike',\n 'code',\n 'heading1',\n 'heading2',\n 'heading3',\n 'bulletList',\n 'orderedList',\n 'blockquote',\n 'codeBlock',\n 'link',\n 'horizontalRule',\n 'undo',\n 'redo',\n];\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n effect,\n forwardRef,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n phosphorArrowClockwise,\n phosphorArrowCounterClockwise,\n phosphorCode,\n phosphorCodeBlock,\n phosphorEye,\n phosphorLink,\n phosphorListBullets,\n phosphorListNumbers,\n phosphorMinus,\n phosphorPencilSimple,\n phosphorQuotes,\n phosphorTextB,\n phosphorTextHOne,\n phosphorTextHThree,\n phosphorTextHTwo,\n phosphorTextItalic,\n phosphorTextStrikethrough,\n} from '@ng-icons/phosphor-icons/regular';\nimport { Editor } from '@tiptap/core';\nimport Link from '@tiptap/extension-link';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport StarterKit from '@tiptap/starter-kit';\nimport { marked } from 'marked';\nimport TurndownService from 'turndown';\nimport { IconComponent } from '../icon/icon.component';\nimport { DEFAULT_TOOLBAR, MarkdownEditorToolbarAction } from './markdown-editor.types';\n\ninterface ToolbarItem {\n readonly action: MarkdownEditorToolbarAction;\n readonly icon: string;\n readonly title: string;\n readonly isActive?: () => boolean;\n readonly execute: () => void;\n}\n\n@Component({\n selector: 'ao-markdown-editor',\n imports: [IconComponent],\n templateUrl: './markdown-editor.component.html',\n styleUrl: './markdown-editor.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MarkdownEditorComponent),\n multi: true,\n },\n ],\n host: {\n class: 'ao-markdown-editor',\n '[class.ao-markdown-editor--disabled]': 'disabled()',\n '[class.ao-markdown-editor--focused]': 'focused()',\n '[class.ao-markdown-editor--source]': 'showSource()',\n },\n})\nexport class MarkdownEditorComponent implements ControlValueAccessor, AfterViewInit {\n readonly label = input<string>('');\n readonly placeholder = input<string>('Inhalt eingeben...');\n readonly toolbar = input<readonly MarkdownEditorToolbarAction[]>(DEFAULT_TOOLBAR);\n readonly minHeight = input<string>('200px');\n readonly maxHeight = input<string>('500px');\n readonly disabled = model<boolean>(false);\n readonly value = model<string>('');\n readonly focused = signal<boolean>(false);\n readonly showSource = signal<boolean>(false);\n readonly editorContent = viewChild<ElementRef<HTMLDivElement>>('editorContent');\n protected readonly icons = {\n bold: phosphorTextB,\n italic: phosphorTextItalic,\n strike: phosphorTextStrikethrough,\n code: phosphorCode,\n heading1: phosphorTextHOne,\n heading2: phosphorTextHTwo,\n heading3: phosphorTextHThree,\n bulletList: phosphorListBullets,\n orderedList: phosphorListNumbers,\n blockquote: phosphorQuotes,\n codeBlock: phosphorCodeBlock,\n link: phosphorLink,\n horizontalRule: phosphorMinus,\n undo: phosphorArrowCounterClockwise,\n redo: phosphorArrowClockwise,\n source: phosphorEye,\n editor: phosphorPencilSimple,\n };\n private editor: Editor | null = null;\n private readonly turndownService = new TurndownService({\n headingStyle: 'atx',\n codeBlockStyle: 'fenced',\n emDelimiter: '*',\n });\n private readonly destroyRef = inject(DestroyRef);\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n private lastEmitted = '';\n\n readonly toolbarItems = computed<ToolbarItem[]>(() => {\n const actions = this.toolbar();\n return actions.map(action => this.createToolbarItem(action));\n });\n\n constructor() {\n effect(() => {\n const externalValue = this.value();\n if (!this.editor || this.showSource()) return;\n if (externalValue === this.lastEmitted) return;\n\n const currentValue = this.htmlToMarkdown(this.editor.getHTML());\n if (currentValue !== externalValue) {\n this.setEditorContent(externalValue);\n }\n });\n effect(() => {\n const isDisabled = this.disabled();\n this.editor?.setEditable(!isDisabled);\n });\n }\n\n ngAfterViewInit(): void {\n this.initEditor();\n this.destroyRef.onDestroy(() => this.editor?.destroy());\n }\n\n writeValue(value: string): void {\n this.value.set(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n toggleSource(): void {\n if (this.showSource()) {\n this.showSource.set(false);\n this.setEditorContent(this.value());\n } else {\n this.showSource.set(true);\n }\n }\n\n onSourceInput(event: Event): void {\n const textarea = event.target as HTMLTextAreaElement;\n this.value.set(textarea.value);\n this.onChange(textarea.value);\n }\n\n onSourceFocus(): void {\n this.focused.set(true);\n }\n\n onSourceBlur(): void {\n this.focused.set(false);\n this.onTouched();\n }\n\n focusEditor(event: MouseEvent): void {\n if (this.disabled() || !this.editor) return;\n if (event.target !== this.editorContent()?.nativeElement) return;\n this.editor.commands.focus('end');\n }\n\n isActionActive(action: MarkdownEditorToolbarAction): boolean {\n if (!this.editor) return false;\n switch (action) {\n case 'bold':\n return this.editor.isActive('bold');\n case 'italic':\n return this.editor.isActive('italic');\n case 'strike':\n return this.editor.isActive('strike');\n case 'code':\n return this.editor.isActive('code');\n case 'heading1':\n return this.editor.isActive('heading', { level: 1 });\n case 'heading2':\n return this.editor.isActive('heading', { level: 2 });\n case 'heading3':\n return this.editor.isActive('heading', { level: 3 });\n case 'bulletList':\n return this.editor.isActive('bulletList');\n case 'orderedList':\n return this.editor.isActive('orderedList');\n case 'blockquote':\n return this.editor.isActive('blockquote');\n case 'codeBlock':\n return this.editor.isActive('codeBlock');\n case 'link':\n return this.editor.isActive('link');\n default:\n return false;\n }\n }\n\n executeAction(action: MarkdownEditorToolbarAction): void {\n if (!this.editor || this.disabled()) return;\n switch (action) {\n case 'bold':\n this.editor.chain().focus().toggleBold().run();\n break;\n case 'italic':\n this.editor.chain().focus().toggleItalic().run();\n break;\n case 'strike':\n this.editor.chain().focus().toggleStrike().run();\n break;\n case 'code':\n this.editor.chain().focus().toggleCode().run();\n break;\n case 'heading1':\n this.editor.chain().focus().toggleHeading({ level: 1 }).run();\n break;\n case 'heading2':\n this.editor.chain().focus().toggleHeading({ level: 2 }).run();\n break;\n case 'heading3':\n this.editor.chain().focus().toggleHeading({ level: 3 }).run();\n break;\n case 'bulletList':\n this.editor.chain().focus().toggleBulletList().run();\n break;\n case 'orderedList':\n this.editor.chain().focus().toggleOrderedList().run();\n break;\n case 'blockquote':\n this.editor.chain().focus().toggleBlockquote().run();\n break;\n case 'codeBlock':\n this.editor.chain().focus().toggleCodeBlock().run();\n break;\n case 'horizontalRule':\n this.editor.chain().focus().setHorizontalRule().run();\n break;\n case 'link':\n this.handleLinkAction();\n break;\n case 'undo':\n this.editor.chain().focus().undo().run();\n break;\n case 'redo':\n this.editor.chain().focus().redo().run();\n break;\n }\n }\n\n private initEditor(): void {\n const element = this.editorContent()?.nativeElement;\n if (!element) return;\n const initialMarkdown = this.value();\n this.lastEmitted = initialMarkdown;\n this.editor = new Editor({\n element,\n extensions: [\n StarterKit.configure({\n heading: { levels: [1, 2, 3] },\n }),\n Placeholder.configure({\n placeholder: this.placeholder(),\n }),\n Link.configure({\n openOnClick: false,\n HTMLAttributes: {\n rel: 'noopener noreferrer',\n target: '_blank',\n },\n }),\n ],\n content: this.markdownToHtml(initialMarkdown),\n editable: !this.disabled(),\n onUpdate: ({ editor }) => {\n const markdown = this.htmlToMarkdown(editor.getHTML());\n this.lastEmitted = markdown;\n this.value.set(markdown);\n this.onChange(markdown);\n },\n onFocus: () => {\n this.focused.set(true);\n },\n onBlur: () => {\n this.focused.set(false);\n this.onTouched();\n },\n });\n }\n\n private setEditorContent(markdown: string): void {\n if (!this.editor) return;\n const html = this.markdownToHtml(markdown);\n this.editor.commands.setContent(html, { emitUpdate: false });\n this.lastEmitted = markdown;\n }\n\n private markdownToHtml(markdown: string): string {\n if (!markdown) return '';\n return marked.parse(markdown, { async: false }) as string;\n }\n\n private htmlToMarkdown(html: string): string {\n if (!html || html === '<p></p>') return '';\n return this.turndownService.turndown(html);\n }\n\n private handleLinkAction(): void {\n if (!this.editor) return;\n const previousUrl = this.editor.getAttributes('link')['href'] as string;\n const url = window.prompt('URL eingeben:', previousUrl || 'https://');\n if (url === null) return;\n if (url === '') {\n this.editor.chain().focus().extendMarkRange('link').unsetLink().run();\n return;\n }\n this.editor.chain().focus().extendMarkRange('link').setLink({ href: url }).run();\n }\n\n private createToolbarItem(action: MarkdownEditorToolbarAction): ToolbarItem {\n const titles: Record<MarkdownEditorToolbarAction, string> = {\n bold: 'Fett',\n italic: 'Kursiv',\n strike: 'Durchgestrichen',\n code: 'Code',\n heading1: 'Überschrift 1',\n heading2: 'Überschrift 2',\n heading3: 'Überschrift 3',\n bulletList: 'Aufzählung',\n orderedList: 'Nummerierung',\n blockquote: 'Zitat',\n codeBlock: 'Codeblock',\n link: 'Link',\n horizontalRule: 'Trennlinie',\n undo: 'Rückgängig',\n redo: 'Wiederherstellen',\n };\n return {\n action,\n icon: this.icons[action],\n title: titles[action],\n isActive: () => this.isActionActive(action),\n execute: () => this.executeAction(action),\n };\n }\n}\n","@if (label()) {\n <label class=\"ao-markdown-editor__label\">{{ label() }}</label>\n}\n\n<div class=\"ao-markdown-editor__container\">\n <div class=\"ao-markdown-editor__toolbar\">\n <div class=\"ao-markdown-editor__toolbar-group\">\n @for (item of toolbarItems(); track item.action) {\n <button\n type=\"button\"\n class=\"ao-markdown-editor__toolbar-btn\"\n [class.ao-markdown-editor__toolbar-btn--active]=\"item.isActive?.()\"\n [title]=\"item.title\"\n [disabled]=\"disabled() || showSource()\"\n (click)=\"item.execute()\"\n >\n <ao-icon [svg]=\"item.icon\" size=\"sm\" />\n </button>\n }\n </div>\n <div class=\"ao-markdown-editor__toolbar-divider\"></div>\n <button\n type=\"button\"\n class=\"ao-markdown-editor__toolbar-btn ao-markdown-editor__toolbar-btn--toggle\"\n [title]=\"showSource() ? 'Editor anzeigen' : 'Markdown anzeigen'\"\n [disabled]=\"disabled()\"\n (click)=\"toggleSource()\"\n >\n <ao-icon [svg]=\"showSource() ? icons.editor : icons.source\" size=\"sm\" />\n </button>\n </div>\n\n <div\n class=\"ao-markdown-editor__body\"\n [style.min-height]=\"minHeight()\"\n [style.max-height]=\"maxHeight()\"\n >\n @if (showSource()) {\n <textarea\n class=\"ao-markdown-editor__source\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n (input)=\"onSourceInput($event)\"\n (focus)=\"onSourceFocus()\"\n (blur)=\"onSourceBlur()\"\n ></textarea>\n } @else {\n <div\n #editorContent\n class=\"ao-markdown-editor__content\"\n (click)=\"focusEditor($event)\"\n ></div>\n }\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input,\n model,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { phosphorCheck, phosphorX } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'ao-slide-toggle',\n imports: [IconComponent],\n templateUrl: './slide-toggle.component.html',\n styleUrl: './slide-toggle.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SlideToggleComponent),\n multi: true,\n },\n ],\n host: {\n class: 'ao-slide-toggle',\n '[class.ao-slide-toggle--checked]': 'checked()',\n '[class.ao-slide-toggle--disabled]': 'disabled()',\n '(click)': 'toggle()',\n '(keydown.space)': 'toggle(); $event.preventDefault()',\n '(keydown.enter)': 'toggle(); $event.preventDefault()',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '[attr.role]': '\"switch\"',\n '[attr.aria-checked]': 'checked()',\n '[attr.aria-disabled]': 'disabled()',\n },\n})\nexport class SlideToggleComponent implements ControlValueAccessor {\n readonly labelActive = input<string>('Aktiv');\n readonly labelInactive = input<string>('Inaktiv');\n readonly checked = model<boolean>(false);\n readonly disabled = model<boolean>(false);\n protected readonly checkIcon = phosphorCheck;\n protected readonly xIcon = phosphorX;\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: boolean): void {\n this.checked.set(!!value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n toggle(): void {\n if (this.disabled()) return;\n const newValue = !this.checked();\n this.checked.set(newValue);\n this.onChange(newValue);\n this.onTouched();\n }\n}\n","<span class=\"ao-slide-toggle__track\">\n <span class=\"ao-slide-toggle__labels\">\n <span class=\"ao-slide-toggle__label ao-slide-toggle__label--active\">{{ labelActive() }}</span>\n <span class=\"ao-slide-toggle__label ao-slide-toggle__label--inactive\">{{ labelInactive() }}</span>\n </span>\n <span class=\"ao-slide-toggle__indicator\">\n <ao-icon [svg]=\"checked() ? checkIcon : xIcon\" size=\"sm\" />\n </span>\n</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n phosphorCheck,\n phosphorPencilSimple,\n phosphorX,\n} from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type EditableTextSize =\n | 'display-4'\n | 'display-3'\n | 'display-2'\n | 'display-1'\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'body1'\n | 'body2'\n | 'caption';\n\n@Component({\n selector: 'ao-editable-text',\n imports: [FormsModule, IconComponent],\n templateUrl: './editable-text.component.html',\n styleUrl: './editable-text.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ao-editable-text',\n '[class.ao-editable-text--editing]': 'isEditing()',\n '[class.ao-editable-text--display-4]': 'size() === \"display-4\"',\n '[class.ao-editable-text--display-3]': 'size() === \"display-3\"',\n '[class.ao-editable-text--display-2]': 'size() === \"display-2\"',\n '[class.ao-editable-text--display-1]': 'size() === \"display-1\"',\n '[class.ao-editable-text--h1]': 'size() === \"h1\"',\n '[class.ao-editable-text--h2]': 'size() === \"h2\"',\n '[class.ao-editable-text--h3]': 'size() === \"h3\"',\n '[class.ao-editable-text--h4]': 'size() === \"h4\"',\n '[class.ao-editable-text--body1]': 'size() === \"body1\"',\n '[class.ao-editable-text--body2]': 'size() === \"body2\"',\n '[class.ao-editable-text--caption]': 'size() === \"caption\"',\n },\n})\nexport class EditableTextComponent {\n readonly value = model<string>('');\n readonly size = input<EditableTextSize>('body1');\n readonly placeholder = input<string>('Text eingeben...');\n readonly saved = output<string>();\n readonly cancelled = output<void>();\n readonly isEditing = signal<boolean>(false);\n protected readonly editIcon = phosphorPencilSimple;\n protected readonly saveIcon = phosphorCheck;\n protected readonly cancelIcon = phosphorX;\n private editValue = '';\n\n startEditing(): void {\n this.editValue = this.value();\n this.isEditing.set(true);\n }\n\n save(): void {\n this.isEditing.set(false);\n this.saved.emit(this.value());\n }\n\n cancel(): void {\n this.value.set(this.editValue);\n this.isEditing.set(false);\n this.cancelled.emit();\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n this.save();\n } else if (event.key === 'Escape') {\n this.cancel();\n }\n }\n}\n","@if (isEditing()) {\n <div class=\"ao-editable-text__edit\">\n <input\n class=\"ao-editable-text__input\"\n type=\"text\"\n [(ngModel)]=\"value\"\n [placeholder]=\"placeholder()\"\n (keydown)=\"onKeydown($event)\"\n #inputRef\n />\n <div class=\"ao-editable-text__actions\">\n <button\n type=\"button\"\n class=\"ao-editable-text__btn ao-editable-text__btn--save\"\n (click)=\"save()\"\n aria-label=\"Speichern\"\n >\n <ao-icon [svg]=\"saveIcon\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"ao-editable-text__btn ao-editable-text__btn--cancel\"\n (click)=\"cancel()\"\n aria-label=\"Abbrechen\"\n >\n <ao-icon [svg]=\"cancelIcon\" size=\"sm\" />\n </button>\n </div>\n </div>\n} @else {\n <div class=\"ao-editable-text__view\">\n <span class=\"ao-editable-text__text\">{{ value() || placeholder() }}</span>\n <button\n type=\"button\"\n class=\"ao-editable-text__edit-btn\"\n (click)=\"startEditing()\"\n aria-label=\"Bearbeiten\"\n >\n <ao-icon [svg]=\"editIcon\" size=\"sm\" />\n </button>\n </div>\n}\n","import { Observable, Subject } from 'rxjs';\n\nexport class DialogRef<T = unknown, R = unknown> {\n private readonly closedSubject = new Subject<R | undefined>();\n readonly closed: Observable<R | undefined> = this.closedSubject.asObservable();\n componentInstance!: T;\n\n close(result?: R): void {\n this.closedSubject.next(result);\n this.closedSubject.complete();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n inject,\n signal,\n} from '@angular/core';\nimport { phosphorX } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../icon/icon.component';\nimport { DialogRef } from './dialog-ref';\nimport { DialogSize } from './dialog.types';\n\n@Component({\n selector: 'ao-dialog',\n imports: [IconComponent],\n templateUrl: './dialog.component.html',\n styleUrl: './dialog.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ao-dialog',\n },\n})\nexport class DialogComponent implements OnInit, OnDestroy {\n private readonly elementRef = inject(ElementRef);\n private readonly dialogRef = inject(DialogRef);\n private previousActiveElement: Element | null = null;\n readonly title = signal<string>('');\n readonly size = signal<DialogSize>('md');\n readonly showHeader = signal<boolean>(true);\n readonly showFooter = signal<boolean>(true);\n readonly closeOnBackdrop = signal<boolean>(true);\n readonly closeOnEscape = signal<boolean>(true);\n readonly closeIcon = phosphorX;\n @ViewChild('contentHost', { read: ViewContainerRef, static: true })\n contentHost!: ViewContainerRef;\n @ViewChild('footerHost', { read: ViewContainerRef, static: true })\n footerHost!: ViewContainerRef;\n\n ngOnInit(): void {\n this.previousActiveElement = document.activeElement;\n document.body.style.overflow = 'hidden';\n this.focusFirstElement();\n }\n\n ngOnDestroy(): void {\n document.body.style.overflow = '';\n if (this.previousActiveElement instanceof HTMLElement) {\n this.previousActiveElement.focus();\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscapeKey(): void {\n if (this.closeOnEscape()) {\n this.close();\n }\n }\n\n onBackdropClick(): void {\n if (this.closeOnBackdrop()) {\n this.close();\n }\n }\n\n close(): void {\n this.dialogRef.close();\n }\n\n private focusFirstElement(): void {\n setTimeout(() => {\n const container = this.elementRef.nativeElement as HTMLElement;\n const focusable = container.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n focusable?.focus();\n });\n }\n}\n","<div class=\"ao-dialog__backdrop\" (click)=\"onBackdropClick()\"></div>\n\n<div\n class=\"ao-dialog__container\"\n [class.ao-dialog__container--sm]=\"size() === 'sm'\"\n [class.ao-dialog__container--md]=\"size() === 'md'\"\n [class.ao-dialog__container--lg]=\"size() === 'lg'\"\n [class.ao-dialog__container--xl]=\"size() === 'xl'\"\n [class.ao-dialog__container--full]=\"size() === 'full'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"showHeader() ? 'dialog-title' : null\"\n>\n @if (showHeader()) {\n <header class=\"ao-dialog__header\">\n <h3 id=\"dialog-title\" class=\"ao-dialog__title\">{{ title() }}</h3>\n <button type=\"button\" class=\"ao-dialog__close\" (click)=\"close()\" aria-label=\"Schliessen\">\n <ao-icon [svg]=\"closeIcon\" size=\"md\" />\n </button>\n </header>\n }\n\n <div class=\"ao-dialog__content\">\n <ng-template #contentHost />\n </div>\n\n @if (showFooter()) {\n <footer class=\"ao-dialog__footer\">\n <ng-template #footerHost />\n </footer>\n }\n</div>\n","import { InjectionToken, Type } from '@angular/core';\n\nexport type DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\nexport interface DialogConfig<D = unknown> {\n title?: string;\n size?: DialogSize;\n showHeader?: boolean;\n showFooter?: boolean;\n closeOnBackdrop?: boolean;\n closeOnEscape?: boolean;\n data?: D;\n}\n\nexport interface DialogInternalConfig<T, D = unknown> extends DialogConfig<D> {\n component: Type<T>;\n}\n\nexport const DIALOG_DATA = new InjectionToken<unknown>('DIALOG_DATA');\n","import {\n ApplicationRef,\n createComponent,\n EnvironmentInjector,\n inject,\n Injectable,\n Injector,\n Type,\n} from '@angular/core';\nimport { DialogComponent } from './dialog.component';\nimport { DialogRef } from './dialog-ref';\nimport { DIALOG_DATA, DialogConfig } from './dialog.types';\n\n@Injectable({ providedIn: 'root' })\nexport class DialogService {\n private readonly appRef = inject(ApplicationRef);\n private readonly injector = inject(Injector);\n private readonly envInjector = inject(EnvironmentInjector);\n\n open<T, D = unknown, R = unknown>(\n component: Type<T>,\n config: DialogConfig<D> = {}\n ): DialogRef<T, R> {\n const dialogRef = new DialogRef<T, R>();\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: DialogRef, useValue: dialogRef },\n { provide: DIALOG_DATA, useValue: config.data },\n ],\n });\n const dialogComponentRef = createComponent(DialogComponent, {\n environmentInjector: this.envInjector,\n elementInjector: injector,\n });\n const dialogInstance = dialogComponentRef.instance;\n dialogInstance.title.set(config.title ?? '');\n dialogInstance.size.set(config.size ?? 'md');\n dialogInstance.showHeader.set(config.showHeader ?? true);\n dialogInstance.showFooter.set(config.showFooter ?? true);\n dialogInstance.closeOnBackdrop.set(config.closeOnBackdrop ?? true);\n dialogInstance.closeOnEscape.set(config.closeOnEscape ?? true);\n const contentRef = createComponent(component, {\n environmentInjector: this.envInjector,\n elementInjector: injector,\n });\n dialogRef.componentInstance = contentRef.instance;\n this.appRef.attachView(dialogComponentRef.hostView);\n document.body.appendChild(dialogComponentRef.location.nativeElement);\n dialogComponentRef.changeDetectorRef.detectChanges();\n dialogInstance.contentHost.insert(contentRef.hostView);\n dialogRef.closed.subscribe(() => {\n dialogInstance.contentHost.clear();\n this.appRef.detachView(dialogComponentRef.hostView);\n contentRef.destroy();\n dialogComponentRef.destroy();\n });\n return dialogRef;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { phosphorX } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'ao-chips-input',\n imports: [ReactiveFormsModule, IconComponent],\n templateUrl: './chips-input.component.html',\n styleUrl: './chips-input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ChipsInputComponent),\n multi: true,\n },\n ],\n host: {\n class: 'ao-chips-input',\n '[class.ao-chips-input--disabled]': 'disabled()',\n '[class.ao-chips-input--focused]': 'focused()',\n '[class.ao-chips-input--dropdown-open]': 'showDropdown()',\n },\n})\nexport class ChipsInputComponent implements ControlValueAccessor {\n readonly label = input<string>('');\n readonly placeholder = input<string>('Bitte hinzufügen');\n readonly optional = input<boolean>(false);\n readonly disabled = model<boolean>(false);\n readonly chips = model<string[]>([]);\n readonly options = input<string[]>([]);\n readonly focused = signal<boolean>(false);\n readonly inputValue = signal<string>('');\n readonly showDropdown = signal<boolean>(false);\n readonly activeIndex = signal<number>(-1);\n readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputField');\n readonly hasChips = computed(() => this.chips().length > 0);\n readonly hasOptions = computed(() => this.options().length > 0);\n readonly filteredOptions = computed(() => {\n const query = this.inputValue().toLowerCase().replace(/^#/, '');\n const selected = this.chips();\n return this.options()\n .filter(opt => !selected.includes(opt))\n .filter(opt => !query || opt.toLowerCase().replace(/^#/, '').includes(query));\n });\n readonly showAutocomplete = computed(\n () => this.hasOptions() && this.focused() && this.filteredOptions().length > 0\n );\n protected readonly closeIcon = phosphorX;\n private onChange: (value: string[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string[]): void {\n this.chips.set(value ?? []);\n }\n\n registerOnChange(fn: (value: string[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.inputValue.set(target.value);\n this.activeIndex.set(-1);\n this.showDropdown.set(true);\n }\n\n onKeydown(event: KeyboardEvent): void {\n const filtered = this.filteredOptions();\n if (event.key === 'ArrowDown' && this.showAutocomplete()) {\n event.preventDefault();\n this.activeIndex.update(i => (i < filtered.length - 1 ? i + 1 : 0));\n return;\n }\n if (event.key === 'ArrowUp' && this.showAutocomplete()) {\n event.preventDefault();\n this.activeIndex.update(i => (i > 0 ? i - 1 : filtered.length - 1));\n return;\n }\n if (event.key === 'Enter') {\n event.preventDefault();\n if (this.activeIndex() >= 0 && this.showAutocomplete()) {\n this.selectOption(filtered[this.activeIndex()]);\n } else if (this.inputValue().trim()) {\n this.addChip(this.inputValue().trim());\n }\n return;\n }\n if (event.key === 'Escape' && this.showDropdown()) {\n event.preventDefault();\n this.showDropdown.set(false);\n this.activeIndex.set(-1);\n return;\n }\n if (event.key === 'Backspace' && !this.inputValue() && this.chips().length > 0) {\n this.removeChip(this.chips().length - 1);\n }\n }\n\n selectOption(value: string): void {\n this.addChip(value);\n this.showDropdown.set(false);\n this.activeIndex.set(-1);\n this.inputRef()?.nativeElement.focus();\n }\n\n addChip(value: string): void {\n const normalizedValue = value.startsWith('#') ? value : `#${value}`;\n if (!this.chips().includes(normalizedValue)) {\n const updated = [...this.chips(), normalizedValue];\n this.chips.set(updated);\n this.onChange(updated);\n }\n this.inputValue.set('');\n }\n\n removeChip(index: number): void {\n const updated = this.chips().filter((_, i) => i !== index);\n this.chips.set(updated);\n this.onChange(updated);\n }\n\n onFocus(): void {\n this.focused.set(true);\n if (this.hasOptions()) {\n this.showDropdown.set(true);\n }\n }\n\n onBlur(): void {\n setTimeout(() => {\n this.focused.set(false);\n this.showDropdown.set(false);\n this.activeIndex.set(-1);\n this.onTouched();\n }, 150);\n }\n\n onOptionMousedown(event: MouseEvent): void {\n event.preventDefault();\n }\n}\n","@if (label()) {\n <label class=\"ao-chips-input__label\">\n {{ label() }}\n @if (optional()) {\n <span class=\"ao-chips-input__optional\">(Optional)</span>\n }\n </label>\n}\n\n<div class=\"ao-chips-input__container\">\n <div class=\"ao-chips-input__wrapper\">\n @for (chip of chips(); track chip; let i = $index) {\n <span class=\"ao-chips-input__chip\">\n <span class=\"ao-chips-input__chip-text\">{{ chip }}</span>\n <button\n type=\"button\"\n class=\"ao-chips-input__chip-remove\"\n [disabled]=\"disabled()\"\n (click)=\"removeChip(i)\"\n >\n <ao-icon [svg]=\"closeIcon\" size=\"sm\" />\n </button>\n </span>\n }\n\n <input\n #inputField\n class=\"ao-chips-input__field\"\n type=\"text\"\n [placeholder]=\"hasChips() ? '' : placeholder()\"\n [disabled]=\"disabled()\"\n [value]=\"inputValue()\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeydown($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n </div>\n\n @if (showAutocomplete()) {\n <ul class=\"ao-chips-input__dropdown\" role=\"listbox\">\n @for (option of filteredOptions(); track option; let i = $index) {\n <li\n class=\"ao-chips-input__option\"\n [class.ao-chips-input__option--active]=\"activeIndex() === i\"\n role=\"option\"\n (mousedown)=\"onOptionMousedown($event)\"\n (click)=\"selectOption(option)\"\n >\n {{ option }}\n </li>\n }\n </ul>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport {\n phosphorCaretDown,\n phosphorCheck,\n phosphorLockSimple,\n phosphorWarning,\n phosphorX,\n} from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../icon/icon.component';\nimport { SelectOption } from '../select/select.component';\n\n@Component({\n selector: 'ao-multiselect',\n imports: [ReactiveFormsModule, IconComponent],\n templateUrl: './multiselect.component.html',\n styleUrl: './multiselect.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiselectComponent),\n multi: true,\n },\n ],\n host: {\n class: 'ao-multiselect',\n '[class.ao-multiselect--disabled]': 'disabled()',\n '[class.ao-multiselect--readonly]': 'readonly()',\n '[class.ao-multiselect--error]': 'hasError()',\n '[class.ao-multiselect--focused]': 'focused()',\n '[class.ao-multiselect--open]': 'showDropdown()',\n },\n})\nexport class MultiselectComponent implements ControlValueAccessor {\n readonly label = input<string>('');\n readonly placeholder = input<string>('Bitte auswählen');\n readonly optional = input<boolean>(false);\n readonly error = input<string>('');\n readonly readonly = input<boolean>(false);\n readonly disabled = model<boolean>(false);\n readonly options = input<SelectOption[]>([]);\n readonly value = model<string[]>([]);\n readonly focused = signal<boolean>(false);\n readonly showDropdown = signal<boolean>(false);\n readonly searchQuery = signal<string>('');\n readonly activeIndex = signal<number>(-1);\n readonly searchInputRef = viewChild<ElementRef<HTMLInputElement>>('searchInput');\n readonly triggerRef = viewChild<ElementRef<HTMLDivElement>>('trigger');\n readonly hasError = computed(() => !!this.error());\n readonly hasValue = computed(() => this.value().length > 0);\n readonly filteredOptions = computed(() => {\n const query = this.searchQuery().toLowerCase();\n return this.options().filter(opt => !query || opt.label.toLowerCase().includes(query));\n });\n readonly selectedOptions = computed(() => {\n const selected = this.value();\n const opts = this.options();\n return selected\n .map(val => opts.find(opt => opt.value === val))\n .filter((opt): opt is SelectOption => !!opt);\n });\n private readonly elementRef = inject(ElementRef);\n protected readonly caretIcon = phosphorCaretDown;\n protected readonly lockIcon = phosphorLockSimple;\n protected readonly warningIcon = phosphorWarning;\n protected readonly closeIcon = phosphorX;\n protected readonly checkIcon = phosphorCheck;\n private onChange: (value: string[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string[]): void {\n this.value.set(value ?? []);\n }\n\n registerOnChange(fn: (value: string[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n isSelected(optionValue: string): boolean {\n return this.value().includes(optionValue);\n }\n\n toggleDropdown(): void {\n if (this.disabled() || this.readonly()) return;\n if (this.showDropdown()) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n }\n }\n\n openDropdown(): void {\n if (this.showDropdown()) return;\n this.showDropdown.set(true);\n this.searchQuery.set('');\n this.activeIndex.set(-1);\n setTimeout(() => this.searchInputRef()?.nativeElement.focus(), 0);\n }\n\n closeDropdown(): void {\n this.showDropdown.set(false);\n this.searchQuery.set('');\n this.activeIndex.set(-1);\n }\n\n toggleOption(option: SelectOption): void {\n if (option.disabled) return;\n const current = this.value();\n const updated = this.isSelected(option.value)\n ? current.filter(v => v !== option.value)\n : [...current, option.value];\n this.value.set(updated);\n this.onChange(updated);\n }\n\n removeChip(index: number): void {\n const updated = this.value().filter((_, i) => i !== index);\n this.value.set(updated);\n this.onChange(updated);\n }\n\n onSearchInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.searchQuery.set(target.value);\n this.activeIndex.set(-1);\n }\n\n onKeydown(event: KeyboardEvent): void {\n const filtered = this.filteredOptions();\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n if (!this.showDropdown()) {\n this.openDropdown();\n return;\n }\n this.activeIndex.update(i => (i < filtered.length - 1 ? i + 1 : 0));\n return;\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.activeIndex.update(i => (i > 0 ? i - 1 : filtered.length - 1));\n return;\n }\n if (event.key === 'Enter' && this.activeIndex() >= 0) {\n event.preventDefault();\n this.toggleOption(filtered[this.activeIndex()]);\n return;\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n this.closeDropdown();\n this.triggerRef()?.nativeElement.focus();\n return;\n }\n if (event.key === 'Backspace' && !this.searchQuery() && this.value().length > 0) {\n this.removeChip(this.value().length - 1);\n }\n }\n\n onTriggerClick(): void {\n this.toggleDropdown();\n }\n\n onTriggerKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.toggleDropdown();\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.openDropdown();\n }\n }\n\n onFocus(): void {\n this.focused.set(true);\n }\n\n onBlur(): void {\n setTimeout(() => {\n if (this.elementRef.nativeElement.contains(document.activeElement)) return;\n this.focused.set(false);\n this.closeDropdown();\n this.onTouched();\n }, 150);\n }\n\n onOptionMousedown(event: MouseEvent): void {\n event.preventDefault();\n }\n}\n","@if (label()) {\n <label class=\"ao-multiselect__label\">\n {{ label() }}\n @if (optional()) {\n <span class=\"ao-multiselect__optional\">(Optional)</span>\n }\n </label>\n}\n\n<div class=\"ao-multiselect__container\">\n <div\n #trigger\n class=\"ao-multiselect__trigger\"\n tabindex=\"0\"\n role=\"combobox\"\n [attr.aria-expanded]=\"showDropdown()\"\n [attr.aria-disabled]=\"disabled()\"\n (click)=\"onTriggerClick()\"\n (keydown)=\"onTriggerKeydown($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n >\n <div class=\"ao-multiselect__values\">\n @for (option of selectedOptions(); track option.value; let i = $index) {\n <span class=\"ao-multiselect__chip\">\n <span class=\"ao-multiselect__chip-text\">{{ option.label }}</span>\n <button\n type=\"button\"\n class=\"ao-multiselect__chip-remove\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"removeChip(i); $event.stopPropagation()\"\n >\n <ao-icon [svg]=\"closeIcon\" size=\"sm\" />\n </button>\n </span>\n }\n @if (!hasValue()) {\n <span class=\"ao-multiselect__placeholder\">{{ placeholder() }}</span>\n }\n </div>\n\n @if (readonly() && !hasError()) {\n <ao-icon class=\"ao-multiselect__icon ao-multiselect__icon--lock\" [svg]=\"lockIcon\" />\n } @else if (hasError()) {\n <ao-icon class=\"ao-multiselect__icon ao-multiselect__icon--warning\" [svg]=\"warningIcon\" />\n } @else {\n <ao-icon class=\"ao-multiselect__icon ao-multiselect__icon--caret\" [svg]=\"caretIcon\" />\n }\n </div>\n\n @if (showDropdown()) {\n <div class=\"ao-multiselect__dropdown\" (mousedown)=\"onOptionMousedown($event)\">\n <div class=\"ao-multiselect__search\">\n <input\n #searchInput\n class=\"ao-multiselect__search-input\"\n type=\"text\"\n placeholder=\"Suchen...\"\n [value]=\"searchQuery()\"\n (input)=\"onSearchInput($event)\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur()\"\n />\n </div>\n\n <ul class=\"ao-multiselect__options\" role=\"listbox\" aria-multiselectable=\"true\">\n @for (option of filteredOptions(); track option.value; let i = $index) {\n <li\n class=\"ao-multiselect__option\"\n [class.ao-multiselect__option--active]=\"activeIndex() === i\"\n [class.ao-multiselect__option--disabled]=\"option.disabled\"\n [class.ao-multiselect__option--selected]=\"isSelected(option.value)\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(option.value)\"\n [attr.aria-disabled]=\"option.disabled\"\n (click)=\"toggleOption(option)\"\n >\n <span class=\"ao-multiselect__option-checkbox\">\n @if (isSelected(option.value)) {\n <ao-icon [svg]=\"checkIcon\" size=\"sm\" />\n }\n </span>\n <span class=\"ao-multiselect__option-label\">{{ option.label }}</span>\n </li>\n } @empty {\n <li class=\"ao-multiselect__no-results\">Keine Ergebnisse</li>\n }\n </ul>\n </div>\n }\n</div>\n\n@if (hasError()) {\n <span class=\"ao-multiselect__error\">{{ error() }}</span>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input,\n model,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { phosphorCheck } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'ao-checkbox',\n imports: [IconComponent],\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true,\n },\n ],\n host: {\n class: 'ao-checkbox',\n '[class.ao-checkbox--checked]': 'checked()',\n '[class.ao-checkbox--disabled]': 'disabled()',\n '(click)': 'toggle()',\n '(keydown.space)': 'toggle(); $event.preventDefault()',\n '(keydown.enter)': 'toggle(); $event.preventDefault()',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '[attr.role]': '\"checkbox\"',\n '[attr.aria-checked]': 'checked()',\n '[attr.aria-disabled]': 'disabled()',\n },\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n readonly label = input<string>('');\n readonly checked = model<boolean>(false);\n readonly disabled = model<boolean>(false);\n protected readonly checkIcon = phosphorCheck;\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: boolean): void {\n this.checked.set(!!value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n toggle(): void {\n if (this.disabled()) return;\n const newValue = !this.checked();\n this.checked.set(newValue);\n this.onChange(newValue);\n this.onTouched();\n }\n}\n","<span class=\"ao-checkbox__box\">\n @if (checked()) {\n <ao-icon [svg]=\"checkIcon\" size=\"sm\" />\n }\n</span>\n@if (label()) {\n <span class=\"ao-checkbox__label\">{{ label() }}</span>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n input,\n viewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'ao-tab-panel',\n template: `<ng-template #content><ng-content /></ng-template>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabPanelComponent {\n readonly id = input.required<string>();\n readonly label = input.required<string>();\n readonly icon = input<string>();\n readonly disabled = input<boolean>(false);\n readonly panelContent = viewChild.required<TemplateRef<unknown>>('content');\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n effect,\n inject,\n Injector,\n model,\n output,\n runInInjectionContext,\n untracked,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\nimport { TabPanelComponent } from './tab-panel.component';\nimport { TabChangeEvent } from './tabs.types';\n\n@Component({\n selector: 'ao-tabs',\n imports: [NgTemplateOutlet, IconComponent],\n templateUrl: './tabs.component.html',\n styleUrl: './tabs.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-tabs',\n },\n})\nexport class TabsComponent implements AfterViewInit {\n readonly activeTab = model<string>('');\n readonly tabChange = output<TabChangeEvent>();\n readonly panels = contentChildren(TabPanelComponent);\n readonly injector = inject(Injector);\n\n ngAfterViewInit(): void {\n runInInjectionContext(this.injector, () => {\n effect(() => {\n const panelList = this.panels();\n const currentActiveTab = untracked(() => this.activeTab());\n if (panelList.length > 0 && !currentActiveTab) {\n const firstEnabled = panelList.find(p => !p.disabled());\n if (firstEnabled) {\n this.activeTab.set(firstEnabled.id());\n }\n }\n });\n });\n }\n\n selectTab(panel: TabPanelComponent): void {\n if (panel.disabled() || panel.id() === this.activeTab()) {\n return;\n }\n const previousTabId = this.activeTab() || null;\n this.activeTab.set(panel.id());\n this.tabChange.emit({ previousTabId, currentTabId: panel.id() });\n }\n\n onKeydown(event: KeyboardEvent, currentPanel: TabPanelComponent): void {\n const enabledPanels = this.panels().filter(p => !p.disabled());\n const currentIndex = enabledPanels.findIndex(p => p.id() === currentPanel.id());\n if (currentIndex === -1) return;\n let targetIndex: number | null = null;\n switch (event.key) {\n case 'ArrowLeft':\n targetIndex = currentIndex > 0 ? currentIndex - 1 : enabledPanels.length - 1;\n break;\n case 'ArrowRight':\n targetIndex = currentIndex < enabledPanels.length - 1 ? currentIndex + 1 : 0;\n break;\n case 'Home':\n targetIndex = 0;\n break;\n case 'End':\n targetIndex = enabledPanels.length - 1;\n break;\n default:\n return;\n }\n event.preventDefault();\n const targetPanel = enabledPanels[targetIndex];\n this.selectTab(targetPanel);\n this.focusTab(targetPanel.id());\n }\n\n private focusTab(tabId: string): void {\n const tabEl = document.querySelector(`[data-tab-id=\"${tabId}\"]`) as HTMLElement | null;\n tabEl?.focus();\n }\n}\n","<div class=\"ao-tabs__header\" role=\"tablist\">\n @for (panel of panels(); track panel.id()) {\n <button\n class=\"ao-tabs__tab\"\n role=\"tab\"\n type=\"button\"\n [class.ao-tabs__tab--active]=\"panel.id() === activeTab()\"\n [class.ao-tabs__tab--disabled]=\"panel.disabled()\"\n [attr.aria-selected]=\"panel.id() === activeTab()\"\n [attr.aria-controls]=\"'panel-' + panel.id()\"\n [attr.aria-disabled]=\"panel.disabled()\"\n [attr.data-tab-id]=\"panel.id()\"\n [attr.tabindex]=\"panel.id() === activeTab() ? 0 : -1\"\n [disabled]=\"panel.disabled()\"\n (click)=\"selectTab(panel)\"\n (keydown)=\"onKeydown($event, panel)\"\n >\n @if (panel.icon()) {\n <ao-icon [svg]=\"panel.icon()!\" size=\"sm\" />\n }\n {{ panel.label() }}\n </button>\n }\n</div>\n<div class=\"ao-tabs__content\">\n @for (panel of panels(); track panel.id()) {\n <div\n class=\"ao-tabs__panel\"\n role=\"tabpanel\"\n [id]=\"'panel-' + panel.id()\"\n [attr.aria-labelledby]=\"panel.id()\"\n [class.ao-tabs__panel--active]=\"panel.id() === activeTab()\"\n [attr.hidden]=\"panel.id() !== activeTab() ? true : null\"\n >\n @if (panel.id() === activeTab()) {\n <ng-container [ngTemplateOutlet]=\"panel.panelContent()\" />\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n model,\n output,\n} from '@angular/core';\nimport { IconComponent } from '../../icon/icon.component';\nimport { NavItem, NavItemChangeEvent } from '../navigation.types';\n\n@Component({\n selector: 'ao-side-nav',\n imports: [IconComponent],\n templateUrl: './side-nav.component.html',\n styleUrl: './side-nav.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ao-side-nav',\n '[class.ao-side-nav--expanded]': 'expanded()',\n },\n})\nexport class SideNavComponent {\n readonly items = input<NavItem[]>([]);\n readonly bottomItems = input<NavItem[]>([]);\n readonly activeItemId = model<string>('');\n readonly expanded = input<boolean>(false);\n readonly itemClick = output<NavItem>();\n readonly itemChange = output<NavItemChangeEvent>();\n readonly bottomItemClick = output<NavItem>();\n\n protected onItemClick(item: NavItem): void {\n if (item.disabled || item.id === this.activeItemId()) {\n return;\n }\n const previousItem = this.items().find((i) => i.id === this.activeItemId()) ?? null;\n this.activeItemId.set(item.id);\n this.itemClick.emit(item);\n this.itemChange.emit({ item, previousItem });\n }\n\n protected onBottomItemClick(item: NavItem): void {\n if (item.disabled) {\n return;\n }\n this.bottomItemClick.emit(item);\n this.itemClick.emit(item);\n }\n\n protected onKeydown(event: KeyboardEvent, currentItem: NavItem): void {\n const enabledItems = this.items().filter((i) => !i.disabled);\n const currentIndex = enabledItems.findIndex((i) => i.id === currentItem.id);\n if (currentIndex === -1) return;\n let targetIndex: number | null = null;\n switch (event.key) {\n case 'ArrowUp':\n targetIndex = currentIndex > 0 ? currentIndex - 1 : enabledItems.length - 1;\n break;\n case 'ArrowDown':\n targetIndex = currentIndex < enabledItems.length - 1 ? currentIndex + 1 : 0;\n break;\n case 'Home':\n targetIndex = 0;\n break;\n case 'End':\n targetIndex = enabledItems.length - 1;\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.onItemClick(currentItem);\n return;\n default:\n return;\n }\n event.preventDefault();\n const targetItem = enabledItems[targetIndex];\n this.onItemClick(targetItem);\n this.focusItem(targetItem.id);\n }\n\n private focusItem(itemId: string): void {\n const itemEl = document.querySelector(\n `[data-nav-id=\"${itemId}\"]`\n ) as HTMLElement | null;\n itemEl?.focus();\n }\n}\n","<nav class=\"side-nav\" role=\"navigation\" aria-label=\"Side navigation\">\n <div class=\"side-nav__header\">\n <div class=\"side-nav__logo\">\n <ng-content select=\"[aoSideNavLogo]\" />\n </div>\n </div>\n\n <ul class=\"side-nav__list\" role=\"menu\">\n @for (item of items(); track item.id) {\n @if (item.separator) {\n <li role=\"separator\" class=\"side-nav__separator\"></li>\n } @else {\n <li role=\"none\">\n <a\n class=\"side-nav__item\"\n [class.side-nav__item--active]=\"item.id === activeItemId()\"\n [class.side-nav__item--disabled]=\"item.disabled\"\n [class.side-nav__item--highlight]=\"item.highlight\"\n [attr.href]=\"item.route ?? null\"\n [attr.data-nav-id]=\"item.id\"\n [attr.aria-current]=\"item.id === activeItemId() ? 'page' : null\"\n [attr.aria-disabled]=\"item.disabled || null\"\n [attr.tabindex]=\"item.disabled ? -1 : 0\"\n [attr.title]=\"item.tooltip ?? item.label\"\n role=\"menuitem\"\n (click)=\"$event.preventDefault(); onItemClick(item)\"\n (keydown)=\"onKeydown($event, item)\"\n >\n @if (item.icon) {\n <ao-icon [svg]=\"item.icon\" size=\"sm\" class=\"side-nav__icon\" />\n }\n <span class=\"side-nav__label\">{{ item.label }}</span>\n </a>\n </li>\n }\n }\n </ul>\n\n @if (bottomItems().length > 0) {\n <div class=\"side-nav__bottom\">\n @for (item of bottomItems(); track item.id) {\n <button\n type=\"button\"\n class=\"side-nav__bottom-item\"\n [class.side-nav__bottom-item--disabled]=\"item.disabled\"\n [attr.data-nav-id]=\"item.id\"\n [attr.aria-disabled]=\"item.disabled || null\"\n [attr.title]=\"item.tooltip ?? item.label\"\n [disabled]=\"item.disabled\"\n (click)=\"onBottomItemClick(item)\"\n >\n @if (item.icon) {\n <ao-icon [svg]=\"item.icon\" size=\"lg\" />\n }\n </button>\n }\n </div>\n }\n</nav>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostListener,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport {\n phosphorArrowRight,\n phosphorCaretRight,\n phosphorMicrophone,\n phosphorSparkle,\n phosphorX,\n} from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../../icon/icon.component';\nimport {\n PageSuggestion,\n RecommendedFilter,\n SearchResult,\n SearchResultGroup,\n SearchSubmitEvent,\n} from '../navigation.types';\n\ntype SpeechRecognitionFactory = new () => BrowserSpeechRecognition;\n\ninterface SpeechRecognitionScope {\n SpeechRecognition?: SpeechRecognitionFactory;\n webkitSpeechRecognition?: SpeechRecognitionFactory;\n}\n\ninterface BrowserSpeechRecognition {\n continuous: boolean;\n interimResults: boolean;\n lang: string;\n onend: (() => void) | null;\n onerror: ((event: BrowserSpeechRecognitionErrorEvent) => void) | null;\n onresult: ((event: BrowserSpeechRecognitionEvent) => void) | null;\n abort(): void;\n start(): void;\n stop(): void;\n}\n\ninterface BrowserSpeechRecognitionAlternative {\n readonly transcript: string;\n}\n\ninterface BrowserSpeechRecognitionErrorEvent {\n readonly error: string;\n}\n\ninterface BrowserSpeechRecognitionEvent {\n readonly resultIndex: number;\n readonly results: BrowserSpeechRecognitionResultList;\n}\n\ninterface BrowserSpeechRecognitionResult {\n readonly isFinal: boolean;\n readonly length: number;\n item(index: number): BrowserSpeechRecognitionAlternative;\n}\n\ninterface BrowserSpeechRecognitionResultList {\n readonly length: number;\n item(index: number): BrowserSpeechRecognitionResult;\n}\n\nconst MAX_VISIBLE_RESULTS = 10;\n\n@Component({\n selector: 'ao-ai-search',\n imports: [IconComponent],\n templateUrl: './ai-search.component.html',\n styleUrl: './ai-search.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-ai-search',\n },\n})\nexport class AiSearchComponent {\n private readonly sanitizer = inject(DomSanitizer);\n private readonly hostRef = inject(ElementRef<HTMLElement>);\n\n readonly placeholder = input<string>('Suche oder Prompt');\n readonly value = model<string>('');\n readonly disabled = input<boolean>(false);\n readonly recommendedFilters = input<RecommendedFilter[]>([]);\n readonly activeFilter = model<RecommendedFilter | null>(null);\n readonly resultGroups = input<SearchResultGroup[]>([]);\n readonly pageSuggestion = input<PageSuggestion | null>(null);\n readonly aiSuggestions = input<SearchResult[]>([]);\n readonly loading = input<boolean>(false);\n readonly error = input<string | null>(null);\n readonly panelOpen = model<boolean>(false);\n readonly voiceLanguage = input<string>('de-DE');\n\n readonly submit = output<SearchSubmitEvent>();\n readonly voiceStart = output<void>();\n readonly queryChange = output<string>();\n readonly filterSelect = output<RecommendedFilter>();\n readonly filterClear = output<void>();\n readonly resultSelect = output<SearchResult>();\n readonly aiSuggestionSelect = output<SearchResult>();\n readonly pageSuggestionSelect = output<PageSuggestion>();\n readonly viewAllClick = output<string>();\n\n protected readonly sparkleIcon = phosphorSparkle;\n protected readonly micIcon = phosphorMicrophone;\n protected readonly caretRightIcon = phosphorCaretRight;\n protected readonly arrowRightIcon = phosphorArrowRight;\n protected readonly closeIcon = phosphorX;\n protected readonly isVoiceRecording = signal<boolean>(false);\n protected readonly voiceError = signal<string | null>(null);\n protected readonly voiceButtonLabel = computed(() =>\n this.isVoiceRecording() ? 'Voice input stoppen' : 'Voice input starten'\n );\n protected readonly effectiveError = computed(() => this.voiceError() ?? this.error());\n\n private readonly searchInput = viewChild<ElementRef<HTMLInputElement>>('searchInput');\n private speechRecognition: BrowserSpeechRecognition | null = null;\n private currentVoiceTranscript = '';\n\n protected readonly visibleResultGroups = computed<SearchResultGroup[]>(() => {\n let remaining = MAX_VISIBLE_RESULTS;\n return this.resultGroups().reduce<SearchResultGroup[]>((groups, group) => {\n if (remaining <= 0) {\n return groups;\n }\n const results = group.results.slice(0, remaining);\n if (results.length === 0) {\n return groups;\n }\n remaining -= results.length;\n groups.push({ ...group, results });\n return groups;\n }, []);\n });\n\n protected readonly visibleAiSuggestions = computed<SearchResult[]>(() => {\n const visibleGroupCount = this.visibleResultGroups().reduce(\n (total, group) => total + group.results.length,\n 0\n );\n const remaining = Math.max(MAX_VISIBLE_RESULTS - visibleGroupCount, 0);\n return this.aiSuggestions().slice(0, remaining);\n });\n\n protected readonly visibleResultCount = computed(\n () =>\n this.visibleResultGroups().reduce((total, group) => total + group.results.length, 0) +\n this.visibleAiSuggestions().length\n );\n\n protected readonly totalResultCount = computed(\n () =>\n this.resultGroups().reduce((total, group) => total + this.getGroupResultCount(group), 0) +\n this.aiSuggestions().length\n );\n\n protected readonly hasMoreResults = computed(() => this.totalResultCount() > MAX_VISIBLE_RESULTS);\n\n protected readonly resultSummary = computed(() => {\n const total = this.totalResultCount();\n if (total === 1) {\n return '1 Ergebnis';\n }\n if (this.hasMoreResults()) {\n return `${this.visibleResultCount()} von ${total} Ergebnissen`;\n }\n return `${total} Ergebnisse`;\n });\n\n protected readonly hasAnyResults = computed(\n () => this.totalResultCount() > 0 || this.pageSuggestion() !== null\n );\n\n protected readonly showNoResults = computed(\n () =>\n this.value().trim().length > 0 &&\n !this.loading() &&\n this.effectiveError() === null &&\n !this.hasAnyResults()\n );\n\n protected readonly showRecommendedFilters = computed(\n () => this.activeFilter() === null && this.recommendedFilters().length > 0\n );\n\n protected readonly effectivePlaceholder = computed(() => {\n const filter = this.activeFilter();\n if (filter) {\n return `Suche in ${filter.label}…`;\n }\n return this.placeholder();\n });\n\n protected readonly hasPanelContent = computed(() => {\n if (this.effectiveError() !== null) {\n return true;\n }\n if (this.value().length === 0) {\n return this.showRecommendedFilters();\n }\n return this.hasAnyResults() || this.loading() || this.showNoResults();\n });\n\n @HostListener('document:click', ['$event'])\n protected onDocumentClick(event: MouseEvent): void {\n if (!this.panelOpen()) {\n return;\n }\n const target = event.target as Node | null;\n if (target && !this.hostRef.nativeElement.contains(target)) {\n this.panelOpen.set(false);\n }\n }\n\n protected onFocus(): void {\n this.panelOpen.set(true);\n }\n\n protected onInput(event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n const next = inputEl.value;\n this.voiceError.set(null);\n this.value.set(next);\n this.panelOpen.set(true);\n this.queryChange.emit(next);\n }\n\n protected onEnter(): void {\n const query = this.value().trim();\n if (query) {\n this.submit.emit({ query, isVoiceInput: false, filter: this.activeFilter() });\n this.panelOpen.set(false);\n }\n }\n\n protected onEscape(): void {\n this.panelOpen.set(false);\n }\n\n protected onBackspace(event: Event): void {\n if (this.value().length === 0 && this.activeFilter() !== null) {\n event.preventDefault();\n this.clearActiveFilter();\n }\n }\n\n protected onVoiceClick(): void {\n if (this.disabled()) {\n return;\n }\n if (this.isVoiceRecording()) {\n this.stopVoiceRecognition();\n return;\n }\n this.voiceStart.emit();\n this.startVoiceRecognition();\n }\n\n protected onFilterClick(filter: RecommendedFilter): void {\n this.activeFilter.set(filter);\n this.filterSelect.emit(filter);\n this.panelOpen.set(true);\n queueMicrotask(() => this.focus());\n }\n\n protected onChipRemove(event: MouseEvent): void {\n event.stopPropagation();\n this.clearActiveFilter();\n this.focus();\n }\n\n protected onResultClick(result: SearchResult): void {\n this.resultSelect.emit(result);\n this.panelOpen.set(false);\n }\n\n protected onAiSuggestionClick(result: SearchResult): void {\n this.aiSuggestionSelect.emit(result);\n this.panelOpen.set(false);\n }\n\n protected onPathClick(suggestion: PageSuggestion): void {\n this.pageSuggestionSelect.emit(suggestion);\n this.panelOpen.set(false);\n }\n\n protected onViewAll(): void {\n this.viewAllClick.emit(this.value().trim());\n this.panelOpen.set(false);\n }\n\n protected highlight(text: string): SafeHtml {\n const query = this.value().trim();\n if (!query) {\n return this.sanitizer.bypassSecurityTrustHtml(this.escapeHtml(text));\n }\n const escaped = this.escapeHtml(text);\n const pattern = new RegExp(this.escapeRegex(query), 'gi');\n const highlighted = escaped.replace(\n pattern,\n match => `<mark class=\"ai-search__hl\">${match}</mark>`\n );\n return this.sanitizer.bypassSecurityTrustHtml(highlighted);\n }\n\n focus(): void {\n this.searchInput()?.nativeElement.focus();\n }\n\n private startVoiceRecognition(): void {\n const Recognition = this.getSpeechRecognitionFactory();\n if (Recognition === null) {\n this.showVoiceError('Spracheingabe wird von diesem Browser nicht unterstützt');\n return;\n }\n try {\n const recognition = new Recognition();\n this.currentVoiceTranscript = '';\n recognition.continuous = false;\n recognition.interimResults = true;\n recognition.lang = this.voiceLanguage();\n recognition.onresult = (event): void => this.handleVoiceResult(event);\n recognition.onerror = (event): void => this.handleVoiceError(event);\n recognition.onend = (): void => this.handleVoiceEnd();\n this.speechRecognition = recognition;\n this.isVoiceRecording.set(true);\n this.voiceError.set(null);\n recognition.start();\n } catch (err: unknown) {\n console.warn('[AiSearch] voice input failed', err);\n this.showVoiceError('Spracheingabe konnte nicht gestartet werden');\n }\n }\n\n private stopVoiceRecognition(): void {\n this.speechRecognition?.stop();\n }\n\n private handleVoiceResult(event: BrowserSpeechRecognitionEvent): void {\n const transcript = this.getTranscript(event);\n if (!transcript) {\n return;\n }\n this.currentVoiceTranscript = transcript;\n this.value.set(transcript);\n this.panelOpen.set(true);\n this.voiceError.set(null);\n this.queryChange.emit(transcript);\n }\n\n private handleVoiceError(event: BrowserSpeechRecognitionErrorEvent): void {\n if (event.error === 'no-speech') {\n this.showVoiceError('Keine Sprache erkannt');\n return;\n }\n this.showVoiceError('Spracheingabe fehlgeschlagen');\n }\n\n private handleVoiceEnd(): void {\n const query = this.currentVoiceTranscript.trim();\n this.isVoiceRecording.set(false);\n this.speechRecognition = null;\n this.currentVoiceTranscript = '';\n if (!query) {\n return;\n }\n this.submit.emit({ query, isVoiceInput: true, filter: this.activeFilter() });\n this.panelOpen.set(false);\n }\n\n private getTranscript(event: BrowserSpeechRecognitionEvent): string {\n const parts: string[] = [];\n for (let i = 0; i < event.results.length; i++) {\n const result = event.results.item(i);\n if (result.length > 0) {\n parts.push(result.item(0).transcript);\n }\n }\n return parts.join(' ').trim();\n }\n\n private getSpeechRecognitionFactory(): SpeechRecognitionFactory | null {\n const scope = globalThis as unknown as SpeechRecognitionScope;\n return scope.SpeechRecognition ?? scope.webkitSpeechRecognition ?? null;\n }\n\n private showVoiceError(message: string): void {\n this.isVoiceRecording.set(false);\n this.currentVoiceTranscript = '';\n this.speechRecognition = null;\n this.voiceError.set(message);\n this.panelOpen.set(true);\n }\n\n private clearActiveFilter(): void {\n if (this.activeFilter() === null) {\n return;\n }\n this.activeFilter.set(null);\n this.filterClear.emit();\n }\n\n private getGroupResultCount(group: SearchResultGroup): number {\n return Math.max(group.totalCount ?? 0, group.results.length);\n }\n\n private escapeHtml(text: string): string {\n return text\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;');\n }\n\n private escapeRegex(text: string): string {\n return text.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n}\n","<div class=\"ai-search\" [class.ai-search--open]=\"panelOpen() && hasPanelContent()\">\n <ao-icon [svg]=\"sparkleIcon\" size=\"sm\" class=\"ai-search__icon-left\" />\n @if (activeFilter(); as f) {\n <span class=\"ai-search__active-chip\" role=\"status\">\n <span class=\"ai-search__active-chip-label\">{{ f.label }}</span>\n <button\n type=\"button\"\n class=\"ai-search__active-chip-remove\"\n [disabled]=\"disabled()\"\n (click)=\"onChipRemove($event)\"\n [attr.aria-label]=\"'Filter ' + f.label + ' entfernen'\"\n >\n <ao-icon [svg]=\"closeIcon\" size=\"xs\" />\n </button>\n </span>\n }\n <input\n #searchInput\n type=\"text\"\n class=\"ai-search__input\"\n [placeholder]=\"effectivePlaceholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n (focus)=\"onFocus()\"\n (input)=\"onInput($event)\"\n (keydown.enter)=\"onEnter()\"\n (keydown.escape)=\"onEscape()\"\n (keydown.backspace)=\"onBackspace($event)\"\n aria-label=\"AI Search\"\n autocomplete=\"off\"\n />\n <button\n type=\"button\"\n class=\"ai-search__voice-btn\"\n [class.ai-search__voice-btn--recording]=\"isVoiceRecording()\"\n [disabled]=\"disabled()\"\n (click)=\"onVoiceClick()\"\n [attr.aria-label]=\"voiceButtonLabel()\"\n [attr.aria-pressed]=\"isVoiceRecording()\"\n >\n <ao-icon [svg]=\"micIcon\" size=\"sm\" />\n </button>\n</div>\n\n@if (panelOpen() && hasPanelContent()) {\n <div class=\"ai-search__panel\" role=\"listbox\">\n @if (effectiveError(); as msg) {\n <div class=\"ai-search__panel-section ai-search__status ai-search__status--error\">\n {{ msg }}\n </div>\n } @else if (value().length === 0) {\n @if (showRecommendedFilters()) {\n <div class=\"ai-search__panel-section\">\n <h4 class=\"ai-search__section-title\">Empfohlene Filter</h4>\n <div class=\"ai-search__filter-chips\">\n @for (f of recommendedFilters(); track f.id) {\n <button type=\"button\" class=\"ai-search__filter-chip\" (click)=\"onFilterClick(f)\">\n {{ f.label }}\n </button>\n }\n </div>\n </div>\n }\n } @else {\n @if (loading() && !hasAnyResults()) {\n <div class=\"ai-search__panel-section ai-search__status\">\n <span class=\"ai-search__spinner\" aria-hidden=\"true\"></span>\n Suche läuft…\n </div>\n } @else if (showNoResults()) {\n <div class=\"ai-search__panel-section ai-search__status\">Keine Ergebnisse gefunden</div>\n }\n @if (pageSuggestion(); as p) {\n <div class=\"ai-search__panel-section\">\n <h4 class=\"ai-search__section-title\">Pfad</h4>\n <button type=\"button\" class=\"ai-search__path-row\" (click)=\"onPathClick(p)\">\n @for (crumb of p.breadcrumb; track crumb; let last = $last) {\n <span class=\"ai-search__path-crumb\">{{ crumb }}</span>\n @if (!last) {\n <ao-icon [svg]=\"caretRightIcon\" size=\"sm\" class=\"ai-search__path-sep\" />\n }\n }\n </button>\n </div>\n }\n @for (group of visibleResultGroups(); track group.type) {\n <div class=\"ai-search__panel-section\">\n <h4 class=\"ai-search__section-title\">{{ group.label }}</h4>\n @for (r of group.results; track r.id) {\n <button type=\"button\" class=\"ai-search__result-row\" (click)=\"onResultClick(r)\">\n <span class=\"ai-search__result-primary\" [innerHTML]=\"highlight(r.primary)\"></span>\n </button>\n }\n </div>\n }\n @if (visibleAiSuggestions().length) {\n <div class=\"ai-search__panel-section\">\n <h4 class=\"ai-search__section-title\">KI-Vorschläge</h4>\n @for (r of visibleAiSuggestions(); track r.id) {\n <button type=\"button\" class=\"ai-search__ai-row\" (click)=\"onAiSuggestionClick(r)\">\n <ao-icon [svg]=\"sparkleIcon\" size=\"sm\" class=\"ai-search__ai-icon\" />\n <span [innerHTML]=\"highlight(r.primary)\"></span>\n </button>\n }\n </div>\n }\n @if (totalResultCount() > 0) {\n <div class=\"ai-search__result-summary\">\n {{ resultSummary() }}\n </div>\n }\n @if (hasMoreResults()) {\n <button type=\"button\" class=\"ai-search__view-all\" (click)=\"onViewAll()\">\n <span>Alle {{ totalResultCount() }} Ergebnisse anzeigen</span>\n <ao-icon [svg]=\"arrowRightIcon\" size=\"sm\" />\n </button>\n }\n }\n </div>\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { phosphorBell } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../../icon/icon.component';\n\n@Component({\n selector: 'ao-notification-button',\n imports: [IconComponent],\n template: `\n <button\n type=\"button\"\n class=\"notification-btn\"\n [disabled]=\"disabled()\"\n (click)=\"buttonClick.emit()\"\n aria-label=\"Notifications\"\n >\n <ao-icon [svg]=\"bellIcon\" size=\"sm\" />\n @if (count() > 0) {\n <span class=\"notification-btn__badge\">\n {{ displayCount() }}\n </span>\n }\n </button>\n `,\n styleUrl: './notification-button.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-notification-button',\n },\n})\nexport class NotificationButtonComponent {\n readonly count = input<number>(0);\n readonly maxCount = input<number>(99);\n readonly disabled = input<boolean>(false);\n readonly buttonClick = output<void>();\n protected readonly bellIcon = phosphorBell;\n\n protected displayCount(): string {\n const currentCount = this.count();\n const max = this.maxCount();\n return currentCount > max ? `${max}+` : `${currentCount}`;\n }\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { Injectable } from '@angular/core';\n\n/**\n * Global configuration\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class HandbookConfiguration {\n rootUrl: string = '';\n}\n\n/**\n * Parameters for `HandbookModule.forRoot()`\n */\nexport interface HandbookConfigurationParams {\n rootUrl?: string;\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpRequest, HttpParameterCodec, HttpParams, HttpHeaders, HttpContext } from '@angular/common/http';\n\n/**\n * Custom parameter codec to correctly handle the plus sign in parameter\n * values. See https://github.com/angular/angular/issues/18261\n */\nclass ParameterCodec implements HttpParameterCodec {\n encodeKey(key: string): string {\n return encodeURIComponent(key);\n }\n\n encodeValue(value: string): string {\n return encodeURIComponent(value);\n }\n\n decodeKey(key: string): string {\n return decodeURIComponent(key);\n }\n\n decodeValue(value: string): string {\n return decodeURIComponent(value);\n }\n}\nconst ParameterCodecInstance = new ParameterCodec();\n\n/**\n * Defines the options for appending a parameter\n */\ninterface ParameterOptions {\n style?: string;\n explode?: boolean;\n}\n\n/**\n * Base class for a parameter\n */\nabstract class Parameter {\n constructor(public name: string, public value: any, public options: ParameterOptions, defaultStyle: string, defaultExplode: boolean) {\n this.options = options || {};\n if (this.options.style === null || this.options.style === undefined) {\n this.options.style = defaultStyle;\n }\n if (this.options.explode === null || this.options.explode === undefined) {\n this.options.explode = defaultExplode;\n }\n }\n\n serializeValue(value: any, separator = ','): string {\n if (value === null || value === undefined) {\n return '';\n } else if (value instanceof Array) {\n return value.map(v => this.serializeValue(v).split(separator).join(encodeURIComponent(separator))).join(separator);\n } else if (typeof value === 'object') {\n const array: string[] = [];\n for (const key of Object.keys(value)) {\n let propVal = value[key];\n if (propVal !== null && propVal !== undefined) {\n propVal = this.serializeValue(propVal).split(separator).join(encodeURIComponent(separator));\n if (this.options.explode) {\n array.push(`${key}=${propVal}`);\n } else {\n array.push(key);\n array.push(propVal);\n }\n }\n }\n return array.join(separator);\n } else {\n return String(value);\n }\n }\n}\n\n/**\n * A parameter in the operation path\n */\nclass PathParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'simple', false);\n }\n\n append(path: string): string {\n let value = this.value;\n if (value === null || value === undefined) {\n value = '';\n }\n let prefix = this.options.style === 'label' ? '.' : '';\n let separator = this.options.explode ? prefix === '' ? ',' : prefix : ',';\n let alreadySerialized = false;\n if (this.options.style === 'matrix') {\n // The parameter name is just used as prefix, except in some cases...\n prefix = `;${this.name}=`;\n if (this.options.explode && typeof value === 'object') {\n prefix = ';';\n if (value instanceof Array) {\n // For arrays we have to repeat the name for each element\n value = value.map(v => `${this.name}=${this.serializeValue(v, ';')}`);\n value = value.join(';');\n alreadySerialized = true;\n } else {\n // For objects we have to put each the key / value pairs\n value = this.serializeValue(value, ';');\n alreadySerialized = true\n }\n }\n }\n value = prefix + (alreadySerialized ? value : this.serializeValue(value, separator));\n // Replace both the plain variable and the corresponding variant taking in the prefix and explode into account\n path = path.replace(`{${this.name}}`, value);\n path = path.replace(`{${prefix}${this.name}${this.options.explode ? '*' : ''}}`, value);\n return path;\n }\n\n // @ts-ignore\n serializeValue(value: any, separator = ','): string {\n var result = typeof value === 'string' ? encodeURIComponent(value) : super.serializeValue(value, separator);\n result = result.replace(/%3D/g, '=');\n result = result.replace(/%3B/g, ';');\n result = result.replace(/%2C/g, ',');\n return result;\n }\n}\n\n/**\n * A parameter in the query\n */\nclass QueryParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'form', true);\n }\n\n append(params: HttpParams): HttpParams {\n if (this.value instanceof Array) {\n // Array serialization\n if (this.options.explode) {\n for (const v of this.value) {\n params = params.append(this.name, this.serializeValue(v));\n }\n } else {\n const separator = this.options.style === 'spaceDelimited'\n ? ' ' : this.options.style === 'pipeDelimited'\n ? '|' : ',';\n return params.append(this.name, this.serializeValue(this.value, separator));\n }\n } else if (this.value !== null && typeof this.value === 'object') {\n // Object serialization\n if (this.options.style === 'deepObject') {\n // Append a parameter for each key, in the form `name[key]`\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n params = params.append(`${this.name}[${key}]`, this.serializeValue(propVal));\n }\n }\n } else if (this.options.explode) {\n // Append a parameter for each key without using the parameter name\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n params = params.append(key, this.serializeValue(propVal));\n }\n }\n } else {\n // Append a single parameter whose values are a comma-separated list of key,value,key,value...\n const array: any[] = [];\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n array.push(key);\n array.push(propVal);\n }\n }\n params = params.append(this.name, this.serializeValue(array));\n }\n } else if (this.value !== null && this.value !== undefined) {\n // Plain value\n params = params.append(this.name, this.serializeValue(this.value));\n }\n return params;\n }\n}\n\n/**\n * A parameter in the HTTP request header\n */\nclass HeaderParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'simple', false);\n }\n\n append(headers: HttpHeaders): HttpHeaders {\n if (this.value !== null && this.value !== undefined) {\n if (this.value instanceof Array) {\n for (const v of this.value) {\n headers = headers.append(this.name, this.serializeValue(v));\n }\n } else {\n headers = headers.append(this.name, this.serializeValue(this.value));\n }\n }\n return headers;\n }\n}\n\n/**\n * Helper to build http requests from parameters\n */\nexport class HandbookRequestBuilder {\n\n private _path = new Map<string, PathParameter>();\n private _query = new Map<string, QueryParameter>();\n private _header = new Map<string, HeaderParameter>();\n _bodyContent: any | null;\n _bodyContentType?: string;\n\n constructor(\n public rootUrl: string,\n public operationPath: string,\n public method: string) {\n }\n\n /**\n * Sets a path parameter\n */\n path(name: string, value: any, options?: ParameterOptions): void {\n this._path.set(name, new PathParameter(name, value, options || {}));\n }\n\n /**\n * Sets a query parameter\n */\n query(name: string, value: any, options?: ParameterOptions): void {\n this._query.set(name, new QueryParameter(name, value, options || {}));\n }\n\n /**\n * Sets a header parameter\n */\n header(name: string, value: any, options?: ParameterOptions): void {\n this._header.set(name, new HeaderParameter(name, value, options || {}));\n }\n\n /**\n * Sets the body content, along with the content type\n */\n body(value: any, contentType = 'application/json'): void {\n if (value instanceof Blob) {\n this._bodyContentType = value.type;\n } else {\n this._bodyContentType = contentType;\n }\n if (this._bodyContentType === 'application/x-www-form-urlencoded' && value !== null && typeof value === 'object') {\n // Handle URL-encoded data\n const pairs: Array<[string, string]> = [];\n for (const key of Object.keys(value)) {\n let val = value[key];\n if (!(val instanceof Array)) {\n val = [val];\n }\n for (const v of val) {\n const formValue = this.formDataValue(v);\n if (formValue !== null) {\n pairs.push([key, formValue]);\n }\n }\n }\n this._bodyContent = pairs.map(p => `${encodeURIComponent(p[0])}=${encodeURIComponent(p[1])}`).join('&');\n } else if (this._bodyContentType === 'multipart/form-data') {\n // Handle multipart form data\n const formData = new FormData();\n if (value !== null && value !== undefined) {\n for (const key of Object.keys(value)) {\n const val = value[key];\n if (val instanceof Array) {\n for (const v of val) {\n const toAppend = this.formDataValue(v);\n if (toAppend !== null) {\n formData.append(key, toAppend);\n }\n }\n } else {\n const toAppend = this.formDataValue(val);\n if (toAppend !== null) {\n formData.set(key, toAppend);\n }\n }\n }\n }\n this._bodyContent = formData;\n } else {\n // The body is the plain content\n this._bodyContent = value;\n }\n }\n\n private formDataValue(value: any): any {\n if (value === null || value === undefined) {\n return null;\n }\n if (value instanceof Blob) {\n return value;\n }\n if (typeof value === 'object') {\n return new Blob([JSON.stringify(value)], {type: 'application/json'})\n }\n return String(value);\n }\n\n /**\n * Builds the request with the current set parameters\n */\n build<T = any>(options?: {\n /** Which content types to accept */\n accept?: string;\n\n /** The expected response type */\n responseType?: 'json' | 'text' | 'blob' | 'arraybuffer';\n\n /** Whether to report progress on uploads / downloads */\n reportProgress?: boolean;\n\n /** Allow passing HttpContext for HttpClient */\n context?: HttpContext;\n }): HttpRequest<T> {\n\n options = options || {};\n\n // Path parameters\n let path = this.operationPath;\n for (const pathParam of this._path.values()) {\n path = pathParam.append(path);\n }\n const url = this.rootUrl + path;\n\n // Query parameters\n let httpParams = new HttpParams({\n encoder: ParameterCodecInstance\n });\n for (const queryParam of this._query.values()) {\n httpParams = queryParam.append(httpParams);\n }\n\n // Header parameters\n let httpHeaders = new HttpHeaders();\n if (options.accept) {\n httpHeaders = httpHeaders.append('Accept', options.accept);\n }\n for (const headerParam of this._header.values()) {\n httpHeaders = headerParam.append(httpHeaders);\n }\n\n // Request content headers\n if (this._bodyContentType && !(this._bodyContent instanceof FormData)) {\n httpHeaders = httpHeaders.set('Content-Type', this._bodyContentType);\n }\n\n // Perform the request\n return new HttpRequest<T>(this.method.toUpperCase(), url, this._bodyContent, {\n params: httpParams,\n headers: httpHeaders,\n responseType: options.responseType,\n reportProgress: options.reportProgress,\n context: options.context\n });\n }\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { HandbookConfiguration } from './handbook-configuration';\n\n/**\n * Base class for services\n */\n@Injectable()\nexport class HandbookBaseService {\n constructor(\n protected config: HandbookConfiguration,\n protected http: HttpClient\n ) {\n }\n\n private _rootUrl?: string;\n\n /**\n * Returns the root url for all operations in this service. If not set directly in this\n * service, will fallback to `HandbookConfiguration.rootUrl`.\n */\n get rootUrl(): string {\n return this._rootUrl || this.config.rootUrl;\n }\n\n /**\n * Sets the root URL for API operations in this service.\n */\n set rootUrl(rootUrl: string) {\n this._rootUrl = rootUrl;\n }\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\n\nexport interface AppControllerGetHealthCheck$Params {\n}\n\nexport function appControllerGetHealthCheck(http: HttpClient, rootUrl: string, params?: AppControllerGetHealthCheck$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const rb = new HandbookRequestBuilder(rootUrl, appControllerGetHealthCheck.PATH, 'get');\n if (params) {\n }\n\n return http.request(\n rb.build({ responseType: 'text', accept: '*/*', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return (r as HttpResponse<any>).clone({ body: undefined }) as HandbookHttpResponse<void>;\n })\n );\n}\n\nappControllerGetHealthCheck.PATH = '/handbook-api/health';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { HandbookBaseService } from '../handbook-base-service';\nimport { HandbookConfiguration } from '../handbook-configuration';\nimport { HandbookHttpResponse } from '../handbook-http-response';\n\nimport { appControllerGetHealthCheck } from '../fn/app/app-controller-get-health-check';\nimport { AppControllerGetHealthCheck$Params } from '../fn/app/app-controller-get-health-check';\n\n@Injectable({ providedIn: 'root' })\nexport class AppService extends HandbookBaseService {\n constructor(config: HandbookConfiguration, http: HttpClient) {\n super(config, http);\n }\n\n /** Path part for operation `appControllerGetHealthCheck()` */\n static readonly AppControllerGetHealthCheckPath = '/handbook-api/health';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `appControllerGetHealthCheck()` instead.\n *\n * This method doesn't expect any request body.\n */\n appControllerGetHealthCheck$Response(params?: AppControllerGetHealthCheck$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const obs = appControllerGetHealthCheck(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `appControllerGetHealthCheck$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n appControllerGetHealthCheck(params?: AppControllerGetHealthCheck$Params, context?: HttpContext): Observable<void> {\n const resp = this.appControllerGetHealthCheck$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<void>): void => r.body)\n );\n }\n\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { HandbookEntry } from '../../models/handbook-entry';\nimport { HandbookEntryDto } from '../../models/handbook-entry-dto';\n\nexport interface HandbookEntryControllerCreateHandbookEntry$Params {\n body: HandbookEntryDto\n}\n\nexport function handbookEntryControllerCreateHandbookEntry(http: HttpClient, rootUrl: string, params: HandbookEntryControllerCreateHandbookEntry$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const rb = new HandbookRequestBuilder(rootUrl, handbookEntryControllerCreateHandbookEntry.PATH, 'post');\n if (params) {\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<HandbookEntry>;\n })\n );\n}\n\nhandbookEntryControllerCreateHandbookEntry.PATH = '/handbook-api/handbook-entry';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { HandbookEntry } from '../../models/handbook-entry';\n\nexport interface HandbookEntryControllerDeleteHandbookEntry$Params {\n id: string;\n}\n\nexport function handbookEntryControllerDeleteHandbookEntry(http: HttpClient, rootUrl: string, params: HandbookEntryControllerDeleteHandbookEntry$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const rb = new HandbookRequestBuilder(rootUrl, handbookEntryControllerDeleteHandbookEntry.PATH, 'delete');\n if (params) {\n rb.path('id', params.id, {});\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<HandbookEntry>;\n })\n );\n}\n\nhandbookEntryControllerDeleteHandbookEntry.PATH = '/handbook-api/handbook-entry/{id}';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { HandbookEntry } from '../../models/handbook-entry';\n\nexport interface HandbookEntryControllerFindAllHandbookEntries$Params {\n}\n\nexport function handbookEntryControllerFindAllHandbookEntries(http: HttpClient, rootUrl: string, params?: HandbookEntryControllerFindAllHandbookEntries$Params, context?: HttpContext): Observable<HandbookHttpResponse<Array<HandbookEntry>>> {\n const rb = new HandbookRequestBuilder(rootUrl, handbookEntryControllerFindAllHandbookEntries.PATH, 'get');\n if (params) {\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<Array<HandbookEntry>>;\n })\n );\n}\n\nhandbookEntryControllerFindAllHandbookEntries.PATH = '/handbook-api/handbook-entry';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { HandbookOverviewResponse } from '../../models/handbook-overview-response';\n\nexport interface HandbookEntryControllerFindAllHandbookEntriesForOverview$Params {\n app: string;\n}\n\nexport function handbookEntryControllerFindAllHandbookEntriesForOverview(http: HttpClient, rootUrl: string, params: HandbookEntryControllerFindAllHandbookEntriesForOverview$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookOverviewResponse>> {\n const rb = new HandbookRequestBuilder(rootUrl, handbookEntryControllerFindAllHandbookEntriesForOverview.PATH, 'get');\n if (params) {\n rb.path('app', params.app, {});\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<HandbookOverviewResponse>;\n })\n );\n}\n\nhandbookEntryControllerFindAllHandbookEntriesForOverview.PATH = '/handbook-api/handbook-entry/overview/{app}';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { HandbookTagsResponse } from '../../models/handbook-tags-response';\n\nexport interface HandbookEntryControllerFindAllTags$Params {\n\n/**\n * The search query to filter handbook tags\n */\n searchQuery: string;\n}\n\nexport function handbookEntryControllerFindAllTags(http: HttpClient, rootUrl: string, params: HandbookEntryControllerFindAllTags$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookTagsResponse>> {\n const rb = new HandbookRequestBuilder(rootUrl, handbookEntryControllerFindAllTags.PATH, 'get');\n if (params) {\n rb.query('searchQuery', params.searchQuery, {});\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<HandbookTagsResponse>;\n })\n );\n}\n\nhandbookEntryControllerFindAllTags.PATH = '/handbook-api/handbook-entry/tags';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { HandbookEntry } from '../../models/handbook-entry';\n\nexport interface HandbookEntryControllerFindHandbookEntryById$Params {\n id: string;\n}\n\nexport function handbookEntryControllerFindHandbookEntryById(http: HttpClient, rootUrl: string, params: HandbookEntryControllerFindHandbookEntryById$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const rb = new HandbookRequestBuilder(rootUrl, handbookEntryControllerFindHandbookEntryById.PATH, 'get');\n if (params) {\n rb.path('id', params.id, {});\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<HandbookEntry>;\n })\n );\n}\n\nhandbookEntryControllerFindHandbookEntryById.PATH = '/handbook-api/handbook-entry/{id}';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { HandbookEntry } from '../../models/handbook-entry';\nimport { VoiceHandbookEntryDto } from '../../models/voice-handbook-entry-dto';\n\nexport interface HandbookEntryControllerGenerateHandbook$Params {\n body: VoiceHandbookEntryDto\n}\n\nexport function handbookEntryControllerGenerateHandbook(http: HttpClient, rootUrl: string, params: HandbookEntryControllerGenerateHandbook$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const rb = new HandbookRequestBuilder(rootUrl, handbookEntryControllerGenerateHandbook.PATH, 'post');\n if (params) {\n rb.body(params.body, 'multipart/form-data');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<HandbookEntry>;\n })\n );\n}\n\nhandbookEntryControllerGenerateHandbook.PATH = '/handbook-api/handbook-entry/generate-from-voice';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { HandbookEntry } from '../../models/handbook-entry';\nimport { VoiceHandbookEntryDto } from '../../models/voice-handbook-entry-dto';\n\nexport interface HandbookEntryControllerGenerateHandbookFromText$Params {\n body: VoiceHandbookEntryDto\n}\n\nexport function handbookEntryControllerGenerateHandbookFromText(http: HttpClient, rootUrl: string, params: HandbookEntryControllerGenerateHandbookFromText$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const rb = new HandbookRequestBuilder(rootUrl, handbookEntryControllerGenerateHandbookFromText.PATH, 'post');\n if (params) {\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<HandbookEntry>;\n })\n );\n}\n\nhandbookEntryControllerGenerateHandbookFromText.PATH = '/handbook-api/handbook-entry/generate-from-text';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { HandbookVoiceResponse } from '../../models/handbook-voice-response';\nimport { VoiceHandbookEntryDto } from '../../models/voice-handbook-entry-dto';\n\nexport interface HandbookEntryControllerGetTextFromVoice$Params {\n body: VoiceHandbookEntryDto\n}\n\nexport function handbookEntryControllerGetTextFromVoice(http: HttpClient, rootUrl: string, params: HandbookEntryControllerGetTextFromVoice$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookVoiceResponse>> {\n const rb = new HandbookRequestBuilder(rootUrl, handbookEntryControllerGetTextFromVoice.PATH, 'post');\n if (params) {\n rb.body(params.body, 'multipart/form-data');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<HandbookVoiceResponse>;\n })\n );\n}\n\nhandbookEntryControllerGetTextFromVoice.PATH = '/handbook-api/handbook-entry/get-text-from-voice';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { HandbookEntry } from '../../models/handbook-entry';\nimport { HandbookEntryDto } from '../../models/handbook-entry-dto';\n\nexport interface HandbookEntryControllerUpdateHandbookEntry$Params {\n id: string;\n body: HandbookEntryDto\n}\n\nexport function handbookEntryControllerUpdateHandbookEntry(http: HttpClient, rootUrl: string, params: HandbookEntryControllerUpdateHandbookEntry$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const rb = new HandbookRequestBuilder(rootUrl, handbookEntryControllerUpdateHandbookEntry.PATH, 'put');\n if (params) {\n rb.path('id', params.id, {});\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<HandbookEntry>;\n })\n );\n}\n\nhandbookEntryControllerUpdateHandbookEntry.PATH = '/handbook-api/handbook-entry/{id}';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { HandbookBaseService } from '../handbook-base-service';\nimport { HandbookConfiguration } from '../handbook-configuration';\nimport { HandbookHttpResponse } from '../handbook-http-response';\n\nimport { HandbookEntry } from '../models/handbook-entry';\nimport { handbookEntryControllerCreateHandbookEntry } from '../fn/handbook-entries/handbook-entry-controller-create-handbook-entry';\nimport { HandbookEntryControllerCreateHandbookEntry$Params } from '../fn/handbook-entries/handbook-entry-controller-create-handbook-entry';\nimport { handbookEntryControllerDeleteHandbookEntry } from '../fn/handbook-entries/handbook-entry-controller-delete-handbook-entry';\nimport { HandbookEntryControllerDeleteHandbookEntry$Params } from '../fn/handbook-entries/handbook-entry-controller-delete-handbook-entry';\nimport { handbookEntryControllerFindAllHandbookEntries } from '../fn/handbook-entries/handbook-entry-controller-find-all-handbook-entries';\nimport { HandbookEntryControllerFindAllHandbookEntries$Params } from '../fn/handbook-entries/handbook-entry-controller-find-all-handbook-entries';\nimport { handbookEntryControllerFindAllHandbookEntriesForOverview } from '../fn/handbook-entries/handbook-entry-controller-find-all-handbook-entries-for-overview';\nimport { HandbookEntryControllerFindAllHandbookEntriesForOverview$Params } from '../fn/handbook-entries/handbook-entry-controller-find-all-handbook-entries-for-overview';\nimport { handbookEntryControllerFindAllTags } from '../fn/handbook-entries/handbook-entry-controller-find-all-tags';\nimport { HandbookEntryControllerFindAllTags$Params } from '../fn/handbook-entries/handbook-entry-controller-find-all-tags';\nimport { handbookEntryControllerFindHandbookEntryById } from '../fn/handbook-entries/handbook-entry-controller-find-handbook-entry-by-id';\nimport { HandbookEntryControllerFindHandbookEntryById$Params } from '../fn/handbook-entries/handbook-entry-controller-find-handbook-entry-by-id';\nimport { handbookEntryControllerGenerateHandbook } from '../fn/handbook-entries/handbook-entry-controller-generate-handbook';\nimport { HandbookEntryControllerGenerateHandbook$Params } from '../fn/handbook-entries/handbook-entry-controller-generate-handbook';\nimport { handbookEntryControllerGenerateHandbookFromText } from '../fn/handbook-entries/handbook-entry-controller-generate-handbook-from-text';\nimport { HandbookEntryControllerGenerateHandbookFromText$Params } from '../fn/handbook-entries/handbook-entry-controller-generate-handbook-from-text';\nimport { handbookEntryControllerGetTextFromVoice } from '../fn/handbook-entries/handbook-entry-controller-get-text-from-voice';\nimport { HandbookEntryControllerGetTextFromVoice$Params } from '../fn/handbook-entries/handbook-entry-controller-get-text-from-voice';\nimport { handbookEntryControllerUpdateHandbookEntry } from '../fn/handbook-entries/handbook-entry-controller-update-handbook-entry';\nimport { HandbookEntryControllerUpdateHandbookEntry$Params } from '../fn/handbook-entries/handbook-entry-controller-update-handbook-entry';\nimport { HandbookOverviewResponse } from '../models/handbook-overview-response';\nimport { HandbookTagsResponse } from '../models/handbook-tags-response';\nimport { HandbookVoiceResponse } from '../models/handbook-voice-response';\n\n@Injectable({ providedIn: 'root' })\nexport class HandbookEntriesService extends HandbookBaseService {\n constructor(config: HandbookConfiguration, http: HttpClient) {\n super(config, http);\n }\n\n /** Path part for operation `handbookEntryControllerFindAllHandbookEntries()` */\n static readonly HandbookEntryControllerFindAllHandbookEntriesPath = '/handbook-api/handbook-entry';\n\n /**\n * Get all handbook entries.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `handbookEntryControllerFindAllHandbookEntries()` instead.\n *\n * This method doesn't expect any request body.\n */\n handbookEntryControllerFindAllHandbookEntries$Response(params?: HandbookEntryControllerFindAllHandbookEntries$Params, context?: HttpContext): Observable<HandbookHttpResponse<Array<HandbookEntry>>> {\n const obs = handbookEntryControllerFindAllHandbookEntries(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get all handbook entries.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `handbookEntryControllerFindAllHandbookEntries$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n handbookEntryControllerFindAllHandbookEntries(params?: HandbookEntryControllerFindAllHandbookEntries$Params, context?: HttpContext): Observable<Array<HandbookEntry>> {\n const resp = this.handbookEntryControllerFindAllHandbookEntries$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<Array<HandbookEntry>>): Array<HandbookEntry> => r.body)\n );\n }\n\n /** Path part for operation `handbookEntryControllerCreateHandbookEntry()` */\n static readonly HandbookEntryControllerCreateHandbookEntryPath = '/handbook-api/handbook-entry';\n\n /**\n * Create a new handbook entry.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `handbookEntryControllerCreateHandbookEntry()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n handbookEntryControllerCreateHandbookEntry$Response(params: HandbookEntryControllerCreateHandbookEntry$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const obs = handbookEntryControllerCreateHandbookEntry(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Create a new handbook entry.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `handbookEntryControllerCreateHandbookEntry$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n handbookEntryControllerCreateHandbookEntry(params: HandbookEntryControllerCreateHandbookEntry$Params, context?: HttpContext): Observable<HandbookEntry> {\n const resp = this.handbookEntryControllerCreateHandbookEntry$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<HandbookEntry>): HandbookEntry => r.body)\n );\n }\n\n /** Path part for operation `handbookEntryControllerFindAllHandbookEntriesForOverview()` */\n static readonly HandbookEntryControllerFindAllHandbookEntriesForOverviewPath = '/handbook-api/handbook-entry/overview/{app}';\n\n /**\n * Get all handbook entries for overview.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `handbookEntryControllerFindAllHandbookEntriesForOverview()` instead.\n *\n * This method doesn't expect any request body.\n */\n handbookEntryControllerFindAllHandbookEntriesForOverview$Response(params: HandbookEntryControllerFindAllHandbookEntriesForOverview$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookOverviewResponse>> {\n const obs = handbookEntryControllerFindAllHandbookEntriesForOverview(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get all handbook entries for overview.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `handbookEntryControllerFindAllHandbookEntriesForOverview$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n handbookEntryControllerFindAllHandbookEntriesForOverview(params: HandbookEntryControllerFindAllHandbookEntriesForOverview$Params, context?: HttpContext): Observable<HandbookOverviewResponse> {\n const resp = this.handbookEntryControllerFindAllHandbookEntriesForOverview$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<HandbookOverviewResponse>): HandbookOverviewResponse => r.body)\n );\n }\n\n /** Path part for operation `handbookEntryControllerFindAllTags()` */\n static readonly HandbookEntryControllerFindAllTagsPath = '/handbook-api/handbook-entry/tags';\n\n /**\n * Get all tags from handbook entries.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `handbookEntryControllerFindAllTags()` instead.\n *\n * This method doesn't expect any request body.\n */\n handbookEntryControllerFindAllTags$Response(params: HandbookEntryControllerFindAllTags$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookTagsResponse>> {\n const obs = handbookEntryControllerFindAllTags(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get all tags from handbook entries.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `handbookEntryControllerFindAllTags$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n handbookEntryControllerFindAllTags(params: HandbookEntryControllerFindAllTags$Params, context?: HttpContext): Observable<HandbookTagsResponse> {\n const resp = this.handbookEntryControllerFindAllTags$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<HandbookTagsResponse>): HandbookTagsResponse => r.body)\n );\n }\n\n /** Path part for operation `handbookEntryControllerFindHandbookEntryById()` */\n static readonly HandbookEntryControllerFindHandbookEntryByIdPath = '/handbook-api/handbook-entry/{id}';\n\n /**\n * Get a handbook entry by ID.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `handbookEntryControllerFindHandbookEntryById()` instead.\n *\n * This method doesn't expect any request body.\n */\n handbookEntryControllerFindHandbookEntryById$Response(params: HandbookEntryControllerFindHandbookEntryById$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const obs = handbookEntryControllerFindHandbookEntryById(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get a handbook entry by ID.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `handbookEntryControllerFindHandbookEntryById$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n handbookEntryControllerFindHandbookEntryById(params: HandbookEntryControllerFindHandbookEntryById$Params, context?: HttpContext): Observable<HandbookEntry> {\n const resp = this.handbookEntryControllerFindHandbookEntryById$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<HandbookEntry>): HandbookEntry => r.body)\n );\n }\n\n /** Path part for operation `handbookEntryControllerUpdateHandbookEntry()` */\n static readonly HandbookEntryControllerUpdateHandbookEntryPath = '/handbook-api/handbook-entry/{id}';\n\n /**\n * Update a handbook entry.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `handbookEntryControllerUpdateHandbookEntry()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n handbookEntryControllerUpdateHandbookEntry$Response(params: HandbookEntryControllerUpdateHandbookEntry$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const obs = handbookEntryControllerUpdateHandbookEntry(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Update a handbook entry.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `handbookEntryControllerUpdateHandbookEntry$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n handbookEntryControllerUpdateHandbookEntry(params: HandbookEntryControllerUpdateHandbookEntry$Params, context?: HttpContext): Observable<HandbookEntry> {\n const resp = this.handbookEntryControllerUpdateHandbookEntry$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<HandbookEntry>): HandbookEntry => r.body)\n );\n }\n\n /** Path part for operation `handbookEntryControllerDeleteHandbookEntry()` */\n static readonly HandbookEntryControllerDeleteHandbookEntryPath = '/handbook-api/handbook-entry/{id}';\n\n /**\n * Delete a handbook entry.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `handbookEntryControllerDeleteHandbookEntry()` instead.\n *\n * This method doesn't expect any request body.\n */\n handbookEntryControllerDeleteHandbookEntry$Response(params: HandbookEntryControllerDeleteHandbookEntry$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const obs = handbookEntryControllerDeleteHandbookEntry(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Delete a handbook entry.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `handbookEntryControllerDeleteHandbookEntry$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n handbookEntryControllerDeleteHandbookEntry(params: HandbookEntryControllerDeleteHandbookEntry$Params, context?: HttpContext): Observable<HandbookEntry> {\n const resp = this.handbookEntryControllerDeleteHandbookEntry$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<HandbookEntry>): HandbookEntry => r.body)\n );\n }\n\n /** Path part for operation `handbookEntryControllerGetTextFromVoice()` */\n static readonly HandbookEntryControllerGetTextFromVoicePath = '/handbook-api/handbook-entry/get-text-from-voice';\n\n /**\n * Get text from voice recording.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `handbookEntryControllerGetTextFromVoice()` instead.\n *\n * This method sends `multipart/form-data` and handles request body of type `multipart/form-data`.\n */\n handbookEntryControllerGetTextFromVoice$Response(params: HandbookEntryControllerGetTextFromVoice$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookVoiceResponse>> {\n const obs = handbookEntryControllerGetTextFromVoice(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get text from voice recording.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `handbookEntryControllerGetTextFromVoice$Response()` instead.\n *\n * This method sends `multipart/form-data` and handles request body of type `multipart/form-data`.\n */\n handbookEntryControllerGetTextFromVoice(params: HandbookEntryControllerGetTextFromVoice$Params, context?: HttpContext): Observable<HandbookVoiceResponse> {\n const resp = this.handbookEntryControllerGetTextFromVoice$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<HandbookVoiceResponse>): HandbookVoiceResponse => r.body)\n );\n }\n\n /** Path part for operation `handbookEntryControllerGenerateHandbookFromText()` */\n static readonly HandbookEntryControllerGenerateHandbookFromTextPath = '/handbook-api/handbook-entry/generate-from-text';\n\n /**\n * Generate handbook entry from voice text.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `handbookEntryControllerGenerateHandbookFromText()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n handbookEntryControllerGenerateHandbookFromText$Response(params: HandbookEntryControllerGenerateHandbookFromText$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const obs = handbookEntryControllerGenerateHandbookFromText(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Generate handbook entry from voice text.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `handbookEntryControllerGenerateHandbookFromText$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n handbookEntryControllerGenerateHandbookFromText(params: HandbookEntryControllerGenerateHandbookFromText$Params, context?: HttpContext): Observable<HandbookEntry> {\n const resp = this.handbookEntryControllerGenerateHandbookFromText$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<HandbookEntry>): HandbookEntry => r.body)\n );\n }\n\n /** Path part for operation `handbookEntryControllerGenerateHandbook()` */\n static readonly HandbookEntryControllerGenerateHandbookPath = '/handbook-api/handbook-entry/generate-from-voice';\n\n /**\n * Generate handbook entry from voice recording.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `handbookEntryControllerGenerateHandbook()` instead.\n *\n * This method sends `multipart/form-data` and handles request body of type `multipart/form-data`.\n */\n handbookEntryControllerGenerateHandbook$Response(params: HandbookEntryControllerGenerateHandbook$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const obs = handbookEntryControllerGenerateHandbook(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Generate handbook entry from voice recording.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `handbookEntryControllerGenerateHandbook$Response()` instead.\n *\n * This method sends `multipart/form-data` and handles request body of type `multipart/form-data`.\n */\n handbookEntryControllerGenerateHandbook(params: HandbookEntryControllerGenerateHandbook$Params, context?: HttpContext): Observable<HandbookEntry> {\n const resp = this.handbookEntryControllerGenerateHandbook$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<HandbookEntry>): HandbookEntry => r.body)\n );\n }\n\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { ChatResult } from '../../models/chat-result';\n\nexport interface ConversationControllerConversation$Params {\n\n/**\n * The question to search for\n */\n question?: string;\n\n/**\n * The thread ID of the search\n */\n threadId?: string;\n\n/**\n * The app to use for the search\n */\n app?: string;\n\n/**\n * The current URL path\n */\n currentUrlPath?: string;\n}\n\nexport function conversationControllerConversation(http: HttpClient, rootUrl: string, params?: ConversationControllerConversation$Params, context?: HttpContext): Observable<HandbookHttpResponse<ChatResult>> {\n const rb = new HandbookRequestBuilder(rootUrl, conversationControllerConversation.PATH, 'get');\n if (params) {\n rb.query('question', params.question, {});\n rb.query('threadId', params.threadId, {});\n rb.query('app', params.app, {});\n rb.query('currentUrlPath', params.currentUrlPath, {});\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<ChatResult>;\n })\n );\n}\n\nconversationControllerConversation.PATH = '/handbook-api/conversation';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { ConversationDetailResult } from '../../models/conversation-detail-result';\n\nexport interface ConversationControllerGetConversationDetail$Params {\n id: string;\n}\n\nexport function conversationControllerGetConversationDetail(http: HttpClient, rootUrl: string, params: ConversationControllerGetConversationDetail$Params, context?: HttpContext): Observable<HandbookHttpResponse<ConversationDetailResult>> {\n const rb = new HandbookRequestBuilder(rootUrl, conversationControllerGetConversationDetail.PATH, 'get');\n if (params) {\n rb.path('id', params.id, {});\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<ConversationDetailResult>;\n })\n );\n}\n\nconversationControllerGetConversationDetail.PATH = '/handbook-api/conversation/{id}/detail';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { ConversationOverviewResult } from '../../models/conversation-overview-result';\n\nexport interface ConversationControllerGetConversationOverview$Params {\n}\n\nexport function conversationControllerGetConversationOverview(http: HttpClient, rootUrl: string, params?: ConversationControllerGetConversationOverview$Params, context?: HttpContext): Observable<HandbookHttpResponse<Array<ConversationOverviewResult>>> {\n const rb = new HandbookRequestBuilder(rootUrl, conversationControllerGetConversationOverview.PATH, 'get');\n if (params) {\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<Array<ConversationOverviewResult>>;\n })\n );\n}\n\nconversationControllerGetConversationOverview.PATH = '/handbook-api/conversation/overview';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { ContextDto } from '../../models/context-dto';\nimport { ContextResult } from '../../models/context-result';\n\nexport interface ConversationControllerGetRelevantContext$Params {\n body: ContextDto\n}\n\nexport function conversationControllerGetRelevantContext(http: HttpClient, rootUrl: string, params: ConversationControllerGetRelevantContext$Params, context?: HttpContext): Observable<HandbookHttpResponse<ContextResult>> {\n const rb = new HandbookRequestBuilder(rootUrl, conversationControllerGetRelevantContext.PATH, 'post');\n if (params) {\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<ContextResult>;\n })\n );\n}\n\nconversationControllerGetRelevantContext.PATH = '/handbook-api/conversation/context';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { HandbookBaseService } from '../handbook-base-service';\nimport { HandbookConfiguration } from '../handbook-configuration';\nimport { HandbookHttpResponse } from '../handbook-http-response';\n\nimport { ChatResult } from '../models/chat-result';\nimport { ContextResult } from '../models/context-result';\nimport { conversationControllerConversation } from '../fn/conversation/conversation-controller-conversation';\nimport { ConversationControllerConversation$Params } from '../fn/conversation/conversation-controller-conversation';\nimport { conversationControllerGetConversationDetail } from '../fn/conversation/conversation-controller-get-conversation-detail';\nimport { ConversationControllerGetConversationDetail$Params } from '../fn/conversation/conversation-controller-get-conversation-detail';\nimport { conversationControllerGetConversationOverview } from '../fn/conversation/conversation-controller-get-conversation-overview';\nimport { ConversationControllerGetConversationOverview$Params } from '../fn/conversation/conversation-controller-get-conversation-overview';\nimport { conversationControllerGetRelevantContext } from '../fn/conversation/conversation-controller-get-relevant-context';\nimport { ConversationControllerGetRelevantContext$Params } from '../fn/conversation/conversation-controller-get-relevant-context';\nimport { ConversationDetailResult } from '../models/conversation-detail-result';\nimport { ConversationOverviewResult } from '../models/conversation-overview-result';\n\n@Injectable({ providedIn: 'root' })\nexport class ConversationService extends HandbookBaseService {\n constructor(config: HandbookConfiguration, http: HttpClient) {\n super(config, http);\n }\n\n /** Path part for operation `conversationControllerConversation()` */\n static readonly ConversationControllerConversationPath = '/handbook-api/conversation';\n\n /**\n * Ask AI.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `conversationControllerConversation()` instead.\n *\n * This method doesn't expect any request body.\n */\n conversationControllerConversation$Response(params?: ConversationControllerConversation$Params, context?: HttpContext): Observable<HandbookHttpResponse<ChatResult>> {\n const obs = conversationControllerConversation(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Ask AI.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `conversationControllerConversation$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n conversationControllerConversation(params?: ConversationControllerConversation$Params, context?: HttpContext): Observable<ChatResult> {\n const resp = this.conversationControllerConversation$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<ChatResult>): ChatResult => r.body)\n );\n }\n\n /** Path part for operation `conversationControllerGetConversationOverview()` */\n static readonly ConversationControllerGetConversationOverviewPath = '/handbook-api/conversation/overview';\n\n /**\n * Get conversation overview.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `conversationControllerGetConversationOverview()` instead.\n *\n * This method doesn't expect any request body.\n */\n conversationControllerGetConversationOverview$Response(params?: ConversationControllerGetConversationOverview$Params, context?: HttpContext): Observable<HandbookHttpResponse<Array<ConversationOverviewResult>>> {\n const obs = conversationControllerGetConversationOverview(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get conversation overview.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `conversationControllerGetConversationOverview$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n conversationControllerGetConversationOverview(params?: ConversationControllerGetConversationOverview$Params, context?: HttpContext): Observable<Array<ConversationOverviewResult>> {\n const resp = this.conversationControllerGetConversationOverview$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<Array<ConversationOverviewResult>>): Array<ConversationOverviewResult> => r.body)\n );\n }\n\n /** Path part for operation `conversationControllerGetRelevantContext()` */\n static readonly ConversationControllerGetRelevantContextPath = '/handbook-api/conversation/context';\n\n /**\n * Get relevant context for a query.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `conversationControllerGetRelevantContext()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n conversationControllerGetRelevantContext$Response(params: ConversationControllerGetRelevantContext$Params, context?: HttpContext): Observable<HandbookHttpResponse<ContextResult>> {\n const obs = conversationControllerGetRelevantContext(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get relevant context for a query.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `conversationControllerGetRelevantContext$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n conversationControllerGetRelevantContext(params: ConversationControllerGetRelevantContext$Params, context?: HttpContext): Observable<ContextResult> {\n const resp = this.conversationControllerGetRelevantContext$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<ContextResult>): ContextResult => r.body)\n );\n }\n\n /** Path part for operation `conversationControllerGetConversationDetail()` */\n static readonly ConversationControllerGetConversationDetailPath = '/handbook-api/conversation/{id}/detail';\n\n /**\n * Get conversation detail.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `conversationControllerGetConversationDetail()` instead.\n *\n * This method doesn't expect any request body.\n */\n conversationControllerGetConversationDetail$Response(params: ConversationControllerGetConversationDetail$Params, context?: HttpContext): Observable<HandbookHttpResponse<ConversationDetailResult>> {\n const obs = conversationControllerGetConversationDetail(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get conversation detail.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `conversationControllerGetConversationDetail$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n conversationControllerGetConversationDetail(params: ConversationControllerGetConversationDetail$Params, context?: HttpContext): Observable<ConversationDetailResult> {\n const resp = this.conversationControllerGetConversationDetail$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<ConversationDetailResult>): ConversationDetailResult => r.body)\n );\n }\n\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\n\nexport interface LichtbotControllerGetImportAdresses$Params {\n}\n\nexport function lichtbotControllerGetImportAdresses(http: HttpClient, rootUrl: string, params?: LichtbotControllerGetImportAdresses$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const rb = new HandbookRequestBuilder(rootUrl, lichtbotControllerGetImportAdresses.PATH, 'get');\n if (params) {\n }\n\n return http.request(\n rb.build({ responseType: 'text', accept: '*/*', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return (r as HttpResponse<any>).clone({ body: undefined }) as HandbookHttpResponse<void>;\n })\n );\n}\n\nlichtbotControllerGetImportAdresses.PATH = '/handbook-api/lichtbot/import-adresses';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\n\nexport interface LichtbotControllerGetImportHistory$Params {\n}\n\nexport function lichtbotControllerGetImportHistory(http: HttpClient, rootUrl: string, params?: LichtbotControllerGetImportHistory$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const rb = new HandbookRequestBuilder(rootUrl, lichtbotControllerGetImportHistory.PATH, 'get');\n if (params) {\n }\n\n return http.request(\n rb.build({ responseType: 'text', accept: '*/*', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return (r as HttpResponse<any>).clone({ body: undefined }) as HandbookHttpResponse<void>;\n })\n );\n}\n\nlichtbotControllerGetImportHistory.PATH = '/handbook-api/lichtbot/import-history';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { JoinLichtbotDto } from '../../models/join-lichtbot-dto';\n\nexport interface LichtbotControllerJoinRoom$Params {\n body: JoinLichtbotDto\n}\n\nexport function lichtbotControllerJoinRoom(http: HttpClient, rootUrl: string, params: LichtbotControllerJoinRoom$Params, context?: HttpContext): Observable<HandbookHttpResponse<JoinLichtbotDto>> {\n const rb = new HandbookRequestBuilder(rootUrl, lichtbotControllerJoinRoom.PATH, 'post');\n if (params) {\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<JoinLichtbotDto>;\n })\n );\n}\n\nlichtbotControllerJoinRoom.PATH = '/handbook-api/lichtbot/join';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { LeaveLichtbotDto } from '../../models/leave-lichtbot-dto';\n\nexport interface LichtbotControllerLeaveRoom$Params {\n body: LeaveLichtbotDto\n}\n\nexport function lichtbotControllerLeaveRoom(http: HttpClient, rootUrl: string, params: LichtbotControllerLeaveRoom$Params, context?: HttpContext): Observable<HandbookHttpResponse<LeaveLichtbotDto>> {\n const rb = new HandbookRequestBuilder(rootUrl, lichtbotControllerLeaveRoom.PATH, 'post');\n if (params) {\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<LeaveLichtbotDto>;\n })\n );\n}\n\nlichtbotControllerLeaveRoom.PATH = '/handbook-api/lichtbot/leave';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { LichtbotClientMessageDto } from '../../models/lichtbot-client-message-dto';\n\nexport interface LichtbotControllerReciveMessage$Params {\n body: LichtbotClientMessageDto\n}\n\nexport function lichtbotControllerReciveMessage(http: HttpClient, rootUrl: string, params: LichtbotControllerReciveMessage$Params, context?: HttpContext): Observable<HandbookHttpResponse<LichtbotClientMessageDto>> {\n const rb = new HandbookRequestBuilder(rootUrl, lichtbotControllerReciveMessage.PATH, 'post');\n if (params) {\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<LichtbotClientMessageDto>;\n })\n );\n}\n\nlichtbotControllerReciveMessage.PATH = '/handbook-api/lichtbot/message';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { HandbookBaseService } from '../handbook-base-service';\nimport { HandbookConfiguration } from '../handbook-configuration';\nimport { HandbookHttpResponse } from '../handbook-http-response';\n\nimport { JoinLichtbotDto } from '../models/join-lichtbot-dto';\nimport { LeaveLichtbotDto } from '../models/leave-lichtbot-dto';\nimport { LichtbotClientMessageDto } from '../models/lichtbot-client-message-dto';\nimport { lichtbotControllerGetImportAdresses } from '../fn/lichtbot/lichtbot-controller-get-import-adresses';\nimport { LichtbotControllerGetImportAdresses$Params } from '../fn/lichtbot/lichtbot-controller-get-import-adresses';\nimport { lichtbotControllerGetImportHistory } from '../fn/lichtbot/lichtbot-controller-get-import-history';\nimport { LichtbotControllerGetImportHistory$Params } from '../fn/lichtbot/lichtbot-controller-get-import-history';\nimport { lichtbotControllerJoinRoom } from '../fn/lichtbot/lichtbot-controller-join-room';\nimport { LichtbotControllerJoinRoom$Params } from '../fn/lichtbot/lichtbot-controller-join-room';\nimport { lichtbotControllerLeaveRoom } from '../fn/lichtbot/lichtbot-controller-leave-room';\nimport { LichtbotControllerLeaveRoom$Params } from '../fn/lichtbot/lichtbot-controller-leave-room';\nimport { lichtbotControllerReciveMessage } from '../fn/lichtbot/lichtbot-controller-recive-message';\nimport { LichtbotControllerReciveMessage$Params } from '../fn/lichtbot/lichtbot-controller-recive-message';\n\n@Injectable({ providedIn: 'root' })\nexport class LichtbotService extends HandbookBaseService {\n constructor(config: HandbookConfiguration, http: HttpClient) {\n super(config, http);\n }\n\n /** Path part for operation `lichtbotControllerGetImportHistory()` */\n static readonly LichtbotControllerGetImportHistoryPath = '/handbook-api/lichtbot/import-history';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `lichtbotControllerGetImportHistory()` instead.\n *\n * This method doesn't expect any request body.\n */\n lichtbotControllerGetImportHistory$Response(params?: LichtbotControllerGetImportHistory$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const obs = lichtbotControllerGetImportHistory(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `lichtbotControllerGetImportHistory$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n lichtbotControllerGetImportHistory(params?: LichtbotControllerGetImportHistory$Params, context?: HttpContext): Observable<void> {\n const resp = this.lichtbotControllerGetImportHistory$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<void>): void => r.body)\n );\n }\n\n /** Path part for operation `lichtbotControllerGetImportAdresses()` */\n static readonly LichtbotControllerGetImportAdressesPath = '/handbook-api/lichtbot/import-adresses';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `lichtbotControllerGetImportAdresses()` instead.\n *\n * This method doesn't expect any request body.\n */\n lichtbotControllerGetImportAdresses$Response(params?: LichtbotControllerGetImportAdresses$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const obs = lichtbotControllerGetImportAdresses(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `lichtbotControllerGetImportAdresses$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n lichtbotControllerGetImportAdresses(params?: LichtbotControllerGetImportAdresses$Params, context?: HttpContext): Observable<void> {\n const resp = this.lichtbotControllerGetImportAdresses$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<void>): void => r.body)\n );\n }\n\n /** Path part for operation `lichtbotControllerJoinRoom()` */\n static readonly LichtbotControllerJoinRoomPath = '/handbook-api/lichtbot/join';\n\n /**\n * Add the LichtBOT to the client Chat Room.\n *\n * Allows a user to add the LichtBOT to the client Chat Room. Note: This is a mock endpoint for prototyping only and is not functional.\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `lichtbotControllerJoinRoom()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n lichtbotControllerJoinRoom$Response(params: LichtbotControllerJoinRoom$Params, context?: HttpContext): Observable<HandbookHttpResponse<JoinLichtbotDto>> {\n const obs = lichtbotControllerJoinRoom(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Add the LichtBOT to the client Chat Room.\n *\n * Allows a user to add the LichtBOT to the client Chat Room. Note: This is a mock endpoint for prototyping only and is not functional.\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `lichtbotControllerJoinRoom$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n lichtbotControllerJoinRoom(params: LichtbotControllerJoinRoom$Params, context?: HttpContext): Observable<JoinLichtbotDto> {\n const resp = this.lichtbotControllerJoinRoom$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<JoinLichtbotDto>): JoinLichtbotDto => r.body)\n );\n }\n\n /** Path part for operation `lichtbotControllerLeaveRoom()` */\n static readonly LichtbotControllerLeaveRoomPath = '/handbook-api/lichtbot/leave';\n\n /**\n * Remove the LichtBOT from the client Chat Room.\n *\n * Allows a user to remove the LichtBOT from the client Chat Room. Note: This is a mock endpoint for prototyping only and is not functional.\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `lichtbotControllerLeaveRoom()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n lichtbotControllerLeaveRoom$Response(params: LichtbotControllerLeaveRoom$Params, context?: HttpContext): Observable<HandbookHttpResponse<LeaveLichtbotDto>> {\n const obs = lichtbotControllerLeaveRoom(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Remove the LichtBOT from the client Chat Room.\n *\n * Allows a user to remove the LichtBOT from the client Chat Room. Note: This is a mock endpoint for prototyping only and is not functional.\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `lichtbotControllerLeaveRoom$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n lichtbotControllerLeaveRoom(params: LichtbotControllerLeaveRoom$Params, context?: HttpContext): Observable<LeaveLichtbotDto> {\n const resp = this.lichtbotControllerLeaveRoom$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<LeaveLichtbotDto>): LeaveLichtbotDto => r.body)\n );\n }\n\n /** Path part for operation `lichtbotControllerReciveMessage()` */\n static readonly LichtbotControllerReciveMessagePath = '/handbook-api/lichtbot/message';\n\n /**\n * Send a message to LichtBOT.\n *\n * Sends a client message to LichtBOT in a chat room. Note: This is a mock endpoint for prototyping only and is not functional.\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `lichtbotControllerReciveMessage()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n lichtbotControllerReciveMessage$Response(params: LichtbotControllerReciveMessage$Params, context?: HttpContext): Observable<HandbookHttpResponse<LichtbotClientMessageDto>> {\n const obs = lichtbotControllerReciveMessage(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Send a message to LichtBOT.\n *\n * Sends a client message to LichtBOT in a chat room. Note: This is a mock endpoint for prototyping only and is not functional.\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `lichtbotControllerReciveMessage$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n lichtbotControllerReciveMessage(params: LichtbotControllerReciveMessage$Params, context?: HttpContext): Observable<LichtbotClientMessageDto> {\n const resp = this.lichtbotControllerReciveMessage$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<LichtbotClientMessageDto>): LichtbotClientMessageDto => r.body)\n );\n }\n\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { AnonymizeTextDto } from '../../models/anonymize-text-dto';\n\nexport interface PresidioControllerAnalyzeText$Params {\n body: AnonymizeTextDto\n}\n\nexport function presidioControllerAnalyzeText(http: HttpClient, rootUrl: string, params: PresidioControllerAnalyzeText$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const rb = new HandbookRequestBuilder(rootUrl, presidioControllerAnalyzeText.PATH, 'post');\n if (params) {\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'text', accept: '*/*', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return (r as HttpResponse<any>).clone({ body: undefined }) as HandbookHttpResponse<void>;\n })\n );\n}\n\npresidioControllerAnalyzeText.PATH = '/handbook-api/presidio/analyze';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { AnonymizeTextDto } from '../../models/anonymize-text-dto';\n\nexport interface PresidioControllerAnonymizeText$Params {\n body: AnonymizeTextDto\n}\n\nexport function presidioControllerAnonymizeText(http: HttpClient, rootUrl: string, params: PresidioControllerAnonymizeText$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const rb = new HandbookRequestBuilder(rootUrl, presidioControllerAnonymizeText.PATH, 'post');\n if (params) {\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'text', accept: '*/*', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return (r as HttpResponse<any>).clone({ body: undefined }) as HandbookHttpResponse<void>;\n })\n );\n}\n\npresidioControllerAnonymizeText.PATH = '/handbook-api/presidio/anonymize';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\n\nexport interface PresidioControllerTest$Params {\n}\n\nexport function presidioControllerTest(http: HttpClient, rootUrl: string, params?: PresidioControllerTest$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const rb = new HandbookRequestBuilder(rootUrl, presidioControllerTest.PATH, 'post');\n if (params) {\n }\n\n return http.request(\n rb.build({ responseType: 'text', accept: '*/*', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return (r as HttpResponse<any>).clone({ body: undefined }) as HandbookHttpResponse<void>;\n })\n );\n}\n\npresidioControllerTest.PATH = '/handbook-api/presidio/test';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { HandbookBaseService } from '../handbook-base-service';\nimport { HandbookConfiguration } from '../handbook-configuration';\nimport { HandbookHttpResponse } from '../handbook-http-response';\n\nimport { presidioControllerAnalyzeText } from '../fn/presidio/presidio-controller-analyze-text';\nimport { PresidioControllerAnalyzeText$Params } from '../fn/presidio/presidio-controller-analyze-text';\nimport { presidioControllerAnonymizeText } from '../fn/presidio/presidio-controller-anonymize-text';\nimport { PresidioControllerAnonymizeText$Params } from '../fn/presidio/presidio-controller-anonymize-text';\nimport { presidioControllerTest } from '../fn/presidio/presidio-controller-test';\nimport { PresidioControllerTest$Params } from '../fn/presidio/presidio-controller-test';\n\n@Injectable({ providedIn: 'root' })\nexport class PresidioService extends HandbookBaseService {\n constructor(config: HandbookConfiguration, http: HttpClient) {\n super(config, http);\n }\n\n /** Path part for operation `presidioControllerAnalyzeText()` */\n static readonly PresidioControllerAnalyzeTextPath = '/handbook-api/presidio/analyze';\n\n /**\n * Analyze text for PII.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `presidioControllerAnalyzeText()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n presidioControllerAnalyzeText$Response(params: PresidioControllerAnalyzeText$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const obs = presidioControllerAnalyzeText(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Analyze text for PII.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `presidioControllerAnalyzeText$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n presidioControllerAnalyzeText(params: PresidioControllerAnalyzeText$Params, context?: HttpContext): Observable<void> {\n const resp = this.presidioControllerAnalyzeText$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<void>): void => r.body)\n );\n }\n\n /** Path part for operation `presidioControllerAnonymizeText()` */\n static readonly PresidioControllerAnonymizeTextPath = '/handbook-api/presidio/anonymize';\n\n /**\n * Anonymize text containing PII.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `presidioControllerAnonymizeText()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n presidioControllerAnonymizeText$Response(params: PresidioControllerAnonymizeText$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const obs = presidioControllerAnonymizeText(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Anonymize text containing PII.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `presidioControllerAnonymizeText$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n presidioControllerAnonymizeText(params: PresidioControllerAnonymizeText$Params, context?: HttpContext): Observable<void> {\n const resp = this.presidioControllerAnonymizeText$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<void>): void => r.body)\n );\n }\n\n /** Path part for operation `presidioControllerTest()` */\n static readonly PresidioControllerTestPath = '/handbook-api/presidio/test';\n\n /**\n * Test endpoint for smoke testing.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `presidioControllerTest()` instead.\n *\n * This method doesn't expect any request body.\n */\n presidioControllerTest$Response(params?: PresidioControllerTest$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const obs = presidioControllerTest(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Test endpoint for smoke testing.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `presidioControllerTest$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n presidioControllerTest(params?: PresidioControllerTest$Params, context?: HttpContext): Observable<void> {\n const resp = this.presidioControllerTest$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<void>): void => r.body)\n );\n }\n\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { SethubAppChatResult } from '../../models/sethub-app-chat-result';\n\nexport interface SethubAppsControllerConversation$Params {\n appId: string;\n\n/**\n * The question to search for\n */\n question: string;\n\n/**\n * The title of the last opened entry\n */\n lastOpenedEntryTitle?: string;\n\n/**\n * The thread ID of the search\n */\n threadId?: string;\n}\n\nexport function sethubAppsControllerConversation(http: HttpClient, rootUrl: string, params: SethubAppsControllerConversation$Params, context?: HttpContext): Observable<HandbookHttpResponse<SethubAppChatResult>> {\n const rb = new HandbookRequestBuilder(rootUrl, sethubAppsControllerConversation.PATH, 'get');\n if (params) {\n rb.path('appId', params.appId, {});\n rb.query('question', params.question, {});\n rb.query('lastOpenedEntryTitle', params.lastOpenedEntryTitle, {});\n rb.query('threadId', params.threadId, {});\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<SethubAppChatResult>;\n })\n );\n}\n\nsethubAppsControllerConversation.PATH = '/handbook-api/sethub-app/{appId}';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { SethubAppContextDto } from '../../models/sethub-app-context-dto';\nimport { SethubAppContextResult } from '../../models/sethub-app-context-result';\n\nexport interface SethubAppsControllerGetRelevantContext$Params {\n body: SethubAppContextDto\n}\n\nexport function sethubAppsControllerGetRelevantContext(http: HttpClient, rootUrl: string, params: SethubAppsControllerGetRelevantContext$Params, context?: HttpContext): Observable<HandbookHttpResponse<SethubAppContextResult>> {\n const rb = new HandbookRequestBuilder(rootUrl, sethubAppsControllerGetRelevantContext.PATH, 'post');\n if (params) {\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<SethubAppContextResult>;\n })\n );\n}\n\nsethubAppsControllerGetRelevantContext.PATH = '/handbook-api/sethub-app/context';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { SummaryResult } from '../../models/summary-result';\n\nexport interface SethubAppsControllerSummary$Params {\n appId: string;\n\n/**\n * The template ID of the summary\n */\n templateId: string;\n\n/**\n * The document ID of the summary\n */\n documentId: string;\n\n/**\n * The thread ID of the summary\n */\n threadId?: string;\n}\n\nexport function sethubAppsControllerSummary(http: HttpClient, rootUrl: string, params: SethubAppsControllerSummary$Params, context?: HttpContext): Observable<HandbookHttpResponse<SummaryResult>> {\n const rb = new HandbookRequestBuilder(rootUrl, sethubAppsControllerSummary.PATH, 'get');\n if (params) {\n rb.path('appId', params.appId, {});\n rb.query('templateId', params.templateId, {});\n rb.query('documentId', params.documentId, {});\n rb.query('threadId', params.threadId, {});\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<SummaryResult>;\n })\n );\n}\n\nsethubAppsControllerSummary.PATH = '/handbook-api/sethub-app/{appId}/summary';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { HandbookBaseService } from '../handbook-base-service';\nimport { HandbookConfiguration } from '../handbook-configuration';\nimport { HandbookHttpResponse } from '../handbook-http-response';\n\nimport { SethubAppChatResult } from '../models/sethub-app-chat-result';\nimport { SethubAppContextResult } from '../models/sethub-app-context-result';\nimport { sethubAppsControllerConversation } from '../fn/sethub-apps/sethub-apps-controller-conversation';\nimport { SethubAppsControllerConversation$Params } from '../fn/sethub-apps/sethub-apps-controller-conversation';\nimport { sethubAppsControllerGetRelevantContext } from '../fn/sethub-apps/sethub-apps-controller-get-relevant-context';\nimport { SethubAppsControllerGetRelevantContext$Params } from '../fn/sethub-apps/sethub-apps-controller-get-relevant-context';\nimport { sethubAppsControllerSummary } from '../fn/sethub-apps/sethub-apps-controller-summary';\nimport { SethubAppsControllerSummary$Params } from '../fn/sethub-apps/sethub-apps-controller-summary';\nimport { SummaryResult } from '../models/summary-result';\n\n@Injectable({ providedIn: 'root' })\nexport class SethubAppsService extends HandbookBaseService {\n constructor(config: HandbookConfiguration, http: HttpClient) {\n super(config, http);\n }\n\n /** Path part for operation `sethubAppsControllerSummary()` */\n static readonly SethubAppsControllerSummaryPath = '/handbook-api/sethub-app/{appId}/summary';\n\n /**\n * Summarize content.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sethubAppsControllerSummary()` instead.\n *\n * This method doesn't expect any request body.\n */\n sethubAppsControllerSummary$Response(params: SethubAppsControllerSummary$Params, context?: HttpContext): Observable<HandbookHttpResponse<SummaryResult>> {\n const obs = sethubAppsControllerSummary(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Summarize content.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sethubAppsControllerSummary$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sethubAppsControllerSummary(params: SethubAppsControllerSummary$Params, context?: HttpContext): Observable<SummaryResult> {\n const resp = this.sethubAppsControllerSummary$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<SummaryResult>): SummaryResult => r.body)\n );\n }\n\n /** Path part for operation `sethubAppsControllerGetRelevantContext()` */\n static readonly SethubAppsControllerGetRelevantContextPath = '/handbook-api/sethub-app/context';\n\n /**\n * Get relevant context for keywords.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sethubAppsControllerGetRelevantContext()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n sethubAppsControllerGetRelevantContext$Response(params: SethubAppsControllerGetRelevantContext$Params, context?: HttpContext): Observable<HandbookHttpResponse<SethubAppContextResult>> {\n const obs = sethubAppsControllerGetRelevantContext(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get relevant context for keywords.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sethubAppsControllerGetRelevantContext$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n sethubAppsControllerGetRelevantContext(params: SethubAppsControllerGetRelevantContext$Params, context?: HttpContext): Observable<SethubAppContextResult> {\n const resp = this.sethubAppsControllerGetRelevantContext$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<SethubAppContextResult>): SethubAppContextResult => r.body)\n );\n }\n\n /** Path part for operation `sethubAppsControllerConversation()` */\n static readonly SethubAppsControllerConversationPath = '/handbook-api/sethub-app/{appId}';\n\n /**\n * Ask AI.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sethubAppsControllerConversation()` instead.\n *\n * This method doesn't expect any request body.\n */\n sethubAppsControllerConversation$Response(params: SethubAppsControllerConversation$Params, context?: HttpContext): Observable<HandbookHttpResponse<SethubAppChatResult>> {\n const obs = sethubAppsControllerConversation(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Ask AI.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sethubAppsControllerConversation$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sethubAppsControllerConversation(params: SethubAppsControllerConversation$Params, context?: HttpContext): Observable<SethubAppChatResult> {\n const resp = this.sethubAppsControllerConversation$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<SethubAppChatResult>): SethubAppChatResult => r.body)\n );\n }\n\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { SethubNavRequestDto } from '../../models/sethub-nav-request-dto';\nimport { SethubNavRequestResponse } from '../../models/sethub-nav-request-response';\n\nexport interface SethubNavControllerProcessNavRequest$Params {\n appId: string;\n sessionId: string;\n body: SethubNavRequestDto\n}\n\nexport function sethubNavControllerProcessNavRequest(http: HttpClient, rootUrl: string, params: SethubNavControllerProcessNavRequest$Params, context?: HttpContext): Observable<HandbookHttpResponse<SethubNavRequestResponse>> {\n const rb = new HandbookRequestBuilder(rootUrl, sethubNavControllerProcessNavRequest.PATH, 'post');\n if (params) {\n rb.path('appId', params.appId, {});\n rb.header('sessionId', params.sessionId, {});\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<SethubNavRequestResponse>;\n })\n );\n}\n\nsethubNavControllerProcessNavRequest.PATH = '/handbook-api/sethub-nav/{appId}/request';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { HandbookBaseService } from '../handbook-base-service';\nimport { HandbookConfiguration } from '../handbook-configuration';\nimport { HandbookHttpResponse } from '../handbook-http-response';\n\nimport { sethubNavControllerProcessNavRequest } from '../fn/sethub-nav/sethub-nav-controller-process-nav-request';\nimport { SethubNavControllerProcessNavRequest$Params } from '../fn/sethub-nav/sethub-nav-controller-process-nav-request';\nimport { SethubNavRequestResponse } from '../models/sethub-nav-request-response';\n\n@Injectable({ providedIn: 'root' })\nexport class SethubNavService extends HandbookBaseService {\n constructor(config: HandbookConfiguration, http: HttpClient) {\n super(config, http);\n }\n\n /** Path part for operation `sethubNavControllerProcessNavRequest()` */\n static readonly SethubNavControllerProcessNavRequestPath = '/handbook-api/sethub-nav/{appId}/request';\n\n /**\n * Process navigation request.\n *\n * Processes a navigation request and returns helpful guidance with possible navigation paths.\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sethubNavControllerProcessNavRequest()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n sethubNavControllerProcessNavRequest$Response(params: SethubNavControllerProcessNavRequest$Params, context?: HttpContext): Observable<HandbookHttpResponse<SethubNavRequestResponse>> {\n const obs = sethubNavControllerProcessNavRequest(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Process navigation request.\n *\n * Processes a navigation request and returns helpful guidance with possible navigation paths.\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sethubNavControllerProcessNavRequest$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n sethubNavControllerProcessNavRequest(params: SethubNavControllerProcessNavRequest$Params, context?: HttpContext): Observable<SethubNavRequestResponse> {\n const resp = this.sethubNavControllerProcessNavRequest$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<SethubNavRequestResponse>): SethubNavRequestResponse => r.body)\n );\n }\n\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { SethubProductListDto } from '../../models/sethub-product-list-dto';\nimport { SethubProductListResponse } from '../../models/sethub-product-list-response';\n\nexport interface SethubProductsControllerGetProductList$Params {\n appId: string;\n pageId: string;\n areaId: string;\n body: SethubProductListDto\n}\n\nexport function sethubProductsControllerGetProductList(http: HttpClient, rootUrl: string, params: SethubProductsControllerGetProductList$Params, context?: HttpContext): Observable<HandbookHttpResponse<SethubProductListResponse>> {\n const rb = new HandbookRequestBuilder(rootUrl, sethubProductsControllerGetProductList.PATH, 'post');\n if (params) {\n rb.path('appId', params.appId, {});\n rb.path('pageId', params.pageId, {});\n rb.path('areaId', params.areaId, {});\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<SethubProductListResponse>;\n })\n );\n}\n\nsethubProductsControllerGetProductList.PATH = '/handbook-api/sethub-products/{appId}/{pageId}/{areaId}';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { SethubProductSearchResponse } from '../../models/sethub-product-search-response';\n\nexport interface SethubProductsControllerGetProductSearch$Params {\n appId: string;\n productSearchId: string;\n}\n\nexport function sethubProductsControllerGetProductSearch(http: HttpClient, rootUrl: string, params: SethubProductsControllerGetProductSearch$Params, context?: HttpContext): Observable<HandbookHttpResponse<SethubProductSearchResponse>> {\n const rb = new HandbookRequestBuilder(rootUrl, sethubProductsControllerGetProductSearch.PATH, 'get');\n if (params) {\n rb.path('appId', params.appId, {});\n rb.path('productSearchId', params.productSearchId, {});\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<SethubProductSearchResponse>;\n })\n );\n}\n\nsethubProductsControllerGetProductSearch.PATH = '/handbook-api/sethub-products/search/{appId}/{productSearchId}';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { HandbookBaseService } from '../handbook-base-service';\nimport { HandbookConfiguration } from '../handbook-configuration';\nimport { HandbookHttpResponse } from '../handbook-http-response';\n\nimport { SethubProductListResponse } from '../models/sethub-product-list-response';\nimport { sethubProductsControllerGetProductList } from '../fn/sethub-products/sethub-products-controller-get-product-list';\nimport { SethubProductsControllerGetProductList$Params } from '../fn/sethub-products/sethub-products-controller-get-product-list';\nimport { sethubProductsControllerGetProductSearch } from '../fn/sethub-products/sethub-products-controller-get-product-search';\nimport { SethubProductsControllerGetProductSearch$Params } from '../fn/sethub-products/sethub-products-controller-get-product-search';\nimport { SethubProductSearchResponse } from '../models/sethub-product-search-response';\n\n@Injectable({ providedIn: 'root' })\nexport class SethubProductsService extends HandbookBaseService {\n constructor(config: HandbookConfiguration, http: HttpClient) {\n super(config, http);\n }\n\n /** Path part for operation `sethubProductsControllerGetProductList()` */\n static readonly SethubProductsControllerGetProductListPath = '/handbook-api/sethub-products/{appId}/{pageId}/{areaId}';\n\n /**\n * Get product mapping list for a product search.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sethubProductsControllerGetProductList()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n sethubProductsControllerGetProductList$Response(params: SethubProductsControllerGetProductList$Params, context?: HttpContext): Observable<HandbookHttpResponse<SethubProductListResponse>> {\n const obs = sethubProductsControllerGetProductList(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get product mapping list for a product search.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sethubProductsControllerGetProductList$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n sethubProductsControllerGetProductList(params: SethubProductsControllerGetProductList$Params, context?: HttpContext): Observable<SethubProductListResponse> {\n const resp = this.sethubProductsControllerGetProductList$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<SethubProductListResponse>): SethubProductListResponse => r.body)\n );\n }\n\n /** Path part for operation `sethubProductsControllerGetProductSearch()` */\n static readonly SethubProductsControllerGetProductSearchPath = '/handbook-api/sethub-products/search/{appId}/{productSearchId}';\n\n /**\n * Get product search.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sethubProductsControllerGetProductSearch()` instead.\n *\n * This method doesn't expect any request body.\n */\n sethubProductsControllerGetProductSearch$Response(params: SethubProductsControllerGetProductSearch$Params, context?: HttpContext): Observable<HandbookHttpResponse<SethubProductSearchResponse>> {\n const obs = sethubProductsControllerGetProductSearch(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get product search.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sethubProductsControllerGetProductSearch$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sethubProductsControllerGetProductSearch(params: SethubProductsControllerGetProductSearch$Params, context?: HttpContext): Observable<SethubProductSearchResponse> {\n const resp = this.sethubProductsControllerGetProductSearch$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<SethubProductSearchResponse>): SethubProductSearchResponse => r.body)\n );\n }\n\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { UserActionDto } from '../../models/user-action-dto';\n\nexport interface SethubUserActionControllerGenerateActionComment$Params {\n sessionId: string;\n body: UserActionDto\n}\n\nexport function sethubUserActionControllerGenerateActionComment(http: HttpClient, rootUrl: string, params: SethubUserActionControllerGenerateActionComment$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const rb = new HandbookRequestBuilder(rootUrl, sethubUserActionControllerGenerateActionComment.PATH, 'post');\n if (params) {\n rb.header('sessionId', params.sessionId, {});\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'text', accept: '*/*', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return (r as HttpResponse<any>).clone({ body: undefined }) as HandbookHttpResponse<void>;\n })\n );\n}\n\nsethubUserActionControllerGenerateActionComment.PATH = '/handbook-api/sethub-user-action/comment';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { HandbookBaseService } from '../handbook-base-service';\nimport { HandbookConfiguration } from '../handbook-configuration';\nimport { HandbookHttpResponse } from '../handbook-http-response';\n\nimport { sethubUserActionControllerGenerateActionComment } from '../fn/sethub-user-action/sethub-user-action-controller-generate-action-comment';\nimport { SethubUserActionControllerGenerateActionComment$Params } from '../fn/sethub-user-action/sethub-user-action-controller-generate-action-comment';\n\n@Injectable({ providedIn: 'root' })\nexport class SethubUserActionService extends HandbookBaseService {\n constructor(config: HandbookConfiguration, http: HttpClient) {\n super(config, http);\n }\n\n /** Path part for operation `sethubUserActionControllerGenerateActionComment()` */\n static readonly SethubUserActionControllerGenerateActionCommentPath = '/handbook-api/sethub-user-action/comment';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sethubUserActionControllerGenerateActionComment()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n sethubUserActionControllerGenerateActionComment$Response(params: SethubUserActionControllerGenerateActionComment$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const obs = sethubUserActionControllerGenerateActionComment(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sethubUserActionControllerGenerateActionComment$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n sethubUserActionControllerGenerateActionComment(params: SethubUserActionControllerGenerateActionComment$Params, context?: HttpContext): Observable<void> {\n const resp = this.sethubUserActionControllerGenerateActionComment$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<void>): void => r.body)\n );\n }\n\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { HandbookConfiguration, HandbookConfigurationParams } from './handbook-configuration';\n\nimport { AppService } from './services/app.service';\nimport { HandbookEntriesService } from './services/handbook-entries.service';\nimport { ConversationService } from './services/conversation.service';\nimport { LichtbotService } from './services/lichtbot.service';\nimport { PresidioService } from './services/presidio.service';\nimport { SethubAppsService } from './services/sethub-apps.service';\nimport { SethubNavService } from './services/sethub-nav.service';\nimport { SethubProductsService } from './services/sethub-products.service';\nimport { SethubUserActionService } from './services/sethub-user-action.service';\n\n/**\n * Module that provides all services and configuration.\n */\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n AppService,\n HandbookEntriesService,\n ConversationService,\n LichtbotService,\n PresidioService,\n SethubAppsService,\n SethubNavService,\n SethubProductsService,\n SethubUserActionService,\n HandbookConfiguration\n ],\n})\nexport class HandbookModule {\n static forRoot(params: HandbookConfigurationParams): ModuleWithProviders<HandbookModule> {\n return {\n ngModule: HandbookModule,\n providers: [\n {\n provide: HandbookConfiguration,\n useValue: params\n }\n ]\n }\n }\n\n constructor( \n @Optional() @SkipSelf() parentModule: HandbookModule,\n @Optional() http: HttpClient\n ) {\n if (parentModule) {\n throw new Error('HandbookModule is already loaded. Import in your base AppModule only.');\n }\n if (!http) {\n throw new Error('You need to import the HttpClientModule in your AppModule! \\n' +\n 'See also https://github.com/angular/angular/issues/20575');\n }\n }\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nexport { HandbookConfiguration } from './handbook-configuration';\nexport { HandbookRequestBuilder } from './handbook-request-builder';\nexport { HandbookModule } from './handbook.module';\nexport type { HandbookHttpResponse } from './handbook-http-response';\nexport type { AdvisorsStatus } from './models/advisors-status';\nexport type { AnonymizeTextDto } from './models/anonymize-text-dto';\nexport type { ChatResult } from './models/chat-result';\nexport type { ContextDto } from './models/context-dto';\nexport type { ContextResult } from './models/context-result';\nexport type { ConversationDetailResult } from './models/conversation-detail-result';\nexport type { ConversationMessage } from './models/conversation-message';\nexport type { ConversationOverviewResult } from './models/conversation-overview-result';\nexport type { HandbookEntry } from './models/handbook-entry';\nexport type { HandbookEntryDto } from './models/handbook-entry-dto';\nexport type { HandbookOverviewEntry } from './models/handbook-overview-entry';\nexport type { HandbookOverviewResponse } from './models/handbook-overview-response';\nexport type { HandbookTagsResponse } from './models/handbook-tags-response';\nexport type { HandbookVoiceResponse } from './models/handbook-voice-response';\nexport type { JoinLichtbotDto } from './models/join-lichtbot-dto';\nexport type { LeaveLichtbotDto } from './models/leave-lichtbot-dto';\nexport type { LichtbotClientMessageDto } from './models/lichtbot-client-message-dto';\nexport type { SethubAppChatResult } from './models/sethub-app-chat-result';\nexport type { SethubAppContextDto } from './models/sethub-app-context-dto';\nexport type { SethubAppContextResult } from './models/sethub-app-context-result';\nexport type { SethubNavPageDto } from './models/sethub-nav-page-dto';\nexport type { SethubNavRequestDto } from './models/sethub-nav-request-dto';\nexport type { SethubNavRequestResponse } from './models/sethub-nav-request-response';\nexport type { SethubProductListDto } from './models/sethub-product-list-dto';\nexport type { SethubProductListResponse } from './models/sethub-product-list-response';\nexport type { SethubProductSearchResponse } from './models/sethub-product-search-response';\nexport type { StructuredAnswer } from './models/structured-answer';\nexport type { StructuredAnswerEntry } from './models/structured-answer-entry';\nexport type { SummaryResult } from './models/summary-result';\nexport type { UserActionDto } from './models/user-action-dto';\nexport type { VoiceHandbookEntryDto } from './models/voice-handbook-entry-dto';\nexport { HandbookBaseService } from './handbook-base-service';\nexport { AppService } from './services/app.service';\nexport { HandbookEntriesService } from './services/handbook-entries.service';\nexport { ConversationService } from './services/conversation.service';\nexport { LichtbotService } from './services/lichtbot.service';\nexport { PresidioService } from './services/presidio.service';\nexport { SethubAppsService } from './services/sethub-apps.service';\nexport { SethubNavService } from './services/sethub-nav.service';\nexport { SethubProductsService } from './services/sethub-products.service';\nexport { SethubUserActionService } from './services/sethub-user-action.service';\n\nexport type { AppControllerGetHealthCheck$Params } from './fn/app/app-controller-get-health-check';\nexport { appControllerGetHealthCheck } from './fn/app/app-controller-get-health-check';\nexport type { HandbookEntryControllerFindAllHandbookEntries$Params } from './fn/handbook-entries/handbook-entry-controller-find-all-handbook-entries';\nexport { handbookEntryControllerFindAllHandbookEntries } from './fn/handbook-entries/handbook-entry-controller-find-all-handbook-entries';\nexport type { HandbookEntryControllerCreateHandbookEntry$Params } from './fn/handbook-entries/handbook-entry-controller-create-handbook-entry';\nexport { handbookEntryControllerCreateHandbookEntry } from './fn/handbook-entries/handbook-entry-controller-create-handbook-entry';\nexport type { HandbookEntryControllerFindAllHandbookEntriesForOverview$Params } from './fn/handbook-entries/handbook-entry-controller-find-all-handbook-entries-for-overview';\nexport { handbookEntryControllerFindAllHandbookEntriesForOverview } from './fn/handbook-entries/handbook-entry-controller-find-all-handbook-entries-for-overview';\nexport type { HandbookEntryControllerFindAllTags$Params } from './fn/handbook-entries/handbook-entry-controller-find-all-tags';\nexport { handbookEntryControllerFindAllTags } from './fn/handbook-entries/handbook-entry-controller-find-all-tags';\nexport type { HandbookEntryControllerFindHandbookEntryById$Params } from './fn/handbook-entries/handbook-entry-controller-find-handbook-entry-by-id';\nexport { handbookEntryControllerFindHandbookEntryById } from './fn/handbook-entries/handbook-entry-controller-find-handbook-entry-by-id';\nexport type { HandbookEntryControllerUpdateHandbookEntry$Params } from './fn/handbook-entries/handbook-entry-controller-update-handbook-entry';\nexport { handbookEntryControllerUpdateHandbookEntry } from './fn/handbook-entries/handbook-entry-controller-update-handbook-entry';\nexport type { HandbookEntryControllerDeleteHandbookEntry$Params } from './fn/handbook-entries/handbook-entry-controller-delete-handbook-entry';\nexport { handbookEntryControllerDeleteHandbookEntry } from './fn/handbook-entries/handbook-entry-controller-delete-handbook-entry';\nexport type { HandbookEntryControllerGetTextFromVoice$Params } from './fn/handbook-entries/handbook-entry-controller-get-text-from-voice';\nexport { handbookEntryControllerGetTextFromVoice } from './fn/handbook-entries/handbook-entry-controller-get-text-from-voice';\nexport type { HandbookEntryControllerGenerateHandbookFromText$Params } from './fn/handbook-entries/handbook-entry-controller-generate-handbook-from-text';\nexport { handbookEntryControllerGenerateHandbookFromText } from './fn/handbook-entries/handbook-entry-controller-generate-handbook-from-text';\nexport type { HandbookEntryControllerGenerateHandbook$Params } from './fn/handbook-entries/handbook-entry-controller-generate-handbook';\nexport { handbookEntryControllerGenerateHandbook } from './fn/handbook-entries/handbook-entry-controller-generate-handbook';\nexport type { ConversationControllerConversation$Params } from './fn/conversation/conversation-controller-conversation';\nexport { conversationControllerConversation } from './fn/conversation/conversation-controller-conversation';\nexport type { ConversationControllerGetConversationOverview$Params } from './fn/conversation/conversation-controller-get-conversation-overview';\nexport { conversationControllerGetConversationOverview } from './fn/conversation/conversation-controller-get-conversation-overview';\nexport type { ConversationControllerGetRelevantContext$Params } from './fn/conversation/conversation-controller-get-relevant-context';\nexport { conversationControllerGetRelevantContext } from './fn/conversation/conversation-controller-get-relevant-context';\nexport type { ConversationControllerGetConversationDetail$Params } from './fn/conversation/conversation-controller-get-conversation-detail';\nexport { conversationControllerGetConversationDetail } from './fn/conversation/conversation-controller-get-conversation-detail';\nexport type { LichtbotControllerGetImportHistory$Params } from './fn/lichtbot/lichtbot-controller-get-import-history';\nexport { lichtbotControllerGetImportHistory } from './fn/lichtbot/lichtbot-controller-get-import-history';\nexport type { LichtbotControllerGetImportAdresses$Params } from './fn/lichtbot/lichtbot-controller-get-import-adresses';\nexport { lichtbotControllerGetImportAdresses } from './fn/lichtbot/lichtbot-controller-get-import-adresses';\nexport type { LichtbotControllerJoinRoom$Params } from './fn/lichtbot/lichtbot-controller-join-room';\nexport { lichtbotControllerJoinRoom } from './fn/lichtbot/lichtbot-controller-join-room';\nexport type { LichtbotControllerLeaveRoom$Params } from './fn/lichtbot/lichtbot-controller-leave-room';\nexport { lichtbotControllerLeaveRoom } from './fn/lichtbot/lichtbot-controller-leave-room';\nexport type { LichtbotControllerReciveMessage$Params } from './fn/lichtbot/lichtbot-controller-recive-message';\nexport { lichtbotControllerReciveMessage } from './fn/lichtbot/lichtbot-controller-recive-message';\nexport type { PresidioControllerAnalyzeText$Params } from './fn/presidio/presidio-controller-analyze-text';\nexport { presidioControllerAnalyzeText } from './fn/presidio/presidio-controller-analyze-text';\nexport type { PresidioControllerAnonymizeText$Params } from './fn/presidio/presidio-controller-anonymize-text';\nexport { presidioControllerAnonymizeText } from './fn/presidio/presidio-controller-anonymize-text';\nexport type { PresidioControllerTest$Params } from './fn/presidio/presidio-controller-test';\nexport { presidioControllerTest } from './fn/presidio/presidio-controller-test';\nexport type { SethubAppsControllerSummary$Params } from './fn/sethub-apps/sethub-apps-controller-summary';\nexport { sethubAppsControllerSummary } from './fn/sethub-apps/sethub-apps-controller-summary';\nexport type { SethubAppsControllerGetRelevantContext$Params } from './fn/sethub-apps/sethub-apps-controller-get-relevant-context';\nexport { sethubAppsControllerGetRelevantContext } from './fn/sethub-apps/sethub-apps-controller-get-relevant-context';\nexport type { SethubAppsControllerConversation$Params } from './fn/sethub-apps/sethub-apps-controller-conversation';\nexport { sethubAppsControllerConversation } from './fn/sethub-apps/sethub-apps-controller-conversation';\nexport type { SethubNavControllerProcessNavRequest$Params } from './fn/sethub-nav/sethub-nav-controller-process-nav-request';\nexport { sethubNavControllerProcessNavRequest } from './fn/sethub-nav/sethub-nav-controller-process-nav-request';\nexport type { SethubProductsControllerGetProductList$Params } from './fn/sethub-products/sethub-products-controller-get-product-list';\nexport { sethubProductsControllerGetProductList } from './fn/sethub-products/sethub-products-controller-get-product-list';\nexport type { SethubProductsControllerGetProductSearch$Params } from './fn/sethub-products/sethub-products-controller-get-product-search';\nexport { sethubProductsControllerGetProductSearch } from './fn/sethub-products/sethub-products-controller-get-product-search';\nexport type { SethubUserActionControllerGenerateActionComment$Params } from './fn/sethub-user-action/sethub-user-action-controller-generate-action-comment';\nexport { sethubUserActionControllerGenerateActionComment } from './fn/sethub-user-action/sethub-user-action-controller-generate-action-comment';\n","import { Component, inject, OnInit, signal } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { HandbookEntriesService, VoiceHandbookEntryDto } from '../../handbook-api';\nimport { DialogRef } from '../../../../../dialog/dialog-ref';\nimport { DIALOG_DATA } from '../../../../../dialog/dialog.types';\nimport { ButtonComponent } from '../../../../../button/button.component';\n\n@Component({\n selector: 'lib-dialog-edit-voice-text',\n imports: [ButtonComponent, ReactiveFormsModule],\n templateUrl: './dialog-edit-voice-text.component.html',\n styleUrl: './dialog-edit-voice-text.component.scss',\n})\nexport class DialogEditVoiceTextComponent implements OnInit {\n control = new FormControl<string>('', Validators.required);\n isSaving = signal(false);\n\n readonly data = inject(DIALOG_DATA) as { text: string; dto: VoiceHandbookEntryDto };\n readonly dialogRef = inject(DialogRef);\n\n constructor(private readonly handbookEntriesService: HandbookEntriesService) {}\n\n ngOnInit(): void {\n this.control.setValue(this.data.text);\n }\n\n createEntry(): void {\n if (this.control.invalid) {\n this.control.markAsTouched();\n return;\n }\n\n this.isSaving.set(true);\n\n this.handbookEntriesService\n .handbookEntryControllerGenerateHandbookFromText({\n body: { ...this.data.dto, editedText: this.control.value! },\n })\n .subscribe({\n next: () => {\n this.dialogRef.close(true);\n },\n error: error => {\n window.alert('Fehler beim Erstellen des Eintrags');\n console.error('Error creating handbook from voice text:', error);\n },\n });\n }\n}\n","<div>\n <textarea\n rows=\"20\"\n style=\"width: 100%; padding: 10px\"\n matInput\n [formControl]=\"control\"\n ></textarea>\n</div>\n\n<div class=\"bottom\">\n <button ao-button [disabled]=\"isSaving()\" (click)=\"dialogRef.close(false)\" variant=\"outline\">\n Abbrechen\n </button>\n <button ao-button [disabled]=\"isSaving()\" (click)=\"createEntry()\" variant=\"primary\">\n Eintrag erstellen\n </button>\n</div>\n","import {\n ICompanyOverview,\n IUserOverview,\n IUserSessionResponse,\n IWorkspaceApp,\n IWorkspaceAppsResponse,\n} from '@ah-oh/ao-workspaces-types';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, catchError, map, of, tap } from 'rxjs';\nimport { UserSession, WorkspaceNavbarConfig } from './workspace-navbar.types';\n\n@Injectable({ providedIn: 'root' })\nexport class WorkspaceNavbarService {\n private readonly http = inject(HttpClient);\n public static readonly HANDBOOK_COMPANY_ID = '5e81e280c398ce1e2bc5b6fa';\n private static readonly PUBLIC_BASE_URL = '/auth-api/public/auth';\n private static readonly AUTH_BASE_URL = '/auth-api/auth';\n private static readonly WORKSPACE_APPS_URL = '/auth-api/workspace-apps';\n private static readonly COMPANY_URL = '/auth-api/companies';\n private readonly session = new BehaviorSubject<UserSession | null>(null);\n readonly session$ = this.session.asObservable();\n readonly sessionSignal = toSignal(this.session$);\n private readonly workspaceApps = new BehaviorSubject<IWorkspaceApp[]>([]);\n readonly workspaceApps$ = this.workspaceApps.asObservable();\n readonly workspaceAppsSignal = toSignal(this.workspaceApps$);\n private readonly workspaceAppsResponse = new BehaviorSubject<IWorkspaceAppsResponse | null>(null);\n readonly workspaceAppsResponseSignal = toSignal(this.workspaceAppsResponse.asObservable());\n private readonly companies = new BehaviorSubject<ICompanyOverview[]>([]);\n readonly companies$ = this.companies.asObservable();\n readonly companiesSignal = toSignal(this.companies$);\n private readonly activeAppId = new BehaviorSubject<string | undefined>(undefined);\n readonly activeAppIdSignal = toSignal(this.activeAppId.asObservable());\n private loginUrl = 'https://login.ah-oh.com';\n private production = true;\n private preserveRedirectUrl = true;\n\n get userSession(): UserSession | null {\n return this.session.value;\n }\n\n get currentAppId(): string | undefined {\n return this.activeAppId.value;\n }\n\n init(config: WorkspaceNavbarConfig): Promise<void> {\n this.activeAppId.next(config.appId);\n this.production = config.production;\n this.preserveRedirectUrl = config.preserveRedirectUrl ?? true;\n if (config.loginUrl) {\n this.loginUrl = config.loginUrl;\n }\n return new Promise((resolve, reject) => {\n const query = Object.fromEntries([...new URLSearchParams(window.location.search)]);\n const url = query['jwtKey']\n ? `${WorkspaceNavbarService.PUBLIC_BASE_URL}/token/${query['jwtKey']}`\n : `${WorkspaceNavbarService.PUBLIC_BASE_URL}/refresh-session`;\n this.http.get<IUserSessionResponse>(url).subscribe({\n next: res => {\n if (query['jwtKey']) {\n const cleanUrl = new URL(window.location.href);\n cleanUrl.searchParams.delete('jwtKey');\n window.history.replaceState({}, '', cleanUrl.toString());\n }\n const userSession: UserSession = {\n ...res,\n isExternalUser: res.companyId !== res.enabledCompanyId,\n };\n this.activeAppId.next(userSession.appId ?? userSession.product ?? config.appId);\n this.session.next(userSession);\n this.loadWorkspaceApps().subscribe();\n this.findEnabledCompanies().subscribe();\n resolve();\n },\n error: err => {\n console.error('Session initialization failed:', err);\n if (confirm('Ihre Session ist abgelaufen. Bitte melden Sie sich erneut an.')) {\n window.location.href = this.buildLoginUrl();\n }\n reject(err);\n },\n });\n });\n }\n\n loadWorkspaceApps(): Observable<IWorkspaceApp[]> {\n return this.http.get<IWorkspaceAppsResponse>(WorkspaceNavbarService.WORKSPACE_APPS_URL).pipe(\n map(response => {\n const normalizedResponse = this.normalizeWorkspaceAppsResponse(response);\n const workspaceApps = [...normalizedResponse.products, ...normalizedResponse.customApps];\n this.workspaceApps.next(workspaceApps);\n this.workspaceAppsResponse.next(normalizedResponse);\n return workspaceApps;\n }),\n catchError(err => {\n console.error('Failed to load workspace apps:', err);\n return of([]);\n })\n );\n }\n\n findEnabledCompanies(): Observable<ICompanyOverview[]> {\n return this.http.get<ICompanyOverview[]>('/auth-api/public/companies').pipe(\n tap(companies => this.companies.next(companies)),\n catchError(err => {\n console.error('Failed to load companies:', err);\n return of([]);\n })\n );\n }\n\n findUsersFromCompany(): Observable<IUserOverview[]> {\n return this.http.get<IUserOverview[]>(`/auth-api/users/from-company`);\n }\n\n changeCompany(args: {\n companyId?: string;\n appId?: string;\n isTesting?: boolean;\n }): Observable<{ jwtKey: string }> {\n const session = this.session.value;\n if (!session) {\n throw new Error('Session is not initialized.');\n }\n const appId = args.appId ?? this.currentAppId ?? 'admin';\n const companyId = args.companyId ?? session.enabledCompanyId;\n return this.http\n .get<{\n jwtKey: string;\n }>(`/auth-api/users/new-company/${companyId}/${session.userId}/${appId}`)\n .pipe(\n tap(({ jwtKey }) => {\n const app = this.workspaceApps.value.find(a => a.appId === appId);\n const targetUrl = app\n ? this.getRuntimeBaseUrl(app, args.isTesting)\n : window.location.origin;\n window.location.href = this.buildJwtRedirectUrl({ targetUrl, jwtKey });\n })\n );\n }\n\n switchApp(appId: string, isTesting = false): Observable<{ jwtKey: string }> {\n const session = this.session.value;\n if (!session) {\n throw new Error('Session is not initialized.');\n }\n const app = this.workspaceApps.value.find(a => a.appId === appId);\n if (!app) {\n throw new Error(`App ${appId} not found`);\n }\n return this.http\n .get<{\n jwtKey: string;\n }>(`/auth-api/users/new-company/${session.enabledCompanyId}/${session.userId}/${appId}`)\n .pipe(\n tap(({ jwtKey }) => {\n const targetUrl = this.getRuntimeBaseUrl(app, isTesting);\n window.location.href = this.buildJwtRedirectUrl({ targetUrl, jwtKey });\n })\n );\n }\n\n createCompany(): Observable<{ jwtKey: string }> {\n return this.http\n .get<{ jwtKey: string }>(`${WorkspaceNavbarService.AUTH_BASE_URL}/jwt-key`)\n .pipe(\n tap(({ jwtKey }) => {\n window.location.href = this.buildLoginPathUrl('create-company', {\n product: this.currentAppId,\n jwtKey,\n });\n })\n );\n }\n\n signOut(): Observable<{ success: boolean }> {\n return this.http\n .get<{ success: boolean }>(`${WorkspaceNavbarService.PUBLIC_BASE_URL}/sign-out`)\n .pipe(\n tap(() => {\n window.location.href = this.buildLoginUrl();\n })\n );\n }\n\n private buildLoginUrl(): string {\n const url = new URL(this.loginUrl, window.location.origin);\n url.searchParams.set('product', this.currentAppId ?? 'admin');\n if (this.preserveRedirectUrl) {\n const currentUrl = new URL(window.location.href);\n currentUrl.searchParams.delete('jwtKey');\n url.searchParams.set('redirectUrl', currentUrl.toString());\n }\n return url.toString();\n }\n\n replaceSessionParams(url: string): string {\n const session = this.session.value;\n if (!session) {\n throw new Error('Session is not initialized.');\n }\n return url.replace('{company}', session.enabledCompanyId).replace('{user}', session.userId);\n }\n\n getAppUrl(appId: string, isTesting = false): string | undefined {\n const app = this.workspaceApps.value.find(a => a.appId === appId);\n if (!app) return undefined;\n return this.getRuntimeBaseUrl(app, isTesting);\n }\n\n getCompanyLogo(companyId: string): Observable<{ url?: string }> {\n return this.http.get<{ url?: string }>(\n `${WorkspaceNavbarService.COMPANY_URL}/${companyId}/logo`\n );\n }\n\n /**\n * @deprecated Use testingUrl from WorkspaceApp instead\n */\n private getLegacyDevUrl(appId: string): string {\n const devUrls: Record<string, string> = {\n admin: 'http://localhost:4220',\n setHUB: 'http://localhost:4200',\n szales: 'http://localhost:4200',\n 'component-manager': 'http://localhost:4210',\n ai: 'http://localhost:4250',\n };\n return devUrls[appId] ?? `http://localhost:4200`;\n }\n\n private normalizeWorkspaceAppsResponse(response: IWorkspaceAppsResponse): IWorkspaceAppsResponse {\n if (this.production) {\n return response;\n }\n return {\n ...response,\n products: response.products.map(app => this.withRuntimeBaseUrl(app)),\n customApps: response.customApps.map(app => this.withRuntimeBaseUrl(app)),\n };\n }\n\n private withRuntimeBaseUrl(app: IWorkspaceApp): IWorkspaceApp {\n return {\n ...app,\n baseUrl: this.getRuntimeBaseUrl(app),\n };\n }\n\n private getRuntimeBaseUrl(app: IWorkspaceApp, isTesting = false): string {\n if (isTesting && app.testingUrl) {\n return app.testingUrl;\n }\n if (!this.production) {\n return app.testingUrl ?? this.getLegacyDevUrl(app.appId);\n }\n return app.baseUrl;\n }\n\n private buildJwtRedirectUrl(arg: { targetUrl: string; jwtKey: string }): string {\n const url = new URL(arg.targetUrl, window.location.origin);\n url.searchParams.set('jwtKey', arg.jwtKey);\n return url.toString();\n }\n\n private buildLoginPathUrl(path: string, params: Record<string, string | undefined>): string {\n const baseUrl = this.loginUrl.endsWith('/') ? this.loginUrl : `${this.loginUrl}/`;\n const url = new URL(path, baseUrl);\n Object.entries(params).forEach(([key, value]) => {\n if (value) url.searchParams.set(key, value);\n });\n return url.toString();\n }\n\n getEnabledApps(): string[] {\n const session = this.session.value;\n return session?.enabledApps ?? this.buildLegacyEnabledApps(session);\n }\n\n /**\n * @deprecated Use session.enabledApps instead\n */\n private buildLegacyEnabledApps(session: UserSession | null): string[] {\n if (!session) return [];\n const apps: string[] = [];\n if (session.adminEnabled) apps.push('admin');\n if (session.setHubEnabled) apps.push('setHUB');\n if (session.szalesEnabled) apps.push('szales');\n if (session.componentManagerEnabled) apps.push('component-manager');\n return apps;\n }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd } from '@angular/router';\nimport RecordRTC from 'recordrtc';\nimport { Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { DialogEditVoiceTextComponent } from './dialog-edit-voice-text/dialog-edit-voice-text.component';\nimport { Product } from '@ah-oh/ao-workspaces-types';\nimport {\n HandbookEntriesService,\n HandbookVoiceResponse,\n VoiceHandbookEntryDto,\n} from '../handbook-api';\nimport { WorkspaceNavbarService } from '../../../../workspace-navbar/workspace-navbar.service';\nimport { DialogService } from '../../../../dialog/dialog.service';\n\n@Injectable()\nexport class HandbookVoiceService {\n recording = signal(false);\n saving = signal(false);\n\n mediaRecorder?: RecordRTC;\n\n private dto: VoiceHandbookEntryDto | undefined;\n private links: { url: string; title: string }[] = [];\n private routerSubscription: Subscription | undefined;\n\n private readonly dialogService = inject(DialogService);\n\n constructor(\n private readonly router: Router,\n private readonly handbookEntriesService: HandbookEntriesService,\n private readonly authService: WorkspaceNavbarService,\n private readonly route: ActivatedRoute\n ) {}\n\n async startRecording(title: string) {\n let app: 'szales' | 'sethub' | 'admin' | undefined;\n\n switch (this.authService.userSession?.product) {\n case Product.SZALES:\n app = 'szales';\n break;\n case Product.SETHUB:\n app = 'sethub';\n break;\n case Product.ADMIN:\n app = 'admin';\n break;\n }\n\n if (!app) {\n throw new Error('Product not found');\n }\n\n const dto: VoiceHandbookEntryDto = {\n title,\n app,\n active: false,\n links: '',\n };\n\n this.dto = dto;\n\n this.links.push({\n url: window.location.href,\n title: this.route.snapshot.title ?? '',\n });\n\n this.routerSubscription = this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n const snapshot = this.route.snapshot;\n this.links.push({\n url: window.location.href,\n title: snapshot.title ?? '',\n });\n }\n });\n\n this.recording.set(true);\n\n const stream = await navigator.mediaDevices.getUserMedia({ audio: true });\n this.mediaRecorder = new RecordRTC(stream, { type: 'audio', mimeType: 'audio/wav' });\n this.mediaRecorder.startRecording();\n }\n\n stopRecording(action: 'save' | 'delete') {\n this.recording.set(false);\n\n const mediaRecorder = this.mediaRecorder;\n const dto = this.dto;\n if (dto) {\n dto.links = JSON.stringify(this.links);\n }\n\n this.routerSubscription?.unsubscribe();\n this.routerSubscription = undefined;\n this.mediaRecorder = undefined;\n this.dto = undefined;\n this.links = [];\n\n if (action === 'save' && mediaRecorder && dto) {\n this.saving.set(true);\n mediaRecorder.stopRecording(async () => {\n const audioBlob = mediaRecorder.getBlob();\n\n try {\n // Convert audioBlob to a format compatible with Whisper\n const audioBuffer = await audioBlob.arrayBuffer();\n const audioFile = new File([audioBuffer], 'audio.wav', { type: 'audio/wav' });\n\n // Send the audio file to your API\n this.handbookEntriesService\n .handbookEntryControllerGetTextFromVoice({\n body: { ...dto, file: audioFile },\n })\n .subscribe({\n next: result => {\n this.openVoiceTextEdit(result, dto);\n this.saving.set(false);\n },\n error: error => {\n window.alert('Fehler beim Erstellen des Texts');\n console.error('Error sending voice data:', error);\n this.saving.set(false);\n },\n });\n } catch (error) {\n console.error('Error processing audio data:', error);\n }\n });\n } else {\n mediaRecorder?.stopRecording();\n }\n }\n\n openVoiceTextEdit(result: HandbookVoiceResponse, dto: VoiceHandbookEntryDto): void {\n const dialog = this.dialogService.open(DialogEditVoiceTextComponent, {\n data: {\n text: result.text,\n dto,\n },\n size: 'xl',\n title: 'Handbuch Aufnahme bearbeiten',\n });\n\n dialog.closed.subscribe(res => {\n if (res) {\n window.alert('Handbuch Eintrag gespeichert');\n }\n });\n }\n}\n","import { Component, input } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport { WorkspaceNavbarService } from '../../../../../workspace-navbar/workspace-navbar.service';\nimport { InputComponent } from '../../../../../input/input.component';\nimport { SelectComponent } from '../../../../../select/select.component';\nimport { ChipsInputComponent } from '../../../../../chips-input/chips-input.component';\nimport { CheckboxComponent } from '../../../../../checkbox/checkbox.component';\nimport { MarkdownComponent } from 'ngx-markdown';\n\nexport enum HandbookAppType {\n SZALES = 'szales',\n SETHUB = 'sethub',\n ADMIN = 'admin',\n}\n\nexport type HandbookForm = FormGroup<{\n _id: FormControl<string | null>;\n title: FormControl<string | null>;\n active: FormControl<boolean | null>;\n content: FormControl<string | null>;\n app: FormControl<HandbookAppType | null>;\n tags: FormControl<string[] | null>;\n}>;\nexport type LinkForm = FormGroup<{\n title: FormControl<string | null>;\n url: FormControl<string | null>;\n}>;\n\n@Component({\n selector: 'lib-handbook',\n imports: [\n ReactiveFormsModule,\n MarkdownComponent,\n InputComponent,\n SelectComponent,\n ChipsInputComponent,\n CheckboxComponent,\n ],\n templateUrl: './handbook.component.html',\n styleUrl: './handbook.component.scss',\n})\nexport class HandbookComponent {\n public form = input<HandbookForm | undefined>();\n public lastSavedText = input<string>();\n public showSpinner = input<boolean>();\n public availableTags = input<string[]>([]);\n\n readonly separatorKeysCodes: number[] = [ENTER, COMMA];\n\n handbookType = HandbookAppType;\n\n constructor(private readonly authService: WorkspaceNavbarService) {}\n}\n","@if (form(); as form) {\n <form [formGroup]=\"form\" class=\"handbook\">\n <div class=\"header\">\n <h1 class=\"title-headline\">{{ form?.value?.title }}</h1>\n <div class=\"save-info\">\n {{ lastSavedText() }}\n </div>\n </div>\n <div class=\"settings\">\n <ao-input label=\"Titel\" type=\"text\" formControlName=\"title\" />\n\n <ao-select\n label=\"App\"\n formControlName=\"app\"\n [options]=\"[\n { value: handbookType.SZALES, label: 'Szales' },\n { value: handbookType.SETHUB, label: 'Sethub' },\n { value: handbookType.ADMIN, label: 'Admin' },\n ]\"\n />\n\n <ao-chips-input label=\"Tags\" [formControl]=\"form.controls.tags\" [options]=\"availableTags()\" />\n\n <ao-checkbox label=\"Aktiv\" formControlName=\"active\" />\n </div>\n <div class=\"content-editor\">\n <div>Inhalt</div>\n <div>Vorschau</div>\n <textarea formControlName=\"content\" class=\"editor\"></textarea>\n <div class=\"preview\">\n <markdown [data]=\"form.controls.content.value ?? ''\"></markdown>\n </div>\n </div>\n </form>\n}\n","import { Component, inject } from '@angular/core';\nimport { DIALOG_DATA } from '../../../../../dialog/dialog.types';\nimport { DialogRef } from '../../../../../dialog/dialog-ref';\nimport { ButtonComponent } from '../../../../../button/button.component';\n\ninterface DeleteHandbookDialogData {\n handbookName: string;\n}\n\n@Component({\n selector: 'lib-dialog-delete-handbook',\n imports: [ButtonComponent],\n templateUrl: './dialog-delete-handbook.component.html',\n styleUrl: './dialog-delete-handbook.component.scss',\n})\nexport class DialogDeleteHandbookComponent {\n readonly data = inject(DIALOG_DATA) as DeleteHandbookDialogData | null;\n readonly dialogRef = inject(DialogRef);\n\n close(remove: boolean) {\n this.dialogRef.close(remove);\n }\n}\n","<p>Möchten Sie das Handbuch \"{{ data?.handbookName }}\" wirklich löschen?</p>\n\n<div class=\"bottom\">\n <button ao-button (click)=\"close(false)\" variant=\"outline\">Abbrechen</button>\n <button ao-button (click)=\"close(true)\" variant=\"primary\">Löschen</button>\n</div>\n","/* eslint-disable @typescript-eslint/consistent-type-assertions */\nimport { Component, computed, inject, OnDestroy, OnInit, signal } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { HandbookAppType, HandbookComponent, HandbookForm } from './handbook/handbook.component';\nimport { debounceTime, of, Subject, takeUntil } from 'rxjs';\nimport { DialogDeleteHandbookComponent } from './dialog-delete-handbook/dialog-delete-handbook.component';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { Product } from '@ah-oh/ao-workspaces-types';\nimport { WorkspaceNavbarService } from '../../../../workspace-navbar/workspace-navbar.service';\nimport { HandbookEntriesService, HandbookEntry, HandbookOverviewEntry } from '../handbook-api';\nimport { IconComponent } from '../../../../icon/icon.component';\nimport { phosphorPlus, phosphorTrash, phosphorX } from '@ng-icons/phosphor-icons/regular';\nimport { InputComponent } from '../../../../input/input.component';\nimport { DIALOG_DATA } from '../../../../dialog/dialog.types';\nimport { DialogService } from '../../../../dialog/dialog.service';\nimport { DialogRef } from '../../../../dialog/dialog-ref';\nimport { ButtonComponent } from '../../../../button/button.component';\nimport { MultiselectComponent } from '../../../../multiselect/multiselect.component';\n\nexport interface HandbookDialogData {\n /**\n * ID for a handbook to open intially\n */\n handbookId?: string;\n}\n\ninterface SelectedHandbook {\n overview?: HandbookOverviewEntry; // undefined if newly created and not yet saved\n saveStatus: 'saved' | 'saving' | 'needsSaving' | 'initialLoad';\n lastSaved?: Date;\n}\n\n@Component({\n selector: 'lib-handbook-dialog',\n imports: [\n HandbookComponent,\n IconComponent,\n InputComponent,\n ReactiveFormsModule,\n ButtonComponent,\n MultiselectComponent,\n ],\n templateUrl: './handbook-dialog.component.html',\n styleUrl: './handbook-dialog.component.scss',\n})\nexport class HandbookDialogComponent implements OnInit, OnDestroy {\n readonly data = inject(DIALOG_DATA) as HandbookDialogData;\n readonly dialogRef = inject(DialogRef);\n\n protected readonly addIcon = phosphorPlus;\n protected readonly deleteIcon = phosphorTrash;\n protected readonly closeIcon = phosphorX;\n\n handbookOverviews = signal<HandbookOverviewEntry[]>([]);\n selectedHandbook = signal<SelectedHandbook | undefined>(undefined);\n\n canCreate = computed(() => {\n const selected = this.selectedHandbook();\n return selected === undefined || selected.overview !== undefined;\n });\n\n searchControl = new FormControl<string>('');\n searchTerm = toSignal(this.searchControl.valueChanges);\n\n tagFilterControl = new FormControl<string[]>([]);\n selectedTags = toSignal(this.tagFilterControl.valueChanges);\n\n availableTags = computed(() => {\n // Extract all unique tags from handbook entries\n const allTags = new Set<string>();\n this.handbookOverviews().forEach(handbook => {\n if (handbook.tags && Array.isArray(handbook.tags)) {\n handbook.tags.forEach(tag => allTags.add(tag));\n }\n });\n return Array.from(allTags).sort();\n });\n availableTagsSelect = computed(() => {\n return this.availableTags().map(tag => ({ value: tag, label: tag }));\n });\n\n listedHandbookOverviews = computed(() => {\n const search = this.searchTerm()?.toLowerCase() || '';\n const selectedTags = this.selectedTags() || [];\n\n return this.handbookOverviews().filter(handbook => {\n // Filter by search text\n const matchesSearch = handbook.title.toLowerCase().includes(search);\n\n // Filter by tags\n const matchesTags =\n selectedTags.length === 0 ||\n (handbook.tags && selectedTags.some(tag => handbook.tags.includes(tag)));\n\n return matchesSearch && matchesTags;\n });\n });\n\n currentlySaving = computed(() => {\n return this.selectedHandbook()?.saveStatus === 'saving';\n });\n\n lastSavedText = computed(() => {\n const selected = this.selectedHandbook();\n if (!selected) return undefined;\n switch (selected.saveStatus) {\n case 'saved':\n return `Zuletzt gespeichert: ${selected.lastSaved?.toLocaleString('de-DE', {\n dateStyle: 'short',\n timeStyle: 'short',\n })}`;\n case 'saving':\n return `Speichern...`;\n case 'needsSaving':\n return `Ungespeicherte Änderungen`;\n case 'initialLoad':\n return undefined;\n }\n });\n\n form: HandbookForm = new FormGroup({\n _id: new FormControl(''),\n title: new FormControl('', Validators.required),\n active: new FormControl(true),\n content: new FormControl('', Validators.required),\n app: new FormControl<HandbookAppType | null>(\n { value: null, disabled: true },\n Validators.required\n ),\n tags: new FormControl<string[]>([]),\n });\n destroy = new Subject<void>();\n\n private type: HandbookAppType = HandbookAppType.SZALES;\n\n private readonly dialogService = inject(DialogService);\n\n constructor(\n private readonly handbookEntriesService: HandbookEntriesService,\n private readonly authService: WorkspaceNavbarService\n ) {}\n\n ngOnInit() {\n const product = this.authService.userSession?.product;\n this.type =\n product === Product.SZALES\n ? HandbookAppType.SZALES\n : product === Product.SETHUB\n ? HandbookAppType.SETHUB\n : HandbookAppType.ADMIN;\n\n this.handbookEntriesService\n .handbookEntryControllerFindAllHandbookEntriesForOverview({\n app: this.type,\n })\n .subscribe(handbookEntries => {\n this.handbookOverviews.set(handbookEntries.entries);\n if (this.data?.handbookId) {\n const selected = this.handbookOverviews().find(\n handbook => handbook._id === this.data!.handbookId\n );\n if (selected) {\n this.select(selected);\n }\n }\n });\n this.form.valueChanges.pipe(takeUntil(this.destroy)).subscribe(() => {\n this.selectedHandbook.update(handbook => {\n if (!handbook) return undefined;\n return {\n ...handbook,\n saveStatus: 'needsSaving',\n };\n });\n });\n this.form.valueChanges.pipe(takeUntil(this.destroy), debounceTime(1000)).subscribe(() => {\n if (!this.form.valid) return;\n this.save();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy.next();\n this.destroy.complete();\n }\n\n add() {\n this.select(undefined);\n }\n\n save() {\n if (!this.form.valid) return;\n const selected = this.selectedHandbook();\n if (!selected) return;\n if (selected.saveStatus !== 'needsSaving') return;\n this.selectedHandbook.update(selected => {\n if (!selected) return selected;\n return {\n ...selected,\n saveStatus: 'saving',\n };\n });\n const formValue = this.form.getRawValue();\n if (!selected.overview) {\n this.handbookEntriesService\n .handbookEntryControllerCreateHandbookEntry({\n body: {\n title: formValue.title ?? '',\n app: formValue.app ?? 'szales',\n active: formValue.active ?? false,\n content: formValue.content ?? '',\n tags: formValue.tags ?? undefined,\n },\n })\n .subscribe(entry => {\n const handbook: HandbookOverviewEntry = {\n _id: entry._id,\n app: entry.app as HandbookAppType,\n title: entry.title,\n tags: entry.tags,\n };\n\n this.handbookOverviews.update(handbooks => [...handbooks, handbook]);\n\n if (!this.selectedHandbook()?.overview) {\n this.select(handbook, entry);\n }\n });\n } else {\n if (!formValue._id) return;\n this.handbookEntriesService\n .handbookEntryControllerUpdateHandbookEntry({\n body: {\n title: formValue.title ?? '',\n app: formValue.app ?? 'szales',\n active: formValue.active ?? false,\n content: formValue.content ?? undefined,\n tags: formValue.tags ?? undefined,\n },\n id: formValue._id,\n })\n .subscribe(updated => {\n this.handbookOverviews.update(handbooks => {\n const handbook = handbooks.find(handbook => handbook._id === updated._id);\n\n if (!handbook) {\n return handbooks;\n }\n\n handbook.app = updated.app as HandbookAppType;\n handbook.title = updated.title;\n handbook.tags = updated.tags;\n return [...handbooks];\n });\n if (this.selectedHandbook()?.overview?._id === updated._id) {\n this.selectedHandbook.update(selected => {\n if (!selected) {\n return selected;\n }\n\n return {\n ...selected,\n saveStatus: 'saved',\n lastSaved: new Date(updated.updatedAt),\n };\n });\n }\n });\n }\n }\n\n remove(entry: HandbookOverviewEntry) {\n const dialog = this.dialogService.open(DialogDeleteHandbookComponent, {\n data: {\n handbookName: entry.title,\n },\n title: `Möchten Sie das Handbuch \"${entry.title}\" wirklich löschen?`,\n });\n\n dialog.closed.subscribe(action => {\n if (action) {\n this.handbookEntriesService\n .handbookEntryControllerDeleteHandbookEntry({\n id: entry._id,\n })\n .subscribe(deletedHandbook => {\n this.handbookOverviews.update(handbooks => {\n return handbooks.filter(handbook => handbook._id !== deletedHandbook._id);\n });\n if (this.selectedHandbook()?.overview?._id === deletedHandbook._id) {\n this.select(null);\n }\n });\n }\n });\n }\n\n select(entry: HandbookOverviewEntry | null | undefined, loadedEntry?: HandbookEntry) {\n const isNew = entry === undefined;\n if (entry === null) {\n // deselect\n this.selectedHandbook.set(undefined);\n return;\n }\n if (!isNew && entry._id === this.selectedHandbook()?.overview?._id) return;\n this.save();\n\n const selectedHandbook: SelectedHandbook = {\n overview: entry,\n saveStatus: 'initialLoad',\n lastSaved: loadedEntry?.updatedAt ? new Date(loadedEntry.updatedAt) : undefined,\n };\n this.selectedHandbook.set(selectedHandbook);\n if (!isNew) {\n (loadedEntry\n ? of(loadedEntry)\n : this.handbookEntriesService.handbookEntryControllerFindHandbookEntryById({\n id: selectedHandbook.overview!._id,\n })\n ).subscribe(handbook => {\n if (this.selectedHandbook()?.overview?._id !== handbook._id) return;\n this.selectedHandbook.update(selected => {\n if (!selected) return selected;\n return {\n ...selected,\n saveStatus: 'saved',\n lastSaved: new Date(handbook.updatedAt),\n };\n });\n\n const appType = handbook.app as HandbookAppType;\n\n this.form.patchValue(\n { ...handbook, app: appType },\n {\n emitEvent: false,\n }\n );\n });\n } else {\n this.form.reset();\n this.form.get('app')?.setValue(this.type, { emitEvent: false });\n }\n }\n}\n","<button class=\"button-cancel\" ao-button variant=\"outline\" (click)=\"dialogRef.close()\">\n <ao-icon [svg]=\"closeIcon\"></ao-icon>\n</button>\n<div class=\"dialog-content\">\n <div class=\"sidebar\">\n <div class=\"header\">\n <h1>Handbuch</h1>\n <button ao-button variant=\"outline\" [disabled]=\"!canCreate()\" (click)=\"add()\">\n <ao-icon [svg]=\"addIcon\" size=\"sm\"></ao-icon>\n </button>\n </div>\n\n <ao-input class=\"full-width\" label=\"Suche\" type=\"text\" [formControl]=\"searchControl\" />\n\n <div style=\"margin: 20px 0px\">\n <ao-multiselect\n label=\"Tags\"\n [formControl]=\"tagFilterControl\"\n [options]=\"availableTagsSelect()\"\n />\n </div>\n\n <div class=\"handbook-list\">\n @for (entry of listedHandbookOverviews(); track entry._id) {\n <div\n class=\"handbook-entry\"\n [class.active]=\"entry === selectedHandbook()?.overview\"\n (click)=\"select(entry)\"\n >\n <div class=\"title\">{{ entry.title }}</div>\n\n <ao-icon [svg]=\"deleteIcon\" (click)=\"remove(entry); $event.stopPropagation()\" />\n </div>\n }\n </div>\n </div>\n <div class=\"content\">\n @if (selectedHandbook(); as handbook) {\n <div class=\"card\">\n @if (handbook.saveStatus !== 'initialLoad') {\n <lib-handbook\n [form]=\"form\"\n [lastSavedText]=\"lastSavedText()\"\n [showSpinner]=\"currentlySaving()\"\n [availableTags]=\"availableTags()\"\n class=\"handbook\"\n ></lib-handbook>\n }\n </div>\n }\n </div>\n</div>\n","import { Component, inject } from '@angular/core';\nimport { ButtonComponent } from '../../../../../button/button.component';\nimport { DialogRef } from '../../../../../dialog/dialog-ref';\n\n@Component({\n selector: 'lib-stop-record-dialog',\n imports: [ButtonComponent],\n templateUrl: './stop-record-dialog.component.html',\n styleUrl: './stop-record-dialog.component.scss',\n})\nexport class StopRecordDialogComponent {\n readonly dialogRef = inject(DialogRef);\n\n onCancel() {\n this.dialogRef.close();\n }\n\n onStop(save: boolean = false) {\n this.dialogRef.close(save ? 'save' : 'delete');\n }\n}\n","<p>Möchten Sie die Aufnahme wirklich beenden?</p>\n\n<div class=\"bottom\">\n <button ao-button variant=\"outline\" (click)=\"onCancel()\">Abbrechen</button>\n <button ao-button (click)=\"onStop()\" color=\"primary\">Beenden und löschen</button>\n <button ao-button (click)=\"onStop(true)\" variant=\"secondary\">Beenden und speichern</button>\n</div>\n","import { Component, inject } from '@angular/core';\nimport { ButtonComponent } from '../../../../../button/button.component';\nimport { DialogRef } from '../../../../../dialog/dialog-ref';\nimport { InputComponent } from '../../../../../input/input.component';\n\n@Component({\n selector: 'lib-start-record-dialog',\n imports: [ButtonComponent, InputComponent],\n templateUrl: './start-record-dialog.component.html',\n styleUrl: './start-record-dialog.component.scss',\n})\nexport class StartRecordDialogComponent {\n readonly dialogRef = inject(DialogRef);\n\n title = '';\n\n onCancel() {\n this.dialogRef.close();\n }\n\n onStart() {\n this.dialogRef.close(this.title);\n }\n}\n","<ao-input class=\"full-width\" label=\"Titel\" type=\"text\" [(value)]=\"title\" />\n\n<div class=\"bottom\">\n <button ao-button (click)=\"onCancel()\" variant=\"outline\">Abbrechen</button>\n <button ao-button (click)=\"onStart()\" variant=\"primary\" [disabled]=\"!title\">\n Aufnahme starten\n </button>\n</div>\n","import { AccessRole, Product } from '@ah-oh/ao-workspaces-types';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n inject,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n PLATFORM_ID,\n} from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { Subject, takeUntil } from 'rxjs';\nimport { HandbookVoiceService } from './handbook-dialog/handbook-voice.service';\nimport { WorkspaceNavbarService } from '../../../workspace-navbar/workspace-navbar.service';\nimport { isPlatformBrowser } from '@angular/common';\nimport { HandbookDialogComponent } from './handbook-dialog/handbook-dialog.component';\nimport { StopRecordDialogComponent } from './handbook-dialog/stop-record-dialog/stop-record-dialog.component';\nimport { StartRecordDialogComponent } from './handbook-dialog/start-record-dialog/start-record-dialog.component';\nimport {\n phosphorBookOpenText,\n phosphorDotsThreeVertical,\n phosphorMicrophone,\n phosphorTestTube,\n} from '@ng-icons/phosphor-icons/regular';\nimport { TableRowActionsComponent } from '../../../table/components/table-row-actions.component';\nimport { TableRowAction } from '../../../table/table.types';\nimport { DialogService } from '../../../dialog/dialog.service';\n\n@Component({\n selector: 'ao-nav-tools',\n templateUrl: './nav-tools.component.html',\n styleUrl: './nav-tools.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-nav-tools',\n },\n imports: [TableRowActionsComponent],\n providers: [HandbookVoiceService],\n})\nexport class NavToolsComponent implements OnInit, OnDestroy {\n protected readonly moreVertIcon = phosphorDotsThreeVertical;\n protected readonly handbookIcon = phosphorBookOpenText;\n protected readonly handbookRecordIcon = phosphorMicrophone;\n protected readonly testIcon = phosphorTestTube;\n\n @Input() activeCompany: string | null = '';\n @Input() companySearch!: FormControl;\n\n @Output() changeCompany = new EventEmitter<string>();\n\n isTesting = new FormControl<boolean>(false);\n\n product = Product;\n accessRole = AccessRole;\n\n rowActions = computed(() => {\n const session = this.authService.sessionSignal();\n\n const actions: TableRowAction[] = [\n { id: 'handbook', label: 'Handbuch', icon: this.handbookIcon },\n { id: 'record-handbook', label: 'Handbuch aufnehmen', icon: this.handbookRecordIcon },\n ];\n\n if (\n (session?.product === Product.SZALES || session?.product === Product.SETHUB) &&\n session?.role === AccessRole.SUPER_ADMIN\n ) {\n actions.unshift({ id: 'preview', label: 'Toggle Preview', icon: this.testIcon });\n }\n\n return actions;\n });\n\n private readonly destroy = new Subject<void>();\n\n private readonly dialogService = inject(DialogService);\n\n constructor(\n public readonly handbookVoiceService: HandbookVoiceService,\n public readonly authService: WorkspaceNavbarService,\n @Inject(PLATFORM_ID) private readonly platformId: object\n ) {}\n\n ngOnInit(): void {\n this.authService.session$.pipe(takeUntil(this.destroy)).subscribe(session => {\n if (isPlatformBrowser(this.platformId)) {\n const isTesting =\n (session?.product === Product.SZALES &&\n window.location.href.includes('https://preview.szales.de')) ||\n (session?.product === Product.SETHUB &&\n window.location.href.includes('https://preview.sethub.de'));\n\n this.isTesting.setValue(isTesting, { emitEvent: false });\n }\n });\n\n this.isTesting.valueChanges.pipe(takeUntil(this.destroy)).subscribe(value => {\n this.authService\n .changeCompany({\n companyId: this.authService.userSession?.enabledCompanyId,\n isTesting: !!value,\n })\n .subscribe();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy.next();\n this.destroy.complete();\n }\n\n onRowActionClick(action: TableRowAction<string>): void {\n if (action.id === 'preview') {\n this.isTesting.setValue(!this.isTesting.value);\n } else if (action.id === 'handbook') {\n this.openHandbookDialog();\n } else if (action.id === 'record-handbook') {\n this.startRecording();\n }\n }\n\n openHandbookDialog() {\n this.dialogService.open(HandbookDialogComponent, {\n size: 'full',\n showFooter: false,\n showHeader: false,\n });\n }\n\n startRecording() {\n const dialog = this.dialogService.open(StartRecordDialogComponent, {\n size: 'md',\n title: 'Handbuch aufnehmen',\n showFooter: false,\n });\n\n dialog.closed.subscribe(title => {\n if (title && typeof title === 'string') {\n this.handbookVoiceService.startRecording(title);\n }\n });\n }\n\n stopRecording() {\n const dialog = this.dialogService.open(StopRecordDialogComponent, {\n size: 'md',\n title: 'Aufnahme beenden',\n showFooter: false,\n });\n\n dialog.closed.subscribe(action => {\n if (action === 'save' || action === 'delete') {\n this.handbookVoiceService.stopRecording(action);\n }\n });\n }\n}\n","<div>\n <!-- Show the button only when not recording -->\n @if (!handbookVoiceService.recording() && !handbookVoiceService.saving()) {\n <ao-table-row-actions\n [actions]=\"rowActions()\"\n [row]=\"'test'\"\n (actionClick)=\"onRowActionClick($event)\"\n />\n }\n\n <!-- Show the recording indicator when recording -->\n @if (handbookVoiceService.recording()) {\n <div class=\"recording-indicator\" (click)=\"stopRecording()\">\n <span class=\"red-dot\"></span>\n <span>Recording...</span>\n </div>\n }\n</div>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n model,\n output,\n signal,\n viewChildren,\n} from '@angular/core';\nimport { IconComponent } from '../../icon/icon.component';\nimport { AiSearchComponent } from '../ai-search/ai-search.component';\nimport { NotificationButtonComponent } from '../notification-button/notification-button.component';\nimport {\n NavItem,\n NavItemChangeEvent,\n PageSuggestion,\n RecommendedFilter,\n SearchResult,\n SearchResultGroup,\n SearchSubmitEvent,\n} from '../navigation.types';\nimport { NavToolsComponent } from './nav-tools/nav-tools.component';\n\n@Component({\n selector: 'ao-top-nav',\n imports: [IconComponent, AiSearchComponent, NotificationButtonComponent, NavToolsComponent],\n templateUrl: './top-nav.component.html',\n styleUrl: './top-nav.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-top-nav',\n },\n})\nexport class TopNavComponent implements AfterViewInit {\n readonly items = input<NavItem[]>([]);\n readonly activeItemId = model<string>('');\n readonly showSearch = input<boolean>(true);\n readonly showNotifications = input<boolean>(true);\n readonly notificationCount = input<number>(0);\n readonly searchPlaceholder = input<string>('Suche oder Prompt');\n readonly showTools = input<boolean>(false);\n readonly recommendedFilters = input<RecommendedFilter[]>([]);\n readonly activeFilter = model<RecommendedFilter | null>(null);\n readonly resultGroups = input<SearchResultGroup[]>([]);\n readonly pageSuggestion = input<PageSuggestion | null>(null);\n readonly aiSuggestions = input<SearchResult[]>([]);\n readonly searchLoading = input<boolean>(false);\n readonly searchError = input<string | null>(null);\n readonly itemClick = output<NavItem>();\n readonly itemChange = output<NavItemChangeEvent>();\n readonly searchSubmit = output<SearchSubmitEvent>();\n readonly searchQueryChange = output<string>();\n readonly searchResultSelect = output<SearchResult>();\n readonly searchAiSuggestionSelect = output<SearchResult>();\n readonly searchPageSuggestionSelect = output<PageSuggestion>();\n readonly searchFilterSelect = output<RecommendedFilter>();\n readonly searchFilterClear = output<void>();\n readonly searchViewAll = output<string>();\n readonly notificationClick = output<void>();\n\n protected searchValue = '';\n protected readonly indicatorStyle = signal<{ left: string; width: string }>({\n left: '0',\n width: '0',\n });\n protected readonly showIndicator = signal(false);\n\n private readonly navItems = viewChildren<ElementRef<HTMLElement>>('navItem');\n\n protected readonly activeIndex = computed(() => {\n const activeId = this.activeItemId();\n return this.items().findIndex(item => item.id === activeId);\n });\n\n constructor() {\n effect(() => {\n const index = this.activeIndex();\n const items = this.navItems();\n if (index >= 0 && items.length > index) {\n this.updateIndicator(items[index].nativeElement);\n }\n });\n }\n\n ngAfterViewInit(): void {\n requestAnimationFrame(() => {\n const index = this.activeIndex();\n const items = this.navItems();\n if (index >= 0 && items.length > index) {\n this.updateIndicator(items[index].nativeElement);\n this.showIndicator.set(true);\n }\n });\n }\n\n protected onItemClick(item: NavItem): void {\n if (item.disabled) {\n return;\n }\n const previousItem = this.items().find(i => i.id === this.activeItemId()) ?? null;\n this.activeItemId.set(item.id);\n this.itemClick.emit(item);\n this.itemChange.emit({ item, previousItem });\n }\n\n protected onSearchSubmit(event: SearchSubmitEvent): void {\n this.searchSubmit.emit(event);\n }\n\n protected onNotificationClick(): void {\n this.notificationClick.emit();\n }\n\n protected onKeydown(event: KeyboardEvent, item: NavItem): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.onItemClick(item);\n }\n }\n\n private updateIndicator(element: HTMLElement): void {\n const rect = element.getBoundingClientRect();\n const parentRect = element.closest('.top-nav__list')?.getBoundingClientRect();\n if (parentRect) {\n this.indicatorStyle.set({\n left: `${rect.left - parentRect.left}px`,\n width: `${rect.width}px`,\n });\n }\n }\n}\n","<nav class=\"top-nav-outer\" role=\"navigation\" aria-label=\"Main navigation\">\n <div class=\"top-nav\">\n <div class=\"top-nav__list-wrapper\">\n <ul class=\"top-nav__list\" role=\"menubar\">\n @for (item of items(); track item.id) {\n <li role=\"none\">\n <a\n #navItem\n class=\"top-nav__item\"\n [class.top-nav__item--active]=\"item.id === activeItemId()\"\n [class.top-nav__item--disabled]=\"item.disabled\"\n [attr.href]=\"item.route ?? null\"\n [attr.aria-current]=\"item.id === activeItemId() ? 'page' : null\"\n [attr.aria-disabled]=\"item.disabled || null\"\n [attr.tabindex]=\"item.disabled ? -1 : 0\"\n role=\"menuitem\"\n (click)=\"$event.preventDefault(); onItemClick(item)\"\n (keydown)=\"onKeydown($event, item)\"\n >\n @if (item.icon) {\n <ao-icon [svg]=\"item.icon\" size=\"sm\" />\n }\n {{ item.label }}\n </a>\n </li>\n }\n </ul>\n @if (showIndicator()) {\n <span\n class=\"top-nav__indicator\"\n [style.left]=\"indicatorStyle().left\"\n [style.width]=\"indicatorStyle().width\"\n ></span>\n }\n </div>\n\n <div class=\"top-nav__actions\">\n @if (showSearch()) {\n <ao-ai-search\n [placeholder]=\"searchPlaceholder()\"\n [(value)]=\"searchValue\"\n [recommendedFilters]=\"recommendedFilters()\"\n [(activeFilter)]=\"activeFilter\"\n [resultGroups]=\"resultGroups()\"\n [pageSuggestion]=\"pageSuggestion()\"\n [aiSuggestions]=\"aiSuggestions()\"\n [loading]=\"searchLoading()\"\n [error]=\"searchError()\"\n (submit)=\"onSearchSubmit($event)\"\n (queryChange)=\"searchQueryChange.emit($event)\"\n (resultSelect)=\"searchResultSelect.emit($event)\"\n (aiSuggestionSelect)=\"searchAiSuggestionSelect.emit($event)\"\n (pageSuggestionSelect)=\"searchPageSuggestionSelect.emit($event)\"\n (filterSelect)=\"searchFilterSelect.emit($event)\"\n (filterClear)=\"searchFilterClear.emit()\"\n (viewAllClick)=\"searchViewAll.emit($event)\"\n />\n }\n @if (showTools()) {\n <ao-nav-tools />\n }\n @if (showNotifications()) {\n <ao-notification-button\n [count]=\"notificationCount()\"\n (buttonClick)=\"onNotificationClick()\"\n />\n }\n </div>\n </div>\n</nav>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostListener,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { phosphorCaretDown, phosphorSparkle } from '@ng-icons/phosphor-icons/regular';\nimport { ButtonComponent } from '../../button/button.component';\nimport { IconComponent } from '../../icon/icon.component';\nimport { SearchEntityType, SearchResult, SearchResultGroup } from '../navigation.types';\n\nexport interface SearchResultsTypeOption {\n value: SearchEntityType | null;\n label: string;\n}\n\n@Component({\n selector: 'ao-search-results-page',\n imports: [ButtonComponent, IconComponent],\n templateUrl: './search-results-page.component.html',\n styleUrl: './search-results-page.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-search-results-page',\n },\n})\nexport class SearchResultsPageComponent {\n private readonly sanitizer = inject(DomSanitizer);\n private readonly hostRef = inject(ElementRef<HTMLElement>);\n\n readonly query = input<string>('');\n readonly groups = input<SearchResultGroup[]>([]);\n readonly availableTypes = input<SearchResultsTypeOption[]>([]);\n readonly typeFilter = model<SearchEntityType | null>(null);\n\n readonly resultClick = output<SearchResult>();\n\n protected readonly caretDownIcon = phosphorCaretDown;\n protected readonly sparkleIcon = phosphorSparkle;\n protected readonly typeFilterOpen = signal<boolean>(false);\n protected readonly typeOptions = computed<SearchResultsTypeOption[]>(() => {\n const configured = this.availableTypes();\n if (configured.length > 0) {\n return configured;\n }\n const seen = new Set<SearchEntityType>();\n const options = this.groups().reduce<SearchResultsTypeOption[]>(\n (items, group) => {\n if (seen.has(group.type)) {\n return items;\n }\n seen.add(group.type);\n items.push({ value: group.type, label: group.label });\n return items;\n },\n [{ value: null, label: 'Alle Typen' }]\n );\n return options;\n });\n protected readonly activeTypeLabel = computed(\n () =>\n this.typeOptions().find(option => option.value === this.typeFilter())?.label ?? 'Alle Typen'\n );\n protected readonly filteredGroups = computed<SearchResultGroup[]>(() => {\n const type = this.typeFilter();\n if (type === null) {\n return this.groups();\n }\n return this.groups().filter(group => group.type === type);\n });\n\n @HostListener('document:click', ['$event'])\n protected onDocumentClick(event: MouseEvent): void {\n if (!this.typeFilterOpen()) {\n return;\n }\n const target = event.target as Node | null;\n if (target && !this.hostRef.nativeElement.contains(target)) {\n this.typeFilterOpen.set(false);\n }\n }\n\n protected onResultClick(r: SearchResult): void {\n this.resultClick.emit(r);\n }\n\n protected onTypeFilterClick(): void {\n this.typeFilterOpen.update(isOpen => !isOpen);\n }\n\n protected onTypeOptionClick(option: SearchResultsTypeOption): void {\n this.typeFilter.set(option.value);\n this.typeFilterOpen.set(false);\n }\n\n protected highlight(text: string): SafeHtml {\n const query = this.query().trim();\n if (!query) {\n return this.sanitizer.bypassSecurityTrustHtml(this.escapeHtml(text));\n }\n const escaped = this.escapeHtml(text);\n const pattern = new RegExp(this.escapeRegex(query), 'gi');\n const highlighted = escaped.replace(\n pattern,\n match => `<mark class=\"search-results__hl\">${match}</mark>`\n );\n return this.sanitizer.bypassSecurityTrustHtml(highlighted);\n }\n\n private escapeHtml(text: string): string {\n return text\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;');\n }\n\n private escapeRegex(text: string): string {\n return text.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n}\n","<header class=\"search-results__header\">\n <h1 class=\"search-results__title\">Suchergebnisse</h1>\n <div class=\"search-results__filters\">\n <div class=\"search-results__type-filter\">\n <button\n ao-button\n variant=\"outline\"\n [iconTrailing]=\"caretDownIcon\"\n [attr.aria-expanded]=\"typeFilterOpen()\"\n aria-haspopup=\"listbox\"\n (click)=\"onTypeFilterClick()\"\n >\n {{ activeTypeLabel() }}\n </button>\n @if (typeFilterOpen()) {\n <div class=\"search-results__type-menu\" role=\"listbox\">\n @for (option of typeOptions(); track option.value ?? 'all') {\n <button\n type=\"button\"\n class=\"search-results__type-option\"\n [class.search-results__type-option--active]=\"option.value === typeFilter()\"\n [attr.aria-selected]=\"option.value === typeFilter()\"\n role=\"option\"\n (click)=\"onTypeOptionClick(option)\"\n >\n {{ option.label }}\n </button>\n }\n </div>\n }\n </div>\n </div>\n</header>\n\n@for (group of filteredGroups(); track group.type) {\n <section class=\"search-results__section\">\n <div class=\"search-results__section-header\">\n <h2 class=\"search-results__section-title\">{{ group.label }}</h2>\n <span class=\"search-results__count\">\n {{ group.totalCount ?? group.results.length }} Ergebnisse\n </span>\n </div>\n\n @if (group.type !== 'ki') {\n @if (group.columns?.length) {\n <div class=\"search-results__row search-results__row--head\">\n @for (col of group.columns; track col) {\n <span class=\"search-results__cell search-results__cell--head\">{{ col }}</span>\n }\n </div>\n }\n @for (r of group.results; track r.id) {\n <button type=\"button\" class=\"search-results__row\" (click)=\"onResultClick(r)\">\n <span\n class=\"search-results__cell search-results__cell--primary\"\n [innerHTML]=\"highlight(r.primary)\"\n ></span>\n <span class=\"search-results__cell\">{{ r.secondary }}</span>\n <span class=\"search-results__cell\">{{ r.tertiary }}</span>\n </button>\n }\n } @else {\n @for (r of group.results; track r.id) {\n <button type=\"button\" class=\"search-results__ai-row\" (click)=\"onResultClick(r)\">\n <ao-icon [svg]=\"sparkleIcon\" size=\"sm\" class=\"search-results__ai-icon\" />\n <span [innerHTML]=\"highlight(r.primary)\"></span>\n </button>\n }\n }\n </section>\n} @empty {\n <div class=\"search-results__empty\">Keine Ergebnisse gefunden</div>\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { inject, Injectable, InjectionToken, signal } from '@angular/core';\nimport {\n asyncScheduler,\n catchError,\n firstValueFrom,\n map,\n Observable,\n of,\n Subject,\n switchMap,\n throttleTime,\n} from 'rxjs';\nimport {\n PageSuggestion,\n RecommendedFilter,\n SearchEntityType,\n SearchPayload,\n SearchResult,\n SearchResultGroup,\n} from '../navigation.types';\n\nexport const ROBIN_API_BASE_URL = new InjectionToken<string>('ROBIN_API_BASE_URL', {\n providedIn: 'root',\n factory: () => '',\n});\n\n/**\n * Identifies the calling application toward the Robin search workflow.\n * Apps must provide this in their `appConfig` (e.g. `'showcase'`, `'admin'`).\n */\nexport const ROBIN_SEARCH_APP_NAME = new InjectionToken<string>('ROBIN_SEARCH_APP_NAME', {\n providedIn: 'root',\n factory: () => 'unknown',\n});\n\nconst QUICK_THROTTLE_MS = 200;\n\ninterface QuickSearchInput {\n readonly query: string;\n readonly type?: SearchEntityType;\n}\n\ninterface QuickSearchOutcome {\n readonly query: string;\n readonly payload: Partial<SearchPayload> | null;\n readonly failed: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class RobinSearchService {\n private readonly http = inject(HttpClient);\n private readonly baseUrl = inject(ROBIN_API_BASE_URL);\n private readonly appName = inject(ROBIN_SEARCH_APP_NAME);\n\n readonly query = signal('');\n readonly loading = signal(false);\n readonly error = signal<string | null>(null);\n readonly recommendedFilters = signal<RecommendedFilter[]>([]);\n readonly resultGroups = signal<SearchResultGroup[]>([]);\n readonly pageSuggestion = signal<PageSuggestion | null>(null);\n readonly aiSuggestions = signal<SearchResult[]>([]);\n\n private readonly quickSearchInput$ = new Subject<QuickSearchInput>();\n\n constructor() {\n this.quickSearchInput$\n .pipe(\n throttleTime(QUICK_THROTTLE_MS, asyncScheduler, { leading: true, trailing: true }),\n switchMap(({ query, type }) => this.fetchQuickSearch(query, type)),\n )\n .subscribe((outcome) => this.applyQuickSearchOutcome(outcome));\n }\n\n async loadRecommendedFilters(): Promise<void> {\n try {\n const params = new HttpParams().set('appName', this.appName);\n const filters = await firstValueFrom(\n this.http.get<RecommendedFilter[]>(this.url('/search/recommended-filters'), { params }),\n );\n this.recommendedFilters.set(filters ?? []);\n } catch (err) {\n console.warn('[RobinSearch] loadRecommendedFilters failed', err);\n this.recommendedFilters.set([]);\n }\n }\n\n search(query: string, type?: SearchEntityType): void {\n this.query.set(query);\n if (!query.trim()) {\n this.resultGroups.set([]);\n this.pageSuggestion.set(null);\n this.aiSuggestions.set([]);\n this.error.set(null);\n this.loading.set(false);\n return;\n }\n this.loading.set(true);\n this.quickSearchInput$.next({ query, type });\n }\n\n async loadFull(\n query: string,\n type?: SearchEntityType,\n date?: string,\n ): Promise<Partial<SearchPayload>> {\n let params = new HttpParams().set('q', query).set('appName', this.appName);\n if (type) params = params.set('type', type);\n if (date) params = params.set('date', date);\n this.loading.set(true);\n this.error.set(null);\n try {\n const payload = await firstValueFrom(\n this.http.get<Partial<SearchPayload> | null>(this.url('/search/full'), { params }),\n );\n const safe = payload ?? {};\n this.resultGroups.set(safe.groups ?? []);\n this.aiSuggestions.set(safe.aiSuggestions ?? []);\n return safe;\n } catch (err) {\n console.warn('[RobinSearch] loadFull failed', err);\n this.error.set('Suche fehlgeschlagen');\n this.resultGroups.set([]);\n this.aiSuggestions.set([]);\n return {};\n } finally {\n this.loading.set(false);\n }\n }\n\n private fetchQuickSearch(\n query: string,\n type?: SearchEntityType,\n ): Observable<QuickSearchOutcome> {\n let params = new HttpParams().set('q', query).set('appName', this.appName);\n if (type) params = params.set('type', type);\n return this.http\n .get<Partial<SearchPayload> | null>(this.url('/search/quick'), { params })\n .pipe(\n map((payload) => ({ query, payload, failed: false })),\n catchError((err) => {\n console.warn('[RobinSearch] quickSearch failed', err);\n return of<QuickSearchOutcome>({ query, payload: null, failed: true });\n }),\n );\n }\n\n private applyQuickSearchOutcome(outcome: QuickSearchOutcome): void {\n if (this.query() !== outcome.query) {\n return;\n }\n if (outcome.failed) {\n this.error.set('Suche fehlgeschlagen');\n this.resultGroups.set([]);\n this.pageSuggestion.set(null);\n this.aiSuggestions.set([]);\n } else {\n const safe = outcome.payload ?? {};\n this.resultGroups.set(safe.groups ?? []);\n this.pageSuggestion.set(safe.pageSuggestion ?? null);\n this.aiSuggestions.set(safe.aiSuggestions ?? []);\n this.error.set(null);\n }\n this.loading.set(false);\n }\n\n private url(path: string): string {\n return `${this.baseUrl}${path}`;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostListener,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n phosphorCaretDown,\n phosphorMagnifyingGlass,\n phosphorPlus,\n} from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../../icon/icon.component';\nimport { WorkspaceNavbarService } from '../../workspace-navbar/workspace-navbar.service';\nimport { AccessRole } from '@ah-oh/ao-workspaces-types';\nimport { ButtonComponent } from '../../button/button.component';\n\nexport interface LogoMenuItem {\n id: string;\n label: string;\n}\n\n@Component({\n selector: 'ao-logo-menu',\n imports: [FormsModule, IconComponent, ButtonComponent],\n template: `\n <div class=\"logo-menu\">\n <button\n type=\"button\"\n class=\"logo-menu__trigger\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n >\n <ng-content />\n <ao-icon [svg]=\"caretIcon\" size=\"sm\" class=\"logo-menu__caret\" />\n </button>\n\n @if (isOpen()) {\n <div\n class=\"logo-menu__dropdown\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n (keydown)=\"onDropdownKeydown($event)\"\n (keyup)=\"$event.stopPropagation()\"\n (keypress)=\"$event.stopPropagation()\"\n (click)=\"$event.stopPropagation()\"\n >\n <div class=\"logo-menu__search\">\n <ao-icon [svg]=\"searchIcon\" size=\"sm\" class=\"logo-menu__search-icon\" />\n <input\n #searchInput\n type=\"text\"\n class=\"logo-menu__search-input\"\n [placeholder]=\"searchPlaceholder()\"\n [ngModel]=\"searchQuery()\"\n (ngModelChange)=\"searchQuery.set($event)\"\n (keydown)=\"onKeydown($event)\"\n aria-label=\"Suche\"\n aria-autocomplete=\"list\"\n [attr.aria-activedescendant]=\"\n highlightedItem() ? 'item-' + highlightedItem()?.id : null\n \"\n />\n </div>\n\n <ul class=\"logo-menu__list\" role=\"listbox\">\n @for (item of filteredItems(); track item.id; let i = $index) {\n <li\n [id]=\"'item-' + item.id\"\n role=\"option\"\n [attr.aria-selected]=\"item.id === selectedItem()\"\n >\n <button\n type=\"button\"\n class=\"logo-menu__item\"\n [class.logo-menu__item--active]=\"item.id === selectedItem()\"\n [class.logo-menu__item--highlighted]=\"i === highlightedIndex()\"\n (click)=\"selectItem(item)\"\n (mouseenter)=\"highlightedIndex.set(i)\"\n >\n {{ item.label }}\n </button>\n </li>\n }\n @if (filteredItems().length === 0) {\n <li class=\"logo-menu__empty\">Keine Ergebnisse</li>\n }\n </ul>\n\n @if (true) {\n <button ao-button variant=\"outline\" (click)=\"onCreateCompany()\">\n <ao-icon [svg]=\"addIcon\" />\n Unternehmen\n </button>\n }\n </div>\n }\n </div>\n `,\n styleUrl: './logo-menu.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-logo-menu',\n '(click)': '$event.stopPropagation()',\n '(keydown)': 'onHostKeydown($event)',\n '(keyup)': '$event.stopPropagation()',\n },\n})\nexport class LogoMenuComponent {\n private readonly workspaceNavbarService = inject(WorkspaceNavbarService);\n\n readonly items = input<LogoMenuItem[]>([]);\n readonly selectedItem = model<string>('');\n readonly searchPlaceholder = input<string>('Suchen...');\n readonly selectionChange = output<LogoMenuItem>();\n\n protected readonly isOpen = signal(false);\n protected readonly searchQuery = signal('');\n protected readonly highlightedIndex = signal(-1);\n protected readonly caretIcon = phosphorCaretDown;\n protected readonly searchIcon = phosphorMagnifyingGlass;\n protected readonly addIcon = phosphorPlus;\n\n private readonly searchInput = viewChild<ElementRef<HTMLInputElement>>('searchInput');\n\n protected readonly filteredItems = computed(() => {\n const query = this.searchQuery().toLowerCase();\n if (!query) return this.items();\n return this.items().filter(item => item.label.toLowerCase().includes(query));\n });\n\n protected readonly highlightedItem = computed(() => {\n const index = this.highlightedIndex();\n const items = this.filteredItems();\n return index >= 0 && index < items.length ? items[index] : null;\n });\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n if (!target.closest('.ao-logo-menu')) {\n this.close();\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscapeKey(): void {\n this.close();\n }\n\n toggle(): void {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n protected onDropdownKeydown(event: KeyboardEvent): void {\n event.stopPropagation();\n if (event.key === ' ') {\n event.stopImmediatePropagation();\n }\n }\n\n protected onHostKeydown(event: KeyboardEvent): void {\n if (this.isOpen() && event.key === ' ') {\n event.stopPropagation();\n }\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const items = this.filteredItems();\n const currentIndex = this.highlightedIndex();\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.highlightedIndex.set(Math.min(currentIndex + 1, items.length - 1));\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.highlightedIndex.set(Math.max(currentIndex - 1, 0));\n break;\n case 'Enter':\n event.preventDefault();\n if (currentIndex >= 0 && currentIndex < items.length) {\n this.selectItem(items[currentIndex]);\n }\n break;\n }\n }\n\n selectItem(item: LogoMenuItem): void {\n this.selectedItem.set(item.id);\n this.selectionChange.emit(item);\n this.close();\n }\n\n private open(): void {\n this.isOpen.set(true);\n this.searchQuery.set('');\n this.highlightedIndex.set(-1);\n setTimeout(() => this.searchInput()?.nativeElement.focus(), 0);\n }\n\n private close(): void {\n this.isOpen.set(false);\n this.searchQuery.set('');\n this.highlightedIndex.set(-1);\n }\n\n onCreateCompany(): void {\n this.workspaceNavbarService.createCompany().subscribe();\n }\n\n get isSuperAdmin(): boolean {\n return this.workspaceNavbarService.userSession?.role === AccessRole.SUPER_ADMIN;\n }\n}\n","import { computed, Injectable, signal, Signal, WritableSignal } from '@angular/core';\nimport { filter, Subject } from 'rxjs';\nimport {\n SubNavActionEvent,\n SubNavActionsConfig,\n SubNavActionsHandle,\n SubNavActionsLabels,\n} from './sub-nav-actions.types';\n\ninterface ContextState {\n readonly contextId: string;\n readonly isDirty: WritableSignal<boolean>;\n readonly saveDisabled: WritableSignal<boolean>;\n readonly labels: SubNavActionsLabels;\n}\n\nconst DEFAULT_LABELS: Required<SubNavActionsLabels> = {\n save: 'Speichern',\n cancel: 'Abbrechen',\n};\n\n@Injectable({ providedIn: 'root' })\nexport class SubNavActionsService {\n private readonly visibleSignal = signal(false);\n private readonly activeContextId = signal<string | null>(null);\n private readonly contexts = new Map<string, ContextState>();\n private readonly saveSubject = new Subject<SubNavActionEvent>();\n private readonly cancelSubject = new Subject<SubNavActionEvent>();\n\n readonly visible: Signal<boolean> = this.visibleSignal.asReadonly();\n\n readonly isDirty = computed(() => {\n const contextId = this.activeContextId();\n if (!contextId) return false;\n const context = this.contexts.get(contextId);\n return context?.isDirty() ?? false;\n });\n\n readonly saveDisabled = computed(() => {\n const contextId = this.activeContextId();\n if (!contextId) return true;\n const context = this.contexts.get(contextId);\n return context?.saveDisabled() ?? true;\n });\n\n readonly labels = computed<Required<SubNavActionsLabels>>(() => {\n const contextId = this.activeContextId();\n if (!contextId) return DEFAULT_LABELS;\n const context = this.contexts.get(contextId);\n return {\n save: context?.labels.save ?? DEFAULT_LABELS.save,\n cancel: context?.labels.cancel ?? DEFAULT_LABELS.cancel,\n };\n });\n\n readonly hasUnsavedChanges = computed(() => {\n for (const context of this.contexts.values()) {\n if (context.isDirty()) return true;\n }\n return false;\n });\n\n register(config: SubNavActionsConfig): SubNavActionsHandle {\n const contextId = config.contextId;\n if (this.contexts.has(contextId)) {\n throw new Error(`Context \"${contextId}\" is already registered`);\n }\n const isDirty = signal(config.initialDirty ?? false);\n const saveDisabled = signal(config.saveDisabled ?? true);\n const contextState: ContextState = {\n contextId,\n isDirty,\n saveDisabled,\n labels: config.labels ?? {},\n };\n this.contexts.set(contextId, contextState);\n const handle: SubNavActionsHandle = {\n contextId,\n isDirty: isDirty.asReadonly(),\n saveDisabled: saveDisabled.asReadonly(),\n onSave$: this.saveSubject.pipe(filter((e) => e.contextId === contextId)),\n onCancel$: this.cancelSubject.pipe(filter((e) => e.contextId === contextId)),\n markDirty: () => isDirty.set(true),\n markPristine: () => isDirty.set(false),\n enableSave: () => saveDisabled.set(false),\n disableSave: () => saveDisabled.set(true),\n show: () => {\n this.activeContextId.set(contextId);\n this.visibleSignal.set(true);\n },\n hide: () => {\n if (this.activeContextId() === contextId) {\n this.visibleSignal.set(false);\n this.activeContextId.set(null);\n }\n },\n destroy: () => {\n this.contexts.delete(contextId);\n if (this.activeContextId() === contextId) {\n this.visibleSignal.set(false);\n this.activeContextId.set(null);\n }\n },\n };\n return handle;\n }\n\n show(): void {\n this.visibleSignal.set(true);\n }\n\n hide(): void {\n this.visibleSignal.set(false);\n }\n\n triggerSave(): void {\n const contextId = this.activeContextId();\n if (contextId) {\n this.saveSubject.next({ contextId, action: 'save' });\n }\n }\n\n triggerCancel(): void {\n const contextId = this.activeContextId();\n if (contextId) {\n this.cancelSubject.next({ contextId, action: 'cancel' });\n }\n }\n\n reset(): void {\n this.visibleSignal.set(false);\n this.activeContextId.set(null);\n this.contexts.clear();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model, output } from '@angular/core';\nimport { ButtonComponent } from '../../button/button.component';\nimport { NavItem, NavItemChangeEvent } from '../navigation.types';\nimport { SubNavActionsService } from '../sub-nav-actions/sub-nav-actions.service';\n\n@Component({\n selector: 'ao-sub-top-nav',\n imports: [ButtonComponent],\n templateUrl: './sub-top-nav.component.html',\n styleUrl: './sub-top-nav.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-sub-top-nav',\n },\n})\nexport class SubTopNavComponent {\n protected readonly subNavActions = inject(SubNavActionsService);\n readonly items = input<NavItem[]>([]);\n readonly activeItemId = model<string>('');\n readonly itemClick = output<NavItem>();\n readonly itemChange = output<NavItemChangeEvent>();\n\n protected readonly activeIndex = computed(() => {\n const activeId = this.activeItemId();\n return this.items().findIndex((item) => item.id === activeId);\n });\n\n protected onTabClick(item: NavItem): void {\n if (item.disabled || item.id === this.activeItemId()) {\n return;\n }\n const previousItem = this.items().find((i) => i.id === this.activeItemId()) ?? null;\n this.activeItemId.set(item.id);\n this.itemClick.emit(item);\n this.itemChange.emit({ item, previousItem });\n }\n\n protected onKeydown(event: KeyboardEvent, item: NavItem): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.onTabClick(item);\n }\n }\n\n protected onSave(): void {\n this.subNavActions.triggerSave();\n }\n\n protected onCancel(): void {\n this.subNavActions.triggerCancel();\n }\n}\n","<nav class=\"sub-top-nav-outer\" role=\"navigation\" aria-label=\"Sub navigation\">\n <div class=\"sub-top-nav\">\n <div class=\"sub-top-nav__tabs\" role=\"tablist\">\n @for (item of items(); track item.id) {\n <button\n type=\"button\"\n class=\"sub-top-nav__tab\"\n [class.--active]=\"item.id === activeItemId()\"\n [class.--disabled]=\"item.disabled\"\n role=\"tab\"\n [attr.aria-selected]=\"item.id === activeItemId()\"\n [attr.aria-disabled]=\"item.disabled || null\"\n [attr.tabindex]=\"item.disabled ? -1 : 0\"\n (click)=\"onTabClick(item)\"\n (keydown)=\"onKeydown($event, item)\"\n >\n {{ item.label }}\n </button>\n }\n </div>\n\n @if (subNavActions.visible()) {\n <div class=\"sub-top-nav__actions\">\n <button ao-button type=\"button\" variant=\"outline\" (click)=\"onCancel()\">\n {{ subNavActions.labels().cancel }}\n </button>\n <button\n ao-button\n type=\"button\"\n variant=\"primary\"\n [disabled]=\"subNavActions.saveDisabled()\"\n (click)=\"onSave()\"\n >\n {{ subNavActions.labels().save }}\n </button>\n </div>\n }\n </div>\n</nav>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CdkMenu } from '@angular/cdk/menu';\n\n@Component({\n selector: 'ao-menu',\n imports: [CdkMenu],\n templateUrl: './menu.component.html',\n styleUrl: './menu.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenuComponent {}\n","<div cdkMenu class=\"ao-menu__menu\">\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { IconComponent } from '../../../icon/icon.component';\nimport { CdkMenuItem } from '@angular/cdk/menu';\n\n@Component({\n selector: 'ao-menu-item',\n imports: [IconComponent, CdkMenuItem],\n templateUrl: './menu-item.component.html',\n styleUrl: './menu-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenuItemComponent {\n icon = input<string>();\n disabled = input(false);\n click = output<void>();\n}\n","<button\n type=\"button\"\n class=\"ao-menu-item__button\"\n role=\"menuitem\"\n [disabled]=\"disabled()\"\n cdkMenuItem\n (cdkMenuItemTriggered)=\"click.emit()\"\n>\n @if (icon(); as icon) {\n <ao-icon [svg]=\"icon\" size=\"sm\" />\n }\n <ng-content></ng-content>\n</button>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n TemplateRef,\n ViewContainerRef,\n ChangeDetectionStrategy,\n input,\n} from '@angular/core';\n\n@Component({\n selector: 'ao-tooltip',\n imports: [NgTemplateOutlet],\n templateUrl: './tooltip-overlay.component.html',\n styleUrl: './tooltip-overlay.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipOverlayComponent {\n text = input<string>();\n template = input<TemplateRef<any>>();\n viewContainerRef = input<ViewContainerRef>();\n enterAnimationClass = input<string | undefined>();\n}\n","<div class=\"ao-tooltip__content\" [animate.enter]=\"enterAnimationClass()\">\n @if (text(); as text) {\n <span class=\"ao-tooltip__text-content\">{{ text }}</span>\n } @else if (template(); as template) {\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n }\n</div>\n","import {\n Directive,\n ElementRef,\n Input,\n TemplateRef,\n ViewContainerRef,\n inject,\n ComponentRef,\n OnDestroy,\n signal,\n input,\n computed,\n effect,\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { TooltipOverlayComponent } from '../components/tooltip-overlay.component';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged, map, switchMap, timer } from 'rxjs';\n\n@Directive({\n selector: '[aoTooltip], [aoTooltipTemplate]',\n host: {\n '(mouseenter)': 'mouseOver.set(true)',\n '(mouseleave)': 'mouseOver.set(false)',\n '(focus)': 'focused.set(true)',\n '(blur)': 'focused.set(false)',\n },\n})\nexport class TooltipDirective implements OnDestroy {\n private elementRef = inject(ElementRef);\n private overlay = inject(Overlay);\n private viewContainerRef = inject(ViewContainerRef);\n\n private overlayRef: OverlayRef | null = null;\n private tooltipComponentRef: ComponentRef<TooltipOverlayComponent> | null = null;\n\n aoTooltip = input<string>();\n aoTooltipEnabled = input(true);\n aoTooltipTemplate = input<TemplateRef<any>>();\n aoTooltipDelay = input<number>(200);\n aoTooltipHideDelay = input<number>(0);\n aoTooltipEnterAnimationClass = input('ao-tooltip__enter-animation');\n\n mouseOver = signal(false);\n focused = signal(false);\n\n shouldOpen = computed(() => this.mouseOver() || this.focused());\n\n open = toSignal(\n toObservable(this.shouldOpen).pipe(\n distinctUntilChanged(),\n switchMap(value =>\n timer(value ? this.aoTooltipDelay() : this.aoTooltipHideDelay()).pipe(map(() => value))\n )\n ),\n { initialValue: false }\n );\n\n constructor() {\n effect(() => {\n if (this.open()) {\n this.show();\n } else {\n this.hide();\n }\n });\n }\n\n ngOnDestroy() {\n this.hide();\n }\n\n protected show() {\n if (this.overlayRef || !this.aoTooltipEnabled()) return;\n\n const tooltipText = this.aoTooltip();\n const tooltipTemplate = this.aoTooltipTemplate();\n\n if (!tooltipText && !tooltipTemplate) return;\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPositions([\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -8,\n },\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 8,\n },\n ]);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.close(),\n });\n\n const portal = new ComponentPortal(TooltipOverlayComponent);\n this.tooltipComponentRef = this.overlayRef.attach(portal);\n\n if (tooltipText) {\n this.tooltipComponentRef.setInput('text', tooltipText);\n } else if (tooltipTemplate) {\n this.tooltipComponentRef.setInput('template', tooltipTemplate);\n this.tooltipComponentRef.setInput('viewContainerRef', this.viewContainerRef);\n }\n\n this.tooltipComponentRef.setInput('enterAnimationClass', this.aoTooltipEnterAnimationClass());\n }\n\n protected hide() {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n this.tooltipComponentRef = null;\n }\n }\n}\n","import { Component, computed, forwardRef, input, model, ModelSignal, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { phosphorCalendarBlank } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../icon/icon.component';\nimport { CdkOverlayOrigin, CdkConnectedOverlay } from '@angular/cdk/overlay';\nimport { DatePickerComponent } from './date-picker/date-picker.component';\n\n@Component({\n selector: 'ao-date-input',\n imports: [IconComponent, CdkOverlayOrigin, DatePickerComponent, CdkConnectedOverlay],\n templateUrl: './date-input.component.html',\n styleUrl: './date-input.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateInputComponent),\n multi: true,\n },\n ],\n host: {\n class: 'ao-date-input',\n '[class.ao-date-input--disabled]': 'disabled()',\n '[class.ao-date-input--readonly]': 'readonly()',\n '[class.ao-date-input--error]': 'error()',\n '[class.ao-date-input--focused]': 'focused()',\n },\n})\nexport class DateInputComponent implements ControlValueAccessor {\n readonly label = input<string>('');\n readonly placeholder = input<string>('Bitte ausfüllen');\n readonly optional = input<boolean>(false);\n readonly error = input<string>('');\n readonly readonly = input<boolean>(false);\n readonly disabled = model<boolean>(false);\n readonly value: ModelSignal<Date | null> = model<Date | null>(null);\n readonly inputValue = signal<string>('');\n readonly focused = signal<boolean>(false);\n readonly open = signal(false);\n readonly hasError = computed(() => !!this.error());\n readonly currentMonth = model(new Date().getMonth());\n readonly currentYear = model(new Date().getFullYear());\n protected readonly calendarIcon = phosphorCalendarBlank;\n private onChange: (value: Date | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: Date | null): void {\n this.inputValue.set(value ? DatePickerComponent.formatDate(value) : '');\n this.value.set(value);\n }\n\n registerOnChange(fn: (value: Date | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const value = input.value;\n const parsed = this.parseDate(value);\n if (parsed) {\n this.value.set(parsed);\n this.currentMonth.set(parsed.getMonth());\n this.currentYear.set(parsed.getFullYear());\n this.onChange(parsed);\n }\n }\n\n onFocus(): void {\n this.focused.set(true);\n }\n\n onBlur(): void {\n this.focused.set(false);\n this.onTouched();\n }\n\n onSelection() {\n const date = this.value();\n this.inputValue.set(date ? DatePickerComponent.formatDate(date) : '');\n this.onChange(date);\n this.open.set(false);\n }\n\n private parseDate(value: string): Date | null {\n const match = value.match(/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/);\n if (match) {\n const day = parseInt(match[1], 10);\n const month = parseInt(match[2], 10) - 1;\n const year = parseInt(match[3], 10);\n const date = new Date(year, month, day);\n if (date.getDate() === day && date.getMonth() === month && date.getFullYear() === year) {\n return date;\n }\n }\n return null;\n }\n}\n","@if (label()) {\n <label class=\"ao-date-input__label\">\n {{ label() }}\n @if (optional()) {\n <span class=\"ao-date-input__optional\">(Optional)</span>\n }\n </label>\n}\n\n<div class=\"ao-date-input__wrapper\">\n <input\n class=\"ao-date-input__field\"\n type=\"text\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [value]=\"inputValue()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n\n <button\n class=\"ao-date-input__open\"\n [disabled]=\"readonly() || disabled()\"\n (click)=\"open.set(!open())\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n >\n <ao-icon class=\"ao-date-input__open--icon\" [svg]=\"calendarIcon\" size=\"md\" />\n </button>\n</div>\n\n@if (error()) {\n <span class=\"ao-date-input__error\">{{ error() }}</span>\n}\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"open()\"\n (detach)=\"open.set(false)\"\n (overlayOutsideClick)=\"open.set(false)\"\n>\n <ao-date-picker\n class=\"ao-date-input__picker\"\n [mode]=\"'single'\"\n [(selectedDate)]=\"value\"\n [(currentMonth)]=\"currentMonth\"\n [(currentYear)]=\"currentYear\"\n (onSelection)=\"onSelection()\"\n ></ao-date-picker>\n</ng-template>\n","import { SurfaceComponent } from '@a2ui/angular/v0_9';\nimport { Component, computed, inject, input } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MarkdownComponent } from 'ngx-markdown';\nimport { ChatPart } from '../chat.types';\n\n@Component({\n selector: 'lib-chat-message',\n imports: [MarkdownComponent, SurfaceComponent],\n templateUrl: './chat-message.component.html',\n styleUrl: './chat-message.component.scss',\n})\nexport class ChatMessageComponent {\n parts = input<ChatPart[]>([]);\n side = input<'left' | 'right'>('right');\n showTyping = input<boolean>();\n\n protected readonly normalisedParts = computed<ChatPart[]>(() =>\n this.parts().map(part => (part.kind === 'error' ? this.toTextPart(part.fallback) : part)),\n );\n\n private readonly router = inject(Router);\n\n /**\n * Hook for in-app navigation triggered from rendered markdown links.\n */\n protected onMarkdownReady(element: HTMLElement | null): void {\n this.convertLinks(element);\n }\n\n private toTextPart(fallback: string): ChatPart {\n return { kind: 'text', content: fallback };\n }\n\n private convertLinks(element: Element | null): void {\n if (!element) return;\n const currentUrl = new URL(window.location.href);\n const anchors = Array.from(element.querySelectorAll<HTMLAnchorElement>('a[href]'));\n for (const anchor of anchors) {\n if (anchor.dataset['robinRouterLink'] === 'true') continue;\n const linkUrl = this.parseUrl(anchor.getAttribute('href') ?? '', currentUrl);\n if (!linkUrl) continue;\n if (currentUrl.host !== linkUrl.host) continue;\n anchor.dataset['robinRouterLink'] = 'true';\n anchor.addEventListener('click', event => {\n void this.router.navigateByUrl(`${linkUrl.pathname}${linkUrl.search}`);\n event.stopPropagation();\n event.preventDefault();\n });\n }\n }\n\n private parseUrl(value: string, base: URL): URL | undefined {\n try {\n return new URL(value, base);\n } catch {\n return undefined;\n }\n }\n}\n","<div class=\"message\" [class.right]=\"side() === 'right'\" [class.left]=\"side() === 'left'\">\n @for (part of normalisedParts(); track $index) {\n @switch (part.kind) {\n @case ('text') {\n <div #markdownHost class=\"message__markdown\">\n <markdown\n [data]=\"part.content\"\n (ready)=\"onMarkdownReady(markdownHost)\"\n ></markdown>\n </div>\n }\n @case ('a2ui') {\n <a2ui-v09-surface [surfaceId]=\"part.surface.surfaceId\"></a2ui-v09-surface>\n }\n }\n }\n @if (showTyping()) {\n <div class=\"typing-indicator\">\n <div></div>\n <div></div>\n <div></div>\n </div>\n }\n</div>\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { ROBIN_API_BASE_URL } from '../../navigation/services/robin-search.service';\nimport {\n ChatActionRequest,\n ChatMessageRequest,\n ChatProduct,\n ChatResponse,\n ChatThreadOverview,\n ChatTurn,\n} from './chat.types';\n\n@Injectable({ providedIn: 'root' })\nexport class RobinChatService {\n private readonly http = inject(HttpClient);\n private readonly baseUrl = inject(ROBIN_API_BASE_URL);\n private readonly requestOptions = { withCredentials: true } as const;\n\n sendMessage(req: ChatMessageRequest): Promise<ChatResponse> {\n return firstValueFrom(\n this.http.post<ChatResponse>(this.url('/chat/message'), req, this.requestOptions),\n );\n }\n\n sendAction(req: ChatActionRequest): Promise<ChatResponse> {\n return firstValueFrom(\n this.http.post<ChatResponse>(this.url('/chat/action'), req, this.requestOptions),\n );\n }\n\n listThreads(product: ChatProduct): Promise<ChatThreadOverview[]> {\n const params = new HttpParams().set('product', product);\n return firstValueFrom(\n this.http.get<ChatThreadOverview[]>(this.url('/chat/threads'), {\n ...this.requestOptions,\n params,\n }),\n );\n }\n\n loadHistory(threadId: string): Promise<ChatTurn[]> {\n return firstValueFrom(\n this.http.get<ChatTurn[]>(this.url(`/chat/history/${threadId}`), this.requestOptions),\n );\n }\n\n private url(path: string): string {\n return `${this.baseUrl}${path}`;\n }\n}\n","import { A2uiRendererService } from '@a2ui/angular/v0_9';\nimport { inject, Injectable, Injector } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ChatResponse } from './chat.types';\nimport { RobinChatService } from './robin-chat.service';\n\ninterface A2uiClientAction {\n name: string;\n surfaceId: string;\n sourceComponentId: string;\n timestamp: string;\n context: Record<string, unknown>;\n}\n\n/**\n * Bridges A2UI's `actionHandler` (called when a rendered Button/Input fires)\n * to the Robin backend.\n *\n * The chat component is the single owner of `threadId` and the recipient of\n * responses; it registers itself by setting `threadId` and subscribing to\n * `responses$`. The dispatcher itself is `providedIn: 'root'` so the renderer\n * config factory can inject it lazily.\n */\n@Injectable({ providedIn: 'root' })\nexport class RobinChatActionDispatcher {\n private readonly chat = inject(RobinChatService);\n private readonly injector = inject(Injector);\n\n readonly responses$ = new Subject<ChatResponse>();\n readonly errors$ = new Subject<unknown>();\n\n /** Current thread id — set by the ChatComponent when a thread is active. */\n threadId: string | undefined;\n\n async dispatch(action: A2uiClientAction): Promise<void> {\n if (!this.threadId) {\n // Action fired outside an active chat session (e.g. from the showcase).\n // eslint-disable-next-line no-console\n console.warn('[a2ui] action ignored — no active thread', action);\n return;\n }\n const dataModel = this.snapshotDataModel(action.surfaceId);\n try {\n const response = await this.chat.sendAction({\n threadId: this.threadId,\n surfaceId: action.surfaceId,\n action: { ...action, dataModel },\n });\n this.responses$.next(response);\n } catch (error) {\n this.errors$.next(error);\n }\n }\n\n private snapshotDataModel(surfaceId: string): unknown {\n const renderer = this.injector.get(A2uiRendererService);\n const surface = renderer.surfaceGroup.getSurface(surfaceId);\n return surface?.dataModel.get('/') ?? null;\n }\n}\n","import { A2uiRendererService } from '@a2ui/angular/v0_9';\nimport { DatePipe } from '@angular/common';\nimport {\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Input,\n inject,\n OnInit,\n Output,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport {\n phosphorClockCounterClockwise,\n phosphorPaperPlaneRight,\n phosphorPlus,\n phosphorX,\n} from '@ng-icons/phosphor-icons/regular';\nimport { Product } from '@ah-oh/ao-workspaces-types';\nimport { ButtonComponent } from '../../button/button.component';\nimport { IconComponent } from '../../icon/icon.component';\nimport { WorkspaceNavbarService } from '../workspace-navbar.service';\nimport { SearchEntityType } from '../../navigation/navigation.types';\nimport { ROBIN_SEARCH_APP_NAME } from '../../navigation/services/robin-search.service';\nimport { ChatMessageComponent } from './chat-message/chat-message.component';\nimport {\n ChatPart,\n ChatProduct,\n ChatResponse,\n ChatThreadOverview,\n ChatTurn,\n} from './chat.types';\nimport { RobinChatActionDispatcher } from './robin-chat-action-dispatcher.service';\nimport { RobinChatService } from './robin-chat.service';\n\nconst ERROR_FALLBACK = 'Robin antwortet gerade nicht. Bitte versuche es gleich nochmal.';\n\n@Component({\n selector: 'lib-chat',\n imports: [ReactiveFormsModule, ChatMessageComponent, IconComponent, ButtonComponent, DatePipe],\n templateUrl: './chat.component.html',\n styleUrl: './chat.component.scss',\n})\nexport class ChatComponent implements OnInit {\n @ViewChild('conversation') historyElement?: ElementRef<HTMLElement>;\n @ViewChild('textField') textField!: ElementRef;\n\n protected readonly addIcon = phosphorPlus;\n protected readonly closeIcon = phosphorX;\n protected readonly sendIcon = phosphorPaperPlaneRight;\n protected readonly historyIcon = phosphorClockCounterClockwise;\n\n protected readonly inputControl = new FormControl('');\n protected readonly turns = signal<ChatTurn[]>([]);\n protected readonly activeRequest = signal<boolean>(false);\n protected readonly showHistory = signal<boolean>(false);\n protected readonly threads = signal<ChatThreadOverview[] | undefined>(undefined);\n\n @Input() searchType?: SearchEntityType;\n @Output() closed = new EventEmitter<void>();\n\n private readonly chat = inject(RobinChatService);\n private readonly renderer = inject(A2uiRendererService);\n private readonly dispatcher = inject(RobinChatActionDispatcher);\n private readonly authService = inject(WorkspaceNavbarService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly appName = inject(ROBIN_SEARCH_APP_NAME);\n\n private product!: ChatProduct;\n private currentThreadId?: string;\n\n ngOnInit(): void {\n this.product = this.resolveProduct();\n this.dispatcher.responses$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(response => this.handleResponse(response));\n this.dispatcher.errors$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.handleError());\n this.greet();\n }\n\n protected newChat(): void {\n this.setThreadId(undefined);\n this.turns.set([]);\n this.showHistory.set(false);\n this.greet();\n }\n\n protected send(): void {\n const text = this.inputControl.value?.trim();\n if (!text || this.activeRequest()) return;\n this.appendUserTurn(text);\n this.inputControl.reset();\n this.dispatchToBackend(text);\n }\n\n protected toggleHistory(): void {\n const next = !this.showHistory();\n this.showHistory.set(next);\n if (next && this.threads() === undefined) {\n void this.chat\n .listThreads(this.product)\n .then(threads => this.threads.set(threads))\n .catch(() => this.threads.set([]));\n }\n }\n\n protected openThread(threadId: string): void {\n this.showHistory.set(false);\n this.activeRequest.set(true);\n void this.chat\n .loadHistory(threadId)\n .then(turns => {\n this.setThreadId(threadId);\n // Only the last a2ui surface stays interactive — strip earlier ones\n // from history (they would render against deleted/missing surfaces).\n const liveSurfaceIds = this.collectLiveSurfaceIds(turns);\n const projected = turns\n .map(turn => ({\n ...turn,\n parts: turn.parts.filter(\n part => part.kind !== 'a2ui' || liveSurfaceIds.has(part.surface.surfaceId),\n ),\n }))\n .filter(turn => turn.parts.length > 0);\n this.turns.set(projected);\n for (const turn of projected) {\n for (const part of turn.parts) {\n if (part.kind === 'a2ui') {\n try {\n this.renderer.processMessages(part.surface.messages as never);\n } catch (error) {\n console.warn('[RobinChat] A2UI history render failed', error);\n }\n }\n }\n }\n this.scrollDown(false);\n })\n .finally(() => this.activeRequest.set(false));\n }\n\n private collectLiveSurfaceIds(turns: ChatTurn[]): Set<string> {\n for (let i = turns.length - 1; i >= 0; i -= 1) {\n const surfaceParts = turns[i].parts.filter(part => part.kind === 'a2ui');\n if (surfaceParts.length > 0) {\n return new Set(\n surfaceParts.map(part => (part as { surface: { surfaceId: string } }).surface.surfaceId),\n );\n }\n }\n return new Set();\n }\n\n protected setSize(): void {\n const el = this.textField.nativeElement;\n el.rows = 1;\n const maxHeight = Math.min(window.innerHeight - 120, 630);\n while (el.scrollHeight > el.clientHeight && el.clientHeight < maxHeight) {\n el.rows += 1;\n }\n }\n\n private greet(): void {\n this.activeRequest.set(true);\n void this.chat\n .sendMessage({\n question: 'Bitte begrüße den User kurz und biete Hilfe an.',\n threadId: this.currentThreadId,\n product: this.product,\n appName: this.appName,\n type: this.searchType ?? null,\n })\n .then(response => this.handleResponse(response))\n .catch(() => this.handleError());\n }\n\n private dispatchToBackend(question: string): void {\n this.activeRequest.set(true);\n this.scrollDown();\n void this.chat\n .sendMessage({\n question,\n threadId: this.currentThreadId,\n product: this.product,\n appName: this.appName,\n type: this.searchType ?? null,\n })\n .then(response => this.handleResponse(response))\n .catch(() => this.handleError());\n }\n\n private handleResponse(response: ChatResponse): void {\n this.setThreadId(response.threadId);\n this.tryRetireOldSurfaces();\n this.appendAssistantTurn(this.processA2uiParts(response.parts));\n this.threads.set(undefined);\n this.activeRequest.set(false);\n }\n\n private tryRetireOldSurfaces(): void {\n try {\n this.retireOldSurfaces();\n } catch (error) {\n console.warn('[RobinChat] A2UI surface retirement failed', error);\n }\n }\n\n private processA2uiParts(parts: ChatPart[]): ChatPart[] {\n const renderable: ChatPart[] = [];\n for (const part of parts) {\n if (part.kind !== 'a2ui') {\n renderable.push(part);\n continue;\n }\n try {\n this.renderer.processMessages(part.surface.messages as never);\n renderable.push(part);\n } catch (error) {\n console.warn('[RobinChat] A2UI render failed', error);\n }\n }\n return renderable.length > 0 ? renderable : [{ kind: 'text', content: ERROR_FALLBACK }];\n }\n\n /**\n * Removes A2UI surfaces from the renderer that belong to older turns and\n * strips their `a2ui` parts so the chat history doesn't accumulate stale\n * interactive cards as the conversation progresses.\n */\n private retireOldSurfaces(): void {\n const toDelete: string[] = [];\n const nextTurns = this.turns().map(turn => {\n const filtered = turn.parts.filter(part => {\n if (part.kind !== 'a2ui') return true;\n toDelete.push(part.surface.surfaceId);\n return false;\n });\n return filtered.length === turn.parts.length ? turn : { ...turn, parts: filtered };\n });\n if (toDelete.length === 0) return;\n this.turns.set(nextTurns.filter(turn => turn.parts.length > 0));\n this.renderer.processMessages(\n toDelete.map(surfaceId => ({\n version: 'v0.9',\n deleteSurface: { surfaceId },\n })) as never,\n );\n }\n\n private handleError(): void {\n this.appendAssistantTurn([{ kind: 'text', content: ERROR_FALLBACK }]);\n this.activeRequest.set(false);\n }\n\n private setThreadId(threadId: string | undefined): void {\n this.currentThreadId = threadId;\n this.dispatcher.threadId = threadId;\n }\n\n private appendUserTurn(content: string): void {\n this.appendTurn({\n role: 'user',\n parts: [{ kind: 'text', content }],\n createdAt: new Date().toISOString(),\n });\n }\n\n private appendAssistantTurn(parts: ChatPart[]): void {\n this.appendTurn({ role: 'assistant', parts, createdAt: new Date().toISOString() });\n }\n\n private appendTurn(turn: ChatTurn): void {\n this.turns.update(turns => [...turns, turn]);\n this.scrollDown();\n }\n\n private scrollDown(smooth = true): void {\n setTimeout(() => {\n this.historyElement?.nativeElement.scrollTo({\n behavior: smooth ? 'smooth' : 'instant',\n top: this.historyElement.nativeElement.scrollHeight,\n });\n }, 0);\n }\n\n private resolveProduct(): ChatProduct {\n switch (this.authService.userSession?.product) {\n case Product.SZALES:\n return 'szales';\n case Product.SETHUB:\n return 'sethub';\n case Product.ADMIN:\n return 'admin';\n default:\n throw new Error('Product not found');\n }\n }\n}\n","<div class=\"sidebar\">\n @if (showHistory()) {\n <div class=\"chat-history\">\n <div class=\"header\">\n <h3>Verlauf</h3>\n </div>\n <div class=\"history-items\">\n @if (threads() === undefined) {\n <div class=\"history-empty\">Lädt…</div>\n } @else if (threads()!.length === 0) {\n <div class=\"history-empty\">Noch keine Gespräche.</div>\n }\n @for (item of threads(); track item.threadId) {\n <div class=\"chat-history-item\" (click)=\"openThread(item.threadId)\">\n <div class=\"preview\">{{ item.lastMessage }}</div>\n <div class=\"footer\">\n <div>{{ item.messageCount }} Nachrichten</div>\n <div>{{ item.updatedAt | date: 'dd.MM.yyyy HH:mm' }}</div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n <div class=\"chat\">\n <div class=\"header\">\n <button ao-button variant=\"outline\" (click)=\"toggleHistory()\">\n <ao-icon [svg]=\"historyIcon\"></ao-icon>\n </button>\n <h2>Hilfecenter</h2>\n <div class=\"flex\">\n <button ao-button variant=\"outline\" (click)=\"newChat()\">\n <ao-icon [svg]=\"addIcon\"></ao-icon>\n </button>\n <button ao-button variant=\"outline\" (click)=\"showHistory.set(false); closed.emit()\">\n <ao-icon [svg]=\"closeIcon\"></ao-icon>\n </button>\n </div>\n </div>\n <div class=\"conversation-history\" #conversation>\n @for (turn of turns(); track $index) {\n <lib-chat-message\n [parts]=\"turn.parts\"\n [side]=\"turn.role === 'assistant' ? 'left' : 'right'\"\n >\n </lib-chat-message>\n }\n @if (activeRequest()) {\n <lib-chat-message [showTyping]=\"true\" side=\"left\"></lib-chat-message>\n }\n </div>\n\n <div class=\"input\">\n <textarea\n #textField\n rows=\"1\"\n class=\"textarea\"\n [formControl]=\"inputControl\"\n (keydown.enter)=\"send(); $event.stopPropagation(); $event.preventDefault()\"\n (input)=\"setSize()\"\n ></textarea>\n <button ao-button variant=\"primary\" (click)=\"send()\" class=\"send-button\">\n <ao-icon [svg]=\"sendIcon\"></ao-icon>\n </button>\n </div>\n </div>\n</div>\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n model,\n output,\n PLATFORM_ID,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router } from '@angular/router';\nimport {\n phosphorGearSix,\n phosphorPenNib,\n phosphorPlus,\n phosphorPuzzlePiece,\n phosphorRobot,\n phosphorSignOut,\n phosphorSparkle,\n phosphorSquaresFour,\n phosphorTreeStructure,\n} from '@ng-icons/phosphor-icons/regular';\nimport * as phosphorIcons from '@ng-icons/phosphor-icons/regular';\nimport { filter, fromEvent, map } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\nimport { LogoMenuComponent, LogoMenuItem } from '../navigation/logo-menu/logo-menu.component';\nimport {\n NavItem,\n NavItemChangeEvent,\n PageSuggestion,\n RecommendedFilter,\n SearchResult,\n SearchResultGroup,\n SearchSubmitEvent,\n} from '../navigation/navigation.types';\nimport { SideNavComponent } from '../navigation/side-nav/side-nav.component';\nimport { SubTopNavComponent } from '../navigation/sub-top-nav/sub-top-nav.component';\nimport { TopNavComponent } from '../navigation/top-nav/top-nav.component';\nimport { WorkspaceNavbarService } from './workspace-navbar.service';\nimport { IWorkspaceApp } from './workspace-navbar.types';\nimport { IconComponent } from '../icon/icon.component';\nimport { ButtonComponent } from '../button/button.component';\nimport { ChatComponent } from './chat/chat.component';\n\n@Component({\n selector: 'ao-workspace-navbar',\n imports: [\n SideNavComponent,\n TopNavComponent,\n SubTopNavComponent,\n LogoMenuComponent,\n IconComponent,\n ButtonComponent,\n ChatComponent,\n ],\n templateUrl: './workspace-navbar.component.html',\n styleUrl: './workspace-navbar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-workspace-navbar',\n },\n})\nexport class WorkspaceNavbarComponent implements AfterViewInit {\n private readonly workspaceNavbarService = inject(WorkspaceNavbarService);\n private readonly router = inject(Router);\n private readonly document = inject(DOCUMENT);\n private destroyRef = inject(DestroyRef);\n private readonly platformId = inject(PLATFORM_ID);\n\n private lastScrollY = 0;\n private readonly scrollThreshold = 10;\n protected readonly navHidden = signal(false);\n\n readonly appId = input.required<string>();\n readonly production = input<boolean>(true);\n readonly topNavItems = input<NavItem[]>([]);\n readonly showSearch = input<boolean>(true);\n readonly showNotifications = input<boolean>(true);\n readonly notificationCount = input<number>(0);\n readonly searchPlaceholder = input<string>('Suche oder Prompt');\n readonly recommendedFilters = input<RecommendedFilter[]>([]);\n readonly activeFilter = model<RecommendedFilter | null>(null);\n readonly resultGroups = input<SearchResultGroup[]>([]);\n readonly pageSuggestion = input<PageSuggestion | null>(null);\n readonly aiSuggestions = input<SearchResult[]>([]);\n readonly searchLoading = input<boolean>(false);\n readonly searchError = input<string | null>(null);\n readonly topNavItemClick = output<NavItem>();\n readonly topNavItemChange = output<NavItemChangeEvent>();\n readonly subTopNavItemClick = output<NavItem>();\n readonly subTopNavItemChange = output<NavItemChangeEvent>();\n readonly appSwitched = output<IWorkspaceApp>();\n readonly searchSubmit = output<SearchSubmitEvent>();\n readonly searchQueryChange = output<string>();\n readonly searchViewAll = output<string>();\n readonly searchResultSelect = output<SearchResult>();\n readonly searchAiSuggestionSelect = output<SearchResult>();\n readonly searchPageSuggestionSelect = output<PageSuggestion>();\n readonly searchFilterSelect = output<RecommendedFilter>();\n readonly searchFilterClear = output<void>();\n readonly notificationClick = output<void>();\n\n private readonly currentUrl = toSignal(\n this.router.events.pipe(\n filter((e): e is NavigationEnd => e instanceof NavigationEnd),\n map(e => e.urlAfterRedirects)\n ),\n { initialValue: this.router.url }\n );\n public readonly companyLogo = signal<string | null>(null);\n protected readonly activeTopNavItemId = computed(() => {\n const url = this.currentUrl() ?? '';\n return this.findBestRouteMatch(url, this.topNavItems())?.id ?? '';\n });\n protected readonly activeSubTopNavItems = computed(() => {\n const activeId = this.activeTopNavItemId();\n return this.topNavItems().find(item => item.id === activeId)?.children ?? [];\n });\n protected readonly activeSubTopNavItemId = computed(() => {\n const url = this.currentUrl() ?? '';\n return this.findBestRouteMatch(url, this.activeSubTopNavItems())?.id ?? '';\n });\n protected readonly activeWorkspaceAppId = computed(() => {\n return this.workspaceNavbarService.activeAppIdSignal() ?? this.appId();\n });\n protected readonly signOutIcon = phosphorSignOut;\n protected readonly plusIcon = phosphorPlus;\n protected readonly chatIcon = phosphorRobot;\n\n private readonly iconMap: Record<string, string> = {\n szales: phosphorTreeStructure,\n setHUB: phosphorPenNib,\n ai: phosphorSparkle,\n admin: phosphorGearSix,\n 'component-manager': phosphorPuzzlePiece,\n };\n private readonly fallbackIcon = phosphorSquaresFour;\n private readonly phosphorIconRegistry = phosphorIcons as Record<string, string>;\n\n /** Desired order of product app ids in the nav (case-insensitive match). */\n private readonly productOrder = ['szales', 'sethub', 'ai', 'admin', 'component-manager'];\n\n protected readonly workspaceAppNavItems = computed<NavItem[]>(() => {\n const response = this.workspaceNavbarService.workspaceAppsResponseSignal();\n if (!response) return [];\n const mapApp = (app: IWorkspaceApp): NavItem => ({\n id: app.appId,\n label: app.shortName ?? app.name,\n icon: this.resolveIcon(app),\n tooltip: app.name,\n });\n\n const productItems = response.products.map(mapApp).sort((a, b) => {\n const indexA = this.productOrder.indexOf(a.id.toLowerCase());\n const indexB = this.productOrder.indexOf(b.id.toLowerCase());\n const posA = indexA === -1 ? this.productOrder.length : indexA;\n const posB = indexB === -1 ? this.productOrder.length : indexB;\n return posA - posB;\n });\n\n const customItems = response.customApps.map(mapApp);\n if (customItems.length === 0) return productItems;\n const result = [\n ...productItems,\n { id: 'separator', label: '', separator: true },\n ...customItems,\n ];\n return result;\n });\n\n protected readonly bottomNavItems = computed<NavItem[]>(() => [\n {\n id: 'sign-out',\n label: 'Abmelden',\n icon: this.signOutIcon,\n tooltip: 'Abmelden',\n },\n ]);\n\n protected readonly companyMenuItems = computed<LogoMenuItem[]>(() => {\n const companies = this.workspaceNavbarService.companiesSignal() ?? [];\n return companies.map(company => ({\n id: company._id,\n label: company.name,\n }));\n });\n\n protected readonly selectedCompanyId = computed(() => {\n return this.workspaceNavbarService.sessionSignal()?.enabledCompanyId ?? '';\n });\n\n protected readonly hasSubTopNav = computed(() => this.activeSubTopNavItems().length > 0);\n\n showTools = computed(\n () =>\n this.workspaceNavbarService.sessionSignal()?.companyId ===\n WorkspaceNavbarService.HANDBOOK_COMPANY_ID\n );\n chatOpen = signal(false);\n\n constructor() {\n effect(() => {\n this.getLogo(this.selectedCompanyId());\n });\n }\n\n ngAfterViewInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n fromEvent(window, 'scroll', { passive: true })\n .pipe(throttleTime(50), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n const scrollY = window.scrollY ?? window.pageYOffset ?? 0;\n if (scrollY <= this.scrollThreshold) {\n this.navHidden.set(false);\n } else if (scrollY > this.lastScrollY) {\n this.navHidden.set(true);\n } else {\n this.navHidden.set(false);\n }\n this.lastScrollY = scrollY;\n });\n }\n }\n\n private resolveIcon(app: IWorkspaceApp): string {\n if (app.icon) {\n return this.resolvePhosphorIcon(app.icon);\n }\n return this.iconMap[app.appId] ?? this.fallbackIcon;\n }\n\n private resolvePhosphorIcon(name: string): string {\n const key =\n 'phosphor' +\n name\n .split('-')\n .map(s => s.charAt(0).toUpperCase() + s.slice(1))\n .join('');\n return this.phosphorIconRegistry[key] ?? this.fallbackIcon;\n }\n\n protected onSideNavItemClick(item: NavItem): void {\n if (item.id === 'sign-out') {\n this.workspaceNavbarService.signOut().subscribe();\n return;\n }\n if (item.id === this.activeWorkspaceAppId()) {\n return;\n }\n const apps = this.workspaceNavbarService.workspaceAppsSignal() ?? [];\n const app = apps.find(a => a.appId === item.id);\n if (!app) return;\n this.appSwitched.emit(app);\n this.workspaceNavbarService.switchApp(app.appId).subscribe();\n }\n\n protected onCompanyChange(item: LogoMenuItem): void {\n if (item.id === this.selectedCompanyId()) {\n return;\n }\n this.workspaceNavbarService.changeCompany({ companyId: item.id }).subscribe();\n }\n\n protected onTopNavClick(item: NavItem): void {\n this.topNavItemClick.emit(item);\n if (item.route) {\n this.router.navigate([item.route]);\n }\n }\n\n protected onTopNavChange(event: NavItemChangeEvent): void {\n this.topNavItemChange.emit(event);\n }\n\n protected onSubTopNavClick(item: NavItem): void {\n this.subTopNavItemClick.emit(item);\n if (item.route) {\n this.router.navigate([item.route]);\n }\n }\n\n protected onSubTopNavChange(event: NavItemChangeEvent): void {\n this.subTopNavItemChange.emit(event);\n }\n\n protected onNotificationClick(): void {\n this.notificationClick.emit();\n }\n\n private findBestRouteMatch(url: string, items: NavItem[]): NavItem | undefined {\n return items\n .filter(item => item.route && this.matchesRoute(url, item.route))\n .sort((a, b) => (b.route?.length ?? 0) - (a.route?.length ?? 0))[0];\n }\n\n private matchesRoute(url: string, route: string): boolean {\n return url === route || url.startsWith(route + '/') || url.startsWith(route + '?');\n }\n\n private getLogo(companyId: string): void {\n if (!companyId) return;\n this.workspaceNavbarService.getCompanyLogo(companyId).subscribe(logo => {\n this.companyLogo.set(logo.url ?? null);\n });\n }\n}\n","<ao-side-nav\n [items]=\"workspaceAppNavItems()\"\n [bottomItems]=\"bottomNavItems()\"\n [activeItemId]=\"activeWorkspaceAppId()\"\n [expanded]=\"false\"\n (itemClick)=\"onSideNavItemClick($event)\"\n>\n <ao-logo-menu\n aoSideNavLogo\n [items]=\"companyMenuItems()\"\n [selectedItem]=\"selectedCompanyId()\"\n (selectionChange)=\"onCompanyChange($event)\"\n >\n @if (companyLogo()) {\n <img [src]=\"companyLogo()\" alt=\"Logo\" class=\"workspace-navbar__logo\" />\n } @else {\n <svg\n class=\"workspace-navbar__logo\"\n width=\"96\"\n height=\"120\"\n viewBox=\"0 0 96 120\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label=\"Logo\"\n role=\"img\"\n >\n <path\n d=\"M36.6592 37.5955L31.1625 31.4924C28.1349 28.1284 28.4073 22.9247 31.7689 19.8971C33.2769 18.5401 35.2266 17.7918 37.2633 17.7918C39.5929 17.7918 41.8195 18.7781 43.3664 20.4967C45.458 22.824 46.0484 26.0826 44.911 28.998C44.4465 30.1903 43.7234 31.2338 42.7623 32.0988L36.6592 37.5955ZM95.5987 76.4613L83.6854 63.2299L70.4585 75.1363L48.5725 50.8269L54.6802 45.3279C57.6779 42.6253 60.035 39.2156 61.4949 35.4696C65.0969 26.2497 63.2204 15.9497 56.6001 8.58568C46.9981 -2.06444 30.5149 -2.92488 19.8556 6.66801C9.20088 16.2655 8.3359 32.7464 17.9311 43.4057L23.4255 49.5065L14.1118 57.8957C13.5099 58.438 12.9287 58.9621 12.3817 59.4792L12.3703 59.4655L11.2742 60.4518C4.49141 66.5572 0.493621 74.9372 0.0153502 84.045C-0.00525137 84.4317 -0.000673098 84.8185 0.00390115 85.2029L0.0084674 85.7086L0.00160688 87.1494L17.7823 87.1503L17.7938 85.7224L17.7915 85.4134C17.7892 85.2716 17.7869 85.1297 17.7938 84.9809C18.0203 80.6216 19.938 76.61 23.1852 73.6855L35.341 62.7379L57.2271 87.0473L45.0712 97.995C42.1055 100.668 38.261 102.151 34.2449 102.174L32.817 102.183V120L34.2586 119.998C42.6547 119.977 50.7258 116.86 56.9868 111.226L69.1404 100.281L81.0446 113.503L94.276 101.592L82.3718 88.3677L95.5987 76.4613Z\"\n fill=\"#FF004D\"\n />\n </svg>\n }\n </ao-logo-menu>\n</ao-side-nav>\n\n<div class=\"workspace-navbar__main\" [class.workspace-navbar__main--with-subnav]=\"hasSubTopNav()\">\n <div\n class=\"workspace-navbar__nav-wrapper\"\n [class.workspace-navbar__nav-wrapper--hidden]=\"navHidden()\"\n >\n <ao-top-nav\n [items]=\"topNavItems()\"\n [activeItemId]=\"activeTopNavItemId()\"\n [showSearch]=\"showSearch()\"\n [showNotifications]=\"showNotifications()\"\n [notificationCount]=\"notificationCount()\"\n [searchPlaceholder]=\"searchPlaceholder()\"\n [recommendedFilters]=\"recommendedFilters()\"\n [(activeFilter)]=\"activeFilter\"\n [resultGroups]=\"resultGroups()\"\n [pageSuggestion]=\"pageSuggestion()\"\n [aiSuggestions]=\"aiSuggestions()\"\n [searchLoading]=\"searchLoading()\"\n [searchError]=\"searchError()\"\n (itemClick)=\"onTopNavClick($event)\"\n (itemChange)=\"onTopNavChange($event)\"\n (searchSubmit)=\"searchSubmit.emit($event)\"\n (searchQueryChange)=\"searchQueryChange.emit($event)\"\n (searchViewAll)=\"searchViewAll.emit($event)\"\n (searchResultSelect)=\"searchResultSelect.emit($event)\"\n (searchAiSuggestionSelect)=\"searchAiSuggestionSelect.emit($event)\"\n (searchPageSuggestionSelect)=\"searchPageSuggestionSelect.emit($event)\"\n (searchFilterSelect)=\"searchFilterSelect.emit($event)\"\n (searchFilterClear)=\"searchFilterClear.emit()\"\n (notificationClick)=\"onNotificationClick()\"\n [showTools]=\"showTools()\"\n />\n\n @if (hasSubTopNav()) {\n <ao-sub-top-nav\n [items]=\"activeSubTopNavItems()\"\n [activeItemId]=\"activeSubTopNavItemId()\"\n (itemClick)=\"onSubTopNavClick($event)\"\n (itemChange)=\"onSubTopNavChange($event)\"\n />\n }\n </div>\n\n <main class=\"workspace-navbar__content\">\n <ng-content />\n </main>\n</div>\n\n<button ao-button class=\"handbook-chat\" variant=\"primary\" (click)=\"chatOpen.set(!chatOpen())\">\n <ao-icon [svg]=\"chatIcon\" />\n</button>\n\n<div class=\"chat-container\" [class.open]=\"chatOpen()\">\n <lib-chat [searchType]=\"activeFilter()?.type\" (closed)=\"chatOpen.set(false)\" />\n</div>\n","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { A2uiRendererService, CatalogComponent } from '@a2ui/angular/v0_9';\nimport { ChoicePickerApi } from '@a2ui/web_core/v0_9/basic_catalog';\n\ninterface ChoicePickerOption {\n readonly label: string;\n readonly value: string;\n}\n\n/**\n * Robin-flavoured ChoicePicker that keeps the basic A2UI look but turns chip\n * selections into server actions so quick-reply chips behave like chat buttons.\n */\n@Component({\n selector: 'lib-ao-choice-picker',\n template: `\n <div class=\"a2ui-choice-picker\">\n @if (displayStyle() === 'chips') {\n <div class=\"a2ui-chips-group\">\n @for (option of options(); track option.value) {\n <button\n type=\"button\"\n class=\"a2ui-chip\"\n [class.active]=\"isSelected(option.value)\"\n (click)=\"selectOption(option)\"\n >\n {{ option.label }}\n </button>\n }\n </div>\n } @else {\n <div class=\"a2ui-options-group\">\n @for (option of options(); track option.value) {\n <label class=\"a2ui-option-label\">\n <input\n [type]=\"isMultiple() ? 'checkbox' : 'radio'\"\n [name]=\"componentId()\"\n [value]=\"option.value\"\n [checked]=\"isSelected(option.value)\"\n (change)=\"selectOption(option)\"\n class=\"a2ui-option-input\"\n />\n <span class=\"a2ui-option-text\">{{ option.label }}</span>\n </label>\n }\n </div>\n }\n </div>\n `,\n styles: [\n `\n .a2ui-choice-picker {\n padding: var(--a2ui-choicepicker-padding, 0);\n width: 100%;\n }\n .a2ui-options-group,\n .a2ui-chips-group {\n display: flex;\n flex-wrap: wrap;\n gap: var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, 0.25rem));\n }\n .a2ui-options-group {\n flex-direction: column;\n }\n .a2ui-option-label {\n align-items: center;\n color: var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333));\n cursor: pointer;\n display: flex;\n gap: var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, 0.25rem));\n }\n .a2ui-option-input {\n height: var(--a2ui-choicepicker-checkbox-size, 1rem);\n width: var(--a2ui-choicepicker-checkbox-size, 1rem);\n }\n .a2ui-chip {\n background: var(--a2ui-choicepicker-chip-background, var(--a2ui-color-surface, #fff));\n border: var(--a2ui-choicepicker-chip-border, 1px solid var(--a2ui-color-border, #ccc));\n border-radius: var(--a2ui-choicepicker-chip-border-radius, 100px);\n color: var(--a2ui-choicepicker-chip-color, var(--a2ui-color-on-background, #333));\n cursor: pointer;\n font: inherit;\n padding: var(\n --a2ui-choicepicker-chip-padding,\n var(--a2ui-spacing-s, 0.5rem) var(--a2ui-spacing-m, 1rem)\n );\n transition:\n background-color 160ms ease,\n border-color 160ms ease,\n color 160ms ease,\n transform 160ms ease;\n }\n .a2ui-chip:hover {\n border-color: var(--a2ui-choicepicker-chip-border-hover, var(--a2ui-color-primary, #17e));\n transform: translateY(-1px);\n }\n .a2ui-chip.active {\n background: var(\n --a2ui-choicepicker-chip-background-selected,\n var(--a2ui-color-primary, #17e)\n );\n border-color: var(\n --a2ui-choicepicker-chip-background-selected,\n var(--a2ui-color-primary, #17e)\n );\n color: var(--a2ui-color-on-primary, #fff);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AoChoicePickerComponent extends CatalogComponent<typeof ChoicePickerApi> {\n protected readonly displayStyle = computed<string>(() => this.readString('displayStyle') ?? 'checkbox');\n protected readonly options = computed<ChoicePickerOption[]>(() => this.readOptions());\n protected readonly selectedValue = computed<readonly string[]>(() => this.readSelectedValues());\n private readonly renderer = inject(A2uiRendererService);\n protected isMultiple(): boolean {\n return this.readString('variant') === 'multipleSelection';\n }\n protected isSelected(value: string): boolean {\n return this.selectedValue().includes(value);\n }\n protected selectOption(option: ChoicePickerOption): void {\n const nextValue = this.getNextValue(option.value);\n this.props()['value']?.onUpdate([...nextValue]);\n if (this.displayStyle() === 'chips') this.dispatchSelection(option, nextValue);\n }\n private getNextValue(value: string): readonly string[] {\n if (!this.isMultiple()) return [value];\n if (this.isSelected(value)) return this.selectedValue().filter(item => item !== value);\n return [...this.selectedValue(), value];\n }\n private dispatchSelection(option: ChoicePickerOption, selectedValues: readonly string[]): void {\n const surface = this.renderer.surfaceGroup.getSurface(this.surfaceId());\n if (!surface) return;\n void surface.dispatchAction(\n {\n event: {\n name: 'choiceSelected',\n context: {\n componentId: this.componentId(),\n label: option.label,\n selectedValue: option.value,\n selectedValues: [...selectedValues],\n },\n },\n },\n this.componentId(),\n );\n }\n private readString(key: 'displayStyle' | 'variant'): string | undefined {\n const value = this.props()[key]?.value();\n return typeof value === 'string' ? value : undefined;\n }\n private readSelectedValues(): readonly string[] {\n const value = this.props()['value']?.value();\n if (!Array.isArray(value)) return [];\n return value.filter((item): item is string => typeof item === 'string');\n }\n private readOptions(): ChoicePickerOption[] {\n const value = this.props()['options']?.value();\n if (!Array.isArray(value)) return [];\n return value.filter(this.isChoicePickerOption);\n }\n private isChoicePickerOption(value: unknown): value is ChoicePickerOption {\n if (!value || typeof value !== 'object') return false;\n const option = value as Record<string, unknown>;\n return typeof option['label'] === 'string' && typeof option['value'] === 'string';\n }\n}\n","import { BasicCatalogBase } from '@a2ui/angular/v0_9';\nimport { Injectable } from '@angular/core';\nimport { ChoicePickerApi } from '@a2ui/web_core/v0_9/basic_catalog';\nimport { AoChoicePickerComponent } from './ao-choice-picker.component';\n\nexport const AO_CATALOG_ID = 'ah-oh.com:robin-v1';\n\n/**\n * Robin's design-system catalog. Phase 1 delegates entirely to the upstream\n * BasicCatalog implementations for the six allowed components; server-side\n * prompt-pruning + validator restrict the LLM to the agreed set. Phase 2 will\n * swap individual entries for ao-* design-system wrappers via the\n * BasicCatalogBase `components` override.\n *\n * Extends BasicCatalogBase (not BasicCatalog) so we can supply our own catalog\n * id — the renderer looks up catalogs by id when processing createSurface\n * messages, so this must match AO_CATALOG_ID used by the prompt/showcase.\n */\n@Injectable({ providedIn: 'root' })\nexport class AoCatalog extends BasicCatalogBase {\n constructor() {\n super({\n id: AO_CATALOG_ID,\n components: {\n choicePicker: { ...ChoicePickerApi, component: AoChoicePickerComponent },\n },\n });\n }\n}\n","import {\n A2UI_RENDERER_CONFIG,\n A2uiRendererService,\n provideMarkdownRenderer,\n} from '@a2ui/angular/v0_9';\nimport { renderMarkdown } from '@a2ui/markdown-it';\nimport { EnvironmentProviders, makeEnvironmentProviders, inject } from '@angular/core';\nimport { RobinChatActionDispatcher } from '../robin-chat-action-dispatcher.service';\nimport { AoCatalog } from './ao-catalog';\n\ninterface A2uiClientAction {\n name: string;\n surfaceId: string;\n sourceComponentId: string;\n timestamp: string;\n context: Record<string, unknown>;\n}\n\ninterface RobinA2uiRendererConfiguration {\n readonly catalogs: readonly AoCatalog[];\n readonly actionHandler: (action: A2uiClientAction) => void;\n}\n\n/**\n * Registers the A2UI renderer for Robin chat. Apps must call this in their\n * provider list (NgModule providers or appConfig) so &lt;a2ui-v09-surface&gt; can\n * resolve components, render Markdown text, and route actions back to the\n * Robin backend via {@link RobinChatActionDispatcher}.\n */\nexport function provideRobinA2ui(): EnvironmentProviders {\n return makeEnvironmentProviders([\n AoCatalog,\n provideMarkdownRenderer((markdown: string): Promise<string> =>\n renderMarkdown(markdown).catch(renderFallbackMarkdown),\n ),\n {\n provide: A2UI_RENDERER_CONFIG,\n useFactory: (): RobinA2uiRendererConfiguration => {\n const catalog = inject(AoCatalog);\n const dispatcher = inject(RobinChatActionDispatcher);\n return {\n catalogs: [catalog],\n actionHandler: (action: A2uiClientAction): void => {\n void dispatcher.dispatch(action);\n },\n };\n },\n },\n A2uiRendererService,\n ]);\n}\n\nfunction renderFallbackMarkdown(markdown: string): string {\n return escapeHtml(markdown)\n .replace(/^#### (.*)$/gim, '<h4>$1</h4>')\n .replace(/^### (.*)$/gim, '<h3>$1</h3>')\n .replace(/^## (.*)$/gim, '<h2>$1</h2>')\n .replace(/^# (.*)$/gim, '<h1>$1</h1>')\n .replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>')\n .replace(/\\*(.*?)\\*/g, '<em>$1</em>')\n .replace(/\\n/g, '<br>');\n}\n\nfunction escapeHtml(value: string): string {\n return value\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;');\n}\n","/*\n * Public API Surface of design-system\n */\n\nexport * from './lib/design-system';\nexport * from './lib/auth';\nexport * from './lib/button/button.component';\nexport * from './lib/icon/icon.component';\nexport * from './lib/icon-button/icon-button.component';\nexport * from './lib/input/input.component';\nexport * from './lib/select/select.component';\nexport * from './lib/table/table.component';\nexport * from './lib/table/table.types';\nexport * from './lib/table/directives/table-cell-def.directive';\nexport * from './lib/table/components/table-checkbox.component';\nexport * from './lib/table/components/table-filter.component';\nexport * from './lib/table/components/table-input.component';\nexport * from './lib/table/components/table-select.component';\nexport * from './lib/table/components/table-pagination.component';\nexport * from './lib/table/components/table-row-actions.component';\nexport * from './lib/table/components/table-date-picker.component';\nexport * from './lib/markdown-editor/markdown-editor.component';\nexport * from './lib/markdown-editor/markdown-editor.types';\nexport * from './lib/slide-toggle/slide-toggle.component';\nexport * from './lib/editable-text/editable-text.component';\nexport * from './lib/dialog/dialog.component';\nexport * from './lib/dialog/dialog.service';\nexport * from './lib/dialog/dialog-ref';\nexport * from './lib/dialog/dialog.types';\nexport * from './lib/chips-input/chips-input.component';\nexport * from './lib/multiselect/multiselect.component';\nexport * from './lib/checkbox/checkbox.component';\nexport * from './lib/tabs/tabs.component';\nexport * from './lib/tabs/tab-panel.component';\nexport * from './lib/tabs/tabs.types';\nexport * from './lib/navigation/navigation.types';\nexport * from './lib/navigation/side-nav/side-nav.component';\nexport * from './lib/navigation/top-nav/top-nav.component';\nexport * from './lib/navigation/top-nav/nav-tools/nav-tools.component';\nexport * from './lib/navigation/ai-search/ai-search.component';\nexport * from './lib/navigation/search-results-page/search-results-page.component';\nexport * from './lib/navigation/services/robin-search.service';\nexport * from './lib/navigation/notification-button/notification-button.component';\nexport * from './lib/navigation/logo-menu/logo-menu.component';\nexport * from './lib/navigation/sub-top-nav/sub-top-nav.component';\nexport * from './lib/navigation/sub-nav-actions/sub-nav-actions.service';\nexport * from './lib/navigation/sub-nav-actions/sub-nav-actions.types';\nexport * from './lib/menu/components/menu/menu.component';\nexport * from './lib/menu/components/menu-item/menu-item.component';\nexport * from './lib/tooltip/directive/tooltip.directive';\nexport * from './lib/date-input/date-input.component';\nexport * from './lib/workspace-navbar/workspace-navbar.component';\nexport * from './lib/workspace-navbar/workspace-navbar.service';\nexport * from './lib/workspace-navbar/workspace-navbar.types';\nexport * from './lib/workspace-navbar/chat/chat.types';\nexport * from './lib/workspace-navbar/chat/robin-chat.service';\nexport * from './lib/workspace-navbar/chat/robin-chat-action-dispatcher.service';\nexport * from './lib/workspace-navbar/chat/a2ui/ao-catalog';\nexport * from './lib/workspace-navbar/chat/a2ui/a2ui-chat.providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.HandbookConfiguration","i1","i1.HandbookEntriesService","i2","map","i2.HandbookEntriesService","i3.WorkspaceNavbarService","i1.WorkspaceNavbarService","i2.WorkspaceNavbarService","i3","filter","throttleTime"],"mappings":"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"}
1
+ {"version":3,"file":"ah-oh-ao-workspaces-design-system.mjs","sources":["../../../../libs/design-system/src/lib/design-system.ts","../../../../libs/design-system/src/lib/auth/auth.service.ts","../../../../libs/design-system/src/lib/auth/auth.interceptor.ts","../../../../libs/design-system/src/lib/auth/auth.providers.ts","../../../../libs/design-system/src/lib/icon/icon.component.ts","../../../../libs/design-system/src/lib/button/button.component.ts","../../../../libs/design-system/src/lib/icon-button/icon-button.component.ts","../../../../libs/design-system/src/lib/input/input.component.ts","../../../../libs/design-system/src/lib/input/input.component.html","../../../../libs/design-system/src/lib/select/select.component.ts","../../../../libs/design-system/src/lib/select/select.component.html","../../../../libs/design-system/src/lib/table/components/table-checkbox.component.ts","../../../../libs/design-system/src/lib/table/components/table-input.component.ts","../../../../libs/design-system/src/lib/table/components/table-select.component.ts","../../../../libs/design-system/src/lib/date-input/date-picker/date-picker.component.ts","../../../../libs/design-system/src/lib/date-input/date-picker/date-picker.component.html","../../../../libs/design-system/src/lib/table/components/table-date-picker.component.ts","../../../../libs/design-system/src/lib/table/components/table-filter.component.ts","../../../../libs/design-system/src/lib/table/components/table-pagination.component.ts","../../../../libs/design-system/src/lib/table/components/table-row-actions.component.ts","../../../../libs/design-system/src/lib/table/directives/table-cell-def.directive.ts","../../../../libs/design-system/src/lib/table/table.component.ts","../../../../libs/design-system/src/lib/table/table.component.html","../../../../libs/design-system/src/lib/markdown-editor/markdown-editor.types.ts","../../../../libs/design-system/src/lib/markdown-editor/markdown-editor.component.ts","../../../../libs/design-system/src/lib/markdown-editor/markdown-editor.component.html","../../../../libs/design-system/src/lib/slide-toggle/slide-toggle.component.ts","../../../../libs/design-system/src/lib/slide-toggle/slide-toggle.component.html","../../../../libs/design-system/src/lib/editable-text/editable-text.component.ts","../../../../libs/design-system/src/lib/editable-text/editable-text.component.html","../../../../libs/design-system/src/lib/dialog/dialog-ref.ts","../../../../libs/design-system/src/lib/dialog/dialog.component.ts","../../../../libs/design-system/src/lib/dialog/dialog.component.html","../../../../libs/design-system/src/lib/dialog/dialog.types.ts","../../../../libs/design-system/src/lib/dialog/dialog.service.ts","../../../../libs/design-system/src/lib/chips-input/chips-input.component.ts","../../../../libs/design-system/src/lib/chips-input/chips-input.component.html","../../../../libs/design-system/src/lib/multiselect/multiselect.component.ts","../../../../libs/design-system/src/lib/multiselect/multiselect.component.html","../../../../libs/design-system/src/lib/checkbox/checkbox.component.ts","../../../../libs/design-system/src/lib/checkbox/checkbox.component.html","../../../../libs/design-system/src/lib/tabs/tab-panel.component.ts","../../../../libs/design-system/src/lib/tabs/tabs.component.ts","../../../../libs/design-system/src/lib/tabs/tabs.component.html","../../../../libs/design-system/src/lib/navigation/search-pages.ts","../../../../libs/design-system/src/lib/navigation/side-nav/side-nav.component.ts","../../../../libs/design-system/src/lib/navigation/side-nav/side-nav.component.html","../../../../libs/design-system/src/lib/navigation/ai-search/ai-search.component.ts","../../../../libs/design-system/src/lib/navigation/ai-search/ai-search.component.html","../../../../libs/design-system/src/lib/navigation/notification-button/notification-button.component.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/handbook-configuration.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/handbook-request-builder.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/handbook-base-service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/app/app-controller-get-health-check.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/services/app.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/handbook-entries/handbook-entry-controller-create-handbook-entry.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/handbook-entries/handbook-entry-controller-delete-handbook-entry.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/handbook-entries/handbook-entry-controller-find-all-handbook-entries.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/handbook-entries/handbook-entry-controller-find-all-handbook-entries-for-overview.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/handbook-entries/handbook-entry-controller-find-all-tags.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/handbook-entries/handbook-entry-controller-find-handbook-entry-by-id.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/handbook-entries/handbook-entry-controller-generate-handbook.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/handbook-entries/handbook-entry-controller-generate-handbook-from-text.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/handbook-entries/handbook-entry-controller-get-text-from-voice.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/handbook-entries/handbook-entry-controller-update-handbook-entry.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/services/handbook-entries.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/conversation/conversation-controller-conversation.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/conversation/conversation-controller-get-conversation-detail.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/conversation/conversation-controller-get-conversation-overview.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/conversation/conversation-controller-get-relevant-context.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/services/conversation.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/lichtbot/lichtbot-controller-get-import-adresses.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/lichtbot/lichtbot-controller-get-import-history.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/lichtbot/lichtbot-controller-join-room.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/lichtbot/lichtbot-controller-leave-room.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/lichtbot/lichtbot-controller-recive-message.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/services/lichtbot.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/presidio/presidio-controller-analyze-text.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/presidio/presidio-controller-anonymize-text.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/presidio/presidio-controller-test.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/services/presidio.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/sethub-apps/sethub-apps-controller-conversation.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/sethub-apps/sethub-apps-controller-get-relevant-context.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/sethub-apps/sethub-apps-controller-summary.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/services/sethub-apps.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/sethub-nav/sethub-nav-controller-process-nav-request.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/services/sethub-nav.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/sethub-products/sethub-products-controller-get-product-list.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/sethub-products/sethub-products-controller-get-product-search.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/services/sethub-products.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/fn/sethub-user-action/sethub-user-action-controller-generate-action-comment.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/services/sethub-user-action.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/handbook.module.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-api/index.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/dialog-edit-voice-text/dialog-edit-voice-text.component.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/dialog-edit-voice-text/dialog-edit-voice-text.component.html","../../../../libs/design-system/src/lib/workspace-navbar/workspace-navbar.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/handbook-voice.service.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/handbook/handbook.component.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/handbook/handbook.component.html","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/dialog-delete-handbook/dialog-delete-handbook.component.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/dialog-delete-handbook/dialog-delete-handbook.component.html","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/handbook-dialog.component.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/handbook-dialog.component.html","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/stop-record-dialog/stop-record-dialog.component.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/stop-record-dialog/stop-record-dialog.component.html","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/start-record-dialog/start-record-dialog.component.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/handbook-dialog/start-record-dialog/start-record-dialog.component.html","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/nav-tools.component.ts","../../../../libs/design-system/src/lib/navigation/top-nav/nav-tools/nav-tools.component.html","../../../../libs/design-system/src/lib/navigation/top-nav/top-nav.component.ts","../../../../libs/design-system/src/lib/navigation/top-nav/top-nav.component.html","../../../../libs/design-system/src/lib/navigation/search-results-page/search-results-page.component.ts","../../../../libs/design-system/src/lib/navigation/search-results-page/search-results-page.component.html","../../../../libs/design-system/src/lib/navigation/services/robin-search.service.ts","../../../../libs/design-system/src/lib/navigation/logo-menu/logo-menu.component.ts","../../../../libs/design-system/src/lib/navigation/sub-nav-actions/sub-nav-actions.service.ts","../../../../libs/design-system/src/lib/navigation/sub-top-nav/sub-top-nav.component.ts","../../../../libs/design-system/src/lib/navigation/sub-top-nav/sub-top-nav.component.html","../../../../libs/design-system/src/lib/menu/components/menu/menu.component.ts","../../../../libs/design-system/src/lib/menu/components/menu/menu.component.html","../../../../libs/design-system/src/lib/menu/components/menu-item/menu-item.component.ts","../../../../libs/design-system/src/lib/menu/components/menu-item/menu-item.component.html","../../../../libs/design-system/src/lib/tooltip/components/tooltip-overlay.component.ts","../../../../libs/design-system/src/lib/tooltip/components/tooltip-overlay.component.html","../../../../libs/design-system/src/lib/tooltip/directive/tooltip.directive.ts","../../../../libs/design-system/src/lib/date-input/date-input.component.ts","../../../../libs/design-system/src/lib/date-input/date-input.component.html","../../../../libs/design-system/src/lib/workspace-navbar/chat/chat-message/chat-message.component.ts","../../../../libs/design-system/src/lib/workspace-navbar/chat/chat-message/chat-message.component.html","../../../../libs/design-system/src/lib/workspace-navbar/chat/robin-chat.service.ts","../../../../libs/design-system/src/lib/workspace-navbar/chat/robin-chat-action-dispatcher.service.ts","../../../../libs/design-system/src/lib/workspace-navbar/chat/chat.component.ts","../../../../libs/design-system/src/lib/workspace-navbar/chat/chat.component.html","../../../../libs/design-system/src/lib/workspace-navbar/workspace-navbar.component.ts","../../../../libs/design-system/src/lib/workspace-navbar/workspace-navbar.component.html","../../../../libs/design-system/src/lib/workspace-navbar/chat/a2ui/ao-choice-picker.component.ts","../../../../libs/design-system/src/lib/workspace-navbar/chat/a2ui/ao-catalog.ts","../../../../libs/design-system/src/lib/workspace-navbar/chat/a2ui/a2ui-chat.providers.ts","../../../../libs/design-system/src/index.ts","../../../../libs/design-system/src/ah-oh-ao-workspaces-design-system.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-design-system',\n imports: [],\n template: `\n <p>\n design-system works!\n </p>\n `,\n styles: ``,\n})\nexport class DesignSystem {\n\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable, signal } from '@angular/core';\n\nconst URL_TOKEN_PARAM = 'jwtKey';\nconst COOKIE_TOKEN_KEY = 'jwt';\n\n/**\n * Holds the Workspaces JWT for the current browser session.\n *\n * Token resolution order:\n * 1. `?jwtKey=…` query param (set by the login redirect) — captured on\n * construction and removed from the URL so it does not stay in browser\n * history.\n * 2. A readable `jwt` cookie — only seen when the cookie is *not* httpOnly.\n * Production cookies are httpOnly, so this branch typically returns\n * undefined; the backend reads the cookie directly in that case. The\n * interceptor still sets `withCredentials: true` so the browser\n * attaches the httpOnly cookie automatically.\n */\n@Injectable({ providedIn: 'root' })\nexport class AuthService {\n private readonly document = inject(DOCUMENT);\n private readonly _token = signal<string | undefined>(undefined);\n\n readonly token = this._token.asReadonly();\n\n constructor() {\n const fromUrl = this.readTokenFromUrl();\n const fromCookie = fromUrl ? undefined : this.readTokenFromCookie();\n const initial = fromUrl ?? fromCookie;\n if (initial) {\n this._token.set(initial);\n }\n }\n\n setToken(token: string | undefined): void {\n this._token.set(token);\n }\n\n clear(): void {\n this._token.set(undefined);\n }\n\n private readTokenFromUrl(): string | undefined {\n const win = this.document.defaultView;\n if (!win) return undefined;\n const url = new URL(win.location.href);\n const token = url.searchParams.get(URL_TOKEN_PARAM) ?? undefined;\n if (token) {\n url.searchParams.delete(URL_TOKEN_PARAM);\n win.history.replaceState({}, '', url.toString());\n }\n return token;\n }\n\n private readTokenFromCookie(): string | undefined {\n const raw = this.document.cookie;\n if (!raw) return undefined;\n for (const pair of raw.split(';')) {\n const [name, ...rest] = pair.trim().split('=');\n if (name === COOKIE_TOKEN_KEY) {\n return decodeURIComponent(rest.join('='));\n }\n }\n return undefined;\n }\n}\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { AuthService } from './auth.service';\n\n/**\n * Attaches the Workspaces JWT to outgoing same-origin requests:\n * - sets `Authorization: Bearer <token>` when an in-memory token is known\n * - sets `withCredentials: true` so the browser sends the httpOnly `jwt`\n * cookie alongside (the backend prefers the cookie when both are present)\n *\n * The interceptor is intentionally permissive: it does not validate the URL.\n * If you need to scope it to specific hosts, branch on `req.url`.\n */\nexport const authInterceptor: HttpInterceptorFn = (req, next) => {\n const auth = inject(AuthService);\n const token = auth.token();\n const headers = token ? req.headers.set('Authorization', `Bearer ${token}`) : req.headers;\n return next(req.clone({ headers, withCredentials: true }));\n};\n","import { withInterceptors } from '@angular/common/http';\nimport { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { authInterceptor } from './auth.interceptor';\n\n/**\n * Returns the HttpClient feature that wires {@link authInterceptor} into\n * every outgoing request. Pass it to `provideHttpClient(withFetch(),\n * withAuthInterceptor())` in the app config.\n */\nexport const withAuthInterceptor = () => withInterceptors([authInterceptor]);\n\n/**\n * Convenience provider for apps that want auth wired up with one call.\n * Currently only ensures the `AuthService` is eagerly resolvable; the\n * interceptor must still be added via {@link withAuthInterceptor} on\n * `provideHttpClient`.\n */\nexport function provideAuth(): EnvironmentProviders {\n return makeEnvironmentProviders([]);\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NgIcon } from '@ng-icons/core';\n\nexport type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n@Component({\n selector: 'ao-icon',\n imports: [NgIcon],\n template: `<ng-icon [svg]=\"svg()\" />`,\n styleUrl: './icon.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ao-icon',\n '[class.ao-icon--xs]': 'size() === \"xs\"',\n '[class.ao-icon--sm]': 'size() === \"sm\"',\n '[class.ao-icon--md]': 'size() === \"md\"',\n '[class.ao-icon--lg]': 'size() === \"lg\"',\n '[class.ao-icon--xl]': 'size() === \"xl\"',\n },\n})\nexport class IconComponent {\n readonly svg = input.required<string>();\n readonly size = input<IconSize>('md');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'dark' | 'outline' | 'ghost';\n\n@Component({\n selector: 'button[ao-button], a[ao-button]',\n imports: [IconComponent],\n template: `\n @if (icon()) {\n <ao-icon [svg]=\"icon()!\" size=\"sm\" />\n }\n <ng-content />\n @if (iconTrailing()) {\n <ao-icon [svg]=\"iconTrailing()!\" size=\"sm\" />\n }\n `,\n styleUrl: './button.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'btn',\n '[class.btn--primary]': 'variant() === \"primary\"',\n '[class.btn--secondary]': 'variant() === \"secondary\"',\n '[class.btn--dark]': 'variant() === \"dark\"',\n '[class.btn--outline]': 'variant() === \"outline\"',\n '[class.btn--ghost]': 'variant() === \"ghost\"',\n },\n})\nexport class ButtonComponent {\n readonly variant = input<ButtonVariant>('primary');\n readonly icon = input<string>();\n readonly iconTrailing = input<string>();\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { IconComponent, IconSize } from '../icon/icon.component';\n\nexport type IconButtonSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'button[ao-icon-button], a[ao-icon-button]',\n imports: [IconComponent],\n template: `\n @if (icon()) {\n <ao-icon class=\"ao-icon-button__icon\" [svg]=\"icon()\" [size]=\"actualIconSize()\" />\n }\n `,\n styleUrl: './icon-button.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-icon-btn',\n '[class.ao-icon-button--sm]': 'size() === \"sm\"',\n '[class.ao-icon-button--md]': 'size() === \"md\"',\n '[class.ao-icon-button--lg]': 'size() === \"lg\"',\n },\n})\nexport class IconButtonComponent {\n static readonly ICON_SIZES = new Map<IconButtonSize, IconSize>([\n ['sm', 'xs'],\n ['md', 'sm'],\n ['lg', 'md'],\n ]);\n\n readonly icon = input.required<string>();\n readonly size = input<IconButtonSize>('md');\n readonly iconSize = input<IconSize>();\n\n protected readonly actualIconSize = computed(\n () => this.iconSize() ?? IconButtonComponent.ICON_SIZES.get(this.size()) ?? 'sm'\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n model,\n signal,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { phosphorLockSimple, phosphorWarning } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'ao-input',\n imports: [ReactiveFormsModule, IconComponent],\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true,\n },\n ],\n host: {\n class: 'ao-input',\n '[class.ao-input--disabled]': 'disabled()',\n '[class.ao-input--readonly]': 'readonly()',\n '[class.ao-input--error]': 'error()',\n '[class.ao-input--focused]': 'focused()',\n },\n})\nexport class InputComponent implements ControlValueAccessor {\n readonly label = input<string>('');\n readonly placeholder = input<string>('Bitte ausfüllen');\n readonly optional = input<boolean>(false);\n readonly error = input<string>('');\n readonly readonly = input<boolean>(false);\n readonly disabled = model<boolean>(false);\n readonly type = input<'text' | 'email' | 'password' | 'number'>('text');\n readonly value = model<string>('');\n readonly focused = signal<boolean>(false);\n readonly hasError = computed(() => !!this.error());\n protected readonly lockIcon = phosphorLockSimple;\n protected readonly warningIcon = phosphorWarning;\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.value.set(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.value.set(target.value);\n this.onChange(target.value);\n }\n\n onFocus(): void {\n this.focused.set(true);\n }\n\n onBlur(): void {\n this.focused.set(false);\n this.onTouched();\n }\n}\n","@if (label()) {\n <label class=\"ao-input__label\">\n {{ label() }}\n @if (optional()) {\n <span class=\"ao-input__optional\">(Optional)</span>\n }\n </label>\n}\n\n<div class=\"ao-input__wrapper\">\n <input\n class=\"ao-input__field\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n\n @if (readonly() && !error()) {\n <ao-icon class=\"ao-input__icon ao-input__icon--lock\" [svg]=\"lockIcon\" />\n }\n\n @if (error()) {\n <ao-icon class=\"ao-input__icon ao-input__icon--warning\" [svg]=\"warningIcon\" />\n }\n</div>\n\n@if (error()) {\n <span class=\"ao-input__error\">{{ error() }}</span>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n model,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport {\n phosphorCaretDown,\n phosphorLockSimple,\n phosphorWarning,\n} from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../icon/icon.component';\n\nexport interface SelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'ao-select',\n imports: [ReactiveFormsModule, IconComponent],\n templateUrl: './select.component.html',\n styleUrl: './select.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true,\n },\n ],\n host: {\n class: 'ao-select',\n '[class.ao-select--disabled]': 'disabled()',\n '[class.ao-select--readonly]': 'readonly()',\n '[class.ao-select--error]': 'error()',\n '[class.ao-select--focused]': 'focused()',\n },\n})\nexport class SelectComponent implements ControlValueAccessor {\n readonly label = input<string>('');\n readonly placeholder = input<string>('Bitte auswählen');\n readonly optional = input<boolean>(false);\n readonly error = input<string>('');\n readonly readonly = input<boolean>(false);\n readonly disabled = model<boolean>(false);\n readonly options = input<SelectOption[]>([]);\n readonly value = model<string>('');\n readonly focused = signal<boolean>(false);\n readonly hasError = computed(() => !!this.error());\n protected readonly caretIcon = phosphorCaretDown;\n protected readonly lockIcon = phosphorLockSimple;\n protected readonly warningIcon = phosphorWarning;\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.value.set(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n onSelectChange(event: Event): void {\n const target = event.target as HTMLSelectElement;\n this.value.set(target.value);\n this.onChange(target.value);\n }\n\n onFocus(): void {\n this.focused.set(true);\n }\n\n onBlur(): void {\n this.focused.set(false);\n this.onTouched();\n }\n}\n","@if (label()) {\n <label class=\"ao-select__label\">\n {{ label() }}\n @if (optional()) {\n <span class=\"ao-select__optional\">(Optional)</span>\n }\n </label>\n}\n\n<div class=\"ao-select__wrapper\">\n <select\n class=\"ao-select__field\"\n [disabled]=\"disabled() || readonly()\"\n [value]=\"value()\"\n (change)=\"onSelectChange($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n >\n @if (placeholder()) {\n <option value=\"\" disabled [selected]=\"!value()\">{{ placeholder() }}</option>\n }\n @for (option of options(); track option.value) {\n <option\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n [selected]=\"option.value === value()\"\n >\n {{ option.label }}\n </option>\n }\n </select>\n\n @if (readonly() && !error()) {\n <ao-icon class=\"ao-select__icon ao-select__icon--lock\" [svg]=\"lockIcon\" />\n } @else if (error()) {\n <ao-icon class=\"ao-select__icon ao-select__icon--warning\" [svg]=\"warningIcon\" />\n } @else {\n <ao-icon class=\"ao-select__icon ao-select__icon--caret\" [svg]=\"caretIcon\" />\n }\n</div>\n\n@if (error()) {\n <span class=\"ao-select__error\">{{ error() }}</span>\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { phosphorSquare, phosphorCheckSquare, phosphorMinusSquare } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../../icon/icon.component';\n\nexport type CheckboxState = 'unchecked' | 'checked' | 'indeterminate';\n\n@Component({\n selector: 'ao-table-checkbox',\n imports: [IconComponent],\n template: `\n <button\n type=\"button\"\n class=\"ao-table-checkbox__button\"\n [attr.aria-checked]=\"state() === 'checked'\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"disabled()\"\n (click)=\"toggle($event)\"\n >\n @switch (state()) {\n @case ('checked') {\n <ao-icon [svg]=\"checkSquareIcon\" size=\"md\" />\n }\n @case ('indeterminate') {\n <ao-icon [svg]=\"minusSquareIcon\" size=\"md\" />\n }\n @default {\n <ao-icon [svg]=\"squareIcon\" size=\"md\" />\n }\n }\n </button>\n `,\n styleUrl: './table-checkbox.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-table-checkbox',\n '[class.ao-table-checkbox--disabled]': 'disabled()',\n },\n})\nexport class TableCheckboxComponent {\n readonly state = input<CheckboxState>('unchecked');\n readonly disabled = input<boolean>(false);\n readonly ariaLabel = input<string>('Select row');\n readonly stateChange = output<CheckboxState>();\n protected readonly squareIcon = phosphorSquare;\n protected readonly checkSquareIcon = phosphorCheckSquare;\n protected readonly minusSquareIcon = phosphorMinusSquare;\n\n toggle(event: MouseEvent): void {\n event.stopPropagation();\n if (this.disabled()) return;\n const newState: CheckboxState = this.state() === 'checked' ? 'unchecked' : 'checked';\n this.stateChange.emit(newState);\n }\n}\n","import { ChangeDetectionStrategy, Component, DestroyRef, inject, input, OnInit, output } from '@angular/core';\nimport { debounceTime, Subject } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'ao-table-input',\n template: `\n <input\n class=\"ao-table-input__field\"\n type=\"text\"\n [placeholder]=\"placeholder()\"\n [attr.size]=\"placeholder().length || null\"\n (input)=\"onInput($event)\"\n />\n `,\n styleUrl: './table-input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-table-input',\n },\n})\nexport class TableInputComponent implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly input$ = new Subject<string>();\n readonly placeholder = input<string>('');\n readonly value = input<string>('');\n readonly valueChange = output<string>();\n\n ngOnInit(): void {\n this.input$\n .pipe(debounceTime(300), takeUntilDestroyed(this.destroyRef))\n .subscribe(value => this.valueChange.emit(value));\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.input$.next(target.value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { phosphorCaretDown } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../../icon/icon.component';\nimport { SelectOption } from '../../select/select.component';\n\n@Component({\n selector: 'ao-table-select',\n imports: [IconComponent],\n template: `\n <button\n type=\"button\"\n class=\"ao-table-select__trigger\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"listbox\"\n (click)=\"toggleDropdown($event)\"\n >\n <span class=\"ao-table-select__value\" [class.ao-table-select__value--placeholder]=\"!value()\">{{\n displayValue()\n }}</span>\n <ao-icon [svg]=\"caretDownIcon\" size=\"sm\" />\n </button>\n @if (isOpen()) {\n <div\n class=\"ao-table-select__dropdown\"\n role=\"listbox\"\n [style.top.px]=\"dropdownTop()\"\n [style.left.px]=\"dropdownLeft()\"\n [style.width.px]=\"dropdownWidth()\"\n >\n @if (placeholder()) {\n <button\n type=\"button\"\n class=\"ao-table-select__option\"\n [class.ao-table-select__option--selected]=\"!value()\"\n role=\"option\"\n (click)=\"selectOption('')\"\n >\n {{ placeholder() }}\n </button>\n }\n @for (option of options(); track option.value) {\n <button\n type=\"button\"\n class=\"ao-table-select__option\"\n [class.ao-table-select__option--selected]=\"option.value === value()\"\n role=\"option\"\n (click)=\"selectOption(option.value)\"\n >\n {{ option.label }}\n </button>\n }\n </div>\n }\n `,\n styleUrl: './table-select.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-table-select',\n '[class.ao-table-select--open]': 'isOpen()',\n },\n})\nexport class TableSelectComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly options = input.required<SelectOption[]>();\n readonly placeholder = input<string>('Alle');\n readonly value = input<string>('');\n readonly valueChange = output<string>();\n readonly isOpen = signal<boolean>(false);\n readonly dropdownTop = signal(0);\n readonly dropdownLeft = signal(0);\n readonly dropdownWidth = signal(0);\n protected readonly caretDownIcon = phosphorCaretDown;\n private readonly DROPDOWN_MAX_HEIGHT = 200;\n private readonly DROPDOWN_GAP = 4;\n private readonly VIEWPORT_OFFSET = 8;\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.elementRef.nativeElement.contains(event.target as Node)) {\n this.isOpen.set(false);\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscapeKey(): void {\n this.isOpen.set(false);\n }\n\n @HostListener('window:resize')\n @HostListener('window:scroll')\n onViewportChange(): void {\n this.isOpen.set(false);\n }\n\n displayValue(): string {\n const currentValue = this.value();\n if (!currentValue) {\n return this.placeholder();\n }\n const option = this.options().find(o => o.value === currentValue);\n return option?.label ?? currentValue;\n }\n\n toggleDropdown(event: MouseEvent): void {\n event.stopPropagation();\n const willOpen = !this.isOpen();\n if (willOpen) {\n this.calculateDropdownPosition();\n }\n this.isOpen.set(willOpen);\n }\n\n private calculateDropdownPosition(): void {\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n const spaceBelow = viewportHeight - rect.bottom;\n const openTop = spaceBelow < this.DROPDOWN_MAX_HEIGHT && rect.top > spaceBelow;\n const maxLeft = Math.max(\n this.VIEWPORT_OFFSET,\n viewportWidth - rect.width - this.VIEWPORT_OFFSET\n );\n this.dropdownTop.set(\n openTop\n ? Math.max(this.VIEWPORT_OFFSET, rect.top - this.DROPDOWN_MAX_HEIGHT - this.DROPDOWN_GAP)\n : rect.bottom + this.DROPDOWN_GAP\n );\n this.dropdownLeft.set(Math.max(this.VIEWPORT_OFFSET, Math.min(rect.left, maxLeft)));\n this.dropdownWidth.set(rect.width);\n }\n\n selectOption(value: string): void {\n this.isOpen.set(false);\n this.valueChange.emit(value);\n }\n}\n","import { Component, computed, input, model, output, signal } from '@angular/core';\nimport { IconComponent } from '../../icon/icon.component';\nimport {\n phosphorCalendarBlank,\n phosphorCaretLeft,\n phosphorCaretRight,\n} from '@ng-icons/phosphor-icons/regular';\n\nexport type DatePickerMode = 'single' | 'range';\n\ninterface CalendarDay {\n date: number;\n month: number;\n year: number;\n isCurrentMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n isInRange: boolean;\n isRangeStart: boolean;\n isRangeEnd: boolean;\n}\n\n@Component({\n selector: 'ao-date-picker',\n imports: [IconComponent],\n templateUrl: './date-picker.component.html',\n styleUrl: './date-picker.component.scss',\n})\nexport class DatePickerComponent {\n protected readonly caretLeftIcon = phosphorCaretLeft;\n protected readonly caretRightIcon = phosphorCaretRight;\n\n readonly weekDays = ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So'];\n readonly monthNames = [\n 'Januar',\n 'Februar',\n 'März',\n 'April',\n 'Mai',\n 'Juni',\n 'Juli',\n 'August',\n 'September',\n 'Oktober',\n 'November',\n 'Dezember',\n ];\n\n readonly mode = input<DatePickerMode>('single');\n\n readonly selectedDate = model<Date | null>(null);\n readonly rangeStart = model<Date | null>(null);\n readonly rangeEnd = model<Date | null>(null);\n\n readonly currentMonth = model(new Date().getMonth());\n readonly currentYear = model(new Date().getFullYear());\n\n readonly onSelection = output<void>();\n\n readonly calendarDays = computed((): CalendarDay[] => {\n const year = this.currentYear();\n const month = this.currentMonth();\n const today = new Date();\n const firstDay = new Date(year, month, 1);\n const lastDay = new Date(year, month + 1, 0);\n const startOffset = (firstDay.getDay() + 6) % 7;\n const days: CalendarDay[] = [];\n const prevMonthLastDay = new Date(year, month, 0).getDate();\n for (let i = startOffset - 1; i >= 0; i--) {\n const date = prevMonthLastDay - i;\n const prevMonth = month === 0 ? 11 : month - 1;\n const prevYear = month === 0 ? year - 1 : year;\n days.push(this.createCalendarDay(date, prevMonth, prevYear, false, today));\n }\n for (let date = 1; date <= lastDay.getDate(); date++) {\n days.push(this.createCalendarDay(date, month, year, true, today));\n }\n const remaining = 42 - days.length;\n for (let date = 1; date <= remaining; date++) {\n const nextMonth = month === 11 ? 0 : month + 1;\n const nextYear = month === 11 ? year + 1 : year;\n days.push(this.createCalendarDay(date, nextMonth, nextYear, false, today));\n }\n return days;\n });\n\n private createCalendarDay(\n date: number,\n month: number,\n year: number,\n isCurrentMonth: boolean,\n today: Date\n ): CalendarDay {\n const dayDate = new Date(year, month, date);\n const isToday =\n today.getDate() === date && today.getMonth() === month && today.getFullYear() === year;\n let isSelected = false;\n let isInRange = false;\n let isRangeStart = false;\n let isRangeEnd = false;\n if (this.mode() === 'single') {\n const selected = this.selectedDate();\n isSelected = selected\n ? selected.getDate() === date &&\n selected.getMonth() === month &&\n selected.getFullYear() === year\n : false;\n } else {\n const start = this.rangeStart();\n const end = this.rangeEnd();\n if (start) {\n isRangeStart =\n start.getDate() === date && start.getMonth() === month && start.getFullYear() === year;\n }\n if (end) {\n isRangeEnd =\n end.getDate() === date && end.getMonth() === month && end.getFullYear() === year;\n }\n if (start && end) {\n isInRange = dayDate > start && dayDate < end;\n }\n isSelected = isRangeStart || isRangeEnd;\n }\n return {\n date,\n month,\n year,\n isCurrentMonth,\n isToday,\n isSelected,\n isInRange,\n isRangeStart,\n isRangeEnd,\n };\n }\n\n previousMonth(): void {\n if (this.currentMonth() === 0) {\n this.currentMonth.set(11);\n this.currentYear.update(y => y - 1);\n } else {\n this.currentMonth.update(m => m - 1);\n }\n }\n\n nextMonth(): void {\n if (this.currentMonth() === 11) {\n this.currentMonth.set(0);\n this.currentYear.update(y => y + 1);\n } else {\n this.currentMonth.update(m => m + 1);\n }\n }\n\n selectDate(day: CalendarDay): void {\n const date = new Date(day.year, day.month, day.date);\n if (this.mode() === 'single') {\n this.selectedDate.set(date);\n this.onSelection.emit();\n } else {\n const start = this.rangeStart();\n if (!start || (start && this.rangeEnd())) {\n this.rangeStart.set(date);\n this.rangeEnd.set(null);\n } else {\n if (date < start) {\n this.rangeEnd.set(start);\n this.rangeStart.set(date);\n } else {\n this.rangeEnd.set(date);\n }\n const startDate = this.rangeStart();\n const endDate = this.rangeEnd();\n if (!startDate || !endDate) return;\n this.onSelection.emit();\n }\n }\n }\n\n formatDate = DatePickerComponent.formatDate;\n static formatDate(date: Date): string {\n const day = date.getDate().toString().padStart(2, '0');\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const year = date.getFullYear();\n return `${day}.${month}.${year}`;\n }\n\n clear(): void {\n this.selectedDate.set(null);\n this.rangeStart.set(null);\n this.rangeEnd.set(null);\n this.onSelection.emit();\n }\n}\n","<div class=\"ao-date-picker__header\">\n <button\n type=\"button\"\n class=\"ao-date-picker__nav\"\n aria-label=\"Vorheriger Monat\"\n (click)=\"previousMonth()\"\n >\n <ao-icon [svg]=\"caretLeftIcon\" size=\"sm\" />\n </button>\n <span class=\"ao-date-picker__month-year\">\n {{ monthNames[currentMonth()] }} {{ currentYear() }}\n </span>\n <button\n type=\"button\"\n class=\"ao-date-picker__nav\"\n aria-label=\"Nächster Monat\"\n (click)=\"nextMonth()\"\n >\n <ao-icon [svg]=\"caretRightIcon\" size=\"sm\" />\n </button>\n</div>\n<div class=\"ao-date-picker__weekdays\">\n @for (day of weekDays; track day) {\n <span class=\"ao-date-picker__weekday\">{{ day }}</span>\n }\n</div>\n<div class=\"ao-date-picker__days\">\n @for (day of calendarDays(); track day.date + '-' + day.month) {\n <button\n type=\"button\"\n class=\"ao-date-picker__day\"\n [class.ao-date-picker__day--other-month]=\"!day.isCurrentMonth\"\n [class.ao-date-picker__day--today]=\"day.isToday\"\n [class.ao-date-picker__day--selected]=\"day.isSelected\"\n [class.ao-date-picker__day--in-range]=\"day.isInRange\"\n [class.ao-date-picker__day--range-start]=\"day.isRangeStart\"\n [class.ao-date-picker__day--range-end]=\"day.isRangeEnd\"\n (click)=\"selectDate(day)\"\n >\n {{ day.date }}\n </button>\n }\n</div>\n@if (mode() === 'range') {\n <div class=\"ao-date-picker__range-info\">\n @if (rangeStart() && rangeEnd()) {\n <span>{{ formatDate(rangeStart()!) }} - {{ formatDate(rangeEnd()!) }}</span>\n } @else if (rangeStart()) {\n <span>{{ formatDate(rangeStart()!) }} - ...</span>\n } @else {\n <span>Startdatum wählen</span>\n }\n </div>\n}\n<div class=\"ao-date-picker__actions\">\n <button type=\"button\" class=\"ao-date-picker__clear\" (click)=\"clear()\">Zurücksetzen</button>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostListener,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { phosphorCalendarBlank } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../../icon/icon.component';\nimport {\n DatePickerComponent,\n DatePickerMode,\n} from '../../date-input/date-picker/date-picker.component';\n\n@Component({\n selector: 'ao-table-date-picker',\n imports: [IconComponent, DatePickerComponent],\n template: `\n <div class=\"ao-table-date-picker__trigger\" (click)=\"toggleDropdown()\">\n <input\n type=\"text\"\n class=\"ao-table-date-picker__input\"\n [placeholder]=\"placeholder()\"\n [attr.aria-label]=\"placeholder()\"\n [attr.size]=\"placeholder().length || null\"\n [value]=\"displayValue()\"\n (input)=\"onInputChange($event)\"\n (click)=\"$event.stopPropagation()\"\n />\n <ao-icon [svg]=\"calendarIcon\" size=\"sm\" />\n </div>\n @if (isOpen()) {\n <div\n class=\"ao-table-date-picker__dropdown\"\n [style.top.px]=\"dropdownTop()\"\n [style.left.px]=\"dropdownLeft()\"\n >\n <ao-date-picker\n [mode]=\"mode()\"\n [(selectedDate)]=\"selectedDate\"\n [(rangeStart)]=\"rangeStart\"\n [(rangeEnd)]=\"rangeEnd\"\n [(currentMonth)]=\"currentMonth\"\n [(currentYear)]=\"currentYear\"\n (onSelection)=\"onSelection()\"\n ></ao-date-picker>\n </div>\n }\n `,\n styleUrl: './table-date-picker.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-table-date-picker',\n },\n})\nexport class TableDatePickerComponent {\n protected readonly calendarIcon = phosphorCalendarBlank;\n private readonly elementRef = inject(ElementRef);\n\n readonly placeholder = input<string>('TT.MM.JJJJ');\n readonly value = input<string>('');\n readonly mode = input<DatePickerMode>('single');\n readonly selectedDate = model<Date | null>(null);\n readonly rangeStart = model<Date | null>(null);\n readonly rangeEnd = model<Date | null>(null);\n readonly currentMonth = model(new Date().getMonth());\n readonly currentYear = model(new Date().getFullYear());\n readonly valueChange = output<string>();\n\n readonly isOpen = signal(false);\n readonly dropdownTop = signal(0);\n readonly dropdownLeft = signal(0);\n\n private readonly DROPDOWN_HEIGHT = 380;\n private readonly DROPDOWN_WIDTH = 280;\n private readonly DROPDOWN_GAP = 4;\n private readonly VIEWPORT_OFFSET = 8;\n\n readonly displayValue = computed(() => {\n if (this.mode() === 'range') {\n const start = this.rangeStart();\n const end = this.rangeEnd();\n if (start && end) {\n return `${DatePickerComponent.formatDate(start)} - ${DatePickerComponent.formatDate(end)}`;\n } else if (start) {\n return DatePickerComponent.formatDate(start);\n }\n return this.value();\n }\n const date = this.selectedDate();\n return date ? DatePickerComponent.formatDate(date) : this.value();\n });\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!(this.elementRef.nativeElement as HTMLElement).contains(event.target as Node)) {\n this.isOpen.set(false);\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscapeKey(): void {\n this.isOpen.set(false);\n }\n\n @HostListener('window:resize')\n @HostListener('window:scroll')\n onViewportChange(): void {\n this.isOpen.set(false);\n }\n\n toggleDropdown(): void {\n const willOpen = !this.isOpen();\n if (willOpen) {\n this.calculateDropdownPosition();\n }\n this.isOpen.set(willOpen);\n }\n\n private calculateDropdownPosition(): void {\n const el = this.elementRef.nativeElement as HTMLElement;\n const rect = el.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n const spaceBelow = viewportHeight - rect.bottom;\n const openTop = spaceBelow < this.DROPDOWN_HEIGHT && rect.top > spaceBelow;\n const maxLeft = Math.max(\n this.VIEWPORT_OFFSET,\n viewportWidth - this.DROPDOWN_WIDTH - this.VIEWPORT_OFFSET\n );\n this.dropdownTop.set(\n openTop\n ? Math.max(this.VIEWPORT_OFFSET, rect.top - this.DROPDOWN_HEIGHT - this.DROPDOWN_GAP)\n : rect.bottom + this.DROPDOWN_GAP\n );\n this.dropdownLeft.set(Math.max(this.VIEWPORT_OFFSET, Math.min(rect.left, maxLeft)));\n }\n\n onInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const value = input.value;\n if (this.mode() === 'single') {\n const parsed = this.parseDate(value);\n if (parsed) {\n this.selectedDate.set(parsed);\n this.currentMonth.set(parsed.getMonth());\n this.currentYear.set(parsed.getFullYear());\n }\n } else {\n const parts = value.split(' - ');\n if (parts.length === 2) {\n const start = this.parseDate(parts[0].trim());\n const end = this.parseDate(parts[1].trim());\n if (start) this.rangeStart.set(start);\n if (end) this.rangeEnd.set(end);\n }\n }\n this.valueChange.emit(value);\n }\n\n onSelection() {\n if (this.mode() === 'single') {\n const date = this.selectedDate();\n this.valueChange.emit(date ? DatePickerComponent.formatDate(date) : '');\n this.isOpen.set(false);\n } else {\n const startDate = this.rangeStart();\n const endDate = this.rangeEnd();\n if (startDate && endDate) {\n this.valueChange.emit(\n `${DatePickerComponent.formatDate(startDate)} - ${DatePickerComponent.formatDate(endDate)}`\n );\n this.isOpen.set(false);\n } else {\n this.valueChange.emit('');\n }\n }\n }\n\n private parseDate(value: string): Date | null {\n const match = value.match(/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/);\n if (match) {\n const day = parseInt(match[1], 10);\n const month = parseInt(match[2], 10) - 1;\n const year = parseInt(match[3], 10);\n const date = new Date(year, month, day);\n if (date.getDate() === day && date.getMonth() === month && date.getFullYear() === year) {\n return date;\n }\n }\n return null;\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { TableColumnFilter } from '../table.types';\nimport { TableInputComponent } from './table-input.component';\nimport { TableSelectComponent } from './table-select.component';\nimport { TableDatePickerComponent } from './table-date-picker.component';\nimport { SelectOption } from '../../select/select.component';\n\n@Component({\n selector: 'ao-table-filter',\n imports: [TableInputComponent, TableSelectComponent, TableDatePickerComponent],\n template: `\n <div class=\"ao-table-filter__container\">\n @switch (filter().type) {\n @case ('text') {\n <ao-table-input\n [placeholder]=\"placeholder() ?? filter().placeholder ?? 'Filter...'\"\n [value]=\"value() ?? ''\"\n (valueChange)=\"onValueChange($event)\"\n />\n }\n @case ('select') {\n <ao-table-select\n [placeholder]=\"filter().placeholder ?? 'Alle'\"\n [options]=\"selectOptions()\"\n [value]=\"value() ?? ''\"\n (valueChange)=\"onValueChange($event)\"\n />\n }\n @case ('date') {\n <ao-table-date-picker\n [placeholder]=\"placeholder() ?? filter().placeholder ?? 'TT.MM.JJJJ'\"\n [value]=\"value() ?? ''\"\n [mode]=\"'single'\"\n (valueChange)=\"onValueChange($event)\"\n />\n }\n @case ('date-range') {\n <ao-table-date-picker\n [placeholder]=\"placeholder() ?? filter().placeholder ?? 'TT.MM.JJJJ - TT.MM.JJJJ'\"\n [value]=\"value() ?? ''\"\n [mode]=\"'range'\"\n (valueChange)=\"onValueChange($event)\"\n />\n }\n }\n </div>\n `,\n styleUrl: './table-filter.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-table-filter',\n },\n})\nexport class TableFilterComponent {\n readonly filter = input.required<TableColumnFilter>();\n readonly placeholder = input<string | null>(null);\n readonly value = input<string | null>(null);\n readonly valueChange = output<string>();\n\n readonly selectOptions = computed((): SelectOption[] => {\n return this.filter().options ?? [];\n });\n\n onValueChange(value: string): void {\n this.valueChange.emit(value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostListener,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport {\n phosphorCaretDown,\n phosphorCaretLeft,\n phosphorCaretRight,\n} from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../../icon/icon.component';\nimport { TablePageChangeEvent, TablePageState } from '../table.types';\n\n@Component({\n selector: 'ao-table-pagination',\n imports: [IconComponent],\n template: `\n <div class=\"ao-table-pagination__container\">\n <div class=\"ao-table-pagination__left\">\n <span class=\"ao-table-pagination__label\">Einträge pro Seite:</span>\n <div class=\"ao-table-pagination__page-size\" #pageSizeContainer>\n <button\n type=\"button\"\n class=\"ao-table-pagination__page-size-trigger\"\n aria-label=\"Seitengröße auswählen\"\n [attr.aria-expanded]=\"pageSizeDropdownOpen()\"\n aria-haspopup=\"listbox\"\n (click)=\"togglePageSizeDropdown()\"\n >\n <span>{{ pageState().pageSize }}</span>\n <ao-icon [svg]=\"caretDownIcon\" size=\"sm\" />\n </button>\n @if (pageSizeDropdownOpen()) {\n <div\n class=\"ao-table-pagination__page-size-dropdown\"\n role=\"listbox\"\n [style.top.px]=\"dropdownTop()\"\n [style.left.px]=\"dropdownLeft()\"\n [style.minWidth.px]=\"dropdownMinWidth()\"\n >\n @for (option of pageSizeOptions(); track option) {\n <button\n type=\"button\"\n class=\"ao-table-pagination__page-size-option\"\n [class.ao-table-pagination__page-size-option--selected]=\"\n option === pageState().pageSize\n \"\n (click)=\"onPageSizeChange(option)\"\n >\n {{ option }}\n </button>\n }\n </div>\n }\n </div>\n </div>\n <div class=\"ao-table-pagination__right\">\n <span class=\"ao-table-pagination__info\"\n >Seite {{ pageState().pageIndex + 1 }} von {{ totalPages() }} ({{\n pageState().totalItems\n }}\n Einträge gesamt)</span\n >\n <div class=\"ao-table-pagination__nav\">\n <button\n type=\"button\"\n class=\"ao-table-pagination__nav-btn\"\n aria-label=\"Vorherige Seite\"\n [class.ao-table-pagination__nav-btn--disabled]=\"!canGoPrevious()\"\n [disabled]=\"!canGoPrevious()\"\n (click)=\"goToPrevious()\"\n >\n <ao-icon [svg]=\"caretLeftIcon\" size=\"sm\" />\n </button>\n <div class=\"ao-table-pagination__pages\">\n @for (page of visiblePages(); track page) {\n <button\n type=\"button\"\n class=\"ao-table-pagination__page-btn\"\n [class.ao-table-pagination__page-btn--active]=\"page === pageState().pageIndex + 1\"\n (click)=\"goToPage(page)\"\n >\n {{ page }}\n </button>\n }\n </div>\n <button\n type=\"button\"\n class=\"ao-table-pagination__nav-btn\"\n aria-label=\"Nächste Seite\"\n [class.ao-table-pagination__nav-btn--disabled]=\"!canGoNext()\"\n [disabled]=\"!canGoNext()\"\n (click)=\"goToNext()\"\n >\n <ao-icon [svg]=\"caretRightIcon\" size=\"sm\" />\n </button>\n </div>\n </div>\n </div>\n `,\n styleUrl: './table-pagination.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-table-pagination',\n },\n})\nexport class TablePaginationComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n readonly pageState = input.required<TablePageState>();\n readonly pageSizeOptions = input<number[]>([10, 25, 50]);\n readonly pageChange = output<TablePageChangeEvent>();\n protected readonly caretLeftIcon = phosphorCaretLeft;\n protected readonly caretRightIcon = phosphorCaretRight;\n protected readonly caretDownIcon = phosphorCaretDown;\n readonly pageSizeDropdownOpen = signal(false);\n readonly dropdownTop = signal(0);\n readonly dropdownLeft = signal(0);\n readonly dropdownMinWidth = signal(0);\n private readonly pageSizeContainer = viewChild<ElementRef<HTMLElement>>('pageSizeContainer');\n private readonly DROPDOWN_HEIGHT = 150;\n private readonly DROPDOWN_GAP = 4;\n private readonly VIEWPORT_OFFSET = 8;\n\n readonly totalPages = computed(() => {\n const { totalItems, pageSize } = this.pageState();\n return Math.max(1, Math.ceil(totalItems / pageSize));\n });\n\n readonly canGoPrevious = computed(() => this.pageState().pageIndex > 0);\n\n readonly canGoNext = computed(() => this.pageState().pageIndex < this.totalPages() - 1);\n\n readonly visiblePages = computed(() => {\n const total = this.totalPages();\n const current = this.pageState().pageIndex + 1;\n const maxVisible = 5;\n if (total <= maxVisible) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n let start = Math.max(1, current - Math.floor(maxVisible / 2));\n const end = Math.min(total, start + maxVisible - 1);\n if (end - start + 1 < maxVisible) {\n start = Math.max(1, end - maxVisible + 1);\n }\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n });\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.elementRef.nativeElement.contains(event.target as Node)) {\n this.pageSizeDropdownOpen.set(false);\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscapeKey(): void {\n this.pageSizeDropdownOpen.set(false);\n }\n\n @HostListener('window:resize')\n @HostListener('window:scroll')\n onViewportChange(): void {\n this.pageSizeDropdownOpen.set(false);\n }\n\n togglePageSizeDropdown(): void {\n const willOpen = !this.pageSizeDropdownOpen();\n if (willOpen) {\n this.calculateDropdownPosition();\n }\n this.pageSizeDropdownOpen.set(willOpen);\n }\n\n private calculateDropdownPosition(): void {\n const container = this.pageSizeContainer();\n if (!container) return;\n const rect = container.nativeElement.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n const spaceBelow = viewportHeight - rect.bottom;\n const openTop = spaceBelow < this.DROPDOWN_HEIGHT && rect.top > spaceBelow;\n const maxLeft = Math.max(\n this.VIEWPORT_OFFSET,\n viewportWidth - rect.width - this.VIEWPORT_OFFSET\n );\n this.dropdownTop.set(\n openTop\n ? Math.max(this.VIEWPORT_OFFSET, rect.top - this.DROPDOWN_HEIGHT - this.DROPDOWN_GAP)\n : rect.bottom + this.DROPDOWN_GAP\n );\n this.dropdownLeft.set(Math.max(this.VIEWPORT_OFFSET, Math.min(rect.left, maxLeft)));\n this.dropdownMinWidth.set(rect.width);\n }\n\n goToPrevious(): void {\n if (!this.canGoPrevious()) return;\n this.pageChange.emit({\n pageIndex: this.pageState().pageIndex - 1,\n pageSize: this.pageState().pageSize,\n });\n }\n\n goToNext(): void {\n if (!this.canGoNext()) return;\n this.pageChange.emit({\n pageIndex: this.pageState().pageIndex + 1,\n pageSize: this.pageState().pageSize,\n });\n }\n\n goToPage(page: number): void {\n this.pageChange.emit({\n pageIndex: page - 1,\n pageSize: this.pageState().pageSize,\n });\n }\n\n onPageSizeChange(size: number): void {\n this.pageSizeDropdownOpen.set(false);\n this.pageChange.emit({\n pageIndex: 0,\n pageSize: size,\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { phosphorDotsThreeVertical } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../../icon/icon.component';\nimport { TableRowAction } from '../table.types';\n\n@Component({\n selector: 'ao-table-row-actions',\n imports: [IconComponent],\n template: `\n <button\n type=\"button\"\n class=\"ao-table-row-actions__trigger\"\n aria-label=\"Aktionen öffnen\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"menu\"\n (click)=\"toggleMenu($event)\"\n >\n <ao-icon [svg]=\"dotsIcon\" size=\"md\" />\n </button>\n @if (isOpen()) {\n <div\n class=\"ao-table-row-actions__menu\"\n role=\"menu\"\n [style.top.px]=\"menuTop()\"\n [style.left.px]=\"menuLeft()\"\n >\n @for (action of actions(); track action.id) {\n <button\n type=\"button\"\n class=\"ao-table-row-actions__item\"\n role=\"menuitem\"\n [disabled]=\"isActionDisabled(action)\"\n (click)=\"onActionClick(action, $event)\"\n >\n @if (action.icon) {\n <ao-icon [svg]=\"action.icon\" size=\"sm\" />\n }\n <span>{{ action.label }}</span>\n </button>\n }\n </div>\n }\n `,\n styleUrl: './table-row-actions.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-table-row-actions',\n '[class.ao-table-row-actions--open]': 'isOpen()',\n },\n})\nexport class TableRowActionsComponent<T> {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n readonly actions = input.required<TableRowAction<T>[]>();\n readonly row = input.required<T>();\n readonly actionClick = output<TableRowAction<T>>();\n readonly isOpen = signal<boolean>(false);\n readonly menuTop = signal(0);\n readonly menuLeft = signal(0);\n protected readonly dotsIcon = phosphorDotsThreeVertical;\n private readonly MENU_HEIGHT = 150;\n private readonly MENU_GAP = 4;\n private readonly VIEWPORT_OFFSET = 8;\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.elementRef.nativeElement.contains(event.target as Node)) {\n this.isOpen.set(false);\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscapeKey(): void {\n this.isOpen.set(false);\n }\n\n @HostListener('window:resize')\n @HostListener('window:scroll')\n onViewportChange(): void {\n this.isOpen.set(false);\n }\n\n toggleMenu(event: MouseEvent): void {\n event.stopPropagation();\n const willOpen = !this.isOpen();\n if (willOpen) {\n this.calculateMenuPosition();\n }\n this.isOpen.set(willOpen);\n }\n\n private calculateMenuPosition(): void {\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const spaceBelow = viewportHeight - rect.bottom;\n const openTop = spaceBelow < this.MENU_HEIGHT && rect.top > spaceBelow;\n this.menuTop.set(\n openTop\n ? Math.max(this.VIEWPORT_OFFSET, rect.top - this.MENU_HEIGHT - this.MENU_GAP)\n : rect.bottom + this.MENU_GAP\n );\n this.menuLeft.set(Math.min(rect.right, window.innerWidth - this.VIEWPORT_OFFSET));\n }\n\n isActionDisabled(action: TableRowAction<T>): boolean {\n if (typeof action.disabled === 'function') {\n return action.disabled(this.row());\n }\n return action.disabled ?? false;\n }\n\n onActionClick(action: TableRowAction<T>, event: MouseEvent): void {\n event.stopPropagation();\n if (this.isActionDisabled(action)) return;\n this.isOpen.set(false);\n this.actionClick.emit(action);\n }\n}\n","import { Directive, input, TemplateRef, inject } from '@angular/core';\n\nexport interface TableCellDefContext<T extends object = Record<string, unknown>> {\n $implicit: T;\n value: T[keyof T & string];\n row: T;\n column: keyof T & string;\n}\n\n@Directive({\n selector: '[aoTableCellDef]',\n})\nexport class TableCellDefDirective<T extends object = Record<string, unknown>> {\n templateRef = inject<TemplateRef<TableCellDefContext<T>>>(TemplateRef);\n\n readonly aoTableCellDef = input.required<keyof T & string>();\n\n /** Optional type witness for inferring `T`. Bind `[aoTableCellDefOf]=\"data()\"` to enable autocomplete on `let-row` / `let-value`. */\n readonly aoTableCellDefOf = input<T[]>();\n\n static ngTemplateContextGuard<T extends object>(\n _directive: TableCellDefDirective<T>,\n ctx: unknown\n ): ctx is TableCellDefContext<T> {\n return true;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n DestroyRef,\n inject,\n input,\n model,\n OnInit,\n output,\n signal,\n TrackByFunction,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n phosphorArrowsDownUp,\n phosphorCaretDown,\n phosphorCaretUp,\n phosphorDatabase,\n phosphorTrash,\n phosphorMagnifyingGlass,\n phosphorFunnel,\n phosphorPlus,\n} from '@ng-icons/phosphor-icons/regular';\nimport { debounceTime, Subject } from 'rxjs';\nimport { IconComponent } from '../icon/icon.component';\nimport { ButtonComponent } from '../button/button.component';\nimport { CheckboxState, TableCheckboxComponent } from './components/table-checkbox.component';\nimport { TableFilterComponent } from './components/table-filter.component';\nimport { TablePaginationComponent } from './components/table-pagination.component';\nimport { TableRowActionsComponent } from './components/table-row-actions.component';\nimport { TableCellDefContext, TableCellDefDirective } from './directives/table-cell-def.directive';\nimport {\n SortDirection,\n TableColumn,\n TableFilterState,\n TablePageChangeEvent,\n TablePageState,\n TableRowAction,\n TableRowActionEvent,\n TableSelectionMode,\n TableSortState,\n} from './table.types';\n\n@Component({\n selector: 'ao-table',\n imports: [\n NgTemplateOutlet,\n IconComponent,\n ButtonComponent,\n TableCheckboxComponent,\n TableFilterComponent,\n TablePaginationComponent,\n TableRowActionsComponent,\n ],\n templateUrl: './table.component.html',\n styleUrl: './table.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-table',\n '[class.ao-table--loading]': 'loading()',\n },\n})\nexport class TableComponent<T extends object> implements OnInit {\n // Header options\n readonly title = input<string>();\n readonly subtitle = input<string>();\n\n // Global Search\n readonly showSearch = input<boolean>(false);\n readonly searchPlaceholder = input<string>('Suchen...');\n readonly searchValue = model<string>('');\n readonly searchChange = output<string>();\n\n // Filter Toggle (global toggle for column filters or an external filter panel)\n readonly showFilterToggle = input<boolean>(false);\n readonly filterToggleActive = model<boolean>(false);\n readonly filterToggleChange = output<boolean>();\n\n // Add Action\n readonly addActionLabel = input<string>();\n readonly addActionIcon = input<string>(phosphorPlus);\n readonly addActionClick = output<void>();\n\n // Data\n readonly data = input.required<T[]>();\n readonly columns = input.required<TableColumn[]>();\n readonly loading = input<boolean>(false);\n readonly trackBy = input<TrackByFunction<T>>();\n // Selection\n readonly selectionMode = input<TableSelectionMode>('none');\n readonly selected = model<T[]>([]);\n readonly selectionChange = output<T[]>();\n // Sorting\n readonly sortState = model<TableSortState | null>(null);\n readonly sortChange = output<TableSortState>();\n // Filtering\n readonly filterState = model<TableFilterState>({});\n readonly filterChange = output<TableFilterState>();\n readonly showFilters = input<boolean>(true);\n // Pagination\n readonly pageState = model<TablePageState | null>(null);\n readonly pageChange = output<TablePageChangeEvent>();\n readonly pageSizeOptions = input<number[]>([10, 25, 50]);\n // Row Actions\n readonly rowActions = input<TableRowAction<T>[]>([]);\n readonly rowActionClick = output<TableRowActionEvent<T>>();\n readonly rowClick = output<T>();\n // Bulk Actions\n readonly bulkDelete = output<T[]>();\n // Cell templates\n readonly cellDefs = contentChildren(TableCellDefDirective);\n\n // Icons\n protected readonly trashIcon = phosphorTrash;\n protected readonly emptyIcon = phosphorDatabase;\n protected readonly searchIcon = phosphorMagnifyingGlass;\n protected readonly filterIcon = phosphorFunnel;\n private readonly arrowsDownUpIcon = phosphorArrowsDownUp;\n private readonly caretUpIcon = phosphorCaretUp;\n private readonly caretDownIcon = phosphorCaretDown;\n\n // Debouncing\n readonly filterDebounce = input<number>(300);\n private readonly filterSubject = new Subject<TableFilterState>();\n private readonly searchSubject = new Subject<string>();\n private readonly destroyRef = inject(DestroyRef);\n\n // Internal state\n private readonly selectedSet = signal<Set<T>>(new Set());\n\n ngOnInit(): void {\n this.filterSubject\n .pipe(debounceTime(this.filterDebounce()), takeUntilDestroyed(this.destroyRef))\n .subscribe(state => {\n this.filterChange.emit(state);\n });\n\n this.searchSubject\n .pipe(debounceTime(this.filterDebounce()), takeUntilDestroyed(this.destroyRef))\n .subscribe(value => {\n this.searchChange.emit(value);\n });\n }\n\n readonly hasSelection = computed(() => this.selectionMode() !== 'none');\n\n readonly hasRowActions = computed(() => this.rowActions().length > 0);\n\n readonly hasFilters = computed(() => {\n return (\n this.showFilters() && this.columns().some(col => col.filter && col.filter.type !== 'none')\n );\n });\n\n readonly hasPagination = computed(() => this.pageState() !== null);\n\n readonly hasTopBar = computed(() => {\n return (\n !!this.title() ||\n !!this.subtitle() ||\n this.showSearch() ||\n this.showFilterToggle() ||\n !!this.addActionLabel()\n );\n });\n\n readonly allSelected = computed((): CheckboxState => {\n const data = this.data();\n const selected = this.selectedSet();\n if (data.length === 0 || selected.size === 0) return 'unchecked';\n if (selected.size === data.length) return 'checked';\n return 'indeterminate';\n });\n\n readonly selectedCount = computed(() => this.selectedSet().size);\n\n isRowSelected(row: T): boolean {\n return this.selectedSet().has(row);\n }\n\n getRowCheckboxState(row: T): CheckboxState {\n return this.isRowSelected(row) ? 'checked' : 'unchecked';\n }\n\n getCellTemplate(columnKey: string): TableCellDefDirective<T> | undefined {\n return this.cellDefs().find(def => def.aoTableCellDef() === columnKey) as unknown as\n | TableCellDefDirective<T>\n | undefined;\n }\n\n getCellContext(row: T, columnKey: string): TableCellDefContext<T> {\n return {\n $implicit: row,\n value: (row as Record<string, unknown>)[columnKey],\n row,\n column: columnKey,\n } as TableCellDefContext<T>;\n }\n\n getCellValue(row: T, columnKey: string): unknown {\n return (row as Record<string, unknown>)[columnKey];\n }\n\n getColumnSortDirection(columnKey: string): SortDirection {\n const state = this.sortState();\n if (!state || state.column !== columnKey) return null;\n return state.direction;\n }\n\n getSortIcon(columnKey: string): string {\n const direction = this.getColumnSortDirection(columnKey);\n if (direction === 'asc') return this.caretUpIcon;\n if (direction === 'desc') return this.caretDownIcon;\n return this.arrowsDownUpIcon;\n }\n\n onHeaderClick(column: TableColumn): void {\n if (!column.sortable) return;\n const currentState = this.sortState();\n let newDirection: 'asc' | 'desc' | null = 'asc';\n if (currentState?.column === column.key) {\n if (currentState.direction === 'asc') {\n newDirection = 'desc';\n } else if (currentState.direction === 'desc') {\n newDirection = null;\n }\n }\n const newState: TableSortState = { column: column.key, direction: newDirection };\n this.sortState.set(newState);\n this.sortChange.emit(newState);\n }\n\n onFilterChange(columnKey: string, value: string): void {\n const current = this.filterState();\n const newState: TableFilterState = {\n ...current,\n [columnKey]: value || null,\n };\n this.filterState.set(newState);\n this.filterSubject.next(newState);\n }\n\n onSearchInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const value = input.value;\n this.searchValue.set(value);\n this.searchSubject.next(value);\n }\n\n toggleFilter(): void {\n const newState = !this.filterToggleActive();\n this.filterToggleActive.set(newState);\n this.filterToggleChange.emit(newState);\n }\n\n onAddAction(): void {\n this.addActionClick.emit();\n }\n\n getFilterToggleLabel(): string {\n return this.filterToggleActive() ? 'Filter ausblenden' : 'Filter einblenden';\n }\n\n onSelectAllChange(state: CheckboxState): void {\n if (this.selectionMode() === 'none') return;\n const newSelected = state === 'checked' ? [...this.data()] : [];\n this.selectedSet.set(new Set(newSelected));\n this.selected.set(newSelected);\n this.selectionChange.emit(newSelected);\n }\n\n onRowSelectionChange(row: T, state: CheckboxState): void {\n const mode = this.selectionMode();\n if (mode === 'none') return;\n const currentSet = new Set(this.selectedSet());\n if (mode === 'single') {\n currentSet.clear();\n if (state === 'checked') {\n currentSet.add(row);\n }\n } else {\n if (state === 'checked') {\n currentSet.add(row);\n } else {\n currentSet.delete(row);\n }\n }\n this.selectedSet.set(currentSet);\n const newSelected = Array.from(currentSet);\n this.selected.set(newSelected);\n this.selectionChange.emit(newSelected);\n }\n\n onRowClick(row: T): void {\n if (this.selectionMode() === 'none') {\n this.rowClick.emit(row);\n } else {\n const newState = this.isRowSelected(row) ? 'unchecked' : 'checked';\n this.onRowSelectionChange(row, newState);\n }\n }\n\n onRowActionClick(row: T, action: TableRowAction<T>): void {\n this.rowActionClick.emit({ action, row });\n }\n\n onPageChange(event: TablePageChangeEvent): void {\n const current = this.pageState();\n if (current) {\n this.pageState.set({\n ...current,\n pageIndex: event.pageIndex,\n pageSize: event.pageSize,\n });\n }\n this.pageChange.emit(event);\n }\n\n onBulkDelete(): void {\n const selectedItems = Array.from(this.selectedSet());\n this.bulkDelete.emit(selectedItems);\n }\n\n clearSelection(): void {\n this.selectedSet.set(new Set());\n this.selected.set([]);\n this.selectionChange.emit([]);\n }\n\n trackByFn(index: number, item: T): unknown {\n const customTrackBy = this.trackBy();\n return customTrackBy ? customTrackBy(index, item) : index;\n }\n}\n","@if (hasTopBar()) {\n <div class=\"ao-table__top-bar\">\n <div class=\"ao-table__top-bar-left\">\n @if (title()) {\n <h2 class=\"ao-table__title\">{{ title() }}</h2>\n }\n @if (subtitle()) {\n <p class=\"ao-table__subtitle\">{{ subtitle() }}</p>\n }\n </div>\n <div class=\"ao-table__top-bar-right\">\n @if (showSearch()) {\n <div class=\"ao-table__search\">\n <ao-icon [svg]=\"searchIcon\" size=\"sm\" class=\"ao-table__search-icon\" />\n <input\n type=\"text\"\n class=\"ao-table__search-input\"\n [placeholder]=\"searchPlaceholder()\"\n [attr.aria-label]=\"searchPlaceholder() || 'Suchen'\"\n [value]=\"searchValue()\"\n (input)=\"onSearchInput($event)\"\n />\n </div>\n }\n @if (showFilterToggle()) {\n <button\n type=\"button\"\n class=\"ao-table__filter-toggle\"\n [class.ao-table__filter-toggle--active]=\"filterToggleActive()\"\n [attr.aria-label]=\"getFilterToggleLabel()\"\n [attr.aria-pressed]=\"filterToggleActive()\"\n (click)=\"toggleFilter()\"\n >\n <ao-icon [svg]=\"filterIcon\" size=\"md\" />\n </button>\n }\n @if (addActionLabel()) {\n <button\n type=\"button\"\n ao-button\n variant=\"primary\"\n [icon]=\"addActionIcon()\"\n (click)=\"onAddAction()\"\n >\n {{ addActionLabel() }}\n </button>\n }\n </div>\n </div>\n}\n\n<div class=\"ao-table__container\">\n <div class=\"ao-table__wrapper\">\n <table class=\"ao-table__table\">\n <thead class=\"ao-table__thead\">\n <tr class=\"ao-table__header-row\">\n @if (hasSelection()) {\n <th class=\"ao-table__cell ao-table__cell--checkbox\">\n @if (selectionMode() === 'multi') {\n <ao-table-checkbox\n [state]=\"allSelected()\"\n ariaLabel=\"Select all rows\"\n (stateChange)=\"onSelectAllChange($event)\"\n />\n }\n </th>\n }\n @for (column of columns(); track column.key) {\n <th\n class=\"ao-table__cell ao-table__cell--header\"\n [class.ao-table__cell--sorted]=\"getColumnSortDirection(column.key) !== null\"\n [style.width]=\"column.width\"\n [style.textAlign]=\"column.align ?? 'left'\"\n >\n <div\n class=\"ao-table__header-content\"\n [style.justifyContent]=\"\n column.align === 'right'\n ? 'flex-end'\n : column.align === 'center'\n ? 'center'\n : 'flex-start'\n \"\n >\n <span class=\"ao-table__header-label\">{{ column.header }}</span>\n @if (column.sortable) {\n <button\n type=\"button\"\n class=\"ao-table__sort-btn\"\n [class.ao-table__sort-btn--active]=\"getColumnSortDirection(column.key)\"\n (click)=\"onHeaderClick(column)\"\n >\n <ao-icon [svg]=\"getSortIcon(column.key)\" size=\"sm\" />\n </button>\n }\n </div>\n </th>\n }\n @if (hasRowActions()) {\n <th class=\"ao-table__cell ao-table__cell--actions\"></th>\n }\n </tr>\n @if (hasFilters()) {\n <tr class=\"ao-table__filter-row\">\n @if (hasSelection()) {\n <th class=\"ao-table__cell ao-table__cell--checkbox\"></th>\n }\n @for (column of columns(); track column.key) {\n <th\n class=\"ao-table__cell ao-table__cell--filter\"\n [class.ao-table__cell--sorted]=\"getColumnSortDirection(column.key) !== null\"\n [style.width]=\"column.width\"\n >\n @if (showFilters() && column.filter && column.filter.type !== 'none') {\n <ao-table-filter\n [filter]=\"column.filter\"\n [placeholder]=\"column.header\"\n [value]=\"$any(filterState()[column.key])\"\n (valueChange)=\"onFilterChange(column.key, $event)\"\n />\n }\n </th>\n }\n @if (hasRowActions()) {\n <th class=\"ao-table__cell ao-table__cell--actions\"></th>\n }\n </tr>\n }\n @if (hasSelection() && selectedCount() > 0) {\n <tr class=\"ao-table__selection-row\">\n <td class=\"ao-table__cell ao-table__cell--checkbox\"></td>\n <td\n class=\"ao-table__cell ao-table__cell--selection-info\"\n [attr.colspan]=\"columns().length + (hasRowActions() ? 1 : 0)\"\n >\n <div class=\"ao-table__selection-content\">\n <span class=\"ao-table__selection-text\">{{ selectedCount() }} ausgewählt</span>\n <button type=\"button\" class=\"ao-table__delete-btn\" (click)=\"onBulkDelete()\">\n <ao-icon [svg]=\"trashIcon\" size=\"sm\" />\n <span>Ausgewählte löschen</span>\n </button>\n </div>\n </td>\n </tr>\n }\n </thead>\n <tbody class=\"ao-table__tbody\">\n @if (loading() && data().length === 0) {\n <tr class=\"ao-table__row ao-table__row--loading\">\n <td\n class=\"ao-table__cell ao-table__cell--loading\"\n [attr.colspan]=\"\n columns().length + (hasSelection() ? 1 : 0) + (hasRowActions() ? 1 : 0)\n \"\n >\n <div class=\"ao-table__loading-container\">\n <span class=\"ao-table__loading-text\">Laden...</span>\n </div>\n </td>\n </tr>\n } @else if (!loading() && data().length === 0) {\n <tr class=\"ao-table__row ao-table__row--empty\">\n <td\n class=\"ao-table__cell ao-table__cell--empty\"\n [attr.colspan]=\"\n columns().length + (hasSelection() ? 1 : 0) + (hasRowActions() ? 1 : 0)\n \"\n >\n <div class=\"ao-table__empty-container\">\n <ao-icon [svg]=\"emptyIcon\" size=\"xl\" class=\"ao-table__empty-icon\" />\n <span class=\"ao-table__empty-text\">Keine Daten vorhanden</span>\n </div>\n </td>\n </tr>\n } @else {\n @for (row of data(); track trackByFn($index, row)) {\n <tr\n class=\"ao-table__row\"\n [class.ao-table__row--selected]=\"isRowSelected(row)\"\n (click)=\"onRowClick(row)\"\n >\n @if (hasSelection()) {\n <td class=\"ao-table__cell ao-table__cell--checkbox\">\n <ao-table-checkbox\n [state]=\"getRowCheckboxState(row)\"\n ariaLabel=\"Select row\"\n (stateChange)=\"onRowSelectionChange(row, $event)\"\n />\n </td>\n }\n @for (column of columns(); track column.key) {\n <td\n class=\"ao-table__cell\"\n [style.width]=\"column.width\"\n [style.textAlign]=\"column.align ?? 'left'\"\n >\n @if (getCellTemplate(column.key); as template) {\n <ng-container\n [ngTemplateOutlet]=\"template.templateRef\"\n [ngTemplateOutletContext]=\"getCellContext(row, column.key)\"\n />\n } @else {\n {{ getCellValue(row, column.key) }}\n }\n </td>\n }\n @if (hasRowActions()) {\n <td\n class=\"ao-table__cell ao-table__cell--actions\"\n (click)=\"$event.stopPropagation()\"\n >\n <ao-table-row-actions\n [actions]=\"rowActions()\"\n [row]=\"row\"\n (actionClick)=\"onRowActionClick(row, $event)\"\n />\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n\n @if (hasPagination() && pageState(); as state) {\n <ao-table-pagination\n [pageState]=\"state\"\n [pageSizeOptions]=\"pageSizeOptions()\"\n (pageChange)=\"onPageChange($event)\"\n />\n }\n</div>\n","export type MarkdownEditorToolbarAction =\n | 'bold'\n | 'italic'\n | 'strike'\n | 'code'\n | 'heading1'\n | 'heading2'\n | 'heading3'\n | 'bulletList'\n | 'orderedList'\n | 'blockquote'\n | 'codeBlock'\n | 'horizontalRule'\n | 'link'\n | 'undo'\n | 'redo';\n\nexport interface MarkdownEditorConfig {\n readonly placeholder?: string;\n readonly toolbar?: readonly MarkdownEditorToolbarAction[];\n readonly minHeight?: string;\n readonly maxHeight?: string;\n}\n\nexport const DEFAULT_TOOLBAR: readonly MarkdownEditorToolbarAction[] = [\n 'bold',\n 'italic',\n 'strike',\n 'code',\n 'heading1',\n 'heading2',\n 'heading3',\n 'bulletList',\n 'orderedList',\n 'blockquote',\n 'codeBlock',\n 'link',\n 'horizontalRule',\n 'undo',\n 'redo',\n];\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n effect,\n forwardRef,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n phosphorArrowClockwise,\n phosphorArrowCounterClockwise,\n phosphorCode,\n phosphorCodeBlock,\n phosphorEye,\n phosphorLink,\n phosphorListBullets,\n phosphorListNumbers,\n phosphorMinus,\n phosphorPencilSimple,\n phosphorQuotes,\n phosphorTextB,\n phosphorTextHOne,\n phosphorTextHThree,\n phosphorTextHTwo,\n phosphorTextItalic,\n phosphorTextStrikethrough,\n} from '@ng-icons/phosphor-icons/regular';\nimport { Editor } from '@tiptap/core';\nimport Link from '@tiptap/extension-link';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport StarterKit from '@tiptap/starter-kit';\nimport { marked } from 'marked';\nimport TurndownService from 'turndown';\nimport { IconComponent } from '../icon/icon.component';\nimport { DEFAULT_TOOLBAR, MarkdownEditorToolbarAction } from './markdown-editor.types';\n\ninterface ToolbarItem {\n readonly action: MarkdownEditorToolbarAction;\n readonly icon: string;\n readonly title: string;\n readonly isActive?: () => boolean;\n readonly execute: () => void;\n}\n\n@Component({\n selector: 'ao-markdown-editor',\n imports: [IconComponent],\n templateUrl: './markdown-editor.component.html',\n styleUrl: './markdown-editor.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MarkdownEditorComponent),\n multi: true,\n },\n ],\n host: {\n class: 'ao-markdown-editor',\n '[class.ao-markdown-editor--disabled]': 'disabled()',\n '[class.ao-markdown-editor--focused]': 'focused()',\n '[class.ao-markdown-editor--source]': 'showSource()',\n },\n})\nexport class MarkdownEditorComponent implements ControlValueAccessor, AfterViewInit {\n readonly label = input<string>('');\n readonly placeholder = input<string>('Inhalt eingeben...');\n readonly toolbar = input<readonly MarkdownEditorToolbarAction[]>(DEFAULT_TOOLBAR);\n readonly minHeight = input<string>('200px');\n readonly maxHeight = input<string>('500px');\n readonly disabled = model<boolean>(false);\n readonly value = model<string>('');\n readonly focused = signal<boolean>(false);\n readonly showSource = signal<boolean>(false);\n readonly editorContent = viewChild<ElementRef<HTMLDivElement>>('editorContent');\n protected readonly icons = {\n bold: phosphorTextB,\n italic: phosphorTextItalic,\n strike: phosphorTextStrikethrough,\n code: phosphorCode,\n heading1: phosphorTextHOne,\n heading2: phosphorTextHTwo,\n heading3: phosphorTextHThree,\n bulletList: phosphorListBullets,\n orderedList: phosphorListNumbers,\n blockquote: phosphorQuotes,\n codeBlock: phosphorCodeBlock,\n link: phosphorLink,\n horizontalRule: phosphorMinus,\n undo: phosphorArrowCounterClockwise,\n redo: phosphorArrowClockwise,\n source: phosphorEye,\n editor: phosphorPencilSimple,\n };\n private editor: Editor | null = null;\n private readonly turndownService = new TurndownService({\n headingStyle: 'atx',\n codeBlockStyle: 'fenced',\n emDelimiter: '*',\n });\n private readonly destroyRef = inject(DestroyRef);\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n private lastEmitted = '';\n\n readonly toolbarItems = computed<ToolbarItem[]>(() => {\n const actions = this.toolbar();\n return actions.map(action => this.createToolbarItem(action));\n });\n\n constructor() {\n effect(() => {\n const externalValue = this.value();\n if (!this.editor || this.showSource()) return;\n if (externalValue === this.lastEmitted) return;\n\n const currentValue = this.htmlToMarkdown(this.editor.getHTML());\n if (currentValue !== externalValue) {\n this.setEditorContent(externalValue);\n }\n });\n effect(() => {\n const isDisabled = this.disabled();\n this.editor?.setEditable(!isDisabled);\n });\n }\n\n ngAfterViewInit(): void {\n this.initEditor();\n this.destroyRef.onDestroy(() => this.editor?.destroy());\n }\n\n writeValue(value: string): void {\n this.value.set(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n toggleSource(): void {\n if (this.showSource()) {\n this.showSource.set(false);\n this.setEditorContent(this.value());\n } else {\n this.showSource.set(true);\n }\n }\n\n onSourceInput(event: Event): void {\n const textarea = event.target as HTMLTextAreaElement;\n this.value.set(textarea.value);\n this.onChange(textarea.value);\n }\n\n onSourceFocus(): void {\n this.focused.set(true);\n }\n\n onSourceBlur(): void {\n this.focused.set(false);\n this.onTouched();\n }\n\n focusEditor(event: MouseEvent): void {\n if (this.disabled() || !this.editor) return;\n if (event.target !== this.editorContent()?.nativeElement) return;\n this.editor.commands.focus('end');\n }\n\n isActionActive(action: MarkdownEditorToolbarAction): boolean {\n if (!this.editor) return false;\n switch (action) {\n case 'bold':\n return this.editor.isActive('bold');\n case 'italic':\n return this.editor.isActive('italic');\n case 'strike':\n return this.editor.isActive('strike');\n case 'code':\n return this.editor.isActive('code');\n case 'heading1':\n return this.editor.isActive('heading', { level: 1 });\n case 'heading2':\n return this.editor.isActive('heading', { level: 2 });\n case 'heading3':\n return this.editor.isActive('heading', { level: 3 });\n case 'bulletList':\n return this.editor.isActive('bulletList');\n case 'orderedList':\n return this.editor.isActive('orderedList');\n case 'blockquote':\n return this.editor.isActive('blockquote');\n case 'codeBlock':\n return this.editor.isActive('codeBlock');\n case 'link':\n return this.editor.isActive('link');\n default:\n return false;\n }\n }\n\n executeAction(action: MarkdownEditorToolbarAction): void {\n if (!this.editor || this.disabled()) return;\n switch (action) {\n case 'bold':\n this.editor.chain().focus().toggleBold().run();\n break;\n case 'italic':\n this.editor.chain().focus().toggleItalic().run();\n break;\n case 'strike':\n this.editor.chain().focus().toggleStrike().run();\n break;\n case 'code':\n this.editor.chain().focus().toggleCode().run();\n break;\n case 'heading1':\n this.editor.chain().focus().toggleHeading({ level: 1 }).run();\n break;\n case 'heading2':\n this.editor.chain().focus().toggleHeading({ level: 2 }).run();\n break;\n case 'heading3':\n this.editor.chain().focus().toggleHeading({ level: 3 }).run();\n break;\n case 'bulletList':\n this.editor.chain().focus().toggleBulletList().run();\n break;\n case 'orderedList':\n this.editor.chain().focus().toggleOrderedList().run();\n break;\n case 'blockquote':\n this.editor.chain().focus().toggleBlockquote().run();\n break;\n case 'codeBlock':\n this.editor.chain().focus().toggleCodeBlock().run();\n break;\n case 'horizontalRule':\n this.editor.chain().focus().setHorizontalRule().run();\n break;\n case 'link':\n this.handleLinkAction();\n break;\n case 'undo':\n this.editor.chain().focus().undo().run();\n break;\n case 'redo':\n this.editor.chain().focus().redo().run();\n break;\n }\n }\n\n private initEditor(): void {\n const element = this.editorContent()?.nativeElement;\n if (!element) return;\n const initialMarkdown = this.value();\n this.lastEmitted = initialMarkdown;\n this.editor = new Editor({\n element,\n extensions: [\n StarterKit.configure({\n heading: { levels: [1, 2, 3] },\n }),\n Placeholder.configure({\n placeholder: this.placeholder(),\n }),\n Link.configure({\n openOnClick: false,\n HTMLAttributes: {\n rel: 'noopener noreferrer',\n target: '_blank',\n },\n }),\n ],\n content: this.markdownToHtml(initialMarkdown),\n editable: !this.disabled(),\n onUpdate: ({ editor }) => {\n const markdown = this.htmlToMarkdown(editor.getHTML());\n this.lastEmitted = markdown;\n this.value.set(markdown);\n this.onChange(markdown);\n },\n onFocus: () => {\n this.focused.set(true);\n },\n onBlur: () => {\n this.focused.set(false);\n this.onTouched();\n },\n });\n }\n\n private setEditorContent(markdown: string): void {\n if (!this.editor) return;\n const html = this.markdownToHtml(markdown);\n this.editor.commands.setContent(html, { emitUpdate: false });\n this.lastEmitted = markdown;\n }\n\n private markdownToHtml(markdown: string): string {\n if (!markdown) return '';\n return marked.parse(markdown, { async: false }) as string;\n }\n\n private htmlToMarkdown(html: string): string {\n if (!html || html === '<p></p>') return '';\n return this.turndownService.turndown(html);\n }\n\n private handleLinkAction(): void {\n if (!this.editor) return;\n const previousUrl = this.editor.getAttributes('link')['href'] as string;\n const url = window.prompt('URL eingeben:', previousUrl || 'https://');\n if (url === null) return;\n if (url === '') {\n this.editor.chain().focus().extendMarkRange('link').unsetLink().run();\n return;\n }\n this.editor.chain().focus().extendMarkRange('link').setLink({ href: url }).run();\n }\n\n private createToolbarItem(action: MarkdownEditorToolbarAction): ToolbarItem {\n const titles: Record<MarkdownEditorToolbarAction, string> = {\n bold: 'Fett',\n italic: 'Kursiv',\n strike: 'Durchgestrichen',\n code: 'Code',\n heading1: 'Überschrift 1',\n heading2: 'Überschrift 2',\n heading3: 'Überschrift 3',\n bulletList: 'Aufzählung',\n orderedList: 'Nummerierung',\n blockquote: 'Zitat',\n codeBlock: 'Codeblock',\n link: 'Link',\n horizontalRule: 'Trennlinie',\n undo: 'Rückgängig',\n redo: 'Wiederherstellen',\n };\n return {\n action,\n icon: this.icons[action],\n title: titles[action],\n isActive: () => this.isActionActive(action),\n execute: () => this.executeAction(action),\n };\n }\n}\n","@if (label()) {\n <label class=\"ao-markdown-editor__label\">{{ label() }}</label>\n}\n\n<div class=\"ao-markdown-editor__container\">\n <div class=\"ao-markdown-editor__toolbar\">\n <div class=\"ao-markdown-editor__toolbar-group\">\n @for (item of toolbarItems(); track item.action) {\n <button\n type=\"button\"\n class=\"ao-markdown-editor__toolbar-btn\"\n [class.ao-markdown-editor__toolbar-btn--active]=\"item.isActive?.()\"\n [title]=\"item.title\"\n [disabled]=\"disabled() || showSource()\"\n (click)=\"item.execute()\"\n >\n <ao-icon [svg]=\"item.icon\" size=\"sm\" />\n </button>\n }\n </div>\n <div class=\"ao-markdown-editor__toolbar-divider\"></div>\n <button\n type=\"button\"\n class=\"ao-markdown-editor__toolbar-btn ao-markdown-editor__toolbar-btn--toggle\"\n [title]=\"showSource() ? 'Editor anzeigen' : 'Markdown anzeigen'\"\n [disabled]=\"disabled()\"\n (click)=\"toggleSource()\"\n >\n <ao-icon [svg]=\"showSource() ? icons.editor : icons.source\" size=\"sm\" />\n </button>\n </div>\n\n <div\n class=\"ao-markdown-editor__body\"\n [style.min-height]=\"minHeight()\"\n [style.max-height]=\"maxHeight()\"\n >\n @if (showSource()) {\n <textarea\n class=\"ao-markdown-editor__source\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n (input)=\"onSourceInput($event)\"\n (focus)=\"onSourceFocus()\"\n (blur)=\"onSourceBlur()\"\n ></textarea>\n } @else {\n <div\n #editorContent\n class=\"ao-markdown-editor__content\"\n (click)=\"focusEditor($event)\"\n ></div>\n }\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input,\n model,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { phosphorCheck, phosphorX } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'ao-slide-toggle',\n imports: [IconComponent],\n templateUrl: './slide-toggle.component.html',\n styleUrl: './slide-toggle.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SlideToggleComponent),\n multi: true,\n },\n ],\n host: {\n class: 'ao-slide-toggle',\n '[class.ao-slide-toggle--checked]': 'checked()',\n '[class.ao-slide-toggle--disabled]': 'disabled()',\n '(click)': 'toggle()',\n '(keydown.space)': 'toggle(); $event.preventDefault()',\n '(keydown.enter)': 'toggle(); $event.preventDefault()',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '[attr.role]': '\"switch\"',\n '[attr.aria-checked]': 'checked()',\n '[attr.aria-disabled]': 'disabled()',\n },\n})\nexport class SlideToggleComponent implements ControlValueAccessor {\n readonly labelActive = input<string>('Aktiv');\n readonly labelInactive = input<string>('Inaktiv');\n readonly checked = model<boolean>(false);\n readonly disabled = model<boolean>(false);\n protected readonly checkIcon = phosphorCheck;\n protected readonly xIcon = phosphorX;\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: boolean): void {\n this.checked.set(!!value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n toggle(): void {\n if (this.disabled()) return;\n const newValue = !this.checked();\n this.checked.set(newValue);\n this.onChange(newValue);\n this.onTouched();\n }\n}\n","<span class=\"ao-slide-toggle__track\">\n <span class=\"ao-slide-toggle__labels\">\n <span class=\"ao-slide-toggle__label ao-slide-toggle__label--active\">{{ labelActive() }}</span>\n <span class=\"ao-slide-toggle__label ao-slide-toggle__label--inactive\">{{ labelInactive() }}</span>\n </span>\n <span class=\"ao-slide-toggle__indicator\">\n <ao-icon [svg]=\"checked() ? checkIcon : xIcon\" size=\"sm\" />\n </span>\n</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n phosphorCheck,\n phosphorPencilSimple,\n phosphorX,\n} from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type EditableTextSize =\n | 'display-4'\n | 'display-3'\n | 'display-2'\n | 'display-1'\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'body1'\n | 'body2'\n | 'caption';\n\n@Component({\n selector: 'ao-editable-text',\n imports: [FormsModule, IconComponent],\n templateUrl: './editable-text.component.html',\n styleUrl: './editable-text.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ao-editable-text',\n '[class.ao-editable-text--editing]': 'isEditing()',\n '[class.ao-editable-text--display-4]': 'size() === \"display-4\"',\n '[class.ao-editable-text--display-3]': 'size() === \"display-3\"',\n '[class.ao-editable-text--display-2]': 'size() === \"display-2\"',\n '[class.ao-editable-text--display-1]': 'size() === \"display-1\"',\n '[class.ao-editable-text--h1]': 'size() === \"h1\"',\n '[class.ao-editable-text--h2]': 'size() === \"h2\"',\n '[class.ao-editable-text--h3]': 'size() === \"h3\"',\n '[class.ao-editable-text--h4]': 'size() === \"h4\"',\n '[class.ao-editable-text--body1]': 'size() === \"body1\"',\n '[class.ao-editable-text--body2]': 'size() === \"body2\"',\n '[class.ao-editable-text--caption]': 'size() === \"caption\"',\n },\n})\nexport class EditableTextComponent {\n readonly value = model<string>('');\n readonly size = input<EditableTextSize>('body1');\n readonly placeholder = input<string>('Text eingeben...');\n readonly saved = output<string>();\n readonly cancelled = output<void>();\n readonly isEditing = signal<boolean>(false);\n protected readonly editIcon = phosphorPencilSimple;\n protected readonly saveIcon = phosphorCheck;\n protected readonly cancelIcon = phosphorX;\n private editValue = '';\n\n startEditing(): void {\n this.editValue = this.value();\n this.isEditing.set(true);\n }\n\n save(): void {\n this.isEditing.set(false);\n this.saved.emit(this.value());\n }\n\n cancel(): void {\n this.value.set(this.editValue);\n this.isEditing.set(false);\n this.cancelled.emit();\n }\n\n onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n this.save();\n } else if (event.key === 'Escape') {\n this.cancel();\n }\n }\n}\n","@if (isEditing()) {\n <div class=\"ao-editable-text__edit\">\n <input\n class=\"ao-editable-text__input\"\n type=\"text\"\n [(ngModel)]=\"value\"\n [placeholder]=\"placeholder()\"\n (keydown)=\"onKeydown($event)\"\n #inputRef\n />\n <div class=\"ao-editable-text__actions\">\n <button\n type=\"button\"\n class=\"ao-editable-text__btn ao-editable-text__btn--save\"\n (click)=\"save()\"\n aria-label=\"Speichern\"\n >\n <ao-icon [svg]=\"saveIcon\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"ao-editable-text__btn ao-editable-text__btn--cancel\"\n (click)=\"cancel()\"\n aria-label=\"Abbrechen\"\n >\n <ao-icon [svg]=\"cancelIcon\" size=\"sm\" />\n </button>\n </div>\n </div>\n} @else {\n <div class=\"ao-editable-text__view\">\n <span class=\"ao-editable-text__text\">{{ value() || placeholder() }}</span>\n <button\n type=\"button\"\n class=\"ao-editable-text__edit-btn\"\n (click)=\"startEditing()\"\n aria-label=\"Bearbeiten\"\n >\n <ao-icon [svg]=\"editIcon\" size=\"sm\" />\n </button>\n </div>\n}\n","import { Observable, Subject } from 'rxjs';\n\nexport class DialogRef<T = unknown, R = unknown> {\n private readonly closedSubject = new Subject<R | undefined>();\n readonly closed: Observable<R | undefined> = this.closedSubject.asObservable();\n componentInstance!: T;\n\n close(result?: R): void {\n this.closedSubject.next(result);\n this.closedSubject.complete();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n inject,\n signal,\n} from '@angular/core';\nimport { phosphorX } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../icon/icon.component';\nimport { DialogRef } from './dialog-ref';\nimport { DialogSize } from './dialog.types';\n\n@Component({\n selector: 'ao-dialog',\n imports: [IconComponent],\n templateUrl: './dialog.component.html',\n styleUrl: './dialog.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ao-dialog',\n },\n})\nexport class DialogComponent implements OnInit, OnDestroy {\n private readonly elementRef = inject(ElementRef);\n private readonly dialogRef = inject(DialogRef);\n private previousActiveElement: Element | null = null;\n readonly title = signal<string>('');\n readonly size = signal<DialogSize>('md');\n readonly showHeader = signal<boolean>(true);\n readonly showFooter = signal<boolean>(true);\n readonly closeOnBackdrop = signal<boolean>(true);\n readonly closeOnEscape = signal<boolean>(true);\n readonly closeIcon = phosphorX;\n @ViewChild('contentHost', { read: ViewContainerRef, static: true })\n contentHost!: ViewContainerRef;\n @ViewChild('footerHost', { read: ViewContainerRef, static: true })\n footerHost!: ViewContainerRef;\n\n ngOnInit(): void {\n this.previousActiveElement = document.activeElement;\n document.body.style.overflow = 'hidden';\n this.focusFirstElement();\n }\n\n ngOnDestroy(): void {\n document.body.style.overflow = '';\n if (this.previousActiveElement instanceof HTMLElement) {\n this.previousActiveElement.focus();\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscapeKey(): void {\n if (this.closeOnEscape()) {\n this.close();\n }\n }\n\n onBackdropClick(): void {\n if (this.closeOnBackdrop()) {\n this.close();\n }\n }\n\n close(): void {\n this.dialogRef.close();\n }\n\n private focusFirstElement(): void {\n setTimeout(() => {\n const container = this.elementRef.nativeElement as HTMLElement;\n const focusable = container.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n focusable?.focus();\n });\n }\n}\n","<div class=\"ao-dialog__backdrop\" (click)=\"onBackdropClick()\"></div>\n\n<div\n class=\"ao-dialog__container\"\n [class.ao-dialog__container--sm]=\"size() === 'sm'\"\n [class.ao-dialog__container--md]=\"size() === 'md'\"\n [class.ao-dialog__container--lg]=\"size() === 'lg'\"\n [class.ao-dialog__container--xl]=\"size() === 'xl'\"\n [class.ao-dialog__container--full]=\"size() === 'full'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"showHeader() ? 'dialog-title' : null\"\n>\n @if (showHeader()) {\n <header class=\"ao-dialog__header\">\n <h3 id=\"dialog-title\" class=\"ao-dialog__title\">{{ title() }}</h3>\n <button type=\"button\" class=\"ao-dialog__close\" (click)=\"close()\" aria-label=\"Schliessen\">\n <ao-icon [svg]=\"closeIcon\" size=\"md\" />\n </button>\n </header>\n }\n\n <div class=\"ao-dialog__content\">\n <ng-template #contentHost />\n </div>\n\n @if (showFooter()) {\n <footer class=\"ao-dialog__footer\">\n <ng-template #footerHost />\n </footer>\n }\n</div>\n","import { InjectionToken, Type } from '@angular/core';\n\nexport type DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\nexport interface DialogConfig<D = unknown> {\n title?: string;\n size?: DialogSize;\n showHeader?: boolean;\n showFooter?: boolean;\n closeOnBackdrop?: boolean;\n closeOnEscape?: boolean;\n data?: D;\n}\n\nexport interface DialogInternalConfig<T, D = unknown> extends DialogConfig<D> {\n component: Type<T>;\n}\n\nexport const DIALOG_DATA = new InjectionToken<unknown>('DIALOG_DATA');\n","import {\n ApplicationRef,\n createComponent,\n EnvironmentInjector,\n inject,\n Injectable,\n Injector,\n Type,\n} from '@angular/core';\nimport { DialogComponent } from './dialog.component';\nimport { DialogRef } from './dialog-ref';\nimport { DIALOG_DATA, DialogConfig } from './dialog.types';\n\n@Injectable({ providedIn: 'root' })\nexport class DialogService {\n private readonly appRef = inject(ApplicationRef);\n private readonly injector = inject(Injector);\n private readonly envInjector = inject(EnvironmentInjector);\n\n open<T, D = unknown, R = unknown>(\n component: Type<T>,\n config: DialogConfig<D> = {}\n ): DialogRef<T, R> {\n const dialogRef = new DialogRef<T, R>();\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: DialogRef, useValue: dialogRef },\n { provide: DIALOG_DATA, useValue: config.data },\n ],\n });\n const dialogComponentRef = createComponent(DialogComponent, {\n environmentInjector: this.envInjector,\n elementInjector: injector,\n });\n const dialogInstance = dialogComponentRef.instance;\n dialogInstance.title.set(config.title ?? '');\n dialogInstance.size.set(config.size ?? 'md');\n dialogInstance.showHeader.set(config.showHeader ?? true);\n dialogInstance.showFooter.set(config.showFooter ?? true);\n dialogInstance.closeOnBackdrop.set(config.closeOnBackdrop ?? true);\n dialogInstance.closeOnEscape.set(config.closeOnEscape ?? true);\n const contentRef = createComponent(component, {\n environmentInjector: this.envInjector,\n elementInjector: injector,\n });\n dialogRef.componentInstance = contentRef.instance;\n this.appRef.attachView(dialogComponentRef.hostView);\n document.body.appendChild(dialogComponentRef.location.nativeElement);\n dialogComponentRef.changeDetectorRef.detectChanges();\n dialogInstance.contentHost.insert(contentRef.hostView);\n dialogRef.closed.subscribe(() => {\n dialogInstance.contentHost.clear();\n this.appRef.detachView(dialogComponentRef.hostView);\n contentRef.destroy();\n dialogComponentRef.destroy();\n });\n return dialogRef;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { phosphorX } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'ao-chips-input',\n imports: [ReactiveFormsModule, IconComponent],\n templateUrl: './chips-input.component.html',\n styleUrl: './chips-input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ChipsInputComponent),\n multi: true,\n },\n ],\n host: {\n class: 'ao-chips-input',\n '[class.ao-chips-input--disabled]': 'disabled()',\n '[class.ao-chips-input--focused]': 'focused()',\n '[class.ao-chips-input--dropdown-open]': 'showDropdown()',\n },\n})\nexport class ChipsInputComponent implements ControlValueAccessor {\n readonly label = input<string>('');\n readonly placeholder = input<string>('Bitte hinzufügen');\n readonly optional = input<boolean>(false);\n readonly disabled = model<boolean>(false);\n readonly chips = model<string[]>([]);\n readonly options = input<string[]>([]);\n readonly focused = signal<boolean>(false);\n readonly inputValue = signal<string>('');\n readonly showDropdown = signal<boolean>(false);\n readonly activeIndex = signal<number>(-1);\n readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputField');\n readonly hasChips = computed(() => this.chips().length > 0);\n readonly hasOptions = computed(() => this.options().length > 0);\n readonly filteredOptions = computed(() => {\n const query = this.inputValue().toLowerCase().replace(/^#/, '');\n const selected = this.chips();\n return this.options()\n .filter(opt => !selected.includes(opt))\n .filter(opt => !query || opt.toLowerCase().replace(/^#/, '').includes(query));\n });\n readonly showAutocomplete = computed(\n () => this.hasOptions() && this.focused() && this.filteredOptions().length > 0\n );\n protected readonly closeIcon = phosphorX;\n private onChange: (value: string[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string[]): void {\n this.chips.set(value ?? []);\n }\n\n registerOnChange(fn: (value: string[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.inputValue.set(target.value);\n this.activeIndex.set(-1);\n this.showDropdown.set(true);\n }\n\n onKeydown(event: KeyboardEvent): void {\n const filtered = this.filteredOptions();\n if (event.key === 'ArrowDown' && this.showAutocomplete()) {\n event.preventDefault();\n this.activeIndex.update(i => (i < filtered.length - 1 ? i + 1 : 0));\n return;\n }\n if (event.key === 'ArrowUp' && this.showAutocomplete()) {\n event.preventDefault();\n this.activeIndex.update(i => (i > 0 ? i - 1 : filtered.length - 1));\n return;\n }\n if (event.key === 'Enter') {\n event.preventDefault();\n if (this.activeIndex() >= 0 && this.showAutocomplete()) {\n this.selectOption(filtered[this.activeIndex()]);\n } else if (this.inputValue().trim()) {\n this.addChip(this.inputValue().trim());\n }\n return;\n }\n if (event.key === 'Escape' && this.showDropdown()) {\n event.preventDefault();\n this.showDropdown.set(false);\n this.activeIndex.set(-1);\n return;\n }\n if (event.key === 'Backspace' && !this.inputValue() && this.chips().length > 0) {\n this.removeChip(this.chips().length - 1);\n }\n }\n\n selectOption(value: string): void {\n this.addChip(value);\n this.showDropdown.set(false);\n this.activeIndex.set(-1);\n this.inputRef()?.nativeElement.focus();\n }\n\n addChip(value: string): void {\n const normalizedValue = value.startsWith('#') ? value : `#${value}`;\n if (!this.chips().includes(normalizedValue)) {\n const updated = [...this.chips(), normalizedValue];\n this.chips.set(updated);\n this.onChange(updated);\n }\n this.inputValue.set('');\n }\n\n removeChip(index: number): void {\n const updated = this.chips().filter((_, i) => i !== index);\n this.chips.set(updated);\n this.onChange(updated);\n }\n\n onFocus(): void {\n this.focused.set(true);\n if (this.hasOptions()) {\n this.showDropdown.set(true);\n }\n }\n\n onBlur(): void {\n setTimeout(() => {\n this.focused.set(false);\n this.showDropdown.set(false);\n this.activeIndex.set(-1);\n this.onTouched();\n }, 150);\n }\n\n onOptionMousedown(event: MouseEvent): void {\n event.preventDefault();\n }\n}\n","@if (label()) {\n <label class=\"ao-chips-input__label\">\n {{ label() }}\n @if (optional()) {\n <span class=\"ao-chips-input__optional\">(Optional)</span>\n }\n </label>\n}\n\n<div class=\"ao-chips-input__container\">\n <div class=\"ao-chips-input__wrapper\">\n @for (chip of chips(); track chip; let i = $index) {\n <span class=\"ao-chips-input__chip\">\n <span class=\"ao-chips-input__chip-text\">{{ chip }}</span>\n <button\n type=\"button\"\n class=\"ao-chips-input__chip-remove\"\n [disabled]=\"disabled()\"\n (click)=\"removeChip(i)\"\n >\n <ao-icon [svg]=\"closeIcon\" size=\"sm\" />\n </button>\n </span>\n }\n\n <input\n #inputField\n class=\"ao-chips-input__field\"\n type=\"text\"\n [placeholder]=\"hasChips() ? '' : placeholder()\"\n [disabled]=\"disabled()\"\n [value]=\"inputValue()\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeydown($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n </div>\n\n @if (showAutocomplete()) {\n <ul class=\"ao-chips-input__dropdown\" role=\"listbox\">\n @for (option of filteredOptions(); track option; let i = $index) {\n <li\n class=\"ao-chips-input__option\"\n [class.ao-chips-input__option--active]=\"activeIndex() === i\"\n role=\"option\"\n (mousedown)=\"onOptionMousedown($event)\"\n (click)=\"selectOption(option)\"\n >\n {{ option }}\n </li>\n }\n </ul>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport {\n phosphorCaretDown,\n phosphorCheck,\n phosphorLockSimple,\n phosphorWarning,\n phosphorX,\n} from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../icon/icon.component';\nimport { SelectOption } from '../select/select.component';\n\n@Component({\n selector: 'ao-multiselect',\n imports: [ReactiveFormsModule, IconComponent],\n templateUrl: './multiselect.component.html',\n styleUrl: './multiselect.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiselectComponent),\n multi: true,\n },\n ],\n host: {\n class: 'ao-multiselect',\n '[class.ao-multiselect--disabled]': 'disabled()',\n '[class.ao-multiselect--readonly]': 'readonly()',\n '[class.ao-multiselect--error]': 'hasError()',\n '[class.ao-multiselect--focused]': 'focused()',\n '[class.ao-multiselect--open]': 'showDropdown()',\n },\n})\nexport class MultiselectComponent implements ControlValueAccessor {\n readonly label = input<string>('');\n readonly placeholder = input<string>('Bitte auswählen');\n readonly optional = input<boolean>(false);\n readonly error = input<string>('');\n readonly readonly = input<boolean>(false);\n readonly disabled = model<boolean>(false);\n readonly options = input<SelectOption[]>([]);\n readonly value = model<string[]>([]);\n readonly focused = signal<boolean>(false);\n readonly showDropdown = signal<boolean>(false);\n readonly searchQuery = signal<string>('');\n readonly activeIndex = signal<number>(-1);\n readonly searchInputRef = viewChild<ElementRef<HTMLInputElement>>('searchInput');\n readonly triggerRef = viewChild<ElementRef<HTMLDivElement>>('trigger');\n readonly hasError = computed(() => !!this.error());\n readonly hasValue = computed(() => this.value().length > 0);\n readonly filteredOptions = computed(() => {\n const query = this.searchQuery().toLowerCase();\n return this.options().filter(opt => !query || opt.label.toLowerCase().includes(query));\n });\n readonly selectedOptions = computed(() => {\n const selected = this.value();\n const opts = this.options();\n return selected\n .map(val => opts.find(opt => opt.value === val))\n .filter((opt): opt is SelectOption => !!opt);\n });\n private readonly elementRef = inject(ElementRef);\n protected readonly caretIcon = phosphorCaretDown;\n protected readonly lockIcon = phosphorLockSimple;\n protected readonly warningIcon = phosphorWarning;\n protected readonly closeIcon = phosphorX;\n protected readonly checkIcon = phosphorCheck;\n private onChange: (value: string[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string[]): void {\n this.value.set(value ?? []);\n }\n\n registerOnChange(fn: (value: string[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n isSelected(optionValue: string): boolean {\n return this.value().includes(optionValue);\n }\n\n toggleDropdown(): void {\n if (this.disabled() || this.readonly()) return;\n if (this.showDropdown()) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n }\n }\n\n openDropdown(): void {\n if (this.showDropdown()) return;\n this.showDropdown.set(true);\n this.searchQuery.set('');\n this.activeIndex.set(-1);\n setTimeout(() => this.searchInputRef()?.nativeElement.focus(), 0);\n }\n\n closeDropdown(): void {\n this.showDropdown.set(false);\n this.searchQuery.set('');\n this.activeIndex.set(-1);\n }\n\n toggleOption(option: SelectOption): void {\n if (option.disabled) return;\n const current = this.value();\n const updated = this.isSelected(option.value)\n ? current.filter(v => v !== option.value)\n : [...current, option.value];\n this.value.set(updated);\n this.onChange(updated);\n }\n\n removeChip(index: number): void {\n const updated = this.value().filter((_, i) => i !== index);\n this.value.set(updated);\n this.onChange(updated);\n }\n\n onSearchInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.searchQuery.set(target.value);\n this.activeIndex.set(-1);\n }\n\n onKeydown(event: KeyboardEvent): void {\n const filtered = this.filteredOptions();\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n if (!this.showDropdown()) {\n this.openDropdown();\n return;\n }\n this.activeIndex.update(i => (i < filtered.length - 1 ? i + 1 : 0));\n return;\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.activeIndex.update(i => (i > 0 ? i - 1 : filtered.length - 1));\n return;\n }\n if (event.key === 'Enter' && this.activeIndex() >= 0) {\n event.preventDefault();\n this.toggleOption(filtered[this.activeIndex()]);\n return;\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n this.closeDropdown();\n this.triggerRef()?.nativeElement.focus();\n return;\n }\n if (event.key === 'Backspace' && !this.searchQuery() && this.value().length > 0) {\n this.removeChip(this.value().length - 1);\n }\n }\n\n onTriggerClick(): void {\n this.toggleDropdown();\n }\n\n onTriggerKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.toggleDropdown();\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.openDropdown();\n }\n }\n\n onFocus(): void {\n this.focused.set(true);\n }\n\n onBlur(): void {\n setTimeout(() => {\n if (this.elementRef.nativeElement.contains(document.activeElement)) return;\n this.focused.set(false);\n this.closeDropdown();\n this.onTouched();\n }, 150);\n }\n\n onOptionMousedown(event: MouseEvent): void {\n event.preventDefault();\n }\n}\n","@if (label()) {\n <label class=\"ao-multiselect__label\">\n {{ label() }}\n @if (optional()) {\n <span class=\"ao-multiselect__optional\">(Optional)</span>\n }\n </label>\n}\n\n<div class=\"ao-multiselect__container\">\n <div\n #trigger\n class=\"ao-multiselect__trigger\"\n tabindex=\"0\"\n role=\"combobox\"\n [attr.aria-expanded]=\"showDropdown()\"\n [attr.aria-disabled]=\"disabled()\"\n (click)=\"onTriggerClick()\"\n (keydown)=\"onTriggerKeydown($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n >\n <div class=\"ao-multiselect__values\">\n @for (option of selectedOptions(); track option.value; let i = $index) {\n <span class=\"ao-multiselect__chip\">\n <span class=\"ao-multiselect__chip-text\">{{ option.label }}</span>\n <button\n type=\"button\"\n class=\"ao-multiselect__chip-remove\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"removeChip(i); $event.stopPropagation()\"\n >\n <ao-icon [svg]=\"closeIcon\" size=\"sm\" />\n </button>\n </span>\n }\n @if (!hasValue()) {\n <span class=\"ao-multiselect__placeholder\">{{ placeholder() }}</span>\n }\n </div>\n\n @if (readonly() && !hasError()) {\n <ao-icon class=\"ao-multiselect__icon ao-multiselect__icon--lock\" [svg]=\"lockIcon\" />\n } @else if (hasError()) {\n <ao-icon class=\"ao-multiselect__icon ao-multiselect__icon--warning\" [svg]=\"warningIcon\" />\n } @else {\n <ao-icon class=\"ao-multiselect__icon ao-multiselect__icon--caret\" [svg]=\"caretIcon\" />\n }\n </div>\n\n @if (showDropdown()) {\n <div class=\"ao-multiselect__dropdown\" (mousedown)=\"onOptionMousedown($event)\">\n <div class=\"ao-multiselect__search\">\n <input\n #searchInput\n class=\"ao-multiselect__search-input\"\n type=\"text\"\n placeholder=\"Suchen...\"\n [value]=\"searchQuery()\"\n (input)=\"onSearchInput($event)\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur()\"\n />\n </div>\n\n <ul class=\"ao-multiselect__options\" role=\"listbox\" aria-multiselectable=\"true\">\n @for (option of filteredOptions(); track option.value; let i = $index) {\n <li\n class=\"ao-multiselect__option\"\n [class.ao-multiselect__option--active]=\"activeIndex() === i\"\n [class.ao-multiselect__option--disabled]=\"option.disabled\"\n [class.ao-multiselect__option--selected]=\"isSelected(option.value)\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(option.value)\"\n [attr.aria-disabled]=\"option.disabled\"\n (click)=\"toggleOption(option)\"\n >\n <span class=\"ao-multiselect__option-checkbox\">\n @if (isSelected(option.value)) {\n <ao-icon [svg]=\"checkIcon\" size=\"sm\" />\n }\n </span>\n <span class=\"ao-multiselect__option-label\">{{ option.label }}</span>\n </li>\n } @empty {\n <li class=\"ao-multiselect__no-results\">Keine Ergebnisse</li>\n }\n </ul>\n </div>\n }\n</div>\n\n@if (hasError()) {\n <span class=\"ao-multiselect__error\">{{ error() }}</span>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input,\n model,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { phosphorCheck } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'ao-checkbox',\n imports: [IconComponent],\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true,\n },\n ],\n host: {\n class: 'ao-checkbox',\n '[class.ao-checkbox--checked]': 'checked()',\n '[class.ao-checkbox--disabled]': 'disabled()',\n '(click)': 'toggle()',\n '(keydown.space)': 'toggle(); $event.preventDefault()',\n '(keydown.enter)': 'toggle(); $event.preventDefault()',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '[attr.role]': '\"checkbox\"',\n '[attr.aria-checked]': 'checked()',\n '[attr.aria-disabled]': 'disabled()',\n },\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n readonly label = input<string>('');\n readonly checked = model<boolean>(false);\n readonly disabled = model<boolean>(false);\n protected readonly checkIcon = phosphorCheck;\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: boolean): void {\n this.checked.set(!!value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n toggle(): void {\n if (this.disabled()) return;\n const newValue = !this.checked();\n this.checked.set(newValue);\n this.onChange(newValue);\n this.onTouched();\n }\n}\n","<span class=\"ao-checkbox__box\">\n @if (checked()) {\n <ao-icon [svg]=\"checkIcon\" size=\"sm\" />\n }\n</span>\n@if (label()) {\n <span class=\"ao-checkbox__label\">{{ label() }}</span>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n input,\n viewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'ao-tab-panel',\n template: `<ng-template #content><ng-content /></ng-template>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabPanelComponent {\n readonly id = input.required<string>();\n readonly label = input.required<string>();\n readonly icon = input<string>();\n readonly disabled = input<boolean>(false);\n readonly panelContent = viewChild.required<TemplateRef<unknown>>('content');\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n effect,\n inject,\n Injector,\n model,\n output,\n runInInjectionContext,\n untracked,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\nimport { TabPanelComponent } from './tab-panel.component';\nimport { TabChangeEvent } from './tabs.types';\n\n@Component({\n selector: 'ao-tabs',\n imports: [NgTemplateOutlet, IconComponent],\n templateUrl: './tabs.component.html',\n styleUrl: './tabs.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-tabs',\n },\n})\nexport class TabsComponent implements AfterViewInit {\n readonly activeTab = model<string>('');\n readonly tabChange = output<TabChangeEvent>();\n readonly panels = contentChildren(TabPanelComponent);\n readonly injector = inject(Injector);\n\n ngAfterViewInit(): void {\n runInInjectionContext(this.injector, () => {\n effect(() => {\n const panelList = this.panels();\n const currentActiveTab = untracked(() => this.activeTab());\n if (panelList.length > 0 && !currentActiveTab) {\n const firstEnabled = panelList.find(p => !p.disabled());\n if (firstEnabled) {\n this.activeTab.set(firstEnabled.id());\n }\n }\n });\n });\n }\n\n selectTab(panel: TabPanelComponent): void {\n if (panel.disabled() || panel.id() === this.activeTab()) {\n return;\n }\n const previousTabId = this.activeTab() || null;\n this.activeTab.set(panel.id());\n this.tabChange.emit({ previousTabId, currentTabId: panel.id() });\n }\n\n onKeydown(event: KeyboardEvent, currentPanel: TabPanelComponent): void {\n const enabledPanels = this.panels().filter(p => !p.disabled());\n const currentIndex = enabledPanels.findIndex(p => p.id() === currentPanel.id());\n if (currentIndex === -1) return;\n let targetIndex: number | null = null;\n switch (event.key) {\n case 'ArrowLeft':\n targetIndex = currentIndex > 0 ? currentIndex - 1 : enabledPanels.length - 1;\n break;\n case 'ArrowRight':\n targetIndex = currentIndex < enabledPanels.length - 1 ? currentIndex + 1 : 0;\n break;\n case 'Home':\n targetIndex = 0;\n break;\n case 'End':\n targetIndex = enabledPanels.length - 1;\n break;\n default:\n return;\n }\n event.preventDefault();\n const targetPanel = enabledPanels[targetIndex];\n this.selectTab(targetPanel);\n this.focusTab(targetPanel.id());\n }\n\n private focusTab(tabId: string): void {\n const tabEl = document.querySelector(`[data-tab-id=\"${tabId}\"]`) as HTMLElement | null;\n tabEl?.focus();\n }\n}\n","<div class=\"ao-tabs__header\" role=\"tablist\">\n @for (panel of panels(); track panel.id()) {\n <button\n class=\"ao-tabs__tab\"\n role=\"tab\"\n type=\"button\"\n [class.ao-tabs__tab--active]=\"panel.id() === activeTab()\"\n [class.ao-tabs__tab--disabled]=\"panel.disabled()\"\n [attr.aria-selected]=\"panel.id() === activeTab()\"\n [attr.aria-controls]=\"'panel-' + panel.id()\"\n [attr.aria-disabled]=\"panel.disabled()\"\n [attr.data-tab-id]=\"panel.id()\"\n [attr.tabindex]=\"panel.id() === activeTab() ? 0 : -1\"\n [disabled]=\"panel.disabled()\"\n (click)=\"selectTab(panel)\"\n (keydown)=\"onKeydown($event, panel)\"\n >\n @if (panel.icon()) {\n <ao-icon [svg]=\"panel.icon()!\" size=\"sm\" />\n }\n {{ panel.label() }}\n </button>\n }\n</div>\n<div class=\"ao-tabs__content\">\n @for (panel of panels(); track panel.id()) {\n <div\n class=\"ao-tabs__panel\"\n role=\"tabpanel\"\n [id]=\"'panel-' + panel.id()\"\n [attr.aria-labelledby]=\"panel.id()\"\n [class.ao-tabs__panel--active]=\"panel.id() === activeTab()\"\n [attr.hidden]=\"panel.id() !== activeTab() ? true : null\"\n >\n @if (panel.id() === activeTab()) {\n <ng-container [ngTemplateOutlet]=\"panel.panelContent()\" />\n }\n </div>\n }\n</div>\n","import { NavItem, SearchPage, SearchResult, SearchResultGroup } from './navigation.types';\n\ninterface BuildSearchPagesArgs {\n readonly items: readonly NavItem[];\n readonly parentBreadcrumb?: readonly string[];\n}\n\ninterface CreateSearchPageGroupArgs {\n readonly pages: readonly SearchPage[];\n readonly query: string;\n}\n\ninterface FilterSearchPagesArgs {\n readonly pages: readonly SearchPage[];\n readonly query: string;\n}\n\nexport function buildSearchPagesFromNavItems(items: readonly NavItem[]): SearchPage[] {\n return buildSearchPages({ items });\n}\n\nexport function createSearchPageGroup(args: CreateSearchPageGroupArgs): SearchResultGroup | null {\n const pages = filterSearchPages({ pages: args.pages, query: args.query });\n if (pages.length === 0) return null;\n const results = pages.map((page): SearchResult => createSearchPageResult(page));\n return { type: 'page', label: 'Seiten', results, totalCount: results.length };\n}\n\nexport function filterSearchPages(args: FilterSearchPagesArgs): SearchPage[] {\n const normalizedQuery = normalizeSearchText(args.query);\n if (!normalizedQuery) return [];\n return args.pages.filter(page => getPageSearchText(page).includes(normalizedQuery));\n}\n\nfunction buildSearchPages(args: BuildSearchPagesArgs): SearchPage[] {\n return args.items.flatMap((item): SearchPage[] => {\n const breadcrumb = [...(args.parentBreadcrumb ?? []), item.label];\n const page = createSearchPage(item, breadcrumb);\n const children = buildSearchPages({ items: item.children ?? [], parentBreadcrumb: breadcrumb });\n return page ? [page, ...children] : children;\n });\n}\n\nfunction createSearchPage(item: NavItem, breadcrumb: readonly string[]): SearchPage | null {\n if (item.disabled || item.separator || !item.route) return null;\n return {\n id: item.id,\n label: item.label,\n route: item.route,\n breadcrumb,\n };\n}\n\nfunction createSearchPageResult(page: SearchPage): SearchResult {\n return {\n id: `page:${page.id}`,\n type: 'page',\n primary: page.label,\n secondary: page.breadcrumb?.join(' / '),\n route: page.route,\n };\n}\n\nfunction getPageSearchText(page: SearchPage): string {\n return normalizeSearchText(\n [page.label, page.route, ...(page.breadcrumb ?? []), ...(page.keywords ?? [])].join(' ')\n );\n}\n\nfunction normalizeSearchText(text: string): string {\n return text\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase()\n .trim();\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n model,\n output,\n} from '@angular/core';\nimport { IconComponent } from '../../icon/icon.component';\nimport { NavItem, NavItemChangeEvent } from '../navigation.types';\n\n@Component({\n selector: 'ao-side-nav',\n imports: [IconComponent],\n templateUrl: './side-nav.component.html',\n styleUrl: './side-nav.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ao-side-nav',\n '[class.ao-side-nav--expanded]': 'expanded()',\n },\n})\nexport class SideNavComponent {\n readonly items = input<NavItem[]>([]);\n readonly bottomItems = input<NavItem[]>([]);\n readonly activeItemId = model<string>('');\n readonly expanded = input<boolean>(false);\n readonly itemClick = output<NavItem>();\n readonly itemChange = output<NavItemChangeEvent>();\n readonly bottomItemClick = output<NavItem>();\n\n protected onItemClick(item: NavItem): void {\n if (item.disabled || item.id === this.activeItemId()) {\n return;\n }\n const previousItem = this.items().find((i) => i.id === this.activeItemId()) ?? null;\n this.activeItemId.set(item.id);\n this.itemClick.emit(item);\n this.itemChange.emit({ item, previousItem });\n }\n\n protected onBottomItemClick(item: NavItem): void {\n if (item.disabled) {\n return;\n }\n this.bottomItemClick.emit(item);\n this.itemClick.emit(item);\n }\n\n protected onKeydown(event: KeyboardEvent, currentItem: NavItem): void {\n const enabledItems = this.items().filter((i) => !i.disabled);\n const currentIndex = enabledItems.findIndex((i) => i.id === currentItem.id);\n if (currentIndex === -1) return;\n let targetIndex: number | null = null;\n switch (event.key) {\n case 'ArrowUp':\n targetIndex = currentIndex > 0 ? currentIndex - 1 : enabledItems.length - 1;\n break;\n case 'ArrowDown':\n targetIndex = currentIndex < enabledItems.length - 1 ? currentIndex + 1 : 0;\n break;\n case 'Home':\n targetIndex = 0;\n break;\n case 'End':\n targetIndex = enabledItems.length - 1;\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.onItemClick(currentItem);\n return;\n default:\n return;\n }\n event.preventDefault();\n const targetItem = enabledItems[targetIndex];\n this.onItemClick(targetItem);\n this.focusItem(targetItem.id);\n }\n\n private focusItem(itemId: string): void {\n const itemEl = document.querySelector(\n `[data-nav-id=\"${itemId}\"]`\n ) as HTMLElement | null;\n itemEl?.focus();\n }\n}\n","<nav class=\"side-nav\" role=\"navigation\" aria-label=\"Side navigation\">\n <div class=\"side-nav__header\">\n <div class=\"side-nav__logo\">\n <ng-content select=\"[aoSideNavLogo]\" />\n </div>\n </div>\n\n <ul class=\"side-nav__list\" role=\"menu\">\n @for (item of items(); track item.id) {\n @if (item.separator) {\n <li role=\"separator\" class=\"side-nav__separator\"></li>\n } @else {\n <li role=\"none\">\n <a\n class=\"side-nav__item\"\n [class.side-nav__item--active]=\"item.id === activeItemId()\"\n [class.side-nav__item--disabled]=\"item.disabled\"\n [class.side-nav__item--highlight]=\"item.highlight\"\n [attr.href]=\"item.route ?? null\"\n [attr.data-nav-id]=\"item.id\"\n [attr.aria-current]=\"item.id === activeItemId() ? 'page' : null\"\n [attr.aria-disabled]=\"item.disabled || null\"\n [attr.tabindex]=\"item.disabled ? -1 : 0\"\n [attr.title]=\"item.tooltip ?? item.label\"\n role=\"menuitem\"\n (click)=\"$event.preventDefault(); onItemClick(item)\"\n (keydown)=\"onKeydown($event, item)\"\n >\n @if (item.icon) {\n <ao-icon [svg]=\"item.icon\" size=\"sm\" class=\"side-nav__icon\" />\n }\n <span class=\"side-nav__label\">{{ item.label }}</span>\n </a>\n </li>\n }\n }\n </ul>\n\n @if (bottomItems().length > 0) {\n <div class=\"side-nav__bottom\">\n @for (item of bottomItems(); track item.id) {\n <button\n type=\"button\"\n class=\"side-nav__bottom-item\"\n [class.side-nav__bottom-item--disabled]=\"item.disabled\"\n [attr.data-nav-id]=\"item.id\"\n [attr.aria-disabled]=\"item.disabled || null\"\n [attr.title]=\"item.tooltip ?? item.label\"\n [disabled]=\"item.disabled\"\n (click)=\"onBottomItemClick(item)\"\n >\n @if (item.icon) {\n <ao-icon [svg]=\"item.icon\" size=\"lg\" />\n }\n </button>\n }\n </div>\n }\n</nav>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostListener,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport {\n phosphorArrowRight,\n phosphorCaretRight,\n phosphorMicrophone,\n phosphorSparkle,\n phosphorX,\n} from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../../icon/icon.component';\nimport {\n PageSuggestion,\n RecommendedFilter,\n SearchPage,\n SearchResult,\n SearchResultGroup,\n SearchSubmitEvent,\n} from '../navigation.types';\nimport { createSearchPageGroup } from '../search-pages';\n\ntype SpeechRecognitionFactory = new () => BrowserSpeechRecognition;\n\ninterface SpeechRecognitionScope {\n SpeechRecognition?: SpeechRecognitionFactory;\n webkitSpeechRecognition?: SpeechRecognitionFactory;\n}\n\ninterface BrowserSpeechRecognition {\n continuous: boolean;\n interimResults: boolean;\n lang: string;\n onend: (() => void) | null;\n onerror: ((event: BrowserSpeechRecognitionErrorEvent) => void) | null;\n onresult: ((event: BrowserSpeechRecognitionEvent) => void) | null;\n abort(): void;\n start(): void;\n stop(): void;\n}\n\ninterface BrowserSpeechRecognitionAlternative {\n readonly transcript: string;\n}\n\ninterface BrowserSpeechRecognitionErrorEvent {\n readonly error: string;\n}\n\ninterface BrowserSpeechRecognitionEvent {\n readonly resultIndex: number;\n readonly results: BrowserSpeechRecognitionResultList;\n}\n\ninterface BrowserSpeechRecognitionResult {\n readonly isFinal: boolean;\n readonly length: number;\n item(index: number): BrowserSpeechRecognitionAlternative;\n}\n\ninterface BrowserSpeechRecognitionResultList {\n readonly length: number;\n item(index: number): BrowserSpeechRecognitionResult;\n}\n\nconst MAX_VISIBLE_RESULTS = 10;\n\n@Component({\n selector: 'ao-ai-search',\n imports: [IconComponent],\n templateUrl: './ai-search.component.html',\n styleUrl: './ai-search.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-ai-search',\n },\n})\nexport class AiSearchComponent {\n private readonly sanitizer = inject(DomSanitizer);\n private readonly hostRef = inject(ElementRef<HTMLElement>);\n\n readonly placeholder = input<string>('Suche oder Prompt');\n readonly value = model<string>('');\n readonly disabled = input<boolean>(false);\n readonly recommendedFilters = input<RecommendedFilter[]>([]);\n readonly activeFilter = model<RecommendedFilter | null>(null);\n readonly resultGroups = input<SearchResultGroup[]>([]);\n readonly searchPages = input<readonly SearchPage[]>([]);\n readonly pageSuggestion = input<PageSuggestion | null>(null);\n readonly aiSuggestions = input<SearchResult[]>([]);\n readonly loading = input<boolean>(false);\n readonly error = input<string | null>(null);\n readonly panelOpen = model<boolean>(false);\n readonly voiceLanguage = input<string>('de-DE');\n\n readonly submit = output<SearchSubmitEvent>();\n readonly voiceStart = output<void>();\n readonly queryChange = output<string>();\n readonly filterSelect = output<RecommendedFilter>();\n readonly filterClear = output<void>();\n readonly resultSelect = output<SearchResult>();\n readonly aiSuggestionSelect = output<SearchResult>();\n readonly pageSuggestionSelect = output<PageSuggestion>();\n readonly viewAllClick = output<string>();\n\n protected readonly sparkleIcon = phosphorSparkle;\n protected readonly micIcon = phosphorMicrophone;\n protected readonly caretRightIcon = phosphorCaretRight;\n protected readonly arrowRightIcon = phosphorArrowRight;\n protected readonly closeIcon = phosphorX;\n protected readonly isVoiceRecording = signal<boolean>(false);\n protected readonly voiceError = signal<string | null>(null);\n protected readonly voiceButtonLabel = computed(() =>\n this.isVoiceRecording() ? 'Voice input stoppen' : 'Voice input starten'\n );\n\n private readonly searchInput = viewChild<ElementRef<HTMLInputElement>>('searchInput');\n private speechRecognition: BrowserSpeechRecognition | null = null;\n private currentVoiceTranscript = '';\n\n protected readonly effectiveResultGroups = computed<SearchResultGroup[]>(() => {\n if (this.activeFilter() !== null) return this.resultGroups();\n const pageGroup = createSearchPageGroup({ pages: this.searchPages(), query: this.value() });\n return pageGroup ? [pageGroup, ...this.resultGroups()] : this.resultGroups();\n });\n\n protected readonly effectiveError = computed(() => {\n const voiceError = this.voiceError();\n if (voiceError) return voiceError;\n if (this.effectiveResultGroups().length > 0) return null;\n return this.error();\n });\n\n protected readonly visibleResultGroups = computed<SearchResultGroup[]>(() => {\n let remaining = MAX_VISIBLE_RESULTS;\n return this.effectiveResultGroups().reduce<SearchResultGroup[]>((groups, group) => {\n if (remaining <= 0) {\n return groups;\n }\n const results = group.results.slice(0, remaining);\n if (results.length === 0) {\n return groups;\n }\n remaining -= results.length;\n groups.push({ ...group, results });\n return groups;\n }, []);\n });\n\n protected readonly visibleAiSuggestions = computed<SearchResult[]>(() => {\n const visibleGroupCount = this.visibleResultGroups().reduce(\n (total, group) => total + group.results.length,\n 0\n );\n const remaining = Math.max(MAX_VISIBLE_RESULTS - visibleGroupCount, 0);\n return this.aiSuggestions().slice(0, remaining);\n });\n\n protected readonly visibleResultCount = computed(\n () =>\n this.visibleResultGroups().reduce((total, group) => total + group.results.length, 0) +\n this.visibleAiSuggestions().length\n );\n\n protected readonly totalResultCount = computed(\n () =>\n this.effectiveResultGroups().reduce(\n (total, group) => total + this.getGroupResultCount(group),\n 0\n ) + this.aiSuggestions().length\n );\n\n protected readonly hasMoreResults = computed(() => this.totalResultCount() > MAX_VISIBLE_RESULTS);\n\n protected readonly resultSummary = computed(() => {\n const total = this.totalResultCount();\n if (total === 1) {\n return '1 Ergebnis';\n }\n if (this.hasMoreResults()) {\n return `${this.visibleResultCount()} von ${total} Ergebnissen`;\n }\n return `${total} Ergebnisse`;\n });\n\n protected readonly hasAnyResults = computed(\n () => this.totalResultCount() > 0 || this.pageSuggestion() !== null\n );\n\n protected readonly showNoResults = computed(\n () =>\n this.value().trim().length > 0 &&\n !this.loading() &&\n this.effectiveError() === null &&\n !this.hasAnyResults()\n );\n\n protected readonly showRecommendedFilters = computed(\n () => this.activeFilter() === null && this.recommendedFilters().length > 0\n );\n\n protected readonly effectivePlaceholder = computed(() => {\n const filter = this.activeFilter();\n if (filter) {\n return `Suche in ${filter.label}…`;\n }\n return this.placeholder();\n });\n\n protected readonly hasPanelContent = computed(() => {\n if (this.effectiveError() !== null) {\n return true;\n }\n if (this.value().length === 0) {\n return this.showRecommendedFilters();\n }\n return this.hasAnyResults() || this.loading() || this.showNoResults();\n });\n\n @HostListener('document:click', ['$event'])\n protected onDocumentClick(event: MouseEvent): void {\n if (!this.panelOpen()) {\n return;\n }\n const target = event.target as Node | null;\n if (target && !this.hostRef.nativeElement.contains(target)) {\n this.panelOpen.set(false);\n }\n }\n\n protected onFocus(): void {\n this.panelOpen.set(true);\n }\n\n protected onInput(event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n const next = inputEl.value;\n this.voiceError.set(null);\n this.value.set(next);\n this.panelOpen.set(true);\n this.queryChange.emit(next);\n }\n\n protected onEnter(): void {\n const query = this.value().trim();\n if (query) {\n this.submit.emit({ query, isVoiceInput: false, filter: this.activeFilter() });\n this.panelOpen.set(false);\n }\n }\n\n protected onEscape(): void {\n this.panelOpen.set(false);\n }\n\n protected onBackspace(event: Event): void {\n if (this.value().length === 0 && this.activeFilter() !== null) {\n event.preventDefault();\n this.clearActiveFilter();\n }\n }\n\n protected onVoiceClick(): void {\n if (this.disabled()) {\n return;\n }\n if (this.isVoiceRecording()) {\n this.stopVoiceRecognition();\n return;\n }\n this.voiceStart.emit();\n this.startVoiceRecognition();\n }\n\n protected onFilterClick(filter: RecommendedFilter): void {\n this.activeFilter.set(filter);\n this.filterSelect.emit(filter);\n this.panelOpen.set(true);\n queueMicrotask(() => this.focus());\n }\n\n protected onChipRemove(event: MouseEvent): void {\n event.stopPropagation();\n this.clearActiveFilter();\n this.focus();\n }\n\n protected onResultClick(result: SearchResult): void {\n this.resultSelect.emit(result);\n this.panelOpen.set(false);\n }\n\n protected onAiSuggestionClick(result: SearchResult): void {\n this.aiSuggestionSelect.emit(result);\n this.panelOpen.set(false);\n }\n\n protected onPathClick(suggestion: PageSuggestion): void {\n this.pageSuggestionSelect.emit(suggestion);\n this.panelOpen.set(false);\n }\n\n protected onViewAll(): void {\n this.viewAllClick.emit(this.value().trim());\n this.panelOpen.set(false);\n }\n\n protected highlight(text: string): SafeHtml {\n const query = this.value().trim();\n if (!query) {\n return this.sanitizer.bypassSecurityTrustHtml(this.escapeHtml(text));\n }\n const escaped = this.escapeHtml(text);\n const pattern = new RegExp(this.escapeRegex(query), 'gi');\n const highlighted = escaped.replace(\n pattern,\n match => `<mark class=\"ai-search__hl\">${match}</mark>`\n );\n return this.sanitizer.bypassSecurityTrustHtml(highlighted);\n }\n\n focus(): void {\n this.searchInput()?.nativeElement.focus();\n }\n\n private startVoiceRecognition(): void {\n const Recognition = this.getSpeechRecognitionFactory();\n if (Recognition === null) {\n this.showVoiceError('Spracheingabe wird von diesem Browser nicht unterstützt');\n return;\n }\n try {\n const recognition = new Recognition();\n this.currentVoiceTranscript = '';\n recognition.continuous = false;\n recognition.interimResults = true;\n recognition.lang = this.voiceLanguage();\n recognition.onresult = (event): void => this.handleVoiceResult(event);\n recognition.onerror = (event): void => this.handleVoiceError(event);\n recognition.onend = (): void => this.handleVoiceEnd();\n this.speechRecognition = recognition;\n this.isVoiceRecording.set(true);\n this.voiceError.set(null);\n recognition.start();\n } catch (err: unknown) {\n console.warn('[AiSearch] voice input failed', err);\n this.showVoiceError('Spracheingabe konnte nicht gestartet werden');\n }\n }\n\n private stopVoiceRecognition(): void {\n this.speechRecognition?.stop();\n }\n\n private handleVoiceResult(event: BrowserSpeechRecognitionEvent): void {\n const transcript = this.getTranscript(event);\n if (!transcript) {\n return;\n }\n this.currentVoiceTranscript = transcript;\n this.value.set(transcript);\n this.panelOpen.set(true);\n this.voiceError.set(null);\n this.queryChange.emit(transcript);\n }\n\n private handleVoiceError(event: BrowserSpeechRecognitionErrorEvent): void {\n if (event.error === 'no-speech') {\n this.showVoiceError('Keine Sprache erkannt');\n return;\n }\n this.showVoiceError('Spracheingabe fehlgeschlagen');\n }\n\n private handleVoiceEnd(): void {\n const query = this.currentVoiceTranscript.trim();\n this.isVoiceRecording.set(false);\n this.speechRecognition = null;\n this.currentVoiceTranscript = '';\n if (!query) {\n return;\n }\n this.submit.emit({ query, isVoiceInput: true, filter: this.activeFilter() });\n this.panelOpen.set(false);\n }\n\n private getTranscript(event: BrowserSpeechRecognitionEvent): string {\n const parts: string[] = [];\n for (let i = 0; i < event.results.length; i++) {\n const result = event.results.item(i);\n if (result.length > 0) {\n parts.push(result.item(0).transcript);\n }\n }\n return parts.join(' ').trim();\n }\n\n private getSpeechRecognitionFactory(): SpeechRecognitionFactory | null {\n const scope = globalThis as unknown as SpeechRecognitionScope;\n return scope.SpeechRecognition ?? scope.webkitSpeechRecognition ?? null;\n }\n\n private showVoiceError(message: string): void {\n this.isVoiceRecording.set(false);\n this.currentVoiceTranscript = '';\n this.speechRecognition = null;\n this.voiceError.set(message);\n this.panelOpen.set(true);\n }\n\n private clearActiveFilter(): void {\n if (this.activeFilter() === null) {\n return;\n }\n this.activeFilter.set(null);\n this.filterClear.emit();\n }\n\n private getGroupResultCount(group: SearchResultGroup): number {\n return Math.max(group.totalCount ?? 0, group.results.length);\n }\n\n private escapeHtml(text: string): string {\n return text\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;');\n }\n\n private escapeRegex(text: string): string {\n return text.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n}\n","<div class=\"ai-search\" [class.ai-search--open]=\"panelOpen() && hasPanelContent()\">\n <ao-icon [svg]=\"sparkleIcon\" size=\"sm\" class=\"ai-search__icon-left\" />\n @if (activeFilter(); as f) {\n <span class=\"ai-search__active-chip\" role=\"status\">\n <span class=\"ai-search__active-chip-label\">{{ f.label }}</span>\n <button\n type=\"button\"\n class=\"ai-search__active-chip-remove\"\n [disabled]=\"disabled()\"\n (click)=\"onChipRemove($event)\"\n [attr.aria-label]=\"'Filter ' + f.label + ' entfernen'\"\n >\n <ao-icon [svg]=\"closeIcon\" size=\"xs\" />\n </button>\n </span>\n }\n <input\n #searchInput\n type=\"text\"\n class=\"ai-search__input\"\n [placeholder]=\"effectivePlaceholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n (focus)=\"onFocus()\"\n (input)=\"onInput($event)\"\n (keydown.enter)=\"onEnter()\"\n (keydown.escape)=\"onEscape()\"\n (keydown.backspace)=\"onBackspace($event)\"\n aria-label=\"AI Search\"\n autocomplete=\"off\"\n />\n <button\n type=\"button\"\n class=\"ai-search__voice-btn\"\n [class.ai-search__voice-btn--recording]=\"isVoiceRecording()\"\n [disabled]=\"disabled()\"\n (click)=\"onVoiceClick()\"\n [attr.aria-label]=\"voiceButtonLabel()\"\n [attr.aria-pressed]=\"isVoiceRecording()\"\n >\n <ao-icon [svg]=\"micIcon\" size=\"sm\" />\n </button>\n</div>\n\n@if (panelOpen() && hasPanelContent()) {\n <div class=\"ai-search__panel\" role=\"listbox\">\n @if (effectiveError(); as msg) {\n <div class=\"ai-search__panel-section ai-search__status ai-search__status--error\">\n {{ msg }}\n </div>\n } @else if (value().length === 0) {\n @if (showRecommendedFilters()) {\n <div class=\"ai-search__panel-section\">\n <h4 class=\"ai-search__section-title\">Empfohlene Filter</h4>\n <div class=\"ai-search__filter-chips\">\n @for (f of recommendedFilters(); track f.id) {\n <button type=\"button\" class=\"ai-search__filter-chip\" (click)=\"onFilterClick(f)\">\n {{ f.label }}\n </button>\n }\n </div>\n </div>\n }\n } @else {\n @if (loading() && !hasAnyResults()) {\n <div class=\"ai-search__panel-section ai-search__status\">\n <span class=\"ai-search__spinner\" aria-hidden=\"true\"></span>\n Suche läuft…\n </div>\n } @else if (showNoResults()) {\n <div class=\"ai-search__panel-section ai-search__status\">Keine Ergebnisse gefunden</div>\n }\n @if (pageSuggestion(); as p) {\n <div class=\"ai-search__panel-section\">\n <h4 class=\"ai-search__section-title\">Pfad</h4>\n <button type=\"button\" class=\"ai-search__path-row\" (click)=\"onPathClick(p)\">\n @for (crumb of p.breadcrumb; track crumb; let last = $last) {\n <span class=\"ai-search__path-crumb\">{{ crumb }}</span>\n @if (!last) {\n <ao-icon [svg]=\"caretRightIcon\" size=\"sm\" class=\"ai-search__path-sep\" />\n }\n }\n </button>\n </div>\n }\n @for (group of visibleResultGroups(); track group.type) {\n <div class=\"ai-search__panel-section\">\n <h4 class=\"ai-search__section-title\">{{ group.label }}</h4>\n @for (r of group.results; track r.id) {\n <button type=\"button\" class=\"ai-search__result-row\" (click)=\"onResultClick(r)\">\n <span class=\"ai-search__result-primary\" [innerHTML]=\"highlight(r.primary)\"></span>\n </button>\n }\n </div>\n }\n @if (visibleAiSuggestions().length) {\n <div class=\"ai-search__panel-section\">\n <h4 class=\"ai-search__section-title\">KI-Vorschläge</h4>\n @for (r of visibleAiSuggestions(); track r.id) {\n <button type=\"button\" class=\"ai-search__ai-row\" (click)=\"onAiSuggestionClick(r)\">\n <ao-icon [svg]=\"sparkleIcon\" size=\"sm\" class=\"ai-search__ai-icon\" />\n <span [innerHTML]=\"highlight(r.primary)\"></span>\n </button>\n }\n </div>\n }\n @if (totalResultCount() > 0) {\n <div class=\"ai-search__result-summary\">\n {{ resultSummary() }}\n </div>\n }\n @if (hasMoreResults()) {\n <button type=\"button\" class=\"ai-search__view-all\" (click)=\"onViewAll()\">\n <span>Alle {{ totalResultCount() }} Ergebnisse anzeigen</span>\n <ao-icon [svg]=\"arrowRightIcon\" size=\"sm\" />\n </button>\n }\n }\n </div>\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { phosphorBell } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../../icon/icon.component';\n\n@Component({\n selector: 'ao-notification-button',\n imports: [IconComponent],\n template: `\n <button\n type=\"button\"\n class=\"notification-btn\"\n [disabled]=\"disabled()\"\n (click)=\"buttonClick.emit()\"\n aria-label=\"Notifications\"\n >\n <ao-icon [svg]=\"bellIcon\" size=\"sm\" />\n @if (count() > 0) {\n <span class=\"notification-btn__badge\">\n {{ displayCount() }}\n </span>\n }\n </button>\n `,\n styleUrl: './notification-button.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-notification-button',\n },\n})\nexport class NotificationButtonComponent {\n readonly count = input<number>(0);\n readonly maxCount = input<number>(99);\n readonly disabled = input<boolean>(false);\n readonly buttonClick = output<void>();\n protected readonly bellIcon = phosphorBell;\n\n protected displayCount(): string {\n const currentCount = this.count();\n const max = this.maxCount();\n return currentCount > max ? `${max}+` : `${currentCount}`;\n }\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { Injectable } from '@angular/core';\n\n/**\n * Global configuration\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class HandbookConfiguration {\n rootUrl: string = '';\n}\n\n/**\n * Parameters for `HandbookModule.forRoot()`\n */\nexport interface HandbookConfigurationParams {\n rootUrl?: string;\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpRequest, HttpParameterCodec, HttpParams, HttpHeaders, HttpContext } from '@angular/common/http';\n\n/**\n * Custom parameter codec to correctly handle the plus sign in parameter\n * values. See https://github.com/angular/angular/issues/18261\n */\nclass ParameterCodec implements HttpParameterCodec {\n encodeKey(key: string): string {\n return encodeURIComponent(key);\n }\n\n encodeValue(value: string): string {\n return encodeURIComponent(value);\n }\n\n decodeKey(key: string): string {\n return decodeURIComponent(key);\n }\n\n decodeValue(value: string): string {\n return decodeURIComponent(value);\n }\n}\nconst ParameterCodecInstance = new ParameterCodec();\n\n/**\n * Defines the options for appending a parameter\n */\ninterface ParameterOptions {\n style?: string;\n explode?: boolean;\n}\n\n/**\n * Base class for a parameter\n */\nabstract class Parameter {\n constructor(public name: string, public value: any, public options: ParameterOptions, defaultStyle: string, defaultExplode: boolean) {\n this.options = options || {};\n if (this.options.style === null || this.options.style === undefined) {\n this.options.style = defaultStyle;\n }\n if (this.options.explode === null || this.options.explode === undefined) {\n this.options.explode = defaultExplode;\n }\n }\n\n serializeValue(value: any, separator = ','): string {\n if (value === null || value === undefined) {\n return '';\n } else if (value instanceof Array) {\n return value.map(v => this.serializeValue(v).split(separator).join(encodeURIComponent(separator))).join(separator);\n } else if (typeof value === 'object') {\n const array: string[] = [];\n for (const key of Object.keys(value)) {\n let propVal = value[key];\n if (propVal !== null && propVal !== undefined) {\n propVal = this.serializeValue(propVal).split(separator).join(encodeURIComponent(separator));\n if (this.options.explode) {\n array.push(`${key}=${propVal}`);\n } else {\n array.push(key);\n array.push(propVal);\n }\n }\n }\n return array.join(separator);\n } else {\n return String(value);\n }\n }\n}\n\n/**\n * A parameter in the operation path\n */\nclass PathParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'simple', false);\n }\n\n append(path: string): string {\n let value = this.value;\n if (value === null || value === undefined) {\n value = '';\n }\n let prefix = this.options.style === 'label' ? '.' : '';\n let separator = this.options.explode ? prefix === '' ? ',' : prefix : ',';\n let alreadySerialized = false;\n if (this.options.style === 'matrix') {\n // The parameter name is just used as prefix, except in some cases...\n prefix = `;${this.name}=`;\n if (this.options.explode && typeof value === 'object') {\n prefix = ';';\n if (value instanceof Array) {\n // For arrays we have to repeat the name for each element\n value = value.map(v => `${this.name}=${this.serializeValue(v, ';')}`);\n value = value.join(';');\n alreadySerialized = true;\n } else {\n // For objects we have to put each the key / value pairs\n value = this.serializeValue(value, ';');\n alreadySerialized = true\n }\n }\n }\n value = prefix + (alreadySerialized ? value : this.serializeValue(value, separator));\n // Replace both the plain variable and the corresponding variant taking in the prefix and explode into account\n path = path.replace(`{${this.name}}`, value);\n path = path.replace(`{${prefix}${this.name}${this.options.explode ? '*' : ''}}`, value);\n return path;\n }\n\n // @ts-ignore\n serializeValue(value: any, separator = ','): string {\n var result = typeof value === 'string' ? encodeURIComponent(value) : super.serializeValue(value, separator);\n result = result.replace(/%3D/g, '=');\n result = result.replace(/%3B/g, ';');\n result = result.replace(/%2C/g, ',');\n return result;\n }\n}\n\n/**\n * A parameter in the query\n */\nclass QueryParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'form', true);\n }\n\n append(params: HttpParams): HttpParams {\n if (this.value instanceof Array) {\n // Array serialization\n if (this.options.explode) {\n for (const v of this.value) {\n params = params.append(this.name, this.serializeValue(v));\n }\n } else {\n const separator = this.options.style === 'spaceDelimited'\n ? ' ' : this.options.style === 'pipeDelimited'\n ? '|' : ',';\n return params.append(this.name, this.serializeValue(this.value, separator));\n }\n } else if (this.value !== null && typeof this.value === 'object') {\n // Object serialization\n if (this.options.style === 'deepObject') {\n // Append a parameter for each key, in the form `name[key]`\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n params = params.append(`${this.name}[${key}]`, this.serializeValue(propVal));\n }\n }\n } else if (this.options.explode) {\n // Append a parameter for each key without using the parameter name\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n params = params.append(key, this.serializeValue(propVal));\n }\n }\n } else {\n // Append a single parameter whose values are a comma-separated list of key,value,key,value...\n const array: any[] = [];\n for (const key of Object.keys(this.value)) {\n const propVal = this.value[key];\n if (propVal !== null && propVal !== undefined) {\n array.push(key);\n array.push(propVal);\n }\n }\n params = params.append(this.name, this.serializeValue(array));\n }\n } else if (this.value !== null && this.value !== undefined) {\n // Plain value\n params = params.append(this.name, this.serializeValue(this.value));\n }\n return params;\n }\n}\n\n/**\n * A parameter in the HTTP request header\n */\nclass HeaderParameter extends Parameter {\n constructor(name: string, value: any, options: ParameterOptions) {\n super(name, value, options, 'simple', false);\n }\n\n append(headers: HttpHeaders): HttpHeaders {\n if (this.value !== null && this.value !== undefined) {\n if (this.value instanceof Array) {\n for (const v of this.value) {\n headers = headers.append(this.name, this.serializeValue(v));\n }\n } else {\n headers = headers.append(this.name, this.serializeValue(this.value));\n }\n }\n return headers;\n }\n}\n\n/**\n * Helper to build http requests from parameters\n */\nexport class HandbookRequestBuilder {\n\n private _path = new Map<string, PathParameter>();\n private _query = new Map<string, QueryParameter>();\n private _header = new Map<string, HeaderParameter>();\n _bodyContent: any | null;\n _bodyContentType?: string;\n\n constructor(\n public rootUrl: string,\n public operationPath: string,\n public method: string) {\n }\n\n /**\n * Sets a path parameter\n */\n path(name: string, value: any, options?: ParameterOptions): void {\n this._path.set(name, new PathParameter(name, value, options || {}));\n }\n\n /**\n * Sets a query parameter\n */\n query(name: string, value: any, options?: ParameterOptions): void {\n this._query.set(name, new QueryParameter(name, value, options || {}));\n }\n\n /**\n * Sets a header parameter\n */\n header(name: string, value: any, options?: ParameterOptions): void {\n this._header.set(name, new HeaderParameter(name, value, options || {}));\n }\n\n /**\n * Sets the body content, along with the content type\n */\n body(value: any, contentType = 'application/json'): void {\n if (value instanceof Blob) {\n this._bodyContentType = value.type;\n } else {\n this._bodyContentType = contentType;\n }\n if (this._bodyContentType === 'application/x-www-form-urlencoded' && value !== null && typeof value === 'object') {\n // Handle URL-encoded data\n const pairs: Array<[string, string]> = [];\n for (const key of Object.keys(value)) {\n let val = value[key];\n if (!(val instanceof Array)) {\n val = [val];\n }\n for (const v of val) {\n const formValue = this.formDataValue(v);\n if (formValue !== null) {\n pairs.push([key, formValue]);\n }\n }\n }\n this._bodyContent = pairs.map(p => `${encodeURIComponent(p[0])}=${encodeURIComponent(p[1])}`).join('&');\n } else if (this._bodyContentType === 'multipart/form-data') {\n // Handle multipart form data\n const formData = new FormData();\n if (value !== null && value !== undefined) {\n for (const key of Object.keys(value)) {\n const val = value[key];\n if (val instanceof Array) {\n for (const v of val) {\n const toAppend = this.formDataValue(v);\n if (toAppend !== null) {\n formData.append(key, toAppend);\n }\n }\n } else {\n const toAppend = this.formDataValue(val);\n if (toAppend !== null) {\n formData.set(key, toAppend);\n }\n }\n }\n }\n this._bodyContent = formData;\n } else {\n // The body is the plain content\n this._bodyContent = value;\n }\n }\n\n private formDataValue(value: any): any {\n if (value === null || value === undefined) {\n return null;\n }\n if (value instanceof Blob) {\n return value;\n }\n if (typeof value === 'object') {\n return new Blob([JSON.stringify(value)], {type: 'application/json'})\n }\n return String(value);\n }\n\n /**\n * Builds the request with the current set parameters\n */\n build<T = any>(options?: {\n /** Which content types to accept */\n accept?: string;\n\n /** The expected response type */\n responseType?: 'json' | 'text' | 'blob' | 'arraybuffer';\n\n /** Whether to report progress on uploads / downloads */\n reportProgress?: boolean;\n\n /** Allow passing HttpContext for HttpClient */\n context?: HttpContext;\n }): HttpRequest<T> {\n\n options = options || {};\n\n // Path parameters\n let path = this.operationPath;\n for (const pathParam of this._path.values()) {\n path = pathParam.append(path);\n }\n const url = this.rootUrl + path;\n\n // Query parameters\n let httpParams = new HttpParams({\n encoder: ParameterCodecInstance\n });\n for (const queryParam of this._query.values()) {\n httpParams = queryParam.append(httpParams);\n }\n\n // Header parameters\n let httpHeaders = new HttpHeaders();\n if (options.accept) {\n httpHeaders = httpHeaders.append('Accept', options.accept);\n }\n for (const headerParam of this._header.values()) {\n httpHeaders = headerParam.append(httpHeaders);\n }\n\n // Request content headers\n if (this._bodyContentType && !(this._bodyContent instanceof FormData)) {\n httpHeaders = httpHeaders.set('Content-Type', this._bodyContentType);\n }\n\n // Perform the request\n return new HttpRequest<T>(this.method.toUpperCase(), url, this._bodyContent, {\n params: httpParams,\n headers: httpHeaders,\n responseType: options.responseType,\n reportProgress: options.reportProgress,\n context: options.context\n });\n }\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { HandbookConfiguration } from './handbook-configuration';\n\n/**\n * Base class for services\n */\n@Injectable()\nexport class HandbookBaseService {\n constructor(\n protected config: HandbookConfiguration,\n protected http: HttpClient\n ) {\n }\n\n private _rootUrl?: string;\n\n /**\n * Returns the root url for all operations in this service. If not set directly in this\n * service, will fallback to `HandbookConfiguration.rootUrl`.\n */\n get rootUrl(): string {\n return this._rootUrl || this.config.rootUrl;\n }\n\n /**\n * Sets the root URL for API operations in this service.\n */\n set rootUrl(rootUrl: string) {\n this._rootUrl = rootUrl;\n }\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\n\nexport interface AppControllerGetHealthCheck$Params {\n}\n\nexport function appControllerGetHealthCheck(http: HttpClient, rootUrl: string, params?: AppControllerGetHealthCheck$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const rb = new HandbookRequestBuilder(rootUrl, appControllerGetHealthCheck.PATH, 'get');\n if (params) {\n }\n\n return http.request(\n rb.build({ responseType: 'text', accept: '*/*', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return (r as HttpResponse<any>).clone({ body: undefined }) as HandbookHttpResponse<void>;\n })\n );\n}\n\nappControllerGetHealthCheck.PATH = '/handbook-api/health';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { HandbookBaseService } from '../handbook-base-service';\nimport { HandbookConfiguration } from '../handbook-configuration';\nimport { HandbookHttpResponse } from '../handbook-http-response';\n\nimport { appControllerGetHealthCheck } from '../fn/app/app-controller-get-health-check';\nimport { AppControllerGetHealthCheck$Params } from '../fn/app/app-controller-get-health-check';\n\n@Injectable({ providedIn: 'root' })\nexport class AppService extends HandbookBaseService {\n constructor(config: HandbookConfiguration, http: HttpClient) {\n super(config, http);\n }\n\n /** Path part for operation `appControllerGetHealthCheck()` */\n static readonly AppControllerGetHealthCheckPath = '/handbook-api/health';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `appControllerGetHealthCheck()` instead.\n *\n * This method doesn't expect any request body.\n */\n appControllerGetHealthCheck$Response(params?: AppControllerGetHealthCheck$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const obs = appControllerGetHealthCheck(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `appControllerGetHealthCheck$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n appControllerGetHealthCheck(params?: AppControllerGetHealthCheck$Params, context?: HttpContext): Observable<void> {\n const resp = this.appControllerGetHealthCheck$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<void>): void => r.body)\n );\n }\n\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { HandbookEntry } from '../../models/handbook-entry';\nimport { HandbookEntryDto } from '../../models/handbook-entry-dto';\n\nexport interface HandbookEntryControllerCreateHandbookEntry$Params {\n body: HandbookEntryDto\n}\n\nexport function handbookEntryControllerCreateHandbookEntry(http: HttpClient, rootUrl: string, params: HandbookEntryControllerCreateHandbookEntry$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const rb = new HandbookRequestBuilder(rootUrl, handbookEntryControllerCreateHandbookEntry.PATH, 'post');\n if (params) {\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<HandbookEntry>;\n })\n );\n}\n\nhandbookEntryControllerCreateHandbookEntry.PATH = '/handbook-api/handbook-entry';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { HandbookEntry } from '../../models/handbook-entry';\n\nexport interface HandbookEntryControllerDeleteHandbookEntry$Params {\n id: string;\n}\n\nexport function handbookEntryControllerDeleteHandbookEntry(http: HttpClient, rootUrl: string, params: HandbookEntryControllerDeleteHandbookEntry$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const rb = new HandbookRequestBuilder(rootUrl, handbookEntryControllerDeleteHandbookEntry.PATH, 'delete');\n if (params) {\n rb.path('id', params.id, {});\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<HandbookEntry>;\n })\n );\n}\n\nhandbookEntryControllerDeleteHandbookEntry.PATH = '/handbook-api/handbook-entry/{id}';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { HandbookEntry } from '../../models/handbook-entry';\n\nexport interface HandbookEntryControllerFindAllHandbookEntries$Params {\n}\n\nexport function handbookEntryControllerFindAllHandbookEntries(http: HttpClient, rootUrl: string, params?: HandbookEntryControllerFindAllHandbookEntries$Params, context?: HttpContext): Observable<HandbookHttpResponse<Array<HandbookEntry>>> {\n const rb = new HandbookRequestBuilder(rootUrl, handbookEntryControllerFindAllHandbookEntries.PATH, 'get');\n if (params) {\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<Array<HandbookEntry>>;\n })\n );\n}\n\nhandbookEntryControllerFindAllHandbookEntries.PATH = '/handbook-api/handbook-entry';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { HandbookOverviewResponse } from '../../models/handbook-overview-response';\n\nexport interface HandbookEntryControllerFindAllHandbookEntriesForOverview$Params {\n app: string;\n}\n\nexport function handbookEntryControllerFindAllHandbookEntriesForOverview(http: HttpClient, rootUrl: string, params: HandbookEntryControllerFindAllHandbookEntriesForOverview$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookOverviewResponse>> {\n const rb = new HandbookRequestBuilder(rootUrl, handbookEntryControllerFindAllHandbookEntriesForOverview.PATH, 'get');\n if (params) {\n rb.path('app', params.app, {});\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<HandbookOverviewResponse>;\n })\n );\n}\n\nhandbookEntryControllerFindAllHandbookEntriesForOverview.PATH = '/handbook-api/handbook-entry/overview/{app}';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { HandbookTagsResponse } from '../../models/handbook-tags-response';\n\nexport interface HandbookEntryControllerFindAllTags$Params {\n\n/**\n * The search query to filter handbook tags\n */\n searchQuery: string;\n}\n\nexport function handbookEntryControllerFindAllTags(http: HttpClient, rootUrl: string, params: HandbookEntryControllerFindAllTags$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookTagsResponse>> {\n const rb = new HandbookRequestBuilder(rootUrl, handbookEntryControllerFindAllTags.PATH, 'get');\n if (params) {\n rb.query('searchQuery', params.searchQuery, {});\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<HandbookTagsResponse>;\n })\n );\n}\n\nhandbookEntryControllerFindAllTags.PATH = '/handbook-api/handbook-entry/tags';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { HandbookEntry } from '../../models/handbook-entry';\n\nexport interface HandbookEntryControllerFindHandbookEntryById$Params {\n id: string;\n}\n\nexport function handbookEntryControllerFindHandbookEntryById(http: HttpClient, rootUrl: string, params: HandbookEntryControllerFindHandbookEntryById$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const rb = new HandbookRequestBuilder(rootUrl, handbookEntryControllerFindHandbookEntryById.PATH, 'get');\n if (params) {\n rb.path('id', params.id, {});\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<HandbookEntry>;\n })\n );\n}\n\nhandbookEntryControllerFindHandbookEntryById.PATH = '/handbook-api/handbook-entry/{id}';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { HandbookEntry } from '../../models/handbook-entry';\nimport { VoiceHandbookEntryDto } from '../../models/voice-handbook-entry-dto';\n\nexport interface HandbookEntryControllerGenerateHandbook$Params {\n body: VoiceHandbookEntryDto\n}\n\nexport function handbookEntryControllerGenerateHandbook(http: HttpClient, rootUrl: string, params: HandbookEntryControllerGenerateHandbook$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const rb = new HandbookRequestBuilder(rootUrl, handbookEntryControllerGenerateHandbook.PATH, 'post');\n if (params) {\n rb.body(params.body, 'multipart/form-data');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<HandbookEntry>;\n })\n );\n}\n\nhandbookEntryControllerGenerateHandbook.PATH = '/handbook-api/handbook-entry/generate-from-voice';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { HandbookEntry } from '../../models/handbook-entry';\nimport { VoiceHandbookEntryDto } from '../../models/voice-handbook-entry-dto';\n\nexport interface HandbookEntryControllerGenerateHandbookFromText$Params {\n body: VoiceHandbookEntryDto\n}\n\nexport function handbookEntryControllerGenerateHandbookFromText(http: HttpClient, rootUrl: string, params: HandbookEntryControllerGenerateHandbookFromText$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const rb = new HandbookRequestBuilder(rootUrl, handbookEntryControllerGenerateHandbookFromText.PATH, 'post');\n if (params) {\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<HandbookEntry>;\n })\n );\n}\n\nhandbookEntryControllerGenerateHandbookFromText.PATH = '/handbook-api/handbook-entry/generate-from-text';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { HandbookVoiceResponse } from '../../models/handbook-voice-response';\nimport { VoiceHandbookEntryDto } from '../../models/voice-handbook-entry-dto';\n\nexport interface HandbookEntryControllerGetTextFromVoice$Params {\n body: VoiceHandbookEntryDto\n}\n\nexport function handbookEntryControllerGetTextFromVoice(http: HttpClient, rootUrl: string, params: HandbookEntryControllerGetTextFromVoice$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookVoiceResponse>> {\n const rb = new HandbookRequestBuilder(rootUrl, handbookEntryControllerGetTextFromVoice.PATH, 'post');\n if (params) {\n rb.body(params.body, 'multipart/form-data');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<HandbookVoiceResponse>;\n })\n );\n}\n\nhandbookEntryControllerGetTextFromVoice.PATH = '/handbook-api/handbook-entry/get-text-from-voice';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { HandbookEntry } from '../../models/handbook-entry';\nimport { HandbookEntryDto } from '../../models/handbook-entry-dto';\n\nexport interface HandbookEntryControllerUpdateHandbookEntry$Params {\n id: string;\n body: HandbookEntryDto\n}\n\nexport function handbookEntryControllerUpdateHandbookEntry(http: HttpClient, rootUrl: string, params: HandbookEntryControllerUpdateHandbookEntry$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const rb = new HandbookRequestBuilder(rootUrl, handbookEntryControllerUpdateHandbookEntry.PATH, 'put');\n if (params) {\n rb.path('id', params.id, {});\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<HandbookEntry>;\n })\n );\n}\n\nhandbookEntryControllerUpdateHandbookEntry.PATH = '/handbook-api/handbook-entry/{id}';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { HandbookBaseService } from '../handbook-base-service';\nimport { HandbookConfiguration } from '../handbook-configuration';\nimport { HandbookHttpResponse } from '../handbook-http-response';\n\nimport { HandbookEntry } from '../models/handbook-entry';\nimport { handbookEntryControllerCreateHandbookEntry } from '../fn/handbook-entries/handbook-entry-controller-create-handbook-entry';\nimport { HandbookEntryControllerCreateHandbookEntry$Params } from '../fn/handbook-entries/handbook-entry-controller-create-handbook-entry';\nimport { handbookEntryControllerDeleteHandbookEntry } from '../fn/handbook-entries/handbook-entry-controller-delete-handbook-entry';\nimport { HandbookEntryControllerDeleteHandbookEntry$Params } from '../fn/handbook-entries/handbook-entry-controller-delete-handbook-entry';\nimport { handbookEntryControllerFindAllHandbookEntries } from '../fn/handbook-entries/handbook-entry-controller-find-all-handbook-entries';\nimport { HandbookEntryControllerFindAllHandbookEntries$Params } from '../fn/handbook-entries/handbook-entry-controller-find-all-handbook-entries';\nimport { handbookEntryControllerFindAllHandbookEntriesForOverview } from '../fn/handbook-entries/handbook-entry-controller-find-all-handbook-entries-for-overview';\nimport { HandbookEntryControllerFindAllHandbookEntriesForOverview$Params } from '../fn/handbook-entries/handbook-entry-controller-find-all-handbook-entries-for-overview';\nimport { handbookEntryControllerFindAllTags } from '../fn/handbook-entries/handbook-entry-controller-find-all-tags';\nimport { HandbookEntryControllerFindAllTags$Params } from '../fn/handbook-entries/handbook-entry-controller-find-all-tags';\nimport { handbookEntryControllerFindHandbookEntryById } from '../fn/handbook-entries/handbook-entry-controller-find-handbook-entry-by-id';\nimport { HandbookEntryControllerFindHandbookEntryById$Params } from '../fn/handbook-entries/handbook-entry-controller-find-handbook-entry-by-id';\nimport { handbookEntryControllerGenerateHandbook } from '../fn/handbook-entries/handbook-entry-controller-generate-handbook';\nimport { HandbookEntryControllerGenerateHandbook$Params } from '../fn/handbook-entries/handbook-entry-controller-generate-handbook';\nimport { handbookEntryControllerGenerateHandbookFromText } from '../fn/handbook-entries/handbook-entry-controller-generate-handbook-from-text';\nimport { HandbookEntryControllerGenerateHandbookFromText$Params } from '../fn/handbook-entries/handbook-entry-controller-generate-handbook-from-text';\nimport { handbookEntryControllerGetTextFromVoice } from '../fn/handbook-entries/handbook-entry-controller-get-text-from-voice';\nimport { HandbookEntryControllerGetTextFromVoice$Params } from '../fn/handbook-entries/handbook-entry-controller-get-text-from-voice';\nimport { handbookEntryControllerUpdateHandbookEntry } from '../fn/handbook-entries/handbook-entry-controller-update-handbook-entry';\nimport { HandbookEntryControllerUpdateHandbookEntry$Params } from '../fn/handbook-entries/handbook-entry-controller-update-handbook-entry';\nimport { HandbookOverviewResponse } from '../models/handbook-overview-response';\nimport { HandbookTagsResponse } from '../models/handbook-tags-response';\nimport { HandbookVoiceResponse } from '../models/handbook-voice-response';\n\n@Injectable({ providedIn: 'root' })\nexport class HandbookEntriesService extends HandbookBaseService {\n constructor(config: HandbookConfiguration, http: HttpClient) {\n super(config, http);\n }\n\n /** Path part for operation `handbookEntryControllerFindAllHandbookEntries()` */\n static readonly HandbookEntryControllerFindAllHandbookEntriesPath = '/handbook-api/handbook-entry';\n\n /**\n * Get all handbook entries.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `handbookEntryControllerFindAllHandbookEntries()` instead.\n *\n * This method doesn't expect any request body.\n */\n handbookEntryControllerFindAllHandbookEntries$Response(params?: HandbookEntryControllerFindAllHandbookEntries$Params, context?: HttpContext): Observable<HandbookHttpResponse<Array<HandbookEntry>>> {\n const obs = handbookEntryControllerFindAllHandbookEntries(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get all handbook entries.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `handbookEntryControllerFindAllHandbookEntries$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n handbookEntryControllerFindAllHandbookEntries(params?: HandbookEntryControllerFindAllHandbookEntries$Params, context?: HttpContext): Observable<Array<HandbookEntry>> {\n const resp = this.handbookEntryControllerFindAllHandbookEntries$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<Array<HandbookEntry>>): Array<HandbookEntry> => r.body)\n );\n }\n\n /** Path part for operation `handbookEntryControllerCreateHandbookEntry()` */\n static readonly HandbookEntryControllerCreateHandbookEntryPath = '/handbook-api/handbook-entry';\n\n /**\n * Create a new handbook entry.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `handbookEntryControllerCreateHandbookEntry()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n handbookEntryControllerCreateHandbookEntry$Response(params: HandbookEntryControllerCreateHandbookEntry$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const obs = handbookEntryControllerCreateHandbookEntry(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Create a new handbook entry.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `handbookEntryControllerCreateHandbookEntry$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n handbookEntryControllerCreateHandbookEntry(params: HandbookEntryControllerCreateHandbookEntry$Params, context?: HttpContext): Observable<HandbookEntry> {\n const resp = this.handbookEntryControllerCreateHandbookEntry$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<HandbookEntry>): HandbookEntry => r.body)\n );\n }\n\n /** Path part for operation `handbookEntryControllerFindAllHandbookEntriesForOverview()` */\n static readonly HandbookEntryControllerFindAllHandbookEntriesForOverviewPath = '/handbook-api/handbook-entry/overview/{app}';\n\n /**\n * Get all handbook entries for overview.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `handbookEntryControllerFindAllHandbookEntriesForOverview()` instead.\n *\n * This method doesn't expect any request body.\n */\n handbookEntryControllerFindAllHandbookEntriesForOverview$Response(params: HandbookEntryControllerFindAllHandbookEntriesForOverview$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookOverviewResponse>> {\n const obs = handbookEntryControllerFindAllHandbookEntriesForOverview(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get all handbook entries for overview.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `handbookEntryControllerFindAllHandbookEntriesForOverview$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n handbookEntryControllerFindAllHandbookEntriesForOverview(params: HandbookEntryControllerFindAllHandbookEntriesForOverview$Params, context?: HttpContext): Observable<HandbookOverviewResponse> {\n const resp = this.handbookEntryControllerFindAllHandbookEntriesForOverview$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<HandbookOverviewResponse>): HandbookOverviewResponse => r.body)\n );\n }\n\n /** Path part for operation `handbookEntryControllerFindAllTags()` */\n static readonly HandbookEntryControllerFindAllTagsPath = '/handbook-api/handbook-entry/tags';\n\n /**\n * Get all tags from handbook entries.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `handbookEntryControllerFindAllTags()` instead.\n *\n * This method doesn't expect any request body.\n */\n handbookEntryControllerFindAllTags$Response(params: HandbookEntryControllerFindAllTags$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookTagsResponse>> {\n const obs = handbookEntryControllerFindAllTags(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get all tags from handbook entries.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `handbookEntryControllerFindAllTags$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n handbookEntryControllerFindAllTags(params: HandbookEntryControllerFindAllTags$Params, context?: HttpContext): Observable<HandbookTagsResponse> {\n const resp = this.handbookEntryControllerFindAllTags$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<HandbookTagsResponse>): HandbookTagsResponse => r.body)\n );\n }\n\n /** Path part for operation `handbookEntryControllerFindHandbookEntryById()` */\n static readonly HandbookEntryControllerFindHandbookEntryByIdPath = '/handbook-api/handbook-entry/{id}';\n\n /**\n * Get a handbook entry by ID.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `handbookEntryControllerFindHandbookEntryById()` instead.\n *\n * This method doesn't expect any request body.\n */\n handbookEntryControllerFindHandbookEntryById$Response(params: HandbookEntryControllerFindHandbookEntryById$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const obs = handbookEntryControllerFindHandbookEntryById(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get a handbook entry by ID.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `handbookEntryControllerFindHandbookEntryById$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n handbookEntryControllerFindHandbookEntryById(params: HandbookEntryControllerFindHandbookEntryById$Params, context?: HttpContext): Observable<HandbookEntry> {\n const resp = this.handbookEntryControllerFindHandbookEntryById$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<HandbookEntry>): HandbookEntry => r.body)\n );\n }\n\n /** Path part for operation `handbookEntryControllerUpdateHandbookEntry()` */\n static readonly HandbookEntryControllerUpdateHandbookEntryPath = '/handbook-api/handbook-entry/{id}';\n\n /**\n * Update a handbook entry.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `handbookEntryControllerUpdateHandbookEntry()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n handbookEntryControllerUpdateHandbookEntry$Response(params: HandbookEntryControllerUpdateHandbookEntry$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const obs = handbookEntryControllerUpdateHandbookEntry(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Update a handbook entry.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `handbookEntryControllerUpdateHandbookEntry$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n handbookEntryControllerUpdateHandbookEntry(params: HandbookEntryControllerUpdateHandbookEntry$Params, context?: HttpContext): Observable<HandbookEntry> {\n const resp = this.handbookEntryControllerUpdateHandbookEntry$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<HandbookEntry>): HandbookEntry => r.body)\n );\n }\n\n /** Path part for operation `handbookEntryControllerDeleteHandbookEntry()` */\n static readonly HandbookEntryControllerDeleteHandbookEntryPath = '/handbook-api/handbook-entry/{id}';\n\n /**\n * Delete a handbook entry.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `handbookEntryControllerDeleteHandbookEntry()` instead.\n *\n * This method doesn't expect any request body.\n */\n handbookEntryControllerDeleteHandbookEntry$Response(params: HandbookEntryControllerDeleteHandbookEntry$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const obs = handbookEntryControllerDeleteHandbookEntry(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Delete a handbook entry.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `handbookEntryControllerDeleteHandbookEntry$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n handbookEntryControllerDeleteHandbookEntry(params: HandbookEntryControllerDeleteHandbookEntry$Params, context?: HttpContext): Observable<HandbookEntry> {\n const resp = this.handbookEntryControllerDeleteHandbookEntry$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<HandbookEntry>): HandbookEntry => r.body)\n );\n }\n\n /** Path part for operation `handbookEntryControllerGetTextFromVoice()` */\n static readonly HandbookEntryControllerGetTextFromVoicePath = '/handbook-api/handbook-entry/get-text-from-voice';\n\n /**\n * Get text from voice recording.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `handbookEntryControllerGetTextFromVoice()` instead.\n *\n * This method sends `multipart/form-data` and handles request body of type `multipart/form-data`.\n */\n handbookEntryControllerGetTextFromVoice$Response(params: HandbookEntryControllerGetTextFromVoice$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookVoiceResponse>> {\n const obs = handbookEntryControllerGetTextFromVoice(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get text from voice recording.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `handbookEntryControllerGetTextFromVoice$Response()` instead.\n *\n * This method sends `multipart/form-data` and handles request body of type `multipart/form-data`.\n */\n handbookEntryControllerGetTextFromVoice(params: HandbookEntryControllerGetTextFromVoice$Params, context?: HttpContext): Observable<HandbookVoiceResponse> {\n const resp = this.handbookEntryControllerGetTextFromVoice$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<HandbookVoiceResponse>): HandbookVoiceResponse => r.body)\n );\n }\n\n /** Path part for operation `handbookEntryControllerGenerateHandbookFromText()` */\n static readonly HandbookEntryControllerGenerateHandbookFromTextPath = '/handbook-api/handbook-entry/generate-from-text';\n\n /**\n * Generate handbook entry from voice text.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `handbookEntryControllerGenerateHandbookFromText()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n handbookEntryControllerGenerateHandbookFromText$Response(params: HandbookEntryControllerGenerateHandbookFromText$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const obs = handbookEntryControllerGenerateHandbookFromText(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Generate handbook entry from voice text.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `handbookEntryControllerGenerateHandbookFromText$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n handbookEntryControllerGenerateHandbookFromText(params: HandbookEntryControllerGenerateHandbookFromText$Params, context?: HttpContext): Observable<HandbookEntry> {\n const resp = this.handbookEntryControllerGenerateHandbookFromText$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<HandbookEntry>): HandbookEntry => r.body)\n );\n }\n\n /** Path part for operation `handbookEntryControllerGenerateHandbook()` */\n static readonly HandbookEntryControllerGenerateHandbookPath = '/handbook-api/handbook-entry/generate-from-voice';\n\n /**\n * Generate handbook entry from voice recording.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `handbookEntryControllerGenerateHandbook()` instead.\n *\n * This method sends `multipart/form-data` and handles request body of type `multipart/form-data`.\n */\n handbookEntryControllerGenerateHandbook$Response(params: HandbookEntryControllerGenerateHandbook$Params, context?: HttpContext): Observable<HandbookHttpResponse<HandbookEntry>> {\n const obs = handbookEntryControllerGenerateHandbook(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Generate handbook entry from voice recording.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `handbookEntryControllerGenerateHandbook$Response()` instead.\n *\n * This method sends `multipart/form-data` and handles request body of type `multipart/form-data`.\n */\n handbookEntryControllerGenerateHandbook(params: HandbookEntryControllerGenerateHandbook$Params, context?: HttpContext): Observable<HandbookEntry> {\n const resp = this.handbookEntryControllerGenerateHandbook$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<HandbookEntry>): HandbookEntry => r.body)\n );\n }\n\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { ChatResult } from '../../models/chat-result';\n\nexport interface ConversationControllerConversation$Params {\n\n/**\n * The question to search for\n */\n question?: string;\n\n/**\n * The thread ID of the search\n */\n threadId?: string;\n\n/**\n * The app to use for the search\n */\n app?: string;\n\n/**\n * The current URL path\n */\n currentUrlPath?: string;\n}\n\nexport function conversationControllerConversation(http: HttpClient, rootUrl: string, params?: ConversationControllerConversation$Params, context?: HttpContext): Observable<HandbookHttpResponse<ChatResult>> {\n const rb = new HandbookRequestBuilder(rootUrl, conversationControllerConversation.PATH, 'get');\n if (params) {\n rb.query('question', params.question, {});\n rb.query('threadId', params.threadId, {});\n rb.query('app', params.app, {});\n rb.query('currentUrlPath', params.currentUrlPath, {});\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<ChatResult>;\n })\n );\n}\n\nconversationControllerConversation.PATH = '/handbook-api/conversation';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { ConversationDetailResult } from '../../models/conversation-detail-result';\n\nexport interface ConversationControllerGetConversationDetail$Params {\n id: string;\n}\n\nexport function conversationControllerGetConversationDetail(http: HttpClient, rootUrl: string, params: ConversationControllerGetConversationDetail$Params, context?: HttpContext): Observable<HandbookHttpResponse<ConversationDetailResult>> {\n const rb = new HandbookRequestBuilder(rootUrl, conversationControllerGetConversationDetail.PATH, 'get');\n if (params) {\n rb.path('id', params.id, {});\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<ConversationDetailResult>;\n })\n );\n}\n\nconversationControllerGetConversationDetail.PATH = '/handbook-api/conversation/{id}/detail';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { ConversationOverviewResult } from '../../models/conversation-overview-result';\n\nexport interface ConversationControllerGetConversationOverview$Params {\n}\n\nexport function conversationControllerGetConversationOverview(http: HttpClient, rootUrl: string, params?: ConversationControllerGetConversationOverview$Params, context?: HttpContext): Observable<HandbookHttpResponse<Array<ConversationOverviewResult>>> {\n const rb = new HandbookRequestBuilder(rootUrl, conversationControllerGetConversationOverview.PATH, 'get');\n if (params) {\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<Array<ConversationOverviewResult>>;\n })\n );\n}\n\nconversationControllerGetConversationOverview.PATH = '/handbook-api/conversation/overview';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { ContextDto } from '../../models/context-dto';\nimport { ContextResult } from '../../models/context-result';\n\nexport interface ConversationControllerGetRelevantContext$Params {\n body: ContextDto\n}\n\nexport function conversationControllerGetRelevantContext(http: HttpClient, rootUrl: string, params: ConversationControllerGetRelevantContext$Params, context?: HttpContext): Observable<HandbookHttpResponse<ContextResult>> {\n const rb = new HandbookRequestBuilder(rootUrl, conversationControllerGetRelevantContext.PATH, 'post');\n if (params) {\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<ContextResult>;\n })\n );\n}\n\nconversationControllerGetRelevantContext.PATH = '/handbook-api/conversation/context';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { HandbookBaseService } from '../handbook-base-service';\nimport { HandbookConfiguration } from '../handbook-configuration';\nimport { HandbookHttpResponse } from '../handbook-http-response';\n\nimport { ChatResult } from '../models/chat-result';\nimport { ContextResult } from '../models/context-result';\nimport { conversationControllerConversation } from '../fn/conversation/conversation-controller-conversation';\nimport { ConversationControllerConversation$Params } from '../fn/conversation/conversation-controller-conversation';\nimport { conversationControllerGetConversationDetail } from '../fn/conversation/conversation-controller-get-conversation-detail';\nimport { ConversationControllerGetConversationDetail$Params } from '../fn/conversation/conversation-controller-get-conversation-detail';\nimport { conversationControllerGetConversationOverview } from '../fn/conversation/conversation-controller-get-conversation-overview';\nimport { ConversationControllerGetConversationOverview$Params } from '../fn/conversation/conversation-controller-get-conversation-overview';\nimport { conversationControllerGetRelevantContext } from '../fn/conversation/conversation-controller-get-relevant-context';\nimport { ConversationControllerGetRelevantContext$Params } from '../fn/conversation/conversation-controller-get-relevant-context';\nimport { ConversationDetailResult } from '../models/conversation-detail-result';\nimport { ConversationOverviewResult } from '../models/conversation-overview-result';\n\n@Injectable({ providedIn: 'root' })\nexport class ConversationService extends HandbookBaseService {\n constructor(config: HandbookConfiguration, http: HttpClient) {\n super(config, http);\n }\n\n /** Path part for operation `conversationControllerConversation()` */\n static readonly ConversationControllerConversationPath = '/handbook-api/conversation';\n\n /**\n * Ask AI.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `conversationControllerConversation()` instead.\n *\n * This method doesn't expect any request body.\n */\n conversationControllerConversation$Response(params?: ConversationControllerConversation$Params, context?: HttpContext): Observable<HandbookHttpResponse<ChatResult>> {\n const obs = conversationControllerConversation(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Ask AI.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `conversationControllerConversation$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n conversationControllerConversation(params?: ConversationControllerConversation$Params, context?: HttpContext): Observable<ChatResult> {\n const resp = this.conversationControllerConversation$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<ChatResult>): ChatResult => r.body)\n );\n }\n\n /** Path part for operation `conversationControllerGetConversationOverview()` */\n static readonly ConversationControllerGetConversationOverviewPath = '/handbook-api/conversation/overview';\n\n /**\n * Get conversation overview.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `conversationControllerGetConversationOverview()` instead.\n *\n * This method doesn't expect any request body.\n */\n conversationControllerGetConversationOverview$Response(params?: ConversationControllerGetConversationOverview$Params, context?: HttpContext): Observable<HandbookHttpResponse<Array<ConversationOverviewResult>>> {\n const obs = conversationControllerGetConversationOverview(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get conversation overview.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `conversationControllerGetConversationOverview$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n conversationControllerGetConversationOverview(params?: ConversationControllerGetConversationOverview$Params, context?: HttpContext): Observable<Array<ConversationOverviewResult>> {\n const resp = this.conversationControllerGetConversationOverview$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<Array<ConversationOverviewResult>>): Array<ConversationOverviewResult> => r.body)\n );\n }\n\n /** Path part for operation `conversationControllerGetRelevantContext()` */\n static readonly ConversationControllerGetRelevantContextPath = '/handbook-api/conversation/context';\n\n /**\n * Get relevant context for a query.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `conversationControllerGetRelevantContext()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n conversationControllerGetRelevantContext$Response(params: ConversationControllerGetRelevantContext$Params, context?: HttpContext): Observable<HandbookHttpResponse<ContextResult>> {\n const obs = conversationControllerGetRelevantContext(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get relevant context for a query.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `conversationControllerGetRelevantContext$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n conversationControllerGetRelevantContext(params: ConversationControllerGetRelevantContext$Params, context?: HttpContext): Observable<ContextResult> {\n const resp = this.conversationControllerGetRelevantContext$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<ContextResult>): ContextResult => r.body)\n );\n }\n\n /** Path part for operation `conversationControllerGetConversationDetail()` */\n static readonly ConversationControllerGetConversationDetailPath = '/handbook-api/conversation/{id}/detail';\n\n /**\n * Get conversation detail.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `conversationControllerGetConversationDetail()` instead.\n *\n * This method doesn't expect any request body.\n */\n conversationControllerGetConversationDetail$Response(params: ConversationControllerGetConversationDetail$Params, context?: HttpContext): Observable<HandbookHttpResponse<ConversationDetailResult>> {\n const obs = conversationControllerGetConversationDetail(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get conversation detail.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `conversationControllerGetConversationDetail$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n conversationControllerGetConversationDetail(params: ConversationControllerGetConversationDetail$Params, context?: HttpContext): Observable<ConversationDetailResult> {\n const resp = this.conversationControllerGetConversationDetail$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<ConversationDetailResult>): ConversationDetailResult => r.body)\n );\n }\n\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\n\nexport interface LichtbotControllerGetImportAdresses$Params {\n}\n\nexport function lichtbotControllerGetImportAdresses(http: HttpClient, rootUrl: string, params?: LichtbotControllerGetImportAdresses$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const rb = new HandbookRequestBuilder(rootUrl, lichtbotControllerGetImportAdresses.PATH, 'get');\n if (params) {\n }\n\n return http.request(\n rb.build({ responseType: 'text', accept: '*/*', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return (r as HttpResponse<any>).clone({ body: undefined }) as HandbookHttpResponse<void>;\n })\n );\n}\n\nlichtbotControllerGetImportAdresses.PATH = '/handbook-api/lichtbot/import-adresses';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\n\nexport interface LichtbotControllerGetImportHistory$Params {\n}\n\nexport function lichtbotControllerGetImportHistory(http: HttpClient, rootUrl: string, params?: LichtbotControllerGetImportHistory$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const rb = new HandbookRequestBuilder(rootUrl, lichtbotControllerGetImportHistory.PATH, 'get');\n if (params) {\n }\n\n return http.request(\n rb.build({ responseType: 'text', accept: '*/*', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return (r as HttpResponse<any>).clone({ body: undefined }) as HandbookHttpResponse<void>;\n })\n );\n}\n\nlichtbotControllerGetImportHistory.PATH = '/handbook-api/lichtbot/import-history';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { JoinLichtbotDto } from '../../models/join-lichtbot-dto';\n\nexport interface LichtbotControllerJoinRoom$Params {\n body: JoinLichtbotDto\n}\n\nexport function lichtbotControllerJoinRoom(http: HttpClient, rootUrl: string, params: LichtbotControllerJoinRoom$Params, context?: HttpContext): Observable<HandbookHttpResponse<JoinLichtbotDto>> {\n const rb = new HandbookRequestBuilder(rootUrl, lichtbotControllerJoinRoom.PATH, 'post');\n if (params) {\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<JoinLichtbotDto>;\n })\n );\n}\n\nlichtbotControllerJoinRoom.PATH = '/handbook-api/lichtbot/join';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { LeaveLichtbotDto } from '../../models/leave-lichtbot-dto';\n\nexport interface LichtbotControllerLeaveRoom$Params {\n body: LeaveLichtbotDto\n}\n\nexport function lichtbotControllerLeaveRoom(http: HttpClient, rootUrl: string, params: LichtbotControllerLeaveRoom$Params, context?: HttpContext): Observable<HandbookHttpResponse<LeaveLichtbotDto>> {\n const rb = new HandbookRequestBuilder(rootUrl, lichtbotControllerLeaveRoom.PATH, 'post');\n if (params) {\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<LeaveLichtbotDto>;\n })\n );\n}\n\nlichtbotControllerLeaveRoom.PATH = '/handbook-api/lichtbot/leave';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { LichtbotClientMessageDto } from '../../models/lichtbot-client-message-dto';\n\nexport interface LichtbotControllerReciveMessage$Params {\n body: LichtbotClientMessageDto\n}\n\nexport function lichtbotControllerReciveMessage(http: HttpClient, rootUrl: string, params: LichtbotControllerReciveMessage$Params, context?: HttpContext): Observable<HandbookHttpResponse<LichtbotClientMessageDto>> {\n const rb = new HandbookRequestBuilder(rootUrl, lichtbotControllerReciveMessage.PATH, 'post');\n if (params) {\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<LichtbotClientMessageDto>;\n })\n );\n}\n\nlichtbotControllerReciveMessage.PATH = '/handbook-api/lichtbot/message';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { HandbookBaseService } from '../handbook-base-service';\nimport { HandbookConfiguration } from '../handbook-configuration';\nimport { HandbookHttpResponse } from '../handbook-http-response';\n\nimport { JoinLichtbotDto } from '../models/join-lichtbot-dto';\nimport { LeaveLichtbotDto } from '../models/leave-lichtbot-dto';\nimport { LichtbotClientMessageDto } from '../models/lichtbot-client-message-dto';\nimport { lichtbotControllerGetImportAdresses } from '../fn/lichtbot/lichtbot-controller-get-import-adresses';\nimport { LichtbotControllerGetImportAdresses$Params } from '../fn/lichtbot/lichtbot-controller-get-import-adresses';\nimport { lichtbotControllerGetImportHistory } from '../fn/lichtbot/lichtbot-controller-get-import-history';\nimport { LichtbotControllerGetImportHistory$Params } from '../fn/lichtbot/lichtbot-controller-get-import-history';\nimport { lichtbotControllerJoinRoom } from '../fn/lichtbot/lichtbot-controller-join-room';\nimport { LichtbotControllerJoinRoom$Params } from '../fn/lichtbot/lichtbot-controller-join-room';\nimport { lichtbotControllerLeaveRoom } from '../fn/lichtbot/lichtbot-controller-leave-room';\nimport { LichtbotControllerLeaveRoom$Params } from '../fn/lichtbot/lichtbot-controller-leave-room';\nimport { lichtbotControllerReciveMessage } from '../fn/lichtbot/lichtbot-controller-recive-message';\nimport { LichtbotControllerReciveMessage$Params } from '../fn/lichtbot/lichtbot-controller-recive-message';\n\n@Injectable({ providedIn: 'root' })\nexport class LichtbotService extends HandbookBaseService {\n constructor(config: HandbookConfiguration, http: HttpClient) {\n super(config, http);\n }\n\n /** Path part for operation `lichtbotControllerGetImportHistory()` */\n static readonly LichtbotControllerGetImportHistoryPath = '/handbook-api/lichtbot/import-history';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `lichtbotControllerGetImportHistory()` instead.\n *\n * This method doesn't expect any request body.\n */\n lichtbotControllerGetImportHistory$Response(params?: LichtbotControllerGetImportHistory$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const obs = lichtbotControllerGetImportHistory(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `lichtbotControllerGetImportHistory$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n lichtbotControllerGetImportHistory(params?: LichtbotControllerGetImportHistory$Params, context?: HttpContext): Observable<void> {\n const resp = this.lichtbotControllerGetImportHistory$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<void>): void => r.body)\n );\n }\n\n /** Path part for operation `lichtbotControllerGetImportAdresses()` */\n static readonly LichtbotControllerGetImportAdressesPath = '/handbook-api/lichtbot/import-adresses';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `lichtbotControllerGetImportAdresses()` instead.\n *\n * This method doesn't expect any request body.\n */\n lichtbotControllerGetImportAdresses$Response(params?: LichtbotControllerGetImportAdresses$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const obs = lichtbotControllerGetImportAdresses(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `lichtbotControllerGetImportAdresses$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n lichtbotControllerGetImportAdresses(params?: LichtbotControllerGetImportAdresses$Params, context?: HttpContext): Observable<void> {\n const resp = this.lichtbotControllerGetImportAdresses$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<void>): void => r.body)\n );\n }\n\n /** Path part for operation `lichtbotControllerJoinRoom()` */\n static readonly LichtbotControllerJoinRoomPath = '/handbook-api/lichtbot/join';\n\n /**\n * Add the LichtBOT to the client Chat Room.\n *\n * Allows a user to add the LichtBOT to the client Chat Room. Note: This is a mock endpoint for prototyping only and is not functional.\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `lichtbotControllerJoinRoom()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n lichtbotControllerJoinRoom$Response(params: LichtbotControllerJoinRoom$Params, context?: HttpContext): Observable<HandbookHttpResponse<JoinLichtbotDto>> {\n const obs = lichtbotControllerJoinRoom(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Add the LichtBOT to the client Chat Room.\n *\n * Allows a user to add the LichtBOT to the client Chat Room. Note: This is a mock endpoint for prototyping only and is not functional.\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `lichtbotControllerJoinRoom$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n lichtbotControllerJoinRoom(params: LichtbotControllerJoinRoom$Params, context?: HttpContext): Observable<JoinLichtbotDto> {\n const resp = this.lichtbotControllerJoinRoom$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<JoinLichtbotDto>): JoinLichtbotDto => r.body)\n );\n }\n\n /** Path part for operation `lichtbotControllerLeaveRoom()` */\n static readonly LichtbotControllerLeaveRoomPath = '/handbook-api/lichtbot/leave';\n\n /**\n * Remove the LichtBOT from the client Chat Room.\n *\n * Allows a user to remove the LichtBOT from the client Chat Room. Note: This is a mock endpoint for prototyping only and is not functional.\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `lichtbotControllerLeaveRoom()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n lichtbotControllerLeaveRoom$Response(params: LichtbotControllerLeaveRoom$Params, context?: HttpContext): Observable<HandbookHttpResponse<LeaveLichtbotDto>> {\n const obs = lichtbotControllerLeaveRoom(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Remove the LichtBOT from the client Chat Room.\n *\n * Allows a user to remove the LichtBOT from the client Chat Room. Note: This is a mock endpoint for prototyping only and is not functional.\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `lichtbotControllerLeaveRoom$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n lichtbotControllerLeaveRoom(params: LichtbotControllerLeaveRoom$Params, context?: HttpContext): Observable<LeaveLichtbotDto> {\n const resp = this.lichtbotControllerLeaveRoom$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<LeaveLichtbotDto>): LeaveLichtbotDto => r.body)\n );\n }\n\n /** Path part for operation `lichtbotControllerReciveMessage()` */\n static readonly LichtbotControllerReciveMessagePath = '/handbook-api/lichtbot/message';\n\n /**\n * Send a message to LichtBOT.\n *\n * Sends a client message to LichtBOT in a chat room. Note: This is a mock endpoint for prototyping only and is not functional.\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `lichtbotControllerReciveMessage()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n lichtbotControllerReciveMessage$Response(params: LichtbotControllerReciveMessage$Params, context?: HttpContext): Observable<HandbookHttpResponse<LichtbotClientMessageDto>> {\n const obs = lichtbotControllerReciveMessage(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Send a message to LichtBOT.\n *\n * Sends a client message to LichtBOT in a chat room. Note: This is a mock endpoint for prototyping only and is not functional.\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `lichtbotControllerReciveMessage$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n lichtbotControllerReciveMessage(params: LichtbotControllerReciveMessage$Params, context?: HttpContext): Observable<LichtbotClientMessageDto> {\n const resp = this.lichtbotControllerReciveMessage$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<LichtbotClientMessageDto>): LichtbotClientMessageDto => r.body)\n );\n }\n\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { AnonymizeTextDto } from '../../models/anonymize-text-dto';\n\nexport interface PresidioControllerAnalyzeText$Params {\n body: AnonymizeTextDto\n}\n\nexport function presidioControllerAnalyzeText(http: HttpClient, rootUrl: string, params: PresidioControllerAnalyzeText$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const rb = new HandbookRequestBuilder(rootUrl, presidioControllerAnalyzeText.PATH, 'post');\n if (params) {\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'text', accept: '*/*', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return (r as HttpResponse<any>).clone({ body: undefined }) as HandbookHttpResponse<void>;\n })\n );\n}\n\npresidioControllerAnalyzeText.PATH = '/handbook-api/presidio/analyze';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { AnonymizeTextDto } from '../../models/anonymize-text-dto';\n\nexport interface PresidioControllerAnonymizeText$Params {\n body: AnonymizeTextDto\n}\n\nexport function presidioControllerAnonymizeText(http: HttpClient, rootUrl: string, params: PresidioControllerAnonymizeText$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const rb = new HandbookRequestBuilder(rootUrl, presidioControllerAnonymizeText.PATH, 'post');\n if (params) {\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'text', accept: '*/*', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return (r as HttpResponse<any>).clone({ body: undefined }) as HandbookHttpResponse<void>;\n })\n );\n}\n\npresidioControllerAnonymizeText.PATH = '/handbook-api/presidio/anonymize';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\n\nexport interface PresidioControllerTest$Params {\n}\n\nexport function presidioControllerTest(http: HttpClient, rootUrl: string, params?: PresidioControllerTest$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const rb = new HandbookRequestBuilder(rootUrl, presidioControllerTest.PATH, 'post');\n if (params) {\n }\n\n return http.request(\n rb.build({ responseType: 'text', accept: '*/*', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return (r as HttpResponse<any>).clone({ body: undefined }) as HandbookHttpResponse<void>;\n })\n );\n}\n\npresidioControllerTest.PATH = '/handbook-api/presidio/test';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { HandbookBaseService } from '../handbook-base-service';\nimport { HandbookConfiguration } from '../handbook-configuration';\nimport { HandbookHttpResponse } from '../handbook-http-response';\n\nimport { presidioControllerAnalyzeText } from '../fn/presidio/presidio-controller-analyze-text';\nimport { PresidioControllerAnalyzeText$Params } from '../fn/presidio/presidio-controller-analyze-text';\nimport { presidioControllerAnonymizeText } from '../fn/presidio/presidio-controller-anonymize-text';\nimport { PresidioControllerAnonymizeText$Params } from '../fn/presidio/presidio-controller-anonymize-text';\nimport { presidioControllerTest } from '../fn/presidio/presidio-controller-test';\nimport { PresidioControllerTest$Params } from '../fn/presidio/presidio-controller-test';\n\n@Injectable({ providedIn: 'root' })\nexport class PresidioService extends HandbookBaseService {\n constructor(config: HandbookConfiguration, http: HttpClient) {\n super(config, http);\n }\n\n /** Path part for operation `presidioControllerAnalyzeText()` */\n static readonly PresidioControllerAnalyzeTextPath = '/handbook-api/presidio/analyze';\n\n /**\n * Analyze text for PII.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `presidioControllerAnalyzeText()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n presidioControllerAnalyzeText$Response(params: PresidioControllerAnalyzeText$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const obs = presidioControllerAnalyzeText(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Analyze text for PII.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `presidioControllerAnalyzeText$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n presidioControllerAnalyzeText(params: PresidioControllerAnalyzeText$Params, context?: HttpContext): Observable<void> {\n const resp = this.presidioControllerAnalyzeText$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<void>): void => r.body)\n );\n }\n\n /** Path part for operation `presidioControllerAnonymizeText()` */\n static readonly PresidioControllerAnonymizeTextPath = '/handbook-api/presidio/anonymize';\n\n /**\n * Anonymize text containing PII.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `presidioControllerAnonymizeText()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n presidioControllerAnonymizeText$Response(params: PresidioControllerAnonymizeText$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const obs = presidioControllerAnonymizeText(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Anonymize text containing PII.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `presidioControllerAnonymizeText$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n presidioControllerAnonymizeText(params: PresidioControllerAnonymizeText$Params, context?: HttpContext): Observable<void> {\n const resp = this.presidioControllerAnonymizeText$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<void>): void => r.body)\n );\n }\n\n /** Path part for operation `presidioControllerTest()` */\n static readonly PresidioControllerTestPath = '/handbook-api/presidio/test';\n\n /**\n * Test endpoint for smoke testing.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `presidioControllerTest()` instead.\n *\n * This method doesn't expect any request body.\n */\n presidioControllerTest$Response(params?: PresidioControllerTest$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const obs = presidioControllerTest(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Test endpoint for smoke testing.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `presidioControllerTest$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n presidioControllerTest(params?: PresidioControllerTest$Params, context?: HttpContext): Observable<void> {\n const resp = this.presidioControllerTest$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<void>): void => r.body)\n );\n }\n\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { SethubAppChatResult } from '../../models/sethub-app-chat-result';\n\nexport interface SethubAppsControllerConversation$Params {\n appId: string;\n\n/**\n * The question to search for\n */\n question: string;\n\n/**\n * The title of the last opened entry\n */\n lastOpenedEntryTitle?: string;\n\n/**\n * The thread ID of the search\n */\n threadId?: string;\n}\n\nexport function sethubAppsControllerConversation(http: HttpClient, rootUrl: string, params: SethubAppsControllerConversation$Params, context?: HttpContext): Observable<HandbookHttpResponse<SethubAppChatResult>> {\n const rb = new HandbookRequestBuilder(rootUrl, sethubAppsControllerConversation.PATH, 'get');\n if (params) {\n rb.path('appId', params.appId, {});\n rb.query('question', params.question, {});\n rb.query('lastOpenedEntryTitle', params.lastOpenedEntryTitle, {});\n rb.query('threadId', params.threadId, {});\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<SethubAppChatResult>;\n })\n );\n}\n\nsethubAppsControllerConversation.PATH = '/handbook-api/sethub-app/{appId}';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { SethubAppContextDto } from '../../models/sethub-app-context-dto';\nimport { SethubAppContextResult } from '../../models/sethub-app-context-result';\n\nexport interface SethubAppsControllerGetRelevantContext$Params {\n body: SethubAppContextDto\n}\n\nexport function sethubAppsControllerGetRelevantContext(http: HttpClient, rootUrl: string, params: SethubAppsControllerGetRelevantContext$Params, context?: HttpContext): Observable<HandbookHttpResponse<SethubAppContextResult>> {\n const rb = new HandbookRequestBuilder(rootUrl, sethubAppsControllerGetRelevantContext.PATH, 'post');\n if (params) {\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<SethubAppContextResult>;\n })\n );\n}\n\nsethubAppsControllerGetRelevantContext.PATH = '/handbook-api/sethub-app/context';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { SummaryResult } from '../../models/summary-result';\n\nexport interface SethubAppsControllerSummary$Params {\n appId: string;\n\n/**\n * The template ID of the summary\n */\n templateId: string;\n\n/**\n * The document ID of the summary\n */\n documentId: string;\n\n/**\n * The thread ID of the summary\n */\n threadId?: string;\n}\n\nexport function sethubAppsControllerSummary(http: HttpClient, rootUrl: string, params: SethubAppsControllerSummary$Params, context?: HttpContext): Observable<HandbookHttpResponse<SummaryResult>> {\n const rb = new HandbookRequestBuilder(rootUrl, sethubAppsControllerSummary.PATH, 'get');\n if (params) {\n rb.path('appId', params.appId, {});\n rb.query('templateId', params.templateId, {});\n rb.query('documentId', params.documentId, {});\n rb.query('threadId', params.threadId, {});\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<SummaryResult>;\n })\n );\n}\n\nsethubAppsControllerSummary.PATH = '/handbook-api/sethub-app/{appId}/summary';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { HandbookBaseService } from '../handbook-base-service';\nimport { HandbookConfiguration } from '../handbook-configuration';\nimport { HandbookHttpResponse } from '../handbook-http-response';\n\nimport { SethubAppChatResult } from '../models/sethub-app-chat-result';\nimport { SethubAppContextResult } from '../models/sethub-app-context-result';\nimport { sethubAppsControllerConversation } from '../fn/sethub-apps/sethub-apps-controller-conversation';\nimport { SethubAppsControllerConversation$Params } from '../fn/sethub-apps/sethub-apps-controller-conversation';\nimport { sethubAppsControllerGetRelevantContext } from '../fn/sethub-apps/sethub-apps-controller-get-relevant-context';\nimport { SethubAppsControllerGetRelevantContext$Params } from '../fn/sethub-apps/sethub-apps-controller-get-relevant-context';\nimport { sethubAppsControllerSummary } from '../fn/sethub-apps/sethub-apps-controller-summary';\nimport { SethubAppsControllerSummary$Params } from '../fn/sethub-apps/sethub-apps-controller-summary';\nimport { SummaryResult } from '../models/summary-result';\n\n@Injectable({ providedIn: 'root' })\nexport class SethubAppsService extends HandbookBaseService {\n constructor(config: HandbookConfiguration, http: HttpClient) {\n super(config, http);\n }\n\n /** Path part for operation `sethubAppsControllerSummary()` */\n static readonly SethubAppsControllerSummaryPath = '/handbook-api/sethub-app/{appId}/summary';\n\n /**\n * Summarize content.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sethubAppsControllerSummary()` instead.\n *\n * This method doesn't expect any request body.\n */\n sethubAppsControllerSummary$Response(params: SethubAppsControllerSummary$Params, context?: HttpContext): Observable<HandbookHttpResponse<SummaryResult>> {\n const obs = sethubAppsControllerSummary(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Summarize content.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sethubAppsControllerSummary$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sethubAppsControllerSummary(params: SethubAppsControllerSummary$Params, context?: HttpContext): Observable<SummaryResult> {\n const resp = this.sethubAppsControllerSummary$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<SummaryResult>): SummaryResult => r.body)\n );\n }\n\n /** Path part for operation `sethubAppsControllerGetRelevantContext()` */\n static readonly SethubAppsControllerGetRelevantContextPath = '/handbook-api/sethub-app/context';\n\n /**\n * Get relevant context for keywords.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sethubAppsControllerGetRelevantContext()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n sethubAppsControllerGetRelevantContext$Response(params: SethubAppsControllerGetRelevantContext$Params, context?: HttpContext): Observable<HandbookHttpResponse<SethubAppContextResult>> {\n const obs = sethubAppsControllerGetRelevantContext(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get relevant context for keywords.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sethubAppsControllerGetRelevantContext$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n sethubAppsControllerGetRelevantContext(params: SethubAppsControllerGetRelevantContext$Params, context?: HttpContext): Observable<SethubAppContextResult> {\n const resp = this.sethubAppsControllerGetRelevantContext$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<SethubAppContextResult>): SethubAppContextResult => r.body)\n );\n }\n\n /** Path part for operation `sethubAppsControllerConversation()` */\n static readonly SethubAppsControllerConversationPath = '/handbook-api/sethub-app/{appId}';\n\n /**\n * Ask AI.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sethubAppsControllerConversation()` instead.\n *\n * This method doesn't expect any request body.\n */\n sethubAppsControllerConversation$Response(params: SethubAppsControllerConversation$Params, context?: HttpContext): Observable<HandbookHttpResponse<SethubAppChatResult>> {\n const obs = sethubAppsControllerConversation(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Ask AI.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sethubAppsControllerConversation$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sethubAppsControllerConversation(params: SethubAppsControllerConversation$Params, context?: HttpContext): Observable<SethubAppChatResult> {\n const resp = this.sethubAppsControllerConversation$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<SethubAppChatResult>): SethubAppChatResult => r.body)\n );\n }\n\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { SethubNavRequestDto } from '../../models/sethub-nav-request-dto';\nimport { SethubNavRequestResponse } from '../../models/sethub-nav-request-response';\n\nexport interface SethubNavControllerProcessNavRequest$Params {\n appId: string;\n sessionId: string;\n body: SethubNavRequestDto\n}\n\nexport function sethubNavControllerProcessNavRequest(http: HttpClient, rootUrl: string, params: SethubNavControllerProcessNavRequest$Params, context?: HttpContext): Observable<HandbookHttpResponse<SethubNavRequestResponse>> {\n const rb = new HandbookRequestBuilder(rootUrl, sethubNavControllerProcessNavRequest.PATH, 'post');\n if (params) {\n rb.path('appId', params.appId, {});\n rb.header('sessionId', params.sessionId, {});\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<SethubNavRequestResponse>;\n })\n );\n}\n\nsethubNavControllerProcessNavRequest.PATH = '/handbook-api/sethub-nav/{appId}/request';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { HandbookBaseService } from '../handbook-base-service';\nimport { HandbookConfiguration } from '../handbook-configuration';\nimport { HandbookHttpResponse } from '../handbook-http-response';\n\nimport { sethubNavControllerProcessNavRequest } from '../fn/sethub-nav/sethub-nav-controller-process-nav-request';\nimport { SethubNavControllerProcessNavRequest$Params } from '../fn/sethub-nav/sethub-nav-controller-process-nav-request';\nimport { SethubNavRequestResponse } from '../models/sethub-nav-request-response';\n\n@Injectable({ providedIn: 'root' })\nexport class SethubNavService extends HandbookBaseService {\n constructor(config: HandbookConfiguration, http: HttpClient) {\n super(config, http);\n }\n\n /** Path part for operation `sethubNavControllerProcessNavRequest()` */\n static readonly SethubNavControllerProcessNavRequestPath = '/handbook-api/sethub-nav/{appId}/request';\n\n /**\n * Process navigation request.\n *\n * Processes a navigation request and returns helpful guidance with possible navigation paths.\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sethubNavControllerProcessNavRequest()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n sethubNavControllerProcessNavRequest$Response(params: SethubNavControllerProcessNavRequest$Params, context?: HttpContext): Observable<HandbookHttpResponse<SethubNavRequestResponse>> {\n const obs = sethubNavControllerProcessNavRequest(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Process navigation request.\n *\n * Processes a navigation request and returns helpful guidance with possible navigation paths.\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sethubNavControllerProcessNavRequest$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n sethubNavControllerProcessNavRequest(params: SethubNavControllerProcessNavRequest$Params, context?: HttpContext): Observable<SethubNavRequestResponse> {\n const resp = this.sethubNavControllerProcessNavRequest$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<SethubNavRequestResponse>): SethubNavRequestResponse => r.body)\n );\n }\n\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { SethubProductListDto } from '../../models/sethub-product-list-dto';\nimport { SethubProductListResponse } from '../../models/sethub-product-list-response';\n\nexport interface SethubProductsControllerGetProductList$Params {\n appId: string;\n pageId: string;\n areaId: string;\n body: SethubProductListDto\n}\n\nexport function sethubProductsControllerGetProductList(http: HttpClient, rootUrl: string, params: SethubProductsControllerGetProductList$Params, context?: HttpContext): Observable<HandbookHttpResponse<SethubProductListResponse>> {\n const rb = new HandbookRequestBuilder(rootUrl, sethubProductsControllerGetProductList.PATH, 'post');\n if (params) {\n rb.path('appId', params.appId, {});\n rb.path('pageId', params.pageId, {});\n rb.path('areaId', params.areaId, {});\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<SethubProductListResponse>;\n })\n );\n}\n\nsethubProductsControllerGetProductList.PATH = '/handbook-api/sethub-products/{appId}/{pageId}/{areaId}';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { SethubProductSearchResponse } from '../../models/sethub-product-search-response';\n\nexport interface SethubProductsControllerGetProductSearch$Params {\n appId: string;\n productSearchId: string;\n}\n\nexport function sethubProductsControllerGetProductSearch(http: HttpClient, rootUrl: string, params: SethubProductsControllerGetProductSearch$Params, context?: HttpContext): Observable<HandbookHttpResponse<SethubProductSearchResponse>> {\n const rb = new HandbookRequestBuilder(rootUrl, sethubProductsControllerGetProductSearch.PATH, 'get');\n if (params) {\n rb.path('appId', params.appId, {});\n rb.path('productSearchId', params.productSearchId, {});\n }\n\n return http.request(\n rb.build({ responseType: 'json', accept: 'application/json', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return r as HandbookHttpResponse<SethubProductSearchResponse>;\n })\n );\n}\n\nsethubProductsControllerGetProductSearch.PATH = '/handbook-api/sethub-products/search/{appId}/{productSearchId}';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { HandbookBaseService } from '../handbook-base-service';\nimport { HandbookConfiguration } from '../handbook-configuration';\nimport { HandbookHttpResponse } from '../handbook-http-response';\n\nimport { SethubProductListResponse } from '../models/sethub-product-list-response';\nimport { sethubProductsControllerGetProductList } from '../fn/sethub-products/sethub-products-controller-get-product-list';\nimport { SethubProductsControllerGetProductList$Params } from '../fn/sethub-products/sethub-products-controller-get-product-list';\nimport { sethubProductsControllerGetProductSearch } from '../fn/sethub-products/sethub-products-controller-get-product-search';\nimport { SethubProductsControllerGetProductSearch$Params } from '../fn/sethub-products/sethub-products-controller-get-product-search';\nimport { SethubProductSearchResponse } from '../models/sethub-product-search-response';\n\n@Injectable({ providedIn: 'root' })\nexport class SethubProductsService extends HandbookBaseService {\n constructor(config: HandbookConfiguration, http: HttpClient) {\n super(config, http);\n }\n\n /** Path part for operation `sethubProductsControllerGetProductList()` */\n static readonly SethubProductsControllerGetProductListPath = '/handbook-api/sethub-products/{appId}/{pageId}/{areaId}';\n\n /**\n * Get product mapping list for a product search.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sethubProductsControllerGetProductList()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n sethubProductsControllerGetProductList$Response(params: SethubProductsControllerGetProductList$Params, context?: HttpContext): Observable<HandbookHttpResponse<SethubProductListResponse>> {\n const obs = sethubProductsControllerGetProductList(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get product mapping list for a product search.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sethubProductsControllerGetProductList$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n sethubProductsControllerGetProductList(params: SethubProductsControllerGetProductList$Params, context?: HttpContext): Observable<SethubProductListResponse> {\n const resp = this.sethubProductsControllerGetProductList$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<SethubProductListResponse>): SethubProductListResponse => r.body)\n );\n }\n\n /** Path part for operation `sethubProductsControllerGetProductSearch()` */\n static readonly SethubProductsControllerGetProductSearchPath = '/handbook-api/sethub-products/search/{appId}/{productSearchId}';\n\n /**\n * Get product search.\n *\n *\n *\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sethubProductsControllerGetProductSearch()` instead.\n *\n * This method doesn't expect any request body.\n */\n sethubProductsControllerGetProductSearch$Response(params: SethubProductsControllerGetProductSearch$Params, context?: HttpContext): Observable<HandbookHttpResponse<SethubProductSearchResponse>> {\n const obs = sethubProductsControllerGetProductSearch(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * Get product search.\n *\n *\n *\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sethubProductsControllerGetProductSearch$Response()` instead.\n *\n * This method doesn't expect any request body.\n */\n sethubProductsControllerGetProductSearch(params: SethubProductsControllerGetProductSearch$Params, context?: HttpContext): Observable<SethubProductSearchResponse> {\n const resp = this.sethubProductsControllerGetProductSearch$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<SethubProductSearchResponse>): SethubProductSearchResponse => r.body)\n );\n }\n\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { HandbookHttpResponse } from '../../handbook-http-response';\nimport { HandbookRequestBuilder } from '../../handbook-request-builder';\n\nimport { UserActionDto } from '../../models/user-action-dto';\n\nexport interface SethubUserActionControllerGenerateActionComment$Params {\n sessionId: string;\n body: UserActionDto\n}\n\nexport function sethubUserActionControllerGenerateActionComment(http: HttpClient, rootUrl: string, params: SethubUserActionControllerGenerateActionComment$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const rb = new HandbookRequestBuilder(rootUrl, sethubUserActionControllerGenerateActionComment.PATH, 'post');\n if (params) {\n rb.header('sessionId', params.sessionId, {});\n rb.body(params.body, 'application/json');\n }\n\n return http.request(\n rb.build({ responseType: 'text', accept: '*/*', context })\n ).pipe(\n filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),\n map((r: HttpResponse<any>) => {\n return (r as HttpResponse<any>).clone({ body: undefined }) as HandbookHttpResponse<void>;\n })\n );\n}\n\nsethubUserActionControllerGenerateActionComment.PATH = '/handbook-api/sethub-user-action/comment';\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { HandbookBaseService } from '../handbook-base-service';\nimport { HandbookConfiguration } from '../handbook-configuration';\nimport { HandbookHttpResponse } from '../handbook-http-response';\n\nimport { sethubUserActionControllerGenerateActionComment } from '../fn/sethub-user-action/sethub-user-action-controller-generate-action-comment';\nimport { SethubUserActionControllerGenerateActionComment$Params } from '../fn/sethub-user-action/sethub-user-action-controller-generate-action-comment';\n\n@Injectable({ providedIn: 'root' })\nexport class SethubUserActionService extends HandbookBaseService {\n constructor(config: HandbookConfiguration, http: HttpClient) {\n super(config, http);\n }\n\n /** Path part for operation `sethubUserActionControllerGenerateActionComment()` */\n static readonly SethubUserActionControllerGenerateActionCommentPath = '/handbook-api/sethub-user-action/comment';\n\n /**\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\n * To access only the response body, use `sethubUserActionControllerGenerateActionComment()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n sethubUserActionControllerGenerateActionComment$Response(params: SethubUserActionControllerGenerateActionComment$Params, context?: HttpContext): Observable<HandbookHttpResponse<void>> {\n const obs = sethubUserActionControllerGenerateActionComment(this.http, this.rootUrl, params, context);\n return obs;\n }\n\n /**\n * This method provides access only to the response body.\n * To access the full response (for headers, for example), `sethubUserActionControllerGenerateActionComment$Response()` instead.\n *\n * This method sends `application/json` and handles request body of type `application/json`.\n */\n sethubUserActionControllerGenerateActionComment(params: SethubUserActionControllerGenerateActionComment$Params, context?: HttpContext): Observable<void> {\n const resp = this.sethubUserActionControllerGenerateActionComment$Response(params, context);\n return resp.pipe(\n map((r: HandbookHttpResponse<void>): void => r.body)\n );\n }\n\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nimport { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { HandbookConfiguration, HandbookConfigurationParams } from './handbook-configuration';\n\nimport { AppService } from './services/app.service';\nimport { HandbookEntriesService } from './services/handbook-entries.service';\nimport { ConversationService } from './services/conversation.service';\nimport { LichtbotService } from './services/lichtbot.service';\nimport { PresidioService } from './services/presidio.service';\nimport { SethubAppsService } from './services/sethub-apps.service';\nimport { SethubNavService } from './services/sethub-nav.service';\nimport { SethubProductsService } from './services/sethub-products.service';\nimport { SethubUserActionService } from './services/sethub-user-action.service';\n\n/**\n * Module that provides all services and configuration.\n */\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n AppService,\n HandbookEntriesService,\n ConversationService,\n LichtbotService,\n PresidioService,\n SethubAppsService,\n SethubNavService,\n SethubProductsService,\n SethubUserActionService,\n HandbookConfiguration\n ],\n})\nexport class HandbookModule {\n static forRoot(params: HandbookConfigurationParams): ModuleWithProviders<HandbookModule> {\n return {\n ngModule: HandbookModule,\n providers: [\n {\n provide: HandbookConfiguration,\n useValue: params\n }\n ]\n }\n }\n\n constructor( \n @Optional() @SkipSelf() parentModule: HandbookModule,\n @Optional() http: HttpClient\n ) {\n if (parentModule) {\n throw new Error('HandbookModule is already loaded. Import in your base AppModule only.');\n }\n if (!http) {\n throw new Error('You need to import the HttpClientModule in your AppModule! \\n' +\n 'See also https://github.com/angular/angular/issues/20575');\n }\n }\n}\n","/* eslint-disable */\n/* Code generated by ng-openapi-gen DO NOT EDIT. */\n\nexport { HandbookConfiguration } from './handbook-configuration';\nexport { HandbookRequestBuilder } from './handbook-request-builder';\nexport { HandbookModule } from './handbook.module';\nexport type { HandbookHttpResponse } from './handbook-http-response';\nexport type { AdvisorsStatus } from './models/advisors-status';\nexport type { AnonymizeTextDto } from './models/anonymize-text-dto';\nexport type { ChatResult } from './models/chat-result';\nexport type { ContextDto } from './models/context-dto';\nexport type { ContextResult } from './models/context-result';\nexport type { ConversationDetailResult } from './models/conversation-detail-result';\nexport type { ConversationMessage } from './models/conversation-message';\nexport type { ConversationOverviewResult } from './models/conversation-overview-result';\nexport type { HandbookEntry } from './models/handbook-entry';\nexport type { HandbookEntryDto } from './models/handbook-entry-dto';\nexport type { HandbookOverviewEntry } from './models/handbook-overview-entry';\nexport type { HandbookOverviewResponse } from './models/handbook-overview-response';\nexport type { HandbookTagsResponse } from './models/handbook-tags-response';\nexport type { HandbookVoiceResponse } from './models/handbook-voice-response';\nexport type { JoinLichtbotDto } from './models/join-lichtbot-dto';\nexport type { LeaveLichtbotDto } from './models/leave-lichtbot-dto';\nexport type { LichtbotClientMessageDto } from './models/lichtbot-client-message-dto';\nexport type { SethubAppChatResult } from './models/sethub-app-chat-result';\nexport type { SethubAppContextDto } from './models/sethub-app-context-dto';\nexport type { SethubAppContextResult } from './models/sethub-app-context-result';\nexport type { SethubNavPageDto } from './models/sethub-nav-page-dto';\nexport type { SethubNavRequestDto } from './models/sethub-nav-request-dto';\nexport type { SethubNavRequestResponse } from './models/sethub-nav-request-response';\nexport type { SethubProductListDto } from './models/sethub-product-list-dto';\nexport type { SethubProductListResponse } from './models/sethub-product-list-response';\nexport type { SethubProductSearchResponse } from './models/sethub-product-search-response';\nexport type { StructuredAnswer } from './models/structured-answer';\nexport type { StructuredAnswerEntry } from './models/structured-answer-entry';\nexport type { SummaryResult } from './models/summary-result';\nexport type { UserActionDto } from './models/user-action-dto';\nexport type { VoiceHandbookEntryDto } from './models/voice-handbook-entry-dto';\nexport { HandbookBaseService } from './handbook-base-service';\nexport { AppService } from './services/app.service';\nexport { HandbookEntriesService } from './services/handbook-entries.service';\nexport { ConversationService } from './services/conversation.service';\nexport { LichtbotService } from './services/lichtbot.service';\nexport { PresidioService } from './services/presidio.service';\nexport { SethubAppsService } from './services/sethub-apps.service';\nexport { SethubNavService } from './services/sethub-nav.service';\nexport { SethubProductsService } from './services/sethub-products.service';\nexport { SethubUserActionService } from './services/sethub-user-action.service';\n\nexport type { AppControllerGetHealthCheck$Params } from './fn/app/app-controller-get-health-check';\nexport { appControllerGetHealthCheck } from './fn/app/app-controller-get-health-check';\nexport type { HandbookEntryControllerFindAllHandbookEntries$Params } from './fn/handbook-entries/handbook-entry-controller-find-all-handbook-entries';\nexport { handbookEntryControllerFindAllHandbookEntries } from './fn/handbook-entries/handbook-entry-controller-find-all-handbook-entries';\nexport type { HandbookEntryControllerCreateHandbookEntry$Params } from './fn/handbook-entries/handbook-entry-controller-create-handbook-entry';\nexport { handbookEntryControllerCreateHandbookEntry } from './fn/handbook-entries/handbook-entry-controller-create-handbook-entry';\nexport type { HandbookEntryControllerFindAllHandbookEntriesForOverview$Params } from './fn/handbook-entries/handbook-entry-controller-find-all-handbook-entries-for-overview';\nexport { handbookEntryControllerFindAllHandbookEntriesForOverview } from './fn/handbook-entries/handbook-entry-controller-find-all-handbook-entries-for-overview';\nexport type { HandbookEntryControllerFindAllTags$Params } from './fn/handbook-entries/handbook-entry-controller-find-all-tags';\nexport { handbookEntryControllerFindAllTags } from './fn/handbook-entries/handbook-entry-controller-find-all-tags';\nexport type { HandbookEntryControllerFindHandbookEntryById$Params } from './fn/handbook-entries/handbook-entry-controller-find-handbook-entry-by-id';\nexport { handbookEntryControllerFindHandbookEntryById } from './fn/handbook-entries/handbook-entry-controller-find-handbook-entry-by-id';\nexport type { HandbookEntryControllerUpdateHandbookEntry$Params } from './fn/handbook-entries/handbook-entry-controller-update-handbook-entry';\nexport { handbookEntryControllerUpdateHandbookEntry } from './fn/handbook-entries/handbook-entry-controller-update-handbook-entry';\nexport type { HandbookEntryControllerDeleteHandbookEntry$Params } from './fn/handbook-entries/handbook-entry-controller-delete-handbook-entry';\nexport { handbookEntryControllerDeleteHandbookEntry } from './fn/handbook-entries/handbook-entry-controller-delete-handbook-entry';\nexport type { HandbookEntryControllerGetTextFromVoice$Params } from './fn/handbook-entries/handbook-entry-controller-get-text-from-voice';\nexport { handbookEntryControllerGetTextFromVoice } from './fn/handbook-entries/handbook-entry-controller-get-text-from-voice';\nexport type { HandbookEntryControllerGenerateHandbookFromText$Params } from './fn/handbook-entries/handbook-entry-controller-generate-handbook-from-text';\nexport { handbookEntryControllerGenerateHandbookFromText } from './fn/handbook-entries/handbook-entry-controller-generate-handbook-from-text';\nexport type { HandbookEntryControllerGenerateHandbook$Params } from './fn/handbook-entries/handbook-entry-controller-generate-handbook';\nexport { handbookEntryControllerGenerateHandbook } from './fn/handbook-entries/handbook-entry-controller-generate-handbook';\nexport type { ConversationControllerConversation$Params } from './fn/conversation/conversation-controller-conversation';\nexport { conversationControllerConversation } from './fn/conversation/conversation-controller-conversation';\nexport type { ConversationControllerGetConversationOverview$Params } from './fn/conversation/conversation-controller-get-conversation-overview';\nexport { conversationControllerGetConversationOverview } from './fn/conversation/conversation-controller-get-conversation-overview';\nexport type { ConversationControllerGetRelevantContext$Params } from './fn/conversation/conversation-controller-get-relevant-context';\nexport { conversationControllerGetRelevantContext } from './fn/conversation/conversation-controller-get-relevant-context';\nexport type { ConversationControllerGetConversationDetail$Params } from './fn/conversation/conversation-controller-get-conversation-detail';\nexport { conversationControllerGetConversationDetail } from './fn/conversation/conversation-controller-get-conversation-detail';\nexport type { LichtbotControllerGetImportHistory$Params } from './fn/lichtbot/lichtbot-controller-get-import-history';\nexport { lichtbotControllerGetImportHistory } from './fn/lichtbot/lichtbot-controller-get-import-history';\nexport type { LichtbotControllerGetImportAdresses$Params } from './fn/lichtbot/lichtbot-controller-get-import-adresses';\nexport { lichtbotControllerGetImportAdresses } from './fn/lichtbot/lichtbot-controller-get-import-adresses';\nexport type { LichtbotControllerJoinRoom$Params } from './fn/lichtbot/lichtbot-controller-join-room';\nexport { lichtbotControllerJoinRoom } from './fn/lichtbot/lichtbot-controller-join-room';\nexport type { LichtbotControllerLeaveRoom$Params } from './fn/lichtbot/lichtbot-controller-leave-room';\nexport { lichtbotControllerLeaveRoom } from './fn/lichtbot/lichtbot-controller-leave-room';\nexport type { LichtbotControllerReciveMessage$Params } from './fn/lichtbot/lichtbot-controller-recive-message';\nexport { lichtbotControllerReciveMessage } from './fn/lichtbot/lichtbot-controller-recive-message';\nexport type { PresidioControllerAnalyzeText$Params } from './fn/presidio/presidio-controller-analyze-text';\nexport { presidioControllerAnalyzeText } from './fn/presidio/presidio-controller-analyze-text';\nexport type { PresidioControllerAnonymizeText$Params } from './fn/presidio/presidio-controller-anonymize-text';\nexport { presidioControllerAnonymizeText } from './fn/presidio/presidio-controller-anonymize-text';\nexport type { PresidioControllerTest$Params } from './fn/presidio/presidio-controller-test';\nexport { presidioControllerTest } from './fn/presidio/presidio-controller-test';\nexport type { SethubAppsControllerSummary$Params } from './fn/sethub-apps/sethub-apps-controller-summary';\nexport { sethubAppsControllerSummary } from './fn/sethub-apps/sethub-apps-controller-summary';\nexport type { SethubAppsControllerGetRelevantContext$Params } from './fn/sethub-apps/sethub-apps-controller-get-relevant-context';\nexport { sethubAppsControllerGetRelevantContext } from './fn/sethub-apps/sethub-apps-controller-get-relevant-context';\nexport type { SethubAppsControllerConversation$Params } from './fn/sethub-apps/sethub-apps-controller-conversation';\nexport { sethubAppsControllerConversation } from './fn/sethub-apps/sethub-apps-controller-conversation';\nexport type { SethubNavControllerProcessNavRequest$Params } from './fn/sethub-nav/sethub-nav-controller-process-nav-request';\nexport { sethubNavControllerProcessNavRequest } from './fn/sethub-nav/sethub-nav-controller-process-nav-request';\nexport type { SethubProductsControllerGetProductList$Params } from './fn/sethub-products/sethub-products-controller-get-product-list';\nexport { sethubProductsControllerGetProductList } from './fn/sethub-products/sethub-products-controller-get-product-list';\nexport type { SethubProductsControllerGetProductSearch$Params } from './fn/sethub-products/sethub-products-controller-get-product-search';\nexport { sethubProductsControllerGetProductSearch } from './fn/sethub-products/sethub-products-controller-get-product-search';\nexport type { SethubUserActionControllerGenerateActionComment$Params } from './fn/sethub-user-action/sethub-user-action-controller-generate-action-comment';\nexport { sethubUserActionControllerGenerateActionComment } from './fn/sethub-user-action/sethub-user-action-controller-generate-action-comment';\n","import { Component, inject, OnInit, signal } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { HandbookEntriesService, VoiceHandbookEntryDto } from '../../handbook-api';\nimport { DialogRef } from '../../../../../dialog/dialog-ref';\nimport { DIALOG_DATA } from '../../../../../dialog/dialog.types';\nimport { ButtonComponent } from '../../../../../button/button.component';\n\n@Component({\n selector: 'lib-dialog-edit-voice-text',\n imports: [ButtonComponent, ReactiveFormsModule],\n templateUrl: './dialog-edit-voice-text.component.html',\n styleUrl: './dialog-edit-voice-text.component.scss',\n})\nexport class DialogEditVoiceTextComponent implements OnInit {\n control = new FormControl<string>('', Validators.required);\n isSaving = signal(false);\n\n readonly data = inject(DIALOG_DATA) as { text: string; dto: VoiceHandbookEntryDto };\n readonly dialogRef = inject(DialogRef);\n\n constructor(private readonly handbookEntriesService: HandbookEntriesService) {}\n\n ngOnInit(): void {\n this.control.setValue(this.data.text);\n }\n\n createEntry(): void {\n if (this.control.invalid) {\n this.control.markAsTouched();\n return;\n }\n\n this.isSaving.set(true);\n\n this.handbookEntriesService\n .handbookEntryControllerGenerateHandbookFromText({\n body: { ...this.data.dto, editedText: this.control.value! },\n })\n .subscribe({\n next: () => {\n this.dialogRef.close(true);\n },\n error: error => {\n window.alert('Fehler beim Erstellen des Eintrags');\n console.error('Error creating handbook from voice text:', error);\n },\n });\n }\n}\n","<div>\n <textarea\n rows=\"20\"\n style=\"width: 100%; padding: 10px\"\n matInput\n [formControl]=\"control\"\n ></textarea>\n</div>\n\n<div class=\"bottom\">\n <button ao-button [disabled]=\"isSaving()\" (click)=\"dialogRef.close(false)\" variant=\"outline\">\n Abbrechen\n </button>\n <button ao-button [disabled]=\"isSaving()\" (click)=\"createEntry()\" variant=\"primary\">\n Eintrag erstellen\n </button>\n</div>\n","import {\n ICompanyOverview,\n IUserOverview,\n IUserSessionResponse,\n IWorkspaceApp,\n IWorkspaceAppsResponse,\n} from '@ah-oh/ao-workspaces-types';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, catchError, map, of, tap } from 'rxjs';\nimport { UserSession, WorkspaceNavbarConfig } from './workspace-navbar.types';\n\n@Injectable({ providedIn: 'root' })\nexport class WorkspaceNavbarService {\n private readonly http = inject(HttpClient);\n public static readonly HANDBOOK_COMPANY_ID = '5e81e280c398ce1e2bc5b6fa';\n private static readonly PUBLIC_BASE_URL = '/auth-api/public/auth';\n private static readonly AUTH_BASE_URL = '/auth-api/auth';\n private static readonly WORKSPACE_APPS_URL = '/auth-api/workspace-apps';\n private static readonly COMPANY_URL = '/auth-api/companies';\n private readonly session = new BehaviorSubject<UserSession | null>(null);\n readonly session$ = this.session.asObservable();\n readonly sessionSignal = toSignal(this.session$);\n private readonly workspaceApps = new BehaviorSubject<IWorkspaceApp[]>([]);\n readonly workspaceApps$ = this.workspaceApps.asObservable();\n readonly workspaceAppsSignal = toSignal(this.workspaceApps$);\n private readonly workspaceAppsResponse = new BehaviorSubject<IWorkspaceAppsResponse | null>(null);\n readonly workspaceAppsResponseSignal = toSignal(this.workspaceAppsResponse.asObservable());\n private readonly companies = new BehaviorSubject<ICompanyOverview[]>([]);\n readonly companies$ = this.companies.asObservable();\n readonly companiesSignal = toSignal(this.companies$);\n private readonly activeAppId = new BehaviorSubject<string | undefined>(undefined);\n readonly activeAppIdSignal = toSignal(this.activeAppId.asObservable());\n private loginUrl = 'https://login.ah-oh.com';\n private production = true;\n private preserveRedirectUrl = true;\n\n get userSession(): UserSession | null {\n return this.session.value;\n }\n\n get currentAppId(): string | undefined {\n return this.activeAppId.value;\n }\n\n init(config: WorkspaceNavbarConfig): Promise<void> {\n this.activeAppId.next(config.appId);\n this.production = config.production;\n this.preserveRedirectUrl = config.preserveRedirectUrl ?? true;\n if (config.loginUrl) {\n this.loginUrl = config.loginUrl;\n }\n return new Promise((resolve, reject) => {\n const query = Object.fromEntries([...new URLSearchParams(window.location.search)]);\n const url = query['jwtKey']\n ? `${WorkspaceNavbarService.PUBLIC_BASE_URL}/token/${query['jwtKey']}`\n : `${WorkspaceNavbarService.PUBLIC_BASE_URL}/refresh-session`;\n this.http.get<IUserSessionResponse>(url).subscribe({\n next: res => {\n if (query['jwtKey']) {\n const cleanUrl = new URL(window.location.href);\n cleanUrl.searchParams.delete('jwtKey');\n window.history.replaceState({}, '', cleanUrl.toString());\n }\n const userSession: UserSession = {\n ...res,\n isExternalUser: res.companyId !== res.enabledCompanyId,\n };\n this.activeAppId.next(userSession.appId ?? userSession.product ?? config.appId);\n this.session.next(userSession);\n this.loadWorkspaceApps().subscribe();\n this.findEnabledCompanies().subscribe();\n resolve();\n },\n error: err => {\n console.error('Session initialization failed:', err);\n if (confirm('Ihre Session ist abgelaufen. Bitte melden Sie sich erneut an.')) {\n window.location.href = this.buildLoginUrl();\n }\n reject(err);\n },\n });\n });\n }\n\n loadWorkspaceApps(): Observable<IWorkspaceApp[]> {\n return this.http.get<IWorkspaceAppsResponse>(WorkspaceNavbarService.WORKSPACE_APPS_URL).pipe(\n map(response => {\n const normalizedResponse = this.normalizeWorkspaceAppsResponse(response);\n const workspaceApps = [...normalizedResponse.products, ...normalizedResponse.customApps];\n this.workspaceApps.next(workspaceApps);\n this.workspaceAppsResponse.next(normalizedResponse);\n return workspaceApps;\n }),\n catchError(err => {\n console.error('Failed to load workspace apps:', err);\n return of([]);\n })\n );\n }\n\n findEnabledCompanies(): Observable<ICompanyOverview[]> {\n return this.http.get<ICompanyOverview[]>('/auth-api/public/companies').pipe(\n tap(companies => this.companies.next(companies)),\n catchError(err => {\n console.error('Failed to load companies:', err);\n return of([]);\n })\n );\n }\n\n findUsersFromCompany(): Observable<IUserOverview[]> {\n return this.http.get<IUserOverview[]>(`/auth-api/users/from-company`);\n }\n\n changeCompany(args: {\n companyId?: string;\n appId?: string;\n isTesting?: boolean;\n }): Observable<{ jwtKey: string }> {\n const session = this.session.value;\n if (!session) {\n throw new Error('Session is not initialized.');\n }\n const appId = args.appId ?? this.currentAppId ?? 'admin';\n const companyId = args.companyId ?? session.enabledCompanyId;\n return this.http\n .get<{\n jwtKey: string;\n }>(`/auth-api/users/new-company/${companyId}/${session.userId}/${appId}`)\n .pipe(\n tap(({ jwtKey }) => {\n const app = this.workspaceApps.value.find(a => a.appId === appId);\n const targetUrl = app\n ? this.getRuntimeBaseUrl(app, args.isTesting)\n : window.location.origin;\n window.location.href = this.buildJwtRedirectUrl({ targetUrl, jwtKey });\n })\n );\n }\n\n switchApp(appId: string, isTesting = false): Observable<{ jwtKey: string }> {\n const session = this.session.value;\n if (!session) {\n throw new Error('Session is not initialized.');\n }\n const app = this.workspaceApps.value.find(a => a.appId === appId);\n if (!app) {\n throw new Error(`App ${appId} not found`);\n }\n return this.http\n .get<{\n jwtKey: string;\n }>(`/auth-api/users/new-company/${session.enabledCompanyId}/${session.userId}/${appId}`)\n .pipe(\n tap(({ jwtKey }) => {\n const targetUrl = this.getRuntimeBaseUrl(app, isTesting);\n window.location.href = this.buildJwtRedirectUrl({ targetUrl, jwtKey });\n })\n );\n }\n\n createCompany(): Observable<{ jwtKey: string }> {\n return this.http\n .get<{ jwtKey: string }>(`${WorkspaceNavbarService.AUTH_BASE_URL}/jwt-key`)\n .pipe(\n tap(({ jwtKey }) => {\n window.location.href = this.buildLoginPathUrl('create-company', {\n product: this.currentAppId,\n jwtKey,\n });\n })\n );\n }\n\n signOut(): Observable<{ success: boolean }> {\n return this.http\n .get<{ success: boolean }>(`${WorkspaceNavbarService.PUBLIC_BASE_URL}/sign-out`)\n .pipe(\n tap(() => {\n window.location.href = this.buildLoginUrl();\n })\n );\n }\n\n private buildLoginUrl(): string {\n const url = new URL(this.loginUrl, window.location.origin);\n url.searchParams.set('product', this.currentAppId ?? 'admin');\n if (this.preserveRedirectUrl) {\n const currentUrl = new URL(window.location.href);\n currentUrl.searchParams.delete('jwtKey');\n url.searchParams.set('redirectUrl', currentUrl.toString());\n }\n return url.toString();\n }\n\n replaceSessionParams(url: string): string {\n const session = this.session.value;\n if (!session) {\n throw new Error('Session is not initialized.');\n }\n return url.replace('{company}', session.enabledCompanyId).replace('{user}', session.userId);\n }\n\n getAppUrl(appId: string, isTesting = false): string | undefined {\n const app = this.workspaceApps.value.find(a => a.appId === appId);\n if (!app) return undefined;\n return this.getRuntimeBaseUrl(app, isTesting);\n }\n\n getCompanyLogo(companyId: string): Observable<{ url?: string }> {\n return this.http.get<{ url?: string }>(\n `${WorkspaceNavbarService.COMPANY_URL}/${companyId}/logo`\n );\n }\n\n /**\n * @deprecated Use testingUrl from WorkspaceApp instead\n */\n private getLegacyDevUrl(appId: string): string {\n const devUrls: Record<string, string> = {\n admin: 'http://localhost:4220',\n setHUB: 'http://localhost:4200',\n szales: 'http://localhost:4200',\n 'component-manager': 'http://localhost:4210',\n ai: 'http://localhost:4250',\n };\n return devUrls[appId] ?? `http://localhost:4200`;\n }\n\n private normalizeWorkspaceAppsResponse(response: IWorkspaceAppsResponse): IWorkspaceAppsResponse {\n if (this.production) {\n return response;\n }\n return {\n ...response,\n products: response.products.map(app => this.withRuntimeBaseUrl(app)),\n customApps: response.customApps.map(app => this.withRuntimeBaseUrl(app)),\n };\n }\n\n private withRuntimeBaseUrl(app: IWorkspaceApp): IWorkspaceApp {\n return {\n ...app,\n baseUrl: this.getRuntimeBaseUrl(app),\n };\n }\n\n private getRuntimeBaseUrl(app: IWorkspaceApp, isTesting = false): string {\n if (isTesting && app.testingUrl) {\n return app.testingUrl;\n }\n if (!this.production) {\n return app.testingUrl ?? this.getLegacyDevUrl(app.appId);\n }\n return app.baseUrl;\n }\n\n private buildJwtRedirectUrl(arg: { targetUrl: string; jwtKey: string }): string {\n const targetUrl = this.normalizeTargetUrl(arg.targetUrl);\n const url = new URL(targetUrl, window.location.origin);\n url.searchParams.set('jwtKey', arg.jwtKey);\n return url.toString();\n }\n\n private normalizeTargetUrl(targetUrl: string): string {\n const normalizedUrl = targetUrl.trim();\n if (!normalizedUrl) return window.location.origin;\n if (\n this.hasUrlProtocol(normalizedUrl) ||\n normalizedUrl.startsWith('/') ||\n normalizedUrl.startsWith('#')\n ) {\n return normalizedUrl;\n }\n if (this.isLocalTargetUrl(normalizedUrl)) return `http://${normalizedUrl}`;\n return `https://${normalizedUrl}`;\n }\n\n private hasUrlProtocol(targetUrl: string): boolean {\n return /^[a-z][a-z\\d+\\-.]*:\\/\\//i.test(targetUrl);\n }\n\n private isLocalTargetUrl(targetUrl: string): boolean {\n return /^(localhost|127(?:\\.\\d{1,3}){3}|\\[::1\\])(?::|\\/|$)/i.test(targetUrl);\n }\n\n private buildLoginPathUrl(path: string, params: Record<string, string | undefined>): string {\n const baseUrl = this.loginUrl.endsWith('/') ? this.loginUrl : `${this.loginUrl}/`;\n const url = new URL(path, baseUrl);\n Object.entries(params).forEach(([key, value]) => {\n if (value) url.searchParams.set(key, value);\n });\n return url.toString();\n }\n\n getEnabledApps(): string[] {\n const session = this.session.value;\n return session?.enabledApps ?? this.buildLegacyEnabledApps(session);\n }\n\n /**\n * @deprecated Use session.enabledApps instead\n */\n private buildLegacyEnabledApps(session: UserSession | null): string[] {\n if (!session) return [];\n const apps: string[] = [];\n if (session.adminEnabled) apps.push('admin');\n if (session.setHubEnabled) apps.push('setHUB');\n if (session.szalesEnabled) apps.push('szales');\n if (session.componentManagerEnabled) apps.push('component-manager');\n return apps;\n }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd } from '@angular/router';\nimport RecordRTC from 'recordrtc';\nimport { Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { DialogEditVoiceTextComponent } from './dialog-edit-voice-text/dialog-edit-voice-text.component';\nimport { Product } from '@ah-oh/ao-workspaces-types';\nimport {\n HandbookEntriesService,\n HandbookVoiceResponse,\n VoiceHandbookEntryDto,\n} from '../handbook-api';\nimport { WorkspaceNavbarService } from '../../../../workspace-navbar/workspace-navbar.service';\nimport { DialogService } from '../../../../dialog/dialog.service';\n\n@Injectable()\nexport class HandbookVoiceService {\n recording = signal(false);\n saving = signal(false);\n\n mediaRecorder?: RecordRTC;\n\n private dto: VoiceHandbookEntryDto | undefined;\n private links: { url: string; title: string }[] = [];\n private routerSubscription: Subscription | undefined;\n\n private readonly dialogService = inject(DialogService);\n\n constructor(\n private readonly router: Router,\n private readonly handbookEntriesService: HandbookEntriesService,\n private readonly authService: WorkspaceNavbarService,\n private readonly route: ActivatedRoute\n ) {}\n\n async startRecording(title: string) {\n let app: 'szales' | 'sethub' | 'admin' | undefined;\n\n switch (this.authService.userSession?.product) {\n case Product.SZALES:\n app = 'szales';\n break;\n case Product.SETHUB:\n app = 'sethub';\n break;\n case Product.ADMIN:\n app = 'admin';\n break;\n }\n\n if (!app) {\n throw new Error('Product not found');\n }\n\n const dto: VoiceHandbookEntryDto = {\n title,\n app,\n active: false,\n links: '',\n };\n\n this.dto = dto;\n\n this.links.push({\n url: window.location.href,\n title: this.route.snapshot.title ?? '',\n });\n\n this.routerSubscription = this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n const snapshot = this.route.snapshot;\n this.links.push({\n url: window.location.href,\n title: snapshot.title ?? '',\n });\n }\n });\n\n this.recording.set(true);\n\n const stream = await navigator.mediaDevices.getUserMedia({ audio: true });\n this.mediaRecorder = new RecordRTC(stream, { type: 'audio', mimeType: 'audio/wav' });\n this.mediaRecorder.startRecording();\n }\n\n stopRecording(action: 'save' | 'delete') {\n this.recording.set(false);\n\n const mediaRecorder = this.mediaRecorder;\n const dto = this.dto;\n if (dto) {\n dto.links = JSON.stringify(this.links);\n }\n\n this.routerSubscription?.unsubscribe();\n this.routerSubscription = undefined;\n this.mediaRecorder = undefined;\n this.dto = undefined;\n this.links = [];\n\n if (action === 'save' && mediaRecorder && dto) {\n this.saving.set(true);\n mediaRecorder.stopRecording(async () => {\n const audioBlob = mediaRecorder.getBlob();\n\n try {\n // Convert audioBlob to a format compatible with Whisper\n const audioBuffer = await audioBlob.arrayBuffer();\n const audioFile = new File([audioBuffer], 'audio.wav', { type: 'audio/wav' });\n\n // Send the audio file to your API\n this.handbookEntriesService\n .handbookEntryControllerGetTextFromVoice({\n body: { ...dto, file: audioFile },\n })\n .subscribe({\n next: result => {\n this.openVoiceTextEdit(result, dto);\n this.saving.set(false);\n },\n error: error => {\n window.alert('Fehler beim Erstellen des Texts');\n console.error('Error sending voice data:', error);\n this.saving.set(false);\n },\n });\n } catch (error) {\n console.error('Error processing audio data:', error);\n }\n });\n } else {\n mediaRecorder?.stopRecording();\n }\n }\n\n openVoiceTextEdit(result: HandbookVoiceResponse, dto: VoiceHandbookEntryDto): void {\n const dialog = this.dialogService.open(DialogEditVoiceTextComponent, {\n data: {\n text: result.text,\n dto,\n },\n size: 'xl',\n title: 'Handbuch Aufnahme bearbeiten',\n });\n\n dialog.closed.subscribe(res => {\n if (res) {\n window.alert('Handbuch Eintrag gespeichert');\n }\n });\n }\n}\n","import { Component, input } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport { WorkspaceNavbarService } from '../../../../../workspace-navbar/workspace-navbar.service';\nimport { InputComponent } from '../../../../../input/input.component';\nimport { SelectComponent } from '../../../../../select/select.component';\nimport { ChipsInputComponent } from '../../../../../chips-input/chips-input.component';\nimport { CheckboxComponent } from '../../../../../checkbox/checkbox.component';\nimport { MarkdownComponent } from 'ngx-markdown';\n\nexport enum HandbookAppType {\n SZALES = 'szales',\n SETHUB = 'sethub',\n ADMIN = 'admin',\n}\n\nexport type HandbookForm = FormGroup<{\n _id: FormControl<string | null>;\n title: FormControl<string | null>;\n active: FormControl<boolean | null>;\n content: FormControl<string | null>;\n app: FormControl<HandbookAppType | null>;\n tags: FormControl<string[] | null>;\n}>;\nexport type LinkForm = FormGroup<{\n title: FormControl<string | null>;\n url: FormControl<string | null>;\n}>;\n\n@Component({\n selector: 'lib-handbook',\n imports: [\n ReactiveFormsModule,\n MarkdownComponent,\n InputComponent,\n SelectComponent,\n ChipsInputComponent,\n CheckboxComponent,\n ],\n templateUrl: './handbook.component.html',\n styleUrl: './handbook.component.scss',\n})\nexport class HandbookComponent {\n public form = input<HandbookForm | undefined>();\n public lastSavedText = input<string>();\n public showSpinner = input<boolean>();\n public availableTags = input<string[]>([]);\n\n readonly separatorKeysCodes: number[] = [ENTER, COMMA];\n\n handbookType = HandbookAppType;\n\n constructor(private readonly authService: WorkspaceNavbarService) {}\n}\n","@if (form(); as form) {\n <form [formGroup]=\"form\" class=\"handbook\">\n <div class=\"header\">\n <h1 class=\"title-headline\">{{ form?.value?.title }}</h1>\n <div class=\"save-info\">\n {{ lastSavedText() }}\n </div>\n </div>\n <div class=\"settings\">\n <ao-input label=\"Titel\" type=\"text\" formControlName=\"title\" />\n\n <ao-select\n label=\"App\"\n formControlName=\"app\"\n [options]=\"[\n { value: handbookType.SZALES, label: 'Szales' },\n { value: handbookType.SETHUB, label: 'Sethub' },\n { value: handbookType.ADMIN, label: 'Admin' },\n ]\"\n />\n\n <ao-chips-input label=\"Tags\" [formControl]=\"form.controls.tags\" [options]=\"availableTags()\" />\n\n <ao-checkbox label=\"Aktiv\" formControlName=\"active\" />\n </div>\n <div class=\"content-editor\">\n <div>Inhalt</div>\n <div>Vorschau</div>\n <textarea formControlName=\"content\" class=\"editor\"></textarea>\n <div class=\"preview\">\n <markdown [data]=\"form.controls.content.value ?? ''\"></markdown>\n </div>\n </div>\n </form>\n}\n","import { Component, inject } from '@angular/core';\nimport { DIALOG_DATA } from '../../../../../dialog/dialog.types';\nimport { DialogRef } from '../../../../../dialog/dialog-ref';\nimport { ButtonComponent } from '../../../../../button/button.component';\n\ninterface DeleteHandbookDialogData {\n handbookName: string;\n}\n\n@Component({\n selector: 'lib-dialog-delete-handbook',\n imports: [ButtonComponent],\n templateUrl: './dialog-delete-handbook.component.html',\n styleUrl: './dialog-delete-handbook.component.scss',\n})\nexport class DialogDeleteHandbookComponent {\n readonly data = inject(DIALOG_DATA) as DeleteHandbookDialogData | null;\n readonly dialogRef = inject(DialogRef);\n\n close(remove: boolean) {\n this.dialogRef.close(remove);\n }\n}\n","<p>Möchten Sie das Handbuch \"{{ data?.handbookName }}\" wirklich löschen?</p>\n\n<div class=\"bottom\">\n <button ao-button (click)=\"close(false)\" variant=\"outline\">Abbrechen</button>\n <button ao-button (click)=\"close(true)\" variant=\"primary\">Löschen</button>\n</div>\n","/* eslint-disable @typescript-eslint/consistent-type-assertions */\nimport { Component, computed, inject, OnDestroy, OnInit, signal } from '@angular/core';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { HandbookAppType, HandbookComponent, HandbookForm } from './handbook/handbook.component';\nimport { debounceTime, of, Subject, takeUntil } from 'rxjs';\nimport { DialogDeleteHandbookComponent } from './dialog-delete-handbook/dialog-delete-handbook.component';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { Product } from '@ah-oh/ao-workspaces-types';\nimport { WorkspaceNavbarService } from '../../../../workspace-navbar/workspace-navbar.service';\nimport { HandbookEntriesService, HandbookEntry, HandbookOverviewEntry } from '../handbook-api';\nimport { IconComponent } from '../../../../icon/icon.component';\nimport { phosphorPlus, phosphorTrash, phosphorX } from '@ng-icons/phosphor-icons/regular';\nimport { InputComponent } from '../../../../input/input.component';\nimport { DIALOG_DATA } from '../../../../dialog/dialog.types';\nimport { DialogService } from '../../../../dialog/dialog.service';\nimport { DialogRef } from '../../../../dialog/dialog-ref';\nimport { ButtonComponent } from '../../../../button/button.component';\nimport { MultiselectComponent } from '../../../../multiselect/multiselect.component';\n\nexport interface HandbookDialogData {\n /**\n * ID for a handbook to open intially\n */\n handbookId?: string;\n}\n\ninterface SelectedHandbook {\n overview?: HandbookOverviewEntry; // undefined if newly created and not yet saved\n saveStatus: 'saved' | 'saving' | 'needsSaving' | 'initialLoad';\n lastSaved?: Date;\n}\n\n@Component({\n selector: 'lib-handbook-dialog',\n imports: [\n HandbookComponent,\n IconComponent,\n InputComponent,\n ReactiveFormsModule,\n ButtonComponent,\n MultiselectComponent,\n ],\n templateUrl: './handbook-dialog.component.html',\n styleUrl: './handbook-dialog.component.scss',\n})\nexport class HandbookDialogComponent implements OnInit, OnDestroy {\n readonly data = inject(DIALOG_DATA) as HandbookDialogData;\n readonly dialogRef = inject(DialogRef);\n\n protected readonly addIcon = phosphorPlus;\n protected readonly deleteIcon = phosphorTrash;\n protected readonly closeIcon = phosphorX;\n\n handbookOverviews = signal<HandbookOverviewEntry[]>([]);\n selectedHandbook = signal<SelectedHandbook | undefined>(undefined);\n\n canCreate = computed(() => {\n const selected = this.selectedHandbook();\n return selected === undefined || selected.overview !== undefined;\n });\n\n searchControl = new FormControl<string>('');\n searchTerm = toSignal(this.searchControl.valueChanges);\n\n tagFilterControl = new FormControl<string[]>([]);\n selectedTags = toSignal(this.tagFilterControl.valueChanges);\n\n availableTags = computed(() => {\n // Extract all unique tags from handbook entries\n const allTags = new Set<string>();\n this.handbookOverviews().forEach(handbook => {\n if (handbook.tags && Array.isArray(handbook.tags)) {\n handbook.tags.forEach(tag => allTags.add(tag));\n }\n });\n return Array.from(allTags).sort();\n });\n availableTagsSelect = computed(() => {\n return this.availableTags().map(tag => ({ value: tag, label: tag }));\n });\n\n listedHandbookOverviews = computed(() => {\n const search = this.searchTerm()?.toLowerCase() || '';\n const selectedTags = this.selectedTags() || [];\n\n return this.handbookOverviews().filter(handbook => {\n // Filter by search text\n const matchesSearch = handbook.title.toLowerCase().includes(search);\n\n // Filter by tags\n const matchesTags =\n selectedTags.length === 0 ||\n (handbook.tags && selectedTags.some(tag => handbook.tags.includes(tag)));\n\n return matchesSearch && matchesTags;\n });\n });\n\n currentlySaving = computed(() => {\n return this.selectedHandbook()?.saveStatus === 'saving';\n });\n\n lastSavedText = computed(() => {\n const selected = this.selectedHandbook();\n if (!selected) return undefined;\n switch (selected.saveStatus) {\n case 'saved':\n return `Zuletzt gespeichert: ${selected.lastSaved?.toLocaleString('de-DE', {\n dateStyle: 'short',\n timeStyle: 'short',\n })}`;\n case 'saving':\n return `Speichern...`;\n case 'needsSaving':\n return `Ungespeicherte Änderungen`;\n case 'initialLoad':\n return undefined;\n }\n });\n\n form: HandbookForm = new FormGroup({\n _id: new FormControl(''),\n title: new FormControl('', Validators.required),\n active: new FormControl(true),\n content: new FormControl('', Validators.required),\n app: new FormControl<HandbookAppType | null>(\n { value: null, disabled: true },\n Validators.required\n ),\n tags: new FormControl<string[]>([]),\n });\n destroy = new Subject<void>();\n\n private type: HandbookAppType = HandbookAppType.SZALES;\n\n private readonly dialogService = inject(DialogService);\n\n constructor(\n private readonly handbookEntriesService: HandbookEntriesService,\n private readonly authService: WorkspaceNavbarService\n ) {}\n\n ngOnInit() {\n const product = this.authService.userSession?.product;\n this.type =\n product === Product.SZALES\n ? HandbookAppType.SZALES\n : product === Product.SETHUB\n ? HandbookAppType.SETHUB\n : HandbookAppType.ADMIN;\n\n this.handbookEntriesService\n .handbookEntryControllerFindAllHandbookEntriesForOverview({\n app: this.type,\n })\n .subscribe(handbookEntries => {\n this.handbookOverviews.set(handbookEntries.entries);\n if (this.data?.handbookId) {\n const selected = this.handbookOverviews().find(\n handbook => handbook._id === this.data!.handbookId\n );\n if (selected) {\n this.select(selected);\n }\n }\n });\n this.form.valueChanges.pipe(takeUntil(this.destroy)).subscribe(() => {\n this.selectedHandbook.update(handbook => {\n if (!handbook) return undefined;\n return {\n ...handbook,\n saveStatus: 'needsSaving',\n };\n });\n });\n this.form.valueChanges.pipe(takeUntil(this.destroy), debounceTime(1000)).subscribe(() => {\n if (!this.form.valid) return;\n this.save();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy.next();\n this.destroy.complete();\n }\n\n add() {\n this.select(undefined);\n }\n\n save() {\n if (!this.form.valid) return;\n const selected = this.selectedHandbook();\n if (!selected) return;\n if (selected.saveStatus !== 'needsSaving') return;\n this.selectedHandbook.update(selected => {\n if (!selected) return selected;\n return {\n ...selected,\n saveStatus: 'saving',\n };\n });\n const formValue = this.form.getRawValue();\n if (!selected.overview) {\n this.handbookEntriesService\n .handbookEntryControllerCreateHandbookEntry({\n body: {\n title: formValue.title ?? '',\n app: formValue.app ?? 'szales',\n active: formValue.active ?? false,\n content: formValue.content ?? '',\n tags: formValue.tags ?? undefined,\n },\n })\n .subscribe(entry => {\n const handbook: HandbookOverviewEntry = {\n _id: entry._id,\n app: entry.app as HandbookAppType,\n title: entry.title,\n tags: entry.tags,\n };\n\n this.handbookOverviews.update(handbooks => [...handbooks, handbook]);\n\n if (!this.selectedHandbook()?.overview) {\n this.select(handbook, entry);\n }\n });\n } else {\n if (!formValue._id) return;\n this.handbookEntriesService\n .handbookEntryControllerUpdateHandbookEntry({\n body: {\n title: formValue.title ?? '',\n app: formValue.app ?? 'szales',\n active: formValue.active ?? false,\n content: formValue.content ?? undefined,\n tags: formValue.tags ?? undefined,\n },\n id: formValue._id,\n })\n .subscribe(updated => {\n this.handbookOverviews.update(handbooks => {\n const handbook = handbooks.find(handbook => handbook._id === updated._id);\n\n if (!handbook) {\n return handbooks;\n }\n\n handbook.app = updated.app as HandbookAppType;\n handbook.title = updated.title;\n handbook.tags = updated.tags;\n return [...handbooks];\n });\n if (this.selectedHandbook()?.overview?._id === updated._id) {\n this.selectedHandbook.update(selected => {\n if (!selected) {\n return selected;\n }\n\n return {\n ...selected,\n saveStatus: 'saved',\n lastSaved: new Date(updated.updatedAt),\n };\n });\n }\n });\n }\n }\n\n remove(entry: HandbookOverviewEntry) {\n const dialog = this.dialogService.open(DialogDeleteHandbookComponent, {\n data: {\n handbookName: entry.title,\n },\n title: `Möchten Sie das Handbuch \"${entry.title}\" wirklich löschen?`,\n });\n\n dialog.closed.subscribe(action => {\n if (action) {\n this.handbookEntriesService\n .handbookEntryControllerDeleteHandbookEntry({\n id: entry._id,\n })\n .subscribe(deletedHandbook => {\n this.handbookOverviews.update(handbooks => {\n return handbooks.filter(handbook => handbook._id !== deletedHandbook._id);\n });\n if (this.selectedHandbook()?.overview?._id === deletedHandbook._id) {\n this.select(null);\n }\n });\n }\n });\n }\n\n select(entry: HandbookOverviewEntry | null | undefined, loadedEntry?: HandbookEntry) {\n const isNew = entry === undefined;\n if (entry === null) {\n // deselect\n this.selectedHandbook.set(undefined);\n return;\n }\n if (!isNew && entry._id === this.selectedHandbook()?.overview?._id) return;\n this.save();\n\n const selectedHandbook: SelectedHandbook = {\n overview: entry,\n saveStatus: 'initialLoad',\n lastSaved: loadedEntry?.updatedAt ? new Date(loadedEntry.updatedAt) : undefined,\n };\n this.selectedHandbook.set(selectedHandbook);\n if (!isNew) {\n (loadedEntry\n ? of(loadedEntry)\n : this.handbookEntriesService.handbookEntryControllerFindHandbookEntryById({\n id: selectedHandbook.overview!._id,\n })\n ).subscribe(handbook => {\n if (this.selectedHandbook()?.overview?._id !== handbook._id) return;\n this.selectedHandbook.update(selected => {\n if (!selected) return selected;\n return {\n ...selected,\n saveStatus: 'saved',\n lastSaved: new Date(handbook.updatedAt),\n };\n });\n\n const appType = handbook.app as HandbookAppType;\n\n this.form.patchValue(\n { ...handbook, app: appType },\n {\n emitEvent: false,\n }\n );\n });\n } else {\n this.form.reset();\n this.form.get('app')?.setValue(this.type, { emitEvent: false });\n }\n }\n}\n","<button class=\"button-cancel\" ao-button variant=\"outline\" (click)=\"dialogRef.close()\">\n <ao-icon [svg]=\"closeIcon\"></ao-icon>\n</button>\n<div class=\"dialog-content\">\n <div class=\"sidebar\">\n <div class=\"header\">\n <h1>Handbuch</h1>\n <button ao-button variant=\"outline\" [disabled]=\"!canCreate()\" (click)=\"add()\">\n <ao-icon [svg]=\"addIcon\" size=\"sm\"></ao-icon>\n </button>\n </div>\n\n <ao-input class=\"full-width\" label=\"Suche\" type=\"text\" [formControl]=\"searchControl\" />\n\n <div style=\"margin: 20px 0px\">\n <ao-multiselect\n label=\"Tags\"\n [formControl]=\"tagFilterControl\"\n [options]=\"availableTagsSelect()\"\n />\n </div>\n\n <div class=\"handbook-list\">\n @for (entry of listedHandbookOverviews(); track entry._id) {\n <div\n class=\"handbook-entry\"\n [class.active]=\"entry === selectedHandbook()?.overview\"\n (click)=\"select(entry)\"\n >\n <div class=\"title\">{{ entry.title }}</div>\n\n <ao-icon [svg]=\"deleteIcon\" (click)=\"remove(entry); $event.stopPropagation()\" />\n </div>\n }\n </div>\n </div>\n <div class=\"content\">\n @if (selectedHandbook(); as handbook) {\n <div class=\"card\">\n @if (handbook.saveStatus !== 'initialLoad') {\n <lib-handbook\n [form]=\"form\"\n [lastSavedText]=\"lastSavedText()\"\n [showSpinner]=\"currentlySaving()\"\n [availableTags]=\"availableTags()\"\n class=\"handbook\"\n ></lib-handbook>\n }\n </div>\n }\n </div>\n</div>\n","import { Component, inject } from '@angular/core';\nimport { ButtonComponent } from '../../../../../button/button.component';\nimport { DialogRef } from '../../../../../dialog/dialog-ref';\n\n@Component({\n selector: 'lib-stop-record-dialog',\n imports: [ButtonComponent],\n templateUrl: './stop-record-dialog.component.html',\n styleUrl: './stop-record-dialog.component.scss',\n})\nexport class StopRecordDialogComponent {\n readonly dialogRef = inject(DialogRef);\n\n onCancel() {\n this.dialogRef.close();\n }\n\n onStop(save: boolean = false) {\n this.dialogRef.close(save ? 'save' : 'delete');\n }\n}\n","<p>Möchten Sie die Aufnahme wirklich beenden?</p>\n\n<div class=\"bottom\">\n <button ao-button variant=\"outline\" (click)=\"onCancel()\">Abbrechen</button>\n <button ao-button (click)=\"onStop()\" color=\"primary\">Beenden und löschen</button>\n <button ao-button (click)=\"onStop(true)\" variant=\"secondary\">Beenden und speichern</button>\n</div>\n","import { Component, inject } from '@angular/core';\nimport { ButtonComponent } from '../../../../../button/button.component';\nimport { DialogRef } from '../../../../../dialog/dialog-ref';\nimport { InputComponent } from '../../../../../input/input.component';\n\n@Component({\n selector: 'lib-start-record-dialog',\n imports: [ButtonComponent, InputComponent],\n templateUrl: './start-record-dialog.component.html',\n styleUrl: './start-record-dialog.component.scss',\n})\nexport class StartRecordDialogComponent {\n readonly dialogRef = inject(DialogRef);\n\n title = '';\n\n onCancel() {\n this.dialogRef.close();\n }\n\n onStart() {\n this.dialogRef.close(this.title);\n }\n}\n","<ao-input class=\"full-width\" label=\"Titel\" type=\"text\" [(value)]=\"title\" />\n\n<div class=\"bottom\">\n <button ao-button (click)=\"onCancel()\" variant=\"outline\">Abbrechen</button>\n <button ao-button (click)=\"onStart()\" variant=\"primary\" [disabled]=\"!title\">\n Aufnahme starten\n </button>\n</div>\n","import { AccessRole, Product } from '@ah-oh/ao-workspaces-types';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n inject,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n PLATFORM_ID,\n} from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { Subject, takeUntil } from 'rxjs';\nimport { HandbookVoiceService } from './handbook-dialog/handbook-voice.service';\nimport { WorkspaceNavbarService } from '../../../workspace-navbar/workspace-navbar.service';\nimport { isPlatformBrowser } from '@angular/common';\nimport { HandbookDialogComponent } from './handbook-dialog/handbook-dialog.component';\nimport { StopRecordDialogComponent } from './handbook-dialog/stop-record-dialog/stop-record-dialog.component';\nimport { StartRecordDialogComponent } from './handbook-dialog/start-record-dialog/start-record-dialog.component';\nimport {\n phosphorBookOpenText,\n phosphorDotsThreeVertical,\n phosphorMicrophone,\n phosphorTestTube,\n} from '@ng-icons/phosphor-icons/regular';\nimport { TableRowActionsComponent } from '../../../table/components/table-row-actions.component';\nimport { TableRowAction } from '../../../table/table.types';\nimport { DialogService } from '../../../dialog/dialog.service';\n\n@Component({\n selector: 'ao-nav-tools',\n templateUrl: './nav-tools.component.html',\n styleUrl: './nav-tools.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-nav-tools',\n },\n imports: [TableRowActionsComponent],\n providers: [HandbookVoiceService],\n})\nexport class NavToolsComponent implements OnInit, OnDestroy {\n protected readonly moreVertIcon = phosphorDotsThreeVertical;\n protected readonly handbookIcon = phosphorBookOpenText;\n protected readonly handbookRecordIcon = phosphorMicrophone;\n protected readonly testIcon = phosphorTestTube;\n\n @Input() activeCompany: string | null = '';\n @Input() companySearch!: FormControl;\n\n @Output() changeCompany = new EventEmitter<string>();\n\n isTesting = new FormControl<boolean>(false);\n\n product = Product;\n accessRole = AccessRole;\n\n rowActions = computed(() => {\n const session = this.authService.sessionSignal();\n\n const actions: TableRowAction[] = [\n { id: 'handbook', label: 'Handbuch', icon: this.handbookIcon },\n { id: 'record-handbook', label: 'Handbuch aufnehmen', icon: this.handbookRecordIcon },\n ];\n\n if (\n (session?.product === Product.SZALES || session?.product === Product.SETHUB) &&\n session?.role === AccessRole.SUPER_ADMIN\n ) {\n actions.unshift({ id: 'preview', label: 'Toggle Preview', icon: this.testIcon });\n }\n\n return actions;\n });\n\n private readonly destroy = new Subject<void>();\n\n private readonly dialogService = inject(DialogService);\n\n constructor(\n public readonly handbookVoiceService: HandbookVoiceService,\n public readonly authService: WorkspaceNavbarService,\n @Inject(PLATFORM_ID) private readonly platformId: object\n ) {}\n\n ngOnInit(): void {\n this.authService.session$.pipe(takeUntil(this.destroy)).subscribe(session => {\n if (isPlatformBrowser(this.platformId)) {\n const isTesting =\n (session?.product === Product.SZALES &&\n window.location.href.includes('https://preview.szales.de')) ||\n (session?.product === Product.SETHUB &&\n window.location.href.includes('https://preview.sethub.de'));\n\n this.isTesting.setValue(isTesting, { emitEvent: false });\n }\n });\n\n this.isTesting.valueChanges.pipe(takeUntil(this.destroy)).subscribe(value => {\n this.authService\n .changeCompany({\n companyId: this.authService.userSession?.enabledCompanyId,\n isTesting: !!value,\n })\n .subscribe();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy.next();\n this.destroy.complete();\n }\n\n onRowActionClick(action: TableRowAction<string>): void {\n if (action.id === 'preview') {\n this.isTesting.setValue(!this.isTesting.value);\n } else if (action.id === 'handbook') {\n this.openHandbookDialog();\n } else if (action.id === 'record-handbook') {\n this.startRecording();\n }\n }\n\n openHandbookDialog() {\n this.dialogService.open(HandbookDialogComponent, {\n size: 'full',\n showFooter: false,\n showHeader: false,\n });\n }\n\n startRecording() {\n const dialog = this.dialogService.open(StartRecordDialogComponent, {\n size: 'md',\n title: 'Handbuch aufnehmen',\n showFooter: false,\n });\n\n dialog.closed.subscribe(title => {\n if (title && typeof title === 'string') {\n this.handbookVoiceService.startRecording(title);\n }\n });\n }\n\n stopRecording() {\n const dialog = this.dialogService.open(StopRecordDialogComponent, {\n size: 'md',\n title: 'Aufnahme beenden',\n showFooter: false,\n });\n\n dialog.closed.subscribe(action => {\n if (action === 'save' || action === 'delete') {\n this.handbookVoiceService.stopRecording(action);\n }\n });\n }\n}\n","<div>\n <!-- Show the button only when not recording -->\n @if (!handbookVoiceService.recording() && !handbookVoiceService.saving()) {\n <ao-table-row-actions\n [actions]=\"rowActions()\"\n [row]=\"'test'\"\n (actionClick)=\"onRowActionClick($event)\"\n />\n }\n\n <!-- Show the recording indicator when recording -->\n @if (handbookVoiceService.recording()) {\n <div class=\"recording-indicator\" (click)=\"stopRecording()\">\n <span class=\"red-dot\"></span>\n <span>Recording...</span>\n </div>\n }\n</div>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n model,\n output,\n signal,\n viewChildren,\n} from '@angular/core';\nimport { IconComponent } from '../../icon/icon.component';\nimport { AiSearchComponent } from '../ai-search/ai-search.component';\nimport { NotificationButtonComponent } from '../notification-button/notification-button.component';\nimport {\n NavItem,\n NavItemChangeEvent,\n PageSuggestion,\n RecommendedFilter,\n SearchPage,\n SearchResult,\n SearchResultGroup,\n SearchSubmitEvent,\n} from '../navigation.types';\nimport { buildSearchPagesFromNavItems } from '../search-pages';\nimport { NavToolsComponent } from './nav-tools/nav-tools.component';\n\n@Component({\n selector: 'ao-top-nav',\n imports: [IconComponent, AiSearchComponent, NotificationButtonComponent, NavToolsComponent],\n templateUrl: './top-nav.component.html',\n styleUrl: './top-nav.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-top-nav',\n },\n})\nexport class TopNavComponent implements AfterViewInit {\n readonly items = input<NavItem[]>([]);\n readonly activeItemId = model<string>('');\n readonly showSearch = input<boolean>(true);\n readonly showNotifications = input<boolean>(true);\n readonly notificationCount = input<number>(0);\n readonly searchPlaceholder = input<string>('Suche oder Prompt');\n readonly showTools = input<boolean>(false);\n readonly recommendedFilters = input<RecommendedFilter[]>([]);\n readonly activeFilter = model<RecommendedFilter | null>(null);\n readonly resultGroups = input<SearchResultGroup[]>([]);\n readonly searchPages = input<readonly SearchPage[] | null>(null);\n readonly pageSuggestion = input<PageSuggestion | null>(null);\n readonly aiSuggestions = input<SearchResult[]>([]);\n readonly searchLoading = input<boolean>(false);\n readonly searchError = input<string | null>(null);\n readonly itemClick = output<NavItem>();\n readonly itemChange = output<NavItemChangeEvent>();\n readonly searchSubmit = output<SearchSubmitEvent>();\n readonly searchQueryChange = output<string>();\n readonly searchResultSelect = output<SearchResult>();\n readonly searchAiSuggestionSelect = output<SearchResult>();\n readonly searchPageSuggestionSelect = output<PageSuggestion>();\n readonly searchFilterSelect = output<RecommendedFilter>();\n readonly searchFilterClear = output<void>();\n readonly searchViewAll = output<string>();\n readonly notificationClick = output<void>();\n\n protected searchValue = '';\n protected readonly indicatorStyle = signal<{ left: string; width: string }>({\n left: '0',\n width: '0',\n });\n protected readonly showIndicator = signal(false);\n\n private readonly navItems = viewChildren<ElementRef<HTMLElement>>('navItem');\n\n protected readonly activeIndex = computed(() => {\n const activeId = this.activeItemId();\n return this.items().findIndex(item => item.id === activeId);\n });\n protected readonly effectiveSearchPages = computed<readonly SearchPage[]>(() => {\n return this.searchPages() ?? buildSearchPagesFromNavItems(this.items());\n });\n\n constructor() {\n effect(() => {\n const index = this.activeIndex();\n const items = this.navItems();\n if (index >= 0 && items.length > index) {\n this.updateIndicator(items[index].nativeElement);\n }\n });\n }\n\n ngAfterViewInit(): void {\n requestAnimationFrame(() => {\n const index = this.activeIndex();\n const items = this.navItems();\n if (index >= 0 && items.length > index) {\n this.updateIndicator(items[index].nativeElement);\n this.showIndicator.set(true);\n }\n });\n }\n\n protected onItemClick(item: NavItem): void {\n if (item.disabled) {\n return;\n }\n const previousItem = this.items().find(i => i.id === this.activeItemId()) ?? null;\n this.activeItemId.set(item.id);\n this.itemClick.emit(item);\n this.itemChange.emit({ item, previousItem });\n }\n\n protected onSearchSubmit(event: SearchSubmitEvent): void {\n this.searchSubmit.emit(event);\n }\n\n protected onNotificationClick(): void {\n this.notificationClick.emit();\n }\n\n protected onKeydown(event: KeyboardEvent, item: NavItem): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.onItemClick(item);\n }\n }\n\n private updateIndicator(element: HTMLElement): void {\n const rect = element.getBoundingClientRect();\n const parentRect = element.closest('.top-nav__list')?.getBoundingClientRect();\n if (parentRect) {\n this.indicatorStyle.set({\n left: `${rect.left - parentRect.left}px`,\n width: `${rect.width}px`,\n });\n }\n }\n}\n","<nav class=\"top-nav-outer\" role=\"navigation\" aria-label=\"Main navigation\">\n <div class=\"top-nav\">\n <div class=\"top-nav__list-wrapper\">\n <ul class=\"top-nav__list\" role=\"menubar\">\n @for (item of items(); track item.id) {\n <li role=\"none\">\n <a\n #navItem\n class=\"top-nav__item\"\n [class.top-nav__item--active]=\"item.id === activeItemId()\"\n [class.top-nav__item--disabled]=\"item.disabled\"\n [attr.href]=\"item.route ?? null\"\n [attr.aria-current]=\"item.id === activeItemId() ? 'page' : null\"\n [attr.aria-disabled]=\"item.disabled || null\"\n [attr.tabindex]=\"item.disabled ? -1 : 0\"\n role=\"menuitem\"\n (click)=\"$event.preventDefault(); onItemClick(item)\"\n (keydown)=\"onKeydown($event, item)\"\n >\n @if (item.icon) {\n <ao-icon [svg]=\"item.icon\" size=\"sm\" />\n }\n {{ item.label }}\n </a>\n </li>\n }\n </ul>\n @if (showIndicator()) {\n <span\n class=\"top-nav__indicator\"\n [style.left]=\"indicatorStyle().left\"\n [style.width]=\"indicatorStyle().width\"\n ></span>\n }\n </div>\n\n <div class=\"top-nav__actions\">\n @if (showSearch()) {\n <ao-ai-search\n [placeholder]=\"searchPlaceholder()\"\n [(value)]=\"searchValue\"\n [recommendedFilters]=\"recommendedFilters()\"\n [(activeFilter)]=\"activeFilter\"\n [resultGroups]=\"resultGroups()\"\n [searchPages]=\"effectiveSearchPages()\"\n [pageSuggestion]=\"pageSuggestion()\"\n [aiSuggestions]=\"aiSuggestions()\"\n [loading]=\"searchLoading()\"\n [error]=\"searchError()\"\n (submit)=\"onSearchSubmit($event)\"\n (queryChange)=\"searchQueryChange.emit($event)\"\n (resultSelect)=\"searchResultSelect.emit($event)\"\n (aiSuggestionSelect)=\"searchAiSuggestionSelect.emit($event)\"\n (pageSuggestionSelect)=\"searchPageSuggestionSelect.emit($event)\"\n (filterSelect)=\"searchFilterSelect.emit($event)\"\n (filterClear)=\"searchFilterClear.emit()\"\n (viewAllClick)=\"searchViewAll.emit($event)\"\n />\n }\n @if (showTools()) {\n <ao-nav-tools />\n }\n @if (showNotifications()) {\n <ao-notification-button\n [count]=\"notificationCount()\"\n (buttonClick)=\"onNotificationClick()\"\n />\n }\n </div>\n </div>\n</nav>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostListener,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { phosphorCaretDown, phosphorSparkle } from '@ng-icons/phosphor-icons/regular';\nimport { ButtonComponent } from '../../button/button.component';\nimport { IconComponent } from '../../icon/icon.component';\nimport { SearchPage, SearchResult, SearchResultGroup, SearchResultType } from '../navigation.types';\nimport { createSearchPageGroup } from '../search-pages';\n\nexport interface SearchResultsTypeOption {\n value: SearchResultType | null;\n label: string;\n}\n\n@Component({\n selector: 'ao-search-results-page',\n imports: [ButtonComponent, IconComponent],\n templateUrl: './search-results-page.component.html',\n styleUrl: './search-results-page.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-search-results-page',\n },\n})\nexport class SearchResultsPageComponent {\n private readonly sanitizer = inject(DomSanitizer);\n private readonly hostRef = inject(ElementRef<HTMLElement>);\n\n readonly query = input<string>('');\n readonly groups = input<SearchResultGroup[]>([]);\n readonly searchPages = input<readonly SearchPage[]>([]);\n readonly availableTypes = input<SearchResultsTypeOption[]>([]);\n readonly typeFilter = model<SearchResultType | null>(null);\n\n readonly resultClick = output<SearchResult>();\n\n protected readonly caretDownIcon = phosphorCaretDown;\n protected readonly sparkleIcon = phosphorSparkle;\n protected readonly typeFilterOpen = signal<boolean>(false);\n protected readonly effectiveGroups = computed<SearchResultGroup[]>(() => {\n const pageGroup = createSearchPageGroup({ pages: this.searchPages(), query: this.query() });\n return pageGroup ? [pageGroup, ...this.groups()] : this.groups();\n });\n protected readonly typeOptions = computed<SearchResultsTypeOption[]>(() => {\n const configured = this.availableTypes();\n if (configured.length > 0) {\n return configured;\n }\n const seen = new Set<SearchResultType>();\n const options = this.effectiveGroups().reduce<SearchResultsTypeOption[]>(\n (items, group) => {\n if (seen.has(group.type)) {\n return items;\n }\n seen.add(group.type);\n items.push({ value: group.type, label: group.label });\n return items;\n },\n [{ value: null, label: 'Alle Typen' }]\n );\n return options;\n });\n protected readonly activeTypeLabel = computed(\n () =>\n this.typeOptions().find(option => option.value === this.typeFilter())?.label ?? 'Alle Typen'\n );\n protected readonly filteredGroups = computed<SearchResultGroup[]>(() => {\n const type = this.typeFilter();\n if (type === null) {\n return this.effectiveGroups();\n }\n return this.effectiveGroups().filter(group => group.type === type);\n });\n\n @HostListener('document:click', ['$event'])\n protected onDocumentClick(event: MouseEvent): void {\n if (!this.typeFilterOpen()) {\n return;\n }\n const target = event.target as Node | null;\n if (target && !this.hostRef.nativeElement.contains(target)) {\n this.typeFilterOpen.set(false);\n }\n }\n\n protected onResultClick(r: SearchResult): void {\n this.resultClick.emit(r);\n }\n\n protected onTypeFilterClick(): void {\n this.typeFilterOpen.update(isOpen => !isOpen);\n }\n\n protected onTypeOptionClick(option: SearchResultsTypeOption): void {\n this.typeFilter.set(option.value);\n this.typeFilterOpen.set(false);\n }\n\n protected highlight(text: string): SafeHtml {\n const query = this.query().trim();\n if (!query) {\n return this.sanitizer.bypassSecurityTrustHtml(this.escapeHtml(text));\n }\n const escaped = this.escapeHtml(text);\n const pattern = new RegExp(this.escapeRegex(query), 'gi');\n const highlighted = escaped.replace(\n pattern,\n match => `<mark class=\"search-results__hl\">${match}</mark>`\n );\n return this.sanitizer.bypassSecurityTrustHtml(highlighted);\n }\n\n private escapeHtml(text: string): string {\n return text\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;');\n }\n\n private escapeRegex(text: string): string {\n return text.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n}\n","<header class=\"search-results__header\">\n <h1 class=\"search-results__title\">Suchergebnisse</h1>\n <div class=\"search-results__filters\">\n <div class=\"search-results__type-filter\">\n <button\n ao-button\n variant=\"outline\"\n [iconTrailing]=\"caretDownIcon\"\n [attr.aria-expanded]=\"typeFilterOpen()\"\n aria-haspopup=\"listbox\"\n (click)=\"onTypeFilterClick()\"\n >\n {{ activeTypeLabel() }}\n </button>\n @if (typeFilterOpen()) {\n <div class=\"search-results__type-menu\" role=\"listbox\">\n @for (option of typeOptions(); track option.value ?? 'all') {\n <button\n type=\"button\"\n class=\"search-results__type-option\"\n [class.search-results__type-option--active]=\"option.value === typeFilter()\"\n [attr.aria-selected]=\"option.value === typeFilter()\"\n role=\"option\"\n (click)=\"onTypeOptionClick(option)\"\n >\n {{ option.label }}\n </button>\n }\n </div>\n }\n </div>\n </div>\n</header>\n\n@for (group of filteredGroups(); track group.type) {\n <section class=\"search-results__section\">\n <div class=\"search-results__section-header\">\n <h2 class=\"search-results__section-title\">{{ group.label }}</h2>\n <span class=\"search-results__count\">\n {{ group.totalCount ?? group.results.length }} Ergebnisse\n </span>\n </div>\n\n @if (group.type !== 'ki') {\n @if (group.columns?.length) {\n <div class=\"search-results__row search-results__row--head\">\n @for (col of group.columns; track col) {\n <span class=\"search-results__cell search-results__cell--head\">{{ col }}</span>\n }\n </div>\n }\n @for (r of group.results; track r.id) {\n <button type=\"button\" class=\"search-results__row\" (click)=\"onResultClick(r)\">\n <span\n class=\"search-results__cell search-results__cell--primary\"\n [innerHTML]=\"highlight(r.primary)\"\n ></span>\n <span class=\"search-results__cell\">{{ r.secondary }}</span>\n <span class=\"search-results__cell\">{{ r.tertiary }}</span>\n </button>\n }\n } @else {\n @for (r of group.results; track r.id) {\n <button type=\"button\" class=\"search-results__ai-row\" (click)=\"onResultClick(r)\">\n <ao-icon [svg]=\"sparkleIcon\" size=\"sm\" class=\"search-results__ai-icon\" />\n <span [innerHTML]=\"highlight(r.primary)\"></span>\n </button>\n }\n }\n </section>\n} @empty {\n <div class=\"search-results__empty\">Keine Ergebnisse gefunden</div>\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { inject, Injectable, InjectionToken, signal } from '@angular/core';\nimport {\n asyncScheduler,\n catchError,\n firstValueFrom,\n map,\n Observable,\n of,\n Subject,\n switchMap,\n throttleTime,\n} from 'rxjs';\nimport {\n PageSuggestion,\n RecommendedFilter,\n SearchEntityType,\n SearchPayload,\n SearchResult,\n SearchResultGroup,\n} from '../navigation.types';\n\nexport const ROBIN_API_BASE_URL = new InjectionToken<string>('ROBIN_API_BASE_URL', {\n providedIn: 'root',\n factory: () => '',\n});\n\n/**\n * Identifies the calling application toward the Robin search workflow.\n * Apps must provide this in their `appConfig` (e.g. `'showcase'`, `'admin'`).\n */\nexport const ROBIN_SEARCH_APP_NAME = new InjectionToken<string>('ROBIN_SEARCH_APP_NAME', {\n providedIn: 'root',\n factory: () => 'unknown',\n});\n\nconst QUICK_THROTTLE_MS = 200;\n\ninterface QuickSearchInput {\n readonly query: string;\n readonly type?: SearchEntityType;\n}\n\ninterface QuickSearchOutcome {\n readonly query: string;\n readonly payload: Partial<SearchPayload> | null;\n readonly failed: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class RobinSearchService {\n private readonly http = inject(HttpClient);\n private readonly baseUrl = inject(ROBIN_API_BASE_URL);\n private readonly appName = inject(ROBIN_SEARCH_APP_NAME);\n\n readonly query = signal('');\n readonly loading = signal(false);\n readonly error = signal<string | null>(null);\n readonly recommendedFilters = signal<RecommendedFilter[]>([]);\n readonly resultGroups = signal<SearchResultGroup[]>([]);\n readonly pageSuggestion = signal<PageSuggestion | null>(null);\n readonly aiSuggestions = signal<SearchResult[]>([]);\n\n private readonly quickSearchInput$ = new Subject<QuickSearchInput>();\n\n constructor() {\n this.quickSearchInput$\n .pipe(\n throttleTime(QUICK_THROTTLE_MS, asyncScheduler, { leading: true, trailing: true }),\n switchMap(({ query, type }) => this.fetchQuickSearch(query, type)),\n )\n .subscribe((outcome) => this.applyQuickSearchOutcome(outcome));\n }\n\n async loadRecommendedFilters(): Promise<void> {\n try {\n const params = new HttpParams().set('appName', this.appName);\n const filters = await firstValueFrom(\n this.http.get<RecommendedFilter[]>(this.url('/search/recommended-filters'), { params }),\n );\n this.recommendedFilters.set(filters ?? []);\n } catch (err) {\n console.warn('[RobinSearch] loadRecommendedFilters failed', err);\n this.recommendedFilters.set([]);\n }\n }\n\n search(query: string, type?: SearchEntityType): void {\n this.query.set(query);\n if (!query.trim()) {\n this.resultGroups.set([]);\n this.pageSuggestion.set(null);\n this.aiSuggestions.set([]);\n this.error.set(null);\n this.loading.set(false);\n return;\n }\n this.loading.set(true);\n this.quickSearchInput$.next({ query, type });\n }\n\n async loadFull(\n query: string,\n type?: SearchEntityType,\n date?: string,\n ): Promise<Partial<SearchPayload>> {\n let params = new HttpParams().set('q', query).set('appName', this.appName);\n if (type) params = params.set('type', type);\n if (date) params = params.set('date', date);\n this.loading.set(true);\n this.error.set(null);\n try {\n const payload = await firstValueFrom(\n this.http.get<Partial<SearchPayload> | null>(this.url('/search/full'), { params }),\n );\n const safe = payload ?? {};\n this.resultGroups.set(safe.groups ?? []);\n this.aiSuggestions.set(safe.aiSuggestions ?? []);\n return safe;\n } catch (err) {\n console.warn('[RobinSearch] loadFull failed', err);\n this.error.set('Suche fehlgeschlagen');\n this.resultGroups.set([]);\n this.aiSuggestions.set([]);\n return {};\n } finally {\n this.loading.set(false);\n }\n }\n\n private fetchQuickSearch(\n query: string,\n type?: SearchEntityType,\n ): Observable<QuickSearchOutcome> {\n let params = new HttpParams().set('q', query).set('appName', this.appName);\n if (type) params = params.set('type', type);\n return this.http\n .get<Partial<SearchPayload> | null>(this.url('/search/quick'), { params })\n .pipe(\n map((payload) => ({ query, payload, failed: false })),\n catchError((err) => {\n console.warn('[RobinSearch] quickSearch failed', err);\n return of<QuickSearchOutcome>({ query, payload: null, failed: true });\n }),\n );\n }\n\n private applyQuickSearchOutcome(outcome: QuickSearchOutcome): void {\n if (this.query() !== outcome.query) {\n return;\n }\n if (outcome.failed) {\n this.error.set('Suche fehlgeschlagen');\n this.resultGroups.set([]);\n this.pageSuggestion.set(null);\n this.aiSuggestions.set([]);\n } else {\n const safe = outcome.payload ?? {};\n this.resultGroups.set(safe.groups ?? []);\n this.pageSuggestion.set(safe.pageSuggestion ?? null);\n this.aiSuggestions.set(safe.aiSuggestions ?? []);\n this.error.set(null);\n }\n this.loading.set(false);\n }\n\n private url(path: string): string {\n return `${this.baseUrl}${path}`;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostListener,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n phosphorCaretDown,\n phosphorMagnifyingGlass,\n phosphorPlus,\n} from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../../icon/icon.component';\nimport { WorkspaceNavbarService } from '../../workspace-navbar/workspace-navbar.service';\nimport { AccessRole } from '@ah-oh/ao-workspaces-types';\nimport { ButtonComponent } from '../../button/button.component';\n\nexport interface LogoMenuItem {\n id: string;\n label: string;\n}\n\n@Component({\n selector: 'ao-logo-menu',\n imports: [FormsModule, IconComponent, ButtonComponent],\n template: `\n <div class=\"logo-menu\">\n <button\n type=\"button\"\n class=\"logo-menu__trigger\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n >\n <ng-content />\n <ao-icon [svg]=\"caretIcon\" size=\"sm\" class=\"logo-menu__caret\" />\n </button>\n\n @if (isOpen()) {\n <div\n class=\"logo-menu__dropdown\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n (keydown)=\"onDropdownKeydown($event)\"\n (keyup)=\"$event.stopPropagation()\"\n (keypress)=\"$event.stopPropagation()\"\n (click)=\"$event.stopPropagation()\"\n >\n <div class=\"logo-menu__search\">\n <ao-icon [svg]=\"searchIcon\" size=\"sm\" class=\"logo-menu__search-icon\" />\n <input\n #searchInput\n type=\"text\"\n class=\"logo-menu__search-input\"\n [placeholder]=\"searchPlaceholder()\"\n [ngModel]=\"searchQuery()\"\n (ngModelChange)=\"searchQuery.set($event)\"\n (keydown)=\"onKeydown($event)\"\n aria-label=\"Suche\"\n aria-autocomplete=\"list\"\n [attr.aria-activedescendant]=\"\n highlightedItem() ? 'item-' + highlightedItem()?.id : null\n \"\n />\n </div>\n\n <ul class=\"logo-menu__list\" role=\"listbox\">\n @for (item of filteredItems(); track item.id; let i = $index) {\n <li\n [id]=\"'item-' + item.id\"\n role=\"option\"\n [attr.aria-selected]=\"item.id === selectedItem()\"\n >\n <button\n type=\"button\"\n class=\"logo-menu__item\"\n [class.logo-menu__item--active]=\"item.id === selectedItem()\"\n [class.logo-menu__item--highlighted]=\"i === highlightedIndex()\"\n (click)=\"selectItem(item)\"\n (mouseenter)=\"highlightedIndex.set(i)\"\n >\n {{ item.label }}\n </button>\n </li>\n }\n @if (filteredItems().length === 0) {\n <li class=\"logo-menu__empty\">Keine Ergebnisse</li>\n }\n </ul>\n\n @if (true) {\n <button ao-button variant=\"outline\" (click)=\"onCreateCompany()\">\n <ao-icon [svg]=\"addIcon\" />\n Unternehmen\n </button>\n }\n </div>\n }\n </div>\n `,\n styleUrl: './logo-menu.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-logo-menu',\n '(click)': '$event.stopPropagation()',\n '(keydown)': 'onHostKeydown($event)',\n '(keyup)': '$event.stopPropagation()',\n },\n})\nexport class LogoMenuComponent {\n private readonly workspaceNavbarService = inject(WorkspaceNavbarService);\n\n readonly items = input<LogoMenuItem[]>([]);\n readonly selectedItem = model<string>('');\n readonly searchPlaceholder = input<string>('Suchen...');\n readonly selectionChange = output<LogoMenuItem>();\n\n protected readonly isOpen = signal(false);\n protected readonly searchQuery = signal('');\n protected readonly highlightedIndex = signal(-1);\n protected readonly caretIcon = phosphorCaretDown;\n protected readonly searchIcon = phosphorMagnifyingGlass;\n protected readonly addIcon = phosphorPlus;\n\n private readonly searchInput = viewChild<ElementRef<HTMLInputElement>>('searchInput');\n\n protected readonly filteredItems = computed(() => {\n const query = this.searchQuery().toLowerCase();\n if (!query) return this.items();\n return this.items().filter(item => item.label.toLowerCase().includes(query));\n });\n\n protected readonly highlightedItem = computed(() => {\n const index = this.highlightedIndex();\n const items = this.filteredItems();\n return index >= 0 && index < items.length ? items[index] : null;\n });\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n if (!target.closest('.ao-logo-menu')) {\n this.close();\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscapeKey(): void {\n this.close();\n }\n\n toggle(): void {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n protected onDropdownKeydown(event: KeyboardEvent): void {\n event.stopPropagation();\n if (event.key === ' ') {\n event.stopImmediatePropagation();\n }\n }\n\n protected onHostKeydown(event: KeyboardEvent): void {\n if (this.isOpen() && event.key === ' ') {\n event.stopPropagation();\n }\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const items = this.filteredItems();\n const currentIndex = this.highlightedIndex();\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.highlightedIndex.set(Math.min(currentIndex + 1, items.length - 1));\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.highlightedIndex.set(Math.max(currentIndex - 1, 0));\n break;\n case 'Enter':\n event.preventDefault();\n if (currentIndex >= 0 && currentIndex < items.length) {\n this.selectItem(items[currentIndex]);\n }\n break;\n }\n }\n\n selectItem(item: LogoMenuItem): void {\n this.selectedItem.set(item.id);\n this.selectionChange.emit(item);\n this.close();\n }\n\n private open(): void {\n this.isOpen.set(true);\n this.searchQuery.set('');\n this.highlightedIndex.set(-1);\n setTimeout(() => this.searchInput()?.nativeElement.focus(), 0);\n }\n\n private close(): void {\n this.isOpen.set(false);\n this.searchQuery.set('');\n this.highlightedIndex.set(-1);\n }\n\n onCreateCompany(): void {\n this.workspaceNavbarService.createCompany().subscribe();\n }\n\n get isSuperAdmin(): boolean {\n return this.workspaceNavbarService.userSession?.role === AccessRole.SUPER_ADMIN;\n }\n}\n","import { computed, Injectable, signal, Signal, WritableSignal } from '@angular/core';\nimport { filter, Subject } from 'rxjs';\nimport {\n SubNavActionEvent,\n SubNavActionsConfig,\n SubNavActionsHandle,\n SubNavActionsLabels,\n} from './sub-nav-actions.types';\n\ninterface ContextState {\n readonly contextId: string;\n readonly isDirty: WritableSignal<boolean>;\n readonly saveDisabled: WritableSignal<boolean>;\n readonly labels: SubNavActionsLabels;\n}\n\nconst DEFAULT_LABELS: Required<SubNavActionsLabels> = {\n save: 'Speichern',\n cancel: 'Abbrechen',\n};\n\n@Injectable({ providedIn: 'root' })\nexport class SubNavActionsService {\n private readonly visibleSignal = signal(false);\n private readonly activeContextId = signal<string | null>(null);\n private readonly contexts = new Map<string, ContextState>();\n private readonly saveSubject = new Subject<SubNavActionEvent>();\n private readonly cancelSubject = new Subject<SubNavActionEvent>();\n\n readonly visible: Signal<boolean> = this.visibleSignal.asReadonly();\n\n readonly isDirty = computed(() => {\n const contextId = this.activeContextId();\n if (!contextId) return false;\n const context = this.contexts.get(contextId);\n return context?.isDirty() ?? false;\n });\n\n readonly saveDisabled = computed(() => {\n const contextId = this.activeContextId();\n if (!contextId) return true;\n const context = this.contexts.get(contextId);\n return context?.saveDisabled() ?? true;\n });\n\n readonly labels = computed<Required<SubNavActionsLabels>>(() => {\n const contextId = this.activeContextId();\n if (!contextId) return DEFAULT_LABELS;\n const context = this.contexts.get(contextId);\n return {\n save: context?.labels.save ?? DEFAULT_LABELS.save,\n cancel: context?.labels.cancel ?? DEFAULT_LABELS.cancel,\n };\n });\n\n readonly hasUnsavedChanges = computed(() => {\n for (const context of this.contexts.values()) {\n if (context.isDirty()) return true;\n }\n return false;\n });\n\n register(config: SubNavActionsConfig): SubNavActionsHandle {\n const contextId = config.contextId;\n if (this.contexts.has(contextId)) {\n throw new Error(`Context \"${contextId}\" is already registered`);\n }\n const isDirty = signal(config.initialDirty ?? false);\n const saveDisabled = signal(config.saveDisabled ?? true);\n const contextState: ContextState = {\n contextId,\n isDirty,\n saveDisabled,\n labels: config.labels ?? {},\n };\n this.contexts.set(contextId, contextState);\n const handle: SubNavActionsHandle = {\n contextId,\n isDirty: isDirty.asReadonly(),\n saveDisabled: saveDisabled.asReadonly(),\n onSave$: this.saveSubject.pipe(filter((e) => e.contextId === contextId)),\n onCancel$: this.cancelSubject.pipe(filter((e) => e.contextId === contextId)),\n markDirty: () => isDirty.set(true),\n markPristine: () => isDirty.set(false),\n enableSave: () => saveDisabled.set(false),\n disableSave: () => saveDisabled.set(true),\n show: () => {\n this.activeContextId.set(contextId);\n this.visibleSignal.set(true);\n },\n hide: () => {\n if (this.activeContextId() === contextId) {\n this.visibleSignal.set(false);\n this.activeContextId.set(null);\n }\n },\n destroy: () => {\n this.contexts.delete(contextId);\n if (this.activeContextId() === contextId) {\n this.visibleSignal.set(false);\n this.activeContextId.set(null);\n }\n },\n };\n return handle;\n }\n\n show(): void {\n this.visibleSignal.set(true);\n }\n\n hide(): void {\n this.visibleSignal.set(false);\n }\n\n triggerSave(): void {\n const contextId = this.activeContextId();\n if (contextId) {\n this.saveSubject.next({ contextId, action: 'save' });\n }\n }\n\n triggerCancel(): void {\n const contextId = this.activeContextId();\n if (contextId) {\n this.cancelSubject.next({ contextId, action: 'cancel' });\n }\n }\n\n reset(): void {\n this.visibleSignal.set(false);\n this.activeContextId.set(null);\n this.contexts.clear();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, model, output } from '@angular/core';\nimport { ButtonComponent } from '../../button/button.component';\nimport { NavItem, NavItemChangeEvent } from '../navigation.types';\nimport { SubNavActionsService } from '../sub-nav-actions/sub-nav-actions.service';\n\n@Component({\n selector: 'ao-sub-top-nav',\n imports: [ButtonComponent],\n templateUrl: './sub-top-nav.component.html',\n styleUrl: './sub-top-nav.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-sub-top-nav',\n },\n})\nexport class SubTopNavComponent {\n protected readonly subNavActions = inject(SubNavActionsService);\n readonly items = input<NavItem[]>([]);\n readonly activeItemId = model<string>('');\n readonly itemClick = output<NavItem>();\n readonly itemChange = output<NavItemChangeEvent>();\n\n protected readonly activeIndex = computed(() => {\n const activeId = this.activeItemId();\n return this.items().findIndex((item) => item.id === activeId);\n });\n\n protected onTabClick(item: NavItem): void {\n if (item.disabled || item.id === this.activeItemId()) {\n return;\n }\n const previousItem = this.items().find((i) => i.id === this.activeItemId()) ?? null;\n this.activeItemId.set(item.id);\n this.itemClick.emit(item);\n this.itemChange.emit({ item, previousItem });\n }\n\n protected onKeydown(event: KeyboardEvent, item: NavItem): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.onTabClick(item);\n }\n }\n\n protected onSave(): void {\n this.subNavActions.triggerSave();\n }\n\n protected onCancel(): void {\n this.subNavActions.triggerCancel();\n }\n}\n","<nav class=\"sub-top-nav-outer\" role=\"navigation\" aria-label=\"Sub navigation\">\n <div class=\"sub-top-nav\">\n <div class=\"sub-top-nav__tabs\" role=\"tablist\">\n @for (item of items(); track item.id) {\n <button\n type=\"button\"\n class=\"sub-top-nav__tab\"\n [class.--active]=\"item.id === activeItemId()\"\n [class.--disabled]=\"item.disabled\"\n role=\"tab\"\n [attr.aria-selected]=\"item.id === activeItemId()\"\n [attr.aria-disabled]=\"item.disabled || null\"\n [attr.tabindex]=\"item.disabled ? -1 : 0\"\n (click)=\"onTabClick(item)\"\n (keydown)=\"onKeydown($event, item)\"\n >\n {{ item.label }}\n </button>\n }\n </div>\n\n @if (subNavActions.visible()) {\n <div class=\"sub-top-nav__actions\">\n <button ao-button type=\"button\" variant=\"outline\" (click)=\"onCancel()\">\n {{ subNavActions.labels().cancel }}\n </button>\n <button\n ao-button\n type=\"button\"\n variant=\"primary\"\n [disabled]=\"subNavActions.saveDisabled()\"\n (click)=\"onSave()\"\n >\n {{ subNavActions.labels().save }}\n </button>\n </div>\n }\n </div>\n</nav>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CdkMenu } from '@angular/cdk/menu';\n\n@Component({\n selector: 'ao-menu',\n imports: [CdkMenu],\n templateUrl: './menu.component.html',\n styleUrl: './menu.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenuComponent {}\n","<div cdkMenu class=\"ao-menu__menu\">\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { IconComponent } from '../../../icon/icon.component';\nimport { CdkMenuItem } from '@angular/cdk/menu';\n\n@Component({\n selector: 'ao-menu-item',\n imports: [IconComponent, CdkMenuItem],\n templateUrl: './menu-item.component.html',\n styleUrl: './menu-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenuItemComponent {\n icon = input<string>();\n disabled = input(false);\n click = output<void>();\n}\n","<button\n type=\"button\"\n class=\"ao-menu-item__button\"\n role=\"menuitem\"\n [disabled]=\"disabled()\"\n cdkMenuItem\n (cdkMenuItemTriggered)=\"click.emit()\"\n>\n @if (icon(); as icon) {\n <ao-icon [svg]=\"icon\" size=\"sm\" />\n }\n <ng-content></ng-content>\n</button>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n TemplateRef,\n ViewContainerRef,\n ChangeDetectionStrategy,\n input,\n} from '@angular/core';\n\n@Component({\n selector: 'ao-tooltip',\n imports: [NgTemplateOutlet],\n templateUrl: './tooltip-overlay.component.html',\n styleUrl: './tooltip-overlay.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipOverlayComponent {\n text = input<string>();\n template = input<TemplateRef<any>>();\n viewContainerRef = input<ViewContainerRef>();\n enterAnimationClass = input<string | undefined>();\n}\n","<div class=\"ao-tooltip__content\" [animate.enter]=\"enterAnimationClass()\">\n @if (text(); as text) {\n <span class=\"ao-tooltip__text-content\">{{ text }}</span>\n } @else if (template(); as template) {\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n }\n</div>\n","import {\n Directive,\n ElementRef,\n Input,\n TemplateRef,\n ViewContainerRef,\n inject,\n ComponentRef,\n OnDestroy,\n signal,\n input,\n computed,\n effect,\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { TooltipOverlayComponent } from '../components/tooltip-overlay.component';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged, map, switchMap, timer } from 'rxjs';\n\n@Directive({\n selector: '[aoTooltip], [aoTooltipTemplate]',\n host: {\n '(mouseenter)': 'mouseOver.set(true)',\n '(mouseleave)': 'mouseOver.set(false)',\n '(focus)': 'focused.set(true)',\n '(blur)': 'focused.set(false)',\n },\n})\nexport class TooltipDirective implements OnDestroy {\n private elementRef = inject(ElementRef);\n private overlay = inject(Overlay);\n private viewContainerRef = inject(ViewContainerRef);\n\n private overlayRef: OverlayRef | null = null;\n private tooltipComponentRef: ComponentRef<TooltipOverlayComponent> | null = null;\n\n aoTooltip = input<string>();\n aoTooltipEnabled = input(true);\n aoTooltipTemplate = input<TemplateRef<any>>();\n aoTooltipDelay = input<number>(200);\n aoTooltipHideDelay = input<number>(0);\n aoTooltipEnterAnimationClass = input('ao-tooltip__enter-animation');\n\n mouseOver = signal(false);\n focused = signal(false);\n\n shouldOpen = computed(() => this.mouseOver() || this.focused());\n\n open = toSignal(\n toObservable(this.shouldOpen).pipe(\n distinctUntilChanged(),\n switchMap(value =>\n timer(value ? this.aoTooltipDelay() : this.aoTooltipHideDelay()).pipe(map(() => value))\n )\n ),\n { initialValue: false }\n );\n\n constructor() {\n effect(() => {\n if (this.open()) {\n this.show();\n } else {\n this.hide();\n }\n });\n }\n\n ngOnDestroy() {\n this.hide();\n }\n\n protected show() {\n if (this.overlayRef || !this.aoTooltipEnabled()) return;\n\n const tooltipText = this.aoTooltip();\n const tooltipTemplate = this.aoTooltipTemplate();\n\n if (!tooltipText && !tooltipTemplate) return;\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPositions([\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -8,\n },\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 8,\n },\n ]);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.close(),\n });\n\n const portal = new ComponentPortal(TooltipOverlayComponent);\n this.tooltipComponentRef = this.overlayRef.attach(portal);\n\n if (tooltipText) {\n this.tooltipComponentRef.setInput('text', tooltipText);\n } else if (tooltipTemplate) {\n this.tooltipComponentRef.setInput('template', tooltipTemplate);\n this.tooltipComponentRef.setInput('viewContainerRef', this.viewContainerRef);\n }\n\n this.tooltipComponentRef.setInput('enterAnimationClass', this.aoTooltipEnterAnimationClass());\n }\n\n protected hide() {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n this.tooltipComponentRef = null;\n }\n }\n}\n","import { Component, computed, forwardRef, input, model, ModelSignal, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { phosphorCalendarBlank } from '@ng-icons/phosphor-icons/regular';\nimport { IconComponent } from '../icon/icon.component';\nimport { CdkOverlayOrigin, CdkConnectedOverlay } from '@angular/cdk/overlay';\nimport { DatePickerComponent } from './date-picker/date-picker.component';\n\n@Component({\n selector: 'ao-date-input',\n imports: [IconComponent, CdkOverlayOrigin, DatePickerComponent, CdkConnectedOverlay],\n templateUrl: './date-input.component.html',\n styleUrl: './date-input.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateInputComponent),\n multi: true,\n },\n ],\n host: {\n class: 'ao-date-input',\n '[class.ao-date-input--disabled]': 'disabled()',\n '[class.ao-date-input--readonly]': 'readonly()',\n '[class.ao-date-input--error]': 'error()',\n '[class.ao-date-input--focused]': 'focused()',\n },\n})\nexport class DateInputComponent implements ControlValueAccessor {\n readonly label = input<string>('');\n readonly placeholder = input<string>('Bitte ausfüllen');\n readonly optional = input<boolean>(false);\n readonly error = input<string>('');\n readonly readonly = input<boolean>(false);\n readonly disabled = model<boolean>(false);\n readonly value: ModelSignal<Date | null> = model<Date | null>(null);\n readonly inputValue = signal<string>('');\n readonly focused = signal<boolean>(false);\n readonly open = signal(false);\n readonly hasError = computed(() => !!this.error());\n readonly currentMonth = model(new Date().getMonth());\n readonly currentYear = model(new Date().getFullYear());\n protected readonly calendarIcon = phosphorCalendarBlank;\n private onChange: (value: Date | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: Date | null): void {\n this.inputValue.set(value ? DatePickerComponent.formatDate(value) : '');\n this.value.set(value);\n }\n\n registerOnChange(fn: (value: Date | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const value = input.value;\n const parsed = this.parseDate(value);\n if (parsed) {\n this.value.set(parsed);\n this.currentMonth.set(parsed.getMonth());\n this.currentYear.set(parsed.getFullYear());\n this.onChange(parsed);\n }\n }\n\n onFocus(): void {\n this.focused.set(true);\n }\n\n onBlur(): void {\n this.focused.set(false);\n this.onTouched();\n }\n\n onSelection() {\n const date = this.value();\n this.inputValue.set(date ? DatePickerComponent.formatDate(date) : '');\n this.onChange(date);\n this.open.set(false);\n }\n\n private parseDate(value: string): Date | null {\n const match = value.match(/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/);\n if (match) {\n const day = parseInt(match[1], 10);\n const month = parseInt(match[2], 10) - 1;\n const year = parseInt(match[3], 10);\n const date = new Date(year, month, day);\n if (date.getDate() === day && date.getMonth() === month && date.getFullYear() === year) {\n return date;\n }\n }\n return null;\n }\n}\n","@if (label()) {\n <label class=\"ao-date-input__label\">\n {{ label() }}\n @if (optional()) {\n <span class=\"ao-date-input__optional\">(Optional)</span>\n }\n </label>\n}\n\n<div class=\"ao-date-input__wrapper\">\n <input\n class=\"ao-date-input__field\"\n type=\"text\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [value]=\"inputValue()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n\n <button\n class=\"ao-date-input__open\"\n [disabled]=\"readonly() || disabled()\"\n (click)=\"open.set(!open())\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n >\n <ao-icon class=\"ao-date-input__open--icon\" [svg]=\"calendarIcon\" size=\"md\" />\n </button>\n</div>\n\n@if (error()) {\n <span class=\"ao-date-input__error\">{{ error() }}</span>\n}\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"open()\"\n (detach)=\"open.set(false)\"\n (overlayOutsideClick)=\"open.set(false)\"\n>\n <ao-date-picker\n class=\"ao-date-input__picker\"\n [mode]=\"'single'\"\n [(selectedDate)]=\"value\"\n [(currentMonth)]=\"currentMonth\"\n [(currentYear)]=\"currentYear\"\n (onSelection)=\"onSelection()\"\n ></ao-date-picker>\n</ng-template>\n","import { SurfaceComponent } from '@a2ui/angular/v0_9';\nimport { Component, computed, inject, input } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MarkdownComponent } from 'ngx-markdown';\nimport { ChatPart } from '../chat.types';\n\n@Component({\n selector: 'lib-chat-message',\n imports: [MarkdownComponent, SurfaceComponent],\n templateUrl: './chat-message.component.html',\n styleUrl: './chat-message.component.scss',\n})\nexport class ChatMessageComponent {\n parts = input<ChatPart[]>([]);\n side = input<'left' | 'right'>('right');\n showTyping = input<boolean>();\n\n protected readonly normalisedParts = computed<ChatPart[]>(() =>\n this.parts().map(part => (part.kind === 'error' ? this.toTextPart(part.fallback) : part)),\n );\n\n private readonly router = inject(Router);\n\n /**\n * Hook for in-app navigation triggered from rendered markdown links.\n */\n protected onMarkdownReady(element: HTMLElement | null): void {\n this.convertLinks(element);\n }\n\n private toTextPart(fallback: string): ChatPart {\n return { kind: 'text', content: fallback };\n }\n\n private convertLinks(element: Element | null): void {\n if (!element) return;\n const currentUrl = new URL(window.location.href);\n const anchors = Array.from(element.querySelectorAll<HTMLAnchorElement>('a[href]'));\n for (const anchor of anchors) {\n if (anchor.dataset['robinRouterLink'] === 'true') continue;\n const linkUrl = this.parseUrl(anchor.getAttribute('href') ?? '', currentUrl);\n if (!linkUrl) continue;\n if (currentUrl.host !== linkUrl.host) continue;\n anchor.dataset['robinRouterLink'] = 'true';\n anchor.addEventListener('click', event => {\n void this.router.navigateByUrl(`${linkUrl.pathname}${linkUrl.search}`);\n event.stopPropagation();\n event.preventDefault();\n });\n }\n }\n\n private parseUrl(value: string, base: URL): URL | undefined {\n try {\n return new URL(value, base);\n } catch {\n return undefined;\n }\n }\n}\n","<div class=\"message\" [class.right]=\"side() === 'right'\" [class.left]=\"side() === 'left'\">\n @for (part of normalisedParts(); track $index) {\n @switch (part.kind) {\n @case ('text') {\n <div #markdownHost class=\"message__markdown\">\n <markdown\n [data]=\"part.content\"\n (ready)=\"onMarkdownReady(markdownHost)\"\n ></markdown>\n </div>\n }\n @case ('a2ui') {\n <a2ui-v09-surface [surfaceId]=\"part.surface.surfaceId\"></a2ui-v09-surface>\n }\n }\n }\n @if (showTyping()) {\n <div class=\"typing-indicator\">\n <div></div>\n <div></div>\n <div></div>\n </div>\n }\n</div>\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { ROBIN_API_BASE_URL } from '../../navigation/services/robin-search.service';\nimport {\n ChatActionRequest,\n ChatMessageRequest,\n ChatProduct,\n ChatResponse,\n ChatThreadOverview,\n ChatTurn,\n} from './chat.types';\n\n@Injectable({ providedIn: 'root' })\nexport class RobinChatService {\n private readonly http = inject(HttpClient);\n private readonly baseUrl = inject(ROBIN_API_BASE_URL);\n private readonly requestOptions = { withCredentials: true } as const;\n\n sendMessage(req: ChatMessageRequest): Promise<ChatResponse> {\n return firstValueFrom(\n this.http.post<ChatResponse>(this.url('/chat/message'), req, this.requestOptions),\n );\n }\n\n sendAction(req: ChatActionRequest): Promise<ChatResponse> {\n return firstValueFrom(\n this.http.post<ChatResponse>(this.url('/chat/action'), req, this.requestOptions),\n );\n }\n\n listThreads(product: ChatProduct): Promise<ChatThreadOverview[]> {\n const params = new HttpParams().set('product', product);\n return firstValueFrom(\n this.http.get<ChatThreadOverview[]>(this.url('/chat/threads'), {\n ...this.requestOptions,\n params,\n }),\n );\n }\n\n loadHistory(threadId: string): Promise<ChatTurn[]> {\n return firstValueFrom(\n this.http.get<ChatTurn[]>(this.url(`/chat/history/${threadId}`), this.requestOptions),\n );\n }\n\n private url(path: string): string {\n return `${this.baseUrl}${path}`;\n }\n}\n","import { A2uiRendererService } from '@a2ui/angular/v0_9';\nimport { inject, Injectable, Injector } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ChatResponse } from './chat.types';\nimport { RobinChatService } from './robin-chat.service';\n\ninterface A2uiClientAction {\n name: string;\n surfaceId: string;\n sourceComponentId: string;\n timestamp: string;\n context: Record<string, unknown>;\n}\n\n/**\n * Bridges A2UI's `actionHandler` (called when a rendered Button/Input fires)\n * to the Robin backend.\n *\n * The chat component is the single owner of `threadId` and the recipient of\n * responses; it registers itself by setting `threadId` and subscribing to\n * `responses$`. The dispatcher itself is `providedIn: 'root'` so the renderer\n * config factory can inject it lazily.\n */\n@Injectable({ providedIn: 'root' })\nexport class RobinChatActionDispatcher {\n private readonly chat = inject(RobinChatService);\n private readonly injector = inject(Injector);\n\n readonly responses$ = new Subject<ChatResponse>();\n readonly errors$ = new Subject<unknown>();\n\n /** Current thread id — set by the ChatComponent when a thread is active. */\n threadId: string | undefined;\n\n async dispatch(action: A2uiClientAction): Promise<void> {\n if (!this.threadId) {\n // Action fired outside an active chat session (e.g. from the showcase).\n // eslint-disable-next-line no-console\n console.warn('[a2ui] action ignored — no active thread', action);\n return;\n }\n const dataModel = this.snapshotDataModel(action.surfaceId);\n try {\n const response = await this.chat.sendAction({\n threadId: this.threadId,\n surfaceId: action.surfaceId,\n action: { ...action, dataModel },\n });\n this.responses$.next(response);\n } catch (error) {\n this.errors$.next(error);\n }\n }\n\n private snapshotDataModel(surfaceId: string): unknown {\n const renderer = this.injector.get(A2uiRendererService);\n const surface = renderer.surfaceGroup.getSurface(surfaceId);\n return surface?.dataModel.get('/') ?? null;\n }\n}\n","import { A2uiRendererService } from '@a2ui/angular/v0_9';\nimport { DatePipe } from '@angular/common';\nimport {\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Input,\n inject,\n OnInit,\n Output,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport {\n phosphorClockCounterClockwise,\n phosphorPaperPlaneRight,\n phosphorPlus,\n phosphorX,\n} from '@ng-icons/phosphor-icons/regular';\nimport { Product } from '@ah-oh/ao-workspaces-types';\nimport { ButtonComponent } from '../../button/button.component';\nimport { IconComponent } from '../../icon/icon.component';\nimport { WorkspaceNavbarService } from '../workspace-navbar.service';\nimport { SearchEntityType } from '../../navigation/navigation.types';\nimport { ROBIN_SEARCH_APP_NAME } from '../../navigation/services/robin-search.service';\nimport { ChatMessageComponent } from './chat-message/chat-message.component';\nimport { ChatPart, ChatProduct, ChatResponse, ChatThreadOverview, ChatTurn } from './chat.types';\nimport { RobinChatActionDispatcher } from './robin-chat-action-dispatcher.service';\nimport { RobinChatService } from './robin-chat.service';\n\nconst ERROR_FALLBACK = 'Robin antwortet gerade nicht. Bitte versuche es gleich nochmal.';\n\n@Component({\n selector: 'lib-chat',\n imports: [ReactiveFormsModule, ChatMessageComponent, IconComponent, ButtonComponent, DatePipe],\n templateUrl: './chat.component.html',\n styleUrl: './chat.component.scss',\n})\nexport class ChatComponent implements OnInit {\n @ViewChild('conversation') historyElement?: ElementRef<HTMLElement>;\n @ViewChild('textField') textField!: ElementRef;\n\n protected readonly addIcon = phosphorPlus;\n protected readonly closeIcon = phosphorX;\n protected readonly sendIcon = phosphorPaperPlaneRight;\n protected readonly historyIcon = phosphorClockCounterClockwise;\n\n protected readonly inputControl = new FormControl('');\n protected readonly turns = signal<ChatTurn[]>([]);\n protected readonly activeRequest = signal<boolean>(false);\n protected readonly showHistory = signal<boolean>(false);\n protected readonly threads = signal<ChatThreadOverview[] | undefined>(undefined);\n\n @Input() searchType?: SearchEntityType;\n @Output() closed = new EventEmitter<void>();\n\n private readonly chat = inject(RobinChatService);\n private readonly renderer = inject(A2uiRendererService);\n private readonly dispatcher = inject(RobinChatActionDispatcher);\n private readonly authService = inject(WorkspaceNavbarService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly appName = inject(ROBIN_SEARCH_APP_NAME);\n\n private product?: ChatProduct;\n private currentThreadId?: string;\n\n ngOnInit(): void {\n const product = this.resolveProduct();\n if (!product) return;\n this.product = product;\n this.dispatcher.responses$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(response => this.handleResponse(response));\n this.dispatcher.errors$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.handleError());\n this.greet();\n }\n\n protected newChat(): void {\n if (!this.product) return;\n this.setThreadId(undefined);\n this.turns.set([]);\n this.showHistory.set(false);\n this.greet();\n }\n\n protected send(): void {\n if (!this.product) return;\n const text = this.inputControl.value?.trim();\n if (!text || this.activeRequest()) return;\n this.appendUserTurn(text);\n this.inputControl.reset();\n this.dispatchToBackend(text);\n }\n\n protected toggleHistory(): void {\n if (!this.product) return;\n const next = !this.showHistory();\n this.showHistory.set(next);\n if (next && this.threads() === undefined) {\n void this.chat\n .listThreads(this.product)\n .then(threads => this.threads.set(threads))\n .catch(() => this.threads.set([]));\n }\n }\n\n protected openThread(threadId: string): void {\n this.showHistory.set(false);\n this.activeRequest.set(true);\n void this.chat\n .loadHistory(threadId)\n .then(turns => {\n this.setThreadId(threadId);\n // Only the last a2ui surface stays interactive — strip earlier ones\n // from history (they would render against deleted/missing surfaces).\n const liveSurfaceIds = this.collectLiveSurfaceIds(turns);\n const projected = turns\n .map(turn => ({\n ...turn,\n parts: turn.parts.filter(\n part => part.kind !== 'a2ui' || liveSurfaceIds.has(part.surface.surfaceId)\n ),\n }))\n .filter(turn => turn.parts.length > 0);\n this.turns.set(projected);\n for (const turn of projected) {\n for (const part of turn.parts) {\n if (part.kind === 'a2ui') {\n try {\n this.renderer.processMessages(part.surface.messages as never);\n } catch (error) {\n console.warn('[RobinChat] A2UI history render failed', error);\n }\n }\n }\n }\n this.scrollDown(false);\n })\n .finally(() => this.activeRequest.set(false));\n }\n\n private collectLiveSurfaceIds(turns: ChatTurn[]): Set<string> {\n for (let i = turns.length - 1; i >= 0; i -= 1) {\n const surfaceParts = turns[i].parts.filter(part => part.kind === 'a2ui');\n if (surfaceParts.length > 0) {\n return new Set(\n surfaceParts.map(part => (part as { surface: { surfaceId: string } }).surface.surfaceId)\n );\n }\n }\n return new Set();\n }\n\n protected setSize(): void {\n const el = this.textField.nativeElement;\n el.rows = 1;\n const maxHeight = Math.min(window.innerHeight - 120, 630);\n while (el.scrollHeight > el.clientHeight && el.clientHeight < maxHeight) {\n el.rows += 1;\n }\n }\n\n private greet(): void {\n if (!this.product) return;\n this.activeRequest.set(true);\n void this.chat\n .sendMessage({\n question: 'Bitte begrüße den User kurz und biete Hilfe an.',\n threadId: this.currentThreadId,\n product: this.product,\n appName: this.appName,\n type: this.searchType ?? null,\n })\n .then(response => this.handleResponse(response))\n .catch(() => this.handleError());\n }\n\n private dispatchToBackend(question: string): void {\n if (!this.product) return;\n this.activeRequest.set(true);\n this.scrollDown();\n void this.chat\n .sendMessage({\n question,\n threadId: this.currentThreadId,\n product: this.product,\n appName: this.appName,\n type: this.searchType ?? null,\n })\n .then(response => this.handleResponse(response))\n .catch(() => this.handleError());\n }\n\n private handleResponse(response: ChatResponse): void {\n this.setThreadId(response.threadId);\n this.tryRetireOldSurfaces();\n this.appendAssistantTurn(this.processA2uiParts(response.parts));\n this.threads.set(undefined);\n this.activeRequest.set(false);\n }\n\n private tryRetireOldSurfaces(): void {\n try {\n this.retireOldSurfaces();\n } catch (error) {\n console.warn('[RobinChat] A2UI surface retirement failed', error);\n }\n }\n\n private processA2uiParts(parts: ChatPart[]): ChatPart[] {\n const renderable: ChatPart[] = [];\n for (const part of parts) {\n if (part.kind !== 'a2ui') {\n renderable.push(part);\n continue;\n }\n try {\n this.renderer.processMessages(part.surface.messages as never);\n renderable.push(part);\n } catch (error) {\n console.warn('[RobinChat] A2UI render failed', error);\n }\n }\n return renderable.length > 0 ? renderable : [{ kind: 'text', content: ERROR_FALLBACK }];\n }\n\n /**\n * Removes A2UI surfaces from the renderer that belong to older turns and\n * strips their `a2ui` parts so the chat history doesn't accumulate stale\n * interactive cards as the conversation progresses.\n */\n private retireOldSurfaces(): void {\n const toDelete: string[] = [];\n const nextTurns = this.turns().map(turn => {\n const filtered = turn.parts.filter(part => {\n if (part.kind !== 'a2ui') return true;\n toDelete.push(part.surface.surfaceId);\n return false;\n });\n return filtered.length === turn.parts.length ? turn : { ...turn, parts: filtered };\n });\n if (toDelete.length === 0) return;\n this.turns.set(nextTurns.filter(turn => turn.parts.length > 0));\n this.renderer.processMessages(\n toDelete.map(surfaceId => ({\n version: 'v0.9',\n deleteSurface: { surfaceId },\n })) as never\n );\n }\n\n private handleError(): void {\n this.appendAssistantTurn([{ kind: 'text', content: ERROR_FALLBACK }]);\n this.activeRequest.set(false);\n }\n\n private setThreadId(threadId: string | undefined): void {\n this.currentThreadId = threadId;\n this.dispatcher.threadId = threadId;\n }\n\n private appendUserTurn(content: string): void {\n this.appendTurn({\n role: 'user',\n parts: [{ kind: 'text', content }],\n createdAt: new Date().toISOString(),\n });\n }\n\n private appendAssistantTurn(parts: ChatPart[]): void {\n this.appendTurn({ role: 'assistant', parts, createdAt: new Date().toISOString() });\n }\n\n private appendTurn(turn: ChatTurn): void {\n this.turns.update(turns => [...turns, turn]);\n this.scrollDown();\n }\n\n private scrollDown(smooth = true): void {\n setTimeout(() => {\n this.historyElement?.nativeElement.scrollTo({\n behavior: smooth ? 'smooth' : 'instant',\n top: this.historyElement.nativeElement.scrollHeight,\n });\n }, 0);\n }\n\n private resolveProduct(): ChatProduct | undefined {\n switch (this.authService.userSession?.product) {\n case Product.SZALES:\n return 'szales';\n case Product.SETHUB:\n return 'sethub';\n case Product.ADMIN:\n return 'admin';\n default:\n return undefined;\n }\n }\n}\n","<div class=\"sidebar\">\n @if (showHistory()) {\n <div class=\"chat-history\">\n <div class=\"header\">\n <h3>Verlauf</h3>\n </div>\n <div class=\"history-items\">\n @if (threads() === undefined) {\n <div class=\"history-empty\">Lädt…</div>\n } @else if (threads()!.length === 0) {\n <div class=\"history-empty\">Noch keine Gespräche.</div>\n }\n @for (item of threads(); track item.threadId) {\n <div class=\"chat-history-item\" (click)=\"openThread(item.threadId)\">\n <div class=\"preview\">{{ item.lastMessage }}</div>\n <div class=\"footer\">\n <div>{{ item.messageCount }} Nachrichten</div>\n <div>{{ item.updatedAt | date: 'dd.MM.yyyy HH:mm' }}</div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n <div class=\"chat\">\n <div class=\"header\">\n <button ao-button variant=\"outline\" (click)=\"toggleHistory()\">\n <ao-icon [svg]=\"historyIcon\"></ao-icon>\n </button>\n <h2>Hilfecenter</h2>\n <div class=\"flex\">\n <button ao-button variant=\"outline\" (click)=\"newChat()\">\n <ao-icon [svg]=\"addIcon\"></ao-icon>\n </button>\n <button ao-button variant=\"outline\" (click)=\"showHistory.set(false); closed.emit()\">\n <ao-icon [svg]=\"closeIcon\"></ao-icon>\n </button>\n </div>\n </div>\n <div class=\"conversation-history\" #conversation>\n @for (turn of turns(); track $index) {\n <lib-chat-message\n [parts]=\"turn.parts\"\n [side]=\"turn.role === 'assistant' ? 'left' : 'right'\"\n >\n </lib-chat-message>\n }\n @if (activeRequest()) {\n <lib-chat-message [showTyping]=\"true\" side=\"left\"></lib-chat-message>\n }\n </div>\n\n <div class=\"input\">\n <textarea\n #textField\n rows=\"1\"\n class=\"textarea\"\n [formControl]=\"inputControl\"\n (keydown.enter)=\"send(); $event.stopPropagation(); $event.preventDefault()\"\n (input)=\"setSize()\"\n ></textarea>\n <button ao-button variant=\"primary\" (click)=\"send()\" class=\"send-button\">\n <ao-icon [svg]=\"sendIcon\"></ao-icon>\n </button>\n </div>\n </div>\n</div>\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n model,\n output,\n PLATFORM_ID,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router } from '@angular/router';\nimport {\n phosphorGearSix,\n phosphorPenNib,\n phosphorPlus,\n phosphorPuzzlePiece,\n phosphorRobot,\n phosphorSignOut,\n phosphorSparkle,\n phosphorSquaresFour,\n phosphorTreeStructure,\n} from '@ng-icons/phosphor-icons/regular';\nimport * as phosphorIcons from '@ng-icons/phosphor-icons/regular';\nimport { Product } from '@ah-oh/ao-workspaces-types';\nimport { filter, fromEvent, map } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\nimport { LogoMenuComponent, LogoMenuItem } from '../navigation/logo-menu/logo-menu.component';\nimport {\n NavItem,\n NavItemChangeEvent,\n PageSuggestion,\n RecommendedFilter,\n SearchPage,\n SearchResult,\n SearchResultGroup,\n SearchSubmitEvent,\n} from '../navigation/navigation.types';\nimport { buildSearchPagesFromNavItems } from '../navigation/search-pages';\nimport { SideNavComponent } from '../navigation/side-nav/side-nav.component';\nimport { SubTopNavComponent } from '../navigation/sub-top-nav/sub-top-nav.component';\nimport { TopNavComponent } from '../navigation/top-nav/top-nav.component';\nimport { WorkspaceNavbarService } from './workspace-navbar.service';\nimport { IWorkspaceApp } from './workspace-navbar.types';\nimport { IconComponent } from '../icon/icon.component';\nimport { ButtonComponent } from '../button/button.component';\nimport { ChatComponent } from './chat/chat.component';\n\n@Component({\n selector: 'ao-workspace-navbar',\n imports: [\n SideNavComponent,\n TopNavComponent,\n SubTopNavComponent,\n LogoMenuComponent,\n IconComponent,\n ButtonComponent,\n ChatComponent,\n ],\n templateUrl: './workspace-navbar.component.html',\n styleUrl: './workspace-navbar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ao-workspace-navbar',\n },\n})\nexport class WorkspaceNavbarComponent implements AfterViewInit {\n private readonly workspaceNavbarService = inject(WorkspaceNavbarService);\n private readonly router = inject(Router);\n private readonly document = inject(DOCUMENT);\n private destroyRef = inject(DestroyRef);\n private readonly platformId = inject(PLATFORM_ID);\n\n private lastScrollY = 0;\n private readonly scrollThreshold = 10;\n protected readonly navHidden = signal(false);\n\n readonly appId = input.required<string>();\n readonly production = input<boolean>(true);\n readonly topNavItems = input<NavItem[]>([]);\n readonly showSearch = input<boolean>(true);\n readonly showNotifications = input<boolean>(true);\n readonly notificationCount = input<number>(0);\n readonly searchPlaceholder = input<string>('Suche oder Prompt');\n readonly recommendedFilters = input<RecommendedFilter[]>([]);\n readonly activeFilter = model<RecommendedFilter | null>(null);\n readonly resultGroups = input<SearchResultGroup[]>([]);\n readonly searchPages = input<readonly SearchPage[] | null>(null);\n readonly pageSuggestion = input<PageSuggestion | null>(null);\n readonly aiSuggestions = input<SearchResult[]>([]);\n readonly searchLoading = input<boolean>(false);\n readonly searchError = input<string | null>(null);\n readonly topNavItemClick = output<NavItem>();\n readonly topNavItemChange = output<NavItemChangeEvent>();\n readonly subTopNavItemClick = output<NavItem>();\n readonly subTopNavItemChange = output<NavItemChangeEvent>();\n readonly appSwitched = output<IWorkspaceApp>();\n readonly searchSubmit = output<SearchSubmitEvent>();\n readonly searchQueryChange = output<string>();\n readonly searchViewAll = output<string>();\n readonly searchResultSelect = output<SearchResult>();\n readonly searchAiSuggestionSelect = output<SearchResult>();\n readonly searchPageSuggestionSelect = output<PageSuggestion>();\n readonly searchFilterSelect = output<RecommendedFilter>();\n readonly searchFilterClear = output<void>();\n readonly notificationClick = output<void>();\n\n private readonly currentUrl = toSignal(\n this.router.events.pipe(\n filter((e): e is NavigationEnd => e instanceof NavigationEnd),\n map(e => e.urlAfterRedirects)\n ),\n { initialValue: this.router.url }\n );\n public readonly companyLogo = signal<string | null>(null);\n protected readonly activeTopNavItemId = computed(() => {\n const url = this.currentUrl() ?? '';\n return this.findBestRouteMatch(url, this.topNavItems())?.id ?? '';\n });\n protected readonly activeSubTopNavItems = computed(() => {\n const activeId = this.activeTopNavItemId();\n return this.topNavItems().find(item => item.id === activeId)?.children ?? [];\n });\n protected readonly activeSubTopNavItemId = computed(() => {\n const url = this.currentUrl() ?? '';\n return this.findBestRouteMatch(url, this.activeSubTopNavItems())?.id ?? '';\n });\n protected readonly effectiveSearchPages = computed<readonly SearchPage[]>(() => {\n return this.searchPages() ?? buildSearchPagesFromNavItems(this.topNavItems());\n });\n protected readonly activeWorkspaceAppId = computed(() => {\n return this.workspaceNavbarService.activeAppIdSignal() ?? this.appId();\n });\n protected readonly signOutIcon = phosphorSignOut;\n protected readonly plusIcon = phosphorPlus;\n protected readonly chatIcon = phosphorRobot;\n\n private readonly iconMap: Record<string, string> = {\n szales: phosphorTreeStructure,\n setHUB: phosphorPenNib,\n ai: phosphorSparkle,\n admin: phosphorGearSix,\n 'component-manager': phosphorPuzzlePiece,\n };\n private readonly fallbackIcon = phosphorSquaresFour;\n private readonly phosphorIconRegistry = phosphorIcons as Record<string, string>;\n\n /** Desired order of product app ids in the nav (case-insensitive match). */\n private readonly productOrder = ['szales', 'sethub', 'ai', 'admin', 'component-manager'];\n\n protected readonly workspaceAppNavItems = computed<NavItem[]>(() => {\n const response = this.workspaceNavbarService.workspaceAppsResponseSignal();\n if (!response) return [];\n const mapApp = (app: IWorkspaceApp): NavItem => ({\n id: app.appId,\n label: app.shortName ?? app.name,\n icon: this.resolveIcon(app),\n tooltip: app.name,\n });\n\n const productItems = response.products.map(mapApp).sort((a, b) => {\n const indexA = this.productOrder.indexOf(a.id.toLowerCase());\n const indexB = this.productOrder.indexOf(b.id.toLowerCase());\n const posA = indexA === -1 ? this.productOrder.length : indexA;\n const posB = indexB === -1 ? this.productOrder.length : indexB;\n return posA - posB;\n });\n\n const customItems = response.customApps.map(mapApp);\n if (customItems.length === 0) return productItems;\n const result = [\n ...productItems,\n { id: 'separator', label: '', separator: true },\n ...customItems,\n ];\n return result;\n });\n\n protected readonly bottomNavItems = computed<NavItem[]>(() => [\n {\n id: 'sign-out',\n label: 'Abmelden',\n icon: this.signOutIcon,\n tooltip: 'Abmelden',\n },\n ]);\n\n protected readonly companyMenuItems = computed<LogoMenuItem[]>(() => {\n const companies = this.workspaceNavbarService.companiesSignal() ?? [];\n return companies.map(company => ({\n id: company._id,\n label: company.name,\n }));\n });\n\n protected readonly selectedCompanyId = computed(() => {\n return this.workspaceNavbarService.sessionSignal()?.enabledCompanyId ?? '';\n });\n\n protected readonly hasSubTopNav = computed(() => this.activeSubTopNavItems().length > 0);\n\n showTools = computed(\n () =>\n this.workspaceNavbarService.sessionSignal()?.companyId ===\n WorkspaceNavbarService.HANDBOOK_COMPANY_ID\n );\n protected readonly canShowChat = computed(() => {\n const product = this.workspaceNavbarService.sessionSignal()?.product;\n return this.showTools() && this.isChatProduct(product);\n });\n chatOpen = signal(false);\n\n constructor() {\n effect(() => {\n this.getLogo(this.selectedCompanyId());\n });\n effect(() => {\n if (!this.canShowChat()) this.chatOpen.set(false);\n });\n }\n\n ngAfterViewInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n fromEvent(window, 'scroll', { passive: true })\n .pipe(throttleTime(50), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n const scrollY = window.scrollY ?? window.pageYOffset ?? 0;\n if (scrollY <= this.scrollThreshold) {\n this.navHidden.set(false);\n } else if (scrollY > this.lastScrollY) {\n this.navHidden.set(true);\n } else {\n this.navHidden.set(false);\n }\n this.lastScrollY = scrollY;\n });\n }\n }\n\n private resolveIcon(app: IWorkspaceApp): string {\n if (app.icon) {\n return this.resolvePhosphorIcon(app.icon);\n }\n return this.iconMap[app.appId] ?? this.fallbackIcon;\n }\n\n private resolvePhosphorIcon(name: string): string {\n const key =\n 'phosphor' +\n name\n .split('-')\n .map(s => s.charAt(0).toUpperCase() + s.slice(1))\n .join('');\n return this.phosphorIconRegistry[key] ?? this.fallbackIcon;\n }\n\n protected onSideNavItemClick(item: NavItem): void {\n if (item.id === 'sign-out') {\n this.workspaceNavbarService.signOut().subscribe();\n return;\n }\n if (item.id === this.activeWorkspaceAppId()) {\n return;\n }\n const apps = this.workspaceNavbarService.workspaceAppsSignal() ?? [];\n const app = apps.find(a => a.appId === item.id);\n if (!app) return;\n this.appSwitched.emit(app);\n this.workspaceNavbarService.switchApp(app.appId).subscribe();\n }\n\n protected onCompanyChange(item: LogoMenuItem): void {\n if (item.id === this.selectedCompanyId()) {\n return;\n }\n this.workspaceNavbarService.changeCompany({ companyId: item.id }).subscribe();\n }\n\n protected onTopNavClick(item: NavItem): void {\n this.topNavItemClick.emit(item);\n if (item.route) {\n this.router.navigate([item.route]);\n }\n }\n\n protected onTopNavChange(event: NavItemChangeEvent): void {\n this.topNavItemChange.emit(event);\n }\n\n protected onSubTopNavClick(item: NavItem): void {\n this.subTopNavItemClick.emit(item);\n if (item.route) {\n this.router.navigate([item.route]);\n }\n }\n\n protected onSubTopNavChange(event: NavItemChangeEvent): void {\n this.subTopNavItemChange.emit(event);\n }\n\n protected onNotificationClick(): void {\n this.notificationClick.emit();\n }\n\n private findBestRouteMatch(url: string, items: NavItem[]): NavItem | undefined {\n return items\n .filter(item => item.route && this.matchesRoute(url, item.route))\n .sort((a, b) => (b.route?.length ?? 0) - (a.route?.length ?? 0))[0];\n }\n\n private matchesRoute(url: string, route: string): boolean {\n return url === route || url.startsWith(route + '/') || url.startsWith(route + '?');\n }\n\n private isChatProduct(product: Product | undefined): boolean {\n return product === Product.ADMIN || product === Product.SETHUB || product === Product.SZALES;\n }\n\n private getLogo(companyId: string): void {\n if (!companyId) return;\n this.workspaceNavbarService.getCompanyLogo(companyId).subscribe(logo => {\n this.companyLogo.set(logo.url ?? null);\n });\n }\n}\n","<ao-side-nav\n [items]=\"workspaceAppNavItems()\"\n [bottomItems]=\"bottomNavItems()\"\n [activeItemId]=\"activeWorkspaceAppId()\"\n [expanded]=\"false\"\n (itemClick)=\"onSideNavItemClick($event)\"\n>\n <ao-logo-menu\n aoSideNavLogo\n [items]=\"companyMenuItems()\"\n [selectedItem]=\"selectedCompanyId()\"\n (selectionChange)=\"onCompanyChange($event)\"\n >\n @if (companyLogo()) {\n <img [src]=\"companyLogo()\" alt=\"Logo\" class=\"workspace-navbar__logo\" />\n } @else {\n <svg\n class=\"workspace-navbar__logo\"\n width=\"96\"\n height=\"120\"\n viewBox=\"0 0 96 120\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label=\"Logo\"\n role=\"img\"\n >\n <path\n d=\"M36.6592 37.5955L31.1625 31.4924C28.1349 28.1284 28.4073 22.9247 31.7689 19.8971C33.2769 18.5401 35.2266 17.7918 37.2633 17.7918C39.5929 17.7918 41.8195 18.7781 43.3664 20.4967C45.458 22.824 46.0484 26.0826 44.911 28.998C44.4465 30.1903 43.7234 31.2338 42.7623 32.0988L36.6592 37.5955ZM95.5987 76.4613L83.6854 63.2299L70.4585 75.1363L48.5725 50.8269L54.6802 45.3279C57.6779 42.6253 60.035 39.2156 61.4949 35.4696C65.0969 26.2497 63.2204 15.9497 56.6001 8.58568C46.9981 -2.06444 30.5149 -2.92488 19.8556 6.66801C9.20088 16.2655 8.3359 32.7464 17.9311 43.4057L23.4255 49.5065L14.1118 57.8957C13.5099 58.438 12.9287 58.9621 12.3817 59.4792L12.3703 59.4655L11.2742 60.4518C4.49141 66.5572 0.493621 74.9372 0.0153502 84.045C-0.00525137 84.4317 -0.000673098 84.8185 0.00390115 85.2029L0.0084674 85.7086L0.00160688 87.1494L17.7823 87.1503L17.7938 85.7224L17.7915 85.4134C17.7892 85.2716 17.7869 85.1297 17.7938 84.9809C18.0203 80.6216 19.938 76.61 23.1852 73.6855L35.341 62.7379L57.2271 87.0473L45.0712 97.995C42.1055 100.668 38.261 102.151 34.2449 102.174L32.817 102.183V120L34.2586 119.998C42.6547 119.977 50.7258 116.86 56.9868 111.226L69.1404 100.281L81.0446 113.503L94.276 101.592L82.3718 88.3677L95.5987 76.4613Z\"\n fill=\"#FF004D\"\n />\n </svg>\n }\n </ao-logo-menu>\n</ao-side-nav>\n\n<div class=\"workspace-navbar__main\" [class.workspace-navbar__main--with-subnav]=\"hasSubTopNav()\">\n <div\n class=\"workspace-navbar__nav-wrapper\"\n [class.workspace-navbar__nav-wrapper--hidden]=\"navHidden()\"\n >\n <ao-top-nav\n [items]=\"topNavItems()\"\n [activeItemId]=\"activeTopNavItemId()\"\n [showSearch]=\"showSearch()\"\n [showNotifications]=\"showNotifications()\"\n [notificationCount]=\"notificationCount()\"\n [searchPlaceholder]=\"searchPlaceholder()\"\n [recommendedFilters]=\"recommendedFilters()\"\n [(activeFilter)]=\"activeFilter\"\n [resultGroups]=\"resultGroups()\"\n [searchPages]=\"effectiveSearchPages()\"\n [pageSuggestion]=\"pageSuggestion()\"\n [aiSuggestions]=\"aiSuggestions()\"\n [searchLoading]=\"searchLoading()\"\n [searchError]=\"searchError()\"\n (itemClick)=\"onTopNavClick($event)\"\n (itemChange)=\"onTopNavChange($event)\"\n (searchSubmit)=\"searchSubmit.emit($event)\"\n (searchQueryChange)=\"searchQueryChange.emit($event)\"\n (searchViewAll)=\"searchViewAll.emit($event)\"\n (searchResultSelect)=\"searchResultSelect.emit($event)\"\n (searchAiSuggestionSelect)=\"searchAiSuggestionSelect.emit($event)\"\n (searchPageSuggestionSelect)=\"searchPageSuggestionSelect.emit($event)\"\n (searchFilterSelect)=\"searchFilterSelect.emit($event)\"\n (searchFilterClear)=\"searchFilterClear.emit()\"\n (notificationClick)=\"onNotificationClick()\"\n [showTools]=\"showTools()\"\n />\n\n @if (hasSubTopNav()) {\n <ao-sub-top-nav\n [items]=\"activeSubTopNavItems()\"\n [activeItemId]=\"activeSubTopNavItemId()\"\n (itemClick)=\"onSubTopNavClick($event)\"\n (itemChange)=\"onSubTopNavChange($event)\"\n />\n }\n </div>\n\n <main class=\"workspace-navbar__content\">\n <ng-content />\n </main>\n</div>\n\n@if (canShowChat()) {\n <button ao-button class=\"handbook-chat\" variant=\"primary\" (click)=\"chatOpen.set(!chatOpen())\">\n <ao-icon [svg]=\"chatIcon\" />\n </button>\n\n <div class=\"chat-container\" [class.open]=\"chatOpen()\">\n <lib-chat [searchType]=\"activeFilter()?.type\" (closed)=\"chatOpen.set(false)\" />\n </div>\n}\n","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { A2uiRendererService, CatalogComponent } from '@a2ui/angular/v0_9';\nimport { ChoicePickerApi } from '@a2ui/web_core/v0_9/basic_catalog';\n\ninterface ChoicePickerOption {\n readonly label: string;\n readonly value: string;\n}\n\n/**\n * Robin-flavoured ChoicePicker that keeps the basic A2UI look but turns chip\n * selections into server actions so quick-reply chips behave like chat buttons.\n */\n@Component({\n selector: 'lib-ao-choice-picker',\n template: `\n <div class=\"a2ui-choice-picker\">\n @if (displayStyle() === 'chips') {\n <div class=\"a2ui-chips-group\">\n @for (option of options(); track option.value) {\n <button\n type=\"button\"\n class=\"a2ui-chip\"\n [class.active]=\"isSelected(option.value)\"\n (click)=\"selectOption(option)\"\n >\n {{ option.label }}\n </button>\n }\n </div>\n } @else {\n <div class=\"a2ui-options-group\">\n @for (option of options(); track option.value) {\n <label class=\"a2ui-option-label\">\n <input\n [type]=\"isMultiple() ? 'checkbox' : 'radio'\"\n [name]=\"componentId()\"\n [value]=\"option.value\"\n [checked]=\"isSelected(option.value)\"\n (change)=\"selectOption(option)\"\n class=\"a2ui-option-input\"\n />\n <span class=\"a2ui-option-text\">{{ option.label }}</span>\n </label>\n }\n </div>\n }\n </div>\n `,\n styles: [\n `\n .a2ui-choice-picker {\n padding: var(--a2ui-choicepicker-padding, 0);\n width: 100%;\n }\n .a2ui-options-group,\n .a2ui-chips-group {\n display: flex;\n flex-wrap: wrap;\n gap: var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, 0.25rem));\n }\n .a2ui-options-group {\n flex-direction: column;\n }\n .a2ui-option-label {\n align-items: center;\n color: var(--a2ui-text-color-text, var(--a2ui-color-on-background, #333));\n cursor: pointer;\n display: flex;\n gap: var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, 0.25rem));\n }\n .a2ui-option-input {\n height: var(--a2ui-choicepicker-checkbox-size, 1rem);\n width: var(--a2ui-choicepicker-checkbox-size, 1rem);\n }\n .a2ui-chip {\n background: var(--a2ui-choicepicker-chip-background, var(--a2ui-color-surface, #fff));\n border: var(--a2ui-choicepicker-chip-border, 1px solid var(--a2ui-color-border, #ccc));\n border-radius: var(--a2ui-choicepicker-chip-border-radius, 100px);\n color: var(--a2ui-choicepicker-chip-color, var(--a2ui-color-on-background, #333));\n cursor: pointer;\n font: inherit;\n padding: var(\n --a2ui-choicepicker-chip-padding,\n var(--a2ui-spacing-s, 0.5rem) var(--a2ui-spacing-m, 1rem)\n );\n transition:\n background-color 160ms ease,\n border-color 160ms ease,\n color 160ms ease,\n transform 160ms ease;\n }\n .a2ui-chip:hover {\n border-color: var(--a2ui-choicepicker-chip-border-hover, var(--a2ui-color-primary, #17e));\n transform: translateY(-1px);\n }\n .a2ui-chip.active {\n background: var(\n --a2ui-choicepicker-chip-background-selected,\n var(--a2ui-color-primary, #17e)\n );\n border-color: var(\n --a2ui-choicepicker-chip-background-selected,\n var(--a2ui-color-primary, #17e)\n );\n color: var(--a2ui-color-on-primary, #fff);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AoChoicePickerComponent extends CatalogComponent<typeof ChoicePickerApi> {\n protected readonly displayStyle = computed<string>(() => this.readString('displayStyle') ?? 'checkbox');\n protected readonly options = computed<ChoicePickerOption[]>(() => this.readOptions());\n protected readonly selectedValue = computed<readonly string[]>(() => this.readSelectedValues());\n private readonly renderer = inject(A2uiRendererService);\n protected isMultiple(): boolean {\n return this.readString('variant') === 'multipleSelection';\n }\n protected isSelected(value: string): boolean {\n return this.selectedValue().includes(value);\n }\n protected selectOption(option: ChoicePickerOption): void {\n const nextValue = this.getNextValue(option.value);\n this.props()['value']?.onUpdate([...nextValue]);\n if (this.displayStyle() === 'chips') this.dispatchSelection(option, nextValue);\n }\n private getNextValue(value: string): readonly string[] {\n if (!this.isMultiple()) return [value];\n if (this.isSelected(value)) return this.selectedValue().filter(item => item !== value);\n return [...this.selectedValue(), value];\n }\n private dispatchSelection(option: ChoicePickerOption, selectedValues: readonly string[]): void {\n const surface = this.renderer.surfaceGroup.getSurface(this.surfaceId());\n if (!surface) return;\n void surface.dispatchAction(\n {\n event: {\n name: 'choiceSelected',\n context: {\n componentId: this.componentId(),\n label: option.label,\n selectedValue: option.value,\n selectedValues: [...selectedValues],\n },\n },\n },\n this.componentId(),\n );\n }\n private readString(key: 'displayStyle' | 'variant'): string | undefined {\n const value = this.props()[key]?.value();\n return typeof value === 'string' ? value : undefined;\n }\n private readSelectedValues(): readonly string[] {\n const value = this.props()['value']?.value();\n if (!Array.isArray(value)) return [];\n return value.filter((item): item is string => typeof item === 'string');\n }\n private readOptions(): ChoicePickerOption[] {\n const value = this.props()['options']?.value();\n if (!Array.isArray(value)) return [];\n return value.filter(this.isChoicePickerOption);\n }\n private isChoicePickerOption(value: unknown): value is ChoicePickerOption {\n if (!value || typeof value !== 'object') return false;\n const option = value as Record<string, unknown>;\n return typeof option['label'] === 'string' && typeof option['value'] === 'string';\n }\n}\n","import { BasicCatalogBase } from '@a2ui/angular/v0_9';\nimport { Injectable } from '@angular/core';\nimport { ChoicePickerApi } from '@a2ui/web_core/v0_9/basic_catalog';\nimport { AoChoicePickerComponent } from './ao-choice-picker.component';\n\nexport const AO_CATALOG_ID = 'ah-oh.com:robin-v1';\n\n/**\n * Robin's design-system catalog. Phase 1 delegates entirely to the upstream\n * BasicCatalog implementations for the six allowed components; server-side\n * prompt-pruning + validator restrict the LLM to the agreed set. Phase 2 will\n * swap individual entries for ao-* design-system wrappers via the\n * BasicCatalogBase `components` override.\n *\n * Extends BasicCatalogBase (not BasicCatalog) so we can supply our own catalog\n * id — the renderer looks up catalogs by id when processing createSurface\n * messages, so this must match AO_CATALOG_ID used by the prompt/showcase.\n */\n@Injectable({ providedIn: 'root' })\nexport class AoCatalog extends BasicCatalogBase {\n constructor() {\n super({\n id: AO_CATALOG_ID,\n components: {\n choicePicker: { ...ChoicePickerApi, component: AoChoicePickerComponent },\n },\n });\n }\n}\n","import {\n A2UI_RENDERER_CONFIG,\n A2uiRendererService,\n provideMarkdownRenderer,\n} from '@a2ui/angular/v0_9';\nimport { renderMarkdown } from '@a2ui/markdown-it';\nimport { EnvironmentProviders, makeEnvironmentProviders, inject } from '@angular/core';\nimport { RobinChatActionDispatcher } from '../robin-chat-action-dispatcher.service';\nimport { AoCatalog } from './ao-catalog';\n\ninterface A2uiClientAction {\n name: string;\n surfaceId: string;\n sourceComponentId: string;\n timestamp: string;\n context: Record<string, unknown>;\n}\n\ninterface RobinA2uiRendererConfiguration {\n readonly catalogs: readonly AoCatalog[];\n readonly actionHandler: (action: A2uiClientAction) => void;\n}\n\n/**\n * Registers the A2UI renderer for Robin chat. Apps must call this in their\n * provider list (NgModule providers or appConfig) so &lt;a2ui-v09-surface&gt; can\n * resolve components, render Markdown text, and route actions back to the\n * Robin backend via {@link RobinChatActionDispatcher}.\n */\nexport function provideRobinA2ui(): EnvironmentProviders {\n return makeEnvironmentProviders([\n AoCatalog,\n provideMarkdownRenderer((markdown: string): Promise<string> =>\n renderMarkdown(markdown).catch(renderFallbackMarkdown),\n ),\n {\n provide: A2UI_RENDERER_CONFIG,\n useFactory: (): RobinA2uiRendererConfiguration => {\n const catalog = inject(AoCatalog);\n const dispatcher = inject(RobinChatActionDispatcher);\n return {\n catalogs: [catalog],\n actionHandler: (action: A2uiClientAction): void => {\n void dispatcher.dispatch(action);\n },\n };\n },\n },\n A2uiRendererService,\n ]);\n}\n\nfunction renderFallbackMarkdown(markdown: string): string {\n return escapeHtml(markdown)\n .replace(/^#### (.*)$/gim, '<h4>$1</h4>')\n .replace(/^### (.*)$/gim, '<h3>$1</h3>')\n .replace(/^## (.*)$/gim, '<h2>$1</h2>')\n .replace(/^# (.*)$/gim, '<h1>$1</h1>')\n .replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>')\n .replace(/\\*(.*?)\\*/g, '<em>$1</em>')\n .replace(/\\n/g, '<br>');\n}\n\nfunction escapeHtml(value: string): string {\n return value\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;');\n}\n","/*\n * Public API Surface of design-system\n */\n\nexport * from './lib/design-system';\nexport * from './lib/auth';\nexport * from './lib/button/button.component';\nexport * from './lib/icon/icon.component';\nexport * from './lib/icon-button/icon-button.component';\nexport * from './lib/input/input.component';\nexport * from './lib/select/select.component';\nexport * from './lib/table/table.component';\nexport * from './lib/table/table.types';\nexport * from './lib/table/directives/table-cell-def.directive';\nexport * from './lib/table/components/table-checkbox.component';\nexport * from './lib/table/components/table-filter.component';\nexport * from './lib/table/components/table-input.component';\nexport * from './lib/table/components/table-select.component';\nexport * from './lib/table/components/table-pagination.component';\nexport * from './lib/table/components/table-row-actions.component';\nexport * from './lib/table/components/table-date-picker.component';\nexport * from './lib/markdown-editor/markdown-editor.component';\nexport * from './lib/markdown-editor/markdown-editor.types';\nexport * from './lib/slide-toggle/slide-toggle.component';\nexport * from './lib/editable-text/editable-text.component';\nexport * from './lib/dialog/dialog.component';\nexport * from './lib/dialog/dialog.service';\nexport * from './lib/dialog/dialog-ref';\nexport * from './lib/dialog/dialog.types';\nexport * from './lib/chips-input/chips-input.component';\nexport * from './lib/multiselect/multiselect.component';\nexport * from './lib/checkbox/checkbox.component';\nexport * from './lib/tabs/tabs.component';\nexport * from './lib/tabs/tab-panel.component';\nexport * from './lib/tabs/tabs.types';\nexport * from './lib/navigation/navigation.types';\nexport * from './lib/navigation/search-pages';\nexport * from './lib/navigation/side-nav/side-nav.component';\nexport * from './lib/navigation/top-nav/top-nav.component';\nexport * from './lib/navigation/top-nav/nav-tools/nav-tools.component';\nexport * from './lib/navigation/ai-search/ai-search.component';\nexport * from './lib/navigation/search-results-page/search-results-page.component';\nexport * from './lib/navigation/services/robin-search.service';\nexport * from './lib/navigation/notification-button/notification-button.component';\nexport * from './lib/navigation/logo-menu/logo-menu.component';\nexport * from './lib/navigation/sub-top-nav/sub-top-nav.component';\nexport * from './lib/navigation/sub-nav-actions/sub-nav-actions.service';\nexport * from './lib/navigation/sub-nav-actions/sub-nav-actions.types';\nexport * from './lib/menu/components/menu/menu.component';\nexport * from './lib/menu/components/menu-item/menu-item.component';\nexport * from './lib/tooltip/directive/tooltip.directive';\nexport * from './lib/date-input/date-input.component';\nexport * from './lib/workspace-navbar/workspace-navbar.component';\nexport * from './lib/workspace-navbar/workspace-navbar.service';\nexport * from './lib/workspace-navbar/workspace-navbar.types';\nexport * from './lib/workspace-navbar/chat/chat.types';\nexport * from './lib/workspace-navbar/chat/robin-chat.service';\nexport * from './lib/workspace-navbar/chat/robin-chat-action-dispatcher.service';\nexport * from './lib/workspace-navbar/chat/a2ui/ao-catalog';\nexport * from './lib/workspace-navbar/chat/a2ui/a2ui-chat.providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.HandbookConfiguration","i1","i1.HandbookEntriesService","i2","map","i2.HandbookEntriesService","i3.WorkspaceNavbarService","i1.WorkspaceNavbarService","i2.WorkspaceNavbarService","i3","filter","throttleTime"],"mappings":"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"}