Repository navigation
Releases: shellui-dev/shellui
Release list
ShellUI v0.4.0
ShellUI v0.4.0
The 0.4 stable release. Compared with 0.3 it adds 19 components and three sign-in page blocks, compositional parts for eight more,
shellui add all,doctorandmigrate, .NET 8 and 9 support, and a CLI that keeps your changes onupdate. This section sums up the whole 0.4 line; the alpha sections below have the details. Report issues via GitHub Issues.
✨ New in 0.4
- Components.
kbd,aspect-ratio,button-group,toggle-group,input-group,number-input,stat-card,timeline,tree-view,qr-code,image-viewer,chat,chat-messageandchat-input(0.4.0-alpha.1), and since alpha.3:prompt-suggestions: clickable suggestion chips for an empty chat.reasoning: a collapsible block that streams a model's thinking, open whileIsStreamingand folded to "Thought for N seconds" after.tool-call: a tool's name with a pending, running, done or error badge; it opens to show the arguments, result or error.field: label, control, description and validation message as one unit, vertical or horizontal;Forshows theEditForm's messages.json-viewer: a highlighted, foldable JSON tree from a string or any object, with a copy button.resizableis now a real panel group:ResizablePanelGroup,ResizablePanel(DefaultSize,MinSize,MaxSize) andResizableHandle, dragged with the pointer or moved with the arrow keys, Home and End. The browser moves the panels and reports the sizes once, so dragging doesn't wait on Blazor Server. The oldResizablestays in the package, deprecated.
- Blocks.
init --dashboard 01|02wires a dashboard layout into the app, and the newauth-01,auth-02andauth-03blocks give apps that use ASP.NET Core Identity their own sign-in pages. - Compositional parts for AlertDialog, Breadcrumb, Command, Form, Menubar, Pagination, Sheet and Drawer. Each mode is opt-in, so existing markup keeps working.
SonnerService.Clear()andDestructivecontext menu items.- .NET 8 and 9. The CLI runs on .NET 8 or later, and
ShellUI.Componentstargets .NET 8, 9 and 10. The 0.3 line needed .NET 10.
🛠️ CLI
shellui add allinstalls every component except the page blocks;--exceptleaves out a component and everything that depends on it.shellui doctorchecks the project's setup and says how to fix each problem; it exits 1 on errors, so it can run in CI.shellui migraterewrites your pages for template API changes afterupdate:Input.InputVariant.X, the DatePicker and TimePickerSelected*parameters andPagination.OnPageChange. It shows each changed line and asks first (--dry-run,--yes), and points outCalendarhandlers that need aDateTime?.updatekeeps your changes and installs dependencies a component gained since you added it.addnever downgrades a NuGet package.removefollows yourComponentsPath.- One Tailwind CLI per machine in
~/.shellui/bin, with resumable downloads, instead of a copy in every project. - Razor class libraries:
initrecognises a library shared by several apps.
🐛 Fixes since 0.4.0-alpha.3
addhung on .NET 8 and 9 apps. The CLI waited fordotnet add package, npm and Tailwind to exit before reading their output, so once a process wrote more than a pipe buffer both sides waited forever.shellui add allstopped on restoring Blazor-ApexCharts. Output is now read while the process runs.- The CLI didn't start on a machine with only .NET 9 (or a newer runtime). It now rolls forward to any .NET 8 or later runtime.
doctorsaidapp.csswas stale right after a build. Tailwind skips writing unchanged output, so the file kept an old timestamp. The build now touches it;updatebrings the change to projects set up by alpha.2 and alpha.3.list --installedsaid "0 available" (and--available"0 installed"). The summary now counts every target.- Safelist: classes passed to
Shell.Cn("…")and literals in ternaries never reachedshellui-classes.txt, so 198 classes were missing for apps that build their own Tailwind CSS from the package. - Everything fixed in 0.3.5 and 0.3.6 is included.
⚠️ Breaking changes from 0.3
Calendar.SelectedDateChangedisEventCallback<DateTime?>. Handlers that take aDateTimemust take aDateTime?(shellui migratelists them).- CLI templates, after
shellui update:Input.InputVariantis nowInputVariant(newinput-variantstemplate); Stepper parts read the stepper'sActiveStepinstead of aCurrentStepparameter;ScrollAreadrops itsscrollbar-*classes;shellui add resizableinstalls the panel group.shellui migratefixes theInputVariantuses. - Still working but deprecated:
Pagination.OnPageChange,DatePicker.SelectedDate,TimePicker.SelectedTimeand the oldResizable.shellui migratemoves you off the first three.
⬆️ Upgrading
- CLI:
dotnet tool update -g ShellUI.CLI, then in each project commit, runshellui update, thenshellui migrate, and build.shellui doctorchecks the result. - NuGet package: update
ShellUI.Componentsto0.4.0. If you handleCalendar.SelectedDateChanged, change the handler's parameter toDateTime?. - If you used
Class="…!"to beat a component's own classes, you can drop the!.
📦 Installation
dotnet tool install -g ShellUI.CLI
# or upgrade an existing install
dotnet tool update -g ShellUI.CLIdotnet add package ShellUI.ComponentsFull Changelog: v0.3.6...v0.4.0
ShellUI v0.3.6
ShellUI v0.3.6
A small patch: both packages now show the ShellUI logo on nuget.org, and the
ShellUI.Componentssafelist includes the classes it was missing.
🐛 Fixes
- Safelist:
shellui-classes.txt, which apps building their own Tailwind CSS from the package use, was missing 181 classes the components render: every class passed toShell.Cn("...")inside aclassattribute, plus those in conditional expressions. Among them were the dialog's centring (translate-x-[-50%],translate-y-[-50%]),sm:rounded-lgand the Sonner variant colours, so in those apps dialogs weren't centred. The precompiledshellui-all.csswasn't affected. - Package icon:
ShellUI.CLIandShellUI.Componentsshowed nuget.org's default icon. They now use the ShellUI logo.
⬆️ Upgrading
- NuGet package: update
ShellUI.Componentsto0.3.6. If you build your own Tailwind CSS fromshellui-classes.txt, rebuild it afterwards. - CLI: update the tool to
0.3.6. Nothing changes in projects it set up.
📦 Installation
dotnet tool install -g ShellUI.CLI --version 0.3.6
# or upgrade an existing install
dotnet tool update -g ShellUI.CLI --version 0.3.6dotnet add package ShellUI.Components --version 0.3.6Full Changelog: v0.3.5...v0.3.6
ShellUI v0.3.5
ShellUI v0.3.5
A patch release that brings the 0.4 prerelease fixes to the stable line.
initno longer downloads the Tailwind CLI into every project,updatekeeps your changes,addnever downgrades a NuGet package, a component'sClassoverrides its own classes, overlays keep keyboard focus inside, and several component bugs are fixed. It also adds Razor class library support.
🛠️ CLI
- One Tailwind CLI per machine.
initused to download the 112 MB Tailwind CLI into every project, hold it in memory and give up after five minutes, so on a slow connection it failed and left the project half set up. The CLI now lives once in~/.shellui/bin(setSHELLUI_CACHE_DIRto move it), andinitand the build both run it from there; a copy in a project's.shellui/binstill wins. Downloads resume after a dropped connection, retry, and only stop after 60 seconds without data. If the download fails,initfinishes everything else and the next build tries again..shellui/gets its own.gitignore, so the folder stays out of git. updatekeeps your changes.shellui.jsonnow records a hash of each file the CLI writes.updateskips files you've changed since and says so (--forceoverwrites them), and installs dependencies a component gained since you added it, the same wayadddoes. Files installed by an earlier CLI have no hash; for those,updatekeepsapp-sidebarand thedashboard-*layouts when they differ from the template.updatemoves existing projects onto the shared Tailwind CLI. It replaces aBuild/ShellUI.targetswritten by an earlier CLI (unless you edited it) and deletes the project's copy of the Tailwind CLI when it is identical to the shared one.removefinds whatinstallwrote. It always looked inComponents/UI, so it ignored a customComponentsPath, couldn't remove the dashboard layouts, and reported every name as removed. It now uses the install path, reports only what it removed, and lists files that still use a removed layout.addnever downgrades a NuGet package. It used to set the exact version a component pins, so addingchartto an app on Blazor-ApexCharts 7 moved it back to 6.0.2. Now it adds a missing package or raises an older one, and leaves the same or newer versions, floating versions and ranges alone (includingDirectory.Packages.props).- Razor class libraries.
initrecognises a library shared by several apps, prints what each app needs with the library's_contentpath, and adds its@usingto a root_Imports.razor. Using ShellUI from a Razor class library covers Blazor Web App and MAUI Blazor Hybrid hosts.
✨ Components (package and CLI templates)
Classoverrides a component's own classes.Shell.Cnused to join strings, soClass="max-w-lg"on a component that setsmax-w-mdput both on the element and the stylesheet decided. Now, when two classes set the same CSS property under the same variants, the later one (yours) wins, like tailwind-merge:p-4replaces an earlierpx-2, text colour and text size stay separate, and unknown classes are kept. You no longer need the!modifier. Runshellui update shellto get it in a CLI project.- Focus stays inside open overlays.
Dialog,AlertDialog,SheetandDrawerkeep Tab and Shift+Tab inside while open and return focus to where it was when they close. The non-compositionalSheetandDrawerpanels now also take focus and close on Escape.
🐛 Fixes
RadioGroup(template): clicking an item did nothing, because the group never passed itself to its items.RadioGroupItemalso gainsDisabled.ScrollArea: long content was clipped instead of scrolling.HeightandMaxHeightnow size the scrolling element. Thescrollbar-*classes, which needed a Tailwind plugin nobody shipped, are gone.DatePicker(package): day 1 was always drawn under Sunday. It now sits under its real weekday, and the picker opens on the selected month.TimePicker:Stepnow filters the minutes (it was ignored), the picker opens on the current value, and Cancel or an outside click closes it.DateRangePicker(template) closes on an outside click;EmptyState(template) appliesClassand extra attributes.SheetandDrawer: clicks inside the panel no longer reach parent click handlers, and theSheetclose button shows when onlyDescriptionis set.Label(package) rendersForas theforattribute;FileUpload(package) uses an inline SVG icon instead of the Material Symbols font;CarouselItem(template) handles zero slides.- Still working but deprecated:
DatePicker.SelectedDateandTimePicker.SelectedTime. UseValue/@bind-Value.
⬆️ Upgrading
- CLI: update the tool, then run
shellui updatein each project. Commit first so you can review the changes. If the project still has a.shellui/bin/tailwindcssbinary afterwards, you can delete it: the next build downloads the shared copy. - NuGet package: update
ShellUI.Componentsto0.3.5. - If you used
Class="…!"to beat a component's own classes, you can drop the!.
📦 Installation
dotnet tool install -g ShellUI.CLI --version 0.3.5
# or upgrade an existing install
dotnet tool update -g ShellUI.CLI --version 0.3.5dotnet add package ShellUI.Components --version 0.3.5Full Changelog: v0.3.4...v0.3.5
ShellUI v0.4.0-alpha.3
ShellUI v0.4.0-alpha.3 🧪
The third 0.4 prerelease. A component's
Classnow overrides its own classes, dialogs and sheets keep keyboard focus inside,addnever downgrades your NuGet packages, and the CLI templates have been brought in line with the NuGet package, fixing several template bugs on the way. It also adds Razor class library support. It is a prerelease, so installs need--version. Report issues via GitHub Issues.
✨ Improvements
Classoverrides a component's own classes.Shell.Cnused to join strings, so<Card Class="max-w-lg">on a component that setsmax-w-mdput both on the element and the stylesheet decided. Now, when two classes set the same CSS property under the same variants, the later one (yours) wins, like tailwind-merge:p-4replaces an earlierpx-2, text colour and text size stay separate, and unknown classes are kept. You no longer need the!modifier. The NuGet package and the CLI'sShell.csshare the same code.- Focus stays inside open overlays.
Dialog,AlertDialog,SheetandDrawerkeep Tab and Shift+Tab inside while they're open, and return focus to where it was when they close. The legacy (non-compositional)SheetandDrawerpanels now also take focus and close on Escape. addnever downgrades a NuGet package. It used to set the exact version a component pins, so addingchartto an app on Blazor-ApexCharts 7 moved it back to 6.0.2. Now it reads the project'sPackageReference(orDirectory.Packages.props), adds a missing package or raises an older one, and leaves the same or newer, floating versions and ranges alone.- Razor class libraries.
initrecognises a library shared by several apps and prints what each app needs, with the library's_contentpath, and adds its@usingto a root_Imports.razor. Using ShellUI from a Razor class library has the full setup for Blazor Web App and MAUI Blazor Hybrid hosts.
🐛 Fixes: CLI templates now match the package
The CLI templates and the NuGet package had drifted apart. They're reconciled (210 of 217 components identical, the rest differ by design), and a test now compares them. Bugs this fixed:
RadioGroup(template): clicking an item did nothing, because the group never passed itself to its items.RadioGroupItemalso gainsDisabled.ScrollArea(template): long content was clipped instead of scrolling.HeightandMaxHeightnow size the scrolling element.DatePicker(package): day 1 was always drawn under Sunday. It now sits under its real weekday, and the picker opens on the selected month.TimePicker:Stepnow filters the minutes (it was ignored), the picker opens on the current value, and Cancel or an outside click closes it.DateRangePicker(template) closes on an outside click;EmptyState(template) appliesClass.SheetandDrawer: clicks inside the panel no longer reach parent click handlers; the close button shows when onlyDescriptionis set; the templates switch to compositional mode by themselves (noCompositional="true"needed).LabelrendersForas theforattribute;FileUploaduses an inline SVG icon instead of the Material Symbols font;CarouselItemhandles zero slides.Paginationsupports@bind-CurrentPagein both copies and ignores clicks on the current page;Toasthas success and warning variants,Position, auto-dismiss afterDuration(0 keeps it open) and a labelled close button;SkeletonhasVariant(default,circle,text);NavigationMenuItemis a dropdown whenTitleis set and a link or button otherwise.Table,Separator,Slider,Navbar,Checkbox,Switch,Tooltip,SidebarMenuButton,MenubarandThemeToggletemplates now match the package's markup and classes.
⚠️ Breaking changes (CLI templates, after shellui update)
- Input variants moved out of the component:
Input.InputVariant.Erroris nowInputVariant.Error, from the newinput-variantstemplate inComponents/UI/Variants(likeButtonVariant).TextareagainsVariant,ReadOnly,OnFocusandOnBlurthroughtextarea-variants. - Stepper parts read the stepper's
ActiveStepinstead of taking aCurrentStepparameter, and the template gains the package's data-drivenStepItemsmode (StepItemcomes from the newstepper-modelstemplate). - ScrollArea drops its
scrollbar-*classes, which needed a Tailwind plugin nobody shipped. - Still working but deprecated:
Pagination.OnPageChange(use@bind-CurrentPage),DatePicker.SelectedDateandTimePicker.SelectedTime(useValue/@bind-Value).
shellui update installs the new input-variants, textarea-variants and stepper-models templates for you, and skips files you've changed since installing them.
⬆️ Upgrading from 0.4.0-alpha.2
- CLI: update the tool, then run
shellui update. Commit first so you can review the changes, and fix anyInput.InputVariantand StepperCurrentStepuses (see above). - NuGet package: update
ShellUI.Componentsto0.4.0-alpha.3. - If you used
Class="…!"to beat a component's own classes, you can drop the!.
📦 Installation
# CLI (prerelease: the version is required)
dotnet tool install -g ShellUI.CLI --version 0.4.0-alpha.3
# or upgrade an existing install
dotnet tool update -g ShellUI.CLI --version 0.4.0-alpha.3# NuGet package
dotnet add package ShellUI.Components --version 0.4.0-alpha.3Full Changelog: v0.4.0-alpha.2...v0.4.0-alpha.3
ShellUI v0.4.0-alpha.2
ShellUI v0.4.0-alpha.2 🧪
The second 0.4 prerelease. It fixes
shellui update, which could leave a project upgraded from 0.3 unable to build, and makesupdatekeep the files you changed. The Tailwind CLI is now downloaded once per machine instead of into every project, and the download survives slow connections. It also fixesremove, the dark theme and the packageTimePicker. It is a prerelease, so installs need--version. Report issues via GitHub Issues.
🌬️ Tailwind CLI: once per machine
- Projects no longer hold the binary. The standalone Tailwind CLI (about 110 MB) is downloaded once into
~/.shellui/bin(orSHELLUI_CACHE_DIR), andinitand the build run it from there. A new project went from about 112 MB to 130 KB, and later projects set up offline. A copy in a project's.shellui/binstill takes precedence. The binary is a build tool and never shipped with your app. - Nothing in
.shellui/is committed: it now contains a.gitignoreof*. - Slow connections work. The download streams to a
.partialfile, resumes after a dropped connection, retries, and only gives up after a minute with no data. Before,initgave up after five minutes and left the project uninitialised. The build's own download uses the same cache and retries too. - A failed download no longer stops
init. It finishes the rest of the setup and warns, and the next build tries again; its warning names the URL and where to save the file.
🔧 shellui update and remove
updateinstalls new dependencies. Components gain parts between versions; in 0.4,breadcrumbgainedbreadcrumb-list,-link,-page,-separatorand-ellipsis, andtabsgainedtab-models.updateonly rewrote existing files, so a project updated from 0.3 failed to build (BreadcrumbList,TabItemnot found). It now installs missing dependencies the wayadddoes, with their NuGet packages and_Imports.razorusings.updatekeeps your changes.shellui.jsonnow records a hash of each file the CLI writes.updateskips files you have changed since and says so;--forceoverwrites them. Before,updatewith no names rewrote everything, includingapp-sidebarand the dashboard layouts that apps are meant to edit.removefinds files the way install writes them. It always looked inComponents/UI, so it ignored a customComponentsPath, could not remove dashboard or auth layouts, and reported every name as removed. It now removes layouts too, lists files that still use a removed layout (usuallyRoutes.razor), and counts what it removed.
🐛 Fixes
- Dark theme: the browser drew its own controls (the
<input type="date">calendar, number spinners, scrollbars, autofill,<select>lists) light on a dark page. The themes now setcolor-scheme: in the themeinitandtheme applywrite, and in the package'sshellui-theme.cssandshellui-all.css. - NuGet package
TimePickerthrew aFormatExceptionwheneverValuewas set. It now shows the time. - NuGet package
shellui-theme.csslogged a 404 on every page that linked it directly, because it started with@import "tailwindcss";. The file now holds only the theme;shellui-all.cssis unchanged. - NuGet packages now have the ShellUI icon and show the logo at the top of their README.
- Everything fixed in 0.3.3 and 0.3.4 is included.
⬆️ Upgrading from 0.4.0-alpha.1
- CLI: update the tool, then run
shellui update. Files installed by alpha.1 have no recorded hash, so this first update keepsapp-sidebar,sidebar-accountand the dashboard and auth layouts if they differ from the template, and rewrites the other components. Commit first so you can review the changes. From then on, every file you edit is kept. - Tailwind CLI: the same
shellui updatereplacesBuild/ShellUI.targetsif you haven't edited it, adds.shellui/.gitignore, and deletes the project's copy of the Tailwind CLI when it's the same as the shared one, so the project switches to the shared CLI. An edited targets file is left alone with a note. - Existing
input.css:updatedoesn't rewrite it. Addcolor-scheme: light;inside:rootandcolor-scheme: dark;inside.dark, or runshellui theme applyagain if you use a tweakcn theme. - NuGet package: update
ShellUI.Componentsto0.4.0-alpha.2.
Upgrading from 0.3: see the 0.4.0-alpha.1 notes below, then the steps above.
📦 Installation
# CLI (prerelease: the version is required)
dotnet tool install -g ShellUI.CLI --version 0.4.0-alpha.2
# or upgrade an existing install
dotnet tool update -g ShellUI.CLI --version 0.4.0-alpha.2# NuGet package
dotnet add package ShellUI.Components --version 0.4.0-alpha.2Full Changelog: v0.4.0-alpha.1...v0.4.0-alpha.2
ShellUI v0.3.4
ShellUI v0.3.4
A patch release with a
TimePickerfix for theShellUI.ComponentsNuGet package and dark-theme fixes for both the package and the CLI.
🐛 Fixes
- NuGet package:
TimePickerthrew aFormatExceptionwheneverValuewas set, because it formatted theTimeSpanwith a date pattern. It now shows the time, the same as the CLI template. - Dark theme: the browser kept drawing its own controls light on a dark page (the
<input type="date">calendar, number spinners, scrollbars, autofill and<select>lists). The themes now setcolor-schemetolightin:rootanddarkin.dark: inshellui-theme.cssandshellui-all.cssin the package, and in the themeshellui initandshellui theme applywrite.
A new test renders every package component that takes a value with a sample value set, so a component that only fails once it has a value fails CI.
⬆️ Upgrading
- NuGet package: update to
0.3.4. - CLI: update the tool. Existing projects keep their
input.css: addcolor-scheme: light;inside:rootandcolor-scheme: dark;inside.dark, or runshellui theme applyagain if you use a tweakcn theme.
ShellUI v0.3.3
ShellUI v0.3.3
A patch release with fixes for both the
ShellUI.ComponentsNuGet package and the CLI templates.
🐛 Fixes
- NuGet package: linking
shellui-theme.cssdirectly logged a 404 on every page load, because the file started with@import "tailwindcss";and the browser requestedtailwindcssas a URL. The theme file now holds only the theme; the precompiledshellui-all.cssis unchanged. CommandignoredCommandItem.Action: selecting an item only raisedCommandSelected. It now runs the item'sAction, then raisesCommandSelected, the same asCommandPalette.DropdownandPopovernow close on Escape.- CLI
SidebarProviderlogged aJSDisconnectedExceptiontwice on every full page reload, typed URL or closed tab. It now ignores the disconnected circuit when it cleans up.
New tests cover Command running Action and Escape closing Dropdown and Popover.
⬆️ Upgrading
- NuGet package: update to
0.3.3. - CLI: update the tool, then run
shellui updateto rewrite installed components from the new templates.updateoverwrites the files, so commit or back up any components you customized first.
ShellUI v0.4.0-alpha.1
ShellUI v0.4.0-alpha.1 🧪
The first 0.4 prerelease. It adds 14 components, compositional parts for eight existing ones, dashboard and sign-in page blocks, and support for apps that use ASP.NET Core Identity. It is a prerelease, so installs need
--version. Report issues via GitHub Issues.
✨ New components
The CLI now has 93 direct targets, up from 76 in 0.3.
| Target | What it is |
|---|---|
kbd |
Keyboard key hint |
aspect-ratio |
Fixed-ratio container |
button-group |
Joined buttons, horizontal or vertical |
toggle-group |
Single- or multi-select toggles (@bind-Value / @bind-Values) |
input-group |
Input with Prefix / Suffix slots |
number-input |
−/+ input with min, max and step |
stat-card |
KPI tile with a trend badge |
timeline |
Vertical event timeline |
tree-view |
Expandable, selectable tree (@bind-SelectedValue) |
qr-code |
QR code rendered as SVG (adds the QRCoder package) |
image-viewer |
Thumbnail with a zoomable lightbox |
chat, chat-message, chat-input |
AI chat panel, message bubbles with a streaming indicator, and a prompt input (Enter sends, Shift+Enter adds a line) |
🧩 Compositional parts
Eight more components can be built from parts, shadcn-style. Each mode is opt-in, so existing markup keeps working, and the parts install with their parent.
- AlertDialog:
AlertDialogTrigger,Content,Header,Title,Description,Footer,Action,Cancel. Escape acts as Cancel. - Breadcrumb:
BreadcrumbList,Link,Page,Separator,Ellipsis. - Command:
CommandInput,List,Group,CommandOption,Empty,Separator. The part isCommandOptionbecauseCommandItemis the model. - Form:
FormField,Item,Label,Control,Description,Message, with live validation inside anEditForm. - Menubar:
MenubarMenu,Trigger,Content,Separator. AMenubarItemwith aTitleis a dropdown; without one it is a clickable item. - Pagination:
PaginationContent,Item,Link,Previous,Next,Ellipsis. - Sheet and Drawer:
Header,Title,Description,Footer,Close. CLI templates use them withCompositional="true".
🧱 Blocks and shellui init
- Dashboard setup in
init:initasks for a layout (sticky headerdashboard-02, scrolling headerdashboard-01, or none), or takes--dashboard 01|02|none. Adding a dashboard wires it in:Routes.razoruses it, the stockMainLayoutandNavMenuare removed when unmodified, the error bar moves toApp.razor, and the sidebar links come from your pages. A custom layout is only replaced after you confirm or pass--replace-layout. - Sample pages restyled: unmodified
dotnet new blazorpages (Home, Counter, Weather, Error, NotFound, Auth) get ShellUI's Tailwind classes, and Home becomes a short guide to themes and components. Edited pages are listed, not changed. - ASP.NET Core Identity apps (
--auth Individual):- The
/Accountpages render statically while the rest of the app is interactive. Before,initmade every page interactive and the Identity pages returned Not Found. - The dashboard sidebar shows Log in and Register, or the signed-in user and Log out.
- New blocks
auth-01(centered card),auth-02(split screen) andauth-03(minimal) give the sign-in, sign-up and recovery pages their own layout and restyle the stock Identity pages for .NET 8, 9 and 10.
- The
- Tailwind CLI: in projects set up by this version, the build downloads the pinned Tailwind CLI when
.shellui/binhas none, for example after a fresh clone, and warns if it can't instead of silently skipping Tailwind. - Terminal:
initshows the ShellUI logo and an animated logo loader;add,updateand theme commands use a compact spinner. Both fall back to plain lines without an interactive terminal.
🎨 Component changes
- Loading is rebuilt with 23 variants, including
logo,snake,wave,typingandshimmer. Its keyframes ship inside the component, so the animations also work with the NuGet package. It followscurrentColor, hasrole="status", and slows down under reduced motion. - Command is rewritten: it filters as you type, supports ↑/↓/Home/End/Enter, optional
Groupheadings and a footer with key hints. Selecting an item now runs itsCommandItem.Action, then raisesCommandSelected; before,Actionwas ignored.CommandPalettegets the same behavior and a bindableIsOpen. - Dropdown and Popover close on Escape.
🐛 Fixes
- The CLI's
SidebarProviderloggedJSDisconnectedExceptiontwice on every page reload. It no longer does. init --tailwind standalone|npmnow skips the Tailwind prompt, which ignored the flag. An unknown value fails beforeinitchanges the project, and--yessays that standalone is the default.shellui updatereported every requested component as updated. It now counts updated, skipped and failed components separately.- Everything fixed in 0.3.1 and 0.3.2 is included.
⚠️ Breaking changes
- Calendar:
SelectedDateChangedis nowEventCallback<DateTime?>, so@bind-SelectedDateworks with aDateTime?field. Handlers that take aDateTimemust take aDateTime?.
⬆️ Upgrading from 0.3
- CLI: update the tool to this version, then run
shellui updateto rewrite installed components from the new templates.updateoverwrites the files, so commit or back up any components you customized first.Build/ShellUI.targetsis only written byinit, so projects set up with 0.3 keep the old Tailwind build step. - NuGet package: update
ShellUI.Componentsto0.4.0-alpha.1. If you handleCalendar.SelectedDateChanged, change the handler's parameter toDateTime?.
📦 Installation
# CLI (prerelease: the version is required)
dotnet tool install -g ShellUI.CLI --version 0.4.0-alpha.1
# or upgrade an existing install
dotnet tool update -g ShellUI.CLI --version 0.4.0-alpha.1# NuGet package
dotnet add package ShellUI.Components --version 0.4.0-alpha.1Full Changelog: v0.3.2...v0.4.0-alpha.1
ShellUI v0.3.2
ShellUI v0.3.2
A patch release with component fixes for both the
ShellUI.ComponentsNuGet package and the CLI templates.
🐛 Fixes
MultiSeriesChartthrew on every render in the NuGet package. It now renders, inside the same card asChart.- NuGet package:
ThemeToggleflipped its icon but did not change the theme, dialogs, sheets and drawers did not lock page scrolling, and close-on-scroll dropdowns stayed open. The package'sshellui.jsnow loads automatically through a Blazor JS initializer, with no<script>tag needed, and includes the functionsThemeToggle,ThemeServiceandFileUploadcall. ThemeTogglekept a list of instances shared by every user on Blazor Server, so one user's toggle tried to re-render other users' components. Toggles now follow the page'sdarkclass, so all toggles on a page stay in sync and start from the page's actual theme.DatePickerandDateRangePicker: the calendar popover has a width, so it is no longer squeezed in a flex row.DataPickerandMultiSelect: option rows are left-aligned, so customOptionTemplates no longer render centered.- Removed leftover files from the Razor class library template (
Component1,ExampleJsInterop,background.png) from the package.
A new test renders every package component and fails on parameter errors like the MultiSeriesChart one.
⬆️ Upgrading
- NuGet package: update to
0.3.2. - CLI: update the tool, then run
shellui updateto rewrite installed components, includingshellui.js, from the new templates.updateoverwrites the files, so commit or back up any components you customized first.
ShellUI v0.3.1
ShellUI v0.3.1
A patch release for the
ShellUI.ComponentsNuGet package. The CLI and its templates have no changes beyond the version number.
🐛 Fixes
Calendar,Command,DataTable,FileUpload,CarouselContent,CarouselDots,CarouselNextandCarouselPreviouscompiled into theShellUI.Components.Componentsnamespace, so@using ShellUI.Componentsdid not find them. They are now inShellUI.Componentslike every other component, and a test checks that every package component declares that namespace.
⬆️ Upgrading
Update the package to 0.3.1. If you added @using ShellUI.Components.Components to work around this, remove it: that namespace no longer exists, so the line now fails the build.