Skip to content

shutteringv1.0.0

Buttons & badges

The pressable primitive and the two ways the system labels state — a categorical badge and a live status chip.

@shuttering/uiimport { Button, Badge, StatusChip, CopyButton, ThemeToggle } from '@shuttering/ui'

Button

Six variants across three sizes. Presses give tactile feedback and every button carries a visible focus ring.

PropTypeDefaultDescription
variant'default' | 'secondary' | 'outline' | 'ghost' | 'destructive' | 'link''default'Visual weight and intent.
size'default' | 'sm' | 'lg' | 'icon''default'Height and padding. icon is square, for a single glyph.
asChildbooleanfalseRender the child element (e.g. an <a> or a router Link) with the button styles instead of a <button>.
…propsReact.ComponentProps<'button'>All native button attributes — onClick, type, disabled, and the rest.

Badge

A small categorical label. Use it for a status word that does not change in place — a plan tier, a type, a count.

defaultsecondarysuccesswarningdangeroutline
PropTypeDefaultDescription
variant'default' | 'secondary' | 'success' | 'warning' | 'danger' | 'outline''default'The badge tone.

StatusChip

A live status indicator. Status is never encoded by color alone — the chip pairs a tone with a label, and an optional pulse for an active state or a strike for an inactive one.

availabledegradeddownunknown
PropTypeDefaultDescription
tone (required)'ok' | 'warn' | 'danger' | 'neutral'The semantic status.
label (required)stringThe status word, read alongside the color.
pulsebooleanfalseAnimate the dot to signal a live / active state (reduced-motion aware).
strikebooleanfalseStrike the label through for an inactive / retired state.

CopyButton

Copies a value to the clipboard and flips its icon to a green check for a beat. A Button underneath, so it takes the same size and variant.

PropTypeDefaultDescription
value (required)stringThe text written to the clipboard.
labelstring'Copy'Accessible label and optional visible text.
size / variantButtonProps['size' | 'variant']Inherited from Button.

ThemeToggle

Cycles light → dark → system and persists the choice; the icon tracks the resolved theme. A single icon button for a header's actions slot.

Designed & built by stxkxs — React 19, Tailwind v4, and its own @shuttering/* packages.

Agent surfaces are always-on. Proprietary.

© stxkxs