import { action } from "storybook/actions"; import { z } from "zod/v4-mini"; import { useForm, FormProvider, isDirty, useFormData, getFieldValue, } from "@conform-to/react/future"; import { RadiosButtonIconField, type RadioButtonIconOption } from "./RadiosButtonIconField"; import { Button } from "../../button"; import { Meta } from "@storybook/react-vite"; const meta = { title: "Components/fields/Radio", component: RadiosButtonIconField, decorators: [(Story) => ], } satisfies Meta; export default meta; const onChangeAction = action("onChange"); const formSchema = z.object({ view: z.enum(["grid", "list", "settings"]), }); const viewOptions: RadioButtonIconOption[] = [ { value: "grid", icon: "fe-raster", label: "Grid" }, { value: "list", icon: "fe-sidebar-collapse", label: "List" }, { value: "settings", icon: "fe-settings", label: "Settings" }, ]; const defaultValue = { view: "grid", }; const Playbook = () => { const { form, fields } = useForm(formSchema, { defaultValue, onSubmit(event, ctx) { event.preventDefault(); onChangeAction(ctx.value); }, }); const dirty = useFormData(form.id, (formData) => isDirty(formData, { defaultValue }) ?? false); const value = useFormData(form.id, (formData) => getFieldValue(formData, fields.view.name, { type: "string" }), ); return ( <>
dirty
{dirty ? "true" : "false"}
value
{value}
); }; export { Playbook as RadiosButtonIconField };