Skip to content

Commit 1ba84b5

Browse files
committed
feat: add dark mode switcher
fixes #30
1 parent 93e8c38 commit 1ba84b5

File tree

4 files changed

+26
-47
lines changed

4 files changed

+26
-47
lines changed

src/components/Header.tsx

+3-30
Original file line numberDiff line numberDiff line change
@@ -2,36 +2,7 @@ import { Link } from "react-router-dom";
22
import { SidebarTrigger } from "./ui/sidebar";
33
import { Separator } from "./ui/separator";
44
import { HoverPopover } from "./HoverPopover";
5-
6-
// function HeaderMenuItem({ children }: { children: React.ReactNode }) {
7-
// return (
8-
// <div className="text-black hover:text-gray-800 font-semibold cursor-pointer text-base px-2 py-1 rounded-md hover:bg-brand-50 transition-colors">
9-
// {children}
10-
// </div>
11-
// );
12-
// }
13-
14-
// function DropdownMenu({ children }: { children: React.ReactNode }) {
15-
// return (
16-
// <div className="absolute right-0 top-full mt-2 w-56 bg-base rounded-lg shadow-lg opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200 z-50 border border-gray-100">
17-
// <div className="py-1">{children}</div>
18-
// </div>
19-
// );
20-
// }
21-
22-
// function DropdownMenuItem({
23-
// children,
24-
// to,
25-
// }: {
26-
// to: string;
27-
// children: React.ReactNode;
28-
// }) {
29-
// return (
30-
// <Link to={to} className="block px-5 py-3 text-gray-700 hover:bg-brand-50">
31-
// {children}
32-
// </Link>
33-
// );
34-
// }
5+
import { ButtonDarkMode } from "@stacklok/ui-kit";
356

367
export function Header({ hasError }: { hasError?: boolean }) {
378
return (
@@ -97,6 +68,8 @@ export function Header({ hasError }: { hasError?: boolean }) {
9768
</a>
9869
</div>
9970
</div>
71+
72+
<ButtonDarkMode />
10073
</div>
10174
</header>
10275
);

src/components/__tests__/ErrorBoundary.test.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { render } from "@/lib/test-utils";
21
import { screen } from "@testing-library/react";
32
import { describe, expect, it, vi } from "vitest";
43
import ErrorBoundary from "../ErrorBoundary";
54
import { Error } from "../Error";
5+
import { render } from "@/lib/test-utils";
66

77
const ErrorComponent = () => {
88
throw Error();

src/lib/test-utils.tsx

+11-8
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { SidebarProvider } from "@/components/ui/sidebar";
2+
import { DarkModeProvider } from "@stacklok/ui-kit";
23
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
34
import { RenderOptions, render } from "@testing-library/react";
45
import React from "react";
@@ -31,14 +32,16 @@ const renderWithProviders = (
3132
})
3233
}
3334
>
34-
<MemoryRouter {...options?.routeConfig}>
35-
<Routes>
36-
<Route
37-
path={options?.pathConfig ?? "*"}
38-
element={<SidebarProvider>{children}</SidebarProvider>}
39-
/>
40-
</Routes>
41-
</MemoryRouter>
35+
<DarkModeProvider>
36+
<MemoryRouter {...options?.routeConfig}>
37+
<Routes>
38+
<Route
39+
path={options?.pathConfig ?? "*"}
40+
element={<SidebarProvider>{children}</SidebarProvider>}
41+
/>
42+
</Routes>
43+
</MemoryRouter>
44+
</DarkModeProvider>
4245
</QueryClientProvider>,
4346
);
4447

src/main.tsx

+11-8
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
11
import { StrictMode } from "react";
22
import { createRoot } from "react-dom/client";
33
import "./index.css";
4-
import '@stacklok/ui-kit/style'
4+
import "@stacklok/ui-kit/style";
55
import App from "./App.tsx";
66
import { BrowserRouter } from "react-router-dom";
77
import { SidebarProvider } from "./components/ui/sidebar.tsx";
88
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
99
import ErrorBoundary from "./components/ErrorBoundary.tsx";
1010
import { Error } from "./components/Error.tsx";
11+
import { DarkModeProvider } from "@stacklok/ui-kit";
1112

1213
createRoot(document.getElementById("root")!).render(
1314
<StrictMode>
1415
<BrowserRouter>
15-
<SidebarProvider>
16-
<ErrorBoundary fallback={<Error />}>
17-
<QueryClientProvider client={new QueryClient()}>
18-
<App />
19-
</QueryClientProvider>
20-
</ErrorBoundary>
21-
</SidebarProvider>
16+
<DarkModeProvider>
17+
<SidebarProvider>
18+
<ErrorBoundary fallback={<Error />}>
19+
<QueryClientProvider client={new QueryClient()}>
20+
<App />
21+
</QueryClientProvider>
22+
</ErrorBoundary>
23+
</SidebarProvider>
24+
</DarkModeProvider>
2225
</BrowserRouter>
2326
</StrictMode>
2427
);

0 commit comments

Comments
 (0)