R RenDS v0.13.0

Catalog

Components

Every UI piece in RenDS, organized by atomic layer. Start from foundations, climb to primitives, compose into composites, ship as patterns. Each card links to a dedicated documentation page when one exists, or to the showcase example when it doesn't.

Layer 1

Foundations

Before there's a component, there's a foundation. Raw HTML elements styled by tokens. Layout primitives that take any content and arrange it. The token system that makes everything else themeable. Read these first; the rest is composition on top.

3 foundations · all documented

Primitive Zero

classless

Every semantic HTML tag, styled globally. A raw <button>, <blockquote>, or <details> already looks right — no class required.

Bold · italic · code · link

Tokens

CSS custom properties

Three-tier system: raw primitives (--blue-500), semantic meaning (--color-accent), component hooks (--ren-btn-bg). Override the layer that matches your intent.

Layouts

ren-stack, ren-grid…

Eleven composable layouts — Stack, Cluster, Grid, Cover, With-sidebar — that nest into any page skeleton without writing custom flex.

Stack Cluster Grid

Layer 2

Primitives

Single-purpose CSS-only components. Each one does one thing well: a button looks like a button, a tag looks like a tag, a field accepts input. Variants, sizes, and states are class modifiers — no JavaScript required.

19 components · all documented

Button

ren-btn

Multi-variant action trigger with built-in loading and disabled states. Six variants × three sizes, AA contrast, 44 px touch target.

Card

ren-card

Flexible content container with optional header, body, footer. Five visual variants, status accents, interactive and selectable patterns.

Badge

ren-badge

Small contextual labels for status, tags, or counters. Eight variants including dot and outline.

Primary Success Warning

Tag

ren-tag

Removable filter chips for selections, categories, and active filters.

design filter ✕

Banner

ren-banner

Page-level callout for system-wide messages: maintenance, success, errors. Five status variants.

System update at 2 PM

Pagination

ren-pagination

Page navigation for lists. Supports numbered, simple, and truncated variants.

Separator

ren-separator

Horizontal or vertical dividers, with optional center label.

Or continue with

Avatar

ren-avatar

Profile images, initials, and status indicators. Six sizes, square or round.

JD
AB
CD

Spinner

ren-spinner

Loading indicator. Five sizes (xs to xl) plus a light variant for dark surfaces.

Skeleton

ren-skeleton

Placeholder shapes for loading content. Pulses subtly to signal "data on the way".

Keyboard Key

kbd

Keyboard shortcut keys. Renders <kbd> with mono type and a subtle bottom border.

K

Field

ren-field, ren-input

Label + input + helper + error, with auto-wired ARIA. The smallest accessible unit of a form. Sizes, icons, validation states, and works with input / textarea / select.

Checkbox

ren-checkbox

Boolean input wrapped around a native checkbox. Custom-styled control, native semantics, indeterminate state included.

Switch

ren-switch

Two-state toggle for settings that take effect immediately. Same input as Checkbox, different visual metaphor.

Radio

ren-radio

Mutually-exclusive choices. Always grouped under a shared name, always wrapped in a fieldset with a legend.

Progress

ren-progress

Determinate or indeterminate progress bar. Accent or status colors.

Icons

svg

Convention for SVG icons. 16 / 20 / 24 px sizing, currentColor stroke, semantic alt text.

Layer 3

Composites

Multi-part components. May involve more than one element, may need a sprinkle of JavaScript for keyboard navigation or focus management. A dialog is a composite. So is a tabset, a select, a tooltip. Each ships with the keyboard and ARIA work already done.

26 components · all documented

Tabs

ren-tabs

Switch between content panels via the ARIA tablist pattern. Three visual variants (underline, pills, enclosed), horizontal or vertical, manual or automatic activation.

Accordion

ren-accordion

Collapsible panels with single or multi-open mode. Built on <details> for free a11y.

Dialog

ren-dialog

