- Componentes
- Accordion
- ActivityGraph
- Alert
- Alert Dialog
- Aspect Ratio
- Avatar
- AvatarGroup
- Badge
- Box
- Breadcrumb
- Button
- Button Group
- Calendar
- Card
- Carousel
- Chart
- Checkbox
- Collapsible
- Combobox
- Command
- Connector
- Container
- Context Menu
- Dialog
- Drawer
- DropdownMenu
- Empty
- EnvEditor
- Fade In
- Field
- Fps
- Hover Card
- Highlighter
- Input
- InputGroup
- Input OTP
- Item
- JSONViewer
- Kbd
- Label
- Marquee
- Menubar
- Native Select
- Navigation Menu
- NumberInput
- Pagination
- Popover
- Preview Card
- Progress
- ProgressiveBlur
- Radio Group
- Resizable
- Retro Grid
- Scan Line
- ScrollArea
- Scrubber
- SectionLabel
- Select
- Separator
- Sheet
- Signature
- Sidebar
- Skeleton
- Slider
- Sonner
- Spinner
- Stagger Group
- StatusDot
- SystemBanner
- Switch
- Table
- Tabs
- TagInput
- Textarea
- ThemeToogle
- Toggle
- Toggle Group
- Tooltip
- Typing Effect
Visualização interativa de JSON em árvore (packages/ui/src/components/json-viewer.tsx), com realce por tipo, detecção de URLs e datas, botões para expandir/recolher tudo e copiar o payload formatado. Em viewports estreitos a truncagem de arrays desliga-se automaticamente.
Importação
import { JsonViewer } from "@zexon/ui/components/json-viewer";
Tipos úteis: JsonValue, JsonPrimitive, JsonViewerProps.
Uso básico
Objeto
123456789'id': 'evt_7f2a','created_at': '2024-01-15T10:00:00.000Z'// há cerca de 2 anos,'status': 'ok','count': 42,}
Raiz em array
Array na raiz
12345'alpha','beta',]
Indentação colorida e nível inicial expandido
showColorIndent destaca o guia à esquerda por nível. defaultExpanded pode ser true (tudo aberto), false (só a raiz, predefinição) ou um número (profundidade máxima expandida).
Profundidade e cores
123456789101112}},1,2,3]}
Truncagem de arrays
Com truncation.enabled (predefinição: true em desktop) listas longas mostram só os primeiros itemsPerArray valores (predefinição: 5) e um botão para carregar o restante.
Array longo
123}
Duplo clique para expandir
collapseOn="doubleClick" exige duplo clique na linha do objecto ou array para alternar (clique simples não expande).
Duplo clique
1234'a': 1,}
Sem números de linha
Sem linhas
'x': 1}Props
| Prop | Tipo | Predefinição | Notas |
|---|---|---|---|
data | JsonValue | — | Objecto, array ou valor JSON em raiz |
className | string | — | Classes no contentor externo |
title | string | — | Texto opcional na barra superior |
showLineNumbers | boolean | true | A coluna de números só aparece a partir do breakpoint sm |
showColorIndent | boolean | false | Borda esquerda por nível com cores rotativas |
collapseOn | "click" | "doubleClick" | "click" | Como alternar nós objecto/array |
defaultExpanded | boolean | number | false | true = expandir tudo; número = profundidade máxima; false mantém só a raiz aberta |
truncation | { enabled?: boolean; itemsPerArray?: number } | { enabled: true, itemsPerArray: 5 } em desktop | Em mobile enabled fica false |
O botão Copiar JSON usa o mesmo fluxo que outros componentes (useCopyToClipboard).