import React, { useState, useEffect } from 'react'; import { Dialog, DialogTitle, DialogContent, DialogActions, Button, Typography, Box, Accordion, AccordionSummary, AccordionDetails, TextField, Chip, Grid, } from '@mui/material'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import PaletteIcon from '@mui/icons-material/Palette'; const ThemeCustomizerDialog = ({ open, onClose, theme, onThemeChange }) => { const [localTheme, setLocalTheme] = useState(theme); // @note Theme customizer for development - allows real-time theme changes useEffect(() => { setLocalTheme(theme); }, [theme]); const handleColorChange = (path, value) => { const pathArray = path.split('.'); const newTheme = { ...localTheme }; let current = newTheme; for (let i = 0; i < pathArray.length - 1; i++) { current = current[pathArray[i]]; } current[pathArray[pathArray.length - 1]] = value; setLocalTheme(newTheme); onThemeChange(newTheme); }; const resetTheme = () => { const defaultTheme = { palette: { mode: 'light', primary: { main: '#2E7D32', light: '#4CAF50', dark: '#1B5E20', }, secondary: { main: '#81C784', light: '#A5D6A7', dark: '#66BB6A', }, background: { default: '#C8E6C9', paper: '#ffffff', }, text: { primary: '#33691E', secondary: '#558B2F', }, success: { main: '#43A047', }, error: { main: '#D32F2F', }, }, typography: { fontFamily: "'Roboto', 'Helvetica', 'Arial', sans-serif", h4: { fontWeight: 600, color: '#33691E', }, }, }; setLocalTheme(defaultTheme); onThemeChange(defaultTheme); }; const ColorPicker = ({ label, path, value }) => ( {label} handleColorChange(path, e.target.value)} sx={{ width: 50, height: 35 }} /> handleColorChange(path, e.target.value)} size="small" sx={{ flex: 1, fontSize: '0.75rem' }} /> ); return ( Theme Customizer (Development Mode) This tool is only available in development mode for theme customization. }> Primary Colors }> Secondary Colors }> Background & Text }> Status Colors ); }; export default ThemeCustomizerDialog;