d15a13e485
- Delete all ops page components (ReviewQueue, AIMonitoring, Governance, SourceMonitoring, ActivityTimeline, SignalPipeline) - Remove OPERATIONS workspace from AppShell config, nav order, path detection - Remove all /ops/* routes from App.tsx - Remove WorkspaceType.OPERATIONS from allowedWorkspaces in authService, sessionStore, permissions - Keep MarketIntelligence page (already moved to /supply/market-intelligence) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
34 lines
1020 B
TypeScript
34 lines
1020 B
TypeScript
import { Alert, Snackbar, Stack } from '@mui/material'
|
|
import { useToastStore } from '../../stores/toastStore'
|
|
|
|
export function ToastProvider() {
|
|
const { toasts, dismissToast } = useToastStore()
|
|
|
|
return (
|
|
<Stack
|
|
spacing={1}
|
|
sx={{ position: 'fixed', bottom: 24, left: '50%', transform: 'translateX(-50%)', zIndex: 9999, alignItems: 'center' }}
|
|
>
|
|
{toasts.map((toast) => (
|
|
<Snackbar
|
|
key={toast.id}
|
|
open
|
|
autoHideDuration={toast.duration ?? 4000}
|
|
onClose={() => dismissToast(toast.id)}
|
|
anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}
|
|
sx={{ position: 'relative', transform: 'none', left: 'auto', bottom: 'auto' }}
|
|
>
|
|
<Alert
|
|
onClose={() => dismissToast(toast.id)}
|
|
severity={toast.severity}
|
|
variant="filled"
|
|
sx={{ minWidth: 320, boxShadow: 3 }}
|
|
>
|
|
{toast.message}
|
|
</Alert>
|
|
</Snackbar>
|
|
))}
|
|
</Stack>
|
|
)
|
|
}
|