import {
AccountCircle,
Api,
ChevronRight,
Circle,
Code,
FamilyRestroom,
Language,
Notifications,
Palette,
Person,
Security,
Settings,
Star,
Storage,
ViewSidebar,
} from '@mui/icons-material'
import {
Avatar,
Box,
Button,
Card,
CardContent,
Chip,
Container,
List,
ListItem,
ListItemButton,
ListItemContent,
ListItemDecorator,
Stack,
Typography,
} from '@mui/joy'
import { useTranslation } from 'react-i18next'
import { useNavigate } from 'react-router-dom'
import { useUserProfile } from '../../queries/UserQueries'
import { isPlusAccount } from '../../utils/Helpers'
import { isParentUser } from '../../utils/UserHelpers'
const SettingsOverview = () => {
const { t } = useTranslation('settings')
const navigate = useNavigate()
const { data: userProfile } = useUserProfile()
const settingsCards = [
{
id: 'profile',
title: t('overview.sections.profile.title'),
description: t('overview.sections.profile.description'),
icon: ,
},
{
id: 'circle',
title: t('overview.sections.circle.title'),
description: t('overview.sections.circle.description'),
icon: ,
},
{
id: 'account',
title: t('overview.sections.account.title'),
description: t('overview.sections.account.description'),
icon: ,
},
{
id: 'subaccounts',
title: t('overview.sections.subaccounts.title'),
description: t('overview.sections.subaccounts.description'),
icon: ,
},
{
id: 'notifications',
title: t('overview.sections.notifications.title'),
description: t('overview.sections.notifications.description'),
icon: ,
},
{
id: 'mfa',
title: t('overview.sections.mfa.title'),
description: t('overview.sections.mfa.description'),
icon: ,
},
{
id: 'apitokens',
title: t('overview.sections.apitokens.title'),
description: t('overview.sections.apitokens.description'),
icon: ,
},
{
id: 'storage',
title: t('overview.sections.storage.title'),
description: t('overview.sections.storage.description'),
icon: ,
},
{
id: 'sidepanel',
title: t('overview.sections.sidepanel.title'),
description: t('overview.sections.sidepanel.description'),
icon: ,
},
{
id: 'theme',
title: t('overview.sections.theme.title'),
description: t('overview.sections.theme.description'),
icon: ,
},
{
id: 'localization',
title: t('overview.sections.localization.title'),
description: t('overview.sections.localization.description'),
icon: ,
isBeta: true,
},
{
id: 'advanced',
title: t('overview.sections.advanced.title'),
description: t('overview.sections.advanced.description'),
icon: ,
},
{
id: 'developer',
title: t('overview.sections.developer.title'),
description: t('overview.sections.developer.description'),
icon: ,
},
]
const handleCardClick = settingId => {
navigate(`/settings/${settingId}`)
}
// Filter settings based on user type
const getAvailableSettings = () => {
const parentOnlySettings = [
'children',
'mfa',
'apitokens',
'circle',
'account',
]
if (isParentUser(userProfile)) {
// Parent users can access all settings
return settingsCards
} else {
// Child users can only access basic settings
return settingsCards.filter(
setting => !parentOnlySettings.includes(setting.id),
)
}
}
return (
{/* */}
{t('overview.title')}
{t('overview.subtitle')}
{/* Upgrade Card - Only show if user is not a Plus member */}
{userProfile && !isPlusAccount(userProfile) && (
navigate('/settings/account')}
>
{t('overview.upgrade.title')}
{t('overview.upgrade.description')}
• {t('overview.upgrade.features.richText')}
• {t('overview.upgrade.features.notifications')}
• {t('overview.upgrade.features.apiIntegrations')}
• {t('overview.upgrade.features.advancedAutomation')}
)}
{getAvailableSettings().map((setting, index) => (
handleCardClick(setting.id)}
sx={{
'&:hover': {
backgroundColor: 'background.level1',
},
py: 2.5,
px: 3,
borderRadius: 'lg',
mb: 1,
}}
>
{setting.icon}
{setting.title}
{setting.isBeta && (
Early Access
)}
{setting.description}
))}
)
}
export default SettingsOverview