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,30 +32,58 @@ 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- overflow : "hidden" ,
30- transform : "translate3d(0, 0, 0)" ,
31- maskImage : "-webkit-radial-gradient(white, black)" ,
32- boxShadow : "0 .25rem 1rem 0 rgba(0, 0, 0, .1)" ,
33- } }
34- >
35- < Stack
36- initialContext = { {
37- theme : "cupertino" ,
41+ { variants . map ( ( variant ) => (
42+ < div
43+ key = { variant }
44+ style = { {
45+ width : "100%" ,
46+ maxWidth : "360px" ,
47+ margin : "1rem 0" ,
48+ display : "flex" ,
49+ flexDirection : "column" ,
50+ alignItems : "center" ,
51+ gap : "1rem" ,
52+ color : "#777" ,
3853 } }
39- />
40- </ div >
54+ >
55+ < div
56+ style = { {
57+ width : "100%" ,
58+ height : "640px" ,
59+ position : "relative" ,
60+ borderRadius : ".5rem" ,
61+ overflow : "hidden" ,
62+ transform : "translate3d(0, 0, 0)" ,
63+ maskImage : "-webkit-radial-gradient(white, black)" ,
64+ boxShadow : "0 .25rem 1rem 0 rgba(0, 0, 0, .1)" ,
65+ } }
66+ >
67+ { variant === "react" ? (
68+ Stack && (
69+ < Stack
70+ initialContext = { {
71+ theme : "cupertino" ,
72+ } }
73+ />
74+ )
75+ ) : (
76+ < SolidDemoRenderer />
77+ ) }
78+ </ div >
79+ {
80+ {
81+ react : "React" ,
82+ solid : "Solid" ,
83+ } [ variant ]
84+ }
85+ </ div >
86+ ) ) }
4187 </ div >
4288 ) ;
4389} ;
0 commit comments