@@ -85,31 +85,68 @@ export default factory(function Example({
8585 dimensions . height = '600px' ;
8686 }
8787
88+ const isFullscreen = icache . get ( 'isFullscreen' ) ;
89+ const isCodeShowing = icache . getOrSet ( 'isCodeShowing' , true ) ;
90+
8891 return (
8992 < div >
9093 { isOverview && < div innerHTML = { widgetReadme } /> }
9194 { isOverview && < HorizontalRule /> }
9295 < h2 classes = "text-2xl h mb-4" > { example . title || 'Example' } </ h2 >
93- < div classes = "bg-white rounded-t-lg overflow-hidden border-b-0 border-t border-l border-r border-gray-400 p-4" >
94- { example . sandbox ? (
95- < iframe
96- src = { `?cacheBust=${ widgetName } -${
97- example . filename
98- } -${ themeName } #widget/${ widgetName } /sandbox/${ example . filename . toLowerCase ( ) } ?theme=${ themeName } `}
99- classes = "w-full iframe"
100- styles = { dimensions }
101- />
102- ) : (
103- < div key = "example-container" styles = { example . size ? dimensions : { } } >
104- < example . module />
105- </ div >
106- ) }
107- </ div >
108- < div classes = "rounded-b-lg bg-gray-800" >
109- < pre classes = "bg-blue-900 language-ts rounded px-4 py-4" >
110- < code classes = "language-ts" innerHTML = { widgetExample } />
111- </ pre >
96+ < div
97+ classes = { `bg-white overflow-hidden border-t border-l border-r border-gray-400 ${
98+ ! isCodeShowing ? 'border-b' : 'border-b-0'
99+ } ${ isFullscreen ? 'fixed top-0 left-0 w-screen h-screen z-50' : 'rounded-t-lg' } `}
100+ >
101+ < div
102+ classes = { `border border-gray-400 border-t-0 border-l-0 border-r-0 flex justify-end ${
103+ isFullscreen ? 'p-6' : 'px-4 py-2'
104+ } `}
105+ >
106+ < button
107+ classes = { `border-0 appearance-none bg-transparent cursor-pointer p-0 ${
108+ isFullscreen ? 'text-black mr-6' : 'text-gray-500 mr-4'
109+ } `}
110+ onclick = { ( ) => icache . set ( 'isFullscreen' , ! isFullscreen ) }
111+ >
112+ { isFullscreen ? (
113+ < i class = "fas fa-compress-alt" > </ i >
114+ ) : (
115+ < i class = "fas fa-expand-alt" > </ i >
116+ ) }
117+ </ button >
118+ < button
119+ classes = { `border-0 appearance-none bg-transparent cursor-pointer p-0 ${
120+ isCodeShowing ? 'text-black' : 'text-gray-500'
121+ } `}
122+ onclick = { ( ) => icache . set ( 'isCodeShowing' , ! isCodeShowing ) }
123+ >
124+ < i class = "fas fa-code" > </ i >
125+ </ button >
126+ </ div >
127+ < div classes = "p-4" >
128+ { example . sandbox ? (
129+ < iframe
130+ src = { `?cacheBust=${ widgetName } -${
131+ example . filename
132+ } -${ themeName } #widget/${ widgetName } /sandbox/${ example . filename . toLowerCase ( ) } ?theme=${ themeName } `}
133+ classes = "w-full iframe"
134+ styles = { dimensions }
135+ />
136+ ) : (
137+ < div key = "example-container" styles = { example . size ? dimensions : { } } >
138+ < example . module />
139+ </ div >
140+ ) }
141+ </ div >
112142 </ div >
143+ { isCodeShowing && (
144+ < div classes = "rounded-b-lg bg-gray-800" >
145+ < pre classes = "bg-blue-900 language-ts rounded px-4 py-4" >
146+ < code classes = "language-ts" innerHTML = { widgetExample } />
147+ </ pre >
148+ </ div >
149+ ) }
113150 { codesandboxPath && (
114151 < div classes = "my-4" >
115152 < a href = { codesandboxPath } >
0 commit comments