//go:build kanholec_gui package gui import ( "image/color" "fyne.io/fyne/v2" "fyne.io/fyne/v2/theme" ) var ( colorPrimary = color.NRGBA{R: 99, G: 102, B: 241, A: 255} colorPrimaryDark = color.NRGBA{R: 79, G: 70, B: 229, A: 255} colorSecondary = color.NRGBA{R: 236, G: 72, B: 153, A: 255} colorBackground = color.NRGBA{R: 17, G: 24, B: 39, A: 255} colorSurface = color.NRGBA{R: 31, G: 41, B: 55, A: 255} colorForeground = color.NRGBA{R: 243, G: 244, B: 246, A: 255} colorButton = color.NRGBA{R: 55, G: 65, B: 81, A: 255} colorHover = color.NRGBA{R: 75, G: 85, B: 99, A: 255} colorDisabled = color.NRGBA{R: 107, G: 114, B: 128, A: 255} colorInputBorder = color.NRGBA{R: 75, G: 85, B: 99, A: 255} colorPlaceholder = color.NRGBA{R: 156, G: 163, B: 175, A: 255} colorSuccess = color.NRGBA{R: 34, G: 197, B: 94, A: 255} colorWarning = color.NRGBA{R: 251, G: 146, B: 60, A: 255} colorError = color.NRGBA{R: 239, G: 68, B: 68, A: 255} colorSeparator = color.NRGBA{R: 55, G: 65, B: 81, A: 255} colorAccent = color.NRGBA{R: 139, G: 92, B: 246, A: 255} ) type kanholeTheme struct{} var _ fyne.Theme = (*kanholeTheme)(nil) func (t *kanholeTheme) Color(name fyne.ThemeColorName, variant fyne.ThemeVariant) color.Color { switch name { case theme.ColorNameBackground: return colorBackground case theme.ColorNameForeground, theme.ColorNameForegroundOnPrimary: return colorForeground case theme.ColorNamePrimary: return colorPrimary case theme.ColorNameButton: return colorButton case theme.ColorNameHover: return colorHover case theme.ColorNameDisabled: return colorDisabled case theme.ColorNameDisabledButton: return color.NRGBA{R: 45, G: 55, B: 72, A: 255} case theme.ColorNameInputBorder: return colorInputBorder case theme.ColorNamePlaceHolder: return colorPlaceholder case theme.ColorNameScrollBar: return color.NRGBA{R: 107, G: 114, B: 128, A: 180} case theme.ColorNameShadow: return color.NRGBA{R: 0, G: 0, B: 0, A: 100} case theme.ColorNameSeparator: return colorSeparator case theme.ColorNameFocus: return color.NRGBA{R: 99, G: 102, B: 241, A: 140} case theme.ColorNameSelection: return color.NRGBA{R: 99, G: 102, B: 241, A: 80} case theme.ColorNameInputBackground: return colorSurface case theme.ColorNameHeaderBackground: return color.NRGBA{R: 17, G: 24, B: 39, A: 255} default: return theme.DefaultTheme().Color(name, theme.VariantDark) } } func (t *kanholeTheme) Font(style fyne.TextStyle) fyne.Resource { return theme.DefaultTheme().Font(style) } func (t *kanholeTheme) Icon(name fyne.ThemeIconName) fyne.Resource { return theme.DefaultTheme().Icon(name) } func (t *kanholeTheme) Size(name fyne.ThemeSizeName) float32 { switch name { case theme.SizeNamePadding: return 10 case theme.SizeNameInnerPadding: return 8 case theme.SizeNameLineSpacing: return 32 case theme.SizeNameScrollBar: return 10 case theme.SizeNameScrollBarSmall: return 5 case theme.SizeNameText: return 14 case theme.SizeNameHeadingText: return 28 case theme.SizeNameSubHeadingText: return 18 case theme.SizeNameCaptionText: return 12 case theme.SizeNameInputBorder: return 2 case theme.SizeNameInputRadius: return 10 case theme.SizeNameSelectionRadius: return 8 default: return theme.DefaultTheme().Size(name) } } func StatusColor(s string) color.Color { switch s { case "running", "connected", "ok", "active": return colorSuccess case "warning", "reconnecting": return colorWarning case "error", "stopped", "failed", "disconnected": return colorError default: return colorPlaceholder } }