A modern, clean, and efficient UI component library that combines the best of three worlds: shadcn/ui theming, Mantine-style props for consistency, and an 8px design grid system.
UI8Kit represents a refined approach to UI development that prioritizes clarity over complexity. Unlike many design systems that overwhelm with excessive gradients, complex animations, and decorative borders, UI8Kit focuses on delivering a pure, consistent design foundation.
π§ shadcn/ui Theming
- Modern CSS variables and HSL color system
- Tailwind CSS integration for responsive design
- Theme-aware components with automatic dark mode support
- Backward compatibility with older browsers supporting HSL
π Mantine Props Consistency
- Predictable and intuitive component APIs
- Consistent prop naming and behavior patterns
- TypeScript-first approach with comprehensive type safety
- Composability through well-defined component contracts
π¨ 8px Design Grid System
- Consistent spacing scale based on 8px units
- Harmonious typography and sizing relationships
- Pixel-perfect alignment and spacing
- Scalable design system that maintains visual hierarchy
- No excessive gradients or decorative elements
- Clean borders and subtle shadows only when necessary
- Focus on typography, spacing, and content hierarchy
- Minimalist approach that scales beautifully
- Multiple built-in themes (LesseUI, ModernUI, SkyOS)
- Automatic dark/light mode switching
- CSS custom properties for easy customization
- Theme persistence in localStorage
- Core Components: Button, Badge, Card, Container, Stack, Grid
- Typography: Title, Text with semantic sizing
- Layout: Block, Box, Group for flexible layouts
- Interactive: Sheet, Accordion, Image, Icon
- Forms: Input, Textarea, Select, Checkbox (via @ui8kit/form)
- Chat System (@ui8kit/chat): AI-powered chat components with streaming
- Form Management (@ui8kit/form): Zod validation and auto-generated forms
- Flow Components (@ui8kit/flow): React Flow integration for diagrams
- Brain Module (@ui8kit/brain): AI and vector database integrations
- Utility Hooks (@ui8kit/hooks): Media queries, viewport detection, mobile detection
Built with modern tooling optimized for Bun.js:
{
"workspaces": ["apps/*", "packages/*", "packages/@ui8kit/*"],
"scripts": {
"dev": "bunx turbo run dev",
"build": "bunx turbo run build",
"dev:web": "bunx turbo run dev --filter=./apps/web"
}
}- Incremental builds with intelligent caching
- Parallel execution across packages
- Remote caching for team collaboration
- Workspace dependencies with proper linking
- Clean separation of concerns
- Independent versioning of UI packages
- Easy updates and maintenance
- Reduced bundle sizes through selective imports
- Bun 1.1.30+ (recommended) or Node.js 18+
- Git 2.40+ for submodule support
# Clone the repository with submodules zero folder
git clone --recurse-submodules https://github.com/ui8kit/create-app.git .
# Or clone the repository with submodules into ui8kit-app/ folder
git clone --recurse-submodules https://github.com/ui8kit/create-app.git ui8kit-app
cd ui8kit-app
# If you forgot --recurse-submodules, initialize submodules manually
git submodule update --init --recursive
# Install dependencies
bun install
# Start development server
bun run dev:web# Clone the repository
git clone https://github.com/ui8kit/create-app.git ui8kit-app
cd ui8kit-app
# Add UI8Kit Core submodule
git submodule add https://github.com/ui8kit/core.git packages/@ui8kit/core
# Initialize and update submodules
git submodule update --init --recursive
# Install dependencies
bun install
# Start development server
bun run dev:webimport { Block, Container, Button, Title, Text, Stack } from '@ui8kit/core'
import { ThemeProvider, useTheme } from '@ui8kit/core'
// Use skyOSTheme, modernUITheme or lesseUITheme
import { lesseUITheme } from '@ui8kit/core'
function AppContent() {
const { toggleDarkMode, isDarkMode } = useTheme()
return (
<Block variant="section" py="xl">
<Container>
<Stack gap="lg" align="center" ta="center">
<Title size="4xl">Welcome to UI8Kit</Title>
<Text>Create beautiful web applications with ease using our UI components</Text>
<Button variant={isDarkMode ? 'primary' : 'secondary'} onClick={toggleDarkMode}>
{!isDarkMode ? 'π Dark Mode' : 'βοΈ Light Mode'}
</Button>
</Stack>
</Container>
</Block>
)
}
export default function App() {
return (
<ThemeProvider theme={lesseUITheme}>
<AppContent />
</ThemeProvider>
)
}// Layout Components
<Block py="md" variant="section">
<Container>
<Grid cols={3} gap="md">
<Card shadow="sm" p="md">
<Title size="lg">Card Title</Title>
<Text>Card content goes here</Text>
<Button variant="primary" mt="md">Action</Button>
</Card>
</Grid>
</Container>
</Block>//import { lesseUITheme } from '@ui8kit/core'
//import { skyOSTheme } from '@ui8kit/core'
import { modernUITheme } from '@ui8kit/core'
// Switch between themes
<ThemeProvider theme={modernUITheme}>
<App />
</ThemeProvider>const customTheme = {
name: "CustomTheme",
rounded: {
default: "xl" as const,
button: "md" as const,
badge: "full" as const
},
buttonSize: {
default: "md" as const,
badge: "xs" as const
},
isNavFixed: false
}UI8Kit uses CSS custom properties for theming:
:root {
--background: 0 0% 100%;
--foreground: 222.2 84% 4.9%;
--primary: 221.2 83.2% 53.3%;
--secondary: 210 40% 96%;
/* ... more variables */
}
@media (prefers-color-scheme: dark) {
:root {
--background: 222.2 84% 4.9%;
--foreground: 210 40% 96%;
/* ... dark mode variables */
}
}<Button
variant="primary" | "secondary" | "outline" | "ghost" | "link" | "destructive"
size="xs" | "sm" | "md" | "lg" | "xl" | "icon"
rounded="none" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "full"
loading={boolean}
disabled={boolean}
leftSection={<Icon />}
rightSection={<Icon />}
onClick={handler}
>
Button Text
</Button>- Block: Section container with variants
- Container: Max-width wrapper
- Stack: Vertical layout with gaps
- Grid: CSS Grid layout system
- Group: Horizontal flex layout
- Title: Semantic headings (h1-h6)
- Text: Paragraph and span text
- Form validation with Zod
- Auto-generated forms from schemas
- Input, Textarea, Select, Checkbox, Radio, Switch
- AI chat interfaces
- Streaming responses
- Multiple AI providers (OpenAI, OpenRouter)
- Message history and analytics
- Vector database integration (Qdrant)
- Graph database support (Neo4j)
- Document processing and RAG
- AI-powered search and retrieval
We welcome contributions! Here's how to get started:
# Fork and clone the repository
git clone --recurse-submodules https://github.com/YOUR_USERNAME/ui8kit-app.git
cd ui8kit-app
# Install dependencies
bun install
# Start development
bun run dev
# Run tests
bun run test
# Build packages
bun run build- TypeScript First: All components are fully typed
- Consistent Props: Follow Mantine-style prop patterns
- Clean Architecture: Separation of concerns between packages
- Documentation: Comprehensive JSDoc and examples
- Testing: Unit tests for all components
packages/@ui8kit/
βββ core/ # Core UI components
βββ theme/ # Theme system
βββ form/ # Form components
βββ chat/ # Chat/AI components
βββ flow/ # Flow/diagram components
βββ brain/ # AI/brain functionality
βββ hooks/ # Utility hooks
MIT License - see LICENSE file for details.
- shadcn/ui for inspiration in creating themes
- Mantine for
propsapproaches to component APIs - Tailwind CSS for its
utility firstapproach - React and TypeScript for development experience
- Bun for lightning-fast execution speed
Built with β€οΈ using modern web technologies. Clean, consistent, and performant UI components for the next generation of web applications.