feat: v0.4 components, loaders, command palette rework, overlay a11y fixes - #32
Merged
Merged
Conversation
added 7 commits
September 27, 2026 14:29
Added new components including StatCard, Chat, ButtonGroup, ToggleGroup, InputGroup, NumberInput, TreeView, Timeline, QrCode, ImageViewer, AspectRatio, and Kbd. Updated the ComplexComponentsDemo and created a NewComponentsDemo to showcase these additions. Enhanced the App layout with a new CSS link for charts and improved the command palette functionality. Updated Home and Components pages to reflect the new components and their usage.
Updated the component registry to reflect the current totals: 194 entries, including 90 direct install targets and 104 hidden dependency entries. Adjusted various documentation files to ensure consistency with the new counts, including README, architecture, CLI syntax, and contributing guidelines. This change enhances clarity for users regarding available components and their classifications.
…component versions - Added QRCoder package reference to the BlazorInteractiveServer project. - Updated shellui.json to include a new LayoutPath and updated versions for several components to 0.3.0-rc.2. - Introduced new CSS file for chart styles to enhance visual consistency across chart components.
- Introduced new components: AspectRatio, ButtonGroup, Chat, ChatInput, ChatMessage, ChatTemplate, CommandModels, CommandPalette, Command, DrawerContent, ImageViewer, InputGroup, Kbd, Loading, and NumberInput. - Updated existing templates to improve functionality and user experience, including enhancements to the DialogContent and DrawerContent templates for better accessibility and focus management. - Added necessary namespaces and parameters to support new features and improve integration with existing components.
- Introduced `RequiredImportsTests` to validate namespace imports for component files. - Added `InputCssTests` to ensure focus outline behavior is correctly applied in the CSS templates. - Expanded `TemplateSyncTests` with additional data entries for new UI components, enhancing template validation coverage.
- Added multiple new UI components to the ComponentRegistry, including Kbd, AspectRatio, ButtonGroup, ToggleGroup, InputGroup, NumberInput, StatCard, Timeline, TreeView, QrCode, ImageViewer, ChatMessage, ChatInput, and CommandModels. - Updated the GetComponentContent method to include content retrieval for the newly added components, enhancing the overall functionality and usability of the component library.
- Added `EnsureImports` method to manage and update necessary namespace imports for component files dynamically. - Introduced `RequiredImports` method to determine required namespaces based on file paths, improving the integration of components with sub-namespaces. - Updated the import handling logic to append missing imports to the `_Imports.razor` file, ensuring that all required namespaces are included for proper functionality.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The first 0.4 feature batch: 14 new components, a rebuilt
Loadingwith 23 variants, a reworked command palette, and fixes found while testing the demo against what the CLI installs. Merge afterv0.3.0is tagged;Directory.Build.propsis untouched, so it merges cleanly ontomain.New components (90 direct targets, up from 76; 194 registry entries)
Each is written once in
ShellUI.Componentsand its CLI template generated from that file.TemplateSyncTestskeeps the two copies identical. Sub-parts are hidden (IsAvailable = false) and install automatically with their parent.kbdaspect-ratiobutton-grouptoggle-group@bind-Value/@bind-Values)toggle-group-iteminput-groupPrefix/Suffixslotsnumber-inputstat-cardtimelinetimeline-itemtree-view@bind-SelectedValue)tree-view-itemqr-codeQRCoder1.8.0image-viewerchatchat-message,chat-inputchat-messageTextkeeps line breakschat-inputNone of them use custom JavaScript.
Loading: rebuilt, 23 variants
shellui-loading-*and ship inside the component. Before, the bars animations only existed ininit's CSS, so they never animated for NuGet users.transformandopacity.currentColor, soClass="text-…"changes it.role="status", and it slows down under reduced motion rather than stopping.logo(the ShellUI mark, sweeping between logo and its inverse; theme-aware),snake,rows,columns,sequence,twinkle,activity,chase,dual-ring,wave,typing,ripple,progress,shimmer.orbit, as an SVG with a comet tail.Command palette
Commandrewritten: anchored near the top of the screen, filters as you type, ↑/↓/Home/End/Enter, the highlighted row scrolls into view and follows the mouse, optionalGroupheadings, a footer with key hints and a count, and a "No results" state. No custom JavaScript.CommandItemmoved to a hiddencommand-modelstemplate. This fixes the rc.2 compile error, where the class sat after@codeand was never compiled.CommandPalettegains bindableIsOpen/IsOpenChanged, so a button and Ctrl+K can share the same state.Fixes
shellui.jsshortcuts required Ctrl and ⌘, so Ctrl+K never fired. Either key now works (package and CLI copies).role="dialog"andaria-modal.alert-dialogdidn't compile: it was missing itsVariantsimport.shellui addnow adds@using ….Components.UI.Variants/.Components.Modelsto_Imports.razoronce files in those namespaces exist.initwritesh1:focus { outline: none; }, restoring the stock rule thatFocusOnNavigaterelies on (lost wheninitoverwritesapp.css).FollowCursor).bg-mutedand rows no longer touch.Demo
/components/new.SidebarProvider,shellui.jsand the chart files (which addedwwwroot/css/charts.css) were stale and are now reinstalled. This fixes Ctrl+B.CommandPalette. A leftover layout Ctrl+K handler that closed the palette 33 ms after opening is removed.app.css: rebuilt in Release, so it's minified.Docs
Tests (129 passing, up from 107)
command._Importswiring:RequiredImportsadds the right namespaces.initCSS: keeps theh1:focusrule.Classparameter, no external icon fonts.Test plan
ShellUI.slnx: 0 warnings, 0 errorsdotnet test: 129/129dotnet new blazor+init+addwith all 90 components: builds with 0 warnings,_Importsupdated automaticallytoggle-group timeline tree-view chat command qr-code) pulls in all hidden sub-parts and QRCoderFollow-ups
feat/init-dashboard: wire dashboard layouts oninit/add.