import { action } from "storybook/actions";
import { z } from "zod/v4-mini";
import {
useForm,
FormProvider,
isDirty,
useFormData,
getFieldValue,
} from "@conform-to/react/future";
import { RadiosWithLegendField, RadioWithLegendOption } from "./RadioWithLegendField";
import { Button } from "../../button";
import { Meta } from "@storybook/react-vite";
const meta = {
title: "Components/fields/Radio",
component: RadiosWithLegendField,
decorators: [(Story) => ],
} satisfies Meta;
export default meta;
const onChangeAction = action("onChange");
const formSchema = z.object({
profile: z.enum(["musician", "listener"]),
});
const userProfileOptions = [
{
label: "Musicien",
value: "musician",
children: (
),
},
{
label: "Mélomane",
value: "listener",
children: (
),
},
] as const satisfies RadioWithLegendOption[];
const defaultValue = {
profile: "musician",
};
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.profile.name, { type: "string" }),
);
return (
<>
- dirty
- {dirty ? "true" : "false"}
- value
- {value}
>
);
};
export { Playbook as RadiosWithLegendField };