11"use client" ;
22import { MainHomeLayout } from "@repo/web-ui/layout" ;
3- import React , { useState } from "react" ;
3+ import React , { useCallback , Suspense } from "react" ;
4+ import { useSearchParams , useRouter } from "next/navigation" ;
45import "./page.module.css" ;
56import QuizMarkdownEditor from "../components/markdown-editor" ;
67import ChatgptEditor from "../components/chatgpt-editor" ;
7- import TwitterEditor from "../components/twitter -editor" ;
8+ import XEditor from "../components/x -editor" ;
89
910import GradientEditor from "../components/gradient-editor" ;
1011import { CardSizeProvider } from "@repo/ui/context/CardSizeContext" ;
@@ -18,29 +19,45 @@ const tabs = [
1819 key : "chatgpt" ,
1920 label : "ChatGPT Card" ,
2021 } ,
21- // {
22- // key: "gradient",
23- // label: "Gradient Card",
24- // },
2522 {
26- key : "twitter" ,
27- label : "Twitter Card" ,
23+ key : "gradient" ,
24+ label : "Gradient Card" ,
25+ } ,
26+ {
27+ key : "x" ,
28+ label : "X Card" ,
2829 } ,
2930
3031] ;
3132
32- export default function Home ( ) {
33- const [ tab , setTab ] = useState ( "markdown" ) ;
33+ function HomeContent ( ) {
34+ const searchParams = useSearchParams ( ) ;
35+ const router = useRouter ( ) ;
36+
37+ const currentTab = searchParams . get ( "t" ) || "markdown" ;
38+
39+ const setTab = useCallback ( ( newTab : string ) => {
40+ const params = new URLSearchParams ( searchParams . toString ( ) ) ;
41+ params . set ( "t" , newTab ) ;
42+ router . push ( `?${ params . toString ( ) } ` ) ;
43+ } , [ searchParams , router ] ) ;
3444
3545 return (
36- < MainHomeLayout tab = { tab } tabs = { tabs } setTab = { setTab } >
46+ < MainHomeLayout tab = { currentTab } tabs = { tabs } setTab = { setTab } >
3747 < CardSizeProvider >
38- { tab === "markdown" ? < QuizMarkdownEditor /> : null }
39- { tab === "chatgpt" ? < ChatgptEditor /> : null }
40- { /* {tab === "gradient" ? <GradientEditor /> : null} */ }
41- { tab === "twitter" ? < TwitterEditor /> : null }
42-
48+ { currentTab === "markdown" ? < QuizMarkdownEditor /> : null }
49+ { currentTab === "chatgpt" ? < ChatgptEditor /> : null }
50+ { currentTab === "gradient" ? < GradientEditor /> : null }
51+ { currentTab === "x" ? < XEditor /> : null }
4352 </ CardSizeProvider >
4453 </ MainHomeLayout >
4554 ) ;
46- }
55+ }
56+
57+ export default function Home ( ) {
58+ return (
59+ < Suspense fallback = { < div > Loading...</ div > } >
60+ < HomeContent />
61+ </ Suspense >
62+ ) ;
63+ }
0 commit comments