shadcn.io is not affiliated with official shadcn/ui
Education Discount Application Billing Block for React Aria
An education discount application where the role decides the evidence: student, educator or school each get their own checklist of pieces, attached as a file or a link, with the discount (50%, 50%, 40%) and N of M attached.
Installation
Overview
Ask for the right proof from each kind of applicant, with this education discount section for React with React Aria. A hairline frame with a plus mark on each corner has a list of roles beside a checklist. Choosing a role (student, educator or school) swaps the checklist: a student needs a school email or an enrolment letter, an educator a staff page and a school email, a school a purchase order and a tax-exempt letter. Each piece takes a file through File Upload, where only the file's name is read and listed, or a pasted link that must start with https://. An outline Badge shows the discount for the role and a count says how many pieces are attached. The only Shine Button, "Submit application", sits in a foot with a status line. On a phone the roles become a Native Select. Built with File Upload, Field, Input and Guides. For software and services with a student, teacher or school price.
FAQ
How do I change the roles and the evidence?
ROLES at the top of the file lists each role with its discount, a short who line, its pieces (a label and a hint each) and any, whether one piece is enough or all are needed. The checklist, the badge, the count and the select on a phone are all derived from it.
Is any file uploaded or read?
No. The picker accepts PDF, PNG and JPG, and the block keeps only the chosen file's name to list it; the contents are never read, stored or sent, and the page says "Files stay on this device." A file of another type is refused with a message in the piece's reserved problem slot. In your app, send the file to your storage from the accepted-file handler and show its progress in the same row.
What does the link check?
Only the shape: it must start with http:// or https:// and name a site. It does not open the page. Your reviewers, or a verification service, would check that the link shows what it should.
What stays local, and how do I wire it for real?
Submit checks that a school is named and that enough pieces are attached, then says "Received in this demo. Nothing sent." in the status line. In your app, post the answers in submit, tell the person to expect a reply (the note in the demo says two business days) and keep the application as pending.