Open Source/50+ Components

Build your Julia
web app with Suite.jl

Accessible, composable UI components for Therapy.jl. Extract, customize, and own the code just like shadcn/ui.

Components that just work

Every component is accessible, dark-mode ready, and designed with warm neutrals.

Buttons
Badges & Alerts
DefaultSecondaryOutlineDestructive
Cards
Create project
Deploy a new Julia application.
Inputs & Forms
Tables
ComponentTierTests
ButtonPure Styling62
DialogIsland103
CalendarIsland119
Progress & Loading
Loading...75%
JL

Julia Developer

using Suite

Own your components

Extract any component into your project. Customize it freely. No lock-in.

julia
using Suite

# Extract and customize — just like shadcn/ui
Suite.extract(:Card, "src/components/")

# Then use your own copy:
Card(
    CardHeader(
        CardTitle("Welcome"),
        CardDescription("Your new Julia web app")
    ),
    CardContent(
        Button(variant="default", "Get Started"),
        Button(variant="outline", "Learn More")
    )
)

Why Suite.jl?

shadcn/ui Parity

Every component matches shadcn/ui behavior, styling, and accessibility. If you know shadcn, you know Suite.jl.

Copy-Paste Friendly

Own the code, not a dependency. Extract any component into your project and customize it freely.

Accessible by Default

WAI-ARIA compliant. Keyboard navigation. Focus management. Screen reader friendly. No extra work needed.

Dark Mode Built-in

Every component ships with light and dark mode. Toggle with one click. No configuration required.

5 Built-in Themes

Default, Ocean, Minimal, Nature, Islands. Apply a theme in one kwarg. Extract with a theme baked in.

Pure Julia + Wasm

Write UI logic in Julia. Compile to WebAssembly for interactivity. No JavaScript framework required.

50+

Components

2300+

Tests

3

Tiers

5

Themes

Three Implementation Tiers

Pure Styling
~20 components

Button, Badge, Card, Alert, Input, Table, Label, Typography, Avatar, Breadcrumb, Progress, Skeleton, Separator...

Island (Wasm)
~30 components

Dialog, Accordion, Tabs, Slider, Calendar, Select, Command, DropdownMenu, Sheet, NavigationMenu, Toggle, Switch, Popover, Tooltip...

Widget
Island + @bind

Slider widget for notebooks — same Wasm interactivity plus bond protocol for @bind integration with Sessions.jl and Pluto