feat(qbz-slint): header redesign, Lucide icons, scrollbar fixes
- Replace every Unicode glyph placeholder with Lucide icons via QbzIcon (player transport, carousel nav, album-card overlay, album-page actions, gear, search, checkbox, sidebar). - Header: the search field is centered to the window width and gets a search icon; the header and player bar now use the elevated surface, so all chrome (header, sidebar, player bar) shares one color over the darker content area. - The sidebar user card moves to the header as a user element (name + QBZ logo) that opens a dropdown — Settings, Keyboard Shortcuts, Documentation, Report an Issue, About, plus Log Out and Close. Log Out clears the session and returns to login; Close quits the app. - Content ScrollViews disable the horizontal scrollbar — no view scrolls horizontally, so the phantom reserved lane is gone. cc
This commit is contained in:
13 files changed
+389
-165
No files matched your search
@@ -11,13 +11,14 @@ import { Typography } from "../foundation/typography.slint";
|
||||
import { Radius } from "../foundation/radius.slint";
|
||||
import { Spacing } from "../foundation/spacing.slint";
|
||||
import { AlbumCardItem } from "../state.slint";
|
||||
import { QbzIcon } from "../primitives/QbzIcon.slint";
|
||||
|
||||
// Circular hover-overlay action button.
|
||||
component OverlayButton inherits Rectangle {
|
||||
in property <string> glyph;
|
||||
in property <image> icon;
|
||||
in property <bool> primary: false;
|
||||
in property <length> diameter: 36px;
|
||||
in property <length> glyph-size: 16px;
|
||||
in property <length> icon-size: 16px;
|
||||
|
||||
width: root.diameter;
|
||||
height: root.diameter;
|
||||
@@ -26,12 +27,13 @@ component OverlayButton inherits Rectangle {
|
||||
border-width: root.primary ? 0px : 1.5px;
|
||||
border-color: #ffffffe6;
|
||||
|
||||
Text {
|
||||
text: root.glyph;
|
||||
color: root.primary ? #000000 : #ffffff;
|
||||
font-size: root.glyph-size;
|
||||
horizontal-alignment: center;
|
||||
vertical-alignment: center;
|
||||
QbzIcon {
|
||||
source: root.icon;
|
||||
width: root.icon-size;
|
||||
height: root.icon-size;
|
||||
x: (parent.width - self.width) / 2;
|
||||
y: (parent.height - self.height) / 2;
|
||||
tint: root.primary ? #000000 : #ffffff;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,17 +111,17 @@ export component AlbumCard inherits Rectangle {
|
||||
|
||||
VerticalLayout {
|
||||
alignment: center;
|
||||
OverlayButton { glyph: "♡"; }
|
||||
OverlayButton { icon: @image-url("../assets/icons/heart.svg"); }
|
||||
}
|
||||
OverlayButton {
|
||||
glyph: "▶";
|
||||
icon: @image-url("../assets/icons/play.svg");
|
||||
primary: true;
|
||||
diameter: 44px;
|
||||
glyph-size: 17px;
|
||||
icon-size: 18px;
|
||||
}
|
||||
VerticalLayout {
|
||||
alignment: center;
|
||||
OverlayButton { glyph: "⋯"; glyph-size: 18px; }
|
||||
OverlayButton { icon: @image-url("../assets/icons/ellipsis.svg"); }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user