@topjoao/top-design-system 0.1.0-beta.16 → 0.1.0-beta.17

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/README.md CHANGED
@@ -106,10 +106,104 @@ import App from './App.vue'
106
106
  createApp(App).use(TopSolutionsDesignSystem).mount('#app')
107
107
  ```
108
108
 
109
- Após o registro, os componentes podem ser utilizados sem importação manual. A
110
- entrada `/plugin` também fornece as declarações globais usadas pela IDE.
111
-
112
- ## TopButton
109
+ Após o registro, os componentes podem ser utilizados sem importação manual. A
110
+ entrada `/plugin` também fornece as declarações globais usadas pela IDE.
111
+
112
+ ## TopNavBar
113
+
114
+ Barra de navegação corporativa com breadcrumbs, menu hierárquico, busca e
115
+ ações opcionais. A aplicação consumidora fornece os dados do menu, define a
116
+ página ativa e decide o que acontece em cada evento.
117
+
118
+ ```vue
119
+ <script setup lang="ts">
120
+ import { ref } from 'vue'
121
+ import { TopNavBar, type TopNavItem } from '@topjoao/top-design-system'
122
+
123
+ const clienteAtual = ref('prefeitura-a')
124
+
125
+ const secoes = [
126
+ {
127
+ id: 'planejamento',
128
+ label: 'Planejamento',
129
+ icon: 'pi pi-book',
130
+ children: [
131
+ {
132
+ id: 'programacao',
133
+ label: 'Programação',
134
+ children: [
135
+ { id: 'calendario', label: 'Calendário', to: '/programacao/calendario' },
136
+ ],
137
+ },
138
+ ],
139
+ },
140
+ ]
141
+
142
+ function navegar(item: TopNavItem) {
143
+ // Ex.: router.push(item.to)
144
+ }
145
+
146
+ function buscarNoMenu(query: string) {
147
+ // Filtre ou consulte os itens permitidos para este usuário.
148
+ }
149
+
150
+ function alternarAssistente() {}
151
+ function abrirSuporte() {}
152
+ </script>
153
+
154
+ <template>
155
+ <TopNavBar
156
+ :sections="secoes"
157
+ active-item-id="calendario"
158
+ searchable
159
+ show-aia
160
+ show-support
161
+ @navigate="navegar"
162
+ @search="buscarNoMenu"
163
+ @toggle-aia="alternarAssistente"
164
+ @open-support="abrirSuporte"
165
+ >
166
+ <template #brand>
167
+ <img src="/logo.svg" alt="Minha organização">
168
+ </template>
169
+
170
+ <template #context>
171
+ <select v-model="clienteAtual" aria-label="Cliente atual">
172
+ <option value="prefeitura-a">Prefeitura A</option>
173
+ <option value="prefeitura-b">Prefeitura B</option>
174
+ </select>
175
+ </template>
176
+ </TopNavBar>
177
+ </template>
178
+ ```
179
+
180
+ `activeItemId` gera automaticamente o breadcrumb da página ativa, incluindo os
181
+ ancestrais e dropdowns de cada nível. Por exemplo, um item `calendario` dentro
182
+ de `Programação` em `Planejamento` resulta em `Início / Navegação /
183
+ Planejamento / Programação / Calendário`.
184
+
185
+ Para personalizar a aparência, use nomes orientados ao que é exibido: `textColor`
186
+ para textos e ícones principais, `mutedTextColor` para detalhes secundários,
187
+ `menuTextColor` para o conteúdo dos dropdowns, além de `headerBackground`,
188
+ `breadcrumbBackground`, `menuBackground`, `accentColor`, `borderColor`, `radius`
189
+ e `height`.
190
+
191
+ | Slot | Uso |
192
+ |---|---|
193
+ | `brand` | Marca, logo ou nome do sistema. |
194
+ | `context` | Contexto de operação: cliente, órgão, ambiente, exercício ou escopo. |
195
+ | `actions` | Ações adicionais à direita da barra. |
196
+ | `user-menu` | Conteúdo adicional ou substituto para a área de usuário. |
197
+ | `search-results` | Apresentação personalizada dos resultados da busca. |
198
+ | `breadcrumb-actions` | Ações junto à página atual, como favoritos. |
199
+ | `mobile-footer` | Conteúdo adicional no menu mobile. |
200
+
201
+ Eventos: `navigate`, `search`, `toggle-aia`, `open-support`,
202
+ `toggle-favorite` e `user-action`. A barra não navega, persiste estado ou chama
203
+ serviços por conta própria. Quando `searchable` está ativo, `Ctrl+K` (ou `⌘K`
204
+ no macOS) move o foco para a pesquisa; `Escape` fecha o painel de busca.
205
+
206
+ ## TopButton
113
207
 
114
208
  Exemplo
115
209