@usgb/forms 1.0.3 → 1.0.5

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 CHANGED
@@ -31,13 +31,19 @@ Use `listFormDefinitions()` (or the manifest) when a CMS needs a picker of avail
31
31
 
32
32
  ## Available forms
33
33
 
34
- | `formId` | Kind | Fields | Consent | Size/layout |
35
- | --------------------------- | ------------ | --------------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------ |
36
- | `magento-fik` | `lead` | First name, last name, email (required); phone (optional) | Optional TCPA (v1), marketing SMS, and terms/privacy checkboxes | `dense`, `large`, or `sidebar`; optional two-column name row |
37
- | `magento-ira-kick-article` | `lead` | First name, last name, email, phone (all required) | Optional TCPA checkbox (v2, links terms and privacy) | `dense`, `large`, or `sidebar`; optional two-column name row |
38
- | `magento-fik-blog-rail` | `lead` | First name, last name, email, phone (all required) | Optional TCPA checkbox (v2, links terms and privacy) | `dense`, `large`, or `sidebar`; optional two-column name row |
39
- | `main-investors-kit-notice` | `lead` | Same as `magento-fik` | Clickwrap notice only (`lead-clickwrap` v2) | `dense`, `large`, or `sidebar`; optional two-column name row |
40
- | `newsletter` | `newsletter` | Email only | None | None — omit `variant` and `twoColumn` / `two-column` |
34
+ | `formId` | Kind | Fields | Consent | Size/layout |
35
+ | -------------------------------- | ------------ | --------------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------ |
36
+ | `magento-fik-10dlc` | `lead` | First name, last name, email (required); phone (optional) | Optional TCPA (v1), marketing SMS, and terms/privacy checkboxes | `dense`, `large`, or `sidebar`; optional two-column name row |
37
+ | `magento-ira-401k` | `lead` | First name, last name, email, phone (all required) | Optional TCPA checkbox (v2, links terms and privacy) | `dense`, `large`, or `sidebar`; optional two-column name row |
38
+ | `magento-fik` | `lead` | First name, last name, email, phone (all required) | Required TCPA checkbox (v3, links terms and privacy) | `dense`, `large`, or `sidebar`; optional two-column name row |
39
+ | `magento-footer` | `newsletter` | Email only | None | None — omit `variant` and `twoColumn` / `two-column` |
40
+ | `wp-full-lead` | `lead` | First name, last name, email, phone (all required) | Clickwrap notice only (`lead-clickwrap` v2) | `dense`, `large`, or `sidebar`; optional two-column name row |
41
+ | `wp-request-call-back` | `lead` | Same as `wp-full-lead` | Same as `wp-full-lead` | Same as `wp-full-lead` |
42
+ | `wp-investor-kit-lead-nurturing` | `lead` | Same as `wp-full-lead` | Same as `wp-full-lead` | Same as `wp-full-lead` |
43
+ | `wp-product-launch` | `lead` | Same as `wp-full-lead` | Same as `wp-full-lead` | Same as `wp-full-lead` |
44
+ | `wp-ira-full-lead` | `lead` | Same as `wp-full-lead` | Same as `wp-full-lead` | Same as `wp-full-lead` |
45
+ | `wp-affiliate-ira-full-lead` | `lead` | Same as `wp-full-lead` | Same as `wp-full-lead` | Same as `wp-full-lead` |
46
+ | `wp-full-lead-captcha` | `lead` | Same as `wp-full-lead` | Same as `wp-full-lead` | Same as `wp-full-lead` |
41
47
 
42
48
  Appearances for every catalog form: `on-light` | `on-dark`. Appearance only recolors the form for readability on a light or dark host background — it never sets a background, padding, or radius. The host container owns those.
43
49
 
@@ -66,9 +72,9 @@ Only `legalUrls` is required, and only for the keys a form's consents name — t
66
72
  ```ts
67
73
  import { listEditorOptions } from '@usgb/forms'
68
74
 
69
- listEditorOptions('newsletter')
75
+ listEditorOptions('magento-footer')
70
76
  // [{ key: 'appearance', control: 'select', values: ['on-light', 'on-dark'], defaultValue: 'on-light', … }, …]
71
- // `variant`, `twoColumn`, and `legalUrls` are absent — newsletter takes none.
77
+ // `variant`, `twoColumn`, and `legalUrls` are absent — `magento-footer` takes none.
72
78
  ```
