import { zodResolver } from '@hookform/resolvers/zod'; import { action } from '@storybook/addon-actions'; import type { Meta, StoryObj } from '@storybook/react'; import { useForm } from 'react-hook-form'; import * as z from 'zod'; import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, } from '@konobangu/design-system/components/ui/form'; /** * Building forms with React Hook Form and Zod. */ const meta: Meta = { title: 'ui/Form', component: Form, tags: ['autodocs'], argTypes: {}, render: (args) => , } satisfies Meta; export default meta; type Story = StoryObj; const formSchema = z.object({ username: z.string().min(2, { message: 'Username must be at least 2 characters.', }), }); const ProfileForm = (args: Story['args']) => { const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { username: '', }, }); function onSubmit(values: z.infer) { action('onSubmit')(values); } return (
( Username This is your public display name. )} /> ); }; /** * The default form of the form. */ export const Default: Story = {};