@esperanca-ui/componentes 2.8.2 → 2.11.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
@@ -31,6 +31,95 @@ export function Example() {
31
31
  }
32
32
  ```
33
33
 
34
+ ## Shell Utilities Publicas
35
+
36
+ O pacote publico tambem entrega classes `esp-shell-*` para o layout base de aplicacoes com `Sidebar`, `PageHeader` e area principal.
37
+
38
+ Classes disponiveis:
39
+
40
+ - `esp-shell`: wrapper horizontal principal
41
+ - `esp-shell-main`: coluna principal ao lado da sidebar
42
+ - `esp-shell-header`: padding lateral padrao para `PageHeader`
43
+ - `esp-shell-actions`: alinhamento padrao das acoes do topo
44
+ - `esp-shell-content`: area principal abaixo do header
45
+ - `esp-shell-container`: container centralizado com largura maxima
46
+ - `esp-shell-density-compact`: reduz o espacamento geral do shell
47
+ - `esp-shell-density-comfortable`: densidade equilibrada para dashboard
48
+ - `esp-shell-density-spacious`: aumenta o respiro geral do shell
49
+
50
+ Exemplo:
51
+
52
+ ```tsx
53
+ import { Background, Button, PageHeader, Sidebar } from '@esperanca-ui/componentes';
54
+ import '@esperanca-ui/componentes/style.css';
55
+ import { FiBell, FiHome, FiPlus, FiSearch, FiSettings, FiUsers } from 'react-icons/fi';
56
+
57
+ const sections = [
58
+ {
59
+ heading: 'Workspace',
60
+ items: [
61
+ { label: 'Dashboard', icon: <FiHome />, path: '/dashboard' },
62
+ { label: 'Members', icon: <FiUsers />, path: '/members' },
63
+ { label: 'Settings', icon: <FiSettings />, path: '/settings' },
64
+ ],
65
+ },
66
+ ];
67
+
68
+ export function WorkspaceShell() {
69
+ return (
70
+ <Background pattern="dots">
71
+ <div className="esp-shell esp-shell-density-comfortable">
72
+ <Sidebar
73
+ surface="glass"
74
+ pinned
75
+ brandText="Ops Hub"
76
+ userName="Ana Costa"
77
+ userEmail="ana@example.com"
78
+ sections={sections}
79
+ activePath="/dashboard"
80
+ />
81
+
82
+ <div className="esp-shell-main">
83
+ <PageHeader
84
+ sticky
85
+ title=""
86
+ className="esp-shell-header"
87
+ actions={
88
+ <div className="esp-shell-actions">
89
+ <Button variant="ghost" size="sm" className="esp-quick-action esp-quick-action-expand" aria-label="Buscar">
90
+ <FiSearch />
91
+ <span className="esp-quick-action-text">Buscar</span>
92
+ </Button>
93
+ <Button variant="ghost" size="sm" className="esp-quick-action esp-quick-action-expand" aria-label="Novo projeto">
94
+ <FiPlus />
95
+ <span className="esp-quick-action-text">Novo projeto</span>
96
+ </Button>
97
+ <Button variant="ghost" size="sm" className="esp-quick-action esp-quick-action-expand esp-quick-action-soft" aria-label="Notificacoes">
98
+ <FiBell />
99
+ <span className="esp-quick-action-text">Notificacoes</span>
100
+ </Button>
101
+ </div>
102
+ }
103
+ />
104
+
105
+ <main className="esp-shell-content">
106
+ <div className="esp-shell-container">
107
+ {/* conteudo da pagina */}
108
+ </div>
109
+ </main>
110
+ </div>
111
+ </div>
112
+ </Background>
113
+ );
114
+ }
115
+ ```
116
+
117
+ Se o app for mais denso, principalmente com tabela, agenda ou lista operacional, prefira:
118
+
119
+ ```tsx
120
+ <div className="esp-shell esp-shell-density-compact">...</div>
121
+ ```
122
+
34
123
  ## Quick Actions Publicas
35
124
 
36
125
  O pacote publico tambem entrega classes `esp-*` para acoes rapidas de topo usando `Button`.
@@ -44,7 +133,7 @@ Classes disponiveis:
44
133
  - `esp-quick-action-glass`: variacao translúcida
45
134
  - `esp-quick-action-text`: texto que participa da expansao no hover
46
135
 
47
- Essas classes cuidam do visual do botao. O alinhamento do grupo no topo continua sendo responsabilidade do layout da aplicacao.
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`.
48
137
 
