@simple-reporting/base 1.0.37 → 1.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/dev/.ddev/config.yaml +1 -1
  2. package/dev/.idea/codeStyles/Project.xml +61 -0
  3. package/dev/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/dev/.idea/copilot.data.migration.ask2agent.xml +6 -0
  5. package/dev/.idea/deployment.xml +14 -0
  6. package/dev/.idea/inspectionProfiles/Project_Default.xml +6 -0
  7. package/dev/.idea/modules.xml +8 -0
  8. package/dev/.idea/nsfd_report-demo-mms.iml +8 -0
  9. package/dev/.idea/php.xml +19 -0
  10. package/dev/.idea/prettier.xml +6 -0
  11. package/dev/.idea/vcs.xml +6 -0
  12. package/dev/.idea/watcherTasks.xml +4 -0
  13. package/dev/livingdocs.config.json +1192 -27
  14. package/dev/package.json +3 -1
  15. package/dev/src/App.vue +1 -2
  16. package/dev/src/Autoload.ts +1 -1
  17. package/dev/src/Dialog.vue +12 -61
  18. package/dev/src/assets/fonts/FontAwesome/font.scss +2 -0
  19. package/dev/src/assets/fonts/Inter/inter.scss +2 -4
  20. package/dev/src/assets/images/accordion-minus.svg +4 -0
  21. package/dev/src/assets/images/accordion-plus.svg +4 -0
  22. package/dev/src/assets/images/arrow-left.svg +5 -0
  23. package/dev/src/assets/images/arrow-right.svg +5 -0
  24. package/dev/src/assets/images/arrow-up.svg +5 -0
  25. package/dev/src/assets/images/chevron-down.svg +1 -0
  26. package/dev/src/assets/images/chevron-left.svg +1 -0
  27. package/dev/src/assets/images/chevron-right.svg +1 -0
  28. package/dev/src/assets/images/chevron-up.svg +1 -0
  29. package/dev/src/assets/images/close.svg +5 -0
  30. package/dev/src/assets/images/download.svg +6 -0
  31. package/dev/src/assets/images/facebook.svg +1 -0
  32. package/dev/src/assets/images/instagram.svg +1 -0
  33. package/dev/src/assets/images/language.svg +1 -0
  34. package/dev/src/assets/images/linkedIn.svg +1 -0
  35. package/dev/src/assets/images/logo.svg +1 -0
  36. package/dev/src/assets/images/menu-light.svg +3 -0
  37. package/dev/src/assets/images/menu.svg +3 -0
  38. package/dev/src/assets/images/nav-arrow-left.svg +3 -0
  39. package/dev/src/assets/images/nav-arrow-right.svg +3 -0
  40. package/dev/src/assets/images/search.svg +5 -0
  41. package/dev/src/assets/images/twitter.svg +1 -0
  42. package/dev/src/assets/images/xing.svg +1 -0
  43. package/dev/src/assets/scss/app.scss +9 -0
  44. package/dev/src/assets/scss/components/button.scss +37 -0
  45. package/dev/src/assets/scss/components/dialog.scss +84 -0
  46. package/dev/src/assets/scss/components/fontawesome.scss +56 -0
  47. package/dev/src/assets/scss/components/note/accordion.scss +55 -41
  48. package/dev/src/assets/scss/editor.scss +5 -5
  49. package/dev/src/assets/scss/general.scss +29 -2
  50. package/dev/src/assets/scss/margins.scss +57 -0
  51. package/dev/src/assets/scss/pdf.scss +0 -32
  52. package/dev/src/assets/scss/placeholders/breakout-grid.scss +34 -0
  53. package/dev/src/assets/scss/placeholders/button.scss +230 -0
  54. package/dev/src/assets/scss/placeholders/fontawesome.scss +7 -0
  55. package/dev/src/assets/scss/placeholders/grid.scss +354 -0
  56. package/dev/src/assets/scss/web.scss +17 -21
  57. package/dev/src/assets/scss/xbrl.scss +1 -0
  58. package/dev/src/components/Button/Default/Action.vue +65 -0
  59. package/dev/src/components/Button/Default/Content.vue +225 -0
  60. package/dev/src/components/Button/Default/ExternalLink.vue +63 -0
  61. package/dev/src/components/Button/Default/InternalLink.vue +64 -0
  62. package/dev/src/components/Button/Default.vue +101 -0
  63. package/dev/src/components/Page/MainNavigation.vue +96 -6
  64. package/dev/src/components/Page/MetaNavigation.vue +116 -0
  65. package/dev/src/components/Page/PrevNext.vue +140 -70
  66. package/dev/src/components/PageFooter.vue +405 -0
  67. package/dev/src/components/PageHeader.vue +828 -0
  68. package/dev/src/components/{Page/Main.vue → PageMain.vue} +11 -0
  69. package/dev/src/composables/globalLinks.ts +46 -0
  70. package/dev/src/composables/isDesktopView.ts +18 -0
  71. package/dev/src/composables/mainNavigation.ts +11 -0
  72. package/dev/src/entries/pdf.ts +5 -5
  73. package/dev/src/i18n/index.ts +1 -1
  74. package/dev/src/locales/de.json +40 -0
  75. package/dev/src/locales/en.json +40 -0
  76. package/dev/src/router/index.ts +1 -2
  77. package/dev/src/views/DevView.vue +1 -835
  78. package/dev/src/views/PageNotFound.vue +3 -69
  79. package/dev/srl.config.json +34 -49
  80. package/livingdocs/010.Titles/010.title-h1/scss/_spacing-variations.scss +17 -0
  81. package/livingdocs/010.Titles/010.title-h1/scss/general.scss +4 -0
  82. package/livingdocs/010.Titles/020.title-h2/scss/_spacing-variations.scss +12 -0
  83. package/livingdocs/010.Titles/020.title-h2/scss/general.scss +4 -0
  84. package/livingdocs/010.Titles/020.title-h2/title-h2.html +2 -1
  85. package/livingdocs/010.Titles/030.title-h3/scss/_spacing-variations.scss +13 -0
  86. package/livingdocs/010.Titles/030.title-h3/scss/general.scss +5 -1
  87. package/livingdocs/010.Titles/030.title-h3/title-h3.html +2 -1
  88. package/livingdocs/010.Titles/040.title-h4/scss/_spacing-variations.scss +12 -0
  89. package/livingdocs/010.Titles/040.title-h4/scss/general.scss +5 -1
  90. package/livingdocs/010.Titles/040.title-h4/title-h4.html +2 -1
  91. package/livingdocs/010.Titles/050.title-h5/scss/_spacing-variations.scss +11 -0
  92. package/livingdocs/010.Titles/050.title-h5/scss/general.scss +4 -0
  93. package/livingdocs/010.Titles/060.title-h6/scss/_spacing-variations.scss +10 -0
  94. package/livingdocs/010.Titles/060.title-h6/scss/general.scss +4 -0
  95. package/livingdocs/020.Text/010.lead/scss/_spacing-variations.scss +5 -0
  96. package/livingdocs/020.Text/010.lead/scss/general.scss +4 -0
  97. package/livingdocs/020.Text/020.paragraph/scss/_spacing-variations.scss +22 -0
  98. package/livingdocs/020.Text/020.paragraph/scss/general.scss +4 -0
  99. package/livingdocs/020.Text/060.quote-with-portrait/scss/_spacing-variations.scss +7 -0
  100. package/livingdocs/020.Text/060.quote-with-portrait/scss/general.scss +4 -1
  101. package/livingdocs/020.Text/060.quote-with-portrait/scss/pdf.scss +4 -10
  102. package/livingdocs/020.Text/060.quote-with-portrait/scss/web.scss +0 -1
  103. package/livingdocs/020.Text/070.footnote-container/scss/_spacing-variations.scss +22 -0
  104. package/livingdocs/020.Text/070.footnote-container/scss/general.scss +8 -0
  105. package/livingdocs/020.Text/070.footnote-container/scss/pdf.scss +0 -8
  106. package/livingdocs/020.Text/070.footnote-container/scss/web.scss +0 -5
  107. package/livingdocs/020.Text/070.footnote-container/scss/xbrl.scss +9 -1
  108. package/livingdocs/020.Text/080.footnote-item/scss/_spacing-variations.scss +4 -0
  109. package/livingdocs/020.Text/080.footnote-item/scss/general.scss +28 -1
  110. package/livingdocs/020.Text/080.footnote-item/scss/web.scss +0 -20
  111. package/livingdocs/020.Text/080.footnote-item/scss/xbrl.scss +26 -1
  112. package/livingdocs/030.Lists/010.unordered-list/ld-conf.json +3 -3
  113. package/livingdocs/030.Lists/010.unordered-list/scss/_spacing-variations.scss +22 -0
  114. package/livingdocs/030.Lists/010.unordered-list/scss/general.scss +3 -5
  115. package/livingdocs/030.Lists/010.unordered-list/scss/pdf.scss +3 -1
  116. package/livingdocs/030.Lists/010.unordered-list/scss/web.scss +15 -1
  117. package/livingdocs/030.Lists/010.unordered-list/scss/word.scss +1 -6
  118. package/livingdocs/030.Lists/010.unordered-list/scss/xbrl.scss +2 -1
  119. package/livingdocs/030.Lists/020.ordered-list/ld-conf.json +3 -3
  120. package/livingdocs/030.Lists/030.alphanumeric-list/ld-conf.json +3 -3
  121. package/livingdocs/030.Lists/040.list-item-unordered-list/ld-conf.json +23 -0
  122. package/livingdocs/030.Lists/040.list-item-unordered-list/list-item-unordered-list.html +8 -0
  123. package/livingdocs/030.Lists/040.list-item-unordered-list/scss/_spacing-variations.scss +4 -0
  124. package/livingdocs/030.Lists/040.list-item-unordered-list/scss/general.scss +14 -0
  125. package/livingdocs/030.Lists/{040.list-item → 040.list-item-unordered-list}/scss/pdf.scss +7 -1
  126. package/livingdocs/030.Lists/{040.list-item/scss/general.scss → 040.list-item-unordered-list/scss/web.scss} +17 -6
  127. package/livingdocs/030.Lists/040.list-item-unordered-list/scss/word.scss +5 -0
  128. package/livingdocs/030.Lists/040.list-item-unordered-list/scss/xbrl.scss +2 -0
  129. package/livingdocs/030.Lists/050.list-item-ordered-list/ld-conf.json +23 -0
  130. package/livingdocs/030.Lists/050.list-item-ordered-list/list-item-ordered-list.html +8 -0
  131. package/livingdocs/030.Lists/060.list-item-alphanumeric-list/ld-conf.json +23 -0
  132. package/livingdocs/030.Lists/060.list-item-alphanumeric-list/list-item-alphanumeric-list.html +8 -0
  133. package/livingdocs/040.Media/010.table/scss/_spacing-variations.scss +19 -0
  134. package/livingdocs/040.Media/010.table/scss/general.scss +270 -251
  135. package/livingdocs/040.Media/010.table/scss/pdf.scss +2 -18
  136. package/livingdocs/040.Media/010.table/scss/web.scss +0 -19
  137. package/livingdocs/040.Media/010.table/scss/xbrl.scss +4 -3
  138. package/livingdocs/040.Media/020.image/scss/_spacing-variations.scss +7 -0
  139. package/livingdocs/040.Media/020.image/scss/editor.scss +0 -1
  140. package/livingdocs/040.Media/020.image/scss/general.scss +6 -2
  141. package/livingdocs/040.Media/020.image/scss/pdf.scss +0 -4
  142. package/livingdocs/040.Media/020.image/scss/web.scss +0 -5
  143. package/livingdocs/040.Media/020.image/scss/xbrl.scss +1 -3
  144. package/livingdocs/040.Media/030.video/scss/_spacing-variations.scss +7 -0
  145. package/livingdocs/040.Media/030.video/scss/general.scss +19 -0
  146. package/livingdocs/040.Media/030.video/scss/pdf.scss +0 -10
  147. package/livingdocs/040.Media/030.video/scss/web.scss +0 -11
  148. package/livingdocs/040.Media/030.video/scss/xbrl.scss +1 -4
  149. package/livingdocs/060.Buttons/020.button/scss/general.scss +14 -75
  150. package/livingdocs/070.Container/020.columns-container/columns-container.html +1 -1
  151. package/livingdocs/070.Container/030.background-container/background-container.html +3 -0
  152. package/livingdocs/070.Container/030.background-container/ld-conf.json +4 -0
  153. package/livingdocs/070.Container/030.background-container/properties.json +1 -0
  154. package/livingdocs/070.Container/030.background-container/scss/_spacing-variations.scss +3 -0
  155. package/livingdocs/070.Container/030.background-container/scss/general.scss +9 -0
  156. package/livingdocs/070.Container/030.background-container/scss/pdf.scss +13 -0
  157. package/livingdocs/070.Container/030.background-container/scss/web.scss +1 -0
  158. package/livingdocs/070.Container/030.background-container/scss/word.scss +1 -0
  159. package/livingdocs/070.Container/030.background-container/scss/xbrl.scss +3 -0
  160. package/livingdocs/080.CV/010.cv/cv.html +2 -1
  161. package/livingdocs/080.CV/010.cv/scss/_spacing-variations.scss +5 -0
  162. package/livingdocs/080.CV/010.cv/scss/app.scss +16 -1
  163. package/livingdocs/080.CV/010.cv/scss/general.scss +4 -0
  164. package/livingdocs/080.CV/010.cv/scss/pdf.scss +2 -3
  165. package/livingdocs/080.CV/010.cv/scss/web.scss +17 -1
  166. package/livingdocs/080.CV/020.cv-time-span/scss/_spacing-variations.scss +14 -0
  167. package/livingdocs/080.CV/020.cv-time-span/scss/general.scss +4 -0
  168. package/livingdocs/080.CV/020.cv-time-span/scss/web.scss +0 -1
  169. package/livingdocs/100.Misc/010.anchor/scss/editor.scss +0 -1
  170. package/livingdocs/100.Misc/020.accordion/accordion.html +54 -7
  171. package/livingdocs/100.Misc/020.accordion/accordion.vue +83 -0
  172. package/livingdocs/100.Misc/020.accordion/scss/editor.scss +12 -0
  173. package/livingdocs/110.PDF/010.pdf-pagebreak/scss/editor.scss +0 -1
  174. package/livingdocs/110.PDF/021.pdf-columnbreak/scss/editor.scss +0 -1
  175. package/livingdocs/110.PDF/030.pdf-publication-title/scss/editor.scss +0 -1
  176. package/livingdocs/110.PDF/040.pdf-chapter-title/scss/editor.scss +0 -1
  177. package/livingdocs/110.PDF/050.pdf-chapter-navigation-container/scss/editor.scss +1 -1
  178. package/livingdocs/110.PDF/075.pdf-landscape-container/ld-conf.json +7 -0
  179. package/livingdocs/110.PDF/075.pdf-landscape-container/pdf-landscape-container.html +9 -0
  180. package/livingdocs/110.PDF/075.pdf-landscape-container/properties.json +15 -0
  181. package/livingdocs/110.PDF/075.pdf-landscape-container/scss/pdf.scss +19 -0
  182. package/livingdocs/110.PDF/100.pdf-toc-item/pdf-toc-item.html +3 -2
  183. package/livingdocs/110.PDF/100.pdf-toc-item/scss/general.scss +6 -5
  184. package/livingdocs/110.PDF/100.pdf-toc-item/scss/pdf.scss +9 -1
  185. package/livingdocs/130.Hosting_Components/010.download-center/download-center.html +7 -0
  186. package/livingdocs/130.Hosting_Components/010.download-center/download-center.vue +68 -0
  187. package/livingdocs/130.Hosting_Components/010.download-center/ld-conf.json +4 -0
  188. package/livingdocs/130.Hosting_Components/010.download-center/properties.json +1 -0
  189. package/livingdocs/130.Hosting_Components/010.download-center/scss/_spacing-variations.scss +3 -0
  190. package/livingdocs/130.Hosting_Components/010.download-center/scss/editor.scss +15 -0
  191. package/livingdocs/130.Hosting_Components/010.download-center/scss/general.scss +1 -0
  192. package/livingdocs/130.Hosting_Components/010.download-center/scss/pdf.scss +1 -0
  193. package/livingdocs/130.Hosting_Components/010.download-center/scss/web.scss +42 -0
  194. package/livingdocs/130.Hosting_Components/020.search/ld-conf.json +4 -0
  195. package/livingdocs/130.Hosting_Components/020.search/properties.json +1 -0
  196. package/livingdocs/130.Hosting_Components/020.search/scss/_spacing-variations.scss +4 -0
  197. package/livingdocs/130.Hosting_Components/020.search/scss/editor.scss +14 -0
  198. package/livingdocs/130.Hosting_Components/020.search/scss/general.scss +1 -0
  199. package/livingdocs/130.Hosting_Components/020.search/scss/pdf.scss +1 -0
  200. package/livingdocs/130.Hosting_Components/020.search/scss/web.scss +200 -0
  201. package/livingdocs/130.Hosting_Components/020.search/search.html +7 -0
  202. package/livingdocs/130.Hosting_Components/020.search/search.vue +484 -0
  203. package/livingdocs/999.Properties/breakout-grid/web.scss +5 -0
  204. package/livingdocs/999.Properties/grid/scss/app.scss +1 -0
  205. package/livingdocs/999.Properties/grid/scss/general.scss +31 -0
  206. package/livingdocs/999.Properties/grid/scss/pdf.scss +9 -0
  207. package/livingdocs/999.Properties/grid/scss/web.scss +1 -0
  208. package/livingdocs/999.Properties/grid/scss/xbrl.scss +2 -0
  209. package/livingdocs/999.Properties/icon/properties.json +2 -2
  210. package/package.json +1 -1
  211. package/plugins/viteSrlPlugin.js +16 -1
  212. package/scripts/build.js +1 -0
  213. package/scripts/config.js +6 -2
  214. package/scss/button.scss +25 -0
  215. package/scss/fa/font-free.scss +17 -0
  216. package/scss/fa/font-pro.scss +41 -0
  217. package/scss/fa/index.scss +118 -0
  218. package/scss/fa/source-free.scss +14 -0
  219. package/scss/fa/source-pro.scss +15 -0
  220. package/scss/index.scss +1 -0
  221. package/srl/.srl/components/Srl/Aria/TabChain.vue +6 -5
  222. package/srl/.srl/components/Srl/Article/Accordion.vue +37 -24
  223. package/srl/.srl/components/Srl/Article/Dialog/Button.vue +6 -5
  224. package/srl/.srl/components/Srl/Article/Root.vue +4 -1
  225. package/srl/.srl/components/Srl/Category/Accordion/Content.vue +2 -2
  226. package/srl/.srl/components/Srl/Category/Accordion.vue +8 -5
  227. package/srl/.srl/components/Srl/Menu/Item.vue +20 -5
  228. package/srl/.srl/components/Srl/Page/Dialog.vue +31 -14
  229. package/srl/.srl/types/nswow.d.ts +6 -1
  230. package/srl/.srl/utils/index.ts +2 -0
  231. package/srl/.srl/utils/pageState.ts +24 -23
  232. package/srl/srl/button.scss +2 -0
  233. package/srl/srl/fa/font-free.scss +17 -0
  234. package/srl/srl/fa/font-pro.scss +41 -0
  235. package/srl/srl/fa/index.scss +118 -0
  236. package/srl/srl/fa/source-free.scss +14 -0
  237. package/srl/srl/fa/source-pro.scss +15 -0
  238. package/dev/src/assets/fonts/Inter/Inter-Regular.ttf +0 -0
  239. package/dev/src/assets/fonts/Inter/Inter-SemiBold.ttf +0 -0
  240. package/dev/src/assets/fonts/Roboto/roboto-v30-latin-300.woff2 +0 -0
  241. package/dev/src/assets/fonts/Roboto/roboto-v30-latin-700.woff2 +0 -0
  242. package/dev/src/assets/fonts/Roboto/roboto-v30-latin-italic.woff2 +0 -0
  243. package/dev/src/assets/fonts/Roboto/roboto-v30-latin-regular.woff2 +0 -0
  244. package/dev/src/assets/images/mms-logo-white.svg +0 -105
  245. package/dev/src/assets/scss/components/icons.scss +0 -287
  246. package/dev/src/assets/scss/components/round-button.scss +0 -75
  247. package/dev/src/assets/scss/placeholders.scss +0 -588
  248. package/dev/src/components/Page/Footer.vue +0 -45
  249. package/dev/src/components/Page/Header.vue +0 -40
  250. package/dev/src/views/HomeView.vue +0 -5
  251. package/livingdocs/030.Lists/020.ordered-list/scss/general.scss +0 -6
  252. package/livingdocs/030.Lists/020.ordered-list/scss/pdf.scss +0 -5
  253. package/livingdocs/030.Lists/020.ordered-list/scss/word.scss +0 -9
  254. package/livingdocs/030.Lists/020.ordered-list/scss/xbrl.scss +0 -1
  255. package/livingdocs/030.Lists/030.alphanumeric-list/scss/general.scss +0 -6
  256. package/livingdocs/030.Lists/030.alphanumeric-list/scss/pdf.scss +0 -5
  257. package/livingdocs/030.Lists/030.alphanumeric-list/scss/word.scss +0 -9
  258. package/livingdocs/030.Lists/030.alphanumeric-list/scss/xbrl.scss +0 -1
  259. package/livingdocs/030.Lists/040.list-item/ld-conf.json +0 -5
  260. package/livingdocs/030.Lists/040.list-item/list-item.html +0 -5
  261. package/livingdocs/030.Lists/040.list-item/scss/web.scss +0 -27
  262. package/livingdocs/030.Lists/040.list-item/scss/word.scss +0 -19
  263. package/livingdocs/030.Lists/040.list-item/scss/xbrl.scss +0 -1
  264. /package/livingdocs/030.Lists/{020.ordered-list → 040.list-item-unordered-list}/scss/app.scss +0 -0
  265. /package/livingdocs/030.Lists/{020.ordered-list → 040.list-item-unordered-list}/scss/editor.scss +0 -0
  266. /package/livingdocs/{030.Lists/030.alphanumeric-list → 070.Container/030.background-container}/scss/app.scss +0 -0
  267. /package/livingdocs/{030.Lists/030.alphanumeric-list → 070.Container/030.background-container}/scss/editor.scss +0 -0
  268. /package/livingdocs/{030.Lists/040.list-item → 130.Hosting_Components/010.download-center}/scss/app.scss +0 -0
  269. /package/{dev/livingdocs/.gitkeep → livingdocs/130.Hosting_Components/010.download-center/scss/word.scss} +0 -0
  270. /package/livingdocs/{030.Lists/020.ordered-list/scss/web.scss → 130.Hosting_Components/010.download-center/scss/xbrl.scss} +0 -0
  271. /package/livingdocs/{030.Lists/040.list-item/scss/editor.scss → 130.Hosting_Components/020.search/scss/app.scss} +0 -0
  272. /package/livingdocs/{030.Lists/030.alphanumeric-list/scss/web.scss → 130.Hosting_Components/020.search/scss/word.scss} +0 -0
  273. /package/livingdocs/{060.Buttons/.gitkeep → 130.Hosting_Components/020.search/scss/xbrl.scss} +0 -0
  274. /package/livingdocs/999.Properties/{width → grid}/properties.json +0 -0
