--- title: LayoutControlsRoot description: Headless root primitive for auto-layout and sizing controls. --- # LayoutControlsRoot `LayoutControlsRoot` exposes the slot contract returned by `useLayout()` as a structural primitive. Use it when you want a reusable layout-controls shell with app-owned markup. Width and height fields can remain editable while their axis uses Hug or Fill. On the first actual numeric mutation, `updateAxisSize()` records the sizing transition and changes that axis to Fixed. Compose the field with `BindableValue` and an interaction-batch-capable provider when sizing mode, variable detachment, and the numeric value must commit or roll back as one undo step. Focus and picker opening do not change sizing mode. Use `setAxisSizing('width', mode)` or `setAxisSizing('height', mode)` for sizing menus. The older axis-specific setters are not part of the current contract. ## Generated API reference The following tables are extracted from the Vue source and JSDoc during the documentation build. ## Related APIs - [useLayout](../composables/use-layout) - [BindableValue](./bindable-value) - [Property Panels guide](../../guides/property-panels)