From 27a76e92b89cb3ec948a8d1c91037b3ddb0e5b7a Mon Sep 17 00:00:00 2001 From: null Date: Sat, 11 Jul 2026 14:22:41 -0500 Subject: [PATCH] feat(mobile): Seamless brand reskin + two-doors setup on a design-token system MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bring the native shell up to the web app's brand so the setup->app handoff is seamless, and make it token-driven instead of hard-coded hex. - src/theme.css: design tokens as the single source of truth — a primitive brand ramp (the greens from the web app's mark.svg) mapped to semantic roles (--color-*, --radius-*, --space-*). Change the brand in one place; every screen follows. index.css now references only tokens (no raw hex). - src/LogoMark.tsx: shared brand mark component (the real bar-chart+checkmark), replacing the indigo crosshair and de-duplicating inline SVG. - SetupScreen rebuilt as a two-doors chooser for ease of use: 'Run on this phone' (private/offline, one tap) and 'Connect to a server' (reveals the URL field only when chosen), keeping the insecure-http warning. - De-hardcoded the rest: App splash + biometric/loading/lock screens now use classes and the accent token instead of inline styles and #6366f1. Verified on the x86_64 emulator: new setup renders in-brand, 'Connect to a server' reveals the field, 'Run on this phone' boots the local server and loads the app. Co-Authored-By: Claude Opus 4.8 --- src/App.tsx | 2 +- src/BiometricLock.tsx | 2 +- src/BiometricSetup.tsx | 8 +- src/LoadingScreen.tsx | 2 +- src/LogoMark.tsx | 36 ++++++ src/SetupScreen.tsx | 154 ++++++++++++++--------- src/index.css | 279 ++++++++++++++++++++++++++++------------- src/theme.css | 73 +++++++++++ 8 files changed, 404 insertions(+), 152 deletions(-) create mode 100644 src/LogoMark.tsx create mode 100644 src/theme.css diff --git a/src/App.tsx b/src/App.tsx index 052b459..7db9ea4 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -103,7 +103,7 @@ export default function App() { // 'checking' / 'redirecting' — brief blank while we check preferences // or hand off to the WebView. return ( -
+
); diff --git a/src/BiometricLock.tsx b/src/BiometricLock.tsx index 06de442..bc480c1 100644 --- a/src/BiometricLock.tsx +++ b/src/BiometricLock.tsx @@ -46,7 +46,7 @@ export default function BiometricLock({ onUnlocked, onFallback }: Props) { return (
-
+
{checking ? (
) : ( diff --git a/src/BiometricSetup.tsx b/src/BiometricSetup.tsx index 306ff14..dcf2800 100644 --- a/src/BiometricSetup.tsx +++ b/src/BiometricSetup.tsx @@ -35,13 +35,13 @@ export default function BiometricSetup({ onDone }: Props) { return (
-
-