@hellobetterdigitalnz/selwynui 0.0.1-41 → 0.0.1-43

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 (33) hide show
  1. package/dist/Components/DataDisplay/CarouselBlock/CarouselBlock.d.ts +3 -0
  2. package/dist/Components/DataDisplay/CarouselBlock/CarouselBlockProps.d.ts +20 -0
  3. package/dist/Components/DataDisplay/ContentBlock/ContentBlock.d.ts +3 -0
  4. package/dist/Components/DataDisplay/ContentBlock/ContentBlockProps.d.ts +5 -0
  5. package/dist/Components/DataDisplay/ListingDetailBlock/ListingDetailBlock.d.ts +1 -1
  6. package/dist/Components/DataDisplay/ListingDetailBlock/ListingDetailBlockProps.d.ts +2 -1
  7. package/dist/Components/DataDisplay/PathwayBlock/PathwayBlockProps.d.ts +3 -4
  8. package/dist/Components/DataDisplay/index.d.ts +6 -0
  9. package/dist/index.cjs.js +19 -18
  10. package/dist/index.cjs.js.map +1 -1
  11. package/dist/index.es.js +5820 -2443
  12. package/dist/index.es.js.map +1 -1
  13. package/dist/selwynui.css +1 -1
  14. package/package.json +3 -1
  15. package/src/Components/DataDisplay/CarouselBlock/CarouselBlock.stories.tsx +77 -0
  16. package/src/Components/DataDisplay/CarouselBlock/CarouselBlock.tsx +74 -0
  17. package/src/Components/DataDisplay/CarouselBlock/CarouselBlockProps.tsx +23 -0
  18. package/src/Components/DataDisplay/CarouselBlock/carouselBlock.module.scss +54 -0
  19. package/src/Components/DataDisplay/ContentBlock/ContentBlock.stories.tsx +107 -0
  20. package/src/Components/DataDisplay/ContentBlock/ContentBlock.tsx +26 -0
  21. package/src/Components/DataDisplay/ContentBlock/ContentBlockProps.tsx +6 -0
  22. package/src/Components/DataDisplay/ContentBlock/contentBlock.module.scss +61 -0
  23. package/src/Components/DataDisplay/DetailsCard/detailsCard.module.scss +1 -1
  24. package/src/Components/DataDisplay/ListBlock/listBlock.module.scss +2 -0
  25. package/src/Components/DataDisplay/ListingDetailBlock/ListingDetailBlock.tsx +1 -1
  26. package/src/Components/DataDisplay/ListingDetailBlock/ListingDetailBlockProps.tsx +4 -2
  27. package/src/Components/DataDisplay/PathwayBlock/PathwayBlock.stories.tsx +5 -3
  28. package/src/Components/DataDisplay/PathwayBlock/PathwayBlockProps.tsx +3 -4
  29. package/src/Components/DataDisplay/TestimonyCard/TestimonyCard.stories.tsx +1 -1
  30. package/src/Components/DataDisplay/TestimonyCard/TestimonyCard.tsx +37 -7
  31. package/src/Components/DataDisplay/TestimonyCard/testimonyCard.module.scss +48 -4
  32. package/src/Components/DataDisplay/index.ts +13 -0
  33. package/src/Components/DataDisplay/slider.scss +43 -0
