From 5dd860735d53ad22f675c09fcb65040789a8a1d4 Mon Sep 17 00:00:00 2001 From: jeffvli Date: Sat, 3 Jun 2023 18:03:32 -0700 Subject: [PATCH] Adjust lyrics styling / animations --- src/renderer/features/lyrics/lyric-line.tsx | 16 +++++++++----- src/renderer/features/lyrics/lyrics.tsx | 22 +++++++++---------- .../features/lyrics/synchronized-lyrics.tsx | 14 +++++++++--- .../features/lyrics/unsynchronized-lyrics.tsx | 7 ++++-- .../components/full-screen-player-queue.tsx | 16 +++++++++----- 5 files changed, 47 insertions(+), 28 deletions(-) diff --git a/src/renderer/features/lyrics/lyric-line.tsx b/src/renderer/features/lyrics/lyric-line.tsx index 6856dfdd..d46f7ddf 100644 --- a/src/renderer/features/lyrics/lyric-line.tsx +++ b/src/renderer/features/lyrics/lyric-line.tsx @@ -7,16 +7,20 @@ interface LyricLineProps extends ComponentPropsWithoutRef<'div'> { } const StyledText = styled(TextTitle)` - font-size: 2rem; + color: var(--main-fg); font-weight: 100; - line-height: 3.5rem; + font-size: 2vmax; + line-height: 3.5vmax; + opacity: 0.5; - &.active, - &.credit { - font-size: 2.5rem; + &.active { font-weight: 800; - line-height: 4rem; + font-size: 2.5vmax; + line-height: 4vmax; + opacity: 1; } + + transition: opacity 0.3s ease-in-out, font-size 0.3s ease-in-out; `; export const LyricLine = ({ text, ...props }: LyricLineProps) => { diff --git a/src/renderer/features/lyrics/lyrics.tsx b/src/renderer/features/lyrics/lyrics.tsx index 3005882e..6f50a6f8 100644 --- a/src/renderer/features/lyrics/lyrics.tsx +++ b/src/renderer/features/lyrics/lyrics.tsx @@ -1,16 +1,15 @@ import { useEffect, useRef, useState } from 'react'; +import { Center, Group } from '@mantine/core'; import isElectron from 'is-electron'; import { ErrorBoundary } from 'react-error-boundary'; import { ErrorFallback } from '/@/renderer/features/action-required'; import { getServerById, useCurrentSong } from '/@/renderer/store'; -import { SynchronizedLyrics } from './synchronized-lyrics'; import { UnsynchronizedLyrics } from '/@/renderer/features/lyrics/unsynchronized-lyrics'; -import { LyricLine } from '/@/renderer/features/lyrics/lyric-line'; -import { Center, Group } from '@mantine/core'; import { RiInformationFill } from 'react-icons/ri'; import { TextTitle } from '/@/renderer/components'; import { LyricsResponse, SynchronizedLyricsArray } from '/@/renderer/api/types'; import { useSongLyrics } from '/@/renderer/features/lyrics/queries/lyric-query'; +import { SynchronizedLyrics } from './synchronized-lyrics'; const lyrics = isElectron() ? window.electron.lyrics : null; @@ -120,18 +119,17 @@ export const Lyrics = () => { )} - {source && ( - - )} {songLyrics && (Array.isArray(songLyrics) ? ( - + ) : ( - + ))} ); diff --git a/src/renderer/features/lyrics/synchronized-lyrics.tsx b/src/renderer/features/lyrics/synchronized-lyrics.tsx index 9d2bc724..c7b2e91f 100644 --- a/src/renderer/features/lyrics/synchronized-lyrics.tsx +++ b/src/renderer/features/lyrics/synchronized-lyrics.tsx @@ -11,14 +11,21 @@ import { LyricLine } from '/@/renderer/features/lyrics/lyric-line'; import isElectron from 'is-electron'; import { PlayersRef } from '/@/renderer/features/player/ref/players-ref'; import { SynchronizedLyricsArray } from '/@/renderer/api/types'; +import styled from 'styled-components'; +import { Text } from '/@/renderer/components'; const mpvPlayer = isElectron() ? window.electron.mpvPlayer : null; +const SynchronizedLyricsContainer = styled.div` + padding: 3rem 0 10rem; +`; + interface SynchronizedLyricsProps { lyrics: SynchronizedLyricsArray; + source: string | null; } -export const SynchronizedLyrics = ({ lyrics }: SynchronizedLyricsProps) => { +export const SynchronizedLyrics = ({ lyrics, source }: SynchronizedLyricsProps) => { const playersRef = PlayersRef; const status = useCurrentStatus(); const playerType = usePlayerType(); @@ -203,7 +210,8 @@ export const SynchronizedLyrics = ({ lyrics }: SynchronizedLyricsProps) => { }, []); return ( -
+ + {source && Lyrics provided by: {source}} {lyrics.map(([, text], idx) => ( { text={text} /> ))} -
+ ); }; diff --git a/src/renderer/features/lyrics/unsynchronized-lyrics.tsx b/src/renderer/features/lyrics/unsynchronized-lyrics.tsx index 9cb8a083..4ea19779 100644 --- a/src/renderer/features/lyrics/unsynchronized-lyrics.tsx +++ b/src/renderer/features/lyrics/unsynchronized-lyrics.tsx @@ -1,17 +1,20 @@ import { useMemo } from 'react'; +import { Text } from '/@/renderer/components'; import { LyricLine } from '/@/renderer/features/lyrics/lyric-line'; interface UnsynchronizedLyricsProps { lyrics: string; + source: string | null; } -export const UnsynchronizedLyrics = ({ lyrics }: UnsynchronizedLyricsProps) => { +export const UnsynchronizedLyrics = ({ lyrics, source }: UnsynchronizedLyricsProps) => { const lines = useMemo(() => { return lyrics.split('\n'); }, [lyrics]); return ( -
+
+ {source && Lyrics provided by: {source}} {lines.map((text, idx) => ( { ) : activeTab === 'lyrics' ? ( - + ) : null}