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