--- title: PropertyList description: Precisely typed headless list anatomy for fills, strokes, and effects. --- # PropertyList PropertyList is a controlled, headless list primitive for fills, strokes, and effects. The `propKey` discriminator gives slots and actions exact `Fill`, `Stroke`, or `Effect` types. Editor mutation and undo behavior stay in `useEditorPropertyList()` or an application adapter. ## Anatomy - `PropertyListRoot` — controlled items, identity, mixed state, and semantic events - `PropertyListItem` — exact item type plus `data-hidden` and `data-dragging` - `PropertyListAdd` — adds a typed item - `PropertyListRemove` — removes an indexed item - `PropertyListVisibility` — toggles indexed visibility and exposes `aria-pressed` ```vue twoslash ``` See the [PropertySection demo](./property-section) for the shared interactive state matrix. ## Editor adapter OpenPencil panels use `useEditorPropertyList(propKey)` to connect controlled events to selection, multi-node updates, undo batching, and reordering. Third-party SDK consumers can provide their own state adapter without an OpenPencil editor context. ## Generated API reference