bootstrap-italia 2.17.2 → 3.0.0-alpha.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 (155) hide show
  1. package/README.EN.md +1 -1
  2. package/README.md +1 -1
  3. package/dist/css/bootstrap-italia.min.css +1 -9
  4. package/dist/css/bootstrap-italia.min.css.map +1 -1
  5. package/dist/fonts/Titillium_Sans_Pro/OFL.txt +92 -0
  6. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-Bold.woff +0 -0
  7. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-Bold.woff2 +0 -0
  8. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-BoldItalic.woff +0 -0
  9. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-BoldItalic.woff2 +0 -0
  10. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-Italic.woff +0 -0
  11. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-Italic.woff2 +0 -0
  12. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-Light.woff +0 -0
  13. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-Light.woff2 +0 -0
  14. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-LightItalic.woff +0 -0
  15. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-LightItalic.woff2 +0 -0
  16. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-Regular.woff +0 -0
  17. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-Regular.woff2 +0 -0
  18. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-Semibold.woff +0 -0
  19. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-Semibold.woff2 +0 -0
  20. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-SemiboldItalic.woff +0 -0
  21. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-SemiboldItalic.woff2 +0 -0
  22. package/dist/js/bootstrap-italia.bundle.min.js +10 -10
  23. package/dist/js/bootstrap-italia.min.js +4 -4
  24. package/dist/plugins/dropdown.js +1 -1
  25. package/dist/plugins/dropdown.js.map +1 -1
  26. package/dist/plugins/fonts-loader.js +340 -111
  27. package/dist/plugins/fonts-loader.js.map +1 -1
  28. package/dist/version.js +1 -1
  29. package/dist/version.js.map +1 -1
  30. package/package.json +3 -3
  31. package/src/fonts/Titillium_Sans_Pro/OFL.txt +92 -0
  32. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-Bold.woff +0 -0
  33. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-Bold.woff2 +0 -0
  34. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-BoldItalic.woff +0 -0
  35. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-BoldItalic.woff2 +0 -0
  36. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-Italic.woff +0 -0
  37. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-Italic.woff2 +0 -0
  38. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-Light.woff +0 -0
  39. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-Light.woff2 +0 -0
  40. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-LightItalic.woff +0 -0
  41. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-LightItalic.woff2 +0 -0
  42. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-Regular.woff +0 -0
  43. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-Regular.woff2 +0 -0
  44. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-Semibold.woff +0 -0
  45. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-Semibold.woff2 +0 -0
  46. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-SemiboldItalic.woff +0 -0
  47. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-SemiboldItalic.woff2 +0 -0
  48. package/src/js/plugins/dropdown.js +1 -1
  49. package/src/js/plugins/fonts-loader.js +340 -111
  50. package/src/js/version.js +1 -1
  51. package/src/scss/base/_maps.scss +11 -0
  52. package/src/scss/base/_mixins.scss +2 -1
  53. package/src/scss/base/_reboot.scss +15 -147
  54. package/src/scss/base/_root.scss +272 -45
  55. package/src/scss/base/_utilities.scss +3 -3
  56. package/src/scss/base/_variables.scss +44 -55
  57. package/src/scss/base/_version.scss +1 -1
  58. package/src/scss/base/mixins/_banner.scss +7 -9
  59. package/src/scss/base/mixins/_focus.scss +14 -0
  60. package/src/scss/bootstrap-italia.scss +29 -32
  61. package/src/scss/components/_accept-overlay.scss +74 -50
  62. package/src/scss/components/_accordion.scss +120 -97
  63. package/src/scss/components/_affix.scss +14 -0
  64. package/src/scss/components/_alert.scss +60 -45
  65. package/src/scss/components/_anchor.scss +14 -0
  66. package/src/scss/components/_avatar.scss +236 -369
  67. package/src/scss/components/_back-to-top.scss +70 -54
  68. package/src/scss/components/_badge.scss +69 -36
  69. package/src/scss/components/_bottomnav.scss +14 -0
  70. package/src/scss/components/_breadcrumb.scss +78 -71
  71. package/src/scss/components/_button-group.scss +21 -7
  72. package/src/scss/components/_buttons.scss +289 -318
  73. package/src/scss/components/_calendar.scss +22 -8
  74. package/src/scss/components/_callout.scss +133 -125
  75. package/src/scss/components/_card-old.scss +14 -0
  76. package/src/scss/components/_card.scss +476 -518
  77. package/src/scss/components/_carousel.scss +14 -0
  78. package/src/scss/components/_chips.scss +150 -209
  79. package/src/scss/components/_code.scss +31 -6
  80. package/src/scss/components/_cookiebar.scss +14 -0
  81. package/src/scss/components/_dimmer.scss +14 -0
  82. package/src/scss/components/_dropdown.scss +144 -179
  83. package/src/scss/components/_figcaption.scss +14 -0
  84. package/src/scss/components/_font.scss +14 -0
  85. package/src/scss/components/_footer.scss +99 -75
  86. package/src/scss/components/_forward.scss +14 -0
  87. package/src/scss/components/_grid.scss +31 -22
  88. package/src/scss/components/_gridlist.scss +41 -19
  89. package/src/scss/components/_header.scss +150 -142
  90. package/src/scss/components/_headercenter.scss +129 -193
  91. package/src/scss/components/_headercentertheme.scss +14 -0
  92. package/src/scss/components/_headernavbar.scss +22 -14
  93. package/src/scss/components/_headernavbartheme.scss +16 -2
  94. package/src/scss/components/_headerslim.scss +133 -137
  95. package/src/scss/components/_headerslimtheme.scss +14 -0
  96. package/src/scss/components/_hero.scss +93 -202
  97. package/src/scss/components/_images.scss +14 -0
  98. package/src/scss/components/_imgresponsive.scss +14 -0
  99. package/src/scss/components/_linklist.scss +241 -262
  100. package/src/scss/components/_list-group.scss +26 -14
  101. package/src/scss/components/_list.scss +66 -123
  102. package/src/scss/components/_map.scss +14 -0
  103. package/src/scss/components/_masonry-loader.scss +14 -0
  104. package/src/scss/components/_megamenu.scss +191 -256
  105. package/src/scss/components/_modal.scss +115 -204
  106. package/src/scss/components/_nav.scss +43 -41
  107. package/src/scss/components/_navbar.scss +408 -91
  108. package/src/scss/components/_navigation.scss +56 -459
  109. package/src/scss/components/_navigationtheme.scss +109 -171
  110. package/src/scss/components/_navscroll.scss +210 -208
  111. package/src/scss/components/_navscrolltheme.scss +14 -0
  112. package/src/scss/components/_notifications.scss +14 -0
  113. package/src/scss/components/_offcanvas.scss +14 -0
  114. package/src/scss/components/_overlay-panel.scss +14 -0
  115. package/src/scss/components/_page-scroll.scss +14 -0
  116. package/src/scss/components/_pagination.scss +135 -80
  117. package/src/scss/components/_placeholders.scss +14 -0
  118. package/src/scss/components/_point-list.scss +15 -0
  119. package/src/scss/components/_popover.scss +29 -19
  120. package/src/scss/components/_print.scss +14 -0
  121. package/src/scss/components/_progress-bars.scss +14 -0
  122. package/src/scss/components/_progress-donuts.scss +14 -0
  123. package/src/scss/components/_progress-spinners.scss +14 -0
  124. package/src/scss/components/_rating-list.scss +14 -0
  125. package/src/scss/components/_rating.scss +76 -45
  126. package/src/scss/components/_sections.scss +51 -30
  127. package/src/scss/components/_sidebar.scss +119 -121
  128. package/src/scss/components/_sidebarthemes.scss +14 -0
  129. package/src/scss/components/_skiplinks.scss +14 -0
  130. package/src/scss/components/_steppers.scss +14 -0
  131. package/src/scss/components/_sticky.scss +14 -0
  132. package/src/scss/components/_tab.scss +14 -0
  133. package/src/scss/components/_tables.scss +14 -0
  134. package/src/scss/components/_thumbnav.scss +14 -0
  135. package/src/scss/components/_timeline.scss +14 -0
  136. package/src/scss/components/_toasts.scss +14 -0
  137. package/src/scss/components/_toolbar.scss +14 -0
  138. package/src/scss/components/_tooltip.scss +23 -9
  139. package/src/scss/components/_type.scss +176 -176
  140. package/src/scss/components/_videoplayer.scss +25 -5
  141. package/src/scss/forms/_accessible-autocomplete.scss +25 -27
  142. package/src/scss/forms/_autocomplete.scss +99 -144
  143. package/src/scss/forms/_form-control.scss +47 -116
  144. package/src/scss/forms/_form-input-file.scss +7 -6
  145. package/src/scss/forms/_form-input-number.scss +38 -22
  146. package/src/scss/forms/_form-input-upload.scss +149 -147
  147. package/src/scss/forms/_form-password.scss +14 -11
  148. package/src/scss/forms/_form-select.scss +3 -92
  149. package/src/scss/forms/_forms.scss +304 -247
  150. package/src/scss/forms/_input-group.scss +23 -36
  151. package/src/scss/forms/_just-validate.scss +11 -12
  152. package/src/scss/utilities/focus.scss +3 -12
  153. package/src/scss/utilities/icons.scss +59 -13
  154. package/src/scss/components/_pager.scss +0 -166
  155. package/src/scss/forms/_form-text.scss +0 -11
