bhl-forms 0.6.14 → 0.7.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 (94) hide show
  1. package/dist/bhl-forms.es.js +1757 -1759
  2. package/dist/bhl-forms.iife.js +4 -4
  3. package/dist/bhl-forms.modern.es.js +2804 -2811
  4. package/dist/bhl-forms.modern.iife.js +6 -6
  5. package/dist/bhl-forms.modern.umd.js +6 -6
  6. package/dist/bhl-forms.umd.js +4 -4
  7. package/dist/forms/accidentsAndInjuries.es.js +278 -215
  8. package/dist/forms/accidentsAndInjuries.iife.js +1 -1
  9. package/dist/forms/accidentsAndInjuries.json +1 -1
  10. package/dist/forms/appraisals.es.js +16 -7
  11. package/dist/forms/appraisals.iife.js +1 -1
  12. package/dist/forms/business.es.js +288 -226
  13. package/dist/forms/business.iife.js +1 -1
  14. package/dist/forms/business.json +1 -1
  15. package/dist/forms/childAndFamily.es.js +271 -214
  16. package/dist/forms/childAndFamily.iife.js +1 -1
  17. package/dist/forms/childAndFamily.json +1 -1
  18. package/dist/forms/childAndFamilySingle.es.js +614 -545
  19. package/dist/forms/childAndFamilySingle.iife.js +1 -1
  20. package/dist/forms/childAndFamilySingle.json +1 -1
  21. package/dist/forms/civilLawsuit.es.js +608 -541
  22. package/dist/forms/civilLawsuit.iife.js +1 -1
  23. package/dist/forms/civilLawsuit.json +1 -1
  24. package/dist/forms/coins.es.js +16 -7
  25. package/dist/forms/coins.iife.js +1 -1
  26. package/dist/forms/contracts.es.js +275 -217
  27. package/dist/forms/contracts.iife.js +1 -1
  28. package/dist/forms/contracts.json +1 -1
  29. package/dist/forms/criminal.es.js +631 -562
  30. package/dist/forms/criminal.iife.js +1 -1
  31. package/dist/forms/criminal.json +1 -1
  32. package/dist/forms/divorce.es.js +614 -545
  33. package/dist/forms/divorce.iife.js +1 -1
  34. package/dist/forms/divorce.json +1 -1
  35. package/dist/forms/employmentAndWorkplace.es.js +555 -496
  36. package/dist/forms/employmentAndWorkplace.iife.js +1 -1
  37. package/dist/forms/employmentAndWorkplace.json +1 -1
  38. package/dist/forms/generalHomeImprovement.es.js +3224 -0
  39. package/dist/forms/generalHomeImprovement.iife.js +1 -0
  40. package/dist/forms/generalHomeImprovement.json +1 -0
  41. package/dist/forms/generalLegal.es.js +274 -216
  42. package/dist/forms/generalLegal.iife.js +1 -1
  43. package/dist/forms/generalLegal.json +1 -1
  44. package/dist/forms/generalLegalJustAnswer.es.js +4534 -0
  45. package/dist/forms/generalLegalJustAnswer.iife.js +1 -0
  46. package/dist/forms/generalLegalJustAnswer.json +1 -0
  47. package/dist/forms/generalLegalPopUnder.es.js +275 -217
  48. package/dist/forms/generalLegalPopUnder.iife.js +1 -1
  49. package/dist/forms/generalLegalPopUnder.json +1 -1
  50. package/dist/forms/generalLegalPopUnderSingle.es.js +645 -573
  51. package/dist/forms/generalLegalPopUnderSingle.iife.js +1 -1
  52. package/dist/forms/generalLegalPopUnderSingle.json +1 -1
  53. package/dist/forms/generalLegalSingle.es.js +645 -573
  54. package/dist/forms/generalLegalSingle.iife.js +1 -1
  55. package/dist/forms/generalLegalSingle.json +1 -1
  56. package/dist/forms/generalLegalThankYou.es.js +137 -130
  57. package/dist/forms/generalLegalThankYou.iife.js +1 -1
  58. package/dist/forms/generalLegalThankYouConsultation.es.js +647 -575
  59. package/dist/forms/generalLegalThankYouConsultation.iife.js +1 -1
  60. package/dist/forms/generalLegalThankYouConsultation.json +1 -1
  61. package/dist/forms/harassmentAndDiscrimination.es.js +271 -214
  62. package/dist/forms/harassmentAndDiscrimination.iife.js +1 -1
  63. package/dist/forms/harassmentAndDiscrimination.json +1 -1
  64. package/dist/forms/landlordTenant.es.js +287 -230
  65. package/dist/forms/landlordTenant.iife.js +1 -1
  66. package/dist/forms/landlordTenant.json +1 -1
  67. package/dist/forms/malpractice.es.js +276 -217
  68. package/dist/forms/malpractice.iife.js +1 -1
  69. package/dist/forms/malpractice.json +1 -1
  70. package/dist/forms/mechanics.es.js +171 -165
  71. package/dist/forms/mechanics.iife.js +1 -1
  72. package/dist/forms/mechanics.json +1 -1
  73. package/dist/forms/patentsAndIP.es.js +617 -548
  74. package/dist/forms/patentsAndIP.iife.js +1 -1
  75. package/dist/forms/patentsAndIP.json +1 -1
  76. package/dist/forms/realEstate.es.js +272 -215
  77. package/dist/forms/realEstate.iife.js +1 -1
  78. package/dist/forms/realEstate.json +1 -1
  79. package/dist/forms/repossession.es.js +275 -217
  80. package/dist/forms/repossession.iife.js +1 -1
  81. package/dist/forms/repossession.json +1 -1
  82. package/dist/forms/ssdi.es.js +139 -138
  83. package/dist/forms/ssdi.iife.js +1 -1
  84. package/dist/forms/ssdi.json +1 -1
  85. package/dist/forms/testForm.es.js +55 -52
  86. package/dist/forms/testForm.iife.js +1 -1
  87. package/dist/forms/testRedirects.es.js +28 -22
  88. package/dist/forms/testRedirects.iife.js +1 -1
  89. package/dist/forms/vets.es.js +16 -7
  90. package/dist/forms/vets.iife.js +1 -1
  91. package/dist/forms/willsAndTrusts.es.js +272 -213
  92. package/dist/forms/willsAndTrusts.iife.js +1 -1
  93. package/dist/forms/willsAndTrusts.json +1 -1
  94. package/package.json +3 -3
