snapshot of https://github.com/shadcn-ui/ui.git (main, 2026-09-15; blobs > 131072B omitted)
This commit is contained in:
126
apps/v4/examples/radix/questionnaire-dialog.tsx
Normal file
126
apps/v4/examples/radix/questionnaire-dialog.tsx
Normal file
@@ -0,0 +1,126 @@
|
||||
"use client"
|
||||
|
||||
import * as React from "react"
|
||||
import { toast } from "sonner"
|
||||
|
||||
import { Button } from "@/styles/radix-nova/ui/button"
|
||||
import {
|
||||
Dialog,
|
||||
DialogClose,
|
||||
DialogContent,
|
||||
DialogDescription,
|
||||
DialogFooter,
|
||||
DialogHeader,
|
||||
DialogTitle,
|
||||
DialogTrigger,
|
||||
} from "@/styles/radix-nova/ui/dialog"
|
||||
import {
|
||||
Questionnaire,
|
||||
QuestionnaireActions,
|
||||
QuestionnaireChoice,
|
||||
QuestionnaireChoices,
|
||||
QuestionnaireDescription,
|
||||
QuestionnaireError,
|
||||
QuestionnaireItem,
|
||||
QuestionnaireNext,
|
||||
QuestionnairePrevious,
|
||||
QuestionnaireProgress,
|
||||
QuestionnaireSubmit,
|
||||
QuestionnaireTitle,
|
||||
} from "@/styles/radix-nova/ui/questionnaire"
|
||||
|
||||
const items = [
|
||||
{ name: "scope", required: true },
|
||||
{ name: "tests", required: true },
|
||||
] as const
|
||||
|
||||
export function QuestionnaireDialog() {
|
||||
const [open, setOpen] = React.useState(false)
|
||||
|
||||
function handleSubmit(event: React.FormEvent<HTMLFormElement>) {
|
||||
event.preventDefault()
|
||||
|
||||
const formData = new FormData(event.currentTarget)
|
||||
|
||||
setOpen(false)
|
||||
toast("Clarification sent", {
|
||||
description: `Scope: ${formData.get("scope") ?? "None"} · Verification: ${formData.get("tests") ?? "None"}`,
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
<Dialog open={open} onOpenChange={setOpen}>
|
||||
<DialogTrigger asChild>
|
||||
<Button variant="outline">Open clarification</Button>
|
||||
</DialogTrigger>
|
||||
<DialogContent>
|
||||
<Questionnaire
|
||||
defaultItem="scope"
|
||||
items={items}
|
||||
onSubmit={handleSubmit}
|
||||
>
|
||||
<QuestionnaireItem name="scope" required>
|
||||
<DialogHeader>
|
||||
<QuestionnaireProgress />
|
||||
<QuestionnaireTitle render={<DialogTitle />}>
|
||||
Which files are in scope?
|
||||
</QuestionnaireTitle>
|
||||
<QuestionnaireDescription render={<DialogDescription />}>
|
||||
Choose how broadly the agent can update the workspace.
|
||||
</QuestionnaireDescription>
|
||||
</DialogHeader>
|
||||
<QuestionnaireChoices>
|
||||
<QuestionnaireChoice value="component">
|
||||
Component only
|
||||
</QuestionnaireChoice>
|
||||
<QuestionnaireChoice value="feature">
|
||||
Complete feature directory
|
||||
</QuestionnaireChoice>
|
||||
<QuestionnaireChoice value="workspace">
|
||||
Any related workspace file
|
||||
</QuestionnaireChoice>
|
||||
</QuestionnaireChoices>
|
||||
<QuestionnaireError />
|
||||
</QuestionnaireItem>
|
||||
|
||||
<QuestionnaireItem name="tests" required>
|
||||
<DialogHeader>
|
||||
<QuestionnaireProgress />
|
||||
<QuestionnaireTitle render={<DialogTitle />}>
|
||||
How much verification is needed?
|
||||
</QuestionnaireTitle>
|
||||
<QuestionnaireDescription render={<DialogDescription />}>
|
||||
Choose the checks the agent should run before handoff.
|
||||
</QuestionnaireDescription>
|
||||
</DialogHeader>
|
||||
<QuestionnaireChoices>
|
||||
<QuestionnaireChoice value="targeted">
|
||||
Targeted tests
|
||||
</QuestionnaireChoice>
|
||||
<QuestionnaireChoice value="package">
|
||||
Package tests
|
||||
</QuestionnaireChoice>
|
||||
<QuestionnaireChoice value="full">
|
||||
Full workspace verification
|
||||
</QuestionnaireChoice>
|
||||
</QuestionnaireChoices>
|
||||
<QuestionnaireError />
|
||||
</QuestionnaireItem>
|
||||
|
||||
<DialogFooter>
|
||||
<DialogClose asChild>
|
||||
<Button type="button" variant="outline">
|
||||
Cancel
|
||||
</Button>
|
||||
</DialogClose>
|
||||
<QuestionnaireActions>
|
||||
<QuestionnairePrevious />
|
||||
<QuestionnaireNext>Next</QuestionnaireNext>
|
||||
<QuestionnaireSubmit>Send answer</QuestionnaireSubmit>
|
||||
</QuestionnaireActions>
|
||||
</DialogFooter>
|
||||
</Questionnaire>
|
||||
</DialogContent>
|
||||
</Dialog>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user