Skip to content
/ web Public
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
70f56c5
feat: add branding settings page with live theme customization
Flegma Feb 16, 2026
4626ec2
feat: add remaining shadcn-vue CSS variables to branding panel
Flegma Feb 16, 2026
f4e9ba7
feat: add export/import theme buttons to branding page
Flegma Feb 16, 2026
8217fc2
fix: replace primary colors with neutral foreground on form controls …
Flegma Feb 16, 2026
cace33d
revert: restore primary colors on checkbox, switch, and radio button
Flegma Feb 16, 2026
cf991cd
fix: sidebar active state not highlighting on settings sub-pages
Flegma Feb 16, 2026
cad3128
fix: remove hover effect from sidebar logo
Flegma Feb 16, 2026
052da6e
fix: correct primary color misuse and invalid hover class
Flegma Feb 16, 2026
1e3476f
feat: add show separators toggle to branding settings
Flegma Feb 16, 2026
7febc13
fix: remove borders from color pickers, logo and favicon previews in …
Flegma Feb 16, 2026
d3d8b9b
feat: add login page branding and fix theme export/import
Flegma Feb 16, 2026
40216dd
feat: restrict branding page to admin users
Flegma Feb 16, 2026
e0b7f36
feat: add configurable Report an Issue toggle and GitHub URL to brand…
Flegma Feb 16, 2026
53c7e1f
fix: remove border from login card
Flegma Feb 16, 2026
703bfe1
feat: replace accent hover with AnimatedCard gradient on toggles and …
Flegma Feb 16, 2026
9ec5128
feat: replace plain border cards with AnimatedCard gradient across al…
Flegma Feb 17, 2026
a2a08b5
feat: group related settings into single AnimatedCards across app set…
Flegma Feb 17, 2026
6c73903
feat: auto-save on theme import and reset to defaults
Flegma Feb 17, 2026
a8cc6dd
fix: align app settings sub-nav hover/active colors with main sidebar
Flegma Feb 17, 2026
1c61b4d
fix: match sub-nav hover/active/press states with main sidebar exactly
Flegma Feb 17, 2026
fd167aa
feat: use AnimatedCard gradient for map pool section in match/tournam…
Flegma Feb 17, 2026
9ba4a3c
feat: group related advanced settings into fewer cards in match/tourn…
Flegma Feb 17, 2026
d89bd2e
feat: wrap team creation form fields in AnimatedCard gradient
Flegma Feb 17, 2026
81157b2
feat: add sidebar-accent hover styling to breadcrumb links
Flegma Feb 17, 2026
a26c4d9
fix: conditionally show separator lines in tournament detail based on…
Flegma Feb 17, 2026
52e7bdb
feat: add small Steam icon link next to steam ID on player profile
Flegma Feb 17, 2026
a5a4006
feat: improve game server nodes page layout with AnimatedCards
Flegma Feb 17, 2026
c140d5d
feat: use AnimatedCard and PageTransition on player profile page
Flegma Feb 17, 2026
1e9030e
feat: match tabs use same hover/active styling as sidebar navigation
Flegma Feb 17, 2026
f38ae62
feat: add dev fixture data system with admin UI for loading sample pl…
Flegma Feb 17, 2026
f9b2ffb
fix: add missing AlertDialog imports and remove nonexistent admin mid…
Flegma Feb 17, 2026
d766672
fix: update fixtures dialog with correct counts and destructive styling
Flegma Feb 18, 2026
0ee4601
Merge pull request #1 from Flegma/feature/fixtures
Flegma Feb 18, 2026
f49f23e
merge: resolve conflict keeping both branding and fixtures nav links
Flegma Feb 18, 2026
3bcefeb
Merge pull request #2 from Flegma/feature/custom-branding
Flegma Feb 18, 2026
965f2af
fix: make match stats span full width below sidebar
Flegma Feb 18, 2026
acc230a
fix: improve match page styling consistency
Flegma Feb 18, 2026
180c0af
fix: change clutches tab to 2-column layout
Flegma Feb 18, 2026
13150f0
fix: public navbar branding, login footer, and Typesense connection
Flegma Feb 18, 2026
405ff85
fix: include registration open tournaments in upcoming tab
Flegma Feb 18, 2026
86509a7
feat: UI consistency for badges, settings, and stage forms
Flegma Feb 18, 2026
ff795de
fix: unify tab and nav active colors with sidebar-accent
Flegma Feb 18, 2026
fd502e6
feat: show player roster on teams page, revert tab colors
Flegma Feb 18, 2026
ba3e20c
fix: remove hover effect from sidebar player card
Flegma Feb 18, 2026
448c646
feat: show tournament context in breadcrumbs and sidebar for tourname…
Flegma Feb 18, 2026
004a423
Revert "feat: show tournament context in breadcrumbs and sidebar for …
Flegma Feb 18, 2026
7be3a4a
feat: show tournament name instead of UUID in breadcrumbs
Flegma Feb 18, 2026
1a3c97c
fix: prevent players nav item from highlighting on /me route
Flegma Feb 18, 2026
611ac41
remove "Report an Issue" section from admin branding page
Flegma Feb 18, 2026
ce08d05
feat: tournament-aware breadcrumbs and sidebar for match pages
Flegma Feb 18, 2026
947e4a4
feat: add Refresh All Players button to admin players settings page
Flegma Feb 18, 2026
34bdc13
feat: add leaderboard page with category tabs, filters, and pagination
Flegma Feb 19, 2026
664b20f
refactor: clean up teams page layout and split tournament results int…
Flegma Feb 19, 2026
41eb7d7
refactor: replace teams table with responsive grid card layout
Flegma Feb 19, 2026
1347fdf
feat: show player ELO in teams grid cards
Flegma Feb 19, 2026
d6e4276
refactor: consolidate leaderboard into 4 tabs with sortable columns
Flegma Feb 19, 2026
46f1f66
feat: add win streak column to ELO leaderboard tab
Flegma Feb 19, 2026
1b7a4d7
feat: add decider best-of UI to stage form
Flegma Feb 19, 2026
2a7d231
feat: add dev fixture data system with admin UI for loading sample pl…
Flegma Feb 17, 2026
fa3d32e
fix: add missing AlertDialog imports and remove nonexistent admin mid…
Flegma Feb 17, 2026
12af1d2
fix: update fixtures dialog with correct counts and destructive styling
Flegma Feb 18, 2026
a7d5aa2
Merge branch 'feature/ui-overhaul'
Flegma Feb 19, 2026
6aed508
bug: decider matches (#211)
Flegma Feb 19, 2026
0d94843
chore: move decider BO series toggle above advanced settings (#210)
Flegma Feb 19, 2026
e53e4ea
fix: create new match_options per bracket instead of mutating shared …
Flegma Feb 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions app.vue
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ import { polyfillCountryFlagEmojis } from "country-flag-emoji-polyfill";
import MatchmakingConfirm from "~/components/matchmaking/MatchmakingConfirm.vue";
import PlayerNameRegistration from "~/components/PlayerNameRegistration.vue";
import StreamGlobal from "~/components/StreamGlobal.vue";
import { useBranding } from "~/composables/useBranding";

useBranding();
</script>

<template>
Expand Down
7 changes: 5 additions & 2 deletions assets/css/tailwind.css
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,12 @@

--destructive: 0 62.8% 30.6%;
--destructive-foreground: 0 0% 98%;


--warning: 36 100% 30%;
--warning-foreground: 0 0% 100%;

--ring: 240 4.9% 83.9%;

--sidebar-background: 240 5.9% 10%;

--sidebar-foreground: 240 4.8% 95.9%;
Expand Down
55 changes: 51 additions & 4 deletions components/BreadCrumbs.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink as-child>
<NuxtLink :to="{ name: 'play' }"> dashboard </NuxtLink>
<NuxtLink :to="{ name: 'play' }" class="breadcrumb-link"> dashboard </NuxtLink>
</BreadcrumbLink>
</BreadcrumbItem>

Expand All @@ -14,7 +14,7 @@

<BreadcrumbItem>
<BreadcrumbLink as-child>
<NuxtLink :to="crumb.to">
<NuxtLink :to="crumb.to" class="breadcrumb-link">
{{ crumb.text.replace("-", " ") }}
</NuxtLink>
</BreadcrumbLink>
Expand All @@ -26,6 +26,8 @@

<script lang="ts">
import { e_player_roles_enum } from "~/generated/zeus";
import { useTournamentContext } from "~/composables/useTournamentContext";
import { useMatchContext } from "~/composables/useMatchContext";

export default {
computed: {
Expand All @@ -37,12 +39,36 @@ export default {
return segment.trim() !== "";
});

const tc = useTournamentContext();
const mc = useMatchContext();
const breadcrumbs: Array<{
text: string;
to: string;
}> = [];

// Tournament match: Dashboard > Tournaments > {name} > {match display}
if (
segments[0] === "matches" &&
segments[1] &&
mc.value?.tournament
) {
breadcrumbs.push({
text: "tournaments",
to: "/tournaments",
});
breadcrumbs.push({
text: mc.value.tournament.name,
to: `/tournaments/${mc.value.tournament.id}`,
});
breadcrumbs.push({
text: mc.value.displayText,
to: `/matches/${segments[1]}`,
});
return breadcrumbs;
}

let path = "";
segments.forEach((segment: string) => {
segments.forEach((segment: string, index: number) => {
path += `/${segment}`;

if (path === `/players/${this.me?.steam_id}`) {
Expand All @@ -59,8 +85,25 @@ export default {
path = path.replace("/manage-matches", "/matches");
}

// Replace tournament UUID with name when available
let displayText =
segments[0] === "tournaments" &&
index === 1 &&
tc.value?.id === segment
? tc.value.name
: segment;

// Replace match UUID with human-readable display text
if (
segments[0] === "matches" &&
index === 1 &&
mc.value?.id === segment
) {
displayText = mc.value.displayText;
}

breadcrumbs.push({
text: segment,
text: displayText,
to: path,
});
});
Expand All @@ -75,4 +118,8 @@ export default {
.router-link-exact-active {
background-color: transparent;
}

:deep(.breadcrumb-link) {
@apply rounded-md px-2 py-1 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground transition-colors;
}
</style>
44 changes: 20 additions & 24 deletions components/CustomMatch.vue
Original file line number Diff line number Diff line change
@@ -1,34 +1,30 @@
<script setup lang="ts">
import { Swords } from "lucide-vue-next";
import { useApplicationSettingsStore } from "~/stores/ApplicationSettings";
import AnimatedCard from "~/components/ui/animated-card/AnimatedCard.vue";
</script>

<template>
<NuxtLink
:to="{ name: 'matches-create' }"
class="flex-1 p-6 border rounded-lg hover:bg-accent/10 cursor-pointer transition-all duration-200 group relative overflow-hidden"
>
<div class="flex items-start gap-4">
<div
class="p-2 rounded-full bg-primary/10 group-hover:bg-primary/20 transition-colors"
>
<Swords class="size-10 text-primary" />
<AnimatedCard variant="gradient">
<NuxtLink
:to="{ name: 'matches-create' }"
class="block p-6 cursor-pointer"
>
<div class="flex items-start gap-4">
<div class="p-2 rounded-full bg-muted">
<Swords class="size-10 text-foreground" />
</div>
<div class="space-y-2">
<h3 class="text-xl font-semibold">
{{ $t("custom_match.title") }}
</h3>
<p class="text-sm text-muted-foreground leading-relaxed">
{{ $t("custom_match.description") }}
</p>
</div>
</div>
<div class="space-y-2">
<h3
class="text-xl font-semibold group-hover:text-primary transition-colors"
>
{{ $t("custom_match.title") }}
</h3>
<p class="text-sm text-muted-foreground leading-relaxed">
{{ $t("custom_match.description") }}
</p>
</div>
</div>
<div
class="absolute bottom-0 right-0 w-32 h-32 bg-primary/5 rounded-full -mr-16 -mb-16 group-hover:bg-primary/10 transition-colors"
></div>
</NuxtLink>
</NuxtLink>
</AnimatedCard>
</template>

<script lang="ts">
Expand Down
Loading