"use client" import * as React from "react" import { zodResolver } from "@hookform/resolvers/zod" import { Controller, useForm } from "react-hook-form" import { toast } from "sonner" import * as z from "zod" import { Button } from "@/registry/new-york-v4/ui/button" import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from "@/registry/new-york-v4/ui/card" import { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSet, FieldTitle, } from "@/registry/new-york-v4/ui/field" import { RadioGroup, RadioGroupItem, } from "@/registry/new-york-v4/ui/radio-group" const plans = [ { id: "starter", title: "Starter (100K tokens/month)", description: "For everyday use with basic features.", }, { id: "pro", title: "Pro (1M tokens/month)", description: "For advanced AI usage with more features.", }, { id: "enterprise", title: "Enterprise (Unlimited tokens)", description: "For large teams and heavy usage.", }, ] as const const formSchema = z.object({ plan: z.string().min(1, "You must select a subscription plan to continue."), }) export default function FormRhfRadioGroup() { const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { plan: "", }, }) function onSubmit(data: z.infer) { toast("You submitted the following values:", { description: (
          {JSON.stringify(data, null, 2)}
        
), position: "bottom-right", classNames: { content: "flex flex-col gap-2", }, style: { "--border-radius": "calc(var(--radius) + 4px)", } as React.CSSProperties, }) } return ( Subscription Plan See pricing and features for each plan.
(
Plan You can upgrade or downgrade your plan at any time. {plans.map((plan) => ( {plan.title} {plan.description} ))} {fieldState.invalid && ( )}
)} />
) }