From bd95cc113ce7048efb19bff7b3fe1d3221a8f5d5 Mon Sep 17 00:00:00 2001
From: Izan Gil <66965250+SrIzan10@users.noreply.github.com>
Date: Fri, 25 Apr 2025 17:16:10 +0200
Subject: [PATCH 1/3] feat: base atmospheres
---
README.md | 2 +-
src/lib/components/app/atmospheres.svelte | 39 +++++++++++++++++++++++
src/lib/components/app/bottom-bar.svelte | 2 ++
src/lib/components/app/daemon.svelte | 11 +++++++
src/lib/components/app/now-playing.svelte | 6 ++--
5 files changed, 57 insertions(+), 3 deletions(-)
create mode 100644 src/lib/components/app/atmospheres.svelte
diff --git a/README.md b/README.md
index 798a28a..007d4fd 100644
--- a/README.md
+++ b/README.md
@@ -7,9 +7,9 @@ The ultimate lofi player. Uses music from [Chillhop](https://chillhop.com/).
- [x] Play music
- [x] Change stations
- [x] Change backgrounds
+- [ ] Background sounds
- [ ] Pomodoro timers
- [ ] Volume control
-- [ ] Background sounds
- [ ] Links to Spotify
- [ ] Alarm(?)
- [ ] Sleep timer
\ No newline at end of file
diff --git a/src/lib/components/app/atmospheres.svelte b/src/lib/components/app/atmospheres.svelte
new file mode 100644
index 0000000..141e48d
--- /dev/null
+++ b/src/lib/components/app/atmospheres.svelte
@@ -0,0 +1,39 @@
+
+
+
+
+
+ Atmospheres
+ {#each appState.atmospheres as atmosphere}
+
+ {
+ sliderChange(atmosphere.name, value);
+ }}
+ />
+ {atmosphere.name}
+
+ {/each}
+
+
diff --git a/src/lib/components/app/bottom-bar.svelte b/src/lib/components/app/bottom-bar.svelte
index 672ee3f..fbebb3c 100644
--- a/src/lib/components/app/bottom-bar.svelte
+++ b/src/lib/components/app/bottom-bar.svelte
@@ -2,6 +2,7 @@
import BgDropdown from '@/components/app/bg-dropdown.svelte';
import Disclaimer from '@/components/app/disclaimer.svelte';
import MusicPlayer from '@/components/app/now-playing.svelte';
+ import Sounds from '@/components/app/atmospheres.svelte';
import StationDropdown from '@/components/app/station-dropdown.svelte';
@@ -14,6 +15,7 @@
+
\ No newline at end of file
diff --git a/src/lib/components/app/daemon.svelte b/src/lib/components/app/daemon.svelte
index 67040f1..9f9e589 100644
--- a/src/lib/components/app/daemon.svelte
+++ b/src/lib/components/app/daemon.svelte
@@ -204,3 +204,14 @@
class="hidden"
>
{/if}
+
+{#each Object.entries(appState.activeAtmospheres) as [name, volume]}
+
+{/each}
\ No newline at end of file
diff --git a/src/lib/components/app/now-playing.svelte b/src/lib/components/app/now-playing.svelte
index 9849029..1ace7ae 100644
--- a/src/lib/components/app/now-playing.svelte
+++ b/src/lib/components/app/now-playing.svelte
@@ -17,7 +17,7 @@
{state.currentSong?.artists}
-
+
{#if state.isPlaying}
@@ -25,6 +25,8 @@
{/if}
-
+
+
+
\ No newline at end of file
From 2dea598af2b674091a22e0ebe9bdd509b58c7230 Mon Sep 17 00:00:00 2001
From: SrIzan10 <66965250+SrIzan10@users.noreply.github.com>
Date: Fri, 25 Apr 2025 18:39:16 +0000
Subject: [PATCH 2/3] feat: atmospheres redesign
---
src/lib/components/app/atmospheres.svelte | 82 +++++++++++++------
src/lib/components/app/daemon.svelte | 6 +-
.../ui/popover/popover-content.svelte | 9 +-
3 files changed, 63 insertions(+), 34 deletions(-)
diff --git a/src/lib/components/app/atmospheres.svelte b/src/lib/components/app/atmospheres.svelte
index 141e48d..34187ec 100644
--- a/src/lib/components/app/atmospheres.svelte
+++ b/src/lib/components/app/atmospheres.svelte
@@ -1,39 +1,69 @@
-
-
-
- Atmospheres
- {#each appState.atmospheres as atmosphere}
-
-
{
- sliderChange(atmosphere.name, value);
- }}
- />
- {atmosphere.name}
+
+
+
+
+
+
+ Atmospheres
+
+
+ {#each appState.atmospheres as atmosphere}
+
+
+ {atmosphere.name}
+
+ {#if getVolumeValue(atmosphere.name) > 0}
+ {#if getVolumeValue(atmosphere.name) > 0 && getVolumeValue(atmosphere.name) <= 0.4}
+
+ {:else if getVolumeValue(atmosphere.name) > 0.4 && getVolumeValue(atmosphere.name) <= 0.8}
+
+ {:else}
+
+ {/if}
+ {Math.round(getVolumeValue(atmosphere.name) * 100)}%
+ {:else}
+
+ Off
+ {/if}
+
+
+
{
+ sliderChange(atmosphere.name, value);
+ }}
+ />
+
+ {/each}
- {/each}
-
-
+
+
+
diff --git a/src/lib/components/app/daemon.svelte b/src/lib/components/app/daemon.svelte
index 9f9e589..ce9ac42 100644
--- a/src/lib/components/app/daemon.svelte
+++ b/src/lib/components/app/daemon.svelte
@@ -1,6 +1,6 @@
diff --git a/src/lib/components/app/daemon.svelte b/src/lib/components/app/daemon.svelte
index ce9ac42..8b745da 100644
--- a/src/lib/components/app/daemon.svelte
+++ b/src/lib/components/app/daemon.svelte
@@ -2,10 +2,12 @@
import { state as appState } from '@/state.svelte';
import { getGeneralData, getStationSongs } from '@/utils';
import { onMount } from 'svelte';
+ import { useIsMobile } from '@/isMobile.svelte';
// svelte-ignore non_reactive_update
let audioElement: HTMLAudioElement;
let isTransitioning = $state(false);
+ let isMobile = useIsMobile();
function togglePlayback(play: boolean) {
if (!audioElement) return;
@@ -204,7 +206,7 @@
{#each Object.entries(appState.activeAtmospheres) as [name, volume]}
atm.name === name)?.urlMobile : appState.atmospheres.find(atm => atm.name === name)?.url}
class="hidden"
id={name}
volume={volume}
diff --git a/src/lib/isMobile.svelte.ts b/src/lib/isMobile.svelte.ts
new file mode 100644
index 0000000..39942ac
--- /dev/null
+++ b/src/lib/isMobile.svelte.ts
@@ -0,0 +1,20 @@
+import { readable } from 'svelte/store';
+import { browser } from '$app/environment';
+export function useIsMobile(mobileWidth = 768) {
+ return readable(false, (set) => {
+ if (!browser) return;
+
+ const checkIsMobile = () => {
+ const isMobile = window.innerWidth < mobileWidth;
+ set(isMobile);
+ };
+
+ checkIsMobile();
+
+ window.addEventListener('resize', checkIsMobile);
+
+ return () => {
+ window.removeEventListener('resize', checkIsMobile);
+ };
+ });
+}
\ No newline at end of file