1- import { createContext , useContext , useState , type ReactNode } from "react" ;
21import {
32 Sheet ,
43 SheetContent ,
@@ -7,20 +6,7 @@ import {
76} from "@/components/ui/sheet" ;
87import { Skeleton } from "@/components/ui/skeleton" ;
98import { useNomenclature } from "@/hooks/use-nomenclature" ;
10-
11- const NomenclatureDrawerContext = createContext <
12- ( ( name : string ) => void ) | null
13- > ( null ) ;
14-
15- function useNomenclatureDrawer ( ) {
16- const open = useContext ( NomenclatureDrawerContext ) ;
17- if ( ! open ) {
18- throw new Error (
19- "useNomenclatureDrawer must be used within a NomenclatureDrawerProvider" ,
20- ) ;
21- }
22- return open ;
23- }
9+ import { useSchemaStore } from "@/store/schema-store" ;
2410
2511function NomenclatureHeader ( { name } : { name : string } ) {
2612 const { data, isPending } = useNomenclature ( name ) ;
@@ -86,37 +72,36 @@ function NomenclatureContent({ name }: { name: string }) {
8672 ) ;
8773}
8874
89- export function NomenclatureDrawerProvider ( {
90- children,
91- } : {
92- children : ReactNode ;
93- } ) {
94- const [ name , setName ] = useState < string | null > ( null ) ;
75+ export function NomenclatureDrawer ( ) {
76+ const name = useSchemaStore ( ( s ) => s . nomenclatureDrawerName ) ;
77+ const closeNomenclatureDrawer = useSchemaStore (
78+ ( s ) => s . closeNomenclatureDrawer ,
79+ ) ;
9580
9681 return (
97- < NomenclatureDrawerContext . Provider value = { setName } >
98- { children }
99- < Sheet open = { name !== null } onOpenChange = { ( open ) => ! open && setName ( null ) } >
100- < SheetContent className = { "w-full max-w-4xl!" } >
101- < SheetHeader className = "border-b" > { name && < NomenclatureHeader name = { name } /> } </ SheetHeader >
102- < div className = "min-h-0 flex-1 overflow-y-auto w-full" >
103- { name && < NomenclatureContent name = { name } /> }
104- </ div >
105- </ SheetContent >
106- </ Sheet >
107- </ NomenclatureDrawerContext . Provider >
82+ < Sheet
83+ open = { name !== null }
84+ onOpenChange = { ( open ) => ! open && closeNomenclatureDrawer ( ) }
85+ >
86+ < SheetContent className = { "w-full max-w-4xl!" } >
87+ < SheetHeader className = "border-b" > { name && < NomenclatureHeader name = { name } /> } </ SheetHeader >
88+ < div className = "min-h-0 flex-1 overflow-y-auto w-full" >
89+ { name && < NomenclatureContent name = { name } /> }
90+ </ div >
91+ </ SheetContent >
92+ </ Sheet >
10893 ) ;
10994}
11095
11196export function NomenclatureBadge ( { name } : { name : string } ) {
112- const open = useNomenclatureDrawer ( ) ;
97+ const openNomenclatureDrawer = useSchemaStore ( ( s ) => s . openNomenclatureDrawer ) ;
11398
11499 return (
115100 < button
116101 type = "button"
117102 onClick = { ( e ) => {
118103 e . stopPropagation ( ) ;
119- open ( name ) ;
104+ openNomenclatureDrawer ( name ) ;
120105 } }
121106 className = "rounded bg-primary px-1.5 py-0.5 font-mono text-xs text-primary-foreground hover:bg-primary/90"
122107 >
0 commit comments