Modal dialog built on the native <dialog> element. Focus trap, escape-to-close, click-outside dismiss, smooth animations. Five sizes plus an alert variant.

Alert Dialog

ren-alert-dialog

Confirmation dialog for destructive actions. Forces an explicit choice — no click-outside dismiss.

Toast

ren-toast

Transient notification with aria-live announcement, auto-dismiss, dismiss button and optional action slot. Four status variants.

Tooltip

ren-tooltip

Hover/focus hint. Hover delay, focus trigger for keyboard, mobile-friendly tap.

Popover

ren-popover

Floating panel anchored to a trigger. Native Popover API where supported, polyfilled where not.

Hover Card

ren-hover-card

Rich-content tooltip — image + text + actions. For previews of links or profiles.

Sheet

ren-sheet

Edge-anchored panel — bottom on mobile, side on desktop. For supplementary navigation or filters.

Collapsible

ren-collapsible

Single show/hide region. The simplest form of progressive disclosure.

Toolbar

ren-toolbar

Grouped action buttons with arrow-key navigation. For editors, canvases, table headers.

Dropzone

ren-dropzone

File-drop area with drag-over state, click-to-browse fallback, multiple-file support.

Combobox

ren-combobox

Searchable select. Type to filter, arrow keys to navigate, async loading via the ren-search event.

Slider

ren-slider

Range input with single or dual handle. Keyboard-accessible, with tick marks and value labels.

Toggle Group

ren-toggle-group

Segmented control for single or multi-select among 2–5 options. View pickers, alignment buttons.

Scroll Area

ren-scroll-area

Scrollable region with branded thin scrollbars on platforms that support custom styling.

Select

ren-select

Custom-styled dropdown for choosing one option. Trigger + popover listbox with full keyboard navigation and typeahead.

Menu

ren-menu

Dropdown list of actions anchored to a trigger. Keyboard typeahead, separators, group labels, destructive item styling.

Context Menu

ren-context-menu

Right-click menu. Same engine as Menu but anchored to pointer.

Number Field

ren-number-field

Numeric stepper with min/max, step, decimals, and clamping behavior.

Input OTP

ren-otp

One-time-code input. Auto-advances on digit, paste-friendly, supports mask.

Color Picker

ren-color-picker

Color selection with HSL/RGB/Hex switching, palette, and recent swatches.

Calendar

ren-calendar

Monthly calendar grid. Keyboard navigation, locale-aware, range select option.

Date Picker

ren-date-picker

Input + calendar popover. Min/max constraints, disabled dates, format-aware.

Date Range Picker

ren-date-range-picker

Two-handle date range. Presets (last 7 days, this month). Constrained ranges.

Carousel

ren-carousel

Scroll-snap gallery with prev/next buttons and dot indicators. Touch- and keyboard-friendly.

Layer 4

Patterns

Full UX patterns made of multiple primitives and composites working together. A nav bar, a sidebar, a data table — these are not single components, they're arrangements of components that solve a recurring screen-level problem.

8 patterns · all documented

Nav

ren-nav

Top navigation bar with brand, primary links, search, and account menu.

Sidebar

ren-sidebar

Left navigation column for app shells. Collapsible sections, active-route indicator.

Command Palette

ren-command

Searchable command launcher (⌘K). Fuzzy search, keyboard-first, grouping by category.

Empty State

ren-empty-state

"Nothing here yet" panel with illustration, headline, body copy, and a clear next action.

Data Table

ren-data-table

Sortable, filterable, paginated table. Sticky header, row selection, dense / comfortable density.

Form Validation

ren-form

Conventions for inline error messages, summary banners, and submit-button state.

Menubar

ren-menubar

Horizontal menu bar with sub-menus. For desktop-style apps with File / Edit / View.

AI Patterns

ren-ai

Conversation thread, message bubble, streaming indicator, suggestion chip — the AI-app starter kit.