{"version":3,"file":"igo2-sdg-common.mjs","sources":["../../../packages/common/src/alert/alert.interface.ts","../../../packages/common/src/alert/alert.component.ts","../../../packages/common/src/alert/alert.component.html","../../../packages/common/src/analytics/analytics.interface.ts","../../../packages/common/src/analytics/analytics.provider.ts","../../../packages/common/src/analytics/google-analytics/google-analytics.service.ts","../../../packages/common/src/analytics/google-analytics/google-analytics.provider.ts","../../../packages/common/src/shared/label/with-labels.ts","../../../packages/common/src/shared/label/label.ts","../../../packages/common/src/router/router.ts","../../../packages/common/src/router/title-resolver/title-resolver.ts","../../../packages/common/src/router/title-resolver/title-resolver.pipe.ts","../../../packages/common/src/router/route.utils.ts","../../../packages/common/src/shared/anchor/anchor.component.ts","../../../packages/common/src/shared/anchor/anchor.component.html","../../../packages/common/src/anchor-menu/anchor-menu.component.ts","../../../packages/common/src/anchor-menu/anchor-menu.component.html","../../../packages/common/src/anchor-menu/anchor-menu.utils.ts","../../../packages/common/src/block-link/block-link-icon/block-link-icon.component.ts","../../../packages/common/src/block-link/block-link-icon/block-link-icon.component.html","../../../packages/common/src/block-link/block-link-see-more/block-link-see-more.component.ts","../../../packages/common/src/block-link/block-link-see-more/block-link-see-more.component.html","../../../packages/common/src/block-link/block-link-subsection/block-link-subsection.component.ts","../../../packages/common/src/block-link/block-link-subsection/block-link-subsection.component.html","../../../packages/common/src/block-link/block-link-title-description/block-link-title-description.component.ts","../../../packages/common/src/block-link/block-link-title-description/block-link-title-description.component.html","../../../packages/common/src/block-link/block-link.component.ts","../../../packages/common/src/block-link/block-link.component.html","../../../packages/common/src/breadcrumbs/breadcrumbs-base.ts","../../../packages/common/src/breadcrumbs/breadcrumbs-menu/breadcrumbs-menu.component.ts","../../../packages/common/src/breadcrumbs/breadcrumbs-menu/breadcrumbs-menu.component.html","../../../packages/common/src/breadcrumbs/breadcrumbs-list/breadcrumbs-list.component.ts","../../../packages/common/src/breadcrumbs/breadcrumbs-list/breadcrumbs-list.component.html","../../../packages/common/src/breadcrumbs/breadcrumbs.component.ts","../../../packages/common/src/breadcrumbs/breadcrumbs-with-router.component.ts","../../../packages/common/src/external-link/external-link.component.ts","../../../packages/common/src/charter-banner/charter-banner.component.ts","../../../packages/common/src/charter-banner/charter-banner.component.html","../../../packages/common/src/contact/contact.component.ts","../../../packages/common/src/contact/contact.component.html","../../../packages/common/src/contact/contact.ts","../../../packages/common/src/footer/footer-copyright/footer-copyright.component.ts","../../../packages/common/src/footer/footer-copyright/footer-copyright.component.html","../../../packages/common/src/footer/footer-links/footer-links.component.ts","../../../packages/common/src/footer/footer-links/footer-links.component.html","../../../packages/common/src/footer/footer-navigation/footer-navigation.component.ts","../../../packages/common/src/footer/footer-navigation/footer-navigation.component.html","../../../packages/common/src/footer/footer.component.ts","../../../packages/common/src/footer/footer.component.html","../../../packages/common/src/form-field-label/form-field-label.component.ts","../../../packages/common/src/form-field-label/form-field-label.component.html","../../../packages/common/src/header/header.component.ts","../../../packages/common/src/header/header.component.html","../../../packages/common/src/lateral-menu/lateral-menu-item/lateral-menu-item.component.ts","../../../packages/common/src/lateral-menu/lateral-menu-item/lateral-menu-item.component.html","../../../packages/common/src/lateral-menu/lateral-menu-section/lateral-menu-section.component.ts","../../../packages/common/src/lateral-menu/lateral-menu-section/lateral-menu-section.component.html","../../../packages/common/src/lateral-menu/lateral-menu.component.ts","../../../packages/common/src/lateral-menu/lateral-menu.component.html","../../../packages/common/src/layout/breakpoint/breakpoint.service.ts","../../../packages/common/src/navigation/title/title-strategy.service.ts","../../../packages/common/src/navigation/title/title.provider.ts","../../../packages/common/src/navigation/navigation.component.ts","../../../packages/common/src/navigation/navigation.component.html","../../../packages/common/src/navigation/navigation.utils.ts","../../../packages/common/src/notice/notice.interface.ts","../../../packages/common/src/notice/notice.component.ts","../../../packages/common/src/notice/notice.component.html","../../../packages/common/src/paginator/paginator.component.ts","../../../packages/common/src/paginator/paginator.component.html","../../../packages/common/src/popover/popover.ts","../../../packages/common/src/popover/popover.html","../../../packages/common/src/search-bar/search-bar.component.ts","../../../packages/common/src/search-bar/search-bar.component.html","../../../packages/common/src/see-also/see-also.component.ts","../../../packages/common/src/see-also/see-also.component.html","../../../packages/common/src/sequential-links/sequential-links.component.ts","../../../packages/common/src/sequential-links/sequential-links.component.html","../../../packages/common/src/tile/tile.component.ts","../../../packages/common/src/tile/tile.component.html","../../../packages/common/src/top-page-button/top-page-button.component.ts","../../../packages/common/src/top-page-button/top-page-button.component.html","../../../packages/common/src/igo2-sdg-common.ts"],"sourcesContent":["export enum AlertType {\n  General = 'general',\n  Warning = 'warning'\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  input,\n  output\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { AlertType } from './alert.interface';\n\n@Component({\n  selector: 'sdg-alert',\n  imports: [MatIconModule, MatButtonModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './alert.component.html',\n  styleUrls: ['./alert.component.scss'],\n  host: {\n    '[class]': 'typeClass()'\n  }\n})\nexport class AlertComponent {\n  readonly type = input.required<keyof typeof AlertType>();\n  readonly closeable = input<boolean>(false);\n  readonly containerClass = input<string>('');\n\n  readonly typeClass = computed(() => `--${AlertType[this.type()]}`);\n\n  closed = output<boolean>();\n\n  close(): void {\n    this.closed.emit(true);\n  }\n}\n","<div class=\"sdg-alert-container\" [class]=\"containerClass()\">\n  <mat-icon class=\"sdg-alert-icon\" [class]=\"typeClass()\">\n    <svg viewBox=\"0 -960 960 960\">\n      @switch (type()) {\n        @case ('Warning') {\n          <!-- icon name: warning -->\n          <path\n            d=\"m40-120 440-760 440 760H40Zm138-80h604L480-720 178-200Zm302-40q17 0 28.5-11.5T520-280q0-17-11.5-28.5T480-320q-17 0-28.5 11.5T440-280q0 17 11.5 28.5T480-240Zm-40-120h80v-200h-80v200Zm40-100Z\"\n          />\n        }\n        @default {\n          <!-- icon name: info -->\n          <path\n            d=\"M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"\n          />\n        }\n      }\n    </svg>\n  </mat-icon>\n\n  <div class=\"sdg-alert-message\">\n    <ng-content />\n  </div>\n\n  @if (closeable()) {\n    <button\n      mat-icon-button\n      class=\"sdg-alert-button\"\n      [disableRipple]=\"true\"\n      (click)=\"close()\"\n    >\n      <mat-icon color=\"primary\">\n        <svg\n          height=\"24px\"\n          viewBox=\"0 -960 960 960\"\n          width=\"24px\"\n          focusable=\"false\"\n        >\n          <path\n            d=\"m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z\"\n          />\n        </svg>\n      </mat-icon>\n    </button>\n  }\n</div>\n","import { EnvironmentProviders, Provider } from '@angular/core';\n\nexport interface AnalyticsFeature<KindT extends AnalyticsFeatureKind> {\n  kind: KindT;\n  providers: (Provider | EnvironmentProviders)[];\n}\n\nexport enum AnalyticsFeatureKind {\n  GoogleAnalytic = 0\n}\n","import {\n  EnvironmentProviders,\n  Provider,\n  makeEnvironmentProviders\n} from '@angular/core';\n\nimport { AnalyticsFeature, AnalyticsFeatureKind } from './analytics.interface';\n\nexport function provideAnalytics(\n  ...features: AnalyticsFeature<AnalyticsFeatureKind>[]\n) {\n  const providers: (Provider | EnvironmentProviders)[] = [];\n\n  for (const feature of features) {\n    providers.push(...feature.providers);\n  }\n\n  return makeEnvironmentProviders(providers);\n}\n","import { Injectable, NgZone, inject } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\n\nimport { Subscription, filter, first } from 'rxjs';\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\ndeclare let gtag: Function;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class GoogleAnalyticsService {\n  private router = inject(Router);\n  private ngZone = inject(NgZone);\n\n  private routerEvents$$?: Subscription;\n\n  initialize(): void {\n    if (!gtag) {\n      throw new Error('The gtag was not created for Google Analytics');\n    }\n  }\n\n  trackEvent(eventName: string, eventParams: Record<string, unknown>): void {\n    gtag('event', eventName, eventParams);\n  }\n\n  trackFirstSSRPageView(): void {\n    if (this.routerEvents$$) {\n      throw new Error(\n        'Page tracking is already instantiated for Google Analytics'\n      );\n    }\n\n    this.routerEvents$$ = this.router.events\n      .pipe(\n        filter((event) => event instanceof NavigationEnd),\n        first()\n      )\n      .subscribe((event: NavigationEnd) => {\n        // WORKAROUND, the gtag call is blocking the SSR hydratation\n        this.ngZone.runOutsideAngular(() => {\n          gtag('event', 'page_view', {\n            page_path: event.urlAfterRedirects\n          });\n        });\n      });\n  }\n}\n","import { isPlatformServer } from '@angular/common';\nimport {\n  DOCUMENT,\n  PLATFORM_ID,\n  TransferState,\n  inject,\n  provideAppInitializer\n} from '@angular/core';\n\nimport { AnalyticsFeature, AnalyticsFeatureKind } from '../analytics.interface';\nimport { IGoogleAnalyticsOptions } from './google-analytics.interface';\nimport { GoogleAnalyticsService } from './google-analytics.service';\n\nexport function withGoogleAnalytics(\n  options: IGoogleAnalyticsOptions\n): AnalyticsFeature<AnalyticsFeatureKind.GoogleAnalytic> {\n  if (!options.targetId) {\n    throw new Error('Vous devez configurer le targetId pour Google Analytics');\n  }\n\n  return {\n    kind: AnalyticsFeatureKind.GoogleAnalytic,\n    providers: [\n      GoogleAnalyticsService,\n      provideAppInitializer(() => {\n        const platformId = inject(PLATFORM_ID);\n        if (isPlatformServer(platformId)) {\n          return;\n        }\n\n        return googleAnalyticsFactory(options);\n      })\n    ]\n  };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\ndeclare let gtag: Function;\n\nfunction googleAnalyticsFactory(options: IGoogleAnalyticsOptions): void {\n  const document = inject(DOCUMENT);\n  const gaService = inject(GoogleAnalyticsService);\n  const transferState = inject(TransferState);\n\n  // Dynamically load the Google Analytics script\n  const script = document.createElement('script');\n  script.async = true;\n  script.src = `https://www.googletagmanager.com/gtag/js?id=${options.targetId}`;\n  document.head.appendChild(script);\n\n  script.onload = () => {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const _window = window as any;\n    _window['dataLayer'] = _window['dataLayer'] || [];\n    _window['gtag'] = function () {\n      // eslint-disable-next-line prefer-rest-params\n      _window['dataLayer'].push(arguments);\n    };\n\n    gtag('js', new Date());\n\n    // Disable automatic page view tracking\n    gtag('config', options.targetId, {\n      send_page_view: false,\n      cookie_flags: 'SameSite=None;Secure',\n      ...(options.config ?? {})\n    });\n\n    gaService.initialize();\n\n    /**\n     * Track the first page view but after we fallback on the default TagManager event. You can manage this event in the TagManger admin console.\n     * https://support.google.com/tagmanager/answer/7679319?hl=en&ref_topic=7679108&sjid=1071553345249084852-NA\n     * Use the empty transfer state to detect Client only rendered pages\n     */\n    if (!transferState.isEmpty) {\n      gaService.trackFirstSSRPageView();\n    }\n  };\n}\n","import {\n  Directive,\n  InjectionToken,\n  Signal,\n  computed,\n  inject,\n  model\n} from '@angular/core';\n\nimport { LabelObject } from './label';\n\n@Directive()\nexport class WithLabels<T extends LabelObject> {\n  labelsToken: T | null;\n  defaultLabels: T | null;\n\n  readonly modeLabels = model<Partial<T> | null | undefined>({} as T, {\n    alias: 'labels'\n  });\n\n  /**\n   * Labels merged from defaults, injection token, and input binding.\n   * Priority (highest wins): input binding > injection token > defaults.\n   */\n  readonly labels: Signal<T>;\n\n  // eslint-disable-next-line @angular-eslint/prefer-inject\n  constructor(defaultLabels: T | undefined, labelsToken: InjectionToken<T>) {\n    this.defaultLabels = defaultLabels ?? null;\n    this.labelsToken = inject(labelsToken, { optional: true });\n    this.labels = computed(() =>\n      this.mergeLabels(this.defaultLabels, this.labelsToken, this.modeLabels())\n    );\n  }\n\n  private mergeLabels(\n    defaults: T | null,\n    token: T | null | undefined,\n    input: Partial<T> | null | undefined\n  ): T {\n    return {\n      ...(defaults ?? {}),\n      ...(token ?? {}),\n      ...(input ?? {})\n    } as T;\n  }\n}\n","export type Label =\n  | string\n  | Label[]\n  | LabelObject\n\n  // required to prevent error \"Type instantiation is excessively deep and possibly infinite.\"\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  | any;\n\n// using Record<> does not work because TS does not support recursive definitions\nexport interface LabelObject {\n  [key: string]: Label;\n}\n\nexport function labelAttribute(\n  value: Label | LabelObject | undefined,\n  defaultValue: Label | LabelObject = {}\n): Label | LabelObject {\n  const resolved = value ?? {};\n\n  if (isLabelObject(resolved) && isLabelObject(defaultValue)) {\n    return deepMerge(defaultValue as LabelObject, resolved as LabelObject);\n  }\n\n  return resolved;\n}\n\nfunction isLabelObject(value: unknown): value is LabelObject {\n  return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction deepMerge(target: LabelObject, source: LabelObject): LabelObject {\n  const output: LabelObject = { ...target };\n  for (const key of Object.keys(source)) {\n    if (isLabelObject(source[key]) && isLabelObject(target[key])) {\n      output[key] = deepMerge(\n        target[key] as LabelObject,\n        source[key] as LabelObject\n      );\n    } else {\n      output[key] = source[key];\n    }\n  }\n  return output;\n}\n","import { Route } from '@angular/router';\n\nimport { TitleResolver } from './title-resolver/title-resolver';\n\nexport const RouteTitleKey = 'RouteTitle';\nexport const RouteTranslateKey = 'TranslateKey';\n\nfunction hasStaticTitle(config: Route): boolean {\n  return typeof config.title === 'string' || config.title === null;\n}\n\nexport function resolveTitle(\n  config: Route,\n  titleResolver?: TitleResolver | null\n): string | undefined {\n  if (hasStaticTitle(config)) {\n    return config.title as string;\n  } else {\n    return (\n      titleResolver?.resolveStatic(config) ?? config.data?.[RouteTranslateKey] // try to fallback on the translation key\n    );\n  }\n}\n","import {\n  ActivatedRouteSnapshot,\n  MaybeAsync,\n  Resolve,\n  Route,\n  RouterStateSnapshot\n} from '@angular/router';\n\nexport abstract class TitleResolver<T = string> implements Resolve<T> {\n  abstract resolve(\n    route: ActivatedRouteSnapshot,\n    state: RouterStateSnapshot\n  ): MaybeAsync<T>;\n  abstract resolveStatic(route: Route): string | undefined;\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\n\nimport { SdgRoute } from '../route.interface';\nimport { resolveTitle } from '../router';\nimport { TitleResolver } from './title-resolver';\n\n@Pipe({\n  name: 'titleResolver',\n  standalone: true\n})\nexport class TitleResolverPipe implements PipeTransform {\n  private titleResolver = inject(TitleResolver, { optional: true });\n\n  transform(value: SdgRoute): string | undefined {\n    return resolveTitle(value, this.titleResolver);\n  }\n}\n","export function pathIsExternal(path: string): boolean {\n  const regex = /^https?:\\/\\//;\n  return regex.test(path);\n}\n\nexport function isSafeUrl(url: string): boolean {\n  const safePattern = /^(https?:\\/\\/|\\/(?!\\/)|\\.\\/|\\.\\.\\/)/;\n  const unsafePattern = /^(javascript:|data:|vbscript:)/i;\n  return safePattern.test(url) && !unsafePattern.test(url.trim());\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  Signal,\n  computed,\n  input\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\nimport { pathIsExternal } from '../../router';\n\n@Component({\n  selector: 'sdg-anchor',\n  imports: [RouterLink, NgTemplateOutlet],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './anchor.component.html',\n  styleUrls: ['./anchor.component.scss']\n})\nexport class AnchorComponent {\n  readonly path = input.required<string>();\n\n  externalPath: Signal<boolean | undefined> = computed(() => {\n    if (!this.path()) {\n      return;\n    }\n    return pathIsExternal(this.path());\n  });\n}\n","@if (externalPath()) {\n  <a [href]=\"path()\" target=\"_blank\"\n    ><ng-container [ngTemplateOutlet]=\"CONTENT\" />\n  </a>\n} @else {\n  <a [routerLink]=\"path()\"><ng-container [ngTemplateOutlet]=\"CONTENT\" /></a>\n}\n\n<ng-template #CONTENT>\n  <ng-content />\n</ng-template>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  DOCUMENT,\n  InjectionToken,\n  OnInit,\n  inject,\n  input\n} from '@angular/core';\nimport { ActivatedRoute, RouterLink } from '@angular/router';\n\nimport { WithLabels } from '../shared';\nimport { Anchor, AnchorMenuLabels } from './anchor-menu.interface';\n\nexport const SDG_ANCHOR_MENU_LABELS = new InjectionToken<AnchorMenuLabels>(\n  'SDG_ANCHOR_MENU_LABELS'\n);\n\nconst DEFAULT_LABELS: AnchorMenuLabels = {\n  title: 'Dans cette page :'\n};\n\n@Component({\n  selector: 'sdg-anchor-menu',\n  imports: [RouterLink],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './anchor-menu.component.html',\n  styleUrls: ['./anchor-menu.component.scss']\n})\nexport class AnchorMenuComponent\n  extends WithLabels<AnchorMenuLabels>\n  implements OnInit\n{\n  private activatedRoute = inject(ActivatedRoute);\n  private document = inject<Document>(DOCUMENT);\n\n  readonly anchors = input.required<Anchor[]>();\n\n  constructor() {\n    super(DEFAULT_LABELS, SDG_ANCHOR_MENU_LABELS);\n  }\n\n  ngOnInit() {\n    this.activatedRoute.fragment.subscribe((fragment) => {\n      if (fragment) {\n        this.jumpToSection(fragment);\n      }\n    });\n  }\n\n  private jumpToSection(id: string) {\n    this.document.getElementById(id)?.scrollIntoView();\n  }\n}\n","<div class=\"sdg-anchor-menu-container\">\n  <span\n    ><b>{{ labels().title }}</b></span\n  >\n  @for (anchor of anchors(); track anchor) {\n    <a routerLink=\"./\" [fragment]=\"anchor.htmlElementId\">{{ anchor.text }}</a>\n  }\n</div>\n","import { Anchor } from './anchor-menu.interface';\n\nexport function findTitleAnchors(containerElement: HTMLElement): Anchor[] {\n  const elements = containerElement.getElementsByTagName('h2');\n\n  const anchors = Array.from(elements).map((element) => ({\n    text: element.innerText,\n    htmlElementId: element.id\n  }));\n\n  return anchors;\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Signal,\n  computed,\n  input\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { pathIsExternal } from '../../router';\nimport { AnchorComponent } from '../../shared/anchor/anchor.component';\nimport { BlockLinkSection } from '../block-link.interface';\n\n@Component({\n  selector: 'sdg-block-link-icon',\n  imports: [MatIconModule, AnchorComponent],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './block-link-icon.component.html',\n  styleUrls: ['./block-link-icon.component.scss']\n})\nexport class BlockLinkIconComponent {\n  readonly path = input.required<BlockLinkSection['path']>();\n  readonly icon = input.required<BlockLinkSection['icon']>();\n  readonly description = input<BlockLinkSection['description']>();\n\n  readonly externalPath: Signal<boolean | undefined> = computed(() => {\n    if (!this.path()) {\n      return;\n    }\n    return pathIsExternal(this.path());\n  });\n}\n","<sdg-anchor [path]=\"path()\"\n  ><mat-icon\n    class=\"sdg-block-link-icon-link-icon\"\n    [class.--no-description]=\"!description()\"\n    color=\"primary\"\n    >{{ icon() }}</mat-icon\n  ></sdg-anchor\n>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  InjectionToken,\n  Signal,\n  computed,\n  input\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { pathIsExternal } from '../../router';\nimport { WithLabels } from '../../shared';\nimport { AnchorComponent } from '../../shared/anchor/anchor.component';\nimport { BlockLinkLabels, BlockLinkSection } from '../block-link.interface';\n\nexport const SDG_BLOCK_LINK_LABELS = new InjectionToken<BlockLinkLabels>(\n  'SDG_BLOCK_LINK_LABELS'\n);\n\nconst DEFAULT_LABELS: BlockLinkLabels = {\n  seeMore: 'Voir plus'\n};\n\n@Component({\n  selector: 'sdg-block-link-see-more',\n  imports: [MatIconModule, AnchorComponent],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './block-link-see-more.component.html',\n  styleUrls: ['./block-link-see-more.component.scss']\n})\nexport class BlockLinkSeeMoreComponent extends WithLabels<BlockLinkLabels> {\n  readonly path = input.required<BlockLinkSection['path']>();\n\n  readonly externalPath: Signal<boolean | undefined> = computed(() => {\n    if (!this.path()) {\n      return;\n    }\n    return pathIsExternal(this.path());\n  });\n\n  constructor() {\n    super(DEFAULT_LABELS, SDG_BLOCK_LINK_LABELS);\n  }\n}\n","<sdg-anchor [path]=\"path()\">\n  {{ labels().seeMore }}\n  <mat-icon class=\"sdg-block-link-see-more-icon\" color=\"primary\">\n    @if (externalPath()) {\n      <!-- icon name: open_in_new -->\n      <svg viewBox=\"0 -960 960 960\">\n        <path\n          d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h280v80H200v560h560v-280h80v280q0 33-23.5 56.5T760-120H200Zm188-212-56-56 372-372H560v-80h280v280h-80v-144L388-332Z\"\n        />\n      </svg>\n    } @else {\n      <!-- icon name: east -->\n      <svg viewBox=\"0 -960 960 960\">\n        <path\n          d=\"m600-200-57-56 184-184H80v-80h647L544-704l56-56 280 280-280 280Z\"\n        />\n      </svg>\n    }</mat-icon\n></sdg-anchor>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Signal,\n  computed,\n  input\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { pathIsExternal } from '../../router';\nimport { AnchorComponent } from '../../shared/anchor/anchor.component';\nimport { BlockLinkSubsection } from '../block-link.interface';\n\n@Component({\n  selector: 'sdg-block-link-subsection',\n  imports: [MatIconModule, AnchorComponent],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './block-link-subsection.component.html',\n  styleUrls: ['./block-link-subsection.component.scss']\n})\nexport class BlockLinkSubsectionComponent {\n  readonly subsection = input.required<BlockLinkSubsection>();\n\n  readonly externalPath: Signal<boolean | undefined> = computed(() => {\n    const path = this.subsection().path;\n    if (!path) {\n      return;\n    }\n    return pathIsExternal(path);\n  });\n}\n","<sdg-anchor [path]=\"subsection().path\">{{ subsection().title }}</sdg-anchor>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Signal,\n  computed,\n  input\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { pathIsExternal } from '../../router';\nimport { AnchorComponent } from '../../shared/anchor/anchor.component';\nimport { BlockLinkSection } from '../block-link.interface';\n\n@Component({\n  selector: 'sdg-block-link-title-description',\n  imports: [MatIconModule, AnchorComponent],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './block-link-title-description.component.html',\n  styleUrls: ['./block-link-title-description.component.scss']\n})\nexport class BlockLinkTitleDescriptionComponent {\n  readonly section = input.required<BlockLinkSection>();\n\n  readonly externalPath: Signal<boolean | undefined> = computed(() => {\n    const path = this.section().path;\n    if (!path) {\n      return;\n    }\n    return pathIsExternal(path);\n  });\n}\n","<sdg-anchor [path]=\"section().path\"\n  ><h5\n    class=\"sdg-block-link-title\"\n    [class.--no-description]=\"!section().description\"\n  >\n    <span>{{ section().title }}</span>\n    <mat-icon class=\"sdg-block-link-title-arrow\" color=\"accent\">\n      <!-- icon name: east -->\n      <svg viewBox=\"0 -960 960 960\">\n        <path\n          d=\"m600-200-57-56 184-184H80v-80h647L544-704l56-56 280 280-280 280Z\"\n        />\n      </svg>\n    </mat-icon>\n  </h5>\n\n  @if (section().description) {\n    <p class=\"sdg-block-link-description\">{{ section().description }}</p>\n  }\n</sdg-anchor>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  Signal,\n  computed,\n  input\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { pathIsExternal } from '../router';\nimport { BlockLinkIconComponent } from './block-link-icon/block-link-icon.component';\nimport { BlockLinkSeeMoreComponent } from './block-link-see-more/block-link-see-more.component';\nimport { BlockLinkSubsectionComponent } from './block-link-subsection/block-link-subsection.component';\nimport { BlockLinkTitleDescriptionComponent } from './block-link-title-description/block-link-title-description.component';\nimport { BlockLinkSection } from './block-link.interface';\n\n@Component({\n  selector: 'sdg-block-link',\n  imports: [\n    MatIconModule,\n    BlockLinkSubsectionComponent,\n    BlockLinkIconComponent,\n    BlockLinkSeeMoreComponent,\n    BlockLinkTitleDescriptionComponent\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './block-link.component.html',\n  styleUrls: ['./block-link.component.scss']\n})\nexport class BlockLinkComponent {\n  readonly section = input.required<BlockLinkSection>();\n\n  readonly externalPath: Signal<boolean | undefined> = computed(() => {\n    const path = this.section().path;\n    if (!path) {\n      return;\n    }\n    return pathIsExternal(path);\n  });\n}\n","@if (section().icon) {\n  <sdg-block-link-icon\n    [icon]=\"section().icon!\"\n    [path]=\"section().path\"\n    [description]=\"section().description\"\n  />\n}\n\n<div class=\"sdg-block-link-content\">\n  <sdg-block-link-title-description [section]=\"section()\" />\n\n  @if (section().subsections) {\n    <div class=\"sdg-block-link-subsections\">\n      @for (subsection of section().subsections; track subsection) {\n        <sdg-block-link-subsection [subsection]=\"subsection\" />\n      }\n    </div>\n  }\n\n  <sdg-block-link-see-more [path]=\"section().path\" />\n</div>\n","import { Directive, Signal, computed } from '@angular/core';\n\nimport {\n  AnyBreadcrumb,\n  BreadcrumbMenu,\n  Breadcrumbs\n} from './shared/breadcrumbs.interface';\n\n@Directive()\nexport abstract class BreadcrumbsBase {\n  readonly hasBreadcrumbs = computed(() => this.breadcrumbsList().length > 0);\n\n  abstract breadcrumbs: Signal<Breadcrumbs>;\n  breadcrumbsList = this.getBreadcrumbs();\n\n  isMenu(breadcrumb: AnyBreadcrumb): breadcrumb is BreadcrumbMenu {\n    return !!(breadcrumb as BreadcrumbMenu)?.menu;\n  }\n\n  private getBreadcrumbs(): Signal<AnyBreadcrumb[]> {\n    return computed(() => {\n      const breads = this.breadcrumbs();\n\n      if (breads.length >= 5) {\n        const menu: BreadcrumbMenu = {\n          id: 'menu',\n          menu: breads.slice(2, -2)\n        };\n        return [...breads.slice(0, 2), menu, ...breads.slice(-2)];\n      } else {\n        return breads;\n      }\n    });\n  }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { RouterLink } from '@angular/router';\n\nimport { BreadcrumbMenu } from '../shared/breadcrumbs.interface';\n\n@Component({\n  selector: 'sdg-breadcrumbs-menu',\n  imports: [MatMenuModule, MatButtonModule, MatIconModule, RouterLink],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './breadcrumbs-menu.component.html',\n  styleUrl: './breadcrumbs-menu.component.scss'\n})\nexport class BreadcrumbsMenuComponent {\n  readonly breadcrumb = input.required<BreadcrumbMenu>();\n}\n","<button\n  mat-icon-button\n  [matMenuTriggerFor]=\"menu\"\n  aria-label=\"Example icon-button with a menu\"\n>\n  <mat-icon>more_horiz</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\">\n  @for (subBreadcrumb of breadcrumb().menu; track subBreadcrumb) {\n    <button mat-menu-item [routerLink]=\"subBreadcrumb.url\">\n      <span>{{ subBreadcrumb.title }}</span>\n    </button>\n  }\n</mat-menu>\n\n<mat-icon [inline]=\"true\">chevron_left</mat-icon>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterLink } from '@angular/router';\n\nimport { BreadcrumbsMenuComponent } from '../breadcrumbs-menu/breadcrumbs-menu.component';\nimport { AnyBreadcrumb, Breadcrumb, BreadcrumbMenu } from '../shared';\n\n@Component({\n  selector: 'sdg-breadcrumbs-list',\n  imports: [RouterLink, MatIconModule, BreadcrumbsMenuComponent],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './breadcrumbs-list.component.html',\n  styleUrl: './breadcrumbs-list.component.scss'\n})\nexport class BreadcrumbsListComponent {\n  readonly breadcrumbs = input.required<AnyBreadcrumb[], AnyBreadcrumb[]>({\n    transform: (value) => {\n      this.assignFirstParent(value);\n      return value;\n    }\n  });\n\n  isMenu(breadcrumb: AnyBreadcrumb): breadcrumb is BreadcrumbMenu {\n    return !!(breadcrumb as BreadcrumbMenu)?.menu;\n  }\n\n  private assignFirstParent(breads: AnyBreadcrumb[]): void {\n    const lastElement = breads[breads.length - 1];\n\n    if (!lastElement) {\n      return;\n    }\n\n    if (this.isMenu(lastElement)) {\n      (breads[breads.length - 2] as Breadcrumb).firstParent = true;\n      return;\n    }\n\n    // e.g., for \"/fr/a-propos/types-evenements\", the last segment is \"types-evenements\"\n    const lastSegment = lastElement.url.substring(\n      lastElement.url.lastIndexOf('/') + 1\n    );\n\n    const firstValidParent = breads\n      // Reverse the array to iterate from child to root (excluding the child itself)\n      .slice(0, -1)\n      .reverse()\n      .find((parent) => {\n        if (this.isMenu(parent)) {\n          return false;\n        }\n\n        return parent.redirectTo !== lastSegment;\n      }) as Breadcrumb;\n\n    if (firstValidParent) {\n      firstValidParent.firstParent = true;\n    }\n  }\n}\n","<ol>\n  @for (breadcrumb of breadcrumbs(); track breadcrumb.id; let last = $last) {\n    <li [class.--last]=\"last\" [class.--first-parent]=\"breadcrumb.firstParent\">\n      @if (isMenu(breadcrumb!)) {\n        <sdg-breadcrumbs-menu [breadcrumb]=\"breadcrumb\" />\n      } @else {\n        @if (last) {\n          <span>{{ breadcrumb.title }}</span>\n        } @else {\n          <a [routerLink]=\"breadcrumb.url\">{{ breadcrumb.title }}</a>\n        }\n        <mat-icon [inline]=\"true\">\n          <!-- icon name: chevron_left -->\n          <svg height=\"18px\" viewBox=\"0 -960 960 960\" width=\"12px\">\n            <path d=\"M560-240 320-480l240-240 56 56-184 184 184 184-56 56Z\" />\n          </svg>\n        </mat-icon>\n      }\n    </li>\n  }\n</ol>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { BreadcrumbsBase } from './breadcrumbs-base';\nimport { BreadcrumbsListComponent } from './breadcrumbs-list/breadcrumbs-list.component';\nimport { Breadcrumbs } from './shared';\n\n@Component({\n  selector: 'sdg-breadcrumbs',\n  imports: [BreadcrumbsListComponent],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `<sdg-breadcrumbs-list [breadcrumbs]=\"breadcrumbsList()\" />`,\n  styles: `\n    :host {\n      display: block;\n\n      &.d-none {\n        display: none;\n      }\n    }\n  `,\n  host: {\n    '[class.d-none]': '!hasBreadcrumbs()'\n  }\n})\nexport class BreadcrumbsComponent extends BreadcrumbsBase {\n  readonly breadcrumbs = input.required<Breadcrumbs>();\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  OnDestroy,\n  OnInit,\n  inject,\n  signal\n} from '@angular/core';\nimport {\n  ActivatedRoute,\n  NavigationEnd,\n  Router,\n  RouterModule\n} from '@angular/router';\n\nimport { Subject, filter, takeUntil } from 'rxjs';\n\nimport {\n  RouteTitleKey,\n  SdgRoute,\n  SdgRoutes,\n  TitleResolver,\n  resolveTitle\n} from '../router';\nimport { BreadcrumbsBase } from './breadcrumbs-base';\nimport { BreadcrumbsListComponent } from './breadcrumbs-list/breadcrumbs-list.component';\nimport { Breadcrumb, Breadcrumbs } from './shared/breadcrumbs.interface';\n\n@Component({\n  selector: 'sdg-breadcrumbs-with-router',\n  imports: [RouterModule, BreadcrumbsListComponent],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `<sdg-breadcrumbs-list [breadcrumbs]=\"breadcrumbsList()\" />`,\n  styles: `\n    :host {\n      display: block;\n\n      &.d-none {\n        display: none;\n      }\n    }\n  `,\n  host: {\n    '[class.d-none]': '!hasBreadcrumbs()'\n  }\n})\nexport class BreadcrumbsWithRouterComponent\n  extends BreadcrumbsBase\n  implements OnInit, OnDestroy\n{\n  private activatedRoute = inject(ActivatedRoute);\n  private router = inject(Router);\n  private titleResolver = inject(TitleResolver, { optional: true });\n\n  breadcrumbs = signal<Breadcrumbs>([]);\n\n  private _takeUntil = new Subject<boolean>();\n\n  ngOnInit(): void {\n    const breads = this.getBreadsFromRouterSegments();\n    this.breadcrumbs.set(breads);\n\n    this.router.events\n      .pipe(\n        filter((events) => events instanceof NavigationEnd),\n        takeUntil(this._takeUntil)\n      )\n      .subscribe(() => {\n        const breads = this.getBreadsFromRouterSegments();\n        this.breadcrumbs.set(breads);\n      });\n  }\n\n  ngOnDestroy(): void {\n    this._takeUntil.next(true);\n  }\n\n  private findHomeRoute(\n    routes: SdgRoutes = this.router.config,\n    basePath = ''\n  ): SdgRoute | undefined {\n    let homeRoute: SdgRoute | undefined;\n\n    routes.some((route: SdgRoute) => {\n      const path = this.getPath(route, basePath);\n      if (route.isHome) {\n        homeRoute = {\n          ...route,\n          path\n        };\n        return true;\n      }\n\n      if (route.children) {\n        homeRoute = this.findHomeRoute(route.children, path);\n        if (homeRoute) {\n          return true;\n        }\n      }\n\n      return false;\n    });\n\n    return homeRoute;\n  }\n\n  private getPath(\n    route: SdgRoute,\n    basePath: string | undefined\n  ): string | undefined {\n    let path = '';\n\n    if (basePath?.length) {\n      path = basePath;\n    }\n\n    if (route.path) {\n      const pathResolved = this.resolveRoute(route);\n      path += `/${pathResolved}`;\n    }\n\n    return path;\n  }\n\n  private resolveRoute(route: SdgRoute): string | undefined {\n    return route.path\n      ?.split('/')\n      .map((pathSegment) => {\n        if (pathSegment.includes(':')) {\n          return this.activatedRoute.snapshot.params[pathSegment.substring(1)];\n        }\n        return pathSegment;\n      })\n      .join('/');\n  }\n\n  private getBreadsFromRouterSegments(): Breadcrumbs {\n    const routes = this.getRouterBreadcrumbs();\n    if (!routes.length) {\n      return [];\n    }\n\n    const home = this.findHomeRoute();\n    if (!home) {\n      throw new Error(\n        'We need at least one home to construct the breadcrumbs list. You need to setup a route with the isHome property at true'\n      );\n    }\n    /**\n     * Si on est sur la route du parent \"\", on n'affiche aucune route?\n     * @todo Cette logique est à discuté et analysé pour voir comment gérer ce comportement et\n     * sur une stratégie pour gérer cette configuration. Par exemple le système gouvernemental met\n     * le libellé \"Accueil\" avec une redirection vers la route \"a-propos\"\n     */\n    if (routeEqualHome(routes[0], home)) {\n      return [];\n    }\n\n    /**\n     * @todo Gérer les title de route, le type peut être asynchrone comment gérer ça?\n     * On pourrait diverger du type de @angular/router et forcer un string?\n     */\n    const title = resolveTitle(home, this.titleResolver) ?? '';\n    const url = home.path ?? '';\n    routes.unshift({\n      id: `${title}-${url}`,\n      title,\n      url\n    });\n\n    return routes;\n  }\n\n  private getRouterBreadcrumbs(): Breadcrumbs {\n    const routes = this.activatedRoute.pathFromRoot.filter((route) => {\n      return route.routeConfig;\n    });\n\n    let currentRoute = this.activatedRoute;\n    if (currentRoute.children.length) {\n      currentRoute = this.activatedRoute.children[0];\n      routes.push(currentRoute);\n    }\n\n    let lastUrl = '';\n    return routes.reduce((breadcrumbs, route) => {\n      const config: SdgRoute | null = route.routeConfig;\n      if (!route || !config?.path) {\n        return breadcrumbs;\n      }\n\n      const isCurrentRoute = currentRoute.toString() === route.toString();\n      if (config?.hidden && !isCurrentRoute) {\n        lastUrl = `${lastUrl}/${route.snapshot.url.join('/')}`;\n        return breadcrumbs;\n      }\n\n      const title = route.snapshot.title ?? '';\n      const url = (lastUrl = `${lastUrl}/${route.snapshot.url.join('/')}`);\n      const redirectTo = config.children?.[0].redirectTo;\n      const breadcrumb: Breadcrumb = {\n        id: `${title}-${url}`,\n        title,\n        url,\n        redirectTo: typeof redirectTo === 'string' ? redirectTo : undefined\n      };\n\n      return breadcrumbs.concat(breadcrumb);\n    }, [] as Breadcrumbs);\n  }\n}\n\nfunction routeEqualHome(route: SdgRoute, home: SdgRoute | undefined): boolean {\n  if (!home) {\n    return false;\n  }\n\n  return (\n    route.title === home.title || route.title === home.data?.[RouteTitleKey]\n  );\n}\n","import { Component, input } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { isSafeUrl, pathIsExternal } from '../router';\n\n@Component({\n  selector: 'sdg-external-link',\n  imports: [MatIcon],\n  template: `<a [href]=\"url()\" target=\"_blank\">\n    <span>{{ text() }}</span>\n    <mat-icon>\n      <!-- icon name: open_in_new -->\n      <svg viewBox=\"0 -960 960 960\">\n        <path\n          d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h280v80H200v560h560v-280h80v280q0 33-23.5 56.5T760-120H200Zm188-212-56-56 372-372H560v-80h280v280h-80v-144L388-332Z\"\n        />\n      </svg>\n    </mat-icon>\n  </a>`,\n  styles: `\n    span {\n      margin-right: 2px;\n    }\n\n    mat-icon {\n      width: 13px;\n      height: 13px;\n      font-size: 13px;\n      margin-right: 2px;\n    }\n  `\n})\nexport class ExternalLinkComponent {\n  readonly text = input.required<string>();\n  readonly url = input.required<string, string>({\n    transform: this.urlValidation\n  });\n\n  private urlValidation(url: string): string {\n    if (!isSafeUrl(url)) {\n      throw new Error('Invalid URL protocol detected');\n    }\n\n    if (!pathIsExternal(url)) {\n      throw new Error('URL is not external');\n    }\n    return url;\n  }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { ExternalLinkComponent } from '../external-link';\n\n@Component({\n  selector: 'sdg-charter-banner',\n  imports: [ExternalLinkComponent],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './charter-banner.component.html',\n  styleUrls: ['./charter-banner.component.scss']\n})\nexport class CharterBannerComponent {\n  readonly containerClass = input.required<string>();\n}\n","<div class=\"charter-banner-container\" [class]=\"containerClass()\">\n  The\n  <span style=\"font-style: italic\">Charter of the French language</span>\n  and its regulations govern the\n  <sdg-external-link\n    text=\"consultation of English-language content\"\n    url=\"https://www.quebec.ca/en/gouvernement/politiques-orientations/langue-francaise/modernization-charter-french-language#c214034\"\n  />.\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { IContact } from './contact.interface';\n\n@Component({\n  selector: 'sdg-contact',\n  imports: [MatIconModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './contact.component.html',\n  styleUrls: ['./contact.component.scss'],\n  // Prevents the `title` input from leaking as a native title attribute (native tooltip) on the host element\n  host: { '[attr.title]': 'null' }\n})\nexport class ContactComponent {\n  readonly title = input.required<string>();\n  readonly contact = input.required<IContact>();\n}\n","<div class=\"sdg-contact-title-contact\">\n  <span class=\"sdg-contact-title\">{{ title() }}</span>\n  <div class=\"sdg-contact-contact\">\n    @if (contact().name) {\n      <div class=\"sdg-contact-info\">\n        <mat-icon>\n          <!-- icon name: person -->\n          <svg viewBox=\"0 -960 960 960\">\n            <path\n              d=\"M480-480q-66 0-113-47t-47-113q0-66 47-113t113-47q66 0 113 47t47 113q0 66-47 113t-113 47ZM160-160v-112q0-34 17.5-62.5T224-378q62-31 126-46.5T480-440q66 0 130 15.5T736-378q29 15 46.5 43.5T800-272v112H160Zm80-80h480v-32q0-11-5.5-20T700-306q-54-27-109-40.5T480-360q-56 0-111 13.5T260-306q-9 5-14.5 14t-5.5 20v32Zm240-320q33 0 56.5-23.5T560-640q0-33-23.5-56.5T480-720q-33 0-56.5 23.5T400-640q0 33 23.5 56.5T480-560Zm0-80Zm0 400Z\"\n            />\n          </svg>\n        </mat-icon>\n        <span>{{ contact().name }}</span>\n      </div>\n    }\n    @if (contact().schedule) {\n      <div class=\"sdg-contact-info\">\n        <mat-icon>\n          <!-- icon name: calendar_today -->\n          <svg viewBox=\"0 -960 960 960\">\n            <path\n              d=\"M200-80q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v560q0 33-23.5 56.5T760-80H200Zm0-80h560v-400H200v400Zm0-480h560v-80H200v80Zm0 0v-80 80Z\"\n            />\n          </svg>\n        </mat-icon>\n        <span>{{ contact().schedule }}</span>\n      </div>\n    }\n    @if (contact().hours) {\n      <div class=\"sdg-contact-info\">\n        <mat-icon>\n          <!-- icon name: schedule -->\n          <svg viewBox=\"0 -960 960 960\">\n            <path\n              d=\"m612-292 56-56-148-148v-184h-80v216l172 172ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-400Zm0 320q133 0 226.5-93.5T800-480q0-133-93.5-226.5T480-800q-133 0-226.5 93.5T160-480q0 133 93.5 226.5T480-160Z\"\n            />\n          </svg>\n        </mat-icon>\n        <span>{{ contact().hours }}</span>\n      </div>\n    }\n    @if (contact().phone) {\n      <div class=\"sdg-contact-info\">\n        <mat-icon>\n          <!-- icon name: call -->\n          <svg viewBox=\"0 -960 960 960\">\n            <path\n              d=\"M798-120q-125 0-247-54.5T329-329Q229-429 174.5-551T120-798q0-18 12-30t30-12h162q14 0 25 9.5t13 22.5l26 140q2 16-1 27t-11 19l-97 98q20 37 47.5 71.5T387-386q31 31 65 57.5t72 48.5l94-94q9-9 23.5-13.5T670-390l138 28q14 4 23 14.5t9 23.5v162q0 18-12 30t-30 12ZM241-600l66-66-17-94h-89q5 41 14 81t26 79Zm358 358q39 17 79.5 27t81.5 13v-88l-94-19-67 67ZM241-600Zm358 358Z\"\n            />\n          </svg>\n        </mat-icon>\n        <span>{{ contact().phone }}</span>\n      </div>\n    }\n    @if (contact().address) {\n      <div class=\"sdg-contact-info\">\n        <mat-icon>\n          <!-- icon name: location_on -->\n          <svg viewBox=\"0 -960 960 960\">\n            <path\n              d=\"M480-480q33 0 56.5-23.5T560-560q0-33-23.5-56.5T480-640q-33 0-56.5 23.5T400-560q0 33 23.5 56.5T480-480Zm0 294q122-112 181-203.5T720-552q0-109-69.5-178.5T480-800q-101 0-170.5 69.5T240-552q0 71 59 162.5T480-186Zm0 106Q319-217 239.5-334.5T160-552q0-150 96.5-239T480-880q127 0 223.5 89T800-552q0 100-79.5 217.5T480-80Zm0-480Z\"\n            />\n          </svg>\n        </mat-icon>\n        <div class=\"sdg-contact-address\">\n          <span\n            >{{ contact().address?.number }}\n            {{ contact().address?.street }}</span\n          >\n          <span>{{ contact().address?.city }}</span>\n          <span>{{ contact().address?.postalCode }}</span>\n        </div>\n      </div>\n    }\n    @if (contact().email) {\n      <div class=\"sdg-contact-info\">\n        <mat-icon>\n          <!-- icon name: mail -->\n          <svg viewBox=\"0 -960 960 960\">\n            <path\n              d=\"M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h640q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160Zm320-280L160-640v400h640v-400L480-440Zm0-80 320-200H160l320 200ZM160-640v-80 480-400Z\"\n            />\n          </svg>\n        </mat-icon>\n        <a href=\"mailto:{{ contact().email }}\">{{ contact().email }}</a>\n      </div>\n    }\n    @if (contact().website) {\n      <div class=\"sdg-contact-info\">\n        <mat-icon>\n          <!-- icon name: mouse -->\n          <svg viewBox=\"0 -960 960 960\">\n            <path\n              d=\"M480-80q-116 0-198-82t-82-198v-240q0-116 82-198t198-82q116 0 198 82t82 198v240q0 116-82 198T480-80Zm40-520h160q0-72-45.5-127T520-796v196Zm-240 0h160v-196q-69 14-114.5 69T280-600Zm200 440q83 0 141.5-58.5T680-360v-160H280v160q0 83 58.5 141.5T480-160Zm0-360Zm40-80Zm-80 0Zm40 80Z\"\n            />\n          </svg>\n        </mat-icon>\n        <a [href]=\"contact().website\" target=\"_blank\">{{\n          contact().website\n        }}</a>\n      </div>\n    }\n  </div>\n</div>\n","import {\n  Address,\n  IContact,\n  IContactData,\n  Range,\n  Time\n} from './contact.interface';\n\nexport class Contact implements IContact {\n  name?: string;\n  schedule?: string;\n  hours?: string;\n  phone?: string;\n  address?: Address;\n  email?: string;\n  website?: string;\n\n  constructor(contact: IContactData) {\n    if (contact.name) {\n      this.name = contact.name;\n    }\n\n    if (contact.schedule) {\n      this.schedule = this.formatScheduleLabel(contact.schedule);\n    }\n\n    if (contact.hours) {\n      this.hours = this.formatHoursLabel(contact.hours);\n    }\n\n    if (contact.phone) {\n      this.phone = this.formatPhoneLabel(contact.phone);\n    }\n\n    if (contact.address) {\n      this.address = contact.address;\n      this.address.postalCode =\n        this.formatPostalCodeLabel(contact.address) ?? '';\n    }\n\n    if (contact.email) {\n      this.email = contact.email;\n    }\n\n    if (this.website) {\n      this.website = contact.website;\n    }\n  }\n\n  protected formatScheduleLabel(schedule: Range<string>): string {\n    return `Du ${schedule?.from} au ${schedule?.from}`;\n  }\n\n  protected formatHoursLabel(hours: Range<Time>): string {\n    const fromMinutes =\n      hours?.from.minutes === undefined\n        ? ''\n        : `0${hours.from.minutes}`.slice(-2);\n\n    const toMinutes =\n      hours?.to.minutes === undefined ? '' : `0${hours.to.minutes}`.slice(-2);\n\n    return `De ${hours?.from.hours} h ${fromMinutes} à ${hours?.to.hours} h ${toMinutes}`;\n  }\n\n  protected formatPhoneLabel(phone: string): string | undefined {\n    const cleaned = phone?.replace(/\\D/g, '');\n    const match = cleaned?.match(/^(\\d{3})(\\d{3})(\\d{4})$/);\n\n    return match ? `${match[1]} ${match[2]}-${match[3]}` : undefined;\n  }\n\n  protected formatPostalCodeLabel(address: Address): string | undefined {\n    return address?.postalCode\n      .toUpperCase()\n      .replace(/\\W/g, '')\n      .replace(/(...)/, '$1 ');\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  input\n} from '@angular/core';\n\nimport { FooterCopyright } from '../footer.interface';\n\n@Component({\n  selector: 'sdg-footer-copyright',\n  imports: [],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './footer-copyright.component.html',\n  styleUrls: ['./footer-copyright.component.scss']\n})\nexport class FooterCopyrightComponent {\n  readonly copyright = input.required<FooterCopyright>();\n  readonly containerClass = input<string>();\n\n  readonly url = computed(\n    () => this.copyright().copyrightUrl ?? 'https://www.quebec.ca/droit-auteur'\n  );\n  readonly year = computed(\n    () => this.copyright().year ?? new Date().getFullYear()\n  );\n}\n","<div class=\"sdg-footer-copyright-container\" [class]=\"containerClass()\">\n  <div class=\"sdg-footer-copyright-content\">\n    <a\n      class=\"sdg-footer-copyright-logo-link\"\n      [href]=\"copyright().logoUrl\"\n      target=\"_blank\"\n      ><img\n        class=\"sdg-footer-copyright-logo-link-logo\"\n        [src]=\"copyright().logo\"\n        alt=\"Logo\"\n    /></a>\n    <a class=\"sdg-footer-copyright-copyright\" [href]=\"url()\" target=\"_blank\"\n      >© Gouvernement du Québec, {{ year() }}</a\n    >\n  </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { SiteMapLinks } from '../footer.interface';\n\n@Component({\n  selector: 'sdg-footer-links',\n  imports: [],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './footer-links.component.html',\n  styleUrls: ['./footer-links.component.scss']\n})\nexport class FooterLinksComponent {\n  readonly externalLinks = input<SiteMapLinks>();\n  readonly containerClass = input<string>();\n}\n","<div class=\"sdg-footer-links\" [class]=\"containerClass()\">\n  @for (externalLink of externalLinks(); track externalLink) {\n    <a\n      class=\"sdg-footer-links-link\"\n      [href]=\"externalLink.path\"\n      target=\"_blank\"\n      >{{ externalLink.title }}</a\n    >\n  }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\nimport { FooterNavLogo, SiteMapLinks } from '../footer.interface';\n\n@Component({\n  selector: 'sdg-footer-navigation',\n  imports: [RouterLink],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './footer-navigation.component.html',\n  styleUrls: ['./footer-navigation.component.scss'],\n  // Prevents the `title` input from leaking as a native title attribute (native tooltip) on the host element\n  host: { '[attr.title]': 'null' }\n})\nexport class FooterNavigationComponent {\n  readonly title = input<string>();\n  readonly logo = input<FooterNavLogo>();\n  readonly siteMapLinks = input<SiteMapLinks>();\n  readonly containerClass = input<string>();\n  readonly currentLanguage = input<string>();\n}\n","<div class=\"sdg-footer-navigation-container\" [class]=\"containerClass()\">\n  @if (logo()) {\n    <a [routerLink]=\"['/', currentLanguage() ?? '']\"\n      ><img\n        class=\"sdg-footer-navigation-logo\"\n        [src]=\"logo()!.url\"\n        [height]=\"logo()!.height\"\n        alt=\"Logo\"\n    /></a>\n  } @else if (title()) {\n    <h2>\n      <a\n        class=\"sdg-footer-navigation-title\"\n        [routerLink]=\"['/', currentLanguage() ?? '']\"\n        >{{ title() }}</a\n      >\n    </h2>\n  }\n  <div class=\"sdg-footer-navigation-site-map-links\">\n    @for (siteMapLink of siteMapLinks(); track siteMapLink) {\n      <a\n        class=\"sdg-footer-navigation-site-map-link\"\n        [routerLink]=\"siteMapLink.path\"\n        >{{ siteMapLink.title }}</a\n      >\n    }\n  </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { FooterCopyrightComponent } from './footer-copyright/footer-copyright.component';\nimport { FooterLinksComponent } from './footer-links/footer-links.component';\nimport { FooterNavigationComponent } from './footer-navigation/footer-navigation.component';\nimport {\n  FooterCopyright,\n  FooterNavLogo,\n  SiteMapLinks\n} from './footer.interface';\n\n@Component({\n  selector: 'sdg-footer',\n  imports: [\n    FooterNavigationComponent,\n    FooterLinksComponent,\n    FooterCopyrightComponent\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './footer.component.html',\n  styleUrls: ['./footer.component.scss'],\n  // Prevents the `title` input from leaking as a native title attribute (native tooltip) on the host element\n  host: { '[attr.title]': 'null' }\n})\nexport class FooterComponent {\n  readonly title = input<string>();\n  readonly logo = input<FooterNavLogo | undefined>(undefined);\n  readonly siteMapLinks = input<SiteMapLinks | undefined>(undefined);\n  readonly externalLinks = input<SiteMapLinks | undefined>(undefined);\n  readonly copyright = input.required<FooterCopyright>();\n  readonly containerClass = input<string>('');\n  readonly currentLanguage = input<string>();\n}\n","@if (title() || logo() || siteMapLinks()) {\n  <sdg-footer-navigation\n    [title]=\"title()\"\n    [logo]=\"logo()\"\n    [siteMapLinks]=\"siteMapLinks()\"\n    [containerClass]=\"containerClass()\"\n    [currentLanguage]=\"currentLanguage()\"\n  />\n}\n\n@if (externalLinks()) {\n  <sdg-footer-links\n    [externalLinks]=\"externalLinks()\"\n    [containerClass]=\"containerClass()\"\n  />\n}\n\n<sdg-footer-copyright\n  [copyright]=\"copyright()\"\n  [containerClass]=\"containerClass()\"\n/>\n","import { Component, input } from '@angular/core';\n\n@Component({\n  selector: 'sdg-form-field-label',\n  templateUrl: './form-field-label.component.html',\n  styleUrls: ['./form-field-label.component.scss']\n})\nexport class FormFieldLabelComponent {\n  readonly controlId = input.required<string>();\n  readonly formControlSize = input.required<\n    'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'multi'\n  >();\n  readonly label = input.required<string>();\n  readonly clarification = input<string>();\n  readonly required = input<boolean>(false);\n  readonly disabled = input<boolean>(false);\n}\n","<label\n  [for]=\"controlId()\"\n  class=\"form-field-label-container\"\n  [class]=\"formControlSize()\"\n>\n  <div class=\"form-field-label-label\" [class.--disabled]=\"disabled()\">\n    {{ label() }}\n    @if (required()) {\n      <span class=\"form-field-label-asterisk\">*</span>\n    }\n  </div>\n  @if (clarification()) {\n    <span\n      class=\"form-field-label-clarification\"\n      [class.--disabled]=\"disabled()\"\n      >{{ clarification() }}</span\n    >\n  }\n</label>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n  Component,\n  InjectionToken,\n  computed,\n  input,\n  output\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterLink } from '@angular/router';\n\nimport { WithLabels } from '../shared';\nimport {\n  IHeaderLabels,\n  IHeaderLanguageChoice,\n  IHeaderLanguages,\n  IHeaderLogo\n} from './header.interface';\n\nexport const SDG_HEADER_LABELS = new InjectionToken<IHeaderLabels>(\n  'SDG_HEADER_LABELS'\n);\n\nconst DEFAULT_LABELS: IHeaderLabels = { contactUs: 'Nous joindre' };\n\n@Component({\n  selector: 'sdg-header',\n  templateUrl: './header.component.html',\n  styleUrls: ['./header.component.scss'],\n  imports: [NgTemplateOutlet, RouterLink, MatButtonModule, MatIconModule],\n  // Prevents the `title` input from leaking as a native title attribute (native tooltip) on the host element\n  host: { '[attr.title]': 'null' }\n})\nexport class HeaderComponent extends WithLabels<IHeaderLabels> {\n  readonly title = input.required<string>();\n  readonly logo = input<IHeaderLogo>();\n  readonly contactUsRoute = input<string>();\n  readonly languages = input<IHeaderLanguages>();\n  readonly currentLanguage = input<string>();\n  readonly containerClass = input<string>();\n  readonly noHomeRouting = input<boolean>();\n\n  readonly languageChange = output<string>();\n\n  readonly isContactUsExternal = computed(() => {\n    const route = this.contactUsRoute();\n    return route ? /^(http|https|mailto):/i.test(route) : false;\n  });\n\n  constructor() {\n    super(DEFAULT_LABELS, SDG_HEADER_LABELS);\n  }\n\n  get nextLanguage(): IHeaderLanguageChoice | undefined {\n    // For now we have only two language\n    return this.languages()?.choices.find(\n      (language) => language.key !== this.currentLanguage()\n    );\n  }\n\n  changeLanguage(language: string): void {\n    this.languageChange.emit(language);\n  }\n}\n","<div\n  class=\"sdg-header-container\"\n  [class]=\"containerClass() ?? 'sdg-header-container-default-padding'\"\n>\n  <div class=\"sdg-header-content\">\n    <div class=\"sdg-header-content-logo-title\">\n      @let logo = this.logo();\n      <a\n        class=\"sdg-header-content-logo\"\n        [href]=\"logo ? logo.href : 'https://www.quebec.ca'\"\n      >\n        @if (logo) {\n          <img [src]=\"logo.src\" [alt]=\"logo.alt ?? ''\" />\n        } @else {\n          <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 463.55 91\">\n            <g style=\"fill: white\">\n              <path\n                d=\"M125.22 62.89V24.11h-.29c-1.38 1.27-6.48 1.37-8.64 1.37h-3.75v.31c4.33 2.66 3.74 6.59 3.74 11.48v16.41c0 8.21-8.06 14-14.56 14-8.56 0-12.11-6.08-12.11-15.89V24.11h-.3c-1.38 1.27-6.51 1.37-8.67 1.37h-3.7v.32c4.33 2.66 3.74 6.58 3.74 11.47v16.36c0 15 6.49 22.08 18.1 22.08 6.89 0 14-2.44 17.51-8.28v7.08H129v-.32c-4.37-2.45-3.78-6.4-3.78-11.3m19.66-20.74c1.18-6.66 6.1-10.89 12.7-10.89 7.09 0 11.61 3.49 12.7 10.89Zm35.74 6.18c.39-13.68-8.77-24-22.16-24-14.66 0-24.6 10.64-24.6 25.4s11.51 26.21 28.25 26.21a33.3 33.3 0 0 0 13.58-2.64l4.93-10h-.3a24.65 24.65 0 0 1-16.15 5.7c-11.12 0-19.49-7.59-19.68-20.65Zm7.8-46.75c2.36 0 7.17-.15 8.63-1.58h.29v67.17a30.3 30.3 0 0 0 8.12 1.27c10.75 0 16.92-7.53 16.92-18 0-10.28-4.8-18.23-14.67-18.23a15.9 15.9 0 0 0-8.22 2.33l5.28-9a19.5 19.5 0 0 1 6.95-1.17c11.15 0 20.63 9.68 20.63 24.2 0 16.63-11.25 27.39-29 27.39-6.65 0-13-1.18-17.85-1.92v-.33c3.25-1.49 3-5 3-8.51V16.33c0-4.91.59-11.77-3.64-14.43v-.32Zm61.41 40.57c1.18-6.66 6.1-10.89 12.7-10.89 7.09 0 11.61 3.49 12.7 10.89Zm35.73 6.18c.4-13.68-8.76-24-22.15-24-14.66 0-24.6 10.64-24.6 25.4s11.51 26.21 28.24 26.21a33.3 33.3 0 0 0 13.59-2.64l4.92-10h-.29a24.65 24.65 0 0 1-16.15 5.7c-11.12 0-19.49-7.59-19.69-20.65Zm44.03-11.84h-.3c-2.85-3.52-7.58-5.23-12-5.23-9.55 0-16.43 7.25-16.43 17.37 0 12.25 9.54 20.35 20.47 20.35a24.18 24.18 0 0 0 14.37-5.22h.3l-5.12 10.06a34.3 34.3 0 0 1-13 2.11c-15.15 0-27-10.68-27-24.53 0-18.32 13.22-27.08 28.09-27.08a45.4 45.4 0 0 1 10.63 1.26Z\"\n              />\n              <path\n                d=\"M168.33 15.53V4.87c-6.45 2.89-12.44 8.3-16.44 13.56v4.15c9.58-6.45 16.44-6.75 16.44-7.05\"\n              />\n              <path\n                d=\"M36.43 68.6c-14.87 0-25.21-16.77-25.21-31V36c.18-13.8 9.12-26.75 24.71-26.75 16.4 0 24.86 15.52 25 30.23V41c.01 15.66-9.73 27.6-24.5 27.6m50.95 16.3c-11 1.79-21.53-1.66-32.74-14.49 10.83-5.44 17.53-19 17.53-31.55v-1.57C72 15.77 55.8 1.56 36.53 1.56S.15 16.35 0 38v1.5c0 21.1 15.66 36.77 34.85 36.77a34.3 34.3 0 0 0 8.08-1.07C55.5 87 66.71 92 76.39 90.83c4.59-.55 9.45-2.38 12.36-6.16Zm288.27-57.73c-3 .95-3-1.75-3-1.75 2.68.47 2.94-1.78 2.94-1.78h-5.35v-2.52h2.54s-.43-3.36-2.92-3.36c-2.29 0-2.61 2.54-2.19 3.59-1.15.2-2.83-1.79-2.83-4.13a4.45 4.45 0 0 1 4.45-4.57c3.37 0 5.89 3.89 5.89 8.47h1a15.1 15.1 0 0 0-.24-4.22c-.72-3.17-2.3-5-2.33-7.19-.06-3.73 2.19-4.33 4-7.59 1.8 3.26 4.05 3.86 4 7.59 0 2.15-1.61 4-2.34 7.19a14.9 14.9 0 0 0-.23 4.22h1c0-4.58 2.53-8.47 5.9-8.47a4.45 4.45 0 0 1 4.45 4.57c0 2.34-1.68 4.33-2.83 4.13.42-1.05.1-3.59-2.2-3.59-2.48 0-2.91 3.36-2.91 3.36H385v2.52h-5.34s.26 2.25 2.94 1.78c0 0 0 2.7-3.05 1.75 0 0-.12 2.41-1.93 3.28-1.85-.87-1.97-3.28-1.97-3.28m25.92-25.58h-48V31h48Zm36.06 25.58c-3 .95-3.05-1.75-3.05-1.75 2.67.47 2.94-1.78 2.94-1.78h-5.34v-2.52h2.53s-.43-3.36-2.92-3.36c-2.29 0-2.61 2.54-2.19 3.59-1.15.2-2.83-1.79-2.83-4.13a4.45 4.45 0 0 1 4.45-4.57c3.37 0 5.9 3.89 5.9 8.47h1a14.9 14.9 0 0 0-.23-4.22c-.73-3.17-2.3-5-2.34-7.19-.06-3.73 2.19-4.33 4-7.59 1.79 3.26 4.05 3.86 4 7.59 0 2.15-1.6 4-2.32 7.19a15.3 15.3 0 0 0-.25 4.22h1c0-4.58 2.52-8.47 5.89-8.47a4.45 4.45 0 0 1 4.45 4.57c0 2.34-1.68 4.33-2.83 4.13.42-1.05.1-3.59-2.19-3.59-2.49 0-2.92 3.36-2.92 3.36h2.53v2.52h-5.31s.26 2.25 2.94 1.78c0 0 0 2.7-3.05 1.75 0 0-.12 2.41-1.93 3.28-1.81-.87-1.93-3.28-1.93-3.28m25.92-25.58h-48V31h48Zm-87.9 69.04c-3 1-3-1.75-3-1.75 2.68.48 2.94-1.78 2.94-1.78h-5.35v-2.52h2.54s-.43-3.36-2.92-3.36c-2.29 0-2.61 2.54-2.19 3.6-1.15.19-2.83-1.8-2.83-4.14a4.45 4.45 0 0 1 4.45-4.57c3.37 0 5.89 3.89 5.89 8.47h1a15.1 15.1 0 0 0-.24-4.22c-.72-3.16-2.3-5-2.33-7.18-.06-3.74 2.19-4.34 4-7.6 1.8 3.26 4.05 3.86 4 7.6 0 2.14-1.61 4-2.34 7.18a14.9 14.9 0 0 0-.23 4.22h1c0-4.58 2.53-8.47 5.9-8.47a4.45 4.45 0 0 1 4.45 4.57c0 2.34-1.68 4.33-2.83 4.14.42-1.06.1-3.6-2.2-3.6-2.48 0-2.91 3.36-2.91 3.36H385v2.52h-5.34s.26 2.26 2.94 1.78c0 0 0 2.7-3.05 1.75 0 0-.12 2.41-1.93 3.28-1.85-.91-1.97-3.28-1.97-3.28m25.92-25.57h-48v29.4h48Zm36.06 25.57c-3 1-3.05-1.75-3.05-1.75 2.67.48 2.94-1.78 2.94-1.78h-5.34v-2.52h2.53s-.43-3.36-2.92-3.36c-2.29 0-2.61 2.54-2.19 3.6-1.15.19-2.83-1.8-2.83-4.14a4.45 4.45 0 0 1 4.45-4.57c3.37 0 5.9 3.89 5.9 8.47h1a14.9 14.9 0 0 0-.23-4.22c-.73-3.16-2.3-5-2.34-7.18-.06-3.74 2.19-4.34 4-7.6 1.79 3.26 4.05 3.86 4 7.6 0 2.14-1.6 4-2.32 7.18a15.3 15.3 0 0 0-.25 4.22h1c0-4.58 2.52-8.47 5.89-8.47a4.45 4.45 0 0 1 4.45 4.57c0 2.34-1.68 4.33-2.83 4.14.42-1.06.1-3.6-2.19-3.6-2.49 0-2.92 3.36-2.92 3.36h2.53v2.52h-5.31s.26 2.26 2.94 1.78c0 0 0 2.7-3.05 1.75 0 0-.12 2.41-1.93 3.28-1.81-.91-1.93-3.28-1.93-3.28m25.92-25.57h-48v29.4h48Z\"\n              />\n            </g>\n          </svg>\n        }\n      </a>\n      <div\n        class=\"sdg-header-content-title-container sdg-header-content-title-container-desktop\"\n      >\n        <h6><ng-container *ngTemplateOutlet=\"titleContent\" /></h6>\n      </div>\n    </div>\n    @if (languages() || contactUsRoute()) {\n      <div class=\"sdg-header-content-options\">\n        @if (languages()) {\n          <a\n            class=\"sdg-header-content-options-language\"\n            tabindex=\"0\"\n            (click)=\"changeLanguage(nextLanguage!.key)\"\n            (keyup.enter)=\"changeLanguage(nextLanguage!.key)\"\n          >\n            {{ nextLanguage!.label }}\n          </a>\n        }\n        @let contactUsRoute = this.contactUsRoute();\n        @if (contactUsRoute) {\n          @if (isContactUsExternal()) {\n            <a\n              class=\"sdg-header-content-options-contact-us\"\n              [href]=\"contactUsRoute\"\n              target=\"_blank\"\n              >{{ labels().contactUs }}\n            </a>\n          } @else {\n            <a\n              class=\"sdg-header-content-options-contact-us\"\n              [routerLink]=\"contactUsRoute\"\n              >{{ labels().contactUs }}\n            </a>\n          }\n        }\n      </div>\n    }\n  </div>\n  <div\n    class=\"sdg-header-content-title-container sdg-header-content-title-container-mobile\"\n  >\n    <h6><ng-container *ngTemplateOutlet=\"titleContent\" /></h6>\n  </div>\n</div>\n\n<ng-template #titleContent>\n  @if (noHomeRouting()) {\n    <span class=\"text sdg-header-content-title\">{{ title() }}</span>\n  } @else {\n    <a\n      class=\"sdg-header-content-title --with-hover\"\n      [routerLink]=\"['/', currentLanguage() ?? '']\"\n      >{{ title() }}</a\n    >\n  }\n</ng-template>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  input,\n  model\n} from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\n\nimport { LateralMenuItem } from '../lateral-menu.interface';\n\n@Component({\n  selector: 'sdg-lateral-menu-item',\n  imports: [RouterLink, RouterLinkActive],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './lateral-menu-item.component.html',\n  styleUrls: ['./lateral-menu-item.component.scss']\n})\nexport class LateralMenuItemComponent {\n  readonly item = input.required<LateralMenuItem>();\n  readonly isSectionItem = input<boolean>();\n  readonly menuOpened = model.required<boolean>();\n}\n","<a\n  [class]=\"\n    isSectionItem() ? 'sdg-lateral-menu-section-item' : 'sdg-lateral-menu-item'\n  \"\n  routerLinkActive=\"--active-item\"\n  [routerLinkActiveOptions]=\"{ exact: true }\"\n  [routerLink]=\"item().path\"\n  (click)=\"menuOpened.set(false)\"\n  >{{ item().title }}\n</a>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  effect,\n  input,\n  model,\n  signal\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { LateralMenuItemComponent } from '../lateral-menu-item/lateral-menu-item.component';\nimport { LateralMenuItem } from '../lateral-menu.interface';\n\n@Component({\n  selector: 'sdg-lateral-menu-section',\n  imports: [MatIconModule, LateralMenuItemComponent],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './lateral-menu-section.component.html',\n  styleUrls: ['./lateral-menu-section.component.scss']\n})\nexport class LateralMenuSectionComponent {\n  readonly section = input.required<LateralMenuItem>();\n  readonly menuOpened = model.required<boolean>();\n  readonly currentUrl = input.required<string>();\n\n  opened = signal(false);\n  active = computed(() => {\n    const url = this.currentUrl();\n    const path = this.section().path;\n    return url.includes(path);\n  });\n\n  constructor() {\n    effect(() => {\n      if (this.active()) {\n        this.opened.set(true);\n      }\n    });\n  }\n}\n","@let active = this.active();\n@let opened = this.opened();\n@let section = this.section();\n\n<div class=\"sdg-lateral-menu-section\">\n  <button\n    class=\"sdg-lateral-menu-section-header\"\n    [class.--active-section]=\"active\"\n    (click)=\"this.opened.set(!opened)\"\n  >\n    <span\n      class=\"sdg-lateral-menu-section-header-title\"\n      [class.--active-section]=\"active\"\n    >\n      {{ section.title }}\n    </span>\n    <mat-icon\n      class=\"sdg-lateral-menu-section-header-arrow\"\n      color=\"primary\"\n      [class.--opened]=\"opened\"\n    >\n      <!-- icon name: keyboard_arrow_down -->\n      <svg viewBox=\"0 -960 960 960\">\n        <path d=\"M480-344 240-584l56-56 184 184 184-184 56 56-240 240Z\" />\n      </svg>\n    </mat-icon>\n  </button>\n\n  <div class=\"sdg-lateral-menu-section-subsections\" [class.--opened]=\"opened\">\n    <div\n      class=\"sdg-lateral-menu-section-subsections-content\"\n      [class.--opened]=\"opened\"\n    >\n      @for (item of section.items; track item) {\n        <sdg-lateral-menu-item\n          [item]=\"item\"\n          [isSectionItem]=\"true\"\n          [(menuOpened)]=\"menuOpened\"\n        />\n      }\n    </div>\n  </div>\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  inject,\n  input,\n  model,\n  signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NavigationEnd, Router } from '@angular/router';\n\nimport { filter } from 'rxjs';\n\nimport { LateralMenuItemComponent } from './lateral-menu-item/lateral-menu-item.component';\nimport { LateralMenuSectionComponent } from './lateral-menu-section/lateral-menu-section.component';\nimport { LateralMenuSections } from './lateral-menu.interface';\n\n@Component({\n  selector: 'sdg-lateral-menu',\n  imports: [\n    MatIconModule,\n    LateralMenuItemComponent,\n    LateralMenuSectionComponent\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './lateral-menu.component.html',\n  styleUrls: ['./lateral-menu.component.scss'],\n  // Prevents the `title` input from leaking as a native title attribute (native tooltip) on the host element\n  host: { '[attr.title]': 'null' }\n})\nexport class LateralMenuComponent {\n  private readonly router = inject(Router);\n  private readonly destroyRef = inject(DestroyRef);\n\n  readonly title = input.required<string>();\n  readonly sections = input.required<LateralMenuSections>();\n\n  opened = model<boolean>(false);\n  currentUrl = signal(this.router.url);\n\n  constructor() {\n    this.router.events\n      .pipe(\n        filter(\n          (event): event is NavigationEnd => event instanceof NavigationEnd\n        ),\n        takeUntilDestroyed(this.destroyRef)\n      )\n      .subscribe((event) => {\n        this.currentUrl.set(event.urlAfterRedirects);\n      });\n  }\n}\n","<!-- Mobile title button, shown only on small screens via CSS -->\n<button\n  mat-icon-button\n  class=\"sdg-lateral-menu-route-title-mobile\"\n  (click)=\"opened.set(!opened())\"\n>\n  <span class=\"sdg-lateral-menu-route-title-text-mobile\">{{ title() }}</span>\n  <mat-icon color=\"primary\" [class.--opened]=\"opened()\">\n    <!-- icon name: keyboard_arrow_down -->\n    <svg viewBox=\"0 -960 960 960\">\n      <path d=\"M480-344 240-584l56-56 184 184 184-184 56 56-240 240Z\" />\n    </svg>\n  </mat-icon>\n</button>\n\n<!-- Desktop title, shown only on large screens via CSS -->\n<span class=\"sdg-lateral-menu-route-title\">{{ title() }}</span>\n\n<div class=\"sdg-lateral-menu-sections\" [class.--opened]=\"opened()\">\n  <div class=\"sdg-lateral-menu-sections-content\">\n    @for (item of sections(); track item) {\n      @if (item.items) {\n        <sdg-lateral-menu-section\n          [section]=\"item\"\n          [(menuOpened)]=\"opened\"\n          [currentUrl]=\"currentUrl()\"\n        />\n      } @else {\n        <sdg-lateral-menu-item [item]=\"item\" [(menuOpened)]=\"opened\" />\n      }\n    }\n  </div>\n</div>\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Injectable, Signal, inject, signal } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class BreakpointService {\n  private breakpointObserver = inject(BreakpointObserver);\n\n  private _isHandset = signal(false);\n\n  get isHandset(): Signal<boolean> {\n    return this._isHandset.asReadonly();\n  }\n\n  constructor() {\n    this.handsetBreakpoint();\n  }\n\n  private handsetBreakpoint(): void {\n    this.breakpointObserver\n      .observe('(max-width: 575px)')\n      .subscribe((result) => {\n        this._isHandset.set(result.matches);\n      });\n  }\n}\n","import { Injectable, InjectionToken, inject } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { RouterStateSnapshot, TitleStrategy } from '@angular/router';\n\nimport { INavigationTitleOptions } from '../navigation.interface';\n\nexport const TITLE_OPTIONS = new InjectionToken<INavigationTitleOptions | null>(\n  'title.options'\n);\n\n@Injectable()\nexport class NavigationTitleStrategy extends TitleStrategy {\n  private readonly title = inject(Title);\n  private options = inject<INavigationTitleOptions | null>(TITLE_OPTIONS);\n\n  override async updateTitle(routerState: RouterStateSnapshot) {\n    const { suffix = null, separator = null } = this.options ?? {};\n\n    const title = this.buildTitle(routerState);\n\n    if (title !== undefined) {\n      this.title.setTitle(suffix ? `${title} ${separator} ${suffix}` : title);\n    }\n  }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { TitleStrategy } from '@angular/router';\n\nimport { INavigationTitleOptions } from '../navigation.interface';\nimport {\n  NavigationTitleStrategy,\n  TITLE_OPTIONS\n} from './title-strategy.service';\n\n/**\n * Provides a strategy for setting the page title after a router navigation.\n */\nexport function provideNavigationTitle(\n  options?: INavigationTitleOptions\n): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    {\n      provide: TITLE_OPTIONS,\n      useValue: options\n    },\n    {\n      provide: TitleStrategy,\n      useClass: NavigationTitleStrategy,\n      deps: [Title, TITLE_OPTIONS]\n    }\n  ]);\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  OnDestroy,\n  OnInit,\n  PLATFORM_ID,\n  Signal,\n  computed,\n  inject,\n  input,\n  signal,\n  viewChild,\n  viewChildren\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTabLink, MatTabNav, MatTabsModule } from '@angular/material/tabs';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\n\nimport { Observable, Subject, filter, shareReplay, takeUntil } from 'rxjs';\n\nimport { BreakpointService } from '../layout/breakpoint';\nimport { INavigationLink, INavigationLinks } from './navigation.interface';\n\nconst TABS_MIN_DISPLAYED = 2 as const;\n\n@Component({\n  selector: 'sdg-navigation',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    RouterLink,\n    RouterLinkActive,\n    MatButtonModule,\n    MatIconModule,\n    MatMenuModule,\n    MatTabsModule\n  ],\n  templateUrl: './navigation.component.html',\n  styleUrl: './navigation.component.scss'\n})\nexport class NavigationComponent implements OnInit, AfterViewInit, OnDestroy {\n  private host = inject(ElementRef);\n  private breakpointService = inject(BreakpointService);\n  private platformId = inject(PLATFORM_ID);\n\n  readonly links = input.required<INavigationLinks>();\n  readonly containerClass = input.required<string>();\n  /**\n   * Option to configure how to determine if the router link is active.\n   * This options are passed to the RouterLinkActiveOptions exact property. Default to ''\n   */\n  readonly exactPathMatch = input<string>('');\n\n  linksInTabs = signal<INavigationLinks>([]);\n  linksInMore = signal<INavigationLinks>([]);\n  hasOverflow = signal(false);\n  hasActions = signal(false);\n\n  isHandset: Signal<boolean>;\n\n  readonly isOnTwoLine = computed(\n    () => this.hasActions() && this.isHandset() && this.detectHandsetOverflow()\n  );\n\n  private headerRow = viewChild<ElementRef<HTMLElement>>('headerRow');\n  private tabsSection = viewChild<ElementRef<HTMLElement>>('tabsSection');\n  private tabsNavbarSection = viewChild<MatTabNav>(MatTabNav);\n  private tabsLinks = viewChildren<MatTabLink>(MatTabLink);\n  private actionsSection = viewChild<ElementRef<HTMLElement>>('actionsSection');\n\n  private _resizeObserver: ResizeObserver | undefined;\n  private _resizeSubject = new Subject<ResizeObserverEntry[]>();\n  private _destroyed = new Subject<void>();\n\n  constructor() {\n    this.isHandset = this.breakpointService.isHandset;\n\n    if (isPlatformBrowser(this.platformId)) {\n      this._resizeObserver = new ResizeObserver((entries) =>\n        this._resizeSubject.next(entries)\n      );\n    }\n  }\n\n  ngOnInit(): void {\n    this.linksInTabs.set(this.links());\n  }\n\n  ngAfterViewInit(): void {\n    if (isPlatformBrowser(this.platformId)) {\n      this.observeHostResize().subscribe(() => {\n        this.handleResize();\n      });\n    }\n\n    this.hasActions.set(\n      !!this.actionsSection()?.nativeElement.childElementCount\n    );\n  }\n\n  ngOnDestroy(): void {\n    this._destroyed.next();\n  }\n\n  private handleResize(): void {\n    const hasTabsOverflow = this.hasTabsOverflow();\n\n    const links = this.links();\n    if (!hasTabsOverflow) {\n      this.linksInTabs.set(links);\n      this.linksInMore.set([]);\n      return;\n    }\n\n    const index = this.findLastIndexToDisplay();\n    if (!index) {\n      return;\n    }\n\n    this.linksInTabs.set(links.slice(0, index));\n    this.linksInMore.set(links.slice(index));\n  }\n\n  private findLastIndexToDisplay(): number | undefined {\n    const tabsSection = this.tabsSection();\n    if (!tabsSection) {\n      return;\n    }\n\n    const tabClearence = this.isHandset() ? 4 : 8;\n    const moreButtonWidth = (this.isHandset() ? 80 : 104) + tabClearence;\n    const maxWidth = tabsSection.nativeElement.clientWidth - moreButtonWidth;\n    const tabsLinks = this.tabsLinks();\n    const links = this.links();\n\n    let index = 0;\n    let accWidth = 0;\n    while (accWidth < maxWidth) {\n      const link = links[index];\n      if (!link) {\n        break;\n      }\n\n      const element = tabsLinks[index]?.elementRef.nativeElement as HTMLElement;\n      const elementWidth = element?.clientWidth ?? this.estimateLinkWidth(link);\n\n      accWidth += elementWidth;\n      if (accWidth > maxWidth) {\n        break;\n      }\n\n      index++;\n    }\n\n    return Math.max(index, TABS_MIN_DISPLAYED);\n  }\n\n  // Estimate the width base on the first rendered link\n  private estimateLinkWidth(link: INavigationLink): number {\n    const baseLink = this.links()[0];\n    const baseWidth = this.tabsLinks()[0]?.elementRef.nativeElement\n      .clientWidth as number;\n\n    const baseTitleLength = baseLink.title?.length ?? 0;\n    const titleLength = link.title?.length ?? 0;\n\n    return (baseWidth * titleLength) / baseTitleLength;\n  }\n\n  private hasTabsOverflow(): boolean {\n    const tabNavbarWidth =\n      this.tabsNavbarSection()?._tabListContainer.nativeElement.clientWidth ??\n      0;\n    const linksEstimatedWidth = this.getTabsItemsWidth();\n    const hasOverflow = linksEstimatedWidth > tabNavbarWidth;\n    this.hasOverflow.set(hasOverflow);\n    return hasOverflow;\n  }\n\n  private detectHandsetOverflow(): boolean {\n    const headerRowWidth = this.headerRow()?.nativeElement.clientWidth ?? 0;\n    const linksEstimatedWidth = this.getTabsItemsWidth();\n    const actionsItemsWidth = this.getActionsItemsWidth();\n\n    const hasOverflow =\n      linksEstimatedWidth + actionsItemsWidth > headerRowWidth;\n\n    return hasOverflow;\n  }\n\n  private getTabsItemsWidth(): number {\n    const tabsLinks = this.tabsLinks();\n\n    return this.links().reduce((accWidth, link, index) => {\n      const element = tabsLinks[index]?.elementRef.nativeElement as HTMLElement;\n      const elementWidth = element?.clientWidth ?? this.estimateLinkWidth(link);\n\n      accWidth += elementWidth;\n      return accWidth;\n    }, 0);\n  }\n\n  private getActionsItemsWidth(): number {\n    const actionsElement = this.actionsSection()?.nativeElement;\n    if (!actionsElement?.children) {\n      return 0;\n    }\n    return this.getItemsWidth(Array.from(actionsElement.children));\n  }\n\n  private getItemsWidth(collection: Element[]): number {\n    const first = collection[0];\n    const last = collection[collection.length - 1];\n\n    const right = (last ?? first)?.getBoundingClientRect().right ?? 0;\n    const left = first?.getBoundingClientRect().left ?? 0;\n    return right - left;\n  }\n\n  private observeHostResize(): Observable<ResizeObserverEntry[]> {\n    const target = this.host.nativeElement;\n    return new Observable<ResizeObserverEntry[]>((observer) => {\n      const subscription = this._resizeSubject.subscribe(observer);\n      this._resizeObserver?.observe(target);\n      return () => {\n        this._resizeObserver?.unobserve(target);\n        subscription.unsubscribe();\n      };\n    }).pipe(\n      filter((entries) => entries.some((entry) => entry.target === target)),\n      // Share a replay of the last event so that subsequent calls to observe the same element\n      // receive initial sizing info like the first one. Also enable ref counting so the\n      // element will be automatically unobserved when there are no more subscriptions.\n      shareReplay({ bufferSize: 1, refCount: true }),\n      takeUntil(this._destroyed)\n    );\n  }\n}\n","<div class=\"sdg-navigation-header\">\n  <div class=\"sdg-navigation-header-container\" [class]=\"containerClass()\">\n    <div\n      #headerRow\n      class=\"sdg-navigation-header-row\"\n      [class.--two-lines]=\"isOnTwoLine()\"\n    >\n      <div #tabsSection class=\"sdg-navigation-tab-panel\">\n        <nav\n          mat-tab-nav-bar\n          [tabPanel]=\"tabPanel\"\n          [mat-stretch-tabs]=\"false\"\n          disablePagination\n        >\n          @for (link of linksInTabs(); track link) {\n            <a\n              mat-tab-link\n              class=\"sdg-navigation-tab-link\"\n              [routerLink]=\"link.path\"\n              routerLinkActive=\"--active\"\n              [routerLinkActiveOptions]=\"{\n                exact: link.path === exactPathMatch()\n              }\"\n              #rla=\"routerLinkActive\"\n              [active]=\"rla.isActive\"\n            >\n              {{ link.title }}\n            </a>\n          }\n          @if (linksInMore() && linksInMore().length) {\n            <a\n              mat-tab-link\n              class=\"sdg-navigation-more-links\"\n              tabindex=\"0\"\n              (keydown)=\"(undefined)\"\n              (keyup)=\"(undefined)\"\n              (click)=\"buttonMoreLink._elementRef.nativeElement.click()\"\n            >\n              <button\n                #buttonMoreLink\n                mat-flat-button\n                [matMenuTriggerFor]=\"menu\"\n                (click)=\"$event.stopImmediatePropagation()\"\n              >\n                <div class=\"sdg-navigation-more-links-container\">\n                  Plus\n                  <mat-icon>\n                    <!-- icon name: keyboard_arrow_down -->\n                    <svg viewBox=\"0 -960 960 960\">\n                      <path\n                        d=\"M480-344 240-584l56-56 184 184 184-184 56 56-240 240Z\"\n                      />\n                    </svg>\n                  </mat-icon>\n                </div>\n              </button>\n              <mat-menu #menu=\"matMenu\">\n                @for (moreLink of linksInMore(); track moreLink) {\n                  <a\n                    mat-menu-item\n                    [routerLink]=\"moreLink.path\"\n                    routerLinkActive=\"--active\"\n                    [routerLinkActiveOptions]=\"{ exact: moreLink.path === '' }\"\n                    #rla=\"routerLinkActive\"\n                    >{{ moreLink.title }}</a\n                  >\n                }\n              </mat-menu>\n            </a>\n          }\n        </nav>\n      </div>\n      <!-- This section is a starting point, but at the moment it is not in the SPEC compliances and the implementation is subject to change at any moment -->\n      <div #actionsSection class=\"sdg-navigation-header-actions\">\n        <ng-content select=\"[navigation-actions]\" />\n      </div>\n    </div>\n  </div>\n</div>\n\n<mat-tab-nav-panel #tabPanel class=\"sdg-navigation-content\">\n  <ng-content />\n</mat-tab-nav-panel>\n","import { SdgRoute } from '../router';\nimport { INavigationLink } from './navigation.interface';\n\nexport function isNavigationLink(link: SdgRoute): link is INavigationLink {\n  return 'title' in link && 'path' in link;\n}\n","export enum NoticeType {\n  General = 'general',\n  Warning = 'warning',\n  Error = 'error',\n  Success = 'success',\n  Complementary = 'complementary'\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  input\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { NoticeType } from './notice.interface';\n\n@Component({\n  selector: 'sdg-notice',\n  imports: [MatIconModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './notice.component.html',\n  styleUrls: ['./notice.component.scss'],\n  // Prevents the `title` input from leaking as a native title attribute (native tooltip) on the host element\n  host: { '[attr.title]': 'null' }\n})\nexport class NoticeComponent {\n  NoticeType = NoticeType;\n\n  readonly type = input.required<keyof typeof NoticeType>();\n  readonly icon = input<string>();\n  readonly title = input.required<string>();\n\n  readonly coloredZoneClass = computed(() => `--${NoticeType[this.type()]}`);\n}\n","<div class=\"sdg-notice-colored-zone\" [class]=\"coloredZoneClass()\">\n  <mat-icon class=\"sdg-notice-colored-zone-icon\" [class]=\"coloredZoneClass()\">\n    @if (icon()) {\n      {{ icon() }}\n    } @else {\n      <svg viewBox=\"0 -960 960 960\">\n        @switch (type()) {\n          @case ('Complementary') {\n            <!-- icon name: lightbulb -->\n            <path\n              d=\"M480-80q-33 0-56.5-23.5T400-160h160q0 33-23.5 56.5T480-80ZM320-200v-80h320v80H320Zm10-120q-69-41-109.5-110T180-580q0-125 87.5-212.5T480-880q125 0 212.5 87.5T780-580q0 81-40.5 150T630-320H330Zm24-80h252q45-32 69.5-79T700-580q0-92-64-156t-156-64q-92 0-156 64t-64 156q0 54 24.5 101t69.5 79Zm126 0Z\"\n            />\n          }\n          @case ('Error') {\n            <!-- icon name: cancel -->\n            <path\n              d=\"m336-280 144-144 144 144 56-56-144-144 144-144-56-56-144 144-144-144-56 56 144 144-144 144 56 56ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"\n            />\n          }\n          @case ('Success') {\n            <!-- icon name: check_circle -->\n            <path\n              d=\"m424-296 282-282-56-56-226 226-114-114-56 56 170 170Zm56 216q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"\n            />\n          }\n          @case ('Warning') {\n            <!-- icon name: warning -->\n            <path\n              d=\"m40-120 440-760 440 760H40Zm138-80h604L480-720 178-200Zm302-40q17 0 28.5-11.5T520-280q0-17-11.5-28.5T480-320q-17 0-28.5 11.5T440-280q0 17 11.5 28.5T480-240Zm-40-120h80v-200h-80v200Zm40-100Z\"\n            />\n          }\n          <!-- General -->\n          @default {\n            <!-- icon name: info -->\n            <path\n              d=\"M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"\n            />\n          }\n        }\n      </svg>\n    }\n  </mat-icon>\n</div>\n\n<div class=\"sdg-notice-content\">\n  <h6 class=\"sdg-notice-content-title\">\n    {{ title() }}\n  </h6>\n  <div class=\"sdg-notice-content-message\">\n    <ng-content />\n  </div>\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  DOCUMENT,\n  OnInit,\n  Signal,\n  effect,\n  inject,\n  input,\n  output\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { BreakpointService } from '../layout/breakpoint';\n\n@Component({\n  selector: 'sdg-paginator',\n  imports: [MatButtonModule, MatIconModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './paginator.component.html',\n  styleUrls: ['./paginator.component.scss']\n})\nexport class PaginatorComponent implements OnInit {\n  private document = inject<Document>(DOCUMENT);\n  private breakpointService = inject(BreakpointService);\n\n  readonly listLength = input.required<number>();\n  readonly pageSize = input.required<number>();\n  readonly middlePagesMaxRange = input<number>(1);\n  readonly initialPageIndex = input<number>(0);\n\n  pageChange = output<number>();\n\n  private isHandset: Signal<boolean>;\n\n  initialPageIndexFirstChange = true;\n\n  currentPageIndex = 0;\n  nbOfPages = 0;\n\n  firstPagesIndexes: number[] = [];\n  middlePagesIndexes: number[] = [];\n  lastPagesIndexes: number[] = [];\n  pagesIndexes: number[] = [];\n\n  constructor() {\n    this.isHandset = this.breakpointService.isHandset;\n\n    effect(() => {\n      const pageSize = this.pageSize();\n      if (!this.initialPageIndexFirstChange) {\n        this.currentPageIndex = 0;\n        this.pageChange.emit(this.currentPageIndex);\n\n        this.getNbOfPages(pageSize);\n      } else {\n        this.initialPageIndexFirstChange = false;\n      }\n    });\n  }\n\n  ngOnInit() {\n    this.currentPageIndex = this.initialPageIndex();\n\n    this.getNbOfPages(this.pageSize());\n  }\n\n  private getNbOfPages(pageSize: number) {\n    this.nbOfPages = Math.ceil(this.listLength() / pageSize);\n\n    this.getPages();\n  }\n\n  private createPagesArray(startIndex: number, finishIndex: number) {\n    return Array.from(\n      { length: finishIndex - startIndex + 1 },\n      (_, a) => a + startIndex\n    );\n  }\n\n  private getPages() {\n    this.firstPagesIndexes = [];\n    this.middlePagesIndexes = [];\n    this.lastPagesIndexes = [];\n    this.pagesIndexes = [];\n\n    if (this.nbOfPages > 6) {\n      this.firstPagesIndexes = this.getFirstPages();\n      this.middlePagesIndexes = this.getMiddlePages();\n      this.lastPagesIndexes = this.getLastPages();\n    } else {\n      this.pagesIndexes = Array.from({ length: this.nbOfPages }, (v, k) => k);\n    }\n\n    this.document\n      .getElementsByTagName('sdg-header')\n      .item(0)\n      ?.scrollIntoView(true);\n  }\n\n  private getFirstPages() {\n    if (this.currentPageIndex <= 2) {\n      return this.createPagesArray(0, 2);\n    } else {\n      return this.createPagesArray(0, 0);\n    }\n  }\n\n  private getMiddlePages() {\n    if (\n      this.currentPageIndex >= 3 &&\n      this.currentPageIndex <= this.nbOfPages - 4\n    ) {\n      return this.createPagesArray(\n        !this.isHandset() &&\n          this.currentPageIndex - this.middlePagesMaxRange() > 1\n          ? this.currentPageIndex - this.middlePagesMaxRange()\n          : this.currentPageIndex - 1,\n        !this.isHandset() &&\n          this.currentPageIndex + this.middlePagesMaxRange() <\n            this.nbOfPages - 2\n          ? this.currentPageIndex + this.middlePagesMaxRange()\n          : this.currentPageIndex + 1\n      );\n    } else {\n      return [];\n    }\n  }\n\n  private getLastPages() {\n    if (this.currentPageIndex >= this.nbOfPages - 3) {\n      return this.createPagesArray(this.nbOfPages - 3, this.nbOfPages - 1);\n    } else {\n      return this.createPagesArray(this.nbOfPages - 1, this.nbOfPages - 1);\n    }\n  }\n\n  goToPreviousPage() {\n    if (this.currentPageIndex !== 0) {\n      this.currentPageIndex -= 1;\n      this.getPages();\n      this.pageChange.emit(this.currentPageIndex);\n    }\n  }\n\n  goToPage(pageIndex: number) {\n    this.currentPageIndex = pageIndex;\n    this.getPages();\n    this.pageChange.emit(this.currentPageIndex);\n  }\n\n  goToNextPage() {\n    if (this.currentPageIndex !== this.nbOfPages - 1) {\n      this.currentPageIndex += 1;\n      this.getPages();\n      this.pageChange.emit(this.currentPageIndex);\n    }\n  }\n}\n","@if (currentPageIndex !== 0) {\n  <button class=\"sdg-paginator-button\" (click)=\"goToPreviousPage()\">\n    <mat-icon class=\"sdg-paginator-chevron\" color=\"primary\">\n      <!-- icon name: chevron_left -->\n      <svg viewBox=\"0 -960 960 960\">\n        <path d=\"M560-240 320-480l240-240 56 56-184 184 184 184-56 56Z\" />\n      </svg>\n    </mat-icon>\n  </button>\n}\n@for (firstPageIndex of firstPagesIndexes; track firstPageIndex) {\n  <button\n    class=\"sdg-paginator-page\"\n    [class.--active]=\"firstPageIndex === currentPageIndex\"\n    (click)=\"goToPage(firstPageIndex)\"\n    [tabindex]=\"firstPageIndex !== currentPageIndex ? '0' : '-1'\"\n  >\n    {{ firstPageIndex + 1 }}\n  </button>\n}\n@if (\n  (!middlePagesIndexes.length && lastPagesIndexes.length === 1) ||\n  middlePagesIndexes.length\n) {\n  <span class=\"sdg-paginator-ellipsis\">...</span>\n}\n@for (middlePageIndex of middlePagesIndexes; track middlePageIndex) {\n  <button\n    class=\"sdg-paginator-page\"\n    [class.--active]=\"middlePageIndex === currentPageIndex\"\n    (click)=\"goToPage(middlePageIndex)\"\n    [tabindex]=\"middlePageIndex !== currentPageIndex ? '0' : '-1'\"\n  >\n    {{ middlePageIndex + 1 }}\n  </button>\n}\n@if (\n  (!middlePagesIndexes.length && firstPagesIndexes.length === 1) ||\n  middlePagesIndexes.length\n) {\n  <span class=\"sdg-paginator-ellipsis\">...</span>\n}\n@for (lastPageIndex of lastPagesIndexes; track lastPageIndex) {\n  <button\n    class=\"sdg-paginator-page\"\n    [class.--active]=\"lastPageIndex === currentPageIndex\"\n    (click)=\"goToPage(lastPageIndex)\"\n    [tabindex]=\"lastPageIndex !== currentPageIndex ? '0' : '-1'\"\n  >\n    {{ lastPageIndex + 1 }}\n  </button>\n}\n@for (pageIndex of pagesIndexes; track pageIndex) {\n  <button\n    class=\"sdg-paginator-page\"\n    [class.--active]=\"pageIndex === currentPageIndex\"\n    (click)=\"goToPage(pageIndex)\"\n    [tabindex]=\"pageIndex !== currentPageIndex ? '0' : '-1'\"\n  >\n    {{ pageIndex + 1 }}\n  </button>\n}\n@if (currentPageIndex !== nbOfPages - 1) {\n  <button class=\"sdg-paginator-button\" (click)=\"goToNextPage()\">\n    <mat-icon class=\"sdg-paginator-chevron\" color=\"primary\">\n      <!-- icon name: chevron_right -->\n      <svg viewBox=\"0 -960 960 960\">\n        <path d=\"M504-480 320-664l56-56 240 240-240 240-56-56 184-184Z\" />\n      </svg>\n    </mat-icon>\n  </button>\n}\n","import { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { ScrollDispatcher } from '@angular/cdk/scrolling';\nimport {\n  Component,\n  InjectionToken,\n  OnDestroy,\n  TemplateRef,\n  ViewContainerRef,\n  ViewEncapsulation,\n  computed,\n  inject,\n  input,\n  signal,\n  viewChild\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { Subscription } from 'rxjs';\n\nimport { WithLabels } from '../shared';\n\nexport interface PopoverLabels {\n  closeTooltip: string;\n  openTooltip: string;\n}\n\nexport const SDG_POPOVER_LABELS = new InjectionToken<PopoverLabels>(\n  'SDG_POPOVER_LABELS'\n);\n\nconst DEFAULT_LABELS: PopoverLabels = {\n  closeTooltip: 'Fermer',\n  openTooltip: \"Ouvrir l'infobulle\"\n};\n\nlet uniqueId = 0;\n\nexport type PopoverPosition = 'left' | 'right' | 'top' | 'bottom';\nexport type PopoverIcon = 'info' | 'help';\n\nconst POSITIONS: Readonly<Record<PopoverPosition, ConnectedPosition>> = {\n  right: {\n    originX: 'end',\n    originY: 'center',\n    overlayX: 'start',\n    overlayY: 'center',\n    offsetX: 10\n  },\n  left: {\n    originX: 'start',\n    originY: 'center',\n    overlayX: 'end',\n    overlayY: 'center',\n    offsetX: -10\n  },\n  top: {\n    originX: 'center',\n    originY: 'top',\n    overlayX: 'center',\n    overlayY: 'bottom',\n    offsetY: -10\n  },\n  bottom: {\n    originX: 'center',\n    originY: 'bottom',\n    overlayX: 'center',\n    overlayY: 'top',\n    offsetY: 10\n  }\n};\n\n@Component({\n  selector: 'sdg-popover',\n  imports: [MatIconModule, MatButtonModule, MatTooltipModule],\n  templateUrl: './popover.html',\n  styleUrls: ['./popover.scss'],\n  encapsulation: ViewEncapsulation.None,\n  // Prevents the `title` input from leaking as a native title attribute (native tooltip) on the host element\n  host: { '[attr.title]': 'null' }\n})\nexport class SdgPopover extends WithLabels<PopoverLabels> implements OnDestroy {\n  private readonly overlay = inject(Overlay);\n  private readonly scrollDispatcher = inject(ScrollDispatcher);\n  private readonly viewContainerRef = inject(ViewContainerRef);\n\n  private readonly content =\n    viewChild.required<TemplateRef<unknown>>('popoverContent');\n\n  readonly position = input<PopoverPosition>('right');\n  readonly icon = input<PopoverIcon>('info');\n  readonly title = input<string>();\n  readonly buttonTooltip = input<string>();\n  readonly buttonAriaLabel = input<string>();\n\n  protected readonly popoverId = `sdg-popover-${uniqueId++}`;\n  protected readonly titleId = `${this.popoverId}-title`;\n  protected readonly isOpen = signal(false);\n  protected readonly triggerAriaLabel = computed(\n    () =>\n      this.buttonAriaLabel()?.trim() ||\n      this.buttonTooltip()?.trim() ||\n      this.labels().openTooltip.trim() ||\n      DEFAULT_LABELS.openTooltip\n  );\n  protected readonly resolvedPosition = signal<PopoverPosition>('right');\n  protected readonly arrowOffset = signal('50%');\n\n  private overlayRef?: OverlayRef;\n  private subscription?: Subscription;\n  private triggerVisibilityObserver?: IntersectionObserver;\n  private triggerElement?: HTMLElement;\n\n  constructor() {\n    super(DEFAULT_LABELS, SDG_POPOVER_LABELS);\n  }\n\n  toggle(event: MouseEvent): void {\n    if (this.overlayRef) {\n      this.close();\n      return;\n    }\n\n    const trigger = event.currentTarget;\n    if (!(trigger instanceof HTMLElement)) {\n      return;\n    }\n\n    this.triggerElement = trigger;\n    this.resolvedPosition.set(this.position());\n    const positionStrategy = this.overlay\n      .position()\n      .flexibleConnectedTo(trigger)\n      .withPositions(this.getPositions())\n      .withViewportMargin(8);\n\n    this.overlayRef = this.overlay.create({\n      positionStrategy,\n      scrollStrategy: this.overlay.scrollStrategies.reposition()\n    });\n    this.subscription = new Subscription();\n    this.subscription.add(\n      positionStrategy.positionChanges.subscribe(({ connectionPair }) => {\n        this.resolvedPosition.set(this.getPosition(connectionPair));\n        this.updateArrowOffset(trigger);\n      })\n    );\n    this.subscription.add(\n      this.scrollDispatcher.scrolled().subscribe(() => {\n        requestAnimationFrame(() => this.updateArrowOffset(trigger));\n      })\n    );\n    this.subscription.add(\n      this.overlayRef.keydownEvents().subscribe((event) => {\n        if (event.key === 'Escape') {\n          this.close();\n        }\n      })\n    );\n    this.subscription.add(\n      this.overlayRef.outsidePointerEvents().subscribe((pointerEvent) => {\n        if (\n          pointerEvent.target instanceof Node &&\n          !trigger.contains(pointerEvent.target)\n        ) {\n          this.close({ restoreFocus: false });\n        }\n      })\n    );\n    this.overlayRef.attach(\n      new TemplatePortal(this.content(), this.viewContainerRef)\n    );\n    this.isOpen.set(true);\n    this.observeTriggerVisibility(trigger);\n  }\n\n  close(options?: { restoreFocus?: boolean }): void {\n    const restoreFocus = options?.restoreFocus ?? true;\n\n    this.triggerVisibilityObserver?.disconnect();\n    this.triggerVisibilityObserver = undefined;\n    this.subscription?.unsubscribe();\n    this.subscription = undefined;\n    this.overlayRef?.dispose();\n    this.overlayRef = undefined;\n    this.isOpen.set(false);\n\n    if (restoreFocus && this.triggerElement?.isConnected) {\n      this.triggerElement.focus({ preventScroll: true });\n    }\n\n    this.triggerElement = undefined;\n  }\n\n  ngOnDestroy(): void {\n    this.close({ restoreFocus: false });\n  }\n\n  private observeTriggerVisibility(trigger: HTMLElement): void {\n    if (typeof IntersectionObserver === 'undefined') {\n      return;\n    }\n\n    this.triggerVisibilityObserver = new IntersectionObserver(([entry]) => {\n      if (!entry.isIntersecting) {\n        this.close({ restoreFocus: false });\n      }\n    });\n    this.triggerVisibilityObserver.observe(trigger);\n  }\n\n  private getPositions(): ConnectedPosition[] {\n    const preferredPosition = this.position();\n\n    return [\n      POSITIONS[preferredPosition],\n      ...Object.entries(POSITIONS)\n        .filter(([position]) => position !== preferredPosition)\n        .map(([, position]) => position)\n    ];\n  }\n\n  private getPosition(connectionPair: ConnectedPosition): PopoverPosition {\n    if (connectionPair.originX === 'end') {\n      return 'right';\n    }\n    if (connectionPair.originX === 'start') {\n      return 'left';\n    }\n    if (connectionPair.overlayY === 'bottom') {\n      return 'top';\n    }\n    return 'bottom';\n  }\n\n  private updateArrowOffset(trigger: HTMLElement): void {\n    const overlayElement = this.overlayRef?.overlayElement;\n    if (!overlayElement) {\n      return;\n    }\n\n    const triggerRect = trigger.getBoundingClientRect();\n    const overlayRect = overlayElement.getBoundingClientRect();\n    const isHorizontal = ['left', 'right'].includes(this.resolvedPosition());\n    const triggerCenter = isHorizontal\n      ? triggerRect.top + triggerRect.height / 2\n      : triggerRect.left + triggerRect.width / 2;\n    const overlayStart = isHorizontal ? overlayRect.top : overlayRect.left;\n    const overlaySize = isHorizontal ? overlayRect.height : overlayRect.width;\n    const arrowHalfWidth = 10;\n    const offset = Math.min(\n      Math.max(triggerCenter - overlayStart, arrowHalfWidth),\n      overlaySize - arrowHalfWidth\n    );\n\n    this.arrowOffset.set(`${offset}px`);\n  }\n}\n","@let triggerAriaLabel = this.triggerAriaLabel(); @let labels = this.labels();\n@let isOpen = this.isOpen();\n\n<button\n  matIconButton\n  class=\"sdg-popover-button\"\n  color=\"primary\"\n  [attr.aria-label]=\"triggerAriaLabel\"\n  [attr.aria-expanded]=\"isOpen\"\n  aria-haspopup=\"dialog\"\n  [attr.aria-controls]=\"popoverId\"\n  [matTooltip]=\"\n    isOpen ? labels.closeTooltip : (buttonTooltip() ?? labels.openTooltip)\n  \"\n  (click)=\"toggle($event)\"\n>\n  <mat-icon>\n    @if (icon() === 'info') {\n    <!-- info -->\n    <svg viewBox=\"0 -960 960 960\">\n      <path\n        d=\"M508.5-291.5Q520-303 520-320v-160q0-17-11.5-28.5T480-520q-17 0-28.5 11.5T440-480v160q0 17 11.5 28.5T480-280q17 0 28.5-11.5Zm0-320Q520-623 520-640t-11.5-28.5Q497-680 480-680t-28.5 11.5Q440-657 440-640t11.5 28.5Q463-600 480-600t28.5-11.5ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\"\n      />\n    </svg>\n    } @else {\n    <!-- help -->\n    <svg viewBox=\"0 -960 960 960\">\n      <path\n        d=\"M513.5-254.5Q528-269 528-290t-14.5-35.5Q499-340 478-340t-35.5 14.5Q428-311 428-290t14.5 35.5Q457-240 478-240t35.5-14.5ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm4-572q25 0 43.5 16t18.5 40q0 22-13.5 39T502-525q-23 20-40.5 44T444-427q0 14 10.5 23.5T479-394q15 0 25.5-10t13.5-25q4-21 18-37.5t30-31.5q23-22 39.5-48t16.5-58q0-51-41.5-83.5T484-720q-38 0-72.5 16T359-655q-7 12-4.5 25.5T368-609q14 8 29 5t25-17q11-15 27.5-23t34.5-8Z\"\n      />\n    </svg>\n    }\n  </mat-icon>\n</button>\n\n<ng-template #popoverContent>\n  @let title = this.title();\n\n  <div\n    [id]=\"popoverId\"\n    class=\"sdg-popover-content\"\n    [class]=\"`--${resolvedPosition()}`\"\n    [style.--popover-arrow-offset]=\"arrowOffset()\"\n    role=\"dialog\"\n    [attr.aria-labelledby]=\"title ? titleId : null\"\n    [attr.aria-label]=\"title ? null : triggerAriaLabel\"\n  >\n    <button\n      matIconButton\n      class=\"sdg-popover-close\"\n      color=\"primary\"\n      [matTooltip]=\"labels.closeTooltip\"\n      (click)=\"close()\"\n    >\n      <mat-icon>\n        <!-- close -->\n        <svg viewBox=\"0 -960 960 960\">\n          <path\n            d=\"M480-424 284-228q-11 11-28 11t-28-11q-11-11-11-28t11-28l196-196-196-196q-11-11-11-28t11-28q11-11 28-11t28 11l196 196 196-196q11-11 28-11t28 11q11 11 11 28t-11 28L536-480l196 196q11 11 11 28t-11 28q-11 11-28 11t-28-11L480-424Z\"\n          />\n        </svg>\n      </mat-icon>\n    </button>\n\n    <div class=\"sdg-popover-body\">\n      @if (title) {\n      <span [id]=\"titleId\" class=\"text sdg-popover-title\">{{ title }}</span>\n      }\n      <div class=\"sdg-popover-message\">\n        <ng-content />\n      </div>\n    </div>\n  </div>\n</ng-template>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  ElementRef,\n  InjectionToken,\n  inject,\n  input,\n  output,\n  signal,\n  viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\nimport { WithLabels } from '../shared/label/with-labels';\n\nconst INVALID_KEYS = [\n  'Control',\n  'Shift',\n  'Alt',\n  'Meta',\n  'Tab',\n  'CapsLock',\n  'ArrowDown',\n  'ArrowUp',\n  'ArrowRight',\n  'ArrowLeft'\n];\n\nexport interface SearchBarLabels {\n  placeholder: string;\n}\n\nexport const DEFAULT_SEARCH_BAR_LABELS: Required<SearchBarLabels> = {\n  placeholder: 'Rechercher'\n};\n\nexport const SEARCH_BAR_LABELS = new InjectionToken<SearchBarLabels>(\n  'SDG_SEARCH_BAR_LABELS'\n);\n\n@Component({\n  selector: 'sdg-search-bar',\n  imports: [\n    MatFormFieldModule,\n    MatInputModule,\n    MatButtonModule,\n    MatIconModule,\n    MatTooltipModule\n  ],\n  templateUrl: './search-bar.component.html',\n  styleUrl: './search-bar.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SdgSearchBar extends WithLabels<SearchBarLabels> {\n  private readonly destroyRef = inject(DestroyRef);\n\n  readonly color = input<'dark' | 'light'>('dark');\n  readonly debounce = input<number>(300);\n  readonly minLength = input<number>(2);\n\n  /** Emits the search term when the user presses Enter or clicks the search button. */\n  readonly searchSubmit = output<string>();\n  /** Emits the search term (debounced) as the user types. */\n  readonly searchChange = output<string>();\n  readonly clear = output<void>();\n\n  readonly inputEl =\n    viewChild.required<ElementRef<HTMLInputElement>>('inputEl');\n  readonly term = signal('');\n\n  private readonly stream$ = new Subject<string>();\n\n  constructor() {\n    super(DEFAULT_SEARCH_BAR_LABELS, SEARCH_BAR_LABELS);\n\n    this.stream$\n      .pipe(\n        debounceTime(this.debounce()),\n        distinctUntilChanged(),\n        takeUntilDestroyed(this.destroyRef)\n      )\n      .subscribe((term) => this.searchChange.emit(term));\n  }\n\n  onKeyup(event: KeyboardEvent): void {\n    if (INVALID_KEYS.includes(event.key)) return;\n    if (event.key === 'Enter') {\n      this.onSearch();\n      return;\n    }\n    const value = (event.target as HTMLInputElement).value;\n    this.term.set(value);\n    if (value.length >= this.minLength() || value.length === 0) {\n      this.stream$.next(value);\n    }\n  }\n\n  onSearch(): void {\n    this.searchSubmit.emit(this.term());\n  }\n\n  onClear(): void {\n    this.term.set('');\n    this.stream$.next('');\n    this.inputEl().nativeElement.focus();\n    this.clear.emit();\n  }\n}\n","<div class=\"sdg-search-bar\">\n  @let colorIsLight = color() === 'light';\n\n  <mat-form-field [class.--light]=\"colorIsLight\">\n    <input\n      #inputEl\n      matInput\n      autocomplete=\"off\"\n      [placeholder]=\"labels().placeholder\"\n      [value]=\"term()\"\n      (keyup)=\"onKeyup($event)\"\n    />\n    @if (term()) {\n      <button\n        matIconButton\n        class=\"sdg-search-bar-reset-button\"\n        [class.--light]=\"colorIsLight\"\n        matSuffix\n        (click)=\"onClear()\"\n      >\n        <mat-icon color=\"primary\">\n          <!-- close -->\n          <svg viewBox=\"0 -960 960 960\">\n            <path\n              d=\"m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z\"\n            />\n          </svg>\n        </mat-icon>\n      </button>\n    }\n    <button\n      matIconButton\n      class=\"sdg-search-bar-search-button\"\n      [class.--light]=\"colorIsLight\"\n      matSuffix\n      (click)=\"onSearch()\"\n    >\n      <mat-icon [class.--light]=\"colorIsLight\">\n        <!-- search -->\n        <svg viewBox=\"0 -960 960 960\">\n          <path\n            d=\"M784-120 532-372q-30 24-69 38t-83 14q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l252 252-56 56ZM380-400q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z\"\n          />\n        </svg>\n      </mat-icon>\n    </button>\n  </mat-form-field>\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  InjectionToken,\n  input\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RouterLink } from '@angular/router';\n\nimport { WithLabels } from '../shared';\nimport { ISeeAlsoLabels, SeeAlsoLinks } from './see-also.interface';\n\nexport const SDG_SEE_ALSO_LABELS = new InjectionToken<ISeeAlsoLabels>(\n  'SDG_SEE_ALSO_LABELS'\n);\n\nconst DEFAULT_LABELS: ISeeAlsoLabels = {\n  title: 'À consulter aussi'\n};\n\n@Component({\n  selector: 'sdg-see-also',\n  imports: [RouterLink, MatIconModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './see-also.component.html',\n  styleUrls: ['./see-also.component.scss']\n})\nexport class SeeAlsoComponent extends WithLabels<ISeeAlsoLabels> {\n  readonly links = input.required<SeeAlsoLinks>();\n  readonly files = input<SeeAlsoLinks>([]);\n\n  constructor() {\n    super(DEFAULT_LABELS, SDG_SEE_ALSO_LABELS);\n  }\n}\n","<h3 class=\"sdg-see-also-title\">{{ labels().title }}</h3>\n\n<div class=\"sdg-see-also-links\">\n  @for (link of links(); track link) {\n    <a [routerLink]=\"link.url\">{{ link.label }}</a>\n  }\n</div>\n\n@if (files().length) {\n  <div class=\"sdg-see-also-files\">\n    @for (file of files(); track file) {\n      <div class=\"sdg-see-also-file\">\n        <mat-icon class=\"sdg-see-also-file-icon\" color=\"primary\">\n          <!-- icon name: draft -->\n          <svg viewBox=\"0 -960 960 960\">\n            <path\n              d=\"M240-80q-33 0-56.5-23.5T160-160v-640q0-33 23.5-56.5T240-880h320l240 240v480q0 33-23.5 56.5T720-80H240Zm280-520v-200H240v640h480v-440H520ZM240-800v200-200 640-640Z\"\n            />\n          </svg>\n        </mat-icon>\n        <a [routerLink]=\"file.url\">{{ file.label }}</a>\n      </div>\n    }\n  </div>\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  InjectionToken,\n  inject,\n  input\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { WithLabels } from '../shared';\nimport {\n  ISequentialLinksLabels,\n  SequentialLink\n} from './sequential-links.interface';\n\nexport const SDG_SEQUENTIAL_LINKS_LABELS =\n  new InjectionToken<ISequentialLinksLabels>('SDG_SEQUENTIAL_LINKS_LABELS');\n\nconst DEFAULT_LABELS: ISequentialLinksLabels = {\n  previous: 'Précédent',\n  next: 'Suivant'\n};\n\n@Component({\n  selector: 'sdg-sequential-links',\n  imports: [MatIconModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './sequential-links.component.html',\n  styleUrls: ['./sequential-links.component.scss']\n})\nexport class SequentialLinksComponent extends WithLabels<ISequentialLinksLabels> {\n  private router = inject(Router);\n  private activatedRoute = inject(ActivatedRoute);\n\n  readonly previousLink = input<SequentialLink>();\n  readonly nextLink = input<SequentialLink>();\n\n  constructor() {\n    super(DEFAULT_LABELS, SDG_SEQUENTIAL_LINKS_LABELS);\n  }\n\n  goToLink(url: string) {\n    this.router.navigate(['../', url], { relativeTo: this.activatedRoute });\n  }\n}\n","@if (previousLink()) {\n  <button\n    class=\"sdg-sequential-links-link\"\n    (click)=\"goToLink(previousLink()!.url)\"\n  >\n    <mat-icon class=\"sdg-sequential-links-arrow\">\n      <!-- icon name: arrow_left_alt -->\n      <svg viewBox=\"0 -960 960 960\">\n        <path\n          d=\"M400-240 160-480l240-240 56 58-142 142h486v80H314l142 142-56 58Z\"\n        />\n      </svg>\n    </mat-icon>\n    <div class=\"sdg-sequential-links-content\">\n      <span class=\"sdg-sequential-links-title\">{{ labels().previous }}</span>\n      <span class=\"sdg-sequential-links-text\">{{ previousLink()?.text }}</span>\n    </div>\n  </button>\n}\n@if (nextLink()) {\n  <button class=\"sdg-sequential-links-link\" (click)=\"goToLink(nextLink()!.url)\">\n    <mat-icon class=\"sdg-sequential-links-arrow\">\n      <!-- icon name: arrow_right_alt -->\n      <svg viewBox=\"0 -960 960 960\">\n        <path\n          d=\"m560-240-56-58 142-142H160v-80h486L504-662l56-58 240 240-240 240Z\"\n        />\n      </svg>\n    </mat-icon>\n    <div class=\"sdg-sequential-links-content\">\n      <span class=\"sdg-sequential-links-title\">{{ labels().next }}</span>\n      <span class=\"sdg-sequential-links-text\">{{ nextLink()?.text }}</span>\n    </div>\n  </button>\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  inject,\n  input\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Router } from '@angular/router';\n\nimport { pathIsExternal } from '../router';\n\n@Component({\n  selector: 'sdg-tile',\n  imports: [MatIconModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './tile.component.html',\n  styleUrls: ['./tile.component.scss'],\n  // Prevents the `title` input from leaking as a native title attribute (native tooltip) on the host element\n  host: { '[attr.title]': 'null' }\n})\nexport class TileComponent {\n  private router = inject(Router);\n\n  readonly icon = input<string>();\n  /** The icon needs to be registred via the MatIconRegistry */\n  readonly iconSvg = input<string>();\n\n  readonly title = input.required<string, string>({\n    transform: this.titleValidation\n  });\n  readonly message = input<string, string>('', {\n    transform: this.messageValidation\n  });\n  readonly href = input.required<string>();\n\n  private titleValidation(title: string): string {\n    return title.length > 45 ? `${title.slice(0, 45)}...` : title;\n  }\n\n  private messageValidation(message: string): string {\n    return message.length > 140 ? `${message.slice(0, 140)}...` : message;\n  }\n\n  goToLink() {\n    const href = this.href();\n    pathIsExternal(href)\n      ? window.open(href, '_blank')\n      : this.router.navigate([href]);\n  }\n}\n","@let message = this.message();\n@let icon = this.icon();\n@let iconSvg = this.iconSvg();\n\n<button\n  class=\"sdg-tile-container\"\n  [class.--with-message]=\"message\"\n  [class.--with-icon]=\"icon || iconSvg\"\n  (click)=\"goToLink()\"\n>\n  <div class=\"sdg-tile-content\">\n    <div class=\"sdg-tile-title-container\">\n      @if (icon) {\n        <mat-icon class=\"sdg-tile-icon\">{{ icon }}</mat-icon>\n      } @else if (iconSvg) {\n        <mat-icon class=\"sdg-tile-icon\" [svgIcon]=\"iconSvg\" />\n      }\n      <span class=\"sdg-tile-title\">\n        <b> {{ title() }} </b>\n      </span>\n    </div>\n    @if (message) {\n      <div class=\"sdg-tile-message\">{{ message }}</div>\n    }\n  </div>\n\n  <div class=\"sdg-tile-arrow-container\">\n    <mat-icon class=\"sdg-tile-arrow\" color=\"accent\">\n      <!-- icon name: arrow_right_alt -->\n      <svg viewBox=\"0 -960 960 960\">\n        <path\n          d=\"m560-240-56-58 142-142H160v-80h486L504-662l56-58 240 240-240 240Z\"\n        />\n      </svg>\n    </mat-icon>\n  </div>\n</button>\n","import { ViewportScroller } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  DOCUMENT,\n  OnDestroy,\n  inject,\n  input,\n  signal\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n  selector: 'sdg-top-page-button',\n  imports: [MatIconModule, MatButtonModule, MatTooltipModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './top-page-button.component.html',\n  styleUrls: ['./top-page-button.component.scss']\n})\nexport class TopPageButtonComponent implements OnDestroy {\n  private document = inject<Document>(DOCUMENT);\n  private viewportScroller = inject(ViewportScroller);\n\n  tooltip = input.required<string>();\n\n  showButton = signal<boolean>(false);\n  private currentScrollPositionY = signal<number>(0);\n\n  constructor() {\n    this.document.addEventListener('scroll', this.handleScroll);\n  }\n\n  private handleScroll = () => {\n    const scrollPositionY = this.viewportScroller.getScrollPosition()[1];\n\n    scrollPositionY - this.currentScrollPositionY() < 0 && scrollPositionY !== 0\n      ? this.showButton.set(true)\n      : this.showButton.set(false);\n\n    this.currentScrollPositionY.set(scrollPositionY);\n  };\n\n  scrollToTop(): void {\n    this.viewportScroller.scrollToPosition([0, 0]);\n  }\n\n  ngOnDestroy(): void {\n    this.document.removeEventListener('scroll', this.handleScroll);\n  }\n}\n","<button\n  matMiniFab\n  color=\"primary\"\n  disableRipple\n  [class.--visible]=\"showButton()\"\n  [matTooltip]=\"tooltip()\"\n  matTooltipPosition=\"left\"\n  (click)=\"scrollToTop()\"\n>\n  <mat-icon>\n    <!-- icon name: north -->\n    <svg viewBox=\"0 -960 960 960\">\n      <path\n        d=\"M440-80v-647L256-544l-56-56 280-280 280 280-56 57-184-184v647h-80Z\"\n      />\n    </svg>\n  </mat-icon>\n</button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DEFAULT_LABELS","i3","i1","i2","i4"],"mappings":"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"}