A beautiful, accessible Blazor component library inspired by shadcn/ui. 103 production-ready components with Tailwind CSS theming, dark mode, and 8 color schemes.
Live Demo | |
- 103 Components — Fully accessible, production-ready UI primitives
- 8 Color Themes — Zinc, Blue, Green, Rose, Orange, Violet, Amber, Teal
- Dark Mode — Class-based with system preference detection
- Tailwind CSS v4 — CSS variable architecture, zero hardcoded colors
- Programmatic OverlayService — Open dialogs, sheets, drawers, and toasts from code
- 30+ Chart Types — Powered by ECharts (Bar, Line, Area, Pie, Donut, Radar, Scatter, and more)
- DataGrid — Sort, filter, inline edit, column pin, row group, virtual scroll, and CSV/JSON export
- Form Validation — DataAnnotations and custom validation with styled error states
- Accessible — ARIA attributes, keyboard navigation, focus trapping, screen reader support
- 1,316 Tests — Comprehensive bUnit test coverage
- Blazor WASM & Server — Works with both hosting models
Stack, Flex, Grid, Container, Center, Spacer, AspectRatio, Resizable, ScrollArea, Separator
Text, Heading, Link, Code
Input, Select, Combobox, DatePicker, DateRangePicker, DateTimePicker, TimePicker, NumberInput, PasswordInput, InputMask, Checkbox, Switch, RadioGroup, Slider, Toggle, ToggleGroup, FileUpload, OtpInput, TagInput, ColorPicker, Textarea, Form, Mention, Cascader
Table, DataTable, DataGrid, Card, Badge, Chip, Avatar, Calendar, Descriptions, Statistic, Timeline, Steps, Rating, Image, ImageCompare, TreeView, QRCode, Watermark
Toast, Alert, Progress, Spinner, Skeleton, EmptyState, Result
Dialog, Sheet, Drawer, AlertDialog, Popover, Tooltip, HoverCard, ContextMenu, DropdownMenu, Command, PopConfirm, Tour
Tabs, Breadcrumb, Pagination, Sidebar, Menubar, NavigationMenu, MegaMenu, Accordion, Collapsible, Scrollspy, BackToTop, Affix, SpeedDial
Kanban, SortableList, Transfer
30+ types via ECharts: Bar, Line, Area, Pie, Donut, Radar, Scatter, Heatmap, Treemap, Sankey, Funnel, Gauge, Candlestick, Boxplot, Calendar, Sunburst, Graph, Parallel, ThemeRiver, WordCloud, GeoMap, and more
dotnet add package Lumeo// Program.cs
using Lumeo;
builder.Services.AddLumeo();@* _Imports.razor *@
@using Lumeo
@using Lumeo.ServicesAdd to your index.html (WASM) or _Host.cshtml (Server):
<!-- Lumeo theme CSS -->
<link rel="stylesheet" href="_content/Lumeo/css/lumeo.css" />
<!-- Theme initialization (prevents flash of unstyled content) -->
<script src="_content/Lumeo/js/theme.js"></script>
<!-- Component interop (loaded on demand, but can be preloaded) -->
<script src="_content/Lumeo/js/components.js" type="module"></script>Lumeo components use Tailwind CSS v4 utility classes. In your Tailwind CSS entry file:
@import "tailwindcss";
/* Import Lumeo theme variables */
@import "./_content/Lumeo/css/lumeo.css" layer(base);
/* Dark mode variant */
@variant dark (&:where(.dark, .dark *));
/* Map Lumeo CSS variables to Tailwind theme */
@theme {
--color-background: var(--color-background);
--color-foreground: var(--color-foreground);
--color-primary: var(--color-primary);
--color-primary-foreground: var(--color-primary-foreground);
/* ... see lumeo.css for full variable list */
}For alternate color themes, import additional theme files:
@import "./_content/Lumeo/css/themes/_blue.css" layer(base);
@import "./_content/Lumeo/css/themes/_green.css" layer(base);
@import "./_content/Lumeo/css/themes/_rose.css" layer(base);
@import "./_content/Lumeo/css/themes/_orange.css" layer(base);
@import "./_content/Lumeo/css/themes/_violet.css" layer(base);
@import "./_content/Lumeo/css/themes/_amber.css" layer(base);
@import "./_content/Lumeo/css/themes/_teal.css" layer(base);@using Lumeo
<Card>
<CardHeader>
<Heading Level="3">Hello Lumeo</Heading>
<Text Size="sm" Color="muted">A beautiful component library.</Text>
</CardHeader>
<CardContent>
<Button OnClick="@(() => count++)">
Clicked @count times
</Button>
</CardContent>
</Card>
@code {
private int count;
}<Dialog @bind-IsOpen="dialogOpen">
<DialogTrigger>
<Button Variant="Button.ButtonVariant.Outline">Open Dialog</Button>
</DialogTrigger>
<DialogContent Size="DialogContent.DialogSize.Lg">
<DialogHeader>
<DialogTitle>Are you sure?</DialogTitle>
<DialogDescription>This action cannot be undone.</DialogDescription>
</DialogHeader>
<DialogFooter>
<Button Variant="Button.ButtonVariant.Secondary" OnClick="@(() => dialogOpen = false)">Cancel</Button>
<Button OnClick="Confirm">Confirm</Button>
</DialogFooter>
</DialogContent>
</Dialog>@inject ToastService Toast
<Button OnClick="@(() => Toast.Success("Saved!", "Your changes have been saved."))">
Save
</Button><Form Model="model" OnValidSubmit="HandleSubmit">
<FormField Label="Email" HelpText="We'll never share your email." Required>
<Input @bind-Value="model.Email" type="email" />
</FormField>
<FormField Label="Password" Required>
<PasswordInput @bind-Value="model.Password" ShowStrength />
</FormField>
<Button type="submit">Sign Up</Button>
</Form><ThemeSwitcher />Or programmatically via ThemeService:
@inject ThemeService Theme
<Button OnClick="@(() => Theme.SetSchemeAsync("blue"))">
Switch to Blue
</Button>| Theme | Primary Color | Character |
|---|---|---|
| Zinc | hsl(240 5% 26%) |
Clean, neutral |
| Blue | hsl(221 83% 53%) |
Corporate, trust |
| Green | hsl(142 71% 45%) |
Growth, eco |
| Rose | hsl(347 77% 50%) |
Warm, energetic |
| Orange | hsl(14 70% 50%) |
Warm brand |
| Violet | hsl(262 83% 58%) |
Bold, creative |
| Amber | hsl(38 92% 50%) |
Energy, attention |
| Teal | hsl(173 80% 40%) |
Calm, modern |
<!-- Toggle button -->
<ThemeToggle />
<!-- Or programmatically -->
@inject ThemeService Theme
await Theme.SetModeAsync(ThemeMode.Dark); // Force dark
await Theme.SetModeAsync(ThemeMode.Light); // Force light
await Theme.SetModeAsync(ThemeMode.System); // Follow OS preference
await Theme.ToggleModeAsync(); // Toggle current- Live Docs — Full component demos and API reference
- Form Validation Guide — DataAnnotations, custom validators, examples
- Accessibility Guide — ARIA roles, keyboard patterns, focus management
- Contributing Guide — Setup, component creation, testing, code style
- Changelog — Full release history
- .NET 10 / Blazor
- Tailwind CSS v4
- ECharts for charts
- Blazicons.Lucide for icons
MIT