shadcn.io is an independent project built on shadcn/ui
Feedback opens a panel titled Send Feedback, with the line We'd love to hear your thoughts! A message box and a full-width Submit Feedback button sit under it. Submit closes the panel.
Use it to collect a comment without leaving the page. Submit does not send the text until you handle it. A longer form belongs in a Dialog. In React, Base UI does not deliver the feedback.
Installation
Anatomy

Usage
<Popover onOpenChange={setOpen} open={open}>
<PopoverTrigger render={<Button variant="outline" />}>
<MessageSquareIcon aria-hidden="true" data-icon="inline-start" />
Feedback
</PopoverTrigger>
<PopoverContent className="w-80 max-w-full">
<PopoverHeader>
<PopoverTitle>Send Feedback</PopoverTitle>
<PopoverDescription>
We'd love to hear your thoughts!
</PopoverDescription>
</PopoverHeader>
<Textarea
aria-label="Feedback"
className="min-h-24"
placeholder="Share your feedback..."
/>
<Button className="w-full" onClick={handleSubmit}>
Submit Feedback
</Button>
</PopoverContent>
</Popover>FAQ
How is the feedback field set up?
The Textarea has aria-label="Feedback", placeholder="Share your feedback...", and className="min-h-24". It leaves value and onChange unset. PopoverContent is w-80 max-w-full.
How do I close this panel from code?
Submit Feedback closes the panel.
Here the panel is controlled: open and onOpenChange on Popover, and the button's handler sets the state to false. The callback gets the next open state first.
What is the heading on the feedback panel?
PopoverHeader wraps PopoverTitle reading Send Feedback and PopoverDescription reading We'd love to hear your thoughts! The textarea and the full-width Submit Feedback button follow.
How does the Feedback button become the trigger?
The trigger is a Button with variant="outline". MessageSquareIcon has aria-hidden="true" and data-icon="inline-start", and the label is Feedback.
Pass the button to render on PopoverTrigger, and use PopoverContent as the panel.
API Reference
Popover
Sets onOpenChange={setOpen} and open={open}. The rest is on the Popover page.
Button
Sets variant="outline" and onClick={handleSubmit}. The rest is on the Button page.
Textarea
Sets aria-label="Feedback" and placeholder="Share your feedback...". The rest is on the Textarea page.





