Skip to content

Commit d1faba8

Browse files
committed
Provide a template page
1 parent b4f7e75 commit d1faba8

File tree

3 files changed

+82
-62
lines changed

3 files changed

+82
-62
lines changed

plugins/interface/components/theme/ThemeSelector.tsx

Lines changed: 36 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -3,64 +3,45 @@ import { cn } from '../../utils/index'
33
// import { Moon, Sun } from '@phosphor-icons/react'
44
import { useState } from 'hono/jsx'
55

6-
// type ThemeSelectorProps = {
7-
// onClick: () => void
8-
// theme: 'light' | 'dark'
9-
// }
10-
11-
const ThemeSelector = () =>
12-
// { onClick, theme }: ThemeSelectorProps
13-
{
14-
const [theme, setTheme] = useState<'dark' | 'light'>(() => {
15-
if (typeof window !== 'undefined') {
16-
const stored = document.cookie
17-
.split('; ')
18-
.find((row) => row.startsWith('theme='))
19-
?.split('=')[1] as 'light' | 'dark'
20-
return stored || 'light'
21-
}
22-
return 'light'
23-
})
6+
const ThemeSelector = () => {
7+
const [theme, setTheme] = useState<'dark' | 'light'>(() => {
8+
if (typeof window !== 'undefined') {
9+
const stored = document.cookie
10+
.split('; ')
11+
.find((row) => row.startsWith('theme='))
12+
?.split('=')[1] as 'light' | 'dark'
13+
return stored || 'light'
14+
}
15+
return 'light'
16+
})
2417

25-
useTheme(theme)
18+
useTheme(theme)
2619

27-
const toggleTheme = () => {
28-
setTheme((prevTheme) => (prevTheme === 'dark' ? 'light' : 'dark'))
29-
}
20+
const toggleTheme = () => {
21+
setTheme((prevTheme) => (prevTheme === 'dark' ? 'light' : 'dark'))
22+
}
3023

31-
return (
32-
<button
33-
className="flex size-8 cursor-pointer items-center justify-center rounded-md hover:bg-neutral-200/60 dark:hover:bg-neutral-900"
34-
onClick={() => toggleTheme()}
24+
return (
25+
<button
26+
className="flex cursor-pointer items-center justify-center rounded-md hover:bg-neutral-200/60 dark:hover:bg-neutral-900"
27+
onClick={() => toggleTheme()}
28+
>
29+
<div
30+
className={cn('hidden', {
31+
'animate-fade block': theme === 'dark',
32+
})}
3533
>
36-
<div
37-
className={cn('hidden', {
38-
'animate-fade block': theme === 'dark',
39-
})}
40-
>
41-
Moon
42-
</div>
43-
<div
44-
className={cn('animate-fade block', {
45-
hidden: theme === 'dark',
46-
})}
47-
>
48-
Sun
49-
</div>
50-
{/* <Moon
51-
weight="bold"
52-
className={cn('hidden', {
53-
'animate-fade block': theme === 'dark',
54-
})}
55-
/>
56-
<Sun
57-
weight="bold"
58-
className={cn('animate-fade block', {
59-
hidden: theme === 'dark',
60-
})}
61-
/> */}
62-
</button>
63-
)
64-
}
34+
Dark
35+
</div>
36+
<div
37+
className={cn('animate-fade block', {
38+
hidden: theme === 'dark',
39+
})}
40+
>
41+
Light
42+
</div>
43+
</button>
44+
)
45+
}
6546

6647
export default ThemeSelector
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import { StrictMode } from 'hono/jsx'
2+
import { hydrateRoot } from 'hono/jsx/dom/client'
3+
4+
import { Button } from '@interface/components/button/Button'
5+
import { Label } from '@interface/components/label/Label'
6+
import { Input } from '@interface/components/input/Input'
7+
import { Avatar } from '@interface/components/avatar'
8+
import { Card } from '@interface/components/card'
9+
import { Select } from '@interface/components/select'
10+
import { Toggle } from '@interface/components/toggle'
11+
import ThemeSelector from '@interface/components/theme/ThemeSelector'
12+
13+
const root = document.querySelector(
14+
'#root[data-client="template"]'
15+
) as HTMLElement
16+
17+
type ServerProps = {}
18+
19+
// Get server props from the data attribute
20+
const serverProps = root
21+
? (JSON.parse(root.dataset.serverProps || '{}') as ServerProps)
22+
: ({} as ServerProps)
23+
24+
if (root) {
25+
hydrateRoot(
26+
root,
27+
<StrictMode>
28+
<Template {...serverProps} />
29+
</StrictMode>
30+
)
31+
}
32+
33+
function Template({}: ServerProps) {
34+
return (
35+
<section>
36+
<h1>Template Page</h1>
37+
</section>
38+
)
39+
}

public/.vite/manifest.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"imports": ["_vendor.BvOnseLb.js"]
66
},
77
"_global.!~{008}~.js": {
8-
"file": "assets/global.BTh_2Mw6.css",
8+
"file": "assets/global.BuEUFxXj.css",
99
"src": "_global.!~{008}~.js"
1010
},
1111
"_vendor.BvOnseLb.js": {
@@ -20,28 +20,28 @@
2020
"imports": ["_components.Bua98qd2.js", "_vendor.BvOnseLb.js"]
2121
},
2222
"plugins/interface/pages/home/index.tsx": {
23-
"file": "assets/home.BQILdUQ8.js",
23+
"file": "assets/home.Bgj4-SAu.js",
2424
"name": "home",
2525
"src": "plugins/interface/pages/home/index.tsx",
2626
"isEntry": true,
2727
"imports": ["_components.Bua98qd2.js", "_vendor.BvOnseLb.js"],
28-
"css": ["assets/global.BTh_2Mw6.css"]
28+
"css": ["assets/global.BuEUFxXj.css"]
2929
},
3030
"plugins/interface/pages/page1/index.tsx": {
31-
"file": "assets/page1.CaXqYoXy.js",
31+
"file": "assets/page1.CdyEBqge.js",
3232
"name": "page1",
3333
"src": "plugins/interface/pages/page1/index.tsx",
3434
"isEntry": true,
3535
"imports": ["_components.Bua98qd2.js", "_vendor.BvOnseLb.js"],
36-
"css": ["assets/global.BTh_2Mw6.css"]
36+
"css": ["assets/global.BuEUFxXj.css"]
3737
},
3838
"plugins/interface/pages/page2/index.tsx": {
39-
"file": "assets/page2.BMvixpAs.js",
39+
"file": "assets/page2.BVDjxAx2.js",
4040
"name": "page2",
4141
"src": "plugins/interface/pages/page2/index.tsx",
4242
"isEntry": true,
4343
"imports": ["_components.Bua98qd2.js", "_vendor.BvOnseLb.js"],
44-
"css": ["assets/global.BTh_2Mw6.css"]
44+
"css": ["assets/global.BuEUFxXj.css"]
4545
},
4646
"plugins/interface/pages/template/index.tsx": {
4747
"file": "assets/template.Ck87uEDC.js",

0 commit comments

Comments
 (0)