xv-webcomponents 1.22.1 → 1.22.2-qa.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/dist/cjs/index-DpLAFt0R.js +3728 -0
  2. package/dist/cjs/loader.cjs.js +2 -2
  3. package/dist/cjs/maplibre-gl-CCZS3Rg5.js +900 -0
  4. package/dist/cjs/{xv-accordion-v2_48.cjs.entry.js → xv-accordion-v2_49.cjs.entry.js} +732 -115
  5. package/dist/cjs/xv-header-next.cjs.entry.js +3 -3
  6. package/dist/cjs/xv-mega-menu-next.cjs.entry.js +4 -4
  7. package/dist/cjs/xv-webcomponents.cjs.js +2 -2
  8. package/dist/collection/collection-manifest.json +1 -0
  9. package/dist/collection/components/xv-accordion/xv-accordion.css +0 -127
  10. package/dist/collection/components/xv-accordion/xv-accordion.js +24 -4
  11. package/dist/collection/components/xv-accordion-item/xv-accordion-item.css +0 -127
  12. package/dist/collection/components/xv-accordion-item/xv-accordion-item.js +11 -5
  13. package/dist/collection/components/xv-breadcrumbs/xv-breadcrumbs.css +0 -127
  14. package/dist/collection/components/xv-breadcrumbs/xv-breadcrumbs.js +1 -1
  15. package/dist/collection/components/xv-button/xv-button-v2.css +0 -127
  16. package/dist/collection/components/xv-button/xv-button.js +2 -2
  17. package/dist/collection/components/xv-button-group/xv-button-group.css +0 -127
  18. package/dist/collection/components/xv-button-group/xv-button-group.js +1 -1
  19. package/dist/collection/components/xv-card/xv-card.css +0 -127
  20. package/dist/collection/components/xv-card/xv-card.js +1 -1
  21. package/dist/collection/components/xv-checkbox/xv-checkbox.css +0 -127
  22. package/dist/collection/components/xv-checkbox/xv-checkbox.js +2 -2
  23. package/dist/collection/components/xv-content-switcher/xv-content-switcher-item/xv-content-switcher-item.css +0 -127
  24. package/dist/collection/components/xv-content-switcher/xv-content-switcher-item/xv-content-switcher-item.js +1 -1
  25. package/dist/collection/components/xv-content-switcher/xv-content-switcher.css +0 -127
  26. package/dist/collection/components/xv-content-switcher/xv-content-switcher.js +2 -2
  27. package/dist/collection/components/xv-data-table/xv-data-table-cell/xv-data-table-cell.css +0 -127
  28. package/dist/collection/components/xv-data-table/xv-data-table-cell/xv-data-table-cell.js +1 -1
  29. package/dist/collection/components/xv-data-table/xv-data-table-collapse/xv-data-table-collapse.css +0 -127
  30. package/dist/collection/components/xv-data-table/xv-data-table-collapse/xv-data-table-collapse.js +1 -1
  31. package/dist/collection/components/xv-data-table/xv-data-table-row/xv-data-table-row.css +0 -127
  32. package/dist/collection/components/xv-data-table/xv-data-table-row/xv-data-table-row.js +2 -2
  33. package/dist/collection/components/xv-data-table/xv-data-table.css +0 -127
  34. package/dist/collection/components/xv-data-table/xv-data-table.js +1 -1
  35. package/dist/collection/components/xv-datepicker/xv-datepicker.css +0 -127
  36. package/dist/collection/components/xv-datepicker/xv-datepicker.js +63 -5
  37. package/dist/collection/components/xv-dropdown/xv-dropdown-item/xv-dropdown-item.css +0 -127
  38. package/dist/collection/components/xv-dropdown/xv-dropdown-item/xv-dropdown-item.js +1 -1
  39. package/dist/collection/components/xv-dropdown/xv-dropdown.css +0 -127
  40. package/dist/collection/components/xv-dropdown/xv-dropdown.js +1 -1
  41. package/dist/collection/components/xv-file-uploader/xv-file-uploader.css +0 -127
  42. package/dist/collection/components/xv-file-uploader/xv-file-uploader.js +1 -1
  43. package/dist/collection/components/xv-footer/xv-footer.css +0 -222
  44. package/dist/collection/components/xv-footer/xv-footer.js +1 -1
  45. package/dist/collection/components/xv-geo-map/xv-geo-map.css +907 -0
  46. package/dist/collection/components/xv-geo-map/xv-geo-map.js +1052 -0
  47. package/dist/collection/components/xv-header/xv-header.css +0 -222
  48. package/dist/collection/components/xv-header/xv-header.js +1 -1
  49. package/dist/collection/components/xv-header-next/xv-header-next.css +0 -222
  50. package/dist/collection/components/xv-header-next/xv-header-next.js +1 -1
  51. package/dist/collection/components/xv-image-viewer/xv-image-viewer.css +0 -127
  52. package/dist/collection/components/xv-image-viewer/xv-image-viewer.js +1 -1
  53. package/dist/collection/components/xv-link/xv-link.css +0 -127
  54. package/dist/collection/components/xv-link/xv-link.js +1 -1
  55. package/dist/collection/components/xv-loader/xv-loader.css +0 -127
  56. package/dist/collection/components/xv-login-modal/xv-login-modal.css +0 -127
  57. package/dist/collection/components/xv-mega-menu/xv-mega-menu.css +0 -254
  58. package/dist/collection/components/xv-mega-menu/xv-mega-menu.js +2 -2
  59. package/dist/collection/components/xv-mega-menu-next/xv-mega-menu-next.css +0 -254
  60. package/dist/collection/components/xv-mega-menu-next/xv-mega-menu-next.js +2 -2
  61. package/dist/collection/components/xv-modal/xv-modal.css +0 -127
  62. package/dist/collection/components/xv-modal/xv-modal.js +1 -1
  63. package/dist/collection/components/xv-notification/xv-notification.css +0 -127
  64. package/dist/collection/components/xv-notification/xv-notification.js +1 -1
  65. package/dist/collection/components/xv-number-input/xv-number-input.css +0 -127
  66. package/dist/collection/components/xv-number-input/xv-number-input.js +2 -2
  67. package/dist/collection/components/xv-overflow-menu/xv-overflow-menu-item/xv-overflow-menu-item.css +0 -127
  68. package/dist/collection/components/xv-overflow-menu/xv-overflow-menu.css +0 -127
  69. package/dist/collection/components/xv-pagination/xv-pagination.css +0 -127
  70. package/dist/collection/components/xv-pagination/xv-pagination.js +1 -1
  71. package/dist/collection/components/xv-progress-indicator/xv-progress-indicator-item/xv-progress-indicator-item.css +0 -127
  72. package/dist/collection/components/xv-progress-indicator/xv-progress-indicator-item/xv-progress-indicator-item.js +1 -1
  73. package/dist/collection/components/xv-progress-indicator/xv-progress-indicator.css +0 -127
  74. package/dist/collection/components/xv-progress-indicator/xv-progress-indicator.js +1 -1
  75. package/dist/collection/components/xv-radio/xv-radio.css +0 -127
  76. package/dist/collection/components/xv-radio/xv-radio.js +2 -2
  77. package/dist/collection/components/xv-slider/xv-slider.css +0 -127
  78. package/dist/collection/components/xv-slider/xv-slider.js +1 -1
  79. package/dist/collection/components/xv-table/xv-table-cell/xv-table-cell.css +0 -127
  80. package/dist/collection/components/xv-table/xv-table-cell/xv-table-cell.js +1 -1
  81. package/dist/collection/components/xv-table/xv-table-expand/xv-table-expand.css +0 -127
  82. package/dist/collection/components/xv-table/xv-table-expand/xv-table-expand.js +1 -1
  83. package/dist/collection/components/xv-table/xv-table-row/xv-table-row.css +0 -127
  84. package/dist/collection/components/xv-table/xv-table-row/xv-table-row.js +1 -1
  85. package/dist/collection/components/xv-table/xv-table.css +0 -127
  86. package/dist/collection/components/xv-table/xv-table.js +1 -1
  87. package/dist/collection/components/xv-tabs/xv-tab/xv-tab.css +0 -127
  88. package/dist/collection/components/xv-tabs/xv-tab/xv-tab.js +1 -1
  89. package/dist/collection/components/xv-tabs/xv-tabs.css +0 -127
  90. package/dist/collection/components/xv-tag/xv-tag.css +0 -127
  91. package/dist/collection/components/xv-tag/xv-tag.js +1 -1
  92. package/dist/collection/components/xv-tag-combobox/xv-tag-combobox.css +0 -127
  93. package/dist/collection/components/xv-tag-combobox/xv-tag-combobox.js +2 -2
  94. package/dist/collection/components/xv-text-input/xv-text-input.css +0 -127
  95. package/dist/collection/components/xv-text-input/xv-text-input.js +2 -2
  96. package/dist/collection/components/xv-textarea/xv-textarea.css +0 -127
  97. package/dist/collection/components/xv-textarea/xv-textarea.js +2 -2
  98. package/dist/collection/components/xv-tile/xv-tile.css +0 -127
  99. package/dist/collection/components/xv-tile/xv-tile.js +2 -2
  100. package/dist/collection/components/xv-toggle/xv-toggle.css +0 -127
  101. package/dist/collection/components/xv-toggle/xv-toggle.js +1 -1
  102. package/dist/collection/components/xv-toggle-tip/xv-toggle-tip.css +0 -127
  103. package/dist/collection/components/xv-toggle-tip/xv-toggle-tip.js +1 -1
  104. package/dist/collection/components/xv-tooltip/xv-tooltip.css +0 -32
  105. package/dist/collection/components/xv-tooltip/xv-tooltip.js +2 -2
  106. package/dist/esm/index-DmxA2ysB.js +3717 -0
  107. package/dist/esm/loader.js +3 -3
  108. package/dist/esm/maplibre-gl-CS4Eagm9.js +813 -0
  109. package/dist/esm/maplibre-gl-shared.mjs +6 -0
  110. package/dist/esm/maplibre-gl-worker.mjs +6 -0
  111. package/dist/esm/{xv-accordion-v2_48.entry.js → xv-accordion-v2_49.entry.js} +732 -116
  112. package/dist/esm/xv-header-next.entry.js +3 -3
  113. package/dist/esm/xv-mega-menu-next.entry.js +4 -4
  114. package/dist/esm/xv-webcomponents.js +3 -3
  115. package/dist/types/components/xv-accordion/xv-accordion.d.ts +5 -4
  116. package/dist/types/components/xv-accordion-item/xv-accordion-item.d.ts +3 -0
  117. package/dist/types/components/xv-datepicker/xv-datepicker.d.ts +12 -0
  118. package/dist/types/components/xv-geo-map/xv-geo-map.d.ts +126 -0
  119. package/dist/types/components.d.ts +237 -0
  120. package/dist/xv-webcomponents/p-93bd2dca.entry.js +1 -0
  121. package/dist/xv-webcomponents/p-9e3130ff.entry.js +1 -0
  122. package/dist/xv-webcomponents/p-CS4Eagm9.js +10 -0
  123. package/dist/xv-webcomponents/p-DmxA2ysB.js +2 -0
  124. package/dist/xv-webcomponents/p-f41dd64e.entry.js +8 -0
  125. package/dist/xv-webcomponents/xv-webcomponents.css +2 -17
  126. package/dist/xv-webcomponents/xv-webcomponents.esm.js +1 -1
  127. package/package.json +2 -1
  128. package/dist/cjs/index-C4fJ70r4.js +0 -3728
  129. package/dist/esm/index-Cv2gugMt.js +0 -3717
  130. package/dist/xv-webcomponents/p-4ad13642.entry.js +0 -1
  131. package/dist/xv-webcomponents/p-616a74df.entry.js +0 -8
  132. package/dist/xv-webcomponents/p-8eca98c5.entry.js +0 -1
  133. package/dist/xv-webcomponents/p-Cv2gugMt.js +0 -2
