mirror of
https://github.com/hanzoai/shadcn.git
synced 2026-10-30 18:22:59 +00:00
Upstream sync from shadcn-ui/ui (1686 commits since last merge base). Key changes: - packages/shadcn upgraded to 4.1.0 (CLI font transformers, scaffold from github, chart colors) - apps/v4 replaces apps/www as the primary docs/registry app - Font system: 25+ heading font registries, font markers utility, @supports override - Chart improvements: recharts v3 compat, radial chart fixes - templates/ updated with monorepo variants (astro, vite, react-router, start) - skills/shadcn AI skill definitions added - deprecated/ removed (auth, auth-firebase, cli, www) Preserved Hanzo-only paths: app/, pkg/, demo/, docs/, template/next/
39 lines
915 B
TypeScript
39 lines
915 B
TypeScript
"use client"
|
|
|
|
import * as React from "react"
|
|
import { useRouter } from "next/navigation"
|
|
import { generateRandomPreset, isPresetCode } from "shadcn/preset"
|
|
|
|
import { useDesignSystemSearchParams } from "@/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
|
|
}
|