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,118 +0,0 @@
|
|
|
1
|
-
# Layout avançado
|
|
2
|
-
|
|
3
|
-
Três primitivas de layout CSS-only (Stack, Cluster, Sidebar), utilitários de
|
|
4
|
-
posição sticky e utilitários de container query (`@container`) — para
|
|
5
|
-
composições que os utilitários de grid/flex existentes (`.fs-row`/`.fs-col-*`,
|
|
6
|
-
`.fs-u-d-flex`) não cobrem bem sozinhos. Exemplo funcional completo em
|
|
7
|
-
[`mockup/foundations.html#layout`](../../mockup/foundations.html#layout).
|
|
8
|
-
|
|
9
|
-
## Stack
|
|
10
|
-
|
|
11
|
-
Empilha os filhos diretos verticalmente com espaçamento consistente via
|
|
12
|
-
`gap` (não `margin` — evita o problema de "o último filho não deve ter
|
|
13
|
-
margin-bottom"):
|
|
14
|
-
|
|
15
|
-
```html
|
|
16
|
-
<div class="fs-stack">
|
|
17
|
-
<div>Item 1</div>
|
|
18
|
-
<div>Item 2</div>
|
|
19
|
-
<div>Item 3</div>
|
|
20
|
-
</div>
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
O espaçamento padrão vem do token `--fs-stack-gap` (`$spacers[3]`, `1rem`).
|
|
24
|
-
Ajuste com uma classe `.fs-stack-gap-{0..5}` (mesma escala de
|
|
25
|
-
`$spacers` usada nos utilitários `.fs-u-m*`/`.fs-u-p*`) ou redefinindo o token
|
|
26
|
-
direto no elemento:
|
|
27
|
-
|
|
28
|
-
```html
|
|
29
|
-
<div class="fs-stack fs-stack-gap-1">…</div>
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
## Cluster
|
|
33
|
-
|
|
34
|
-
Agrupa itens horizontalmente com quebra de linha automática e espaçamento
|
|
35
|
-
consistente nos dois eixos — para grupos de tags, botões ou badges que
|
|
36
|
-
precisam "fluir" sem estourar o container:
|
|
37
|
-
|
|
38
|
-
```html
|
|
39
|
-
<div class="fs-cluster">
|
|
40
|
-
<span class="fs-tag">Frontend</span>
|
|
41
|
-
<span class="fs-tag">CSS</span>
|
|
42
|
-
<span class="fs-tag">Acessibilidade</span>
|
|
43
|
-
</div>
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
Gap ajustável do mesmo jeito que o Stack: `.fs-cluster-gap-{0..5}` ou
|
|
47
|
-
`--fs-cluster-gap`.
|
|
48
|
-
|
|
49
|
-
## Sidebar
|
|
50
|
-
|
|
51
|
-
Um lado com largura fixa (a "aside") e o outro preenchendo o espaço
|
|
52
|
-
restante — quebra para empilhado quando o container fica estreito demais,
|
|
53
|
-
sem media query (a técnica é puramente flexbox: `.fs-sidebar-content` tem
|
|
54
|
-
`flex-basis: 0` e `min-width: 50%`, forçando a quebra quando não cabe ao
|
|
55
|
-
lado da aside na largura disponível):
|
|
56
|
-
|
|
57
|
-
```html
|
|
58
|
-
<div class="fs-sidebar">
|
|
59
|
-
<aside class="fs-sidebar-aside">Menu lateral</aside>
|
|
60
|
-
<div class="fs-sidebar-content">Conteúdo principal</div>
|
|
61
|
-
</div>
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
- Largura da aside: `--fs-sidebar-width` (padrão `16rem`), ou uma classe
|
|
65
|
-
`.fs-sidebar-width-{sm,md,lg,xl,xxl,xxxl}` (reusa a escala de
|
|
66
|
-
`$column-max-widths`, de 120px a 720px).
|
|
67
|
-
- `.fs-sidebar-reverse` inverte a ordem visual (aside à direita).
|
|
68
|
-
- Gap: `.fs-sidebar-gap-{0..5}` ou `--fs-sidebar-gap`.
|
|
69
|
-
|
|
70
|
-
## Sticky
|
|
71
|
-
|
|
72
|
-
`.fs-u-sticky-top`/`.fs-u-sticky-bottom` (`position: sticky`) com offset
|
|
73
|
-
configurável via `--fs-sticky-top`/`--fs-sticky-bottom` (padrão `0`) e
|
|
74
|
-
`z-index: 1020` (mesma faixa numérica dos demais componentes de overlay —
|
|
75
|
-
acima de conteúdo normal e do Dropdown, abaixo de Modal/Offcanvas):
|
|
76
|
-
|
|
77
|
-
```html
|
|
78
|
-
<div style="overflow-y: auto; max-height: 300px;">
|
|
79
|
-
<div class="fs-u-sticky-top">Cabeçalho fixo</div>
|
|
80
|
-
<p>Conteúdo rolável…</p>
|
|
81
|
-
</div>
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
Um contêiner com scroll próprio (como no exemplo acima) precisa ser
|
|
85
|
-
focável por teclado (`tabindex="0"`) se o conteúdo for maior que a área
|
|
86
|
-
visível — sem isso, quem navega só por teclado não consegue rolar o
|
|
87
|
-
conteúdo (regra `scrollable-region-focusable` do gate `axe` no CI).
|
|
88
|
-
|
|
89
|
-
## Container queries (`@container`)
|
|
90
|
-
|
|
91
|
-
Reagem à largura do **container** mais próximo, não da viewport — útil
|
|
92
|
-
para um componente que se comporta de forma diferente dependendo de onde é
|
|
93
|
-
colocado (uma sidebar estreita vs. uma área de conteúdo larga), independente
|
|
94
|
-
do tamanho da tela. Ative com `.fs-u-cq` no elemento pai:
|
|
95
|
-
|
|
96
|
-
```html
|
|
97
|
-
<div class="fs-u-cq">
|
|
98
|
-
<div class="fs-u-cq-md-d-flex fs-u-gap-2">
|
|
99
|
-
<div>A</div>
|
|
100
|
-
<div>B</div>
|
|
101
|
-
</div>
|
|
102
|
-
</div>
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
- `.fs-u-cq` define `container-type: inline-size` — só aplique num elemento
|
|
106
|
-
cuja largura você quer usar como referência (não precisa ser o `:root`).
|
|
107
|
-
- Utilitários disponíveis: `.fs-u-cq-{sm,md,lg}-d-{none,block,inline-block,flex}`,
|
|
108
|
-
seguindo os limiares `--fs-cq-sm` (320px), `--fs-cq-md` (480px),
|
|
109
|
-
`--fs-cq-lg` (640px) — uma escala própria, mais compacta que a de
|
|
110
|
-
viewport (`$breakpoints`), porque containers costumam ser bem menores
|
|
111
|
-
que a tela inteira.
|
|
112
|
-
- Os tokens `--fs-cq-*` em `:root` são só **informativos** (documentam os
|
|
113
|
-
valores usados) — a condição de um `@container` exige um valor literal
|
|
114
|
-
em tempo de build, não aceita `var()`; mudar o token em runtime não
|
|
115
|
-
recalibra as regras já compiladas.
|
|
116
|
-
- Complementam, não substituem, os utilitários de viewport existentes
|
|
117
|
-
(`.fs-u-d-flex` etc.) — para a maioria dos casos, media query por viewport
|
|
118
|
-
continua sendo a ferramenta certa.
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
# Migração do Clarus para o Fokus Styles
|
|
2
|
-
|
|
3
|
-
O Fokus Styles 2.0 renomeia integralmente a API pública do Clarus. Não há
|
|
4
|
-
aliases: atualize todos os imports, seletores, atributos e acessos ao global
|
|
5
|
-
JavaScript antes de remover o pacote anterior.
|
|
6
|
-
|
|
7
|
-
| Clarus 1.x | Fokus Styles 2.0 |
|
|
8
|
-
| --- | --- |
|
|
9
|
-
| `clarus-css` | `fokus-styles` |
|
|
10
|
-
| `clarus-icons` | `fokus-styles/icons` |
|
|
11
|
-
| `clarus-react` | `fokus-styles/react` |
|
|
12
|
-
| `clarus-cli` | `fokus-styles` com o comando `fokus` |
|
|
13
|
-
| `.fs-*` | `.fs-*` |
|
|
14
|
-
| `.u-*` | `.fs-u-*` |
|
|
15
|
-
| `--fs-*` | `--fs-*` |
|
|
16
|
-
| `data-fs*` | `data-fs*` |
|
|
17
|
-
| `data-fs-brand` | `data-fs-brand` |
|
|
18
|
-
| `window.Clarus` | `window.FokusStyles` |
|
|
19
|
-
| `fs:*` | `fs:*` |
|
|
20
|
-
|
|
21
|
-
## Instalação
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
npm uninstall clarus-css clarus-icons clarus-cli clarus-react
|
|
25
|
-
npm install fokus-styles
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Exemplo
|
|
29
|
-
|
|
30
|
-
```html
|
|
31
|
-
<button class="fs-btn fs-btn-primary" data-fs="modal" data-fs-target="#perfil">
|
|
32
|
-
Abrir perfil
|
|
33
|
-
</button>
|
|
34
|
-
|
|
35
|
-
<script src="node_modules/fokus-styles/dist/js/fokus.min.js"></script>
|
|
36
|
-
<script>
|
|
37
|
-
document.addEventListener("fs:modal:shown", () => console.log("aberto"));
|
|
38
|
-
</script>
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
Para React, importe `ModalTrigger`, `ModalPanel`, `DropdownTrigger`,
|
|
42
|
-
`DropdownMenu` e `TabList` de `fokus-styles/react`. Para ícones, importe do
|
|
43
|
-
barrel `fokus-styles/icons` ou de um módulo individual como
|
|
44
|
-
`fokus-styles/icons/check.js`.
|
|
45
|
-
|
|
46
|
-
O codemod `scripts/migrate-fokus.mjs` ajuda a converter a versão anterior do
|
|
47
|
-
framework. Execute-o primeiro com `--dry-run`, revise o diff e só então grave
|
|
48
|
-
as alterações.
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
# Guia de migração — vindo de outro framework CSS
|
|
2
|
-
|
|
3
|
-
Este guia é para quem já usa **outro framework CSS de utilitários/componentes**
|
|
4
|
-
(ex.: um framework baseado em classes utilitárias tipo `flex`/`gap-4`, ou um
|
|
5
|
-
framework de componentes com prefixo `.btn`/`.card`/`.alert`) e quer migrar
|
|
6
|
-
pro Fokus Styles. Ele mapeia os padrões de nomenclatura mais comuns do
|
|
7
|
-
ecossistema pros equivalentes do FokusStyles — não é uma migração automatizada
|
|
8
|
-
(classes e comportamento não são 1:1 em todo canto), mas cobre os casos mais
|
|
9
|
-
frequentes.
|
|
10
|
-
|
|
11
|
-
> Procurando pela migração de uma versão **antiga do FokusStyles** (rename da
|
|
12
|
-
> API pública pra prefixo `fs-`) para a v1.0.0? Isso é
|
|
13
|
-
> [`migration-v1.md`](migration-v1.md), um guia diferente.
|
|
14
|
-
|
|
15
|
-
## Como o FokusStyles nomeia as coisas
|
|
16
|
-
|
|
17
|
-
Duas convenções fixas, sem exceção, ajudam a prever qualquer classe sem
|
|
18
|
-
decorar a lista inteira:
|
|
19
|
-
|
|
20
|
-
- **Componentes**: prefixo `fs-` (`.fs-btn`, `.fs-card`, `.fs-modal`).
|
|
21
|
-
- **Utilitários** (uma propriedade CSS por classe): prefixo `fs-u-` (`.fs-u-d-flex`,
|
|
22
|
-
`.fs-u-mt-3`, `.fs-u-text-center`).
|
|
23
|
-
|
|
24
|
-
Responsividade é sempre um infixo de breakpoint antes do valor:
|
|
25
|
-
`.fs-u-d{-sm|-md|-lg|-xl|-xxl}-flex`, `.fs-u-mt-lg-4` — nunca um prefixo diferente
|
|
26
|
-
por breakpoint.
|
|
27
|
-
|
|
28
|
-
## Utilitários de layout (flexbox/grid/spacing)
|
|
29
|
-
|
|
30
|
-
Framework baseados em classes utilitárias atômicas costumam usar nomes
|
|
31
|
-
curtos sem prefixo (`flex`, `gap-4`, `p-2`) ou com prefixo de uma letra
|
|
32
|
-
(`d-flex`, `mt-3`, já familiar a quem vem de um framework de componentes com
|
|
33
|
-
utilitários auxiliares). O FokusStyles usa **nomes completos com prefixo `fs-u-`**,
|
|
34
|
-
priorizando previsibilidade sobre brevidade:
|
|
35
|
-
|
|
36
|
-
| Padrão comum no ecossistema | Fokus Styles | Observação |
|
|
37
|
-
|---|---|---|
|
|
38
|
-
| `flex` / `d-flex` | `.fs-u-d-flex` | Idem `.fs-u-d-block`, `.fs-u-d-none`, `.fs-u-d-inline-block`. |
|
|
39
|
-
| `items-center` / `align-items-center` | `.fs-u-align-items-center` | Também `-start`/`-end`. |
|
|
40
|
-
| `justify-between` / `justify-content-between` | `.fs-u-justify-content-between` | Também `-start`/`-center`/`-end`/`-around`. |
|
|
41
|
-
| `gap-4` / `gap-3` (escala 0–5) | `.fs-u-gap-4` | Escala de espaçamento própria — ver [tokens](../reference/design-tokens.md) pro mapa `$spacers`; não é 1:1 numérico com a escala de outros frameworks. |
|
|
42
|
-
| `m-4`, `mt-2`, `mx-auto` | `.fs-u-m-4`, `.fs-u-mt-2`, `.fs-u-mx-auto` | Mesmo padrão de abreviação (`m`/`mt`/`mr`/`mb`/`ml`/`mx`/`my`) já usado por frameworks de componentes com utilitários auxiliares — só troca o prefixo pra `fs-u-`. |
|
|
43
|
-
| `p-4`, `px-3`, `py-2` | `.fs-u-p-4`, `.fs-u-px-3`, `.fs-u-py-2` | Idem acima, para padding. |
|
|
44
|
-
| `text-center` | `.fs-u-text-center` | Também `-start`/`-end`. |
|
|
45
|
-
| `font-bold` / `fw-bold` | `.fs-u-fw-bold` | Também `-regular`/`-medium`/`-semibold`. |
|
|
46
|
-
| `text-lg` / `fs-5` | `.fs-u-fs-lg` | Escala nomeada (`xs`/`sm`/`md`/`lg`/`xl`/`h1`…`h6`), não numérica. |
|
|
47
|
-
| `hidden` / `d-none` | `.fs-u-d-none` | Oculta via `display: none` (remove do layout e da árvore de acessibilidade). |
|
|
48
|
-
| `invisible` | `.fs-u-invisible` | `visibility: hidden` — reserva o espaço no layout, ao contrário de `.fs-u-d-none`. |
|
|
49
|
-
| `container` | `.fs-container` | Componente de layout, não utilitário — ver seção seguinte. |
|
|
50
|
-
| `row` / `grid grid-cols-12` | `.fs-row` | Grid flexbox de 12 colunas, não CSS Grid. |
|
|
51
|
-
| `col`, `col-6`, `col-md-4` | `.fs-col`, `.fs-col-6`, `.fs-col-md-4` | Mesma lógica de frações de 12 colunas com infixo de breakpoint. |
|
|
52
|
-
|
|
53
|
-
Para stack/cluster/sidebar/sticky/container-queries (utilitários de layout
|
|
54
|
-
mais recentes, sem equivalente direto e estabelecido em frameworks mais
|
|
55
|
-
antigos), veja o guia dedicado
|
|
56
|
-
[`layout-advanced.md`](layout-advanced.md) — não há "de onde migrar" porque
|
|
57
|
-
são aditivos, não substituem nada que você já tinha.
|
|
58
|
-
|
|
59
|
-
## Componentes
|
|
60
|
-
|
|
61
|
-
Frameworks de componentes tradicionalmente usam classes curtas sem prefixo
|
|
62
|
-
(`.btn`, `.card`, `.alert`); frameworks só-utilitários normalmente não têm
|
|
63
|
-
esse conceito (você compõe o visual de um botão a partir de utilitários) —
|
|
64
|
-
o FokusStyles segue o primeiro modelo, com o prefixo `fs-` obrigatório em todos:
|
|
65
|
-
|
|
66
|
-
| Padrão comum (framework de componentes) | Fokus Styles |
|
|
67
|
-
|---|---|
|
|
68
|
-
| `.btn`, `.btn.btn-primary` | `.fs-btn`, `.fs-btn.fs-btn-primary` |
|
|
69
|
-
| `.btn-outline-primary` | `.fs-btn-outline-primary` |
|
|
70
|
-
| `.btn-sm`, `.btn-lg` | `.fs-btn-sm`, `.fs-btn-lg` |
|
|
71
|
-
| `.card`, `.card-header`, `.card-body`, `.card-footer` | `.fs-card`, `.fs-card-header`, `.fs-card-body`, `.fs-card-footer` |
|
|
72
|
-
| `.alert.alert-danger` | `.fs-alert.fs-alert-danger` |
|
|
73
|
-
| `.badge.bg-primary` / `.badge.badge-primary` | `.fs-badge.fs-badge-primary` |
|
|
74
|
-
| `.table.table-striped` | `.fs-table.fs-table-striped` |
|
|
75
|
-
| `.modal`, `.modal-dialog`, `.modal-body` | `.fs-modal`, `.fs-modal-dialog`, `.fs-modal-body` — ver [modal.md](../components/modal.md) pra diferenças de API JS |
|
|
76
|
-
| `.dropdown-menu`, `.dropdown-item` | `.fs-dropdown-menu`, `.fs-dropdown-item` |
|
|
77
|
-
| `.form-control` | `.fs-form-control` |
|
|
78
|
-
|
|
79
|
-
Se você está migrando de um framework só-utilitários (sem classes de
|
|
80
|
-
componente prontas), o ponto de partida é o oposto: em vez de recompor cada
|
|
81
|
-
botão/card a partir de utilitários, procure o componente FokusStyles equivalente
|
|
82
|
-
em [`docs/components/`](../components/) — geralmente é menos código, não
|
|
83
|
-
mais.
|
|
84
|
-
|
|
85
|
-
## O que **não** migra 1:1
|
|
86
|
-
|
|
87
|
-
- **API JavaScript**: nomes de método/evento são específicos do FokusStyles
|
|
88
|
-
(`data-fs="modal"`, `FokusStyles.Modal.getInstance()`, eventos
|
|
89
|
-
`fs:modal:shown`) — não há compatibilidade de API com nenhum outro
|
|
90
|
-
framework. Veja a página de cada componente em
|
|
91
|
-
[`docs/components/`](../components/) pra API completa.
|
|
92
|
-
- **Escala de espaçamento/tipografia**: os valores numéricos
|
|
93
|
-
(`fs-u-gap-4`, `fs-u-fs-lg`) seguem a escala própria do FokusStyles
|
|
94
|
-
(`$spacers`/`$font-size-*`), não a de nenhum outro framework — não
|
|
95
|
-
assuma que `gap-4` de outro lugar é visualmente idêntico a `.fs-u-gap-4`
|
|
96
|
-
aqui, mesmo com o nome parecido.
|
|
97
|
-
- **Grid**: `.fs-row`/`.fs-col-*` é flexbox de 12 colunas, não CSS Grid —
|
|
98
|
-
se você vem de um framework CSS Grid nativo (`grid-cols-12`), o modelo
|
|
99
|
-
mental de "colunas fluem e quebram linha" é diferente de "células fixas
|
|
100
|
-
numa grade".
|
|
101
|
-
- **Tema/dark mode**: o FokusStyles usa `data-theme="dark"` num ancestral
|
|
102
|
-
(não uma classe `.dark` no `<html>`) — ver [`dark-mode.md`](dark-mode.md).
|
|
103
|
-
- **Build/configuração**: não há arquivo de configuração JS central
|
|
104
|
-
(customização é via variáveis Sass — `$primitives`, `$spacers` etc.) —
|
|
105
|
-
ver [`scss-architecture.md`](../reference/scss-architecture.md).
|
|
106
|
-
|
|
107
|
-
## Checklist de migração
|
|
108
|
-
|
|
109
|
-
1. Troque classes de utilitário: adicione o prefixo `fs-u-` e expanda
|
|
110
|
-
abreviações de uma letra pro nome completo mais próximo da tabela acima
|
|
111
|
-
(`flex` → `fs-u-d-flex`, não existe atalho de uma letra no FokusStyles).
|
|
112
|
-
2. Troque classes de componente: adicione o prefixo `fs-` em todas
|
|
113
|
-
(`.btn` → `.fs-btn`, incluindo variantes: `.btn-primary` → `.fs-btn-primary`).
|
|
114
|
-
3. Rode `npm run lint:scss` (se você também copiou SCSS customizado — o
|
|
115
|
-
FokusStyles usa Stylelint com `stylelint-config-standard-scss`) e
|
|
116
|
-
`npm run test:visual` (se tiver mockups próprios) pra pegar
|
|
117
|
-
divergências visuais cedo.
|
|
118
|
-
4. Refaça a integração JS pelos `data-fs="*"`/`data-fs-target`/eventos
|
|
119
|
-
`fs:*` — não existe camada de compatibilidade com a API de outro
|
|
120
|
-
framework.
|
|
121
|
-
5. Revise a matriz de [suporte a navegadores](../reference/browser-support.md)
|
|
122
|
-
se seu projeto anterior mirava um alvo diferente (ex.: IE11) — o FokusStyles
|
|
123
|
-
não suporta IE11 e usa `@layer`/OKLCH nativamente.
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
# Guia de migração para v1.0.0
|
|
2
|
-
|
|
3
|
-
A v1.0.0 renomeia mecanicamente toda a API pública do Fokus Styles para evitar
|
|
4
|
-
colisão com classes de terceiros na mesma página. É a única mudança
|
|
5
|
-
breaking desta versão — nenhum componente foi removido ou teve
|
|
6
|
-
comportamento alterado.
|
|
7
|
-
|
|
8
|
-
Não mudam: o global `window.FokusStyles` e o nome do pacote npm `fokus-styles`.
|
|
9
|
-
|
|
10
|
-
## O que muda
|
|
11
|
-
|
|
12
|
-
| Categoria | Antes | Depois | Exemplo |
|
|
13
|
-
|---|---|---|---|
|
|
14
|
-
| Classe de componente/layout | sem prefixo | `fs-` | `.btn` → `.fs-btn`, `.dropdown-menu` → `.fs-dropdown-menu`, `.container`/`.row`/`.col-*` → `.fs-container`/`.fs-row`/`.fs-col-*` |
|
|
15
|
-
| Classe utilitária | sem prefixo | `fs-u-` | `.d-flex` → `.fs-u-d-flex`, `.mt-3` → `.fs-u-mt-3` |
|
|
16
|
-
| Estado controlado por JS | variava | `is-*` | `.show` → `.is-open`, `.active` → `.is-active`, `.disabled` → `.is-disabled` |
|
|
17
|
-
| Tokens CSS | `--fokus-*` | `--fs-*` | `--fokus-color-primary` → `--fs-color-primary` |
|
|
18
|
-
| Atributo de auto-init | `data-fokus` | `data-fs` | `data-fokus="modal"` → `data-fs="modal"` |
|
|
19
|
-
| Atributos de alvo/dispensa | `data-target`/`data-dismiss` | `data-fs-target`/`data-fs-dismiss` | `data-target="#foo"` → `data-fs-target="#foo"` |
|
|
20
|
-
| Eventos DOM customizados | `fokus:*` | `fs:*` | `fokus:modal:shown` → `fs:modal:shown` |
|
|
21
|
-
|
|
22
|
-
`.is-valid`/`.is-invalid` (validação de formulário) e `.is-dragover`
|
|
23
|
-
(file-drop) já seguiam a convenção `is-*` antes da v1 — não mudam.
|
|
24
|
-
|
|
25
|
-
## Rodando o codemod
|
|
26
|
-
|
|
27
|
-
O pacote inclui um codemod que aplica essas substituições em arquivos
|
|
28
|
-
HTML/JS (`class="..."`, `data-fokus`/`data-target`/`data-dismiss`, tokens
|
|
29
|
-
`--fokus-*` em `<style>`/JS, e strings de evento `fokus:*`):
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
node node_modules/fokus-styles/scripts/migrate-v1.mjs caminho/para/seu/projeto --dry-run
|
|
33
|
-
node node_modules/fokus-styles/scripts/migrate-v1.mjs caminho/para/seu/projeto
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
- `--dry-run` só lista os arquivos que seriam alterados, sem escrever nada.
|
|
37
|
-
- Sem `--dry-run`, sobrescreve os arquivos in-place — rode com o working
|
|
38
|
-
tree do seu projeto limpo (git) para poder revisar o diff depois.
|
|
39
|
-
- A substituição de classes é por correspondência **exata de token**: o
|
|
40
|
-
codemod só troca tokens que batem com um nome antigo conhecido do FokusStyles
|
|
41
|
-
(`scripts/migrate-v1-map.json`, ~1360 pares gerados diretamente da
|
|
42
|
-
renomeação). Uma classe sua com o mesmo nome de uma classe antiga do
|
|
43
|
-
FokusStyles (ex.: você também tinha uma `.card` própria) seria trocada por
|
|
44
|
-
engano — **revise o diff antes de commitar**.
|
|
45
|
-
- O codemod não cobre CSS que você escreveu contra o seletor antigo (ex.:
|
|
46
|
-
`.btn { ... }` no seu próprio stylesheet, sobrescrevendo o FokusStyles) — isso
|
|
47
|
-
precisa de ajuste manual, com a tabela acima como referência.
|
|
48
|
-
|
|
49
|
-
## Checklist de migração manual
|
|
50
|
-
|
|
51
|
-
1. Rode o codemod (acima) na sua base HTML/JS.
|
|
52
|
-
2. Busque no seu CSS por seletores que dependam das classes antigas do
|
|
53
|
-
FokusStyles (não só sobre elas, mas herdando de `--fokus-*`) e atualize para
|
|
54
|
-
os novos nomes/tokens.
|
|
55
|
-
3. Se você escuta os eventos customizados do FokusStyles
|
|
56
|
-
(`addEventListener("fokus:...")`), confirme que o codemod pegou todas as
|
|
57
|
-
strings — ele só reescreve literais entre aspas.
|
|
58
|
-
4. Rode sua suíte de testes/visual regression e confira manualmente os
|
|
59
|
-
componentes interativos (modal, dropdown, tabs, offcanvas) — o
|
|
60
|
-
comportamento não muda, só os seletores.
|
|
61
|
-
5. Se você customizava o framework via `--fokus-*` num stylesheet próprio
|
|
62
|
-
(não gerado pelo codemod, por não estar em HTML/JS), atualize esses
|
|
63
|
-
arquivos `.css` manualmente para `--fs-*`.
|
package/docs/guides/print.md
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# Utilitários de impressão
|
|
2
|
-
|
|
3
|
-
Classes para ajustar o layout quando a página é impressa (`@media print`),
|
|
4
|
-
sem exigir uma folha de estilos de impressão separada.
|
|
5
|
-
|
|
6
|
-
## Classes
|
|
7
|
-
|
|
8
|
-
- `.fs-u-print-hide` — oculta o elemento só na impressão (`display: none`).
|
|
9
|
-
Útil para navbars, botões de ação, sidebars de navegação.
|
|
10
|
-
- `.fs-u-print-only` — oculta o elemento fora da impressão; ele só aparece no
|
|
11
|
-
resultado impresso (ex.: um bloco com URL/data de geração do documento).
|
|
12
|
-
- `.fs-u-print-block` / `.fs-u-print-inline` / `.fs-u-print-inline-block` — força um
|
|
13
|
-
valor de `display` só na impressão, útil para reverter um `.fs-u-d-none` (ou
|
|
14
|
-
outro `display` aplicado na tela) especificamente no documento impresso.
|
|
15
|
-
|
|
16
|
-
```html
|
|
17
|
-
<header class="fs-u-print-hide">
|
|
18
|
-
<nav>…</nav>
|
|
19
|
-
</header>
|
|
20
|
-
|
|
21
|
-
<div class="fs-u-print-only">Gerado em fokus-styles.dev — 2026-07-07</div>
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Notas
|
|
25
|
-
|
|
26
|
-
- São utilitários de `display`, não uma folha de estilos de impressão
|
|
27
|
-
completa — não alteram cor, quebra de página ou tamanho de fonte.
|
|
28
|
-
- Combinam com os demais utilitários de `display` (`.fs-u-d-*`): a classe de
|
|
29
|
-
impressão só atua dentro de `@media print`, então não conflita com o
|
|
30
|
-
valor aplicado na tela.
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# RTL e preferências do sistema
|
|
2
|
-
|
|
3
|
-
## Visão geral
|
|
4
|
-
|
|
5
|
-
O Fokus Styles 2.4 mantém os componentes em fluxo lógico e oferece o preset
|
|
6
|
-
`fokus-styles/rtl.css` para documentos com `dir="rtl"`. O preset complementa
|
|
7
|
-
a folha principal e preserva `margin-inline`, `padding-inline`, `inset-inline`
|
|
8
|
-
e `border-inline-*`.
|
|
9
|
-
|
|
10
|
-
```html
|
|
11
|
-
<html dir="rtl" data-fs-theme="auto">
|
|
12
|
-
<link rel="stylesheet" href="fokus-styles/dist/css/fokus.css">
|
|
13
|
-
<link rel="stylesheet" href="fokus-styles/dist/css/fokus-rtl.css">
|
|
14
|
-
</html>
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## Estados de sistema
|
|
18
|
-
|
|
19
|
-
O framework respeita `prefers-reduced-motion`, `prefers-contrast: more`,
|
|
20
|
-
`forced-colors: active` e `prefers-color-scheme`. Em alto contraste, bordas e
|
|
21
|
-
foco passam a usar espessuras maiores; em forced colors, ações preservam
|
|
22
|
-
`ButtonText` e o foco usa `Highlight`.
|
|
23
|
-
|
|
24
|
-
## A11y
|
|
25
|
-
|
|
26
|
-
O atributo `dir` deve ser aplicado ao documento ou ao contêiner que define o
|
|
27
|
-
fluxo de leitura. Use `dir="auto"` quando a direção do texto inserido não for
|
|
28
|
-
conhecida.
|
package/docs/guides/theming.md
DELETED
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
# Theming
|
|
2
|
-
|
|
3
|
-
Toda a identidade visual do Fokus Styles é exposta via CSS Custom Properties
|
|
4
|
-
(prefixo `--fs-*`) — customize redefinindo a variável no seu próprio CSS,
|
|
5
|
-
sem fork e sem recompilar.
|
|
6
|
-
|
|
7
|
-
## As 3 camadas de tokens
|
|
8
|
-
|
|
9
|
-
1. **Primitivo** — valores Sass em tempo de compilação
|
|
10
|
-
(`packages/fokus-core/scss/settings/`): `$color-blue-500`, `$radius-md`,
|
|
11
|
-
`$spacers`. Não são emitidos como CSS diretamente; só existem para gerar
|
|
12
|
-
as camadas seguintes.
|
|
13
|
-
2. **Semântico** — CSS Custom Properties nomeadas por papel, não por valor
|
|
14
|
-
(`packages/fokus-core/scss/tokens/`): `--fs-color-primary`,
|
|
15
|
-
`--fs-color-bg-surface`, `--fs-color-text-primary`,
|
|
16
|
-
`--fs-color-border-default`. É aqui que você customiza na prática.
|
|
17
|
-
3. **Componente** — alguns componentes expõem tokens próprios, com fallback
|
|
18
|
-
pra um token semântico (ex.: `.fs-btn` tem `--fs-btn-bg`/`--fs-btn-color`/
|
|
19
|
-
`--fs-btn-border-color`) — permite sobrescrever **uma instância**
|
|
20
|
-
específica sem afetar o resto:
|
|
21
|
-
|
|
22
|
-
```css
|
|
23
|
-
.meu-botao-especial {
|
|
24
|
-
--fs-btn-bg: #6d28d9;
|
|
25
|
-
}
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
Ver [`docs/reference/design-tokens.md`](../reference/design-tokens.md) para
|
|
29
|
-
a lista completa de tokens e [`docs/reference/scss-architecture.md`](../reference/scss-architecture.md)
|
|
30
|
-
para como as camadas se organizam em `@layer`.
|
|
31
|
-
|
|
32
|
-
## Customizando globalmente
|
|
33
|
-
|
|
34
|
-
Redefina o token semântico em `:root` (afeta todos os componentes que o
|
|
35
|
-
usam):
|
|
36
|
-
|
|
37
|
-
```css
|
|
38
|
-
:root {
|
|
39
|
-
--fs-color-primary: #6d28d9;
|
|
40
|
-
--fs-radius-md: 10px;
|
|
41
|
-
--fs-font-sans: "Inter", sans-serif;
|
|
42
|
-
}
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
Isso funciona em runtime, direto no CSS final — não precisa recompilar o
|
|
46
|
-
Sass nem ter acesso ao código-fonte do framework.
|
|
47
|
-
|
|
48
|
-
## Cores: OKLCH com fallback automático
|
|
49
|
-
|
|
50
|
-
Os primitivos de cor são gerados em [OKLCH](https://oklch.com/), calibrados
|
|
51
|
-
para reproduzir o mesmo matiz do hex histórico do projeto (round-trip
|
|
52
|
-
hex→oklch→hex). Cada token de cor é declarado duas vezes:
|
|
53
|
-
|
|
54
|
-
```css
|
|
55
|
-
:root {
|
|
56
|
-
--fs-color-primary: #1a61e6; /* fallback sRGB, todo navegador */
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
@supports (color: oklch(0% 0 0)) {
|
|
60
|
-
:root {
|
|
61
|
-
--fs-color-primary: oklch(53.6% 0.213 261.6deg); /* nativo, navegadores modernos */
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
Navegadores sem suporte a `oklch()` ignoram o bloco `@supports` inteiro e
|
|
67
|
-
ficam só com o fallback — sem quebra, sem polyfill. Se você **também**
|
|
68
|
-
customiza uma cor em OKLCH, recomenda-se o mesmo padrão de dois valores
|
|
69
|
-
(fallback + `@supports`) pelo mesmo motivo. Ver
|
|
70
|
-
[`docs/reference/browser-support.md`](../reference/browser-support.md).
|
|
71
|
-
|
|
72
|
-
## Customizando via Sass
|
|
73
|
-
|
|
74
|
-
Para quem compila o próprio bundle (em vez de sobrescrever CSS em runtime),
|
|
75
|
-
os valores primitivos aceitam override na hora do `@use`:
|
|
76
|
-
|
|
77
|
-
```scss
|
|
78
|
-
@use "fokus-styles/scss/fokus" with (
|
|
79
|
-
$radius-md: 10px,
|
|
80
|
-
$font-family-sans: "Inter", sans-serif
|
|
81
|
-
);
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
Qualquer variável marcada `!default` nos arquivos de
|
|
85
|
-
`packages/fokus-core/scss/settings/` pode ser sobrescrita dessa forma.
|
|
86
|
-
|
|
87
|
-
## Escala de espaçamento e breakpoints
|
|
88
|
-
|
|
89
|
-
`$spacers` (0–5, usado pelos utilitários `.fs-u-m*`/`.fs-u-p*`/`.fs-u-g*`) e
|
|
90
|
-
`$breakpoints` (`xs`–`xxxl`, usado pelo grid e por todo utilitário
|
|
91
|
-
responsivo `.fs-u-*-{breakpoint}`) também são customizáveis via Sass — não têm
|
|
92
|
-
equivalente em CSS Custom Property, porque alimentam a geração de classes
|
|
93
|
-
(nomes de classe fixos em `.css`, não podem reagir a uma variável em
|
|
94
|
-
runtime). Ver [`docs/reference/design-tokens.md`](../reference/design-tokens.md).
|
|
95
|
-
|
|
96
|
-
## Multi-brand
|
|
97
|
-
|
|
98
|
-
Além de `data-theme` (claro/escuro), o FokusStyles suporta `data-fs-brand="x"` para
|
|
99
|
-
trocar a **cor de ação primária** em runtime, sem recompilar CSS — útil pra
|
|
100
|
-
produtos white-label ou múltiplas marcas sobre o mesmo design system:
|
|
101
|
-
|
|
102
|
-
```html
|
|
103
|
-
<html data-fs-brand="violet">
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
```html
|
|
107
|
-
<html data-fs-brand="violet" data-theme="dark">
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
Três presets vêm prontos em `packages/fokus-core/scss/themes/_brands.scss`,
|
|
111
|
-
provando que a troca funciona combinada com claro e escuro:
|
|
112
|
-
|
|
113
|
-
- `violet` — o mesmo tom do exemplo de customização acima.
|
|
114
|
-
- `corporate` — azul-marinho sóbrio, para aplicações internas/B2B.
|
|
115
|
-
- `vibrant` — laranja energético, para produtos de consumo/marketing.
|
|
116
|
-
|
|
117
|
-
Só a cor de ação primária muda por marca — `secondary`/`success`/`warning`/
|
|
118
|
-
`danger`/`info` continuam universais entre marcas, porque são semânticos
|
|
119
|
-
(sucesso é sempre verde, erro sempre vermelho, independente de qual marca
|
|
120
|
-
está ativa).
|
|
121
|
-
|
|
122
|
-
Pra adicionar sua própria marca, siga o mesmo padrão do arquivo de exemplo:
|
|
123
|
-
um bloco `[data-fs-brand="sua-marca"]` (mais o par `@supports` OKLCH e a
|
|
124
|
-
combinação com `[data-theme="dark"]`) redefinindo `--fs-color-primary`,
|
|
125
|
-
`--fs-alert-primary-bg`, `--fs-alert-primary-text` e
|
|
126
|
-
`--fs-feedback-primary-bg`.
|
|
127
|
-
|
|
128
|
-
**Limitação conhecida:** `.fs-btn-primary`/`.fs-badge-primary` (preenchimento
|
|
129
|
-
sólido) calculam a cor do texto em tempo de build via `color-contrast()` a
|
|
130
|
-
partir do primary **padrão** (azul) — não recalculam por marca. Escolha um
|
|
131
|
-
primitivo de marca escuro o bastante pro texto branco continuar legível
|
|
132
|
-
(como no exemplo `violet`), ou sobrescreva `--fs-btn-color`/`--fs-badge-color`
|
|
133
|
-
manualmente se o primitivo da sua marca for muito claro. Rode
|
|
134
|
-
`npm run contrast` depois de adicionar uma marca — o relatório já audita os
|
|
135
|
-
pares `brand violet`/`brand corporate`/`brand vibrant` como referência
|
|
136
|
-
(`scripts/contrast-report.scss`).
|
|
137
|
-
|
|
138
|
-
## Próximo passo
|
|
139
|
-
|
|
140
|
-
[Dark mode](dark-mode.md) — como o tema escuro usa a mesma camada de tokens.
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
# Utility API e configuração Sass
|
|
2
|
-
|
|
3
|
-
O Fokus Styles oferece presets públicos em `fokus-styles/core`, `fokus-styles/components`,
|
|
4
|
-
`fokus-styles/utilities` e `fokus-styles/themes`. O arquivo `fokus-styles/config` expõe o
|
|
5
|
-
mapa `$fs-config` para entradas Sass customizadas.
|
|
6
|
-
|
|
7
|
-
O mixin `fs-fluid-type()` usa `clamp()` para escalar valores entre dois limites sem exigir
|
|
8
|
-
JavaScript. Classes utilitárias novas seguem o namespace `fs-u-*` e as classes existentes
|
|
9
|
-
continuam válidas dentro da linha 2.x.
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# Prompt para planejar refinamentos de um componente
|
|
2
|
-
|
|
3
|
-
Copie o texto abaixo e substitua os campos entre colchetes antes de usar.
|
|
4
|
-
|
|
5
|
-
```text
|
|
6
|
-
Atue como responsável pelo planejamento técnico e de design do Fokus Styles.
|
|
7
|
-
|
|
8
|
-
Quero criar um plano, sem implementar ainda, para o componente abaixo:
|
|
9
|
-
|
|
10
|
-
## Contexto do pedido 8011827-28.2026
|
|
11
|
-
|
|
12
|
-
- Objetivo: [REFINAMENTO VISUAL DO COMPONENTE TOOLTIP;
|
|
13
|
-
Sugira correções, alterações e implementações de códigos, funcionalidades de mudanças de visual para algo com maior qualidade, responsividade, acessibilidade, criatividade e usabilidade]
|
|
14
|
-
|
|
15
|
-
Antes de propor o plano, investigue o repositório e use a documentação como fonte de verdade. Não presuma que o componente está isolado: determine suas dependências, impactos visuais, comportamentais, públicos e de manutenção.
|
|
16
|
-
|
|
17
|
-
Leia, no mínimo, nesta ordem conforme forem aplicáveis:
|
|
18
|
-
|
|
19
|
-
1. `docs/README.md`, para entender o mapa e o contrato editorial da documentação;
|
|
20
|
-
2. a página de documentação do componente em `docs/components/` e as páginas dos componentes relacionados;
|
|
21
|
-
3. `docs/reference/definitions.md` e `docs/reference/stability.md`, para respeitar decisões e escopo já firmados;
|
|
22
|
-
4. `docs/reference/scss-architecture.md` e `docs/reference/design-tokens.md`, para preservar a arquitetura, as cascade layers, convenções e a hierarquia de tokens;
|
|
23
|
-
5. `docs/guides/accessibility.md`, a matriz de acessibilidade e o relatório de contraste quando o trabalho afetar interface, interação ou cores;
|
|
24
|
-
6. `CONTRIBUTING.md`, os mockups, exemplos, testes e o código-fonte efetivamente envolvidos.
|
|
25
|
-
|
|
26
|
-
Localize o SCSS, JavaScript, documentação, laboratórios em `mockup/`, testes unitários, testes visuais e testes de acessibilidade do componente. Consulte também tokens e componentes relacionados quando houver acoplamento, padrões compartilhados ou risco de regressão.
|
|
27
|
-
|
|
28
|
-
Priorize refinamento visual consistente com o sistema: use tokens semânticos e, quando cabível, tokens próprios do componente com fallback; não introduza valores soltos nem `!important`; preserve `@layer`, prefixos `.fs-*`, `.fs-u-*`, `.is-*`, `--fs-*` e as convenções de API. Avalie responsividade, estados padrão/hover/focus-visible/active/disabled/erro, temas claro e escuro, contraste, teclado, ARIA, foco e `prefers-reduced-motion`. Considere SemVer e compatibilidade pública ao sugerir mudanças de classes, atributos, tokens, eventos ou API JavaScript.
|
|
29
|
-
|
|
30
|
-
Se faltarem informações que alterem materialmente o plano, você pode me fazer de **5 a 10 perguntas** antes de finalizá-lo. Para cada pergunta, apresente exatamente **5 alternativas**, incluindo uma alternativa recomendada identificada como **"Recomendada"** e acompanhada de uma explicação mais detalhada do motivo. Não faça perguntas apenas por formalidade: use-as para resolver incertezas reais de objetivo, escopo, prioridade, direção visual, compatibilidade ou critérios de aceite.
|
|
31
|
-
|
|
32
|
-
Depois da investigação — e das minhas respostas, se houver perguntas — entregue um plano implementável, em português, sem modificar arquivos, com:
|
|
33
|
-
|
|
34
|
-
1. **Diagnóstico breve:** estado atual, causa/limitação e oportunidade identificada, citando arquivos e trechos relevantes.
|
|
35
|
-
2. **Decisões e escopo:** o que será feito, o que não será feito e as premissas adotadas.
|
|
36
|
-
3. **Plano passo a passo:** cada passo deve indicar arquivos prováveis, alteração concreta, justificativa, impacto em API/compatibilidade e dependências entre etapas.
|
|
37
|
-
4. **Direção visual e UX:** alterações propostas para hierarquia, espaçamento, tipografia, cor, elevação, responsividade e todos os estados aplicáveis; diferencie correções objetivas de sugestões opcionais.
|
|
38
|
-
5. **Acessibilidade e qualidade:** verificações de foco, teclado, ARIA, contraste, movimento reduzido e possíveis riscos.
|
|
39
|
-
6. **Testes e validação:** comandos e cenários específicos (unitário, build, lint, visual, a11y, contraste, documentação), proporcionais ao impacto.
|
|
40
|
-
7. **Documentação pós-implementação:** liste exatamente quais documentos devem ser corrigidos ou ampliados depois de implementar o plano — incluindo a página do componente, exemplos/mockups, tokens, guias, matriz de acessibilidade, changelog ou migração somente quando necessário — e descreva o conteúdo a atualizar. A implementação não estará concluída enquanto documentação, exemplos e testes afetados não refletirem o comportamento final.
|
|
41
|
-
8. **Riscos, alternativas e sugestões futuras:** riscos de regressão, trade-offs, alternativas descartadas e possíveis evoluções que devem ficar fora deste plano.
|
|
42
|
-
9. **Critérios de aceite:** resultados objetivos e verificáveis para considerar o trabalho concluído.
|
|
43
|
-
|
|
44
|
-
Se o pedido contiver uma implementação nova, primeiro avalie se ela pode ser composta com recursos existentes e se é coerente com a direção de consolidação do projeto. Sinalize explicitamente qualquer necessidade de discussão prévia por contradizer uma decisão documentada ou por representar uma mudança breaking.
|
|
45
|
-
```
|