39 lines
921 B
TypeScript
39 lines
921 B
TypeScript
"use client"
|
|
|
|
import * as React from "react"
|
|
import { useRouter } from "next/navigation"
|
|
import { generateRandomPreset, isPresetCode } from "shadcn/preset"
|
|
|
|
import { useDesignSystemSearchParams } from "@/app/(app)/(create)/lib/search-params"
|
|
|
|
export function PresetHandler() {
|
|
const router = useRouter()
|
|
const [params, setParams] = useDesignSystemSearchParams()
|
|
const hasConverted = React.useRef(false)
|
|
|
|
React.useEffect(() => {
|
|
if (params.preset === "random") {
|
|
router.replace(`/create?preset=${generateRandomPreset()}`)
|
|
}
|
|
}, [params.preset, router])
|
|
|
|
React.useEffect(() => {
|
|
if (hasConverted.current) {
|
|
return
|
|
}
|
|
hasConverted.current = true
|
|
|
|
if (!params.preset || params.preset === "random") {
|
|
return
|
|
}
|
|
|
|
if (isPresetCode(params.preset)) {
|
|
return
|
|
}
|
|
|
|
setParams({ base: params.base })
|
|
}, [params.preset, params.base, setParams])
|
|
|
|
return null
|
|
}
|