Introduction
Suite.jl is a component library for Therapy.jl — beautifully designed, accessible, and copy-paste friendly.
What is Suite.jl?
Suite.jl is a collection of 50+ UI components built on Therapy.jl, Julia's reactive web framework. It follows the shadcn/ui philosophy: you own the code, not a dependency.
Every component is accessible (WAI-ARIA compliant), supports light and dark mode, and uses the warm neutral design system shared across the GroupTherapyOrg ecosystem.
Key Concepts
Own the code
Suite.jl works in two modes. You can use it as a package dependency, or you can extract components into your own project and customize them freely:
# Mode 1: Use as a package
using Suite
Button(variant="outline", "Click me")
# Mode 2: Extract and customize
Suite.extract(:Button, "src/components/")
# Now edit src/components/Button.jl however you wantThree implementation tiers
Components are implemented in three tiers based on their interactivity needs:
| Tier | How it works | Examples |
|---|---|---|
| Pure Styling | Julia functions generating HTML + Tailwind CSS | Button, Card, Badge, Alert, Input, Table |
| Island (Wasm) | @island macro compiles Julia logic to WebAssembly | Dialog, Accordion, Tabs, Slider, Calendar, Select, Command |
| Widget | Island + @bind protocol for notebook integration | Slider(1:100) — same styling, plus bond methods for @bind |
Built-in themes
Suite.jl ships with 5 pre-built themes. Apply a theme with a single keyword argument, or extract components with a theme baked in:
# Apply at render time
Button(theme=:ocean, variant="outline", "Ocean Style")
# Or extract with a theme baked in
Suite.extract(:Button, "components/", theme=:nature)Quick Start
Add Suite.jl to your Therapy.jl project:
using Pkg
Pkg.add(url="https://github.com/GroupTherapyOrg/Suite.jl")Then use components in your app:
using Therapy
using Suite
function MyPage()
Card(
CardHeader(
CardTitle("Hello Suite.jl"),
CardDescription("Your first component")
),
CardContent(
Button("Get Started")
)
)
endSee the Installation guide for detailed setup instructions, or browse the Components to see what's available.