RavenRS/Docs
GitHub

Component parity with reference libraries

RavenRS aims to be more complete than the three reference libraries. This table tracks every component family they offer and where RavenRS stands. It is updated with each batch.

Legend: ✅ available · 🟡 partial (what is missing is noted) · ⬜ planned. Column S marks whether shadcn/ui ships it; D and T mark two commercial component suites for desktop and web.

Summary#

Families tracked ✅ 🟡 ⬜
All 122 82 7 33

Layout and structure#

Component S D T RavenRS
Stack (VStack/HStack), Spacer ✅
Overlap (ZStack) ✅ ZStack: as large as the largest layer
Page header, property row ✅ PageHeader, PropertyRow
Grid layout ✓ ✓ ✅ Grid
Card ✓ ✓ ✓ ✅ Card with a selected state, GlassCard (blur planned)
Separator ✓ ✅ Divider
Aspect ratio ✓ ✅ AspectRatio
Scroll area ✓ ✓ ✓ ✅ ScrollView (vertical; horizontal inside DataGrid)
Sticky content and scroll-driven effects ✓ ✓ ✓ ✅ Sticky, ScrollScene, ScrollLinked with ScrollLink (ranges, windows, easing, keyframes)
Links, anchors, counters, marquees ✓ ✓ ✓ ✅ Link, Anchor, CountUp (also counts to a new value, with even digits), Ticker with TimeLink, QuadField
Resizable panels / Splitter ✓ ✓ ✓ ✅ Splitter for two panes, SplitPanes for any number with limits, SplitHandle for a bar of your own; all move with the keyboard
Tile layout / Dashboard layout ✓ ✓ ✅ TileLayout: drag and resize, also from the keyboard; fewer columns when narrow; a layout to keep; controls in a tile's header (Tile::accessory)
Docking / Dock manager ✓ ✓ ✅ DockArea: a tree of splits and tabs in four places; moves by a drag with a mark on the target, by keys or by a menu; bars with limits and keys; docks that collapse and panels that close and come back; an arrangement saved as versioned text, where an unknown id is left out. Floating panels are left out: the app this was modeled on does not float them either
Window (floating) ✓ ✓ 🟡 FloatingPanel::movable: moves and reduces, does not resize
App bar / Toolbar ✓ ✓ ✅ Toolbar, ToolbarAction: what does not fit folds into a menu
Toolbar floating over content ✓ ✅ FloatingToolbar: translucent, placed by side, moved by a handle or the arrows
Arrows on the ends of a scrolling strip ✓ ✅ ScrollEdgeArrow: only where there is more to show, with the keyboard kept at the end
Custom title bar ✓ 🟡 TitleBar: title, actions and the window's buttons, drawing and calling back only. Dragging the window and hiding the system's frame belong to the platform layer, which offers neither yet
Footer ✅ Footer
Status bar ✓ ✓ ✅ StatusBar
Tool rail ✅ ToolRail: variants in a menu at the side, lines between groups, icons only, several columns
Timeline with tracks ✓ ✅ Timeline
Component S D T RavenRS
Tabs / TabStrip ✓ ✓ ✓ ✅ Tabs: underlined or segmented, sizes, the bar alone, disabled while waiting
Document tabs ✓ ✓ ✅ DocumentTabs: close, reorder by drag or keys, rename, color, a dot for what was not saved, context menu, scrolling with arrows
Sidebar / Drawer navigation ✓ ✓ ✓ ✅ Sidebar: closes to icons or off the screen, a rail along its edge, a brand, keys on a row, header and footer, groups, submenus, actions, badges, skeleton, sheet in narrow windows, floating and inset variants. Drag to resize: Splitter
Breadcrumb ✓ ✓ ✓ ✅ Breadcrumb: locations can be links, an icon at the root
Pagination / Pager ✓ ✓ ✓ ✅ Pagination
Accordion / PanelBar ✓ ✓ ✓ ✅ Accordion, Disclosure: any view as title, a mark, an on/off switch, open state kept by the app
Menu / Menubar ✓ ✓ ✓ ✅ Menubar
Ribbon (Office-style command bar) ✓ ✓ ✅ Ribbon (app menu, quick access, contextual tabs, collapse; key tips and gallery items planned)
Navigation menu (mega menu) ✓ ✓ ⬜
Context menu ✓ ✓ ✓ ✅ ContextMenu: submenus, check marks and any view in a row, like DropdownMenu
Stepper / Wizard ✓ ✓ ✅ Wizard: a step can refuse to be left or be marked with a problem; steps done can be reopened. StepIndicator, StepBadge for an app's own layout
Bottom navigation ✓ ⬜
TreeView ✓ ✓ ✅ TreeView: keyboard, selection, three-state checks, filter, items on demand, virtualized
Command palette ✓ ✅ CommandPalette

