diff --git a/package.json b/package.json
index 9a07fb164..c140a4385 100644
--- a/package.json
+++ b/package.json
@@ -40,6 +40,7 @@
},
"dependencies": {
"@electron/remote": "^2.0.10",
+ "@radix-ui/react-aspect-ratio": "^1.0.3",
"@radix-ui/react-popover": "^1.0.6",
"@radix-ui/react-slider": "^1.1.2",
"@tanstack/react-virtual": "3.0.0-beta.54",
diff --git a/src/renderer/components/Cover/Cover.module.css b/src/renderer/components/Cover/Cover.module.css
index 655e4d553..c9bdbd3ee 100644
--- a/src/renderer/components/Cover/Cover.module.css
+++ b/src/renderer/components/Cover/Cover.module.css
@@ -1,21 +1,22 @@
.cover {
- width: 48px;
- height: 48px;
- margin-right: 10px;
- background-position: center;
- background-size: cover;
+ object-fit: cover;
+ width: 100%;
+ height: 100%;
text-align: center;
- border-style: solid;
- border-color: var(--border-color);
- border-width: 0 1px;
display: flex;
align-items: center;
justify-content: center;
box-sizing: content-box;
}
+.empty {
+ border: solid 1px var(--border-color);
+ border-width: 0 1px;
+ box-sizing: border-box;
+}
+
.cover__note {
font-family: monospace; /* the sexy one */
- font-size: 30px;
+ font-size: 28px;
line-height: 28px;
}
diff --git a/src/renderer/components/Cover/Cover.tsx b/src/renderer/components/Cover/Cover.tsx
index 42b28a2dd..ce2d1f324 100644
--- a/src/renderer/components/Cover/Cover.tsx
+++ b/src/renderer/components/Cover/Cover.tsx
@@ -1,4 +1,5 @@
import { useEffect, useState } from 'react';
+import * as AspectRatio from '@radix-ui/react-aspect-ratio';
import { Track } from '../../../shared/types/museeks';
@@ -26,14 +27,24 @@ export default function Cover(props: Props) {
const encodedCoverPath = encodeURI(coverPath)
.replace(/'/g, "\\'")
.replace(/"/g, '\\"');
- const inlineStyles = { backgroundImage: `url('${encodedCoverPath}')` };
- return
;
+ return (
+
+
+
+ );
}
return (
-
+
+
+ {/** billion dollar problem: convert emoji to text, good luck 🎵 */}
+
♪
+
+
);
}
diff --git a/src/renderer/components/DropzoneImport/DropzoneImport.module.css b/src/renderer/components/DropzoneImport/DropzoneImport.module.css
index 9f0f498dc..d703011d9 100644
--- a/src/renderer/components/DropzoneImport/DropzoneImport.module.css
+++ b/src/renderer/components/DropzoneImport/DropzoneImport.module.css
@@ -2,7 +2,7 @@
position: fixed;
inset: 0;
pointer-events: none;
- background: var(--faded);
+ background: var(--faded-bg);
z-index: 1000;
display: flex;
flex-direction: column;
diff --git a/src/renderer/components/Header/Header.module.css b/src/renderer/components/Header/Header.module.css
index 3e9073b36..c9379cec4 100644
--- a/src/renderer/components/Header/Header.module.css
+++ b/src/renderer/components/Header/Header.module.css
@@ -17,7 +17,7 @@
color: var(--header-color);
padding: 0 10px;
display: flex;
- align-items: center;
+ align-items: stretch;
justify-content: space-between;
height: 50px;
flex: 0 0 auto;
@@ -27,7 +27,6 @@
}
.header__mainControls {
- width: 220px;
flex: 0 0 auto;
display: flex;
align-items: center;
@@ -36,7 +35,7 @@
.header__search {
-webkit-app-region: no-drag;
- width: 220px;
+ margin-left: 12px;
flex: 0 0 auto;
display: flex;
justify-content: flex-end;
diff --git a/src/renderer/components/PlayerControls/PlayerControls.module.css b/src/renderer/components/PlayerControls/PlayerControls.module.css
index dd0deae21..f7c76039a 100644
--- a/src/renderer/components/PlayerControls/PlayerControls.module.css
+++ b/src/renderer/components/PlayerControls/PlayerControls.module.css
@@ -30,3 +30,8 @@
}
}
}
+
+.playerOptions {
+ display: flex;
+ flex-direction: column;
+}
diff --git a/src/renderer/components/PlayerOptionsButtons/common.module.css b/src/renderer/components/PlayerOptionsButtons/common.module.css
index df9fae02c..95a3a5949 100644
--- a/src/renderer/components/PlayerOptionsButtons/common.module.css
+++ b/src/renderer/components/PlayerOptionsButtons/common.module.css
@@ -2,8 +2,8 @@
display: flex;
align-items: center;
justify-content: center;
- height: 16px;
- width: 16px;
+ height: 20px;
+ width: 20px;
}
.button {
@@ -11,7 +11,7 @@
border: 0;
color: inherit;
background: transparent;
- font-size: 18px;
+ font-size: 20px;
&.active {
.icon > svg {
@@ -21,7 +21,7 @@
.icon > svg {
fill: currentcolor;
- width: 16px;
+ width: 18px;
height: auto;
}
}
diff --git a/src/renderer/components/PlayingBar/PlayingBar.module.css b/src/renderer/components/PlayingBar/PlayingBar.module.css
index efdebb0e6..2bbf77b45 100644
--- a/src/renderer/components/PlayingBar/PlayingBar.module.css
+++ b/src/renderer/components/PlayingBar/PlayingBar.module.css
@@ -1,23 +1,19 @@
.playingBar {
display: flex;
align-items: center;
- justify-content: space-between;
text-align: center;
+ height: 100%;
}
.playingBar__cover {
- width: 60px;
- flex: 0 0 auto;
-}
-
-.playingBar__queue {
- -webkit-app-region: no-drag;
- width: 60px;
- flex: 0 0 auto;
- position: relative;
+ flex-shrink: 0;
+ width: 49px;
+ overflow: hidden;
}
.queueToggle {
+ line-height: 22px;
+ margin-left: 12px;
color: inherit;
border: 0;
background: transparent;
@@ -37,3 +33,10 @@
display: block;
}
}
+
+.playerOptions {
+ -webkit-app-region: no-drag;
+ flex-shrink: 0;
+ display: flex;
+ align-items: center;
+}
diff --git a/src/renderer/components/PlayingBar/PlayingBar.tsx b/src/renderer/components/PlayingBar/PlayingBar.tsx
index e688e8962..ba6f5ce26 100644
--- a/src/renderer/components/PlayingBar/PlayingBar.tsx
+++ b/src/renderer/components/PlayingBar/PlayingBar.tsx
@@ -5,6 +5,8 @@ import Queue from '../Queue/Queue';
import PlayingBarInfos from '../PlayingBarInfo/PlayingBarInfo';
import Cover from '../Cover/Cover';
import usePlayerStore from '../../stores/usePlayerStore';
+import ButtonRepeat from '../PlayerOptionsButtons/ButtonRepeat';
+import ButtonShuffle from '../PlayerOptionsButtons/ButtonShuffle';
import styles from './PlayingBar.module.css';
@@ -28,7 +30,9 @@ export default function PlayingBar() {
shuffle={shuffle}
repeat={repeat}
/>
-
+
+
+