@appdirect/sfb-theme-plaza 0.0.1

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 (141) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +3 -0
  3. package/assets/css/platform-global/global-index.scss +1 -0
  4. package/assets/css/theme/components/_sticky-button-page-scroll.scss +15 -0
  5. package/assets/css/theme/definitions/_accessibility.scss +42 -0
  6. package/assets/css/theme/definitions/_colors.scss +58 -0
  7. package/assets/css/theme/definitions/_functions.scss +11 -0
  8. package/assets/css/theme/definitions/_mixins.scss +111 -0
  9. package/assets/css/theme/definitions/_typography.scss +48 -0
  10. package/assets/css/theme/definitions/_variables.scss +7 -0
  11. package/assets/css/theme/generic/_default.scss +126 -0
  12. package/assets/css/theme/generic/_normalize.scss +351 -0
  13. package/assets/css/theme/grid/_bootstrap-grid.scss +32 -0
  14. package/assets/css/theme/grid/_functions.scss +49 -0
  15. package/assets/css/theme/grid/_grid.scss +52 -0
  16. package/assets/css/theme/grid/_mock-grid.scss +36 -0
  17. package/assets/css/theme/grid/_variables.scss +42 -0
  18. package/assets/css/theme/layout/_reset.scss +5 -0
  19. package/assets/css/theme/mixins/_breakpoints.scss +123 -0
  20. package/assets/css/theme/mixins/_grid-framework.scss +67 -0
  21. package/assets/css/theme/mixins/_grid.scss +52 -0
  22. package/assets/css/theme/mixins/_scroll-button.scss +17 -0
  23. package/assets/css/theme/pages/_bundle.scss +10 -0
  24. package/assets/css/theme/pages/_listing.scss +3 -0
  25. package/assets/css/theme/pages/_product.scss +3 -0
  26. package/assets/css/theme/pages/_profile.scss +89 -0
  27. package/assets/css/theme/theme-index.scss +9 -0
  28. package/assets/css/theme/utilities/_display.scss +38 -0
  29. package/assets/css/theme/utilities/_flex.scss +51 -0
  30. package/assets/fonts/AppDirectIcons.woff +0 -0
  31. package/assets/fonts/slick/slick.eot +0 -0
  32. package/assets/fonts/slick/slick.svg +14 -0
  33. package/assets/fonts/slick/slick.ttf +0 -0
  34. package/assets/fonts/slick/slick.woff +0 -0
  35. package/assets/images/logo_white_2x.png +0 -0
  36. package/assets/js/listing.js +26 -0
  37. package/assets/js/polyfills/ie11CustomProperties.js +2 -0
  38. package/content/layout/base.html +80 -0
  39. package/content/layout/bundle.html +12 -0
  40. package/content/layout/profile.html +22 -0
  41. package/content/macros/profile/profile-navigation.html +38 -0
  42. package/content/macros/sfb-components-bundles.html +26 -0
  43. package/content/macros/sfb-custom-components-bundles.html +6 -0
  44. package/content/pages/bundle/bundle.html +9 -0
  45. package/content/pages/compare/compare.html +14 -0
  46. package/content/pages/error/error.html +49 -0
  47. package/content/pages/help/help.html +15 -0
  48. package/content/pages/home/home.html +14 -0
  49. package/content/pages/listing/listing-items.html +1 -0
  50. package/content/pages/listing/listing.html +25 -0
  51. package/content/pages/orderConfirmation/orderConfirmation.html +7 -0
  52. package/content/pages/profile/profile-add-lead.html +13 -0
  53. package/content/pages/profile/profile-add-question.html +13 -0
  54. package/content/pages/profile/profile-add-review.html +13 -0
  55. package/content/pages/profile/profile-configure.html +15 -0
  56. package/content/pages/profile/profile-cross-sell-management.html +12 -0
  57. package/content/pages/profile/profile-editions.html +17 -0
  58. package/content/pages/profile/profile-features.html +14 -0
  59. package/content/pages/profile/profile-questions.html +14 -0
  60. package/content/pages/profile/profile-resources.html +14 -0
  61. package/content/pages/profile/profile-reviews.html +14 -0
  62. package/content/pages/profile/profile-standaloneDomains.html +22 -0
  63. package/content/pages/profile/profile-support.html +15 -0
  64. package/content/pages/profile/profile-variants.html +15 -0
  65. package/content/pages/profile/profile.html +24 -0
  66. package/design-properties.json +18 -0
  67. package/editor-properties.json +231 -0
  68. package/env-data.json +2 -0
  69. package/header-footer/checkout.html +14 -0
  70. package/header-footer/css/footer/_INDEX.scss +264 -0
  71. package/header-footer/css/header-components/_INDEX.scss +11 -0
  72. package/header-footer/css/header-components/_MPLogo.scss +47 -0
  73. package/header-footer/css/header-components/_cart.scss +514 -0
  74. package/header-footer/css/header-components/_dropdown.scss +110 -0
  75. package/header-footer/css/header-components/_header.scss +85 -0
  76. package/header-footer/css/header-components/_icons.scss +123 -0
  77. package/header-footer/css/header-components/_mobile-menu.scss +46 -0
  78. package/header-footer/css/header-components/_myapps-dropdown.scss +111 -0
  79. package/header-footer/css/header-components/_notifications.scss +50 -0
  80. package/header-footer/css/header-components/_responsive.scss +78 -0
  81. package/header-footer/css/header-components/_search-bar.scss +17 -0
  82. package/header-footer/css/header-components/_tooltips.scss +60 -0
  83. package/header-footer/css/header-index.scss +4 -0
  84. package/header-footer/css/settings/_INDEX.scss +3 -0
  85. package/header-footer/css/settings/_custom-variables.scss +70 -0
  86. package/header-footer/css/settings/_font-icons.scss +53 -0
  87. package/header-footer/css/settings/_static-variables.scss +24 -0
  88. package/header-footer/footer.html +53 -0
  89. package/header-footer/logged-in.html +37 -0
  90. package/header-footer/logged-out.html +25 -0
  91. package/header-footer/sso.html +14 -0
  92. package/package.json +15 -0
  93. package/settings-schema.json +4 -0
  94. package/settings.json +1873 -0
  95. package/translations/cs-cz.yml +136 -0
  96. package/translations/cs.yml +136 -0
  97. package/translations/da-dk.yml +136 -0
  98. package/translations/da.yml +136 -0
  99. package/translations/de-de.yml +136 -0
  100. package/translations/de.yml +136 -0
  101. package/translations/el-gr.yml +136 -0
  102. package/translations/en-us.yml +177 -0
  103. package/translations/es-es.yml +136 -0
  104. package/translations/es-la.yml +136 -0
  105. package/translations/es.yml +136 -0
  106. package/translations/fi-fi.yml +136 -0
  107. package/translations/fi.yml +136 -0
  108. package/translations/fr-ca.yml +136 -0
  109. package/translations/fr-fr.yml +136 -0
  110. package/translations/fr.yml +136 -0
  111. package/translations/hr-hr.yml +136 -0
  112. package/translations/hr.yml +136 -0
  113. package/translations/hu-hu.yml +136 -0
  114. package/translations/hu.yml +136 -0
  115. package/translations/id-id.yml +136 -0
  116. package/translations/it-it.yml +136 -0
  117. package/translations/it.yml +136 -0
  118. package/translations/ja-jp.yml +136 -0
  119. package/translations/ja.yml +136 -0
  120. package/translations/ko-kr.yml +136 -0
  121. package/translations/ko.yml +136 -0
  122. package/translations/lt-lt.yml +136 -0
  123. package/translations/lt.yml +136 -0
  124. package/translations/nl-nl.yml +136 -0
  125. package/translations/nl.yml +136 -0
  126. package/translations/no-no.yml +136 -0
  127. package/translations/no.yml +136 -0
  128. package/translations/pt-br.yml +136 -0
  129. package/translations/pt.yml +136 -0
  130. package/translations/ru-ru.yml +136 -0
  131. package/translations/ru.yml +136 -0
  132. package/translations/sq-al.yml +136 -0
  133. package/translations/sq.yml +136 -0
  134. package/translations/sv-se.yml +136 -0
  135. package/translations/sv.yml +136 -0
  136. package/translations/th-th.yml +136 -0
  137. package/translations/th.yml +136 -0
  138. package/translations/tr-tr.yml +136 -0
  139. package/translations/tr.yml +136 -0
  140. package/translations/zh-cn.yml +136 -0
  141. package/translations/zh-tw.yml +136 -0
