Design System Foundation
Component Architecture
All UI components follow these principles:- Headless: Built on Reka UI for accessibility and behavior
- Composable: Small, focused components that combine together
- Styled: Tailwind CSS with custom theme variables
- Type-safe: Full TypeScript support
- Accessible: ARIA compliant with keyboard navigation
components/ui/
Form Components
Button
Primary interaction component with multiple variants. Location:components/ui/button/Button.vue
Usage Example:
variant:'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link'size:'default' | 'sm' | 'lg' | 'icon'as: HTML element or component to render asasChild: Render as child element (for composition)
Input
Text input field with validation support. Location:components/ui/input/Input.vue
Usage Example:
modelValue: Input value (v-model)defaultValue: Default valuetype: Input type (text, email, password, etc.)disabled: Disable input- Standard HTML input attributes
Form Components
Form components work with vee-validate for validation: Locations:components/ui/form/FormItem.vuecomponents/ui/form/FormLabel.vuecomponents/ui/form/FormControl.vuecomponents/ui/form/FormDescription.vuecomponents/ui/form/FormMessage.vue
Select
Dropdown select component. Location:components/ui/select/
Components:
Select.vue- Root componentSelectTrigger.vue- Trigger buttonSelectContent.vue- Dropdown contentSelectGroup.vue- Option groupSelectItem.vue- Single optionSelectLabel.vue- Group labelSelectSeparator.vue- Visual separatorSelectValue.vue- Selected value display
Switch
Toggle switch component. Location:components/ui/switch/Switch.vue
Usage Example:
Textarea
Multi-line text input. Location:components/ui/textarea/Textarea.vue
Usage Example:
RadioGroup
Radio button group component. Location:components/ui/radio-group/
Usage Example:
Layout Components
Card
Container component for content grouping. Location:components/ui/card/
Components:
Card.vue- Root containerCardHeader.vue- Header sectionCardTitle.vue- Title textCardDescription.vue- Description textCardContent.vue- Main content areaCardFooter.vue- Footer section
Separator
Visual divider component. Location:components/ui/separator/Separator.vue
Usage Example:
orientation:'horizontal' | 'vertical'(default: horizontal)decorative: Whether separator is decorative only
Tabs
Tab navigation component. Location:components/ui/tabs/
Usage Example:
Table
Data table components. Location:components/ui/table/
Components:
Table.vue- Root tableTableHeader.vue- Header sectionTableBody.vue- Body sectionTableFooter.vue- Footer sectionTableRow.vue- Table rowTableHead.vue- Header cellTableCell.vue- Data cellTableCaption.vue- Table caption
Overlay Components
Dialog
Modal dialog component. Location:components/ui/dialog/
Components:
Dialog.vue- Root componentDialogTrigger.vue- Trigger buttonDialogContent.vue- Dialog contentDialogHeader.vue- Header sectionDialogFooter.vue- Footer sectionDialogTitle.vue- Title textDialogDescription.vue- Description textDialogClose.vue- Close button
Popover
Popover component for contextual content. Location:components/ui/popover/
Usage Example:
Sheet
Slide-in panel component. Location:components/ui/sheet/
Usage Example:
Tooltip
Tooltip component for hints and descriptions. Location:components/ui/tooltip/
Usage Example:
Toast
Toast notification component. Location:components/ui/toast/
Usage Example:
Feedback Components
Badge
Inline status or label component. Location:components/ui/badge/Badge.vue
Usage Example:
default: Primary badgesecondary: Secondary badgedestructive: Error/danger badgeoutline: Outlined badge
Progress
Progress bar component. Location:components/ui/progress/Progress.vue
Usage Example:
Skeleton
Loading skeleton component. Location:components/ui/skeleton/Skeleton.vue
Usage Example:
Navigation Components
Sidebar
Application sidebar with collapsible sections. Location:components/ui/sidebar/
Components (22 total):
Sidebar.vue- Root containerSidebarProvider.vue- Context providerSidebarMenu.vue- Menu containerSidebarMenuItem.vue- Menu itemSidebarMenuButton.vue- Clickable menu item- And more…
NavigationMenu
Horizontal navigation menu. Location:components/ui/navigation-menu/
Menubar
Menu bar component (File, Edit, etc.). Location:components/ui/menubar/
Pagination
Pagination controls for lists and tables. Location:components/ui/pagination/
Components:
PaginationFirst.vue- First pagePaginationPrev.vue- Previous pagePaginationNext.vue- Next pagePaginationLast.vue- Last pagePaginationEllipsis.vue- Ellipsis (…)
Utility Components
ScrollArea
Custom scrollbar component. Location:components/ui/scroll-area/
Usage Example:
NumberField
Numeric input with increment/decrement buttons. Location:components/ui/number-field/
Calendar
Date picker calendar component. Location:components/ui/calendar/Calendar.vue
Transitions
PageTransition
Page transition animations. Location:components/ui/transitions/PageTransition.vue
Utility Functions
cn (classname utility)
Merge Tailwind classes with conflict resolution:Theme System
The UI components use CSS variables for theming: Location:assets/css/tailwind.css
Accessibility
All UI components follow WCAG 2.1 Level AA guidelines:- Keyboard Navigation: Full keyboard support
- Screen Readers: Proper ARIA labels and roles
- Focus Management: Visible focus indicators
- Color Contrast: Meets contrast requirements
Related
Match Components
Match-specific components
Tournament Components
Tournament brackets and management
Resources
Reka UI
Headless UI component library
Tailwind CSS
Utility-first CSS framework