Nabs.Launchpad.Ui.Shell.Blazor.Sf
10.0.211
Prefix Reserved
dotnet add package Nabs.Launchpad.Ui.Shell.Blazor.Sf --version 10.0.211
NuGet\Install-Package Nabs.Launchpad.Ui.Shell.Blazor.Sf -Version 10.0.211
<PackageReference Include="Nabs.Launchpad.Ui.Shell.Blazor.Sf" Version="10.0.211" />
<PackageVersion Include="Nabs.Launchpad.Ui.Shell.Blazor.Sf" Version="10.0.211" />
<PackageReference Include="Nabs.Launchpad.Ui.Shell.Blazor.Sf" />
paket add Nabs.Launchpad.Ui.Shell.Blazor.Sf --version 10.0.211
#r "nuget: Nabs.Launchpad.Ui.Shell.Blazor.Sf, 10.0.211"
#:package Nabs.Launchpad.Ui.Shell.Blazor.Sf@10.0.211
#addin nuget:?package=Nabs.Launchpad.Ui.Shell.Blazor.Sf&version=10.0.211
#tool nuget:?package=Nabs.Launchpad.Ui.Shell.Blazor.Sf&version=10.0.211
Nabs Launchpad UI Shell Blazor Syncfusion Library
This library provides a comprehensive Blazor UI framework built on top of Syncfusion Blazor components, designed to create consistent, feature-rich enterprise applications within the Nabs Launchpad ecosystem.
Overview
The UI Shell Blazor Syncfusion library extends the base Nabs.Launchpad.Ui.Shell with Syncfusion-powered components, offering advanced data grids, forms, navigation, and layout capabilities. It provides pre-built Razor components that integrate seamlessly with the Launchpad MVVM architecture and ViewModels.
Key Features
- Syncfusion Integration: Full integration with Syncfusion Blazor components for enterprise-grade UI controls
- Pre-built Views: Ready-to-use Razor components for common patterns (ItemView, MasterDetailsView)
- Responsive Layout: Modern, responsive main layout with navigation and user context
- Form Generation: Automatic form generation with validation using Syncfusion DataForm
- Data Grids: Advanced grid functionality with sorting, paging, and selection
- Progress Indicators: Global loading states and progress feedback
- Bootstrap Styling: Built-in Bootstrap 5.3 dark theme integration
- Authentication Integration: JWT Bearer authentication support
Architecture
Components
Views
ItemView<TItem, TViewModel>: Generic Razor component for single-item editing with automatic form generationMasterDetailsView<TListItem, TDetailsItem, TViewModel>: Master-detail pattern with grid-based master list and form-based detail editing
Layouts
MainLayout: Primary application layout with header navigation, user context, and footer- Responsive design with sticky header and flexible content areas
Navigation
Portals: Portal-specific navigation component- Dynamic menu generation from PortalContext navigation items
Progress Indicators
GlobalProgress: Application-wide loading indicator with overlay
Static Assets
- Bootstrap 5.3 CSS framework
- Syncfusion Bootstrap Dark Theme for consistent styling
- Custom CSS for layout enhancements
- Syncfusion Icons font integration
- Lodash.js utility library
Dependencies
NuGet Packages
Syncfusion.Blazor: Core Syncfusion Blazor componentsMicrosoft.AspNetCore.Authentication.JwtBearer: JWT authenticationBlazored.FluentValidation: Client-side validation integrationbunit: Blazor component testing framework
Project References
Nabs.Launchpad.Core.Context: Database and portal contextNabs.Launchpad.Ui.Shell: Base UI shell servicesNabs.Launchpad.Core.ViewModels: MVVM ViewModels and base classes
Setup and Configuration
1. Syncfusion License Registration
builder.AddSyncfusion();
This extension method handles Syncfusion license registration using the SyncfusionLicenseKey environment variable.
2. Service Registration
The library automatically configures:
- Syncfusion Blazor services
- Authentication middleware
- Static file serving for wwwroot assets
3. Layout Integration
Include the StaticAssets component in your application's head section:
<component type="typeof(StaticAssets)" render-mode="Static" />
4. Import Statements
Add the _Imports.razor file or include these using statements:
@using Syncfusion.Blazor
@using Syncfusion.Blazor.DataForm
@using Syncfusion.Blazor.Grids
@using Blazored.FluentValidation
@using Nabs.Launchpad.Ui.Shell.Blazor.Sf
Usage Examples
ItemView Component
@page "/edit-item/{id:guid?}"
<ItemView TItem="PersonDto" TViewModel="PersonViewModel">
<ChildContent Context="person">
<div class="row">
<div class="col-md-6">
<label>First Name</label>
<input @bind="person.FirstName" class="form-control" />
</div>
<div class="col-md-6">
<label>Last Name</label>
<input @bind="person.LastName" class="form-control" />
</div>
</div>
</ChildContent>
</ItemView>
MasterDetailsView Component
@page "/manage-people"
<MasterDetailsView TListItem="PersonListItemDto"
TDetailsItem="PersonDto"
TViewModel="PeopleManagementViewModel" />
Custom Layout Usage
@layout MainLayout
@page "/dashboard"
<PageTitle>Dashboard - @PortalContext.PortalDisplayName</PageTitle>
<h1>Welcome to the Dashboard</h1>
Styling and Theming
Default Theme
- Bootstrap 5.3 Dark Theme: Consistent dark theme across all components
- Syncfusion Bootstrap Dark: Matching Syncfusion component theming
- Responsive Design: Mobile-first responsive layout
Customization
Override styles by providing a portal.css file in your application's wwwroot/static/ directory.
CSS Classes
.master-details: Styling for master-detail table layout.progress-overlay: Global progress indicator overlay.nav-link: Navigation link styling.user-icon: User profile icon styling
Testing
Unit Testing with bUnit
[Fact]
public void ItemView_ShouldRenderCorrectly()
{
// Arrange
using var ctx = new TestContext();
ctx.Services.AddSingleton<PersonViewModel>();
// Act
var component = ctx.RenderComponent<ItemView<PersonDto, PersonViewModel>>();
// Assert
Assert.Contains("Save", component.Markup);
Assert.Contains("Cancel", component.Markup);
}
Test Projects
Launchpad.Ui.Shell.Blazor.Sf.UnitTests: Comprehensive unit tests for all components
Performance Considerations
Render Modes
- Interactive Server: Used for progress indicators to provide real-time feedback
- Static Rendering: Used for static assets and initial page loads
- Prerendering: Disabled for interactive components to prevent hydration issues
Optimization Features
- Grid Virtualization: Automatic virtualization for large datasets
- Lazy Loading: Progressive loading of navigation items
- Debounced Search: Built-in search debouncing in ViewModels
Security
Authentication
- JWT Bearer Token: Automatic JWT token handling
- User Context Integration: Seamless integration with Launchpad user authentication
- Role-based Navigation: Dynamic menu generation based on user permissions
Authorization
- Navigation items automatically filtered based on user authorization
- Component-level security through ViewModel integration
Browser Support
Supported Browsers
- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
Progressive Enhancement
- Graceful degradation for older browsers
- Core functionality available without JavaScript
Contributing
Development Guidelines
- Follow Blazor component best practices
- Use Syncfusion components for data-intensive operations
- Maintain consistency with existing component patterns
- Include comprehensive unit tests for new components
Code Standards
- Use C# 13 features and latest language constructs
- Follow nullable reference types conventions
- Implement proper async/await patterns
- Use file-scoped namespaces
Integration with Launchpad Ecosystem
Core Integration Points
- ViewModels: Seamless binding with Core.ViewModels patterns
- Context Services: Integration with PortalContext and UserContext
- Validation: FluentValidation integration for client-side validation
- Messaging: CommunityToolkit.Mvvm messaging for component communication
Related Libraries
Nabs.Launchpad.Ui.Shell: Base UI shell functionalityNabs.Launchpad.Core.ViewModels: MVVM patterns and base classesNabs.Launchpad.Core.Context: Application context and services
License
Copyright � Net Advantage Business Solutions
This library requires a valid Syncfusion license for production use. Ensure the SyncfusionLicenseKey environment variable is properly configured in your deployment environment
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Blazored.FluentValidation (>= 2.2.0)
- bunit (>= 2.4.2)
- Microsoft.AspNetCore.Authentication.JwtBearer (>= 10.0.1)
- Nabs.Launchpad.Core.Context (>= 10.0.211)
- Nabs.Launchpad.Core.ViewModels (>= 10.0.211)
- Nabs.Launchpad.Ui.Shell (>= 10.0.211)
- Syncfusion.Blazor (>= 32.1.21)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 10.0.211 | 0 | 12/31/2025 |
| 10.0.210 | 0 | 12/30/2025 |
| 10.0.209 | 32 | 12/30/2025 |
| 10.0.208 | 29 | 12/30/2025 |
| 10.0.207 | 45 | 12/29/2025 |
| 10.0.206 | 41 | 12/29/2025 |
| 10.0.205 | 156 | 12/24/2025 |
| 10.0.204 | 163 | 12/21/2025 |
| 10.0.203 | 264 | 12/18/2025 |
| 10.0.202 | 252 | 12/17/2025 |
| 10.0.200 | 267 | 12/17/2025 |
| 10.0.199 | 418 | 12/10/2025 |
| 10.0.197 | 157 | 12/5/2025 |
| 10.0.196 | 666 | 12/3/2025 |
| 10.0.195 | 662 | 12/3/2025 |
| 10.0.194 | 662 | 12/3/2025 |
| 10.0.193 | 669 | 12/2/2025 |
| 10.0.192 | 170 | 11/28/2025 |
| 10.0.190 | 178 | 11/27/2025 |
| 10.0.189 | 159 | 11/23/2025 |
| 10.0.187 | 161 | 11/23/2025 |
| 10.0.186 | 147 | 11/23/2025 |
| 10.0.184 | 399 | 11/20/2025 |
| 10.0.181-rc3 | 275 | 11/11/2025 |
| 10.0.179-rc2 | 237 | 11/11/2025 |
| 10.0.178-rc2 | 191 | 11/10/2025 |
| 10.0.177-rc2 | 187 | 11/10/2025 |
| 10.0.176-rc2 | 144 | 11/6/2025 |
| 10.0.175-rc2 | 152 | 11/6/2025 |
| 10.0.174-rc2 | 144 | 11/5/2025 |
| 10.0.173-rc2 | 143 | 11/3/2025 |
| 10.0.172-rc2 | 90 | 11/2/2025 |
| 10.0.170-rc2 | 76 | 11/1/2025 |
| 10.0.169-rc2 | 75 | 11/1/2025 |
| 10.0.168-rc2 | 74 | 10/31/2025 |
| 10.0.166-rc2 | 79 | 10/31/2025 |
| 10.0.164-rc2 | 138 | 10/28/2025 |
| 10.0.162-rc2 | 138 | 10/24/2025 |
| 9.0.151 | 114 | 10/17/2025 |
| 9.0.150 | 187 | 9/10/2025 |
| 9.0.146 | 124 | 8/15/2025 |
| 9.0.145 | 172 | 8/11/2025 |
| 9.0.144 | 184 | 8/8/2025 |
| 9.0.137 | 142 | 7/29/2025 |
| 9.0.136 | 145 | 7/29/2025 |
| 9.0.135 | 160 | 7/28/2025 |
| 9.0.134 | 201 | 7/9/2025 |
| 9.0.133 | 178 | 7/9/2025 |
| 9.0.132 | 186 | 7/9/2025 |
| 9.0.131 | 193 | 7/9/2025 |
| 9.0.130 | 177 | 7/7/2025 |