@@ -0,0 +1,54 @@
1
+ .carouselTitle{
2
+ margin: -12px;
3
+ margin-bottom: 70px;
4
+ display: flex;
5
+ flex-wrap: wrap;
6
+ justify-content: space-between;
7
+ align-items: center;
8
+
9
+ h3{
10
+ font-size: 36px;
11
+ line-height: 1;
12
+ font-weight: 700;
13
+ padding: 12px;
14
+ }
15
+
16
+ .actions{
17
+ padding: 12px;
18
+ }
19
+
20
+
21
+ @media screen and (min-width: 992px) {
22
+ margin-bottom: 84px;
23
+
24
+ h3{
25
+ font-size: var(--font-size-h3);
26
+ }
27
+
28
+ }
29
+
30
+ }
31
+
32
+ .card{
33
+ width: 312px !important;
34
+ margin-right: 16px;
35
+ }
36
+
37
+ .btn{
38
+ margin-top: 36px;
39
+ display: flex;
40
+ }
41
+
42
+ @media screen and (min-width: 992px) {
43
+
44
+ .card {
45
+ width: 456px !important;
46
+ margin-right: 24px;
47
+ }
48
+
49
+
50
+ .btn{
51
+ margin-top: 72px;
52
+ }
53
+
54
+ }
@@ -0,0 +1,107 @@
1
+ // @ts-ignore
2
+ import React from "react"
3
+ import { Meta, StoryObj } from "@storybook/react-vite";
4
+ import ContentBlock from "./ContentBlock";
5
+ import ElementHolder from "../../Shared/ElementHolder/ElementHolder";
6
+
7
+ const meta: Meta = {
8
+ title: "Layout / ContentBlock",
9
+ component: ContentBlock,
10
+ parameters: {
11
+ layout: 'fullscreen',
12
+ },
13
+ tags: ["autodocs"]
14
+ }
15
+
16
+ export default meta;
17
+
18
+ type Story = StoryObj<typeof meta>;
19
+
20
+ const ContentBlockTemplate: Story = {
21
+ render: () => {
22
+ return (
23
+ <>
24
+ <ElementHolder paddingTop="sm" paddingBottom="sm" pillar="participate" level="primary">
25
+ <ContentBlock>
26
+ <h3>Privacy policy</h3>
27
+ <h6>Lorem ipsum dolor sit amet, consectetur adipiscing elit</h6>
28
+ <p>
29
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor <strong>incididunt</strong> ut labore et
30
+ dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
31
+ commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat
32
+ nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim
33
+ id est laborum.
34
+ </p>
35
+
36
+ <br/>
37
+
38
+ <h6>Lorem ipsum dolor sit amet, consectetur adipiscing elit</h6>
39
+ <p>
40
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et
41
+ dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
42
+ commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat
43
+ nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim
44
+ id est laborum.
45
+ </p>
46
+
47
+ <br/>
48
+
49
+ <h6>Lorem ipsum dolor sit amet, consectetur adipiscing elit</h6>
50
+ <p>
51
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et
52
+ dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
53
+ commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat
54
+ nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim
55
+ id est laborum.
56
+ </p>
57
+
58
+ <br/>
59
+
60
+ <p>
61
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et
62
+ dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
63
+ commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat
64
+ nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim
65
+ id est laborum.
66
+ </p>
67
+ </ContentBlock>
68
+ </ElementHolder>
69
+ </>
70
+ )
71
+ }
72
+ }
73
+
74
+ export const ContentBlockComponent = {
75
+ ...ContentBlockTemplate
76
+ };
77
+
78
+ // Additional story with different pillar
79
+ const ContentBlockVisitTemplate: Story = {
80
+ render: () => {
81
+ return (
82
+ <>
83
+ <ElementHolder paddingTop="sm" paddingBottom="sm" pillar="visit" level="primary">
84
+ <ContentBlock pillar="visit">
85
+ <h1>Terms of Service</h1>
86
+ <p>Please read these terms carefully</p>
87
+
88
+ <h3>User Agreement</h3>
89
+ <p>
90
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et
91
+ dolore magna aliqua.
92
+ </p>
93
+
94
+ <h3>Privacy & Data</h3>
95
+ <p>
96
+ Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
97
+ </p>
98
+ </ContentBlock>
99
+ </ElementHolder>
100
+ </>
101
+ )
102
+ }
103
+ }
104
+
105
+ export const ContentBlockVisit = {
106
+ ...ContentBlockVisitTemplate
107
+ };
@@ -0,0 +1,26 @@
1
+ import ContentBlockProps from "./ContentBlockProps.tsx";
2
+ import styles from './contentBlock.module.scss';
3
+ import Container from "../../Shared/Container/Container.tsx";
4
+ import LargeHeroIcon from "../../Layout/HeroBanner/LargeHeroIcon.tsx";
5
+
6
+ const ContentBlock = (props: ContentBlockProps) => {
7
+ const {
8
+ children,
9
+ pillar = 'visit'
10
+ } = props;
11
+
12
+ return (
13
+ <div className={`${styles.contentBlock} ${pillar ? `${pillar}` : ""}`}>
14
+ <Container>
15
+ <div className={`typography ${styles.contentBlockWrapper}` }>
16
+ {children}
17
+ </div>
18
+ </Container>
19
+ <div className={styles.heroSvg}>
20
+ <LargeHeroIcon/>
21
+ </div>
22
+ </div>
23
+ );
24
+ };
25
+
26
+ export default ContentBlock;
@@ -0,0 +1,6 @@
1
+ interface ContentBlockProps {
2
+ children: React.ReactNode;
3
+ pillar?: 'visit' | 'live' | 'business' | 'participate' | 'taste' | 'main';
4
+ }
5
+
6
+ export default ContentBlockProps;
@@ -0,0 +1,61 @@
1
+ .contentBlock {
2
+
3
+ @media (max-width: 834px) {
4
+ padding: 64px 0;
5
+ width: 100%;
6
+ }
7
+
8
+ @media (max-width: 480px) {
9
+ padding: 48px 0;
10
+ width: 100%;
11
+ }
12
+ }
13
+
14
+ .contentBlockWrapper {
15
+ max-width: 910px;
16
+ }
17
+
18
+ .pillarIcon {
19
+ position: absolute;
20
+ right: 0;
21
+ bottom: 0;
22
+ pointer-events: none;
23
+ z-index: 1;
24
+
25
+ @media (max-width: 1200px) {
26
+ right: -100px;
27
+ display: none;
28
+ }
29
+
30
+ @media (max-width: 900px) {
31
+ display: none;
32
+ }
33
+
34
+ svg {
35
+ height: 577px;
36
+ width: 639px;
37
+
38
+ @media (max-width: 1400px) {
39
+ height: 450px;
40
+ width: 500px;
41
+ }
42
+
43
+ @media (max-width: 1200px) {
44
+ height: 350px;
45
+ width: 400px;
46
+ }
47
+ }
48
+ }
49
+
50
+ .heroSvg {
51
+ position: absolute;
52
+ z-index: 5;
53
+ top: 0;
54
+ right: 0;
55
+ height: 340px;
56
+ pointer-events: none;
57
+
58
+ @media (max-width: 1024px) {
59
+ display: none;
60
+ }
61
+ }
@@ -57,7 +57,7 @@
57
57
  }
