Skip to content
Buttons

Split Button

Server Component

Primary action fused to a dropdown of secondary actions.

Import

tsx
import { SplitButton } from "@cronus-ui/ui";
bash
npx cronus-ui add split-button

Examples

.cronus

The same component declared in Cronus. Emitted at build time from the audit fixtures — the kernel renders it as HTML with no React.

PortedParity: MatchGeometry 1/1Pixel diff 0 pxLogic 1/1Parity scoreboard
default.cronus
app "audit-fixtures" {
  port 5176
}

style {
  preset aurora
  theme dark
}

component SplitButtonDefault layout:inline style:split-button {
  aria-label:"Save actions"
  label "Save"
  text "Duplicate"
  text "Archive"
}

page "/audit/split-button/default" type:custom {
  use SplitButtonDefault
}

API Reference

Generated from the component's exported types.

SplitButtonProps

Extends Omit<HTMLAttributes<HTMLDivElement>, "onClick">

Skip SplitButtonProps props table
PropTypeDefaultDescription
children*
ReactNode—The primary action's label.
onClick
MouseEventHandler<HTMLButtonElement>—Fires when the primary (left) segment is clicked.
icon
ReactNode—Optional leading icon for the primary segment (replaced by a spinner while `loading`).
items
SplitButtonItem[]—Declarative secondary actions. Ignored when a custom `menu` slot is supplied.
menu
ReactNode—Escape hatch for fully custom menu content (compose `DropdownMenuItem`, `DropdownMenuSeparator`, `DropdownMenuLabel`, …). Takes precedence over `items`.
variant
SplitButtonVariant"primary"Visual style, shared by both segments — mirrors `Button`'s variants.
size
SplitButtonSize"md"Control height/density, shared by both segments.
disabled
booleanfalseDisables both segments.
loading
booleanfalseShows a spinner in the primary segment and disables the control.
menuLabel
string"More actions"Accessible name for the icon-only menu trigger.
align
"start" | "center" | "end""end"Horizontal alignment of the menu relative to the trigger.
sideOffset
number6Gap in px between the trigger and the opened menu.
contentClassName
string—Class applied to the dropdown menu surface.
defaultOpen
boolean—Uncontrolled initial open state of the menu.
open
boolean—Controlled open state of the menu.
onOpenChange
(open: boolean) => void—Notified whenever the menu opens or closes.
className
string—Additional class names merged onto the root.
id
string—DOM id of the root element.