From cdff98b109e149943dd17bb26a11b65dbc3a5088 Mon Sep 17 00:00:00 2001 From: Trevor Farlow <trevdor@users.noreply.github.com> Date: Fri, 1 Sep 2023 10:58:01 -0600 Subject: [PATCH] :bug: Mobile: fix Accounts page theme color (#1604) * Make all mobile view themes respect Actual color themes --- .../src/components/accounts/MobileAccount.js | 2 +- .../src/components/accounts/MobileAccounts.js | 2 +- .../src/components/budget/MobileBudget.js | 4 ++-- .../src/components/manager/ConfigServer.tsx | 4 ++-- .../desktop-client/src/components/settings/index.tsx | 4 ++-- .../src/components/transactions/MobileTransaction.js | 2 +- .../desktop-client/src/hooks/useSetThemeColor.ts | 12 +++++++++++- packages/desktop-client/src/style/themes/dark.ts | 8 ++++++++ packages/desktop-client/src/style/themes/light.ts | 8 ++++++++ upcoming-release-notes/1604.md | 6 ++++++ 10 files changed, 42 insertions(+), 10 deletions(-) create mode 100644 upcoming-release-notes/1604.md diff --git a/packages/desktop-client/src/components/accounts/MobileAccount.js b/packages/desktop-client/src/components/accounts/MobileAccount.js index 875c74a4a..b7d05dc84 100644 --- a/packages/desktop-client/src/components/accounts/MobileAccount.js +++ b/packages/desktop-client/src/components/accounts/MobileAccount.js @@ -167,7 +167,7 @@ export default function Account(props) { useEffect(updateSearchQuery, [searchText, currentQuery, state.dateFormat]); - useSetThemeColor(theme.altMenuItemTextHover); + useSetThemeColor(theme.mobileAccountViewTheme); if (!accounts || !accounts.length) { return null; diff --git a/packages/desktop-client/src/components/accounts/MobileAccounts.js b/packages/desktop-client/src/components/accounts/MobileAccounts.js index 83770cfc9..73be0521f 100644 --- a/packages/desktop-client/src/components/accounts/MobileAccounts.js +++ b/packages/desktop-client/src/components/accounts/MobileAccounts.js @@ -275,7 +275,7 @@ export default function Accounts() { navigate(`/transaction/${transaction}`); }; - useSetThemeColor(theme.altMenuBackground); + useSetThemeColor(theme.mobileAccountsViewTheme); return ( <View style={{ flex: 1 }}> diff --git a/packages/desktop-client/src/components/budget/MobileBudget.js b/packages/desktop-client/src/components/budget/MobileBudget.js index 52b2912be..0486a5b32 100644 --- a/packages/desktop-client/src/components/budget/MobileBudget.js +++ b/packages/desktop-client/src/components/budget/MobileBudget.js @@ -13,7 +13,7 @@ import * as monthUtils from 'loot-core/src/shared/months'; import { useActions } from '../../hooks/useActions'; import { useSetThemeColor } from '../../hooks/useSetThemeColor'; import AnimatedLoading from '../../icons/AnimatedLoading'; -import { colors } from '../../style'; +import { theme } from '../../style'; import View from '../common/View'; import SyncRefresh from '../SyncRefresh'; @@ -303,7 +303,7 @@ export default function BudgetWrapper() { let actions = useActions(); let spreadsheet = useSpreadsheet(); - useSetThemeColor(colors.p5); + useSetThemeColor(theme.mobileBudgetViewTheme); return ( <Budget categoryGroups={categoryGroups} diff --git a/packages/desktop-client/src/components/manager/ConfigServer.tsx b/packages/desktop-client/src/components/manager/ConfigServer.tsx index 7dbda7758..8934024d2 100644 --- a/packages/desktop-client/src/components/manager/ConfigServer.tsx +++ b/packages/desktop-client/src/components/manager/ConfigServer.tsx @@ -8,7 +8,7 @@ import { import { useActions } from '../../hooks/useActions'; import { useSetThemeColor } from '../../hooks/useSetThemeColor'; -import { colors } from '../../style'; +import { colors, theme } from '../../style'; import Button, { ButtonWithLoading } from '../common/Button'; import { BigInput } from '../common/Input'; import Text from '../common/Text'; @@ -18,7 +18,7 @@ import { useServerURL, useSetServerURL } from '../ServerContext'; import { Title } from './subscribe/common'; export default function ConfigServer() { - useSetThemeColor(colors.p5); + useSetThemeColor(theme.mobileConfigServerViewTheme); let { createBudget, signOut, loggedIn } = useActions(); let navigate = useNavigate(); let [url, setUrl] = useState(''); diff --git a/packages/desktop-client/src/components/settings/index.tsx b/packages/desktop-client/src/components/settings/index.tsx index cfd38ca00..5771954a5 100644 --- a/packages/desktop-client/src/components/settings/index.tsx +++ b/packages/desktop-client/src/components/settings/index.tsx @@ -11,7 +11,7 @@ import useFeatureFlag from '../../hooks/useFeatureFlag'; import useLatestVersion, { useIsOutdated } from '../../hooks/useLatestVersion'; import { useSetThemeColor } from '../../hooks/useSetThemeColor'; import { useResponsive } from '../../ResponsiveProvider'; -import { colors } from '../../style'; +import { colors, theme } from '../../style'; import tokens from '../../tokens'; import Button from '../common/Button'; import ExternalLink from '../common/ExternalLink'; @@ -133,7 +133,7 @@ export default function Settings() { const { isNarrowWidth } = useResponsive(); const themesFlag = useFeatureFlag('themes'); - useSetThemeColor(colors.n11); + useSetThemeColor(theme.mobileSettingsViewTheme); return ( <View style={{ diff --git a/packages/desktop-client/src/components/transactions/MobileTransaction.js b/packages/desktop-client/src/components/transactions/MobileTransaction.js index 7dcf4007a..d1eefb348 100644 --- a/packages/desktop-client/src/components/transactions/MobileTransaction.js +++ b/packages/desktop-client/src/components/transactions/MobileTransaction.js @@ -698,7 +698,7 @@ function TransactionEditUnconnected(props) { let adding = false; let deleted = false; - useSetThemeColor(colors.p5); + useSetThemeColor(theme.mobileTransactionViewTheme); useEffect(() => { // May as well update categories / accounts when transaction ID changes diff --git a/packages/desktop-client/src/hooks/useSetThemeColor.ts b/packages/desktop-client/src/hooks/useSetThemeColor.ts index 15509fa7a..117181ddc 100644 --- a/packages/desktop-client/src/hooks/useSetThemeColor.ts +++ b/packages/desktop-client/src/hooks/useSetThemeColor.ts @@ -1,8 +1,10 @@ import { useEffect } from 'react'; +const VAR_STRING_REGEX = /^var\((--.*)\)$/; + export function useSetThemeColor(color: string) { useEffect(() => { - setThemeColor(color); + setThemeColor(getPropertyValueFromVarString(color)); }, [color]); } @@ -11,3 +13,11 @@ function setThemeColor(color: string) { const themeTag = [...metaTags].find(tag => tag.name === 'theme-color'); themeTag.setAttribute('content', color); } + +function getPropertyValueFromVarString(varString: string) { + return VAR_STRING_REGEX.test(varString) + ? window + .getComputedStyle(document.documentElement) + .getPropertyValue(varString.match(VAR_STRING_REGEX)[1]) + : varString; +} diff --git a/packages/desktop-client/src/style/themes/dark.ts b/packages/desktop-client/src/style/themes/dark.ts index 964a67da1..e2691ec83 100644 --- a/packages/desktop-client/src/style/themes/dark.ts +++ b/packages/desktop-client/src/style/themes/dark.ts @@ -83,6 +83,14 @@ export const mobileNavItemSelected = colorPalette.purple400; export const mobileAccountShadow = cardShadow; export const mobileAccountText = colorPalette.blue800; +// Mobile view themes (for the top bar) +export const mobileAccountViewTheme = colorPalette.navy50; +export const mobileAccountsViewTheme = colorPalette.blue800; +export const mobileBudgetViewTheme = colorPalette.purple500; +export const mobileConfigServerViewTheme = colorPalette.purple500; +export const mobileSettingsViewTheme = colorPalette.navy50; +export const mobileTransactionViewTheme = colorPalette.purple500; + // Button export const buttonMenuText = colorPalette.navy100; export const buttonMenuTextHover = colorPalette.navy50; diff --git a/packages/desktop-client/src/style/themes/light.ts b/packages/desktop-client/src/style/themes/light.ts index af72c18fe..aded0c447 100644 --- a/packages/desktop-client/src/style/themes/light.ts +++ b/packages/desktop-client/src/style/themes/light.ts @@ -83,6 +83,14 @@ export const mobileNavItemSelected = colorPalette.purple500; export const mobileAccountShadow = colorPalette.navy300; export const mobileAccountText = colorPalette.blue800; +// Mobile view themes (for the top bar) +export const mobileAccountViewTheme = colorPalette.navy50; +export const mobileAccountsViewTheme = colorPalette.blue800; +export const mobileBudgetViewTheme = colorPalette.purple500; +export const mobileConfigServerViewTheme = colorPalette.purple500; +export const mobileSettingsViewTheme = colorPalette.navy50; +export const mobileTransactionViewTheme = colorPalette.purple500; + // Button export const buttonMenuText = colorPalette.navy100; export const buttonMenuTextHover = colorPalette.navy50; diff --git a/upcoming-release-notes/1604.md b/upcoming-release-notes/1604.md new file mode 100644 index 000000000..f9736dda9 --- /dev/null +++ b/upcoming-release-notes/1604.md @@ -0,0 +1,6 @@ +--- +category: Bugfix +authors: [trevdor] +--- + +Mobile: fix regression of Accounts page theme -- GitLab