Skip to content

Commit 25117b2

Browse files
committed
detect the current UI theme on table load and update it when the system theme changes
1 parent bd26223 commit 25117b2

File tree

3 files changed

+42
-57
lines changed

3 files changed

+42
-57
lines changed

src/devtools/App.tsx

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,23 @@ import MainContent from "@/devtools/components/main-content/MainContent";
44
import { OriginContextProvider } from "@/devtools/components/origin-context";
55
import Sidebar from "@/devtools/components/sidebar/Sidebar";
66
import { SidebarContextProvider } from "@/devtools/components/sidebar/sidebar-context";
7-
import { ThemeContextProvider } from "@/devtools/utils/ui-theme-context";
87

98
import styles from "./App.module.css";
109

1110
function App() {
1211
return (
13-
<ThemeContextProvider>
14-
<div class={styles.app}>
15-
<OriginContextProvider>
16-
<IndexedDBContextProvider>
17-
<ActiveObjectStoreContextProvider>
18-
<SidebarContextProvider>
19-
<Sidebar />
20-
<MainContent />
21-
</SidebarContextProvider>
22-
</ActiveObjectStoreContextProvider>
23-
</IndexedDBContextProvider>
24-
</OriginContextProvider>
25-
</div>
26-
</ThemeContextProvider>
12+
<div class={styles.app}>
13+
<OriginContextProvider>
14+
<IndexedDBContextProvider>
15+
<ActiveObjectStoreContextProvider>
16+
<SidebarContextProvider>
17+
<Sidebar />
18+
<MainContent />
19+
</SidebarContextProvider>
20+
</ActiveObjectStoreContextProvider>
21+
</IndexedDBContextProvider>
22+
</OriginContextProvider>
23+
</div>
2724
);
2825
}
2926

src/devtools/components/main-content/object-store-view/Table.tsx

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,14 @@ import {
1010
SizeColumnsToContentStrategy,
1111
SizeColumnsToFitGridStrategy,
1212
} from "ag-grid-community";
13-
import { batch, createEffect, onCleanup, onMount, untrack } from "solid-js";
13+
import {
14+
batch,
15+
createEffect,
16+
createSignal,
17+
onCleanup,
18+
onMount,
19+
untrack,
20+
} from "solid-js";
1421
import { unwrap } from "solid-js/store";
1522

1623
import { useTableContext } from "@/devtools/components/main-content/object-store-view/table-context";
@@ -47,12 +54,11 @@ import {
4754
TableColumn,
4855
TableRow,
4956
} from "@/devtools/utils/types";
50-
import { useTheme } from "@/devtools/utils/ui-theme-context";
5157

5258
import styles from "./Table.module.css";
5359

5460
export default function Table(props: TableProps) {
55-
const { theme } = useTheme();
61+
const theme = createThemeSignal();
5662
let gridApi: GridApi;
5763
let tableContainer: HTMLDivElement;
5864

@@ -322,6 +328,27 @@ export default function Table(props: TableProps) {
322328
);
323329
}
324330

331+
function createThemeSignal() {
332+
const darkThemeQuery = window.matchMedia("(prefers-color-scheme: dark)");
333+
const [theme, setTheme] = createSignal<"light" | "dark">(
334+
darkThemeQuery.matches ? "dark" : "light",
335+
);
336+
337+
const onChange = (event: MediaQueryListEvent) => {
338+
const systemTheme = event.matches ? "dark" : "light";
339+
console.log("systemTheme", systemTheme);
340+
setTheme(systemTheme);
341+
};
342+
onMount(() => {
343+
darkThemeQuery.addEventListener("change", onChange);
344+
});
345+
onCleanup(() => {
346+
darkThemeQuery.removeEventListener("change", onChange);
347+
});
348+
349+
return theme;
350+
}
351+
325352
interface TableProps {
326353
columns: TableColumn[];
327354
rows: TableRow[];

src/devtools/utils/ui-theme-context.tsx

Lines changed: 0 additions & 39 deletions
This file was deleted.

0 commit comments

Comments
 (0)