@@ -9,6 +9,7 @@ import { SIZE_VAR_STR, XV_SORT_DIR } from "./types/enum";
9
9
  import { XvDataTableCheck, XvDataTableReorder } from "./components/xv-data-table/_vars";
10
10
  import { DropdownItemData } from "./components/xv-dropdown/_vars";
11
11
  import { XvFileUploaderVariants } from "./components/xv-file-uploader/_vars";
12
+ import { GeoMapSelection } from "./components/xv-geo-map/xv-geo-map";
12
13
  import { MenuItem } from "./components/xv-mega-menu-next/xv-mega-menu-next.model";
13
14
  import { NOTIFICATION_VARIANTS_STR } from "./components/xv-notification/_vars";
14
15
  import { OverflowMenuEvent, OverflowMenuVariant } from "./components/xv-overflow-menu/_vars";
@@ -22,6 +23,7 @@ export { SIZE_VAR_STR, XV_SORT_DIR } from "./types/enum";
22
23
  export { XvDataTableCheck, XvDataTableReorder } from "./components/xv-data-table/_vars";
23
24
  export { DropdownItemData } from "./components/xv-dropdown/_vars";
24
25
  export { XvFileUploaderVariants } from "./components/xv-file-uploader/_vars";
26
+ export { GeoMapSelection } from "./components/xv-geo-map/xv-geo-map";
25
27
  export { MenuItem } from "./components/xv-mega-menu-next/xv-mega-menu-next.model";
26
28
  export { NOTIFICATION_VARIANTS_STR } from "./components/xv-notification/_vars";
27
29
  export { OverflowMenuEvent, OverflowMenuVariant } from "./components/xv-overflow-menu/_vars";
