Introduction
A design system for building accessible and composable user interfaces in React.Apsara is an open-source React component library that provides enterprise-grade, accessible components for building complex data interfaces. Built on Radix UI primitives and Base UI, it combines unstyled accessibility foundations with a carefully designed visual layer powered by CSS custom properties.
Why Apsara?
Accessibility first — Every component is built on battle-tested primitives that handle ARIA attributes, focus management, and keyboard navigation correctly. You get accessible UI without the effort.
Consistent design language — A unified token system ensures visual consistency across your application. Colors, spacing, typography, and effects all follow predictable patterns that adapt automatically to light and dark modes.
Production ready — Components are designed for real-world applications: data tables with sorting and filtering, command palettes, multi-select comboboxes, and complex form controls that handle edge cases gracefully.
Minimal footprint — No runtime CSS-in-JS. Styles are vanilla CSS with semantic tokens, keeping your bundle lean and your performance predictable.
Components
Apsara provides over 50 components organized by function:
| Category | Components |
|---|---|
| Layout | Box, Flex, Grid, Container, Separator |
| Navigation | Navbar, Sidebar, Breadcrumb, Tabs, Link |
| Data Display | DataTable, Table, List, Avatar, Badge, Chip, Indicator |
| Forms | Button, InputField, TextArea, Select, Combobox, Checkbox, Radio, Switch, Slider, ColorPicker, Calendar |
| Feedback | Dialog, Sheet, Popover, Tooltip, Toast, Callout, EmptyState, Skeleton, Spinner |
| Utilities | Command, Search, CopyButton, CodeBlock, ScrollArea |
Theming
The theming system uses CSS custom properties (tokens) that automatically adapt to the active theme. Wrap your app with ThemeProvider to enable light/dark modes, accent colors, and style variants.
1import { ThemeProvider } from "@raystack/apsara";23<ThemeProvider defaultTheme="system" accentColor="indigo">4 <App />5</ThemeProvider>
Tokens follow a consistent naming convention:
1.custom-element {2 color: var(--rs-color-foreground-base-primary);3 background: var(--rs-color-background-base-secondary);4 padding: var(--rs-space-4);5 border-radius: var(--rs-radius-3);6}
See the Theme Overview for complete documentation.
Technology
Apsara is built with:
- Radix UI — Unstyled, accessible component primitives
- Base UI — Headless UI components from MUI
- TanStack Table — Powerful data table utilities
- class-variance-authority — Type-safe component variants
- TypeScript — Full type definitions for all components and props
Next Steps
- Getting Started — Install Apsara and build your first component
- Theme Overview — Learn about the theming system
- Components — Explore the component library