Catálogo · Histórico
Versões dos componentes
pacote v1.10.0
Cada componente é atrelado à versão do pacote em que entrou (since) e à última que o tocou (lastChange). Use este painel para rastrear o contexto durante análise de bugs. Release notes completos ficam em CHANGELOG.md.
Enriquecido
| Componente | Status | Since | Last change | Notas |
|---|---|---|---|---|
FormInput forms/FormInput.tsx | stable | v0.1.0 | v0.7.0 | Input com ícone por fieldType, obrigatório, erro padronizado e toggle de revelar senha embutido em type=password. |
FormSelect forms/FormSelect.tsx | stable | v0.1.0 | v0.1.0 | Select shadcn com label/erro/options padronizados. |
FormTextarea forms/FormTextarea.tsx | stable | v0.1.0 | v0.1.0 | Textarea com contador opcional e indicador de obrigatório. |
PasswordStrength forms/PasswordStrength.tsx | stable | v0.1.0 | v0.1.0 | Barra + checklist de critérios. 5 critérios padrão. |
MaskedInput forms/MaskedInput.tsx | stable | v0.1.0 | v0.1.0 | Display vs value: DOM mascarado, RHF recebe valor cru. |
FormPhoneBR / FormCPF / FormCNPJ / FormCEP / FormSlug / FormIdentifier forms/MaskedFields.tsx | stable | v0.1.0 | v0.1.0 | Variantes prontas de MaskedInput com placeholder/ícone/autocomplete. |
FormRootError forms/FormRootError.tsx | stable | v0.7.0 | v0.7.0 | Lê root.serverError do RHF (ou prop direta) e exibe no padrão dos erros de campo. |
Form forms/Form.tsx | stable | v0.6.0 | v0.7.0 | Wrapper sobre <form> com fieldset auto-disabled e context isPending. Layout-neutro: o espaçamento vertical entre campos é responsabilidade do FormFieldShell (mb-4 last:mb-0). |
FormSubmitButton forms/FormSubmitButton.tsx | stable | v0.6.0 | v0.6.0 | Botão de submit que consome o context do <Form>: auto-disable + spinner + pendingLabel. |
Composto
| Componente | Status | Since | Last change | Notas |
|---|---|---|---|---|
EmptyState composite/EmptyState.tsx | stable | v0.1.0 | v0.1.0 | — |
PageHeader composite/PageHeader.tsx | stable | v0.1.0 | v0.1.0 | — |
StatCard composite/StatCard.tsx | stable | v0.1.0 | v0.1.0 | — |
ConfirmDialog / useConfirm composite/ConfirmDialog.tsx | stable | v0.1.0 | v0.1.0 | API declarativa via Promise. |
Spinner composite/Spinner.tsx | stable | v0.1.0 | v0.1.0 | — |
CopyButton composite/CopyButton.tsx | stable | v0.1.0 | v0.1.0 | — |
Skeletons (Table/Card/Form) composite/Skeletons.tsx | stable | v0.1.0 | v0.1.0 | — |
Combobox composite/Combobox.tsx | stable | v0.1.0 | v0.1.0 | Modos client + remoto (onSearch + loading). |
TagInput composite/TagInput.tsx | stable | v0.1.0 | v0.1.0 | Modo livre (Enter/colar) e modo remoto multiselect. |
DataTable composite/DataTable/index.tsx | beta | v0.1.0 | v0.1.0 | Server-side, syncToUrl, faceted filters, bulk actions, export. |
ThemeToggle composite/ThemeToggle.tsx | stable | v0.1.0 | v0.1.0 | — |
DatePicker composite/DateField.tsx | stable | v0.2.0 | v0.2.0 | Single-date sobre calendar+popover, locale via i18n interno (pt-BR/en-US). |
DateRangePicker composite/DateField.tsx | stable | v0.2.0 | v0.2.0 | Range com presets traduzidos (Hoje, Últimos 7/30 dias, etc) e numberOfMonths. |
CodeBlock composite/CodeBlock.tsx | stable | v0.2.0 | v0.2.0 | Syntax highlight via Shiki (lazy). Tema light/dark sincronizado ao ThemeProvider. |
TagMultiSelect composite/TagMultiSelect.tsx | stable | v0.2.0 | v0.2.0 | Multi-seleção sobre lista fixa, com agrupamento, busca e modo creatable opcional. |
FileUpload composite/FileUpload.tsx | stable | v0.2.0 | v0.2.0 | Dropzone DnD nativo + lista de arquivos. Validação de tamanho/tipo/quantidade, i18n interno. |
IconPicker composite/IconPicker.tsx | stable | v0.2.0 | v0.2.0 | Picker sobre catálogo lucide com busca + curated populares. Devolve string (nome). Acompanha LucideIconByName / getLucideIcon. |
BrandLogo composite/BrandLogo.tsx | stable | v0.3.0 | v0.5.0 | Slot agnóstico (logo/favicon/cover/avatar) com variantes whenLight/whenDark, prop appearance e suffix opcional do tema. v0.5.0: BREAKING — assets renomeados (logoMark→favicon, logoWordmark→logo). |
CommandPalette commands/CommandPalette.tsx | stable | v1.2.0 | v1.2.0 | Botão de busca + dropdown (cmdk) para o header. Filtra por permissão via useAuth, agrupa por `group`, navega via @tanstack/react-router ou roda callback. |
Tree composite/Tree/Tree.tsx | stable | v1.3.0 | v1.3.0 | Árvore para estruturas hierárquicas (NestedSet, materialized path). Modo readOnly (indent + collapse + seleção) e edit (DnD reparent, rename inplace via F2, exclusão cascateável com Delete). Mutações otimistas + callbacks (onMove/onRename/onDelete). Adapters flatToTree/treeToFlat. |
JsonViewer composite/JsonViewer.tsx | stable | v1.4.0 | v1.4.0 | Visualizador interativo de JSON (somente-leitura). Árvore expansível com toolbar discreta: busca (filtra + destaca + auto-expande caminhos), expandir/colapsar tudo, copiar JSON, baixar como .json, e copiar caminho (JSONPath) por nó. |
MultiProgress composite/MultiProgress.tsx | stable | v1.5.0 | v1.5.0 | Barra de progresso multi-segmento (variantes semânticas: primary/success/warning/destructive/accent/muted). Caso de uso típico: processados com sucesso + processados com erro na mesma barra. NÃO substitui o Progress primitivo — assinatura distinta. |
ArcProgress composite/ArcProgress.tsx | stable | v1.5.0 | v1.5.0 | Progresso em arco de 180º com slot central (ícone, número, label). Aceita value único OU segments[] (mesma API do MultiProgress). Tamanhos sm/md/lg/xl + thickness override. |
SortableList dnd/SortableList.tsx | stable | v1.7.0 | v1.7.0 | Lista ordenável (vertical/horizontal) sobre @dnd-kit/sortable. Handle dedicado (default) ou linha inteira arrastável. Subpath opcional @uttara-dev/ui/dnd — @dnd-kit/* declarado como peer optional. |
TransferList dnd/TransferList.tsx | stable | v1.7.0 | v1.7.0 | Par de listas com transferência por seleção (botões) ou drag-and-drop. Filtro por painel, multi-seleção opcional, reorder dentro do mesmo painel. Subpath @uttara-dev/ui/dnd. |
PdfViewer pdf/PdfViewer.tsx | stable | v1.8.0 | v1.8.0 | Visualizador simples baseado em <iframe> nativo. Delega renderização e controles (download/print) ao navegador. Subpath @uttara-dev/ui/pdf. |
SecurePdfViewer pdf/SecurePdfViewer.tsx | stable | v1.8.0 | v1.8.0 | Visualizador restritivo: pdfjs-dist renderiza página em canvas com toolbar custom; download/print/copy/menu-de-contexto desabilitados por padrão (opt-in via props). pdfjs-dist é peer optional. |
LineChart charts/LineChart.tsx | stable | v1.9.0 | v1.9.0 | Gráfico de linhas tematizado (Recharts) com séries tipadas e tokens --chart-N. Subpath @uttara-dev/ui/charts. |
AreaChart charts/AreaChart.tsx | stable | v1.9.0 | v1.9.0 | Áreas preenchidas com suporte a empilhamento. Tokens --chart-N. |
BarChart charts/BarChart.tsx | stable | v1.9.0 | v1.9.0 | Barras verticais/horizontais com empilhamento opcional. |
PieChart charts/PieChart.tsx | stable | v1.9.0 | v1.9.0 | Pizza ou doughnut (donut) com centerSlot para KPI central. |
GeoMap / WorldMap / BrazilMap charts/GeoMap.tsx | stable | v1.9.0 | v1.9.0 | Mapas coropléticos com interpolação color-mix. react-simple-maps é peer optional — apps sem mapas não pagam o custo. |
DashboardGrid / DashboardTile charts/DashboardGrid.tsx | stable | v1.9.0 | v1.9.0 | Grid responsivo + tile (asCard) para compor dashboards. |
Layout
| Componente | Status | Since | Last change | Notas |
|---|---|---|---|---|
AppShell layout/AppShell.tsx | stable | v0.1.0 | v0.1.0 | — |
AppHeader layout/AppHeader.tsx | stable | v0.1.0 | v0.1.0 | — |
AppSidebar layout/AppSidebar.tsx | stable | v0.1.0 | v0.1.0 | — |
AppLauncher layout/AppLauncher.tsx | stable | v0.1.0 | v0.1.0 | — |
AppBreadcrumb layout/AppBreadcrumb.tsx | stable | v0.1.0 | v0.1.0 | — |
UserMenu layout/UserMenu.tsx | stable | v0.1.0 | v0.1.0 | — |
AppSidebar (subBrand) layout/AppSidebar.tsx | stable | v0.1.0 | v0.10.0 | Novo slot `subBrand` (+ `collapsedSubBrand`) entre a divisória do header e o nav scrolável — fixo, não rola. Caso de uso: branding do módulo abaixo da marca do ecossistema. Propagado via AppShell. |
TreePanelLayout composite/Tree/TreePanelLayout.tsx | stable | v1.3.0 | v1.10.0 | Layout split horizontal (CSS grid de colunas fixas via prop `ratio`, default 30/70) para telas em que a Tree fica sempre à esquerda e o conteúdo reage à seleção à direita. |
Provider
| Componente | Status | Since | Last change | Notas |
|---|---|---|---|---|
ThemeProvider providers/ThemeProvider.tsx | stable | v0.1.0 | v0.1.0 | — |
I18nProvider i18n/I18nProvider.tsx | stable | v0.1.0 | v0.1.0 | — |
AuthProvider auth/AuthProvider.tsx | stable | v0.1.0 | v0.1.0 | Agnóstico via AuthAdapter. Em dev/preview, use o Preview Mode do @uttara-dev/cas-client@1.1.0+ (o antigo MockAuthAdapter foi removido em 1.6.0). |
CommandRegistryProvider commands/CommandRegistry.tsx | stable | v1.2.0 | v1.2.0 | Registry central de ações da app. Hooks useRegisterCommand / useCommandPalette / useCommands / useCommandRegistry. Atalho global Cmd/Ctrl+K opcional. |
Hook
| Componente | Status | Since | Last change | Notas |
|---|---|---|---|---|
useEcosystemApps layout/useEcosystemApps.ts | stable | v0.5.4 | v0.5.4 | — |
useFormSubmit forms/useFormSubmit.ts | stable | v0.6.0 | v0.6.0 | Orquestra submit RHF: limpa root.serverError antes, mapeia erro lançado para serverError depois. |
Utilitário
| Componente | Status | Since | Last change | Notas |
|---|---|---|---|---|
EcosystemAdapter layout/EcosystemAdapter.ts | stable | v0.5.4 | v0.6.0 | Protocolo de descoberta de apps irmãs. createCASEcosystemAdapter agora tem timeout (5s) e cache negativo (60s) para resiliência. |
format/numbers format/numbers.ts | stable | v0.7.0 | v0.7.0 | formatCurrency / formatNumber / formatPercent / formatCompact (Intl.NumberFormat). Default pt-BR + BRL. |
format/dates format/dates.ts | stable | v0.7.0 | v0.7.0 | formatDate / formatDateTime / formatTime / formatRelative (Intl). Aceita Date, ISO string ou number. |
format/br format/br.ts | stable | v0.7.0 | v0.7.0 | formatPhoneBR / formatCpfCnpj / formatCep para EXIBIÇÃO (tudo ou nada). Diferentes dos progressivos em forms/masks.ts. |
format/text format/text.ts | stable | v0.7.0 | v0.7.0 | truncate / pluralize / capitalize / initials. |
applyTheme tokens/apply-theme.ts | stable | v0.1.0 | v0.9.0 | Agora também injeta <style id='uttara-fonts'> com @font-face quando theme.fontFaces está presente. Idempotente; insere antes do <style id='uttara-theme'> para evitar FOUC. |
uttaraFontFaces tokens/fonts/index.ts | stable | v0.9.0 | v0.9.0 | 24 woff2 self-hosted: Lexend, Red Hat Text, JetBrains Mono × pesos 400/500/600/700 × subsets latin+latin-ext. Embutido no tarball; nada para a app importar. |
createFaviconHandler layout/favicon.ts | stable | v0.10.0 | v0.10.0 | Helper para a rota server `/favicon.ico` na app consumidora. Resolve o asset do BrandTheme.assets.favicon e devolve 302 para a URL bundleada. Acompanha resolveFaviconUrl(). |
hoguTheme tokens/hogu.theme.ts | stable | v1.1.0 | v1.1.0 | Tema verde-oliva da plataforma Hogu (analytics e-commerce). Plus Jakarta Sans embutida via hoguFontFaces — paridade com Uttara (zero ação na app consumidora). |
saldanhaTheme tokens/saldanha.theme.ts | stable | v1.1.0 | v1.1.0 | Tema verde-floresta + verde-folha da Saldanha LTDA. Space Mono (display) + Ubuntu (sans) embutidas via saldanhaFontFaces. |
hoguFontFaces / saldanhaFontFaces tokens/fonts/index.ts | stable | v1.1.0 | v1.1.0 | Plus Jakarta Sans (Hogu) + Space Mono e Ubuntu (Saldanha) self-hosted, mesmo padrão de uttaraFontFaces (subsets latin/latin-ext, font-display swap). |
Primitivo
| Componente | Status | Since | Last change | Notas |
|---|---|---|---|---|
Button primitives/ui/button.tsx | stable | v0.1.0 | v0.5.1 | v0.5.1: cursor-pointer no base; ghost ganha bg-accent/15 em repouso; outline = ghost + borda. |
Input / Textarea / Select primitives/ui/input.tsx | stable | v0.1.0 | v0.5.1 | v0.5.1: usam bg-field/text-field-foreground (novos tokens semânticos). |
Toaster / toast primitives/ui/sonner.tsx | stable | v0.1.0 | v0.8.0 | Defaults Uttara: closeButton sempre visível, richColors, duration 60s, toast.error sem auto-dismiss (Infinity), tema sincronizado ao useTheme. Importe de @uttara-dev/ui/primitives — não direto de sonner. |