From c8397bb5ef63c904f2296b2e6e745e0fd11d3c35 Mon Sep 17 00:00:00 2001 From: Kendall Garner <17521368+kgarner7@users.noreply.github.com> Date: Sun, 10 Sep 2023 22:03:46 +0000 Subject: [PATCH] Add transparency/opacity for queue sidebar (#231) * add opacity * add background for song metadata * Add padding and border radius to opacity elements * Remove font-weight transition on active lyrics (#233) --------- Co-authored-by: jeffvli --- src/renderer/features/lyrics/lyric-line.tsx | 4 ++-- .../components/full-screen-player-image.tsx | 13 +++++++++++-- .../components/full-screen-player-queue.tsx | 16 +++++++++++++--- .../player/components/full-screen-player.tsx | 18 +++++++++++++++++- src/renderer/store/full-screen-player.store.ts | 2 ++ src/renderer/themes/default.scss | 1 + src/renderer/themes/light.scss | 1 + 7 files changed, 47 insertions(+), 8 deletions(-) diff --git a/src/renderer/features/lyrics/lyric-line.tsx b/src/renderer/features/lyrics/lyric-line.tsx index 445e5810..f617d9c1 100644 --- a/src/renderer/features/lyrics/lyric-line.tsx +++ b/src/renderer/features/lyrics/lyric-line.tsx @@ -11,13 +11,13 @@ interface LyricLineProps extends ComponentPropsWithoutRef<'div'> { const StyledText = styled(TextTitle)` color: var(--main-fg); - font-weight: 400; + font-weight: 600; text-align: ${(props) => props.$alignment}; font-size: ${(props) => props.$fontSize}px; opacity: 0.5; + padding: 0 1rem; &.active { - font-weight: 800; opacity: 1; } diff --git a/src/renderer/features/player/components/full-screen-player-image.tsx b/src/renderer/features/player/components/full-screen-player-image.tsx index 61ab8b49..6d84f2eb 100644 --- a/src/renderer/features/player/components/full-screen-player-image.tsx +++ b/src/renderer/features/player/components/full-screen-player-image.tsx @@ -37,7 +37,15 @@ const ImageContainer = styled(motion.div)` margin-bottom: 1rem; `; -const MetadataContainer = styled(Stack)` +interface TransparentMetadataContainer { + opacity: number; +} + +const MetadataContainer = styled(Stack)` + background: rgba(var(--main-bg-transparent), ${({ opacity }) => opacity}%); + padding: 1rem; + border-radius: 5px; + h1 { font-size: 3.5vh; } @@ -120,7 +128,7 @@ const ImageWithPlaceholder = ({ export const FullScreenPlayerImage = () => { const { queue } = usePlayerData(); - const useImageAspectRatio = useFullScreenPlayerStore((state) => state.useImageAspectRatio); + const { opacity, useImageAspectRatio } = useFullScreenPlayerStore(); const currentSong = queue.current; const { color: background } = useFastAverageColor({ algorithm: 'dominant', @@ -208,6 +216,7 @@ export const FullScreenPlayerImage = () => { ` + padding: 1rem; + background: rgba(var(--main-bg-transparent), ${({ opacity }) => opacity}%); display: grid; grid-template-rows: auto minmax(0, 1fr); grid-template-columns: 1fr; + border-radius: 5px; `; export const FullScreenPlayerQueue = () => { - const { activeTab } = useFullScreenPlayerStore(); + const { activeTab, opacity } = useFullScreenPlayerStore(); const { setStore } = useFullScreenPlayerStoreActions(); const headerItems = [ @@ -73,7 +80,10 @@ export const FullScreenPlayerQueue = () => { ]; return ( - + { - const { dynamicBackground, expanded, useImageAspectRatio } = useFullScreenPlayerStore(); + const { dynamicBackground, expanded, opacity, useImageAspectRatio } = + useFullScreenPlayerStore(); const { setStore } = useFullScreenPlayerStoreActions(); const { setSettings } = useSettingsStoreActions(); const lyricConfig = useLyricsSettings(); @@ -134,6 +135,21 @@ const Controls = () => { /> + {dynamicBackground && ( + + )}