Core Match Components
MatchForm
Primary component for creating and editing matches. Handles both PUG (Pick-Up Game) and team-based matches with comprehensive match options. Location:components/match/MatchForm.vue
Key Features:
- PUG vs Team match toggle
- Team selection with search
- Match options configuration (map pool, veto, server settings)
- Integration with MatchOptions component
- Automatic validation using vee-validate and Zod
match(Object, optional): Existing match object for editing
MatchInfo
Displays comprehensive match information including teams, scores, status, and action buttons. Location:components/match/MatchInfo.vue
Key Features:
- Animated check-in/schedule sections with gradient borders
- Team names and current scores
- Match status with real-time updates
- Coach assignment (if enabled)
- Quick server connect
- Auto-cancel warnings and scheduled time display
match(Object, required): Match object with lineups, options, and status
isPreLiveStatus: Checks if match is in pre-live stateshowCheckInSection: Determines if check-in UI should displayshowQuickConnectSection: Shows server connect when match is live
LineupOverview
Displays team lineup with player statistics in a comprehensive table format. Location:components/match/LineupOverview.vue
Key Features:
- Responsive statistics table (K/D/A, HS%, damage, multi-kills)
- Team name editing (for captains/organizers)
- Ready status indicators during check-in
- Empty slot management with “Add Player” functionality
- Join lineup button for open/invite matches
- Progressive disclosure of stats based on screen size
match(Object, required): Match objectlineup(Object, required): Lineup object with players and statsshowStats(Boolean, default: true): Toggle statistics display
joined: Emitted when a player joins or lineup is updated
- Player name (always visible)
- Kills, Deaths (mobile+)
- Assists (desktop+)
- K/D ratio (desktop+)
- Headshot % (large screens+)
- Team damage, Multi-kills, Total damage (extra large screens+)
MatchMapVeto
Interactive map veto interface with pick/ban functionality and side selection. Location:components/match/MatchMapVeto.vue
Key Features:
- Visual map selection grid
- Side selection (CT/T) with animated icons
- Real-time turn indicator with pulsing animations
- Organizer override mode
- Pick history display
- Sound effects for veto events
match(Object, required): Match object with veto state
match_map_veto_picks for real-time updates
PlayerStatusDisplay
Displays player status with animated indicators for online/ready/in-game states. Location:components/match/PlayerStatusDisplay.vue
Key Features:
- Animated status dot (red/yellow/green)
- Contextual status based on match phase
- Check-in ready status
- In-game detection
- Tooltip with detailed status info
- Captain badge display
member(Object, required): Lineup player objectmatch(Object, optional): Match object for status contextshowDetails(Boolean, default: true): Show flag, name, role, etc.linkable(Boolean, default: true): Make player name clickableflip(Boolean, default: false): Flip status indicator positionshowName(Boolean, default: false): Show name in tooltip
- WaitingForCheckIn: Red (offline not ready), Yellow (online not ready), Green (ready)
- Other phases: Red (offline), Yellow (online not in game), Green (in game)
Match Action Components
MatchActions
Dropdown menu with match management actions (forfeit, report, delete, etc.). Location:components/match/MatchActions.vue
Features:
- Forfeit match
- Report match (admin)
- Delete match (organizer)
- Cancel match
- Edit match settings
CheckIntoMatch
Check-in button and countdown timer for match start. Location:components/match/CheckIntoMatch.vue
Features:
- Captain/player check-in modes
- Countdown timer to auto-cancel
- Animated ready state
ScheduleMatch
Schedule a match for a future date/time. Location:components/match/ScheduleMatch.vue
Features:
- Date/time picker
- Timezone handling
- Schedule validation
QuickMatchConnect
One-click server connection with server details. Location:components/match/QuickMatchConnect.vue
Features:
- Copy server IP
- Copy connect command
- Direct connect button
- Server status display
Match Display Components
MatchStatus
Badge component displaying current match status with color coding. Location:components/match/MatchStatus.vue
Statuses:
MatchLineupScoreDisplay
Displays lineup score with win/loss/tie indication. Location:components/match/MatchLineupScoreDisplay.vue
MatchMaps
Displays all maps in the match with scores per map. Location:components/match/MatchMaps.vue
Features:
- Map thumbnails
- Per-map scores
- Current map indicator
- Veto pick history
Statistics Components
LineupOverviewRow
Single player row in the lineup statistics table. Location:components/match/LineupOverviewRow.vue
Displays:
- Player avatar and name
- K/D/A stats
- K/D ratio with color coding
- Headshot percentage
- Team damage
- Multi-kill rounds (2K, 3K, 4K, 5K)
- Knife kills
- Zeus kills
- Total damage
LineupUtility
Utility usage statistics (smokes, flashes, HE, molotov). Location:components/match/LineupUtility.vue
LineupOpeningDuels
Opening duel statistics with win/loss ratios. Location:components/match/LineupOpeningDuels.vue
LineupClutches
Clutch statistics (1vX situations). Location:components/match/LineupClutches.vue
Lineup Management Components
AssignPlayerToLineup
Admin component to assign a player to a lineup. Location:components/match/AssignPlayerToLineup.vue
Usage Example:
lineup(Object, required): Target lineupexclude(Array, optional): Players to exclude from selectionmatchId(String, required): Match UUID
JoinLineupForm
Player-facing button to join an open or invite-only match. Location:components/match/JoinLineupForm.vue
AssignCoachToLineup
Assign a coach to a lineup (if coaches are enabled). Location:components/match/AssignCoachToLineup.vue
Map Selection Components
MapSelector
Grid-based map selection interface with visual map cards. Location:components/match/MapSelector.vue
Usage Example:
modelValue(String): Selected map IDmapPool(Array): Available mapspicks(Array): Previous veto picks (shown as overlay)confirmLabel(String): Confirm button text
MatchMapLineup
Displays lineup for a specific map with side indication. Location:components/match/MatchMapLineup.vue
MatchRegionVeto
Region veto interface (similar to map veto but for server regions). Location:components/match/MatchRegionVeto.vue
MatchSelectServer
Manual server selection interface for match organizers. Location:components/match/MatchSelectServer.vue
Match Browsing Components
OpenMatches
List of open matches that players can join. Location:components/match/OpenMatches.vue
MyMatches
List of matches the current user is participating in. Location:components/match/MyMatches.vue
MyRecentMatches
Recent match history for the current user. Location:components/match/MyRecentMatches.vue
OtherMatches
Browse all public matches. Location:components/match/OtherMatches.vue
PlayerInvites
Match invitations for the current player. Location:components/match/PlayerInvites.vue
Common Patterns
GraphQL Integration
Most match components use Apollo GraphQL for real-time data:Form Validation
Components use vee-validate with Zod schemas:Permission Checks
Components check user permissions using match properties:Related Components
Tournament Components
Tournament brackets and stage management
UI Components
Base UI components and design system
Next Steps
API Reference
GraphQL schema and API endpoints
State Management
Learn about Pinia stores