1
0
mirror of https://github.com/bitwarden/mobile synced 2025-12-29 06:33:53 +00:00

Dynamic theme switching and visual tweaks (#1556)

* Dynamic theme switching and visual tweaks

* update action runner to use macos-11 for iOS 15 support

* additional tweaks

* refinements

* refinements

* formatting and tweaks
This commit is contained in:
Matt Portune
2021-10-08 08:47:40 -04:00
committed by GitHub
parent 73eb3c2c1e
commit 4aad34cd75
69 changed files with 4193 additions and 5433 deletions

View File

@@ -1,4 +1,5 @@
using UIKit;
using Bit.App.Utilities;
using UIKit;
using Xamarin.Forms.Platform.iOS;
namespace Bit.iOS.Core.Utilities
@@ -6,24 +7,63 @@ namespace Bit.iOS.Core.Utilities
public static class ThemeHelpers
{
public static bool LightTheme = true;
public static bool UsingOsDarkTheme = false;
public static UIColor SplashBackgroundColor = Xamarin.Forms.Color.FromHex("#efeff4").ToUIColor();
public static UIColor BackgroundColor = Xamarin.Forms.Color.FromHex("#ffffff").ToUIColor();
public static UIColor MutedColor = Xamarin.Forms.Color.FromHex("#777777").ToUIColor();
public static UIColor SuccessColor = Xamarin.Forms.Color.FromHex("#00a65a").ToUIColor();
public static UIColor DangerColor = Xamarin.Forms.Color.FromHex("dd4b39").ToUIColor();
public static UIColor PrimaryColor = Xamarin.Forms.Color.FromHex("#175DDC").ToUIColor();
public static UIColor TextColor = Xamarin.Forms.Color.FromHex("#000000").ToUIColor();
public static UIColor PlaceholderColor = Xamarin.Forms.Color.FromHex("#d0d0d0").ToUIColor();
public static UIColor SeparatorColor = Xamarin.Forms.Color.FromHex("#dddddd").ToUIColor();
public static UIColor ListHeaderBackgroundColor = Xamarin.Forms.Color.FromHex("#efeff4").ToUIColor();
public static UIColor NavBarBackgroundColor = Xamarin.Forms.Color.FromHex("#175DDC").ToUIColor();
public static UIColor NavBarTextColor = Xamarin.Forms.Color.FromHex("#ffffff").ToUIColor();
public static void SetAppearance(string theme, bool usingOsDarkTheme)
public static UIColor SplashBackgroundColor
{
UsingOsDarkTheme = usingOsDarkTheme;
SetThemeVariables(theme);
get => ThemeManager.GetResourceColor("SplashBackgroundColor").ToUIColor();
}
public static UIColor BackgroundColor
{
get => ThemeManager.GetResourceColor("BackgroundColor").ToUIColor();
}
public static UIColor MutedColor
{
get => ThemeManager.GetResourceColor("MutedColor").ToUIColor();
}
public static UIColor SuccessColor
{
get => ThemeManager.GetResourceColor("SuccessColor").ToUIColor();
}
public static UIColor DangerColor
{
get => ThemeManager.GetResourceColor("DangerColor").ToUIColor();
}
public static UIColor PrimaryColor
{
get => ThemeManager.GetResourceColor("PrimaryColor").ToUIColor();
}
public static UIColor TextColor
{
get => ThemeManager.GetResourceColor("TextColor").ToUIColor();
}
public static UIColor SeparatorColor
{
get => ThemeManager.GetResourceColor("SeparatorColor").ToUIColor();
}
public static UIColor ListHeaderBackgroundColor
{
get => ThemeManager.GetResourceColor("ListHeaderBackgroundColor").ToUIColor();
}
public static UIColor NavBarBackgroundColor
{
get => ThemeManager.GetResourceColor("NavigationBarBackgroundColor").ToUIColor();
}
public static UIColor NavBarTextColor
{
get => ThemeManager.GetResourceColor("NavigationBarTextColor").ToUIColor();
}
public static UIColor TabBarBackgroundColor
{
get => ThemeManager.GetResourceColor("TabBarBackgroundColor").ToUIColor();
}
public static UIColor TabBarItemColor
{
get => ThemeManager.GetResourceColor("TabBarItemColor").ToUIColor();
}
public static void SetAppearance(string theme, bool osDarkModeEnabled)
{
SetThemeVariables(theme, osDarkModeEnabled);
UINavigationBar.Appearance.ShadowImage = new UIImage();
UINavigationBar.Appearance.SetBackgroundImage(new UIImage(), UIBarMetrics.Default);
UIStepper.Appearance.TintColor = MutedColor;
@@ -33,91 +73,22 @@ namespace Bit.iOS.Core.Utilities
}
}
public static void SetExtensionAppearance(string theme, bool usingOsDarkTheme)
{
SetAppearance(theme, usingOsDarkTheme);
UIView.Appearance.BackgroundColor = BackgroundColor;
UILabel.Appearance.TextColor = TextColor;
UITextField.Appearance.TintColor = TextColor;
UITextView.Appearance.TintColor = TextColor;
UITextField.Appearance.BackgroundColor = BackgroundColor;
UITextView.Appearance.BackgroundColor = BackgroundColor;
UITableView.Appearance.BackgroundColor = BackgroundColor;
UITableView.Appearance.SeparatorColor = SeparatorColor;
UINavigationBar.Appearance.BackgroundColor = NavBarBackgroundColor;
UINavigationBar.Appearance.BarTintColor = NavBarBackgroundColor;
UINavigationBar.Appearance.TintColor = NavBarTextColor;
UINavigationBar.Appearance.Translucent = false;
UINavigationBar.Appearance.SetTitleTextAttributes(new UITextAttributes()
{
TextColor = NavBarTextColor
});
UIBarButtonItem.Appearance.TintColor = NavBarTextColor;
UIButton.Appearance.TintColor = TextColor;
UILabel.AppearanceWhenContainedIn(typeof(UITableViewHeaderFooterView)).TextColor = MutedColor;
}
public static UIFont GetDangerFont()
{
return Xamarin.Forms.Font.SystemFontOfSize(Xamarin.Forms.NamedSize.Small,
Xamarin.Forms.FontAttributes.Bold).ToUIFont();
}
private static void SetThemeVariables(string theme)
private static void SetThemeVariables(string theme, bool osDarkModeEnabled)
{
LightTheme = false;
if (string.IsNullOrWhiteSpace(theme) && UsingOsDarkTheme)
if (string.IsNullOrWhiteSpace(theme) && osDarkModeEnabled)
{
theme = "dark";
}
if (theme == "dark")
if (theme == "dark" || theme == "black" || theme == "nord")
{
var whiteColor = Xamarin.Forms.Color.FromHex("#ffffff").ToUIColor();
MutedColor = Xamarin.Forms.Color.FromHex("#a3a3a3").ToUIColor();
SuccessColor = Xamarin.Forms.Color.FromHex("#00a65a").ToUIColor();
DangerColor = Xamarin.Forms.Color.FromHex("ff3e24").ToUIColor();
BackgroundColor = Xamarin.Forms.Color.FromHex("#303030").ToUIColor();
SplashBackgroundColor = Xamarin.Forms.Color.FromHex("#222222").ToUIColor();
PrimaryColor = Xamarin.Forms.Color.FromHex("#52bdfb").ToUIColor();
TextColor = whiteColor;
PlaceholderColor = Xamarin.Forms.Color.FromHex("#707070").ToUIColor();
SeparatorColor = Xamarin.Forms.Color.FromHex("#191919").ToUIColor();
ListHeaderBackgroundColor = Xamarin.Forms.Color.FromHex("#222222").ToUIColor();
NavBarBackgroundColor = Xamarin.Forms.Color.FromHex("#212121").ToUIColor();
NavBarTextColor = whiteColor;
}
else if (theme == "black")
{
var blackColor = Xamarin.Forms.Color.FromHex("#000000").ToUIColor();
var whiteColor = Xamarin.Forms.Color.FromHex("#ffffff").ToUIColor();
MutedColor = Xamarin.Forms.Color.FromHex("#a3a3a3").ToUIColor();
SuccessColor = Xamarin.Forms.Color.FromHex("#00a65a").ToUIColor();
DangerColor = Xamarin.Forms.Color.FromHex("ff3e24").ToUIColor();
BackgroundColor = blackColor;
SplashBackgroundColor = blackColor;
PrimaryColor = Xamarin.Forms.Color.FromHex("#52bdfb").ToUIColor();
TextColor = whiteColor;
PlaceholderColor = Xamarin.Forms.Color.FromHex("#707070").ToUIColor();
SeparatorColor = Xamarin.Forms.Color.FromHex("#282828").ToUIColor();
ListHeaderBackgroundColor = blackColor;
NavBarBackgroundColor = blackColor;
NavBarTextColor = whiteColor;
}
else if (theme == "nord")
{
MutedColor = Xamarin.Forms.Color.FromHex("#d8dee9").ToUIColor();
SuccessColor = Xamarin.Forms.Color.FromHex("#a3be8c").ToUIColor();
DangerColor = Xamarin.Forms.Color.FromHex("bf616a").ToUIColor();
BackgroundColor = Xamarin.Forms.Color.FromHex("#3b4252").ToUIColor();
SplashBackgroundColor = Xamarin.Forms.Color.FromHex("#2e3440").ToUIColor();
PrimaryColor = Xamarin.Forms.Color.FromHex("#81a1c1").ToUIColor();
TextColor = Xamarin.Forms.Color.FromHex("#e5e9f0").ToUIColor();
PlaceholderColor = Xamarin.Forms.Color.FromHex("#7b88a1").ToUIColor();
SeparatorColor = Xamarin.Forms.Color.FromHex("#2e3440").ToUIColor();
ListHeaderBackgroundColor = Xamarin.Forms.Color.FromHex("#2e3440").ToUIColor();
NavBarBackgroundColor = Xamarin.Forms.Color.FromHex("#2e3440").ToUIColor();
NavBarTextColor = Xamarin.Forms.Color.FromHex("#e5e9f0").ToUIColor();
LightTheme = false;
}
else
{

View File

@@ -84,9 +84,9 @@ namespace Bit.iOS.Core.Utilities
var bootstrapTask = BootstrapAsync(postBootstrapFunc);
}
public static void AppearanceAdjustments(IDeviceActionService deviceActionService)
public static void AppearanceAdjustments()
{
ThemeHelpers.SetAppearance(ThemeManager.GetTheme(false), deviceActionService.UsingDarkTheme());
ThemeHelpers.SetAppearance(ThemeManager.GetTheme(false), ThemeManager.OsDarkModeEnabled());
UIApplication.SharedApplication.StatusBarHidden = false;
UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.LightContent;
}