Modules/ScubaConfigApp/ScubaConfigAppResources/ScubaBaselinePolicyViewerUI.xaml
|
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="ScubaGear Baseline Policies" Height="900" Width="1400" WindowStartupLocation="CenterScreen" Background="#F8FAFC" Foreground="#1F2937" ShowInTaskbar="True" Topmost="False"> <Grid Margin="16"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <!-- Header --> <Border Grid.Row="0" Background="#2C5282" CornerRadius="8" Margin="0,0,0,16" Padding="20"> <StackPanel Orientation="Vertical"> <TextBlock x:Name="HeaderTitle" Text="ScubaGear Baseline Policies" FontSize="24" FontWeight="Bold" Foreground="White" Margin="0,0,0,8"/> <TextBlock x:Name="HeaderSubtitle" Text="Security baseline policies and implementation guidance for Microsoft 365" FontSize="14" Foreground="#E0E7FF" TextWrapping="Wrap"/> </StackPanel> </Border> <!-- Main Content --> <Grid Grid.Row="1" Margin="16"> <Grid.ColumnDefinitions> <ColumnDefinition Width="350" MinWidth="200" MaxWidth="600"/> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <!-- Left Navigation - Simple ListBox with Search Filter --> <Border Grid.Column="0" BorderBrush="#D0D5E0" BorderThickness="1" CornerRadius="4" Margin="0,0,8,0"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <TextBlock Grid.Row="0" Text="Select Policy" FontSize="16" FontWeight="Bold" Background="#E8F4FD" Padding="12" Margin="0"/> <!-- Search and Filters --> <Border Grid.Row="1" Background="White" BorderBrush="#D0D5E0" BorderThickness="0,1,0,1" Padding="8"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <!-- Search Row --> <Grid Grid.Row="0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions> <TextBox x:Name="FilterTextBox" Grid.Column="0" FontSize="12" Padding="8,4" BorderBrush="#D0D5E0" BorderThickness="1" VerticalAlignment="Center"/> <TextBlock Grid.Column="0" Text="Search policies..." FontSize="12" Foreground="#9CA3AF" Margin="12,0,0,0" VerticalAlignment="Center" IsHitTestVisible="False" x:Name="PlaceholderText"/> <Button x:Name="ClearFilterButton" Grid.Column="1" Content="×" FontSize="16" FontWeight="Bold" Background="Transparent" BorderThickness="0" Foreground="#6B7280" Padding="8,4" Margin="4,0,0,0" VerticalAlignment="Center" Visibility="Collapsed"/> </Grid> <!-- Filter Row --> <Grid Grid.Row="1" Margin="0,8,0,0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <TextBlock Grid.Column="0" Text="Criticality:" FontSize="12" Foreground="#6B7280" VerticalAlignment="Center" Margin="0,0,8,0"/> <ComboBox x:Name="CriticalityFilter" Grid.Column="1" FontSize="12" Padding="8,4" BorderBrush="#D0D5E0" BorderThickness="1" Background="White" SelectedIndex="0"> <ComboBoxItem Content="All" Tag="all"/> <ComboBoxItem Content="Shall" Tag="shall"/> <ComboBoxItem Content="Should" Tag="should"/> </ComboBox> </Grid> </Grid> </Border> <ListBox Grid.Row="2" x:Name="PolicySelector_ListBox" Background="White" Foreground="#333333" FontFamily="Segoe UI" FontSize="12" Padding="4" BorderThickness="0" SelectionMode="Single" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> <ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem"> <Setter Property="Margin" Value="4,2"/> <Setter Property="Padding" Value="0"/> <Setter Property="BorderThickness" Value="0"/> <Setter Property="Background" Value="Transparent"/> <Setter Property="HorizontalContentAlignment" Value="Stretch"/> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="#F0F9FF"/> </Trigger> <Trigger Property="IsSelected" Value="True"> <Setter Property="Background" Value="#DBEAFE"/> </Trigger> </Style.Triggers> </Style> </ListBox.ItemContainerStyle> <ListBox.ItemTemplate> <DataTemplate> <Border BorderBrush="#E5E7EB" BorderThickness="1" CornerRadius="6" Padding="12,8" Margin="0"> <Border.Style> <Style TargetType="Border"> <Setter Property="Background" Value="White"/> <Style.Triggers> <!-- Product Header styling --> <DataTrigger Binding="{Binding Type}" Value="ProductHeader"> <Setter Property="Background" Value="#2C5282"/> </DataTrigger> <!-- Hover effects --> <MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=IsMouseOver}" Value="True"/> <Condition Binding="{Binding Type}" Value="ProductHeader"/> </MultiDataTrigger.Conditions> <Setter Property="Background" Value="#3182CE"/> <Setter Property="BorderBrush" Value="#2B6CB0"/> </MultiDataTrigger> <MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=IsMouseOver}" Value="True"/> <Condition Binding="{Binding IsPolicy}" Value="True"/> </MultiDataTrigger.Conditions> <Setter Property="Background" Value="#E6FFFA"/> <Setter Property="BorderBrush" Value="#2C5282"/> </MultiDataTrigger> <!-- Selection effects --> <MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=IsSelected}" Value="True"/> <Condition Binding="{Binding Type}" Value="ProductHeader"/> </MultiDataTrigger.Conditions> <Setter Property="Background" Value="#1A365D"/> <Setter Property="BorderBrush" Value="#2C5282"/> <Setter Property="BorderThickness" Value="2"/> </MultiDataTrigger> <MultiDataTrigger> <MultiDataTrigger.Conditions> <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=IsSelected}" Value="True"/> <Condition Binding="{Binding IsPolicy}" Value="True"/> </MultiDataTrigger.Conditions> <Setter Property="Background" Value="#BEE3F8"/> <Setter Property="BorderBrush" Value="#2C5282"/> <Setter Property="BorderThickness" Value="2"/> </MultiDataTrigger> </Style.Triggers> </Style> </Border.Style> <StackPanel Orientation="Vertical"> <TextBlock Text="{Binding DisplayText}" Foreground="{Binding TextColor}" FontWeight="{Binding FontWeight}" TextWrapping="NoWrap" FontSize="13"/> </StackPanel> </Border> </DataTemplate> </ListBox.ItemTemplate> </ListBox> </Grid> </Border> <!-- GridSplitter --> <GridSplitter Grid.Column="1" Width="8" HorizontalAlignment="Center" VerticalAlignment="Stretch" Background="#E5E7EB" ShowsPreview="False" ResizeBehavior="PreviousAndCurrent"/> <!-- Right Content --> <Border Grid.Column="2" Background="White" BorderBrush="#E5E7EB" BorderThickness="1" CornerRadius="8" Padding="16"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <!-- Policy Header --> <StackPanel Grid.Row="0" x:Name="PolicyHeader" Margin="0,0,0,16"> <TextBlock x:Name="PolicyTitle" Text="Select a policy to view details" FontSize="20" FontWeight="Bold" Foreground="#111827"/> <TextBlock x:Name="PolicyDescription" Text="" FontSize="14" Foreground="#6B7280" TextWrapping="Wrap" Margin="0,8,0,8"/> <StackPanel x:Name="BadgesPanel" Orientation="Horizontal" Margin="0,8,0,0"/> </StackPanel> <!-- Policy Content Accordion --> <ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto"> <StackPanel x:Name="PolicyContent"> <!-- Expanders will be dynamically created here --> </StackPanel> </ScrollViewer> </Grid> </Border> </Grid> </Grid> </Window> |