OptionalDirtyTrue when the tab has unsaved edits — drives the discard confirm.
OptionalIconOptional Font Awesome class rendered before the label.
Stable identity within the strip.
Tab caption.
OptionalRejectionSet when Status is 'rejected'; surfaced as the tab tooltip so the reason travels with the tab.
Host-owned payload — the in-progress draft.
One workspace tab.
Stateis intentionallyunknown: the framework moves tabs around and never inspects their payload, which is what keeps it app-agnostic. Hosts narrow it themselves — this is the layer boundary, not weak typing.