@magmonium/one 0.4.31 → 0.4.32

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 (180) hide show
  1. package/assets/button_groups/nav_user_actions.json +1 -0
  2. package/assets/button_groups/notification_filter.json +2 -13
  3. package/assets/buttons/nav_user_edit_profile.json +5 -0
  4. package/assets/i18n/af.json +10 -2
  5. package/assets/i18n/am.json +10 -1
  6. package/assets/i18n/ar.json +10 -2
  7. package/assets/i18n/as.json +11 -2
  8. package/assets/i18n/az.json +11 -2
  9. package/assets/i18n/ba.json +8 -0
  10. package/assets/i18n/be.json +11 -2
  11. package/assets/i18n/bg.json +11 -2
  12. package/assets/i18n/bn.json +11 -2
  13. package/assets/i18n/br.json +7 -0
  14. package/assets/i18n/bs.json +10 -2
  15. package/assets/i18n/ca.json +10 -2
  16. package/assets/i18n/ceb.json +9 -2
  17. package/assets/i18n/cnr.json +8 -0
  18. package/assets/i18n/co.json +7 -1
  19. package/assets/i18n/cs.json +9 -2
  20. package/assets/i18n/cy.json +11 -2
  21. package/assets/i18n/da.json +7 -1
  22. package/assets/i18n/de.json +8 -2
  23. package/assets/i18n/doi.json +9 -0
  24. package/assets/i18n/el.json +10 -2
  25. package/assets/i18n/en.json +19 -4
  26. package/assets/i18n/eo.json +9 -2
  27. package/assets/i18n/es.json +9 -2
  28. package/assets/i18n/et.json +8 -2
  29. package/assets/i18n/eu.json +9 -2
  30. package/assets/i18n/fa.json +10 -2
  31. package/assets/i18n/fi.json +9 -2
  32. package/assets/i18n/fr.json +9 -2
  33. package/assets/i18n/fy.json +6 -2
  34. package/assets/i18n/ga.json +10 -2
  35. package/assets/i18n/gd.json +9 -2
  36. package/assets/i18n/gl.json +8 -1
  37. package/assets/i18n/gu.json +11 -2
  38. package/assets/i18n/ha.json +7 -1
  39. package/assets/i18n/haw.json +8 -2
  40. package/assets/i18n/he.json +8 -0
  41. package/assets/i18n/hi.json +10 -2
  42. package/assets/i18n/hmn.json +6 -2
  43. package/assets/i18n/hr.json +10 -2
  44. package/assets/i18n/hu.json +10 -2
  45. package/assets/i18n/hy.json +11 -2
  46. package/assets/i18n/id.json +10 -2
  47. package/assets/i18n/ig.json +8 -1
  48. package/assets/i18n/ilo.json +6 -0
  49. package/assets/i18n/is.json +10 -2
  50. package/assets/i18n/it.json +9 -2
  51. package/assets/i18n/iw.json +9 -1
  52. package/assets/i18n/ja.json +8 -1
  53. package/assets/i18n/jw.json +8 -2
  54. package/assets/i18n/ka.json +10 -2
  55. package/assets/i18n/kk.json +10 -2
  56. package/assets/i18n/km.json +10 -2
  57. package/assets/i18n/kn.json +11 -2
  58. package/assets/i18n/ko.json +8 -1
  59. package/assets/i18n/kok.json +9 -0
  60. package/assets/i18n/ku.json +10 -2
  61. package/assets/i18n/ky.json +9 -1
  62. package/assets/i18n/la.json +6 -1
  63. package/assets/i18n/lb.json +6 -2
  64. package/assets/i18n/lo.json +10 -2
  65. package/assets/i18n/lt.json +10 -2
  66. package/assets/i18n/lv.json +10 -2
  67. package/assets/i18n/mai.json +9 -0
  68. package/assets/i18n/mg.json +8 -2
  69. package/assets/i18n/mi.json +8 -2
  70. package/assets/i18n/mk.json +10 -2
  71. package/assets/i18n/ml.json +11 -2
  72. package/assets/i18n/mn.json +10 -2
  73. package/assets/i18n/mr.json +11 -2
  74. package/assets/i18n/ms.json +9 -2
  75. package/assets/i18n/mt.json +9 -2
  76. package/assets/i18n/my.json +10 -2
  77. package/assets/i18n/ne.json +10 -2
  78. package/assets/i18n/nl.json +6 -2
  79. package/assets/i18n/no.json +8 -2
  80. package/assets/i18n/ny.json +9 -2
  81. package/assets/i18n/or.json +10 -1
  82. package/assets/i18n/pa.json +11 -2
  83. package/assets/i18n/pl.json +8 -2
  84. package/assets/i18n/ps.json +8 -1
  85. package/assets/i18n/pt.json +9 -2
  86. package/assets/i18n/ro.json +9 -2
  87. package/assets/i18n/ru.json +9 -2
  88. package/assets/i18n/sa.json +9 -0
  89. package/assets/i18n/sat.json +9 -0
  90. package/assets/i18n/sd.json +11 -2
  91. package/assets/i18n/si.json +10 -2
  92. package/assets/i18n/sk.json +6 -1
  93. package/assets/i18n/sl.json +10 -2
  94. package/assets/i18n/sm.json +7 -1
  95. package/assets/i18n/sn.json +6 -2
  96. package/assets/i18n/so.json +8 -1
  97. package/assets/i18n/sq.json +10 -2
  98. package/assets/i18n/sr.json +10 -2
  99. package/assets/i18n/st.json +8 -2
  100. package/assets/i18n/su.json +8 -2
  101. package/assets/i18n/sv.json +8 -2
  102. package/assets/i18n/sw.json +10 -2
  103. package/assets/i18n/ta.json +11 -2
  104. package/assets/i18n/te.json +11 -2
  105. package/assets/i18n/tg.json +11 -2
  106. package/assets/i18n/th.json +10 -1
  107. package/assets/i18n/tl.json +8 -2
  108. package/assets/i18n/tr.json +10 -2
  109. package/assets/i18n/uk.json +11 -2
  110. package/assets/i18n/ur.json +11 -2
  111. package/assets/i18n/uz.json +10 -2
  112. package/assets/i18n/vi.json +10 -1
  113. package/assets/i18n/xh.json +11 -2
  114. package/assets/i18n/yi.json +10 -1
  115. package/assets/i18n/yo.json +9 -1
  116. package/assets/i18n/zh.json +9 -1
  117. package/assets/i18n/zu.json +11 -2
  118. package/assets/index.json +1 -1
  119. package/fesm2022/{magmonium-one-attribute-value-CLBOZcme.mjs → magmonium-one-attribute-value-DMI0yJpL.mjs} +3 -3
  120. package/fesm2022/{magmonium-one-attribute-value-CLBOZcme.mjs.map → magmonium-one-attribute-value-DMI0yJpL.mjs.map} +1 -1
  121. package/fesm2022/{magmonium-one-base-checkbox-D7NYJdU3.mjs → magmonium-one-base-checkbox-C9dvZ2IH.mjs} +2 -2
  122. package/fesm2022/{magmonium-one-base-checkbox-D7NYJdU3.mjs.map → magmonium-one-base-checkbox-C9dvZ2IH.mjs.map} +1 -1
  123. package/fesm2022/{magmonium-one-base-dropdown-CEDsqaPz.mjs → magmonium-one-base-dropdown-U-cWl3p9.mjs} +10 -10
  124. package/fesm2022/{magmonium-one-base-dropdown-CEDsqaPz.mjs.map → magmonium-one-base-dropdown-U-cWl3p9.mjs.map} +1 -1
  125. package/fesm2022/{magmonium-one-base-input-BOaD-WIi.mjs → magmonium-one-base-input-CLBOTOUs.mjs} +2 -2
  126. package/fesm2022/{magmonium-one-base-input-BOaD-WIi.mjs.map → magmonium-one-base-input-CLBOTOUs.mjs.map} +1 -1
  127. package/fesm2022/{magmonium-one-base-text-D6p6_vsb.mjs → magmonium-one-base-text-Zb0oLNRX.mjs} +2 -2
  128. package/fesm2022/{magmonium-one-base-text-D6p6_vsb.mjs.map → magmonium-one-base-text-Zb0oLNRX.mjs.map} +1 -1
  129. package/fesm2022/{magmonium-one-button-rVNnp6G8.mjs → magmonium-one-button-Bwzaxxn3.mjs} +7 -7
  130. package/fesm2022/{magmonium-one-button-rVNnp6G8.mjs.map → magmonium-one-button-Bwzaxxn3.mjs.map} +1 -1
  131. package/fesm2022/{magmonium-one-checkbox-rj4XHxb3.mjs → magmonium-one-checkbox-CPQ9m291.mjs} +5 -5
  132. package/fesm2022/{magmonium-one-checkbox-rj4XHxb3.mjs.map → magmonium-one-checkbox-CPQ9m291.mjs.map} +1 -1
  133. package/fesm2022/{magmonium-one-color-utl-CirPzUFk.mjs → magmonium-one-color-utl-CAbZLKB5.mjs} +2 -2
  134. package/fesm2022/{magmonium-one-color-utl-CirPzUFk.mjs.map → magmonium-one-color-utl-CAbZLKB5.mjs.map} +1 -1
  135. package/fesm2022/{magmonium-one-directives-DOBENX_K.mjs → magmonium-one-directives-BVKX77zM.mjs} +4 -4
  136. package/fesm2022/{magmonium-one-directives-DOBENX_K.mjs.map → magmonium-one-directives-BVKX77zM.mjs.map} +1 -1
  137. package/fesm2022/{magmonium-one-group-Cue4x6tD.mjs → magmonium-one-group-D4yYrVP3.mjs} +7 -7
  138. package/fesm2022/{magmonium-one-group-Cue4x6tD.mjs.map → magmonium-one-group-D4yYrVP3.mjs.map} +1 -1
  139. package/fesm2022/{magmonium-one-header-DPVnaEOV.mjs → magmonium-one-header-DmN8M1a3.mjs} +4 -4
  140. package/fesm2022/{magmonium-one-header-DPVnaEOV.mjs.map → magmonium-one-header-DmN8M1a3.mjs.map} +1 -1
  141. package/fesm2022/{magmonium-one-icon-Dso-9RMN.mjs → magmonium-one-icon-Ep14YeRY.mjs} +4 -4
  142. package/fesm2022/{magmonium-one-icon-Dso-9RMN.mjs.map → magmonium-one-icon-Ep14YeRY.mjs.map} +1 -1
  143. package/fesm2022/{magmonium-one-image-editor-C7AtzEf6.mjs → magmonium-one-image-editor-BX4eNd4u.mjs} +4 -4
  144. package/fesm2022/{magmonium-one-image-editor-C7AtzEf6.mjs.map → magmonium-one-image-editor-BX4eNd4u.mjs.map} +1 -1
  145. package/fesm2022/{magmonium-one-label-B30Q4Vut.mjs → magmonium-one-label-D2gjTbKX.mjs} +2 -2
  146. package/fesm2022/{magmonium-one-label-B30Q4Vut.mjs.map → magmonium-one-label-D2gjTbKX.mjs.map} +1 -1
  147. package/fesm2022/{magmonium-one-m-ref-Dt0DCm8X.mjs → magmonium-one-m-ref-Bq0gQbKE.mjs} +2 -2
  148. package/fesm2022/{magmonium-one-m-ref-Dt0DCm8X.mjs.map → magmonium-one-m-ref-Bq0gQbKE.mjs.map} +1 -1
  149. package/fesm2022/{magmonium-one-menu-BBOnOK4M.mjs → magmonium-one-menu-BM9f2knw.mjs} +6 -6
  150. package/fesm2022/{magmonium-one-menu-BBOnOK4M.mjs.map → magmonium-one-menu-BM9f2knw.mjs.map} +1 -1
  151. package/fesm2022/{magmonium-one-multi-range-DCOwngql.mjs → magmonium-one-multi-range-a3ZVTy7i.mjs} +3 -3
  152. package/fesm2022/{magmonium-one-multi-range-DCOwngql.mjs.map → magmonium-one-multi-range-a3ZVTy7i.mjs.map} +1 -1
  153. package/fesm2022/{magmonium-one-options-asset-D8Gg1yNl.mjs → magmonium-one-options-asset-CDEXIif6.mjs} +2 -2
  154. package/fesm2022/{magmonium-one-options-asset-D8Gg1yNl.mjs.map → magmonium-one-options-asset-CDEXIif6.mjs.map} +1 -1
  155. package/fesm2022/{magmonium-one-otp-DLF7Pq94.mjs → magmonium-one-otp-DO4oTeSK.mjs} +5 -5
  156. package/fesm2022/{magmonium-one-otp-DLF7Pq94.mjs.map → magmonium-one-otp-DO4oTeSK.mjs.map} +1 -1
  157. package/fesm2022/{magmonium-one-password-BSOU4RI0.mjs → magmonium-one-password-D3oTo41c.mjs} +6 -6
  158. package/fesm2022/{magmonium-one-password-BSOU4RI0.mjs.map → magmonium-one-password-D3oTo41c.mjs.map} +1 -1
  159. package/fesm2022/{magmonium-one-radio-CYnWLXPZ.mjs → magmonium-one-radio-CkaWESS3.mjs} +3 -3
  160. package/fesm2022/{magmonium-one-radio-CYnWLXPZ.mjs.map → magmonium-one-radio-CkaWESS3.mjs.map} +1 -1
  161. package/fesm2022/{magmonium-one-range-CmmZAr57.mjs → magmonium-one-range-D_WEKrli.mjs} +4 -4
  162. package/fesm2022/{magmonium-one-range-CmmZAr57.mjs.map → magmonium-one-range-D_WEKrli.mjs.map} +1 -1
  163. package/fesm2022/{magmonium-one-selector-DDnBYNLr.mjs → magmonium-one-selector-BowevmOd.mjs} +4 -4
  164. package/fesm2022/{magmonium-one-selector-DDnBYNLr.mjs.map → magmonium-one-selector-BowevmOd.mjs.map} +1 -1
  165. package/fesm2022/{magmonium-one-size-converter-B-UubQQ0.mjs → magmonium-one-size-converter-BfT0Aw0g.mjs} +6 -3
  166. package/fesm2022/magmonium-one-size-converter-BfT0Aw0g.mjs.map +1 -0
  167. package/fesm2022/{magmonium-one-text-FXb-RyBh.mjs → magmonium-one-text-B4xKn-EQ.mjs} +6 -6
  168. package/fesm2022/{magmonium-one-text-FXb-RyBh.mjs.map → magmonium-one-text-B4xKn-EQ.mjs.map} +1 -1
  169. package/fesm2022/{magmonium-one-text-output-D2XQWyL0.mjs → magmonium-one-text-output-CfVeqYM7.mjs} +4 -4
  170. package/fesm2022/{magmonium-one-text-output-D2XQWyL0.mjs.map → magmonium-one-text-output-CfVeqYM7.mjs.map} +1 -1
  171. package/fesm2022/magmonium-one-theme-Xgsx8bJs.mjs +1 -0
  172. package/fesm2022/{magmonium-one-toggle-C0eTrtkt.mjs → magmonium-one-toggle-D2XEbN-b.mjs} +3 -3
  173. package/fesm2022/{magmonium-one-toggle-C0eTrtkt.mjs.map → magmonium-one-toggle-D2XEbN-b.mjs.map} +1 -1
  174. package/fesm2022/magmonium-one.mjs +329 -310
  175. package/fesm2022/magmonium-one.mjs.map +1 -1
  176. package/package.json +1 -1
  177. package/types/magmonium-one.d.ts +129 -38
  178. package/assets/menu/user_header.json +0 -27
  179. package/fesm2022/magmonium-one-size-converter-B-UubQQ0.mjs.map +0 -1
  180. package/fesm2022/magmonium-one-theme-a7GlFbzE.mjs +0 -1
@@ -1,30 +1,30 @@
1
1
  import { t as __exportAll } from "./magmonium-one-rolldown-runtime-DpJrqANO.mjs";
2
- import { $ as WC_BUNDLE, A as isUrlLocalhost, B as IS_DESIGN_MODE, C as setWcLocalPort, D as getTierFromPreviewPath, E as wcTierOf, F as AppAvailability, G as MODAL_STORE_REF, H as LOADING_ACTIONS_REF, I as AppRelationType, J as OPTIONS_SOURCE, K as NAV_STORE_REF, L as COMPONENT_INPUT_REGISTRY, M as APP_CONTEXT_REF, N as APP_LINK, O as isLocalhost, P as ASSET_BASE_URL, Q as USER_STORE_REF, R as FOLDER_PICK_LISTENER, S as recordDefinedWcTier, T as wcLocalBaseOf, U as LOGIN_COMPONENT, V as IS_SIDE_PANEL, W as LOGIN_STORE, X as SEARCH_RESULTS_EVENT, Y as SEARCH_QUERY, Z as TRANSLATION_SOURCE, _ as ACCESS_DOMAINS, a as resolveSpacing, at as Size, b as definedWcBundleOf, c as TranslatePipe, d as browserLocale, et as WC_SEARCH_GROUPS, f as miniMarkToHtml, g as isJson, h as StorageService, i as resolveSize, it as DEFAULT_SIZE, j as isWebComponent, k as isTierPreview, l as TranslateService, m as SharedStoreRegistry, n as isSize, nt as LAYOUT_ASSET_FOLDER, o as toCssLength, p as AssetStore, q as ONE_ASSET_BASE_URL, r as resolveIconSize, rt as Assets, s as toLength, t as coerceSize, tt as FORM_ASSET_FOLDER, u as BrowserLocaleService, v as HttpService, w as setWcTier, x as definedWcTierOf, y as buildWcBaseUrl, z as ICON_SOURCE } from "./magmonium-one-size-converter-B-UubQQ0.mjs";
3
- import { a as OverlayService, c as DeviceService, i as OverlayRef, n as Direction, o as ScrollService, r as ThemeService, s as DomService, t as SelectorDirective } from "./magmonium-one-selector-DDnBYNLr.mjs";
2
+ import { $ as WC_BUNDLE, A as isUrlLocalhost, B as IS_DESIGN_MODE, C as setWcLocalPort, D as getTierFromPreviewPath, E as wcTierOf, F as AppAvailability, G as MODAL_STORE_REF, H as LOADING_ACTIONS_REF, I as AppRelationType, J as OPTIONS_SOURCE, K as NAV_STORE_REF, L as COMPONENT_INPUT_REGISTRY, M as APP_CONTEXT_REF, N as APP_LINK, O as isLocalhost, P as ASSET_BASE_URL, Q as USER_STORE_REF, R as FOLDER_PICK_LISTENER, S as recordDefinedWcTier, T as wcLocalBaseOf, U as LOGIN_COMPONENT, V as IS_SIDE_PANEL, W as LOGIN_STORE, X as SEARCH_RESULTS_EVENT, Y as SEARCH_QUERY, Z as TRANSLATION_SOURCE, _ as ACCESS_DOMAINS, a as resolveSpacing, at as Size, b as definedWcBundleOf, c as TranslatePipe, d as browserLocale, et as WC_SEARCH_GROUPS, f as miniMarkToHtml, g as isJson, h as StorageService, i as resolveSize, it as DEFAULT_SIZE, j as isWebComponent, k as isTierPreview, l as TranslateService, m as SharedStoreRegistry, n as isSize, nt as LAYOUT_ASSET_FOLDER, o as toCssLength, p as AssetStore, q as ONE_ASSET_BASE_URL, r as resolveIconSize, rt as Assets, s as toLength, t as coerceSize, tt as FORM_ASSET_FOLDER, u as BrowserLocaleService, v as HttpService, w as setWcTier, x as definedWcTierOf, y as buildWcBaseUrl, z as ICON_SOURCE } from "./magmonium-one-size-converter-BfT0Aw0g.mjs";
3
+ import { a as OverlayService, c as DeviceService, i as OverlayRef, n as Direction, o as ScrollService, r as ThemeService, s as DomService, t as SelectorDirective } from "./magmonium-one-selector-BowevmOd.mjs";
4
4
  import { t as FileService } from "./magmonium-one-file.service-Bo06pU3_.mjs";
5
- import { a as calculateLuminance, c as hexToRgb, d as derivePropertyName, f as getProperty, h as ThemeDataService, i as deriveOppositeColor, l as hslToRgb, m as ThemeStore, n as resolvePallet, o as rgbToHex, p as setProperty, r as deriveContrastColor, s as rgbToHsl, t as applyColorsToElement, u as parseColor } from "./magmonium-one-color-utl-CirPzUFk.mjs";
6
- import "./magmonium-one-theme-a7GlFbzE.mjs";
7
- import { a as sectionTableColumnWidths, c as AssetUrlPipe, d as MoneyPipe, f as TimeAgoPipe, i as sectionTableColumnId, l as CompactNumberPipe, n as SectionTableSortPipe, o as sectionTableFrozenCount, r as nextSectionTableSort, s as sortSectionTableRows, t as LabelComponent, u as PercentagePipe } from "./magmonium-one-label-B30Q4Vut.mjs";
8
- import { a as injectParentSize, i as SIZE_CONTEXT, n as CustomIconClass, o as provideSizeContext, r as IconComponent, s as SHARED_ICONS, t as CustomIconEditComponent } from "./magmonium-one-icon-Dso-9RMN.mjs";
9
- import { i as resolveConfigAsset, n as toAttrNumber, r as ConfigComponent, t as toAttrBool } from "./magmonium-one-attribute-value-CLBOZcme.mjs";
10
- import { a as isButtonName, c as formatBadgeCount, l as shouldShowBadge, n as SECTION_FORM_CONTEXT, o as ReactiveElementComponent, r as ImgComponent, s as BadgeComponent, t as ButtonComponent } from "./magmonium-one-button-rVNnp6G8.mjs";
11
- import { t as MRefDirective } from "./magmonium-one-m-ref-Dt0DCm8X.mjs";
12
- import { t as HeaderComponent } from "./magmonium-one-header-DPVnaEOV.mjs";
13
- import { t as TextOutputComponent } from "./magmonium-one-text-output-D2XQWyL0.mjs";
14
- import { t as BaseInputComponent } from "./magmonium-one-base-input-BOaD-WIi.mjs";
15
- import { a as stringToColor, c as ToolTipDirective, d as DragListItemDirective, f as DragListDirective, i as MHeroColorDirective, l as FileUploadDirective, n as PaddingDirective, o as HighlightDirective, p as DraggableDirective, r as SPACING_INWARD, s as PositionDirective, t as MarginDirective, u as AutosizeDirective } from "./magmonium-one-directives-DOBENX_K.mjs";
16
- import { n as DROPDOWN_IMPORTS, r as DROPDOWN_TEMPLATE, t as BaseDropdownComponent } from "./magmonium-one-base-dropdown-CEDsqaPz.mjs";
17
- import { t as BaseTextInputComponent } from "./magmonium-one-base-text-D6p6_vsb.mjs";
5
+ import { a as calculateLuminance, c as hexToRgb, d as derivePropertyName, f as getProperty, h as ThemeDataService, i as deriveOppositeColor, l as hslToRgb, m as ThemeStore, n as resolvePallet, o as rgbToHex, p as setProperty, r as deriveContrastColor, s as rgbToHsl, t as applyColorsToElement, u as parseColor } from "./magmonium-one-color-utl-CAbZLKB5.mjs";
6
+ import "./magmonium-one-theme-Xgsx8bJs.mjs";
7
+ import { a as sectionTableColumnWidths, c as AssetUrlPipe, d as MoneyPipe, f as TimeAgoPipe, i as sectionTableColumnId, l as CompactNumberPipe, n as SectionTableSortPipe, o as sectionTableFrozenCount, r as nextSectionTableSort, s as sortSectionTableRows, t as LabelComponent, u as PercentagePipe } from "./magmonium-one-label-D2gjTbKX.mjs";
8
+ import { a as injectParentSize, i as SIZE_CONTEXT, n as CustomIconClass, o as provideSizeContext, r as IconComponent, s as SHARED_ICONS, t as CustomIconEditComponent } from "./magmonium-one-icon-Ep14YeRY.mjs";
9
+ import { i as resolveConfigAsset, n as toAttrNumber, r as ConfigComponent, t as toAttrBool } from "./magmonium-one-attribute-value-DMI0yJpL.mjs";
10
+ import { a as isButtonName, c as formatBadgeCount, l as shouldShowBadge, n as SECTION_FORM_CONTEXT, o as ReactiveElementComponent, r as ImgComponent, s as BadgeComponent, t as ButtonComponent } from "./magmonium-one-button-Bwzaxxn3.mjs";
11
+ import { t as MRefDirective } from "./magmonium-one-m-ref-Bq0gQbKE.mjs";
12
+ import { t as HeaderComponent } from "./magmonium-one-header-DmN8M1a3.mjs";
13
+ import { t as TextOutputComponent } from "./magmonium-one-text-output-CfVeqYM7.mjs";
14
+ import { t as BaseInputComponent } from "./magmonium-one-base-input-CLBOTOUs.mjs";
15
+ import { a as stringToColor, c as ToolTipDirective, d as DragListItemDirective, f as DragListDirective, i as MHeroColorDirective, l as FileUploadDirective, n as PaddingDirective, o as HighlightDirective, p as DraggableDirective, r as SPACING_INWARD, s as PositionDirective, t as MarginDirective, u as AutosizeDirective } from "./magmonium-one-directives-BVKX77zM.mjs";
16
+ import { n as DROPDOWN_IMPORTS, r as DROPDOWN_TEMPLATE, t as BaseDropdownComponent } from "./magmonium-one-base-dropdown-U-cWl3p9.mjs";
17
+ import { t as BaseTextInputComponent } from "./magmonium-one-base-text-Zb0oLNRX.mjs";
18
18
  import { t as InputType } from "./magmonium-one-input-DqHPorA1.mjs";
