Kobana UI
GitHub

ExportModal

Modal de exportação de dados com estados de progresso e download.

Instalação

npx @kobana/ui add export-modal

Importação

import { ExportModal } from "@/components/kobana/export-modal"

Props

PropTipoDefaultDescrição
openbooleanControlado externamente
onOpenChange(open: boolean) => voidCallback de abertura
entityLabelstringLabel da entidade (ex: "Cobranças")
totalCountnumber0Total de registros
onExport() => Promise<ExportResult>Função de exportação async
labels{ title?, description?, ... }Labels customizáveis
classNamestringClasses adicionais

ExportResult

interface ExportResult {
  totalRecords?: number
  fileSize?: number    // em bytes
  fileUrl?: string     // URL para download
  fileName?: string
}

Estados

O modal passa por 4 estados internos:

  1. confirm — Confirmação com total de registros
  2. processing — Spinner durante exportação
  3. completed — Sucesso com botão de download
  4. error — Mensagem de erro

Uso

<ExportModal
  open={exportOpen}
  onOpenChange={setExportOpen}
  entityLabel="Cobranças"
  totalCount={1234}
  onExport={async () => {
    const blob = await api.charges.export()
    return {
      totalRecords: 1234,
      fileSize: blob.size,
      fileUrl: URL.createObjectURL(blob),
      fileName: "cobrancas.csv",
    }
  }}
/>

On this page