@abrasileirado/dsgovbr-bootstraped 0.6.0 → 0.7.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abrasileirado/dsgovbr-bootstraped",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Camada de compatibilidade visual não oficial entre o Bootstrap 5 e o Design System GOV.BR (DSGovBR)",
5
5
  "license": "MIT",
6
6
  "author": "Kelson da Costa Medeiros",
@@ -176,3 +176,135 @@ $card-cap-bg: transparent !default;
176
176
  // definir suas variáveis (mesmo motivo do $btn-border-radius acima). 1rem é
177
177
  // o próprio valor padrão de $spacer no Bootstrap.
178
178
  $card-cap-padding-y: 1rem !default; // GOV.BR DS usa o spacer inteiro (16px), não a metade
179
+
180
+ // --- Issue #43: componentes do catálogo (referências em src/scss/components/) ---
181
+
182
+ // Foco: o anel translúcido (box-shadow) do Bootstrap sai destes componentes;
183
+ // o contorno tracejado dourado vem de components/_focus.scss.
184
+ $accordion-button-focus-box-shadow: none !default;
185
+ $nav-link-focus-box-shadow: none !default;
186
+ $btn-close-focus-shadow: none !default;
187
+ $navbar-toggler-focus-width: 0 !default;
188
+
189
+ // Accordion (GOV.BR DS: Accordion) — cabeçalho sem fundo, texto e ícone no
190
+ // azul interativo, divisores cinza entre os itens, sem raio.
191
+ $accordion-border-color: $govbr-gray-20 !default;
192
+ $accordion-border-radius: 0 !default;
193
+ $accordion-inner-border-radius: 0 !default;
194
+ $accordion-button-padding-y: 16px !default; // spacing-scale-2x
195
+ $accordion-button-padding-x: 12px !default; // margem do ícone: spacing-scale-baseh
196
+ $accordion-button-color: $govbr-interactive !default;
197
+ $accordion-button-bg: transparent !default;
198
+ $accordion-button-active-color: $govbr-interactive !default;
199
+ $accordion-button-active-bg: transparent !default;
200
+ $accordion-icon-color: $govbr-interactive !default;
201
+ $accordion-icon-active-color: $govbr-interactive !default;
202
+
203
+ // Breadcrumb (GOV.BR DS: Breadcrumb) — fonte menor, peso médio, chevron cinza.
204
+ $breadcrumb-font-size: $govbr-font-size-down-01 !default;
205
+ $breadcrumb-divider: quote("\203A") !default;
206
+ $breadcrumb-divider-color: $govbr-gray-40 !default;
207
+ $breadcrumb-active-color: $govbr-gray-80 !default;
208
+ $breadcrumb-item-padding-x: 8px !default; // spacing-scale-base
209
+
210
+ // Botão de fechar (GOV.BR DS: Button circular, ícone interativo, 40px).
211
+ $btn-close-width: 16px !default;
212
+ $btn-close-height: 16px !default;
213
+ $btn-close-padding-x: 12px !default; // 16 + 2 x 12 = 40px
214
+ $btn-close-padding-y: 12px !default;
215
+ $btn-close-color: $govbr-interactive !default;
216
+ $btn-close-opacity: 1 !default;
217
+ $btn-close-hover-opacity: 1 !default;
218
+ $btn-close-disabled-opacity: 0.45 !default; // --disabled do GOV.BR DS
219
+
220
+ // List group (GOV.BR DS: List/Item) — itens sem moldura, divisores, selecionado.
221
+ $list-group-border-color: $govbr-gray-20 !default;
222
+ $list-group-border-radius: 0 !default;
223
+ $list-group-item-padding-y: 8px !default; // --item-padding-y
224
+ $list-group-item-padding-x: 16px !default; // --item-padding-x
225
+ $list-group-active-bg: $govbr-selected !default;
226
+ $list-group-active-border-color: $govbr-selected !default;
227
+ $list-group-hover-bg: transparent !default;
228
+ $list-group-action-color: $govbr-gray-80 !default;
229
+ $list-group-action-hover-color: $govbr-gray-80 !default;
230
+ $list-group-action-active-bg: transparent !default;
231
+
232
+ // Dropdown (GOV.BR DS: dropdown + List) — sem borda, sombra, itens de 8px.
233
+ $dropdown-border-width: 0 !default;
234
+ $dropdown-border-radius: 0 !default;
235
+ $dropdown-box-shadow: $govbr-shadow-sm !default;
236
+ $dropdown-padding-y: 0 !default;
237
+ $dropdown-item-padding-y: 8px !default;
238
+ $dropdown-item-padding-x: 16px !default;
239
+ $dropdown-link-color: $govbr-gray-80 !default;
240
+ $dropdown-link-hover-bg: transparent !default;
241
+ $dropdown-link-active-bg: $govbr-selected !default;
242
+ $dropdown-divider-bg: $govbr-gray-20 !default;
243
+ $dropdown-divider-margin-y: 0 !default;
244
+
245
+ // Tooltip (GOV.BR DS: Tooltip) — fundo azul informativo, texto branco.
246
+ $tooltip-bg: $govbr-info !default;
247
+ $tooltip-color: $govbr-background !default;
248
+ $tooltip-border-radius: $govbr-radius-sm !default;
249
+ $tooltip-font-size: $govbr-font-size-down-01 !default;
250
+ $tooltip-padding-y: 16px !default; // spacing-scale-2x
251
+ $tooltip-padding-x: 16px !default;
252
+ $tooltip-max-width: $govbr-tooltip-max-width !default;
253
+ $tooltip-opacity: 1 !default;
254
+
255
+ // Popover (GOV.BR DS: Tooltip com conteúdo rico, até 320px).
256
+ $popover-bg: $govbr-info !default;
257
+ $popover-border-width: 0 !default;
258
+ $popover-border-radius: $govbr-radius-sm !default;
259
+ $popover-box-shadow: $govbr-tooltip-shadow !default;
260
+ $popover-max-width: 320px !default;
261
+ $popover-header-bg: $govbr-info !default;
262
+ $popover-header-color: $govbr-background !default;
263
+ $popover-header-padding-y: 16px !default;
264
+ $popover-header-padding-x: 16px !default;
265
+ $popover-body-color: $govbr-background !default;
266
+ $popover-body-padding-y: 16px !default;
267
+ $popover-body-padding-x: 16px !default;
268
+
269
+ // Spinner (GOV.BR DS: Loading indeterminado) — 44px/4px e 24px/2px.
270
+ $spinner-width: $govbr-loading-md !default;
271
+ $spinner-height: $govbr-loading-md !default;
272
+ $spinner-border-width: 4px !default;
273
+ $spinner-width-sm: $govbr-loading-sm !default;
274
+ $spinner-height-sm: $govbr-loading-sm !default;
275
+ $spinner-border-width-sm: 2px !default;
276
+
277
+ // Progress (sem equivalente linear) — trilho cinza do Loading determinado.
278
+ $progress-bg: $govbr-gray-20 !default;
279
+ $progress-border-radius: 0 !default;
280
+
281
+ // Toast (GOV.BR DS: Message toast) — opaco, sem borda, com sombra.
282
+ $toast-background-color: $govbr-background !default;
283
+ $toast-border-width: 0 !default;
284
+ $toast-border-radius: 0 !default;
285
+ $toast-box-shadow: $govbr-shadow-sm !default;
286
+ $toast-header-background-color: $govbr-background !default;
287
+ $toast-header-color: $govbr-gray-80 !default;
288
+ $toast-header-border-color: $govbr-gray-20 !default;
289
+
290
+ // Modal e offcanvas (GOV.BR DS: Modal + Scrim).
291
+ $modal-md: $govbr-modal-width !default;
292
+ $modal-content-border-width: 0 !default;
293
+ $modal-content-border-radius: 0 !default;
294
+ $modal-content-box-shadow-xs: $govbr-shadow-sm !default;
295
+ $modal-content-box-shadow-sm-up: $govbr-shadow-sm !default;
296
+ $modal-header-border-width: 0 !default;
297
+ $modal-footer-border-width: 0 !default;
298
+ $modal-header-padding: 16px 16px 0 !default;
299
+ $modal-inner-padding: 16px !default;
300
+ $modal-backdrop-bg: #000 !default;
301
+ $modal-backdrop-opacity: $govbr-scrim-opacity !default;
302
+ $modal-title-line-height: 1.25 !default;
303
+ $offcanvas-border-width: 0 !default;
304
+ $offcanvas-box-shadow: $govbr-shadow-sm !default;
305
+
306
+ // Carousel (GOV.BR DS: Carousel) — indicadores em ponto.
307
+ $carousel-indicator-width: 8px !default;
308
+ $carousel-indicator-height: 8px !default;
309
+ $carousel-indicator-spacer: 4px !default;
310
+ $carousel-indicator-opacity: 0.45 !default;
@@ -0,0 +1,18 @@
1
+ // Mixins de estado do GOV.BR DS reaproveitados pelos adaptadores.
2
+
3
+ // Hover: camada da cor interativa a 16% sobre o fundo
4
+ // (vendor/govbr-ds-core/src/partial/scss/mixins/_hover.scss).
5
+ @mixin govbr-hover($color: $govbr-interactive) {
6
+ background-image: linear-gradient(rgba($color, $govbr-hover-opacity), rgba($color, $govbr-hover-opacity));
7
+ }
8
+
9
+ // Foco por teclado: contorno tracejado dourado
10
+ // (vendor/govbr-ds-core/src/partial/scss/mixins/_focus.scss). Elementos que
11
+ // ocupam a largura toda (itens de lista, abas, cabeçalho do accordion) usam
12
+ // deslocamento negativo, como a Tab do GOV.BR DS, para o contorno não invadir
13
+ // o vizinho.
14
+ @mixin govbr-focus($offset: $govbr-focus-offset) {
15
+ outline: $govbr-focus-width dashed $govbr-focus;
16
+ outline-offset: $offset;
17
+ box-shadow: none;
18
+ }
@@ -105,3 +105,31 @@ $govbr-button-height-small: 32px !default; // --button-small
105
105
  $govbr-button-height-medium: 40px !default; // --button-medium (padrão)
