## Overview

Displays clickable transition buttons for a workflow attribute, enabling users to move pages through workflow states directly from the page layout. Without this widget, workflow states and transitions exist in the data model but users have no UI to trigger them.

The widget reads the current workflow state of the page and renders only the transitions that are valid from that state. Transition visibility can be further filtered by static selection or a dynamic script.

## Use Cases

- **Status Management**: Place on any page type with a workflow attribute so users can advance items through stages (e.g., Draft → In Review → Approved).
- **Controlled Transitions**: Use permission gating and transition filtering to ensure only authorized users see specific transition buttons.
- **Compact Status Actions**: Use compact UI mode to fit transition buttons into tight layout areas alongside other status information.

## Design Considerations

- **When to Use**: Every page type that has a workflow attribute should have this widget in its layout. Without it, users cannot trigger transitions from the page view.
- **Placement**: Recommended position is Row 1, right side (4 columns) for maximum visibility. Can also be embedded inside an AttributesGroup or ConnectedAttributesGroup.
- **Permission Gating**: By default, `inheritPageWritePermission` is true, meaning only users with edit permission on the page can see transition buttons. Disable this only if transitions should be available to read-only viewers.
- **Multiple Workflows**: If a type has multiple workflow attributes, place one widget per workflow attribute, each configured with the correct `workflow` reference.

## Related Patterns/Alternatives

- **Attributes Widget** (`cf.platform.attributes` / `cf.cplace.platform.attributesGroup`): Shows the workflow state as a read-only attribute value, but does not provide transition buttons.
- **Board Widget** (`cf.cplace.cboard.main.board`): Can visualize workflow states as columns and allow drag-and-drop transitions, but requires a separate board configuration.
