From 97a3354d92c90c03e1cd200dfae6038b876c065e Mon Sep 17 00:00:00 2001 From: thecodrr Date: Sat, 28 Mar 2020 15:50:24 +0500 Subject: [PATCH] refactor: clean up settings --- apps/web/src/components/accent-item/index.js | 33 +++++ apps/web/src/theme/accents.js | 13 ++ apps/web/src/theme/variants/button.js | 1 + apps/web/src/theme/variants/text.js | 7 + apps/web/src/views/Settings.js | 146 ++++--------------- 5 files changed, 86 insertions(+), 114 deletions(-) create mode 100644 apps/web/src/components/accent-item/index.js create mode 100644 apps/web/src/theme/accents.js diff --git a/apps/web/src/components/accent-item/index.js b/apps/web/src/components/accent-item/index.js new file mode 100644 index 000000000..9b5991773 --- /dev/null +++ b/apps/web/src/components/accent-item/index.js @@ -0,0 +1,33 @@ +import React from "react"; +import { Flex } from "rebass"; +import * as Icon from "../icons"; +import { useStore as useThemeStore } from "../../stores/theme-store"; + +function AccentItem(props) { + const { code, label } = props; + const setAccent = useThemeStore(store => store.setAccent); + const accent = useThemeStore(store => store.accent); + + return ( + setAccent(code)} + key={label} + > + {code === accent && ( + + )} + + + ); +} +export default AccentItem; diff --git a/apps/web/src/theme/accents.js b/apps/web/src/theme/accents.js new file mode 100644 index 000000000..74f75489f --- /dev/null +++ b/apps/web/src/theme/accents.js @@ -0,0 +1,13 @@ +const accents = [ + { label: "red", code: "#ed2d37" }, + { label: "orange", code: "#ec6e05" }, + { label: "yellow", code: "yellow" }, + { label: "green", code: "green" }, + { label: "blue", code: "blue" }, + { label: "purple", code: "purple" }, + { label: "gray", code: "gray" }, + { label: "lightblue", code: "#46F0F0" }, + { label: "indigo", code: "#F032E6" }, + { label: "lightpink", code: "#FABEBE" } +]; +export default accents; diff --git a/apps/web/src/theme/variants/button.js b/apps/web/src/theme/variants/button.js index d3104963d..32a4abf75 100644 --- a/apps/web/src/theme/variants/button.js +++ b/apps/web/src/theme/variants/button.js @@ -62,6 +62,7 @@ class List { variant: "buttons.tertiary", border: "0px solid", borderBottom: "1px solid", + borderBottomColor: "border", borderRadius: 0, p: 2 }; diff --git a/apps/web/src/theme/variants/text.js b/apps/web/src/theme/variants/text.js index 48416d090..06e282850 100644 --- a/apps/web/src/theme/variants/text.js +++ b/apps/web/src/theme/variants/text.js @@ -5,6 +5,7 @@ class TextFactory { heading: new Heading(), title: new Title(), body: new Body(), + subBody: new SubBody(), error: new Error() }; } @@ -46,6 +47,12 @@ class Body { } } +class SubBody { + constructor() { + return { variant: "text.default", fontSize: "subBody" }; + } +} + class Error { constructor() { return { variant: "text.default", fontSize: "subBody", color: "error" }; diff --git a/apps/web/src/views/Settings.js b/apps/web/src/views/Settings.js index 7d95770c0..67206b55d 100644 --- a/apps/web/src/views/Settings.js +++ b/apps/web/src/views/Settings.js @@ -1,23 +1,21 @@ import React, { useEffect } from "react"; import { Box, Button, Flex, Text } from "rebass"; import * as Icon from "../components/icons"; -import "../app.css"; import { useStore as useUserStore } from "../stores/user-store"; import { useStore as useThemeStore } from "../stores/theme-store"; +import AccentItem from "../components/accent-item"; +import accents from "../theme/accents"; function Settings(props) { const theme = useThemeStore(store => store.theme); - const accent = useThemeStore(store => store.accent); const toggleNightMode = useThemeStore(store => store.toggleNightMode); - const setAccent = useThemeStore(store => store.theme); const user = useUserStore(store => store.user); const isLoggedIn = useUserStore(store => store.isLoggedIn); return ( - + props.navigator.navigate("account")} @@ -26,149 +24,78 @@ function Settings(props) { variant="columnCenter" bg="primary" mr={2} + size={40} sx={{ - width: 40, - height: 40, borderRadius: 80 }} > - + {isLoggedIn ? ( <> {user.username} - {user.email} + {user.email} ) : ( <> - - You are not logged in - - + You are not logged in + Login to sync notes. )} - + Appearance - + - {[ - { label: "red", code: "#ed2d37" }, - { label: "orange", code: "#ec6e05" }, - { label: "yellow", code: "yellow" }, - { label: "green", code: "green" }, - { label: "blue", code: "blue" }, - { label: "purple", code: "purple" }, - { label: "gray", code: "gray" }, - { label: "lightblue", code: "#46F0F0" }, - { label: "indigo", code: "#F032E6" }, - { label: "lightpink", code: "#FABEBE" } - ].map(color => ( - { - setAccent(color.code); - }} - > - {color.code === accent && ( - - )} - - + {accents.map(color => ( + ))} toggleNightMode()} + py={2} > Dark Mode {theme === "dark" ? : } - + Other - - - - + + {["Terms of Service", "Privacy Policy", "About"].map(title => ( + + ))} ); } @@ -184,13 +111,4 @@ function SettingsContainer() { return ; } -const Titles = { - general: "General", - account: "Account", - accent: "Accent Color", - TOS: "Terms of Service", - privacy: "Privacy Policy", - about: "About" -}; - export { Settings, SettingsContainer };