19
- import { t as TextInputComponent } from "./magmonium-one-text-FXb-RyBh.mjs";
20
- import { i as OptionsSourceDirective, n as normalizeAssetOptions, r as presetDefaultOption, t as assetOptions } from "./magmonium-one-options-asset-D8Gg1yNl.mjs";
21
- import { r as PLACED_CHECKBOX, t as CheckboxInputComponent } from "./magmonium-one-checkbox-rj4XHxb3.mjs";
22
- import { i as mergeUniqueWith, n as mergeUnique, r as mergeUniqueBy, t as ButtonGroupComponent } from "./magmonium-one-group-Cue4x6tD.mjs";
23
- import { n as ContextMenuBoxComponent, r as MenuComponent, t as ContextMenuComponent } from "./magmonium-one-menu-BBOnOK4M.mjs";
24
- import { t as BaseCheckboxInputComponent } from "./magmonium-one-base-checkbox-D7NYJdU3.mjs";
25
- import { t as RadioInputComponent } from "./magmonium-one-radio-CYnWLXPZ.mjs";
26
- import { r as BaseArrayInputComponent, t as MultiRangeInputComponent } from "./magmonium-one-multi-range-DCOwngql.mjs";
27
- import { t as RangeInputComponent } from "./magmonium-one-range-CmmZAr57.mjs";
19
+ import { t as TextInputComponent } from "./magmonium-one-text-B4xKn-EQ.mjs";
20
+ import { i as OptionsSourceDirective, n as normalizeAssetOptions, r as presetDefaultOption, t as assetOptions } from "./magmonium-one-options-asset-CDEXIif6.mjs";
21
+ import { r as PLACED_CHECKBOX, t as CheckboxInputComponent } from "./magmonium-one-checkbox-CPQ9m291.mjs";
22
+ import { i as mergeUniqueWith, n as mergeUnique, r as mergeUniqueBy, t as ButtonGroupComponent } from "./magmonium-one-group-D4yYrVP3.mjs";
23
+ import { n as ContextMenuBoxComponent, r as MenuComponent, t as ContextMenuComponent } from "./magmonium-one-menu-BM9f2knw.mjs";
24
+ import { t as BaseCheckboxInputComponent } from "./magmonium-one-base-checkbox-C9dvZ2IH.mjs";
25
+ import { t as RadioInputComponent } from "./magmonium-one-radio-CkaWESS3.mjs";
26
+ import { r as BaseArrayInputComponent, t as MultiRangeInputComponent } from "./magmonium-one-multi-range-a3ZVTy7i.mjs";
27
+ import { t as RangeInputComponent } from "./magmonium-one-range-D_WEKrli.mjs";
28
28
  import { o as isEditableImage, s as outputSize } from "./magmonium-one-image-frame-BTSaUSAi.mjs";
29
29
  import * as i0 from "@angular/core";
30
30
  import { ApplicationRef, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, DOCUMENT, DestroyRef, Directive, ElementRef, EventEmitter, HostAttributeToken, HostBinding, HostListener, Injectable, InjectionToken, Injector, Input, Output, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation, afterEveryRender, afterNextRender, afterRenderEffect, computed, contentChild, contentChildren, createComponent, effect, forwardRef, inject, input, inputBinding, linkedSignal, makeEnvironmentProviders, model, numberAttribute, output, outputBinding, provideAppInitializer, provideBrowserGlobalErrorListeners, provideZonelessChangeDetection, reflectComponentType, runInInjectionContext, signal, twoWayBinding, untracked, viewChild, viewChildren } from "@angular/core";
