<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <ApplicationManifest>app.manifest</ApplicationManifest>
    <AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>

    <!--
      False here, unlike every server project. The root Directory.Build.props sets it true because
      the API is container-hosted, UTC-only and has no business formatting anything for a human.
      This process does: it shows timestamps and host names to a person who expects their own
      locale's conventions. Invariant globalization would quietly render every date in a format
      that is correct for nobody.
    -->
    <InvariantGlobalization>false</InvariantGlobalization>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Avalonia" />
    <PackageReference Include="Avalonia.Desktop" />
    <PackageReference Include="Avalonia.Themes.Fluent" />
    <PackageReference Include="Avalonia.Fonts.Inter" />
    <PackageReference Include="Avalonia.Controls.WebView" />
    <PackageReference Include="CommunityToolkit.Mvvm" />
  </ItemGroup>

  <ItemGroup>
    <!--
      The shell's view models, the terminal renderer's files and the palette, all shared with the Android
      head. This project is now the desktop *views* and the desktop platform integration, and nothing else.
    -->
    <ProjectReference Include="../DodoSSH.Client.Shell/DodoSSH.Client.Shell.csproj" />
    <ProjectReference Include="../DodoSSH.Client.Import/DodoSSH.Client.Import.csproj" />
    <ProjectReference Include="../DodoSSH.Client.Session/DodoSSH.Client.Session.csproj" />
    <ProjectReference Include="../DodoSSH.Client.Ssh/DodoSSH.Client.Ssh.csproj" />
    <ProjectReference Include="../DodoSSH.Client.ObjectStore/DodoSSH.Client.ObjectStore.csproj" />
    <ProjectReference Include="../DodoSSH.Client.Terminal/DodoSSH.Client.Terminal.csproj" />
    <ProjectReference Include="../DodoSSH.Client.Transfer/DodoSSH.Client.Transfer.csproj" />
  </ItemGroup>

  <ItemGroup>
    <!--
      The view models are plain CommunityToolkit.Mvvm objects and need no Avalonia to run, so the shell's
      state machine is testable as ordinary code. That is the whole reason the sign-in step is a delegate.
    -->
    <InternalsVisibleTo Include="DodoSSH.Client.App.Tests" />

    <!--
      The layout harness needs the views and the application class themselves, not just the view models:
      its whole job is to lay out the real XAML and measure it.
    -->
    <InternalsVisibleTo Include="DodoSSH.Client.App.Layout.Tests" />
  </ItemGroup>

</Project>

