xertica-ui 1.5.1 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/components.json +350 -0
  2. package/docs/ai-usage.md +18 -0
  3. package/docs/components/accordion.md +43 -0
  4. package/docs/components/alert-dialog.md +50 -0
  5. package/docs/components/alert.md +36 -0
  6. package/docs/components/aspect-ratio.md +26 -0
  7. package/docs/components/assistant.md +41 -0
  8. package/docs/components/avatar.md +32 -0
  9. package/docs/components/badge.md +30 -0
  10. package/docs/components/breadcrumb.md +47 -0
  11. package/docs/components/button.md +51 -0
  12. package/docs/components/calendar.md +34 -0
  13. package/docs/components/card.md +50 -0
  14. package/docs/components/carousel.md +57 -0
  15. package/docs/components/chart.md +62 -0
  16. package/docs/components/checkbox.md +37 -0
  17. package/docs/components/collapsible.md +38 -0
  18. package/docs/components/command.md +40 -0
  19. package/docs/components/context-menu.md +40 -0
  20. package/docs/components/dialog.md +60 -0
  21. package/docs/components/drawer.md +43 -0
  22. package/docs/components/dropdown-menu.md +51 -0
  23. package/docs/components/empty.md +22 -0
  24. package/docs/components/file-upload.md +27 -0
  25. package/docs/components/form.md +71 -0
  26. package/docs/components/hover-card.md +41 -0
  27. package/docs/components/input-otp.md +42 -0
  28. package/docs/components/input.md +57 -0
  29. package/docs/components/label.md +24 -0
  30. package/docs/components/map.md +46 -0
  31. package/docs/components/menubar.md +53 -0
  32. package/docs/components/navigation-menu.md +42 -0
  33. package/docs/components/notification-badge.md +28 -0
  34. package/docs/components/page-header.md +44 -0
  35. package/docs/components/pagination.md +56 -0
  36. package/docs/components/popover.md +43 -0
  37. package/docs/components/progress.md +29 -0
  38. package/docs/components/radio-group.md +43 -0
  39. package/docs/components/rating.md +32 -0
  40. package/docs/components/resizable.md +53 -0
  41. package/docs/components/scroll-area.md +33 -0
  42. package/docs/components/search.md +26 -0
  43. package/docs/components/select.md +49 -0
  44. package/docs/components/separator.md +38 -0
  45. package/docs/components/sheet.md +40 -0
  46. package/docs/components/sidebar.md +46 -0
  47. package/docs/components/skeleton.md +30 -0
  48. package/docs/components/slider.md +26 -0
  49. package/docs/components/sonner.md +39 -0
  50. package/docs/components/stats-card.md +24 -0
  51. package/docs/components/stepper.md +49 -0
  52. package/docs/components/switch.md +27 -0
  53. package/docs/components/table.md +54 -0
  54. package/docs/components/tabs.md +43 -0
  55. package/docs/components/textarea.md +21 -0
  56. package/docs/components/timeline.md +34 -0
  57. package/docs/components/toggle-group.md +38 -0
  58. package/docs/components/toggle.md +26 -0
  59. package/docs/components/tooltip.md +46 -0
  60. package/docs/components/tree-view.md +29 -0
  61. package/docs/getting-started.md +25 -0
  62. package/docs/guidelines.md +23 -0
  63. package/docs/installation.md +37 -0
  64. package/docs/patterns/analytics.md +62 -0
  65. package/docs/patterns/crud.md +76 -0
  66. package/docs/patterns/dashboard.md +85 -0
  67. package/docs/patterns/form.md +85 -0
  68. package/docs/patterns/login.md +54 -0
  69. package/llms-full.txt +2634 -0
  70. package/llms.txt +37 -0
  71. package/mcp/resources.json +22 -0
  72. package/mcp/tools.json +35 -0
  73. package/package.json +8 -2
  74. package/scripts/ai-validator.ts +83 -0
  75. package/scripts/generate-ai-manifests.ts +64 -0
  76. package/templates/package.json +1 -1
