# adao-locks/cs2-map-selector architecture

> Architecture diagram of the GitHub repository adao-locks/cs2-map-selector, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/adao-locks/cs2-map-selector
- Repository: https://github.com/adao-locks/cs2-map-selector

## Overview

SispBalas is a browser-based set of CS2 tools: users can assemble teams, run a map veto, and create a tournament bracket. The main flow starts at the home page, where users choose a tool; the team selector can also pass team names into the veto tool. Each tool manages its own interactive state in the browser. The tree and excerpts show no backend or persistent store. Some UI components are connected based on the SOURCE INDEX import references; unsampled internals and asset usage are not inferred.

Main entry points: [`app/page.tsx`](https://github.com/adao-locks/cs2-map-selector/blob/master/app/page.tsx) (Tool landing page), [`app/map_picker/page.tsx`](https://github.com/adao-locks/cs2-map-selector/blob/master/app/map_picker/page.tsx) (Map veto), [`components/site-header.tsx`](https://github.com/adao-locks/cs2-map-selector/blob/master/components/site-header.tsx) (Site navigation), [`app/team/page.tsx`](https://github.com/adao-locks/cs2-map-selector/blob/master/app/team/page.tsx) (Team selector)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_product["Product pages"]
  node_home["Tool landing page<br/>[page.tsx]"]
  node_teams["Team selector<br/>[page.tsx]"]
  node_veto["Map veto<br/>[page.tsx]"]
  node_bracket["Tournament bracket<br/>[page.tsx]"]
end

subgraph group_shared["Shared interface"]
  node_teaminputs["Team name inputs"]
  node_shell["Page layout helpers<br/>[page-shell.tsx]"]
  node_header["Site navigation<br/>[site-header.tsx]"]
end

subgraph group_ui["UI primitives"]
  node_button["Button component<br/>[button.tsx]"]
  node_utils["Class utilities<br/>[utils.ts]"]
end

node_user(("Visitor"))

node_user -->|"opens"| node_home
node_home -->|"links to"| node_teams
node_home -->|"links to"| node_veto
node_home -->|"links to"| node_bracket
node_header -->|"routes to"| node_home
node_header -->|"routes to"| node_teams
node_header -->|"routes to"| node_veto
node_header -->|"routes to"| node_bracket
node_teams -->|"passes team names"| node_veto
node_veto -->|"renders"| node_teaminputs
node_home -->|"uses"| node_shell
node_teams -->|"uses"| node_shell
node_veto -->|"uses"| node_shell
node_bracket -->|"uses"| node_shell
node_home -->|"uses"| node_button
node_teams -->|"uses"| node_button
node_veto -->|"uses"| node_button
node_bracket -->|"uses"| node_button
node_shell -->|"uses"| node_utils
node_header -->|"uses"| node_utils
node_button -->|"uses"| node_utils

click node_home "https://github.com/adao-locks/cs2-map-selector/blob/master/app/page.tsx"
click node_teams "https://github.com/adao-locks/cs2-map-selector/blob/master/app/team/page.tsx"
click node_veto "https://github.com/adao-locks/cs2-map-selector/blob/master/app/map_picker/page.tsx"
click node_bracket "https://github.com/adao-locks/cs2-map-selector/blob/master/app/tournaments/page.tsx"
click node_teaminputs "https://github.com/adao-locks/cs2-map-selector/blob/master/components/team-name-inputs.tsx"
click node_shell "https://github.com/adao-locks/cs2-map-selector/blob/master/components/page-shell.tsx"
click node_header "https://github.com/adao-locks/cs2-map-selector/blob/master/components/site-header.tsx"
click node_button "https://github.com/adao-locks/cs2-map-selector/blob/master/components/ui/button.tsx"
click node_utils "https://github.com/adao-locks/cs2-map-selector/blob/master/lib/utils.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_home,node_teams,node_veto,node_bracket toneBlue
class node_teaminputs,node_shell,node_header toneAmber
class node_button,node_utils toneMint
class node_user toneIndigo
```

## Components

### Product pages

- [Tool landing page](https://github.com/adao-locks/cs2-map-selector/blob/master/app/page.tsx): `app/page.tsx`
- [Team selector](https://github.com/adao-locks/cs2-map-selector/blob/master/app/team/page.tsx): `app/team/page.tsx`
- [Map veto](https://github.com/adao-locks/cs2-map-selector/blob/master/app/map_picker/page.tsx): `app/map_picker/page.tsx`
- [Tournament bracket](https://github.com/adao-locks/cs2-map-selector/blob/master/app/tournaments/page.tsx): `app/tournaments/page.tsx`

### Shared interface

- [Team name inputs](https://github.com/adao-locks/cs2-map-selector/blob/master/components/team-name-inputs.tsx): `components/team-name-inputs.tsx`
- [Page layout helpers](https://github.com/adao-locks/cs2-map-selector/blob/master/components/page-shell.tsx): `components/page-shell.tsx`
- [Site navigation](https://github.com/adao-locks/cs2-map-selector/blob/master/components/site-header.tsx): `components/site-header.tsx`

### UI primitives

- [Button component](https://github.com/adao-locks/cs2-map-selector/blob/master/components/ui/button.tsx): `components/ui/button.tsx`
- [Class utilities](https://github.com/adao-locks/cs2-map-selector/blob/master/lib/utils.ts): `lib/utils.ts`

### Other components

- **Visitor**

## Connections

- Visitor → Tool landing page: opens (evidence: `app/page.tsx`)
- Tool landing page → Team selector: links to (evidence: `app/page.tsx`)
- Tool landing page → Map veto: links to (evidence: `app/page.tsx`)
- Tool landing page → Tournament bracket: links to (evidence: `app/page.tsx`)
- Site navigation → Tool landing page: routes to (evidence: `components/site-header.tsx`)
- Site navigation → Team selector: routes to (evidence: `components/site-header.tsx`)
- Site navigation → Map veto: routes to (evidence: `components/site-header.tsx`)
- Site navigation → Tournament bracket: routes to (evidence: `components/site-header.tsx`)
- Team selector → Map veto: passes team names (evidence: `app/team/page.tsx`)
- Map veto → Team name inputs: renders (evidence: `app/map_picker/page.tsx`)
- Tool landing page → Page layout helpers: uses (evidence: `app/page.tsx`)
- Team selector → Page layout helpers: uses (evidence: `app/team/page.tsx`)
- Map veto → Page layout helpers: uses (evidence: `app/map_picker/page.tsx`)
- Tournament bracket → Page layout helpers: uses (evidence: `app/tournaments/page.tsx`)
- Tool landing page → Button component: uses (evidence: `app/page.tsx`)
- Team selector → Button component: uses (evidence: `app/team/page.tsx`)
- Map veto → Button component: uses (evidence: `app/map_picker/page.tsx`)
- Tournament bracket → Button component: uses (evidence: `app/tournaments/page.tsx`)
- Page layout helpers → Class utilities: uses (evidence: `components/page-shell.tsx`)
- Site navigation → Class utilities: uses (evidence: `components/site-header.tsx`)
- Button component → Class utilities: uses (evidence: `components/ui/button.tsx`)
