@cfpb/cfpb-design-system 4.2.3 → 4.3.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/CHANGELOG.md +178 -1
- package/dist/base/index.css +1 -1
- package/dist/base/index.css.map +2 -2
- package/dist/base/index.js.map +1 -1
- package/dist/components/cfpb-buttons/index.css +1 -1
- package/dist/components/cfpb-buttons/index.css.map +2 -2
- package/dist/components/cfpb-buttons/index.js.map +1 -1
- package/dist/components/cfpb-expandables/index.css.map +1 -1
- package/dist/components/cfpb-expandables/index.js +1 -1
- package/dist/components/cfpb-expandables/index.js.map +3 -3
- package/dist/components/cfpb-forms/index.css +1 -1
- package/dist/components/cfpb-forms/index.css.map +2 -2
- package/dist/components/cfpb-forms/index.js +1 -1
- package/dist/components/cfpb-forms/index.js.map +2 -2
- package/dist/components/cfpb-layout/index.css +1 -1
- package/dist/components/cfpb-layout/index.css.map +1 -1
- package/dist/components/cfpb-notifications/index.css.map +1 -1
- package/dist/components/cfpb-pagination/index.css.map +1 -1
- package/dist/components/cfpb-tables/index.css.map +1 -1
- package/dist/components/cfpb-typography/index.css +1 -1
- package/dist/components/cfpb-typography/index.css.map +2 -2
- package/dist/components/cfpb-typography/index.js.map +1 -1
- package/dist/elements/cfpb-button/index.js +4 -4
- package/dist/elements/cfpb-button/index.js.map +3 -3
- package/dist/elements/cfpb-checkbox-icon/index.js +29 -0
- package/dist/elements/{cfpb-checkbox → cfpb-checkbox-icon}/index.js.map +4 -4
- package/dist/elements/cfpb-expandable/index.css +2 -0
- package/dist/elements/cfpb-expandable/index.css.map +7 -0
- package/dist/elements/cfpb-expandable/index.js +33 -0
- package/dist/elements/cfpb-expandable/index.js.map +7 -0
- package/dist/elements/cfpb-file-upload/index.js +4 -4
- package/dist/elements/cfpb-file-upload/index.js.map +3 -3
- package/dist/elements/cfpb-form-alert/index.js +32 -0
- package/dist/elements/cfpb-form-alert/index.js.map +7 -0
- package/dist/elements/cfpb-form-choice/index.js +12 -3
- package/dist/elements/cfpb-form-choice/index.js.map +4 -4
- package/dist/elements/cfpb-form-search/index.js +41 -0
- package/dist/elements/cfpb-form-search/index.js.map +7 -0
- package/dist/elements/cfpb-form-search-input/index.js +41 -0
- package/dist/elements/cfpb-form-search-input/index.js.map +7 -0
- package/dist/elements/cfpb-icon-text/index.js +3 -3
- package/dist/elements/cfpb-icon-text/index.js.map +3 -3
- package/dist/elements/cfpb-label/index.js +3 -3
- package/dist/elements/cfpb-label/index.js.map +2 -2
- package/dist/elements/cfpb-list/index.js +39 -0
- package/dist/elements/cfpb-list/index.js.map +7 -0
- package/dist/elements/cfpb-list-item/index.js +39 -0
- package/dist/elements/cfpb-list-item/index.js.map +7 -0
- package/dist/elements/cfpb-multiselect/index.js +13 -4
- package/dist/elements/cfpb-multiselect/index.js.map +4 -4
- package/dist/elements/cfpb-pagination/index.js +3 -3
- package/dist/elements/cfpb-pagination/index.js.map +2 -2
- package/dist/elements/cfpb-select/index.css +2 -0
- package/dist/elements/cfpb-select/index.css.map +7 -0
- package/dist/elements/cfpb-select/index.js +42 -0
- package/dist/elements/cfpb-select/index.js.map +7 -0
- package/dist/elements/cfpb-select-list/index.js +39 -0
- package/dist/elements/cfpb-select-list/index.js.map +7 -0
- package/dist/elements/cfpb-tag-filter/index.js +3 -3
- package/dist/elements/cfpb-tag-filter/index.js.map +3 -3
- package/dist/elements/cfpb-tag-group/index.js +3 -3
- package/dist/elements/cfpb-tag-group/index.js.map +4 -4
- package/dist/elements/cfpb-tag-topic/index.js +4 -4
- package/dist/elements/cfpb-tag-topic/index.js.map +2 -2
- package/dist/elements/index.css +2 -0
- package/dist/elements/index.css.map +7 -0
- package/dist/elements/index.js +7 -6
- package/dist/elements/index.js.map +4 -4
- package/dist/index.css +1 -1
- package/dist/index.css.map +2 -2
- package/dist/index.js +7 -6
- package/dist/index.js.map +4 -4
- package/dist/utilities/index.css.map +1 -1
- package/dist/utilities/index.js +1 -1
- package/dist/utilities/index.js.map +3 -3
- package/package.json +1 -1
- package/src/base/base.scss +1 -1
- package/src/components/cfpb-buttons/button-link.scss +0 -1
- package/src/components/cfpb-expandables/expandable.js +3 -0
- package/src/components/cfpb-forms/multiselect.js +1 -1
- package/src/components/cfpb-typography/mixins.scss +3 -0
- package/src/elements/abstracts/custom-props.css +123 -0
- package/src/elements/abstracts/grid-mixins.scss +83 -0
- package/src/elements/abstracts/heading-mixins.scss +346 -0
- package/src/elements/abstracts/index.scss +7 -0
- package/src/elements/abstracts/media-queries.scss +35 -0
- package/src/elements/abstracts/sizing-vars.scss +65 -0
- package/src/elements/abstracts/vars-breakpoints.scss +16 -0
- package/src/elements/abstracts/vars.css +79 -0
- package/src/elements/base/base.scss +375 -0
- package/src/elements/base/font.scss +27 -0
- package/src/elements/base/index.scss +3 -0
- package/src/elements/base/normalize.scss +290 -0
- package/src/elements/cfpb-button/cfpb-button-group.scss +10 -0
- package/src/elements/cfpb-button/cfpb-button-link.scss +96 -0
- package/src/elements/cfpb-button/cfpb-button.component.scss +11 -4
- package/src/elements/cfpb-button/cfpb-button.scss +222 -0
- package/src/elements/cfpb-button/index.js +28 -29
- package/src/elements/cfpb-button/vars.css +30 -0
- package/src/elements/cfpb-checkbox-icon/cfpb-checkbox-icon.component.scss +88 -0
- package/src/elements/cfpb-checkbox-icon/index.js +104 -0
- package/src/elements/cfpb-expandable/cfpb-expandable.component.scss +218 -0
- package/src/elements/cfpb-expandable/index.js +127 -0
- package/src/elements/cfpb-file-upload/cfpb-file-upload.component.scss +2 -2
- package/src/elements/cfpb-file-upload/index.js +16 -18
- package/src/elements/cfpb-form-alert/cfpb-form-alert.component.scss +36 -0
- package/src/elements/cfpb-form-alert/index.js +55 -0
- package/src/elements/cfpb-form-choice/cfpb-form-choice.component.scss +42 -81
- package/src/elements/cfpb-form-choice/index.js +58 -18
- package/src/elements/cfpb-form-search/cfpb-form-search.component.scss +54 -0
- package/src/elements/cfpb-form-search/index.js +194 -0
- package/src/elements/cfpb-form-search-input/cfpb-form-search-input.component.scss +217 -0
- package/src/elements/cfpb-form-search-input/index.js +136 -0
- package/src/elements/cfpb-icon-text/cfpb-icon-text.component.scss +32 -39
- package/src/elements/cfpb-icon-text/index.js +32 -104
- package/src/elements/cfpb-label/cfpb-label.component.scss +2 -2
- package/src/elements/cfpb-label/index.js +6 -9
- package/src/elements/cfpb-list/cfpb-list.component.scss +23 -0
- package/src/elements/cfpb-list/index.js +357 -0
- package/src/elements/cfpb-list/index.spec.js +169 -0
- package/src/elements/cfpb-list-item/cfpb-list-item.component.scss +69 -0
- package/src/elements/cfpb-list-item/index.js +215 -0
- package/src/elements/cfpb-pagination/cfpb-pagination.component.scss +2 -7
- package/src/elements/cfpb-pagination/index.js +6 -8
- package/src/elements/cfpb-select/cfpb-select.component.scss +241 -0
- package/src/elements/cfpb-select/index.js +381 -0
- package/src/elements/cfpb-tag-filter/cfpb-tag-filter.component.scss +6 -3
- package/src/elements/cfpb-tag-filter/index.js +15 -7
- package/src/elements/cfpb-tag-group/cfpb-tag-group.component.scss +2 -2
- package/src/elements/cfpb-tag-group/index.js +53 -6
- package/src/elements/cfpb-tag-topic/index.js +5 -7
- package/src/elements/cfpb-utilities/parse-child-data.js +50 -0
- package/src/elements/cfpb-utilities/parse-child-data.spec.js +56 -0
- package/src/elements/cfpb-utilities/search-service.js +46 -0
- package/src/elements/cfpb-utilities/search-service.spec.js +138 -0
- package/src/elements/cfpb-utilities/transition/transition.scss +98 -0
- package/src/elements/index.js +7 -1
- package/src/index.scss +11 -0
- package/src/tokens/abstracts/custom-props.json +1642 -0
- package/src/tokens/abstracts/vars.json +1319 -0
- package/src/tokens/cfpb-button/vars.json +436 -0
- package/src/utilities/transition/max-height-transition.js +74 -0
- package/dist/elements/cfpb-checkbox/index.js +0 -29
- package/src/elements/cfpb-multiselect/cfpb-multiselect.component.scss +0 -225
- package/src/elements/cfpb-multiselect/index.js +0 -444
- package/src/elements/cfpb-multiselect/multiselect-model.js +0 -288
- package/src/elements/cfpb-multiselect/multiselect-model.spec.js +0 -236
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
/*! normalize.css v2.1.3 | MIT License | git.io/normalize */
|
|
2
|
+
|
|
3
|
+
/* ==========================================================================
|
|
4
|
+
Base
|
|
5
|
+
========================================================================== */
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* 1. Set default font family to sans-serif.
|
|
9
|
+
* 2. Prevent iOS text size adjust after orientation change, without disabling
|
|
10
|
+
* user zoom.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
html {
|
|
14
|
+
font-family: sans-serif; /* 1 */
|
|
15
|
+
text-size-adjust: 100%; /* 2 */
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Remove default margin.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
body {
|
|
23
|
+
margin: 0;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* ==========================================================================
|
|
27
|
+
Links
|
|
28
|
+
========================================================================== */
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Address `outline` inconsistency between Chrome and other browsers.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
a:focus {
|
|
35
|
+
outline: thin dotted;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Improve readability when focused and also mouse hovered in all browsers.
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
a:active,
|
|
43
|
+
a:hover {
|
|
44
|
+
outline: 0;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* ==========================================================================
|
|
48
|
+
Typography
|
|
49
|
+
========================================================================== */
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Address variable `h1` font-size and margin within `section` and `article`
|
|
53
|
+
* contexts in Firefox 4+, Safari 5, and Chrome.
|
|
54
|
+
*/
|
|
55
|
+
|
|
56
|
+
h1 {
|
|
57
|
+
font-size: 2em;
|
|
58
|
+
margin: 0.67em 0;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Address differences between Firefox and other browsers.
|
|
63
|
+
*/
|
|
64
|
+
|
|
65
|
+
hr {
|
|
66
|
+
box-sizing: content-box;
|
|
67
|
+
height: 0;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Correct font family set oddly in Safari 5 and Chrome.
|
|
72
|
+
*/
|
|
73
|
+
|
|
74
|
+
code,
|
|
75
|
+
kbd,
|
|
76
|
+
pre,
|
|
77
|
+
samp {
|
|
78
|
+
font-family: monospace, serif;
|
|
79
|
+
font-size: 1em;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Improve readability of pre-formatted text in all browsers.
|
|
84
|
+
*/
|
|
85
|
+
|
|
86
|
+
pre {
|
|
87
|
+
white-space: pre-wrap;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Set consistent quote types.
|
|
92
|
+
*/
|
|
93
|
+
|
|
94
|
+
q {
|
|
95
|
+
quotes: '\201C' '\201D' '\2018' '\2019';
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Address inconsistent and variable font size in all browsers.
|
|
100
|
+
*/
|
|
101
|
+
|
|
102
|
+
small {
|
|
103
|
+
font-size: 80%;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
|
|
108
|
+
*/
|
|
109
|
+
|
|
110
|
+
sub,
|
|
111
|
+
sup {
|
|
112
|
+
font-size: 75%;
|
|
113
|
+
line-height: 0;
|
|
114
|
+
position: relative;
|
|
115
|
+
vertical-align: baseline;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
sup {
|
|
119
|
+
top: -0.5em;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
sub {
|
|
123
|
+
bottom: -0.25em;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/* ==========================================================================
|
|
127
|
+
Figures
|
|
128
|
+
========================================================================== */
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Address margin not present in IE 8/9 and Safari 5.
|
|
132
|
+
*/
|
|
133
|
+
|
|
134
|
+
figure {
|
|
135
|
+
margin: 0;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* ==========================================================================
|
|
139
|
+
Forms
|
|
140
|
+
========================================================================== */
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Define consistent border, margin, and padding.
|
|
144
|
+
*/
|
|
145
|
+
|
|
146
|
+
fieldset {
|
|
147
|
+
border: 1px solid #c0c0c0;
|
|
148
|
+
margin: 0 2px;
|
|
149
|
+
padding: 0.35em 0.625em 0.75em;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* 1. Correct `color` not being inherited in IE 8/9.
|
|
154
|
+
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
|
|
155
|
+
*/
|
|
156
|
+
|
|
157
|
+
legend {
|
|
158
|
+
border: 0; /* 1 */
|
|
159
|
+
padding: 0; /* 2 */
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* 1. Correct font family not being inherited in all browsers.
|
|
164
|
+
* 2. Correct font size not being inherited in all browsers.
|
|
165
|
+
* 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
|
|
166
|
+
*/
|
|
167
|
+
|
|
168
|
+
button,
|
|
169
|
+
input,
|
|
170
|
+
select,
|
|
171
|
+
textarea {
|
|
172
|
+
font-family: inherit; /* 1 */
|
|
173
|
+
font-size: 100%; /* 2 */
|
|
174
|
+
margin: 0; /* 3 */
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
|
|
179
|
+
* the UA stylesheet.
|
|
180
|
+
*/
|
|
181
|
+
|
|
182
|
+
button,
|
|
183
|
+
input {
|
|
184
|
+
line-height: normal;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Address inconsistent `text-transform` inheritance for `button` and `select`.
|
|
189
|
+
* All other form control elements do not inherit `text-transform` values.
|
|
190
|
+
* Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
|
|
191
|
+
* Correct `select` style inheritance in Firefox 4+ and Opera.
|
|
192
|
+
*/
|
|
193
|
+
|
|
194
|
+
button,
|
|
195
|
+
select {
|
|
196
|
+
text-transform: none;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
|
|
201
|
+
* and `video` controls.
|
|
202
|
+
* 2. Correct inability to style clickable `input` types in iOS.
|
|
203
|
+
* 3. Improve usability and consistency of cursor style between image-type
|
|
204
|
+
* `input` and others.
|
|
205
|
+
*/
|
|
206
|
+
|
|
207
|
+
button,
|
|
208
|
+
html input[type="button"], /* 1 */
|
|
209
|
+
input[type="reset"],
|
|
210
|
+
input[type="submit"] {
|
|
211
|
+
/* TODO: stylelint wants to convert `appearance: button` to `appearance: auto`
|
|
212
|
+
Investigate why. */
|
|
213
|
+
/* stylelint-disable */
|
|
214
|
+
appearance: button; /* 2 */
|
|
215
|
+
/* stylelint-enable */
|
|
216
|
+
cursor: pointer; /* 3 */
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Re-set default cursor for disabled elements.
|
|
221
|
+
*/
|
|
222
|
+
|
|
223
|
+
button[disabled],
|
|
224
|
+
html input[disabled] {
|
|
225
|
+
cursor: default;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* 1. Address box sizing set to `content-box` in IE 8/9/10.
|
|
230
|
+
* 2. Remove excess padding in IE 8/9/10.
|
|
231
|
+
*/
|
|
232
|
+
|
|
233
|
+
input[type='checkbox'],
|
|
234
|
+
input[type='radio'] {
|
|
235
|
+
box-sizing: border-box; /* 1 */
|
|
236
|
+
padding: 0; /* 2 */
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
|
|
241
|
+
* 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome.
|
|
242
|
+
*/
|
|
243
|
+
|
|
244
|
+
input[type='search'] {
|
|
245
|
+
appearance: textfield; /* 1 */
|
|
246
|
+
box-sizing: content-box; /* 2 */
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Remove inner padding and search cancel button in Safari 5 and Chrome
|
|
251
|
+
* on OS X.
|
|
252
|
+
*/
|
|
253
|
+
|
|
254
|
+
input[type='search']::-webkit-search-cancel-button,
|
|
255
|
+
input[type='search']::-webkit-search-decoration {
|
|
256
|
+
appearance: none;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Remove inner padding and border in Firefox 4+.
|
|
261
|
+
*/
|
|
262
|
+
|
|
263
|
+
button::-moz-focus-inner,
|
|
264
|
+
input::-moz-focus-inner {
|
|
265
|
+
border: 0;
|
|
266
|
+
padding: 0;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* 1. Remove default vertical scrollbar in IE 8/9.
|
|
271
|
+
* 2. Improve readability and alignment in all browsers.
|
|
272
|
+
*/
|
|
273
|
+
|
|
274
|
+
textarea {
|
|
275
|
+
overflow: auto; /* 1 */
|
|
276
|
+
vertical-align: top; /* 2 */
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/* ==========================================================================
|
|
280
|
+
Tables
|
|
281
|
+
========================================================================== */
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Remove most spacing between table cells.
|
|
285
|
+
*/
|
|
286
|
+
|
|
287
|
+
table {
|
|
288
|
+
border-collapse: collapse;
|
|
289
|
+
border-spacing: 0;
|
|
290
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
@use 'sass:math';
|
|
2
|
+
@use './vars' as *;
|
|
3
|
+
@use '@cfpb/cfpb-design-system/src/elements/abstracts' as *;
|
|
4
|
+
|
|
5
|
+
//
|
|
6
|
+
// Button link
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
/*
|
|
10
|
+
Link text and underline.
|
|
11
|
+
$v: Link link and visited color.
|
|
12
|
+
$h: Link hover color.
|
|
13
|
+
$f: Link focus color.
|
|
14
|
+
$a: Link active color.
|
|
15
|
+
*/
|
|
16
|
+
@mixin u-btn-link-states($selector, $v, $h, $f, $a) {
|
|
17
|
+
#{$selector} {
|
|
18
|
+
&,
|
|
19
|
+
&:link,
|
|
20
|
+
&:visited {
|
|
21
|
+
text-decoration-color: $v;
|
|
22
|
+
background-color: transparent;
|
|
23
|
+
color: $v;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
&:hover,
|
|
27
|
+
&.hover {
|
|
28
|
+
text-decoration-color: $h;
|
|
29
|
+
text-decoration-style: solid;
|
|
30
|
+
background-color: transparent;
|
|
31
|
+
color: $h;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
&:focus,
|
|
35
|
+
&.focus {
|
|
36
|
+
background-color: transparent;
|
|
37
|
+
outline: 1px dotted $f;
|
|
38
|
+
color: $f;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
&:active,
|
|
42
|
+
&.active {
|
|
43
|
+
text-decoration-color: $a;
|
|
44
|
+
text-decoration-style: solid;
|
|
45
|
+
background-color: transparent;
|
|
46
|
+
color: $a;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.a-btn--link {
|
|
52
|
+
// Padding added so the focus rectangle falls below the underline.
|
|
53
|
+
padding: 1.5px 0;
|
|
54
|
+
border-radius: 0;
|
|
55
|
+
text-decoration-line: underline;
|
|
56
|
+
text-decoration-thickness: 1px;
|
|
57
|
+
text-decoration-style: dotted;
|
|
58
|
+
text-underline-offset: 4.5px;
|
|
59
|
+
|
|
60
|
+
&:has(svg) {
|
|
61
|
+
// Button links should be closer to their icon.
|
|
62
|
+
gap: math.div(5px, $base-font-size-px) + rem;
|
|
63
|
+
|
|
64
|
+
// Button links shouldn't have a divider.
|
|
65
|
+
&::before {
|
|
66
|
+
display: none;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
@include u-btn-link-states(
|
|
72
|
+
'.a-btn--link',
|
|
73
|
+
var(--link-text),
|
|
74
|
+
var(--link-text-hover),
|
|
75
|
+
var(--link-text),
|
|
76
|
+
var(--link-text-active)
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
//
|
|
80
|
+
// Secondary button link
|
|
81
|
+
//
|
|
82
|
+
|
|
83
|
+
// The .a-btn--link.a-btn--secondary combo shouldn't be used,
|
|
84
|
+
// so we provide no styles.
|
|
85
|
+
|
|
86
|
+
//
|
|
87
|
+
// Destructive action button link
|
|
88
|
+
//
|
|
89
|
+
|
|
90
|
+
@include u-btn-link-states(
|
|
91
|
+
'.a-btn--link.a-btn--warning',
|
|
92
|
+
var(--btn-warning-bg),
|
|
93
|
+
var(--btn-warning-bg-hover),
|
|
94
|
+
var(--btn-warning-bg),
|
|
95
|
+
var(--btn-warning-bg-active)
|
|
96
|
+
);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
@use '@cfpb/cfpb-design-system/src/base' as *;
|
|
2
|
-
@use '@cfpb/cfpb-design-system/src/abstracts' as *;
|
|
3
|
-
@use '@cfpb/cfpb-design-system/src/
|
|
4
|
-
@use '@cfpb/cfpb-design-system/src/
|
|
1
|
+
@use '@cfpb/cfpb-design-system/src/elements/base' as *;
|
|
2
|
+
@use '@cfpb/cfpb-design-system/src/elements/abstracts' as *;
|
|
3
|
+
@use '@cfpb/cfpb-design-system/src/elements/cfpb-button/cfpb-button' as *;
|
|
4
|
+
@use '@cfpb/cfpb-design-system/src/elements/cfpb-button/cfpb-button-link' as *;
|
|
5
5
|
|
|
6
6
|
:host {
|
|
7
7
|
// This prevents the child button from having an empty gap after the button.
|
|
@@ -13,10 +13,16 @@
|
|
|
13
13
|
// Mobile only.
|
|
14
14
|
@include respond-to-max($bp-xs-max) {
|
|
15
15
|
width: 100%;
|
|
16
|
+
|
|
17
|
+
button,
|
|
18
|
+
[role='button'] {
|
|
19
|
+
width: 100%;
|
|
20
|
+
}
|
|
16
21
|
}
|
|
17
22
|
}
|
|
18
23
|
|
|
19
24
|
:host([flush-left]) {
|
|
25
|
+
button,
|
|
20
26
|
[role='button'] {
|
|
21
27
|
border-top-left-radius: 0;
|
|
22
28
|
border-bottom-left-radius: 0;
|
|
@@ -24,6 +30,7 @@
|
|
|
24
30
|
}
|
|
25
31
|
|
|
26
32
|
:host([flush-right]) {
|
|
33
|
+
button,
|
|
27
34
|
[role='button'] {
|
|
28
35
|
border-top-right-radius: 0;
|
|
29
36
|
border-bottom-right-radius: 0;
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
@use 'sass:math';
|
|
2
|
+
@use './vars' as *;
|
|
3
|
+
@use '@cfpb/cfpb-design-system/src/elements/abstracts' as *;
|
|
4
|
+
|
|
5
|
+
//
|
|
6
|
+
// Default button
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
button.a-btn::-moz-focus-inner,
|
|
10
|
+
input.a-btn::-moz-focus-inner {
|
|
11
|
+
// Fixes inconsistent button.btn height in Firefox.
|
|
12
|
+
// Helps with inconsistent input.btn height in Firefox but not completely.
|
|
13
|
+
border: 0;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@mixin u-btn-divider() {
|
|
17
|
+
content: '';
|
|
18
|
+
border-left: 1px solid var(--btn-divider);
|
|
19
|
+
order: 2;
|
|
20
|
+
place-self: normal;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.a-btn {
|
|
24
|
+
line-height: math.div(19px, $base-font-size-px);
|
|
25
|
+
appearance: none;
|
|
26
|
+
display: flex;
|
|
27
|
+
gap: math.div(10px, $base-font-size-px) + rem;
|
|
28
|
+
|
|
29
|
+
box-sizing: border-box;
|
|
30
|
+
padding: math.div($btn-v-padding, $btn-font-size) + em
|
|
31
|
+
math.div($btn-h-padding, $btn-font-size) + em;
|
|
32
|
+
border: 0;
|
|
33
|
+
margin: 0;
|
|
34
|
+
border-radius: math.div($btn-border-radius-size, $btn-font-size) + em;
|
|
35
|
+
cursor: pointer;
|
|
36
|
+
font-size: math.div($btn-font-size, $base-font-size-px) + em;
|
|
37
|
+
font-weight: 500;
|
|
38
|
+
text-align: center;
|
|
39
|
+
text-decoration: none;
|
|
40
|
+
transition: background-color 0.1s;
|
|
41
|
+
width: fit-content;
|
|
42
|
+
height: fit-content;
|
|
43
|
+
justify-content: center;
|
|
44
|
+
align-items: center;
|
|
45
|
+
|
|
46
|
+
&,
|
|
47
|
+
&:link,
|
|
48
|
+
&:visited {
|
|
49
|
+
background-color: var(--btn-bg);
|
|
50
|
+
color: var(--btn-text);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
&:hover,
|
|
54
|
+
&.hover,
|
|
55
|
+
&:focus,
|
|
56
|
+
&.focus {
|
|
57
|
+
background-color: var(--btn-bg-hover);
|
|
58
|
+
color: var(--btn-text);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
&:focus,
|
|
62
|
+
&.focus {
|
|
63
|
+
outline: 1px dotted var(--btn-bg);
|
|
64
|
+
|
|
65
|
+
// The outline-offset property is not supported everywhere (e.g. IE)
|
|
66
|
+
// but it adds a nice touch in browsers where it is.
|
|
67
|
+
outline-offset: 1px;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
&:active,
|
|
71
|
+
&.active {
|
|
72
|
+
background-color: var(--btn-bg-active);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
//
|
|
76
|
+
// Secondary button
|
|
77
|
+
//
|
|
78
|
+
|
|
79
|
+
&--secondary {
|
|
80
|
+
&,
|
|
81
|
+
&:link,
|
|
82
|
+
&:visited {
|
|
83
|
+
background-color: var(--btn-secondary-bg);
|
|
84
|
+
color: var(--btn-secondary-text);
|
|
85
|
+
box-shadow: 0 0 0 1px var(--btn-secondary-border) inset;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
&:hover,
|
|
89
|
+
&.hover,
|
|
90
|
+
&:focus,
|
|
91
|
+
&.focus {
|
|
92
|
+
background-color: var(--btn-secondary-bg-hover);
|
|
93
|
+
color: var(--btn-secondary-text-hover);
|
|
94
|
+
box-shadow: 0 0 0 1px var(--btn-secondary-border-hover) inset;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
&:focus,
|
|
98
|
+
&.focus {
|
|
99
|
+
outline-color: var(--btn-secondary-border);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
&:active,
|
|
103
|
+
&.active {
|
|
104
|
+
background-color: var(--btn-secondary-bg-active);
|
|
105
|
+
color: var(--btn-secondary-text-active);
|
|
106
|
+
box-shadow: 0 0 0 1px var(--btn-secondary-border-active) inset;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
//
|
|
111
|
+
// Destructive action button
|
|
112
|
+
//
|
|
113
|
+
|
|
114
|
+
&--warning {
|
|
115
|
+
&,
|
|
116
|
+
&:link,
|
|
117
|
+
&:visited {
|
|
118
|
+
background-color: var(--btn-warning-bg);
|
|
119
|
+
color: var(--btn-warning-text);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
&:hover,
|
|
123
|
+
&.hover,
|
|
124
|
+
&:focus,
|
|
125
|
+
&.focus {
|
|
126
|
+
background-color: var(--btn-warning-bg-hover);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
&:focus,
|
|
130
|
+
&.focus {
|
|
131
|
+
outline-color: var(--btn-warning-bg);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
&:active,
|
|
135
|
+
&.active {
|
|
136
|
+
background-color: var(--btn-warning-bg-active);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
//
|
|
141
|
+
// Disabled button
|
|
142
|
+
//
|
|
143
|
+
|
|
144
|
+
&--disabled,
|
|
145
|
+
&[disabled],
|
|
146
|
+
&[aria-disabled='true'] {
|
|
147
|
+
&,
|
|
148
|
+
&:link,
|
|
149
|
+
&:visited,
|
|
150
|
+
&:hover,
|
|
151
|
+
&.hover,
|
|
152
|
+
&:focus,
|
|
153
|
+
&.focus,
|
|
154
|
+
&:active,
|
|
155
|
+
&.active {
|
|
156
|
+
background-color: var(--btn-disabled-bg);
|
|
157
|
+
color: var(--btn-disabled-text);
|
|
158
|
+
cursor: default; // Fallback for IE/Opera
|
|
159
|
+
cursor: not-allowed;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
&:focus,
|
|
163
|
+
&.focus {
|
|
164
|
+
outline-color: var(--btn-disabled-outline);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
//
|
|
169
|
+
// Full width button on x-small screens
|
|
170
|
+
//
|
|
171
|
+
&--full-on-xs {
|
|
172
|
+
// Mobile only.
|
|
173
|
+
@include respond-to-max($bp-xs-max) {
|
|
174
|
+
width: 100%;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// Set either the text or icon as the last item in the button.
|
|
179
|
+
&:has(svg + span) {
|
|
180
|
+
span {
|
|
181
|
+
order: 3;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
&:has(span + svg) {
|
|
186
|
+
svg {
|
|
187
|
+
order: 3;
|
|
188
|
+
|
|
189
|
+
// Prevent icon from shrinking when button wraps.
|
|
190
|
+
flex: none;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// Handle button with icon divider logic.
|
|
195
|
+
&:not(.a-btn--hide-icon):has(svg + span)::before,
|
|
196
|
+
&:not(.a-btn--hide-icon):has(span + svg)::before {
|
|
197
|
+
@include u-btn-divider;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// Handle different coloring in divider.
|
|
201
|
+
&--secondary:has(svg)::before {
|
|
202
|
+
border-color: var(--btn-secondary-divider) !important;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
&--warning:has(svg)::before {
|
|
206
|
+
border-color: var(--btn-warning-divider) !important;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
&--disabled:has(svg)::before,
|
|
210
|
+
&[disabled]:has(svg)::before,
|
|
211
|
+
&[aria-disabled='true']:has(svg)::before {
|
|
212
|
+
border-color: var(--btn-disabled-divider) !important;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// Hide the icon if the a-btn--hide-icon modifier is set.
|
|
216
|
+
// Useful for showing and hiding a loading icon, for example.
|
|
217
|
+
&--hide-icon {
|
|
218
|
+
svg {
|
|
219
|
+
display: none;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|