caliper uidocs

Control center

Pro

Toggles and sliders grouped like a phone's control centre.

Installs components/ui/control-center.tsxDepends on lucide-reactMotion none in component source
pnpm dlx shadcn@latest add @caliper/control-center

When to use #

Use it for

  • Quick settings.

Skip it when

  • Settings need explanation.

Installation #

terminal
pnpm dlx shadcn@latest add @caliper/control-center

Adds its 2 files to components/ui/, each with its own stylesheet, and installs their packages. Pro installs with your access token, set up once per project. See Pro access. The first part also adds Caliper UI’s tokens; import them once as in Installation.

Usage #

Import it from your copy of the source. The example behind the preview comes with the source. It is built from ControlCenter, ControlToggle, ControlSlider and ControlGroup.

example.tsx
import { ControlCenter, ControlToggle, ControlSlider, ControlGroup } from "@/components/ui/control-center"

The worked example comes with Pro

The 30-line example behind the preview opens here with a Pro or Team licence.

Checking your licence…

API reference #

ControlCenter

component
PropTypeDefault
label *string—
children *ReactNode—
classNamestring—

ControlToggle

component
PropTypeDefaultDescription
label *string—
icon *ReactNode—
checked *boolean—
onCheckedChange *(checked: boolean) => void—
statusstring—One short word under the name, such as the network joined.
classNamestring—

ControlSlider

component
PropTypeDefault
label *string—
icon *ReactNode—
value *number—
onValueChange *(value: number) => void—
minnumber0
maxnumber100
stepnumber1
unitstring"%"
classNamestring—

ControlGroup

component
PropTypeDefault
label *string—
icon *ReactNode—
summarystring—
defaultOpenbooleanfalse
children *ReactNode—
classNamestring—

Accessibility #

It exposes switch semantics, with aria-label, aria-checked, aria-hidden, aria-valuetext, aria-expanded and aria-controls kept in step with state.

No custom key handling; Tab and the native activation keys do the work.

Motion #

It declares no animation in its component source. Any transition comes from its stylesheet, which uses the duration tokens that collapse to instant under prefers-reduced-motion.