diff --git a/lib/builtin/welcome/src/welcome_view.dart b/lib/builtin/welcome/src/welcome_view.dart index a417946a..7706311e 100644 --- a/lib/builtin/welcome/src/welcome_view.dart +++ b/lib/builtin/welcome/src/welcome_view.dart @@ -278,6 +278,7 @@ class _StatusLine extends StatelessWidget { builder: (ctx, _) { final tc = kernel.toolCheck; return Row( + mainAxisAlignment: MainAxisAlignment.end, children: [ ClideText('clide 2.0.0-dev', muted: true, fontSize: 12, fontFamily: clideMonoFamily), ClideText(' · ', muted: true, fontSize: 12), @@ -288,8 +289,7 @@ class _StatusLine extends StatelessWidget { else ClideText(tc.errors.join(' · '), fontSize: 12, fontFamily: clideMonoFamily, color: tokens.statusWarning), ClideText(' · ', muted: true, fontSize: 12), - ClideText('theme: ', muted: true, fontSize: 12, fontFamily: clideMonoFamily), - ClideText(themeName, fontSize: 12, fontFamily: clideMonoFamily, color: tokens.globalFocus), + _ThemeLink(tokens: tokens, kernel: kernel, themeName: themeName), ], ); }, @@ -297,6 +297,39 @@ class _StatusLine extends StatelessWidget { } } +class _ThemeLink extends StatefulWidget { + const _ThemeLink({required this.tokens, required this.kernel, required this.themeName}); + final SurfaceTokens tokens; + final KernelServices kernel; + final String themeName; + + @override + State<_ThemeLink> createState() => _ThemeLinkState(); +} + +class _ThemeLinkState extends State<_ThemeLink> { + bool _hover = false; + + @override + Widget build(BuildContext context) { + return MouseRegion( + cursor: SystemMouseCursors.click, + onEnter: (_) => setState(() => _hover = true), + onExit: (_) => setState(() => _hover = false), + child: GestureDetector( + onTap: () => widget.kernel.commands.execute('theme.pick'), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + ClideText('theme: ', muted: true, fontSize: 12, fontFamily: clideMonoFamily), + ClideText(widget.themeName, fontSize: 12, fontFamily: clideMonoFamily, color: _hover ? widget.tokens.globalForeground : widget.tokens.globalFocus), + ], + ), + ), + ); + } +} + class _OpenProjectDialog extends StatefulWidget { const _OpenProjectDialog({required this.onOpen, required this.onCancel}); final Future Function(String path) onOpen;