Split button
A primary action paired with a dropdown of related actions. Aligned with J&J DS v1.2 — two halves separated by a 1px gap inside one rounded pill. Use this when there is a clear default action (e.g. Save) and several alternates the user might prefer (Save as draft, Save as template). For a single dropdown without a primary action, use MenuButton.
Sizes
32 / 40 / 48 px tall. The chevron half is square (matching the height) and shares the trigger's color tokens.
Show sourceHide source
<SplitButton size="sm" label="Save" items={items} onClick={save} />
<SplitButton size="md" label="Save" items={items} onClick={save} />
<SplitButton size="lg" label="Save" items={items} onClick={save} />Placement — bottom (default) and top
Set placement='top' for triggers near the bottom of the viewport.
Show sourceHide source
<SplitButton label="Save" items={items} placement="bottom" />
<SplitButton label="Save" items={items} placement="top" />Variants — primary (brand red) and primaryAlt (warm-dark)
Brand red is the default per Figma. Warm-dark fits non-brand emphasis.
Show sourceHide source
<SplitButton label="Save" items={items} />
<SplitButton label="Save" items={items} variant="primaryAlt" />Disabled
Both halves render in the standard button-disabled token. Per Figma, the chevron half is hidden when disabled — here we keep it so the affordance stays consistent; pair with a tooltip explaining why.
Show sourceHide source
<SplitButton label='Save' items={items} disabled />With destructive item in the menu
Mark items with destructive=true to render in the error-red foreground.
Show sourceHide source
<SplitButton
label="Publish"
onClick={publish}
items={[
{ label: "Publish", onClick: publish },
{ label: "Schedule", onClick: schedule },
{ label: "Discard", destructive: true, onClick: discard },
]}
/>