```
### DropdownMenu
```razor
My AccountProfileSettingsLogout
```
### ContextMenu
```razor
Right-click me
CopyPasteDelete
@* Programmatic open at coordinates (3.6.2) *@
Action
@code {
ContextMenu? _ctxMenu;
// Open programmatically (e.g. on canvas click, virtual list row, etc.)
async Task OnCanvasClick(MouseEventArgs e) =>
await _ctxMenu!.OpenAt(e.ClientX, e.ClientY);
}
```
`X` / `Y` parameters on `ContextMenuContent` set a fixed position. `OpenAt(x, y)` opens at runtime coordinates.
### Tooltip
```razor
Helpful information
```
---
## Feedback
### Alert
```razor
NoteThis is an informational alert.
```
Variants: `Default` | `Info` | `Success` | `Warning` | `Destructive`
### Toast
```razor
@inject IToastService ToastService
@code {
void ShowToast() => ToastService.Show("Saved successfully!", ToastVariant.Success);
}
```
Variants: `Default` | `Success` | `Error` | `Warning` | `Info`
### Progress
```razor
```
### Spinner
```razor
```
Sizes: `Sm` | `Default` | `Lg`
---
## Layout
### Accordion
```razor
Is it accessible?Yes. It adheres to WAI-ARIA design patterns.Is it styled?Yes. Pre-built CSS with shadcn/ui design.
```
Types: `AccordionType.Single` | `AccordionType.Multiple`
### Tabs (requires interactive render mode)
```razor
AccountPasswordAccount settings...Password settings...
```
### Collapsible
```razor
Collapsible content here.
```
### Separator
```razor
@* horizontal *@
```
### Resizable
```razor
Left panelRight panel
```
### ButtonGroup
```razor
```
### ThemeSwitcher / DarkModeToggle
```razor
@* Full palette picker *@
@* Toggle light/dark *@
```
### DarkModeToggle
```razor
```
Sun/moon toggle that controls dark mode via `ThemeService`. Self-contained, no parameters needed.
---
## Charts (`@using NeoUI.Blazor.Charts`)
All charts accept `Data`, `Width`, `Height`, and chart-specific configuration.
```razor
@using NeoUI.Blazor.Charts
@* Pie with custom slice colors (3.6.3) *@
@* Funnel / conversion pipeline *@
@* Gauge — single KPI, multi-tile, or progress ring *@
@* Heatmap — requires XAxis, YAxis, VisualMap *@
@* Candlestick — OHLC financial chart *@
```
---
## Animation
### Carousel
```razor
Slide 1Slide 2Slide 3
```
### Motion
```razor
Animated content
```
20+ presets: `FadeIn`, `FadeOut`, `SlideInLeft`, `SlideInRight`, `SlideInUp`, `SlideInDown`,
`ZoomIn`, `ZoomOut`, `Bounce`, `Pulse`, `Shake`, `Spin`, and more.
### HeightAnimation
```razor
Animated height content
```
Animates height from `0` to `auto` when `Visible` changes. Zero JS required. See `components-full.txt` for full reference.
### PageTransition
```razor
@* In MainLayout.razor *@
@Body
```
Fade (+ optional slide-from-bottom) on page navigation. Requires `RenderStateProvider` ancestor. SSR-safe — no animation during prerender.
### RenderStateProvider
```razor
@* Wrap layout body *@
@Body
@* Consume in child components *@
@code {
[CascadingParameter] public AppRenderContext? RenderContext { get; set; }
// RenderContext.IsInteractive, .IsHydrating, .IsEnhancedNavigation
}
```
Cascades `AppRenderContext` to children. Required ancestor for `PageTransition`.
---
## DialogService (Programmatic Dialogs)
```csharp
// Program.cs
builder.Services.AddNeoUIComponents(); // includes IDialogService, ILocalizer
// Localization (3.6.4+) -- override built-in English strings at startup
builder.Services.AddNeoUIComponents(loc =>
{
loc.Set("Combobox.Placeholder", "Waehlen Sie...");
loc.Set("DataTable.Loading", "Laden...");
// 70+ keys -- see /components/localization for full key reference
});
// Option B: subclass DefaultLocalizer for .resx / IStringLocalizer integration
// builder.Services.AddScoped();
```
```razor
@inject IDialogService DialogService
@code {
async Task ShowConfirm()
{
var result = await DialogService.ShowAsync(
title: "Confirm Delete",
parameters: new() { ["Message"] = "Delete this item?" });
if (result.Confirmed)
await DeleteItem();
}
}
```
### DialogHost
```razor
@* In MainLayout.razor — place once *@
@* In a component *@
@inject IDialogService DialogService
@code {
async Task Delete()
{
var result = await DialogService.ShowAsync(new DialogOptions
{
Title = "Delete Item",
Message = "Are you sure?",
Buttons = DialogButtons.YesNo,
Variant = DialogVariant.Destructive,
Icon = "trash-2"
});
if (result == DialogResult.Confirmed)
await DeleteAsync();
}
}
```
`DialogButtons`: `OkOnly` | `OkCancel` | `YesNo` | `YesNoCancel`
`DialogVariant`: `Default` | `Destructive` | `Warning` | `Success` | `Info`
---
## New in 3.5 -- Advanced Components
### Timeline
```razor
@* With custom icons and content *@
Deployment complete2 hours agov3.5.0 deployed to production.
```
Statuses: `Pending` | `Active` | `Completed`
Aligns: `Left` | `Right` | `Alternate`
ConnectorStyles: `Solid` | `Dashed` | `Dotted`
Sizes: `Small` | `Default` | `Large`
---
### TreeView
```razor
@* Multi-select with tri-state checkboxes *@
```
SelectionModes: `None` | `Single` | `Multiple`
---
### DataView
```razor
@p.Name@p.Price.ToString("C")
@p.Name
@* Responsive grid with min column width (3.6.1) -- overrides GridColumns *@
@p.Name
@* Server-side infinite scroll *@
@o.Id
```
SelectionModes: `None` | `Single` | `Multiple`
Layouts: `List` | `Grid`
---
### DynamicForm
```razor
@* Define a schema *@
@code {
private FormSchema _schema = new()
{
Fields =
[
new FormFieldDefinition { Key = "name", Label = "Full Name", Type = FieldType.Text, IsRequired = true },
new FormFieldDefinition { Key = "email", Label = "Email", Type = FieldType.Email, IsRequired = true },
new FormFieldDefinition { Key = "role", Label = "Role", Type = FieldType.Select,
Options = [new("admin","Admin"), new("user","User")] },
]
};
private Dictionary _values = new();
}
```
FieldTypes: `Text` | `Email` | `Password` | `Number` | `Date` | `DateRange` | `Select` | `MultiSelect` |
`Checkbox` | `Switch` | `Slider` | `SliderRange` | `Textarea` | `Rating` | `ColorPicker` |
`TimePicker` | `FileUpload` | `InputOtp` | `MaskedInput` | `CurrencyInput` | `RichText` | `MarkdownEditor`
FormLayouts: `SingleColumn` | `TwoColumn`
---
### TagInput
```razor
@* With async suggestions *@
@code {
private List tags = new();
private async Task> SearchTags(string q) =>
await TagService.SearchAsync(q);
}
```
Variants: `Default` | `Outlined` | `Ghost`
Triggers (flags): `Enter` | `Comma` | `Tab` | `Space` | `Blur`
---
### SplitButton
```razor
Save as DraftSave as TemplateDiscard
@* With variant and icon *@
Deploy to StagingDeploy to Production
```
---
## New in 3.5 -- New Chart Types
All new charts use `@using NeoUI.Blazor.Charts`.
### CandlestickChart
```razor
```
### FunnelChart
```razor
@* Custom color palette (3.6.3) *@
```
Sorts: `Descending` | `Ascending` | `None`
`Colors` cycles through the array for each segment; `null` = auto `--chart-1…5` palette.
### GaugeChart
```razor
@* Single KPI *@
@* Multi-tile: each Gauge series drives one tile *@
@* Progress ring *@
@code { record Metric(string name, double value); }
```
### HeatmapChart
```razor
@code { record Cell(int hour, int day, int value); }
```
### RadialBarChart
```razor
```
---
## New in 3.8 -- SelectionIndicator + Sortable
### SelectionIndicator
Spring-animated indicator that slides between active items (e.g. tabs, toggle groups).
```razor
AlphaBeta
...
```
Parameters: `Selector` (string, default `[data-state=active]`), `Hover` (bool), `Class` (string?).
CSS variables: `--si-duration`, `--si-easing`, `--si-height`.
Works with: Tabs, ToggleGroup, RadioGroup, Pagination, and any custom markup using `data-state=active`.
### Sortable + Cross-list Drag-and-Drop
```razor
@item.Name
```
Cross-list DnD: share `Group` name across multiple `Sortable` instances.
```razor
@item.Name@item.Name
```
`SortableContent` exposes `data-[state=over]` attribute for visual drag-over feedback.
---
## New in 3.9 -- Mobile Components
### AppBar
Mobile top app bar with optional back button and right-side content slot.
```razor
```
### BottomNav + BottomNavItem
Persistent mobile tab bar pinned to the bottom of the screen.
```razor
```
### NotificationBadge
Wraps any element and overlays a count badge in the top-right corner.
```razor
```
Use `Dot="true"` for a dot indicator without a count. `ShowZero="true"` displays the badge when Count is 0.
### QuantityStepper
Circular +/- quantity control. `DestructiveAtMin` replaces the minus button with a trash icon at the minimum value.
```razor
```
### SectionHeader
Title row with an optional "view all" chevron and separator line.
```razor
```
### ScreenTransition
Animated wrapper for multi-screen navigation. Changing `Key` triggers the entrance animation.
```razor
@* current screen content *@
```
`ScreenTransitionDirection` enum: `None` (no animation) | `Tab` (fade-in) | `Push` (slide from right) | `Pop` (slide from left)
---
## New in 3.9 -- Component Enhancements
- **Carousel:** `DotsPosition` (`CarouselDotsPosition`: Bottom/Top/Left/Right, default Bottom). Drag-click suppression prevents accidental navigation.
- **Drawer:** `DrawerContent` gains `SnapPoints` (float[]?), `SnapIndex` (@bind, int), `ShowHandle` (bool). Bottom direction only.
- **Select:** `Presentation` (`SelectPresentation`: Popover/BottomSheet) -- BottomSheet opens options in a bottom Drawer.
- **Separator:** `LineStyle` (`SeparatorStyle`: Solid/Dashed/Dotted, default Solid).
- **ToggleGroup:** `Scrollable` (bool, false -- horizontal scroll strip), `Required` (bool, false -- prevents deselecting the active item).
- **BadgeIcon:** New sub-component -- renders an icon inside a Badge chip.
```razor
```
- **ScrollArea:** Non-horizontal instances no longer force `width:100%` on the inner container.
---
## New in 4.0 -- AppProvider + Theme v2
### AppProvider
Required wrapper in `MainLayout.razor` (v4.0.0+). Initializes ThemeService, restores the persisted theme from localStorage, and broadcasts the active `StyleVariant` as a CascadingValue to all child components.
```razor
@* MainLayout.razor *@
@Body
```
Theme v2 adds 6 new dimensions on top of base/primary colors: **StyleVariant** (visual style preset), **RadiusPreset** (named radius override), **FontPreset** (font pairing), **MenuColor** (floating surface treatment), **MenuAccent** (hover intensity), and **ThemePreset** (bundles all 8 dimensions). BaseColor expands to 10 values (5 new chromatic neutrals). See `theming.txt` for the complete reference.
==================================================================
FILE: components-full.txt
URL: https://neoui.io/llms/components-full.txt
==================================================================
# Comprehensive Component Reference
**NeoUI** - A comprehensive UI component library for Blazor inspired by shadcn/ui
Version: 3.6.7
Target Framework: .NET 10+
Last Updated: 2026-03-18
> **Import Note (NeoUI 3.x):** Add `@using NeoUI.Blazor` to `_Imports.razor` once to access all
> components globally. Chart components additionally require `@using NeoUI.Blazor.Charts`.
> Service interfaces (`IToastService`, `IDialogService`, etc.) require `@using NeoUI.Blazor.Services`.
---
## 📋 Table of Contents
### Styled Components (100+)
- [Accordion](#accordion)
- [Alert](#alert)
- [AlertDialog](#alertdialog)
- [AspectRatio](#aspectratio)
- [Avatar](#avatar)
- [Badge](#badge)
- [Breadcrumb](#breadcrumb)
- [Button](#button)
- [ButtonGroup](#buttongroup)
- [Calendar](#calendar)
- [Card](#card)
- [Carousel](#carousel)
- [Chart](#chart)
- [CandlestickChart](#candlestickchart)
- [Checkbox](#checkbox)
- [Collapsible](#collapsible)
- [ColorPicker](#colorpicker)
- [Combobox](#combobox)
- [Command](#command)
- [ContextMenu](#contextmenu)
- [CurrencyInput](#currencyinput)
- [DataGrid](#datagrid)
- [DataTable](#datatable)
- [DataView](#dataview)
- [DarkModeToggle](#darkmodetoggle)
- [DatePicker](#datepicker)
- [DateRangePicker](#daterangepicker)
- [Dialog](#dialog)
- [DialogHost](#dialoghost)
- [Drawer](#drawer)
- [DropdownMenu](#dropdownmenu)
- [DynamicForm](#dynamicform)
- [Empty](#empty)
- [Field](#field)
- [FileUpload](#fileupload)
- [FilterBuilder](#filterbuilder)
- [FunnelChart](#funnelchart)
- [GaugeChart](#gaugechart)
- [HeightAnimation](#heightanimation)
- [HeatmapChart](#heatmapchart)
- [HoverCard](#hovercard)
- [Input](#input)
- [InputGroup](#inputgroup)
- [InputOtp](#inputotp)
- [Item](#item)
- [Kbd](#kbd)
- [Label](#label)
- [MarkdownEditor](#markdowneditor)
- [MaskedInput](#maskedinput)
- [Menubar](#menubar)
- [Motion](#motion)
- [MultiSelect](#multiselect)
- [NativeSelect](#nativeselect)
- [NavigationMenu](#navigationmenu)
- [NumericInput](#numericinput)
- [Pagination](#pagination)
- [PageTransition](#pagetransition)
- [Popover](#popover)
- [Progress](#progress)
- [RadioGroup](#radiogroup)
- [RangeSlider](#rangeslider)
- [Rating](#rating)
- [Resizable](#resizable)
- [RenderStateProvider](#renderstateprovider)
- [ResponsiveNav](#responsivenav)
- [RichTextEditor](#richtexteditor)
- [ScrollArea](#scrollarea)
- [Select](#select)
- [Separator](#separator)
- [Sheet](#sheet)
- [Sidebar](#sidebar)
- [Skeleton](#skeleton)
- [Slider](#slider)
- [Spinner](#spinner)
- [SplitButton](#splitbutton)
- [Switch](#switch)
- [Tabs](#tabs)
- [TagInput](#taginput)
- [Textarea](#textarea)
- [ThemeSwitcher](#themeswitcher)
- [TimePicker](#timepicker)
- [Timeline](#timeline)
- [Toast](#toast)
- [Toggle](#toggle)
- [ToggleGroup](#togglegroup)
- [Tooltip](#tooltip)
- [TreeView](#treeview)
- [Typography](#typography)
---
## 🎨 Styled Components
Pre-styled components with shadcn/ui design, built on top of primitives.
### Accordion
**Package:** `NeoUI.Blazor`
**Namespace:** `NeoUI.Blazor`
**Installation:**
```bash
dotnet add package NeoUI.Blazor --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor
```
**Description:**
Vertically stacked collapsible content sections with smooth animations. Supports single or multiple panel expansion with keyboard navigation.
**Components & Parameters:**
#### `Accordion`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The child content to render within the accordion. Should include AccordionItem components. |
| `Value` | `HashSet?` | | Controls which items are open (controlled mode). |
| `ValueChanged` | `EventCallback>` | | Event callback invoked when the open items change. |
| `DefaultValue` | `HashSet?` | | Default open items when in uncontrolled mode. |
| `OnValueChange` | `EventCallback>` | | Event callback invoked when the open items change. |
| `Type` | `AccordionType` | `AccordionType.Single` | Type of accordion (single or multiple). |
| `Collapsible` | `bool` | `false` | Whether items can be collapsed when in single mode. |
| `Class` | `string?` | | Additional CSS classes to apply to the accordion. |
#### `AccordionContent`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ForceMount` | `bool` | `true` | Whether to force mount the content even when closed. When true (default), enables smooth CSS animations. When false, content unmounts when closed (no animation, lower memory). |
| `ChildContent` | `RenderFragment?` | | The child content to render when the item is open. |
| `Class` | `string?` | | Additional CSS classes to apply to the content. |
#### `AccordionItem`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Disabled` | `bool` | | Whether this accordion item is disabled. |
| `ChildContent` | `RenderFragment?` | | The child content to render within the accordion item. |
| `Class` | `string?` | | Additional CSS classes to apply to the accordion item. |
#### `AccordionTrigger`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The child content to render within the trigger. |
| `Class` | `string?` | | Additional CSS classes to apply to the trigger. |
**Basic Usage:**
```razor
Is it accessible?
Yes. It adheres to WCAG 2.1 AA standards.
Is it styled?
Yes. It comes with default shadcn/ui styles.
```
---
### Alert
**Package:** `NeoUI.Blazor`
**Namespace:** `NeoUI.Blazor`
**Installation:**
```bash
dotnet add package NeoUI.Blazor --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor
```
**Description:**
Status messages and callouts with multiple variants (default, destructive). Used to display important information to users.
**Components & Parameters:**
#### `Alert`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Variant` | `AlertVariant` | `AlertVariant.Default` | Gets or sets the visual style variant of the alert. Controls the color scheme and visual appearance using CSS custom properties. Default value is . |
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the alert. Custom classes are appended after the component's base classes, allowing for style overrides and extensions. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the alert. Typically contains AlertTitle, AlertDescription, and optionally an icon. For accessibility, ensure meaningful content is provided. |
#### `AlertDescription`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the alert description. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the alert description. |
#### `AlertTitle`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the alert title. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the alert title. |
**Basic Usage:**
```razor
@* Default alert *@
NoteThis is an informational message.
@* Destructive alert *@
ErrorSomething went wrong. Please try again.
@* With icon *@
InformationCheck your email for confirmation.
```
---
### AlertDialog
**Package:** `NeoUI.Blazor`
**Namespace:** `NeoUI.Blazor`
**Installation:**
```bash
dotnet add package NeoUI.Blazor --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor
```
**Description:**
Modal dialog for critical confirmations requiring user action. Prevents accidental destructive actions with explicit confirm/cancel buttons.
**Components & Parameters:**
#### `AlertDialog`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The child content to render within the alert dialog. |
| `Open` | `bool?` | | Controls whether the alert dialog is open (controlled mode). When null, the dialog manages its own state (uncontrolled mode). |
| `OpenChanged` | `EventCallback` | | Event callback invoked when the open state changes. Use with @bind-Open for two-way binding. |
| `DefaultOpen` | `bool` | `false` | Default open state when in uncontrolled mode. |
| `OnOpenChange` | `EventCallback` | | Event callback invoked when the dialog open state changes. |
#### `AlertDialogAction`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The content to render as the action button. |
#### `AlertDialogCancel`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The content to render as the cancel button. |
#### `AlertDialogContent`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The content to render inside the alert dialog. |
| `Class` | `string?` | | Additional CSS classes to apply to the alert dialog content. |
| `CloseOnEscape` | `bool` | `true` | Whether the alert dialog can be closed with the Escape key. Default is true for accessibility. |
#### `AlertDialogDescription`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | |
| `ChildContent` | `RenderFragment?` | | |
#### `AlertDialogFooter`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | |
| `ChildContent` | `RenderFragment?` | | |
#### `AlertDialogHeader`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | |
| `ChildContent` | `RenderFragment?` | | |
#### `AlertDialogTitle`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | |
| `ChildContent` | `RenderFragment?` | | |
#### `AlertDialogTrigger`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The content to render as the trigger. |
**Basic Usage:**
```razor
Are you absolutely sure?
This action cannot be undone. This will permanently delete your account.
```
---
### AspectRatio
**Package:** `NeoUI.Blazor`
**Namespace:** `NeoUI.Blazor`
**Installation:**
```bash
dotnet add package NeoUI.Blazor --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor
```
**Description:**
Display content within a desired width/height ratio. Maintains consistent proportions across different screen sizes.
**Components & Parameters:**
#### `AspectRatio`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The content to render within the aspect ratio container. |
| `Ratio` | `double` | `1.0` | The desired aspect ratio (width / height). Default is 1 (square). Common values: 16/9 = 1.778, 4/3 = 1.333, 1/1 = 1. |
| `Class` | `string?` | | Additional CSS classes to apply to the container. |
**Basic Usage:**
```razor
@* 16:9 video container *@
@* Square 1:1 *@
@* 4:3 classic *@
```
---
### Avatar
**Package:** `NeoUI.Blazor`
**Namespace:** `NeoUI.Blazor`
**Installation:**
```bash
dotnet add package NeoUI.Blazor --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor
```
**Description:**
User avatars with image fallback support. Displays user profile pictures with automatic fallback to initials or placeholder.
**Components & Parameters:**
#### `Avatar`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to render inside the avatar. Typically contains AvatarImage and AvatarFallback components. The first successfully loaded content will be displayed. |
| `Size` | `AvatarSize` | `AvatarSize.Default` | Gets or sets the size variant of the avatar. Controls the dimensions and font-size of the avatar. Default value is . |
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the avatar container. Custom classes are appended after the component's base classes, allowing for style overrides and extensions. |
#### `AvatarFallback`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to render as fallback. Typically contains: - User initials (e.g., "JD" for John Doe) - An icon component (e.g., LucideIcon with "user") - Custom markup or components Content is automatically centered within the avatar. |
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the fallback container. Custom classes are appended after the component's base classes, allowing for style overrides such as custom background colors. |
#### `AvatarImage`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Source` | `string?` | | Gets or sets the URL of the image to display. Should be a valid image URL. If the image fails to load, the component will hide and defer to AvatarFallback. |
| `Alt` | `string?` | | Gets or sets the alternative text for the image. Essential for accessibility. Screen readers use this to describe the image to visually impaired users. Should describe who the avatar represents (e.g., "John Doe", "User avatar"). |
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the image. Custom classes are appended after the component's base classes. |
**Basic Usage:**
```razor
@* Avatar with image *@
UN
@* Avatar with fallback initials *@
JD
@* Avatar group *@
U1U2
```
---
### Badge
**Package:** `NeoUI.Blazor`
**Namespace:** `NeoUI.Blazor`
**Installation:**
```bash
dotnet add package NeoUI.Blazor --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor
```
**Description:**
Status badges and labels with multiple variants. Used to highlight status, categories, or counts.
**Components & Parameters:**
#### `Badge`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Variant` | `BadgeVariant` | `BadgeVariant.Default` | Gets or sets the visual style variant of the badge. Controls the color scheme and visual appearance using CSS custom properties. Default value is . |
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the badge. Custom classes are appended after the component's base classes, allowing for style overrides and extensions. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the badge. Typically contains short text (1-2 words) or a small number. For accessibility, ensure the content is meaningful. |
**Basic Usage:**
```razor
@* Default badge *@
Default
@* Variant badges *@
SecondaryDestructiveOutline
@* With icon *@
Verified
```
---
### Breadcrumb
**Package:** `NeoUI.Blazor`
**Namespace:** `NeoUI.Blazor`
**Installation:**
```bash
dotnet add package NeoUI.Blazor --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor
```
**Description:**
Hierarchical navigation with customizable separators. Shows current location within site hierarchy.
**Components & Parameters:**
#### `Breadcrumb`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `AriaLabel` | `string` | `"breadcrumb"` | Gets or sets the aria-label for the breadcrumb navigation. Provides accessible label for screen readers. Default value is "breadcrumb". |
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the breadcrumb. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the breadcrumb. |
#### `BreadcrumbEllipsis`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the breadcrumb ellipsis. |
#### `BreadcrumbItem`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the breadcrumb item. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the breadcrumb item. |
#### `BreadcrumbLink`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Href` | `string?` | | Gets or sets the href attribute for the link. |
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the breadcrumb link. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the breadcrumb link. |
#### `BreadcrumbList`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the breadcrumb list. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the breadcrumb list. |
#### `BreadcrumbPage`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the breadcrumb page. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the breadcrumb page. |
#### `BreadcrumbSeparator`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the breadcrumb separator. |
| `ChildContent` | `RenderFragment?` | | Gets or sets custom content for the separator. If not provided, a default chevron icon is used. |
**Basic Usage:**
```razor
HomeProductsProduct Details
```
---
### Button
**Package:** `NeoUI.Blazor`
**Namespace:** `NeoUI.Blazor`
**Installation:**
```bash
dotnet add package NeoUI.Blazor --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor
```
**Description:**
Interactive button component with multiple variants (default, destructive, outline, secondary, ghost, link) and sizes. Supports icons, disabled states, and full keyboard navigation.
**Components & Parameters:**
#### `Button`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Variant` | `ButtonVariant` | `ButtonVariant.Default` | Gets or sets the visual style variant of the button. Controls the color scheme and visual appearance using CSS custom properties. Default value is . |
| `Size` | `ButtonSize` | `ButtonSize.Default` | Gets or sets the size of the button. Controls padding, font size, and overall dimensions. Default value is . All sizes maintain minimum touch target sizes (44x44px) for accessibility. |
| `Type` | `ButtonType` | `ButtonType.Button` | Gets or sets the HTML button type attribute. Controls form submission behavior when button is inside a form. Default value is to prevent accidental form submissions. |
| `Disabled` | `bool` | | Gets or sets whether the button is disabled. When disabled: - Button cannot be clicked or focused - Opacity is reduced (via disabled:opacity-50 Tailwind class) - Pointer events are disabled (via disabled:pointer-events-none) - aria-disabled attribute is set to true |
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the button. Custom classes are appended after the component's base classes, allowing for style overrides and extensions. |
| `OnClick` | `EventCallback` | | Gets or sets the callback invoked when the button is clicked. The event handler receives a parameter with click details. If the button is disabled, this callback will not be invoked. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the button. Can contain text, icons, or any other Blazor markup. For icon-only buttons, use and provide an aria-label. |
| `AriaLabel` | `string?` | | Gets or sets the ARIA label for the button. Required for icon-only buttons to provide accessible text for screen readers. Optional for buttons with text content. |
| `Icon` | `RenderFragment?` | | Gets or sets the icon to display in the button. Can be any RenderFragment (SVG, icon font, image). Position is controlled by . Automatically adds RTL-aware spacing between icon and text. |
| `IconPosition` | `IconPosition` | `IconPosition.Start` | Gets or sets the position of the icon relative to the button text. Default value is (before text in LTR). Automatically adapts to RTL layouts using Tailwind directional utilities. |
**Basic Usage:**
```razor
@* Simple button *@
@* With variant and size *@
@* With icon *@
@* Icon-only button *@
```
---
### ButtonGroup
**Package:** `NeoUI.Blazor`
**Namespace:** `NeoUI.Blazor`
**Installation:**
```bash
dotnet add package NeoUI.Blazor --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor
```
**Description:**
Visually grouped related buttons with connected styling. Groups multiple buttons as a cohesive unit with shared borders.
**Components & Parameters:**
#### `ButtonGroup`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Orientation` | `ButtonGroupOrientation` | `ButtonGroupOrientation.Horizontal` | Gets or sets the orientation of the button group. Controls whether buttons are arranged horizontally (default) or vertically. Default value is . |
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the button group. Custom classes are appended after the component's base classes, allowing for style overrides and extensions. |
| `AriaLabel` | `string?` | | Gets or sets the ARIA label for the button group. Provides an accessible name for the group when role="group" is used. Important for screen reader users to understand the group's purpose. Recommended for button groups that perform a specific function (e.g., "Text formatting", "Email actions"). |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the button group. Typically contains Button components, but can also contain nested ButtonGroup components for creating complex layouts. |
#### `ButtonGroupSeparator`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Orientation` | `SeparatorOrientation` | `SeparatorOrientation.Vertical` | Gets or sets the orientation of the separator. Should match the parent ButtonGroup's orientation. Default value is (for horizontal button groups). |
| `Decorative` | `bool` | `true` | Gets or sets whether the separator is purely decorative. When true (default), the separator is treated as decorative and hidden from assistive technologies. |
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the separator. Custom classes are appended after the component's base classes, allowing for style overrides and extensions. |
#### `ButtonGroupText`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the text container. Custom classes are appended after the component's base classes, allowing for style overrides and extensions. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the text container. Can contain text, icons, or any other markup. Icons will automatically be sized to match the button group's icon size. |
**Basic Usage:**
```razor
@* With active state *@
```
---
### Calendar
**Package:** `NeoUI.Blazor`
**Namespace:** `NeoUI.Blazor`
**Installation:**
```bash
dotnet add package NeoUI.Blazor --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor
```
**Description:**
Date selection grid with month navigation. Interactive calendar for selecting single dates or date ranges.
**Components & Parameters:**
#### `Calendar`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `SelectedDate` | `DateOnly?` | | The currently selected date. |
| `SelectedDateChanged` | `EventCallback` | | Event callback invoked when the selected date changes. |
| `MinDate` | `DateOnly?` | | The minimum selectable date. |
| `MaxDate` | `DateOnly?` | | The maximum selectable date. |
| `Culture` | `CultureInfo` | `CultureInfo.CurrentCulture` | The culture to use for formatting. Default is the current culture. |
| `InitialMonth` | `DateOnly?` | | The initial month to display. Defaults to the selected date's month or current month. |
| `IsDateDisabled` | `Func?` | | Function to determine if a specific date is disabled. |
| `Class` | `string?` | | Additional CSS classes to apply to the calendar. |
| `RowClass` | `string?` | | Additional CSS classes to apply to each week row in the day grid. |
| `CaptionLayout` | `CalendarCaptionLayout` | `CalendarCaptionLayout.Label` | The caption layout mode for month/year display. Default is Label (static text). Dropdown allows quick month/year selection. |
| `YearRange` | `int` | `20` | The number of years to show before and after the current year in dropdown mode. Default is 20 years in each direction. |
| `RangeStart` | `DateOnly?` | | The start date of a range selection (for visual styling). |
| `RangeEnd` | `DateOnly?` | | The end date of a range selection (for visual styling). |
| `DisplayedMonthChanged` | `EventCallback` | | Event callback invoked when the displayed month changes. This fires whenever the user navigates to a different month via buttons, keyboard, or dropdown. |
**Basic Usage:**
```razor
@* Simple calendar *@
@* Date range calendar *@
@* With disabled dates *@
@code {
private DateTime? selectedDate = DateTime.Today;
private DateRange? dateRange;
private HashSet disabledDates = new() { DateTime.Today.AddDays(1) };
}
```
---
### Card
**Package:** `NeoUI.Blazor`
**Namespace:** `NeoUI.Blazor`
**Installation:**
```bash
dotnet add package NeoUI.Blazor --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor
```
**Description:**
Container for grouped content with header, body, and footer sections. Flexible component for displaying information, forms, or actions.
**Components & Parameters:**
#### `Card`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the card. Typically contains CardHeader, CardContent, and CardFooter components. Can contain any Blazor markup. |
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the card. Custom classes are appended after the component's base classes, allowing for style overrides and extensions. |
#### `CardAction`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered in the card action area. |
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the card action area. |
#### `CardContent`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the card content area. |
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the card content. |
#### `CardDescription`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered as the card description. |
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the card description. |
#### `CardFooter`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the card footer. |
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the card footer. |
#### `CardHeader`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the card header. Typically contains CardTitle, CardDescription, and optionally CardAction. |
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the card header. |
#### `CardTitle`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered as the card title. |
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the card title. |
**Basic Usage:**
```razor
Card TitleCard description goes here
Main content of the card.
```
---
### Carousel
**Package:** `NeoUI.Blazor`
**Namespace:** `NeoUI.Blazor`
**Installation:**
```bash
dotnet add package NeoUI.Blazor --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor
```
**Description:**
Slideshow component with touch gestures and animations. Displays content in a rotating carousel with navigation controls.
**Components & Parameters:**
#### `Carousel`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The child content containing CarouselItem components. |
| `Orientation` | `CarouselOrientation` | `CarouselOrientation.Horizontal` | Orientation of the carousel. Default is Horizontal. |
| `ShowNavigation` | `bool` | `true` | Whether to show navigation arrows. Default is true. |
| `ShowIndicators` | `bool` | `false` | Whether to show dot indicators. Default is false. |
| `AutoPlay` | `bool` | `false` | Whether to enable auto-play. Default is false. |
| `AutoPlayInterval` | `int` | `3000` | Auto-play interval in milliseconds. Default is 3000. |
| `Loop` | `bool` | `false` | Whether to enable loop (infinite scroll). Default is false. |
| `SlidesPerView` | `int` | `1` | Number of slides to show at once. Default is 1. |
| `Gap` | `int` | `0` | Gap between slides in pixels. Default is 0. |
| `EnableDrag` | `bool` | `false` | Whether to enable drag gestures. Default is false. |
| `Class` | `string?` | | Additional CSS classes for the carousel container. |
| `ContentClass` | `string?` | | Additional CSS classes for the inner content container that holds the slides. |
| `OnSlideChange` | `EventCallback` | | Event callback invoked when the current slide index changes. |
#### `CarouselItem`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The content of the carousel item. |
| `Class` | `string?` | | Additional CSS classes for the item. |
**Basic Usage:**
```razor
Slide 1
Slide 2
```
---
### Chart
**Package:** `NeoUI.Blazor.Charts`
**Namespace:** `NeoUI.Blazor.Charts`
**Installation:**
```bash
dotnet add package NeoUI.Blazor.Charts --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor.Charts
```
**Description:**
Beautiful data visualizations with multiple chart types including Area, Bar, Composed, Line, Pie, Radar, Radial Bar, and Scatter charts.
**Components & Parameters:**
#### `Area`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Color` | `string?` | | Gets or sets the area color (legacy, use Fill instead). |
| `Emphasis` | `bool` | `false` | Gets or sets whether emphasis is enabled. |
| `Focus` | `Focus` | `Focus.None` | Gets or sets the focus behavior. |
| `ShowDots` | `bool` | `false` | Gets or sets whether to show dots at data points. |
| `LineWidth` | `int` | `1` | Gets or sets the line width in pixels. |
| `Opacity` | `double?` | | Gets or sets the opacity for the area fill (0.0 to 1.0). Maps to series.areaStyle.opacity. If Fill.Opacity is also set, Fill.Opacity takes precedence. |
| `StackId` | `string?` | | Gets or sets the stack group ID for stacked areas. |
| `Interpolation` | `InterpolationType` | `InterpolationType.Natural` | Gets or sets the interpolation type for the area. |
#### `AreaChart`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `StackOffset` | `StackOffset` | `StackOffset.None` | Gets or sets the stack offset mode for percentage stacking. |
#### `AxisLabel`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Show` | `bool?` | | Gets or sets whether to show axis labels. |
| `Rotate` | `int?` | | Gets or sets the rotation angle in degrees (clockwise). Common value: -45. |
| `Formatter` | `string?` | | Gets or sets the formatter string. Can be an ECharts template string or JavaScript function. Examples: "{value}", "function(value) { return value + '%'; }" |
| `Interval` | `int?` | | Gets or sets the interval for showing labels. Shows every Nth label. |
| `Inside` | `bool?` | | Gets or sets whether to render labels inside the chart area. |
| `Margin` | `int?` | | Gets or sets the distance to the axis line in pixels. |
| `HideOverlap` | `bool?` | | Gets or sets whether to hide overlapping labels. |
| `Color` | `string?` | | Gets or sets the label color. CSS variable or hex color. |
| `FontSize` | `int?` | | Gets or sets the font size in pixels. |
| `FontFamily` | `string?` | | Gets or sets the font family. |
| `FontWeight` | `string?` | | Gets or sets the font weight. E.g., "normal", "bold", "600". |
| `LineHeight` | `int?` | | Gets or sets the line height in pixels. |
| `Align` | `string?` | | Gets or sets the horizontal text alignment. E.g., "left", "center", "right". |
| `VerticalAlign` | `string?` | | Gets or sets the vertical text alignment. E.g., "top", "middle", "bottom". |
| `Overflow` | `string?` | | Gets or sets the overflow behavior. E.g., "truncate", "break", "breakAll". |
| `Width` | `int?` | | Gets or sets the maximum width for label text. |
| `Ellipsis` | `string?` | | Gets or sets the ellipsis character for truncated text. |
#### `Bar`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Color` | `string?` | | Gets or sets the bar color (legacy, use Fill instead). |
| `Emphasis` | `bool` | `false` | Gets or sets whether emphasis is enabled. |
| `Focus` | `Focus` | `Focus.None` | Gets or sets the focus behavior. |
| `StackId` | `string?` | | Gets or sets the stack group ID for stacked bars. |
| `Radius` | `int?` | | Gets or sets the border radius for bar corners. |
| `Opacity` | `double?` | | Gets or sets the opacity for the bars (0.0 to 1.0). Maps to series.itemStyle.opacity. |
#### `BarChart`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Layout` | `BarLayout` | `BarLayout.Vertical` | Gets or sets the bar chart layout (vertical or horizontal). |
| `StackOffset` | `StackOffset` | `StackOffset.None` | Gets or sets the stack offset mode for percentage stacking. |
#### `CenterLabel`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Text` | `string?` | | Gets or sets the text to display in the center. |
| `FontSize` | `double?` | | Gets or sets the font size. |
| `Color` | `string?` | | Gets or sets the text color. |
| `FontWeight` | `string?` | | Gets or sets the font weight. |
#### `ChartContainer`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Gets or sets additional CSS classes. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the child content. |
#### `ChartDescription`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | Gets or sets the child content. |
#### `ChartEmptyState`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Height` | `int` | `350` | Gets or sets the height of the empty state in pixels. |
| `Title` | `string` | `"No data available"` | Gets or sets the title text to display. |
| `Description` | `string?` | | Gets or sets the description text to display. |
| `ShowIcon` | `bool` | `true` | Gets or sets whether to show the chart icon. |
| `Content` | `RenderFragment?` | | Gets or sets custom content to display instead of the default message. |
| `Class` | `string?` | | Gets or sets additional CSS classes. |
#### `ChartHeader`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | Gets or sets the child content. |
#### `ChartSkeleton`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Height` | `int` | `350` | Gets or sets the height of the skeleton in pixels. |
| `BarCount` | `int` | `8` | Gets or sets the number of skeleton bars to display. |
| `Class` | `string?` | | Gets or sets additional CSS classes. |
#### `ChartTitle`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | Gets or sets the child content. |
#### `ComposedChart`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| *(No parameters)* | | | |
#### `Fill`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Color` | `string?` | | Gets or sets the fill color. |
| `Opacity` | `double?` | | Gets or sets the fill opacity. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the child content (for LinearGradient). |
#### `Grid`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Show` | `bool` | `true` | Gets or sets whether to show grid lines. |
| `Horizontal` | `bool` | `true` | Gets or sets whether to show horizontal grid lines. |
| `Vertical` | `bool` | `true` | Gets or sets whether to show vertical grid lines. |
| `Stroke` | `string?` | | Gets or sets the stroke color for grid lines. |
| `StrokeWidth` | `int?` | | Gets or sets the stroke width for grid lines in pixels. Maps to grid line lineStyle.width. |
| `StrokeType` | `LineStyleType` | `LineStyleType.Solid` | Gets or sets the stroke/line type for grid lines. Maps to grid line lineStyle.type. |
| `Opacity` | `double?` | | Gets or sets the opacity for grid lines (0.0 to 1.0). Maps to grid line lineStyle.opacity. |
#### `LabelLine`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Show` | `bool` | `true` | Whether to show the label line. |
| `Length` | `double?` | | Length of the first segment (in pixels). |
| `Length2` | `double?` | | Length of the second segment (in pixels). |
| `Smooth` | `bool?` | | Whether to use smooth curved lines. When true, label lines will be smoothly curved. When false or null, label lines will be straight. |
#### `LabelList`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Position` | `LabelPosition` | `LabelPosition.Top` | Label position. |
| `Formatter` | `string?` | | Label formatter (template string or JS function string). |
| `Color` | `string?` | | Label text color. |
| `FontSize` | `double?` | | Label font size. |
| `Offset` | `double?` | | Label offset from data point. |
| `Show` | `bool` | `true` | Whether to show labels. |
#### `Legend`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Show` | `bool` | `true` | Gets or sets whether to show the legend. |
| `Layout` | `LegendLayout` | `LegendLayout.Horizontal` | Gets or sets the legend layout orientation. |
| `Align` | `LegendAlign` | `LegendAlign.Center` | Gets or sets the horizontal alignment of the legend. |
| `VerticalAlign` | `LegendVerticalAlign` | `LegendVerticalAlign.Top` | Gets or sets the vertical alignment of the legend. |
| `MarginTop` | `int` | `0` | Gets or sets the top margin in pixels (applies only when VerticalAlign is Top). |
| `Icon` | `LegendIcon` | `LegendIcon.Circle` | Gets or sets the icon type for legend items. Maps to ECharts legend.icon property. |
| `TextColor` | `string?` | | Gets or sets the text color for legend labels. Supports CSS variables like 'var(--foreground)'. |
#### `Line`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Color` | `string?` | | Gets or sets the line color (legacy, use Fill instead). |
| `Emphasis` | `bool` | `false` | Gets or sets whether emphasis is enabled. |
| `Focus` | `Focus` | `Focus.None` | Gets or sets the focus behavior. |
| `ShowDots` | `bool` | `false` | Gets or sets whether to show dots at data points. |
| `DotSize` | `int` | `4` | Gets or sets the size of dots/symbols at data points in pixels. Maps to series.symbolSize. |
| `DotShape` | `SymbolShape` | `SymbolShape.EmptyCircle` | Gets or sets the shape of dots/symbols at data points. Maps to series.symbol. |
| `LineWidth` | `int` | `1` | Gets or sets the line width in pixels. |
| `Opacity` | `double?` | | Gets or sets the opacity for the line (0.0 to 1.0). Maps to series.lineStyle.opacity or itemStyle.opacity. |
| `Dashed` | `bool` | `false` | Gets or sets whether the line should be dashed. |
| `Interpolation` | `InterpolationType` | `InterpolationType.Natural` | Gets or sets the interpolation type for the line. |
#### `LineChart`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| *(No parameters)* | | | |
#### `LinearGradient`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Direction` | `GradientDirection` | `GradientDirection.Vertical` | Gets or sets the gradient direction. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the child content (for Stop components). |
#### `Pie`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `InnerRadius` | `string?` | | Gets or sets the inner radius for donut charts (e.g., "60" or "60%"). |
| `OuterRadius` | `string` | `"75%"` | Gets or sets the outer radius (e.g., "75%", "80%", "200"). Controls the overall size of the pie chart. |
| `StartAngle` | `int` | `90` | Gets or sets the start angle in degrees (0-360). 90 = top, 0 = right, 180 = bottom, 270 = left. |
| `EndAngle` | `int` | `450` | Gets or sets the end angle in degrees. For full circle: StartAngle + 360. For semi-circle gauge: StartAngle + 180. |
| `RoseType` | `string?` | | Gets or sets the rose chart type. "radius" - radius represents value (Nightingale rose chart). "area" - area represents value. null - normal pie chart. |
| `PadAngle` | `int` | `0` | Gets or sets the padding angle between slices in degrees. |
| `Center` | `string[]?` | | Gets or sets the center position as [x, y] (e.g., ["50%", "50%"]). |
| `SelectedMode` | `string?` | | Gets or sets the selection mode. "single" - single slice selection. "multiple" - multiple slice selection. null/false - no selection. |
| `SelectedOffset` | `int` | `10` | Gets or sets the offset distance when slice is selected (pixels). |
| `MinAngle` | `int` | `0` | Gets or sets the minimum angle for a slice to be visible (degrees). Small value slices below this threshold will be hidden. |
| `Colors` | `string[]?` | | Custom color palette for slices. Colors are distributed by index and wrap automatically. `null` = auto CSS-variable palette (`--chart-1` … `--chart-5`). |
| `ShowLabelLine` | `bool` | `true` | Gets or sets whether to show label lines. |
| `EmphasisScale` | `bool?` | | Gets or sets whether to enable emphasis (hover) scaling. |
| `EmphasisScaleSize` | `int?` | | Gets or sets the emphasis scale size in pixels (default 5-10). |
| `EmphasisFocus` | `string?` | | Gets or sets the emphasis focus mode ("self", "series", "none"). |
| `EmphasisShowLabel` | `bool?` | | Gets or sets whether to show labels on hover (emphasis). |
| `EmphasisLabelFormatter` | `string?` | | Gets or sets the label formatter for emphasis state. |
#### `PieChart`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| *(No parameters)* | | | |
#### `PolarGrid`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Type` | `PolarGridType` | `PolarGridType.Circle` | Gets or sets the grid type (Circle or Polygon). |
| `Show` | `bool` | `true` | Gets or sets whether to show the grid. |
| `Stroke` | `string?` | | Gets or sets the grid line color. |
| `StrokeWidth` | `int?` | | Gets or sets the grid line width. |
| `SplitNumber` | `int` | `5` | Gets or sets the number of split levels (concentric rings). |
| `ShowAxisLine` | `bool` | `true` | Gets or sets whether to show the angle axis line. |
| `ShowSplitLine` | `bool` | `true` | Gets or sets whether to show split lines. |
#### `Radar`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Color` | `string?` | | Gets or sets the series color (legacy, use Fill instead). |
| `Emphasis` | `bool` | `false` | Gets or sets whether emphasis is enabled. |
| `Focus` | `Focus` | `Focus.None` | Gets or sets the focus behavior. |
| `FillArea` | `bool` | `false` | Gets or sets whether to fill the radar area. |
| `AreaOpacity` | `double?` | | Gets or sets the area fill opacity (0.0 to 1.0). Only applies when FillArea is true. |
| `LineWidth` | `int` | `2` | Gets or sets the line width in pixels. |
#### `RadarChart`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| *(No parameters)* | | | |
#### `RadarGrid`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Shape` | `RadarShape` | `RadarShape.Polygon` | Gets or sets the radar grid shape. |
| `SplitNumber` | `int` | `5` | Gets or sets the number of split levels (concentric grid lines). |
| `Radius` | `string` | `"75%"` | Gets or sets the radar radius relative to container (e.g., "75%", "200"). |
| `Center` | `string[]?` | | Gets or sets the center position [x, y] (e.g., ["50%", "50%"]). |
| `ShowAxisLine` | `bool` | `true` | Gets or sets whether to show axis lines (spokes). |
| `ShowSplitLine` | `bool` | `true` | Gets or sets whether to show split lines (rings). |
| `AxisLineColor` | `string?` | | Gets or sets the axis line color. |
| `AxisLineWidth` | `int?` | | Gets or sets the axis line width. |
| `SplitLineColor` | `string?` | | Gets or sets the split line color. |
| `SplitLineWidth` | `int?` | | Gets or sets the split line width. |
| `ShowIndicatorLabels` | `bool` | `true` | Gets or sets whether to show radar indicator labels (axis names like "Coding", "Design", etc.). |
| `IndicatorColor` | `string?` | | Gets or sets the text color for radar indicator labels. Supports CSS variables like 'var(--foreground)'. |
| `IndicatorFontSize` | `int?` | | Gets or sets the font size for radar indicator labels. |
| `IndicatorFontWeight` | `string?` | | Gets or sets the font weight for radar indicator labels (e.g., "normal", "bold"). |
| `ChildContent` | `RenderFragment?` | | Gets or sets the child content. |
#### `RadialBar`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Color` | `string?` | | Gets or sets the series color (legacy, use Fill instead). |
| `InnerRadius` | `string?` | | Gets or sets the inner radius (e.g., "60%" or "60"). |
| `OuterRadius` | `string?` | | Gets or sets the outer radius (e.g., "80%" or "80"). |
| `CornerRadius` | `int?` | | Gets or sets the corner radius for rounded bars. |
| `StackId` | `string?` | | Gets or sets the stack group ID for stacked radial bars. |
| `ShowBackground` | `bool` | `false` | Gets or sets whether to show a background track. |
| `BackgroundColor` | `string?` | | Gets or sets the background track color. |
| `BackgroundOpacity` | `double?` | `0.1` | Gets or sets the background track opacity (0.0 to 1.0). |
#### `RadialBarChart`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `StartAngle` | `int` | `90` | Gets or sets the start angle in degrees (0-360). 90 = top, 0 = right, 180 = bottom, 270 = left. |
| `EndAngle` | `int` | `450` | Gets or sets the end angle in degrees. For full circle: 450 (90 + 360). For semi-circle gauge: 270 (90 + 180). |
| `Clockwise` | `bool` | `true` | Gets or sets whether angle axis runs clockwise. |
| `RadiusMin` | `double?` | `0` | Gets or sets the minimum value for the radius axis. |
| `RadiusMax` | `double?` | | Gets or sets the maximum value for the radius axis. |
#### `Scatter`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Color` | `string?` | | Gets or sets the marker color (legacy, use Fill instead). Note: Scatter uses XAxis.DataKey and YAxis.DataKey for X/Y coordinates. |
| `SymbolSize` | `int` | `10` | Gets or sets the size of scatter symbols in pixels. Maps to series.symbolSize. |
| `Symbol` | `SymbolShape` | `SymbolShape.Circle` | Gets or sets the shape of scatter symbols. Maps to series.symbol. |
| `Emphasis` | `bool` | `false` | Gets or sets whether emphasis is enabled. |
| `Focus` | `Focus` | `Focus.None` | Gets or sets the focus behavior. |
| `SymbolSizeFunction` | `string?` | | Gets or sets a JavaScript function string to dynamically calculate symbol size. Example: "function(data) { return data[2] / 100; }" for bubble charts. If set, overrides SymbolSize parameter. |
| `SymbolRotate` | `int?` | | Gets or sets the symbol rotation in degrees. |
| `BorderColor` | `string?` | | Gets or sets the border color for scatter symbols. |
| `BorderWidth` | `int?` | | Gets or sets the border width for scatter symbols in pixels. |
| `Large` | `bool` | `false` | Gets or sets whether to enable large dataset optimization (10K+ points). |
| `LargeThreshold` | `int?` | `2000` | Gets or sets the threshold for enabling large mode automatically. |
| `Progressive` | `int?` | | Gets or sets the progressive rendering chunk size for huge datasets. |
| `Clip` | `bool` | `true` | Gets or sets whether to clip points outside axis range. |
#### `ScatterChart`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| *(No parameters)* | | | |
#### `Stop`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Opacity` | `double?` | | Gets or sets the opacity at this stop. |
#### `Tooltip`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Show` | `bool` | `true` | Gets or sets whether to show the tooltip. |
| `Mode` | `TooltipMode?` | | Gets or sets the tooltip trigger mode. Default depends on chart type (see spec section 4.4). |
| `Cursor` | `TooltipCursor` | `TooltipCursor.None` | Gets or sets the cursor/axis pointer type. |
| `Formatter` | `string?` | | Gets or sets the formatter string. Can be either an ECharts template string or a JavaScript function as a string. Examples: - Template: "{b}: {c}" - Function: "function(params) { return params.name + ': ' + params.value; }" |
| `BackgroundColor` | `string?` | | Gets or sets the background color for the tooltip. Maps to tooltip.backgroundColor. |
| `BorderColor` | `string?` | | Gets or sets the border color for the tooltip. Maps to tooltip.borderColor. |
| `BorderWidth` | `int?` | | Gets or sets the border width for the tooltip in pixels. Maps to tooltip.borderWidth. |
| `TextColor` | `string?` | | Gets or sets the text color for the tooltip. Maps to tooltip.textStyle.color. |
| `AppendToBody` | `bool?` | | When `true`, appends the tooltip DOM to `document.body` instead of nesting inside the chart container. Prevents clipping inside `overflow:hidden` ancestors. Maps to ECharts `tooltip.appendToBody`. |
#### `XAxis`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Show` | `bool` | `true` | Gets or sets whether to show the X axis. |
| `DataKey` | `string?` | | Gets or sets the data key for X axis values. |
| `Scale` | `AxisScale` | `AxisScale.Auto` | Gets or sets the scale type for the axis. |
| `Min` | `double?` | | Gets or sets the minimum value for the axis. Maps to xAxis.min. |
| `Max` | `double?` | | Gets or sets the maximum value for the axis. Maps to xAxis.max. |
| `Interval` | `double?` | | Gets or sets the interval of axis ticks. Maps to xAxis.interval. |
| `AxisLine` | `bool` | `true` | Gets or sets whether to show the axis line. |
| `TickLine` | `bool` | `true` | Gets or sets whether to show tick lines. |
| `Color` | `string?` | | Gets or sets the color of the axis line. Maps to axisLine.lineStyle.color. |
| `Width` | `int?` | | Gets or sets the width of the axis line in pixels. Maps to axisLine.lineStyle.width. |
| `TickColor` | `string?` | | Gets or sets the color of the tick lines. Maps to axisTick.lineStyle.color. |
| `TickWidth` | `int?` | | Gets or sets the width of the tick lines in pixels. Maps to axisTick.lineStyle.width. |
| `BoundaryGap` | `bool?` | | Gets or sets whether there is a gap on both sides of the axis. Default is null (auto). For bar charts, this leaves space on both sides. For line charts, this is typically set to false to have data points at the edges. Maps to xAxis.boundaryGap. |
| `IndicatorMin` | `double?` | | Gets or sets the minimum value for this radar indicator. Only applies to RadarChart. |
| `IndicatorMax` | `double?` | | Gets or sets the maximum value for this radar indicator. Only applies to RadarChart. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the child content for nested components (e.g., AxisLabel). |
#### `YAxis`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Show` | `bool` | `true` | Gets or sets whether to show the Y axis. |
| `DataKey` | `string?` | | Gets or sets the data key for Y axis values. |
| `Scale` | `AxisScale` | `AxisScale.Auto` | Gets or sets the scale type for the axis. |
| `Position` | `YAxisPosition` | `YAxisPosition.Left` | Gets or sets the position of the Y axis (left or right). Maps to yAxis.position. |
| `Min` | `double?` | | Gets or sets the minimum value for the axis. Maps to yAxis.min. |
| `Max` | `double?` | | Gets or sets the maximum value for the axis. Maps to yAxis.max. |
| `Interval` | `double?` | | Gets or sets the interval of axis ticks. Maps to yAxis.interval. |
| `AxisLine` | `bool` | `true` | Gets or sets whether to show the axis line. |
| `TickLine` | `bool` | `true` | Gets or sets whether to show tick lines. |
| `Color` | `string?` | | Gets or sets the color of the axis line. Maps to axisLine.lineStyle.color. |
| `Width` | `int?` | | Gets or sets the width of the axis line in pixels. Maps to axisLine.lineStyle.width. |
| `TickColor` | `string?` | | Gets or sets the color of the tick lines. Maps to axisTick.lineStyle.color. |
| `TickWidth` | `int?` | | Gets or sets the width of the tick lines in pixels. Maps to axisTick.lineStyle.width. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the child content for nested components (e.g., AxisLabel). |
**Basic Usage:**
```razor
@* Line Chart *@
@* Bar Chart *@
@code {
private List chartData = new()
{
new() { Name = "Jan", Value = 100 },
new() { Name = "Feb", Value = 200 }
};
}
```
---
### Checkbox
**Package:** `NeoUI.Blazor`
**Namespace:** `NeoUI.Blazor`
**Installation:**
```bash
dotnet add package NeoUI.Blazor --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor
```
**Description:**
Accessible checkbox with indeterminate state support. Binary selection control with support for partial selections.
**Components & Parameters:**
#### `Checkbox`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Checked` | `bool` | | Gets or sets whether the checkbox is checked. This property supports two-way binding using the @bind-Checked directive. Changes to this property trigger the CheckedChanged event callback. |
| `CheckedChanged` | `EventCallback` | | Gets or sets the callback invoked when the checked state changes. This event callback enables two-way binding with @bind-Checked. It is invoked whenever the user toggles the checkbox state. Also notifies EditContext for form validation. |
| `Indeterminate` | `bool` | | Gets or sets whether the checkbox is in an indeterminate state. The indeterminate state is typically used for "select all" checkboxes when only some child items are selected. When indeterminate is true, a dash icon is displayed instead of a checkmark. |
| `IndeterminateChanged` | `EventCallback` | | Gets or sets the callback invoked when the indeterminate state changes. |
| `Disabled` | `bool` | | Gets or sets whether the checkbox is disabled. When disabled: - Checkbox cannot be clicked or focused - Opacity is reduced - Pointer events are disabled - aria-disabled attribute is set to true |
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the checkbox. Custom classes are appended after the component's base classes, allowing for style overrides and extensions. |
| `AriaLabel` | `string?` | | Gets or sets the ARIA label for the checkbox. Provides accessible text for screen readers when the checkbox doesn't have associated label text. |
| `Id` | `string?` | | Gets or sets the ID attribute for the checkbox element. Used for associating the checkbox with label elements via htmlFor attribute. |
| `Name` | `string?` | | Gets or sets the name of the checkbox for form submission. This is critical for form submission. The name/value pair is submitted to the server. If not specified, falls back to the Id value. |
| `Required` | `bool` | | Gets or sets whether the checkbox is required. When true, the checkbox must be checked for form submission. Works with form validation. |
| `CheckedExpression` | `Expression>?` | | Gets or sets an expression that identifies the bound value. Used for form validation integration. When provided, the checkbox registers with the EditContext and participates in form validation. |
**Basic Usage:**
```razor
@* Simple checkbox *@
@* With label *@
@* Indeterminate state *@
@code {
private bool isAccepted = false;
private bool acceptTerms = false;
}
```
---
### ColorPicker
**Package:** `NeoUI.Blazor`
**Namespace:** `NeoUI.Blazor`
**Installation:**
```bash
dotnet add package NeoUI.Blazor --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor
```
**Description:**
Canvas-based color picker with popover. Supports Hex, RGB, and HSL output formats, hue/saturation/lightness canvas selection, alpha/opacity control, and preset color swatches.
**Components & Parameters:**
#### `ColorPicker`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Color` | `string?` | | The selected color value in the configured format. Use `@bind-Color` for two-way binding. |
| `ColorChanged` | `EventCallback` | | Callback invoked when the color changes. |
| `Format` | `ColorFormat` | `ColorFormat.Hex` | Output format: `Hex`, `RGB`, or `HSL`. |
| `Size` | `ColorPickerSize` | `ColorPickerSize.Compact` | Size of the picker: `Compact` or `Large`. |
| `ShowAlpha` | `bool` | `false` | Show alpha/opacity slider. |
| `ShowInputs` | `bool` | `true` | Show RGB/HSL text input fields. |
| `ShowPresets` | `bool` | `true` | Show preset color swatches. |
| `Disabled` | `bool` | `false` | Disable the picker. |
| `Required` | `bool` | `false` | Mark as required for form validation. |
| `Class` | `string?` | | Additional CSS classes for the trigger button. |
| `Id` | `string?` | | HTML id attribute. |
**Basic Usage:**
```razor
@code {
private string? hexColor;
private string? rgbColor;
private string? color;
}
```
---
### Collapsible
**Package:** `NeoUI.Blazor`
**Namespace:** `NeoUI.Blazor`
**Installation:**
```bash
dotnet add package NeoUI.Blazor --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor
```
**Description:**
Expandable/collapsible content panels. Shows or hides content with smooth animations.
**Components & Parameters:**
#### `Collapsible`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Open` | `bool` | | Gets or sets a value indicating whether the collapsible is currently expanded. true if the collapsible is open (content visible); otherwise, false. Default is false. Supports two-way binding via @bind-Open syntax. |
| `OpenChanged` | `EventCallback` | | Gets or sets the callback invoked when the open state changes. An that receives the new open state, or null if no callback is provided. |
| `Disabled` | `bool` | | Gets or sets a value indicating whether the collapsible is disabled. true if the collapsible is disabled and cannot be toggled; otherwise, false. Default is false. |
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the container element. A string containing one or more CSS class names, or null. Use this parameter to customize the container's appearance and layout. Common Tailwind utilities include: Borders: border rounded-lg Padding: p-4, px-6 Background: bg-muted, bg-card Spacing: space-y-2, mb-4 |
| `ChildContent` | `RenderFragment?` | | Gets or sets the child content to be rendered inside the collapsible container. A containing the child components, or null. Typically contains: - The button/trigger element - The expandable content area |
#### `CollapsibleContent`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the content container element. A string containing one or more CSS class names, or null. Use this parameter to style the content area and add animations. Common Tailwind utilities include: Padding: p-4, px-6 py-4 Borders: border-t, border-x Background: bg-muted, bg-card Transitions: transition-all duration-300 Animation: animate-in slide-in-from-top Overflow: overflow-hidden (for smooth height transitions) |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered when the collapsible is expanded. A containing the collapsible content, or null. |
#### `CollapsibleTrigger`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the trigger button element. A string containing one or more CSS class names, or null. Common Tailwind utilities for styling triggers: Flex layout: flex items-center gap-2 Padding: px-4 py-2 Hover states: hover:bg-accent Transitions: transition-all duration-200 |
| `AsChild` | `bool` | `false` | When true, the trigger does not render its own button element. Instead, it passes trigger behavior via TriggerContext to child components. Use this when you want a custom component (like Button) to act as the trigger. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the trigger. A containing the trigger content, or null. |
**Basic Usage:**
```razor
This content can be shown or hidden.
@* Controlled mode *@
Detailed information here.
@code {
private bool isOpen = false;
}
```
---
### Combobox
**Package:** `NeoUI.Blazor`
**Namespace:** `NeoUI.Blazor`
**Installation:**
```bash
dotnet add package NeoUI.Blazor --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor
```
**Description:**
Searchable autocomplete dropdown with keyboard navigation. Combines text input with dropdown selection.
**Components & Parameters:**
#### `Combobox`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Value` | `string?` | | Gets or sets the currently selected value. |
| `ValueChanged` | `EventCallback` | | Gets or sets the callback that is invoked when the selected value changes. |
| `Placeholder` | `string` | `"Select an option..."` | Gets or sets the placeholder text shown in the button when no item is selected. |
| `SearchPlaceholder` | `string` | `"Search..."` | Gets or sets the placeholder text shown in the search input. |
| `EmptyMessage` | `string` | `"No results found."` | Gets or sets the message displayed when no items match the search. |
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the combobox container. |
| `Disabled` | `bool` | | Gets or sets whether the combobox is disabled. |
| `PopoverWidth` | `string` | `"w-[200px]"` | Gets or sets the width of the popover content. Defaults to "w-[200px]". Can be overridden with Tailwind classes. |
**Basic Usage:**
```razor
Item 1Item 2Item 3
@code {
private string? selectedValue;
}
```
---
### Command
**Package:** `NeoUI.Blazor`
**Namespace:** `NeoUI.Blazor`
**Installation:**
```bash
dotnet add package NeoUI.Blazor --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor
```
**Description:**
Command palette with keyboard navigation and search. Quick access to actions and navigation via keyboard shortcuts.
**Components & Parameters:**
#### `Command`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the command container. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the command. |
| `OnSelect` | `EventCallback` | | Event callback invoked when a command item is selected. Receives the selected value as a parameter. |
#### `CommandEmpty`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the empty state container. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered when there are no results. |
#### `CommandGroup`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the group container. |
| `Heading` | `string?` | | Gets or sets the heading text for this group (optional). |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the group. |
#### `CommandInput`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the input container. |
| `Placeholder` | `string` | `"Type a command or search..."` | Gets or sets the placeholder text for the input. |
| `Disabled` | `bool` | | Gets or sets whether the input is disabled. |
| `AutoFocus` | `bool` | | Gets or sets whether the input should auto-focus when rendered. |
| `SearchInterval` | `int` | `0` | Gets or sets the debounce interval in milliseconds before triggering search. Default is 0 (no debouncing). Set to 150-300ms for better performance with large datasets. |
#### `CommandItem`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the item. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the item. |
| `Value` | `string?` | | Gets or sets the value associated with this item. |
| `Disabled` | `bool` | | Gets or sets whether this item is disabled. |
| `OnSelect` | `EventCallback` | | Gets or sets the callback invoked when this item is selected. |
| `SearchText` | `string?` | | Gets or sets the text used for search filtering. If not provided, uses Value. |
#### `CommandList`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the list container. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the list. |
#### `CommandSeparator`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the separator. |
#### `CommandShortcut`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the shortcut. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the shortcut (e.g., "⌘K", "Ctrl+S"). |
**Basic Usage:**
```razor
No results found.CalendarSearch EmojiCalculatorProfileSettings
```
---
### ContextMenu
**Package:** `NeoUI.Blazor`
**Namespace:** `NeoUI.Blazor`
**Installation:**
```bash
dotnet add package NeoUI.Blazor --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor
```
**Description:**
Right-click context menus with actions and keyboard shortcuts. Displays contextual actions on right-click.
**Components & Parameters:**
#### `ContextMenu`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The child content to render. |
| `Open` | `bool?` | | Controls whether the context menu is open. |
| `OpenChanged` | `EventCallback` | | Event callback invoked when the open state changes. |
| `X` | `double` | | Viewport X coordinate for programmatic positioning. Use with `OpenAt()`. |
| `Y` | `double` | | Viewport Y coordinate for programmatic positioning. Use with `OpenAt()`. |
| `OnOpen` | `EventCallback<(double X, double Y)>` | | Event callback invoked when the context menu opens. |
| `OnClose` | `EventCallback` | | Event callback invoked when the context menu closes. |
> **Programmatic positioning:** Call `contextMenuRef.OpenAt(x, y)` to open and position the menu at specific viewport coordinates without a `ContextMenuTrigger`. Used by `DataTable` row context menus.
#### `ContextMenuCheckboxItem`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The content to display inside the checkbox item. |
| `Disabled` | `bool` | `false` | Whether the checkbox item is disabled. |
| `Checked` | `bool` | `false` | Whether the checkbox is checked. |
| `CheckedChanged` | `EventCallback` | | Event callback invoked when the checked state changes (for two-way binding). |
| `OnCheckedChange` | `EventCallback` | | Event callback invoked when the checkbox state changes. |
| `CloseOnSelect` | `bool` | `false` | Whether to close the context menu when this item is selected. Default is false for checkbox items. |
| `Class` | `string?` | | Additional CSS classes to apply. |
#### `ContextMenuContent`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The content to render inside the menu. |
| `CloseOnEscape` | `bool` | `true` | Whether pressing Escape should close the menu. |
| `CloseOnClickOutside` | `bool` | `true` | Whether clicking outside should close the menu. |
| `ZIndex` | `int` | `50` | Z-index value for the menu content. |
| `LockScroll` | `bool` | `true` | Whether to lock body scroll when menu is open. Default is true. |
| `Class` | `string?` | | Additional CSS classes to apply. |
#### `ContextMenuGroup`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Gets or sets additional CSS classes to apply to the group. |
| `ChildContent` | `RenderFragment?` | | Gets or sets the content to be rendered inside the group. |
#### `ContextMenuItem`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The child content to render within the item. |
| `Disabled` | `bool` | `false` | Whether the item is disabled. |
| `OnClick` | `EventCallback` | | Event callback invoked when the item is clicked. |
| `Inset` | `bool` | `false` | Whether to show the item with inset padding. |
| `Class` | `string?` | | Additional CSS classes to apply. |
#### `ContextMenuLabel`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The label content. |
| `Inset` | `bool` | `false` | Whether to show the label with inset padding. |
| `Class` | `string?` | | Additional CSS classes to apply. |
#### `ContextMenuRadioGroup`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The content to render inside the radio group. Typically contains ContextMenuRadioItem components. |
| `Class` | `string?` | | Additional CSS classes to apply to the radio group. |
| `Value` | `TValue?` | | The currently selected value. |
| `ValueChanged` | `EventCallback` | | Event callback invoked when the selected value changes (for two-way binding). |
| `OnValueChange` | `EventCallback` | | Event callback invoked when the selection changes. |
#### `ContextMenuRadioItem`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The content to display inside the radio item. |
| `Disabled` | `bool` | `false` | Whether the radio item is disabled. |
| `Value` | `TValue?` | | The value associated with this radio item. |
| `CloseOnSelect` | `bool` | `true` | Whether to close the context menu when this item is selected. Default is true for radio items. |
| `Class` | `string?` | | Additional CSS classes to apply. |
#### `ContextMenuSeparator`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Class` | `string?` | | Additional CSS classes to apply. |
#### `ContextMenuShortcut`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The shortcut text (e.g., "⌘C" or "Ctrl+C"). |
| `Class` | `string?` | | Additional CSS classes to apply. |
#### `ContextMenuSub`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The content to render inside the submenu. Typically contains ContextMenuSubTrigger and ContextMenuSubContent. |
| `Open` | `bool?` | | Controls whether the submenu is open (controlled mode). |
| `OpenChanged` | `EventCallback` | | Event callback invoked when the open state changes (for two-way binding). |
| `OnOpenChange` | `EventCallback` | | Event callback invoked when the submenu open state changes. |
#### `ContextMenuSubContent`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The content to render inside the submenu. |
| `CloseOnEscape` | `bool` | `true` | Whether pressing Escape should close the submenu. |
| `Offset` | `int` | `-4` | Offset distance from the trigger in pixels. |
| `ZIndex` | `int` | `50` | Z-index for the submenu content. |
| `Class` | `string?` | | Additional CSS classes to apply. |
#### `ContextMenuSubTrigger`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The content to display inside the trigger. |
| `Disabled` | `bool` | `false` | Whether the trigger is disabled. |
| `Inset` | `bool` | `false` | Whether to show the item with inset padding. |
| `Class` | `string?` | | Additional CSS classes to apply. |
#### `ContextMenuTrigger`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `ChildContent` | `RenderFragment?` | | The child content that triggers the context menu. |
| `Disabled` | `bool` | `false` | Whether the trigger is disabled. |
**Basic Usage:**
```razor
Right-click me
EditCopyDelete
```
---
### CurrencyInput
**Package:** `NeoUI.Blazor`
**Namespace:** `NeoUI.Blazor`
**Installation:**
```bash
dotnet add package NeoUI.Blazor --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor
```
**Description:**
Culture-aware currency input with automatic symbol and decimal formatting. Generic over `decimal` or `double`. Integrates with EditForm validation.
**Components & Parameters:**
#### `CurrencyInput`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Value` | `TValue?` | | The bound currency value. Use `@bind-Value` for two-way binding. |
| `ValueChanged` | `EventCallback` | | Callback invoked when the value changes. |
| `Currency` | `string` | `"USD"` | ISO currency code (e.g., USD, EUR, GBP, JPY). |
| `Culture` | `string?` | | Culture code for formatting (e.g., "en-US", "de-DE"). Defaults to current culture. |
| `ShowCurrencySymbol` | `bool` | `true` | Show the currency symbol (e.g., $, €, £). |
| `Placeholder` | `string?` | | Placeholder text. |
| `Disabled` | `bool` | `false` | Disable the input. |
| `Required` | `bool` | `false` | Mark as required. |
| `Name` | `string?` | | Input name for form submission. |
| `Readonly` | `bool` | `false` | Make input read-only. |
| `Class` | `string?` | | Additional CSS classes. |
| `Id` | `string?` | | HTML id attribute. |
| `UpdateOn` | `InputUpdateMode` | `Change` | `Input` (every keystroke) or `Change` (on blur). |
**Basic Usage:**
```razor
@code {
private decimal price;
private decimal amount;
private double cost;
}
```
---
### DataTable
**Package:** `NeoUI.Blazor`
**Namespace:** `NeoUI.Blazor`
**Installation:**
```bash
dotnet add package NeoUI.Blazor --version 3.6.3
```
**Import:**
```razor
@using NeoUI.Blazor
```
**Description:**
Powerful tables with sorting, filtering, pagination, and row selection. Enterprise-grade data table component.
**Components & Parameters:**
#### `DataTable`
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `Data` | `IEnumerable` | `Array.Empty()` | The client-side collection of items to display. For server-side loading use `ServerData` instead. |
| `Columns` | `RenderFragment?` | | Gets or sets the column definitions as child content. Use DataTableColumn components to define columns declaratively. |
| `SelectionMode` | `DataTableSelectionMode` | `DataTableSelectionMode.None` | Gets or sets the row selection mode. Default is None (no selection). |
| `ShowToolbar` | `bool` | `true` | Gets or sets whether to show the toolbar with global search and column visibility. Default is true. |
| `ShowPagination` | `bool` | `true` | Gets or sets whether to show pagination controls. Default is true. |
| `IsLoading` | `bool` | | Gets or sets whether the table is in a loading state. Default is false. |
| `PageSizes` | `int[]` | `{ 5, 10, 20, 50, 100 }` | Gets or sets the available page size options. |
| `InitialPageSize` | `int` | `5` | Gets or sets the initial page size. Default is 5. |
| `ToolbarActions` | `RenderFragment?` | | Gets or sets custom toolbar actions (buttons, etc.). |
| `EmptyTemplate` | `RenderFragment?` | | Gets or sets a custom template for the empty state. If null, displays default "No results found" message. |
| `LoadingTemplate` | `RenderFragment?` | | Gets or sets a custom template for the loading state. If null, displays default "Loading..." message. |
| `Class` | `string?` | | Gets or sets additional CSS classes for the container div. |
| `AriaLabel` | `string?` | | Gets or sets the ARIA label for the table. |
| `Dense` | `bool` | `true` | Compact cell padding. Set to `false` for a spacious layout. |
| `HeaderBackground` | `bool` | `true` | Applies `bg-muted/50` to the header row. |
| `HeaderBorder` | `bool` | `false` | Adds vertical dividers between header cells. |
| `CellBorder` | `bool` | `false` | Adds vertical dividers between body cells. |
| `ColumnsVisibility` | `bool` | `true` | Shows/hides the column visibility toggle button in the toolbar. |
| `HeaderClass` | `string?` | | Extra CSS classes applied to ``. |
| `HeaderRowClass` | `string?` | | Extra CSS classes applied to the header `
`. |
| `BodyRowClass` | `string?` | | Extra CSS classes applied to each body `
`. |
| `SelectedItems` | `IReadOnlyCollection` | `Array.Empty()` | Gets or sets the selected items. Use @bind-SelectedItems for two-way binding. |
| `SelectedItemsChanged` | `EventCallback>` | | Event callback invoked when the selected items change. |
| `OnSort` | `EventCallback<(string ColumnId, SortDirection Direction)>` | | Event callback invoked when sorting changes. Use for custom sorting logic (hybrid mode). |
| `OnFilter` | `EventCallback` | | Event callback invoked when the global search text changes. |
| `ServerData` | `Func>>?` | | Server-side data callback. When set, the table passes current page/sort/search state and renders the returned page. Mutually exclusive with `Data`. |
| `ItemsProvider` | `DataTableVirtualProvider?` | `null` | Activates server-side virtualised infinite-scroll mode (Blazor ``). Set instead of `ServerData`. |
| `ItemHeight` | `float` | `40` | Approximate row height in pixels passed to the virtualizer as `ItemSize`. Must match your actual row height. Required when either virtualisation mode is active. |
| `Height` | `string` | `"400px"` | CSS height of the scrollable table container. Required when either virtualisation mode is active. |
| `VirtualizeOverscanCount` | `int` | `3` | Extra rows rendered beyond the visible viewport to reduce blank-row flicker during fast scrolling. |
| `Virtualize` | `bool` | `false` | Enables Blazor `` for large in-memory datasets (client-side DOM windowing). Requires `ItemHeight` and `Height`. |
| `Resizable` | `bool` | `false` | Enables drag-resize handles on all column headers. Activates `table-layout: fixed` automatically. |
| `MinColumnWidth` | `int` | `80` | Minimum column width in pixels enforced during drag-resize. |
| `OnColumnResize` | `EventCallback<(string ColumnId, string Width)>` | | Raised once when the user releases a resize handle. |
| `Reorderable` | `bool` | `false` | Enables drag-to-reorder on all eligible columns. Pinned and selection columns are always excluded. |
| `OnColumnReorder` | `EventCallback<(string ColumnId, int NewIndex)>` | | Raised when a column is dropped into a new position. |
| `RowContextMenu` | `RenderFragment>?` | | Template for a right-click context menu scoped to each row. |
| `SyncWidthOnResize` | `bool` | `false` | Keeps `
` total width equal to the sum of all column widths during and after resize. Pair with `TableContainerClass="border-0"`. |
| `TableContainerClass` | `string?` | | Additional CSS classes on the inner table container div (wraps the `
`). Use `border-0` to remove the border. |
| `Striped` | `bool` | `false` | Enables alternating row background colours (zebra striping). |
| `StripeClass` | `string?` | `even:bg-muted/30 even:hover:bg-muted/70` | Tailwind class for the stripe. Override to change colour or swap odd/even. |
| `ChildrenProperty` | `Func?>?` | | Returns child items for a row. Setting this activates tree/hierarchical mode; pagination is hidden. |
| `LoadChildrenAsync` | `Func>>?` | | Lazy-loads children on first expand. Used when children are not pre-populated. |
| `HasChildrenField` | `Func?` | | Determines whether an expand toggle is shown before children are loaded. |
| `ValueField` | `Func?` | | Unique key per row, used to track expanded state in tree mode. |
| `ExpandedValues` | `IEnumerable