Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/Conclave.App/ViewModels/SessionVm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ public SessionStatus Status
{
Notify(nameof(StatusLabel));
Notify(nameof(StatusPulses));
Notify(nameof(StatusColor));
Notify(nameof(IsBusy));
Notify(nameof(CanSend));
}
Expand Down
22 changes: 16 additions & 6 deletions src/Conclave.App/Views/Shell/MainPane.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,16 @@
xmlns:shell="clr-namespace:Conclave.App.Views.Shell"
x:Class="Conclave.App.Views.Shell.MainPane"
x:DataType="vm:ShellVm">
<UserControl.Styles>
<!-- Subtle hover on the inactive Terminal/Plan/Logs segmented tabs.
Active tabs already carry a panel background, so they're skipped. -->
<Style Selector="Border.seg-tab">
<Setter Property="Background" Value="Transparent" />
</Style>
<Style Selector="Border.seg-tab:pointerover">
<Setter Property="Background" Value="{Binding Tokens.PanelHi}" />
</Style>
</UserControl.Styles>
<Grid Background="{Binding Tokens.Bg}" RowDefinitions="Auto,*,Auto">

<!-- Header -->
Expand Down Expand Up @@ -53,8 +63,8 @@
<TextBlock Text="Terminal" FontSize="12" FontWeight="Medium"
Foreground="{Binding Tokens.Text}" />
</Border>
<Border Padding="11,4" CornerRadius="{Binding Tokens.RadSmCorner}"
Background="Transparent"
<Border Classes="seg-tab" Cursor="Hand"
Padding="11,4" CornerRadius="{Binding Tokens.RadSmCorner}"
BorderThickness="1" BorderBrush="Transparent"
PointerPressed="OnSegTerminal"
IsVisible="{Binding !IsTerminalView}">
Expand All @@ -70,8 +80,8 @@
<TextBlock Text="Plan" FontSize="12" FontWeight="Medium"
Foreground="{Binding Tokens.Text}" />
</Border>
<Border Padding="11,4" CornerRadius="{Binding Tokens.RadSmCorner}"
Background="Transparent"
<Border Classes="seg-tab" Cursor="Hand"
Padding="11,4" CornerRadius="{Binding Tokens.RadSmCorner}"
BorderThickness="1" BorderBrush="Transparent"
PointerPressed="OnSegPlan"
IsVisible="{Binding !IsPlanView}">
Expand All @@ -87,8 +97,8 @@
<TextBlock Text="Logs" FontSize="12" FontWeight="Medium"
Foreground="{Binding Tokens.Text}" />
</Border>
<Border Padding="11,4" CornerRadius="{Binding Tokens.RadSmCorner}"
Background="Transparent"
<Border Classes="seg-tab" Cursor="Hand"
Padding="11,4" CornerRadius="{Binding Tokens.RadSmCorner}"
BorderThickness="1" BorderBrush="Transparent"
PointerPressed="OnSegLogs"
IsVisible="{Binding !IsLogsView}">
Expand Down
78 changes: 65 additions & 13 deletions src/Conclave.App/Views/Shell/Sidebar.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,50 @@
xmlns:vm="clr-namespace:Conclave.App.ViewModels"
x:Class="Conclave.App.Views.Shell.Sidebar"
x:DataType="vm:ShellVm">
<UserControl.Styles>
<!-- Sidebar row hover/selected backgrounds. Bound to the row's DataContext
(FilterVm / SessionVm / ProjectVm), all of which expose Tokens. Setters
override the local Background, so the row Borders no longer bind it. -->
<Style Selector="Border.filter-row">
<Setter Property="Background" Value="Transparent" />
</Style>
<Style Selector="Border.filter-row:pointerover">
<Setter Property="Background" Value="{Binding Tokens.Panel2}" />
</Style>
<Style Selector="Border.filter-row.selected">
<Setter Property="Background" Value="{Binding Tokens.Panel}" />
</Style>
<Style Selector="Border.filter-row.selected:pointerover">
<Setter Property="Background" Value="{Binding Tokens.Panel}" />
</Style>

<Style Selector="Border.session-row">
<Setter Property="Background" Value="Transparent" />
</Style>
<Style Selector="Border.session-row:pointerover">
<Setter Property="Background" Value="{Binding Tokens.Panel2}" />
</Style>
<Style Selector="Border.session-row.active">
<Setter Property="Background" Value="{Binding Tokens.Panel}" />
</Style>
<Style Selector="Border.session-row.active:pointerover">
<Setter Property="Background" Value="{Binding Tokens.Panel}" />
</Style>

<Style Selector="Border.project-header">
<Setter Property="Background" Value="Transparent" />
</Style>
<Style Selector="Border.project-header:pointerover">
<Setter Property="Background" Value="{Binding Tokens.Panel2}" />
</Style>