@@ -1,323 +1,140 @@
1
+ // Component: buttons
1
2
  //
2
- // Base styles
3
+ // Description: Component styles for buttons
4
+ //
5
+
6
+ // Variables
7
+ //
8
+
9
+ $btn-close-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$btn-close-color}'><path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/></svg>") !default;
10
+ $btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;
11
+
12
+ // Properties
3
13
  //
4
14
 
5
15
  .btn {
6
- // scss-docs-start btn-css-vars
7
- --#{$prefix}btn-padding-x: #{$btn-padding-x};
8
- --#{$prefix}btn-padding-y: #{$btn-padding-y};
9
- --#{$prefix}btn-font-family: #{$btn-font-family};
10
- @include rfs($btn-font-size, --#{$prefix}btn-font-size);
11
- --#{$prefix}btn-font-weight: #{$btn-font-weight};
12
- --#{$prefix}btn-line-height: #{$btn-line-height};
13
- --#{$prefix}btn-color: #{$btn-link-color};
14
- --#{$prefix}btn-bg: transparent;
15
- --#{$prefix}btn-border-width: #{$btn-border-width};
16
- --#{$prefix}btn-border-color: transparent;
17
- --#{$prefix}btn-border-radius: #{$btn-border-radius};
18
- --#{$prefix}btn-hover-border-color: transparent;
19
- --#{$prefix}btn-box-shadow: #{$btn-box-shadow};
20
- --#{$prefix}btn-disabled-opacity: #{$btn-disabled-opacity};
21
- --#{$prefix}btn-focus-box-shadow: 0 0 0 #{$btn-focus-width} rgba(var(--#{$prefix}btn-focus-shadow-rgb), 0.5);
22
- // scss-docs-end btn-css-vars
16
+ --#{$prefix}btn-background: transparent; // Controls the background for the button.
17
+ --#{$prefix}btn-border-color: transparent; // Controls the border color for the button.
18
+ --#{$prefix}btn-border-radius: var(--#{$prefix}radius-smooth); // Controls the border radius for the button, using radius tokens.
19
+ --#{$prefix}btn-border-size: 0; // Controls the border size for the button.
20
+ --#{$prefix}btn-disabled-opacity: 0.5; // Controls the opacity for disabled buttons.
21
+ --#{$prefix}btn-font-family: var(--#{$prefix}font-sans); // Controls the font family for the button, using font tokens.
22
+ --#{$prefix}btn-font-size: var(--#{$prefix}label-font-size); // Controls the font size for the button, using font tokens.
23
+ --#{$prefix}btn-font-weight: var(--#{$prefix}font-weight-solid); // Controls the font weight for the button, using font tokens.
24
+ --#{$prefix}btn-line-height: var(--#{$prefix}font-line-height-3); // Controls the line height for the button, using font tokens.
25
+ --#{$prefix}btn-outline-border-color: transparent; // Controls the outline border color for the button.
26
+ --#{$prefix}btn-outline-border-size: 2px; // Controls the outline border size for the button.
27
+ --#{$prefix}btn-padding-x: var(--#{$prefix}spacing-s); // Controls the horizontal padding for the button, using spacing tokens.
28
+ --#{$prefix}btn-padding-y: var(--#{$prefix}spacing-xs); // Controls the vertical padding for the button, using spacing tokens.
29
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-primary); // Controls the text color for the button, using color tokens.
30
+ }
23
31
 
