diff --git a/src/components/controls.tsx b/src/components/controls.tsx new file mode 100644 index 0000000000..49b49924b1 --- /dev/null +++ b/src/components/controls.tsx @@ -0,0 +1,80 @@ +import React from 'react'; +import { css } from '@emotion/core'; +import DarkModeController from '../util/DarkModeController'; + +const controlsStyles = { + header: css/* scss */ ` + position: fixed; + padding: 0.25ch 1ch; + margin-bottom: 1ch; + margin-top: -1ch; + right: 0; + z-index: 999; + box-sizing: border-box; + will-change: transform; + + display: grid; + grid-auto-flow: column dense; + grid-gap: 1ch; + align-items: center; + + opacity: 0.9; + color: var(--color-text-accent, #999); + background-color: var(--black9, #9993); + border-top-left-radius: 1ch; + border-bottom-left-radius: 1ch; + + min-width: max-content; + width: 0; + white-space: normal; + text-size-adjust: 100%; + text-shadow: #333f46 0px 0.875px 0px; + user-select: none; + `, + button: css/* scss */ ` + color: inherit; + border: none; + width: max-content; + display: contents; + `, + controls: css/* scss */ ` + color: inherit; + `, +}; + +interface Props { + lightModeIcon?: string; + darkModeIcon?: string; + controller?: DarkModeController; +} + +const Controls = ({ + lightModeIcon = 'wb_sunny', + darkModeIcon = 'nights_stay', + controller = new DarkModeController(), +}: Props) => ( +
+
+ + + +
+
+); + +export default Controls; diff --git a/src/components/header.tsx b/src/components/header.tsx index f96cee335c..9f3b01197b 100644 --- a/src/components/header.tsx +++ b/src/components/header.tsx @@ -2,6 +2,7 @@ import { Link } from 'gatsby'; import React from 'react'; import logoLight from '../images/logos/nodejs-logo-light-mode.svg'; import logoDark from '../images/logos/nodejs-logo-dark-mode.svg'; +import DarkModeController from '../util/DarkModeController'; const activeStyleTab = { fontWeight: 'var(--font-weight-semibold)', @@ -9,7 +10,11 @@ const activeStyleTab = { borderBottom: 'var(--space-04) inset var(--color-text-accent)', }; -const Header = () => ( +interface Props { + darkModeController?: DarkModeController; +} + +const Header = ({ darkModeController }: Props) => (