import { Box, InputAdornment, MenuItem, Slider, Switch, TextField, Typography } from "@mui/material"; import { useAtom } from "jotai"; import { FC } from "react"; import { stagedSettingsAtom } from "../../../../lib/store/jotai/settings"; import { BetaChip } from "../BetaChip"; import { CategoryTitle } from "../CategoryTitle"; import { DevChip } from "../DevChip"; import { SettingsItem } from "../SettingsItem"; interface SettingsTabStyleProps { sx?: any; } export const SettingsTabStyle: FC = ({ sx }) => { // atoms const [stagedSettings, setStagedSettings] = useAtom(stagedSettingsAtom); const handleSettingsStyleValueChange = (settingKey: string, settingValue: boolean | number | string | number[]) => { const newSettings = { ...stagedSettings, style: { ...stagedSettings.style, [settingKey]: settingValue, }, }; setStagedSettings(newSettings); }; return ( Dark mode } input={ { handleSettingsStyleValueChange(e.target.name, e.target.checked); }} /> } /> { handleSettingsStyleValueChange(e.target.name, e.target.value); }} sx={{ width: "100%", }} size="small" type="color" value={stagedSettings.style.accent_color} variant="standard" /> } /> { handleSettingsStyleValueChange(e.target.name, e.target.value); }} select size="small" sx={{ maxWidth: "100%", }} value={stagedSettings.style.font_family || "monospace"} variant="outlined" > Monospace Sans Serif Comic Sans System font } /> { handleSettingsStyleValueChange("font_scaling", value); }} step={10} value={stagedSettings.style.font_scaling} valueLabelDisplay="auto" /> } /> Transition duration } input={ ms, inputProps: { min: 0, max: 100, step: 1 }, }} name="transition_duration" onChange={(e) => { handleSettingsStyleValueChange(e.target.name, parseFloat(e.target.value)); }} sx={{ width: "100%", }} size="small" type="number" value={stagedSettings.style.transition_duration} variant="standard" /> } /> Radius } input={ px, inputProps: { min: 0, max: 100, step: 1 }, }} name="radius" onChange={(e) => { handleSettingsStyleValueChange(e.target.name, parseFloat(e.target.value)); }} sx={{ width: "100%", }} size="small" type="number" value={stagedSettings.style.radius} variant="standard" /> } /> Window height } input={ %, inputProps: { min: 0, max: 100, step: 1 }, }} name="window_height" onChange={(e) => { handleSettingsStyleValueChange(e.target.name, parseFloat(e.target.value)); }} sx={{ width: "100%", }} size="small" type="number" value={stagedSettings.style.window_height} variant="standard" /> } /> Window width } input={ px, inputProps: { min: 0, max: 10000, step: 1 }, }} name="window_width" onChange={(e) => { handleSettingsStyleValueChange(e.target.name, parseFloat(e.target.value)); }} sx={{ width: "100%", }} size="small" type="number" value={stagedSettings.style.window_width} variant="standard" /> } /> ); };