B3.Blicks.Contracts 2026.6.28.3
B3.Blicks.Contracts
The Blick contract — the seam between a B3 app shell and the runtime-loaded Blicks it composes.
This assembly is shared: it is loaded into the shell's default AssemblyLoadContext and referenced
by every Blick, so a single type identity for IBlick holds across the shell and all Blicks. Keep it
tiny and stable — churning it ripples to every Blick.
The contract
public interface IBlick
{
string Name { get; }
string Version { get; }
void ConfigureServices(IServiceCollection services); // runs during startup, BEFORE the host is built
IEnumerable<BlickNavItem> GetNavItems(); // menu entries
IEnumerable<BlickWidget> GetWidgets(); // embeddable components (e.g. dashboard tiles)
}
public record BlickNavItem(string Label, string? Route = null, string? Icon = null, IReadOnlyList<BlickNavItem>? Children = null);
public record BlickWidget(string Title, Type ComponentType);
Navigation: one tree, any layout
GetNavItems() returns the top-level entries; each may carry Children, so navigation is a tree.
The shell maps that one tree onto whichever layout it uses:
- Left-nav with section headers — a top-level group (
Childrenset, noRoute) renders as a section header; its children render as links. - Multi-level top ("fat") menu — the same group renders as a menu with a fly-out; deeper
Childrennest further.
A Blick declares its navigation once and it renders in either shell style.
GetNavItems() => new[]
{
new BlickNavItem("Dashboard", "/"), // leaf -> link
new BlickNavItem("Reports", Icon: "bi-graph-up", Children: new[] // group -> section / parent
{
new BlickNavItem("Daily", "/reports/daily"),
new BlickNavItem("Monthly", "/reports/monthly"),
}),
};
Making an RCL a Blick
- Create a Razor Class Library:
<Project Sdk="Microsoft.NET.Sdk.Razor">. - Reference this package:
<PackageReference Include="B3.Blicks.Contracts" Version="x.y.z" />. - Import the packaging convention so it publishes correctly:
<Import Project="…/src/Blick.pack.props" />(seesrc/Blick.pack.props). - Implement exactly one
IBlick, add routable@pagecomponents, and put static assets inwwwroot/(they ship in the package and the resolver serves them at_content/{AssemblyName}/).
dotnet pack then produces a Blick package for the BlickServer registry (API at api.blicks.b3soft.net, the
proprietary HTTP+JSON registry that serves the bytes). See docs/USAGE.md for the full authoring + publish flow and
B3.Blicks.Resolver's README for how the shell loads it.
Showing the top 20 packages that depend on B3.Blicks.Contracts.
| Packages | Downloads |
|---|---|
|
B3.UI.Components.Basic
Basic Components are based on standard HTML and ASPNETCore components. No third party libraries are used here (e.g., SyncFusion)
|
34 |
|
B3.Communication.UI.Components
Package Description
|
28 |
|
B3.EventSourcing.UI.Components
EventViews components include: UserDefinedEventView, UserDefinedEventsTimeline, EventTypesFilter
|
27 |
|
B3.Communication.UI.Components
Package Description
|
25 |
|
B3.UI.Components.Basic
Basic Components are based on standard HTML and ASPNETCore components. No third party libraries are used here (e.g., SyncFusion)
|
23 |
|
B3.Messaging.UI.Components
Components include: EditJobConfiguration, JobConfigurationsDataGrid, ManualRunHangfireJobButton, OneSaga, SagasByName
|
19 |
|
DocumentBuilder.UI.Components
Components include: MessageTemplateContent
|
19 |
|
B3.EventSourcing.UI.Components
EventViews components include: UserDefinedEventView, UserDefinedEventsTimeline, EventTypesFilter
|
19 |
|
B3.UI.Components
Syncfusion-backed B3 UI components: defined-list dropdowns/combo-boxes/multi-select, date pickers, and the generic record form/view/dialog.
|
18 |
|
B3.UI.Components.Basic
Basic Components are based on standard HTML and ASPNETCore components. No third party libraries are used here (e.g., SyncFusion)
|
18 |
|
B3.CRUD.UI.Components
Components include: AddOne, ChangeLogDataGrid, ColumnGroupComponent, DataGrid, DataRecordFileManager, EditOne, OneRecord
|
18 |
|
B3.ETL.DataLoader.UI.Components
Package Description
|
15 |
|
B3.Communication.UI.Components
Package Description
|
15 |
|
B3.CRUD.UI.Components
Components include: AddOne, ChangeLogDataGrid, ColumnGroupComponent, DataGrid, DataRecordFileManager, EditOne, OneRecord
|
15 |
|
B3.Search.UI.Components
Components include: SearchAndFilter,SearchBoxWithDataGrid,SearchInput,SearchInputInsideDialog,FacetFilter,IndexCreator
|
14 |
|
B3.UI.Components
Syncfusion-backed B3 UI components: defined-list dropdowns/combo-boxes/multi-select, date pickers, and the generic record form/view/dialog.
|
12 |
|
B3.DocumentApprover.UI.Components
Components include: DocumentApprovalForm, DocumentViewer, RequestApprovalForm
|
12 |
|
B3.Search.UI.Components
Components include: SearchAndFilter,SearchBoxWithDataGrid,SearchInput,SearchInputInsideDialog,FacetFilter,IndexCreator
|
11 |
.NET 10.0
- No dependencies.
| Version | Downloads | Last updated |
|---|---|---|
| 2026.8.6.1 | 7 | 8/6/2026 |
| 2026.8.3.3 | 5 | 8/4/2026 |
| 2026.8.3.2 | 4 | 8/4/2026 |
| 2026.8.3.1 | 1 | 8/4/2026 |
| 2026.8.1.1 | 5 | 8/1/2026 |
| 2026.7.31.1 | 4 | 7/31/2026 |
| 2026.7.30.1 | 10 | 7/30/2026 |
| 2026.7.26.4 | 4 | 7/27/2026 |
| 2026.7.26.3 | 1 | 7/27/2026 |
| 2026.7.26.2 | 4 | 7/26/2026 |
| 2026.7.26.1 | 4 | 7/26/2026 |
| 2026.7.23.5 | 4 | 7/23/2026 |
| 2026.7.23.4 | 4 | 7/23/2026 |
| 2026.7.23.3 | 4 | 7/23/2026 |
| 2026.7.23.2 | 1 | 7/23/2026 |
| 2026.7.23.1 | 4 | 7/23/2026 |
| 2026.7.22.1 | 4 | 7/22/2026 |
| 2026.7.19.1 | 4 | 7/19/2026 |
| 2026.7.18.19 | 4 | 7/19/2026 |
| 2026.7.18.18 | 4 | 7/19/2026 |
| 2026.7.18.17 | 4 | 7/18/2026 |
| 2026.7.18.16 | 1 | 7/18/2026 |
| 2026.7.18.15 | 4 | 7/18/2026 |
| 2026.7.18.14 | 4 | 7/18/2026 |
| 2026.7.18.13 | 1 | 7/18/2026 |
| 2026.7.18.12 | 1 | 7/18/2026 |
| 2026.7.18.11 | 4 | 7/18/2026 |
| 2026.7.18.10 | 1 | 7/18/2026 |
| 2026.7.18.9 | 4 | 7/18/2026 |
| 2026.7.18.8 | 4 | 7/18/2026 |
| 2026.7.18.7 | 1 | 7/18/2026 |
| 2026.7.18.6 | 4 | 7/18/2026 |
| 2026.7.18.5 | 1 | 7/18/2026 |
| 2026.7.18.4 | 4 | 7/18/2026 |
| 2026.7.18.3 | 1 | 7/18/2026 |
| 2026.7.18.2 | 4 | 7/18/2026 |
| 2026.7.18.1 | 11 | 7/18/2026 |
| 2026.7.17.2 | 4 | 7/17/2026 |
| 2026.7.17.1 | 4 | 7/17/2026 |
| 2026.7.13.1 | 17 | 7/14/2026 |
| 2026.7.5.2 | 6 | 7/5/2026 |
| 2026.7.5.1 | 5 | 7/5/2026 |
| 2026.7.4.4 | 11 | 7/4/2026 |
| 2026.7.4.3 | 6 | 7/4/2026 |
| 2026.7.4.2 | 6 | 7/4/2026 |
| 2026.7.4.1 | 6 | 7/4/2026 |
| 2026.7.3.2 | 7 | 7/3/2026 |
| 2026.7.3.1 | 5 | 7/3/2026 |
| 2026.6.30.5 | 33 | 7/1/2026 |
| 2026.6.30.4 | 5 | 6/30/2026 |
| 2026.6.30.3 | 5 | 6/30/2026 |
| 2026.6.30.2 | 2 | 6/30/2026 |
| 2026.6.30.1 | 2 | 6/30/2026 |
| 2026.6.29.8 | 5 | 6/30/2026 |
| 2026.6.29.7 | 2 | 6/30/2026 |
| 2026.6.29.6 | 5 | 6/30/2026 |
| 2026.6.29.5 | 2 | 6/30/2026 |
| 2026.6.29.4 | 2 | 6/30/2026 |
| 2026.6.29.3 | 5 | 6/30/2026 |
| 2026.6.29.2 | 2 | 6/30/2026 |
| 2026.6.29.1 | 5 | 6/30/2026 |
| 2026.6.28.3 | 5 | 6/28/2026 |
| 2026.6.28.2 | 5 | 6/28/2026 |
| 2026.6.28.1 | 2 | 6/28/2026 |
| 2026.6.27.7 | 5 | 6/28/2026 |
| 2026.6.27.6 | 46 | 6/28/2026 |
| 2026.6.27.5 | 2 | 6/28/2026 |
| 2026.6.27.4 | 2 | 6/28/2026 |
| 2026.6.27.3 | 2 | 6/28/2026 |
| 2026.6.27.2 | 44 | 6/27/2026 |
| 2026.6.27.1 | 2 | 6/27/2026 |