From a64234fa74bdb6e0e0ca736e23858d176760b965 Mon Sep 17 00:00:00 2001 From: Zsolt Tasnadi Date: Tue, 4 Aug 2026 08:44:00 +0200 Subject: [PATCH] matrix header tweaks --- apps/frontend/src/i18n/locales/en.ts | 3 +- apps/frontend/src/i18n/locales/hu.ts | 3 +- .../src/page/builds/BuildsIndexPage.vue | 101 +++++++++++++----- 3 files changed, 81 insertions(+), 26 deletions(-) diff --git a/apps/frontend/src/i18n/locales/en.ts b/apps/frontend/src/i18n/locales/en.ts index 9ef52c5..e5c2cfd 100644 --- a/apps/frontend/src/i18n/locales/en.ts +++ b/apps/frontend/src/i18n/locales/en.ts @@ -150,8 +150,9 @@ export default { assetDownload: 'Download', assetOpen: 'Open', assetKind: { - cartridge: 'Game file', + cartridge: 'Cartridge', source: 'Source code', + html: 'Web', docs: 'Documentation', win_x86: 'Windows (32-bit)', win_x64: 'Windows (64-bit)', diff --git a/apps/frontend/src/i18n/locales/hu.ts b/apps/frontend/src/i18n/locales/hu.ts index bf2ee25..1eebc51 100644 --- a/apps/frontend/src/i18n/locales/hu.ts +++ b/apps/frontend/src/i18n/locales/hu.ts @@ -150,8 +150,9 @@ export default { assetDownload: 'Letöltés', assetOpen: 'Megnyitás', assetKind: { - cartridge: 'Játékfájl', + cartridge: 'Cartridge', source: 'Forráskód', + html: 'Web', docs: 'Dokumentáció', win_x86: 'Windows (32 bit)', win_x64: 'Windows (64 bit)', diff --git a/apps/frontend/src/page/builds/BuildsIndexPage.vue b/apps/frontend/src/page/builds/BuildsIndexPage.vue index a638984..54baf98 100644 --- a/apps/frontend/src/page/builds/BuildsIndexPage.vue +++ b/apps/frontend/src/page/builds/BuildsIndexPage.vue @@ -14,21 +14,32 @@
+ - - + + + + + - +
Engine - - {{ t('catalogShow.assetKind.' + kind) }} + Engine + + {{ group.label }}
{{ info.label }} - - -
@@ -54,15 +65,54 @@ const { t } = useI18n() const store = useBuildsStore() const { data, error } = storeToRefs(store) -const kindIcon = (kind: string) => - kind.startsWith('win_') ? 'fa-brands fa-windows' - : kind.startsWith('linux_') ? 'fa-brands fa-linux' - : kind.startsWith('mac_') ? 'fa-brands fa-apple' - : kind === 'cartridge' ? 'fa-solid fa-gamepad' - : kind === 'source' ? 'fa-solid fa-code' - : kind === 'docs' ? 'fa-solid fa-book' - : kind === 'html' ? 'fa-solid fa-globe' - : 'fa-solid fa-cube' +const columnGroups = [ + { + label: 'Windows', + icon: 'fa-brands fa-windows', + kinds: [ + { kind: 'win_x64', sub: '64 bit' }, + { kind: 'win_x86', sub: '32 bit' }, + ], + }, + { + label: 'Linux', + icon: 'fa-brands fa-linux', + kinds: [ + { kind: 'linux_x64', sub: '64 bit' }, + ], + }, + { + label: 'Mac', + icon: 'fa-brands fa-apple', + kinds: [ + { kind: 'mac_x64', sub: 'Intel' }, + { kind: 'mac_arm64', sub: 'ARM' }, + { kind: 'mac_universal', sub: 'Universal' }, + ], + }, + { + label: 'Web', + icon: 'fa-solid fa-globe', + kinds: [ + { kind: 'html', sub: 'HTML5' }, + ], + }, + { + label: 'Cartridge', + icon: 'fa-solid fa-gamepad', + kinds: [ + { kind: 'cartridge', sub: 'Native' }, + ], + }, + { + label: 'Others', + icon: 'fa-solid fa-folder-open', + kinds: [ + { kind: 'source', sub: 'Source' }, + { kind: 'docs', sub: 'Docs' }, + ], + }, +] onMounted(() => store.fetch()) @@ -81,16 +131,19 @@ onMounted(() => store.fetch()) @apply w-full text-sm; } .builds-th-engine { - @apply px-6 py-4 text-left text-xs font-bold text-gray-400 uppercase tracking-widest bg-gray-50; + @apply px-6 py-4 text-left text-xs font-bold text-gray-400 uppercase tracking-widest bg-gray-50 border-b border-gray-200; } -.builds-th-kind { - @apply px-3 py-4 text-center bg-gray-50; +.builds-th-group { + @apply px-2 py-3 text-center bg-gray-50 border-b border-gray-200 border-l border-gray-200; } -.builds-kind-icon { - @apply block text-gray-500 text-base mb-1; +.builds-group-icon { + @apply text-gray-500 text-base; } -.builds-kind-label { - @apply block text-[10px] font-bold text-gray-400 uppercase tracking-wider leading-tight; +.builds-group-label { + @apply ml-1.5 text-xs font-bold text-gray-500 uppercase tracking-wider; +} +.builds-th-sub { + @apply px-3 py-2 text-center text-[10px] font-bold text-gray-400 uppercase tracking-wider bg-gray-50/50; } .builds-row { @apply border-t border-gray-100 hover:bg-gray-50/50 transition-colors;