shadcn.io is an independent project built on shadcn/ui
Three boxes, labels above them. Short Note is two rows, placeholder Brief note... Comment is four rows, placeholder Your comment... Essay is eight rows, placeholder Write your essay...
Save it when the height should suggest how much to write. A single line is an Input. In React, Base UI does not keep the essay.
Installation
Anatomy

Usage
<FieldGroup className="max-w-md">
<Field>
<FieldLabel htmlFor="writing-short-note">Short Note</FieldLabel>
<Textarea id="writing-short-note" placeholder="Brief note..." rows={2} />
</Field>
<Field>
<FieldLabel htmlFor="writing-comment">Comment</FieldLabel>
<Textarea id="writing-comment" placeholder="Your comment..." rows={4} />
</Field>
<Field>
<FieldLabel htmlFor="writing-essay">Essay</FieldLabel>
<Textarea id="writing-essay" placeholder="Write your essay..." rows={8} />
</Field>
</FieldGroup>FAQ
How tall is each textarea?
Short Note sets rows to 2, Comment sets rows to 4, and Essay sets rows to 8. Each one is its own Field in a FieldGroup.
What are the placeholders?
They are Brief note..., Your comment..., and Write your essay.... Each placeholder clears once someone types in that box.
How do the labels connect?
FieldLabel names that Textarea. Its htmlFor matches the control's id. The labels are Short Note, Comment, and Essay.
What stacks the three boxes?
FieldGroup stacks them in one column, capped with max-w-md. None of the fields set orientation, so each label stays above its box.
API Reference
Field
Sets htmlFor="writing-short-note", htmlFor="writing-comment" and htmlFor="writing-essay". The rest is on the Field page.
Textarea
Sets id="writing-short-note", placeholder="Brief note...", rows={2}, id="writing-comment", placeholder="Your comment..." and rows={4}. The rest is on the Textarea page.





