From 92b4ae22b78818871ca7c18c36351505fc96b388 Mon Sep 17 00:00:00 2001 From: Zsolt Tasnadi Date: Thu, 20 Aug 2026 16:02:47 +0200 Subject: [PATCH] =?UTF-8?q?K=C3=A9t=20tengelyen=20kap=20vissza=20=C3=A9let?= =?UTF-8?q?et=20a=20fel=C3=BClet:=20piktogram=20=C3=A9s=20sz=C3=ADn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A facelift után a site helyenként túl csendes lett. Élet kerül vissza, de nem dekorációként: két szabály mentén, amiket egymástól függetlenül lehet olvasni. A piktogram identitást jelöl — miféle dolog ez. Minden motor és platform saját glifát kap (TIC-80, Ebitengine, LÖVE, Godot, Bevy, Phaser, C64), és ugyanazt a jelet viszi a katalógusban, a részletlapon és a build-mátrix motor-oszlopában, egyetlen PlatformIcon komponensből. A Contact IRC- és BBS-csatornája is jelet kapott, mert a másik három brandnek eddig is volt, és a hiány látszott. A szín állapotot jelöl — mi van vele. A négy státuszból három kap hangot: a megjelent az akcens zöldet, a demó egy kéket (új --c-info token, 6,7:1 fehéren és 7,8:1 feketén), a fejlesztés alatti a borostyánt. Az archivált marad semleges, mert az a "már nem történik vele semmi" állapot. A navigáció, a gombok és a szekciócímek továbbra sem kapnak ikont: ott a szöveg megmondja, mi az. Co-Authored-By: Claude Opus 5 (1M context) --- .../frontend/src/components/PlatformBadge.vue | 5 +++- apps/frontend/src/components/PlatformIcon.vue | 26 ++++++++++++++++++ .../__tests__/PlatformBadge.test.ts | 27 +++++++++++++++++++ apps/frontend/src/lib/softwareUtils.ts | 4 +-- .../src/page/builds/BuildsIndexPage.vue | 13 +++++++-- .../frontend/src/page/contact/ContactPage.vue | 7 ++--- apps/frontend/src/styles/global.css | 10 ++++++- apps/frontend/src/styles/retro.css | 10 +++++++ apps/frontend/src/styles/tokens.css | 2 ++ apps/frontend/tailwind.config.cjs | 1 + 10 files changed, 96 insertions(+), 9 deletions(-) create mode 100644 apps/frontend/src/components/PlatformIcon.vue create mode 100644 apps/frontend/src/components/__tests__/PlatformBadge.test.ts diff --git a/apps/frontend/src/components/PlatformBadge.vue b/apps/frontend/src/components/PlatformBadge.vue index 44d146e..c0a3f98 100644 --- a/apps/frontend/src/components/PlatformBadge.vue +++ b/apps/frontend/src/components/PlatformBadge.vue @@ -1,8 +1,11 @@ diff --git a/apps/frontend/src/components/PlatformIcon.vue b/apps/frontend/src/components/PlatformIcon.vue new file mode 100644 index 0000000..23a1aed --- /dev/null +++ b/apps/frontend/src/components/PlatformIcon.vue @@ -0,0 +1,26 @@ + + + diff --git a/apps/frontend/src/components/__tests__/PlatformBadge.test.ts b/apps/frontend/src/components/__tests__/PlatformBadge.test.ts new file mode 100644 index 0000000..0c0d165 --- /dev/null +++ b/apps/frontend/src/components/__tests__/PlatformBadge.test.ts @@ -0,0 +1,27 @@ +import { describe, it, expect } from 'vitest' +import { mount } from '@vue/test-utils' +import PlatformBadge from '../PlatformBadge.vue' +import { statusBadgeClass } from '../../lib/softwareUtils' + +describe('PlatformBadge', () => { + it('shows the platform name next to its own glyph', () => { + const wrapper = mount(PlatformBadge, { props: { platform: 'TIC-80' } }) + expect(wrapper.text()).toContain('TIC-80') + expect(wrapper.find('svg').exists()).toBe(true) + }) + + it('falls back to a glyph for a platform it has never seen', () => { + const wrapper = mount(PlatformBadge, { props: { platform: 'Amiga' } }) + expect(wrapper.find('svg').exists()).toBe(true) + }) +}) + +describe('statusBadgeClass', () => { + it('gives every live status its own hue and leaves the archived ones neutral', () => { + expect(statusBadgeClass('released')).toContain('status-released') + expect(statusBadgeClass('demo')).toContain('status-demo') + expect(statusBadgeClass('development')).toContain('status-development') + expect(statusBadgeClass('archived')).toBe('status-badge') + expect(statusBadgeClass('whatever')).toBe('status-badge') + }) +}) diff --git a/apps/frontend/src/lib/softwareUtils.ts b/apps/frontend/src/lib/softwareUtils.ts index 2a21269..2dcc65e 100644 --- a/apps/frontend/src/lib/softwareUtils.ts +++ b/apps/frontend/src/lib/softwareUtils.ts @@ -32,8 +32,8 @@ export function getLatestStable(releases: Release[]): Release | undefined { const STATUS_BADGE_CLASS: Record = { released: 'status-badge status-released', - demo: 'status-badge', - development: 'status-badge', + demo: 'status-badge status-demo', + development: 'status-badge status-development', archived: 'status-badge', } diff --git a/apps/frontend/src/page/builds/BuildsIndexPage.vue b/apps/frontend/src/page/builds/BuildsIndexPage.vue index c651e78..1f52dd1 100644 --- a/apps/frontend/src/page/builds/BuildsIndexPage.vue +++ b/apps/frontend/src/page/builds/BuildsIndexPage.vue @@ -40,7 +40,9 @@ - {{ info.label }} + + {{ info.label }} +