@@ -61,52 +61,63 @@ class Icons {
6161 menuIcon(name, { Color c -> UIManager . getColor(' Label.foreground' ) ?: c })
6262 }
6363
64- static DynamicSVGIcon green (String name ) {
65- menuIcon(name, greenMapper({ ThemeManager . isDark() }))
66- }
67-
68- static DynamicSVGIcon red (String name ) {
69- menuIcon(name, redMapper({ ThemeManager . isDark() }))
70- }
64+ static DynamicSVGIcon green (String name ) { menuIcon(name, greenMapper({ ThemeManager . isDark() })) }
65+ static DynamicSVGIcon red (String name ) { menuIcon(name, redMapper({ ThemeManager . isDark() })) }
66+ static DynamicSVGIcon blue (String name ) { menuIcon(name, blueMapper({ ThemeManager . isDark() })) }
67+ static DynamicSVGIcon amber (String name ) { menuIcon(name, amberMapper({ ThemeManager . isDark() })) }
68+ static DynamicSVGIcon violet (String name ) { menuIcon(name, violetMapper({ ThemeManager . isDark() })) }
69+ static DynamicSVGIcon teal (String name ) { menuIcon(name, tealMapper({ ThemeManager . isDark() })) }
70+ static DynamicSVGIcon javaBlue (String name ) { menuIcon(name, javaBlueMapper({ ThemeManager . isDark() })) }
71+ static DynamicSVGIcon subtleBlue (String name ) { menuIcon(name, subtleBlueMapper({ ThemeManager . isDark() })) }
7172
7273 // ---- main menu-bar icons (tint follows the menu-bar background, which is OS-drawn on macOS) ----
7374
7475 static DynamicSVGIcon menu (String name ) {
7576 menuIcon(name, { Color c -> ThemeManager . menuIconForeground ?: c })
7677 }
7778
78- static DynamicSVGIcon menuGreen (String name ) {
79- menuIcon(name, greenMapper({ ThemeManager . isMenuDark() }))
80- }
81-
82- static DynamicSVGIcon menuRed (String name ) {
83- menuIcon(name, redMapper({ ThemeManager . isMenuDark() }))
84- }
79+ static DynamicSVGIcon menuGreen (String name ) { menuIcon(name, greenMapper({ ThemeManager . isMenuDark() })) }
80+ static DynamicSVGIcon menuRed (String name ) { menuIcon(name, redMapper({ ThemeManager . isMenuDark() })) }
81+ static DynamicSVGIcon menuBlue (String name ) { menuIcon(name, blueMapper({ ThemeManager . isMenuDark() })) }
82+ static DynamicSVGIcon menuAmber (String name ) { menuIcon(name, amberMapper({ ThemeManager . isMenuDark() })) }
83+ static DynamicSVGIcon menuViolet (String name ) { menuIcon(name, violetMapper({ ThemeManager . isMenuDark() })) }
84+ static DynamicSVGIcon menuTeal (String name ) { menuIcon(name, tealMapper({ ThemeManager . isMenuDark() })) }
85+ static DynamicSVGIcon menuJavaBlue (String name ) { menuIcon(name, javaBlueMapper({ ThemeManager . isMenuDark() })) }
86+ static DynamicSVGIcon menuSubtleBlue (String name ) { menuIcon(name, subtleBlueMapper({ ThemeManager . isMenuDark() })) }
8587
8688 // ---- toolbar / resizable ----
8789
8890 static DynamicSVGIcon toolbar (String name ) {
8991 toolbarIcon(name, { Color c -> UIManager . getColor(' Label.foreground' ) ?: c })
9092 }
9193
92- static DynamicSVGIcon toolbarGreen (String name ) {
93- toolbarIcon(name, greenMapper({ ThemeManager . isDark() }))
94- }
95-
96- static DynamicSVGIcon toolbarRed (String name ) {
97- toolbarIcon(name, redMapper({ ThemeManager . isDark() }))
98- }
99-
100- private static Closure<Color > greenMapper (Closure<Boolean > darkCheck ) {
101- Color light = new Color (0x2E7D32 )
102- Color dark = new Color (0x81C784 )
103- return { Color c -> darkCheck() ? dark : light }
104- }
105-
106- private static Closure<Color > redMapper (Closure<Boolean > darkCheck ) {
107- Color light = new Color (0xC62828 )
108- Color dark = new Color (0xEF5350 )
109- return { Color c -> darkCheck() ? dark : light }
94+ static DynamicSVGIcon toolbarGreen (String name ) { toolbarIcon(name, greenMapper({ ThemeManager . isDark() })) }
95+ static DynamicSVGIcon toolbarRed (String name ) { toolbarIcon(name, redMapper({ ThemeManager . isDark() })) }
96+ static DynamicSVGIcon toolbarBlue (String name ) { toolbarIcon(name, blueMapper({ ThemeManager . isDark() })) }
97+ static DynamicSVGIcon toolbarAmber (String name ) { toolbarIcon(name, amberMapper({ ThemeManager . isDark() })) }
98+ static DynamicSVGIcon toolbarViolet (String name ) { toolbarIcon(name, violetMapper({ ThemeManager . isDark() })) }
99+ static DynamicSVGIcon toolbarTeal (String name ) { toolbarIcon(name, tealMapper({ ThemeManager . isDark() })) }
100+ static DynamicSVGIcon toolbarJavaBlue (String name ) { toolbarIcon(name, javaBlueMapper({ ThemeManager . isDark() })) }
101+ static DynamicSVGIcon toolbarSubtleBlue (String name ) { toolbarIcon(name, subtleBlueMapper({ ThemeManager . isDark() })) }
102+
103+ // Material "700" for light theme / "400" for dark — muted enough not to
104+ // shout next to grayscale neighbours, lifted in value for dark readability
105+ private static Closure<Color > greenMapper (Closure<Boolean > darkCheck ) { hueMapper(darkCheck, 0x2E7D32 , 0x81C784 ) }
106+ private static Closure<Color > redMapper (Closure<Boolean > darkCheck ) { hueMapper(darkCheck, 0xC62828 , 0xEF5350 ) }
107+ private static Closure<Color > blueMapper (Closure<Boolean > darkCheck ) { hueMapper(darkCheck, 0x1565C0 , 0x64B5F6 ) }
108+ private static Closure<Color > amberMapper (Closure<Boolean > darkCheck ) { hueMapper(darkCheck, 0xEF6C00 , 0xFFB74D ) }
109+ private static Closure<Color > violetMapper (Closure<Boolean > darkCheck ) { hueMapper(darkCheck, 0x7E57C2 , 0xB39DDB ) }
110+ private static Closure<Color > tealMapper (Closure<Boolean > darkCheck ) { hueMapper(darkCheck, 0x00838F , 0x4DD0E1 ) }
111+ // Official Java brand blue (#007396) for light; a lifted variant for dark
112+ private static Closure<Color > javaBlueMapper (Closure<Boolean > darkCheck ) { hueMapper(darkCheck, 0x007396 , 0x4DB6E3 ) }
113+ // Blue-leaning slate — reads as "almost the text colour" but with enough
114+ // blue to group related but unremarkable actions (cut/copy/paste).
115+ private static Closure<Color > subtleBlueMapper (Closure<Boolean > darkCheck ) { hueMapper(darkCheck, 0x4A6A8A , 0xA0B5CC ) }
116+
117+ private static Closure<Color > hueMapper (Closure<Boolean > darkCheck , int light , int dark ) {
118+ Color lightColor = new Color (light)
119+ Color darkColor = new Color (dark)
120+ return { Color c -> darkCheck() ? darkColor : lightColor }
110121 }
111122
112123 private static DynamicSVGIcon menuIcon (String name , Closure<Color > mapper ) {
0 commit comments