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}