Skip to content
This repository was archived by the owner on Jul 23, 2024. It is now read-only.

Commit 9b4b4a5

Browse files
committed
created toggleable dark theme
1 parent 69634df commit 9b4b4a5

File tree

7 files changed

+544
-6
lines changed

7 files changed

+544
-6
lines changed

.devcontainer/docker-compose.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@ services:
77
dockerfile: Dockerfile.backend
88
volumes:
99
- ..:/workspace:z
10-
command: sleep infinity
10+
command: cargo run --manifest-path /workspace/backend/Cargo.toml --release -p pin_packing serve --database-url postgres://postgres:password@postgres/pin_packing
1111
environment:
1212
OPA_URL: http://opa:8181
1313
DATABASE_URL: postgres://postgres:password@postgres
1414
RABBITMQ_URL: amqp://rabbitmq:password@rabbitmq
15+
ports:
16+
- "8080:80"
1517

1618
frontend:
1719
build:

frontend/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,9 @@
9191
"graphql": "^16.3.0",
9292
"http-proxy-middleware": "^2.0.6",
9393
"react": "^18.2.0",
94-
"react-dom": "^18.2.0"
94+
"react-dom": "^18.2.0",
95+
"react-helmet": "^6.1.0",
96+
"react-toggle-dark-mode": "^1.1.1"
9597
},
9698
"jest": {
9799
"roots": [

frontend/src/App.tsx

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1+
/* eslint-disable no-template-curly-in-string */
12
import { useQuery } from "@apollo/client";
23
import { gql } from './__generated__/gql';
34
import React from "react";
4-
import { theme } from "@diamondlightsource/ui-components"
5-
import { ChakraProvider, Alert, AlertIcon, AlertTitle, AlertDescription, Button, HStack } from "@chakra-ui/react";
5+
import { theme } from "./styles/theme"
6+
import { ChakraProvider, Alert, AlertIcon, AlertTitle, AlertDescription, Button, HStack, useColorMode } from "@chakra-ui/react";
67
import { Table } from "./components/Table";
8+
import {Helmet} from 'react-helmet';
9+
import { DarkModeSwitch } from 'react-toggle-dark-mode';
710

811
const GET_INFO = gql(`
912
query pinInfo ($after: String) {
@@ -34,7 +37,16 @@ function DisplayPinInfo(): React.JSX.Element {
3437
notifyOnNetworkStatusChange: true,
3538
});
3639

40+
//const [isDarkMode, setDarkMode] = React.useState(false);
41+
42+
/* const toggleDarkMode = (checked: boolean) => {
43+
setDarkMode(checked);
44+
};*/
45+
46+
const { colorMode, toggleColorMode } = useColorMode()
47+
3748
var loadingRows = loading ? 2 : 0
49+
var bgColour = colorMode === 'dark' ? "black" : "white"
3850

3951
if (error) return (
4052
<Alert status='error'>
@@ -77,6 +89,16 @@ function DisplayPinInfo(): React.JSX.Element {
7789

7890
return (
7991
<>
92+
<div>
93+
<DarkModeSwitch
94+
style={{ marginBottom: '1rem', marginLeft: '.25rem', marginTop: '.25rem', position: 'relative', left: '1875px'}}
95+
checked={colorMode === 'dark'}
96+
onChange={toggleColorMode}
97+
size={30}
98+
/>
99+
<Helmet>
100+
<style>{`body { background-color: ${bgColour} }`}</style>
101+
</Helmet>
80102
<Table
81103
headers={[
82104
{
@@ -97,9 +119,10 @@ function DisplayPinInfo(): React.JSX.Element {
97119
]}
98120
data={data ? data.libraryPins.edges.map((edge) => edge.node): []}
99121
loadingRows={loadingRows}
122+
rowVariant={"diamondStriped"}
100123
/>
101124
<HStack justify='center' width='100%'>
102-
<Button
125+
<Button marginTop={'10px'}
103126
colorScheme='teal'
104127
variant='outline'
105128
onClick={loadMore}
@@ -110,6 +133,7 @@ function DisplayPinInfo(): React.JSX.Element {
110133
Load More
111134
</Button>
112135
</HStack>
136+
</div>
113137
</>
114138
);
115139
}

frontend/src/styles/colours.tsx

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
const colours = {
2+
diamond: {
3+
50: { default: "#FBFBFB", _dark: "#525151" },
4+
75: "#F7F7F7",
5+
100: { default: "#E7ECEF", _dark: "#383838" },
6+
200: { default: "#CBD5E0", _dark: "#030303" },
7+
300: "#39435E",
8+
400: "#9BBBFA",
9+
500: "#fcd021",
10+
600: "#385BBD",
11+
700: "#1040A1",
12+
800: "#001d55",
13+
1000: { default: "#faf7f7", _dark: "#030303" },
14+
2000: { default: "#19191a", _dark: "#d7d8d9" },
15+
3000: { default: "#303030", _dark: "#d7d8d9" },
16+
},
17+
};
18+
19+
const fillColours = ["#ff5733", "#19D3FF", "#FF9B40", "#FF2677", "#FF9B40"];
20+
21+
const getFillColour = (j: number) => fillColours[j % fillColours.length];
22+
23+
export { colours, getFillColour };

0 commit comments

Comments
 (0)