1- import { Stack } from "@stackflow/demo" ;
1+ import type { StackComponentType } from "@stackflow/react" ;
2+ import dynamic from "next/dynamic" ;
3+ import { useEffect , useState } from "react" ;
24import { useSimpleReveal } from "simple-reveal" ;
35
4- const Demo : React . FC = ( ) => {
6+ // @ts -ignore
7+ const SolidDemoRenderer = dynamic ( ( ) => import ( "#solid-demo-renderer" ) , {
8+ ssr : false ,
9+ } ) ;
10+
11+ const Demo : React . FC < { variants : ( "react" | "solid" ) [ ] } > = ( {
12+ variants = [ "react" ] ,
13+ } ) => {
14+ const [ Stack , setStack ] = useState < StackComponentType | null > ( null ) ;
515 const { cn, ref, style } = useSimpleReveal ( {
616 delay : 200 ,
717 initialTransform : "scale(0.95)" ,
818 } ) ;
19+
20+ useEffect ( ( ) => {
21+ if ( variants . includes ( "react" ) && ! Stack ) {
22+ import ( "@stackflow/demo" ) . then ( ( { Stack } ) => {
23+ setStack ( Stack ) ;
24+ } ) ;
25+ }
26+ } , [ variants ] ) ;
927 return (
1028 < div
1129 ref = { ref }
@@ -14,40 +32,68 @@ const Demo: React.FC = () => {
1432 position : "relative" ,
1533 width : "100%" ,
1634 display : "flex" ,
17- justifyContent : "center" ,
18- margin : "3rem 0" ,
35+ flexWrap : "wrap" ,
36+ justifyContent : "space-evenly" ,
37+ margin : "2rem 0" ,
1938 ...style ,
2039 } }
2140 >
22- < div
23- style = { {
24- width : "100%" ,
25- maxWidth : "360px" ,
26- height : "640px" ,
27- position : "relative" ,
28- borderRadius : ".5rem" ,
29- boxShadow : "0 .25rem 1rem 0 rgba(0, 0, 0, .1)" ,
30- } }
31- >
41+ { variants . map ( ( variant ) => (
3242 < div
43+ key = { variant }
3344 style = { {
3445 width : "100%" ,
3546 maxWidth : "360px" ,
36- height : "640px " ,
37- position : "relative " ,
38- borderRadius : ".5rem " ,
39- overflow : "hidden " ,
40- transform : "translate3d(0, 0, 0) " ,
41- maskImage : "-webkit-radial-gradient(white, black) " ,
47+ margin : "1rem 0 " ,
48+ display : "flex " ,
49+ flexDirection : "column " ,
50+ alignItems : "center " ,
51+ gap : "1rem " ,
52+ color : "#777 " ,
4253 } }
4354 >
44- < Stack
45- initialContext = { {
46- theme : "cupertino" ,
55+ < div
56+ style = { {
57+ width : "100%" ,
58+ height : "640px" ,
59+ position : "relative" ,
60+ borderRadius : ".5rem" ,
61+ boxShadow : "0 .25rem 1rem 0 rgba(0, 0, 0, .1)" ,
4762 } }
48- />
63+ >
64+ < div
65+ style = { {
66+ width : "100%" ,
67+ maxWidth : "360px" ,
68+ height : "640px" ,
69+ position : "relative" ,
70+ borderRadius : ".5rem" ,
71+ overflow : "hidden" ,
72+ transform : "translate3d(0, 0, 0)" ,
73+ maskImage : "-webkit-radial-gradient(white, black)" ,
74+ } }
75+ >
76+ { variant === "react" ? (
77+ Stack && (
78+ < Stack
79+ initialContext = { {
80+ theme : "cupertino" ,
81+ } }
82+ />
83+ )
84+ ) : (
85+ < SolidDemoRenderer />
86+ ) }
87+ </ div >
88+ </ div >
89+ {
90+ {
91+ react : "React" ,
92+ solid : "Solid" ,
93+ } [ variant ]
94+ }
4995 </ div >
50- </ div >
96+ ) ) }
5197 </ div >
5298 ) ;
5399} ;
0 commit comments