Skip to content
shadcn.io

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.

Framework
UI library

Preview

Preview width

Installation

Part of Pro
Pro unlocks the code and one-line install of every Pro button and text effect, plus the MCP for your AI editor.
Have Pro already? Sign in to open it.Opens here as soon as you're Pro.

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.

  • 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 exports

    A 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 data

    A 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.