"use client"; import { z } from "zod"; import { Schema_Theme, ThemeKeys } from "~/schema"; import { Input } from "~/components/ui/input"; import { Separator } from "~/components/ui/separator"; import { Slider } from "~/components/ui/slider"; import { parseThemeValue } from "~/utils/parseConfigFile"; import ThemeInput from "./@form.input-theme"; type Props = { currentTheme: "light" | "dark"; state: { get: { light: z.input; dark: z.input; }; set: (theme: "light" | "dark", key: ThemeKeys, value: string) => void; }; }; export default function ThemeForm({ currentTheme, state: { get, set }, }: Props) { return (
{ set(currentTheme, "background", `${val.h} ${val.s} ${val.l}`); }} /> { set(currentTheme, "foreground", `${val.h} ${val.s} ${val.l}`); }} /> { set(currentTheme, "card", `${val.h} ${val.s} ${val.l}`); }} /> { set(currentTheme, "card-foreground", `${val.h} ${val.s} ${val.l}`); }} /> { set(currentTheme, "popover", `${val.h} ${val.s} ${val.l}`); }} /> { set(currentTheme, "popover-foreground", `${val.h} ${val.s} ${val.l}`); }} /> { set(currentTheme, "primary", `${val.h} ${val.s} ${val.l}`); }} /> { set(currentTheme, "primary-foreground", `${val.h} ${val.s} ${val.l}`); }} /> { set(currentTheme, "secondary", `${val.h} ${val.s} ${val.l}`); }} /> { set( currentTheme, "secondary-foreground", `${val.h} ${val.s} ${val.l}`, ); }} /> { set(currentTheme, "accent", `${val.h} ${val.s} ${val.l}`); }} /> { set(currentTheme, "accent-foreground", `${val.h} ${val.s} ${val.l}`); }} /> { set(currentTheme, "muted", `${val.h} ${val.s} ${val.l}`); }} /> { set(currentTheme, "muted-foreground", `${val.h} ${val.s} ${val.l}`); }} /> { set(currentTheme, "destructive", `${val.h} ${val.s} ${val.l}`); }} /> { set( currentTheme, "destructive-foreground", `${val.h} ${val.s} ${val.l}`, ); }} /> { set(currentTheme, "border", `${val.h} ${val.s} ${val.l}`); }} /> { set(currentTheme, "input", `${val.h} ${val.s} ${val.l}`); }} /> { set(currentTheme, "ring", `${val.h} ${val.s} ${val.l}`); }} /> {}} >
{ const value = val[0] / 16; set("light", "radius", `${value}rem`); set("dark", "radius", `${value}rem`); }} /> { const value = parseFloat(e.currentTarget.value) / 16; set("light", "radius", `${value}rem`); set("dark", "radius", `${value}rem`); }} type='number' className='w-16 min-w-0 ' min={0} max={24} />
); }