mod-build 4.0.91 → 4.0.92

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 (137) hide show
  1. package/package.json +1 -2
  2. package/public/resources/scripts/abandonment/abandonment-a4bbb36fbc8ed64042b8.min.js +2 -0
  3. package/public/resources/scripts/abandonment/abandonment.min.js +2 -0
  4. package/public/resources/scripts/callrail/callrail-14011d73b50a928de4b4.min.js +2 -0
  5. package/public/resources/scripts/callrail/callrail.min.js +2 -0
  6. package/public/resources/scripts/footer/footer-component-46dc0d7ca6af4fc3b76b.min.js +2 -0
  7. package/public/resources/scripts/footer/footer-component.min.js +2 -0
  8. package/public/resources/scripts/geolocation/geolocation.min.js +2 -0
  9. package/public/resources/scripts/helpers/addVWOTestQueryParam.min.js +2 -0
  10. package/public/resources/scripts/helpers/addVWOTestQueryParam.min.js.map +1 -0
  11. package/public/resources/scripts/helpers/additionalOpts.min.js +2 -0
  12. package/public/resources/scripts/helpers/additionalOpts.min.js.map +1 -0
  13. package/public/resources/scripts/helpers/calls-only.min.js +2 -0
  14. package/public/resources/scripts/helpers/calls-only.min.js.map +1 -0
  15. package/public/resources/scripts/helpers/getPhoneAssignmentData.min.js +2 -0
  16. package/public/resources/scripts/helpers/getPhoneAssignmentData.min.js.map +1 -0
  17. package/public/resources/scripts/helpers/initNumericOnlyFields.min.js +2 -0
  18. package/public/resources/scripts/helpers/initNumericOnlyFields.min.js.map +1 -0
  19. package/public/resources/scripts/helpers/initQSForm.min.js +2 -0
  20. package/public/resources/scripts/helpers/initQSForm.min.js.map +1 -0
  21. package/public/resources/scripts/helpers/initQuadTransform.min.js +2 -0
  22. package/public/resources/scripts/helpers/initQuadTransform.min.js.map +1 -0
  23. package/public/resources/scripts/helpers/isZipCodeValid.min.js +2 -0
  24. package/public/resources/scripts/helpers/isZipCodeValid.min.js.map +1 -0
  25. package/public/resources/scripts/helpers/observeVWOVariation.min.js +2 -0
  26. package/public/resources/scripts/helpers/observeVWOVariation.min.js.map +1 -0
  27. package/public/resources/scripts/helpers/opts.min.js +2 -0
  28. package/public/resources/scripts/helpers/opts.min.js.map +1 -0
  29. package/public/resources/scripts/jornaya.hbs +35 -0
  30. package/public/resources/scripts/jornaya.html +35 -0
  31. package/public/resources/scripts/mod-alytics/modalytics-be44027508c0438f6709.min.js +2 -0
  32. package/public/resources/scripts/mod-alytics/modalytics.min.js +2 -0
  33. package/public/resources/scripts/mod-form/form/contractor-0918337caf3dfede1609.min.js +2 -0
  34. package/public/resources/scripts/mod-form/form/contractor.min.js +2 -0
  35. package/public/resources/scripts/mod-form/form/homeowner-19a121b0e596042326f4.min.js +2 -0
  36. package/public/resources/scripts/mod-form/form/homeowner.min.js +2 -0
  37. package/public/resources/scripts/mod-utils/modutils-bc275eb41af515f626ef.min.js +2 -0
  38. package/public/resources/scripts/mod-utils/modutils.min.js +2 -0
  39. package/public/resources/scripts/trusted-form.hbs +38 -0
  40. package/public/resources/scripts/trusted-form.html +38 -0
  41. package/public/resources/styles/components/abandonment/abandonment-8a673f060817db6cb7dc.min.css +1 -0
  42. package/public/resources/styles/components/abandonment/abandonment.min.css +1 -0
  43. package/public/resources/styles/components/footer/mod-footer-d233fa64b6c8297c70ec.min.css +1 -0
  44. package/public/resources/styles/components/footer/mod-footer.min.css +1 -0
  45. package/public/resources/styles/components/footer/qs-footer-926e67c28d10c729db46.min.css +1 -0
  46. package/public/resources/styles/components/footer/qs-footer.min.css +1 -0
  47. package/src/resources/data/tcpa.json +4 -0
  48. package/src/resources/templates/modals/about/index.hbs +9 -0
  49. package/src/resources/templates/modals/about/index.html +9 -0
  50. package/src/resources/templates/modals/contact-us/index.hbs +348 -0
  51. package/src/resources/templates/modals/contact-us/index.html +348 -0
  52. package/src/resources/templates/modals/e-sign-consent/index.hbs +35 -0
  53. package/src/resources/templates/modals/e-sign-consent/index.html +35 -0
  54. package/src/resources/templates/modals/faq/index.hbs +9 -0
  55. package/src/resources/templates/modals/faq/index.html +9 -0
  56. package/src/resources/templates/modals/privacy/index.hbs +237 -0
  57. package/src/resources/templates/modals/privacy/index.html +237 -0
  58. package/src/resources/templates/modals/terms/index.hbs +167 -0
  59. package/src/resources/templates/modals/terms/index.html +167 -0
  60. package/src/scripts/retry-fetch.js +39 -0
  61. package/src/shared-components/call-tracking/_call-tracking.scss +311 -0
  62. package/src/shared-components/call-tracking/call-tracking-icon.html +8 -0
  63. package/src/shared-components/call-tracking/call-tracking.html +81 -0
  64. package/src/shared-components/call-tracking/phone.svg +6 -0
  65. package/src/shared-components/card-button/_card-button.scss +49 -0
  66. package/src/shared-components/card-button/card-button.html +9 -0
  67. package/src/shared-components/carousel/_carousel.scss +106 -0
  68. package/src/shared-components/carousel/carousel.html +23 -0
  69. package/src/shared-components/carousel/carousel.js +3573 -0
  70. package/src/shared-components/carousel/carousel.js.map +1 -0
  71. package/src/shared-components/carousel/carousel.min.js +2 -0
  72. package/src/shared-components/carousel/carousel.min.js.map +1 -0
  73. package/src/shared-components/carousel/carousel.min.min.js +2 -0
  74. package/src/shared-components/carousel/carousel.min.min.js.map +1 -0
  75. package/src/shared-components/checkbox/_checkbox.scss +130 -0
  76. package/src/shared-components/checkbox/checkbox.html +10 -0
  77. package/src/shared-components/consent-capture/tcpa.html +12 -0
  78. package/src/shared-components/expand-collapse/_expand-collapse.scss +93 -0
  79. package/src/shared-components/expand-collapse/expand-collapse.html +8 -0
  80. package/src/shared-components/expand-collapse/expand-collapse.js +40 -0
  81. package/src/shared-components/expand-collapse/expand-collapse.min.js +2 -0
  82. package/src/shared-components/expand-collapse/expand-collapse.min.js.map +1 -0
  83. package/src/shared-components/featured-block/_featured-block.scss +191 -0
  84. package/src/shared-components/featured-block/featured-block.html +80 -0
  85. package/src/shared-components/foot-assets/foot-assets.html +107 -0
  86. package/src/shared-components/form-tcpa/form-tcpa-spanish.html +61 -0
  87. package/src/shared-components/form-tcpa/form-tcpa.html +55 -0
  88. package/src/shared-components/gtm-body/gtm-body.html +4 -0
  89. package/src/shared-components/head/head.html +195 -0
  90. package/src/shared-components/header/_header.scss +200 -0
  91. package/src/shared-components/header/header.html +79 -0
  92. package/src/shared-components/hero/_hero.scss +276 -0
  93. package/src/shared-components/hero/hero.html +136 -0
  94. package/src/shared-components/how-it-works/_how-it-works.scss +138 -0
  95. package/src/shared-components/how-it-works/how-it-works.html +19 -0
  96. package/src/shared-components/input/_input.scss +242 -0
  97. package/src/shared-components/input/input.html +30 -0
  98. package/src/shared-components/preloader/_preloader.scss +61 -0
  99. package/src/shared-components/preloader/preloader.html +49 -0
  100. package/src/shared-components/progress-bar/_progress-bar.scss +142 -0
  101. package/src/shared-components/progress-bar/progress-bar.html +20 -0
  102. package/src/shared-components/progress-bar/progress-bar.js +26 -0
  103. package/src/shared-components/progress-bar/progress-bar.min.js +2 -0
  104. package/src/shared-components/progress-bar/progress-bar.min.js.map +1 -0
  105. package/src/shared-components/radio-button/_radio-button.scss +577 -0
  106. package/src/shared-components/radio-button/radio-button.html +25 -0
  107. package/src/shared-components/reviews/_reviews.scss +79 -0
  108. package/src/shared-components/reviews/reviews.html +27 -0
  109. package/src/shared-components/section-deals/sitemap.xml +9 -0
  110. package/src/shared-components/select/_select.scss +61 -0
  111. package/src/shared-components/select/select.html +8 -0
  112. package/src/shared-components/steps/_steps.scss +431 -0
  113. package/src/shared-components/steps/defaultFormFieldConfig.json +64 -0
  114. package/src/shared-components/steps/step-fields.html +36 -0
  115. package/src/shared-components/steps/steps.html +136 -0
  116. package/src/shared-components/textarea/_textarea.scss +96 -0
  117. package/src/shared-components/textarea/textarea.html +13 -0
  118. package/src/shared-components/theme-toggle/_theme-toggle.scss +68 -0
  119. package/src/shared-components/theme-toggle/theme-toggle.html +34 -0
  120. package/src/shared-components/tile/_tile.scss +117 -0
  121. package/src/shared-components/tile/tile.html +27 -0
  122. package/src/shared-components/value-props/_value-props.scss +99 -0
  123. package/src/shared-components/value-props/value-props.html +17 -0
  124. package/src/shared-components/zip-control/_zip-control.scss +42 -0
  125. package/src/shared-components/zip-control/zip-control.html +21 -0
  126. package/tasks/add-editorconfig.js +3 -3
  127. package/tasks/get-default-trade-questions.js +8 -8
  128. package/tasks/grab-b2b-data.js +9 -30
  129. package/tasks/grab-cdn.js +4 -13
  130. package/tasks/grab-code-review-rules.js +4 -3
  131. package/tasks/grab-form-helpers.js +11 -27
  132. package/tasks/grab-global-fonts.js +7 -13
  133. package/tasks/grab-jsdoc.js +10 -30
  134. package/tasks/grab-shared-components.js +10 -19
  135. package/tasks/grab-shared-scripts.js +8 -21
  136. package/tasks/templates.js +28 -41
  137. package/src/scripts/retry-axios.js +0 -23
