pub fn thread_state(state: &str) -> StringExpand description
Thread-state styling: active/ready/promoted are accent;
merged/abandoned are dim (historical, not current);
blocked/stale/draft are warn. Unknown variants fall back
to plain text. The matcher is case-insensitive against the
Display form so callers can pass state.to_string() directly.