@esperanca-ui/componentes 2.14.23 → 2.15.0

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.
package/COMPONENTS.md CHANGED
@@ -67,7 +67,7 @@ const sections = [
67
67
 
68
68
  export function WorkspaceShell() {
69
69
  return (
70
- <Background variant="solid" pattern="dots">
70
+ <Background pattern="dots">
71
71
  <div className="esp-shell esp-shell-density-comfortable">
72
72
  <Sidebar
73
73
  surface="glass"
@@ -134,7 +134,6 @@ Classes disponiveis:
134
134
  - `esp-quick-action-text`: texto que participa da expansao no hover
135
135
 
136
136
  Essas classes cuidam do visual do botao. Para o layout do topo, prefira usar as classes publicas `esp-shell-actions` e `esp-shell-header`.
137
- Para headers mais densos, `Button size="xs"` reduz quick actions e botoes de texto sem criar outra variante de componente.
138
137
 
139
138
  Exemplo:
140
139
 
@@ -146,16 +145,16 @@ import { FiBell, FiPlus, FiSearch } from 'react-icons/fi';
146
145
  export function TopQuickActions() {
147
146
  return (
148
147
  <div style={{ display: 'flex', justifyContent: 'flex-end', gap: 8 }}>
149
- <Button variant="ghost" size="xs" className="esp-quick-action esp-quick-action-expand" aria-label="Buscar">
148
+ <Button variant="ghost" size="sm" className="esp-quick-action esp-quick-action-expand" aria-label="Buscar">
150
149
  <FiSearch />
151
150
  <span className="esp-quick-action-text">Buscar</span>
152
151
  </Button>
153
152
 
154
- <Button variant="ghost" size="xs" className="esp-quick-action esp-quick-action-outline" aria-label="Novo projeto">
153
+ <Button variant="ghost" size="sm" className="esp-quick-action esp-quick-action-outline" aria-label="Novo projeto">
155
154
  <FiPlus />
156
155
  </Button>
157
156
 
158
- <Button variant="ghost" size="xs" className="esp-quick-action esp-quick-action-soft" aria-label="Notificacoes">
157
+ <Button variant="ghost" size="sm" className="esp-quick-action esp-quick-action-soft" aria-label="Notificacoes">
159
158
  <FiBell />
160
159
  </Button>
161
160
  </div>
@@ -165,9 +164,8 @@ export function TopQuickActions() {
165
164
 
166
165
  ## Notas de Integracao
167
166
 
168
- - `Background` entrega a superficie e os patterns. Use `variant="solid"` quando quiser um fundo neutro, sem blooms nem gradientes decorativos do preset. Blobs borrados, cards glass e outros adornos dos exemplos continuam sendo estilos da aplicacao consumidora.
167
+ - `Background` entrega a superficie e os patterns. Blobs borrados, cards glass e outros adornos dos exemplos continuam sendo estilos da aplicacao consumidora.
169
168
  - `PageHeader` aceita qualquer `actions`, mas o layout do grupo de acoes continua sendo responsabilidade do app.
170
- - `PageHeader` agora aceita `variant="page" | "section"` para trocar a escala do titulo e da descricao sem criar outro componente para subtitulos de area.
171
169
  - `Tabs` foi pensado para dois niveis: navegacao contextual (`Resumo`, `Timeline`, `Gantt`, `Calendario`) e troca de modo (`Dia`, `Semana`, `Mes`).
172
170
  - `Sidebar` agora expõe `surface="default" | "soft" | "glass"` como API publica para definir a superficie do menu lateral.
173
171
  - Itens do `Sidebar` aceitam `children` para submenu nativo. Em desktop o grupo abre no hover; em mobile o mesmo item funciona como toggle por clique.
@@ -180,16 +178,17 @@ export function TopQuickActions() {
180
178
  - Para ajustar dashboards mais densos sem CSS manual, os charts tambem aceitam `axisFontSize`, `axisTitleFontSize`, `legendFontSize`, `valueLabelFontSize`, `valueLabelFontWeight` e `fontFamily`; no `LineChart`, `lineWidth` controla a espessura da linha.
181
179
  - No `LineChart`, os labels de valor acompanham a ordem vertical das series em cada ponto: linha mais alta com valor acima, linha mais baixa com valor abaixo; quando cruzam, o lado do rotulo troca junto.
182
180
  - Quando `enableUserPreferences` estiver ativo, o proprio usuario pode ajustar itens como titulo, legenda, nomes dos eixos, valores sobre os dados e orientacao do eixo X. Se `preferencesStorageKey` for informado, isso fica salvo em `localStorage`.
183
- - `TaskCalendar` usa o mesmo contrato visual do `Card` e agora suporta `month`, `week` e `day`. No mes o padrao virou chip resumido empilhado, com espaco para responsavel, tarefa, projeto e horas; se precisar manter o visual antigo, use `monthTaskVariant="badge"`. Quando um dia passa de `maxVisibleTasks`, o `+N mais` expande a celula inline. `dayHighlights` colore dias ou faixas para feriados, freezes e janelas especiais. Nos modos `month` e `week`, o overflow horizontal tambem aceita arraste com mouse/toque via `dragToScroll`.
184
- - `GanttChart` fecha a visao horizontal de planejamento e usa `groups` como primeiro nivel. Assim, o mesmo componente serve para agrupar por projeto ou por responsavel. `dayHighlights` pinta cabecalho e grade da timeline para destacar feriados, manutencoes e bloqueios operacionais sem alterar os itens do cronograma.
181
+ - `TaskCalendar` usa o mesmo contrato visual do `Card` e agora suporta `month`, `week` e `day`. No mes as tarefas ficam pequenas como badges; em semana e dia o padrao vira card com mais contexto.
182
+ - `GanttChart` fecha a visao horizontal de planejamento e usa `groups` como primeiro nivel. Assim, o mesmo componente serve para agrupar por projeto ou por responsavel.
185
183
  - `LineChart` e `StepLineChart` aceitam `yStartAtZero` para forcar o eixo Y a comecar em 0, `yMin` e `yMax` para definir limites customizados do eixo Y. Se nenhum for informado, o eixo e calculado automaticamente.
186
184
  - `DataTable` agora suporta ordenacao por coluna. Colunas com `sortable: true` exibem indicador de ordenacao clicavel (none → asc → desc → none). Dois modos: **local** (sem `onSortChange`, ordena os dados automaticamente) e **controlado/server-side** (com `onSortChange`, o consumidor controla a ordenacao via API). Props: `sortKey`, `sortDirection`, `onSortChange`. Tipo `SortDirection` exportado como `'asc' | 'desc'`.
185
+ - `DataTable` agora suporta densidade de linhas. O botao na toolbar alterna entre `compact`, `comfortable` e `spacious` — mesma escala de `esp-shell-density-*` — reduzindo/aumentando o padding das celulas (e dos cards no mobile). Padrao: `comfortable`. Sem a prop `density` o componente controla e persiste sozinho no `localStorage`; com ela, o consumidor controla via `onDensityChange`. Props: `density`, `onDensityChange`, `densityStorageKey`. Tipo `TableDensity` exportado como `'compact' | 'comfortable' | 'spacious'`.
187
186
 
188
187
  ## Componentes Publicos
189
188
 
190
189
  | Componente | Import | Uso minimo |
191
190
  | --- | --- | --- |
192
- | `Background` | `import { Background } from '@esperanca-ui/componentes'` | `<Background variant="solid" pattern="dots" />` |
191
+ | `Background` | `import { Background } from '@esperanca-ui/componentes'` | `<Background pattern="dots" />` |
193
192
  | `Button` | `import { Button } from '@esperanca-ui/componentes'` | `<Button>Salvar</Button>` |
194
193
  | `Card` | `import { Card } from '@esperanca-ui/componentes'` | `<Card><Card.Body>Conteudo</Card.Body></Card>` |
195
194
  | `MetricCard` | `import { MetricCard } from '@esperanca-ui/componentes'` | `<MetricCard value="42" title="Ativos" />` |
@@ -200,13 +199,11 @@ export function TopQuickActions() {
200
199
  | `FormSidebar` | `import { FormSidebar } from '@esperanca-ui/componentes'` | `<FormSidebar isOpen={open} onClose={...}>...</FormSidebar>` |
201
200
  | `Grid` | `import { Grid } from '@esperanca-ui/componentes'` | `<Grid columns={{ base: 1, md: 2 }} gap={4}>...</Grid>` |
202
201
  | `Input` | `import { Input } from '@esperanca-ui/componentes'` | `<Input label="Email" placeholder="Digite" />` |
203
- | `LoginForm` | `import { LoginForm } from '@esperanca-ui/componentes'` | `<LoginForm emailValue={email} onEmailChange={setEmail} passwordValue={password} onPasswordChange={setPassword} onSubmit={...} />` |
204
- | `LoginScreen` | `import { LoginScreen } from '@esperanca-ui/componentes'` | `<LoginScreen step="credentials" onSubmit={...} />` |
205
202
  | `LineChart` | `import { LineChart } from '@esperanca-ui/componentes'` | `<LineChart data={data} series={series} lineWidth={2.5} axisFontSize={11} valueLabelFontSize={10} valueLabelFontWeight={600} legendPosition="top" showValueLabels enableUserPreferences preferencesStorageKey="receita-board" />` |
206
203
  | `BarChart` | `import { BarChart } from '@esperanca-ui/componentes'` | `<BarChart data={data} series={series} xAxisLabel="Mes" yAxisLabel="Valor" yAxisTickWidth={112} axisFontSize={11} valueLabelFontSize={10} valueLabelFontWeight={600} showValueLabels enableUserPreferences />` |
207
204
  | `Loading` | `import { Loading } from '@esperanca-ui/componentes'` | `<Loading variant="spinner" />` ou `<Loading fullScreen text="Validando acesso" />` |
208
205
  | `Modal` | `import { Modal } from '@esperanca-ui/componentes'` | `<Modal isOpen={open} onClose={...}>...</Modal>` |
209
- | `PageHeader` | `import { PageHeader } from '@esperanca-ui/componentes'` | `<PageHeader title="Clientes" />` ou `<PageHeader variant="section" title="Filtros" />` |
206
+ | `PageHeader` | `import { PageHeader } from '@esperanca-ui/componentes'` | `<PageHeader title="Clientes" />` |
210
207
  | `Tabs` | `import { Tabs } from '@esperanca-ui/componentes'` | `<Tabs items={items} variant="underline" />` |
211
208
  | `Portal` | `import { Portal } from '@esperanca-ui/componentes'` | `<Portal><div>Overlay</div></Portal>` |
212
209
  | `Radio` | `import { Radio } from '@esperanca-ui/componentes'` | `<Radio label="Opcao A" />` |
@@ -217,7 +214,7 @@ export function TopQuickActions() {
217
214
  | `TaskCard` | `import { TaskCard } from '@esperanca-ui/componentes'` | `<TaskCard title="Revisar agenda" status="in_progress" />` |
218
215
  | `TaskCalendar` | `import { TaskCalendar } from '@esperanca-ui/componentes'` | `<TaskCalendar tasks={tasks} defaultDate="2026-03-01" showViewSwitcher />` |
219
216
  | `GanttChart` | `import { GanttChart } from '@esperanca-ui/componentes'` | `<GanttChart groups={groups} defaultView="month" />` |
220
- | `DataTable` | `import { DataTable } from '@esperanca-ui/componentes'` | `<DataTable columns={columns} data={data} layoutMode="scroll" dragToScroll />` |
217
+ | `DataTable` | `import { DataTable } from '@esperanca-ui/componentes'` | `<DataTable columns={columns} data={data} density="compact" layoutMode="scroll" dragToScroll />` |
221
218
  | `Textarea` | `import { Textarea } from '@esperanca-ui/componentes'` | `<Textarea label="Descricao" />` |
222
219
  | `ThemeProvider` | `import { ThemeProvider } from '@esperanca-ui/componentes'` | `<ThemeProvider defaultTheme="system"><App /></ThemeProvider>` |
223
220
  | `ToastProvider` + `useToast` | `import { ToastProvider, useToast } from '@esperanca-ui/componentes'` | `<ToastProvider><App /></ToastProvider>` |
package/README.md CHANGED
@@ -26,12 +26,11 @@ Biblioteca de componentes React com estilos em CSS puro, build com Vite e um sit
26
26
  ├── docs-site/ # app de documentacao
27
27
  ├── docker/ # imagens e configuracao nginx
28
28
  ├── docs/ # guias de uso/publicacao
29
- ├── scripts/ # wrappers Node para tarefas locais das docs
30
29
  ├── src/ # biblioteca publicada
31
30
  ├── .gitlab-ci.yml # validacao + publicacao
32
31
  ├── package.json # scripts e metadados do pacote
33
- ├── vite.config.ts # build da biblioteca
34
- └── vite.config.docs.mjs # build das docs
32
+ ├── vite.config.ts # build da biblioteca
33
+ └── vite.config.docs.ts # build das docs
35
34
  ```
36
35
 
37
36
  ## Configuracao (.env)