@abrasileirado/dsgovbr-bootstraped 0.8.0 → 0.10.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.8.0",
3
+ "version": "0.10.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",
@@ -349,3 +349,31 @@ $navbar-dark-brand-hover-color: $govbr-color-dark !default;
349
349
  // Divider (GOV.BR DS: Divider) — <hr> opaco em --border-color.
350
350
  $hr-color: $govbr-gray-20 !default;
351
351
  $hr-opacity: 1 !default;
352
+
353
+ // --- Issue #46: switch e select ---
354
+
355
+ // Switch (GOV.BR DS: Switch, tamanho médio): trilho de 52x30px branco com
356
+ // borda --border-color e botão de 22px a 4px da borda, cinza (--off) quando
357
+ // desligado e azul (--on) quando ligado. O trilho não muda de cor ao ligar.
358
+ // Altura, posição do botão e hover ficam em components/_form.scss.
359
+ $form-switch-width: $govbr-switch-width !default;
360
+ $form-switch-padding-start: $govbr-switch-width + 8px !default; // spacing-scale-base
361
+ $form-switch-border-radius: 100em !default;
362
+ $form-switch-transition: background-position 0.3s ease-in-out !default;
363
+ $form-switch-color: $govbr-gray-20 !default;
364
+ $form-switch-bg-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-11 -11 22 22'><circle r='11' fill='#{$form-switch-color}'/></svg>") !default;
365
+ $form-switch-focus-color: $govbr-gray-20 !default;
366
+ $form-switch-focus-bg-image: $form-switch-bg-image !default;
367
+ $form-switch-checked-color: $govbr-switch-on !default;
368
+ $form-switch-checked-bg-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-11 -11 22 22'><circle r='11' fill='#{$form-switch-checked-color}'/></svg>") !default;
369
+ $form-switch-checked-bg-position: right 3px center !default; // 4px da borda externa
370
+ $form-switch-color-dark: $govbr-gray-20 !default;
371
+ $form-switch-bg-image-dark: $form-switch-bg-image !default;
372
+
373
+ // Select (GOV.BR DS: Select = Input + botão circular pequeno com seta na cor
374
+ // interativa, 4px da borda, e 40px de respiro à direita): mesma superfície
375
+ // dos campos de texto, seta na cor interativa centrada nos 32px do botão.
376
+ $form-select-indicator-color: $govbr-interactive !default;
377
+ $form-select-indicator-color-dark: $govbr-interactive-dark !default;
378
+ $form-select-indicator-padding: 2.5rem !default; // 40px = --input-padding-button (spacing-scale-5x); rem porque o Bootstrap soma com $form-select-padding-x
379
+ $form-select-bg-position: right 12px center !default; // 4px + (32px - 16px) / 2
@@ -139,3 +139,16 @@ $govbr-color-dark: #fff !default; // --color-dark (pure-0)
139
139
  $govbr-interactive-dark: #c5d4eb !default; // --interactive-dark (blue-warm-20)
140
140
  $govbr-focus-dark: #ffbe2e !default; // --focus-color-dark (gold-vivid-20)
141
141
  $govbr-gray-2: #f8f8f8 !default; // --menu-background-submenu, fundo do sign-in e da busca
142
+
143
+ // Switch: vendor/govbr-ds-core/src/components/switch/_mixins.scss (switch-tokens,
144
+ // tamanho médio) e --on (blue-warm-vivid-40) em partial/scss/_tokens.scss.
145
+ // O desligado usa --off = gray-20 ($govbr-gray-20).
146
+ $govbr-switch-on: #5992ed !default; // --on (blue-warm-vivid-40)
147
+ $govbr-switch-width: 52px !default; // --switch-width-medium
148
+ $govbr-switch-height: 30px !default; // --switch-height-medium
149
+ $govbr-switch-toggle: 22px !default; // --switch-toggle-medium
150
+
151
+ // Sombras grandes: vendor/govbr-ds-core/src/partial/scss/configs/_elevation.scss
152
+ // ($shadow-lg e $shadow-lg-up: offset-lg / offset-lg-n, blur-lg, secondary-09 a opacity-xs).
153
+ $govbr-shadow-lg: 0 6px 6px rgba(0, 0, 0, 0.16) !default; // skiplink
154
+ $govbr-shadow-lg-up: 0 -6px 6px rgba(0, 0, 0, 0.16) !default; // cookiebar
@@ -68,3 +68,44 @@
68
68
  .btn-link.rounded-circle:hover {
69
69
  @include govbr-hover;
70
70
  }
