From 3019f7ffda7d7c82cfd8b31ea7397b0ab528ec65 Mon Sep 17 00:00:00 2001 From: Solstice Date: Tue, 9 Jun 2026 00:52:52 -0700 Subject: feat: ambient sound engine and volume controls --- src/components/AmbientControl.tsx | 98 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 src/components/AmbientControl.tsx (limited to 'src/components/AmbientControl.tsx') diff --git a/src/components/AmbientControl.tsx b/src/components/AmbientControl.tsx new file mode 100644 index 0000000..5b5017a --- /dev/null +++ b/src/components/AmbientControl.tsx @@ -0,0 +1,98 @@ +import { ChangeEvent } from 'react'; +import { useAudioStore, type AmbientSound } from '../store/audioStore'; + +const SOUND_OPTIONS: Array<{ value: AmbientSound; label: string }> = [ + { value: 'none', label: 'Silent' }, + { value: 'rain', label: 'Rain' }, + { value: 'cafe', label: 'Cafe' }, + { value: 'white_noise', label: 'White Noise' }, +]; + +export function AmbientControl() { + const { available, sound, volume, setSound, setVolume } = useAudioStore(); + + const handleSoundChange = async (event: ChangeEvent) => { + await setSound(event.target.value as AmbientSound); + }; + + const handleVolumeChange = async (event: ChangeEvent) => { + await setVolume(Number(event.target.value)); + }; + + return ( +
+
+ + Ambient + + + {available ? 'Looping background audio' : 'Audio unavailable'} + +
+ + + +
+ + + {Math.round(volume * 100)}% + +
+
+ ); +} -- cgit v1.3-2-g0d8e