@npm_leadtech/legal-lib-components 5.2.17 → 5.2.19

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 (31) hide show
  1. package/dist/css/styles.css +112 -24
  2. package/dist/images/svg/arrow-right-24px-outlined.svg +3 -0
  3. package/dist/src/components/atoms/CardPane/CardPane.scss +1 -20
  4. package/dist/src/components/atoms/CardPane/CardPaneInfo.js +4 -5
  5. package/dist/src/components/atoms/CardPane/CardPaneInfo.tsx +3 -14
  6. package/dist/src/components/atoms/CardPane/CardPaneProps.types.d.ts +0 -1
  7. package/dist/src/components/atoms/CardPane/CardPaneProps.types.ts +0 -1
  8. package/dist/src/components/molecules/Article/Article.js +3 -2
  9. package/dist/src/components/molecules/Article/Article.scss +17 -0
  10. package/dist/src/components/molecules/Article/Article.tsx +17 -2
  11. package/dist/src/components/molecules/Article/ArticleProps.types.d.ts +1 -0
  12. package/dist/src/components/molecules/Article/ArticleProps.types.ts +1 -0
  13. package/dist/src/components/molecules/TrustworthyWebsites/TrustworthyWebsites.scss +1 -1
  14. package/dist/src/components/organisms/ArticlesList/ArticlesList.js +2 -2
  15. package/dist/src/components/organisms/ArticlesList/ArticlesList.tsx +2 -2
  16. package/dist/src/components/organisms/ArticlesList/ArticlesListProps.types.d.ts +1 -0
  17. package/dist/src/components/organisms/ArticlesList/ArticlesListProps.types.ts +1 -0
  18. package/dist/src/components/organisms/GuidelinesContent/GuidelinesContent.scss +8 -2
  19. package/dist/src/components/sections/AsSeeInSection/AsSeeInSection.js +2 -2
  20. package/dist/src/components/sections/AsSeeInSection/AsSeeInSection.scss +67 -1
  21. package/dist/src/components/sections/AsSeeInSection/AsSeeInSection.tsx +24 -1
  22. package/dist/src/components/sections/AsSeeInSection/AsSeeInSectionProps.types.d.ts +7 -0
  23. package/dist/src/components/sections/AsSeeInSection/AsSeeInSectionProps.types.ts +7 -0
  24. package/dist/src/components/sections/BlogSection/BlogSection.js +4 -3
  25. package/dist/src/components/sections/BlogSection/BlogSection.scss +21 -0
  26. package/dist/src/components/sections/BlogSection/BlogSection.tsx +9 -5
  27. package/dist/src/components/sections/BlogSection/BlogSectionProps.types.d.ts +2 -1
  28. package/dist/src/components/sections/BlogSection/BlogSectionProps.types.ts +2 -1
  29. package/dist/src/components/sections/PeopleSayAboutUsSection/PeopleSayAboutUsSection.scss +5 -0
  30. package/dist/src/custom.d.ts +1 -1
  31. package/package.json +1 -1
@@ -1283,7 +1283,6 @@ html[data-theme=lawdistrict] .e-button.--primary-3 {
1283
1283
  }
1284
1284
  .pane-wrapper:nth-child(2) {
1285
1285
  text-align: right;
1286
- padding-right: 0;
1287
1286
  }
