@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 +98 -4
- package/dist/{TopToast-UGU5NRjw.js → TopToast-CSnnsnjG.js} +186 -171
- package/dist/TopToast-CSnnsnjG.js.map +1 -0
- package/dist/TopToast-ClUnAHlI.cjs +2 -0
- package/dist/TopToast-ClUnAHlI.cjs.map +1 -0
- package/dist/components/TopNavBar.vue.d.ts +3 -3
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/plugin.cjs +1 -1
- package/dist/plugin.js +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/dist/TopToast-BTBDN1UT.cjs +0 -2
- package/dist/TopToast-BTBDN1UT.cjs.map +0 -1
- package/dist/TopToast-UGU5NRjw.js.map +0 -1
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
|
-
##
|
|
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
|
|