helical-ui

Customizable components for building modern web apps

Built with Ark UI and Tailwind CSS

Button

A multi-variant button for React and Svelte, built on Ark UI.

Mermaid

Mermaid diagrams for React and Svelte, with client-side rendering and an optional server-side (prerendered) path.

Notice

Status notices for React and Svelte with info, success, warning, and error variants.

ToggleButton

A pressable toggle button for React and Svelte, built on Ark UI.

Badge

A small label for statuses and counts, for React and Svelte.

Figure

A captioned image figure for React and Svelte.

Toggle Group

A set of two-state buttons that can be single- or multi-select, for React and Svelte.

Reveal

A revealable question-and-answer for self-study (diffbook's QA, renamed).

Sidebar

A composable, themeable application sidebar for React and Svelte, built on Ark UI's drawer and tooltip primitives.

LaTeX

LaTeX math for React and Svelte, rendered synchronously with KaTeX — a block component plus a toLaTeX() helper for inline math.

Code Block

Syntax-highlighted code blocks with a composable API, copy buttons, line numbers, file/language selectors, and diff highlighting for React and Svelte.

Tabs

A tabbed content panel for React and Svelte, built on Ark UI tabs.

Input

Styled text and textarea inputs for React and Svelte, built on Ark UI field.

Pagination

A pagination control for paging through content, for React and Svelte.

YouTube

A lazy YouTube video facade with poster, title, description, and composed timestamps for React and Svelte.

Chart

Line, bar, area, and pie charts via TanStack Charts for React and Svelte, with a server-side prerendered path.

Field

Label, helper text, and error text grouped with an accessible field, for React and Svelte.

Navbar

A sticky or floating site navigation bar with a responsive mobile collapse, for React and Svelte.

Manim

manim-web animations with an inlined scene builder for React and Svelte.

NumberInput

A numeric input with increment and decrement steppers, for React and Svelte.

Prose

Scoped long-form typography for a subtree, driven by theme vars — no global prose stylesheet import required. For React and Svelte.

Checkbox

An accessible checkbox with indeterminate support, for React and Svelte.

Editor

A Tiptap-based rich text editor and read-only reader with slash commands, a bubble menu, mentions, link editing, image blocks, and code blocks — for React and Svelte.

Container

Container, Row, and Col layout primitives for React and Svelte.

Prev Next

Previous/next page navigation links for React and Svelte.

Questions

Self-grading single-choice, multiple-choice, and numeric questions for React and Svelte.

Quiz

A multi-question quiz with a single final submit and a total score, for React and Svelte.

Stack

Stack, HStack, and VStack flex layouts with a default gap, for React and Svelte.

Switch

An accessible on/off switch, for React and Svelte.

Center

Centers its child within itself, for React and Svelte.

Select

A listbox select that swaps to a native select on mobile, for React and Svelte.

Combobox

A typeahead combobox with single and multi-select, for React and Svelte.

Item

A content box with a shared default padding and a themed surface, for React and Svelte.

Card

A surface for content related to a single subject, for React and Svelte.

TagInput

Enter free-form tags, for React and Svelte.

Listbox

A filterable single- or multi-select option list, for React and Svelte.

Scroll

A scrollable region with styled scrollbars, for React and Svelte.

Splitter

Resizable panels with a drag handle, for React and Svelte.

Page

A page layout with sticky gutters, a footer, and a landing variant, for React and Svelte.

Tooltip

A label that appears on hover or focus, for React and Svelte.

Popover

An overlay that displays additional information or options when triggered, for React and Svelte.

Dialog

A modal window that appears on top of the main content, for React and Svelte.

Window

A non-modal floating window that can be dragged and resized, for React and Svelte.