@@ -0,0 +1,67 @@
1
+ // Framework grid generation
2
+ //
3
+ // Used only by Bootstrap to generate the correct number of grid classes given
4
+ // any value of `$grid-columns`.
5
+
6
+ @mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {
7
+ // Common properties for all breakpoints
8
+ %grid-column {
9
+ position: relative;
10
+ width: 100%;
11
+ min-height: 1px; // Prevent columns from collapsing when empty
12
+ padding-right: calc($gutter / 2);
13
+ padding-left: calc($gutter / 2);
14
+ }
15
+
16
+ @each $breakpoint in map-keys($breakpoints) {
17
+ $infix: breakpoint-infix($breakpoint, $breakpoints);
18
+
19
+ // Allow columns to stretch full width below their breakpoints
20
+ @for $i from 1 through $columns {
21
+ .col#{$infix}-#{$i} {
22
+ @extend %grid-column;
23
+ }
24
+ }
25
+ .col#{$infix},
26
+ .col#{$infix}-auto {
27
+ @extend %grid-column;
28
+ }
29
+
30
+ @include media-breakpoint-up($breakpoint, $breakpoints) {
31
+ // Provide basic `.col-{bp}` classes for equal-width flexbox columns
32
+ .col#{$infix} {
33
+ flex-basis: 0;
34
+ flex-grow: 1;
35
+ max-width: 100%;
36
+ }
37
+ .col#{$infix}-auto {
38
+ flex: 0 0 auto;
39
+ width: auto;
40
+ max-width: none; // Reset earlier grid tiers
41
+ }
42
+
43
+ @for $i from 1 through $columns {
44
+ .col#{$infix}-#{$i} {
45
+ @include make-col($i, $columns);
46
+ }
47
+ }
48
+
49
+ .order#{$infix}-first { order: -1; }
50
+
51
+ .order#{$infix}-last { order: $columns + 1; }
52
+
53
+ @for $i from 0 through $columns {
54
+ .order#{$infix}-#{$i} { order: $i; }
55
+ }
56
+
57
+ // `$columns - 1` because offsetting by the width of an entire row isn't possible
58
+ @for $i from 0 through ($columns - 1) {
59
+ @if not ($infix == "" and $i == 0) { // Avoid emitting useless .offset-0
60
+ .offset#{$infix}-#{$i} {
61
+ @include make-col-offset($i, $columns);
62
+ }
63
+ }
64
+ }
65
+ }
66
+ }
67
+ }
@@ -0,0 +1,52 @@
1
+ /// Grid system
2
+ //
3
+ // Generate semantic grid columns with these mixins.
4
+
5
+ @mixin make-container() {
6
+ width: 100%;
7
+ padding-right: calc($grid-gutter-width / 2);
8
+ padding-left: calc($grid-gutter-width / 2);
9
+ margin-right: auto;
10
+ margin-left: auto;
11
+ }
12
+
13
+
14
+ // For each breakpoint, define the maximum width of the container in a media query
15
+ @mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {
16
+ @each $breakpoint, $container-max-width in $max-widths {
17
+ @include media-breakpoint-up($breakpoint, $breakpoints) {
18
+ max-width: $container-max-width;
19
+ }
20
+ }
21
+ }
22
+
23
+ @mixin make-row() {
24
+ display: flex;
25
+ flex-wrap: wrap;
26
+ margin-right: calc($grid-gutter-width / -2);
27
+ margin-left: calc($grid-gutter-width / -2);
28
+ }
29
+
30
+ @mixin make-col-ready() {
31
+ position: relative;
32
+ // Prevent columns from becoming too narrow when at smaller grid tiers by
33
+ // always setting `width: 100%;`. This works because we use `flex` values
34
+ // later on to override this initial width.
35
+ width: 100%;
36
+ min-height: 1px; // Prevent collapsing
37
+ padding-right: calc($grid-gutter-width / 2);
38
+ padding-left: calc($grid-gutter-width / 2);
39
+ }
40
+
41
+ @mixin make-col($size, $columns: $grid-columns) {
42
+ flex: 0 0 percentage(calc($size / $columns));
43
+ // Add a `max-width` to ensure content within each column does not blow out
44
+ // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari
45
+ // do not appear to require this.
46
+ max-width: percentage(calc($size / $columns));
47
+ }
48
+
49
+ @mixin make-col-offset($size, $columns: $grid-columns) {
50
+ $num: calc($size / $columns);
51
+ margin-left: if($num == 0, 0, percentage($num));
52
+ }
@@ -0,0 +1,17 @@
1
+ @import '../grid/variables';
2
+
3
+ @function get-page-container-spacing($container-width, $grid-gutter-width: 28px) {
4
+ @return calc((100vw - (#{$container-width} - #{$grid-gutter-width})) / 2);
5
+ }
6
+
7
+ @mixin scroll-button-offset-position {
8
+ $button-offset: 15px;
9
+
10
+ @each $breakpoint, $container-max-width in $container-max-widths {
11
+ @include media-breakpoint-up($breakpoint, $grid-breakpoints) {
12
+ $page-container-spacing: get-page-container-spacing($container-max-width);
13
+
14
+ margin-right: calc(#{$page-container-spacing} * -1 + #{$button-offset});
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,10 @@
1
+ .product-bundle {
2
+ $spacing-top: 42px;
3
+ $spacing-mobile-top: 30px;
4
+
5
+ margin-top: $spacing-mobile-top;
6
+
7
+ @include media-breakpoint-up(lg) {
8
+ margin-top: $spacing-top;
9
+ }
10
+ }
@@ -0,0 +1,3 @@
1
+ .listing-page {
2
+ margin-top: 20px;
3
+ }
@@ -0,0 +1,3 @@
1
+ .profile-region{
2
+ background-color: var(--pageBackground, #fff);
3
+ }
@@ -0,0 +1,89 @@
1
+ .profile-region {
2
+ .pageOrderableContainer_item {
3
+ position: relative;
4
+ z-index: 1;
5
+ }
6
+
7
+ .pageOrderableContainer_item:nth-child(even):after {
8
+ position: absolute;
9
+ bottom: 0px;
10
+ left: 50%;
11
+ width: 100vw;
12
+ height: 100%;
13
+ margin-left: -50vw;
14
+ z-index: -1;
15
+ background-color: #F6F5F5;
16
+ content: '';
17
+ }
18
+ }
19
+
20
+ .support-page {
21
+ @include media-breakpoint-up(lg) {
22
+ .sideBar {
23
+ &_container {
24
+ margin-left: auto;
25
+ }
26
+ }
27
+ }
28
+
29
+ .additionalInfo {
30
+ &_title {
31
+ margin-left: 0;
32
+ }
33
+ &_grid {
34
+ &--col-1 {
35
+ grid-template-columns: 1fr;
36
+ }
37
+
38
+ &--col-2 {
39
+ grid-template-columns: 1fr 1fr;
40
+ }
41
+
42
+ &--with-sidebar {
43
+ grid-template-columns: calc(100% / 12 * 8) calc(100% / 12 * 4);
44
+ }
45
+
46
+ &--with-sidebar.additionalInfo_grid--sidebar-left {
47
+ grid-template-columns: calc(100% / 12 * 3) calc(100% / 12 * 9);
48
+ }
49
+
50
+ &--with-sidebar.additionalInfo_grid--col-2 {
51
+ grid-template-columns: calc(100% / 12 * 3) calc(100% / 12 * 3) calc(100% / 12 * 6);
52
+ }
53
+ }
54
+ &_info {
55
+ &--col-1 {
56
+ grid-column: 1;
57
+ }
58
+ &--col-1.additionalInfo_info--sidebar-left {
59
+ grid-column: 2;
60
+ }
61
+ &--col-2 {
62
+ &:nth-child(odd) {
63
+ grid-column: 1;
64
+ }
65
+ &:nth-child(even) {
66
+ grid-column: 2;
67
+ }
68
+ }
69
+ &--col-2.additionalInfo_info--sidebar-left {
70
+ &:nth-child(odd) {
71
+ grid-column: 2;
72
+ }
73
+ &:nth-child(even) {
74
+ grid-column: 3;
75
+ }
76
+ }
77
+ }
78
+
79
+ &_sidebar {
80
+ grid-column: calc(var(--info-column, 2) + 1);
81
+ &--left {
82
+ grid-column: 1;
83
+ .sideBar_container {
84
+ margin-left: 0;
85
+ }
86
+ }
87
+ }
88
+ }
89
+ }
@@ -0,0 +1,9 @@
1
+ @import "generic/normalize";
2
+ @import "generic/default";
3
+ @import "grid/bootstrap-grid";
4
+ @import "pages/product";
5
+ @import "pages/profile";
6
+ @import "pages/bundle";
7
+ @import "pages/listing";
8
+ @import "layout/reset";
9
+ @import "components/sticky-button-page-scroll";
@@ -0,0 +1,38 @@
1
+ // stylelint-disable declaration-no-important
2
+
3
+ //
4
+ // Utilities for common `display` values
5
+ //
6
+
7
+ @each $breakpoint in map-keys($grid-breakpoints) {
8
+ @include media-breakpoint-up($breakpoint) {
9
+ $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
10
+
11
+ .d#{$infix}-none { display: none !important; }
12
+ .d#{$infix}-inline { display: inline !important; }
13
+ .d#{$infix}-inline-block { display: inline-block !important; }
14
+ .d#{$infix}-block { display: block !important; }
15
+ .d#{$infix}-table { display: table !important; }
16
+ .d#{$infix}-table-row { display: table-row !important; }
17
+ .d#{$infix}-table-cell { display: table-cell !important; }
18
+ .d#{$infix}-flex { display: flex !important; }
19
+ .d#{$infix}-inline-flex { display: inline-flex !important; }
20
+ }
21
+ }
22
+
23
+
24
+ //
25
+ // Utilities for toggling `display` in print
26
+ //
27
+
28
+ @media print {
29
+ .d-print-none { display: none !important; }
30
+ .d-print-inline { display: inline !important; }
31
+ .d-print-inline-block { display: inline-block !important; }
32
+ .d-print-block { display: block !important; }
33
+ .d-print-table { display: table !important; }
34
+ .d-print-table-row { display: table-row !important; }
35
+ .d-print-table-cell { display: table-cell !important; }
36
+ .d-print-flex { display: flex !important; }
37
+ .d-print-inline-flex { display: inline-flex !important; }
38
+ }
@@ -0,0 +1,51 @@
1
+ // stylelint-disable declaration-no-important
2
+
3
+ // Flex variation
4
+ //
5
+ // Custom styles for additional flex alignment options.
6
+
7
+ @each $breakpoint in map-keys($grid-breakpoints) {
8
+ @include media-breakpoint-up($breakpoint) {
9
+ $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
10
+
11
+ .flex#{$infix}-row { flex-direction: row !important; }
12
+ .flex#{$infix}-column { flex-direction: column !important; }
13
+ .flex#{$infix}-row-reverse { flex-direction: row-reverse !important; }
14
+ .flex#{$infix}-column-reverse { flex-direction: column-reverse !important; }
15
+
16
+ .flex#{$infix}-wrap { flex-wrap: wrap !important; }
17
+ .flex#{$infix}-nowrap { flex-wrap: nowrap !important; }
18
+ .flex#{$infix}-wrap-reverse { flex-wrap: wrap-reverse !important; }
19
+ .flex#{$infix}-fill { flex: 1 1 auto !important; }
20
+ .flex#{$infix}-grow-0 { flex-grow: 0 !important; }
21
+ .flex#{$infix}-grow-1 { flex-grow: 1 !important; }
22
+ .flex#{$infix}-shrink-0 { flex-shrink: 0 !important; }
23
+ .flex#{$infix}-shrink-1 { flex-shrink: 1 !important; }
24
+
25
+ .justify-content#{$infix}-start { justify-content: flex-start !important; }
26
+ .justify-content#{$infix}-end { justify-content: flex-end !important; }
27
+ .justify-content#{$infix}-center { justify-content: center !important; }
28
+ .justify-content#{$infix}-between { justify-content: space-between !important; }
29
+ .justify-content#{$infix}-around { justify-content: space-around !important; }
30
+
31
+ .align-items#{$infix}-start { align-items: flex-start !important; }
32
+ .align-items#{$infix}-end { align-items: flex-end !important; }
33
+ .align-items#{$infix}-center { align-items: center !important; }
34
+ .align-items#{$infix}-baseline { align-items: baseline !important; }
35
+ .align-items#{$infix}-stretch { align-items: stretch !important; }
36
+
37
+ .align-content#{$infix}-start { align-content: flex-start !important; }
38
+ .align-content#{$infix}-end { align-content: flex-end !important; }
39
+ .align-content#{$infix}-center { align-content: center !important; }
40
+ .align-content#{$infix}-between { align-content: space-between !important; }
41
+ .align-content#{$infix}-around { align-content: space-around !important; }
42
+ .align-content#{$infix}-stretch { align-content: stretch !important; }
43
+
44
+ .align-self#{$infix}-auto { align-self: auto !important; }
45
+ .align-self#{$infix}-start { align-self: flex-start !important; }
46
+ .align-self#{$infix}-end { align-self: flex-end !important; }
47
+ .align-self#{$infix}-center { align-self: center !important; }
48
+ .align-self#{$infix}-baseline { align-self: baseline !important; }
49
+ .align-self#{$infix}-stretch { align-self: stretch !important; }
50
+ }
51
+ }
Binary file
Binary file
@@ -0,0 +1,14 @@
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata>Generated by Fontastic.me</metadata>
5
+ <defs>
6
+ <font id="slick" horiz-adv-x="512">
7
+ <font-face font-family="slick" units-per-em="512" ascent="480" descent="-32"/>
8
+ <missing-glyph horiz-adv-x="512" />
9
+
10
+ <glyph unicode="&#8594;" d="M241 113l130 130c4 4 6 8 6 13 0 5-2 9-6 13l-130 130c-3 3-7 5-12 5-5 0-10-2-13-5l-29-30c-4-3-6-7-6-12 0-5 2-10 6-13l87-88-87-88c-4-3-6-8-6-13 0-5 2-9 6-12l29-30c3-3 8-5 13-5 5 0 9 2 12 5z m234 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
11
+ <glyph unicode="&#8592;" d="M296 113l29 30c4 3 6 7 6 12 0 5-2 10-6 13l-87 88 87 88c4 3 6 8 6 13 0 5-2 9-6 12l-29 30c-3 3-8 5-13 5-5 0-9-2-12-5l-130-130c-4-4-6-8-6-13 0-5 2-9 6-13l130-130c3-3 7-5 12-5 5 0 10 2 13 5z m179 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
12
+ <glyph unicode="&#8226;" d="M475 256c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
13
+ <glyph unicode="&#97;" d="M475 439l0-128c0-5-1-9-5-13-4-4-8-5-13-5l-128 0c-8 0-13 3-17 11-3 7-2 14 4 20l40 39c-28 26-62 39-100 39-20 0-39-4-57-11-18-8-33-18-46-32-14-13-24-28-32-46-7-18-11-37-11-57 0-20 4-39 11-57 8-18 18-33 32-46 13-14 28-24 46-32 18-7 37-11 57-11 23 0 44 5 64 15 20 9 38 23 51 42 2 1 4 3 7 3 3 0 5-1 7-3l39-39c2-2 3-3 3-6 0-2-1-4-2-6-21-25-46-45-76-59-29-14-60-20-93-20-30 0-58 5-85 17-27 12-51 27-70 47-20 19-35 43-47 70-12 27-17 55-17 85 0 30 5 58 17 85 12 27 27 51 47 70 19 20 43 35 70 47 27 12 55 17 85 17 28 0 55-5 81-15 26-11 50-26 70-45l37 37c6 6 12 7 20 4 8-4 11-9 11-17z"/>
14
+ </font></defs></svg>
Binary file
Binary file
Binary file
@@ -0,0 +1,26 @@
1
+ /* eslint-disable */
2
+ $.fn.filterListing = function() {
3
+ const $container = $(this);
4
+ const $sidebar = $container.find(".js-sidebar");
5
+ const $productListing = $container.find(".js-product-listing");
6
+
7
+ const enableSidebar = function() {
8
+ $sidebar.removeClass('hidden');
9
+ $productListing.removeClass("col-12");
10
+ $productListing.addClass("col-md-9 col-sm-12");
11
+ }
12
+
13
+ const disableSidebar = function() {
14
+ $sidebar.addClass('hidden');
15
+ $productListing.removeClass("col-md-9 col-sm-12");
16
+ $productListing.addClass("col-12");
17
+ }
18
+
19
+ window.addEventListener('ProductListingControls:show', function() {
20
+ enableSidebar();
21
+ });
22
+
23
+ window.addEventListener('ProductListingControls:hide', function() {
24
+ disableSidebar();
25
+ });
26
+ }
@@ -0,0 +1,2 @@
1
+ /*! ie11CustomProperties.js v3.0.6 | MIT License | https://git.io/fjXMN */
2
+ !function(){"use strict";var e=document.createElement("i");if(e.style.setProperty("--x","y"),"y"===e.style.getPropertyValue("--x")||!e.msMatchesSelector)return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector);var t,r=[],n=document;function o(e,t){try{return e.querySelectorAll(t)}catch(e){return[]}}function i(e,i){for(var c,a={selector:e,callback:i,elements:new WeakMap},u=o(n,a.selector),f=0;c=u[f++];)a.elements.set(c,!0),a.callback.call(c,c);r.push(a),t||(t=new MutationObserver(l)).observe(n,{childList:!0,subtree:!0}),s(a)}function s(e,t){var r,i=0,s=[];try{t&&t.matches(e.selector)&&s.push(t)}catch(e){}for(a&&Array.prototype.push.apply(s,o(t||n,e.selector));r=s[i++];)e.elements.has(r)||(e.elements.set(r,!0),e.callback.call(r,r))}function c(e){for(var t,n=0;t=r[n++];)s(t,e)}function l(e){for(var t,r,n,o,i=0;r=e[i++];)for(n=r.addedNodes,t=0;o=n[t++];)1===o.nodeType&&c(o)}var a=!1;function u(e,t,r){var n=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(r,e,n)}document.addEventListener("DOMContentLoaded",function(){a=!0}),"classList"in Element.prototype||u("classList",HTMLElement.prototype,Element.prototype),"innerHTML"in Element.prototype||u("innerHTML",HTMLElement.prototype,Element.prototype),"sheet"in SVGStyleElement.prototype||Object.defineProperty(SVGStyleElement.prototype,"sheet",{get:function(){for(var e,t=document.styleSheets,r=0;e=t[r++];)if(e.ownerNode===this)return e}});const f=/([\s{;])(--([A-Za-z0-9-_]*)\s*:([^;!}{]+)(!important)?)(?=\s*([;}]|$))/g,p=/([{;]\s*)([A-Za-z0-9-_]+\s*:[^;}{]*var\([^!;}{]+)(!important)?(?=\s*([;}$]|$))/g,d=/-ieVar-([^:]+):/g,m=/-ie-([^};]+)/g,v=/:(hover|active|focus|target|:before|:after|:first-letter|:first-line)/;function y(e){return e.replace(f,function(e,t,r,n,o,i){return t+"-ie-"+(i?"❗":"")+n+":"+h(o)}).replace(p,function(e,t,r,n){return t+"-ieVar-"+(n?"❗":"")+r+"; "+r})}function h(e){return e}i('link[rel="stylesheet"]',function(e){var t,r,n;t=e.href,r=function(t){var r=y(t);if(t!==r){r=function(e,t){return t.replace(/url\(([^)]+)\)/g,function(t,r){return(r=r.trim().replace(/(^['"]|['"]$)/g,"")).match(/^([a-z]+:|\/)/)?t:"url("+(e=e.replace(/\?.*/,""))+"./../"+r+")"})}(e.href,r),e.disabled=!0;var n=document.createElement("style");e.media&&n.setAttribute("media",e.media),e.parentNode.insertBefore(n,e),g(n,r)}},(n=new XMLHttpRequest).open("GET",t),n.overrideMimeType("text/css"),n.onload=function(){n.status>=200&&n.status<400&&r(n.responseText)},n.send()}),i("style",function(e){if(!e.ieCP_polyfilled&&!e.ieCP_elementSheet){var t=e.innerHTML,r=y(t);t!==r&&g(e,r)}}),i("[ie-style]",function(e){var t=y("{"+e.getAttribute("ie-style")).substr(1);e.style.cssText+=";"+t;var r=P(e.style);r.getters&&b(e,r.getters,"%styleAttr"),r.setters&&L(e,r.setters)});function E(e){return e}const S={};function P(e){e["z-index"];const t=e.cssText;var r,n,o=t.match(d);if(o){var i=[];for(r=0;n=o[r++];){let t=n.slice(7,-1);"❗"===t[0]&&(t=t.substr(1)),i.push(t),S[t]||(S[t]=[]),S[t].push(e)}}var s=t.match(m);if(s){var c={};for(r=0;n=s[r++];){let e=n.substr(4).split(":"),t=e[0],r=e[1];"❗"===t[0]&&(t=t.substr(1)),c[t]=r}}return{getters:i,setters:c}}function g(e,t){e.innerHTML=t,e.ieCP_polyfilled=!0;for(var r,n=e.sheet.rules,o=0;r=n[o++];){const e=P(r.style);e.getters&&C(r.selectorText,e.getters),e.setters&&T(r.selectorText,e.setters);const t=r.parentRule&&r.parentRule.media&&r.parentRule.media.mediaText;t&&(e.getters||e.setters)&&matchMedia(t).addListener(function(){H(document.documentElement)})}_()}function C(e,t){M(e),i(x(e),function(r){b(r,t,e),D(r)})}function b(e,t,r){var n,o,i=0;const s=r.split(",");for(e.setAttribute("iecp-needed",!0),e.ieCPSelectors||(e.ieCPSelectors={});n=t[i++];)for(o=0;r=s[o++];){const t=r.trim().split("::");e.ieCPSelectors[n]||(e.ieCPSelectors[n]=[]),e.ieCPSelectors[n].push({selector:t[0],pseudo:t[1]?"::"+t[1]:""})}}function T(e,t){M(e),i(x(e),function(e){L(e,t)})}function L(e,t){for(var r in e.ieCP_setters||(e.ieCP_setters={}),t)e.ieCP_setters["--"+r]=1;H(e)}function _(){for(var e in S){let o=S[e];for(var t,r=0;t=o[r++];)if(!t.owningElement){var n=t["-ieVar-"+e];if(n&&""!==(n=R(getComputedStyle(document.documentElement),n)))try{t[e]=n}catch(e){}}}}const w={hover:{on:"mouseenter",off:"mouseleave"},focus:{on:"focusin",off:"focusout"},active:{on:"CSSActivate",off:"CSSDeactivate"}};function M(e){for(var t in e=e.split(",")[0],w){var r=e.split(":"+t);if(r.length>1){var n=r[1].match(/^[^\s]*/);let e=x(r[0]+n);const o=w[t];i(e,function(e){e.addEventListener(o.on,N),e.addEventListener(o.off,N)})}}}let A=null;function x(e){return e.replace(v,"").replace(":not()","")}document.addEventListener("mousedown",function(e){setTimeout(function(){if(e.target===document.activeElement){var t=document.createEvent("Event");t.initEvent("CSSActivate",!0,!0),(A=e.target).dispatchEvent(t)}})}),document.addEventListener("mouseup",function(){if(A){var e=document.createEvent("Event");e.initEvent("CSSDeactivate",!0,!0),A.dispatchEvent(e),A=null}});var V=0;function O(e){e.ieCP_unique||(e.ieCP_unique=++V,e.classList.add("iecp-u"+e.ieCP_unique));var t=getComputedStyle(e);let r="";for(var n in e.ieCPSelectors){var o=t["-ieVar-❗"+n];let a=o||t["-ieVar-"+n];if(a){var i={},s=R(t,a,i);o&&(s+=" !important");for(var c,l=0;c=e.ieCPSelectors[n][l++];)if("%styleAttr"===c.selector)e.style[n]=s;else{if(!o&&!1!==i.allByRoot)continue;r+=c.selector+".iecp-u"+e.ieCP_unique+c.pseudo+"{"+n+":"+s+"}\n"}}}!function(e,t){if(!e.ieCP_styleEl&&t){const t=document.createElement("style");t.ieCP_elementSheet=1,document.head.appendChild(t),e.ieCP_styleEl=t}e.ieCP_styleEl&&(e.ieCP_styleEl.innerHTML=t)}(e,r)}function H(e){if(e){var t=e.querySelectorAll("[iecp-needed]");e.hasAttribute&&e.hasAttribute("iecp-needed")&&D(e);for(var r,n=0;r=t[n++];)D(r)}}let B=new Set,q=!1,k=!1;function D(e){B.add(e),q||(q=!0,requestAnimationFrame(function(){q=!1,k=!0,B.forEach(O),B.clear(),setTimeout(function(){k=!1})}))}function N(e){H(e.target)}function R(e,t,r){return function(e,t){let r,n,o=0,i=null,s=0,c="",l=0;for(;r=e[l++];){if("("===r&&(++o,null===i&&e[l-4]+e[l-3]+e[l-2]==="var"&&(i=o,c+=e.substring(s,l-4),s=l),e[l-5]+e[l-4]+e[l-3]+e[l-2]==="calc"&&(n=o)),")"===r&&i===o){let r,o=e.substring(s,l-1).trim(),a=o.indexOf(",");-1!==a&&(r=o.slice(a+1),o=o.slice(0,a)),c+=t(o,r,n),s=l,i=null}")"===r&&n===--o&&(n=null)}return c+=e.substring(s)}(t,function(t,n,o){var i=e.getPropertyValue(t);return o&&(i=i.replace(/^calc\(/,"(")),r&&e.lastPropertyServedBy!==document.documentElement&&(r.allByRoot=!1),""===i&&n&&(i=R(e,n,r)),i})}var j=new MutationObserver(function(e){if(!k)for(var t,r=0;t=e[r++];)"iecp-needed"!==t.attributeName&&H(t.target)});setTimeout(function(){j.observe(document,{attributes:!0,subtree:!0})});var F=location.hash;addEventListener("hashchange",function(e){var t=document.getElementById(location.hash.substr(1));if(t){var r=document.getElementById(F.substr(1));H(t),H(r)}else H(document);F=location.hash});var z=Object.getOwnPropertyDescriptor(HTMLElement.prototype,"style"),$=z.get;z.get=function(){const e=$.call(this);return e.owningElement=this,e},Object.defineProperty(HTMLElement.prototype,"style",z);var G=getComputedStyle;window.getComputedStyle=function(e){var t=G.apply(this,arguments);return t.computedFor=e,t};const I=CSSStyleDeclaration.prototype,Z=I.getPropertyValue;I.getPropertyValue=function(e){if(this.lastPropertyServedBy=!1,"-"!==(e=e.trim())[0]||"-"!==e[1])return Z.apply(this,arguments);const t=e.substr(2),r="-ie-"+t,n="-ie-❗"+t;let o=E(this[n]||this[r]);if(this.computedFor){if(void 0===o||W[o]){if(W[o]||!J[e]||J[e].inherits){let t=this.computedFor.parentNode;for(;1===t.nodeType;){if(t.ieCP_setters&&t.ieCP_setters[e]){var i=getComputedStyle(t),s=E(i[n]||i[r]);if(void 0!==s){o=R(this,s),this.lastPropertyServedBy=t;break}}t=t.parentNode}}}else o=R(this,o),this.lastPropertyServedBy=this.computedFor;if("initial"===o)return""}return void 0===o&&J[e]&&(o=J[e].initialValue),void 0===o?"":o};const W={inherit:1,revert:1,unset:1},X=I.setProperty;I.setProperty=function(e,t,r){if("-"!==e[0]||"-"!==e[1])return X.apply(this,arguments);const n=this.owningElement;n&&(n.ieCP_setters||(n.ieCP_setters={}),n.ieCP_setters[e]=1),e="-ie-"+("important"===r?"❗":"")+e.substr(2),this.cssText+="; "+e+":"+h(t)+";",n===document.documentElement&&_(),n&&H(n)},window.CSS||(window.CSS={});const J={};CSS.registerProperty=function(e){J[e.name]=e}}();
@@ -0,0 +1,80 @@
1
+ {% from "/macros/sfb-components-bundles.html" import componentsBundles %}
2
+ {% from "/macros/sfb-custom-components-bundles.html" import customComponentsBundles %}
3
+ <!doctype html>
4
+
5
+ <html lang="{{ config.locale.code }}">
6
+ <head>
7
+ {% if meta.noIndex %}
8
+ <meta name="robots" content="noindex" />
9
+ {% endif %}
10
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
11
+ {% block meta_title %}<title>{{ meta.title }}</title>{% endblock %}
12
+ {% block meta_description %}<meta name="description" content="{{ meta.description }}">{% endblock %}
13
+ {% block meta_keywords %}<meta name="keywords" content="{{ meta.keywords }}">{% endblock %}
14
+ {% block meta_author %}<meta name="author" content="{{ meta.author }}">{% endblock %}
15
+
16
+ {% block meta_opengraph %}
17
+ {% if meta.url %}
18
+ <meta property="og:url" content="{{ meta.url }}" />
19
+ {% else %}
20
+ <meta property="og:url" content="{{ meta.baseUrl }}" />
21
+ {% endif %}
22
+ <meta property="og:type" content="website" />
23
+ <meta property="og:title" content="{{ meta.title }}" />
24
+ <meta property="og:description" content="{{ meta.description }}" />
25
+ <meta property="og:image" content="{{ meta.image }}" />
26
+ {% endblock %}
27
+
28
+ {% block meta_twitter %}
29
+ <meta property="twitter:card" content="{{ meta.card }}" />
30
+ <meta property="twitter:title" content="{{ meta.title }}" />
31
+ <meta property="twitter:image" content="{{ meta.image }}" />
32
+ <meta property="twitter:description" content="{{ meta.description }}" />
33
+ {% endblock %}
34
+
35
+ <link rel="shortcut icon" href="{{ config.channelSettings.customFavicon }}" type="image/x-icon">
36
+ <link rel="preload" as="font" href="{{ r("/assets/fonts/slick/slick.woff") }}" type="font/woff2" crossorigin="anonymous">
37
+ <link rel="stylesheet" type="text/css" href="{{ r("/assets/css/theme/theme-index.css") }}">
38
+
39
+ {{ componentsBundles(config) }}
40
+ </head>
41
+
42
+ <body data-page="{% block dataPage %}{% endblock %}">
43
+ <div class="skip-to-content">
44
+ <a class="skip-link sr-only sr-only-focusable" href="#mainContent">{{i18n.skipToMain}}</a>
45
+ </div>
46
+ <div class="page-wrapper">
47
+ {% block header %}
48
+ <header class="main-header" id="mainHeader">
49
+ <div class="container">
50
+ <component name="Header" id="Header"></component>
51
+ </div>
52
+ </header>
53
+ {% endblock %}
54
+
55
+ <main id="mainContent" class="main-region page_content page_content__condensed {% block mainRegionClass %}{% endblock %}" role="main">
56
+ {% block mainTitle %}{% endblock %}
57
+ {% block headContent %}{% endblock %}
58
+ <div class="profile-content">
59
+ {% block contentFullWidthContainer %}
60
+ {% block contentFullWidth %}{% endblock %}
61
+ {% endblock %}
62
+ <div class="layout-default">
63
+ <div class="container">
64
+ {% block content %}{% endblock %}
65
+ </div>
66
+ </div>
67
+ </div>
68
+ </main>
69
+
70
+ {% block footer %}
71
+ <footer class="main-footer" id="mainFooter">
72
+ <div class="container">
73
+ <component name="Footer" id="Footer"></component>
74
+ </div>
75
+ </footer>
76
+ {% endblock %}
77
+ </div>
78
+ <component name="GlobalAlerts" id="GlobalAlerts" editorVisible="false"></component>
79
+ </body>
80
+ </html>
@@ -0,0 +1,12 @@
1
+ {% extends "/layout/base.html" %}
2
+
3
+ {% block dataPage %}profile{% endblock %}
4
+ {% block mainRegionClass %}profile-region{% endblock %}
5
+
6
+ {% block headContent %}
7
+
8
+ {% endblock %}
9
+
10
+ {% block content %}
11
+ {% block bundleContent %}{% endblock %}
12
+ {% endblock %}
@@ -0,0 +1,22 @@
1
+ {% extends "/layout/base.html" %}
2
+
3
+
4
+ {% block dataPage %}profile{% endblock %}
5
+ {% block mainRegionClass %}profile-region{% endblock %}
6
+
7
+ {% block headContent %}{% endblock %}
8
+
9
+ {% block content %}
10
+ {% block profileContentHeader %}
11
+ <component name="ProductBanner" id="ProductBanner"></component>
12
+ <component name="ProductTabMenu" id="ProductTabMenu"></component>
13
+ {% endblock %}
14
+ <div class="{% block profileSpacer %}global-component-spacer{% endblock %}">
15
+ {% block profileContent %}{% endblock %}
16
+
17
+ {% block belowProfileContent %}
18
+ <component name="ProductSimilarApps" id="ProductSimilarApps"></component>
19
+ {% endblock %}
20
+ </div>
21
+ <component name="StickyButtonPageScroll" id="StickyButtonPageScroll"></component>
22
+ {% endblock %}
@@ -0,0 +1,38 @@
1
+ {% macro profileNavigation(navigationItems) %}
2
+ <nav class="tertiary-nav">
3
+ <ul class="tertiary-nav--items adb-profile_header--navigation_content d-none{{ ' d-lg-block' if navigationItems.length > 6 else ' d-md-block' }}">
4
+ {% for nav in navigationItems %}
5
+ {% if nav.label == "Overview" or nav.label == "Editions & Pricing" %}
6
+ <li class="tertiary-nav--item{{ ' is-selected' if nav.selected }}">
7
+ <a class="tertiary-nav--link" href="{{ nav.href }}">{{ nav.label }}</a>
8
+ </li>
9
+ {% endif %}
10
+ {% endfor %}
11
+ </ul>
12
+ <!-- SWITCHED OFF FOR ENGAGE -->
13
+ <!-- <ul class="tertiary-nav--items layout-column__first{{ ' d-lg-none' if navigationItems.length > 6 else ' d-md-none' }}">
14
+ <li class="tertiary-nav--item tertiary-nav--mobile_menu">
15
+ {% if navigationItems %}
16
+ <menu class="tertiary-nav__menu context_menu is-active">
17
+ <button class="button__small dropdown dropdown__small js-dropdown-profile" type="button">
18
+ {% for nav in navigationItems %}
19
+ {% if nav.selected %}
20
+ <span class="tertiary-nav__menu__label">{{ nav.label }}</span>
21
+ {% endif %}
22
+ {% endfor %}
23
+ </button>
24
+ <div class="context_menu--menu context_menu--profile is-hidden" role="menu">
25
+ <ul class="stack">
26
+ {% for nav in navigationItems %}
27
+ <li class="stack--item container">
28
+ <a class="link__option stack--item_content{{ ' not-selected' if not nav.selected }}" href="{{ nav.href }}"> {{ nav.label }}</a>
29
+ </li>
30
+ {% endfor %}
31
+ </ul>
32
+ </div>
33
+ </menu>
34
+ {% endif %}
35
+ </li>
36
+ </ul> -->
37
+ </nav>
38
+ {% endmacro %}
@@ -0,0 +1,26 @@
1
+ {% macro componentsBundles(config) %}
2
+
3
+ {% if config.pageId == "home" %}
4
+ <script src="{{ config.channelSettings.channelCanonicalBaseUrl }}/sfb-theme-components@0/sfb-components-home.js"></script>
5
+ <link rel="stylesheet" type="text/css" href="{{ config.channelSettings.channelCanonicalBaseUrl }}/sfb-theme-components@0/sfb-components-home.css">
6
+ {% elif config.pageId == "profile" %}
7
+ <script src="{{ config.channelSettings.channelCanonicalBaseUrl }}/sfb-theme-components@0/sfb-components-profile.js"></script>
8
+ <link rel="stylesheet" type="text/css" href="{{ config.channelSettings.channelCanonicalBaseUrl }}/sfb-theme-components@0/sfb-components-profile.css">
9
+ {% elif config.pageId == "listing" %}
10
+ <script src="{{ config.channelSettings.channelCanonicalBaseUrl }}/sfb-theme-components@0/sfb-components-listing.js"></script>
11
+ <link rel="stylesheet" type="text/css" href="{{ config.channelSettings.channelCanonicalBaseUrl }}/sfb-theme-components@0/sfb-components-listing.css">
12
+ {% elif config.pageId == "help" %}
13
+ <script src="{{ config.channelSettings.channelCanonicalBaseUrl }}/sfb-theme-components@0/sfb-components-help.js"></script>
14
+ <link rel="stylesheet" type="text/css" href="{{ config.channelSettings.channelCanonicalBaseUrl }}/sfb-theme-components@0/sfb-components-help.css">
15
+ {% elif config.pageId == "compare" %}
16
+ <script src="{{ config.channelSettings.channelCanonicalBaseUrl }}/sfb-theme-components@0/sfb-components-compare.js"></script>
17
+ <link rel="stylesheet" type="text/css" href="{{ config.channelSettings.channelCanonicalBaseUrl }}/sfb-theme-components@0/sfb-components-compare.css">
18
+ {% elif config.pageId == "bundle" %}
19
+ <script src="{{ config.channelSettings.channelCanonicalBaseUrl }}/sfb-theme-components@0/sfb-components-bundle.js"></script>
20
+ <link rel="stylesheet" type="text/css" href="{{ config.channelSettings.channelCanonicalBaseUrl }}/sfb-theme-components@0/sfb-components-bundle.css">
21
+ {% else %}
22
+ <script src="{{ config.channelSettings.channelCanonicalBaseUrl }}/sfb-theme-components@0/sfb-components.js"></script>
23
+ <link rel="stylesheet" type="text/css" href="{{ config.channelSettings.channelCanonicalBaseUrl }}/sfb-theme-components@0/sfb-components.css">
24
+ {% endif %}
25
+
26
+ {% endmacro %}
@@ -0,0 +1,6 @@
1
+ {% macro customComponentsBundles(config) %}
2
+
3
+ <script src="{{ r('/assets/js/components/sfb-components.js') }}"></script>
4
+ <link rel="stylesheet" type="text/css" href="{{ r('/assets/js/components/sfb-components.css') }}">
5
+
6
+ {% endmacro %}
@@ -0,0 +1,9 @@
1
+ {% extends "/layout/bundle.html" %}
2
+
3
+ {% block bundleContent %}
4
+ <component name="BundleBanner" id="BundleBanner"></component>
5
+ <component name="ProductBundleViewer" id="ProductBundleViewer"></component>
6
+ <div class="product-bundle">
7
+ <component name="ProductBundles" id="ProductBundles"></component>
8
+ </div>
9
+ {% endblock %}
@@ -0,0 +1,14 @@
1
+ {% extends "/layout/base.html" %}
2
+
3
+ {% block data %}
4
+ <data type="navigator" />
5
+ {% endblock %}
6
+
7
+ {% block content %}
8
+ <div class="global-component-spacer">
9
+ <component
10
+ name="ComparableProducts"
11
+ id="ComparableProducts1">
12
+ </component>
13
+ </div>
14
+ {% endblock %}