Files
BeWoPlaner/BeWo/Styles/Features/AIChatStyles.xaml
2026-06-12 15:44:39 +02:00

360 lines
18 KiB
XML

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ai="clr-namespace:BeWo.View.Detail.AI"
xmlns:dxwui="http://schemas.devexpress.com/winfx/2008/xaml/windowsui"
xmlns:templateselectors="clr-namespace:BeWo.View.TemplateSelectors"
xmlns:view="clr-namespace:BeWo.View"
xmlns:viewmodel="clr-namespace:BeWo.ViewModel">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\DataTemplates\ControlTemplates.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style x:Key="MessageTextBoxStyle" TargetType="{x:Type TextBox}">
<Setter Property="Margin" Value="0" />
<Setter Property="Height" Value="auto" />
<Setter Property="Padding" Value="3" />
<Setter Property="Background" Value="Transparent" />
<Setter Property="Foreground" Value="{DynamicResource TextForegroundPrimary}" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="IsReadOnly" Value="True" />
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="Text" Value="{Binding Message, Converter={StaticResource NewlineConverter}}" />
<Setter Property="FontSize" Value="14" />
</Style>
<Style x:Key="TextBlockStyle" TargetType="{x:Type TextBlock}" />
<SolidColorBrush x:Key="TextForegroundPrimary" Color="{StaticResource LightTextPrimary}" />
<SolidColorBrush x:Key="TextForegroundSecondary" Color="{StaticResource LightTextSecondary}" />
<SolidColorBrush x:Key="TextForegroundDarkPrimary" Color="{StaticResource DarkTextPrimary}" />
<SolidColorBrush x:Key="TextForegroundDarkSecondary" Color="{StaticResource DarkTextSecondary}" />
<Style x:Key="ModuleAiControlDefaultStyle" TargetType="{x:Type GroupBox}">
<Style.Resources>
<SolidColorBrush x:Key="NavigationHeaderBrush" Color="{StaticResource ModuleAiControlDefaultNavigationHeaderColor}" />
<LinearGradientBrush x:Key="NavigationContentBrush" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="{StaticResource ModuleAiControlDefaultNavigationContentColor}" />
<GradientStop Offset="1" Color="{StaticResource ModuleAiControlDefaultNavigationContentColor2}" />
</LinearGradientBrush>
<SolidColorBrush x:Key="TextForegroundPrimary" Color="{StaticResource LightTextPrimary}" />
<SolidColorBrush x:Key="TextForegroundSecondary" Color="{StaticResource LightTextSecondary}" />
</Style.Resources>
<Setter Property="Template" Value="{StaticResource NavigationGroupTemplate2}" />
</Style>
<Style
x:Key="ModuleAiControlZeiterfassungStyle"
BasedOn="{StaticResource ModuleAiControlDefaultStyle}"
TargetType="{x:Type GroupBox}">
<Style.Resources>
<SolidColorBrush x:Key="NavigationHeaderBrush" Color="{StaticResource ModuleAiControlZeiterfassungNavigationHeaderColor}" />
<LinearGradientBrush x:Key="NavigationContentBrush" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="{StaticResource ModuleAiControlZeiterfassungNavigationContentColor}" />
<GradientStop Offset="1" Color="{StaticResource ModuleAiControlZeiterfassungNavigationContentColor2}" />
</LinearGradientBrush>
<SolidColorBrush x:Key="TextForegroundPrimary" Color="{StaticResource ModuleAiControlZeiterfassungNavigationContentTextPrimary}" />
<SolidColorBrush x:Key="TextForegroundSecondary" Color="{StaticResource ModuleAiControlZeiterfassungNavigationContentTextSecondary}" />
</Style.Resources>
</Style>
<Style
x:Key="ModuleAiControlSupportConceptStyle"
BasedOn="{StaticResource ModuleAiControlDefaultStyle}"
TargetType="{x:Type GroupBox}">
<Style.Resources>
<SolidColorBrush x:Key="NavigationHeaderBrush" Color="{StaticResource ModuleAiControlSupportConceptNavigationHeaderColor}" />
<LinearGradientBrush x:Key="NavigationContentBrush" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="{StaticResource ModuleAiControlSupportConceptNavigationContentColor}" />
<GradientStop Offset="1" Color="{StaticResource ModuleAiControlSupportConceptNavigationContentColor2}" />
</LinearGradientBrush>
</Style.Resources>
</Style>
<Style
x:Key="ModuleAiControlCustomerStyle"
BasedOn="{StaticResource ModuleAiControlDefaultStyle}"
TargetType="{x:Type GroupBox}">
<Style.Resources>
<SolidColorBrush x:Key="NavigationHeaderBrush" Color="{StaticResource ModuleAiControlCustomerNavigationHeaderColor}" />
<LinearGradientBrush x:Key="NavigationContentBrush" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="{StaticResource ModuleAiControlCustomerNavigationContentColor}" />
<GradientStop Offset="1" Color="{StaticResource ModuleAiControlCustomerNavigationContentColor2}" />
</LinearGradientBrush>
</Style.Resources>
</Style>
<Style
x:Key="ModuleAiControlPersonStyle"
BasedOn="{StaticResource ModuleAiControlDefaultStyle}"
TargetType="{x:Type GroupBox}">
<Style.Resources>
<SolidColorBrush x:Key="NavigationHeaderBrush" Color="{StaticResource ModuleAiControlPersonNavigationHeaderColor}" />
<LinearGradientBrush x:Key="NavigationContentBrush" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="{StaticResource ModuleAiControlPersonNavigationContentColor}" />
<GradientStop Offset="1" Color="{StaticResource ModuleAiControlPersonNavigationContentColor2}" />
</LinearGradientBrush>
</Style.Resources>
</Style>
<Style
x:Key="ModuleAiControlEmployeeStyle"
BasedOn="{StaticResource ModuleAiControlDefaultStyle}"
TargetType="{x:Type GroupBox}">
<Style.Resources>
<SolidColorBrush x:Key="NavigationHeaderBrush" Color="{StaticResource ModuleAiControlEmployeeNavigationHeaderColor}" />
<LinearGradientBrush x:Key="NavigationContentBrush" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="{StaticResource ModuleAiControlEmployeeNavigationContentColor}" />
<GradientStop Offset="1" Color="{StaticResource ModuleAiControlEmployeeNavigationContentColor2}" />
</LinearGradientBrush>
</Style.Resources>
</Style>
<Style
x:Key="ModuleAiControlOrganisationStyle"
BasedOn="{StaticResource ModuleAiControlDefaultStyle}"
TargetType="{x:Type GroupBox}">
<Style.Resources>
<SolidColorBrush x:Key="NavigationHeaderBrush" Color="{StaticResource ModuleAiControlOrganisationNavigationHeaderColor}" />
<LinearGradientBrush x:Key="NavigationContentBrush" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="{StaticResource ModuleAiControlOrganisationNavigationContentColor}" />
<GradientStop Offset="1" Color="{StaticResource ModuleAiControlOrganisationNavigationContentColor2}" />
</LinearGradientBrush>
<SolidColorBrush x:Key="TextForegroundPrimary" Color="{StaticResource BrightTextPrimary}" />
<SolidColorBrush x:Key="TextForegroundSecondary" Color="{StaticResource BrightTextSecondary}" />
</Style.Resources>
</Style>
<!-- OLD -->
<Style x:Key="ModuleAiNavigationStyle" TargetType="{x:Type GroupBox}">
<Style.Resources>
<SolidColorBrush x:Key="NavigationHeaderBrush" Color="#FFC64605" />
<LinearGradientBrush x:Key="NavigationContentBrush" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0" Color="#FFFFC48A" />
<GradientStop Offset="1" Color="#FFFF7830" />
</LinearGradientBrush>
</Style.Resources>
<Setter Property="Template" Value="{StaticResource NavigationGroupTemplate2}" />
</Style>
<DataTemplate x:Key="ConversationHamburgerMenuItemTemplate" DataType="{x:Type viewmodel:AiConversationVM}">
<dxwui:HamburgerMenuNavigationButton Content="{Binding Displayname}" />
</DataTemplate>
<!-- Assistent Message Control -->
<DataTemplate x:Key="AssistentMessageTemplate">
<Grid
Margin="0,0,60,0"
HorizontalAlignment="Left"
ContextMenuService.IsEnabled="{Binding DataContext.AssistentCommands, Converter={StaticResource CollectionCountToBoolConverter}, RelativeSource={RelativeSource AncestorType=ItemsControl}}"
Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType=ItemsControl}}">
<Grid.ContextMenu>
<ContextMenu ItemsSource="{Binding PlacementTarget.Tag.AssistentCommands, RelativeSource={RelativeSource Self}}">
<ContextMenu.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Command" Value="{Binding Command}" />
<Setter Property="CommandParameter" Value="{Binding Path=PlacementTarget.DataContext, RelativeSource={RelativeSource AncestorType=ContextMenu}}" />
</Style>
</ContextMenu.ItemContainerStyle>
<ContextMenu.ItemTemplate>
<DataTemplate>
<TextBlock
Margin="3"
VerticalAlignment="Center"
Text="{Binding Name}" />
</DataTemplate>
</ContextMenu.ItemTemplate>
</ContextMenu>
</Grid.ContextMenu>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Border
Width="auto"
Margin="0,0,3,0"
Padding="4,4,5,5"
VerticalAlignment="Top"
Background="#DEFFFFFF"
BorderBrush="Black"
BorderThickness="0"
CornerRadius="10, 10, 10, 10">
<Image
Width="24"
Height="24"
Source="..\..\Ressources\Icons\bewoplaner_haus.png" />
</Border>
<Border
Grid.Column="1"
Padding="8,4,8,4"
Background="#DEFFFFFF"
BorderBrush="Black"
BorderThickness="0"
CornerRadius="0, 10, 10, 10">
<Grid Margin="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<!--<Border BorderThickness="1" Grid.ColumnSpan="2" Grid.RowSpan="2" BorderBrush="Black"></Border>-->
<TextBlock
Grid.Row="0"
Grid.ColumnSpan="2"
Margin="0,0,0,4"
Padding="0"
VerticalAlignment="Center"
FontSize="12"
FontWeight="Medium"
Foreground="{DynamicResource TextForegroundSecondary}"
Style="{StaticResource TextBlockStyle}"
Text="{Binding DurationSec, StringFormat=Nachgedacht für {0} Sekunden}">
<TextBlock.ToolTip>
<Grid Margin="0,4,0,4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<TextBlock
Margin="0"
Padding="0"
FontSize="12"
FontWeight="Normal"
Foreground="{DynamicResource TextForegroundPrimary}"
Style="{StaticResource TextBlockStyle}"
Text="{Binding ModelName, StringFormat=Modell: {0}}" />
<TextBlock
Grid.Row="1"
Padding="0"
VerticalAlignment="Bottom"
FontSize="12"
FontWeight="Normal"
Foreground="{DynamicResource TextForegroundPrimary}"
Style="{StaticResource TextBlockStyle}"
Text="{Binding Created, StringFormat=Datum/Uhrzeit: {0:dd.MM.yyyy HH:mm:ss}}" />
</Grid>
</TextBlock.ToolTip>
</TextBlock>
<!--<TextBlock
Grid.Row="1"
Grid.ColumnSpan="2"
Margin="0,4,0,0"
Padding="0"
FontSize="11"
FontWeight="Medium"
Foreground="#888888"
Style="{StaticResource TextBlockStyle}"
Text="{Binding DurationSec, StringFormat=Nachgedacht für {0} Sekunden}" />-->
<TextBox
Grid.Row="1"
Grid.ColumnSpan="2"
Margin="0,4,0,0"
Padding="-3"
VerticalAlignment="Center"
Style="{StaticResource MessageTextBoxStyle}" />
</Grid>
</Border>
</Grid>
</DataTemplate>
<!-- System Message Control -->
<DataTemplate x:Key="SystemMessageTemplate">
<Border
Width="auto"
Margin="60,0,60,0"
HorizontalAlignment="Center"
Background="#DEFFFFFF"
BorderBrush="Black"
BorderThickness="1"
CornerRadius="0">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<TextBox
Padding="8"
HorizontalAlignment="Center"
Style="{StaticResource MessageTextBoxStyle}">
SystemPrompt
</TextBox>
<Separator Grid.Row="1" />
<TextBox
Grid.Row="2"
Padding="8"
Style="{StaticResource MessageTextBoxStyle}" />
</Grid>
</Border>
</DataTemplate>
<!-- User Message Control -->
<DataTemplate x:Key="UserMessageTemplate">
<Border
Width="auto"
Margin="60,0,0,0"
HorizontalAlignment="Right"
Background="#DEFFFFFF"
BorderBrush="Black"
BorderThickness="0"
CornerRadius="15, 15, 15, 15"
Tag="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type view:BeWoView}}, Path=.}">
<Border.ContextMenu>
<ContextMenu>
<MenuItem
Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ContextMenu}}, Path=PlacementTarget.Tag.DataContext.SavePromptCommand}"
CommandParameter="{Binding}"
Header="Speichern" />
</ContextMenu>
</Border.ContextMenu>
<Grid>
<TextBox Padding="12,8,12,8" Style="{StaticResource MessageTextBoxStyle}" />
</Grid>
</Border>
</DataTemplate>
<DataTemplate x:Key="CheckboxAssistentMessageTemplate">
<StackPanel VerticalAlignment="Center" Orientation="Horizontal">
<CheckBox
Margin="4"
VerticalAlignment="Center"
IsChecked="{Binding IsChecked, Mode=TwoWay}" />
<ContentPresenter Content="{Binding}" ContentTemplate="{StaticResource AssistentMessageTemplate}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="CheckboxUserMessageTemplate">
<StackPanel VerticalAlignment="Center" Orientation="Horizontal">
<CheckBox
Margin="4"
VerticalAlignment="Center"
IsChecked="{Binding IsChecked}" />
<ContentPresenter Content="{Binding}" ContentTemplate="{StaticResource UserMessageTemplate}" />
</StackPanel>
</DataTemplate>
<templateselectors:AiConversationMessageTemplateSelector
x:Key="AiConversationMessageTemplateSelector"
AssistentMessageTemplate="{StaticResource AssistentMessageTemplate}"
SystemMessageTemplate="{StaticResource SystemMessageTemplate}"
UserMessageTemplate="{StaticResource UserMessageTemplate}" />
<templateselectors:AiConversationMessageTemplateSelector
x:Key="AiConversationCloneMessageTemplateSelector"
AssistentMessageTemplate="{StaticResource CheckboxAssistentMessageTemplate}"
SystemMessageTemplate="{StaticResource SystemMessageTemplate}"
UserMessageTemplate="{StaticResource UserMessageTemplate}" />
</ResourceDictionary>