@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.
Files changed (147) hide show
  1. package/CHANGELOG.md +178 -1
  2. package/dist/base/index.css +1 -1
  3. package/dist/base/index.css.map +2 -2
  4. package/dist/base/index.js.map +1 -1
  5. package/dist/components/cfpb-buttons/index.css +1 -1
  6. package/dist/components/cfpb-buttons/index.css.map +2 -2
  7. package/dist/components/cfpb-buttons/index.js.map +1 -1
  8. package/dist/components/cfpb-expandables/index.css.map +1 -1
  9. package/dist/components/cfpb-expandables/index.js +1 -1
  10. package/dist/components/cfpb-expandables/index.js.map +3 -3
  11. package/dist/components/cfpb-forms/index.css +1 -1
  12. package/dist/components/cfpb-forms/index.css.map +2 -2
  13. package/dist/components/cfpb-forms/index.js +1 -1
  14. package/dist/components/cfpb-forms/index.js.map +2 -2
  15. package/dist/components/cfpb-layout/index.css +1 -1
  16. package/dist/components/cfpb-layout/index.css.map +1 -1
  17. package/dist/components/cfpb-notifications/index.css.map +1 -1
  18. package/dist/components/cfpb-pagination/index.css.map +1 -1
  19. package/dist/components/cfpb-tables/index.css.map +1 -1
  20. package/dist/components/cfpb-typography/index.css +1 -1
  21. package/dist/components/cfpb-typography/index.css.map +2 -2
  22. package/dist/components/cfpb-typography/index.js.map +1 -1
  23. package/dist/elements/cfpb-button/index.js +4 -4
  24. package/dist/elements/cfpb-button/index.js.map +3 -3
  25. package/dist/elements/cfpb-checkbox-icon/index.js +29 -0
  26. package/dist/elements/{cfpb-checkbox → cfpb-checkbox-icon}/index.js.map +4 -4
  27. package/dist/elements/cfpb-expandable/index.css +2 -0
  28. package/dist/elements/cfpb-expandable/index.css.map +7 -0
  29. package/dist/elements/cfpb-expandable/index.js +33 -0
  30. package/dist/elements/cfpb-expandable/index.js.map +7 -0
  31. package/dist/elements/cfpb-file-upload/index.js +4 -4
  32. package/dist/elements/cfpb-file-upload/index.js.map +3 -3
  33. package/dist/elements/cfpb-form-alert/index.js +32 -0
  34. package/dist/elements/cfpb-form-alert/index.js.map +7 -0
  35. package/dist/elements/cfpb-form-choice/index.js +12 -3
  36. package/dist/elements/cfpb-form-choice/index.js.map +4 -4
  37. package/dist/elements/cfpb-form-search/index.js +41 -0
  38. package/dist/elements/cfpb-form-search/index.js.map +7 -0
  39. package/dist/elements/cfpb-form-search-input/index.js +41 -0
  40. package/dist/elements/cfpb-form-search-input/index.js.map +7 -0
  41. package/dist/elements/cfpb-icon-text/index.js +3 -3
  42. package/dist/elements/cfpb-icon-text/index.js.map +3 -3
  43. package/dist/elements/cfpb-label/index.js +3 -3
  44. package/dist/elements/cfpb-label/index.js.map +2 -2
  45. package/dist/elements/cfpb-list/index.js +39 -0
  46. package/dist/elements/cfpb-list/index.js.map +7 -0
  47. package/dist/elements/cfpb-list-item/index.js +39 -0
  48. package/dist/elements/cfpb-list-item/index.js.map +7 -0
  49. package/dist/elements/cfpb-multiselect/index.js +13 -4
  50. package/dist/elements/cfpb-multiselect/index.js.map +4 -4
  51. package/dist/elements/cfpb-pagination/index.js +3 -3
  52. package/dist/elements/cfpb-pagination/index.js.map +2 -2
  53. package/dist/elements/cfpb-select/index.css +2 -0
  54. package/dist/elements/cfpb-select/index.css.map +7 -0
  55. package/dist/elements/cfpb-select/index.js +42 -0
  56. package/dist/elements/cfpb-select/index.js.map +7 -0
  57. package/dist/elements/cfpb-select-list/index.js +39 -0
  58. package/dist/elements/cfpb-select-list/index.js.map +7 -0
  59. package/dist/elements/cfpb-tag-filter/index.js +3 -3
  60. package/dist/elements/cfpb-tag-filter/index.js.map +3 -3
  61. package/dist/elements/cfpb-tag-group/index.js +3 -3
  62. package/dist/elements/cfpb-tag-group/index.js.map +4 -4
  63. package/dist/elements/cfpb-tag-topic/index.js +4 -4
  64. package/dist/elements/cfpb-tag-topic/index.js.map +2 -2
  65. package/dist/elements/index.css +2 -0
  66. package/dist/elements/index.css.map +7 -0
  67. package/dist/elements/index.js +7 -6
  68. package/dist/elements/index.js.map +4 -4
  69. package/dist/index.css +1 -1
  70. package/dist/index.css.map +2 -2
  71. package/dist/index.js +7 -6
  72. package/dist/index.js.map +4 -4
  73. package/dist/utilities/index.css.map +1 -1
  74. package/dist/utilities/index.js +1 -1
  75. package/dist/utilities/index.js.map +3 -3
  76. package/package.json +1 -1
  77. package/src/base/base.scss +1 -1
  78. package/src/components/cfpb-buttons/button-link.scss +0 -1
  79. package/src/components/cfpb-expandables/expandable.js +3 -0
  80. package/src/components/cfpb-forms/multiselect.js +1 -1
  81. package/src/components/cfpb-typography/mixins.scss +3 -0
  82. package/src/elements/abstracts/custom-props.css +123 -0
  83. package/src/elements/abstracts/grid-mixins.scss +83 -0
  84. package/src/elements/abstracts/heading-mixins.scss +346 -0
  85. package/src/elements/abstracts/index.scss +7 -0
  86. package/src/elements/abstracts/media-queries.scss +35 -0
  87. package/src/elements/abstracts/sizing-vars.scss +65 -0
  88. package/src/elements/abstracts/vars-breakpoints.scss +16 -0
  89. package/src/elements/abstracts/vars.css +79 -0
  90. package/src/elements/base/base.scss +375 -0
  91. package/src/elements/base/font.scss +27 -0
  92. package/src/elements/base/index.scss +3 -0
  93. package/src/elements/base/normalize.scss +290 -0
  94. package/src/elements/cfpb-button/cfpb-button-group.scss +10 -0
  95. package/src/elements/cfpb-button/cfpb-button-link.scss +96 -0
  96. package/src/elements/cfpb-button/cfpb-button.component.scss +11 -4
  97. package/src/elements/cfpb-button/cfpb-button.scss +222 -0
  98. package/src/elements/cfpb-button/index.js +28 -29
  99. package/src/elements/cfpb-button/vars.css +30 -0
  100. package/src/elements/cfpb-checkbox-icon/cfpb-checkbox-icon.component.scss +88 -0
  101. package/src/elements/cfpb-checkbox-icon/index.js +104 -0
  102. package/src/elements/cfpb-expandable/cfpb-expandable.component.scss +218 -0
  103. package/src/elements/cfpb-expandable/index.js +127 -0
  104. package/src/elements/cfpb-file-upload/cfpb-file-upload.component.scss +2 -2
  105. package/src/elements/cfpb-file-upload/index.js +16 -18
  106. package/src/elements/cfpb-form-alert/cfpb-form-alert.component.scss +36 -0
  107. package/src/elements/cfpb-form-alert/index.js +55 -0
  108. package/src/elements/cfpb-form-choice/cfpb-form-choice.component.scss +42 -81
  109. package/src/elements/cfpb-form-choice/index.js +58 -18
  110. package/src/elements/cfpb-form-search/cfpb-form-search.component.scss +54 -0
  111. package/src/elements/cfpb-form-search/index.js +194 -0
  112. package/src/elements/cfpb-form-search-input/cfpb-form-search-input.component.scss +217 -0
  113. package/src/elements/cfpb-form-search-input/index.js +136 -0
  114. package/src/elements/cfpb-icon-text/cfpb-icon-text.component.scss +32 -39
  115. package/src/elements/cfpb-icon-text/index.js +32 -104
  116. package/src/elements/cfpb-label/cfpb-label.component.scss +2 -2
  117. package/src/elements/cfpb-label/index.js +6 -9
  118. package/src/elements/cfpb-list/cfpb-list.component.scss +23 -0
  119. package/src/elements/cfpb-list/index.js +357 -0
  120. package/src/elements/cfpb-list/index.spec.js +169 -0
  121. package/src/elements/cfpb-list-item/cfpb-list-item.component.scss +69 -0
  122. package/src/elements/cfpb-list-item/index.js +215 -0
  123. package/src/elements/cfpb-pagination/cfpb-pagination.component.scss +2 -7
  124. package/src/elements/cfpb-pagination/index.js +6 -8
  125. package/src/elements/cfpb-select/cfpb-select.component.scss +241 -0
  126. package/src/elements/cfpb-select/index.js +381 -0
  127. package/src/elements/cfpb-tag-filter/cfpb-tag-filter.component.scss +6 -3
  128. package/src/elements/cfpb-tag-filter/index.js +15 -7
  129. package/src/elements/cfpb-tag-group/cfpb-tag-group.component.scss +2 -2
  130. package/src/elements/cfpb-tag-group/index.js +53 -6
  131. package/src/elements/cfpb-tag-topic/index.js +5 -7
  132. package/src/elements/cfpb-utilities/parse-child-data.js +50 -0
  133. package/src/elements/cfpb-utilities/parse-child-data.spec.js +56 -0
  134. package/src/elements/cfpb-utilities/search-service.js +46 -0
  135. package/src/elements/cfpb-utilities/search-service.spec.js +138 -0
  136. package/src/elements/cfpb-utilities/transition/transition.scss +98 -0
  137. package/src/elements/index.js +7 -1
  138. package/src/index.scss +11 -0
  139. package/src/tokens/abstracts/custom-props.json +1642 -0
  140. package/src/tokens/abstracts/vars.json +1319 -0
  141. package/src/tokens/cfpb-button/vars.json +436 -0
  142. package/src/utilities/transition/max-height-transition.js +74 -0
  143. package/dist/elements/cfpb-checkbox/index.js +0 -29
  144. package/src/elements/cfpb-multiselect/cfpb-multiselect.component.scss +0 -225
  145. package/src/elements/cfpb-multiselect/index.js +0 -444
  146. package/src/elements/cfpb-multiselect/multiselect-model.js +0 -288
  147. package/src/elements/cfpb-multiselect/multiselect-model.spec.js +0 -236
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+
5
+ :host {
6
+ --beige: #bea96f;
7
+ --beige-30: #f0e8d8;
8
+ --beige-60: #d8c8a0;
9
+ --black: #101820;
10
+ --font-stack: system-ui, sans-serif;
11
+ --gold: #ff9e1b;
12
+ --gold-10: #fff6ec;
13
+ --gold-20: #fff0dd;
14
+ --gold-30: #ffe8cb;
15
+ --gold-40: #ffe1b9;
16
+ --gold-50: #ffd8a3;
17
+ --gold-60: #ffce8d;
18
+ --gold-70: #ffc372;
19
+ --gold-80: #ffb858;
20
+ --gold-90: #ffab39;
21
+ --gold-dark: #dc731c;
22
+ --gold-mid-dark: #ed881b;
23
+ --gray: #5a5d61;
24
+ --gray-10: #e7e8e9;
25
+ --gray-15: #dcdddf;
26
+ --gray-20: #d2d3d5;
27
+ --gray-30: #c3c4c4;
28
+ --gray-40: #b4b5b6;
29
+ --gray-5: #f7f8f9;
30
+ --gray-50: #a2a3a4;
31
+ --gray-60: #919395;
32
+ --gray-70: #838588;
33
+ --gray-80: #75787b;
34
+ --gray-90: #676a6f;
35
+ --gray-dark: #43484e;
36
+ --gray-darker: #293037;
37
+ --gray-mid-dark: #4f5257;
38
+ --green: #20aa3f;
39
+ --green-10: #f0f8eb;
40
+ --green-20: #e2efd8;
41
+ --green-30: #d4eac6;
42
+ --green-40: #c7e5b3;
43
+ --green-50: #bae0a2;
44
+ --green-60: #addc91;
45
+ --green-70: #93cf7c;
46
+ --green-80: #66c368;
47
+ --green-90: #48b753;
48
+ --green-dark: #1e9642;
49
+ --green-mid-dark: #1fa040;
50
+ --navy: #254b87;
51
+ --navy-10: #f4f6fa;
52
+ --navy-20: #d3daeb;
53
+ --navy-30: #c3cde2;
54
+ --navy-40: #b3c0d9;
55
+ --navy-50: #9daecc;
56
+ --navy-60: #889cc0;
57
+ --navy-70: #6f88b2;
58
+ --navy-80: #5674a3;
59
+ --navy-90: #3e5f95;
60
+ --navy-dark: #002d72;
61
+ --navy-mid-dark: #123c7c;
62
+ --neutral: #8a6c57;
63
+ --neutral-10: #f8f5f2;
64
+ --neutral-20: #e7ddd7;
65
+ --neutral-30: #ddd1c9;
66
+ --neutral-40: #d3c5bc;
67
+ --neutral-50: #c6b4a9;
68
+ --neutral-60: #baa496;
69
+ --neutral-70: #ad9484;
70
+ --neutral-80: #a18573;
71
+ --neutral-90: #957865;
72
+ --neutral-dark: #745745;
73
+ --neutral-mid-dark: #7d604b;
74
+ --pacific: #0072ce;
75
+ --pacific-10: #eff8fd;
76
+ --pacific-20: #d6e8fa;
77
+ --pacific-30: #c3ddf6;
78
+ --pacific-40: #afd2f2;
79
+ --pacific-50: #96c4ed;
80
+ --pacific-60: #7eb7e8;
81
+ --pacific-70: #61a7e2;
82
+ --pacific-80: #4497dc;
83
+ --pacific-90: #2284d5;
84
+ --pacific-dark: #0050b4;
85
+ --pacific-mid-dark: #0061c1;
86
+ --purple: #b4267a;
87
+ --purple-10: #fdf3f8;
88
+ --purple-20: #f0d8e2;
89
+ --purple-30: #ebc9d9;
90
+ --purple-40: #e3b2cc;
91
+ --purple-50: #dc9cbf;
92
+ --purple-60: #d486b2;
93
+ --purple-70: #cd70a5;
94
+ --purple-80: #c55998;
95
+ --purple-90: #be438b;
96
+ --purple-dark: #a01b68;
97
+ --purple-mid-dark: #aa2071;
98
+ --red: #d14124;
99
+ --red-10: #fbefec;
100
+ --red-20: #f7e0d9;
101
+ --red-30: #f3d1c8;
102
+ --red-40: #f0c3b8;
103
+ --red-50: #ebb0a3;
104
+ --red-60: #e79e8e;
105
+ --red-70: #e28875;
106
+ --red-80: #dd735d;
107
+ --red-90: #d75a40;
108
+ --red-dark: #b63014;
109
+ --red-mid-dark: #c3381c;
110
+ --teal: #257675;
111
+ --teal-10: #f0f7f6;
112
+ --teal-20: #d4e7e6;
113
+ --teal-30: #c4dddc;
114
+ --teal-40: #b4d2d1;
115
+ --teal-50: #9ec4c3;
116
+ --teal-60: #89b6b5;
117
+ --teal-70: #70a6a5;
118
+ --teal-80: #579695;
119
+ --teal-90: #3e8685;
120
+ --teal-dark: #005e5d;
121
+ --teal-mid-dark: #126b69;
122
+ --white: #ffffff;
123
+ }
@@ -0,0 +1,83 @@
1
+ @use 'sass:math';
2
+ @use './vars' as *;
3
+ @use './sizing-vars' as *;
4
+
5
+ /* ==========================================================================
6
+ Design System
7
+ Grid mixins
8
+ ========================================================================== */
9
+
10
+ //
11
+ // Wrapper
12
+ //
13
+
14
+ /* stylelint-disable selector-class-pattern */
15
+ @mixin u-grid-wrapper($grid-wrapper-width: $grid-wrapper-width) {
16
+ /* stylelint-enable */
17
+ max-width: ($grid-wrapper-width - $grid-gutter-width);
18
+ padding-right: math.div($grid-gutter-width, 2);
19
+ padding-left: math.div($grid-gutter-width, 2);
20
+ margin: 0 auto;
21
+ clear: both;
22
+ }
23
+
24
+ //
25
+ // Columns
26
+ //
27
+
28
+ /* stylelint-disable selector-class-pattern */
29
+ @mixin u-grid-column($columns: 1, $total: $grid-total-columns) {
30
+ /* stylelint-enable */
31
+ display: inline-block;
32
+ box-sizing: border-box;
33
+
34
+ // To calculate the percentage width of the base element, we take the number of
35
+ // columns it'll span and divide by the total number of columns. As columns are
36
+ // specified as inline-block elements, standard columns require no further math.
37
+ //
38
+ // num cols used
39
+ // column width in % = -------------
40
+ // total cols
41
+
42
+ width: math.percentage(math.div($columns, $total));
43
+
44
+ border: solid transparent;
45
+ border-width: 0 math.div($grid-gutter-width, 2);
46
+
47
+ // Remove whitespace caused by setting display to inline-block
48
+ margin-right: -0.25em;
49
+ vertical-align: top;
50
+ }
51
+
52
+ //
53
+ // Push and Pull mixins for source ordering
54
+ //
55
+
56
+ /* stylelint-disable selector-class-pattern */
57
+ @mixin u-grid-push($offset: 1, $grid-total-columns: $grid-total-columns) {
58
+ /* stylelint-enable */
59
+ $push: math.percentage(math.div($offset, $grid-total-columns));
60
+
61
+ position: relative;
62
+ left: $push;
63
+ }
64
+
65
+ /* stylelint-disable selector-class-pattern */
66
+ @mixin u-grid-pull($offset: 1, $grid-total-columns: $grid-total-columns) {
67
+ /* stylelint-enable */
68
+ $pull: math.percentage(math.div($offset, $grid-total-columns));
69
+
70
+ position: relative;
71
+ right: $pull;
72
+ }
73
+
74
+ //
75
+ // Nested columns
76
+ //
77
+
78
+ @mixin u-grid-nested-col-group() {
79
+ display: block;
80
+ position: relative;
81
+ margin-left: math.div($grid-gutter-width, 2) * -1;
82
+ margin-right: math.div($grid-gutter-width, 2) * -1;
83
+ }
@@ -0,0 +1,346 @@
1
+ @use 'sass:math';
2
+ @use './vars' as *;
3
+ @use './vars-breakpoints' as *;
4
+ @use './media-queries' as *;
5
+ @use './sizing-vars' as *;
6
+
7
+ /* ==========================================================================
8
+ Design System
9
+ Base styles
10
+ ========================================================================== */
11
+
12
+ @mixin heading-1(
13
+ $has-margin-bottom: true,
14
+ $has-margin-top: true,
15
+ $is-responsive: true
16
+ ) {
17
+ font-size: math.div($size-i, $base-font-size-px) + em;
18
+ font-size-adjust: var(--font-adjust-h1);
19
+ font-weight: 600;
20
+ letter-spacing: inherit;
21
+ line-height: 1.25;
22
+ text-transform: inherit;
23
+
24
+ @if $has-margin-bottom {
25
+ margin-bottom: math.div(15px, $size-i) + em;
26
+ }
27
+
28
+ @if $has-margin-top {
29
+ p + &,
30
+ ul + &,
31
+ ol + &,
32
+ dl + &,
33
+ figure + &,
34
+ img + &,
35
+ table + &,
36
+ blockquote + & {
37
+ margin-top: math.div(60px, $size-i) + em;
38
+ }
39
+
40
+ @if $is-responsive {
41
+ // Mobile only.
42
+ @include respond-to-max($bp-xs-max) {
43
+ p + &,
44
+ ul + &,
45
+ ol + &,
46
+ dl + &,
47
+ figure + &,
48
+ img + &,
49
+ table + &,
50
+ blockquote + & {
51
+ margin-top: math.div(45px, $size-ii) + em;
52
+ }
53
+ h2 + &,
54
+ .h2 + &,
55
+ h3 + &,
56
+ .h3 + &,
57
+ h4 + &,
58
+ .h4 + &,
59
+ h5 + &,
60
+ .h5 + &,
61
+ h6 + &,
62
+ .h6 + & {
63
+ margin-top: math.div(30px, $size-ii) + em;
64
+ }
65
+ }
66
+ }
67
+ }
68
+
69
+ @if $is-responsive {
70
+ // Mobile only.
71
+ @include respond-to-max($bp-xs-max) {
72
+ @include heading-2(
73
+ $has-margin-bottom,
74
+ $has-margin-top,
75
+ $is-responsive: false
76
+ );
77
+ }
78
+ }
79
+ }
80
+
81
+ @mixin heading-2(
82
+ $has-margin-bottom: true,
83
+ $has-margin-top: true,
84
+ $is-responsive: true,
85
+ $font-weight: 600
86
+ ) {
87
+ font-size: math.div($size-ii, $base-font-size-px) + em;
88
+ font-size-adjust: var(--font-adjust-h2);
89
+ font-weight: $font-weight;
90
+ letter-spacing: inherit;
91
+ line-height: 1.25;
92
+ text-transform: inherit;
93
+
94
+ @if $has-margin-bottom {
95
+ margin-bottom: math.div(15px, $size-ii) + em;
96
+ }
97
+
98
+ @if $has-margin-top {
99
+ p + &,
100
+ ul + &,
101
+ ol + &,
102
+ dl + &,
103
+ figure + &,
104
+ img + &,
105
+ table + &,
106
+ blockquote + & {
107
+ margin-top: math.div(45px, $size-ii) + em;
108
+ }
109
+
110
+ h1 + &,
111
+ .h1 + &,
112
+ h3 + &,
113
+ .h3 + &,
114
+ h4 + &,
115
+ .h4 + &,
116
+ h5 + &,
117
+ .h5 + &,
118
+ h6 + &,
119
+ .h6 + & {
120
+ margin-top: math.div(30px, $size-ii) + em;
121
+ }
122
+
123
+ @if $is-responsive {
124
+ // Mobile only.
125
+ @include respond-to-max($bp-xs-max) {
126
+ p + &,
127
+ ul + &,
128
+ ol + &,
129
+ dl + &,
130
+ figure + &,
131
+ img + &,
132
+ table + &,
133
+ blockquote + & {
134
+ margin-top: math.div(30px, $size-iii) + em;
135
+ }
136
+ }
137
+ }
138
+ }
139
+
140
+ @if $is-responsive {
141
+ // Mobile only.
142
+ @include respond-to-max($bp-xs-max) {
143
+ @include heading-3(
144
+ $has-margin-bottom,
145
+ $has-margin-top,
146
+ $is-responsive: false,
147
+ $font-weight: $font-weight
148
+ );
149
+ }
150
+ }
151
+ }
152
+
153
+ @mixin heading-3(
154
+ $has-margin-bottom: true,
155
+ $has-margin-top: true,
156
+ $is-responsive: true,
157
+ $font-weight: normal
158
+ ) {
159
+ font-size: math.div($size-iii, $base-font-size-px) + em;
160
+ font-size-adjust: var(--font-adjust-h3);
161
+ font-weight: $font-weight;
162
+ letter-spacing: inherit;
163
+ line-height: 1.25;
164
+ text-transform: inherit;
165
+
166
+ @if $has-margin-bottom {
167
+ margin-bottom: math.div(15px, $size-iii) + em;
168
+ }
169
+
170
+ @if $has-margin-top {
171
+ p + &,
172
+ ul + &,
173
+ ol + &,
174
+ dl + &,
175
+ figure + &,
176
+ img + &,
177
+ table + &,
178
+ blockquote + &,
179
+ h1 + &,
180
+ .h1 + &,
181
+ h2 + &,
182
+ .h2 + &,
183
+ h4 + &,
184
+ .h4 + &,
185
+ h5 + &,
186
+ .h5 + &,
187
+ h6 + &,
188
+ .h6 + & {
189
+ margin-top: math.div(30px, $size-iii) + em;
190
+ }
191
+ }
192
+
193
+ @if $is-responsive {
194
+ // Mobile only.
195
+ @include respond-to-max($bp-xs-max) {
196
+ @include heading-4(
197
+ $has-margin-bottom,
198
+ $has-margin-top,
199
+ $is-responsive: false,
200
+ $font-weight: $font-weight
201
+ );
202
+ }
203
+ }
204
+ }
205
+
206
+ @mixin heading-4(
207
+ $has-margin-bottom: true,
208
+ $has-margin-top: true,
209
+ $is-responsive: true,
210
+ $font-weight: 500
211
+ ) {
212
+ font-size: math.div($size-iv, $base-font-size-px) + em;
213
+ font-size-adjust: var(--font-adjust-h4);
214
+ font-weight: $font-weight;
215
+ letter-spacing: inherit;
216
+ line-height: 1.25;
217
+ text-transform: inherit;
218
+
219
+ @if $has-margin-bottom {
220
+ margin-bottom: math.div(15px, $size-iv) + em;
221
+ }
222
+
223
+ @if $has-margin-top {
224
+ p + &,
225
+ ul + &,
226
+ ol + &,
227
+ dl + &,
228
+ figure + &,
229
+ img + &,
230
+ table + &,
231
+ blockquote + &,
232
+ h1 + &,
233
+ .h1 + &,
234
+ h2 + &,
235
+ .h2 + &,
236
+ h3 + &,
237
+ .h3 + &,
238
+ h5 + &,
239
+ .h5 + &,
240
+ h6 + &,
241
+ .h6 + & {
242
+ margin-top: math.div(30px, $size-iv) + em;
243
+ }
244
+ }
245
+
246
+ @if $is-responsive {
247
+ // Mobile only.
248
+ @include respond-to-max($bp-xs-max) {
249
+ margin-bottom: math.div(10px, $base-font-size-px) + em;
250
+ font-size: 1em;
251
+ line-height: math.div(18px, $base-font-size-px);
252
+ }
253
+ }
254
+ }
255
+
256
+ @mixin heading-5($has-margin-bottom: true, $has-margin-top: true) {
257
+ font-size: math.div($size-v, $base-font-size-px) + em;
258
+ font-size-adjust: var(--font-adjust-h5);
259
+ font-weight: 600;
260
+ letter-spacing: 1px;
261
+ line-height: 1.25;
262
+ text-transform: uppercase;
263
+
264
+ @if $has-margin-bottom {
265
+ margin-bottom: math.div(15px, $size-v) + em;
266
+ }
267
+
268
+ @if $has-margin-top {
269
+ p + &,
270
+ ul + &,
271
+ ol + &,
272
+ dl + &,
273
+ figure + &,
274
+ img + &,
275
+ table + &,
276
+ blockquote + &,
277
+ h1 + &,
278
+ .h1 + &,
279
+ h2 + &,
280
+ .h2 + &,
281
+ h3 + &,
282
+ .h3 + &,
283
+ h4 + &,
284
+ .h4 + &,
285
+ h6 + &,
286
+ .h6 + & {
287
+ margin-top: math.div(30px, $size-v) + em;
288
+ }
289
+ }
290
+ }
291
+
292
+ @mixin heading-6($has-margin-bottom: true, $has-margin-top: true) {
293
+ font-size: math.div($size-vi, $base-font-size-px) + em;
294
+ font-size-adjust: var(--font-adjust-h6);
295
+ font-weight: 600;
296
+ letter-spacing: 1px;
297
+ line-height: 1.25;
298
+ text-transform: uppercase;
299
+
300
+ @if $has-margin-bottom {
301
+ margin-bottom: math.div(15px, $size-vi) + em;
302
+ }
303
+
304
+ @if $has-margin-top {
305
+ p + &,
306
+ ul + &,
307
+ ol + &,
308
+ dl + &,
309
+ figure + &,
310
+ img + &,
311
+ table + &,
312
+ blockquote + &,
313
+ h1 + &,
314
+ .h1 + &,
315
+ h2 + &,
316
+ .h2 + &,
317
+ h3 + &,
318
+ .h3 + &,
319
+ h4 + &,
320
+ .h4 + &,
321
+ h5 + &,
322
+ .h5 + & {
323
+ margin-top: math.div(30px, $size-vi) + em;
324
+ }
325
+ }
326
+ }
327
+
328
+ @mixin u-lead-paragraph() {
329
+ margin-top: 0;
330
+ margin-bottom: 15px;
331
+
332
+ @include heading-3(
333
+ $has-margin-bottom: false,
334
+ $has-margin-top: false,
335
+ $is-responsive: true,
336
+ $font-weight: normal
337
+ );
338
+ }
339
+
340
+ // For when you want a heading that's bigger than a normal H1.
341
+ @mixin u-superheading() {
342
+ margin-bottom: math.div(20px, $size-xl) + em;
343
+ font-size: math.div($size-xl, $base-font-size-px) + em;
344
+ font-weight: normal;
345
+ line-height: 1.25;
346
+ }
@@ -0,0 +1,7 @@
1
+ @forward 'custom-props';
2
+ @forward 'vars';
3
+ @forward 'vars-breakpoints';
4
+ @forward 'grid-mixins';
5
+ @forward 'heading-mixins';
6
+ @forward 'media-queries';
7
+ @forward 'sizing-vars';
@@ -0,0 +1,35 @@
1
+ @use 'sass:math';
2
+ @use './sizing-vars' as *;
3
+
4
+ /* ==========================================================================
5
+ Design System
6
+ Media queries
7
+ ========================================================================== */
8
+
9
+ //
10
+ // Media query mixins
11
+ //
12
+ @mixin respond-to-min($bp) {
13
+ $ems: math.div($bp, $base-font-size-px) + em;
14
+
15
+ @media only screen and (min-width: $ems) {
16
+ @content;
17
+ }
18
+ }
19
+
20
+ @mixin respond-to-max($bp) {
21
+ $ems: math.div($bp, $base-font-size-px) + em;
22
+
23
+ @media only screen and (max-width: $ems) {
24
+ @content;
25
+ }
26
+ }
27
+
28
+ @mixin respond-to-range($bp1, $bp2) {
29
+ $ems1: math.div($bp1, $base-font-size-px) + em;
30
+ $ems2: math.div($bp2, $base-font-size-px) + em;
31
+
32
+ @media only screen and (min-width: $ems1) and (max-width: $ems2) {
33
+ @content;
34
+ }
35
+ }
@@ -0,0 +1,65 @@
1
+ @use 'sass:math';
2
+
3
+ // Seperating sizing vars out because for now we are only doing JSON color tokens
4
+ // Putting these in a partial.
5
+ $base-font-size: 16;
6
+ $base-font-size-px: 16px;
7
+ $base-line-height-px: 22px;
8
+ $base-line-height: math.div($base-line-height-px, $base-font-size-px);
9
+ $btn-font-size: $base-font-size-px;
10
+ $btn-border-radius-size: 4px;
11
+ $btn-v-padding: 8px;
12
+ $btn-h-padding: 14px;
13
+ $size-xl: 48px; // Super-size
14
+ $size-i: 34px; // h1-size
15
+ $size-ii: 26px; // h2-size
16
+ $size-iii: 22px; // h3-size
17
+ $size-iv: 18px; // h4-size
18
+ $size-v: 14px; // h5-size
19
+ $size-vi: 12px; // h6-size
20
+ $size-code: 13px; // Custom size only for Mono code blocks
21
+
22
+ // Icons' SVG viewbox are a consistent 19px (h) x variable (w).
23
+ // The height matches the 19px rendered canvas of text set in Source Sans 3
24
+ // sized at 16px (19/16 = 1.1875).
25
+ $cf-icon-height: 1.1875em;
26
+
27
+ // Grid variables
28
+
29
+ $grid-wrapper-width: 1230px;
30
+ $grid-total-columns: 12;
31
+
32
+ // .a-select
33
+ $select-height: 35px;
34
+
35
+ // Featured Content Module sizing variables.
36
+ $fcm-visual-width: 270px;
37
+ $fcm-min-height: 220px;
38
+
39
+ :host {
40
+ // Typography normalization
41
+ --font-adjust-base: 0.517;
42
+ --font-adjust-step: 0.0054;
43
+
44
+ /* Derived font-size-adjust-values */
45
+ --font-adjust-h1: calc(
46
+ var(--font-size-adjust-base) + (5 * var(--font-adjust-step))
47
+ );
48
+ --font-adjust-h2: calc(
49
+ var(--font-size-adjust-base) + (4 * var(--font-adjust-step))
50
+ );
51
+ --font-adjust-h3: calc(
52
+ var(--font-size-adjust-base) + (3 * var(--font-adjust-step))
53
+ );
54
+ --font-adjust-h4: calc(
55
+ var(--font-size-adjust-base) + (2 * var(--font-adjust-step))
56
+ );
57
+ --font-adjust-h5: calc(
58
+ var(--font-size-adjust-base) + (1 * var(--font-adjust-step))
59
+ );
60
+ --font-adjust-h6: var(--font-adjust-base);
61
+ --font-adjust-body: var(--font-adjust-base);
62
+
63
+ // .a-select
64
+ --select-border-width-default: 1px;
65
+ }
@@ -0,0 +1,16 @@
1
+ /* ==========================================================================
2
+ Design System
3
+ Breakpoint variables.
4
+
5
+ NOTE: If any of the values in this file are adjusted,
6
+ they need to be adjusted in vars-breakpoints.js as well.
7
+ ========================================================================== */
8
+
9
+ $bp-xs-max: 600px;
10
+ $bp-sm-min: $bp-xs-max + 1px;
11
+ $bp-sm-max: 900px;
12
+ $bp-med-min: $bp-sm-max + 1px;
13
+ $bp-med-max: 1020px;
14
+ $bp-lg-min: $bp-med-max + 1px;
15
+ $bp-lg-max: 1230px;
16
+ $bp-xl-min: $bp-lg-max + 1px;