73
79
 
74
80
  ## Install
@@ -95,7 +101,7 @@ Peer dependency: `react` and `react-dom` `^18` or `^19`.
95
101
  Load the built script for a release (styles inject themselves):
96
102
 
97
103
  ```html
98
- <script src="https://forms.usgoldbureau.com/usgb-forms.1.0.3.js"></script>
104
+ <script src="https://forms.usgoldbureau.com/usgb-forms.1.0.5.js"></script>
99
105
  ```
100
106
 
101
107
  Pin the script and the catalog together: `usgb-forms.<version>.js` and `forms-manifest.<version>.json` on `https://forms.usgoldbureau.com/`. Gutenberg should load that matching manifest when listing `formId`s.
@@ -106,7 +112,7 @@ Pin the script and the catalog together: `usgb-forms.<version>.js` and `forms-ma
106
112
  import { UsgbForm, createStubAdapter, PWA_LEGAL_URLS } from '@usgb/forms'
107
113
  import '@usgb/forms/usgb-forms.css'
108
114
  ;<UsgbForm
109
- formId="magento-fik"
115
+ formId="magento-fik-10dlc"
110
116
  appearance="on-dark"
111
117
  variant="large"
112
118
  twoColumn
@@ -129,7 +135,7 @@ Newsletter (no consent or lead layout options):
129
135
 
130
136
  ```tsx
131
137
  <UsgbForm
132
- formId="newsletter"
138
+ formId="magento-footer"
133
139
  appearance="on-light"
134
140
  heading="Subscribe"
135
141
  ctaLabel="SUBSCRIBE"
@@ -141,7 +147,7 @@ Newsletter (no consent or lead layout options):
141
147
 
142
148
  | Prop | Required | Role |
143
149
  | ------------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
144
- | `formId` | yes | Catalog key (`magento-fik`, `newsletter`, …) |
150
+ | `formId` | yes | Catalog key (`magento-fik-10dlc`, `magento-footer`, …) |
145
151
  | `adapter` | yes | `HostAdapter` with `host` and `submit()` |
146
152
  | `appearance` | no | `on-light` (default) or `on-dark` |
147
153
  | `variant` | no | Lead only. Default `dense`. Exactly one of `dense` \| `large` \| `sidebar` |
@@ -160,9 +166,9 @@ Newsletter (no consent or lead layout options):
160
166
  Load one script. Styles are injected automatically.
161
167
 
162
168
  ```html
163
- <script src="https://forms.usgoldbureau.com/usgb-forms.1.0.3.js"></script>
169
+ <script src="https://forms.usgoldbureau.com/usgb-forms.1.0.5.js"></script>
164
170
  <usgb-form
165
- form-id="magento-fik"
171
+ form-id="magento-fik-10dlc"
166
172
  appearance="on-dark"
167
173
  variant="large"
168
174
  two-column
@@ -175,16 +181,6 @@ Load one script. Styles are injected automatically.
175
181
  ></usgb-form>
176
182
  ```
177
183
 
178
- Clickwrap kit (`main-investors-kit-notice`) needs the two notice URLs:
179
-
180
- ```html
181
- <usgb-form
182
- form-id="main-investors-kit-notice"
183
- privacy-policy-url="/privacy-policy/"
184
- user-agreement-url="/user-agreement/"
185
- ></usgb-form>
186
- ```
187
-
188
184
  Submit is **not** an attribute. Markup alone uses a stub adapter. Assign a real `HostAdapter` in script:
189
185
 
