SplitButton

A primary action paired with a menu button for related actions.

Props

React props
NameTypeRequiredDefaultDescription
labelstringNo—Visible label for the primary action. Provide `icon` for an icon-only action.
iconIconNo—Optional icon shown before the primary action label.
accessibleLabelstringNo—Accessible-name override for the primary action when it has no visible label.
menuLabelstringYes—Accessible name shared by the trailing menu button and its menu.
actionsreadonly SplitButtonAction[]Yes—Related menu actions. Include at least one action with a unique, non-empty `id` and a non-empty `label` for each record.
variantSplitButtonVariantNo'filled'Visual treatment.
sizeSplitButtonSizeNo'small'Visual size. Every size keeps a 48px touch target.
primaryButtonPropsPartial<Omit<ButtonProps, "label" | "icon" | "variant" | "size" | "disabled" | "type" | "iconPosition" | "shape" | "shapeFeedback" | "toggleable" | "pressed" | "defaultPressed">>No—Additional Button options; shared SplitButton properties remain authoritative.
menuButtonPropsPartial<Omit<IconButtonProps, "label" | "icon" | "variant" | "size" | "disabled" | "shape" | "shapeFeedback" | "toggleable" | "pressed" | "defaultPressed">>No—Additional IconButton options; shared SplitButton properties remain authoritative.
disabledbooleanNofalseDisables the primary action, menu trigger, and every menu action.
openbooleanNo—Controlled visibility of the related-actions menu.
defaultOpenbooleanNofalseInitial menu visibility when `open` is uncontrolled.
classNamestring | ClassNameComponent<SplitButtonInterface> | Partial<Record<"splitButton" | "primaryButton" | "primaryTouchTarget" | "primaryStateLayer" | ... 6 more ... | "menuSurface", string>>No—Classes or state-aware element classes applied through the shared style contract.
onPrimaryAction() => voidNo—Runs the primary action.
onActionSelect(action: SplitButtonAction, index: number) => voidNo—Notifies selection before the menu closes.
onOpenChange(open: boolean) => voidNo—Notifies an accepted open-state request.