@@ -31,18 +31,22 @@ export const ToastTrigger = (props: ToasterProps) => {
3131
3232 // Show toast using Sonner - Sonner handles deduplication via ID automatically
3333 const duration = props . timeout || 2000
34- const showCloseButton = duration > 5000
34+ const showCloseButton = duration > 2000
3535 const showLoadingIcon = duration > 2000
3636
3737 if ( typeof props . message === 'string' ) {
3838 const toastId = toast . custom (
3939 ( ) => (
4040 < div >
4141 { showLoadingIcon && (
42- < span className = "spinner-border spinner-border-sm me-2" role = "status" >
42+ < span className = "spinner-border spinner-border-sm me-2 alert-info " role = "status" >
4343 < span className = "visually-hidden" > Loading...</ span >
4444 </ span >
4545 ) }
46+ { showCloseButton && (
47+ < span className = "codicon codicon-close" onClick = { ( ) => toast . dismiss ( toastId ) } role = "status" >
48+ </ span >
49+ ) }
4650 { props . message }
4751 </ div >
4852 ) ,
@@ -59,16 +63,24 @@ export const ToastTrigger = (props: ToasterProps) => {
5963 }
6064 }
6165 )
66+ // Call the callback with the toast ID so caller can dismiss it later
67+ if ( props . onToastCreated ) {
68+ props . onToastCreated ( toastId )
69+ }
6270 } else {
6371 // For JSX elements, use toast.custom
6472 const toastId = toast . custom (
6573 ( ) => (
6674 < div >
6775 { showLoadingIcon && (
68- < span className = "spinner-border spinner-border-sm me-2" role = "status" >
76+ < span className = "spinner-border spinner-border-sm me-2 alert-info " role = "status" >
6977 < span className = "visually-hidden" > Loading...</ span >
7078 </ span >
7179 ) }
80+ { showCloseButton && (
81+ < span className = "codicon codicon-close" onClick = { ( ) => toast . dismiss ( toastId ) } role = "status" >
82+ </ span >
83+ ) }
7284 { props . message }
7385 </ div >
7486 ) ,
@@ -84,6 +96,10 @@ export const ToastTrigger = (props: ToasterProps) => {
8496 }
8597 }
8698 )
99+ // Call the callback with the toast ID so caller can dismiss it later
100+ if ( props . onToastCreated ) {
101+ props . onToastCreated ( toastId )
102+ }
87103 }
88104 }
89105 } , [ ] )
@@ -130,10 +146,14 @@ export const Toaster = (props: ToasterProps) => {
130146 ( ) => (
131147 < div className = "remixui_sonner_toast alert alert-info bg-light" >
132148 { showLoadingIcon && (
133- < span className = "spinner-border spinner-border-sm me-2" role = "status" >
149+ < span className = "spinner-border spinner-border-sm me-2 alert-info " role = "status" >
134150 < span className = "visually-hidden" > Loading...</ span >
135151 </ span >
136152 ) }
153+ { showCloseButton && (
154+ < span className = "codicon codicon-close" onClick = { ( ) => toast . dismiss ( toastId ) } role = "status" >
155+ </ span >
156+ ) }
137157 { props . message }
138158 </ div >
139159 ) ,
@@ -156,10 +176,14 @@ export const Toaster = (props: ToasterProps) => {
156176 ( ) => (
157177 < div className = "remixui_sonner_toast alert alert-info bg-light" >
158178 { showLoadingIcon && (
159- < span className = "spinner-border spinner-border-sm me-2" role = "status" >
179+ < span className = "spinner-border spinner-border-sm me-2 alert-info " role = "status" >
160180 < span className = "visually-hidden" > Loading...</ span >
161181 </ span >
162182 ) }
183+ { showCloseButton && (
184+ < span className = "codicon codicon-close" onClick = { ( ) => toast . dismiss ( toastId ) } role = "status" >
185+ </ span >
186+ ) }
163187 { props . message }
164188 </ div >
165189 ) ,
0 commit comments