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.
Files changed (212) hide show
  1. package/dist/css/components.css +561 -83
  2. package/dist/css/components.min.css +1 -1
  3. package/dist/css/fokus-components.css +561 -83
  4. package/dist/css/fokus-components.min.css +1 -1
  5. package/dist/css/fokus-rtl.css +697 -83
  6. package/dist/css/fokus-rtl.min.css +1 -1
  7. package/dist/css/fokus-utilities.css +136 -0
  8. package/dist/css/fokus-utilities.min.css +1 -1
  9. package/dist/css/fokus.css +996 -258
  10. package/dist/css/fokus.min.css +1 -1
  11. package/dist/css/forms.css +300 -176
  12. package/dist/css/forms.min.css +1 -1
  13. package/dist/css/helpers.css +136 -0
  14. package/dist/css/helpers.min.css +1 -1
  15. package/dist/js/fokus.js +270 -25
  16. package/dist/js/fokus.min.js +18 -18
  17. package/package.json +17 -15
  18. package/packages/fokus-components/scss/components/_alerts.scss +128 -6
  19. package/packages/fokus-components/scss/components/_badges.scss +26 -10
  20. package/packages/fokus-components/scss/components/_index.scss +1 -0
  21. package/packages/fokus-components/scss/components/_popover.scss +131 -21
  22. package/packages/fokus-components/scss/components/_responsive.scss +23 -0
  23. package/packages/fokus-components/scss/components/_tag.scss +37 -14
  24. package/packages/fokus-components/scss/components/_toasts.scss +156 -11
  25. package/packages/fokus-components/scss/components/_tooltips.scss +70 -18
  26. package/packages/fokus-components/scss/forms/_check-radio-switch.scss +313 -215
  27. package/packages/fokus-components/scss/forms/_forms.scss +16 -0
  28. package/packages/fokus-js/js/carousel.d.ts +4 -0
  29. package/packages/fokus-js/js/carousel.js +8 -0
  30. package/packages/fokus-js/js/core/positioning.js +18 -9
  31. package/packages/fokus-js/js/dropdown.d.ts +4 -0
  32. package/packages/fokus-js/js/dropdown.js +7 -0
  33. package/packages/fokus-js/js/popover.js +26 -1
  34. package/packages/fokus-js/js/tabs.d.ts +3 -0
  35. package/packages/fokus-js/js/tabs.js +5 -0
  36. package/packages/fokus-js/js/tag.js +17 -0
  37. package/packages/fokus-js/js/toast.js +77 -3
  38. package/packages/fokus-js/js/tooltip.d.ts +8 -1
  39. package/packages/fokus-js/js/tooltip.js +106 -13
  40. package/packages/fokus-utilities/scss/utilities/_api.scss +48 -0
  41. package/CHANGELOG.md +0 -910
  42. package/dist/css/components.css.map +0 -1
  43. package/dist/css/components.min.css.map +0 -1
  44. package/dist/css/fokus-components.css.map +0 -1
  45. package/dist/css/fokus-components.min.css.map +0 -1
  46. package/dist/css/fokus-core.css.map +0 -1
  47. package/dist/css/fokus-core.min.css.map +0 -1
  48. package/dist/css/fokus-dark.css.map +0 -1
  49. package/dist/css/fokus-dark.min.css.map +0 -1
  50. package/dist/css/fokus-rtl.css.map +0 -1
  51. package/dist/css/fokus-rtl.min.css.map +0 -1
  52. package/dist/css/fokus-utilities.css.map +0 -1
  53. package/dist/css/fokus-utilities.min.css.map +0 -1
  54. package/dist/css/fokus.css.map +0 -1
  55. package/dist/css/fokus.min.css.map +0 -1
  56. package/dist/css/fonts.css.map +0 -1
  57. package/dist/css/fonts.min.css.map +0 -1
  58. package/dist/css/forms.css.map +0 -1
  59. package/dist/css/forms.min.css.map +0 -1
  60. package/dist/css/helpers.css.map +0 -1
  61. package/dist/css/helpers.min.css.map +0 -1
  62. package/dist/css/layout.css.map +0 -1
  63. package/dist/css/layout.min.css.map +0 -1
  64. package/dist/js/fokus.js.map +0 -7
  65. package/dist/js/fokus.min.js.map +0 -7
  66. package/docs/README.md +0 -86
  67. package/docs/comparison.md +0 -124
  68. package/docs/components/accordion.md +0 -104
  69. package/docs/components/alert-dialog.md +0 -99
  70. package/docs/components/alert.md +0 -59
  71. package/docs/components/avatar.md +0 -13
  72. package/docs/components/badge.md +0 -82
  73. package/docs/components/breadcrumb.md +0 -93
  74. package/docs/components/button-group.md +0 -13
  75. package/docs/components/button.md +0 -98
  76. package/docs/components/card.md +0 -111
  77. package/docs/components/carousel.md +0 -167
  78. package/docs/components/checkbox.md +0 -97
  79. package/docs/components/close-button.md +0 -13
  80. package/docs/components/code.md +0 -13
  81. package/docs/components/collapse.md +0 -78
  82. package/docs/components/combobox.md +0 -123
  83. package/docs/components/command-palette.md +0 -131
  84. package/docs/components/datatable.md +0 -173
  85. package/docs/components/datepicker.md +0 -137
  86. package/docs/components/divider.md +0 -57
  87. package/docs/components/dropdown.md +0 -103
  88. package/docs/components/empty-state.md +0 -65
  89. package/docs/components/file-upload-advanced.md +0 -116
  90. package/docs/components/file-upload.md +0 -93
  91. package/docs/components/icon-link.md +0 -13
  92. package/docs/components/input-group.md +0 -73
  93. package/docs/components/input.md +0 -90
  94. package/docs/components/list-group.md +0 -13
  95. package/docs/components/modal.md +0 -120
  96. package/docs/components/navbar.md +0 -74
  97. package/docs/components/nested-menu.md +0 -90
  98. package/docs/components/notification-center.md +0 -116
  99. package/docs/components/offcanvas.md +0 -102
  100. package/docs/components/pagination.md +0 -145
  101. package/docs/components/placeholder.md +0 -13
  102. package/docs/components/popover.md +0 -105
  103. package/docs/components/progress.md +0 -126
  104. package/docs/components/radio.md +0 -70
  105. package/docs/components/range.md +0 -83
  106. package/docs/components/rating.md +0 -91
  107. package/docs/components/ratio.md +0 -13
  108. package/docs/components/scrollspy.md +0 -13
  109. package/docs/components/segmented-control.md +0 -82
  110. package/docs/components/select.md +0 -89
  111. package/docs/components/skeleton.md +0 -70
  112. package/docs/components/stepper.md +0 -107
  113. package/docs/components/switch.md +0 -75
  114. package/docs/components/table.md +0 -90
  115. package/docs/components/tabs.md +0 -104
  116. package/docs/components/tag.md +0 -129
  117. package/docs/components/tile.md +0 -112
  118. package/docs/components/timeline.md +0 -78
  119. package/docs/components/toast.md +0 -95
  120. package/docs/components/tooltip.md +0 -77
  121. package/docs/components/tree-view.md +0 -118
  122. package/docs/contributing/contributing.md +0 -18
  123. package/docs/getting-started/installation.md +0 -70
  124. package/docs/getting-started/usage.md +0 -105
  125. package/docs/guides/accessibility.md +0 -102
  126. package/docs/guides/charts.md +0 -73
  127. package/docs/guides/dark-mode.md +0 -90
  128. package/docs/guides/icons.md +0 -99
  129. package/docs/guides/javascript-api.md +0 -9
  130. package/docs/guides/layout-advanced.md +0 -118
  131. package/docs/guides/migration-clarus-to-fokus.md +0 -48
  132. package/docs/guides/migration-external.md +0 -123
  133. package/docs/guides/migration-v1.md +0 -63
  134. package/docs/guides/print.md +0 -30
  135. package/docs/guides/rtl-and-system-preferences.md +0 -28
  136. package/docs/guides/theming.md +0 -140
  137. package/docs/guides/utility-api.md +0 -9
  138. package/docs/prompts/prompt-plan.md +0 -45
  139. package/docs/reference/accessibility-matrix.md +0 -77
  140. package/docs/reference/browser-support.md +0 -75
  141. package/docs/reference/contrast-report.md +0 -50
  142. package/docs/reference/definitions.md +0 -864
  143. package/docs/reference/design-tokens.md +0 -194
  144. package/docs/reference/scss-architecture.md +0 -227
  145. package/docs/reference/size-baseline.json +0 -34
  146. package/docs/reference/stability.md +0 -89
  147. package/docs/showcase.md +0 -25
  148. package/mockup/README.md +0 -41
  149. package/mockup/assets/carousel-planning.png +0 -0
  150. package/mockup/assets/carousel-workspace.png +0 -0
  151. package/mockup/assets/example-theme.css +0 -8
  152. package/mockup/assets/example-theme.js +0 -11
  153. package/mockup/assets/showcase-contracts.js +0 -84
  154. package/mockup/assets/showcase.css +0 -91
  155. package/mockup/assets/showcase.js +0 -724
  156. package/mockup/content-data.html +0 -9
  157. package/mockup/examples/accordion-tabs-toast.html +0 -149
  158. package/mockup/examples/alert-dialog.html +0 -84
  159. package/mockup/examples/alerts.html +0 -41
  160. package/mockup/examples/badges-alerts.html +0 -77
  161. package/mockup/examples/buttons.html +0 -58
  162. package/mockup/examples/cards.html +0 -132
  163. package/mockup/examples/carousel.html +0 -126
  164. package/mockup/examples/charts.html +0 -102
  165. package/mockup/examples/check-radio-switch.html +0 -144
  166. package/mockup/examples/collapse.html +0 -69
  167. package/mockup/examples/combobox.html +0 -60
  168. package/mockup/examples/command-palette.html +0 -64
  169. package/mockup/examples/datatable.html +0 -113
  170. package/mockup/examples/datepicker.html +0 -62
  171. package/mockup/examples/divider.html +0 -45
  172. package/mockup/examples/dropdown-tooltip.html +0 -77
  173. package/mockup/examples/empty-state.html +0 -56
  174. package/mockup/examples/file-drop.html +0 -74
  175. package/mockup/examples/file-upload-advanced.html +0 -68
  176. package/mockup/examples/forms-advanced.html +0 -77
  177. package/mockup/examples/hover-card.html +0 -86
  178. package/mockup/examples/icons.html +0 -157
  179. package/mockup/examples/input-group.html +0 -74
  180. package/mockup/examples/js-foundation.html +0 -215
  181. package/mockup/examples/layout.html +0 -134
  182. package/mockup/examples/modal-select.html +0 -127
  183. package/mockup/examples/nested-menu.html +0 -73
  184. package/mockup/examples/notification-center.html +0 -86
  185. package/mockup/examples/offcanvas-popover.html +0 -133
  186. package/mockup/examples/pagination-breadcrumbs.html +0 -92
  187. package/mockup/examples/range.html +0 -69
  188. package/mockup/examples/rating.html +0 -103
  189. package/mockup/examples/segmented-control.html +0 -96
  190. package/mockup/examples/skeletons.html +0 -82
  191. package/mockup/examples/spinner-progress.html +0 -130
  192. package/mockup/examples/stepper.html +0 -119
  193. package/mockup/examples/tables-navbar.html +0 -89
  194. package/mockup/examples/tag.html +0 -105
  195. package/mockup/examples/theming.html +0 -68
  196. package/mockup/examples/tile.html +0 -107
  197. package/mockup/examples/timeline.html +0 -108
  198. package/mockup/examples/tree-view.html +0 -68
  199. package/mockup/feedback-actions.html +0 -9
  200. package/mockup/forms.html +0 -13
  201. package/mockup/foundations.html +0 -7
  202. package/mockup/kitchen-sink.html +0 -696
  203. package/mockup/navigation-disclosure.html +0 -11
  204. package/mockup/overlays-commands.html +0 -12
  205. package/mockup/templates/README.md +0 -20
  206. package/mockup/templates/admin.html +0 -334
  207. package/mockup/templates/auth.html +0 -234
  208. package/mockup/templates/dashboard.html +0 -442
  209. package/mockup/templates/landing.html +0 -397
  210. package/packages/fokus-icons/package.json +0 -46
  211. package/scripts/migrate-fokus-map.json +0 -1366
  212. 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
@@ -1,8 +0,0 @@
1
- html[data-theme="dark"],
2
- html[data-fs-theme="dark"],
3
- html[data-theme="dark"] body,
4
- html[data-fs-theme="dark"] body {
5
- min-height: 100%;
6
- color: var(--fs-color-text);
7
- background-color: var(--fs-color-surface);
8
- }
@@ -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
- }