@gudhub/ssg-web-components-library 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/index.js +3 -0
  2. package/package.json +20 -0
  3. package/src/components/about-us-banner/about-us-banner-data.json +9 -0
  4. package/src/components/about-us-banner/about-us-banner.html +19 -0
  5. package/src/components/about-us-banner/about-us-banner.js +23 -0
  6. package/src/components/about-us-banner/about-us-banner.scss +59 -0
  7. package/src/components/about-us-banner/config.js +5 -0
  8. package/src/components/about-us-image-counter/about-us-image-counter-data.json +35 -0
  9. package/src/components/about-us-image-counter/about-us-image-counter.html +22 -0
  10. package/src/components/about-us-image-counter/about-us-image-counter.js +23 -0
  11. package/src/components/about-us-image-counter/about-us-image-counter.scss +44 -0
  12. package/src/components/about-us-image-counter/config.js +5 -0
  13. package/src/components/about-us-team-members/about-us-team-members-data.json +99 -0
  14. package/src/components/about-us-team-members/about-us-team-members.html +25 -0
  15. package/src/components/about-us-team-members/about-us-team-members.js +22 -0
  16. package/src/components/about-us-team-members/about-us-team-members.scss +71 -0
  17. package/src/components/about-us-team-members/config.js +5 -0
  18. package/src/components/animation-block/animation-block-data.json +40 -0
  19. package/src/components/animation-block/animation-block.html +37 -0
  20. package/src/components/animation-block/animation-block.js +23 -0
  21. package/src/components/animation-block/animation-block.scss +337 -0
  22. package/src/components/animation-block/config.js +5 -0
  23. package/src/components/banner-and-text/banner-and-text-data.json +24 -0
  24. package/src/components/banner-and-text/banner-and-text.html +30 -0
  25. package/src/components/banner-and-text/banner-and-text.js +25 -0
  26. package/src/components/banner-and-text/banner-and-text.scss +85 -0
  27. package/src/components/banner-and-text/config.js +5 -0
  28. package/src/components/blog/article/allArticles.json +96 -0
  29. package/src/components/blog/article/article-component.html +189 -0
  30. package/src/components/blog/article/article-component.js +340 -0
  31. package/src/components/blog/article/article-component.scss +776 -0
  32. package/src/components/blog/article/authors-object.json +125 -0
  33. package/src/components/blog/article/categories-object.json +47 -0
  34. package/src/components/blog/author-page/author-page.html +37 -0
  35. package/src/components/blog/author-page/author-page.js +113 -0
  36. package/src/components/blog/author-page/author-page.json +111 -0
  37. package/src/components/blog/author-page/author-page.scss +107 -0
  38. package/src/components/blog/authors-list/authors-list.html +40 -0
  39. package/src/components/blog/authors-list/authors-list.js +60 -0
  40. package/src/components/blog/authors-list/authors-list.json +132 -0
  41. package/src/components/blog/authors-list/authors-list.scss +171 -0
  42. package/src/components/blog/categories-list/categories-list.html +21 -0
  43. package/src/components/blog/categories-list/categories-list.js +26 -0
  44. package/src/components/blog/categories-list/categories-list.json +53 -0
  45. package/src/components/blog/categories-list/categories-list.scss +125 -0
  46. package/src/components/blog/comments/comments.html +89 -0
  47. package/src/components/blog/comments/comments.js +181 -0
  48. package/src/components/blog/comments/comments.json +130 -0
  49. package/src/components/blog/comments/comments.scss +324 -0
  50. package/src/components/blog/contents/contents.html +14 -0
  51. package/src/components/blog/contents/contents.js +63 -0
  52. package/src/components/blog/contents/contents.scss +157 -0
  53. package/src/components/blog/posts-template/articles.json +139 -0
  54. package/src/components/blog/posts-template/authors-object.json +61 -0
  55. package/src/components/blog/posts-template/categories.json +61 -0
  56. package/src/components/blog/posts-template/posts-template.html +239 -0
  57. package/src/components/blog/posts-template/posts-template.js +532 -0
  58. package/src/components/blog/posts-template/posts-template.scss +566 -0
  59. package/src/components/breadcrumbs/breadcrumbs-component.js +65 -0
  60. package/src/components/breadcrumbs/breadcrumbs.html +21 -0
  61. package/src/components/breadcrumbs/breadcrumbs.scss +118 -0
  62. package/src/components/breadcrumbs/config.js +5 -0
  63. package/src/components/button-component/button-component.html +3 -0
  64. package/src/components/button-component/button-component.js +39 -0
  65. package/src/components/button-component/button-component.readme.md +11 -0
  66. package/src/components/button-component/button-component.scss +34 -0
  67. package/src/components/button-component/config.js +5 -0
  68. package/src/components/category-banner/category-banner.html +7 -0
  69. package/src/components/category-banner/category-banner.js +44 -0
  70. package/src/components/category-banner/category-banner.scss +22 -0
  71. package/src/components/category-banner/config.js +5 -0
  72. package/src/components/contact-us-block/config.js +5 -0
  73. package/src/components/contact-us-block/contact-us-block.html +41 -0
  74. package/src/components/contact-us-block/contact-us-block.js +22 -0
  75. package/src/components/contact-us-block/contact-us-block.scss +59 -0
  76. package/src/components/cookies-popup/config.js +5 -0
  77. package/src/components/cookies-popup/cookies-popup.html +8 -0
  78. package/src/components/cookies-popup/cookies-popup.js +27 -0
  79. package/src/components/cookies-popup/cookies-popup.scss +68 -0
  80. package/src/components/counter-section/config.js +5 -0
  81. package/src/components/counter-section/counter-section-data.json +21 -0
  82. package/src/components/counter-section/counter-section.html +38 -0
  83. package/src/components/counter-section/counter-section.js +23 -0
  84. package/src/components/counter-section/counter-section.readme.md +19 -0
  85. package/src/components/counter-section/counter-section.scss +204 -0
  86. package/src/components/counter-section-with-text/config.js +5 -0
  87. package/src/components/counter-section-with-text/counter-section-with-text-data.json +21 -0
  88. package/src/components/counter-section-with-text/counter-section-with-text.html +46 -0
  89. package/src/components/counter-section-with-text/counter-section-with-text.js +23 -0
  90. package/src/components/counter-section-with-text/counter-section-with-text.readme.md +19 -0
  91. package/src/components/counter-section-with-text/counter-section-with-text.scss +164 -0
  92. package/src/components/crm-services-banner/config.js +5 -0
  93. package/src/components/crm-services-banner/crm-services-banner-data.json +20 -0
  94. package/src/components/crm-services-banner/crm-services-banner.html +28 -0
  95. package/src/components/crm-services-banner/crm-services-banner.js +25 -0
  96. package/src/components/crm-services-banner/crm-services-banner.scss +57 -0
  97. package/src/components/edit-mode/config.js +5 -0
  98. package/src/components/edit-mode/edit-mode.html +4 -0
  99. package/src/components/edit-mode/edit-mode.js +23 -0
  100. package/src/components/edit-mode/edit-mode.scss +69 -0
  101. package/src/components/faq/config.js +5 -0
  102. package/src/components/faq/faq.html +20 -0
  103. package/src/components/faq/faq.js +40 -0
  104. package/src/components/faq/faq.scss +80 -0
  105. package/src/components/footer/config.js +5 -0
  106. package/src/components/footer/footer.html +74 -0
  107. package/src/components/footer/footer.js +21 -0
  108. package/src/components/footer/footer.scss +356 -0
  109. package/src/components/footer/pages-object.json +58 -0
  110. package/src/components/fullscreen-image-and-text/config.js +5 -0
  111. package/src/components/fullscreen-image-and-text/fullscreen-image-and-text.html +42 -0
  112. package/src/components/fullscreen-image-and-text/fullscreen-image-and-text.js +29 -0
  113. package/src/components/fullscreen-image-and-text/fullscreen-image-and-text.scss +192 -0
  114. package/src/components/get-in-touch-block/config.js +5 -0
  115. package/src/components/get-in-touch-block/get-in-touch-block-data.json +4 -0
  116. package/src/components/get-in-touch-block/get-in-touch-block.html +11 -0
  117. package/src/components/get-in-touch-block/get-in-touch-block.js +22 -0
  118. package/src/components/get-in-touch-block/get-in-touch-block.scss +12 -0
  119. package/src/components/get-in-touch-form/config.js +5 -0
  120. package/src/components/get-in-touch-form/get-in-touch-form-data.json +114 -0
  121. package/src/components/get-in-touch-form/get-in-touch-form.html +35 -0
  122. package/src/components/get-in-touch-form/get-in-touch-form.js +115 -0
  123. package/src/components/get-in-touch-form/get-in-touch-form.readme.md +45 -0
  124. package/src/components/get-in-touch-form/get-in-touch-form.scss +334 -0
  125. package/src/components/get-in-touch-form/sendEmail.js +161 -0
  126. package/src/components/grid/config.js +5 -0
  127. package/src/components/grid/grid.html +51 -0
  128. package/src/components/grid/grid.js +115 -0
  129. package/src/components/grid/grid.scss +566 -0
  130. package/src/components/grid-component/config.js +5 -0
  131. package/src/components/grid-component/grid-component-data.json +115 -0
  132. package/src/components/grid-component/grid-component.html +52 -0
  133. package/src/components/grid-component/grid-component.js +40 -0
  134. package/src/components/grid-component/grid-component.readme.md +32 -0
  135. package/src/components/grid-component/grid-component.scss +199 -0
  136. package/src/components/header/config.js +5 -0
  137. package/src/components/header/header.html +60 -0
  138. package/src/components/header/header.js +55 -0
  139. package/src/components/header/header.scss +556 -0
  140. package/src/components/homepage-banner/config.js +5 -0
  141. package/src/components/homepage-banner/homepage-banner.html +1443 -0
  142. package/src/components/homepage-banner/homepage-banner.js +23 -0
  143. package/src/components/homepage-banner/homepage-banner.scss +147 -0
  144. package/src/components/image-component/config.js +5 -0
  145. package/src/components/image-component/image-component.html +25 -0
  146. package/src/components/image-component/image-component.js +107 -0
  147. package/src/components/list-text-and-media/config.js +5 -0
  148. package/src/components/list-text-and-media/list-text-and-media-data.json +70 -0
  149. package/src/components/list-text-and-media/list-text-and-media.html +38 -0
  150. package/src/components/list-text-and-media/list-text-and-media.js +22 -0
  151. package/src/components/list-text-and-media/list-text-and-media.readme.md +30 -0
  152. package/src/components/list-text-and-media/list-text-and-media.scss +156 -0
  153. package/src/components/media-and-accordion/config.js +5 -0
  154. package/src/components/media-and-accordion/media-and-accordion-data.json +84 -0
  155. package/src/components/media-and-accordion/media-and-accordion.html +37 -0
  156. package/src/components/media-and-accordion/media-and-accordion.js +55 -0
  157. package/src/components/media-and-accordion/media-and-accordion.scss +170 -0
  158. package/src/components/media-and-list-of-text/config.js +5 -0
  159. package/src/components/media-and-list-of-text/media-and-list-of-text-data.json +16 -0
  160. package/src/components/media-and-list-of-text/media-and-list-of-text.html +32 -0
  161. package/src/components/media-and-list-of-text/media-and-list-of-text.js +24 -0
  162. package/src/components/media-and-list-of-text/media-and-list-of-text.readme.md +26 -0
  163. package/src/components/media-and-list-of-text/media-and-list-of-text.scss +102 -0
  164. package/src/components/media-and-text/config.js +5 -0
  165. package/src/components/media-and-text/media-and-text-data.json +20 -0
  166. package/src/components/media-and-text/media-and-text.html +26 -0
  167. package/src/components/media-and-text/media-and-text.js +26 -0
  168. package/src/components/media-and-text/media-and-text.scss +51 -0
  169. package/src/components/meta/articles.json +95 -0
  170. package/src/components/meta/author-schema.js +71 -0
  171. package/src/components/meta/authors.json +108 -0
  172. package/src/components/meta/blog-schema.js +93 -0
  173. package/src/components/meta/canonical.js +74 -0
  174. package/src/components/meta/config.js +40 -0
  175. package/src/components/meta/meta-index.js +14 -0
  176. package/src/components/meta/meta-tag.js +168 -0
  177. package/src/components/meta/organization-schema.js +50 -0
  178. package/src/components/meta/service-schema.js +76 -0
  179. package/src/components/meta/title-tag.js +64 -0
  180. package/src/components/overflow-cards/config.js +5 -0
  181. package/src/components/overflow-cards/overflow-cards-data.json +33 -0
  182. package/src/components/overflow-cards/overflow-cards.html +33 -0
  183. package/src/components/overflow-cards/overflow-cards.js +28 -0
  184. package/src/components/overflow-cards/overflow-cards.scss +112 -0
  185. package/src/components/popup/config.js +5 -0
  186. package/src/components/popup/popup.html +10 -0
  187. package/src/components/popup/popup.js +66 -0
  188. package/src/components/popup/popup.readme.md +13 -0
  189. package/src/components/popup/popup.scss +76 -0
  190. package/src/components/prices-cards/config.js +5 -0
  191. package/src/components/prices-cards/prices-cards-data.json +90 -0
  192. package/src/components/prices-cards/prices-cards.html +35 -0
  193. package/src/components/prices-cards/prices-cards.js +23 -0
  194. package/src/components/prices-cards/prices-cards.readme.md +48 -0
  195. package/src/components/prices-cards/prices-cards.scss +206 -0
  196. package/src/components/recent-posts/author-object.json +53 -0
  197. package/src/components/recent-posts/config.js +5 -0
  198. package/src/components/recent-posts/recent-posts.html +85 -0
  199. package/src/components/recent-posts/recent-posts.js +89 -0
  200. package/src/components/recent-posts/recent-posts.json +258 -0
  201. package/src/components/recent-posts/recent-posts.scss +274 -0
  202. package/src/components/reviews-slider/config.js +5 -0
  203. package/src/components/reviews-slider/reviews-slider-data.json +30 -0
  204. package/src/components/reviews-slider/reviews-slider.html +48 -0
  205. package/src/components/reviews-slider/reviews-slider.js +86 -0
  206. package/src/components/reviews-slider/reviews-slider.scss +92 -0
  207. package/src/components/service-counter/config.js +5 -0
  208. package/src/components/service-counter/service-counter-data.json +24 -0
  209. package/src/components/service-counter/service-counter.html +19 -0
  210. package/src/components/service-counter/service-counter.js +23 -0
  211. package/src/components/service-counter/service-counter.scss +171 -0
  212. package/src/components/service-image-counter/config.js +5 -0
  213. package/src/components/service-image-counter/service-image-counter-data.json +52 -0
  214. package/src/components/service-image-counter/service-image-counter.html +30 -0
  215. package/src/components/service-image-counter/service-image-counter.js +23 -0
  216. package/src/components/service-image-counter/service-image-counter.scss +114 -0
  217. package/src/components/tabs/config.js +5 -0
  218. package/src/components/tabs/tabs-component.js +45 -0
  219. package/src/components/tabs/tabs.html +28 -0
  220. package/src/components/tabs/tabs.scss +399 -0
  221. package/src/components/text-only/config.js +5 -0
  222. package/src/components/text-only/text-only-data.json +4 -0
  223. package/src/components/text-only/text-only.html +8 -0
  224. package/src/components/text-only/text-only.js +20 -0
  225. package/src/components/text-only/text-only.scss +21 -0
  226. package/src/components/top-banner/config.js +5 -0
  227. package/src/components/top-banner/top-banner.html +22 -0
  228. package/src/components/top-banner/top-banner.js +50 -0
  229. package/src/components/top-banner/top-banner.scss +132 -0
  230. package/src/config.js +38 -0
