Spaces:
Running
Running
| interface SelectorDropdownProps { | |
| value: string; | |
| options: Array<{ value: string; label: string }>; | |
| onChange: (value: string) => void; | |
| } | |
| export function SelectorDropdown({ value, options, onChange }: SelectorDropdownProps) { | |
| return ( | |
| <label className="planner-select"> | |
| <select onChange={(event) => onChange(event.target.value)} value={value}> | |
| {options.map((option) => ( | |
| <option key={option.value} value={option.value}> | |
| {option.label} | |
| </option> | |
| ))} | |
| </select> | |
| </label> | |
| ); | |
| } | |
| interface ToggleProps { | |
| label: string; | |
| checked: boolean; | |
| onChange: (value: boolean) => void; | |
| } | |
| export function Toggle({ label, checked, onChange }: ToggleProps) { | |
| return ( | |
| <label className="planner-toggle"> | |
| <span className="planner-toggle-label">{label}</span> | |
| <span | |
| className={`switch ${checked ? "on" : ""}`} | |
| onClick={() => onChange(!checked)} | |
| role="switch" | |
| aria-checked={checked} | |
| tabIndex={0} | |
| > | |
| <span className="thumb" /> | |
| </span> | |
| </label> | |
| ); | |
| } | |