@usgb/forms 0.1.1 → 1.0.1

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 (61) hide show
  1. package/README.md +263 -71
  2. package/dist/forms-manifest.json +251 -0
  3. package/dist/index.js +1032 -31
  4. package/dist/src/contract/collectContext.d.ts +9 -0
  5. package/dist/src/contract/collectContext.d.ts.map +1 -0
  6. package/dist/src/contract/createStubAdapter.d.ts +9 -0
  7. package/dist/src/contract/createStubAdapter.d.ts.map +1 -0
  8. package/dist/src/contract/types.d.ts +90 -0
  9. package/dist/src/contract/types.d.ts.map +1 -0
  10. package/dist/src/definitions/consents.d.ts +37 -0
  11. package/dist/src/definitions/consents.d.ts.map +1 -0
  12. package/dist/src/definitions/fields.d.ts +19 -0
  13. package/dist/src/definitions/fields.d.ts.map +1 -0
  14. package/dist/src/definitions/index.d.ts +7 -0
  15. package/dist/src/definitions/index.d.ts.map +1 -0
  16. package/dist/src/definitions/manifest.d.ts +8 -0
  17. package/dist/src/definitions/manifest.d.ts.map +1 -0
  18. package/dist/src/definitions/types.d.ts +82 -0
  19. package/dist/src/definitions/types.d.ts.map +1 -0
  20. package/dist/src/form/FormShell.d.ts +10 -0
  21. package/dist/src/form/FormShell.d.ts.map +1 -0
  22. package/dist/src/form/RegisteredTextField.d.ts +14 -0
  23. package/dist/src/form/RegisteredTextField.d.ts.map +1 -0
  24. package/dist/src/form/UsgbForm.d.ts +25 -0
  25. package/dist/src/form/UsgbForm.d.ts.map +1 -0
  26. package/dist/src/form/chunkFields.d.ts +17 -0
  27. package/dist/src/form/chunkFields.d.ts.map +1 -0
  28. package/dist/src/form/kinds/LeadKindForm.d.ts +4 -0
  29. package/dist/src/form/kinds/LeadKindForm.d.ts.map +1 -0
  30. package/dist/src/form/kinds/NewsletterKindForm.d.ts +4 -0
  31. package/dist/src/form/kinds/NewsletterKindForm.d.ts.map +1 -0
  32. package/dist/src/form/kinds/index.d.ts +6 -0
  33. package/dist/src/form/kinds/index.d.ts.map +1 -0
  34. package/dist/src/form/kinds/types.d.ts +11 -0
  35. package/dist/src/form/kinds/types.d.ts.map +1 -0
  36. package/dist/src/form/useUsgbFormSession.d.ts +41 -0
  37. package/dist/src/form/useUsgbFormSession.d.ts.map +1 -0
  38. package/dist/src/index.d.ts +14 -0
  39. package/dist/src/index.d.ts.map +1 -0
  40. package/dist/src/ui/Button.d.ts +7 -0
  41. package/dist/src/ui/Button.d.ts.map +1 -0
  42. package/dist/src/ui/ConsentField.d.ts +9 -0
  43. package/dist/src/ui/ConsentField.d.ts.map +1 -0
  44. package/dist/src/ui/FieldError.d.ts +8 -0
  45. package/dist/src/ui/FieldError.d.ts.map +1 -0
  46. package/dist/src/ui/FieldLabel.d.ts +9 -0
  47. package/dist/src/ui/FieldLabel.d.ts.map +1 -0
  48. package/dist/src/ui/TextField.d.ts +19 -0
  49. package/dist/src/ui/TextField.d.ts.map +1 -0
  50. package/dist/src/ui/icons.d.ts +4 -0
  51. package/dist/src/ui/icons.d.ts.map +1 -0
  52. package/dist/usgb-forms.1.0.1.js +44 -0
  53. package/dist/usgb-forms.css +596 -0
  54. package/dist/usgb-forms.js +44 -0
  55. package/forms-manifest.json +251 -0
  56. package/package.json +63 -58
  57. package/dist/index.cjs +0 -64
  58. package/dist/index.cjs.map +0 -1
  59. package/dist/index.d.cts +0 -15
  60. package/dist/index.d.ts +0 -15
  61. package/dist/index.js.map +0 -1
