Regeants Academy
    Upboard SchoolRubyUI Design System

    RubyUI Component Gallery

    Complete interactive reference of all 50 RubyUI components built with Phlex, Stimulus, and Tailwind CSS v4.

    Live Theme & Light/Dark Studio

    Switch color palettes, toggle Light or Dark mode for any theme, and adjust border radius across all 50 components below.

    Live CSS Variables

    1. Choose Color Theme

    2. Choose Typography / Font Family

    3. Appearance Mode (Light / Dark)

    4. Border Radius (--radius)

    Active Theme Token Preview

    Background
    Card
    Primary
    Secondary
    Muted
    Accent
    Destructive
    Success
    Warning

    Typography

    #typography

    Headings, body text, blockquotes, inline code, and links.

    Headings (H1 - H4)

    Heading 1 — The quick brown fox

    Heading 2 — Jumps over the lazy dog

    Heading 3 — Pack my box with five dozen liquor jugs

    Heading 4 — How vexingly quick daft zebras jump

    Text Sizes, Weights, Blockquote, InlineCode & InlineLink

    Size 5 Bold Text

    Size 4 Semibold Text

    Size 3 Medium Text (Default size)

    Size 2 Muted Text

    Size 1 Caption Text

    “After all,” he said, “everyone enjoys a good joke, so it's only fair that they should pay for the privilege.”

    Install the package by running bin/rails g ruby_ui:install or visit the documentation.

    Button

    #button

    Displays a button with multiple variants, sizes, and states.

    Variants

    Sizes & Icons

    Badge

    #badge

    Displays a status badge in semantic and Tailwind color palettes.

    Semantic Variants & Sizes

    DefaultPrimarySecondaryOutlineDestructiveWarningSuccess
    SmallMediumLarge

    Color Palette Variants

    RedOrangeAmberYellowLimeGreenEmeraldTealCyanSkyBlueIndigoVioletPurpleFuchsiaPinkRose

    Toggle

    #toggle

    A two-state button that can be either on (pressed) or off.

    Variants, Sizes & States

    Toggle Group

    #toggle-group

    A set of two-state buttons that can be toggled together (single or multiple).

    Single & Multiple Selection

    Single (Outline)

    Multiple (With Spacing)

    Theme Toggle

    #theme-toggle

    Switches between light and dark themes.

    Icon & Text Theme Toggles

    Shortcut Key

    #shortcut-key

    Visual keyboard shortcut indicator.

    Keyboard Combinations

    ⌘K
    CtrlShiftP
    Esc

    Clipboard

    #clipboard

    Copies source content to the system clipboard with popover feedback.

    Copy Text & Secret Key

    Form

    #form

    Composable form fields with labels, hints, and automatic HTML5 validation errors.

    Form with Validation, Hint & Disabled States

    This is your public display name.

    Input

    #input

    Text, email, password, number, and file input controls.

    Input Types & States

    Textarea

    #textarea

    Multi-line text input field.

    Default, Custom Rows & Disabled

    Checkbox

    #checkbox

    Control that allows toggling between checked and unchecked.

    Default, Checked, CheckboxGroup & Disabled

    Radio Button

    #radio-button

    Single selection from a set of mutually exclusive options.

    Radio Group Options

    Switch

    #switch

    Toggle switch between on and off states.

    Default, Checked & Disabled Switches

    Native Select

    #native-select

    Styled HTML select dropdown with option groups.

    Basic & Grouped Native Select

    Select

    #select

    Custom accessible dropdown select menu powered by Floating UI.

    Custom Select with Pre-selected & Placeholder

    Combobox

    #combobox

    Autocomplete input and searchable dropdown list.

    Searchable Combobox (Single & Multi-Checkbox)

    Input OTP

    #input-otp

    One-time password input with automatic slot advancing and paste support.

    6-Digit Continuous & Grouped OTP

    Standard 6-digit

    Grouped (2-2-2)

    Masked Input

    #masked-input

    Input fields formatted automatically with Maska patterns.

    Phone, Date & Hex Color Masks

    Calendar

    #calendar

    Interactive month/year date grid that can bind to an input element.

    Standalone Calendar & Linked Input

    Date Picker

    #date-picker

    Popover calendar date selector combined with an input trigger.

    Popover Date Picker

    Card

    #card

    Flexible container with header, title, description, content, and footer.

    Project Card & Stats Card

    Create Course Module

    Deploy a new learning curriculum in one click.

    Active Students

    +14.2%

    Current semester enrollment

    1,429

    182 new enrollments this week.

    Accordion

    #accordion

    Vertically stacked interactive headings that reveal content sections.

    FAQ Accordion

    Collapsible

    #collapsible

    Interactive container that expands and collapses a panel.

    Expandable Repository List

    @upboard-school has 3 active courses

    CS-101: Ruby Fundamentals
    CS-201: Full-Stack Rails 8
    CS-301: PostgreSQL Architecture

    Tabs

    #tabs

    Layered sections of content displayed one panel at a time.

    Account & Password Tabs

    Pagination

    #pagination

    Page navigation with next, previous, and ellipsis links.

    Pagination Bar

    Separator

    #separator

    Visually or semantically separates content horizontally or vertically.

    Horizontal & Vertical Separators

    Upboard School Portal

    Student & Faculty Management System

    Dashboard
    Courses
    Grades
    Settings

    Aspect Ratio

    #aspect-ratio

    Displays content within a desired width-to-height ratio.

    16/9, 4/3, and 1/1 Ratios

    16/9
    AspectRatio 16/9
    4/3
    AspectRatio 4/3
    1/1
    AspectRatio 1/1

    Dialog

    #dialog

    Modal window overlaid on the primary page.

    Modal Dialog Variants

    Edit Student Profile

    Make changes to the student's record here. Click save when done.

    Alert Dialog

    #alert-dialog

    Modal confirmation dialog that interrupts the user for destructive or critical actions.

    Destructive Confirmation Alert Dialog

    Sheet

    #sheet

    Slide-out drawer panel anchored to any edge of the screen.

    Right, Left, Top & Bottom Sheets

    Popover

    #popover

    Floating content box anchored to a trigger button.

    Dimensions Popover

    Hover Card

    #hover-card

    Preview card triggered when hovering over a link or element.

    Instructor Profile Hover Card

    Tooltip

    #tooltip

    Popup label that displays information on hover or focus.

    Tooltip Placements

    Context Menu

    #context-menu

    Displays a menu at the pointer location on right-click.

    Right-Click Target Area

    Command

    #command

    Fast, searchable command palette modal (⌘K).

    Command Palette Dialog

    Alert

    #alert

    Callout banners for important user messages and statuses.

    Default, Success, Warning & Destructive Alerts

    Heads up!
    Fall semester registration closes this Friday at 5:00 PM.
    Enrollment Confirmed
    You have been enrolled in CS-201: Full-Stack Rails 8.
    Maintenance Scheduled
    Database maintenance will occur Sunday at 2:00 AM UTC.
    Payment Past Due
    Please update your billing method to avoid a hold on your account.

    Toast

    #toast

    Hotwire-native Sonner toast notifications triggered via JS or Turbo Streams.

    Trigger Toast Variants (via window.RubyUI.toast)

    Progress

    #progress

    Displays an indicator showing completion progress of a task.

    25%, 60%, and 90% Progress Bars

    Syllabus Completion (25%)

    Midterm Grading (60%)

    Semester Progress (90%)

    Skeleton

    #skeleton

    Placeholder loading shimmer while content is fetching.

    Profile & Card Skeletons

    Empty

    #empty

    Empty state placeholder with icon media, title, description, and CTA.

    Empty Course Assignments State

    No assignments submitted yet
    When students submit their coursework, it will appear here for grading.

    Avatar

    #avatar

    Circular user profile image with initials fallback.

    Sizes (xs, sm, md, lg, xl) & Fallbacks

    XSSMMDLGXL

    Table

    #table

    Responsive semantic HTML table with header, body, footer, and caption.

    Student Enrollment Table

    Recent course enrollments for Fall 2026.
    Student IDNameStatusCredits
    STU-101Alice JohnsonEnrolled15
    STU-102Marcus ChenWaitlisted12
    STU-103Elena RostovaEnrolled18
    Total Active Credits45

    Data Table

    #data-table

    Server-driven Hotwire table with toolbar search, column visibility, row selection, and pagination.

    DataTable with Search, Column Toggle, Selection & Pagination

    NameEmailGrade
    Sophia Patelsophia@upboard.school98% (A+)
    Liam O'Connorliam@upboard.school92% (A)
    Noah Kimnoah@upboard.school88% (B+)
    0 of 3 row(s) selected.

    Chart

    #chart

    Chart.js visualizations for bar, line, and analytics charts.

    Bar & Line Charts

    Codeblock

    #codeblock

    Syntax-highlighted code blocks powered by Rouge with one-click copy.

    Ruby Syntax Highlighted Codeblock

    class Course < ApplicationRecord
    	has_many :enrollments, dependent: :destroy
    	has_many :students, through: :enrollments
    
    	validates :title, presence: true
    end
    

    Bubble

    #bubble

    Chat message bubbles with alignment, grouping, reactions, and style variants.

    Bubble Variants & Reactions

    Default bubble variant
    Secondary bubble variant
    Muted bubble with a reaction badge
    Tinted bubble variant
    Outline bubble variant
    Destructive bubble — submission failed

    Message

    #message

    Complete chat turn layout combining Avatar, Header, Content, Bubble, and Footer.

    Two-Way Chat Conversation

    IN
    Prof. Anderson
    Welcome to Upboard School! Let me know if you have questions on Lab 1.
    10:14 AM
    ST
    Thanks! Just pushed my PostgreSQL schema migration.
    10:16 AM

    Message Scroller

    #message-scroller

    Auto-scrolling chat transcript viewport with jump-to-latest button.

    Scrollable Transcript Viewport

    TA
    Discussion thread message #1 inside MessageScrollerViewport.
    ME
    Discussion thread message #2 inside MessageScrollerViewport.
    TA
    Discussion thread message #3 inside MessageScrollerViewport.
    ME
    Discussion thread message #4 inside MessageScrollerViewport.
    TA
    Discussion thread message #5 inside MessageScrollerViewport.
    ME
    Discussion thread message #6 inside MessageScrollerViewport.