@@ -0,0 +1,828 @@
1
+ <script lang="ts" setup>
2
+ import { useGlobalLinks } from '@/composables/globalLinks.ts'
3
+ import { isDesktopView } from '@/composables/isDesktopView.ts'
4
+ import { ref, onMounted, nextTick, computed } from 'vue'
5
+ import { useMainNavigation } from '@/composables/mainNavigation.ts'
6
+ import SvgLogo from 'assets/images/logo.svg?component'
7
+ import SvgMenu from 'assets/images/menu.svg?component'
8
+
9
+ // Config
10
+ const animationDuration = ref(450) //450
11
+ const animationTimingFunction = ref("ease-out")
12
+ const backdropPadding = ref(64)
13
+
14
+ // Props
15
+ const props = defineProps<{
16
+ mainNavigation: NsWowNavigationItem[]
17
+ }>()
18
+
19
+ // Refs
20
+ const mainNavigation = ref<PageMainNavigation>()
21
+ const metaNavigation = ref<PageMetaNavigation>()
22
+ const mobileNavigation = ref<HTMLDivElement>()
23
+ const headerElement = ref<HTMLElement>()
24
+
25
+ // Data
26
+ const globalLinks = useGlobalLinks()
27
+ const backdropHeight = ref(0)
28
+ const animationAction = ref(false)
29
+
30
+ // Css variables
31
+ const animationDurationCss = computed(() => `${animationDuration.value}ms`)
32
+ const backdropPaddingCss = computed(() => `${backdropPadding.value}px`)
33
+ const backdropHeightCss = computed(() => `${backdropHeight.value}px`)
34
+ const backdropHeightNegativeCss = computed(() => `${-backdropHeight.value}px`)
35
+
36
+ const mobileNavigationOpen = ref<boolean>(false)
37
+ function mobileNavToggle() {
38
+ if (mobileNavigationOpen.value) {
39
+ animationTrigger(5)
40
+ mobileNavigationOpen.value = false
41
+ closeAllMenus()
42
+ } else {
43
+ animationTrigger()
44
+ mobileNavigationOpen.value = true
45
+ nextTick(() => {
46
+ mobileNavigation.value?.focus()
47
+ })
48
+ }
49
+ }
50
+
51
+ function calcListHeight(list: HTMLUListElement) {
52
+ let height = 0
53
+ for (let x = 0; x < list.children.length; x++) {
54
+ const child = list.children[x] as HTMLElement
55
+ height += child.offsetHeight
56
+ }
57
+ return height
58
+ }
59
+
60
+ function animationTrigger(factor: number = 1) {
61
+ animationAction.value = true
62
+ setTimeout(() => {
63
+ animationAction.value = false
64
+ }, animationDuration.value * factor + 20)
65
+ }
66
+
67
+ function backdropState() {
68
+ if (!isDesktopView.value && backdropHeight.value > 0) {
69
+ backdropHeight.value = 0
70
+ } else if (isDesktopView.value) {
71
+ animationTrigger()
72
+ nextTick(() => {
73
+ if (mainNavigation.value) {
74
+ let height = 0
75
+ const menus = mainNavigation.value.menu?.$el?.querySelectorAll(
76
+ '.srl-menu:not(.srl-menu--level-0):not([hidden])'
77
+ )
78
+ menus?.forEach((menu) => {
79
+ const liHeight = calcListHeight(menu)
80
+ if (liHeight > height) {
81
+ height = liHeight
82
+ }
83
+ })
84
+ backdropHeight.value = height ? height + backdropPadding.value * 2 : 0
85
+ } else {
86
+ backdropHeight.value = 0
87
+ }
88
+ })
89
+ }
90
+ }
91
+
92
+ function closeAllMenus() {
93
+ if (mainNavigation.value) {
94
+ mainNavigation.value.menu?.closeAll()
95
+ }
96
+ if (metaNavigation.value) {
97
+ metaNavigation.value.menu?.closeAll()
98
+ }
99
+ mobileNavigationOpen.value = false
100
+ backdropState()
101
+ }
102
+
103
+ function focusMainNavigation() {
104
+ if (!isDesktopView.value) {
105
+ const elem = useMainNavigation()
106
+ elem.value?.focus()
107
+ }
108
+ }
109
+
110
+ function closeMobileNavigation(e: KeyboardEvent) {
111
+ if (!isDesktopView.value) {
112
+ e.preventDefault()
113
+ closeAllMenus()
114
+ focusMainNavigation()
115
+ }
116
+ }
117
+
118
+ window.addEventListener('resize', () => {
119
+ mobileNavigationOpen.value = false
120
+ closeAllMenus()
121
+ })
122
+
123
+ function toggleMeta(data) {
124
+ data.menuEl.classList.add('animate')
125
+ setTimeout(() => {
126
+ data.menuEl.classList.remove('animate')
127
+ }, animationDuration.value)
128
+ }
129
+
130
+ function toggleMain(data) {
131
+ if (data.opened) {
132
+ setTimeout(() => {
133
+ data.itemEl.parentElement.scrollTo({ top: 0, behavior: 'smooth' })
134
+ }, animationDuration.value / 1.7)
135
+ }
136
+ data.itemEl.classList.add('animate')
137
+ setTimeout(() => {
138
+ data.itemEl.classList.remove('animate')
139
+ }, animationDuration.value)
140
+ metaNavigation.value.menu?.closeAll()
141
+ backdropState()
142
+ }
143
+
144
+ onMounted(() => {
145
+ const navMain = mainNavigation.value.menu.$el
146
+ const navMain1 = navMain.querySelectorAll('.srl-menu--level-1')
147
+ const navButtons = navMain.querySelectorAll('.srl-menu__link')
148
+
149
+ navMain1.forEach((menu) => {
150
+ menu.addEventListener('keydown', (event) => {
151
+ if (event.key === 'Escape') {
152
+ closeAllMenus()
153
+ focusMainNavigation()
154
+ }
155
+ })
156
+ })
157
+
158
+ navMain.addEventListener('keydown', (event) => {
159
+ if (event.key === 'Escape') {
160
+ closeAllMenus()
161
+ focusMainNavigation()
162
+ }
163
+ })
164
+
165
+ navButtons.forEach((button) => {
166
+ button.addEventListener('keydown', (event) => {
167
+ if (button.classList.contains(
168
+ isDesktopView.value?
169
+ 'srl-menu__link--level-1':
170
+ 'srl-menu__link--level-0')
171
+ && event.key === 'Escape'
172
+ ) {
173
+ closeAllMenus()
174
+ focusMainNavigation()
175
+ }
176
+ })
177
+ });
178
+ document.addEventListener('click', () => {
179
+ closeAllMenus()
180
+ })
181
+ })
182
+ </script>
183
+
184
+ <template>
185
+ <header
186
+ id="srl-page-header"
187
+ ref="headerElement"
188
+ class="srl-header"
189
+ :class="{
190
+ 'mobile-nav-open': mobileNavigationOpen,
191
+ 'srl-header__animation': animationAction,
192
+ }"
193
+ tabindex="-1"
194
+ >
195
+ <div class="srl-header__toggle-container">
196
+ <button
197
+ type="button"
198
+ id="srl-header__toggle"
199
+ class="srl-button srl-button--icon srl-button--transparent-black srl-header__toggle"
200
+ title="Menu"
201
+ :hidden="isDesktopView"
202
+ @click.stop="mobileNavToggle"
203
+ >
204
+ <span class="srl-header__menu-button-bar">
205
+ <SvgMenu/>
206
+ </span>
207
+ </button>
208
+ </div>
209
+ <div class="srl-header__container">
210
+ <router-link :to="globalLinks.home?.href" class="srl-logo">
211
+ <SvgLogo class="srl-logo__img"/>
212
+ </router-link>
213
+ <div class="srl-header__navigation">
214
+ <p class="srl-header__title" v-text="$t('page.title')" />
215
+ <div
216
+ ref="mobileNavigation"
217
+ class="srl-header__mobile-navigation"
218
+ tabindex="-1"
219
+ :hidden="!isDesktopView && !mobileNavigationOpen"
220
+ @keydown.esc="closeMobileNavigation"
221
+ @keydown.exact.shift.tab="closeMobileNavigation"
222
+ @click.stop
223
+ >
224
+ <PageMetaNavigation
225
+ ref="metaNavigation"
226
+ @toggle="toggleMeta"
227
+ @routerChange="closeAllMenus"
228
+ @focusMain="focusMainNavigation"
229
+ />
230
+ <PageMainNavigation
231
+ ref="mainNavigation"
232
+ :mainNavigation="props.mainNavigation"
233
+ @toggle="toggleMain"
234
+ @routerChange="closeAllMenus"
235
+ @focusMain="focusMainNavigation"
236
+ />
237
+ </div>
238
+ </div>
239
+ </div>
240
+ </header>
241
+ </template>
242
+
243
+ <style lang="scss">
244
+ @use 'srl';
245
+
246
+ body:has(.mobile-nav-open) {
247
+ overflow: hidden;
248
+ }
249
+
250
+ .srl-header {
251
+ background-color: srl.colors-white-1000();
252
+ color: srl.colors-grey-800();
253
+ height: srl.system-root-style(srl-header-height);
254
+ position: fixed;
255
+ z-index: 1000;
256
+ top: 0;
257
+ right: 0;
258
+ left: 0;
259
+ box-shadow: 0 4px 12px rgba(0,0,0,.1);
260
+
261
+ a, button {
262
+ &:not(.srl-button) {
263
+ color: srl.colors-grey-800();
264
+ }
265
+ }
266
+
267
+ .srl-menu {
268
+ list-style: none;
269
+ margin: 0;
270
+ padding: 0;
271
+ }
272
+ }
273
+
274
+ .srl-header__container {
275
+ display: flex;
276
+ align-items: center;
277
+ justify-content: flex-start;
278
+ @include srl.spacer-column-gap(800);
279
+ height: 100%;
280
+ width: 100%;
281
+ max-width: var(--srl-container-max-width);
282
+ padding-inline: var(--srl-container-padding);
283
+ margin: 0 auto;
284
+ }
285
+
286
+ .srl-header__title {
287
+ @include srl.typography-title-h3();
288
+ }
289
+
290
+ .srl-header__toggle {
291
+ position: absolute;
292
+ top: srl.system-size-unit(12);
293
+ right: var(--srl-container-padding);
294
+ }
295
+
296
+ .srl-header__toggle[hidden] {
297
+ display: none;
298
+ }
299
+
300
+ .srl-header__toggle-container {
301
+ position: relative;
302
+ max-width: var(--srl-container-max-width);
303
+ margin: 0 auto;
304
+ }
305
+
306
+ .srl-logo {
307
+ width: srl.system-size-unit(110);
308
+ height: auto;
309
+ display: flex;
310
+ align-items: center;
311
+ position: relative;
312
+ }
313
+
314
+ .srl-main-navigation {
315
+ max-width: var(--srl-container-max-width);
316
+ margin: 0 auto;
317
+ padding-inline: var(--srl-container-padding);
318
+
319
+ .srl-menu__item {
320
+ animation: fadeIn v-bind(animationDurationCss) v-bind(animationTimingFunction);
321
+ margin: 0;
322
+ padding: 0;
323
+ }
324
+
325
+ .srl-menu__link {
326
+ display: flex;
327
+ align-items: center;
328
+ justify-content: space-between;
329
+ @include srl.spacer-column-gap(200);
330
+ @include srl.typography-title-h4();
331
+ text-decoration: none;
332
+ border: 0;
333
+ background-color: transparent;
334
+ cursor: pointer;
335
+ margin: 0;
336
+ padding: 0 srl.spacer-get(200) 0 0;
337
+ @include srl.spacer-padding-block(200);
338
+ width: 100%;
339
+ text-align: left;
340
+
341
+ svg {
342
+ transition: transform .3s v-bind(animationTimingFunction);
343
+ }
344
+ }
345
+
346
+ .srl-menu__link:not(.srl-menu__link--back):hover {
347
+ svg {
348
+ transform: translateX(srl.spacer-get(200));
349
+ }
350
+ }
351
+
352
+ .srl-menu__link--back {
353
+ justify-content: flex-start;
354
+ }
355
+ }
356
+
357
+ .srl-meta-navigation {
358
+ @include srl.typography-button-text();
359
+ height: srl.system-size-unit(68);
360
+ display: flex;
361
+ align-items: center;
362
+ max-width: var(--srl-container-max-width);
363
+ margin: 0 auto;
364
+ padding-inline: var(--srl-container-padding);
365
+ z-index: 100;
366
+
367
+ > .srl-menu {
368
+ display: flex;
369
+ @include srl.spacer-gap(100);
370
+
371
+ > .srl-menu__item {
372
+ position: relative;
373
+ &:has(.srl-menu:not([hidden])) {
374
+ > .srl-button {
375
+ border-bottom-right-radius: 0;
376
+ border-bottom-left-radius: 0;
377
+ }
378
+ }
379
+
380
+ .srl-menu {
381
+ position: absolute;
382
+ top: 100%;
383
+ width: 100%;
384
+ right: 0;
385
+ animation-timing-function: ease-in-out;
386
+
387
+
388
+ @keyframes headerDropDown {
389
+ from {
390
+ transform: translateY(-150px);
391
+ }
392
+ to {
393
+ transform: translateY(0);
394
+ }
395
+ }
396
+
397
+ &.animate {
398
+ display: flex;
399
+ overflow: hidden;
400
+ z-index: -1;
401
+ &[hidden] {
402
+ > li {
403
+ animation: headerDropDown calc(v-bind(animationDurationCss) / 2 ) v-bind(animationTimingFunction) reverse forwards;
404
+ }
405
+ }
406
+ &:not([hidden]) {
407
+ > li {
408
+ animation: headerDropDown calc(v-bind(animationDurationCss) / 2 ) v-bind(animationTimingFunction) forwards;
409
+ }
410
+ }
411
+ }
412
+
413
+ .srl-menu__link {
414
+ display: flex;
415
+ align-items: center;
416
+ justify-content: center;
417
+ width: 100%;
418
+ background-color: srl.colors-white-1000();
419
+ border-color: srl.colors-grey-600();
420
+ border-style: solid;
421
+ border-width: 0 srl.system-size-unit(1) 0 srl.system-size-unit(1);
422
+ text-align: center;
423
+ text-decoration: none;
424
+ height: srl.system-root-style(srl-button-height);
425
+
426
+ &:last-child {
427
+ border-bottom-width: srl.system-size-unit(1);
428
+ border-bottom-right-radius: srl.system-root-style(srl-default-border-radius, 0);
429
+ border-bottom-left-radius: srl.system-root-style(srl-default-border-radius, 0);
430
+ }
431
+ }
432
+ }
433
+
434
+ .srl-menu__item {
435
+ width: 100%;
436
+ }
437
+ }
438
+ }
439
+ }
440
+
441
+ @include srl.grid-media-down(phone-ls) {
442
+ .srl-header__title {
443
+ display: none;
444
+ }
445
+ }
446
+
447
+ @keyframes mobileNavOpen {
448
+ from {
449
+ height: 0;
450
+ }
451
+ to {
452
+ height: calc(100dvh - srl.system-root-style(srl-header-height));
453
+ }
454
+ }
455
+
456
+ @keyframes mobileNavClose {
457
+ 0% {
458
+ height: calc(100dvh - srl.system-root-style(srl-header-height));
459
+ }
460
+ 50% {
461
+ height: calc(100dvh - srl.system-root-style(srl-header-height));
462
+ }
463
+ 100% {
464
+ height: 0;
465
+ }
466
+ }
467
+
468
+ @include srl.grid-media-down(tablet-pt) {
469
+
470
+ .srl-header__animation {
471
+ .srl-header__mobile-navigation {
472
+ display: flex;
473
+ overflow: hidden;
474
+ animation-timing-function: v-bind(animationTimingFunction);
475
+ }
476
+
477
+ .srl-header__mobile-navigation:not([hidden]) {
478
+ animation-duration: calc(v-bind(animationDurationCss) / 2);
479
+ animation-name: mobileNavOpen;
480
+ }
481
+
482
+ .srl-header__mobile-navigation[hidden] {
483
+ animation-duration: calc(v-bind(animationDurationCss));
484
+ animation-name: mobileNavClose;
485
+ }
486
+ }
487
+
488
+ .srl-header__mobile-navigation {
489
+ position: absolute;
490
+ top: srl.system-root-style(srl-header-height);
491
+ right: 0;
492
+ width: 100%;
493
+ height: 0;
494
+ flex-direction: column;
495
+ background-color: srl.colors-white-1000();
496
+ }
497
+
498
+ .srl-header__mobile-navigation:not([hidden]) {
499
+ display: flex;
500
+ }
501
+
502
+ .mobile-nav-open {
503
+ .srl-header__mobile-navigation {
504
+ height: calc(100dvh - srl.system-root-style(srl-header-height));
505
+ }
506
+ }
507
+
508
+ .srl-meta-navigation {
509
+ flex: 0 0 auto;
510
+ width: 100%;
511
+ background-color: srl.colors-white-1000();
512
+ }
513
+
514
+ @keyframes mobileNavSubOpen {
515
+ from {
516
+ left: 100%;
517
+ }
518
+ to {
519
+ left: 0;
520
+ }
521
+ }
522
+
523
+ @keyframes mobileNavSubClose {
524
+ from {
525
+ display: block;
526
+ left: 0;
527
+ }
528
+ to {
529
+ left: 100%;
530
+ }
531
+ }
532
+
533
+ .srl-main-navigation {
534
+ flex: 1 1 auto;
535
+ width: 100%;
536
+ overflow: hidden;
537
+ position: relative;
538
+ max-width: unset;
539
+ margin: 0;
540
+ padding: 0;
541
+
542
+ &:after {
543
+ content: "";
544
+ display: block;
545
+ position: absolute;
546
+ top: 0;
547
+ right: 0;
548
+ left: 0;
549
+ height: 100%;
550
+ max-height: calc(100dvh - srl.system-root-style(srl-header-height));
551
+ transition: height v-bind(animationDurationCss) v-bind(animationTimingFunction);
552
+ pointer-events: none;
553
+ box-shadow:
554
+ inset 0 32px 24px -14px srl.colors-white-1000(),
555
+ inset 0 -32px 24px -14px srl.colors-white-1000();
556
+ }
557
+
558
+ .srl-menu {
559
+ scroll-behavior: smooth;
560
+ width: 100%;
561
+ position: absolute;
562
+ top: 0;
563
+ left: 0;
564
+ height: 100%;
565
+ background-color: srl.colors-white-1000();
566
+ overflow-y: auto;
567
+ overflow-x: hidden;
568
+ transition: left v-bind(animationDurationCss) v-bind(animationTimingFunction);
569
+ @include srl.spacer-padding-block(200);
570
+ }
571
+
572
+ .srl-menu:has(.srl-menu:not([hidden])) {
573
+ overflow-y: hidden;
574
+ }
575
+
576
+ .srl-menu__item {
577
+ width: 100%;
578
+ @include srl.grid-container();
579
+ margin-inline: auto;
580
+ }
581
+
582
+ .srl-menu__item.animate {
583
+ > .srl-menu:not([hidden]) {
584
+ animation: mobileNavSubOpen v-bind(animationDurationCss) v-bind(animationTimingFunction) forwards;
585
+ }
586
+ }
587
+
588
+ .srl-menu[hidden] {
589
+ animation: mobileNavSubClose v-bind(animationDurationCss) v-bind(animationTimingFunction) forwards;
590
+ }
591
+ }
592
+ }
593
+
594
+ @include srl.grid-media-up(tablet-ls) {
595
+ .srl-header {
596
+ border-bottom: srl.system-size-unit(1) solid srl.colors-white-1000();
597
+ transition: border-color calc(v-bind(animationDurationCss) * 2) v-bind(animationTimingFunction);
598
+ }
599
+
600
+ .srl-header__container {
601
+ position: relative;
602
+ }
603
+
604
+ .srl-header__navigation {
605
+ display: flex;
606
+ flex-direction: column;
607
+ justify-content: center;
608
+ @include srl.spacer-row-gap(100);
609
+ width: calc(100% - 530px);
610
+ }
611
+
612
+ .srl-header__animation {
613
+ .srl-main-navigation {
614
+ .srl-menu {
615
+ scrollbar-width: none;
616
+ }
617
+ }
618
+ }
619
+
620
+ .srl-header:before {
621
+ content: "";
622
+ display: block;
623
+ position: absolute;
624
+ top: srl.system-root-style(srl-header-height);
625
+ right: 0;
626
+ left: 0;
627
+ height: v-bind(backdropHeightCss);
628
+ pointer-events: none;
629
+ transition: height v-bind(animationDurationCss) v-bind(animationTimingFunction);
630
+ box-shadow: 0 4px 12px rgba(0,0,0,.1);
631
+ background-color: srl.colors-white-1000();
632
+ }
633
+
634
+ .srl-header:has(.srl-main-navigation .srl-menu--level-1:not([hidden])) {
635
+ border-color: srl.colors-grey-200();
636
+ }
637
+
638
+ .srl-header__mobile-navigation:after {
639
+ content: "";
640
+ display: block;
641
+ position: absolute;
642
+ top: srl.system-root-style(srl-header-height);
643
+ right: 0;
644
+ left: 0;
645
+ height: v-bind(backdropHeightCss);
646
+ max-height: calc(100dvh - srl.system-root-style(srl-header-height));
647
+ transition: height v-bind(animationDurationCss) v-bind(animationTimingFunction);
648
+ pointer-events: none;
649
+ box-shadow:
650
+ inset 0 64px 48px -28px srl.colors-white-1000(),
651
+ inset 0 -64px 48px -28px srl.colors-white-1000();
652
+ }
653
+
654
+ .srl-meta-navigation {
655
+ position: absolute;
656
+ right: var(--srl-container-padding);
657
+ top: 0;
658
+ height: 100%;
659
+ margin: 0;
660
+ padding: 0;
661
+ .srl-menu{
662
+ animation-name: none;
663
+ }
664
+ }
665
+
666
+ .srl-main-navigation {
667
+ margin: 0;
668
+ padding: 0;
669
+
670
+ .srl-menu--level-0 {
671
+ display: flex;
672
+ @include srl.spacer-column-gap(200);
673
+
674
+ .srl-menu {
675
+ position: absolute;
676
+ height: v-bind(backdropHeightCss);
677
+ padding-block: v-bind(backdropPaddingCss);
678
+ @include srl.spacer-padding-inline(200);
679
+ }
680
+
681
+ .srl-menu__link--level-0 {
682
+ margin: 0;
683
+ padding: 0;
684
+ @include srl.typography-paragraph();
685
+ }
686
+
687
+ .srl-menu__item {
688
+ animation-name: none;
689
+ }
690
+
691
+ .srl-menu__item--level-0:after {
692
+ content: "";
693
+ position: relative;
694
+ display: block;
695
+ height: srl.system-size-unit(2);
696
+ top: srl.system-size-unit(21);
697
+ background-color: transparent;
698
+ margin-inline: auto;
699
+ width: 100%;
700
+ z-index: 10;
701
+ }
702
+
703
+ @keyframes firstLevelActiveOn {
704
+ from {
705
+ width: 0;
706
+ background-color: transparent;
707
+ }
708
+ to {
709
+ width: 100%;
710
+ background-color: srl.colors-primary-1000();
711
+ }
712
+ }
713
+
714
+ .srl-menu__item--level-0:has(> .srl-menu:not([hidden])):after,
715
+ .srl-menu__item--level-0:has(.srl-menu__link[aria-current="page"]):after {
716
+ background-color: srl.colors-primary-1000();
717
+ animation: firstLevelActiveOn v-bind(animationDurationCss) v-bind(animationTimingFunction) forwards;
718
+ }
719
+
720
+ }
721
+
722
+ .srl-menu--level-1 {
723
+ top: srl.system-root-style(srl-header-height);
724
+ left: srl.system-root-style(srl-container-padding);
725
+ width: calc( 100% - srl.system-root-style(srl-container-padding, 0) * 2 );
726
+ max-height: calc(100dvh - srl.system-root-style(srl-header-height));
727
+ overflow-y: auto;
728
+ transition: height v-bind(animationDurationCss) v-bind(animationTimingFunction);
729
+
730
+ > .srl-menu__item {
731
+ width: calc(33.333333% - srl.spacer-get(200));
732
+ }
733
+
734
+ .srl-menu {
735
+ top: 0;
736
+ }
737
+
738
+ @keyframes headerRollDown {
739
+ from {
740
+ transform: translateY(v-bind(backdropHeightNegativeCss));
741
+ }
742
+ to {
743
+ transform: translateY(0);
744
+ }
745
+ }
746
+
747
+ @keyframes headerRollUp {
748
+ from {
749
+ z-index: -1;
750
+ display: block;
751
+ transform: translateY(0);
752
+ }
753
+ to {
754
+ transform: translateY(v-bind(backdropHeightNegativeCss));
755
+ }
756
+ }
757
+
758
+ .srl-menu:before {
759
+ content: '';
760
+ position: absolute;
761
+ top: v-bind(backdropPaddingCss);
762
+ left: srl.system-size-unit(-1);
763
+ width: srl.system-size-unit(2);
764
+ height: calc(v-bind(backdropHeightCss) - (v-bind(backdropPaddingCss) * 2));
765
+ transition: height v-bind(animationDurationCss) v-bind(animationTimingFunction);
766
+ animation: headerRollDown v-bind(animationDurationCss) v-bind(animationTimingFunction);
767
+ background-color: srl.colors-grey-400();
768
+ }
769
+
770
+ .srl-menu__item {
771
+ animation: headerRollDown v-bind(animationDurationCss) v-bind(animationTimingFunction);
772
+ }
773
+
774
+ .srl-menu[hidden] {
775
+ animation: headerRollUp calc( v-bind(animationDurationCss) / 2 ) v-bind(animationTimingFunction);
776
+ }
777
+
778
+ .srl-menu__link {
779
+ background-position: calc(100% - 40px) calc(50% - 3px);
780
+ }
781
+ }
782
+
783
+ .srl-menu--level-2 {
784
+ left: calc( 33.333333% + srl.system-size-unit(4) );
785
+ width: calc( 66.666667% - srl.system-size-unit(4) );
786
+
787
+ > .srl-menu__item {
788
+ width: calc(50% - srl.spacer-get(200));
789
+ }
790
+ }
791
+
792
+ .srl-menu--level-3 {
793
+ left: 50%;
794
+ width: 50%;
795
+
796
+ > .srl-menu__item {
797
+ width: calc(100% - srl.spacer-get(200));
798
+ }
799
+ }
800
+
801
+ .srl-menu__link {
802
+ @include srl.spacer-padding-block(100);
803
+ }
804
+
805
+ .srl-menu__item:has(> .srl-menu:not([hidden])) > .srl-menu__link,
806
+ .srl-menu__link:hover {
807
+ color: srl.colors-primary-1000();
808
+ }
809
+
810
+ .srl-menu__link-text--level-0 {
811
+ white-space: nowrap;
812
+ }
813
+
814
+ .srl-menu__link--back {
815
+ display: none;
816
+ }
817
+ }
818
+ }
819
+
820
+ @include srl.grid-media(tablet-ls) {
821
+ .srl-meta-navigation {
822
+ margin-block-start: srl.system-size-unit(6);
823
+ align-items: flex-start;
824
+ height: auto;
825
+ }
826
+ }
827
+
828
+ </style>