import { HTMLInputTypeAttribute, JSX } from "react"; import { LocalSettingsSchema, LocalSettingsType } from "@shared/constants"; import { OptionSpace } from "./OptionSpace"; import { OptionInput } from "./OptionInput"; import { useLocalStorage } from "usehooks-ts"; import { OptionDropdown } from "./OptionDropdown"; export function LocalOption (data: { label: string; id: keyof LocalSettingsType; type: HTMLInputTypeAttribute | 'dropdown'; placeholder?: string; values?: string[]; icon?: JSX.Element; children?: any; }) { const [localValue, setLocalValue] = useLocalStorage(data.id, LocalSettingsSchema.shape[data.id].parse(undefined), { deserializer: (v) => LocalSettingsSchema.shape[data.id].parse(JSON.parse(v)) }); return ( {data.type === 'dropdown' && data.values && { if (data.type === 'checkbox') { setLocalValue(v); } else { setLocalValue(v); } }} value={localValue} />} {data.type !== 'dropdown' && { if (data.type === 'checkbox') { setLocalValue(v); } else { setLocalValue(v); } }} value={localValue} />} {data.children} ); }