<!-- Generated by npm run gen:skill from ui/Panel/skill.md - do not edit. -->

# Panel

## `<panel>`

- `type`: flow | rows | columns
- `direction`: row | row-reverse | column | column-reverse
- `align`: left | right | center
- `valign`: top | bottom | center
- `scroll`: true | false | auto | snap
- `mode`: expander
- `xlink:actuate`: onLoad | onRequest
- `resize`, `padding`, `gap`, `expanded`, `selected`, `icon`, `xlink:href`
- actions: select, release
- events: Drop, IconSelect, Init, Loaded, Select
- methods: collapse, expand, hideChild, isCollapsed, scrollToChild, scrollToSibling, setHeight, setTitle, setWidth, showChild

```xml
<panel type="flow" gap="8" padding="5" width="260">
  <button text="One" width="70"/>
  <button text="Two" width="70"/>
  <button text="Three" width="70"/>
  <button text="Four" width="70"/>
</panel>
```

## Guidance

- The view's root is one panel; nest `type="rows"`/`"columns"` panels for layout. In them a child's `width`/`height` is its track: `fill` shares the rest.
- `label=` on a named child of a rows, columns or flow panel is drawn by the panel and names the field for screen readers.
- `title` makes a titled group box; with `mode="expander"` a collapsible section: a click on the title bar toggles it and sets `expanded` (StateChanged). IconSelect fires only for a click on the expander's `icon` image, and then it does not toggle.
- Color a panel with a `class` styled in the view's `<style>` with `--xios-color-*` tokens, not inline `style`.
- `xlink:href` loads a view fragment into the panel and needs `xlink:actuate`: `onLoad` at once, `onRequest` when first shown; without it nothing loads. A panel has no enable/disable.
- `selected` and `icon` are read by a parent tabstrip.
