fix(ui): align island header separators via shared header height
This commit is contained in:
@@ -12,10 +12,12 @@
|
|||||||
<DockPanel>
|
<DockPanel>
|
||||||
|
|
||||||
<!-- ── Header (sticky top): id · title · trash/skull · gear — task detail only ── -->
|
<!-- ── Header (sticky top): id · title · trash/skull · gear — task detail only ── -->
|
||||||
<Border DockPanel.Dock="Top" Classes="island-header"
|
<Grid DockPanel.Dock="Top" IsVisible="{Binding IsTaskDetailVisible}">
|
||||||
IsVisible="{Binding IsTaskDetailVisible}">
|
<Grid.RowDefinitions><RowDefinition Height="Auto" SharedSizeGroup="IslandHeader"/></Grid.RowDefinitions>
|
||||||
<detail:TaskHeaderBar/>
|
<Border Classes="island-header">
|
||||||
</Border>
|
<detail:TaskHeaderBar/>
|
||||||
|
</Border>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
<!-- ── Body: task details (normal), notes editor (notes mode), or prep log (prep mode) ── -->
|
<!-- ── Body: task details (normal), notes editor (notes mode), or prep log (prep mode) ── -->
|
||||||
<Grid>
|
<Grid>
|
||||||
|
|||||||
@@ -183,27 +183,30 @@
|
|||||||
<DockPanel LastChildFill="True">
|
<DockPanel LastChildFill="True">
|
||||||
|
|
||||||
<!-- ── Header ── -->
|
<!-- ── Header ── -->
|
||||||
<Border DockPanel.Dock="Top" Classes="island-header">
|
<Grid DockPanel.Dock="Top">
|
||||||
<StackPanel Spacing="4">
|
<Grid.RowDefinitions><RowDefinition Height="Auto" SharedSizeGroup="IslandHeader"/></Grid.RowDefinitions>
|
||||||
<TextBlock Classes="heading" Text="{loc:Tr lists.heading}"/>
|
<Border Classes="island-header">
|
||||||
|
<StackPanel Spacing="4">
|
||||||
<!-- Search row -->
|
<TextBlock Classes="heading" Text="{loc:Tr lists.heading}"/>
|
||||||
<Border Classes="search-wrap" Margin="0,8,0,12">
|
|
||||||
<Grid ColumnDefinitions="Auto,*,Auto" VerticalAlignment="Center">
|
<!-- Search row -->
|
||||||
<PathIcon Grid.Column="0" Width="14" Height="14"
|
<Border Classes="search-wrap" Margin="0,8,0,12">
|
||||||
Data="{StaticResource Icon.Search}"
|
<Grid ColumnDefinitions="Auto,*,Auto" VerticalAlignment="Center">
|
||||||
Foreground="{DynamicResource TextFaintBrush}"
|
<PathIcon Grid.Column="0" Width="14" Height="14"
|
||||||
Margin="2,0,0,0"/>
|
Data="{StaticResource Icon.Search}"
|
||||||
<TextBox Grid.Column="1" x:Name="SearchBox" Classes="search-inner"
|
Foreground="{DynamicResource TextFaintBrush}"
|
||||||
PlaceholderText="{loc:Tr lists.searchPlaceholder}"
|
Margin="2,0,0,0"/>
|
||||||
Text="{Binding SearchText, Mode=TwoWay}"/>
|
<TextBox Grid.Column="1" x:Name="SearchBox" Classes="search-inner"
|
||||||
<Border Grid.Column="2" Classes="kbd" Margin="0,0,2,0">
|
PlaceholderText="{loc:Tr lists.searchPlaceholder}"
|
||||||
<TextBlock Text="{loc:Tr lists.searchKbd}"/>
|
Text="{Binding SearchText, Mode=TwoWay}"/>
|
||||||
</Border>
|
<Border Grid.Column="2" Classes="kbd" Margin="0,0,2,0">
|
||||||
</Grid>
|
<TextBlock Text="{loc:Tr lists.searchKbd}"/>
|
||||||
</Border>
|
</Border>
|
||||||
</StackPanel>
|
</Grid>
|
||||||
</Border>
|
</Border>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
<!-- ── No-repo banner — visible until any User list has a linked working dir; no
|
<!-- ── No-repo banner — visible until any User list has a linked working dir; no
|
||||||
dismiss, no persisted state, comes back if the last repo link is removed. ── -->
|
dismiss, no persisted state, comes back if the last repo link is removed. ── -->
|
||||||
|
|||||||
@@ -10,64 +10,67 @@
|
|||||||
<DockPanel LastChildFill="True">
|
<DockPanel LastChildFill="True">
|
||||||
|
|
||||||
<!-- Header -->
|
<!-- Header -->
|
||||||
<Border DockPanel.Dock="Top" Classes="island-header">
|
<Grid DockPanel.Dock="Top">
|
||||||
<Grid ColumnDefinitions="*,Auto">
|
<Grid.RowDefinitions><RowDefinition Height="Auto" SharedSizeGroup="IslandHeader"/></Grid.RowDefinitions>
|
||||||
<StackPanel Grid.Column="0" Spacing="4">
|
<Border Classes="island-header">
|
||||||
<TextBlock Classes="eyebrow" Text="{Binding HeaderEyebrow}"/>
|
<Grid ColumnDefinitions="*,Auto">
|
||||||
<TextBlock Classes="display"
|
<StackPanel Grid.Column="0" Spacing="4">
|
||||||
Text="{Binding HeaderTitle}"
|
<TextBlock Classes="eyebrow" Text="{Binding HeaderEyebrow}"/>
|
||||||
TextTrimming="CharacterEllipsis"/>
|
<TextBlock Classes="display"
|
||||||
<TextBlock Classes="meta"
|
Text="{Binding HeaderTitle}"
|
||||||
Foreground="{DynamicResource TextMuteBrush}"
|
TextTrimming="CharacterEllipsis"/>
|
||||||
Text="{Binding Subtitle}"
|
<TextBlock Classes="meta"
|
||||||
TextTrimming="CharacterEllipsis"/>
|
Foreground="{DynamicResource TextMuteBrush}"
|
||||||
<ctl:OperationIndicator Status="{Binding PlanningOperation}"/>
|
Text="{Binding Subtitle}"
|
||||||
</StackPanel>
|
TextTrimming="CharacterEllipsis"/>
|
||||||
|
<ctl:OperationIndicator Status="{Binding PlanningOperation}"/>
|
||||||
<StackPanel Grid.Column="1" Orientation="Horizontal" Spacing="4"
|
</StackPanel>
|
||||||
VerticalAlignment="Top">
|
|
||||||
<Border Classes="kbd" VerticalAlignment="Center" Margin="0,0,6,0"
|
<StackPanel Grid.Column="1" Orientation="Horizontal" Spacing="4"
|
||||||
IsVisible="{Binding HasStatusPill}">
|
VerticalAlignment="Top">
|
||||||
<TextBlock Text="{Binding StatusPill}"/>
|
<Border Classes="kbd" VerticalAlignment="Center" Margin="0,0,6,0"
|
||||||
</Border>
|
IsVisible="{Binding HasStatusPill}">
|
||||||
<Button Classes="icon-btn" Classes.active="{Binding IsShowingCompleted}"
|
<TextBlock Text="{Binding StatusPill}"/>
|
||||||
IsVisible="{Binding !IsNotesList}"
|
</Border>
|
||||||
Command="{Binding ToggleShowCompletedCommand}"
|
<Button Classes="icon-btn" Classes.active="{Binding IsShowingCompleted}"
|
||||||
ToolTip.Tip="{loc:Tr tasks.showCompletedTip}">
|
IsVisible="{Binding !IsNotesList}"
|
||||||
<PathIcon Width="15" Height="15" Data="{StaticResource Icon.Eye}"/>
|
Command="{Binding ToggleShowCompletedCommand}"
|
||||||
</Button>
|
ToolTip.Tip="{loc:Tr tasks.showCompletedTip}">
|
||||||
<Button Classes="icon-btn" IsVisible="{Binding IsLetClaudeVisible}"
|
<PathIcon Width="15" Height="15" Data="{StaticResource Icon.Eye}"/>
|
||||||
Command="{Binding LetClaudeHandleCommand}" ToolTip.Tip="{loc:Tr tasks.letClaudeTip}">
|
</Button>
|
||||||
<PathIcon Width="15" Height="15" Data="{StaticResource Icon.AgentSuggested}"/>
|
<Button Classes="icon-btn" IsVisible="{Binding IsLetClaudeVisible}"
|
||||||
</Button>
|
Command="{Binding LetClaudeHandleCommand}" ToolTip.Tip="{loc:Tr tasks.letClaudeTip}">
|
||||||
<Button Classes="icon-btn" IsVisible="{Binding IsMergeReviewsVisible}"
|
<PathIcon Width="15" Height="15" Data="{StaticResource Icon.AgentSuggested}"/>
|
||||||
Command="{Binding MergeReviewsCommand}" ToolTip.Tip="{loc:Tr tasks.mergeReviewsTip}">
|
</Button>
|
||||||
<!-- Icon.GitBranch is line-art: stroke-rendered, PathIcon would fill the lines away -->
|
<Button Classes="icon-btn" IsVisible="{Binding IsMergeReviewsVisible}"
|
||||||
<Viewbox Width="16" Height="16">
|
Command="{Binding MergeReviewsCommand}" ToolTip.Tip="{loc:Tr tasks.mergeReviewsTip}">
|
||||||
<Path Classes="icon-stroke" Data="{StaticResource Icon.GitBranch}"/>
|
<!-- Icon.GitBranch is line-art: stroke-rendered, PathIcon would fill the lines away -->
|
||||||
</Viewbox>
|
<Viewbox Width="16" Height="16">
|
||||||
</Button>
|
<Path Classes="icon-stroke" Data="{StaticResource Icon.GitBranch}"/>
|
||||||
<Button Classes="icon-btn" IsVisible="{Binding IsQuickClaudeVisible}"
|
</Viewbox>
|
||||||
Command="{Binding OpenQuickClaudeSessionCommand}" ToolTip.Tip="{loc:Tr tasks.quickClaudeTip}">
|
</Button>
|
||||||
<PathIcon Width="15" Height="15" Data="{StaticResource Icon.ArrowOut}"/>
|
<Button Classes="icon-btn" IsVisible="{Binding IsQuickClaudeVisible}"
|
||||||
</Button>
|
Command="{Binding OpenQuickClaudeSessionCommand}" ToolTip.Tip="{loc:Tr tasks.quickClaudeTip}">
|
||||||
<Button Classes="icon-btn" IsVisible="{Binding IsMyDayList}"
|
<PathIcon Width="15" Height="15" Data="{StaticResource Icon.ArrowOut}"/>
|
||||||
Command="{Binding ClearDayCommand}" ToolTip.Tip="{loc:Tr tasks.clearDayTip}">
|
</Button>
|
||||||
<PathIcon Width="15" Height="15" Data="{StaticResource Icon.Broom}"/>
|
<Button Classes="icon-btn" IsVisible="{Binding IsMyDayList}"
|
||||||
</Button>
|
Command="{Binding ClearDayCommand}" ToolTip.Tip="{loc:Tr tasks.clearDayTip}">
|
||||||
<Button Classes="icon-btn" IsVisible="{Binding IsMyDayList}"
|
<PathIcon Width="15" Height="15" Data="{StaticResource Icon.Broom}"/>
|
||||||
Command="{Binding ShowPrepLogCommand}" ToolTip.Tip="{loc:Tr tasks.planMyDayTip}">
|
</Button>
|
||||||
<Viewbox Width="18" Height="18">
|
<Button Classes="icon-btn" IsVisible="{Binding IsMyDayList}"
|
||||||
<Path Classes="icon-stroke" Data="{StaticResource Icon.PlanDay}"/>
|
Command="{Binding ShowPrepLogCommand}" ToolTip.Tip="{loc:Tr tasks.planMyDayTip}">
|
||||||
</Viewbox>
|
<Viewbox Width="18" Height="18">
|
||||||
</Button>
|
<Path Classes="icon-stroke" Data="{StaticResource Icon.PlanDay}"/>
|
||||||
<Button Classes="icon-btn" IsVisible="{Binding !IsNotesList}"
|
</Viewbox>
|
||||||
Command="{Binding OpenListSettingsCommand}" ToolTip.Tip="{loc:Tr tasks.listSettingsTip}">
|
</Button>
|
||||||
<PathIcon Width="15" Height="15" Data="{StaticResource Icon.Settings}"/>
|
<Button Classes="icon-btn" IsVisible="{Binding !IsNotesList}"
|
||||||
</Button>
|
Command="{Binding OpenListSettingsCommand}" ToolTip.Tip="{loc:Tr tasks.listSettingsTip}">
|
||||||
</StackPanel>
|
<PathIcon Width="15" Height="15" Data="{StaticResource Icon.Settings}"/>
|
||||||
</Grid>
|
</Button>
|
||||||
</Border>
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
<!-- Add-task row -->
|
<!-- Add-task row -->
|
||||||
<Border DockPanel.Dock="Top" Classes="add-task" Margin="16,14,16,8"
|
<Border DockPanel.Dock="Top" Classes="add-task" Margin="16,14,16,8"
|
||||||
|
|||||||
@@ -142,7 +142,8 @@
|
|||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<!-- Three islands (user-resizable) -->
|
<!-- Three islands (user-resizable) -->
|
||||||
<Grid Grid.Row="1" Margin="7">
|
<!-- Shared-size scope: the island headers share one height so their separators line up -->
|
||||||
|
<Grid Grid.Row="1" Margin="7" Grid.IsSharedSizeScope="True">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="260" MinWidth="200"/>
|
<ColumnDefinition Width="260" MinWidth="200"/>
|
||||||
<ColumnDefinition Width="Auto"/>
|
<ColumnDefinition Width="Auto"/>
|
||||||
|
|||||||
Reference in New Issue
Block a user