# #046 SplitButton — HTML Functional Class

Version: 1.0.16  
Status: Development

Marker class: `bone-html-class-use`  
Surface: `BoneSplitButton`  
Class prefix: `bone-splitbutton-`

## Contract

Each functional class maps one-to-one to a public `BoneSplitButton` API. The test page contains the executable Guide and reports class status/result through `data-bone-class-status` / `data-bone-class-result`.

## Main API families

### Core

- `defaults`
- `normalizeOptions`
- `normalizeBone`
- `inspectUntrustedInput`
- `create` / `destroy` / `isInstance`

### #042-compatible Button surface

- `getButton`
- `getState` / `getOptions` / `setOptions`
- `getBone` / `setBone`
- `getLabel` / `setLabel`
- `getMode` / `setMode`
- `getCommand` / `setCommand` / `refreshCommandState`
- `execute` / `click` / `setDisabled`

### Split menu

- `getMenuButton`
- `getMenu`
- `openMenu` / `closeMenu` / `toggleMenu`
- `getMenuItems` / `setMenuItems`
- `selectMenuItem`

### Delivery / Security / validation

- `buildOutput`
- `connectOutput` / `disconnectOutput`
- `setTargetReady` / `clearOutputBlock`
- `getOutputState` / `getOutputQueue`
- `applyJointInput`
- `validate`
- `syncParentStyle`
- `setFeedback`

## Split menu value contract

`setMenuItems()` uses the same v1.0.10 item contract as the Runtime: visibility, height, #042 Command click processing, #019 Icon, and #022 Active / Mouse Over Effect values are passed through the formal component responsibilities. `openMenu()` / `closeMenu()` preserve #046 semantic state while #118 v1.0.3 performs ENTER / EXIT interpolation.

## Responsibility boundary

The functional class is only an invocation surface. It does not reimplement #042 Button, #002 Joint, #022 Effect, #019 Image, #039 FilePicker, #040 ColorPicker, or #118 Transition.