190
186
  ```html
@@ -214,7 +210,7 @@ Submit is **not** an attribute. Markup alone uses a stub adapter. Assign a real
214
210
 
215
211
  ### Attribute map
216
212
 
217
- `form-id` defaults to `magento-fik`, `appearance` to `on-light`, `variant` to `dense`, and `host` to `wordpress`. `two-column` is a boolean attribute and is off when omitted. There is no `version` attribute — `definitionVersion` comes from the catalog.
213
+ `form-id` defaults to `magento-fik-10dlc`, `appearance` to `on-light`, `variant` to `dense`, and `host` to `wordpress`. `two-column` is a boolean attribute and is off when omitted. There is no `version` attribute — `definitionVersion` comes from the catalog.
218
214
 
219
215
  | Attribute | React prop |
220
216
  | --------------------------- | ------------------------------------------------------------- |
@@ -262,22 +258,34 @@ interface HostAdapter {
262
258
 
263
259
  ### Payload shape (summary)
264
260
 
265
- Successful submits send `formId`, `definitionVersion`, `submissionContractVersion`, `idempotencyKey`, `data` (field values), and optional `consents` (grant booleans, opt-in dates, and `*_consent_language` strings). Exact field sets come from the form’s catalog entry.
261
+ Successful submits send `formId`, `definitionVersion`, `submissionContractVersion`, `idempotencyKey`, `data`, and optional `consents` (grant booleans, opt-in dates, and `*_consent_language` strings). `data` is an array of `{ name, value }` entries in catalog field order:
262
+
263
+ ```json
264
+ "data": [
265
+ { "name": "firstname", "value": "Olena" },
266
+ { "name": "lastname", "value": "Test" },
267
+ { "name": "email", "value": "test-22@gmail.com" },
268
+ { "name": "phone", "value": "5127121212" }
269
+ ]
270
+ ```
271
+
272
+ Exact field sets come from the form’s catalog entry.
266
273
 
267
274
  ## Consent and legal URLs
268
275
 
269
276
  Consent policies are versioned and package-owned (checkboxes and/or clickwrap notices). Forms list zero or more pins (`definitionId` + `definitionVersion` + optional `required` for checkboxes). Hosts only supply document **hrefs**.
270
277
 
271
- - `magento-fik` pins `lead-tcpa`, `lead-sms`, and `lead-tospp` (all v1, optional checkboxes). Required URLs: `userAgreement`, `privacyPolicy` (`user-agreement-url`, `privacy-policy-url`).
272
- - `magento-ira-kick-article` and `magento-fik-blog-rail` pin `lead-tcpa` v2 only (optional checkbox). Unlike v1, v2 links the terms and privacy policy, so required URLs: `userAgreement`, `privacyPolicy`.
273
- - `main-investors-kit-notice` pins `lead-clickwrap` v2 (notice only: Privacy Policy, Terms & Conditions, and text/call consent). Required URLs: `privacyPolicy`, `userAgreement`. It shares the v1 payload key `clickwrap_consent_language`. `lead-clickwrap` v1 (five document links) stays in the catalog and is not pinned.
274
- - `newsletter` has no consents and needs no legal URLs.
278
+ - `magento-fik-10dlc` pins `lead-tcpa`, `lead-sms`, and `lead-tospp` (all v1, optional checkboxes). Required URLs: `userAgreement`, `privacyPolicy` (`user-agreement-url`, `privacy-policy-url`).
279
+ - `magento-ira-401k` pins `lead-tcpa` v2 only (optional checkbox). Unlike v1, v2 links the terms and privacy policy, so required URLs: `userAgreement`, `privacyPolicy`.
280
+ - `magento-fik` pins `lead-tcpa` v3 only (required checkbox: automated text-message consent; “Terms of Service” links `userAgreement`, “Privacy Policy” links `privacyPolicy`). It shares the v1 payload keys. Required URLs: `userAgreement`, `privacyPolicy`.
281
+ - WordPress lead forms pin `lead-clickwrap` v2 (notice only: Privacy Policy, Terms & Conditions, and text/call consent). Required URLs: `privacyPolicy`, `userAgreement`. They share the v1 payload key `clickwrap_consent_language`. `lead-clickwrap` v1 (five document links) stays in the catalog and is not pinned.
282
+ - `magento-footer` has no consents and needs no legal URLs.
275
283
  - `LEGAL_URL_ATTRS` lists every host-owned slot, including `clientAgreement` / `client-agreement-url`. No current catalog consent requires `clientAgreement`; it is still valid on `legalUrls` / the attribute (PWA Magento ships it in `PWA_LEGAL_URLS`).
276
284
  - PWA Magento defaults (`PWA_LEGAL_URLS`): `/content/client-agreement`, `/content/privacy-policy`, `/content/user-agreement`, `/content/market-loss-policy`, `/content/electronic-disclaimer`, `/content/terms-of-sale`.
277
285
  - WordPress must pass every URL required by the selected consents. A form with a missing required URL **does not render**. CMS pickers can compute the list with `getFormDefinition`, `resolveFormConsents`, and `collectRequiredLegalUrls`, then map keys through `LEGAL_URL_ATTRS`.
278
286
  - `isCompleteLegalUrls(legalUrls, requiredKeys)` is the same check the renderer uses.
279
287
  - Checkbox grants land in `consents` only (`tcpa_form_consent_granted`, `sms_form_consent_granted`, `tospp_form_consent_granted`). The exact copy shown is `tcpa_consent_language` (and the matching keys for other policies), even when unchecked.
280
- - Checking the TCPA box also adds `tcpa_form_opt_in_date` (YYYY-MM-DD). The notice form only sends `clickwrap_consent_language`.
288
+ - Checking the TCPA box also adds `tcpa_form_opt_in_date` (YYYY-MM-DD). Clickwrap forms only send `clickwrap_consent_language`.
281
289
  - Hosts supply document hrefs only. Consent wording stays in this package.
282
290
 
283
291
  ## Success behavior
@@ -326,6 +334,8 @@ Prefer **custom properties** on `.usgb-form` for color, type, and spacing:
326
334
 
327
335
  Use class selectors when a token does not exist (`.usgb-form .usgb-btn { border-radius: 0; }`).
328
336
 
337
+ **Fonts.** Body copy, fields, and the button inherit the host page's `font-family`, so WordPress (`'Montserrat', sans-serif` on `body`) and the PWA (`next/font`'s hashed `__Montserrat_…` family) both render in Montserrat with no extra setup. Set `--usgb-font-primary` on `.usgb-form` only to force a different stack. The heading uses `--usgb-font-secondary`, which reads the host variable `--font-kameron` first and falls back to the `Kameron` family name; a `next/font` host should expose `Kameron({ variable: '--font-kameron' })` on `<html>`, or override `--usgb-font-secondary` directly.
338
+
329
339
  Stable hooks: `.usgb-form` (`data-appearance`, `data-variant`, `data-kind`), `.usgb-form-heading`, `.usgb-form-subheading`, `.usgb-form-grid`, `.usgb-form-inline`, `.usgb-field-control`, `.usgb-field-error`, `.usgb-consent-*`, `.usgb-btn`, `.usgb-form-status-*`.
330
340
 
331
341
  Semantic tokens (`--usgb-field-*`, `--usgb-button-*`, `--usgb-newsletter-underline`, …) are the first place to retheme. Palette vars (`--usgb-blue-1`, …) are a PWA snapshot. Error and checkbox glyphs are inline SVGs that use `currentColor` — override `--usgb-alert-danger` or `--usgb-checkbox-mark` to recolor them.
@@ -334,6 +344,6 @@ Appearance never paints a card. Put the form on a dark host surface and pass `ap
334
344
 
