A comprehensive UI component library for Blazor inspired by shadcn/ui.
| β‘ Zero Config Pre-built CSS, no Node.js or build tools required |
π§© 135+ Components Modern, composable UI components |
π¨ shadcn/ui Themes Drop in any shadcn/ui or tweakcn theme |
π Dark Mode Built-in light & dark with CSS variables |
NeoUI for Blazor brings the beautiful design system of shadcn/ui to Blazor applications. This library provides zero-config, plug-and-play UI components with full shadcn/ui compatibility, featuring pre-built CSS, styled components, and headless primitives that work across all Blazor hosting models (Server, WebAssembly, and Hybrid).
No Tailwind CSS setup required - just install the NuGet package and start building!
v4 brings NeoUI in full parity with shadcn/ui's April 2026 customisation model β and surpasses it with the most comprehensive shadcn-inspired theming system available for Blazor.
Every major component now participates in a 3-layer CSS merge that faithfully renders shadcn/ui style variants while preserving the Blazor developer experience:
Layer 1: Base component classes (sensible, backward-compatible defaults)
β
Layer 2: StyleVariant overrides (per-variant Tailwind classes via StyleVariant.GetClasses("Component.Key"))
β
Layer 3: User Class prop (always wins β merged via tailwind-merge)
50+ components fully wired β Button, Input, Card, Dialog, Sheet, Drawer, Tabs, Select, Combobox, DropdownMenu, ContextMenu, Menubar, Calendar, Command, Sidebar, TreeView, Toast, Tooltip, RadioGroup, Slider, RangeSlider, Switch, Toggle, ToggleGroup, Progress, Avatar, Badge, Alert, DataGrid, DataView, and more.
| Variant | Character | --radius |
|---|---|---|
Default |
Backward-compatible β no visual change | unchanged |
Vega |
Professional, balanced | 0.625rem |
Nova |
Compact, dashboard/admin | 0.375rem |
Maia |
Spacious, consumer-friendly | 1rem |
Lyra |
Sharp/boxy, developer tooling | 0rem |
Mira |
Ultra-dense, data-heavy | 0.25rem |
Luma |
Glassmorphism, modern SaaS | 0.75rem |
Luma goes furthest β pill-shaped containers, frosted inputs, stronger overlay blur, per-component shadow tuning β matching shadcn's Luma style exactly.
| Dimension | Options |
|---|---|
| Style Variant | Default, Vega, Nova, Maia, Lyra, Mira, Luma |
| Base Color | Zinc, Slate, Gray, Neutral, Stone + Mist, Mauve, Taupe, Olive (new) |
| Primary Color | 17 colors |
| Radius Preset | None, Small, Medium, Large |
| Font Preset | System, Inter, Geist, CalSans, DmSans, PlusJakarta |
| Menu Color | Default, Inverted, DefaultTranslucent (glassmorphism), InvertedTranslucent |
| Menu Accent | Subtle, Bold |
| Dark Mode | Light / Dark |
The ThemeSwitcher trigger now shows a two-tone color swatch reflecting the current base + primary color pair. Add ShowStyles="true" to expose the full visual picker with animated tabs:
@* Minimal β colors + dark mode *@
<ThemeSwitcher />
@* Full picker β all 8 theme dimensions with visual previews *@
<ThemeSwitcher ShowStyles="true" />Wrap your layout with <AppProvider> to enable StyleVariant propagation and automatic theme initialization:
@* MainLayout.razor *@
<AppProvider>
@Body
@* Portal hosts must be inside AppProvider *@
<ToastViewport />
<DialogHost />
</AppProvider>StyleVariant.Default preserves all pre-v4 radius ratios β existing apps see zero visual change after upgrading. Theme v2 is entirely opt-in.
Install NeoUI packages from NuGet:
# Styled components with shadcn/ui design
dotnet add package NeoUI.Blazor
# (Optional) Headless primitives for custom styling
dotnet add package NeoUI.Blazor.Primitives
# Icon libraries (choose one or more)
dotnet add package NeoUI.Icons.Lucide # 1,640 icons - stroke-based, consistent
dotnet add package NeoUI.Icons.Heroicons # 1,288 icons - 4 variants (outline, solid, mini, micro)
dotnet add package NeoUI.Icons.Feather # 286 icons - minimalist, stroke-based- Add to your
_Imports.razor:
@using NeoUI.BlazorOptional icon packages β add whichever you need:
@using NeoUI.Icons.Lucide @* 1,640+ icons *@
@using NeoUI.Icons.Heroicons @* 1,288 icons across 4 variants *@
@using NeoUI.Icons.Feather @* 286 minimalist icons *@-
Wrap your layout with
AppProvider:AppProviderinitializesThemeServiceand propagates the activeStyleVariantto all components. Portal hosts must be placed inside it:
@inherits LayoutComponentBase
<AppProvider>
<!-- Your layout content -->
@Body
<!-- Portal hosts must be inside AppProvider -->
<ToastViewport />
<DialogHost />
</AppProvider>
@* For overlay components to work correctly *@
<ContainerPortalHost />
<OverlayPortalHost />-
Add CSS and scripts to your
App.razor:NeoUI Components come with pre-built CSS and a theme script β no Tailwind setup required!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<base href="/" />
<!-- Your theme CSS variables -->
<link rel="stylesheet" href="styles/theme.css" />
<!-- Pre-built NeoUI styles -->
<link href="@Assets["_content/NeoUI.Blazor/components.css"]" rel="stylesheet" />
<!-- Theme script: reads localStorage and applies classes before Blazor loads (prevents FOUC) -->
<script src="@Assets["_content/NeoUI.Blazor/js/theme.js"]"></script>
<HeadOutlet @rendermode="InteractiveAuto" />
</head>
<body>
<Routes @rendermode="InteractiveAuto" />
<script src="@Assets["_framework/blazor.web.js"]"></script>
</body>
</html>- Start using components:
<Button Variant="ButtonVariant.Default">Click me</Button>
<Dialog>
<DialogTrigger AsChild>
<Button>Open Dialog</Button>
</DialogTrigger>
<DialogContent>
<DialogHeader>
<DialogTitle>Welcome to NeoUI</DialogTitle>
<DialogDescription>
Beautiful Blazor components inspired by shadcn/ui
</DialogDescription>
</DialogHeader>
<DialogFooter>
<DialogClose AsChild>
<Button Variant="ButtonVariant.Outline">Close</Button>
</DialogClose>
</DialogFooter>
</DialogContent>
</Dialog>AsChild Pattern: Use AsChild on trigger components to use your own styled elements (like Button) instead of the default button. This is the industry-standard pattern from Radix UI/shadcn/ui.
- Contributing: See CONTRIBUTING.md for development setup and guidelines
NeoUI ships a built-in ILocalizer abstraction β a thin interface that decouples your app from any specific i18n framework.
Default behaviour β DefaultLocalizer is registered automatically by AddNeoUIComponents(). It returns the built-in English strings for every UI key (button labels, ARIA attributes, empty-state messages, etc.). No configuration required.
Customizing strings β implement ILocalizer and register it before calling AddNeoUIComponents():
// Option A β custom DefaultLocalizer keys (simplest)
builder.Services.AddSingleton<ILocalizer>(sp =>
new DefaultLocalizer(keys => {
keys["Dialog.Close"] = "SchlieΓen";
}));
builder.Services.AddNeoUIComponents();
// Option B β full IStringLocalizer<T> integration
builder.Services.AddScoped<ILocalizer, StringLocalizerAdapter<MyResources>>();
builder.Services.AddNeoUIComponents();Both options work for Blazor Server, WebAssembly, and Auto mode.
NeoUI uses a two-layer architecture with modern .NET 10 features and Auto rendering mode:
- NeoUI.Blazor.Primitives - Headless components (runs on both Server and WebAssembly)
- NeoUI.Blazor - Pre-styled components (runs on both Server and WebAssembly)
- NeoUI.Demo.Shared - Shared pages, components, services, and static assets (.NET 10)
- NeoUI.Demo.Server - Server-only hosting (.NET 10)
- NeoUI.Demo.Wasm - WebAssembly-only hosting (.NET 10)
- NeoUI.Demo.Auto - Auto mode (Server+WASM) hosting (.NET 10)
- NeoUI.Demo.Auto.Client - WASM satellite for Auto mode (.NET 10)
All components support .NET 10's Auto rendering mode, which automatically switches between Server and WebAssembly based on availability:
<!-- App.razor -->
<HeadOutlet @rendermode="InteractiveAuto" />
<Routes @rendermode="InteractiveAuto" />This provides:
- Fast initial load (Server-side rendering)
- Rich interactivity (WebAssembly after download)
- Seamless transition between modes
- Optimal performance for all scenarios
- Pre-styled components matching shadcn/ui design system
- Pre-built CSS included - no Tailwind configuration needed
- Built on top of primitives for consistency
- Ready to use out of the box
- Full theme support via CSS variables
- Headless, unstyled components
- Complete accessibility implementation
- Keyboard navigation and ARIA support
- Maximum flexibility for custom styling
- Feature-based organization - Each component in its own folder with all related files
- Code-behind pattern - Clean separation of markup (
.razor) and logic (.razor.cs) - CSS Variables theming - Runtime theme switching with light/dark mode support
- Accessibility first - WCAG 2.1 AA compliance with comprehensive keyboard navigation
- Composition over inheritance - Components designed to be composed together
- Progressive enhancement - Works without JavaScript where possible
NeoUI is 100% compatible with shadcn/ui themes, making it easy to customize your application's appearance.
You can use any theme from:
- shadcn/ui themes - Official shadcn/ui theme gallery
- tweakcn.com - Advanced theme customization tool with live preview
Simply copy the CSS variables from these tools and paste them into your wwwroot/styles/theme.css file.
-
Create
wwwroot/styles/theme.cssin your Blazor project -
Add your theme variables inside the
:root(light mode) and.dark(dark mode) selectors:
@layer base {
:root {
--background: oklch(1 0 0);
--foreground: oklch(0.1450 0 0);
--primary: oklch(0.2050 0 0);
--primary-foreground: oklch(0.9850 0 0);
/* ... other variables */
}
.dark {
--background: oklch(0.1450 0 0);
--foreground: oklch(0.9850 0 0);
--primary: oklch(0.9220 0 0);
--primary-foreground: oklch(0.2050 0 0);
/* ... other variables */
}
}- Reference it in your
App.razorbefore the NeoUI CSS:
<link rel="stylesheet" href="styles/theme.css" />
<link href="@Assets["_content/NeoUI.Blazor/components.css"]" rel="stylesheet" />That's it! NeoUI will automatically use your theme variables.
NeoUI supports all standard shadcn/ui CSS variables:
- Colors:
--background,--foreground,--primary,--secondary,--accent,--destructive,--muted, etc. - Typography:
--font-sans,--font-serif,--font-mono - Layout:
--radius(border radius),--shadow-*(shadows) - Charts:
--chart-1through--chart-5 - Sidebar:
--sidebar,--sidebar-primary,--sidebar-accent, etc.
NeoUI automatically supports dark mode by applying the .dark class to the <html> element. All components will automatically switch to dark mode colors when this class is present.
NeoUI includes a complete runtime theme system with 8 independently-configurable dimensions:
ThemeService β inject anywhere to read or change the theme programmatically:
// Apply a built-in preset
await ThemeService.ApplyPresetAsync(ThemePreset.Luma);
// Or set individual dimensions
await ThemeService.SetStyleVariantAsync(StyleVariant.Nova);
await ThemeService.SetBaseColorAsync(BaseColor.Mauve);
await ThemeService.SetMenuColorAsync(MenuColor.DefaultTranslucent);ThemeSwitcher component β expose the full visual picker to your users:
@* Colors + dark mode only (default) *@
<ThemeSwitcher />
@* Full picker with style, radius, font, and menu controls *@
<ThemeSwitcher ShowStyles="true" />Setup:
theme.js(included automatically) applies saved theme classes before Blazor loads β no FOUC. Wrap your layout in<AppProvider>so components receive the activeStyleVariantcascade. See THEMING.md for the full guide.
No Tailwind CSS setup required! NeoUI Components include pre-built, production-ready CSS that ships with the NuGet package.
Add the following to your App.razor:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<base href="/" />
<!-- 1. Your custom theme (defines CSS variables) -->
<link rel="stylesheet" href="styles/theme.css" />
<!-- 2. Pre-built NeoUI styles -->
<link href="@Assets["_content/NeoUI.Blazor/components.css"]" rel="stylesheet" />
<!-- 3. Theme script: reads localStorage and applies classes before Blazor loads (prevents FOUC) -->
<script src="@Assets["_content/NeoUI.Blazor/js/theme.js"]"></script>
<HeadOutlet @rendermode="InteractiveAuto" />
</head>
<body>
<Routes @rendermode="InteractiveAuto" />
<script src="@Assets["_framework/blazor.web.js"]"></script>
</body>
</html>Important: Load your theme CSS before components.css so the CSS variables are defined when NeoUI references them.
Note: The pre-built CSS is already minified and optimized. You don't need to install Tailwind CSS, configure build processes, or set up any additional tooling.
Primitives are completely headless - they provide behavior and accessibility without any styling. You have complete freedom to style them however you want:
Option 1: Tailwind CSS (requires your own Tailwind setup)
<NeoUI.Blazor.Primitives.Accordion.Accordion class="space-y-4">
<NeoUI.Blazor.Primitives.Accordion.AccordionItem class="border rounded-lg">
<!-- Your custom Tailwind classes -->
</NeoUI.Blazor.Primitives.Accordion.AccordionItem>
</NeoUI.Blazor.Primitives.Accordion.Accordion>Option 2: CSS Modules / Vanilla CSS
<NeoUI.Blazor.Primitives.Accordion.Accordion class="my-accordion">
<!-- Style with your own CSS -->
</NeoUI.Blazor.Primitives.Accordion.Accordion>Option 3: Inline Styles
<NeoUI.Blazor.Primitives.Accordion.Accordion style="margin: 1rem;">
<!-- Direct inline styling -->
</NeoUI.Blazor.Primitives.Accordion.Accordion>Primitives give you complete control over styling while handling all the complex behavior, accessibility, and keyboard navigation for you. Unlike NeoUI.Blazor, primitives don't include any CSS - you bring your own styling approach.
NeoUI includes 135+ styled components with full shadcn/ui design compatibility:
- Button - Multiple variants (default, destructive, outline, secondary, ghost, link) with icon support
- Button Group - Visually grouped related buttons with connected styling
- Checkbox - Accessible checkbox with indeterminate state
- Color Picker - Color selection with hex, RGB, and HSL support
- Combobox - Searchable autocomplete dropdown
- Currency Input - Formatted currency input with locale support
- Field - Combine labels, controls, and help text for accessible forms
- Input - Text input with multiple types and validation support
- Input Group - Enhanced inputs with icons, buttons, and addons
- Input OTP - One-time password input with individual character slots
- Label - Accessible form labels
- Link Button - Semantic links styled as buttons for navigation
- Masked Input - Text input with customizable format masks (phone, date, etc.)
- Multi Select - Searchable multi-selection with tags and checkboxes
- Native Select - Styled native HTML select dropdown with chevron icon
- Numeric Input - Number input with increment/decrement buttons and formatting
- Radio Group - Radio button groups with keyboard navigation
- Range Slider - Dual-handle slider for selecting value ranges
- Rating - Star rating input with half-star precision and readonly mode
- Select - Dropdown select with search and keyboard navigation; supports
Presentation="SelectPresentation.BottomSheet"for a mobile-friendly drawer presentation - Slider - Range input for numeric value selection
- Switch - Toggle switch component
- Textarea - Multi-line text input with automatic content sizing
- Calendar - Date selection grid with month navigation
- Date Picker - Date selection with calendar in popover
- Date Range Picker - Date range selection with presets and two-calendar view
- Time Picker - Time selection with 12/24-hour format support
- Accordion - Collapsible content sections
- Aspect Ratio - Display content within a desired width/height ratio
- Breadcrumb - Hierarchical navigation with customizable separators
- Carousel - Slideshow component with touch gestures, animations, configurable dot-indicator position (
DotsPosition: Top, Bottom, Left, Right), and drag-click suppression - Card - Container for grouped content with header and footer
- Collapsible - Expandable/collapsible panels
- Navigation Menu - Horizontal navigation with dropdown panels
- Pagination - Page navigation with Previous/Next/Ellipsis support
- Resizable - Split layouts with draggable handles
- Scroll Area - Custom scrollbars for styled scroll regions
- Selection Indicator - Spring-animated indicator that slides between the active item in any selection container (Tabs, ToggleGroup, DropdownMenuRadioGroup, Pagination, custom markup). Zero wiring β place it as the last child and point it at the active-state attribute. Supports hover preview (
Hover="true") and CSS custom properties for animation and underline variants. - Sortable - Drag-and-drop reordering with pointer, touch, and keyboard support. Composes with
DataTable,DataView, and any list component without modifying them β place aSortableItemHandlein any column template and it works. Supports cross-list transfer between multiple lists sharing aGroupname, with consumer-controlled transfer events (OnItemTransferredIn,OnItemTransferredOut,OnCanDrop). UseContext="s"to get aSortableScope<TItem>for passingdata-sortable-idto any table or grid vias.RowAttributes. - Item - Flexible list items with media, content, and actions
- Separator - Visual dividers with configurable line style (
Solid,Dashed,Dotted) - Sidebar - Responsive sidebar with collapsible icon mode, variants (default, floating, inset), and mobile sheet integration
- Tabs - Tabbed interfaces with controlled/uncontrolled modes
- Alert Dialog - Modal for critical confirmations
- Context Menu - Right-click menus with actions and shortcuts
- Command - Command palette with keyboard navigation
- Dialog - Modal dialogs
- Dialog Service - Programmatic dialogs with async/await API for alerts and confirmations
- Drawer - Slide-out panel with gesture controls, backdrop, and multi-step snap points with draggable handle (bottom direction)
- Dropdown Menu - Context menus with nested submenus
- Hover Card - Rich hover previews
- Menubar - Desktop application-style horizontal menu bar
- Popover - Floating content containers
- Sheet - Slide-out panels (top, right, bottom, left)
- Toast - Temporary notifications with variants and actions
- Tooltip - Contextual hover tooltips
- DataTable - Advanced tables with sorting, filtering, pagination, server-side data, column pinning/resizing/reordering, tree/hierarchical rows, row context menu, and virtualization
- Filter - Inline canvas filter builder with 8 field types, operator chips, LINQ extensions, and preset support
- MarkdownEditor - Rich text editor with toolbar formatting and live preview
- RichTextEditor - WYSIWYG editor with formatting toolbar and HTML output
- Alert - Status messages and callouts
- Avatar - User avatars with fallback support
- Badge - Status badges and labels; includes BadgeIcon sub-component for icon-based badge chips
- Card - Container for grouped content with header and footer
- Command - Command palette with keyboard navigation
- Data Table - Powerful tables with sorting, filtering, pagination, and selection
- Empty - Empty state displays
- Item - Flexible list items with media, content, and actions
- Kbd - Keyboard shortcut badges
- Progress - Progress bars with animations
- Skeleton - Loading placeholders
- Spinner - Loading indicators
- Toggle - Pressable toggle buttons
- Toggle Group - Single/multiple selection toggle groups;
Scrollablefor horizontal overflow on mobile,Requiredto prevent deselecting the active item - Typography - Semantic text styling
- Chart - Beautiful data visualizations with 12 chart types:
- Area Chart - Stacked and gradient area charts
- Bar Chart - Vertical and horizontal bar charts (grouped/stacked)
- Candlestick Chart - OHLC financial candlestick charts
- Composed Chart - Mix multiple chart types (line + bar + area)
- Funnel Chart - Funnel/pipeline visualization
- Gauge Chart - Circular gauge / speedometer charts
- Heatmap Chart - Grid-based intensity heatmaps
- Line Chart - Single and multi-series line charts
- Pie Chart - Pie and donut charts with labels
- Radar Chart - Multi-axis radar/spider charts
- Radial Bar Chart - Circular progress and gauge charts
- Scatter Chart - X/Y coordinate plotting
- Motion - Declarative animation system powered by Motion.dev with 20+ presets including fade, scale, slide, shake, bounce, pulse, spring physics, scroll-triggered animations, and staggered list/grid animations
- PageTransition - Animated page-level transition wrapper; replays an entrance animation on
Keychange (fade, slide variants). Ideal for router-level transitions. - ScreenTransition - Screen-level animated transition wrapper for shell-based navigation. Supports
Tab(fade),Push(slide from right), andPop(slide from left) directions. Pair withTabsfor tab-switch fades and a push/pop navigation stack.
Five dedicated mobile-first components for .NET MAUI Blazor Hybrid, PWA, and mobile-first web apps. All live in NeoUI.Blazor β no separate package or @using required.
- AppBar - Mobile-style top application bar with centered title, optional back-chevron (
OnBack), transparent hero-overlay mode, and aRightContentslot - BottomNav + BottomNavItem - Persistent bottom tab bar (iOS/Android/MAUI style). Supports 2β5 icon+label items, per-item notification badge,
Fixedmode toggle for MAUI Hybrid containers, and safe-area inset padding - NotificationBadge - Wraps any element and overlays a count badge (numeric, dot mode, three colour variants, max-count truncation with
N+) - QuantityStepper - Circular +/β buttons for quantity input.
DestructiveAtMinswaps the minus button for a trash icon at the minimum value (cart UX) - SectionHeader - Title row with optional "view all" chevron and separator line; eliminates repetitive header boilerplate in content-heavy screens
MAUI Hybrid note:
BottomNavdefaults toFixed="true"(viewport-fixed) but can be set toFixed="false"for in-flow layout inside aBlazorWebViewcontainer. Safe-area padding is applied viaenv(safe-area-inset-bottom)for iOS home indicator clearance.
NeoUI offers three icon library packages to suit different design preferences:
-
Lucide Icons (
NeoUI.Icons.Lucide) - 1,640 beautiful, consistent stroke-based icons- ISC licensed
- 24x24 viewBox, 2px stroke width
- Perfect for: Modern, clean interfaces
-
Heroicons (
NeoUI.Icons.Heroicons) - 1,288 icons across 4 variants- MIT licensed by Tailwind Labs
- Variants: Outline (24x24), Solid (24x24), Mini (20x20), Micro (16x16)
- Perfect for: Tailwind-based designs, flexible sizing needs
-
Feather Icons (
NeoUI.Icons.Feather) - 286 minimalist stroke-based icons- MIT licensed
- 24x24 viewBox, 2px stroke width
- Perfect for: Simple, lightweight projects
NeoUI also includes 16 headless primitive components for building custom UI:
- Accordion Primitive
- Checkbox Primitive
- Collapsible Primitive
- Dialog Primitive
- Dropdown Menu Primitive
- Hover Card Primitive
- Label Primitive
- Popover Primitive
- Radio Group Primitive
- Select Primitive
- Sheet Primitive
- Sortable Primitive
- Switch Primitive
- Table Primitive
- Tabs Primitive
- Tooltip Primitive
All primitives are fully accessible, keyboard-navigable, and provide complete control over styling.
- Full shadcn/ui Compatibility - Drop-in Blazor equivalents of shadcn/ui components
- Zero Configuration - Pre-built CSS included, no Tailwind setup required
- π― .NET 10 Ready - Built for the latest .NET platform with Auto rendering mode
- Auto Rendering Mode - Seamless transition between Server and WebAssembly rendering
- π Dark Mode Support - Built-in light/dark theme switching with CSS variables
- π± Mobile-First & MAUI Hybrid Ready - Dedicated mobile components (AppBar, BottomNav, QuantityStepper, etc.) authored for Blazor mobile-first web apps and .NET MAUI Blazor Hybrid (
BlazorWebView), with safe-area insets and in-flow layout options - βΏ Accessibility First - WCAG 2.1 AA compliant with keyboard navigation and ARIA attributes
- β¨οΈ Keyboard Shortcuts - Native keyboard navigation support (e.g., Ctrl/Cmd+B for sidebar toggle)
- π State Persistence - Cookie-based state management for user preferences
- TypeScript-Inspired API - Familiar API design for developers coming from React/shadcn/ui
- Pure Blazor - No JavaScript dependencies, no Node.js required
- π¨ Icon Library Options - 3 separate icon packages (Lucide, Heroicons, Feather) with 3,200+ total icons
- Form Validation Ready - Works seamlessly with Blazor's form validation
- π¨ Style Variant System - 3-layer CSS merge pipeline with 7 named style variants (Luma, Nova, Maia, Lyra, Mira, Vega, Default); 50+ components fully wired
- π Luma Glassmorphism - Comprehensive glassmorphism variant: pill containers, frosted inputs, enhanced overlays β exact Blazor port of shadcn's Luma style
NeoUI is open source software licensed under the MIT License.
NeoUI is inspired by shadcn/ui and based on the design principles of Radix UI.
While NeoUI is a complete reimplementation for Blazor/C# and contains no code from these projects, we are grateful for their excellent work which inspired this library.
- shadcn/ui: MIT License - Copyright (c) 2023 shadcn
- Radix UI: MIT License - Copyright (c) 2022-present WorkOS
NeoUI is an independent project and is not affiliated with or endorsed by shadcn or Radix UI.
Additional Acknowledgments:
- Initial Blazor components inspiration by Mathew Taylor
- Tailwind CSS - Utility-first CSS framework
- Lucide Icons - Beautiful stroke-based icon library (ISC License)
- Heroicons - Icon library by Tailwind Labs (MIT License)
- Feather Icons - Minimalist icon library (MIT License)
- Built with β€οΈ for the Blazor community
- Current Version: 4.0.0
- Target Framework: .NET 10
- Package IDs:
NeoUI.BlazorNeoUI.Blazor.PrimitivesNeoUI.Icons.LucideNeoUI.Icons.HeroiconsNeoUI.Icons.Feather
Note: These packages were formerly known as BlazorUI.*. As of version 1.0.7, the assembly names have been updated to NeoUI.* to match the NuGet package IDs, ensuring consistent asset paths when consumed from NuGet.