Rask.Ui
0.20.1-alpha.0.261
dotnet add package Rask.Ui --version 0.20.1-alpha.0.261
NuGet\Install-Package Rask.Ui -Version 0.20.1-alpha.0.261
<PackageReference Include="Rask.Ui" Version="0.20.1-alpha.0.261" />
<PackageVersion Include="Rask.Ui" Version="0.20.1-alpha.0.261" />
<PackageReference Include="Rask.Ui" />
paket add Rask.Ui --version 0.20.1-alpha.0.261
#r "nuget: Rask.Ui, 0.20.1-alpha.0.261"
#:package Rask.Ui@0.20.1-alpha.0.261
#addin nuget:?package=Rask.Ui&version=0.20.1-alpha.0.261&prerelease
#tool nuget:?package=Rask.Ui&version=0.20.1-alpha.0.261&prerelease
Rask.Ui
Every daisyUI component, as a typed C# component for the Rask One Person Framework — the operator console, the landing site and the docs showcase all draw with these.
- The whole daisyUI vocabulary, typed. Colour, fill and size are independent enums that compose, so an outlined error button needs no member of its own. daisyUI's own words, deliberately: its documentation is the documentation for everything these components render.
- The stylesheet comes with it. Tailwind scans the project it runs in, so a compiled library's
class names are invisible to your Tailwind build and would emit nothing. This package compiles its
own sheet — daisyUI included — and hands it to you. No npm install, no Tailwind configuration, no
_content/path to map. - Ships no JavaScript. Where the platform can own the interaction it does: a dialog is a real
<dialog popover>, so the browser supplies the top layer, Escape, light-dismiss and a native backdrop, and it all works on a prerendered page before any runtime has booted. Where it cannot, the state is a field in C# and redraws through the live diff. - Mobile-first, not merely responsive. Every control takes a 44px touch target below
sm; a dialog is a bottom sheet on a phone and a centred card above it, because a centred dialog at 360px either overflows or shrinks its content past reading. - Every control has a name. A label is required rather than optional, and it becomes the accessible name rather than a placeholder — which disappears the moment typing starts.
- 35 themes, re-skinned by tokens rather than overrides. Redefine a custom property in your own
@themeand every component follows, without a single rule being overridden.
Use
dotnet add package Rask.Ui
Two steps, and skipping either renders structurally correct components with no colour at all. Opt into the build writing the sheet:
<PropertyGroup>
<RaskUiWriteStylesheet>true</RaskUiWriteStylesheet>
</PropertyGroup>
Then link it before your own, and turn the theme scope on:
protected override Component? HeadAssets =>
[
Link.Rel("stylesheet").Href(UiStylesheet.Href()), // the kit's, first
Link.Rel("stylesheet").Href("/css/app.css"),
];
// Nothing in the kit has a colour until an ancestor carries this.
protected override Component Shell(Component head, Component body) =>
Html.Lang("en").Attributes((UiStylesheet.ThemeScopeAttribute, ""))[head, body];
protected override Component? Render() =>
[
UiButton.Label("Save").Tone(UiTone.Primary).Variant(UiVariant.Outline).Size(UiSize.Lg),
UiModal.Title("Delete order").Id("confirm").Trigger("Delete")[
P["This cannot be undone."]
],
// Every data-input control is an IFormControl<T>: Value opens the controlled chain and Bind the
// bound one, and the opening step fixes the value type and the mode together.
UiInput.Value(_email).Label("Email").Type(InputType.Email)
.Tone(_email.Contains('@') ? null : UiTone.Error)
.OnChange(value => _email = value),
UiAccordion.Open(_section).OnOpen(key => _section = key)[
UiAccordionSection.Key("ship").Title("Shipping")[P["Two working days."]],
UiAccordionSection.Key("pay").Title("Payment")[P["Card or transfer."]]
],
];
Order matters: your @theme only wins while it is the copy the cascade reads last. The kit's sheet
deliberately carries no preflight and no html/body rules — your application owns its document,
and a reset arriving from a library restyles pages that never asked for it.
What is in it
| Actions | UiButton UiDropdown UiModal UiSwap UiThemeController UiFab |
| Data display | UiAccordion UiCollapse UiAvatar UiAura UiBadge UiCard UiCarousel UiChatBubble UiCountdown UiDiff UiHover3d UiHoverGallery UiKbd UiList UiStat UiStatusDot UiTable UiTextRotate UiTimeline |
| Navigation | UiBreadcrumbs UiDock UiLink UiMegamenu UiMenu UiNavbar UiPagination UiSteps UiTabs |
| Feedback | UiAlert UiLoading UiProgress UiRadialProgress UiSkeleton UiToast UiTooltip |
| Data input | UiInput UiTextarea UiSelect UiFileInput UiCheckbox UiToggle UiRadio UiRange UiRating UiFieldset UiValidator UiLabel UiFloatingLabel UiOtp UiFilter UiCalendar |
| Layout | UiDivider UiDrawer UiFooter UiHero UiIndicator UiJoin UiStack UiMask |
| Mockup | UiMockupBrowser UiMockupCode UiMockupPhone UiMockupWindow |
| Chrome | UiShell UiTopBar UiBrand UiNav UiNavTab UiCrumbSwitcher UiTopLink UiMain UiHeader UiMetricRow UiDetailList UiCode UiSearch |
| Support | UiIcon / UiIconName, UiTheme / UiThemeName, UiStyles, UiStylesheet |
Requires .NET 10. Runs on both the ASP.NET host and browser-WebAssembly.
Links
| 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-browser1.0 is compatible. 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
- No dependencies.
-
net10.0-browser1.0
- No dependencies.
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Rask.Ui:
| Package | Downloads |
|---|---|
|
Rask.Dashboard
A built-in operator dashboard for the Rask One Person Framework batteries. Mounts at /_rask and shows the outbox, background jobs, queued mail and cache from the application's own database — queue depth, dead letters, the errors behind them, stored email previews, the recurring-job schedule, SQLite pragmas and backup status. A live log tail is built in, and becomes a searchable history when Rask.Logging is installed. Panels appear only for the batteries the app actually registered. Protected by an authorization policy that fails closed outside Development. |
|
|
Rask
The one reference a Rask application needs, server or browser. On net10.0 it brings the ASP.NET host plus every battery — database, mediator, background jobs, transactional email, cache, outbox, operator dashboard, durable logs, Web Push, and SQLite snapshots and continuous backup — with RaskApp.Create(args) as the entry point. On net10.0-browser it brings the WebAssembly host, the source-generated mediator, the query cache and remote dispatch. Everything referenced is wired and on; app.Configure(c => c.Jobs.Off()) is how an app does without one. Reference Rask.Server for a lean host with no database. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.20.1-alpha.0.261 | 0 | 9/8/2026 |
| 0.20.1-alpha.0.254 | 5 | 9/8/2026 |
| 0.20.1-alpha.0.252 | 21 | 9/8/2026 |
| 0.20.1-alpha.0.251 | 22 | 9/8/2026 |
| 0.20.1-alpha.0.250 | 32 | 9/8/2026 |
| 0.20.1-alpha.0.248 | 39 | 9/8/2026 |
| 0.20.1-alpha.0.247 | 27 | 9/8/2026 |
| 0.20.1-alpha.0.246 | 43 | 9/7/2026 |
| 0.20.1-alpha.0.245 | 43 | 9/7/2026 |
| 0.20.1-alpha.0.243 | 42 | 9/7/2026 |
| 0.20.1-alpha.0.242 | 39 | 9/7/2026 |
| 0.20.1-alpha.0.241 | 43 | 9/7/2026 |
| 0.20.1-alpha.0.240 | 47 | 9/7/2026 |
| 0.20.1-alpha.0.238 | 48 | 9/7/2026 |
| 0.20.1-alpha.0.237 | 43 | 9/7/2026 |
| 0.20.1-alpha.0.236 | 46 | 9/7/2026 |
| 0.20.1-alpha.0.235 | 46 | 9/7/2026 |
| 0.20.1-alpha.0.234 | 44 | 9/7/2026 |
| 0.20.1-alpha.0.233 | 50 | 9/7/2026 |
| 0.20.1-alpha.0.232 | 43 | 9/7/2026 |