feat(qbz-slint): foundation tokens and login screen
M1 progress. Adds the foundation token layer (palette, semantic colors, spacing, radius, typography) bound to the QBZ dark theme, three primitives (QbzCheckbox, QbzPrimaryButton, QbzTextLink), and the LoginScreen feature component. The login screen mirrors the Svelte LoginView: centered card, logo, QBZ wordmark, Qobuz ToS checkbox, "Sign in via Browser" button, system-browser and offline links, and the legal disclaimer. Colors are lifted verbatim from src/app.css; strings use @tr() markers. Rust side: typed AppCommand enum; UI callbacks dispatch through it. M2 wires the command handler to AppRuntime. cc
This commit is contained in:
15 files changed
+452
-10
No files matched your search
@@ -1,8 +1,11 @@
|
||||
// QBZ Slint POC — UI entry point.
|
||||
//
|
||||
// This file stays thin: it imports the foundation, shell, and feature
|
||||
// modules and exports the single top-level window. No raw visual constants
|
||||
// or domain logic live here (see the POC ADR, sections 13 and 21).
|
||||
// Stays thin: imports the feature screens and exports the single
|
||||
// top-level window. No raw visual constants or domain logic here
|
||||
// (POC ADR, sections 13 and 21).
|
||||
|
||||
import { Theme } from "foundation/semantic-colors.slint";
|
||||
import { LoginScreen } from "login/LoginScreen.slint";
|
||||
|
||||
export component AppWindow inherits Window {
|
||||
title: "QBZ";
|
||||
@@ -10,13 +13,26 @@ export component AppWindow inherits Window {
|
||||
preferred-height: 760px;
|
||||
min-width: 940px;
|
||||
min-height: 600px;
|
||||
background: Theme.surface-main;
|
||||
|
||||
// Placeholder content. Replaced by the AppShell in the next M1 step
|
||||
// (foundation tokens + sidebar / header / content / player bar).
|
||||
Text {
|
||||
text: "QBZ — Slint POC";
|
||||
font-size: 22px;
|
||||
horizontal-alignment: center;
|
||||
vertical-alignment: center;
|
||||
// Forwarded to the Rust layer, which maps them to typed AppCommands.
|
||||
callback sign-in-via-browser();
|
||||
callback use-system-browser();
|
||||
callback start-offline();
|
||||
callback open-tos();
|
||||
|
||||
LoginScreen {
|
||||
sign-in-via-browser => {
|
||||
root.sign-in-via-browser();
|
||||
}
|
||||
use-system-browser => {
|
||||
root.use-system-browser();
|
||||
}
|
||||
start-offline => {
|
||||
root.start-offline();
|
||||
}
|
||||
open-tos => {
|
||||
root.open-tos();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user