49
138
  Exemplo:
50
139
 
@@ -77,11 +166,14 @@ export function TopQuickActions() {
77
166
 
78
167
  - `Background` entrega a superficie e os patterns. Blobs borrados, cards glass e outros adornos dos exemplos continuam sendo estilos da aplicacao consumidora.
79
168
  - `PageHeader` aceita qualquer `actions`, mas o layout do grupo de acoes continua sendo responsabilidade do app.
169
+ - `Tabs` foi pensado para dois niveis: navegacao contextual (`Resumo`, `Timeline`, `Gantt`, `Calendario`) e troca de modo (`Dia`, `Semana`, `Mes`).
80
170
  - `Sidebar` agora expõe `surface="default" | "soft" | "glass"` como API publica para definir a superficie do menu lateral.
171
+ - No desktop, o `Sidebar` se comporta como lateral fixa real; a docs aplica um override local so para manter os previews contidos na vitrine.
81
172
  - `TaskStatusBadge` e `TaskPriorityBadge` foram pensados como blocos base para agenda, cards de tarefa, timeline e Gantt.
82
173
  - Ambos aceitam presets prontos e tambem `name` + `colors` para cenarios customizados sem criar outro componente.
83
174
  - `TaskCard` e um wrapper de alto nivel sobre `Card`, herdando as mesmas variantes (`elevated`, `outlined`, `filled`, `glass`) e props visuais como `interactive`, `glassOpacity` e `glassBlur`.
84
175
  - `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.
176
+ - `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.
85
177
 
86
178
  ## Componentes Publicos
87
179
 
@@ -100,6 +192,7 @@ export function TopQuickActions() {
100
192
  | `Loading` | `import { Loading } from '@esperanca-ui/componentes'` | `<Loading variant="spinner" />` |
101
193
  | `Modal` | `import { Modal } from '@esperanca-ui/componentes'` | `<Modal isOpen={open} onClose={...}>...</Modal>` |
102
194
  | `PageHeader` | `import { PageHeader } from '@esperanca-ui/componentes'` | `<PageHeader title="Clientes" />` |
195
+ | `Tabs` | `import { Tabs } from '@esperanca-ui/componentes'` | `<Tabs items={items} variant="underline" />` |
103
196
  | `Portal` | `import { Portal } from '@esperanca-ui/componentes'` | `<Portal><div>Overlay</div></Portal>` |
104
197
  | `Radio` | `import { Radio } from '@esperanca-ui/componentes'` | `<Radio label="Opcao A" />` |
105
198
  | `RadioGroup` | `import { RadioGroup } from '@esperanca-ui/componentes'` | `<RadioGroup name="status" options={[...]} />` |
@@ -108,6 +201,7 @@ export function TopQuickActions() {
108
201
  | `TaskPriorityBadge` | `import { TaskPriorityBadge } from '@esperanca-ui/componentes'` | `<TaskPriorityBadge priority="high" />` |
109
202
  | `TaskCard` | `import { TaskCard } from '@esperanca-ui/componentes'` | `<TaskCard title="Revisar agenda" status="in_progress" />` |
110
203
  | `TaskCalendar` | `import { TaskCalendar } from '@esperanca-ui/componentes'` | `<TaskCalendar tasks={tasks} defaultDate="2026-03-01" showViewSwitcher />` |
204
+ | `GanttChart` | `import { GanttChart } from '@esperanca-ui/componentes'` | `<GanttChart groups={groups} defaultView="month" />` |
111
205
  | `DataTable` | `import { DataTable } from '@esperanca-ui/componentes'` | `<DataTable columns={columns} data={data} />` |
112
206
  | `Textarea` | `import { Textarea } from '@esperanca-ui/componentes'` | `<Textarea label="Descricao" />` |
113
207
  | `ThemeProvider` | `import { ThemeProvider } from '@esperanca-ui/componentes'` | `<ThemeProvider defaultTheme="system"><App /></ThemeProvider>` |