Overview
Cap provides two UI component packages:@cap/ui- React component library for the web app@cap/ui-solid- SolidJS component library for the desktop app
@cap/ui (React)
Installation
The package is included in the monorepo:Package Information
Package Name:@cap/ui
Location: packages/ui/
Framework: React 19
Exports
Components
Button
Flexible button component with multiple variants.Button style variant:
primary(default) - Dark button with shadowblue- Blue accent buttondestructive- Red button for dangerous actionsoutline- Outlined buttonwhite- Light buttonghost- Transparent buttongray- Gray buttondark- Dark gradient buttondarkgradient- Dark gradient with borderradialblue- Radial blue gradienttransparent- Fully transparent
Button size:
xs- 32px heightsm- 40px heightmd(default) - 44px heightlg- 48px heighticon- 36px square
Show loading spinner
Render as child component (Radix Slot)
Card
Container component for grouped content.Dialog
Modal dialog component.Dropdown
Dropdown menu component.Input
Form input components with validation.Select
Select dropdown component.Switch
Toggle switch component.Table
Data table component.Loading Components
LoadingSpinner
LogoSpinner
Skeleton Loaders
Icons
UI Framework
Built on Radix UI primitives:@radix-ui/react-dialog@radix-ui/react-dropdown-menu@radix-ui/react-select@radix-ui/react-switch@radix-ui/react-popover
Styling
Usesclass-variance-authority for variant management:
@cap/ui-solid (SolidJS)
Package Information
Package Name:@cap/ui-solid
Location: packages/ui-solid/
Framework: SolidJS
Exports
Components
Button
SolidJS button component.Button style variant:
primary- Primary button stylesecondary- Secondary button styleoutline- Outlined buttonghost- Transparent button
Button size:
sm- Smallmd- Mediumlg- Large
ProgressCircle
Circular progress indicator.Current progress value
Maximum value
SwitchTab
Tabbed switch component.Array of tab options
Currently selected option
Callback when selection changes
UI Framework
Built on Kobalte UI primitives:@kobalte/core- SolidJS UI primitives@kobalte/tailwindcss- Tailwind plugin
Styling
Usesclass-variance-authority for variants:
Shared Utilities
Both packages depend on@cap/utils for shared utilities:
TailwindCSS Configuration
Shared Plugins
Both packages use:tailwindcss-animate- Animation utilities@tailwindcss/typography- Typography stylestailwind-scrollbar- Custom scrollbars@kobalte/tailwindcss- Component styles
Custom Theme
Both packages extend the Tailwind theme with Cap’s design tokens:Development
Type Checking
Run type checking:Storybook
View components in Storybook:packages/ui-solid/src/*.stories.tsx.
Best Practices
Component Composition
Component Composition
Prefer composition over configuration:
Styling
Styling
Use Tailwind classes directly:
Accessibility
Accessibility
Components include ARIA attributes:
- Keyboard navigation
- Screen reader support
- Focus management
Next Steps
Database Package
Learn about the database layer
Architecture
Understand the monorepo structure