"use client" import * as React from "react" import { STYLES, type Preset } from "@/registry/config" import { Picker, PickerContent, PickerGroup, PickerRadioGroup, PickerRadioItem, PickerTrigger, } from "@/app/(app)/(create)/components/picker" import { useDesignSystemSearchParams } from "@/app/(app)/(create)/lib/search-params" export function PresetPicker({ presets, isMobile, anchorRef, }: { presets: readonly Preset[] isMobile: boolean anchorRef: React.RefObject }) { const [params, setParams] = useDesignSystemSearchParams() const currentPreset = React.useMemo(() => { return presets.find( (preset) => preset.base === params.base && preset.style === params.style && preset.baseColor === params.baseColor && preset.theme === params.theme && preset.chartColor === params.chartColor && preset.iconLibrary === params.iconLibrary && preset.font === params.font && preset.fontHeading === params.fontHeading && preset.menuAccent === params.menuAccent && preset.menuColor === params.menuColor && preset.radius === params.radius ) }, [ presets, params.base, params.style, params.baseColor, params.theme, params.chartColor, params.iconLibrary, params.font, params.fontHeading, params.menuAccent, params.menuColor, params.radius, ]) // Filter presets for current base only const currentBasePresets = React.useMemo(() => { return presets.filter((preset) => preset.base === params.base) }, [presets, params.base]) const handlePresetChange = (value: string) => { const preset = presets.find((p) => p.title === value) if (!preset) { return } // Update all params including base. setParams({ base: preset.base, style: preset.style, baseColor: preset.baseColor, theme: preset.theme, chartColor: preset.chartColor, iconLibrary: preset.iconLibrary, font: preset.font, fontHeading: preset.fontHeading, menuAccent: preset.menuAccent, menuColor: preset.menuColor, radius: preset.radius, custom: false, }) } return (
Preset
{currentPreset?.description ?? "Custom"}
{currentBasePresets.map((preset) => { const style = STYLES.find((s) => s.name === preset.style) return (
{preset.description}
) })}
) }