import { Drawer, Radio, ColorPicker, theme } from 'antd'; import { CheckOutlined } from '@ant-design/icons'; import { useTranslation } from 'react-i18next'; import { useAppStore } from '@/stores/useAppStore'; interface StyleSettingsProps { open: boolean; onClose: () => void; } const PRESET_COLORS = [ { color: '#1677ff', nameKey: 'colorBlue' }, { color: '#13c2c2', nameKey: 'colorCyan' }, { color: '#52c41a', nameKey: 'colorGreen' }, { color: '#722ed1', nameKey: 'colorPurple' }, { color: '#eb2f96', nameKey: 'colorPink' }, { color: '#fa541c', nameKey: 'colorOrange' }, { color: '#faad14', nameKey: 'colorYellow' }, { color: '#2f54eb', nameKey: 'colorIndigo' }, ]; const StyleSettings: React.FC = ({ open, onClose }) => { const { t } = useTranslation('header'); const { token: themeToken } = theme.useToken(); const primaryColor = useAppStore((s) => s.primaryColor); const componentSize = useAppStore((s) => s.componentSize); const menuTheme = useAppStore((s) => s.menuTheme); const setPrimaryColor = useAppStore((s) => s.setPrimaryColor); const setComponentSize = useAppStore((s) => s.setComponentSize); const setMenuTheme = useAppStore((s) => s.setMenuTheme); const isPresetColor = PRESET_COLORS.some((c) => c.color === primaryColor); return (
{t('themeColor')}
{PRESET_COLORS.map(({ color, nameKey }) => (
setPrimaryColor(color)} style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', gap: 4, cursor: 'pointer', }} >
{primaryColor === color && ( )}
{t(nameKey)}
))}
setPrimaryColor(hex)} presets={[]} showText /> {!isPresetColor && t('customColor')}
{t('componentSize')}
setComponentSize(e.target.value)} optionType="button" buttonStyle="solid" > {t('sizeSmall')} {t('sizeMiddle')} {t('sizeLarge')}
{t('menuTheme')}
setMenuTheme(e.target.value)} optionType="button" buttonStyle="solid" > {t('menuThemeDark')} {t('menuThemeLight')}
); }; export default StyleSettings;