Expand description
egui-cha-ds: Design System for egui-cha
Provides themed UI components following Atomic Design principles:
- Atoms: Basic building blocks (Button, Input, Badge, etc.)
- Molecules: Combinations of atoms (SearchBar, FormField, etc.)
- Theme: Consistent styling across all components
§Usage with TEA (The Elm Architecture)
Components are designed to work with egui-cha’s ViewCtx:
ⓘ
fn view(model: &Model, ctx: &mut ViewCtx<Msg>) {
Button::primary("Click me").on_click(ctx, Msg::Clicked);
Input::new()
.placeholder("Enter text")
.show_with(ctx, &model.text, Msg::TextChanged);
}Modules§
- audio
- Audio atoms - Audio visualization and control components
- extras_
raw - Re-export egui_extras for advanced usage
- icons
- Phosphor Icons codepoints (Regular weight)
- layout_
helpers - Layout Helpers - Collision detection and spatial utilities
- midi
- MIDI atoms - MIDI input, monitoring, and editing components
- mixer
- Mixer atoms - Audio mixing and effects components
- plot_
raw - Re-export egui_plot for advanced usage
- prelude
- Prelude for convenient imports
- semantics
- Semantics - Domain-specific UI components
- visual
- Visual atoms - Video/graphics editing components
Macros§
- cha
- Main macro for declarative layout composition with ViewCtx
Structs§
- Active
Note - Active note with velocity
- ArcSlider
- A modern arc slider control
- Automation
Lane - Automation lane component
- Automation
Plot - Automation curve plot for DAW-style parameter automation
- Automation
Point - An automation point
- Badge
- A badge/tag component
- BarPlot
- Bar chart plot
- Beat
Indicator - Compact beat indicator showing current beat position
- Beat
Sync - Beat sync widget
- BpmDisplay
- Large numeric display for BPM/tempo
- Button
- A styled button component
- Button
Group - A radio-style button group that returns normalized 0.0-1.0 values
- Capacity
Gauge - Capacity gauge with threshold-based coloring
- Card
- A card container with optional header
- CcValue
- CC value with optional label
- Channel
Strip - Channel strip component
- Chat
- Chat component - displays a scrollable chat view with input
- Chat
Message - A single chat message
- Chat
State - State for Chat (owned by parent)
- Checkbox
- A checkbox component for TEA architecture
- Clip
Cell - A single clip/phrase cell data
- Clip
Grid - Ableton Live style clip launcher grid
- Code
- Inline code styling
- Code
Block - Code block for multi-line code
- Color
Wheel - HSV Color wheel picker
- Command
Item - A single command item
- Command
Palette - Command Palette UI component
- Command
Palette State - State for CommandPalette (store in your Model)
- Confirm
Dialog - Convenience for confirmation dialogs
- Cross
Fader - A/B Crossfader component
- Dashboard
Layout - Dashboard layout builder
- Dashboard
State - Persistent state for DashboardLayout
- Data
Table - Builder for table with typed data (uses egui_extras when available)
- Effect
- An effect in the rack
- Effect
Param - An effect parameter
- Effect
Rack - Effect rack component
- Envelope
Editor - Envelope editor component
- Envelope
Plot - Envelope plot for ADSR and similar curves
- Envelope
Point - Envelope point for custom envelopes
- Error
Console - ErrorConsole component
- Error
Console State - State for ErrorConsole (owned by parent)
- Error
Entry - An error entry with timestamp
- Fader
- A vertical fader control
- Form
- Form builder for creating validated forms (TEA-style)
- Frequency
Plot - Frequency response plot for EQ curves
- Gradient
- Gradient data
- Gradient
Editor - Gradient editor widget
- Gradient
Stop - A color stop in the gradient
- Heatmap
Cell - Data for a single heatmap cell (for callback-based usage)
- Heatmap
Grid - Heatmap grid for visualizing multi-agent states
- Hsva
- HSV color representation
- Icon
- Icon component using Phosphor Icons
- Icon
Menu - Menu with icons
- Input
- A text input component with Theme styling
- KeyBind
- Keyboard shortcut definition
- Knob
- A rotary knob control
- Layer
- A single layer’s data
- Layer
Stack - VJ-style layer stack with blend modes and opacity
- Layout
Pane - A pane in the node layout
- Level
Meter - Level meter widget for audio visualization
- Line
Plot - A simple line plot with theme integration
- Link
- A hyperlink component
- List
Item - A selectable list item with optional icon and badge
- LogEntry
- A single log entry
- LogFilter
- Filter settings for log display
- LogStream
- LogStream component - displays a scrollable log view
- LogStream
State - State for LogStream (owned by parent)
- Mappable
Param - A parameter that can be mapped
- Mask
- Mask data
- Mask
Editor - Mask editor widget
- Mask
Point - A point in the mask (normalized 0.0-1.0)
- Media
Browser - Media browser widget
- Media
Item - A media item in the browser
- Menu
- Vertical menu component (like Tabs but vertical)
- Midi
Keyboard - Piano keyboard display
- Midi
Mapper - MIDI mapper widget
- Midi
Mapping - A MIDI mapping assignment
- Midi
Monitor - MIDI monitor component
- Midi
Note - A MIDI note in the piano roll
- Modal
- A modal dialog component
- Muted
Text - Builder for creating text with explicit muted color
- Navbar
- A navigation bar component
- Node
Layout - Node layout container
- Node
Layout Area - Node layout area widget
- Oscilloscope
- Real-time oscilloscope display
- Output
Router - Output router widget
- PadCell
- A single pad cell data
- Piano
Roll - Piano roll component
- Preview
- Preview component
- Quick
Action Bar - Quick Action Bar - horizontal toolbar of icon buttons
- Quick
Action Column - Vertical variant of QuickActionBar
- Route
Connection - A routing connection
- Route
Output - A routing output destination
- Route
Source - A routing source
- Sample
Pad - MPC-style sample trigger pad grid
- Search
Bar - A search bar with input and button
- Select
- A dropdown select component
- Sidebar
Config - Configuration for sidebars
- Slider
- A slider component
- Sparkline
- Compact inline chart for time-series data
- Sparkline
Buffer - Fixed-capacity ring buffer for time-series data
- Spectrum
- A frequency spectrum visualization component
- Status
Indicator - Visual status indicator with optional animation
- StepSeq
- TR-808/909 style step sequencer grid
- Strip
- Strip layout helper with theme integration
- Sync
State - Sync state data
- TabPanel
- Tab panel - content container that shows based on active tab
- Table
- A simple table component (without egui_extras)
- Tabs
- Tab bar component
- Text
- A styled text component
- Theme
- Design system theme containing all style tokens
- Theme
Config - TOML-friendly theme configuration with human-readable color format.
- Timeline
- Timeline component
- Timeline
Marker - A marker on the timeline
- Timeline
Region - A region on the timeline (loop region, selection, etc.)
- Toast
Container - Container for managing toast notifications
- ToastId
- Unique identifier for a toast
- Toggle
- A toggle switch component
- TopBar
Config - Configuration for the top bar
- Transform2D
- 2D Transform data
- Transform
Gizmo - 2D Transform gizmo for VJ/visual applications
- Transport
Bar - Transport bar with playback controls
- Validated
Input - A text input with validation state
- Waveform
- A waveform visualization component
- Workspace
Canvas - Flexible workspace canvas with Tile and Free layout modes
- Workspace
Pane - A pane (window) in the workspace
- XYPad
- A 2D pad control for X/Y parameter adjustment
Enums§
- Animation
- Animation type for status indicator
- ArcSlider
Size - Arc slider size variants
- ArcStyle
- Arc style variants
- Arrange
Strategy - Strategy for auto-arranging panes
- Aspect
Ratio - Aspect ratio presets
- Automation
Curve - Automation curve type between points
- Automation
Event - Automation events
- Badge
Variant - Badge variant
- Beat
Division - Beat division for sync
- Beat
Sync Event - Events emitted by BeatSync
- Blend
Mode - Blend modes for layer compositing
- Browser
View Mode - Browser view mode
- Button
Variant - Button variant for different styles
- Cell
State - Cell state for color mapping
- Channel
Event - Channel strip events
- Chat
Role - Message sender role
- Clip
State - Clip state for visual representation
- Column
Width - Column width specification (re-exported for convenience)
- Command
Entry - An entry in the command palette (item, separator, or group)
- Confirm
Result - Result of showing a confirm dialog
- Context
Menu Item - Context menu item
- Crossfader
Curve - Crossfader curve types
- Crossfader
Orientation - Crossfader orientation
- Curve
Type - Curve type between points
- Dashboard
Event - Events emitted by DashboardLayout
- Data
Column Width - Column width specification
- Display
Size - BPM display size variants
- Display
Style - BPM display style
- Edge
- Edge direction
- Effect
Category - Effect type category
- Envelope
Event - Envelope events
- Error
Console Msg - Messages for ErrorConsole
- Error
Level - Error severity level for display in ErrorConsole
- Fader
Size - Size variant for Fader
- Gizmo
Handle - Which part of the gizmo is being manipulated
- Gradient
Direction - Gradient direction
- Gradient
Event - Events emitted by GradientEditor
- Group
Orientation - Button group orientation
- Group
Size - Button group size variants
- Keyboard
Event - Keyboard events
- Knob
Size - Size variant for Knob
- Layer
Event - Events emitted by LayerStack
- Layout
Mode - Layout mode for workspace
- Learn
State - Learn mode state
- List
Item Size - Size variant for ListItem
- Lock
Level - Lock level for panes and canvas
- Mask
Event - Events emitted by MaskEditor
- Mask
Shape - Mask shape type
- Media
Browser Event - Events emitted by MediaBrowser
- Media
Type - Media type
- Meter
Mode - Level meter display mode
- Meter
Orientation - Level meter orientation
- Midi
Mapper Event - Events emitted by MidiMapper
- Midi
Message - MIDI message types for display
- Midi
MsgType - MIDI message type for mapping
- Monitor
Mode - Monitor display mode
- Node
Layout Event - Events emitted by NodeLayoutArea
- Output
Type - Output type
- PadEvent
- Events from pad interactions
- Piano
Roll Event - Piano roll events
- Preview
Event - Preview events
- Preview
State - Preview state indicator
- Quick
Action Size - Size variant for quick action buttons
- Quick
Action Style - Visual style for quick action buttons
- Rack
Event - Effect rack events
- Rack
Orientation - Effect rack orientation
- Router
Event - Events emitted by OutputRouter
- Scope
Mode - Oscilloscope display mode
- Snap
Target - Snap target for visual feedback
- Source
Type - Source type
- Spectrum
Color Mode - Color mode for spectrum bars
- Status
- Status state with predefined colors and animations
- Step
Event - Events from step sequencer interactions
- Step
Value - Step value representing the state of a single step
- Strip
Direction - Strip direction
- Strip
Size - Size specification for strip cells
- Text
Size - Text size variants based on theme typography tokens
- Theme
Load Error - Error loading theme from file
- Theme
Save Error - Error saving theme to file
- Theme
Variant - Theme variant
- Time
Format - Time display format
- Timeline
Event - Timeline events
- Timestamp
Format - Timestamp display format
- Toast
Position - Position for toast container
- Toast
Variant - Toast variant determines the visual style
- Transform
Event - Transform events emitted by the gizmo
- Transform
Mode - Transform mode
- Transport
Event - Transport control events
- Trigger
Mode - Oscilloscope trigger mode
- Validation
State - Validation state for form inputs
- Waveform
Style - Waveform display style
- Wheel
Style - Color wheel style
- Workspace
Event - Events emitted by WorkspaceCanvas
Traits§
- Context
Menu Ext - Extension trait for adding context menu to Response
- Lightweight
Theme - Minimal theme trait for quick theme creation.
- Response
Ext - Extension trait for adding themed tooltips to any Response
- Theme
Provider - Trait for converting external theme systems to DS Theme
Functions§
- dashboard_
3col - Create a simple three-column dashboard layout
- dashboard_
full - Create a dashboard with top bar and three columns
- navbar
- Simple horizontal nav bar (functional style)
- setup_
fonts - Set up icon fonts for egui-cha-ds components.
- sidebar
- Sidebar navigation (vertical)