@@ -362,6 +364,10 @@ export namespace Components {
362
364
  interface XvDatepicker {
363
365
  "block"?: boolean;
364
366
  "disabled"?: boolean;
367
+ /**
368
+ * Individual dates to disable within the min/max range. Each entry may be a `Date`, a bare 'yyyy-MM-dd' string, or a full ISO string — all normalised to a local 'yyyy-MM-dd' key that matches the calendar grid. Composes with min/max: a day is selectable only when it is inside the range AND not listed here (e.g. to allow only certain weekdays / block holidays).
369
+ */
370
+ "disabledDates"?: (Date | string)[];
365
371
  /**
366
372
  * Error status. Can be boolean or string
367
373
  */
@@ -509,6 +515,106 @@ export namespace Components {
509
515
  }
510
516
  interface XvFooter {
511
517
  }
518
+ /**
519
+ * Minimal ATV planner map: MapLibre + PLZ boundaries from the XvGeoTool API.
520
+ * Click a PLZ to (de)select it. No further UI — selection state and reach
521
+ * data are emitted via `changeSelection` for the host page to display.
522
+ * MapLibre (~250 KB gzip) is loaded lazily when the component scrolls near
523
+ * the viewport, so the host page's initial load stays untouched.
524
+ */
525
+ interface XvGeoMapV2 {
526
+ /**
527
+ * Base URL of the geo API (Xv.Api v1/geo — contract-compatible with the XvGeoTool API). Default is the same-origin Front Door route, so no CORS is involved on crossvertise pages.
528
+ * @default '/api-fd/v1/geo'
529
+ */
530
+ "apiBase": string;
531
+ /**
532
+ * @default '© CARTO, © OpenStreetMap contributors'
533
+ */
534
+ "attribution": string;
535
+ /**
536
+ * @default 51.16
537
+ */
538
+ "centerLat": number;
539
+ /**
540
+ * Initial map center
541
+ * @default 10.45
542
+ */
543
+ "centerLng": number;
544
+ /**
545
+ * Remove the optimizer proposal highlight.
546
+ */
547
+ "clearPreview": () => Promise<void>;
548
+ /**
549
+ * Clear the whole selection.
550
+ */
551
+ "clearSelection": () => Promise<void>;
552
+ /**
553
+ * Indicator whose per-unit values feed the tooltips and the emitted population sum (e.g. ATV_DEVICES)
554
+ * @default 'MBI_P_T_2025'
555
+ */
556
+ "indicator": string;
557
+ /**
558
+ * Unit label shown behind the indicator value in the tooltip
559
+ * @default 'Einwohner'
560
+ */
561
+ "indicatorLabel": string;
562
+ /**
563
+ * Label language for the vector basemap (OpenMapTiles `name:{lang}` attribute, falling back to the place's local name). Empty string keeps the style's own labels.
564
+ * @default 'de'
565
+ */
566
+ "language": string;
567
+ /**
568
+ * Load the map bundle only when scrolled near the viewport (default: true)
569
+ * @default true
570
+ */
571
+ "lazy": boolean;
572
+ /**
573
+ * Geo level to display and select: plz5, gemeinde, kreis, regbez, bundesland
574
+ * @default 'plz5'
575
+ */
576
+ "level": string;
577
+ /**
578
+ * Highlight what a radius extension would ADD (optimizer proposal): the units within `km` that are not part of the selection render in the preview color. Visual only — the selection and its change events stay untouched. Returns the number of added units.
579
+ */
580
+ "previewByRadius": (startPlz: string, km: number) => Promise<number>;
581
+ /**
582
+ * Shape resolution: medium = simplified geometry (snappy), high = originals
583
+ * @default 'medium'
584
+ */
585
+ "resolution": 'medium' | 'high';
586
+ /**
587
+ * Select all PLZs within `km` around a start PLZ ("Umkreis"). Replaces the selection unless `add` is true.
588
+ */
589
+ "selectByRadius": (startPlz: string, km: number, add?: boolean) => Promise<GeoMapSelection | null>;
590
+ /**
591
+ * Select an explicit list of PLZs ("PLZ-Liste" paste, query-param restore). Replaces the selection unless `add` is true.
592
+ */
593
+ "selectPostalCodes": (codes: string[], add?: boolean) => Promise<GeoMapSelection | null>;
594
+ /**
595
+ * Minimum zoom before boundaries are loaded and selectable (use ~5 for bundesland, 9 for plz5)
596
+ * @default 9
597
+ */
598
+ "selectZoom": number;
599
+ /**
600
+ * MapLibre style URL for the vector basemap. Default: OpenFreeMap Positron — the same pale data-overlay look as the previous CARTO light, free for commercial use, no API key (openfreemap.org). Set to an empty string to fall back to the raster `tiles` path.
601
+ * @default 'https://tiles.openfreemap.org/styles/positron'
602
+ */
603
+ "styleUrl": string;
604
+ /**
605
+ * Raster tile URL template, used only when `style-url` is empty. The former CARTO default now watermarks keyless traffic ("API KEY REQUIRED"), so this path needs a keyed/licensed tile URL.
606
+ * @default 'https://basemaps.cartocdn.com/rastertiles/light_all/{z}/{x}/{y}@2x.png'
607
+ */
608
+ "tiles": string;
609
+ /**
610
+ * Explicit URL of maplibre-gl-worker.mjs (maplibre-gl-shared.mjs must sit next to it). Needed when the host bundler relocates the maplibre chunk so import.meta.url-relative worker resolution breaks (e.g. Angular/Vite dev server).
611
+ */
612
+ "workerUrl"?: string;
613
+ /**
614
+ * @default 5.5
615
+ */
616
+ "zoom": number;
617
+ }
512
618
  interface XvHeader {
513
619
  }
514
620
  /**
@@ -1213,6 +1319,10 @@ export interface XvFileUploaderCustomEvent<T> extends CustomEvent<T> {
1213
1319
  detail: T;
1214
1320
  target: HTMLXvFileUploaderElement;
1215
1321
  }
1322
+ export interface XvGeoMapV2CustomEvent<T> extends CustomEvent<T> {
1323
+ detail: T;
1324
+ target: HTMLXvGeoMapV2Element;
1325
+ }
1216
1326
  export interface XvHeaderCustomEvent<T> extends CustomEvent<T> {
1217
1327
  detail: T;
1218
1328
  target: HTMLXvHeaderElement;
@@ -1608,6 +1718,31 @@ declare global {
1608
1718
  prototype: HTMLXvFooterElement;
1609
1719
  new (): HTMLXvFooterElement;
1610
1720
  };
1721
+ interface HTMLXvGeoMapV2ElementEventMap {
1722
+ "changeSelection": GeoMapSelection;
1723
+ "mapReady": void;
1724
+ }
1725
+ /**
1726
+ * Minimal ATV planner map: MapLibre + PLZ boundaries from the XvGeoTool API.
1727
+ * Click a PLZ to (de)select it. No further UI — selection state and reach
1728
+ * data are emitted via `changeSelection` for the host page to display.
1729
+ * MapLibre (~250 KB gzip) is loaded lazily when the component scrolls near
1730
+ * the viewport, so the host page's initial load stays untouched.
1731
+ */
1732
+ interface HTMLXvGeoMapV2Element extends Components.XvGeoMapV2, HTMLStencilElement {
1733
+ addEventListener<K extends keyof HTMLXvGeoMapV2ElementEventMap>(type: K, listener: (this: HTMLXvGeoMapV2Element, ev: XvGeoMapV2CustomEvent<HTMLXvGeoMapV2ElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1734
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1735
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1736
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1737
+ removeEventListener<K extends keyof HTMLXvGeoMapV2ElementEventMap>(type: K, listener: (this: HTMLXvGeoMapV2Element, ev: XvGeoMapV2CustomEvent<HTMLXvGeoMapV2ElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
1738
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1739
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1740
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1741
+ }
1742
+ var HTMLXvGeoMapV2Element: {
1743
+ prototype: HTMLXvGeoMapV2Element;
1744
+ new (): HTMLXvGeoMapV2Element;
1745
+ };
1611
1746
  interface HTMLXvHeaderElementEventMap {
1612
1747
  "xvMetaNavUpdate": any;
1613
1748
  }
@@ -2100,6 +2235,7 @@ declare global {
2100
2235
  "xv-dropdown-v2-item": HTMLXvDropdownV2ItemElement;
2101
2236
  "xv-file-uploader": HTMLXvFileUploaderElement;
2102
2237
  "xv-footer": HTMLXvFooterElement;
2238
+ "xv-geo-map-v2": HTMLXvGeoMapV2Element;
2103
2239
  "xv-header": HTMLXvHeaderElement;
2104
2240
  "xv-header-next": HTMLXvHeaderNextElement;
2105
2241
  "xv-image-viewer": HTMLXvImageViewerElement;
@@ -2492,6 +2628,10 @@ declare namespace LocalJSX {
2492
2628
  interface XvDatepicker {
2493
2629
  "block"?: boolean;
2494
2630
  "disabled"?: boolean;
2631
+ /**
2632
+ * Individual dates to disable within the min/max range. Each entry may be a `Date`, a bare 'yyyy-MM-dd' string, or a full ISO string — all normalised to a local 'yyyy-MM-dd' key that matches the calendar grid. Composes with min/max: a day is selectable only when it is inside the range AND not listed here (e.g. to allow only certain weekdays / block holidays).
2633
+ */
2634
+ "disabledDates"?: (Date | string)[];
2495
2635
  /**
2496
2636
  * Error status. Can be boolean or string
2497
2637
  */
@@ -2645,6 +2785,94 @@ declare namespace LocalJSX {
2645
2785
  }
2646
2786
  interface XvFooter {
2647
2787
  }
2788
+ /**
2789
+ * Minimal ATV planner map: MapLibre + PLZ boundaries from the XvGeoTool API.
2790
+ * Click a PLZ to (de)select it. No further UI — selection state and reach
2791
+ * data are emitted via `changeSelection` for the host page to display.
2792
+ * MapLibre (~250 KB gzip) is loaded lazily when the component scrolls near
2793
+ * the viewport, so the host page's initial load stays untouched.
2794
+ */
2795
+ interface XvGeoMapV2 {
2796
+ /**
2797
+ * Base URL of the geo API (Xv.Api v1/geo — contract-compatible with the XvGeoTool API). Default is the same-origin Front Door route, so no CORS is involved on crossvertise pages.
2798
+ * @default '/api-fd/v1/geo'
2799
+ */
2800
+ "apiBase"?: string;
2801
+ /**
2802
+ * @default '© CARTO, © OpenStreetMap contributors'
2803
+ */
2804
+ "attribution"?: string;
2805
+ /**
2806
+ * @default 51.16
2807
+ */
2808
+ "centerLat"?: number;
2809
+ /**
2810
+ * Initial map center
2811
+ * @default 10.45
2812
+ */
2813
+ "centerLng"?: number;
2814
+ /**
2815
+ * Indicator whose per-unit values feed the tooltips and the emitted population sum (e.g. ATV_DEVICES)
2816
+ * @default 'MBI_P_T_2025'
2817
+ */
2818
+ "indicator"?: string;
2819
+ /**
2820
+ * Unit label shown behind the indicator value in the tooltip
2821
+ * @default 'Einwohner'
2822
+ */
2823
+ "indicatorLabel"?: string;
2824
+ /**
2825
+ * Label language for the vector basemap (OpenMapTiles `name:{lang}` attribute, falling back to the place's local name). Empty string keeps the style's own labels.
2826
+ * @default 'de'
2827
+ */
2828
+ "language"?: string;
2829
+ /**
2830
+ * Load the map bundle only when scrolled near the viewport (default: true)
2831
+ * @default true
2832
+ */
2833
+ "lazy"?: boolean;
2834
+ /**
2835
+ * Geo level to display and select: plz5, gemeinde, kreis, regbez, bundesland
2836
+ * @default 'plz5'
2837
+ */
2838
+ "level"?: string;
2839
+ /**
2840
+ * Selection changed: selected PLZs + population sum of the selection
2841
+ */
2842
+ "onChangeSelection"?: (event: XvGeoMapV2CustomEvent<GeoMapSelection>) => void;
2843
+ /**
2844
+ * Map finished initializing
2845
+ */
2846
+ "onMapReady"?: (event: XvGeoMapV2CustomEvent<void>) => void;
2847
+ /**
2848
+ * Shape resolution: medium = simplified geometry (snappy), high = originals
2849
+ * @default 'medium'
2850
+ */
2851
+ "resolution"?: 'medium' | 'high';
2852
+ /**
2853
+ * Minimum zoom before boundaries are loaded and selectable (use ~5 for bundesland, 9 for plz5)
2854
+ * @default 9
2855
+ */
2856
+ "selectZoom"?: number;
2857
+ /**
2858
+ * MapLibre style URL for the vector basemap. Default: OpenFreeMap Positron — the same pale data-overlay look as the previous CARTO light, free for commercial use, no API key (openfreemap.org). Set to an empty string to fall back to the raster `tiles` path.
2859
+ * @default 'https://tiles.openfreemap.org/styles/positron'
2860
+ */
2861
+ "styleUrl"?: string;
2862
+ /**
2863
+ * Raster tile URL template, used only when `style-url` is empty. The former CARTO default now watermarks keyless traffic ("API KEY REQUIRED"), so this path needs a keyed/licensed tile URL.
2864
+ * @default 'https://basemaps.cartocdn.com/rastertiles/light_all/{z}/{x}/{y}@2x.png'
2865
+ */
2866
+ "tiles"?: string;
2867
+ /**
2868
+ * Explicit URL of maplibre-gl-worker.mjs (maplibre-gl-shared.mjs must sit next to it). Needed when the host bundler relocates the maplibre chunk so import.meta.url-relative worker resolution breaks (e.g. Angular/Vite dev server).
2869
+ */
2870
+ "workerUrl"?: string;
2871
+ /**
2872
+ * @default 5.5
2873
+ */
2874
+ "zoom"?: number;
2875
+ }
2648
2876
  interface XvHeader {
2649
2877
  "onXvMetaNavUpdate"?: (event: XvHeaderCustomEvent<any>) => void;
2650
2878
  }
@@ -3339,6 +3567,7 @@ declare namespace LocalJSX {
3339
3567
  "xv-dropdown-v2-item": XvDropdownV2Item;
3340
3568
  "xv-file-uploader": XvFileUploader;
3341
3569
  "xv-footer": XvFooter;
3570
+ "xv-geo-map-v2": XvGeoMapV2;
3342
3571
  "xv-header": XvHeader;
3343
3572
  "xv-header-next": XvHeaderNext;
3344
3573
  "xv-image-viewer": XvImageViewer;
@@ -3440,6 +3669,14 @@ declare module "@stencil/core" {
3440
3669
  "xv-dropdown-v2-item": LocalJSX.XvDropdownV2Item & JSXBase.HTMLAttributes<HTMLXvDropdownV2ItemElement>;
3441
3670
  "xv-file-uploader": LocalJSX.XvFileUploader & JSXBase.HTMLAttributes<HTMLXvFileUploaderElement>;
3442
3671
  "xv-footer": LocalJSX.XvFooter & JSXBase.HTMLAttributes<HTMLXvFooterElement>;
3672
+ /**
3673
+ * Minimal ATV planner map: MapLibre + PLZ boundaries from the XvGeoTool API.
3674
+ * Click a PLZ to (de)select it. No further UI — selection state and reach
3675
+ * data are emitted via `changeSelection` for the host page to display.
3676
+ * MapLibre (~250 KB gzip) is loaded lazily when the component scrolls near
3677
+ * the viewport, so the host page's initial load stays untouched.
3678
+ */
3679
+ "xv-geo-map-v2": LocalJSX.XvGeoMapV2 & JSXBase.HTMLAttributes<HTMLXvGeoMapV2Element>;
3443
3680
  "xv-header": LocalJSX.XvHeader & JSXBase.HTMLAttributes<HTMLXvHeaderElement>;
3444
3681
  /**
3445
3682
  * Drop-in successor of `xv-header` for the new headless CMS.
@@ -0,0 +1 @@
1
+ import{r as e,c as a,h as r,F as i,a as t}from"./p-DmxA2ysB.js";import{S as s,O as o}from"./p-CDEU4jkD.js";import{a as d,g as n,b as l,d as h}from"./p-CQm2sRKT.js";const c=class{constructor(r){e(this,r),this.xvMetaNavUpdate=a(this,"xvMetaNavUpdate",7),this.orgUnit="",this.baseUrl="",this.loading=!1,this.mobMenuOpen=!1,this.toggleMobMenu=()=>{this.mobMenuOpen=!this.mobMenuOpen},this.closeMobMenu=({detail:e})=>{this.mobMenuOpen=!!e},this.logoFallback=e=>{const a=e.currentTarget,r=a.previousElementSibling,i="https://www.crossvertise.com/ResourcePackages/Bootstrap/assets/dist/images/logo-small.svg";i!==a.src&&(a.onerror=null,a.src=i,(null==r?void 0:r.srcset)&&(r.srcset="https://www.crossvertise.com/ResourcePackages/Bootstrap/assets/dist/images/logo.svg"))},this.suggestions=[],this.suggestionsLoading=!1,this.handleSearch=async e=>{try{this.suggestionsLoading=!0;const a=e.target.value.trim();if(!a)return void(this.suggestions=[]);const r=new URLSearchParams({fuzzy:"true",suggesterName:"xv-shared-index-live-suggester","api-version":"2020-06-30",search:a,$top:"10",$select:"title_de,page_link,source",$orderby:"source desc"}).toString();this.suggestions=await d.get(`https://xv-search.search.windows.net/indexes/xv-shared-index-live/docs/suggest?${r}`,{headers:{"api-key":"7315DEF1FA0C8B12109B12BA28E517E7"}}).then((({value:e})=>Array.isArray(e)?e:[]))}catch(e){console.log("error",e)}finally{this.suggestionsLoading=!1}},this.handleSearchOpen=e=>{const a=e.currentTarget.closest("form");if(!a)return;const r=a.querySelector('input[type="search"]');r&&r.focus()},this.handleSearchKeydown=e=>{var a;"Escape"===e.key&&(null===(a=e.currentTarget)||void 0===a||a.blur(),this.suggestions=[])},this.handlePreventEvent=e=>e.preventDefault(),this.notifications=[],this.showLoginModal=!1}handleOrgUnitChange({detail:e}){this.orgUnit=e||""}metaNavUpdate(){var e,a;const r=n();r&&(this.metaNav=r,this.orgUnit=(null===(a=null===(e=this.metaNav)||void 0===e?void 0:e.User)||void 0===a?void 0:a.SelectedOrgUnitName)||"",this.getNotifications()),console.info("MetaNav was updated",this.metaNav)}componentWillLoad(){this.baseUrl=l(),this.initHeader()}async initHeader(){try{this.loading=!0;const e=await d.post("/de-de/home/getpersonalareajson",void 0,{credentials:"include"});this.xvMetaNavUpdate.emit(e),localStorage.setItem("metaNav",JSON.stringify(e))}catch(e){console.error("Failed to fetch initial Header data:",null==e?void 0:e.message,e)}finally{this.metaNavUpdate(),this.loading=!1}}_renderLocaleSwitcher(){if(!this.currentLocale||!this.locales)return null;let e;try{const a=JSON.parse(this.locales);if(!Array.isArray(a))return null;e=a}catch(e){return null}return 0===e.length?null:r("li",{class:"locale-switcher","aria-label":"Language"},e.map(((e,a)=>{const t=e.code===this.currentLocale;return r(i,null,a>0&&r("span",{class:"locale-switcher__sep","aria-hidden":"true"},"|"),t?r("span",{class:"locale-switcher__current xv-body-02","aria-current":"true"},e.code.toUpperCase()):r("xv-link-v2",{class:"locale-switcher__link",variant:"standalone",href:e.href},r("span",{class:"xv-body-02"},e.code.toUpperCase())))})))}_renderSearch(){var e;return!0!==(null===(e=this.metaNav)||void 0===e?void 0:e.EnableMegaMenuSearch)?null:r("li",{class:"search-form"},r("form",{action:`${this.baseUrl}/de-de/media/search`,method:"get",role:"search"},r("input",{onKeyDown:this.handleSearchKeydown,onInput:h(this.handleSearch,700),type:"search",name:"Q",placeholder:"Suchen",title:"Drücken Sie die 'Enter' zum 'Suchen' oder Escape zum Zurücksetzen",autoComplete:"off"}),r("xv-button-v2",{onClick:this.handleSearchOpen,onMouseDown:this.handlePreventEvent,type:"button",variant:"ghost",size:s.MD},r("i",{class:"header-icon far fa-search"})),r("xv-button-v2",{type:"submit",variant:"ghost",size:s.MD},r("i",{class:"header-icon far fa-search"}))),r("ul",{class:{"search-form-suggestions":!0,loading:this.suggestionsLoading}},this.suggestions.map((e=>r("li",null,r("xv-link-v2",{variant:"standalone",href:`${"marketplace"===e.source?"https://marketplace.crossvertise.com":"https://www.crossvertise.com"}${e.page_link}`},e.title_de)))),!this.suggestions.length&&r("li",{class:"text-center xv-helper-text-02"},"Keine Daten gefunden")))}_renderImpersonationInfo(){var e,a,i,t,o;return(null===(e=this.metaNav)||void 0===e?void 0:e.ImpersonationInfo)?r("li",{class:"impersonationInfo"},r("xv-toggle-tip",{position:"bottom-end",autoSize:!0},r("xv-button-v2",{variant:"ghost",slot:"trigger",size:s.MD},r("img",{slot:"icon-left",width:16,height:16,src:"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NDAgNjQwIj48IS0tIUZvbnQgQXdlc29tZSBQcm8gNy4xLjAgYnkgQGZvbnRhd2Vzb21lIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20gTGljZW5zZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL2xpY2Vuc2UgKENvbW1lcmNpYWwgTGljZW5zZSkgQ29weXJpZ2h0IDIwMjUgRm9udGljb25zLCBJbmMuLS0+PHBhdGggZD0iTTE3Ni41IDE5MkMxNzYuNSAxNDcuOCAyMTIuMyAxMTIgMjU2LjUgMTEyQzMwMC43IDExMiAzMzYuNSAxNDcuOCAzMzYuNSAxOTJDMzM2LjUgMjM2LjIgMzAwLjcgMjcyIDI1Ni41IDI3MkMyMTIuMyAyNzIgMTc2LjUgMjM2LjIgMTc2LjUgMTkyek0zODQuNSAxOTJDMzg0LjUgMTIxLjMgMzI3LjIgNjQgMjU2LjUgNjRDMTg1LjggNjQgMTI4LjUgMTIxLjMgMTI4LjUgMTkyQzEyOC41IDI2Mi43IDE4NS44IDMyMCAyNTYuNSAzMjBDMzI3LjIgMzIwIDM4NC41IDI2Mi43IDM4NC41IDE5MnpNODAuNSA1NDRDODAuNSA0NzMuMyAxMzcuOCA0MTYgMjA4LjUgNDE2TDI4OC43IDQxNkMyODkuNSAzOTkuMiAyOTIuNyAzODMuMSAyOTguMSAzNjhMMjA4LjUgMzY4QzExMS4zIDM2OCAzMi41IDQ0Ni44IDMyLjUgNTQ0TDMyLjUgNTUyQzMyLjUgNTY1LjMgNDMuMiA1NzYgNTYuNSA1NzZDNjkuOCA1NzYgODAuNSA1NjUuMyA4MC41IDU1Mkw4MC41IDU0NHpNNDU2LjUgMzUyQzQ5Ni4zIDM1MiA1MjguNSAzODQuMiA1MjguNSA0MjRDNTI4LjUgNDYzLjggNDk2LjMgNDk2IDQ1Ni41IDQ5NkM0MTYuNyA0OTYgMzg0LjUgNDYzLjggMzg0LjUgNDI0QzM4NC41IDM4NC4yIDQxNi43IDM1MiA0NTYuNSAzNTJ6TTQ1Ni41IDU0NEM0ODAuOSA1NDQgNTAzLjYgNTM2LjcgNTIyLjYgNTI0LjJMNTgzLjUgNTg1LjFDNTkyLjkgNTk0LjUgNjA4LjEgNTk0LjUgNjE3LjQgNTg1LjFDNjI2LjcgNTc1LjcgNjI2LjggNTYwLjUgNjE3LjQgNTUxLjJMNTU2LjUgNDkwLjNDNTY5LjEgNDcxLjMgNTc2LjQgNDQ4LjUgNTc2LjQgNDI0QzU3Ni40IDM1Ny43IDUyMi43IDMwNCA0NTYuNCAzMDRDMzkwLjEgMzA0IDMzNi40IDM1Ny43IDMzNi40IDQyNEMzMzYuNCA0OTAuMyAzOTAuMSA1NDQgNDU2LjQgNTQ0eiIvPjwvc3ZnPg==",alt:"ic"})),r("ul",{slot:"body",class:"xv-helper-text-02"},r("li",null,"Kundenperspektive aktiviert für:"),r("li",null,null===(a=this.metaNav.ImpersonationInfo)||void 0===a?void 0:a.NameAndTitle),r("li",null,null===(i=this.metaNav.ImpersonationInfo)||void 0===i?void 0:i.CompanyName),r("li",null,null===(t=this.metaNav.ImpersonationInfo)||void 0===t?void 0:t.Email),r("li",null,null===(o=this.metaNav.ImpersonationInfo)||void 0===o?void 0:o.PhoneOffice)),r("xv-link-v2",{slot:"footer",href:`${this.baseUrl}/de-de/mycrossvertise/account/clearimpersonation`,variant:"ghost"},r("xv-button-v2",{block:!0,variant:"accent"},"Kundenperspektive verlassen")))):null}async getNotifications(){var e;if(null===(e=this.metaNav)||void 0===e?void 0:e.IsManager)try{this.notifications=await d.get(`${this.baseUrl}/de-de/api/notifications/list`,{credentials:"include"}).then((e=>Array.isArray(e)?e:[]))}catch(e){this.notifications=[]}}_renderNotifications(){var e;return(null===(e=this.metaNav)||void 0===e?void 0:e.IsManager)?r("li",{class:"notifications"},r("xv-overflow-menu-v2",{position:"right",size:s.MD},r("span",{slot:"trigger",class:"fa-stack"},r("i",{class:"notifications-icon far fa-bell fa-stack-1x"}),this.notifications.length>0&&r("xv-tag-v2",{class:"counter-badge counter-badge--absolute",bg:"var(--icon-interactive, #97BF0D)",color:"var(--text-inverse, #FFF)"},this.notifications.length)),this.notifications.map((e=>r("xv-overflow-menu-v2-item",{value:e.id,variant:o.GHOST,disabled:e.isRead,clickable:!1},r("div",{class:"notifications-item"},r("i",{class:{far:!0,"fa-clock":!e.status,"fa-times-circle":1===e.status,"fa-circle":e.status&&1!==e.status}}),r("div",{class:"notifications-item-body"},r("span",null,"Rechnungsentwurf für Auftrag ",e.orderId," ist ausstehend"),r("xv-link-v2",{variant:e.isRead?"ghost":"standalone",href:`/de-de/manager/ordersales/details/${e.orderId}`},"Auftrag anschauen")))))))):null}_renderAccount(){var e,a,t,o,d,n,l,h,c,p,g,v;return(null===(e=this.metaNav)||void 0===e?void 0:e.IsAuthenticated)?r("li",{class:{myArea:!0,onHover:!0,isOpen:!1}},r("xv-button-v2",{class:"myArea-btn",variant:"ghost",size:s.MD},r("i",{class:"far fa-user"}),r("div",{class:"header-label xv-body-02"},(null===(a=this.metaNav)||void 0===a?void 0:a.IsManager)&&r("small",{class:"xv-label-01"},"Manager"),r("span",null,(null===(t=this.metaNav)||void 0===t?void 0:t.UserMenuText)||"Mein Konto")),r("i",{class:"caret"})),r("ul",{class:"myArea-list"},(null===(d=null===(o=this.metaNav)||void 0===o?void 0:o.ManagerCockpitMenu)||void 0===d?void 0:d.length)&&r(i,null,r("li",{class:"myArea-list--category"},"Cockpitfunktionen"),this.metaNav.ManagerCockpitMenu.map((e=>r("li",null,r("xv-link-v2",{variant:"standalone",href:e.Url,target:e.Target},e.Text,e.BadgeText&&r("xv-tag-v2",{class:"category-badge",color:"var(--text-inverse, #FFF)",bg:"var(--icon-interactive, #97BF0D)"},e.BadgeText))))),r("li",{class:"myArea-list--divider"})),(null===(l=null===(n=this.metaNav)||void 0===n?void 0:n.ManagerEntitiesMenu)||void 0===l?void 0:l.length)&&r(i,null,r("li",{class:"myArea-list--category"},"Entitäten"),this.metaNav.ManagerEntitiesMenu.map((e=>r("li",null,r("xv-link-v2",{variant:"standalone",href:e.Url,target:e.Target},e.Text,e.BadgeText&&r("xv-tag-v2",{class:"category-badge",color:"var(--text-inverse, #FFF)",bg:"var(--icon-interactive, #97BF0D)"},e.BadgeText))))),r("li",{class:"myArea-list--divider"})),(null===(c=null===(h=this.metaNav)||void 0===h?void 0:h.ManagerMenu)||void 0===c?void 0:c.length)&&r(i,null,this.metaNav.ManagerMenu.map((e=>r("li",null,r("xv-link-v2",{variant:"standalone",href:e.Url,target:e.Target},e.Text,e.BadgeText&&r("xv-tag-v2",{class:"category-badge",color:"var(--text-inverse, #FFF)",bg:"var(--icon-interactive, #97BF0D)"},e.BadgeText))))),r("li",{class:"myArea-list--divider"})),!(null===(p=this.metaNav)||void 0===p?void 0:p.IsManager)&&(null===(v=null===(g=this.metaNav)||void 0===g?void 0:g.UserMenu)||void 0===v?void 0:v.length)&&r(i,null,this.metaNav.UserMenu.map((e=>r("li",null,r("xv-link-v2",{variant:"standalone",href:e.Url,target:e.Target},e.Text,e.BadgeText&&r("xv-tag-v2",{class:"category-badge",color:"var(--text-inverse, #FFF)",bg:"var(--icon-interactive, #97BF0D)"},e.BadgeText))))),r("li",{class:"myArea-list--divider"})),r("li",null,r("xv-link-v2",{href:`${this.baseUrl}/de-de/mycrossvertise/account/logoff?returnUrl=${window.location.hostname}`,variant:"standalone"},"Abmelden")))):r("li",null,r("xv-button-v2",{variant:"ghost",size:s.MD,onClick:()=>this.showLoginModal=!0},r("i",{class:"header-icon far fa-user"}),r("span",{class:"header-label xv-body-02"},"Mein Konto")))}_renderShoppingCart(){var e,a;return r("li",null,r("xv-link-v2",{href:`${this.baseUrl}/de-de/mycrossvertise/shoppingcart/activecart`,variant:"ghost"},r("xv-button-v2",{variant:"ghost",size:s.MD},r("i",{class:"header-icon far fa-shopping-cart"}),r("span",{class:"header-label xv-body-02"},"Warenkorb"),r("xv-tag-v2",{id:"shopping-cart-items-badge",class:"counter-badge",bg:"var(--icon-interactive, #97BF0D)",color:"var(--text-inverse, #FFF)"},(null===(a=null===(e=this.metaNav)||void 0===e?void 0:e.Cart)||void 0===a?void 0:a.NumberOfItems)||0))))}render(){var e,a,i,t,o;const d="Xv"===((null===(e=this.metaNav)||void 0===e?void 0:e.WhitelabelName)||"Xv");return r("header",{key:"e1932c70380d756af07bfa05675b9d5c2c547289",class:"header"},r("div",{key:"183eee57978f19fcb219d7db91ee595550a1107c",class:"header-wrapper"},r("div",{key:"02fcd66ff4da907903f1e334ad5a53a7b9bb2059",class:"xv-container"},r("div",{key:"aab66eb90337e98f4e59d42aaac564b378f1ab96",class:"header-top"},r("div",{key:"c5fcfa9014bb2bfb0bced02bd7719ea1035d0908",class:"header-top--left"},r("xv-button-v2",{key:"4a976abf3371f24ce5effaf4cf8ff8362de94403",class:"menu-btn",variant:"ghost",onClick:this.toggleMobMenu},r("i",{key:"7e0813834a2d910eeb8caf845a20578941d6b849",slot:"icon-left",class:{fa:!0,"fa-times":this.mobMenuOpen,"fa-bars":!this.mobMenuOpen}})),this.metaNav&&r("a",{key:"307c66eb52256b5a2babf83ae73374e773742608",href:`${window.location.origin}/`},r("picture",{key:"40a68d07333b94a546e64b64dedf3d1f0aad33e3"},r("source",{key:"b1ea9728fbaa7be3db49ef5f345da13e5d9fe128",srcSet:(null===(a=this.metaNav)||void 0===a?void 0:a.LogoUrl)||"https://www.crossvertise.com/ResourcePackages/Bootstrap/assets/dist/images/logo.svg",media:"(min-width: 990px)"}),r("img",{key:"26b55e09faf33d6fd7b15eadbfcfd7983ea9091b",src:(null===(i=this.metaNav)||void 0===i?void 0:i.LogoSmallUrl)||"https://www.crossvertise.com/ResourcePackages/Bootstrap/assets/dist/images/logo-small.svg",onError:this.logoFallback,loading:"lazy",alt:"Crossvertise"}))),this.orgUnit&&r("xv-link-v2",{key:"a6afdfd42951d557582e2e5b19fe10ac3d3ab3d7",class:"header-top--orgUnit",variant:"standalone",href:"/de-de/mycrossvertise"},this.orgUnit)),r("ul",{key:"448514d89b69358c4de90be5f3a2e81efd983bea",class:"header-top--right"},this._renderLocaleSwitcher(),this._renderSearch(),this._renderImpersonationInfo(),!(null===(t=this.metaNav)||void 0===t?void 0:t.IsManager)&&d&&r("li",{key:"61035a716a07da5a2aae58424378ef01983bf824"},r("xv-link-v2",{key:"7c57c3260f4f27595cb812ad1dec511914d5335c",variant:"ghost",href:"https://www.crossvertise.com/ueber-uns/kontakt"},r("xv-button-v2",{key:"4abd8f7dcf600df0a14e6838fee395f441fede9d",variant:"ghost",size:s.MD},r("i",{key:"09c17b6dc458482bd5bc037c33879e717e5e2414",class:"header-icon far fa-envelope"}),r("span",{key:"d26a89c70294dc18303f5909e354d815fa254d0c",class:"header-label xv-body-02"},"Kontakt")))),this._renderNotifications(),this._renderAccount(),!(null===(o=this.metaNav)||void 0===o?void 0:o.IsManager)&&d&&r("li",{key:"33b0d3b5c9c239a3a528375b72ed105084f70851"},r("xv-link-v2",{key:"38a72e3aeff4ffdd95cf3b65eb0d1b48f9d4cdb9",variant:"ghost",href:"https://help.crossvertise.com"},r("xv-button-v2",{key:"f9adcd32c71b048b5bcd477a2bdf2c9dff8461d7",variant:"ghost",size:s.MD},r("i",{key:"0cf12dc0e0b8cfd7a6541f4e656b66dbcb9d8cbf",class:"header-icon far fa-question-circle"}),r("span",{key:"3c329275f4ec1575bab6ec0fe66704e56ad9d084",class:"header-label xv-body-02"},"Hilfe")))),this._renderShoppingCart()))),r("div",{key:"52276a7cfae8499d7818c792faa9917af5dbc1b3",class:"header-wrapper--bg"},r("div",{key:"d7d308bf85f8b085632cd3eab6a065569cb70f68",class:"xv-container"},r("xv-mega-menu-next",{key:"df7cd9de15f68c121e8b59bd4a0910473afcad7f",open:this.mobMenuOpen,onOpenChange:this.closeMobMenu,menuData:this.menuData})))),r("xv-login-modal",{key:"132923db6ca3327bf9db41470ef6837b357a42fe",visible:this.showLoginModal,onClose:()=>this.showLoginModal=!1}))}get el(){return t(this)}};c.style='.xv-container{width:100%;max-width:1170px;margin-inline:auto}@media (min-width: 576px){.xv-container{max-width:540px}}@media (min-width: 768px){.xv-container{max-width:720px}}@media (min-width: 992px){.xv-container{max-width:960px;padding-inline:var(--bs-gutter-x, 0.75rem)}}@media (min-width: 1200px){.xv-container{max-width:1140px}}@media (min-width: 1400px){.xv-container{max-width:1320px}}header.header{position:sticky;z-index:1000;top:0}header.header .header-wrapper{width:100vw;padding-top:var(--spacing-04);background-color:var(--background, #fff);box-shadow:1px 1px 0 0 rgba(39, 52, 53, 0.15), 0 3px 2px 0 rgba(39, 52, 53, 0.3)}@media (max-width: 991px){header.header .header-wrapper{padding-bottom:var(--spacing-04)}}header.header .header-wrapper--bg{background:var(--menu-background, transparent);color:var(--menu-color, var(--text-primary, #131313))}header.header .header-top{display:flex;align-items:center;gap:var(--spacing-05)}header.header .header-top--left{width:100%;max-width:350px;display:flex;align-items:center;column-gap:var(--spacing-04)}header.header .header-top--left img{width:100%;height:26px;object-fit:contain}header.header .header-top--left .menu-btn{display:none}@media (max-width: 991px){header.header .header-top--left .menu-btn{display:inline-block}}header.header .header-top--right{flex:1;display:flex;justify-content:flex-end;gap:var(--spacing-03);margin:0;padding:0;list-style:none}@media (max-width: 1199px){header.header .header-top--right{gap:var(--spacing-01)}}header.header .header-top--right .header-label{display:flex;flex-direction:column;color:var(--text-primary, #131313)}header.header .header-top--right .header-label>small{line-height:1}@media (min-width: 992px){header.header .header-top--right .header-label{margin-inline:var(--spacing-02)}}@media (max-width: 1199px){header.header .header-top--right .header-label{display:none}}header.header .header-top--right .header-icon{color:var(--icon-primary, #131313)}header.header .header-top--right .caret{display:inline-block;margin-left:5px;width:6px;height:6px;border:none;border-bottom:1px solid currentColor;border-right:1px solid currentColor;transform:rotate(45deg);box-sizing:border-box;background:transparent;transform-origin:center;transition:0.25s ease-in-out transform}header.header .header-top--right .counter-badge--absolute{position:absolute;top:0;right:0}header.header .header-top--right .counter-badge::part(details-content){padding:1px;line-height:1;min-width:16px;height:16px;font-size:10px;text-align:center;display:inline-flex;align-items:center;justify-content:center}header.header .header-top--orgUnit{--link-visited:var(--link-primary)}header.header .header-top .fa-question-circle{color:var(--icon-primary, #131313)}header.header .header-top .search-form{flex:1;position:relative}@media (max-width: 768px){header.header .header-top .search-form{display:none}}header.header .header-top .search-form form{padding-inline:2px;flex:1;display:flex;align-items:stretch;flex-direction:row;justify-content:flex-end}header.header .header-top .search-form form input[type=search]{flex:0;text-align:right;display:inline-flex;border:none;min-width:0;transition:flex 0.3s ease-in-out, outline 0.3s ease;overflow:hidden;border-radius:3px}header.header .header-top .search-form form input[type=search]::placeholder{color:var(--text-placeholder, #ACACAC)}header.header .header-top .search-form form input[type=search]:focus{outline:2px solid var(--focus)}header.header .header-top .search-form form>[type=button]{display:inline-flex}header.header .header-top .search-form form>[type=submit]{display:none}header.header .header-top .search-form form:focus-within>[type=button],header.header .header-top .search-form form:has(input[type=search]:not(:placeholder-shown))>[type=button]{display:none}header.header .header-top .search-form form:focus-within>[type=submit],header.header .header-top .search-form form:has(input[type=search]:not(:placeholder-shown))>[type=submit]{display:inline-flex}header.header .header-top .search-form form:focus-within input[type=search],header.header .header-top .search-form form:has(input[type=search]:not(:placeholder-shown)) input[type=search]{flex:1;outline:1px solid var(--focus)}header.header .header-top .search-form form:focus-within+.search-form-suggestions,header.header .header-top .search-form form:has(input[type=search]:not(:placeholder-shown))+.search-form-suggestions{display:flex}header.header .header-top .search-form-suggestions{position:absolute;top:calc(100% + 5px);background-color:var(--background, #fff);box-shadow:0 0 10px rgba(0, 0, 0, 0.1);border-radius:3px;z-index:2;padding:var(--spacing-04);margin:0;list-style:none;display:none;flex-direction:column;row-gap:var(--spacing-02);min-width:calc(100% - 32px)}header.header .header-top .search-form-suggestions.loading:after{display:flex;align-items:center;justify-content:center;content:"";background:rgba(255, 255, 255, 0.8);position:absolute;top:0;left:0;z-index:3;width:100%;height:100%}header.header .header-top .impersonationInfo ul[slot=body]{margin:0;padding:0;list-style:none;min-width:256px}header.header .header-top .notifications-icon{font-size:14px}header.header .header-top .notifications-item{display:flex;align-items:center;column-gap:var(--spacing-04)}header.header .header-top .notifications-item-body{display:flex;flex-direction:column}header.header .header-top .myArea{position:relative}header.header .header-top .myArea-list{padding:0;margin:0;list-style:none;max-height:0;overflow-y:scroll;transition:max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);position:absolute;right:0;top:calc(100% + var(--spacing-02, 5px));min-width:100%;background-color:var(--background);z-index:999;border-radius:3px;box-shadow:0 5px 6px rgba(0, 0, 0, 0.15);display:flex;flex-direction:column;white-space:nowrap}@supports (scrollbar-width: thin){header.header .header-top .myArea-list{scrollbar-width:thin;scrollbar-color:var(--layer-01) transparent}}header.header .header-top .myArea-list::-webkit-scrollbar{width:4px;height:4px}header.header .header-top .myArea-list::-webkit-scrollbar-thumb{background:var(--layer-01, #F7F7F7);border-radius:4px}header.header .header-top .myArea-list::-webkit-scrollbar-track{background:transparent}header.header .header-top .myArea-list--divider{height:2px;min-height:2px;width:100%;background-color:var(--layer-01, #F7F7F7);padding-block:0 !important}header.header .header-top .myArea-list--category{padding:var(--spacing-03) var(--spacing-05);margin-inline:var(--spacing-02);color:var(--text-primary);font-weight:bold}header.header .header-top .myArea-list>li:first-child{margin-top:var(--spacing-02)}header.header .header-top .myArea-list>li:last-child{margin-bottom:var(--spacing-02)}header.header .header-top .myArea-list>li>*{--link-primary:var(--text-secondary, #515151);--link-visited:var(--text-secondary, #515151);display:block;cursor:pointer;padding-inline:var(--spacing-05);padding-block:var(--spacing-02);margin-inline:var(--spacing-02)}header.header .header-top .myArea-list .category-badge{margin-left:var(--spacing-02)}header.header .header-top .myArea-list .category-badge::part(details-content){line-height:1;font-size:11px;padding:var(--spacing-01) var(--spacing-02)}header.header .header-top .myArea.isOpen .caret,header.header .header-top .myArea.onHover:hover .caret{transform:rotate(-135deg)}header.header .header-top .myArea.isOpen .myArea-list,header.header .header-top .myArea.onHover:hover .myArea-list{max-height:85vh}header.header .header-top .locale-switcher{display:inline-flex;align-items:center;gap:var(--spacing-03, 6px);padding:0 var(--spacing-03, 6px)}header.header .header-top .locale-switcher__sep{color:var(--border-subtle-01, #c6c6c6)}header.header .header-top .locale-switcher__link{text-transform:uppercase;letter-spacing:0.04em}header.header .header-top .locale-switcher__current{text-transform:uppercase;letter-spacing:0.04em;font-weight:700;color:var(--text-primary, #131313)}';export{c as xv_header_next}
@@ -0,0 +1 @@
1
+ import{r as e,c as n,h as i,F as a,H as t,a as o}from"./p-DmxA2ysB.js";import{a as r}from"./p-CQm2sRKT.js";const s=class{constructor(i){e(this,i),this.openChange=n(this,"openChange",7),this.mobileSize=991,this.open=!1,this.menuItems=[],this.applicationContext="Xv",this.menuLoading=!1}handleClickOutside(e){this.open&&!this.el.contains(e.target)&&this.handleClose()}handleClose(){this.open=!1,this.activeItem=this.activeGroup=void 0,this.openChange.emit(this.open)}get isMobile(){return window.outerWidth<=this.mobileSize}setActiveItem(e){var n,i,a,t,o;this.activeItem=(null===(n=this.activeItem)||void 0===n?void 0:n.id)===(null==e?void 0:e.id)?void 0:e,this.isMobile&&1!==((null===(a=null===(i=this.activeItem)||void 0===i?void 0:i.groups)||void 0===a?void 0:a.length)||0)||this.setActiveGroup(null===(o=null===(t=this.activeItem)||void 0===t?void 0:t.groups)||void 0===o?void 0:o[0]),this.isMobile||(this.open=!!this.activeItem,!this.open&&this.handleClose())}setActiveGroup(e){var n;this.activeGroup=this.isMobile&&(null===(n=this.activeGroup)||void 0===n?void 0:n.id)===(null==e?void 0:e.id)?void 0:e}navActionClick(e){window.location.href=e.url}parseMenuData(e){if(!e)return null;if(Array.isArray(e))return e;try{const n=JSON.parse(e);return Array.isArray(n)?n:null}catch(e){return console.warn("xv-mega-menu-next: invalid menu-data JSON",e),null}}async fetchMenuData(){try{this.menuItems=await r.get("/api-fd/v1/home/menu",{awaitWl:!0,credentials:"include"}).then((({data:e,meta:n})=>(this.applicationContext=n.applicationContext,e||[])))}catch(e){console.error("fetchMenuData error",e),this.menuItems=[]}}onMenuDataChange(e){const n=this.parseMenuData(e);n&&(this.menuItems=n)}componentWillLoad(){const e=this.parseMenuData(this.menuData);e?this.menuItems=e:this.fetchMenuData()}render(){return i(t,{key:"bad4de2d6c069fbd9af916193a34374e44605035"},i("nav",{key:"2178773027093967b6b1a173739ad7c730849ac2",class:{"xv-menu":!0,open:this.open}},this.menuLoading&&i("div",{key:"0b1696d0d4d73406a253265133e6367f80647054",class:{"xv-menu-loader":!0,open:this.open}},i("xv-loader-v2",{key:"569f2b3f58bfeeeb0f92ae18325db675a68e536e"})),i("ul",{key:"58f6fd94abeeeb920d75ed3bcd2855830b380e97",class:{menu:!0,open:this.open}},this.menuItems.map((e=>{var n,t;return i("li",{class:{"menu-item":!0,active:e.id===(null===(n=this.activeItem)||void 0===n?void 0:n.id)}},e.route?i("xv-link-v2",{variant:"ghost",href:e.route.route},i("p",{class:"menu-item-label"},null===(t=e.route)||void 0===t?void 0:t.label)):i(a,null,i("p",{class:"menu-item-label",onClick:()=>this.setActiveItem(e)},null==e?void 0:e.label),i("ul",{class:"menu-item-groups"},e.groups.map((n=>{var a;return i("li",{class:{group:!0,active:(null===(a=this.activeGroup)||void 0===a?void 0:a.id)===n.id}},n.label&&e.groups.length>1&&i("div",{class:"group-label",onClick:()=>this.setActiveGroup(n)},i("span",{class:"group-label-text"},n.label),i("span",{class:"group-label-icon"})),i("div",{class:"group-container"},i("div",{class:{"group-container-absolute":!0,noLabel:!(n.label&&e.groups.length>1)}},i("div",{class:"group-menus"},i("ul",{class:{"group-menus-categories":!0,inline:"inline"===n.layout}},n.categories.map((e=>i("li",{class:"category"},i("p",{class:"category-label"},e.label),i("ul",{class:"category-routes"},e.routes.map((e=>i("li",{class:"route"},i("xv-link-v2",{size:"lg",variant:"ghost",href:e.route||"#"},e.label),e.tag&&i("xv-tag-v2",{class:"route-tag",size:"sm",color:"#161616",bg:"#E0E0E0"},e.tag))))))))),i("ul",{class:"group-menus-actions"},n.actions.map((e=>i("li",{class:"action"},"link"===e.type&&i("xv-link-v2",{variant:"standalone",href:null==e?void 0:e.url},e.label,i("span",{class:"link-chevron",slot:"icon-right"},"→")),"button"===e.type&&i("xv-button-v2",{onClick:()=>this.navActionClick(e),block:!0,variant:"tertiary"},e.label)))))),(null==n?void 0:n.card)&&i("div",{class:"group-card"},i("xv-card-v2",{media:"Komsa"!==this.applicationContext?n.card.image:void 0,variant:this.isMobile?"horizontal":"vertical"},i("h5",{slot:"header",class:"group-card-title"},n.card.title),i("p",{slot:"body",class:"group-card-desc"},n.card.description),n.card.linkLabel&&i("xv-link-v2",{slot:"footer",variant:"standalone",href:n.card.linkUrl||"#"},n.card.linkLabel,i("span",{class:"link-chevron",slot:"icon-right"},"→")))))))})))))})),i("li",{key:"38b8acb36359a7a5d7df00e786155590741e3204",class:"menu--right"},i("slot",{key:"a1d1b1339febe43b3bc21fe5380aed17c7657c4a",name:"menu-right"})),this.open&&i("li",{key:"3bde394cc93c860d2221ca9ef8c428a537cbc7c6",class:"menu--backdrop",onClick:()=>this.handleClose()}))))}get el(){return o(this)}static get watchers(){return{menuData:[{onMenuDataChange:0}]}}};s.style=":host{--menu-group-width:244px;--menu-group-height:454px;--link-visited:var(--link-primary)}.xv-menu{background:inherit;position:relative;font-family:var(--ff-work-sans), sans-serif}@media (min-width: 992px){.xv-menu{min-height:55px}}.xv-menu-loader{position:absolute;top:0;left:0;width:100%;height:100%;z-index:4;background-color:rgba(255, 255, 255, 0.7);display:flex;align-items:center;justify-content:center}@media (max-width: 991px){.xv-menu-loader:not(.open){display:none}}@media (max-width: 991px){.xv-menu.open{padding-bottom:env(safe-area-inset-bottom);max-height:calc(100vh - 120px);overflow:auto;overscroll-behavior:contain}}.xv-menu_mobile{position:relative;display:none}@media (max-width: 991px){.xv-menu_mobile{display:inline-flex}}.xv-menu ul{margin:0;padding:0;list-style:none}.xv-menu .link-chevron{display:inline-block;margin-inline-start:var(--spacing-01)}.xv-menu .menu{overflow-x:auto;display:flex;justify-content:flex-start;column-gap:var(--spacing-08)}@media (max-width: 991px){.xv-menu .menu{flex-direction:column;display:none}}.xv-menu .menu--right{margin-left:auto;display:flex;align-items:center;align-self:center}@media (max-width: 991px){.xv-menu .menu--right{margin-left:unset;padding-block:var(--spacing-05)}}.xv-menu .menu--backdrop{z-index:-1;background-color:rgba(0, 0, 0, 0.3);position:fixed;top:0;left:0;width:100%;height:100%}@media (max-width: 991px){.xv-menu .menu.open{display:flex}}.xv-menu .menu-item:hover .menu-item-label{border-bottom-color:var(--interactive-02)}.xv-menu .menu-item.active .menu-item-groups{z-index:990;display:flex}.xv-menu .menu-item.active .menu-item-label{border-bottom-color:var(--interactive-02)}@media (max-width: 991px){.xv-menu .menu-item.active{border-bottom:1px solid #E1E4ED}}.xv-menu .menu-item-label{margin:0;padding-block:var(--spacing-05, 16px);color:inherit;font-size:16px;line-height:24px;font-family:var(--ff-body), sans-serif;font-weight:600;cursor:pointer;border-bottom:2px solid transparent;transition:250ms ease-in-out border-bottom-color;user-select:none;white-space:nowrap}@media (max-width: 991px){.xv-menu .menu-item-label{border-bottom:1px solid #E1E4ED}}.xv-menu .menu-item-groups{z-index:-1;position:absolute;left:0;top:100%;width:100%;background-color:var(--background, #fff);display:none;flex-direction:column;border:1px solid var(--border-subtle-01);row-gap:var(--spacing-05);padding-block:var(--spacing-08) var(--spacing-06);min-height:var(--menu-group-height);border-radius:0 0 8px 8px;overflow:hidden;color:var(--interactive-01, #273435)}@media (max-width: 991px){.xv-menu .menu-item-groups{min-height:unset;padding-block:unset;position:relative;row-gap:unset;border:none}}.xv-menu .menu .group{display:flex;align-items:flex-start}@media (max-width: 991px){.xv-menu .menu .group{flex-direction:column;align-items:stretch}}.xv-menu .menu .group-label{user-select:none;min-width:var(--menu-group-width);max-width:var(--menu-group-width);color:var(--text-primary, #333);font-size:16px;font-style:normal;font-weight:400;line-height:137.5%;display:flex;column-gap:var(--spacing-04);text-align:right;justify-content:flex-end;cursor:pointer}.xv-menu .menu .group-label-text{text-overflow:ellipsis;overflow:hidden}.xv-menu .menu .group-label-icon{width:8px;height:8px;border-bottom:2px solid currentColor;border-right:2px solid currentColor;transform:rotate(-45deg);transform-origin:bottom;align-self:center}@media (max-width: 991px){.xv-menu .menu .group-label{max-width:unset;min-width:unset;align-items:stretch;justify-content:flex-start;padding-block:var(--spacing-05)}}.xv-menu .menu .group-container{flex:1;display:none}.xv-menu .menu .group-container-absolute{position:absolute;top:0;right:0;width:calc(100% - (var(--menu-group-width) + var(--spacing-06) + var(--spacing-09) + var(--spacing-05)));min-height:calc(100% - (var(--spacing-08) + var(--spacing-06)));padding:var(--spacing-08) var(--spacing-06) var(--spacing-06) var(--spacing-09);display:flex;background-color:var(--layer-01, #F7F7F7)}@media (max-width: 991px){.xv-menu .menu .group-container-absolute{position:unset;flex-direction:column;width:100%;flex:1;padding:var(--spacing-06) 0;background-color:var(--background)}}.xv-menu .menu .group-container-absolute.noLabel{left:0;width:calc(100% - (var(--spacing-06) + var(--spacing-09)))}.xv-menu .menu .group.active .group-label{font-weight:600}@media (max-width: 991px){.xv-menu .menu .group.active .group-label-icon{transform-origin:center;transform:rotate(45deg)}}.xv-menu .menu .group.active .group-container{display:flex}.xv-menu .menu .group-menus{flex:1;display:flex;flex-direction:column;row-gap:var(--spacing-06)}.xv-menu .menu .group-menus-categories{display:flex;row-gap:var(--spacing-07);column-gap:var(--spacing-05);flex:1}@media (max-width: 991px){.xv-menu .menu .group-menus-categories{flex-direction:column;gap:var(--spacing-07)}}.xv-menu .menu .group-menus-categories.inline{flex-direction:column;flex-wrap:wrap;max-height:365px}@media (max-width: 991px){.xv-menu .menu .group-menus-categories.inline{max-height:unset}}.xv-menu .menu .group-menus-categories.inline .category{flex:none}.xv-menu .menu .group-menus-actions{display:flex;align-items:center;justify-content:flex-start;gap:var(--spacing-05)}@media (max-width: 991px){.xv-menu .menu .group-menus-actions{flex-direction:column;justify-content:stretch;align-items:stretch;text-align:center}}.xv-menu .menu .group-card{box-sizing:content-box;max-width:228px;min-width:200px;padding-left:var(--spacing-06);border-left:1px solid var(--border-subtle-01)}@media (min-width: 992px) and (max-width: 1199px){.xv-menu .menu .group-card{display:none}}@media (max-width: 991px){.xv-menu .menu .group-card{margin-block-start:var(--spacing-06);border-left:none;padding-left:0;max-width:unset;min-width:unset}}.xv-menu .menu .group-card .xv-card{box-shadow:none;background-color:var(--background, #fff)}@media (max-width: 991px){.xv-menu .menu .group-card .xv-card{width:unset}}.xv-menu .menu .group-card-title,.xv-menu .menu .group-card-desc{font-size:var(--fz-md, 14px);font-style:normal;line-height:18px;letter-spacing:0.16px}.xv-menu .menu .group-card .xv-link_standalone,.xv-menu .menu .group-card-title,.xv-menu .menu .group-card-desc{font-family:var(--ff-work-sans), sans-serif}.xv-menu .menu .group-card-title{color:var(--text-primary, #333);font-weight:600}.xv-menu .menu .group-card-desc{color:var(--text-secondary, #515151);font-weight:400;padding-top:var(--spacing-03);display:-webkit-box;-webkit-line-clamp:11;-webkit-box-orient:vertical;overflow:hidden}.xv-menu .menu .category{flex:1;display:flex;flex-direction:column;row-gap:var(--spacing-05)}@media (max-width: 991px){.xv-menu .menu .category{flex:0}.xv-menu .menu .category:not(:last-child){border-bottom:1px solid var(--border-subtle-01);padding-bottom:var(--spacing-04)}}.xv-menu .menu .category-label{margin:0;font-size:var(--fz-md, 14px);color:var(--text-secondary)}.xv-menu .menu .category-routes{display:flex;flex-direction:column;row-gap:var(--spacing-05)}.xv-menu .menu .route{display:inline-flex;align-items:center;column-gap:var(--spacing-03);position:relative;font-size:var(--fz-lg, 16px)}.xv-menu .menu .route .xv-link_ghost{font-family:var(--ff-work-sans), sans-serif}.xv-menu .menu .route .xv-link_ghost:hover{color:var(--link-primary)}@media (max-width: 991px){.xv-menu .menu .route{white-space:nowrap}}.xv-menu .menu .route .route-tag{font-size:9px}";export{s as xv_mega_menu_next}