@@ -0,0 +1,350 @@
1
+ [
2
+ {
3
+ "name": "accordion",
4
+ "docPath": "docs/components/accordion.md",
5
+ "sourcePath": "components/ui/accordion.tsx",
6
+ "description": "Gerenciador de exibição oculta (collapse) vertical focada em empilhamento. Baseado em Header nativo acessível."
7
+ },
8
+ {
9
+ "name": "alert-dialog",
10
+ "docPath": "docs/components/alert-dialog.md",
11
+ "sourcePath": "components/ui/alert-dialog.tsx",
12
+ "description": "Modal interruptivo e destrutivo que requer uma ação explícita pelo usuário para ser descartado ou aprovado."
13
+ },
14
+ {
15
+ "name": "alert",
16
+ "docPath": "docs/components/alert.md",
17
+ "sourcePath": "components/ui/alert.tsx",
18
+ "description": "Blocos informativos fixos e destacados para alertar o usuário de algo importante que não deve ser descartável e exige leitura compulsória na mesma página."
19
+ },
20
+ {
21
+ "name": "aspect-ratio",
22
+ "docPath": "docs/components/aspect-ratio.md",
23
+ "sourcePath": "components/ui/aspect-ratio.tsx",
24
+ "description": "Força uma proporção delimitada (largura/altura) em um bloco de interface responsivo contendo embeds, iframes ou Imóveis fotográficos complexos."
25
+ },
26
+ {
27
+ "name": "assistant",
28
+ "docPath": "docs/components/assistant.md",
29
+ "sourcePath": "components/ui/assistant.tsx",
30
+ "description": "Interface de conversação inteligente (Chatbot) projetada para integrar IA generativa diretamente no Design System xertica-ui."
31
+ },
32
+ {
33
+ "name": "avatar",
34
+ "docPath": "docs/components/avatar.md",
35
+ "sourcePath": "components/ui/avatar.tsx",
36
+ "description": "Representação gráfica e visual de uma Entidade, Usuário ou Organização."
37
+ },
38
+ {
39
+ "name": "badge",
40
+ "docPath": "docs/components/badge.md",
41
+ "sourcePath": "components/ui/badge.tsx",
42
+ "description": "Pequenos blocos informacionais sem formato de interação para indicação textual/status rápida. Etiqueta."
43
+ },
44
+ {
45
+ "name": "breadcrumb",
46
+ "docPath": "docs/components/breadcrumb.md",
47
+ "sourcePath": "components/ui/breadcrumb.tsx",
48
+ "description": "Exibe o caminho hierárquico percorrido pelo usuário até a página atual, providenciando navegação para voltar à telas antecessoras."
49
+ },
50
+ {
51
+ "name": "button",
52
+ "docPath": "docs/components/button.md",
53
+ "sourcePath": "components/ui/button.tsx",
54
+ "description": "Botão principal para ações do usuário."
55
+ },
56
+ {
57
+ "name": "calendar",
58
+ "docPath": "docs/components/calendar.md",
59
+ "sourcePath": "components/ui/calendar.tsx",
60
+ "description": "Selecionador de dadas baseado na robusta biblioteca interativa `react-day-picker`."
61
+ },
62
+ {
63
+ "name": "card",
64
+ "docPath": "docs/components/card.md",
65
+ "sourcePath": "components/ui/card.tsx",
66
+ "description": "Base estrutural semântica para enclausurar seções. Dá volume, sombras nativas e hierarquização por bordas. O uso universal da web moderna."
67
+ },
68
+ {
69
+ "name": "carousel",
70
+ "docPath": "docs/components/carousel.md",
71
+ "sourcePath": "components/ui/carousel.tsx",
72
+ "description": "Carrossel complexo construído em cima do engine robusto temporal `embla-carousel-react`."
73
+ },
74
+ {
75
+ "name": "chart",
76
+ "docPath": "docs/components/chart.md",
77
+ "sourcePath": "components/ui/chart.tsx",
78
+ "description": "Poderosa camada semântica Xertica UI envolvendo a biblioteca analítica `recharts`. Abstrai injeções de cor de temas responsivos/dark mode para dentro dos gráficos SVG."
79
+ },
80
+ {
81
+ "name": "checkbox",
82
+ "docPath": "docs/components/checkbox.md",
83
+ "sourcePath": "components/ui/checkbox.tsx",
84
+ "description": "Componente de seleção booleana isolada ou de múltipla escolha."
85
+ },
86
+ {
87
+ "name": "collapsible",
88
+ "docPath": "docs/components/collapsible.md",
89
+ "sourcePath": "components/ui/collapsible.tsx",
90
+ "description": "Semelhante ao Accordion, porém livre de dependências de listas. Um painel isolado que expõe e contrai um bloco de conteúdo, geralmente usado isoladamente e não em empilhamentos de múltiplos irmãos (neste caso, prefira o Accordion)."
91
+ },
92
+ {
93
+ "name": "command",
94
+ "docPath": "docs/components/command.md",
95
+ "sourcePath": "components/ui/command.tsx",
96
+ "description": "Menu de busca universal, filtragem rápida e navegação de comandos estilo Spotlight (`⌘K`, Cmd+K). Escrito sobre `cmdk`."
97
+ },
98
+ {
99
+ "name": "context-menu",
100
+ "docPath": "docs/components/context-menu.md",
101
+ "sourcePath": "components/ui/context-menu.tsx",
102
+ "description": "Exibe um menu sobre a posição do ponteiro, ativado estritamente clicando com o Botão Direito do mouse ou Right-Click (evento OnContextMenu)."
103
+ },
104
+ {
105
+ "name": "dialog",
106
+ "docPath": "docs/components/dialog.md",
107
+ "sourcePath": "components/ui/dialog.tsx",
108
+ "description": "Overlay modal focado no usuário que suspende a navegação pela interface subjacente até ser resolvido."
109
+ },
110
+ {
111
+ "name": "drawer",
112
+ "docPath": "docs/components/drawer.md",
113
+ "sourcePath": "components/ui/drawer.tsx",
114
+ "description": "Painel de folha móvel baseado em arrasto (Slide/Swipe). Diferente do `Sheet` (geralmente fixado na direita/esquerda), o Drawer por padrão escala a partir de **baixo para cima** da tela e suporta toque interativo no Mobile nativamente. Usado através da lib `vaul`."
115
+ },
116
+ {
117
+ "name": "dropdown-menu",
118
+ "docPath": "docs/components/dropdown-menu.md",
119
+ "sourcePath": "components/ui/dropdown-menu.tsx",
120
+ "description": "Exibe um menu de comandos para o usuário em forma flutuante via janela modal suspensa (exibe por gatilho ao clique, não hover ativo)."
121
+ },
122
+ {
123
+ "name": "empty",
124
+ "docPath": "docs/components/empty.md",
125
+ "sourcePath": "components/ui/empty.tsx",
126
+ "description": "Componente figurativo para ilustrar \"Empty States\" - quando listas ou bancos de dados retornam vazios ou páginas que recém nasceram ainda não contem registros."
127
+ },
128
+ {
129
+ "name": "file-upload",
130
+ "docPath": "docs/components/file-upload.md",
131
+ "sourcePath": "components/ui/file-upload.tsx",
132
+ "description": "Área de arrastar e soltar (Drag and Drop) ou Input padronizado para anexação de Mídias e Arquivos Genéricos."
133
+ },
134
+ {
135
+ "name": "form",
136
+ "docPath": "docs/components/form.md",
137
+ "sourcePath": "components/ui/form.tsx",
138
+ "description": "A abstração primária para manipulação complexa de estados de inputs, integrando `react-hook-form` e `zod`."
139
+ },
140
+ {
141
+ "name": "hover-card",
142
+ "docPath": "docs/components/hover-card.md",
143
+ "sourcePath": "components/ui/hover-card.tsx",
144
+ "description": "Overlay não acionável pelo clique, mas pelo mouse-over (hover), usado para revelar previews ricos sobre links importantes."
145
+ },
146
+ {
147
+ "name": "input-otp",
148
+ "docPath": "docs/components/input-otp.md",
149
+ "sourcePath": "components/ui/input-otp.tsx",
150
+ "description": "Um preenchedor mascarado multifragmentado (One-Time Password) inspirado no input nativo do iOS. Facilita muito a confirmação de Códigos SMS (2FA)."
151
+ },
152
+ {
153
+ "name": "input",
154
+ "docPath": "docs/components/input.md",
155
+ "sourcePath": "components/ui/input.tsx",
156
+ "description": "Campos de entrada de dados simples e texto para formulários."
157
+ },
158
+ {
159
+ "name": "label",
160
+ "docPath": "docs/components/label.md",
161
+ "sourcePath": "components/ui/label.tsx",
162
+ "description": "Etiqueta semântica tipográfica base `<label>` utilizada para amarrar textos descritivos aos respectivos formulários ou botões."
163
+ },
164
+ {
165
+ "name": "map",
166
+ "docPath": "docs/components/map.md",
167
+ "sourcePath": "components/ui/map.tsx",
168
+ "description": "Sistema de geolocalização baseado na API do Google Maps, com suporte a marcadores avançados, polígonos, círculos e cálculo de rotas."
169
+ },
170
+ {
171
+ "name": "menubar",
172
+ "docPath": "docs/components/menubar.md",
173
+ "sourcePath": "components/ui/menubar.tsx",
174
+ "description": "Faixa de comando similar aos menus de desktop (Arquivos, Editar, Visualizar) encontrada no topo de sistemas operacionais Mac/Windows."
175
+ },
176
+ {
177
+ "name": "navigation-menu",
178
+ "docPath": "docs/components/navigation-menu.md",
179
+ "sourcePath": "components/ui/navigation-menu.tsx",
180
+ "description": "Mega Menu complexo, utilizado em Top-Navigations e Header de Landipages. Suporta drop-downs gigantescos ricos em Media e text flows. Similar ao header da Stripe."
181
+ },
182
+ {
183
+ "name": "notification-badge",
184
+ "docPath": "docs/components/notification-badge.md",
185
+ "sourcePath": "components/ui/notification-badge.tsx",
186
+ "description": "Semelhante à bolinha vermelha de notificações em apps móveis. Uma bolha ou balão pequeno indicando números ativos não lidos ou puramente a existência de tração (Dot)."
187
+ },
188
+ {
189
+ "name": "page-header",
190
+ "docPath": "docs/components/page-header.md",
191
+ "sourcePath": "components/ui/page-header.tsx",
192
+ "description": "Componente robusto para construção do título primário, descrição e ações de topo fixadas visualmente no começo do corpo das telas. Usado recorrentemente para manter simetria entre as *routes*."
193
+ },
194
+ {
195
+ "name": "pagination",
196
+ "docPath": "docs/components/pagination.md",
197
+ "sourcePath": "components/ui/pagination.tsx",
198
+ "description": "Navegação para distribuir volumes massivos de informações (como tabelas ou listas) dividindo itens em páginas. Baseado no novo radix pattern, usando sintaxe markup similar a acessibilidade W3C."
199
+ },
200
+ {
201
+ "name": "popover",
202
+ "docPath": "docs/components/popover.md",
203
+ "sourcePath": "components/ui/popover.tsx",
204
+ "description": "Painéis sobrepostos posicionáveis invocados após clique. Similar ao Tooltip nativo, mas com a função de injetar conteúdo rico, formulários ou actions diretas, e não some num Hover passivo."
205
+ },
206
+ {
207
+ "name": "progress",
208
+ "docPath": "docs/components/progress.md",
209
+ "sourcePath": "components/ui/progress.tsx",
210
+ "description": "Barra de progresso horizontal indicando avanço de uma tarefa com começo e fim quantificáveis ou estados de carregamento longos."
211
+ },
212
+ {
213
+ "name": "radio-group",
214
+ "docPath": "docs/components/radio-group.md",
215
+ "sourcePath": "components/ui/radio-group.tsx",
216
+ "description": "Componente que engloba opções mutuamente exclusivas e radioativas na seleção univalente."
217
+ },
218
+ {
219
+ "name": "rating",
220
+ "docPath": "docs/components/rating.md",
221
+ "sourcePath": "components/ui/rating.tsx",
222
+ "description": "Componente visual de pontuação/avaliação formatado em 5 ícones (normalmente Estrelas). Permite avaliação fracionária."
223
+ },
224
+ {
225
+ "name": "resizable",
226
+ "docPath": "docs/components/resizable.md",
227
+ "sourcePath": "components/ui/resizable.tsx",
228
+ "description": "Painéis de dimensão embutida manipuláveis criados em cima de `react-resizable-panels`."
229
+ },
230
+ {
231
+ "name": "scroll-area",
232
+ "docPath": "docs/components/scroll-area.md",
233
+ "sourcePath": "components/ui/scroll-area.tsx",
234
+ "description": "Barra de rolamento customizada (`Radix ScrollArea`) estilizada visualmente para não quebrar com temas Dark/Light nem afetar as larguras exatas do layout inter-browser como as \"scrollbars\" nativas feias do Windows fazem."
235
+ },
236
+ {
237
+ "name": "search",
238
+ "docPath": "docs/components/search.md",
239
+ "sourcePath": "components/ui/search.tsx",
240
+ "description": "Input super especializado para buscas de interface amplas (Search Bar). Frequentemente inclui icone de lupa embutido."
241
+ },
242
+ {
243
+ "name": "select",
244
+ "docPath": "docs/components/select.md",
245
+ "sourcePath": "components/ui/select.tsx",
246
+ "description": "Menu suspenso (`dropdown`) focado em seleção univalente ou polivalente de dados a partir de uma lista pré-determinada."
247
+ },
248
+ {
249
+ "name": "separator",
250
+ "docPath": "docs/components/separator.md",
251
+ "sourcePath": "components/ui/separator.tsx",
252
+ "description": "Divisor semântico temático abstrato (`<hr>`) estilizado com `bg-border`."
253
+ },
254
+ {
255
+ "name": "sheet",
256
+ "docPath": "docs/components/sheet.md",
257
+ "sourcePath": "components/ui/sheet.tsx",
258
+ "description": "Overlay que desliza para dentro da tela e captura foco integral, empurrando o resto da UI pro fundo (efeito drawer/offcanvas)."
259
+ },
260
+ {
261
+ "name": "sidebar",
262
+ "docPath": "docs/components/sidebar.md",
263
+ "sourcePath": "components/ui/sidebar.tsx",
264
+ "description": "Navegação lateral primária para aplicações ou painéis gerenciais. A Xertica UI suporta o modo padrão e um modo estendido \"assistant\"."
265
+ },
266
+ {
267
+ "name": "skeleton",
268
+ "docPath": "docs/components/skeleton.md",
269
+ "sourcePath": "components/ui/skeleton.tsx",
270
+ "description": "Placeholder provisório para dar a ilusão do layout exato antes da carga do conteúdo (efeito shimmer pulsante). Melhora psicologicamente as métricas de Perceived Wait Time."
271
+ },
272
+ {
273
+ "name": "slider",
274
+ "docPath": "docs/components/slider.md",
275
+ "sourcePath": "components/ui/slider.tsx",
276
+ "description": "Componente de input visual na forma de barra delimitadora horizontal em que o usuário manipula o \"thumb\" ou cabeça do indicador para selecionar valores quantitativos em intervalos fixos."
277
+ },
278
+ {
279
+ "name": "sonner",
280
+ "docPath": "docs/components/sonner.md",
281
+ "sourcePath": "components/ui/sonner.tsx",
282
+ "description": "Disparador de mensagens em formato \"Toast\". Uma notificação flutuante e descartável na lateral/vizinhança da tela sem intervenção do layout."
283
+ },
284
+ {
285
+ "name": "stats-card",
286
+ "docPath": "docs/components/stats-card.md",
287
+ "sourcePath": "components/ui/stats-card.tsx",
288
+ "description": "Variação específica e padronizada do `Card` projetada exclusivamente para estatísticas rápidas numericas (Indicadores Financeiros/Métricas)."
289
+ },
290
+ {
291
+ "name": "stepper",
292
+ "docPath": "docs/components/stepper.md",
293
+ "sourcePath": "components/ui/stepper.tsx",
294
+ "description": "Orientador visual de etapas para guiar usuários através de formulários extensos."
295
+ },
296
+ {
297
+ "name": "switch",
298
+ "docPath": "docs/components/switch.md",
299
+ "sourcePath": "components/ui/switch.tsx",
300
+ "description": "Controle binário visual alternador (On/Off)."
301
+ },
302
+ {
303
+ "name": "table",
304
+ "docPath": "docs/components/table.md",
305
+ "sourcePath": "components/ui/table.tsx",
306
+ "description": "Exibição robusta de dados tabulares (linx-coluna) baseada em HTML Tables mas com Tailwind CSS styling padronizado."
307
+ },
308
+ {
309
+ "name": "tabs",
310
+ "docPath": "docs/components/tabs.md",
311
+ "sourcePath": "components/ui/tabs.tsx",
312
+ "description": "Componente de navegação intra-página que fragmenta grandes visualizações limitando-se ao que o usuário escolhe."
313
+ },
314
+ {
315
+ "name": "textarea",
316
+ "docPath": "docs/components/textarea.md",
317
+ "sourcePath": "components/ui/textarea.tsx",
318
+ "description": "Campos de entrada de dados de múltiplas linhas projetados especificamente para blocos longos de texto aberto."
319
+ },
320
+ {
321
+ "name": "timeline",
322
+ "docPath": "docs/components/timeline.md",
323
+ "sourcePath": "components/ui/timeline.tsx",
324
+ "description": "Rastreador histórico vertical projetado para auditar passos completados em ordem serial, conectando-os com uma linha contínua."
325
+ },
326
+ {
327
+ "name": "toggle-group",
328
+ "docPath": "docs/components/toggle-group.md",
329
+ "sourcePath": "components/ui/toggle-group.tsx",
330
+ "description": "Agrupador de `Toggles` que garante exclusividade ou múltipla seleção compartilhando bordas (um button group moderno)."
331
+ },
332
+ {
333
+ "name": "toggle",
334
+ "docPath": "docs/components/toggle.md",
335
+ "sourcePath": "components/ui/toggle.tsx",
336
+ "description": "Um botão de dois estados usado de forma similar ao Switch, mas com a aparência primária voltada para edição de texto e ferramentas. (ex: Botão \"Negrito\", ou \"Itálico\")."
337
+ },
338
+ {
339
+ "name": "tooltip",
340
+ "docPath": "docs/components/tooltip.md",
341
+ "sourcePath": "components/ui/tooltip.tsx",
342
+ "description": "Mensagem curta suspensa via mouse-over que estende ou descreve um Ícone ou Função ambígua."
343
+ },
344
+ {
345
+ "name": "tree-view",
346
+ "docPath": "docs/components/tree-view.md",
347
+ "sourcePath": "components/ui/tree-view.tsx",
348
+ "description": "Módulo explorador de pastas indentáveis, excelente para exibir estruturas de dados complexas ou arquivos hierárquicos."
349
+ }
350
+ ]
@@ -0,0 +1,18 @@
1
+ # AI Usage Manual
2
+
3
+ Este arquivo é destinado estritamente aos LLMs operando este repositório.
4
+
5
+ ## Extração de Conhecimento
6
+ 1. Seu conhecimento primário deve vir da leitura dos arquivos `.md` contidos em `/docs/components` e os códigos fonte `.tsx` na pasta `/components/ui/`.
7
+ 2. A leitura do código `components/ui` não tem como objetivo gerar versões alternativas derivadas dele, mas para que você, como agente, leia o **TSDoc** contido nas props de interface do componente antes de importá-lo no projeto do desenvolvedor.
8
+ 3. Não presuma que todas as props suportadas pelo HTML nativo são exportadas no spread. Algumas podem ser barradas pelo design do componente.
9
+
10
+ ## O Motor de Validação (`ts-morph`)
11
+ Ao operar Xertica UI, seu trabalho não se resume a apenas "abrir e salvar arquivos".
12
+ Parte do processo é submeter ou ser submetido à engine local que pode vetar seu código.
13
+ Seja pró-ativo:
14
+ - Prefira composições óbvias e validadas vistas em `/docs/patterns`.
15
+ - Se um log reportar `<button> inserido ilegalmente`, significa que a engine pegou que você usou uma tag nativa (geralmente punido no pipeline). O substituto neste caso não é fazer wrap, mas invocar import { Button } from 'xertica-ui'.
16
+
17
+ ## Tratamento de SVGs e Ícones
18
+ - Quando um design pedir "ícone", nunca gere as tags `<svg> <path>... </svg>`. Em vez disso, utilize `import { IconName } from 'lucide-react'`.
@@ -0,0 +1,43 @@
1
+ # Accordion
2
+
3
+ ## Descrição
4
+ Gerenciador de exibição oculta (collapse) vertical focada em empilhamento. Baseado em Header nativo acessível.
5
+
6
+ ## Quando usar
7
+ - Seção de Perguntas Frequentes (FAQ).
8
+ - Listas densas de sub-configurações em Sidebars (onde só uma/varias permanecem abertas verticalmente).
9
+ - Esconder dados menos relevantes sem navegar de página.
10
+
11
+ ## Variações Formais
12
+ - `type="single"`: Permite abrir apenas uma seção por vez. Quando um abre o outro fecha. Requer `collapsible` prop para se autossuspender.
13
+ - `type="multiple"`: Permite todos os abertos independentes simultaneamente.
14
+
15
+ ## Exemplo estruturado
16
+
17
+ ```tsx
18
+ import {
19
+ Accordion,
20
+ AccordionContent,
21
+ AccordionItem,
22
+ AccordionTrigger,
23
+ } from "xertica-ui"
24
+
25
+ <Accordion type="single" collapsible className="w-full">
26
+ <AccordionItem value="item-1">
27
+ <AccordionTrigger>Esta biblioteca é acessível (W3C)?</AccordionTrigger>
28
+ <AccordionContent>
29
+ Sim. Baseia-se integralmente no Radix UI e ARIA roles garantindo leitores de telas afiados.
30
+ </AccordionContent>
31
+ </AccordionItem>
32
+ <AccordionItem value="item-2">
33
+ <AccordionTrigger>Como aplico os estilos personalizados?</AccordionTrigger>
34
+ <AccordionContent>
35
+ Sobrescreva o `className` no trigger ou content diretamente. As classes utilitárias são mescladas via `tailwind-merge`.
36
+ </AccordionContent>
37
+ </AccordionItem>
38
+ </Accordion>
39
+ ```
40
+
41
+ ## Regras para IA
42
+ - `AccordionItem` REQUER OBRIGATORIAMENTE uma string injetada em `value="xxx"`. É como o contexto rastreia quem está visível. Injetar sub-componentes complexos na Content sem passar a value do Item quebrará a interação em state-machines.
43
+ - O Chevron animado (`ChevronDown`) já está solidificado e embutido dentro de `AccordionTrigger`. Não reimplemente um ícone de seta nativamente a não ser se pedido de variante distinta.
@@ -0,0 +1,50 @@
1
+ # Alert Dialog
2
+
3
+ ## Descrição
4
+ Modal interruptivo e destrutivo que requer uma ação explícita pelo usuário para ser descartado ou aprovado.
5
+
6
+ ## Quando usar
7
+ - Ações críticas IRREVERSÍVEIS: Excluir Usuário, Apagar Base de Dados, Cancelar Assinatura.
8
+
9
+ ## Diferenças do Dialog comum
10
+ Enquanto `Dialog` pode ser fechado clicando-se no fundo escuro (backdrop) ou com no `X` superior, o `<AlertDialog>` te obriga a interagir com os botões inferiores Cancelar ou Aceitar (preventing accidental dismissals).
11
+
12
+ ## Exemplo mínimo
13
+
14
+ ```tsx
15
+ import {
16
+ AlertDialog,
17
+ AlertDialogAction,
18
+ AlertDialogCancel,
19
+ AlertDialogContent,
20
+ AlertDialogDescription,
21
+ AlertDialogFooter,
22
+ AlertDialogHeader,
23
+ AlertDialogTitle,
24
+ AlertDialogTrigger,
25
+ Button
26
+ } from "xertica-ui"
27
+
28
+ <AlertDialog>
29
+ <AlertDialogTrigger asChild>
30
+ <Button variant="destructive">Apagar Conta</Button>
31
+ </AlertDialogTrigger>
32
+ <AlertDialogContent>
33
+ <AlertDialogHeader>
34
+ <AlertDialogTitle>Você tem absoluta certeza?</AlertDialogTitle>
35
+ <AlertDialogDescription>
36
+ Essa ação é irreversível e excluirá permanentemente seus dados dos nossos servidores.
37
+ </AlertDialogDescription>
38
+ </AlertDialogHeader>
39
+ <AlertDialogFooter>
40
+ <AlertDialogCancel>Cancelar</AlertDialogCancel>
41
+ <AlertDialogAction className="bg-destructive text-destructive-foreground hover:bg-destructive/90">
42
+ Sim, excluir
43
+ </AlertDialogAction>
44
+ </AlertDialogFooter>
45
+ </AlertDialogContent>
46
+ </AlertDialog>
47
+ ```
48
+
49
+ ## Regras para IA
50
+ - Em aplicações React orientadas a estado, você pode controlar externamente ligando a prop `open={isOpen}` e escutando `onOpenChange={setIsOpen}` no Root, omitindo o `Trigger` local.
@@ -0,0 +1,36 @@
1
+ # Alert
2
+
3
+ ## Descrição
4
+ Blocos informativos fixos e destacados para alertar o usuário de algo importante que não deve ser descartável e exige leitura compulsória na mesma página.
5
+
6
+ ## Quando usar
7
+ - Erros de validação críticos do formulário, que bloqueiam uso inteiro.
8
+ - Avisos do tipo (Sua versão Free expira em 3 dias).
9
+ - Banner Empty State ou avisos sobre funcionalidade desativada.
10
+
11
+ ## Quando NÃO usar
12
+ - Notificações de sucessos transientes "Cadastrado com sucesso!". Nesses casos, use **Sonner** (`toast()`).
13
+ - Para blocos apenas de dados informativos contextuais. Dê preferência a `Card`.
14
+
15
+ ## Variações Formais
16
+ - `default`
17
+ - `destructive`
18
+
19
+ ## Exemplo mínimo
20
+
21
+ ```tsx
22
+ import { Alert, AlertDescription, AlertTitle } from 'xertica-ui';
23
+ import { Terminal } from 'lucide-react';
24
+
25
+ <Alert>
26
+ <Terminal className="h-4 w-4" />
27
+ <AlertTitle>Fique Atento!</AlertTitle>
28
+ <AlertDescription>
29
+ Você pode adicionar componentes interativos para seus alertas futuramente.
30
+ </AlertDescription>
31
+ </Alert>
32
+ ```
33
+
34
+ ## Regras para IA
35
+ - Alert demanda a composição `Alert Title` e `Alert Description` para garantir espaçamento interno perfeito. O uso do ícone dentro (passado antes do `AlertTitle`) também é muito encorajado e alinha corretamente.
36
+ - Nunca adicione background ou borders por conta própria (explicado em Guidelines) a não ser que pretenda gerar uma variante inteiramente nova temporária.
@@ -0,0 +1,26 @@
1
+ # Aspect Ratio
2
+
3
+ ## Descrição
4
+ Força uma proporção delimitada (largura/altura) em um bloco de interface responsivo contendo embeds, iframes ou Imóveis fotográficos complexos.
5
+
6
+ ## Quando usar
7
+ - Para exibir Imagens de Capa (`16/9`), Avatares Gigescos Quadratura (`1/1`), Videos de Youtube (`16/9`).
8
+
9
+ ## Exemplo mínimo
10
+
11
+ ```tsx
12
+ import { AspectRatio } from "xertica-ui"
13
+
14
+ <div className="w-[450px]">
15
+ <AspectRatio ratio={16 / 9} className="bg-muted">
16
+ <img
17
+ src="/placeholder.png"
18
+ alt="Capa de Vídeo"
19
+ className="rounded-md object-cover w-full h-full"
20
+ />
21
+ </AspectRatio>
22
+ </div>
23
+ ```
24
+
25
+ ## Regras para IA
26
+ - O filho injetado que dita o conteúdo deve preencher o invólucro do `AspectRatio` com classes unificadas (ex `w-full h-full object-cover`), senão o calculo matemático de padding-bottom provido no Radix fica quebrado.
@@ -0,0 +1,41 @@
1
+ # Xertica Assistant
2
+
3
+ ## Descrição
4
+ Interface de conversação inteligente (Chatbot) projetada para integrar IA generativa diretamente no Design System xertica-ui.
5
+
6
+ ## Quando usar
7
+ - Implementação de copilotos de navegação.
8
+ - Auxiliar de suporte ao usuário dentro da plataforma.
9
+ - Ferramenta de análise de dados interativa (usando tabelas e gráficos injetados na resposta).
10
+
11
+ ## Modos de Exibição
12
+ - `collapsed`: Apenas ícones laterais, ocupando espaço mínimo.
13
+ - `expanded` (Padrão): Painel lateral completo que pode ser aberto/fechado.
14
+ - `fullPage`: Ocupa 100% da viewport, ideal para páginas dedicadas de "AI Chat".
15
+
16
+ ## Exemplo Estruturado
17
+
18
+ ```tsx
19
+ import { XerticaAssistant } from "xertica-ui"
20
+
21
+ <XerticaAssistant
22
+ userName="Marcos"
23
+ mode="expanded"
24
+ isExpanded={true}
25
+ suggestions={[
26
+ { id: '1', texto: 'Resuma os relatórios de hoje' },
27
+ { id: '2', texto: 'Quantos usuários estão ativos?' }
28
+ ]}
29
+ onSendMessage={(text) => handleAiResponse(text)}
30
+ />
31
+ ```
32
+
33
+ ## Respostas Ricas
34
+ O assistente suporta a injeção de componentes nas mensagens via `Message` interface:
35
+ - `chartData` e `chartConfig`: Renderiza gráficos automáticos na bolha de resposta.
36
+ - `tableData`: Renderiza tabelas formatadas.
37
+ - `documentContent`: Abre visualização de documento lada a lado.
38
+
39
+ ## Regras para IA
40
+ - No modo `expanded`, controle o estado de abertura via `isExpanded` e `onToggle`.
41
+ - Para simular respostas instantâneas sem backend real em protótipos, utilize a prop `demoMode={true}` e, opcionalmente, `responseGenerator`.
@@ -0,0 +1,32 @@
1
+ # Avatar
2
+
3
+ ## Descrição
4
+ Representação gráfica e visual de uma Entidade, Usuário ou Organização.
5
+
6
+ ## Quando usar
7
+ - Fotos de perfil no header da aplicação.
8
+ - Identificação de linhas de uma Tabela de Usuários.
9
+ - Autoria de Comentários ou Atividades.
10
+
11
+ ## Estrutura OBRIGATÓRIA
12
+ - `Avatar` (Root)
13
+ - `AvatarImage` (Tenta carregar o src fornecido, emitindo onerror se falhar).
14
+ - `AvatarFallback` (Alternativa em texto, usualmente as Iniciais).
15
+
16
+ ## Exemplo mínimo
17
+
18
+ ```tsx
19
+ import { Avatar, AvatarFallback, AvatarImage } from "xertica-ui"
20
+
21
+ export function AvatarDemo() {
22
+ return (
23
+ <Avatar>
24
+ <AvatarImage src="https://github.com/shadcn.png" alt="@xertica" />
25
+ <AvatarFallback>XC</AvatarFallback>
26
+ </Avatar>
27
+ )
28
+ }
29
+ ```
30
+
31
+ ## Regras para IA
32
+ - Em aplicações complexas, nunca use `img` puros para avatares, porque se a imagem vier 404 da nuvem nativamente exibirá um icon quebrado péssimo. O `AvatarFallback` dita o padrão estético salva-vidas para links partidos.
@@ -0,0 +1,30 @@
1
+ # Badge
2
+
3
+ ## Descrição
4
+ Pequenos blocos informacionais sem formato de interação para indicação textual/status rápida. Etiqueta.
5
+
6
+ ## Quando usar
7
+ - Informar Status em Tabela (ex: Ativo, Inativo).
8
+ - Enumerar categorias (Tags: *Front-end*, *NodeJS*).
9
+ - Contadores.
10
+
11
+ ## Quando NÃO usar
12
+ - Ações clicáveis que levam a caminhos grandes (para interações clicáveis prefira Button sizes compactos, ou Tags filtráveis específicas se o sistema tiver design system advanced, ou simplesmente atrele role="button" ao Badge com cuidado de navegação limitante).
13
+
14
+ ## Variações Formais
15
+ - `default`
16
+ - `secondary`
17
+ - `destructive`
18
+ - `outline`
19
+
20
+ ## Exemplo mínimo
21
+
22
+ ```tsx
23
+ import { Badge } from 'xertica-ui';
24
+
25
+ <Badge variant="outline">Em Processamento</Badge>
26
+ ```
27
+
28
+ ## Regras para IA
29
+ - Não crie variações semânticas que não existem nativamente (como `variant="success"` ou `variant="warning"`). Se você precisa de *status styles*, no Xertica UI aplique *Tailwind Override*: `<Badge className="bg-emerald-500 hover:bg-emerald-600">Ativo</Badge>`.
30
+ - Use a variante `outline` frequentemente quando as badges forem mais neutras e numerosas em Grid Systems para diminuir o cansaço visual.