diff --git a/hyperglass/ui/components/ColorModeToggle.js b/hyperglass/ui/components/ColorModeToggle.js new file mode 100644 index 0000000..84d85a1 --- /dev/null +++ b/hyperglass/ui/components/ColorModeToggle.js @@ -0,0 +1,76 @@ +import * as React from "react"; +import { forwardRef } from "react"; +import { Button, useColorMode } from "@chakra-ui/core"; + +const Sun = ({ color, size = "1.5rem", ...props }) => ( + + + +); + +const Moon = ({ color, size = "1.5rem", ...props }) => ( + + + +); + +const iconMap = { dark: Moon, light: Sun }; +const outlineColor = { dark: "primary.300", light: "primary.600" }; + +export const ColorModeToggle = forwardRef((props, ref) => { + const { colorMode, toggleColorMode } = useColorMode(); + const Icon = iconMap[colorMode]; + + const label = `Switch to ${colorMode === "light" ? "dark" : "light"} mode`; + + return ( + + ); +}); diff --git a/hyperglass/ui/components/Header.js b/hyperglass/ui/components/Header.js index 8c92891..064882e 100644 --- a/hyperglass/ui/components/Header.js +++ b/hyperglass/ui/components/Header.js @@ -1,10 +1,11 @@ import React from "react"; -import { Flex, IconButton, useColorMode } from "@chakra-ui/core"; +import { Flex, useColorMode } from "@chakra-ui/core"; import { motion, AnimatePresence } from "framer-motion"; import ResetButton from "~/components/ResetButton"; import useMedia from "~/components/MediaProvider"; import useConfig, { useHyperglassState } from "~/components/HyperglassProvider"; import Title from "~/components/Title"; +import { ColorModeToggle } from "~/components/ColorModeToggle"; const AnimatedFlex = motion.custom(Flex); const AnimatedResetButton = motion.custom(ResetButton); @@ -56,13 +57,13 @@ const resetButtonMl = { true: [null, 2, 2, 2], false: null }; const widthMap = { text_only: "100%", - logo_only: ["90%", "90%", "25%", "25%"], - logo_subtitle: ["90%", "90%", "25%", "25%"], - all: ["90%", "90%", "25%", "25%"] + logo_only: ["90%", "90%", "50%", "50%"], + logo_subtitle: ["90%", "90%", "50%", "50%"], + all: ["90%", "90%", "50%", "50%"] }; const Header = ({ layoutRef, ...props }) => { - const { colorMode, toggleColorMode } = useColorMode(); + const { colorMode } = useColorMode(); const { web } = useConfig(); const { mediaSize } = useMedia(); const { isSubmitting, resetForm } = useHyperglassState(); @@ -125,16 +126,7 @@ const Header = ({ layoutRef, ...props }) => { mb={[null, "auto"]} mr={isSubmitting ? null : 2} > - + ); const layout = {