Skip to content

Commit bcb6ef4

Browse files
authored
update docs styling: mobile ver. + components (#912)
1 parent b10d4a9 commit bcb6ef4

44 files changed

Lines changed: 1486 additions & 711 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/package.json

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,5 @@
2020
"engines": {
2121
"node": ">=18.0.0",
2222
"npm": ">=8.0.0"
23-
},
24-
"dependencies": {
25-
"zod": "^3.24.3"
2623
}
2724
}

docs/view/astro.config.mjs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,7 @@ export default defineConfig({
2323
},
2424
},
2525
integrations: [
26-
mdx({
27-
rehypePlugins: [
28-
// rehype-mdx-code-props must run last according to docs
29-
],
30-
}),
26+
mdx(),
3127
react(),
3228
],
3329
vite: {
@@ -36,4 +32,13 @@ export default defineConfig({
3632
tailwindcss(),
3733
],
3834
},
35+
markdown: {
36+
shikiConfig: {
37+
themes: {
38+
light: "github-light",
39+
dark: "github-dark",
40+
},
41+
defaultColor: "light",
42+
},
43+
},
3944
});

docs/view/package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,17 @@
1717
"@types/react": "^19.1.8",
1818
"@types/react-dom": "^19.1.6",
1919
"astro": "^5.6.1",
20+
"clsx": "^2.1.1",
2021
"lucide-react": "^0.525.0",
2122
"react": "^19.1.0",
2223
"react-dom": "^19.1.0",
2324
"rehype-mdx-code-props": "^3.0.1",
2425
"sharp": "^0.34.2",
2526
"shiki": "^3.8.1",
27+
"tailwind-merge": "^3.3.1",
2628
"tailwindcss": "^4.0.7",
27-
"typescript": "^5.8.3"
29+
"typescript": "^5.8.3",
30+
"zod": "^3.24.3"
2831
},
2932
"devDependencies": {
3033
"@tailwindcss/typography": "^0.5.16"

docs/view/src/components/Header.astro

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

docs/view/src/components/Logo.tsx

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

docs/view/src/components/MarkdownCopySelect.tsx

Lines changed: 0 additions & 107 deletions
This file was deleted.
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
import { useEffect, useState } from "react";
2+
import decoLight from "../../assets/deco-light.svg?url";
3+
import decoDark from "../../assets/deco-dark.svg?url";
4+
5+
interface LogoProps {
6+
className?: string;
7+
width?: number;
8+
height?: number;
9+
}
10+
11+
export function Logo({ className = "", width = 68, height = 28 }: LogoProps) {
12+
const [isDark, setIsDark] = useState(false);
13+
const [isClient, setIsClient] = useState(false);
14+
15+
useEffect(() => {
16+
setIsClient(true);
17+
18+
const checkTheme = () => {
19+
const _html = document.documentElement;
20+
const savedTheme = localStorage.getItem("theme") || "auto";
21+
22+
let isDarkTheme = false;
23+
24+
if (savedTheme === "auto") {
25+
// Use system preference
26+
isDarkTheme =
27+
globalThis.matchMedia("(prefers-color-scheme: dark)").matches;
28+
} else {
29+
isDarkTheme = savedTheme === "dark";
30+
}
31+
32+
setIsDark(isDarkTheme);
33+
};
34+
35+
// Check initial theme
36+
checkTheme();
37+
38+
// Watch for theme changes
39+
const observer = new MutationObserver((mutations) => {
40+
mutations.forEach((mutation) => {
41+
if (
42+
mutation.type === "attributes" &&
43+
mutation.attributeName === "data-theme"
44+
) {
45+
checkTheme();
46+
}
47+
});
48+
});
49+
50+
observer.observe(document.documentElement, {
51+
attributes: true,
52+
attributeFilter: ["data-theme"],
53+
});
54+
55+
// Listen for system theme changes
56+
const mediaQuery = globalThis.matchMedia("(prefers-color-scheme: dark)");
57+
mediaQuery.addEventListener("change", checkTheme);
58+
59+
return () => {
60+
observer.disconnect();
61+
mediaQuery.removeEventListener("change", checkTheme);
62+
};
63+
}, []);
64+
65+
// Show light logo by default during SSR
66+
if (!isClient) {
67+
return (
68+
<div className={`relative ${className}`}>
69+
<img
70+
src={decoLight}
71+
alt="Deco"
72+
width={width}
73+
height={height}
74+
/>
75+
</div>
76+
);
77+
}
78+
79+
return (
80+
<div className={`relative ${className}`}>
81+
<img
82+
src={isDark ? decoDark : decoLight}
83+
alt="Deco"
84+
width={width}
85+
height={height}
86+
/>
87+
</div>
88+
);
89+
}

0 commit comments

Comments
 (0)