1288
1287
  @media (min-width: 328px) and (max-width: 720px) {
1289
1288
  .pane-wrapper:nth-child(2) {
@@ -1292,23 +1291,10 @@ html[data-theme=lawdistrict] .e-button.--primary-3 {
1292
1291
  }
1293
1292
  .pane-wrapper:nth-child(3) {
1294
1293
  margin-top: 30px;
1295
- padding-right: 0;
1296
1294
  }
1297
- .pane-wrapper:nth-child(4) {
1298
- margin-top: 45px;
1299
- text-align: right;
1295
+ .pane-wrapper:last-child {
1300
1296
  padding-right: 0;
1301
1297
  }
1302
- @media (min-width: 328px) and (max-width: 720px) {
1303
- .pane-wrapper:nth-child(4) {
1304
- text-align: left;
1305
- margin-top: 16px;
1306
- }
1307
- }
1308
- .pane-wrapper:nth-child(4) .pane--title {
1309
- font-size: 0.75rem;
1310
- padding: 0;
1311
- }
1312
1298
  .pane-wrapper span {
1313
1299
  display: block;
1314
1300
  }
@@ -1317,8 +1303,6 @@ html[data-theme=lawdistrict] .e-button.--primary-3 {
1317
1303
  text-indent: -0.625rem;
1318
1304
  }
1319
1305
  .pane--title {
1320
- border: none;
1321
- background: none;
1322
1306
  color: var(--neutral-neutral-2);
1323
1307
  font-size: 0.875rem;
1324
1308
  line-height: 1.29;
@@ -1338,9 +1322,6 @@ html[data-theme=lawdistrict] .e-button.--primary-3 {
1338
1322
  font-size: 0.875rem;
1339
1323
  }
1340
1324
  }
1341
- .pane--title.pane--title--button {
1342
- cursor: pointer;
1343
- }
1344
1325
  .pane--description {
1345
1326
  color: var(--neutral-main);
1346
1327
  font-size: 1rem;
@@ -4665,6 +4646,21 @@ html[data-theme=lawdistrict] .document-status.--is-new .icon {
4665
4646
  margin-top: 0;
4666
4647
  }
4667
4648
  }
4649
+ .article .information .button-image-container {
4650
+ align-items: center;
4651
+ margin: 1rem 0 2rem 0;
4652
+ display: flex;
4653
+ }
4654
+ .article .information .button-image-container .thinner-letter {
4655
+ font-family: "Inter", sans-serif;
4656
+ font-size: 16px;
4657
+ font-weight: 400;
4658
+ line-height: 22px;
4659
+ letter-spacing: -0.3px;
4660
+ text-align: left;
4661
+ margin: 0;
4662
+ padding: 0 1rem 0 0;
4663
+ }
4668
4664
  .base-box-group {
4669
4665
  display: block;
4670
4666
  }
@@ -6429,7 +6425,7 @@ html[data-theme=lawdistrict] .document-status.--is-new .icon {
6429
6425
  }
6430
6426
  .trustworthy-websites__image {
6431
6427
  margin: 1.5rem;
6432
- max-width: 8rem;
6428
+ max-width: 7rem;
6433
6429
  }
6434
6430
  .type-modules-list {
6435
6431
  display: flex;
@@ -6870,8 +6866,15 @@ html[data-theme=lawdistrict] .document-status.--is-new .icon {
6870
6866
  }
6871
6867
  .guidelines-section-main {
6872
6868
  display: flex;
6873
- flex-direction: row;
6869
+ flex-direction: column;
6874
6870
  flex-wrap: nowrap;
6871
+ padding: 1.5rem;
6872
+ }
6873
+ @media (min-width: 960px) {
6874
+ .guidelines-section-main {
6875
+ flex-direction: row;
6876
+ padding: 0;
6877
+ }
6875
6878
  }
6876
6879
  .guidelines-section__texts {
6877
6880
  flex-basis: 50%;
@@ -6928,7 +6931,7 @@ html[data-theme=lawdistrict] .document-status.--is-new .icon {
6928
6931
  }
6929
6932
  }
6930
6933
  .guidelines-section__image.is-mobile {
6931
- display: flex;
6934
+ display: none;
6932
6935
  }
6933
6936
  @media (min-width: 720px) {
6934
6937
  .guidelines-section__image.is-mobile {
@@ -7530,9 +7533,14 @@ html[data-theme=lawdistrict] .document-status.--is-new .icon {
7530
7533
  flex-direction: column;
7531
7534
  box-shadow: 0px 2px 6px 0px rgba(2, 55, 74, 0.25);
7532
7535
  background: var(--others-white);
7533
- transform: translateY(-50%);
7536
+ transform: translateY(-5rem);
7534
7537
  padding: 1.5rem 0;
7535
7538
  }
7539
+ @media (min-width: 960px) {
7540
+ .as-seen-in-section-box .as-seen-in-section {
7541
+ transform: translateY(-50%);
7542
+ }
7543
+ }
7536
7544
  .as-seen-in-section-box .as-seen-in-section__title {
7537
7545
  text-align: center;
7538
7546
  font-size: 32px;
@@ -7543,6 +7551,61 @@ html[data-theme=lawdistrict] .document-status.--is-new .icon {
7543
7551
  letter-spacing: -0.3px;
7544
7552
  margin: 1rem 0;
7545
7553
  }
7554
+ .contact-us-section {
7555
+ display: flex;
7556
+ flex-direction: column;
7557
+ transform: translateY(-5rem);
7558
+ color: var(--neutral-neutral-1);
7559
+ margin-top: 1rem;
7560
+ }
7561
+ .contact-us-section__title {
7562
+ text-align: center;
7563
+ font-size: 32px;
7564
+ font-family: "Lora", serif;
7565
+ font-style: normal;
7566
+ font-weight: 400;
7567
+ line-height: 42px;
7568
+ letter-spacing: -0.3px;
7569
+ margin: 1rem 0;
7570
+ }
7571
+ .contact-us-section__text {
7572
+ text-align: center;
7573
+ font-style: normal;
7574
+ font-weight: 400;
7575
+ margin: 0 0 2rem 0;
7576
+ }
7577
+ .contact-us-section-blocks {
7578
+ display: flex;
7579
+ justify-content: center;
7580
+ flex-direction: column;
7581
+ gap: 1rem;
7582
+ }
7583
+ @media (min-width: 960px) {
7584
+ .contact-us-section-blocks {
7585
+ flex-direction: row;
7586
+ gap: 2.5rem;
7587
+ }
7588
+ }
7589
+ .contact-us-section-blocks__item {
7590
+ display: flex;
7591
+ flex-direction: column;
7592
+ align-items: center;
7593
+ background-color: white;
7594
+ box-shadow: 0px 2px 6px 0px rgba(2, 55, 74, 0.25);
7595
+ border-radius: 0.25rem;
7596
+ min-width: 200px;
7597
+ padding: 1rem;
7598
+ }
7599
+ .contact-us-section-blocks__item__image {
7600
+ width: 2rem;
7601
+ }
7602
+ .contact-us-section-blocks__item__title {
7603
+ margin-top: 1rem;
7604
+ line-height: 1rem;
7605
+ }
7606
+ .contact-us-section-blocks__item__text {
7607
+ font-size: 14px;
7608
+ }
7546
7609
  .benefit-ratafia-section {
7547
7610
  display: flex;
7548
7611
  justify-content: center;
@@ -7611,6 +7674,16 @@ html[data-theme=lawdistrict] .document-status.--is-new .icon {
7611
7674
  max-width: 1200px;
7612
7675
  }
7613
7676
  }
7677
+ .blog .blog__description {
7678
+ font-family: "Inter", sans-serif;
7679
+ font-size: 16px;
7680
+ font-weight: 400;
7681
+ line-height: 22px;
7682
+ letter-spacing: -0.3px;
7683
+ text-align: left;
7684
+ color: #6d7275;
7685
+ margin: 1rem 0 1.5rem 0;
7686
+ }
7614
7687
  .blog .blog__title {
7615
7688
  color: var(--primary-main-dark-1);
7616
7689
  }
@@ -7619,6 +7692,15 @@ html[data-theme=lawdistrict] .document-status.--is-new .icon {
7619
7692
  margin-bottom: 3rem;
7620
7693
  }
7621
7694
  }
7695
+ .blog .blog__title.category-product-title {
7696
+ margin-bottom: 0;
7697
+ font-family: "Inter", sans-serif;
7698
+ font-size: 28px;
7699
+ font-weight: 700;
7700
+ line-height: 32px;
7701
+ letter-spacing: -0.3px;
7702
+ text-align: left;
7703
+ }
7622
7704
  .blog .cta-button {
7623
7705
  width: 100%;
7624
7706
  margin-top: 3rem;
@@ -8194,6 +8276,12 @@ html[data-theme=lawdistrict] .document-status.--is-new .icon {
8194
8276
  width: 100%;
8195
8277
  margin: 0 auto;
8196
8278
  text-align: center;
8279
+ padding: 1.5rem;
8280
+ }
8281
+ @media (min-width: 960px) {
8282
+ .people-say {
8283
+ padding: 0;
8284
+ }
8197
8285
  }
8198
8286
  @media (min-width: 1200px) {
8199
8287
  .people-say {
@@ -0,0 +1,3 @@
1
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M8.70531 0.705315C8.31578 0.31578 7.68422 0.31578 7.29468 0.705316C6.9054 1.0946 6.90511 1.72568 7.29405 2.11531L12.17 7H0.999999C0.447714 7 0 7.44772 0 8C0 8.55229 0.447715 9 1 9H12.17L7.29405 13.8847C6.90511 14.2743 6.9054 14.9054 7.29468 15.2947C7.68422 15.6842 8.31578 15.6842 8.70532 15.2947L15.2929 8.70711C15.6834 8.31658 15.6834 7.68342 15.2929 7.29289L8.70531 0.705315Z" fill="#078080"/>
3
+ </svg>
@@ -51,29 +51,16 @@
51
51
  }
52
52
  &:nth-child(2) {
53
53
  text-align: right;
54
- padding-right: 0;
55
54
  @media (min-width: #{$xxs}) and (max-width: #{$sm}) {
56
55
  text-align: left;
57
56
  }
58
57
  }
59
58
  &:nth-child(3) {
60
59
  margin-top: 30px;
61
- padding-right: 0;
62
60
  }
63
- &:nth-child(4) {
64
- margin-top: 45px;
65
- text-align: right;
61
+ &:last-child {
66
62
  padding-right: 0;
67
- @media (min-width: #{$xxs}) and (max-width: #{$sm}) {
68
- text-align: left;
69
- margin-top: 16px;
70
- }
71
- .pane--title {
72
- font-size: 0.75rem;
73
- padding: 0;
74
- }
75
63
  }
76
-
77
64
  span {
78
65
  display: block;
79
66
  &.marker {
@@ -83,8 +70,6 @@
83
70
  }
84
71
  }
85
72
  &--title {
86
- border: none;
87
- background: none;
88
73
  color: get-color(neutral, neutral-2);
89
74
  font-size: 0.875rem;
90
75
  line-height: 1.29;
@@ -97,10 +82,6 @@
97
82
  @include laptop {
98
83
  font-size: 0.875rem;
99
84
  }
100
-
101
- &.pane--title--button {
102
- cursor: pointer;
103
- }
104
85
  }
105
86
  &--description {
106
87
  color: get-color(neutral);
@@ -1,6 +1,5 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- const CardPaneInfo = ({ description, subdescription, id, title, handleClick }) => {
3
- const paneTitle = (_jsx(_Fragment, { children: handleClick ? (_jsx("button", { onClick: handleClick, className: 'pane--title pane--title--button', children: title })) : (_jsx("div", { className: 'pane--title', children: title })) }));
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ const CardPaneInfo = ({ description, subdescription, id, title }) => {
4
3
  if (description === 'Active' || description === 'Inactive') {
5
4
  let descriptionClass;
6
5
  if (description === 'Active') {
@@ -9,8 +8,8 @@ const CardPaneInfo = ({ description, subdescription, id, title, handleClick }) =
9
8
  else if (description === 'Inactive') {
10
9
  descriptionClass = 'pane--description--inactive';
11
10
  }
12
- return (_jsxs("div", { className: 'pane-wrapper', children: [paneTitle, _jsx("div", { "data-testid": 'description-div', className: descriptionClass, children: _jsx("li", { className: 'position', children: _jsx("div", { className: 'marker', children: description }) }) })] }, id));
11
+ return (_jsxs("div", { className: 'pane-wrapper', children: [_jsx("div", { className: 'pane--title', children: title }), _jsx("div", { "data-testid": 'description-div', className: descriptionClass, children: _jsx("li", { className: 'position', children: _jsx("div", { className: 'marker', children: description }) }) })] }, id));
13
12
  }
14
- return (_jsxs("div", { className: 'pane-wrapper', children: [paneTitle, _jsxs("div", { className: 'pane--description', children: [description, subdescription !== undefined && _jsx("span", { className: 'pane--description--subdescription', children: subdescription })] })] }, id));
13
+ return (_jsxs("div", { className: 'pane-wrapper', children: [_jsx("div", { className: 'pane--title', children: title }), _jsxs("div", { className: 'pane--description', children: [description, subdescription !== undefined && _jsx("span", { className: 'pane--description--subdescription', children: subdescription })] })] }, id));
15
14
  };
16
15
  export default CardPaneInfo;
@@ -4,18 +4,7 @@ import React, { type FC } from 'react'
4
4
 
5
5
  import { type CardPaneInfoProps } from './CardPaneProps.types'
6
6
 
7
- const CardPaneInfo: FC<CardPaneInfoProps> = ({ description, subdescription, id, title, handleClick }) => {
8
- const paneTitle = (
9
- <>
10
- {handleClick ? (
11
- <button onClick={handleClick} className='pane--title pane--title--button'>
12
- {title}
13
- </button>
14
- ) : (
15
- <div className='pane--title'>{title}</div>
16
- )}
17
- </>
18
- )
7
+ const CardPaneInfo: FC<CardPaneInfoProps> = ({ description, subdescription, id, title }) => {
19
8
  if (description === 'Active' || description === 'Inactive') {
20
9
  let descriptionClass
21
10
  if (description === 'Active') {
@@ -25,7 +14,7 @@ const CardPaneInfo: FC<CardPaneInfoProps> = ({ description, subdescription, id,
25
14
  }
26
15
  return (
27
16
  <div key={id} className='pane-wrapper'>
28
- {paneTitle}
17
+ <div className='pane--title'>{title}</div>
29
18
  <div data-testid='description-div' className={descriptionClass}>
30
19
  <li className='position'>
31
20
  <div className='marker'>{description}</div>
@@ -37,7 +26,7 @@ const CardPaneInfo: FC<CardPaneInfoProps> = ({ description, subdescription, id,
37
26
 
38
27
  return (
39
28
  <div key={id} className='pane-wrapper'>
40
- {paneTitle}
29
+ <div className='pane--title'>{title}</div>
41
30
  <div className='pane--description'>
42
31
  {description}
43
32
  {subdescription !== undefined && <span className='pane--description--subdescription'>{subdescription}</span>}
@@ -6,5 +6,4 @@ export interface CardPaneInfoProps {
6
6
  id: string;
7
7
  title: string;
8
8
  subdescription?: string;
9
- handleClick?: () => void;
10
9
  }
@@ -7,5 +7,4 @@ export interface CardPaneInfoProps {
7
7
  id: string
8
8
  title: string
9
9
  subdescription?: string
10
- handleClick?: () => void
11
10
  }
@@ -1,7 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import ArrowRight from '../../../../images/svg/arrow-right-24px-outlined.svg';
2
3
  import { Button } from '../../atoms';
3
4
  // import './Article.scss'
4
- const Article = ({ imageUrl, title, articleUrl, summary }) => {
5
- return (_jsxs("div", { className: 'article', children: [_jsx("img", { src: imageUrl, className: 'image', loading: 'lazy', alt: title }), _jsxs("div", { className: 'information', children: [_jsx("a", { href: articleUrl, target: '_blank', rel: 'noreferrer', children: _jsxs("p", { className: 'title sans-serif --big', children: [title, " "] }) }), _jsx("div", { className: 'summary', children: summary }), _jsx(Button, { color: 'tertiary', label: 'Read more', dataQa: 'article-read-more', link: articleUrl, isExternal: true })] })] }));
5
+ const Article = ({ imageUrl, title, articleUrl, summary, isCategoryProductPage }) => {
6
+ return (_jsxs("div", { className: 'article', children: [_jsx("img", { src: imageUrl, className: 'image', loading: 'lazy', alt: title }), _jsxs("div", { className: 'information', children: [_jsx("a", { href: articleUrl, target: '_blank', rel: 'noreferrer', children: _jsxs("p", { className: 'title sans-serif --big', children: [title, " "] }) }), _jsx("div", { className: 'summary', children: summary }), isCategoryProductPage ? (_jsxs("div", { className: 'button-image-container', children: [_jsx(Button, { givenClass: 'thinner-letter', color: 'tertiary', label: 'Read more', dataQa: 'article-read-more', link: articleUrl, isExternal: true }), _jsx("img", { className: 'article__arrow-right', src: ArrowRight, alt: '' })] })) : (_jsx(Button, { color: 'tertiary', label: 'Read more', dataQa: 'article-read-more', link: articleUrl, isExternal: true }))] })] }));
6
7
  };
7
8
  export default Article;
@@ -62,5 +62,22 @@
62
62
  margin-top: 0;
63
63
  }
64
64
  }
65
+
66
+ .button-image-container {
67
+ align-items: center;
68
+ margin: 1rem 0 2rem 0;
69
+ display: flex;
70
+
71
+ .thinner-letter {
72
+ font-family: $font-sans;
73
+ font-size: 16px;
74
+ font-weight: 400;
75
+ line-height: 22px;
76
+ letter-spacing: -0.3px;
77
+ text-align: left;
78
+ margin: 0;
79
+ padding: 0 1rem 0 0;
80
+ }
81
+ }
65
82
  }
66
83
  }
@@ -1,10 +1,11 @@
1
1
  import React, { type FC } from 'react'
2
2
 
3
+ import ArrowRight from '../../../../images/svg/arrow-right-24px-outlined.svg'
3
4
  import { type ArticleProps } from './ArticleProps.types'
4
5
  import { Button } from '../../atoms'
5
6
  // import './Article.scss'
6
7
 
7
- const Article: FC<ArticleProps> = ({ imageUrl, title, articleUrl, summary }) => {
8
+ const Article: FC<ArticleProps> = ({ imageUrl, title, articleUrl, summary, isCategoryProductPage }) => {
8
9
  return (
9
10
  <div className='article'>
10
11
  <img src={imageUrl} className='image' loading='lazy' alt={title} />
@@ -13,7 +14,21 @@ const Article: FC<ArticleProps> = ({ imageUrl, title, articleUrl, summary }) =>
13
14
  <p className='title sans-serif --big'>{title} </p>
14
15
  </a>
15
16
  <div className='summary'>{summary}</div>
16
- <Button color='tertiary' label={'Read more'} dataQa='article-read-more' link={articleUrl} isExternal />
17
+ {isCategoryProductPage ? (
18
+ <div className='button-image-container'>
19
+ <Button
20
+ givenClass='thinner-letter'
21
+ color='tertiary'
22
+ label={'Read more'}
23
+ dataQa='article-read-more'
24
+ link={articleUrl}
25
+ isExternal
26
+ />
27
+ <img className='article__arrow-right' src={ArrowRight} alt=''></img>
28
+ </div>
29
+ ) : (
30
+ <Button color='tertiary' label={'Read more'} dataQa='article-read-more' link={articleUrl} isExternal />
31
+ )}
17
32
  </div>
18
33
  </div>
19
34
  )
@@ -4,4 +4,5 @@ export interface ArticleProps {
4
4
  articleUrl: string;
5
5
  summary: string;
6
6
  id: string;
7
+ isCategoryProductPage: boolean;
7
8
  }
@@ -4,4 +4,5 @@ export interface ArticleProps {
4
4
  articleUrl: string
5
5
  summary: string
6
6
  id: string
7
+ isCategoryProductPage: boolean
7
8
  }
@@ -9,6 +9,6 @@
9
9
 
10
10
  &__image {
11
11
  margin: 1.5rem;
12
- max-width: 8rem;
12
+ max-width: 7rem;
13
13
  }
14
14
  }
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Article } from '../../molecules';
3
3
  // import './ArticlesList.scss'
4
- const ArticlesList = ({ articles = [] }) => {
4
+ const ArticlesList = ({ articles = [], isCategoryProductPage = false }) => {
5
5
  if (articles?.length === 0)
6
6
  return null;
7
- return (_jsx("div", { className: 'articles_wrapper', children: articles.map((article) => (_jsx(Article, { ...article }, `article_${article?.id}`))) }));
7
+ return (_jsx("div", { className: 'articles_wrapper', children: articles.map((article) => (_jsx(Article, { ...article, isCategoryProductPage: isCategoryProductPage }, `article_${article?.id}`))) }));
8
8
  };
9
9
  export default ArticlesList;
@@ -5,13 +5,13 @@ import { Article, type ArticleProps } from '../../molecules'
5
5
  import { type ArticlesListProps } from './ArticlesListProps.types'
6
6
  // import './ArticlesList.scss'
7
7
 
8
- const ArticlesList: FC<ArticlesListProps> = ({ articles = [] }) => {
8
+ const ArticlesList: FC<ArticlesListProps> = ({ articles = [], isCategoryProductPage = false }) => {
9
9
  if (articles?.length === 0) return null
10
10
 
11
11
  return (
12
12
  <div className='articles_wrapper'>
13
13
  {articles.map((article: ArticleProps) => (
14
- <Article key={`article_${article?.id}`} {...article} />
14
+ <Article key={`article_${article?.id}`} {...article} isCategoryProductPage={isCategoryProductPage} />
15
15
  ))}
16
16
  </div>
17
17
  )
@@ -1,4 +1,5 @@
1
1
  import { type ArticleProps } from '../../molecules';
2
2
  export interface ArticlesListProps {
3
3
  articles: ArticleProps[];
4
+ isCategoryProductPage?: boolean;
4
5
  }
@@ -2,4 +2,5 @@ import { type ArticleProps } from '../../molecules'
2
2
 
3
3
  export interface ArticlesListProps {
4
4
  articles: ArticleProps[]
5
+ isCategoryProductPage?: boolean
5
6
  }
@@ -4,8 +4,14 @@
4
4
  .guidelines-section {
5
5
  &-main {
6
6
  display: flex;
7
- flex-direction: row;
7
+ flex-direction: column;
8
8
  flex-wrap: nowrap;
9
+ padding: 1.5rem;
10
+
11
+ @include laptop {
12
+ flex-direction: row;
13
+ padding: 0;
14
+ }
9
15
  }
10
16
 
11
17
  &__texts {
@@ -65,7 +71,7 @@
65
71
  }
66
72
 
67
73
  &.is-mobile {
68
- display: flex;
74
+ display: none;
69
75
 
70
76
  @include landscape-tablets {
71
77
  display: none;
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { AsSeeInContent } from '../../organisms';
3
3
  // import './AsSeeInSection.scss'
4
- const AsSeeInSection = ({ title, contentAsSeeIn }) => {
4
+ const AsSeeInSection = ({ title, contentAsSeeIn, contactSectionTitle, contactSectionText, contactSectionBlocks }) => {
5
5
  if (contentAsSeeIn.trustWorthyImages.images.length === 0) {
6
6
  return null;
7
7
  }
8
- return (_jsx("section", { className: 'as-seen-in-section-box', children: _jsxs("div", { className: 'as-seen-in-section wrapper', children: [_jsx("h2", { className: 'as-seen-in-section__title', children: title }), _jsx(AsSeeInContent, { trustWorthyImages: contentAsSeeIn.trustWorthyImages, children: contentAsSeeIn.children })] }) }));
8
+ return (_jsxs("section", { className: 'as-seen-in-section-box', children: [_jsxs("div", { className: 'as-seen-in-section wrapper', children: [_jsx("h2", { className: 'as-seen-in-section__title', children: title }), _jsx(AsSeeInContent, { trustWorthyImages: contentAsSeeIn.trustWorthyImages, children: contentAsSeeIn.children })] }), Array.isArray(contactSectionBlocks) && contactSectionBlocks.length > 0 && (_jsxs("div", { className: 'contact-us-section', children: [_jsx("h2", { className: 'contact-us-section__title', children: contactSectionTitle }), _jsx("p", { className: 'contact-us-section__text', children: contactSectionText }), Array.isArray(contactSectionBlocks) && (_jsx("div", { className: 'contact-us-section-blocks', children: contactSectionBlocks.map((item, index) => (_jsxs("div", { className: 'contact-us-section-blocks__item', children: [_jsx("div", { className: 'contact-us-section-blocks__item__image', children: item.image }), _jsx("div", { className: 'contact-us-section-blocks__item__title', children: item.title }), _jsx("p", { className: 'contact-us-section-blocks__item__text', children: item.body })] }, index))) }))] }))] }));
9
9
  };
10
10
  export default AsSeeInSection;
@@ -14,9 +14,13 @@
14
14
  flex-direction: column;
15
15
  box-shadow: 0px 2px 6px 0px rgba(2, 55, 74, 0.25);
16
16
  background: get-color(others, white);
17
- transform: translateY(-50%);
17
+ transform: translateY(-5rem);
18
18
  padding: 1.5rem 0;
19
19
 
20
+ @include laptop {
21
+ transform: translateY(-50%);
22
+ }
23
+
20
24
  &__title {
21
25
  text-align: center;
22
26
  font-size: 32px;
@@ -29,3 +33,65 @@
29
33
  }
30
34
  }
31
35
  }
36
+
37
+ .contact-us-section {
38
+ display: flex;
39
+ flex-direction: column;
40
+ transform: translateY(-5rem);
41
+ color: var(--neutral-neutral-1);
42
+ margin-top: 1rem;
43
+
44
+ &__title {
45
+ text-align: center;
46
+ font-size: 32px;
47
+ font-family: $font-serif;
48
+ font-style: normal;
49
+ font-weight: 400;
50
+ line-height: 42px;
51
+ letter-spacing: -0.3px;
52
+ margin: 1rem 0;
53
+ }
54
+
55
+ &__text {
56
+ text-align: center;
57
+ font-style: normal;
58
+ font-weight: 400;
59
+ margin: 0 0 2rem 0;
60
+ }
61
+
62
+ &-blocks {
63
+ display: flex;
64
+ justify-content: center;
65
+ flex-direction: column;
66
+ gap: 1rem;
67
+
68
+ @include laptop {
69
+ flex-direction: row;
70
+ gap: 2.5rem;
71
+ }
72
+
73
+ &__item {
74
+ display: flex;
75
+ flex-direction: column;
76
+ align-items: center;
77
+ background-color: white;
78
+ box-shadow: 0px 2px 6px 0px rgba(2, 55, 74, 0.25);
79
+ border-radius: 0.25rem;
80
+ min-width: 200px;
81
+ padding: 1rem;
82
+
83
+ &__image {
84
+ width: 2rem;
85
+ }
86
+
87
+ &__title {
88
+ margin-top: 1rem;
89
+ line-height: 1rem;
90
+ }
91
+
92
+ &__text {
93
+ font-size: 14px;
94
+ }
95
+ }
96
+ }
97
+ }
@@ -4,7 +4,13 @@ import { AsSeeInContent } from '../../organisms'
4
4
  import { type AsSeeInSectionProps } from './AsSeeInSectionProps.types'
5
5
  // import './AsSeeInSection.scss'
6
6
 
7
- const AsSeeInSection: FC<AsSeeInSectionProps> = ({ title, contentAsSeeIn }) => {
7
+ const AsSeeInSection: FC<AsSeeInSectionProps> = ({
8
+ title,
9
+ contentAsSeeIn,
10
+ contactSectionTitle,
11
+ contactSectionText,
12
+ contactSectionBlocks
13
+ }) => {
8
14
  if (contentAsSeeIn.trustWorthyImages.images.length === 0) {
9
15
  return null
10
16
  }
@@ -15,6 +21,23 @@ const AsSeeInSection: FC<AsSeeInSectionProps> = ({ title, contentAsSeeIn }) => {
15
21
  <h2 className='as-seen-in-section__title'>{title}</h2>
16
22
  <AsSeeInContent trustWorthyImages={contentAsSeeIn.trustWorthyImages}>{contentAsSeeIn.children}</AsSeeInContent>
17
23
  </div>
24
+ {Array.isArray(contactSectionBlocks) && contactSectionBlocks.length > 0 && (
25
+ <div className='contact-us-section'>
26
+ <h2 className='contact-us-section__title'>{contactSectionTitle}</h2>
27
+ <p className='contact-us-section__text'>{contactSectionText}</p>
28
+ {Array.isArray(contactSectionBlocks) && (
29
+ <div className='contact-us-section-blocks'>
30
+ {contactSectionBlocks.map((item, index) => (
31
+ <div className='contact-us-section-blocks__item' key={index}>
32
+ <div className='contact-us-section-blocks__item__image'>{item.image}</div>
33
+ <div className='contact-us-section-blocks__item__title'>{item.title}</div>
34
+ <p className='contact-us-section-blocks__item__text'>{item.body}</p>
35
+ </div>
36
+ ))}
37
+ </div>
38
+ )}
39
+ </div>
40
+ )}
18
41
  </section>
19
42
  )
20
43
  }
@@ -2,4 +2,11 @@ import { type AsSeeInContentProps } from '../../organisms/AsSeeInContent';
2
2
  export interface AsSeeInSectionProps {
3
3
  title: string;
4
4
  contentAsSeeIn: AsSeeInContentProps;
5
+ contactSectionTitle: string;
6
+ contactSectionText: string;
7
+ contactSectionBlocks?: {
8
+ image: React.ReactNode;
9
+ title: string;
10
+ body: string;
11
+ }[];
5
12
  }
@@ -3,4 +3,11 @@ import { type AsSeeInContentProps } from '../../organisms/AsSeeInContent'
3
3
  export interface AsSeeInSectionProps {
4
4
  title: string
5
5
  contentAsSeeIn: AsSeeInContentProps
6
+ contactSectionTitle: string
7
+ contactSectionText: string
8
+ contactSectionBlocks?: {
9
+ image: React.ReactNode
10
+ title: string
11
+ body: string
12
+ }[]
6
13
  }
@@ -2,9 +2,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { ArticlesList } from '../../organisms';
3
3
  import { Button } from '../../atoms';
4
4
  // import './BlogSection.scss'
5
- const BlogSection = ({ blogTitle, blogCta, articles }) => {
5
+ const BlogSection = ({ blogTitle, blogCta = null, blogDescription = null, articles }) => {
6
6
  if (articles.articles?.length === 0)
7
- return null;
8
- return (_jsxs("div", { className: 'blog', children: [_jsx("h2", { className: 'serif --super-large blog__title', children: blogTitle }), _jsx(ArticlesList, { articles: articles.articles }), _jsx(Button, { dataQa: '', color: 'secondary', label: blogCta, givenClass: 'cta-button', link: '/articles' })] }));
7
+ return;
8
+ const categoryProductTitle = !!blogDescription;
9
+ return (_jsxs("div", { className: 'blog', children: [_jsx("h2", { className: `serif --super-large blog__title ${categoryProductTitle ? 'category-product-title' : ''}`, children: blogTitle }), blogDescription && _jsx("p", { className: 'blog__description', children: blogDescription }), _jsx(ArticlesList, { articles: articles.articles, isCategoryProductPage: categoryProductTitle }), blogCta && _jsx(Button, { dataQa: '', color: 'secondary', label: blogCta, givenClass: 'cta-button', link: '/articles' })] }));
9
10
  };
10
11
  export default BlogSection;
@@ -14,12 +14,33 @@
14
14
  max-width: $lg;
15
15
  }
16
16
 
17
+ .blog__description {
18
+ font-family: $font-sans;
19
+ font-size: 16px;
20
+ font-weight: 400;
21
+ line-height: 22px;
22
+ letter-spacing: -0.3px;
23
+ text-align: left;
24
+ color: #6d7275;
25
+ margin: 1rem 0 1.5rem 0;
26
+ }
27
+
17
28
  .blog__title {
18
29
  color: get-color(primary, main-dark-1);
19
30
 
20
31
  @include laptop {
21
32
  margin-bottom: 3rem;
22
33
  }
34
+
35
+ &.category-product-title {
36
+ margin-bottom: 0;
37
+ font-family: $font-sans;
38
+ font-size: 28px;
39
+ font-weight: 700;
40
+ line-height: 32px;
41
+ letter-spacing: -0.3px;
42
+ text-align: left;
43
+ }
23
44
  }
24
45
 
25
46
  .cta-button {
@@ -6,14 +6,18 @@ import { type BlogSectionProps } from './BlogSectionProps.types'
6
6
  import { Button } from '../../atoms'
7
7
  // import './BlogSection.scss'
8
8
 
9
- const BlogSection: FC<BlogSectionProps> = ({ blogTitle, blogCta, articles }) => {
10
- if (articles.articles?.length === 0) return null
9
+ const BlogSection: FC<BlogSectionProps> = ({ blogTitle, blogCta = null, blogDescription = null, articles }) => {
10
+ if (articles.articles?.length === 0) return
11
+ const categoryProductTitle = !!blogDescription
11
12
 
12
13
  return (
13
14
  <div className={'blog'}>
14
- <h2 className={'serif --super-large blog__title'}>{blogTitle}</h2>
15
- <ArticlesList articles={articles.articles} />
16
- <Button dataQa='' color='secondary' label={blogCta} givenClass='cta-button' link={'/articles'} />
15
+ <h2 className={`serif --super-large blog__title ${categoryProductTitle ? 'category-product-title' : ''}`}>
16
+ {blogTitle}
17
+ </h2>
18
+ {blogDescription && <p className='blog__description'>{blogDescription}</p>}
19
+ <ArticlesList articles={articles.articles} isCategoryProductPage={categoryProductTitle} />
20
+ {blogCta && <Button dataQa='' color='secondary' label={blogCta} givenClass='cta-button' link={'/articles'} />}
17
21
  </div>
18
22
  )
19
23
  }
@@ -1,6 +1,7 @@
1
1
  import { type ArticlesListProps } from '../../organisms';
2
2
  export interface BlogSectionProps {
3
3
  blogTitle: string;
4
- blogCta: string;
4
+ blogCta?: string | null;
5
+ blogDescription?: string | null;
5
6
  articles: ArticlesListProps;
6
7
  }
@@ -2,6 +2,7 @@ import { type ArticlesListProps } from '../../organisms'
2
2
 
3
3
  export interface BlogSectionProps {
4
4
  blogTitle: string
5
- blogCta: string
5
+ blogCta?: string | null
6
+ blogDescription?: string | null
6
7
  articles: ArticlesListProps
7
8
  }
@@ -5,6 +5,11 @@
5
5
  width: 100%;
6
6
  margin: 0 auto;
7
7
  text-align: center;
8
+ padding: 1.5rem;
9
+
10
+ @include laptop {
11
+ padding: 0;
12
+ }
8
13
 
9
14
  @include desktop {
10
15
  max-width: $max-width;
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  declare module '*.svg' {
3
- const content: any
3
+ const content: string
4
4
  export default content
5
5
  }
6
6
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@npm_leadtech/legal-lib-components",
3
- "version": "5.2.17",
3
+ "version": "5.2.19",
4
4
  "license": "ISC",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",