@@ -0,0 +1,596 @@
1
+ /* Ported PWA form design tokens — used subset from magento-frontend
2
+ styles/variables.css. Hosts override semantic --usgb-* vars or classes
3
+ on .usgb-form (see README). */
4
+
5
+ .usgb-form {
6
+ --usgb-primary: #ffffff;
7
+ --usgb-secondary: #000000;
8
+ --usgb-text-base: #001f3d;
9
+ --usgb-grey-1: #4d4d4d;
10
+ --usgb-grey-2: #7d7d7d;
11
+ --usgb-grey-3: #aba9a9;
12
+ --usgb-grey-4: #d9d9d9;
13
+ --usgb-grey-6: #f2f2f2;
14
+ --usgb-grey-9: #828282;
15
+ /* Figma calls this "Gray 4"; renamed to avoid colliding with
16
+ "Greyscale/Grey 4" (--usgb-grey-4), which is a different value. */
17
+ --usgb-disabled: #bdbdbd;
18
+ --usgb-gold-1: #6d4b0f;
19
+ --usgb-alert-danger: #e61b1b;
20
+ --usgb-blue-1: #001f3d;
21
+ --usgb-hover: #5caad6;
22
+ --usgb-sidebar-field-text: #333333;
23
+ --usgb-sidebar-link: #275582;
24
+ --usgb-font-primary: 'Montserrat', -apple-system, BlinkMacSystemFont,
25
+ 'Helvetica Neue', Helvetica, sans-serif;
26
+ --usgb-font-secondary: 'Kameron', Georgia, 'Times New Roman', serif;
27
+ --usgb-outline-focused: 2px solid var(--usgb-gold-1);
28
+
29
+ --usgb-form-content: var(--usgb-text-base);
30
+ --usgb-form-muted: var(--usgb-grey-1);
31
+ --usgb-field-label: var(--usgb-grey-1);
32
+ --usgb-field-background: var(--usgb-primary);
33
+ --usgb-field-border: var(--usgb-secondary);
34
+ --usgb-field-text: var(--usgb-secondary);
35
+ --usgb-field-placeholder: var(--usgb-grey-3);
36
+ --usgb-link: var(--usgb-blue-1);
37
+ --usgb-link-hover: var(--usgb-hover);
38
+ --usgb-checkbox-background: var(--usgb-primary);
39
+ --usgb-checkbox-border: var(--usgb-secondary);
40
+ --usgb-checkbox-mark: var(--usgb-gold-1);
41
+ --usgb-button-background: var(--usgb-blue-1);
42
+ --usgb-button-text: var(--usgb-primary);
43
+ --usgb-button-hover-background: var(--usgb-hover);
44
+ --usgb-button-disabled-background: var(--usgb-disabled);
45
+ --usgb-button-disabled-text: var(--usgb-primary);
46
+ --usgb-newsletter-underline: var(--usgb-blue-1);
47
+
48
+ --usgb-group-gap: 1.5rem;
49
+ --usgb-grid-gap: 1rem;
50
+ --usgb-grid-margin-bottom: 0;
51
+ --usgb-heading-font-size: 1.75rem;
52
+ --usgb-heading-font-weight: 700;
53
+ --usgb-heading-line-height: 1.2;
54
+ --usgb-heading-letter-spacing: 0;
55
+ --usgb-heading-transform: none;
56
+ --usgb-heading-margin: 0 0 0.75rem;
57
+ --usgb-subheading-font-size: 0.875rem;
58
+ --usgb-subheading-line-height: 1.5rem;
59
+ --usgb-subheading-margin: 0 0 1.25rem;
60
+ --usgb-label-margin-bottom: 0.375rem;
61
+ --usgb-label-font-size: 0.75rem;
62
+ --usgb-label-font-weight: 700;
63
+ --usgb-label-letter-spacing: 0.5px;
64
+ --usgb-label-line-height: 0.875rem;
65
+ --usgb-label-transform: uppercase;
66
+ --usgb-field-padding: 0.875rem 0.9375rem;
67
+ --usgb-field-font-size: 0.75rem;
68
+ --usgb-field-font-weight: 500;
69
+ --usgb-field-line-height: 1.125rem;
70
+ --usgb-field-letter-spacing: -0.25px;
71
+ --usgb-field-margin-bottom: 0.375rem;
72
+ --usgb-field-radius: 0;
73
+ --usgb-field-min-height: auto;
74
+ --usgb-field-transform: none;
75
+ --usgb-placeholder-transform: none;
76
+ --usgb-error-font-size: 0.75rem;
77
+ --usgb-error-line-height: 1.125rem;
78
+ --usgb-error-margin-top: 0;
79
+ --usgb-consent-gap: 0;
80
+ --usgb-consent-margin-bottom: 0.75rem;
81
+ --usgb-checkbox-size: 1.25rem;
82
+ --usgb-checkbox-margin: 0.125rem 0.625rem 0 0;
83
+ --usgb-consent-font-size: 0.875rem;
84
+ --usgb-consent-font-weight: 400;
85
+ --usgb-consent-line-height: 1rem;
86
+ --usgb-consent-color: var(--usgb-form-content);
87
+ --usgb-consent-transform: none;
88
+ --usgb-button-padding: 0.625rem 1.875rem;
89
+ --usgb-button-min-height: 2.1875rem;
90
+ --usgb-button-radius: 3.125rem;
91
+ --usgb-button-font-size: 0.75rem;
92
+ --usgb-button-font-weight: 700;
93
+ --usgb-button-line-height: 0.875rem;
94
+ --usgb-button-letter-spacing: 0.5px;
95
+ --usgb-button-width: 100%;
96
+
97
+ box-sizing: border-box;
98
+ font-family: var(--usgb-font-primary);
99
+ color: var(--usgb-form-content);
100
+ width: 100%;
101
+
102
+ /* Hosts drop this form into sidebars and multi-column blocks, so its own
103
+ width — not the viewport's — decides how many fields fit per row. */
104
+ container: usgb-form / inline-size;
105
+ }
106
+
107
+ .usgb-form *,
108
+ .usgb-form *::before,
109
+ .usgb-form *::after {
110
+ box-sizing: border-box;
111
+ }
112
+
113
+ /* Layout */
114
+
115
+ .usgb-form .usgb-form-group {
116
+ margin-bottom: var(--usgb-group-gap);
117
+ }
118
+
119
+ .usgb-form .usgb-form-grid {
120
+ display: grid;
121
+ grid-template-columns: 1fr;
122
+ gap: var(--usgb-grid-gap);
123
+ margin-bottom: var(--usgb-grid-margin-bottom);
124
+ }
125
+
126
+ /* Name row only — do not stack form-group margin on top of grid gap. */
127
+ .usgb-form .usgb-form-grid > .usgb-form-group {
128
+ margin-bottom: 0;
129
+ }
130
+
131
+ @container usgb-form (min-width: 20rem) {
132
+ .usgb-form[data-variant~='two-column'] .usgb-form-grid {
133
+ grid-template-columns: 1fr 1fr;
134
+ }
135
+ }
136
+
137
+ /* Safari < 16 / Firefox < 110 have no container queries; fall back to the
138
+ viewport so those browsers still get a two-up name row on desktop. */
139
+ @supports not (container-type: inline-size) {
140
+ @media (min-width: 768px) {
141
+ .usgb-form[data-variant~='two-column'] .usgb-form-grid {
142
+ grid-template-columns: 1fr 1fr;
143
+ }
144
+ }
145
+ }
146
+
147
+ /* Heading, subheading, status */
148
+
149
+ .usgb-form .usgb-form-heading {
150
+ font-family: var(--usgb-font-secondary);
151
+ font-size: var(--usgb-heading-font-size);
152
+ font-weight: var(--usgb-heading-font-weight);
153
+ line-height: var(--usgb-heading-line-height);
154
+ letter-spacing: var(--usgb-heading-letter-spacing);
155
+ text-transform: var(--usgb-heading-transform);
156
+ margin: var(--usgb-heading-margin);
157
+ color: var(--usgb-form-content);
158
+ }
159
+
160
+ .usgb-form .usgb-form-subheading {
161
+ font-size: var(--usgb-subheading-font-size);
162
+ line-height: var(--usgb-subheading-line-height);
163
+ margin: var(--usgb-subheading-margin);
164
+ color: var(--usgb-form-muted);
165
+ }
166
+
167
+ .usgb-form .usgb-form-status {
168
+ margin-top: 1rem;
169
+ font-size: 0.875rem;
170
+ line-height: 1.5rem;
171
+ }
172
+
173
+ .usgb-form .usgb-form-status-success {
174
+ color: var(--usgb-form-content);
175
+ }
176
+
177
+ .usgb-form .usgb-form-status-error {
178
+ color: var(--usgb-alert-danger);
179
+ }
180
+
181
+ /* Field label */
182
+
183
+ .usgb-form .usgb-field-label {
184
+ display: block;
185
+ margin-bottom: var(--usgb-label-margin-bottom);
186
+ color: var(--usgb-field-label);
187
+ font-size: var(--usgb-label-font-size);
188
+ letter-spacing: var(--usgb-label-letter-spacing);
189
+ line-height: var(--usgb-label-line-height);
190
+ font-weight: var(--usgb-label-font-weight);
191
+ text-transform: var(--usgb-label-transform);
192
+ }
193
+
194
+ .usgb-form .usgb-field-label-asterisk {
195
+ margin-left: 0.125rem;
196
+ color: var(--usgb-alert-danger);
197
+ }
198
+
199
+ /* Dense: no visible field labels; labels stay in the a11y tree via sr-only. */
200
+ .usgb-form .usgb-field-label--sr-only {
201
+ position: absolute;
202
+ width: 1px;
203
+ height: 1px;
204
+ padding: 0;
205
+ margin: -1px;
206
+ overflow: hidden;
207
+ clip: rect(0, 0, 0, 0);
208
+ white-space: nowrap;
209
+ border: 0;
210
+ }
211
+
212
+ /* Text inputs */
213
+
214
+ .usgb-form .usgb-field-control {
215
+ appearance: none;
216
+ width: 100%;
217
+ border: 1px solid var(--usgb-field-border);
218
+ background: var(--usgb-field-background);
219
+ color: var(--usgb-field-text);
220
+ padding: var(--usgb-field-padding);
221
+ font-family: inherit;
222
+ font-weight: var(--usgb-field-font-weight);
223
+ font-size: var(--usgb-field-font-size);
224
+ line-height: var(--usgb-field-line-height);
225
+ letter-spacing: var(--usgb-field-letter-spacing);
226
+ margin-bottom: var(--usgb-field-margin-bottom);
227
+ border-radius: var(--usgb-field-radius);
228
+ min-height: var(--usgb-field-min-height);
229
+ text-transform: var(--usgb-field-transform);
230
+ }
231
+
232
+ @media (pointer: coarse) {
233
+ .usgb-form .usgb-field-control {
234
+ font-size: max(1rem, var(--usgb-field-font-size));
235
+ }
236
+ }
237
+
238
+ .usgb-form .usgb-field-control::placeholder {
239
+ color: var(--usgb-field-placeholder);
240
+ text-transform: var(--usgb-placeholder-transform);
241
+ }
242
+
243
+ /* Inset shadow rather than a wider border, so thickening the focus ring to
244
+ the designed 2px does not shift the field by a pixel. */
245
+ .usgb-form .usgb-field-control:focus {
246
+ border-color: var(--usgb-gold-1);
247
+ box-shadow: inset 0 0 0 1px var(--usgb-gold-1);
248
+ outline: none;
249
+ }
250
+
251
+ .usgb-form .usgb-field-control.usgb-field-invalid {
252
+ border-color: var(--usgb-alert-danger);
253
+ box-shadow: none;
254
+ outline: none;
255
+ }
256
+
257
+ .usgb-form .usgb-field-control:disabled {
258
+ outline: none;
259
+ border-color: var(--usgb-grey-9);
260
+ }
261
+
262
+ /* Errors */
263
+
264
+ .usgb-form .usgb-field-error {
265
+ color: var(--usgb-form-muted);
266
+ font-size: var(--usgb-error-font-size);
267
+ font-weight: 500;
268
+ line-height: var(--usgb-error-line-height);
269
+ letter-spacing: -0.015625rem;
270
+ display: inline-flex;
271
+ align-items: center;
272
+ gap: 0.625rem;
273
+ margin-top: var(--usgb-error-margin-top);
274
+ }
275
+
276
+ .usgb-form .usgb-field-error-icon {
277
+ width: 0.75rem;
278
+ height: 0.75rem;
279
+ min-width: 0.75rem;
280
+ flex-shrink: 0;
281
+ color: var(--usgb-alert-danger);
282
+ }
283
+
284
+ /* Consent checkboxes and clickwrap notices */
285
+
286
+ .usgb-form .usgb-consent-row {
287
+ display: flex;
288
+ align-items: flex-start;
289
+ gap: var(--usgb-consent-gap);
290
+ margin-bottom: var(--usgb-consent-margin-bottom);
291
+ }
292
+
293
+ .usgb-form .usgb-form-checkbox-wrap {
294
+ position: relative;
295
+ display: inline-flex;
296
+ flex-shrink: 0;
297
+ align-self: flex-start;
298
+ margin: var(--usgb-checkbox-margin);
299
+ }
300
+
301
+ .usgb-form .usgb-form-checkbox {
302
+ min-width: var(--usgb-checkbox-size);
303
+ height: var(--usgb-checkbox-size);
304
+ width: var(--usgb-checkbox-size);
305
+ appearance: none;
306
+ border: 1px solid var(--usgb-checkbox-border);
307
+ background-color: var(--usgb-checkbox-background);
308
+ border-radius: 0;
309
+ margin: 0;
310
+ flex-shrink: 0;
311
+ }
312
+
313
+ .usgb-form .usgb-form-checkbox-mark {
314
+ position: absolute;
315
+ inset: 0;
316
+ margin: auto;
317
+ width: 0.625rem;
318
+ height: 0.4375rem;
319
+ color: var(--usgb-checkbox-mark);
320
+ pointer-events: none;
321
+ opacity: 0;
322
+ }
323
+
324
+ .usgb-form .usgb-form-checkbox:checked + .usgb-form-checkbox-mark {
325
+ opacity: 1;
326
+ }
327
+
328
+ .usgb-form .usgb-consent-copy {
329
+ font-size: var(--usgb-consent-font-size);
330
+ font-weight: var(--usgb-consent-font-weight);
331
+ line-height: var(--usgb-consent-line-height);
332
+ color: var(--usgb-consent-color);
333
+ text-transform: var(--usgb-consent-transform);
334
+ }
335
+
336
+ .usgb-form .usgb-consent-notice {
337
+ margin: 0 0 var(--usgb-consent-margin-bottom);
338
+ }
339
+
340
+ .usgb-form .usgb-consent-copy a {
341
+ color: var(--usgb-link);
342
+ text-decoration: underline;
343
+ }
344
+
345
+ .usgb-form .usgb-consent-copy a:hover {
346
+ color: var(--usgb-link-hover);
347
+ }
348
+
349
+ /* Primary button (ported from pylot-ui Button primary) */
350
+
351
+ .usgb-form .usgb-btn {
352
+ cursor: pointer;
353
+ display: inline-flex;
354
+ padding: var(--usgb-button-padding);
355
+ min-height: var(--usgb-button-min-height);
356
+ border-radius: var(--usgb-button-radius);
357
+ line-height: var(--usgb-button-line-height);
358
+ transition: background-color 150ms ease-in-out, color 150ms ease-in-out,
359
+ border-color 150ms ease-in-out;
360
+ font-weight: var(--usgb-button-font-weight);
361
+ text-align: center;
362
+ justify-content: center;
363
+ align-items: center;
364
+ text-transform: uppercase;
365
+ letter-spacing: var(--usgb-button-letter-spacing);
366
+ border: 1px solid transparent;
367
+ font-family: inherit;
368
+ font-size: var(--usgb-button-font-size);
369
+ width: var(--usgb-button-width);
370
+ }
371
+
372
+ .usgb-form .usgb-btn-primary {
373
+ background: var(--usgb-button-background);
374
+ color: var(--usgb-button-text);
375
+ border-color: var(--usgb-button-background);
376
+ }
377
+
378
+ .usgb-form .usgb-btn-primary:hover:not(:disabled) {
379
+ background: var(--usgb-button-hover-background);
380
+ color: var(--usgb-button-text);
381
+ border-color: var(--usgb-button-hover-background);
382
+ }
383
+
384
+ .usgb-form .usgb-btn:focus {
385
+ outline: none;
386
+ }
387
+
388
+ .usgb-form .usgb-btn:focus-visible {
389
+ outline: var(--usgb-outline-focused);
390
+ }
391
+
392
+ .usgb-form .usgb-btn:disabled {
393
+ cursor: not-allowed;
394
+ pointer-events: none;
395
+ }
396
+
397
+ .usgb-form .usgb-btn-primary:disabled {
398
+ background: var(--usgb-button-disabled-background);
399
+ color: var(--usgb-button-disabled-text);
400
+ border-color: var(--usgb-button-disabled-background);
401
+ }
402
+
403
+ /* Appearances — recolor only for readability on a light or dark host
404
+ surface. Never set background, padding, or border-radius; the host
405
+ container owns those. */
406
+
407
+ .usgb-form[data-appearance='on-dark'] {
408
+ --usgb-form-content: var(--usgb-primary);
409
+ --usgb-form-muted: var(--usgb-primary);
410
+ --usgb-field-label: var(--usgb-primary);
411
+ --usgb-field-border: var(--usgb-grey-3);
412
+ --usgb-link: var(--usgb-primary);
413
+ --usgb-link-hover: var(--usgb-primary);
414
+ --usgb-checkbox-border: var(--usgb-grey-4);
415
+ --usgb-button-background: var(--usgb-primary);
416
+ --usgb-button-text: var(--usgb-blue-1);
417
+ --usgb-button-hover-background: var(--usgb-primary);
418
+ --usgb-button-disabled-background: var(--usgb-grey-2);
419
+ --usgb-button-disabled-text: var(--usgb-grey-6);
420
+ --usgb-newsletter-underline: var(--usgb-primary);
421
+ }
422
+
423
+ /* Inverse hover keeps the white fill and gains a 3px ring. Two of those
424
+ pixels are an inset shadow over the 1px border so the button does not
425
+ change size between rest and hover. */
426
+ .usgb-form[data-appearance='on-dark'] .usgb-btn-primary:hover:not(:disabled) {
427
+ border-color: var(--usgb-hover);
428
+ box-shadow: inset 0 0 0 2px var(--usgb-hover);
429
+ }
430
+
431
+ /* Variants */
432
+
433
+ .usgb-form[data-variant~='dense'] {
434
+ --usgb-group-gap: 1.25rem;
435
+ --usgb-grid-gap: 1rem;
436
+ --usgb-grid-margin-bottom: 1.25rem;
437
+ --usgb-consent-font-size: 0.75rem;
438
+ --usgb-consent-font-weight: 400;
439
+ --usgb-consent-line-height: 1.4;
440
+ --usgb-consent-transform: none;
441
+ }
442
+
443
+ /* Compact blog/sidebar kit — match live HubSpot density, design-sheet tokens. */
444
+ .usgb-form[data-variant~='sidebar'] {
445
+ --usgb-field-text: var(--usgb-sidebar-field-text);
446
+ --usgb-group-gap: 0.625rem;
447
+ --usgb-grid-gap: 0.625rem;
448
+ --usgb-grid-margin-bottom: 0.625rem;
449
+ --usgb-heading-font-size: 1.25rem;
450
+ --usgb-heading-line-height: 1.25;
451
+ --usgb-heading-margin: 0 0 0.5rem;
452
+ --usgb-subheading-font-size: 0.75rem;
453
+ --usgb-subheading-line-height: 1.25rem;
454
+ --usgb-subheading-margin: 0 0 0.625rem;
455
+ --usgb-field-min-height: 1.875rem;
456
+ --usgb-field-padding: 0.25rem 0.9375rem;
457
+ --usgb-field-font-size: 0.8125rem;
458
+ --usgb-field-font-weight: 400;
459
+ --usgb-field-line-height: 1.25rem;
460
+ --usgb-field-letter-spacing: 0;
461
+ --usgb-field-margin-bottom: 0;
462
+ --usgb-error-font-size: 0.6875rem;
463
+ --usgb-error-line-height: 1rem;
464
+ --usgb-error-margin-top: 0.125rem;
465
+ --usgb-consent-gap: 0.5rem;
466
+ --usgb-consent-margin-bottom: 0.125rem;
467
+ --usgb-checkbox-size: 1.125rem;
468
+ --usgb-checkbox-margin: 0.125rem 0 0;
469
+ --usgb-consent-font-size: 0.6875rem;
470
+ --usgb-consent-font-weight: 400;
471
+ --usgb-consent-line-height: 1.4;
472
+ --usgb-consent-color: var(--usgb-grey-1);
473
+ }
474
+
475
+ .usgb-form[data-variant~='sidebar'][data-appearance='on-light'] {
476
+ --usgb-field-border: var(--usgb-grey-4);
477
+ --usgb-link: var(--usgb-sidebar-link);
478
+ }
479
+
480
+ .usgb-form[data-variant~='sidebar'][data-appearance='on-dark'] {
481
+ --usgb-consent-color: var(--usgb-form-muted);
482
+ }
483
+
484
+ .usgb-form[data-variant~='dense'] .usgb-consent-copy,
485
+ .usgb-form[data-variant~='sidebar'] .usgb-consent-copy {
486
+ flex: 1;
487
+ min-width: 0;
488
+ float: none;
489
+ }
490
+
491
+ .usgb-form[data-variant~='large'] {
492
+ --usgb-group-gap: 1.25rem;
493
+ --usgb-grid-gap: 1.25rem;
494
+ --usgb-grid-margin-bottom: 1.25rem;
495
+ --usgb-heading-font-size: 2rem;
496
+ --usgb-heading-font-weight: 700;
497
+ --usgb-heading-line-height: 3rem;
498
+ --usgb-heading-letter-spacing: -0.03125rem;
499
+ --usgb-heading-transform: uppercase;
500
+ --usgb-label-margin-bottom: 0.125rem;
501
+ --usgb-label-font-size: 1rem;
502
+ --usgb-label-font-weight: 400;
503
+ --usgb-label-letter-spacing: 0;
504
+ --usgb-label-line-height: 1.32;
505
+ --usgb-label-transform: none;
506
+ --usgb-field-padding: 1rem 1.25rem;
507
+ --usgb-field-font-size: 1rem;
508
+ --usgb-field-font-weight: 400;
509
+ --usgb-field-line-height: 1.32;
510
+ --usgb-field-letter-spacing: 0;
511
+ --usgb-field-radius: 0.25rem;
512
+ --usgb-consent-gap: 0.5rem;
513
+ --usgb-checkbox-size: 1.5rem;
514
+ --usgb-checkbox-margin: 0;
515
+ --usgb-consent-font-size: 1.125rem;
516
+ --usgb-consent-line-height: 1.75rem;
517
+ --usgb-button-min-height: 3.4375rem;
518
+ --usgb-button-font-size: 1rem;
519
+ }
520
+
521
+ /* Newsletter kind: underline email + side CTA */
522
+
523
+ .usgb-form[data-kind='newsletter'] {
524
+ --usgb-heading-font-size: 1.5rem;
525
+ --usgb-heading-font-weight: 700;
526
+ --usgb-heading-line-height: 1.2;
527
+ --usgb-heading-margin: 0 0 0.625rem;
528
+ --usgb-heading-transform: none;
529
+ --usgb-subheading-margin: 0 0 1.25rem;
530
+ --usgb-error-margin-top: 0.5rem;
531
+ }
532
+
533
+ .usgb-form[data-kind='newsletter'] form {
534
+ margin-top: 0.8125rem;
535
+ margin-bottom: 0.9375rem;
536
+ }
537
+
538
+ @media (min-width: 1024px) {
539
+ .usgb-form[data-kind='newsletter'] form {
540
+ margin-top: 2.5rem;
541
+ margin-bottom: 2.5rem;
542
+ }
543
+ }
544
+
545
+ .usgb-form[data-kind='newsletter'] .usgb-form-inline {
546
+ display: flex;
547
+ align-items: center;
548
+ gap: 0.75rem;
549
+ width: 100%;
550
+ }
551
+
552
+ .usgb-form[data-kind='newsletter'] .usgb-form-inline .usgb-form-group {
553
+ flex: 1 1 auto;
554
+ min-width: 0;
555
+ margin-bottom: 0;
556
+ }
557
+
558
+ .usgb-form[data-kind='newsletter'] .usgb-form-inline .usgb-field-control {
559
+ border: 0;
560
+ border-bottom: 1px solid var(--usgb-newsletter-underline);
561
+ background: transparent;
562
+ color: var(--usgb-form-content);
563
+ border-radius: 0;
564
+ padding: 0.375rem 0;
565
+ margin-bottom: 0;
566
+ box-shadow: none;
567
+ }
568
+
569
+ .usgb-form[data-kind='newsletter']
570
+ .usgb-form-inline
571
+ .usgb-field-control::placeholder {
572
+ color: var(--usgb-grey-9);
573
+ text-transform: none;
574
+ }
575
+
576
+ .usgb-form[data-kind='newsletter'] .usgb-form-inline .usgb-field-control:focus {
577
+ border-color: var(--usgb-gold-1);
578
+ box-shadow: none;
579
+ outline: none;
580
+ }
581
+
582
+ .usgb-form[data-kind='newsletter']
583
+ .usgb-form-inline
584
+ .usgb-field-control.usgb-field-invalid {
585
+ border-color: var(--usgb-alert-danger);
586
+ box-shadow: none;
587
+ }
588
+
589
+ .usgb-form[data-kind='newsletter'] .usgb-form-inline .usgb-btn {
590
+ width: auto;
591
+ flex: 0 0 auto;
592
+ min-height: 1.8125rem;
593
+ padding: 0 1.5625rem;
594
+ font-size: 0.875rem;
595
+ line-height: 1.8125rem;
596
+ }