Buttons and actions#

Component S D T RavenRS
Button (variants, sizes, icons) ✓ ✓ ✓ ✅ Button, IconButton: loading that holds the width, selected, key cap in the label's color
Toggle button ✓ ✓ ✅ ToggleButton: count and pill shape
Favorite mark ✅ FavoriteToggle: heart or star
Swatch grid, color pair, nine-point anchor ✅ SwatchGrid (the handler gets the modifiers), ColorPair, NinePointAnchor
Toggle group / Button group ✓ ✓ ✓ ✅ ToggleGroup, and ButtonGroup for buttons glued side by side
Dropdown button ✓ ✓ ✓ ✅ DropdownMenu: submenus opened by hover, click or the Right arrow, check marks and any view in a row
Split button ✓ ✓ ✅ SplitButton
Floating action button ✓ ✓ ⬜
Speed dial ✓ ✓ ⬜
Floating action button with a panel ✓ ✓ ✅ FloatingPanel: a round button that drags between corners, or placed anywhere by its header with the place kept by the app; reduces to its header

Inputs and editors#

Component S D T RavenRS
Text box ✓ ✓ ✓ ✅ TextField (selection, clipboard, views before and after the text, clear button, sizes)
Text area (multi-line) ✓ ✓ ✓ ✅ TextArea: wraps, scrolls, builds only the lines in view, grows with the text between two limits
Code editor ✓ ✅ CodeEditor (feature code): Fira Mono, line numbers, Rust colors by token, Tab and Shift+Tab indent, Enter keeps the indentation, diagnostics mark the line and underline the columns. No horizontal scrolling or folding yet
Code playground ✅ Playground (feature code): one bar, code beside its result, an Output panel with Console (println!) and Problems (also from closures that fail later), examples that run when picked, Restore, Ctrl/Cmd+Enter runs through a Runner, problems marked on their lines, last result kept and faded, Code/Result/Output tabs with a ⋯ menu below 768 px, and download to save what the code makes. The gallery downloads each example as a Cargo project (ravenrs-project) that cargo runs on the desktop and builds for the browser; scripts/check.sh --full builds all of them. LiveRunner (feature live) runs edited Rust without a compiler through ravenrs-live: all 181 gallery examples, each building as many elements as compiled; what it cannot read yet would be listed in examples/component-gallery/live-pending.txt
Label ✓ ✓ ✓ ✅ Label
Form, field validation ✓ ✓ ✓ ✅ FormField + validators
Form layout (groups, columns, tabs, error list) ✓ ✓ ✅ FormLayout, FormGroup
Checkbox ✓ ✓ ✓ ✅
Radio group ✓ ✓ ✓ ✅
Switch ✓ ✓ ✓ ✅ Toggle, with a small size
Slider ✓ ✓ ✓ ✅ Slider: marks, colored track, fill from a neutral value that a double click returns to, value at the right
Value in small that opens a slider ✅ ValueSlider: a button, or a field with field, and the keyboard goes into the slider
Rename in place ✓ ✅ InlineRename: double click, F2 or Enter; Enter and leaving confirm, Escape cancels
Range slider ✓ ✓ ⬜
Select / Drop-down list ✓ ✓ ✓ ✅ Select: by index or by value (Select::of), search, sizes
Combobox / Autocomplete ✓ ✓ ✓ ✅ Combobox
Filter builder ✓ ✓ ✅ FilterBuilder: lines and groups over the expression language; "is any of" and "is none of" with values to pick; what it cannot show stays as text; also in the DataGrid toolbar and behind "Edit filter" on its filter panel, which opens every column's expression as one
Lookup (records loaded on demand) ✓ ✓ ✅ LookupField: from memory or a callback, ignores stale answers
Multi-select / Tag box ✓ ✓ ✅ TagBox: search, new values, a limit
Numeric input / Spin editor ✓ ✓ ✅ NumberField (range, step, separators, money in whole cents), Stepper
Masked input ✓ ✓ ✅ MaskedField
One-time code (OTP) ✓ ✓ ✅ InputOtp
Calendar ✓ ✓ ✓ ✅ Calendar
Year view ✓ ✓ ✅ YearView: twelve months with marks per day, clicks and one Tab stop
Date picker ✓ ✓ ✓ ✅ DatePicker
Date range picker ✓ ✓ ✓ ✅ DateRangePicker: two months, ready-made periods
Time picker / DateTime picker ✓ ✓ ✅ TimePicker, DateTimePicker
Theme picker and token editor ✓ ✅ ThemePicker: menu of themes. ThemeEditor: colors, corners and text sizes by token name, applied at once, with live contrast and JSON to copy and paste
Color picker / palette / gradient ✓ ✓ 🟡 ColorPicker: palette, shade square, hue and opacity bars, hexadecimal; gradients planned
Rating ✓ ✓ ✅ Rating: read-only at the cost of one element, or given with the pointer, arrows, Home, End and digits
File upload ✓ ✓ ✅ FileUpload, ImageField: the system's chooser and drops, on desktop and web; sending is up to the app
Drop zone ✓ ✓ ✅ DropZone: around any content, with the rules of FileUpload; every zone lights up during the drag, since platforms say only that files are over the window
Signature ✓ ⬜
Rich text editor ✓ ✓ ⬜
Code editor ✓ ⬜
Spreadsheet ✓ ✓ 🟡 Spreadsheet (ravenrs-spreadsheet): opens XLSX, XLS, ODS and CSV and saves XLSX, 500+ functions with recalculation, editing in the cell and the formula bar, pointer and keyboard selection, clipboard, undo, bold, italic, underline, alignment, number formats, column widths, sheet tabs. Planned: every command on a ribbon, frozen panes, charts and pictures on the sheet, conditional formats drawn, fill handle, find

