@zvndev/ui
v0.3.0
Published
An AI-first component library for React - zero-runtime, type-safe, and composable
Downloads
70
Maintainers
Readme
@zvn/ui
An AI-first component library for React with zero-runtime styling, type-safe APIs, and comprehensive accessibility.
Features
- Zero-Runtime Styling - Built on StyleX for optimal performance
- Type-Safe - Full TypeScript support with comprehensive prop types
- Accessible - Radix UI primitives with ARIA patterns baked in
- AI-Ready - Components tagged with
@ai-*annotations for AI tooling - Themeable - 7 built-in themes with full customization support
- Gesture Support - Touch gestures, swipe, drag, and more
Installation
npm install @zvn/ui react react-domQuick Start
import { Button, Input, Dialog } from '@zvn/ui'
import '@zvn/ui/styles.css'
function App() {
return (
<Dialog>
<DialogTrigger asChild>
<Button>Open Form</Button>
</DialogTrigger>
<DialogContent>
<DialogTitle>Contact Us</DialogTitle>
<Input placeholder="Your email" />
<Button>Submit</Button>
</DialogContent>
</Dialog>
)
}Components
Primitives
Button- Interactive button with variants, sizes, loading statesInput- Text input with icons, error states, helper textLabel- Accessible form labelsBadge- Status indicatorsTextarea- Multi-line text inputCheckbox- Toggle controlRadioGroup- Single selection from optionsSelect- Dropdown selectionSwitch- Toggle switchSlider- Range selection
Form
Field- Form field wrapper with label/error handlingInputGroup- Input with addonsButtonGroup- Grouped buttonsTagsInput- Multi-value tag inputFileUpload- File upload with drag-and-dropInputOTP- One-time password input
Overlay
Dialog- Modal dialogDrawer- Slide-out panelPopover- Floating contentTooltip- Hover informationDropdownMenu- Action menuAlertDialog- Confirmation dialogHoverCard- Rich hover previews
Layout
Card- Content containerAccordion- Collapsible sectionsTabs- Tabbed navigationCollapsible- Expandable sectionSeparator- Visual dividerAspectRatio- Fixed aspect containerBox,Flex,Stack,Grid- Layout primitivesContainer,Center,Spacer- Layout utilities
Navigation
Breadcrumb- Navigation pathNavigationMenu- Site navigationPagination- Page navigationMenubar- Application menuContextMenu- Right-click menu
Data Display
Table- Data tableAvatar- User avatarCalendar- Date pickerCommand- Command palette (cmdk)ScrollArea- Custom scrollbar
Feedback
Alert- Inline messagesToast- Notifications (sonner)Progress- Progress indicatorSkeleton- Loading placeholdersSpinner- Loading spinner
Advanced
Sheet- Slide-out panelResizable- Resizable panelsCarousel- Image carouselTreeView- Hierarchical dataTimeline- Event timelineStepper- Multi-step flowRating- Star ratingCodeBlock- Syntax highlightingChat- Chat interfaceCombobox- Searchable selectDataTable- Advanced data gridSidebar- App navigationAppShell- App layout wrapper
Theming
Built-in Themes
import { darkTheme, indigoTheme, tealTheme, roseTheme } from '@zvn/ui'
// Apply via className
<div className={darkTheme}>
<App />
</div>Available Themes
- Default (Light)
- Dark
- Indigo
- Teal
- Rose
- Minimal
- Soft
- Brutalist
Custom Tokens
Override design tokens via StyleX:
import { colors, spacing } from '@zvn/ui'Hooks
import {
useMediaQuery,
useIsMobile,
useIsTablet,
useIsDesktop,
usePrefersDarkMode,
usePrefersReducedMotion,
useControllableState,
useDebounce,
useLocalStorage,
useClickOutside,
useKeyboardShortcut,
useSwipe,
useDrag,
usePan,
useLongPress,
useDoubleTap,
} from '@zvn/ui'Utility Functions
import {
cn, // Combine class names
merge, // Merge StyleX styles
variant, // Type-safe variant selector
when, // Conditional styling
clamp, // Number clamping
debounce, // Function debouncing
throttle, // Function throttling
generateId, // Unique ID generation
} from '@zvn/ui'Accessibility
All components follow WAI-ARIA patterns:
- Keyboard navigation
- Screen reader support
- Reduced motion respect
- Focus management
- ARIA attributes
Browser Support
- Chrome 90+
- Firefox 90+
- Safari 14+
- Edge 90+
Development
# Install dependencies
npm install
# Start development server
npm run dev
# Run tests
npm test
# Build library
npm run build:lib
# Type check
npm run typecheck
# Lint
npm run lintLicense
MIT