71
+
72
+ // Sign-in do GOV.BR DS (vendor/govbr-ds-core/src/components/signin): .btn-light
73
+ // vira a pílula de fundo cinza-claro (--gray-2) com texto e ícone na cor
74
+ // interativa, 16px de respiro lateral e imagem de até 20px ("Entrar com
75
+ // gov.br"). No modo escuro, fundo --background-dark e texto --interactive-dark.
76
+ .btn-light {
77
+ --#{$prefix}btn-bg: #{$govbr-gray-2};
78
+ --#{$prefix}btn-color: #{$govbr-interactive};
79
+ --#{$prefix}btn-border-color: transparent;
80
+ --#{$prefix}btn-hover-bg: #{$govbr-gray-2};
81
+ --#{$prefix}btn-hover-color: #{$govbr-interactive};
82
+ --#{$prefix}btn-hover-border-color: transparent;
83
+ --#{$prefix}btn-active-bg: #{$govbr-gray-2};
84
+ --#{$prefix}btn-active-color: #{$govbr-active};
85
+ --#{$prefix}btn-active-border-color: transparent;
86
+ --#{$prefix}btn-padding-x: 16px;
87
+ gap: 8px;
88
+ padding-top: 0;
89
+ padding-bottom: 0;
90
+
91
+ &:hover {
92
+ @include govbr-hover;
93
+ }
94
+
95
+ img {
96
+ max-height: 20px;
97
+ }
98
+ }
99
+
100
+ [data-bs-theme="dark"] .btn-light {
101
+ --#{$prefix}btn-bg: #{$govbr-background-dark};
102
+ --#{$prefix}btn-color: #{$govbr-interactive-dark};
103
+ --#{$prefix}btn-hover-bg: #{$govbr-background-dark};
104
+ --#{$prefix}btn-hover-color: #{$govbr-interactive-dark};
105
+ --#{$prefix}btn-active-bg: #{$govbr-background-dark};
106
+ --#{$prefix}btn-active-color: #{$govbr-color-dark};
107
+
108
+ &:hover {
109
+ @include govbr-hover($govbr-interactive-dark);
110
+ }
111
+ }
@@ -0,0 +1,7 @@
1
+ // Cookiebar do GOV.BR DS (vendor/govbr-ds-core/src/components/cookiebar):
2
+ // composição com .offcanvas-bottom (ver componentes/auxiliares.html). O
3
+ // painel inferior ganha a sombra para cima do cookiebar no lugar da borda.
4
+ .offcanvas-bottom {
5
+ border-top: 0;
6
+ box-shadow: $govbr-shadow-lg-up;
7
+ }
@@ -36,3 +36,54 @@
36
36
  .form-check-input {
37
37
  margin-top: calc((var(--bs-body-line-height) * 1em - #{$form-check-input-width}) / 2);
38
38
  }
39
+
40
+ // Switch (GOV.BR DS: Switch): trilho de 30px de altura, botão de 22px
41
+ // (imagem de fundo) a 4px da borda e trilho branco também quando ligado.
42
+ // background-origin é a caixa de padding, então 3px + 1px de borda = 4px.
43
+ .form-switch {
44
+ min-height: $govbr-switch-height;
45
+
46
+ .form-check-input {
47
+ height: $govbr-switch-height;
48
+ margin-top: calc((var(--bs-body-line-height) * 1em - #{$govbr-switch-height}) / 2);
49
+ background-color: $govbr-background;
50
+ background-position: left 3px center;
51
+ background-size: $govbr-switch-toggle $govbr-switch-toggle;
52
+ border-color: $govbr-gray-20;
53
+
54
+ &:checked {
55
+ background-color: $govbr-background;
56
+ border-color: $govbr-gray-20;
57
+ }
58
+
59
+ // Hover e pressionado: camada na cor do botão (--off/--on) sobre o
60
+ // trilho, abaixo do botão (segunda imagem de fundo).
61
+ &:hover:not(:disabled) {
62
+ background-image: var(--#{$prefix}form-switch-bg), linear-gradient(rgba($govbr-gray-20, $govbr-hover-opacity), rgba($govbr-gray-20, $govbr-hover-opacity));
63
+ background-position: left 3px center, 0 0;
64
+ background-size: $govbr-switch-toggle $govbr-switch-toggle, 100% 100%;
65
+ }
66
+
67
+ &:checked:hover:not(:disabled) {
68
+ background-image: var(--#{$prefix}form-switch-bg), linear-gradient(rgba($govbr-switch-on, $govbr-hover-opacity), rgba($govbr-switch-on, $govbr-hover-opacity));
69
+ background-position: $form-switch-checked-bg-position, 0 0;
70
+ }
71
+
72
+ // Foco do GOV.BR DS (focus-soft), como nos campos de texto.
73
+ &:focus-visible {
74
+ border-color: $govbr-focus;
75
+ box-shadow: 0 0 0 $govbr-focus-ring-width $govbr-focus;
76
+ }
77
+
78
+ &:focus:not(:focus-visible) {
79
+ box-shadow: none;
80
+ }
81
+ }
82
+ }
83
+
84
+ [data-bs-theme="dark"] .form-switch .form-check-input {
85
+ &,
86
+ &:checked {
87
+ background-color: $govbr-background;
88
+ }
89
+ }
@@ -77,24 +77,7 @@
77
77
  @include govbr-hover($govbr-interactive-dark);
78
78
  }
79
79
 
80
- // "Entrar" (Sign-in do GOV.BR DS): pílula de fundo cinza-claro com texto e
81
- // ícone na cor interativa, 16,8px.
82
- .navbar .btn-light {
83
- --#{$prefix}btn-bg: #{$govbr-gray-2};
84
- --#{$prefix}btn-color: #{$govbr-interactive};
85
- --#{$prefix}btn-hover-bg: #{$govbr-gray-2};
86
- --#{$prefix}btn-hover-color: #{$govbr-interactive};
87
- --#{$prefix}btn-active-bg: #{$govbr-gray-2};
88
- --#{$prefix}btn-active-color: #{$govbr-active};
89
- gap: 8px;
90
- padding-top: 0;
91
- padding-bottom: 0;
92
- font-size: $govbr-font-size-up-01;
93
-
94
- &:hover {
95
- @include govbr-hover;
96
- }
97
- }
80
+ // O "Entrar" (.btn-light) vem de components/_button.scss (Sign-in).
98
81
 
99
82
  // Busca do Header: campo de 40px com fundo cinza-claro, sem borda visível e
100
83
  // espaço à direita para o botão circular de pesquisa.
@@ -0,0 +1,25 @@
1
+ // Skiplink do GOV.BR DS (vendor/govbr-ds-core/src/components/skiplink):
2
+ // .visually-hidden-focusable, ao receber foco, aparece fixo no topo, a 16px
3
+ // da esquerda, com fundo, sombra grande, largura mínima de 300px e itens de
4
+ // 56px. Um <nav class="visually-hidden-focusable"> com vários links aparece
5
+ // inteiro, em linha (variante "full" do GOV.BR DS).
6
+ .visually-hidden-focusable:focus,
7
+ .visually-hidden-focusable:focus-within {
8
+ position: fixed;
9
+ top: 0;
10
+ left: 16px; // --skiplink-margin
11
+ z-index: $zindex-toast + 10;
12
+ display: inline-flex;
13
+ min-width: 300px; // --skiplink-min-width
14
+ background-color: var(--#{$prefix}body-bg);
15
+ box-shadow: $govbr-shadow-lg;
16
+ }
17
+
18
+ a.visually-hidden-focusable,
19
+ .visually-hidden-focusable a {
20
+ display: inline-flex;
21
+ align-items: center;
22
+ min-height: 56px;
23
+ padding: 8px 16px;
24
+ white-space: nowrap;
25
+ }
@@ -40,4 +40,6 @@
40
40
  @import "components/navbar";
41
41
  @import "components/menu";
42
42
  @import "components/footer";
43
+ @import "components/skiplink";
44
+ @import "components/cookiebar";
43
45
  @import "components/dark";