package theme import ( "image/color" "fyne.io/fyne/v2" "fyne.io/fyne/v2/theme" ) var ( OneDarkBackground = color.NRGBA{R: 40, G: 44, B: 52, A: 0xff} // #282c34 (helleres Grau) OneDarkCardBackground = color.NRGBA{R: 30, G: 32, B: 40, A: 0xff} // #1e2028 (dunkler für Cards) OneDarkText = color.NRGBA{R: 171, G: 178, B: 191, A: 0xff} // #abb2bf (Standard-Text) OneDarkSubtleText = color.NRGBA{R: 110, G: 115, B: 141, A: 0xff} // #6e738d (deaktiviert, Placeholder) OneDarkGreen = color.NRGBA{R: 152, G: 195, B: 121, A: 0xff} // #98c379 OneDarkRed = color.NRGBA{R: 224, G: 108, B: 117, A: 0xff} // #e06c75 OneDarkYellow = color.NRGBA{R: 229, G: 192, B: 123, A: 0xff} // #e5c07b ) type KettlebellThemeOneDark struct{} func (t *KettlebellThemeOneDark) Color(name fyne.ThemeColorName, variant fyne.ThemeVariant) color.Color { switch name { case theme.ColorNameBackground: return OneDarkBackground case theme.ColorNameButton: return OneDarkGreen case theme.ColorNameDisabledButton: return OneDarkSubtleText case theme.ColorNamePrimary: return OneDarkGreen case theme.ColorNamePlaceHolder: return OneDarkSubtleText case theme.ColorNameHover: return OneDarkYellow case theme.ColorNameForeground: return OneDarkText case theme.ColorNameDisabled: return OneDarkSubtleText case theme.ColorNameError: return OneDarkRed case theme.ColorNameInputBackground: return OneDarkCardBackground case theme.ColorNameSeparator: return OneDarkSubtleText case theme.ColorNameSelection: return OneDarkYellow case theme.ColorNameShadow: return OneDarkCardBackground case theme.ColorNameFocus: return OneDarkYellow default: return theme.DefaultTheme().Color(name, variant) } } func (t *KettlebellThemeOneDark) Icon(name fyne.ThemeIconName) fyne.Resource { return theme.DefaultTheme().Icon(name) } func (t *KettlebellThemeOneDark) Font(style fyne.TextStyle) fyne.Resource { return theme.DefaultTheme().Font(style) } func (t *KettlebellThemeOneDark) Size(name fyne.ThemeSizeName) float32 { switch name { case theme.SizeNamePadding: return 8 case theme.SizeNameText: return 16 case theme.SizeNameHeadingText: return 24 case theme.SizeNameSubHeadingText: return 20 default: return theme.DefaultTheme().Size(name) } }