{"version":3,"file":"js/dashboard.8c4aa382e0cbed9e.js","sources":["webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/components/ThemeToggle.vue?c9d5","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/components/ThemeToggle.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/components/common/ErrorModal.vue?fb0b","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/components/common/ErrorModal.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/components/shared/LanguageSwitcher.vue?9a27","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/components/shared/LanguageSwitcher.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/components/shared/LoadingSpinner.vue?81dd","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/components/shared/LoadingSpinner.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconPayWithin48_Modern.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconPayWithin48_Modern.vue?eed2","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/components/shared/AdminNavigationMenu.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/components/shared/adminNavigationMenuItems.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/components/shared/NavigationMenu.vue?5e1f","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/components/shared/NavigationMenu.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/components/shared/AdminNavigationMenu.vue?b798","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/components/shared/UserProfileCard.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/components/shared/UserProfileCard.vue?6cd1","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconActivity.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconActivity.vue?8d6f","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconAlertCircle.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconAlertCircle.vue?d581","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconArrowRight.vue?6339","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconArrowRight.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconAuto.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconAuto.vue?87d0","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconBankNote.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconBankNote.vue?e90f","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconBook.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconBook.vue?820e","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconBriefcase.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconBriefcase.vue?408a","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconCalendar.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconCalendar.vue?c08f","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconCamera.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconCamera.vue?b8bb","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconCar.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconCar.vue?6b5f","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconChartBar.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconChartBar.vue?d2c7","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconCheck.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconCheck.vue?5f8c","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconCheckCircle.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconCheckCircle.vue?fb76","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconChevronDown.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconChevronDown.vue?a489","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconChevronRight.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconChevronRight.vue?9c67","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconCreditCard.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconCreditCard.vue?9075","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconDatabase.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconDatabase.vue?1517","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconDownload.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconDownload.vue?c130","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconGlobe.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconGlobe.vue?8f67","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconHelpCircle.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconHelpCircle.vue?6c04","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconHome.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconHome.vue?b236","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconLogOut.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconLogOut.vue?dc03","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconLogo.vue?ed0e","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconLogo.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconMap.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconMap.vue?f4dd","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconMapPin.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconMapPin.vue?946e","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconMenu.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconMenu.vue?4aa7","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconMessageCircle.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconMessageCircle.vue?cb5a","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconMoon.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconMoon.vue?6cc3","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconParking.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconParking.vue?d560","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconReceipt.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconReceipt.vue?8999","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconRoad.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconRoad.vue?e511","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconSearch.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconSearch.vue?9ad1","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconServer.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconServer.vue?563e","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconShield.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconShield.vue?bf31","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconSignal.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconSignal.vue?db15","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconSubscription.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconSubscription.vue?1e83","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconSun.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconSun.vue?46a3","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconTicket.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconTicket.vue?8086","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconUser.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconUser.vue?a745","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconUsers.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconUsers.vue?d783","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconWindow.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconWindow.vue?80a0","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconX.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/icons/IconX.vue?aa51","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/layouts/DashboardRouteOutlet.vue?6814","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/layouts/DashboardRouteOutlet.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/layouts/Footer.vue?dc0a","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/layouts/Footer.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/layouts/MobileHeader.vue?2c3d","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/layouts/MobileHeader.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/layouts/MobileSidebar.vue?10ad","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/layouts/MobileSidebar.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/translations|lazy|/^\\.\\/(","webpack:///./src/www.youpark.no/wwwroot/apps/common/ts/composables/useTranslate.ts","webpack:///./src/www.youpark.no/wwwroot/apps/common/ts/directives/translate.ts","webpack:///./src/www.youpark.no/wwwroot/apps/common/ts/enums.ts","webpack:///./src/www.youpark.no/wwwroot/apps/common/ts/utils/secure-zone.ts","webpack:///./src/www.youpark.no/wwwroot/apps/common/ts/http-client.ts","webpack:///./src/www.youpark.no/wwwroot/apps/common/ts/i18n/index.ts","webpack:///./src/www.youpark.no/wwwroot/apps/common/ts/utils/any.ts","webpack:///./src/www.youpark.no/wwwroot/apps/common/ts/utils/debounce.ts","webpack:///./src/www.youpark.no/wwwroot/apps/common/ts/utils/enum.ts","webpack:///./src/www.youpark.no/wwwroot/apps/common/ts/utils/http.ts","webpack:///./src/www.youpark.no/wwwroot/apps/common/ts/utils/http/errors.ts","webpack:///./src/www.youpark.no/wwwroot/apps/common/ts/utils/object-id.ts","webpack:///./src/www.youpark.no/wwwroot/apps/common/ts/utils/objects.ts","webpack:///./src/www.youpark.no/wwwroot/apps/common/ts/utils/string.ts","webpack:///./src/www.youpark.no/wwwroot/apps/common/ts/utils/strings.ts","webpack:///./src/www.youpark.no/wwwroot/apps/common/ts/youpark/lot-configuration-tabs.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/composables/useMapViewState.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/composables/data/useAppConfig.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/composables/data/usePermissions.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/composables/localization/formatters.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/composables/state/useErrorModal.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/composables/state/useLanguage.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/utils/shareInflight.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/composables/state/useNavigatingState.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/composables/state/useNavigationRouter.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/composables/state/useProfile.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/services/searchService.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/services/quickNavService.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/composables/state/useQuickNav.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/composables/state/useRouteContext.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/composables/ui/useTheme.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/composables/useDialogKeyboard.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/services/authService.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/services/profileService.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/utils/accessPolicy.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/utils/auth.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/utils/cardFlow.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/utils/documentTitle.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/layouts/DesktopTopNavbar.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/layouts/PublicDashboardShell.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/layouts/DesktopTopNavbar.vue?593c","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/dashboard-view.vue","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/layouts/PublicDashboardShell.vue?1177","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/index.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/core/utils/dashboardStylesheet.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/dashboard-view.vue?b0eb","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/guards/index.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/guards/browserUpgradeTerminalGuard.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/routes/adminRoutes.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/routes/authRoutes.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/routes/bookingsRoutes.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/routes/errorRoutes.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/routes/faqRoutes.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/routes/homeRoutes.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/routes/legalRoutes.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/routes/mapRoutes.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/routes/paymentRoutes.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/routes/profileRoutes.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/routes/remitRoutes.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/routes/subscriptionsRoutes.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/routes/youparkRoutes.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/routes/index.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/index.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/guards/translationPrefetchGuard.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/legacy.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/prefetchRoute.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/prefetchDashboardRoute.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/prefetchRouteDirective.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/router/utils.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/services/youpark/service.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/translations/index.ts","webpack:///./src/www.youpark.no/wwwroot/apps/dashboard/utils/subscriptionPurchase.ts"],"sourcesContent":["import script from \"./ThemeToggle.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./ThemeToggle.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ThemeToggle.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./ThemeToggle.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","<script setup lang=\"ts\">\nimport { computed, inject } from \"vue\";\n\nimport type { ThemeContext, ThemeMode } from \"@core/composables/ui/useTheme\";\nimport IconAuto from \"@core/icons/IconAuto.vue\";\nimport IconMoon from \"@core/icons/IconMoon.vue\";\nimport IconSun from \"@core/icons/IconSun.vue\";\n\nimport { useTranslate } from \"@common/composables/useTranslate\";\n\nconst theme = inject<ThemeContext>(\"theme\");\n\nif (!theme) {\n  throw new Error(\"ThemeToggle must be used within ThemeProvider\");\n}\n\ninterface Props {\n  layout?: \"compact\" | \"sidebar\";\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  layout: \"compact\"\n});\n\nconst translate = useTranslate();\n\nconst modes: ThemeMode[] = [\"light\", \"auto\", \"dark\"];\n\nconst isSidebar = computed(() => props.layout === \"sidebar\");\nconst containerClass = computed(() =>\n  isSidebar.value\n    ? \"flex w-full flex-col gap-2 rounded-xl border border-gray-200 dark:border-slate-700 bg-white/90 dark:bg-slate-800/90 p-2 transition-colors duration-300\"\n    : \"flex items-center gap-1 rounded-lg border border-gray-200 dark:border-slate-700 bg-white dark:bg-slate-800 p-1 transition-colors duration-300\"\n);\n\nconst currentModeIndex = computed(() => {\n  const index = modes.indexOf(theme.preference.value);\n  return index >= 0 ? index : 1; // Default to 'auto'\n});\n\nconst currentMode = computed(() => modes[currentModeIndex.value]);\n\nconst modeLabels = computed<Record<ThemeMode, string>>(() => ({\n  light: translate(\"common.theme.light\"),\n  dark: translate(\"common.theme.dark\"),\n  auto: translate(\"common.theme.auto\")\n}));\nconst shortLabels = computed<Record<ThemeMode, string>>(() => ({\n  light: translate(\"common.theme.lightShort\"),\n  dark: translate(\"common.theme.darkShort\"),\n  auto: translate(\"common.theme.autoShort\")\n}));\n\nconst toggleTheme = () => {\n  const nextIndex = (currentModeIndex.value + 1) % modes.length;\n  theme.setTheme(modes[nextIndex]);\n};\n\nconst selectMode = (mode: ThemeMode) => {\n  theme.setTheme(mode);\n};\n\nconst getIcon = (mode: ThemeMode) => {\n  switch (mode) {\n    case \"light\":\n      return IconSun;\n    case \"dark\":\n      return IconMoon;\n    case \"auto\":\n      return IconAuto;\n  }\n};\n</script>\n\n<template>\n  <div :class=\"containerClass\">\n    <template v-if=\"isSidebar\">\n      <div class=\"flex w-full items-center gap-2\">\n        <button\n          v-for=\"mode in modes\"\n          :key=\"mode\"\n          type=\"button\"\n          class=\"flex-1 inline-flex items-center justify-center gap-2 rounded-lg border px-2 py-2 text-xs font-semibold transition-colors duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-400/60 focus-visible:ring-offset-0\"\n          :class=\"\n            currentMode === mode\n              ? 'border-emerald-400/70 bg-emerald-500/15 text-emerald-800 dark:border-emerald-500/70 dark:bg-emerald-500/20 dark:text-emerald-300 shadow-sm'\n              : 'border-transparent bg-transparent text-gray-600 hover:bg-gray-100/70 dark:text-slate-300 dark:hover:bg-slate-700/70'\n          \"\n          @click=\"selectMode(mode)\"\n        >\n          <component\n            :is=\"getIcon(mode)\"\n            :class=\"[\n              'h-4 w-4',\n              currentMode === mode ? 'text-emerald-700 dark:text-emerald-300' : 'text-gray-500 dark:text-slate-300'\n            ]\"\n          />\n          <span\n            :class=\"\n              currentMode === mode ? 'text-emerald-800 dark:text-emerald-300' : 'text-gray-600 dark:text-slate-300'\n            \"\n          >\n            {{ shortLabels[mode] }}\n          </span>\n        </button>\n      </div>\n    </template>\n    <template v-else>\n      <button\n        class=\"inline-flex items-center justify-center h-10 w-10 rounded-lg text-gray-600 dark:text-white hover:bg-gray-100 dark:hover:bg-slate-700 transition-colors duration-200\"\n        :title=\"modeLabels[currentMode]\"\n        @click=\"toggleTheme\"\n      >\n        <component :is=\"getIcon(currentMode)\" class=\"h-5 w-5\" />\n      </button>\n    </template>\n  </div>\n</template>\n","import script from \"./ErrorModal.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./ErrorModal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ErrorModal.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./ErrorModal.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","<template>\n  <Teleport to=\"body\">\n    <div\n      v-if=\"isOpen\"\n      class=\"fixed inset-0 z-50 flex items-center justify-center p-4\"\n      role=\"dialog\"\n      :aria-labelledby=\"titleId\"\n      :aria-describedby=\"descriptionId\"\n      aria-modal=\"true\"\n    >\n      <div class=\"absolute inset-0 bg-black/40 backdrop-blur-sm\" @click=\"close\"></div>\n      <div\n        ref=\"panel\"\n        class=\"relative w-full max-w-md rounded-3xl bg-white p-6 shadow-2xl transition-colors duration-300 focus:outline-none dark:bg-slate-900\"\n        :class=\"resolvedVariantClasses.container\"\n        tabindex=\"-1\"\n        @keydown=\"handlePanelKeydown\"\n      >\n        <div class=\"space-y-5\">\n          <div class=\"flex items-start justify-between gap-4\">\n            <div class=\"flex items-start gap-4\">\n              <div\n                class=\"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-full\"\n                :class=\"resolvedVariantClasses.iconWrapper\"\n              >\n                <component :is=\"iconComponent\" class=\"h-6 w-6\" :class=\"resolvedVariantClasses.icon\" />\n              </div>\n              <div class=\"space-y-2\">\n                <h3 :id=\"titleId\" class=\"text-lg font-bold text-gray-900 dark:text-white\">\n                  {{ resolvedTitle }}\n                </h3>\n                <p :id=\"descriptionId\" class=\"text-sm text-gray-600 dark:text-slate-400\">\n                  {{ message }}\n                </p>\n              </div>\n            </div>\n            <button\n              class=\"rounded-full border border-gray-200 p-2 text-gray-400 transition-colors hover:border-gray-300 hover:text-gray-600 focus:outline-none focus:ring-2 focus:ring-emerald-500 focus:ring-offset-2 dark:border-slate-600 dark:text-slate-500 dark:hover:border-slate-500 dark:hover:text-slate-300\"\n              type=\"button\"\n              :aria-label=\"translate('common.close')\"\n              @click=\"close\"\n            >\n              <IconX class=\"h-5 w-5\" />\n            </button>\n          </div>\n          <div class=\"flex flex-col gap-3 sm:flex-row\">\n            <button\n              class=\"inline-flex flex-1 items-center justify-center rounded-xl px-6 py-3 text-sm font-semibold text-white shadow-sm transition-colors focus:outline-none focus:ring-2 focus:ring-emerald-500 focus:ring-offset-2\"\n              :class=\"resolvedVariantClasses.action\"\n              type=\"button\"\n              @click=\"handleAction\"\n            >\n              {{ resolvedActionLabel }}\n            </button>\n          </div>\n        </div>\n      </div>\n    </div>\n  </Teleport>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onUnmounted, ref, toRefs, watch } from \"vue\";\n\nimport { useDialogKeyboard } from \"@core/composables/useDialogKeyboard\";\nimport IconAlertCircle from \"@core/icons/IconAlertCircle.vue\";\nimport IconCheck from \"@core/icons/IconCheck.vue\";\nimport IconX from \"@core/icons/IconX.vue\";\n\nimport { useTranslate } from \"@common/composables/useTranslate\";\n\nconst translate = useTranslate();\n\ninterface Props {\n  isOpen: boolean;\n  title?: string;\n  message: string;\n  actionLabel?: string;\n  variant?: \"error\" | \"success\";\n}\n\nconst props = defineProps<Props>();\nconst { isOpen, message } = toRefs(props);\nconst titleId = `error-modal-title-${Math.random().toString(36).slice(2)}`;\nconst descriptionId = `error-modal-description-${Math.random().toString(36).slice(2)}`;\nconst resolvedVariant = computed(() => props.variant ?? \"error\");\nconst iconComponent = computed(() => (resolvedVariant.value === \"success\" ? IconCheck : IconAlertCircle));\nconst resolvedVariantClasses = computed(() => {\n  if (resolvedVariant.value === \"success\") {\n    return {\n      container: \"border border-emerald-100 dark:border-emerald-900/40\",\n      iconWrapper: \"bg-emerald-50 dark:bg-emerald-900/30\",\n      icon: \"text-emerald-700 dark:text-emerald-400\",\n      action: \"bg-emerald-700 hover:bg-emerald-800\"\n    };\n  }\n\n  return {\n    container: \"border border-rose-100 dark:border-rose-900/40\",\n    iconWrapper: \"bg-rose-50 dark:bg-rose-900/30\",\n    icon: \"text-rose-600 dark:text-rose-400\",\n    action: \"bg-rose-600 hover:bg-rose-700 dark:bg-rose-500 dark:hover:bg-rose-400\"\n  };\n});\nconst resolvedTitle = computed(() => {\n  const key = resolvedVariant.value === \"success\" ? \"common.successTitle\" : \"common.errorTitle\";\n  return props.title ?? translate(key);\n});\nconst resolvedActionLabel = computed(() => props.actionLabel ?? translate(\"common.dismissButton\"));\n\nconst emit = defineEmits<{\n  close: [];\n  confirm: [];\n}>();\n\nconst close = () => {\n  emit(\"close\");\n};\n\nconst handleAction = () => {\n  emit(\"confirm\");\n  close();\n};\n\nconst panel = ref<HTMLElement | null>(null);\nlet previouslyFocused: HTMLElement | null = null;\n\nconst restoreFocus = () => {\n  const target = previouslyFocused;\n  previouslyFocused = null;\n  if (target?.isConnected) {\n    target.focus();\n  }\n};\n\nconst { handlePanelKeydown } = useDialogKeyboard(\n  panel,\n  () => isOpen.value,\n  () => close()\n);\n\nonUnmounted(() => {\n  restoreFocus();\n});\n\nwatch(\n  isOpen,\n  value => {\n    if (!value) {\n      restoreFocus();\n      return;\n    }\n    previouslyFocused = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n    void nextTick(() => panel.value?.focus());\n  },\n  { immediate: true }\n);\n</script>\n","import script from \"./LanguageSwitcher.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./LanguageSwitcher.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./LanguageSwitcher.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./LanguageSwitcher.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","<template>\n  <div :class=\"['relative', compact ? 'inline-block' : 'w-full', 'z-50']\">\n    <button\n      ref=\"buttonRef\"\n      type=\"button\"\n      :class=\"[\n        'group relative rounded-xl bg-gradient-to-br from-green-50 dark:from-slate-700 to-emerald-50 dark:to-slate-800 border-2 border-green-200/50 dark:border-slate-600 hover:border-green-300 dark:hover:border-slate-500 transition-all duration-200 shadow-sm hover:shadow-md',\n        compact ? 'flex items-center gap-2 rounded-full px-3 py-1.5' : 'w-full p-3'\n      ]\"\n      :aria-busy=\"isLanguageLoading\"\n      :disabled=\"isLanguageLoading\"\n      @click=\"toggleDropdown\"\n    >\n      <div v-if=\"compact\" class=\"flex items-center justify-center\">\n        <span class=\"text-2xl\">{{ currentLanguage.flag }}</span>\n      </div>\n      <div v-else class=\"flex items-center justify-between\">\n        <div class=\"flex items-center gap-3\">\n          <div class=\"w-8 h-8 rounded-full bg-green-500 dark:bg-emerald-600 flex items-center justify-center shadow-sm\">\n            <IconGlobe class=\"w-4 h-4 text-white\" />\n          </div>\n          <div class=\"text-left\">\n            <div\n              v-translate=\"'language'\"\n              class=\"text-xs font-medium text-emerald-700 dark:text-emerald-400 uppercase tracking-wider\"\n            ></div>\n            <div class=\"text-sm font-semibold text-gray-900 dark:text-white\">\n              {{ currentLanguage.flag }} {{ currentLanguage.nativeName }}\n            </div>\n          </div>\n        </div>\n        <IconChevronDown\n          v-if=\"!isLanguageLoading\"\n          :class=\"[\n            'w-5 h-5 text-emerald-700 dark:text-emerald-400 transition-transform duration-200',\n            showDropdown ? 'rotate-180' : ''\n          ]\"\n        />\n      </div>\n\n      <LoadingSpinner\n        v-if=\"isLanguageLoading\"\n        class=\"absolute right-3 top-1/2 h-4 w-4 -translate-y-1/2 text-emerald-700 dark:text-emerald-400\"\n        size=\"small\"\n      />\n    </button>\n\n    <div v-if=\"showDropdown\" :class=\"dropdownClasses\" :style=\"dropdownStyle\">\n      <button\n        v-for=\"option in languageOptions\"\n        :key=\"option.code\"\n        type=\"button\"\n        :class=\"[\n          'w-full flex items-center gap-3 px-4 py-3 transition-colors hover:bg-green-50 dark:hover:bg-slate-700',\n          language === option.code ? 'bg-green-100 dark:bg-slate-700/50' : ''\n        ]\"\n        @click=\"selectLanguage(option.code)\"\n      >\n        <span class=\"text-2xl\">{{ option.flag }}</span>\n        <div class=\"flex-1 text-left\">\n          <div :class=\"['font-medium text-gray-900 dark:text-white', compact ? 'text-sm' : '']\">\n            {{ option.nativeName }}\n          </div>\n          <div class=\"text-xs text-gray-500 dark:text-slate-400\">{{ option.name }}</div>\n        </div>\n        <IconCheck\n          v-if=\"language === option.code\"\n          :class=\"['text-emerald-700 dark:text-emerald-400', compact ? 'w-4 h-4' : 'w-5 h-5']\"\n        />\n      </button>\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, onMounted, ref, watch } from \"vue\";\n\nimport { useLanguage, type Language } from \"@core/composables/state/useLanguage\";\nimport { useRouterContext } from \"@core/composables/state/useRouteContext\";\nimport IconCheck from \"@core/icons/IconCheck.vue\";\nimport IconChevronDown from \"@core/icons/IconChevronDown.vue\";\nimport IconGlobe from \"@core/icons/IconGlobe.vue\";\n\nimport LoadingSpinner from \"./LoadingSpinner.vue\";\n\ninterface Props {\n  compact?: boolean;\n  dropdownDirection?: \"bottom\" | \"right\" | \"left\";\n}\n\nconst { language, currentLanguage, languageOptions, setLanguage, isLanguageLoading } = useLanguage();\nconst showDropdown = ref(false);\nconst buttonRef = ref<HTMLElement>();\nconst dropdownTop = ref(\"0px\");\nconst router = useRouterContext();\nlet removeAfterEach: (() => void) | undefined;\nconst props = withDefaults(defineProps<Props>(), {\n  compact: false,\n  dropdownDirection: \"bottom\"\n});\n\nconst dropdownClasses = computed(() => {\n  const baseClasses =\n    \"z-[60] bg-white dark:bg-slate-800 rounded-xl shadow-xl border border-gray-200 dark:border-slate-700 overflow-hidden transition-colors duration-300\";\n\n  if (props.compact && props.dropdownDirection === \"right\") {\n    return `fixed left-20 w-56 ${baseClasses}`;\n  }\n\n  const classes = [`absolute ${baseClasses}`];\n\n  if (props.compact) {\n    if (props.dropdownDirection === \"left\") {\n      classes.push(\"right-full top-0 mr-3 w-56\");\n      return classes.join(\" \");\n    }\n\n    classes.push(\"mt-2 top-full right-0 w-56\");\n    return classes.join(\" \");\n  }\n\n  if (props.dropdownDirection === \"right\") {\n    classes.push(\"ml-3 left-full top-0 w-full\");\n    return classes.join(\" \");\n  }\n\n  if (props.dropdownDirection === \"left\") {\n    classes.push(\"mr-3 right-full top-0 w-full\");\n    return classes.join(\" \");\n  }\n\n  classes.push(\"mt-2 top-full left-0 w-full\");\n  return classes.join(\" \");\n});\n\nconst dropdownStyle = computed(() => {\n  if (props.compact && props.dropdownDirection === \"right\") {\n    return { top: dropdownTop.value };\n  }\n  return {};\n});\n\nconst toggleDropdown = (event: MouseEvent) => {\n  if (isLanguageLoading.value) {\n    return;\n  }\n  if (!showDropdown.value && props.compact && props.dropdownDirection === \"right\") {\n    const top = event.clientY || parseFloat(dropdownTop.value) || window.innerHeight * 0.1;\n    dropdownTop.value = `${top}px`;\n  }\n  showDropdown.value = !showDropdown.value;\n};\n\nconst selectLanguage = (lang: Language) => {\n  setLanguage(lang);\n  showDropdown.value = false;\n};\n\nwatch(\n  () => props.compact,\n  () => {\n    showDropdown.value = false;\n  }\n);\n\nonMounted(() => {\n  removeAfterEach = router.afterEach(() => {\n    showDropdown.value = false;\n  });\n});\n\nonBeforeUnmount(() => {\n  if (removeAfterEach) {\n    removeAfterEach();\n    removeAfterEach = undefined;\n  }\n});\n</script>\n","import script from \"./LoadingSpinner.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./LoadingSpinner.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./LoadingSpinner.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./LoadingSpinner.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","<template>\n  <div :class=\"containerClass\">\n    <div class=\"relative\" :class=\"spinnerSizeClass\">\n      <div :class=\"ringTrackClass\"></div>\n      <div :class=\"ringSpinnerClass\"></div>\n      <div class=\"absolute inset-0 flex items-center justify-center\">\n        <IconActivity :class=\"iconSizeClass\" />\n      </div>\n    </div>\n    <p v-if=\"message\" class=\"text-center text-sm font-medium text-gray-600 dark:text-slate-400\">{{ message }}</p>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport IconActivity from \"@core/icons/IconActivity.vue\";\n\ninterface Props {\n  size?: \"small\" | \"medium\" | \"large\";\n  message?: string;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  size: \"medium\",\n  message: undefined\n});\n\nconst hasMessage = computed(() => Boolean(props.message));\nconst showTrack = computed(() => props.size !== \"small\");\n\nconst sizeMap = {\n  small: {\n    spinner: \"h-5 w-5\",\n    ring: \"border-2\",\n    icon: \"h-3 w-3\"\n  },\n  medium: {\n    spinner: \"h-10 w-10\",\n    ring: \"border-4\",\n    icon: \"h-4 w-4\"\n  },\n  large: {\n    spinner: \"h-14 w-14\",\n    ring: \"border-4\",\n    icon: \"h-5 w-5\"\n  }\n} as const;\n\nconst resolvedSize = computed(() => sizeMap[props.size] ?? sizeMap.medium);\n\nconst spinnerSizeClass = computed(() => resolvedSize.value.spinner);\nconst iconSizeClass = computed(() => resolvedSize.value.icon);\n\nconst ringTrackClass = computed(() => {\n  const ringWidth = resolvedSize.value.ring;\n  if (!showTrack.value) {\n    return \"hidden\";\n  }\n  return [\n    \"absolute inset-0 rounded-full border-solid\",\n    ringWidth,\n    \"border-emerald-200/60 dark:border-emerald-900/50\"\n  ].join(\" \");\n});\n\nconst ringSpinnerClass = computed(() => {\n  const ringWidth = resolvedSize.value.ring;\n  return [\n    \"absolute inset-0 rounded-full border-solid animate-spin\",\n    ringWidth,\n    \"border-emerald-200/30 dark:border-emerald-900/30 border-t-emerald-600 dark:border-t-emerald-400\"\n  ].join(\" \");\n});\n\nconst containerClass = computed(() => {\n  const base = \"inline-flex items-center justify-center text-emerald-700 dark:text-emerald-400\";\n  const withMessage = hasMessage.value ? \"flex-col gap-3 py-4 px-3\" : \"\";\n  return [base, withMessage].filter(Boolean).join(\" \");\n});\n</script>\n","<template>\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    viewBox=\"0 0 24 24\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    stroke-width=\"2\"\n    stroke-linecap=\"round\"\n    stroke-linejoin=\"round\"\n  >\n    <!-- Minimal geometric design -->\n    <g transform=\"rotate(-15 12 12)\">\n      <!-- Two overlapping circles representing 48 hours -->\n      <circle cx=\"9\" cy=\"12\" r=\"7\" opacity=\"0.3\" fill=\"currentColor\" />\n      <circle cx=\"15\" cy=\"12\" r=\"7\" opacity=\"0.3\" fill=\"currentColor\" />\n\n      <!-- Outline circles -->\n      <circle cx=\"9\" cy=\"12\" r=\"7\" fill=\"none\" />\n      <circle cx=\"15\" cy=\"12\" r=\"7\" fill=\"none\" />\n    </g>\n\n    <!-- Modern 48 typography -->\n    <text\n      x=\"12\"\n      y=\"14\"\n      text-anchor=\"middle\"\n      font-size=\"8\"\n      font-weight=\"300\"\n      fill=\"currentColor\"\n      style=\"\n        font-family:\n          system-ui,\n          -apple-system;\n      \"\n    >\n      48\n    </text>\n\n    <!-- Subtle payment indicator -->\n    <circle cx=\"12\" cy=\"12\" r=\"11\" fill=\"none\" stroke-dasharray=\"2 3\" opacity=\"0.5\">\n      <animateTransform\n        attributeName=\"transform\"\n        attributeType=\"XML\"\n        type=\"rotate\"\n        from=\"0 12 12\"\n        to=\"360 12 12\"\n        dur=\"10s\"\n        repeatCount=\"indefinite\"\n      />\n    </circle>\n  </svg>\n</template>\n","import { render } from \"./IconPayWithin48_Modern.vue.js?vue&type=template&id=3a17e137!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconPayWithin48_Modern.vue?vue&type=template&id=3a17e137\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"space-y-2\">\n    <template v-for=\"item in sortedMenuItems\" :key=\"item.key\">\n      <RouterLink\n        v-if=\"item.route\"\n        v-prefetch-route=\"item.route\"\n        :to=\"{ name: item.route }\"\n        :class=\"itemClass(item.activeViews)\"\n        @click=\"handleClose\"\n      >\n        <component :is=\"item.icon\" class=\"w-5 h-5\" />\n        <span>{{ translate(`nav.${item.key}`) }}</span>\n      </RouterLink>\n      <button v-else type=\"button\" :class=\"itemClass()\" @click=\"handleAction(item.action)\">\n        <component :is=\"item.icon\" class=\"w-5 h-5\" />\n        <span>{{ translate(`nav.${item.key}`) }}</span>\n      </button>\n    </template>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport type { ViewType } from \"@core/composables/state/useNavigation\";\nimport IconBankNote from \"@core/icons/IconBankNote.vue\";\nimport IconBook from \"@core/icons/IconBook.vue\";\nimport IconBriefcase from \"@core/icons/IconBriefcase.vue\";\nimport IconCamera from \"@core/icons/IconCamera.vue\";\nimport IconCar from \"@core/icons/IconCar.vue\";\nimport IconChartBar from \"@core/icons/IconChartBar.vue\";\nimport IconCheckCircle from \"@core/icons/IconCheckCircle.vue\";\nimport IconDatabase from \"@core/icons/IconDatabase.vue\";\nimport IconDownload from \"@core/icons/IconDownload.vue\";\nimport IconServer from \"@core/icons/IconServer.vue\";\nimport IconShield from \"@core/icons/IconShield.vue\";\nimport IconSignal from \"@core/icons/IconSignal.vue\";\nimport IconUsers from \"@core/icons/IconUsers.vue\";\nimport IconWindow from \"@core/icons/IconWindow.vue\";\nimport { RouterLink } from \"vue-router\";\n\nimport { useTranslate } from \"@common/composables/useTranslate\";\n\nimport { sortAdminMenuItemsByLabel, type AdminMenuAction, type AdminMenuItem } from \"./adminNavigationMenuItems\";\n\nimport { prefetchRouteDirective as vPrefetchRoute } from \"@/router/prefetchRouteDirective\";\n\ntype AdminPermissions = {\n  statistics: boolean;\n  telemetry: boolean;\n  applications: boolean;\n  users: boolean;\n  organizations: boolean;\n  audits: boolean;\n  remits: boolean;\n  vehicleRegistry: boolean;\n  manualApproval: boolean;\n  trafficControl: boolean;\n  system: boolean;\n  camerasOverview: boolean;\n};\n\nconst props = defineProps<{\n  permissions: AdminPermissions;\n  canAccessYouParkCustomer: boolean;\n  activeView: ViewType;\n}>();\n\nconst emit = defineEmits<{\n  (e: \"close\"): void;\n  (e: \"navigate-customers\"): void;\n  (e: \"navigate-customers-remit\"): void;\n}>();\n\nconst translate = useTranslate();\n\nconst menuItems = computed<AdminMenuItem[]>(() => [\n  {\n    key: \"statistics\",\n    icon: IconChartBar,\n    visible: props.permissions.statistics,\n    route: \"statistics\",\n    activeViews: [\"statistics\"]\n  },\n  {\n    key: \"telemetry\",\n    icon: IconSignal,\n    visible: props.permissions.telemetry,\n    route: \"telemetry\",\n    activeViews: [\"telemetry\"]\n  },\n  {\n    key: \"applications\",\n    icon: IconWindow,\n    visible: props.permissions.applications,\n    route: \"applications\",\n    activeViews: [\"applications\"]\n  },\n  {\n    key: \"users\",\n    icon: IconUsers,\n    visible: props.permissions.users,\n    route: \"users\",\n    activeViews: [\"users\", \"user-edit\", \"user-create\"]\n  },\n  {\n    key: \"organizations\",\n    icon: IconBook,\n    visible: props.permissions.organizations,\n    route: \"organizations\",\n    activeViews: [\n      \"organizations\",\n      \"organizations-create\",\n      \"organizations-details\",\n      \"organizations-details-applications\",\n      \"organizations-details-users\",\n      \"organizations-details-subs\",\n      \"organizations-details-api-users\"\n    ]\n  },\n  { key: \"audits\", icon: IconDatabase, visible: props.permissions.audits, route: \"audits\", activeViews: [\"audits\"] },\n  { key: \"exports\", icon: IconDownload, visible: props.permissions.audits, route: \"exports\", activeViews: [\"exports\"] },\n  { key: \"remit\", icon: IconBankNote, visible: props.permissions.remits, action: \"navigate-customers-remit\" },\n  {\n    key: \"vehicleRegistry\",\n    icon: IconCar,\n    visible: props.permissions.vehicleRegistry,\n    route: \"vehicle-registry\",\n    activeViews: [\"vehicle-registry\"]\n  },\n  {\n    key: \"manualApproval\",\n    icon: IconCheckCircle,\n    visible: props.permissions.manualApproval,\n    route: \"manual-approval\",\n    activeViews: [\"manual-approval\"]\n  },\n  {\n    key: \"camerasOverview\",\n    icon: IconCamera,\n    visible: props.permissions.camerasOverview,\n    route: \"cameras-overview\",\n    activeViews: [\"cameras-overview\"]\n  },\n  {\n    key: \"trafficControl\",\n    icon: IconShield,\n    visible: props.permissions.trafficControl,\n    route: \"traffic-control\",\n    activeViews: [\"traffic-control\"]\n  },\n  { key: \"system\", icon: IconServer, visible: props.permissions.system, route: \"system\", activeViews: [\"system\"] },\n  {\n    key: \"youparkCustomers\",\n    icon: IconBriefcase,\n    visible: props.canAccessYouParkCustomer,\n    action: \"navigate-customers\"\n  }\n]);\n\nconst sortedMenuItems = computed(() =>\n  sortAdminMenuItemsByLabel(\n    menuItems.value.filter(item => item.visible),\n    translate\n  )\n);\n\nconst handleClose = () => {\n  emit(\"close\");\n};\n\nconst handleAction = (action?: AdminMenuAction) => {\n  handleClose();\n  if (action === \"navigate-customers\") {\n    emit(\"navigate-customers\");\n  } else if (action === \"navigate-customers-remit\") {\n    emit(\"navigate-customers-remit\");\n  }\n};\n\nconst baseClass = \"w-full flex items-center gap-3 px-4 py-3 rounded-lg transition-all duration-200 text-left\";\nconst inactiveClass =\n  \"text-gray-600 dark:text-white hover:bg-gray-100 dark:hover:bg-slate-800 hover:text-gray-900 dark:hover:text-white\";\nconst activeClass = \"bg-emerald-700 text-white font-medium shadow-sm\";\n\nconst itemClass = (view?: ViewType | ViewType[]) => {\n  const views = Array.isArray(view) ? view : view ? [view] : [];\n  const isActive = views.length > 0 && views.includes(props.activeView);\n  return isActive ? `${baseClass} ${activeClass}` : `${baseClass} ${inactiveClass}`;\n};\n</script>\n","import type { Component } from \"vue\";\n\nimport type { ViewType } from \"@core/composables/state/useNavigation\";\n\nexport type AdminMenuKey =\n  | \"statistics\"\n  | \"telemetry\"\n  | \"applications\"\n  | \"users\"\n  | \"organizations\"\n  | \"audits\"\n  | \"exports\"\n  | \"remit\"\n  | \"vehicleRegistry\"\n  | \"manualApproval\"\n  | \"camerasOverview\"\n  | \"trafficControl\"\n  | \"system\"\n  | \"youparkCustomers\";\n\nexport type AdminMenuAction = \"navigate-customers\" | \"navigate-customers-remit\";\n\ntype AdminMenuItemBase = {\n  key: AdminMenuKey;\n  icon: Component;\n  visible: boolean;\n};\n\nexport type AdminMenuItem =\n  | (AdminMenuItemBase & { route: ViewType; activeViews: ViewType[]; action?: never })\n  | (AdminMenuItemBase & { action: AdminMenuAction; route?: never; activeViews?: never });\n\nexport function sortAdminMenuItemsByLabel<T extends { key: AdminMenuKey }>(\n  items: readonly T[],\n  translate: (key: string) => string\n): T[] {\n  return [...items].sort((a, b) => translate(`nav.${a.key}`).localeCompare(translate(`nav.${b.key}`), \"nb\"));\n}\n","import script from \"./NavigationMenu.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./NavigationMenu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NavigationMenu.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./NavigationMenu.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","<template>\n  <nav :class=\"compact ? 'flex flex-col items-center gap-1' : 'space-y-1'\">\n    <div v-if=\"lots.length > 0 && !compact\" class=\"w-full\">\n      <button\n        type=\"button\"\n        class=\"w-full flex items-center justify-between px-4 py-2 text-xs font-semibold text-gray-500 dark:text-slate-400 uppercase tracking-wider hover:text-gray-700 dark:hover:text-slate-300 transition-colors\"\n        @click=\"toggleMyAreas\"\n      >\n        <div class=\"flex items-center gap-2\">\n          <IconMapPin class=\"w-4 h-4\" />\n          <span v-translate=\"'nav.myAreas'\"></span>\n        </div>\n        <IconChevronDown\n          :class=\"['w-4 h-4 transition-transform duration-200', isMyAreasExpanded ? 'rotate-180' : '']\"\n        />\n      </button>\n\n      <div\n        ref=\"myAreasContentRef\"\n        :style=\"myAreasContentStyle\"\n        :class=\"[\n          'overflow-hidden transition-[height,opacity] duration-200 ease-out',\n          isMyAreasExpanded ? 'opacity-100 overflow-y-auto' : 'opacity-0 pointer-events-none'\n        ]\"\n      >\n        <a\n          v-for=\"lot in lots\"\n          :key=\"lot.organizationId\"\n          v-prefetch-route=\"`/dashboard/youpark/${lot.organizationId}`\"\n          :href=\"`/dashboard/youpark/${lot.organizationId}`\"\n          class=\"w-full flex items-center gap-3 px-4 py-3 rounded-lg transition-all duration-200 text-gray-600 dark:text-white hover:bg-gray-100 dark:hover:bg-slate-800 hover:text-gray-900 dark:hover:text-white\"\n        >\n          <span>{{ lot.organizationName }}</span>\n        </a>\n      </div>\n    </div>\n\n    <div v-if=\"showAdministrationMenu\" :class=\"compact ? 'relative' : 'w-full'\">\n      <button\n        v-if=\"compact\"\n        type=\"button\"\n        :class=\"[\n          'flex items-center justify-center w-10 h-10 rounded-lg transition-all duration-200',\n          showAdminPopup\n            ? 'bg-gray-100 dark:bg-slate-800'\n            : 'text-gray-600 dark:text-white hover:bg-gray-100 dark:hover:bg-slate-800'\n        ]\"\n        :title=\"translate('nav.administration')\"\n        @click=\"toggleAdminPopup\"\n      >\n        <IconMenu class=\"w-5 h-5\" />\n      </button>\n\n      <button\n        v-if=\"!compact\"\n        type=\"button\"\n        class=\"w-full flex items-center justify-between px-4 py-2 text-xs font-semibold text-gray-500 uppercase tracking-wider hover:text-gray-700 transition-colors dark:text-slate-400 dark:hover:text-slate-300\"\n        @click=\"toggleAdministration\"\n      >\n        <div class=\"flex items-center gap-2\">\n          <IconMenu class=\"w-4 h-4\" />\n          <span v-translate=\"'nav.administration'\"></span>\n        </div>\n        <IconChevronDown\n          :class=\"['w-4 h-4 transition-transform duration-200', isAdministrationExpanded ? 'rotate-180' : '']\"\n        />\n      </button>\n\n      <div\n        v-if=\"compact && showAdminPopup\"\n        class=\"fixed left-20 z-50 w-64 bg-white dark:bg-slate-800 rounded-xl shadow-xl border border-gray-200 dark:border-slate-700 overflow-hidden transition-colors duration-300 max-h-[80vh] overflow-y-auto\"\n        :style=\"{ top: adminPopupTop }\"\n      >\n        <div class=\"p-2\">\n          <AdminNavigationMenu\n            :permissions=\"permissions\"\n            :can-access-you-park-customer=\"canAccessYouParkCustomer\"\n            :active-view=\"activeView\"\n            @close=\"closeAdminPopup\"\n            @navigate-customers=\"\n              () => {\n                handleNavigateToYouparkCustomers();\n                closeAdminPopup();\n              }\n            \"\n            @navigate-customers-remit=\"\n              () => {\n                handleNavigateToYouparkCustomersRemit();\n                closeAdminPopup();\n              }\n            \"\n          />\n        </div>\n      </div>\n\n      <div\n        v-if=\"!compact\"\n        ref=\"adminContentRef\"\n        :style=\"adminContentStyle\"\n        :class=\"[\n          'overflow-hidden transition-[height,opacity] duration-200 ease-out',\n          isAdministrationExpanded ? 'opacity-100' : 'opacity-0 pointer-events-none'\n        ]\"\n      >\n        <AdminNavigationMenu\n          :permissions=\"permissions\"\n          :can-access-you-park-customer=\"canAccessYouParkCustomer\"\n          :active-view=\"activeView\"\n          @navigate-customers=\"handleNavigateToYouparkCustomers\"\n          @navigate-customers-remit=\"handleNavigateToYouparkCustomersRemit\"\n        />\n      </div>\n    </div>\n\n    <div\n      :class=\"[\n        compact ? '' : sectionSpacing,\n        isAdministrationExpanded && !compact ? 'border-t border-slate-200 pt-2 dark:border-slate-800' : ''\n      ]\"\n    >\n      <button\n        v-if=\"!isRestrictedView('payment')\"\n        v-prefetch-route=\"'payment'\"\n        :class=\"[\n          compact\n            ? 'flex items-center justify-center w-10 h-10 rounded-lg transition-all duration-200'\n            : 'w-full flex items-center gap-3 px-4 py-3 rounded-lg transition-all duration-200 border border-transparent',\n          isPaymentViewActive\n            ? 'bg-emerald-700 text-white font-medium shadow-sm'\n            : isRestrictedView('payment')\n              ? 'text-gray-500 dark:text-slate-400 border border-dashed border-emerald-400/40 bg-emerald-50/40 dark:bg-slate-800/40 hover:bg-emerald-50/50 dark:hover:bg-slate-800/50'\n              : 'text-gray-600 dark:text-white hover:bg-gray-100 dark:hover:bg-slate-800 hover:text-gray-900 dark:hover:text-white'\n        ]\"\n        :title=\"\n          compact ? translate('nav.paymentQuick') : isRestrictedView('payment') ? translate('nav.signIn') : undefined\n        \"\n        @click=\"handleNavigate('payment')\"\n      >\n        <IconPayWithin48Modern class=\"w-5 h-5\" />\n        <span v-if=\"!compact\" v-translate=\"'nav.paymentQuick'\"></span>\n      </button>\n\n      <RouterLink\n        v-prefetch-route=\"'map-parking'\"\n        :to=\"{ name: 'map-parking' }\"\n        :class=\"[\n          compact\n            ? 'flex items-center justify-center w-10 h-10 rounded-lg transition-all duration-200'\n            : 'w-full flex items-center gap-3 px-4 py-3 rounded-lg transition-all duration-200 border border-transparent',\n          activeView === 'map-parking'\n            ? 'bg-emerald-700 text-white font-medium shadow-sm'\n            : 'text-gray-600 dark:text-white hover:bg-gray-100 dark:hover:bg-slate-800 hover:text-gray-900 dark:hover:text-white'\n        ]\"\n        :title=\"compact ? translate('nav.parkering') : undefined\"\n        @click.prevent=\"handleMapNavigate('map-parking')\"\n      >\n        <IconParking class=\"w-5 h-5\" />\n        <span v-if=\"!compact\" v-translate=\"'nav.parkering'\"></span>\n      </RouterLink>\n\n      <RouterLink\n        v-prefetch-route=\"'map-toll'\"\n        :to=\"{ name: 'map-toll' }\"\n        :class=\"[\n          compact\n            ? 'flex items-center justify-center w-10 h-10 rounded-lg transition-all duration-200'\n            : 'w-full flex items-center gap-3 px-4 py-3 rounded-lg transition-all duration-200 border border-transparent',\n          activeView === 'map-toll'\n            ? 'bg-emerald-700 text-white font-medium shadow-sm'\n            : 'text-gray-600 dark:text-white hover:bg-gray-100 dark:hover:bg-slate-800 hover:text-gray-900 dark:hover:text-white'\n        ]\"\n        :title=\"compact ? translate('nav.bomvei') : undefined\"\n        @click.prevent=\"handleMapNavigate('map-toll')\"\n      >\n        <IconRoad class=\"w-5 h-5\" />\n        <span v-if=\"!compact\" v-translate=\"'nav.bomvei'\"></span>\n      </RouterLink>\n    </div>\n\n    <div\n      v-if=\"hasMainNavigationItems\"\n      :class=\"[compact ? '' : sectionSpacing, !compact ? 'border-t border-slate-200 pt-2 dark:border-slate-800' : '']\"\n    >\n      <button\n        v-if=\"!isRestrictedView('home')\"\n        v-prefetch-route=\"'home'\"\n        :class=\"[\n          compact\n            ? 'flex items-center justify-center w-10 h-10 rounded-lg transition-all duration-200'\n            : 'w-full flex items-center gap-3 px-4 py-3 rounded-lg transition-all duration-200 border border-transparent',\n          activeView === 'home'\n            ? 'bg-emerald-700 text-white font-medium shadow-sm'\n            : isRestrictedView('home')\n              ? 'text-gray-500 dark:text-slate-400 border border-dashed border-emerald-400/40 bg-emerald-50/40 dark:bg-slate-800/40 hover:bg-emerald-50/50 dark:hover:bg-slate-800/50'\n              : 'text-gray-600 dark:text-white hover:bg-gray-100 dark:hover:bg-slate-800 hover:text-gray-900 dark:hover:text-white'\n        ]\"\n        :title=\"compact ? translate('nav.home') : isRestrictedView('home') ? translate('nav.signIn') : undefined\"\n        @click=\"handleNavigate('home')\"\n      >\n        <IconHome class=\"w-5 h-5\" />\n        <span v-if=\"!compact\" v-translate=\"'nav.home'\"></span>\n      </button>\n      <button\n        v-if=\"!isRestrictedView('profile')\"\n        v-prefetch-route=\"'profile'\"\n        :class=\"[\n          compact\n            ? 'flex items-center justify-center w-10 h-10 rounded-lg transition-all duration-200'\n            : 'w-full flex items-center gap-3 px-4 py-3 rounded-lg transition-all duration-200 border border-transparent',\n          activeView === 'profile'\n            ? 'bg-emerald-700 text-white font-medium shadow-sm'\n            : isRestrictedView('profile')\n              ? 'text-gray-500 dark:text-slate-400 border border-dashed border-emerald-400/40 bg-emerald-50/40 dark:bg-slate-800/40 hover:bg-emerald-50/50 dark:hover:bg-slate-800/50'\n              : 'text-gray-600 dark:text-white hover:bg-gray-100 dark:hover:bg-slate-800 hover:text-gray-900 dark:hover:text-white'\n        ]\"\n        :title=\"compact ? translate('nav.profile') : isRestrictedView('profile') ? translate('nav.signIn') : undefined\"\n        @click=\"handleNavigate('profile')\"\n      >\n        <IconUser class=\"w-5 h-5\" />\n        <span v-if=\"!compact\" v-translate=\"'nav.profile'\"></span>\n      </button>\n      <button\n        v-if=\"!isRestrictedView('subscriptions')\"\n        v-prefetch-route=\"'subscriptions'\"\n        :class=\"[\n          compact\n            ? 'flex items-center justify-center w-10 h-10 rounded-lg transition-all duration-200'\n            : 'w-full flex items-center gap-3 px-4 py-3 rounded-lg transition-all duration-200 border border-transparent',\n          isSubscriptionsActive\n            ? 'bg-emerald-700 text-white font-medium shadow-sm'\n            : isRestrictedView('subscriptions')\n              ? 'text-gray-500 dark:text-slate-400 border border-dashed border-emerald-400/40 bg-emerald-50/40 dark:bg-slate-800/40 hover:bg-emerald-50/50 dark:hover:bg-slate-800/50'\n              : 'text-gray-600 dark:text-white hover:bg-gray-100 dark:hover:bg-slate-800 hover:text-gray-900 dark:hover:text-white'\n        ]\"\n        :title=\"\n          compact\n            ? translate('nav.subscriptions')\n            : isRestrictedView('subscriptions')\n              ? translate('nav.signIn')\n              : undefined\n        \"\n        @click=\"handleNavigate('subscriptions')\"\n      >\n        <IconSubscription class=\"w-5 h-5\" />\n        <span v-if=\"!compact\" v-translate=\"'nav.subscriptions'\"></span>\n      </button>\n      <button\n        v-if=\"!isRestrictedView('vehicles')\"\n        v-prefetch-route=\"'vehicles'\"\n        :class=\"[\n          compact\n            ? 'flex items-center justify-center w-10 h-10 rounded-lg transition-all duration-200'\n            : 'w-full flex items-center gap-3 px-4 py-3 rounded-lg transition-all duration-200 border border-transparent',\n          isVehiclesActive\n            ? 'bg-emerald-700 text-white font-medium shadow-sm'\n            : isRestrictedView('vehicles')\n              ? 'text-gray-500 dark:text-slate-400 border border-dashed border-emerald-400/40 bg-emerald-50/40 dark:bg-slate-800/40 hover:bg-emerald-50/50 dark:hover:bg-slate-800/50'\n              : 'text-gray-600 dark:text-white hover:bg-gray-100 dark:hover:bg-slate-800 hover:text-gray-900 dark:hover:text-white'\n        ]\"\n        :title=\"\n          compact ? translate('nav.vehicles') : isRestrictedView('vehicles') ? translate('nav.signIn') : undefined\n        \"\n        @click=\"handleNavigate('vehicles')\"\n      >\n        <IconCar class=\"w-5 h-5\" />\n        <span v-if=\"!compact\" v-translate=\"'nav.vehicles'\"></span>\n      </button>\n      <button\n        v-if=\"!isRestrictedView('payment-sources')\"\n        v-prefetch-route=\"'payment-sources'\"\n        :class=\"[\n          compact\n            ? 'flex items-center justify-center w-10 h-10 rounded-lg transition-all duration-200'\n            : 'w-full flex items-center gap-3 px-4 py-3 rounded-lg transition-all duration-200 border border-transparent',\n          isPaymentSourcesActive\n            ? 'bg-emerald-700 text-white font-medium shadow-sm'\n            : isRestrictedView('payment-sources')\n              ? 'text-gray-500 dark:text-slate-400 border border-dashed border-emerald-400/40 bg-emerald-50/40 dark:bg-slate-800/40 hover:bg-emerald-50/50 dark:hover:bg-slate-800/50'\n              : 'text-gray-600 dark:text-white hover:bg-gray-100 dark:hover:bg-slate-800 hover:text-gray-900 dark:hover:text-white'\n        ]\"\n        :title=\"\n          compact\n            ? translate('nav.paymentSource')\n            : isRestrictedView('payment-sources')\n              ? translate('nav.signIn')\n              : undefined\n        \"\n        @click=\"handleNavigate('payment-sources')\"\n      >\n        <IconCreditCard class=\"w-5 h-5\" />\n        <span v-if=\"!compact\" v-translate=\"'nav.paymentSource'\"></span>\n      </button>\n      <button\n        v-if=\"!isRestrictedView('bookings')\"\n        v-prefetch-route=\"'bookings'\"\n        :class=\"[\n          compact\n            ? 'flex items-center justify-center w-10 h-10 rounded-lg transition-all duration-200'\n            : 'w-full flex items-center gap-3 px-4 py-3 rounded-lg transition-all duration-200 border border-transparent',\n          activeView === 'bookings'\n            ? 'bg-emerald-700 text-white font-medium shadow-sm'\n            : isRestrictedView('bookings')\n              ? 'text-gray-500 dark:text-slate-400 border border-dashed border-emerald-400/40 bg-emerald-50/40 dark:bg-slate-800/40 hover:bg-emerald-50/50 dark:hover:bg-slate-800/50'\n              : 'text-gray-600 dark:text-white hover:bg-gray-100 dark:hover:bg-slate-800 hover:text-gray-900 dark:hover:text-white'\n        ]\"\n        :title=\"\n          compact ? translate('nav.bookings') : isRestrictedView('bookings') ? translate('nav.signIn') : undefined\n        \"\n        @click=\"handleNavigate('bookings')\"\n      >\n        <IconCalendar class=\"w-5 h-5\" />\n        <span v-if=\"!compact\" v-translate=\"'nav.bookings'\"></span>\n      </button>\n      <button\n        v-if=\"!isRestrictedView('coupons')\"\n        v-prefetch-route=\"'coupons'\"\n        :class=\"[\n          compact\n            ? 'flex items-center justify-center w-10 h-10 rounded-lg transition-all duration-200'\n            : 'w-full flex items-center gap-3 px-4 py-3 rounded-lg transition-all duration-200 border border-transparent',\n          activeView === 'coupons'\n            ? 'bg-emerald-700 text-white font-medium shadow-sm'\n            : isRestrictedView('coupons')\n              ? 'text-gray-500 dark:text-slate-400 border border-dashed border-emerald-400/40 bg-emerald-50/40 dark:bg-slate-800/40 hover:bg-emerald-50/50 dark:hover:bg-slate-800/50'\n              : 'text-gray-600 dark:text-white hover:bg-gray-100 dark:hover:bg-slate-800 hover:text-gray-900 dark:hover:text-white'\n        ]\"\n        :title=\"compact ? translate('nav.coupons') : isRestrictedView('coupons') ? translate('nav.signIn') : undefined\"\n        @click=\"handleNavigate('coupons')\"\n      >\n        <IconTicket class=\"w-5 h-5\" />\n        <span v-if=\"!compact\" v-translate=\"'nav.coupons'\"></span>\n      </button>\n      <button\n        v-if=\"!isRestrictedView('receipts')\"\n        v-prefetch-route=\"'receipts'\"\n        :class=\"[\n          compact\n            ? 'flex items-center justify-center w-10 h-10 rounded-lg transition-all duration-200'\n            : 'w-full flex items-center gap-3 px-4 py-3 rounded-lg transition-all duration-200 border border-transparent',\n          activeView === 'receipts'\n            ? 'bg-emerald-700 text-white font-medium shadow-sm'\n            : isRestrictedView('receipts')\n              ? 'text-gray-500 dark:text-slate-400 border border-dashed border-emerald-400/40 bg-emerald-50/40 dark:bg-slate-800/40 hover:bg-emerald-50/50 dark:hover:bg-slate-800/50'\n              : 'text-gray-600 dark:text-white hover:bg-gray-100 dark:hover:bg-slate-800 hover:text-gray-900 dark:hover:text-white'\n        ]\"\n        :title=\"\n          compact ? translate('nav.receipts') : isRestrictedView('receipts') ? translate('nav.signIn') : undefined\n        \"\n        @click=\"handleNavigate('receipts')\"\n      >\n        <IconReceipt class=\"w-5 h-5\" />\n        <span v-if=\"!compact\" v-translate=\"'nav.receipts'\"></span>\n      </button>\n    </div>\n\n    <div v-if=\"!compact\" :class=\"[sectionSpacing, 'border-t border-slate-200 pt-2 dark:border-slate-800']\">\n      <RouterLink\n        v-prefetch-route=\"'customer-service'\"\n        :to=\"{ name: 'customer-service' }\"\n        class=\"w-full flex items-center gap-3 px-4 py-3 rounded-lg transition-all duration-200\"\n        :class=\"\n          activeView === 'customer-service'\n            ? 'bg-emerald-700 text-white font-medium shadow-sm'\n            : 'text-gray-600 dark:text-white hover:bg-gray-100 dark:hover:bg-slate-800 hover:text-gray-900 dark:hover:text-white'\n        \"\n      >\n        <IconHelpCircle class=\"w-5 h-5\" />\n        <span v-translate=\"'nav.customerService'\"></span>\n      </RouterLink>\n      <button\n        v-prefetch-route=\"'tour'\"\n        :class=\"[\n          'w-full flex items-center gap-3 px-4 py-3 rounded-lg transition-all duration-200',\n          activeView === 'tour'\n            ? 'bg-emerald-700 text-white font-medium shadow-sm'\n            : 'text-gray-600 dark:text-white hover:bg-gray-100 dark:hover:bg-slate-800 hover:text-gray-900 dark:hover:text-white'\n        ]\"\n        @click=\"handleNavigate('tour')\"\n      >\n        <IconMap class=\"w-5 h-5\" />\n        <span v-translate=\"'nav.tour'\"></span>\n      </button>\n      <RouterLink\n        v-prefetch-route=\"'faq'\"\n        :to=\"{ name: 'faq' }\"\n        class=\"w-full flex items-center gap-3 px-4 py-3 rounded-lg transition-all duration-200\"\n        :class=\"\n          isFaqActive\n            ? 'bg-emerald-700 text-white font-medium shadow-sm'\n            : 'text-gray-600 dark:text-white hover:bg-gray-100 dark:hover:bg-slate-800 hover:text-gray-900 dark:hover:text-white'\n        \"\n      >\n        <IconMessageCircle class=\"w-5 h-5\" />\n        <span v-translate=\"'nav.faq'\"></span>\n      </RouterLink>\n    </div>\n  </nav>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from \"vue\";\n\nimport { useAppConfig } from \"@core/composables/data/useAppConfig\";\nimport { usePermissions } from \"@core/composables/data/usePermissions\";\nimport { useNavigation, type ViewType } from \"@core/composables/state/useNavigation\";\nimport { useQuickNav } from \"@core/composables/state/useQuickNav\";\nimport IconCalendar from \"@core/icons/IconCalendar.vue\";\nimport IconCar from \"@core/icons/IconCar.vue\";\nimport IconChevronDown from \"@core/icons/IconChevronDown.vue\";\nimport IconCreditCard from \"@core/icons/IconCreditCard.vue\";\nimport IconHelpCircle from \"@core/icons/IconHelpCircle.vue\";\nimport IconHome from \"@core/icons/IconHome.vue\";\nimport IconMap from \"@core/icons/IconMap.vue\";\nimport IconMapPin from \"@core/icons/IconMapPin.vue\";\nimport IconMenu from \"@core/icons/IconMenu.vue\";\nimport IconMessageCircle from \"@core/icons/IconMessageCircle.vue\";\nimport IconParking from \"@core/icons/IconParking.vue\";\nimport IconPayWithin48Modern from \"@core/icons/IconPayWithin48_Modern.vue\";\nimport IconReceipt from \"@core/icons/IconReceipt.vue\";\nimport IconRoad from \"@core/icons/IconRoad.vue\";\nimport IconSubscription from \"@core/icons/IconSubscription.vue\";\nimport IconTicket from \"@core/icons/IconTicket.vue\";\nimport IconUser from \"@core/icons/IconUser.vue\";\nimport { adminViews, hasAdministrationAccess } from \"@core/utils/accessPolicy\";\n\nimport { useTranslate } from \"@common/composables/useTranslate\";\n\nimport AdminNavigationMenu from \"./AdminNavigationMenu.vue\";\n\nimport { prefetchRouteDirective as vPrefetchRoute } from \"@/router/prefetchRouteDirective\";\n\ninterface Props {\n  sectionSpacing?: string;\n  compact?: boolean;\n}\n\nwithDefaults(defineProps<Props>(), {\n  sectionSpacing: \"mt-2\",\n  compact: false\n});\n\nconst { activeView, navigateTo, showMobileSidebar } = useNavigation();\nconst { config } = useAppConfig();\nconst translate = useTranslate();\nconst { canAccessYouParkCustomer, permissions, lots } = usePermissions();\nconst { open: openQuickNav } = useQuickNav();\nconst publicViews = new Set([...(config.publicViews ?? []), \"payment\"]);\n\nconst isRestrictedView = (view: ViewType) => !config.isAuthenticated && !publicViews.has(view);\nconst isAdministrationExpanded = ref(adminViews.has(activeView.value));\nconst isMyAreasExpanded = ref(true);\nconst showAdminPopup = ref(false);\nconst adminPopupTop = ref(\"0px\");\nconst adminContentRef = ref<HTMLElement | null>(null);\nconst myAreasContentRef = ref<HTMLElement | null>(null);\nconst adminContentHeight = ref(0);\nconst myAreasContentHeight = ref(0);\n\nconst toggleAdministration = () => {\n  isAdministrationExpanded.value = !isAdministrationExpanded.value;\n};\n\nconst toggleMyAreas = () => {\n  isMyAreasExpanded.value = !isMyAreasExpanded.value;\n};\n\nconst toggleAdminPopup = (event: MouseEvent) => {\n  const viewportHeight = window.innerHeight;\n  const popupMaxHeight = viewportHeight * 0.8;\n  const clickPosition = event.clientY || parseFloat(adminPopupTop.value) || viewportHeight * 0.1;\n  const spaceBelow = viewportHeight - clickPosition;\n  const spaceAbove = clickPosition;\n\n  let top: number;\n  if (spaceBelow < popupMaxHeight && spaceAbove > spaceBelow) {\n    top = Math.max(viewportHeight * 0.1, clickPosition - popupMaxHeight);\n  } else {\n    top = Math.min(clickPosition, viewportHeight - popupMaxHeight - 20);\n  }\n\n  adminPopupTop.value = `${top}px`;\n  showAdminPopup.value = !showAdminPopup.value;\n};\n\nconst closeAdminPopup = () => {\n  showAdminPopup.value = false;\n};\n\nconst navigationLocks = ref<Set<ViewType>>(new Set());\nconst lastNavigation = ref<{ view: ViewType | null; timestamp: number }>({ view: null, timestamp: 0 });\nconst navigationCooldownMs = 600;\n\nconst runNavigationWithLock = async (view: ViewType, action: () => Promise<void>) => {\n  const now = Date.now();\n  if (navigationLocks.value.has(view)) {\n    return;\n  }\n  if (activeView.value === view) {\n    const { view: lastView, timestamp } = lastNavigation.value;\n    if (lastView === view && now - timestamp < navigationCooldownMs) {\n      return;\n    }\n  }\n\n  const nextLocks = new Set(navigationLocks.value);\n  nextLocks.add(view);\n  navigationLocks.value = nextLocks;\n  lastNavigation.value = { view, timestamp: now };\n\n  try {\n    await action();\n  } finally {\n    const updatedLocks = new Set(navigationLocks.value);\n    updatedLocks.delete(view);\n    navigationLocks.value = updatedLocks;\n    lastNavigation.value = { view, timestamp: Date.now() };\n  }\n};\n\nconst handleNavigate = (view: ViewType) => {\n  void runNavigationWithLock(view, () => navigateTo(view));\n};\n\nwatch(\n  () => activeView.value,\n  value => {\n    isAdministrationExpanded.value = adminViews.has(value);\n    showAdminPopup.value = false;\n  }\n);\n\nconst handleNavigateToYouparkCustomers = () => {\n  openQuickNav();\n};\n\nconst handleNavigateToYouparkCustomersRemit = () => {\n  openQuickNav();\n};\n\nconst handleMapNavigate = (view: \"map-parking\" | \"map-toll\") => {\n  void navigateTo(view);\n};\n\nwatch(\n  () => showMobileSidebar.value,\n  value => {\n    if (value && !adminViews.has(activeView.value)) {\n      isAdministrationExpanded.value = false;\n    }\n  }\n);\n\nconst isFaqActive = computed(() => {\n  return activeView.value === \"faq\" || activeView.value === \"faq-item\" || activeView.value === \"faq-section\";\n});\n\nconst isVehiclesActive = computed(() => {\n  return activeView.value === \"vehicles\" || activeView.value === \"add-vehicle\" || activeView.value === \"edit-vehicle\";\n});\n\nconst isPaymentViewActive = computed(() => {\n  return activeView.value === \"payment\";\n});\n\nconst isPaymentSourcesActive = computed(() => {\n  return (\n    activeView.value === \"payment-sources\" ||\n    activeView.value === \"add-payment-source\" ||\n    activeView.value === \"edit-payment-source\"\n  );\n});\n\nconst isSubscriptionsActive = computed(() => {\n  return (\n    activeView.value === \"subscriptions\" ||\n    activeView.value === \"subscription-details\" ||\n    activeView.value === \"subscription-shared-details\" ||\n    activeView.value === \"subscription-purchase\" ||\n    activeView.value === \"subscription-renew\"\n  );\n});\n\nconst showAdministrationMenu = computed(() => hasAdministrationAccess(config));\n\nconst hasMainNavigationItems = computed(() => {\n  return (\n    !isRestrictedView(\"home\") ||\n    !isRestrictedView(\"profile\") ||\n    !isRestrictedView(\"vehicles\") ||\n    !isRestrictedView(\"payment-sources\") ||\n    !isRestrictedView(\"subscriptions\") ||\n    !isRestrictedView(\"bookings\") ||\n    !isRestrictedView(\"coupons\") ||\n    !isRestrictedView(\"receipts\")\n  );\n});\n\nconst measureHeight = (element: HTMLElement | null) => (element ? element.scrollHeight : 0);\n\nconst updateSectionHeights = () => {\n  adminContentHeight.value = measureHeight(adminContentRef.value);\n  myAreasContentHeight.value = measureHeight(myAreasContentRef.value);\n};\n\nconst adminContentStyle = computed(() => ({\n  height: isAdministrationExpanded.value ? `${adminContentHeight.value}px` : \"0px\"\n}));\n\nconst myAreasContentStyle = computed(() => ({\n  height: isMyAreasExpanded.value ? `${myAreasContentHeight.value}px` : \"0px\"\n}));\n\nconst handleResize = () => {\n  updateSectionHeights();\n};\n\nonMounted(() => {\n  nextTick(updateSectionHeights);\n  window.addEventListener(\"resize\", handleResize, { passive: true });\n});\n\nonBeforeUnmount(() => {\n  window.removeEventListener(\"resize\", handleResize);\n});\n\nwatch(\n  permissions,\n  () => {\n    nextTick(updateSectionHeights);\n  },\n  { deep: true }\n);\n\nwatch(\n  lots,\n  () => {\n    nextTick(updateSectionHeights);\n  },\n  { deep: true }\n);\n\nwatch(\n  () => isAdministrationExpanded.value,\n  () => {\n    nextTick(updateSectionHeights);\n  }\n);\n\nwatch(\n  () => isMyAreasExpanded.value,\n  () => {\n    nextTick(updateSectionHeights);\n  }\n);\n</script>\n","import script from \"./AdminNavigationMenu.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./AdminNavigationMenu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminNavigationMenu.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./AdminNavigationMenu.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","<template>\n  <div\n    :class=\"[\n      'user-profile-card rounded-xl shadow-sm overflow-hidden transition-colors duration-300',\n      cardAppearance,\n      compact ? 'inline-block' : ''\n    ]\"\n  >\n    <template v-if=\"isAuthenticated\">\n      <template v-if=\"compact\">\n        <button\n          type=\"button\"\n          class=\"flex items-center justify-center w-full p-2 text-left bg-transparent border-0 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-300 dark:focus-visible:ring-emerald-600 hover:bg-green-100/50 dark:hover:bg-slate-700/50 transition-colors rounded-xl\"\n          :title=\"userProfile.fullName ?? undefined\"\n          @click=\"handleNavigateToProfile\"\n        >\n          <div\n            class=\"w-10 h-10 bg-emerald-700 rounded-full flex items-center justify-center text-white font-semibold text-sm shadow-sm\"\n          >\n            {{ initials }}\n          </div>\n        </button>\n      </template>\n      <template v-else>\n        <button\n          type=\"button\"\n          class=\"w-full flex items-center gap-3 p-3 text-left bg-transparent border-0 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-300 dark:focus-visible:ring-emerald-600\"\n          @click=\"handleNavigateToProfile\"\n        >\n          <div\n            class=\"w-8 h-8 bg-emerald-700 rounded-full flex items-center justify-center text-white font-semibold text-xs shrink-0 shadow-sm\"\n          >\n            {{ initials }}\n          </div>\n\n          <div class=\"flex-1 min-w-0\">\n            <p class=\"text-sm font-semibold text-gray-900 dark:text-white truncate\">{{ userProfile.fullName }}</p>\n            <p v-if=\"userProfile.email\" class=\"text-sm text-gray-600 dark:text-slate-400 truncate\">\n              {{ userProfile.email }}\n            </p>\n            <p v-if=\"userProfile.phoneNumber\" class=\"text-sm text-gray-600 dark:text-slate-400 truncate\">\n              {{ userProfile.phoneNumber }}\n            </p>\n          </div>\n        </button>\n\n        <button\n          class=\"group w-full flex items-center justify-between gap-3 px-4 py-3 text-emerald-700 dark:text-emerald-400 font-semibold bg-white/80 dark:bg-slate-800/50 border-t border-green-200/60 dark:border-slate-700 transition-all hover:bg-emerald-50 dark:hover:bg-slate-700 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-300 dark:focus-visible:ring-emerald-600\"\n          @click=\"handleSignOut\"\n        >\n          <span class=\"flex items-center gap-3\">\n            <span\n              class=\"flex h-9 w-9 items-center justify-center rounded-full bg-emerald-100 dark:bg-emerald-900/30 text-emerald-700 dark:text-emerald-400 transition-transform group-hover:scale-105\"\n            >\n              <IconLogOut class=\"w-4 h-4\" />\n            </span>\n            <span v-translate=\"'signOut'\" class=\"text-sm tracking-wide\"></span>\n          </span>\n          <span class=\"flex items-center gap-2\">\n            <span v-if=\"showTimer\" class=\"font-mono text-xs text-emerald-800 dark:text-emerald-400/70 tabular-nums\">\n              {{ formattedTime }}\n            </span>\n            <IconChevronRight class=\"w-4 h-4 text-emerald-400 transition-transform group-hover:translate-x-0.5\" />\n          </span>\n        </button>\n      </template>\n    </template>\n\n    <template v-else>\n      <template v-if=\"compact\">\n        <button\n          type=\"button\"\n          class=\"flex items-center justify-center p-3 rounded-xl bg-transparent hover:bg-emerald-100/50 dark:hover:bg-emerald-900/30 transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-400\"\n          :title=\"translate('nav.signIn')\"\n          @click=\"handleGuestSignIn\"\n        >\n          <IconUser class=\"w-6 h-6 text-emerald-700 dark:text-emerald-400\" />\n        </button>\n      </template>\n      <template v-else>\n        <div class=\"flex items-start gap-3 p-4\">\n          <span\n            class=\"flex h-10 w-10 items-center justify-center rounded-full bg-emerald-100 text-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-300\"\n          >\n            <IconUser class=\"w-5 h-5\" />\n          </span>\n          <div class=\"space-y-2\">\n            <p class=\"text-sm font-semibold text-gray-900 dark:text-white\">\n              {{ translate(\"common.guestTitle\") }}\n            </p>\n            <p class=\"text-sm text-gray-600 dark:text-slate-400\">\n              {{ translate(\"common.guestDescription\") }}\n            </p>\n          </div>\n        </div>\n        <div class=\"px-4 pb-4\">\n          <button\n            type=\"button\"\n            class=\"inline-flex w-full items-center justify-center gap-2 rounded-lg bg-emerald-700 px-4 py-2 text-sm font-semibold text-white shadow transition hover:bg-emerald-800 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-emerald-400\"\n            @click=\"handleGuestSignIn\"\n          >\n            <IconArrowRight class=\"w-4 h-4\" />\n            <span>{{ translate(\"nav.signIn\") }}</span>\n          </button>\n        </div>\n      </template>\n    </template>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject } from \"vue\";\nimport type { Ref } from \"vue\";\n\nimport { useAppConfig } from \"@core/composables/data/useAppConfig\";\nimport { useNavigation } from \"@core/composables/state/useNavigation\";\nimport { useProfile } from \"@core/composables/state/useProfile\";\nimport { useRouteContext } from \"@core/composables/state/useRouteContext\";\nimport IconArrowRight from \"@core/icons/IconArrowRight.vue\";\nimport IconChevronRight from \"@core/icons/IconChevronRight.vue\";\nimport IconLogOut from \"@core/icons/IconLogOut.vue\";\nimport IconUser from \"@core/icons/IconUser.vue\";\nimport { signOut } from \"@core/utils/auth\";\n\nimport { useTranslate } from \"@common/composables/useTranslate\";\n\nimport { buildAuthRedirectUrl } from \"@/router/utils\";\n\ninterface Props {\n  compact?: boolean;\n}\n\nwithDefaults(defineProps<Props>(), {\n  compact: false\n});\n\nconst { config } = useAppConfig();\nconst { profile: userProfile } = useProfile();\nconst route = useRouteContext();\nconst { navigateTo } = useNavigation();\nconst translate = useTranslate();\nconst isAuthenticated = computed(() => config.isAuthenticated);\nconst isImpersonated = computed(() => config.isImpersonatedUser);\n\nconst remainingTimeMs = inject<Ref<number> | null>(\"autoSignOutTimer\", null);\n\nconst showTimer = computed(() => {\n  return isAuthenticated.value && !isImpersonated.value && remainingTimeMs !== null;\n});\n\nconst formattedTime = computed(() => {\n  if (!remainingTimeMs) {\n    return \"02:00:00\";\n  }\n\n  const totalSeconds = Math.floor(remainingTimeMs.value / 1000);\n  const hours = Math.floor(totalSeconds / 3600);\n  const minutes = Math.floor((totalSeconds % 3600) / 60);\n  const seconds = totalSeconds % 60;\n\n  const pad = (num: number) => String(num).padStart(2, \"0\");\n\n  return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}`;\n});\n\nconst cardAppearance = computed(() => {\n  if (isImpersonated.value && isAuthenticated.value) {\n    return \"bg-red-50 dark:bg-red-950/20 border-2 border-red-500 dark:border-red-600\";\n  }\n  if (isAuthenticated.value) {\n    return \"bg-gradient-to-br from-green-50 dark:from-slate-700 to-emerald-50 dark:to-slate-800 border-2 border-green-200/50 dark:border-slate-600\";\n  }\n  return \"bg-white dark:bg-slate-900 border-2 border-emerald-200/60 dark:border-emerald-400/40\";\n});\n\nconst confirmSignOut = inject<(options?: { scope?: \"single\" | \"all\" }) => Promise<boolean>>(\n  \"confirmSignOut\",\n  async () => {\n    await signOut();\n    return true;\n  }\n);\n\nconst initials = computed(() => {\n  const fullName = userProfile.value?.fullName ?? \"\";\n  const nameParts = fullName?.split(\" \") ?? [];\n  if (nameParts.length >= 2) {\n    return nameParts[0].charAt(0).toUpperCase() + nameParts[nameParts.length - 1].charAt(0).toUpperCase();\n  }\n  return fullName?.substring(0, 2).toUpperCase() ?? \"\";\n});\n\nconst handleSignOut = async () => {\n  await confirmSignOut();\n};\n\nconst handleNavigateToProfile = async () => {\n  await navigateTo(\"profile\");\n};\n\nconst handleGuestSignIn = async () => {\n  const redirectUrl = buildAuthRedirectUrl(\"/dashboard\", route.fullPath);\n  await navigateTo(\"sign-in\", {}, { query: { RedirectUrl: redirectUrl } });\n};\n</script>\n\n<style scoped>\n.user-profile-card {\n  transition: all 0.2s ease;\n}\n</style>\n","import script from \"./UserProfileCard.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./UserProfileCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserProfileCard.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./UserProfileCard.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./UserProfileCard.vue.css?vue&type=style&index=0&id=4731e932&scoped=true&lang=css!=!../../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./UserProfileCard.vue?vue&type=style&index=0&id=4731e932&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4731e932\"]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M3.75 13.5l10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconActivity.vue.js?vue&type=template&id=5bda9a1d!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconActivity.vue?vue&type=template&id=5bda9a1d\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconAlertCircle.vue.js?vue&type=template&id=4af40a7e!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconAlertCircle.vue?vue&type=template&id=4af40a7e\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import script from \"./IconArrowRight.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconArrowRight.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./IconArrowRight.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconArrowRight.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","<template>\n  <svg :class=\"className\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M13 7l5 5m0 0l-5 5m5-5H6\" />\n  </svg>\n</template>\n\n<script setup lang=\"ts\">\ndefineProps<{\n  className?: string;\n}>();\n</script>\n","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M9 4.5v15m6-15v15m-10.875 0h15.75c.621 0 1.125-.504 1.125-1.125V5.625c0-.621-.504-1.125-1.125-1.125h-15.75c-.621 0-1.125.504-1.125 1.125v12.75c0 .621.504 1.125 1.125 1.125z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconAuto.vue.js?vue&type=template&id=734332fa!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconAuto.vue?vue&type=template&id=734332fa\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M2.25 18.75a60.07 60.07 0 0115.797 2.101c.727.198 1.453-.342 1.453-1.096V18.75M3.75 4.5v.75A.75.75 0 013 6h-.75m0 0v-.375c0-.621.504-1.125 1.125-1.125H20.25M2.25 6v9m18-10.5v.75c0 .414.336.75.75.75h.75m-1.5-1.5h.375c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-.375m1.5-1.5H21a.75.75 0 00-.75.75v.75m0 0H3.75m0 0h-.375a1.125 1.125 0 01-1.125-1.125V15m1.5 1.5v-.75A.75.75 0 003 15h-.75M15 10.5a3 3 0 11-6 0 3 3 0 016 0zm3 0h.008v.008H18V10.5zm-12 0h.008v.008H6V10.5z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconBankNote.vue.js?vue&type=template&id=439ef567!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconBankNote.vue?vue&type=template&id=439ef567\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M12 6.042A8.967 8.967 0 006 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 016 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 016-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0018 18a8.967 8.967 0 00-6 2.292m0-14.25v14.25\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconBook.vue.js?vue&type=template&id=65d909fc!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconBook.vue?vue&type=template&id=65d909fc\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M20.25 14.15v4.25c0 1.094-.787 2.036-1.872 2.18-2.087.277-4.216.42-6.378.42s-4.291-.143-6.378-.42c-1.085-.144-1.872-1.086-1.872-2.18v-4.25m16.5 0a2.18 2.18 0 00.75-1.661V8.706c0-1.081-.768-2.015-1.837-2.175a48.114 48.114 0 00-3.413-.387m4.5 8.006c-.194.165-.42.295-.673.38A23.978 23.978 0 0112 15.75c-2.648 0-5.195-.429-7.577-1.22a2.016 2.016 0 01-.673-.38m0 0A2.18 2.18 0 013 12.489V8.706c0-1.081.768-2.015 1.837-2.175a48.111 48.111 0 013.413-.387m7.5 0V5.25A2.25 2.25 0 0013.5 3h-3a2.25 2.25 0 00-2.25 2.25v.894m7.5 0a48.667 48.667 0 00-7.5 0M12 12.75h.008v.008H12v-.008z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconBriefcase.vue.js?vue&type=template&id=4ffa3568!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconBriefcase.vue?vue&type=template&id=4ffa3568\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg\n    aria-hidden=\"true\"\n    fill=\"none\"\n    height=\"24\"\n    stroke=\"currentColor\"\n    stroke-linecap=\"round\"\n    stroke-linejoin=\"round\"\n    stroke-width=\"1.5\"\n    viewBox=\"0 0 24 24\"\n    width=\"24\"\n  >\n    <rect height=\"16\" rx=\"2.5\" width=\"18\" x=\"3\" y=\"5\" />\n    <path d=\"M8 3v4\" />\n    <path d=\"M16 3v4\" />\n    <path d=\"M3 11h18\" />\n    <path d=\"M8 15h2\" />\n    <path d=\"M14 15h2\" />\n  </svg>\n</template>\n","import { render } from \"./IconCalendar.vue.js?vue&type=template&id=5251c70c!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconCalendar.vue?vue&type=template&id=5251c70c\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M6.827 6.175A2.31 2.31 0 015.186 7.23c-.38.054-.757.112-1.134.175C2.999 7.58 2.25 8.507 2.25 9.574V18a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9.574c0-1.067-.75-1.994-1.802-2.169a47.865 47.865 0 00-1.134-.175 2.31 2.31 0 01-1.64-1.055l-.822-1.316a2.192 2.192 0 00-1.736-1.039 48.774 48.774 0 00-5.232 0 2.192 2.192 0 00-1.736 1.039l-.821 1.316z\"\n    />\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M16.5 12.75a4.5 4.5 0 11-9 0 4.5 4.5 0 019 0zM18.75 10.5h.008v.008h-.008V10.5z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconCamera.vue.js?vue&type=template&id=2b977156!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconCamera.vue?vue&type=template&id=2b977156\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M8.25 18.75a1.5 1.5 0 01-3 0m3 0a1.5 1.5 0 00-3 0m3 0h6m-9 0H3.375a1.125 1.125 0 01-1.125-1.125V14.25m17.25 4.5a1.5 1.5 0 01-3 0m3 0a1.5 1.5 0 00-3 0m3 0h1.125c.621 0 1.129-.504 1.09-1.124a17.902 17.902 0 00-3.213-9.193 2.056 2.056 0 00-1.58-.86H14.25M16.5 18.75h-2.25m0-11.177v-.958c0-.568-.422-1.048-.987-1.106a48.554 48.554 0 00-10.026 0 1.106 1.106 0 00-.987 1.106v7.635m12-6.677v6.677m0 4.5v-4.5m0 0h-12\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconCar.vue.js?vue&type=template&id=2dac2e17!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconCar.vue?vue&type=template&id=2dac2e17\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 013 19.875v-6.75zM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V8.625zM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V4.125z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconChartBar.vue.js?vue&type=template&id=2367843e!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconChartBar.vue?vue&type=template&id=2367843e\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\" />\n  </svg>\n</template>\n","import { render } from \"./IconCheck.vue.js?vue&type=template&id=74046bd6!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconCheck.vue?vue&type=template&id=74046bd6\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n    <path\n      fill-rule=\"evenodd\"\n      d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\"\n      clip-rule=\"evenodd\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconCheckCircle.vue.js?vue&type=template&id=8be6c5e4!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconCheckCircle.vue?vue&type=template&id=8be6c5e4\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 8.25l-7.5 7.5-7.5-7.5\" />\n  </svg>\n</template>\n","import { render } from \"./IconChevronDown.vue.js?vue&type=template&id=a4c5a206!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconChevronDown.vue?vue&type=template&id=a4c5a206\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.25 4.5l7.5 7.5-7.5 7.5\" />\n  </svg>\n</template>\n","import { render } from \"./IconChevronRight.vue.js?vue&type=template&id=032cd91f!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconChevronRight.vue?vue&type=template&id=032cd91f\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M2.25 8.25h19.5M2.25 9h19.5m-16.5 5.25h6m-6 2.25h3m-3.75 3h15a2.25 2.25 0 002.25-2.25V6.75A2.25 2.25 0 0019.5 4.5h-15a2.25 2.25 0 00-2.25 2.25v10.5A2.25 2.25 0 004.5 19.5z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconCreditCard.vue.js?vue&type=template&id=449042f6!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconCreditCard.vue?vue&type=template&id=449042f6\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconDatabase.vue.js?vue&type=template&id=add72abc!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconDatabase.vue?vue&type=template&id=add72abc\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5M16.5 12L12 16.5m0 0L7.5 12m4.5 4.5V3\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconDownload.vue.js?vue&type=template&id=0d246310!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconDownload.vue?vue&type=template&id=0d246310\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M12 21a9.004 9.004 0 008.716-6.747M12 21a9.004 9.004 0 01-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 017.843 4.582M12 3a8.997 8.997 0 00-7.843 4.582m15.686 0A11.953 11.953 0 0121 12c0 1.39-.252 2.721-.709 3.963M3.291 7.582A11.953 11.953 0 003 12c0 1.39.252 2.721.709 3.963m0 0a8.959 8.959 0 01-1.292-.928m1.292.928c.375.414.851.764 1.416 1.028M5.375 15.482c0 0 0 .001 0 0z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconGlobe.vue.js?vue&type=template&id=6ca8ac6a!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconGlobe.vue?vue&type=template&id=6ca8ac6a\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9 5.25h.008v.008H12v-.008z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconHelpCircle.vue.js?vue&type=template&id=00230566!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconHelpCircle.vue?vue&type=template&id=00230566\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M2.25 12l8.954-8.955c.44-.439 1.152-.439 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconHome.vue.js?vue&type=template&id=6f657758!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconHome.vue?vue&type=template&id=6f657758\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M15.75 9V5.25A2.25 2.25 0 0013.5 3h-6a2.25 2.25 0 00-2.25 2.25v13.5A2.25 2.25 0 007.5 21h6a2.25 2.25 0 002.25-2.25V15M18 12l3-3m0 0l-3-3m3 3H9\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconLogOut.vue.js?vue&type=template&id=13024136!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconLogOut.vue?vue&type=template&id=13024136\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import script from \"./IconLogo.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconLogo.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./IconLogo.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconLogo.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","<script setup lang=\"ts\">\nimport { computed, inject } from \"vue\";\n\nimport type { ThemeContext } from \"@core/composables/ui/useTheme\";\n\ninterface Props {\n  compact?: boolean;\n}\n\nwithDefaults(defineProps<Props>(), {\n  compact: false\n});\n\nconst theme = inject<ThemeContext>(\"theme\");\nconst isDark = computed(() => theme?.isDark?.value ?? false);\n</script>\n\n<template>\n  <div>\n    <!-- Compact mode - icon only -->\n    <template v-if=\"compact\">\n      <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"39\" viewBox=\"140 0 42 39\">\n        <g data-name=\"Group 376\">\n          <path\n            fill=\"#23e25b\"\n            d=\"m151.293 37.673 18.031-36.067c.973-2.017 14.122-2.2 13.149-.183l-16.756 35.841c-.972 2.016-15.4 2.425-14.424.409\"\n            data-name=\"Path 8\"\n          />\n          <path\n            fill=\"#246531\"\n            d=\"m157.672 9.712-4.053-8.106c-.972-2.016-14.121-2.198-13.149-.182l9.977 21.339c.972 2.017 8.2-11.035 7.225-13.051\"\n            data-name=\"Path 9\"\n          />\n        </g>\n      </svg>\n    </template>\n    <!-- Light mode logo -->\n    <svg\n      v-else-if=\"!isDark\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"182.525\"\n      height=\"38.996\"\n      viewBox=\"0 0 182.525 38.996\"\n    >\n      <g data-name=\"Group 418\">\n        <g fill=\"#0b1f06\" data-name=\"Group 375\">\n          <path\n            d=\"M8.321 32.17v-9.538L.001 7.873h5.152l5.606 10.269h.068l5.464-10.269h5.014L12.95 22.597v9.572Z\"\n            data-name=\"Path 1\"\n          />\n          <path\n            d=\"M21.04 23.047c0-5.814 3.238-9.466 8.425-9.466 5.222 0 8.458 3.652 8.458 9.466 0 5.851-3.236 9.539-8.458 9.539-5.187 0-8.425-3.689-8.425-9.539m12.22 1.707v-3.375c0-2.715-1.463-4.213-3.8-4.213-2.3 0-3.759 1.5-3.759 4.213v3.375c0 2.75 1.459 4.246 3.759 4.246 2.332 0 3.8-1.5 3.8-4.246\"\n            data-name=\"Path 2\"\n          />\n          <path\n            d=\"M52.729 29.143h-.176a4.93 4.93 0 0 1-5.082 3.443c-3.724 0-5.814-2.572-5.814-7.1V13.999h4.456v11.034c0 2.508.941 3.867 3.064 3.867 1.775 0 3.551-.941 3.551-2.891v-12.01h4.455V32.17h-4.454Z\"\n            data-name=\"Path 3\"\n          />\n          <path\n            d=\"M62.624 32.168V7.871h10.929c4.494 0 7.209 3.027 7.209 7.517 0 4.527-2.715 7.519-7.209 7.519h-6.334v9.261Zm4.595-13.228h5.918a2.558 2.558 0 0 0 2.855-2.75v-1.599a2.532 2.532 0 0 0-2.855-2.715h-5.918Z\"\n            data-name=\"Path 4\"\n          />\n          <path\n            d=\"M82.895 27.227c0-3.726 2.82-5.57 7.763-5.57h3.1v-1.323c0-2.019-1.008-3.2-3.375-3.2a4.73 4.73 0 0 0-4.145 2.3l-2.644-2.367c1.324-2.09 3.447-3.482 7.1-3.482 4.908 0 7.519 2.334 7.519 6.474v8.564h1.811v3.551h-2.472a3.3 3.3 0 0 1-3.375-3.132h-.211c-.592 2.332-2.576 3.548-5.291 3.548-3.691 0-5.779-2.123-5.779-5.359m10.863-.491v-2.4h-2.857c-2.332 0-3.48.8-3.48 2.228v.589c0 1.463 1.008 2.195 2.748 2.195 1.984 0 3.586-.9 3.586-2.611\"\n            data-name=\"Path 5\"\n          />\n          <path\n            d=\"M103.654 32.17V13.999h4.455v3.76h.174a4.66 4.66 0 0 1 4.8-3.76h.975v4.211h-1.392c-3 0-4.562.836-4.562 2.82v11.14Z\"\n            data-name=\"Path 6\"\n          />\n          <path\n            d=\"M117.342 6.409h4.455v15.525h.174l2.4-3.273 4.072-4.664h5.046l-6.261 7.029 6.929 11.14h-5.291l-4.667-8.14-2.4 2.611v5.535h-4.455Z\"\n            data-name=\"Path 7\"\n          />\n        </g>\n        <g data-name=\"Group 376\">\n          <path\n            fill=\"#23e25b\"\n            d=\"m151.293 37.673 18.031-36.067c.973-2.017 14.122-2.2 13.149-.183l-16.756 35.841c-.972 2.016-15.4 2.425-14.424.409\"\n            data-name=\"Path 8\"\n          />\n          <path\n            fill=\"#246531\"\n            d=\"m157.672 9.712-4.053-8.106c-.972-2.016-14.121-2.198-13.149-.182l9.977 21.339c.972 2.017 8.2-11.035 7.225-13.051\"\n            data-name=\"Path 9\"\n          />\n        </g>\n      </g>\n    </svg>\n\n    <!-- Dark mode logo -->\n    <svg v-else xmlns=\"http://www.w3.org/2000/svg\" width=\"182.525\" height=\"38.996\" viewBox=\"0 0 182.525 38.996\">\n      <g data-name=\"Group 418\">\n        <g fill=\"#ffffff\" data-name=\"Group 375\">\n          <path\n            d=\"M8.321 32.17v-9.538L.001 7.873h5.152l5.606 10.269h.068l5.464-10.269h5.014L12.95 22.597v9.572Z\"\n            data-name=\"Path 1\"\n          />\n          <path\n            d=\"M21.04 23.047c0-5.814 3.238-9.466 8.425-9.466 5.222 0 8.458 3.652 8.458 9.466 0 5.851-3.236 9.539-8.458 9.539-5.187 0-8.425-3.689-8.425-9.539m12.22 1.707v-3.375c0-2.715-1.463-4.213-3.8-4.213-2.3 0-3.759 1.5-3.759 4.213v3.375c0 2.75 1.459 4.246 3.759 4.246 2.332 0 3.8-1.5 3.8-4.246\"\n            data-name=\"Path 2\"\n          />\n          <path\n            d=\"M52.729 29.143h-.176a4.93 4.93 0 0 1-5.082 3.443c-3.724 0-5.814-2.572-5.814-7.1V13.999h4.456v11.034c0 2.508.941 3.867 3.064 3.867 1.775 0 3.551-.941 3.551-2.891v-12.01h4.455V32.17h-4.454Z\"\n            data-name=\"Path 3\"\n          />\n          <path\n            d=\"M62.624 32.168V7.871h10.929c4.494 0 7.209 3.027 7.209 7.517 0 4.527-2.715 7.519-7.209 7.519h-6.334v9.261Zm4.595-13.228h5.918a2.558 2.558 0 0 0 2.855-2.75v-1.599a2.532 2.532 0 0 0-2.855-2.715h-5.918Z\"\n            data-name=\"Path 4\"\n          />\n          <path\n            d=\"M82.895 27.227c0-3.726 2.82-5.57 7.763-5.57h3.1v-1.323c0-2.019-1.008-3.2-3.375-3.2a4.73 4.73 0 0 0-4.145 2.3l-2.644-2.367c1.324-2.09 3.447-3.482 7.1-3.482 4.908 0 7.519 2.334 7.519 6.474v8.564h1.811v3.551h-2.472a3.3 3.3 0 0 1-3.375-3.132h-.211c-.592 2.332-2.576 3.548-5.291 3.548-3.691 0-5.779-2.123-5.779-5.359m10.863-.491v-2.4h-2.857c-2.332 0-3.48.8-3.48 2.228v.589c0 1.463 1.008 2.195 2.748 2.195 1.984 0 3.586-.9 3.586-2.611\"\n            data-name=\"Path 5\"\n          />\n          <path\n            d=\"M103.654 32.17V13.999h4.455v3.76h.174a4.66 4.66 0 0 1 4.8-3.76h.975v4.211h-1.392c-3 0-4.562.836-4.562 2.82v11.14Z\"\n            data-name=\"Path 6\"\n          />\n          <path\n            d=\"M117.342 6.409h4.455v15.525h.174l2.4-3.273 4.072-4.664h5.046l-6.261 7.029 6.929 11.14h-5.291l-4.667-8.14-2.4 2.611v5.535h-4.455Z\"\n            data-name=\"Path 7\"\n          />\n        </g>\n        <g data-name=\"Group 376\">\n          <path\n            fill=\"#23e25b\"\n            d=\"m151.293 37.673 18.031-36.067c.973-2.017 14.122-2.2 13.149-.183l-16.756 35.841c-.972 2.016-15.4 2.425-14.424.409\"\n            data-name=\"Path 8\"\n          />\n          <path\n            fill=\"#246531\"\n            d=\"m157.672 9.712-4.053-8.106c-.972-2.016-14.121-2.198-13.149-.182l9.977 21.339c.972 2.017 8.2-11.035 7.225-13.051\"\n            data-name=\"Path 9\"\n          />\n        </g>\n      </g>\n    </svg>\n  </div>\n</template>\n","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M9 6.75V15m6-6v8.25m.503 3.498l4.875-2.437c.381-.19.622-.58.622-1.006V4.82c0-.836-.88-1.38-1.628-1.006l-3.869 1.934c-.317.159-.69.159-1.006 0L9.503 3.252a1.125 1.125 0 00-1.006 0L3.622 5.689C3.24 5.88 3 6.27 3 6.695V19.18c0 .836.88 1.38 1.628 1.006l3.869-1.934c.317-.159.69-.159 1.006 0l4.994 2.497c.317.158.69.158 1.006 0z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconMap.vue.js?vue&type=template&id=7b4a7f26!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconMap.vue?vue&type=template&id=7b4a7f26\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 10.5a3 3 0 11-6 0 3 3 0 016 0z\" />\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M19.5 10.5c0 7.142-7.5 11.25-7.5 11.25S4.5 17.642 4.5 10.5a7.5 7.5 0 1115 0z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconMapPin.vue.js?vue&type=template&id=f65e5156!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconMapPin.vue?vue&type=template&id=f65e5156\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5\" />\n  </svg>\n</template>\n","import { render } from \"./IconMenu.vue.js?vue&type=template&id=7002be2a!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconMenu.vue?vue&type=template&id=7002be2a\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M8.625 12a.375.375 0 11-.75 0 .375.375 0 01.75 0zm0 0H8.25m4.125 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zm0 0H12m4.125 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zm0 0h-.375M21 12c0 4.556-4.03 8.25-9 8.25a9.764 9.764 0 01-2.555-.337A5.972 5.972 0 015.41 20.97a5.969 5.969 0 01-.474-.065 4.48 4.48 0 00.978-2.025c.09-.457-.133-.901-.467-1.226C3.93 16.178 3 14.189 3 12c0-4.556 4.03-8.25 9-8.25s9 3.694 9 8.25z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconMessageCircle.vue.js?vue&type=template&id=93c4cd8e!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconMessageCircle.vue?vue&type=template&id=93c4cd8e\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconMoon.vue.js?vue&type=template&id=350e6ba6!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconMoon.vue?vue&type=template&id=350e6ba6\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n    <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"4\" fill=\"currentColor\" opacity=\"0.1\" />\n    <path\n      d=\"M8 7C7.44772 7 7 7.44772 7 8V16C7 16.5523 7.44772 17 8 17C8.55228 17 9 16.5523 9 16V14H13C15.2091 14 17 12.2091 17 10C17 7.79086 15.2091 6 13 6H8C7.44772 6 7 6.44772 7 7C7 7.55228 7.44772 8 8 8H13C14.1046 8 15 8.89543 15 10C15 11.1046 14.1046 12 13 12H9V8C9 7.44772 8.55228 7 8 7Z\"\n      fill=\"currentColor\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconParking.vue.js?vue&type=template&id=a6017ba6!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconParking.vue?vue&type=template&id=a6017ba6\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconReceipt.vue.js?vue&type=template&id=20cf0344!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconReceipt.vue?vue&type=template&id=20cf0344\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n    <path\n      d=\"M6 22L7 2H17L18 22H6ZM11 4H13V6H11V4ZM11 9H13V11H11V9ZM11 14H13V16H11V14ZM11 19H13V21H11V19Z\"\n      fill=\"currentColor\"\n      fill-rule=\"evenodd\"\n      clip-rule=\"evenodd\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconRoad.vue.js?vue&type=template&id=00c3025b!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconRoad.vue?vue&type=template&id=00c3025b\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconSearch.vue.js?vue&type=template&id=61c51575!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconSearch.vue?vue&type=template&id=61c51575\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M21.75 17.25v-.228a4.5 4.5 0 00-.12-1.03l-2.268-9.64a3.375 3.375 0 00-3.285-2.602H7.923a3.375 3.375 0 00-3.285 2.602l-2.268 9.64a4.5 4.5 0 00-.12 1.03v.228m19.5 0a3 3 0 01-3 3H5.25a3 3 0 01-3-3m19.5 0a3 3 0 00-3-3H5.25a3 3 0 00-3 3m16.5 0h.008v.008h-.008v-.008zm-3 0h.008v.008h-.008v-.008z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconServer.vue.js?vue&type=template&id=50be6082!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconServer.vue?vue&type=template&id=50be6082\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M9 12.75L11.25 15 15 9.75m-3-7.036A11.959 11.959 0 013.598 6 11.99 11.99 0 003 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconShield.vue.js?vue&type=template&id=5f104046!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconShield.vue?vue&type=template&id=5f104046\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M9.348 14.651a3.75 3.75 0 010-5.303m5.304 0a3.75 3.75 0 010 5.303m-7.425 2.122a6.75 6.75 0 010-9.546m9.546 0a6.75 6.75 0 010 9.546M5.106 18.894c-3.808-3.808-3.808-9.98 0-13.789m13.788 0c3.808 3.808 3.808 9.981 0 13.79M12 12h.008v.007H12V12zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconSignal.vue.js?vue&type=template&id=5fe46832!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconSignal.vue?vue&type=template&id=5fe46832\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M4.5 6a1.5 1.5 0 011.5-1.5h12a1.5 1.5 0 011.5 1.5v12a1.5 1.5 0 01-1.5 1.5h-12A1.5 1.5 0 014.5 18z\"\n    />\n    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M7 10.5h10\" />\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M12 7.5l.67 1.41 1.58.2-1.17 1.12.28 1.57L12 10.75l-1.36.95.28-1.57-1.17-1.12 1.58-.2z\"\n    />\n    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.5 14.5h.01M11.5 14.5h.01M14.5 14.5h.01\" />\n  </svg>\n</template>\n","import { render } from \"./IconSubscription.vue.js?vue&type=template&id=5f6c0a94!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconSubscription.vue?vue&type=template&id=5f6c0a94\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M12 3v2.25m6.364.386l-1.591 1.591M21 12a9 9 0 11-18 0 9 9 0 0118 0m-9-3.75v.75m-4.364.386l-1.591-1.591M5.25 12a.75.75 0 11-1.5 0 .75.75 0 011.5 0z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconSun.vue.js?vue&type=template&id=398ed1b8!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconSun.vue?vue&type=template&id=398ed1b8\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M5 7.75A1.75 1.75 0 016.75 6h10.5A1.75 1.75 0 0119 7.75v2a2.25 2.25 0 110 4.5v2A1.75 1.75 0 0117.25 18H6.75A1.75 1.75 0 015 16.25v-2a2.25 2.25 0 110-4.5z\"\n    />\n    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 7.5v9\" />\n    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.5 9.75h.01M9.5 14.25h.01\" />\n  </svg>\n</template>\n","import { render } from \"./IconTicket.vue.js?vue&type=template&id=4026c3f1!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconTicket.vue?vue&type=template&id=4026c3f1\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21.75c-2.676 0-5.216-.584-7.499-1.632z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconUser.vue.js?vue&type=template&id=0c9c3a92!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconUser.vue?vue&type=template&id=0c9c3a92\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M15 19.128a9.38 9.38 0 002.625.372 9.337 9.337 0 004.121-.952 4.125 4.125 0 00-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 018.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0111.964-3.07M12 6.375a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zm8.25 2.25a2.625 2.625 0 11-5.25 0 2.625 2.625 0 015.25 0z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconUsers.vue.js?vue&type=template&id=6721ce4f!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconUsers.vue?vue&type=template&id=6721ce4f\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      d=\"M3 8.25V18a2.25 2.25 0 002.25 2.25h13.5A2.25 2.25 0 0021 18V8.25m-18 0V6a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 6v2.25m-18 0h18M16.5 12h.008v.008H16.5V12zm-3.75 0h.008v.008h-.008V12zm-3.75 0h.008v.008H9V12z\"\n    />\n  </svg>\n</template>\n","import { render } from \"./IconWindow.vue.js?vue&type=template&id=0517708e!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconWindow.vue?vue&type=template&id=0517708e\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n  </svg>\n</template>\n","import { render } from \"./IconX.vue.js?vue&type=template&id=68001eae!=!../../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./IconX.vue?vue&type=template&id=68001eae\"\nconst script = {}\n\nimport exportComponent from \"../../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import script from \"./DashboardRouteOutlet.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./DashboardRouteOutlet.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./DashboardRouteOutlet.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./DashboardRouteOutlet.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","<template>\n  <div class=\"flex-1\">\n    <router-view v-slot=\"{ Component, route }\">\n      <Suspense timeout=\"0\" @pending=\"emitPendingChange(true)\" @resolve=\"emitPendingChange(false)\">\n        <template #default>\n          <component\n            :is=\"Component\"\n            v-if=\"Component\"\n            :key=\"routeViewKey\"\n            :class=\"getViewContainerClass(route.name, route.meta?.layout)\"\n          />\n        </template>\n        <template #fallback>\n          <div\n            :key=\"`fallback-${routeViewKey}`\"\n            :class=\"[\n              getViewContainerClass(route.name, route.meta?.layout),\n              'flex min-h-[320px] items-center justify-center'\n            ]\"\n          >\n            <LoadingSpinner :message=\"translate('common.loading')\" size=\"large\" />\n          </div>\n        </template>\n      </Suspense>\n    </router-view>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport LoadingSpinner from \"@core/components/shared/LoadingSpinner.vue\";\nimport { useNavigation, type ViewType } from \"@core/composables/state/useNavigation\";\nimport { useRouteContext } from \"@core/composables/state/useRouteContext\";\n\nimport { useTranslate } from \"@common/composables/useTranslate\";\n\nconst props = defineProps<{\n  centeredLayout: boolean;\n}>();\n\nconst emit = defineEmits<{\n  (event: \"pending-change\", value: boolean): void;\n}>();\n\nconst routeContext = useRouteContext();\nconst { viewKey } = useNavigation();\nconst translate = useTranslate();\n\nconst routeViewKey = computed(() => {\n  const viewGroup = routeContext.meta.viewGroup;\n  if (viewGroup) {\n    const params = routeContext.meta.viewGroupParams ?? [];\n    const paramsKey = params\n      .map(p => routeContext.params[p])\n      .filter(Boolean)\n      .join(\"-\");\n    return [viewGroup, paramsKey, viewKey.value].filter(Boolean).join(\"-\");\n  }\n  const routeName = typeof routeContext.name === \"string\" ? routeContext.name : \"view\";\n  return `${routeContext.path || routeName}-${viewKey.value}`;\n});\n\nconst emitPendingChange = (value: boolean) => {\n  emit(\"pending-change\", value);\n};\n\nconst fullWidthViewNames: ViewType[] = [\n  \"payment\",\n  \"add-vehicle\",\n  \"edit-vehicle\",\n  \"add-payment-source\",\n  \"edit-payment-source\",\n  \"statistics\",\n  \"cameras-overview\",\n  \"applications\",\n  \"youpark-customer-admin-locations-settings\",\n  \"youpark-customer-admin-locations-price-setup\",\n  \"youpark-customer-admin-locations-autopass\",\n  \"youpark-customer-admin-locations-display\",\n  \"youpark-customer-admin-locations-contactpersons\",\n  \"youpark-customer-admin-locations-cameras\",\n  \"youpark-customer-admin-locations-connections\",\n  \"youpark-customer-admin-locations-contract\",\n  \"youpark-customer-admin-locations-businessmodel\"\n];\nconst fullWidthViewSet = new Set(fullWidthViewNames);\n\nfunction getViewContainerClass(routeName: unknown, layout: unknown) {\n  if (layout === \"chrome-free\") {\n    return \"min-h-screen w-full\";\n  }\n  if (layout === \"map\") {\n    return \"h-full w-full\";\n  }\n  const view = typeof routeName === \"string\" ? (routeName as ViewType) : null;\n  const isFullWidthView = view !== null && fullWidthViewSet.has(view);\n\n  if (isFullWidthView) {\n    return \"\";\n  }\n\n  const alignmentClass = props.centeredLayout ? \"mx-auto\" : \"mx-0\";\n  return `max-w-full xl:max-w-6xl p-4 md:p-8 ${alignmentClass}`;\n}\n</script>\n","import script from \"./Footer.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Footer.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Footer.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./Footer.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","<template>\n  <footer\n    class=\"mt-auto border-t border-gray-200 bg-gradient-to-b from-white to-gray-50/50 transition-colors duration-300 dark:border-slate-700 dark:from-slate-900 dark:to-slate-900/80\"\n  >\n    <div :class=\"['max-w-6xl px-4 py-8 md:px-8 md:py-10', centered ? 'mx-auto' : '']\">\n      <div class=\"grid gap-8 lg:grid-cols-[1.5fr_1fr] lg:gap-16\">\n        <div class=\"space-y-5\">\n          <div class=\"flex items-center\">\n            <IconLogo compact class=\"opacity-90\" />\n          </div>\n\n          <div class=\"space-y-4\">\n            <h2\n              v-translate=\"'footer.contactHeading'\"\n              class=\"text-xl font-bold text-gray-900 dark:text-white md:text-2xl\"\n            ></h2>\n\n            <div class=\"space-y-2\">\n              <p\n                v-translate=\"'footer.phone'\"\n                class=\"text-xs font-semibold uppercase tracking-wider text-gray-500 dark:text-slate-500\"\n              ></p>\n              <a\n                href=\"tel:+4747700700\"\n                class=\"inline-flex items-center text-2xl font-bold text-gray-900 transition-all hover:scale-105 hover:text-emerald-700 dark:text-white dark:hover:text-emerald-400 md:text-3xl\"\n              >\n                +47 477 00 700\n              </a>\n            </div>\n          </div>\n\n          <div>\n            <RouterLink\n              :to=\"contactFormRoute\"\n              class=\"group inline-flex items-center justify-center gap-2 rounded-xl bg-gradient-to-r from-emerald-700 to-emerald-800 px-6 py-3.5 text-sm font-bold text-white shadow-lg shadow-emerald-900/20 transition-all hover:-translate-y-0.5 hover:shadow-xl hover:shadow-emerald-900/30 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-400 focus-visible:ring-offset-2 dark:shadow-emerald-500/20 dark:hover:shadow-emerald-500/30\"\n            >\n              <span v-translate=\"'footer.contactFormButton'\"></span>\n              <IconArrowRight class=\"h-4 w-4 transition-transform group-hover:translate-x-0.5\" />\n            </RouterLink>\n          </div>\n        </div>\n\n        <div class=\"space-y-4\">\n          <h3 v-translate=\"'footer.linksHeading'\" class=\"text-base font-bold text-gray-900 dark:text-white\"></h3>\n          <nav class=\"space-y-2\">\n            <component\n              :is=\"link.type === 'route' ? 'RouterLink' : 'a'\"\n              v-for=\"link in footerLinks\"\n              :key=\"link.key\"\n              v-bind=\"resolveLinkProps(link)\"\n              class=\"group flex items-center justify-between rounded-xl border border-gray-200/60 bg-white px-4 py-2.5 text-sm font-semibold text-gray-700 shadow-sm transition-all hover:-translate-y-0.5 hover:border-emerald-300 hover:bg-emerald-50 hover:text-emerald-700 hover:shadow-md dark:border-slate-800 dark:bg-slate-800/40 dark:text-slate-300 dark:hover:border-emerald-500/50 dark:hover:bg-slate-800 dark:hover:text-emerald-300\"\n            >\n              <span v-translate=\"link.key\"></span>\n              <IconArrowRight\n                class=\"h-3.5 w-3.5 text-gray-400 transition-all group-hover:translate-x-0.5 group-hover:text-emerald-700 dark:text-slate-500 dark:group-hover:text-emerald-400\"\n              />\n            </component>\n          </nav>\n        </div>\n      </div>\n    </div>\n  </footer>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport IconArrowRight from \"@core/icons/IconArrowRight.vue\";\nimport IconLogo from \"@core/icons/IconLogo.vue\";\nimport type { RouteLocationRaw } from \"vue-router\";\n\nconst props = defineProps<{ centered?: boolean }>();\nconst centered = computed(() => props.centered ?? false);\n\nconst contactFormRoute = computed<RouteLocationRaw>(() => ({ name: \"customer-service\" }));\n\ntype FooterLink =\n  { key: string; type: \"route\"; to: { name: string } } | { key: string; type: \"external\"; href: string };\n\nconst footerLinks = computed<FooterLink[]>(() => [\n  {\n    key: \"footer.links.privacyPolicy\",\n    type: \"route\",\n    to: { name: \"privacypolicy\" }\n  },\n  {\n    key: \"footer.links.termsConditions\",\n    type: \"route\",\n    to: { name: \"terms\" }\n  },\n  {\n    key: \"footer.links.transparency\",\n    type: \"external\",\n    href: \"/download/openness\"\n  },\n  {\n    key: \"footer.links.dataProcessors\",\n    type: \"route\",\n    to: { name: \"dataprocessors\" }\n  },\n  {\n    key: \"footer.links.press\",\n    type: \"external\",\n    href: \"mailto:presse@finter.no\"\n  }\n]);\n\nconst resolveLinkProps = (link: (typeof footerLinks.value)[number]) => {\n  if (link.type === \"route\") {\n    return { to: link.to };\n  }\n  return { href: link.href, target: link.href.startsWith(\"mailto:\") ? undefined : \"_blank\", rel: \"noreferrer\" };\n};\n</script>\n","import script from \"./MobileHeader.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./MobileHeader.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./MobileHeader.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./MobileHeader.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","<template>\n  <div\n    class=\"xl:hidden sticky top-0 z-30 bg-white dark:bg-slate-900 border-b border-gray-200 dark:border-slate-700 transition-colors duration-300\"\n  >\n    <div class=\"max-w-6xl mx-auto px-4 py-1\">\n      <div class=\"flex items-center justify-between\">\n        <button\n          type=\"button\"\n          aria-label=\"Open navigation menu\"\n          class=\"flex items-center gap-1.5 px-2.5 py-1.5 text-gray-600 dark:text-slate-400 hover:text-gray-900 dark:hover:text-slate-200 hover:bg-gray-100 dark:hover:bg-slate-700 rounded-lg transition-colors\"\n          @click=\"openMobileSidebar\"\n        >\n          <IconMenu class=\"w-6 h-6\" />\n          <span v-translate=\"'common.menu'\" class=\"text-sm font-medium\"></span>\n        </button>\n        <RouterLink\n          v-prefetch-route=\"'payment'\"\n          :to=\"{ name: 'payment' }\"\n          aria-label=\"YouPark\"\n          class=\"inline-flex items-center leading-none\"\n        >\n          <IconLogo />\n        </RouterLink>\n        <div class=\"flex items-center gap-1\">\n          <button\n            v-if=\"canShowQuickNav\"\n            type=\"button\"\n            :aria-label=\"translate('quickNav.ariaLabel')\"\n            class=\"p-2 text-gray-500 dark:text-slate-400 hover:text-emerald-700 dark:hover:text-emerald-400 hover:bg-gray-100 dark:hover:bg-slate-700 rounded-lg transition-colors\"\n            @click=\"openQuickNav\"\n          >\n            <IconSearch class=\"w-5 h-5\" />\n          </button>\n          <LanguageSwitcher compact />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport LanguageSwitcher from \"@core/components/shared/LanguageSwitcher.vue\";\nimport { useNavigation } from \"@core/composables/state/useNavigation\";\nimport { useQuickNav } from \"@core/composables/state/useQuickNav\";\nimport IconLogo from \"@core/icons/IconLogo.vue\";\nimport IconMenu from \"@core/icons/IconMenu.vue\";\nimport IconSearch from \"@core/icons/IconSearch.vue\";\n\nimport { useTranslate } from \"@common/composables/useTranslate\";\n\nimport { prefetchRouteDirective as vPrefetchRoute } from \"@/router/prefetchRouteDirective\";\n\nconst translate = useTranslate();\nconst { openMobileSidebar } = useNavigation();\nconst { open: openQuickNav, canShow: canShowQuickNav } = useQuickNav();\n</script>\n","import script from \"./MobileSidebar.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./MobileSidebar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./MobileSidebar.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./MobileSidebar.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","<template>\n  <div v-if=\"showMobileSidebar\" class=\"fixed inset-0 bg-black/50 z-40 xl:hidden\" @click=\"closeMobileSidebar\"></div>\n\n  <aside\n    ref=\"sidebarRef\"\n    :class=\"[\n      'fixed top-0 left-0 h-full bg-white dark:bg-slate-900 z-50 w-80 transform transition-all duration-300 ease-in-out overflow-y-auto xl:hidden',\n      showMobileSidebar ? 'translate-x-0' : '-translate-x-full'\n    ]\"\n  >\n    <div class=\"p-4\">\n      <div class=\"flex items-center justify-between mb-4\">\n        <RouterLink :to=\"{ name: 'payment' }\" aria-label=\"YouPark\" class=\"inline-flex\">\n          <IconLogo class=\"h-8\" />\n        </RouterLink>\n        <button\n          type=\"button\"\n          aria-label=\"Close navigation menu\"\n          class=\"p-2 text-gray-600 dark:text-white hover:text-gray-900 dark:hover:text-slate-200 hover:bg-gray-100 dark:hover:bg-slate-700 rounded-lg transition-colors\"\n          @click=\"closeMobileSidebar\"\n        >\n          <IconX class=\"w-6 h-6\" />\n        </button>\n      </div>\n\n      <div class=\"mb-3\">\n        <LanguageSwitcher />\n      </div>\n\n      <div class=\"mb-3\">\n        <ThemeToggle layout=\"sidebar\" />\n      </div>\n\n      <div class=\"mb-4\">\n        <UserProfileCard />\n      </div>\n\n      <NavigationMenu />\n    </div>\n  </aside>\n</template>\n\n<script setup lang=\"ts\">\nimport { onBeforeUnmount, onMounted, ref, watch } from \"vue\";\n\nimport LanguageSwitcher from \"@core/components/shared/LanguageSwitcher.vue\";\nimport NavigationMenu from \"@core/components/shared/NavigationMenu.vue\";\nimport UserProfileCard from \"@core/components/shared/UserProfileCard.vue\";\nimport { useNavigation } from \"@core/composables/state/useNavigation\";\nimport { useRouterContext } from \"@core/composables/state/useRouteContext\";\nimport IconLogo from \"@core/icons/IconLogo.vue\";\nimport IconX from \"@core/icons/IconX.vue\";\n\nimport ThemeToggle from \"../components/ThemeToggle.vue\";\n\nconst { showMobileSidebar, closeMobileSidebar } = useNavigation();\nconst sidebarRef = ref<HTMLElement | null>(null);\nconst router = useRouterContext();\nlet removeAfterEach: (() => void) | undefined;\n\nwatch(showMobileSidebar, (isOpen, wasOpen) => {\n  if (!isOpen && wasOpen && sidebarRef.value) {\n    sidebarRef.value.scrollTop = 0;\n  }\n});\n\nonMounted(() => {\n  removeAfterEach = router.afterEach(() => {\n    closeMobileSidebar();\n  });\n});\n\nonBeforeUnmount(() => {\n  if (removeAfterEach) {\n    removeAfterEach();\n    removeAfterEach = undefined;\n  }\n});\n</script>\n","var map = {\n  \"./en/remit.ts\": [\n    \"63711\",\n    [\n      9739\n    ]\n  ],\n  \"./en/manualApproval.ts\": [\n    \"75565\",\n    [\n      3209\n    ]\n  ],\n  \"./en/vehicleRegistry.ts\": [\n    \"33365\",\n    [\n      3270\n    ]\n  ],\n  \"./en/youparkBookingReservations.ts\": [\n    \"89601\",\n    [\n      213\n    ]\n  ],\n  \"./en/bookings.ts\": [\n    \"37308\",\n    [\n      8928\n    ]\n  ],\n  \"./nb/enums.ts\": [\n    \"66259\",\n    [\n      9983\n    ]\n  ],\n  \"./en/youparkReports.ts\": [\n    \"51562\",\n    [\n      5686\n    ]\n  ],\n  \"./en/subscriptions.ts\": [\n    \"97760\",\n    [\n      8844\n    ]\n  ],\n  \"./en/youparkCustomerAdminAccess.ts\": [\n    \"97564\",\n    [\n      4168\n    ]\n  ],\n  \"./nb/remit.ts\": [\n    \"85128\",\n    [\n      7508\n    ]\n  ],\n  \"./nb/youparkCustomerAdminAreas.ts\": [\n    \"23981\",\n    [\n      5801\n    ]\n  ],\n  \"./nb/youparkFreeVisits.ts\": [\n    \"12244\",\n    [\n      2080\n    ]\n  ],\n  \"./nb/faq.ts\": [\n    \"83817\",\n    [\n      3893\n    ]\n  ],\n  \"./nb/statistics.ts\": [\n    \"26642\",\n    [\n      2182\n    ]\n  ],\n  \"./nb/youparkCustomerAdminAccess.ts\": [\n    \"46565\",\n    [\n      9977\n    ]\n  ],\n  \"./en/youparkFreeVisitKiosks.ts\": [\n    \"90184\",\n    [\n      7084\n    ]\n  ],\n  \"./en/receipts.ts\": [\n    \"87301\",\n    [\n      2337\n    ]\n  ],\n  \"./en/lotDocuments.ts\": [\n    \"83563\",\n    [\n      2327\n    ]\n  ],\n  \"./nb/bookings.ts\": [\n    \"27833\",\n    [\n      1493\n    ]\n  ],\n  \"./nb/priceCategoryType.ts\": [\n    \"87112\",\n    [\n      9287\n    ]\n  ],\n  \"./nb/support.ts\": [\n    \"39566\",\n    [\n      7690\n    ]\n  ],\n  \"./nb/youparkFees.ts\": [\n    \"50939\",\n    [\n      1599\n    ]\n  ],\n  \"./nb/youparkInvoices.ts\": [\n    \"98198\",\n    [\n      4698\n    ]\n  ],\n  \"./en/youparkCredit.ts\": [\n    \"22228\",\n    [\n      5528\n    ]\n  ],\n  \"./nb/receipts.ts\": [\n    \"96348\",\n    [\n      4720\n    ]\n  ],\n  \"./en/tour.ts\": [\n    \"76878\",\n    [\n      2570\n    ]\n  ],\n  \"./nb/organizations.ts\": [\n    \"18261\",\n    [\n      7705\n    ]\n  ],\n  \"./nb/youparkBookingReservations.ts\": [\n    \"29256\",\n    [\n      3892\n    ]\n  ],\n  \"./nb/audits.ts\": [\n    \"93045\",\n    [\n      6649\n    ]\n  ],\n  \"./en/common.ts\": [\n    \"69881\",\n    [\n      5445\n    ]\n  ],\n  \"./en/statistics.ts\": [\n    \"69287\",\n    [\n      3339\n    ]\n  ],\n  \"./nb/youparkTodos.ts\": [\n    \"98445\",\n    [\n      5193\n    ]\n  ],\n  \"./nb/youparkSubscriptionTemplates.ts\": [\n    \"58948\",\n    [\n      6640\n    ]\n  ],\n  \"./en/coupons.ts\": [\n    \"60077\",\n    [\n      8185\n    ]\n  ],\n  \"./nb/exports.ts\": [\n    \"61158\",\n    [\n      8194\n    ]\n  ],\n  \"./nb/vehicleRegistry.ts\": [\n    \"58302\",\n    [\n      7274\n    ]\n  ],\n  \"./en/faqCategories.ts\": [\n    \"44802\",\n    [\n      6062\n    ]\n  ],\n  \"./en/youparkTransactions.ts\": [\n    \"12992\",\n    [\n      324\n    ]\n  ],\n  \"./en/trafficControl.ts\": [\n    \"69262\",\n    [\n      6546\n    ]\n  ],\n  \"./nb/profile.ts\": [\n    \"59596\",\n    [\n      3904\n    ]\n  ],\n  \"./en/camerasOverview.ts\": [\n    \"18085\",\n    [\n      353\n    ]\n  ],\n  \"./nb/youparkCollectionProviderSettings.ts\": [\n    \"76410\",\n    [\n      110\n    ]\n  ],\n  \"./en/system.ts\": [\n    \"10385\",\n    [\n      7245\n    ]\n  ],\n  \"./en/youparkCustomerAdminAreas.ts\": [\n    \"75634\",\n    [\n      134\n    ]\n  ],\n  \"./nb/common.ts\": [\n    \"87923\",\n    [\n      1668\n    ]\n  ],\n  \"./nb/faqCategories.ts\": [\n    \"17093\",\n    [\n      8825\n    ]\n  ],\n  \"./en/profile.ts\": [\n    \"67787\",\n    [\n      1359\n    ]\n  ],\n  \"./en/youparkPaymentKiosks.ts\": [\n    \"25587\",\n    [\n      359\n    ]\n  ],\n  \"./nb/gdpr.ts\": [\n    \"37896\",\n    [\n      1892\n    ]\n  ],\n  \"./nb/invitations.ts\": [\n    \"89117\",\n    [\n      1537\n    ]\n  ],\n  \"./nb/manualApprovalReview.ts\": [\n    \"71624\",\n    [\n      9420\n    ]\n  ],\n  \"./en/faq.ts\": [\n    \"23246\",\n    [\n      7202\n    ]\n  ],\n  \"./en/youparkLotConfiguration.ts\": [\n    \"7662\",\n    [\n      3490\n    ]\n  ],\n  \"./en/youparkSubscriptionTemplates.ts\": [\n    \"40077\",\n    [\n      4145\n    ]\n  ],\n  \"./en/youparkTodos.ts\": [\n    \"3680\",\n    [\n      8100\n    ]\n  ],\n  \"./nb/lotDocuments.ts\": [\n    \"66626\",\n    [\n      5406\n    ]\n  ],\n  \"./nb/map.ts\": [\n    \"16639\",\n    [\n      49,\n      7267\n    ]\n  ],\n  \"./en/base.ts\": [\n    \"27821\",\n    [\n      7856,\n      5445,\n      4660,\n      2928,\n      8824,\n      2867,\n      7033,\n      4755,\n      889\n    ]\n  ],\n  \"./nb/system.ts\": [\n    \"64472\",\n    [\n      7804\n    ]\n  ],\n  \"./nb/users.ts\": [\n    \"5473\",\n    [\n      8821\n    ]\n  ],\n  \"./nb/youpark.ts\": [\n    \"30702\",\n    [\n      1013,\n      6640,\n      2080,\n      110,\n      2227,\n      6710,\n      9977,\n      5803,\n      4698,\n      2121,\n      5193,\n      5801,\n      7002,\n      3656,\n      787,\n      1599,\n      3892,\n      9714\n    ]\n  ],\n  \"./en/youparkCollectionProviderSettings.ts\": [\n    \"77405\",\n    [\n      2793\n    ]\n  ],\n  \"./nb/base.ts\": [\n    \"20908\",\n    [\n      9983,\n      1668,\n      2967,\n      9165,\n      2395,\n      1790,\n      7690,\n      9287,\n      8752\n    ]\n  ],\n  \"./en/exports.ts\": [\n    \"13357\",\n    [\n      3041\n    ]\n  ],\n  \"./nb/youparkPaymentKiosks.ts\": [\n    \"2962\",\n    [\n      6710\n    ]\n  ],\n  \"./en/youpark.ts\": [\n    \"77257\",\n    [\n      3490,\n      7879,\n      4145,\n      2793,\n      5528,\n      4168,\n      359,\n      324,\n      8885,\n      7084,\n      8100,\n      134,\n      1167,\n      8239,\n      5686,\n      4860,\n      213,\n      3829\n    ]\n  ],\n  \"./nb/addressSearch.ts\": [\n    \"22621\",\n    [\n      2289\n    ]\n  ],\n  \"./en/signIn.ts\": [\n    \"52134\",\n    [\n      6418\n    ]\n  ],\n  \"./nb/telemetry.ts\": [\n    \"8294\",\n    [\n      9698\n    ]\n  ],\n  \"./nb/tour.ts\": [\n    \"10571\",\n    [\n      2711\n    ]\n  ],\n  \"./nb/priceMatrixAdmin.ts\": [\n    \"50594\",\n    [\n      5438\n    ]\n  ],\n  \"./nb/home.ts\": [\n    \"69630\",\n    [\n      3538\n    ]\n  ],\n  \"./nb/paymentSources.ts\": [\n    \"24385\",\n    [\n      4533\n    ]\n  ],\n  \"./en/enums.ts\": [\n    \"60548\",\n    [\n      7856\n    ]\n  ],\n  \"./en/quickNav.ts\": [\n    \"32996\",\n    [\n      2928\n    ]\n  ],\n  \"./en/applications.ts\": [\n    \"47079\",\n    [\n      5811\n    ]\n  ],\n  \"./en/youparkInvoices.ts\": [\n    \"60761\",\n    [\n      8885\n    ]\n  ],\n  \"./en/footer.ts\": [\n    \"8079\",\n    [\n      2867\n    ]\n  ],\n  \"./en/youparkPlus.ts\": [\n    \"30841\",\n    [\n      9029\n    ]\n  ],\n  \"./nb/youparkCluster.ts\": [\n    \"42686\",\n    [\n      7002\n    ]\n  ],\n  \"./en/index.ts\": [\n    \"35454\",\n    [\n      3490,\n      7879,\n      4145,\n      2793,\n      5528,\n      4168,\n      359,\n      7742,\n      324,\n      8885,\n      7856,\n      7084,\n      5445,\n      8100,\n      134,\n      1167,\n      8239,\n      5686,\n      4660,\n      2928,\n      8824,\n      4860,\n      2867,\n      7033,\n      213,\n      4755,\n      9435,\n      8844,\n      3829,\n      900,\n      7202,\n      9739,\n      904,\n      3464,\n      8928,\n      2722,\n      2570,\n      1359,\n      4651,\n      889,\n      1329,\n      5811,\n      197,\n      3270,\n      6546,\n      353,\n      6970,\n      8185,\n      7159,\n      7245,\n      3209,\n      3038,\n      27,\n      6418,\n      2337,\n      9544,\n      2327,\n      9535,\n      7730,\n      3339,\n      3650,\n      5186\n    ]\n  ],\n  \"./nb/fingerprint.ts\": [\n    \"86341\",\n    [\n      1481\n    ]\n  ],\n  \"./nb/quickNav.ts\": [\n    \"75321\",\n    [\n      9165\n    ]\n  ],\n  \"./nb/parkingRegister.ts\": [\n    \"67840\",\n    [\n      3300\n    ]\n  ],\n  \"./en/anonymousTransaction.ts\": [\n    \"5127\",\n    [\n      4651\n    ]\n  ],\n  \"./nb/youparkFreeVisitKiosks.ts\": [\n    \"24797\",\n    [\n      2121\n    ]\n  ],\n  \"./nb/vehicles.ts\": [\n    \"34912\",\n    [\n      8524\n    ]\n  ],\n  \"./en/map.ts\": [\n    \"66260\",\n    [\n      7742,\n      3464\n    ]\n  ],\n  \"./en/manualApprovalReview.ts\": [\n    \"51169\",\n    [\n      9405\n    ]\n  ],\n  \"./en/parkingRegister.ts\": [\n    \"34407\",\n    [\n      27\n    ]\n  ],\n  \"./en/priceMatrixAdmin.ts\": [\n    \"12299\",\n    [\n      8615\n    ]\n  ],\n  \"./en/payment.ts\": [\n    \"56636\",\n    [\n      904\n    ]\n  ],\n  \"./nb/anonymousTransaction.ts\": [\n    \"6818\",\n    [\n      7222\n    ]\n  ],\n  \"./nb/coupons.ts\": [\n    \"42610\",\n    [\n      3046\n    ]\n  ],\n  \"./nb/youparkPlus.ts\": [\n    \"87586\",\n    [\n      9142\n    ]\n  ],\n  \"./en/youparkAccess.ts\": [\n    \"85379\",\n    [\n      8239\n    ]\n  ],\n  \"./en/youparkCluster.ts\": [\n    \"10867\",\n    [\n      1167\n    ]\n  ],\n  \"./nb/camerasOverview.ts\": [\n    \"80318\",\n    [\n      2805\n    ]\n  ],\n  \"./nb/priceMatrix.ts\": [\n    \"57909\",\n    [\n      49\n    ]\n  ],\n  \"./en/countries.ts\": [\n    \"90624\",\n    [\n      4660\n    ]\n  ],\n  \"./en/youparkFreeVisits.ts\": [\n    \"12059\",\n    [\n      7879\n    ]\n  ],\n  \"./nb/subscriptions.ts\": [\n    \"21127\",\n    [\n      2483\n    ]\n  ],\n  \"./en/gdpr.ts\": [\n    \"46157\",\n    [\n      8353\n    ]\n  ],\n  \"./en/telemetry.ts\": [\n    \"78333\",\n    [\n      1329\n    ]\n  ],\n  \"./en/home.ts\": [\n    \"39515\",\n    [\n      9535\n    ]\n  ],\n  \"./en/legal.ts\": [\n    \"99351\",\n    [\n      9435\n    ]\n  ],\n  \"./nb/footer.ts\": [\n    \"46954\",\n    [\n      1790\n    ]\n  ],\n  \"./nb/youparkLotConfiguration.ts\": [\n    \"85497\",\n    [\n      1013\n    ]\n  ],\n  \"./en/priceCategoryType.ts\": [\n    \"30519\",\n    [\n      4755\n    ]\n  ],\n  \"./en/paymentSources.ts\": [\n    \"72056\",\n    [\n      900\n    ]\n  ],\n  \"./nb/error.ts\": [\n    \"48303\",\n    [\n      2395\n    ]\n  ],\n  \"./nb/youparkTransactions.ts\": [\n    \"92439\",\n    [\n      5803\n    ]\n  ],\n  \"./en/youparkFees.ts\": [\n    \"17496\",\n    [\n      4860\n    ]\n  ],\n  \"./nb/trafficControl.ts\": [\n    \"6475\",\n    [\n      3871\n    ]\n  ],\n  \"./en/support.ts\": [\n    \"61317\",\n    [\n      7033\n    ]\n  ],\n  \"./en/vehicles.ts\": [\n    \"84993\",\n    [\n      197\n    ]\n  ],\n  \"./en/fingerprint.ts\": [\n    \"53862\",\n    [\n      7730\n    ]\n  ],\n  \"./nb/payment.ts\": [\n    \"22983\",\n    [\n      1171\n    ]\n  ],\n  \"./nb/youparkCredit.ts\": [\n    \"66463\",\n    [\n      2227\n    ]\n  ],\n  \"./nb/signIn.ts\": [\n    \"34155\",\n    [\n      3015\n    ]\n  ],\n  \"./nb/countries.ts\": [\n    \"30483\",\n    [\n      2967\n    ]\n  ],\n  \"./en/addressSearch.ts\": [\n    \"17222\",\n    [\n      3650\n    ]\n  ],\n  \"./en/invitations.ts\": [\n    \"18050\",\n    [\n      3038\n    ]\n  ],\n  \"./en/users.ts\": [\n    \"61934\",\n    [\n      6970\n    ]\n  ],\n  \"./nb/index.ts\": [\n    \"48061\",\n    [\n      1013,\n      6640,\n      2080,\n      110,\n      2227,\n      6710,\n      9977,\n      49,\n      5803,\n      4698,\n      9983,\n      2121,\n      1668,\n      5193,\n      5801,\n      7002,\n      3656,\n      787,\n      2967,\n      9165,\n      2395,\n      1599,\n      1790,\n      7690,\n      3892,\n      9287,\n      7916,\n      2483,\n      9714,\n      4533,\n      3893,\n      7508,\n      1171,\n      7267,\n      1493,\n      7705,\n      2711,\n      3904,\n      7222,\n      8752,\n      9698,\n      7994,\n      8524,\n      7274,\n      3871,\n      2805,\n      8821,\n      3046,\n      4170,\n      9520,\n      7804,\n      1537,\n      3300,\n      4720,\n      3015,\n      6649,\n      5406,\n      3538,\n      1481,\n      2182,\n      2289,\n      2425\n    ]\n  ],\n  \"./en/audits.ts\": [\n    \"99148\",\n    [\n      9544\n    ]\n  ],\n  \"./nb/youparkAccess.ts\": [\n    \"98076\",\n    [\n      3656\n    ]\n  ],\n  \"./en/businessInsights.ts\": [\n    \"81067\",\n    [\n      7159\n    ]\n  ],\n  \"./en/priceMatrix.ts\": [\n    \"64986\",\n    [\n      7742\n    ]\n  ],\n  \"./nb/legal.ts\": [\n    \"64584\",\n    [\n      7916\n    ]\n  ],\n  \"./en/organizations.ts\": [\n    \"4918\",\n    [\n      2722\n    ]\n  ],\n  \"./nb/manualApproval.ts\": [\n    \"6812\",\n    [\n      9520\n    ]\n  ],\n  \"./nb/youparkReports.ts\": [\n    \"4375\",\n    [\n      787\n    ]\n  ],\n  \"./nb/businessInsights.ts\": [\n    \"81198\",\n    [\n      4170\n    ]\n  ],\n  \"./nb/applications.ts\": [\n    \"39982\",\n    [\n      7994\n    ]\n  ],\n  \"./en/error.ts\": [\n    \"68012\",\n    [\n      8824\n    ]\n  ]\n};\nfunction __rspack_async_context(req) {\n  if(!__webpack_require__.o(map, req)) {\n    return Promise.resolve().then(function() {\nvar e = new Error(\"Cannot find module '\" + req + \"'\");\ne.code = 'MODULE_NOT_FOUND';\nthrow e;\n});\n  }\n\n  var ids = map[req], id = ids[0];\n  return Promise.all(ids[1].map(function(chunkId) { return __webpack_require__.e(chunkId); })).then(function() { return __webpack_require__(id); });\n}\n\n__rspack_async_context.keys = function() { return Object.keys(map); };\n__rspack_async_context.id = 88947;\nmodule.exports = __rspack_async_context;\n","import { getCurrentInstance, inject, Ref } from \"vue\";\n\nimport { TRANSLATE_LANGUAGE_KEY } from \"../directives/translate\";\nimport { translate as i18nTranslate, ValueDictionary } from \"../i18n\";\n\nexport function useTranslate() {\n  const instance = getCurrentInstance();\n  let language: Ref<string> | null = null;\n\n  if (instance) {\n    language = inject<Ref<string> | null>(TRANSLATE_LANGUAGE_KEY, null);\n  }\n\n  return (key: string, values?: ValueDictionary): string => {\n    if (language) {\n      void language.value; // Create reactive dependency\n    }\n    return i18nTranslate(key, values);\n  };\n}\n","import type { AppContext, ComponentPublicInstance, DirectiveBinding } from \"vue\";\nimport { watch, type WatchStopHandle, type Ref } from \"vue\";\n\nimport { translate, ValueDictionary } from \"../i18n\";\n\ntype TranslateBindingValue = string | { key: string; options: ValueDictionary };\n\nconst watchers = new WeakMap<HTMLElement, WatchStopHandle>();\n\nexport const TRANSLATE_LANGUAGE_KEY = Symbol(\"translateLanguage\");\n\nconst resolveLanguageRef = (binding: DirectiveBinding<TranslateBindingValue>): Ref<string> | null => {\n  const instance = binding.instance as ComponentPublicInstance | null | undefined;\n  if (!instance) {\n    return null;\n  }\n  const internalInstance = instance.$ as { appContext?: AppContext } | undefined;\n  const provides = internalInstance?.appContext?.provides;\n  if (!provides) {\n    return null;\n  }\n  const candidate: unknown = provides[TRANSLATE_LANGUAGE_KEY];\n  if (candidate && typeof candidate === \"object\") {\n    return candidate as Ref<string>;\n  }\n  return null;\n};\n\nconst translateDirective = (el: HTMLElement, binding: DirectiveBinding<TranslateBindingValue>) => {\n  const value = binding.value;\n  let translation: string;\n  if (typeof value === \"string\") {\n    translation = translate(value);\n  } else if (value.key) {\n    translation = translate(value.key, value.options);\n  } else {\n    throw Error(`Bad translate binding value format: ${JSON.stringify(value)}`);\n  }\n\n  if (typeof binding.arg === \"string\") {\n    el.setAttribute(binding.arg, translation);\n  } else {\n    el.innerHTML = translation;\n  }\n};\n\nexport default {\n  mounted(el: HTMLElement, binding: DirectiveBinding<TranslateBindingValue>) {\n    translateDirective(el, binding);\n\n    const languageRef = resolveLanguageRef(binding);\n    if (languageRef) {\n      const stopWatch = watch(languageRef, () => {\n        translateDirective(el, binding);\n      });\n\n      watchers.set(el, stopWatch);\n    }\n  },\n  updated(el: HTMLElement, binding: DirectiveBinding<TranslateBindingValue>) {\n    translateDirective(el, binding);\n  },\n  unmounted(el: HTMLElement) {\n    const stopWatch = watchers.get(el);\n    if (stopWatch) {\n      stopWatch();\n      watchers.delete(el);\n    }\n  }\n};\n","export enum LotType {\n  None = 0,\n  TollRoad,\n  ParkingLot\n}\n\nexport enum LotBusinessModelType {\n  None = 0,\n  LatePayment,\n  Surcharge,\n  ServiceFee,\n  Discount\n}\n\nexport enum AreaType {\n  None = 0,\n  TollRoads,\n  ParkingLots\n}\n\nexport enum CountryType {\n  None = 0,\n  Norway,\n  Sweden,\n  Denmark,\n  Estonia,\n  Latvia,\n  Lithuania,\n  Poland,\n  Germany,\n  France,\n  Netherland = 10,\n  Netherlands = Netherland,\n  Belgium,\n  Russia,\n  Austria,\n  Bulgaria,\n  Croatia,\n  Cyprus,\n  CzechRepublic,\n  Gibraltar,\n  Greece,\n  Hungary,\n  Ireland,\n  Italy,\n  Luxembourg,\n  Malta,\n  Portugal,\n  Slovakia,\n  Slovenia,\n  Spain,\n  UnitedKingdom,\n  Finland,\n  Romania,\n  Switzerland,\n  Serbia,\n  Albania,\n  Iceland,\n  Ukraine,\n  Kosovo,\n  Montenegro,\n  Macedonia,\n  Moldova,\n  Monaco,\n  FaroeIslands,\n  Belarus,\n  BosniaHerzegovina,\n  Andorra\n}\n\nexport enum PaymentSourceFeatureType {\n  None = 0,\n  Alpr = 1 << 0,\n  Subscription = 1 << 1\n}\n\nexport enum DebitorType {\n  None = 0,\n  Individual,\n  Company\n}\n\nexport enum UserPhoneType {\n  None = 0,\n  Landline,\n  Mobile,\n  Fax\n}\n\nexport enum UserAddressType {\n  None = 0,\n  Visiting,\n  Postal,\n  Billing\n}\n\nexport enum UserPaymentSourceType {\n  None = 0,\n  Vipps = 2,\n  Invoice = 3,\n  PaymentLink = 4,\n  CreditCardNetAxept = 5\n}\n\nexport enum UserPaymentCreditCardVendorSourceType {\n  None = 0,\n  Visa = 1,\n  Mastercard = 2,\n  MastercardSweden = 3,\n  MastercardDenmark = 4,\n  VisaSweden = 5,\n  VisaDenmark = 6,\n  VisaElectron = 7\n}\n\nexport enum VatRateType {\n  None = 0,\n  Vat25 = 1\n}\n\nexport enum LogLevel {\n  Trace = 0,\n  Debug = 1,\n  Info = 2,\n  Warn = 3,\n  Error = 4,\n  Fatal = 5\n}\n\nexport enum PowerAdapterType {\n  None = 0,\n  Elko = 1,\n  YoyoPower = 2,\n  Sikom = 3\n}\n\nexport enum BarrierOpenerType {\n  RelayCard = 1\n}\n\nexport enum YouparkAccessApplicationType {\n  AccessPad = 1\n}\n\nexport enum CollectionProviderVendorSourceType {\n  FinterAs = 1,\n  Epc = 3\n}\n\nexport enum RemitCriteriaType {\n  Daily = 1,\n  Monthly = 2\n}\n\nexport enum RemitAllocationTrancheValueType {\n  Amount = 1,\n  Percent = 2,\n  Remainder = 3\n}\n\nexport enum InvoiceType {\n  None = 0,\n  Subscription = 1,\n  Alpr = 2\n}\n\nexport enum YoupayTransactionVendorType {\n  None = 0,\n  Vipps = 2,\n  CreditCardDibs = 3,\n  Invoice = 4,\n  CreditCardNetAxept = 5,\n  AutoSync = 6\n}\n\nexport enum SubscriptionBillableOccurenceType {\n  None = 0,\n  Initial,\n  Renewal\n}\n\nexport enum SubscriptionBillablePaymentStateType {\n  None = 0,\n  PendingPostPayBilling,\n  Billed,\n  PendingPreApproval,\n  BilledFreeOfCharge,\n  PendingPrePayment,\n  ErrorPendingPrePaymentFailed = 1000\n}\n\nexport enum SubscriptionValidityPeriodType {\n  None = 0,\n  Week,\n  Month,\n  Year,\n  HalfYear,\n  Quarter\n}\n\nexport enum YoupayTransactionType {\n  None = 0,\n  Kiosk,\n  PaymentSource,\n  Subscription\n}\n\nexport enum GlobalViewModelType {\n  Account = 0,\n  Subscription,\n  ReloadCurrent\n}\n\nexport enum VehicleInfoTonnagePriceCategoryType {\n  None = 0,\n  LessThanOrEqualTo3500Kilos,\n  GreaterThan3500Kilos,\n  CarTrailer,\n  TruckCarTrailer,\n  Tractor,\n  Motorbike,\n  CampingCarTrailer,\n  CampingCar,\n  ElectricCar,\n  GreaterThan7500Kilos\n}\n\nexport enum LotSizeCategory {\n  Unknown = 0,\n  Small = 1,\n  Medium = 2,\n  Large = 3\n}\n\nexport enum DirectionType {\n  None = 0,\n  Enter = 1,\n  Exit = 2\n}\n\nexport enum ApplicationType {\n  Youpark = 1 << 4, // 16\n  Youpay = 1 << 5, // 32\n  YouparkOffloader = 1 << 6, // 64\n  Access = 1 << 7, // 128\n  FreeVisitKiosk = 1 << 8 // 256\n}\n\nexport enum SubscriptionCommunicationType {\n  None = 0,\n  ExpiresInXDays,\n  RenewalInXDays,\n  Renewal,\n  Expired,\n  DeletedByUserId,\n  RefundYoupayTransaction,\n  AddVehicle,\n  InitialPurchase,\n  InitialPaymentLink,\n  RenewalPaymentLink\n}\n\nexport enum BrowserType {\n  Chrome = 0,\n  Edge,\n  Firefox,\n  Safari,\n  Other\n}\n\nexport enum DeviceType {\n  Android = \"Android\",\n  iOS = \"iOS\",\n  Desktop = \"Desktop\"\n}\n\nexport enum SharedSubscriptionPricingType {\n  None = 0,\n  Fixed,\n  PerSpace\n}\n\nexport enum SharedSubscriptionInvoicingType {\n  None = 0,\n  Advance,\n  Post\n}\n\nexport enum TodoStatusType {\n  None = 0,\n  Approved,\n  Declined\n}\n\nexport enum BookingType {\n  None = 0,\n  Subscription\n}\n\nexport enum LotBookingReservationType {\n  None = 0,\n  Space,\n  SubscriptionSpace\n}\n\nexport enum LotBookingReservationChangeLogType {\n  None = 0,\n  AdjustedBooking,\n  CancelledBooking,\n  ExpiredBooking\n}\n\nexport enum AccessAuditType {\n  None = 0,\n  YouParkAlprResult = 1,\n  AccessPadOpenBarrier = 100\n}\n\nexport enum PriceMatrixCalculatorType {\n  None = 0,\n  RunInPeriod,\n  MinimumPrice,\n  PricePerUnit,\n  Overstay\n}\n\nexport enum PriceMatrixPeriodType {\n  None = 0,\n  Fixed,\n  Floating\n}\n\nexport enum PriceMatrixPricePerUnitType {\n  None = 0,\n  Minute = 1,\n  Hour = 2,\n  CalendarDay = 3,\n  Week = 4,\n  Visit = 6\n}\n\nexport enum RemitPaymentStatus {\n  Initial = 0,\n  InitialReadyForSendToBank = 1,\n  SendingToBank = 10,\n  Booked = 100,\n  ManuallyProcessed = 101,\n  ManualProcessingBankGenericError = 1000,\n  ManualProcessingBankInternalErrorCode = 1001,\n  ManualProcessingBankInvalidDestinationAccount = 1002,\n  ManualProcessingBankDestinationAccountClosed = 1003,\n  ManualProcessingBankInvalidSourceAccount = 1004,\n  ManualProcessingBankInsufficientBalancePending = 1005,\n  ManualProcessingBankInsufficientBalanceRejected = 1006,\n  BankCancelledByDebtor = 1007,\n  ManualProcessingBankInvalidDate = 1008,\n  ManualProcessingBankMissingCreditorNameOrAddress = 1009,\n  ManualProcessingDirectPaymentDestinationAccount = 1010\n}\n\nexport enum YouparkInvoiceCreditReasonType {\n  None = 0,\n  VehicleChangeOfOwnership = 1,\n  VehicleOwnerDeceased = 2,\n  VehicleWrecked = 3,\n  VehicleOwnerInvalidLeasingAddress = 4,\n  VehicleOwnerExpat = 5,\n  VehicleForeignClosed = 6,\n  VehicleOwnerOrganizationDissolved = 7,\n  VehicleLicensePlateNotFound = 8,\n  VehicleOwnerConfidential = 9,\n  VehicleOwnerCompanyOrganizationNbDoesNotExist = 10,\n  VehicleOwnerUnableIdentifyAddress = 11,\n  RequestedByCustomer = 12,\n  Misread = 13,\n  EmergencyVehicle = 14,\n  TechnicalFault = 15,\n  SubscriptionRelated = 16\n}\n\nexport enum YoupayCreditTransactionReasonType {\n  None = 0,\n  Credit = 1,\n  Coupon = 2,\n  FreeVisit = 3,\n  RequestedByCustomer = 4,\n  Misread = 5,\n  EmergencyVehicle = 6,\n  TechnicalFault = 7,\n  SubscriptionRelated = 8,\n  VehicleChangeOfOwnership = 9\n}\n","import { navigateTo } from \"./http\";\n\nexport const SECURE_ZONE_ERROR_CODE = \"ERR_SECURE_ZONE\";\nexport const AUTH_REQUIRED_ERROR_CODE = \"ERR_AUTH_REQUIRED\";\nconst SECURE_ZONE_REDIRECT_PATH = \"/dashboard/verify-fingerprint\";\nconst AUTH_REQUIRED_REDIRECT_PATH = \"/dashboard/sign-in\";\n\nlet secureZoneRedirectTriggered = false;\nlet authRedirectTriggered = false;\n\nconst isSecureZoneRedirectTriggered = () => secureZoneRedirectTriggered;\nconst isAuthRedirectTriggered = () => authRedirectTriggered;\n\nconst markSecureZoneRedirectTriggered = () => {\n  secureZoneRedirectTriggered = true;\n};\n\nconst markAuthRedirectTriggered = () => {\n  authRedirectTriggered = true;\n};\n\nconst buildAuthRedirectUrl = () => {\n  const currentUrl = `${window.location.pathname}${window.location.search}${window.location.hash}`;\n  return `${AUTH_REQUIRED_REDIRECT_PATH}?RedirectUrl=${encodeURIComponent(currentUrl)}`;\n};\n\nconst isSignInPage = () => window.location.pathname === AUTH_REQUIRED_REDIRECT_PATH;\n\nconst isFingerPrintVerificationPage = () =>\n  window.location.pathname.replace(/\\/+$/, \"\").toLowerCase() === SECURE_ZONE_REDIRECT_PATH;\n\nconst normalizeErrorCode = (value: unknown): string | undefined => {\n  if (typeof value !== \"string\") {\n    return undefined;\n  }\n  const trimmed = value.trim();\n  return trimmed.length > 0 ? trimmed : undefined;\n};\n\nexport const isSecureZoneError = (value: unknown): boolean => {\n  const normalized = normalizeErrorCode(value);\n  return normalized === SECURE_ZONE_ERROR_CODE;\n};\n\nexport const isAuthRequiredError = (value: unknown): boolean => {\n  const normalized = normalizeErrorCode(value);\n  return normalized === AUTH_REQUIRED_ERROR_CODE;\n};\n\nexport const triggerSecureZoneRedirect = () => {\n  if (isSecureZoneRedirectTriggered() || isFingerPrintVerificationPage()) {\n    return;\n  }\n  markSecureZoneRedirectTriggered();\n  void navigateTo(SECURE_ZONE_REDIRECT_PATH);\n};\n\nexport const triggerAuthRequiredRedirect = () => {\n  if (isAuthRedirectTriggered() || isSignInPage()) {\n    return;\n  }\n  markAuthRedirectTriggered();\n  void navigateTo(buildAuthRedirectUrl());\n};\n\nexport const ensureSecureZoneRedirectFromError = (value: unknown): string | null => {\n  if (isSecureZoneError(value)) {\n    triggerSecureZoneRedirect();\n    return SECURE_ZONE_ERROR_CODE;\n  }\n  if (isAuthRequiredError(value)) {\n    triggerAuthRequiredRedirect();\n    return AUTH_REQUIRED_ERROR_CODE;\n  }\n  if (value instanceof Error) {\n    if (isSecureZoneError(value.message)) {\n      triggerSecureZoneRedirect();\n      return SECURE_ZONE_ERROR_CODE;\n    }\n    if (isAuthRequiredError(value.message)) {\n      triggerAuthRequiredRedirect();\n      return AUTH_REQUIRED_ERROR_CODE;\n    }\n  }\n  return null;\n};\n\nexport const ensureSecureZoneRedirectFromResponse = async (response: Response): Promise<string | null> => {\n  if (response.status !== 403 && response.status !== 401) {\n    return null;\n  }\n  try {\n    const body = await response.clone().text();\n    if (isSecureZoneError(body)) {\n      triggerSecureZoneRedirect();\n      return SECURE_ZONE_ERROR_CODE;\n    }\n    if (isAuthRequiredError(body)) {\n      triggerAuthRequiredRedirect();\n      return AUTH_REQUIRED_ERROR_CODE;\n    }\n  } catch {\n    return null;\n  }\n  return null;\n};\n","import { buildQueryString, getContentDispositionFilename, navigateTo, QueryStringParam } from \"./utils/http\";\nimport {\n  AUTH_REQUIRED_ERROR_CODE,\n  ensureSecureZoneRedirectFromError,\n  ensureSecureZoneRedirectFromResponse\n} from \"./utils/secure-zone\";\n\n// TODO: FIXME\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport abstract class XhrStatus<T = any> {\n  constructor(data: T, ok: boolean, statusCode: number, errorThrown?: string) {\n    this.data = data;\n    this.ok = ok;\n    this.errorThrown = errorThrown;\n    this.statusCode = statusCode;\n  }\n\n  readonly data: T;\n  readonly ok: boolean;\n  readonly errorThrown: string | undefined;\n  readonly statusCode: number;\n}\n\nclass XhrStatusOk<T> extends XhrStatus<T> {\n  constructor(data: T) {\n    super(data, true, 200);\n  }\n}\n\nclass XhrStatusError extends XhrStatus {\n  constructor(data: unknown, errorThrown: string, statusCode: number) {\n    super(data, false, statusCode, errorThrown);\n  }\n}\n\ntype HttpMethod = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"HEAD\" | \"PATCH\";\ntype SendHttpMethod = \"POST\" | \"PUT\";\n\nclass HttpClient {\n  private antiForgeryToken = \"\";\n\n  setAntiForgeryToken(token: string) {\n    this.antiForgeryToken = token;\n  }\n\n  getAntiForgeryToken(): string {\n    return this.antiForgeryToken;\n  }\n\n  setDefaultAntiForgeryToken() {\n    const antiForgeryToken = document.getElementById(\"global-anti-forgery-token\")?.innerText;\n    if (!antiForgeryToken) {\n      throw Error(\"Missing anti forgery token\");\n    }\n    this.setAntiForgeryToken(antiForgeryToken);\n  }\n\n  /**\n   * Get resource(s)\n   * @param url\n   * @param values\n   * @param headers\n   * @param signal Request abort signal\n   * @returns Unwrapped requested resource\n   * @throws Server error, if response status is not OK\n   */\n  async getUnwrapped<T>(\n    url: string,\n    values?: Record<string, QueryStringParam>,\n    headers?: Record<string, string>,\n    signal?: AbortSignal\n  ): Promise<T> {\n    const response = await this.get<T>(url, values, headers, signal);\n    if (!response.ok) throw new Error(response.errorThrown);\n\n    return response.data;\n  }\n\n  /**\n   * Get text/html resource\n   * @param url\n   * @param values\n   * @param signal Request abort signal\n   * @returns Unwrapped requested resource\n   * @throws Server error, if response status is not OK\n   */\n  async getContent(\n    url: string,\n    values?: Record<string, string | number | boolean>,\n    signal?: AbortSignal\n  ): Promise<string> {\n    const response = await this.get<string>(url, values, undefined, signal);\n    if (!response.ok) throw new Error(response.errorThrown);\n\n    return response.data;\n  }\n\n  /**\n   * Get resource(s)\n   * @param url\n   * @param values\n   * @param headers\n   * @param signal Request abort signal\n   * @returns Requested resource wrapped into status object\n   */\n  get<T>(\n    url: string,\n    values?: Record<string, QueryStringParam>,\n    headers?: Record<string, string>,\n    signal?: AbortSignal\n  ): Promise<XhrStatus<T>> {\n    return this.getRequest(url, values, headers, undefined, signal);\n  }\n\n  getCrossOrigin<T>(url: string): Promise<XhrStatus<T>> {\n    return this.getRequest(url, undefined, undefined, true);\n  }\n\n  private getRequest<T>(\n    url: string,\n    values?: Record<string, QueryStringParam>,\n    headers?: Record<string, string>,\n    cors?: boolean,\n    signal?: AbortSignal\n  ): Promise<XhrStatus<T>> {\n    url = values ? `${url}${buildQueryString(values)}` : url;\n    return this.request(url, \"GET\", undefined, headers, {}, !!cors, signal);\n  }\n\n  /**\n   * Get resource(s) metadata\n   * @param url\n   * @param values\n   * @param headers\n   * @returns Requested resource wrapped into status object\n   */\n  head(url: string, values?: Record<string, unknown>, headers?: Record<string, string>): Promise<XhrStatus> {\n    return this.request(url, \"HEAD\", values, headers);\n  }\n\n  /**\n   * Post resource\n   * @param url\n   * @param values\n   * @param headers\n   * @param cors\n   */\n  post<T>(\n    url: string,\n    values: Record<string, unknown>,\n    headers?: Record<string, string>,\n    cors?: boolean\n  ): Promise<XhrStatus<T>> {\n    return this.request(url, \"POST\", values, headers, {}, cors);\n  }\n\n  postForm(url: string, values: Record<string, QueryStringParam>) {\n    const form = document.createElement(\"form\");\n    form.method = \"post\";\n    form.action = url;\n    form.style.display = \"none\";\n\n    if (this.isSameOriginRequest(url)) {\n      if (!this.antiForgeryToken) {\n        this.setDefaultAntiForgeryToken();\n      }\n\n      const tokenField = document.createElement(\"input\");\n      tokenField.type = \"hidden\";\n      tokenField.name = \"__RequestVerificationToken\";\n      tokenField.value = this.antiForgeryToken;\n      form.appendChild(tokenField);\n    }\n\n    for (const [key, value] of Object.entries(values)) {\n      if (value === undefined || value === null) {\n        continue;\n      }\n\n      if (Array.isArray(value)) {\n        for (const item of value) {\n          if (item === undefined || item === null) {\n            continue;\n          }\n          const input = document.createElement(\"input\");\n          input.type = \"hidden\";\n          input.name = key;\n          input.value = String(item);\n          form.appendChild(input);\n        }\n        continue;\n      }\n\n      const input = document.createElement(\"input\");\n      input.type = \"hidden\";\n      input.name = key;\n      input.value = String(value);\n      form.appendChild(input);\n    }\n\n    document.body.appendChild(form);\n    form.submit();\n    requestAnimationFrame(() => {\n      form.remove();\n    });\n  }\n\n  /**\n   * Put resource\n   * @param url\n   * @param values\n   * @param headers\n   * @param cors\n   */\n  put<T>(\n    url: string,\n    values: Record<string, unknown>,\n    headers?: Record<string, string>,\n    cors?: boolean\n  ): Promise<XhrStatus<T>> {\n    return this.request(url, \"PUT\", values, headers, {}, cors);\n  }\n\n  /**\n   * Patch resource\n   * @param url\n   * @param values\n   * @param headers\n   * @param cors\n   */\n  patch(url: string, values: Record<string, unknown>, headers?: Record<string, string>, cors?: boolean) {\n    return this.request(url, \"PATCH\", values, headers, {}, cors);\n  }\n\n  /**\n   * Delete resource\n   * @param url\n   * @param values\n   * @param headers\n   * @param cors\n   */\n  delete<T>(url: string): Promise<XhrStatus<T>>;\n  delete<T>(url: string, values: Record<string, unknown>): Promise<XhrStatus<T>>;\n  delete<T>(\n    url: string,\n    values?: Record<string, unknown>,\n    headers?: Record<string, string>,\n    cors?: boolean\n  ): Promise<XhrStatus<T>> {\n    return this.request(url, \"DELETE\", values, headers, {}, cors);\n  }\n\n  /**\n   * Send resource\n   * @param method\n   * @param url\n   * @param values\n   * @param headers\n   * @param cors\n   */\n  send(\n    method: SendHttpMethod,\n    url: string,\n    values: Record<string, unknown>,\n    headers?: Record<string, string>,\n    files?: Record<string, Blob>,\n    cors?: boolean\n  ) {\n    return this.request(url, method, values, headers, files, cors);\n  }\n\n  // TODO: split to different methods based on input and output, e.g. files, form, json, text etc.\n  private async request<T>(\n    url: string,\n    method: HttpMethod,\n    body?: Record<string, unknown>,\n    extraHeaders?: Record<string, string>,\n    files?: Record<string, Blob>,\n    cors?: boolean,\n    signal?: AbortSignal\n  ): Promise<XhrStatus<T>> {\n    let formData: FormData | undefined = undefined;\n\n    const fileEntries = Object.values(files ?? {});\n    if (fileEntries.length > 0) {\n      formData = new FormData();\n\n      for (const [key, value] of Object.entries(body ?? {})) {\n        formData.set(key, value as string | Blob);\n      }\n\n      let fileIndex = 0;\n      for (const value of fileEntries) {\n        formData.set(`upload${fileIndex++}`, value);\n      }\n\n      body = undefined;\n    }\n\n    const headers = new Headers();\n\n    if (this.isSameOriginRequest(url)) {\n      headers.set(\"X-RequestVerificationToken\", this.antiForgeryToken);\n      this.setCurrentLanguageHeader(headers);\n    }\n\n    const contentTypeJson = \"application/json\";\n\n    if (formData) {\n      headers.set(\"Accept\", contentTypeJson);\n      headers.set(\"X-Requested-With\", \"XMLHttpRequest\");\n    } else if (!cors) {\n      headers.set(\"Accept\", contentTypeJson);\n      headers.set(\"Content-Type\", contentTypeJson);\n      headers.set(\"X-Requested-With\", \"XMLHttpRequest\");\n    }\n\n    if (extraHeaders) {\n      for (const [key, value] of Object.entries(extraHeaders)) {\n        if (headers.has(key)) {\n          console.warn(`Overwriting existing header: ${key}. Value: ${value}`);\n        }\n        headers.set(key, value);\n      }\n    }\n\n    const request: RequestInit = {\n      method: method,\n      body: body ? JSON.stringify(body) : formData,\n      headers: headers,\n      signal: signal\n    };\n\n    try {\n      const response = await fetch(url, request);\n\n      const redirectErrorCode = await ensureSecureZoneRedirectFromResponse(response);\n      if (redirectErrorCode) {\n        return new XhrStatusError(null, redirectErrorCode, response.status);\n      }\n\n      const isJsonResponse = response.headers.get(\"content-type\")?.includes(\"json\") ?? false;\n      if (response.redirected && !isJsonResponse) {\n        await navigateTo(response.url);\n        return new XhrStatusOk<T>(response.url as T);\n      }\n      if (url.startsWith(\"/api\")) {\n        if (isJsonResponse && method !== \"HEAD\") {\n          const data = (await response.json()) as T & { responseStatus?: { errorCode: string } };\n          if (response.status === 200) {\n            return new XhrStatusOk<T>(data);\n          }\n\n          return data.responseStatus\n            ? new XhrStatusError(data.responseStatus, data.responseStatus.errorCode, response.status)\n            : new XhrStatusError(data, response.statusText, response.status);\n        }\n\n        if (response.status === 200) {\n          return new XhrStatusOk<T>((await response.text()) as T);\n        }\n\n        return new XhrStatusError(await response.text(), response.statusText, response.status);\n      }\n\n      if (!response.ok) {\n        return new XhrStatusError(null, response.statusText, response.status);\n      }\n\n      if (!isJsonResponse) {\n        return new XhrStatusOk<T>((await response.text()) as T);\n      }\n\n      const data = (await response.json()) as T & { payload?: T } & {\n        error: boolean;\n        message?: string;\n        payload: string;\n        status: number;\n      };\n      return !data.error\n        ? new XhrStatusOk<T>(data.payload ?? data)\n        : new XhrStatusError(data.payload ?? null, data.message ?? data.payload, data.status);\n    } catch (errorThrown: unknown) {\n      const redirectErrorCode = ensureSecureZoneRedirectFromError(errorThrown);\n      if (redirectErrorCode) {\n        const statusCode = redirectErrorCode === AUTH_REQUIRED_ERROR_CODE ? 401 : 403;\n        return new XhrStatusError(null, redirectErrorCode, statusCode);\n      }\n      return new XhrStatusError(null, errorThrown as string, 500);\n    }\n  }\n\n  async sendRawRequest(input: RequestInfo | URL, init?: RequestInit): Promise<Response> {\n    try {\n      const response = await fetch(input, this.buildRawRequestInit(input, init));\n      await ensureSecureZoneRedirectFromResponse(response);\n      return response;\n    } catch (error) {\n      ensureSecureZoneRedirectFromError(error);\n      throw error;\n    }\n  }\n\n  downloadRequest(url: string, values: Record<string, string>): Promise<boolean> {\n    const formData = new FormData();\n    formData.append(\"__RequestVerificationToken\", this.antiForgeryToken);\n\n    for (const key of Object.keys(values)) {\n      formData.append(key, values[key]);\n    }\n\n    const triggerClick = (anchorElement: HTMLAnchorElement) => {\n      let event: MouseEvent;\n\n      try {\n        event = new MouseEvent(\"click\");\n      } catch {\n        event = new MouseEvent(\"click\", {\n          bubbles: true,\n          cancelable: true,\n          view: window,\n          detail: 0,\n          screenX: 0,\n          screenY: 0,\n          clientX: 0,\n          clientY: 0,\n          ctrlKey: false,\n          shiftKey: false,\n          altKey: false,\n          metaKey: false,\n          button: 0,\n          relatedTarget: null\n        });\n      }\n\n      anchorElement.dispatchEvent(event);\n    };\n\n    return this.sendRawRequest(url, {\n      method: \"POST\",\n      body: formData\n    }).then(async response => {\n      if (!response.ok) {\n        return false;\n      }\n\n      const contentDisposition = response.headers.get(\"Content-Disposition\");\n      let filename = \"download\";\n\n      if (contentDisposition) {\n        const parsedName = getContentDispositionFilename(contentDisposition);\n        if (parsedName) {\n          filename = parsedName;\n        }\n      }\n\n      const blob = await response.blob();\n      const file = new File([blob], filename, {\n        type: \"octet/stream\"\n      });\n\n      const downloadUrl = window.URL.createObjectURL(file);\n\n      const htmlAnchorElement = document.createElement(\"a\");\n      htmlAnchorElement.style.display = \"none\";\n      htmlAnchorElement.setAttribute(\"href\", downloadUrl);\n      htmlAnchorElement.setAttribute(\"download\", filename);\n      document.body.appendChild(htmlAnchorElement);\n      setTimeout(() => triggerClick(htmlAnchorElement), 0);\n\n      return true;\n    });\n  }\n\n  private isSameOriginRequest(input: RequestInfo | URL) {\n    const url =\n      typeof input === \"string\"\n        ? input\n        : typeof Request !== \"undefined\" && input instanceof Request\n          ? input.url\n          : input instanceof URL\n            ? input.href\n            : \"\";\n\n    if (!url) {\n      return false;\n    }\n\n    if (url.startsWith(\"/\")) {\n      return true;\n    }\n\n    if (typeof window === \"undefined\") {\n      return false;\n    }\n\n    try {\n      return new URL(url, window.location.origin).origin === window.location.origin;\n    } catch {\n      return false;\n    }\n  }\n\n  private buildRawRequestInit(input: RequestInfo | URL, init?: RequestInit): RequestInit | undefined {\n    if (!this.isSameOriginRequest(input)) {\n      return init;\n    }\n\n    const headers = new Headers(typeof Request !== \"undefined\" && input instanceof Request ? input.headers : undefined);\n    if (init?.headers) {\n      for (const [key, value] of new Headers(init.headers)) {\n        headers.set(key, value);\n      }\n    }\n\n    this.setCurrentLanguageHeader(headers);\n    return {\n      ...init,\n      headers\n    };\n  }\n\n  private setCurrentLanguageHeader(headers: Headers) {\n    if (headers.has(\"X-Language-Tag\")) {\n      return;\n    }\n    const languageHeader = this.getCurrentLanguageHeader();\n    if (languageHeader) {\n      headers.set(\"X-Language-Tag\", languageHeader);\n    }\n  }\n\n  private getCurrentLanguageHeader() {\n    if (typeof document === \"undefined\") {\n      return \"\";\n    }\n    const language = document.documentElement.lang.trim().toLowerCase();\n    return language.length > 0 ? language : \"\";\n  }\n}\n\nexport default new HttpClient();\n","import { isNullOrWhiteSpace } from \"../utils/string\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type TranslationValue = string | number | boolean | null | TranslationDictionary | any[];\n\nexport type TranslationDictionary = {\n  [key: string]: TranslationValue;\n};\n\nexport type ValueDictionary = Record<string, string | number | null | undefined>;\n\nexport type TranslationFn = (t: string, values?: ValueDictionary) => string;\n\nconst isObject = (o: unknown): o is Record<string, unknown> =>\n  o != null && typeof o === \"object\" && !Array.isArray(o) && o.constructor === Object;\n\nconst mergeDictionaries = (target: TranslationDictionary, source: TranslationDictionary): TranslationDictionary => {\n  const result: TranslationDictionary = Array.isArray(target) || Array.isArray(source) ? source : { ...target };\n  Object.entries(source).forEach(([key, value]) => {\n    const current = result[key];\n    if (isObject(current) && isObject(value)) {\n      result[key] = mergeDictionaries(current, value);\n    } else {\n      result[key] = value;\n    }\n  });\n  return result;\n};\n\nconst stringReplacer = (template: string, data: ValueDictionary) => {\n  const pattern = /{{\\s*(\\w+?)\\s*}}/g; // {{property}}\n  return template.replace(pattern, (_, token: string) => data[token]?.toString() ?? \"\");\n};\n\nlet dictionary: TranslationDictionary;\n\nexport function init(messages: TranslationDictionary) {\n  dictionary = mergeDictionaries({}, messages);\n}\n\nexport function extend(messages: TranslationDictionary) {\n  const base = isObject(dictionary) ? dictionary : {};\n  dictionary = mergeDictionaries(base, messages);\n}\n\nexport function translate(translation: string, values?: ValueDictionary) {\n  if (typeof translation !== \"string\" || !isObject(dictionary)) {\n    return \"\";\n  }\n\n  values = isObject(values) ? values : {};\n\n  let fragments = translation.split(\".\");\n  if (fragments.length === 0) {\n    fragments = [translation];\n  }\n\n  let localizationText: TranslationValue = dictionary;\n  while (fragments.length > 0) {\n    const key = fragments[0];\n    if (isObject(localizationText) && !Array.isArray(localizationText) && key in localizationText) {\n      localizationText = localizationText[key];\n    }\n    fragments.shift();\n  }\n\n  return typeof localizationText === \"string\" && !isNullOrWhiteSpace(localizationText)\n    ? stringReplacer(localizationText, values)\n    : translation;\n}\n\nexport function isValidLanguage(language?: string): boolean {\n  if (!language) {\n    return false;\n  }\n\n  const languageLowerCase = language.toLowerCase();\n  switch (languageLowerCase) {\n    case \"nb\":\n    case \"en\":\n      return true;\n  }\n  return false;\n}\n\nexport function resolveSupportedLanguage(language?: string): \"nb\" | \"en\" {\n  switch (language?.toLowerCase()) {\n    case \"nb\":\n    case \"no\":\n    case \"nn\":\n      return \"nb\";\n    default:\n      return \"en\";\n  }\n}\n","export function isNullOrUndefined(value: unknown): value is null | undefined {\n  return value === null || value === undefined;\n}\n\nexport function isNullUndefinedOrWhiteSpace(value: string | null | undefined): value is null | undefined | \"\" {\n  if (isNullOrUndefined(value) || typeof value !== \"string\") {\n    return true;\n  }\n\n  const whiteSpace = \" \";\n  for (const current of value) {\n    if (current !== whiteSpace) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nexport function exhaustiveGuard(value: never): never {\n  throw Error(`ERROR! Reached forbidden guard function with unexpected value: ${JSON.stringify(value)}`);\n}\n","export function debounce<T extends (...args: any[]) => void>(func: T, wait: number): (...args: Parameters<T>) => void {\n  let timeout: ReturnType<typeof setTimeout>;\n\n  return (...args: Parameters<T>): void => {\n    clearTimeout(timeout);\n    timeout = setTimeout(() => func(...args), wait);\n  };\n}\n","import { VehicleInfoTonnagePriceCategoryType } from \"../enums\";\n\nimport { isNullOrUndefined } from \"./any\";\n\ntype Enum = Record<string, number> & Record<number, string>;\n\nclass EnumValues {\n  static getNamesAndValues(e: Enum) {\n    return this.getNames(e).map(x => ({ name: x, value: e[x] }));\n  }\n\n  private static getNames(e: Enum) {\n    return Object.values(e).filter((v): v is string => typeof v === \"string\");\n  }\n}\n\ntype InferEnumValue<E> = E extends Record<string, infer V> ? (V extends number ? V : never) : never;\n\nexport function getEnumValue<E extends object>(value: unknown, enumeration: E): InferEnumValue<E> {\n  if (isNullOrUndefined(value) || value === \"\") {\n    return 0 as InferEnumValue<E>;\n  }\n\n  const enumValues = EnumValues.getNamesAndValues(enumeration as Enum);\n  const stringValue = typeof value === \"string\" ? value.trim() : null;\n  const normalizedString = stringValue ? stringValue.toLowerCase() : null;\n  const intValue = typeof value === \"number\" ? value : parseInt(stringValue ?? \"\", 10);\n\n  for (const current of enumValues) {\n    if (normalizedString && current.name.toLowerCase() === normalizedString) {\n      return current.value as InferEnumValue<E>;\n    }\n    if (current.value === intValue) {\n      return current.value as InferEnumValue<E>;\n    }\n  }\n\n  return (enumValues.length > 0 ? enumValues[0].value : 0) as InferEnumValue<E>;\n}\n\nexport function getEnumName(value: unknown, enumeration: Record<number, string>): string | undefined {\n  if (isNullOrUndefined(value) || value === \"\") {\n    return undefined;\n  }\n\n  const enumValues = EnumValues.getNamesAndValues(enumeration as Enum);\n  const stringValue = typeof value === \"string\" ? value.trim() : null;\n  const normalizedString = stringValue ? stringValue.toLowerCase() : null;\n  const intValue = typeof value === \"number\" ? value : parseInt(stringValue ?? \"\", 10);\n\n  for (const current of enumValues) {\n    if (normalizedString && current.name.toLowerCase() === normalizedString) {\n      return current.name;\n    }\n    if (current.value === intValue) {\n      return current.name;\n    }\n  }\n\n  return undefined;\n}\n\nexport function isEnumValue(value: unknown, enumeration: Record<number, string>): boolean {\n  if (isNullOrUndefined(value) || value === \"\") {\n    return false;\n  }\n\n  const enumValues = EnumValues.getNamesAndValues(enumeration as Enum);\n  const stringValue = typeof value === \"string\" ? value.trim() : null;\n  const normalizedString = stringValue ? stringValue.toLowerCase() : null;\n  const intValue = typeof value === \"number\" ? value : parseInt(stringValue ?? \"\", 10);\n\n  return enumValues.some(current => {\n    if (normalizedString && current.name.toLowerCase() === normalizedString) {\n      return true;\n    }\n    return current.value === intValue;\n  });\n}\n\nexport const allWeightTonnageTypes = [\n  VehicleInfoTonnagePriceCategoryType.LessThanOrEqualTo3500Kilos,\n  VehicleInfoTonnagePriceCategoryType.GreaterThan3500Kilos,\n  VehicleInfoTonnagePriceCategoryType.GreaterThan7500Kilos\n];\n\nexport function isWeightTonnageType(value: VehicleInfoTonnagePriceCategoryType) {\n  return allWeightTonnageTypes.includes(getEnumValue(value, VehicleInfoTonnagePriceCategoryType));\n}\n\nexport function containsAllWeightTonnageTypes(values: VehicleInfoTonnagePriceCategoryType[]) {\n  const weightTonnageTypes: VehicleInfoTonnagePriceCategoryType[] = [];\n  values.forEach(value => {\n    const enumValue = getEnumValue(value, VehicleInfoTonnagePriceCategoryType);\n    if (allWeightTonnageTypes.includes(enumValue)) {\n      weightTonnageTypes.push(enumValue);\n    }\n  });\n  return weightTonnageTypes.length === allWeightTonnageTypes.length;\n}\n\nexport function isOnlyAllWeightTonnageTypes(values: VehicleInfoTonnagePriceCategoryType[]) {\n  return values.length === allWeightTonnageTypes.length && containsAllWeightTonnageTypes(values);\n}\n\nexport function containsWeightTonnageType(values: VehicleInfoTonnagePriceCategoryType[]) {\n  return values.some(value => isWeightTonnageType(value));\n}\n\nexport function containsSameTonnageType(\n  lhs: VehicleInfoTonnagePriceCategoryType[],\n  rhs: VehicleInfoTonnagePriceCategoryType[]\n) {\n  if (lhs.length === 0 || rhs.length === 0) {\n    return false;\n  }\n  for (const lhsTonnageType of lhs) {\n    for (const rhsTonnageType of rhs) {\n      if (lhsTonnageType === rhsTonnageType) {\n        return true;\n      }\n    }\n  }\n  return false;\n}\n\nexport function isSameTonnageTypes(\n  lhs: VehicleInfoTonnagePriceCategoryType[],\n  rhs: VehicleInfoTonnagePriceCategoryType[]\n) {\n  if (lhs.length === 0 || rhs.length === 0) {\n    return false;\n  }\n  let totalMatching = 0;\n  for (const lhsTonnageType of lhs) {\n    for (const rhsTonnageType of rhs) {\n      if (lhsTonnageType === rhsTonnageType) {\n        totalMatching++;\n      }\n    }\n  }\n  return totalMatching === lhs.length && totalMatching === rhs.length;\n}\n","import { isNullOrUndefined, isNullUndefinedOrWhiteSpace } from \"./any\";\nimport type { QueryStringParam } from \"./http/query\";\n\nexport async function downloadBlob(response: Response, openInNewTab = false) {\n  const filename = getContentDispositionFilename(response.headers.get(\"Content-Disposition\"));\n  if (!filename) {\n    throw new Error(\"Unable to parse filename.\");\n  }\n\n  const blob = await response.blob();\n  const file = new File([blob], filename, { type: \"application/octet-stream\" });\n  const downloadUrl = URL.createObjectURL(file);\n\n  if (openInNewTab) {\n    window.open(downloadUrl, \"_blank\");\n    setTimeout(() => URL.revokeObjectURL(downloadUrl), 5000);\n    return;\n  }\n\n  const a = document.createElement(\"a\");\n  a.style.display = \"none\";\n  a.href = downloadUrl;\n  a.download = filename;\n  document.body.appendChild(a);\n  setTimeout(() => a.click(), 0);\n  setTimeout(() => {\n    URL.revokeObjectURL(downloadUrl);\n    a.remove();\n  }, 5000);\n}\n\nexport function getUrlParam(name: string, url: string): string | null {\n  const escapedName = name.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n  const pattern = new RegExp(`([?&])${escapedName}=`, \"i\");\n  const match = pattern.exec(url);\n  if (!match) {\n    return null;\n  }\n\n  const valueStart = match.index + match[0].length;\n  let nextDelimiter = url.indexOf(\"&\", valueStart);\n  const hashIndex = url.indexOf(\"#\", valueStart);\n  let fragment = \"\";\n\n  if (hashIndex !== -1 && (nextDelimiter === -1 || hashIndex < nextDelimiter)) {\n    fragment = url.slice(hashIndex);\n    nextDelimiter = hashIndex;\n  }\n\n  const rawValue = url.slice(valueStart, nextDelimiter === -1 ? url.length : nextDelimiter);\n  return `${decodeURIComponent(rawValue)}${fragment}`;\n}\n\nexport function extractQueryParams(url: string): Record<string, string> {\n  const urlObj = new URL(url);\n\n  const pathSegments = urlObj.pathname.split(\"/\");\n  const path = pathSegments[pathSegments.length - 1];\n\n  const params: Record<string, string> = {};\n\n  if (!isNullUndefinedOrWhiteSpace(path)) {\n    params.path = path;\n  }\n\n  urlObj.searchParams.forEach((value, key) => {\n    params[key] = value;\n  });\n\n  return params;\n}\n\nexport type { QueryStringParam } from \"./http/query\";\n\nexport function getContentDispositionFilename(value: string | null): string | null {\n  if (!value) return null;\n\n  const parts = value\n    .split(\";\")\n    .map(part => part.trim())\n    .filter(Boolean);\n\n  let fallback: string | undefined;\n\n  for (const part of parts) {\n    const [rawKey, ...rawValueParts] = part.split(\"=\");\n    if (!rawKey || rawValueParts.length === 0) {\n      continue;\n    }\n\n    const key = rawKey.trim().toLowerCase();\n    const rawValue = rawValueParts.join(\"=\").trim();\n\n    if (key === \"filename*\" || key === \"filename_\") {\n      const valueCandidate = decodeContentDispositionValue(rawValue, true);\n      if (valueCandidate) {\n        return valueCandidate;\n      }\n    }\n\n    if (!fallback && key === \"filename\") {\n      fallback = decodeContentDispositionValue(rawValue, false);\n    }\n  }\n\n  return fallback ?? null;\n}\n\nexport function navigateTo(url: string) {\n  return new Promise<void>(resolve => {\n    window.addEventListener(\"unload\", () => resolve());\n    window.location.assign(url);\n  });\n}\n\nexport function buildQueryString(values: Record<string, QueryStringParam>) {\n  return `?${buildQueryStringKeyValuePairs(Object.entries(values))}`;\n}\n\nfunction buildQueryStringKeyValuePairs(values: [string, QueryStringParam][]): string {\n  return values\n    .filter(([, value]) => !isNullOrUndefined(value))\n    .map(([key, value]) =>\n      Array.isArray(value)\n        ? buildQueryStringKeyValuePairs(value.map(x => [key, x]))\n        : `${key}=${encodeURIComponent(value ?? \"\")}`\n    )\n    .join(\"&\");\n}\n\nfunction decodeContentDispositionValue(value: string, encoded: boolean) {\n  const unquoted = value.startsWith('\"') && value.endsWith('\"') ? value.slice(1, -1) : value;\n  if (encoded) {\n    const encodingMatch = /^([^']*)''(.*)$/.exec(unquoted);\n    if (encodingMatch) {\n      const encodedValue = encodingMatch[2];\n      return decodePercentEncodedValue(encodedValue);\n    }\n  }\n\n  return decodePercentEncodedValue(unquoted);\n}\n\nfunction decodePercentEncodedValue(value: string) {\n  try {\n    return decodeURIComponent(value);\n  } catch {\n    return value;\n  }\n}\n","export type ResolveServiceErrorKey = {\n  (error: unknown): string | undefined;\n  (error: unknown, fallback: string): string;\n};\n\nexport type AspNetCoreMvcErrorPayload = {\n  errorCode?: unknown;\n  fieldName?: unknown;\n  message?: unknown;\n};\n\nexport type AspNetCoreMvcResponseStatus = {\n  errorCode?: unknown;\n  message?: unknown;\n  errors?: unknown;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n  value != null && typeof value === \"object\" && !Array.isArray(value);\n\nconst asRecord = (value: unknown): Record<string, unknown> | null => (isRecord(value) ? value : null);\n\nconst resolveServiceErrorKeyInternal = (error: unknown, fallback?: string): string | undefined => {\n  if (typeof error === \"string\") {\n    const trimmed = error.trim();\n    if (trimmed.length > 0) {\n      return trimmed;\n    }\n  }\n  if (error instanceof Error) {\n    const message = error.message?.trim();\n    if (message && message.length > 0) {\n      return message;\n    }\n  }\n  if (typeof fallback === \"string\") {\n    const trimmed = fallback.trim();\n    if (trimmed.length > 0) {\n      return trimmed;\n    }\n  }\n  return undefined;\n};\n\nexport const resolveServiceErrorKey = resolveServiceErrorKeyInternal as ResolveServiceErrorKey;\n\nexport const normalizeApiString = (value: unknown): string => {\n  if (typeof value !== \"string\") {\n    return \"\";\n  }\n  return value.trim();\n};\n\nconst normalizeErrorMessages = (value: unknown): string[] => {\n  if (Array.isArray(value)) {\n    return value.map(normalizeApiString).filter(Boolean);\n  }\n\n  if (typeof value === \"string\") {\n    return [normalizeApiString(value)].filter(Boolean);\n  }\n\n  return [];\n};\n\nexport const parseApiResponsePayload = (value: unknown): unknown => {\n  if (typeof value !== \"string\") {\n    return value;\n  }\n\n  const trimmed = value.trim();\n  if (!trimmed.startsWith(\"{\") && !trimmed.startsWith(\"[\")) {\n    return value;\n  }\n\n  try {\n    return JSON.parse(trimmed);\n  } catch {\n    return value;\n  }\n};\n\nexport const parseApiErrorPayload = (value: unknown): unknown => {\n  if (value instanceof Error) {\n    return parseApiResponsePayload(value.message);\n  }\n  return parseApiResponsePayload(value);\n};\n\nexport const normalizeApiResponseErrors = (value: unknown): AspNetCoreMvcErrorPayload[] => {\n  if (Array.isArray(value)) {\n    return value.flatMap(entry => {\n      if (typeof entry === \"string\") {\n        return [{ message: entry }];\n      }\n      return entry != null && typeof entry === \"object\" ? [entry as AspNetCoreMvcErrorPayload] : [];\n    });\n  }\n\n  if (!isRecord(value)) {\n    return [];\n  }\n\n  return Object.entries(value).flatMap(([fieldName, messages]) =>\n    normalizeErrorMessages(messages).map(message => ({\n      fieldName,\n      message\n    }))\n  );\n};\n\nexport const asResponseStatus = (data: unknown): AspNetCoreMvcResponseStatus | null => {\n  const record = asRecord(data);\n  if (!record) {\n    return null;\n  }\n  return record;\n};\n\nexport const mapServiceErrorKeyWithPrefixes = (\n  error: unknown,\n  fallback: string,\n  map: Record<string, string>,\n  prefixes: string[]\n): string => {\n  const key = resolveServiceErrorKey(error, fallback);\n  if (prefixes.some(prefix => key.startsWith(`${prefix}.`))) {\n    return key;\n  }\n  return map[key] ?? fallback;\n};\n\nexport const mapServiceErrorKey = (error: unknown, fallback: string, map: Record<string, string>): string => {\n  return mapServiceErrorKeyWithPrefixes(error, fallback, map, []);\n};\n\nexport const mapServiceErrorKeyOrCodeWithPrefixes = (\n  error: unknown,\n  fallback: string,\n  map: Record<string, string>,\n  prefixes: string[]\n): string => {\n  const key = extractErrorCode(error) || resolveServiceErrorKey(error, fallback);\n  if (prefixes.some(prefix => key.startsWith(`${prefix}.`))) {\n    return key;\n  }\n  return map[key] ?? key;\n};\n\nexport const mapServiceErrorKeyOrCode = (error: unknown, fallback: string, map: Record<string, string>): string => {\n  return mapServiceErrorKeyOrCodeWithPrefixes(error, fallback, map, []);\n};\n\nconst findFirstCode = (errors: AspNetCoreMvcErrorPayload[]): string => {\n  return (\n    errors\n      .map(error => normalizeApiString(error.errorCode) || normalizeApiString(error.message))\n      .find(errorCode => errorCode.length > 0) ?? \"\"\n  );\n};\n\nexport const extractErrorCode = (value: unknown): string => {\n  const parsedError = parseApiErrorPayload(value);\n  if (typeof parsedError === \"string\") {\n    return normalizeApiString(parsedError);\n  }\n\n  const directCode = findFirstCode(normalizeApiResponseErrors(parsedError));\n  if (directCode.length > 0) {\n    return directCode;\n  }\n\n  if (!isRecord(parsedError)) {\n    return \"\";\n  }\n\n  const nestedStatus = normalizeApiString(parsedError.errorCode);\n  if (nestedStatus.length > 0) {\n    return nestedStatus;\n  }\n\n  const nestedMessage = normalizeApiString(parsedError.message);\n  if (nestedMessage.length > 0) {\n    return nestedMessage;\n  }\n\n  const responseStatus = asResponseStatus(parsedError.responseStatus);\n  const responseStatusCode = extractErrorCode(responseStatus);\n  if (responseStatusCode.length > 0) {\n    return responseStatusCode;\n  }\n\n  const nestedErrors = parsedError.errors;\n  if (nestedErrors != null) {\n    const errorsCode = findFirstCode(normalizeApiResponseErrors(nestedErrors));\n    if (errorsCode.length > 0) {\n      return errorsCode;\n    }\n  }\n\n  return \"\";\n};\n\nexport const resolveErrorCode = (errorThrown: unknown, data: unknown): string => {\n  const resolvedError = parseApiErrorPayload(errorThrown);\n  const resolvedData = parseApiResponsePayload(data);\n  const responseStatus = asResponseStatus(resolvedData) ?? asResponseStatus(resolvedError);\n  const responseStatusCode = normalizeApiString(responseStatus?.errorCode);\n  const responseStatusNestedCode = findFirstCode(normalizeApiResponseErrors(responseStatus?.errors));\n  const dataCode = extractErrorCode(resolvedData);\n  const errorCode = extractErrorCode(resolvedError);\n\n  if (dataCode.length > 0 && dataCode !== \"ValidationException\") {\n    return dataCode;\n  }\n\n  if (responseStatusNestedCode.length > 0) {\n    return responseStatusNestedCode;\n  }\n\n  if (responseStatusCode.length > 0 && responseStatusCode !== \"ValidationException\") {\n    return responseStatusCode;\n  }\n\n  return errorCode || responseStatusCode || dataCode;\n};\n\nexport const readResponseErrorCode = async (response: Response): Promise<string | null> => {\n  try {\n    const payload = (await response.json()) as { responseStatus?: { errorCode?: string | null } } | null;\n    const code = payload?.responseStatus?.errorCode;\n    if (typeof code === \"string\") {\n      const trimmed = code.trim();\n      return trimmed.length > 0 ? trimmed : null;\n    }\n  } catch {\n    return null;\n  }\n  return null;\n};\n","import { isNullOrUndefined } from \"./any\";\nimport { normalizeString } from \"./strings\";\n\nexport const ObjectIdEmpty = \"000000000000000000000000\";\n\nexport function isObjectIdEmpty(objectId: string | null | undefined): boolean {\n  return objectId === ObjectIdEmpty;\n}\n\nexport function isObjectId(objectId: string | null | undefined): boolean {\n  return !isNullOrUndefined(objectId) && /^[0-9a-fA-F]{24}$/.test(objectId);\n}\n\nexport function isObjectIdValid(objectId: string | null | undefined): boolean {\n  return isObjectId(objectId) && !isObjectIdEmpty(objectId);\n}\n\nexport const normalizeObjectId = (value: unknown, fallback = \"\"): string => {\n  const normalized = normalizeString(value);\n  return isObjectId(normalized) ? normalized : fallback;\n};\n\nexport const normalizeObjectIdList = (value: unknown): string[] => {\n  if (!Array.isArray(value)) {\n    return [];\n  }\n  const ids = value.map(entry => normalizeObjectId(entry)).filter(id => id.length > 0 && !isObjectIdEmpty(id));\n  return Array.from(new Set(ids));\n};\n","import { ObjectIdEmpty } from \"./object-id\";\n\nexport const cloneDeep = <T>(value: T): T => {\n  try {\n    return structuredClone(value);\n  } catch {\n    return JSON.parse(JSON.stringify(value)) as T;\n  }\n};\n\nexport const normalizeObjectId = (value: unknown, fallback: string = ObjectIdEmpty): string => {\n  if (typeof value !== \"string\") {\n    return fallback;\n  }\n  const trimmed = value.trim();\n  return trimmed.length > 0 ? trimmed : fallback;\n};\n\nexport const normalizeObjectIdArray = (value: unknown): string[] => {\n  if (!Array.isArray(value)) {\n    return [];\n  }\n  const unique = new Set<string>();\n  value.forEach(entry => {\n    const normalized = normalizeObjectId(typeof entry === \"string\" ? entry : String(entry ?? \"\"), \"\");\n    if (normalized && normalized !== ObjectIdEmpty) {\n      unique.add(normalized);\n    }\n  });\n  return Array.from(unique.values());\n};\n\nexport const normalizeBoolean = (value: unknown): boolean => value === true;\n\nexport { ObjectIdEmpty };\n","import { isNullOrUndefined } from \"./any\";\n\nexport function formatLicensePlate(value: string | null | undefined): string {\n  return value?.replace(/\\s+/g, \"\").toUpperCase() ?? \"\";\n}\n\nexport function sanitizeLicenseplate(value: string | null): string | null {\n  if (isNullOrWhiteSpace(value)) {\n    return null;\n  }\n\n  const licensePlateDisallowedCharacters = [\",\", \".\", \":\", \";\", \"-\"];\n  for (const current of licensePlateDisallowedCharacters) {\n    if (value.includes(current)) {\n      return null;\n    }\n  }\n\n  if (value.length < 2 || value.length > 15) {\n    return null;\n  }\n\n  return value.toUpperCase();\n}\n\nexport function extractDigits(value: string | null | undefined) {\n  if (!value) {\n    return \"\";\n  }\n  const matches = value.match(/\\d+/g);\n  return matches ? matches.join(\"\") : \"\";\n}\n\nexport function isNullOrWhiteSpace(value: string | null | undefined): value is null | undefined | \"\" {\n  if (isNullOrUndefined(value) || typeof value !== \"string\") {\n    return true;\n  }\n\n  const whiteSpace = \" \";\n  for (const current of value) {\n    if (current !== whiteSpace) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n// https://medium.freecodecamp.com/three-ways-to-title-case-a-sentence-in-javascript-676a9175eb27#.25m5eqft3\nexport function toTitleCase(value: string) {\n  if (isNullOrWhiteSpace(value)) {\n    return null;\n  }\n  return value\n    .toLowerCase()\n    .split(\" \")\n    .map(word => (word ? word.replace(word[0], word[0].toUpperCase()) : \"\"))\n    .join(\" \");\n}\n\nexport function toPersonNameCase(value: string | null | undefined): string {\n  if (typeof value !== \"string\") {\n    return \"\";\n  }\n  const normalized = value.trim().replace(/\\s+/g, \" \");\n  if (normalized.length === 0) {\n    return \"\";\n  }\n  const capitalize = (segment: string) => (segment ? segment[0].toUpperCase() + segment.slice(1) : \"\");\n  const applyDelimiter = (input: string, delimiter: string) =>\n    input\n      .split(delimiter)\n      .map(part => capitalize(part))\n      .join(delimiter);\n  const formatWord = (word: string) => applyDelimiter(applyDelimiter(word, \"'\"), \"-\");\n  return normalized.toLowerCase().split(\" \").map(formatWord).join(\" \");\n}\n\n// data:image/jpeg;base64,${base64}\nexport async function base64ToBlob(base64: string) {\n  const res = await fetch(base64);\n  return await res.blob();\n}\n\nexport function formatMacAddress(macAddress: string) {\n  return (\n    macAddress\n      .match(/.{1,2}/gi)\n      ?.splice(0, 6)\n      .join(\":\") ?? \"\"\n  );\n}\n\nexport function isTrue(value: string | boolean | null | undefined) {\n  return value === \"true\" || value === \"1\";\n}\n\nconst stripHtmlRegex = /<(.|\\n)*?>/g;\n\nexport function sanitizeText(text: string | null | undefined): string | null {\n  if (!text || text.trim() === \"\") {\n    return null;\n  }\n  const sanitizedText = removeHtml(text);\n  return sanitizedText ? sanitizedText.replace(/\\s+/g, \" \").trim() : null;\n}\n\nexport function removeHtml(html: string | null | undefined): string | null {\n  if (!html || html.trim() === \"\") {\n    return null;\n  }\n\n  let sanitized = html;\n  let previousLength;\n  let iterations = 0;\n  const maxIterations = 1000;\n\n  // Keep applying the regex until no more changes occur (multi-pass sanitization)\n  do {\n    previousLength = sanitized.length;\n    sanitized = sanitized.replace(stripHtmlRegex, \"\");\n    iterations++;\n  } while (sanitized.length !== previousLength && iterations < maxIterations);\n\n  // Throw exception if max iterations exceeded to prevent returning potentially vulnerable string\n  if (iterations >= maxIterations) {\n    throw new Error(\n      \"HTML sanitization exceeded maximum iterations limit. Input may contain malicious content designed to cause infinite loops.\"\n    );\n  }\n\n  return sanitized;\n}\n\nexport function containsHtml(inputString: string | null | undefined): boolean {\n  if (!inputString || inputString.trim() === \"\") {\n    return false;\n  }\n  return stripHtmlRegex.test(inputString);\n}\n","const toStringValue = (value: unknown): string => {\n  if (typeof value === \"string\") {\n    return value;\n  }\n  if (value == null) {\n    return \"\";\n  }\n  if (typeof value === \"number\" || typeof value === \"boolean\") {\n    return String(value);\n  }\n  return \"\";\n};\n\nexport const normalizeString = (value: unknown): string => {\n  if (typeof value === \"string\") {\n    return value.trim().replace(/\\s+/g, \" \");\n  }\n  if (typeof value === \"number\" || typeof value === \"boolean\") {\n    return String(value);\n  }\n  return \"\";\n};\n\nexport const normalizeStringWithFallback = (value: unknown, fallback = \"\"): string => {\n  if (typeof value !== \"string\") {\n    return fallback;\n  }\n  const trimmed = value.trim();\n  return trimmed.length > 0 ? trimmed : fallback;\n};\n\nexport const toNullableStringValue = (value: unknown): string | null => {\n  return typeof value === \"string\" ? value : null;\n};\n\nexport const toOptionalString = (value: unknown): string | undefined => {\n  const trimmed = normalizeStringWithFallback(value, \"\");\n  return trimmed.length > 0 ? trimmed : undefined;\n};\n\nexport const toTrimmedString = (value: unknown): string => {\n  return toStringValue(value).trim();\n};\n\nexport const toNullableTrimmedString = (value: unknown): string | null => {\n  const trimmed = toTrimmedString(value);\n  return trimmed.length > 0 ? trimmed : null;\n};\n\nexport const toOptionalTrimmedString = (value: unknown): string | undefined => {\n  const trimmed = toTrimmedString(value);\n  return trimmed.length > 0 ? trimmed : undefined;\n};\n\nexport const normalizeNullableString = (value: unknown): string | null => {\n  return toNullableTrimmedString(value);\n};\n\nexport const normalizeStringArray = (value: unknown): string[] => {\n  if (!Array.isArray(value)) {\n    return [];\n  }\n  return value.map(entry => toTrimmedString(entry)).filter(entry => entry.length > 0);\n};\n","export const lotConfigurationTabKeys = [\n  \"settings\",\n  \"priceSetup\",\n  \"display\",\n  \"contactpersons\",\n  \"cameras\",\n  \"connections\",\n  \"contract\",\n  \"documents\",\n  \"businessmodel\",\n  \"autopass\"\n] as const;\n\nexport type LotConfigurationTabKey = (typeof lotConfigurationTabKeys)[number];\n","import { ref, type Ref } from \"vue\";\n\nimport type { MapFilter } from \"@/services/mapService\";\n\ntype MapView = \"map\" | \"map-parking\" | \"map-toll\";\n\ninterface MapViewState {\n  mapView: Ref<MapView>;\n}\n\nconst createMapViewState = (): MapViewState => ({\n  mapView: ref<MapView>(\"map-parking\")\n});\n\nlet sharedMapViewState: MapViewState | null = null;\n\nconst getMapViewState = () => {\n  sharedMapViewState ??= createMapViewState();\n  return sharedMapViewState;\n};\n\nconst setMapViewFromFilter = (filter: MapFilter | null) => {\n  const mapView = getMapViewState().mapView;\n  if (filter === \"toll\") {\n    mapView.value = \"map-toll\";\n    return;\n  }\n  if (filter === \"parking\") {\n    mapView.value = \"map-parking\";\n    return;\n  }\n  mapView.value = \"map\";\n};\n\nconst setMapViewExplicit = (view: MapView) => {\n  getMapViewState().mapView.value = view;\n};\n\nconst useMapViewState = () => getMapViewState().mapView;\n\nexport { setMapViewExplicit, setMapViewFromFilter, useMapViewState };\n","import { useErrorModal } from \"@core/composables/state/useErrorModal\";\nimport { useLanguage } from \"@core/composables/state/useLanguage\";\nimport type { PaymentSource, PlusSubscription, UserDeviceOrigin, UserProfile, Vehicle } from \"@core/types/models\";\n\nimport { useTranslate } from \"@common/composables/useTranslate\";\nimport { resolveSupportedLanguage } from \"@common/i18n\";\n\ninterface Permissions {\n  statistics: boolean;\n  telemetry: boolean;\n  applications: boolean;\n  users: boolean;\n  organizations: boolean;\n  audits: boolean;\n  remits: boolean;\n  vehicleRegistry: boolean;\n  manualApproval: boolean;\n  trafficControl: boolean;\n  camerasOverview: boolean;\n  system: boolean;\n  youparkTodos: boolean;\n  youparkCustomerSubscriptionsRead: boolean;\n  youparkSubscriptions: boolean;\n  youparkTemplateSubscriptionWrite: boolean;\n  youparkInvoice: boolean;\n  youparkInvoiceWrite: boolean;\n  youpayAccounting: boolean;\n  youpayRefund: boolean;\n  youparkFreeVisitRead: boolean;\n  youparkFreeVisitImport: boolean;\n  youparkAccounting: boolean;\n  access: boolean;\n  youparkSettings: boolean;\n}\n\ninterface Lot {\n  id: string;\n  organizationId: string;\n  organizationName: string;\n}\n\ninterface CookieNamesConfig {\n  authentication: string;\n  language: string;\n}\n\ninterface AppConfig {\n  isAuthenticated: boolean;\n  userProfile: UserProfile;\n  isEmployee: boolean;\n  isImpersonatedUser: boolean;\n  isNativeClient: boolean;\n  permissions: Permissions;\n  canAccessYouParkCustomer: boolean;\n  isYouParkCustomer: boolean;\n  lots: Lot[];\n  vehicles?: Vehicle[];\n  paymentSources?: PaymentSource[];\n  languageCookieTag?: string | null;\n  publicViews: string[];\n  cookieNames: CookieNamesConfig;\n}\n\nconst defaultPermissions: Permissions = {\n  statistics: false,\n  telemetry: false,\n  applications: false,\n  users: false,\n  organizations: false,\n  audits: false,\n  remits: false,\n  vehicleRegistry: false,\n  manualApproval: false,\n  trafficControl: false,\n  system: false,\n  camerasOverview: false,\n  youparkTodos: false,\n  youparkCustomerSubscriptionsRead: false,\n  youparkSubscriptions: false,\n  youparkTemplateSubscriptionWrite: false,\n  youparkInvoice: false,\n  youparkInvoiceWrite: false,\n  youpayAccounting: false,\n  youpayRefund: false,\n  youparkFreeVisitRead: false,\n  youparkFreeVisitImport: false,\n  youparkAccounting: false,\n  access: false,\n  youparkSettings: false\n};\n\nconst defaultLanguage = resolveSupportedLanguage(document.documentElement.lang);\n\nconst anonymousProfile: UserProfile = {\n  firstName: null,\n  middleName: null,\n  lastName: null,\n  fullName: null,\n  email: \"\",\n  registeredDate: \"\",\n  phoneNumber: \"\",\n  languageTag: defaultLanguage,\n  emailTransactionsAfterPurchase: false,\n  analyticsEnabled: false,\n  customerContactInfoEnabled: false,\n  shouldShowContactInfoConfirmation: false,\n  devices: []\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n  return typeof value === \"object\" && value !== null;\n}\n\nfunction toStringOrNull(value: unknown): string | null {\n  return typeof value === \"string\" && value.trim().length > 0 ? value : null;\n}\n\nfunction toStringOrEmpty(value: unknown): string {\n  return typeof value === \"string\" ? value : \"\";\n}\n\nfunction normalizeDeviceOrigin(value: unknown): UserDeviceOrigin {\n  if (typeof value !== \"string\") {\n    return \"browser\";\n  }\n\n  const normalized = value.trim().toLowerCase();\n  if (normalized === \"android\" || normalized === \"ios\" || normalized === \"browser\") {\n    return normalized;\n  }\n\n  return \"browser\";\n}\n\nfunction normalizeDevices(raw: unknown): UserProfile[\"devices\"] {\n  if (!Array.isArray(raw)) {\n    return [];\n  }\n  const devices: UserProfile[\"devices\"] = [];\n  raw.forEach(device => {\n    if (!isRecord(device)) {\n      return;\n    }\n    devices.push({\n      id: toStringOrEmpty(device.id),\n      ipAddress: toStringOrEmpty(device.ipAddress),\n      browser: toStringOrEmpty(device.browser),\n      os: toStringOrEmpty(device.os),\n      origin: normalizeDeviceOrigin(device.origin),\n      country: toStringOrEmpty(device.country),\n      signedInAt: toStringOrEmpty(device.signedInAt),\n      confirmedAt: typeof device.confirmedAt === \"string\" ? device.confirmedAt : null\n    });\n  });\n  return devices;\n}\n\nfunction normalizeUserProfile(raw: unknown): UserProfile {\n  if (!isRecord(raw)) {\n    return { ...anonymousProfile };\n  }\n\n  const profile: UserProfile = {\n    firstName: toStringOrNull(raw.firstName),\n    middleName: toStringOrNull(raw.middleName),\n    lastName: toStringOrNull(raw.lastName),\n    fullName: toStringOrNull(raw.fullName),\n    email: toStringOrEmpty(raw.email),\n    registeredDate: toStringOrEmpty(raw.registeredDate),\n    phoneNumber: toStringOrEmpty(raw.phoneNumber),\n    languageTag: toStringOrEmpty(raw.languageTag) || defaultLanguage,\n    emailTransactionsAfterPurchase: raw.emailTransactionsAfterPurchase === true,\n    analyticsEnabled: raw.analyticsEnabled === true,\n    customerContactInfoEnabled: raw.customerContactInfoEnabled === true,\n    shouldShowContactInfoConfirmation: raw.shouldShowContactInfoConfirmation === true,\n    devices: normalizeDevices(raw.devices)\n  };\n\n  if (isRecord(raw.plusSubscription)) {\n    const plusSubscription = {\n      isValid: raw.plusSubscription.isValid === true,\n      validUntilDate:\n        typeof raw.plusSubscription.validUntilDate === \"string\" ? raw.plusSubscription.validUntilDate : undefined,\n      expiredDate: typeof raw.plusSubscription.expiredDate === \"string\" ? raw.plusSubscription.expiredDate : undefined,\n      automaticRenewalEnabled: raw.plusSubscription.automaticRenewalEnabled === true\n    } satisfies PlusSubscription;\n    profile.plusSubscription = plusSubscription;\n  }\n\n  return profile;\n}\n\nfunction normalizePermissions(raw: unknown): Permissions {\n  if (!isRecord(raw)) {\n    return { ...defaultPermissions };\n  }\n\n  return {\n    statistics: raw.statistics === true,\n    telemetry: raw.telemetry === true,\n    applications: raw.applications === true,\n    users: raw.users === true,\n    organizations: raw.organizations === true,\n    audits: raw.audits === true,\n    remits: raw.remits === true,\n    vehicleRegistry: raw.vehicleRegistry === true,\n    manualApproval: raw.manualApproval === true,\n    trafficControl: raw.trafficControl === true,\n    system: raw.system === true,\n    camerasOverview: raw.camerasOverview === true,\n    youparkTodos: raw.youparkTodos === true,\n    youparkCustomerSubscriptionsRead: raw.youparkCustomerSubscriptionsRead === true,\n    youparkSubscriptions: raw.youparkSubscriptions === true,\n    youparkTemplateSubscriptionWrite: raw.youparkTemplateSubscriptionWrite === true,\n    youparkInvoice: raw.youparkInvoice === true,\n    youparkInvoiceWrite: raw.youparkInvoiceWrite === true,\n    youpayAccounting: raw.youpayAccounting === true,\n    youpayRefund: raw.youpayRefund === true,\n    youparkFreeVisitRead: raw.youparkFreeVisitRead === true,\n    youparkFreeVisitImport: raw.youparkFreeVisitImport === true,\n    youparkAccounting: raw.youparkAccounting === true,\n    access: raw.access === true,\n    youparkSettings: raw.youparkSettings === true\n  };\n}\n\nfunction normalizeLots(raw: unknown): Lot[] {\n  if (!Array.isArray(raw)) {\n    return [];\n  }\n  const lots: Lot[] = [];\n  raw.forEach(item => {\n    if (!isRecord(item)) {\n      return;\n    }\n    lots.push({\n      id: toStringOrEmpty(item.id),\n      organizationId: toStringOrEmpty(item.organizationId),\n      organizationName: toStringOrEmpty(item.organizationName)\n    });\n  });\n  return lots;\n}\n\nfunction normalizeCookieNames(raw: unknown): CookieNamesConfig {\n  if (!isRecord(raw)) {\n    return { authentication: \"\", language: \"\" };\n  }\n\n  return {\n    authentication: toStringOrEmpty(raw.authentication),\n    language: toStringOrEmpty(raw.language)\n  };\n}\n\nfunction createAnonymousConfig(\n  languageCookieTag?: string | null,\n  publicViews?: string[],\n  cookieNamesRaw?: unknown\n): AppConfig {\n  return {\n    isAuthenticated: false,\n    userProfile: { ...anonymousProfile },\n    isEmployee: false,\n    isImpersonatedUser: false,\n    isNativeClient: false,\n    permissions: { ...defaultPermissions },\n    canAccessYouParkCustomer: false,\n    isYouParkCustomer: false,\n    lots: [],\n    vehicles: [],\n    paymentSources: [],\n    languageCookieTag: languageCookieTag ?? null,\n    publicViews: Array.isArray(publicViews) ? publicViews : [],\n    cookieNames: normalizeCookieNames(cookieNamesRaw)\n  };\n}\n\nfunction normalizePublicViews(raw: unknown): string[] {\n  if (!Array.isArray(raw)) {\n    return [];\n  }\n  return raw\n    .filter((value): value is string => typeof value === \"string\")\n    .map(value => value.trim())\n    .filter(value => value.length > 0);\n}\n\nfunction normalizeConfig(raw: unknown): AppConfig {\n  if (!isRecord(raw)) {\n    return createAnonymousConfig();\n  }\n\n  const languageCookieTagValue = toStringOrEmpty(raw.languageCookieTag);\n  const normalizedLanguageCookieTag = languageCookieTagValue.length > 0 ? languageCookieTagValue : null;\n  const isAuthenticated = raw.isAuthenticated !== false;\n  const publicViews = normalizePublicViews(raw.publicViews);\n  if (!isAuthenticated) {\n    return createAnonymousConfig(normalizedLanguageCookieTag, publicViews, raw.cookieNames);\n  }\n\n  return {\n    isAuthenticated: true,\n    userProfile: normalizeUserProfile(raw.userProfile),\n    isEmployee: raw.isEmployee === true,\n    isImpersonatedUser: raw.isImpersonatedUser === true,\n    isNativeClient: raw.isNativeClient === true,\n    permissions: normalizePermissions(raw.permissions),\n    canAccessYouParkCustomer: raw.canAccessYouParkCustomer === true,\n    isYouParkCustomer: raw.isYouParkCustomer === true,\n    lots: normalizeLots(raw.lots),\n    vehicles: Array.isArray(raw.vehicles) ? (raw.vehicles as Vehicle[]) : [],\n    paymentSources: Array.isArray(raw.paymentSources) ? (raw.paymentSources as PaymentSource[]) : [],\n    languageCookieTag: normalizedLanguageCookieTag,\n    publicViews,\n    cookieNames: normalizeCookieNames(raw.cookieNames)\n  };\n}\n\nfunction loadConfigFromDOM(): unknown {\n  const configElement = document.getElementById(\"dashboard-config\");\n  if (!configElement?.textContent) {\n    throw new Error(\"Application configuration not found in DOM\");\n  }\n\n  try {\n    return JSON.parse(configElement.textContent);\n  } catch (err) {\n    console.error(\"Failed to parse app config from DOM:\", err);\n    throw new Error(\"Invalid application configuration\", { cause: err });\n  }\n}\n\nconst appConfig: AppConfig = normalizeConfig(loadConfigFromDOM());\n\nexport const maybeTurnstileSiteKey: string | undefined = document.getElementById(\n  \"cloudflare-turnstile-site-key\"\n)?.textContent;\n\nif (!maybeTurnstileSiteKey) {\n  throw new Error(\"Turnstile site key not found in DOM\");\n}\n\nexport const turnstileSiteKey: string = maybeTurnstileSiteKey;\n\ntry {\n  const { adoptServerLanguage, persistStartingLanguage, normalizeLanguageTag, toLanguageTag } = useLanguage();\n  const cookieLanguage = appConfig.languageCookieTag ? normalizeLanguageTag(appConfig.languageCookieTag) : null;\n  const language = cookieLanguage ?? normalizeLanguageTag(appConfig.userProfile.languageTag);\n  const serverRenderedLanguage = normalizeLanguageTag(defaultLanguage);\n  if (language === serverRenderedLanguage) {\n    adoptServerLanguage(language);\n  } else {\n    persistStartingLanguage(language);\n  }\n  appConfig.userProfile.languageTag = toLanguageTag(language);\n  appConfig.languageCookieTag = toLanguageTag(language);\n} catch (error: unknown) {\n  let resolvedMessage: string | null = null;\n  if (error instanceof Error && typeof error.message === \"string\") {\n    resolvedMessage = error.message;\n  } else if (typeof error === \"string\") {\n    resolvedMessage = error;\n  }\n  const logMessage = resolvedMessage ?? \"Unknown error\";\n  console.error(\"Error setting language:\", logMessage);\n  const translateFn = useTranslate();\n  useErrorModal().showError(translateFn(\"common.errorLanguageInit\"), translateFn(\"common.errorTitle\"));\n}\n\nexport function readDashboardAccess(): { isAuthenticated: boolean; publicViews: readonly string[] } {\n  return {\n    isAuthenticated: appConfig.isAuthenticated,\n    publicViews: appConfig.publicViews\n  };\n}\n\nexport function useAppConfig() {\n  const translate = useTranslate();\n  const translateKey = (key: string | undefined, fallback?: string) => {\n    if (!key) {\n      return fallback ?? \"\";\n    }\n    const value = translate(key);\n    return value !== key ? value : (fallback ?? key);\n  };\n\n  return {\n    config: appConfig,\n    userProfile: appConfig.userProfile,\n    translate,\n    translateKey,\n    turnstileSiteKey\n  } as const;\n}\n","import { computed } from \"vue\";\n\nimport { useAppConfig } from \"@core/composables/data/useAppConfig\";\n\ninterface Permissions {\n  statistics: boolean;\n  telemetry: boolean;\n  applications: boolean;\n  users: boolean;\n  organizations: boolean;\n  audits: boolean;\n  remits: boolean;\n  vehicleRegistry: boolean;\n  manualApproval: boolean;\n  trafficControl: boolean;\n  system: boolean;\n  camerasOverview: boolean;\n  youparkTodos: boolean;\n  youparkCustomerSubscriptionsRead: boolean;\n  youparkSubscriptions: boolean;\n  youparkTemplateSubscriptionWrite: boolean;\n  youparkInvoice: boolean;\n  youpayAccounting: boolean;\n  youparkFreeVisitRead: boolean;\n  youparkAccounting: boolean;\n  access: boolean;\n  youparkSettings: boolean;\n}\n\nexport function usePermissions() {\n  const { config } = useAppConfig();\n\n  const isEmployee = computed(() => config.isEmployee);\n  const canAccessYouParkCustomer = computed(() => config.canAccessYouParkCustomer);\n  const permissions = computed(() => config.permissions);\n  const lots = computed(() => config.lots);\n\n  return {\n    isEmployee,\n    canAccessYouParkCustomer,\n    permissions,\n    lots,\n    hasPermission: (permission: keyof Permissions) => permissions.value[permission]\n  };\n}\n","import dayjs from \"dayjs\";\nimport \"dayjs/locale/en\";\nimport \"dayjs/locale/nb\";\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\n\ndayjs.extend(customParseFormat);\n\nexport enum Language {\n  Norwegian = \"Norwegian\",\n  English = \"English\"\n}\n\nexport type CurrencyFormatOptions = {\n  language: Language;\n  removeTrailingZeros?: boolean;\n};\n\nexport const getLocale = (language: Language): \"nb-NO\" | \"en-GB\" =>\n  language === Language.Norwegian ? \"nb-NO\" : \"en-GB\";\n\nexport const getDayjsLocale = (language: Language): \"nb\" | \"en\" => (language === Language.Norwegian ? \"nb\" : \"en\");\n\nconst getCurrencySuffix = (language: Language): string => (language === Language.Norwegian ? \" kr\" : \" NOK\");\n\nconst getDecimalSeparator = (language: Language): string => (language === Language.Norwegian ? \",\" : \".\");\n\nexport const formatCurrencyValue = (amount: number | undefined | null, options: CurrencyFormatOptions): string => {\n  if (amount === null || amount === undefined) {\n    return \"\";\n  }\n\n  const { language, removeTrailingZeros = false } = options;\n  const locale = getLocale(language);\n  const suffix = getCurrencySuffix(language);\n\n  const formatted = new Intl.NumberFormat(locale, {\n    minimumFractionDigits: 2,\n    maximumFractionDigits: 2\n  }).format(amount);\n\n  if (!removeTrailingZeros) {\n    return `${formatted}${suffix}`;\n  }\n\n  const decimalSeparator = getDecimalSeparator(language);\n  const zeroFraction = `${decimalSeparator}00`;\n\n  if (formatted.endsWith(zeroFraction)) {\n    return `${formatted.slice(0, -zeroFraction.length)}${suffix}`;\n  }\n\n  return `${formatted}${suffix}`;\n};\n\nexport const createCurrencyFormatter = (language: Language) =>\n  new Intl.NumberFormat(getLocale(language), {\n    minimumFractionDigits: 2,\n    maximumFractionDigits: 2\n  });\n\nexport const formatMonthName = (date: Date, language: Language): string =>\n  date.toLocaleDateString(getLocale(language), { month: \"long\" });\n\nexport const parseToDate = (input: string | Date | null | undefined, language: Language): Date | null => {\n  if (input === null || input === undefined || (typeof input === \"string\" && input.trim().length === 0)) {\n    return null;\n  }\n  if (input instanceof Date) {\n    const parsedDate = dayjs(input);\n    return parsedDate.isValid() ? parsedDate.toDate() : null;\n  }\n  if (typeof input !== \"string\") {\n    return null;\n  }\n  const trimmed = input.trim();\n  const direct = dayjs(trimmed);\n  if (direct.isValid()) {\n    return direct.toDate();\n  }\n  const localeFormats: Partial<Record<string, string[]>> = {\n    nb: [\n      \"D. MMMM YYYY [kl.] HH:mm\",\n      \"D. MMM YYYY [kl.] HH:mm\",\n      \"D. MMMM YYYY HH:mm\",\n      \"D. MMM YYYY HH:mm\",\n      \"DD.MM.YYYY HH:mm\",\n      \"DD.MM.YYYY\"\n    ],\n    en: [\n      \"D MMMM YYYY [at] HH:mm\",\n      \"D MMM YYYY [at] HH:mm\",\n      \"D MMMM YYYY HH:mm\",\n      \"D MMM YYYY HH:mm\",\n      \"MMMM D, YYYY HH:mm\",\n      \"MMMM D, YYYY\",\n      \"DD/MM/YYYY HH:mm\",\n      \"DD/MM/YYYY\"\n    ]\n  };\n  const dayjsLocale = getDayjsLocale(language);\n  const localeCandidates = dayjsLocale === \"nb\" ? [\"nb\", \"en\"] : [\"en\", \"nb\"];\n  for (const localeCandidate of localeCandidates) {\n    const formats = localeFormats[localeCandidate];\n    if (!formats) {\n      continue;\n    }\n    const localized = dayjs(trimmed, formats, localeCandidate, true);\n    if (localized.isValid()) {\n      return localized.toDate();\n    }\n  }\n  const strictFormats = [\n    \"YYYY-MM-DD HH:mm\",\n    \"YYYY-MM-DDTHH:mm\",\n    \"YYYY-MM-DDTHH:mmZ\",\n    \"YYYY-MM-DDTHH:mm:ss\",\n    \"YYYY-MM-DDTHH:mm:ssZ\",\n    \"YYYY-MM-DDTHH:mm:ss.SSSZ\"\n  ];\n  const strict = dayjs(trimmed, strictFormats, true);\n  if (strict.isValid()) {\n    return strict.toDate();\n  }\n  return null;\n};\n\nexport const createDateFormatter = (language: Language, options: Intl.DateTimeFormatOptions) =>\n  new Intl.DateTimeFormat(getLocale(language), options);\n\nexport const formatDateTime = (input: string | Date | null | undefined, language: Language): string => {\n  if (input === null || input === undefined || (typeof input === \"string\" && input.trim().length === 0)) {\n    return \"\";\n  }\n  const date = parseToDate(input, language);\n  if (!date) {\n    return String(input);\n  }\n  const locale = getLocale(language);\n  const datePart = createDateFormatter(language, {\n    day: \"numeric\",\n    month: \"long\",\n    year: \"numeric\"\n  }).format(date);\n  const timePart = createDateFormatter(language, {\n    hour: \"2-digit\",\n    minute: \"2-digit\",\n    hour12: false\n  }).format(date);\n  return locale === \"nb-NO\" ? `${datePart} kl. ${timePart}` : `${datePart}, ${timePart}`;\n};\n\nexport const formatDate = (input: string | Date | null | number | undefined, language: Language): string => {\n  if (\n    input === null ||\n    input === undefined ||\n    typeof input === \"number\" ||\n    (typeof input === \"string\" && input.trim().length === 0)\n  ) {\n    return \"\";\n  }\n  const date = parseToDate(input, language);\n  if (!date) {\n    return String(input);\n  }\n  return createDateFormatter(language, {\n    day: \"2-digit\",\n    month: \"2-digit\",\n    year: \"numeric\"\n  }).format(date);\n};\n\nexport const formatTime = (input: string | Date | null | undefined, language: Language): string => {\n  if (input === null || input === undefined || (typeof input === \"string\" && input.trim().length === 0)) {\n    return \"\";\n  }\n  const date = parseToDate(input, language);\n  if (!date) {\n    return String(input);\n  }\n  return createDateFormatter(language, {\n    hour: \"2-digit\",\n    minute: \"2-digit\"\n  }).format(date);\n};\n\nexport const formatDateTimeInput = (input: string | Date | null | undefined, language: Language): string => {\n  const date = parseToDate(input, language);\n  if (!date) {\n    return \"\";\n  }\n  return dayjs(date).format(\"YYYY-MM-DDTHH:mm\");\n};\n\nexport const formatCardExpiry = (input: string | Date | null | undefined, language: Language): string => {\n  if (input === null || input === undefined || (typeof input === \"string\" && input.trim().length === 0)) {\n    return \"\";\n  }\n  const date = parseToDate(input, language);\n  if (date) {\n    const month = `${date.getMonth() + 1}`.padStart(2, \"0\");\n    const year = `${date.getFullYear() % 100}`.padStart(2, \"0\");\n    return `${month}/${year}`;\n  }\n  const normalized = String(input).trim();\n  const re = /^(\\d{2})[./-]?(\\d{2})$/;\n  const match = re.exec(normalized);\n  if (match) {\n    return `${match[1]}/${match[2]}`;\n  }\n  return normalized;\n};\n\nexport const formatLicensePlate = (plate: string | null | undefined): string => {\n  if (typeof plate !== \"string\") {\n    return \"\";\n  }\n  return plate.trim().toUpperCase();\n};\n\nexport type DurationParts = {\n  days: number;\n  hours: number;\n  minutes: number;\n  seconds?: number;\n};\n\nexport type TranslateFn = (key: string, values?: Record<string, string | number | null | undefined>) => string;\n\nexport const formatDuration = (parts: DurationParts | null | undefined, translate: TranslateFn): string => {\n  if (!parts) {\n    return \"\";\n  }\n  const segments: string[] = [];\n  const append = (count: number, singular: string, plural: string) => {\n    if (count <= 0) {\n      return;\n    }\n    const key = count === 1 ? singular : plural;\n    segments.push(translate(key, { count }));\n  };\n  append(parts.days, \"common.duration.units.day\", \"common.duration.units.dayPlural\");\n  append(parts.hours, \"common.duration.units.hour\", \"common.duration.units.hourPlural\");\n  append(parts.minutes, \"common.duration.units.minute\", \"common.duration.units.minutePlural\");\n  if (segments.length === 0) {\n    append(parts.seconds ?? 0, \"common.duration.units.second\", \"common.duration.units.secondPlural\");\n  }\n  if (segments.length <= 1) {\n    return segments.join(\", \");\n  }\n  const lastSegment = segments.pop() ?? \"\";\n  const conjunctionTranslation = translate(\"common.duration.conjunction\");\n  const conjunction =\n    conjunctionTranslation && conjunctionTranslation !== \"common.duration.conjunction\" ? conjunctionTranslation : \"and\";\n  return `${segments.join(\", \")} ${conjunction} ${lastSegment}`;\n};\n\nexport const formatDurationLabel = (parts: DurationParts | null | undefined, translate: TranslateFn): string => {\n  const value = formatDuration(parts, translate);\n  if (!value) {\n    return \"\";\n  }\n  return translate(\"common.duration.label\", { duration: value });\n};\n","import { ref, type Ref } from \"vue\";\n\nimport { useTranslate } from \"@common/composables/useTranslate\";\n\ninterface ErrorModalState {\n  isOpen: Ref<boolean>;\n  title: Ref<string>;\n  message: Ref<string>;\n  variant: Ref<\"error\" | \"success\">;\n  actionLabel: Ref<string | undefined>;\n  confirmHandler: (() => void) | null;\n}\n\nconst createErrorModalState = (): ErrorModalState => ({\n  isOpen: ref(false),\n  title: ref(\"\"),\n  message: ref(\"\"),\n  variant: ref<\"error\" | \"success\">(\"error\"),\n  actionLabel: ref<string | undefined>(undefined),\n  confirmHandler: null\n});\n\nlet sharedErrorModalState: ErrorModalState | null = null;\n\nconst getErrorModalState = () => {\n  sharedErrorModalState ??= createErrorModalState();\n  return sharedErrorModalState;\n};\n\ninterface ModalOptions {\n  actionLabel?: string;\n  onConfirm?: () => void;\n}\n\ninterface ErrorModalController {\n  isOpen: Ref<boolean>;\n  title: Ref<string>;\n  message: Ref<string>;\n  variant: Ref<\"error\" | \"success\">;\n  actionLabel: Ref<string | undefined>;\n  showError: (msg: string, t?: string, options?: ModalOptions) => void;\n  showSuccess: (msg: string, t?: string, options?: ModalOptions) => void;\n  close: () => void;\n  confirm: () => void;\n}\n\nexport function useErrorModal(): ErrorModalController {\n  const translate = useTranslate();\n  const state = getErrorModalState();\n\n  const applyOptions = (options?: ModalOptions) => {\n    state.actionLabel.value = options?.actionLabel;\n    state.confirmHandler = options?.onConfirm ?? null;\n  };\n\n  const showError = (msg: string, t?: string, options?: ModalOptions) => {\n    state.message.value = msg ?? \"\";\n    state.title.value = t ?? translate(\"common.errorTitle\");\n    state.variant.value = \"error\";\n    applyOptions(options);\n    state.isOpen.value = true;\n  };\n\n  const showSuccess = (msg: string, t?: string, options?: ModalOptions) => {\n    state.message.value = msg ?? \"\";\n    state.title.value = t ?? translate(\"common.successTitle\");\n    state.variant.value = \"success\";\n    applyOptions(options);\n    state.isOpen.value = true;\n  };\n\n  const close = () => {\n    state.isOpen.value = false;\n    state.actionLabel.value = undefined;\n    state.confirmHandler = null;\n  };\n\n  const confirm = () => {\n    const handler = state.confirmHandler;\n    close();\n    if (handler) {\n      handler();\n    }\n  };\n\n  return {\n    isOpen: state.isOpen,\n    title: state.title,\n    message: state.message,\n    variant: state.variant,\n    actionLabel: state.actionLabel,\n    showError,\n    showSuccess,\n    close,\n    confirm\n  };\n}\n","import { computed, ref, watch, type Ref } from \"vue\";\n\nimport { Language } from \"@core/composables/localization/formatters\";\nimport { profileService } from \"@core/services/profileService\";\nimport { shareInflight } from \"@core/utils/shareInflight\";\n\nimport { extend as i18nExtend, init as i18nInit, translate as i18nTranslate, type ValueDictionary } from \"@common/i18n\";\n\nimport {\n  baseTranslationNamespaces,\n  loadLanguage,\n  loadLanguageNamespaces,\n  type LanguageTag,\n  type TranslationNamespace\n} from \"@/translations\";\n\nexport { Language };\n\nexport interface LanguageOption {\n  code: Language;\n  flag: string;\n  name: string;\n  nativeName: string;\n}\n\nconst languageToTagMap: Record<Language, LanguageTag> = {\n  [Language.Norwegian]: \"nb\",\n  [Language.English]: \"en\"\n};\n\nexport const languageOptions: LanguageOption[] = [\n  { code: Language.Norwegian, flag: \"\\uD83C\\uDDF3\\uD83C\\uDDF4\", name: \"Norwegian\", nativeName: \"Norsk\" },\n  { code: Language.English, flag: \"\\uD83C\\uDF10\", name: \"English\", nativeName: \"English\" }\n];\n\ninterface LanguageState {\n  language: Ref<Language>;\n  isLanguageLoading: Ref<boolean>;\n  languageRevision: Ref<number>;\n  loadedNamespacesByLanguage: Map<LanguageTag, Set<TranslationNamespace>>;\n  baseLoadingPromises: Map<LanguageTag, Promise<boolean>>;\n  activeTranslationLoads: number;\n}\n\nconst createLanguageState = (): LanguageState => ({\n  language: ref<Language>(Language.Norwegian),\n  isLanguageLoading: ref<boolean>(false),\n  languageRevision: ref(0),\n  loadedNamespacesByLanguage: new Map<LanguageTag, Set<TranslationNamespace>>(),\n  baseLoadingPromises: new Map<LanguageTag, Promise<boolean>>(),\n  activeTranslationLoads: 0\n});\n\nlet languageState: LanguageState | undefined;\n\nconst getLanguageState = (): LanguageState => (languageState ??= createLanguageState());\n\nconst sharedLanguageState = getLanguageState();\nconst inflightNamespaceLoads = new Map<string, Promise<boolean>>();\nlet languageGeneration = 0;\nlet appliedLanguageTag: LanguageTag | null = null;\nlet appliedLanguageGeneration = -1;\n\nexport const language = sharedLanguageState.language;\nexport const isLanguageLoading = sharedLanguageState.isLanguageLoading;\nconst languageRevision = sharedLanguageState.languageRevision;\nexport const languageSignal = computed(() => `${languageToTagMap[language.value]}-${languageRevision.value}`);\n\nwatch(\n  language,\n  () => {\n    languageGeneration += 1;\n  },\n  { flush: \"sync\" }\n);\n\nconst updateLoadingState = (delta: number) => {\n  sharedLanguageState.activeTranslationLoads = Math.max(0, sharedLanguageState.activeTranslationLoads + delta);\n  isLanguageLoading.value = sharedLanguageState.activeTranslationLoads > 0;\n};\n\nconst getLanguageTag = (lang: Language): LanguageTag => languageToTagMap[lang];\n\nconst setDocumentLanguage = (lang: Language) => {\n  if (typeof document === \"undefined\") {\n    return;\n  }\n  document.documentElement.lang = getLanguageTag(lang);\n};\n\nconst resetLoadedNamespaces = (tag: LanguageTag) => {\n  sharedLanguageState.loadedNamespacesByLanguage.set(tag, new Set(baseTranslationNamespaces));\n};\n\nconst languageStillSelected = (tag: LanguageTag, generation: number): boolean =>\n  getLanguageTag(language.value) === tag && languageGeneration === generation;\n\nasync function loadAndInitLanguage(lang: Language, preloadNamespaces?: TranslationNamespace[]): Promise<boolean> {\n  const tag = getLanguageTag(lang);\n  const generation = languageGeneration;\n\n  const existingPromise = sharedLanguageState.baseLoadingPromises.get(tag);\n  if (existingPromise) {\n    const applied = await existingPromise;\n    if (applied && languageStillSelected(tag, generation)) {\n      return true;\n    }\n    if (!languageStillSelected(tag, generation)) {\n      return false;\n    }\n    return loadAndInitLanguage(lang, preloadNamespaces);\n  }\n\n  const loadPromise = (async () => {\n    updateLoadingState(1);\n    try {\n      const translations = await loadLanguage(tag);\n      const namespaces = Array.isArray(preloadNamespaces) ? Array.from(new Set(preloadNamespaces)) : [];\n      const namespaceDictionaries = namespaces.length > 0 ? await loadLanguageNamespaces(tag, namespaces) : [];\n\n      if (!languageStillSelected(tag, generation)) {\n        return false;\n      }\n\n      resetLoadedNamespaces(tag);\n      const nextLoaded = new Set(baseTranslationNamespaces);\n      namespaces.forEach(namespace => nextLoaded.add(namespace));\n      sharedLanguageState.loadedNamespacesByLanguage.set(tag, nextLoaded);\n      i18nInit(translations);\n      namespaceDictionaries.forEach(dictionary => i18nExtend(dictionary));\n      appliedLanguageTag = tag;\n      appliedLanguageGeneration = generation;\n      languageRevision.value += 1;\n      return true;\n    } finally {\n      sharedLanguageState.baseLoadingPromises.delete(tag);\n      updateLoadingState(-1);\n    }\n  })();\n\n  sharedLanguageState.baseLoadingPromises.set(tag, loadPromise);\n  const applied = await loadPromise;\n  return applied && languageStillSelected(tag, generation);\n}\n\nconst activeLanguageIsApplied = (tag: LanguageTag): boolean =>\n  appliedLanguageTag === tag && appliedLanguageGeneration === languageGeneration;\n\nexport async function ensureTranslationNamespaces(namespaces: TranslationNamespace[]): Promise<void> {\n  for (;;) {\n    const tag = getLanguageTag(language.value);\n    const generation = languageGeneration;\n\n    const pendingBase = sharedLanguageState.baseLoadingPromises.get(tag);\n    if (pendingBase) {\n      await pendingBase;\n    } else if (!sharedLanguageState.loadedNamespacesByLanguage.has(tag) || !activeLanguageIsApplied(tag)) {\n      await loadAndInitLanguage(language.value);\n    }\n\n    if (!languageStillSelected(tag, generation)) {\n      continue;\n    }\n\n    const loaded = sharedLanguageState.loadedNamespacesByLanguage.get(tag) ?? new Set<TranslationNamespace>();\n    const missing = namespaces.filter(namespace => !loaded.has(namespace));\n\n    if (missing.length === 0) {\n      if (activeLanguageIsApplied(tag)) {\n        return;\n      }\n      continue;\n    }\n\n    const key = `${tag}:${[...missing].sort().join(\"|\")}`;\n    const applied = await shareInflight(inflightNamespaceLoads, key, async () => {\n      const loadGeneration = languageGeneration;\n      updateLoadingState(1);\n      try {\n        const dictionaries = await loadLanguageNamespaces(tag, missing);\n        if (!languageStillSelected(tag, loadGeneration)) {\n          return false;\n        }\n\n        const current = sharedLanguageState.loadedNamespacesByLanguage.get(tag) ?? new Set<TranslationNamespace>();\n        const nextLoaded = new Set(current);\n        missing.forEach(namespace => nextLoaded.add(namespace));\n        sharedLanguageState.loadedNamespacesByLanguage.set(tag, nextLoaded);\n        dictionaries.forEach(dictionary => i18nExtend(dictionary));\n        appliedLanguageTag = tag;\n        appliedLanguageGeneration = loadGeneration;\n        languageRevision.value += 1;\n        return true;\n      } finally {\n        updateLoadingState(-1);\n      }\n    });\n\n    if (!applied || !languageStillSelected(tag, generation) || !activeLanguageIsApplied(tag)) {\n      continue;\n    }\n\n    return;\n  }\n}\n\nasync function persistLanguagePreference(lang: Language) {\n  const tag = getLanguageTag(lang);\n  try {\n    const result = await profileService.setLanguage(tag);\n    if (!result.success) {\n      console.warn(\"Failed to persist language preference\", result.errorKey);\n    }\n  } catch (error) {\n    console.error(\"Failed to persist language preference\", error);\n  }\n}\n\nlet preferenceWrite: Promise<void> = Promise.resolve();\nlet unchangedServerLanguage: Language | null = null;\n\nfunction enqueueLanguagePreference(lang: Language, generation: number): void {\n  preferenceWrite = preferenceWrite.then(async () => {\n    if (language.value !== lang || languageGeneration !== generation) {\n      return;\n    }\n    await persistLanguagePreference(lang);\n  });\n}\n\nwatch(\n  language,\n  async (newLang, oldLang) => {\n    if (newLang !== unchangedServerLanguage) {\n      unchangedServerLanguage = null;\n    }\n    const generation = languageGeneration;\n    const previousNamespaces =\n      oldLang !== undefined ? sharedLanguageState.loadedNamespacesByLanguage.get(getLanguageTag(oldLang)) : undefined;\n    const preload = previousNamespaces !== undefined ? Array.from(previousNamespaces) : undefined;\n    const applied = await loadAndInitLanguage(newLang, preload);\n    if (!applied || language.value !== newLang || languageGeneration !== generation) {\n      return;\n    }\n    if (newLang === unchangedServerLanguage) {\n      return;\n    }\n    enqueueLanguagePreference(newLang, generation);\n  },\n  { immediate: false }\n);\n\nexport async function initializeLanguage(lang: Language): Promise<void> {\n  await loadAndInitLanguage(lang);\n}\n\nexport const normalizeLanguageTag = (value: string | null | undefined): Language => {\n  if (!value) {\n    return Language.English;\n  }\n  const normalized = value.trim().toLowerCase();\n  if (normalized === \"nb\" || normalized === \"no\") {\n    return Language.Norwegian;\n  }\n  if (normalized === \"en\") {\n    return Language.English;\n  }\n  return Language.English;\n};\n\nconst normalizeLanguageInput = (value: string | null | undefined): Language => {\n  if (value === Language.Norwegian || value === Language.English) {\n    return value;\n  }\n  if (typeof value === \"string\") {\n    return normalizeLanguageTag(value);\n  }\n  return Language.English;\n};\n\nexport function useLanguage() {\n  const currentLanguage = computed(\n    () => languageOptions.find(opt => opt.code === language.value) ?? languageOptions[0]\n  );\n\n  const setLanguage = (lang: string | null | undefined) => {\n    const resolved = normalizeLanguageInput(lang);\n    if (resolved === Language.English && lang != null && normalizeLanguageInput(lang) !== Language.English) {\n      console.warn(`Unsupported language tag: ${lang}, defaulting to 'en'`);\n    }\n    setDocumentLanguage(resolved);\n    if (language.value === resolved) {\n      return;\n    }\n    language.value = resolved;\n  };\n\n  const adoptServerLanguage = (lang: Language) => {\n    unchangedServerLanguage = lang;\n    setLanguage(lang);\n  };\n\n  const persistStartingLanguage = (lang: Language) => {\n    const languageAlreadySelected = language.value === lang;\n    setLanguage(lang);\n    if (languageAlreadySelected) {\n      enqueueLanguagePreference(lang, languageGeneration);\n    }\n  };\n\n  const toLanguageTag = (lang: Language): LanguageTag => getLanguageTag(lang);\n  const t = (key: string, values?: ValueDictionary) => {\n    return computed(() => {\n      void language.value;\n      return i18nTranslate(key, values);\n    });\n  };\n\n  return {\n    language,\n    currentLanguage,\n    languageOptions,\n    setLanguage,\n    adoptServerLanguage,\n    persistStartingLanguage,\n    toLanguageTag,\n    normalizeLanguageTag,\n    languageSignal,\n    isLanguageLoading,\n    t\n  };\n}\n","export function shareInflight<T>(inflight: Map<string, Promise<T>>, key: string, start: () => Promise<T>): Promise<T> {\n  const existing = inflight.get(key);\n  if (existing) {\n    return existing;\n  }\n\n  const promise = start().finally(() => {\n    if (inflight.get(key) === promise) {\n      inflight.delete(key);\n    }\n  });\n  inflight.set(key, promise);\n  return promise;\n}\n","import { ref } from \"vue\";\n\nimport { router } from \"@/router\";\n\nconst createNavigatingState = () => {\n  const isNavigating = ref(false);\n  let navigationTimeout: ReturnType<typeof setTimeout> | null = null;\n\n  router.beforeEach(() => {\n    // Small delay prevents flash for fast navigations\n    navigationTimeout = setTimeout(() => {\n      isNavigating.value = true;\n    }, 80);\n    return true;\n  });\n\n  router.afterEach(() => {\n    if (navigationTimeout) {\n      clearTimeout(navigationTimeout);\n      navigationTimeout = null;\n    }\n    isNavigating.value = false;\n  });\n\n  router.onError(() => {\n    if (navigationTimeout) {\n      clearTimeout(navigationTimeout);\n      navigationTimeout = null;\n    }\n    isNavigating.value = false;\n  });\n\n  return { isNavigating };\n};\n\nlet navigatingState: ReturnType<typeof createNavigatingState> | undefined;\n\nexport function useNavigatingState() {\n  navigatingState ??= createNavigatingState();\n  return navigatingState;\n}\n","import { computed, ref, watch, type Ref } from \"vue\";\n\nimport { useRouteContext, useRouterContext } from \"@core/composables/state/useRouteContext\";\nimport type { LocationQueryRaw, RouteLocationNormalizedLoaded, Router } from \"vue-router\";\n\nimport { useMapViewState } from \"@/composables/useMapViewState\";\n\nexport type ViewType =\n  | \"sign-in\"\n  | \"home\"\n  | \"payment\"\n  | \"faq\"\n  | \"faq-item\"\n  | \"faq-section\"\n  | \"customer-service\"\n  | \"tour\"\n  | \"youpark-plus\"\n  | \"youpark-plus-terms\"\n  | \"youpark-plus-start\"\n  | \"youpark-plus-status\"\n  | \"map\"\n  | \"map-parking\"\n  | \"map-toll\"\n  | \"privacypolicy\"\n  | \"terms\"\n  | \"profile\"\n  | \"vehicles\"\n  | \"add-vehicle\"\n  | \"edit-vehicle\"\n  | \"payment-sources\"\n  | \"add-payment-source\"\n  | \"edit-payment-source\"\n  | \"subscriptions\"\n  | \"subscription-details\"\n  | \"subscription-shared-details\"\n  | \"subscription-purchase\"\n  | \"subscription-renew\"\n  | \"template-manager-invitation\"\n  | \"shared-user-invitation\"\n  | \"coupons\"\n  | \"bookings\"\n  | \"receipts\"\n  | \"youpark\"\n  | \"youpark-customer-register\"\n  | \"youpark-subscriptions\"\n  | \"youpark-invoices\"\n  | \"youpark-transactions\"\n  | \"youpark-credit\"\n  | \"youpark-booking-reservations\"\n  | \"youpark-free-visits\"\n  | \"youpark-reports\"\n  | \"youpark-insights\"\n  | \"youpark-business-insights\"\n  | \"youpark-todos\"\n  | \"youpark-access\"\n  | \"youpark-customer-admin\"\n  | \"youpark-customer-admin-locations\"\n  | \"youpark-customer-admin-locations-settings\"\n  | \"youpark-customer-admin-locations-price-setup\"\n  | \"youpark-customer-admin-locations-autopass\"\n  | \"youpark-customer-admin-locations-display\"\n  | \"youpark-customer-admin-locations-contactpersons\"\n  | \"youpark-customer-admin-locations-cameras\"\n  | \"youpark-customer-admin-locations-connections\"\n  | \"youpark-customer-admin-locations-contract\"\n  | \"youpark-customer-admin-locations-businessmodel\"\n  | \"youpark-customer-admin-payment-kiosks\"\n  | \"youpark-customer-admin-invoicing\"\n  | \"youpark-customer-admin-areas\"\n  | \"youpark-customer-admin-access\"\n  | \"youpark-customer-admin-free-visit-kiosks\"\n  | \"youpark-customer-admin-fees\"\n  | \"cameras-overview\"\n  | \"users\"\n  | \"remit\"\n  | \"remit-tab\"\n  | \"remit-allocations\"\n  | \"remit-creditors\"\n  | \"user-create\"\n  | \"user-edit\"\n  | \"manual-approval\"\n  | \"traffic-control\"\n  | \"system\"\n  | \"audits\"\n  | \"exports\"\n  | \"statistics\"\n  | \"telemetry\"\n  | \"telemetry-annotations\"\n  | \"applications\"\n  | \"organizations\"\n  | \"organizations-create\"\n  | \"organizations-details\"\n  | \"organizations-details-applications\"\n  | \"organizations-details-users\"\n  | \"organizations-details-subs\"\n  | \"organizations-details-api-users\"\n  | \"vehicle-registry\";\n\nconst persistentQueryKeys = [\"embedded\", \"theme\", \"lang\"] as const;\n\ntype MapViewStateRef = ReturnType<typeof useMapViewState>;\n\ninterface NavigationState {\n  mapViewState: MapViewStateRef;\n  showMobileSidebar: Ref<boolean>;\n  loadingViews: Ref<Set<ViewType>>;\n  viewKey: Ref<number>;\n}\n\nconst createNavigationState = (): NavigationState => ({\n  mapViewState: useMapViewState(),\n  showMobileSidebar: ref(false),\n  loadingViews: ref<Set<ViewType>>(new Set()),\n  viewKey: ref<number>(Date.now())\n});\n\nlet sharedNavigationState: NavigationState | null = null;\n\nconst getNavigationState = () => {\n  sharedNavigationState ??= createNavigationState();\n  return sharedNavigationState;\n};\n\nexport function useNavigation() {\n  const state = getNavigationState();\n  let route: RouteLocationNormalizedLoaded | undefined;\n  let router: Router | undefined;\n\n  try {\n    route = useRouteContext();\n    router = useRouterContext();\n  } catch {\n    console.warn(\"Router not initialized, using fallback navigation\");\n  }\n\n  const activeView = computed<ViewType>(() => {\n    const mapView = deriveMapView(route, state.mapViewState);\n    if (mapView) {\n      return mapView;\n    }\n    if (!route) {\n      return determineViewFromPath(window.location.pathname);\n    }\n    const name = route.name as string;\n    return (name as ViewType) || \"home\";\n  });\n\n  const routeParams = computed(() => (route ? (route.params as Record<string, string>) : {}));\n  const resolvePersistentQuery = (): LocationQueryRaw | undefined => {\n    if (!router) {\n      return undefined;\n    }\n    const currentQuery = router.currentRoute.value.query;\n    const query: LocationQueryRaw = {};\n    persistentQueryKeys.forEach(key => {\n      const value = currentQuery[key];\n      if (value !== undefined) {\n        query[key] = value;\n      }\n    });\n    return Object.keys(query).length > 0 ? query : undefined;\n  };\n\n  const navigateTo = async (\n    view: ViewType,\n    params?: Record<string, string>,\n    options?: { query?: Record<string, string | undefined>; hash?: string; replace?: boolean }\n  ) => {\n    state.showMobileSidebar.value = false;\n    state.viewKey.value = Date.now();\n\n    if (!router) {\n      console.error(\"[Navigation] Router not initialized. Unable to navigate.\");\n      return;\n    }\n\n    try {\n      console.log(\"[Navigation] Navigating to:\", view, \"with params:\", params, \"and options:\", options);\n\n      const persistentQuery = resolvePersistentQuery();\n      const mergedQueryObject =\n        options?.query || persistentQuery\n          ? Object.fromEntries(\n              Object.entries({\n                ...(persistentQuery ?? {}),\n                ...(options?.query ?? {})\n              }).filter(([, value]) => value !== undefined && value !== null)\n            )\n          : undefined;\n      const mergedQuery =\n        mergedQueryObject && Object.keys(mergedQueryObject).length > 0 ? mergedQueryObject : undefined;\n\n      const currentRoute = router.currentRoute.value;\n      if (currentRoute.name === view) {\n        const currentParams = currentRoute.params as Record<string, string>;\n        const sameParams = JSON.stringify(currentParams) === JSON.stringify(params ?? {});\n        const targetQuery = mergedQuery ?? {};\n        const sameQuery = JSON.stringify(currentRoute.query ?? {}) === JSON.stringify(targetQuery);\n        const sameHash = (options?.hash ?? \"\") === (currentRoute.hash ?? \"\");\n        if (sameParams && sameQuery && sameHash) {\n          console.log(\"[Navigation] Already on target route, refreshing view key\");\n          state.viewKey.value = Date.now();\n          return;\n        }\n      }\n\n      console.log(\"[Navigation] Executing router.push\");\n\n      if (options?.replace) {\n        await router.replace({\n          name: view,\n          params: params ?? {},\n          query: mergedQuery,\n          hash: options?.hash\n        });\n      } else {\n        await router.push({\n          name: view,\n          params: params ?? {},\n          query: mergedQuery,\n          hash: options?.hash\n        });\n      }\n      console.log(\"[Navigation] Navigation successful\");\n    } catch (error) {\n      console.error(\"[Navigation] Navigation error:\", error);\n      throw error;\n    }\n  };\n\n  const toggleMobileSidebar = () => {\n    state.showMobileSidebar.value = !state.showMobileSidebar.value;\n  };\n\n  const closeMobileSidebar = () => {\n    state.showMobileSidebar.value = false;\n  };\n\n  const openMobileSidebar = () => {\n    state.showMobileSidebar.value = true;\n  };\n\n  const setViewLoading = (view: ViewType, isLoading: boolean) => {\n    const nextSet = new Set(state.loadingViews.value);\n    if (isLoading) {\n      nextSet.add(view);\n    } else {\n      nextSet.delete(view);\n    }\n    state.loadingViews.value = nextSet;\n  };\n\n  const isViewLoading = (view: ViewType) => {\n    return state.loadingViews.value.has(view);\n  };\n\n  const updateUrlParams = (params?: Record<string, string>) => {\n    if (!params || Object.keys(params).length === 0) {\n      return;\n    }\n\n    if (!router) {\n      console.error(\"Router not initialized. Unable to update URL params.\");\n      return;\n    }\n\n    void router.replace({\n      name: activeView.value,\n      params,\n      query: resolvePersistentQuery()\n    });\n  };\n\n  if (route) {\n    watch(\n      () => route.path,\n      () => {\n        state.showMobileSidebar.value = false;\n      }\n    );\n  }\n\n  return {\n    activeView,\n    routeParams,\n    showMobileSidebar: state.showMobileSidebar,\n    viewKey: state.viewKey,\n    navigateTo,\n    updateUrlParams,\n    toggleMobileSidebar,\n    openMobileSidebar,\n    closeMobileSidebar,\n    setViewLoading,\n    isViewLoading\n  };\n}\n\nfunction determineViewFromPath(pathname: string): ViewType {\n  const segments = pathname.split(\"/\").filter(Boolean);\n  const accountIndex = segments.lastIndexOf(\"dashboard\");\n\n  if (accountIndex === -1 || accountIndex === segments.length - 1) {\n    return \"home\";\n  }\n\n  const viewSegment = segments[accountIndex + 1]?.toLowerCase();\n  const subSegment = segments[accountIndex + 2]?.toLowerCase();\n\n  if (viewSegment === \"subscriptions\" && subSegment === \"shared\") {\n    return \"subscription-shared-details\";\n  }\n  if (viewSegment === \"subscriptions\" && subSegment === \"welcometemplatemanagerinvitation\") {\n    return \"template-manager-invitation\";\n  }\n  if (viewSegment === \"subscriptions\" && subSegment === \"shareduserinvitation\") {\n    return \"shared-user-invitation\";\n  }\n  if (viewSegment === \"subscriptions\" && subSegment) {\n    return \"subscription-details\";\n  }\n  if (viewSegment === \"subscription\" && subSegment === \"purchase\") {\n    return \"subscription-purchase\";\n  }\n  if (viewSegment === \"remit\") {\n    return \"remit\";\n  }\n  if (viewSegment === \"youpark\") {\n    return \"youpark\";\n  }\n  if (viewSegment === \"organizations\" && subSegment === \"new\") {\n    return \"organizations-create\";\n  }\n  if (viewSegment === \"organizations\" && subSegment) {\n    return \"organizations-details\";\n  }\n\n  const segmentToView: Record<string, ViewType> = {\n    \"sign-in\": \"sign-in\",\n    map: \"map\",\n    \"map-parking\": \"map-parking\",\n    \"map-toll\": \"map-toll\",\n    parkering: \"map-parking\",\n    bomvei: \"map-toll\",\n    profile: \"profile\",\n    payment: \"payment\",\n    vehicles: \"vehicles\",\n    \"payment-sources\": \"payment-sources\",\n    \"customer-service\": \"customer-service\",\n    tour: \"tour\",\n    faq: \"faq\",\n    subscriptions: \"subscriptions\",\n    welcometemplatemanagerinvitation: \"template-manager-invitation\",\n    shareduserinvitation: \"shared-user-invitation\",\n    coupons: \"coupons\",\n    bookings: \"bookings\",\n    receipts: \"receipts\",\n    \"add-vehicle\": \"add-vehicle\",\n    \"edit-vehicle\": \"edit-vehicle\",\n    \"add-payment-source\": \"add-payment-source\",\n    \"edit-payment-source\": \"edit-payment-source\",\n    remit: \"remit\",\n    youpark: \"youpark\",\n    \"cameras-overview\": \"cameras-overview\",\n    \"manual-approval\": \"manual-approval\",\n    \"traffic-control\": \"traffic-control\",\n    system: \"system\",\n    audits: \"audits\",\n    exports: \"exports\",\n    statistics: \"statistics\",\n    telemetry: \"telemetry\",\n    applications: \"applications\",\n    organizations: \"organizations\"\n  };\n\n  return segmentToView[viewSegment] || \"home\";\n}\n\nfunction deriveMapView(route?: RouteLocationNormalizedLoaded, mapViewState?: MapViewStateRef): ViewType | null {\n  if (!route) {\n    return null;\n  }\n  const routeName = typeof route.name === \"string\" ? route.name : \"\";\n  const mapRoutes = new Set([\"map\", \"map-parking\", \"map-toll\", \"map-area\", \"map-area-details\", \"map-lot-details\"]);\n  if (!mapRoutes.has(routeName)) {\n    return null;\n  }\n  const filterQuery = typeof route.query.filter === \"string\" ? route.query.filter : null;\n  if (filterQuery === \"toll\") {\n    return \"map-toll\";\n  }\n  if (filterQuery === \"parking\") {\n    return \"map-parking\";\n  }\n  if (routeName === \"map-toll\") {\n    return \"map-toll\";\n  }\n  if (routeName === \"map-parking\") {\n    return \"map-parking\";\n  }\n  if (mapViewState && (mapViewState.value === \"map-parking\" || mapViewState.value === \"map-toll\")) {\n    return mapViewState.value;\n  }\n  return \"map\";\n}\n","import { ref, computed, onMounted, type Ref } from \"vue\";\n\nimport { useAppConfig } from \"@core/composables/data/useAppConfig\";\nimport { profileService } from \"@core/services/profileService\";\nimport type { UserProfile } from \"@core/types/models\";\n\ninterface ProfileState {\n  backendProfile: Ref<UserProfile | null>;\n  loading: Ref<boolean>;\n  error: Ref<string | null>;\n  loadPromise: Promise<void> | null;\n}\n\nconst createProfileState = (): ProfileState => ({\n  backendProfile: ref<UserProfile | null>(null),\n  loading: ref(false),\n  error: ref<string | null>(null),\n  loadPromise: null\n});\n\nlet sharedProfileState: ProfileState | null = null;\n\nconst getProfileState = () => {\n  sharedProfileState ??= createProfileState();\n  return sharedProfileState;\n};\n\nexport function useProfile(options?: { refresh?: boolean }) {\n  const state = getProfileState();\n  const { config } = useAppConfig();\n  const isAuthenticated = config.isAuthenticated;\n\n  const profile = computed<UserProfile>(() => state.backendProfile.value ?? config.userProfile);\n\n  const setBackendProfile = (nextProfile: UserProfile | null) => {\n    state.backendProfile.value = nextProfile;\n  };\n\n  async function loadProfile() {\n    if (!isAuthenticated) {\n      return;\n    }\n\n    if (state.loadPromise) {\n      return state.loadPromise;\n    }\n\n    state.loadPromise = (async () => {\n      try {\n        state.loading.value = true;\n        state.error.value = null;\n        const freshProfile = await profileService.fetchProfile();\n        setBackendProfile(freshProfile);\n      } catch (err) {\n        state.error.value = \"profile.loadErrorMessage\";\n        console.error(\"Error loading profile:\", err);\n      } finally {\n        state.loading.value = false;\n        state.loadPromise = null;\n      }\n    })();\n\n    return state.loadPromise;\n  }\n\n  if (options?.refresh) {\n    onMounted(() => {\n      if (isAuthenticated) {\n        void loadProfile();\n      }\n    });\n  }\n\n  return {\n    profile,\n    loading: state.loading,\n    error: state.error,\n    refresh: loadProfile,\n    setProfile: setBackendProfile\n  };\n}\n","import httpClient from \"@common/http-client\";\n\ninterface RawYouParkSearchResult {\n  organizationName?: string;\n  organizationId?: string;\n  areaId?: string;\n  areaName?: string;\n  lots?: { id?: string; name?: string }[];\n}\n\nexport interface YouParkSearchResult {\n  organizationName: string;\n  organizationId: string;\n  areaId: string;\n  areaName: string;\n  lots: { id: string; name: string }[];\n}\n\nconst normalizeResult = (raw: RawYouParkSearchResult): YouParkSearchResult => {\n  const organizationId = raw.organizationId ? String(raw.organizationId).trim() : \"\";\n  const areaId = raw.areaId ? String(raw.areaId).trim() : \"\";\n  const organizationName = (raw.organizationName ?? \"\").trim();\n  const areaName = (raw.areaName ?? \"\").trim();\n\n  const normalizedLots = (raw.lots ?? [])\n    .map(lot => {\n      const id = lot?.id ? String(lot.id).trim() : \"\";\n      const name = (lot?.name ?? \"\").trim();\n      const resolvedName = name.length > 0 ? name : id;\n      const resolvedId = id.length > 0 ? id : resolvedName;\n      return resolvedName.length > 0 ? { id: resolvedId, name: resolvedName } : null;\n    })\n    .filter((lot): lot is { id: string; name: string } => lot !== null);\n\n  return {\n    organizationName: organizationName.length > 0 ? organizationName : organizationId,\n    organizationId,\n    areaId,\n    areaName,\n    lots: normalizedLots\n  };\n};\n\nexport const searchService = {\n  async searchYouPark(query: string): Promise<YouParkSearchResult[]> {\n    const trimmed = query.trim();\n    if (trimmed.length < 2) {\n      return [];\n    }\n\n    const response = await httpClient.getUnwrapped<RawYouParkSearchResult[]>(\"/search/searchlots\", {\n      query: trimmed\n    });\n\n    return response.map(normalizeResult);\n  }\n};\n","import { searchService, type YouParkSearchResult } from \"./searchService\";\n\nexport interface QuickNavYouParkResult {\n  type: \"youpark\";\n  organizationId: string;\n  organizationName: string;\n  lotNames: string[];\n}\n\nexport type QuickNavResult = QuickNavYouParkResult;\n\nconst toQuickNavYouParkResult = (result: YouParkSearchResult): QuickNavYouParkResult | null => {\n  if (!result.organizationId) {\n    return null;\n  }\n\n  return {\n    type: \"youpark\",\n    organizationId: result.organizationId,\n    organizationName: result.organizationName,\n    lotNames: result.lots.map(lot => lot.name)\n  };\n};\n\nexport const quickNavService = {\n  async searchAll(query: string): Promise<QuickNavResult[]> {\n    try {\n      const results = await searchService.searchYouPark(query);\n      const mapped = results.map(toQuickNavYouParkResult).filter((r): r is QuickNavYouParkResult => r !== null);\n\n      const byOrgId = new Map<string, QuickNavYouParkResult>();\n      for (const result of mapped) {\n        const existing = byOrgId.get(result.organizationId);\n        if (existing) {\n          existing.lotNames.push(...result.lotNames);\n        } else {\n          byOrgId.set(result.organizationId, { ...result, lotNames: [...result.lotNames] });\n        }\n      }\n\n      return Array.from(byOrgId.values());\n    } catch {\n      return [];\n    }\n  }\n};\n","import { computed, effectScope, ref, watch, type EffectScope, type Ref } from \"vue\";\n\nimport { useAppConfig } from \"@core/composables/data/useAppConfig\";\nimport { usePermissions } from \"@core/composables/data/usePermissions\";\nimport { useRouterContext } from \"@core/composables/state/useRouteContext\";\nimport { quickNavService, type QuickNavResult } from \"@core/services/quickNavService\";\n\nimport { useTranslate } from \"@common/composables/useTranslate\";\nimport { debounce } from \"@common/utils/debounce\";\n\nimport { queueDashboardScrollReset } from \"@/router\";\n\nconst RECENT_SEARCHES_KEY = \"youpark-quicknav-recent\";\nconst MAX_RECENT = 5;\nconst FAVORITES_KEY = \"youpark-quicknav-favorites\";\nconst MAX_FAVORITES = 5;\nconst DEBOUNCE_MS = 400;\nconst MIN_SEARCH_LENGTH = 2;\n\ntype SelectedAction = \"organization\" | \"remit\" | \"youpark\";\ntype SearchMode = \"organizations\" | \"commands\";\n\nexport interface MenuItem {\n  id: string;\n  translationKey: string;\n  category: \"user\" | \"admin\";\n  permission?: string;\n  requiresAuth?: boolean;\n}\n\nconst MENU_ITEMS: MenuItem[] = [\n  { id: \"home\", translationKey: \"nav.home\", category: \"user\", requiresAuth: true },\n  { id: \"profile\", translationKey: \"nav.profile\", category: \"user\", requiresAuth: true },\n  { id: \"vehicles\", translationKey: \"nav.vehicles\", category: \"user\", requiresAuth: true },\n  { id: \"payment-sources\", translationKey: \"nav.paymentSource\", category: \"user\", requiresAuth: true },\n  { id: \"subscriptions\", translationKey: \"nav.subscriptions\", category: \"user\", requiresAuth: true },\n  { id: \"bookings\", translationKey: \"nav.bookings\", category: \"user\", requiresAuth: true },\n  { id: \"coupons\", translationKey: \"nav.coupons\", category: \"user\", requiresAuth: true },\n  { id: \"receipts\", translationKey: \"nav.receipts\", category: \"user\", requiresAuth: true },\n  { id: \"payment\", translationKey: \"nav.paymentQuick\", category: \"user\" },\n  { id: \"map-parking\", translationKey: \"nav.parkering\", category: \"user\" },\n  { id: \"map-toll\", translationKey: \"nav.bomvei\", category: \"user\" },\n  { id: \"customer-service\", translationKey: \"nav.customerService\", category: \"user\" },\n  { id: \"faq\", translationKey: \"nav.faq\", category: \"user\" },\n  { id: \"statistics\", translationKey: \"nav.statistics\", category: \"admin\", permission: \"statistics\" },\n  { id: \"telemetry\", translationKey: \"nav.telemetry\", category: \"admin\", permission: \"telemetry\" },\n  { id: \"applications\", translationKey: \"nav.applications\", category: \"admin\", permission: \"applications\" },\n  { id: \"users\", translationKey: \"nav.users\", category: \"admin\", permission: \"users\" },\n  { id: \"organizations\", translationKey: \"nav.organizations\", category: \"admin\", permission: \"organizations\" },\n  { id: \"audits\", translationKey: \"nav.audits\", category: \"admin\", permission: \"audits\" },\n  { id: \"exports\", translationKey: \"nav.exports\", category: \"admin\", permission: \"audits\" },\n  { id: \"vehicle-registry\", translationKey: \"nav.vehicleRegistry\", category: \"admin\", permission: \"vehicleRegistry\" },\n  { id: \"manual-approval\", translationKey: \"nav.manualApproval\", category: \"admin\", permission: \"manualApproval\" },\n  { id: \"cameras-overview\", translationKey: \"nav.camerasOverview\", category: \"admin\", permission: \"camerasOverview\" },\n  { id: \"traffic-control\", translationKey: \"nav.trafficControl\", category: \"admin\", permission: \"trafficControl\" }\n];\n\nconst loadRecentSearches = (): QuickNavResult[] => {\n  try {\n    const stored = localStorage.getItem(RECENT_SEARCHES_KEY);\n    if (!stored) {\n      return [];\n    }\n    const parsed: unknown = JSON.parse(stored);\n    return Array.isArray(parsed) ? (parsed as QuickNavResult[]).slice(0, MAX_RECENT) : [];\n  } catch {\n    return [];\n  }\n};\n\nconst saveRecentSearches = (items: QuickNavResult[]) => {\n  localStorage.setItem(RECENT_SEARCHES_KEY, JSON.stringify(items.slice(0, MAX_RECENT)));\n};\n\nconst loadFavorites = (): QuickNavResult[] => {\n  try {\n    const stored = localStorage.getItem(FAVORITES_KEY);\n    if (!stored) {\n      return [];\n    }\n    const parsed: unknown = JSON.parse(stored);\n    return Array.isArray(parsed) ? (parsed as QuickNavResult[]).slice(0, MAX_FAVORITES) : [];\n  } catch {\n    return [];\n  }\n};\n\nconst saveFavorites = (items: QuickNavResult[]) => {\n  localStorage.setItem(FAVORITES_KEY, JSON.stringify(items.slice(0, MAX_FAVORITES)));\n};\n\ninterface QuickNavState {\n  isOpen: Ref<boolean>;\n  searchQuery: Ref<string>;\n  results: Ref<QuickNavResult[]>;\n  isLoading: Ref<boolean>;\n  isNavigating: Ref<boolean>;\n  selectedIndex: Ref<number>;\n  selectedAction: Ref<SelectedAction>;\n  recentSearches: Ref<QuickNavResult[]>;\n  favorites: Ref<QuickNavResult[]>;\n  searchMode: Ref<SearchMode>;\n}\n\nconst createQuickNavState = (): QuickNavState => ({\n  isOpen: ref(false),\n  searchQuery: ref(\"\"),\n  results: ref<QuickNavResult[]>([]),\n  isLoading: ref(false),\n  isNavigating: ref(false),\n  selectedIndex: ref(0),\n  selectedAction: ref<SelectedAction>(\"youpark\"),\n  recentSearches: ref<QuickNavResult[]>(loadRecentSearches()),\n  favorites: ref<QuickNavResult[]>(loadFavorites()),\n  searchMode: ref<SearchMode>(\"organizations\")\n});\n\nlet sharedQuickNavState: QuickNavState | null = null;\nlet sharedQuickNavController: QuickNavController | null = null;\nlet sharedQuickNavScope: EffectScope | null = null;\nlet sharedDebouncedSearch: ((query: string) => void) | null = null;\n\nconst getQuickNavState = () => {\n  sharedQuickNavState ??= createQuickNavState();\n  return sharedQuickNavState;\n};\n\nconst saveToRecent = (result: QuickNavResult) => {\n  const { recentSearches } = getQuickNavState();\n  const existing = recentSearches.value.filter(r => r.organizationId !== result.organizationId);\n  const updated = [result, ...existing].slice(0, MAX_RECENT);\n  recentSearches.value = updated;\n  saveRecentSearches(updated);\n};\n\nexport interface MenuItemWithLabel extends MenuItem {\n  label: string;\n}\n\ninterface QuickNavController {\n  isOpen: Ref<boolean>;\n  searchQuery: Ref<string>;\n  results: Ref<QuickNavResult[]>;\n  isLoading: Ref<boolean>;\n  isNavigating: Ref<boolean>;\n  selectedIndex: Ref<number>;\n  selectedAction: Ref<SelectedAction>;\n  recentSearches: Ref<QuickNavResult[]>;\n  searchMode: Ref<SearchMode>;\n  menuResults: Ref<MenuItemWithLabel[]>;\n  canAccessOrganization: Ref<boolean>;\n  canAccessRemit: Ref<boolean>;\n  canAccessYoupark: Ref<boolean>;\n  canShow: Ref<boolean>;\n  open: () => void;\n  close: () => void;\n  handleKeyDown: (e: KeyboardEvent) => void;\n  handleGlobalKeyDown: (e: KeyboardEvent) => void;\n  navigateToOrganization: (result: QuickNavResult) => Promise<void>;\n  navigateToYoupark: (result: QuickNavResult) => Promise<void>;\n  navigateToRemit: (result: QuickNavResult) => Promise<void>;\n  navigateToMenuItem: (item: MenuItemWithLabel) => Promise<void>;\n  performSearch: (query: string) => void;\n  removeFromRecent: (result: QuickNavResult) => void;\n  clearRecentSearches: () => void;\n  favorites: Ref<QuickNavResult[]>;\n  filteredRecentSearches: Ref<QuickNavResult[]>;\n  isFavorite: (result: QuickNavResult) => boolean;\n  toggleFavorite: (result: QuickNavResult) => void;\n}\n\nexport function useQuickNav(): QuickNavController {\n  if (sharedQuickNavController) {\n    return sharedQuickNavController;\n  }\n\n  const state = getQuickNavState();\n  const router = useRouterContext();\n  const translate = useTranslate();\n  const { config } = useAppConfig();\n  const { canAccessYouParkCustomer, permissions } = usePermissions();\n  const {\n    isOpen,\n    searchQuery,\n    results,\n    isLoading,\n    isNavigating,\n    selectedIndex,\n    selectedAction,\n    recentSearches,\n    favorites\n  } = state;\n  const { searchMode } = state;\n\n  const canAccessOrganization = computed(() => permissions.value.organizations);\n  const canAccessRemit = computed(() => permissions.value.remits);\n  const canAccessYoupark = computed(() => canAccessYouParkCustomer.value);\n  const canShow = computed(() => canAccessYoupark.value || canAccessOrganization.value || canAccessRemit.value);\n\n  const filteredRecentSearches = computed(() => {\n    const favoriteIds = new Set(favorites.value.map(f => f.organizationId));\n    return recentSearches.value.filter(r => !favoriteIds.has(r.organizationId));\n  });\n\n  const isFavorite = (result: QuickNavResult) => {\n    return favorites.value.some(f => f.organizationId === result.organizationId);\n  };\n\n  const toggleFavorite = (result: QuickNavResult) => {\n    if (isFavorite(result)) {\n      const updated = favorites.value.filter(f => f.organizationId !== result.organizationId);\n      favorites.value = updated;\n      saveFavorites(updated);\n    } else if (favorites.value.length < MAX_FAVORITES) {\n      const updated = [...favorites.value, result];\n      favorites.value = updated;\n      saveFavorites(updated);\n    }\n  };\n\n  const availableMenuItems = computed<MenuItemWithLabel[]>(() => {\n    return MENU_ITEMS.filter(item => {\n      if (item.requiresAuth && !config.isAuthenticated) {\n        return false;\n      }\n      if (item.permission) {\n        const perm = item.permission as keyof typeof permissions.value;\n        if (!permissions.value[perm]) {\n          return false;\n        }\n      }\n      return true;\n    }).map(item => ({\n      ...item,\n      label: translate(item.translationKey)\n    }));\n  });\n\n  const menuResults = computed<MenuItemWithLabel[]>(() => {\n    if (searchMode.value !== \"commands\") {\n      return [];\n    }\n\n    const query = searchQuery.value.slice(1).trim().toLowerCase();\n    if (!query) {\n      return availableMenuItems.value;\n    }\n\n    return availableMenuItems.value.filter(item => item.label.toLowerCase().includes(query));\n  });\n\n  const executeSearch = async (query: string) => {\n    const trimmed = query.trim();\n    if (trimmed.length < MIN_SEARCH_LENGTH) {\n      results.value = [];\n      isLoading.value = false;\n      return;\n    }\n\n    isLoading.value = true;\n    try {\n      results.value = await quickNavService.searchAll(trimmed);\n    } catch {\n      results.value = [];\n    } finally {\n      isLoading.value = false;\n    }\n  };\n\n  sharedDebouncedSearch ??= debounce((query: string) => {\n    void executeSearch(query);\n  }, DEBOUNCE_MS);\n\n  const performSearch = (query: string) => {\n    if (query.trim().length < MIN_SEARCH_LENGTH) {\n      results.value = [];\n      isLoading.value = false;\n      return;\n    }\n    isLoading.value = true;\n    sharedDebouncedSearch?.(query);\n  };\n\n  const open = () => {\n    isOpen.value = true;\n    searchQuery.value = \"\";\n    results.value = [];\n    selectedIndex.value = 0;\n    selectedAction.value = canAccessYoupark.value ? \"youpark\" : canAccessRemit.value ? \"remit\" : \"organization\";\n    searchMode.value = \"organizations\";\n    isLoading.value = false;\n  };\n\n  const close = () => {\n    isOpen.value = false;\n  };\n\n  const navigateToOrganization = async (result: QuickNavResult) => {\n    saveToRecent(result);\n    isNavigating.value = true;\n\n    try {\n      await router.push({\n        name: \"organizations-details\",\n        params: { id: result.organizationId }\n      });\n    } finally {\n      isNavigating.value = false;\n      close();\n    }\n  };\n\n  const navigateToYoupark = async (result: QuickNavResult) => {\n    saveToRecent(result);\n    isNavigating.value = true;\n\n    try {\n      await router.push({\n        name: \"youpark\",\n        params: { organizationId: result.organizationId }\n      });\n    } finally {\n      isNavigating.value = false;\n      close();\n    }\n  };\n\n  const navigateToRemit = async (result: QuickNavResult) => {\n    saveToRecent(result);\n    isNavigating.value = true;\n\n    try {\n      await router.push({\n        name: \"remit\",\n        params: { organizationId: result.organizationId }\n      });\n      queueDashboardScrollReset();\n    } finally {\n      isNavigating.value = false;\n      close();\n    }\n  };\n\n  const navigateToMenuItem = async (item: MenuItemWithLabel) => {\n    isNavigating.value = true;\n\n    try {\n      await router.push({ name: item.id });\n    } finally {\n      isNavigating.value = false;\n      close();\n    }\n  };\n\n  const handleKeyDown = (e: KeyboardEvent) => {\n    if (!isOpen.value || isNavigating.value) {\n      return;\n    }\n\n    if (searchMode.value === \"commands\") {\n      const items = menuResults.value;\n\n      switch (e.key) {\n        case \"ArrowDown\":\n          e.preventDefault();\n          selectedIndex.value = Math.min(selectedIndex.value + 1, items.length - 1);\n          break;\n        case \"ArrowUp\":\n          e.preventDefault();\n          selectedIndex.value = Math.max(selectedIndex.value - 1, 0);\n          break;\n        case \"Enter\":\n          e.preventDefault();\n          if (selectedIndex.value < items.length) {\n            void navigateToMenuItem(items[selectedIndex.value]);\n          }\n          break;\n        case \"Escape\":\n          e.preventDefault();\n          close();\n          break;\n      }\n      return;\n    }\n\n    const displayItems =\n      searchQuery.value.trim().length >= MIN_SEARCH_LENGTH\n        ? results.value\n        : [...favorites.value, ...filteredRecentSearches.value];\n\n    switch (e.key) {\n      case \"ArrowDown\":\n        e.preventDefault();\n        selectedIndex.value = Math.min(selectedIndex.value + 1, displayItems.length - 1);\n        selectedAction.value = canAccessYoupark.value ? \"youpark\" : canAccessRemit.value ? \"remit\" : \"organization\";\n        break;\n      case \"ArrowUp\":\n        e.preventDefault();\n        selectedIndex.value = Math.max(selectedIndex.value - 1, 0);\n        selectedAction.value = canAccessYoupark.value ? \"youpark\" : canAccessRemit.value ? \"remit\" : \"organization\";\n        break;\n      case \"ArrowLeft\":\n        e.preventDefault();\n        if (selectedAction.value === \"youpark\") {\n          if (canAccessRemit.value) {\n            selectedAction.value = \"remit\";\n          } else if (canAccessOrganization.value) {\n            selectedAction.value = \"organization\";\n          }\n        } else if (selectedAction.value === \"remit\") {\n          if (canAccessOrganization.value) {\n            selectedAction.value = \"organization\";\n          }\n        }\n        break;\n      case \"ArrowRight\":\n        e.preventDefault();\n        if (selectedAction.value === \"organization\") {\n          if (canAccessRemit.value) {\n            selectedAction.value = \"remit\";\n          } else if (canAccessYoupark.value) {\n            selectedAction.value = \"youpark\";\n          }\n        } else if (selectedAction.value === \"remit\") {\n          if (canAccessYoupark.value) {\n            selectedAction.value = \"youpark\";\n          }\n        }\n        break;\n      case \"Enter\":\n        e.preventDefault();\n        if (selectedIndex.value < displayItems.length) {\n          const result = displayItems[selectedIndex.value];\n          if (selectedAction.value === \"organization\" && canAccessOrganization.value) {\n            void navigateToOrganization(result);\n          } else if (selectedAction.value === \"remit\" && canAccessRemit.value) {\n            void navigateToRemit(result);\n          } else if (selectedAction.value === \"youpark\" && canAccessYoupark.value) {\n            void navigateToYoupark(result);\n          }\n        }\n        break;\n      case \"Escape\":\n        e.preventDefault();\n        close();\n        break;\n    }\n  };\n\n  const handleGlobalKeyDown = (e: KeyboardEvent) => {\n    if ((e.ctrlKey || e.metaKey) && e.key === \"k\") {\n      e.preventDefault();\n      if (canShow.value) {\n        if (isOpen.value) {\n          close();\n        } else {\n          open();\n        }\n      }\n    }\n  };\n\n  const removeFromRecent = (result: QuickNavResult) => {\n    const updated = recentSearches.value.filter(r => r.organizationId !== result.organizationId);\n    recentSearches.value = updated;\n    saveRecentSearches(updated);\n    const totalItems = favorites.value.length + filteredRecentSearches.value.length;\n    if (selectedIndex.value >= totalItems) {\n      selectedIndex.value = Math.max(0, totalItems - 1);\n    }\n  };\n\n  const clearRecentSearches = () => {\n    recentSearches.value = [];\n    saveRecentSearches([]);\n    selectedIndex.value = 0;\n  };\n\n  if (!sharedQuickNavScope) {\n    sharedQuickNavScope = effectScope(true);\n    sharedQuickNavScope.run(() => {\n      watch(searchQuery, value => {\n        selectedIndex.value = 0;\n\n        if (value.startsWith(\"/\")) {\n          searchMode.value = \"commands\";\n          isLoading.value = false;\n          results.value = [];\n        } else {\n          searchMode.value = \"organizations\";\n          selectedAction.value = \"youpark\";\n          performSearch(value);\n        }\n      });\n    });\n  }\n\n  sharedQuickNavController = {\n    isOpen,\n    searchQuery,\n    results,\n    isLoading,\n    isNavigating,\n    selectedIndex,\n    selectedAction,\n    recentSearches,\n    searchMode,\n    menuResults,\n    canAccessOrganization,\n    canAccessRemit,\n    canAccessYoupark,\n    canShow,\n    open,\n    close,\n    handleKeyDown,\n    handleGlobalKeyDown,\n    navigateToOrganization,\n    navigateToYoupark,\n    navigateToRemit,\n    navigateToMenuItem,\n    performSearch,\n    removeFromRecent,\n    clearRecentSearches,\n    favorites,\n    filteredRecentSearches,\n    isFavorite,\n    toggleFavorite\n  };\n\n  return sharedQuickNavController;\n}\n","import { inject, provide } from \"vue\";\n\nimport { useRoute, useRouter, type RouteLocationNormalizedLoaded, type Router } from \"vue-router\";\n\nconst RouteContextKey = Symbol(\"RouteContext\");\nconst RouterContextKey = Symbol(\"RouterContext\");\n\nexport const provideRouteContext = () => {\n  const route = useRoute();\n  provide(RouteContextKey, route);\n  return route;\n};\n\nexport const provideRouterContext = () => {\n  const router = useRouter();\n  provide(RouterContextKey, router);\n  return router;\n};\n\nexport const useRouteContext = () => inject<RouteLocationNormalizedLoaded>(RouteContextKey, useRoute());\n\nexport const useRouterContext = () => inject<Router>(RouterContextKey, useRouter());\n","import { computed, ref, watch } from \"vue\";\nimport type { ComputedRef } from \"vue\";\n\nexport type ThemeMode = \"light\" | \"dark\" | \"auto\";\n\nconst STORAGE_KEY = \"accountv2-theme-preference\";\nconst DARK_MODE_START = 18; // 6 PM\nconst DARK_MODE_END = 6; // 6 AM\nconst DARK_CLASS = \"dark\";\nconst MIN_TRANSITION_DELAY_MS = 1_000; // Safety buffer so timers aren't rescheduled instantly if calculations hit the exact transition moment\n\ntype ResolvedTheme = \"light\" | \"dark\";\n\nexport interface ThemeContext {\n  isDark: ComputedRef<boolean>;\n  preference: ComputedRef<ThemeMode>;\n  activeMode: ComputedRef<ResolvedTheme>;\n  setTheme: (mode: ThemeMode) => void;\n}\n\n/**\n * Detects system color scheme preference\n * Returns true if dark mode is preferred by the system\n */\nfunction getSystemPreference(): boolean {\n  if (typeof window === \"undefined\") return false;\n  return window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n}\n\n/**\n * Determines if it's currently night time based on local time\n * Dark mode: 6 PM - 6 AM (18:00 - 06:00)\n */\nfunction isNightTime(): boolean {\n  const hour = new Date().getHours();\n  return hour >= DARK_MODE_START || hour < DARK_MODE_END;\n}\n\n/**\n * Resolves the effective theme mode based on preference and system/time\n */\nfunction resolveTheme(preference: ThemeMode): boolean {\n  if (preference === \"dark\") return true;\n  if (preference === \"light\") return false;\n\n  // Auto mode: use time-based intelligence, falling back to system preference\n  if (isNightTime()) {\n    return true; // Night time → dark mode\n  }\n  return getSystemPreference(); // Day time → use system preference\n}\n\n/**\n * Applies theme class to document root\n */\nfunction applyTheme(isDark: boolean): void {\n  if (typeof document === \"undefined\") return;\n\n  const root = document.documentElement;\n  root.dataset.theme = isDark ? \"dark\" : \"light\";\n  if (isDark) {\n    root.classList.add(DARK_CLASS);\n  } else {\n    root.classList.remove(DARK_CLASS);\n  }\n}\n\nfunction getNextTransition(from: Date): Date {\n  const nextMorning = new Date(from);\n  nextMorning.setHours(DARK_MODE_END, 0, 0, 0);\n  if (nextMorning <= from) {\n    nextMorning.setDate(nextMorning.getDate() + 1);\n  }\n\n  const nextEvening = new Date(from);\n  nextEvening.setHours(DARK_MODE_START, 0, 0, 0);\n  if (nextEvening <= from) {\n    nextEvening.setDate(nextEvening.getDate() + 1);\n  }\n\n  return nextMorning < nextEvening ? nextMorning : nextEvening;\n}\n\n/**\n * Hook for theme management with system preference and time-based intelligence\n */\nexport function useTheme() {\n  const preferenceRef = ref<ThemeMode>(\"auto\");\n  let mediaQuery: MediaQueryList | null = null;\n  let mediaQueryListener: ((event: MediaQueryListEvent) => void) | null = null;\n  let timeUpdateTimer: number | null = null;\n  let storageListener: ((event: StorageEvent) => void) | null = null;\n  const resolvedThemeRef = ref<boolean>(resolveTheme(preferenceRef.value));\n\n  // Load preference from localStorage on first use\n  function loadPreference(): void {\n    if (typeof localStorage === \"undefined\") return;\n    const stored = localStorage.getItem(STORAGE_KEY);\n    if (stored === \"light\" || stored === \"dark\" || stored === \"auto\") {\n      preferenceRef.value = stored;\n    }\n  }\n\n  // Save preference to localStorage\n  function savePreference(preference: ThemeMode): void {\n    if (typeof localStorage === \"undefined\") return;\n    localStorage.setItem(STORAGE_KEY, preference);\n  }\n\n  function clearScheduledUpdates(): void {\n    if (timeUpdateTimer !== null && typeof window !== \"undefined\") {\n      window.clearTimeout(timeUpdateTimer);\n      timeUpdateTimer = null;\n    }\n  }\n\n  function scheduleTimeUpdate(): void {\n    if (typeof window === \"undefined\") return;\n    if (preferenceRef.value !== \"auto\") {\n      clearScheduledUpdates();\n      return;\n    }\n\n    const now = new Date();\n    const nextTransition = getNextTransition(now);\n    const delay = Math.max(nextTransition.getTime() - now.getTime(), MIN_TRANSITION_DELAY_MS);\n\n    clearScheduledUpdates();\n    timeUpdateTimer = window.setTimeout(() => {\n      updateTheme();\n      scheduleTimeUpdate();\n    }, delay);\n  }\n\n  // Update effective theme based on preference\n  function updateTheme(): void {\n    const isDark = resolveTheme(preferenceRef.value);\n    resolvedThemeRef.value = isDark;\n    applyTheme(isDark);\n  }\n\n  // Watch preference changes\n  watch(\n    preferenceRef,\n    newPreference => {\n      savePreference(newPreference);\n      updateTheme();\n      scheduleTimeUpdate();\n    },\n    { immediate: false }\n  );\n\n  // Computed getters\n  const isDark = computed(() => resolvedThemeRef.value);\n  const preference = computed(() => preferenceRef.value);\n  const activeMode = computed<ResolvedTheme>(() => (resolvedThemeRef.value ? \"dark\" : \"light\"));\n\n  // Set theme preference\n  function setTheme(mode: ThemeMode): void {\n    preferenceRef.value = mode;\n  }\n\n  // Initialize on first use\n  function init(): void {\n    loadPreference();\n    updateTheme();\n    scheduleTimeUpdate();\n\n    // Listen for system preference changes\n    if (typeof window !== \"undefined\") {\n      mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n      mediaQueryListener = () => {\n        // Only update if in auto mode\n        if (preferenceRef.value === \"auto\") {\n          updateTheme();\n          scheduleTimeUpdate();\n        }\n      };\n\n      if (typeof mediaQuery.addEventListener === \"function\") {\n        mediaQuery.addEventListener(\"change\", mediaQueryListener);\n      } else if (typeof mediaQuery.addListener === \"function\") {\n        mediaQuery.addListener(mediaQueryListener);\n      }\n\n      storageListener = event => {\n        if (event.key !== STORAGE_KEY || typeof event.newValue !== \"string\") {\n          return;\n        }\n\n        if (event.newValue === \"light\" || event.newValue === \"dark\" || event.newValue === \"auto\") {\n          preferenceRef.value = event.newValue;\n        }\n      };\n\n      window.addEventListener(\"storage\", storageListener);\n    }\n  }\n\n  function cleanup(): void {\n    if (mediaQuery !== null && mediaQueryListener !== null) {\n      if (typeof mediaQuery.removeEventListener === \"function\") {\n        mediaQuery.removeEventListener(\"change\", mediaQueryListener);\n      } else if (typeof mediaQuery.removeListener === \"function\") {\n        mediaQuery.removeListener(mediaQueryListener);\n      }\n    }\n    if (storageListener !== null && typeof window !== \"undefined\") {\n      window.removeEventListener(\"storage\", storageListener);\n      storageListener = null;\n    }\n    clearScheduledUpdates();\n  }\n\n  return {\n    isDark,\n    preference,\n    activeMode,\n    setTheme,\n    init,\n    cleanup,\n    // Exposed for testing/debugging\n    isNightTime,\n    getSystemPreference\n  };\n}\n","import { onMounted, onUnmounted, watch, type Ref } from \"vue\";\n\nconst focusableSelector =\n  'a[href], button:not([disabled]), input:not([disabled]):not([type=\"hidden\"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\nconst openDialogs: Ref<HTMLElement | null>[] = [];\n\nconst register = (panel: Ref<HTMLElement | null>) => {\n  if (!openDialogs.includes(panel)) {\n    openDialogs.push(panel);\n  }\n};\n\nconst unregister = (panel: Ref<HTMLElement | null>) => {\n  const index = openDialogs.indexOf(panel);\n  if (index >= 0) {\n    openDialogs.splice(index, 1);\n  }\n};\n\nexport const useDialogKeyboard = (panel: Ref<HTMLElement | null>, isOpen: () => boolean, close: () => void) => {\n  const hasUnregisteredModalLayer = () => {\n    const registered = new Set(\n      openDialogs.map(dialog => dialog.value?.closest('[role=\"dialog\"]')).filter(element => element !== null)\n    );\n    return Array.from(document.querySelectorAll('[role=\"dialog\"][aria-modal=\"true\"]')).some(\n      element => !registered.has(element)\n    );\n  };\n\n  const isTopmostDialog = () => openDialogs[openDialogs.length - 1] === panel && !hasUnregisteredModalLayer();\n\n  const handleWindowKeydown = (event: KeyboardEvent) => {\n    if (event.key !== \"Escape\" || event.defaultPrevented || !isOpen() || !isTopmostDialog()) {\n      return;\n    }\n    event.preventDefault();\n    close();\n  };\n\n  const handlePanelKeydown = (event: KeyboardEvent) => {\n    if (event.key !== \"Tab\" || !panel.value) {\n      return;\n    }\n    const focusable = Array.from(panel.value.querySelectorAll<HTMLElement>(focusableSelector)).filter(\n      element => element.offsetParent !== null\n    );\n    if (focusable.length === 0) {\n      event.preventDefault();\n      panel.value.focus();\n      return;\n    }\n    const first = focusable[0];\n    const last = focusable[focusable.length - 1];\n    const active = document.activeElement;\n    if (event.shiftKey && (active === first || active === panel.value)) {\n      event.preventDefault();\n      last.focus();\n    } else if (!event.shiftKey && active === last) {\n      event.preventDefault();\n      first.focus();\n    }\n  };\n\n  watch(\n    isOpen,\n    open => {\n      if (open) {\n        register(panel);\n      } else {\n        unregister(panel);\n      }\n    },\n    { immediate: true }\n  );\n\n  onMounted(() => {\n    window.addEventListener(\"keydown\", handleWindowKeydown);\n  });\n\n  onUnmounted(() => {\n    window.removeEventListener(\"keydown\", handleWindowKeydown);\n    unregister(panel);\n  });\n\n  return { handlePanelKeydown };\n};\n","import type { ServiceResult } from \"@core/services/serviceResult\";\n\nimport httpClient from \"@common/http-client\";\nimport { resolveServiceErrorKey } from \"@common/utils/http/errors\";\nimport { toOptionalString } from \"@common/utils/strings\";\n\nexport type SignInStep = 1 | 2;\n\nexport interface SignInState {\n  step: SignInStep;\n  identifier: string;\n  tfaChannel: string;\n  tfaChallenge: string | null;\n  redirectUrl: string;\n  errorKey?: string;\n  siteKey?: string;\n  tfaCode?: string;\n  completed: boolean;\n  successRedirectUrl?: string;\n}\n\ninterface RawSignInResponse {\n  step?: number;\n  identifier?: unknown;\n  phoneNumber?: unknown;\n  tfaChannel?: unknown;\n  tfaChallenge?: unknown;\n  redirectUrl?: unknown;\n  errorKey?: unknown;\n  siteKey?: unknown;\n  tfaCode?: unknown;\n  completed?: unknown;\n  successRedirectUrl?: unknown;\n}\n\nconst defaultRedirectUrl = \"/account\";\nconst genericErrorKey = \"signIn.errors.generic\";\nconst defaultTfaChannel = \"Sms\";\nconst isEmailIdentifier = (value: string) => value.includes(\"@\");\n\nconst normalizeSignInResponse = (raw: RawSignInResponse | undefined): SignInState => {\n  const step = raw?.step === 2 ? 2 : 1;\n  const identifier = toOptionalString(raw?.identifier) ?? toOptionalString(raw?.phoneNumber) ?? \"\";\n  const tfaChannel = toOptionalString(raw?.tfaChannel) ?? defaultTfaChannel;\n  const tfaChallenge = toOptionalString(raw?.tfaChallenge) ?? null;\n  const redirectUrl = toOptionalString(raw?.redirectUrl) ?? defaultRedirectUrl;\n  const errorKey = toOptionalString(raw?.errorKey);\n  const siteKey = toOptionalString(raw?.siteKey);\n  const tfaCode = toOptionalString(raw?.tfaCode) ?? \"\";\n  const completed = raw?.completed === true;\n  const successRedirectUrl = toOptionalString(raw?.successRedirectUrl);\n\n  return {\n    step: step,\n    identifier,\n    tfaChannel,\n    tfaChallenge,\n    redirectUrl,\n    errorKey,\n    siteKey,\n    tfaCode,\n    completed,\n    successRedirectUrl\n  };\n};\n\nconst buildResult = (state: SignInState): ServiceResult<SignInState> => {\n  if (state.errorKey) {\n    return { success: false, data: state, errorKey: state.errorKey };\n  }\n  return { success: true, data: state };\n};\n\nconst ensureAntiForgeryToken = () => {\n  if (!httpClient.getAntiForgeryToken()) {\n    httpClient.setDefaultAntiForgeryToken();\n  }\n};\n\nexport const authService = {\n  ensureAntiForgeryToken() {\n    ensureAntiForgeryToken();\n  },\n\n  async signOut(): Promise<void> {\n    ensureAntiForgeryToken();\n    await httpClient.post(\"/api/account/sign-out\", {});\n  },\n\n  async getState(): Promise<ServiceResult<SignInState>> {\n    try {\n      const response = await httpClient.get<RawSignInResponse>(\"/dashboard?handler=SignInState\");\n      if (!response.ok) {\n        return { success: false, errorKey: resolveServiceErrorKey(response.errorThrown, genericErrorKey) };\n      }\n      return buildResult(normalizeSignInResponse(response.data));\n    } catch (error) {\n      return { success: false, errorKey: resolveServiceErrorKey(error, genericErrorKey) };\n    }\n  },\n\n  async requestTfaCode(payload: {\n    identifier: string;\n    redirectUrl?: string;\n    cfTurnstileResponse: string;\n  }): Promise<ServiceResult<SignInState>> {\n    try {\n      const isEmail = isEmailIdentifier(payload.identifier);\n      const response = await httpClient.post<RawSignInResponse>(\"/dashboard?handler=ReceiveTfaCode\", {\n        identifier: payload.identifier,\n        ...(isEmail ? {} : { phoneNumber: payload.identifier }),\n        redirectUrl: payload.redirectUrl ?? defaultRedirectUrl,\n        cfTurnstileResponse: payload.cfTurnstileResponse\n      });\n\n      if (!response.ok) {\n        return { success: false, errorKey: resolveServiceErrorKey(response.errorThrown, genericErrorKey) };\n      }\n\n      return buildResult(normalizeSignInResponse(response.data));\n    } catch (error) {\n      return { success: false, errorKey: resolveServiceErrorKey(error, genericErrorKey) };\n    }\n  },\n\n  async confirmTfaCode(payload: {\n    identifier: string;\n    tfaCode: string;\n    tfaChallenge?: string | null;\n    redirectUrl?: string;\n  }): Promise<ServiceResult<SignInState>> {\n    try {\n      const isEmail = isEmailIdentifier(payload.identifier);\n      const response = await httpClient.post<RawSignInResponse>(\"/dashboard?handler=ConfirmTfaCode\", {\n        identifier: payload.identifier,\n        ...(isEmail ? {} : { phoneNumber: payload.identifier }),\n        tfaCode: payload.tfaCode,\n        tfaChallenge: payload.tfaChallenge ?? null,\n        redirectUrl: payload.redirectUrl ?? defaultRedirectUrl\n      });\n\n      if (!response.ok) {\n        return { success: false, errorKey: resolveServiceErrorKey(response.errorThrown, genericErrorKey) };\n      }\n\n      return buildResult(normalizeSignInResponse(response.data));\n    } catch (error) {\n      return { success: false, errorKey: resolveServiceErrorKey(error, genericErrorKey) };\n    }\n  }\n};\n","import type { ServiceResult } from \"@core/services/serviceResult\";\nimport type { PlusSubscription, UserProfile, UserProfileLegacy } from \"@core/types/models\";\n\nimport type { XhrStatus } from \"@common/http-client\";\nimport httpClient from \"@common/http-client\";\nimport { resolveServiceErrorKey } from \"@common/utils/http/errors\";\n\nexport interface ProfileValidationErrors {\n  firstName?: string;\n  lastName?: string;\n  email?: string;\n  phoneNumber?: string;\n  languageTag?: string;\n}\n\nexport type ProfileUpdateResult = ServiceResult<UserProfileLegacy> & {\n  validationErrors?: ProfileValidationErrors;\n};\n\nconst mapUpdateValidationErrors = (error: unknown): ProfileValidationErrors | undefined => {\n  if (typeof error !== \"string\") {\n    return undefined;\n  }\n\n  const code = error.trim();\n  if (code.length === 0) {\n    return undefined;\n  }\n\n  switch (code) {\n    case \"ERR_INVALID_EMAIL\":\n      return { email: \"profile.validation.emailInvalid\" };\n    case \"ERR_EMAIL_EXISTS\":\n      return { email: \"profile.validation.emailExists\" };\n    case \"ERR_INVALID_LANGUAGETAG\":\n      return { languageTag: \"profile.validation.language\" };\n    case \"ERR_INVALID_FIRST_NAME\":\n      return { firstName: \"profile.validation.firstName\" };\n    case \"ERR_INVALID_LAST_NAME\":\n      return { lastName: \"profile.validation.lastName\" };\n    case \"ERR_INVALID_PHONENUMBER\":\n      return { phoneNumber: \"profile.validation.phoneNumberRequired\" };\n    default:\n      return undefined;\n  }\n};\n\nconst toServiceResult = <T = void>(response: XhrStatus<T>, fallbackError?: string): ServiceResult<T> => {\n  if (!response.ok) {\n    const errorKey = fallbackError\n      ? resolveServiceErrorKey(response.errorThrown, fallbackError)\n      : resolveServiceErrorKey(response.errorThrown);\n    return { success: false, errorKey };\n  }\n\n  return { success: true, data: response.data };\n};\n\nexport const profileService = {\n  async fetchProfile() {\n    const config = await httpClient.getUnwrapped<{ userProfile: UserProfile }>(\"/dashboard?handler=config\");\n    return config.userProfile;\n  },\n\n  async logoutDevice(deviceId: string): Promise<ServiceResult<{ signout: boolean }>> {\n    const response = await httpClient.delete<{ signout: boolean }>(\"/api/account/fingerprint\", { id: deviceId });\n    if (!response.ok) {\n      return { success: false, errorKey: \"profile.errorLogoutDevice\" };\n    }\n    return { success: true, data: { signout: Boolean(response.data?.signout) } };\n  },\n\n  async updateProfile(updates: Partial<UserProfile>): Promise<ProfileUpdateResult> {\n    const updatePayload = {\n      firstname: updates.firstName ?? \"\",\n      middlename: updates.middleName ?? \"\",\n      lastname: updates.lastName ?? \"\",\n      email: updates.email ?? \"\",\n      languageTag: updates.languageTag ?? \"\",\n      emailTransactionsAfterPurchase: updates.emailTransactionsAfterPurchase ?? false,\n      analyticsEnabled: updates.analyticsEnabled ?? false\n    };\n\n    try {\n      const response = await httpClient.post<UserProfileLegacy | string>(\"/account/update\", updatePayload);\n      const requestValidationErrors = mapUpdateValidationErrors(response.errorThrown);\n      if (!response.ok) {\n        if (requestValidationErrors) {\n          return { success: false, validationErrors: requestValidationErrors };\n        }\n        return { success: false, errorKey: resolveServiceErrorKey(response.errorThrown, \"profile.saveErrorMessage\") };\n      }\n\n      const payload = response.data;\n      if (typeof payload === \"string\") {\n        const payloadValidationErrors = mapUpdateValidationErrors(payload);\n        if (payloadValidationErrors) {\n          return { success: false, validationErrors: payloadValidationErrors };\n        }\n        return { success: false, errorKey: resolveServiceErrorKey(payload, \"profile.saveErrorMessage\") };\n      }\n\n      if (payload === null || payload === undefined || typeof payload !== \"object\") {\n        return { success: false, errorKey: \"profile.saveErrorMessage\" };\n      }\n\n      return { success: true, data: payload };\n    } catch (error) {\n      const caughtValidationErrors = mapUpdateValidationErrors(error);\n      if (caughtValidationErrors) {\n        return { success: false, validationErrors: caughtValidationErrors };\n      }\n      return { success: false, errorKey: \"profile.saveErrorMessage\" };\n    }\n  },\n\n  async sendChangePhoneTfa(phoneNumber: string) {\n    try {\n      const response = await httpClient.post<{ name: string | null; tfaChallenge: string } | string>(\n        \"/account/changephonenumbertfa\",\n        {\n          phoneNumber\n        }\n      );\n\n      if (!response.ok) {\n        return { success: false, errorKey: resolveServiceErrorKey(response.errorThrown) };\n      }\n\n      const payload = response.data;\n      if (typeof payload === \"string\" || !payload?.tfaChallenge) {\n        return { success: false, errorKey: resolveServiceErrorKey(payload, \"profile.errors.phoneChangeErrorUnknown\") };\n      }\n\n      return { success: true, data: payload };\n    } catch {\n      return { success: false, errorKey: \"profile.errors.phoneChangeErrorUnknown\" };\n    }\n  },\n\n  async confirmChangePhoneTfa(phoneNumber: string, tfaCode: string, tfaChallenge: string) {\n    try {\n      const response = await httpClient.post<{ phoneNumberFormatted: string } | string>(\n        \"/account/changephonenumbertfaconfirm\",\n        {\n          phoneNumber,\n          tfaCode,\n          tfaChallenge\n        }\n      );\n\n      if (!response.ok) {\n        return { success: false, errorKey: resolveServiceErrorKey(response.errorThrown) };\n      }\n\n      const payload = response.data;\n      if (typeof payload === \"string\" || !payload?.phoneNumberFormatted) {\n        return { success: false, errorKey: resolveServiceErrorKey(payload, \"profile.errors.phoneChangeErrorUnknown\") };\n      }\n\n      return { success: true, data: payload };\n    } catch {\n      return { success: false, errorKey: \"profile.errors.phoneChangeErrorUnknown\" };\n    }\n  },\n\n  async sendDeleteAccountTfa() {\n    try {\n      const response = await httpClient.delete<void>(\"/account/deleteaccount\");\n      return toServiceResult<void>(response, \"profile.saveErrorMessage\");\n    } catch {\n      return { success: false, errorKey: \"profile.saveErrorMessage\" };\n    }\n  },\n\n  async confirmDeleteAccountTfa(tfaCode: string) {\n    try {\n      const response = await httpClient.delete<void>(\"/account/deleteaccounttfaconfirm\", { tfaCode });\n      return toServiceResult<void>(response, \"profile.saveErrorMessage\");\n    } catch {\n      return { success: false, errorKey: \"profile.saveErrorMessage\" };\n    }\n  },\n\n  async setPlusAutomaticRenewal(enabled: boolean) {\n    const response = await httpClient.post<Pick<PlusSubscription, \"isValid\" | \"automaticRenewalEnabled\">>(\n      \"/account/plusrenewal\",\n      { enabled }\n    );\n    if (!response.ok) {\n      if (response.errorThrown === \"ERR_PLUS_SUBSCRIPTION_INVALID_AND_RENEWAL_IS_DISABLED\") {\n        return { success: false, errorKey: \"profile.errorPlusSubscriptionInvalid\" };\n      }\n      if (response.errorThrown === \"ERR_NO_VALID_PAYMENT_SOURCE_WITH_PLUS_ENABLED\") {\n        return { success: false, errorKey: \"profile.errorNoValidPaymentSource\" };\n      }\n      return { success: false, errorKey: \"profile.errorUpdatePlus\" };\n    }\n    return { success: true, data: response.data };\n  },\n\n  async setLanguage(tag: string) {\n    try {\n      const response = await httpClient.post<void>(`/?handler=setLanguage&tag=${encodeURIComponent(tag)}`, {});\n      if (!response.ok) {\n        return { success: false, errorKey: resolveServiceErrorKey(response.errorThrown) };\n      }\n      return { success: true };\n    } catch (error) {\n      return { success: false, errorKey: resolveServiceErrorKey(error) };\n    }\n  },\n\n  async confirmContactInfo() {\n    try {\n      const response = await httpClient.post<boolean>(\"/account/confirmcontactinfo\", {});\n      return toServiceResult<boolean>(response, \"profile.saveErrorMessage\");\n    } catch {\n      return { success: false, errorKey: \"profile.saveErrorMessage\" };\n    }\n  },\n\n  async signOutAllDevices() {\n    try {\n      const response = await httpClient.delete<void>(\"/account/removefingerprints\");\n      return toServiceResult<void>(response, \"profile.saveErrorMessage\");\n    } catch {\n      return { success: false };\n    }\n  }\n};\n","import type { useAppConfig } from \"@core/composables/data/useAppConfig\";\nimport type { ViewType } from \"@core/composables/state/useNavigationRouter\";\n\ntype AppConfig = ReturnType<typeof useAppConfig>[\"config\"];\ntype PermissionKey = keyof AppConfig[\"permissions\"];\n\ntype AdminAccessRule =\n  { kind: \"permission\"; permission: PermissionKey } | { kind: \"youparkCustomer\" } | { kind: \"employeeOnly\" };\n\nconst adminViewRules = [\n  { view: \"remit\", rule: { kind: \"permission\", permission: \"remits\" } },\n  { view: \"remit-tab\", rule: { kind: \"permission\", permission: \"remits\" } },\n  { view: \"remit-allocations\", rule: { kind: \"permission\", permission: \"remits\" } },\n  { view: \"remit-creditors\", rule: { kind: \"permission\", permission: \"remits\" } },\n  { view: \"statistics\", rule: { kind: \"permission\", permission: \"statistics\" } },\n  { view: \"telemetry\", rule: { kind: \"permission\", permission: \"telemetry\" } },\n  { view: \"telemetry-annotations\", rule: { kind: \"permission\", permission: \"telemetry\" } },\n  { view: \"applications\", rule: { kind: \"permission\", permission: \"applications\" } },\n  { view: \"users\", rule: { kind: \"permission\", permission: \"users\" } },\n  { view: \"user-create\", rule: { kind: \"permission\", permission: \"users\" } },\n  { view: \"user-edit\", rule: { kind: \"permission\", permission: \"users\" } },\n  { view: \"organizations\", rule: { kind: \"permission\", permission: \"organizations\" } },\n  { view: \"organizations-create\", rule: { kind: \"permission\", permission: \"organizations\" } },\n  { view: \"organizations-details\", rule: { kind: \"permission\", permission: \"organizations\" } },\n  { view: \"organizations-details-applications\", rule: { kind: \"permission\", permission: \"organizations\" } },\n  { view: \"organizations-details-users\", rule: { kind: \"permission\", permission: \"organizations\" } },\n  { view: \"organizations-details-subs\", rule: { kind: \"permission\", permission: \"organizations\" } },\n  { view: \"organizations-details-api-users\", rule: { kind: \"permission\", permission: \"organizations\" } },\n  { view: \"audits\", rule: { kind: \"permission\", permission: \"audits\" } },\n  { view: \"exports\", rule: { kind: \"permission\", permission: \"audits\" } },\n  { view: \"vehicle-registry\", rule: { kind: \"permission\", permission: \"vehicleRegistry\" } },\n  { view: \"manual-approval\", rule: { kind: \"permission\", permission: \"manualApproval\" } },\n  { view: \"traffic-control\", rule: { kind: \"permission\", permission: \"trafficControl\" } },\n  { view: \"system\", rule: { kind: \"permission\", permission: \"system\" } },\n  { view: \"cameras-overview\", rule: { kind: \"permission\", permission: \"camerasOverview\" } }\n] as const satisfies readonly { view: ViewType; rule: AdminAccessRule }[];\n\nconst adminRulesByView = new Map<ViewType, AdminAccessRule>(adminViewRules.map(def => [def.view, def.rule] as const));\n\nexport const adminViews = new Set<ViewType>(adminViewRules.map(def => def.view));\n\nexport const canAccessYouparkSection = (config: AppConfig, organizationId?: string) => {\n  if (config.isEmployee || config.canAccessYouParkCustomer) {\n    return true;\n  }\n  if (organizationId && config.lots.some(lot => lot.organizationId === organizationId)) {\n    return true;\n  }\n  return false;\n};\n\nexport const canAccessAdminView = (config: AppConfig, view: string) => {\n  const rule = adminRulesByView.get(view as ViewType);\n  if (!rule) {\n    return true;\n  }\n\n  if (config.isEmployee) {\n    return true;\n  }\n\n  if (rule.kind === \"permission\") {\n    return config.permissions[rule.permission] === true;\n  }\n\n  if (rule.kind === \"youparkCustomer\") {\n    return config.canAccessYouParkCustomer === true;\n  }\n\n  return false;\n};\n\nexport const youparkViews = new Set<ViewType>([\n  \"youpark\",\n  \"youpark-customer-register\",\n  \"youpark-subscriptions\",\n  \"youpark-invoices\",\n  \"youpark-transactions\",\n  \"youpark-credit\",\n  \"youpark-booking-reservations\",\n  \"youpark-free-visits\",\n  \"youpark-reports\",\n  \"youpark-insights\",\n  \"youpark-business-insights\",\n  \"youpark-todos\",\n  \"youpark-access\",\n  \"youpark-customer-admin\",\n  \"youpark-customer-admin-locations\",\n  \"youpark-customer-admin-locations-autopass\",\n  \"youpark-customer-admin-payment-kiosks\",\n  \"youpark-customer-admin-invoicing\",\n  \"youpark-customer-admin-areas\",\n  \"youpark-customer-admin-access\",\n  \"youpark-customer-admin-free-visit-kiosks\",\n  \"youpark-customer-admin-fees\"\n]);\n\nexport const youparkCustomerAdminViews = new Set<ViewType>([\n  \"youpark-customer-admin\",\n  \"youpark-customer-admin-locations\",\n  \"youpark-customer-admin-locations-autopass\",\n  \"youpark-customer-admin-payment-kiosks\",\n  \"youpark-customer-admin-invoicing\",\n  \"youpark-customer-admin-areas\",\n  \"youpark-customer-admin-access\",\n  \"youpark-customer-admin-free-visit-kiosks\",\n  \"youpark-customer-admin-fees\"\n]);\n\nexport const canAccessYouparkCustomerAdminSection = (config: AppConfig) => config.permissions.youparkSettings === true;\n\nexport const canImportFreeVisits = (config: AppConfig) =>\n  config.permissions.youparkFreeVisitImport === true && config.permissions.youparkFreeVisitRead === true;\n\nexport const canAccessRestrictedView = (config: AppConfig, view: string, organizationId?: string) => {\n  const canAccessYouparkOrganization = canAccessYouparkSection(config, organizationId);\n\n  if (view.startsWith(\"youpark-subscriptions\")) {\n    return canAccessYouparkOrganization && config.permissions.youparkSubscriptions === true;\n  }\n  if (view.startsWith(\"youpark-todos\")) {\n    return canAccessYouparkOrganization && config.permissions.youparkTodos === true;\n  }\n  if (view.startsWith(\"youpark-customer-register\")) {\n    return canAccessYouparkOrganization && config.permissions.youparkCustomerSubscriptionsRead === true;\n  }\n  if (view.startsWith(\"youpark-invoice\")) {\n    return canAccessYouparkOrganization && config.permissions.youparkInvoice === true;\n  }\n  if (view.startsWith(\"youpark-transactions\")) {\n    return canAccessYouparkOrganization && config.permissions.youpayAccounting === true;\n  }\n  if (view.startsWith(\"youpark-credit\")) {\n    if (!canAccessYouparkOrganization) {\n      return false;\n    }\n    if (config.isYouParkCustomer) {\n      return true;\n    }\n    return (\n      config.permissions.youparkInvoiceWrite === true ||\n      config.permissions.youpayAccounting === true ||\n      config.permissions.youpayRefund === true\n    );\n  }\n  if (view.startsWith(\"youpark-free-visits-import\")) {\n    return canAccessYouparkOrganization && canImportFreeVisits(config);\n  }\n  if (view.startsWith(\"youpark-free-visits\")) {\n    return canAccessYouparkOrganization && config.permissions.youparkFreeVisitRead === true;\n  }\n  if (view.startsWith(\"youpark-reports\")) {\n    return canAccessYouparkOrganization && config.permissions.youparkAccounting === true;\n  }\n  if (view.startsWith(\"youpark-access\")) {\n    return canAccessYouparkOrganization && config.permissions.access === true && config.isYouParkCustomer !== true;\n  }\n  if (view.startsWith(\"youpark-customer-admin\")) {\n    return canAccessYouparkOrganization && config.permissions.youparkSettings === true;\n  }\n  if (adminRulesByView.has(view as ViewType)) {\n    return canAccessAdminView(config, view);\n  }\n  if (youparkCustomerAdminViews.has(view as ViewType)) {\n    return canAccessYouparkOrganization && canAccessYouparkCustomerAdminSection(config);\n  }\n  if (youparkViews.has(view as ViewType)) {\n    return canAccessYouparkOrganization;\n  }\n  return true;\n};\n\nexport type YouparkMenuContext = {\n  allowBusinessInsights: boolean;\n  hasParkingLots: boolean;\n};\n\nexport const canAccessYouparkMenuView = (\n  config: AppConfig,\n  view: string,\n  organizationId: string | undefined,\n  context: YouparkMenuContext\n) => {\n  if (!canAccessRestrictedView(config, view, organizationId)) {\n    return false;\n  }\n  if (view.startsWith(\"youpark-business-insights\")) {\n    return context.allowBusinessInsights;\n  }\n  if (view.startsWith(\"youpark-booking-reservations\")) {\n    return context.hasParkingLots;\n  }\n  return true;\n};\n\nexport const hasAdministrationAccess = (config: AppConfig) => {\n  for (const view of adminViews) {\n    if (canAccessAdminView(config, view)) {\n      return true;\n    }\n  }\n  return false;\n};\n","import { useAppConfig } from \"@core/composables/data/useAppConfig\";\nimport { authService } from \"@core/services/authService\";\n\nexport async function signOut(): Promise<void> {\n  const { config } = useAppConfig();\n  const redirectUrl = config.isImpersonatedUser ? \"/dashboard/users\" : \"/\";\n\n  try {\n    await authService.signOut();\n  } catch (error) {\n    console.error(\"Sign-out error:\", error);\n  }\n  window.location.href = redirectUrl;\n}\n","const storageKey = \"accountv2.cardFlow\";\nconst storageTtlMs = 15 * 60 * 1000;\n\ntype StringDict = Record<string, string>;\n\nexport interface CardFlowContext {\n  originRoute: string;\n  routeParams?: StringDict;\n  routeQuery?: StringDict;\n  knownPaymentSourceIds: string[];\n  createdAt: number;\n  action?: string;\n  updatedAt?: number;\n}\n\nexport interface CardFlowContextPayload {\n  originRoute: string;\n  routeParams?: StringDict;\n  routeQuery?: StringDict;\n  knownPaymentSourceIds: string[];\n}\n\nconst isBrowser = typeof window !== \"undefined\" && typeof window.sessionStorage !== \"undefined\";\n\nconst readRawContext = (): CardFlowContext | null => {\n  if (!isBrowser) {\n    return null;\n  }\n  const raw = window.sessionStorage.getItem(storageKey);\n  if (!raw) {\n    return null;\n  }\n  try {\n    const parsed = JSON.parse(raw) as CardFlowContext;\n    const now = Date.now();\n    if (typeof parsed.createdAt !== \"number\" || now - parsed.createdAt > storageTtlMs) {\n      window.sessionStorage.removeItem(storageKey);\n      return null;\n    }\n    return parsed;\n  } catch {\n    window.sessionStorage.removeItem(storageKey);\n    return null;\n  }\n};\n\nconst writeContext = (context: CardFlowContext) => {\n  if (!isBrowser) {\n    return;\n  }\n  window.sessionStorage.setItem(storageKey, JSON.stringify(context));\n};\n\nexport const setCardFlowContext = (payload: CardFlowContextPayload) => {\n  if (!isBrowser) {\n    return;\n  }\n  const context: CardFlowContext = {\n    originRoute: payload.originRoute,\n    routeParams: payload.routeParams,\n    routeQuery: payload.routeQuery,\n    knownPaymentSourceIds: payload.knownPaymentSourceIds,\n    createdAt: Date.now()\n  };\n  writeContext(context);\n};\n\nexport const loadCardFlowContext = (): CardFlowContext | null => {\n  return readRawContext();\n};\n\nexport const registerCardFlowAction = (action: string | null | undefined): CardFlowContext | null => {\n  if (!action) {\n    return null;\n  }\n  const trimmed = action.trim().toLowerCase();\n  if (trimmed.length === 0) {\n    return null;\n  }\n  const context = readRawContext();\n  if (!context) {\n    return null;\n  }\n  context.action = trimmed;\n  context.updatedAt = Date.now();\n  writeContext(context);\n  return context;\n};\n\nexport const clearCardFlowContext = () => {\n  if (!isBrowser) {\n    return;\n  }\n  window.sessionStorage.removeItem(storageKey);\n};\n\nexport const toStringRecord = (record: Record<string, unknown>): StringDict => {\n  const result: StringDict = {};\n  for (const [key, value] of Object.entries(record ?? {})) {\n    if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n      result[key] = String(value);\n      continue;\n    }\n    if (Array.isArray(value)) {\n      const first = value.find(\n        item => typeof item === \"string\" || typeof item === \"number\" || typeof item === \"boolean\"\n      );\n      if (first !== undefined) {\n        result[key] = String(first);\n      }\n    }\n  }\n  return result;\n};\n\nexport type CardFlowOutcome = \"success\" | \"cancelled\" | \"error\" | \"unknown\";\n\nexport const interpretCardFlowAction = (action: string | undefined): CardFlowOutcome => {\n  if (!action) {\n    return \"unknown\";\n  }\n  const normalized = action.trim().toLowerCase();\n  if (normalized === \"netaxept:error:cancelled\") {\n    return \"cancelled\";\n  }\n  if (\n    normalized === \"netaxept:success:card-added\" ||\n    normalized === \"netaxept:success:card-added-previously-completed\"\n  ) {\n    return \"success\";\n  }\n  if (normalized.startsWith(\"netaxept:error:\")) {\n    return \"error\";\n  }\n  if (normalized.startsWith(\"netaxept:success:\")) {\n    return \"success\";\n  }\n  return \"unknown\";\n};\n","export function applyDocumentTitle(title: string): void {\n  if (typeof document === \"undefined\") {\n    return;\n  }\n\n  const isContainerTestEnvironment = document.documentElement.dataset.environment === \"ContainerTest\";\n  const documentTitlePrefix = isContainerTestEnvironment ? \"[TEST] \" : \"\";\n  document.title = `${documentTitlePrefix}${title}`;\n}\n","<template>\n  <nav\n    class=\"relative hidden w-full xl:block border-b border-gray-200 bg-white/95 backdrop-blur supports-[backdrop-filter]:bg-white/90 dark:border-slate-700 dark:bg-slate-900/95 dark:supports-[backdrop-filter]:bg-slate-900/90 shadow-sm z-30 transition-colors duration-300\"\n  >\n    <div class=\"mx-auto flex max-w-6xl items-start justify-between gap-4 px-8 py-4\">\n      <div class=\"flex items-start gap-8\">\n        <RouterLink :to=\"{ name: 'payment' }\" aria-label=\"YouPark\" class=\"inline-flex shrink-0 pt-0.5\">\n          <IconLogo class=\"h-8\" />\n        </RouterLink>\n\n        <div class=\"flex items-start gap-6 text-sm font-semibold text-gray-700 dark:text-slate-200 pt-1\">\n          <template v-for=\"link in navItems\" :key=\"link.key\">\n            <button\n              v-if=\"link.view\"\n              v-prefetch-route=\"link.view\"\n              type=\"button\"\n              class=\"relative whitespace-nowrap px-1 py-2 transition-all duration-200 hover:text-gray-900 dark:hover:text-white\"\n              :class=\"{ 'text-gray-900 dark:text-white font-bold': isActive(link) }\"\n              @click=\"handleLinkClick(link)\"\n            >\n              {{ translate(link.labelKey) }}\n              <span\n                v-if=\"isActive(link)\"\n                class=\"absolute -bottom-[1.45rem] left-0 right-0 h-0.5 bg-emerald-500 dark:bg-emerald-400\"\n              ></span>\n            </button>\n            <RouterLink\n              v-else-if=\"link.routeName\"\n              v-prefetch-route=\"link.routeName\"\n              :to=\"{ name: link.routeName }\"\n              class=\"relative whitespace-nowrap px-1 py-2 transition-all duration-200 hover:text-gray-900 dark:hover:text-white\"\n              :class=\"{ 'text-gray-900 dark:text-white font-bold': isActive(link) }\"\n            >\n              {{ translate(link.labelKey) }}\n              <span\n                v-if=\"isActive(link)\"\n                class=\"absolute -bottom-[1.45rem] left-0 right-0 h-0.5 bg-emerald-500 dark:bg-emerald-400\"\n              ></span>\n            </RouterLink>\n            <a\n              v-else\n              class=\"relative whitespace-nowrap px-1 py-2 transition-all duration-200 hover:text-gray-900 dark:hover:text-white\"\n              :href=\"link.href\"\n              :target=\"link.external ? '_blank' : undefined\"\n              :rel=\"link.external ? 'noreferrer' : undefined\"\n            >\n              {{ translate(link.labelKey) }}\n            </a>\n          </template>\n        </div>\n      </div>\n\n      <div class=\"flex items-center gap-3\">\n        <button\n          v-if=\"!(isMapPage && config.isAuthenticated)\"\n          type=\"button\"\n          class=\"inline-flex items-center justify-center rounded-xl bg-emerald-700 px-4 py-2 text-sm font-semibold text-white transition-all duration-200 hover:bg-emerald-800 focus:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500 focus-visible:ring-offset-2 dark:focus-visible:ring-offset-slate-900 whitespace-nowrap\"\n          @click=\"handleSignInClick\"\n        >\n          {{ translate(\"nav.registerOrSignIn\") }}\n        </button>\n        <button\n          v-else\n          type=\"button\"\n          class=\"inline-flex items-center justify-center rounded-xl border border-gray-200 dark:border-slate-700 bg-white dark:bg-slate-800 px-4 py-2 text-sm font-semibold text-gray-700 dark:text-slate-200 transition-all duration-200 hover:bg-gray-50 dark:hover:bg-slate-700 focus:outline-none focus-visible:ring-2 focus-visible:ring-gray-300 dark:focus-visible:ring-slate-600 focus-visible:ring-offset-2 dark:focus-visible:ring-offset-slate-900 whitespace-nowrap\"\n          @click=\"handleSignOutClick\"\n        >\n          {{ translate(\"nav.signOut\") }}\n        </button>\n        <ThemeToggle />\n        <div class=\"pl-1\">\n          <LanguageSwitcher compact dropdown-direction=\"left\" />\n        </div>\n      </div>\n    </div>\n  </nav>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport LanguageSwitcher from \"@core/components/shared/LanguageSwitcher.vue\";\nimport { useAppConfig } from \"@core/composables/data/useAppConfig\";\nimport { useNavigation, type ViewType } from \"@core/composables/state/useNavigation\";\nimport { useRouteContext } from \"@core/composables/state/useRouteContext\";\nimport IconLogo from \"@core/icons/IconLogo.vue\";\n\nimport { useTranslate } from \"@common/composables/useTranslate\";\n\nimport ThemeToggle from \"../components/ThemeToggle.vue\";\n\nimport { prefetchRouteDirective as vPrefetchRoute } from \"@/router/prefetchRouteDirective\";\n\ntype InternalView = Extract<ViewType, \"home\" | \"payment\" | \"faq\" | \"profile\" | \"vehicles\" | \"subscriptions\">;\ntype NavRouteName = \"map-parking\" | \"map-toll\" | \"map-area\" | \"map\";\n\ninterface NavItem {\n  key: string;\n  labelKey: string;\n  view?: InternalView;\n  routeName?: NavRouteName;\n  href?: string;\n  external?: boolean;\n}\n\nconst translate = useTranslate();\nconst { navigateTo, activeView } = useNavigation();\nconst { config } = useAppConfig();\nconst route = useRouteContext();\n\nconst isMapPage = computed(() => {\n  return route.meta?.layout === \"map\";\n});\n\nconst navItems = computed<NavItem[]>(() => {\n  if (isMapPage.value && config.isAuthenticated) {\n    return [\n      { key: \"home\", labelKey: \"nav.home\", view: \"home\" },\n      {\n        key: \"parking\",\n        labelKey: \"nav.parkering\",\n        routeName: \"map-parking\"\n      },\n      {\n        key: \"tollRoads\",\n        labelKey: \"nav.bomvei\",\n        routeName: \"map-toll\"\n      },\n      { key: \"profile\", labelKey: \"nav.profile\", view: \"profile\" },\n      { key: \"vehicles\", labelKey: \"nav.vehicles\", view: \"vehicles\" },\n      { key: \"subscriptions\", labelKey: \"nav.subscriptions\", view: \"subscriptions\" }\n    ];\n  }\n\n  return [\n    { key: \"payment\", labelKey: \"nav.paymentQuick\", view: \"payment\" },\n    {\n      key: \"parking\",\n      labelKey: \"nav.parkering\",\n      routeName: \"map-parking\"\n    },\n    {\n      key: \"tollRoads\",\n      labelKey: \"nav.bomvei\",\n      routeName: \"map-toll\"\n    },\n    { key: \"products\", labelKey: \"nav.products\", href: \"https://www.finter.no\", external: true },\n    { key: \"faq\", labelKey: \"nav.faq\", view: \"faq\" }\n  ];\n});\n\nconst isActive = (link: NavItem) => {\n  if (link.view) {\n    return activeView.value === link.view;\n  }\n  if (link.routeName) {\n    if (link.routeName === \"map-parking\") {\n      return activeView.value === \"map-parking\";\n    }\n    if (link.routeName === \"map-toll\") {\n      return activeView.value === \"map-toll\";\n    }\n    return route.name === link.routeName;\n  }\n  return false;\n};\n\nconst handleLinkClick = (link: NavItem) => {\n  if (link.view) {\n    void navigateTo(link.view);\n    return;\n  }\n  if (link.href) {\n    window.location.href = link.href;\n  }\n};\n\nconst handleSignInClick = () => {\n  void navigateTo(\"sign-in\");\n};\n\nconst handleSignOutClick = async () => {\n  const { signOut } = await import(\"@core/utils/auth\");\n  await signOut();\n};\n</script>\n","<template>\n  <div\n    :class=\"[\n      'flex h-screen bg-gray-50 transition-colors duration-300 dark:bg-slate-950',\n      showLayoutChrome ? 'overflow-hidden' : 'overflow-visible'\n    ]\"\n  >\n    <Transition name=\"nav-progress\">\n      <div\n        v-if=\"showLoadingBar\"\n        class=\"fixed top-0 left-0 right-0 z-50 h-1 overflow-hidden bg-emerald-100 dark:bg-emerald-950\"\n      >\n        <div\n          class=\"h-full w-2/5 bg-gradient-to-r from-emerald-400 via-emerald-500 to-emerald-400 dark:from-emerald-500 dark:via-emerald-400 dark:to-emerald-500 animate-nav-progress\"\n        />\n      </div>\n    </Transition>\n\n    <MobileSidebar v-if=\"showLayoutChrome\" />\n\n    <main :class=\"mainClasses\">\n      <DesktopTopNavbar v-if=\"showLayoutChrome\" />\n      <MobileHeader v-if=\"showLayoutChrome\" />\n\n      <DashboardRouteOutlet :centered-layout=\"showLayoutChrome\" @pending-change=\"isSuspensePending = $event\" />\n\n      <Footer v-if=\"showLayoutChrome\" :centered=\"showLayoutChrome\" />\n    </main>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, ref, watch } from \"vue\";\n\nimport { useAppConfig } from \"@core/composables/data/useAppConfig\";\nimport { useNavigatingState } from \"@core/composables/state/useNavigatingState\";\nimport { useRouteContext } from \"@core/composables/state/useRouteContext\";\n\nimport DashboardRouteOutlet from \"./DashboardRouteOutlet.vue\";\nimport DesktopTopNavbar from \"./DesktopTopNavbar.vue\";\nimport Footer from \"./Footer.vue\";\nimport MobileHeader from \"./MobileHeader.vue\";\nimport MobileSidebar from \"./MobileSidebar.vue\";\n\nconst props = defineProps<{\n  isEmbedded: boolean;\n}>();\n\nconst route = useRouteContext();\nconst { config } = useAppConfig();\nconst { isNavigating } = useNavigatingState();\nconst isSuspensePending = ref(false);\nconst showLoadingBar = ref(false);\nlet loadingBarTimeout: ReturnType<typeof setTimeout> | null = null;\n\nwatch(\n  () => isNavigating.value || isSuspensePending.value,\n  isLoading => {\n    if (isLoading) {\n      if (loadingBarTimeout) {\n        clearTimeout(loadingBarTimeout);\n        loadingBarTimeout = null;\n      }\n      showLoadingBar.value = true;\n    } else {\n      loadingBarTimeout = setTimeout(() => {\n        showLoadingBar.value = false;\n      }, 300);\n    }\n  }\n);\n\nonBeforeUnmount(() => {\n  if (loadingBarTimeout) {\n    clearTimeout(loadingBarTimeout);\n    loadingBarTimeout = null;\n  }\n});\n\nconst isChromeFreeLayout = computed(() => route.meta?.layout === \"chrome-free\");\nconst showLayoutChrome = computed(() => !props.isEmbedded && !isChromeFreeLayout.value && !config.isNativeClient);\nconst mainClasses = computed(() => {\n  if (!showLayoutChrome.value) {\n    return \"flex-1 overflow-visible pb-0\";\n  }\n  return \"flex flex-1 flex-col overflow-y-auto overscroll-contain pb-0\";\n});\n</script>\n","import script from \"./DesktopTopNavbar.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./DesktopTopNavbar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./DesktopTopNavbar.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./DesktopTopNavbar.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","<template>\n  <AuthenticatedDashboardShell v-if=\"config.isAuthenticated\" :is-embedded=\"isEmbedded\" />\n  <PublicDashboardShell v-else :is-embedded=\"isEmbedded\" />\n  <Teleport v-if=\"errorOpen\" to=\"body\">\n    <ErrorModal\n      :is-open=\"errorOpen\"\n      :title=\"errorTitle\"\n      :message=\"errorMessage\"\n      :variant=\"errorVariant\"\n      :action-label=\"errorActionLabel\"\n      @close=\"closeError\"\n      @confirm=\"confirmError\"\n    />\n  </Teleport>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, defineAsyncComponent, onBeforeUnmount, onMounted, provide, watch } from \"vue\";\n\nimport ErrorModal from \"@core/components/common/ErrorModal.vue\";\nimport { useAppConfig } from \"@core/composables/data/useAppConfig\";\nimport { useErrorModal } from \"@core/composables/state/useErrorModal\";\nimport { useLanguage, type Language } from \"@core/composables/state/useLanguage\";\nimport { useNavigation } from \"@core/composables/state/useNavigation\";\nimport { provideRouteContext, provideRouterContext } from \"@core/composables/state/useRouteContext\";\nimport { useTheme, type ThemeContext, type ThemeMode } from \"@core/composables/ui/useTheme\";\n\nimport PublicDashboardShell from \"./layouts/PublicDashboardShell.vue\";\n\nconst AuthenticatedDashboardShell = defineAsyncComponent(() => import(\"./layouts/AuthenticatedDashboardShell.vue\"));\n\ntype YouParkApi = {\n  setEmbedded(value: boolean): void;\n  setTheme(mode: ThemeMode): void;\n  setLanguage(value: Language | string): void;\n  getState(): {\n    embedded: boolean;\n    theme: ThemeMode;\n    language: \"nb\" | \"en\";\n  };\n};\n\ntype YouParkNative = {\n  onAuthCompleted(): void;\n};\n\ndeclare global {\n  interface Window {\n    YouParkApi?: YouParkApi;\n    youparkAccountV2?: YouParkApi;\n    YouParkNative?: YouParkNative;\n  }\n}\n\nconst { config } = useAppConfig();\nconst route = provideRouteContext();\nconst router = provideRouterContext();\nconst { activeView, routeParams, navigateTo } = useNavigation();\n\nconst theme = useTheme();\nprovide<ThemeContext>(\"theme\", {\n  isDark: theme.isDark,\n  preference: theme.preference,\n  activeMode: theme.activeMode,\n  setTheme: theme.setTheme\n});\n\nonMounted(() => {\n  theme.init();\n});\n\nonBeforeUnmount(() => {\n  theme.cleanup();\n});\n\nconst { language: currentLanguage, setLanguage: applyLanguage, toLanguageTag } = useLanguage();\n\nconst getQueryValue = (value: unknown): string | null => {\n  if (Array.isArray(value)) {\n    return getQueryValue(value[0]);\n  }\n  if (typeof value === \"string\") {\n    return value;\n  }\n  if (typeof value === \"number\" || typeof value === \"boolean\") {\n    return String(value);\n  }\n  return null;\n};\n\nconst normalizeThemeMode = (value: unknown): ThemeMode | null => {\n  const stringValue = getQueryValue(value);\n  if (!stringValue) {\n    return null;\n  }\n  const normalized = stringValue.trim().toLowerCase();\n  if (normalized === \"light\" || normalized === \"dark\" || normalized === \"auto\") {\n    return normalized;\n  }\n  return null;\n};\n\nconst parseEmbeddedFlag = (value: unknown): boolean => {\n  const stringValue = getQueryValue(value);\n  if (stringValue === null) {\n    return false;\n  }\n  const normalized = stringValue.trim().toLowerCase();\n  if (normalized.length === 0) {\n    return true;\n  }\n  if (normalized === \"0\" || normalized === \"false\" || normalized === \"no\" || normalized === \"off\") {\n    return false;\n  }\n  if (normalized === \"1\" || normalized === \"true\" || normalized === \"yes\" || normalized === \"on\") {\n    return true;\n  }\n  return true;\n};\n\nconst isEmbedded = computed(() => parseEmbeddedFlag(route.query.embedded) || config.isNativeClient);\n\nconst applyThemeFromQuery = (value: unknown) => {\n  const mode = normalizeThemeMode(value);\n  if (!mode) {\n    return;\n  }\n  theme.setTheme(mode);\n};\n\nconst applyLanguageFromQuery = (value: unknown) => {\n  const stringValue = getQueryValue(value);\n  if (!stringValue) {\n    return;\n  }\n  applyLanguage(stringValue);\n};\n\nconst updateEmbeddingQuery = (updates: Partial<Record<\"embedded\" | \"theme\" | \"lang\", string | null>>) => {\n  const currentRoute = router.currentRoute.value;\n  const nextQuery: Record<string, string | undefined> = {};\n  Object.entries(currentRoute.query).forEach(([key, value]) => {\n    const normalizedValue = getQueryValue(value);\n    if (normalizedValue !== null) {\n      nextQuery[key] = normalizedValue;\n    }\n  });\n  let changed = false;\n\n  (Object.entries(updates) as [keyof typeof updates, string | null][]).forEach(([key, value]) => {\n    if (value === null) {\n      if (key in nextQuery) {\n        delete nextQuery[key];\n        changed = true;\n      }\n      return;\n    }\n    if (nextQuery[key] !== value) {\n      nextQuery[key] = value;\n      changed = true;\n    }\n  });\n\n  if (!changed) {\n    return;\n  }\n\n  void navigateTo(activeView.value, routeParams.value, { query: nextQuery, replace: true });\n};\n\nwatch(\n  () => route.query.theme,\n  value => {\n    applyThemeFromQuery(value);\n  },\n  { immediate: true }\n);\n\nwatch(\n  () => route.query.lang,\n  value => {\n    applyLanguageFromQuery(value);\n  },\n  { immediate: true }\n);\n\nconst controller: YouParkApi = {\n  setEmbedded(value: boolean) {\n    if (value) {\n      updateEmbeddingQuery({\n        embedded: \"1\",\n        theme: theme.preference.value,\n        lang: toLanguageTag(currentLanguage.value)\n      });\n      return;\n    }\n    updateEmbeddingQuery({ embedded: null, theme: null, lang: null });\n  },\n  setTheme(mode: ThemeMode) {\n    const normalized = normalizeThemeMode(mode);\n    if (!normalized) {\n      return;\n    }\n    theme.setTheme(normalized);\n    updateEmbeddingQuery({ theme: normalized });\n  },\n  setLanguage(value: Language | string) {\n    applyLanguage(value);\n    updateEmbeddingQuery({ lang: toLanguageTag(currentLanguage.value) });\n  },\n  getState() {\n    return {\n      embedded: isEmbedded.value,\n      theme: theme.preference.value,\n      language: toLanguageTag(currentLanguage.value)\n    };\n  }\n};\n\nwatch(theme.preference, mode => {\n  if (!isEmbedded.value && route.query.theme === undefined) {\n    return;\n  }\n  updateEmbeddingQuery({ theme: mode });\n});\n\nwatch(currentLanguage, lang => {\n  if (!isEmbedded.value && route.query.lang === undefined) {\n    return;\n  }\n  updateEmbeddingQuery({ lang: toLanguageTag(lang) });\n});\n\nconst handleExternalLinks = (e: MouseEvent) => {\n  const target = e.target as HTMLElement;\n  const link = target.closest(\"a\");\n\n  if (!link || !link.href) {\n    return;\n  }\n\n  try {\n    const linkUrl = new URL(link.href, window.location.href);\n    const isExternal = linkUrl.hostname !== window.location.hostname;\n\n    if (isExternal) {\n      const isNewTab = link.target === \"_blank\" || e.ctrlKey || e.metaKey || e.button === 1;\n      console.log(\"[Embedded] Blocking external navigation:\", {\n        href: link.href,\n        hostname: linkUrl.hostname,\n        currentHostname: window.location.hostname,\n        target: link.target,\n        isNewTab,\n        modifierKeys: { ctrl: e.ctrlKey, meta: e.metaKey, button: e.button }\n      });\n      e.preventDefault();\n      e.stopPropagation();\n    }\n  } catch (error) {\n    console.warn(\"[Embedded] Failed to parse link URL:\", link.href, error);\n  }\n};\n\nwatch(\n  isEmbedded,\n  value => {\n    if (typeof window === \"undefined\") {\n      return;\n    }\n    if (value) {\n      console.log(\"[Embedded] Enabling embedded mode - blocking external navigation\");\n      document.addEventListener(\"click\", handleExternalLinks, true);\n      window.YouParkApi = controller;\n      window.youparkAccountV2 = controller;\n      return;\n    }\n    console.log(\"[Embedded] Disabling embedded mode - allowing external navigation\");\n    document.removeEventListener(\"click\", handleExternalLinks, true);\n    if (window.YouParkApi === controller) {\n      delete window.YouParkApi;\n    }\n    if (window.youparkAccountV2 === controller) {\n      delete window.youparkAccountV2;\n    }\n  },\n  { immediate: true }\n);\n\nif (config.isAuthenticated) {\n  window.YouParkNative?.onAuthCompleted();\n}\n\nonBeforeUnmount(() => {\n  if (typeof window !== \"undefined\") {\n    document.removeEventListener(\"click\", handleExternalLinks, true);\n    if (window.YouParkApi === controller) {\n      delete window.YouParkApi;\n    }\n    if (window.youparkAccountV2 === controller) {\n      delete window.youparkAccountV2;\n    }\n  }\n});\n\nconst {\n  isOpen: errorOpen,\n  title: errorTitle,\n  message: errorMessage,\n  variant: errorVariant,\n  actionLabel: errorActionLabel,\n  close: closeError,\n  confirm: confirmError\n} = useErrorModal();\n</script>\n","import script from \"./PublicDashboardShell.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./PublicDashboardShell.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PublicDashboardShell.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./PublicDashboardShell.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import type { Component } from \"vue\";\nimport { createApp } from \"vue\";\n\nimport { initializeLanguage, language as languageRef, languageSignal } from \"@core/composables/state/useLanguage\";\nimport { authService } from \"@core/services/authService\";\nimport { applyDashboardStylesheet } from \"@core/utils/dashboardStylesheet\";\nimport dayjs from \"dayjs\";\nimport timezone from \"dayjs/plugin/timezone\";\nimport utc from \"dayjs/plugin/utc\";\n\nimport translateDirective, { TRANSLATE_LANGUAGE_KEY } from \"@common/directives/translate\";\nimport { resolveSupportedLanguage } from \"@common/i18n\";\n\nimport \"./images/favicon.ico\";\nimport \"./images/favicon.svg\";\nimport View from \"./dashboard-view.vue\";\nimport \"./dashboard.css\";\nimport router from \"./router\";\nimport { prefetchInitialDashboardRoute } from \"./router/prefetchDashboardRoute\";\n\nconst dashboardStylesheetApplied = applyDashboardStylesheet(document);\n\nvoid prefetchInitialDashboardRoute();\n\ndocument.documentElement.lang = resolveSupportedLanguage(document.documentElement.lang);\n\nauthService.ensureAntiForgeryToken();\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.tz.setDefault(\"Europe/Oslo\");\n\nconst appInstance = createApp(View as Component);\nappInstance.provide(TRANSLATE_LANGUAGE_KEY, languageSignal);\nappInstance.directive(\"translate\", translateDirective);\nappInstance.use(router);\n\nPromise.all([router.isReady(), initializeLanguage(languageRef.value), dashboardStylesheetApplied])\n  .then(() => {\n    appInstance.mount(\"#dashboard\");\n  })\n  .catch(async error => {\n    console.error(\"[App] Router initialization error:\", error);\n    await dashboardStylesheetApplied;\n    appInstance.mount(\"#dashboard\");\n  });\n","export const dashboardStylesheetSelector = \"link[data-dashboard-stylesheet]\";\n\nexport const dashboardStylesheetFallbackMilliseconds = 8000;\n\nexport function applyDashboardStylesheet(\n  targetDocument: Document,\n  fallbackMilliseconds = dashboardStylesheetFallbackMilliseconds\n): Promise<void> {\n  const stylesheetLink = targetDocument.querySelector<HTMLLinkElement>(dashboardStylesheetSelector);\n  if (!stylesheetLink) {\n    return Promise.resolve();\n  }\n\n  if (stylesheetLink.rel === \"stylesheet\" && stylesheetLink.sheet) {\n    return Promise.resolve();\n  }\n\n  return new Promise<void>(resolve => {\n    let fallbackTimer: ReturnType<typeof setTimeout> | undefined;\n    const finish = () => {\n      clearTimeout(fallbackTimer);\n      stylesheetLink.removeEventListener(\"load\", finish);\n      stylesheetLink.removeEventListener(\"error\", finish);\n      resolve();\n    };\n\n    stylesheetLink.addEventListener(\"load\", finish);\n    stylesheetLink.addEventListener(\"error\", finish);\n    fallbackTimer = setTimeout(finish, fallbackMilliseconds);\n    stylesheetLink.rel = \"stylesheet\";\n  });\n}\n","import script from \"./dashboard-view.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./dashboard-view.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./dashboard-view.vue.ts?vue&type=script&setup=true&lang=ts!=!../../../../../node_modules/vue-loader/dist/index.js??ruleSet[0]!./dashboard-view.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { useAppConfig } from \"@core/composables/data/useAppConfig\";\nimport { ensureTranslationNamespaces } from \"@core/composables/state/useLanguage\";\nimport { canAccessRestrictedView } from \"@core/utils/accessPolicy\";\nimport { clearCardFlowContext, registerCardFlowAction } from \"@core/utils/cardFlow\";\nimport type { NavigationGuardWithThis } from \"vue-router\";\n\nimport { translateLegacyHash } from \"../legacy\";\nimport { buildAuthRedirectUrl, extractAccountNsAction } from \"../utils\";\n\nimport { resolveNamespacesForRoute } from \"@/translations\";\nimport { setPendingSubscriptionPurchaseAction } from \"@/utils/subscriptionPurchase\";\n\nconst routeRequiredParams: Record<string, string[]> = {\n  \"map-area\": [\"areaId\"],\n  \"map-area-details\": [\"areaId\"],\n  \"map-lot-details\": [\"lotId\"],\n  \"subscription-details\": [\"id\"],\n  \"subscription-purchase\": [\"templateId\"],\n  \"subscription-renew\": [\"id\"],\n  \"edit-vehicle\": [\"id\"],\n  \"edit-payment-source\": [\"id\"]\n};\n\nfunction hasRequiredParams(routeName: string, params: Record<string, string> | undefined): boolean {\n  const requiredParams = routeRequiredParams[routeName];\n  if (requiredParams === undefined || requiredParams.length === 0) {\n    return true;\n  }\n  if (params === undefined) {\n    return false;\n  }\n  return requiredParams.every(param => {\n    const value = params[param];\n    return typeof value === \"string\" && value.trim().length > 0;\n  });\n}\n\nexport function createTranslationGuard(): NavigationGuardWithThis<undefined> {\n  return async to => {\n    const namespaces = resolveNamespacesForRoute(typeof to.name === \"string\" ? to.name : null);\n    if (namespaces.length === 0) {\n      return true;\n    }\n    try {\n      await ensureTranslationNamespaces(namespaces);\n    } catch (error) {\n      console.error(\"[App] Failed to load route translations\", error);\n    }\n    return true;\n  };\n}\n\nexport function createAuthGuard(base: string): NavigationGuardWithThis<undefined> {\n  const { config: appConfig } = useAppConfig();\n  const anonymousRouteNames = new Set<string>([\"sign-in\", ...appConfig.publicViews]);\n\n  return to => {\n    if (to.matched.length === 0) {\n      return { name: \"error-page-not-found\" };\n    }\n\n    if (to.name === \"sign-in\") {\n      return !appConfig.isAuthenticated ? true : { name: \"payment\", replace: true };\n    }\n\n    const subscriptionIdQuery = Array.isArray(to.query?.subscriptionId)\n      ? to.query?.subscriptionId[0]\n      : to.query?.subscriptionId;\n    if (typeof subscriptionIdQuery === \"string\" && subscriptionIdQuery.trim().length > 0 && to.name !== \"bookings\") {\n      return {\n        name: \"subscription-details\",\n        params: { id: subscriptionIdQuery.trim() },\n        replace: true\n      };\n    }\n\n    const purchaseTemplateQuery = Array.isArray(to.query?.accountRenderBuySubscriptionTemplateId)\n      ? to.query?.accountRenderBuySubscriptionTemplateId[0]\n      : to.query?.accountRenderBuySubscriptionTemplateId;\n    if (typeof purchaseTemplateQuery === \"string\" && purchaseTemplateQuery.trim().length > 0) {\n      setPendingSubscriptionPurchaseAction(extractAccountNsAction(to.query?.accountNsAction));\n      return {\n        name: \"subscription-purchase\",\n        params: { templateId: purchaseTemplateQuery.trim() },\n        replace: true\n      };\n    }\n\n    const queryActionRaw = extractAccountNsAction(to.query?.accountNsAction);\n    if (typeof queryActionRaw === \"string\" && queryActionRaw.trim().length > 0) {\n      const context = registerCardFlowAction(queryActionRaw);\n      if (context?.originRoute && hasRequiredParams(context.originRoute, context.routeParams)) {\n        const toParams = to.params as Record<string, string> | undefined;\n        if (to.name === context.originRoute && hasRequiredParams(context.originRoute, toParams)) {\n          return true;\n        }\n        return {\n          name: context.originRoute,\n          params: context.routeParams ?? {},\n          query: context.routeQuery ?? {}\n        };\n      }\n      if (context) {\n        clearCardFlowContext();\n      }\n      if (to.name === \"payment-sources\") {\n        return true;\n      }\n      return { name: \"payment-sources\" };\n    }\n\n    const translatedRoute = translateLegacyHash(to.hash);\n    if (translatedRoute !== undefined) {\n      window.history.replaceState(null, \"\", window.location.pathname);\n      return translatedRoute;\n    }\n\n    const routeName = typeof to.name === \"string\" ? to.name : undefined;\n    if (!appConfig.isAuthenticated && routeName !== undefined && !anonymousRouteNames.has(routeName)) {\n      return {\n        name: \"sign-in\",\n        query: { RedirectUrl: buildAuthRedirectUrl(base, to.fullPath) }\n      };\n    }\n\n    const organizationId = typeof to.params.organizationId === \"string\" ? to.params.organizationId : undefined;\n    if (\n      appConfig.isAuthenticated &&\n      routeName !== undefined &&\n      !canAccessRestrictedView(appConfig, routeName, organizationId)\n    ) {\n      return { name: \"error-forbidden\" };\n    }\n\n    return true;\n  };\n}\n","import type { NavigationGuardWithThis } from \"vue-router\";\n\nconst upgradeWebBrowserRouteName = \"error-upgrade-web-browser\";\n\nexport function createBrowserUpgradeTerminalGuard(): NavigationGuardWithThis<undefined> {\n  return (to, from) => !(from.name === upgradeWebBrowserRouteName && to.name !== upgradeWebBrowserRouteName);\n}\n","import type { RouteLocationNormalized, RouteRecordRaw } from \"vue-router\";\n\nimport { getRouteParam, getRouteParamOrEmpty } from \"../utils\";\n\nimport type { OrganizationDetailSection } from \"@/types/organizations\";\n\nconst organizationDetailSections: { path: string; section: OrganizationDetailSection }[] = [\n  { path: \"\", section: \"details\" },\n  { path: \"/applications\", section: \"applications\" },\n  { path: \"/users\", section: \"users\" },\n  { path: \"/subs\", section: \"subs\" },\n  { path: \"/api-users\", section: \"apiUsers\" }\n];\n\nconst organizationDetailRoutes: RouteRecordRaw[] = organizationDetailSections.map(({ path, section }) => ({\n  path: `/organizations/:id${path}`,\n  name: `organizations-details${path.replace(\"/\", \"-\")}`,\n  component: () =>\n    import(\n      /* webpackChunkName: \"dashboard-organizations\" */ \"../../components/organizations/OrganizationDetailView.vue\"\n    ),\n  props: (route: RouteLocationNormalized) => ({\n    id: getRouteParamOrEmpty(route, \"id\"),\n    section\n  }),\n  meta: { titleKey: \"pageTitle.organizationsDetails\", viewGroup: \"organizations-details\", viewGroupParams: [\"id\"] }\n}));\n\nexport const adminRoutes: RouteRecordRaw[] = [\n  {\n    path: \"/cameras-overview\",\n    name: \"cameras-overview\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-cameras-overview\" */ \"../../components/cameras/CamerasOverviewView.vue\"),\n    meta: { titleKey: \"pageTitle.camerasOverview\", viewGroup: \"cameras-overview\" }\n  },\n  {\n    path: \"/applications\",\n    name: \"applications\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-applications\" */ \"../../components/applications/ApplicationsView.vue\"),\n    meta: { titleKey: \"pageTitle.applications\", viewGroup: \"applications\" }\n  },\n  {\n    path: \"/users\",\n    name: \"users\",\n    component: () => import(/* webpackChunkName: \"dashboard-users\" */ \"../../components/users/UsersView.vue\"),\n    meta: { titleKey: \"pageTitle.users\", viewGroup: \"users\" }\n  },\n  {\n    path: \"/users/new\",\n    name: \"user-create\",\n    component: () => import(/* webpackChunkName: \"dashboard-users\" */ \"../../components/users/UserDetailView.vue\"),\n    meta: { titleKey: \"pageTitle.userCreate\", viewGroup: \"user-create\" }\n  },\n  {\n    path: \"/users/:id\",\n    name: \"user-edit\",\n    component: () => import(/* webpackChunkName: \"dashboard-users\" */ \"../../components/users/UserDetailView.vue\"),\n    props: route => ({\n      id: getRouteParamOrEmpty(route, \"id\")\n    }),\n    meta: { titleKey: \"pageTitle.userEdit\", viewGroup: \"user-edit\", viewGroupParams: [\"id\"] }\n  },\n  {\n    path: \"/organizations\",\n    name: \"organizations\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-organizations\" */ \"../../components/organizations/OrganizationsView.vue\"),\n    meta: { titleKey: \"pageTitle.organizations\", viewGroup: \"organizations\" }\n  },\n  {\n    path: \"/organizations/new\",\n    name: \"organizations-create\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-organizations\" */ \"../../components/organizations/OrganizationCreateView.vue\"\n      ),\n    meta: { titleKey: \"pageTitle.organizationsCreate\", viewGroup: \"organizations-create\" }\n  },\n  ...organizationDetailRoutes,\n  {\n    path: \"/manual-approval\",\n    name: \"manual-approval\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-manual-approval\" */ \"../../components/manual-approval/ManualApprovalView.vue\"\n      ),\n    meta: { titleKey: \"pageTitle.manualApproval\", viewGroup: \"manual-approval\" }\n  },\n  {\n    path: \"/manual-approval-review\",\n    name: \"manual-approval-review\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-manual-approval-review\" */ \"../../components/manual-approval-review/ManualApprovalReviewView.vue\"\n      ),\n    meta: { titleKey: \"pageTitle.manualApprovalReview\", viewGroup: \"manual-approval-review\" }\n  },\n  {\n    path: \"/traffic-control\",\n    name: \"traffic-control\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-traffic-control\" */ \"../../components/traffic-control/TrafficControlView.vue\"\n      ),\n    meta: { titleKey: \"pageTitle.trafficControl\", viewGroup: \"traffic-control\" }\n  },\n  {\n    path: \"/system\",\n    name: \"system\",\n    component: () => import(\"../../components/system/SystemView.vue\"),\n    meta: { titleKey: \"pageTitle.system\", viewGroup: \"system\" }\n  },\n  {\n    path: \"/audits\",\n    name: \"audits\",\n    component: () => import(/* webpackChunkName: \"dashboard-audits\" */ \"../../components/audits/AuditsView.vue\"),\n    meta: { titleKey: \"pageTitle.audits\", viewGroup: \"audits\" }\n  },\n  {\n    path: \"/exports\",\n    name: \"exports\",\n    component: () => import(/* webpackChunkName: \"dashboard-exports\" */ \"../../components/exports/ExportsView.vue\"),\n    meta: { titleKey: \"pageTitle.exports\", viewGroup: \"exports\" }\n  },\n  {\n    path: \"/statistics/:dashboard?\",\n    name: \"statistics\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-statistics\" */ \"../../components/statistics/StatisticsView.vue\"),\n    props: route => ({\n      dashboard: getRouteParam(route, \"dashboard\")\n    }),\n    meta: { titleKey: \"pageTitle.statistics\", viewGroup: \"statistics\", viewGroupParams: [\"dashboard\"] }\n  },\n  {\n    path: \"/telemetry\",\n    name: \"telemetry\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-telemetry\" */ \"../../components/telemetry/TelemetryView.vue\"),\n    meta: { titleKey: \"pageTitle.telemetry\", viewGroup: \"telemetry\" }\n  },\n  {\n    path: \"/telemetry/annotations\",\n    name: \"telemetry-annotations\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-telemetry-annotations\" */ \"../../components/telemetry/TelemetryAnnotationsView.vue\"\n      ),\n    meta: { titleKey: \"pageTitle.telemetryAnnotations\", viewGroup: \"telemetry-annotations\" }\n  },\n  {\n    path: \"/vehicle-registry\",\n    name: \"vehicle-registry\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-vehicle-registry\" */ \"../../components/vehicle-registry/VehicleRegistryView.vue\"\n      ),\n    meta: { titleKey: \"pageTitle.vehicleRegistry\", viewGroup: \"vehicle-registry\" }\n  }\n];\n","import type { RouteRecordRaw } from \"vue-router\";\n\nexport const authRoutes: RouteRecordRaw[] = [\n  {\n    path: \"/sign-in\",\n    name: \"sign-in\",\n    component: () => import(/* webpackChunkName: \"dashboard-sign-in\" */ \"../../components/auth/SignInView.vue\"),\n    meta: { titleKey: \"pageTitle.signIn\", layout: \"auth\", viewGroup: \"sign-in\" }\n  },\n  {\n    path: \"/verify-fingerprint\",\n    name: \"verify-fingerprint\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-verify-fingerprint\" */ \"../../components/auth/VerifyFingerPrintView.vue\"),\n    meta: {\n      titleKey: \"pageTitle.verifyFingerprint\",\n      layout: \"auth\",\n      viewGroup: \"verify-fingerprint\"\n    }\n  }\n];\n","import type { RouteRecordRaw } from \"vue-router\";\n\nexport const bookingsRoutes: RouteRecordRaw[] = [\n  {\n    path: \"/coupons\",\n    name: \"coupons\",\n    component: () => import(/* webpackChunkName: \"dashboard-coupons\" */ \"../../components/coupons/CouponsView.vue\"),\n    meta: { titleKey: \"pageTitle.coupons\", viewGroup: \"coupons\" }\n  },\n  {\n    path: \"/bookings\",\n    name: \"bookings\",\n    component: () => import(/* webpackChunkName: \"dashboard-bookings\" */ \"../../components/bookings/BookingsView.vue\"),\n    meta: { titleKey: \"pageTitle.bookings\", viewGroup: \"bookings\" }\n  },\n  {\n    path: \"/receipts\",\n    name: \"receipts\",\n    component: () => import(/* webpackChunkName: \"dashboard-receipts\" */ \"../../components/receipts/ReceiptsView.vue\"),\n    meta: { titleKey: \"pageTitle.receipts\", viewGroup: \"receipts\" }\n  }\n];\n","import type { RouteRecordRaw } from \"vue-router\";\n\nexport const errorRoutes: RouteRecordRaw[] = [\n  {\n    path: \"/error/forbidden\",\n    name: \"error-forbidden\",\n    component: () => import(/* webpackChunkName: \"dashboard-error\" */ \"../../components/error/ForbiddenView.vue\"),\n    meta: {\n      titleKey: \"pageTitle.error.forbidden\",\n      layout: \"chrome-free\",\n      viewGroup: \"error-forbidden\"\n    }\n  },\n  {\n    path: \"/error/page-not-found\",\n    name: \"error-page-not-found\",\n    component: () => import(/* webpackChunkName: \"dashboard-error\" */ \"../../components/error/PageNotFoundView.vue\"),\n    meta: {\n      titleKey: \"pageTitle.error.pageNotFound\",\n      layout: \"chrome-free\",\n      viewGroup: \"error-page-not-found\"\n    }\n  },\n  {\n    path: \"/error/internal-error\",\n    name: \"error-internal-error\",\n    component: () => import(/* webpackChunkName: \"dashboard-error\" */ \"../../components/error/InternalErrorView.vue\"),\n    meta: {\n      titleKey: \"pageTitle.error.internalError\",\n      layout: \"chrome-free\",\n      viewGroup: \"error-internal-error\"\n    }\n  },\n  {\n    path: \"/error/secure-zone\",\n    name: \"error-secure-zone\",\n    component: () => import(/* webpackChunkName: \"dashboard-error\" */ \"../../components/error/SecureZoneView.vue\"),\n    meta: {\n      titleKey: \"pageTitle.error.secureZone\",\n      layout: \"chrome-free\",\n      viewGroup: \"error-secure-zone\"\n    }\n  },\n  {\n    path: \"/error/upgrade-web-browser\",\n    name: \"error-upgrade-web-browser\",\n    component: () => null,\n    beforeEnter: () => {\n      window.location.replace(\"/dashboard/error/upgrade-web-browser\");\n      return false;\n    },\n    meta: {\n      titleKey: \"pageTitle.error.upgradeWebBrowser\",\n      layout: \"chrome-free\",\n      viewGroup: \"error-upgrade-web-browser\"\n    }\n  }\n];\n","import type { RouteRecordRaw } from \"vue-router\";\n\nexport const faqRoutes: RouteRecordRaw[] = [\n  {\n    path: \"/faq/:section/:item\",\n    name: \"faq-item\",\n    component: () => import(/* webpackChunkName: \"dashboard-faq\" */ \"../../components/faq/FaqView.vue\"),\n    meta: { titleKey: \"pageTitle.faq\", scrollGroup: \"faq\", viewGroup: \"faq\" }\n  },\n  {\n    path: \"/faq/:section\",\n    name: \"faq-section\",\n    component: () => import(/* webpackChunkName: \"dashboard-faq\" */ \"../../components/faq/FaqView.vue\"),\n    meta: { titleKey: \"pageTitle.faq\", scrollGroup: \"faq\", viewGroup: \"faq\" }\n  },\n  {\n    path: \"/faq\",\n    name: \"faq\",\n    component: () => import(/* webpackChunkName: \"dashboard-faq\" */ \"../../components/faq/FaqView.vue\"),\n    meta: { titleKey: \"pageTitle.faq\", scrollGroup: \"faq\", viewGroup: \"faq\" }\n  },\n  {\n    path: \"/customer-service\",\n    name: \"customer-service\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-customer-service\" */ \"../../components/faq/FaqContactPageView.vue\"),\n    meta: { titleKey: \"pageTitle.customerService\", viewGroup: \"customer-service\" }\n  },\n  {\n    path: \"/tour\",\n    name: \"tour\",\n    component: () => import(/* webpackChunkName: \"dashboard-tour\" */ \"../../components/tour/TourView.vue\"),\n    meta: { titleKey: \"pageTitle.tour\", viewGroup: \"tour\" }\n  }\n];\n","import type { RouteRecordRaw } from \"vue-router\";\n\nexport const homeRoutes: RouteRecordRaw[] = [\n  {\n    path: \"/home\",\n    name: \"home\",\n    alias: \"/\",\n    component: () => import(/* webpackChunkName: \"dashboard-home\" */ \"../../components/home/HomeView.vue\"),\n    meta: { titleKey: \"pageTitle.home\", viewGroup: \"home\" }\n  }\n];\n","import type { RouteRecordRaw } from \"vue-router\";\n\nexport const legalRoutes: RouteRecordRaw[] = [\n  {\n    path: \"/gdpr\",\n    name: \"gdpr\",\n    component: () => import(/* webpackChunkName: \"dashboard-gdpr\" */ \"../../components/gdpr/GdprView.vue\"),\n    meta: { titleKey: \"pageTitle.gdpr\", viewGroup: \"gdpr\" }\n  },\n  {\n    path: \"/plus\",\n    name: \"youpark-plus\",\n    component: () => import(/* webpackChunkName: \"dashboard-plus\" */ \"../../components/plus/YouparkPlusView.vue\"),\n    meta: { titleKey: \"pageTitle.youparkPlus\", viewGroup: \"youpark-plus\" }\n  },\n  {\n    path: \"/plus/terms\",\n    name: \"youpark-plus-terms\",\n    component: () => import(/* webpackChunkName: \"dashboard-plus\" */ \"../../components/legal/YouparkPlusTermsView.vue\"),\n    meta: { titleKey: \"pageTitle.youparkPlusTerms\", viewGroup: \"youpark-plus-terms\" }\n  },\n  {\n    path: \"/plus/start\",\n    name: \"youpark-plus-start\",\n    component: () => import(/* webpackChunkName: \"dashboard-plus\" */ \"../../components/plus/YouparkPlusStartView.vue\"),\n    meta: { titleKey: \"pageTitle.youparkPlusStart\", viewGroup: \"youpark-plus-start\" }\n  },\n  {\n    path: \"/plus/status\",\n    name: \"youpark-plus-status\",\n    component: () => import(/* webpackChunkName: \"dashboard-plus\" */ \"../../components/plus/YouparkPlusStatusView.vue\"),\n    meta: { titleKey: \"pageTitle.youparkPlusStatus\", viewGroup: \"youpark-plus-status\" }\n  },\n  {\n    path: \"/cookies\",\n    name: \"cookies\",\n    component: () => import(/* webpackChunkName: \"dashboard-legal\" */ \"../../components/legal/CookiesView.vue\"),\n    meta: { titleKey: \"pageTitle.cookies\", viewGroup: \"cookies\" }\n  },\n  {\n    path: \"/privacypolicy\",\n    name: \"privacypolicy\",\n    component: () => import(/* webpackChunkName: \"dashboard-legal\" */ \"../../components/legal/PrivacyPolicyView.vue\"),\n    meta: { titleKey: \"pageTitle.privacyPolicy\", viewGroup: \"privacypolicy\" }\n  },\n  {\n    path: \"/terms\",\n    name: \"terms\",\n    component: () => import(/* webpackChunkName: \"dashboard-legal\" */ \"../../components/legal/TermsConditionsView.vue\"),\n    meta: { titleKey: \"pageTitle.termsConditions\", viewGroup: \"terms\" }\n  },\n  {\n    path: \"/dataprocessors\",\n    name: \"dataprocessors\",\n    component: () => import(/* webpackChunkName: \"dashboard-legal\" */ \"../../components/legal/DataProcessorsView.vue\"),\n    meta: { titleKey: \"pageTitle.dataProcessors\", viewGroup: \"dataprocessors\" }\n  }\n];\n","import type { RouteRecordRaw } from \"vue-router\";\n\nimport { getRouteParamOrEmpty, resolveAreaId } from \"../utils\";\n\nexport const mapRoutes: RouteRecordRaw[] = [\n  {\n    path: \"/parkering-og-bomvei\",\n    name: \"map\",\n    component: () => import(/* webpackChunkName: \"dashboard-map\" */ \"../../components/map/MapView.vue\"),\n    props: route => ({ areaId: resolveAreaId(route) }),\n    meta: { titleKey: \"pageTitle.map\", layout: \"map\", resetScroll: true, viewGroup: \"map\" }\n  },\n  {\n    path: \"/parkering\",\n    name: \"map-parking\",\n    component: () => import(/* webpackChunkName: \"dashboard-map\" */ \"../../components/map/MapView.vue\"),\n    props: () => ({}),\n    meta: {\n      titleKey: \"pageTitle.mapParking\",\n      layout: \"map\",\n      resetScroll: true,\n      viewGroup: \"map\"\n    }\n  },\n  {\n    path: \"/bomvei\",\n    name: \"map-toll\",\n    component: () => import(/* webpackChunkName: \"dashboard-map\" */ \"../../components/map/MapView.vue\"),\n    props: () => ({}),\n    meta: { titleKey: \"pageTitle.mapToll\", layout: \"map\", resetScroll: true, viewGroup: \"map\" }\n  },\n  {\n    path: \"/map/area/:areaId\",\n    name: \"map-area-details\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-map-area-details\" */ \"../../components/map/AreaDetailsView.vue\"),\n    props: route => ({\n      areaId: getRouteParamOrEmpty(route, \"areaId\")\n    }),\n    meta: { titleKey: \"pageTitle.map\", layout: \"map\", resetScroll: true, viewGroup: \"map\" }\n  },\n  {\n    path: \"/map/:areaId\",\n    name: \"map-area\",\n    component: () => import(/* webpackChunkName: \"dashboard-map\" */ \"../../components/map/MapView.vue\"),\n    props: route => ({\n      areaId: resolveAreaId(route),\n      lotId: typeof route.query.lot === \"string\" ? route.query.lot : undefined\n    }),\n    meta: { titleKey: \"pageTitle.map\", layout: \"map\", resetScroll: true, viewGroup: \"map\" }\n  },\n  {\n    path: \"/map/lot/:lotId\",\n    name: \"map-lot-details\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-map-area-details\" */ \"../../components/map/AreaDetailsView.vue\"),\n    props: route => ({\n      lotId: getRouteParamOrEmpty(route, \"lotId\")\n    }),\n    meta: { titleKey: \"pageTitle.map\", layout: \"map\", resetScroll: true, viewGroup: \"map\" }\n  }\n];\n","import type { RouteRecordRaw } from \"vue-router\";\n\nimport { getRouteParam } from \"../utils\";\n\nexport const paymentRoutes: RouteRecordRaw[] = [\n  {\n    path: \"/payment/:licensePlate?/:country?/:expires?\",\n    name: \"payment\",\n    component: () => import(/* webpackChunkName: \"dashboard-payment\" */ \"../../components/payment/PaymentView.vue\"),\n    props: route => ({\n      licensePlate: getRouteParam(route, \"licensePlate\"),\n      country: getRouteParam(route, \"country\"),\n      expires: getRouteParam(route, \"expires\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.payment\",\n      viewGroup: \"payment\",\n      viewGroupParams: [\"licensePlate\", \"country\", \"expires\"]\n    }\n  },\n  {\n    path: \"/payment/status\",\n    name: \"payment-status\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-payment-status\" */ \"../../components/payment/PaymentTransactionStatusView.vue\"\n      ),\n    meta: { titleKey: \"pageTitle.paymentStatus\", viewGroup: \"payment-status\" }\n  }\n];\n","import type { RouteRecordRaw } from \"vue-router\";\n\nexport const profileRoutes: RouteRecordRaw[] = [\n  {\n    path: \"/profile\",\n    name: \"profile\",\n    component: () => import(/* webpackChunkName: \"dashboard-profile\" */ \"../../components/profile/ProfileView.vue\"),\n    meta: { titleKey: \"pageTitle.profile\", scrollGroup: \"profile\", viewGroup: \"profile\" }\n  },\n  {\n    path: \"/vehicles\",\n    name: \"vehicles\",\n    component: () => import(/* webpackChunkName: \"dashboard-vehicles\" */ \"../../components/vehicles/VehiclesView.vue\"),\n    meta: { titleKey: \"pageTitle.vehicles\", viewGroup: \"vehicles\" }\n  },\n  {\n    path: \"/vehicles/add/:plate?/:country?\",\n    name: \"add-vehicle\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-vehicles\" */ \"../../components/vehicles/AddVehicleView.vue\"),\n    props: true,\n    meta: { titleKey: \"pageTitle.addVehicle\", viewGroup: \"add-vehicle\", viewGroupParams: [\"plate\", \"country\"] }\n  },\n  {\n    path: \"/vehicles/:id\",\n    name: \"edit-vehicle\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-vehicles\" */ \"../../components/vehicles/EditVehicleView.vue\"),\n    props: true,\n    meta: { titleKey: \"pageTitle.editVehicle\", viewGroup: \"edit-vehicle\", viewGroupParams: [\"id\"] }\n  },\n  {\n    path: \"/payment-sources\",\n    name: \"payment-sources\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-payment-sources\" */ \"../../components/payment-sources/PaymentSourcesView.vue\"\n      ),\n    meta: { titleKey: \"pageTitle.paymentSources\", viewGroup: \"payment-sources\" }\n  },\n  {\n    path: \"/payment-sources/add\",\n    name: \"add-payment-source\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-payment-sources\" */ \"../../components/payment-sources/AddPaymentSourceView.vue\"\n      ),\n    meta: { titleKey: \"pageTitle.addPaymentSource\", viewGroup: \"add-payment-source\" }\n  },\n  {\n    path: \"/payment-sources/:id\",\n    name: \"edit-payment-source\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-payment-sources\" */ \"../../components/payment-sources/EditPaymentSourceView.vue\"\n      ),\n    props: true,\n    meta: { titleKey: \"pageTitle.editPaymentSource\", viewGroup: \"edit-payment-source\", viewGroupParams: [\"id\"] }\n  }\n];\n","import type { RouteRecordRaw } from \"vue-router\";\n\nimport { getRouteParam, getRouteParamOrEmpty } from \"../utils\";\n\nexport const remitRoutes: RouteRecordRaw[] = [\n  {\n    path: \"/remit/:organizationId\",\n    name: \"remit\",\n    component: () => import(/* webpackChunkName: \"dashboard-remit\" */ \"../../components/remit/RemitView.vue\"),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\")\n    }),\n    meta: { titleKey: \"pageTitle.remit\", viewGroup: \"remit\", viewGroupParams: [\"organizationId\"] }\n  },\n  {\n    path: \"/remit/:organizationId/allocations\",\n    name: \"remit-allocations\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-remit-allocations\" */ \"../../components/remit/RemitAllocationView.vue\"),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\")\n    }),\n    meta: { titleKey: \"pageTitle.remit\", viewGroup: \"remit-allocations\", viewGroupParams: [\"organizationId\"] }\n  },\n  {\n    path: \"/remit/:organizationId/creditors\",\n    name: \"remit-creditors\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-remit-creditors\" */ \"../../components/remit/RemitCreditorView.vue\"),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\")\n    }),\n    meta: { titleKey: \"pageTitle.remit\", viewGroup: \"remit-creditors\", viewGroupParams: [\"organizationId\"] }\n  },\n  {\n    path: \"/remit/:organizationId/:tab\",\n    name: \"remit-tab\",\n    component: () => import(/* webpackChunkName: \"dashboard-remit\" */ \"../../components/remit/RemitView.vue\"),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\"),\n      tab: getRouteParam(route, \"tab\")\n    }),\n    meta: { titleKey: \"pageTitle.remit\", viewGroup: \"remit\", viewGroupParams: [\"organizationId\"] }\n  }\n];\n","import type { RouteRecordRaw } from \"vue-router\";\n\nimport { getRouteParamOrEmpty } from \"../utils\";\n\nexport const subscriptionsRoutes: RouteRecordRaw[] = [\n  {\n    path: \"/anonymoustransaction\",\n    name: \"anonymoustransaction\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-anonymous-transaction\" */ \"../../components/subscriptions/AnonymousTransactionView.vue\"\n      ),\n    meta: {\n      titleKey: \"pageTitle.anonymousTransaction\",\n      layout: \"auth\",\n      viewGroup: \"anonymoustransaction\"\n    }\n  },\n  {\n    path: \"/anonymoustransaction/status\",\n    name: \"anonymoustransaction-status\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-anonymous-transaction-status\" */ \"../../components/subscriptions/AnonymousTransactionStatusView.vue\"\n      ),\n    meta: {\n      titleKey: \"pageTitle.anonymousTransactionStatus\",\n      layout: \"auth\",\n      viewGroup: \"anonymoustransaction-status\"\n    }\n  },\n  {\n    path: \"/subscriptions\",\n    name: \"subscriptions\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-subscriptions\" */ \"../../components/subscriptions/SubscriptionView.vue\"),\n    meta: { titleKey: \"pageTitle.subscriptions\", viewGroup: \"subscriptions\" }\n  },\n  {\n    path: \"/subscription/renew/:id\",\n    name: \"subscription-renew\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-subscriptions\" */ \"../../components/subscriptions/SubscriptionView.vue\"),\n    props: true,\n    meta: { titleKey: \"pageTitle.subscriptionRenew\", viewGroup: \"subscriptions\" }\n  },\n  {\n    path: \"/subscription/purchase/:templateId\",\n    name: \"subscription-purchase\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-subscriptions\" */ \"../../components/subscriptions/SubscriptionView.vue\"),\n    props: route => ({\n      templateId: getRouteParamOrEmpty(route, \"templateId\"),\n      billableId: typeof route.query.billableId === \"string\" ? route.query.billableId : undefined\n    }),\n    meta: { titleKey: \"pageTitle.purchaseSubscription\", viewGroup: \"subscriptions\" }\n  },\n  {\n    path: \"/subscriptions/welcometemplatemanagerinvitation/:id\",\n    name: \"template-manager-invitation\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-invitations\" */ \"../../components/invitations/TemplateManagerInvitationView.vue\"\n      ),\n    props: route => ({\n      id: getRouteParamOrEmpty(route, \"id\"),\n      autoAccept: route.query.accept === \"true\" || route.query.accept === \"1\"\n    }),\n    meta: {\n      titleKey: \"pageTitle.templateManagerInvitation\",\n      layout: \"auth\",\n      resetScroll: true,\n      viewGroup: \"template-manager-invitation\",\n      viewGroupParams: [\"id\"]\n    }\n  },\n  {\n    path: \"/subscriptions/shareduserinvitation/:id\",\n    name: \"shared-user-invitation\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-invitations\" */ \"../../components/invitations/SharedUserInvitationView.vue\"\n      ),\n    props: route => ({\n      id: getRouteParamOrEmpty(route, \"id\"),\n      autoAccept: route.query.accept === \"true\" || route.query.accept === \"1\"\n    }),\n    meta: {\n      titleKey: \"pageTitle.sharedUserInvitation\",\n      layout: \"auth\",\n      resetScroll: true,\n      viewGroup: \"shared-user-invitation\",\n      viewGroupParams: [\"id\"]\n    }\n  },\n  {\n    path: \"/subscriptions/:id\",\n    name: \"subscription-details\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-subscriptions\" */ \"../../components/subscriptions/SubscriptionView.vue\"),\n    props: true,\n    meta: { titleKey: \"pageTitle.subscriptionDetails\", viewGroup: \"subscriptions\" }\n  },\n  {\n    path: \"/subscriptions/shared/:id\",\n    name: \"subscription-shared-details\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-subscriptions\" */ \"../../components/subscriptions/SubscriptionView.vue\"),\n    props: true,\n    meta: { titleKey: \"pageTitle.sharedSubscriptionDetails\", viewGroup: \"subscriptions\" }\n  }\n];\n","import { useAppConfig } from \"@core/composables/data/useAppConfig\";\nimport { canAccessYouparkSection } from \"@core/utils/accessPolicy\";\nimport type { RouteRecordRaw } from \"vue-router\";\n\nimport { lotConfigurationTabKeys, type LotConfigurationTabKey } from \"@common/youpark/lot-configuration-tabs\";\n\nimport { getRouteParam, getRouteParamOrEmpty, resolveOrganizationId } from \"../utils\";\n\nimport { youparkService } from \"@/services/youpark/service\";\n\nconst lotConfigurationView = () =>\n  import(\n    /* webpackChunkName: \"dashboard-youpark-admin\" */ \"../../components/youpark/lot-configuration/LotConfigurationView.vue\"\n  );\n\nexport const lotConfigurationTabRouteByKey = {\n  settings: {\n    path: \"settings\",\n    name: \"youpark-customer-admin-locations-settings\"\n  },\n  priceSetup: {\n    path: \"price-setup\",\n    name: \"youpark-customer-admin-locations-price-setup\"\n  },\n  autopass: {\n    path: \"autopass\",\n    name: \"youpark-customer-admin-locations-autopass\"\n  },\n  display: {\n    path: \"display\",\n    name: \"youpark-customer-admin-locations-display\"\n  },\n  contactpersons: {\n    path: \"contact-persons\",\n    name: \"youpark-customer-admin-locations-contactpersons\"\n  },\n  cameras: {\n    path: \"cameras\",\n    name: \"youpark-customer-admin-locations-cameras\"\n  },\n  connections: {\n    path: \"connections\",\n    name: \"youpark-customer-admin-locations-connections\"\n  },\n  documents: {\n    path: \"documents\",\n    name: \"youpark-customer-admin-locations-documents\"\n  },\n  contract: {\n    path: \"contract\",\n    name: \"youpark-customer-admin-locations-contract\"\n  },\n  businessmodel: {\n    path: \"business-model\",\n    name: \"youpark-customer-admin-locations-businessmodel\"\n  }\n} satisfies Record<LotConfigurationTabKey, { path: string; name: string }>;\n\nconst lotConfigurationTabRoutes: RouteRecordRaw[] = lotConfigurationTabKeys.map(tab => {\n  const routeInfo = lotConfigurationTabRouteByKey[tab];\n\n  return {\n    path: `customer-administration/locations/${routeInfo.path}`,\n    name: routeInfo.name,\n    component: lotConfigurationView,\n    props: route => ({\n      organizationId: resolveOrganizationId(route),\n      tab\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkCustomerAdminLocations\",\n      viewGroup: \"youpark-customer-admin-locations\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  };\n});\n\nconst youparkChildRoutes: RouteRecordRaw[] = [\n  {\n    path: \"\",\n    name: \"youpark\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-youpark\" */ \"../../components/youpark/visits/VisitsView.vue\"),\n    // Route guard now skips the auto-redirect to Insights when navigation originates from another youpark page,\n    // so the \"Visit\" menu entry opens Visits instead of bouncing back.\n    beforeEnter: async (to, from) => {\n      const organizationId = getRouteParamOrEmpty(to, \"organizationId\");\n      if (!organizationId) {\n        return true;\n      }\n      const fromYouparkSection = typeof from.name === \"string\" && from.name.startsWith(\"youpark\");\n      if (fromYouparkSection) {\n        return true;\n      }\n      try {\n        const configuration = await youparkService.fetchConfigurationSummary(organizationId);\n        if (configuration.success && configuration.data?.allowBusinessInsights) {\n          return { name: \"youpark-insights\", params: { organizationId } };\n        }\n        return true;\n      } catch {\n        return true;\n      }\n    },\n    meta: { titleKey: \"pageTitle.youpark\", viewGroup: \"youpark\", viewGroupParams: [\"organizationId\"] }\n  },\n  {\n    path: \"customer-register\",\n    name: \"youpark-customer-register\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-register\" */ \"../../components/youpark/customer-register/CustomerRegisterView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkCustomerRegister\",\n      viewGroup: \"youpark-customer-register\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  },\n  {\n    path: \"customer-register/subscription/:subscriptionId/edit\",\n    name: \"youpark-customer-register-subscription-edit\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-register\" */ \"../../components/youpark/customer-register/CustomerSubscriptionEditView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\"),\n      subscriptionId: getRouteParamOrEmpty(route, \"subscriptionId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkCustomerRegisterEdit\",\n      viewGroup: \"youpark-customer-register\",\n      viewGroupParams: [\"organizationId\", \"subscriptionId\"]\n    }\n  },\n  {\n    path: \"customer-register/subscription/:subscriptionId/vehicles\",\n    name: \"youpark-customer-register-subscription-vehicles\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-register\" */ \"../../components/youpark/customer-register/CustomerSubscriptionVehiclesView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\"),\n      subscriptionId: getRouteParamOrEmpty(route, \"subscriptionId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkCustomerRegisterVehicles\",\n      viewGroup: \"youpark-customer-register\",\n      viewGroupParams: [\"organizationId\", \"subscriptionId\"]\n    }\n  },\n  {\n    path: \"customer-register/bulk-edit/:templateId\",\n    name: \"youpark-customer-register-bulk-edit\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-register\" */ \"../../components/youpark/customer-register/CustomerSubscriptionBulkEditView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\"),\n      templateId: getRouteParamOrEmpty(route, \"templateId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkCustomerRegisterBulkEdit\",\n      viewGroup: \"youpark-customer-register\",\n      viewGroupParams: [\"organizationId\", \"templateId\"]\n    }\n  },\n  {\n    path: \"subscriptions\",\n    name: \"youpark-subscriptions\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-templates\" */ \"../../components/youpark/template-subscriptions/TemplateSubscriptionsView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkSubscriptions\",\n      viewGroup: \"youpark-subscriptions\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  },\n  {\n    path: \"subscriptions/new\",\n    name: \"youpark-subscriptions-new\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-templates\" */ \"../../components/youpark/template-subscriptions/TemplateSubscriptionEditorView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\"),\n      templateId: \"\"\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkSubscriptions\",\n      viewGroup: \"youpark-subscriptions\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  },\n  {\n    path: \"subscriptions/:templateId/edit\",\n    name: \"youpark-subscriptions-edit\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-templates\" */ \"../../components/youpark/template-subscriptions/TemplateSubscriptionEditorView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\"),\n      templateId: getRouteParamOrEmpty(route, \"templateId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkSubscriptions\",\n      viewGroup: \"youpark-subscriptions\",\n      viewGroupParams: [\"organizationId\", \"templateId\"]\n    }\n  },\n  {\n    path: \"invoices\",\n    name: \"youpark-invoices\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-youpark-invoices\" */ \"../../components/youpark/invoices/InvoicesView.vue\"),\n    props: route => ({\n      titleKey: \"youpark.menu.invoices\",\n      iconKey: \"invoices\",\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkInvoices\",\n      viewGroup: \"youpark-invoices\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  },\n  {\n    path: \"invoices/:invoiceId\",\n    name: \"youpark-invoice-detail\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-invoices\" */ \"../../components/youpark/invoices/InvoiceDetailView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\"),\n      invoiceId: getRouteParamOrEmpty(route, \"invoiceId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkInvoices\",\n      viewGroup: \"youpark-invoices\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  },\n  {\n    path: \"transactions\",\n    name: \"youpark-transactions\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-invoices\" */ \"../../components/youpark/transactions/TransactionsView.vue\"\n      ),\n    props: route => ({\n      titleKey: \"youpark.menu.transactions\",\n      iconKey: \"transactions\",\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkTransactions\",\n      viewGroup: \"youpark-transactions\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  },\n  {\n    path: \"credit\",\n    name: \"youpark-credit\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-youpark-credit\" */ \"../../components/youpark/credit/CreditView.vue\"),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkCredit\",\n      viewGroup: \"youpark-credit\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  },\n  {\n    path: \"booking-reservations\",\n    name: \"youpark-booking-reservations\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-booking-reservations\" */ \"../../components/youpark/booking-reservations/BookingReservationsView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkBookingReservations\",\n      viewGroup: \"youpark-booking-reservations\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  },\n  {\n    path: \"free-visits\",\n    name: \"youpark-free-visits\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-freevisits\" */ \"../../components/youpark/free-visits/FreeVisitsView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkFreeVisits\",\n      viewGroup: \"youpark-free-visits\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  },\n  {\n    path: \"free-visits/new\",\n    name: \"youpark-free-visits-new\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-freevisits\" */ \"../../components/youpark/free-visits/FreeVisitEditorView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkFreeVisitNew\",\n      viewGroup: \"youpark-free-visits\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  },\n  {\n    path: \"free-visits/:visitId/edit\",\n    name: \"youpark-free-visit-edit\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-freevisits\" */ \"../../components/youpark/free-visits/FreeVisitEditorView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\"),\n      visitId: getRouteParamOrEmpty(route, \"visitId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkFreeVisitEdit\",\n      viewGroup: \"youpark-free-visits\",\n      viewGroupParams: [\"organizationId\", \"visitId\"]\n    }\n  },\n  {\n    path: \"free-visits/import\",\n    name: \"youpark-free-visits-import\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-freevisits\" */ \"../../components/youpark/free-visits/FreeVisitImportView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkFreeVisitImport\",\n      viewGroup: \"youpark-free-visits\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  },\n  {\n    path: \"reports\",\n    name: \"youpark-reports\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-youpark-insights\" */ \"../../components/youpark/reports/ReportsView.vue\"),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkReports\",\n      viewGroup: \"youpark-reports\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  },\n  {\n    path: \"insights\",\n    name: \"youpark-insights\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-insights\" */ \"../../components/youpark/business-insights/BusinessInsightsView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkInsights\",\n      viewGroup: \"youpark-insights\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  },\n  {\n    path: \"business-insights\",\n    name: \"youpark-business-insights\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-insights\" */ \"../../components/youpark/business-insights/BusinessInsightsView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkBusinessInsights\",\n      viewGroup: \"youpark-insights\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  },\n  {\n    path: \"todos\",\n    name: \"youpark-todos\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-youpark-todos\" */ \"../../components/youpark/todos/TodosView.vue\"),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\")\n    }),\n    meta: { titleKey: \"pageTitle.youparkTodos\", viewGroup: \"youpark-todos\", viewGroupParams: [\"organizationId\"] }\n  },\n  {\n    path: \"todos/:todoId/:action\",\n    name: \"youpark-todo-process\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-youpark-todos\" */ \"../../components/youpark/todos/TodoProcessView.vue\"),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\"),\n      todoId: getRouteParamOrEmpty(route, \"todoId\"),\n      action: getRouteParam(route, \"action\") === \"decline\" ? \"decline\" : \"confirm\"\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkTodos\",\n      viewGroup: \"youpark-todos\",\n      viewGroupParams: [\"organizationId\", \"todoId\", \"action\"]\n    }\n  },\n  {\n    path: \"access\",\n    name: \"youpark-access\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-youpark-access\" */ \"../../components/youpark/access/AccessView.vue\"),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\"),\n      tab: \"visits\" as const\n    }),\n    meta: { titleKey: \"pageTitle.youparkAccess\", viewGroup: \"youpark-access\", viewGroupParams: [\"organizationId\"] }\n  },\n  {\n    path: \"access/visits\",\n    name: \"youpark-access-visits\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-youpark-access\" */ \"../../components/youpark/access/AccessView.vue\"),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\"),\n      tab: \"visits\" as const\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkAccessVisits\",\n      viewGroup: \"youpark-access\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  },\n  {\n    path: \"access/audits\",\n    name: \"youpark-access-audits\",\n    component: () =>\n      import(/* webpackChunkName: \"dashboard-youpark-access\" */ \"../../components/youpark/access/AccessView.vue\"),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\"),\n      tab: \"audits\" as const\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkAccessAudits\",\n      viewGroup: \"youpark-access\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  },\n  {\n    path: \"customer-administration\",\n    name: \"youpark-customer-admin\",\n    redirect: to => ({ name: \"youpark-customer-admin-locations\", params: to.params }),\n    meta: {\n      titleKey: \"pageTitle.youparkCustomerAdmin\",\n      viewGroup: \"youpark-customer-admin\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  },\n  {\n    path: \"customer-administration/locations\",\n    name: \"youpark-customer-admin-locations\",\n    redirect: to => ({ name: lotConfigurationTabRouteByKey.settings.name, params: to.params, query: to.query }),\n    meta: {\n      titleKey: \"pageTitle.youparkCustomerAdminLocations\",\n      viewGroup: \"youpark-customer-admin-locations\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  },\n  ...lotConfigurationTabRoutes,\n  {\n    path: \"customer-administration/payment-kiosks/:applicationId?\",\n    name: \"youpark-customer-admin-payment-kiosks\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-admin\" */ \"../../components/youpark/customer-admin/CustomerAdminPaymentKiosksView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\"),\n      applicationId: getRouteParam(route, \"applicationId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkCustomerAdminPaymentKiosks\",\n      viewGroup: \"youpark-customer-admin-payment-kiosks\",\n      viewGroupParams: [\"organizationId\", \"applicationId\"]\n    }\n  },\n  {\n    path: \"customer-administration/invoicing/:settingsId?\",\n    name: \"youpark-customer-admin-invoicing\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-admin\" */ \"../../components/youpark/customer-admin/CollectionProviderSettingsView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\"),\n      settingsId: getRouteParam(route, \"settingsId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkCustomerAdminInvoicing\",\n      viewGroup: \"youpark-customer-admin-invoicing\",\n      viewGroupParams: [\"organizationId\", \"settingsId\"]\n    }\n  },\n  {\n    path: \"customer-administration/clusters\",\n    name: \"youpark-customer-admin-clusters\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-admin\" */ \"../../components/youpark/customer-admin/clusters/CustomerAdminClustersView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkCustomerAdminClusters\",\n      viewGroup: \"youpark-customer-admin-clusters\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  },\n  {\n    path: \"customer-administration/areas\",\n    name: \"youpark-customer-admin-areas\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-admin\" */ \"../../components/youpark/customer-admin/CustomerAdminAreasView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkCustomerAdminAreas\",\n      viewGroup: \"youpark-customer-admin-areas\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  },\n  {\n    path: \"customer-administration/access/:applicationId?\",\n    name: \"youpark-customer-admin-access\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-admin\" */ \"../../components/youpark/customer-admin/CustomerAdminAccessConfigurationView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\"),\n      applicationId: getRouteParam(route, \"applicationId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkCustomerAdminAccess\",\n      viewGroup: \"youpark-customer-admin-access\",\n      viewGroupParams: [\"organizationId\", \"applicationId\"]\n    }\n  },\n  {\n    path: \"customer-administration/free-visit-kiosks/:applicationId?\",\n    name: \"youpark-customer-admin-free-visit-kiosks\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-admin\" */ \"../../components/youpark/customer-admin/CustomerAdminFreeVisitKiosksView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\"),\n      applicationId: getRouteParam(route, \"applicationId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkCustomerAdminFreeVisitKiosks\",\n      viewGroup: \"youpark-customer-admin-free-visit-kiosks\",\n      viewGroupParams: [\"organizationId\", \"applicationId\"]\n    }\n  },\n  {\n    path: \"customer-administration/fees\",\n    name: \"youpark-customer-admin-fees\",\n    component: () =>\n      import(\n        /* webpackChunkName: \"dashboard-youpark-admin\" */ \"../../components/youpark/customer-admin/CustomerAdminFeesView.vue\"\n      ),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\")\n    }),\n    meta: {\n      titleKey: \"pageTitle.youparkCustomerAdminFees\",\n      viewGroup: \"youpark-customer-admin-fees\",\n      viewGroupParams: [\"organizationId\"]\n    }\n  }\n];\n\nexport const youparkRoutes: RouteRecordRaw[] = [\n  {\n    path: \"/youpark/:organizationId\",\n    component: () => import(/* webpackChunkName: \"dashboard-youpark\" */ \"../../components/youpark/Layout.vue\"),\n    props: route => ({\n      organizationId: getRouteParamOrEmpty(route, \"organizationId\")\n    }),\n    meta: { viewGroup: \"youpark\", viewGroupParams: [\"organizationId\"] },\n    beforeEnter: to => {\n      const { config } = useAppConfig();\n      const organizationId = getRouteParam(to, \"organizationId\");\n      if (!canAccessYouparkSection(config, organizationId)) {\n        return { name: \"error-forbidden\" };\n      }\n      return true;\n    },\n    children: youparkChildRoutes\n  }\n];\n","import type { RouteRecordRaw } from \"vue-router\";\n\nimport { adminRoutes } from \"./adminRoutes\";\nimport { authRoutes } from \"./authRoutes\";\nimport { bookingsRoutes } from \"./bookingsRoutes\";\nimport { errorRoutes } from \"./errorRoutes\";\nimport { faqRoutes } from \"./faqRoutes\";\nimport { homeRoutes } from \"./homeRoutes\";\nimport { legalRoutes } from \"./legalRoutes\";\nimport { mapRoutes } from \"./mapRoutes\";\nimport { paymentRoutes } from \"./paymentRoutes\";\nimport { profileRoutes } from \"./profileRoutes\";\nimport { remitRoutes } from \"./remitRoutes\";\nimport { subscriptionsRoutes } from \"./subscriptionsRoutes\";\nimport { youparkRoutes } from \"./youparkRoutes\";\n\nexport const routes: RouteRecordRaw[] = [\n  ...authRoutes,\n  ...homeRoutes,\n  ...mapRoutes,\n  ...paymentRoutes,\n  ...faqRoutes,\n  ...subscriptionsRoutes,\n  ...legalRoutes,\n  ...profileRoutes,\n  ...bookingsRoutes,\n  ...remitRoutes,\n  ...youparkRoutes,\n  ...adminRoutes,\n  ...errorRoutes\n];\n\nexport { lotConfigurationTabRouteByKey } from \"./youparkRoutes\";\n","import { watch } from \"vue\";\n\nimport { ensureTranslationNamespaces, language } from \"@core/composables/state/useLanguage\";\nimport { applyDocumentTitle } from \"@core/utils/documentTitle\";\nimport { createRouter, createWebHistory, type RouteLocationNormalized } from \"vue-router\";\n\nimport { translate } from \"@common/i18n\";\n\nimport { createAuthGuard, createTranslationGuard } from \"./guards\";\nimport { createBrowserUpgradeTerminalGuard } from \"./guards/browserUpgradeTerminalGuard\";\nimport { createTranslationPrefetchGuard } from \"./guards/translationPrefetchGuard\";\nimport { routes } from \"./routes\";\nimport { queueDashboardScrollReset, resolveScrollGroup, shouldForceScrollReset } from \"./utils\";\n\nimport { resolveNamespacesForRoute } from \"@/translations\";\n\nimport \"./types\";\n\nexport { resetDashboardScrollPosition, queueDashboardScrollReset } from \"./utils\";\nexport { lotConfigurationTabRouteByKey } from \"./routes\";\n\nconst accountSegment = \"/dashboard\";\nconst pathname = window.location.pathname;\nconst segmentIndex = pathname.indexOf(accountSegment);\nconst base = segmentIndex === -1 ? accountSegment : pathname.slice(0, segmentIndex + accountSegment.length);\n\nexport const dashboardHistoryBase = base;\n\nexport const router = createRouter({\n  history: createWebHistory(base),\n  routes,\n  scrollBehavior(to: RouteLocationNormalized, from: RouteLocationNormalized, savedPosition) {\n    if (shouldForceScrollReset(to)) {\n      queueDashboardScrollReset();\n      return { left: 0, top: 0 };\n    }\n\n    if (savedPosition) {\n      return savedPosition;\n    }\n\n    if (to.hash) {\n      return { el: to.hash };\n    }\n\n    const toGroup = resolveScrollGroup(to);\n    const fromGroup = resolveScrollGroup(from);\n\n    const toHasParams = Object.keys(to.params).length > 0;\n    const shouldPreserve = toHasParams && toGroup !== undefined && toGroup === fromGroup;\n\n    if (shouldPreserve) {\n      return undefined;\n    }\n\n    queueDashboardScrollReset();\n\n    return { left: 0, top: 0 };\n  }\n});\n\nrouter.beforeResolve(createTranslationGuard());\nrouter.beforeEach(createBrowserUpgradeTerminalGuard());\nrouter.beforeEach(createAuthGuard(base));\nrouter.beforeEach(createTranslationPrefetchGuard());\n\nconst initialTitle = document.title;\n\nconst updateDocumentTitle = () => {\n  const currentRoute = router.currentRoute.value;\n  const titleKey = currentRoute.meta.titleKey;\n  if (titleKey) {\n    let translatedTitle = translate(titleKey);\n    const dashboardParam = currentRoute.params.dashboard;\n    if (currentRoute.name === \"statistics\" && typeof dashboardParam === \"string\" && dashboardParam) {\n      translatedTitle = `${translatedTitle} - ${translate(`statistics.dashboards.${dashboardParam}`)}`;\n    }\n    applyDocumentTitle(translatedTitle);\n    return;\n  }\n  applyDocumentTitle(initialTitle);\n};\n\nrouter.afterEach(() => {\n  updateDocumentTitle();\n});\n\nwatch(language, async () => {\n  updateDocumentTitle();\n  const currentName = typeof router.currentRoute.value.name === \"string\" ? router.currentRoute.value.name : null;\n  const namespaces = resolveNamespacesForRoute(currentName);\n  if (namespaces.length > 0) {\n    try {\n      await ensureTranslationNamespaces(namespaces);\n    } catch (error) {\n      console.error(\"[App] Failed to reload translations for current route\", error);\n    }\n  }\n});\n\nexport default router;\n","import { ensureTranslationNamespaces } from \"@core/composables/state/useLanguage\";\nimport type { NavigationGuardWithThis } from \"vue-router\";\n\nimport { resolveNamespacesForRoute } from \"@/translations\";\n\nexport function createTranslationPrefetchGuard(): NavigationGuardWithThis<undefined> {\n  return to => {\n    const routeName = typeof to.name === \"string\" ? to.name : null;\n    const namespaces = resolveNamespacesForRoute(routeName);\n    if (namespaces.length === 0) {\n      return;\n    }\n\n    void ensureTranslationNamespaces(namespaces).catch(error => {\n      console.error(\"[App] Failed to prefetch route translations\", error);\n    });\n  };\n}\n","import { loadCardFlowContext, registerCardFlowAction } from \"@core/utils/cardFlow\";\nimport type { RouteLocationRaw } from \"vue-router\";\n\nimport { setPendingSubscriptionPurchaseAction } from \"@/utils/subscriptionPurchase\";\n\nexport function translateLegacyHash(hash: string, applySideEffects = true): RouteLocationRaw | undefined {\n  if (!hash) {\n    return undefined;\n  }\n\n  const withoutMarker = hash.startsWith(\"#\") ? hash.slice(1) : hash;\n  const normalizedHash = withoutMarker.replace(/^!/, \"\").replace(/^&/, \"\");\n  if (!normalizedHash) {\n    return undefined;\n  }\n\n  const [sectionCandidate, ...queryParts] = normalizedHash.split(\"?\");\n  const [sectionToken, ...ampersandTokens] = sectionCandidate.split(\"&\");\n  const querySegments: string[] = [];\n\n  if (ampersandTokens.length > 0) {\n    querySegments.push(ampersandTokens.join(\"&\"));\n  }\n\n  if (queryParts.length > 0) {\n    querySegments.push(queryParts.join(\"?\"));\n  }\n\n  if (sectionToken.includes(\"=\")) {\n    querySegments.push(sectionToken);\n  }\n\n  const queryString = querySegments.join(\"&\");\n  const params = new URLSearchParams(queryString);\n\n  if (params.has(\"accountRenderSubscriptionId\")) {\n    const subscriptionId = params.get(\"accountRenderSubscriptionId\")?.trim();\n    if (subscriptionId && subscriptionId.length > 0) {\n      return { name: \"subscription-details\", params: { id: subscriptionId } };\n    }\n    return { name: \"subscriptions\" };\n  }\n\n  if (params.has(\"accountShowSubscriptionId\")) {\n    const subscriptionId = params.get(\"accountShowSubscriptionId\")?.trim();\n    if (subscriptionId && subscriptionId.length > 0) {\n      return { name: \"subscription-details\", params: { id: subscriptionId } };\n    }\n    return { name: \"subscriptions\" };\n  }\n\n  if (params.has(\"accountRenderBuySubscriptionTemplateId\")) {\n    const templateId = params.get(\"accountRenderBuySubscriptionTemplateId\")?.trim();\n    if (templateId && templateId.length > 0) {\n      if (applySideEffects) {\n        setPendingSubscriptionPurchaseAction(params.get(\"accountNsAction\"));\n      }\n      return { name: \"subscription-purchase\", params: { templateId } };\n    }\n    return { name: \"subscriptions\" };\n  }\n\n  if (params.has(\"accountRenderSubscriptionBookingBySubscriptionId\")) {\n    const subscriptionId = params.get(\"accountRenderSubscriptionBookingBySubscriptionId\")?.trim();\n    if (subscriptionId && subscriptionId.length > 0) {\n      return { name: \"bookings\", query: { subscriptionId } };\n    }\n    return { name: \"bookings\" };\n  }\n\n  if (params.has(\"myaccount\")) {\n    const action = params.get(\"myaccount\");\n    if (action === \"delete\") {\n      return { name: \"profile\", replace: true };\n    }\n    if (action === \"createGdprRequest\") {\n      return { name: \"gdpr\", replace: true };\n    }\n  }\n\n  if (params.has(\"accountNsAction\")) {\n    const actionValue = params.get(\"accountNsAction\");\n    const hasAction = typeof actionValue === \"string\" && actionValue.trim().length > 0;\n    const context = hasAction ? (applySideEffects ? registerCardFlowAction(actionValue) : loadCardFlowContext()) : null;\n    if (context?.originRoute) {\n      return {\n        name: context.originRoute,\n        params: context.routeParams ?? {},\n        query: context.routeQuery ?? {}\n      };\n    }\n    return { name: \"payment-sources\" };\n  }\n\n  if (params.has(\"accountRenderMessage\")) {\n    return { name: \"payment-sources\" };\n  }\n\n  const sectionKey = sectionToken.split(\"=\")[0]?.toLowerCase() ?? \"\";\n\n  const sectionMap: Record<string, string> = {\n    subscriptions: \"subscriptions\",\n    \"payment-sources\": \"payment-sources\",\n    vehicles: \"vehicles\",\n    coupons: \"coupons\",\n    receipts: \"receipts\",\n    bookings: \"bookings\",\n    profile: \"profile\",\n    mysubscriptions: \"subscriptions\",\n    \"my-subscriptions\": \"subscriptions\",\n    mypaymentsources: \"payment-sources\",\n    \"payment-methods\": \"payment-sources\",\n    \"payment-agreements\": \"vehicles\",\n    \"my-payment-sources\": \"payment-sources\",\n    myvehicles: \"vehicles\",\n    \"my-vehicles\": \"vehicles\",\n    mysharedsubscriptions: \"subscriptions\",\n    \"my-shared-subscriptions\": \"subscriptions\",\n    mycoupons: \"coupons\",\n    \"my-coupons\": \"coupons\",\n    mytransactions: \"receipts\",\n    \"my-transactions\": \"receipts\",\n    mybookingreservations: \"bookings\",\n    reservations: \"bookings\",\n    \"my-booking-reservations\": \"bookings\",\n    myaccount: \"profile\",\n    \"my-account\": \"profile\",\n    youpark: \"youpark\",\n    youparktodos: \"youpark-todos\",\n    youparkinsights: \"youpark-insights\",\n    youparkaccess: \"youpark-access\",\n    youparkcustomerregister: \"youpark-customer-register\",\n    youparkcustomerregistersubscriptionedit: \"youpark-customer-register-subscription-edit\",\n    youparkcustomerregistersubscriptionvehicles: \"youpark-customer-register-subscription-vehicles\",\n    youparksubscriptions: \"youpark-subscriptions\",\n    youparkinvoices: \"youpark-invoices\",\n    youparktransactions: \"youpark-transactions\",\n    youparkfreevisits: \"youpark-free-visits\",\n    youparkfreevisitsnew: \"youpark-free-visits-new\",\n    youparkfreevisitimport: \"youpark-free-visits-import\",\n    youparkfreevisitedit: \"youpark-free-visit-edit\",\n    youparkreports: \"youpark-reports\",\n    youparkbusinessinsights: \"youpark-business-insights\",\n    youparkcustomeradmin: \"youpark-customer-admin\",\n    youparkcustomeradminlocations: \"youpark-customer-admin-locations\",\n    youparkcustomeradminpaymentkiosks: \"youpark-customer-admin-payment-kiosks\",\n    youparkcustomeradmininvoicing: \"youpark-customer-admin-invoicing\",\n    youparkcustomeradminareas: \"youpark-customer-admin-areas\",\n    youparkcustomeradminaccess: \"youpark-customer-admin-access\",\n    youparkcustomeradminfreevisitkiosks: \"youpark-customer-admin-free-visit-kiosks\",\n    youparkcustomeradminguestkiosks: \"youpark-customer-admin-free-visit-kiosks\",\n    youparkcustomeradminfees: \"youpark-customer-admin-fees\",\n    remit: \"remit\",\n    remitallocations: \"remit-allocations\",\n    remitcreditors: \"remit-creditors\"\n  };\n\n  const routeName = sectionMap[sectionKey];\n  if (!routeName) {\n    return undefined;\n  }\n\n  return { name: routeName };\n}\n","export type RoutePrefetchDependencies = {\n  resolveComponents: (routeName: string) => readonly unknown[];\n  ensureNamespaces: (routeName: string) => Promise<unknown> | undefined;\n};\n\nexport function prefetchParamsFromPath(path: string): Record<string, string> {\n  const params: Record<string, string> = {};\n  for (const match of path.matchAll(/:([A-Za-z0-9_]+)/g)) {\n    const name = match[1];\n    if (name) {\n      params[name] = \"prefetch\";\n    }\n  }\n  return params;\n}\n\nexport function toRouterPath(pathname: string, base: string): string {\n  if (base.length > 0 && pathname.startsWith(base)) {\n    const rest = pathname.slice(base.length);\n    return rest.length > 0 ? rest : \"/\";\n  }\n  return pathname;\n}\n\nexport type InitialPrefetchRoute = {\n  matched: boolean;\n  name: string | null;\n  query: Record<string, unknown>;\n  params: Record<string, unknown>;\n  accountAction: boolean;\n  cardFlowOrigin: string | null;\n  legacyName: string | null;\n};\n\nconst firstQueryValue = (value: unknown): string | null => {\n  if (typeof value === \"string\") {\n    const trimmed = value.trim();\n    return trimmed.length > 0 ? trimmed : null;\n  }\n  if (!Array.isArray(value)) {\n    return null;\n  }\n  const first: unknown = value[0];\n  if (typeof first !== \"string\") {\n    return null;\n  }\n  const trimmed = first.trim();\n  return trimmed.length > 0 ? trimmed : null;\n};\n\nexport function selectInitialPrefetchRoute(\n  route: InitialPrefetchRoute,\n  isAuthenticated: boolean,\n  publicViews: readonly string[],\n  canAccessRoute: (routeName: string, organizationId: string | undefined) => boolean\n): string | null {\n  if (!route.matched) {\n    return \"error-page-not-found\";\n  }\n\n  const routeName = route.name;\n  if (!routeName) {\n    return null;\n  }\n\n  if (routeName === \"sign-in\") {\n    return isAuthenticated ? \"payment\" : \"sign-in\";\n  }\n\n  if (firstQueryValue(route.query.subscriptionId) && routeName !== \"bookings\") {\n    return destinationAfterAccess(\"subscription-details\", isAuthenticated, publicViews, route.params, canAccessRoute);\n  }\n\n  if (firstQueryValue(route.query.accountRenderBuySubscriptionTemplateId)) {\n    return destinationAfterAccess(\"subscription-purchase\", isAuthenticated, publicViews, route.params, canAccessRoute);\n  }\n\n  if (route.accountAction) {\n    const origin = route.cardFlowOrigin;\n    if (origin) {\n      return destinationAfterAccess(origin, isAuthenticated, publicViews, route.params, canAccessRoute);\n    }\n    return routeName === \"payment-sources\" ? routeName : \"payment-sources\";\n  }\n\n  if (route.legacyName) {\n    return destinationAfterAccess(route.legacyName, isAuthenticated, publicViews, route.params, canAccessRoute);\n  }\n\n  return destinationAfterAccess(routeName, isAuthenticated, publicViews, route.params, canAccessRoute);\n}\n\nfunction destinationAfterAccess(\n  routeName: string,\n  isAuthenticated: boolean,\n  publicViews: readonly string[],\n  params: Record<string, unknown>,\n  canAccessRoute: (routeName: string, organizationId: string | undefined) => boolean\n): string {\n  if (!isAuthenticated && routeName !== \"sign-in\" && !publicViews.includes(routeName)) {\n    return \"sign-in\";\n  }\n\n  const organizationId = typeof params.organizationId === \"string\" ? params.organizationId : undefined;\n  if (isAuthenticated && !canAccessRoute(routeName, organizationId)) {\n    return \"error-forbidden\";\n  }\n\n  return routeName;\n}\n\nexport function prefetchDestination(\n  currentName: string | null,\n  accessName: string | null,\n  entryName: string | null\n): string | null {\n  if (accessName !== currentName) {\n    return accessName;\n  }\n  return entryName ?? accessName;\n}\n\nexport function selectPrefetchRouteName(\n  routeName: string | null,\n  isAuthenticated: boolean,\n  publicViews: readonly string[]\n): string | null {\n  if (!routeName) {\n    return null;\n  }\n\n  return selectInitialPrefetchRoute(\n    {\n      matched: true,\n      name: routeName,\n      query: {},\n      params: {},\n      accountAction: false,\n      cardFlowOrigin: null,\n      legacyName: null\n    },\n    isAuthenticated,\n    publicViews,\n    () => true\n  );\n}\n\nfunction isPromise(value: unknown): value is Promise<unknown> {\n  return typeof value === \"object\" && value !== null && typeof (value as Promise<unknown>).then === \"function\";\n}\n\nexport function preloadRouteComponent(component: unknown): void {\n  if (typeof component !== \"function\") {\n    return;\n  }\n\n  try {\n    const result = (component as () => unknown)();\n    if (isPromise(result)) {\n      void result.catch(() => undefined);\n    }\n  } catch {\n    return;\n  }\n}\n\nexport function createRoutePrefetcher(\n  dependencies: RoutePrefetchDependencies\n): (routeName: string | null | undefined) => void {\n  const started = new Set<string>();\n\n  return routeName => {\n    if (!routeName || started.has(routeName)) {\n      return;\n    }\n\n    started.add(routeName);\n    try {\n      for (const component of dependencies.resolveComponents(routeName)) {\n        preloadRouteComponent(component);\n      }\n    } catch {\n      return;\n    }\n\n    void Promise.resolve()\n      .then(() => dependencies.ensureNamespaces(routeName))\n      .catch(() => undefined);\n  };\n}\n","import { readDashboardAccess, useAppConfig } from \"@core/composables/data/useAppConfig\";\nimport { ensureTranslationNamespaces } from \"@core/composables/state/useLanguage\";\nimport { canAccessRestrictedView } from \"@core/utils/accessPolicy\";\nimport { loadCardFlowContext } from \"@core/utils/cardFlow\";\nimport type { RouteLocationNormalized, RouteLocationRaw, RouteLocationResolved } from \"vue-router\";\n\nimport { translateLegacyHash } from \"./legacy\";\nimport {\n  createRoutePrefetcher,\n  prefetchParamsFromPath,\n  prefetchDestination,\n  selectInitialPrefetchRoute,\n  toRouterPath\n} from \"./prefetchRoute\";\nimport { extractAccountNsAction } from \"./utils\";\n\nimport router, { dashboardHistoryBase } from \"./index\";\n\nimport { resolveNamespacesForRoute } from \"@/translations\";\n\nfunction componentsForRoute(routeName: string): readonly unknown[] {\n  const record = router.getRoutes().find(route => route.name === routeName);\n  if (!record) {\n    return [];\n  }\n\n  const resolved = router.resolve({\n    name: routeName,\n    params: prefetchParamsFromPath(record.path)\n  });\n  const components: unknown[] = [];\n  for (const matched of resolved.matched) {\n    const recordComponents = matched.components;\n    if (!recordComponents) {\n      continue;\n    }\n    for (const component of Object.values(recordComponents)) {\n      components.push(component);\n    }\n  }\n  return components;\n}\n\nexport const prefetchDashboardRoute = createRoutePrefetcher({\n  resolveComponents: componentsForRoute,\n  ensureNamespaces: routeName => ensureTranslationNamespaces(resolveNamespacesForRoute(routeName))\n});\n\nconst routeRequiredParams: Record<string, readonly string[]> = {\n  \"map-area\": [\"areaId\"],\n  \"map-area-details\": [\"areaId\"],\n  \"map-lot-details\": [\"lotId\"],\n  \"subscription-details\": [\"id\"],\n  \"subscription-purchase\": [\"templateId\"],\n  \"subscription-renew\": [\"id\"],\n  \"edit-vehicle\": [\"id\"],\n  \"edit-payment-source\": [\"id\"]\n};\n\nfunction hasRequiredParams(routeName: string, params: Record<string, string> | undefined): boolean {\n  const requiredParams = routeRequiredParams[routeName];\n  if (requiredParams === undefined || requiredParams.length === 0) {\n    return true;\n  }\n  if (params === undefined) {\n    return false;\n  }\n  return requiredParams.every(param => {\n    const value = params[param];\n    return typeof value === \"string\" && value.trim().length > 0;\n  });\n}\n\nfunction isRouteTarget(value: unknown): value is RouteLocationRaw {\n  return typeof value === \"string\" || (typeof value === \"object\" && value !== null);\n}\n\nasync function beforeEnterTarget(location: RouteLocationResolved): Promise<RouteLocationRaw | null> {\n  const from = router.currentRoute.value;\n  for (const record of location.matched) {\n    const beforeEnter = record.beforeEnter;\n    if (beforeEnter === undefined) {\n      continue;\n    }\n    const guards = Array.isArray(beforeEnter) ? beforeEnter : [beforeEnter];\n    for (const guard of guards) {\n      try {\n        const result: unknown = await guard.call(\n          undefined,\n          location as unknown as RouteLocationNormalized,\n          from,\n          () => undefined\n        );\n        if (isRouteTarget(result)) {\n          return result;\n        }\n      } catch {\n        return null;\n      }\n    }\n  }\n  return null;\n}\n\nfunction followRecordRedirects(url: string): RouteLocationResolved {\n  let location = router.resolve(url);\n  const from = router.currentRoute.value;\n  const seen = new Set<string>();\n  for (let hop = 0; hop < 5; hop += 1) {\n    if (seen.has(location.fullPath)) {\n      return location;\n    }\n    seen.add(location.fullPath);\n    const record = location.matched[location.matched.length - 1];\n    if (record?.redirect === undefined) {\n      return location;\n    }\n    const target = typeof record.redirect === \"function\" ? record.redirect(location, from) : record.redirect;\n    location = router.resolve(target);\n  }\n  return location;\n}\n\nasync function followBeforeEnter(location: RouteLocationResolved): Promise<RouteLocationResolved> {\n  let current = location;\n  const seen = new Set<string>();\n  for (let hop = 0; hop < 5; hop += 1) {\n    if (seen.has(current.fullPath)) {\n      return current;\n    }\n    seen.add(current.fullPath);\n    const guardTarget = await beforeEnterTarget(current);\n    if (guardTarget === null) {\n      return current;\n    }\n    current = router.resolve(guardTarget);\n  }\n  return current;\n}\n\nfunction legacyRouteName(hash: string): string | null {\n  const target = translateLegacyHash(hash, false);\n  if (typeof target === \"object\" && target !== null && \"name\" in target && typeof target.name === \"string\") {\n    return target.name;\n  }\n  return null;\n}\n\nfunction prefetchNameForLocation(location: RouteLocationResolved): string | null {\n  const access = readDashboardAccess();\n  const { config } = useAppConfig();\n  const action = extractAccountNsAction(location.query.accountNsAction);\n  const context = action && action.trim().length > 0 ? loadCardFlowContext() : null;\n  const cardFlowOrigin =\n    context?.originRoute && hasRequiredParams(context.originRoute, context.routeParams) ? context.originRoute : null;\n  return selectInitialPrefetchRoute(\n    {\n      matched: location.matched.length > 0,\n      name: typeof location.name === \"string\" ? location.name : null,\n      query: location.query,\n      params: location.params,\n      accountAction: Boolean(action && action.trim().length > 0),\n      cardFlowOrigin,\n      legacyName: legacyRouteName(location.hash)\n    },\n    access.isAuthenticated,\n    access.publicViews,\n    (routeName, organizationId) => canAccessRestrictedView(config, routeName, organizationId)\n  );\n}\n\nfunction prefetchStaticOrganization(accessName: string | null): void {\n  prefetchDashboardRoute(accessName);\n  if (accessName === \"youpark\") {\n    prefetchDashboardRoute(\"youpark-insights\");\n  }\n}\n\nexport async function prefetchDashboardUrl(browserPath: string, followEntryGuards = false): Promise<void> {\n  const location = followRecordRedirects(toRouterPath(browserPath, dashboardHistoryBase));\n  const currentName = typeof location.name === \"string\" ? location.name : null;\n  const accessName = prefetchNameForLocation(location);\n  if (!followEntryGuards || accessName !== currentName) {\n    if (accessName === currentName) {\n      prefetchStaticOrganization(accessName);\n      return;\n    }\n    prefetchDashboardRoute(prefetchDestination(currentName, accessName, null));\n    return;\n  }\n  const afterEntry = await followBeforeEnter(location);\n  const entryName = prefetchNameForLocation(afterEntry);\n  prefetchDashboardRoute(prefetchDestination(currentName, accessName, entryName));\n}\n\nexport async function prefetchInitialDashboardRoute(): Promise<void> {\n  const { pathname, search, hash } = window.location;\n  await prefetchDashboardUrl(`${pathname}${search}${hash}`, true);\n}\n","import type { ObjectDirective } from \"vue\";\n\nimport { prefetchDashboardRoute, prefetchDashboardUrl } from \"./prefetchDashboardRoute\";\n\ntype IntentBinding = {\n  target: string | null;\n  onIntent: () => void;\n};\n\nconst intentBindings = new WeakMap<HTMLElement, IntentBinding>();\n\nfunction targetFrom(value: string | null | undefined): string | null {\n  return typeof value === \"string\" && value.length > 0 ? value : null;\n}\n\nfunction prefetchTarget(target: string | null): void {\n  if (!target) {\n    return;\n  }\n  if (target.startsWith(\"/\")) {\n    void prefetchDashboardUrl(target);\n    return;\n  }\n  prefetchDashboardRoute(target);\n}\n\nexport const prefetchRouteDirective: ObjectDirective<HTMLElement, string | null | undefined> = {\n  mounted(element, binding) {\n    const intentBinding: IntentBinding = {\n      target: targetFrom(binding.value),\n      onIntent: () => {\n        prefetchTarget(intentBinding.target);\n      }\n    };\n    intentBindings.set(element, intentBinding);\n    element.addEventListener(\"pointerenter\", intentBinding.onIntent);\n    element.addEventListener(\"pointerdown\", intentBinding.onIntent);\n    element.addEventListener(\"focus\", intentBinding.onIntent);\n  },\n  updated(element, binding) {\n    const intentBinding = intentBindings.get(element);\n    if (!intentBinding) {\n      return;\n    }\n    intentBinding.target = targetFrom(binding.value);\n  },\n  unmounted(element) {\n    const intentBinding = intentBindings.get(element);\n    if (!intentBinding) {\n      return;\n    }\n    element.removeEventListener(\"pointerenter\", intentBinding.onIntent);\n    element.removeEventListener(\"pointerdown\", intentBinding.onIntent);\n    element.removeEventListener(\"focus\", intentBinding.onIntent);\n    intentBindings.delete(element);\n  }\n};\n","import type { RouteLocationNormalized } from \"vue-router\";\n\ntype RouteParams = RouteLocationNormalized[\"params\"];\n\nconst readRouteParam = (params: RouteParams, key: string): string | undefined => {\n  const value = params[key];\n  return typeof value === \"string\" ? value : undefined;\n};\n\nexport const getRouteParam = (route: RouteLocationNormalized, key: string): string | undefined =>\n  readRouteParam(route.params, key);\n\nexport const getRouteParamOrEmpty = (route: RouteLocationNormalized, key: string): string =>\n  readRouteParam(route.params, key) ?? \"\";\n\nexport function resolveAreaId(route: RouteLocationNormalized): string | undefined {\n  const areaId = getRouteParam(route, \"areaId\");\n  if (areaId) {\n    return areaId;\n  }\n  if (typeof route.query.a === \"string\") {\n    return route.query.a;\n  }\n  return undefined;\n}\n\nexport function resolveOrganizationId(route: RouteLocationNormalized): string {\n  return getRouteParamOrEmpty(route, \"organizationId\");\n}\n\nexport const resetDashboardScrollPosition = () => {\n  if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n    return;\n  }\n  const rootElement = document.getElementById(\"dashboard\");\n  const scrollContainer = rootElement?.querySelector<HTMLElement>(\"main\");\n  if (scrollContainer) {\n    if (typeof scrollContainer.scrollTo === \"function\") {\n      scrollContainer.scrollTo({ left: 0, top: 0 });\n      return;\n    }\n    scrollContainer.scrollTop = 0;\n    scrollContainer.scrollLeft = 0;\n    return;\n  }\n  window.scrollTo({ left: 0, top: 0 });\n};\n\nexport const queueDashboardScrollReset = () => {\n  if (typeof window === \"undefined\") {\n    return;\n  }\n  if (typeof window.requestAnimationFrame === \"function\") {\n    window.requestAnimationFrame(resetDashboardScrollPosition);\n    return;\n  }\n  window.setTimeout(resetDashboardScrollPosition, 0);\n};\n\nexport const resolveScrollGroup = (route: RouteLocationNormalized | undefined) => {\n  return route?.meta.scrollGroup;\n};\n\nexport const shouldForceScrollReset = (route: RouteLocationNormalized) => Boolean(route?.meta.resetScroll);\n\nexport function extractAccountNsAction(raw: unknown): string | null {\n  if (typeof raw === \"string\") {\n    return raw;\n  }\n  if (Array.isArray(raw)) {\n    const first = raw.find(item => typeof item === \"string\");\n    return typeof first === \"string\" ? first : null;\n  }\n  return null;\n}\n\nexport function normalizeRouterBase(base: string): string {\n  return base.endsWith(\"/\") ? base.slice(0, -1) : base;\n}\n\nexport function buildAuthRedirectUrl(base: string, fullPath: string): string {\n  const normalizedBase = normalizeRouterBase(base);\n  const pathToAppend = fullPath || \"/\";\n  return `${normalizedBase}${pathToAppend}`;\n}\n","import type { ServiceResult } from \"@core/services/serviceResult\";\n\nimport { AreaType, LotType } from \"@common/enums\";\nimport httpClient from \"@common/http-client\";\nimport { getEnumValue } from \"@common/utils/enum\";\nimport { mapServiceErrorKeyWithPrefixes } from \"@common/utils/http/errors\";\nimport { normalizeObjectId } from \"@common/utils/objects\";\nimport { normalizeNullableString, normalizeString } from \"@common/utils/strings\";\n\nimport type {\n  ParkingVisitsResponse,\n  TollVisitsResponse,\n  VideoMetadata,\n  Visit,\n  VisitBasis,\n  YouparkArea,\n  YouparkConfiguration,\n  YouparkConfigurationSummary,\n  YouparkLot\n} from \"@/types/youpark\";\n\ntype RawArea = {\n  id?: string;\n  name?: string;\n  type?: number;\n  typeStr?: string;\n  lotIds?: unknown;\n  latitude?: number;\n  longitude?: number;\n};\n\ntype RawLot = {\n  id?: string;\n  name?: string;\n  lotType?: number;\n  capacity?: number;\n  enableInventory?: boolean;\n};\n\ntype RawConfigurationResponse = {\n  id?: string;\n  organizationId?: string;\n  organizationName?: string;\n  lots?: RawLot[];\n  areas?: RawArea[];\n  allowBusinessInsights?: boolean;\n  users?: unknown;\n  selectableRemitCreditors?: unknown;\n  collectionProviderSettings?: unknown;\n  collectionProviderVendors?: unknown;\n  commissionAgreements?: unknown;\n  remitAllocationSchemas?: unknown;\n  youpayConfigurations?: unknown;\n  accessApplications?: unknown;\n  freeVisitKioskConfigurations?: unknown;\n  fees?: unknown;\n  hasAccessProduct?: boolean;\n};\n\ntype RawVisitBasis = {\n  id?: string;\n  type?: number;\n  description?: string;\n  amount?: number;\n  amountStr?: string;\n  periodStart?: string;\n  periodEnd?: string;\n  durations?: { start?: string; end?: string }[];\n  subscriptionId?: string;\n  templateId?: string;\n  templateName?: string;\n  subscriptionVoucherIsValueCard?: boolean;\n};\n\ntype RawVisit = {\n  alprId?: string;\n  lotId?: string;\n  lotName?: string;\n  licenseplate?: string;\n  recognitionDate?: string;\n  totalEarnings?: number;\n  totalEarningsMoney?: string;\n  hasSubscription?: boolean;\n  directionType?: number;\n  subscriptionVoucherTotalCountSpent?: number;\n  lossType?: number;\n  classificationVisible?: boolean;\n  classificationLabel?: string;\n  classificationIsVehicle?: boolean;\n  classificationCount?: number;\n  classificationConfidence?: number;\n  vehicleMakeModel?: string | null;\n  vehicleMakeModelScore?: number | null;\n  vehicleColor?: string | null;\n  vehicleColorScore?: number | null;\n  basises?: RawVisitBasis[];\n  countryType?: number;\n  countryTypeStr?: string;\n  vehicleInfoId?: string | null;\n  vehicleInfoTotalWeightInKilos?: number | null;\n  vehicleInfoTonnagePriceCategoryType?: number;\n  vehicleInfoTonnagePriceCategoryTypeStr?: string;\n  barrierOpenDate?: string | null;\n  isEmployee?: boolean;\n  manuallyApproved?: boolean;\n  manuallyApprovedByName?: string;\n  isAtParkingLotUntilDate?: string | null;\n  isAtParkingLotUntilDatePolicyTypeStr?: string | null;\n  isInventoryEnabledForLot?: boolean;\n  linkedVisitId?: string | null;\n  linkedVisitLotName?: string | null;\n  linkedVisitLicensePlate?: string | null;\n  linkedVisitCountryTypeStr?: string | null;\n  isRemovable?: boolean;\n  test?: boolean;\n  subscriptionVoucherIsValueCard?: boolean;\n};\n\ntype RawLotVehiclesResponse = {\n  totalBillableEarningsToday?: number;\n  totalBillableEarningsTodayMoney?: string;\n  totalBillableVisitsTodayCount?: number;\n  totalVehiclesNowCount?: number;\n  totalVisitsTodayCount?: number;\n  totalVisitsTodayEnterCount?: number;\n  totalVisitsTodayExitCount?: number;\n  totalSubscriptionVouchersCount?: number;\n  vehicles?: RawVisit[];\n  now?: string;\n  totalVehiclesSearchCount?: number;\n  isInventoryEnabled?: boolean;\n};\n\nconst CONFIG_ERROR = \"youpark.errors.loadConfig\";\nconst VISITS_ERROR = \"youpark.errors.loadVisits\";\nconst VIDEO_ERROR = \"youpark.errors.loadVideo\";\nconst REMOVE_ERROR = \"youpark.errors.removeEntry\";\nconst EMPTY_LOTS_ERROR = \"youpark.errors.emptyLots\";\n\nconst errorMap: Record<string, string> = {\n  ERR_ACCESS_DENIED: \"youpark.errors.accessDenied\",\n  ERR_RATE_LIMIT: \"youpark.errors.rateLimit\",\n  ERR_LOTS_EMPTY: \"youpark.errors.noLotsSelected\",\n  ERR_LOT_COUNT_MISMATCH: \"youpark.errors.lotCountMismatch\",\n  ERR_LOT_INCORRECT_TYPE: \"youpark.errors.invalidLotType\"\n};\n\nconst mapError = (error: unknown, fallback: string) =>\n  mapServiceErrorKeyWithPrefixes(error, fallback, errorMap, [\"youpark\"]);\n\ntype CacheEntry<T> = {\n  fetchedAt: number;\n  data: T;\n};\n\nconst CONFIGURATION_CACHE_TTL_MS = 30000;\nconst CONFIGURATION_DEFAULT_TIMEOUT_MS = 30000;\n\nconst configurationCacheByOrganizationId = new Map<string, CacheEntry<YouparkConfiguration>>();\nconst pendingConfigurationByOrganizationId = new Map<string, Promise<YouparkConfiguration>>();\n\nconst toArea = (raw: RawArea): YouparkArea => ({\n  id: normalizeObjectId(raw.id ?? \"\", \"\"),\n  name: raw.name?.toString().trim() ?? \"\",\n  type: getEnumValue(raw.type, AreaType),\n  typeLabel: raw.typeStr?.toString().trim() ?? \"\",\n  lotIds: Array.isArray(raw.lotIds)\n    ? raw.lotIds\n        .map(id => normalizeObjectId(typeof id === \"string\" ? id : String(id ?? \"\"), \"\"))\n        .filter(id => id !== \"\")\n    : [],\n  latitude: typeof raw.latitude === \"number\" ? raw.latitude : undefined,\n  longitude: typeof raw.longitude === \"number\" ? raw.longitude : undefined\n});\n\nconst toLot = (raw: RawLot): YouparkLot => ({\n  id: normalizeObjectId(raw.id ?? \"\", \"\"),\n  name: raw.name?.toString().trim() ?? \"\",\n  lotType: getEnumValue(raw.lotType, LotType),\n  capacity: typeof raw.capacity === \"number\" ? raw.capacity : 0,\n  enableInventory: raw.enableInventory === true\n});\n\nconst toBasis = (raw: RawVisitBasis): VisitBasis => ({\n  id: normalizeObjectId(raw.id ?? \"\"),\n  type: typeof raw.type === \"number\" ? raw.type : 0,\n  description: normalizeNullableString(raw.description) ?? undefined,\n  amount: typeof raw.amount === \"number\" ? raw.amount : undefined,\n  amountStr: normalizeNullableString(raw.amountStr) ?? undefined,\n  periodStart: normalizeNullableString(raw.periodStart) ?? undefined,\n  periodEnd: normalizeNullableString(raw.periodEnd) ?? undefined,\n  durations:\n    raw.durations?.map(duration => ({\n      start: normalizeNullableString(duration?.start) ?? \"\",\n      end: normalizeNullableString(duration?.end) ?? \"\"\n    })) ?? [],\n  subscriptionId: normalizeNullableString(raw.subscriptionId) ?? undefined,\n  templateId: normalizeNullableString(raw.templateId) ?? undefined,\n  templateName: normalizeNullableString(raw.templateName) ?? undefined,\n  subscriptionVoucherIsValueCard: raw.subscriptionVoucherIsValueCard === true\n});\n\nconst toVisit = (raw: RawVisit, lotType: LotType): Visit => ({\n  alprId: normalizeObjectId(raw.alprId ?? \"\"),\n  lotId: normalizeObjectId(raw.lotId ?? \"\"),\n  lotName: raw.lotName?.toString().trim() ?? \"\",\n  lotType,\n  licensePlate: normalizeNullableString(raw.licenseplate) ?? \"\",\n  recognitionDate: normalizeNullableString(raw.recognitionDate) ?? \"\",\n  totalEarnings: typeof raw.totalEarnings === \"number\" ? raw.totalEarnings : undefined,\n  totalEarningsMoney: normalizeNullableString(raw.totalEarningsMoney) ?? undefined,\n  hasSubscription: raw.hasSubscription === true,\n  directionType: typeof raw.directionType === \"number\" ? raw.directionType : undefined,\n  subscriptionVoucherTotalCountSpent:\n    typeof raw.subscriptionVoucherTotalCountSpent === \"number\" ? raw.subscriptionVoucherTotalCountSpent : undefined,\n  lossType: typeof raw.lossType === \"number\" ? raw.lossType : undefined,\n  classificationVisible: raw.classificationVisible === true,\n  classificationLabel: normalizeNullableString(raw.classificationLabel) ?? undefined,\n  classificationIsVehicle: raw.classificationIsVehicle === true,\n  classificationCount: typeof raw.classificationCount === \"number\" ? raw.classificationCount : undefined,\n  classificationConfidence: typeof raw.classificationConfidence === \"number\" ? raw.classificationConfidence : undefined,\n  vehicleMakeModel: normalizeNullableString(raw.vehicleMakeModel) ?? undefined,\n  vehicleMakeModelScore:\n    typeof raw.vehicleMakeModelScore === \"number\" && Number.isFinite(raw.vehicleMakeModelScore)\n      ? raw.vehicleMakeModelScore\n      : undefined,\n  vehicleColor: normalizeNullableString(raw.vehicleColor) ?? undefined,\n  vehicleColorScore:\n    typeof raw.vehicleColorScore === \"number\" && Number.isFinite(raw.vehicleColorScore)\n      ? raw.vehicleColorScore\n      : undefined,\n  basises: (raw.basises ?? []).map(toBasis),\n  countryType: typeof raw.countryType === \"number\" ? raw.countryType : undefined,\n  countryTypeStr: normalizeNullableString(raw.countryTypeStr) ?? undefined,\n  vehicleInfoId: raw.vehicleInfoId ? normalizeObjectId(raw.vehicleInfoId) : null,\n  vehicleInfoTotalWeightInKilos:\n    typeof raw.vehicleInfoTotalWeightInKilos === \"number\" ? raw.vehicleInfoTotalWeightInKilos : null,\n  vehicleInfoTonnagePriceCategoryType:\n    typeof raw.vehicleInfoTonnagePriceCategoryType === \"number\" ? raw.vehicleInfoTonnagePriceCategoryType : undefined,\n  vehicleInfoTonnagePriceCategoryTypeStr:\n    normalizeNullableString(raw.vehicleInfoTonnagePriceCategoryTypeStr) ?? undefined,\n  barrierOpenDate: normalizeNullableString(raw.barrierOpenDate) ?? null,\n  isEmployee: raw.isEmployee === true,\n  manuallyApproved: raw.manuallyApproved === true,\n  manuallyApprovedByName: normalizeNullableString(raw.manuallyApprovedByName) ?? undefined,\n  isAtParkingLotUntilDate: normalizeNullableString(raw.isAtParkingLotUntilDate) ?? null,\n  isAtParkingLotUntilDatePolicyTypeStr: normalizeNullableString(raw.isAtParkingLotUntilDatePolicyTypeStr) ?? undefined,\n  isInventoryEnabledForLot: raw.isInventoryEnabledForLot === true,\n  linkedVisitId: normalizeNullableString(raw.linkedVisitId) ?? null,\n  linkedVisitLotName: normalizeNullableString(raw.linkedVisitLotName) ?? undefined,\n  linkedVisitLicensePlate: normalizeNullableString(raw.linkedVisitLicensePlate) ?? undefined,\n  linkedVisitCountryTypeStr: normalizeNullableString(raw.linkedVisitCountryTypeStr) ?? undefined,\n  isRemovable: raw.isRemovable !== false,\n  test: raw.test === true,\n  subscriptionVoucherIsValueCard: raw.subscriptionVoucherIsValueCard === true\n});\n\nconst fetchConfiguration = async (\n  organizationId: string,\n  options?: { force?: boolean; timeoutMs?: number }\n): Promise<YouparkConfiguration> => {\n  const normalizedOrganizationId = organizationId.trim();\n  if (!normalizedOrganizationId) {\n    throw new Error(CONFIG_ERROR);\n  }\n\n  if (!options?.force) {\n    const cached = configurationCacheByOrganizationId.get(normalizedOrganizationId);\n    if (cached && Date.now() - cached.fetchedAt < CONFIGURATION_CACHE_TTL_MS) {\n      return cached.data;\n    }\n\n    const pending = pendingConfigurationByOrganizationId.get(normalizedOrganizationId);\n    if (pending) {\n      return pending;\n    }\n  }\n\n  const requestPromise = (async () => {\n    const timeoutMs = Math.max(\n      0,\n      typeof options?.timeoutMs === \"number\" ? options.timeoutMs : CONFIGURATION_DEFAULT_TIMEOUT_MS\n    );\n    const controller = timeoutMs > 0 ? new AbortController() : null;\n    const timeoutId = controller ? setTimeout(() => controller.abort(), timeoutMs) : null;\n\n    try {\n      const response = await httpClient.get<RawConfigurationResponse>(\n        \"/Youpark/GetConfiguration\",\n        {\n          organizationId: normalizedOrganizationId\n        },\n        undefined,\n        controller?.signal ?? undefined\n      );\n\n      if (!response.ok) {\n        throw new Error(mapError(response.errorThrown, CONFIG_ERROR));\n      }\n\n      const data = (response.data ?? {}) as YouparkConfiguration;\n      configurationCacheByOrganizationId.set(normalizedOrganizationId, { data, fetchedAt: Date.now() });\n      return data;\n    } finally {\n      if (timeoutId) {\n        clearTimeout(timeoutId);\n      }\n      pendingConfigurationByOrganizationId.delete(normalizedOrganizationId);\n    }\n  })();\n\n  pendingConfigurationByOrganizationId.set(normalizedOrganizationId, requestPromise);\n  return requestPromise;\n};\n\nexport const youparkService = {\n  invalidateConfiguration(organizationId: string) {\n    const normalized = organizationId.trim();\n    configurationCacheByOrganizationId.delete(normalized);\n    pendingConfigurationByOrganizationId.delete(normalized);\n  },\n\n  fetchConfiguration,\n\n  async fetchConfigurationSummary(organizationId: string): Promise<ServiceResult<YouparkConfigurationSummary>> {\n    try {\n      const configuration = await fetchConfiguration(organizationId);\n\n      const organizationName = normalizeNullableString(configuration.organizationName) ?? \"\";\n      const lots = (configuration.lots ?? []).map(toLot).filter(lot => lot.id.length > 0 && lot.name.length > 0);\n      const areas = (configuration.areas ?? []).map(toArea).filter(area => area.id.length > 0 && area.name.length > 0);\n      const hasOnlyParkingLots = lots.length > 0 && lots.every(lot => lot.lotType === LotType.ParkingLot);\n      const allowBusinessInsights =\n        typeof configuration.allowBusinessInsights === \"boolean\"\n          ? configuration.allowBusinessInsights\n          : hasOnlyParkingLots;\n\n      return {\n        success: true,\n        data: {\n          organizationName,\n          lots,\n          areas,\n          hasOnlyParkingLots,\n          allowBusinessInsights\n        }\n      };\n    } catch (error) {\n      return { success: false, errorKey: mapError(error, CONFIG_ERROR) };\n    }\n  },\n\n  async fetchParkingVisits(\n    organizationId: string,\n    page: number,\n    lotIds: string[],\n    query?: string | null,\n    now?: string\n  ): Promise<ServiceResult<ParkingVisitsResponse>> {\n    const normalizedQueryValue = normalizeString(query);\n    const normalizedQuery = normalizedQueryValue.length >= 2 ? normalizedQueryValue : undefined;\n    const pageIndex = Math.max(0, page - 1);\n\n    try {\n      const response = await httpClient.get<RawLotVehiclesResponse>(\"/Youpark/GetVehiclesParkingLotsSummary\", {\n        organizationId,\n        now,\n        page: pageIndex,\n        query: normalizedQuery,\n        lotIds: lotIds.join(\",\")\n      });\n\n      if (!response.ok) {\n        return { success: false, errorKey: mapError(response.errorThrown, VISITS_ERROR) };\n      }\n\n      const data = response.data ?? {};\n      const visits = (data.vehicles ?? []).map(vehicle => toVisit(vehicle, LotType.ParkingLot));\n\n      return {\n        success: true,\n        data: {\n          totalBillableEarningsToday: data.totalBillableEarningsToday ?? 0,\n          totalBillableEarningsTodayMoney: data.totalBillableEarningsTodayMoney ?? \"\",\n          totalBillableVisitsTodayCount: data.totalBillableVisitsTodayCount ?? 0,\n          totalVisitsTodayCount: data.totalVisitsTodayCount ?? 0,\n          totalVehiclesNowCount: data.totalVehiclesNowCount ?? 0,\n          totalVehiclesSearchCount: data.totalVehiclesSearchCount ?? 0,\n          totalSubscriptionVouchersCount: data.totalSubscriptionVouchersCount ?? 0,\n          now: data.now ?? \"\",\n          isInventoryEnabled: data.isInventoryEnabled ?? false,\n          visits\n        }\n      };\n    } catch (error) {\n      return { success: false, errorKey: mapError(error, VISITS_ERROR) };\n    }\n  },\n\n  async fetchTollVisits(\n    organizationId: string,\n    page: number,\n    lotIds: string[]\n  ): Promise<ServiceResult<TollVisitsResponse>> {\n    const pageIndex = Math.max(0, page - 1);\n    try {\n      const response = await httpClient.get<RawLotVehiclesResponse>(\"/Youpark/GetVehiclesTollRoadSummary\", {\n        organizationId,\n        page: pageIndex,\n        lotIds: lotIds.join(\",\")\n      });\n\n      if (!response.ok) {\n        return { success: false, errorKey: mapError(response.errorThrown, VISITS_ERROR) };\n      }\n\n      const data = response.data ?? {};\n      const visits = (data.vehicles ?? []).map(vehicle => toVisit(vehicle, LotType.TollRoad));\n\n      return {\n        success: true,\n        data: {\n          totalBillableEarningsToday: data.totalBillableEarningsToday ?? 0,\n          totalBillableEarningsTodayMoney: data.totalBillableEarningsTodayMoney ?? \"\",\n          totalBillableVisitsTodayCount: data.totalBillableVisitsTodayCount ?? 0,\n          totalVisitsTodayCount: data.totalVisitsTodayCount ?? 0,\n          totalVisitsTodayEnterCount: data.totalVisitsTodayEnterCount ?? 0,\n          totalVisitsTodayExitCount: data.totalVisitsTodayExitCount ?? 0,\n          totalSubscriptionVouchersCount: data.totalSubscriptionVouchersCount ?? 0,\n          visits\n        }\n      };\n    } catch (error) {\n      return { success: false, errorKey: mapError(error, VISITS_ERROR) };\n    }\n  },\n\n  async fetchVideoMetadata(\n    lotId: string,\n    lotType: LotType,\n    alprResultId: string\n  ): Promise<ServiceResult<VideoMetadata>> {\n    try {\n      const response = await httpClient.get<VideoMetadata>(\"/Youpark/GetLotRecognitionImageUrl\", {\n        lotId,\n        lotType,\n        alprResultId\n      });\n\n      if (!response.ok) {\n        return { success: false, errorKey: mapError(response.errorThrown, VIDEO_ERROR) };\n      }\n\n      return { success: true, data: response.data };\n    } catch (error) {\n      return { success: false, errorKey: mapError(error, VIDEO_ERROR) };\n    }\n  },\n\n  async removeLotEnterResult(lotId: string, alprResultId: string): Promise<ServiceResult> {\n    try {\n      const response = await httpClient.delete(`/youpark/removelotenterresult/${lotId}/${alprResultId}`);\n      if (!response.ok) {\n        return { success: false, errorKey: mapError(response.errorThrown, REMOVE_ERROR) };\n      }\n      return { success: true };\n    } catch (error) {\n      return { success: false, errorKey: mapError(error, REMOVE_ERROR) };\n    }\n  },\n\n  async emptyParkingLots(lotIds: string[]): Promise<ServiceResult> {\n    try {\n      const response = await httpClient.put(\"/youpark/emptyparkinglots\", { lotIds });\n      if (!response.ok) {\n        return { success: false, errorKey: mapError(response.errorThrown, EMPTY_LOTS_ERROR) };\n      }\n      return { success: true };\n    } catch (error) {\n      return { success: false, errorKey: mapError(error, EMPTY_LOTS_ERROR) };\n    }\n  }\n};\n","import type { TranslationDictionary } from \"@common/i18n\";\n\nexport type LanguageTag = \"nb\" | \"en\";\n\nexport type TranslationNamespace =\n  | \"addressSearch\"\n  | \"anonymousTransaction\"\n  | \"applications\"\n  | \"audits\"\n  | \"bookings\"\n  | \"businessInsights\"\n  | \"camerasOverview\"\n  | \"common\"\n  | \"countries\"\n  | \"coupons\"\n  | \"enums\"\n  | \"error\"\n  | \"exports\"\n  | \"faq\"\n  | \"faqCategories\"\n  | \"fingerprint\"\n  | \"footer\"\n  | \"gdpr\"\n  | \"home\"\n  | \"invitations\"\n  | \"legal\"\n  | \"lotDocuments\"\n  | \"parkingRegister\"\n  | \"manualApproval\"\n  | \"manualApprovalReview\"\n  | \"map\"\n  | \"organizations\"\n  | \"payment\"\n  | \"paymentSources\"\n  | \"priceCategoryType\"\n  | \"priceMatrix\"\n  | \"priceMatrixAdmin\"\n  | \"profile\"\n  | \"receipts\"\n  | \"remit\"\n  | \"signIn\"\n  | \"statistics\"\n  | \"subscriptions\"\n  | \"system\"\n  | \"support\"\n  | \"telemetry\"\n  | \"tour\"\n  | \"trafficControl\"\n  | \"users\"\n  | \"vehicleRegistry\"\n  | \"vehicles\"\n  | \"youpark\"\n  | \"youparkPlus\"\n  | \"youparkReports\"\n  | \"youparkTodos\";\n\nexport const baseTranslationNamespaces: TranslationNamespace[] = [\n  \"common\",\n  \"countries\",\n  \"enums\",\n  \"priceCategoryType\",\n  \"footer\",\n  \"support\",\n  \"error\"\n];\n\nexport const supportedLanguages: LanguageTag[] = [\"nb\", \"en\"];\n\nconst baseCache = new Map<LanguageTag, TranslationDictionary>();\nconst baseLoading = new Map<LanguageTag, Promise<TranslationDictionary>>();\nconst namespaceCache = new Map<LanguageTag, Map<TranslationNamespace, TranslationDictionary>>();\nconst namespaceLoading = new Map<string, Promise<TranslationDictionary>>();\n\nconst namespaceCacheKey = (lang: LanguageTag, namespace: TranslationNamespace) => `${lang}:${namespace}`;\n\nconst resolveModule = (module: Record<string, unknown>, namespace?: TranslationNamespace): TranslationDictionary => {\n  if (namespace && namespace in module && typeof module[namespace] === \"object\") {\n    return module[namespace] as TranslationDictionary;\n  }\n  if (module.default && typeof module.default === \"object\") {\n    return module.default as TranslationDictionary;\n  }\n  throw new Error(`Missing translations for namespace ${namespace ?? \"base\"}`);\n};\n\nexport async function loadLanguage(lang: LanguageTag): Promise<TranslationDictionary> {\n  const cached = baseCache.get(lang);\n  if (cached) {\n    return cached;\n  }\n  const pending = baseLoading.get(lang);\n  if (pending) {\n    return pending;\n  }\n  const loadPromise = import(`./${lang}/base.ts`)\n    .then(module => {\n      const translations = resolveModule(module as Record<string, unknown>);\n      baseCache.set(lang, translations);\n      baseLoading.delete(lang);\n      return translations;\n    })\n    .catch(error => {\n      baseLoading.delete(lang);\n      throw error;\n    });\n\n  baseLoading.set(lang, loadPromise);\n  return loadPromise;\n}\n\nconst addNamespaceRoot = (\n  dictionary: TranslationDictionary,\n  namespace?: TranslationNamespace\n): TranslationDictionary => {\n  if (!namespace) {\n    return dictionary;\n  }\n  if (typeof dictionary === \"object\" && !Array.isArray(dictionary) && namespace in dictionary) {\n    return dictionary;\n  }\n  return { [namespace]: dictionary };\n};\n\nconst loadNamespace = async (lang: LanguageTag, namespace: TranslationNamespace) => {\n  const cache = namespaceCache.get(lang) ?? new Map<TranslationNamespace, TranslationDictionary>();\n  namespaceCache.set(lang, cache);\n  const cached = cache.get(namespace);\n  if (cached) {\n    return cached;\n  }\n  const key = namespaceCacheKey(lang, namespace);\n  const pending = namespaceLoading.get(key);\n  if (pending) {\n    return pending;\n  }\n  const loadPromise = import(`./${lang}/${namespace}.ts`)\n    .then(module => {\n      const translations = resolveModule(module as Record<string, unknown>, namespace);\n      const namespacedTranslations = addNamespaceRoot(translations, namespace);\n      cache.set(namespace, namespacedTranslations);\n      namespaceLoading.delete(key);\n      return namespacedTranslations;\n    })\n    .catch(error => {\n      namespaceLoading.delete(key);\n      throw error;\n    });\n\n  namespaceLoading.set(key, loadPromise);\n  return loadPromise;\n};\n\nexport async function loadLanguageNamespaces(\n  lang: LanguageTag,\n  namespaces: TranslationNamespace[]\n): Promise<TranslationDictionary[]> {\n  const uniqueNamespaces = Array.from(new Set(namespaces));\n  return Promise.all(uniqueNamespaces.map(namespace => loadNamespace(lang, namespace)));\n}\n\nexport function resolveNamespacesForRoute(routeName?: string | null): TranslationNamespace[] {\n  if (!routeName) {\n    return [];\n  }\n\n  if (routeName === \"sign-in\") {\n    return [\"signIn\"];\n  }\n\n  if (routeName === \"verify-fingerprint\") {\n    return [\"fingerprint\"];\n  }\n\n  if (routeName === \"home\") {\n    return [\"home\"];\n  }\n\n  if (routeName.startsWith(\"map\")) {\n    return [\"map\", \"subscriptions\", \"paymentSources\", \"vehicles\", \"anonymousTransaction\", \"priceMatrixAdmin\"];\n  }\n\n  if (routeName.startsWith(\"faq\") || routeName === \"customer-service\") {\n    return [\"faq\", \"payment\"];\n  }\n\n  if (routeName === \"gdpr\") {\n    return [\"gdpr\"];\n  }\n\n  if (routeName.includes(\"anonymoustransaction\")) {\n    return [\"anonymousTransaction\"];\n  }\n\n  if (routeName === \"tour\") {\n    return [\"tour\"];\n  }\n\n  if (\n    routeName === \"cookies\" ||\n    routeName === \"privacypolicy\" ||\n    routeName === \"terms\" ||\n    routeName === \"dataprocessors\"\n  ) {\n    return [\"legal\"];\n  }\n\n  if (\n    routeName === \"youpark-plus\" ||\n    routeName === \"youpark-plus-terms\" ||\n    routeName === \"youpark-plus-start\" ||\n    routeName === \"youpark-plus-status\"\n  ) {\n    return [\"youparkPlus\"];\n  }\n\n  if (routeName.startsWith(\"profile\")) {\n    return [\"profile\"];\n  }\n\n  if (routeName.startsWith(\"payment-sources\") || routeName.endsWith(\"-payment-source\")) {\n    return [\"paymentSources\", \"vehicles\"];\n  }\n\n  if (routeName.startsWith(\"payment\")) {\n    return [\"payment\"];\n  }\n\n  if (routeName.startsWith(\"vehicles\") || routeName.startsWith(\"add-vehicle\") || routeName.startsWith(\"edit-vehicle\")) {\n    return [\"vehicles\", \"paymentSources\"];\n  }\n\n  if (routeName === \"subscriptions\" || routeName.startsWith(\"subscription-\")) {\n    return [\"subscriptions\", \"paymentSources\", \"vehicles\"];\n  }\n\n  if (routeName.includes(\"invitation\")) {\n    return [\"subscriptions\", \"invitations\"];\n  }\n\n  if (routeName === \"coupons\") {\n    return [\"coupons\"];\n  }\n\n  if (routeName === \"bookings\") {\n    return [\"bookings\"];\n  }\n\n  if (routeName === \"receipts\") {\n    return [\"receipts\"];\n  }\n\n  if (routeName.startsWith(\"remit\")) {\n    return [\"remit\"];\n  }\n\n  if (routeName.startsWith(\"youpark\")) {\n    const namespaces: TranslationNamespace[] = [\"youpark\"];\n    if (routeName.startsWith(\"youpark-booking-reservations\")) {\n      namespaces.push(\"bookings\");\n    }\n    if (routeName.startsWith(\"youpark-subscriptions-\")) {\n      namespaces.push(\"priceMatrix\");\n    }\n    if (routeName.startsWith(\"youpark-customer-admin\")) {\n      namespaces.push(\"priceMatrixAdmin\");\n    }\n    if (routeName.startsWith(\"youpark-customer-admin-locations\")) {\n      namespaces.push(\"lotDocuments\", \"parkingRegister\");\n    }\n    if (routeName.startsWith(\"youpark-customer-register\")) {\n      namespaces.push(\"subscriptions\");\n    }\n    if (routeName.includes(\"insights\")) {\n      namespaces.push(\"businessInsights\");\n    }\n    return namespaces;\n  }\n\n  if (routeName === \"cameras-overview\") {\n    return [\"camerasOverview\"];\n  }\n\n  if (routeName.startsWith(\"applications\")) {\n    return [\"applications\"];\n  }\n\n  if (routeName.startsWith(\"users\") || routeName.startsWith(\"user-\")) {\n    return [\"users\"];\n  }\n\n  if (routeName.startsWith(\"organizations\")) {\n    return [\"organizations\", \"users\"];\n  }\n\n  if (routeName === \"manual-approval\") {\n    return [\"manualApproval\"];\n  }\n\n  if (routeName === \"manual-approval-review\") {\n    return [\"manualApprovalReview\"];\n  }\n\n  if (routeName === \"traffic-control\") {\n    return [\"trafficControl\"];\n  }\n\n  if (routeName === \"system\") {\n    return [\"system\"];\n  }\n\n  if (routeName === \"audits\") {\n    return [\"audits\"];\n  }\n\n  if (routeName === \"exports\") {\n    return [\"exports\"];\n  }\n\n  if (routeName.startsWith(\"statistics\")) {\n    return [\"statistics\"];\n  }\n\n  if (routeName.startsWith(\"telemetry\")) {\n    return [\"telemetry\"];\n  }\n\n  if (routeName === \"vehicle-registry\") {\n    return [\"vehicleRegistry\"];\n  }\n\n  if (routeName.startsWith(\"error-\")) {\n    return [\"error\"];\n  }\n\n  return [];\n}\n","let pendingPurchaseAction: string | null = null;\n\nexport const setPendingSubscriptionPurchaseAction = (action: string | null | undefined) => {\n  if (typeof action === \"string\") {\n    const normalized = action.trim();\n    pendingPurchaseAction = normalized.length > 0 ? normalized : null;\n    return;\n  }\n  pendingPurchaseAction = null;\n};\n\nexport const consumePendingSubscriptionPurchaseAction = (): string | null => {\n  const action = pendingPurchaseAction;\n  pendingPurchaseAction = null;\n  return action;\n};\n"],"names":["theme","inject","Error","translate","useTranslate","modes","isSidebar","computed","props","containerClass","currentModeIndex","index","currentMode","modeLabels","shortLabels","toggleTheme","nextIndex","getIcon","mode","IconSun","IconMoon","IconAuto","isOpen","message","toRefs","titleId","Math","descriptionId","resolvedVariant","iconComponent","IconCheck","IconAlertCircle","resolvedVariantClasses","resolvedTitle","key","resolvedActionLabel","close","emit","handleAction","panel","ref","previouslyFocused","restoreFocus","target","handlePanelKeydown","useDialogKeyboard","onUnmounted","watch","value","document","HTMLElement","nextTick","removeAfterEach","language","currentLanguage","languageOptions","setLanguage","isLanguageLoading","useLanguage","showDropdown","buttonRef","dropdownTop","router","useRouterContext","dropdownClasses","baseClasses","classes","dropdownStyle","toggleDropdown","event","top","parseFloat","window","onMounted","onBeforeUnmount","undefined","option","hasMessage","Boolean","showTrack","sizeMap","resolvedSize","spinnerSizeClass","iconSizeClass","ringTrackClass","ringWidth","ringSpinnerClass","baseClass","menuItems","IconChartBar","IconSignal","IconWindow","IconUsers","IconBook","IconDatabase","IconDownload","IconBankNote","IconCar","IconCheckCircle","IconCamera","IconShield","IconServer","IconBriefcase","sortedMenuItems","items","item","a","b","handleClose","itemClass","view","views","Array","isActive","action","ex","activeView","navigateTo","showMobileSidebar","useNavigation","config","useAppConfig","canAccessYouParkCustomer","permissions","lots","usePermissions","openQuickNav","useQuickNav","publicViews","Set","isRestrictedView","isAdministrationExpanded","adminViews","isMyAreasExpanded","showAdminPopup","adminPopupTop","adminContentRef","myAreasContentRef","adminContentHeight","myAreasContentHeight","toggleAdministration","toggleMyAreas","toggleAdminPopup","viewportHeight","popupMaxHeight","clickPosition","spaceBelow","spaceAbove","closeAdminPopup","navigationLocks","lastNavigation","runNavigationWithLock","now","Date","lastView","timestamp","nextLocks","updatedLocks","handleNavigate","handleNavigateToYouparkCustomers","handleNavigateToYouparkCustomersRemit","handleMapNavigate","isFaqActive","isVehiclesActive","isPaymentViewActive","isPaymentSourcesActive","isSubscriptionsActive","showAdministrationMenu","hasAdministrationAccess","hasMainNavigationItems","measureHeight","element","updateSectionHeights","adminContentStyle","myAreasContentStyle","handleResize","lot","userProfile","useProfile","route","useRouteContext","isAuthenticated","isImpersonated","remainingTimeMs","showTimer","formattedTime","totalSeconds","hours","minutes","pad","num","String","cardAppearance","confirmSignOut","signOut","initials","fullName","nameParts","handleSignOut","handleNavigateToProfile","handleGuestSignIn","redirectUrl","buildAuthRedirectUrl","isDark","routeContext","viewKey","routeViewKey","viewGroup","params","p","routeName","emitPendingChange","fullWidthViewSet","getViewContainerClass","layout","alignmentClass","Component","centered","contactFormRoute","footerLinks","link","openMobileSidebar","canShowQuickNav","closeMobileSidebar","sidebarRef","wasOpen","Promise","Object","instance","getCurrentInstance","TRANSLATE_LANGUAGE_KEY","values","i18nTranslate","watchers","WeakMap","Symbol","translateDirective","el","binding","translation","JSON","languageRef","resolveLanguageRef","internalInstance","provides","candidate","stopWatch","LotType","LotBusinessModelType","AreaType","CountryType","UserPaymentSourceType","VatRateType","LogLevel","PowerAdapterType","BarrierOpenerType","YouparkAccessApplicationType","CollectionProviderVendorSourceType","RemitCriteriaType","RemitAllocationTrancheValueType","YoupayTransactionVendorType","SubscriptionBillableOccurenceType","SubscriptionBillablePaymentStateType","SubscriptionValidityPeriodType","VehicleInfoTonnagePriceCategoryType","LotSizeCategory","DirectionType","ApplicationType","SubscriptionCommunicationType","SharedSubscriptionPricingType","SharedSubscriptionInvoicingType","TodoStatusType","LotBookingReservationType","LotBookingReservationChangeLogType","PriceMatrixCalculatorType","PriceMatrixPeriodType","PriceMatrixPricePerUnitType","RemitPaymentStatus","YouparkInvoiceCreditReasonType","YoupayCreditTransactionReasonType","SECURE_ZONE_ERROR_CODE","AUTH_REQUIRED_ERROR_CODE","SECURE_ZONE_REDIRECT_PATH","AUTH_REQUIRED_REDIRECT_PATH","secureZoneRedirectTriggered","authRedirectTriggered","normalizeErrorCode","trimmed","triggerSecureZoneRedirect","triggerAuthRequiredRedirect","isAuthRedirectTriggered","currentUrl","encodeURIComponent","ensureSecureZoneRedirectFromError","normalized","ensureSecureZoneRedirectFromResponse","response","body","XhrStatus","data","ok","statusCode","errorThrown","XhrStatusOk","XhrStatusError","token","antiForgeryToken","url","headers","signal","cors","buildQueryString","form","tokenField","input","requestAnimationFrame","method","files","extraHeaders","formData","fileEntries","FormData","fileIndex","Headers","contentTypeJson","console","request","fetch","redirectErrorCode","isJsonResponse","init","error","contentDisposition","filename","parsedName","getContentDispositionFilename","file","File","downloadUrl","htmlAnchorElement","setTimeout","triggerClick","anchorElement","MouseEvent","Request","URL","languageHeader","dictionary","isObject","o","mergeDictionaries","source","result","current","messages","extend","template","fragments","localizationText","isNullOrWhiteSpace","_","resolveSupportedLanguage","isNullOrUndefined","isNullUndefinedOrWhiteSpace","debounce","func","wait","timeout","args","clearTimeout","EnumValues","e","x","v","getEnumValue","enumeration","enumValues","stringValue","normalizedString","intValue","parseInt","getEnumName","isEnumValue","allWeightTonnageTypes","isWeightTonnageType","containsAllWeightTonnageTypes","weightTonnageTypes","enumValue","isOnlyAllWeightTonnageTypes","containsSameTonnageType","lhs","rhs","lhsTonnageType","rhsTonnageType","downloadBlob","openInNewTab","getUrlParam","name","escapedName","match","pattern","RegExp","valueStart","nextDelimiter","hashIndex","fragment","rawValue","decodeURIComponent","fallback","part","rawKey","rawValueParts","valueCandidate","decodeContentDispositionValue","resolve","buildQueryStringKeyValuePairs","encoded","unquoted","encodingMatch","decodePercentEncodedValue","isRecord","resolveServiceErrorKey","normalizeApiString","parseApiResponsePayload","parseApiErrorPayload","normalizeApiResponseErrors","entry","fieldName","normalizeErrorMessages","asResponseStatus","record","mapServiceErrorKeyWithPrefixes","map","prefixes","prefix","findFirstCode","errors","errorCode","extractErrorCode","parsedError","directCode","nestedStatus","nestedMessage","responseStatusCode","nestedErrors","errorsCode","readResponseErrorCode","payload","code","resolvedError","resolvedData","responseStatus","responseStatusNestedCode","dataCode","ObjectIdEmpty","isObjectIdEmpty","objectId","isObjectId","isObjectIdValid","normalizeObjectId","normalizeString","id","structuredClone","unique","formatLicensePlate","sanitizeLicenseplate","extractDigits","matches","toTitleCase","word","toPersonNameCase","applyDelimiter","delimiter","segment","stripHtmlRegex","sanitizeText","text","sanitizedText","removeHtml","html","previousLength","sanitized","iterations","containsHtml","inputString","normalizeStringWithFallback","toTrimmedString","toStringValue","sharedMapViewState","getMapViewState","filter","mapView","defaultPermissions","defaultLanguage","anonymousProfile","toStringOrNull","toStringOrEmpty","normalizeCookieNames","raw","createAnonymousConfig","languageCookieTag","cookieNamesRaw","appConfig","normalizeConfig","languageCookieTagValue","normalizedLanguageCookieTag","normalizeUserProfile","profile","normalizeDevices","devices","device","normalizeDeviceOrigin","normalizeLots","loadConfigFromDOM","configElement","err","maybeTurnstileSiteKey","adoptServerLanguage","persistStartingLanguage","normalizeLanguageTag","toLanguageTag","cookieLanguage","serverRenderedLanguage","resolvedMessage","translateFn","useErrorModal","readDashboardAccess","translateKey","turnstileSiteKey","isEmployee","permission","Language","dayjs","customParseFormat","getLocale","getDayjsLocale","parseToDate","parsedDate","direct","localeFormats","localeCandidate","dayjsLocale","formats","localized","strict","createDateFormatter","options","Intl","formatDuration","parts","segments","append","count","singular","plural","lastSegment","conjunctionTranslation","plate","amount","removeTrailingZeros","locale","suffix","formatted","decimalSeparator","zeroFraction","date","datePart","timePart","month","year","re","sharedErrorModalState","state","applyOptions","showError","msg","t","showSuccess","confirm","handler","languageState","languageToTagMap","sharedLanguageState","Map","inflightNamespaceLoads","languageGeneration","appliedLanguageTag","appliedLanguageGeneration","languageRevision","languageSignal","updateLoadingState","delta","getLanguageTag","lang","languageStillSelected","tag","generation","loadAndInitLanguage","preloadNamespaces","existingPromise","applied","loadPromise","translations","loadLanguage","namespaces","namespaceDictionaries","loadLanguageNamespaces","baseTranslationNamespaces","nextLoaded","namespace","i18nInit","i18nExtend","activeLanguageIsApplied","ensureTranslationNamespaces","pendingBase","loaded","missing","shareInflight","inflight","start","existing","promise","loadGeneration","dictionaries","persistLanguagePreference","profileService","preferenceWrite","unchangedServerLanguage","enqueueLanguagePreference","initializeLanguage","newLang","oldLang","previousNamespaces","preload","normalizeLanguageInput","opt","resolved","languageAlreadySelected","navigatingState","useNavigatingState","isNavigating","navigationTimeout","persistentQueryKeys","sharedNavigationState","useMapViewState","deriveMapView","mapViewState","mapRoutes","filterQuery","determineViewFromPath","pathname","accountIndex","viewSegment","subSegment","segmentToView","routeParams","resolvePersistentQuery","currentQuery","query","persistentQuery","mergedQueryObject","mergedQuery","currentRoute","currentParams","sameParams","targetQuery","sameQuery","sameHash","updateUrlParams","toggleMobileSidebar","setViewLoading","isLoading","nextSet","isViewLoading","sharedProfileState","setBackendProfile","nextProfile","loadProfile","freshProfile","normalizeResult","organizationId","areaId","organizationName","areaName","normalizedLots","resolvedName","resolvedId","searchService","httpClient","toQuickNavYouParkResult","quickNavService","mapped","results","r","byOrgId","RECENT_SEARCHES_KEY","FAVORITES_KEY","MENU_ITEMS","saveRecentSearches","localStorage","saveFavorites","sharedQuickNavState","sharedQuickNavController","sharedQuickNavScope","sharedDebouncedSearch","getQuickNavState","loadRecentSearches","stored","parsed","loadFavorites","saveToRecent","recentSearches","updated","searchQuery","selectedIndex","selectedAction","favorites","searchMode","canAccessOrganization","canAccessRemit","canAccessYoupark","canShow","filteredRecentSearches","favoriteIds","f","isFavorite","availableMenuItems","perm","menuResults","executeSearch","performSearch","open","navigateToOrganization","navigateToYoupark","navigateToRemit","queueDashboardScrollReset","navigateToMenuItem","effectScope","handleKeyDown","displayItems","handleGlobalKeyDown","removeFromRecent","totalItems","clearRecentSearches","toggleFavorite","RouteContextKey","RouterContextKey","useRouter","provide","useRoute","STORAGE_KEY","DARK_CLASS","getSystemPreference","isNightTime","hour","resolveTheme","preference","useTheme","preferenceRef","mediaQuery","mediaQueryListener","timeUpdateTimer","storageListener","resolvedThemeRef","clearScheduledUpdates","scheduleTimeUpdate","nextMorning","nextEvening","delay","nextTransition","updateTheme","applyTheme","root","newPreference","activeMode","setTheme","loadPreference","cleanup","openDialogs","unregister","handleWindowKeydown","registered","dialog","focusable","first","last","active","defaultRedirectUrl","genericErrorKey","normalizeSignInResponse","step","identifier","toOptionalString","tfaChannel","tfaChallenge","errorKey","siteKey","tfaCode","completed","successRedirectUrl","buildResult","ensureAntiForgeryToken","isEmail","mapUpdateValidationErrors","toServiceResult","fallbackError","deviceId","updates","updatePayload","requestValidationErrors","payloadValidationErrors","caughtValidationErrors","phoneNumber","enabled","adminViewRules","adminRulesByView","def","canAccessYouparkSection","canAccessAdminView","rule","youparkViews","youparkCustomerAdminViews","canImportFreeVisits","canAccessRestrictedView","canAccessYouparkOrganization","context","authService","storageKey","isBrowser","readRawContext","writeContext","applyDocumentTitle","title","isContainerTestEnvironment","isMapPage","navItems","handleSignInClick","handleSignOutClick","isSuspensePending","showLoadingBar","loadingBarTimeout","isChromeFreeLayout","showLayoutChrome","mainClasses","$event","AuthenticatedDashboardShell","defineAsyncComponent","provideRouteContext","provideRouterContext","applyLanguage","getQueryValue","normalizeThemeMode","isEmbedded","parseEmbeddedFlag","updateEmbeddingQuery","nextQuery","normalizedValue","changed","controller","handleExternalLinks","linkUrl","isNewTab","errorOpen","errorTitle","errorMessage","errorVariant","errorActionLabel","closeError","confirmError","dashboardStylesheetApplied","applyDashboardStylesheet","targetDocument","fallbackMilliseconds","stylesheetLink","fallbackTimer","finish","prefetchInitialDashboardRoute","utc","timezone","appInstance","createApp","routeRequiredParams","hasRequiredParams","requiredParams","param","upgradeWebBrowserRouteName","adminRoutes","getRouteParamOrEmpty","organizationDetailSections","path","section","getRouteParam","authRoutes","bookingsRoutes","errorRoutes","faqRoutes","homeRoutes","legalRoutes","resolveAreaId","paymentRoutes","profileRoutes","remitRoutes","subscriptionsRoutes","lotConfigurationView","lotConfigurationTabRouteByKey","youparkRoutes","to","from","configuration","youparkService","lotConfigurationTabKeys","tab","routeInfo","resolveOrganizationId","routes","accountSegment","segmentIndex","base","dashboardHistoryBase","createRouter","createWebHistory","savedPosition","shouldForceScrollReset","toGroup","resolveScrollGroup","fromGroup","toHasParams","resolveNamespacesForRoute","createAuthGuard","anonymousRouteNames","subscriptionIdQuery","purchaseTemplateQuery","setPendingSubscriptionPurchaseAction","extractAccountNsAction","queryActionRaw","registerCardFlowAction","toParams","clearCardFlowContext","translatedRoute","translateLegacyHash","initialTitle","updateDocumentTitle","titleKey","translatedTitle","dashboardParam","currentName","hash","applySideEffects","normalizedHash","withoutMarker","sectionCandidate","queryParts","sectionToken","ampersandTokens","querySegments","URLSearchParams","subscriptionId","templateId","actionValue","hasAction","loadCardFlowContext","sectionMap","started","dependencies","firstQueryValue","destinationAfterAccess","canAccessRoute","prefetchDashboardRoute","prefetchParamsFromPath","components","matched","recordComponents","component","preloadRouteComponent","beforeEnterTarget","location","beforeEnter","guard","followBeforeEnter","seen","hop","guardTarget","prefetchNameForLocation","access","cardFlowOrigin","selectInitialPrefetchRoute","origin","prefetchDashboardUrl","browserPath","followEntryGuards","accessName","entryName","followRecordRedirects","toRouterPath","rest","search","intentBindings","targetFrom","intentBinding","prefetchTarget","readRouteParam","resetDashboardScrollPosition","rootElement","scrollContainer","fullPath","normalizedBase","CONFIG_ERROR","VISITS_ERROR","VIDEO_ERROR","REMOVE_ERROR","EMPTY_LOTS_ERROR","errorMap","mapError","configurationCacheByOrganizationId","pendingConfigurationByOrganizationId","toArea","toLot","toBasis","normalizeNullableString","duration","toVisit","lotType","Number","fetchConfiguration","normalizedOrganizationId","cached","pending","requestPromise","timeoutMs","AbortController","timeoutId","areas","area","hasOnlyParkingLots","allowBusinessInsights","page","lotIds","normalizedQueryValue","normalizedQuery","pageIndex","visits","vehicle","lotId","alprResultId","baseCache","baseLoading","namespaceCache","namespaceLoading","resolveModule","module","loadNamespace","cache","namespacedTranslations","uniqueNamespaces","pendingPurchaseAction"],"mappings":"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S,QAnCF,aAAJ,IAAI,EACH,MAAK,U,6IAA8J,AAAC,GAAE,EAAmC,EAAE,AAAD,EAAhC,GAAa,gBAAkB,oB,IAK1M,SA4BM,MA5BN,EA4BM,CA3BJ,SAYM,MAZN,EAYM,CAXJ,SAEa,GAFA,GAAI,CAAE,KAAM,SAAU,EAAG,aAAW,UAAU,MAAM,a,oBAC/D,IAAwB,CAAxB,SAAwB,KAAd,MAAM,KAAM,G,QAExB,SAOS,UANP,KAAK,SACL,aAAW,wBACX,MAAM,yJACL,QAAK,Y,QAAE,SAAAA,IAAA,SAAAA,MAAA,G,GAER,SAAyB,KAAlB,MAAM,SAAU,G,IAI3B,SAEM,MAFN,EAEM,CADJ,SAAoB,K,EAGtB,SAEM,MAFN,EAEM,CADJ,SAAgC,KAAnB,OAAO,SAAU,G,EAGhC,SAEM,MAFN,EAEM,CADJ,SAAmB,K,EAGrB,SAAkB,K,sCCrCxB,IAAI,EAAM,CACR,gBAAiB,CACf,QACA,CACE,KACD,CACF,CACD,yBAA0B,CACxB,QACA,CACE,KACD,CACF,CACD,0BAA2B,CACzB,QACA,CACE,KACD,CACF,CACD,qCAAsC,CACpC,QACA,CACE,IACD,CACF,CACD,mBAAoB,CAClB,QACA,CACE,KACD,CACF,CACD,gBAAiB,CACf,QACA,CACE,KACD,CACF,CACD,yBAA0B,CACxB,QACA,CACE,KACD,CACF,CACD,wBAAyB,CACvB,QACA,CACE,KACD,CACF,CACD,qCAAsC,CACpC,QACA,CACE,KACD,CACF,CACD,gBAAiB,CACf,QACA,CACE,KACD,CACF,CACD,oCAAqC,CACnC,QACA,CACE,KACD,CACF,CACD,4BAA6B,CAC3B,QACA,CACE,KACD,CACF,CACD,cAAe,CACb,QACA,CACE,KACD,CACF,CACD,qBAAsB,CACpB,QACA,CACE,KACD,CACF,CACD,qCAAsC,CACpC,QACA,CACE,KACD,CACF,CACD,iCAAkC,CAChC,QACA,CACE,KACD,CACF,CACD,mBAAoB,CAClB,QACA,CACE,KACD,CACF,CACD,uBAAwB,CACtB,QACA,CACE,KACD,CACF,CACD,mBAAoB,CAClB,QACA,CACE,KACD,CACF,CACD,4BAA6B,CAC3B,QACA,CACE,KACD,CACF,CACD,kBAAmB,CACjB,QACA,CACE,KACD,CACF,CACD,sBAAuB,CACrB,QACA,CACE,KACD,CACF,CACD,0BAA2B,CACzB,QACA,CACE,KACD,CACF,CACD,wBAAyB,CACvB,QACA,CACE,KACD,CACF,CACD,mBAAoB,CAClB,QACA,CACE,KACD,CACF,CACD,eAAgB,CACd,QACA,CACE,KACD,CACF,CACD,wBAAyB,CACvB,QACA,CACE,KACD,CACF,CACD,qCAAsC,CACpC,QACA,CACE,KACD,CACF,CACD,iBAAkB,CAChB,QACA,CACE,KACD,CACF,CACD,iBAAkB,CAChB,QACA,CACE,KACD,CACF,CACD,qBAAsB,CACpB,QACA,CACE,KACD,CACF,CACD,uBAAwB,CACtB,QACA,CACE,KACD,CACF,CACD,uCAAwC,CACtC,QACA,CACE,KACD,CACF,CACD,kBAAmB,CACjB,QACA,CACE,KACD,CACF,CACD,kBAAmB,CACjB,QACA,CACE,KACD,CACF,CACD,0BAA2B,CACzB,QACA,CACE,KACD,CACF,CACD,wBAAyB,CACvB,QACA,CACE,KACD,CACF,CACD,8BAA+B,CAC7B,QACA,CACE,IACD,CACF,CACD,yBAA0B,CACxB,QACA,CACE,KACD,CACF,CACD,kBAAmB,CACjB,QACA,CACE,KACD,CACF,CACD,0BAA2B,CACzB,QACA,CACE,IACD,CACF,CACD,4CAA6C,CAC3C,QACA,CACE,IACD,CACF,CACD,iBAAkB,CAChB,QACA,CACE,KACD,CACF,CACD,oCAAqC,CACnC,QACA,CACE,IACD,CACF,CACD,iBAAkB,CAChB,QACA,CACE,KACD,CACF,CACD,wBAAyB,CACvB,QACA,CACE,KACD,CACF,CACD,kBAAmB,CACjB,QACA,CACE,KACD,CACF,CACD,+BAAgC,CAC9B,QACA,CACE,IACD,CACF,CACD,eAAgB,CACd,QACA,CACE,KACD,CACF,CACD,sBAAuB,CACrB,QACA,CACE,KACD,CACF,CACD,+BAAgC,CAC9B,QACA,CACE,KACD,CACF,CACD,cAAe,CACb,QACA,CACE,KACD,CACF,CACD,kCAAmC,CACjC,OACA,CACE,KACD,CACF,CACD,uCAAwC,CACtC,QACA,CACE,KACD,CACF,CACD,uBAAwB,CACtB,OACA,CACE,KACD,CACF,CACD,uBAAwB,CACtB,QACA,CACE,KACD,CACF,CACD,cAAe,CACb,QACA,CACE,GACA,KACD,CACF,CACD,eAAgB,CACd,QACA,CACE,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACD,CACF,CACD,iBAAkB,CAChB,QACA,CACE,KACD,CACF,CACD,gBAAiB,CACf,OACA,CACE,KACD,CACF,CACD,kBAAmB,CACjB,QACA,CACE,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACD,CACF,CACD,4CAA6C,CAC3C,QACA,CACE,KACD,CACF,CACD,eAAgB,CACd,QACA,CACE,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACD,CACF,CACD,kBAAmB,CACjB,QACA,CACE,KACD,CACF,CACD,+BAAgC,CAC9B,OACA,CACE,KACD,CACF,CACD,kBAAmB,CACjB,QACA,CACE,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACD,CACF,CACD,wBAAyB,CACvB,QACA,CACE,KACD,CACF,CACD,iBAAkB,CAChB,QACA,CACE,KACD,CACF,CACD,oBAAqB,CACnB,OACA,CACE,KACD,CACF,CACD,eAAgB,CACd,QACA,CACE,KACD,CACF,CACD,2BAA4B,CAC1B,QACA,CACE,KACD,CACF,CACD,eAAgB,CACd,QACA,CACE,KACD,CACF,CACD,yBAA0B,CACxB,QACA,CACE,KACD,CACF,CACD,gBAAiB,CACf,QACA,CACE,KACD,CACF,CACD,mBAAoB,CAClB,QACA,CACE,KACD,CACF,CACD,uBAAwB,CACtB,QACA,CACE,KACD,CACF,CACD,0BAA2B,CACzB,QACA,CACE,KACD,CACF,CACD,iBAAkB,CAChB,OACA,CACE,KACD,CACF,CACD,sBAAuB,CACrB,QACA,CACE,KACD,CACF,CACD,yBAA0B,CACxB,QACA,CACE,KACD,CACF,CACD,gBAAiB,CACf,QACA,CACE,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,GACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACD,CACF,CACD,sBAAuB,CACrB,QACA,CACE,KACD,CACF,CACD,mBAAoB,CAClB,QACA,CACE,KACD,CACF,CACD,0BAA2B,CACzB,QACA,CACE,KACD,CACF,CACD,+BAAgC,CAC9B,OACA,CACE,KACD,CACF,CACD,iCAAkC,CAChC,QACA,CACE,KACD,CACF,CACD,mBAAoB,CAClB,QACA,CACE,KACD,CACF,CACD,cAAe,CACb,QACA,CACE,KACA,KACD,CACF,CACD,+BAAgC,CAC9B,QACA,CACE,KACD,CACF,CACD,0BAA2B,CACzB,QACA,CACE,GACD,CACF,CACD,2BAA4B,CAC1B,QACA,CACE,KACD,CACF,CACD,kBAAmB,CACjB,QACA,CACE,IACD,CACF,CACD,+BAAgC,CAC9B,OACA,CACE,KACD,CACF,CACD,kBAAmB,CACjB,QACA,CACE,KACD,CACF,CACD,sBAAuB,CACrB,QACA,CACE,KACD,CACF,CACD,wBAAyB,CACvB,QACA,CACE,KACD,CACF,CACD,yBAA0B,CACxB,QACA,CACE,KACD,CACF,CACD,0BAA2B,CACzB,QACA,CACE,KACD,CACF,CACD,sBAAuB,CACrB,QACA,CACE,GACD,CACF,CACD,oBAAqB,CACnB,QACA,CACE,KACD,CACF,CACD,4BAA6B,CAC3B,QACA,CACE,KACD,CACF,CACD,wBAAyB,CACvB,QACA,CACE,KACD,CACF,CACD,eAAgB,CACd,QACA,CACE,KACD,CACF,CACD,oBAAqB,CACnB,QACA,CACE,KACD,CACF,CACD,eAAgB,CACd,QACA,CACE,KACD,CACF,CACD,gBAAiB,CACf,QACA,CACE,KACD,CACF,CACD,iBAAkB,CAChB,QACA,CACE,KACD,CACF,CACD,kCAAmC,CACjC,QACA,CACE,KACD,CACF,CACD,4BAA6B,CAC3B,QACA,CACE,KACD,CACF,CACD,yBAA0B,CACxB,QACA,CACE,IACD,CACF,CACD,gBAAiB,CACf,QACA,CACE,KACD,CACF,CACD,8BAA+B,CAC7B,QACA,CACE,KACD,CACF,CACD,sBAAuB,CACrB,QACA,CACE,KACD,CACF,CACD,yBAA0B,CACxB,OACA,CACE,KACD,CACF,CACD,kBAAmB,CACjB,QACA,CACE,KACD,CACF,CACD,mBAAoB,CAClB,QACA,CACE,IACD,CACF,CACD,sBAAuB,CACrB,QACA,CACE,KACD,CACF,CACD,kBAAmB,CACjB,QACA,CACE,KACD,CACF,CACD,wBAAyB,CACvB,QACA,CACE,KACD,CACF,CACD,iBAAkB,CAChB,QACA,CACE,KACD,CACF,CACD,oBAAqB,CACnB,QACA,CACE,KACD,CACF,CACD,wBAAyB,CACvB,QACA,CACE,KACD,CACF,CACD,sBAAuB,CACrB,QACA,CACE,KACD,CACF,CACD,gBAAiB,CACf,QACA,CACE,KACD,CACF,CACD,gBAAiB,CACf,QACA,CACE,KACA,KACA,KACA,IACA,KACA,KACA,KACA,GACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KA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"}