335
345
  ```html
336
346
  <div style="background: #001f3d; padding: 2rem; border-radius: 0.75rem">
337
- <usgb-form form-id="magento-fik" appearance="on-dark" …></usgb-form>
347
+ <usgb-form form-id="magento-fik-10dlc" appearance="on-dark" …></usgb-form>
338
348
  </div>
339
349
  ```
@@ -240,7 +240,7 @@
240
240
  }
241
241
  },
242
242
  "forms": {
243
- "magento-fik": {
243
+ "magento-fik-10dlc": {
244
244
  "definitionVersion": "1",
245
245
  "kind": "lead",
246
246
  "flow": { "type": "single" },
@@ -269,7 +269,7 @@
269
269
  }
270
270
  ],
271
271
  "editor": {
272
- "label": "Magento FIK",
272
+ "label": "Magento FIK 10DLC",
273
273
  "description": "First name, last name, and email required; phone optional. Optional checkboxes: transactional SMS (lead-tcpa v1), marketing SMS (lead-sms v1), and terms and privacy (lead-tospp v1).",
274
274
  "whenToUse": "TBD",
275
275
  "whenNotToUse": "TBD",
@@ -289,7 +289,7 @@
289
289
  "requiredLegalUrls": ["userAgreement", "privacyPolicy"]
290
290
  }
291
291
  },
