mirror of
https://github.com/stackblitz-labs/bolt.diy
synced 2025-06-26 18:26:38 +00:00
- Move stores/utils/types to their relative directories (i.e chat stores in chat directory) - Move utility files to shared/utils - Move component files to shared/components - Move type definitions to shared/types - Move stores to shared/stores - Update import paths across the project
67 lines
2.0 KiB
TypeScript
67 lines
2.0 KiB
TypeScript
import { useCallback } from 'react';
|
|
import { toast as toastify } from 'react-toastify';
|
|
|
|
// Configure standard toast settings
|
|
export const configuredToast = {
|
|
success: (message: string, options = {}) => toastify.success(message, { autoClose: 3000, ...options }),
|
|
error: (message: string, options = {}) => toastify.error(message, { autoClose: 3000, ...options }),
|
|
info: (message: string, options = {}) => toastify.info(message, { autoClose: 3000, ...options }),
|
|
warning: (message: string, options = {}) => toastify.warning(message, { autoClose: 3000, ...options }),
|
|
loading: (message: string, options = {}) => toastify.loading(message, { autoClose: 3000, ...options }),
|
|
};
|
|
|
|
// Export the original toast for cases where specific configuration is needed
|
|
export { toastify as toast };
|
|
|
|
interface ToastOptions {
|
|
type?: 'success' | 'error' | 'info' | 'warning';
|
|
duration?: number;
|
|
}
|
|
|
|
export function useToast() {
|
|
const toast = useCallback((message: string, options: ToastOptions = {}) => {
|
|
const { type = 'info', duration = 3000 } = options;
|
|
|
|
toastify[type](message, {
|
|
position: 'bottom-right',
|
|
autoClose: duration,
|
|
hideProgressBar: false,
|
|
closeOnClick: true,
|
|
pauseOnHover: true,
|
|
draggable: true,
|
|
progress: undefined,
|
|
theme: 'dark',
|
|
});
|
|
}, []);
|
|
|
|
const success = useCallback(
|
|
(message: string, options: Omit<ToastOptions, 'type'> = {}) => {
|
|
toast(message, { ...options, type: 'success' });
|
|
},
|
|
[toast],
|
|
);
|
|
|
|
const error = useCallback(
|
|
(message: string, options: Omit<ToastOptions, 'type'> = {}) => {
|
|
toast(message, { ...options, type: 'error' });
|
|
},
|
|
[toast],
|
|
);
|
|
|
|
const info = useCallback(
|
|
(message: string, options: Omit<ToastOptions, 'type'> = {}) => {
|
|
toast(message, { ...options, type: 'info' });
|
|
},
|
|
[toast],
|
|
);
|
|
|
|
const warning = useCallback(
|
|
(message: string, options: Omit<ToastOptions, 'type'> = {}) => {
|
|
toast(message, { ...options, type: 'warning' });
|
|
},
|
|
[toast],
|
|
);
|
|
|
|
return { toast, success, error, info, warning };
|
|
}
|