File tree Expand file tree Collapse file tree 3 files changed +53
-0
lines changed
packages/json-table-schema-visualizer
src/components/ThemeToggler Expand file tree Collapse file tree 3 files changed +53
-0
lines changed Original file line number Diff line number Diff line change 66 "dependencies" : {
77 "eventemitter3" : " ^5.0.1" ,
88 "konva" : " ^9.3.6" ,
9+ "lucide-react" : " ^0.365.0" ,
910 "react" : " ^18.2.0" ,
1011 "react-dom" : " ^18.2.0" ,
1112 "react-konva" : " ^18.2.10" ,
Original file line number Diff line number Diff line change 1+ import ThemeToggler from "./ThemeToggler" ;
2+
3+ import type { Meta , StoryObj } from "@storybook/react" ;
4+
5+ import { Theme } from "@/types/theme" ;
6+
7+ const meta : Meta = {
8+ component : ThemeToggler ,
9+ title : "components/ThemeToggler" ,
10+ } ;
11+
12+ export default meta ;
13+
14+ type Story = StoryObj < typeof ThemeToggler > ;
15+
16+ export const TableStory : Story = {
17+ render : ( ) => (
18+ < div >
19+ < ThemeToggler />
20+ </ div >
21+ ) ,
22+ args : { theme : Theme . dark } ,
23+ } ;
Original file line number Diff line number Diff line change 1+ import { Moon , Sun } from "lucide-react" ;
2+
3+ import { Theme } from "@/types/theme" ;
4+ import { useThemeContext } from "@/hooks/theme" ;
5+
6+ const ThemeToggler = ( ) => {
7+ const { setTheme, theme } = useThemeContext ( ) ;
8+
9+ const handleThemeToggle = ( ) => {
10+ setTheme ( Theme . light === theme ? Theme . dark : Theme . light ) ;
11+ } ;
12+
13+ return (
14+ < button
15+ onClick = { handleThemeToggle }
16+ aria-label = "Change theme mode"
17+ title = "Change theme mode"
18+ className = "w-10 p-2 border rounded-lg shadow-lg dark:border-gray-300 active:scale-95 group hover:bg-gray-100 dark:hover:bg-gray-900 bg-gray-50 dark:bg-black"
19+ >
20+ < div className = "cursor-pointer" >
21+ < Sun className = "text-gray-600 dark:hidden group-hover:text-black dark:text-gray-300 group-hover:dark:text-white" />
22+
23+ < Moon className = "hidden text-gray-600 dark:block group-hover:text-black dark:text-gray-300 group-hover:dark:text-white" />
24+ </ div >
25+ </ button >
26+ ) ;
27+ } ;
28+
29+ export default ThemeToggler ;
You can’t perform that action at this time.
0 commit comments