@mundogamernetwork/shared-ui 1.16.6 → 1.16.7

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.
@@ -14,6 +14,7 @@ const { performLogout } = useLogout();
14
14
 
15
15
  const runtimeConfig = useRuntimeConfig();
16
16
  const accountsBaseUrl = runtimeConfig.public.mgSharedUi?.accountsBaseUrl || runtimeConfig.public.accountsBaseUrl;
17
+ const supportUrl = `${accountsBaseUrl}/account/support/new`;
17
18
  const features = runtimeConfig.public.mgSharedUi?.features ?? {};
18
19
  const pricingUrl = runtimeConfig.public.mgSharedUi?.pricingUrl || "";
19
20
  const { locale } = useI18n();
@@ -58,6 +59,20 @@ const handleToggleOnline = () => {
58
59
  </script>
59
60
 
60
61
  <template>
62
+ <!--
63
+ The 'signed-in' class below is a reactive :class binding on THIS SAME
64
+ element — it hit the identical never-repatched-after-hydration-mismatch
65
+ symptom the inner v-if/v-else branches did (see the comment above
66
+ MgLoginRegisterMenu/section further down), and unlike that inner swap,
67
+ there's no sibling-vnode :key trick available to fix an ancestor's own
68
+ class binding on itself (verified: a :key on this element does NOT
69
+ force it to re-evaluate — key only affects sibling-vnode comparison,
70
+ not a component's own reactive re-render). The width rule that used to
71
+ key off '.signed-in' now uses :has(.signed-in-menu) instead — real DOM
72
+ structure, correct regardless of whether this class ever catches up.
73
+ The class stays here for anything else that legitimately keys off it
74
+ (e.g. a host's own CSS); just don't rely on it for layout in this file.
75
+ -->
61
76
  <div ref="refDiv" :class="{ 'ui-config-user': true, 'signed-in': signedIn }">
62
77
  <div ref="wrapper" class="ui-config-user__content">
63
78
  <!--
@@ -139,6 +154,12 @@ const handleToggleOnline = () => {
139
154
  </a>
140
155
  </div>
141
156
 
157
+ <div class="row info-row">
158
+ <a :href="supportUrl" target="_blank" class="support-link">
159
+ {{ $t("account_menu.buttons.support", "Support") }}
160
+ </a>
161
+ </div>
162
+
142
163
  <div v-if="features.statusOnline" class="row info-row my-3">
143
164
  <div class="status-toggle">
144
165
  <span>{{ $t("account_menu.buttons.show_online") }}</span>
@@ -189,7 +210,16 @@ const handleToggleOnline = () => {
189
210
  overflow-y: auto;
190
211
  transition: all ease 0.5s;
191
212
 
192
- &:not(.signed-in) {
213
+ // Derived from the actual rendered content (:has), not the .signed-in
214
+ // class this element also carries. That class is a reactive :class
215
+ // binding on THIS SAME element (see the guest→signed-in transition
216
+ // comment above the template's MgLoginRegisterMenu/section) — it hit
217
+ // the identical never-repatched symptom the inner branch did, and
218
+ // unlike the inner v-if/v-else swap, there's no sibling-vnode :key
219
+ // trick available for an ancestor's own class binding on itself.
220
+ // :has(.signed-in-menu) reads real DOM structure instead, so it's
221
+ // correct regardless of whether that class binding ever catches up.
222
+ &:not(:has(.signed-in-menu)) {
193
223
  width: 340px;
194
224
  }
195
225
 
@@ -310,6 +340,26 @@ const handleToggleOnline = () => {
310
340
  }
311
341
  }
312
342
 
343
+ .support-link {
344
+ display: block;
345
+ width: 100%;
346
+ text-align: center;
347
+ font-size: 0.75rem;
348
+ font-weight: 400;
349
+ // Deliberately quieter than .plans-pricing-link — this is a low-key
350
+ // secondary affordance, not a conversion CTA, so it stays on a muted
351
+ // text token instead of each host's accent color.
352
+ color: var(--secondary-info-fg, var(--inactive));
353
+ text-decoration: none;
354
+ padding: 4px 0;
355
+ margin-top: 8px;
356
+
357
+ &:hover {
358
+ text-decoration: underline;
359
+ color: var(--active);
360
+ }
361
+ }
362
+
313
363
  .status-toggle {
314
364
  display: flex;
315
365
  justify-content: space-between;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mundogamernetwork/shared-ui",
3
- "version": "1.16.6",
3
+ "version": "1.16.7",
4
4
  "description": "Mundo Gamer Network - Shared UI Layer (Nuxt 3)",
5
5
  "type": "module",
6
6
  "main": "./nuxt.config.ts",