@@ -33,7 +33,6 @@ import { EMPTY, Observable, Subject, catchError, combineLatest, filter, finalize
33
33
  import { rxResource, takeUntilDestroyed, toObservable, toSignal } from "@angular/core/rxjs-interop";
34
34
  import { patchState, signalStore, withComputed, withHooks, withMethods, withProps, withState } from "@ngrx/signals";
35
35
  import { rxMethod } from "@ngrx/signals/rxjs-interop";
36
- import { catchError as catchError$1, map as map$1 } from "rxjs/operators";
37
36
  import { io } from "socket.io-client";
38
37
  import { ActivatedRoute, DefaultUrlSerializer, NavigationEnd, PRIMARY_OUTLET, Router, RouterLink, RouterOutlet, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree, isActive, provideRouter, withComponentInputBinding, withRouterConfig } from "@angular/router";
39
38
  import * as i1 from "@angular/common";
@@ -592,7 +591,7 @@ const navParamOf = (nav) => nav?.param ?? "id";
592
591
  const ROOT_NAV = "root";
593
592
  const DEFAULT_NAV_SEGMENT = "default";
594
593
  const NAV_ID_SEP = "_";
595
- const MURL_SEP = "|";
594
+ const MURL_SEP = "~";
596
595
  const URL_SEP = "/";
597
596
  const NAV_SEGMENT_RE = /^[a-z0-9][a-z0-9-]*$/;
598
597
  const isValidNavSegment = (segment) => NAV_SEGMENT_RE.test(segment);
@@ -645,7 +644,7 @@ const renderAddress = (navId, navMap, anchor, params) => {
645
644
  const urlNavId = url.join("_") || "root";
646
645
  const path = anchor && !params && (anchor.navId === urlNavId || murl.length > 0 && anchor.navId.startsWith(`${urlNavId}_`)) ? anchor.path : fillRoutePath(urlNavId, navMap, params);
647
646
  const base = path === "/" ? "/" : path.replace(/\/$/, "");
648
- return murl.length ? `${base}|${murl.join("|")}` : base;
647
+ return murl.length ? `${base}~${murl.join("~")}` : base;
649
648
  };
650
649
  const fillParams = (path, params) => params ? path.replace(/:([a-zA-Z0-9_]+)/g, (match, name) => params[name] !== void 0 ? String(params[name]) : match) : path;
651
650
  const fillRoutePath = (navId, navMap, params) => {
@@ -656,15 +655,15 @@ const fillRoutePath = (navId, navMap, params) => {
656
655
  return path === "/" ? `/${rest}` : `${path}/${rest}`;
657
656
  };
658
657
  const parseAddress = (address) => {
659
- const decoded = address.replace(/%7C/gi, "|");
660
- const cut = decoded.indexOf("|");
658
+ const decoded = address.replace(/%7C|%7E|\|/gi, "~");
659
+ const cut = decoded.indexOf("~");
661
660
  if (cut < 0) return {
662
661
  path: decoded,
663
662
  murl: []
664
663
  };
665
664
  return {
666
665
  path: decoded.slice(0, cut) || "/",
667
- murl: decoded.slice(cut + 1).split("|").filter(Boolean)
666
+ murl: decoded.slice(cut + 1).split("~").filter(Boolean)
668
667
  };
669
668
  };
670
669
  const navIdFor = (anchorNavId, murl) => murl.length ? [anchorNavId, ...murl].join("_") : anchorNavId;
@@ -691,14 +690,14 @@ var MurlUrlSerializer = class MurlUrlSerializer {
691
690
  if (!murl.length) return tree;
692
691
  return withQueryParams(tree, {
693
692
  ...tree.queryParams,
694
- ["__m"]: murl.join("|")
693
+ ["__m"]: murl.join("~")
695
694
  });
696
695
  }
697
696
  serialize(tree) {
698
697
  const { ["__m"]: murl, ...rest } = tree.queryParams ?? {};
699
698
  if (!murl) return this.#default.serialize(tree);
700
699
  const [path, tail] = splitTail(this.#default.serialize(withQueryParams(tree, rest)));
701
- return `${path === "/" ? "/" : path.replace(/\/$/, "")}|${murl}${tail}`;
700
+ return `${path === "/" ? "/" : path.replace(/\/$/, "")}~${murl}${tail}`;
702
701
  }
703
702
  static ɵfac = i0.ɵɵngDeclareFactory({
704
703
  minVersion: "12.0.0",
@@ -853,6 +852,7 @@ const PLATFORM_NAV_MAP = {
853
852
  }
854
853
  };
855
854
  const isPlatformNavId = (navId) => navId in PLATFORM_NAV_MAP;
855
+ const isPlatformPanelNavId = (navId) => PLATFORM_NAV_MAP[navId]?.presentation === "component";
856
856
  const PLATFORM_EXTENSIBLE_NAV_IDS = [ROOT_NAV, "root_settings"];
857
857
  const isExtensiblePlatformNavId = (navId) => PLATFORM_EXTENSIBLE_NAV_IDS.includes(navId);
858
858
  const createPlatformNavMap = () => Object.fromEntries(Object.entries(PLATFORM_NAV_MAP).map(([id, nav]) => [id, {
@@ -1162,6 +1162,7 @@ const initialState$3 = {
1162
1162
  navOpenedByUser: false,
1163
1163
  menuNavId: void 0,
1164
1164
  menuParams: void 0,
1165
+ browsedApp: void 0,
1165
1166
  keepPanelOnPathChange: false,
1166
1167
  panelPushed: false,
1167
1168
  navScrolledDown: false,
@@ -1203,6 +1204,12 @@ const routeParamsOf = (root) => {
1203
1204
  const visibilityKey = (navId, params) => `${navId}|${Object.keys(params).sort().map((name) => `${name}=${params[name]}`).join("&")}`;
1204
1205
  const isPromise$1 = (value) => typeof value?.then === "function";
1205
1206
  const urlSerializer = new DefaultUrlSerializer();
1207
+ const slotOf = (name, appNavId, path, outlets, navMap) => {
1208
+ if (outlets.includes(name)) return "side";
1209
+ const base = navIdToRoutePath(appNavId, navMap);
1210
+ const primary = path.split("(")[0];
1211
+ return primary === base || primary.startsWith(`${base}/`) ? "main" : void 0;
1212
+ };
1206
1213
  const outletsOf = (url) => {
1207
1214
  try {
1208
1215
  return Object.keys(urlSerializer.parse(url).root.children).filter((name) => name !== PRIMARY_OUTLET);
@@ -1212,7 +1219,7 @@ const outletsOf = (url) => {
1212
1219
  };
1213
1220
  const murlOf = (root) => {
1214
1221
  const raw = root.queryParams?.["__m"];
1215
- return typeof raw === "string" ? raw.split("|").filter(Boolean) : [];
1222
+ return typeof raw === "string" ? raw.split("~").filter(Boolean) : [];
1216
1223
  };
1217
1224
  const NavStore = signalStore({ providedIn: "root" }, withState(initialState$3), withProps(() => {
1218
1225
  const router = inject(Router);
@@ -1313,10 +1320,9 @@ const NavStore = signalStore({ providedIn: "root" }, withState(initialState$3),
1313
1320
  const maps = navWidgetMaps ?? [];
1314
1321
  const navId = candidate;
1315
1322
  const mount = mountFor(navId, allMounts());
1316
- if (mount) {
1317
- const registered = store.remoteWidgets()[mount.link];
1318
- const localId = toLocalNavId(navId, mount.appNavId);
1319
- const entry = registered?.widgetMap()[localId];
1323
+ const localId = mount && toLocalNavId(navId, mount.appNavId);
1324
+ if (mount && localId && !isPlatformPanelNavId(localId)) {
1325
+ const entry = store.remoteWidgets()[mount.link]?.widgetMap()[localId];
1320
1326
  if (entry) return {
1321
1327
  entry,
1322
1328
  remote: true
@@ -1460,7 +1466,16 @@ const NavStore = signalStore({ providedIn: "root" }, withState(initialState$3),
1460
1466
  return candidates.find((c) => menuChildIds(c, map, rows, dynamicInstances(), hiddenNavIds(), transparentNavIds()).length) ?? candidates.find((c) => !!map[c]) ?? candidates[0];
1461
1467
  };
1462
1468
  const panelNavId = computed(() => answeringNavId(widgetNavIds(), widgetEntry()), ...ngDevMode ? [{ debugName: "panelNavId" }] : /* istanbul ignore next */ []);
1463
- const standingNavId = computed(() => store.menuNavId() ? answeringNavId(addressNavIds(), firstEntry(addressNavIds())) : panelNavId(), ...ngDevMode ? [{ debugName: "standingNavId" }] : /* istanbul ignore next */ []);
1469
+ const standingNavId = computed(() => {
1470
+ const browsed = store.menuNavId();
1471
+ if (!browsed) return panelNavId();
1472
+ const mount = mountFor(browsed, allMounts());
1473
+ if (mount?.urlMode === "outlet") {
1474
+ const route = store.mountRoutes()[mount.name];
1475
+ return route ? toHostNavId(route.navId, mount.appNavId) : mount.appNavId;
1476
+ }
1477
+ return answeringNavId(addressNavIds(), firstEntry(addressNavIds()));
1478
+ }, ...ngDevMode ? [{ debugName: "standingNavId" }] : /* istanbul ignore next */ []);
1464
1479
  const breadcrumbResult = computed(() => {
1465
1480
  const menuConfig = resolvedNavMenuConfig();
1466
1481
  const widgetConfig = resolvedWidget();
@@ -1534,6 +1549,11 @@ const NavStore = signalStore({ providedIn: "root" }, withState(initialState$3),
1534
1549
  });
1535
1550
  const mount = mountOf(navId);
1536
1551
  if (mount?.navigate) {
1552
+ if (!options?.keepPanel) patchState(store, {
1553
+ navOpenedByUser: false,
1554
+ menuNavId: void 0,
1555
+ browsedApp: void 0
1556
+ });
1537
1557
  const map = untracked(() => store.navMap());
1538
1558
  const own = navIdToRoutePath(mount.appNavId, map);
1539
1559
  const full = fillRoutePath(navId, map, params);
@@ -1541,7 +1561,10 @@ const NavStore = signalStore({ providedIn: "root" }, withState(initialState$3),
1541
1561
  return;
1542
1562
  }
1543
1563
  const wasOpen = untracked(() => store.hasMurl());
1544
- patchState(store, { menuNavId: void 0 });
1564
+ patchState(store, {
1565
+ menuNavId: void 0,
1566
+ browsedApp: void 0
1567
+ });
1545
1568
  const address = addressFor(navId, params);
1546
1569
  if (willOpen && !wasOpen) patchState(store, { panelPushed: true });
1547
1570
  router.navigateByUrl(address, { replaceUrl: !!options?.replaceUrl || wasOpen && willOpen });
@@ -1568,12 +1591,16 @@ const NavStore = signalStore({ providedIn: "root" }, withState(initialState$3),
1568
1591
  const target = knownNavId(navId);
1569
1592
  const map = untracked(() => store.navMap());
1570
1593
  if (navIdChain(target).every((id) => map[id])) return follow();
1571
- getNavService.getNav(target, map, {
1594
+ const mounts = untracked(() => store.allMounts());
1595
+ const ctx = {
1572
1596
  appNavId: untracked(() => store.appNavId()),
1573
1597
  appLink: untracked(() => store.appLink()),
1574
- mounts: untracked(() => store.allMounts())
1575
- }).subscribe({
1576
- next: (delta) => {
1598
+ mounts
1599
+ };
1600
+ const candidates = target === navId && !map[navId] ? [navId, ...mounts.map(({ appNavId }) => toHostNavId(navId, appNavId))] : [target];
1601
+ forkJoin(candidates.map((id) => getNavService.getNav(id, map, ctx))).subscribe({
1602
+ next: (deltas) => {
1603
+ const delta = Object.assign({}, ...deltas);
1577
1604
  if (!Object.keys(delta).length) return;
1578
1605
  patchState(store, (state) => ({ navMap: {
1579
1606
  ...state.navMap,
@@ -1603,7 +1630,8 @@ const NavStore = signalStore({ providedIn: "root" }, withState(initialState$3),
1603
1630
  const closePanel = () => {
1604
1631
  patchState(store, {
1605
1632
  navOpenedByUser: false,
1606
- menuNavId: void 0
1633
+ menuNavId: void 0,
1634
+ browsedApp: void 0
1607
1635
  });
1608
1636
  if (!untracked(() => store.hasMurl())) return;
1609
1637
  if (untracked(() => store.panelPushed())) {
@@ -1630,11 +1658,14 @@ const NavStore = signalStore({ providedIn: "root" }, withState(initialState$3),
1630
1658
  const routeParams = routeParamsOf(snapshot.root);
1631
1659
  const routeChain = routeChainOf(snapshot.root);
1632
1660
  const murl = murlOf(snapshot.root);
1633
- const path = router.url.split("|")[0].split("?")[0];
1661
+ const path = router.url.split("~")[0].split("?")[0];
1634
1662
  const outlets = outletsOf(router.url);
1635
1663
  untracked(() => {
1636
1664
  const pathChanged = path !== store.path();
1637
1665
  const keepPanel = store.keepPanelOnPathChange();
1666
+ const browsed = store.browsedApp();
1667
+ const slot = browsed && slotOf(browsed.name, browsed.appNavId, path, outlets, store.navMap());
1668
+ const moved = !!browsed && !!slot && slot !== browsed.slot;
1638
1669
  patchState(store, {
1639
1670
  path,
1640
1671
  outlets,
@@ -1644,8 +1675,12 @@ const NavStore = signalStore({ providedIn: "root" }, withState(initialState$3),
1644
1675
  }),
1645
1676
  routeChain,
1646
1677
  murl,
1647
- menuNavId: void 0,
1648
- navOpenedByUser: pathChanged && !keepPanel ? false : store.navOpenedByUser(),
1678
+ menuNavId: moved ? store.menuNavId() : void 0,
1679
+ browsedApp: moved && browsed && slot ? {
1680
+ ...browsed,
1681
+ slot
1682
+ } : void 0,
1683
+ navOpenedByUser: pathChanged && !keepPanel && !moved ? false : store.navOpenedByUser(),
1649
1684
  keepPanelOnPathChange: false,
1650
1685
  navScrolledDown: pathChanged ? false : store.navScrolledDown(),
1651
1686
  panelPushed: murl.length ? store.panelPushed() : false
@@ -1708,9 +1743,9 @@ const NavStore = signalStore({ providedIn: "root" }, withState(initialState$3),
1708
1743
  ...state.navMap,
1709
1744
  ...delta
1710
1745
  } })));
1711
- const unregisterMount = (name) => {
1746
+ const unregisterMount = (name, navigate) => {
1712
1747
  const mount = untracked(() => store.mounts())[name];
1713
- if (!mount) return;
1748
+ if (!mount || navigate && mount.navigate !== navigate) return;
1714
1749
  translateService.unmountRemoteApp(mount.link);
1715
1750
  patchState(store, (state) => ({
1716
1751
  mounts: Object.fromEntries(Object.entries(state.mounts).filter(([key]) => key !== name)),
@@ -1739,9 +1774,26 @@ const NavStore = signalStore({ providedIn: "root" }, withState(initialState$3),
1739
1774
  browse(visibleNavId(parent, untracked(() => store.transparentNavIds())), untracked(() => store.panelParams()));
1740
1775
  };
1741
1776
  const browse = (navId, params) => {
1777
+ const app = untracked(() => store.browsedApp());
1778
+ const within = !!app && toLocalNavId(navId, app.appNavId) !== void 0;
1742
1779
  patchState(store, {
1743
1780
  menuNavId: navId,
1744
- menuParams: params
1781
+ menuParams: params,
1782
+ ...within ? {} : { browsedApp: void 0 }
1783
+ });
1784
+ };
1785
+ const browseApp = (appNavId) => {
1786
+ const mount = mountOf(appNavId);
1787
+ const slot = mount && slotOf(mount.name, mount.appNavId, untracked(() => store.path()), untracked(() => store.outlets()), untracked(() => store.navMap()));
1788
+ patchState(store, {
1789
+ navOpenedByUser: true,
1790
+ menuNavId: appNavId,
1791
+ menuParams: void 0,
1792
+ browsedApp: mount && slot ? {
1793
+ name: mount.name,
1794
+ appNavId: mount.appNavId,
1795
+ slot
1796
+ } : void 0
1745
1797
  });
1746
1798
  };
1747
1799
  const loadNav = rxMethod(pipe(filter((req) => !!req.navId), tap(() => untracked(() => patchState(store, { navLoading: true }))), switchMap(({ navId, appNavId }) => {
@@ -1790,6 +1842,7 @@ const NavStore = signalStore({ providedIn: "root" }, withState(initialState$3),
1790
1842
  registerWidgets,
1791
1843
  back,
1792
1844
  browse,
1845
+ browseApp,
1793
1846
  resolveUrl,
1794
1847
  setNavScrolledDown,
1795
1848
  routePathFor: (navId) => navIdToRoutePath(navId, store.navMap()),
@@ -3982,12 +4035,12 @@ var SectionFormItemComponent = class SectionFormItemComponent extends ConfigComp
3982
4035
  try {
3983
4036
  switch (type) {
3984
4037
  case InputType.RADIO: {
3985
- const { RadioInputComponent } = await import("./magmonium-one-radio-CYnWLXPZ.mjs").then((n) => n.n);
4038
+ const { RadioInputComponent } = await import("./magmonium-one-radio-CkaWESS3.mjs").then((n) => n.n);
3986
4039
  this.createDynamicComponent(seq, RadioInputComponent);
3987
4040
  break;
3988
4041
  }
3989
4042
  case InputType.TOGGLE: {
3990
- const { ToggleInputComponent } = await import("./magmonium-one-toggle-C0eTrtkt.mjs");
4043
+ const { ToggleInputComponent } = await import("./magmonium-one-toggle-D2XEbN-b.mjs");
3991
4044
  this.createDynamicComponent(seq, ToggleInputComponent, [], true);
3992
4045
  break;
3993
4046
  }
@@ -3997,12 +4050,12 @@ var SectionFormItemComponent = class SectionFormItemComponent extends ConfigComp
3997
4050
  break;
3998
4051
  }
3999
4052
  case InputType.PASSWORD: {
4000
- const { PasswordInputComponent } = await import("./magmonium-one-password-BSOU4RI0.mjs");
4053
+ const { PasswordInputComponent } = await import("./magmonium-one-password-D3oTo41c.mjs");
4001
4054
  this.createDynamicComponent(seq, PasswordInputComponent);
4002
4055
  break;
4003
4056
  }
4004
4057
  case InputType.OTP: {
4005
- const { OtpInputComponent } = await import("./magmonium-one-otp-DLF7Pq94.mjs");
4058
+ const { OtpInputComponent } = await import("./magmonium-one-otp-DO4oTeSK.mjs");
4006
4059
  this.createDynamicComponent(seq, OtpInputComponent);
4007
4060
  break;
4008
4061
  }
@@ -4012,7 +4065,7 @@ var SectionFormItemComponent = class SectionFormItemComponent extends ConfigComp
4012
4065
  break;
4013
4066
  }
4014
4067
  case InputType.CHECKBOX: {
4015
- const { CheckboxInputComponent } = await import("./magmonium-one-checkbox-rj4XHxb3.mjs").then((n) => n.n);
4068
+ const { CheckboxInputComponent } = await import("./magmonium-one-checkbox-CPQ9m291.mjs").then((n) => n.n);
4016
4069
  this.createDynamicComponent(seq, CheckboxInputComponent, [], true);
4017
4070
  break;
4018
4071
  }
@@ -4027,12 +4080,12 @@ var SectionFormItemComponent = class SectionFormItemComponent extends ConfigComp
4027
4080
  break;
4028
4081
  }
4029
4082
  case InputType.RANGE: {
4030
- const { RangeInputComponent } = await import("./magmonium-one-range-CmmZAr57.mjs").then((n) => n.n);
4083
+ const { RangeInputComponent } = await import("./magmonium-one-range-D_WEKrli.mjs").then((n) => n.n);
4031
4084
  this.createDynamicComponent(seq, RangeInputComponent);
4032
4085
  break;
4033
4086
  }
4034
4087
  case InputType.MULTI_RANGE: {
4035
- const { MultiRangeInputComponent } = await import("./magmonium-one-multi-range-DCOwngql.mjs").then((n) => n.n);
4088
+ const { MultiRangeInputComponent } = await import("./magmonium-one-multi-range-a3ZVTy7i.mjs").then((n) => n.n);
4036
4089
  this.createDynamicComponent(seq, MultiRangeInputComponent);
4037
4090
  break;
4038
4091
  }
@@ -4083,7 +4136,7 @@ var SectionFormItemComponent = class SectionFormItemComponent extends ConfigComp
4083
4136
  break;
4084
4137
  }
4085
4138
  default: {
4086
- const { TextInputComponent } = await import("./magmonium-one-text-FXb-RyBh.mjs").then((n) => n.n);
4139
+ const { TextInputComponent } = await import("./magmonium-one-text-B4xKn-EQ.mjs").then((n) => n.n);
4087
4140
  this.createDynamicComponent(seq, TextInputComponent);
4088
4141
  break;
4089
4142
  }
@@ -7759,7 +7812,7 @@ var SectionSearchComponent = class SectionSearchComponent extends BaseTextInputC
7759
7812
  }
7760
7813
  `,
7761
7814
  isInline: true,
7762
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:flex;align-items:center;width:100%;grid-column:1/-1;box-sizing:border-box;min-height:var(--section-header-min-height, calc(var(--section-header-py, 1rem) * 2 + 1.375rem));border-bottom:1px solid var(--m-section-search-border, var(--m-backdrop-border));padding:var(--section-header-py, .75rem) var(--section-px, 1rem);--m-header-size: 1rem}:host.has-sidepanel{padding-right:50px}:host.has-results{flex-direction:column;align-items:stretch}:host(.no-border){border-bottom:none}:host(.is-sticky-enabled){position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}.section-search__bar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%}.section-search__bar>*:not(.section-search__toggle){flex:1;min-width:0}.section-search__bar m-header{font-size:1rem}.section-search__bar .section-search__toggle{flex-shrink:0;margin-inline-start:auto;--m-button-size: 1rem !important}.section-search__field{display:flex;align-items:center;width:100%}.section-search__field m-input-clear{width:100%}.section-search__results{display:block;width:100%;padding-top:.5rem}\n"],
7815
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:flex;align-items:center;width:100%;grid-column:1/-1;box-sizing:border-box;min-height:var(--section-header-min-height, calc(var(--section-header-py, 1rem) * 2 + 1.375rem));border-bottom:1px solid var(--m-section-search-border, var(--m-backdrop-border));padding:var(--section-header-py, .75rem) var(--section-px, 1rem);--m-header-size: 1rem}:host.has-sidepanel{padding-right:50px}:host.has-results{flex-direction:column;align-items:stretch}:host(.no-border){border-bottom:none}:host-context(m-section-header){--section-px: 0;--section-header-py: 0;--m-section-search-border: transparent}:host(.is-sticky-enabled){position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}.section-search__bar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%}.section-search__bar>*:not(.section-search__toggle){flex:1;min-width:0}.section-search__bar m-header{font-size:1rem}.section-search__bar .section-search__toggle{flex-shrink:0;margin-inline-start:auto;--m-button-size: 1rem !important}.section-search__field{display:flex;align-items:center;width:100%}.section-search__field m-input-clear{width:100%}.section-search__results{display:block;width:100%;padding-top:.5rem}\n"],
7763
7816
  dependencies: [
7764
7817
  {
7765
7818
  kind: "component",
@@ -7916,7 +7969,7 @@ i0.ɵɵngDeclareClassMetadata({
7916
7969
  "[class.no-border]": "noBorder()"
7917
7970
  },
7918
7971
  changeDetection: ChangeDetectionStrategy.OnPush,
7919
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:flex;align-items:center;width:100%;grid-column:1/-1;box-sizing:border-box;min-height:var(--section-header-min-height, calc(var(--section-header-py, 1rem) * 2 + 1.375rem));border-bottom:1px solid var(--m-section-search-border, var(--m-backdrop-border));padding:var(--section-header-py, .75rem) var(--section-px, 1rem);--m-header-size: 1rem}:host.has-sidepanel{padding-right:50px}:host.has-results{flex-direction:column;align-items:stretch}:host(.no-border){border-bottom:none}:host(.is-sticky-enabled){position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}.section-search__bar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%}.section-search__bar>*:not(.section-search__toggle){flex:1;min-width:0}.section-search__bar m-header{font-size:1rem}.section-search__bar .section-search__toggle{flex-shrink:0;margin-inline-start:auto;--m-button-size: 1rem !important}.section-search__field{display:flex;align-items:center;width:100%}.section-search__field m-input-clear{width:100%}.section-search__results{display:block;width:100%;padding-top:.5rem}\n"]
7972
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:flex;align-items:center;width:100%;grid-column:1/-1;box-sizing:border-box;min-height:var(--section-header-min-height, calc(var(--section-header-py, 1rem) * 2 + 1.375rem));border-bottom:1px solid var(--m-section-search-border, var(--m-backdrop-border));padding:var(--section-header-py, .75rem) var(--section-px, 1rem);--m-header-size: 1rem}:host.has-sidepanel{padding-right:50px}:host.has-results{flex-direction:column;align-items:stretch}:host(.no-border){border-bottom:none}:host-context(m-section-header){--section-px: 0;--section-header-py: 0;--m-section-search-border: transparent}:host(.is-sticky-enabled){position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}.section-search__bar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%}.section-search__bar>*:not(.section-search__toggle){flex:1;min-width:0}.section-search__bar m-header{font-size:1rem}.section-search__bar .section-search__toggle{flex-shrink:0;margin-inline-start:auto;--m-button-size: 1rem !important}.section-search__field{display:flex;align-items:center;width:100%}.section-search__field m-input-clear{width:100%}.section-search__results{display:block;width:100%;padding-top:.5rem}\n"]
7920
7973
  }]
7921
7974
  }],
7922
7975
  ctorParameters: () => [],
@@ -15071,6 +15124,7 @@ var BaseRootWebComponent = class BaseRootWebComponent extends BaseWebComponent {
15071
15124
  query = input(...ngDevMode ? [void 0, { debugName: "query" }] : /* istanbul ignore next */ []);
15072
15125
  navWidgetMaps = inject(NAV_WIDGET_MAP, { optional: true });
15073
15126
  appBaseHref = inject(APP_BASE_HREF, { optional: true });
15127
+ location = inject(Location);
15074
15128
  injector = inject(Injector);
15075
15129
  wcComponents = inject(NAV_WC_COMPONENTS, { optional: true });
15076
15130
  defaultNavId = inject(NAV_DEFAULT_MURL, { optional: true });
@@ -15116,7 +15170,8 @@ var BaseRootWebComponent = class BaseRootWebComponent extends BaseWebComponent {
15116
15170
  untracked(() => {
15117
15171
  this.wcRouterStore.setExtra(path);
15118
15172
  const normalizedPath = path || "";
15119
- if (this.router.url.split("?")[0].replace(/^\//, "") !== normalizedPath) this.router.navigateByUrl(normalizedPath, { skipLocationChange: true });
15173
+ const currentUrl = this.router.url.split("?")[0].replace(/^\//, "");
15174
+ if (!this.router.navigated || currentUrl !== normalizedPath) this.router.navigateByUrl(normalizedPath, { skipLocationChange: true });
15120
15175
  });
15121
15176
  });
15122
15177
  let appId;
@@ -15163,7 +15218,7 @@ var BaseRootWebComponent = class BaseRootWebComponent extends BaseWebComponent {
15163
15218
  this.agreementGate.ensure(id);
15164
15219
  });
15165
15220
  });
15166
- this.router.initialNavigation();
15221
+ if (Object.keys(this.router.parseUrl(this.location.path()).root.children).every((outlet) => outlet === "primary")) this.router.initialNavigation();
15167
15222
  const initialPath = this.extra();
15168
15223
  if (initialPath !== void 0) this.router.navigateByUrl(initialPath || "", { skipLocationChange: true });
15169
15224
  const destroyRef = inject(DestroyRef);
@@ -16229,7 +16284,7 @@ var RowComponent = class RowComponent extends ConfigComponent {
16229
16284
  </div>
16230
16285
  `,
16231
16286
  isInline: true,
16232
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;grid-column:span 12;width:100%;box-sizing:border-box;border-bottom:1px solid var(--m-backdrop-border);min-height:5em}:host(.no-border){border-bottom:none}:host-context(.is-with-border):last-child,:host-context(.is-sandwich-border):last-child{border-bottom:none}:host.has-padding-y{padding-block:var(--m-row-py, var(--section-pt, var(--_section-pt, 1.5rem)))}.m-row__body{display:flex;flex-wrap:wrap;align-content:flex-start;max-width:var(--m-row-max-width);margin-inline:auto}:host.has-padding-x .m-row__body{padding-inline:var(--m-row-px, var(--section-px, var(--_section-px, 1rem)))}:host.is-center .m-row__body{display:flex;justify-content:center;align-items:center}:host(.align-left) .m-row__body{margin-inline-start:0;margin-inline-end:auto}:host(.align-right) .m-row__body{margin-inline-start:auto;margin-inline-end:0;justify-content:flex-end}:host(.align-center) .m-row__body{margin-inline:auto;justify-content:center}\n"],
16287
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;grid-column:span 12;width:100%;box-sizing:border-box;border-bottom:1px solid var(--m-backdrop-border);min-height:var(--m-row-min-height, 5em)}:host(.no-border){border-bottom:none}:host-context(.is-with-border):last-child,:host-context(.is-sandwich-border):last-child{border-bottom:none}:host.has-padding-y{padding-block:var(--m-row-py, var(--section-pt, var(--_section-pt, 1.5rem)))}.m-row__body{display:flex;flex-wrap:wrap;align-content:flex-start;max-width:var(--m-row-max-width);margin-inline:auto}:host.has-padding-x .m-row__body{padding-inline:var(--m-row-px, var(--section-px, var(--_section-px, 1rem)))}:host.is-center .m-row__body{display:flex;justify-content:center;align-items:center}:host(.align-left) .m-row__body{margin-inline-start:0;margin-inline-end:auto}:host(.align-right) .m-row__body{margin-inline-start:auto;margin-inline-end:0;justify-content:flex-end}:host(.align-center) .m-row__body{margin-inline:auto;justify-content:center}\n"],
16233
16288
  changeDetection: i0.ChangeDetectionStrategy.OnPush
16234
16289
  });
16235
16290
  };
@@ -16253,7 +16308,7 @@ i0.ɵɵngDeclareClassMetadata({
16253
16308
  "[class]": "classes()",
16254
16309
  "[style.--m-row-max-width]": "resolvedMaxWidth()"
16255
16310
  },
16256
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;grid-column:span 12;width:100%;box-sizing:border-box;border-bottom:1px solid var(--m-backdrop-border);min-height:5em}:host(.no-border){border-bottom:none}:host-context(.is-with-border):last-child,:host-context(.is-sandwich-border):last-child{border-bottom:none}:host.has-padding-y{padding-block:var(--m-row-py, var(--section-pt, var(--_section-pt, 1.5rem)))}.m-row__body{display:flex;flex-wrap:wrap;align-content:flex-start;max-width:var(--m-row-max-width);margin-inline:auto}:host.has-padding-x .m-row__body{padding-inline:var(--m-row-px, var(--section-px, var(--_section-px, 1rem)))}:host.is-center .m-row__body{display:flex;justify-content:center;align-items:center}:host(.align-left) .m-row__body{margin-inline-start:0;margin-inline-end:auto}:host(.align-right) .m-row__body{margin-inline-start:auto;margin-inline-end:0;justify-content:flex-end}:host(.align-center) .m-row__body{margin-inline:auto;justify-content:center}\n"]
16311
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;grid-column:span 12;width:100%;box-sizing:border-box;border-bottom:1px solid var(--m-backdrop-border);min-height:var(--m-row-min-height, 5em)}:host(.no-border){border-bottom:none}:host-context(.is-with-border):last-child,:host-context(.is-sandwich-border):last-child{border-bottom:none}:host.has-padding-y{padding-block:var(--m-row-py, var(--section-pt, var(--_section-pt, 1.5rem)))}.m-row__body{display:flex;flex-wrap:wrap;align-content:flex-start;max-width:var(--m-row-max-width);margin-inline:auto}:host.has-padding-x .m-row__body{padding-inline:var(--m-row-px, var(--section-px, var(--_section-px, 1rem)))}:host.is-center .m-row__body{display:flex;justify-content:center;align-items:center}:host(.align-left) .m-row__body{margin-inline-start:0;margin-inline-end:auto}:host(.align-right) .m-row__body{margin-inline-start:auto;margin-inline-end:0;justify-content:flex-end}:host(.align-center) .m-row__body{margin-inline:auto;justify-content:center}\n"]
16257
16312
  }]
16258
16313
  }],
16259
16314
  propDecorators: {
@@ -21462,12 +21517,12 @@ var WrapperInputComponent = class WrapperInputComponent extends ConfigComponent
21462
21517
  const seq = ++this.dynamicSeq;
21463
21518
  switch (this.config()?.type) {
21464
21519
  case InputType.RADIO: {
21465
- const { RadioInputComponent } = await import("./magmonium-one-radio-CYnWLXPZ.mjs").then((n) => n.n);
21520
+ const { RadioInputComponent } = await import("./magmonium-one-radio-CkaWESS3.mjs").then((n) => n.n);
21466
21521
  this.createDynamicComponent(seq, RadioInputComponent);
21467
21522
  break;
21468
21523
  }
21469
21524
  case InputType.TOGGLE: {
21470
- const { ToggleInputComponent } = await import("./magmonium-one-toggle-C0eTrtkt.mjs");
21525
+ const { ToggleInputComponent } = await import("./magmonium-one-toggle-D2XEbN-b.mjs");
21471
21526
  this.createDynamicComponent(seq, ToggleInputComponent, [], true);
21472
21527
  break;
21473
21528
  }
@@ -21477,12 +21532,12 @@ var WrapperInputComponent = class WrapperInputComponent extends ConfigComponent
21477
21532
  break;
21478
21533
  }
21479
21534
  case InputType.PASSWORD: {
21480
- const { PasswordInputComponent } = await import("./magmonium-one-password-BSOU4RI0.mjs");
21535
+ const { PasswordInputComponent } = await import("./magmonium-one-password-D3oTo41c.mjs");
21481
21536
  this.createDynamicComponent(seq, PasswordInputComponent);
21482
21537
  break;
21483
21538
  }
21484
21539
  case InputType.OTP: {
21485
- const { OtpInputComponent } = await import("./magmonium-one-otp-DLF7Pq94.mjs");
21540
+ const { OtpInputComponent } = await import("./magmonium-one-otp-DO4oTeSK.mjs");
21486
21541
  this.createDynamicComponent(seq, OtpInputComponent);
21487
21542
  break;
21488
21543
  }
@@ -21492,7 +21547,7 @@ var WrapperInputComponent = class WrapperInputComponent extends ConfigComponent
21492
21547
  break;
21493
21548
  }
21494
21549
  case InputType.CHECKBOX: {
21495
- const { CheckboxInputComponent } = await import("./magmonium-one-checkbox-rj4XHxb3.mjs").then((n) => n.n);
21550
+ const { CheckboxInputComponent } = await import("./magmonium-one-checkbox-CPQ9m291.mjs").then((n) => n.n);
21496
21551
  this.createDynamicComponent(seq, CheckboxInputComponent, [], true);
21497
21552
  break;
21498
21553
  }
@@ -21507,12 +21562,12 @@ var WrapperInputComponent = class WrapperInputComponent extends ConfigComponent
21507
21562
  break;
21508
21563
  }
21509
21564
  case InputType.RANGE: {
21510
- const { RangeInputComponent } = await import("./magmonium-one-range-CmmZAr57.mjs").then((n) => n.n);
21565
+ const { RangeInputComponent } = await import("./magmonium-one-range-D_WEKrli.mjs").then((n) => n.n);
21511
21566
  this.createDynamicComponent(seq, RangeInputComponent);
21512
21567
  break;
21513
21568
  }
21514
21569
  case InputType.MULTI_RANGE: {
21515
- const { MultiRangeInputComponent } = await import("./magmonium-one-multi-range-DCOwngql.mjs").then((n) => n.n);
21570
+ const { MultiRangeInputComponent } = await import("./magmonium-one-multi-range-a3ZVTy7i.mjs").then((n) => n.n);
21516
21571
  this.createDynamicComponent(seq, MultiRangeInputComponent);
21517
21572
  break;
21518
21573
  }
@@ -21563,7 +21618,7 @@ var WrapperInputComponent = class WrapperInputComponent extends ConfigComponent
21563
21618
  break;
21564
21619
  }
21565
21620
  default: {
21566
- const { TextInputComponent } = await import("./magmonium-one-text-FXb-RyBh.mjs").then((n) => n.n);
21621
+ const { TextInputComponent } = await import("./magmonium-one-text-B4xKn-EQ.mjs").then((n) => n.n);
21567
21622
  this.createDynamicComponent(seq, TextInputComponent);
21568
21623
  break;
21569
21624
  }
@@ -23879,7 +23934,7 @@ var FileUploadInputComponent = class FileUploadInputComponent extends BaseInputC
23879
23934
  openEditor = async (file, size) => {
23880
23935
  const modalStore = this.modalStore;
23881
23936
  if (!modalStore) return void 0;
23882
- const { ImageEditorComponent } = await import("./magmonium-one-image-editor-C7AtzEf6.mjs");
23937
+ const { ImageEditorComponent } = await import("./magmonium-one-image-editor-BX4eNd4u.mjs");
23883
23938
  const ratio = String(this.config()?.ratio ?? "");
23884
23939
  return new Promise((resolve) => {
23885
23940
  const modalRef = new ModalRef();
@@ -29032,7 +29087,7 @@ var RemoteComponent = class RemoteComponent {
29032
29087
  return this.router && name ? new RemoteUrl(this.router, untracked(() => this.urlMode()), name, untracked(() => this.ownTail())) : void 0;
29033
29088
  };
29034
29089
  unregister = () => {
29035
- if (this.registeredName) this.navRef?.unregisterMount?.(this.registeredName);
29090
+ if (this.registeredName) this.navRef?.unregisterMount?.(this.registeredName, this.move);
29036
29091
  this.registeredName = void 0;
29037
29092
  };
29038
29093
  isLastReport = (path) => {
@@ -38901,6 +38956,8 @@ var PanelComponent = class PanelComponent {
38901
38956
  height = input(...ngDevMode ? [void 0, { debugName: "height" }] : /* istanbul ignore next */ []);
38902
38957
  closeProhibited = input(false, ...ngDevMode ? [{ debugName: "closeProhibited" }] : /* istanbul ignore next */ []);
38903
38958
  modalStore = inject(ModalStore);
38959
+ #navRef = inject(NAV_STORE_REF, { optional: true });
38960
+ navOpen = computed(() => !!this.#navRef?.isNavOpened?.(), ...ngDevMode ? [{ debugName: "navOpen" }] : /* istanbul ignore next */ []);
38904
38961
  bodyContainer = viewChild("body", {
38905
38962
  ...ngDevMode ? { debugName: "bodyContainer" } : /* istanbul ignore next */ {},
38906
38963
  read: ViewContainerRef
@@ -39000,6 +39057,7 @@ var PanelComponent = class PanelComponent {
39000
39057
  transformFunction: null
39001
39058
  }
39002
39059
  },
39060
+ host: { properties: { "class.is-nav-hidden": "navOpen()" } },
39003
39061
  providers: [{
39004
39062
  provide: IS_SIDE_PANEL,
39005
39063
  useValue: true
@@ -39034,7 +39092,7 @@ var PanelComponent = class PanelComponent {
39034
39092
  </div>
39035
39093
  `,
39036
39094
  isInline: true,
39037
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;height:100%}.side-panel{height:100%;background:var(--m-background);display:flex;flex-direction:column;overflow:hidden;position:relative;animation:panel-slide-right .3s cubic-bezier(.2,0,0,1) forwards;border-left:var(--m-input-border-width, 1px) solid var(--m-text-input-border, color-mix(in srgb, var(--m-text) 18%, var(--m-background)));box-shadow:-.75rem 0 2rem color-mix(in srgb,var(--m-text) 12%,transparent)}.side-panel--docked{border-left:1px dashed var(--m-border);box-shadow:none}.side-panel--left{animation-name:panel-slide-left;border-left:none;border-right:var(--m-input-border-width, 1px) solid var(--m-text-input-border, color-mix(in srgb, var(--m-text) 18%, var(--m-background)));box-shadow:.75rem 0 2rem color-mix(in srgb,var(--m-text) 12%,transparent)}.side-panel--left.side-panel--docked{border-left:none;border-right:1px dashed var(--m-border);box-shadow:none}.side-panel__close{position:absolute;top:0;right:0;padding:.25em;z-index:20}.side-panel__content{flex:1;display:flex;flex-direction:column;min-height:0;overflow-y:auto}@media(max-width:767px){.side-panel{animation-name:panel-slide-bottom;border-left:none;border-right:none;border-top:var(--m-input-border-width, 1px) solid var(--m-text-input-border, color-mix(in srgb, var(--m-text) 18%, var(--m-background)));box-shadow:0 -.75rem 2rem color-mix(in srgb,var(--m-text) 12%,transparent);overflow-y:auto}}@keyframes panel-slide-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes panel-slide-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes panel-slide-bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}\n"],
39095
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;height:100%}:host.is-nav-hidden{display:none}.side-panel{height:100%;background:var(--m-background);display:flex;flex-direction:column;overflow:hidden;position:relative;animation:panel-slide-right .3s cubic-bezier(.2,0,0,1) forwards;border-left:var(--m-input-border-width, 1px) solid var(--m-text-input-border, color-mix(in srgb, var(--m-text) 18%, var(--m-background)));box-shadow:-.75rem 0 2rem color-mix(in srgb,var(--m-text) 12%,transparent)}.side-panel--docked{border-left:1px dashed var(--m-border);box-shadow:none}.side-panel--left{animation-name:panel-slide-left;border-left:none;border-right:var(--m-input-border-width, 1px) solid var(--m-text-input-border, color-mix(in srgb, var(--m-text) 18%, var(--m-background)));box-shadow:.75rem 0 2rem color-mix(in srgb,var(--m-text) 12%,transparent)}.side-panel--left.side-panel--docked{border-left:none;border-right:1px dashed var(--m-border);box-shadow:none}.side-panel__close{position:absolute;top:0;right:0;padding:.25em;z-index:20}.side-panel__content{flex:1;display:flex;flex-direction:column;min-height:0;overflow-y:auto}@media(max-width:767px){.side-panel{animation-name:panel-slide-bottom;border-left:none;border-right:none;border-top:var(--m-input-border-width, 1px) solid var(--m-text-input-border, color-mix(in srgb, var(--m-text) 18%, var(--m-background)));box-shadow:0 -.75rem 2rem color-mix(in srgb,var(--m-text) 12%,transparent);overflow-y:auto}}@keyframes panel-slide-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes panel-slide-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes panel-slide-bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}\n"],
39038
39096
  dependencies: [{
39039
39097
  kind: "component",
39040
39098
  type: ButtonComponent,
@@ -39107,7 +39165,8 @@ i0.ɵɵngDeclareClassMetadata({
39107
39165
  provide: IS_SIDE_PANEL,
39108
39166
  useValue: true
39109
39167
  }],
39110
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;height:100%}.side-panel{height:100%;background:var(--m-background);display:flex;flex-direction:column;overflow:hidden;position:relative;animation:panel-slide-right .3s cubic-bezier(.2,0,0,1) forwards;border-left:var(--m-input-border-width, 1px) solid var(--m-text-input-border, color-mix(in srgb, var(--m-text) 18%, var(--m-background)));box-shadow:-.75rem 0 2rem color-mix(in srgb,var(--m-text) 12%,transparent)}.side-panel--docked{border-left:1px dashed var(--m-border);box-shadow:none}.side-panel--left{animation-name:panel-slide-left;border-left:none;border-right:var(--m-input-border-width, 1px) solid var(--m-text-input-border, color-mix(in srgb, var(--m-text) 18%, var(--m-background)));box-shadow:.75rem 0 2rem color-mix(in srgb,var(--m-text) 12%,transparent)}.side-panel--left.side-panel--docked{border-left:none;border-right:1px dashed var(--m-border);box-shadow:none}.side-panel__close{position:absolute;top:0;right:0;padding:.25em;z-index:20}.side-panel__content{flex:1;display:flex;flex-direction:column;min-height:0;overflow-y:auto}@media(max-width:767px){.side-panel{animation-name:panel-slide-bottom;border-left:none;border-right:none;border-top:var(--m-input-border-width, 1px) solid var(--m-text-input-border, color-mix(in srgb, var(--m-text) 18%, var(--m-background)));box-shadow:0 -.75rem 2rem color-mix(in srgb,var(--m-text) 12%,transparent);overflow-y:auto}}@keyframes panel-slide-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes panel-slide-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes panel-slide-bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}\n"]
39168
+ host: { "[class.is-nav-hidden]": "navOpen()" },
39169
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;height:100%}:host.is-nav-hidden{display:none}.side-panel{height:100%;background:var(--m-background);display:flex;flex-direction:column;overflow:hidden;position:relative;animation:panel-slide-right .3s cubic-bezier(.2,0,0,1) forwards;border-left:var(--m-input-border-width, 1px) solid var(--m-text-input-border, color-mix(in srgb, var(--m-text) 18%, var(--m-background)));box-shadow:-.75rem 0 2rem color-mix(in srgb,var(--m-text) 12%,transparent)}.side-panel--docked{border-left:1px dashed var(--m-border);box-shadow:none}.side-panel--left{animation-name:panel-slide-left;border-left:none;border-right:var(--m-input-border-width, 1px) solid var(--m-text-input-border, color-mix(in srgb, var(--m-text) 18%, var(--m-background)));box-shadow:.75rem 0 2rem color-mix(in srgb,var(--m-text) 12%,transparent)}.side-panel--left.side-panel--docked{border-left:none;border-right:1px dashed var(--m-border);box-shadow:none}.side-panel__close{position:absolute;top:0;right:0;padding:.25em;z-index:20}.side-panel__content{flex:1;display:flex;flex-direction:column;min-height:0;overflow-y:auto}@media(max-width:767px){.side-panel{animation-name:panel-slide-bottom;border-left:none;border-right:none;border-top:var(--m-input-border-width, 1px) solid var(--m-text-input-border, color-mix(in srgb, var(--m-text) 18%, var(--m-background)));box-shadow:0 -.75rem 2rem color-mix(in srgb,var(--m-text) 12%,transparent);overflow-y:auto}}@keyframes panel-slide-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes panel-slide-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes panel-slide-bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}\n"]
39111
39170
  }]
39112
39171
  }],
39113
39172
  propDecorators: {
@@ -40357,6 +40416,7 @@ i0.ɵɵngDeclareClassMetadata({
40357
40416
  var NavHeaderComponent = class NavHeaderComponent {
40358
40417
  _navStore = inject(NavStore);
40359
40418
  _searchStore = inject(SearchStore);
40419
+ #authStore = inject(AuthStore);
40360
40420
  _isUser = computed(() => this._navStore.panelNavId() === `${ROOT_NAV}_user`, ...ngDevMode ? [{ debugName: "_isUser" }] : /* istanbul ignore next */ []);
40361
40421
  _isSearch = computed(() => this._navStore.panelNavId() === `${ROOT_NAV}_search`, ...ngDevMode ? [{ debugName: "_isSearch" }] : /* istanbul ignore next */ []);
40362
40422
  _hasParent = computed(() => this._navStore.breadcrumb().header?.id !== ROOT_NAV, ...ngDevMode ? [{ debugName: "_hasParent" }] : /* istanbul ignore next */ []);
@@ -40364,6 +40424,7 @@ var NavHeaderComponent = class NavHeaderComponent {
40364
40424
  const trail = this._navStore.breadcrumb().trail;
40365
40425
  return trail && trail.length > 0 ? trail : null;
40366
40426
  }, ...ngDevMode ? [{ debugName: "_trail" }] : /* istanbul ignore next */ []);
40427
+ _user = computed(() => this._isUser() ? this.#authStore.user() ?? null : null, ...ngDevMode ? [{ debugName: "_user" }] : /* istanbul ignore next */ []);
40367
40428
  _header = computed(() => this._isUser() ? null : this._navStore.breadcrumb().header, ...ngDevMode ? [{ debugName: "_header" }] : /* istanbul ignore next */ []);
40368
40429
  static ɵfac = i0.ɵɵngDeclareFactory({
40369
40430
  minVersion: "12.0.0",
@@ -40380,7 +40441,8 @@ var NavHeaderComponent = class NavHeaderComponent {
40380
40441
  isStandalone: true,
40381
40442
  selector: "m-nav-header",
40382
40443
  ngImport: i0,
40383
- template: "<m-section>\n @if (_trail(); as trail) {\n <m-section-back [back]=\"_hasParent()\" (navigate)=\"_navStore.back()\">\n <m-nav-trail [config]=\"trail\" />\n </m-section-back>\n }\n\n @if (_isSearch()) {\n <m-section-search\n [value]=\"_searchStore.query()\"\n [startOpen]=\"true\"\n (searchChange)=\"_searchStore.updateQuery($event)\"\n />\n } @else if (_header(); as h) {\n @if (h.label) {\n <m-section-header class=\"nav-header__title\" [icon]=\"h.icon\" [label]=\"h.label\" />\n }\n }\n</m-section>\n",
40444
+ template: "<m-section>\n @if (_trail(); as trail) {\n <m-section-back [back]=\"_hasParent()\" (navigate)=\"_navStore.back()\">\n <m-nav-trail [config]=\"trail\" />\n </m-section-back>\n }\n\n @if (_isSearch()) {\n <m-section-search\n [value]=\"_searchStore.query()\"\n [startOpen]=\"true\"\n (searchChange)=\"_searchStore.updateQuery($event)\"\n />\n } @else if (_user(); as user) {\n <m-user class=\"nav-header__user\" [id]=\"user.id\" [user]=\"user\" mRef=\"root_user\">\n <span class=\"nav-header__username\">&#64;{{ user.username }}</span>\n </m-user>\n } @else if (_header(); as h) {\n @if (h.label) {\n <m-section-header class=\"nav-header__title\" [icon]=\"h.icon\" [label]=\"h.label\" />\n }\n }\n</m-section>\n",
40445
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;--m-section-min-height: 0}.nav-header__user{display:block;padding:1rem}.nav-header__username{font-size:.6875rem;font-weight:600;color:var(--m-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}\n"],
40384
40446
  dependencies: [
40385
40447
  {
40386
40448
  kind: "component",
@@ -40478,6 +40540,29 @@ var NavHeaderComponent = class NavHeaderComponent {
40478
40540
  "touchedChange",
40479
40541
  "searchChange"
40480
40542
  ]
40543
+ },
40544
+ {
40545
+ kind: "component",
40546
+ type: UserComponent,
40547
+ selector: "m-user",
40548
+ inputs: [
40549
+ "id",
40550
+ "user",
40551
+ "firstName",
40552
+ "lastName",
40553
+ "profilePic"
40554
+ ]
40555
+ },
40556
+ {
40557
+ kind: "directive",
40558
+ type: MRefDirective,
40559
+ selector: "[mRef]",
40560
+ inputs: [
40561
+ "mRef",
40562
+ "mRefLinkActive",
40563
+ "mRefToggle",
40564
+ "mRefParams"
40565
+ ]
40481
40566
  }
40482
40567
  ],
40483
40568
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
@@ -40498,11 +40583,14 @@ i0.ɵɵngDeclareClassMetadata({
40498
40583
  SectionComponent,
40499
40584
  SectionHeaderComponent,
40500
40585
  SectionBackComponent,
40501
- SectionSearchComponent
40586
+ SectionSearchComponent,
40587
+ UserComponent,
40588
+ MRefDirective
40502
40589
  ],
40503
40590
  encapsulation: ViewEncapsulation.None,
40504
40591
  changeDetection: ChangeDetectionStrategy.OnPush,
40505
- template: "<m-section>\n @if (_trail(); as trail) {\n <m-section-back [back]=\"_hasParent()\" (navigate)=\"_navStore.back()\">\n <m-nav-trail [config]=\"trail\" />\n </m-section-back>\n }\n\n @if (_isSearch()) {\n <m-section-search\n [value]=\"_searchStore.query()\"\n [startOpen]=\"true\"\n (searchChange)=\"_searchStore.updateQuery($event)\"\n />\n } @else if (_header(); as h) {\n @if (h.label) {\n <m-section-header class=\"nav-header__title\" [icon]=\"h.icon\" [label]=\"h.label\" />\n }\n }\n</m-section>\n"
40592
+ template: "<m-section>\n @if (_trail(); as trail) {\n <m-section-back [back]=\"_hasParent()\" (navigate)=\"_navStore.back()\">\n <m-nav-trail [config]=\"trail\" />\n </m-section-back>\n }\n\n @if (_isSearch()) {\n <m-section-search\n [value]=\"_searchStore.query()\"\n [startOpen]=\"true\"\n (searchChange)=\"_searchStore.updateQuery($event)\"\n />\n } @else if (_user(); as user) {\n <m-user class=\"nav-header__user\" [id]=\"user.id\" [user]=\"user\" mRef=\"root_user\">\n <span class=\"nav-header__username\">&#64;{{ user.username }}</span>\n </m-user>\n } @else if (_header(); as h) {\n @if (h.label) {\n <m-section-header class=\"nav-header__title\" [icon]=\"h.icon\" [label]=\"h.label\" />\n }\n }\n</m-section>\n",
40593
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;--m-section-min-height: 0}.nav-header__user{display:block;padding:1rem}.nav-header__username{font-size:.6875rem;font-weight:600;color:var(--m-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}\n"]
40506
40594
  }]
40507
40595
  }]
40508
40596
  });
@@ -41063,7 +41151,7 @@ var NavDetailsComponent = class NavDetailsComponent {
41063
41151
  </div>
41064
41152
  `,
41065
41153
  isInline: true,
41066
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.details{display:block;position:fixed;top:0;bottom:0;left:5em;height:100%;width:0%;border-right:1px solid var(--m-border);backdrop-filter:blur(16px) brightness(1.1) saturate(1.8) contrast(1.1);-webkit-backdrop-filter:blur(16px) brightness(1.1) saturate(1.8) contrast(1.1);background-color:var(--m-backdrop-glass);border:1px solid var(--m-backdrop-border);box-shadow:8px 0 32px #00000014;z-index:90;overflow:hidden;display:flex;flex-direction:column;transition:width .5s cubic-bezier(.16,1,.3,1),opacity .5s cubic-bezier(.16,1,.3,1),top .4s cubic-bezier(.16,1,.3,1);opacity:0;pointer-events:none}.details.dragging{transition:none!important}.details.open{width:400px;opacity:1;pointer-events:all}.details__handle{display:none;width:36px;height:5px;background:#8080804d;border-radius:3px;margin:10px auto 14px;flex-shrink:0;box-shadow:inset 0 1px 1px #0000000d;transition:background-color .3s ease,transform .3s cubic-bezier(.34,1.56,.64,1)}.details__handle:hover,.details__handle:active{background-color:#80808080}.details .m-scroll{flex:1;min-height:0}.details .empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 2rem;text-align:center;animation:fade-in .6s ease-out}.details .empty-state__visual{position:relative;margin-bottom:2rem;color:var(--m-text-tertiary);opacity:.6}.details .empty-state__visual .m-icon{width:4rem;height:4rem;filter:drop-shadow(0 8px 24px rgba(0,0,0,.05))}.details .empty-state__glow{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:8rem;height:8rem;background:radial-gradient(circle,color-mix(in srgb,var(--m-mm) 8%,transparent) 0%,transparent 70%);filter:blur(20px);z-index:-1}.details .empty-state__title{font-size:1.125rem;font-weight:700;color:var(--m-text);margin-bottom:.75rem;letter-spacing:-.01em}.details .empty-state__text{font-size:.875rem;color:var(--m-text-tertiary);line-height:1.6;max-width:240px;margin:0 auto}@media(max-width:1199px){.details{height:auto;font-size:.875rem;inset:auto auto 5em 50%;width:92%;max-width:440px;border-right:none;border:1px solid var(--m-border);border-radius:24px;transform:translate(-50%,calc(100% + 10em));transition:transform .6s cubic-bezier(.16,1,.3,1),opacity .4s ease,top .4s cubic-bezier(.16,1,.3,1);box-shadow:0 16px 40px #00000029,0 0 0 1px #ffffff1a inset;pointer-events:none;z-index:2000!important;top:25vh}}@media(max-width:1199px)and (max-width:767px){.details{bottom:3.5em}}@media(max-width:1199px){.details.open{width:92%;transform:translate(-50%);opacity:1;pointer-events:all!important}.details.is-scrolled-down{transform:translate(-50%,calc(100% + 15em));opacity:0}.details__handle{display:block}.details .m-scroll{padding:0 0 2rem;width:100%;margin:0;text-align:left}.details .empty-state{padding:2rem 1rem}}@keyframes fade-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.nav-skeleton{padding:.5rem 1rem;display:flex;flex-direction:column;gap:.5rem}.nav-skeleton__item{display:flex;align-items:center;gap:.75rem;padding:.5rem}.nav-skeleton__icon{width:1.5rem;height:1.5rem;border-radius:50%;flex-shrink:0;background:linear-gradient(90deg,#0000000f 25%,#0000001f,#0000000f 75%);background-size:200% 100%;animation:shimmer 1.4s infinite}.nav-skeleton__label{height:.875rem;border-radius:4px;width:60%;background:linear-gradient(90deg,#0000000f 25%,#0000001f,#0000000f 75%);background-size:200% 100%;animation:shimmer 1.4s infinite}\n"],
41154
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.details{display:block;position:fixed;top:0;bottom:0;left:64px;height:100%;width:0%;backdrop-filter:blur(16px) brightness(1.1) saturate(1.8) contrast(1.1);-webkit-backdrop-filter:blur(16px) brightness(1.1) saturate(1.8) contrast(1.1);background-color:var(--m-backdrop-glass);border:1px solid var(--m-backdrop-border);border:none;border-right:1px solid color-mix(in srgb,var(--m-border) 55%,transparent);z-index:90;overflow:hidden;display:flex;flex-direction:column;transition:width .5s cubic-bezier(.16,1,.3,1),opacity .5s cubic-bezier(.16,1,.3,1),top .4s cubic-bezier(.16,1,.3,1);opacity:0;pointer-events:none}.details.dragging{transition:none!important}.details.open{width:var(--m-nav-details-width, 360px);opacity:1;pointer-events:all}.details__handle{display:none;width:36px;height:5px;background:#8080804d;border-radius:3px;margin:10px auto 14px;flex-shrink:0;box-shadow:inset 0 1px 1px #0000000d;transition:background-color .3s ease,transform .3s cubic-bezier(.34,1.56,.64,1)}.details__handle:hover,.details__handle:active{background-color:#80808080}.details .m-scroll{flex:1;min-height:0}.details .empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 2rem;text-align:center;animation:fade-in .6s ease-out}.details .empty-state__visual{position:relative;margin-bottom:2rem;color:var(--m-text-tertiary);opacity:.6}.details .empty-state__visual .m-icon{width:4rem;height:4rem;filter:drop-shadow(0 8px 24px rgba(0,0,0,.05))}.details .empty-state__glow{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:8rem;height:8rem;background:radial-gradient(circle,color-mix(in srgb,var(--m-mm) 8%,transparent) 0%,transparent 70%);filter:blur(20px);z-index:-1}.details .empty-state__title{font-size:1.125rem;font-weight:700;color:var(--m-text);margin-bottom:.75rem;letter-spacing:-.01em}.details .empty-state__text{font-size:.875rem;color:var(--m-text-tertiary);line-height:1.6;max-width:240px;margin:0 auto}@media(max-width:1199px){.details{top:25vh;bottom:calc(56px + env(safe-area-inset-bottom));left:0;right:0;width:100%;height:auto;min-height:0;font-size:.875rem;border:none;border-top:1px solid color-mix(in srgb,var(--m-border) 55%,transparent);border-radius:0;box-shadow:none;transition:top .5s cubic-bezier(.16,1,.3,1),opacity .5s cubic-bezier(.16,1,.3,1),transform .4s cubic-bezier(.4,0,.2,1);pointer-events:none;z-index:2000!important}.details:not(.open){top:calc(100% - 56px - env(safe-area-inset-bottom))!important}}@media(max-width:1199px)and (max-width:767px){.details{bottom:calc(48px + env(safe-area-inset-bottom))}.details:not(.open){top:calc(100% - 48px - env(safe-area-inset-bottom))!important}}@media(max-width:1199px){.details.open{width:100%;opacity:1;pointer-events:all!important}.details.is-scrolled-down{transform:translateY(calc(100% + 15em));opacity:0}.details__handle{display:block}.details .m-scroll{padding:0 0 2rem;width:100%;margin:0;text-align:left}.details .empty-state{padding:2rem 1rem}}@keyframes fade-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.nav-skeleton{padding:.5rem 1rem;display:flex;flex-direction:column;gap:.5rem}.nav-skeleton__item{display:flex;align-items:center;gap:.75rem;padding:.5rem}.nav-skeleton__icon{width:1.5rem;height:1.5rem;border-radius:50%;flex-shrink:0;background:linear-gradient(90deg,#0000000f 25%,#0000001f,#0000000f 75%);background-size:200% 100%;animation:shimmer 1.4s infinite}.nav-skeleton__label{height:.875rem;border-radius:4px;width:60%;background:linear-gradient(90deg,#0000000f 25%,#0000001f,#0000000f 75%);background-size:200% 100%;animation:shimmer 1.4s infinite}\n"],
41067
41155
  dependencies: [
41068
41156
  {
41069
41157
  kind: "component",
@@ -41242,7 +41330,7 @@ i0.ɵɵngDeclareClassMetadata({
41242
41330
  SettingsSearchBarComponent
41243
41331
  ],
41244
41332
  changeDetection: ChangeDetectionStrategy.OnPush,
41245
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.details{display:block;position:fixed;top:0;bottom:0;left:5em;height:100%;width:0%;border-right:1px solid var(--m-border);backdrop-filter:blur(16px) brightness(1.1) saturate(1.8) contrast(1.1);-webkit-backdrop-filter:blur(16px) brightness(1.1) saturate(1.8) contrast(1.1);background-color:var(--m-backdrop-glass);border:1px solid var(--m-backdrop-border);box-shadow:8px 0 32px #00000014;z-index:90;overflow:hidden;display:flex;flex-direction:column;transition:width .5s cubic-bezier(.16,1,.3,1),opacity .5s cubic-bezier(.16,1,.3,1),top .4s cubic-bezier(.16,1,.3,1);opacity:0;pointer-events:none}.details.dragging{transition:none!important}.details.open{width:400px;opacity:1;pointer-events:all}.details__handle{display:none;width:36px;height:5px;background:#8080804d;border-radius:3px;margin:10px auto 14px;flex-shrink:0;box-shadow:inset 0 1px 1px #0000000d;transition:background-color .3s ease,transform .3s cubic-bezier(.34,1.56,.64,1)}.details__handle:hover,.details__handle:active{background-color:#80808080}.details .m-scroll{flex:1;min-height:0}.details .empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 2rem;text-align:center;animation:fade-in .6s ease-out}.details .empty-state__visual{position:relative;margin-bottom:2rem;color:var(--m-text-tertiary);opacity:.6}.details .empty-state__visual .m-icon{width:4rem;height:4rem;filter:drop-shadow(0 8px 24px rgba(0,0,0,.05))}.details .empty-state__glow{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:8rem;height:8rem;background:radial-gradient(circle,color-mix(in srgb,var(--m-mm) 8%,transparent) 0%,transparent 70%);filter:blur(20px);z-index:-1}.details .empty-state__title{font-size:1.125rem;font-weight:700;color:var(--m-text);margin-bottom:.75rem;letter-spacing:-.01em}.details .empty-state__text{font-size:.875rem;color:var(--m-text-tertiary);line-height:1.6;max-width:240px;margin:0 auto}@media(max-width:1199px){.details{height:auto;font-size:.875rem;inset:auto auto 5em 50%;width:92%;max-width:440px;border-right:none;border:1px solid var(--m-border);border-radius:24px;transform:translate(-50%,calc(100% + 10em));transition:transform .6s cubic-bezier(.16,1,.3,1),opacity .4s ease,top .4s cubic-bezier(.16,1,.3,1);box-shadow:0 16px 40px #00000029,0 0 0 1px #ffffff1a inset;pointer-events:none;z-index:2000!important;top:25vh}}@media(max-width:1199px)and (max-width:767px){.details{bottom:3.5em}}@media(max-width:1199px){.details.open{width:92%;transform:translate(-50%);opacity:1;pointer-events:all!important}.details.is-scrolled-down{transform:translate(-50%,calc(100% + 15em));opacity:0}.details__handle{display:block}.details .m-scroll{padding:0 0 2rem;width:100%;margin:0;text-align:left}.details .empty-state{padding:2rem 1rem}}@keyframes fade-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.nav-skeleton{padding:.5rem 1rem;display:flex;flex-direction:column;gap:.5rem}.nav-skeleton__item{display:flex;align-items:center;gap:.75rem;padding:.5rem}.nav-skeleton__icon{width:1.5rem;height:1.5rem;border-radius:50%;flex-shrink:0;background:linear-gradient(90deg,#0000000f 25%,#0000001f,#0000000f 75%);background-size:200% 100%;animation:shimmer 1.4s infinite}.nav-skeleton__label{height:.875rem;border-radius:4px;width:60%;background:linear-gradient(90deg,#0000000f 25%,#0000001f,#0000000f 75%);background-size:200% 100%;animation:shimmer 1.4s infinite}\n"]
41333
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.details{display:block;position:fixed;top:0;bottom:0;left:64px;height:100%;width:0%;backdrop-filter:blur(16px) brightness(1.1) saturate(1.8) contrast(1.1);-webkit-backdrop-filter:blur(16px) brightness(1.1) saturate(1.8) contrast(1.1);background-color:var(--m-backdrop-glass);border:1px solid var(--m-backdrop-border);border:none;border-right:1px solid color-mix(in srgb,var(--m-border) 55%,transparent);z-index:90;overflow:hidden;display:flex;flex-direction:column;transition:width .5s cubic-bezier(.16,1,.3,1),opacity .5s cubic-bezier(.16,1,.3,1),top .4s cubic-bezier(.16,1,.3,1);opacity:0;pointer-events:none}.details.dragging{transition:none!important}.details.open{width:var(--m-nav-details-width, 360px);opacity:1;pointer-events:all}.details__handle{display:none;width:36px;height:5px;background:#8080804d;border-radius:3px;margin:10px auto 14px;flex-shrink:0;box-shadow:inset 0 1px 1px #0000000d;transition:background-color .3s ease,transform .3s cubic-bezier(.34,1.56,.64,1)}.details__handle:hover,.details__handle:active{background-color:#80808080}.details .m-scroll{flex:1;min-height:0}.details .empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 2rem;text-align:center;animation:fade-in .6s ease-out}.details .empty-state__visual{position:relative;margin-bottom:2rem;color:var(--m-text-tertiary);opacity:.6}.details .empty-state__visual .m-icon{width:4rem;height:4rem;filter:drop-shadow(0 8px 24px rgba(0,0,0,.05))}.details .empty-state__glow{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:8rem;height:8rem;background:radial-gradient(circle,color-mix(in srgb,var(--m-mm) 8%,transparent) 0%,transparent 70%);filter:blur(20px);z-index:-1}.details .empty-state__title{font-size:1.125rem;font-weight:700;color:var(--m-text);margin-bottom:.75rem;letter-spacing:-.01em}.details .empty-state__text{font-size:.875rem;color:var(--m-text-tertiary);line-height:1.6;max-width:240px;margin:0 auto}@media(max-width:1199px){.details{top:25vh;bottom:calc(56px + env(safe-area-inset-bottom));left:0;right:0;width:100%;height:auto;min-height:0;font-size:.875rem;border:none;border-top:1px solid color-mix(in srgb,var(--m-border) 55%,transparent);border-radius:0;box-shadow:none;transition:top .5s cubic-bezier(.16,1,.3,1),opacity .5s cubic-bezier(.16,1,.3,1),transform .4s cubic-bezier(.4,0,.2,1);pointer-events:none;z-index:2000!important}.details:not(.open){top:calc(100% - 56px - env(safe-area-inset-bottom))!important}}@media(max-width:1199px)and (max-width:767px){.details{bottom:calc(48px + env(safe-area-inset-bottom))}.details:not(.open){top:calc(100% - 48px - env(safe-area-inset-bottom))!important}}@media(max-width:1199px){.details.open{width:100%;opacity:1;pointer-events:all!important}.details.is-scrolled-down{transform:translateY(calc(100% + 15em));opacity:0}.details__handle{display:block}.details .m-scroll{padding:0 0 2rem;width:100%;margin:0;text-align:left}.details .empty-state{padding:2rem 1rem}}@keyframes fade-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.nav-skeleton{padding:.5rem 1rem;display:flex;flex-direction:column;gap:.5rem}.nav-skeleton__item{display:flex;align-items:center;gap:.75rem;padding:.5rem}.nav-skeleton__icon{width:1.5rem;height:1.5rem;border-radius:50%;flex-shrink:0;background:linear-gradient(90deg,#0000000f 25%,#0000001f,#0000000f 75%);background-size:200% 100%;animation:shimmer 1.4s infinite}.nav-skeleton__label{height:.875rem;border-radius:4px;width:60%;background:linear-gradient(90deg,#0000000f 25%,#0000001f,#0000000f 75%);background-size:200% 100%;animation:shimmer 1.4s infinite}\n"]
41246
41334
  }]
41247
41335
  }],
41248
41336
  ctorParameters: () => []
@@ -41277,6 +41365,40 @@ var NavComponent = class NavComponent {
41277
41365
  app: void 0
41278
41366
  } : void 0;
41279
41367
  }, ...ngDevMode ? [{ debugName: "logo" }] : /* istanbul ignore next */ []);
41368
+ appRail = computed(() => {
41369
+ if (!this.isHost()) return [];
41370
+ const configs = this.#navStore.wcConfigMap();
41371
+ const panelNavId = this.isNavOpened() ? this.#navStore.id() : void 0;
41372
+ const isActive = (appNavId) => !!panelNavId && (panelNavId === appNavId || panelNavId.startsWith(`${appNavId}_`));
41373
+ const hostLogo = this.#navStore.navMap()[ROOT_NAV]?.logo;
41374
+ const appLink = this.appLink();
41375
+ const appNavId = this.#navStore.appNavId();
41376
+ const main = appLink && appNavId && !this.activeAppOpen() ? [{
41377
+ key: appLink,
41378
+ appNavId,
41379
+ link: appLink,
41380
+ config: configs[appLink]
41381
+ }] : [];
41382
+ const sides = this.#navStore.menuMounts().filter(({ urlMode, link }) => urlMode === "outlet" && !!link).map(({ name, appNavId, link }) => ({
41383
+ key: name,
41384
+ appNavId,
41385
+ link,
41386
+ config: configs[link]
41387
+ }));
41388
+ return [...main, ...sides].map(({ key, appNavId, link, config }) => ({
41389
+ key,
41390
+ appNavId,
41391
+ pending: !config,
41392
+ src: config?.logo ?? hostLogo,
41393
+ remote: config?.logo ? config.link || link : void 0,
41394
+ alt: config?.app ?? link,
41395
+ active: isActive(appNavId)
41396
+ }));
41397
+ }, ...ngDevMode ? [{ debugName: "appRail" }] : /* istanbul ignore next */ []);
41398
+ logoActive = computed(() => {
41399
+ const rail = this.appRail();
41400
+ return this.isNavOpened() && rail.length > 0 && !rail.some(({ active }) => active);
41401
+ }, ...ngDevMode ? [{ debugName: "logoActive" }] : /* istanbul ignore next */ []);
41280
41402
  isScrolledDown = computed(() => (this.#device.isMobile() || this.#device.isTablet()) && this.#navStore.navScrolledDown(), ...ngDevMode ? [{ debugName: "isScrolledDown" }] : /* istanbul ignore next */ []);
41281
41403
  currentUser = computed(() => {
41282
41404
  return this.#authStore.user() ?? null;
@@ -41320,49 +41442,13 @@ var NavComponent = class NavComponent {
41320
41442
  variant: "ghost",
41321
41443
  label: ""
41322
41444
  };
41323
- if (this.isHost()) {
41324
- const appLink = this.appLink();
41325
- const config = this.currentWcConfig();
41326
- if (appLink && config && config.logo) {
41327
- const appsButton = {
41328
- imgSrc: config.logo,
41329
- remote: config.link || config.app,
41330
- iconOnly: true,
41331
- variant: "ghost",
41332
- label: "",
41333
- nonClickable: true
41334
- };
41335
- return {
41336
- ...common,
41337
- apps: appsButton
41338
- };
41339
- } else if (appLink && !this.activeAppOpen()) {
41340
- const appsButton = {
41341
- icon: "apps",
41342
- iconOnly: true,
41343
- variant: "ghost",
41344
- label: "",
41345
- nonClickable: true,
41346
- disabled: true
41347
- };
41348
- return {
41349
- ...common,
41350
- apps: appsButton
41351
- };
41352
- } else {
41353
- const appsButton = {
41354
- icon: "apps",
41355
- nav: `${ROOT_NAV}_app`,
41356
- iconOnly: true,
41357
- variant: "ghost",
41358
- label: ""
41359
- };
41360
- return {
41361
- ...common,
41362
- apps: appsButton
41363
- };
41364
- }
41365
- }
41445
+ if (this.isHost() && !(this.appLink() && !this.activeAppOpen())) common["apps"] = {
41446
+ icon: "apps",
41447
+ nav: `${ROOT_NAV}_app`,
41448
+ iconOnly: true,
41449
+ variant: "ghost",
41450
+ label: ""
41451
+ };
41366
41452
  return common;
41367
41453
  }, ...ngDevMode ? [{ debugName: "computedMainButtons" }] : /* istanbul ignore next */ []);
41368
41454
  computedFooterButtons = computed(() => ({ current_lang: {
@@ -41446,13 +41532,18 @@ var NavComponent = class NavComponent {
41446
41532
  this.#navStore.toggleMenu();
41447
41533
  this.menuClicked.emit();
41448
41534
  }
41535
+ logoPop = signal(false, ...ngDevMode ? [{ debugName: "logoPop" }] : /* istanbul ignore next */ []);
41449
41536
  onLogoClick = () => {
41537
+ this.logoPop.set(true);
41450
41538
  if (this.#navStore.isNavOpened()) {
41451
41539
  this.#navStore.goToNav(ROOT_NAV, void 0, { keepPanel: true });
41452
41540
  return;
41453
41541
  }
41454
41542
  this.#navStore.goToNav(ROOT_NAV);
41455
41543
  };
41544
+ onAppLogoClick = (appNavId) => {
41545
+ this.#navStore.browseApp(appNavId);
41546
+ };
41456
41547
  static ɵfac = i0.ɵɵngDeclareFactory({
41457
41548
  minVersion: "12.0.0",
41458
41549
  version: "22.2.1",
@@ -41486,8 +41577,8 @@ var NavComponent = class NavComponent {
41486
41577
  outputs: { menuClicked: "menuClicked" },
41487
41578
  host: { classAttribute: "m-nav" },
41488
41579
  ngImport: i0,
41489
- template: "<div class=\"nav\" [class.is-open]=\"isNavOpened()\" [class.is-scrolled-down]=\"isScrolledDown()\">\n <div class=\"nav__header\">\n @if (showLogo()) {\n @if (logo(); as logo) {\n <!-- AppLogo: menu open → home with panel still showing root; closed → home page. -->\n <button\n type=\"button\"\n class=\"nav_logo nav_logo--app\"\n [attr.data-app]=\"logo.app\"\n [attr.aria-label]=\"logo.alt\"\n (click)=\"onLogoClick()\"\n >\n <m-img class=\"nav_logo_img\" [src]=\"logo.src\" [alt]=\"logo.alt\" />\n </button>\n } @else if (logoPending()) {\n <div class=\"nav_logo nav_logo--loading\">\n <div class=\"nav_logo-skeleton\"></div>\n </div>\n }\n }\n <div class=\"nav_actions\">\n <m-one-button-group\n class=\"nav_main_group\"\n name=\"nav_main_button_group\"\n [buttons]=\"computedMainButtons()\"\n [vertical]=\"isVertical()\"\n />\n </div>\n </div>\n\n <div class=\"nav__body\">\n <m-one-button (clicked)=\"toggleMenu()\" [config]=\"menuButtonConfig()\" />\n </div>\n\n <div class=\"nav__footer\">\n <m-one-button-group name=\"nav_footer_button_group\" [buttons]=\"computedFooterButtons()\" [vertical]=\"isVertical()\" />\n </div>\n</div>\n\n<div\n class=\"nav__backdrop\"\n [class.show]=\"isNavOpened()\"\n (click)=\"toggleMenu()\"\n (keydown.enter)=\"toggleMenu()\"\n tabindex=\"0\"\n></div>\n<m-nav-details />\n",
41490
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-nav .nav{position:fixed;top:0;left:0;backdrop-filter:blur(16px) brightness(1.1) saturate(1.8) contrast(1.1);-webkit-backdrop-filter:blur(16px) brightness(1.1) saturate(1.8) contrast(1.1);background-color:var(--m-backdrop-glass);border:1px solid var(--m-backdrop-border);border-right:none;width:5em;height:100%;transition:.4s cubic-bezier(.165,.84,.44,1) .15s ease-in-out;z-index:100;display:flex;flex-direction:column;box-shadow:4px 0 15px #00000008}.m-nav .nav.is-open{border-right-color:transparent;box-shadow:none}.m-nav .nav button:not(.primary):not(:has(.nav-lang-label)):hover{background:#ffffff14;transform:scale(1.05);box-shadow:none}.m-nav .nav button:not(.primary):not(:has(.nav-lang-label)):active{transform:scale(.95);box-shadow:none}.m-nav .nav m-one-button:has(.nav-lang-label){--m-button-background: transparent;--m-button-hover-background: transparent;--m-button-border: none;--m-button-shadow: none;--m-button-padding: 0;--m-button-width: 2rem;--m-button-hover-transform: none}.m-nav .nav .button-group{display:flex;flex-direction:column;align-items:center;gap:1.75rem}.m-nav .nav_logo{display:block;padding:.75em 0 0;height:5em;width:5em;box-sizing:border-box;position:relative;margin:0 auto}.m-nav .nav_logo:after{content:\"\";position:absolute;bottom:0;left:10%;width:80%;height:2px;background:radial-gradient(ellipse at center,color-mix(in srgb,var(--m-mm) 25%,transparent) 0%,color-mix(in srgb,var(--m-success) 15%,transparent) 40%,transparent 100%);filter:blur(.5px);pointer-events:none;z-index:11}.m-nav .nav_logo.nav_logo--app{border:0;background:transparent;font:inherit;color:inherit;cursor:pointer;pointer-events:auto}.m-nav .nav_logo.nav_logo--app .nav_logo_img{display:block;width:2.25rem;height:2.25rem;margin:0 auto;border-radius:8px;overflow:hidden}.m-nav .nav_logo.nav_logo--loading{cursor:default!important;pointer-events:none!important}.m-nav .nav_logo.nav_logo--loading .nav_logo-skeleton{width:2.25rem;height:2.25rem;margin:0 auto;border-radius:8px;background:#ffffff14;animation:nav-logo-skeleton-pulse 1.5s infinite ease-in-out}.m-nav .nav_logo svg{width:1.75rem;height:auto;display:block;margin:0 auto;filter:drop-shadow(0 4px 12px color-mix(in srgb,var(--m-mm) 40%,transparent));transition:filter .3s ease-out}.m-nav .nav_logo svg:hover{filter:drop-shadow(0 8px 16px color-mix(in srgb,var(--m-mm) 60%,transparent))}.m-nav .nav_actions{width:100%;flex-direction:column;display:flex;align-items:center;justify-content:center;gap:1.75rem;margin-top:.5rem}.m-nav .nav_actions .nav_main_group{display:flex;flex-direction:column;align-items:center;width:100%}.m-nav .nav_user{width:100%;display:flex;align-items:center;justify-content:center;position:relative;z-index:12}.m-nav .nav__header,.m-nav .nav__footer{width:100%;position:relative;align-items:center;justify-content:center;display:flex;flex-direction:column}.m-nav .nav__body{width:100%;position:relative;flex:1;display:grid;place-items:center}@media(max-width:767px){.m-nav .nav{top:auto!important;bottom:0!important;left:0;right:0;position:fixed;width:100%;height:3.5em;box-sizing:content-box;display:flex;flex-direction:row;align-items:stretch;border-right:none;border-top:1px solid rgba(255,255,255,.05);padding-bottom:env(safe-area-inset-bottom);will-change:transform,opacity;transition:transform .4s cubic-bezier(.4,0,.2,1),opacity .4s ease;-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);background:color-mix(in srgb,var(--m-background) 70%,transparent)}.m-nav .nav.is-scrolled-down{transform:translateY(calc(100% + env(safe-area-inset-bottom)));opacity:0;pointer-events:none}.m-nav .nav .nav__footer{display:none}.m-nav .nav .nav__header{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:space-between;height:100%}.m-nav .nav .nav__header .nav_logo{flex:0 0 3.5rem;display:flex;align-items:center;justify-content:center;height:100%;cursor:pointer}.m-nav .nav .nav__header .nav_logo.nav_logo--app,.m-nav .nav .nav__header .nav_logo.nav_logo--loading{cursor:default!important;pointer-events:none!important}.m-nav .nav .nav__header .nav_logo svg{width:1.5rem}.m-nav .nav .nav__header .nav_actions{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:.75rem;height:100%}.m-nav .nav .nav__header .nav_actions .nav_main_group{display:flex;align-items:center}.m-nav .nav .nav__header .nav_actions .nav_main_group .button-group{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:center;gap:.75rem}.m-nav .nav .nav__body{flex:0 0 3.5rem;display:flex;justify-content:flex-end;align-items:center;padding-right:.25rem;height:100%}}@media(min-width:768px)and (max-width:1199px){.m-nav .nav{top:auto!important;bottom:0!important;left:0;right:0;position:fixed;width:100%;height:4.25em;box-sizing:content-box;display:flex;flex-direction:row;align-items:stretch;border-right:none;border-top:1px solid rgba(255,255,255,.05);padding-bottom:env(safe-area-inset-bottom);will-change:transform,opacity;transition:transform .4s cubic-bezier(.4,0,.2,1),opacity .4s ease;-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);background:color-mix(in srgb,var(--m-background) 70%,transparent)}.m-nav .nav.is-scrolled-down{transform:translateY(calc(100% + env(safe-area-inset-bottom)));opacity:0;pointer-events:none}.m-nav .nav .nav__footer{display:none}.m-nav .nav .nav__header{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:space-between;height:100%}.m-nav .nav .nav__header .nav_logo{flex:0 0 4.25rem;display:flex;align-items:center;justify-content:center;height:100%;cursor:pointer}.m-nav .nav .nav__header .nav_logo.nav_logo--app,.m-nav .nav .nav__header .nav_logo.nav_logo--loading{cursor:default!important;pointer-events:none!important}.m-nav .nav .nav__header .nav_logo svg{width:1.75rem}.m-nav .nav .nav__header .nav_actions{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:1.25rem;height:100%}.m-nav .nav .nav__header .nav_actions .nav_main_group{display:flex;align-items:center}.m-nav .nav .nav__header .nav_actions .nav_main_group .button-group{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:center;gap:1.25rem}.m-nav .nav .nav__body{flex:0 0 4.25rem;display:flex;justify-content:flex-end;align-items:center;padding-right:.5rem;height:100%}}@keyframes breathe{0%,to{box-shadow:0 2px 8px #00000014,0 0 0 0 transparent}50%{box-shadow:0 6px 16px color-mix(in srgb,var(--m-mm) 20%,transparent),0 0 10px 2px color-mix(in srgb,var(--m-mm) 25%,transparent)}}.m-nav .nav__backdrop{position:fixed;inset:0;z-index:80;opacity:0;pointer-events:none;transition:opacity .4s cubic-bezier(.16,1,.3,1);cursor:pointer}.m-nav .nav__backdrop.show{opacity:1;pointer-events:all;background:#0003;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.m-nav .nav-lang-label{font-size:.7rem;font-weight:800;text-transform:uppercase;color:var(--m-text-secondary);opacity:.8;line-height:1;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:2em;background:#00000008;transition:all .2s ease}.m-nav button:has(.nav-lang-label):hover .nav-lang-label{background:#0000000f;opacity:1;color:var(--m-primary-color)}.m-nav button.primary:has(.nav-lang-label) .nav-lang-label{background:var(--m-btn-color-opposite, #e1b941);opacity:1}@keyframes nav-logo-skeleton-pulse{0%{opacity:.5}50%{opacity:.8}to{opacity:.5}}\n"],
41580
+ template: "<div class=\"nav\" [class.is-open]=\"isNavOpened()\" [class.is-scrolled-down]=\"isScrolledDown()\">\n <div class=\"nav__header\">\n @if (showLogo()) {\n @if (logo(); as logo) {\n <!-- AppLogo: menu open → home with panel still showing root; closed → home page. -->\n <button\n type=\"button\"\n class=\"nav_logo nav_logo--app\"\n [attr.data-app]=\"logo.app\"\n [attr.aria-label]=\"logo.alt\"\n [class.nav_logo--pop]=\"logoPop()\"\n [class.nav_logo--active]=\"logoActive()\"\n (click)=\"onLogoClick()\"\n (animationend)=\"logoPop.set(false)\"\n >\n <m-img class=\"nav_logo_img\" [src]=\"logo.src\" [alt]=\"logo.alt\" />\n </button>\n } @else if (logoPending()) {\n <div class=\"nav_logo nav_logo--loading\">\n <div class=\"nav_logo-skeleton\"></div>\n </div>\n }\n }\n <div class=\"nav_actions\">\n <m-one-button-group\n class=\"nav_main_group\"\n name=\"nav_main_button_group\"\n [buttons]=\"computedMainButtons()\"\n [vertical]=\"isVertical()\"\n />\n </div>\n @for (app of appRail(); track app.key) {\n <!-- App Rail: the Main Slot's App, then each Side App — opens the panel on its menu. -->\n @if (app.pending) {\n <div class=\"nav_logo nav_logo--loading nav_logo--rail\">\n <div class=\"nav_logo-skeleton\"></div>\n </div>\n } @else {\n <button\n type=\"button\"\n class=\"nav_logo nav_logo--app nav_logo--rail\"\n [attr.data-app]=\"app.key\"\n [attr.aria-label]=\"app.alt\"\n [class.nav_logo--active]=\"app.active\"\n (click)=\"onAppLogoClick(app.appNavId)\"\n >\n <m-img class=\"nav_logo_img\" [src]=\"app.src\" [remote]=\"app.remote\" [alt]=\"app.alt\" />\n </button>\n }\n }\n </div>\n\n <div class=\"nav__body\">\n <m-one-button (clicked)=\"toggleMenu()\" [config]=\"menuButtonConfig()\" />\n </div>\n\n <div class=\"nav__footer\">\n <m-one-button-group name=\"nav_footer_button_group\" [buttons]=\"computedFooterButtons()\" [vertical]=\"isVertical()\" />\n </div>\n</div>\n\n<div\n class=\"nav__backdrop\"\n [class.show]=\"isNavOpened()\"\n (click)=\"toggleMenu()\"\n (keydown.enter)=\"toggleMenu()\"\n tabindex=\"0\"\n></div>\n<m-nav-details />\n",
41581
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-nav .nav{position:fixed;top:0;left:0;backdrop-filter:blur(16px) brightness(1.1) saturate(1.8) contrast(1.1);-webkit-backdrop-filter:blur(16px) brightness(1.1) saturate(1.8) contrast(1.1);background-color:var(--m-backdrop-glass);border:1px solid var(--m-backdrop-border);border:none;border-right:1px solid color-mix(in srgb,var(--m-border) 55%,transparent);width:64px;height:100%;transition:.4s cubic-bezier(.165,.84,.44,1) .15s ease-in-out;z-index:100;display:flex;flex-direction:column}.m-nav .nav button:not(.primary):not(:has(.nav-lang-label)):hover{background:#ffffff14;transform:scale(1.05);box-shadow:none}.m-nav .nav button:not(.primary):not(:has(.nav-lang-label)):active{transform:scale(.95);box-shadow:none}.m-nav .nav m-one-button:has(.nav-lang-label){--m-button-background: transparent;--m-button-hover-background: transparent;--m-button-border: none;--m-button-shadow: none;--m-button-padding: 0;--m-button-width: 2rem;--m-button-hover-transform: none}.m-nav .nav .button-group{display:flex;flex-direction:column;align-items:center;gap:1.75rem}.m-nav .nav_logo{display:flex;align-items:center;justify-content:center;padding:0;height:64px;width:64px;box-sizing:border-box;position:relative;margin:0 auto}.m-nav .nav_logo:after{content:\"\";position:absolute;bottom:0;left:10%;width:80%;height:2px;background:radial-gradient(ellipse at center,color-mix(in srgb,var(--m-mm) 25%,transparent) 0%,color-mix(in srgb,var(--m-success) 15%,transparent) 40%,transparent 100%);filter:blur(.5px);pointer-events:none;z-index:11}.m-nav .nav_logo.nav_logo--rail:after{content:none}.m-nav .nav_logo.nav_logo--app{border:0;background:transparent!important;font:inherit;color:inherit;cursor:pointer;pointer-events:auto;-webkit-tap-highlight-color:transparent}.m-nav .nav_logo.nav_logo--app:hover{transform:none!important}.m-nav .nav_logo.nav_logo--app .nav_logo_img{display:block;width:32px;height:32px;margin:0 auto;position:relative;z-index:1;border-radius:9px;overflow:hidden;transition:transform .35s cubic-bezier(.34,1.56,.64,1)}.m-nav .nav_logo.nav_logo--app .nav_logo_img img{width:100%;height:100%;object-fit:cover}.m-nav .nav_logo.nav_logo--app:hover .nav_logo_img{transform:scale(1.06)}.m-nav .nav_logo.nav_logo--app:active .nav_logo_img{transform:scale(.88);transition-duration:.1s}.m-nav .nav_logo.nav_logo--app.nav_logo--pop .nav_logo_img{animation:nav-logo-pop .4s cubic-bezier(.34,1.56,.64,1)}.m-nav .nav_logo.nav_logo--app:before{content:\"\";position:absolute;top:50%;left:50%;width:44px;height:44px;border-radius:14px;border:1px solid transparent;transform:translate(-50%,-50%) scale(.85);opacity:0;pointer-events:none;transition:opacity .2s ease,transform .25s cubic-bezier(.34,1.56,.64,1)}.m-nav .nav_logo.nav_logo--app.nav_logo--active:before{opacity:1;transform:translate(-50%,-50%) scale(1);border-color:color-mix(in srgb,var(--m-primary-color) 45%,transparent);background:color-mix(in srgb,var(--m-primary-color) 8%,transparent)}.m-nav .nav_logo.nav_logo--loading{cursor:default!important;pointer-events:none!important}.m-nav .nav_logo.nav_logo--loading .nav_logo-skeleton{width:28px;height:28px;margin:0 auto;border-radius:8px;background:#ffffff14;animation:nav-logo-skeleton-pulse 1.5s infinite ease-in-out}.m-nav .nav_logo svg{width:1.75rem;height:auto;display:block;margin:0 auto;filter:drop-shadow(0 4px 12px color-mix(in srgb,var(--m-mm) 40%,transparent));transition:filter .3s ease-out}.m-nav .nav_logo svg:hover{filter:drop-shadow(0 8px 16px color-mix(in srgb,var(--m-mm) 60%,transparent))}.m-nav .nav_actions{width:100%;flex-direction:column;display:flex;align-items:center;justify-content:center;gap:1.75rem;margin-top:.5rem}.m-nav .nav_actions .nav_main_group{display:flex;flex-direction:column;align-items:center;width:100%}.m-nav .nav_user{width:100%;display:flex;align-items:center;justify-content:center;position:relative;z-index:12}.m-nav .nav__header,.m-nav .nav__footer{width:100%;position:relative;align-items:center;justify-content:center;display:flex;flex-direction:column}.m-nav .nav__body{width:100%;position:relative;flex:1;display:grid;place-items:center}@media(max-width:767px){.m-nav .nav{top:auto!important;bottom:0!important;left:0;right:0;position:fixed;width:100%;height:48px;box-sizing:content-box;display:flex;flex-direction:row;align-items:stretch;border-right:none;border-top:1px solid color-mix(in srgb,var(--m-border) 55%,transparent);padding-bottom:env(safe-area-inset-bottom);will-change:transform,opacity;transition:transform .4s cubic-bezier(.4,0,.2,1),opacity .4s ease;-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);background:color-mix(in srgb,var(--m-background) 70%,transparent)}.m-nav .nav.is-scrolled-down{transform:translateY(calc(100% + env(safe-area-inset-bottom)));opacity:0;pointer-events:none}.m-nav .nav .nav__footer{display:none}.m-nav .nav .nav__header{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:space-between;height:100%}.m-nav .nav .nav__header .nav_logo{flex:0 0 64px;display:flex;align-items:center;justify-content:center;height:100%;cursor:pointer}.m-nav .nav .nav__header .nav_logo.nav_logo--loading{cursor:default!important;pointer-events:none!important}.m-nav .nav .nav__header .nav_logo svg{width:1.5rem}.m-nav .nav .nav__header .nav_actions{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:.75rem;height:100%}.m-nav .nav .nav__header .nav_actions .nav_main_group{display:flex;align-items:center}.m-nav .nav .nav__header .nav_actions .nav_main_group .button-group{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:center;gap:.75rem}.m-nav .nav .nav__body{flex:0 0 48px;display:flex;justify-content:flex-end;align-items:center;padding-right:.25rem;height:100%}}@media(min-width:768px)and (max-width:1199px){.m-nav .nav{top:auto!important;bottom:0!important;left:0;right:0;position:fixed;width:100%;height:56px;box-sizing:content-box;display:flex;flex-direction:row;align-items:stretch;border-right:none;border-top:1px solid color-mix(in srgb,var(--m-border) 55%,transparent);padding-bottom:env(safe-area-inset-bottom);will-change:transform,opacity;transition:transform .4s cubic-bezier(.4,0,.2,1),opacity .4s ease;-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);background:color-mix(in srgb,var(--m-background) 70%,transparent)}.m-nav .nav.is-scrolled-down{transform:translateY(calc(100% + env(safe-area-inset-bottom)));opacity:0;pointer-events:none}.m-nav .nav .nav__footer{display:none}.m-nav .nav .nav__header{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:space-between;height:100%}.m-nav .nav .nav__header .nav_logo{flex:0 0 72px;display:flex;align-items:center;justify-content:center;height:100%;cursor:pointer}.m-nav .nav .nav__header .nav_logo.nav_logo--loading{cursor:default!important;pointer-events:none!important}.m-nav .nav .nav__header .nav_logo svg{width:1.75rem}.m-nav .nav .nav__header .nav_actions{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:1.25rem;height:100%}.m-nav .nav .nav__header .nav_actions .nav_main_group{display:flex;align-items:center}.m-nav .nav .nav__header .nav_actions .nav_main_group .button-group{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:center;gap:1.25rem}.m-nav .nav .nav__body{flex:0 0 56px;display:flex;justify-content:flex-end;align-items:center;padding-right:.5rem;height:100%}}@keyframes breathe{0%,to{box-shadow:0 2px 8px #00000014,0 0 0 0 transparent}50%{box-shadow:0 6px 16px color-mix(in srgb,var(--m-mm) 20%,transparent),0 0 10px 2px color-mix(in srgb,var(--m-mm) 25%,transparent)}}.m-nav .nav__backdrop{position:fixed;inset:0;z-index:80;opacity:0;pointer-events:none;transition:opacity .4s cubic-bezier(.16,1,.3,1);cursor:pointer}.m-nav .nav__backdrop.show{opacity:1;pointer-events:all}.m-nav .nav-lang-label{font-size:.7rem;font-weight:800;text-transform:uppercase;color:var(--m-text-secondary);opacity:.8;line-height:1;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:2em;background:#00000008;transition:all .2s ease}.m-nav button:has(.nav-lang-label):hover .nav-lang-label{background:#0000000f;opacity:1;color:var(--m-primary-color)}.m-nav button.primary:has(.nav-lang-label) .nav-lang-label{background:var(--m-btn-color-opposite, #e1b941);opacity:1}@keyframes nav-logo-skeleton-pulse{0%{opacity:.5}50%{opacity:.8}to{opacity:.5}}@keyframes nav-logo-pop{0%{transform:scale(1)}35%{transform:scale(.85)}70%{transform:scale(1.06)}to{transform:scale(1)}}\n"],
41491
41582
  dependencies: [
41492
41583
  {
41493
41584
  kind: "component",
@@ -41582,8 +41673,8 @@ i0.ɵɵngDeclareClassMetadata({
41582
41673
  encapsulation: ViewEncapsulation.None,
41583
41674
  changeDetection: ChangeDetectionStrategy.OnPush,
41584
41675
  host: { class: "m-nav" },
41585
- template: "<div class=\"nav\" [class.is-open]=\"isNavOpened()\" [class.is-scrolled-down]=\"isScrolledDown()\">\n <div class=\"nav__header\">\n @if (showLogo()) {\n @if (logo(); as logo) {\n <!-- AppLogo: menu open → home with panel still showing root; closed → home page. -->\n <button\n type=\"button\"\n class=\"nav_logo nav_logo--app\"\n [attr.data-app]=\"logo.app\"\n [attr.aria-label]=\"logo.alt\"\n (click)=\"onLogoClick()\"\n >\n <m-img class=\"nav_logo_img\" [src]=\"logo.src\" [alt]=\"logo.alt\" />\n </button>\n } @else if (logoPending()) {\n <div class=\"nav_logo nav_logo--loading\">\n <div class=\"nav_logo-skeleton\"></div>\n </div>\n }\n }\n <div class=\"nav_actions\">\n <m-one-button-group\n class=\"nav_main_group\"\n name=\"nav_main_button_group\"\n [buttons]=\"computedMainButtons()\"\n [vertical]=\"isVertical()\"\n />\n </div>\n </div>\n\n <div class=\"nav__body\">\n <m-one-button (clicked)=\"toggleMenu()\" [config]=\"menuButtonConfig()\" />\n </div>\n\n <div class=\"nav__footer\">\n <m-one-button-group name=\"nav_footer_button_group\" [buttons]=\"computedFooterButtons()\" [vertical]=\"isVertical()\" />\n </div>\n</div>\n\n<div\n class=\"nav__backdrop\"\n [class.show]=\"isNavOpened()\"\n (click)=\"toggleMenu()\"\n (keydown.enter)=\"toggleMenu()\"\n tabindex=\"0\"\n></div>\n<m-nav-details />\n",
41586
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-nav .nav{position:fixed;top:0;left:0;backdrop-filter:blur(16px) brightness(1.1) saturate(1.8) contrast(1.1);-webkit-backdrop-filter:blur(16px) brightness(1.1) saturate(1.8) contrast(1.1);background-color:var(--m-backdrop-glass);border:1px solid var(--m-backdrop-border);border-right:none;width:5em;height:100%;transition:.4s cubic-bezier(.165,.84,.44,1) .15s ease-in-out;z-index:100;display:flex;flex-direction:column;box-shadow:4px 0 15px #00000008}.m-nav .nav.is-open{border-right-color:transparent;box-shadow:none}.m-nav .nav button:not(.primary):not(:has(.nav-lang-label)):hover{background:#ffffff14;transform:scale(1.05);box-shadow:none}.m-nav .nav button:not(.primary):not(:has(.nav-lang-label)):active{transform:scale(.95);box-shadow:none}.m-nav .nav m-one-button:has(.nav-lang-label){--m-button-background: transparent;--m-button-hover-background: transparent;--m-button-border: none;--m-button-shadow: none;--m-button-padding: 0;--m-button-width: 2rem;--m-button-hover-transform: none}.m-nav .nav .button-group{display:flex;flex-direction:column;align-items:center;gap:1.75rem}.m-nav .nav_logo{display:block;padding:.75em 0 0;height:5em;width:5em;box-sizing:border-box;position:relative;margin:0 auto}.m-nav .nav_logo:after{content:\"\";position:absolute;bottom:0;left:10%;width:80%;height:2px;background:radial-gradient(ellipse at center,color-mix(in srgb,var(--m-mm) 25%,transparent) 0%,color-mix(in srgb,var(--m-success) 15%,transparent) 40%,transparent 100%);filter:blur(.5px);pointer-events:none;z-index:11}.m-nav .nav_logo.nav_logo--app{border:0;background:transparent;font:inherit;color:inherit;cursor:pointer;pointer-events:auto}.m-nav .nav_logo.nav_logo--app .nav_logo_img{display:block;width:2.25rem;height:2.25rem;margin:0 auto;border-radius:8px;overflow:hidden}.m-nav .nav_logo.nav_logo--loading{cursor:default!important;pointer-events:none!important}.m-nav .nav_logo.nav_logo--loading .nav_logo-skeleton{width:2.25rem;height:2.25rem;margin:0 auto;border-radius:8px;background:#ffffff14;animation:nav-logo-skeleton-pulse 1.5s infinite ease-in-out}.m-nav .nav_logo svg{width:1.75rem;height:auto;display:block;margin:0 auto;filter:drop-shadow(0 4px 12px color-mix(in srgb,var(--m-mm) 40%,transparent));transition:filter .3s ease-out}.m-nav .nav_logo svg:hover{filter:drop-shadow(0 8px 16px color-mix(in srgb,var(--m-mm) 60%,transparent))}.m-nav .nav_actions{width:100%;flex-direction:column;display:flex;align-items:center;justify-content:center;gap:1.75rem;margin-top:.5rem}.m-nav .nav_actions .nav_main_group{display:flex;flex-direction:column;align-items:center;width:100%}.m-nav .nav_user{width:100%;display:flex;align-items:center;justify-content:center;position:relative;z-index:12}.m-nav .nav__header,.m-nav .nav__footer{width:100%;position:relative;align-items:center;justify-content:center;display:flex;flex-direction:column}.m-nav .nav__body{width:100%;position:relative;flex:1;display:grid;place-items:center}@media(max-width:767px){.m-nav .nav{top:auto!important;bottom:0!important;left:0;right:0;position:fixed;width:100%;height:3.5em;box-sizing:content-box;display:flex;flex-direction:row;align-items:stretch;border-right:none;border-top:1px solid rgba(255,255,255,.05);padding-bottom:env(safe-area-inset-bottom);will-change:transform,opacity;transition:transform .4s cubic-bezier(.4,0,.2,1),opacity .4s ease;-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);background:color-mix(in srgb,var(--m-background) 70%,transparent)}.m-nav .nav.is-scrolled-down{transform:translateY(calc(100% + env(safe-area-inset-bottom)));opacity:0;pointer-events:none}.m-nav .nav .nav__footer{display:none}.m-nav .nav .nav__header{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:space-between;height:100%}.m-nav .nav .nav__header .nav_logo{flex:0 0 3.5rem;display:flex;align-items:center;justify-content:center;height:100%;cursor:pointer}.m-nav .nav .nav__header .nav_logo.nav_logo--app,.m-nav .nav .nav__header .nav_logo.nav_logo--loading{cursor:default!important;pointer-events:none!important}.m-nav .nav .nav__header .nav_logo svg{width:1.5rem}.m-nav .nav .nav__header .nav_actions{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:.75rem;height:100%}.m-nav .nav .nav__header .nav_actions .nav_main_group{display:flex;align-items:center}.m-nav .nav .nav__header .nav_actions .nav_main_group .button-group{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:center;gap:.75rem}.m-nav .nav .nav__body{flex:0 0 3.5rem;display:flex;justify-content:flex-end;align-items:center;padding-right:.25rem;height:100%}}@media(min-width:768px)and (max-width:1199px){.m-nav .nav{top:auto!important;bottom:0!important;left:0;right:0;position:fixed;width:100%;height:4.25em;box-sizing:content-box;display:flex;flex-direction:row;align-items:stretch;border-right:none;border-top:1px solid rgba(255,255,255,.05);padding-bottom:env(safe-area-inset-bottom);will-change:transform,opacity;transition:transform .4s cubic-bezier(.4,0,.2,1),opacity .4s ease;-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);background:color-mix(in srgb,var(--m-background) 70%,transparent)}.m-nav .nav.is-scrolled-down{transform:translateY(calc(100% + env(safe-area-inset-bottom)));opacity:0;pointer-events:none}.m-nav .nav .nav__footer{display:none}.m-nav .nav .nav__header{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:space-between;height:100%}.m-nav .nav .nav__header .nav_logo{flex:0 0 4.25rem;display:flex;align-items:center;justify-content:center;height:100%;cursor:pointer}.m-nav .nav .nav__header .nav_logo.nav_logo--app,.m-nav .nav .nav__header .nav_logo.nav_logo--loading{cursor:default!important;pointer-events:none!important}.m-nav .nav .nav__header .nav_logo svg{width:1.75rem}.m-nav .nav .nav__header .nav_actions{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:1.25rem;height:100%}.m-nav .nav .nav__header .nav_actions .nav_main_group{display:flex;align-items:center}.m-nav .nav .nav__header .nav_actions .nav_main_group .button-group{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:center;gap:1.25rem}.m-nav .nav .nav__body{flex:0 0 4.25rem;display:flex;justify-content:flex-end;align-items:center;padding-right:.5rem;height:100%}}@keyframes breathe{0%,to{box-shadow:0 2px 8px #00000014,0 0 0 0 transparent}50%{box-shadow:0 6px 16px color-mix(in srgb,var(--m-mm) 20%,transparent),0 0 10px 2px color-mix(in srgb,var(--m-mm) 25%,transparent)}}.m-nav .nav__backdrop{position:fixed;inset:0;z-index:80;opacity:0;pointer-events:none;transition:opacity .4s cubic-bezier(.16,1,.3,1);cursor:pointer}.m-nav .nav__backdrop.show{opacity:1;pointer-events:all;background:#0003;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.m-nav .nav-lang-label{font-size:.7rem;font-weight:800;text-transform:uppercase;color:var(--m-text-secondary);opacity:.8;line-height:1;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:2em;background:#00000008;transition:all .2s ease}.m-nav button:has(.nav-lang-label):hover .nav-lang-label{background:#0000000f;opacity:1;color:var(--m-primary-color)}.m-nav button.primary:has(.nav-lang-label) .nav-lang-label{background:var(--m-btn-color-opposite, #e1b941);opacity:1}@keyframes nav-logo-skeleton-pulse{0%{opacity:.5}50%{opacity:.8}to{opacity:.5}}\n"]
41676
+ template: "<div class=\"nav\" [class.is-open]=\"isNavOpened()\" [class.is-scrolled-down]=\"isScrolledDown()\">\n <div class=\"nav__header\">\n @if (showLogo()) {\n @if (logo(); as logo) {\n <!-- AppLogo: menu open → home with panel still showing root; closed → home page. -->\n <button\n type=\"button\"\n class=\"nav_logo nav_logo--app\"\n [attr.data-app]=\"logo.app\"\n [attr.aria-label]=\"logo.alt\"\n [class.nav_logo--pop]=\"logoPop()\"\n [class.nav_logo--active]=\"logoActive()\"\n (click)=\"onLogoClick()\"\n (animationend)=\"logoPop.set(false)\"\n >\n <m-img class=\"nav_logo_img\" [src]=\"logo.src\" [alt]=\"logo.alt\" />\n </button>\n } @else if (logoPending()) {\n <div class=\"nav_logo nav_logo--loading\">\n <div class=\"nav_logo-skeleton\"></div>\n </div>\n }\n }\n <div class=\"nav_actions\">\n <m-one-button-group\n class=\"nav_main_group\"\n name=\"nav_main_button_group\"\n [buttons]=\"computedMainButtons()\"\n [vertical]=\"isVertical()\"\n />\n </div>\n @for (app of appRail(); track app.key) {\n <!-- App Rail: the Main Slot's App, then each Side App — opens the panel on its menu. -->\n @if (app.pending) {\n <div class=\"nav_logo nav_logo--loading nav_logo--rail\">\n <div class=\"nav_logo-skeleton\"></div>\n </div>\n } @else {\n <button\n type=\"button\"\n class=\"nav_logo nav_logo--app nav_logo--rail\"\n [attr.data-app]=\"app.key\"\n [attr.aria-label]=\"app.alt\"\n [class.nav_logo--active]=\"app.active\"\n (click)=\"onAppLogoClick(app.appNavId)\"\n >\n <m-img class=\"nav_logo_img\" [src]=\"app.src\" [remote]=\"app.remote\" [alt]=\"app.alt\" />\n </button>\n }\n }\n </div>\n\n <div class=\"nav__body\">\n <m-one-button (clicked)=\"toggleMenu()\" [config]=\"menuButtonConfig()\" />\n </div>\n\n <div class=\"nav__footer\">\n <m-one-button-group name=\"nav_footer_button_group\" [buttons]=\"computedFooterButtons()\" [vertical]=\"isVertical()\" />\n </div>\n</div>\n\n<div\n class=\"nav__backdrop\"\n [class.show]=\"isNavOpened()\"\n (click)=\"toggleMenu()\"\n (keydown.enter)=\"toggleMenu()\"\n tabindex=\"0\"\n></div>\n<m-nav-details />\n",
41677
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-nav .nav{position:fixed;top:0;left:0;backdrop-filter:blur(16px) brightness(1.1) saturate(1.8) contrast(1.1);-webkit-backdrop-filter:blur(16px) brightness(1.1) saturate(1.8) contrast(1.1);background-color:var(--m-backdrop-glass);border:1px solid var(--m-backdrop-border);border:none;border-right:1px solid color-mix(in srgb,var(--m-border) 55%,transparent);width:64px;height:100%;transition:.4s cubic-bezier(.165,.84,.44,1) .15s ease-in-out;z-index:100;display:flex;flex-direction:column}.m-nav .nav button:not(.primary):not(:has(.nav-lang-label)):hover{background:#ffffff14;transform:scale(1.05);box-shadow:none}.m-nav .nav button:not(.primary):not(:has(.nav-lang-label)):active{transform:scale(.95);box-shadow:none}.m-nav .nav m-one-button:has(.nav-lang-label){--m-button-background: transparent;--m-button-hover-background: transparent;--m-button-border: none;--m-button-shadow: none;--m-button-padding: 0;--m-button-width: 2rem;--m-button-hover-transform: none}.m-nav .nav .button-group{display:flex;flex-direction:column;align-items:center;gap:1.75rem}.m-nav .nav_logo{display:flex;align-items:center;justify-content:center;padding:0;height:64px;width:64px;box-sizing:border-box;position:relative;margin:0 auto}.m-nav .nav_logo:after{content:\"\";position:absolute;bottom:0;left:10%;width:80%;height:2px;background:radial-gradient(ellipse at center,color-mix(in srgb,var(--m-mm) 25%,transparent) 0%,color-mix(in srgb,var(--m-success) 15%,transparent) 40%,transparent 100%);filter:blur(.5px);pointer-events:none;z-index:11}.m-nav .nav_logo.nav_logo--rail:after{content:none}.m-nav .nav_logo.nav_logo--app{border:0;background:transparent!important;font:inherit;color:inherit;cursor:pointer;pointer-events:auto;-webkit-tap-highlight-color:transparent}.m-nav .nav_logo.nav_logo--app:hover{transform:none!important}.m-nav .nav_logo.nav_logo--app .nav_logo_img{display:block;width:32px;height:32px;margin:0 auto;position:relative;z-index:1;border-radius:9px;overflow:hidden;transition:transform .35s cubic-bezier(.34,1.56,.64,1)}.m-nav .nav_logo.nav_logo--app .nav_logo_img img{width:100%;height:100%;object-fit:cover}.m-nav .nav_logo.nav_logo--app:hover .nav_logo_img{transform:scale(1.06)}.m-nav .nav_logo.nav_logo--app:active .nav_logo_img{transform:scale(.88);transition-duration:.1s}.m-nav .nav_logo.nav_logo--app.nav_logo--pop .nav_logo_img{animation:nav-logo-pop .4s cubic-bezier(.34,1.56,.64,1)}.m-nav .nav_logo.nav_logo--app:before{content:\"\";position:absolute;top:50%;left:50%;width:44px;height:44px;border-radius:14px;border:1px solid transparent;transform:translate(-50%,-50%) scale(.85);opacity:0;pointer-events:none;transition:opacity .2s ease,transform .25s cubic-bezier(.34,1.56,.64,1)}.m-nav .nav_logo.nav_logo--app.nav_logo--active:before{opacity:1;transform:translate(-50%,-50%) scale(1);border-color:color-mix(in srgb,var(--m-primary-color) 45%,transparent);background:color-mix(in srgb,var(--m-primary-color) 8%,transparent)}.m-nav .nav_logo.nav_logo--loading{cursor:default!important;pointer-events:none!important}.m-nav .nav_logo.nav_logo--loading .nav_logo-skeleton{width:28px;height:28px;margin:0 auto;border-radius:8px;background:#ffffff14;animation:nav-logo-skeleton-pulse 1.5s infinite ease-in-out}.m-nav .nav_logo svg{width:1.75rem;height:auto;display:block;margin:0 auto;filter:drop-shadow(0 4px 12px color-mix(in srgb,var(--m-mm) 40%,transparent));transition:filter .3s ease-out}.m-nav .nav_logo svg:hover{filter:drop-shadow(0 8px 16px color-mix(in srgb,var(--m-mm) 60%,transparent))}.m-nav .nav_actions{width:100%;flex-direction:column;display:flex;align-items:center;justify-content:center;gap:1.75rem;margin-top:.5rem}.m-nav .nav_actions .nav_main_group{display:flex;flex-direction:column;align-items:center;width:100%}.m-nav .nav_user{width:100%;display:flex;align-items:center;justify-content:center;position:relative;z-index:12}.m-nav .nav__header,.m-nav .nav__footer{width:100%;position:relative;align-items:center;justify-content:center;display:flex;flex-direction:column}.m-nav .nav__body{width:100%;position:relative;flex:1;display:grid;place-items:center}@media(max-width:767px){.m-nav .nav{top:auto!important;bottom:0!important;left:0;right:0;position:fixed;width:100%;height:48px;box-sizing:content-box;display:flex;flex-direction:row;align-items:stretch;border-right:none;border-top:1px solid color-mix(in srgb,var(--m-border) 55%,transparent);padding-bottom:env(safe-area-inset-bottom);will-change:transform,opacity;transition:transform .4s cubic-bezier(.4,0,.2,1),opacity .4s ease;-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);background:color-mix(in srgb,var(--m-background) 70%,transparent)}.m-nav .nav.is-scrolled-down{transform:translateY(calc(100% + env(safe-area-inset-bottom)));opacity:0;pointer-events:none}.m-nav .nav .nav__footer{display:none}.m-nav .nav .nav__header{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:space-between;height:100%}.m-nav .nav .nav__header .nav_logo{flex:0 0 64px;display:flex;align-items:center;justify-content:center;height:100%;cursor:pointer}.m-nav .nav .nav__header .nav_logo.nav_logo--loading{cursor:default!important;pointer-events:none!important}.m-nav .nav .nav__header .nav_logo svg{width:1.5rem}.m-nav .nav .nav__header .nav_actions{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:.75rem;height:100%}.m-nav .nav .nav__header .nav_actions .nav_main_group{display:flex;align-items:center}.m-nav .nav .nav__header .nav_actions .nav_main_group .button-group{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:center;gap:.75rem}.m-nav .nav .nav__body{flex:0 0 48px;display:flex;justify-content:flex-end;align-items:center;padding-right:.25rem;height:100%}}@media(min-width:768px)and (max-width:1199px){.m-nav .nav{top:auto!important;bottom:0!important;left:0;right:0;position:fixed;width:100%;height:56px;box-sizing:content-box;display:flex;flex-direction:row;align-items:stretch;border-right:none;border-top:1px solid color-mix(in srgb,var(--m-border) 55%,transparent);padding-bottom:env(safe-area-inset-bottom);will-change:transform,opacity;transition:transform .4s cubic-bezier(.4,0,.2,1),opacity .4s ease;-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);background:color-mix(in srgb,var(--m-background) 70%,transparent)}.m-nav .nav.is-scrolled-down{transform:translateY(calc(100% + env(safe-area-inset-bottom)));opacity:0;pointer-events:none}.m-nav .nav .nav__footer{display:none}.m-nav .nav .nav__header{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:space-between;height:100%}.m-nav .nav .nav__header .nav_logo{flex:0 0 72px;display:flex;align-items:center;justify-content:center;height:100%;cursor:pointer}.m-nav .nav .nav__header .nav_logo.nav_logo--loading{cursor:default!important;pointer-events:none!important}.m-nav .nav .nav__header .nav_logo svg{width:1.75rem}.m-nav .nav .nav__header .nav_actions{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:1.25rem;height:100%}.m-nav .nav .nav__header .nav_actions .nav_main_group{display:flex;align-items:center}.m-nav .nav .nav__header .nav_actions .nav_main_group .button-group{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:center;gap:1.25rem}.m-nav .nav .nav__body{flex:0 0 56px;display:flex;justify-content:flex-end;align-items:center;padding-right:.5rem;height:100%}}@keyframes breathe{0%,to{box-shadow:0 2px 8px #00000014,0 0 0 0 transparent}50%{box-shadow:0 6px 16px color-mix(in srgb,var(--m-mm) 20%,transparent),0 0 10px 2px color-mix(in srgb,var(--m-mm) 25%,transparent)}}.m-nav .nav__backdrop{position:fixed;inset:0;z-index:80;opacity:0;pointer-events:none;transition:opacity .4s cubic-bezier(.16,1,.3,1);cursor:pointer}.m-nav .nav__backdrop.show{opacity:1;pointer-events:all}.m-nav .nav-lang-label{font-size:.7rem;font-weight:800;text-transform:uppercase;color:var(--m-text-secondary);opacity:.8;line-height:1;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:2em;background:#00000008;transition:all .2s ease}.m-nav button:has(.nav-lang-label):hover .nav-lang-label{background:#0000000f;opacity:1;color:var(--m-primary-color)}.m-nav button.primary:has(.nav-lang-label) .nav-lang-label{background:var(--m-btn-color-opposite, #e1b941);opacity:1}@keyframes nav-logo-skeleton-pulse{0%{opacity:.5}50%{opacity:.8}to{opacity:.5}}@keyframes nav-logo-pop{0%{transform:scale(1)}35%{transform:scale(.85)}70%{transform:scale(1.06)}to{transform:scale(1)}}\n"]
41587
41678
  }]
41588
41679
  }],
41589
41680
  ctorParameters: () => [],
@@ -42281,8 +42372,8 @@ var FrameComponent = class FrameComponent {
42281
42372
  navPadding = computed(() => {
42282
42373
  if (this.isPreview) return "0px";
42283
42374
  if (this.device.isMobile() || this.device.isTablet()) return "0px";
42284
- if (this.navStore.isNavOpened()) return "calc(5em + 400px)";
42285
- return "5em";
42375
+ if (this.navStore.isNavOpened()) return "calc(64px + 360px)";
42376
+ return "64px";
42286
42377
  }, ...ngDevMode ? [{ debugName: "navPadding" }] : /* istanbul ignore next */ []);
42287
42378
  static ɵfac = i0.ɵɵngDeclareFactory({
42288
42379
  minVersion: "12.0.0",
@@ -42319,7 +42410,7 @@ var FrameComponent = class FrameComponent {
42319
42410
  </div>
42320
42411
  `,
42321
42412
  isInline: true,
42322
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%;min-height:100vh}.main{display:flex;flex-direction:column;width:100%;z-index:0;background-color:var(--m-background);min-height:100vh;box-sizing:border-box;transition:padding .5s cubic-bezier(.16,1,.3,1);padding-left:var(--m-nav-padding, 0)}.main.is-mobile{padding-left:0;padding-bottom:4em}.main .content{flex:1;width:100%}\n"],
42413
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%;min-height:100vh}.main{display:flex;flex-direction:column;width:100%;z-index:0;background-color:var(--m-background);min-height:100vh;box-sizing:border-box;transition:padding .5s cubic-bezier(.16,1,.3,1);padding-left:var(--m-nav-padding, 0)}.main.is-mobile{padding-left:0;padding-bottom:56px}.main .content{flex:1;width:100%}\n"],
42323
42414
  dependencies: [
42324
42415
  {
42325
42416
  kind: "component",
@@ -42377,7 +42468,7 @@ i0.ɵɵngDeclareClassMetadata({
42377
42468
  </div>
42378
42469
  `,
42379
42470
  changeDetection: ChangeDetectionStrategy.OnPush,
42380
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%;min-height:100vh}.main{display:flex;flex-direction:column;width:100%;z-index:0;background-color:var(--m-background);min-height:100vh;box-sizing:border-box;transition:padding .5s cubic-bezier(.16,1,.3,1);padding-left:var(--m-nav-padding, 0)}.main.is-mobile{padding-left:0;padding-bottom:4em}.main .content{flex:1;width:100%}\n"]
42471
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%;min-height:100vh}.main{display:flex;flex-direction:column;width:100%;z-index:0;background-color:var(--m-background);min-height:100vh;box-sizing:border-box;transition:padding .5s cubic-bezier(.16,1,.3,1);padding-left:var(--m-nav-padding, 0)}.main.is-mobile{padding-left:0;padding-bottom:56px}.main .content{flex:1;width:100%}\n"]
42381
42472
  }]
42382
42473
  }]
42383
42474
  });
@@ -43021,25 +43112,22 @@ i0.ɵɵngDeclareClassMetadata({
43021
43112
  });
43022
43113
  var UserNavComponent = class UserNavComponent {
43023
43114
  #authStore = inject(AuthStore);
43024
- #assetStore = inject(AssetStore);
43025
- #http = inject(HttpService);
43026
43115
  #navStore = inject(NavStore);
43027
43116
  #router = inject(Router);
43028
43117
  #modalStore = inject(ModalStore);
43029
- activeTabId = signal(void 0, ...ngDevMode ? [{ debugName: "activeTabId" }] : /* istanbul ignore next */ []);
43030
43118
  currentUser = computed(() => {
43031
43119
  return this.#authStore.user() ?? null;
43032
43120
  }, ...ngDevMode ? [{ debugName: "currentUser" }] : /* istanbul ignore next */ []);
43033
- onUserMenuAction = (item) => {
43121
+ onUserAction = (button) => {
43034
43122
  const username = this.currentUser()?.username ?? "guest";
43035
- ({
43036
- edit_profile: () => this.#router.navigate([
43123
+ const actions = {
43124
+ nav_user_edit_profile: () => this.#router.navigate([
43037
43125
  "/user",
43038
43126
  username,
43039
43127
  "edit"
43040
43128
  ]),
43041
- settings: () => this.#router.navigate(["/settings"]),
43042
- logout: () => this.#modalStore.confirm({
43129
+ nav_user_settings: () => this.#router.navigate(["/settings"]),
43130
+ nav_user_logout: () => this.#modalStore.confirm({
43043
43131
  header: "confirm-logout",
43044
43132
  body: "are-you-sure-you-want-to-logout",
43045
43133
  type: "warning"
@@ -43047,48 +43135,8 @@ var UserNavComponent = class UserNavComponent {
43047
43135
  this.#navStore.setSelected(void 0);
43048
43136
  this.#authStore.logout();
43049
43137
  })
43050
- })[item.id]?.();
43051
- };
43052
- resolvedTabs = computed(() => this.#authStore.resolvedUserTabs(), ...ngDevMode ? [{ debugName: "resolvedTabs" }] : /* istanbul ignore next */ []);
43053
- showTabs = computed(() => this.resolvedTabs().length > 1, ...ngDevMode ? [{ debugName: "showTabs" }] : /* istanbul ignore next */ []);
43054
- activeTabEntry = computed(() => {
43055
- const tabs = this.resolvedTabs();
43056
- if (!tabs.length) return void 0;
43057
- const id = this.activeTabId() ?? tabs[0].tabId;
43058
- return tabs.find((t) => t.tabId === id) ?? tabs[0];
43059
- }, ...ngDevMode ? [{ debugName: "activeTabEntry" }] : /* istanbul ignore next */ []);
43060
- tabButtonsResource = rxResource({
43061
- params: () => this.resolvedTabs(),
43062
- stream: ({ params }) => {
43063
- if (!params.length) return of([]);
43064
- return forkJoin(params.map((entry) => {
43065
- const remoteUrl = entry.remote ? this.#http.buildWcAssetBaseUrl(entry.remote) : void 0;
43066
- return this.#assetStore.resolve("buttons", entry.tabId, false, remoteUrl).pipe(catchError$1(() => of({
43067
- name: entry.tabId,
43068
- label: entry.tabId,
43069
- variant: "ghost"
43070
- })), map$1((btn) => ({
43071
- ...btn,
43072
- remote: entry.remote
43073
- })));
43074
- }));
43075
- }
43076
- });
43077
- tabGroupConfig = computed(() => {
43078
- const tabs = this.resolvedTabs();
43079
- const buttons = this.tabButtonsResource.value() ?? [];
43080
- return {
43081
- routeProhibited: true,
43082
- activeTabId: this.activeTabId() ?? tabs[0]?.tabId,
43083
- tabs: buttons.map((btn, i) => ({
43084
- ...btn,
43085
- name: btn.name ?? tabs[i]?.tabId,
43086
- variant: "ghost"
43087
- }))
43088
43138
  };
43089
- }, ...ngDevMode ? [{ debugName: "tabGroupConfig" }] : /* istanbul ignore next */ []);
43090
- selectTab = (tab) => {
43091
- this.activeTabId.set(tab.name);
43139
+ if (button?.name) actions[button.name]?.();
43092
43140
  };
43093
43141
  static ɵfac = i0.ɵɵngDeclareFactory({
43094
43142
  minVersion: "12.0.0",
@@ -43105,8 +43153,8 @@ var UserNavComponent = class UserNavComponent {
43105
43153
  isStandalone: true,
43106
43154
  selector: "m-user-nav",
43107
43155
  ngImport: i0,
43108
- template: "<m-section maxHeight=\"full\">\n @if (currentUser(); as user) {\n <m-row>\n <m-col [sm]=\"11\" [padding]=\"true\">\n <m-user [id]=\"user.id\" [user]=\"user\" mRef=\"root_user\">\n <span class=\"user-nav__username\">&#64;{{ user.username }}</span>\n </m-user>\n </m-col>\n <m-col [sm]=\"1\">\n <m-context-menu name=\"user_header\" [config]=\"{ one: true }\" (action)=\"onUserMenuAction($event)\" />\n </m-col>\n </m-row>\n }\n <m-col>\n @if (activeTabEntry(); as entry) {\n @if (entry.ceSelector) {\n <m-ce-outlet [tag]=\"entry.ceSelector\" />\n } @else if (entry.component) {\n <ng-container [ngComponentOutlet]=\"entry.component\" />\n } @else {\n <m-nothing icon=\"clock\" title=\"soon-available\" />\n }\n }\n </m-col>\n</m-section>\n",
43109
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.user-nav__username{font-size:.6875rem;font-weight:600;color:var(--m-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.profile-dashboard{display:flex;flex-direction:column;width:100%;margin:0 auto;overflow:visible;box-sizing:border-box;background:var(--m-background-lite)}.profile-banner{position:relative;height:160px;width:100%;overflow:hidden;background:linear-gradient(135deg,var(--m-mm-dark) 0%,color-mix(in oklch,var(--m-mm-dark),#000 20%) 100%);transition:all .5s cubic-bezier(.16,1,.3,1);cursor:pointer}.profile-banner:hover .profile-banner__blob--1{transform:translate(15%,10%) scale(1.1)}.profile-banner:hover .profile-banner__blob--2{transform:translate(-15%,-10%) scale(1.1)}.profile-banner:hover .profile-banner__blob--3{transform:translate(10%,-15%) scale(1.1)}.profile-banner__animate{position:absolute;inset:0;overflow:hidden;opacity:.85}.profile-banner__blob{position:absolute;border-radius:50%;filter:blur(50px);will-change:transform;transition:transform 1.2s cubic-bezier(.16,1,.3,1)}.profile-banner__blob--1{width:240px;height:240px;background:radial-gradient(circle,color-mix(in oklch,var(--m-mm) 85%,transparent) 0%,transparent 70%);top:-85px;left:-40px;animation:float-1 14s infinite alternate ease-in-out}.profile-banner__blob--2{width:200px;height:200px;background:radial-gradient(circle,color-mix(in oklch,#e65c00 75%,transparent) 0%,transparent 70%);bottom:-65px;right:-30px;animation:float-2 18s infinite alternate ease-in-out}.profile-banner__blob--3{width:160px;height:160px;background:radial-gradient(circle,color-mix(in oklch,#ffcc00 65%,transparent) 0%,transparent 70%);top:15px;left:35%;animation:float-3 12s infinite alternate ease-in-out}.profile-banner__overlay{position:absolute;inset:0;background:linear-gradient(to bottom,#00000003,#00000014);-webkit-backdrop-filter:saturate(1.3);backdrop-filter:saturate(1.3)}@keyframes float-1{0%{transform:translate(-10%,-10%) scale(1)}50%{transform:translate(20%,12%) scale(1.1)}to{transform:translate(-5%,15%) scale(.95)}}@keyframes float-2{0%{transform:translate(20%,12%) scale(1.05)}50%{transform:translate(-12%,-12%) scale(.92)}to{transform:translate(12%,5%) scale(1.1)}}@keyframes float-3{0%{transform:translate(8%,20%) scale(.92)}50%{transform:translate(25%,-8%) scale(1.08)}to{transform:translate(5%,12%) scale(1)}}.profile-container{display:flex;flex-direction:column;padding:0 1.5rem 2rem;box-sizing:border-box;width:100%;max-width:1200px;margin:0 auto}.profile-nav-card{background:transparent;border:none;overflow:hidden;box-sizing:border-box;width:100%;transition:all .3s cubic-bezier(.16,1,.3,1);margin-left:-1.75rem;margin-right:-1.75rem;width:calc(100% + 3.5rem)}.profile-nav-card.is-sticky{position:sticky;top:-1px;z-index:100;background:#ffffffe6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--m-backdrop-border);box-shadow:0 4px 20px #0000000a;transition:all .3s cubic-bezier(.16,1,.3,1);animation:slide-down-fade .28s cubic-bezier(.16,1,.3,1)}.profile-content{display:flex;flex-direction:column;gap:1rem;box-sizing:border-box;margin-left:-1.75rem;margin-right:-1.75rem;width:calc(100% + 3.5rem)}.soon-card{background:#ffffff8c;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--m-backdrop-border);border-radius:20px;padding:4.5rem 2rem;text-align:center;display:flex;align-items:center;justify-content:center;box-shadow:0 10px 30px #00000004;box-sizing:border-box;width:100%}.soon-text{font-size:.875rem;color:var(--m-text-secondary);font-weight:700;letter-spacing:.12em;text-transform:uppercase;background:linear-gradient(135deg,var(--m-mm),var(--m-mm-lite));-webkit-background-clip:text;-webkit-text-fill-color:transparent}@keyframes slide-down-fade{0%{transform:translateY(-10px);opacity:.75}to{transform:translateY(0);opacity:1}}\n"],
43156
+ template: "@if (currentUser()) {\n <m-section variant=\"noBorder\">\n <m-row>\n <m-col>\n <!-- Inside the col, not a direct child of m-section: the section's\n action slot draws above its body. The user itself sits in\n m-nav-header. -->\n <m-action name=\"nav_user_actions\" [one]=\"true\" (clicked)=\"onUserAction($event)\" />\n </m-col>\n </m-row>\n </m-section>\n}\n",
43157
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;border-top:1px solid var(--m-backdrop-border);--section-pt: 0;--m-section-min-height: 0;--m-row-min-height: 0}\n"],
43110
43158
  dependencies: [
43111
43159
  {
43112
43160
  kind: "component",
@@ -43125,39 +43173,6 @@ var UserNavComponent = class UserNavComponent {
43125
43173
  ],
43126
43174
  outputs: ["inView"]
43127
43175
  },
43128
- {
43129
- kind: "directive",
43130
- type: NgComponentOutlet,
43131
- selector: "[ngComponentOutlet]",
43132
- inputs: [
43133
- "ngComponentOutlet",
43134
- "ngComponentOutletInputs",
43135
- "ngComponentOutletInjector",
43136
- "ngComponentOutletEnvironmentInjector",
43137
- "ngComponentOutletContent",
43138
- "ngComponentOutletNgModule"
43139
- ],
43140
- exportAs: ["ngComponentOutlet"]
43141
- },
43142
- {
43143
- kind: "component",
43144
- type: CeOutletComponent,
43145
- selector: "m-ce-outlet",
43146
- inputs: ["tag"]
43147
- },
43148
- {
43149
- kind: "component",
43150
- type: NothingComponent,
43151
- selector: "m-nothing",
43152
- inputs: [
43153
- "icon",
43154
- "title",
43155
- "description",
43156
- "buttonName",
43157
- "button"
43158
- ],
43159
- outputs: ["actionClick"]
43160
- },
43161
43176
  {
43162
43177
  kind: "component",
43163
43178
  type: ColComponent,
@@ -43193,42 +43208,16 @@ var UserNavComponent = class UserNavComponent {
43193
43208
  },
43194
43209
  {
43195
43210
  kind: "component",
43196
- type: UserComponent,
43197
- selector: "m-user",
43198
- inputs: [
43199
- "id",
43200
- "user",
43201
- "firstName",
43202
- "lastName",
43203
- "profilePic"
43204
- ]
43205
- },
43206
- {
43207
- kind: "directive",
43208
- type: MRefDirective,
43209
- selector: "[mRef]",
43211
+ type: ActionComponent,
43212
+ selector: "m-action, m-one-action",
43210
43213
  inputs: [
43211
- "mRef",
43212
- "mRefLinkActive",
43213
- "mRefToggle",
43214
- "mRefParams"
43214
+ "sticky",
43215
+ "variant",
43216
+ "active",
43217
+ "renderIds",
43218
+ "squeezeAt",
43219
+ "squeezeMode"
43215
43220
  ]
43216
- },
43217
- {
43218
- kind: "component",
43219
- type: ContextMenuComponent,
43220
- selector: "m-context-menu, m-one-context-menu",
43221
- inputs: [
43222
- "toggle",
43223
- "remote",
43224
- "exclude",
43225
- "visibilityRule",
43226
- "disableRule",
43227
- "extraData",
43228
- "inverted",
43229
- "options"
43230
- ],
43231
- outputs: ["toggleChange", "action"]
43232
43221
  }
43233
43222
  ],
43234
43223
  changeDetection: i0.ChangeDetectionStrategy.OnPush
@@ -43246,17 +43235,12 @@ i0.ɵɵngDeclareClassMetadata({
43246
43235
  changeDetection: ChangeDetectionStrategy.OnPush,
43247
43236
  imports: [
43248
43237
  SectionComponent,
43249
- NgComponentOutlet,
43250
- CeOutletComponent,
43251
- NothingComponent,
43252
43238
  ColComponent,
43253
43239
  RowComponent,
43254
- UserComponent,
43255
- MRefDirective,
43256
- ContextMenuComponent
43240
+ ActionComponent
43257
43241
  ],
43258
- template: "<m-section maxHeight=\"full\">\n @if (currentUser(); as user) {\n <m-row>\n <m-col [sm]=\"11\" [padding]=\"true\">\n <m-user [id]=\"user.id\" [user]=\"user\" mRef=\"root_user\">\n <span class=\"user-nav__username\">&#64;{{ user.username }}</span>\n </m-user>\n </m-col>\n <m-col [sm]=\"1\">\n <m-context-menu name=\"user_header\" [config]=\"{ one: true }\" (action)=\"onUserMenuAction($event)\" />\n </m-col>\n </m-row>\n }\n <m-col>\n @if (activeTabEntry(); as entry) {\n @if (entry.ceSelector) {\n <m-ce-outlet [tag]=\"entry.ceSelector\" />\n } @else if (entry.component) {\n <ng-container [ngComponentOutlet]=\"entry.component\" />\n } @else {\n <m-nothing icon=\"clock\" title=\"soon-available\" />\n }\n }\n </m-col>\n</m-section>\n",
43259
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.user-nav__username{font-size:.6875rem;font-weight:600;color:var(--m-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.profile-dashboard{display:flex;flex-direction:column;width:100%;margin:0 auto;overflow:visible;box-sizing:border-box;background:var(--m-background-lite)}.profile-banner{position:relative;height:160px;width:100%;overflow:hidden;background:linear-gradient(135deg,var(--m-mm-dark) 0%,color-mix(in oklch,var(--m-mm-dark),#000 20%) 100%);transition:all .5s cubic-bezier(.16,1,.3,1);cursor:pointer}.profile-banner:hover .profile-banner__blob--1{transform:translate(15%,10%) scale(1.1)}.profile-banner:hover .profile-banner__blob--2{transform:translate(-15%,-10%) scale(1.1)}.profile-banner:hover .profile-banner__blob--3{transform:translate(10%,-15%) scale(1.1)}.profile-banner__animate{position:absolute;inset:0;overflow:hidden;opacity:.85}.profile-banner__blob{position:absolute;border-radius:50%;filter:blur(50px);will-change:transform;transition:transform 1.2s cubic-bezier(.16,1,.3,1)}.profile-banner__blob--1{width:240px;height:240px;background:radial-gradient(circle,color-mix(in oklch,var(--m-mm) 85%,transparent) 0%,transparent 70%);top:-85px;left:-40px;animation:float-1 14s infinite alternate ease-in-out}.profile-banner__blob--2{width:200px;height:200px;background:radial-gradient(circle,color-mix(in oklch,#e65c00 75%,transparent) 0%,transparent 70%);bottom:-65px;right:-30px;animation:float-2 18s infinite alternate ease-in-out}.profile-banner__blob--3{width:160px;height:160px;background:radial-gradient(circle,color-mix(in oklch,#ffcc00 65%,transparent) 0%,transparent 70%);top:15px;left:35%;animation:float-3 12s infinite alternate ease-in-out}.profile-banner__overlay{position:absolute;inset:0;background:linear-gradient(to bottom,#00000003,#00000014);-webkit-backdrop-filter:saturate(1.3);backdrop-filter:saturate(1.3)}@keyframes float-1{0%{transform:translate(-10%,-10%) scale(1)}50%{transform:translate(20%,12%) scale(1.1)}to{transform:translate(-5%,15%) scale(.95)}}@keyframes float-2{0%{transform:translate(20%,12%) scale(1.05)}50%{transform:translate(-12%,-12%) scale(.92)}to{transform:translate(12%,5%) scale(1.1)}}@keyframes float-3{0%{transform:translate(8%,20%) scale(.92)}50%{transform:translate(25%,-8%) scale(1.08)}to{transform:translate(5%,12%) scale(1)}}.profile-container{display:flex;flex-direction:column;padding:0 1.5rem 2rem;box-sizing:border-box;width:100%;max-width:1200px;margin:0 auto}.profile-nav-card{background:transparent;border:none;overflow:hidden;box-sizing:border-box;width:100%;transition:all .3s cubic-bezier(.16,1,.3,1);margin-left:-1.75rem;margin-right:-1.75rem;width:calc(100% + 3.5rem)}.profile-nav-card.is-sticky{position:sticky;top:-1px;z-index:100;background:#ffffffe6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--m-backdrop-border);box-shadow:0 4px 20px #0000000a;transition:all .3s cubic-bezier(.16,1,.3,1);animation:slide-down-fade .28s cubic-bezier(.16,1,.3,1)}.profile-content{display:flex;flex-direction:column;gap:1rem;box-sizing:border-box;margin-left:-1.75rem;margin-right:-1.75rem;width:calc(100% + 3.5rem)}.soon-card{background:#ffffff8c;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--m-backdrop-border);border-radius:20px;padding:4.5rem 2rem;text-align:center;display:flex;align-items:center;justify-content:center;box-shadow:0 10px 30px #00000004;box-sizing:border-box;width:100%}.soon-text{font-size:.875rem;color:var(--m-text-secondary);font-weight:700;letter-spacing:.12em;text-transform:uppercase;background:linear-gradient(135deg,var(--m-mm),var(--m-mm-lite));-webkit-background-clip:text;-webkit-text-fill-color:transparent}@keyframes slide-down-fade{0%{transform:translateY(-10px);opacity:.75}to{transform:translateY(0);opacity:1}}\n"]
43242
+ template: "@if (currentUser()) {\n <m-section variant=\"noBorder\">\n <m-row>\n <m-col>\n <!-- Inside the col, not a direct child of m-section: the section's\n action slot draws above its body. The user itself sits in\n m-nav-header. -->\n <m-action name=\"nav_user_actions\" [one]=\"true\" (clicked)=\"onUserAction($event)\" />\n </m-col>\n </m-row>\n </m-section>\n}\n",
43243
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;border-top:1px solid var(--m-backdrop-border);--section-pt: 0;--m-section-min-height: 0;--m-row-min-height: 0}\n"]
43260
43244
  }]
43261
43245
  }]
43262
43246
  });
@@ -43649,6 +43633,9 @@ var NotificationWidgetComponent = class NotificationWidgetComponent {
43649
43633
  return [...shown.filter((n) => n.highlighted), ...shown.filter((n) => !n.highlighted)];
43650
43634
  }, ...ngDevMode ? [{ debugName: "displayNotifications" }] : /* istanbul ignore next */ []);
43651
43635
  unreadCount = computed(() => this.#notificationStore.unreadCount(), ...ngDevMode ? [{ debugName: "unreadCount" }] : /* istanbul ignore next */ []);
43636
+ onFilter(button) {
43637
+ this.activeTab.set(button?.name ?? "all");
43638
+ }
43652
43639
  static ɵfac = i0.ɵɵngDeclareFactory({
43653
43640
  minVersion: "12.0.0",
43654
43641
  version: "22.2.1",
@@ -43666,34 +43653,38 @@ var NotificationWidgetComponent = class NotificationWidgetComponent {
43666
43653
  ngImport: i0,
43667
43654
  template: `
43668
43655
  <div class="notification-widget">
43669
- <div class="notification-widget__header">
43670
- <div class="notification-widget__toggle">
43671
- <m-one-toggle-button
43672
- [name]="'notification_filter'"
43673
- [value]="activeTab()"
43674
- (valueChange)="activeTab.set($event || 'all')"
43675
- />
43676
- </div>
43677
- </div>
43656
+ <m-section variant="noBorder">
43657
+ <!-- Direct child: the section's action slot draws the filter above
43658
+ the list. -->
43659
+ <m-action
43660
+ name="notification_filter"
43661
+ [one]="true"
43662
+ [active]="activeTab()"
43663
+ (clicked)="onFilter($event)"
43664
+ />
43678
43665
 
43679
- <div class="notification-widget__list">
43680
- @if (displayNotifications().length > 0) {
43681
- @for (notification of displayNotifications(); track notification.id) {
43682
- <m-notification-element [notification]="notification" />
43666
+ <div class="notification-widget__list">
43667
+ @if (displayNotifications().length > 0) {
43668
+ @for (
43669
+ notification of displayNotifications();
43670
+ track notification.id
43671
+ ) {
43672
+ <m-notification-element [notification]="notification" />
43673
+ }
43674
+ } @else {
43675
+ <div class="notification-widget__empty">
43676
+ <span class="notification-widget__empty-icon">🔔</span>
43677
+ <span class="notification-widget__empty-text">{{
43678
+ 'all-caught-up' | translate
43679
+ }}</span>
43680
+ </div>
43683
43681
  }
43684
- } @else {
43685
- <div class="notification-widget__empty">
43686
- <span class="notification-widget__empty-icon">🔔</span>
43687
- <span class="notification-widget__empty-text">{{
43688
- 'all-caught-up' | translate
43689
- }}</span>
43690
- </div>
43691
- }
43692
- </div>
43682
+ </div>
43683
+ </m-section>
43693
43684
  </div>
43694
43685
  `,
43695
43686
  isInline: true,
43696
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.notification-widget{display:flex;flex-direction:column;height:100%}.notification-widget__header{display:flex;align-items:center;justify-content:center;padding:1.25rem 1.5rem 1rem}.notification-widget__toggle{width:100%;max-width:16rem;margin:0 auto;--m-toggle-button-radius: 9999px}.notification-widget__toggle .m-toggle-button{display:block;width:100%}.notification-widget__list{flex:1;display:flex;flex-direction:column;overflow-y:auto;padding:0;scrollbar-width:none}.notification-widget__list::-webkit-scrollbar{display:none}.notification-widget__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;padding:3rem 1.5rem;gap:1rem;text-align:center}.notification-widget__empty-icon{font-size:2.5rem;opacity:.5}.notification-widget__empty-text{font-size:.875rem;font-weight:600;color:#999}@keyframes pulse-ring{0%{transform:scale(.8);opacity:.9}to{transform:scale(2.4);opacity:0}}@keyframes bell-shake{0%,85%,to{transform:rotate(0) scale(1)}87%,93%{transform:rotate(15deg) scale(1.1)}90%,96%{transform:rotate(-15deg) scale(1.1)}}\n"],
43687
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.notification-widget{display:flex;flex-direction:column;height:100%}.notification-widget__list{flex:1;display:flex;flex-direction:column;overflow-y:auto;padding:0;scrollbar-width:none}.notification-widget__list::-webkit-scrollbar{display:none}.notification-widget__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;padding:3rem 1.5rem;gap:1rem;text-align:center}.notification-widget__empty-icon{font-size:2.5rem;opacity:.5}.notification-widget__empty-text{font-size:.875rem;font-weight:600;color:#999}@keyframes pulse-ring{0%{transform:scale(.8);opacity:.9}to{transform:scale(2.4);opacity:0}}@keyframes bell-shake{0%,85%,to{transform:rotate(0) scale(1)}87%,93%{transform:rotate(15deg) scale(1.1)}90%,96%{transform:rotate(-15deg) scale(1.1)}}\n"],
43697
43688
  dependencies: [
43698
43689
  {
43699
43690
  kind: "component",
@@ -43704,10 +43695,33 @@ var NotificationWidgetComponent = class NotificationWidgetComponent {
43704
43695
  },
43705
43696
  {
43706
43697
  kind: "component",
43707
- type: ToggleButtonComponent,
43708
- selector: "m-toggle-button,m-one-toggle-button",
43709
- inputs: ["value", "buttons"],
43710
- outputs: ["valueChange"]
43698
+ type: SectionComponent,
43699
+ selector: "m-section",
43700
+ inputs: [
43701
+ "variant",
43702
+ "maxWidth",
43703
+ "heightMode",
43704
+ "maxHeight",
43705
+ "height",
43706
+ "align",
43707
+ "alignX",
43708
+ "alignY",
43709
+ "size"
43710
+ ],
43711
+ outputs: ["inView"]
43712
+ },
43713
+ {
43714
+ kind: "component",
43715
+ type: ActionComponent,
43716
+ selector: "m-action, m-one-action",
43717
+ inputs: [
43718
+ "sticky",
43719
+ "variant",
43720
+ "active",
43721
+ "renderIds",
43722
+ "squeezeAt",
43723
+ "squeezeMode"
43724
+ ]
43711
43725
  },
43712
43726
  {
43713
43727
  kind: "pipe",
@@ -43729,39 +43743,44 @@ i0.ɵɵngDeclareClassMetadata({
43729
43743
  selector: "m-notification-widget",
43730
43744
  imports: [
43731
43745
  NotificationElementComponent,
43732
- ToggleButtonComponent,
43746
+ SectionComponent,
43747
+ ActionComponent,
43733
43748
  TranslatePipe
43734
43749
  ],
43735
43750
  template: `
43736
43751
  <div class="notification-widget">
43737
- <div class="notification-widget__header">
43738
- <div class="notification-widget__toggle">
43739
- <m-one-toggle-button
43740
- [name]="'notification_filter'"
43741
- [value]="activeTab()"
43742
- (valueChange)="activeTab.set($event || 'all')"
43743
- />
43744
- </div>
43745
- </div>
43752
+ <m-section variant="noBorder">
43753
+ <!-- Direct child: the section's action slot draws the filter above
43754
+ the list. -->
43755
+ <m-action
43756
+ name="notification_filter"
43757
+ [one]="true"
43758
+ [active]="activeTab()"
43759
+ (clicked)="onFilter($event)"
43760
+ />
43746
43761
 
43747
- <div class="notification-widget__list">
43748
- @if (displayNotifications().length > 0) {
43749
- @for (notification of displayNotifications(); track notification.id) {
43750
- <m-notification-element [notification]="notification" />
43762
+ <div class="notification-widget__list">
43763
+ @if (displayNotifications().length > 0) {
43764
+ @for (
43765
+ notification of displayNotifications();
43766
+ track notification.id
43767
+ ) {
43768
+ <m-notification-element [notification]="notification" />
43769
+ }
43770
+ } @else {
43771
+ <div class="notification-widget__empty">
43772
+ <span class="notification-widget__empty-icon">🔔</span>
43773
+ <span class="notification-widget__empty-text">{{
43774
+ 'all-caught-up' | translate
43775
+ }}</span>
43776
+ </div>
43751
43777
  }
43752
- } @else {
43753
- <div class="notification-widget__empty">
43754
- <span class="notification-widget__empty-icon">🔔</span>
43755
- <span class="notification-widget__empty-text">{{
43756
- 'all-caught-up' | translate
43757
- }}</span>
43758
- </div>
43759
- }
43760
- </div>
43778
+ </div>
43779
+ </m-section>
43761
43780
  </div>
43762
43781
  `,
43763
43782
  changeDetection: ChangeDetectionStrategy.OnPush,
43764
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.notification-widget{display:flex;flex-direction:column;height:100%}.notification-widget__header{display:flex;align-items:center;justify-content:center;padding:1.25rem 1.5rem 1rem}.notification-widget__toggle{width:100%;max-width:16rem;margin:0 auto;--m-toggle-button-radius: 9999px}.notification-widget__toggle .m-toggle-button{display:block;width:100%}.notification-widget__list{flex:1;display:flex;flex-direction:column;overflow-y:auto;padding:0;scrollbar-width:none}.notification-widget__list::-webkit-scrollbar{display:none}.notification-widget__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;padding:3rem 1.5rem;gap:1rem;text-align:center}.notification-widget__empty-icon{font-size:2.5rem;opacity:.5}.notification-widget__empty-text{font-size:.875rem;font-weight:600;color:#999}@keyframes pulse-ring{0%{transform:scale(.8);opacity:.9}to{transform:scale(2.4);opacity:0}}@keyframes bell-shake{0%,85%,to{transform:rotate(0) scale(1)}87%,93%{transform:rotate(15deg) scale(1.1)}90%,96%{transform:rotate(-15deg) scale(1.1)}}\n"]
43783
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.notification-widget{display:flex;flex-direction:column;height:100%}.notification-widget__list{flex:1;display:flex;flex-direction:column;overflow-y:auto;padding:0;scrollbar-width:none}.notification-widget__list::-webkit-scrollbar{display:none}.notification-widget__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;padding:3rem 1.5rem;gap:1rem;text-align:center}.notification-widget__empty-icon{font-size:2.5rem;opacity:.5}.notification-widget__empty-text{font-size:.875rem;font-weight:600;color:#999}@keyframes pulse-ring{0%{transform:scale(.8);opacity:.9}to{transform:scale(2.4);opacity:0}}@keyframes bell-shake{0%,85%,to{transform:rotate(0) scale(1)}87%,93%{transform:rotate(15deg) scale(1.1)}90%,96%{transform:rotate(-15deg) scale(1.1)}}\n"]
43765
43784
  }]
43766
43785
  }]
43767
43786
  });
@@ -49226,6 +49245,6 @@ i0.ɵɵngDeclareClassMetadata({
49226
49245
  }]
49227
49246
  }
49228
49247
  });
49229
- export { ACCESS_DOMAINS, APP_CONTEXT_REF, APP_LINK, ASSET_BASE_URL, AccordionBodyDirective, AccordionComponent, AccordionGroupComponent, ActionComponent, AnimatedGraphsComponent, AppAvailability, AppCardComponent, AppRelationType, AppTileComponent, AssetStore, AssetUrlPipe, Assets, AuthActivityPageComponent, AuthApiService, AuthStore, AutosizeDirective, BadgeComponent, BandingComponent, BaseArrayInputComponent, BaseRootWebComponent, BaseWebComponent, BrowserLocaleService, ButtonComponent, ButtonGroupComponent, CALLING_APP_HEADER, COMPONENT_INPUT_REGISTRY, CardComponent, CardWrapperComponent, CarouselComponent, ChartComponent, ChatBubbleComponent, CheckboxGroupComponent, CheckboxInputComponent, ClearableInputComponent, ClipboardService, ColComponent, ColorPickerInputComponent, CommentItemComponent, CommentsApiService, CommentsComponent, CommentsStore, CompactNumberPipe, ComponentInputComponent, ComponentStepperComponent, ConfigComponent, ConfirmComponent, ContextMenuComponent, CustomIconClass, CustomIconEditComponent, DEFAULT_DENIAL, DEFAULT_DOC_ALIGN, DEFAULT_DOC_DENSITY, DEFAULT_DOC_VARIANT, DEFAULT_FILTER_RANGE_MODE, DEFAULT_FILTER_VARIANT, DEFAULT_NAV_PARAM, DEFAULT_NAV_SEGMENT, DEFAULT_SIZE, DOCK_MIN_PAGE_REMAINDER, DOCS_FOLDER, DOC_ACTION_ICONS, DOC_ALIGNS, DOC_DENSITIES, DOC_EDIT_ACTIONS, DOC_TOOLBAR_GROUPS, DOC_VARIANTS, DashboardCardComponent, DateInputComponent, DatePickerComponent, DeviceService, DocComponent, DocEditorComponent, DomService, Domain, DotGridComponent, DragListDirective, DragListItemDirective, DraggableDirective, DropdownInputComponent, FILTER_GROUP_CONTEXT, FILTER_RANGE_MODES, FILTER_VARIANTS, FLEX_VARIANTS, FOLDER_PICK_LISTENER, FORM_ASSET_FOLDER, FileService, FileUploadDirective, FileUploadInputComponent, FlexComponent, FlexItemComponent, FormGroupComponent, FrameComponent, FreezeService, GRID_BREAKPOINTS, GetNavService, HeaderComponent, HighlightDirective, HttpService, ICON_SOURCE, IS_DESIGN_MODE, IS_SIDE_PANEL, IconComponent, ImgComponent, InputType, InstrumentScoreComponent, InterceptorObservables, JumbotronComponent, KeyValueComponent, LAYOUT_ASSET_FOLDER, LOADING_ACTIONS_REF, LOGIN_COMPONENT, LOGIN_STORE, LanguageComponent, ListComponent, LogoComponent, MAG_SOCKET_EVENT, MHeroColorDirective, MHeroComponent, MODAL_REF, MODAL_STORE_REF, MOUNT_STATIC_SEGMENT, MOUNT_TOKEN, MRefDirective, MStepComponent, MURL_PARAM, MURL_SEP, ManifestEnrichmentService, MarginDirective, MenuComponent, ModalDirective, ModalRef, ModalStore, MoneyPipe, MultiRangeInputComponent, MultiselectInputComponent, MurlUrlSerializer, NAV_DEFAULT_MURL, NAV_ID_SEP, NAV_MAIN_BUTTONS, NAV_SEGMENT_RE, NAV_STORE_REF, NAV_WC_COMPONENTS, NAV_WIDGET_MAP, NavComponent, NavDetailsComponent, NavHeaderComponent, NavMenuComponent, NavStore, NavTrailComponent, NothingComponent, NotificationElementComponent, NotificationGroupComponent, NotificationPopupComponent, NotificationService, NotificationStore, NotificationType, NotificationWidgetComponent, ONE_ASSET_BASE_URL, OPTIONS_SOURCE, OVERLAY_WIDGETS, OneApp, OptionsSourceDirective, OverlayBodyComponent, OverlayRef, OverlayService, PLATFORM_BUTTON_NAV_IDS, PLATFORM_EXTENSIBLE_NAV_IDS, PLATFORM_NAV_MAP, PLATFORM_ROOT_CHILDREN, PLUGIN_FALLBACK_LANG, PLUGIN_OUTPUT_EVENT, PLUGIN_SCREENS, PaddingDirective, PaginationComponent, PanelComponent, PercentagePipe, PlaygroundComponent, PluginComponent, PluginInputComponent, PluginOutputComponent, PositionDirective, PwaInstallComponent, RECENT_SEARCH_LIMIT, REMOTE_PAGE_RELOAD, ROOT_NAV, RadioGroupComponent, RadioInputComponent, RangeInputComponent, RatingInputComponent, ReactiveElementComponent, RemoteComponent, RemoteLoaderService, ResizeElementComponent, RouteContainer, RowComponent, SEARCH_QUERY, SEARCH_RESULTS_EVENT, SECTION_ACCORDION_GROUP, SECTION_FORM_CONTEXT, SECTION_TABLE_VARIANTS, SHARED_ICONS, SIZE_CONTEXT, SPACING_INWARD, ScoreComponent, ScrollComponent, ScrollService, SearchPanelComponent, SearchStore, SearchUserPanelComponent, SectionAccordionDirective, SectionAccordionGroupDirective, SectionBackComponent, SectionBadgesComponent, SectionButtonGroupComponent, SectionCardComponent, SectionCarouselComponent, SectionComponent, SectionFilterComponent, SectionFilterGroupComponent, SectionFilterMenuComponent, SectionFilterPanelComponent, SectionFilterRangePanelComponent, SectionFooterComponent, SectionFormComponent, SectionFormItemComponent, SectionHeaderComponent, SectionHeroComponent, SectionPaginationComponent, SectionSearchComponent, SectionStepperComponent, SectionTableCellComponent, SectionTableComponent, SectionTableRowComponent, SectionTableSortPipe, SectionTabsComponent, SectionToggleComponent, SectionToggleItemDirective, SelectableCardInputComponent, SelectorDirective, SettingsSearchBarComponent, SettingsSearchService, ShapeComponent, SharedStoreRegistry, SidePanelDirective, Size, SocketStore, SortComponent, StatComponent, StepComponent, StepperComponent, StepsComponent, StorageService, StrokeLinecap, StrokeLinejoin, SummaryComponent, SvgGeneratorComponent, SvgGeneratorService, SvgService, TOTAL_COLUMNS, TRANSLATION_SOURCE, TableComponent, TechnicalMeterComponent, TextInputComponent, TextOutputComponent, TextareaInputComponent, ThemeComponent, ThemeDataService, ThemeService, ThemeStore, TimeAgoPipe, TimelineComponent, ToggleButtonComponent, ToggleInputComponent, ToggleRadioInputComponent, ToolTipDirective, TooltipComponent, TranslatePipe, TranslateService, TreeGridComponent, URL_SEP, USER_STORE_REF, USER_TAB_MAP, UniverseComponent, UserApiService, UserAvatarComponent, UserComponent, UserNavComponent, UserSettingsComponent, UserStore, WC_BUNDLE, WC_NAVIGATE_EVENT, WC_ROUTE_CHANGED_EVENT, WC_SEARCH_GROUPS, WIN_USER_TAB_HOOK, WIN_USER_TAB_KEY, WatermarkComponent, WcRouterStore, WrapperInputComponent, allowedCodes, anchorNavId, applyColorsToElement, applyDocEdit, assetOptions, bootstrapMagApp, bootstrapPwaInstall, browserLocale, buildWcBaseUrl, calculateLuminance, calculateRanks, cellText, checkDoc, checkFilterCondition, childNavId, claimDenial, classListSignal, coerceSize, cornerEdge, cornerSide, createLoadingState, createMap, createPlatformNavMap, createPluginElement, definePluginScreens, definedWcBundleOf, definedWcTierOf, deriveAvatarGradient, deriveContrastColor, deriveOppositeColor, derivePropertyName, docActionKey, docAssetCandidates, docProblemKey, docRemotePath, emailValidation, evaluate, evaluateBool, exposeScreens, exposedScreensOf, fieldBoolean, fieldNumber, fieldString, filterHoldsList, filterHoldsOneBound, filterHoldsOptions, filterHoldsRange, filterList, filterNumber, filterNumberList, filterOne, filterPanelOf, filterPanelWidth, filterRange, filterTreeGridRows, filterValueList, filterValues, flattenTreeGridRows, formatBadgeCount, fullName, generateClipPath, generateTransform, getClassList, getProperty, getScrollParent, getTierFromPreviewPath, getTreeGridRow, getUniqueId, getValue, hasErrorComputed, hexToRgb, hslToRgb, initMagmoniumApp, initialNotificationState, initialState, initials, injectAuthenticate, injectDefaultDenial, injectInstallApp, injectParentSize, injectScrollSticky, isBootRedirect, isButtonName, isCancelledComputed, isExtensiblePlatformNavId, isJson, isLoadingComputed, isLocalhost, isNavInstanceConfig, isNavMenuConfig, isNavRowsConfig, isNavVisibilityConfig, isPlatformNavId, isSize, isTierPreview, isUrlLocalhost, isValidNavId, isValidNavSegment, isWebComponent, linkToId, linkToNav, loadingActions, mInterceptor, manualValidation, matchFieldValidation, matchMount, maxLengthValidation, maxValidation, mergePlatformNav, mergeUnique, mergeUniqueBy, mergeUniqueWith, minAgeValidation, minLengthValidation, minValidation, miniMarkToHtml, mountFor, mountPatternProblem, mountPatternText, mountSegmentOf, mountTokenOf, navIdChain, navIdFor, navIdSegment, navIdToRoutePath, navIdToSegments, navParamOf, navTailMatcher, navToId, navVisibilityGuard, nextSectionTableSort, normalizeAssetOptions, offsetOfLine, parentNavId, parseAddress, parseColor, parseMountPattern, parsePatternNames, patternValidation, patternsValidation, permissionRefusal, pickSupportedLanguage, platformNavWidgets, pluginTag, presetDefaultOption, privateGuard, processImageToSvg, provideAppContext, provideMagAppConfig, provideMagWcConfig, provideMagWcRoutes, provideModalComponents, provideMurlUrlSerializer, provideNavWidgets, provideOverlayWidgets, providePlatformNavWidgets, providePluginRuntime, provideSearch, provideSizeContext, provideUserTabs, publicGuard, readFieldPatterns, recordDefinedWcTier, remoteOutletRoute, renderAddress, renderDocument, requiredValidation, resolveConfigAsset, resolveIconSize, resolvePallet, resolvePatternRules, resolveSize, resolveSpacing, rgbToHex, rgbToHsl, rowHasChildren, samePatterns, sectionTableColumnId, sectionTableColumnWidths, sectionTableFrozenCount, segmentsToNavId, setProperty, setTreeGridChildren, setWcLocalPort, setWcTier, settingsWidgets, shouldShowBadge, sortSectionTableRows, splitNavId, splitOnMatch, stringToColor, tailRouteOf, toAttrBool, toAttrNumber, toCssLength, toHostNavId, toLength, toLocalNavId, toggleTreeGridRow, unfetchedPlatformNav, ungroupedDocActions, urlValidation, wcLocalBaseOf, wcTierOf };
49248
+ export { ACCESS_DOMAINS, APP_CONTEXT_REF, APP_LINK, ASSET_BASE_URL, AccordionBodyDirective, AccordionComponent, AccordionGroupComponent, ActionComponent, AnimatedGraphsComponent, AppAvailability, AppCardComponent, AppRelationType, AppTileComponent, AssetStore, AssetUrlPipe, Assets, AuthActivityPageComponent, AuthApiService, AuthStore, AutosizeDirective, BadgeComponent, BandingComponent, BaseArrayInputComponent, BaseRootWebComponent, BaseWebComponent, BrowserLocaleService, ButtonComponent, ButtonGroupComponent, CALLING_APP_HEADER, COMPONENT_INPUT_REGISTRY, CardComponent, CardWrapperComponent, CarouselComponent, ChartComponent, ChatBubbleComponent, CheckboxGroupComponent, CheckboxInputComponent, ClearableInputComponent, ClipboardService, ColComponent, ColorPickerInputComponent, CommentItemComponent, CommentsApiService, CommentsComponent, CommentsStore, CompactNumberPipe, ComponentInputComponent, ComponentStepperComponent, ConfigComponent, ConfirmComponent, ContextMenuComponent, CustomIconClass, CustomIconEditComponent, DEFAULT_DENIAL, DEFAULT_DOC_ALIGN, DEFAULT_DOC_DENSITY, DEFAULT_DOC_VARIANT, DEFAULT_FILTER_RANGE_MODE, DEFAULT_FILTER_VARIANT, DEFAULT_NAV_PARAM, DEFAULT_NAV_SEGMENT, DEFAULT_SIZE, DOCK_MIN_PAGE_REMAINDER, DOCS_FOLDER, DOC_ACTION_ICONS, DOC_ALIGNS, DOC_DENSITIES, DOC_EDIT_ACTIONS, DOC_TOOLBAR_GROUPS, DOC_VARIANTS, DashboardCardComponent, DateInputComponent, DatePickerComponent, DeviceService, DocComponent, DocEditorComponent, DomService, Domain, DotGridComponent, DragListDirective, DragListItemDirective, DraggableDirective, DropdownInputComponent, FILTER_GROUP_CONTEXT, FILTER_RANGE_MODES, FILTER_VARIANTS, FLEX_VARIANTS, FOLDER_PICK_LISTENER, FORM_ASSET_FOLDER, FileService, FileUploadDirective, FileUploadInputComponent, FlexComponent, FlexItemComponent, FormGroupComponent, FrameComponent, FreezeService, GRID_BREAKPOINTS, GetNavService, HeaderComponent, HighlightDirective, HttpService, ICON_SOURCE, IS_DESIGN_MODE, IS_SIDE_PANEL, IconComponent, ImgComponent, InputType, InstrumentScoreComponent, InterceptorObservables, JumbotronComponent, KeyValueComponent, LAYOUT_ASSET_FOLDER, LOADING_ACTIONS_REF, LOGIN_COMPONENT, LOGIN_STORE, LanguageComponent, ListComponent, LogoComponent, MAG_SOCKET_EVENT, MHeroColorDirective, MHeroComponent, MODAL_REF, MODAL_STORE_REF, MOUNT_STATIC_SEGMENT, MOUNT_TOKEN, MRefDirective, MStepComponent, MURL_PARAM, MURL_SEP, ManifestEnrichmentService, MarginDirective, MenuComponent, ModalDirective, ModalRef, ModalStore, MoneyPipe, MultiRangeInputComponent, MultiselectInputComponent, MurlUrlSerializer, NAV_DEFAULT_MURL, NAV_ID_SEP, NAV_MAIN_BUTTONS, NAV_SEGMENT_RE, NAV_STORE_REF, NAV_WC_COMPONENTS, NAV_WIDGET_MAP, NavComponent, NavDetailsComponent, NavHeaderComponent, NavMenuComponent, NavStore, NavTrailComponent, NothingComponent, NotificationElementComponent, NotificationGroupComponent, NotificationPopupComponent, NotificationService, NotificationStore, NotificationType, NotificationWidgetComponent, ONE_ASSET_BASE_URL, OPTIONS_SOURCE, OVERLAY_WIDGETS, OneApp, OptionsSourceDirective, OverlayBodyComponent, OverlayRef, OverlayService, PLATFORM_BUTTON_NAV_IDS, PLATFORM_EXTENSIBLE_NAV_IDS, PLATFORM_NAV_MAP, PLATFORM_ROOT_CHILDREN, PLUGIN_FALLBACK_LANG, PLUGIN_OUTPUT_EVENT, PLUGIN_SCREENS, PaddingDirective, PaginationComponent, PanelComponent, PercentagePipe, PlaygroundComponent, PluginComponent, PluginInputComponent, PluginOutputComponent, PositionDirective, PwaInstallComponent, RECENT_SEARCH_LIMIT, REMOTE_PAGE_RELOAD, ROOT_NAV, RadioGroupComponent, RadioInputComponent, RangeInputComponent, RatingInputComponent, ReactiveElementComponent, RemoteComponent, RemoteLoaderService, ResizeElementComponent, RouteContainer, RowComponent, SEARCH_QUERY, SEARCH_RESULTS_EVENT, SECTION_ACCORDION_GROUP, SECTION_FORM_CONTEXT, SECTION_TABLE_VARIANTS, SHARED_ICONS, SIZE_CONTEXT, SPACING_INWARD, ScoreComponent, ScrollComponent, ScrollService, SearchPanelComponent, SearchStore, SearchUserPanelComponent, SectionAccordionDirective, SectionAccordionGroupDirective, SectionBackComponent, SectionBadgesComponent, SectionButtonGroupComponent, SectionCardComponent, SectionCarouselComponent, SectionComponent, SectionFilterComponent, SectionFilterGroupComponent, SectionFilterMenuComponent, SectionFilterPanelComponent, SectionFilterRangePanelComponent, SectionFooterComponent, SectionFormComponent, SectionFormItemComponent, SectionHeaderComponent, SectionHeroComponent, SectionPaginationComponent, SectionSearchComponent, SectionStepperComponent, SectionTableCellComponent, SectionTableComponent, SectionTableRowComponent, SectionTableSortPipe, SectionTabsComponent, SectionToggleComponent, SectionToggleItemDirective, SelectableCardInputComponent, SelectorDirective, SettingsSearchBarComponent, SettingsSearchService, ShapeComponent, SharedStoreRegistry, SidePanelDirective, Size, SocketStore, SortComponent, StatComponent, StepComponent, StepperComponent, StepsComponent, StorageService, StrokeLinecap, StrokeLinejoin, SummaryComponent, SvgGeneratorComponent, SvgGeneratorService, SvgService, TOTAL_COLUMNS, TRANSLATION_SOURCE, TableComponent, TechnicalMeterComponent, TextInputComponent, TextOutputComponent, TextareaInputComponent, ThemeComponent, ThemeDataService, ThemeService, ThemeStore, TimeAgoPipe, TimelineComponent, ToggleButtonComponent, ToggleInputComponent, ToggleRadioInputComponent, ToolTipDirective, TooltipComponent, TranslatePipe, TranslateService, TreeGridComponent, URL_SEP, USER_STORE_REF, USER_TAB_MAP, UniverseComponent, UserApiService, UserAvatarComponent, UserComponent, UserNavComponent, UserSettingsComponent, UserStore, WC_BUNDLE, WC_NAVIGATE_EVENT, WC_ROUTE_CHANGED_EVENT, WC_SEARCH_GROUPS, WIN_USER_TAB_HOOK, WIN_USER_TAB_KEY, WatermarkComponent, WcRouterStore, WrapperInputComponent, allowedCodes, anchorNavId, applyColorsToElement, applyDocEdit, assetOptions, bootstrapMagApp, bootstrapPwaInstall, browserLocale, buildWcBaseUrl, calculateLuminance, calculateRanks, cellText, checkDoc, checkFilterCondition, childNavId, claimDenial, classListSignal, coerceSize, cornerEdge, cornerSide, createLoadingState, createMap, createPlatformNavMap, createPluginElement, definePluginScreens, definedWcBundleOf, definedWcTierOf, deriveAvatarGradient, deriveContrastColor, deriveOppositeColor, derivePropertyName, docActionKey, docAssetCandidates, docProblemKey, docRemotePath, emailValidation, evaluate, evaluateBool, exposeScreens, exposedScreensOf, fieldBoolean, fieldNumber, fieldString, filterHoldsList, filterHoldsOneBound, filterHoldsOptions, filterHoldsRange, filterList, filterNumber, filterNumberList, filterOne, filterPanelOf, filterPanelWidth, filterRange, filterTreeGridRows, filterValueList, filterValues, flattenTreeGridRows, formatBadgeCount, fullName, generateClipPath, generateTransform, getClassList, getProperty, getScrollParent, getTierFromPreviewPath, getTreeGridRow, getUniqueId, getValue, hasErrorComputed, hexToRgb, hslToRgb, initMagmoniumApp, initialNotificationState, initialState, initials, injectAuthenticate, injectDefaultDenial, injectInstallApp, injectParentSize, injectScrollSticky, isBootRedirect, isButtonName, isCancelledComputed, isExtensiblePlatformNavId, isJson, isLoadingComputed, isLocalhost, isNavInstanceConfig, isNavMenuConfig, isNavRowsConfig, isNavVisibilityConfig, isPlatformNavId, isPlatformPanelNavId, isSize, isTierPreview, isUrlLocalhost, isValidNavId, isValidNavSegment, isWebComponent, linkToId, linkToNav, loadingActions, mInterceptor, manualValidation, matchFieldValidation, matchMount, maxLengthValidation, maxValidation, mergePlatformNav, mergeUnique, mergeUniqueBy, mergeUniqueWith, minAgeValidation, minLengthValidation, minValidation, miniMarkToHtml, mountFor, mountPatternProblem, mountPatternText, mountSegmentOf, mountTokenOf, navIdChain, navIdFor, navIdSegment, navIdToRoutePath, navIdToSegments, navParamOf, navTailMatcher, navToId, navVisibilityGuard, nextSectionTableSort, normalizeAssetOptions, offsetOfLine, parentNavId, parseAddress, parseColor, parseMountPattern, parsePatternNames, patternValidation, patternsValidation, permissionRefusal, pickSupportedLanguage, platformNavWidgets, pluginTag, presetDefaultOption, privateGuard, processImageToSvg, provideAppContext, provideMagAppConfig, provideMagWcConfig, provideMagWcRoutes, provideModalComponents, provideMurlUrlSerializer, provideNavWidgets, provideOverlayWidgets, providePlatformNavWidgets, providePluginRuntime, provideSearch, provideSizeContext, provideUserTabs, publicGuard, readFieldPatterns, recordDefinedWcTier, remoteOutletRoute, renderAddress, renderDocument, requiredValidation, resolveConfigAsset, resolveIconSize, resolvePallet, resolvePatternRules, resolveSize, resolveSpacing, rgbToHex, rgbToHsl, rowHasChildren, samePatterns, sectionTableColumnId, sectionTableColumnWidths, sectionTableFrozenCount, segmentsToNavId, setProperty, setTreeGridChildren, setWcLocalPort, setWcTier, settingsWidgets, shouldShowBadge, sortSectionTableRows, splitNavId, splitOnMatch, stringToColor, tailRouteOf, toAttrBool, toAttrNumber, toCssLength, toHostNavId, toLength, toLocalNavId, toggleTreeGridRow, unfetchedPlatformNav, ungroupedDocActions, urlValidation, wcLocalBaseOf, wcTierOf };
49230
49249
 
49231
49250
  //# sourceMappingURL=magmonium-one.mjs.map