label | string | No | — | Visible label for the primary action. Provide `icon` for an icon-only action. |
icon | Icon | No | — | Optional icon shown before the primary action label. |
accessibleLabel | string | No | — | Accessible-name override for the primary action when it has no visible label. |
menuLabel | string | Yes | — | Accessible name shared by the trailing menu button and its menu. |
actions | readonly SplitButtonAction[] | Yes | — | Related menu actions. Include at least one action with a unique, non-empty `id` and a non-empty `label` for each record. |
variant | SplitButtonVariant | No | 'filled' | Visual treatment. |
size | SplitButtonSize | No | 'small' | Visual size. Every size keeps a 48px touch target. |
primaryButtonProps | Partial<Omit<ButtonProps, "label" | "icon" | "variant" | "size" | "disabled" | "type" | "iconPosition" | "shape" | "shapeFeedback" | "toggleable" | "pressed" | "defaultPressed">> | No | — | Additional Button options; shared SplitButton properties remain authoritative. |
menuButtonProps | Partial<Omit<IconButtonProps, "label" | "icon" | "variant" | "size" | "disabled" | "shape" | "shapeFeedback" | "toggleable" | "pressed" | "defaultPressed">> | No | — | Additional IconButton options; shared SplitButton properties remain authoritative. |
disabled | boolean | No | false | Disables the primary action, menu trigger, and every menu action. |
open | boolean | No | — | Controlled visibility of the related-actions menu. |
defaultOpen | boolean | No | false | Initial menu visibility when `open` is uncontrolled. |
className | string | 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 | () => void | No | — | Runs the primary action. |
onActionSelect | (action: SplitButtonAction, index: number) => void | No | — | Notifies selection before the menu closes. |
onOpenChange | (open: boolean) => void | No | — | Notifies an accepted open-state request. |