caliper uidocs

Data export

Pro

A copy of someone's data on request: choose what to include and the format, follow the progress, then download until the link expires. One export at a time; past ones stay listed.

Installs components/ui/data-export.tsxDepends on @radix-ui/react-slot, lucide-reactMotion none in component source
pnpm dlx shadcn@latest add @caliper/data-export
What to export

We will email you when it is ready. The link works for 7 days.

Scheduled

  • General ledger csvEvery month · next on 1 Nov

Exports

  • Invoices and payments, Customers and supplierscsv
    Requested 12 Oct, 14:05 · 48.2 MB · link works until 19 Oct, 14:20
  • General ledgerjson
    Requested 30 Sept, 08:00 · 212.0 MB · link expired

When to use #

Use it for

  • Account settings, for privacy requests and leaving the product.
  • Admin areas that hand over a workspace's records.

Skip it when

  • Exporting the rows of one table; use the table's own export.

Installation #

terminal
pnpm dlx shadcn@latest add @caliper/data-export

Adds its 9 files to components/ui/, each with its own stylesheet, and installs their packages. Pro installs with your access token, set up once per project. See Pro access. The first part also adds Caliper UI’s tokens; import them once as in Installation.

Usage #

Import it from your copy of the source. The example behind the preview comes with the source.

example.tsx
import { DataExport } from "@/components/ui/data-export"

The worked example comes with Pro

The 44-line example behind the preview opens here with a Pro or Team licence.

Checking your licence…

API reference #

DataExport

component
PropTypeDefaultDescription
scopes *readonly ExportScope[]—
formatsreadonly { value: string; label: string; }[][{ value: "json", label: "JSON" }, { value: "csv", label: "CSV" }]
jobs *readonly ExportJob[]—Exports, newest first.
onRequest *(request: ExportRequest) => void | Promise<void>—
schedulesreadonly ExportSchedule[][]Repeating exports; each runs on its own and appears under Exports when it does.
onCancelSchedule((id: string) => void)—
onDownload *(job: ExportJob) => void—
nowstringnew Date().toISOString()ISO time treated as now, for expiry.
classNamestring—

Accessibility #

It exposes alert semantics, with aria-label, aria-invalid, aria-describedby, aria-live, aria-labelledby and aria-hidden kept in step with state. Changes that matter are announced through a live region.

No custom key handling; Tab and the native activation keys do the work.

Motion #

It declares no animation in its component source. Any transition comes from its stylesheet, which uses the duration tokens that collapse to instant under prefers-reduced-motion.