@@ -0,0 +1,136 @@
1
+ {{#each this.items}}
2
+ <li id="{{#if this.priority}}step{{inc this.priority}}{{else}}step{{inc @index}}{{/if}}" class="swiper-slide swiper-no-swiping step {{#if this.stepClassName}}{{this.stepClassName}}{{/if}} {{#if @first}}step--active swiper-slide-active{{/if}}{{#if this.trade }} {{this.trade}}{{/if}}{{#if ../this.textAlignment}} text-aligned-{{{../this.textAlignment}}}{{/if}}" data-bind="step" {{#if @first}}data-slide="active"{{/if}} {{#if this.stepName}} data-step-name="{{this.stepName}}"{{/if}}{{#if this.trade }} data-trade="{{this.trade}}"{{/if}}>
3
+ <div class="step-inner{{#if this.stepInnerClass}} {{this.stepInnerClass}}{{/if}}">
4
+ {{#if this.customStepTopTemplate}}
5
+ {{ fileInclude this.customStepTopTemplate
6
+ stepTopOpt = this
7
+ }}
8
+ {{/if}}
9
+
10
+ {{#if this.stepHeader}}
11
+ <div class="step__title-container{{#if this.stepHeader.classModifierFlag}} step__title-container{{this.stepHeader.classModifierFlag}}{{/if}}">
12
+ {{#if this.stepHeader.supertitle}}
13
+ <div class="step__supertitle{{#if this.stepHeader.showAnimatedArrow}} step__supertitle--show-animated-arrow{{/if}}" {{{this.stepHeader.supertitleAttributes}}} data-theme-template="formtitle">
14
+ {{#if this.stepHeader.mobileSupertitle}}
15
+ <span class="hidden-xs">{{{this.stepHeader.supertitle}}}</span>
16
+ <span class="visible-xs">{{{this.stepHeader.mobileSupertitle}}}</span>
17
+ {{else}}
18
+ {{{this.stepHeader.supertitle}}}
19
+ {{/if}}
20
+ </div>
21
+ {{#xif "'../this.callTracking' && '../this.callTracking.stepHeader'"}}
22
+ {{fileInclude 'src/shared-components/call-tracking/call-tracking.html'
23
+ isStepHeader=true
24
+ }}
25
+ {{/xif}}
26
+ {{/if}}
27
+ {{#if this.stepHeader.title}}
28
+ <div class="step__title">
29
+ {{#if this.stepHeader.mobileTitle}}
30
+ <span class="hidden-xs">{{{this.stepHeader.title}}}</span>
31
+ <span class="visible-xs">{{{this.stepHeader.mobileTitle}}}</span>
32
+ {{else}}
33
+ {{{this.stepHeader.title}}}
34
+ {{/if}}
35
+ </div>
36
+ {{/if}}
37
+
38
+ {{#if this.stepHeader.subtitle}}
39
+ <div class="step__subtitle">
40
+ {{#if this.stepHeader.subtitle.text}}{{{this.stepHeader.subtitle.text}}}{{/if}}
41
+ {{#if this.stepHeader.subtitle.list}}
42
+ <ul class="step__subtitle-list">
43
+ {{#each this.stepHeader.subtitle.list}}
44
+ <li>
45
+ <span>{{{this}}}</span>
46
+ </li>
47
+ {{/each}}
48
+ </ul>
49
+ {{/if}}
50
+ </div>
51
+ {{/if}}
52
+ {{#if this.stepHeader.overview}}
53
+ {{#unless this.moveOverviewUnderHeader}}
54
+ <div class="step__overview row">
55
+ {{#each this.stepHeader.overview}}
56
+ <span class="{{#unless this.class}}col-xs-4{{/unless}}">
57
+ <span class="step__overview-number">{{this.number}}</span> {{{this.text}}}
58
+ </span>
59
+ {{/each}}
60
+ </div>
61
+ {{/unless}}
62
+ {{/if}}
63
+ </div>
64
+ {{/if}}
65
+
66
+ {{#if this.moveOverviewUnderHeader}}
67
+ {{#if this.stepHeader.overview}}
68
+ <div class="step__overview row">
69
+ {{#each this.stepHeader.overview}}
70
+ <span class="{{#unless this.class}}col-xs-4{{/unless}}">
71
+ <span class="step__overview-number">{{this.number}}</span> {{{this.text}}}
72
+ </span>
73
+ {{/each}}
74
+ </div>
75
+ {{/if}}
76
+ {{/if}}
77
+
78
+ <div class="step__fields{{#if this.fieldsWrapperClass}} {{this.fieldsWrapperClass}}{{/if}}">
79
+ {{#each this.fields}}
80
+ <div class="form-group{{#if this.wrapper.class}} {{this.wrapper.class}}{{/if}}{{#unless this.skipErrorClass}} parent-error{{/unless}}" {{#if this.wrapper.id}}id="{{this.wrapper.id}}"{{/if}} {{#if this.wrapper.style}}style="{{this.wrapper.style}}"{{/if}}>
81
+ {{#if this.label}}
82
+ <label class="form-group__label">
83
+ {{{this.label}}}
84
+ {{#if this.labelToolTip}}
85
+ <span class="form-group__label-tooltip" data-bind="tooltip-icon">
86
+ <i class="{{#if this.labelToolTipIcon}}{{this.labelToolTipIcon}}{{else}}icon-stroke-warning{{/if}}" {{#if this.labelTooltipName}}data-tooltip-name="{{this.labelTooltipName}}"{{/if}}></i>
87
+ <span class="form-group__label-tooltip-text">
88
+ {{{this.labelToolTip}}}
89
+ </span>
90
+ </span>
91
+ {{/if}}
92
+ {{#if this.labelNote}}<span class="form-group__note">{{{this.labelNote}}}</span>{{/if}}
93
+ </label>
94
+ {{/if}}
95
+
96
+ {{ fileInclude 'src/shared-components/steps/step-fields.html'
97
+ stepFields = this
98
+ }}
99
+
100
+ {{#if this.errorMessage}}<div class="form-group__error-message">{{{this.errorMessage}}}</div>{{/if}}
101
+ {{#if this.showCityState}}<div class="form-group__city-state">City, State</div>{{/if}}
102
+ {{#if this.note}}<span class="form-group__note">{{{this.note}}}</span>{{/if}}
103
+ </div>
104
+ {{/each}}
105
+ </div>
106
+
107
+ {{#if this.extraQuestionBlock}}
108
+ <div {{#if this.extraQuestionBlock.id}}id="{{this.extraQuestionBlock.id}}"{{/if}} class="step__extra{{#if this.extraQuestionBlock.class}} {{this.extraQuestionBlock.class}}{{/if}}">
109
+ {{#if this.extraQuestionBlock.title}}
110
+ <div class="step__title">
111
+ {{{this.extraQuestionBlock.title}}}
112
+ </div>
113
+ {{/if}}
114
+ {{#if this.extraQuestionBlock.subtitle}}
115
+ <div class="step__subtitle">
116
+ {{#if this.extraQuestionBlock.subtitle.text}}
117
+ {{{this.extraQuestionBlock.subtitle.text}}}
118
+ {{/if}}
119
+ </div>
120
+ {{/if}}
121
+ {{#each this.extraQuestionBlock.fields}}
122
+ {{ fileInclude 'src/shared-components/steps/step-fields.html'
123
+ stepFields = this
124
+ }}
125
+ {{/each}}
126
+ </div>
127
+ {{/if}}
128
+
129
+ {{#if this.customStepBottomTemplate}}
130
+ {{ fileInclude this.customStepBottomTemplate
131
+ stepBottomOpt = this
132
+ }}
133
+ {{/if}}
134
+ </div>
135
+ </li>
136
+ {{/each}}
@@ -0,0 +1,96 @@
1
+ $form-textarea-bg-color: $color-white !default;
2
+ $form-textarea-border: 1px solid $color-charcoal1 !default;
3
+ $form-textarea-border-radius: 4px !default;
4
+ $form-textarea-box-shadow: inset 2px 1px 2px 0 rgba($color-black, .08), inset -2px 0px 2px 0 rgba($color-black, .08) !default;
5
+ $form-textarea-color: $color-charcoal5 !default;
6
+ $form-textarea-font-size: 16px !default;
7
+ $form-textarea-font-weight: 400 !default;
8
+ $form-textarea-height: 120px !default;
9
+ $form-textarea-line-height: 1.1875 !default;
10
+ $form-textarea-margin: 0 0 15px !default;
11
+ $form-textarea-padding: 15px !default;
12
+ $form-textarea-placeholder-color: $color-charcoal2 !default;
13
+ $form-textarea-placeholder-color-desktop: $form-textarea-placeholder-color !default;
14
+ $form-textarea-resize: none !default;
15
+ $form-textarea-transition-time: .15s !default;
16
+ $form-textarea-zip-width: 200px !default;
17
+
18
+ $form-textarea-focus-bg-color: $form-textarea-bg-color !default;
19
+ $form-textarea-focus-border: 1px solid $color-charcoal2 !default;
20
+
21
+ $form-textarea-error-color: $color-red5 !default;
22
+ $form-textarea-error-border: 1px solid $form-textarea-error-color !default;
23
+ $form-textarea-error-box-shadow: inset 0 1px 1px rgba($color-black, .08) !default;
24
+ $form-textarea-error-focus-border-color: #E34B2B !default;
25
+ $form-textarea-error-focus-box-shadow: inset 0 1px 1px rgba($color-black, .08), 0 0 6px #F5BEB2 !default;
26
+ $form-textarea-icon-error-bg-color: $color-red2 !default;
27
+ $form-textarea-icon-error-color: $color-red5 !default;
28
+ $form-textarea-group-error-border-width: 0 !default;
29
+ $form-textarea-group-input-error-border: $form-textarea-error-border !default;
30
+
31
+ .form-textarea {
32
+ background-color: $form-textarea-bg-color;
33
+ border: $form-textarea-border;
34
+ border-radius: $form-textarea-border-radius;
35
+ box-shadow: $form-textarea-box-shadow;
36
+ color: $form-textarea-color;
37
+ font-size: $form-textarea-font-size;
38
+ font-weight: $form-textarea-font-weight;
39
+ height: $form-textarea-height;
40
+ line-height: $form-textarea-line-height;
41
+ margin: $form-textarea-margin;
42
+ padding: $form-textarea-padding;
43
+ position: relative;
44
+ resize: $form-textarea-resize;
45
+ transition: background-color $form-textarea-transition-time ease-in-out, border-color $form-textarea-transition-time ease-in-out, box-shadow $form-textarea-transition-time ease-in-out;
46
+ width: 100%;
47
+
48
+ &::-webkit-input-placeholder {
49
+ color: $form-textarea-placeholder-color;
50
+ }
51
+
52
+ &::-ms-input-placeholder {
53
+ color: $form-textarea-placeholder-color;
54
+ }
55
+
56
+ &::placeholder {
57
+ color: $form-textarea-placeholder-color;
58
+ }
59
+
60
+ &:focus {
61
+ background-color: $form-textarea-focus-bg-color;
62
+ border: $form-textarea-focus-border;
63
+ box-shadow: none;
64
+ }
65
+
66
+ &.zip {
67
+ width: $form-textarea-zip-width;
68
+ }
69
+ }
70
+
71
+ .has-error .form-textarea {
72
+ border: $form-textarea-error-border;
73
+ box-shadow: $form-textarea-error-box-shadow;
74
+ color: $form-textarea-error-color;
75
+
76
+ &:focus {
77
+ border-color: $form-textarea-error-focus-border-color;
78
+ box-shadow: $form-textarea-error-focus-box-shadow;
79
+ }
80
+ }
81
+
82
+ @include breakpoint-sm {
83
+ .form-textarea {
84
+ &::-webkit-input-placeholder {
85
+ color: $form-textarea-placeholder-color-desktop;
86
+ }
87
+
88
+ &::-ms-input-placeholder {
89
+ color: $form-textarea-placeholder-color-desktop;
90
+ }
91
+
92
+ &::placeholder {
93
+ color: $form-textarea-placeholder-color-desktop;
94
+ }
95
+ }
96
+ }
@@ -0,0 +1,13 @@
1
+ <textarea
2
+ id="{{#if this.field.id}}{{this.field.id}}{{else}}{{this.field.name}}{{/if}}"
3
+ class="form-textarea {{this.field.class}}"
4
+ name="{{this.field.name}}"
5
+ {{#if this.field.placeholder}}placeholder="{{this.field.placeholder}}"{{/if}}
6
+ {{#if this.field.maxLength}}maxlength="{{this.field.maxLength}}"{{/if}}
7
+ {{#if this.field.required}}data-required="{{this.field.required}}"{{/if}}
8
+ {{#if this.field.value}}value="{{this.field.value}}"{{/if}}
9
+ {{#if this.field.min}}data-{{this.field.required}}-min="{{this.field.min}}"{{/if}}
10
+ {{#if this.field.saveField}}data-save{{/if}}
11
+ {{#if this.field.readonly}}readonly{{/if}}
12
+ {{#if this.field.extraAttributes}}{{#each this.field.extraAttributes}}{{{this.attributeName}}}="{{{this.attributeValue}}}"{{/each}}{{/if}}
13
+ ></textarea>
@@ -0,0 +1,68 @@
1
+ .toggle-wrapper {
2
+ align-items: center;
3
+ color: $color-charcoal1;
4
+ display: flex;
5
+ font-size: 12px;
6
+ font-weight: bold;
7
+ float: right;
8
+ justify-content: space-evenly;
9
+ max-width: 160px;
10
+ text-transform: uppercase;
11
+ width: 100%;
12
+
13
+
14
+ input[type="checkbox"] {
15
+ &.theme-toggle {
16
+ opacity: 0;
17
+ position: absolute;
18
+
19
+ & + label {
20
+ background-color: $color-charcoal1;
21
+ border: 1px solid $color-white;
22
+ border-radius: 100px;
23
+ cursor: pointer;
24
+ display: inline-block;
25
+ height: 26px;
26
+ position: relative;
27
+ transition: all .4s ease;
28
+ user-select: none;
29
+ width: 56px;
30
+
31
+ &::before {
32
+ content: "";
33
+ border-radius: 30px;
34
+ display: block;
35
+ height: 100%;
36
+ left: 0;
37
+ position: absolute;
38
+ top: 0;
39
+ transition: .2s cubic-bezier(.24, 0, .5, 1);
40
+ width: 100%;
41
+ }
42
+
43
+ &::after {
44
+ background: $color-orange5;
45
+ border-radius: 100px;
46
+ content: "";
47
+ display: block;
48
+ left: 3px;
49
+ height: 18px;
50
+ position: absolute;
51
+ top: 3px;
52
+ transition: .35s cubic-bezier(.54, 1.60, .5, 1);
53
+ width: 18px;
54
+ }
55
+ }
56
+
57
+ &:checked {
58
+ & + label::before {
59
+ background-color: $color-charcoal7;
60
+ }
61
+ & + label::after {
62
+ background: $color-blue5;
63
+ left: 33px
64
+ }
65
+ }
66
+ }
67
+ }
68
+ }
@@ -0,0 +1,34 @@
1
+ <div class="toggle-wrapper hidden-xs hidden-sm hidden-md">
2
+ <span>Light</span>
3
+ <input type="checkbox" id="theme-toggle" name="theme-toggle" class="theme-toggle" />
4
+ <label for="theme-toggle"></label>
5
+ <span>Dark</span>
6
+ </div>
7
+ <script>
8
+ (function () {
9
+ const themeToggle = document.getElementById('theme-toggle');
10
+ const body = document.body;
11
+ if (themeToggle) {
12
+ const toggleDarkClass = function (event) {
13
+ event ? body.classList.add('dark') : body.classList.remove('dark');
14
+ };
15
+
16
+ themeToggle.addEventListener('click', function(){
17
+ toggleDarkClass(this.checked)
18
+ });
19
+
20
+ if ('matchMedia' in window) {
21
+ const colorScheme = window.matchMedia('(prefers-color-scheme: dark)');
22
+ const isDarkColorScheme = colorScheme.matches;
23
+
24
+ toggleDarkClass(isDarkColorScheme)
25
+ themeToggle.checked = isDarkColorScheme
26
+
27
+ colorScheme.addEventListener('change',function(e){
28
+ toggleDarkClass(e.matches)
29
+ themeToggle.checked = e.matches
30
+ })
31
+ }
32
+ }
33
+ })();
34
+ </script>
@@ -0,0 +1,117 @@
1
+ $tile-height: 100% !default;
2
+ $tile-width: 100% !default;
3
+ $tile-display: inline-flex !default;
4
+ $tile-flex-direction: column !default;
5
+ $tile-justify-content: center !default;
6
+
7
+ $tile-border-transition: border-color .15s ease-in-out !default;
8
+
9
+ $tile-bg-background-position: center 1px !default;
10
+ $tile-bg-border-radius: 5px !default;
11
+ $tile-bg-box-shadow: 0 3px 4px 0 rgba(#000, .2) !default;
12
+ $tile-bg-border-color: transparent !default;
13
+ $tile-bg-border-width: 3px !default;
14
+ $tile-bg-border-border-radius: 8px !default;
15
+ $tile-bg-hover-border-color: $color-blue5 !default;
16
+ $tile-bg-font-size: 18px !default;
17
+ $tile-bg-font-weight: 700 !default;
18
+ $tile-bg-text-color: #FFF !default;
19
+ $tile-bg-text-transform: uppercase !default;
20
+
21
+ $tile-icon-border-color: $color-charcoal1 !default;
22
+ $tile-icon-hover-border-color: $color-charcoal2 !default;
23
+ $tile-icon-border-radius: 4px !default;
24
+ $tile-icon-border-width: 1px !default;
25
+ $tile-icon-box-shadow: 0 2px 4px 0 rgba(#000, .1) !default;
26
+ $tile-icon-font-size: 12px !default;
27
+ $tile-icon-font-weight: 700 !default;
28
+ $tile-icon-text-color: $color-charcoal4 !default;
29
+ $tile-icon-img-width: 100% !default;
30
+ $tile-icon-img-height: 90px !default;
31
+
32
+ .tile {
33
+ display: $tile-display;
34
+ flex-direction: $tile-flex-direction;
35
+ height: $tile-height;
36
+ justify-content: $tile-justify-content;
37
+ width: $tile-width;
38
+
39
+ &--background-image {
40
+ .tile__background-image {
41
+ background-position: $tile-bg-background-position;
42
+ background-size: cover;
43
+ border-radius: $tile-bg-border-radius;
44
+ box-shadow: $tile-bg-box-shadow;
45
+ height: 100%;
46
+ left: 0;
47
+ position: absolute;
48
+ top: 0;
49
+ width: 100%;
50
+
51
+ &::before {
52
+ border: $tile-bg-border-width solid $tile-bg-border-color;
53
+ border-radius: $tile-bg-border-border-radius;
54
+ content: '';
55
+ height: calc(100% + 10px);
56
+ left: -5px;
57
+ position: absolute;
58
+ top: -5px;
59
+ transition: $tile-border-transition;
60
+ width: calc(100% + 10px);
61
+ z-index: -1;
62
+ }
63
+ }
64
+
65
+ .tile__text {
66
+ color: $tile-bg-text-color;
67
+ font-size: $tile-bg-font-size;
68
+ font-weight: $tile-bg-font-weight;
69
+ position: relative;
70
+ text-transform: $tile-bg-text-transform;
71
+ z-index: 2;
72
+ }
73
+
74
+ &:hover {
75
+ .tile__background-image {
76
+ &::before {
77
+ border-color: $tile-bg-hover-border-color;
78
+ }
79
+ }
80
+ }
81
+ }
82
+
83
+ &--icon {
84
+ .tile__icon {
85
+ height: $tile-icon-img-height;
86
+ width: $tile-icon-img-width;
87
+ }
88
+
89
+ .tile__text {
90
+ color: $tile-icon-text-color;
91
+ display: inline-block;
92
+ font-size: $tile-icon-font-size;
93
+ font-weight: $tile-icon-font-weight;
94
+
95
+ &::before {
96
+ border: $tile-icon-border-width solid $tile-icon-border-color;
97
+ border-radius: $tile-icon-border-radius;
98
+ box-shadow: $tile-icon-box-shadow;
99
+ content: '';
100
+ display: block;
101
+ height: 100%;
102
+ left: 0;
103
+ position: absolute;
104
+ top: 0;
105
+ transition: $tile-border-transition;
106
+ width: 100%;
107
+ }
108
+ }
109
+ &:hover {
110
+ .tile__text {
111
+ &::before {
112
+ border-color: $tile-icon-hover-border-color;
113
+ }
114
+ }
115
+ }
116
+ }
117
+ }
@@ -0,0 +1,27 @@
1
+ <div class="tile {{#if this.field.backgroundImageUrl}}tile--background-image{{/if}}{{#xif "this.field.svgSpriteIconUrl || this.field.imageIconUrl || this.field.localSVGPath || this.field.localSvgSpriteIconUrl || this.field.localImageIconUrl"}}tile--icon{{/xif}}">
2
+ {{#if this.field.backgroundImageUrl}}
3
+ <div class="tile__background-image {{#if this.field.backgroundImageClass}}{{this.field.backgroundImageClass}}{{/if}}" {{#xif "this.field.backgroundImageUrl != 'none'"}}style="background-image: url('https://{{x 'process.env.NODE_ENV'}}{{this.field.backgroundImageUrl}}')"{{/xif}}></div>
4
+ {{/if}}
5
+ {{#if this.field.imageIconUrl}}
6
+ <img class="tile__icon" src="https://{{x 'process.env.NODE_ENV'}}{{this.field.imageIconUrl}}" alt="{{this.field.text}}">
7
+ {{/if}}
8
+ {{#if this.field.localImageIconUrl}}
9
+ <img class="tile__icon" src="{{this.field.localImageIconUrl}}" alt="{{this.field.text}}">
10
+ {{/if}}
11
+ {{#if this.field.svgSpriteIconUrl}}
12
+ <svg class="tile__icon" role="img">
13
+ <use href="{{#xif 'isLocal === "true"'}}/temp/assets{{else}}https://{{x 'process.env.NODE_ENV'}}/quote/resources/assets{{/xif}}{{this.field.svgSpriteIconUrl}}"></use>
14
+ </svg>
15
+ {{/if}}
16
+ {{#if this.field.localSvgSpriteIconUrl}}
17
+ <svg class="tile__icon" role="img">
18
+ <use href="{{this.field.localSvgSpriteIconUrl}}"></use>
19
+ </svg>
20
+ {{/if}}
21
+ {{#if this.field.localSVGPath}}
22
+ <div class="tile__icon">
23
+ {{ fileInclude this.field.localSVGPath }}
24
+ </div>
25
+ {{/if}}
26
+ <span class="tile__text">{{{this.field.text}}}</span>
27
+ </div>
@@ -0,0 +1,99 @@
1
+ $value-props-display-mobile: none !default;
2
+ $value-props-display: block !default;
3
+ $value-props-backdrop-filter: blur(4px) !default;
4
+ $value-props-background-color: rgba($color-blue5,.85) !default;
5
+ $value-props-color: $color-white !default;
6
+ $value-props-margin: 0 0 0 25% !default;
7
+ $value-props-margin-mobile: 0 !default;
8
+ $value-props-max-width: 100% !default;
9
+ $value-props-padding: 30px 0 !default;
10
+ $value-props-padding-mobile: $value-props-padding !default;
11
+
12
+ $value-props-wrapper-display: flex !default;
13
+ $value-props-wrapper-flex-direction: row !default;
14
+ $value-props-wrapper-justify-content: space-evenly !default;
15
+
16
+ $value-props-icon-height: 40px !default;
17
+ $value-props-icon-width: $value-props-icon-height !default;
18
+ $value-props-icon-height-mobile: $value-props-icon-height !default;
19
+ $value-props-icon-width-mobile: $value-props-icon-width !default;
20
+
21
+ $value-props-item-border-left: 0 !default;
22
+ $value-props-item-flex: 0 0 25% !default;
23
+ $value-props-item-padding: 0 15px !default;
24
+ $value-props-item-text-align: center !default;
25
+
26
+ $value-props-description-font-size: 16px !default;
27
+ $value-props-description-font-size-tablet: $value-props-description-font-size !default;
28
+ $value-props-description-font-size-mobile: $value-props-description-font-size !default;
29
+ $value-props-description-font-weight: normal !default;
30
+ $value-props-description-line-height: 1.2 !default;
31
+ $value-props-description-line-height-mobile: $value-props-description-line-height !default;
32
+ $value-props-description-margin: 10px auto 0 !default;
33
+ $value-props-description-width: 80% !default;
34
+
35
+ .value-props {
36
+ backdrop-filter: $value-props-backdrop-filter;
37
+ background: $value-props-background-color;
38
+ color: $value-props-color;
39
+ display: $value-props-display-mobile;
40
+ margin: $value-props-margin-mobile;
41
+ max-width: $value-props-max-width;
42
+ padding: $value-props-padding-mobile;
43
+
44
+ &__wrapper {
45
+ display: $value-props-wrapper-display;
46
+ flex-direction: $value-props-wrapper-flex-direction;
47
+ justify-content: $value-props-wrapper-justify-content;
48
+ }
49
+
50
+ &__item {
51
+ flex: $value-props-item-flex;
52
+ padding: $value-props-item-padding;
53
+ text-align: $value-props-item-text-align;
54
+
55
+ ~ .value-props__item {
56
+ border-left: $value-props-item-border-left;
57
+ }
58
+ }
59
+
60
+ &__icon {
61
+ height: $value-props-icon-height-mobile;
62
+ width: $value-props-icon-width-mobile;
63
+ }
64
+
65
+ &__description {
66
+ font-size: $value-props-description-font-size-mobile;
67
+ font-weight: $value-props-description-font-weight;
68
+ line-height: $value-props-description-line-height-mobile;
69
+ margin: $value-props-description-margin;
70
+ width: $value-props-description-width;
71
+ }
72
+ }
73
+
74
+ @include breakpoint-sm {
75
+ .value-props {
76
+ display: $value-props-display;
77
+ padding: $value-props-padding;
78
+
79
+ &__icon {
80
+ height: $value-props-icon-height;
81
+ width: $value-props-icon-width;
82
+ }
83
+
84
+ &__description {
85
+ font-size: $value-props-description-font-size-tablet;
86
+ line-height: $value-props-description-line-height;
87
+ }
88
+ }
89
+ }
90
+
91
+ @include breakpoint-md {
92
+ .value-props {
93
+ margin: $value-props-margin;
94
+
95
+ &__description {
96
+ font-size: $value-props-description-font-size;
97
+ }
98
+ }
99
+ }
@@ -0,0 +1,17 @@
1
+ <div class="value-props{{#if this.props.class}} {{this.props.class}}{{/if}}">
2
+ <ul class="value-props__wrapper">
3
+ {{#each this.props.items}}
4
+ <li class="value-props__item">
5
+ {{#if this.icon}}
6
+ <svg class="value-props__icon" role="img">
7
+ <use href="{{this.icon}}"></use>
8
+ </svg>
9
+ {{/if}}
10
+ {{#if this.imageIcon}}
11
+ <img class="value-props__icon" src="{{this.imageIcon}}">
12
+ {{/if}}
13
+ {{#if this.description}}<p class="value-props__description" data-theme-template="vp">{{{this.description}}}</p>{{/if}}
14
+ </li>
15
+ {{/each}}
16
+ </ul>
17
+ </div>
@@ -0,0 +1,42 @@
1
+ $zip-control-color: $color-blue5 !default;
2
+ $zip-control-hover-color: $zip-control-color !default;
3
+ $zip-control-font-size: 12px !default;
4
+ $zip-control-font-weight: 700 !default;
5
+ $zip-control-line-height: 1.25 !default;
6
+ $zip-control-margin: 0 !default;
7
+ $zip-control-text-align: right !default;
8
+
9
+ $zip-control-edit-color: $zip-control-color !default;
10
+ $zip-control-edit-hover-color: $zip-control-edit-color !default;
11
+ $zip-control-edit-margin-left: 0 !default;
12
+ $zip-control-edit-text-decoration: none !default;
13
+
14
+ .zip-control {
15
+ font-size: $zip-control-font-size;
16
+ font-weight: $zip-control-font-weight;
17
+ line-height: $zip-control-line-height;
18
+ margin: $zip-control-margin;
19
+ text-align: $zip-control-text-align;
20
+
21
+ &__location,
22
+ &__zipcode {
23
+ color: $zip-control-color;
24
+ }
25
+
26
+ &__location {
27
+ &:hover {
28
+ color: $zip-control-hover-color;
29
+ }
30
+ }
31
+
32
+ &__edit,
33
+ &__icon {
34
+ color: $zip-control-edit-color;
35
+ margin-left: $zip-control-edit-margin-left;
36
+ text-decoration: $zip-control-edit-text-decoration;
37
+
38
+ &:hover {
39
+ color: $zip-control-edit-hover-color;
40
+ }
41
+ }
42
+ }
@@ -0,0 +1,21 @@
1
+ {{#if this.field.notEditableOnMobile}}
2
+ <div class="zip-control visible-xs" id="zip-control">
3
+ <span class="zip-control__location user-location">City, State</span>
4
+ {{#if this.field.includeInitialZipCode}}
5
+ <span class="zip-control__zipcode user-zipcode"></span>
6
+ {{/if}}
7
+ </div>
8
+ {{/if}}
9
+ <div class="zip-control{{#if this.field.notEditableOnMobile}} hidden-xs{{/if}}" id="zip-control">
10
+ <a class="zip-control__button" id="zip-control__button" role="button">
11
+ <span class="zip-control__location user-location">City, State</span>
12
+ {{#if this.field.includeInitialZipCode}}
13
+ <span class="zip-control__zipcode user-zipcode"></span>
14
+ {{/if}}
15
+ {{#if this.field.editText}}
16
+ <span class="zip-control__edit">{{this.field.editText}}</span>
17
+ {{else}}
18
+ <i class="zip-control__icon icon-fill-edit"></i>
19
+ {{/if}}
20
+ </a>
21
+ </div>