@topjoao/top-design-system 0.1.0-beta.17 → 0.1.0-beta.19
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 +142 -183
- package/dist/{TopToast-CSnnsnjG.js → TopToast-Csmeip9p.js} +150 -598
- package/dist/TopToast-Csmeip9p.js.map +1 -0
- package/dist/TopToast-ILCmWgTM.cjs +2 -0
- package/dist/TopToast-ILCmWgTM.cjs.map +1 -0
- package/dist/components/TopTabs.vue.d.ts +34 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/nuxt.cjs +1 -1
- package/dist/nuxt.cjs.map +1 -1
- package/dist/nuxt.js +4 -4
- package/dist/nuxt.js.map +1 -1
- package/dist/plugin.cjs +1 -1
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.d.ts +2 -2
- package/dist/plugin.js +2 -2
- package/dist/plugin.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/dist/TopToast-CSnnsnjG.js.map +0 -1
- package/dist/TopToast-ClUnAHlI.cjs +0 -2
- package/dist/TopToast-ClUnAHlI.cjs.map +0 -1
- package/dist/components/TopNavBar.vue.d.ts +0 -119
package/README.md
CHANGED
|
@@ -106,112 +106,18 @@ 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
|
-
##
|
|
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
|
|
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
|
|
207
113
|
|
|
208
114
|
Exemplo
|
|
209
115
|
|
|
210
116
|
```vue
|
|
211
117
|
<template>
|
|
212
|
-
<TopButton label="Salvar" icon="pi pi-save" @click="salvar" />
|
|
213
|
-
<TopButton label="Cancelar" secondary />
|
|
214
|
-
<TopButton label="Excluir" severity="danger" />
|
|
118
|
+
<TopButton label="Salvar" icon="pi pi-save" @click="salvar" />
|
|
119
|
+
<TopButton label="Cancelar" secondary />
|
|
120
|
+
<TopButton label="Excluir" severity="danger" />
|
|
215
121
|
|
|
216
122
|
<TopButton label="Consultar" outlined>
|
|
217
123
|
<template #icon>
|
|
@@ -229,15 +135,15 @@ Exemplo
|
|
|
229
135
|
| `icon` | `string` | `''` |
|
|
230
136
|
| `loading` | `boolean` | `false` |
|
|
231
137
|
| `class` | `string` | `''` |
|
|
232
|
-
| `outlined` | `boolean` | `false` |
|
|
233
|
-
| `severity` | `'primary' \| 'secondary' \| 'success' \| 'warn' \| 'danger'` | `'primary'` |
|
|
234
|
-
| `secondary` | `boolean` | `false` |
|
|
138
|
+
| `outlined` | `boolean` | `false` |
|
|
139
|
+
| `severity` | `'primary' \| 'secondary' \| 'success' \| 'warn' \| 'danger'` | `'primary'` |
|
|
140
|
+
| `secondary` | `boolean` | `false` |
|
|
235
141
|
| `disabled` | `boolean` | `false` |
|
|
236
142
|
| `unstyled` | `boolean` | `false` |
|
|
237
143
|
| `type` | `'button' \| 'submit' \| 'reset'` | `'button'` |
|
|
238
144
|
|
|
239
|
-
O componente emite `click` sem payload e oferece o slot nomeado `icon`.
|
|
240
|
-
`secondary` permanece como atalho compatível para `severity="secondary"`.
|
|
145
|
+
O componente emite `click` sem payload e oferece o slot nomeado `icon`.
|
|
146
|
+
`secondary` permanece como atalho compatível para `severity="secondary"`.
|
|
241
147
|
|
|
242
148
|
## TopConfirmDialog
|
|
243
149
|
|
|
@@ -286,76 +192,76 @@ não fecha automaticamente o diálogo, permitindo que a aplicação aguarde uma
|
|
|
286
192
|
operação assíncrona. Os slots `message` e default permitem substituir a mensagem
|
|
287
193
|
textual.
|
|
288
194
|
|
|
289
|
-
## TopDatePicker
|
|
290
|
-
|
|
291
|
-
Seletor de datas baseado no `DatePicker` do PrimeVue. O valor permanece como
|
|
292
|
-
`Date` (ou arrays de `Date` nos modos `multiple` e `range`); `dateFormat` altera
|
|
293
|
-
somente a apresentação no campo e não converte o `v-model` para texto.
|
|
294
|
-
No modo padrão (`single` com `dd/mm/yy`), a digitação recebe automaticamente a
|
|
295
|
-
máscara brasileira `dd/mm/aaaa`.
|
|
296
|
-
|
|
297
|
-
```vue
|
|
298
|
-
<script setup lang="ts">
|
|
299
|
-
import { ref } from 'vue'
|
|
300
|
-
import { TopDatePicker } from '@topjoao/top-design-system'
|
|
301
|
-
|
|
302
|
-
const dataNascimento = ref<Date | null>(null)
|
|
303
|
-
</script>
|
|
304
|
-
|
|
305
|
-
<template>
|
|
306
|
-
<TopDatePicker
|
|
307
|
-
v-model="dataNascimento"
|
|
308
|
-
label="Data de nascimento"
|
|
309
|
-
placeholder="Selecione a data"
|
|
310
|
-
:max-date="new Date()"
|
|
311
|
-
required
|
|
312
|
-
error="Informe uma data válida."
|
|
313
|
-
@date-select="validarData"
|
|
314
|
-
/>
|
|
315
|
-
</template>
|
|
316
|
-
```
|
|
317
|
-
|
|
318
|
-
| Prop | Tipo | Padrão |
|
|
319
|
-
|---|---|---|
|
|
320
|
-
| `modelValue` | `Date \| Date[] \| (Date \| null)[] \| null` | `null` |
|
|
321
|
-
| `label` | `string` | `''` |
|
|
322
|
-
| `placeholder` | `string` | `'dd/mm/aaaa'` |
|
|
323
|
-
| `required` | `boolean` | `false` |
|
|
324
|
-
| `error` | `string` | `''` |
|
|
325
|
-
| `invalid` | `boolean` | `false` |
|
|
326
|
-
| `disabled` | `boolean` | `false` |
|
|
327
|
-
| `readonly` | `boolean` | `false` |
|
|
328
|
-
| `selectionMode` | `'single' \| 'multiple' \| 'range'` | `'single'` |
|
|
329
|
-
| `dateFormat` | `string` | `'dd/mm/yy'` |
|
|
330
|
-
| `minDate` / `maxDate` | `Date` | `undefined` |
|
|
331
|
-
| `showIcon` | `boolean` | `true` |
|
|
332
|
-
| `iconDisplay` | `'button' \| 'input'` | `'input'` |
|
|
333
|
-
| `manualInput` | `boolean` | `true` |
|
|
334
|
-
| `showButtonBar` | `boolean` | `false` |
|
|
335
|
-
| `appendTo` | `'body' \| 'self' \| HTMLElement` | `'body'` |
|
|
336
|
-
|
|
337
|
-
Eventos: `update:modelValue`, `input`, `change`, `date-select`, `show`, `hide`,
|
|
338
|
-
`today-click`, `clear-click`, `month-change`, `year-change`, `focus`, `blur` e
|
|
339
|
-
`keydown`. Os slots do `DatePicker` do PrimeVue são repassados pelo wrapper,
|
|
340
|
-
incluindo `date`, `header`, `footer`, `buttonbar`, `inputicon`, `dropdownicon`,
|
|
341
|
-
`previcon` e `nexticon`.
|
|
342
|
-
|
|
343
|
-
`required` adiciona o atributo nativo e o asterisco visual; a validação continua
|
|
344
|
-
sob responsabilidade da aplicação. `error` ativa o estado inválido, associa a
|
|
345
|
-
mensagem ao input com atributos ARIA e a exibe abaixo do campo. `readonly`
|
|
346
|
-
impede edição e seleção sem desabilitar o controle, enquanto `disabled` remove a
|
|
347
|
-
interação. No modo escuro, o campo usa os tokens públicos `--top-field-*`.
|
|
348
|
-
|
|
349
|
-
## TopFileUpload
|
|
350
|
-
|
|
351
|
-
Seletor de arquivos baseado no `FileUpload` do PrimeVue. O componente valida e
|
|
352
|
-
apresenta os arquivos, mas não os envia: a aplicação consumidora controla o
|
|
353
|
-
upload por `v-model` e pelos eventos.
|
|
354
|
-
|
|
355
|
-
```vue
|
|
356
|
-
<script setup lang="ts">
|
|
357
|
-
import { ref } from 'vue'
|
|
358
|
-
import { TopFileUpload } from '@topjoao/top-design-system'
|
|
195
|
+
## TopDatePicker
|
|
196
|
+
|
|
197
|
+
Seletor de datas baseado no `DatePicker` do PrimeVue. O valor permanece como
|
|
198
|
+
`Date` (ou arrays de `Date` nos modos `multiple` e `range`); `dateFormat` altera
|
|
199
|
+
somente a apresentação no campo e não converte o `v-model` para texto.
|
|
200
|
+
No modo padrão (`single` com `dd/mm/yy`), a digitação recebe automaticamente a
|
|
201
|
+
máscara brasileira `dd/mm/aaaa`.
|
|
202
|
+
|
|
203
|
+
```vue
|
|
204
|
+
<script setup lang="ts">
|
|
205
|
+
import { ref } from 'vue'
|
|
206
|
+
import { TopDatePicker } from '@topjoao/top-design-system'
|
|
207
|
+
|
|
208
|
+
const dataNascimento = ref<Date | null>(null)
|
|
209
|
+
</script>
|
|
210
|
+
|
|
211
|
+
<template>
|
|
212
|
+
<TopDatePicker
|
|
213
|
+
v-model="dataNascimento"
|
|
214
|
+
label="Data de nascimento"
|
|
215
|
+
placeholder="Selecione a data"
|
|
216
|
+
:max-date="new Date()"
|
|
217
|
+
required
|
|
218
|
+
error="Informe uma data válida."
|
|
219
|
+
@date-select="validarData"
|
|
220
|
+
/>
|
|
221
|
+
</template>
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
| Prop | Tipo | Padrão |
|
|
225
|
+
|---|---|---|
|
|
226
|
+
| `modelValue` | `Date \| Date[] \| (Date \| null)[] \| null` | `null` |
|
|
227
|
+
| `label` | `string` | `''` |
|
|
228
|
+
| `placeholder` | `string` | `'dd/mm/aaaa'` |
|
|
229
|
+
| `required` | `boolean` | `false` |
|
|
230
|
+
| `error` | `string` | `''` |
|
|
231
|
+
| `invalid` | `boolean` | `false` |
|
|
232
|
+
| `disabled` | `boolean` | `false` |
|
|
233
|
+
| `readonly` | `boolean` | `false` |
|
|
234
|
+
| `selectionMode` | `'single' \| 'multiple' \| 'range'` | `'single'` |
|
|
235
|
+
| `dateFormat` | `string` | `'dd/mm/yy'` |
|
|
236
|
+
| `minDate` / `maxDate` | `Date` | `undefined` |
|
|
237
|
+
| `showIcon` | `boolean` | `true` |
|
|
238
|
+
| `iconDisplay` | `'button' \| 'input'` | `'input'` |
|
|
239
|
+
| `manualInput` | `boolean` | `true` |
|
|
240
|
+
| `showButtonBar` | `boolean` | `false` |
|
|
241
|
+
| `appendTo` | `'body' \| 'self' \| HTMLElement` | `'body'` |
|
|
242
|
+
|
|
243
|
+
Eventos: `update:modelValue`, `input`, `change`, `date-select`, `show`, `hide`,
|
|
244
|
+
`today-click`, `clear-click`, `month-change`, `year-change`, `focus`, `blur` e
|
|
245
|
+
`keydown`. Os slots do `DatePicker` do PrimeVue são repassados pelo wrapper,
|
|
246
|
+
incluindo `date`, `header`, `footer`, `buttonbar`, `inputicon`, `dropdownicon`,
|
|
247
|
+
`previcon` e `nexticon`.
|
|
248
|
+
|
|
249
|
+
`required` adiciona o atributo nativo e o asterisco visual; a validação continua
|
|
250
|
+
sob responsabilidade da aplicação. `error` ativa o estado inválido, associa a
|
|
251
|
+
mensagem ao input com atributos ARIA e a exibe abaixo do campo. `readonly`
|
|
252
|
+
impede edição e seleção sem desabilitar o controle, enquanto `disabled` remove a
|
|
253
|
+
interação. No modo escuro, o campo usa os tokens públicos `--top-field-*`.
|
|
254
|
+
|
|
255
|
+
## TopFileUpload
|
|
256
|
+
|
|
257
|
+
Seletor de arquivos baseado no `FileUpload` do PrimeVue. O componente valida e
|
|
258
|
+
apresenta os arquivos, mas não os envia: a aplicação consumidora controla o
|
|
259
|
+
upload por `v-model` e pelos eventos.
|
|
260
|
+
|
|
261
|
+
```vue
|
|
262
|
+
<script setup lang="ts">
|
|
263
|
+
import { ref } from 'vue'
|
|
264
|
+
import { TopFileUpload } from '@topjoao/top-design-system'
|
|
359
265
|
|
|
360
266
|
const anexos = ref<File[]>([])
|
|
361
267
|
|
|
@@ -372,15 +278,15 @@ function enviarArquivos(files: File[]) {
|
|
|
372
278
|
multiple
|
|
373
279
|
:max-file-size="5 * 1024 * 1024"
|
|
374
280
|
:max-files="5"
|
|
375
|
-
required
|
|
376
|
-
@select="enviarArquivos"
|
|
377
|
-
/>
|
|
281
|
+
required
|
|
282
|
+
@select="enviarArquivos"
|
|
283
|
+
/>
|
|
378
284
|
</template>
|
|
379
285
|
```
|
|
380
286
|
|
|
381
287
|
| Prop | Tipo | Padrão |
|
|
382
288
|
|---|---|---|
|
|
383
|
-
| `modelValue` | `File \| File[] \| null` | `null` |
|
|
289
|
+
| `modelValue` | `File \| File[] \| null` | `null` |
|
|
384
290
|
| `label` | `string` | `''` |
|
|
385
291
|
| `placeholder` | `string` | `'Arraste e solte o arquivo aqui'` |
|
|
386
292
|
| `required` | `boolean` | `false` |
|
|
@@ -397,8 +303,8 @@ function enviarArquivos(files: File[]) {
|
|
|
397
303
|
Eventos: `update:modelValue`, `select`, `change`, `remove`, `clear` e `error`.
|
|
398
304
|
Erros de tipo, tamanho e quantidade possuem `code`, `message` e o `file`
|
|
399
305
|
relacionado. Os slots `empty` e `preview` permitem customizar a área vazia e a
|
|
400
|
-
pré-visualização. Os métodos `choose()` e `clear()` ficam disponíveis pela ref
|
|
401
|
-
do componente.
|
|
306
|
+
pré-visualização. Os métodos `choose()` e `clear()` ficam disponíveis pela ref
|
|
307
|
+
do componente.
|
|
402
308
|
|
|
403
309
|
## TopInputText
|
|
404
310
|
|
|
@@ -507,6 +413,59 @@ O texto das opções é limitado visualmente pela largura disponível do painel,
|
|
|
507
413
|
sem corte por quantidade fixa de caracteres; o tooltip padrão exibe o valor
|
|
508
414
|
completo quando `showTooltip` está ativo.
|
|
509
415
|
|
|
416
|
+
## TopTabs
|
|
417
|
+
|
|
418
|
+
Navegação em abas baseada em `Tabs`, `TabList`, `Tab`, `TabPanels` e `TabPanel`
|
|
419
|
+
do PrimeVue, com estrutura simplificada e estilos dos temas claro e escuro do
|
|
420
|
+
Design System.
|
|
421
|
+
|
|
422
|
+
```vue
|
|
423
|
+
<script setup lang="ts">
|
|
424
|
+
import { ref } from 'vue'
|
|
425
|
+
import {
|
|
426
|
+
TopTabs,
|
|
427
|
+
type TopTabItem,
|
|
428
|
+
type TopTabValue,
|
|
429
|
+
} from '@topjoao/top-design-system'
|
|
430
|
+
|
|
431
|
+
const activeTab = ref<TopTabValue>('dados')
|
|
432
|
+
const tabs: TopTabItem[] = [
|
|
433
|
+
{ value: 'dados', label: 'Dados' },
|
|
434
|
+
{ value: 'documentos', label: 'Documentos' },
|
|
435
|
+
{ value: 'auditoria', label: 'Auditoria', disabled: true },
|
|
436
|
+
]
|
|
437
|
+
</script>
|
|
438
|
+
|
|
439
|
+
<template>
|
|
440
|
+
<TopTabs v-model="activeTab" :tabs="tabs">
|
|
441
|
+
<template #dados>
|
|
442
|
+
Dados gerais do processo
|
|
443
|
+
</template>
|
|
444
|
+
|
|
445
|
+
<template #documentos>
|
|
446
|
+
Documentos anexados
|
|
447
|
+
</template>
|
|
448
|
+
|
|
449
|
+
<template #auditoria>
|
|
450
|
+
Histórico de auditoria
|
|
451
|
+
</template>
|
|
452
|
+
</TopTabs>
|
|
453
|
+
</template>
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
| Prop | Tipo | Padrão |
|
|
457
|
+
|---|---|---|
|
|
458
|
+
| `modelValue` | `string \| number` | obrigatório |
|
|
459
|
+
| `tabs` | `TopTabItem[]` | obrigatório |
|
|
460
|
+
| `lazy` | `boolean` | `false` |
|
|
461
|
+
| `scrollable` | `boolean` | `true` |
|
|
462
|
+
|
|
463
|
+
Cada `TopTabItem` possui `value`, `label` e `disabled?`. O `value` deve ser
|
|
464
|
+
único e identifica tanto a seleção quanto o slot do painel; por exemplo,
|
|
465
|
+
`value: 'documentos'` utiliza `#documentos`. Cada slot recebe `tab` e `active`.
|
|
466
|
+
O componente emite somente `update:modelValue`. Atributos adicionais, incluindo
|
|
467
|
+
as opções de passthrough do PrimeVue, são repassados ao componente `Tabs`.
|
|
468
|
+
|
|
510
469
|
## Desenvolvimento da biblioteca
|
|
511
470
|
|
|
512
471
|
```bash
|
|
@@ -533,7 +492,7 @@ npm run storybook
|
|
|
533
492
|
```
|
|
534
493
|
|
|
535
494
|
Abra `http://localhost:6006` para acessar as histórias de `TopButton`,
|
|
536
|
-
`TopConfirmDialog`, `TopDatePicker`, `TopInputText` e `
|
|
495
|
+
`TopConfirmDialog`, `TopDatePicker`, `TopInputText`, `TopSelect` e `TopTabs`. Use o botão de
|
|
537
496
|
contraste na barra superior para alternar o preview entre tema claro e escuro.
|
|
538
497
|
Para gerar a versão estática da documentação, execute:
|
|
539
498
|
|