@@ -0,0 +1,3224 @@
1
+ function merge() {
2
+ return Object.assign({}, ...arguments)
3
+ }
4
+
5
+ function HomeImprovementRedirectUrl() {
6
+ return 'https://listings.zipcontractor.com/api/v1/redirect?zone_id=4&vertical=HomeImprovement&category=${properties.Category}&zip_code=${properties.Zip}&sub_id=${properties.vid}'
7
+ }
8
+
9
+ const DEFAULT_COMMENTS_LABEL = 'Please briefly describe your issue in a few words:';
10
+ const DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC = '$getKey($meta, "commentsPlaceholders." + $get(Category).value, $meta.defaultCommentsPlaceholder)';
11
+ const DEFAULT_FINAL_HEADLINE_DYNAMIC_LEGAL = '$getKey($meta, "finalHeadlines." + $get(Type_Of_Legal_Problem).value, $meta.defaultFinalHeadline)';
12
+ const DEFAULT_FINAL_SUBHEADLINE_DYNAMIC_LEGAL = '$getKey($meta, "finalSubHeadlines." + $get(Type_Of_Legal_Problem).value, $meta.defaultFinalSubHeadline)';
13
+
14
+ const DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC_HOME_IMPROVEMENT = DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC;
15
+ const DEFAULT_FINAL_HEADLINE_HOME_IMPROVEMENT = 'We Found Contractors Near You';
16
+ const DEFAULT_FINAL_SUBHEADLINE_HOME_IMPROVEMENT = 'Compare free quotes and save! Please verify your contact information.';
17
+ const TCPA_LANGUAGE_HOME_IMPROVEMENT = "By checking this box, I a) agree to the Terms of Use, and b) consent to be contacted by contractors, contractor networks, and partners of this website using live, autodialed, pre-recorded, or artificial voice calls, as well as text messages. Your consent is not required as a condition of purchasing any goods or services. To submit this request without this consent, call XXX-XXX-XXXX.";
18
+ const defaultHomeImprovementCrossSells = [
19
+ 'Painting',
20
+ 'Plumbing',
21
+ 'Electrical',
22
+ 'Siding',
23
+ 'Remodeling',
24
+ 'Roofing',
25
+ ];
26
+ const CROSS_SELL_OPTION_MAP_HOME_IMPROVEMENT = {
27
+ // Values can be a list or a map of value -> display value
28
+ 'Additions': [
29
+ 'Painting',
30
+ 'Landscaping',
31
+ 'Plumbing',
32
+ 'Appliances',
33
+ 'Heating and Cooling',
34
+ 'Driveways',
35
+ ],
36
+ // 'Appliances': [],
37
+ // 'Appraisals': [],
38
+ // 'Cabinets': [],
39
+ // 'Carpentry': [],
40
+ // 'Carpets': [],
41
+ // 'Cleaning': [],
42
+ // 'Countertops': [],
43
+ // 'Decks and Porches': [],
44
+ // 'Demolition': [],
45
+ // 'Doors': [],
46
+ // 'Driveways': [],
47
+ // 'Drywall and Plaster': [],
48
+ 'Electrical': [
49
+ 'Painting',
50
+ 'Plumbing',
51
+ 'Drywall and Plaster',
52
+ 'Flooring',
53
+ 'Remodeling',
54
+ 'Roofing',
55
+ ],
56
+ // 'Fencing': [],
57
+ 'Flooring': [
58
+ 'Painting',
59
+ 'Plumbing',
60
+ 'Electrical',
61
+ 'Carpentry',
62
+ 'Remodeling',
63
+ 'Roofing',
64
+ ],
65
+ // 'Foundations': [],
66
+ // 'Garage Doors': [],
67
+ 'General Contractors': [
68
+ 'Painting',
69
+ 'Plumbing',
70
+ 'Electrical',
71
+ 'Flooring',
72
+ 'Landscaping',
73
+ 'Roofing',
74
+ ],
75
+ // 'Gutters': [],
76
+ // 'Handyman': [],
77
+ // 'Holiday Decorators': [],
78
+ // 'Smart Home': [],
79
+ 'Home Builders': [
80
+ 'Painting',
81
+ 'Driveways',
82
+ 'Masonry and Concrete',
83
+ 'Pest Control',
84
+ 'Landscaping',
85
+ 'Windows',
86
+ ],
87
+ // 'Home Inspection': [],
88
+ // 'Home Organization': [],
89
+ // 'Home Security': [],
90
+ // 'Home Staging': [],
91
+ // 'Home Theater': [],
92
+ // 'Home Warranties': [],
93
+ // 'Hot Tubs': [],
94
+ // 'Heating and Cooling': [],
95
+ // 'Insulation': [],
96
+ // 'Junk Removal': [],
97
+ // 'Landscaping': [],
98
+ // 'Locksmiths': [],
99
+ // 'Masonry and Concrete': [],
100
+ // 'Restoration': [],
101
+ // // 'Moving': [],
102
+ 'Painting': [
103
+ 'Plumbing',
104
+ 'Electrical',
105
+ 'Flooring',
106
+ 'Remodeling',
107
+ 'Roofing',
108
+ 'Windows',
109
+ ],
110
+ // 'Pest Control': [],
111
+ // 'Pools': [],
112
+ 'Plumbing': [
113
+ 'Painting',
114
+ 'Appliances',
115
+ 'Electrical',
116
+ 'Flooring',
117
+ 'Remodeling',
118
+ 'Roofing',
119
+ ],
120
+ // 'Pressure Washing': [],
121
+ 'Remodeling': [
122
+ 'Painting',
123
+ 'Landscaping',
124
+ 'Electrical',
125
+ 'Flooring',
126
+ 'Concrete and Masonry',
127
+ 'Roofing',
128
+ ],
129
+ 'Roofing': [
130
+ 'Painting',
131
+ 'Plumbing',
132
+ 'Electrical',
133
+ 'Flooring',
134
+ 'Remodeling',
135
+ 'Windows',
136
+ ],
137
+ // 'Sheds': [],
138
+ // 'Siding': [],
139
+ // 'Solar': [],
140
+ // 'Tiling': [],
141
+ // 'Walk-in Tubs': [],
142
+ // 'Waterproofing': [],
143
+ // 'Window Cleaning': [],
144
+ // 'Windows': []
145
+ '*': defaultHomeImprovementCrossSells,
146
+ };
147
+
148
+ // ------ Common Base Settings
149
+
150
+ const checkbox = (updates) => {
151
+ if (updates.name && !updates.id) {
152
+ updates.id = updates.name;
153
+ }
154
+ return merge({
155
+ $formkit: 'checkbox',
156
+ validation: 'required',
157
+ validationMessages: {
158
+ required: 'Field is required'
159
+ }
160
+ }, updates)
161
+ };
162
+
163
+ const col2Checkbox = (updates) => {
164
+ if (!updates || !updates.legendClass) {
165
+ updates.legendClass = 'required';
166
+ }
167
+ updates.fieldsetClass = '$reset';
168
+ updates.optionsClass = 't-pl-8 md:t-pl-2 t-pt-3 t-grid t-grid-cols-1 md:t-grid-cols-2';
169
+ updates.innerClass = 't-items-start';
170
+ updates.wrapperClass = '$reset t-flex t-cursor-pointer t-mb-3';
171
+ return checkbox(updates)
172
+ };
173
+
174
+ const radio = (updates) => {
175
+ if (updates.name && !updates.id) {
176
+ updates.id = updates.name;
177
+ }
178
+ return merge({
179
+ $formkit: 'radio',
180
+ validation: 'required',
181
+ validationMessages: {
182
+ required: 'Field is required'
183
+ },
184
+ optionsClass: 't-pt-3 t-pl-1',
185
+ legendClass: 'required'
186
+ }, updates)
187
+ };
188
+
189
+ const verticalRadio = (updates) => {
190
+ updates.legendClass = 'required';
191
+ updates.fieldsetClass = '$reset t-flex t-justify-center';
192
+ updates.optionsClass = 't-pl-2 t-pt-3';
193
+ updates.innerClass = 't-items-center';
194
+ updates.wrapperClass = '$reset t-flex t-cursor-pointer t-mb-3';
195
+ updates.optionClass = 't-pl-4 md:t-pl-12';
196
+ updates.messagesClass = 't-flex t-justify-center';
197
+ return radio(updates)
198
+ };
199
+
200
+ const select = (updates) => {
201
+ if (updates.name && !updates.id) {
202
+ updates.id = updates.name;
203
+ }
204
+ return merge({
205
+ $formkit: 'select',
206
+ placeholder: "Please Select",
207
+ validation: 'required',
208
+ validationMessages: {
209
+ required: 'Field is required'
210
+ },
211
+ inputClass: 't-bg-white',
212
+ labelClass: 'required'
213
+ }, updates)
214
+ };
215
+
216
+ const verticalSelect = (updates) => {
217
+ updates.labelClass = 'required';
218
+ updates.wrapperClass = 't-flex t-justify-center';
219
+ updates.messagesClass = 't-flex t-justify-center';
220
+ updates.inputClass = 't-min-w-[150px] t-bg-white';
221
+ updates.helpClass = 't-mt-2.5 t-text-center';
222
+ return select(updates)
223
+ };
224
+
225
+ const text = (updates) => {
226
+ if (updates.name && !updates.id) {
227
+ updates.id = updates.name;
228
+ }
229
+ return merge({
230
+ $formkit: 'text',
231
+ validation: 'required',
232
+ validationMessages: {
233
+ required: 'Field is required'
234
+ },
235
+ labelClass: 'required'
236
+ }, updates)
237
+ };
238
+
239
+ const sbsText = (updates) => {
240
+ updates.wrapperClass = 'side-by-side t-items-center';
241
+ return text(updates)
242
+ };
243
+
244
+ const textArea = (updates) => {
245
+ if (updates.name && !updates.id) {
246
+ updates.id = updates.name;
247
+ }
248
+ return merge({
249
+ $formkit: 'textarea',
250
+ rows: 5,
251
+ maxlength: 500,
252
+ validation: 'required',
253
+ validationMessages: {
254
+ required: 'Field is required'
255
+ },
256
+ innerClass: 't-max-w-xl',
257
+ labelClass: 'required'
258
+ }, updates)
259
+ };
260
+
261
+ const addressCenter = (scope) => text({
262
+ placeholder: '10 Example St',
263
+ name: scope ? scope + ':' + 'Address' : 'Address',
264
+ help: 'Used to verify your location is supported',
265
+ autocomplete: "street-address",
266
+ 'data-tf-sensitive': 'false',
267
+ maxlength: 100,
268
+ validationMessages: {
269
+ required: 'Address is required'
270
+ },
271
+ wrapperClass: 't-flex t-justify-center',
272
+ messagesClass: 't-flex t-justify-center',
273
+ inputClass: 't-text-center',
274
+ helpClass: 't-mt-2.5 !t-text-sm t-text-center'
275
+ });
276
+
277
+ const email = (scope) => sbsText({
278
+ $formkit: 'email',
279
+ name: scope ? scope + ':' + 'Email' : 'Email',
280
+ label: 'Email Address:',
281
+ placeholder: 'email@domain.com',
282
+ autocomplete: 'email',
283
+ 'data-tf-sensitive': 'false',
284
+ validation: 'required|email',
285
+ validationMessages: {
286
+ required: 'Email is required',
287
+ email: 'Invalid Email'
288
+ }
289
+ });
290
+
291
+ const firstName = (scope) => sbsText({
292
+ label: 'First Name:',
293
+ placeholder: 'First',
294
+ name: scope ? scope + ':' + 'First_Name' : 'First_Name',
295
+ autocomplete: "given-name",
296
+ validationMessages: {
297
+ required: 'First Name is required'
298
+ }
299
+ });
300
+
301
+ const lastName = (scope) => sbsText({
302
+ label: 'Last Name:',
303
+ placeholder: 'Last',
304
+ name: scope ? scope + ':' + 'Last_Name' : 'Last_Name',
305
+ autocomplete: "family-name",
306
+ validationMessages: {
307
+ required: 'Last Name is required'
308
+ }
309
+ });
310
+
311
+ const phone = (scope) => sbsText({
312
+ $formkit: 'tel',
313
+ name: scope ? scope + ':' + 'Primary_Phone' : 'Primary_Phone',
314
+ label: 'Phone Number:',
315
+ placeholder: '###-###-####',
316
+ maxlength: 12,
317
+ help: '10-digit phone number, hyphens optional',
318
+ autocomplete: 'tel-national',
319
+ 'data-tf-sensitive': 'false',
320
+ validation: 'required|matches:/^[0-9]{3}-?[0-9]{3}-?[0-9]{4}$/|valid_phone',
321
+ validationMessages: {
322
+ required: 'Field is required',
323
+ matches: 'Invalid Phone Format, use ###-###-####',
324
+ valid_phone: 'Invalid Phone Number'
325
+ },
326
+ helpClass: "t-mt-2.5 md:t-text-right md:t-mt-[-2px]"
327
+ });
328
+
329
+ const zipcodeCenter = (updates = {}, scope) => text({
330
+ placeholder: '#####',
331
+ help: updates.help ?? "We try to match you with local help",
332
+ name: scope ? scope + ':' + 'Zip' : 'Zip',
333
+ maxlength: 5,
334
+ inputmode: "numeric",
335
+ autocomplete: 'postal-code',
336
+ validation: 'required|matches:/^[0-9]{5}$/',
337
+ validationMessages: {
338
+ required: 'Zip Code is required',
339
+ matches: 'Invalid Zip Code'
340
+ },
341
+ wrapperClass: 't-flex t-justify-center',
342
+ messagesClass: 't-flex t-justify-center',
343
+ inputClass: 't-text-center',
344
+ helpClass: 't-mt-2.5 !t-text-sm t-text-center'
345
+ });
346
+
347
+ const comments = (updates, scope) => textArea(
348
+ merge({
349
+ name: scope ? scope + ':' + 'Comments' : 'Comments',
350
+ label: 'Please briefly describe your situation in a few words:',
351
+ placeholder: 'For Example: "I would like help with child support payments" or "I need help with visitation rights"'
352
+ }, updates)
353
+ );
354
+
355
+ const TCPAConsent = (scope) => ({
356
+ $formkit: 'checkbox',
357
+ label: '$meta.tcpaLanguage',
358
+ name: scope ? scope + ':' + 'TCPA_Opt_In' : 'TCPA_Opt_In',
359
+ 'data-tf-sensitive': 'false',
360
+ validation: 'required|accepted',
361
+ validationMessages: {
362
+ required: 'Consent is required',
363
+ accepted: 'Consent is required'
364
+ },
365
+ classes: {
366
+ label: "t-text-xs t-text-slate-500 t-font-normal"
367
+ }
368
+ });
369
+
370
+
371
+ // ------ Home Improvement
372
+
373
+
374
+ const homeImprovementCrossSells$1 = () => col2Checkbox({
375
+ id: 'Home_Improvement_CrossSells',
376
+ name: 'Home_Improvement_CrossSells',
377
+ help: 'Just hit "Next" if none apply',
378
+ helpClass: 't-text-center !t-text-sm',
379
+ validation: null,
380
+ options: '$getCrossSellOptions($get(form), $getVal($get(form), "Category"))',
381
+ });
382
+
383
+ const HomeImprovementCategoryOptions = [
384
+ 'Additions',
385
+ 'Appliances',
386
+ 'Appraisals',
387
+ 'Cabinets',
388
+ 'Carpentry',
389
+ 'Carpets',
390
+ 'Cleaning',
391
+ 'Countertops',
392
+ 'Decks and Porches',
393
+ 'Demolition',
394
+ 'Doors',
395
+ 'Driveways',
396
+ 'Drywall and Plaster',
397
+ 'Electrical',
398
+ 'Fencing',
399
+ 'Flooring',
400
+ 'Foundations',
401
+ 'Garage Doors',
402
+ 'General Contractors',
403
+ 'Gutters',
404
+ 'Handyman',
405
+ 'Holiday Decorators',
406
+ 'Smart Home',
407
+ 'Home Builders',
408
+ 'Home Inspection',
409
+ 'Home Organization',
410
+ 'Home Security',
411
+ 'Home Staging',
412
+ 'Home Theater',
413
+ 'Home Warranties',
414
+ 'Hot Tubs',
415
+ 'Heating and Cooling',
416
+ 'Insulation',
417
+ 'Junk Removal',
418
+ 'Landscaping',
419
+ 'Locksmiths',
420
+ 'Masonry and Concrete',
421
+ 'Restoration',
422
+ // 'Moving',
423
+ 'Painting',
424
+ 'Pest Control',
425
+ 'Pools',
426
+ 'Plumbing',
427
+ 'Pressure Washing',
428
+ 'Remodeling',
429
+ 'Roofing',
430
+ 'Sheds',
431
+ 'Siding',
432
+ 'Solar',
433
+ 'Tiling',
434
+ 'Walk-in Tubs',
435
+ 'Waterproofing',
436
+ 'Window Cleaning',
437
+ 'Windows'
438
+ ];
439
+
440
+ const homeImprovementCategory$1 = (updates) => verticalSelect(merge({
441
+ name: 'Category',
442
+ id: 'Category',
443
+ options: HomeImprovementCategoryOptions,
444
+ }, updates));
445
+
446
+ const timeframe$1 = (scope) => verticalRadio({
447
+ name: scope ? scope + ':' + 'Timeframe' : 'Timeframe',
448
+ // label: 'What is the project timeframe?',
449
+ options: [
450
+ 'Immediate',
451
+ '1-6 Months',
452
+ 'More than 6 Months'
453
+ ]
454
+ });
455
+
456
+ const ownHome$1 = (scope) => verticalRadio({
457
+ name: scope ? scope + ':' + 'Own_Home' : 'Own_Home',
458
+ // label: 'Do you own the home?',
459
+ options: [
460
+ 'Yes',
461
+ 'No',
462
+ 'No but authorized'
463
+ ]
464
+ });
465
+
466
+ const additionsSubType$1 = (scope) => verticalSelect({
467
+ name: scope ? scope + ':' + 'Additions_Subtype' : 'Additions_Subtype',
468
+ // label: 'What type of addition?',
469
+ options: [
470
+ 'Garage',
471
+ 'In-Law Suite',
472
+ 'Additional Rooms',
473
+ 'Additional Stories',
474
+ 'Bump-out',
475
+ 'Sunroom',
476
+ 'Accessory Dwelling Unit',
477
+ 'Basement Remodeling',
478
+ 'Attic Remodeling',
479
+ 'Not Sure or Other'
480
+ ]
481
+ });
482
+
483
+ const constructionAreaSize$1 = (scope) => verticalRadio({
484
+ name: scope ? scope + ':' + 'Construction_Area_Size' : 'Construction_Area_Size',
485
+ // label: 'What is the size of the construction area?',
486
+ options: [
487
+ 'Less than 1000 square feet',
488
+ '1000 to 2000 square feet',
489
+ 'More than 2000 square feet'
490
+ ]
491
+ });
492
+
493
+
494
+ const homeImprovementWorkType$1 = (scope) => verticalRadio({
495
+ name: scope ? scope + ':' + 'Work_Type' : 'Work_Type',
496
+ // label: 'What type of work do you need?',
497
+ options: [
498
+ 'Install or Replace',
499
+ 'Repair',
500
+ 'Not Sure or Other'
501
+ ]
502
+ });
503
+
504
+ const applianceType$1 = (scope) => verticalSelect({
505
+ name: scope ? scope + ':' + 'Appliance_Type' : 'Appliance_Type',
506
+ // label: 'What type of appliance?',
507
+ options: [
508
+ 'Cooktop',
509
+ 'Dishwasher',
510
+ 'Dryer',
511
+ 'Freezer',
512
+ 'Garbage Disposal',
513
+ 'Ice Maker',
514
+ 'Microwave',
515
+ 'Range',
516
+ 'Refrigerator',
517
+ 'Stove',
518
+ 'Trash Compactor',
519
+ 'Oven',
520
+ 'Vacuum',
521
+ 'Washer Machine',
522
+ 'Not Sure or Other',
523
+ ]
524
+ });
525
+
526
+
527
+ const cabinetWorkType$1 = (scope) => verticalRadio({
528
+ name: scope ? scope + ':' + 'Cabinet_Work_Type' : 'Cabinet_Work_Type',
529
+ // label: 'What type of work do you need?',
530
+ options: [
531
+ 'Install',
532
+ 'Refinish',
533
+ 'Reface',
534
+ 'Repair',
535
+ 'Not Sure or Other'
536
+ ]
537
+ });
538
+
539
+ const carpentrySubtype$1 = (scope) => verticalSelect({
540
+ name: scope ? scope + ':' + 'Carpentry_Subtype' : 'Carpentry_Subtype',
541
+ // label: 'What type of carpentry work?',
542
+ options: [
543
+ 'Closets',
544
+ 'Custom Furniture',
545
+ 'Built-ins',
546
+ 'Framing',
547
+ 'Interior Trim',
548
+ 'Exterior Trim',
549
+ 'Windows',
550
+ 'Stairways and Railings',
551
+ 'Gazebo or Pergola',
552
+ 'Multiple Jobs',
553
+ 'Not Sure or Other'
554
+ ]
555
+ });
556
+
557
+ const carpetWorkType$1 = (scope) => verticalRadio({
558
+ name: scope ? scope + ':' + 'Carpet_Work_Type' : 'Carpet_Work_Type',
559
+ // label: 'What type of work do you need?',
560
+ options: [
561
+ 'Install or Replace',
562
+ 'Repair',
563
+ 'Cleaning',
564
+ 'Not Sure or Other'
565
+ ]
566
+ });
567
+
568
+ const cleaningSubtype$1 = (scope) => verticalSelect({
569
+ name: scope ? scope + ':' + 'Cleaning_Subtype' : 'Cleaning_Subtype',
570
+ // label: 'What type of cleaning?',
571
+ options: [
572
+ 'Whole Home',
573
+ 'Office',
574
+ 'Carpets',
575
+ 'Windows',
576
+ 'Air Ducts or Vents',
577
+ 'Chimney',
578
+ 'Deck',
579
+ 'Tile or Grout',
580
+ 'Garage',
581
+ 'Shed',
582
+ 'Gutters',
583
+ 'Pool',
584
+ 'Junk Removal',
585
+ 'Not Sure or Other'
586
+ ]
587
+ });
588
+
589
+ const countertopMaterial$1 = (scope) => verticalSelect({
590
+ name: scope ? scope + ':' + 'Countertop_Material' : 'Countertop_Material',
591
+ // label: 'What type of countertop?',
592
+ options: [
593
+ 'Concrete',
594
+ 'Granite',
595
+ 'Laminate',
596
+ 'Marble',
597
+ 'Quartz',
598
+ 'Stainless Steel',
599
+ 'Wood',
600
+ 'Not Sure or Other'
601
+ ]
602
+ });
603
+
604
+ const deckWorkType$1 = (scope) => verticalRadio({
605
+ name: scope ? scope + ':' + 'Deck_Work_Type' : 'Deck_Work_Type',
606
+ // label: 'What type of work do you need?',
607
+ options: [
608
+ 'Paint or Stain',
609
+ 'Install or Replace',
610
+ 'Repair',
611
+ 'Not Sure or Other'
612
+ ]
613
+ });
614
+
615
+ const demolitionSubtype$1 = (scope) => verticalRadio({
616
+ name: scope ? scope + ':' + 'Demolition_Subtype' : 'Demolition_Subtype',
617
+ // label: 'What type of demolition?',
618
+ options: [
619
+ 'Whole Structure',
620
+ 'Partial Home',
621
+ 'Shed',
622
+ 'Not Sure or Other'
623
+ ]
624
+ });
625
+
626
+ const doorSubtype$1 = (scope) => verticalRadio({
627
+ name: scope ? scope + ':' + 'Door_Subtype' : 'Door_Subtype',
628
+ // label: 'What type of door?',
629
+ options: [
630
+ 'Interior',
631
+ 'Exterior',
632
+ 'Garage',
633
+ 'Sliding',
634
+ 'Storm',
635
+ 'Not Sure or Other'
636
+ ]
637
+ });
638
+
639
+ const drivewayWorkType$1 = (scope) => verticalRadio({
640
+ name: scope ? scope + ':' + 'Driveway_Work_Type' : 'Driveway_Work_Type',
641
+ // label: 'What type of work do you need?',
642
+ options: [
643
+ 'Install or Replace',
644
+ 'Repair',
645
+ 'Sealing',
646
+ 'Not Sure or Other'
647
+ ]
648
+ });
649
+
650
+ const drivewayMaterial$1 = (scope) => verticalRadio({
651
+ name: scope ? scope + ':' + 'Driveway_Material' : 'Driveway_Material',
652
+ // label: 'What type of driveway material?',
653
+ options: [
654
+ 'Asphalt',
655
+ 'Brick',
656
+ 'Cobblestone',
657
+ 'Pebble',
658
+ 'Concrete',
659
+ 'Pavers',
660
+ 'Not Sure or Other'
661
+ ]
662
+ });
663
+
664
+ const wallSurfaceType$1 = (scope) => verticalRadio({
665
+ name: scope ? scope + ':' + 'Wall_Surface_Type' : 'Wall_Surface_Type',
666
+ // label: 'What type of surface?',
667
+ options: [
668
+ 'Drywall',
669
+ 'Plaster',
670
+ 'Stucco',
671
+ 'Not Sure or Other'
672
+ ]
673
+ });
674
+
675
+ const electricalSubtype$1 = (scope) => verticalSelect({
676
+ name: scope ? scope + ':' + 'Electrical_Subtype' : 'Electrical_Subtype',
677
+ // label: 'What type of electrical work do you need?',
678
+ options: [
679
+ 'Electrical Panel',
680
+ 'Outlets and Fixtures',
681
+ 'Home Theater',
682
+ 'Exhaust Fans',
683
+ 'Ceiling Fans',
684
+ 'EV Charging Station',
685
+ 'Addition or Remodel',
686
+ 'Generator',
687
+ 'Outdoor Lighting',
688
+ 'Pet Fence',
689
+ 'Thermostat',
690
+ 'Wall or Baseboard Heater',
691
+ 'Holiday Lighting',
692
+ 'Not Sure or Other'
693
+ ]
694
+ });
695
+
696
+ const fenceMaterial$1 = (scope) => verticalRadio({
697
+ name: scope ? scope + ':' + 'Fence_Material' : 'Fence_Material',
698
+ // label: 'What type of fence material?',
699
+ options: [
700
+ 'Aluminum',
701
+ 'Chain Link',
702
+ 'Wood',
703
+ 'Wire',
704
+ 'Vinyl',
705
+ 'Iron',
706
+ 'Not Sure or Other'
707
+ ]
708
+ });
709
+
710
+ const flooringMaterial$1 = (scope) => verticalRadio({
711
+ name: scope ? scope + ':' + 'Flooring_Material' : 'Flooring_Material',
712
+ // label: 'What type of flooring material?',
713
+ options: [
714
+ 'Carpet',
715
+ 'Concrete',
716
+ 'Hardwood',
717
+ 'Laminate',
718
+ 'Linoleum',
719
+ 'Slate',
720
+ 'Tile',
721
+ 'Vinyl',
722
+ 'Not Sure or Other'
723
+ ]
724
+ });
725
+
726
+ const generalContractorSubtype$1 = (scope) => verticalRadio({
727
+ name: scope ? scope + ':' + 'General_Contractor_Subtype' : 'General_Contractor_Subtype',
728
+ // label: 'What type of general contractor work do you need?',
729
+ options: [
730
+ 'Remodeling',
731
+ 'Additions',
732
+ 'Major Home Repairs',
733
+ 'Excavation',
734
+ 'Demolition',
735
+ 'Dumpster Rental',
736
+ 'Not Sure or Other'
737
+ ]
738
+ });
739
+
740
+ const gutterMaterial$1 = (scope) => verticalRadio({
741
+ name: scope ? scope + ':' + 'Gutter_Material' : 'Gutter_Material',
742
+ // label: 'What type of gutter material?',
743
+ options: [
744
+ 'Galvanized',
745
+ 'Metal',
746
+ 'PVC',
747
+ 'Wood',
748
+ 'Not Sure or Other'
749
+ ]
750
+ });
751
+
752
+ const guttersWorkType$1 = (scope) => verticalRadio({
753
+ name: scope ? scope + ':' + 'Gutters_Work_Type' : 'Gutters_Work_Type',
754
+ options: [
755
+ 'Install or Replace',
756
+ 'Repair',
757
+ 'Cleaning',
758
+ 'Not Sure or Other'
759
+ ]
760
+ });
761
+
762
+ const smartHomeSubtype$1 = (scope) => verticalRadio({
763
+ name: scope ? scope + ':' + 'Smart_Home_Subtype' : 'Smart_Home_Subtype',
764
+ // label: 'What type of smart home work do you need?',
765
+ options: [
766
+ 'Thermostats',
767
+ 'Video Doorbells',
768
+ 'Camera Systems',
769
+ 'Lighting',
770
+ 'Speaker Systems',
771
+ 'Not Sure or Other'
772
+ ]
773
+ });
774
+
775
+ const homeOrganizationSubtype$1 = (scope) => verticalRadio({
776
+ name: scope ? scope + ':' + 'Home_Organization_Subtype' : 'Home_Organization_Subtype',
777
+ // label: 'What type of home organization work do you need?',
778
+ options: [
779
+ 'Packing or Unpacking',
780
+ 'Room Organization',
781
+ 'Shed Organization',
782
+ 'Storage Solutions',
783
+ 'Decluttering',
784
+ 'Not Sure or Other'
785
+ ]
786
+ });
787
+
788
+ const numberOfRooms$1 = (scope) => verticalRadio({
789
+ name: scope ? scope + ':' + 'Number_Of_Rooms' : 'Number_Of_Rooms',
790
+ // label: 'How many rooms?',
791
+ options: [
792
+ '1',
793
+ '2',
794
+ '3',
795
+ '4',
796
+ '5 or more'
797
+ ]
798
+ });
799
+
800
+ const homeTheaterSubtype$1 = (scope) => verticalRadio({
801
+ name: scope ? scope + ':' + 'Home_Theater_Subtype' : 'Home_Theater_Subtype',
802
+ // label: 'What type of home theater work do you need?',
803
+ options: [
804
+ 'Hang TV',
805
+ 'Install Sound System',
806
+ 'Wiring',
807
+ 'Troubleshooting',
808
+ 'Not Sure or Other'
809
+ ]
810
+ });
811
+
812
+ const heatingCoolingSubtype$1 = (scope) => verticalSelect({
813
+ name: scope ? scope + ':' + 'Heating_Cooling_Subtype' : 'Heating_Cooling_Subtype',
814
+ // label: 'What type of heating and cooling work do you need?',
815
+ options: [
816
+ 'Central Air',
817
+ 'Humidifier',
818
+ 'Ducts and Vents',
819
+ 'Furnace',
820
+ 'Heat Pump',
821
+ 'Radiant Floor',
822
+ 'Swamp Cooler',
823
+ 'Not Sure or Other'
824
+ ]
825
+ });
826
+
827
+ const fuelSource$1 = (scope) => verticalRadio({
828
+ name: scope ? scope + ':' + 'Fuel_Source' : 'Fuel_Source',
829
+ // label: 'What is the fuel source?',
830
+ options: [
831
+ 'Gas',
832
+ 'Oil',
833
+ 'Electric',
834
+ 'Propane',
835
+ 'Not Sure or Other'
836
+ ]
837
+ });
838
+
839
+ const insulationSubtype$1 = (scope) => verticalRadio({
840
+ name: scope ? scope + ':' + 'Insulation_Subtype' : 'Insulation_Subtype',
841
+ // label: 'What type of insulation work do you need?',
842
+ options: [
843
+ 'Batt or Roll',
844
+ 'Spray Foam',
845
+ 'Blown-in',
846
+ 'Reflective',
847
+ 'Not Sure or Other'
848
+ ]
849
+ });
850
+
851
+ const landscapingSubtype$1 = (scope) => verticalSelect({
852
+ name: scope ? scope + ':' + 'Landscaping_Subtype' : 'Landscaping_Subtype',
853
+ // label: 'What type of landscaping work do you need?',
854
+ options: [
855
+ 'Lawn Mowing',
856
+ 'Lawn Care or Fertilization',
857
+ 'Yard or Leaf Cleanup',
858
+ 'Patios or Walkways',
859
+ 'Stonework',
860
+ 'Architects',
861
+ 'Landscape Construction',
862
+ 'Outdoor Lighting',
863
+ 'Grading',
864
+ 'Materials Delivery',
865
+ 'Spinklers'
866
+ ]
867
+ });
868
+
869
+ const masonrySubtype$1 = (scope) => verticalRadio({
870
+ name: scope ? scope + ':' + 'Masonry_Subtype' : 'Masonry_Subtype',
871
+ // label: 'What type of masonry work do you need?',
872
+ options: [
873
+ 'Driveways',
874
+ 'Walkways',
875
+ 'Floors',
876
+ 'Walls',
877
+ 'Facades',
878
+ 'Material Delivery',
879
+ 'Not Sure or Other'
880
+ ]
881
+ });
882
+
883
+ const masonryMaterial$1 = (scope) => verticalRadio({
884
+ name: scope ? scope + ':' + 'Masonry_Material' : 'Masonry_Material',
885
+ // label: 'What type of masonry material?',
886
+ options: [
887
+ 'Brick or Stone',
888
+ 'Pavers',
889
+ 'Concrete',
890
+ 'Not Sure or Other'
891
+ ]
892
+ });
893
+
894
+ const masonryWorkType$1 = (scope) => verticalRadio({
895
+ name: scope ? scope + ':' + 'Masonry_Work_Type' : 'Masonry_Work_Type',
896
+ // label: 'What type of masonry work do you need?',
897
+ options: [
898
+ 'Install or Replace',
899
+ 'Repoint Brick or Stone',
900
+ 'Repair',
901
+ 'Not Sure or Other'
902
+ ]
903
+ });
904
+
905
+ const restorationSubtype$1 = (scope) => verticalRadio({
906
+ name: scope ? scope + ':' + 'Restoration_Subtype' : 'Restoration_Subtype',
907
+ // label: 'What type of restoration work do you need?',
908
+ options: [
909
+ 'Mold Remediation',
910
+ 'Fire Damage',
911
+ 'Water Damage',
912
+ 'Not Sure or Other'
913
+ ]
914
+ });
915
+
916
+ // TODO: need to finalize support for moving
917
+
918
+ // export const movingFromAddress = (scope) => sbsText({
919
+ // name: scope ? scope + ':' + 'Moving_From_Address' : 'Moving_From_Address',
920
+ // label: 'Moving from address',
921
+ // placeholder: '10 Example St',
922
+ // autocomplete: "street-address",
923
+ // 'data-tf-sensitive': 'false',
924
+ // maxlength: 100,
925
+ // validationMessages: {
926
+ // required: 'From address is required'
927
+ // }
928
+ // })
929
+
930
+ // export const movingToAddress = (scope) => sbsText({
931
+ // name: scope ? scope + ':' + 'Moving_To_Address' : 'Moving_To_Address',
932
+ // label: 'Moving to address',
933
+ // placeholder: '11 Other St',
934
+ // 'data-tf-sensitive': 'false',
935
+ // maxlength: 100,
936
+ // validationMessages: {
937
+ // required: 'To address is required'
938
+ // }
939
+ // })
940
+
941
+ // export const movingHouseholdSize = (scope) => verticalRadio({
942
+ // name: scope ? scope + ':' + 'Moving_Household_Size' : 'Moving_Household_Size',
943
+ // label: 'What is the household size?',
944
+ // options: [
945
+ // 'Less than 1000 square feet',
946
+ // '1000 to 2000 square feet',
947
+ // '2000 to 3000 square feet',
948
+ // 'More than 3000 square feet'
949
+ // ]
950
+ // })
951
+
952
+ const paintingSubtype$1 = (scope) => verticalSelect({
953
+ name: scope ? scope + ':' + 'Painting_Subtype' : 'Painting_Subtype',
954
+ // label: 'What type of painting work do you need?',
955
+ options: [
956
+ 'Whole Exterior',
957
+ 'Exterior Touch-up',
958
+ 'Interior Rooms',
959
+ 'Interior Touch-up',
960
+ 'Ceilings',
961
+ 'Deck',
962
+ 'Shed',
963
+ 'Cabinets',
964
+ 'Not Sure or Other'
965
+ ]
966
+ });
967
+
968
+ const paintingRooms$1 = (scope) => verticalRadio({
969
+ name: scope ? scope + ':' + 'Painting_Rooms' : 'Painting_Rooms',
970
+ // label: 'How many rooms need painting?',
971
+ options: [
972
+ '1-2',
973
+ '3-4',
974
+ '4-5',
975
+ '5-6',
976
+ '6+'
977
+ ]
978
+ });
979
+
980
+ const pestControlSubtype$1 = (scope) => verticalSelect({
981
+ name: scope ? scope + ':' + 'Pest_Control_Subtype' : 'Pest_Control_Subtype',
982
+ // label: 'What type of pest control work do you need?',
983
+ options: [
984
+ 'Bed Bugs',
985
+ 'Flying Animals',
986
+ 'Insects',
987
+ 'Rodents',
988
+ 'Small Animals',
989
+ 'Bees',
990
+ 'Termites',
991
+ 'Not Sure or Other'
992
+ ]
993
+ });
994
+
995
+ const poolsWorkType$1 = (scope) => verticalRadio({
996
+ name: scope ? scope + ':' + 'Pools_Work_Type' : 'Pools_Work_Type',
997
+ // label: 'What type of pool work do you need?',
998
+ options: [
999
+ 'Install or Replace',
1000
+ 'Repair',
1001
+ 'Cleaning',
1002
+ 'Close or Open Pool',
1003
+ 'Not Sure or Other'
1004
+ ]
1005
+ });
1006
+
1007
+ const poolsSubtype$1 = (scope) => verticalSelect({
1008
+ name: scope ? scope + ':' + 'Pools_Subtype' : 'Pools_Subtype',
1009
+ // label: 'What type of pool do you have?',
1010
+ options: [
1011
+ 'Above Ground',
1012
+ 'Inground Concrete',
1013
+ 'Inground Fiberglass',
1014
+ 'Inground Vinyl',
1015
+ 'Inground Gunite',
1016
+ 'Pool Liners',
1017
+ 'Pool Filters',
1018
+ 'Not Sure or Other'
1019
+ ]
1020
+ });
1021
+
1022
+ const plumbingSubtype$1 = (scope) => verticalSelect({
1023
+ name: scope ? scope + ':' + 'Plumbing_Subtype' : 'Plumbing_Subtype',
1024
+ // label: 'What type of plumbing work do you need?',
1025
+ options: [
1026
+ 'Tub or Shower',
1027
+ 'Drain',
1028
+ 'Sink',
1029
+ 'Toilet',
1030
+ 'Boiler',
1031
+ 'Water Heater',
1032
+ 'Sump Pump',
1033
+ 'Piping',
1034
+ 'Septic',
1035
+ 'Water Main',
1036
+ 'Hot Tub',
1037
+ 'Additions and Remodels',
1038
+ 'Not Sure or Other'
1039
+ ]
1040
+ });
1041
+
1042
+ const remodelingSubtype$1 = (scope) => verticalSelect({
1043
+ name: scope ? scope + ':' + 'Remodeling_Subtype' : 'Remodeling_Subtype',
1044
+ // label: 'What type of remodeling work do you need?',
1045
+ options: [
1046
+ 'Interior Designer',
1047
+ 'Interior Decorator',
1048
+ 'Kitchen Remodeling',
1049
+ 'Bathroom Remodeling',
1050
+ 'Garage Remodeling',
1051
+ 'Home Remodeling',
1052
+ 'Dumpster Rental',
1053
+ 'Landscape Architect',
1054
+ 'Outdoor Kitchen',
1055
+ 'Outdoor Enclosure',
1056
+ 'Additions',
1057
+ 'Not Sure or Other'
1058
+ ]
1059
+ });
1060
+
1061
+ const roofingWorkType$1 = (scope) => verticalRadio({
1062
+ name: scope ? scope + ':' + 'Roofing_Work_Type' : 'Roofing_Work_Type',
1063
+ // label: 'What type of roofing work do you need?',
1064
+ options: [
1065
+ 'Install or Replace Roof',
1066
+ 'Repair Roof',
1067
+ 'Ice Dams',
1068
+ 'Gutters',
1069
+ 'Not Sure or Other'
1070
+ ]
1071
+ });
1072
+
1073
+ const roofingMaterial$1 = (scope) => verticalSelect({
1074
+ name: scope ? scope + ':' + 'Roofing_Material' : 'Roofing_Material',
1075
+ // label: 'What type of roofing material?',
1076
+ options: [
1077
+ 'Asphalt Shingle',
1078
+ 'Metal',
1079
+ 'Composite',
1080
+ 'Flat',
1081
+ 'Foam',
1082
+ 'Tile',
1083
+ 'Wood',
1084
+ 'Slate',
1085
+ 'Not Sure or Other'
1086
+ ]
1087
+ });
1088
+
1089
+ const sidingMaterial$1 = (scope) => verticalRadio({
1090
+ name: scope ? scope + ':' + 'Siding_Material' : 'Siding_Material',
1091
+ // label: 'What type of siding material?',
1092
+ options: [
1093
+ 'Vinyl',
1094
+ 'Composite',
1095
+ 'Brick',
1096
+ 'Stone',
1097
+ 'Wood',
1098
+ 'Stucco',
1099
+ 'Not Sure or Other'
1100
+ ]
1101
+ });
1102
+
1103
+ const tilingSubtype$1 = (scope) => verticalRadio({
1104
+ name: scope ? scope + ':' + 'Tiling_Subtype' : 'Tiling_Subtype',
1105
+ // label: 'What type of tiling work do you need?',
1106
+ options: [
1107
+ 'Floor',
1108
+ 'Backsplash',
1109
+ 'Bathroom',
1110
+ 'Wall',
1111
+ 'Not Sure or Other'
1112
+ ]
1113
+ });
1114
+
1115
+ const waterproofingSubtype$1 = (scope) => verticalRadio({
1116
+ name: scope ? scope + ':' + 'Waterproofing_Subtype' : 'Waterproofing_Subtype',
1117
+ // label: 'What type of waterproofing work do you need?',
1118
+ options: [
1119
+ 'Foundations',
1120
+ 'Basements',
1121
+ 'Drainage',
1122
+ 'Not Sure or Other'
1123
+ ]
1124
+ });
1125
+
1126
+ const windowsWorkType$1 = (scope) => verticalRadio({
1127
+ name: scope ? scope + ':' + 'Windows_Work_Type' : 'Windows_Work_Type',
1128
+ // label: 'What type of windows work do you need?',
1129
+ options: [
1130
+ 'Install or Replace',
1131
+ 'Repair',
1132
+ 'Cleaning',
1133
+ 'Not Sure or Other'
1134
+ ]
1135
+ });
1136
+
1137
+ const windowsSubtype$1 = (scope) => verticalSelect({
1138
+ name: scope ? scope + ':' + 'Windows_Subtype' : 'Windows_Subtype',
1139
+ // label: 'What type of windows do you have?',
1140
+ options: [
1141
+ 'Whole Windows',
1142
+ 'Frames',
1143
+ 'Glass',
1144
+ 'Hardware',
1145
+ 'Storm Windows',
1146
+ 'Screens',
1147
+ 'Not Sure or Other'
1148
+ ]
1149
+ });
1150
+
1151
+ const numberOfWindows$1 = (scope) => verticalRadio({
1152
+ name: scope ? scope + ':' + 'Number_Of_Windows' : 'Number_Of_Windows',
1153
+ // label: 'How many windows?',
1154
+ options: [
1155
+ '1',
1156
+ '2',
1157
+ '3-5',
1158
+ '6+'
1159
+ ]
1160
+ });
1161
+
1162
+ const NEXT_ON_ENTER = '$onEnter($setNextStep($fireStepEvent($get(form)), $preStepFunc($get(form))))';
1163
+ const NEXT_ON_INPUT = '$onInput($setNextStep($fireStepEvent($get(form)), $preStepFunc($get(form))))';
1164
+
1165
+ const isInput = (n) => { return (n.type !== 'group' && n.type !== 'section' && n.type !== 'form' && n.$formkit !== 'hidden' && !n.children) };
1166
+
1167
+ const findLastInput = (n) => {
1168
+ if (isInput(n)) {
1169
+ return n
1170
+ }
1171
+ for (var i = n.children.length - 1; i >= 0; i--) {
1172
+ if (typeof n.children === 'string') {
1173
+ continue
1174
+ }
1175
+ const child = n.children[i];
1176
+ if (isInput(child)) {
1177
+ return child
1178
+ }
1179
+ const res = findLastInput(child);
1180
+ if (res) {
1181
+ return res
1182
+ }
1183
+ }
1184
+ return null
1185
+ };
1186
+
1187
+ const secureIconDefault = {
1188
+ $el: 'div',
1189
+ if: '$activeStep === $lastStep()',
1190
+ attrs: {
1191
+ class: 't-flex t-justify-center t-items-center t-text-sm t-text-gray-500'
1192
+ },
1193
+ children: [
1194
+ {
1195
+ $el: 'img',
1196
+ attrs: {
1197
+ loading: 'lazy',
1198
+ alt: '',
1199
+ style: {
1200
+ border: 0
1201
+ },
1202
+ width: '25',
1203
+ height: '25',
1204
+ src: 'https://d27hmee62k45vz.cloudfront.net/lock_icon_1.jpeg',
1205
+ }
1206
+ },
1207
+ {
1208
+ $el: 'span',
1209
+ children: 'Secure & Encrypted',
1210
+ attrs: {
1211
+ class: 't-pl-2 t-pt-1 t-font-medium'
1212
+ }
1213
+ }
1214
+ ]
1215
+ };
1216
+
1217
+ function secureIcon(updates) {
1218
+ return merge(
1219
+ secureIconDefault,
1220
+ updates
1221
+ )
1222
+ }
1223
+
1224
+ function verticalStepHeadline(updates) {
1225
+ return {
1226
+ $el: 'h3',
1227
+ children: updates.headline || 'Tell Us About Your Situation',
1228
+ attrs: {
1229
+ class: 't-flex t-justify-center t-text-center t-text-2xl t-font-bold t-text-dark t-pb-5 t-pt-0 t-px-1' + ' ' + (updates.headlineClass || '')
1230
+ }
1231
+ }
1232
+ }
1233
+
1234
+ function verticalStepSubHeadline(updates) {
1235
+ return {
1236
+ $el: 'h5',
1237
+ children: updates.subheadline || '',
1238
+ attrs: {
1239
+ class: 't-flex t-justify-center t-text-center !t-text-lg t-font-normal t-text-dark t-pb-5 t-pt-0 t-px-1' + ' ' + (updates.subheadlineClass || '')
1240
+ }
1241
+ }
1242
+ }
1243
+
1244
+ function commentsStepHeadline(updates) {
1245
+ return {
1246
+ $el: 'h3',
1247
+ children: updates.headline || 'Additional Details',
1248
+ attrs: {
1249
+ class: 't-flex t-justify-center t-text-center t-text-2xl t-font-bold t-text-blue-500 t-pb-5 t-pt-0 t-px-1' + ' ' + (updates.headlineClass || '')
1250
+ }
1251
+ }
1252
+ }
1253
+
1254
+ function firstAndLastStepHeadline(updates) {
1255
+ return {
1256
+ $el: 'h3',
1257
+ children: updates.headline || 'Please Provide a Contact Name',
1258
+ attrs: {
1259
+ class: 't-flex t-justify-center t-text-center t-text-2xl t-font-bold t-text-blue-500 t-pb-5 t-pt-0 t-px-1' + ' ' + (updates.headlineClass || '')
1260
+ }
1261
+ }
1262
+ }
1263
+
1264
+ function contactStepHeadline(updates) {
1265
+ return {
1266
+ $el: 'h3',
1267
+ children: updates.headline || DEFAULT_FINAL_HEADLINE_DYNAMIC_LEGAL,
1268
+ attrs: {
1269
+ class: 't-flex t-justify-center t-text-center t-text-2xl t-font-bold t-text-blue-500 t-pb-3 t-pt-0 t-px-1' + ' ' + (updates.headlineClass || '')
1270
+ }
1271
+ }
1272
+ }
1273
+
1274
+ function contactStepSubHeadline(updates) {
1275
+ return {
1276
+ $el: 'h5',
1277
+ children: updates.subheadline || DEFAULT_FINAL_SUBHEADLINE_DYNAMIC_LEGAL,
1278
+ attrs: {
1279
+ class: 't-flex t-justify-center t-text-center !t-text-lg t-font-semibold t-pb-7 t-pt-0 t-px-3' + ' ' + (updates.subheadlineClass || '')
1280
+ }
1281
+ }
1282
+ }
1283
+
1284
+ const TRUSTED_FORM_JS = `(function() {
1285
+ if (window.xxTrustedFormLoaded) {
1286
+ return
1287
+ }
1288
+ var vid = '';
1289
+ if (typeof window.zar !== 'undefined') {
1290
+ vid = window.zar.getVID();
1291
+ }
1292
+ window.xxTrustedFormLoaded = true;
1293
+ var sandbox = document.location.hostname.indexOf('localhost') > -1 ? 'true' : 'false'
1294
+ var tf = document.createElement('script');
1295
+ tf.type = 'text/javascript'; tf.async = true;
1296
+ tf.src = ("https:" == document.location.protocol ? 'https' : 'http') + "://api.trustedform.com/trustedform.js?field=xxTrustedFormCertUrl&identifier=" + vid + "&ping_field=xxTrustedFormPingUrl&provideReferrer=false&invert_field_sensitivity=true&sandbox=" + sandbox + "&l=" + new Date().getTime() + Math.random();
1297
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(tf, s);
1298
+ })();`;
1299
+
1300
+ function trustedFormScript() {
1301
+ return {
1302
+ $el: 'script',
1303
+ if: '$activeStep === $lastStep()',
1304
+ children: TRUSTED_FORM_JS
1305
+ }
1306
+ }
1307
+
1308
+ const stepDefaults = (step, stepKey) => ({
1309
+ $el: 'section',
1310
+ if: '$stepEnabled("' + step + '")',
1311
+ attrs: {
1312
+ hidden: '$activeStep !== "' + step + '"',
1313
+ key: stepKey ? stepKey : step
1314
+ }
1315
+ });
1316
+
1317
+ function step(name, inputs, updates = {}) {
1318
+ const {
1319
+ nextOnEnter = true,
1320
+ nextOnInput = false,
1321
+ stepKey = undefined,
1322
+ nextStepMap = undefined,
1323
+ triggerRedirectMap = undefined,
1324
+ autoFocus = undefined,
1325
+ } = updates;
1326
+
1327
+ if (inputs && inputs.length && (nextOnEnter || nextOnInput)) {
1328
+ const lastInput = findLastInput(inputs[inputs.length - 1]);
1329
+ if (lastInput && nextOnEnter === true) {
1330
+ lastInput.onKeypress = NEXT_ON_ENTER;
1331
+ }
1332
+ if (lastInput && nextOnInput === true) {
1333
+ lastInput.onInput = NEXT_ON_INPUT;
1334
+ }
1335
+ }
1336
+
1337
+ return merge(
1338
+ stepDefaults(name, stepKey),
1339
+ {
1340
+ children: [
1341
+ {
1342
+ $formkit: 'group',
1343
+ id: name,
1344
+ name: name,
1345
+ nextStepMap: nextStepMap,
1346
+ triggerRedirectMap: triggerRedirectMap,
1347
+ autoFocus: autoFocus,
1348
+ children: inputs
1349
+ }
1350
+ ]
1351
+ }
1352
+ )
1353
+ }
1354
+
1355
+ // Single question step
1356
+ function sqstep(name, input, defaultHeadline, updates = {}) {
1357
+ if (typeof updates.nextOnInput === 'undefined') {
1358
+ updates.nextOnInput = true;
1359
+ }
1360
+
1361
+ return step(
1362
+ name,
1363
+ [
1364
+ verticalStepHeadline({ headline: updates.headline ?? defaultHeadline, headlineClass: updates.headlineClass }),
1365
+ ...Array.isArray(input) ? input : [input],
1366
+ ],
1367
+ updates
1368
+ )
1369
+ }
1370
+
1371
+
1372
+ // ------ Common Steps
1373
+
1374
+ function address(updates = {}) {
1375
+ updates.nextOnInput = typeof updates.nextOnInput === 'undefined' ? false : updates.nextOnInput;
1376
+ return sqstep(
1377
+ 'address',
1378
+ addressCenter(updates.scope),
1379
+ 'What is the street address of the home?',
1380
+ updates
1381
+ )
1382
+ }
1383
+
1384
+ function commentsHeadline(updates = {}) {
1385
+ const mergedUpdates = { ...updates, nextOnEnter: false };
1386
+
1387
+ return step(
1388
+ 'comments',
1389
+ [
1390
+ commentsStepHeadline(updates),
1391
+ comments({
1392
+ label: typeof updates.label === 'undefined' ? DEFAULT_COMMENTS_LABEL : updates.label,
1393
+ placeholder: updates.placeholder || DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC,
1394
+ inputClass: typeof updates.inputClass === 'undefined' ? '!t-h-32' : updates.inputClass,
1395
+ }, updates.scope),
1396
+ ],
1397
+ mergedUpdates
1398
+ )
1399
+ }
1400
+
1401
+ function contactInfo(updates = {}) {
1402
+ return step(
1403
+ 'contactInfo',
1404
+ [
1405
+ contactStepHeadline(updates),
1406
+ contactStepSubHeadline(updates),
1407
+ trustedFormScript(),
1408
+ email(updates.scope),
1409
+ phone(updates.scope),
1410
+ TCPAConsent(updates.scope),
1411
+ secureIcon()
1412
+ ],
1413
+ { nextOnEnter: false }
1414
+ )
1415
+ }
1416
+
1417
+ function firstAndLastV3(updates = {}, scope) {
1418
+ return step(
1419
+ 'firstAndLast',
1420
+ [
1421
+ firstAndLastStepHeadline({
1422
+ headline: updates.headline ?? 'Who is looking for help?',
1423
+ headlineClass: updates.headlineClass
1424
+ }),
1425
+ verticalStepSubHeadline({
1426
+ subheadline: updates.subheadline ?? 'Note: we never share info without consent',
1427
+ subheadlineClass: '!t-text-sm !t-text-gray-500'
1428
+ }),
1429
+ firstName(scope),
1430
+ lastName(scope)
1431
+ ],
1432
+ updates
1433
+ )
1434
+ }
1435
+
1436
+ function zipcode(updates = {}) {
1437
+ return sqstep(
1438
+ 'zipcode',
1439
+ zipcodeCenter(updates, updates.scope),
1440
+ 'Please verify your Zip Code',
1441
+ updates
1442
+ )
1443
+ }
1444
+
1445
+
1446
+ // ------ Home Improvement
1447
+
1448
+
1449
+ function homeImprovementCrossSellsStepHeadline(updates) {
1450
+ return {
1451
+ $el: 'h3',
1452
+ children: updates.headline || 'Interested in free quotes for other projects?',
1453
+ attrs: {
1454
+ class: 't-flex t-justify-center t-text-center t-text-2xl t-font-bold t-text-blue-500 t-pb-5 t-pt-0 t-px-1' + ' ' + (updates.headlineClass || '')
1455
+ }
1456
+ }
1457
+ }
1458
+
1459
+ function homeImprovementCrossSells(updates = {}) {
1460
+ updates.nextOnInput = false;
1461
+ updates.stepKey = '$get(Category).value';
1462
+ return step(
1463
+ 'homeImprovementCrossSells',
1464
+ [
1465
+ homeImprovementCrossSellsStepHeadline(updates),
1466
+ homeImprovementCrossSells$1(),
1467
+ ],
1468
+ updates
1469
+ )
1470
+ }
1471
+
1472
+ // export function electricalCrossSellQuestions(updates = {}) {
1473
+ // return step(
1474
+ // 'electricalCrossSellQuestions',
1475
+ // [
1476
+ // crossSellQuestionsStepHeadline({ headline: 'Connect With A Pro Electrician' }),
1477
+ // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your electrical needs:' }),
1478
+ // inp.ElectricalQuestions("true", 'CrossSell:Electrical'),
1479
+ // inp.comments(
1480
+ // {
1481
+ // label: 'Project Description:',
1482
+ // placeholder: 'Please describe your project in a few words...',
1483
+ // inputClass: '!t-h-16'
1484
+ // },
1485
+ // 'CrossSell:Electrical'
1486
+ // )
1487
+ // ],
1488
+ // updates
1489
+ // )
1490
+ // }
1491
+
1492
+ // export function appliancesCrossSellQuestions(updates = {}) {
1493
+ // return step(
1494
+ // 'appliancesCrossSellQuestions',
1495
+ // [
1496
+ // crossSellQuestionsStepHeadline({ headline: 'Connect With An Appliance Pro' }),
1497
+ // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your appliance needs:' }),
1498
+ // inp.AppliancesQuestions("true", 'CrossSell:Appliances'),
1499
+ // inp.comments(
1500
+ // {
1501
+ // label: 'Project Description:',
1502
+ // placeholder: 'Please describe your project in a few words...',
1503
+ // inputClass: '!t-h-16'
1504
+ // },
1505
+ // 'CrossSell:Appliances'
1506
+ // )
1507
+ // ],
1508
+ // updates
1509
+ // )
1510
+ // }
1511
+
1512
+ // export function carpentryCrossSellQuestions(updates = {}) {
1513
+ // return step(
1514
+ // 'carpentryCrossSellQuestions',
1515
+ // [
1516
+ // crossSellQuestionsStepHeadline({ headline: 'Connect With A Pro Carpenter' }),
1517
+ // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your carpentry needs:' }),
1518
+ // inp.CarpentryQuestions("true", 'CrossSell:Carpentry'),
1519
+ // inp.comments(
1520
+ // {
1521
+ // label: 'Project Description:',
1522
+ // placeholder: 'Please describe your project in a few words...',
1523
+ // inputClass: '!t-h-16'
1524
+ // },
1525
+ // 'CrossSell:Carpentry'
1526
+ // )
1527
+ // ],
1528
+ // updates
1529
+ // )
1530
+ // }
1531
+
1532
+ // export function masonryAndConcreteCrossSellQuestions(updates = {}) {
1533
+ // return step(
1534
+ // 'masonryCrossSellQuestions',
1535
+ // [
1536
+ // crossSellQuestionsStepHeadline({ headline: 'Connect With A Masonry Pro' }),
1537
+ // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your masonry needs:' }),
1538
+ // inp.MasonryAndConcreteQuestions("true", 'CrossSell:Masonry and Concrete'),
1539
+ // inp.comments(
1540
+ // {
1541
+ // label: 'Project Description:',
1542
+ // placeholder: 'Please describe your project in a few words...',
1543
+ // inputClass: '!t-h-16'
1544
+ // },
1545
+ // 'CrossSell:Masonry and Concrete'
1546
+ // )
1547
+ // ],
1548
+ // updates
1549
+ // )
1550
+ // }
1551
+
1552
+ // export function drivewaysCrossSellQuestions(updates = {}) {
1553
+ // return step(
1554
+ // 'drivewayCrossSellQuestions',
1555
+ // [
1556
+ // crossSellQuestionsStepHeadline({ headline: 'Connect With A Driveway Pro' }),
1557
+ // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your driveway needs:' }),
1558
+ // inp.DrivewaysQuestions("true", 'CrossSell:Driveways'),
1559
+ // inp.comments(
1560
+ // {
1561
+ // label: 'Project Description:',
1562
+ // placeholder: 'Please describe your project in a few words...',
1563
+ // inputClass: '!t-h-16'
1564
+ // },
1565
+ // 'CrossSell:Driveways'
1566
+ // )
1567
+ // ],
1568
+ // updates
1569
+ // )
1570
+ // }
1571
+
1572
+ // export function drywallAndPlasterCrossSellQuestions(updates = {}) {
1573
+ // return step(
1574
+ // 'drywallCrossSellQuestions',
1575
+ // [
1576
+ // crossSellQuestionsStepHeadline({ headline: 'Connect With A Drywall Pro' }),
1577
+ // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your drywall needs:' }),
1578
+ // inp.DrywallAndPlasterQuestions("true", 'CrossSell:Drywall and Plaster'),
1579
+ // inp.comments(
1580
+ // {
1581
+ // label: 'Project Description:',
1582
+ // placeholder: 'Please describe your project in a few words...',
1583
+ // inputClass: '!t-h-16'
1584
+ // },
1585
+ // 'CrossSell:Drywall and Plaster'
1586
+ // )
1587
+ // ],
1588
+ // updates
1589
+ // )
1590
+ // }
1591
+
1592
+ // export function heatingAndCoolingCrossSellQuestions(updates = {}) {
1593
+ // return step(
1594
+ // 'heatingCoolingCrossSellQuestions',
1595
+ // [
1596
+ // crossSellQuestionsStepHeadline({ headline: 'Connect With An HVAC Pro' }),
1597
+ // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your heating and cooling needs:' }),
1598
+ // inp.HeatingAndCoolingQuestions("true", 'CrossSell:Heating and Cooling'),
1599
+ // inp.comments(
1600
+ // {
1601
+ // label: 'Project Description:',
1602
+ // placeholder: 'Please describe your project in a few words...',
1603
+ // },
1604
+ // 'CrossSell:Heating and Cooling'
1605
+ // )
1606
+ // ],
1607
+ // updates
1608
+ // )
1609
+ // }
1610
+
1611
+ // export function landscapingCrossSellQuestions(updates = {}) {
1612
+ // return step(
1613
+ // 'landscapingCrossSellQuestions',
1614
+ // [
1615
+ // crossSellQuestionsStepHeadline({ headline: 'Connect With A Landscaping Pro' }),
1616
+ // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your landscaping needs:' }),
1617
+ // inp.LandscapingQuestions("true", 'CrossSell:Landscaping'),
1618
+ // inp.comments(
1619
+ // {
1620
+ // label: 'Project Description:',
1621
+ // placeholder: 'Please describe your project in a few words...',
1622
+ // },
1623
+ // 'CrossSell:Landscaping'
1624
+ // )
1625
+ // ],
1626
+ // updates
1627
+ // )
1628
+ // }
1629
+
1630
+ // export function pestControlCrossSellQuestions(updates = {}) {
1631
+ // return step(
1632
+ // 'pestControlCrossSellQuestions',
1633
+ // [
1634
+ // crossSellQuestionsStepHeadline({ headline: 'Connect With A Pest Control Pro' }),
1635
+ // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your pest control needs:' }),
1636
+ // inp.PestControlQuestions("true", 'CrossSell:Pest Control'),
1637
+ // inp.comments(
1638
+ // {
1639
+ // label: 'Project Description:',
1640
+ // placeholder: 'Please describe your project in a few words...',
1641
+ // },
1642
+ // 'CrossSell:Pest Control'
1643
+ // )
1644
+ // ],
1645
+ // updates
1646
+ // )
1647
+ // }
1648
+
1649
+ // export function sidingCrossSellQuestions(updates = {}) {
1650
+ // return step(
1651
+ // 'sidingCrossSellQuestions',
1652
+ // [
1653
+ // crossSellQuestionsStepHeadline({ headline: 'Connect With A Siding Pro' }),
1654
+ // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your siding needs:' }),
1655
+ // inp.SidingQuestions("true", 'CrossSell:Siding'),
1656
+ // inp.comments(
1657
+ // {
1658
+ // label: 'Project Description:',
1659
+ // placeholder: 'Please describe your project in a few words...',
1660
+ // },
1661
+ // 'CrossSell:Siding'
1662
+ // )
1663
+ // ],
1664
+ // updates
1665
+ // )
1666
+ // }
1667
+
1668
+ // export function windowsCrossSellQuestions(updates = {}) {
1669
+ // return step(
1670
+ // 'windowsCrossSellQuestions',
1671
+ // [
1672
+ // crossSellQuestionsStepHeadline({ headline: 'Connect With A Window Pro' }),
1673
+ // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your window needs:' }),
1674
+ // inp.WindowsQuestions("true", 'CrossSell:Windows'),
1675
+ // inp.comments(
1676
+ // {
1677
+ // label: 'Project Description:',
1678
+ // placeholder: 'Please describe your project in a few words...',
1679
+ // },
1680
+ // 'CrossSell:Windows'
1681
+ // )
1682
+ // ],
1683
+ // updates
1684
+ // )
1685
+ // }
1686
+
1687
+ // export function flooringCrossSellQuestions(updates = {}) {
1688
+ // return step(
1689
+ // 'flooringCrossSellQuestions',
1690
+ // [
1691
+ // crossSellQuestionsStepHeadline({ headline: 'Connect With A Flooring Pro' }),
1692
+ // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your flooring needs:' }),
1693
+ // inp.FlooringQuestions("true", 'CrossSell:Flooring'),
1694
+ // inp.comments(
1695
+ // {
1696
+ // label: 'Project Description:',
1697
+ // placeholder: 'Please describe your project in a few words...',
1698
+ // inputClass: '!t-h-16'
1699
+ // },
1700
+ // 'CrossSell:Flooring'
1701
+ // )
1702
+ // ],
1703
+ // updates
1704
+ // )
1705
+ // }
1706
+
1707
+ // export function paintingCrossSellQuestions(updates = {}) {
1708
+ // return step(
1709
+ // 'paintingCrossSellQuestions',
1710
+ // [
1711
+ // crossSellQuestionsStepHeadline({ headline: 'Connect With A Pro Painter' }),
1712
+ // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your painting needs:' }),
1713
+ // inp.PaintingQuestions("true", 'CrossSell:Painting'),
1714
+ // inp.comments(
1715
+ // {
1716
+ // label: 'Project Description:',
1717
+ // placeholder: 'Please describe your project in a few words...',
1718
+ // inputClass: '!t-h-16'
1719
+ // },
1720
+ // 'CrossSell:Painting'
1721
+ // )
1722
+ // ],
1723
+ // updates
1724
+ // )
1725
+ // }
1726
+
1727
+ // export function plumbingCrossSellQuestions(updates = {}) {
1728
+ // return step(
1729
+ // 'plumbingCrossSellQuestions',
1730
+ // [
1731
+ // crossSellQuestionsStepHeadline({ headline: 'Connect With A Local Plumber' }),
1732
+ // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your plumbing needs:' }),
1733
+ // inp.PlumbingQuestions("true", 'CrossSell:Plumbing'),
1734
+ // inp.comments(
1735
+ // {
1736
+ // label: 'Project Description:',
1737
+ // placeholder: 'Please describe your project in a few words...',
1738
+ // inputClass: '!t-h-16'
1739
+ // },
1740
+ // 'CrossSell:Plumbing'
1741
+ // )
1742
+ // ],
1743
+ // updates
1744
+ // )
1745
+ // }
1746
+
1747
+ // export function remodelingCrossSellQuestions(updates = {}) {
1748
+ // return step(
1749
+ // 'remodelingCrossSellQuestions',
1750
+ // [
1751
+ // crossSellQuestionsStepHeadline({ headline: 'Connect With A Pro Remodeler' }),
1752
+ // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your remodeling needs:' }),
1753
+ // inp.RemodelingQuestions("true", 'CrossSell:Remodeling'),
1754
+ // inp.comments(
1755
+ // {
1756
+ // label: 'Project Description:',
1757
+ // placeholder: 'Please describe your project in a few words...',
1758
+ // inputClass: '!t-h-16'
1759
+ // },
1760
+ // 'CrossSell:Remodeling'
1761
+ // )
1762
+ // ],
1763
+ // updates
1764
+ // )
1765
+ // }
1766
+
1767
+ // export function roofingCrossSellQuestions(updates = {}) {
1768
+ // return step(
1769
+ // 'roofingCrossSellQuestions',
1770
+ // [
1771
+ // crossSellQuestionsStepHeadline({ headline: 'Connect With A Pro Roofer' }),
1772
+ // crossSellQuestionsStepSubHeadline({ subheadline: 'Tell us about your roofing needs:' }),
1773
+ // inp.RoofingQuestions("true", 'CrossSell:Roofing'),
1774
+ // inp.comments(
1775
+ // {
1776
+ // label: 'Project Description:',
1777
+ // placeholder: 'Please describe your project in a few words...',
1778
+ // inputClass: '!t-h-16'
1779
+ // },
1780
+ // 'CrossSell:Roofing'
1781
+ // )
1782
+ // ],
1783
+ // updates
1784
+ // )
1785
+ // }
1786
+
1787
+ function homeImprovementCategory(updates = {}) {
1788
+ return step(
1789
+ 'homeImprovementCategory',
1790
+ [
1791
+ homeImprovementCategory$1(updates.input),
1792
+ ],
1793
+ updates
1794
+ )
1795
+ }
1796
+
1797
+ function timeframe(updates = {}) {
1798
+ return sqstep(
1799
+ 'timeframe',
1800
+ timeframe$1(),
1801
+ 'What is the project timeframe?',
1802
+ updates
1803
+ )
1804
+ }
1805
+
1806
+ function ownHome(updates = {}) {
1807
+ return sqstep(
1808
+ 'ownHome',
1809
+ ownHome$1(),
1810
+ 'Do you own the home?',
1811
+ updates
1812
+ )
1813
+ }
1814
+
1815
+ function additionsSubType(updates = {}) {
1816
+ return sqstep(
1817
+ 'additionsSubType',
1818
+ additionsSubType$1(),
1819
+ 'What type of addition?',
1820
+ updates
1821
+ )
1822
+ }
1823
+
1824
+ function constructionAreaSize(updates = {}) {
1825
+ return sqstep(
1826
+ 'constructionAreaSize',
1827
+ constructionAreaSize$1(),
1828
+ 'What is the size of the construction area?',
1829
+ updates
1830
+ )
1831
+ }
1832
+
1833
+ function homeImprovementWorkType(updates = {}) {
1834
+ return sqstep(
1835
+ 'homeImprovementWorkType',
1836
+ homeImprovementWorkType$1(),
1837
+ 'What type of work?',
1838
+ updates
1839
+ )
1840
+ }
1841
+
1842
+ function applianceType(updates = {}) {
1843
+ return sqstep(
1844
+ 'applianceType',
1845
+ applianceType$1(),
1846
+ 'What type of appliance?',
1847
+ updates
1848
+ )
1849
+ }
1850
+
1851
+ function cabinetWorkType(updates = {}) {
1852
+ return sqstep(
1853
+ 'cabinetWorkType',
1854
+ cabinetWorkType$1(),
1855
+ 'What type of cabinet work?',
1856
+ updates
1857
+ )
1858
+ }
1859
+
1860
+ function carpentrySubtype(updates = {}) {
1861
+ return sqstep(
1862
+ 'carpentrySubtype',
1863
+ carpentrySubtype$1(),
1864
+ 'What type of carpentry work?',
1865
+ updates
1866
+ )
1867
+ }
1868
+
1869
+ function carpetWorkType(updates = {}) {
1870
+ return sqstep(
1871
+ 'carpetWorkType',
1872
+ carpetWorkType$1(),
1873
+ 'What type of carpet work?',
1874
+ updates
1875
+ )
1876
+ }
1877
+
1878
+ function cleaningSubtype(updates = {}) {
1879
+ return sqstep(
1880
+ 'cleaningSubtype',
1881
+ cleaningSubtype$1(),
1882
+ 'What type of cleaning?',
1883
+ updates
1884
+ )
1885
+ }
1886
+
1887
+ function countertopMaterial(updates = {}) {
1888
+ return sqstep(
1889
+ 'countertopMaterial',
1890
+ countertopMaterial$1(),
1891
+ 'What type of countertop material?',
1892
+ updates
1893
+ )
1894
+ }
1895
+
1896
+ function deckWorkType(updates = {}) {
1897
+ return sqstep(
1898
+ 'deckWorkType',
1899
+ deckWorkType$1(),
1900
+ 'What type of deck work?',
1901
+ updates
1902
+ )
1903
+ }
1904
+
1905
+ function demolitionSubtype(updates = {}) {
1906
+ return sqstep(
1907
+ 'demolitionSubtype',
1908
+ demolitionSubtype$1(),
1909
+ 'What type of demolition?',
1910
+ updates
1911
+ )
1912
+ }
1913
+
1914
+ function doorSubtype(updates = {}) {
1915
+ return sqstep(
1916
+ 'doorSubtype',
1917
+ doorSubtype$1(),
1918
+ 'What type of door?',
1919
+ updates
1920
+ )
1921
+ }
1922
+
1923
+ function drivewayWorkType(updates = {}) {
1924
+ return sqstep(
1925
+ 'drivewayWorkType',
1926
+ drivewayWorkType$1(),
1927
+ 'What type of driveway work?',
1928
+ updates
1929
+ )
1930
+ }
1931
+
1932
+ function drivewayMaterial(updates = {}) {
1933
+ return sqstep(
1934
+ 'drivewayMaterial',
1935
+ drivewayMaterial$1(),
1936
+ 'What type of driveway material?',
1937
+ updates
1938
+ )
1939
+ }
1940
+
1941
+ function wallSurfaceType(updates = {}) {
1942
+ return sqstep(
1943
+ 'wallSurfaceType',
1944
+ wallSurfaceType$1(),
1945
+ 'What type of surface?',
1946
+ updates
1947
+ )
1948
+ }
1949
+
1950
+ function electricalSubtype(updates = {}) {
1951
+ return sqstep(
1952
+ 'electricalSubtype',
1953
+ electricalSubtype$1(),
1954
+ 'What type of electrical work?',
1955
+ updates
1956
+ )
1957
+ }
1958
+
1959
+ function fenceMaterial(updates = {}) {
1960
+ return sqstep(
1961
+ 'fenceMaterial',
1962
+ fenceMaterial$1(),
1963
+ 'What type of fence material?',
1964
+ updates
1965
+ )
1966
+ }
1967
+
1968
+ function flooringMaterial(updates = {}) {
1969
+ return sqstep(
1970
+ 'flooringMaterial',
1971
+ flooringMaterial$1(),
1972
+ 'What type of flooring material?',
1973
+ updates
1974
+ )
1975
+ }
1976
+
1977
+ function generalContractorSubtype(updates = {}) {
1978
+ return sqstep(
1979
+ 'generalContractorSubtype',
1980
+ generalContractorSubtype$1(),
1981
+ 'What type of general contractor work?',
1982
+ updates
1983
+ )
1984
+ }
1985
+
1986
+ function gutterMaterial(updates = {}) {
1987
+ return sqstep(
1988
+ 'gutterMaterial',
1989
+ gutterMaterial$1(),
1990
+ 'What type of gutter material?',
1991
+ updates
1992
+ )
1993
+ }
1994
+
1995
+ function guttersWorkType(updates = {}) {
1996
+ return sqstep(
1997
+ 'guttersWorkType',
1998
+ guttersWorkType$1(),
1999
+ 'What type of gutter work?',
2000
+ updates
2001
+ )
2002
+ }
2003
+
2004
+ function smartHomeSubtype(updates = {}) {
2005
+ return sqstep(
2006
+ 'smartHomeSubtype',
2007
+ smartHomeSubtype$1(),
2008
+ 'What type of smart home work?',
2009
+ updates
2010
+ )
2011
+ }
2012
+
2013
+ function homeOrganizationSubtype(updates = {}) {
2014
+ return sqstep(
2015
+ 'homeOrganizationSubtype',
2016
+ homeOrganizationSubtype$1(),
2017
+ 'What type of home organization work?',
2018
+ updates
2019
+ )
2020
+ }
2021
+
2022
+ function numberOfRooms(updates = {}) {
2023
+ return sqstep(
2024
+ 'numberOfRooms',
2025
+ numberOfRooms$1(),
2026
+ 'How many rooms?',
2027
+ updates
2028
+ )
2029
+ }
2030
+
2031
+ function homeTheaterSubtype(updates = {}) {
2032
+ return sqstep(
2033
+ 'homeTheaterSubtype',
2034
+ homeTheaterSubtype$1(),
2035
+ 'What type of home theater work?',
2036
+ updates
2037
+ )
2038
+ }
2039
+
2040
+ function heatingCoolingSubtype(updates = {}) {
2041
+ return sqstep(
2042
+ 'heatingCoolingSubtype',
2043
+ heatingCoolingSubtype$1(),
2044
+ 'What type of heating and cooling work?',
2045
+ updates
2046
+ )
2047
+ }
2048
+
2049
+ function fuelSource(updates = {}) {
2050
+ return sqstep(
2051
+ 'fuelSource',
2052
+ fuelSource$1(),
2053
+ 'What type of fuel source?',
2054
+ updates
2055
+ )
2056
+ }
2057
+
2058
+ function insulationSubtype(updates = {}) {
2059
+ return sqstep(
2060
+ 'insulationSubtype',
2061
+ insulationSubtype$1(),
2062
+ 'What type of insulation work?',
2063
+ updates
2064
+ )
2065
+ }
2066
+
2067
+ function landscapingSubtype(updates = {}) {
2068
+ return sqstep(
2069
+ 'landscapingSubtype',
2070
+ landscapingSubtype$1(),
2071
+ 'What type of landscaping work?',
2072
+ updates
2073
+ )
2074
+ }
2075
+
2076
+ function masonrySubtype(updates = {}) {
2077
+ return sqstep(
2078
+ 'masonrySubtype',
2079
+ masonrySubtype$1(),
2080
+ 'What type of masonry work?',
2081
+ updates
2082
+ )
2083
+ }
2084
+
2085
+ function masonryMaterial(updates = {}) {
2086
+ return sqstep(
2087
+ 'masonryMaterial',
2088
+ masonryMaterial$1(),
2089
+ 'What type of masonry material?',
2090
+ updates
2091
+ )
2092
+ }
2093
+
2094
+ function masonryWorkType(updates = {}) {
2095
+ return sqstep(
2096
+ 'masonryWorkType',
2097
+ masonryWorkType$1(),
2098
+ 'What type of masonry work?',
2099
+ updates
2100
+ )
2101
+ }
2102
+
2103
+ function restorationSubtype(updates = {}) {
2104
+ return sqstep(
2105
+ 'restorationSubtype',
2106
+ restorationSubtype$1(),
2107
+ 'What type of restoration work?',
2108
+ updates
2109
+ )
2110
+ }
2111
+
2112
+ // TODO: need to finalize support for moving
2113
+
2114
+ // export function movingFromAddress(updates = {}) {
2115
+ // return sqstep(
2116
+ // 'movingFromAddress',
2117
+ // inp.movingFromAddress(),
2118
+ // 'Moving from address:',
2119
+ // updates
2120
+ // )
2121
+ // }
2122
+
2123
+ // export function movingToAddress(updates = {}) {
2124
+ // return sqstep(
2125
+ // 'movingToAddress',
2126
+ // inp.movingToAddress(),
2127
+ // 'Moving to address:',
2128
+ // updates
2129
+ // )
2130
+ // }
2131
+
2132
+ // export function movingHouseholdSize(updates = {}) {
2133
+ // return sqstep(
2134
+ // 'movingHouseholdSize',
2135
+ // inp.movingHouseholdSize(),
2136
+ // 'Household size:',
2137
+ // updates
2138
+ // )
2139
+ // }
2140
+
2141
+ function paintingSubtype(updates = {}) {
2142
+ return sqstep(
2143
+ 'paintingSubtype',
2144
+ paintingSubtype$1(),
2145
+ 'What type of painting work?',
2146
+ updates
2147
+ )
2148
+ }
2149
+
2150
+ function paintingRooms(updates = {}) {
2151
+ return sqstep(
2152
+ 'paintingRooms',
2153
+ paintingRooms$1(),
2154
+ 'How many rooms need painting?',
2155
+ updates
2156
+ )
2157
+ }
2158
+
2159
+ function pestControlSubtype(updates = {}) {
2160
+ return sqstep(
2161
+ 'pestControlSubtype',
2162
+ pestControlSubtype$1(),
2163
+ 'What type of pest control work?',
2164
+ updates
2165
+ )
2166
+ }
2167
+
2168
+ function poolsWorkType(updates = {}) {
2169
+ return sqstep(
2170
+ 'poolsWorkType',
2171
+ poolsWorkType$1(),
2172
+ 'What type of pool work?',
2173
+ updates
2174
+ )
2175
+ }
2176
+
2177
+ function poolsSubtype(updates = {}) {
2178
+ return sqstep(
2179
+ 'poolsSubtype',
2180
+ poolsSubtype$1(),
2181
+ 'What type of pool work?',
2182
+ updates
2183
+ )
2184
+ }
2185
+
2186
+ function plumbingSubtype(updates = {}) {
2187
+ return sqstep(
2188
+ 'plumbingSubtype',
2189
+ plumbingSubtype$1(),
2190
+ 'What type of plumbing work?',
2191
+ updates
2192
+ )
2193
+ }
2194
+
2195
+ function remodelingSubtype(updates = {}) {
2196
+ return sqstep(
2197
+ 'remodelingSubtype',
2198
+ remodelingSubtype$1(),
2199
+ 'What type of remodeling work?',
2200
+ updates
2201
+ )
2202
+ }
2203
+
2204
+ function roofingWorkType(updates = {}) {
2205
+ return sqstep(
2206
+ 'roofingWorkType',
2207
+ roofingWorkType$1(),
2208
+ 'What type of roofing work?',
2209
+ updates
2210
+ )
2211
+ }
2212
+
2213
+ function roofingMaterial(updates = {}) {
2214
+ return sqstep(
2215
+ 'roofingMaterial',
2216
+ roofingMaterial$1(),
2217
+ 'What type of roofing material?',
2218
+ updates
2219
+ )
2220
+ }
2221
+
2222
+ function sidingMaterial(updates = {}) {
2223
+ return sqstep(
2224
+ 'sidingMaterial',
2225
+ sidingMaterial$1(),
2226
+ 'What type of siding material?',
2227
+ updates
2228
+ )
2229
+ }
2230
+
2231
+ function tilingSubtype(updates = {}) {
2232
+ return sqstep(
2233
+ 'tilingSubtype',
2234
+ tilingSubtype$1(),
2235
+ 'What type of tiling work?',
2236
+ updates
2237
+ )
2238
+ }
2239
+
2240
+ function waterproofingSubtype(updates = {}) {
2241
+ return sqstep(
2242
+ 'waterproofingSubtype',
2243
+ waterproofingSubtype$1(),
2244
+ 'What type of waterproofing work?',
2245
+ updates
2246
+ )
2247
+ }
2248
+
2249
+ function windowsWorkType(updates = {}) {
2250
+ return sqstep(
2251
+ 'windowsWorkType',
2252
+ windowsWorkType$1(),
2253
+ 'What type of windows work?',
2254
+ updates
2255
+ )
2256
+ }
2257
+
2258
+ function windowsSubtype(updates = {}) {
2259
+ return sqstep(
2260
+ 'windowsSubtype',
2261
+ windowsSubtype$1(),
2262
+ 'What type of windows work?',
2263
+ updates
2264
+ )
2265
+ }
2266
+
2267
+ function numberOfWindows(updates = {}) {
2268
+ return sqstep(
2269
+ 'numberOfWindows',
2270
+ numberOfWindows$1(),
2271
+ 'How many windows?',
2272
+ updates
2273
+ )
2274
+ }
2275
+
2276
+ const formNavigation = (updates = {}) => ({
2277
+ $el: 'div',
2278
+ attrs: {
2279
+ class: 'step-nav'
2280
+ },
2281
+ children: [
2282
+ {
2283
+ $formkit: 'button',
2284
+ name: 'back_button',
2285
+ onClick: '$setPreviousStep($prevStepFunc($get(form)))',
2286
+ children: 'Back',
2287
+ style: {
2288
+ if: '$activeStep === $firstStep()',
2289
+ then: 'visibility: hidden;'
2290
+ }
2291
+ },
2292
+ {
2293
+ $formkit: 'button',
2294
+ name: 'next_button',
2295
+ onClick: '$setNextStep($fireStepEvent($get(form)), $preStepFunc($get(form)))',
2296
+ children: {
2297
+ if: '$activeStep === $firstStep()',
2298
+ then: 'Start',
2299
+ else: 'Next'
2300
+ },
2301
+ outerClass: {
2302
+ if: '$activeStep === $lastStep()',
2303
+ then: 't-hidden',
2304
+ else: ''
2305
+ },
2306
+ style: {
2307
+ if: '$activeStep === $lastStep()',
2308
+ then: 'display: none;'
2309
+ }
2310
+ },
2311
+ {
2312
+ $formkit: 'submit',
2313
+ name: 'submit_button',
2314
+ label: updates.submitLabel || 'Submit',
2315
+ if: '$activeStep === $lastStep()',
2316
+ style: {
2317
+ if: '$activeStep !== $lastStep()',
2318
+ then: 'display: none;'
2319
+ }
2320
+ }
2321
+ ]
2322
+ });
2323
+
2324
+ const formDetails = () => ({
2325
+ $el: 'pre',
2326
+ if: '$urlParam("fdbg", "") == 1',
2327
+ children: [
2328
+ {
2329
+ $el: 'pre',
2330
+ children: '$stringify( $get(form).value )',
2331
+ attrs: {
2332
+ class: 't-text-xs',
2333
+ style: 'overflow: scroll'
2334
+ }
2335
+ },
2336
+ {
2337
+ $el: 'pre',
2338
+ children: ['activeStep: ', '$activeStep'],
2339
+ attrs: {
2340
+ class: 't-text-xs',
2341
+ style: 'overflow: scroll'
2342
+ }
2343
+ },
2344
+ {
2345
+ $el: 'pre',
2346
+ children: ['stepHistory: ', '$stepHistory'],
2347
+ attrs: {
2348
+ class: 't-text-xs',
2349
+ style: 'overflow: scroll'
2350
+ }
2351
+ },
2352
+ {
2353
+ $el: 'pre',
2354
+ children: ['stepQueue: ', '$stepQueue'],
2355
+ attrs: {
2356
+ class: 't-text-xs',
2357
+ style: 'overflow: scroll'
2358
+ }
2359
+ },
2360
+ {
2361
+ $el: 'pre',
2362
+ children: ['steps: ', '$stepKeys()'],
2363
+ attrs: {
2364
+ class: 't-text-xs',
2365
+ style: 'overflow: scroll'
2366
+ }
2367
+ }
2368
+ ]
2369
+ });
2370
+
2371
+ const formPropDefaults = {
2372
+ type: 'form',
2373
+ id: 'form',
2374
+ config: { validationVisibility: 'submit' },
2375
+ onSubmit: '$submit($submitUrl, $prepData, $handleRedirect, "text/plain; charset=UTF-8")',
2376
+ plugins: '$plugins',
2377
+ actions: false,
2378
+ anchorElement: 'form-anchor',
2379
+ useLocalStorage: true,
2380
+ prepop: {
2381
+ fromURL: true
2382
+ },
2383
+ errorCodes: {
2384
+ 403: { message: "An Error Occurred", abort: false },
2385
+ 409: { abort: false },
2386
+ 429: "An Error Occurred",
2387
+ 504: { message: "An Error Occurred", abort: false },
2388
+ },
2389
+ formClass: '!t-max-w-[40rem]'
2390
+ };
2391
+
2392
+ function filterMapByKey(obj, keyList) {
2393
+ return Object.fromEntries(
2394
+ Object.entries(obj).filter(([key]) => keyList.includes(key))
2395
+ );
2396
+ }
2397
+
2398
+ // export function filteredNextStepsMapLegal(keyList) {
2399
+ // const res = { Type_Of_Legal_Problem: filterMapByKey(nextStepsMapGeneralLegal["Type_Of_Legal_Problem"], keyList) }
2400
+ // res["*"] = nextStepsMapGeneralLegal["*"]
2401
+ // return res
2402
+ // }
2403
+
2404
+ function formProps(updates) {
2405
+ const props = merge(
2406
+ formPropDefaults,
2407
+ updates
2408
+ );
2409
+ if (props.formId && !props.name) {
2410
+ props.name = props.formId;
2411
+ }
2412
+ return props
2413
+ }
2414
+
2415
+ const metaDefaults = {};
2416
+
2417
+ function metaProps(updates) {
2418
+ const data = merge(
2419
+ metaDefaults,
2420
+ updates
2421
+ );
2422
+ return {
2423
+ type: 'meta',
2424
+ data
2425
+ }
2426
+ }
2427
+
2428
+ function defaultMetaPropsHomeImprovement(category = null) {
2429
+ let commentsPlaceholders = HomeImprovementCommentsPlaceholders;
2430
+ let finalHeadlines = HomeImprovementFinalHeadlines;
2431
+ let finalSubHeadlines = HomeImprovementFinalSubHeadlines;
2432
+ if (category) {
2433
+ commentsPlaceholders = filterMapByKey(HomeImprovementCommentsPlaceholders, category);
2434
+ finalHeadlines = filterMapByKey(HomeImprovementFinalHeadlines, category);
2435
+ finalSubHeadlines = filterMapByKey(HomeImprovementFinalSubHeadlines, category);
2436
+ }
2437
+ return metaProps({
2438
+ tcpaLanguage: TCPA_LANGUAGE_HOME_IMPROVEMENT,
2439
+ defaultCommentsPlaceholder: DEFAULT_COMMENTS_PLACEHOLDER_DYNAMIC_HOME_IMPROVEMENT,
2440
+ commentsPlaceholders: commentsPlaceholders,
2441
+ defaultFinalHeadline: DEFAULT_FINAL_HEADLINE_HOME_IMPROVEMENT,
2442
+ finalHeadlines: finalHeadlines,
2443
+ defaultFinalSubHeadline: DEFAULT_FINAL_SUBHEADLINE_HOME_IMPROVEMENT,
2444
+ finalSubHeadlines: finalSubHeadlines
2445
+ })
2446
+ }
2447
+
2448
+ function dynamicSchemaNode(field = 'Type_Of_Legal_Problem') {
2449
+ return {
2450
+ $cmp: 'FormKitSchema',
2451
+ if: '$get(' + field + ').value',
2452
+ props: {
2453
+ schema: '$meta.dynamicSchema',
2454
+ data: '$buildData($meta)'
2455
+ }
2456
+ }
2457
+ }
2458
+
2459
+ const formAnchorDefaults = {
2460
+ $el: 'div',
2461
+ children: [
2462
+ {
2463
+ $el: 'div',
2464
+ attrs: {
2465
+ id: 'form-anchor',
2466
+ class: 't-absolute',
2467
+ style: { top: '-30px', left: 0 }
2468
+ }
2469
+ }
2470
+ ],
2471
+ attrs: {
2472
+ class: 't-relative'
2473
+ }
2474
+ };
2475
+
2476
+ function formAnchor(updates) {
2477
+ return merge(
2478
+ formAnchorDefaults,
2479
+ updates
2480
+ )
2481
+ }
2482
+
2483
+ const progressBarDefaults = {
2484
+ $el: 'div',
2485
+ attrs: {
2486
+ class: 't-mt-7 t-mb-5 t-w-full t-flex t-flex-col t-justify-center t-items-center',
2487
+ style: {
2488
+ if: '$fns.eq($activeStep, $firstStep()) || $fns.eq($activeStep, $lastStep())',
2489
+ then: 'display: none'
2490
+ },
2491
+ },
2492
+ children: [
2493
+ {
2494
+ $el: 'div',
2495
+ attrs: {
2496
+ class: 't-flex t-justify-center'
2497
+ },
2498
+ children: [
2499
+ {
2500
+ $el: 'span',
2501
+ attrs: {
2502
+ id: 'progress-bar-text',
2503
+ class: 't-text-sm t-mb-1'
2504
+ },
2505
+ children: [
2506
+ "0% Complete"
2507
+ ]
2508
+ },
2509
+ ]
2510
+ },
2511
+ {
2512
+ $el: 'div',
2513
+ attrs: {
2514
+ class: 't-bg-gray-100 t-w-9/12 t-rounded'
2515
+ },
2516
+ children: [
2517
+ {
2518
+ $el: 'div',
2519
+ attrs: {
2520
+ id: 'progress-bar',
2521
+ class: 't-flex t-flex-col t-justify-center t-text-center t-whitespace-nowrap t-w-[10%] t-h-1.5 t-rounded t-text-white t-bg-[#007bff]',
2522
+ style: {
2523
+ transition: 'width 0.5s ease'
2524
+ },
2525
+ },
2526
+ }
2527
+ ]
2528
+ }
2529
+ ]
2530
+ };
2531
+
2532
+ function progressBar(updates) {
2533
+ return merge(
2534
+ progressBarDefaults,
2535
+ updates
2536
+ )
2537
+ }
2538
+
2539
+ function headlineDefaults(updates = {}) {
2540
+ return {
2541
+ $el: 'h1',
2542
+ attrs: {
2543
+ class: 't-flex t-justify-center t-text-center !t-text-[2rem] t-font-semibold t-pt-5 t-px-7 md:t-px-3' + ' ' + (updates.headlineClass || '')
2544
+ }
2545
+ }
2546
+ }
2547
+
2548
+ function headline(updates = {}) {
2549
+ return merge(
2550
+ headlineDefaults(updates),
2551
+ updates
2552
+ )
2553
+ }
2554
+
2555
+ function subHeadlineDefaults(updates = {}) {
2556
+ return {
2557
+ $el: 'h3',
2558
+ attrs: {
2559
+ class: 't-flex t-justify-center t-text-center !t-text-[1.2rem] t-font-medium t-text-blue-500 t-px-10' + ' ' + (updates.subheadlineClass || '')
2560
+ }
2561
+ }
2562
+ }
2563
+
2564
+ function subHeadline(updates = {}) {
2565
+ return merge(
2566
+ subHeadlineDefaults(updates),
2567
+ updates
2568
+ )
2569
+ }
2570
+
2571
+ function defaultSubHeadline() {
2572
+ return subHeadline({
2573
+ children: '$urlParam("shl", "Our Service is Fast and Free!")',
2574
+ if: '$activeStep === $firstStep()'
2575
+ })
2576
+ }
2577
+
2578
+ const hiddenInputsBase = [
2579
+ {
2580
+ $formkit: 'hidden',
2581
+ name: "gclid",
2582
+ value: null
2583
+ },
2584
+ {
2585
+ $formkit: 'hidden',
2586
+ name: "campaignid",
2587
+ value: null
2588
+ },
2589
+ {
2590
+ $formkit: 'hidden',
2591
+ name: "s",
2592
+ value: null
2593
+ }
2594
+ ];
2595
+
2596
+ const hiddenInputsHomeImprovement = [
2597
+ {
2598
+ $formkit: 'hidden',
2599
+ name: "vertical",
2600
+ value: "HomeImprovement"
2601
+ },
2602
+ {
2603
+ $formkit: 'hidden',
2604
+ name: "TCPA_Language",
2605
+ value: "$meta.tcpaLanguage"
2606
+ },
2607
+ ...hiddenInputsBase
2608
+ ];
2609
+
2610
+ const homeImprovementRedirectMapDefaults = {
2611
+ '*': HomeImprovementRedirectUrl()
2612
+ };
2613
+
2614
+
2615
+ function homeImprovementRedirectMap(updates) {
2616
+ return merge(
2617
+ homeImprovementRedirectMapDefaults,
2618
+ updates
2619
+ )
2620
+ }
2621
+
2622
+
2623
+ // ------ Home Improvement
2624
+
2625
+
2626
+ const HomeImprovementCommentsPlaceholders = {
2627
+ 'Additions': 'Example: "I would like to add a sunroom to my home"',
2628
+ 'Appliances': 'Example: "I need to repair a dishwasher"',
2629
+ 'Appraisals': 'Example: "I need to get my home appraised"',
2630
+ 'Cabinets': 'Example: "I want to install new kitchen cabinets"',
2631
+ 'Carpentry': 'Example: "I need someone to build custom shelves"',
2632
+ 'Carpets': 'Example: "I want to replace the carpets in my living room"',
2633
+ 'Cleaning': 'Example: "I need a professional cleaning service for my home"',
2634
+ 'Countertops': 'Example: "I want to install granite countertops in my kitchen"',
2635
+ 'Decks and Porches': 'Example: "I want to build a new deck in my backyard"',
2636
+ 'Demolition': 'Example: "I need to demolish a wall in my home"',
2637
+ 'Doors': 'Example: "I want to replace the front door of my house"',
2638
+ 'Driveways': 'Example: "I need to repair my driveway"',
2639
+ 'Drywall and Plaster': 'Example: "I need to repair a hole in my drywall"',
2640
+ 'Electrical': 'Example: "I need an electrician to install new light fixtures"',
2641
+ 'Fencing': 'Example: "I want to install a privacy fence in my backyard"',
2642
+ 'Flooring': 'Example: "I want to install hardwood flooring in my living room"',
2643
+ 'Foundations': 'Example: "I need to repair the foundation of my house"',
2644
+ 'Garage Doors': 'Example: "I want to replace my garage door"',
2645
+ 'General Contractors': 'Example: "I need a general contractor for a home renovation"',
2646
+ 'Gutters': 'Example: "I need to clean and repair my gutters"',
2647
+ 'Handyman': 'Example: "I need a handyman to fix various things around my house"',
2648
+ 'Holiday Decorators': 'Example: "I want to hire someone to decorate my home for the holidays"',
2649
+ 'Smart Home': 'Example: "I want to install a smart home automation system"',
2650
+ 'Home Builders': 'Example: "I want to build a custom home"',
2651
+ 'Home Inspection': 'Example: "I need a home inspection before buying a house"',
2652
+ 'Home Organization': 'Example: "I need help organizing my closets and storage"',
2653
+ 'Home Security': 'Example: "I want to install a home security system"',
2654
+ 'Home Staging': 'Example: "I need a home staging service to prepare my house for sale"',
2655
+ 'Home Theater': 'Example: "I want to set up a home theater system"',
2656
+ 'Home Warranties': 'Example: "I want to purchase a home warranty"',
2657
+ 'Hot Tubs': 'Example: "I want to install a hot tub in my backyard"',
2658
+ 'Heating and Cooling': 'Example: "I need to repair my air conditioning unit"',
2659
+ 'Insulation': 'Example: "I want to improve the insulation in my home"',
2660
+ 'Junk Removal': 'Example: "I need a service to remove junk and debris from my property"',
2661
+ 'Landscaping': 'Example: "I want to redesign my backyard landscaping"',
2662
+ 'Locksmiths': 'Example: "I need a locksmith to change the locks on my doors"',
2663
+ 'Masonry and Concrete': 'Example: "I need to repair a cracked concrete driveway"',
2664
+ 'Restoration': 'Example: "I need water damage restoration services"',
2665
+ 'Moving': 'Example: "I need a moving company to help me relocate"',
2666
+ 'Painting': 'Example: "I want to paint the interior walls of my house"',
2667
+ 'Pest Control': 'Example: "I need pest control services for my home"',
2668
+ 'Pools': 'Example: "I want to install a swimming pool in my backyard"',
2669
+ 'Plumbing': 'Example: "I need a plumber to fix a leaky faucet"',
2670
+ 'Pressure Washing': 'Example: "I want to pressure wash the exterior of my house"',
2671
+ 'Remodeling': 'Example: "I want to remodel my kitchen"',
2672
+ 'Roofing': 'Example: "I need to repair a leaky roof"',
2673
+ 'Sheds': 'Example: "I want to build a storage shed in my backyard"',
2674
+ 'Siding': 'Example: "I want to replace the siding on my house"',
2675
+ 'Solar': 'Example: "I want to install solar panels on my roof"',
2676
+ 'Tiling': 'Example: "I want to install new tiles in my bathroom"',
2677
+ 'Walk-in Tubs': 'Example: "I want to install a walk-in tub in my bathroom"',
2678
+ 'Waterproofing': 'Example: "I need to waterproof my basement"',
2679
+ 'Window Cleaning': 'Example: "I need a professional window cleaning service"',
2680
+ 'Windows': 'Example: "I want to replace 3 windows in my house"',
2681
+ };
2682
+
2683
+ const HomeImprovementFinalHeadlines = {
2684
+ // 'Additions': '',
2685
+ // 'Appliances': '',
2686
+ // 'Appraisals': '',
2687
+ // 'Cabinets': '',
2688
+ // 'Carpentry': '',
2689
+ // 'Carpets': '',
2690
+ // 'Cleaning': '',
2691
+ // 'Countertops': '',
2692
+ // 'Decks and Porches': '',
2693
+ // 'Demolition': '',
2694
+ // 'Doors': '',
2695
+ // 'Driveways': '',
2696
+ // 'Drywall and Plaster': '',
2697
+ // 'Electrical': '',
2698
+ // 'Fencing': '',
2699
+ // 'Flooring': '',
2700
+ // 'Foundations': '',
2701
+ // 'Garage Doors': '',
2702
+ // 'General Contractors': '',
2703
+ // 'Gutters': '',
2704
+ // 'Handyman': '',
2705
+ // 'Holiday Decorators': '',
2706
+ // 'Smart Home': '',
2707
+ // 'Home Builders': '',
2708
+ // 'Home Inspection': '',
2709
+ // 'Home Organization': '',
2710
+ // 'Home Security': '',
2711
+ // 'Home Staging': '',
2712
+ // 'Home Theater': '',
2713
+ // 'Home Warranties': '',
2714
+ // 'Hot Tubs': '',
2715
+ // 'Heating and Cooling': '',
2716
+ // 'Insulation': '',
2717
+ // 'Junk Removal': '',
2718
+ // 'Landscaping': '',
2719
+ // 'Locksmiths': '',
2720
+ // 'Masonry and Concrete': '',
2721
+ // 'Restoration': '',
2722
+ // 'Moving': '',
2723
+ // 'Painting': '',
2724
+ // 'Pest Control': '',
2725
+ // 'Pools': '',
2726
+ // 'Plumbing': '',
2727
+ // 'Pressure Washing': '',
2728
+ // 'Remodeling': '',
2729
+ // 'Roofing': '',
2730
+ // 'Sheds': '',
2731
+ // 'Siding': '',
2732
+ // 'Solar': '',
2733
+ // 'Tiling': '',
2734
+ // 'Walk-in Tubs': '',
2735
+ // 'Waterproofing': '',
2736
+ // 'Window Cleaning': '',
2737
+ // 'Windows': '',
2738
+ };
2739
+
2740
+ const HomeImprovementFinalSubHeadlines = {
2741
+ // 'Additions': '',
2742
+ // 'Appliances': '',
2743
+ // 'Appraisals': '',
2744
+ // 'Cabinets': '',
2745
+ // 'Carpentry': '',
2746
+ // 'Carpets': '',
2747
+ // 'Cleaning': '',
2748
+ // 'Countertops': '',
2749
+ // 'Decks and Porches': '',
2750
+ // 'Demolition': '',
2751
+ // 'Doors': '',
2752
+ // 'Driveways': '',
2753
+ // 'Drywall and Plaster': '',
2754
+ // 'Electrical': '',
2755
+ // 'Fencing': '',
2756
+ // 'Flooring': '',
2757
+ // 'Foundations': '',
2758
+ // 'Garage Doors': '',
2759
+ // 'General Contractors': '',
2760
+ // 'Gutters': '',
2761
+ // 'Handyman': '',
2762
+ // 'Holiday Decorators': '',
2763
+ // 'Smart Home': '',
2764
+ // 'Home Builders': '',
2765
+ // 'Home Inspection': '',
2766
+ // 'Home Organization': '',
2767
+ // 'Home Security': '',
2768
+ // 'Home Staging': '',
2769
+ // 'Home Theater': '',
2770
+ // 'Home Warranties': '',
2771
+ // 'Hot Tubs': '',
2772
+ // 'Heating and Cooling': '',
2773
+ // 'Insulation': '',
2774
+ // 'Junk Removal': '',
2775
+ // 'Landscaping': '',
2776
+ // 'Locksmiths': '',
2777
+ // 'Masonry and Concrete': '',
2778
+ // 'Restoration': '',
2779
+ // 'Moving': '',
2780
+ // 'Painting': '',
2781
+ // 'Pest Control': '',
2782
+ // 'Pools': '',
2783
+ // 'Plumbing': '',
2784
+ // 'Pressure Washing': '',
2785
+ // 'Remodeling': '',
2786
+ // 'Roofing': '',
2787
+ // 'Sheds': '',
2788
+ // 'Siding': '',
2789
+ // 'Solar': '',
2790
+ // 'Tiling': '',
2791
+ // 'Walk-in Tubs': '',
2792
+ // 'Waterproofing': '',
2793
+ // 'Window Cleaning': '',
2794
+ // 'Windows': '',
2795
+ };
2796
+
2797
+ const nextStepsHomeImprovementDefault = [
2798
+ 'comments',
2799
+ 'timeframe',
2800
+ 'ownHome',
2801
+ 'zipcode',
2802
+ 'address',
2803
+ 'homeImprovementCrossSells',
2804
+ 'firstAndLast',
2805
+ 'contactInfo',
2806
+ ];
2807
+
2808
+ const nextStepsMapGeneralHomeImprovement = {
2809
+ values: {
2810
+ 'Category': {
2811
+ 'Additions': [
2812
+ 'additionsSubType',
2813
+ 'constructionAreaSize',
2814
+ ...nextStepsHomeImprovementDefault
2815
+ ],
2816
+ 'Appliances': [
2817
+ 'homeImprovementWorkType',
2818
+ 'applianceType',
2819
+ ...nextStepsHomeImprovementDefault
2820
+ ],
2821
+ 'Appraisals': [
2822
+ ...nextStepsHomeImprovementDefault
2823
+ ],
2824
+ 'Cabinets': [
2825
+ 'cabinetWorkType',
2826
+ ...nextStepsHomeImprovementDefault
2827
+ ],
2828
+ 'Carpentry': [
2829
+ 'carpentrySubtype',
2830
+ 'homeImprovementWorkType',
2831
+ ...nextStepsHomeImprovementDefault
2832
+ ],
2833
+ 'Carpets': [
2834
+ 'carpetWorkType',
2835
+ ...nextStepsHomeImprovementDefault
2836
+ ],
2837
+ 'Cleaning': [
2838
+ 'cleaningSubtype',
2839
+ ...nextStepsHomeImprovementDefault
2840
+ ],
2841
+ 'Countertops': [
2842
+ 'countertopMaterial',
2843
+ 'homeImprovementWorkType',
2844
+ ...nextStepsHomeImprovementDefault
2845
+ ],
2846
+ 'Decks and Porches': [
2847
+ 'deckWorkType',
2848
+ ...nextStepsHomeImprovementDefault
2849
+ ],
2850
+ 'Demolition': [
2851
+ 'demolitionSubtype',
2852
+ ...nextStepsHomeImprovementDefault
2853
+ ],
2854
+ 'Doors': [
2855
+ 'doorSubtype',
2856
+ 'homeImprovementWorkType',
2857
+ ...nextStepsHomeImprovementDefault
2858
+ ],
2859
+ 'Driveways': [
2860
+ 'drivewayWorkType',
2861
+ 'drivewayMaterial',
2862
+ ...nextStepsHomeImprovementDefault
2863
+ ],
2864
+ 'Drywall and Plaster': [
2865
+ 'wallSurfaceType',
2866
+ 'homeImprovementWorkType',
2867
+ ...nextStepsHomeImprovementDefault
2868
+ ],
2869
+ 'Electrical': [
2870
+ 'electricalSubtype',
2871
+ 'homeImprovementWorkType',
2872
+ ...nextStepsHomeImprovementDefault
2873
+ ],
2874
+ 'Fencing': [
2875
+ 'fenceMaterial',
2876
+ 'homeImprovementWorkType',
2877
+ ...nextStepsHomeImprovementDefault
2878
+ ],
2879
+ 'Flooring': [
2880
+ 'flooringMaterial',
2881
+ 'homeImprovementWorkType',
2882
+ ...nextStepsHomeImprovementDefault
2883
+ ],
2884
+ 'Foundations': [
2885
+ 'homeImprovementWorkType',
2886
+ ...nextStepsHomeImprovementDefault
2887
+ ],
2888
+ 'Garage Doors': [
2889
+ 'homeImprovementWorkType',
2890
+ ...nextStepsHomeImprovementDefault
2891
+ ],
2892
+ 'General Contractors': [
2893
+ 'generalContractorSubtype',
2894
+ ...nextStepsHomeImprovementDefault
2895
+ ],
2896
+ 'Gutters': [
2897
+ 'gutterMaterial',
2898
+ 'guttersWorkType',
2899
+ ...nextStepsHomeImprovementDefault
2900
+ ],
2901
+ 'Handyman': [
2902
+ ...nextStepsHomeImprovementDefault
2903
+ ],
2904
+ 'Holiday Decorators': [
2905
+ ...nextStepsHomeImprovementDefault
2906
+ ],
2907
+ 'Smart Home': [
2908
+ 'smartHomeSubtype',
2909
+ ...nextStepsHomeImprovementDefault
2910
+ ],
2911
+ 'Home Builders': [
2912
+ ...nextStepsHomeImprovementDefault
2913
+ ],
2914
+ 'Home Inspection': [
2915
+ ...nextStepsHomeImprovementDefault
2916
+ ],
2917
+ 'Home Organization': [
2918
+ 'homeOrganizationSubtype',
2919
+ ...nextStepsHomeImprovementDefault
2920
+ ],
2921
+ 'Home Security': [
2922
+ ...nextStepsHomeImprovementDefault
2923
+ ],
2924
+ 'Home Staging': [
2925
+ 'numberOfRooms',
2926
+ ...nextStepsHomeImprovementDefault
2927
+ ],
2928
+ 'Home Theater': [
2929
+ 'homeTheaterSubtype',
2930
+ ...nextStepsHomeImprovementDefault
2931
+ ],
2932
+ 'Home Warranties': [
2933
+ ...nextStepsHomeImprovementDefault
2934
+ ],
2935
+ 'Hot Tubs': [
2936
+ 'homeImprovementWorkType',
2937
+ ...nextStepsHomeImprovementDefault
2938
+ ],
2939
+ 'Heating and Cooling': [
2940
+ 'heatingCoolingSubtype',
2941
+ 'fuelSource',
2942
+ 'homeImprovementWorkType',
2943
+ ...nextStepsHomeImprovementDefault
2944
+ ],
2945
+ 'Insulation': [
2946
+ 'insulationSubtype',
2947
+ ...nextStepsHomeImprovementDefault
2948
+ ],
2949
+ 'Junk Removal': [
2950
+ ...nextStepsHomeImprovementDefault
2951
+ ],
2952
+ 'Landscaping': [
2953
+ 'landscapingSubtype',
2954
+ 'homeImprovementWorkType',
2955
+ ...nextStepsHomeImprovementDefault
2956
+ ],
2957
+ 'Locksmiths': [
2958
+ ...nextStepsHomeImprovementDefault
2959
+ ],
2960
+ 'Masonry and Concrete': [
2961
+ 'masonrySubtype',
2962
+ 'masonryMaterial',
2963
+ 'masonryWorkType',
2964
+ ...nextStepsHomeImprovementDefault
2965
+ ],
2966
+ 'Restoration': [
2967
+ 'restorationSubtype',
2968
+ ...nextStepsHomeImprovementDefault
2969
+ ],
2970
+ 'Moving': [
2971
+ 'movingFromAddress',
2972
+ 'movingToAddress',
2973
+ 'movingHouseholdSize',
2974
+ ...nextStepsHomeImprovementDefault
2975
+ ],
2976
+ 'Painting': [
2977
+ 'paintingSubtype',
2978
+ 'paintingRooms',
2979
+ ...nextStepsHomeImprovementDefault
2980
+ ],
2981
+ 'Pest Control': [
2982
+ 'pestControlSubtype',
2983
+ ...nextStepsHomeImprovementDefault
2984
+ ],
2985
+ 'Pools': [
2986
+ 'poolsWorkType',
2987
+ 'poolsSubtype',
2988
+ ...nextStepsHomeImprovementDefault
2989
+ ],
2990
+ 'Plumbing': [
2991
+ 'plumbingSubtype',
2992
+ 'homeImprovementWorkType',
2993
+ ...nextStepsHomeImprovementDefault
2994
+ ],
2995
+ 'Pressure Washing': [
2996
+ ...nextStepsHomeImprovementDefault
2997
+ ],
2998
+ 'Remodeling': [
2999
+ 'remodelingSubtype',
3000
+ ...nextStepsHomeImprovementDefault
3001
+ ],
3002
+ 'Roofing': [
3003
+ 'roofingWorkType',
3004
+ 'roofingMaterial',
3005
+ ...nextStepsHomeImprovementDefault
3006
+ ],
3007
+ 'Sheds': [
3008
+ 'homeImprovementWorkType',
3009
+ ...nextStepsHomeImprovementDefault
3010
+ ],
3011
+ 'Siding': [
3012
+ 'sidingMaterial',
3013
+ 'homeImprovementWorkType',
3014
+ ...nextStepsHomeImprovementDefault
3015
+ ],
3016
+ 'Solar': [
3017
+ 'homeImprovementWorkType',
3018
+ ...nextStepsHomeImprovementDefault
3019
+ ],
3020
+ 'Tiling': [
3021
+ 'tilingSubtype',
3022
+ 'homeImprovementWorkType',
3023
+ ...nextStepsHomeImprovementDefault
3024
+ ],
3025
+ 'Walk-in Tubs': [
3026
+ ...nextStepsHomeImprovementDefault
3027
+ ],
3028
+ 'Waterproofing': [
3029
+ 'waterproofingSubtype',
3030
+ ...nextStepsHomeImprovementDefault
3031
+ ],
3032
+ 'Window Cleaning': [
3033
+ ...nextStepsHomeImprovementDefault
3034
+ ],
3035
+ 'Windows': [
3036
+ 'windowsWorkType',
3037
+ 'windowsSubtype',
3038
+ 'numberOfWindows',
3039
+ ...nextStepsHomeImprovementDefault
3040
+ ]
3041
+ },
3042
+ '*': nextStepsHomeImprovementDefault
3043
+ }
3044
+ };
3045
+
3046
+ const nextStepsMapPainting = {
3047
+ values: {
3048
+ 'Painting_Subtype': {
3049
+ 'Whole Exterior': nextStepsHomeImprovementDefault,
3050
+ 'Exterior Touch-up': nextStepsHomeImprovementDefault,
3051
+ 'Interior Rooms': [
3052
+ 'paintingRooms',
3053
+ ...nextStepsHomeImprovementDefault
3054
+ ],
3055
+ 'Interior Touch-up': [
3056
+ 'paintingRooms',
3057
+ ...nextStepsHomeImprovementDefault
3058
+ ],
3059
+ 'Ceilings': [
3060
+ 'paintingRooms',
3061
+ ...nextStepsHomeImprovementDefault
3062
+ ],
3063
+ 'Deck': nextStepsHomeImprovementDefault,
3064
+ 'Shed': nextStepsHomeImprovementDefault,
3065
+ 'Cabinets': nextStepsHomeImprovementDefault,
3066
+ 'Not Sure or Other': nextStepsHomeImprovementDefault,
3067
+ }
3068
+ }
3069
+ };
3070
+
3071
+ const homeImprovementCrossSellOptionMap = CROSS_SELL_OPTION_MAP_HOME_IMPROVEMENT;
3072
+
3073
+ const nextStepsMapHomeImprovementCrossSells = {
3074
+ values: {
3075
+ 'Home_Improvement_CrossSells': {
3076
+ 'Appliances': ['applianceCrossSellQuestions'],
3077
+ 'Carpentry': ['carpentryCrossSellQuestions'],
3078
+ 'Driveways': ['drivewayCrossSellQuestions'],
3079
+ 'Drywall and Plaster': ['drywallCrossSellQuestions'],
3080
+ 'Electrical': ['electricalCrossSellQuestions'],
3081
+ 'Flooring': ['flooringCrossSellQuestions'],
3082
+ 'Heating and Cooling': ['heatingCoolingCrossSellQuestions'],
3083
+ 'Landscaping': ['landscapingCrossSellQuestions'],
3084
+ 'Masonry and Concrete': ['masonryAndConcreteCrossSellQuestions'],
3085
+ 'Painting': ['paintingCrossSellQuestions'],
3086
+ 'Pest Control': ['pestControlCrossSellQuestions'],
3087
+ 'Plumbing': ['plumbingCrossSellQuestions'],
3088
+ 'Remodeling': ['remodelingCrossSellQuestions'],
3089
+ 'Roofing': ['roofingCrossSellQuestions'],
3090
+ 'Siding': ['sidingCrossSellQuestions'],
3091
+ 'Windows': ['windowsCrossSellQuestions'],
3092
+ // TODO:
3093
+ // Insulation, Cabinets, Countertops, Decks and Porches, Doors,
3094
+ // Fencing, Gutters, Handyman, Pressure Washing
3095
+ },
3096
+ '*': ['firstAndLast', 'contactInfo'],
3097
+ },
3098
+ // NOTE: this assumes a certain placement of the cross sell question
3099
+ // in the form flow.
3100
+ appendSteps: ['firstAndLast', 'contactInfo'],
3101
+ matchesAllowed: 1,
3102
+ };
3103
+
3104
+ const meta = defaultMetaPropsHomeImprovement();
3105
+
3106
+ meta.data.dynamicSchema = [
3107
+ zipcode(),
3108
+ timeframe(),
3109
+ ownHome(),
3110
+ address(),
3111
+ homeImprovementWorkType(),
3112
+ additionsSubType(),
3113
+ constructionAreaSize(),
3114
+ applianceType(),
3115
+ cabinetWorkType(),
3116
+ carpentrySubtype(),
3117
+ carpetWorkType(),
3118
+ cleaningSubtype(),
3119
+ countertopMaterial(),
3120
+ deckWorkType(),
3121
+ demolitionSubtype(),
3122
+ doorSubtype(),
3123
+ drivewayWorkType(),
3124
+ drivewayMaterial(),
3125
+ wallSurfaceType(),
3126
+ electricalSubtype(),
3127
+ fenceMaterial(),
3128
+ flooringMaterial(),
3129
+ generalContractorSubtype(),
3130
+ gutterMaterial(),
3131
+ guttersWorkType(),
3132
+ smartHomeSubtype(),
3133
+ homeOrganizationSubtype(),
3134
+ numberOfRooms(),
3135
+ homeTheaterSubtype(),
3136
+ heatingCoolingSubtype(),
3137
+ fuelSource(),
3138
+ insulationSubtype(),
3139
+ landscapingSubtype(),
3140
+ masonrySubtype(),
3141
+ masonryMaterial(),
3142
+ masonryWorkType(),
3143
+ restorationSubtype(),
3144
+ // Moving not finished yet
3145
+ // steps.movingFromAddress(),
3146
+ // steps.movingToAddress(),
3147
+ // steps.movingHouseholdSize(),
3148
+ paintingSubtype({
3149
+ nextStepMap: nextStepsMapPainting
3150
+ }),
3151
+ paintingRooms(),
3152
+ pestControlSubtype(),
3153
+ poolsWorkType(),
3154
+ poolsSubtype(),
3155
+ plumbingSubtype(),
3156
+ remodelingSubtype(),
3157
+ roofingWorkType(),
3158
+ roofingMaterial(),
3159
+ sidingMaterial(),
3160
+ tilingSubtype(),
3161
+ waterproofingSubtype(),
3162
+ windowsWorkType(),
3163
+ windowsSubtype(),
3164
+ numberOfWindows(),
3165
+ // steps.plumbingCrossSellQuestions(),
3166
+ commentsHeadline({
3167
+ label: null,
3168
+ headline: 'Please briefly describe your project:',
3169
+ headlineClass: '!t-text-dark',
3170
+ }),
3171
+ homeImprovementCrossSells({
3172
+ headlineClass: '!t-text-dark',
3173
+ nextStepMap: nextStepsMapHomeImprovementCrossSells,
3174
+ }),
3175
+ firstAndLastV3({
3176
+ headlineClass: '!t-text-dark'
3177
+ }),
3178
+ ];
3179
+
3180
+ const schema = [
3181
+ meta,
3182
+ formAnchor(),
3183
+ {
3184
+ $cmp: 'FormKit',
3185
+ props: formProps({
3186
+ formId: 'generalHomeImprovement',
3187
+ redirectMap: homeImprovementRedirectMap(),
3188
+ // valueOverrideMap: forms.homeImprovementAllValueOverrideMap,
3189
+ crossSellOptionMap: homeImprovementCrossSellOptionMap
3190
+ }),
3191
+ children: [
3192
+ progressBar(),
3193
+ headline({
3194
+ children: '$urlParam("hl", "Get Free Quotes Now!")',
3195
+ if: '$activeStep === $firstStep()'
3196
+ }),
3197
+ defaultSubHeadline(),
3198
+ ...hiddenInputsHomeImprovement,
3199
+ {
3200
+ $el: 'div',
3201
+ attrs: {
3202
+ class: 'form-body'
3203
+ },
3204
+ children: [
3205
+ homeImprovementCategory({
3206
+ nextOnInput: false,
3207
+ nextStepMap: nextStepsMapGeneralHomeImprovement,
3208
+ headlineClass: 't-text-lg',
3209
+ input: {
3210
+ placeholder: 'Select a Category',
3211
+ innerClass: '!t-max-w-[275px] md:!t-max-w-xl'
3212
+ }
3213
+ }),
3214
+ dynamicSchemaNode('Category'),
3215
+ contactInfo(),
3216
+ formNavigation(),
3217
+ formDetails()
3218
+ ]
3219
+ }
3220
+ ]
3221
+ }
3222
+ ];
3223
+
3224
+ export { schema as default };