106
106
  $govbr-button-height-large: 48px !default; // --button-large
107
107
  $govbr-button-padding-x: 24px !default; // padding: 0 var(--spacing-scale-3x)
108
+
109
+ // --- Issue #43: componentes do catálogo ---
110
+
111
+ // --selected: var(--blue-warm-vivid-50) — item selecionado (List/Item, dropdown)
112
+ // vendor/govbr-ds-core/.../configs/colors/_blue-warm-vivid.scss
113
+ $govbr-selected: #2670e8 !default;
114
+
115
+ // Escala tipográfica: vendor/govbr-ds-core/src/partial/scss/configs/_typography.scss
116
+ // ($font-size-scale-base * 0.833 / 1.2 / 1.44, com a base de 14px)
117
+ $govbr-font-size-down-01: 11.662px !default;
118
+ $govbr-font-size-up-01: 16.8px !default;
119
+ $govbr-font-size-up-02: 20.16px !default;
120
+ $govbr-font-weight-bold: 700 !default; // $font-weight-bold
121
+
122
+ // Scrim (fundo de modal e menu): $overlay-scrim = secondary-09 (#000) a
123
+ // $opacity-md — vendor/govbr-ds-core/src/partial/scss/configs/_elevation.scss
124
+ $govbr-scrim-opacity: 0.45 !default;
125
+
126
+ // Tooltip: vendor/govbr-ds-core/src/components/tooltip/_mixins.scss (tooltip-configs)
127
+ $govbr-tooltip-shadow: 0 3px 6px rgba(0, 0, 0, 0.16) !default;
128
+ $govbr-tooltip-max-width: 240px !default;
129
+
130
+ // Loading indeterminado: vendor/govbr-ds-core/src/components/loading/_mixins.scss
131
+ $govbr-loading-sm: 24px !default; // --loading-indetermined-diameter-sm (borda 2px)
132
+ $govbr-loading-md: 44px !default; // --loading-indetermined-diameter-md (borda 4px)
133
+
134
+ // Modal: vendor/govbr-ds-core/src/components/modal/_mixins.scss (--modal-medium)
135
+ $govbr-modal-width: 500px !default;
@@ -0,0 +1,33 @@
1
+ // Accordion do GOV.BR DS (vendor/govbr-ds-core/src/components/accordion/_accordion.scss):
2
+ // só divisores horizontais, cabeçalho sem fundo em azul interativo e 16,8px,
3
+ // ícone à esquerda do título, item aberto em semi-bold, hover em camada azul.
4
+ .accordion-item {
5
+ border-left: 0;
6
+ border-right: 0;
7
+ }
8
+
9
+ .accordion-button {
10
+ font-size: $govbr-font-size-up-01;
11
+
12
+ // a seta do Bootstrap é um ::after; order: -1 a leva para antes do texto
13
+ &::after {
14
+ order: -1;
15
+ margin-left: 0;
16
+ margin-right: 16px; // spacing-scale-2x
17
+ }
18
+
19
+ &:not(.collapsed) {
20
+ font-weight: $govbr-font-weight-semibold;
21
+ box-shadow: none;
22
+ }
23
+
24
+ &:hover {
25
+ @include govbr-hover;
26
+ }
27
+ }
28
+
29
+ .accordion-body {
30
+ // .content: margem de spacing-scale-base e padding 8px 64px 16px
31
+ padding: 8px 64px 16px;
32
+ margin: 0 8px;
33
+ }
@@ -0,0 +1,18 @@
1
+ // Breadcrumb do GOV.BR DS (vendor/govbr-ds-core/src/components/breadcrumb/_mixins.scss):
2
+ // peso médio, chevron como divisor e ícone de casa no primeiro nível. O ícone
3
+ // é uma máscara SVG (sem fonte de ícones), na cor do link.
4
+ .breadcrumb {
5
+ font-weight: $govbr-font-weight-medium;
6
+ align-items: center;
7
+ }
8
+
9
+ .breadcrumb-item:first-child > a::before {
10
+ content: "";
11
+ display: inline-block;
12
+ width: 1em;
13
+ height: 1em;
14
+ margin-right: 4px;
15
+ vertical-align: -0.125em;
16
+ background-color: currentcolor;
17
+ mask: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22%3E%3Cpath d=%22M8 1.5 1 7.25V8h1.5v6.5h4.25V10h2.5v4.5h4.25V8H15v-.75z%22/%3E%3C/svg%3E") center / contain no-repeat;
18
+ }
@@ -0,0 +1,16 @@
1
+ // Carousel do GOV.BR DS: indicadores em ponto e controles em círculo de 40px
2
+ // sobre fundo escurecido (Scrim), para ficarem visíveis sobre qualquer imagem.
3
+ .carousel-indicators [data-bs-target] {
4
+ border-radius: 50%;
5
+ border-top: 0;
6
+ border-bottom: 0;
7
+ }
8
+
9
+ .carousel-control-prev-icon,
10
+ .carousel-control-next-icon {
11
+ width: 40px;
12
+ height: 40px;
13
+ border-radius: 50%;
14
+ background-color: rgba(0, 0, 0, $govbr-scrim-opacity);
15
+ background-size: 16px;
16
+ }
@@ -0,0 +1,9 @@
1
+ // Botão de fechar como o Button circular do GOV.BR DS: 40px (16px de ícone +
2
+ // 12px de padding), ícone azul interativo, hover em camada azul.
3
+ .btn-close {
4
+ border-radius: 50%;
5
+
6
+ &:hover:not(:disabled) {
7
+ background-color: rgba($govbr-interactive, $govbr-hover-opacity);
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ // Dropdown como a List do GOV.BR DS: sombra suave sem borda, itens de 8px x
2
+ // 16px, hover em camada azul, selecionado em --selected.
3
+ .dropdown-menu {
4
+ box-shadow: $govbr-shadow-sm;
5
+ }
6
+
7
+ .dropdown-item:hover:not(.active):not(.disabled):not(:disabled) {
8
+ @include govbr-hover;
9
+ }
@@ -0,0 +1,23 @@
1
+ // Foco tracejado dourado do GOV.BR DS em todos os componentes focáveis que
2
+ // não têm adaptador próprio (botão, campos e paginação já tratam o foco).
3
+ // Mesma especificidade das regras :focus do Bootstrap, declaradas depois,
4
+ // então estas vencem sem !important.
5
+ a:focus-visible,
6
+ .btn-close:focus-visible,
7
+ .navbar-toggler:focus-visible,
8
+ .navbar-brand:focus-visible,
9
+ .carousel-control-prev:focus-visible,
10
+ .carousel-control-next:focus-visible,
11
+ .carousel-indicators [data-bs-target]:focus-visible,
12
+ [tabindex]:not(.form-control):not(.form-select):not(.form-check-input):focus-visible {
13
+ @include govbr-focus;
14
+ }
15
+
16
+ .accordion-button:focus-visible,
17
+ .nav-link:focus-visible,
18
+ .list-group-item-action:focus-visible,
19
+ .dropdown-item:focus-visible {
20
+ @include govbr-focus(-$govbr-focus-width);
21
+ position: relative;
22
+ z-index: 3;
23
+ }
@@ -0,0 +1,15 @@
1
+ // List/Item do GOV.BR DS (vendor/govbr-ds-core/src/components/item, list):
2
+ // itens sem moldura lateral, separados por divisor, texto padrão, hover em
3
+ // camada azul e item selecionado em --selected.
4
+ .list-group:not(.list-group-horizontal) > .list-group-item {
5
+ border-left: 0;
6
+ border-right: 0;
7
+ }
8
+
9
+ .list-group-item-action {
10
+ color: $govbr-gray-80;
11
+
12
+ &:hover:not(.active):not(:disabled):not(.disabled) {
13
+ @include govbr-hover;
14
+ }
15
+ }
@@ -0,0 +1,24 @@
1
+ // Modal e offcanvas do GOV.BR DS (vendor/govbr-ds-core/src/components/modal):
2
+ // sem raio nem borda, sombra suave, título de 16,8px em negrito, ações
3
+ // alinhadas à direita sem divisor, fundo escurecido como o Scrim (preto a 45%).
4
+ .modal-title,
5
+ .offcanvas-title {
6
+ font-size: $govbr-font-size-up-01 !important; // vence utilitários .fs-* no título
7
+ font-weight: $govbr-font-weight-bold;
8
+ }
9
+
10
+ .modal-header + .modal-body {
11
+ padding-top: 8px;
12
+ }
13
+
14
+ .modal-footer {
15
+ gap: 16px;
16
+
17
+ > * {
18
+ margin: 0;
19
+ }
20
+ }
21
+
22
+ .offcanvas {
23
+ box-shadow: $govbr-shadow-sm;
24
+ }
@@ -0,0 +1,46 @@
1
+ // Tab do GOV.BR DS (vendor/govbr-ds-core/src/components/tab/_mixins.scss):
2
+ // sem moldura, linha de 1px sob a lista, aba de 20,16px em peso médio com
3
+ // sublinhado de 4px; a ativa fica em --active. Vale para .nav-tabs e .nav-underline.
4
+ .nav-tabs,
5
+ .nav-underline {
6
+ --bs-nav-tabs-border-radius: 0;
7
+ --bs-nav-underline-gap: 0;
8
+ border-bottom: 1px solid $govbr-gray-20;
9
+ gap: 0;
10
+
11
+ .nav-link {
12
+ border: 0;
13
+ border-bottom: 4px solid transparent;
14
+ border-radius: 0;
15
+ margin-bottom: -1px;
16
+ padding: 16px 24px; // --tab-medium / --tab-padding
17
+ color: $govbr-gray-80;
18
+ font-size: $govbr-font-size-up-02;
19
+ font-weight: $govbr-font-weight-medium;
20
+ line-height: 1;
21
+ background-color: transparent;
22
+
23
+ &:hover:not(.active):not(:disabled):not(.disabled) {
24
+ @include govbr-hover($govbr-gray-80);
25
+ border-bottom-color: transparent;
26
+ }
27
+
28
+ &.disabled,
29
+ &:disabled {
30
+ color: $govbr-gray-40;
31
+ }
32
+ }
33
+
34
+ .nav-link.active,
35
+ .nav-item.show .nav-link {
36
+ color: $govbr-active;
37
+ background-color: transparent;
38
+ border-bottom-color: $govbr-active;
39
+ font-weight: $govbr-font-weight-medium;
40
+ }
41
+ }
42
+
43
+ // Pílulas não existem no GOV.BR DS (extensão): hover em camada azul.
44
+ .nav-pills .nav-link:hover:not(.active) {
45
+ @include govbr-hover;
46
+ }
@@ -0,0 +1,12 @@
1
+ // Loading indeterminado do GOV.BR DS: arco azul interativo (44px/4px e
2
+ // 24px/2px, ver _bootstrap-settings.scss). Dentro de botões o spinner segue a
3
+ // cor do texto do botão, como no Bootstrap.
4
+ .spinner-border,
5
+ .spinner-grow {
6
+ color: $govbr-interactive;
7
+ }
8
+
9
+ .btn .spinner-border,
10
+ .btn .spinner-grow {
11
+ color: inherit;
12
+ }
@@ -0,0 +1,5 @@
1
+ // Toast como a Message do GOV.BR DS: superfície opaca com sombra (variáveis
2
+ // em _bootstrap-settings.scss) e título do cabeçalho em semi-bold.
3
+ .toast-header strong {
4
+ font-weight: $govbr-font-weight-semibold;
5
+ }
@@ -0,0 +1,16 @@
1
+ // Tooltip e popover do GOV.BR DS (vendor/govbr-ds-core/src/components/tooltip):
2
+ // fundo azul informativo, texto branco em peso médio, raio 4px e sombra.
3
+ .tooltip-inner {
4
+ font-weight: $govbr-font-weight-medium;
5
+ box-shadow: $govbr-tooltip-shadow;
6
+ text-align: left;
7
+ }
8
+
9
+ .popover-header {
10
+ font-weight: $govbr-font-weight-semibold;
11
+ padding-bottom: 0;
12
+ }
13
+
14
+ .popover-body {
15
+ font-weight: $govbr-font-weight-medium;
16
+ }
@@ -16,9 +16,23 @@
16
16
 
17
17
  // Ajustes que as variáveis de tema, sozinhas, não resolvem — um adaptador
18
18
  // por componente (ver docs/desenvolvimento.md).
19
+ @import "mixins";
20
+
19
21
  @import "components/alert";
20
22
  @import "components/badge";
21
23
  @import "components/pagination";
22
24
  @import "components/button";
23
25
  @import "components/card";
24
26
  @import "components/form";
27
+ @import "components/focus";
28
+ @import "components/accordion";
29
+ @import "components/breadcrumb";
30
+ @import "components/close";
31
+ @import "components/list-group";
32
+ @import "components/nav";
33
+ @import "components/dropdown";
34
+ @import "components/tooltip";
35
+ @import "components/spinner";
36
+ @import "components/toast";
37
+ @import "components/modal";
38
+ @import "components/carousel";