From b6a2fb8cb2e4c29be6c5fecc2adaab0b8140855f Mon Sep 17 00:00:00 2001 From: Wardell Bagby <7834478+wardellbagby@users.noreply.github.com> Date: Tue, 4 Jul 2023 02:51:41 -0700 Subject: [PATCH] feat: add soft fade when lyrics are under menu or detail pane --- packages/codemirror/main/editorTheme.ts | 4 ++ packages/renderer/main/detail/DetailPane.tsx | 5 ++- packages/renderer/main/editor/Editor.tsx | 43 ++++++++++++++++++-- packages/renderer/main/menu/Menu.tsx | 7 ++-- 4 files changed, 52 insertions(+), 7 deletions(-) diff --git a/packages/codemirror/main/editorTheme.ts b/packages/codemirror/main/editorTheme.ts index 21cc6cf4..45279f3c 100644 --- a/packages/codemirror/main/editorTheme.ts +++ b/packages/codemirror/main/editorTheme.ts @@ -51,6 +51,10 @@ export const editorTheme = (appTheme: Theme, font: string): Extension => [ '.cm-scroller': { fontFamily: `"${font}"`, fontSize: `${appTheme.typography.fontSize}px`, + paddingTop: '16px', + paddingBottom: '16px', + paddingLeft: '8px', + paddingRight: '8px', }, '.cm-gutters': { width: '60px', diff --git a/packages/renderer/main/detail/DetailPane.tsx b/packages/renderer/main/detail/DetailPane.tsx index 04398389..7fcbcd81 100644 --- a/packages/renderer/main/detail/DetailPane.tsx +++ b/packages/renderer/main/detail/DetailPane.tsx @@ -140,7 +140,10 @@ export const DetailPane: React.FC = (props) => { display={'flex'} flexDirection={'column'} justifyContent={'end'} - padding={'16px'} + paddingTop={isSmallLayout ? undefined : '16px'} + paddingLeft={isSmallLayout ? '16px' : undefined} + paddingRight={'16px'} + paddingBottom={'16px'} height={'100%'} width={'100%'} gap={'8px'} diff --git a/packages/renderer/main/editor/Editor.tsx b/packages/renderer/main/editor/Editor.tsx index 9a357773..5be302c5 100644 --- a/packages/renderer/main/editor/Editor.tsx +++ b/packages/renderer/main/editor/Editor.tsx @@ -2,7 +2,7 @@ import { useCodeMirror, Text } from '@lyricistant/codemirror/CodeMirror'; import { TextSelectionData } from '@lyricistant/codemirror/textSelection'; import { Font } from '@lyricistant/common/preferences/PreferencesData'; import { useChannelData } from '@lyricistant/renderer/platform/useChannel'; -import { styled } from '@mui/material'; +import { Box, styled, useTheme } from '@mui/material'; import React, { useCallback, useEffect, useRef } from 'react'; import { toPlatformFile } from './to-platform-file'; @@ -15,11 +15,35 @@ const fontFamily = (font?: Font) => { } }; const EditorContainer = styled('div')({ - paddingTop: '8px', flex: '1 1 500px', minHeight: '50px', + position: 'relative', }); +interface EdgeFadeProps { + endColor: string; + towards: 'top' | 'bottom'; +} +const EdgeFade = ({ endColor, towards }: EdgeFadeProps) => { + const startColor = `#00${endColor.slice(1)}`; + const rotation = towards === 'bottom' ? '180deg' : '0deg'; + + return ( + + ); +}; + export interface EditorTextData { /** The text to be displayed in the editor. */ text: Text; @@ -69,6 +93,7 @@ export interface EditorProps { export const Editor: React.FC = (props) => { const editor = useRef(); const [themeData] = useChannelData('theme-updated'); + const theme = useTheme(); const onFileDropped = useCallback((item: DataTransferItem | File) => { logger.debug('Attempted to drop a file.'); toPlatformFile(item) @@ -120,7 +145,19 @@ export const Editor: React.FC = (props) => { }, [props.value]); useTextActionEvents(undo, redo, openFindReplaceDialog); - return ; + return ( + + + + + + + ); }; const useTextActionEvents = ( diff --git a/packages/renderer/main/menu/Menu.tsx b/packages/renderer/main/menu/Menu.tsx index 18046c71..5a5583ce 100644 --- a/packages/renderer/main/menu/Menu.tsx +++ b/packages/renderer/main/menu/Menu.tsx @@ -226,9 +226,10 @@ export const Menu: React.FC = (props) => { return (