| import { useState, useCallback } from 'react'; | |
| export const useNotification = () => { | |
| const [notifications, setNotifications] = useState([]); | |
| const addNotification = useCallback((notification) => { | |
| const id = notification.id || `notification-${Date.now()}-${Math.random()}`; | |
| const newNotification = { | |
| id, | |
| type: 'info', | |
| dismissible: true, | |
| autoDismiss: false, | |
| duration: 5000, | |
| showProgress: false, | |
| ...notification | |
| }; | |
| setNotifications(prev => [...prev, newNotification]); | |
| return id; | |
| }, []); | |
| const removeNotification = useCallback((id) => { | |
| setNotifications(prev => prev.filter(n => n.id !== id)); | |
| }, []); | |
| const clearAll = useCallback(() => { | |
| setNotifications([]); | |
| }, []); | |
| const updateNotification = useCallback((id, updates) => { | |
| setNotifications(prev => | |
| prev.map(n => n.id === id ? { ...n, ...updates } : n) | |
| ); | |
| }, []); | |
| return { | |
| notifications, | |
| addNotification, | |
| removeNotification, | |
| clearAll, | |
| updateNotification | |
| }; | |
| }; |