Canonical capture-state value for deterministic preview screenshot targets.
@type t() :: %MailglassAdmin.Preview.CaptureState{ mailable: module(), scenario: atom(), theme: theme(), url: String.t(), width: 375 | 768 | 1024 }
@type theme() :: :light | :dark
@spec build_url(String.t(), module(), atom(), 375 | 768 | 1024, theme()) :: String.t()
@spec new(String.t(), module(), atom(), 375 | 768 | 1024, theme()) :: t()
@spec sort_key(t()) :: {String.t(), String.t(), 375 | 768 | 1024, String.t()}
@spec themes() :: [theme()]
@spec widths() :: [375 | 768 | 1024]