292
- "magento-ira-kick-article": {
292
+ "magento-ira-401k": {
293
293
  "definitionVersion": "1",
294
294
  "kind": "lead",
295
295
  "flow": { "type": "single" },
@@ -308,7 +308,7 @@
308
308
  }
309
309
  ],
310
310
  "editor": {
311
- "label": "Magento IRA Kick Article",
311
+ "label": "Magento IRA 401k",
312
312
  "description": "First name, last name, email, and phone required. Optional telephone and SMS consent checkbox with linked terms and privacy (lead-tcpa v2).",
313
313
  "whenToUse": "TBD",
314
314
  "whenNotToUse": "TBD",
@@ -328,7 +328,7 @@
328
328
  "requiredLegalUrls": ["userAgreement", "privacyPolicy"]
329
329
  }
330
330
  },
331
- "magento-fik-blog-rail": {
331
+ "magento-fik": {
332
332
  "definitionVersion": "1",
333
333
  "kind": "lead",
334
334
  "flow": { "type": "single" },
@@ -342,13 +342,13 @@
342
342
  "consents": [
343
343
  {
344
344
  "definitionId": "lead-tcpa",
345
- "definitionVersion": "2",
346
- "required": false
345
+ "definitionVersion": "3",
346
+ "required": true
347
347
  }
348
348
  ],
349
349
  "editor": {
350
- "label": "Magento FIK Blog Rail",
351
- "description": "First name, last name, email, and phone required. Optional telephone and SMS consent checkbox with linked terms and privacy (lead-tcpa v2).",
350
+ "label": "Magento FIK",
351
+ "description": "First name, last name, email, and phone required. Required automated text-message consent checkbox with linked terms of service and privacy policy (lead-tcpa v3).",
352
352
  "whenToUse": "TBD",
353
353
  "whenNotToUse": "TBD",
354
354
  "options": [
@@ -367,23 +367,66 @@
367
367
  "requiredLegalUrls": ["userAgreement", "privacyPolicy"]
368
368
  }
369
369
  },
370
- "main-investors-kit-notice": {
370
+ "magento-footer": {
371
371
  "definitionVersion": "1",
372
- "kind": "lead",
372
+ "kind": "newsletter",
373
373
  "flow": { "type": "single" },
374
+ "fields": [{ "name": "email", "required": true }],
375
+ "ctaLabel": "SUBSCRIBE",
376
+ "editor": {
377
+ "label": "Magento Footer",
378
+ "description": "Email only. No consent.",
379
+ "whenToUse": "TBD",
380
+ "whenNotToUse": "TBD",
381
+ "options": [
382
+ "appearance",
383
+ "heading",
384
+ "subheading",
385
+ "ctaLabel",
386
+ "successMessage",
387
+ "successUrl"
388
+ ],
389
+ "supportedAppearances": ["on-light", "on-dark"],
390
+ "supportedVariants": [],
391
+ "requiredLegalUrls": []
392
+ }
393
+ },
394
+ "wp-full-lead": {
395
+ "definitionVersion": "1",
396
+ "kind": "lead",
397
+ "flow": {
398
+ "type": "single"
399
+ },
374
400
  "fields": [
375
- { "name": "firstname", "required": true, "group": "name" },
376
- { "name": "lastname", "required": true, "group": "name" },
377
- { "name": "email", "required": true },
378
- { "name": "phone", "required": false }
401
+ {
402
+ "name": "firstname",
403
+ "required": true,
404
+ "group": "name"
405
+ },
406
+ {
407
+ "name": "lastname",
408
+ "required": true,
409
+ "group": "name"
410
+ },
411
+ {
412
+ "name": "email",
413
+ "required": true
414
+ },
415
+ {
416
+ "name": "phone",
417
+ "required": true
418
+ }
379
419
  ],
380
- "ctaLabel": "CLAIM YOUR OFFER",
420
+ "ctaLabel": "Submit",
381
421
  "consents": [
382
- { "definitionId": "lead-clickwrap", "definitionVersion": "2" }
422
+ {
423
+ "definitionId": "lead-clickwrap",
424
+ "definitionVersion": "2"
425
+ }
383
426
  ],
384
427
  "editor": {
385
- "label": "Main Investors Kit (clickwrap)",
386
- "description": "First name, last name, and email required; phone optional. Clickwrap notice only (lead-clickwrap v2); no consent checkboxes.",
428
+ "label": "Full Lead Form (WP GF 1)",
429
+ "description": "First name, last name, email, and phone required. Clickwrap notice only (lead-clickwrap v2); no consent checkboxes. GF form 1 → HubSpot 1ebf148f.",
387
430
  "whenToUse": "TBD",
388
431
  "whenNotToUse": "TBD",
389
432
  "options": [
@@ -402,28 +445,328 @@
402
445
  "requiredLegalUrls": ["privacyPolicy", "userAgreement"]
403
446
  }
404
447
  },
405
- "newsletter": {
448
+ "wp-request-call-back": {
406
449
  "definitionVersion": "1",
407
- "kind": "newsletter",
408
- "flow": { "type": "single" },
409
- "fields": [{ "name": "email", "required": true }],
410
- "ctaLabel": "SUBSCRIBE",
450
+ "kind": "lead",
451
+ "flow": {
452
+ "type": "single"
453
+ },
454
+ "fields": [
455
+ {
456
+ "name": "firstname",
457
+ "required": true,
458
+ "group": "name"
459
+ },
460
+ {
461
+ "name": "lastname",
462
+ "required": true,
463
+ "group": "name"
464
+ },
465
+ {
466
+ "name": "email",
467
+ "required": true
468
+ },
469
+ {
470
+ "name": "phone",
471
+ "required": true
472
+ }
473
+ ],
474
+ "ctaLabel": "Submit",
475
+ "consents": [
476
+ {
477
+ "definitionId": "lead-clickwrap",
478
+ "definitionVersion": "2"
479
+ }
480
+ ],
411
481
  "editor": {
412
- "label": "Newsletter",
413
- "description": "Email only. No consent.",
482
+ "label": "Request Call Back (WP GF 11)",
483
+ "description": "First name, last name, email, and phone required. Clickwrap notice only (lead-clickwrap v2). Host sets `requested_callback=true` as context. GF form 11 → HubSpot 25c0c6ca.",
414
484
  "whenToUse": "TBD",
415
485
  "whenNotToUse": "TBD",
416
486
  "options": [
417
487
  "appearance",
488
+ "variant",
489
+ "twoColumn",
418
490
  "heading",
419
491
  "subheading",
420
492
  "ctaLabel",
493
+ "legalUrls",
421
494
  "successMessage",
422
495
  "successUrl"
423
496
  ],
424
497
  "supportedAppearances": ["on-light", "on-dark"],
425
- "supportedVariants": [],
426
- "requiredLegalUrls": []
498
+ "supportedVariants": ["dense", "large", "sidebar"],
499
+ "requiredLegalUrls": ["privacyPolicy", "userAgreement"]
500
+ }
501
+ },
502
+ "wp-investor-kit-lead-nurturing": {
503
+ "definitionVersion": "1",
504
+ "kind": "lead",
505
+ "flow": {
506
+ "type": "single"
507
+ },
508
+ "fields": [
509
+ {
510
+ "name": "firstname",
511
+ "required": true,
512
+ "group": "name"
513
+ },
514
+ {
515
+ "name": "lastname",
516
+ "required": true,
517
+ "group": "name"
518
+ },
519
+ {
520
+ "name": "email",
521
+ "required": true
522
+ },
523
+ {
524
+ "name": "phone",
525
+ "required": true
526
+ }
527
+ ],
528
+ "ctaLabel": "Submit",
529
+ "consents": [
530
+ {
531
+ "definitionId": "lead-clickwrap",
532
+ "definitionVersion": "2"
533
+ }
534
+ ],
535
+ "editor": {
536
+ "label": "Investor Kit Lead Nurturing (WP GF 13)",
537
+ "description": "First name, last name, email, and phone required. Clickwrap notice only (lead-clickwrap v2). GF form 13 → HubSpot 1ebf148f.",
538
+ "whenToUse": "TBD",
539
+ "whenNotToUse": "TBD",
540
+ "options": [
541
+ "appearance",
542
+ "variant",
543
+ "twoColumn",
544
+ "heading",
545
+ "subheading",
546
+ "ctaLabel",
547
+ "legalUrls",
548
+ "successMessage",
549
+ "successUrl"
550
+ ],
551
+ "supportedAppearances": ["on-light", "on-dark"],
552
+ "supportedVariants": ["dense", "large", "sidebar"],
553
+ "requiredLegalUrls": ["privacyPolicy", "userAgreement"]
554
+ }
555
+ },
556
+ "wp-product-launch": {
557
+ "definitionVersion": "1",
558
+ "kind": "lead",
559
+ "flow": {
560
+ "type": "single"
561
+ },
562
+ "fields": [
563
+ {
564
+ "name": "firstname",
565
+ "required": true,
566
+ "group": "name"
567
+ },
568
+ {
569
+ "name": "lastname",
570
+ "required": true,
571
+ "group": "name"
572
+ },
573
+ {
574
+ "name": "email",
575
+ "required": true
576
+ },
577
+ {
578
+ "name": "phone",
579
+ "required": true
580
+ }
581
+ ],
582
+ "ctaLabel": "Reserve Yours Today",
583
+ "consents": [
584
+ {
585
+ "definitionId": "lead-clickwrap",
586
+ "definitionVersion": "2"
587
+ }
588
+ ],
589
+ "editor": {
590
+ "label": "Product Launch (WP GF 15)",
591
+ "description": "First name, last name, email, and phone required. Clickwrap notice only (lead-clickwrap v2). Product IPO/pre-IPO pages. GF form 15 → HubSpot 950c50a1.",
592
+ "whenToUse": "TBD",
593
+ "whenNotToUse": "TBD",
594
+ "options": [
595
+ "appearance",
596
+ "variant",
597
+ "twoColumn",
598
+ "heading",
599
+ "subheading",
600
+ "ctaLabel",
601
+ "legalUrls",
602
+ "successMessage",
603
+ "successUrl"
604
+ ],
605
+ "supportedAppearances": ["on-light", "on-dark"],
606
+ "supportedVariants": ["dense", "large", "sidebar"],
607
+ "requiredLegalUrls": ["privacyPolicy", "userAgreement"]
608
+ }
609
+ },
610
+ "wp-ira-full-lead": {
611
+ "definitionVersion": "1",
612
+ "kind": "lead",
613
+ "flow": {
614
+ "type": "single"
615
+ },
616
+ "fields": [
617
+ {
618
+ "name": "firstname",
619
+ "required": true,
620
+ "group": "name"
621
+ },
622
+ {
623
+ "name": "lastname",
624
+ "required": true,
625
+ "group": "name"
626
+ },
627
+ {
628
+ "name": "email",
629
+ "required": true
630
+ },
631
+ {
632
+ "name": "phone",
633
+ "required": true
634
+ }
635
+ ],
636
+ "ctaLabel": "Submit",
637
+ "consents": [
638
+ {
639
+ "definitionId": "lead-clickwrap",
640
+ "definitionVersion": "2"
641
+ }
642
+ ],
643
+ "editor": {
644
+ "label": "IRA Full Lead Form (WP GF 20)",
645
+ "description": "First name, last name, email, and phone required. Clickwrap notice only (lead-clickwrap v2). Host sets `ira_lead=true` as context. GF form 20 → HubSpot b42770ef.",
646
+ "whenToUse": "TBD",
647
+ "whenNotToUse": "TBD",
648
+ "options": [
649
+ "appearance",
650
+ "variant",
651
+ "twoColumn",
652
+ "heading",
653
+ "subheading",
654
+ "ctaLabel",
655
+ "legalUrls",
656
+ "successMessage",
657
+ "successUrl"
658
+ ],
659
+ "supportedAppearances": ["on-light", "on-dark"],
660
+ "supportedVariants": ["dense", "large", "sidebar"],
661
+ "requiredLegalUrls": ["privacyPolicy", "userAgreement"]
662
+ }
663
+ },
664
+ "wp-affiliate-ira-full-lead": {
665
+ "definitionVersion": "1",
666
+ "kind": "lead",
667
+ "flow": {
668
+ "type": "single"
669
+ },
670
+ "fields": [
671
+ {
672
+ "name": "firstname",
673
+ "required": true,
674
+ "group": "name"
675
+ },
676
+ {
677
+ "name": "lastname",
678
+ "required": true,
679
+ "group": "name"
680
+ },
681
+ {
682
+ "name": "email",
683
+ "required": true
684
+ },
685
+ {
686
+ "name": "phone",
687
+ "required": true
688
+ }
689
+ ],
690
+ "ctaLabel": "Submit",
691
+ "consents": [
692
+ {
693
+ "definitionId": "lead-clickwrap",
694
+ "definitionVersion": "2"
695
+ }
696
+ ],
697
+ "editor": {
698
+ "label": "Affiliate — IRA Full Lead Form (WP GF 21)",
699
+ "description": "First name, last name, email, and phone required. Clickwrap notice only (lead-clickwrap v2). Host supplies affiliate_id/affiliate_offer_id/affiliate_transaction_id as context (not schema fields). GF form 21 → HubSpot 1d4e44b3.",
700
+ "whenToUse": "TBD",
701
+ "whenNotToUse": "TBD",
702
+ "options": [
703
+ "appearance",
704
+ "variant",
705
+ "twoColumn",
706
+ "heading",
707
+ "subheading",
708
+ "ctaLabel",
709
+ "legalUrls",
710
+ "successMessage",
711
+ "successUrl"
712
+ ],
713
+ "supportedAppearances": ["on-light", "on-dark"],
714
+ "supportedVariants": ["dense", "large", "sidebar"],
715
+ "requiredLegalUrls": ["privacyPolicy", "userAgreement"]
716
+ }
717
+ },
718
+ "wp-full-lead-captcha": {
719
+ "definitionVersion": "1",
720
+ "kind": "lead",
721
+ "flow": {
722
+ "type": "single"
723
+ },
724
+ "fields": [
725
+ {
726
+ "name": "firstname",
727
+ "required": true,
728
+ "group": "name"
729
+ },
730
+ {
731
+ "name": "lastname",
732
+ "required": true,
733
+ "group": "name"
734
+ },
735
+ {
736
+ "name": "email",
737
+ "required": true
738
+ },
739
+ {
740
+ "name": "phone",
741
+ "required": true
742
+ }
743
+ ],
744
+ "ctaLabel": "Submit",
745
+ "consents": [
746
+ {
747
+ "definitionId": "lead-clickwrap",
748
+ "definitionVersion": "2"
749
+ }
750
+ ],
751
+ "editor": {
752
+ "label": "Full Lead Form — captcha (WP GF 22)",
753
+ "description": "First name, last name, email, and phone required. Clickwrap notice only (lead-clickwrap v2). reCAPTCHA is a host bot-control concern, not a schema field. GF form 22 → HubSpot 034c00e5.",
754
+ "whenToUse": "TBD",
755
+ "whenNotToUse": "TBD",
756
+ "options": [
757
+ "appearance",
758
+ "variant",
759
+ "twoColumn",
760
+ "heading",
761
+ "subheading",
762
+ "ctaLabel",
763
+ "legalUrls",
764
+ "successMessage",
765
+ "successUrl"
766
+ ],
767
+ "supportedAppearances": ["on-light", "on-dark"],
768
+ "supportedVariants": ["dense", "large", "sidebar"],
769
+ "requiredLegalUrls": ["privacyPolicy", "userAgreement"]
427
770
  }
428
771
  }
429
772
  },