style(ui): custom title bar with brand and window controls

Replace character-glyph window buttons with PathIcon controls using
Lucide-style StreamGeometry. Add left brand block (check glyph +
CLAUDEDO + separator dot + selected list name) and draggable middle
strip. Close button hover turns BloodBrush.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
mika kuns
2026-04-20 11:16:39 +02:00
parent 27c6a4b859
commit 480d05975d
2 changed files with 88 additions and 9 deletions

View File

@@ -17,16 +17,61 @@
</Window.KeyBindings>
<Grid RowDefinitions="36,*">
<!-- Custom title bar -->
<Border Grid.Row="0" Background="{DynamicResource DeepBrush}" PointerPressed="OnTitleBarPressed">
<Grid ColumnDefinitions="*,Auto">
<TextBlock Grid.Column="0" Margin="14,0" VerticalAlignment="Center"
FontFamily="{DynamicResource SansFamily}" FontSize="12"
Foreground="{DynamicResource TextDimBrush}" Text="ClaudeDo"/>
<StackPanel Grid.Column="1" Orientation="Horizontal" Spacing="0">
<Button Classes="title-btn" Click="OnMinimize" Content="—"/>
<Button Classes="title-btn" Click="OnToggleMax" Content="▢"/>
<Button Classes="title-btn close" Click="OnClose" Content="✕"/>
<Border Grid.Row="0"
Background="{DynamicResource DeepBrush}"
BorderBrush="{DynamicResource LineBrush}"
BorderThickness="0,0,0,1">
<Grid ColumnDefinitions="Auto,*,Auto">
<!-- Left: brand block -->
<StackPanel Grid.Column="0" Orientation="Horizontal" Spacing="8"
VerticalAlignment="Center" Margin="14,0,0,0">
<!-- Green checkbox glyph -->
<PathIcon Classes="title-brand-icon"
Data="{StaticResource Icon.BrandCheck}"
Width="14" Height="14"
Foreground="{DynamicResource MossBrush}" />
<!-- CLAUDEDO label -->
<TextBlock Classes="title-brand-name"
Text="CLAUDEDO"
FontFamily="{DynamicResource MonoFont}"
FontSize="11"
Foreground="{DynamicResource TextBrush}"
LetterSpacing="1.4"
VerticalAlignment="Center"/>
<!-- separator dot -->
<TextBlock Text="·"
FontFamily="{DynamicResource MonoFont}"
FontSize="11"
Foreground="{DynamicResource TextFaintBrush}"
VerticalAlignment="Center"/>
<!-- current list name -->
<TextBlock Text="{Binding Lists.SelectedList.Name}"
FontFamily="{DynamicResource MonoFont}"
FontSize="11"
Foreground="{DynamicResource TextDimBrush}"
LetterSpacing="1.4"
VerticalAlignment="Center"/>
</StackPanel>
<!-- Middle: draggable strip -->
<Border Grid.Column="1" Background="Transparent"
PointerPressed="OnTitleBarPressed" />
<!-- Right: window controls -->
<StackPanel Grid.Column="2" Orientation="Horizontal" Spacing="0"
VerticalAlignment="Center" Margin="0,0,4,0">
<Button Classes="title-ctrl" Click="OnMinimize">
<PathIcon Data="{StaticResource Icon.WinMin}" Width="10" Height="10"/>
</Button>
<Button Classes="title-ctrl" Click="OnToggleMax">
<PathIcon Data="{StaticResource Icon.WinMax}" Width="10" Height="10"/>
</Button>
<Button Classes="title-ctrl close" Click="OnClose">
<PathIcon Data="{StaticResource Icon.WinClose}" Width="10" Height="10"/>
</Button>
</StackPanel>
</Grid>
</Border>