using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Interop;

namespace ClaudeDo.Installer.Core;

public static class DarkTitleBar
{
    [DllImport("dwmapi.dll", PreserveSig = true)]
    private static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, ref int attrValue, int attrSize);

    private const int DWMWA_USE_IMMERSIVE_DARK_MODE = 20;

    public static void Apply(Window window)
    {
        if (window.IsLoaded)
            SetDarkMode(window);
        else
            window.SourceInitialized += (_, _) => SetDarkMode(window);
    }

    private static void SetDarkMode(Window window)
    {
        var hwnd = new WindowInteropHelper(window).Handle;
        if (hwnd == IntPtr.Zero) return;
        int value = 1;
        DwmSetWindowAttribute(hwnd, DWMWA_USE_IMMERSIVE_DARK_MODE, ref value, sizeof(int));
    }
}
