@mundogamernetwork/shared-ui 1.1.89 → 1.1.91

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.
@@ -624,13 +624,80 @@ body:has(.kit-press) {
624
624
  line-height: 1.6;
625
625
  }
626
626
 
627
+ /* Discovery carousel */
628
+ .kit-more {
629
+ padding: 48px 24px 0;
630
+ max-width: 1280px;
631
+ margin: 0 auto;
632
+ }
633
+ .kit-more__title {
634
+ font-size: 0.75rem;
635
+ font-weight: 700;
636
+ letter-spacing: 0.12em;
637
+ text-transform: uppercase;
638
+ color: var(--kit-muted, #8b92a0);
639
+ margin: 0 0 20px;
640
+ }
641
+ .kit-more__track {
642
+ display: flex;
643
+ gap: 16px;
644
+ overflow-x: auto;
645
+ scroll-snap-type: x mandatory;
646
+ -webkit-overflow-scrolling: touch;
647
+ padding-bottom: 8px;
648
+ scrollbar-width: none;
649
+ }
650
+ .kit-more__track::-webkit-scrollbar { display: none; }
651
+ .kit-more__card {
652
+ flex: 0 0 140px;
653
+ scroll-snap-align: start;
654
+ text-decoration: none;
655
+ color: inherit;
656
+ display: flex;
657
+ flex-direction: column;
658
+ gap: 8px;
659
+ }
660
+ .kit-more__card:hover .kit-more__cover { opacity: 0.8; }
661
+ .kit-more__cover {
662
+ width: 140px;
663
+ height: 186px;
664
+ background: var(--kit-card, #1a1d27) center/cover no-repeat;
665
+ transition: opacity 0.15s;
666
+ display: flex;
667
+ align-items: center;
668
+ justify-content: center;
669
+ }
670
+ .kit-more__cover-fallback {
671
+ font-size: 3rem;
672
+ font-weight: 800;
673
+ color: var(--kit-muted, #8b92a0);
674
+ opacity: 0.4;
675
+ }
676
+ .kit-more__name {
677
+ font-size: 0.8rem;
678
+ font-weight: 600;
679
+ color: var(--kit-text, #e8eaf0);
680
+ white-space: nowrap;
681
+ overflow: hidden;
682
+ text-overflow: ellipsis;
683
+ max-width: 140px;
684
+ }
685
+ .kit-more__dev {
686
+ font-size: 0.7rem;
687
+ color: var(--kit-muted, #8b92a0);
688
+ white-space: nowrap;
689
+ overflow: hidden;
690
+ text-overflow: ellipsis;
691
+ max-width: 140px;
692
+ }
693
+
627
694
  /* Footer */
628
695
  .kit-footer {
629
696
  display: flex;
630
697
  flex-direction: column;
631
698
  align-items: center;
632
699
  gap: 12px;
633
- padding: 40px 24px;
700
+ padding: 64px 24px;
634
701
  margin-top: 0;
635
702
  border-top: 1px solid var(--kit-line, #252a34);
636
703
  text-align: center;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mundogamernetwork/shared-ui",
3
- "version": "1.1.89",
3
+ "version": "1.1.91",
4
4
  "description": "Mundo Gamer Network - Shared UI Layer (Nuxt 3)",
5
5
  "type": "module",
6
6
  "main": "./nuxt.config.ts",
@@ -34,6 +34,15 @@ const { data: kitData, error: fetchError, pending } = await useAsyncData(
34
34
  { lazy: false },
35
35
  );
36
36
 
37
+ // Other published press kits for discovery carousel (fetched lazily, non-blocking)
38
+ const { data: moreKitsData } = await useAsyncData(
39
+ `press-kits-more`,
40
+ () => $fetch<any>(`${apiBase}/public/press-kits`, {
41
+ params: { per_page: 12, lang },
42
+ }),
43
+ { lazy: true, server: false },
44
+ );
45
+
37
46
  const kit = computed(() => kitData.value?.data || kitData.value || null);
38
47
  const loading = pending;
39
48
  const error = computed(() => !!fetchError.value || (!pending.value && !kit.value));
@@ -133,10 +142,19 @@ const facts = computed(() => {
133
142
  if (k.steam_url) out.push({ label: 'Steam', value: 'Steam ↗', href: k.steam_url });
134
143
  if (k.epic_url) out.push({ label: 'Epic Games', value: 'Epic Games ↗', href: k.epic_url });
135
144
  if (k.itch_url) out.push({ label: 'itch.io', value: 'itch.io ↗', href: k.itch_url });
145
+ if (k.game?.platforms?.length) out.push({ label: 'kit.press.platforms', value: k.game.platforms.join(', ') });
146
+ if (k.game?.genres?.length) out.push({ label: 'kit.press.genres', value: k.game.genres.join(', ') });
147
+ if (k.game?.engines?.length) out.push({ label: 'kit.press.engine', value: k.game.engines.join(', ') });
136
148
  if (k.press_contact_email) out.push({ label: 'kit.press.contact', value: k.press_contact_email, href: `mailto:${k.press_contact_email}` });
137
149
  return out;
138
150
  });
139
151
 
152
+ // Carousel: other published kits excluding the current one
153
+ const moreKits = computed(() => {
154
+ const items: any[] = moreKitsData.value?.data || [];
155
+ return items.filter((k: any) => k.slug !== slug).slice(0, 10);
156
+ });
157
+
140
158
  function track(type: 'click' | 'download' | 'contact') {
141
159
  trackPressKitEvent(slug, { event_type: type, referrer: document.referrer || undefined }).catch(() => {});
142
160
  }
@@ -365,6 +383,28 @@ useSeoMeta({
365
383
  </div>
366
384
  </div>
367
385
 
386
+ <!-- Discovery carousel — other published press kits -->
387
+ <section v-if="moreKits.length" class="kit-more">
388
+ <h2 class="kit-more__title">{{ $t('kit.press.more_games') }}</h2>
389
+ <div class="kit-more__track">
390
+ <a
391
+ v-for="k in moreKits"
392
+ :key="k.slug"
393
+ :href="`/presskit/game/${k.slug}`"
394
+ class="kit-more__card"
395
+ >
396
+ <div
397
+ class="kit-more__cover"
398
+ :style="k.cover_image_url ? { backgroundImage: `url(${k.cover_image_url})` } : {}"
399
+ >
400
+ <div v-if="!k.cover_image_url" class="kit-more__cover-fallback">{{ k.name?.charAt(0) }}</div>
401
+ </div>
402
+ <div class="kit-more__name">{{ k.name }}</div>
403
+ <div v-if="k.developer" class="kit-more__dev">{{ k.developer }}</div>
404
+ </a>
405
+ </div>
406
+ </section>
407
+
368
408
  <footer class="kit-footer">
369
409
  <p class="kit-footer__text">{{ $t('kit.press.made_with') }} <strong>Mundo Gamer Agency</strong></p>
370
410
  <a :href="kit.create_kit_url || `${agencyBase}/presskit`" target="_blank" rel="noopener" class="kit-footer__cta">{{ $t('kit.press.create_yours') }}</a>