package tui import ( "tailscale-vpn/internal/pages" "tailscale-vpn/internal/services" ) type page int const ( pageHome page = iota pageSettings pageSelectServer ) type TUIInterface struct { Services *services.ServicesStore Page page MenuItems []pages.MenuItem Selected int Quitting bool WindowWidth int WindowHeight int VPNConnected bool VPNLoading bool VPNToggleLoading bool VPNError error HasServers bool SelectedServer services.Server HasSelectedServer bool SettingsServers []services.Server SettingsSelected int SettingsEditMode string SettingsEditingServer services.Server SettingsFormName string SettingsFormHost string SettingsFormField int SettingsConfirmDelete bool SelectServerServers []services.Server SelectServerSelected int } func NewTUIInterface(store *services.ServicesStore) TUIInterface { servers := store.Config.GetServers() selectedServer, hasSelected := store.Config.GetSelectedServer() return TUIInterface{ Services: store, Page: pageHome, MenuItems: pages.HomeMenuItems(false, len(servers) > 0), VPNConnected: false, VPNLoading: true, HasServers: len(servers) > 0, SelectedServer: selectedServer, HasSelectedServer: hasSelected, } }