style(ui): Material Design icons for shared controls and modals
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5.5
parent
aef41f0594
commit
476a94960e
@@ -106,12 +106,16 @@
|
||||
<!-- Toolbar: change nav · file switcher · readout -->
|
||||
<Grid Grid.Row="2" ColumnDefinitions="Auto,Auto,Auto,*,Auto,Auto" Margin="0,0,0,8"
|
||||
IsVisible="{Binding HasCurrent}">
|
||||
<Button Grid.Column="0" Classes="btn" Content="↑" Margin="0,0,4,0" Padding="10,4"
|
||||
<Button Grid.Column="0" Classes="btn" Margin="0,0,4,0" Padding="10,4"
|
||||
ToolTip.Tip="{loc:Tr conflictResolver.prevConflict}"
|
||||
Command="{Binding PreviousCommand}"/>
|
||||
<Button Grid.Column="1" Classes="btn" Content="↓" Margin="0,0,12,0" Padding="10,4"
|
||||
Command="{Binding PreviousCommand}">
|
||||
<PathIcon Width="14" Height="14" Data="{Binding Source='mdi:ChevronUp', Converter={StaticResource IconKey}}"/>
|
||||
</Button>
|
||||
<Button Grid.Column="1" Classes="btn" Margin="0,0,12,0" Padding="10,4"
|
||||
ToolTip.Tip="{loc:Tr conflictResolver.nextConflict}"
|
||||
Command="{Binding NextCommand}"/>
|
||||
Command="{Binding NextCommand}">
|
||||
<PathIcon Width="14" Height="14" Data="{Binding Source='mdi:ChevronDown', Converter={StaticResource IconKey}}"/>
|
||||
</Button>
|
||||
<ComboBox Grid.Column="2" MinWidth="240" MaxWidth="520"
|
||||
ItemsSource="{Binding Files}"
|
||||
SelectedItem="{Binding ActiveFile, Mode=TwoWay}">
|
||||
|
||||
@@ -13,8 +13,10 @@
|
||||
<Grid ColumnDefinitions="Auto,Auto,*,Auto" ColumnSpacing="6">
|
||||
<TextBlock Grid.Column="0" Classes="field-label" Text="{loc:Tr settings.agentEditor.model}" VerticalAlignment="Center"/>
|
||||
<ctl:InheritedBadge Grid.Column="1" BadgeText="{Binding ModelBadge}"/>
|
||||
<Button Grid.Column="3" Classes="icon-btn" Content="↺" ToolTip.Tip="{loc:Tr settings.inherit.resetToInherited}"
|
||||
Command="{Binding ResetModelCommand}"/>
|
||||
<Button Grid.Column="3" Classes="icon-btn" ToolTip.Tip="{loc:Tr settings.inherit.resetToInherited}"
|
||||
Command="{Binding ResetModelCommand}">
|
||||
<PathIcon Width="14" Height="14" Data="{Binding Source='mdi:Restore', Converter={StaticResource IconKey}}"/>
|
||||
</Button>
|
||||
</Grid>
|
||||
<ComboBox ItemsSource="{Binding ModelOptions}"
|
||||
SelectedItem="{Binding Model, Mode=TwoWay}"
|
||||
@@ -27,8 +29,10 @@
|
||||
<Grid ColumnDefinitions="Auto,Auto,*,Auto" ColumnSpacing="6">
|
||||
<TextBlock Grid.Column="0" Classes="field-label" Text="{loc:Tr settings.agentEditor.maxTurns}" VerticalAlignment="Center"/>
|
||||
<ctl:InheritedBadge Grid.Column="1" BadgeText="{Binding TurnsBadge}"/>
|
||||
<Button Grid.Column="3" Classes="icon-btn" Content="↺" ToolTip.Tip="{loc:Tr settings.inherit.resetToInherited}"
|
||||
Command="{Binding ResetTurnsCommand}"/>
|
||||
<Button Grid.Column="3" Classes="icon-btn" ToolTip.Tip="{loc:Tr settings.inherit.resetToInherited}"
|
||||
Command="{Binding ResetTurnsCommand}">
|
||||
<PathIcon Width="14" Height="14" Data="{Binding Source='mdi:Restore', Converter={StaticResource IconKey}}"/>
|
||||
</Button>
|
||||
</Grid>
|
||||
<NumericUpDown Value="{Binding MaxTurns, Mode=TwoWay}"
|
||||
PlaceholderText="{Binding TurnsInheritedHint}"
|
||||
@@ -44,8 +48,10 @@
|
||||
<Grid ColumnDefinitions="Auto,Auto,*,Auto" ColumnSpacing="6">
|
||||
<TextBlock Grid.Column="0" Classes="field-label" Text="{loc:Tr settings.agentEditor.permissionMode}" VerticalAlignment="Center"/>
|
||||
<ctl:InheritedBadge Grid.Column="1" BadgeText="{Binding PermissionBadge}"/>
|
||||
<Button Grid.Column="3" Classes="icon-btn" Content="↺" ToolTip.Tip="{loc:Tr settings.inherit.resetToInherited}"
|
||||
Command="{Binding ResetPermissionModeCommand}"/>
|
||||
<Button Grid.Column="3" Classes="icon-btn" ToolTip.Tip="{loc:Tr settings.inherit.resetToInherited}"
|
||||
Command="{Binding ResetPermissionModeCommand}">
|
||||
<PathIcon Width="14" Height="14" Data="{Binding Source='mdi:Restore', Converter={StaticResource IconKey}}"/>
|
||||
</Button>
|
||||
</Grid>
|
||||
<ComboBox ItemsSource="{Binding PermissionModeOptions}"
|
||||
SelectedItem="{Binding PermissionMode, Mode=TwoWay}"
|
||||
@@ -71,8 +77,10 @@
|
||||
<Grid ColumnDefinitions="Auto,Auto,*,Auto" ColumnSpacing="6">
|
||||
<TextBlock Grid.Column="0" Classes="field-label" Text="{loc:Tr settings.agentEditor.agentFile}" VerticalAlignment="Center"/>
|
||||
<ctl:InheritedBadge Grid.Column="1" BadgeText="{Binding AgentBadge}"/>
|
||||
<Button Grid.Column="3" Classes="icon-btn" Content="↺" ToolTip.Tip="{loc:Tr settings.inherit.resetToInherited}"
|
||||
Command="{Binding ResetAgentCommand}"/>
|
||||
<Button Grid.Column="3" Classes="icon-btn" ToolTip.Tip="{loc:Tr settings.inherit.resetToInherited}"
|
||||
Command="{Binding ResetAgentCommand}">
|
||||
<PathIcon Width="14" Height="14" Data="{Binding Source='mdi:Restore', Converter={StaticResource IconKey}}"/>
|
||||
</Button>
|
||||
</Grid>
|
||||
<Grid ColumnDefinitions="*,Auto">
|
||||
<ComboBox Grid.Column="0"
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Text.RegularExpressions;
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
@@ -8,6 +9,7 @@ using Avalonia.Layout;
|
||||
using Avalonia.Markup.Xaml;
|
||||
using Avalonia.Media;
|
||||
using Avalonia.Threading;
|
||||
using ClaudeDo.Ui.Converters;
|
||||
using ClaudeDo.Ui.Localization;
|
||||
|
||||
namespace ClaudeDo.Ui.Views.Controls;
|
||||
@@ -243,12 +245,13 @@ public partial class MarkdownView : UserControl
|
||||
return grid;
|
||||
}
|
||||
|
||||
private static Geometry? MdiGeometry(string kind) =>
|
||||
(Geometry?)IconKeyConverter.Instance.Convert("mdi:" + kind, typeof(Geometry), null, CultureInfo.InvariantCulture);
|
||||
|
||||
private Button CopyButton(string command)
|
||||
{
|
||||
var copyIcon = new PathIcon { Width = 11, Height = 11 };
|
||||
copyIcon.Bind(PathIcon.DataProperty, this.GetResourceObservable("Icon.Copy"));
|
||||
var checkIcon = new PathIcon { Width = 11, Height = 11 };
|
||||
checkIcon.Bind(PathIcon.DataProperty, this.GetResourceObservable("Icon.Check"));
|
||||
var copyIcon = new PathIcon { Width = 11, Height = 11, Data = MdiGeometry("ContentCopy") };
|
||||
var checkIcon = new PathIcon { Width = 11, Height = 11, Data = MdiGeometry("Check") };
|
||||
|
||||
var button = new Button
|
||||
{
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
<PathIcon Grid.Column="0" Width="14" Height="14"
|
||||
Margin="0,0,8,0"
|
||||
Foreground="{DynamicResource TextDimBrush}"
|
||||
Data="M19,4H18V2H16V4H8V2H6V4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V10H19V20M19,8H5V6H19V8Z"/>
|
||||
Data="{Binding Source='mdi:CalendarBlankOutline', Converter={StaticResource IconKey}}"/>
|
||||
<TextBlock Grid.Column="1"
|
||||
Text="{Binding #Root.DisplayText}"
|
||||
Foreground="{Binding #Root.DisplayForeground}"
|
||||
@@ -107,7 +107,7 @@
|
||||
<PathIcon Grid.Column="2" Width="10" Height="10"
|
||||
Margin="8,0,0,0"
|
||||
Foreground="{DynamicResource TextMuteBrush}"
|
||||
Data="M7,10L12,15L17,10H7Z"/>
|
||||
Data="{Binding Source='mdi:MenuDown', Converter={StaticResource IconKey}}"/>
|
||||
</Grid>
|
||||
</ToggleButton>
|
||||
|
||||
@@ -133,11 +133,15 @@
|
||||
</StackPanel>
|
||||
|
||||
<Grid ColumnDefinitions="Auto,*,Auto" Margin="0,2,0,0">
|
||||
<Button Grid.Column="0" Click="OnPrevMonthClick" Classes="nav" Content="◀"/>
|
||||
<Button Grid.Column="0" Click="OnPrevMonthClick" Classes="nav">
|
||||
<PathIcon Width="14" Height="14" Data="{Binding Source='mdi:ChevronLeft', Converter={StaticResource IconKey}}"/>
|
||||
</Button>
|
||||
<TextBlock Grid.Column="1" x:Name="MonthHeader" Classes="title"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"/>
|
||||
<Button Grid.Column="2" Click="OnNextMonthClick" Classes="nav" Content="▶"/>
|
||||
<Button Grid.Column="2" Click="OnNextMonthClick" Classes="nav">
|
||||
<PathIcon Width="14" Height="14" Data="{Binding Source='mdi:ChevronRight', Converter={StaticResource IconKey}}"/>
|
||||
</Button>
|
||||
</Grid>
|
||||
|
||||
<UniformGrid Columns="7" x:Name="WeekdayHeaders"/>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
<ToggleButton Classes="icon-btn" IsChecked="{Binding WrapLines}"
|
||||
VerticalAlignment="Center"
|
||||
ToolTip.Tip="{loc:Tr modals.diff.wrapLines}">
|
||||
<PathIcon Data="{StaticResource Icon.Wrap}" Width="14" Height="14"/>
|
||||
<PathIcon Data="{Binding Source='mdi:Wrap', Converter={StaticResource IconKey}}" Width="14" Height="14"/>
|
||||
</ToggleButton>
|
||||
<ctl:OperationIndicator Status="{Binding ParseOp}"/>
|
||||
</StackPanel>
|
||||
|
||||
@@ -349,10 +349,12 @@
|
||||
<TextBlock Classes="meta" Grid.Column="3" Text="{Binding LastRunLabel}" VerticalAlignment="Center"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
ToolTip.Tip="{Binding LastRunLabel}"/>
|
||||
<Button Classes="icon-btn" Grid.Column="4" Content="✕"
|
||||
<Button Classes="icon-btn" Grid.Column="4"
|
||||
ToolTip.Tip="{loc:Tr settings.prime.removeScheduleTip}"
|
||||
Command="{Binding $parent[ItemsControl].((vm:SettingsModalViewModel)DataContext).Prime.RemoveScheduleCommand}"
|
||||
CommandParameter="{Binding}"/>
|
||||
CommandParameter="{Binding}">
|
||||
<PathIcon Width="12" Height="12" Data="{Binding Source='mdi:Close', Converter={StaticResource IconKey}}"/>
|
||||
</Button>
|
||||
</Grid>
|
||||
<TextBlock Classes="field-label" Text="{loc:Tr settings.prime.actionLabel}"/>
|
||||
<StackPanel Orientation="Horizontal" Spacing="16">
|
||||
|
||||
@@ -25,10 +25,12 @@
|
||||
<StackPanel Orientation="Horizontal" Spacing="6">
|
||||
<Ellipse Classes="spinner" Width="12" Height="12" VerticalAlignment="Center"
|
||||
IsVisible="{Binding IsRefreshing}"/>
|
||||
<Button Classes="icon-btn" Content="⟳" FontSize="{DynamicResource FontSizeBody}"
|
||||
<Button Classes="icon-btn"
|
||||
Command="{Binding RefreshCommand}"
|
||||
IsEnabled="{Binding !IsRefreshing}"
|
||||
ToolTip.Tip="{loc:Tr modals.usageMonitor.refreshHint}"/>
|
||||
ToolTip.Tip="{loc:Tr modals.usageMonitor.refreshHint}">
|
||||
<PathIcon Width="14" Height="14" Data="{Binding Source='mdi:Refresh', Converter={StaticResource IconKey}}"/>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</ctl:ModalShell.HeaderActions>
|
||||
<DockPanel>
|
||||
|
||||
Reference in New Issue
Block a user