fokus-styles 2.4.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/dist/css/components.css +561 -83
- package/dist/css/components.min.css +1 -1
- package/dist/css/fokus-components.css +561 -83
- package/dist/css/fokus-components.min.css +1 -1
- package/dist/css/fokus-rtl.css +697 -83
- package/dist/css/fokus-rtl.min.css +1 -1
- package/dist/css/fokus-utilities.css +136 -0
- package/dist/css/fokus-utilities.min.css +1 -1
- package/dist/css/fokus.css +996 -258
- package/dist/css/fokus.min.css +1 -1
- package/dist/css/forms.css +300 -176
- package/dist/css/forms.min.css +1 -1
- package/dist/css/helpers.css +136 -0
- package/dist/css/helpers.min.css +1 -1
- package/dist/js/fokus.js +270 -25
- package/dist/js/fokus.min.js +18 -18
- package/package.json +17 -15
- package/packages/fokus-components/scss/components/_alerts.scss +128 -6
- package/packages/fokus-components/scss/components/_badges.scss +26 -10
- package/packages/fokus-components/scss/components/_index.scss +1 -0
- package/packages/fokus-components/scss/components/_popover.scss +131 -21
- package/packages/fokus-components/scss/components/_responsive.scss +23 -0
- package/packages/fokus-components/scss/components/_tag.scss +37 -14
- package/packages/fokus-components/scss/components/_toasts.scss +156 -11
- package/packages/fokus-components/scss/components/_tooltips.scss +70 -18
- package/packages/fokus-components/scss/forms/_check-radio-switch.scss +313 -215
- package/packages/fokus-components/scss/forms/_forms.scss +16 -0
- package/packages/fokus-js/js/carousel.d.ts +4 -0
- package/packages/fokus-js/js/carousel.js +8 -0
- package/packages/fokus-js/js/core/positioning.js +18 -9
- package/packages/fokus-js/js/dropdown.d.ts +4 -0
- package/packages/fokus-js/js/dropdown.js +7 -0
- package/packages/fokus-js/js/popover.js +26 -1
- package/packages/fokus-js/js/tabs.d.ts +3 -0
- package/packages/fokus-js/js/tabs.js +5 -0
- package/packages/fokus-js/js/tag.js +17 -0
- package/packages/fokus-js/js/toast.js +77 -3
- package/packages/fokus-js/js/tooltip.d.ts +8 -1
- package/packages/fokus-js/js/tooltip.js +106 -13
- package/packages/fokus-utilities/scss/utilities/_api.scss +48 -0
- package/CHANGELOG.md +0 -910
- 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 -59
- package/docs/components/avatar.md +0 -13
- package/docs/components/badge.md +0 -82
- 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 -97
- 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 -105
- package/docs/components/progress.md +0 -126
- package/docs/components/radio.md +0 -70
- package/docs/components/range.md +0 -83
- package/docs/components/rating.md +0 -91
- package/docs/components/ratio.md +0 -13
- 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 -75
- package/docs/components/table.md +0 -90
- package/docs/components/tabs.md +0 -104
- package/docs/components/tag.md +0 -129
- package/docs/components/tile.md +0 -112
- package/docs/components/timeline.md +0 -78
- package/docs/components/toast.md +0 -95
- package/docs/components/tooltip.md +0 -77
- 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 -102
- 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 -50
- package/docs/reference/definitions.md +0 -864
- package/docs/reference/design-tokens.md +0 -194
- 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 -8
- 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 -41
- package/mockup/examples/badges-alerts.html +0 -77
- 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 -144
- 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/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 -105
- package/mockup/examples/theming.html +0 -68
- package/mockup/examples/tile.html +0 -107
- package/mockup/examples/timeline.html +0 -108
- 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,194 +0,0 @@
|
|
|
1
|
-
# Design tokens
|
|
2
|
-
|
|
3
|
-
Referência completa dos tokens do Fokus Styles. Escolha primeiro o token pelo
|
|
4
|
-
papel que ele desempenha; consulte [Theming](../guides/theming.md) para
|
|
5
|
-
customizá-lo em runtime ou via Sass.
|
|
6
|
-
|
|
7
|
-
## Cor — primitivo → semântico → componente
|
|
8
|
-
|
|
9
|
-
### Semânticos (uso geral)
|
|
10
|
-
|
|
11
|
-
| Token | Papel |
|
|
12
|
-
|---|---|
|
|
13
|
-
| `--fs-color-text` | Texto principal |
|
|
14
|
-
| `--fs-color-muted` | Texto secundário/discreto |
|
|
15
|
-
| `--fs-color-border` | Bordas padrão |
|
|
16
|
-
| `--fs-color-surface` | Fundo de superfície (card, modal, input) |
|
|
17
|
-
| `--fs-color-subtle` | Fundo levemente destacado (hover, header de card) |
|
|
18
|
-
| `--fs-color-white` / `--fs-color-black` | Acromáticos, sem variação por tema |
|
|
19
|
-
|
|
20
|
-
### Aliases por papel (`packages/fokus-core/scss/tokens/_semantic.scss`)
|
|
21
|
-
|
|
22
|
-
Mesmos valores dos acima, com nome por função — use estes quando o nome
|
|
23
|
-
comunica melhor a intenção no seu código:
|
|
24
|
-
|
|
25
|
-
| Token | Alias de |
|
|
26
|
-
|---|---|
|
|
27
|
-
| `--fs-color-bg-surface` | `--fs-color-surface` |
|
|
28
|
-
| `--fs-color-bg-subtle` | `--fs-color-subtle` |
|
|
29
|
-
| `--fs-color-surface-raised` | `--fs-color-surface` |
|
|
30
|
-
| `--fs-color-text-primary` | `--fs-color-text` |
|
|
31
|
-
| `--fs-color-text-muted` | `--fs-color-muted` |
|
|
32
|
-
| `--fs-color-border-default` | `--fs-color-border` |
|
|
33
|
-
| `--fs-color-action-primary` | `--fs-color-primary` |
|
|
34
|
-
| `--fs-color-action-danger` | `--fs-color-danger` |
|
|
35
|
-
|
|
36
|
-
### Gráficos (`packages/fokus-core/scss/tokens/_charts.scss`)
|
|
37
|
-
|
|
38
|
-
Agnósticos de biblioteca — ver [guia de gráficos](../guides/charts.md).
|
|
39
|
-
|
|
40
|
-
| Token | Alias de |
|
|
41
|
-
|---|---|
|
|
42
|
-
| `--fs-chart-series-1` | `--fs-color-primary` |
|
|
43
|
-
| `--fs-chart-series-2` | `--fs-color-success` |
|
|
44
|
-
| `--fs-chart-series-3` | `--fs-color-warning` |
|
|
45
|
-
| `--fs-chart-series-4` | `--fs-color-danger` |
|
|
46
|
-
| `--fs-chart-series-5` | `--fs-color-info` |
|
|
47
|
-
| `--fs-chart-series-6` | `--fs-color-secondary` |
|
|
48
|
-
| `--fs-chart-grid` | `--fs-color-border` |
|
|
49
|
-
| `--fs-chart-axis` | `--fs-color-muted` |
|
|
50
|
-
| `--fs-chart-tooltip-bg` | `--fs-tooltip-bg` |
|
|
51
|
-
| `--fs-chart-tooltip-text` | `--fs-tooltip-text` |
|
|
52
|
-
|
|
53
|
-
### Cores de tema
|
|
54
|
-
|
|
55
|
-
Seis papéis, cada um com 3 tokens derivados automaticamente do primitivo
|
|
56
|
-
(tint/shade em OKLCH):
|
|
57
|
-
|
|
58
|
-
`primary`, `secondary`, `success`, `warning`, `danger`, `info`
|
|
59
|
-
|
|
60
|
-
| Padrão de token | Exemplo (`primary`) | Uso |
|
|
61
|
-
|---|---|---|
|
|
62
|
-
| `--fs-color-{nome}` | `--fs-color-primary` | Cor sólida (fundo de botão, borda ativa) |
|
|
63
|
-
| `--fs-alert-{nome}-bg` | `--fs-alert-primary-bg` | Fundo tintado (alerta) |
|
|
64
|
-
| `--fs-alert-{nome}-text` | `--fs-alert-primary-text` | Texto sobre o fundo tintado |
|
|
65
|
-
| `--fs-feedback-{nome}-bg` | `--fs-feedback-primary-bg` | Fundo tintado mais sutil (badge suave, notificação) |
|
|
66
|
-
|
|
67
|
-
### Componente
|
|
68
|
-
|
|
69
|
-
Componentes expõem tokens próprios quando precisam de uma API de customização
|
|
70
|
-
local. Eles têm fallback para um token semântico e podem ser alterados sem
|
|
71
|
-
`!important`:
|
|
72
|
-
|
|
73
|
-
```css
|
|
74
|
-
.meu-botao-especial {
|
|
75
|
-
--fs-btn-bg: var(--fs-color-action-primary);
|
|
76
|
-
}
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
Consulte a página do componente para a lista completa. Por exemplo,
|
|
80
|
-
`.fs-btn` documenta `--fs-btn-bg`, `--fs-btn-color` e
|
|
81
|
-
`--fs-btn-border-color`. Prefira nomes de intenção, como
|
|
82
|
-
`--fs-color-action-primary`, em vez de nomes baseados no valor da cor.
|
|
83
|
-
|
|
84
|
-
O Carousel expõe tokens locais para que controles, indicadores, transições e
|
|
85
|
-
legendas possam ser ajustados por instância: `--fs-carousel-radius`,
|
|
86
|
-
`--fs-carousel-transition-duration`, `--fs-carousel-transition-easing`,
|
|
87
|
-
`--fs-carousel-control-*`, `--fs-carousel-indicator-*` e
|
|
88
|
-
`--fs-carousel-caption-scrim`. Consulte a [página do Carousel](../components/carousel.md)
|
|
89
|
-
para os nomes completos e seus fallbacks.
|
|
90
|
-
|
|
91
|
-
## Tipografia
|
|
92
|
-
|
|
93
|
-
| Token | Valor | Uso |
|
|
94
|
-
|---|---|---|
|
|
95
|
-
| `--fs-font-sans` | Plus Jakarta Sans, sans-serif | Corpo, UI |
|
|
96
|
-
| `--fs-font-mono` | Source Code Pro, monospace | Código |
|
|
97
|
-
| `--fs-font-size-md` | 0.8125rem (13px) | Corpo — único tamanho de texto exposto como token; `xs`/`sm`/`lg`/`xl` são variáveis Sass (`$font-size-*`), não CSS Custom Properties, por serem só usadas em geração de classe |
|
|
98
|
-
| `--fs-font-size-h1`…`h6` | 1.75rem → 0.875rem | Headings |
|
|
99
|
-
| `--fs-font-weight-semibold` | 600 | Peso dos headings |
|
|
100
|
-
| `--fs-line-height-base` | 1.5 | Corpo |
|
|
101
|
-
| `--fs-line-height-heading` | 1.25 | Headings |
|
|
102
|
-
|
|
103
|
-
## Formato
|
|
104
|
-
|
|
105
|
-
| Token | Valor |
|
|
106
|
-
|---|---|
|
|
107
|
-
| `--fs-radius-sm` | 4px |
|
|
108
|
-
| `--fs-radius-md` | 6px |
|
|
109
|
-
| `--fs-radius-lg` | 8px |
|
|
110
|
-
|
|
111
|
-
Circular só é usado em dois lugares deliberadamente (radio, spinner) — o
|
|
112
|
-
resto do framework é quadrado/arredondado por decisão de design, não por
|
|
113
|
-
limitação técnica.
|
|
114
|
-
|
|
115
|
-
## Espaçamento, elevação e controles
|
|
116
|
-
|
|
117
|
-
Os valores mais usados também ficam disponíveis em runtime para que
|
|
118
|
-
componentes e extensões mantenham a mesma escala visual:
|
|
119
|
-
|
|
120
|
-
| Token | Papel |
|
|
121
|
-
|---|---|
|
|
122
|
-
| `--fs-space-0` … `--fs-space-5` | Escala de espaçamento baseada em `$spacers` |
|
|
123
|
-
| `--fs-z-dropdown` … `--fs-z-tooltip` | Camadas padronizadas para overlays |
|
|
124
|
-
| `--fs-control-height` / `--fs-control-height-sm` / `--fs-control-height-lg` | Alturas dos controles de formulário |
|
|
125
|
-
| `--fs-control-padding-x` / `--fs-control-padding-x-sm` / `--fs-control-padding-x-lg` | Padding horizontal dos controles |
|
|
126
|
-
| `--fs-border-width` | Espessura padrão de bordas |
|
|
127
|
-
| `--fs-disabled-opacity` | Opacidade visual de controles desabilitados |
|
|
128
|
-
| `--fs-color-on-primary` … `--fs-color-on-info` | Cor de conteúdo sobre cada cor de tema |
|
|
129
|
-
|
|
130
|
-
## Interação e movimento
|
|
131
|
-
|
|
132
|
-
| Token | Papel |
|
|
133
|
-
|---|---|
|
|
134
|
-
| `--fs-color-focus` | Cor semântica do foco de teclado |
|
|
135
|
-
| `--fs-focus-width` / `--fs-focus-offset` | Geometria do anel de foco |
|
|
136
|
-
| `--fs-focus-ring-alpha` | Intensidade do halo de foco |
|
|
137
|
-
| `--fs-transition-fast` / `--fs-transition-normal` | Durações de transição |
|
|
138
|
-
| `--fs-ease-standard` | Curva de movimento padrão |
|
|
139
|
-
|
|
140
|
-
O framework respeita `prefers-reduced-motion: reduce`, reduzindo transições e
|
|
141
|
-
animações CSS ao mínimo sem remover estados ou interações.
|
|
142
|
-
|
|
143
|
-
Use `--fs-color-on-{nome}` em texto e ícones sobre fundos de tema. Isso
|
|
144
|
-
permite que uma marca altere o contraste sem duplicar regras de componente.
|
|
145
|
-
|
|
146
|
-
## Sombra
|
|
147
|
-
|
|
148
|
-
| Token |
|
|
149
|
-
|---|
|
|
150
|
-
| `--fs-shadow-sm` |
|
|
151
|
-
| `--fs-shadow-md` |
|
|
152
|
-
| `--fs-shadow-lg` |
|
|
153
|
-
|
|
154
|
-
## Grid
|
|
155
|
-
|
|
156
|
-
| Token | Valor |
|
|
157
|
-
|---|
|
|
158
|
-
| `--fs-gutter-x` | 1.5rem |
|
|
159
|
-
| `--fs-gutter-y` | 0px |
|
|
160
|
-
|
|
161
|
-
Controlados em runtime pelas classes `.fs-u-g-*`/`.fs-u-gx-*`/`.fs-u-gy-*` — ver
|
|
162
|
-
[`docs/reference/scss-architecture.md`](scss-architecture.md#layout).
|
|
163
|
-
|
|
164
|
-
## Layout avançado (Stack/Cluster/Sidebar/sticky/container queries)
|
|
165
|
-
|
|
166
|
-
| Token | Valor padrão |
|
|
167
|
-
|---|---|
|
|
168
|
-
| `--fs-stack-gap` | `1rem` (`.fs-stack-gap-{0..5}` sobrescreve) |
|
|
169
|
-
| `--fs-cluster-gap` | `0.5rem` (`.fs-cluster-gap-{0..5}` sobrescreve) |
|
|
170
|
-
| `--fs-sidebar-gap` | `1rem` (`.fs-sidebar-gap-{0..5}` sobrescreve) |
|
|
171
|
-
| `--fs-sidebar-width` | `16rem` (`.fs-sidebar-width-{sm..xxxl}` sobrescreve) |
|
|
172
|
-
| `--fs-sticky-top` / `--fs-sticky-bottom` | `0` |
|
|
173
|
-
| `--fs-cq-sm` / `--fs-cq-md` / `--fs-cq-lg` | `320px` / `480px` / `640px` — só informativos, ver [Layout avançado](../guides/layout-advanced.md#container-queries-container) |
|
|
174
|
-
|
|
175
|
-
Ver [Layout avançado](../guides/layout-advanced.md) para a documentação
|
|
176
|
-
completa de uso.
|
|
177
|
-
|
|
178
|
-
## Só-Sass (sem CSS Custom Property)
|
|
179
|
-
|
|
180
|
-
Não têm equivalente em token CSS porque alimentam geração de classe em
|
|
181
|
-
tempo de build (nome de classe fixo, não pode reagir a uma variável em
|
|
182
|
-
runtime):
|
|
183
|
-
|
|
184
|
-
| Variável Sass | Uso |
|
|
185
|
-
|---|---|
|
|
186
|
-
| `$spacers` | Escala de espaçamento (`.fs-u-m*`/`.fs-u-p*`/`.fs-u-g*`) |
|
|
187
|
-
| `$breakpoints` | Grid e utilitários responsivos (`.fs-u-*-{breakpoint}`) |
|
|
188
|
-
| `$container-max-widths` / `$column-max-widths` | Containers e colunas com largura máxima |
|
|
189
|
-
| `$font-size-xs`/`-sm`/`-lg`/`-xl` | Escala de tamanho de texto (utilitários `.fs-u-fs-*` e tamanhos `-sm`/`-lg` de componente) |
|
|
190
|
-
| `$font-weight-regular`/`-medium`/`-bold` | Peso de texto (`.fs-u-fw-*`) |
|
|
191
|
-
| `$theme-colors` / `$theme-bg-colors` | Mapas usados pelos `@each` que geram as variantes de cor de cada componente |
|
|
192
|
-
|
|
193
|
-
Customizáveis só via `@use ... with (...)` na compilação — ver
|
|
194
|
-
[Theming](../guides/theming.md#customizando-via-sass).
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
# Arquitetura SCSS do Fokus Styles
|
|
2
|
-
|
|
3
|
-
## Objetivo
|
|
4
|
-
|
|
5
|
-
A arquitetura SCSS do Fokus Styles organiza o framework em módulos pequenos, previsíveis e alinhados a uma abordagem híbrida: componentes prontos, utilitários reutilizáveis e tokens customizáveis por CSS Custom Properties.
|
|
6
|
-
|
|
7
|
-
O repositório é um monorepo (npm workspaces). O código-fonte SCSS vive em
|
|
8
|
-
`packages/*/scss/`; `scss/` (raiz do repo) contém apenas os pontos de entrada
|
|
9
|
-
de build (`scss/fokus.scss` e `scss/entries/`), que combinam os pacotes.
|
|
10
|
-
|
|
11
|
-
`scss/fokus.scss` é o ponto de entrada oficial do bundle completo:
|
|
12
|
-
|
|
13
|
-
```text
|
|
14
|
-
scss/fokus.scss
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## Estrutura
|
|
18
|
-
|
|
19
|
-
```text
|
|
20
|
-
packages/
|
|
21
|
-
├── fokus-core/scss/
|
|
22
|
-
│ ├── settings/
|
|
23
|
-
│ ├── tools/
|
|
24
|
-
│ ├── tokens/
|
|
25
|
-
│ ├── base/
|
|
26
|
-
│ ├── layout/
|
|
27
|
-
│ └── themes/
|
|
28
|
-
├── fokus-components/scss/
|
|
29
|
-
│ ├── components/
|
|
30
|
-
│ └── forms/
|
|
31
|
-
├── fokus-utilities/scss/
|
|
32
|
-
│ └── utilities/
|
|
33
|
-
├── fokus-fonts/scss/
|
|
34
|
-
└── fokus-js/js/
|
|
35
|
-
scss/
|
|
36
|
-
├── fokus.scss # bundle completo (dist/css/fokus.css)
|
|
37
|
-
└── entries/ # pontos de entrada auxiliares por distribuição
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
Cada pacote expõe seu próprio `scss/` como raiz de resolução (`scssLoadPaths`
|
|
41
|
-
em `scripts/build.mjs`), então `@use "settings"`/`@use "tokens"`/etc. resolve
|
|
42
|
-
sem caminhos relativos `../../` entre pacotes.
|
|
43
|
-
|
|
44
|
-
## Cascade layers (`@layer`)
|
|
45
|
-
|
|
46
|
-
Todo CSS emitido pelo framework é organizado em cascade layers, na ordem
|
|
47
|
-
declarada uma única vez em `packages/fokus-core/scss/tokens/_root.scss`:
|
|
48
|
-
|
|
49
|
-
```scss
|
|
50
|
-
@layer reset, tokens, base, layout, components, utilities, overrides;
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
- **reset** — normalização mínima (`base/_reset.scss`).
|
|
54
|
-
- **tokens** — CSS Custom Properties em `:root` e overrides de tema
|
|
55
|
-
(`tokens/_root.scss`, `themes/_dark.scss`).
|
|
56
|
-
- **base** — estilos globais de elementos (`base/_typography.scss`).
|
|
57
|
-
- **layout** — grid/containers (`layout/`).
|
|
58
|
-
- **components** — todo componente pronto, incluindo `forms/`.
|
|
59
|
-
- **utilities** — classes utilitárias (`.fs-u-*`).
|
|
60
|
-
- **overrides** — reservada, sem regras do próprio framework; existe para que
|
|
61
|
-
consumidores possam sobrescrever qualquer camada anterior sem precisar de
|
|
62
|
-
`!important` ou seletores mais específicos.
|
|
63
|
-
|
|
64
|
-
Cada parcial que gera CSS envolve seu próprio conteúdo na camada
|
|
65
|
-
correspondente (ex.: `_buttons.scss` inteiro dentro de `@layer components { }`).
|
|
66
|
-
Parciais que só declaram variáveis/mixins Sass (`settings/`, `tools/`) **não**
|
|
67
|
-
são envolvidos em `@layer` — eles não emitem CSS.
|
|
68
|
-
|
|
69
|
-
Como a ordem de precedência vem da ordem das camadas (não da ordem de
|
|
70
|
-
`@use` no arquivo), um componente sempre perde para uma utility (`.fs-u-*`)
|
|
71
|
-
mesmo que o componente seja `@use`'d depois — é o comportamento desejado.
|
|
72
|
-
|
|
73
|
-
## Camadas de conteúdo
|
|
74
|
-
|
|
75
|
-
### settings
|
|
76
|
-
|
|
77
|
-
Define valores Sass usados em tempo de compilação: breakpoints, larguras de
|
|
78
|
-
containers, escala de espaçamento, cores primitivas, tipografia, raios de
|
|
79
|
-
borda. Esses arquivos não geram CSS diretamente e não entram em `@layer`.
|
|
80
|
-
|
|
81
|
-
### tools
|
|
82
|
-
|
|
83
|
-
Define mixins e funções Sass reutilizáveis (`media-breakpoint-up`,
|
|
84
|
-
`focus-ring`, `truncate`, `color-contrast`, etc.). Também não geram CSS.
|
|
85
|
-
|
|
86
|
-
### tokens
|
|
87
|
-
|
|
88
|
-
Gera CSS Custom Properties públicas em `:root` (camada `tokens`), permitindo
|
|
89
|
-
customização em CSS sem recompilar o framework. Nomes seguem o prefixo
|
|
90
|
-
`--fs-*`, em 3 camadas:
|
|
91
|
-
|
|
92
|
-
1. **Primitivo** (`settings/_colors.scss`, `settings/_spacing.scss`, etc.) —
|
|
93
|
-
valores Sass em tempo de compilação (`$color-blue-500`, `$radius-md`), não
|
|
94
|
-
emitidos diretamente como CSS.
|
|
95
|
-
2. **Semântico** (`tokens/_root.scss` para as cores/raio/sombra "cruas" —
|
|
96
|
-
`--fs-color-primary`, `--fs-radius-md` — e `tokens/_semantic.scss` para
|
|
97
|
-
aliases nomeados por papel — `--fs-color-bg-surface`,
|
|
98
|
-
`--fs-color-text-primary`, `--fs-color-border-default`). Todo token
|
|
99
|
-
semântico é um `var()` de um token primitivo; nunca redeclara um valor.
|
|
100
|
-
3. **Componente** (`--fs-btn-bg`, `--fs-btn-color`, `--fs-btn-border-color`
|
|
101
|
-
em `_buttons.scss`) — cada componente declara suas próprias custom
|
|
102
|
-
properties, com fallback para um token semântico/primitivo, e usa só essas
|
|
103
|
-
nas propriedades CSS reais. Isso permite sobrescrever a aparência de uma
|
|
104
|
-
instância específica (`.minha-classe { --fs-btn-bg: ...; }`) sem
|
|
105
|
-
`!important`. `_buttons.scss` é a referência do padrão — componentes mais
|
|
106
|
-
antigos ainda consomem tokens semânticos/primitivos diretamente e devem
|
|
107
|
-
migrar para o próprio padrão à medida que forem alterados.
|
|
108
|
-
|
|
109
|
-
Primitivos de cor são gerados em OKLCH (`color.to-space(#hex, oklch)` a
|
|
110
|
-
partir do hex histórico — ver comentário em `settings/_colors.scss`), com
|
|
111
|
-
fallback sRGB automático: cada token de cor é declarado duas vezes em
|
|
112
|
-
`tokens/_root.scss`/`themes/_dark.scss` — incondicionalmente com
|
|
113
|
-
`rgb-fallback()` (gamut-mapeado), depois de novo dentro de
|
|
114
|
-
`@supports (color: oklch(0% 0 0))` com o valor OKLCH nativo. Navegadores sem
|
|
115
|
-
suporte a `oklch()` ignoram o bloco `@supports` inteiro e ficam só com o
|
|
116
|
-
fallback. `tint-color()`/`shade-color()`/`color.mix()` usados para derivar
|
|
117
|
-
tons (`--fs-alert-*-bg`, tema escuro) misturam com `$method: oklch` — rode
|
|
118
|
-
`npm run contrast` (ver `docs/reference/contrast-report.md`) depois de mudar
|
|
119
|
-
qualquer peso de mistura.
|
|
120
|
-
|
|
121
|
-
### base
|
|
122
|
-
|
|
123
|
-
Estilos globais mínimos de elementos (`body`, tipografia base). Camada
|
|
124
|
-
`base` — deve permanecer pequena para evitar efeitos colaterais.
|
|
125
|
-
|
|
126
|
-
### layout
|
|
127
|
-
|
|
128
|
-
Base estrutural do framework: containers, rows, colunas, grid baseado em
|
|
129
|
-
Flexbox. Camada `layout`.
|
|
130
|
-
|
|
131
|
-
O gutter do grid (`.fs-row`/`.fs-col-*`) é implementado via padding + margin
|
|
132
|
-
negativo controlados pelas CSS Custom Properties `--fs-gutter-x`/`--fs-gutter-y`
|
|
133
|
-
(não via `gap` do flexbox), porque `gap` não é descontado da largura em
|
|
134
|
-
porcentagem das colunas numeradas (`.fs-col-6`, `.fs-col-md-4`), o que causaria
|
|
135
|
-
estouro de linha. As classes `.fs-u-g-*`/`.fs-u-gx-*`/`.fs-u-gy-*` (em `utilities/_spacing.scss`)
|
|
136
|
-
controlam essas variáveis e só têm efeito dentro de uma `.fs-row`. Para `gap`
|
|
137
|
-
literal em qualquer container flex/grid fora do sistema de colunas, use
|
|
138
|
-
`.fs-u-gap-*`/`.fs-u-gap-x-*`/`.fs-u-gap-y-*`.
|
|
139
|
-
|
|
140
|
-
### forms
|
|
141
|
-
|
|
142
|
-
Agrupa estilos de formulários (linhas/colunas, labels, textos auxiliares,
|
|
143
|
-
inputs, tamanhos de campo, estados de foco/desabilitado/leitura). Empacotado
|
|
144
|
-
com `fokus-components`, camada `components`.
|
|
145
|
-
|
|
146
|
-
### components
|
|
147
|
-
|
|
148
|
-
Agrupa componentes prontos — um parcial `_nome.scss` por componente em
|
|
149
|
-
`packages/fokus-components/scss/components/`, registrado em `_index.scss`.
|
|
150
|
-
Camada `components`. Lista completa: ver o diretório do pacote (a lista muda
|
|
151
|
-
com frequência conforme novos componentes entram).
|
|
152
|
-
|
|
153
|
-
### utilities
|
|
154
|
-
|
|
155
|
-
Classes utilitárias reutilizáveis (`.fs-u-*`): display, flex, spacing,
|
|
156
|
-
shadow, typography, visibility. Camada `utilities` — sempre a última camada
|
|
157
|
-
com regras do próprio framework, garantindo que uma utility sempre vença um
|
|
158
|
-
componente. Utilitários devem ser previsíveis, pequenos e combináveis.
|
|
159
|
-
|
|
160
|
-
### themes
|
|
161
|
-
|
|
162
|
-
Variações globais de tema. O primeiro tema obrigatório é o dark mode via:
|
|
163
|
-
|
|
164
|
-
```html
|
|
165
|
-
<html data-theme="dark">
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
Camada `tokens` (só redefine `--fs-*`; não define novas regras de layout).
|
|
169
|
-
|
|
170
|
-
## Convenções
|
|
171
|
-
|
|
172
|
-
- Usar arquivos parciais com prefixo `_`.
|
|
173
|
-
- Usar `@use` e `@forward`, evitando `@import` para módulos internos.
|
|
174
|
-
- `@use`/`@forward` sempre no topo do arquivo, antes de qualquer `@layer`.
|
|
175
|
-
- Manter `scss/fokus.scss` como único ponto de entrada público para o bundle completo.
|
|
176
|
-
- Classes de componente: `.fs-*`; utilitários: `.fs-u-*`; estados controlados por
|
|
177
|
-
JS: `.is-*`; tokens CSS: `--fs-*`; atributos de auto-init: `data-fs`/
|
|
178
|
-
`data-fs-target`/`data-fs-dismiss`; eventos DOM customizados: `fs:*`.
|
|
179
|
-
- Evitar estilos globais agressivos.
|
|
180
|
-
- Preferir CSS Custom Properties para valores que usuários podem sobrescrever.
|
|
181
|
-
- Centralizar valores de interação em tokens (`--fs-focus-*`, `--fs-transition-*`
|
|
182
|
-
e `--fs-ease-*`) em vez de repetir durações ou anéis de foco.
|
|
183
|
-
- Todo componente interativo deve declarar foco visível, estado desabilitado e
|
|
184
|
-
comportamento compatível com `prefers-reduced-motion`.
|
|
185
|
-
- Controles e superfícies devem declarar um `background-color` explícito por
|
|
186
|
-
meio de token semântico; `transparent` fica reservado a trilhas, backdrops
|
|
187
|
-
ou variantes cuja transparência faça parte da API visual.
|
|
188
|
-
- Preferir variáveis Sass para valores usados em geração de classes.
|
|
189
|
-
|
|
190
|
-
## Pipeline de Build
|
|
191
|
-
|
|
192
|
-
O build (`npm run build`, `scripts/build.mjs`) compila SCSS para CSS via Dart
|
|
193
|
-
Sass, aplica PostCSS com Autoprefixer (alvo em `.browserslistrc` — ver
|
|
194
|
-
`docs/reference/browser-support.md`) e gera versões minificadas com source
|
|
195
|
-
maps em `dist/css/`.
|
|
196
|
-
|
|
197
|
-
Para preservar a distribuição em arquivos separados (`layout.css`, `forms.css`,
|
|
198
|
-
`components.css`, `helpers.css`), existem pontos de entrada auxiliares em
|
|
199
|
-
`scss/entries/`, cada um combinando `tokens` + `base` + `themes` com o módulo
|
|
200
|
-
correspondente, garantindo que qualquer um dos arquivos possa ser usado de
|
|
201
|
-
forma isolada (com variáveis, reset e dark mode funcionando). Esses arquivos
|
|
202
|
-
são exclusivos do processo de build e não substituem `scss/fokus.scss` como
|
|
203
|
-
entrada pública para quem deseja o bundle completo.
|
|
204
|
-
|
|
205
|
-
`scss/fokus.scss` também é compilado diretamente para `dist/css/fokus.css`
|
|
206
|
-
(+ `.min.css`), como opção de import único para quem não precisa da distribuição
|
|
207
|
-
granular. É esse bundle que o campo `style` do `package.json` aponta por padrão.
|
|
208
|
-
|
|
209
|
-
Os nomes em `scss/entries/` usam o sufixo `-entry` (ex: `layout-entry.scss`)
|
|
210
|
-
para evitar colisão com os módulos de mesmo nome (`@use "layout"` dentro de
|
|
211
|
-
`scss/layout.scss` causaria um loop de importação).
|
|
212
|
-
|
|
213
|
-
Cada entry independente declara a ordem de `@layer` no início do seu CSS
|
|
214
|
-
compilado (herdada de `tokens/_root.scss`, sempre o primeiro `@use`), então
|
|
215
|
-
qualquer arquivo de `dist/css/` funciona isolado, com a cascata correta,
|
|
216
|
-
mesmo carregado sozinho numa página.
|
|
217
|
-
|
|
218
|
-
## Regra de Evolução
|
|
219
|
-
|
|
220
|
-
Novos componentes devem seguir este fluxo:
|
|
221
|
-
|
|
222
|
-
1. Criar `packages/fokus-components/scss/components/_nome-do-componente.scss`,
|
|
223
|
-
com o conteúdo CSS envolvido em `@layer components { }` (`@use` fica fora,
|
|
224
|
-
antes da camada).
|
|
225
|
-
2. Adicionar o arquivo em `packages/fokus-components/scss/components/_index.scss`.
|
|
226
|
-
3. Documentar a API de classes em Markdown.
|
|
227
|
-
4. Adicionar exemplo em `mockup/` quando fizer sentido.
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"measuredAt": "2026-09-07T22:48:41.361Z",
|
|
3
|
-
"unit": "bytes",
|
|
4
|
-
"files": {
|
|
5
|
-
"css/layout.min.css": {
|
|
6
|
-
"bytes": 28993,
|
|
7
|
-
"gzipBytes": 6049
|
|
8
|
-
},
|
|
9
|
-
"css/forms.min.css": {
|
|
10
|
-
"bytes": 34200,
|
|
11
|
-
"gzipBytes": 7084
|
|
12
|
-
},
|
|
13
|
-
"css/components.min.css": {
|
|
14
|
-
"bytes": 93358,
|
|
15
|
-
"gzipBytes": 16287
|
|
16
|
-
},
|
|
17
|
-
"css/helpers.min.css": {
|
|
18
|
-
"bytes": 61486,
|
|
19
|
-
"gzipBytes": 10713
|
|
20
|
-
},
|
|
21
|
-
"css/fonts.min.css": {
|
|
22
|
-
"bytes": 1505,
|
|
23
|
-
"gzipBytes": 409
|
|
24
|
-
},
|
|
25
|
-
"css/fokus.min.css": {
|
|
26
|
-
"bytes": 164830,
|
|
27
|
-
"gzipBytes": 25978
|
|
28
|
-
},
|
|
29
|
-
"js/fokus.min.js": {
|
|
30
|
-
"bytes": 107627,
|
|
31
|
-
"gzipBytes": 23063
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
# Estabilidade e roadmap
|
|
2
|
-
|
|
3
|
-
Este documento define como o Fokus Styles evolui. A existência de um componente
|
|
4
|
-
no repositório não significa que ele tenha o mesmo nível de maturidade do
|
|
5
|
-
núcleo.
|
|
6
|
-
|
|
7
|
-
## Direção estratégica
|
|
8
|
-
|
|
9
|
-
O Fokus Styles está em fase de consolidação. A prioridade é tornar o núcleo CSS
|
|
10
|
-
pequeno, previsível, acessível e fácil de adotar. Novos componentes só devem
|
|
11
|
-
entrar no núcleo quando houver uso real, API documentada, testes funcionais,
|
|
12
|
-
regressão visual e validação de acessibilidade.
|
|
13
|
-
|
|
14
|
-
O objetivo não é competir pela maior quantidade de componentes, mas oferecer
|
|
15
|
-
uma base confiável para páginas institucionais, sistemas administrativos e
|
|
16
|
-
aplicações web construídas com HTML, CSS e JavaScript nativo.
|
|
17
|
-
|
|
18
|
-
## Níveis de estabilidade
|
|
19
|
-
|
|
20
|
-
### Núcleo essencial
|
|
21
|
-
|
|
22
|
-
É o caminho recomendado para novos projetos e recebe prioridade de manutenção:
|
|
23
|
-
|
|
24
|
-
- tokens, reset, temas e dark mode;
|
|
25
|
-
- containers, grid e utilitários básicos;
|
|
26
|
-
- tipografia, espaçamento e estados visuais;
|
|
27
|
-
- botões, cards, alertas, badges e tabelas;
|
|
28
|
-
- inputs, select, checkbox, radio e switch;
|
|
29
|
-
- navbar, dropdown, tabs, accordion, modal, toast, paginação e breadcrumbs.
|
|
30
|
-
|
|
31
|
-
Mudanças nesses recursos exigem revisão de compatibilidade, documentação de
|
|
32
|
-
migração quando necessário e cobertura de testes correspondente.
|
|
33
|
-
|
|
34
|
-
### Extensões de interface
|
|
35
|
-
|
|
36
|
-
São componentes prontos e úteis, mas não bloqueiam o uso do núcleo:
|
|
37
|
-
|
|
38
|
-
- Stack, Cluster, Sidebar e recursos avançados de layout;
|
|
39
|
-
- Collapse, Offcanvas, Tooltip, Popover e Alert Dialog;
|
|
40
|
-
- Stepper, Input Group, Empty State, Skeleton, Spinner e Progress;
|
|
41
|
-
- Tag, Rating, Segmented Control, Timeline e upload básico.
|
|
42
|
-
|
|
43
|
-
### Componentes avançados
|
|
44
|
-
|
|
45
|
-
Atendem casos específicos e permanecem sob observação de uso e manutenção:
|
|
46
|
-
|
|
47
|
-
- Combobox e Datepicker;
|
|
48
|
-
- DataTable;
|
|
49
|
-
- Tree View e Command Palette;
|
|
50
|
-
- Carousel;
|
|
51
|
-
- Upload avançado e integrações de gráficos.
|
|
52
|
-
|
|
53
|
-
Esses recursos não devem ser usados como argumento para aumentar o escopo do
|
|
54
|
-
núcleo sem evidência de necessidade recorrente.
|
|
55
|
-
|
|
56
|
-
### Ecossistema opcional
|
|
57
|
-
|
|
58
|
-
`fokus-styles/icons`, `fokus-styles/cli` e `fokus-styles/react` são subpaths
|
|
59
|
-
opcionais do mesmo pacote. Eles devem
|
|
60
|
-
seguir documentação, versionamento e testes próprios, sem tornar o pacote
|
|
61
|
-
principal dependente de React, Sass, CLI ou bibliotecas de ícones.
|
|
62
|
-
|
|
63
|
-
## Roadmap de consolidação
|
|
64
|
-
|
|
65
|
-
1. Corrigir e uniformizar a documentação pública e os exemplos.
|
|
66
|
-
2. Garantir que cada componente essencial tenha API, estados, acessibilidade,
|
|
67
|
-
tokens e exemplo mínimo documentados.
|
|
68
|
-
3. Validar o núcleo em Chromium, Firefox e WebKit, além de testes manuais de
|
|
69
|
-
teclado e leitores de tela.
|
|
70
|
-
4. Criar documentação visual com busca, exemplos executáveis e templates de
|
|
71
|
-
sistemas reais.
|
|
72
|
-
5. Medir adoção e bugs antes de promover componentes avançados ao núcleo.
|
|
73
|
-
|
|
74
|
-
## Critério para promover um componente
|
|
75
|
-
|
|
76
|
-
Um componente avançado só deve ser promovido quando cumprir todos estes
|
|
77
|
-
critérios:
|
|
78
|
-
|
|
79
|
-
- necessidade recorrente em projetos reais;
|
|
80
|
-
- API pública estável e consistente com `data-fs`, `fs:*` e `window.FokusStyles`;
|
|
81
|
-
- documentação de anatomia, estados, tokens e teclado;
|
|
82
|
-
- testes unitários, visuais e de acessibilidade;
|
|
83
|
-
- comportamento verificado nos navegadores definidos pelo projeto;
|
|
84
|
-
- impacto de bundle conhecido e registrado.
|
|
85
|
-
|
|
86
|
-
## Regra para novas funcionalidades
|
|
87
|
-
|
|
88
|
-
Antes de criar um novo componente, prefira compor recursos existentes. A
|
|
89
|
-
adição deve resolver um problema recorrente, não apenas completar um catálogo.
|
package/docs/showcase.md
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# Showcase de produção
|
|
2
|
-
|
|
3
|
-
> 🚧 **Em construção.** Esta página é um placeholder estrutural — ainda não
|
|
4
|
-
> há casos de uso reais de terceiros usando o Fokus Styles em produção pra
|
|
5
|
-
> citar aqui. Preencher com dados fictícios ou métricas inventadas seria
|
|
6
|
-
> pior do que deixar isso em aberto.
|
|
7
|
-
|
|
8
|
-
## O que vai entrar aqui
|
|
9
|
-
|
|
10
|
-
Quando houver projetos reais usando o FokusStyles, cada entrada segue este
|
|
11
|
-
formato:
|
|
12
|
-
|
|
13
|
-
- **Nome do projeto/empresa** (com link, se público).
|
|
14
|
-
- **Contexto**: que tipo de produto, desde quando usa o FokusStyles.
|
|
15
|
-
- **Por que escolheram o FokusStyles**: motivação (bundle size, zero
|
|
16
|
-
dependências, dark mode nativo, etc.).
|
|
17
|
-
- **Métricas**, quando o time autorizar compartilhar (tamanho de bundle
|
|
18
|
-
antes/depois de uma migração, tempo de desenvolvimento, etc.) — nunca
|
|
19
|
-
números estimados ou genéricos.
|
|
20
|
-
|
|
21
|
-
## Quer aparecer aqui?
|
|
22
|
-
|
|
23
|
-
Se você usa o Fokus Styles em produção e topa ser citado, abra uma
|
|
24
|
-
[issue](https://github.com/jorgewreis/fokus-styles/issues) com o rótulo
|
|
25
|
-
`showcase` — conte um pouco do seu caso de uso.
|
package/mockup/README.md
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# Laboratórios de componentes
|
|
2
|
-
|
|
3
|
-
Os mockups são documentação viva: cada seção combina uma definição em
|
|
4
|
-
português, contrato de acessibilidade, configurações suportadas, preview
|
|
5
|
-
funcional e o HTML extraído do exemplo que está sendo executado. O markup não
|
|
6
|
-
é mantido em duplicidade: o painel de código é sincronizado com o iframe de
|
|
7
|
-
demonstração.
|
|
8
|
-
|
|
9
|
-
| Laboratório | Componentes e fundamentos |
|
|
10
|
-
|---|---|
|
|
11
|
-
| [Fundamentos](foundations.html) | Layout, temas, ícones, divider e APIs JS compartilhadas. |
|
|
12
|
-
| [Ações e feedback](feedback-actions.html) | Button, badge, alert, tag, empty state, skeleton, spinner e progress. |
|
|
13
|
-
| [Formulários](forms.html) | Input, select, input group, escolhas, range, segmented, rating, data/hora, combobox e upload. |
|
|
14
|
-
| [Navegação](navigation-disclosure.html) | Navbar, breadcrumb, pagination, accordion, tabs, collapse, stepper, nested menu e tree view. |
|
|
15
|
-
| [Overlays](overlays-commands.html) | Dropdown, tooltip, hover card, popover, offcanvas, modal, alert dialog, command palette, toast e notification center. |
|
|
16
|
-
| [Conteúdo e dados](content-data.html) | Card, tile, carousel, timeline, charts, table e DataTable. |
|
|
17
|
-
|
|
18
|
-
## Leitura recomendada
|
|
19
|
-
|
|
20
|
-
1. Abra o laboratório da família de componentes.
|
|
21
|
-
2. Navegue pela âncora do componente e leia o contrato antes de copiar o
|
|
22
|
-
código.
|
|
23
|
-
3. Interaja com o preview e use **Copiar código** para obter o markup que o
|
|
24
|
-
compõe.
|
|
25
|
-
4. Consulte a página equivalente em [`docs/components/`](../docs/components/)
|
|
26
|
-
para a referência completa da API pública.
|
|
27
|
-
|
|
28
|
-
## Integração e templates
|
|
29
|
-
|
|
30
|
-
- [`kitchen-sink.html`](kitchen-sink.html) continua como smoke test compacto:
|
|
31
|
-
ele confere a convivência dos componentes, não substitui estes laboratórios.
|
|
32
|
-
- [`templates/`](templates/README.md) contém páginas completas de produto e
|
|
33
|
-
aponta para os laboratórios sempre que um componente precisar de consulta
|
|
34
|
-
detalhada.
|
|
35
|
-
|
|
36
|
-
## Fontes executáveis
|
|
37
|
-
|
|
38
|
-
Os arquivos em `examples/` preservam a demonstração funcional de origem dos
|
|
39
|
-
laboratórios. Eles não fazem parte da navegação editorial nem da descoberta
|
|
40
|
-
automática de screenshots; existem para que cada seção tenha uma fonte de
|
|
41
|
-
markup única e verificável.
|
|
Binary file
|
|
Binary file
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
// Os exemplos são carregados em iframes pelos laboratórios. O tema vem da
|
|
2
|
-
// página-pai via query string, para que uma única ação altere toda a página.
|
|
3
|
-
const exampleTheme = new URLSearchParams(window.location.search).get("theme");
|
|
4
|
-
|
|
5
|
-
if (exampleTheme === "dark") {
|
|
6
|
-
document.documentElement.setAttribute("data-fs-theme", "dark");
|
|
7
|
-
document.documentElement.setAttribute("data-theme", "dark");
|
|
8
|
-
} else {
|
|
9
|
-
document.documentElement.setAttribute("data-fs-theme", "light");
|
|
10
|
-
document.documentElement.removeAttribute("data-theme");
|
|
11
|
-
}
|