|  |  | 
 |  |  | import React, { useState, useRef, useEffect, useMemo } from "react"; | 
 |  |  | import { useNavigate } from 'react-router-dom'; | 
 |  |  | import { | 
 |  |  |     Edit, | 
 |  |  |     SimpleForm, | 
 |  |  | 
 |  |  |     NumberField, | 
 |  |  |     required, | 
 |  |  |     useRecordContext, | 
 |  |  |     DeleteButton, | 
 |  |  |     useTheme, | 
 |  |  |     useAuthProvider, | 
 |  |  | } from 'react-admin'; | 
 |  |  | import { useWatch, useFormContext } from "react-hook-form"; | 
 |  |  | import { Stack, Grid, Box, Typography, Card, CardContent } from '@mui/material'; | 
 |  |  | import { Stack, Grid, Box, Typography, Card, CardContent, Tabs, Tab } from '@mui/material'; | 
 |  |  | import * as Common from '@/utils/common'; | 
 |  |  | import { } from '@/config/setting'; | 
 |  |  |  | 
 |  |  | const Settings = () => { | 
 |  |  |     const authProvider = useAuthProvider(); | 
 |  |  |     const navigate = useNavigate(); | 
 |  |  |     const translate = useTranslate(); | 
 |  |  |     const theme = useTheme(); | 
 |  |  |     const [value, setValue] = React.useState(0); | 
 |  |  |  | 
 |  |  |     useEffect(() => { | 
 |  |  |         authProvider.checkAuth().catch(() => { | 
 |  |  |             navigate('/login'); | 
 |  |  |         }); | 
 |  |  |     }, [authProvider, navigate]); | 
 |  |  |  | 
 |  |  |     useEffect(() => { | 
 |  |  |     }, [value]); | 
 |  |  |  | 
 |  |  |     return ( | 
 |  |  |         <> | 
 |  |  |             <Card> | 
 |  |  |                 <CardContent> | 
 |  |  |                      | 
 |  |  |             <Card sx={{ backgroundColor: 'initial' }}> | 
 |  |  |                 <CardContent > | 
 |  |  |                     <Box | 
 |  |  |                         mt={2} | 
 |  |  |                         sx={{ | 
 |  |  |                             flexGrow: 1, | 
 |  |  |                             bgcolor: 'background.paper', | 
 |  |  |                             display: 'flex', | 
 |  |  |                             height: 224, | 
 |  |  |                             border: `1px solid #${theme[0] === 'light' ? 'ddd' : '333'}`, | 
 |  |  |                             borderRadius: 2 | 
 |  |  |                         }} | 
 |  |  |                     > | 
 |  |  |                         <Tabs | 
 |  |  |                             orientation="vertical" | 
 |  |  |                             variant="scrollable" | 
 |  |  |                             value={value} | 
 |  |  |                             onChange={(event, newValue) => { | 
 |  |  |                                 setValue(newValue); | 
 |  |  |                             }} | 
 |  |  |                             indicatorColor="secondary" | 
 |  |  |                             textColor="inherit" | 
 |  |  |                             sx={{ | 
 |  |  |                                 borderRight: 1, | 
 |  |  |                                 borderColor: 'divider', | 
 |  |  |                                 width: 150, | 
 |  |  |                             }} | 
 |  |  |                         > | 
 |  |  |                             <Tab | 
 |  |  |                                 label={translate('settings.base')} | 
 |  |  |                                 id='vertical-tab-0' | 
 |  |  |                                 aria-controls='vertical-tabpanel-0' | 
 |  |  |                             /> | 
 |  |  |                             <Tab label={translate('settings.security')} | 
 |  |  |                                 id='vertical-tab-1' | 
 |  |  |                                 aria-controls='vertical-tabpanel-1' | 
 |  |  |                             /> | 
 |  |  |                         </Tabs> | 
 |  |  |                         <BaseSettings | 
 |  |  |                             value={value} | 
 |  |  |                         /> | 
 |  |  |                         <SecuritySettings | 
 |  |  |                             value={value} | 
 |  |  |                         /> | 
 |  |  |                     </Box> | 
 |  |  |                 </CardContent> | 
 |  |  |             </Card> | 
 |  |  |         </> | 
 |  |  |     ) | 
 |  |  | } | 
 |  |  |  | 
 |  |  | const BaseSettings = (props) => { | 
 |  |  |     const { children, value, ...other } = props; | 
 |  |  |  | 
 |  |  |     return ( | 
 |  |  |         <Box | 
 |  |  |             hidden={value !== 0} | 
 |  |  |             sx={{ p: 3 }} | 
 |  |  |             {...other} | 
 |  |  |         > | 
 |  |  |             <Grid container spacing={6}> | 
 |  |  |                 <Grid item xs={12}> | 
 |  |  |                     {/* https://github.com/themeselection/materio-mui-nextjs-admin-template-free/blob/main/javascript-version/src/views/account-settings/account/AccountDetails.jsx */} | 
 |  |  |                     <Card> | 
 |  |  |                         <CardContent className='mbe-5'> | 
 |  |  |                             <Typography> | 
 |  |  |                                 Base Settings | 
 |  |  |                             </Typography> | 
 |  |  |                         </CardContent> | 
 |  |  |                     </Card> | 
 |  |  |  | 
 |  |  |                 </Grid> | 
 |  |  |             </Grid> | 
 |  |  |         </Box> | 
 |  |  |  | 
 |  |  |     ) | 
 |  |  | } | 
 |  |  |  | 
 |  |  | const SecuritySettings = (props) => { | 
 |  |  |     const { children, value, ...other } = props; | 
 |  |  |  | 
 |  |  |     return ( | 
 |  |  |         <Box | 
 |  |  |             hidden={value !== 1} | 
 |  |  |             sx={{ p: 3 }} | 
 |  |  |             {...other} | 
 |  |  |         > | 
 |  |  |             <Typography> | 
 |  |  |                 Security Settings | 
 |  |  |             </Typography> | 
 |  |  |         </Box> | 
 |  |  |  | 
 |  |  |     ) | 
 |  |  | } | 
 |  |  |  | 
 |  |  | export default Settings; |