import Button from './components/Button.tsx'; import {getRandomTheme, HSL, hslToString, useHslTheme} from './theme.tsx'; import Dialog from './components/Dialog.tsx'; import {useMemo, useState} from 'react'; import {NumberInput, RangeInput, TextInput} from './components/Input.tsx'; import Row from './components/Row.tsx'; import Column from './components/Column.tsx'; import './ThemeChooser.css'; import Spacer from './components/Spacer.tsx'; function HslEditor({name, value, setValue}: { name: string; value: HSL; setValue: (value: HSL) => void }) { const setH = (h: number) => setValue({...value, h}); const setS = (s: number) => setValue({...value, s}); const setL = (l: number) => setValue({...value, l}); return

{name}

Hue

Saturation

Lightness

; } function ThemeChooserDialog({onClose}: { onClose: () => void; }) { const {hslTheme, setHslTheme} = useHslTheme(); const [themeString, setThemeString] = useState(JSON.stringify(hslTheme)); const [errorMsg, setErrorMsg] = useState(); useMemo(() => { setThemeString(JSON.stringify(hslTheme)); }, [hslTheme]); return ; } export default function ThemeChooser({}: {}) { const [open, setOpen] = useState(false); return <>