@@ -0,0 +1,69 @@
1
+ body.edit-mode-enabled {
2
+ [gh-id] {
3
+ &:hover {
4
+ outline: 1px solid #2b61fa;
5
+ }
6
+ }
7
+ }
8
+
9
+ edit-mode {
10
+ margin-top: 15px;
11
+ margin-bottom: 15px;
12
+ display: flex;
13
+ align-items: center;
14
+ justify-content: space-between;
15
+ width: 100%;
16
+
17
+ .edit-mode-button {
18
+ display: flex;
19
+ align-items: center;
20
+ justify-content: center;
21
+ }
22
+
23
+ .edit-mode-switch {
24
+ height: 0;
25
+ width: 0;
26
+ visibility: hidden;
27
+ }
28
+
29
+ .edit-mode-label {
30
+ cursor: pointer;
31
+ text-indent: -9999px;
32
+ width: 60px;
33
+ height: 30px;
34
+ background: #dbdbdb;
35
+ display: block;
36
+ border-radius: 100px;
37
+ position: relative;
38
+ }
39
+
40
+ .edit-mode-label:after {
41
+ content: "";
42
+ position: absolute;
43
+ top: 2px;
44
+ left: 2px;
45
+ width: 26px;
46
+ height: 26px;
47
+ background: #fff;
48
+ border-radius: 90px;
49
+ transition: 0.3s;
50
+ }
51
+
52
+ .edit-mode-switch:checked + .edit-mode-label {
53
+ background: #2b61fa;
54
+ }
55
+
56
+ .edit-mode-switch:checked + .edit-mode-label:after {
57
+ left: calc(100% - 2px);
58
+ transform: translateX(-100%);
59
+ }
60
+
61
+ .edit-mode-label:active:after {
62
+ width: 36px;
63
+ }
64
+
65
+ p {
66
+ font-size: 24px;
67
+ color: #fff;
68
+ }
69
+ }
@@ -0,0 +1,5 @@
1
+ export const faqComponent = {
2
+ tag: 'faq-component',
3
+ src: '@gudhub/ssg-web-component-library/src/components/faq/faq.js',
4
+ serverOnly: false
5
+ }
@@ -0,0 +1,20 @@
1
+ <section itemscope="" itemtype="https://schema.org/FAQPage" class="faq">
2
+ <div class="container">
3
+ <h2 gh-id="${ghId}.title">FAQ</h2>
4
+ <div class="block_faq">
5
+ ${
6
+ items.reduce((acc, item, index) => {
7
+ return acc + `
8
+ <div onclick="openItem()" class="faq_item ${index === 0 ? 'active' : '' }" itemscope="" itemprop="mainEntity" itemtype="https://schema.org/Question">
9
+ <h3 itemprop="name" gh-id="${ghId}.items.${index}.question"> QUESTION </h3>
10
+ <div class="answer_wrapper" itemscope="" itemprop="acceptedAnswer" itemtype="https://schema.org/Answer">
11
+ <div class="answer" itemprop="text" gh-id="${ghId}.items.${index}.answer">
12
+ ANSWER
13
+ </div>
14
+ </div>
15
+ </div>
16
+ `}, '')
17
+ }
18
+ </div>
19
+ </div>
20
+ </section>
@@ -0,0 +1,40 @@
1
+ import html from './faq.html';
2
+ import './faq.scss';
3
+
4
+ class Faq extends GHComponent {
5
+ /**
6
+ * data-background - set background color in hex or rgb/a
7
+ */
8
+ constructor() {
9
+ super();
10
+ }
11
+
12
+ async onServerRender() {
13
+ this.ghId = this.getAttribute('data-gh-id') || null;
14
+
15
+ const json = await super.getGhData(this.ghId);
16
+
17
+ this.items = json.items;
18
+
19
+ const background = this.hasAttribute('data-background') ? this.getAttribute('data-background') : '#fff';
20
+
21
+ this.style.setProperty('--background', background);
22
+
23
+ super.render(html);
24
+ }
25
+
26
+ openItem(item) {
27
+ let items = this.querySelectorAll('.faq_item');
28
+ if (item.classList.contains('active')) {
29
+ item.classList.remove('active')
30
+ } else {
31
+ items.forEach(element => {
32
+ element.classList.remove('active')
33
+ });
34
+ item.classList.add('active')
35
+ }
36
+ }
37
+
38
+ }
39
+
40
+ window.customElements.define('faq-component', Faq);
@@ -0,0 +1,80 @@
1
+ .faq {
2
+ background: var(--background);
3
+ h2 {
4
+ text-align: center;
5
+ }
6
+ .block_faq {
7
+ width: 100%;
8
+ max-width: 1000px;
9
+ margin: 0 auto;
10
+ }
11
+ .faq_item {
12
+ background: var(--background);
13
+ border-bottom: 1px solid #141616;
14
+ cursor: pointer;
15
+
16
+ h3 {
17
+ color: #141616;
18
+ padding: 30px 50px;
19
+ margin-bottom: 0;
20
+ position: relative;
21
+ &::before {
22
+ content: '';
23
+ position: absolute;
24
+ top: calc(50% - 1px);
25
+ left: 0;
26
+ width: 20px;
27
+ height: 2px;
28
+ background-color: #141616;
29
+ transition: all .2s ease;
30
+ }
31
+ &::after {
32
+ content: '';
33
+ position: absolute;
34
+ top: calc(50% - 10px);
35
+ left: 9px;
36
+ width: 2px;
37
+ height: 20px;
38
+ background-color: #141616;
39
+ transition: all .2s ease;
40
+ }
41
+ }
42
+ .answer_wrapper {
43
+ height: 100%;
44
+ max-height: 0;
45
+ overflow: hidden;
46
+ transition: all .5s ease;
47
+ padding-bottom: 0;
48
+ font-weight: 400;
49
+ font-size: 16px;
50
+ line-height: 25px;
51
+ color: #4D555B;
52
+ ul {
53
+ list-style: disc;
54
+ padding-left: 20px;
55
+ }
56
+ }
57
+ &.active {
58
+ .answer_wrapper {
59
+ max-height: 1000px;
60
+ padding-bottom: 30px;
61
+ }
62
+ h3 {
63
+ &::after, &::before {
64
+ transform: rotate(45deg);
65
+ }
66
+ }
67
+ }
68
+ }
69
+ }
70
+
71
+ @media screen and (max-width: 600px) {
72
+ .faq .faq_item {
73
+ &.active .answer_wrapper {
74
+ padding-bottom: 20px;
75
+ }
76
+ h3 {
77
+ padding: 20px 30px;
78
+ }
79
+ }
80
+ }
@@ -0,0 +1,5 @@
1
+ export const footerComponent = {
2
+ tag: 'footer-component',
3
+ src: '@gudhub/ssg-web-component-library/src/components/footer/footer.js',
4
+ serverOnly: true
5
+ }
@@ -0,0 +1,74 @@
1
+ <footer>
2
+ <div class="container">
3
+ <div class="footer_top">
4
+ <div class="footer_left">
5
+ <div class="logo">
6
+ <a href="/">
7
+ <img src="/assets/images/logo.svg" width="160" height="43" alt="Logo" title="GudHub Logo">
8
+ </a>
9
+ </div>
10
+ <div class="like_a_list">
11
+ <a target="blank" href="https://twitter.com/Gudhubplatform">
12
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M24 4.557c-.883.392-1.832.656-2.828.775 1.017-.609 1.798-1.574 2.165-2.724-.951.564-2.005.974-3.127 1.195-.897-.957-2.178-1.555-3.594-1.555-3.179 0-5.515 2.966-4.797 6.045-4.091-.205-7.719-2.165-10.148-5.144-1.29 2.213-.669 5.108 1.523 6.574-.806-.026-1.566-.247-2.229-.616-.054 2.281 1.581 4.415 3.949 4.89-.693.188-1.452.232-2.224.084.626 1.956 2.444 3.379 4.6 3.419-2.07 1.623-4.678 2.348-7.29 2.04 2.179 1.397 4.768 2.212 7.548 2.212 9.142 0 14.307-7.721 13.995-14.646.962-.695 1.797-1.562 2.457-2.549z"></path></svg>
13
+ </a>
14
+ <a target="blank" href="https://www.instagram.com/gudhub.platform/">
15
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"></path></svg>
16
+ </a>
17
+ <a target="blank" href="https://www.facebook.com/gudhub.platform/">
18
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M9 8h-3v4h3v12h5v-12h3.642l.358-4h-4v-1.667c0-.955.192-1.333 1.115-1.333h2.885v-5h-3.808c-3.596 0-5.192 1.583-5.192 4.615v3.385z"></path></svg>
19
+ </a>
20
+ <a target="blank" href="https://www.linkedin.com/company/gudhubplatform/">
21
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M4.98 3.5c0 1.381-1.11 2.5-2.48 2.5s-2.48-1.119-2.48-2.5c0-1.38 1.11-2.5 2.48-2.5s2.48 1.12 2.48 2.5zm.02 4.5h-5v16h5v-16zm7.982 0h-4.968v16h4.969v-8.399c0-4.67 6.029-5.052 6.029 0v8.399h4.988v-10.131c0-7.88-8.922-7.593-11.018-3.714v-2.155z"></path></svg>
22
+ </a>
23
+ </div>
24
+ </div>
25
+ <div class="footer_right">
26
+ <a href="tel:380632715470" class="item">
27
+ <div class="icon_wrapper">
28
+ <svg xmlns="http://www.w3.org/2000/svg" width="33" height="32" viewBox="0 0 33 32" fill="none"><path d="M29.0349 32H28.8228C4.30739 30.6092 0.826574 10.2031 0.340008 3.97539C0.300803 3.49118 0.358833 3.00409 0.510774 2.54204C0.662715 2.08 0.90558 1.65207 1.22545 1.28277C1.54533 0.913477 1.93592 0.610077 2.37486 0.389956C2.8138 0.169835 3.29245 0.0373191 3.78339 1.15396e-06H10.6577C11.1574 -0.000476094 11.6458 0.14709 12.0595 0.423585C12.4733 0.70008 12.7933 1.09276 12.9782 1.55077L14.8746 6.15385C15.0572 6.60129 15.1025 7.09179 15.0049 7.56442C14.9073 8.03705 14.6711 8.47098 14.3256 8.81231L11.6682 11.4585C12.0833 13.7855 13.213 15.9307 14.9044 17.6036C16.5958 19.2766 18.7673 20.3967 21.1251 20.8123L23.8324 18.1662C24.1836 17.8291 24.6276 17.6015 25.109 17.5118C25.5905 17.4221 26.088 17.4741 26.5397 17.6615L31.2431 19.52C31.7004 19.7082 32.0905 20.0264 32.3638 20.4341C32.6371 20.8417 32.7812 21.3205 32.7777 21.8092V28.3077C32.7777 29.287 32.3834 30.2261 31.6815 30.9186C30.9795 31.611 30.0275 32 29.0349 32ZM4.08282 2.46154C3.75193 2.46154 3.4346 2.59121 3.20063 2.82202C2.96666 3.05284 2.83521 3.36589 2.83521 3.69231V3.79077C3.40911 11.0769 7.08954 28.3077 28.96 29.5385C29.1239 29.5485 29.2882 29.5264 29.4435 29.4736C29.5987 29.4209 29.7419 29.3384 29.8648 29.2309C29.9876 29.1234 30.0878 28.993 30.1595 28.8473C30.2311 28.7015 30.273 28.5433 30.2825 28.3815V21.8092L25.579 19.9508L21.9984 23.4585L21.3996 23.3846C10.5454 22.0431 9.07323 11.3354 9.07323 11.2246L8.99837 10.6338L12.5416 7.10154L10.6702 2.46154H4.08282Z" fill="white"/></svg>
29
+ </div>
30
+ <div class="text">
31
+ <div class="title">Телефон</div>
32
+ <div class="tel">063 271 54 70</div>
33
+ </div>
34
+ </a>
35
+ <a href="https://maps.app.goo.gl/wnwvtjsjGqRLK58u5" target="_blank" class="item">
36
+ <div class="icon_wrapper">
37
+ <svg xmlns="http://www.w3.org/2000/svg" width="38" height="36" viewBox="0 0 38 36" fill="none"><path d="M18.834 6.71875C17.6847 6.71875 16.5613 7.05481 15.6058 7.68443C14.6503 8.31405 13.9055 9.20895 13.4657 10.256C13.026 11.303 12.9109 12.4551 13.1351 13.5666C13.3593 14.6781 13.9127 15.6991 14.7253 16.5005C15.5379 17.3018 16.5732 17.8476 17.7004 18.0687C18.8275 18.2897 19.9958 18.1763 21.0575 17.7426C22.1193 17.3089 23.0267 16.5745 23.6652 15.6322C24.3037 14.6899 24.6445 13.582 24.6445 12.4488C24.6445 10.9291 24.0323 9.47161 22.9426 8.39703C21.8529 7.32245 20.375 6.71875 18.834 6.71875ZM18.834 16.1788C18.0859 16.1788 17.3546 15.96 16.7326 15.5501C16.1105 15.1403 15.6257 14.5577 15.3395 13.8762C15.0532 13.1946 14.9783 12.4446 15.1242 11.7211C15.2702 10.9975 15.6304 10.3329 16.1594 9.81124C16.6884 9.28959 17.3623 8.93434 18.096 8.79042C18.8298 8.6465 19.5903 8.72036 20.2814 9.00268C20.9726 9.28499 21.5633 9.76308 21.9789 10.3765C22.3945 10.9899 22.6164 11.711 22.6164 12.4488C22.6137 13.4363 22.214 14.3824 21.5049 15.0798C20.7959 15.7771 19.8354 16.1688 18.834 16.1688V16.1788Z" fill="white"/><path d="M18.8361 2C15.6776 2.0026 12.6484 3.23769 10.4102 5.4355C8.17201 7.63331 6.9067 10.6152 6.89062 13.73C6.89062 18.4 9.54744 22.31 11.4944 25.16L11.8493 25.68C13.7865 28.4486 15.8645 31.1187 18.0756 33.68L18.8463 34.57L19.617 33.68C21.8278 31.1185 23.9058 28.4484 25.8432 25.68L26.1982 25.15C28.135 22.3 30.7918 18.4 30.7918 13.73C30.7757 10.6135 29.509 7.63007 27.2686 5.43197C25.0283 3.23388 21.9965 1.99996 18.8361 2ZM24.5047 24L24.1396 24.53C22.3955 27.11 20.0834 30 18.8361 31.43C17.6396 30 15.2768 27.11 13.5327 24.53L13.1777 24C11.3829 21.36 8.91873 17.75 8.91873 13.69C8.91873 12.4057 9.17525 11.1339 9.67365 9.94736C10.172 8.76079 10.9026 7.68265 11.8235 6.7745C12.7444 5.86634 13.8377 5.14595 15.0409 4.65446C16.2442 4.16297 17.5338 3.91 18.8361 3.91C20.1385 3.91 21.4281 4.16297 22.6314 4.65446C23.8346 5.14595 24.9279 5.86634 25.8488 6.7745C26.7697 7.68265 27.5003 8.76079 27.9986 9.94736C28.497 11.1339 28.7536 12.4057 28.7536 13.69C28.7536 17.79 26.2996 21.4 24.5047 24Z" fill="white"/></svg>
38
+ </div>
39
+ <div class="text">
40
+ <div class="title">Адреса</div>
41
+ <div class="address">
42
+ <div class="flag">
43
+ <svg xmlns="http://www.w3.org/2000/svg" width="18" height="12" viewBox="0 0 18 12" fill="none"><g clip-path="url(#clip0_223_3589)"><path d="M0 0H18V11.9998H0V0Z" fill="#FFDA44"></path><path d="M0 0H18V5.99988H0V0Z" fill="#338AF3"></path></g><defs><clipPath id="clip0_223_3589"><rect width="18" height="12" fill="white"></rect></clipPath></defs></svg>
44
+ </div>
45
+ <div class="text_address">Вінниця, Україна<br>пл. Калічанська, 2</div>
46
+ </div>
47
+ </div>
48
+ </a>
49
+ <a href="mailto:sales@gudhub.com" class="item">
50
+ <div class="icon_wrapper">
51
+ <svg xmlns="http://www.w3.org/2000/svg" width="62" height="61" viewBox="0 0 62 61" fill="none">
52
+ <path d="M45.4215 18H17.0281C16.4902 18 15.9744 18.2107 15.594 18.5858C15.2137 18.9609 15 19.4696 15 20V40C15 40.5304 15.2137 41.0391 15.594 41.4142C15.9744 41.7893 16.4902 42 17.0281 42H45.4215C45.9594 42 46.4753 41.7893 46.8556 41.4142C47.236 41.0391 47.4496 40.5304 47.4496 40V20C47.4496 19.4696 47.236 18.9609 46.8556 18.5858C46.4753 18.2107 45.9594 18 45.4215 18ZM43.8599 40H18.7114L25.8098 32.76L24.3496 31.37L17.0281 38.84V21.52L29.6328 33.89C30.0127 34.2625 30.5268 34.4716 31.0626 34.4716C31.5984 34.4716 32.1124 34.2625 32.4924 33.89L45.4215 21.21V38.71L37.9581 31.35L36.5283 32.76L43.8599 40ZM18.3565 20H43.7788L31.0626 32.47L18.3565 20Z" fill="white"/>
53
+ </svg>
54
+ </div>
55
+ <div class="text">
56
+ <div class="title">E-mail</div>
57
+ <div class="email">sales@gudhub.com</div>
58
+ </div>
59
+ </a>
60
+ </div>
61
+ </div>
62
+ <div class="footer_bottom">
63
+ <div class="bottom_flex">
64
+ <div class="left">
65
+ <div class="copyright">© ${new Date().getFullYear()} GudHub</div>
66
+ <edit-mode></edit-mode>
67
+ </div>
68
+ <div class="right">
69
+ <a href="https://atlasiko.com/services/web-development-services/" target="_blank">Web Development by Atlasiko Inc.</a>
70
+ </div>
71
+ </div>
72
+ </div>
73
+ </div>
74
+ </footer>
@@ -0,0 +1,21 @@
1
+ import html from './footer.html';
2
+ import './footer.scss';
3
+
4
+ class FooterComponent extends GHComponent {
5
+
6
+ constructor() {
7
+ super();
8
+ }
9
+
10
+ async onServerRender() {
11
+
12
+
13
+ super.render(html);
14
+
15
+ }
16
+
17
+ }
18
+
19
+ if(!customElements.get('footer-component')) {
20
+ customElements.define('footer-component', FooterComponent);
21
+ }
@@ -0,0 +1,356 @@
1
+ footer {
2
+ background-color: #141616;
3
+ .footer_top {
4
+ padding: 30px 0;
5
+ display: flex;
6
+ align-items: center;
7
+ justify-content: space-between;
8
+ border-bottom: 1px solid #4D555B;
9
+ .soc_list {
10
+ display: flex;
11
+ align-items: center;
12
+ list-style: none;
13
+ svg path {
14
+ transition: all .2s ease;
15
+ }
16
+ li {
17
+ margin-right: 40px;
18
+ a {
19
+ &:hover {
20
+ svg path {
21
+ fill: #00BFD6;
22
+ }
23
+ }
24
+ }
25
+ &:last-child {
26
+ margin-right: 0;
27
+ }
28
+ }
29
+ }
30
+ .logo {
31
+ width: 100%;
32
+ max-width: 160px;
33
+ }
34
+ .like_a_list {
35
+ display: flex;
36
+ gap: 40px;
37
+ margin-top: 40px;
38
+ a {
39
+ width: 25px;
40
+ height: 25px;
41
+ }
42
+ svg path {
43
+ fill: #fff;
44
+ }
45
+ }
46
+ .footer_right {
47
+ display: flex;
48
+ align-items: center;
49
+ gap: 30px;
50
+ a {
51
+ display: flex;
52
+ align-items: center;
53
+ gap: 10px;
54
+ color: #fff;
55
+ .icon_wrapper {
56
+ background-color: #2c2c2e;
57
+ border-radius: 50%;
58
+ width: 60px;
59
+ height: 60px;
60
+ display: flex;
61
+ align-items: center;
62
+ justify-content: center;
63
+ transition: all .2s ease;
64
+ }
65
+ .email, .address, .tel {
66
+ transition: all .2s ease;
67
+ }
68
+ &:hover {
69
+ .email, .address, .tel {
70
+ color: #0A79FE;
71
+ }
72
+ .icon_wrapper {
73
+ background-color: #0A79FE;
74
+ }
75
+ }
76
+ .title {
77
+ margin-bottom: 5px;
78
+ }
79
+ .address {
80
+ display: flex;
81
+ gap: 5px;
82
+ }
83
+ }
84
+ }
85
+ }
86
+ .footer_middle {
87
+ padding-top: 45px;
88
+ padding-bottom: 30px;
89
+ .like_a_title {
90
+ font-size: 24px;
91
+ line-height: 40px;
92
+ color: #fff;
93
+ margin-bottom: 30px;
94
+ }
95
+ .column {
96
+ margin-right: 5px;
97
+ width: 100%;
98
+ &:first-child {
99
+ max-width: 608px;
100
+ }
101
+ ul {
102
+ display: flex;
103
+ flex-wrap: wrap;
104
+ justify-content: space-between;
105
+ }
106
+ li {
107
+ width: 48%;
108
+ }
109
+ &:nth-child(2) {
110
+ max-width: 400px;
111
+ }
112
+ &:last-child {
113
+ margin-right: 0;
114
+ }
115
+ ul {
116
+ list-style: none;
117
+ }
118
+ li {
119
+ a {
120
+ color: #DBE2E7;
121
+ font-size: 16px;
122
+ line-height: 22px;
123
+ transition: all .2s ease;
124
+ &:hover {
125
+ color: #00BFD6;
126
+ }
127
+ }
128
+ margin-bottom: 20px;
129
+ &:last-child {
130
+ margin-bottom: 0;
131
+ }
132
+ }
133
+ }
134
+ .footer_contact {
135
+ max-width: 340px;
136
+ &_item {
137
+ margin-bottom: 15px;
138
+ a {
139
+ font-size: 16px;
140
+ line-height: 22px;
141
+ color: #fff;
142
+ transition: all .2s ease;
143
+ &:hover {
144
+ color: #00BFD6;
145
+ }
146
+ span {
147
+ color: #00BFD6;
148
+ }
149
+ }
150
+ }
151
+ }
152
+ .footer_columns {
153
+ display: flex;
154
+ justify-content: space-between;
155
+ }
156
+ }
157
+ .footer_bottom {
158
+ border-top: 1px solid #4D555B;
159
+ padding: 24px 0;
160
+ .bottom_flex {
161
+ display: flex;
162
+ align-items: center;
163
+ justify-content: space-between;
164
+ .left {
165
+ display: flex;
166
+ align-items: center;
167
+ .copyright {
168
+ margin-right: 10px;
169
+ color: #878787;
170
+ font-size: 16px;
171
+ white-space: nowrap;
172
+ }
173
+ }
174
+ .right {
175
+ a {
176
+ color: #DBE2E7;
177
+ font-size: 16px;
178
+ line-height: 22px;
179
+ transition: all 0.2s ease;
180
+ &:hover {
181
+ color: #00BFD6;
182
+ }
183
+ }
184
+ }
185
+ }
186
+ }
187
+ }
188
+
189
+ @media screen and (max-width: 1200px) {
190
+ footer {
191
+ .footer_middle {
192
+ padding-top: 30px;
193
+ .footer_columns {
194
+ flex-wrap: wrap;
195
+ justify-content: initial;
196
+ }
197
+ .column {
198
+ width: 47%;
199
+ max-width: 100% !important;
200
+ margin-bottom: 20px;
201
+ margin-right: 15px;
202
+ &:nth-child(2n) {
203
+ margin-right: 0;
204
+ }
205
+ li {
206
+ margin-bottom: 15px;
207
+ a {
208
+ display: block;
209
+ }
210
+ }
211
+ }
212
+ .like_a_title {
213
+ margin-bottom: 15px;
214
+ }
215
+ }
216
+ }
217
+ }
218
+ @media screen and (max-width: 1050px) {
219
+ footer .footer_top {
220
+ flex-direction: column;
221
+ align-items: flex-start;
222
+ gap: 30px;
223
+ .like_a_list {
224
+ margin-top: 30px;
225
+ }
226
+ .footer_right {
227
+ justify-content: space-between;
228
+ width: 100%;
229
+ }
230
+ }
231
+ }
232
+ @media screen and (max-width: 850px) {
233
+ footer .footer_middle {
234
+ .footer_columns {
235
+ flex-direction: column;
236
+ }
237
+ .column {
238
+ width: 100%;
239
+ }
240
+ }
241
+ }
242
+
243
+ @media screen and (max-width: 775px) {
244
+ footer .footer_top .footer_right {
245
+ flex-wrap: wrap;
246
+ justify-content: center;
247
+ gap: 30px 40px;
248
+ a {
249
+ &:first-child {
250
+ order: 1;
251
+ }
252
+ &:nth-child(3) {
253
+ order: 2;
254
+ }
255
+ &:nth-child(2) {
256
+ order: 3;
257
+ width: 100%;
258
+ justify-content: center;
259
+ }
260
+ }
261
+ }
262
+ }
263
+ @media screen and (max-width: 600px) {
264
+ footer .footer_top .soc_list {
265
+ justify-content: flex-end;
266
+ }
267
+ footer .footer_bottom .bottom_flex {
268
+ flex-direction: column;
269
+ .left {
270
+ width: 100%;
271
+ }
272
+ .right {
273
+ width: 100%;
274
+ }
275
+ }
276
+ }
277
+ @media screen and (max-width: 550px) {
278
+ footer {
279
+ .footer_middle {
280
+ .column {
281
+ width: 100%;
282
+ margin-right: 0;
283
+ li a {
284
+ display: block;
285
+ }
286
+ &:first-child {
287
+ ul {
288
+ flex-direction: column;
289
+ li {
290
+ width: 100%;
291
+ }
292
+ }
293
+ }
294
+ &:nth-child(2), &:nth-child(2) {
295
+ width: 100%;
296
+ max-width: 100%;
297
+ }
298
+ &.footer_contact {
299
+ margin-bottom: 0;
300
+ }
301
+ }
302
+ .footer_contact_item:last-child {
303
+ margin-bottom: 0;
304
+ }
305
+ }
306
+ }
307
+ }
308
+ @media screen and (max-width: 480px) {
309
+ footer .footer_top .footer_right a {
310
+ width: 100%;
311
+ &:nth-child(2) {
312
+ justify-content: flex-start;
313
+ }
314
+ }
315
+ }
316
+ @media screen and (max-width: 450px) {
317
+ footer {
318
+ .footer_top {
319
+ .footer_menu ul {
320
+ flex-direction: column;
321
+ li {
322
+ margin-bottom: 10px;
323
+ a {
324
+ padding-right: 0;
325
+ &::after {
326
+ content: none;
327
+ }
328
+ }
329
+ }
330
+ }
331
+ .footer_right {
332
+ align-items: flex-start;
333
+ }
334
+ }
335
+ }
336
+ footer .footer_middle .column:nth-child(2) {
337
+ ul {
338
+ flex-direction: column;
339
+ li {
340
+ width: 100%;
341
+ }
342
+ }
343
+ }
344
+ }
345
+ @media screen and (max-width: 400px) {
346
+ footer .footer_top .soc_list {
347
+ justify-content: flex-start;
348
+ }
349
+ footer .footer_left {
350
+ margin-bottom: 20px;
351
+ }
352
+
353
+ footer .footer_top {
354
+ flex-direction: column;
355
+ }
356
+ }