Skip to content
Introducing AI Conversations: Natural Language Interaction for Your Apps! Learn More

Controls Releases

Release notes for the MAUI packages (Shiny.Maui.Controls, Shiny.Maui.Controls.Markdown, Shiny.Maui.Controls.MermaidDiagrams) and the Blazor packages (Shiny.Blazor.Controls, Shiny.Blazor.Controls.Markdown, Shiny.Blazor.Controls.MermaidDiagrams).

Feature
Initial consolidated release of Shiny.Maui.Controls
Feature
Blazor support — Every control ships as a matching Razor component in Shiny.Blazor.Controls, with Markdown and Mermaid Diagrams in their own Shiny.Blazor.Controls.Markdown and Shiny.Blazor.Controls.MermaidDiagrams packages. Drop them into any .razor page — no DI registration required, just @using directives
Feature
TableView — 14 built-in cell types, three-level cascading styles, drag-to-sort, dynamic sections with ItemTemplate, and full MVVM support (MAUI + Blazor)
Feature
Scheduler — Calendar grid, agenda timeline, and event list views with ISchedulerEventProvider, custom templates, and AOT-safe bindings (MAUI + Blazor)
Feature
FloatingPanel — Draggable floating panel overlay (bottom, bottom with tabs, or top) with configurable detents, header peek when closed, backdrop dimming via OverlayHost, pan gestures, locked mode, fit-content auto-sizing, and keyboard handling. Includes ShinyContentPage convenience base class. Replaces the previous SheetView on MAUI (MAUI). Blazor retains SheetView as its equivalent component
Feature
PillView — Status badge with 6 preset themes (Success, Info, Warning, Caution, Critical), custom colors, and WCAG-accessible contrast (MAUI + Blazor)
Feature
SecurityPin — PIN entry control with individually rendered cells, optional character masking via HideCharacter, configurable length, cell sizing, colors, and keyboard type (MAUI + Blazor)
Feature
Fab & FabMenu — Material Design floating action button with circular or extended (icon + text) pill shapes, plus an expanding multi-action menu with staggered open/close animation, backdrop dimming, and two-way bindable IsOpen (MAUI + Blazor)
Feature
ImageViewer — Full-screen image overlay with pinch-to-zoom, pan when zoomed, double-tap to toggle zoom, and animated fade transitions (MAUI + Blazor)
Feature
ImageEditor — Inline image editor with cropping (drag-handle selection with dimmed overlay), rotation, freehand drawing with color, line and arrow drawing, text annotations with font family and font size selection, undo/redo stack, reset-to-original, and export to PNG/JPEG/WEBP at configurable resolutions. Every feature can be toggled on/off via properties, and the default toolbar is fully replaceable (MAUI + Blazor)
Feature
FontPicker — Font family selection control with inline list and popup button variants. Each font renders in its own typeface for instant preview. Includes FontSizePicker and FontSizePickerButton for size selection. Integrated into the ImageEditor toolbar (MAUI)
Feature
ChatView — Modern chat UI with message bubbles (left/right alignment, per-participant colors), visual grouping by sender and minute, typing indicators (“{Name} is typing…”), virtualized message list with load-more pagination, auto-link detection, image messages, bottom input bar with Enter-to-send and optional attach button, and scroll-to-first-unread support (MAUI + Blazor)
Feature
AutoCompleteEntry — Text input with debounced search, dropdown suggestions, busy spinner, custom item templates, and configurable thresholds. Supports both local filtering and remote async search via SearchCommand (MAUI + Blazor)
Feature
AddressEntry — Address search control built on AutoCompleteEntry with geocoding via Nominatim/OpenStreetMap by default, structured Address results with coordinates, country code filtering, and pluggable IAddressSearchProvider for custom geocoding services (MAUI + Blazor)
Feature
CountryPicker — Country search control built on AutoCompleteEntry with flag emoji display, country name, dial code, and full ISO 3166-1 data. Instant local filtering across all countries (MAUI + Blazor)
Feature
ColorPicker & ColorPickerButton — Full-featured color picker with HSV spectrum, hue bar, optional opacity slider, hex input, and live preview swatch. Available as an inline ColorPicker or a ColorPickerButton that opens a popup dialog with auto-contrast text (MAUI + Blazor)
Feature
Markdown (separate package) — Read-only MarkdownView renderer and MarkdownEditor with formatting toolbar, live preview, and customizable themes (MAUI + Blazor)
Feature
Mermaid Diagrams (separate package) — Native Mermaid flowchart rendering with Sugiyama layout, 6 node shapes, 6 edge styles, subgraphs, 4 themes, and pan/zoom (MAUI + Blazor)
Feature
ShinyDurationPicker — Standalone duration picker control (ShinyDurationPicker) that opens a FloatingPanel with hour/minute selection, “hr”/“min” labels, min/max constraints, and configurable minute intervals. The DurationPickerCell TableView cell uses the same FloatingPanel-based picker internally. Requires ShinyContentPage (MAUI)
Feature
FrostedGlassView — A view that applies a native frosted glass (blur) effect behind its content. iOS/macCatalyst uses UIVisualEffectView with theme-aware UIBlurEffect for true real-time backdrop blur. Android 12+ captures the background behind the view and applies RenderEffect blur for per-view frosted glass. Blazor uses CSS backdrop-filter: blur(). Configurable blur radius, tint color/opacity, and corner radius. Falls back to semi-transparent tint on older Android (MAUI + Blazor)
Feature
ChatView MessageTemplate — Custom DataTemplate and DataTemplateSelector properties (MessageTemplate, MessageTemplateSelector) for controlling how each chat message bubble’s content is rendered. Enables action buttons, cards, rich content, or any custom layout per message type while ChatView still manages bubble chrome (avatar, name, timestamp, colors, alignment) (MAUI)
Feature
TimePickerCell enhancementsUse24Hour property switches between 24-hour and AM/PM format; MinuteInterval constrains minute selection (iOS enforces natively via UIDatePicker.MinuteInterval, other platforms snap to nearest interval on selection) (MAUI)
Feature
Toast — Service-first toast notification system invoked via DI-injected IToaster.ShowAsync(text, cfg => {...}) (MAUI) or IToastService.ShowAsync(...) (Blazor). Supports auto-dismiss with configurable duration, manual dismiss via IDisposable, pill or fill-horizontal display modes, top/bottom positioning, queue or stack mode for multiple toasts, indeterminate spinner, countdown progress bar, icon, tap command/callback, full styling (colors, border, corner radius), feedback, screen reader announce, and iOS safe area awareness. No XAML or OverlayHost required — the overlay auto-attaches on first use (MAUI + Blazor)
Feature
TextEntry — Material Design-inspired text entry control with animated floating placeholder that slides up on focus, customizable border styling (color, thickness, corner radius, background), left/right tool slots for icons or interactive buttons, hint text for validation errors with automatic error state coloring, character count display, password masking, read-only mode, and keyboard type selection. Includes built-in ClearButtonTool (auto-shows/hides) and speech-to-text tools in the SpeechAddins packages (MAUI uses ISpeechToTextService, Blazor uses Web Speech API). Tools are TextEntryTool subclasses on both hosts with lifecycle hooks for parent text access (MAUI + Blazor)
Feature
TextEntry Input MaskingMask property enables declarative input formatting with # as digit placeholder and auto-inserted literal characters. Supports phone numbers (###) ###-####, credit cards #### #### #### ####, dates ##/##/####, SSN, ZIP codes, and custom patterns. Text always contains raw digits for clean binding/validation; FormattedText provides the display value. Keyboard auto-sets to Numeric, cursor positioning handled on both platforms (MAUI + Blazor)
Feature
TextEntryStepperTool — Built-in TextEntryTool subclass that increments or decrements the numeric value in a TextEntry by a configurable Step amount on each tap. Auto-displays +N or -N as button text when Text is not explicitly set. Place in LeftTools (decrement) and RightTools (increment) for a numeric stepper pattern (MAUI + Blazor)
Feature
ChatView IsSentChatMessage.IsSent property dims the bubble (50% opacity) for user messages until set to true, providing visual feedback for pending server confirmation (MAUI + Blazor)
Feature
ChatView IdentifierChatMessage.Identifier optional string property for attaching user-defined context (e.g., server message ID) to a message after it is sent (MAUI + Blazor)
Feature
ChatView AcknowledgementsChatMessage.Acknowledgements list of Acknowledgement objects (Glyph, UserId, Timestamp) rendered as grouped reaction badges below the chat bubble. Badges show the glyph emoji with a count when more than one user reacted with the same glyph (MAUI + Blazor)
Feature
Slider — A slider control with a two-color gradient track, blended thumb border that samples the gradient at the current position, tooltip with custom templates, and full drag/tap interaction via JS interop (Blazor) or pan/tap gesture (MAUI) (MAUI + Blazor)
Feature
ProgressBar — A progress bar with gradient fill and a configurable Vista-style shimmer pulse that sweeps left-to-right across the filled portion. Supports determinate mode with Value/Minimum/Maximum, indeterminate mode with sliding animation, text overlay with configurable format, and pulse triggers on value change or timed interval. Pulse has configurable PulseLength (sheen width as fraction of fill) and PulseSpeed (ms for one sweep). Gradient mode uses GradientStartColor/GradientEndColor for a linear gradient fill (MAUI + Blazor)
Feature
Overlay & LoadingOverlay — Full-screen overlay control with configurable backdrop color, transparency, and fade animation. The base Overlay supports any custom content via DataTemplate (MAUI) or RenderFragment (Blazor). The LoadingOverlay subclass provides a built-in loading template with either an indeterminate spinner (ActivityIndicator) or a determinate progress bar (using the ProgressBar control). Bindable IsShown property for show/hide with smooth animation, plus Message text support (MAUI + Blazor)
Feature
Feedback Service — All interactive controls fire events through the injectable IFeedbackService. The default HapticFeedbackService provides tactile click/long-press feedback. Replace it with SetCustomFeedback<T>() in UseShinyControls() to implement text-to-speech, sound effects, analytics, or any custom response. ChatView passes message text as details, enabling TTS for incoming messages. Every control’s UseFeedback property (default true) gates whether feedback fires