import { Button, Paper, Select, Slider, Stack, Text, Group, Title } from '@mantine/core'
import type { Band, Precip } from '../types'
import { PRESETS, matchPreset } from '../presets'
export interface ControlsState {
dm: number
logNw: number
mu: number
band: Band
cantingStd: number
precip: Precip
}
interface Props {
value: ControlsState
onChange: (next: ControlsState) => void
}
function SliderField({
label,
value,
min,
max,
step,
decimals,
marks,
onChange,
}: {
label: React.ReactNode
value: number
min: number
max: number
step: number
decimals: number
marks?: { value: number; label?: string }[]
onChange: (v: number) => void
}) {
return (
{label}
{value.toFixed(decimals)}
)
}
export function Controls({ value, onChange }: Props) {
const set = (k: K, v: ControlsState[K]) =>
onChange({ ...value, [k]: v })
return (
Presets
{PRESETS.map((p) => {
const active = matchPreset(value) === p.key
return (
)
})}
)
}