<Style Selector="Border.icon-btn">
<Setter Property="Background" Value="Transparent" />
</Style>
<Style Selector="Border.icon-btn:pointerover">
<Setter Property="Background" Value="{Binding Tokens.PanelHi}" />
</Style>
</UserControl.Styles>
<Grid Background="{Binding Tokens.Bg}" RowDefinitions="Auto,*">
<!-- Search pill (real input). The TextBox is borderless and lays inside the styled
pill Border. ⌘P glyph hides while there's a query so the field doesn't compete. -->
Expand Down Expand Up @@ -36,8 +80,9 @@
<ItemsControl ItemsSource="{Binding Filters}">
<ItemsControl.ItemTemplate>
<DataTemplate x:DataType="vm:FilterVm">
<Border Padding="10,6" CornerRadius="{Binding Tokens.RadSmCorner}"
Background="{Binding BackgroundBrush}"
<Border Classes="filter-row" Classes.selected="{Binding IsSelected}"
Padding="10,6" CornerRadius="{Binding Tokens.RadSmCorner}"
Cursor="Hand"
PointerPressed="OnFilterPressed">
<Grid ColumnDefinitions="14,*,Auto">
<Panel Grid.Column="0" Width="8" Height="8"
Expand Down Expand Up @@ -70,18 +115,21 @@
<ItemsControl.ItemTemplate>
<DataTemplate x:DataType="vm:ProjectVm">
<StackPanel Margin="0,6,0,0" IsVisible="{Binding IsVisibleInTree}">
<Grid ColumnDefinitions="Auto,*,Auto,Auto" Margin="10,6"
Background="Transparent" Cursor="Hand"
PointerPressed="OnProjectHeaderPressed">
<Grid.ContextMenu>
<Border Classes="project-header"
Padding="4,2" CornerRadius="{Binding Tokens.RadSmCorner}"
Cursor="Hand"
PointerPressed="OnProjectHeaderPressed">
<Border.ContextMenu>
<ContextMenu>
<MenuItem Header="Rename" Click="OnRenameProjectMenu" />
<MenuItem Header="Delete" Click="OnDeleteProjectMenu" />
</ContextMenu>
</Grid.ContextMenu>
<TextBlock Text="{Binding ChevronGlyph}" FontSize="9"
</Border.ContextMenu>
<Grid ColumnDefinitions="Auto,*,Auto,Auto">
<TextBlock Text="{Binding ChevronGlyph}" FontSize="13"
Foreground="{Binding Tokens.TextDim}"
VerticalAlignment="Center" Margin="0,0,8,0" />
VerticalAlignment="Center"
Margin="2,4,8,4" Width="14" TextAlignment="Center" />
<TextBlock Grid.Column="1" Text="{Binding Name}"
FontSize="12" FontWeight="SemiBold"
Foreground="{Binding Tokens.Text}" VerticalAlignment="Center"
Expand All @@ -97,21 +145,25 @@
FontSize="10.5" Foreground="{Binding Tokens.TextMute}"
VerticalAlignment="Center"
FontFamily="ui-monospace,SFMono-Regular,Menlo,monospace" />
<Border Grid.Column="3" Margin="6,0,0,0" Padding="2,0"
<Border Grid.Column="3" Classes="icon-btn"
Margin="6,0,0,0" Padding="6,2"
CornerRadius="{Binding Tokens.RadXsCorner}"
Cursor="Hand" ToolTip.Tip="New session in project"
PointerPressed="OnNewSessionForProject">
<TextBlock Text="+" FontSize="13"
Foreground="{Binding Tokens.TextDim}"
VerticalAlignment="Center" />
</Border>
</Grid>
</Grid>
</Border>
<ItemsControl ItemsSource="{Binding Sessions}"
IsVisible="{Binding IsExpanded}">
<ItemsControl.ItemTemplate>
<DataTemplate x:DataType="vm:SessionVm">
<Border Margin="0,1" Padding="10,7,10,7"
<Border Classes="session-row" Classes.active="{Binding IsActive}"
Margin="0,1" Padding="10,7,10,7"
CornerRadius="{Binding Tokens.RadSmCorner}"
Background="{Binding BackgroundBrush}"
Cursor="Hand"
IsVisible="{Binding IsVisibleInTree}"
PointerPressed="OnSessionPressed">
<Border.ContextMenu>
Expand Down
22 changes: 20 additions & 2 deletions src/Conclave.App/Views/Shell/TitleBar.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,22 @@
x:Class="Conclave.App.Views.Shell.TitleBar"
x:DataType="vm:ShellVm"
Height="38">
<UserControl.Styles>
<!-- Subtle hover for the gear (transparent → panel) and primary action
(slight dim via opacity, since the bg is already the brand color). -->
<Style Selector="Border.icon-btn">
<Setter Property="Background" Value="Transparent" />
</Style>
<Style Selector="Border.icon-btn:pointerover">
<Setter Property="Background" Value="{Binding Tokens.Panel}" />
</Style>
<Style Selector="Border.primary-btn">
<Setter Property="Opacity" Value="1" />
</Style>
<Style Selector="Border.primary-btn:pointerover">
<Setter Property="Opacity" Value="0.85" />
</Style>
</UserControl.Styles>
<Border x:Name="DragHandle"
BorderBrush="{Binding Tokens.Border}" BorderThickness="0,0,0,1"
Background="{Binding Tokens.Bg}"
Expand Down Expand Up @@ -57,7 +73,8 @@
</Border>

<!-- Preferences (gear) -->
<Border Grid.Column="8" Width="26" Height="22"
<Border Grid.Column="8" Classes="icon-btn"
Width="26" Height="22"
CornerRadius="{Binding Tokens.RadSmCorner}"
BorderBrush="{Binding Tokens.Border}" BorderThickness="1"
VerticalAlignment="Center" Margin="0,0,8,0"
Expand All @@ -69,7 +86,8 @@
</Border>

<!-- New session (primary) -->
<Border Grid.Column="9" Padding="9,3" CornerRadius="{Binding Tokens.RadSmCorner}"
<Border Grid.Column="9" Classes="primary-btn"
Padding="9,3" CornerRadius="{Binding Tokens.RadSmCorner}"
Background="{Binding Tokens.Text}" VerticalAlignment="Center" Margin="0,0,10,0"
PointerPressed="OnNewSession" Cursor="Hand">
<TextBlock Text="New session" FontSize="11.5" FontWeight="Medium"
Expand Down
Loading