32
+ // Styles
33
+ //
34
+ /* stylelint-disable-next-line no-duplicate-selectors */
35
+ .btn {
24
36
  display: inline-block;
37
+ padding: var(--#{$prefix}btn-padding-y) var(--#{$prefix}btn-padding-x);
38
+ border: var(--#{$prefix}btn-border-width) solid var(--#{$prefix}btn-border-color);
39
+ border-radius: var(--#{$prefix}btn-border-radius);
40
+ background: var(--#{$prefix}btn-background);
41
+ box-shadow: var(--#{$prefix}btn-box-shadow, none);
42
+ color: var(--#{$prefix}btn-text-color);
25
43
  font-family: var(--#{$prefix}btn-font-family);
26
- @include font-size(var(--#{$prefix}btn-font-size));
44
+ font-size: var(--#{$prefix}btn-font-size);
27
45
  font-weight: var(--#{$prefix}btn-font-weight);
28
46
  line-height: var(--#{$prefix}btn-line-height);
29
- color: var(--#{$prefix}btn-color);
30
47
  text-align: center;
48
+ text-decoration: none;
31
49
  vertical-align: middle;
32
- cursor: if($enable-button-pointers, pointer, null);
33
- user-select: none;
34
- border: var(--#{$prefix}btn-border-width) solid var(--#{$prefix}btn-border-color);
35
- @include border-radius(var(--#{$prefix}btn-border-radius));
36
- @include gradient-bg(var(--#{$prefix}btn-bg));
37
- @include box-shadow(var(--#{$prefix}btn-box-shadow));
38
- @include transition($btn-transition);
39
-
40
- //btn-css-vars
41
- --bs-btn-color: $primary;
42
- --bs-btn-hover-color: $color-background-primary-hover;
43
- --bs-btn-active-color: #003366; // TODO change with tokens when available
44
- //btn-css-vars-end
45
- padding: 12px 24px;
46
- font-size: $btn-font-size;
47
50
  white-space: initial;
48
- text-decoration: none;
49
- box-shadow: none;
51
+ width: auto; // prevent buttons from stretching full width
52
+ transition: all var(--#{$prefix}transition-instant) ease-in-out;
53
+ user-select: none;
50
54
 
51
55
  &:hover {
52
- color: var(--#{$prefix}btn-hover-color);
53
- text-decoration: if($link-hover-decoration == underline, none, null);
54
- background-color: var(--#{$prefix}btn-hover-bg);
55
- border-color: var(--#{$prefix}btn-hover-border-color);
56
+ color: var(--#{$prefix}btn-text-color);
56
57
  }
57
58
 
58
- .btn-check + &:hover {
59
- // override for the checkbox/radio buttons
60
- color: var(--#{$prefix}btn-color);
61
- background-color: var(--#{$prefix}btn-bg);
62
- border-color: var(--#{$prefix}btn-border-color);
59
+ &:disabled,
60
+ &.disabled {
61
+ opacity: var(--#{$prefix}btn-disabled-opacity);
62
+ cursor: not-allowed;
63
+ pointer-events: none;
63
64
  }
64
65
 
65
66
  &:focus-visible {
66
- color: var(--#{$prefix}btn-hover-color);
67
- @include gradient-bg(var(--#{$prefix}btn-hover-bg));
68
67
  border-color: var(--#{$prefix}btn-hover-border-color);
69
68
  outline: 0;
70
- // Avoid using mixin so we can pass custom focus shadow properly
71
- @if $enable-shadows {
72
- box-shadow: var(--#{$prefix}btn-box-shadow), var(--#{$prefix}btn-focus-box-shadow);
73
- } @else {
74
- box-shadow: var(--#{$prefix}btn-focus-box-shadow);
75
- }
76
69
  }
77
70
 
78
71
  .btn-check:focus-visible + & {
79
72
  border-color: var(--#{$prefix}btn-hover-border-color);
80
73
  outline: 0;
81
- // Avoid using mixin so we can pass custom focus shadow properly
82
- @if $enable-shadows {
83
- box-shadow: var(--#{$prefix}btn-box-shadow), var(--#{$prefix}btn-focus-box-shadow);
84
- } @else {
85
- box-shadow: var(--#{$prefix}btn-focus-box-shadow);
86
- }
87
- }
88
-
89
- .btn-check:checked + &,
90
- :not(.btn-check) + &:active,
91
- &:first-child:active,
92
- &.active,
93
- &.show {
94
- color: var(--#{$prefix}btn-active-color);
95
- background-color: var(--#{$prefix}btn-active-bg);
96
- // Remove CSS gradients if they're enabled
97
- background-image: if($enable-gradients, none, null);
98
- border-color: var(--#{$prefix}btn-active-border-color);
99
- @include box-shadow(var(--#{$prefix}btn-active-shadow));
100
-
101
- &:focus-visible {
102
- // Avoid using mixin so we can pass custom focus shadow properly
103
- @if $enable-shadows {
104
- box-shadow: var(--#{$prefix}btn-active-shadow), var(--#{$prefix}btn-focus-box-shadow);
105
- } @else {
106
- box-shadow: var(--#{$prefix}btn-focus-box-shadow);
107
- }
108
- }
109
- }
110
-
111
- &:disabled,
112
- &.disabled,
113
- fieldset:disabled & {
114
- color: var(--#{$prefix}btn-disabled-color);
115
- pointer-events: none;
116
- background-color: var(--#{$prefix}btn-disabled-bg);
117
- background-image: if($enable-gradients, none, null);
118
- border-color: var(--#{$prefix}btn-disabled-border-color);
119
- opacity: var(--#{$prefix}btn-disabled-opacity);
120
- @include box-shadow(none);
121
- }
122
- }
123
-
124
- //
125
- // Alternate buttons
126
- //
127
-
128
- // scss-docs-start btn-variant-loops
129
- @each $color, $value in $theme-colors {
130
- .btn-#{$color} {
131
- @if $color == 'light' {
132
- @include button-variant(
133
- $value,
134
- $value,
135
- $hover-background: shade-color($value, $btn-hover-bg-shade-amount),
136
- $hover-border: shade-color($value, $btn-hover-border-shade-amount),
137
- $active-background: shade-color($value, $btn-active-bg-shade-amount),
138
- $active-border: shade-color($value, $btn-active-border-shade-amount)
139
- );
140
- } @else if $color == 'dark' {
141
- @include button-variant(
142
- $value,
143
- $value,
144
- $hover-background: tint-color($value, $btn-hover-bg-tint-amount),
145
- $hover-border: tint-color($value, $btn-hover-border-tint-amount),
146
- $active-background: tint-color($value, $btn-active-bg-tint-amount),
147
- $active-border: tint-color($value, $btn-active-border-tint-amount)
148
- );
149
- } @else {
150
- @include button-variant($value, $value);
151
- }
152
- }
153
- }
154
-
155
- @each $color, $value in $theme-colors {
156
- .btn-outline-#{$color} {
157
- @include button-outline-variant($value);
158
- box-shadow: inset 0 0 0 2px $value;
159
- &.disabled,
160
- &:hover,
161
- &:active {
162
- box-shadow: inset 0 0 0 2px color-hover($value);
163
- }
164
74
  }
165
75
  }
166
- // scss-docs-end btn-variant-loops
167
76
 
168
- //
169
77
  // Link buttons
78
+ // Make a button look and behave like a link
170
79
  //
171
80
 
172
- // Make a button look and behave like a link
173
81
  .btn-link {
174
- --#{$prefix}btn-font-weight: #{$font-weight-normal};
175
- --#{$prefix}btn-color: #{$btn-link-color};
176
- --#{$prefix}btn-bg: transparent;
82
+ --#{$prefix}btn-background: transparent;
177
83
  --#{$prefix}btn-border-color: transparent;
178
- --#{$prefix}btn-hover-color: #{$btn-link-hover-color};
179
- --#{$prefix}btn-hover-border-color: transparent;
180
- --#{$prefix}btn-active-color: #{$btn-link-hover-color};
181
- --#{$prefix}btn-active-border-color: transparent;
182
- --#{$prefix}btn-disabled-color: #{$btn-link-disabled-color};
183
- --#{$prefix}btn-disabled-border-color: transparent;
184
- --#{$prefix}btn-box-shadow: none;
185
- --#{$prefix}btn-focus-shadow-rgb: #{to-rgb(mix(color-contrast($primary), $primary, 15%))};
186
-
187
- text-decoration: $link-decoration;
188
- @if $enable-gradients {
189
- background-image: none;
190
- }
191
-
192
- &:hover,
193
- &:focus-visible {
194
- text-decoration: $link-hover-decoration;
195
- }
196
-
197
- &:focus-visible {
198
- color: var(--#{$prefix}btn-color);
199
- }
84
+ text-decoration: underline;
200
85
 
201
86
  &:hover {
202
- color: var(--#{$prefix}btn-hover-color);
87
+ color: var(--#{$prefix}color-link-hover);
203
88
  }
204
-
205
- // No need for an active state here
206
89
  }
207
90
 
208
- //
209
91
  // Button Sizes
210
92
  //
211
93
 
212
- .btn-me {
213
- margin-right: $v-gap * 1.5 !important;
214
- }
215
-
216
- .btn-xs,
217
- .btn-sm,
218
- .btn-lg {
219
- border-radius: $btn-border-radius;
220
- }
221
-
222
94
  .btn-xs {
223
- padding: 12px 16px;
224
- font-size: $btn-font-size-xs;
225
- line-height: $input-btn-line-height-xs;
226
- }
227
-
228
- .btn-sm {
229
- @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-border-radius-sm);
230
- padding: 12px 24px;
231
- font-size: $btn-font-size-sm;
232
- line-height: $input-btn-line-height-sm;
95
+ --#{$prefix}btn-padding-x: var(--#{$prefix}spacing-xs);
96
+ --#{$prefix}btn-padding-y: var(--#{$prefix}spacing-xs);
97
+ --#{$prefix}btn-font-size: var(--#{$prefix}label-font-size-s);
98
+ --#{$prefix}btn-line-height: var(--#{$prefix}font-line-height-1);
99
+ --#{$prefix}rounded-icon-size: 20px;
233
100
  }
234
101
 
235
102
  .btn-lg {
236
- @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-border-radius-lg);
237
- padding: 16px 24px;
238
- font-size: $btn-font-size-lg;
239
- line-height: $input-btn-line-height-lg;
103
+ --#{$prefix}btn-padding-x: var(--#{$prefix}spacing-m);
104
+ --#{$prefix}btn-padding-y: var(--#{$prefix}spacing-s);
105
+ --#{$prefix}btn-font-size: var(--#{$prefix}label-font-size-l);
106
+ --#{$prefix}btn-line-height: var(--#{$prefix}font-line-height-5);
240
107
  }
241
108
 
242
109
  .btn-progress {
243
110
  position: relative;
244
111
  }
245
112
 
113
+ // Button with icon
114
+ //
115
+
246
116
  .btn-icon {
247
117
  display: inline-flex;
248
118
  flex-direction: row;
249
- justify-content: center;
250
119
  align-items: center;
251
-
252
- .rounded-icon {
253
- width: 1.5em;
254
- height: 1.5em;
255
-
256
- .icon {
257
- margin-right: 0;
258
- }
259
-
260
- @include border-radius(12px);
261
- display: flex;
262
- justify-content: center;
263
- align-items: center;
264
- background-color: $white;
265
-
266
- @each $color, $value in $theme-colors {
267
- &.rounded-#{$color} {
268
- background-color: $value;
269
- }
270
- }
271
-
272
- & + * {
273
- margin-left: 0.5em;
274
- }
275
- }
276
-
277
- .icon {
278
- border: none;
279
-
280
- width: 1.2em;
281
- height: 1.2em;
282
-
283
- & + * {
284
- margin-left: 0.25em;
285
- }
286
- }
120
+ justify-content: center;
121
+ gap: var(--#{$prefix}icon-spacing);
287
122
  }
288
123
 
124
+ // Button full TODO: Is this needed?
125
+ //
289
126
  .btn-full {
290
- border: none;
291
- box-shadow: none;
292
- line-height: 1.555;
293
- @include border-radius(0);
294
- // allow height 100%
295
127
  align-self: stretch;
296
- // height: 100%;
297
128
  width: inherit;
298
- margin-top: -$header-slim-button-v-padding;
299
- margin-bottom: -$header-slim-button-v-padding;
300
- margin-right: -$header-slim-button-v-padding;
301
- padding-left: 8px;
302
- padding-right: 8px;
303
- &:hover {
304
- text-decoration: none !important;
305
- }
306
-
307
- // Tablet vertical
308
- @include media-breakpoint-up(sm) {
309
- padding: 16px;
310
- }
311
-
312
- // Desktop
129
+ border: none;
130
+ box-shadow: none;
313
131
  @include media-breakpoint-up(lg) {
314
- padding: 12px 24px !important;
315
- margin: 0;
316
- flex: 1;
317
132
  display: flex;
133
+ flex: 1;
318
134
  flex-direction: row;
319
- justify-content: center;
320
135
  align-items: center;
136
+ justify-content: center;
137
+ margin: 0;
321
138
  }
322
139
  }
323
140
 
@@ -326,93 +143,250 @@
326
143
  cursor: not-allowed;
327
144
  }
328
145
 
329
- .btn-primary {
330
- &:disabled,
331
- &.disabled {
332
- // color: $gray-label-disabled;
333
- // background-color: $gray-disabled;
334
- // border-color: $gray-border-disabled;
335
- //progress bar button
336
- &.btn-progress {
337
- background-color: hsl(210, 76%, 67%); // UI kit - missing token
338
- border-color: hsl(210, 76%, 67%); // UI kit - missing token
339
- color: $white;
340
- opacity: 1;
341
- }
146
+ .btn-primary,
147
+ a.btn-primary {
148
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-inverse);
149
+ --#{$prefix}btn-background: var(--#{$prefix}color-background-primary);
150
+
151
+ &:hover {
152
+ --#{$prefix}btn-background: var(--#{$prefix}color-background-primary-hover);
153
+ }
154
+
155
+ &:active {
156
+ --#{$prefix}btn-background: var(--#{$prefix}color-background-primary-active);
157
+ }
158
+
159
+ &.btn-progress {
160
+ border-color: hsl(210, 76%, 67%); // UI kit - missing token
161
+ opacity: 1;
162
+ background-color: hsl(210, 76%, 67%); // UI kit - missing token
342
163
  }
343
164
  }
344
165
 
345
- .btn-secondary {
166
+ .btn-secondary,
167
+ a.btn-secondary {
168
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-inverse);
169
+ --#{$prefix}btn-background: var(--#{$prefix}color-background-secondary);
170
+
171
+ &:hover {
172
+ --#{$prefix}btn-background: var(--#{$prefix}color-background-secondary-hover);
173
+ }
174
+
175
+ &:active {
176
+ --#{$prefix}btn-background: var(--#{$prefix}color-background-secondary-active);
177
+ }
178
+
346
179
  &:disabled,
347
180
  &.disabled {
348
181
  //progress bar button
349
182
  &.btn-progress {
350
- background-color: hsl(210, 12%, 52%); // UI kit - missing tokens
351
183
  border-color: hsl(210, 12%, 52%); // UI kit - missing tokens
352
184
  opacity: 1;
185
+ background-color: hsl(210, 12%, 52%); // UI kit - missing tokens
186
+ }
187
+ }
188
+ }
189
+
190
+ .btn-success,
191
+ a.btn-success {
192
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-inverse);
193
+ --#{$prefix}btn-background: var(--#{$prefix}color-background-success);
194
+
195
+ &:hover {
196
+ --#{$prefix}btn-background: var(--#{$prefix}color-background-success-hover);
197
+ }
198
+
199
+ &:active {
200
+ --#{$prefix}btn-background: var(--#{$prefix}color-background-success-active);
201
+ }
202
+ }
203
+
204
+ .btn-warning,
205
+ a.btn-warning {
206
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-inverse);
207
+ --#{$prefix}btn-background: var(--#{$prefix}color-background-warning);
208
+
209
+ &:hover {
210
+ --#{$prefix}btn-background: var(--#{$prefix}color-background-warning-hover);
211
+ }
212
+
213
+ &:active {
214
+ --#{$prefix}btn-background: var(--#{$prefix}color-background-warning-active);
215
+ }
216
+ }
217
+
218
+ .btn-danger,
219
+ a.btn-danger {
220
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-inverse);
221
+ --#{$prefix}btn-background: var(--#{$prefix}color-background-danger);
222
+
223
+ &:hover {
224
+ --#{$prefix}btn-background: var(--#{$prefix}color-background-danger-hover);
225
+ }
226
+
227
+ &:active {
228
+ --#{$prefix}btn-background: var(--#{$prefix}color-background-danger-active);
229
+ }
230
+ }
231
+
232
+ // Button Outline
233
+ //
234
+
235
+ .btn[class*='btn-outline-'] {
236
+ --#{$prefix}btn-box-shadow: inset 0 0 0 var(--#{$prefix}btn-outline-border-size) var(--#{$prefix}btn-outline-border-color);
237
+ }
238
+
239
+ .btn-outline,
240
+ a.btn-outline {
241
+ // Outline Primary
242
+ &-primary {
243
+ --#{$prefix}btn-outline-border-color: var(--#{$prefix}color-border-primary);
244
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-primary);
245
+ &:hover {
246
+ --#{$prefix}btn-outline-border-color: color-mix(in srgb, var(--#{$prefix}color-border-primary-hover) 70%, black); // more contrast on hover
247
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-link-hover);
248
+ }
249
+ &:active {
250
+ --#{$prefix}btn-outline-border-color: var(--#{$prefix}color-border-primary-active);
251
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-link-active);
252
+ }
253
+ }
254
+
255
+ // Outline Secondary
256
+ &-secondary {
257
+ --#{$prefix}btn-outline-border-color: var(--#{$prefix}color-border-secondary);
258
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-secondary);
259
+
260
+ &:hover {
261
+ --#{$prefix}btn-outline-border-color: var(--#{$prefix}color-border-secondary-hover);
262
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-link-secondary-hover);
263
+ }
264
+ &:active {
265
+ --#{$prefix}btn-outline-border-color: var(--#{$prefix}color-border-secondary-active);
266
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-link-secondary-active);
267
+ }
268
+ }
269
+
270
+ // Outline Success
271
+ &-success {
272
+ --#{$prefix}btn-outline-border-color: var(--#{$prefix}color-border-success);
273
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-success);
274
+
275
+ &:hover {
276
+ /* aumenta contrasto scurendo il bordo rispetto al token base */
277
+ --#{$prefix}btn-outline-border-color: color-mix(in srgb, var(--#{$prefix}color-border-success-hover) 70%, black); // more contrast on hover
278
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-success-hover);
279
+ }
280
+ &:active {
281
+ --#{$prefix}btn-outline-border-color: var(--#{$prefix}color-border-success-active);
282
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-success-active);
283
+ }
284
+ }
285
+
286
+ // Outline Warning
287
+ &-warning {
288
+ --#{$prefix}btn-outline-border-color: var(--#{$prefix}color-border-warning);
289
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-warning);
290
+
291
+ &:hover {
292
+ --#{$prefix}btn-outline-border-color: color-mix(in srgb, var(--#{$prefix}color-border-warning-hover) 70%, black); // more contrast on hover
293
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-warning-hover);
294
+ }
295
+ &:active {
296
+ --#{$prefix}btn-outline-border-color: var(--#{$prefix}color-border-warning-active);
297
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-warning-active);
298
+ }
299
+ }
300
+
301
+ // Outline Danger
302
+ &-danger {
303
+ --#{$prefix}btn-outline-border-color: var(--#{$prefix}color-border-danger);
304
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-danger);
305
+
306
+ &:hover {
307
+ --#{$prefix}btn-outline-border-color: color-mix(in srgb, var(--#{$prefix}color-border-danger-hover) 70%, black); // more contrast on hover
308
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-danger-hover);
309
+ }
310
+ &:active {
311
+ --#{$prefix}btn-outline-border-color: var(--#{$prefix}color-border-danger-active);
312
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-danger-active);
353
313
  }
354
314
  }
355
315
  }
356
316
 
317
+ // Button in a dark background
318
+ //
319
+
357
320
  .bg-dark {
358
321
  .btn-link {
359
- color: $white;
322
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-inverse);
360
323
  }
324
+
325
+ a.btn-primary,
361
326
  .btn-primary {
362
- @include button-variant(
363
- $white,
364
- $primary,
365
- $color: $primary,
366
- $hover-color: $primary,
367
- $hover-background: shade-color($white, 15%),
368
- $active-color: $primary,
369
- $active-background: shade-color($white, 20%)
370
- );
371
- &.disabled,
372
- &:disabled {
373
- color: shade-color($primary, 10%);
327
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-primary);
328
+ --#{$prefix}btn-background: var(--#{$prefix}color-background-inverse);
329
+
330
+ &:hover {
331
+ --#{$prefix}btn-background: color-mix(in srgb, var(--#{$prefix}color-background-inverse) 85%, black);
332
+ }
333
+
334
+ &:active {
335
+ --#{$prefix}btn-background: color-mix(in srgb, var(--#{$prefix}color-background-inverse) 80%, black);
336
+ }
337
+ }
338
+
339
+ a.btn-secondary,
340
+ .btn-secondary {
341
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-inverse);
342
+ --#{$prefix}btn-background: var(--#{$prefix}color-background-secondary);
343
+
344
+ &:hover,
345
+ &:active {
346
+ --#{$prefix}btn-background: color-mix(in srgb, var(--#{$prefix}color-background-secondary) 85%, black);
374
347
  }
375
348
  }
376
- .btn-outline-primary {
377
- @include button-outline-variant($white);
378
- box-shadow: inset 0 0 0 2px $white;
349
+
350
+ .btn-outline-primary,
351
+ a.btn-outline-primary {
352
+ --#{$prefix}btn-outline-border-color: var(--#{$prefix}color-border-inverse);
353
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-inverse);
354
+
379
355
  &:hover {
380
- box-shadow: inset 0 0 0 2px color-hover($white);
356
+ --#{$prefix}btn-boxshadow-color-darken: color-mix(in srgb, var(--#{$prefix}color-border-inverse) 80%, black);
357
+ --#{$prefix}btn-boxshadow-color-desaturated: color-mix(in srgb, var(--#{$prefix}btn-boxshadow-color-darken) 80%, gray);
358
+ --#{$prefix}btn-outline-border-color: var(--#{$prefix}btn-boxshadow-color-desaturated); //tutto questo equivale a fare color-hover(...)
381
359
  }
382
360
  }
383
- .btn-secondary {
384
- @include button-variant(
385
- $secondary,
386
- $secondary,
387
- $color: $white,
388
- $hover-color: $white,
389
- $hover-background: shade-color($secondary, 15%),
390
- $hover-border: $secondary
391
- );
392
- color: $white;
393
- }
394
- .btn-outline-secondary {
395
- @include button-outline-variant($white, color-hover($white), transparent, color-hover($white));
361
+
362
+ .btn-outline-secondary,
363
+ a.btn-outline-secondary {
364
+ --#{$prefix}btn-text-color: var(--#{$prefix}color-text-inverse);
365
+ &:hover,
366
+ &:active {
367
+ --#{$prefix}btn-boxshadow-color-darken: color-mix(in srgb, var(--#{$prefix}color-background-secondary) 80%, black);
368
+ --#{$prefix}btn-boxshadow-color-desaturated: color-mix(in srgb, var(--#{$prefix}btn-boxshadow-color-darken) 80%, gray);
369
+ --#{$prefix}btn-outline-border-color: var(--#{$prefix}btn-boxshadow-color-desaturated); //tutto questo equivale a fare color-hover(...)
370
+ }
396
371
  }
397
372
  }
398
373
 
399
- // Transparent background and border properties included for button version.
400
- // iOS requires the button element instead of an anchor tag.
401
- // If you want the anchor version, it requires `href="#"`.
402
- // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
374
+ // Button close
375
+ // The close button is used to close modals, alerts, and other components.
376
+ // It is a small button with an "X" icon.
377
+ // The close button is a special case of the button component.
403
378
 
404
379
  .btn-close {
380
+ position: relative;
405
381
  box-sizing: content-box;
406
- width: $btn-close-width;
407
- height: $btn-close-height;
408
- padding: $btn-close-padding-y $btn-close-padding-x;
409
- color: $btn-close-color;
410
- background: transparent escape-svg($btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements
382
+ width: 2.5rem;
383
+ height: 2.5rem;
384
+ padding: 0;
411
385
  border: 0; // for button elements
412
- @include border-radius();
413
- opacity: $btn-close-opacity;
386
+ opacity: 0.5;
414
387
  background-color: transparent;
415
- position: relative;
388
+ color: var(--#{$prefix}color-text-base);
389
+
416
390
  .icon {
417
391
  position: absolute;
418
392
  top: 50%;
@@ -422,22 +396,19 @@
422
396
 
423
397
  // Override <a>'s hover style
424
398
  &:hover {
425
- color: $btn-close-color;
399
+ opacity: 1;
426
400
  text-decoration: none;
427
- opacity: $btn-close-hover-opacity;
428
401
  }
429
402
 
430
403
  &:focus {
431
- outline: 0;
432
- box-shadow: $btn-close-focus-shadow;
433
- opacity: $btn-close-focus-opacity;
404
+ opacity: 1;
434
405
  }
435
406
 
436
407
  &:disabled,
437
408
  &.disabled {
409
+ opacity: var(--#{$prefix}btn-disabled-opacity);
438
410
  pointer-events: none;
439
411
  user-select: none;
440
- opacity: $btn-close-disabled-opacity;
441
412
  }
442
413
  }
443
414