Data#

Component S D T RavenRS
Table ✓ ✓ ✓ ✅ Table
Data grid ✓ ✓ ✓ 🟡 DataGrid; see its parity table in ARCHITECTURE.md
Tree list / Tree grid ✓ ✓ ⬜
Pivot grid ✓ ✓ ⬜
List / List view ✓ ✓ ✅ List, ListItem
Virtual list with rows of any height ✓ ✓ ✅ VirtualList: measured in layout and kept by key, jump to a row, stays at the end, still when rows enter above, keyboard and semantics of a list
Sortable list ✓ ✓ ✅ SortableList: a drag with a line at the target, Alt and the arrows, announced to screen readers. It keeps every row built, so it is for lists of a screenful
List box (with reordering) ✓ ✓ ⬜
Card view / Tile view ✓ ✓ ✅ CardView: virtualized, as many columns as fit, keyboard and selection
Scheduler (resource timeline) ✓ ✓ 🟡 Scheduler; gaps listed under "Scheduler" below
Calendar with events ✓ ✓ ✅ EventCalendar
Recurrence editor ✓ ✓ ✅ RecurrenceEditor, RecurrenceRule (reads and writes iCalendar's RRULE)
Gantt ✓ ✓ ⬜
Kanban / Task board ✓ ⬜
Timeline ✓ ⬜
File manager ✓ ✓ 🟡 FileBrowser: breadcrumb, sorting, selection, icon, size and date over the app's data, virtualized. No upload, tree of folders or thumbnails view

Charts and visualization#

Component S D T RavenRS
Bar / column chart ✓ ✓ ✓ ✅ Chart, BarChart: horizontal, grouped, stacked, negative, labels, active, focus that fades the rest, gradient, least length, growing from any side, categories on the line of zero
Area chart, sparkline ✓ ✓ ✓ ✅ Chart, AreaChart: stacked, expanded, gradient, curves; a sparkline with a tooltip and cursor when asked
Line chart ✓ ✓ ✓ ✅ Chart: natural, monotone, linear and step curves, dots, icons, labels
Pie / donut ✓ ✓ ✓ ✅ Chart: rings, active slice, a slice that comes forward under the pointer, center text, labels, guides with an elbow, a real gap between slices, a radius per slice
Radar, radial ✓ ✓ ✅ Chart: polygon and circle grids, filled, tracks, stacked
Chart tooltip, legend, keyboard ✓ ✓ ✓ ✅ ChartTooltip (share, color by value, free content, either side on both axes), ChartLegend, arrow keys; cursor and dots that glide and fade
Chart entrance ✓ ✓ ✓ 🟡 Chart, SankeyChart: the data draws in the first time it is painted, with axes and grid there from the first frame: lines, areas, candles and flows from the left, bars out of zero, pies clockwise, radars out of the center; the tooltip waits; no_appear, appear_key; animate_changes moves from old data to new, with the axis; radial bars only fade in ⬜
Chart axes ✓ ✓ ✓ ✅ Chart: dashed grid, columns, steps of the axis, labels measured with the real font, aligned ends, lines of reference, fixed domain
Scatter, bubble, funnel, financial ✓ ✓ 🟡 scatter in Chart, with a tooltip and cursor when asked; candlestick in Chart, with an axis of round numbers, outlines for what rose and the keyboard; bubble and funnel ⬜
Sankey ✓ ✓ ✅ SankeyChart: alignment, ribbons in a gradient, the rest fading around the focus, arrow keys, every flow read aloud, a clear message when the flows go in a circle
Gauges (linear, circular, arc) ✓ ✓ ✅ ProgressBar, Chart with RadialBar

The whole shadcn/ui chart catalog can be built with Chart and ChartCard: all 70 patterns are in the gallery's Charts page, under their names (examples/component-gallery/src/charts.rs). | Maps | | ✓ | ✓ | ⬜ | | Diagram / Org chart | | ✓ | ✓ | ⬜ | | QR code / Barcode | | ✓ | ✓ | ✅ Barcode: QR Code, Code 128, Code 39, EAN-13, EAN-8, UPC-A, ITF |

Overlays and feedback#

Component S D T RavenRS
Dialog / Alert dialog ✓ ✓ ✓ ✅ Dialog, ConfirmDialog: Escape, the backdrop and the X can each be turned off
Sheet / Drawer (side panel) ✓ ✓ ✓ ✅ Sheet
Splash screen ✓ ✓ ✅ SplashScreen
Tray icon, closing to it ✓ ✓ ✅ AppIdentity::close_to_tray
System notifications ✓ ✓ ✅ SystemNotifier
Popover ✓ ✓ ✓ ✅ Popover: any placement, with or without the panel
Tooltip ✓ ✓ ✓ ✅ Tooltip with a key cap, and .tooltip() on any view
Hover card ✓ ✅ HoverCard
Toast / Notification ✓ ✓ ✓ ✅ Toaster: six places, per stack or per toast, and toasts that stay until closed
Alert / Callout ✓ ✓ ✓ ✅ Alert: with a compact strip
Code snippet with copy ✓ ✅ CodeBlock
Release notes ✅ ReleaseNotes
Training film and player ✅ ravenrs::movie: Recorder, MoviePlayer, with click and key sounds, a voice and boxes that explain each step
Question that opens a film at the right moment ✅ MovieAssistant, MovieLibrary: words the films hold, no model
Film editor with timeline ✅ MovieEditor; its preview has no sound
Bug report with a film ✅ FlightRecorder, BugReporter
Progress bar ✓ ✓ ✓ ✅ ProgressBar: label, percentage, detail, height, color
Loader / Spinner ✓ ✓ ✅ Spinner
Lottie animation ✓ ✓ ✅ Lottie; no expressions, text layers, 3D, blend modes or effects other than Fill yet, and .lottie archives need unpacking first
Skeleton ✓ ✓ ✓ ✅
Badge ✓ ✓ ✓ ✅
Chip / Chip list ✓ ✓ 🟡 Badge (tone or own color, outline, height); removable chips via Button with an icon

Media and content#

Component S D T RavenRS
Avatar ✓ ✓ ✓ ✅ Avatar: initials or picture, with a ring
Icon set ✓ ✓ ✓ ✅ 200 Lucide icons
Image ✓ ✓ ✅ Image: dissolves into the next one if asked, and asks for frames only meanwhile
Carousel / Scroll view ✓ ✓ ✓ ✅ Carousel
Kbd ✓ ✅ takes the color of what it is in, on request
List of shortcuts ✅ ShortcutSheet, ShortcutHintBar, over Kbd and Dialog
Empty state ✓ ✅ EmptyState, over IconTile
Status dot, badge on a corner ✓ ✅ Dot, OverlayBadge
Banner, stacked meters, text with a shine ✅ HeroBanner, MultiProgress, ShimmerText (still with reduced motion)
Day divider in a list ✅ DaySeparator
Typography scale ✓ ✓ ✓ ✅ Text styles
PDF viewer ✓ ✓ 🟡 PagedDocumentView: bar, zoom and virtual pages, with pictures from the app. Reading the PDF and searching it are up to the app
Filmstrip ✅ Filmstrip: virtual, cells from the app, selection with modifiers, keyboard, arrows on the ends
Histogram ✅ Histogram: channels from ready-made bins, added up as light, linear or logarithmic, with marks at clipped ends
Ruler ✅ Ruler: horizontal or vertical, in the units of the caller, with a round step for the zoom, origin and marker; vertical numbers stack, since text does not rotate
Color wheel ✅ ColorWheel: hue and saturation on a disc that is computed once and shared, with arrow keys and Shift to keep the hue
Curve editor ✅ CurveEditor: points over a monotone curve, added with a press, removed with a double click or Delete, moved with the arrows; baseline and histogram behind
Zoom control ✅ ZoomControl: fit, 1:1, percentage, + and −, through a ZoomView shared with ZoomPanView and Minimap
Zoom and pan ✅ ZoomPanView: pinch, Cmd/Ctrl with the wheel, wheel and drag to move, double click, keys, inertia that respects reduced motion, limits. Content is an image or a closure: the runtime has no transform for a subtree
Minimap ✅ Minimap: a small copy with the rectangle of what is in view, by the same ZoomView as ZoomPanView, with drag and arrow keys
Composition grid ✅ RuleOfThirdsGrid: thirds, equal divisions, squares or the golden ratio, in a box or over a ZoomPanView, taking no input
Rubber band selection ✅ RubberBand: a rectangle drawn with a drag in Binding, selected on release, with the keyboard; costs no builds while dragged if nobody else reads it
Selection outline ✅ Marquee: marching ants around a rectangle, a path or loose segments, which stop and ask for no frames with reduced motion
Transform box ✅ TransformHandles: eight handles, turn and pivot over a BoxTransform in content units, with Shift and Alt as in image editors and the keyboard. It returns geometry and turns nothing, since the renderer has no transforms; CursorIcon has no diagonals, so corners show the hand
Protractor ✅ Protractor: a band of ticks along an arc that sets an angle by a drag from anywhere, a double click back to zero, keys and value
Crop ✅ CropOverlay: on TransformHandles and the lines of RuleOfThirdsGrid, with a veil outside, fixed proportion and angle, returning rectangle and angle. The frame turns over a still picture, since the renderer has no transforms
Eyedropper ✅ Eyedropper and EyedropperArea: an armed button that takes the color of the point clicked, which the caller supplies with a closure or EyedropperState::pick; Esc disarms. It does not capture the screen, and CursorIcon has no dropper, so the cursor is the hand
Compare images ✅ CompareView: two images side by side or with a divider dragged or moved with the arrows, through ImageQuad.uv, with captions and an optional chosen side
Image lightbox ✅ ImageLightbox: a picture over the whole app with zoom by ZoomPanView, arrows, Esc, caption and counter, from Labels
Image editor ✓ ⬜
Text with marks and links ✅ RichText: *bold*, _italic_, ~struck~, `code`, fenced blocks, lists, quotes and web addresses as links with click and keyboard, wrapped word by word. ravenrs-text has one style per text and no italic or monospace font, so italics are told apart by a muted color and code by a chip
Attachments of a message ✅ AttachmentStrip: icon or thumbnail, name that gives way, size, a menu for how to send it when there is a choice and a button to remove it; the app holds the list
Audio player ✅ AudioPlayerButton: play and stop over SoundProvider::speak_clip, progress by the clock, drawn without rebuilding, audio the app can deliver after the press, and a transcript to open or ask for. A new recording sends the old one back to rest. It has no seek, since the service does not report or change where it is
Bar over a multiple selection ✅ SelectionBar: the count from Labels, a way out by button or Esc, and actions over Toolbar, which go to a menu when they do not fit and wait for something chosen
Chat ✓ ✓ ✅ Chat, with marks and links by RichText and a photo, a document or a recording in the bubble by ChatMedia; MovieChat over training films
Choosing local AI models ✅ ModelPicker; ravenrs_ai::ModelManager offers only what fits

Reporting#

Component S D T RavenRS
Report engine (bands, groups, summaries, expressions) ✓ ✓ 🟡 ravenrs-report; see REPORTING-PARITY.md
Document viewer (pages, zoom, search, thumbnails) ✓ ✓ ✅ ravenrs-report-viewer
End-user report designer ✓ ✓ 🟡 examples/report-designer, live
Export: PDF, XLSX, DOCX, CSV, HTML, images ✓ ✓ 🟡 ravenrs-report-pdf, ravenrs-report-xlsx (XLSX and CSV), SVG per page, Excel, PDF and CSV from DataGrid; DOCX, HTML and PNG planned

Platform capabilities#

Capability S D T RavenRS
Themes (light, dark, custom tokens) ✓ ✓ ✓ ✅ Raven Dark, Light, Glass
Keyboard navigation and focus ✓ ✓ ✓ ✅
Screen reader support ✓ ✓ ✓ ✓ AccessKit on desktop, ARIA mirror on the web
Right-to-left ✓ ✓ ✓ ⬜ (Parley supports bidi; layout mirroring planned)
Localization (formats, strings) ✓ ✓ 🟡 number formats; Labels and Localized for component text (Ribbon, Carousel and InputOtp still fixed)
Animations ✓ ✓ ✓ ✅ springs, transitions, shared layout, enter and exit; 🟡 no rotation or group opacity yet
Native desktop and browser from one codebase ✅ (none of the three does both)

Scheduler#

The reference is Bryntum Scheduler. The behavior is the model and the implementation is our own.

Capability Status
Rows of resources, time axis with two header rows, bars by time ✅
Hours, days, weeks and months, with zoom keeping the same time ✅
Drag along time and between rows, resize by the ends, draw on an empty stretch ✅
Snap to the scale, refusal through can_drop, locked and fixed-length events ✅
Overlapping events on lanes, with the row growing ✅
Rows sharing the height left over (fill_rows) ✅
A full look: tinted bars with a stripe, a second line on bars, avatars, today's column (card, event_detail, avatars) ✅
Weekend shading, marked time ranges, a line at now, opening at now ✅
Collapsible groups of resources ✅
Keyboard for events; names and dates for screen readers ✅
Only what is in view is built ✅ tested with 5,000 rows
Recurring events ✅ RecurrenceRule; the app expands the days
Scrolling the wheel over the resources column ✅
Scrolling by itself while dragging near an edge ✅
Tooltip while hovering over or dragging an event ✅ with card
Scrolling a bar into view when keyboard focus moves to it ✅
Dependencies between events ⬜
Resource tree of any depth, multiple assignment, extra columns ⬜
Working hours, non-continuous axis, vertical mode, nested events ⬜
Summaries and histograms per row or period ⬜
Dragging from a list or grid onto the timeline, or between schedulers ⬜
Menus on events and on empty stretches (event_menu, lane_menu), zoom with a pinch or Ctrl and the wheel ✅
Undo and redo 🟡 the app keeps the moves, as in Raven Finanças' agenda; none built in
Built-in event editor ⬜
Export to PDF, PNG, Excel and ICS, printing ⬜
RavenRS 27.1.27One UI. Native and web.
RavenRS Docsv27.1.27