Semantic error payload shared by TUI, Web, previews, and persisted session events.
@type t() :: %Vibe.UI.Error{ detail: String.t() | nil, hint: String.t() | nil, kind: atom() | nil, message: String.t(), provider: atom() | String.t() | nil, retryable?: boolean() }
@spec detail(t() | map() | term()) :: String.t() | nil
@spec hint(t() | map() | term()) :: String.t() | nil
@spec message(t() | map() | String.t() | term()) :: String.t()
@spec new( String.t(), keyword() ) :: t()
@spec text(t() | map() | String.t() | term()) :: String.t()