@usgb/forms 1.0.1 → 1.0.3
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/README.md +139 -104
- package/dist/forms-manifest.1.0.3.json +439 -0
- package/dist/forms-manifest.json +252 -64
- package/dist/index.js +747 -670
- package/dist/src/contract/createIdempotencyKey.d.ts +2 -0
- package/dist/src/contract/createIdempotencyKey.d.ts.map +1 -0
- package/dist/src/contract/createStubAdapter.d.ts.map +1 -1
- package/dist/src/contract/types.d.ts +21 -25
- package/dist/src/contract/types.d.ts.map +1 -1
- package/dist/src/definitions/consents.d.ts +63 -20
- package/dist/src/definitions/consents.d.ts.map +1 -1
- package/dist/src/definitions/index.d.ts +5 -4
- package/dist/src/definitions/index.d.ts.map +1 -1
- package/dist/src/definitions/manifest.d.ts +14 -1
- package/dist/src/definitions/manifest.d.ts.map +1 -1
- package/dist/src/definitions/types.d.ts +44 -9
- package/dist/src/definitions/types.d.ts.map +1 -1
- package/dist/src/form/FormShell.d.ts +2 -1
- package/dist/src/form/FormShell.d.ts.map +1 -1
- package/dist/src/form/UsgbForm.d.ts +5 -4
- package/dist/src/form/UsgbForm.d.ts.map +1 -1
- package/dist/src/form/chunkFields.d.ts +1 -1
- package/dist/src/form/kinds/LeadKindForm.d.ts +1 -1
- package/dist/src/form/kinds/LeadKindForm.d.ts.map +1 -1
- package/dist/src/form/kinds/NewsletterKindForm.d.ts +1 -1
- package/dist/src/form/kinds/NewsletterKindForm.d.ts.map +1 -1
- package/dist/src/form/kinds/types.d.ts +3 -1
- package/dist/src/form/kinds/types.d.ts.map +1 -1
- package/dist/src/form/useUsgbFormSession.d.ts +7 -8
- package/dist/src/form/useUsgbFormSession.d.ts.map +1 -1
- package/dist/src/index.d.ts +5 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/ui/Button.d.ts.map +1 -1
- package/dist/src/ui/ConsentField.d.ts.map +1 -1
- package/dist/usgb-forms.1.0.3.js +44 -0
- package/dist/usgb-forms.css +98 -15
- package/dist/usgb-forms.js +11 -11
- package/forms-manifest.json +252 -64
- package/package.json +2 -2
- package/dist/src/contract/collectContext.d.ts +0 -9
- package/dist/src/contract/collectContext.d.ts.map +0 -1
- package/dist/usgb-forms.1.0.1.js +0 -44
package/dist/usgb-forms.css
CHANGED
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
--usgb-field-background: var(--usgb-primary);
|
|
33
33
|
--usgb-field-border: var(--usgb-secondary);
|
|
34
34
|
--usgb-field-text: var(--usgb-secondary);
|
|
35
|
-
--usgb-field-placeholder: var(--usgb-grey-
|
|
35
|
+
--usgb-field-placeholder: var(--usgb-grey-2);
|
|
36
36
|
--usgb-link: var(--usgb-blue-1);
|
|
37
37
|
--usgb-link-hover: var(--usgb-hover);
|
|
38
38
|
--usgb-checkbox-background: var(--usgb-primary);
|
|
@@ -48,13 +48,14 @@
|
|
|
48
48
|
--usgb-group-gap: 1.5rem;
|
|
49
49
|
--usgb-grid-gap: 1rem;
|
|
50
50
|
--usgb-grid-margin-bottom: 0;
|
|
51
|
-
--usgb-heading-font-size:
|
|
51
|
+
--usgb-heading-font-size: 2rem;
|
|
52
52
|
--usgb-heading-font-weight: 700;
|
|
53
|
-
--usgb-heading-line-height:
|
|
53
|
+
--usgb-heading-line-height: 2.75rem;
|
|
54
54
|
--usgb-heading-letter-spacing: 0;
|
|
55
55
|
--usgb-heading-transform: none;
|
|
56
56
|
--usgb-heading-margin: 0 0 0.75rem;
|
|
57
57
|
--usgb-subheading-font-size: 0.875rem;
|
|
58
|
+
--usgb-subheading-font-weight: 400;
|
|
58
59
|
--usgb-subheading-line-height: 1.5rem;
|
|
59
60
|
--usgb-subheading-margin: 0 0 1.25rem;
|
|
60
61
|
--usgb-label-margin-bottom: 0.375rem;
|
|
@@ -86,6 +87,7 @@
|
|
|
86
87
|
--usgb-consent-color: var(--usgb-form-content);
|
|
87
88
|
--usgb-consent-transform: none;
|
|
88
89
|
--usgb-button-padding: 0.625rem 1.875rem;
|
|
90
|
+
--usgb-button-margin-top: 0;
|
|
89
91
|
--usgb-button-min-height: 2.1875rem;
|
|
90
92
|
--usgb-button-radius: 3.125rem;
|
|
91
93
|
--usgb-button-font-size: 0.75rem;
|
|
@@ -104,6 +106,15 @@
|
|
|
104
106
|
container: usgb-form / inline-size;
|
|
105
107
|
}
|
|
106
108
|
|
|
109
|
+
/* Landing-page heading steps up on desktop; sidebar and newsletter set
|
|
110
|
+
their own sizes and are unaffected. */
|
|
111
|
+
@media (min-width: 768px) {
|
|
112
|
+
.usgb-form {
|
|
113
|
+
--usgb-heading-font-size: 2.5rem;
|
|
114
|
+
--usgb-heading-line-height: 3.25rem;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
107
118
|
.usgb-form *,
|
|
108
119
|
.usgb-form *::before,
|
|
109
120
|
.usgb-form *::after {
|
|
@@ -113,6 +124,7 @@
|
|
|
113
124
|
/* Layout */
|
|
114
125
|
|
|
115
126
|
.usgb-form .usgb-form-group {
|
|
127
|
+
position: relative;
|
|
116
128
|
margin-bottom: var(--usgb-group-gap);
|
|
117
129
|
}
|
|
118
130
|
|
|
@@ -129,7 +141,7 @@
|
|
|
129
141
|
}
|
|
130
142
|
|
|
131
143
|
@container usgb-form (min-width: 20rem) {
|
|
132
|
-
.usgb-form[data-
|
|
144
|
+
.usgb-form[data-layout='two-column'] .usgb-form-grid {
|
|
133
145
|
grid-template-columns: 1fr 1fr;
|
|
134
146
|
}
|
|
135
147
|
}
|
|
@@ -138,7 +150,7 @@
|
|
|
138
150
|
viewport so those browsers still get a two-up name row on desktop. */
|
|
139
151
|
@supports not (container-type: inline-size) {
|
|
140
152
|
@media (min-width: 768px) {
|
|
141
|
-
.usgb-form[data-
|
|
153
|
+
.usgb-form[data-layout='two-column'] .usgb-form-grid {
|
|
142
154
|
grid-template-columns: 1fr 1fr;
|
|
143
155
|
}
|
|
144
156
|
}
|
|
@@ -159,6 +171,7 @@
|
|
|
159
171
|
|
|
160
172
|
.usgb-form .usgb-form-subheading {
|
|
161
173
|
font-size: var(--usgb-subheading-font-size);
|
|
174
|
+
font-weight: var(--usgb-subheading-font-weight);
|
|
162
175
|
line-height: var(--usgb-subheading-line-height);
|
|
163
176
|
margin: var(--usgb-subheading-margin);
|
|
164
177
|
color: var(--usgb-form-muted);
|
|
@@ -205,6 +218,7 @@
|
|
|
205
218
|
margin: -1px;
|
|
206
219
|
overflow: hidden;
|
|
207
220
|
clip: rect(0, 0, 0, 0);
|
|
221
|
+
clip-path: inset(50%);
|
|
208
222
|
white-space: nowrap;
|
|
209
223
|
border: 0;
|
|
210
224
|
}
|
|
@@ -254,6 +268,13 @@
|
|
|
254
268
|
outline: none;
|
|
255
269
|
}
|
|
256
270
|
|
|
271
|
+
/* Focus must stay visible when the field is also invalid (2.4.7). */
|
|
272
|
+
.usgb-form .usgb-field-control.usgb-field-invalid:focus {
|
|
273
|
+
border-color: var(--usgb-alert-danger);
|
|
274
|
+
box-shadow: inset 0 0 0 1px var(--usgb-gold-1);
|
|
275
|
+
outline: none;
|
|
276
|
+
}
|
|
277
|
+
|
|
257
278
|
.usgb-form .usgb-field-control:disabled {
|
|
258
279
|
outline: none;
|
|
259
280
|
border-color: var(--usgb-grey-9);
|
|
@@ -310,6 +331,15 @@
|
|
|
310
331
|
flex-shrink: 0;
|
|
311
332
|
}
|
|
312
333
|
|
|
334
|
+
.usgb-form .usgb-form-checkbox:focus {
|
|
335
|
+
outline: none;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
.usgb-form .usgb-form-checkbox:focus-visible {
|
|
339
|
+
outline: var(--usgb-outline-focused);
|
|
340
|
+
outline-offset: 2px;
|
|
341
|
+
}
|
|
342
|
+
|
|
313
343
|
.usgb-form .usgb-form-checkbox-mark {
|
|
314
344
|
position: absolute;
|
|
315
345
|
inset: 0;
|
|
@@ -335,10 +365,12 @@
|
|
|
335
365
|
|
|
336
366
|
.usgb-form .usgb-consent-notice {
|
|
337
367
|
margin: 0 0 var(--usgb-consent-margin-bottom);
|
|
368
|
+
cursor: default;
|
|
338
369
|
}
|
|
339
370
|
|
|
340
371
|
.usgb-form .usgb-consent-copy a {
|
|
341
372
|
color: var(--usgb-link);
|
|
373
|
+
font-weight: var(--usgb-consent-link-font-weight, inherit);
|
|
342
374
|
text-decoration: underline;
|
|
343
375
|
}
|
|
344
376
|
|
|
@@ -352,6 +384,7 @@
|
|
|
352
384
|
cursor: pointer;
|
|
353
385
|
display: inline-flex;
|
|
354
386
|
padding: var(--usgb-button-padding);
|
|
387
|
+
margin-top: var(--usgb-button-margin-top);
|
|
355
388
|
min-height: var(--usgb-button-min-height);
|
|
356
389
|
border-radius: var(--usgb-button-radius);
|
|
357
390
|
line-height: var(--usgb-button-line-height);
|
|
@@ -375,7 +408,7 @@
|
|
|
375
408
|
border-color: var(--usgb-button-background);
|
|
376
409
|
}
|
|
377
410
|
|
|
378
|
-
.usgb-form .usgb-btn-primary:hover:not(:disabled) {
|
|
411
|
+
.usgb-form .usgb-btn-primary:hover:not(:disabled):not([aria-disabled='true']) {
|
|
379
412
|
background: var(--usgb-button-hover-background);
|
|
380
413
|
color: var(--usgb-button-text);
|
|
381
414
|
border-color: var(--usgb-button-hover-background);
|
|
@@ -389,12 +422,17 @@
|
|
|
389
422
|
outline: var(--usgb-outline-focused);
|
|
390
423
|
}
|
|
391
424
|
|
|
392
|
-
.usgb-form .usgb-btn:disabled
|
|
425
|
+
.usgb-form .usgb-btn:disabled,
|
|
426
|
+
.usgb-form .usgb-btn[aria-disabled='true'] {
|
|
393
427
|
cursor: not-allowed;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
.usgb-form .usgb-btn:disabled {
|
|
394
431
|
pointer-events: none;
|
|
395
432
|
}
|
|
396
433
|
|
|
397
|
-
.usgb-form .usgb-btn-primary:disabled
|
|
434
|
+
.usgb-form .usgb-btn-primary:disabled,
|
|
435
|
+
.usgb-form .usgb-btn-primary[aria-disabled='true'] {
|
|
398
436
|
background: var(--usgb-button-disabled-background);
|
|
399
437
|
color: var(--usgb-button-disabled-text);
|
|
400
438
|
border-color: var(--usgb-button-disabled-background);
|
|
@@ -423,21 +461,36 @@
|
|
|
423
461
|
/* Inverse hover keeps the white fill and gains a 3px ring. Two of those
|
|
424
462
|
pixels are an inset shadow over the 1px border so the button does not
|
|
425
463
|
change size between rest and hover. */
|
|
426
|
-
.usgb-form[data-appearance='on-dark']
|
|
464
|
+
.usgb-form[data-appearance='on-dark']
|
|
465
|
+
.usgb-btn-primary:hover:not(:disabled):not([aria-disabled='true']) {
|
|
427
466
|
border-color: var(--usgb-hover);
|
|
428
467
|
box-shadow: inset 0 0 0 2px var(--usgb-hover);
|
|
429
468
|
}
|
|
430
469
|
|
|
431
470
|
/* Variants */
|
|
432
471
|
|
|
472
|
+
/* Dense shares the landing-page type scale with large; spacing stays dense. */
|
|
433
473
|
.usgb-form[data-variant~='dense'] {
|
|
434
474
|
--usgb-group-gap: 1.25rem;
|
|
435
475
|
--usgb-grid-gap: 1rem;
|
|
436
476
|
--usgb-grid-margin-bottom: 1.25rem;
|
|
477
|
+
--usgb-subheading-font-size: 1.125rem;
|
|
478
|
+
--usgb-subheading-font-weight: 500;
|
|
479
|
+
--usgb-subheading-line-height: 1.75rem;
|
|
437
480
|
--usgb-consent-font-size: 0.75rem;
|
|
438
481
|
--usgb-consent-font-weight: 400;
|
|
439
482
|
--usgb-consent-line-height: 1.4;
|
|
440
483
|
--usgb-consent-transform: none;
|
|
484
|
+
--usgb-button-font-size: 1.125rem;
|
|
485
|
+
--usgb-button-line-height: 1.125rem;
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
@media (min-width: 768px) {
|
|
489
|
+
.usgb-form[data-variant~='dense'] {
|
|
490
|
+
--usgb-subheading-line-height: 1.8125rem;
|
|
491
|
+
--usgb-button-font-size: 1.25rem;
|
|
492
|
+
--usgb-button-line-height: 0.875rem;
|
|
493
|
+
}
|
|
441
494
|
}
|
|
442
495
|
|
|
443
496
|
/* Compact blog/sidebar kit — match live HubSpot density, design-sheet tokens. */
|
|
@@ -488,22 +541,31 @@
|
|
|
488
541
|
float: none;
|
|
489
542
|
}
|
|
490
543
|
|
|
544
|
+
/* Large: landing-page form. Figma draws the 1px field and button strokes
|
|
545
|
+
inside the box, so paddings below are the design values minus 1px and
|
|
546
|
+
the rendered boxes land on the designed 53px field / 50px (62px desktop)
|
|
547
|
+
button. */
|
|
491
548
|
.usgb-form[data-variant~='large'] {
|
|
492
549
|
--usgb-group-gap: 1.25rem;
|
|
493
550
|
--usgb-grid-gap: 1.25rem;
|
|
494
551
|
--usgb-grid-margin-bottom: 1.25rem;
|
|
495
552
|
--usgb-heading-font-size: 2rem;
|
|
496
553
|
--usgb-heading-font-weight: 700;
|
|
497
|
-
--usgb-heading-line-height:
|
|
554
|
+
--usgb-heading-line-height: 2.75rem;
|
|
498
555
|
--usgb-heading-letter-spacing: -0.03125rem;
|
|
499
556
|
--usgb-heading-transform: uppercase;
|
|
557
|
+
--usgb-heading-margin: 0 0 0.875rem;
|
|
558
|
+
--usgb-subheading-font-size: 1.125rem;
|
|
559
|
+
--usgb-subheading-font-weight: 500;
|
|
560
|
+
--usgb-subheading-line-height: 1.75rem;
|
|
561
|
+
--usgb-subheading-margin: 0 0 1.5rem;
|
|
500
562
|
--usgb-label-margin-bottom: 0.125rem;
|
|
501
563
|
--usgb-label-font-size: 1rem;
|
|
502
564
|
--usgb-label-font-weight: 400;
|
|
503
565
|
--usgb-label-letter-spacing: 0;
|
|
504
566
|
--usgb-label-line-height: 1.32;
|
|
505
567
|
--usgb-label-transform: none;
|
|
506
|
-
--usgb-field-padding:
|
|
568
|
+
--usgb-field-padding: 0.9375rem 1.0625rem 0.9375rem 1.1875rem;
|
|
507
569
|
--usgb-field-font-size: 1rem;
|
|
508
570
|
--usgb-field-font-weight: 400;
|
|
509
571
|
--usgb-field-line-height: 1.32;
|
|
@@ -514,8 +576,29 @@
|
|
|
514
576
|
--usgb-checkbox-margin: 0;
|
|
515
577
|
--usgb-consent-font-size: 1.125rem;
|
|
516
578
|
--usgb-consent-line-height: 1.75rem;
|
|
517
|
-
--usgb-
|
|
518
|
-
|
|
579
|
+
--usgb-consent-link-font-weight: 600;
|
|
580
|
+
/* Preceding field already contributes the 20px group gap; this tops it
|
|
581
|
+
up to the designed 24px (32px desktop) between last field and CTA. */
|
|
582
|
+
--usgb-button-margin-top: 0.25rem;
|
|
583
|
+
--usgb-button-padding: 0.9375rem 3.4375rem;
|
|
584
|
+
--usgb-button-min-height: 3.125rem;
|
|
585
|
+
--usgb-button-font-size: 1.125rem;
|
|
586
|
+
--usgb-button-line-height: 1.125rem;
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
@media (min-width: 768px) {
|
|
590
|
+
.usgb-form[data-variant~='large'] {
|
|
591
|
+
--usgb-heading-font-size: 2.5rem;
|
|
592
|
+
--usgb-heading-line-height: 3.25rem;
|
|
593
|
+
--usgb-subheading-line-height: 1.8125rem;
|
|
594
|
+
--usgb-subheading-margin: 0 0 1.6875rem;
|
|
595
|
+
--usgb-button-margin-top: 0.75rem;
|
|
596
|
+
--usgb-button-padding: 1.4375rem 3.4375rem;
|
|
597
|
+
--usgb-button-min-height: 3.875rem;
|
|
598
|
+
--usgb-button-font-size: 1.25rem;
|
|
599
|
+
--usgb-button-line-height: 0.875rem;
|
|
600
|
+
--usgb-button-width: auto;
|
|
601
|
+
}
|
|
519
602
|
}
|
|
520
603
|
|
|
521
604
|
/* Newsletter kind: underline email + side CTA */
|
|
@@ -565,13 +648,13 @@
|
|
|
565
648
|
margin-bottom: 0;
|
|
566
649
|
box-shadow: none;
|
|
567
650
|
}
|
|
568
|
-
|
|
651
|
+
/*
|
|
569
652
|
.usgb-form[data-kind='newsletter']
|
|
570
653
|
.usgb-form-inline
|
|
571
654
|
.usgb-field-control::placeholder {
|
|
572
655
|
color: var(--usgb-grey-9);
|
|
573
656
|
text-transform: none;
|
|
574
|
-
}
|
|
657
|
+
} */
|
|
575
658
|
|
|
576
659
|
.usgb-form[data-kind='newsletter'] .usgb-form-inline .usgb-field-control:focus {
|
|
577
660
|
border-color: var(--usgb-gold-1);
|