import { useState } from "react"; import { z } from "zod"; import { Alert, AlertDescription } from "@godxjp/ui/feedback"; import { Checkbox, Input } from "@godxjp/ui/data-entry"; import { Button } from "@godxjp/ui/general"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@godxjp/ui/data-display"; import { Flex, PageContainer } from "@godxjp/ui/layout"; import { FormFieldControl, FormRoot, useZodForm } from "@godxjp/ui/form"; const schema = z.object({ name: z.string().min(1, "組織名を入力してください"), email: z.string().email("有効なメールアドレスを入力してください"), is_shared: z.boolean(), }); export default function Demo() { const [status, setStatus] = useState<"idle" | "pending" | "success" | "server-error">("idle"); const form = useZodForm(schema, { defaultValues: { name: "株式会社アクメ", email: "billing@example.jp", is_shared: false }, }); async function submit() { setStatus("pending"); await new Promise((resolve) => window.setTimeout(resolve, 500)); setStatus("success"); } return ( 送付先設定 Submit 後に field error を表示し、最初の invalid field へ focus。reset は defaultValues を復元する。server error summary は application が管理する。 {status === "server-error" && ( 保存できませんでした。接続を確認して再試行してください。 )} {status === "success" && ( 保存しました。 )} {(field) => ( )} {(field) => ( )} {/* Boolean field (antd `valuePropName="checked"`): the label is the Checkbox's children, on the same line as the box — no label row above it. */} {(field) => ( 請求書をプロジェクトメンバーに共有する )}

warning state、form-level error-summary から field への focus link、touched-only timing は public wrapper API では未提供。React Hook Form の設定または consumer composition として UNTESTED。

); }