shadcn.io is not affiliated with official shadcn/ui
Data Export Requests Account Block for React
Export requests as a lifecycle: a request checked with the password, a four-stage track that moves one stage per press, and a real sample file to download once it is ready.
Installation
Overview
Let people ask for a copy of what you hold about them and watch the request move, with this export panel for React with Base UI. The header's Shine Button sends the form in the first band: what to export in a Native Select, the format in a Segment Group and the account password in a Password Input. Each request joins a list of the latest three with a four-stage track, Requested, Verified, Prepared and Ready, that shows the day each stage was reached and, once Ready, when the archive expires. Nothing advances by itself: Prepare now moves a request one stage for each press, and at Ready the same button becomes a real Download Trigger of a small sample file. An expired request offers Request again, Remove takes one out of the list and Undo brings it back. It's built from Native Select, Segment Group, Password Input, Download Trigger, Badge, Empty, Button, Shine Button and Guides, with a CSS entrance only. For privacy pages, account settings and any app that owes people a copy of their data.
FAQ
How do I fill it with my own kinds of data?
Edit CATEGORIES (an id and a label) and the typed rows each one exports in rowsOf: the first row of a list is its header, the rest are sample rows. The requests when the page opens are FIRST: each has a category, a format and days, the ISO day every stage was reached, so one to four days is how far it got. The dates around them (how long an archive lasts, whether it has expired, the days to expiry) are worked out from AS_OF and LIFETIME, never from the clock.
What stays local, and how do I make it real?
All of it. A request is added to the list in this page, Prepare now only adds a day to its track and nothing is checked, prepared or sent. To make it real, send the request from the form's submit handler with the password, and let your server move the stages; show the stage it reports instead of adding days yourself. Download here makes a small file in the tab from typed sample rows and the status line says it is not the person's data: point it at the real archive's address.
What does the password do?
It stands in for the identity check a real export needs. Any password of 8 or more characters passes in this demo, a shorter one is refused in words under the field and focus goes back to it, and the field is emptied after a request so the next one asks again. Never keep or log the password: check it on the server, and prefer a fresh sign-in for something this sensitive.
What is in the download?
A real file in the format you chose, JSON or CSV, with a few typed rows for the category and a note that it is a sample. The CSV quotes any cell with a comma, a quote or a line break and keeps text that starts with an equals sign, a plus, a minus or an at sign as text, so a spreadsheet never reads it as a formula. The file is named with the product, the category and the as-of day.
How does it look on a phone?
The form's three fields stack, the header's button sits under the sentence and each request keeps one height. The four-stage track becomes a thin four-part bar and the line Stage 3 of 4 with the stage's name; the track itself stays in the page as text for screen readers, with each stage and its day. The two buttons of a request sit side by side.
Is it accessible?
Every field has a label, the password's problem is read out when it appears and the field is marked invalid, and the stage track is an ordered list that says each stage and its day or Not yet. The one status line is polite and present from the start, and after a press focus moves to the request's button, which stays the same node through Prepare now so it is not lost. Colour is never the only sign: reached stages are solid, the rest hollow, and every stage has its name.
Related
- Pro
The archives an account has asked for and not yet taken: a type filter, a table with size, request day and time to expiry, real sample downloads, Request again for an expired one and Undo.
- Pro
Data Export Settings
Backups and exportsA data export panel built around a tree of what an account holds, where ticking a part adds what it depends on and says so, with a format control, the size, time and file count it adds up to, and a request list that queues one archive at a time.
- Pro
Standing exports to other services: four destinations on shared hairlines, each with its state, the kinds of record it receives, how often it runs, its last export and Export now.
- Pro
A transfer to another app in five steps: choose where, tick what moves, map each field, review what stays behind and start, with a real download of the sample records.
- Pro
Export Failed Error
Files and dataA full-screen page for an export that hit its file-size limit: the share written worked out from typed numbers, a real partial CSV with quoting and a formula guard, and a plan that splits the rest by year, quarter or month into files under the limit.
- Pro
Rules for deleting personal history automatically: a select for each kind of history, what each rule would delete worked out from typed counts, a popover of the oldest items and an alert dialog before a large delete.