blob: 287cd60f48ed24fea917c544f2cbcbcd5c83c50c [file] [log] [blame]
Michelle Sepkap Simee580f422022-10-31 23:27:04 -04001/*
2 * Copyright (C) 2022 Savoir-faire Linux Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Affero General Public License as
6 * published by the Free Software Foundation; either version 3 of the
7 * License, or (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU Affero General Public License for more details.
13 *
14 * You should have received a copy of the GNU Affero General Public
15 * License along with this program. If not, see
16 * <https://www.gnu.org/licenses/>.
17 */
18import { Alert, AlertColor, AlertProps, AlertTitle, Snackbar, SnackbarProps } from '@mui/material';
19import { useTranslation } from 'react-i18next';
20
21type AlertSnackbarProps = AlertProps & {
22 severity: AlertColor;
23 open?: boolean;
24 snackBarProps?: Partial<SnackbarProps>;
25};
26
27export function AlertSnackbar({ severity, open, snackBarProps, children, ...alertProps }: AlertSnackbarProps) {
28 const { t } = useTranslation();
29
30 return (
31 <Snackbar
32 open={open}
33 {...snackBarProps}
34 anchorOrigin={{
35 vertical: 'top',
36 horizontal: 'center',
37 ...snackBarProps?.anchorOrigin,
38 }}
39 >
40 <Alert severity={severity} {...alertProps}>
Michelle Sepkap Sime559cc802022-11-05 12:06:40 -040041 {/* For i18n-parser.
42 t('severity_error')
43 t('severity_success')
44 */}
Michelle Sepkap Simee580f422022-10-31 23:27:04 -040045 <AlertTitle>{t(`severity_${severity}`)}</AlertTitle>
46 {children}
47 </Alert>
48 </Snackbar>
49 );
50}