2828if TYPE_CHECKING :
2929 from ..session import Session
3030
31+ # Valid toast types
32+ ToastType = Literal [
33+ "primary" ,
34+ "secondary" ,
35+ "success" ,
36+ "info" ,
37+ "warning" ,
38+ "danger" ,
39+ "error" , # alias for "danger", handled in normalization
40+ "light" ,
41+ "dark" ,
42+ ]
43+
3144
3245class ToastPayload (RenderedDeps ):
3346 id : str
@@ -50,7 +63,7 @@ def __init__(
5063 header : Optional [ToastHeader | TagNode ] = None ,
5164 icon : Optional [TagNode ] = None ,
5265 id : Optional [str ] = None ,
53- type : Optional [str ] = None ,
66+ type : Optional [ToastType ] = None ,
5467 duration : Optional [float ] = 5000 ,
5568 position : str = "top-right" ,
5669 closable : bool = True ,
@@ -174,19 +187,7 @@ def toast(
174187 header : Optional [str | ToastHeader | TagNode ] = None ,
175188 icon : Optional [TagNode ] = None ,
176189 id : Optional [str ] = None ,
177- type : Optional [
178- Literal [
179- "primary" ,
180- "secondary" ,
181- "success" ,
182- "info" ,
183- "warning" ,
184- "danger" ,
185- "error" ,
186- "light" ,
187- "dark" ,
188- ]
189- ] = None ,
190+ type : Optional [ToastType ] = None ,
190191 duration_s : Optional [int | float ] = 5 ,
191192 position : str | list [str ] | tuple [str , ...] = "top-right" ,
192193 closable : bool = True ,
@@ -479,14 +480,14 @@ def hide_toast(
479480
480481
481482@overload
482- def _normalize_toast_type (type : str ) -> str : ...
483+ def _normalize_toast_type (type : ToastType ) -> ToastType : ...
483484
484485
485486@overload
486487def _normalize_toast_type (type : None ) -> None : ...
487488
488489
489- def _normalize_toast_type (type : Optional [str ]) -> Optional [str ]:
490+ def _normalize_toast_type (type : Optional [ToastType ]) -> Optional [ToastType ]:
490491 """Normalize toast type, converting "error" to "danger"."""
491492 if type == "error" :
492493 return "danger"
0 commit comments