@mundogamernetwork/shared-ui 1.16.24 → 1.16.25

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.
package/locales/de.json CHANGED
@@ -389,6 +389,7 @@
389
389
  "already_requested": "Sie haben bereits eine Anfrage für diese Kampagne gestellt.",
390
390
  "sold_out": "Alle Keys für diese Kampagne wurden bereits eingelöst.",
391
391
  "options_unavailable": "Diese Kampagne hat noch Keys, aber es ist noch keine Plattform oder Region dafür eingerichtet, daher können keine Anfragen gesendet werden. Das Studio muss die Einrichtung abschließen — auf deiner Seite ist alles in Ordnung.",
392
+ "countries_only": "Nur in {countries}",
392
393
  "keys_left": "{n} Key übrig | {n} Keys übrig",
393
394
  "keys_low_stock": "Letzter Key | Letzte {n}",
394
395
  "back_to_campaign": "Zur Kampagne zurückkehren",
package/locales/en.json CHANGED
@@ -389,6 +389,7 @@
389
389
  "already_requested": "You have already submitted a request for this campaign.",
390
390
  "sold_out": "All keys for this campaign have already been claimed.",
391
391
  "options_unavailable": "This campaign still has keys, but no platform or region is set up for them yet, so requests can't be sent. The studio needs to finish setting it up — nothing on your side is wrong.",
392
+ "countries_only": "Only in {countries}",
392
393
  "keys_left": "{n} key left | {n} keys left",
393
394
  "keys_low_stock": "Last key | Last {n}",
394
395
  "back_to_campaign": "Back to campaign",
package/locales/es.json CHANGED
@@ -389,6 +389,7 @@
389
389
  "already_requested": "Ya has enviado una solicitud para esta campaña.",
390
390
  "sold_out": "Todas las claves de esta campaña ya fueron reclamadas.",
391
391
  "options_unavailable": "Esta campaña todavía tiene claves, pero aún no hay ninguna plataforma o región configurada para ellas, así que no se pueden enviar solicitudes. El estudio debe terminar la configuración — no hay nada mal de tu lado.",
392
+ "countries_only": "Solo en {countries}",
392
393
  "keys_left": "{n} clave restante | {n} claves restantes",
393
394
  "keys_low_stock": "Última clave | Últimas {n}",
394
395
  "back_to_campaign": "Volver a la campaña",
@@ -389,6 +389,7 @@
389
389
  "already_requested": "Você já enviou uma solicitação para esta campanha.",
390
390
  "sold_out": "Todas as chaves desta campanha já foram resgatadas.",
391
391
  "options_unavailable": "Esta campanha ainda tem chaves, mas nenhuma plataforma ou região foi configurada para elas, então não dá para enviar pedidos. O estúdio precisa concluir a configuração — não há nada errado do seu lado.",
392
+ "countries_only": "Somente em {countries}",
392
393
  "keys_left": "{n} chave restante | {n} chaves restantes",
393
394
  "keys_low_stock": "Última chave | Últimas {n}",
394
395
  "back_to_campaign": "Voltar para a campanha",
package/locales/ro.json CHANGED
@@ -389,6 +389,7 @@
389
389
  "already_requested": "Ați trimis deja o cerere pentru această campanie.",
390
390
  "sold_out": "Toate cheile pentru această campanie au fost deja revendicate.",
391
391
  "options_unavailable": "Această campanie mai are chei, dar încă nu este configurată nicio platformă sau regiune pentru ele, așa că nu se pot trimite cereri. Studioul trebuie să finalizeze configurarea — nu este nimic greșit din partea ta.",
392
+ "countries_only": "Doar în {countries}",
392
393
  "keys_left": "{n} cheie rămasă | {n} chei rămase",
393
394
  "keys_low_stock": "Ultima cheie | Ultimele {n}",
394
395
  "back_to_campaign": "Înapoi la campanie",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mundogamernetwork/shared-ui",
3
- "version": "1.16.24",
3
+ "version": "1.16.25",
4
4
  "description": "Mundo Gamer Network - Shared UI Layer (Nuxt 3)",
5
5
  "type": "module",
6
6
  "main": "./nuxt.config.ts",
@@ -230,13 +230,22 @@
230
230
  {{ card.type }}
231
231
  </span>
232
232
  </div>
233
- <div v-if="card.platforms && card.platforms.length" class="card-platforms">
233
+ <div v-if="(card.platforms && card.platforms.length) || (card.stores && card.stores.length)" class="card-platforms">
234
234
  <span v-for="p in card.platforms.slice(0, 4)" :key="p" class="card-platform-tag">
235
235
  {{ platformAbbr(p) }}
236
236
  </span>
237
237
  <span v-if="card.platforms.length > 4" class="card-platform-tag card-platform-more">
238
238
  +{{ card.platforms.length - 4 }}
239
239
  </span>
240
+ <span v-for="st in card.stores.slice(0, 3)" :key="st" class="card-platform-tag card-store-tag">
241
+ {{ st }}
242
+ </span>
243
+ </div>
244
+ <!-- Só aparece quando o estúdio restringiu de verdade: a
245
+ lista vazia significa aberta a todo mundo, e mostrar
246
+ isso em toda campanha viraria ruído. -->
247
+ <div v-if="card.countries && card.countries.length" class="card-countries">
248
+ {{ $t("keys.campaigns.countries_only", { countries: card.countries.slice(0, 3).join(", ") }) }}
240
249
  </div>
241
250
 
242
251
  <div class="buttons">
@@ -695,6 +704,13 @@ async function loadCampaigns(page = 1) {
695
704
  genres: (item.game?.genres || []).map((g: any) => g.name).filter(Boolean).slice(0, 2),
696
705
  studioName: item.company?.name || null,
697
706
  regions: (item.regions || []).map((r: any) => r.name).filter(Boolean),
707
+ // Onde o código é resgatado. Plataforma diz onde o jogo roda;
708
+ // "PC (Microsoft Windows)" não diz se a chave entra no Steam
709
+ // ou na Epic, que é a primeira coisa de que quem pede precisa.
710
+ stores: (item.stores || []).map((st: any) => st.name).filter(Boolean),
711
+ // Vazio = aberta a todo mundo, que é o caso da maioria. Só
712
+ // vira informação quando o estúdio restringiu de verdade.
713
+ countries: (item.countries || []).map((c: any) => c.name).filter(Boolean),
698
714
  userRequestSlug: null,
699
715
  }
700
716
  })
@@ -1608,6 +1624,20 @@ onUnmounted(() => {
1608
1624
  border-style: dashed;
1609
1625
  opacity: 0.8;
1610
1626
  }
1627
+ // A loja é a informação mais acionável das duas: o
1628
+ // destinatário precisa dela pra saber onde colar o
1629
+ // código. Preenchida em vez de contornada pra
1630
+ // separar visualmente da plataforma ao lado.
1631
+ .card-store-tag {
1632
+ background: var(--secondary-info-fg);
1633
+ color: var(--primary-bg);
1634
+ text-transform: none;
1635
+ }
1636
+ }
1637
+ .card-countries {
1638
+ font-size: 11px;
1639
+ color: var(--secondary-info-fg);
1640
+ margin-top: 4px;
1611
1641
  }
1612
1642
 
1613
1643
  .buttons {