package gui

import (
	"github.com/wailsapp/wails/v2"
	"github.com/wailsapp/wails/v2/pkg/options"
	"github.com/wailsapp/wails/v2/pkg/options/assetserver"
	"github.com/wailsapp/wails/v2/pkg/options/windows"
)

// Run launches the Wails GUI. It blocks until the window is closed.
//
// Window size matches the React design (480×640) but is resizable so
// users on smaller displays can shrink it. Title shows the version.
func Run(version string) error {
	app := NewApp(version)

	// Frameless = no native Windows chrome; the React Classic component
	// renders its own title bar (brand mark, version, theme toggle,
	// min/close icons) so we deliberately suppress the OS chrome to
	// avoid stacking two title bars.
	// The Classic React component renders a fixed 480×640 surface, so we
	// pin the host window to exactly the same. Allowing resize would
	// expose the bare Wails background colour around the React canvas
	// (the "blue strip on the side" issue from early testing).
	const w, h = 480, 640
	return wails.Run(&options.App{
		Title:         "Drover-Go " + version,
		Width:         w,
		Height:        h,
		MinWidth:      w,
		MinHeight:     h,
		MaxWidth:      w,
		MaxHeight:     h,
		DisableResize: true,
		Frameless:     true,
		AssetServer: &assetserver.Options{
			Assets: Assets,
		},
		BackgroundColour: &options.RGBA{R: 28, G: 29, B: 32, A: 1}, // matches Classic dark bg
		OnStartup:        app.Startup,
		Windows: &windows.Options{
			WebviewIsTransparent:              false,
			WindowIsTranslucent:               false,
			DisableFramelessWindowDecorations: false,
		},
		Bind: []interface{}{
			app,
		},
	})
}
