ui/SplitterUI.xaml

<Window
    xmlns="https://github.com/avaloniaui"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Name="RootWindow"
    Title="Splitter UI"
    Background="#1E1E1E"
    Foreground="#E6E6E6"
    Width="1200"
    Height="820"
    MinWidth="980"
    MinHeight="700">
    <Window.Styles>
        <Style Selector="Button">
            <Setter Property="Background" Value="#3C3C3C" />
            <Setter Property="Foreground" Value="#F0F0F0" />
            <Setter Property="BorderBrush" Value="#555555" />
        </Style>
        <Style Selector="TextBox">
            <Setter Property="Background" Value="#2B2B2B" />
            <Setter Property="Foreground" Value="#F0F0F0" />
            <Setter Property="BorderBrush" Value="#555555" />
        </Style>
        <Style Selector="ListBox">
            <Setter Property="Background" Value="#1E1E1E" />
            <Setter Property="Foreground" Value="#E6E6E6" />
            <Setter Property="BorderBrush" Value="#555555" />
        </Style>
        <Style Selector="TextBlock">
            <Setter Property="Foreground" Value="#E6E6E6" />
        </Style>
        <Style Selector="CheckBox">
            <Setter Property="Foreground" Value="#E6E6E6" />
        </Style>
        <Style Selector="Menu">
            <Setter Property="Background" Value="#252526" />
            <Setter Property="Foreground" Value="#E6E6E6" />
        </Style>
        <Style Selector="MenuItem">
            <Setter Property="Foreground" Value="#E6E6E6" />
        </Style>
    </Window.Styles>
 
    <Grid RowDefinitions="Auto,*,Auto" Margin="12" RowSpacing="10">
        <Border Grid.Row="0" Background="#252526" BorderBrush="#3E3E42" BorderThickness="1" CornerRadius="6" Padding="10">
            <Grid ColumnDefinitions="*,Auto,Auto" ColumnSpacing="8">
                <StackPanel Orientation="Vertical" Spacing="2" VerticalAlignment="Center">
                    <TextBlock FontSize="22" FontWeight="SemiBold" Text="Splitter" />
                    <TextBlock Foreground="#BFBFBF" Text="Edition-aware Windows install media builder" />
                </StackPanel>
                <Button x:Name="RunPreflightButton" Grid.Column="1" Width="130" Height="32" Content="Run Preflight" VerticalAlignment="Center" />
                <Button x:Name="CloseWindowButton" Grid.Column="2" Width="34" Height="32" Content="X" VerticalAlignment="Center" />
            </Grid>
        </Border>
 
        <Grid Grid.Row="1" RowDefinitions="Auto,Auto,*" RowSpacing="10">
            <Border Grid.Row="0" Background="#252526" BorderBrush="#3E3E42" BorderThickness="1" CornerRadius="6" Padding="4,2">
                <Menu>
                    <MenuItem Header="_File">
                        <MenuItem x:Name="ExitMenuItem" Header="E_xit" />
                    </MenuItem>
                </Menu>
            </Border>
 
            <Border Grid.Row="1" Background="#252526" BorderBrush="#3E3E42" BorderThickness="1" CornerRadius="6" Padding="10">
                <TextBlock x:Name="StatusText" Text="Preflight has not run." />
            </Border>
 
            <Grid Grid.Row="2" ColumnDefinitions="350,*" ColumnSpacing="10">
                <Border Grid.Column="0" Background="#252526" BorderBrush="#3E3E42" BorderThickness="1" CornerRadius="6" Padding="10">
                    <Grid RowDefinitions="Auto,Auto,Auto,Auto,Auto,*" RowSpacing="8">
                        <TextBlock FontSize="16" FontWeight="SemiBold" Text="Build Options" />
 
                        <StackPanel Grid.Row="1" Spacing="8">
                            <CheckBox x:Name="SkipBootableIsoCheckBox" Content="Skip bootable ISO build" />
                            <CheckBox x:Name="DesktopExperienceCheckBox" Content="Desktop Experience only" />
                            <CheckBox x:Name="ServerCoreCheckBox" Content="Server Core only" />
                        </StackPanel>
 
                        <Button x:Name="DiscoverImagesButton" Grid.Row="2" Height="32" Content="Discover Source Images" />
                        <Button x:Name="RunSplitButton" Grid.Row="3" Height="34" Content="Run Split" />
 
                        <TextBlock Grid.Row="4" FontWeight="SemiBold" Text="Discovered source images" />
                        <ListBox x:Name="ImagesListBox" Grid.Row="5" />
                    </Grid>
                </Border>
 
                <Grid Grid.Column="1" RowDefinitions="Auto,*,*" RowSpacing="10">
                    <Border Grid.Row="0" Background="#252526" BorderBrush="#3E3E42" BorderThickness="1" CornerRadius="6" Padding="10">
                        <Grid ColumnDefinitions="2.5*,1.7*,2*,2*,1.4*,1.1*" RowDefinitions="Auto,Auto" ColumnSpacing="8" RowSpacing="6">
                            <TextBlock Grid.Column="0" Grid.Row="0" Text="Source ISO" />
                            <Grid Grid.Column="0" Grid.Row="1" ColumnDefinitions="*,Auto" ColumnSpacing="6">
                                <TextBox x:Name="SourceIsoTextBox" Grid.Column="0" Watermark="C:\ISO\Windows.iso" />
                                <Button x:Name="BrowseSourceIsoButton" Grid.Column="1" Width="82" Content="Browse" />
                            </Grid>
 
                            <TextBlock Grid.Column="1" Grid.Row="0" Text="Edition names" />
                            <TextBox x:Name="EditionNamesTextBox" Grid.Column="1" Grid.Row="1" Watermark="Standard,Datacenter" />
 
                            <TextBlock Grid.Column="2" Grid.Row="0" Text="Working root" />
                            <TextBox x:Name="WorkingRootTextBox" Grid.Column="2" Grid.Row="1" Watermark="C:\work\splitter" />
 
                            <TextBlock Grid.Column="3" Grid.Row="0" Text="Output root" />
                            <TextBox x:Name="OutputRootTextBox" Grid.Column="3" Grid.Row="1" Watermark="C:\out\splitter" />
 
                            <TextBlock Grid.Column="4" Grid.Row="0" Text="Output base" />
                            <TextBox x:Name="OutputBaseNameTextBox" Grid.Column="4" Grid.Row="1" Watermark="WinServer_2025" />
 
                            <TextBlock Grid.Column="5" Grid.Row="0" Text="Label prefix" />
                            <TextBox x:Name="LabelPrefixTextBox" Grid.Column="5" Grid.Row="1" Text="WIN" />
                        </Grid>
                    </Border>
 
                    <Border Grid.Row="1" Background="#252526" BorderBrush="#3E3E42" BorderThickness="1" CornerRadius="6" Padding="10">
                        <Grid RowDefinitions="Auto,*" RowSpacing="8">
                            <TextBlock FontSize="16" FontWeight="SemiBold" Text="Execution" />
                            <TextBox
                                x:Name="LogTextBox"
                                Grid.Row="1"
                                AcceptsReturn="True"
                                IsReadOnly="True"
                                TextWrapping="NoWrap"
                                IsUndoEnabled="False"
                                FontFamily="Cascadia Mono" />
                        </Grid>
                    </Border>
 
                    <Border Grid.Row="2" Background="#252526" BorderBrush="#3E3E42" BorderThickness="1" CornerRadius="6" Padding="10">
                        <Grid RowDefinitions="Auto,*" RowSpacing="8">
                            <TextBlock FontSize="16" FontWeight="SemiBold" Text="Latest results" />
                            <ListBox x:Name="ResultsListBox" Grid.Row="1" />
                        </Grid>
                    </Border>
                </Grid>
            </Grid>
        </Grid>
 
        <TextBlock Grid.Row="2" x:Name="FooterText" Foreground="#BFBFBF" Text="Preflight checks help avoid ADK, DISM, and path issues before long-running operations." />
    </Grid>
</Window>