@gudhub/ssg-web-components-library 1.0.114 → 1.0.115
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.
- package/package.json +1 -1
- package/src/components/faq-component/config.js +6 -0
- package/src/components/faq-component/faq-component-data.json +42 -0
- package/src/components/faq-component/faq-component.html +53 -0
- package/src/components/faq-component/faq-component.js +83 -0
- package/src/components/faq-component/faq-component.md +48 -0
- package/src/components/faq-component/faq-component.scss +123 -0
- package/src/components/info-table/config.js +6 -0
- package/src/components/info-table/info-table.html +21 -0
- package/src/components/info-table/info-table.js +23 -0
- package/src/components/info-table/info-table.json +22 -0
- package/src/components/info-table/info-table.readme.md +40 -0
- package/src/components/info-table/info-table.scss +75 -0
- package/src/config.js +2 -0
package/package.json
CHANGED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "faq-component",
|
|
3
|
+
"subtitle": "subtitle",
|
|
4
|
+
"items": [
|
|
5
|
+
[
|
|
6
|
+
{
|
|
7
|
+
"title": "Expandable-vertical",
|
|
8
|
+
"text": "Be certain that our website development agency will provide only first-rate web-based software and website programming. With constantly advancing progress and great competition in the web development field Quality Assurance (QA) became one of the important traits that clients seek in web development firms, and Atlasiko Inc. enables this feature. We also offer you our testing services to ensure that all developed solutions have functionalities adequate to your initial request. Be certain that our website development agency will provide only first-rate web-based software and website programming. With constantly advancing progress and great competition in the web development field Quality Assurance (QA) became one of the important traits that clients seek in web development firms, and Atlasiko Inc. enables this feature. We also offer you our testing services to ensure that all developed solutions have functionalities adequate to your initial request.",
|
|
9
|
+
"list": {
|
|
10
|
+
"tag": "ul",
|
|
11
|
+
"items": ["List item 1", "List item 2", "List item 3"]
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"title": "Expandable-vertical",
|
|
16
|
+
"text": "Be certain that our website development agency will provide only first-rate web-based software and website programming. With constantly advancing progress and great competition in the web development field Quality Assurance (QA) became one of the important traits that clients seek in web development firms, and Atlasiko Inc. enables this feature. We also offer you our testing services to ensure that all developed solutions have functionalities adequate to your initial request. Be certain that our website development agency will provide only first-rate web-based software and website programming. With constantly advancing progress and great competition in the web development field Quality Assurance (QA) became one of the important traits that clients seek in web development firms, and Atlasiko Inc. enables this feature. We also offer you our testing services to ensure that all developed solutions have functionalities adequate to your initial request."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"title": "Expandable-vertical",
|
|
20
|
+
"text": "Be certain that our website development agency will provide only first-rate web-based software and website programming. With constantly advancing progress and great competition in the web development field Quality Assurance (QA) became one of the important traits that clients seek in web development firms, and Atlasiko Inc. enables this feature. We also offer you our testing services to ensure that all developed solutions have functionalities adequate to your initial request. Be certain that our website development agency will provide only first-rate web-based software and website programming. With constantly advancing progress and great competition in the web development field Quality Assurance (QA) became one of the important traits that clients seek in web development firms, and Atlasiko Inc. enables this feature. We also offer you our testing services to ensure that all developed solutions have functionalities adequate to your initial request."
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
[
|
|
24
|
+
{
|
|
25
|
+
"title": "Expandable-vertical",
|
|
26
|
+
"text": "Be certain that our website development agency will provide only first-rate web-based software and website programming. With constantly advancing progress and great competition in the web development field Quality Assurance (QA) became one of the important traits that clients seek in web development firms, and Atlasiko Inc. enables this feature. We also offer you our testing services to ensure that all developed solutions have functionalities adequate to your initial request. Be certain that our website development agency will provide only first-rate web-based software and website programming. With constantly advancing progress and great competition in the web development field Quality Assurance (QA) became one of the important traits that clients seek in web development firms, and Atlasiko Inc. enables this feature. We also offer you our testing services to ensure that all developed solutions have functionalities adequate to your initial request.",
|
|
27
|
+
"list": {
|
|
28
|
+
"tag": "ol",
|
|
29
|
+
"items": ["List item 1", "List item 2", "List item 3"]
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"title": "Expandable-vertical",
|
|
34
|
+
"text": "Be certain that our website development agency will provide only first-rate web-based software and website programming. With constantly advancing progress and great competition in the web development field Quality Assurance (QA) became one of the important traits that clients seek in web development firms, and Atlasiko Inc. enables this feature. We also offer you our testing services to ensure that all developed solutions have functionalities adequate to your initial request. Be certain that our website development agency will provide only first-rate web-based software and website programming. With constantly advancing progress and great competition in the web development field Quality Assurance (QA) became one of the important traits that clients seek in web development firms, and Atlasiko Inc. enables this feature. We also offer you our testing services to ensure that all developed solutions have functionalities adequate to your initial request."
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"title": "Expandable-vertical",
|
|
38
|
+
"text": "Be certain that our website development agency will provide only first-rate web-based software and website programming. With constantly advancing progress and great competition in the web development field Quality Assurance (QA) became one of the important traits that clients seek in web development firms, and Atlasiko Inc. enables this feature. We also offer you our testing services to ensure that all developed solutions have functionalities adequate to your initial request. Be certain that our website development agency will provide only first-rate web-based software and website programming. With constantly advancing progress and great competition in the web development field Quality Assurance (QA) became one of the important traits that clients seek in web development firms, and Atlasiko Inc. enables this feature. We also offer you our testing services to ensure that all developed solutions have functionalities adequate to your initial request."
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
]
|
|
42
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<section itemscope="" itemtype="https://schema.org/FAQPage">
|
|
2
|
+
<div class="container">
|
|
3
|
+
<div class="top-wrapper">
|
|
4
|
+
${json.title ? `
|
|
5
|
+
<h2 gh-id="${ghId}.title"> TITLE </h2>
|
|
6
|
+
` : ''}
|
|
7
|
+
${json.subtitle ? `
|
|
8
|
+
<p class="subtitle" gh-id="${ghId}.subtitle"> SUBTITLE </p>
|
|
9
|
+
` : ''}
|
|
10
|
+
</div>
|
|
11
|
+
<div class="flex-wrapper">
|
|
12
|
+
${json.items.reduce((acc, itemsColumn, indexColumn) => acc + `
|
|
13
|
+
<div class="accordion-column">
|
|
14
|
+
${itemsColumn.reduce((acc, item, index) => acc + `
|
|
15
|
+
<div class="primary-block" itemscope="" itemprop="mainEntity" itemtype="https://schema.org/Question">
|
|
16
|
+
<div class="visible-content">
|
|
17
|
+
${item.title ? `<h3 class="title" gh-id="${ghId}.items.${indexColumn}.${index}.title" itemprop="name"></h3>` : ''}
|
|
18
|
+
<div class="icon">
|
|
19
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 17 17" fill="none"><path d="M1 8.33333L8.5 14.8148L16 8.33333M8.5 15L8.5 0" stroke="none" stroke-width="2"></path></svg>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
<div class="expandable-wrapper" itemscope="" itemprop="acceptedAnswer" itemtype="https://schema.org/Answer">
|
|
23
|
+
<div class="content" itemprop="text">
|
|
24
|
+
${item.text ? `<p class="text" gh-id="${ghId}.items.${indexColumn}.${index}.text"></p>` : ''}
|
|
25
|
+
${item.list ? `
|
|
26
|
+
<div class="list">
|
|
27
|
+
${(() => {
|
|
28
|
+
let tag = 'ul';
|
|
29
|
+
if (item.list.tag === 'ul' || item.list.tag === 'ol') {
|
|
30
|
+
tag = item.list.tag;
|
|
31
|
+
}
|
|
32
|
+
return `
|
|
33
|
+
<${tag}>
|
|
34
|
+
${item.list.items.reduce((acc, listItem, itemIndex) => acc + `
|
|
35
|
+
<li gh-id="${ghId}.items.${indexColumn}.${index}.list.items.${itemIndex}"></li>
|
|
36
|
+
`, '')}
|
|
37
|
+
</${tag}>
|
|
38
|
+
`
|
|
39
|
+
})()}
|
|
40
|
+
</div>
|
|
41
|
+
` : ''}
|
|
42
|
+
${item.button ? `
|
|
43
|
+
<button-component class="btn" data-link="${item.button.link}" data-popup-id="${item.button.popupId}" data-placement="${item.button.placement}">${item.button.text}</button-component>
|
|
44
|
+
` : ''}
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
`, '')}
|
|
49
|
+
</div>
|
|
50
|
+
`, '')}
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
</section>
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import html from './faq-component.html';
|
|
2
|
+
import './faq-component.scss';
|
|
3
|
+
import jsonTemplate from './faq-component-data.json';
|
|
4
|
+
|
|
5
|
+
class FaqComponent extends GHComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
super.setDefaultData(jsonTemplate);
|
|
9
|
+
this.openedElement = null;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
async onServerRender() {
|
|
13
|
+
this.ghId = this.getAttribute('data-gh-id') || null;
|
|
14
|
+
|
|
15
|
+
const getCurrentChapter = await window?.getCurrentChapter();
|
|
16
|
+
this.chapter = getCurrentChapter ? getCurrentChapter : 'pages';
|
|
17
|
+
|
|
18
|
+
this.json = await super.getGhData(this.ghId, this.chapter);
|
|
19
|
+
|
|
20
|
+
if (this.ghId) {
|
|
21
|
+
await super.render(html);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
onClientReady() {
|
|
26
|
+
this.attachEventListeners();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
getBindedCallback(element) {
|
|
30
|
+
const expandableFunction = (event) => {
|
|
31
|
+
event.preventDefault();
|
|
32
|
+
|
|
33
|
+
const checkIsTargetInteractive = (target) => {
|
|
34
|
+
const preventedTagsForInteractive = ['button', 'a'];
|
|
35
|
+
const checkInteractiveTagNames = (target) => preventedTagsForInteractive.includes(target.tagName.toLowerCase());
|
|
36
|
+
const checkClassNames = (target) => target.classList.contains('btn');
|
|
37
|
+
|
|
38
|
+
const checkers = [checkInteractiveTagNames, checkClassNames];
|
|
39
|
+
const result = checkers.some((checker) => checker(target));
|
|
40
|
+
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (checkIsTargetInteractive(event.target)) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const isOpening = element.classList.toggle('expand');
|
|
49
|
+
|
|
50
|
+
const toggleOverflow = (element, bool) => {
|
|
51
|
+
const action = bool ? 'add' : 'remove';
|
|
52
|
+
element.classList[action]('overflow');
|
|
53
|
+
};
|
|
54
|
+
if (isOpening) {
|
|
55
|
+
if (this.openedElement && this.openedElement !== element) {
|
|
56
|
+
this.openedElement.classList.remove('expand');
|
|
57
|
+
toggleOverflow(this.openedElement, false);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
this.openedElement = element;
|
|
61
|
+
|
|
62
|
+
setTimeout(() => toggleOverflow(element, true), 0);
|
|
63
|
+
} else {
|
|
64
|
+
toggleOverflow(element, false);
|
|
65
|
+
if (this.openedElement === element) {
|
|
66
|
+
this.openedElement = null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return expandableFunction;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
attachEventListeners() {
|
|
75
|
+
const items = this.querySelectorAll('.primary-block');
|
|
76
|
+
for (const item of items) {
|
|
77
|
+
const boundCallback = this.getBindedCallback(item);
|
|
78
|
+
item.addEventListener('click', boundCallback);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
window.customElements.define('faq-component', FaqComponent);
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Attributes:
|
|
2
|
+
|
|
3
|
+
None
|
|
4
|
+
|
|
5
|
+
# Component data-object:
|
|
6
|
+
|
|
7
|
+
("?" means "unnecessary")
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
{
|
|
11
|
+
"title?": "string",
|
|
12
|
+
"subtitle?": "string",
|
|
13
|
+
"items": [
|
|
14
|
+
[
|
|
15
|
+
{
|
|
16
|
+
"title": "string",
|
|
17
|
+
"text": "string",
|
|
18
|
+
"button?": {
|
|
19
|
+
"link": "/link/",
|
|
20
|
+
"popupId": "form",
|
|
21
|
+
"placement": "faq-component",
|
|
22
|
+
"text": "Button Text"
|
|
23
|
+
},
|
|
24
|
+
"list?": {
|
|
25
|
+
"tag?": "string", // "ol" or "ul"
|
|
26
|
+
"items": ["string", "string", "string"]
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
[
|
|
31
|
+
{
|
|
32
|
+
"title": "string",
|
|
33
|
+
"text": "string",
|
|
34
|
+
"button?": {
|
|
35
|
+
"link": "/link/",
|
|
36
|
+
"popupId": "form",
|
|
37
|
+
"placement": "faq-component",
|
|
38
|
+
"text": "Button Text"
|
|
39
|
+
},
|
|
40
|
+
"list?": {
|
|
41
|
+
"tag?": "string", // "ol" or "ul"
|
|
42
|
+
"items": ["string", "string", "string"]
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
```
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
faq-component {
|
|
2
|
+
--hover-transition-duration: .2s;
|
|
3
|
+
--expand-transition-duration: .5s;
|
|
4
|
+
--gap: 20px;
|
|
5
|
+
background: var(--bg-color);
|
|
6
|
+
.subtitle {
|
|
7
|
+
max-width: 940px;
|
|
8
|
+
margin-left: auto;
|
|
9
|
+
margin-right: auto;
|
|
10
|
+
text-align: center;
|
|
11
|
+
}
|
|
12
|
+
.flex-wrapper {
|
|
13
|
+
display: flex;
|
|
14
|
+
gap: var(--gap);
|
|
15
|
+
}
|
|
16
|
+
.accordion-column {
|
|
17
|
+
width: calc(50% - (var(--gap) / 2));
|
|
18
|
+
& > *:not(:last-child) {
|
|
19
|
+
margin-bottom: 20px;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
.primary-block {
|
|
23
|
+
width: 100%;
|
|
24
|
+
background: var(--block-primary-bg-color);
|
|
25
|
+
border-radius: var(--block-primary-border-radius);
|
|
26
|
+
box-shadow: var(--block-primary-box-shadow);
|
|
27
|
+
cursor: pointer;
|
|
28
|
+
transition: all var(--hover-transition-duration) ease;
|
|
29
|
+
&:hover, &.expand {
|
|
30
|
+
background-color: var(--block-primary-bg-hover-color);
|
|
31
|
+
}
|
|
32
|
+
.visible-content {
|
|
33
|
+
display: flex;
|
|
34
|
+
justify-content: space-between;
|
|
35
|
+
align-items: center;
|
|
36
|
+
padding: 16px;
|
|
37
|
+
.title {
|
|
38
|
+
margin-bottom: 0;
|
|
39
|
+
transition: color var(--hover-transition-duration) ease;
|
|
40
|
+
}
|
|
41
|
+
.icon {
|
|
42
|
+
width: 24px;
|
|
43
|
+
height: 24px;
|
|
44
|
+
display: flex;
|
|
45
|
+
justify-content: center;
|
|
46
|
+
align-items: center;
|
|
47
|
+
svg {
|
|
48
|
+
width: 16px;
|
|
49
|
+
height: auto;
|
|
50
|
+
transition: transform var(--hover-transition-duration) linear;
|
|
51
|
+
path {
|
|
52
|
+
stroke: var(--h-color);
|
|
53
|
+
transition: stroke var(--hover-transition-duration) ease;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
.expandable-wrapper {
|
|
59
|
+
max-height: 0;
|
|
60
|
+
display: flex;
|
|
61
|
+
flex-direction: column;
|
|
62
|
+
gap: 12px;
|
|
63
|
+
overflow: hidden;
|
|
64
|
+
transition: max-height var(--expand-transition-duration) ease;
|
|
65
|
+
.content {
|
|
66
|
+
padding: 20px 15px;
|
|
67
|
+
.text, li {
|
|
68
|
+
font-size: var(--text-font-size);
|
|
69
|
+
font-weight: var(--text-font-weight);
|
|
70
|
+
color: var(--block-primary-text-color);
|
|
71
|
+
line-height: 140%;
|
|
72
|
+
letter-spacing: 0.01em;
|
|
73
|
+
text-align: inherit;
|
|
74
|
+
}
|
|
75
|
+
ul {
|
|
76
|
+
padding-top: 10px;
|
|
77
|
+
padding-left: 18px;
|
|
78
|
+
list-style: disc;
|
|
79
|
+
}
|
|
80
|
+
ol {
|
|
81
|
+
padding-top: 10px;
|
|
82
|
+
padding-left: 18px;
|
|
83
|
+
list-style: decimal;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
&.expand {
|
|
88
|
+
.expandable-wrapper {
|
|
89
|
+
max-height: 200px;
|
|
90
|
+
}
|
|
91
|
+
.icon {
|
|
92
|
+
svg {
|
|
93
|
+
transform: rotate(180deg);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
&.overflow {
|
|
98
|
+
.expandable-wrapper {
|
|
99
|
+
overflow: auto;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
&:hover, &.expand {
|
|
103
|
+
.title {
|
|
104
|
+
color: var(--block-primary-accent-color);
|
|
105
|
+
}
|
|
106
|
+
.icon {
|
|
107
|
+
svg {
|
|
108
|
+
path {
|
|
109
|
+
stroke: var(--block-primary-accent-color);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
@media screen and (max-width: 800px) {
|
|
116
|
+
.flex-wrapper {
|
|
117
|
+
flex-direction: column;
|
|
118
|
+
}
|
|
119
|
+
.accordion-column {
|
|
120
|
+
width: 100%;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<section class="info-table">
|
|
2
|
+
<div class="container">
|
|
3
|
+
<div class="top-wrapper">
|
|
4
|
+
${json.title ? `<h2 class="title" gh-id="${ghId}.title"></h2>` : ''}
|
|
5
|
+
${json.subtitle ? `<p class="subtitle" gh-id="${ghId}.subtitle"></p>` : ''}
|
|
6
|
+
</div>
|
|
7
|
+
|
|
8
|
+
<div class="blocks-wrapper">
|
|
9
|
+
<div class="block" gh-array="${ghId}.items" itemscope="" itemtype="https://schema.org/Table">
|
|
10
|
+
${json.items.reduce((acc, item, index) => {
|
|
11
|
+
return acc + `
|
|
12
|
+
<div class="item" gh-item itemprop="about" itemscope="" itemtype="https://schema.org/Thing">
|
|
13
|
+
<p class="item-title" gh-id="${ghId}.items.${index}.title" itemprop="name"></p>
|
|
14
|
+
<p class="item-price" gh-id="${ghId}.items.${index}.price" itemprop="description"></p>
|
|
15
|
+
</div>
|
|
16
|
+
`
|
|
17
|
+
}, '')}
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
</section>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import html from './info-table.html';
|
|
2
|
+
import './info-table.scss';
|
|
3
|
+
import jsonTemplate from './info-table.json';
|
|
4
|
+
|
|
5
|
+
class InfoTable extends window.GHComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
super.setDefaultData(jsonTemplate);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
async onServerRender() {
|
|
12
|
+
this.ghId = this.getAttribute('data-gh-id') || null;
|
|
13
|
+
this.json = await super.getGhData(this.ghId, 'areas');
|
|
14
|
+
|
|
15
|
+
console.log("AAAAAAAAAAAAAAAAAAAAAAAA", this.json);
|
|
16
|
+
|
|
17
|
+
if (this.json) {
|
|
18
|
+
super.render(html);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
window.customElements.define('info-table', InfoTable);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Lorem Ipsum Pricing",
|
|
3
|
+
"subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
|
|
4
|
+
"items": [
|
|
5
|
+
{
|
|
6
|
+
"title": "Basic Plan",
|
|
7
|
+
"price": "$19 / month"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"title": "Standard Plan",
|
|
11
|
+
"price": "$49 / month"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"title": "Premium Plan",
|
|
15
|
+
"price": "$99 / month"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"title": "Enterprise Plan",
|
|
19
|
+
"price": "Custom pricing"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Component data-object:
|
|
2
|
+
|
|
3
|
+
("?": means "unnecessary")
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
{
|
|
7
|
+
"title?": "Lorem Ipsum Pricing",
|
|
8
|
+
"subtitle?": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
|
|
9
|
+
"items": [
|
|
10
|
+
{
|
|
11
|
+
"title": "Basic Plan",
|
|
12
|
+
"price": "$19 / month"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"title": "Standard Plan",
|
|
16
|
+
"price": "$49 / month"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"title": "Premium Plan",
|
|
20
|
+
"price": "$99 / month"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"title": "Enterprise Plan",
|
|
24
|
+
"price": "Custom pricing"
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Fields description
|
|
31
|
+
|
|
32
|
+
`title` - component title. If field does not exist, title will not be rendered.
|
|
33
|
+
|
|
34
|
+
`subtitle` - component subtitle. If field does not exist, subtitle will not be rendered.
|
|
35
|
+
|
|
36
|
+
`items` - array of table items.
|
|
37
|
+
|
|
38
|
+
`items.title` - item title.
|
|
39
|
+
|
|
40
|
+
`items.price` - item price/value.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
info-table {
|
|
2
|
+
section {
|
|
3
|
+
padding: 0 375px 80px 375px;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.top-wrapper {
|
|
7
|
+
display: flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
|
|
10
|
+
h2 {
|
|
11
|
+
width: 50%;
|
|
12
|
+
font-size: 18px;
|
|
13
|
+
font-weight: 700;
|
|
14
|
+
color: black;
|
|
15
|
+
line-height: 120%;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
p {
|
|
19
|
+
width: 50%;
|
|
20
|
+
font-size: 18px;
|
|
21
|
+
font-weight: 700 !important;
|
|
22
|
+
color: black !important;
|
|
23
|
+
line-height: 120%;
|
|
24
|
+
text-align: center;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.title {
|
|
28
|
+
margin-bottom: 30px;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
.block {
|
|
32
|
+
margin-bottom: 25px;
|
|
33
|
+
border: 1px solid #C8C8C8;
|
|
34
|
+
}
|
|
35
|
+
.item {
|
|
36
|
+
display: flex;
|
|
37
|
+
|
|
38
|
+
&:nth-child(even) {
|
|
39
|
+
background-color: #F6F6F6;
|
|
40
|
+
}
|
|
41
|
+
&:not(:last-child) {
|
|
42
|
+
border-bottom: 1px solid #C8C8C8;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
&-title,
|
|
46
|
+
&-price {
|
|
47
|
+
line-height: 48px;
|
|
48
|
+
text-align: center;
|
|
49
|
+
width: 50%;
|
|
50
|
+
height: 48px;
|
|
51
|
+
}
|
|
52
|
+
&-price {
|
|
53
|
+
border-left: 1px solid #C8C8C8;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@media (max-width: 1900px) {
|
|
58
|
+
section {
|
|
59
|
+
padding-left: calc(100vw / 15);
|
|
60
|
+
padding-right: calc(100vw / 15);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@media (max-width: 1000px) {
|
|
65
|
+
section {
|
|
66
|
+
padding-bottom: 70px;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@media (max-width: 700px) {
|
|
71
|
+
section {
|
|
72
|
+
padding-bottom: 40px;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
package/src/config.js
CHANGED
|
@@ -66,6 +66,8 @@ export { PageBannerImageAndMenu } from './components/page-banner-image-and-menu/
|
|
|
66
66
|
export { GoogleAnalytics } from './components/google-analytics/config.js';
|
|
67
67
|
export { GoogleTag } from './components/google-tag/config.js';
|
|
68
68
|
export { cookiesPopup } from './components/cookies-popup/config.js';
|
|
69
|
+
export { infoTable } from './components/info-table/config.js';
|
|
70
|
+
export { faqComponent } from './components/faq-component/config.js';
|
|
69
71
|
|
|
70
72
|
// export { liqPayComponent } from './components/liqpay-component/config.js';
|
|
71
73
|
// export { htmlTextFromEditorJs } from './components/html-text-from-editor-js/config.js';
|