Svelte 5 · Runes · TypeScript

Your design system,
your rules.

A headless Svelte 5 component library. No hardcoded styles. You own every pixel via the Preset system — globally configurable, locally overridable.

30+ Components
0px Hardcoded styles
100% TypeScript typed
WAI‑ARIA Accessible by default

Architecture

Three layers. Total control.

Svelte Atoms is built around three composable primitives that work together to give you complete control over behaviour, state, and style — without coupling them together.

01

Atoms

The lowest-level building block. HtmlAtom wraps any HTML element and injects preset classes, variants, and bond state — with zero hardcoded styles.

Learn more
02

Bond

Shared reactive state between a component's parts. No prop drilling — child components read their parent's bond from Svelte context. State flows down automatically.

Learn more
03

Preset

A global style configuration for your entire app. Define variants, defaults, and classes per component slot once — override locally per instance. Your design system lives here.

Learn more

Components

Everything you need.

30+ accessible components. Each one is headless — style it once in your preset, use it everywhere.

Button

docs →

Five semantic variants, fully composable trigger surface

Badge

docs →
Primary Secondary Outline Error

Inline labels for status, categories, and metadata

Input

docs →

Composable slots for prefix, suffix, and validation state

Alert

docs →

Four semantic variants — info, success, warning, error

Controlled and uncontrolled modes, keyboard navigable

Select

docs →

Single and multi-select with keyboard navigation

Dropdown Menu

docs →

Action menu with nested groups and keyboard traversal

Tooltip

docs →

Disabled state with contextual explanation

Popover

docs →

Issue label filter — toggle multiple, clear all

Dialog

docs →

Destructive confirm with typed phrase unlock

Drawer

docs →

Notification tray — mark read, dismiss per item

Sidebar

docs →
Main content

Quick start

Up in minutes.

Install the package, configure your preset, and start composing.

# Add to your SvelteKit project
$ bun add @svelte-atoms/core

One package. No peer dependencies, no CSS framework required.

Ready to build?

Start with the quick-start guide or explore the component library. Everything is open source.