58
58
 
59
59
  .cardWrap {
60
- min-height: 400px;
60
+ min-height: 450px;
61
61
  display: flex;
62
62
  flex-direction: column;
63
63
 
@@ -12,6 +12,7 @@
12
12
  align-items: flex-end;
13
13
  justify-content: space-between;
14
14
  margin-bottom: 36px;
15
+ flex-wrap: wrap;
15
16
 
16
17
  p {
17
18
  max-width: 936px;
@@ -21,6 +22,7 @@
21
22
  }
22
23
 
23
24
  .action{
25
+ margin-top: 24px;
24
26
  display: flex;
25
27
  }
26
28
 
@@ -1,4 +1,4 @@
1
- import { ListingDetailBlockProps } from "./ListingDetailBlockProps";
1
+ import ListingDetailBlockProps from "./ListingDetailBlockProps";
2
2
  import styles from "./ListingDetailBlock.module.scss";
3
3
  import {CheckCircle, Clock, DeviceMobile, MapPin, Mountains, Path} from "../../Icons";
4
4
  import {Button} from "../../Form";
@@ -1,5 +1,5 @@
1
1
  // ListingDetailBlockProps.ts
2
- export interface ListingDetailBlockProps {
2
+ interface ListingDetailBlockProps {
3
3
  title: string;
4
4
  description: string;
5
5
  facilities: string[];
@@ -12,4 +12,6 @@ export interface ListingDetailBlockProps {
12
12
  phone?: string;
13
13
  websiteUrl?: string;
14
14
  websiteText?: string; // e.g., "WEBSITE →"
15
- }
15
+ }
16
+
17
+ export default ListingDetailBlockProps;
@@ -27,19 +27,21 @@ const PathwayBlockTemplate: Story = {
27
27
  cards={[
28
28
  {
29
29
  title: "Lorem ipsum",
30
- date: "2024-01-15",
31
30
  description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt",
32
31
  image: "https://images.pexels.com/photos/1854897/pexels-photo-1854897.jpeg"
33
32
  },
34
33
  {
35
34
  title: "Lorem ipsum",
36
- date: "2024-01-16",
37
35
  description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt",
38
36
  image: "https://images.pexels.com/photos/1595655/pexels-photo-1595655.jpeg"
39
37
  },
40
38
  {
41
39
  title: "Lorem ipsum",
42
- date: "2024-01-17",
40
+ description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
41
+ image: "https://images.pexels.com/photos/3184291/pexels-photo-3184291.jpeg"
42
+ },
43
+ {
44
+ title: "Lorem ipsum",
43
45
  description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
44
46
  image: "https://images.pexels.com/photos/3184291/pexels-photo-3184291.jpeg"
45
47
  }
@@ -1,8 +1,7 @@
1
1
  export interface PathwayCard {
2
- title: string;
3
- date: string;
4
- description: string;
5
- image: string;
2
+ title?: string;
3
+ description?: string;
4
+ image?: string;
6
5
  link?: {
7
6
  title?: string
8
7
  href?: string
@@ -31,7 +31,7 @@ const TestimonyCardTemplate: Story = {
31
31
  },
32
32
  {
33
33
  image:"https://images.pexels.com/photos/1906658/pexels-photo-1906658.jpeg",
34
- testimony: 'The sense of community here is incredible.',
34
+ testimony: 'The sense of community here is incredible. Living in Selwyn is like waking up in a dream every single day. The community is not only vibrant but also filled with friendly faces and engaging activities that bring everyone together.\n\nThe sunsets here are truly breathtaking, painting the sky in hues of orange, pink, and purple, creating a picturesque backdrop that makes every evening feel special!',
35
35
  author: '— Sarah & James'
36
36
  }
37
37
  ]}
@@ -1,10 +1,8 @@
1
- import { useState } from 'react';
1
+ import { useState, useEffect } from 'react';
2
2
  import TestimonyCardProps from "./TestimonyCardProps.tsx";
3
3
  import styles from './testimonyCard.module.scss';
4
4
  import Container from "../../Shared/Container/Container.tsx";
5
5
 
6
-
7
-
8
6
  const TestimonyCard = (props: TestimonyCardProps) => {
9
7
  const {
10
8
  testimonies,
@@ -12,9 +10,29 @@ const TestimonyCard = (props: TestimonyCardProps) => {
12
10
  } = props;
13
11
 
14
12
  const [currentIndex, setCurrentIndex] = useState(0);
13
+ const [direction, setDirection] = useState<'left' | 'right'>('right');
15
14
 
16
15
  const defaultImage = 'https://images.pexels.com/photos/1563356/pexels-photo-1563356.jpeg';
17
16
 
17
+ const handleDotClick = (index: number) => {
18
+ if (index > currentIndex) {
19
+ setDirection('right');
20
+ } else {
21
+ setDirection('left');
22
+ }
23
+ setCurrentIndex(index);
24
+ };
25
+
26
+
27
+ useEffect(() => {
28
+ const interval = setInterval(() => {
29
+ setDirection('right');
30
+ setCurrentIndex((prev) => (prev + 1) % testimonies.length);
31
+ }, 5000); // change every 5 seconds
32
+
33
+ return () => clearInterval(interval); // cleanup on unmount
34
+ }, [testimonies.length]);
35
+
18
36
  return <div
19
37
  className={`
20
38
  ${styles.testimonyCard}
@@ -26,22 +44,34 @@ const TestimonyCard = (props: TestimonyCardProps) => {
26
44
  <div className={styles.testimonyCardWrapper}>
27
45
  <div className={styles.testimonyCardLeft}>
28
46
  <img
47
+ key={`image-${currentIndex}`}
48
+ className={styles[`slideIn${direction === 'right' ? 'Right' : 'Left'}`]}
29
49
  src={testimonies[currentIndex].image || defaultImage}
30
50
  alt={`${testimonies[currentIndex].author} testimonial`}
31
51
  />
32
52
  </div>
33
53
  <div className={styles.testimonyCardRight}>
34
54
  <div className={styles.testimonyContent}>
35
- <div className={styles.quoteIcon}>
55
+ <div className={styles[`slideIn${direction === 'right' ? 'Right' : 'Left'}`]} >
36
56
  <svg xmlns="http://www.w3.org/2000/svg" width="56" height="39" viewBox="0 0 56 39" fill="none">
37
57
  <path d="M23.1134 27.0562C23.1134 32.4847 18.9331 36 13.4798 36C8.02648 36 4.75277 33.6194 3.3652 27.0562C1.97764 20.493 7.78599 17.227 13.2393 17.227C18.6926 17.227 23.1134 21.6276 23.1134 27.0562Z" fill="#92C134"/>
38
58
  <path d="M53.0015 27.0558C53.0015 32.4844 48.8212 35.9997 43.3679 35.9997C37.9145 35.9997 34.6408 33.619 33.2533 27.0558C31.8657 20.4926 37.674 17.2267 43.1274 17.2267C48.5807 17.2267 53.0015 21.6273 53.0015 27.0558Z" fill="#92C134"/>
39
59
  <path d="M3.3652 27.0562C4.75277 33.6194 8.02648 36 13.4798 36C18.9331 36 23.1134 32.4847 23.1134 27.0562C23.1134 21.6276 18.6926 17.227 13.2393 17.227C7.78599 17.227 1.97764 20.493 3.3652 27.0562ZM3.3652 27.0562C1.97764 20.493 4.78431 13.7613 7.99019 9.54638C11.1961 5.33146 17.2399 2.24873 21.5318 3.16115M33.2533 27.0558C34.6408 33.619 37.9145 35.9997 43.3679 35.9997C48.8212 35.9997 53.0015 32.4844 53.0015 27.0558C53.0015 21.6273 48.5807 17.2267 43.1274 17.2267C37.674 17.2267 31.8657 20.4926 33.2533 27.0558ZM33.2533 27.0558C31.8657 20.4926 34.6724 13.761 37.8782 9.54606C41.0841 5.33115 47.1279 2.24841 51.4199 3.16083" stroke="#92C134" strokeWidth="6" strokeLinecap="round" strokeLinejoin="round"/>
40
60
  </svg>
41
61
  </div>
42
- <h6>{testimonies[currentIndex].testimony}</h6>
62
+ <h6
63
+ key={`testimony-${currentIndex}`}
64
+ className={styles[`slideIn${direction === 'right' ? 'Right' : 'Left'}`]}
65
+ >
66
+ {testimonies[currentIndex].testimony}
67
+ </h6>
43
68
  </div>
44
- <p>{testimonies[currentIndex].author}</p>
69
+ <p
70
+ key={`author-${currentIndex}`}
71
+ className={styles[`slideIn${direction === 'right' ? 'Right' : 'Left'}`]}
72
+ >
73
+ {testimonies[currentIndex].author}
74
+ </p>
45
75
 
46
76
  {testimonies.length > 1 && (
47
77
  <div className={styles.pagination}>
@@ -49,7 +79,7 @@ const TestimonyCard = (props: TestimonyCardProps) => {
49
79
  <button
50
80
  key={index}
51
81
  className={`${styles.dot} ${index === currentIndex ? styles.active : ''}`}
52
- onClick={() => setCurrentIndex(index)}
82
+ onClick={() => handleDotClick(index)}
53
83
  aria-label={`Go to testimonial ${index + 1}`}
54
84
  />
55
85
  ))}
@@ -11,7 +11,7 @@
11
11
  gap: 69px;
12
12
  align-items: center;
13
13
 
14
- @media (max-width: 834px) {
14
+ @media (max-width: 1032px) {
15
15
  flex-direction: column;
16
16
  gap: 32px;
17
17
  }
@@ -19,6 +19,7 @@
19
19
 
20
20
  .testimonyCardLeft {
21
21
  flex-shrink: 0;
22
+ overflow: hidden;
22
23
 
23
24
  @media (max-width: 834px) {
24
25
  padding-top: 0;
@@ -37,7 +38,6 @@
37
38
  @media (max-width: 834px) {
38
39
  width: 100%;
39
40
  height: 360px;
40
- //aspect-ratio: 1;
41
41
  border-radius: 2px 2px 96px 2px;
42
42
  }
43
43
 
@@ -52,9 +52,19 @@
52
52
  display: flex;
53
53
  flex-direction: column;
54
54
  gap: 24px;
55
+ overflow: hidden;
56
+ position: relative;
57
+ min-height: 340px;
58
+ height: 100%;
55
59
 
56
- @media (max-width: 834px) {
60
+ @media (max-width: 1390px) {
61
+ height: 100%;
62
+ }
63
+
64
+
65
+ @media (max-width: 1032px) {
57
66
  width: 100%;
67
+ height: 100%;
58
68
  gap: 16px;
59
69
  }
60
70
 
@@ -67,7 +77,6 @@
67
77
 
68
78
  @media (max-width: 834px) {
69
79
  padding-left: 0;
70
- font-size: 12px;
71
80
  }
72
81
  }
73
82
  }
@@ -76,6 +85,7 @@
76
85
  display: flex;
77
86
  gap: 16px;
78
87
  align-items: flex-start;
88
+ overflow: hidden;
79
89
 
80
90
  @media (max-width: 834px) {
81
91
  flex-direction: column;
@@ -119,6 +129,9 @@
119
129
  display: flex;
120
130
  gap: 12px;
121
131
  padding-left: 70px;
132
+ position: absolute;
133
+ bottom: 0;
134
+ left: 0;
122
135
 
123
136
  @media (max-width: 834px) {
124
137
  padding-left: 0;
@@ -156,4 +169,35 @@
156
169
  }
157
170
  }
158
171
  }
172
+ }
173
+
174
+ // Animations
175
+ @keyframes slideInRight {
176
+ from {
177
+ opacity: 0;
178
+ transform: translateX(50px);
179
+ }
180
+ to {
181
+ opacity: 1;
182
+ transform: translateX(0);
183
+ }
184
+ }
185
+
186
+ @keyframes slideInLeft {
187
+ from {
188
+ opacity: 0;
189
+ transform: translateX(-50px);
190
+ }
191
+ to {
192
+ opacity: 1;
193
+ transform: translateX(0);
194
+ }
195
+ }
196
+
197
+ .slideInRight {
198
+ animation: slideInRight 0.5s ease-out;
199
+ }
200
+
201
+ .slideInLeft {
202
+ animation: slideInLeft 0.5s ease-out;
159
203
  }
@@ -36,6 +36,14 @@ export type { default as TestimonyCardProps } from './TestimonyCard/TestimonyCar
36
36
  export { default as Pathway } from './ListBlock/ListBlock.tsx';
37
37
  export type { default as PathwayProps } from './ListBlock/ListBlockProps.tsx';
38
38
 
39
+ // ListingDetailBlock
40
+ export { default as ListingDetailBlock } from './ListingDetailBlock/ListingDetailBlock';
41
+ export type { default as ListingDetailBlockProps } from './ListingDetailBlock/ListingDetailBlockProps';
42
+
43
+ // ContentBlock
44
+ export { default as ContentBlock } from './ContentBlock/ContentBlock';
45
+ export type { default as ContentBlockProps } from './ContentBlock/ContentBlockProps';
46
+
39
47
  // PromoBanner
40
48
  export { default as PromoBannerBlock } from './PromoBannerBlock/PromoBannerBlock';
41
49
  export type { default as PromoBannerBlockProps } from './PromoBannerBlock/PromoBannerBlockProps';
@@ -52,3 +60,8 @@ export type {default as ImageContentProps} from './ImageContent/ImageContentProp
52
60
  //List Block
53
61
  export { default as ListBlock } from './ListBlock/ListBlock'
54
62
  export type { default as ListBlockProps } from './ListBlock/ListBlockProps'
63
+
64
+ // Carousel Block
65
+
66
+ export { default as CarouselBlock } from './CarouselBlock/CarouselBlock.tsx'
67
+ export type { default as CarouselBlockProps } from './CarouselBlock/CarouselBlockProps.tsx'
@@ -1,2 +1,45 @@
1
1
  @import "../../../node_modules/slick-carousel/slick/slick.css";
2
2
  @import "../../../node_modules/slick-carousel/slick/slick-theme.css";
3
+
4
+ .carouselBlock{
5
+ overflow-x: hidden;
6
+
7
+ .custom-arrow{
8
+ background: transparent;
9
+ outline: none;
10
+ border: 1px solid var(--color-block-text);
11
+ border-radius: 100%;
12
+ height: 40px;
13
+ width: 40px;
14
+ color: var(--color-block-text);
15
+ transition: all 0.3s ease-in-out;
16
+
17
+ &:hover{
18
+ background: var(--color-block-text);
19
+ color: var(--color-block-bg);
20
+ }
21
+
22
+ }
23
+
24
+ .slick-list{
25
+ overflow: visible;
26
+ visibility: visible;
27
+ }
28
+
29
+ .prev{
30
+ margin-right: 16px;
31
+ }
32
+
33
+ @media screen and (min-width: 992px) {
34
+
35
+ .custom-arrow{
36
+ height: 48px;
37
+ width: 48px;
38
+ }
39
+
40
+ .prev{
41
+ margin-right: 24px;
42
+ }
43
+ }
44
+
45
+ }