fokus-styles 2.5.0 → 2.6.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/package.json +17 -15
- package/CHANGELOG.md +0 -940
- package/dist/css/components.css.map +0 -1
- package/dist/css/components.min.css.map +0 -1
- package/dist/css/fokus-components.css.map +0 -1
- package/dist/css/fokus-components.min.css.map +0 -1
- package/dist/css/fokus-core.css.map +0 -1
- package/dist/css/fokus-core.min.css.map +0 -1
- package/dist/css/fokus-dark.css.map +0 -1
- package/dist/css/fokus-dark.min.css.map +0 -1
- package/dist/css/fokus-rtl.css.map +0 -1
- package/dist/css/fokus-rtl.min.css.map +0 -1
- package/dist/css/fokus-utilities.css.map +0 -1
- package/dist/css/fokus-utilities.min.css.map +0 -1
- package/dist/css/fokus.css.map +0 -1
- package/dist/css/fokus.min.css.map +0 -1
- package/dist/css/fonts.css.map +0 -1
- package/dist/css/fonts.min.css.map +0 -1
- package/dist/css/forms.css.map +0 -1
- package/dist/css/forms.min.css.map +0 -1
- package/dist/css/helpers.css.map +0 -1
- package/dist/css/helpers.min.css.map +0 -1
- package/dist/css/layout.css.map +0 -1
- package/dist/css/layout.min.css.map +0 -1
- package/dist/js/fokus.js.map +0 -7
- package/dist/js/fokus.min.js.map +0 -7
- package/docs/README.md +0 -86
- package/docs/comparison.md +0 -124
- package/docs/components/accordion.md +0 -104
- package/docs/components/alert-dialog.md +0 -99
- package/docs/components/alert.md +0 -104
- package/docs/components/avatar.md +0 -13
- package/docs/components/badge.md +0 -101
- package/docs/components/breadcrumb.md +0 -93
- package/docs/components/button-group.md +0 -13
- package/docs/components/button.md +0 -98
- package/docs/components/card.md +0 -111
- package/docs/components/carousel.md +0 -167
- package/docs/components/checkbox.md +0 -110
- package/docs/components/close-button.md +0 -13
- package/docs/components/code.md +0 -13
- package/docs/components/collapse.md +0 -78
- package/docs/components/combobox.md +0 -123
- package/docs/components/command-palette.md +0 -131
- package/docs/components/datatable.md +0 -173
- package/docs/components/datepicker.md +0 -137
- package/docs/components/divider.md +0 -57
- package/docs/components/dropdown.md +0 -103
- package/docs/components/empty-state.md +0 -65
- package/docs/components/file-upload-advanced.md +0 -116
- package/docs/components/file-upload.md +0 -93
- package/docs/components/icon-link.md +0 -13
- package/docs/components/input-group.md +0 -73
- package/docs/components/input.md +0 -90
- package/docs/components/list-group.md +0 -13
- package/docs/components/modal.md +0 -120
- package/docs/components/navbar.md +0 -74
- package/docs/components/nested-menu.md +0 -90
- package/docs/components/notification-center.md +0 -116
- package/docs/components/offcanvas.md +0 -102
- package/docs/components/pagination.md +0 -145
- package/docs/components/placeholder.md +0 -13
- package/docs/components/popover.md +0 -118
- package/docs/components/progress.md +0 -126
- package/docs/components/radio.md +0 -80
- package/docs/components/range.md +0 -83
- package/docs/components/rating.md +0 -91
- package/docs/components/ratio.md +0 -13
- package/docs/components/responsive.md +0 -19
- package/docs/components/scrollspy.md +0 -13
- package/docs/components/segmented-control.md +0 -82
- package/docs/components/select.md +0 -89
- package/docs/components/skeleton.md +0 -70
- package/docs/components/stepper.md +0 -107
- package/docs/components/switch.md +0 -97
- package/docs/components/table.md +0 -90
- package/docs/components/tabs.md +0 -104
- package/docs/components/tag.md +0 -144
- package/docs/components/tile.md +0 -112
- package/docs/components/timeline.md +0 -78
- package/docs/components/toast.md +0 -108
- package/docs/components/tooltip.md +0 -113
- package/docs/components/tree-view.md +0 -118
- package/docs/contributing/contributing.md +0 -18
- package/docs/getting-started/installation.md +0 -70
- package/docs/getting-started/usage.md +0 -105
- package/docs/guides/accessibility.md +0 -109
- package/docs/guides/charts.md +0 -73
- package/docs/guides/dark-mode.md +0 -90
- package/docs/guides/icons.md +0 -99
- package/docs/guides/javascript-api.md +0 -9
- package/docs/guides/layout-advanced.md +0 -118
- package/docs/guides/migration-clarus-to-fokus.md +0 -48
- package/docs/guides/migration-external.md +0 -123
- package/docs/guides/migration-v1.md +0 -63
- package/docs/guides/print.md +0 -30
- package/docs/guides/rtl-and-system-preferences.md +0 -28
- package/docs/guides/theming.md +0 -140
- package/docs/guides/utility-api.md +0 -9
- package/docs/prompts/prompt-plan.md +0 -45
- package/docs/reference/accessibility-matrix.md +0 -77
- package/docs/reference/browser-support.md +0 -75
- package/docs/reference/contrast-report.md +0 -54
- package/docs/reference/definitions.md +0 -868
- package/docs/reference/design-tokens.md +0 -208
- package/docs/reference/scss-architecture.md +0 -227
- package/docs/reference/size-baseline.json +0 -34
- package/docs/reference/stability.md +0 -89
- package/docs/showcase.md +0 -25
- package/mockup/README.md +0 -41
- package/mockup/assets/carousel-planning.png +0 -0
- package/mockup/assets/carousel-workspace.png +0 -0
- package/mockup/assets/example-theme.css +0 -19
- package/mockup/assets/example-theme.js +0 -11
- package/mockup/assets/showcase-contracts.js +0 -84
- package/mockup/assets/showcase.css +0 -91
- package/mockup/assets/showcase.js +0 -724
- package/mockup/content-data.html +0 -9
- package/mockup/examples/accordion-tabs-toast.html +0 -149
- package/mockup/examples/alert-dialog.html +0 -84
- package/mockup/examples/alerts.html +0 -115
- package/mockup/examples/badges-alerts.html +0 -109
- package/mockup/examples/buttons.html +0 -58
- package/mockup/examples/cards.html +0 -132
- package/mockup/examples/carousel.html +0 -126
- package/mockup/examples/charts.html +0 -102
- package/mockup/examples/check-radio-switch.html +0 -620
- package/mockup/examples/collapse.html +0 -69
- package/mockup/examples/combobox.html +0 -60
- package/mockup/examples/command-palette.html +0 -64
- package/mockup/examples/datatable.html +0 -113
- package/mockup/examples/datepicker.html +0 -62
- package/mockup/examples/divider.html +0 -45
- package/mockup/examples/dropdown-tooltip.html +0 -77
- package/mockup/examples/empty-state.html +0 -56
- package/mockup/examples/file-drop.html +0 -74
- package/mockup/examples/file-upload-advanced.html +0 -68
- package/mockup/examples/forms-advanced.html +0 -77
- package/mockup/examples/hover-card.html +0 -86
- package/mockup/examples/icons.html +0 -157
- package/mockup/examples/input-group.html +0 -74
- package/mockup/examples/js-foundation.html +0 -215
- package/mockup/examples/layout.html +0 -134
- package/mockup/examples/modal-select.html +0 -127
- package/mockup/examples/nested-menu.html +0 -73
- package/mockup/examples/notification-center.html +0 -86
- package/mockup/examples/offcanvas-popover.html +0 -133
- package/mockup/examples/pagination-breadcrumbs.html +0 -92
- package/mockup/examples/popover.html +0 -81
- package/mockup/examples/range.html +0 -69
- package/mockup/examples/rating.html +0 -103
- package/mockup/examples/segmented-control.html +0 -96
- package/mockup/examples/skeletons.html +0 -82
- package/mockup/examples/spinner-progress.html +0 -130
- package/mockup/examples/stepper.html +0 -119
- package/mockup/examples/tables-navbar.html +0 -89
- package/mockup/examples/tag.html +0 -115
- package/mockup/examples/theming.html +0 -68
- package/mockup/examples/tile.html +0 -107
- package/mockup/examples/timeline.html +0 -108
- package/mockup/examples/toast.html +0 -113
- package/mockup/examples/tooltip.html +0 -68
- package/mockup/examples/tree-view.html +0 -68
- package/mockup/feedback-actions.html +0 -9
- package/mockup/forms.html +0 -13
- package/mockup/foundations.html +0 -7
- package/mockup/kitchen-sink.html +0 -696
- package/mockup/navigation-disclosure.html +0 -11
- package/mockup/overlays-commands.html +0 -12
- package/mockup/templates/README.md +0 -20
- package/mockup/templates/admin.html +0 -334
- package/mockup/templates/auth.html +0 -234
- package/mockup/templates/dashboard.html +0 -442
- package/mockup/templates/landing.html +0 -397
- package/packages/fokus-icons/package.json +0 -46
- package/scripts/migrate-fokus-map.json +0 -1366
- package/scripts/migrate-fokus.mjs +0 -97
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
# Select customizado
|
|
2
|
-
|
|
3
|
-
Substitui a aparência do `<select>` nativo (impossível de estilizar
|
|
4
|
-
consistentemente entre navegadores) por um [Dropdown](dropdown.md), mantendo
|
|
5
|
-
o `<select>` real por baixo — sincronizado, escondido visualmente.
|
|
6
|
-
|
|
7
|
-
## Visão geral
|
|
8
|
-
|
|
9
|
-
```html
|
|
10
|
-
<select class="fs-form-select" data-fs="select" id="pais">
|
|
11
|
-
<option value="br">Brasil</option>
|
|
12
|
-
<option value="pt">Portugal</option>
|
|
13
|
-
<option value="us" disabled>Estados Unidos (indisponível)</option>
|
|
14
|
-
</select>
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
O JS constrói o dropdown customizado logo depois do `<select>` no DOM e
|
|
18
|
-
esconde o original (`display: none` — continua no DOM, então
|
|
19
|
-
`<select>`/`<option>` do seu HTML/backend seguem sendo a fonte da
|
|
20
|
-
verdade).
|
|
21
|
-
|
|
22
|
-
## Anatomia
|
|
23
|
-
|
|
24
|
-
Gerado automaticamente a partir do `<select>`: `.fs-dropdown.fs-form-select-dropdown`
|
|
25
|
-
> `.fs-form-select` (botão-toggle, mesma aparência estática documentada em
|
|
26
|
-
[Input](input.md#anatomia)) + `.fs-dropdown-menu` > um `.fs-dropdown-item`
|
|
27
|
-
por `<option>`.
|
|
28
|
-
|
|
29
|
-
## Variações
|
|
30
|
-
|
|
31
|
-
Tamanho: `data-size="sm"`/`"lg"` no `<select>` original — vira
|
|
32
|
-
`.fs-form-select-sm`/`-lg` no toggle gerado.
|
|
33
|
-
|
|
34
|
-
```html
|
|
35
|
-
<select class="fs-form-select" data-fs="select" data-size="sm">...</select>
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Estados
|
|
39
|
-
|
|
40
|
-
- `<option disabled>` vira um item com `.is-disabled` no menu (não
|
|
41
|
-
clicável).
|
|
42
|
-
- `<select disabled>` desabilita o botão-toggle inteiro.
|
|
43
|
-
- Item selecionado (`selectedIndex`) fica com `.is-active` no menu.
|
|
44
|
-
|
|
45
|
-
## A11y
|
|
46
|
-
|
|
47
|
-
`aria-haspopup="listbox"` no toggle, `role="listbox"` no menu,
|
|
48
|
-
`role="option"` + `aria-selected` em cada item — aplicados
|
|
49
|
-
automaticamente. Navegação por teclado herdada do
|
|
50
|
-
[Dropdown](dropdown.md) (`ArrowDown`/`ArrowUp` entre opções, `Escape`
|
|
51
|
-
fecha). Selecionar uma opção dispara `change` no `<select>` original —
|
|
52
|
-
formulários/validação que escutam esse evento continuam funcionando sem
|
|
53
|
-
mudança.
|
|
54
|
-
|
|
55
|
-
## API JS
|
|
56
|
-
|
|
57
|
-
Auto-init via `data-fs="select"` **no `<select>`**. `Select.getInstance(selectEl)`.
|
|
58
|
-
|
|
59
|
-
| Método | Descrição |
|
|
60
|
-
|---|---|
|
|
61
|
-
| `show()` / `hide()` / `toggle()` | Delegam pro Dropdown interno. |
|
|
62
|
-
| `dispose()` | Desmonta o dropdown gerado, restaura o `<select>` original visível. |
|
|
63
|
-
|
|
64
|
-
| Evento (no `<select>` original) | Cancelável | Quando |
|
|
65
|
-
|---|---|---|
|
|
66
|
-
| `change` (nativo) | Não | Ao selecionar uma opção — mesmo evento que um `<select>` comum dispara. |
|
|
67
|
-
| `fs:select:changed` | Não | Mesmo momento, com `event.detail.value` (o novo valor). |
|
|
68
|
-
|
|
69
|
-
## Tokens
|
|
70
|
-
|
|
71
|
-
Os mesmos do [Dropdown](dropdown.md) e de
|
|
72
|
-
[`.fs-form-select`](input.md) — sem tokens próprios.
|
|
73
|
-
|
|
74
|
-
## Exemplo
|
|
75
|
-
|
|
76
|
-
```html
|
|
77
|
-
<select class="fs-form-select" data-fs="select" id="prioridade">
|
|
78
|
-
<option value="baixa">Baixa</option>
|
|
79
|
-
<option value="media" selected>Média</option>
|
|
80
|
-
<option value="alta">Alta</option>
|
|
81
|
-
</select>
|
|
82
|
-
<script>
|
|
83
|
-
document.getElementById("prioridade").addEventListener("fs:select:changed", (e) => {
|
|
84
|
-
console.log("nova prioridade:", e.detail.value);
|
|
85
|
-
});
|
|
86
|
-
</script>
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
Mockup: [laboratório do componente](../../mockup/forms.html#select).
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# Skeleton
|
|
2
|
-
|
|
3
|
-
Placeholder de carregamento — 100% CSS, sem JS (você troca pelo conteúdo
|
|
4
|
-
real quando os dados chegam).
|
|
5
|
-
|
|
6
|
-
## Visão geral
|
|
7
|
-
|
|
8
|
-
```html
|
|
9
|
-
<div class="fs-skeleton fs-skeleton-text"></div>
|
|
10
|
-
<div class="fs-skeleton fs-skeleton-text"></div>
|
|
11
|
-
<div class="fs-skeleton fs-skeleton-circle" style="width: 48px; height: 48px;"></div>
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
## Anatomia
|
|
15
|
-
|
|
16
|
-
`.fs-skeleton` (base — cor + animação de pulso) combinado com uma forma:
|
|
17
|
-
`.fs-skeleton-text` (linha de texto, 1em de altura; o último de uma
|
|
18
|
-
sequência automaticamente encolhe pra 80% de largura, imitando o fim de um
|
|
19
|
-
parágrafo), `.fs-skeleton-circle` (avatar), `.fs-skeleton-rect` (bloco/
|
|
20
|
-
imagem). Tamanho de circle/rect é livre — defina `width`/`height` via
|
|
21
|
-
`style` inline ou classe própria.
|
|
22
|
-
|
|
23
|
-
## Variações
|
|
24
|
-
|
|
25
|
-
`.fs-skeleton-wave` — em vez de pulsar a opacidade inteira, varre um
|
|
26
|
-
brilho da esquerda pra direita (substitui a animação padrão, não combine
|
|
27
|
-
os dois).
|
|
28
|
-
|
|
29
|
-
```html
|
|
30
|
-
<div class="fs-skeleton fs-skeleton-rect fs-skeleton-wave" style="width: 100%; height: 120px;"></div>
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Estados
|
|
34
|
-
|
|
35
|
-
Nenhum — é ele mesmo um estado (de carregamento) de outro conteúdo.
|
|
36
|
-
Anima infinitamente enquanto presente no DOM; remova/substitua quando os
|
|
37
|
-
dados reais chegarem.
|
|
38
|
-
|
|
39
|
-
## A11y
|
|
40
|
-
|
|
41
|
-
As variantes `.fs-skeleton-card`, `.fs-skeleton-table` e `.fs-skeleton-avatar` são visuais;
|
|
42
|
-
anuncie o carregamento no contêiner com `aria-busy="true"`.
|
|
43
|
-
|
|
44
|
-
A animação para automaticamente sob `prefers-reduced-motion: reduce`
|
|
45
|
-
(fica estática, sem pulso/varredura). Se o carregamento for anunciado a
|
|
46
|
-
leitores de tela, envolva o conjunto de skeletons num contêiner com
|
|
47
|
-
`aria-busy="true"` (e remova ao trocar pelo conteúdo real) — não aplicado
|
|
48
|
-
automaticamente.
|
|
49
|
-
|
|
50
|
-
## API JS
|
|
51
|
-
|
|
52
|
-
Nenhuma — 100% CSS.
|
|
53
|
-
|
|
54
|
-
## Tokens
|
|
55
|
-
|
|
56
|
-
`--fs-color-subtle` (cor de base), `--fs-radius-sm`/`-md`.
|
|
57
|
-
|
|
58
|
-
## Exemplo
|
|
59
|
-
|
|
60
|
-
```html
|
|
61
|
-
<div class="fs-tile" aria-busy="true">
|
|
62
|
-
<div class="fs-skeleton fs-skeleton-circle" style="width: 40px; height: 40px;"></div>
|
|
63
|
-
<div class="fs-tile-body" style="width: 100%;">
|
|
64
|
-
<div class="fs-skeleton fs-skeleton-text" style="width: 60%;"></div>
|
|
65
|
-
<div class="fs-skeleton fs-skeleton-text"></div>
|
|
66
|
-
</div>
|
|
67
|
-
</div>
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
Mockup: [laboratório do componente](../../mockup/feedback-actions.html#skeleton).
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
# Stepper
|
|
2
|
-
|
|
3
|
-
Wizard de múltiplos passos — cabeçalho com indicadores de progresso, painéis
|
|
4
|
-
de conteúdo opcionais, navegação linear ou livre.
|
|
5
|
-
|
|
6
|
-
## Visão geral
|
|
7
|
-
|
|
8
|
-
```html
|
|
9
|
-
<div class="fs-stepper" data-fs="stepper">
|
|
10
|
-
<ol class="fs-stepper-header">
|
|
11
|
-
<li class="fs-step fs-step-active">
|
|
12
|
-
<span class="fs-step-indicator">1</span>
|
|
13
|
-
<span class="fs-step-label">Conta</span>
|
|
14
|
-
</li>
|
|
15
|
-
<li class="fs-step">
|
|
16
|
-
<span class="fs-step-indicator">2</span>
|
|
17
|
-
<span class="fs-step-label">Perfil</span>
|
|
18
|
-
</li>
|
|
19
|
-
<li class="fs-step">
|
|
20
|
-
<span class="fs-step-indicator">3</span>
|
|
21
|
-
<span class="fs-step-label">Revisão</span>
|
|
22
|
-
</li>
|
|
23
|
-
</ol>
|
|
24
|
-
<div class="fs-stepper-content">
|
|
25
|
-
<div class="fs-step-panel is-active">Passo 1: dados da conta.</div>
|
|
26
|
-
<div class="fs-step-panel">Passo 2: dados do perfil.</div>
|
|
27
|
-
<div class="fs-step-panel">Passo 3: revise e confirme.</div>
|
|
28
|
-
</div>
|
|
29
|
-
<div class="fs-stepper-actions">
|
|
30
|
-
<button type="button" class="fs-btn" data-stepper="prev">Voltar</button>
|
|
31
|
-
<button type="button" class="fs-btn fs-btn-primary" data-stepper="next">Avançar</button>
|
|
32
|
-
</div>
|
|
33
|
-
</div>
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## Anatomia
|
|
37
|
-
|
|
38
|
-
`.fs-stepper` (`data-fs="stepper"`) > `.fs-stepper-header` (`<ol>`) >
|
|
39
|
-
`.fs-step` (um por passo) > `.fs-step-indicator` (número/check) +
|
|
40
|
-
`.fs-step-label` + `.fs-step-description` (opcional) — mais, opcionais:
|
|
41
|
-
`.fs-stepper-content` > `.fs-step-panel` (um por passo, na mesma ordem) e
|
|
42
|
-
`.fs-stepper-actions` com botões `data-stepper="prev"`/`"next"`.
|
|
43
|
-
|
|
44
|
-
Um `.fs-step` pode apontar pra um painel específico via `data-fs-target`
|
|
45
|
-
(seletor) em vez de depender da ordem posicional.
|
|
46
|
-
|
|
47
|
-
## Variações
|
|
48
|
-
|
|
49
|
-
`.fs-stepper-vertical` no `.fs-stepper` — cabeçalho em coluna, cada passo
|
|
50
|
-
com label/descrição ao lado do indicador em vez de embaixo.
|
|
51
|
-
|
|
52
|
-
## Estados
|
|
53
|
-
|
|
54
|
-
Cada `.fs-step` recebe uma destas classes, sincronizadas pelo JS:
|
|
55
|
-
|
|
56
|
-
| Classe | Significado |
|
|
57
|
-
|---|---|
|
|
58
|
-
| (nenhuma) | Pendente — ainda não alcançado. |
|
|
59
|
-
| `.fs-step-active` | Passo atual. |
|
|
60
|
-
| `.fs-step-completed` | Já concluído (indicador vira um check). |
|
|
61
|
-
| `.fs-step-error` | Marcado com erro via `setError()` — não muda automaticamente. |
|
|
62
|
-
| `.fs-step-clickable` | Aplicada automaticamente aos passos navegáveis pelo cabeçalho. |
|
|
63
|
-
|
|
64
|
-
**Modo linear** (padrão, `data-linear` ausente ou `"true"`): só permite
|
|
65
|
-
voltar clicando em passos já concluídos, não pular pra frente. `data-linear="false"` libera clicar em qualquer passo do cabeçalho a
|
|
66
|
-
qualquer momento.
|
|
67
|
-
|
|
68
|
-
## A11y
|
|
69
|
-
|
|
70
|
-
Cada `.fs-step` tem `role="listitem"`, `tabindex` (só os clicáveis
|
|
71
|
-
recebem `0`) e `aria-current="step"` no passo ativo — navegável e ativável
|
|
72
|
-
por teclado (`Enter`/`Space`) quando clicável.
|
|
73
|
-
|
|
74
|
-
## API JS
|
|
75
|
-
|
|
76
|
-
Auto-init via `data-fs="stepper"`. `Stepper.getInstance(el)`.
|
|
77
|
-
|
|
78
|
-
| Método | Descrição |
|
|
79
|
-
|---|---|
|
|
80
|
-
| `next()` | Avança um passo; no último, chama `complete()`. |
|
|
81
|
-
| `prev()` | Volta um passo. |
|
|
82
|
-
| `goTo(index)` | Vai direto pro passo `index` (respeitando o modo linear se disparado pelo cabeçalho — via método, sempre permitido). |
|
|
83
|
-
| `setError(index, hasError = true)` | Marca/desmarca `.fs-step-error` num passo específico. |
|
|
84
|
-
| `complete()` | Marca o wizard como concluído (todos os passos ficam `.fs-step-completed`). |
|
|
85
|
-
| `dispose()` | Remove todos os listeners e desregistra a instância. |
|
|
86
|
-
|
|
87
|
-
| Evento | Cancelável | Quando |
|
|
88
|
-
|---|---|---|
|
|
89
|
-
| `fs:stepper:beforechange` | Sim | Antes de trocar de passo (ou concluir) — `event.detail` traz `{ from, to }`; `preventDefault()` bloqueia a mudança (útil pra validar o passo atual antes de avançar). |
|
|
90
|
-
| `fs:stepper:changed` | Não | Depois de trocar de passo. |
|
|
91
|
-
| `fs:stepper:completed` | Não | Depois de `complete()`. |
|
|
92
|
-
|
|
93
|
-
```js
|
|
94
|
-
stepperEl.addEventListener("fs:stepper:beforechange", (event) => {
|
|
95
|
-
if (!formularioValido()) event.preventDefault();
|
|
96
|
-
});
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
## Tokens
|
|
100
|
-
|
|
101
|
-
`--fs-color-border`, `--fs-color-primary` (ativo/concluído),
|
|
102
|
-
`--fs-color-danger` (erro), `--fs-color-muted`, `--fs-color-text`.
|
|
103
|
-
|
|
104
|
-
## Exemplo
|
|
105
|
-
|
|
106
|
-
Ver acima (Visão geral) — mockup completo com validação por passo em
|
|
107
|
-
[`mockup/navigation-disclosure.html#stepper`](../../mockup/navigation-disclosure.html#stepper).
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
# Switch
|
|
2
|
-
|
|
3
|
-
Toggle liga/desliga 100% CSS, sobre um `<input type="checkbox">` nativo —
|
|
4
|
-
semanticamente é um checkbox (representa um estado booleano), só a
|
|
5
|
-
aparência muda. Knob **retangular arredondado**, não circular — decisão de
|
|
6
|
-
design deliberada (nada circular no framework além de radio/spinner).
|
|
7
|
-
|
|
8
|
-
## Visão geral
|
|
9
|
-
|
|
10
|
-
```html
|
|
11
|
-
<div class="fs-switch">
|
|
12
|
-
<input type="checkbox" class="fs-switch-input" id="notif" checked>
|
|
13
|
-
<label for="notif" class="fs-switch-label">Notificações</label>
|
|
14
|
-
</div>
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## Anatomia
|
|
18
|
-
|
|
19
|
-
`.fs-switch` (wrapper) > `.fs-switch-input` (oculto via clip) +
|
|
20
|
-
`.fs-switch-label` (`<label for="...">`, desenha o trilho via `::before` e
|
|
21
|
-
o knob via `::after`, que desliza com propriedades lógicas e `transition`).
|
|
22
|
-
|
|
23
|
-
## Variações
|
|
24
|
-
|
|
25
|
-
Tamanho: `.fs-switch-sm`, `.fs-switch-lg` no wrapper.
|
|
26
|
-
|
|
27
|
-
## Estados
|
|
28
|
-
|
|
29
|
-
checked/disabled/foco — mesmo padrão do [Checkbox](checkbox.md). O switch
|
|
30
|
-
também possui hover com halo sutil, active com redução discreta do thumb,
|
|
31
|
-
valid/invalid opcional para uso em formulário, forced colors e redução de
|
|
32
|
-
movimento. O trilho desligado usa superfície neutra e o thumb possui contraste
|
|
33
|
-
e elevação próprios. Não há `indeterminate`.
|
|
34
|
-
|
|
35
|
-
## A11y
|
|
36
|
-
|
|
37
|
-
- `<input type="checkbox">` nativo — `Space` alterna, leitor de tela
|
|
38
|
-
anuncia como checkbox marcado/desmarcado (não há um role "switch" nativo
|
|
39
|
-
em HTML; usar `type="checkbox"` é a escolha correta e amplamente
|
|
40
|
-
suportada — um `role="switch"` explícito é opcional, não aplicado pelo
|
|
41
|
-
framework).
|
|
42
|
-
- Quando não houver texto visível ao lado (ex.: dentro de um
|
|
43
|
-
[Tile](tile.md), como no exemplo abaixo), use `aria-label` no `<input>`
|
|
44
|
-
em vez de deixar a `<label>` vazia.
|
|
45
|
-
- O Fokus Styles não injeta `role="switch"`: o contrato oficial continua
|
|
46
|
-
sendo o checkbox nativo, com `Space` e anúncio de marcado/desmarcado.
|
|
47
|
-
|
|
48
|
-
```html
|
|
49
|
-
<div class="fs-switch">
|
|
50
|
-
<input type="checkbox" class="fs-switch-input" id="s1" aria-label="Ativar tema escuro">
|
|
51
|
-
<label for="s1" class="fs-switch-label"></label>
|
|
52
|
-
</div>
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## API JS
|
|
56
|
-
|
|
57
|
-
Nenhuma — 100% CSS.
|
|
58
|
-
|
|
59
|
-
## Tokens
|
|
60
|
-
|
|
61
|
-
| Token | Fallback | Uso |
|
|
62
|
-
|---|---|---|
|
|
63
|
-
| `--fs-switch-track-width` | `40px` | Largura do trilho |
|
|
64
|
-
| `--fs-switch-track-height` | `24px` | Altura do trilho |
|
|
65
|
-
| `--fs-switch-thumb-width` | `18px` | Largura do knob |
|
|
66
|
-
| `--fs-switch-thumb-height` | `18px` | Altura do knob |
|
|
67
|
-
| `--fs-switch-thumb-offset` | `3px` | Posição desligada |
|
|
68
|
-
| `--fs-switch-on-offset` | `19px` | Posição ligada |
|
|
69
|
-
| `--fs-switch-radius` | `--fs-radius-md` | Raio do trilho |
|
|
70
|
-
| `--fs-switch-thumb-radius` | `--fs-radius-sm` | Raio do knob |
|
|
71
|
-
| `--fs-switch-gap` | `--fs-space-2` | Distância até o texto |
|
|
72
|
-
| `--fs-switch-track-bg` | `--fs-color-subtle` | Fundo desligado |
|
|
73
|
-
| `--fs-switch-track-border` | `--fs-color-border-default` | Borda do trilho |
|
|
74
|
-
| `--fs-switch-track-checked-bg` | `--fs-color-primary` | Fundo ligado |
|
|
75
|
-
| `--fs-switch-thumb-bg` | `--fs-color-surface` | Fundo do knob |
|
|
76
|
-
| `--fs-switch-thumb-border` | `--fs-color-border-default` | Borda do knob |
|
|
77
|
-
| `--fs-switch-thumb-shadow` | `--fs-shadow-sm` | Elevação do knob |
|
|
78
|
-
| `--fs-switch-track-shadow` | Sombra interna sutil | Profundidade do trilho desligado |
|
|
79
|
-
| `--fs-switch-hover-ring` | Mistura de primary com transparente | Halo de hover |
|
|
80
|
-
| `--fs-switch-hover-shadow` | Halo baseado em `--fs-switch-hover-ring` | Sombra de hover |
|
|
81
|
-
| `--fs-switch-active-scale` | `0.92` | Escala do knob durante active |
|
|
82
|
-
|
|
83
|
-
## Exemplo
|
|
84
|
-
|
|
85
|
-
```html
|
|
86
|
-
<div class="fs-switch">
|
|
87
|
-
<input type="checkbox" class="fs-switch-input" id="sw1">
|
|
88
|
-
<label for="sw1" class="fs-switch-label">Desligado</label>
|
|
89
|
-
</div>
|
|
90
|
-
<div class="fs-switch">
|
|
91
|
-
<input type="checkbox" class="fs-switch-input" id="sw2" checked>
|
|
92
|
-
<label for="sw2" class="fs-switch-label">Ligado</label>
|
|
93
|
-
</div>
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
Mockup: [laboratório do componente](../../mockup/forms.html#check-radio-switch).
|
|
97
|
-
Uso combinado com Tile: [laboratório de conteúdo e dados](../../mockup/content-data.html#tile).
|
package/docs/components/table.md
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
# Table
|
|
2
|
-
|
|
3
|
-
Tabelas seguem a marcação HTML nativa — classes modificadoras no próprio
|
|
4
|
-
`<table>` ligam/desligam comportamentos visuais.
|
|
5
|
-
|
|
6
|
-
## Visão geral
|
|
7
|
-
|
|
8
|
-
```html
|
|
9
|
-
<table class="fs-table fs-table-striped fs-table-hover">
|
|
10
|
-
<thead>
|
|
11
|
-
<tr><th>Nome</th><th>Status</th></tr>
|
|
12
|
-
</thead>
|
|
13
|
-
<tbody>
|
|
14
|
-
<tr><td>Ana</td><td>Ativo</td></tr>
|
|
15
|
-
<tr><td>Bruno</td><td>Inativo</td></tr>
|
|
16
|
-
</tbody>
|
|
17
|
-
</table>
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Anatomia
|
|
21
|
-
|
|
22
|
-
`<table class="fs-table">` com `<thead>`/`<tbody>` nativos — nenhuma
|
|
23
|
-
marcação extra obrigatória. `<thead th>` já vem em uppercase, cor muted,
|
|
24
|
-
peso médio.
|
|
25
|
-
|
|
26
|
-
## Variações
|
|
27
|
-
|
|
28
|
-
- `.fs-table-striped` — linhas ímpares do corpo com fundo diferente (zebra).
|
|
29
|
-
- `.fs-table-hover` — destaca a linha sob o cursor.
|
|
30
|
-
- `.fs-table-bordered` — bordas em todas as células.
|
|
31
|
-
- `.fs-table-borderless` — remove todas as bordas internas.
|
|
32
|
-
- `.fs-table-sm` — reduz o padding das células.
|
|
33
|
-
- `.fs-table-{primary|secondary|success|warning|danger|info}` — tinge
|
|
34
|
-
fundo/texto da tabela inteira com uma cor de estado (mesmos tokens dos
|
|
35
|
-
alerts).
|
|
36
|
-
- `.fs-table-responsive` — aplique num `<div>` **envolvendo** a
|
|
37
|
-
`<table>` (não na tabela em si), para rolagem horizontal em telas
|
|
38
|
-
estreitas:
|
|
39
|
-
|
|
40
|
-
```html
|
|
41
|
-
<div class="fs-table-responsive">
|
|
42
|
-
<table class="fs-table">...</table>
|
|
43
|
-
</div>
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
Combináveis entre si (ex.: `fs-table-striped fs-table-bordered fs-table-sm`).
|
|
47
|
-
|
|
48
|
-
## Estados
|
|
49
|
-
|
|
50
|
-
Nenhum — tabela é conteúdo estático. Se precisar de ordenação/filtro/
|
|
51
|
-
paginação client-side, veja o [DataTable](datatable.md), a camada JS
|
|
52
|
-
opcional que reusa `.fs-table`.
|
|
53
|
-
|
|
54
|
-
## A11y
|
|
55
|
-
|
|
56
|
-
Use `.fs-table-responsive` para rolagem horizontal, `.fs-table-caption` para legenda e
|
|
57
|
-
`.fs-table-empty` para estados sem dados. `.fs-table-priority` preserva colunas essenciais.
|
|
58
|
-
|
|
59
|
-
- Use `<th scope="col">`/`<th scope="row">` conforme o cabeçalho for de
|
|
60
|
-
coluna ou linha — não é aplicado automaticamente.
|
|
61
|
-
- Para tabelas grandes/complexas, considere `<caption>` descrevendo o
|
|
62
|
-
conteúdo.
|
|
63
|
-
|
|
64
|
-
## API JS
|
|
65
|
-
|
|
66
|
-
Nenhuma — 100% CSS. Para ordenação/filtro/paginação, use o
|
|
67
|
-
[DataTable](datatable.md).
|
|
68
|
-
|
|
69
|
-
## Tokens
|
|
70
|
-
|
|
71
|
-
`--fs-color-border`, `--fs-color-text`, `--fs-color-muted` (cabeçalho),
|
|
72
|
-
`--fs-color-subtle` (striped/hover), `--fs-alert-{nome}-bg`/`-text`
|
|
73
|
-
(variante de cor de estado).
|
|
74
|
-
|
|
75
|
-
## Exemplo
|
|
76
|
-
|
|
77
|
-
```html
|
|
78
|
-
<div class="fs-table-responsive">
|
|
79
|
-
<table class="fs-table fs-table-striped fs-table-bordered fs-table-sm">
|
|
80
|
-
<thead>
|
|
81
|
-
<tr><th scope="col">Nome</th><th scope="col">E-mail</th><th scope="col">Status</th></tr>
|
|
82
|
-
</thead>
|
|
83
|
-
<tbody>
|
|
84
|
-
<tr><td>Ana</td><td>ana@exemplo.com</td><td>Ativo</td></tr>
|
|
85
|
-
</tbody>
|
|
86
|
-
</table>
|
|
87
|
-
</div>
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
Mockup: [laboratório do componente](../../mockup/content-data.html#table).
|
package/docs/components/tabs.md
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
# Tabs
|
|
2
|
-
|
|
3
|
-
Alterna painéis de conteúdo por clique/teclado. Reusa `.fs-nav-link`
|
|
4
|
-
([Navbar](navbar.md)) como item — o HTML e a navegação por teclado são os
|
|
5
|
-
mesmos em qualquer um dos 3 estilos visuais.
|
|
6
|
-
|
|
7
|
-
## Visão geral
|
|
8
|
-
|
|
9
|
-
```html
|
|
10
|
-
<div class="fs-tabs" data-fs="tabs">
|
|
11
|
-
<a href="#" class="fs-nav-link is-active" data-fs-target="#perfil">Perfil</a>
|
|
12
|
-
<a href="#" class="fs-nav-link" data-fs-target="#seguranca">Segurança</a>
|
|
13
|
-
</div>
|
|
14
|
-
<div class="fs-tab-content">
|
|
15
|
-
<div class="fs-tab-pane is-active" id="perfil">Conteúdo Perfil.</div>
|
|
16
|
-
<div class="fs-tab-pane" id="seguranca">Conteúdo Segurança.</div>
|
|
17
|
-
</div>
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Anatomia
|
|
21
|
-
|
|
22
|
-
`.fs-tabs` (`data-fs="tabs"`) > `.fs-nav-link` (um por aba, `data-fs-target`
|
|
23
|
-
apontando pro painel) + `.fs-tab-content` > `.fs-tab-pane` (um por aba,
|
|
24
|
-
`id` batendo com o `data-fs-target` correspondente).
|
|
25
|
-
|
|
26
|
-
## Variações
|
|
27
|
-
|
|
28
|
-
- **Estilo**: linha (padrão, sublinhado na aba ativa), `.fs-tabs-pill`
|
|
29
|
-
(chip com fundo sólido na aba ativa, sem linha), `.fs-tabs-depth` (aba
|
|
30
|
-
ativa "sobe" com fundo igual ao conteúdo, sobre um backdrop neutro — como
|
|
31
|
-
aba de pasta).
|
|
32
|
-
- **Alinhamento**: `.fs-tabs-center`, `.fs-tabs-right`; sem sufixo =
|
|
33
|
-
esquerda (padrão). `.fs-tabs-fill` distribui os itens em largura igual.
|
|
34
|
-
- **Tamanho**: `.fs-tabs-sm`, `.fs-tabs-lg`; sem sufixo = padrão.
|
|
35
|
-
|
|
36
|
-
```html
|
|
37
|
-
<div class="fs-tabs fs-tabs-pill fs-tabs-center" data-fs="tabs">...</div>
|
|
38
|
-
<div class="fs-tabs fs-tabs-depth fs-tabs-fill fs-tabs-lg" data-fs="tabs">...</div>
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Estados
|
|
42
|
-
|
|
43
|
-
- `.is-active` na aba e no painel correspondente — controlado pelo JS ao
|
|
44
|
-
trocar, ou definido no HTML inicial (exatamente uma aba/painel deve
|
|
45
|
-
começar ativo).
|
|
46
|
-
- `.is-disabled` na aba — não recebe clique nem entra na navegação por
|
|
47
|
-
seta.
|
|
48
|
-
|
|
49
|
-
## A11y
|
|
50
|
-
|
|
51
|
-
O JS aplica automaticamente ao inicializar: `role="tablist"` no `.fs-tabs`,
|
|
52
|
-
`role="tab"` + `aria-selected` + `tabindex` (roving: só a aba ativa tem
|
|
53
|
-
`tabindex="0"`) em cada `.fs-nav-link`, e `role="tabpanel"` +
|
|
54
|
-
`aria-labelledby` no painel correspondente. Nenhum desses atributos precisa
|
|
55
|
-
ser escrito manualmente no HTML.
|
|
56
|
-
|
|
57
|
-
Teclado (com foco numa aba): `ArrowLeft`/`ArrowRight` move e ativa a
|
|
58
|
-
aba anterior/próxima (pulando desabilitadas), `Home`/`End` vai pra
|
|
59
|
-
primeira/última.
|
|
60
|
-
|
|
61
|
-
Para separar navegação e ativação, use `data-tabs-activation="manual"` no
|
|
62
|
-
grupo. Nesse modo as setas apenas movem o foco; `Enter` ou `Espaço` ativa a
|
|
63
|
-
aba focada.
|
|
64
|
-
|
|
65
|
-
## API JS
|
|
66
|
-
|
|
67
|
-
Auto-init via `data-fs="tabs"`. `Tabs.getInstance(el)`.
|
|
68
|
-
|
|
69
|
-
| Método | Descrição |
|
|
70
|
-
|---|---|
|
|
71
|
-
| `show(tabEl)` | Ativa a aba `tabEl` (deve ser uma das `.fs-nav-link` do grupo) e o painel correspondente; desativa as demais. Não faz nada se `tabEl` já é a ativa. |
|
|
72
|
-
| `dispose()` | Remove os listeners de clique/teclado e desregistra a instância. |
|
|
73
|
-
|
|
74
|
-
| Evento | Cancelável | Quando |
|
|
75
|
-
|---|---|---|
|
|
76
|
-
| `fs:tab:changed` | Não | Depois de trocar de aba — `event.detail.target` traz o seletor (`data-fs-target`) da aba ativa. |
|
|
77
|
-
|
|
78
|
-
```js
|
|
79
|
-
const tabs = FokusStyles.Tabs.getInstance(document.getElementById("minhas-tabs"));
|
|
80
|
-
tabs.show(document.querySelector('[data-fs-target="#seguranca"]'));
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
## Tokens
|
|
84
|
-
|
|
85
|
-
Usa `--fs-color-border`, `--fs-color-primary` (linha/pill ativos),
|
|
86
|
-
`--fs-color-bg-subtle` (depth), `--fs-color-surface` (depth ativo),
|
|
87
|
-
`--fs-radius-sm`.
|
|
88
|
-
|
|
89
|
-
## Exemplo
|
|
90
|
-
|
|
91
|
-
```html
|
|
92
|
-
<div class="fs-tabs" data-fs="tabs">
|
|
93
|
-
<a href="#" class="fs-nav-link is-active" data-fs-target="#tab-perfil">Perfil</a>
|
|
94
|
-
<a href="#" class="fs-nav-link" data-fs-target="#tab-seguranca">Segurança</a>
|
|
95
|
-
<a href="#" class="fs-nav-link is-disabled" data-fs-target="#tab-notif">Notificações</a>
|
|
96
|
-
</div>
|
|
97
|
-
<div class="fs-tab-content">
|
|
98
|
-
<div class="fs-tab-pane is-active" id="tab-perfil">Conteúdo da aba Perfil.</div>
|
|
99
|
-
<div class="fs-tab-pane" id="tab-seguranca">Conteúdo da aba Segurança.</div>
|
|
100
|
-
<div class="fs-tab-pane" id="tab-notif">Conteúdo da aba Notificações (desabilitada).</div>
|
|
101
|
-
</div>
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
Mockup: [laboratório do componente](../../mockup/navigation-disclosure.html#tabs).
|