feat(08-01): implement ThemeToggle component and wire into App.tsx
- Add ThemeToggle segmented control (Light/Dark/System) with DOM class toggle - Use getStored() lazy init and applyTheme() for side-effect-free render - Stub localStorage and matchMedia in tests for Node v25 compatibility - Wire ThemeToggle into App.tsx header flex row next to h1 - Change App outer div to bg-surface, h1 to text-on-surface - All 7 ThemeToggle unit tests passing; 166 total tests green
This commit is contained in:
+6
-2
@@ -4,6 +4,7 @@
|
||||
|
||||
import { useWizard } from './store/context';
|
||||
import { WizardProvider } from './store/context';
|
||||
import { ThemeToggle } from './components/ui/ThemeToggle';
|
||||
import { StepIndicator } from './components/wizard/StepIndicator';
|
||||
import { BackendSelectionStep } from './components/wizard/BackendSelectionStep';
|
||||
import { RemoteConfigStep } from './components/wizard/RemoteConfigStep';
|
||||
@@ -26,9 +27,12 @@ function WizardShell() {
|
||||
const CurrentStep = steps[stepIndex];
|
||||
|
||||
return (
|
||||
<div className="min-h-screen bg-gray-50 flex flex-col items-center py-12 px-4">
|
||||
<div className="min-h-screen bg-surface flex flex-col items-center py-12 px-4">
|
||||
<div className="w-full max-w-2xl">
|
||||
<h1 className="text-3xl font-bold text-gray-900 mb-8 text-center">Ready2Blob</h1>
|
||||
<div className="flex items-center justify-between mb-8">
|
||||
<h1 className="text-3xl font-bold text-on-surface">Ready2Blob</h1>
|
||||
<ThemeToggle />
|
||||
</div>
|
||||
<StepIndicator />
|
||||
<div className="mt-8">
|
||||
{CurrentStep}
|
||||
|
||||
Reference in New Issue
Block a user