bhl-forms 0.7.1 → 0.7.3

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