From 57185d21f8c85ad5063a420a12072b7d39e9e77c Mon Sep 17 00:00:00 2001
From: "Thomas F. K. Jorna" <hello@tefkah.com>
Date: Wed, 6 Oct 2021 04:11:14 +0200
Subject: feat: theme selector

---
 components/Tweaks/ThemeSelect.tsx | 57 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)
 create mode 100644 components/Tweaks/ThemeSelect.tsx

(limited to 'components/Tweaks/ThemeSelect.tsx')

diff --git a/components/Tweaks/ThemeSelect.tsx b/components/Tweaks/ThemeSelect.tsx
new file mode 100644
index 0000000..e56d48d
--- /dev/null
+++ b/components/Tweaks/ThemeSelect.tsx
@@ -0,0 +1,57 @@
+import React, { useContext } from 'react'
+import {
+  Box,
+  Button,
+  Flex,
+  Menu,
+  MenuButton,
+  MenuItem,
+  MenuList,
+  Portal,
+  Text,
+} from '@chakra-ui/react'
+
+import { themes } from '../themes'
+import { ChevronDownIcon } from '@chakra-ui/icons'
+import { ThemeContext } from '../../util/themecontext'
+
+export const ThemeSelect = () => {
+  type Theme = { [key: string]: string }
+  const { emacsTheme, setEmacsTheme, highlightColor } = useContext(ThemeContext)
+  return (
+    <Flex alignItems="center" justifyContent="space-between" pl={7}>
+      <Text>Theme</Text>
+      <Menu isLazy placement="bottom" closeOnSelect={false}>
+        <MenuButton as={Button} colorScheme="" color="black" rightIcon={<ChevronDownIcon />}>
+          {emacsTheme[0]}
+        </MenuButton>
+        <MenuList minW={10} zIndex="popover" bgColor="gray.200">
+          <MenuItem
+            onClick={() => ''}
+            justifyContent="space-between"
+            alignItems="center"
+            display="flex"
+          >
+            <Box height={6} width={6}></Box>
+          </MenuItem>
+          {Object.keys(themes).map((theme: string, i: number) => (
+            <MenuItem
+              key={theme}
+              onClick={() => setEmacsTheme([theme, themes[theme]])}
+              justifyContent="space-between"
+              alignItems="center"
+              display="flex"
+            >
+              <Text>{theme}</Text>
+              <Flex height={6} width={20} flexDirection="column" flexWrap="wrap">
+                {Object.values(themes[theme as string]).map((color: string) => {
+                  return <Box key={color} bgColor={color} flex="1 1 8px"></Box>
+                })}
+              </Flex>
+            </MenuItem>
+          ))}
+        </MenuList>
+      </Menu>
+    </Flex>
+  )
+}
-- 
cgit v1.2.3

